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>
38std::vector<int> TCThetaID;
39std::vector<float> TCPhiLab;
40std::vector<float> TCcotThetaLab;
41std::vector<float> TCPhiCOM;
42std::vector<float> TCThetaCOM;
43std::vector<float> TC1GeV;
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++) {
150 ROOT::Math::XYZVector CellPosition = eclMapping->
getTCPosition(tc);
151 ROOT::Math::PxPyPzEVector CellLab;
152 CellLab.SetPx(CellPosition.X() / CellPosition.R());
153 CellLab.SetPy(CellPosition.Y() / CellPosition.R());
154 CellLab.SetPz(CellPosition.Z() / CellPosition.R());
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 ");
207 double EventTiming = -9999.;
208 if (ntrgArray > 0) {EventTiming = trgArray[0]->getEventTiming();}
209 std::vector<int> selTC;
210 std::vector<int> selTheta;
211 std::vector<float> selE;
212 for (
int ic = 0; ic < eclTrgClusterArray.
getEntries(); ic++) {
213 double tcT = abs(eclTrgClusterArray[ic]->getTimeAve() - EventTiming);
215 int TC = eclTrgClusterArray[ic]->getMaxTCId();
217 selTheta.push_back(TCThetaID[TC - 1]);
218 selE.push_back(eclTrgClusterArray[ic]->getEnergyDep());
230 for (
int itrk = 0; itrk < nTrk3D; itrk++) {
231 double z0 = cdc3DTrkArray[itrk]->getZ0();
232 if (abs(z0) < 10.) {nTrkZ10++;}
233 if (abs(z0) < 25.) {nTrkZ25++;}
234 if (abs(z0) < 35.) {nTrkZ35++;}
243 for (
int itrk = 0; itrk < nTrkNN; itrk++) {
244 double z0 = cdcNNTrkArray[itrk]->getZ0();
246 double omega = 100 * cdcNNTrkArray[itrk]->getOmega();
247 int omega_bin = omega / 0.044;
248 omega = omega_bin * 0.044;
250 double cottheta = cdcNNTrkArray[itrk]->getCotTheta();
252 if (cottheta != 0)theta =
atan(1. / cottheta);
253 int theta_bin = theta / 0.098125;
254 theta = theta_bin * 0.098125;
255 int p = abs(10 * 0.3 * 1.5 / omega / sin(theta));
257 double pt = cdcNNTrkArray[itrk]->getPt();
258 double p_abs = cdcNNTrkArray[itrk]->getPt() / sin(theta);
259 B2DEBUG(20,
"NN momentum " << omega <<
" " << theta * 180 / 3.14 <<
" " << p * 0.1 <<
" " << p_abs <<
" " << pt);
261 if (abs(z0) < 15. && p > 7) {nTrkNNSTT++;}
262 if (abs(z0) < 15. && p > 6) {nTrkNNSTT6++;}
263 if (abs(z0) < 15. && p > 5) {nTrkNNSTT5++;}
264 if (abs(z0) < 15. && p > 4) {nTrkNNSTT4++;}
265 if (abs(z0) < 20.) {nTrkNN20++;}
266 if (abs(z0) < 40.) {nTrkNN40++;}
269 trgInfo->setN3Dfittertrk(nTrk3D);
270 trgInfo->setN3DfittertrkZ10(nTrkZ10);
271 trgInfo->setN3DfittertrkZ25(nTrkZ25);
272 trgInfo->setN3DfittertrkZ35(nTrkZ35);
273 trgInfo->setNNNtrk(nTrkNN);
274 trgInfo->setNNNtrkZ20(nTrkNN20);
275 trgInfo->setNNNtrkZ40(nTrkNN40);
276 trgInfo->setNNNtrkSTT(nTrkNNSTT);
280 int nClust = selTC.size();
289 for (
int ic = 0; ic < nClust; ic++) {
290 if (selE[ic] > 0.3) {n300MeV++;}
291 float thresh = TC1GeV[selTC[ic] - 1];
292 if (selE[ic] > (thresh + thresh)) {
294 if (selTheta[ic] >= 4 && selTheta[ic] <= 14) {n2GeV414++;}
295 if (selTheta[ic] == 2 || selTheta[ic] == 3 || selTheta[ic] == 15 || selTheta[ic] == 16) {n2GeV231516++;}
296 if (selTheta[ic] == 1 || selTheta[ic] == 17) {n2GeV117++;}
298 if (selE[ic] > thresh) {
299 if (selTheta[ic] >= 4 && selTheta[ic] <= 15) {n1GeV415++;}
300 if (selTheta[ic] == 2 || selTheta[ic] == 3 || selTheta[ic] == 16) {n1GeV2316++;}
301 if (selTheta[ic] == 1 || selTheta[ic] == 17) {n1GeV117++;}
304 trgInfo->setNcluster(nClust);
305 trgInfo->setNhigh300cluster(n300MeV);
306 trgInfo->setNhigh1GeVcluster415(n1GeV415);
307 trgInfo->setNhigh1GeVcluster2316(n1GeV2316);
308 trgInfo->setNhigh1GeVcluster117(n1GeV117);
309 trgInfo->setNhigh2GeVcluster(n2GeV);
310 trgInfo->setNhigh2GeVcluster414(n2GeV414);
311 trgInfo->setNhigh2GeVcluster231516(n2GeV231516);
312 trgInfo->setNhigh2GeVcluster117(n2GeV117);
317 int nPhiPairHigh = 0;
322 for (
int i0 = 0; i0 < nClust - 1; i0++) {
323 for (
int i1 = i0 + 1; i1 < nClust; i1++) {
326 float dphi = abs(TCPhiCOM[selTC[i1] - 1] - TCPhiCOM[selTC[i0] - 1]);
327 if (dphi > 180.) {dphi = 360 - dphi;}
328 if (dphi > 170. && selE[i0] > 0.25 && selE[i1] > 0.25) {nPhiPairHigh++;}
329 if (dphi > 170. && (selE[i0] < 0.25 || selE[i1] < 0.25)) {nPhiPairLow++;}
332 float thetaSum = TCThetaCOM[selTC[i0] - 1] + TCThetaCOM[selTC[i1] - 1];
333 if (dphi > 160. && thetaSum > 160. && thetaSum < 200.) {n3DPair++;}
336 if (dphi > 160. && thetaSum > 165. && thetaSum < 190. && selE[i0] > 3.*TC1GeV[selTC[i0] - 1] && selE[i1] > 3.*TC1GeV[selTC[i1] - 1]
337 && (selE[i0] > 4.5 * TC1GeV[selTC[i0] - 1] || selE[i1] > 4.5 * TC1GeV[selTC[i1] - 1])) {
341 bool c0matched =
false;
342 bool c1matched =
false;
343 for (
int itrk = 0; itrk < nTrk3D; itrk++) {
344 double phiTrk = cdc3DTrkArray[itrk]->getPhi0() * radtodeg;
345 double ptTrk = cdc3DTrkArray[itrk]->getTransverseMomentum(1.5);
346 float dphi0 = abs(phiTrk - TCPhiLab[selTC[i0] - 1]);
347 if (dphi0 > 180.) {dphi0 = 360. - dphi0;}
348 float dphi1 = abs(phiTrk - TCPhiLab[selTC[i1] - 1]);
349 if (dphi1 > 180.) {dphi1 = 360. - dphi1;}
350 if (ptTrk > 1. && dphi0 < 15.) {c0matched =
true;}
351 if (ptTrk > 1. && dphi1 < 15.) {c1matched =
true;}
353 if (c0matched && c1matched) {nTrkBhabha++;}
358 trgInfo->setBhabhaVeto(nTrkBhabha);
359 trgInfo->seteclBhabhaVeto(nECLBhabha);
360 trgInfo->setPairHigh(nPhiPairHigh);
361 trgInfo->setPairLow(nPhiPairLow);
362 trgInfo->set3DPair(n3DPair);
368 int nSameHem1Trk = 0;
371 double phiTrk = cdc3DTrkArray[0]->getPhi0() * radtodeg;
372 double cotTrk = cdc3DTrkArray[0]->getCotTheta();
373 for (
int i0 = 0; i0 < nClust; i0++) {
374 float dphi = abs(phiTrk - TCPhiLab[selTC[i0] - 1]);
375 if (dphi > 180.) {dphi = 360. - dphi;}
376 float dCot = cotTrk - TCcotThetaLab[selTC[i0] - 1];
377 if (dphi > 80.) {nOppHem1Trk++;}
378 if (dphi < 80. && (dCot < -0.8 || dCot > 0.6)) {nSameHem1Trk++;}
382 trgInfo->setNSameHem1Trk(nSameHem1Trk);
383 trgInfo->setNOppHem1Trk(nOppHem1Trk);
387 int Trk_b2b_1to3 = 0;
388 int Trk_b2b_1to5 = 0;
389 int Trk_b2b_1to7 = 0;
390 int Trk_b2b_1to9 = 0;
393 for (
int itrk = 0; itrk < cdc2DTrkArray.
getEntries(); itrk++) {
395 int phi_i_itrk = (int)((cdc2DTrkArray[itrk]->getPhi0()) * (180 / M_PI) / 10);
397 for (
int jtrk = 0; jtrk < cdc2DTrkArray.
getEntries(); jtrk++) {
398 if (itrk <= jtrk)
continue;
400 int phi_i_jtrk = (int)((cdc2DTrkArray[jtrk]->getPhi0()) * (180 / M_PI) / 10);
401 if (abs(phi_i_itrk - phi_i_jtrk) >= 17 && abs(phi_i_itrk - phi_i_jtrk) <= 19) {Trk_b2b_1to3 = 1;}
402 if (abs(phi_i_itrk - phi_i_jtrk) >= 16 && abs(phi_i_itrk - phi_i_jtrk) <= 20) {Trk_b2b_1to5 = 1;}
403 if (abs(phi_i_itrk - phi_i_jtrk) >= 15 && abs(phi_i_itrk - phi_i_jtrk) <= 21) {Trk_b2b_1to7 = 1;}
404 if (abs(phi_i_itrk - phi_i_jtrk) >= 14 && abs(phi_i_itrk - phi_i_jtrk) <= 22) {Trk_b2b_1to9 = 1;}
405 if (abs(phi_i_itrk - phi_i_jtrk) >= 9 && abs(phi_i_itrk - phi_i_jtrk) <= 27) {Trk_open90 = 1;}
406 if (abs(phi_i_itrk - phi_i_jtrk) >= 3 && abs(phi_i_itrk - phi_i_jtrk) <= 33) {Trk_open30 = 1;}
409 trgInfo->setTrk_b2b_1to3(Trk_b2b_1to3);
410 trgInfo->setTrk_b2b_1to5(Trk_b2b_1to5);
411 trgInfo->setTrk_b2b_1to7(Trk_b2b_1to7);
412 trgInfo->setTrk_b2b_1to9(Trk_b2b_1to9);
413 trgInfo->setTrk_open90(Trk_open90);
414 trgInfo->setTrk_open30(Trk_open30);
418 int cluster_b2b_1to3 = 0;
419 int cluster_b2b_1to5 = 0;
420 int cluster_b2b_1to7 = 0;
421 int cluster_b2b_1to9 = 0;
422 for (
int iclu = 0; iclu < eclTrgClusterArray.
getEntries(); iclu++) {
424 double x_iclu = eclTrgClusterArray[iclu]->getPositionX();
425 double y_iclu = eclTrgClusterArray[iclu]->getPositionY();
428 if (x_iclu >= 0 && y_iclu >= 0) {phi_iclu = (int)(
atan(y_iclu / x_iclu) * (180.0 / M_PI) / 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) + 180.0) / 10);}
431 else if (x_iclu >= 0 && y_iclu < 0) {phi_iclu = (int)((
atan(y_iclu / x_iclu) * (180.0 / M_PI) + 360.0) / 10);}
433 for (
int jclu = 0; jclu < eclTrgClusterArray.
getEntries(); jclu++) {
434 if (iclu <= jclu)
continue;
436 double x_jclu = eclTrgClusterArray[jclu]->getPositionX();
437 double y_jclu = eclTrgClusterArray[jclu]->getPositionY();
440 if (x_jclu >= 0 && y_jclu >= 0) {phi_jclu = (int)(
atan(y_jclu / x_jclu) * (180.0 / M_PI) / 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) + 180.0) / 10);}
443 else if (x_jclu >= 0 && y_jclu < 0) {phi_jclu = (int)((
atan(y_jclu / x_jclu) * (180.0 / M_PI) + 360.0) / 10);}
445 if (abs(phi_iclu - phi_jclu) >= 17 && abs(phi_iclu - phi_jclu) <= 19) {cluster_b2b_1to3 = 1;}
446 if (abs(phi_iclu - phi_jclu) >= 16 && abs(phi_iclu - phi_jclu) <= 20) {cluster_b2b_1to5 = 1;}
447 if (abs(phi_iclu - phi_jclu) >= 15 && abs(phi_iclu - phi_jclu) <= 21) {cluster_b2b_1to7 = 1;}
448 if (abs(phi_iclu - phi_jclu) >= 14 && abs(phi_iclu - phi_jclu) <= 22) {cluster_b2b_1to9 = 1;}
451 trgInfo->setcluster_b2b_1to3(cluster_b2b_1to3);
452 trgInfo->setcluster_b2b_1to5(cluster_b2b_1to5);
453 trgInfo->setcluster_b2b_1to7(cluster_b2b_1to7);
454 trgInfo->setcluster_b2b_1to9(cluster_b2b_1to9);
460 int eed = 0, fed = 0;
461 if (cdc2DTrkArray.
getEntries() == 2 && trackphimatch.
getEntries() == 2 && cluster_b2b_1to5 == 1) {eed = 1;}
462 if (cdc2DTrkArray.
getEntries() == 1 && trackphimatch.
getEntries() == 1 && cluster_b2b_1to5 == 1) {fed = 1;}
463 trgInfo->seteed(eed);
464 trgInfo->setfed(fed);
468 int Trkcluster_b2b_1to3 = 0;
469 int Trkcluster_b2b_1to5 = 0;
470 int Trkcluster_b2b_1to7 = 0;
471 int Trkcluster_b2b_1to9 = 0;
472 for (
int itrk = 0; itrk < cdc2DTrkArray.
getEntries(); itrk++) {
473 double _r = 1.0 / cdc2DTrkArray[itrk]->getOmega() ;
474 double _phi = cdc2DTrkArray[itrk]->getPhi0() ;
475 double phi_p = acos(126.0 / (2 * fabs(_r)));
477 if (_r > 0) {charge = 1;}
478 else if (_r < 0) {charge = -1;}
481 double phi_CDC = 0.0;
483 phi_CDC = _phi + phi_p - 0.5 * M_PI;
484 }
else if (charge == -1) {
485 phi_CDC = _phi - phi_p + 0.5 * M_PI;
490 if (phi_CDC > 2 * M_PI) {phi_CDC = phi_CDC - 2 * M_PI;}
491 else if (phi_CDC < 0) {phi_CDC = phi_CDC + 2 * M_PI;}
492 int phi_itrk = (int)(phi_CDC * (180.0 / M_PI) / 10);
494 for (
int jclu = 0; jclu < eclTrgClusterArray.
getEntries(); jclu++) {
496 double x_jclu = eclTrgClusterArray[jclu]->getPositionX();
497 double y_jclu = eclTrgClusterArray[jclu]->getPositionY();
500 if (x_jclu >= 0 && y_jclu >= 0) {phi_jclu = (int)(
atan(y_jclu / x_jclu) * (180.0 / M_PI) / 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) + 180.0) / 10);}
503 else if (x_jclu >= 0 && y_jclu < 0) {phi_jclu = (int)((
atan(y_jclu / x_jclu) * (180.0 / M_PI) + 360.0) / 10);}
505 if (abs(phi_itrk - phi_jclu) >= 17 && abs(phi_itrk - phi_jclu) <= 19) {Trkcluster_b2b_1to3 = 1;}
506 if (abs(phi_itrk - phi_jclu) >= 16 && abs(phi_itrk - phi_jclu) <= 20) {Trkcluster_b2b_1to5 = 1;}
507 if (abs(phi_itrk - phi_jclu) >= 15 && abs(phi_itrk - phi_jclu) <= 21) {Trkcluster_b2b_1to7 = 1;}
508 if (abs(phi_itrk - phi_jclu) >= 14 && abs(phi_itrk - phi_jclu) <= 22) {Trkcluster_b2b_1to9 = 1;}
512 trgInfo->setTrkcluster_b2b_1to3(Trkcluster_b2b_1to3);
513 trgInfo->setTrkcluster_b2b_1to5(Trkcluster_b2b_1to5);
514 trgInfo->setTrkcluster_b2b_1to7(Trkcluster_b2b_1to7);
515 trgInfo->setTrkcluster_b2b_1to9(Trkcluster_b2b_1to9);
521 if (cdc2DTrkArray.
getEntries() == 1 && Trkcluster_b2b_1to5 == 1) {fp = 1;}
525 if (trackphimatch.
getEntries() == 2 && Trk_b2b_1to5 == 1) {eeb = 1;}
526 trgInfo->seteeb(eeb);
529 if (cdc2DTrkArray.
getEntries() == 1 && trackphimatch.
getEntries() == 1 && Trkcluster_b2b_1to5 == 1) {fep = 1;}
530 trgInfo->setfep(fep);
537 int ECLtoGDL[4] = {0, 0, 0, 0};
539 ECLtoGDL[0] = trgArray[0]->getECLtoGDL(0);
540 ECLtoGDL[1] = trgArray[0]->getECLtoGDL(1);
541 ECLtoGDL[2] = trgArray[0]->getECLtoGDL(2);
542 ECLtoGDL[3] = trgArray[0]->getECLtoGDL(3);
546 bool elow = (ECLtoGDL[1] & (1 << (47 - 32 * 1))) != 0;
548 bool ehigh = (ECLtoGDL[1] & (1 << (48 - 32 * 1))) != 0;
550 bool elum = (ECLtoGDL[1] & (1 << (49 - 32 * 1))) != 0;
552 bool ecl_bha = (ECLtoGDL[0] & (1 << (19 - 32 * 0))) != 0;
554 bool bha_type0 = (ECLtoGDL[0] & (1 << (20 - 32 * 0))) != 0;
556 bool bha_type1 = (ECLtoGDL[0] & (1 << (21 - 32 * 0))) != 0;
558 bool bha_type2 = (ECLtoGDL[0] & (1 << (22 - 32 * 0))) != 0;
560 bool bha_type3 = (ECLtoGDL[0] & (1 << (23 - 32 * 0))) != 0;
562 bool bha_type4 = (ECLtoGDL[0] & (1 << (24 - 32 * 0))) != 0;
564 bool bha_type5 = (ECLtoGDL[0] & (1 << (25 - 32 * 0))) != 0;
566 bool bha_type6 = (ECLtoGDL[0] & (1 << (26 - 32 * 0))) != 0;
568 bool bha_type7 = (ECLtoGDL[0] & (1 << (27 - 32 * 0))) != 0;
570 bool bha_type8 = (ECLtoGDL[0] & (1 << (28 - 32 * 0))) != 0;
572 bool bha_type9 = (ECLtoGDL[0] & (1 << (29 - 32 * 0))) != 0;
574 bool bha_type10 = (ECLtoGDL[0] & (1 << (30 - 32 * 0))) != 0;
576 bool bha_type11 = (ECLtoGDL[0] & (1u << (31 - 32 * 0))) != 0;
578 bool bha_type12 = (ECLtoGDL[1] & (1 << (32 - 32 * 1))) != 0;
580 bool bha_type13 = (ECLtoGDL[1] & (1 << (33 - 32 * 1))) != 0;
582 bool nclst_0 = (eclTrgClusterArray.
getEntries() & (1 << 0)) != 0;
583 bool nclst_1 = (eclTrgClusterArray.
getEntries() & (1 << 1)) != 0;
584 bool nclst_2 = (eclTrgClusterArray.
getEntries() & (1 << 2)) != 0;
585 bool nclst_3 = (eclTrgClusterArray.
getEntries() & (1 << 3)) != 0;
588 bool ecl_bg_0 = (ECLtoGDL[1] & (1 << (57 - 32 * 1))) != 0;
590 bool ecl_bg_1 = (ECLtoGDL[1] & (1 << (58 - 32 * 1))) != 0;
592 bool ecl_bg_2 = (ECLtoGDL[1] & (1 << (59 - 32 * 1))) != 0;
594 bool ecl_active = ntrgArray > 0;
597 bool ecl_timing_fwd = (ECLtoGDL[0] & (1 << (15 - 32 * 0))) != 0;
599 bool ecl_timing_brl = (ECLtoGDL[0] & (1 << (16 - 32 * 0))) != 0;
601 bool ecl_timing_bwd = (ECLtoGDL[0] & (1 << (17 - 32 * 0))) != 0;
603 bool ecl_phys = (ECLtoGDL[0] & (1 << (18 - 32 * 0))) != 0;
605 bool ecl_oflo = (ECLtoGDL[1] & (1 << (60 - 32 * 1))) != 0;
607 bool ecl_3dbha = (ECLtoGDL[1] & (1 << (61 - 32 * 1))) != 0;
609 bool ecl_lml_0 = (ECLtoGDL[1] & (1 << (62 - 32 * 1))) != 0;
611 bool ecl_lml_1 = (ECLtoGDL[1] & (1u << (63 - 32 * 1))) != 0;
613 bool ecl_lml_2 = (ECLtoGDL[2] & (1 << (64 - 32 * 2))) != 0;
615 bool ecl_lml_3 = (ECLtoGDL[2] & (1 << (65 - 32 * 2))) != 0;
617 bool ecl_lml_4 = (ECLtoGDL[2] & (1 << (66 - 32 * 2))) != 0;
619 bool ecl_lml_5 = (ECLtoGDL[2] & (1 << (67 - 32 * 2))) != 0;
621 bool ecl_lml_6 = (ECLtoGDL[2] & (1 << (68 - 32 * 2))) != 0;
623 bool ecl_lml_7 = (ECLtoGDL[2] & (1 << (69 - 32 * 2))) != 0;
625 bool ecl_lml_8 = (ECLtoGDL[2] & (1 << (70 - 32 * 2))) != 0;
627 bool ecl_lml_9 = (ECLtoGDL[2] & (1 << (71 - 32 * 2))) != 0;
629 bool ecl_lml_10 = (ECLtoGDL[2] & (1 << (72 - 32 * 2))) != 0;
631 bool ecl_lml_11 = (ECLtoGDL[2] & (1 << (73 - 32 * 2))) != 0;
633 bool ecl_lml_12 = (ECLtoGDL[2] & (1 << (78 - 32 * 2))) != 0;
635 bool ecl_lml_13 = (ECLtoGDL[2] & (1 << (79 - 32 * 2))) != 0;
637 bool ecl_mumu = (ECLtoGDL[2] & (1 << (75 - 32 * 2))) != 0;
639 bool ecl_bst = (ECLtoGDL[2] & (1 << (77 - 32 * 2))) != 0;
641 bool ecl_bhapur = (ECLtoGDL[2] & (1 << (74 - 32 * 2))) != 0;
643 bool bha_intrk = (ECLtoGDL[2] & (1 << (86 - 32 * 2))) != 0;
645 bool bha_theta_0 = (ECLtoGDL[2] & (1 << (87 - 32 * 2))) != 0;
646 bool bha_theta_1 = (ECLtoGDL[2] & (1 << (88 - 32 * 2))) != 0;
648 bool ecltaub2b = (ECLtoGDL[2] & (1 << (89 - 32 * 2))) != 0;
649 bool ecltaub2b2 = (ECLtoGDL[2] & (1 << (93 - 32 * 2))) != 0;
650 bool ecltaub2b3 = (ECLtoGDL[2] & (1 << (94 - 32 * 2))) != 0;
652 bool ehigh1 = (ECLtoGDL[2] & (1 << (90 - 32 * 2))) != 0;
653 bool ehigh2 = (ECLtoGDL[2] & (1 << (91 - 32 * 2))) != 0;
654 bool ehigh3 = (ECLtoGDL[2] & (1 << (92 - 32 * 2))) != 0;
655 bool ehigh4 = (ECLtoGDL[2] & (1u << (95 - 32 * 2))) != 0;
660 bool cdc_active =
false;
661 if (m_eventTime->hasBinnedEventT0(Const::CDC)) {
662 if (m_eventTime->getBinnedEventT0(Const::CDC) != 0) { cdc_active =
true; }
666 int n_klm_barrel = klmtrgsummary->getBKLM_n_trg_sectors();
667 bool klm_hit = n_klm_barrel > 0;
668 bool klm_0 = (n_klm_barrel & (1 << 0)) != 0;
669 bool klm_1 = (n_klm_barrel & (1 << 1)) != 0;
670 bool klm_2 = (n_klm_barrel & (1 << 2)) != 0;
671 int n_eklm_barrel = klmtrgsummary->getEKLM_n_trg_sectors();
672 bool eklm_hit = n_eklm_barrel > 0;
673 bool eklm_0 = (n_eklm_barrel & (1 << 0)) != 0;
674 bool eklm_1 = (n_eklm_barrel & (1 << 1)) != 0;
675 bool eklm_2 = (n_eklm_barrel & (1 << 2)) != 0;
676 int klmb2b = klmtrgsummary->getBKLM_back_to_back_flag();
677 int eklmb2b = klmtrgsummary->getEKLM_back_to_back_flag();
680 bool cdcklm_0 = (trackKLMmatch.
getEntries() == 1);
681 bool cdcklm_1 = (trackKLMmatch.
getEntries() > 1);
682 bool cdcklm_2 = (trackKLMmatch.
getEntries() == 3);
683 bool cdcklm_3 = (trackKLMmatch.
getEntries() > 3);
684 int n_seklm = trgInfo->getNsklm();
687 int n_ieklm = trgInfo->getNiklm();
688 bool ecleklm = (trgInfo->getNeecleklm() > 0);
690 bool cdcecl_0 = (trackphimatch.
getEntries() == 1);
691 bool cdcecl_1 = (trackphimatch.
getEntries() == 2);
692 bool cdcecl_2 = (trackphimatch.
getEntries() == 3);
693 bool cdcecl_3 = (trackphimatch.
getEntries() > 3);
694 bool trkbha1 = ecl_3dbha && (trackphimatch.
getEntries() == 1);
695 bool trkbha2 = ecl_3dbha && (trackphimatch.
getEntries() == 2);
700 for (
int i = 0; i < trackphimatch.
getEntries(); i++) {
701 if (trackphimatch[i]->get_e() >= 2.0) {n_c2gev++;}
704 bool c2gev_0 = (n_c2gev == 1);
705 bool c2gev_1 = (n_c2gev == 2);
706 bool c2gev_2 = (n_c2gev == 3);
707 bool c2gev_3 = (n_c2gev > 3);
709 int N_clst1 = 0, N_clst2 = 0;
710 for (
int i = 0 ; i < grlphoton.
getEntries() ; i++) {
711 if (grlphoton[i]->get_e() > 1.0) { N_clst1++; }
712 if (grlphoton[i]->get_e() > 2.0) { N_clst2++; }
715 bool nclst1_0 = (N_clst1 == 1);
716 bool nclst1_1 = (N_clst1 == 2);
717 bool nclst1_2 = (N_clst1 == 3);
718 bool nclst1_3 = (N_clst1 > 3);
720 bool nclst2_0 = (N_clst2 == 1);
721 bool nclst2_1 = (N_clst2 == 2);
722 bool nclst2_2 = (N_clst2 == 3);
723 bool nclst2_3 = (N_clst2 > 3);
725 int N_ST = trgInfo->getNshorttrk();
726 int N_ST_fwd = trgInfo->getNshorttrk_fwd();
727 int N_ST_bwd = trgInfo->getNshorttrk_bwd();
728 int s2s3 = trgInfo->gets2s3();
729 int s2s5 = trgInfo->gets2s5();
730 int s2so = trgInfo->gets2so();
731 int s2f3 = trgInfo->gets2f3();
732 int s2f5 = trgInfo->gets2f5();
733 int s2fo = trgInfo->gets2fo();
734 int s2f30 = trgInfo->gets2f30();
735 int s2s30 = trgInfo->gets2s30();
736 int bwdsb = trgInfo->getbwdsb();
737 int bwdnb = trgInfo->getbwdnb();
738 int fwdsb = trgInfo->getfwdsb();
739 int fwdnb = trgInfo->getfwdnb();
740 int brlfb = trgInfo->getbrlfb();
741 int brlnb = trgInfo->getbrlnb();
742 int N_IT = trgInfo->getNinnertrk();
743 int i2fo = trgInfo->geti2fo();
744 int i2io = trgInfo->geti2io();
745 int n_secl = trgInfo->getNsecl();
746 int n_iecl = trgInfo->getNiecl();
748 bool ecltaunn = trgInfo->getTauNN();
767 for (
int i = 0; i < N_InputBits; i++) {
771 if (bitname ==
"t3_0") {bit = nTrkZ35 == 1;}
772 else if (bitname ==
"t3_1") {bit = nTrkZ35 == 2;}
773 else if (bitname ==
"t3_2") {bit = nTrkZ35 == 3;}
774 else if (bitname ==
"t3_3") {bit = nTrkZ35 > 3;}
775 else if (bitname ==
"ty_0") {bit = nTrkNN20 == 1;}
776 else if (bitname ==
"ty_1") {bit = nTrkNN20 == 2;}
777 else if (bitname ==
"ty_2") {bit = nTrkNN20 == 3;}
778 else if (bitname ==
"ty_3") {bit = nTrkNN20 > 3;}
779 else if (bitname ==
"typ") {bit = nTrkNNSTT > 0;}
780 else if (bitname ==
"typ6") {bit = nTrkNNSTT6 > 0;}
781 else if (bitname ==
"typ5") {bit = nTrkNNSTT5 > 0;}
782 else if (bitname ==
"typ4") {bit = nTrkNNSTT4 > 0;}
783 else if (bitname ==
"t2_0") {bit = nTrk2D == 1;}
784 else if (bitname ==
"t2_1") {bit = nTrk2D == 2;}
785 else if (bitname ==
"t2_2") {bit = nTrk2D == 3;}
786 else if (bitname ==
"t2_3") {bit = nTrk2D > 3;}
787 else if (bitname ==
"ts_0") {bit = N_ST == 1;}
788 else if (bitname ==
"ts_1") {bit = N_ST == 2;}
789 else if (bitname ==
"ts_2") {bit = N_ST == 3;}
790 else if (bitname ==
"ts_3") {bit = N_ST > 3;}
791 else if (bitname ==
"fwd_s") {bit = N_ST_fwd > 0;}
792 else if (bitname ==
"bwd_s") {bit = N_ST_bwd > 0;}
793 else if (bitname ==
"cdc_open90") {bit = Trk_open90 == 1;}
794 else if (bitname ==
"f2f30") {bit = Trk_open30 == 1;}
795 else if (bitname ==
"cdc_active") {bit = cdc_active;}
796 else if (bitname ==
"cdc_b2b3") {bit = Trk_b2b_1to3;}
797 else if (bitname ==
"cdc_b2b5") {bit = Trk_b2b_1to5;}
798 else if (bitname ==
"cdc_b2b7") {bit = Trk_b2b_1to7;}
799 else if (bitname ==
"cdc_b2b9") {bit = Trk_b2b_1to9;}
800 else if (bitname ==
"s2s3") {bit = s2s3 > 0;}
801 else if (bitname ==
"s2s5") {bit = s2s5 > 0;}
802 else if (bitname ==
"s2so") {bit = s2so > 0;}
803 else if (bitname ==
"s2f3") {bit = s2f3 > 0;}
804 else if (bitname ==
"s2f5") {bit = s2f5 > 0;}
805 else if (bitname ==
"s2fo") {bit = s2fo > 0;}
806 else if (bitname ==
"s2f30") {bit = s2f30;}
807 else if (bitname ==
"s2s30") {bit = s2s30;}
808 else if (bitname ==
"bwdsb") {bit = bwdsb > 0;}
809 else if (bitname ==
"bwdnb") {bit = bwdnb > 0;}
810 else if (bitname ==
"fwdsb") {bit = fwdsb > 0;}
811 else if (bitname ==
"fwdnb") {bit = fwdnb > 0;}
812 else if (bitname ==
"brlfb1") {bit = brlfb == 1;}
813 else if (bitname ==
"brlfb2") {bit = brlfb == 2;}
814 else if (bitname ==
"brlnb1") {bit = brlnb == 1;}
815 else if (bitname ==
"brlnb2") {bit = brlnb == 2;}
816 else if (bitname ==
"seklm_0") {bit = n_seklm == 1;}
817 else if (bitname ==
"seklm_1") {bit = n_seklm > 1;}
818 else if (bitname ==
"ieklm") {bit = n_ieklm > 0;}
819 else if (bitname ==
"secl") {bit = n_secl > 0;}
820 else if (bitname ==
"iecl") {bit = n_iecl > 0;}
821 else if (bitname ==
"iecl_0") {bit = n_iecl == 1;}
822 else if (bitname ==
"iecl_1") {bit = n_iecl > 1;}
823 else if (bitname ==
"ti") {bit = N_IT > 0;}
824 else if (bitname ==
"i2fo") {bit = i2fo > 0;}
825 else if (bitname ==
"i2io") {bit = i2io > 0;}
826 else if (bitname ==
"ehigh") {bit = ehigh;}
827 else if (bitname ==
"elow") {bit = elow;}
828 else if (bitname ==
"elum") {bit = elum;}
829 else if (bitname ==
"ecl_bha") {bit = ecl_bha;}
830 else if (bitname ==
"bha_type_0") {bit = bha_type0;}
831 else if (bitname ==
"bha_type_1") {bit = bha_type1;}
832 else if (bitname ==
"bha_type_2") {bit = bha_type2;}
833 else if (bitname ==
"bha_type_3") {bit = bha_type3;}
834 else if (bitname ==
"bha_type_4") {bit = bha_type4;}
835 else if (bitname ==
"bha_type_5") {bit = bha_type5;}
836 else if (bitname ==
"bha_type_6") {bit = bha_type6;}
837 else if (bitname ==
"bha_type_7") {bit = bha_type7;}
838 else if (bitname ==
"bha_type_8") {bit = bha_type8;}
839 else if (bitname ==
"bha_type_9") {bit = bha_type9;}
840 else if (bitname ==
"bha_type_10") {bit = bha_type10;}
841 else if (bitname ==
"bha_type_11") {bit = bha_type11;}
842 else if (bitname ==
"bha_type_12") {bit = bha_type12;}
843 else if (bitname ==
"bha_type_13") {bit = bha_type13;}
844 else if (bitname ==
"clst_0") {bit = nclst_0;}
845 else if (bitname ==
"clst_1") {bit = nclst_1;}
846 else if (bitname ==
"clst_2") {bit = nclst_2;}
847 else if (bitname ==
"clst_3") {bit = nclst_3;}
848 else if (bitname ==
"ecl_bg_0") {bit = ecl_bg_0;}
849 else if (bitname ==
"ecl_bg_1") {bit = ecl_bg_1;}
850 else if (bitname ==
"ecl_bg_2") {bit = ecl_bg_2;}
851 else if (bitname ==
"ecl_active") {bit = ecl_active;}
852 else if (bitname ==
"ecl_timing_fwd") {bit = ecl_timing_fwd;}
853 else if (bitname ==
"ecl_timing_brl") {bit = ecl_timing_brl;}
854 else if (bitname ==
"ecl_timing_bwd") {bit = ecl_timing_bwd;}
855 else if (bitname ==
"ecl_phys") {bit = ecl_phys;}
856 else if (bitname ==
"ecl_oflo") {bit = ecl_oflo;}
857 else if (bitname ==
"ecl_3dbha") {bit = ecl_3dbha;}
858 else if (bitname ==
"bha_veto") {bit = ecl_3dbha;}
859 else if (bitname ==
"ecl_lml_0") {bit = ecl_lml_0;}
860 else if (bitname ==
"ecl_lml_1") {bit = ecl_lml_1;}
861 else if (bitname ==
"ecl_lml_2") {bit = ecl_lml_2;}
862 else if (bitname ==
"ecl_lml_3") {bit = ecl_lml_3;}
863 else if (bitname ==
"ecl_lml_4") {bit = ecl_lml_4;}
864 else if (bitname ==
"ecl_lml_5") {bit = ecl_lml_5;}
865 else if (bitname ==
"ecl_lml_6") {bit = ecl_lml_6;}
866 else if (bitname ==
"ecl_lml_7") {bit = ecl_lml_7;}
867 else if (bitname ==
"ecl_lml_8") {bit = ecl_lml_8;}
868 else if (bitname ==
"ecl_lml_9") {bit = ecl_lml_9;}
869 else if (bitname ==
"ecl_lml_10") {bit = ecl_lml_10;}
870 else if (bitname ==
"ecl_lml_11") {bit = ecl_lml_11;}
871 else if (bitname ==
"ecl_lml_12") {bit = ecl_lml_12;}
872 else if (bitname ==
"ecl_lml_13") {bit = ecl_lml_13;}
873 else if (bitname ==
"ecl_mumu") {bit = ecl_mumu;}
874 else if (bitname ==
"ecl_bst") {bit = ecl_bst;}
875 else if (bitname ==
"ecl_taub2b") {bit = ecltaub2b;}
876 else if (bitname ==
"ecl_taub2b2") {bit = ecltaub2b2;}
877 else if (bitname ==
"ecl_taub2b3") {bit = ecltaub2b3;}
878 else if (bitname ==
"ehigh1") {bit = ehigh1;}
879 else if (bitname ==
"ehigh2") {bit = ehigh2;}
880 else if (bitname ==
"ehigh3") {bit = ehigh3;}
881 else if (bitname ==
"ehigh4") {bit = ehigh4;}
883 else if (bitname ==
"klm_hit") {bit = klm_hit;}
884 else if (bitname ==
"klm_0") {bit = klm_0;}
885 else if (bitname ==
"klm_1") {bit = klm_1;}
886 else if (bitname ==
"klm_2") {bit = klm_2;}
887 else if (bitname ==
"klmb2b") {bit = klmb2b;}
888 else if (bitname ==
"eklm_hit") {bit = eklm_hit;}
889 else if (bitname ==
"eklm_0") {bit = eklm_0;}
890 else if (bitname ==
"eklm_1") {bit = eklm_1;}
891 else if (bitname ==
"eklm_2") {bit = eklm_2;}
892 else if (bitname ==
"eklmb2b") {bit = eklmb2b;}
893 else if (bitname ==
"ecleklm") {bit = ecleklm;}
894 else if (bitname ==
"revo") {bit =
false;}
895 else if (bitname ==
"her_kick") {bit =
false;}
896 else if (bitname ==
"ler_kick") {bit =
false;}
897 else if (bitname ==
"bha_delay") {bit =
false;}
898 else if (bitname ==
"pseud_rand") {bit =
false;}
899 else if (bitname ==
"plsin") {bit =
false;}
900 else if (bitname ==
"poissonin") {bit =
false;}
901 else if (bitname ==
"periodin") {bit =
false;}
902 else if (bitname ==
"veto") {bit =
false;}
903 else if (bitname ==
"samhem") {bit = nSameHem1Trk > 0;}
904 else if (bitname ==
"opohem") {bit = nOppHem1Trk > 0;}
905 else if (bitname ==
"n1gev_0") {bit = nclst1_0;}
906 else if (bitname ==
"n1gev_1") {bit = nclst1_1;}
907 else if (bitname ==
"n1gev_2") {bit = nclst1_2;}
908 else if (bitname ==
"n1gev_3") {bit = nclst1_3;}
909 else if (bitname ==
"n2gev_0") {bit = nclst2_0;}
910 else if (bitname ==
"n2gev_1") {bit = nclst2_1;}
911 else if (bitname ==
"n2gev_2") {bit = nclst2_2;}
912 else if (bitname ==
"n2gev_3") {bit = nclst2_3;}
913 else if (bitname ==
"cdcecl_0") {bit = cdcecl_0;}
914 else if (bitname ==
"cdcecl_1") {bit = cdcecl_1;}
915 else if (bitname ==
"cdcecl_2") {bit = cdcecl_2;}
916 else if (bitname ==
"cdcecl_3") {bit = cdcecl_3;}
917 else if (bitname ==
"c2gev_0") {bit = c2gev_0;}
918 else if (bitname ==
"c2gev_1") {bit = c2gev_1;}
919 else if (bitname ==
"c2gev_2") {bit = c2gev_2;}
920 else if (bitname ==
"c2gev_3") {bit = c2gev_3;}
921 else if (bitname ==
"cdcklm_0") {bit = cdcklm_0;}
922 else if (bitname ==
"cdcklm_1") {bit = cdcklm_1;}
923 else if (bitname ==
"cdcklm_2") {bit = cdcklm_2;}
924 else if (bitname ==
"cdcklm_3") {bit = cdcklm_3;}
925 else if (bitname ==
"d3") {bit = cluster_b2b_1to3 > 0;}
926 else if (bitname ==
"d5") {bit = cluster_b2b_1to5 > 0;}
927 else if (bitname ==
"d7") {bit = cluster_b2b_1to7 > 0;}
928 else if (bitname ==
"d9") {bit = cluster_b2b_1to9 > 0;}
929 else if (bitname ==
"p3") {bit = Trkcluster_b2b_1to3 > 0;}
930 else if (bitname ==
"p5") {bit = Trkcluster_b2b_1to5 > 0;}
931 else if (bitname ==
"p7") {bit = Trkcluster_b2b_1to7 > 0;}
932 else if (bitname ==
"p9") {bit = Trkcluster_b2b_1to9 > 0;}
933 else if (bitname ==
"trkfit") {bit =
false;}
934 else if (bitname ==
"injv") {bit =
false;}
935 else if (bitname ==
"nimin0") {bit =
false;}
936 else if (bitname ==
"nimin1") {bit =
false;}
937 else if (bitname ==
"track") {bit = nTrk2D > 0;}
938 else if (bitname ==
"bha_intrk") {bit = bha_intrk;}
939 else if (bitname ==
"bha_theta_0") {bit = bha_theta_0;}
940 else if (bitname ==
"bha_theta_1") {bit = bha_theta_1;}
941 else if (bitname ==
"ecl_bhapur") {bit = ecl_bhapur;}
944 else if (bitname ==
"trkbha1") {bit = trkbha1;}
945 else if (bitname ==
"trkbha2") {bit = trkbha2;}
948 else if (bitname ==
"ta_0") {bit =
false;}
949 else if (bitname ==
"ta_1") {bit =
false;}
950 else if (bitname ==
"ta_2") {bit =
false;}
951 else if (bitname ==
"ta_3") {bit =
false;}
952 else if (bitname ==
"trkflt") {bit =
false;}
953 else if (bitname ==
"tsf0b2b") {bit =
false;}
954 else if (bitname ==
"tsf1b2b") {bit =
false;}
955 else if (bitname ==
"tsf2b2b") {bit =
false;}
956 else if (bitname ==
"grlgg1") {bit =
false;}
957 else if (bitname ==
"grlgg2") {bit =
false;}
960 else if (bitname ==
"ecl_bhauni") {bit =
false;}
961 else if (bitname ==
"cdctop_0") {bit =
false;}
962 else if (bitname ==
"cdctop_1") {bit =
false;}
963 else if (bitname ==
"cdctop_2") {bit =
false;}
964 else if (bitname ==
"cdctop_3") {bit =
false;}
965 else if (bitname ==
"top_0") {bit =
false;}
966 else if (bitname ==
"top_1") {bit =
false;}
967 else if (bitname ==
"top_2") {bit =
false;}
968 else if (bitname ==
"top_bb") {bit =
false;}
969 else if (bitname ==
"top_active") {bit =
false;}
972 else if (bitname ==
"itsfb2b") {bit =
false;}
973 else if (bitname ==
"inp156") {bit =
false;}
974 else if (bitname ==
"inp157") {bit =
false;}
975 else if (bitname ==
"inp158") {bit =
false;}
976 else if (bitname ==
"inp159") {bit =
false;}
979 else if (bitname ==
"ecl_taunn") {bit = ecltaunn;}
990 trgInfo->setInputBits(i, bit);
998 B2DEBUG(20,
"TRGGRLProjectsModule ... endRun called ");
1001 B2WARNING(
"Unknown bitname" <<
LogVar(
"bitname", bitname));
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.
std::vector< std::string > m_falsebits
convert the unit of angle from rad to degree
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.
TRGGRLProjectsModule()
Constructor.
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]
ROOT::Math::XYZVector 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
Abstract base class for different kinds of events.