20 #include <TOF/DTOFRawHit.h>
26 #include <JANA/JApplication.h>
56 evt_tree =
new TTree(
"event",
"Event Size info");
58 evt_tree->Branch(
"A", &evt);
59 pthread_mutex_init(&evt_mutex, NULL);
61 fdc_cathode_tree =
new TTree(
"fdc_cathode",
"FDC Cathode hit info");
63 fdc_cathode_tree->Branch(
"A", &fdc_cathode);
64 pthread_mutex_init(&fdc_mutex, NULL);
66 fdc_anode_tree =
new TTree(
"fdc_anode",
"FDC Anode hit info");
68 fdc_anode_tree->Branch(
"A", &fdc_anode);
70 cdc_tree =
new TTree(
"cdc",
"CDC hit info");
72 cdc_tree->Branch(
"A", &cdc);
73 pthread_mutex_init(&cdc_mutex, NULL);
75 fcal_tree =
new TTree(
"fcal",
"FCAL hit info");
77 fcal_tree->Branch(
"A", &fcal);
78 pthread_mutex_init(&fcal_mutex, NULL);
80 tof_tree =
new TTree(
"tof",
"TOF hit info");
82 tof_tree->Branch(
"A", &tof);
83 pthread_mutex_init(&tof_mutex, NULL);
99 toffset_tagger = 25.0;
100 twindow_tagger = 125.0;
102 gPARMS->SetDefaultParameter(
"EVENTSIZE:toffset_bcal", toffset_bcal,
"Time offset used to determine BCAL event size");
103 gPARMS->SetDefaultParameter(
"EVENTSIZE:twindow_bcal", twindow_bcal,
"Time window used to determine BCAL event size");
104 gPARMS->SetDefaultParameter(
"EVENTSIZE:toffset_fcal", toffset_fcal,
"Time offset used to determine FCAL event size");
105 gPARMS->SetDefaultParameter(
"EVENTSIZE:twindow_fcal", twindow_fcal,
"Time window used to determine FCAL event size");
106 gPARMS->SetDefaultParameter(
"EVENTSIZE:toffset_ccal", toffset_ccal,
"Time offset used to determine CCAL event size");
107 gPARMS->SetDefaultParameter(
"EVENTSIZE:twindow_ccal", twindow_ccal,
"Time window used to determine CCAL event size");
108 gPARMS->SetDefaultParameter(
"EVENTSIZE:toffset_cdc", toffset_cdc,
"Time offset used to determine CDC event size");
109 gPARMS->SetDefaultParameter(
"EVENTSIZE:twindow_cdc", twindow_cdc,
"Time window used to determine CDC event size");
110 gPARMS->SetDefaultParameter(
"EVENTSIZE:toffset_fdc", toffset_fdc,
"Time offset used to determine FDC event size");
111 gPARMS->SetDefaultParameter(
"EVENTSIZE:twindow_fdc", twindow_fdc,
"Time window used to determine FDC event size");
112 gPARMS->SetDefaultParameter(
"EVENTSIZE:toffset_tof", toffset_tof,
"Time offset used to determine TOF event size");
113 gPARMS->SetDefaultParameter(
"EVENTSIZE:twindow_tof", twindow_tof,
"Time window used to determine TOF event size");
114 gPARMS->SetDefaultParameter(
"EVENTSIZE:toffset_sc", toffset_sc,
"Time offset used to determine Start Counter event size");
115 gPARMS->SetDefaultParameter(
"EVENTSIZE:twindow_sc", twindow_sc,
"Time window used to determine Start Counter event size");
116 gPARMS->SetDefaultParameter(
"EVENTSIZE:toffset_tagger", toffset_tagger,
"Time offset used to determine TAGGER event size");
117 gPARMS->SetDefaultParameter(
"EVENTSIZE:twindow_tagger", twindow_tagger,
"Time window used to determine TAGGER event size");
120 tmin_bcal = -toffset_bcal;
121 tmax_bcal = tmin_bcal + twindow_bcal;
122 tmin_fcal = -toffset_fcal;
123 tmax_fcal = tmin_fcal + twindow_fcal;
124 tmin_ccal = -toffset_ccal;
125 tmax_ccal = tmin_ccal + twindow_ccal;
126 tmin_cdc = -toffset_cdc;
127 tmax_cdc = tmin_cdc + twindow_cdc;
128 tmin_fdc = -toffset_fdc;
129 tmax_fdc = tmin_fdc + twindow_fdc;
130 tmin_tof = -toffset_tof;
131 tmax_tof = tmin_tof + twindow_tof;
132 tmin_sc = -toffset_sc;
133 tmax_sc = tmin_sc + twindow_sc;
134 tmin_tagger = -toffset_tagger;
135 tmax_tagger = tmin_tagger + twindow_tagger;
146 vector<const DBCALGeometry *> BCALGeomVec;
147 loop->Get(BCALGeomVec);
148 if(BCALGeomVec.size() == 0)
149 throw JException(
"Could not load DBCALGeometry object!");
165 loop->GetSingle(trig);
171 vector<const DBeamPhoton*> beamphotons;
172 vector<const DBCALHit*> bcalhits;
173 vector<const DFCALHit*> fcalhits;
174 vector<const DCCALHit*> ccalhits;
175 vector<const DCDCHit*> cdchits;
176 vector<const DFDCHit*> fdchits;
177 vector<const DTOFRawHit*> tofhits;
178 vector<const DSCHit*> schits;
179 vector<const DTAGMHit*> tagmhits;
180 vector<const DTAGHHit*> taghhits;
182 loop->Get(beamphotons);
194 unsigned int Nbcalhits_inner = 0;
195 unsigned int Nbcalhits_outer = 0;
196 for(
unsigned int i=0; i<bcalhits.size(); i++){
199 if(bcalhits[i]->t < tmin_bcal)
continue;
200 if(bcalhits[i]->t > tmax_bcal)
continue;
202 if(bcalhits[i]->
layer < dBCALMid){
210 japp->RootWriteLock();
213 unsigned int Nfcalhits = 0;
214 for(
unsigned int i=0; i<fcalhits.size(); i++){
216 if(fcalhits[i]->t < tmin_fcal)
continue;
217 if(fcalhits[i]->t > tmax_fcal)
continue;
221 fcal->row = fcalhits[i]->row;
222 fcal->column = fcalhits[i]->column;
229 unsigned int Nccalhits = 0;
230 for(
unsigned int i=0; i<ccalhits.size(); i++){
232 if(ccalhits[i]->t < tmin_ccal)
continue;
233 if(ccalhits[i]->t > tmax_ccal)
continue;
239 unsigned int Ncdchits = 0;
240 for(
unsigned int i=0; i<cdchits.size(); i++){
242 if(cdchits[i]->t < tmin_cdc)
continue;
243 if(cdchits[i]->t > tmax_cdc)
continue;
247 cdc->ring = cdchits[i]->ring;
248 cdc->straw = cdchits[i]->straw;
255 unsigned int Nfdchits_anode = 0;
256 unsigned int Nfdchits_cathode = 0;
257 for(
unsigned int i=0; i<fdchits.size(); i++){
260 if(fdchits[i]->t < tmin_fdc)
continue;
261 if(fdchits[i]->t > tmax_fdc)
continue;
263 if(fdchits[i]->type == 1){
266 fdc_cathode->L1a_fired = trig->
L1a_fired;
267 fdc_cathode->L1b_fired = trig->
L1b_fired;
268 fdc_cathode->gPlane = fdchits[i]->gPlane;
269 fdc_cathode->element = fdchits[i]->element;
270 fdc_cathode_tree->Fill();
274 fdc_anode->gPlane = fdchits[i]->gPlane;
275 fdc_anode->element = fdchits[i]->element;
276 fdc_anode_tree->Fill();
282 unsigned int Ntofhits = 0;
283 for(
unsigned int i=0; i<tofhits.size(); i++){
285 if(tofhits[i]->t < tmin_tof)
continue;
286 if(tofhits[i]->t > tmax_tof)
continue;
288 tof->plane = tofhits[i]->plane;
289 tof->bar = tofhits[i]->bar;
290 tof->lr = tofhits[i]->lr;
297 unsigned int Nschits = 0;
298 for(
unsigned int i=0; i<schits.size(); i++){
300 if(schits[i]->t < tmin_sc)
continue;
301 if(schits[i]->t > tmax_sc)
continue;
307 unsigned int Ntagmhits = 0;
308 for(
unsigned int i=0; i<tagmhits.size(); i++){
310 if(tagmhits[i]->t < tmin_tagger)
continue;
311 if(tagmhits[i]->t > tmax_tagger)
continue;
315 unsigned int Ntaghhits = 0;
316 for(
unsigned int i=0; i<taghhits.size(); i++){
318 if(taghhits[i]->t < tmin_tagger)
continue;
319 if(taghhits[i]->t > tmax_tagger)
continue;
324 evt->event = eventnumber;
325 evt->Egamma = beamphotons.size()>0 ? beamphotons[0]->momentum().Mag():0.0;
328 evt->Ebcal_trig = trig->
Ebcal;
329 evt->Efcal_trig = trig->
Efcal;
332 evt->Nbcalhits_inner = Nbcalhits_inner;
333 evt->Nbcalhits_outer = Nbcalhits_outer;
334 evt->Nfcalhits = Nfcalhits;
335 evt->Nccalhits = Nccalhits;
336 evt->Ncdchits = Ncdchits;
337 evt->Nfdchits_anode = Nfdchits_anode;
338 evt->Nfdchits_cathode = Nfdchits_cathode;
339 evt->Ntofhits = Ntofhits;
340 evt->Nschits = Nschits;
341 evt->Ntagmhits = Ntagmhits;
342 evt->Ntaghhits = Ntaghhits;
344 evt->Ndigitized_values = 0;
345 evt->Ndigitized_values += 3*evt->Nbcalhits_inner;
346 evt->Ndigitized_values += 2*evt->Nbcalhits_outer;
347 evt->Ndigitized_values += 2*evt->Nfcalhits;
348 evt->Ndigitized_values += 2*evt->Nccalhits;
349 evt->Ndigitized_values += 2*evt->Ncdchits;
350 evt->Ndigitized_values += 1*evt->Nfdchits_anode;
351 evt->Ndigitized_values += 2*evt->Nfdchits_cathode;
352 evt->Ndigitized_values += 3*evt->Ntofhits;
353 evt->Ndigitized_values += 3*evt->Nschits;
354 evt->Ndigitized_values += 3*evt->Ntagmhits;
355 evt->Ndigitized_values += 3*evt->Ntaghhits;
jerror_t brun(jana::JEventLoop *eventLoop, int32_t runnumber)
Called everytime a new run number is detected.
jerror_t erun(void)
Called everytime run number changes, provided brun has been called.
~JEventProcessor_event_size()
JEventProcessor_event_size()
jerror_t evnt(jana::JEventLoop *eventLoop, uint64_t eventnumber)
Called every event.
jerror_t fini(void)
Called after last event of last event source has been processed.
jerror_t init(void)
Called once at program start.
float GetBCAL_middle_cell() const