13 #include <JANA/JApplication.h>
14 #include <JANA/JFactory.h>
15 #include <TDirectory.h>
115 const int bin_time = 100;
116 const int bin_fcal_1d = 500;
117 const int bin_fcal = 200;
118 const int bin_bcal = 200;
122 TDirectory *
mainDir = gDirectory;
123 TDirectory *L1Dir = gDirectory->mkdir(
"L1");
127 htrig_bit =
new TH1I(
"trig_bit",
"trig_bit", 32, 0.5, 32.5);
128 htrig_bit_fp =
new TH1I(
"trig_bit_fp",
"trig_bit_fp", 32, 0.5, 32.5);
130 htrig_type =
new TH1I(
"trig_type",
"trig_type", 257, -0.5, 256.5);
132 for(Int_t ii = 0; ii < 8; ii++){
139 sprintf(title,
"rate_gtp_%d",ii);
140 hrate_gtp[ii] =
new TH1F(title,title,1000,0.,100.);
148 sprintf(title2,
"rate_time_%d",ii);
149 hrate_bit[ii] =
new TProfile(title2,title2, 502 ,-0.5,501.5,
"s");
155 hfcal_time1 =
new TH1I(
"fcal_time1",
"fcal_time1", bin_time, -0.5, 99.5);
156 hfcal_time6 =
new TH1I(
"fcal_time6",
"fcal_time6", bin_time, -0.5, 99.5);
157 hfcal_time7 =
new TH1I(
"fcal_time7",
"fcal_time7", bin_time, -0.5, 99.5);
159 hbcal_time1 =
new TH1I(
"bcal_time1",
"bcal_time1", bin_time, -0.5, 99.5);
160 hbcal_time3 =
new TH1I(
"bcal_time3",
"bcal_time3", bin_time, -0.5, 99.5);
161 hbcal_time6 =
new TH1I(
"bcal_time6",
"bcal_time6", bin_time, -0.5, 99.5);
163 htagh_time2 =
new TH1I(
"tagh_time2",
"tagh_time2", bin_time, -0.5, 99.5);
165 htagh_occup2 =
new TH1I(
"tagh_occup2",
"tagh_occup2", 250, -0.5, 249.5);
167 hfcal_en1 =
new TH1I(
"fcal_en1",
"fcal_en1", bin_fcal_1d, 0., 20000.);
168 hfcal_en2 =
new TH1I(
"fcal_en2",
"fcal_en2", bin_fcal_1d, 0., 20000.);
170 hfcal_en6 =
new TH1I(
"fcal_en6",
"fcal_en6", bin_fcal_1d, 0., 20000.);
171 hfcal_en7 =
new TH1I(
"fcal_en7",
"fcal_en7", bin_fcal_1d, 0., 20000.);
173 hbcal_en1 =
new TH1I(
"bcal_en1",
"bcal_en1", bin_bcal, 0., 50000.);
174 hbcal_en3 =
new TH1I(
"bcal_en3",
"bcal_en3", bin_bcal, 0., 50000.);
175 hbcal_en6 =
new TH1I(
"bcal_en6",
"bcal_en6", bin_bcal, 0., 50000.);
177 hfcal_bcal_en1 =
new TH2I(
"fcal_bcal_en1",
"fcal_bcal_en1", bin_fcal, 0., 10000, bin_bcal, 0., 50000);
178 hfcal_bcal_en6 =
new TH2I(
"fcal_bcal_en6",
"fcal_bcal_en6", bin_fcal, 0., 10000, bin_bcal, 0., 50000);
180 hfcal_bcal_en1_3 =
new TH2I(
"fcal_bcal_en_type1_3",
"fcal_bcal_en1_3", 100, 0., 10000, 200, 0., 50000);
182 hfcal_bcal_type1 =
new TH2I(
"fcal_bcal_type1",
"fcal_bcal_type1", bin_fcal, 0., 10000, bin_bcal, 0., 50000);
183 hfcal_bcal_type3 =
new TH2I(
"fcal_bcal_type3",
"fcal_bcal_type3", bin_fcal, 0., 10000, bin_bcal, 0., 50000);
184 hfcal_bcal_type5 =
new TH2I(
"fcal_bcal_type5",
"fcal_bcal_type5", bin_fcal, 0., 10000, bin_bcal, 0., 50000);
185 hfcal_bcal_type7 =
new TH2I(
"fcal_bcal_type7",
"fcal_bcal_type7", bin_fcal, 0., 10000, bin_bcal, 0., 50000);
187 hst_hit7 =
new TH1I(
"st_hit7",
"st_hit7", 100, -0.5, 99.5);
188 hst_hit2 =
new TH1I(
"st_hit2",
"st_hit2", 100, -0.5, 99.5);
209 fcal_row_mask_min = 26;
210 fcal_row_mask_max = 32;
211 fcal_col_mask_min = 26;
212 fcal_col_mask_max = 32;
215 if( runnumber < 11127 ){
216 fcal_row_mask_min = 24;
217 fcal_row_mask_max = 34;
218 fcal_col_mask_min = 24;
219 fcal_col_mask_max = 34;
222 run_number = runnumber;
237 unsigned int trig_bit[33], trig_bit_fp[33];
239 uint32_t fcal_adc_time[33], bcal_adc_time[33];
242 memset(trig_bit,0,
sizeof(trig_bit));
243 memset(trig_bit_fp,0,
sizeof(trig_bit_fp));
245 memset(fcal_adc_time,0,
sizeof(fcal_adc_time));
246 memset(bcal_adc_time,0,
sizeof(bcal_adc_time));
249 vector<uint16_t> fcal_adc_time1;
250 vector<uint16_t> fcal_adc_time6;
251 vector<uint16_t> fcal_adc_time7;
253 vector<uint16_t> bcal_adc_time1;
254 vector<uint16_t> bcal_adc_time3;
255 vector<uint16_t> bcal_adc_time6;
257 vector<uint16_t> tagh_adc_time2;
258 vector<int> tagh_counter2;
261 vector<const DL1Trigger*> l1trig;
263 vector<const DBCALDigiHit*> bcal_hits;
264 vector<const DFCALDigiHit*> fcal_hits;
266 vector<const DSCHit*> st_hits;
268 vector<const DTAGHDigiHit*> tagh_hits;
272 loop->Get(bcal_hits);
273 loop->Get(fcal_hits);
277 loop->Get(tagh_hits);
281 if( l1trig.size() > 0 ){
282 for(
unsigned int bit = 0; bit < 32; bit++){
283 trig_bit[bit + 1] = (l1trig[0]->trig_mask & (1 << bit)) ? 1 : 0;
286 for(
unsigned int bit = 0; bit < 32; bit++){
287 trig_bit_fp[bit + 1] = (l1trig[0]->fp_trig_mask & (1 << bit)) ? 1 : 0;
299 cout <<
" Number of FCAL hits = " << fcal_hits.size() << endl;
303 for(
unsigned int jj = 0; jj < fcal_hits.size(); jj++){
307 uint32_t adc_time = 0;
308 Int_t pulse_int = -10;
309 Int_t pulse_peak = -10;
312 adc_time = (fcal_hit->
pulse_time & 0x7FC0) >> 6;
319 cout <<
" Pulse peak = " << pulse_peak << endl;
320 cout <<
" Pulse integral = " << pulse_int << endl;
321 cout <<
" Pulse time = " << adc_time << endl;
324 int fcal_cell_used = 1;
326 int row = fcal_hit->
row;
327 int col = fcal_hit->
column;
330 if( (row >= fcal_row_mask_min && row <= fcal_row_mask_max)
331 && (col >= fcal_col_mask_min && col <= fcal_col_mask_max)) fcal_cell_used = 0;
337 if(fcal_cell_used == 0)
continue;
340 if(pulse_peak > fcal_cell_thr){
342 if( (adc_time > 20) && (adc_time < 70)){
343 if(pulse_int < 0) pulse_int = 0;
344 fcal_tot_en += pulse_int;
347 if(trig_bit[1] == 1) fcal_adc_time1.push_back(adc_time);
348 if(trig_bit[6] == 1) fcal_adc_time6.push_back(adc_time);
349 if(trig_bit[7] == 1) fcal_adc_time7.push_back(adc_time);
363 cout <<
" Number of BCAL hits = " << bcal_hits.size() << endl;
367 for(
unsigned int jj = 0; jj < bcal_hits.size(); jj++){
371 uint32_t adc_time = 0;
372 Int_t pulse_int = -10;
373 Int_t pulse_peak = -10;
375 adc_time = (bcal_hit->
pulse_time & 0x7FC0) >> 6;
383 cout <<
" Pulse peak = " << pulse_peak << endl;
384 cout <<
" Pulse integral = " << pulse_int << endl;
385 cout <<
" Pulse time = " << adc_time << endl;
388 if(pulse_peak > bcal_cell_thr){
390 if(trig_bit[1] == 1) bcal_adc_time1.push_back(adc_time);
391 if(trig_bit[3] == 1) bcal_adc_time3.push_back(adc_time);
392 if(trig_bit[6] == 1) bcal_adc_time6.push_back(adc_time);
394 bcal_tot_en += pulse_int;
402 for(
unsigned int kk = 0; kk < tagh_hits.size(); kk++){
413 uint32_t adc_time = (tagh_hit->
pulse_time & 0x7FC0) >> 6;
415 if(trig_bit[2] == 1){
418 tagh_adc_time2.push_back(adc_time);
420 if( (adc_time > 5) && (adc_time < 15))
421 tagh_counter2.push_back(counter_id);
429 japp->RootFillLock(
this);
432 if( l1trig.size() > 0 ){
434 for(
unsigned int bit = 0; bit < 32; bit++){
435 if(trig_bit[bit + 1] == 1)
htrig_bit->Fill(Float_t(bit+1));
438 for(
unsigned int bit = 0; bit < 32; bit++){
439 if(trig_bit_fp[bit + 1] == 1)
htrig_bit_fp->Fill(Float_t(bit+1));
442 htrig_type->Fill(Float_t(l1trig[0]->trig_mask));
446 if( l1trig[0]->gtp_rate.size() > 0 ){
448 for(
unsigned int ii = 0; ii < 8; ii++){
449 hrate_gtp[ii]->Fill(Float_t(l1trig[0]->gtp_rate[ii]/1000.));
450 if( (l1trig[0]->nsync) > 0 && (l1trig[0]->nsync) < 500){
451 hrate_bit[ii]->Fill(Float_t(l1trig[0]->nsync),Float_t(l1trig[0]->gtp_rate[ii]/1000.));
464 if(trig_bit[1] == 1){
470 if(trig_bit[6] == 1){
476 if( (trig_bit[1] == 1) && (trig_bit[3] == 1) ){
480 if(trig_bit[7] == 1){
482 hst_hit7->Fill(Float_t(st_hits.size()));
485 if(trig_bit[3] == 1){
490 if(trig_bit[2] == 1){
494 if( l1trig.size() > 0 ){
495 if(l1trig[0]->trig_mask == 1)
hfcal_bcal_type1->Fill(Float_t(fcal_tot_en), Float_t(bcal_tot_en));
496 if(l1trig[0]->trig_mask == 3)
hfcal_bcal_type3->Fill(Float_t(fcal_tot_en), Float_t(bcal_tot_en));
497 if(l1trig[0]->trig_mask == 5)
hfcal_bcal_type5->Fill(Float_t(fcal_tot_en), Float_t(bcal_tot_en));
498 if(l1trig[0]->trig_mask == 7)
hfcal_bcal_type7->Fill(Float_t(fcal_tot_en), Float_t(bcal_tot_en));
504 for(
unsigned int ii = 0; ii < fcal_adc_time1.size(); ii++)
hfcal_time1->Fill(Float_t(fcal_adc_time1[ii]));
506 for(
unsigned int ii = 0; ii < fcal_adc_time6.size(); ii++)
hfcal_time6->Fill(Float_t(fcal_adc_time6[ii]));
508 for(
unsigned int ii = 0; ii < fcal_adc_time7.size(); ii++)
hfcal_time7->Fill(Float_t(fcal_adc_time7[ii]));
511 for(
unsigned int ii = 0; ii < bcal_adc_time1.size(); ii++)
hbcal_time1->Fill(Float_t(bcal_adc_time1[ii]));
513 for(
unsigned int ii = 0; ii < bcal_adc_time3.size(); ii++)
hbcal_time3->Fill(Float_t(bcal_adc_time3[ii]));
515 for(
unsigned int ii = 0; ii < bcal_adc_time6.size(); ii++)
hbcal_time6->Fill(Float_t(bcal_adc_time6[ii]));
521 if(trig_bit[2] == 1){
522 hst_hit2->Fill(Float_t(st_hits.size()));
524 for(
unsigned int ii = 0; ii < tagh_adc_time2.size(); ii++)
htagh_time2->Fill(Float_t(tagh_adc_time2[ii]));
525 for(
unsigned int ii = 0; ii < tagh_counter2.size(); ii++)
htagh_occup2->Fill(Float_t(tagh_counter2[ii]));
533 japp->RootFillUnLock(
this);
static TH1I * hfcal_time1
~JEventProcessor_L1_online()
int counter_id
counter id 1-274
static TH1I * hbcal_time3
static TH1I * hbcal_time6
uint32_t pulse_peak
maximum sample in pulse
uint32_t nsamples_integral
number of samples used in integral
sprintf(text,"Post KinFit Cut")
uint32_t nsamples_integral
number of samples used in integral
static TH1I * hfcal_time7
static TH2I * hfcal_bcal_type7
uint32_t pulse_time
identified pulse time as returned by FPGA algorithm
uint32_t pulse_peak
identified pulse height as returned by FPGA algorithm
JEventProcessor_L1_online()
uint32_t pulse_integral
identified pulse integral as returned by FPGA algorithm
uint32_t pulse_time
identified pulse time as returned by FPGA algorithm
static TH1I * htagh_time2
jerror_t evnt(jana::JEventLoop *eventLoop, uint64_t eventnumber)
Called every event.
static TH1I * hbcal_time1
static TProfile * hrate_bit[8]
uint32_t pulse_integral
identified pulse integral as returned by FPGA algorithm
static TH1I * hfcal_time6
static TH1I * htagh_occup2
static TH2I * hfcal_bcal_en1
static TH2I * hfcal_bcal_en1_3
jerror_t fini(void)
Called after last event of last event source has been processed.
static TH1I * htrig_bit_fp
jerror_t erun(void)
Called everytime run number changes, provided brun has been called.
static TH2I * hfcal_bcal_en6
static TH2I * hfcal_bcal_type3
uint32_t pulse_time
identified pulse time as returned by FPGA algorithm
static TH2I * hfcal_bcal_type5
jerror_t init(void)
Called once at program start.
static TH2I * hfcal_bcal_type1
static TH1F * hrate_gtp[8]
jerror_t brun(jana::JEventLoop *eventLoop, int32_t runnumber)
Called everytime a new run number is detected.