9 #include <trg/grl/modules/trggrl/TRGGRLProjectsModule.h>
10 #include <trg/ecl/dataobjects/TRGECLCluster.h>
11 #include <trg/ecl/dataobjects/TRGECLTrg.h>
12 #include <trg/cdc/dataobjects/CDCTriggerTrack.h>
13 #include <trg/grl/dataobjects/TRGGRLMATCH.h>
14 #include <trg/grl/dataobjects/TRGGRLMATCHKLM.h>
15 #include <trg/klm/dataobjects/KLMTrgSummary.h>
16 #include <trg/grl/dataobjects/TRGGRLPHOTON.h>
17 #include <framework/dataobjects/BinnedEventT0.h>
18 #include <trg/ecl/TrgEclMapping.h>
19 #include <framework/datastore/StoreArray.h>
20 #include <ecl/geometry/ECLGeometryPar.h>
21 #include <analysis/utility/PCmsLabTransform.h>
22 #include <framework/logging/Logger.h>
23 #include <framework/database/DBObjPtr.h>
24 #include <mdst/dbobjects/TRGGDLDBInputBits.h>
38 std::vector<int> TCThetaID;
39 std::vector<float> TCPhiLab;
40 std::vector<float> TCcotThetaLab;
41 std::vector<float> TCPhiCOM;
42 std::vector<float> TCThetaCOM;
43 std::vector<float> TC1GeV;
73 TRGGRLProjectsModule::TRGGRLProjectsModule() :
Module()
84 "The filename of CDC trigger config file",
88 "TRGGRL simulation switch",
92 "TRGGRL fast simulation mode",
96 "TRGGRL firmware simulation mode",
99 "Name of the StoreArray holding the tracks made by the 2D finder to be used as input.",
100 string(
"TRGCDC2DFinderTracks"));
102 "Name of the StoreArray holding the tracks made by the 3D fitter to be used as input.",
103 string(
"TRGCDC3DFitterTracks"));
105 "Name of the StoreArray holding the tracks made by the neural network (NN).",
106 string(
"TRGCDCNeuroTracks"));
108 "Name of the StoreArray holding the macthed tracks and clusters made by the 2D fitter.",
109 string(
"TRG2DMatchTracks"));
113 std::string(
"KLMTrgSummary"));
115 "Name of the StoreArray holding the matched 3D NN tracks and clusters made",
116 string(
"TRG3DMatchTracks"));
118 "Name of the StoreArray holding the information of tracks and clusters from cdc ecl klm.",
119 string(
"TRGGRLObjects"));
121 "Name of the StoreArray holding the information of trigger ecl clusters ",
122 string(
"TRGECLClusters"));
124 "Name of the StoreArray holding the information of ecl trigger",
125 string(
"TRGECLTrgs"));
128 "The time window of the signal eclclusters",
137 radtodeg = 180. / TMath::Pi();
140 for (
int tc = 1; tc <= 576; tc++) {
147 for (
int tc = 1; tc <= 576; tc++) {
151 ROOT::Math::PxPyPzEVector CellLab;
152 CellLab.SetPx(CellPosition.Px() / CellPosition.Mag());
153 CellLab.SetPy(CellPosition.Py() / CellPosition.Mag());
154 CellLab.SetPz(CellPosition.Pz() / CellPosition.Mag());
158 TCPhiLab.push_back(CellPosition.Phi()*radtodeg);
159 double tantheta =
tan(CellPosition.Theta());
160 TCcotThetaLab.push_back(1. / tantheta);
163 ROOT::Math::PxPyPzEVector CellCOM = boostrotate.
rotateLabToCms() * CellLab;
164 TCThetaCOM.push_back(CellCOM.Theta()*radtodeg);
165 TCPhiCOM.push_back(CellCOM.Phi()*radtodeg);
168 TC1GeV.push_back(1. / CellCOM.E());
178 B2DEBUG(20,
"TRGGDLModule ... beginRun called ");
206 double EventTiming = -9999.;
207 if (ntrgArray > 0) {EventTiming = trgArray[0]->getEventTiming();}
208 std::vector<int> selTC;
209 std::vector<int> selTheta;
210 std::vector<float> selE;
211 for (
int ic = 0; ic < eclTrgClusterArray.
getEntries(); ic++) {
212 double tcT = abs(eclTrgClusterArray[ic]->getTimeAve() - EventTiming);
214 int TC = eclTrgClusterArray[ic]->getMaxTCId();
216 selTheta.push_back(TCThetaID[TC - 1]);
217 selE.push_back(eclTrgClusterArray[ic]->getEnergyDep());
229 for (
int itrk = 0; itrk < nTrk3D; itrk++) {
230 double z0 = cdc3DTrkArray[itrk]->getZ0();
231 if (abs(z0) < 10.) {nTrkZ10++;}
232 if (abs(z0) < 25.) {nTrkZ25++;}
233 if (abs(z0) < 35.) {nTrkZ35++;}
242 for (
int itrk = 0; itrk < nTrkNN; itrk++) {
243 double z0 = cdcNNTrkArray[itrk]->getZ0();
245 double omega = 100 * cdcNNTrkArray[itrk]->getOmega();
246 int omega_bin = omega / 0.044;
247 omega = omega_bin * 0.044;
249 double cottheta = cdcNNTrkArray[itrk]->getCotTheta();
251 if (cottheta != 0)theta =
atan(1. / cottheta);
252 int theta_bin = theta / 0.098125;
253 theta = theta_bin * 0.098125;
254 int p = abs(10 * 0.3 * 1.5 / omega / sin(theta));
256 double pt = cdcNNTrkArray[itrk]->getPt();
257 double p_abs = cdcNNTrkArray[itrk]->getPt() / sin(theta);
258 B2DEBUG(20,
"NN momentum " << omega <<
" " << theta * 180 / 3.14 <<
" " << p * 0.1 <<
" " << p_abs <<
" " << pt);
260 if (abs(z0) < 15. && p > 7) {nTrkNNSTT++;}
261 if (abs(z0) < 15. && p > 6) {nTrkNNSTT6++;}
262 if (abs(z0) < 15. && p > 5) {nTrkNNSTT5++;}
263 if (abs(z0) < 15. && p > 4) {nTrkNNSTT4++;}
264 if (abs(z0) < 20.) {nTrkNN20++;}
265 if (abs(z0) < 40.) {nTrkNN40++;}
268 trgInfo->setN3Dfittertrk(nTrk3D);
269 trgInfo->setN3DfittertrkZ10(nTrkZ10);
270 trgInfo->setN3DfittertrkZ25(nTrkZ25);
271 trgInfo->setN3DfittertrkZ35(nTrkZ35);
272 trgInfo->setNNNtrk(nTrkNN);
273 trgInfo->setNNNtrkZ20(nTrkNN20);
274 trgInfo->setNNNtrkZ40(nTrkNN40);
275 trgInfo->setNNNtrkSTT(nTrkNNSTT);
279 int nClust = selTC.size();
288 for (
int ic = 0; ic < nClust; ic++) {
289 if (selE[ic] > 0.3) {n300MeV++;}
290 float thresh = TC1GeV[selTC[ic] - 1];
291 if (selE[ic] > (thresh + thresh)) {
293 if (selTheta[ic] >= 4 && selTheta[ic] <= 14) {n2GeV414++;}
294 if (selTheta[ic] == 2 || selTheta[ic] == 3 || selTheta[ic] == 15 || selTheta[ic] == 16) {n2GeV231516++;}
295 if (selTheta[ic] == 1 || selTheta[ic] == 17) {n2GeV117++;}
297 if (selE[ic] > thresh) {
298 if (selTheta[ic] >= 4 && selTheta[ic] <= 15) {n1GeV415++;}
299 if (selTheta[ic] == 2 || selTheta[ic] == 3 || selTheta[ic] == 16) {n1GeV2316++;}
300 if (selTheta[ic] == 1 || selTheta[ic] == 17) {n1GeV117++;}
303 trgInfo->setNcluster(nClust);
304 trgInfo->setNhigh300cluster(n300MeV);
305 trgInfo->setNhigh1GeVcluster415(n1GeV415);
306 trgInfo->setNhigh1GeVcluster2316(n1GeV2316);
307 trgInfo->setNhigh1GeVcluster117(n1GeV117);
308 trgInfo->setNhigh2GeVcluster(n2GeV);
309 trgInfo->setNhigh2GeVcluster414(n2GeV414);
310 trgInfo->setNhigh2GeVcluster231516(n2GeV231516);
311 trgInfo->setNhigh2GeVcluster117(n2GeV117);
316 int nPhiPairHigh = 0;
321 for (
int i0 = 0; i0 < nClust - 1; i0++) {
322 for (
int i1 = i0 + 1; i1 < nClust; i1++) {
325 float dphi = abs(TCPhiCOM[selTC[i1] - 1] - TCPhiCOM[selTC[i0] - 1]);
326 if (dphi > 180.) {dphi = 360 - dphi;}
327 if (dphi > 170. && selE[i0] > 0.25 && selE[i1] > 0.25) {nPhiPairHigh++;}
328 if (dphi > 170. && (selE[i0] < 0.25 || selE[i1] < 0.25)) {nPhiPairLow++;}
331 float thetaSum = TCThetaCOM[selTC[i0] - 1] + TCThetaCOM[selTC[i1] - 1];
332 if (dphi > 160. && thetaSum > 160. && thetaSum < 200.) {n3DPair++;}
335 if (dphi > 160. && thetaSum > 165. && thetaSum < 190. && selE[i0] > 3.*TC1GeV[selTC[i0] - 1] && selE[i1] > 3.*TC1GeV[selTC[i1] - 1]
336 && (selE[i0] > 4.5 * TC1GeV[selTC[i0] - 1] || selE[i1] > 4.5 * TC1GeV[selTC[i1] - 1])) {
340 bool c0matched =
false;
341 bool c1matched =
false;
342 for (
int itrk = 0; itrk < nTrk3D; itrk++) {
343 double phiTrk = cdc3DTrkArray[itrk]->getPhi0() * radtodeg;
344 double ptTrk = cdc3DTrkArray[itrk]->getTransverseMomentum(1.5);
345 float dphi0 = abs(phiTrk - TCPhiLab[selTC[i0] - 1]);
346 if (dphi0 > 180.) {dphi0 = 360. - dphi0;}
347 float dphi1 = abs(phiTrk - TCPhiLab[selTC[i1] - 1]);
348 if (dphi1 > 180.) {dphi1 = 360. - dphi1;}
349 if (ptTrk > 1. && dphi0 < 15.) {c0matched =
true;}
350 if (ptTrk > 1. && dphi1 < 15.) {c1matched =
true;}
352 if (c0matched && c1matched) {nTrkBhabha++;}
357 trgInfo->setBhabhaVeto(nTrkBhabha);
358 trgInfo->seteclBhabhaVeto(nECLBhabha);
359 trgInfo->setPairHigh(nPhiPairHigh);
360 trgInfo->setPairLow(nPhiPairLow);
361 trgInfo->set3DPair(n3DPair);
367 int nSameHem1Trk = 0;
370 double phiTrk = cdc3DTrkArray[0]->getPhi0() * radtodeg;
371 double cotTrk = cdc3DTrkArray[0]->getCotTheta();
372 for (
int i0 = 0; i0 < nClust; i0++) {
373 float dphi = abs(phiTrk - TCPhiLab[selTC[i0] - 1]);
374 if (dphi > 180.) {dphi = 360. - dphi;}
375 float dCot = cotTrk - TCcotThetaLab[selTC[i0] - 1];
376 if (dphi > 80.) {nOppHem1Trk++;}
377 if (dphi < 80. && (dCot < -0.8 || dCot > 0.6)) {nSameHem1Trk++;}
381 trgInfo->setNSameHem1Trk(nSameHem1Trk);
382 trgInfo->setNOppHem1Trk(nOppHem1Trk);
386 int Trk_b2b_1to3 = 0;
387 int Trk_b2b_1to5 = 0;
388 int Trk_b2b_1to7 = 0;
389 int Trk_b2b_1to9 = 0;
392 for (
int itrk = 0; itrk < cdc2DTrkArray.
getEntries(); itrk++) {
394 int phi_i_itrk = (int)((cdc2DTrkArray[itrk]->getPhi0()) * (180 / M_PI) / 10);
396 for (
int jtrk = 0; jtrk < cdc2DTrkArray.
getEntries(); jtrk++) {
397 if (itrk <= jtrk)
continue;
399 int phi_i_jtrk = (int)((cdc2DTrkArray[jtrk]->getPhi0()) * (180 / M_PI) / 10);
400 if (abs(phi_i_itrk - phi_i_jtrk) >= 17 && abs(phi_i_itrk - phi_i_jtrk) <= 19) {Trk_b2b_1to3 = 1;}
401 if (abs(phi_i_itrk - phi_i_jtrk) >= 16 && abs(phi_i_itrk - phi_i_jtrk) <= 20) {Trk_b2b_1to5 = 1;}
402 if (abs(phi_i_itrk - phi_i_jtrk) >= 15 && abs(phi_i_itrk - phi_i_jtrk) <= 21) {Trk_b2b_1to7 = 1;}
403 if (abs(phi_i_itrk - phi_i_jtrk) >= 14 && abs(phi_i_itrk - phi_i_jtrk) <= 22) {Trk_b2b_1to9 = 1;}
404 if (abs(phi_i_itrk - phi_i_jtrk) >= 9 && abs(phi_i_itrk - phi_i_jtrk) <= 27) {Trk_open90 = 1;}
405 if (abs(phi_i_itrk - phi_i_jtrk) >= 3 && abs(phi_i_itrk - phi_i_jtrk) <= 33) {Trk_open30 = 1;}
408 trgInfo->setTrk_b2b_1to3(Trk_b2b_1to3);
409 trgInfo->setTrk_b2b_1to5(Trk_b2b_1to5);
410 trgInfo->setTrk_b2b_1to7(Trk_b2b_1to7);
411 trgInfo->setTrk_b2b_1to9(Trk_b2b_1to9);
412 trgInfo->setTrk_open90(Trk_open90);
413 trgInfo->setTrk_open30(Trk_open30);
417 int cluster_b2b_1to3 = 0;
418 int cluster_b2b_1to5 = 0;
419 int cluster_b2b_1to7 = 0;
420 int cluster_b2b_1to9 = 0;
421 for (
int iclu = 0; iclu < eclTrgClusterArray.
getEntries(); iclu++) {
423 double x_iclu = eclTrgClusterArray[iclu]->getPositionX();
424 double y_iclu = eclTrgClusterArray[iclu]->getPositionY();
427 if (x_iclu >= 0 && y_iclu >= 0) {phi_iclu = (int)(
atan(y_iclu / x_iclu) * (180.0 / M_PI) / 10);}
428 else if (x_iclu < 0 && y_iclu >= 0) {phi_iclu = (int)((
atan(y_iclu / x_iclu) * (180.0 / M_PI) + 180.0) / 10);}
429 else if (x_iclu < 0 && y_iclu < 0) {phi_iclu = (int)((
atan(y_iclu / x_iclu) * (180.0 / M_PI) + 180.0) / 10);}
430 else if (x_iclu >= 0 && y_iclu < 0) {phi_iclu = (int)((
atan(y_iclu / x_iclu) * (180.0 / M_PI) + 360.0) / 10);}
432 for (
int jclu = 0; jclu < eclTrgClusterArray.
getEntries(); jclu++) {
433 if (iclu <= jclu)
continue;
435 double x_jclu = eclTrgClusterArray[jclu]->getPositionX();
436 double y_jclu = eclTrgClusterArray[jclu]->getPositionY();
439 if (x_jclu >= 0 && y_jclu >= 0) {phi_jclu = (int)(
atan(y_jclu / x_jclu) * (180.0 / M_PI) / 10);}
440 else if (x_jclu < 0 && y_jclu >= 0) {phi_jclu = (int)((
atan(y_jclu / x_jclu) * (180.0 / M_PI) + 180.0) / 10);}
441 else if (x_jclu < 0 && y_jclu < 0) {phi_jclu = (int)((
atan(y_jclu / x_jclu) * (180.0 / M_PI) + 180.0) / 10);}
442 else if (x_jclu >= 0 && y_jclu < 0) {phi_jclu = (int)((
atan(y_jclu / x_jclu) * (180.0 / M_PI) + 360.0) / 10);}
444 if (abs(phi_iclu - phi_jclu) >= 17 && abs(phi_iclu - phi_jclu) <= 19) {cluster_b2b_1to3 = 1;}
445 if (abs(phi_iclu - phi_jclu) >= 16 && abs(phi_iclu - phi_jclu) <= 20) {cluster_b2b_1to5 = 1;}
446 if (abs(phi_iclu - phi_jclu) >= 15 && abs(phi_iclu - phi_jclu) <= 21) {cluster_b2b_1to7 = 1;}
447 if (abs(phi_iclu - phi_jclu) >= 14 && abs(phi_iclu - phi_jclu) <= 22) {cluster_b2b_1to9 = 1;}
450 trgInfo->setcluster_b2b_1to3(cluster_b2b_1to3);
451 trgInfo->setcluster_b2b_1to5(cluster_b2b_1to5);
452 trgInfo->setcluster_b2b_1to7(cluster_b2b_1to7);
453 trgInfo->setcluster_b2b_1to9(cluster_b2b_1to9);
459 int eed = 0, fed = 0;
460 if (cdc2DTrkArray.
getEntries() == 2 && trackphimatch.
getEntries() == 2 && cluster_b2b_1to5 == 1) {eed = 1;}
461 if (cdc2DTrkArray.
getEntries() == 1 && trackphimatch.
getEntries() == 1 && cluster_b2b_1to5 == 1) {fed = 1;}
462 trgInfo->seteed(eed);
463 trgInfo->setfed(fed);
467 int Trkcluster_b2b_1to3 = 0;
468 int Trkcluster_b2b_1to5 = 0;
469 int Trkcluster_b2b_1to7 = 0;
470 int Trkcluster_b2b_1to9 = 0;
471 for (
int itrk = 0; itrk < cdc2DTrkArray.
getEntries(); itrk++) {
472 double _r = 1.0 / cdc2DTrkArray[itrk]->getOmega() ;
473 double _phi = cdc2DTrkArray[itrk]->getPhi0() ;
474 double phi_p = acos(126.0 / (2 * fabs(_r)));
476 if (_r > 0) {charge = 1;}
477 else if (_r < 0) {charge = -1;}
480 double phi_CDC = 0.0;
482 phi_CDC = _phi + phi_p - 0.5 * M_PI;
483 }
else if (charge == -1) {
484 phi_CDC = _phi - phi_p + 0.5 * M_PI;
489 if (phi_CDC > 2 * M_PI) {phi_CDC = phi_CDC - 2 * M_PI;}
490 else if (phi_CDC < 0) {phi_CDC = phi_CDC + 2 * M_PI;}
491 int phi_itrk = (int)(phi_CDC * (180.0 / M_PI) / 10);
493 for (
int jclu = 0; jclu < eclTrgClusterArray.
getEntries(); jclu++) {
495 double x_jclu = eclTrgClusterArray[jclu]->getPositionX();
496 double y_jclu = eclTrgClusterArray[jclu]->getPositionY();
499 if (x_jclu >= 0 && y_jclu >= 0) {phi_jclu = (int)(
atan(y_jclu / x_jclu) * (180.0 / M_PI) / 10);}
500 else if (x_jclu < 0 && y_jclu >= 0) {phi_jclu = (int)((
atan(y_jclu / x_jclu) * (180.0 / M_PI) + 180.0) / 10);}
501 else if (x_jclu < 0 && y_jclu < 0) {phi_jclu = (int)((
atan(y_jclu / x_jclu) * (180.0 / M_PI) + 180.0) / 10);}
502 else if (x_jclu >= 0 && y_jclu < 0) {phi_jclu = (int)((
atan(y_jclu / x_jclu) * (180.0 / M_PI) + 360.0) / 10);}
504 if (abs(phi_itrk - phi_jclu) >= 17 && abs(phi_itrk - phi_jclu) <= 19) {Trkcluster_b2b_1to3 = 1;}
505 if (abs(phi_itrk - phi_jclu) >= 16 && abs(phi_itrk - phi_jclu) <= 20) {Trkcluster_b2b_1to5 = 1;}
506 if (abs(phi_itrk - phi_jclu) >= 15 && abs(phi_itrk - phi_jclu) <= 21) {Trkcluster_b2b_1to7 = 1;}
507 if (abs(phi_itrk - phi_jclu) >= 14 && abs(phi_itrk - phi_jclu) <= 22) {Trkcluster_b2b_1to9 = 1;}
511 trgInfo->setTrkcluster_b2b_1to3(Trkcluster_b2b_1to3);
512 trgInfo->setTrkcluster_b2b_1to5(Trkcluster_b2b_1to5);
513 trgInfo->setTrkcluster_b2b_1to7(Trkcluster_b2b_1to7);
514 trgInfo->setTrkcluster_b2b_1to9(Trkcluster_b2b_1to9);
520 if (cdc2DTrkArray.
getEntries() == 1 && Trkcluster_b2b_1to5 == 1) {fp = 1;}
524 if (trackphimatch.
getEntries() == 2 && Trk_b2b_1to5 == 1) {eeb = 1;}
525 trgInfo->seteeb(eeb);
528 if (cdc2DTrkArray.
getEntries() == 1 && trackphimatch.
getEntries() == 1 && Trkcluster_b2b_1to5 == 1) {fep = 1;}
529 trgInfo->setfep(fep);
536 int ECLtoGDL[4] = {0, 0, 0, 0};
538 ECLtoGDL[0] = trgArray[0]->getECLtoGDL(0);
539 ECLtoGDL[1] = trgArray[0]->getECLtoGDL(1);
540 ECLtoGDL[2] = trgArray[0]->getECLtoGDL(2);
541 ECLtoGDL[3] = trgArray[0]->getECLtoGDL(3);
545 bool elow = (ECLtoGDL[1] & (1 << (47 - 32 * 1))) != 0;
547 bool ehigh = (ECLtoGDL[1] & (1 << (48 - 32 * 1))) != 0;
549 bool elum = (ECLtoGDL[1] & (1 << (49 - 32 * 1))) != 0;
551 bool ecl_bha = (ECLtoGDL[0] & (1 << (19 - 32 * 0))) != 0;
553 bool bha_type0 = (ECLtoGDL[0] & (1 << (20 - 32 * 0))) != 0;
555 bool bha_type1 = (ECLtoGDL[0] & (1 << (21 - 32 * 0))) != 0;
557 bool bha_type2 = (ECLtoGDL[0] & (1 << (22 - 32 * 0))) != 0;
559 bool bha_type3 = (ECLtoGDL[0] & (1 << (23 - 32 * 0))) != 0;
561 bool bha_type4 = (ECLtoGDL[0] & (1 << (24 - 32 * 0))) != 0;
563 bool bha_type5 = (ECLtoGDL[0] & (1 << (25 - 32 * 0))) != 0;
565 bool bha_type6 = (ECLtoGDL[0] & (1 << (26 - 32 * 0))) != 0;
567 bool bha_type7 = (ECLtoGDL[0] & (1 << (27 - 32 * 0))) != 0;
569 bool bha_type8 = (ECLtoGDL[0] & (1 << (28 - 32 * 0))) != 0;
571 bool bha_type9 = (ECLtoGDL[0] & (1 << (29 - 32 * 0))) != 0;
573 bool bha_type10 = (ECLtoGDL[0] & (1 << (30 - 32 * 0))) != 0;
575 bool bha_type11 = (ECLtoGDL[0] & (1u << (31 - 32 * 0))) != 0;
577 bool bha_type12 = (ECLtoGDL[1] & (1 << (32 - 32 * 1))) != 0;
579 bool bha_type13 = (ECLtoGDL[1] & (1 << (33 - 32 * 1))) != 0;
581 bool nclst_0 = (eclTrgClusterArray.
getEntries() & (1 << 0)) != 0;
582 bool nclst_1 = (eclTrgClusterArray.
getEntries() & (1 << 1)) != 0;
583 bool nclst_2 = (eclTrgClusterArray.
getEntries() & (1 << 2)) != 0;
584 bool nclst_3 = (eclTrgClusterArray.
getEntries() & (1 << 3)) != 0;
587 bool ecl_bg_0 = (ECLtoGDL[1] & (1 << (57 - 32 * 1))) != 0;
589 bool ecl_bg_1 = (ECLtoGDL[1] & (1 << (58 - 32 * 1))) != 0;
591 bool ecl_bg_2 = (ECLtoGDL[1] & (1 << (59 - 32 * 1))) != 0;
593 bool ecl_active = ntrgArray > 0;
596 bool ecl_timing_fwd = (ECLtoGDL[0] & (1 << (15 - 32 * 0))) != 0;
598 bool ecl_timing_brl = (ECLtoGDL[0] & (1 << (16 - 32 * 0))) != 0;
600 bool ecl_timing_bwd = (ECLtoGDL[0] & (1 << (17 - 32 * 0))) != 0;
602 bool ecl_phys = (ECLtoGDL[0] & (1 << (18 - 32 * 0))) != 0;
604 bool ecl_oflo = (ECLtoGDL[1] & (1 << (60 - 32 * 1))) != 0;
606 bool ecl_3dbha = (ECLtoGDL[1] & (1 << (61 - 32 * 1))) != 0;
608 bool ecl_lml_0 = (ECLtoGDL[1] & (1 << (62 - 32 * 1))) != 0;
610 bool ecl_lml_1 = (ECLtoGDL[1] & (1u << (63 - 32 * 1))) != 0;
612 bool ecl_lml_2 = (ECLtoGDL[2] & (1 << (64 - 32 * 2))) != 0;
614 bool ecl_lml_3 = (ECLtoGDL[2] & (1 << (65 - 32 * 2))) != 0;
616 bool ecl_lml_4 = (ECLtoGDL[2] & (1 << (66 - 32 * 2))) != 0;
618 bool ecl_lml_5 = (ECLtoGDL[2] & (1 << (67 - 32 * 2))) != 0;
620 bool ecl_lml_6 = (ECLtoGDL[2] & (1 << (68 - 32 * 2))) != 0;
622 bool ecl_lml_7 = (ECLtoGDL[2] & (1 << (69 - 32 * 2))) != 0;
624 bool ecl_lml_8 = (ECLtoGDL[2] & (1 << (70 - 32 * 2))) != 0;
626 bool ecl_lml_9 = (ECLtoGDL[2] & (1 << (71 - 32 * 2))) != 0;
628 bool ecl_lml_10 = (ECLtoGDL[2] & (1 << (72 - 32 * 2))) != 0;
630 bool ecl_lml_11 = (ECLtoGDL[2] & (1 << (73 - 32 * 2))) != 0;
632 bool ecl_lml_12 = (ECLtoGDL[2] & (1 << (78 - 32 * 2))) != 0;
634 bool ecl_lml_13 = (ECLtoGDL[2] & (1 << (79 - 32 * 2))) != 0;
636 bool ecl_mumu = (ECLtoGDL[2] & (1 << (75 - 32 * 2))) != 0;
638 bool ecl_bst = (ECLtoGDL[2] & (1 << (77 - 32 * 2))) != 0;
640 bool ecl_bhapur = (ECLtoGDL[2] & (1 << (74 - 32 * 2))) != 0;
642 bool bha_intrk = (ECLtoGDL[2] & (1 << (86 - 32 * 2))) != 0;
644 bool bha_theta_0 = (ECLtoGDL[2] & (1 << (87 - 32 * 2))) != 0;
645 bool bha_theta_1 = (ECLtoGDL[2] & (1 << (88 - 32 * 2))) != 0;
647 bool ecltaub2b = (ECLtoGDL[2] & (1 << (89 - 32 * 2))) != 0;
648 bool ecltaub2b2 = (ECLtoGDL[2] & (1 << (93 - 32 * 2))) != 0;
649 bool ecltaub2b3 = (ECLtoGDL[2] & (1 << (94 - 32 * 2))) != 0;
651 bool ehigh1 = (ECLtoGDL[2] & (1 << (90 - 32 * 2))) != 0;
652 bool ehigh2 = (ECLtoGDL[2] & (1 << (91 - 32 * 2))) != 0;
653 bool ehigh3 = (ECLtoGDL[2] & (1 << (92 - 32 * 2))) != 0;
658 bool cdc_active =
false;
664 int n_klm_barrel = klmtrgsummary->getBKLM_n_trg_sectors();
665 bool klm_hit = n_klm_barrel > 0;
666 bool klm_0 = (n_klm_barrel & (1 << 0)) != 0;
667 bool klm_1 = (n_klm_barrel & (1 << 1)) != 0;
668 bool klm_2 = (n_klm_barrel & (1 << 2)) != 0;
669 int n_eklm_barrel = klmtrgsummary->getEKLM_n_trg_sectors();
670 bool eklm_hit = n_eklm_barrel > 0;
671 bool eklm_0 = (n_eklm_barrel & (1 << 0)) != 0;
672 bool eklm_1 = (n_eklm_barrel & (1 << 1)) != 0;
673 bool eklm_2 = (n_eklm_barrel & (1 << 2)) != 0;
674 int klmb2b = klmtrgsummary->getBKLM_back_to_back_flag();
675 int eklmb2b = klmtrgsummary->getEKLM_back_to_back_flag();
678 bool cdcklm_0 = (trackKLMmatch.
getEntries() == 1);
679 bool cdcklm_1 = (trackKLMmatch.
getEntries() > 1);
680 bool cdcklm_2 = (trackKLMmatch.
getEntries() == 3);
681 bool cdcklm_3 = (trackKLMmatch.
getEntries() > 3);
682 int n_seklm = trgInfo->getNsklm();
685 int n_ieklm = trgInfo->getNiklm();
686 bool ecleklm = (trgInfo->getNeecleklm() > 0);
688 bool cdcecl_0 = (trackphimatch.
getEntries() == 1);
689 bool cdcecl_1 = (trackphimatch.
getEntries() == 2);
690 bool cdcecl_2 = (trackphimatch.
getEntries() == 3);
691 bool cdcecl_3 = (trackphimatch.
getEntries() > 3);
692 bool trkbha1 = ecl_3dbha && (trackphimatch.
getEntries() == 1);
693 bool trkbha2 = ecl_3dbha && (trackphimatch.
getEntries() == 2);
698 for (
int i = 0; i < trackphimatch.
getEntries(); i++) {
699 if (trackphimatch[i]->get_e() >= 2.0) {n_c2gev++;}
702 bool c2gev_0 = (n_c2gev == 1);
703 bool c2gev_1 = (n_c2gev == 2);
704 bool c2gev_2 = (n_c2gev == 3);
705 bool c2gev_3 = (n_c2gev > 3);
707 int N_clst1 = 0, N_clst2 = 0;
708 for (
int i = 0 ; i < grlphoton.
getEntries() ; i++) {
709 if (grlphoton[i]->get_e() > 1.0) { N_clst1++; }
710 if (grlphoton[i]->get_e() > 2.0) { N_clst2++; }
713 bool nclst1_0 = (N_clst1 == 1);
714 bool nclst1_1 = (N_clst1 == 2);
715 bool nclst1_2 = (N_clst1 == 3);
716 bool nclst1_3 = (N_clst1 > 3);
718 bool nclst2_0 = (N_clst2 == 1);
719 bool nclst2_1 = (N_clst2 == 2);
720 bool nclst2_2 = (N_clst2 == 3);
721 bool nclst2_3 = (N_clst2 > 3);
723 int N_ST = trgInfo->getNshorttrk();
724 int N_ST_fwd = trgInfo->getNshorttrk_fwd();
725 int N_ST_bwd = trgInfo->getNshorttrk_bwd();
726 int s2s3 = trgInfo->gets2s3();
727 int s2s5 = trgInfo->gets2s5();
728 int s2so = trgInfo->gets2so();
729 int s2f3 = trgInfo->gets2f3();
730 int s2f5 = trgInfo->gets2f5();
731 int s2fo = trgInfo->gets2fo();
732 int s2f30 = trgInfo->gets2f30();
733 int s2s30 = trgInfo->gets2s30();
734 int bwdsb = trgInfo->getbwdsb();
735 int bwdnb = trgInfo->getbwdnb();
736 int fwdsb = trgInfo->getfwdsb();
737 int fwdnb = trgInfo->getfwdnb();
738 int brlfb = trgInfo->getbrlfb();
739 int brlnb = trgInfo->getbrlnb();
740 int N_IT = trgInfo->getNinnertrk();
741 int i2fo = trgInfo->geti2fo();
742 int i2io = trgInfo->geti2io();
743 int n_secl = trgInfo->getNsecl();
744 int n_iecl = trgInfo->getNiecl();
746 bool ecltaunn = trgInfo->getTauNN();
765 for (
int i = 0; i < N_InputBits; i++) {
769 if (bitname ==
"t3_0") {bit = nTrkZ35 == 1;}
770 else if (bitname ==
"t3_1") {bit = nTrkZ35 == 2;}
771 else if (bitname ==
"t3_2") {bit = nTrkZ35 == 3;}
772 else if (bitname ==
"t3_3") {bit = nTrkZ35 > 3;}
773 else if (bitname ==
"ty_0") {bit = nTrkNN20 == 1;}
774 else if (bitname ==
"ty_1") {bit = nTrkNN20 == 2;}
775 else if (bitname ==
"ty_2") {bit = nTrkNN20 == 3;}
776 else if (bitname ==
"ty_3") {bit = nTrkNN20 > 3;}
777 else if (bitname ==
"typ") {bit = nTrkNNSTT > 0;}
778 else if (bitname ==
"typ6") {bit = nTrkNNSTT6 > 0;}
779 else if (bitname ==
"typ5") {bit = nTrkNNSTT5 > 0;}
780 else if (bitname ==
"typ4") {bit = nTrkNNSTT4 > 0;}
781 else if (bitname ==
"t2_0") {bit = nTrk2D == 1;}
782 else if (bitname ==
"t2_1") {bit = nTrk2D == 2;}
783 else if (bitname ==
"t2_2") {bit = nTrk2D == 3;}
784 else if (bitname ==
"t2_3") {bit = nTrk2D > 3;}
785 else if (bitname ==
"ts_0") {bit = N_ST == 1;}
786 else if (bitname ==
"ts_1") {bit = N_ST == 2;}
787 else if (bitname ==
"ts_2") {bit = N_ST == 3;}
788 else if (bitname ==
"ts_3") {bit = N_ST > 3;}
789 else if (bitname ==
"fwd_s") {bit = N_ST_fwd > 0;}
790 else if (bitname ==
"bwd_s") {bit = N_ST_bwd > 0;}
791 else if (bitname ==
"cdc_open90") {bit = Trk_open90 == 1;}
792 else if (bitname ==
"f2f30") {bit = Trk_open30 == 1;}
793 else if (bitname ==
"cdc_active") {bit = cdc_active;}
794 else if (bitname ==
"cdc_b2b3") {bit = Trk_b2b_1to3;}
795 else if (bitname ==
"cdc_b2b5") {bit = Trk_b2b_1to5;}
796 else if (bitname ==
"cdc_b2b7") {bit = Trk_b2b_1to7;}
797 else if (bitname ==
"cdc_b2b9") {bit = Trk_b2b_1to9;}
798 else if (bitname ==
"s2s3") {bit = s2s3 > 0;}
799 else if (bitname ==
"s2s5") {bit = s2s5 > 0;}
800 else if (bitname ==
"s2so") {bit = s2so > 0;}
801 else if (bitname ==
"s2f3") {bit = s2f3 > 0;}
802 else if (bitname ==
"s2f5") {bit = s2f5 > 0;}
803 else if (bitname ==
"s2fo") {bit = s2fo > 0;}
804 else if (bitname ==
"s2f30") {bit = s2f30;}
805 else if (bitname ==
"s2s30") {bit = s2s30;}
806 else if (bitname ==
"bwdsb") {bit = bwdsb > 0;}
807 else if (bitname ==
"bwdnb") {bit = bwdnb > 0;}
808 else if (bitname ==
"fwdsb") {bit = fwdsb > 0;}
809 else if (bitname ==
"fwdnb") {bit = fwdnb > 0;}
810 else if (bitname ==
"brlfb1") {bit = brlfb == 1;}
811 else if (bitname ==
"brlfb2") {bit = brlfb == 2;}
812 else if (bitname ==
"brlnb1") {bit = brlnb == 1;}
813 else if (bitname ==
"brlnb2") {bit = brlnb == 2;}
814 else if (bitname ==
"seklm_0") {bit = n_seklm == 1;}
815 else if (bitname ==
"seklm_1") {bit = n_seklm > 1;}
816 else if (bitname ==
"ieklm") {bit = n_ieklm > 0;}
817 else if (bitname ==
"secl") {bit = n_secl > 0;}
818 else if (bitname ==
"iecl") {bit = n_iecl > 0;}
819 else if (bitname ==
"iecl_0") {bit = n_iecl == 1;}
820 else if (bitname ==
"iecl_1") {bit = n_iecl > 1;}
821 else if (bitname ==
"ti") {bit = N_IT > 0;}
822 else if (bitname ==
"i2fo") {bit = i2fo > 0;}
823 else if (bitname ==
"i2io") {bit = i2io > 0;}
824 else if (bitname ==
"ehigh") {bit = ehigh;}
825 else if (bitname ==
"elow") {bit = elow;}
826 else if (bitname ==
"elum") {bit = elum;}
827 else if (bitname ==
"ecl_bha") {bit = ecl_bha;}
828 else if (bitname ==
"bha_type_0") {bit = bha_type0;}
829 else if (bitname ==
"bha_type_1") {bit = bha_type1;}
830 else if (bitname ==
"bha_type_2") {bit = bha_type2;}
831 else if (bitname ==
"bha_type_3") {bit = bha_type3;}
832 else if (bitname ==
"bha_type_4") {bit = bha_type4;}
833 else if (bitname ==
"bha_type_5") {bit = bha_type5;}
834 else if (bitname ==
"bha_type_6") {bit = bha_type6;}
835 else if (bitname ==
"bha_type_7") {bit = bha_type7;}
836 else if (bitname ==
"bha_type_8") {bit = bha_type8;}
837 else if (bitname ==
"bha_type_9") {bit = bha_type9;}
838 else if (bitname ==
"bha_type_10") {bit = bha_type10;}
839 else if (bitname ==
"bha_type_11") {bit = bha_type11;}
840 else if (bitname ==
"bha_type_12") {bit = bha_type12;}
841 else if (bitname ==
"bha_type_13") {bit = bha_type13;}
842 else if (bitname ==
"clst_0") {bit = nclst_0;}
843 else if (bitname ==
"clst_1") {bit = nclst_1;}
844 else if (bitname ==
"clst_2") {bit = nclst_2;}
845 else if (bitname ==
"clst_3") {bit = nclst_3;}
846 else if (bitname ==
"ecl_bg_0") {bit = ecl_bg_0;}
847 else if (bitname ==
"ecl_bg_1") {bit = ecl_bg_1;}
848 else if (bitname ==
"ecl_bg_2") {bit = ecl_bg_2;}
849 else if (bitname ==
"ecl_active") {bit = ecl_active;}
850 else if (bitname ==
"ecl_timing_fwd") {bit = ecl_timing_fwd;}
851 else if (bitname ==
"ecl_timing_brl") {bit = ecl_timing_brl;}
852 else if (bitname ==
"ecl_timing_bwd") {bit = ecl_timing_bwd;}
853 else if (bitname ==
"ecl_phys") {bit = ecl_phys;}
854 else if (bitname ==
"ecl_oflo") {bit = ecl_oflo;}
855 else if (bitname ==
"ecl_3dbha") {bit = ecl_3dbha;}
856 else if (bitname ==
"bha_veto") {bit = ecl_3dbha;}
857 else if (bitname ==
"ecl_lml_0") {bit = ecl_lml_0;}
858 else if (bitname ==
"ecl_lml_1") {bit = ecl_lml_1;}
859 else if (bitname ==
"ecl_lml_2") {bit = ecl_lml_2;}
860 else if (bitname ==
"ecl_lml_3") {bit = ecl_lml_3;}
861 else if (bitname ==
"ecl_lml_4") {bit = ecl_lml_4;}
862 else if (bitname ==
"ecl_lml_5") {bit = ecl_lml_5;}
863 else if (bitname ==
"ecl_lml_6") {bit = ecl_lml_6;}
864 else if (bitname ==
"ecl_lml_7") {bit = ecl_lml_7;}
865 else if (bitname ==
"ecl_lml_8") {bit = ecl_lml_8;}
866 else if (bitname ==
"ecl_lml_9") {bit = ecl_lml_9;}
867 else if (bitname ==
"ecl_lml_10") {bit = ecl_lml_10;}
868 else if (bitname ==
"ecl_lml_11") {bit = ecl_lml_11;}
869 else if (bitname ==
"ecl_lml_12") {bit = ecl_lml_12;}
870 else if (bitname ==
"ecl_lml_13") {bit = ecl_lml_13;}
871 else if (bitname ==
"ecl_mumu") {bit = ecl_mumu;}
872 else if (bitname ==
"ecl_bst") {bit = ecl_bst;}
873 else if (bitname ==
"ecl_taub2b") {bit = ecltaub2b;}
874 else if (bitname ==
"ecl_taub2b2") {bit = ecltaub2b2;}
875 else if (bitname ==
"ecl_taub2b3") {bit = ecltaub2b3;}
876 else if (bitname ==
"ehigh1") {bit = ehigh1;}
877 else if (bitname ==
"ehigh2") {bit = ehigh2;}
878 else if (bitname ==
"ehigh3") {bit = ehigh3;}
880 else if (bitname ==
"klm_hit") {bit = klm_hit;}
881 else if (bitname ==
"klm_0") {bit = klm_0;}
882 else if (bitname ==
"klm_1") {bit = klm_1;}
883 else if (bitname ==
"klm_2") {bit = klm_2;}
884 else if (bitname ==
"klmb2b") {bit = klmb2b;}
885 else if (bitname ==
"eklm_hit") {bit = eklm_hit;}
886 else if (bitname ==
"eklm_0") {bit = eklm_0;}
887 else if (bitname ==
"eklm_1") {bit = eklm_1;}
888 else if (bitname ==
"eklm_2") {bit = eklm_2;}
889 else if (bitname ==
"eklmb2b") {bit = eklmb2b;}
890 else if (bitname ==
"ecleklm") {bit = ecleklm;}
891 else if (bitname ==
"revo") {bit =
false;}
892 else if (bitname ==
"her_kick") {bit =
false;}
893 else if (bitname ==
"ler_kick") {bit =
false;}
894 else if (bitname ==
"bha_delay") {bit =
false;}
895 else if (bitname ==
"pseud_rand") {bit =
false;}
896 else if (bitname ==
"plsin") {bit =
false;}
897 else if (bitname ==
"poissonin") {bit =
false;}
898 else if (bitname ==
"periodin") {bit =
false;}
899 else if (bitname ==
"veto") {bit =
false;}
900 else if (bitname ==
"samhem") {bit = nSameHem1Trk > 0;}
901 else if (bitname ==
"opohem") {bit = nOppHem1Trk > 0;}
902 else if (bitname ==
"n1gev_0") {bit = nclst1_0;}
903 else if (bitname ==
"n1gev_1") {bit = nclst1_1;}
904 else if (bitname ==
"n1gev_2") {bit = nclst1_2;}
905 else if (bitname ==
"n1gev_3") {bit = nclst1_3;}
906 else if (bitname ==
"n2gev_0") {bit = nclst2_0;}
907 else if (bitname ==
"n2gev_1") {bit = nclst2_1;}
908 else if (bitname ==
"n2gev_2") {bit = nclst2_2;}
909 else if (bitname ==
"n2gev_3") {bit = nclst2_3;}
910 else if (bitname ==
"cdcecl_0") {bit = cdcecl_0;}
911 else if (bitname ==
"cdcecl_1") {bit = cdcecl_1;}
912 else if (bitname ==
"cdcecl_2") {bit = cdcecl_2;}
913 else if (bitname ==
"cdcecl_3") {bit = cdcecl_3;}
914 else if (bitname ==
"c2gev_0") {bit = c2gev_0;}
915 else if (bitname ==
"c2gev_1") {bit = c2gev_1;}
916 else if (bitname ==
"c2gev_2") {bit = c2gev_2;}
917 else if (bitname ==
"c2gev_3") {bit = c2gev_3;}
918 else if (bitname ==
"cdcklm_0") {bit = cdcklm_0;}
919 else if (bitname ==
"cdcklm_1") {bit = cdcklm_1;}
920 else if (bitname ==
"cdcklm_2") {bit = cdcklm_2;}
921 else if (bitname ==
"cdcklm_3") {bit = cdcklm_3;}
922 else if (bitname ==
"d3") {bit = cluster_b2b_1to3 > 0;}
923 else if (bitname ==
"d5") {bit = cluster_b2b_1to5 > 0;}
924 else if (bitname ==
"d7") {bit = cluster_b2b_1to7 > 0;}
925 else if (bitname ==
"d9") {bit = cluster_b2b_1to9 > 0;}
926 else if (bitname ==
"p3") {bit = Trkcluster_b2b_1to3 > 0;}
927 else if (bitname ==
"p5") {bit = Trkcluster_b2b_1to5 > 0;}
928 else if (bitname ==
"p7") {bit = Trkcluster_b2b_1to7 > 0;}
929 else if (bitname ==
"p9") {bit = Trkcluster_b2b_1to9 > 0;}
930 else if (bitname ==
"trkfit") {bit =
false;}
931 else if (bitname ==
"injv") {bit =
false;}
932 else if (bitname ==
"nimin0") {bit =
false;}
933 else if (bitname ==
"nimin1") {bit =
false;}
934 else if (bitname ==
"track") {bit = nTrk2D > 0;}
935 else if (bitname ==
"bha_intrk") {bit = bha_intrk;}
936 else if (bitname ==
"bha_theta_0") {bit = bha_theta_0;}
937 else if (bitname ==
"bha_theta_1") {bit = bha_theta_1;}
938 else if (bitname ==
"ecl_bhapur") {bit = ecl_bhapur;}
941 else if (bitname ==
"trkbha1") {bit = trkbha1;}
942 else if (bitname ==
"trkbha2") {bit = trkbha2;}
945 else if (bitname ==
"ta_0") {bit =
false;}
946 else if (bitname ==
"ta_1") {bit =
false;}
947 else if (bitname ==
"ta_2") {bit =
false;}
948 else if (bitname ==
"ta_3") {bit =
false;}
949 else if (bitname ==
"trkflt") {bit =
false;}
950 else if (bitname ==
"tsf0b2b") {bit =
false;}
951 else if (bitname ==
"tsf1b2b") {bit =
false;}
952 else if (bitname ==
"tsf2b2b") {bit =
false;}
953 else if (bitname ==
"grlgg1") {bit =
false;}
954 else if (bitname ==
"grlgg2") {bit =
false;}
957 else if (bitname ==
"ecl_bhauni") {bit =
false;}
958 else if (bitname ==
"cdctop_0") {bit =
false;}
959 else if (bitname ==
"cdctop_1") {bit =
false;}
960 else if (bitname ==
"cdctop_2") {bit =
false;}
961 else if (bitname ==
"cdctop_3") {bit =
false;}
962 else if (bitname ==
"top_0") {bit =
false;}
963 else if (bitname ==
"top_1") {bit =
false;}
964 else if (bitname ==
"top_2") {bit =
false;}
965 else if (bitname ==
"top_bb") {bit =
false;}
966 else if (bitname ==
"top_active") {bit =
false;}
969 else if (bitname ==
"itsfb2b") {bit =
false;}
970 else if (bitname ==
"inp156") {bit =
false;}
971 else if (bitname ==
"inp157") {bit =
false;}
972 else if (bitname ==
"inp158") {bit =
false;}
973 else if (bitname ==
"inp159") {bit =
false;}
976 else if (bitname ==
"ecl_taunn") {bit = ecltaunn;}
980 else B2WARNING(
"Unknown bitname" <<
LogVar(
"bitname", bitname));
982 trgInfo->setInputBits(i, bit);
990 B2DEBUG(20,
"TRGGRLProjectsModule ... endRun called ");
bool hasBinnedEventT0(const Const::EDetector detector) const
Check if one of the detectors in the given set has a binned t0 estimation.
int getBinnedEventT0(const Const::EDetector detector) const
Return the stored binned event t0 for the given detector or 0 if nothing stored.
void setDescription(const std::string &description)
Sets the description of the module.
void setPropertyFlags(unsigned int propertyFlags)
Sets the flags for the module properties.
@ c_ParallelProcessingCertified
This module can be run in parallel processing mode safely (All I/O must be done through the data stor...
Accessor to arrays stored in the data store.
int getEntries() const
Get the number of objects in the array.
Type-safe access to single objects in the data store.
std::string m_configFilename
Config. file name.
std::string m_KLMTrgSummaryName
Name of the collection of KLM TRG.
int m_fastSimulationMode
Switch for the fast simulation.
std::string m_TrgECLTrgsName
Name of the StoreArray holding the ecl trg result.
int m_simulationMode
Mode for TRGGRL simulation.
std::string m_2DmatchCollectionName
Name of the StoreArray holding the matched 2D tracks.
std::string m_3DfitterCollectionName
Name of the StoreArray holding the tracks made by the 3D fitter.
int _debugLevel
returns version of TRGGRLProjectsModule.
int m_firmwareSimulationMode
Switch for the firmware simulation. 0:do nothing, 1:do everything.
virtual void initialize() override
Initilizes TRGGRLProjectsModule.
std::string m_TrgECLClusterName
Name of the StoreArray holding the eclclusters.
std::string m_phimatch_tracklist
the matched 2d track list by phi matching
virtual void event() override
Called event by event.
virtual void endRun() override
Called when run ended.
virtual void terminate() override
Called when processing ended.
double m_eclClusterTimeWindow
ecl cluster time window to suppress beam induced background
virtual void beginRun() override
Called when new run started.
std::string m_2DfinderCollectionName
Name of the StoreArray holding the tracks made by the 2D finder.
DBObjPtr< TRGGDLDBInputBits > m_InputBitsDB
Data base of GDL input bits.
std::string m_NNCollectionName
Name of the StoreArray holding the tracks made by NN.
std::string m_klmmatch_tracklist
the matched 2d track list by KLM matching
std::string m_TrgGrlInformationName
Name of the StoreArray holding projects information from grl.
std::string m_grlphotonlist
Name of the StoreArray holding projects information from grlphoton.
std::vector< double > m_energythreshold
the collection of energy threshold used in the projects
std::string m_3DmatchCollectionName
Name of the StoreArray holding the matched 3D tracks.
int getTCThetaIdFromTCId(int)
get [TC Theta ID] from [TC ID]
TVector3 getTCPosition(int)
TC position (cm)
Class to store variables with their name which were sent to the logging service.
void addParam(const std::string &name, T ¶mVariable, const std::string &description, const T &defaultValue)
Adds a new parameter to the module.
#define REG_MODULE(moduleName)
Register the given module (without 'Module' suffix) with the framework.
double atan(double a)
atan for double
double tan(double a)
tan for double
Abstract base class for different kinds of events.