57 #define TRG_SHORT_NAMES
58 #define TRGECL_SHORT_NAMES
60 #include "framework/datastore/StoreArray.h"
61 #include "trg/ecl/TrgEclMaster.h"
62 #include "trg/ecl/TrgEclCluster.h"
64 #include "trg/ecl/dataobjects/TRGECLTrg.h"
65 #include "trg/ecl/dataobjects/TRGECLHit.h"
66 #include "trg/ecl/dataobjects/TRGECLCluster.h"
78 TrgEclMaster::TrgEclMaster():
79 TimeWindow(250.0), OverlapWindow(0.0), _Clustering(1), _Bhabha(0), _EventTiming(1), _NofTopTC(3), _ClusterLimit(6), _Lowmultibit(0),
80 _PrescaleFactor(0), _PrescaleCounter(0), _mumuThreshold(20), _n300MeVCluster(1), _ECLBurstThreshold(200)
114 _2DBhabhaThresholdFWD = {40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 30, 35};
115 _2DBhabhaThresholdBWD = {25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 30, 30};
150 return "TrgEclMaster";
158 return std::string(
"TrgEclMaster 2.1");
216 for (
int ii = 0; ii < trgeclHitArray.
getEntries(); ii++) {
218 TRGECLHit* aTRGECLHit = trgeclHitArray[ii];
219 int iTCID = (aTRGECLHit->
getTCId() - 1);
221 double HitEnergy = aTRGECLHit -> getEnergyDep();
222 double HitBeamBkg = aTRGECLHit -> getBeamBkgTag();
224 TCTiming[iTCID].push_back(HitTiming);
225 TCEnergy[iTCID].push_back(HitEnergy);
236 double fluctuation = ((gRandom ->Uniform(-1, 0))) * 125;
238 double check_window_start;
240 double check_window_end;
243 for (
int iBin = 0 ; iBin < nBin; iBin ++) {
245 check_window_start = iBin * (
TimeWindow / 3) + fluctuation - 4000;
246 WindowStart = check_window_start;
247 check_window_end = check_window_start +
TimeWindow / 3;
256 for (
int iTCId = 0; iTCId < 576; iTCId++) {
257 const int hitsize =
TCTiming[iTCId].size();
258 for (
int ihit = 0; ihit < hitsize; ihit++) {
259 if (
TCTiming[iTCId][ihit] > check_window_start &&
TCTiming[iTCId][ihit] < check_window_end) {
265 if (
HitTCId.size() == 0) {
continue;}
268 for (
int iTCId = 0; iTCId < 576; iTCId++) {
269 const int hitsize =
TCTiming[iTCId].size();
270 for (
int ihit = 0; ihit < hitsize; ihit++) {
271 if (
TCTiming[iTCId][ihit] > WindowStart &&
TCTiming[iTCId][ihit] < WindowEnd) {
281 if (noftchit == 0) {
continue;}
284 double eventtiming = 0;
289 int timingsource =
obj_timing -> GetTimingSource();
294 std::vector<std::vector<double>> thetaringsum;
295 std::vector<double> phiringsum;
298 thetaringsum.clear();
300 thetaringsum.resize(3, std::vector<double>(36, 0));
301 phiringsum.resize(17, 0);
310 for (
int iii = 0; iii <= 16; iii++) {
311 if (iii > 0 && iii < 15) {E_phys += phiringsum[iii];}
312 if (iii < 3) {E_fwd += phiringsum[iii];}
313 if (iii > 2 && iii < 15) {E_br += phiringsum[iii];}
314 if (iii > 14) {E_bwd += phiringsum[iii];}
315 E_total += phiringsum[iii];
317 if (E_total == 0) {
continue;}
318 int ELow, EHigh, ELum;
358 std::vector<double> ClusterTiming;
359 std::vector<double> ClusterEnergy;
360 std::vector<int> MaxTCId;
361 ClusterTiming.clear();
362 ClusterEnergy.clear();
365 for (
int ii = 0; ii < trgeclClusterArray.
getEntries(); ii++) {
369 double clustertiming = aTRGECLCluster -> getTimeAve();
370 TVector3 clusterposition(aTRGECLCluster ->getPositionX(), aTRGECLCluster ->getPositionY(), aTRGECLCluster ->getPositionZ());
371 ClusterTiming.push_back(clustertiming);
372 ClusterEnergy.push_back(clusterenergy);
373 MaxTCId.push_back(maxTCId);
391 std::vector<double> vct_bhabha;
394 int bhabha3D_veto = 0 ;
395 int bhabha3D_sel = 0;
398 bool b_2Dbhabha =
obj_bhabha -> GetBhabha00(phiringsum);
400 if (b_2Dbhabha && (icn < 4)) {bhabha2D = 1;}
401 bool b_3Dbhabha =
obj_bhabha -> GetBhabha01();
402 if (b_3Dbhabha) {bhabha3D_veto = 1;}
403 bool b_3Dbhabha_sel =
obj_bhabha -> GetBhabha02();
404 if (b_3Dbhabha_sel) {bhabha3D_sel = 1;}
406 if (b_mumu) {mumu = 1;}
410 bool boolBeamBkgTag =
false;
412 boolBeamBkgTag =
obj_beambkg -> GetBeamBkg(thetaringsum);
413 if (boolBeamBkgTag) {beambkgtag = 1;}
414 int bhabhaprescale = 0;
428 int Timing = (int)(eventtiming + 0.5);
431 int etot = (int)(E_phys * 1000 + 0.5);
433 if ((etot > 1000 || icn > 3) && !(bhabha2D == 1)) {physics = 1;}
434 std::vector<int> bhabhabit;
436 int bhabhabitsize = vct_bhabha.size();
437 for (
int ibhabha = 0; ibhabha < bhabhabitsize; ibhabha++) {
438 bhabhabit.push_back((
int)vct_bhabha[ibhabha]);
441 int flagoverflow = 0;
442 if (ClusterOverflow > 0) {
446 makeTriggerBit(hit, Timing, 0, timingsource, E_phys, bhabha2D, physics, bhabhabit, icn, beambkgtag, flagoverflow,
447 bhabha3D_veto,
_Lowmultibit, bhabha3D_sel, mumu, bhabhaprescale, E_burst);
453 m_hitEneNum = trgEcltrgArray.
getEntries() - 1;
461 trgEcltrgArray[m_hitEneNum]->setEventId(m_nEvent);
462 trgEcltrgArray[m_hitEneNum]->setPRS01(phiringsum[0]);
463 trgEcltrgArray[m_hitEneNum]->setPRS02(phiringsum[1]);
464 trgEcltrgArray[m_hitEneNum]->setPRS03(phiringsum[2]);
465 trgEcltrgArray[m_hitEneNum]->setPRS04(phiringsum[3]);
466 trgEcltrgArray[m_hitEneNum]->setPRS05(phiringsum[4]);
467 trgEcltrgArray[m_hitEneNum]->setPRS06(phiringsum[5]);
468 trgEcltrgArray[m_hitEneNum]->setPRS07(phiringsum[6]);
469 trgEcltrgArray[m_hitEneNum]->setPRS08(phiringsum[7]);
470 trgEcltrgArray[m_hitEneNum]->setPRS09(phiringsum[8]);
471 trgEcltrgArray[m_hitEneNum]->setPRS10(phiringsum[9]);
472 trgEcltrgArray[m_hitEneNum]->setPRS11(phiringsum[10]);
473 trgEcltrgArray[m_hitEneNum]->setPRS12(phiringsum[11]);
474 trgEcltrgArray[m_hitEneNum]->setPRS13(phiringsum[12]);
475 trgEcltrgArray[m_hitEneNum]->setPRS14(phiringsum[13]);
476 trgEcltrgArray[m_hitEneNum]->setPRS15(phiringsum[14]);
477 trgEcltrgArray[m_hitEneNum]->setPRS16(phiringsum[15]);
478 trgEcltrgArray[m_hitEneNum]->setPRS17(phiringsum[16]);
480 trgEcltrgArray[m_hitEneNum]->setEtot(E_phys);
481 trgEcltrgArray[m_hitEneNum]->setNofTCHit(noftchit);
483 trgEcltrgArray[m_hitEneNum]->setBhabha01(vct_bhabha[0]);
484 trgEcltrgArray[m_hitEneNum]->setBhabha02(vct_bhabha[1]);
485 trgEcltrgArray[m_hitEneNum]->setBhabha03(vct_bhabha[2]);
486 trgEcltrgArray[m_hitEneNum]->setBhabha04(vct_bhabha[3]);
487 trgEcltrgArray[m_hitEneNum]->setBhabha05(vct_bhabha[4]);
488 trgEcltrgArray[m_hitEneNum]->setBhabha06(vct_bhabha[5]);
489 trgEcltrgArray[m_hitEneNum]->setBhabha07(vct_bhabha[6]);
490 trgEcltrgArray[m_hitEneNum]->setBhabha08(vct_bhabha[7]);
491 trgEcltrgArray[m_hitEneNum]->setBhabha09(vct_bhabha[8]);
492 trgEcltrgArray[m_hitEneNum]->setBhabha10(vct_bhabha[9]);
493 trgEcltrgArray[m_hitEneNum]->setBhabha11(vct_bhabha[10]);
494 trgEcltrgArray[m_hitEneNum]->setBhabha12(vct_bhabha[11]);
495 trgEcltrgArray[m_hitEneNum]->setBhabha13(vct_bhabha[12]);
496 trgEcltrgArray[m_hitEneNum]->setBhabha14(vct_bhabha[13]);
497 trgEcltrgArray[m_hitEneNum]->setBhabha15(vct_bhabha[14]);
498 trgEcltrgArray[m_hitEneNum]->setBhabha16(vct_bhabha[15]);
499 trgEcltrgArray[m_hitEneNum]->setBhabha17(vct_bhabha[16]);
500 trgEcltrgArray[m_hitEneNum]->setBhabha18(vct_bhabha[17]);
502 trgEcltrgArray[m_hitEneNum]->setICN(icn);
503 trgEcltrgArray[m_hitEneNum]->setICNFw(icnfwd);
504 trgEcltrgArray[m_hitEneNum]->setICNBr(icnbr);
505 trgEcltrgArray[m_hitEneNum]->setICNBw(icnbwd);
507 trgEcltrgArray[m_hitEneNum]->setECLtoGDL(
_Triggerbit[0], 0);
508 trgEcltrgArray[m_hitEneNum]->setECLtoGDL(
_Triggerbit[1], 1);
509 trgEcltrgArray[m_hitEneNum]->setECLtoGDL(
_Triggerbit[2], 2);
510 trgEcltrgArray[m_hitEneNum]->setECLtoGDL(
_Triggerbit[3], 3);
512 trgEcltrgArray[m_hitEneNum]->setBhabhaVeto(bhabha2D);
513 trgEcltrgArray[m_hitEneNum]->setBeamBkgVeto(beambkgtag);
514 trgEcltrgArray[m_hitEneNum]->setEventTiming(eventtiming);
516 trgEcltrgArray[m_hitEneNum]->setHit(hit);
517 trgEcltrgArray[m_hitEneNum]->setRevoclk(RevoFAM);
518 trgEcltrgArray[m_hitEneNum]->setTimingSource(TimingSource);
519 trgEcltrgArray[m_hitEneNum]->setPhysics(physics) ;
520 trgEcltrgArray[m_hitEneNum]->set2DBhabha(bhabha2D);
521 trgEcltrgArray[m_hitEneNum]->set3DBhabha(bhabha3D_veto);
522 trgEcltrgArray[m_hitEneNum]->set3DBhabhaSel(bhabha3D_sel);
523 trgEcltrgArray[m_hitEneNum]->setmumuBit(mumu);
524 trgEcltrgArray[m_hitEneNum]->setBhabhaPrescaleBit(bhabhaprescale);
527 trgEcltrgArray[m_hitEneNum]->setELow(ELow) ;
528 trgEcltrgArray[m_hitEneNum]->setEHihg(EHigh);
529 trgEcltrgArray[m_hitEneNum]->setELum(ELum) ;
530 trgEcltrgArray[m_hitEneNum]->setClusterOverflow(ClusterOverflow) ;
531 trgEcltrgArray[m_hitEneNum]->setLowMultiBit(
_Lowmultibit);
566 for (
int ii = 0; ii < trgeclHitArray.
getEntries(); ii++) {
568 TRGECLHit* aTRGECLHit = trgeclHitArray[ii];
569 int iTCID = (aTRGECLHit->
getTCId() - 1);
571 double HitEnergy = aTRGECLHit -> getEnergyDep();
572 double HitBeamBkg = aTRGECLHit -> getBeamBkgTag();
574 TCTiming[iTCID].push_back(HitTiming);
575 TCEnergy[iTCID].push_back(HitEnergy);
582 double WindowStart = 0;
583 double WindowEnd = 0;
584 double fluctuation = ((gRandom ->Uniform(-1, 0))) * 125;
586 int startBin = nBin / 2 - 1;
588 int endBin = nBin / 2 + 1;
600 for (
int iBin = startBin ; iBin <= endBin; iBin ++) {
602 if (iBin == 0) {WindowStart = - 4000 + fluctuation;}
607 for (
int iTCId = 0; iTCId < 576; iTCId++) {
608 const int hitsize =
TCTiming[iTCId].size();
609 for (
int ihit = 0; ihit < hitsize; ihit++) {
610 if (
TCTiming[iTCId][ihit] > WindowStart &&
TCTiming[iTCId][ihit] < WindowEnd) {
615 if (totalE == 0) {
continue;}
625 if (max_bin == 0) {WindowStart = - 4000 + fluctuation;}
634 for (
int iTCId = 0; iTCId < 576; iTCId++) {
635 const int hitsize =
TCTiming[iTCId].size();
636 for (
int ihit = 0; ihit < hitsize; ihit++) {
637 if (
TCTiming[iTCId][ihit] > WindowStart &&
TCTiming[iTCId][ihit] < WindowEnd) {
648 if (noftchit == 0) {
return;}
652 double eventtiming = 0;
657 int timingsource =
obj_timing -> GetTimingSource();
665 std::vector<std::vector<double>> thetaringsum;
666 std::vector<double> phiringsum;
669 thetaringsum.clear();
671 thetaringsum.resize(3, std::vector<double>(36, 0));
672 phiringsum.resize(17, 0);
682 for (
int iii = 0; iii <= 16; iii++) {
683 if (iii > 0 && iii < 15) {E_phys += phiringsum[iii];}
684 if (iii < 3) {E_fwd += phiringsum[iii];}
685 if (iii > 2 && iii < 15) {E_br += phiringsum[iii];}
686 if (iii > 14) {E_bwd += phiringsum[iii];}
687 E_total += phiringsum[iii];
689 if (E_total == 0) {
return;}
690 int ELow, EHigh, ELum;
730 std::vector<double> ClusterTiming;
731 std::vector<double> ClusterEnergy;
732 std::vector<int> MaxTCId;
733 ClusterTiming.clear();
734 ClusterEnergy.clear();
737 for (
int ii = 0; ii < trgeclClusterArray.
getEntries(); ii++) {
741 double clustertiming = aTRGECLCluster -> getTimeAve();
742 TVector3 clusterposition(aTRGECLCluster ->getPositionX(), aTRGECLCluster ->getPositionY(), aTRGECLCluster ->getPositionZ());
743 ClusterTiming.push_back(clustertiming);
744 ClusterEnergy.push_back(clusterenergy);
745 MaxTCId.push_back(maxTCId);
763 std::vector<double> vct_bhabha;
766 int bhabha3D_veto = 0 ;
767 int bhabha3D_sel = 0;
770 bool b_2Dbhabha =
obj_bhabha -> GetBhabha00(phiringsum);
772 if (b_2Dbhabha && (icn < 4)) {bhabha2D = 1;}
773 bool b_3Dbhabha =
obj_bhabha -> GetBhabha01();
774 if (b_3Dbhabha) {bhabha3D_veto = 1;}
775 bool b_3Dbhabha_sel =
obj_bhabha -> GetBhabha02();
776 if (b_3Dbhabha_sel) {bhabha3D_sel = 1;}
778 if (b_mumu) {mumu = 1;}
779 int bhabhaprescale = 0;
790 bool boolBeamBkgTag =
false;
792 boolBeamBkgTag =
obj_beambkg -> GetBeamBkg(thetaringsum);
793 if (boolBeamBkgTag) {beambkgtag = 1;}
798 int Timing = (int)(eventtiming + 0.5);
801 int etot = (int)(E_phys * 1000 + 0.5);
804 if ((etot > 1000 || icn > 3) && !(bhabha2D == 1)) {physics = 1;}
805 std::vector<int> bhabhabit;
807 int bhabhabitsize = vct_bhabha.size();
808 for (
int ibhabha = 0; ibhabha < bhabhabitsize; ibhabha++) {
809 bhabhabit.push_back((
int)vct_bhabha[ibhabha]);
812 int flagoverflow = 0;
813 if (ClusterOverflow > 0) {
817 makeTriggerBit(hit, Timing, 0, timingsource, E_phys, bhabha2D, physics, bhabhabit, icn, beambkgtag, flagoverflow,
818 bhabha3D_veto,
_Lowmultibit, bhabha3D_sel, mumu, bhabhaprescale, E_burst);
906 m_hitEneNum = trgEcltrgArray.
getEntries() - 1;
914 trgEcltrgArray[m_hitEneNum]->setEventId(m_nEvent);
915 trgEcltrgArray[m_hitEneNum]->setPRS01(phiringsum[0]);
916 trgEcltrgArray[m_hitEneNum]->setPRS02(phiringsum[1]);
917 trgEcltrgArray[m_hitEneNum]->setPRS03(phiringsum[2]);
918 trgEcltrgArray[m_hitEneNum]->setPRS04(phiringsum[3]);
919 trgEcltrgArray[m_hitEneNum]->setPRS05(phiringsum[4]);
920 trgEcltrgArray[m_hitEneNum]->setPRS06(phiringsum[5]);
921 trgEcltrgArray[m_hitEneNum]->setPRS07(phiringsum[6]);
922 trgEcltrgArray[m_hitEneNum]->setPRS08(phiringsum[7]);
923 trgEcltrgArray[m_hitEneNum]->setPRS09(phiringsum[8]);
924 trgEcltrgArray[m_hitEneNum]->setPRS10(phiringsum[9]);
925 trgEcltrgArray[m_hitEneNum]->setPRS11(phiringsum[10]);
926 trgEcltrgArray[m_hitEneNum]->setPRS12(phiringsum[11]);
927 trgEcltrgArray[m_hitEneNum]->setPRS13(phiringsum[12]);
928 trgEcltrgArray[m_hitEneNum]->setPRS14(phiringsum[13]);
929 trgEcltrgArray[m_hitEneNum]->setPRS15(phiringsum[14]);
930 trgEcltrgArray[m_hitEneNum]->setPRS16(phiringsum[15]);
931 trgEcltrgArray[m_hitEneNum]->setPRS17(phiringsum[16]);
933 trgEcltrgArray[m_hitEneNum]->setEtot(E_phys);
934 trgEcltrgArray[m_hitEneNum]->setNofTCHit(noftchit);
936 trgEcltrgArray[m_hitEneNum]->setBhabha01(vct_bhabha[0]);
937 trgEcltrgArray[m_hitEneNum]->setBhabha02(vct_bhabha[1]);
938 trgEcltrgArray[m_hitEneNum]->setBhabha03(vct_bhabha[2]);
939 trgEcltrgArray[m_hitEneNum]->setBhabha04(vct_bhabha[3]);
940 trgEcltrgArray[m_hitEneNum]->setBhabha05(vct_bhabha[4]);
941 trgEcltrgArray[m_hitEneNum]->setBhabha06(vct_bhabha[5]);
942 trgEcltrgArray[m_hitEneNum]->setBhabha07(vct_bhabha[6]);
943 trgEcltrgArray[m_hitEneNum]->setBhabha08(vct_bhabha[7]);
944 trgEcltrgArray[m_hitEneNum]->setBhabha09(vct_bhabha[8]);
945 trgEcltrgArray[m_hitEneNum]->setBhabha10(vct_bhabha[9]);
946 trgEcltrgArray[m_hitEneNum]->setBhabha11(vct_bhabha[10]);
947 trgEcltrgArray[m_hitEneNum]->setBhabha12(vct_bhabha[11]);
948 trgEcltrgArray[m_hitEneNum]->setBhabha13(vct_bhabha[12]);
949 trgEcltrgArray[m_hitEneNum]->setBhabha14(vct_bhabha[13]);
950 trgEcltrgArray[m_hitEneNum]->setBhabha15(vct_bhabha[14]);
951 trgEcltrgArray[m_hitEneNum]->setBhabha16(vct_bhabha[15]);
952 trgEcltrgArray[m_hitEneNum]->setBhabha17(vct_bhabha[16]);
953 trgEcltrgArray[m_hitEneNum]->setBhabha18(vct_bhabha[17]);
955 trgEcltrgArray[m_hitEneNum]->setICN(icn);
956 trgEcltrgArray[m_hitEneNum]->setICNFw(icnfwd);
957 trgEcltrgArray[m_hitEneNum]->setICNBr(icnbr);
958 trgEcltrgArray[m_hitEneNum]->setICNBw(icnbwd);
960 trgEcltrgArray[m_hitEneNum]->setECLtoGDL(
_Triggerbit[0], 0);
961 trgEcltrgArray[m_hitEneNum]->setECLtoGDL(
_Triggerbit[1], 1);
962 trgEcltrgArray[m_hitEneNum]->setECLtoGDL(
_Triggerbit[2], 2);
963 trgEcltrgArray[m_hitEneNum]->setECLtoGDL(
_Triggerbit[3], 3);
965 trgEcltrgArray[m_hitEneNum]->setBhabhaVeto(bhabha2D);
966 trgEcltrgArray[m_hitEneNum]->setBeamBkgVeto(beambkgtag);
967 trgEcltrgArray[m_hitEneNum]->setEventTiming(eventtiming);
969 trgEcltrgArray[m_hitEneNum]->setHit(hit);
970 trgEcltrgArray[m_hitEneNum]->setRevoclk(RevoFAM);
971 trgEcltrgArray[m_hitEneNum]->setTimingSource(TimingSource);
972 trgEcltrgArray[m_hitEneNum]->setPhysics(physics) ;
973 trgEcltrgArray[m_hitEneNum]->set2DBhabha(bhabha2D);
974 trgEcltrgArray[m_hitEneNum]->set3DBhabha(bhabha3D_veto);
975 trgEcltrgArray[m_hitEneNum]->set3DBhabhaSel(bhabha3D_sel);
976 trgEcltrgArray[m_hitEneNum]->setmumuBit(mumu);
977 trgEcltrgArray[m_hitEneNum]->setBhabhaPrescaleBit(bhabhaprescale);
979 trgEcltrgArray[m_hitEneNum]->setELow(ELow) ;
980 trgEcltrgArray[m_hitEneNum]->setEHihg(EHigh);
981 trgEcltrgArray[m_hitEneNum]->setELum(ELum) ;
982 trgEcltrgArray[m_hitEneNum]->setClusterOverflow(ClusterOverflow) ;
983 trgEcltrgArray[m_hitEneNum]->setLowMultiBit(
_Lowmultibit);
996 std::vector<std::vector<double>>& thetaringsum)
1012 thetaringsum.resize(3, std::vector<double>(36, 0.));
1013 phiringsum.resize(17);
1014 const int size_hit = TCHit.size();
1015 for (
int iHit = 0; iHit < size_hit; iHit++) {
1016 int iTCId = TCId[iHit] - 1;
1017 if (TCHit[iHit] > 0) {
1020 phiringsum[iTCThetaId] += TCHit[iHit];
1021 if (iTCThetaId - 1 < 3) {
1022 thetaringsum[0][iTCPhiId] += TCHit[iHit];
1023 }
else if (iTCThetaId > 14) {
1024 thetaringsum[2][iTCPhiId] += TCHit[iHit];
1026 thetaringsum[1][iTCPhiId] += TCHit[iHit];
1037 std::vector<int> bhabhatype,
int ICN,
int BGVeto,
int ClusterOverflow,
int bhabha3D,
int lowmultibit,
int bhabha3D_sel,
int mumubit,
1038 int prescale,
int burst)
1093 int Bhabhatype = bhabha2D;
1105 if (bhabhatype.size() > 14) {
1106 for (
int ibhabha = 0; ibhabha < 13; ibhabha++) {
1108 if (bhabhatype[ibhabha] == 1) {type = 0x01;}
1117 int bit_hit = hit & 0x01;
1118 int bit_Timing = (Timing & 0x7F) ;
1119 int bit_RevoFAM = (RevoFAM & 0x7F) ;
1120 int bit_TimingSource = (TimingSource & 0x07) ;
1121 int bit_physics = (physics & 0x01) ;
1122 int bit_2Dbhabha = (bhabhaveto & 0x01) ;
1123 int bit_bhabhatype = (Bhabhatype & 0x3FFF);
1124 int bit_etot = (((int)etot) & 0x1FFF) ;
1125 int bit_elow = (elow & 0x01);
1126 int bit_ehigh = (ehigh & 0x01) ;
1127 int bit_elum = (elum & 0x01) ;
1128 int bit_ICN = (ICN & 0x7F) ;
1129 int bit_BGVeto = (BGVeto & 0x07) ;
1130 int bit_ClusterOverflow = (ClusterOverflow & 0x01);
1131 int bit_3Dbhabha = (bhabha3D & 0x01);
1133 int bit_lowmulti1 = lowmultibit & 0x0FFF;
1134 int bit_lowmulti2 = (lowmultibit >>= 12) & 0x3;
1135 int bit_3DBhabha_sel = bhabha3D_sel & 0x01;
1136 int bit_mumu = mumubit & 0x01;
1137 int bit_prescale = prescale & 0x01;
1138 int bit_burst = burst & 0x01;
1170 _Triggerbit[1] |= ((bit_bhabhatype >> 12) & 0x03);
1218 int _nClust = CenterTCId.size();
1222 int _n2GeV231516 = 0;
1228 int _n500MeV216 = 0;
1229 int _n500MeV611 = 0;
1230 for (
int ic = 0; ic < _nClust; ic++) {
1231 if (clusterenergy[ic] > 0.3) {_n300MeV++;}
1234 int thresh = 15 & lut;
1235 if (thetaid >= 2 && thetaid <= 16) {_nClust216++;}
1236 if (thetaid >= 6 && thetaid <= 11) {
1237 if (clusterenergy[ic] * 100 > 5 * thresh) {
1242 if (clusterenergy[ic] > 0.5 && thetaid >= 2 && thetaid <= 16) {_n500MeV216++;}
1245 if (thetaid >= 4 && thetaid <= 14) {_n2GeV414++;}
1246 if (thetaid == 2 || thetaid == 3 || thetaid == 15 || thetaid == 16) {_n2GeV231516++;}
1247 if (thetaid == 1 || thetaid == 17) {_n2GeV117++;}
1250 if (thetaid >= 4 && thetaid <= 15) {_n1GeV415++;}
1251 if (thetaid == 2 || thetaid == 3 || thetaid == 16) {_n1GeV2316++;}
1252 if (thetaid == 1 || thetaid == 17) {_n1GeV117++;}
1259 int _nPhiPairHigh = 0;
1260 int _nPhiPairLow = 0;
1262 int _nECLBhabha = 0;
1263 for (
int i0 = 0; i0 < _nClust - 1; i0++) {
1264 for (
int i1 = i0 + 1; i1 < _nClust; i1++) {
1268 int energy1 = 15 & lut1;
1269 int energy2 = 15 & lut2;
1272 int phi1 = 511 & lut1;
1273 int phi2 = 511 & lut2;
1280 int dphi = abs(phi1 - phi2);
1281 if (dphi > 180) {dphi = 360 - dphi;}
1282 int thetaSum = theta1 + theta2;
1293 if (dphi > 160. && thetaSum > 160. && thetaSum < 200) {_n3DPair++;}
1295 if (dphi > 160 && thetaSum > 165 && thetaSum < 190 && clusterenergy[i0] * 100 >
_3DBhabhaVetoThreshold[0] * energy1
1320 if (_nClust >= 3 && _n300MeV >=
_n300MeVCluster && _nECLBhabha == 0) {
1323 if (_n2GeV414 > 0) {
1326 if (_n2GeV231516 && _nECLBhabha == 0) {
1329 if (_n2GeV231516 && _nECLBhabha != 0) {
1332 if (_n2GeV117 && _nECLBhabha == 0) {
1335 if (_n2GeV117 && _nECLBhabha != 0) {
1338 if (_n1GeV415 == 1 && _n300MeV == 1) {
1341 if (_n1GeV2316 == 1 && _n300MeV == 1) {
1344 if (_nPhiPairHigh > 0 && _n2GeV == 0) {
1347 if (_nPhiPairLow > 0 && _n2GeV == 0) {
1350 if (_n3DPair > 0 && _n2GeV == 0) {
1357 if (_nClust216 >= 3 && _n500MeV216 > 0 && _nECLBhabha == 0) {
1360 if (_n500MeV611 == 1 && _n300MeV == 1) {
1405 for (
int iii = 0; iii <= 16; iii++) {
1406 if (iii > 0 && iii < 15) {E_phys += phisum[iii];}