37 TDirectory *
dir =
new TDirectoryFile(
"CCAL",
"CCAL");
40 tree1 =
new TTree(
"digihit",
"digihit" );
42 tree1->Branch(
"nhit", &nhit,
"nhit/I");
43 tree1->Branch(
"column", &
column,
"column[nhit]/I");
44 tree1->Branch(
"row", &row,
"row[nhit]/I");
45 tree1->Branch(
"peak", &peak,
"peak[nhit]/I");
46 tree1->Branch(
"integral", &integral,
"integral[nhit]/I");
47 tree1->Branch(
"pedestal", &
pedestal,
"pedestal[nhit]/I");
48 tree1->Branch(
"time", &time,
"time[nhit]/I");
49 tree1->Branch(
"qf", &qf,
"qf[nhit]/I");
51 tree1->Branch(
"waveform", &waveform,
"waveform[nhit][100]/I");
53 tree1->Branch(
"nsamples_integral", &nsamples_integral,
"nsamples_integral/I");
54 tree1->Branch(
"nsamples_pedestal", &nsamples_pedestal,
"nsamples_pedestal/I");
58 for(Int_t ii = 0; ii < 12; ii++){
59 for(Int_t jj = 0; jj < 12; jj++){
63 int index = jj + ii*12;
65 sprintf(title,
"Waveform_%d",index);
66 ccal_wave[
index] =
new TProfile(title,title,100,-0.5,99.5,-10.,4096);
69 ccal_peak[
index] =
new TH1F(title, title, 4096, -0.5, 4095.5);
72 ccal_int[
index] =
new TH1F(title, title, 500, 0., 20000.5);
100 vector<const DCCALDigiHit*> ccal_digihits;
102 vector<const DCCALHit*> ccal_hits;
104 loop->Get(ccal_digihits);
105 loop->Get(ccal_hits);
107 cout <<
" Event number = " << eventnumber << endl;
108 cout <<
" Number of digi hits = " << ccal_digihits.size() << endl;
109 cout <<
" Number of hits = " << ccal_hits.size() << endl;
114 memset(row,0,
sizeof(row));
115 memset(peak,0,
sizeof(peak));
116 memset(integral,0,
sizeof(integral));
118 memset(time,0,
sizeof(time));
119 memset(qf,0,
sizeof(qf));
120 memset(waveform,0,
sizeof(waveform));
121 nsamples_integral = 0;
122 nsamples_pedestal = 0;
125 japp->RootWriteLock();
128 for(
unsigned int ii = 0; ii < ccal_digihits.size(); ii++){
136 row[nhit] = ccal_hit->
row;
143 time[nhit] = (ccal_hit->
pulse_time & 0x7FC0) >> 6;
144 qf[nhit] = ccal_hit->
QF;
156 ccal_hit->GetSingle(pulsedata);
160 pulsedata->GetSingle(windorawdata);
164 const vector<uint16_t> &samplesvector = windorawdata->
samples;
166 unsigned int nsamples = samplesvector.size();
168 for(uint16_t samp = 0; samp < nsamples; samp++){
169 waveform[nhit][samp] = samplesvector[samp];
171 ccal_wave[
index]->Fill(
float(samp),
float(samplesvector[samp]));
jerror_t evnt(JEventLoop *eventLoop, uint64_t eventnumber)
Called every event.
jerror_t brun(JEventLoop *eventLoop, int32_t runnumber)
Called everytime a new run number is detected.
uint32_t pulse_integral
identified pulse integral as returned by FPGA algorithm
sprintf(text,"Post KinFit Cut")
jerror_t init(void)
Called once at program start.
vector< uint16_t > samples
static char index(char c)
uint32_t pedestal
pedestal info used by FPGA (if any)
uint32_t nsamples_integral
number of samples used in integral
uint32_t nsamples_pedestal
number of samples used in pedestal
uint32_t QF
Quality Factor from FPGA algorithms.
static TH1I * pedestal[nChan]
jerror_t erun(void)
Called everytime run number changes, provided brun has been called.
uint32_t pulse_peak
maximum sample in pulse
uint32_t pulse_time
identified pulse time as returned by FPGA algorithm
jerror_t fini(void)
Called after last event of last event source has been processed.