18 #include <JANA/JApplication.h>
30 #include <TDirectory.h>
36 InitJANAPlugin(locApplication);
61 gPARMS->SetDefaultParameter(
"TRIG_ONLINE:TIMING", timing,
"Fill trigger timing histograms: default = false");
64 TDirectory *
main = gDirectory;
65 gDirectory->mkdir(
"trig")->cd();
69 h1trig_trgbits =
new TH1I(
"h1trig_trgbits",
"Trig Trgbits",150,0,150);
73 h2trig_fcalVSbcal=
new TH2I(
"h2trig_fcalVSbcal",
"E fcal vs E bcal (GeV); Bcal Energy (GeV); Fcal Energy (GeV)",nbins,0,15,nbins,0,15);
77 h2trig_tfcalVStbcal =
new TH2I(
"h2trig_tfcalVStbcal",
"T fcal vs T bcal (ns); Bcal time (ns); Fcal time (ns)",nbins,-200,200,nbins,-200,200);
78 h2trig_tfcalVSfcal =
new TH2I(
"h2trig_tfcalVSfcal",
"T fcal vs E fcal; Fcal energy (GeV); Fcal time (ns)",nbins,0,2,nbins,-200,200);
79 h2trig_tbcalVSbcal =
new TH2I(
"h2trig_tbcalVSbcal",
"T bcal vs E bcal; Bcal energ (GeV); Bcal time (ns)",nbins,0,2,nbins,-200,200);
83 dTrigBits.push_back(1);
84 dTrigBits.push_back(3);
85 dTrigBits.push_back(4);
86 dTrigBits.push_back(5);
87 dTrigBits.push_back(7);
88 dTrigBits.push_back(32);
89 dTrigBits.push_back(33);
90 dTrigBits.push_back(37);
91 dTrigBits.push_back(64);
92 dTrigBits.push_back(65);
93 dTrigBits.push_back(97);
94 dTrigBits.push_back(101);
96 for(
size_t loc_i = 0; loc_i < dTrigBits.size(); ++loc_i) {
98 h2trigbits_fcalVSbcal[dTrigBits[loc_i]] =
new TH2I(Form(
"h2trigbit%d_fcalVSbcal", dTrigBits[loc_i]), Form(
"Trig %d: E fcal vs E bcal (GeV); Bcal Energy (GeV); Fcal Energy (GeV)",dTrigBits[loc_i]),nbins,0,2,nbins,0,4);
102 h2trigbits_tfcalVStbcal[dTrigBits[loc_i]] =
new TH2I(Form(
"h2trigbit%d_tfcalVStbcal", dTrigBits[loc_i]), Form(
"Trig %d: T fcal vs T bcal (ns); Bcal time (ns); Fcal time (ns)", dTrigBits[loc_i]),nbins,-200,200,nbins,-200,200);
103 h2trigbits_tfcalVSfcal[dTrigBits[loc_i]] =
new TH2I(Form(
"h2trigbit%d_tfcalVSfcal", dTrigBits[loc_i]), Form(
"Trig %d: T fcal vs E fcal; Fcal energy (GeV); Fcal time (ns)", dTrigBits[loc_i]),nbins,0,2,nbins,-200,200);
104 h2trigbits_tbcalVSbcal[dTrigBits[loc_i]] =
new TH2I(Form(
"h2trigbit%d_tbcalVSbcal", dTrigBits[loc_i]), Form(
"Trig %d: T bcal vs E bcal; Bcal energy (GeV); Bcal time (ns)", dTrigBits[loc_i]),nbins,0,2,nbins,-200,200);
134 vector<const DBCALPoint*> bcalpoints;
135 vector<const DFCALHit*> fcalhits;
136 locEventLoop->Get(bcalpoints);
137 locEventLoop->Get(fcalhits);
146 uint32_t trig_mask, fp_trig_mask;
148 locEventLoop->GetSingle(trig_words);
159 int trig_bits = fp_trig_mask > 0? 128 + fp_trig_mask/256: trig_mask;
169 float fcal_energy = 0;
171 double fcal_rings_masked = 2;
172 if(locEventLoop->GetJEvent().GetRunNumber() < 11127)
173 fcal_rings_masked = 4;
174 float rmin = fcal_rings_masked*4*
sqrt(2);
175 for (
unsigned int jj=0; jj<fcalhits.size(); jj++) {
176 int rowhit = fcalhits[jj]->row;
177 int columnhit = fcalhits[jj]->column;
180 double r =
sqrt(pos.X()*pos.X() + pos.Y()*pos.Y());
181 if (r <= rmin)
continue;
185 if (fcalhits[jj]->E*7.5/fcalhits[jj]->intOverPeak > 1.0*(65*0.27*7.5/1000)) {
186 fcal_energy += fcalhits[jj]->E*7.5/fcalhits[jj]->intOverPeak;
187 fcal_time += fcalhits[jj]->t*fcalhits[jj]->E*7.5/fcalhits[jj]->intOverPeak;
190 fcal_time = fcal_energy > 0 ? fcal_time/fcal_energy : -200;
194 float bcal_energy = 0;
196 for (
unsigned int jj=0; jj<bcalpoints.size(); jj++) {
197 if (bcalpoints[jj]->E() > (20*0.045*15/2)/1000) {
198 bcal_energy += bcalpoints[jj]->E();
199 bcal_time += bcalpoints[jj]->t()*bcalpoints[jj]->E();
202 bcal_time = bcal_energy > 0 ? bcal_time/bcal_energy: -200;
206 japp->RootFillLock(
this);
216 for(
size_t loc_i = 0; loc_i < dTrigBits.size(); ++loc_i) {
217 if(trig_bits != (
int)dTrigBits[loc_i])
220 h2trigbits_fcalVSbcal[dTrigBits[loc_i]]->Fill(bcal_energy,fcal_energy);
222 h2trigbits_tfcalVStbcal[dTrigBits[loc_i]]->Fill(bcal_time,fcal_time);
223 h2trigbits_tfcalVSfcal[dTrigBits[loc_i]]->Fill(fcal_energy,fcal_time);
224 h2trigbits_tbcalVSbcal[dTrigBits[loc_i]]->Fill(bcal_energy,bcal_time);
228 japp->RootFillUnLock(
this);
jerror_t brun(jana::JEventLoop *eventLoop, int32_t runnumber)
Called everytime a new run number is detected.
jerror_t evnt(jana::JEventLoop *eventLoop, uint64_t eventnumber)
Called every event.
jerror_t init(void)
Called once at program start.
DVector2 positionOnFace(int row, int column) const
~JEventProcessor_TRIG_online()
jerror_t fini(void)
Called after last event of last event source has been processed.
TH2F * h2trig_tbcalVSbcal
JEventProcessor_TRIG_online()
TH2F * h2trig_tfcalVStbcal
TH2F * h2trig_tfcalVSfcal
jerror_t erun(void)
Called everytime run number changes, provided brun has been called.
int main(int argc, char *argv[])