BmnRoot 26.10.0-18-g4e3414f9
Software framework of the BM@N experiment
Loading...
Searching...
No Matches
BmnTriggersCheck.cxx
Go to the documentation of this file.
1#include "BmnTriggersCheck.h"
2
3#include "BmnTrigDigit.h"
4
6{
7 fIsExp = isExp;
8 fRunPeriod = runP;
9 fRunNumber = runN;
10
11 fT0Branch = "T0";
12 fVetoBranch = "VC";
13 fBC2Branch = "BC2";
14 fBC1Branch = "BC1";
15 fBC3Branch = "BC3";
16 fBDBranch = "BD";
17 fBmnEventHeaderBranchName = "EventHeader";
18 fBmnEvQualityBranchName = "BmnEventQuality";
19}
20
22{
23 FairRootManager* ioman = FairRootManager::Instance();
24
26 fT0Array = (TClonesArray*)ioman->GetObject(fT0Branch.Data());
27 fVetoArray = (TClonesArray*)ioman->GetObject(fVetoBranch.Data());
28 fBC2Array = (TClonesArray*)ioman->GetObject(fBC2Branch.Data());
29 fBDArray = (TClonesArray*)ioman->GetObject(fBDBranch.Data());
30 fBC1Array = (TClonesArray*)ioman->GetObject(fBC1Branch.Data());
31 fBC3Array = (TClonesArray*)ioman->GetObject(fBC3Branch.Data());
32
34 ioman->Register(fBmnEvQualityBranchName, "QUALITY", fBmnEvQuality, true);
35
36 return kSUCCESS;
37}
38
40{
41 if (!fIsExp)
42 return;
43
44 fBmnEvQuality->Delete();
45
46 BmnEventQuality* evQual = new ((*fBmnEvQuality)[fBmnEvQuality->GetEntriesFast()]) BmnEventQuality("GOOD");
47
48 Int_t cntr2 = 0;
49 Bool_t time2 = 0;
50 for (Int_t iDig = 0; iDig < fBC2Array->GetEntriesFast(); ++iDig) {
51 BmnTrigDigit* dig = (BmnTrigDigit*)fBC2Array->At(iDig);
52 if (dig->GetMod() == 0) {
53 cntr2++;
54 // if (dig->GetTime() < 420 || dig->GetTime() > 600) time2 =1;
55 // cout<<" time BC2 "<<dig->GetTime()<<" time2 "<<time2<<endl;
56 }
57 }
58 if (cntr2 > 2 || time2 == 1)
59 evQual->SetIsGoodEvent("BAD");
60
61 Int_t cntr1 = 0;
62 Bool_t time1 = 0;
63 for (Int_t iDig = 0; iDig < fBC1Array->GetEntriesFast(); ++iDig) {
64 BmnTrigDigit* dig = (BmnTrigDigit*)fBC1Array->At(iDig);
65 if (dig->GetMod() == 0) {
66 cntr1++;
67 // if (dig->GetTime() < 460 || dig->GetTime() > 600) time1 =1;
68 // cout<<" time BC1 "<<dig->GetTime()<<" time1 "<<time1<<endl;
69 }
70 }
71 if (cntr1 > 2 || time1 == 1)
72 evQual->SetIsGoodEvent("BAD");
73
74 Int_t cntr3 = 0;
75 Bool_t time3 = 0;
76 for (Int_t iDig = 0; iDig < fBC3Array->GetEntriesFast(); ++iDig) {
77 BmnTrigDigit* dig = (BmnTrigDigit*)fBC3Array->At(iDig);
78 if (dig->GetMod() == 0) {
79 cntr1++;
80 // if (dig->GetTime() < 470 || dig->GetTime() > 620) time3 =1;
81 // cout<<" time BC3 "<<dig->GetTime()<<" time3 "<<time3<<endl;
82 }
83 }
84 if (cntr3 > 2 || time3 == 1)
85 evQual->SetIsGoodEvent("BAD");
86
87 // if (fVetoArray != NULL){
88 Int_t cntrv = 0;
89 for (Int_t iDig = 0; iDig < fVetoArray->GetEntriesFast(); ++iDig) {
90 BmnTrigDigit* dig = (BmnTrigDigit*)fVetoArray->At(iDig);
91 if (dig->GetMod() == 0)
92 cntrv++;
93 }
94 if (cntrv >= 1)
95 evQual->SetIsGoodEvent("BAD");
96
97 // } else cout<<" fVetoArray not found "<<endl;
98
99 // BmnEventQuality* evQual = new ((*fBmnEvQuality)[fBmnEvQuality->GetEntriesFast()]) BmnEventQuality("GOOD");
100
101 // const Int_t kEnergies = 4;
102 // const Int_t kTargets = 5;
103 // Double_t energies[kEnergies] = {3.5, 4., 4.5, 5.14};
104 // TString targets[kTargets] = {"C", "Al", "Cu", "Pb", "C2H4"};
105
106 // BmnEventHeader* evHeader = (BmnEventHeader*) fBmnEventHeader->UncheckedAt(0);
107 // if (!evHeader)
108 // return;
109
110 // UniRun* runInfo = UniRun::GetRun(fRunPeriod, fRunNumber);
111
112 // BmnTriggerType trigType = evHeader->GetTrig();
113 // if (trigType == kBMNMINBIAS) {
114 // // Setup BD-threshold
115 // // To be read subsequently from the UniDB directly when processing RUN7, FIXME
116 // TString target = *runInfo->GetTargetParticle();
117 // Double_t energy = *runInfo->GetEnergy();
118 // Int_t bdThresh;
119 // if (Abs(energy - energies[0]) < FLT_EPSILON) // 3.5 GeV/n, all targets
120 // bdThresh = 2;
121 // else if (Abs(energy - energies[1]) < FLT_EPSILON && (target == targets[0] || target == targets[4])) // 4
122 // GeV/n, C, C2H4
123 // bdThresh = 2;
124 // else if (Abs(energy - energies[1]) < FLT_EPSILON && target != targets[0] && target != targets[4]) // 4
125 // GeV/n, Al, Cu, Pb
126 // bdThresh = 3;
127 // else if (Abs(energy - energies[2]) < FLT_EPSILON && (target == targets[0] || target == targets[4]))
128 // // 4.5 GeV/n, C, C2H4
129 // bdThresh = 2;
130 // else if (Abs(energy - energies[2]) < FLT_EPSILON && target != targets[0] && target != targets[4]) // 4
131 // GeV/n, Al, Cu, Pb
132 // bdThresh = 3;
133 // else if (Abs(energy - energies[3]) < FLT_EPSILON) // 5.14 GeV/n, all targets
134 // bdThresh = 2;
135 // else
136 // bdThresh = 0;
137
138 // if (fT0Array->GetEntriesFast() != 1 || fBC2Array->GetEntriesFast() != 1 || fVetoArray->GetEntriesFast()
139 // != 0 || fBDArray->GetEntriesFast() < bdThresh)
140 // evQual->SetIsGoodEvent("BAD");
141 // }
142
143 // else if (trigType == kBMNBEAM) {
144 // if (fVetoArray->GetEntriesFast() > 1 || fBDArray->GetEntriesFast() > 0)
145 // evQual->SetIsGoodEvent("BAD");
146 // }
147
148 // else
149 // evQual->SetIsGoodEvent("BAD");
150}
151
bool Bool_t
int Int_t
const char Option_t
void SetIsGoodEvent(TString str)
Short_t GetMod() const
virtual void Finish()
TClonesArray * fBC1Array
TString fBmnEvQualityBranchName
TClonesArray * fBC3Array
TClonesArray * fVetoArray
TString fBmnEventHeaderBranchName
virtual InitStatus Init()
virtual void Exec(Option_t *opt)
TClonesArray * fBDArray
TClonesArray * fBmnEvQuality
TClonesArray * fBmnEventHeader
TClonesArray * fBC2Array
TClonesArray * fT0Array