1 /**************************************************************************
2 * Author: Panos Christakoglou. *
3 * Contributors are mentioned in the code where appropriate. *
5 * Permission to use, copy, modify and distribute this software and its *
6 * documentation strictly for non-commercial purposes is hereby granted *
7 * without fee, provided that the above copyright notice appears in all *
8 * copies and that both the copyright notice and this permission notice *
9 * appear in the supporting documentation. The authors make no claims *
10 * about the suitability of this software for any purpose. It is *
11 * provided "as is" without express or implied warranty. *
12 **************************************************************************/
16 //-----------------------------------------------------------------
17 // AliRunTagCuts class
18 // This is the class to deal with the run tag level cuts
19 // Origin: Panos Christakoglou, UOA-CERN, Panos.Christakoglou@cern.ch
20 //-----------------------------------------------------------------
25 #include "AliRunTag.h"
26 #include "AliRunTagCuts.h"
28 ClassImp(AliRunTagCuts)
31 //___________________________________________________________________________
32 AliRunTagCuts::AliRunTagCuts() :
35 fAliceRunIdFlag(kFALSE),
36 fAliceMagneticField(-1.),
37 fAliceMagneticFieldFlag(kFALSE),
38 fAliceDipoleField(-1.),
39 fAliceDipoleFieldFlag(kFALSE),
40 fAliceRunStartTimeMin(-1),
41 fAliceRunStartTimeMax(-1),
42 fAliceRunStartTimeFlag(kFALSE),
43 fAliceRunStopTimeMin(-1),
44 fAliceRunStopTimeMax(-1),
45 fAliceRunStopTimeFlag(kFALSE),
47 fAlirootVersionFlag(kFALSE),
49 fRootVersionFlag(kFALSE),
51 fGeant3VersionFlag(kFALSE),
53 fLHCPeriodFlag(kFALSE),
57 fProdNameFlag(kFALSE),
58 fAliceRunValidation(0),
59 fAliceRunValidationFlag(kFALSE),
60 fAliceRunQualities(""),
61 fAliceRunQualitiesFlag(kFALSE),
63 fAliceBeamEnergyFlag(kFALSE),
65 fAliceBeamTypeFlag(kFALSE),
66 fAliceCalibrationVersion(-1),
67 fAliceCalibrationVersionFlag(kFALSE),
69 fAliceDataTypeFlag(kFALSE),
71 fBeamTriggerFlag(kFALSE),
72 fCollisionTriggerRange(),
73 fCollisionTriggerFlag(kFALSE),
75 fEmptyTriggerFlag(kFALSE),
77 fASideTriggerFlag(kFALSE),
79 fCSideTriggerFlag(kFALSE),
81 fHMTriggerFlag(kFALSE),
83 fMuonTriggerFlag(kFALSE),
84 fCollisionRateRange(),
85 fCollisionRateFlag(kFALSE),
87 fMeanVertexFlag(kFALSE),
88 fVertexQualityRange(),
89 fVertexQualityFlag(kFALSE)
91 //Default constructor which calls the Reset method.
94 //___________________________________________________________________________
95 AliRunTagCuts::~AliRunTagCuts() {
99 //___________________________________________________________________________
100 void AliRunTagCuts::Reset() {
101 //Sets dummy values to every private member.
103 fAliceRunIdFlag = kFALSE;
104 fAliceMagneticField = -1.;
105 fAliceMagneticFieldFlag = kFALSE;
106 fAliceDipoleField = -1.;
107 fAliceDipoleFieldFlag = kFALSE;
108 fAliceRunStartTimeMin = -1;
109 fAliceRunStartTimeMax = -1;
110 fAliceRunStartTimeFlag = kFALSE;
111 fAliceRunStopTimeMin = -1;
112 fAliceRunStopTimeMax = -1;
113 fAliceRunStopTimeFlag = kFALSE;
114 fAlirootVersion = "";
115 fAlirootVersionFlag = kFALSE;
117 fRootVersionFlag = kFALSE;
119 fGeant3VersionFlag = kFALSE;
121 fLHCPeriodFlag = kFALSE;
123 fRecPassFlag = kFALSE;
125 fProdNameFlag = kFALSE;
126 fAliceRunValidation = 0;
127 fAliceRunValidationFlag = kFALSE;
128 fAliceRunQualities = "";
129 fAliceRunQualitiesFlag = kFALSE;
130 fAliceBeamEnergy = -1;
131 fAliceBeamEnergyFlag = kFALSE;
133 fAliceBeamTypeFlag = kFALSE;
134 fAliceCalibrationVersion = -1;
135 fAliceCalibrationVersionFlag = kFALSE;
137 fAliceDataTypeFlag = kFALSE;
138 fBeamTriggerRange[0] = 0;
139 fBeamTriggerRange[1] = 0;
140 fBeamTriggerFlag = kFALSE;
141 fCollisionTriggerRange[0] = 0;
142 fCollisionTriggerRange[1] = 0;
143 fCollisionTriggerFlag = kFALSE;
144 fEmptyTriggerRange[0] = 0;
145 fEmptyTriggerRange[1] = 0;
146 fEmptyTriggerFlag = kFALSE;
147 fASideTriggerRange[0] = 0;
148 fASideTriggerRange[1] = 0;
149 fASideTriggerFlag = kFALSE;
150 fCSideTriggerRange[0] = 0;
151 fCSideTriggerRange[1] = 0;
152 fCSideTriggerFlag = kFALSE;
153 fHMTriggerRange[0] = 0;
154 fHMTriggerRange[1] = 0;
155 fHMTriggerFlag = kFALSE;
156 fMuonTriggerRange[0] = 0;
157 fMuonTriggerRange[1] = 0;
158 fMuonTriggerFlag = kFALSE;
159 fCollisionRateRange[0] = 0;
160 fCollisionRateRange[1] = 0;
161 fCollisionRateFlag = kFALSE;
162 fMeanVertexRange[0] = 0;
163 fMeanVertexRange[1] = 0;
164 fMeanVertexFlag = kFALSE;
165 fVertexQualityRange[0] = 0;
166 fVertexQualityRange[1] = 0;
167 fVertexQualityFlag = kFALSE;
170 void AliRunTagCuts::AddRunQualityValue(Int_t qval)
172 // Adds to the list of selected run qualities
173 fAliceRunQualities += qval;
174 fAliceRunQualities += " ";
175 fAliceRunQualitiesFlag = kTRUE;
178 //___________________________________________________________________________
179 Bool_t AliRunTagCuts::IsAccepted(AliRunTag *RunTag) const {
180 //Returns true if the event is accepted otherwise false.
182 if((RunTag->GetRunId() != fAliceRunId))
184 if(fAliceMagneticFieldFlag)
185 if((RunTag->GetMagneticField() != fAliceMagneticField))
187 if(fAliceDipoleFieldFlag)
188 if((RunTag->GetDipoleField() != fAliceDipoleField))
190 if(fAliceRunStartTimeFlag)
191 if((RunTag->GetRunStartTime() < fAliceRunStartTimeMin) || (RunTag->GetRunStartTime() > fAliceRunStartTimeMax))
193 if(fAliceRunStopTimeFlag)
194 if((RunTag->GetRunStopTime() < fAliceRunStopTimeMin) || (RunTag->GetRunStopTime() > fAliceRunStopTimeMax))
196 if(fAlirootVersionFlag)
197 if((RunTag->GetAlirootVersion() != fAlirootVersion))
200 if((RunTag->GetRootVersion() != fRootVersion))
202 if(fGeant3VersionFlag)
203 if((RunTag->GetGeant3Version() != fGeant3Version))
206 if((RunTag->GetLHCPeriod() != fLHCPeriod))
209 if((RunTag->GetReconstructionPass() != fRecPass))
212 if((RunTag->GetProductionName() != fProdName))
214 if(fAliceRunValidationFlag)
215 if(RunTag->GetRunValidation())
217 if (fAliceRunQualitiesFlag) {
218 TObjArray *tQualities = fAliceRunQualities.Tokenize(" ");
219 Bool_t tQual = kFALSE;
222 tRQual += RunTag->GetRunQuality();
224 for (int iqual=0; iqual<tQualities->GetEntries(); iqual++)
225 if (((TObjString *) tQualities->At(iqual))->GetString().Contains(tRQual))
227 // if (EvTag->GetFiredTriggerClasses().Contains(((TObjString *) tClasses->At(iqual))->GetString()))
229 tQualities->Delete();
235 if(fAliceBeamEnergyFlag)
236 if(RunTag->GetBeamEnergy() != fAliceBeamEnergy)
238 if(fAliceBeamTypeFlag)
239 if(RunTag->GetBeamType() != fAliceBeamType)
241 if(fAliceCalibrationVersionFlag)
242 if(RunTag->GetBeamEnergy() != fAliceBeamEnergy)
244 if(fAliceDataTypeFlag)
245 if(RunTag->GetDataType() != fAliceDataType)
247 if (fBeamTriggerFlag)
248 if ((RunTag->GetBeamTriggers() < fBeamTriggerRange[0]) || (RunTag->GetBeamTriggers() > fBeamTriggerRange[1]))
250 if (fCollisionTriggerFlag)
251 if ((RunTag->GetCollisionTriggers() < fCollisionTriggerRange[0]) || (RunTag->GetCollisionTriggers() > fCollisionTriggerRange[1]))
253 if (fEmptyTriggerFlag)
254 if ((RunTag->GetEmptyTriggers() < fEmptyTriggerRange[0]) || (RunTag->GetEmptyTriggers() > fEmptyTriggerRange[1]))
256 if (fCSideTriggerFlag)
257 if ((RunTag->GetCSideTriggers() < fCSideTriggerRange[0]) || (RunTag->GetCSideTriggers() > fCSideTriggerRange[1]))
259 if (fASideTriggerFlag)
260 if ((RunTag->GetASideTriggers() < fASideTriggerRange[0]) || (RunTag->GetASideTriggers() > fASideTriggerRange[1]))
263 if ((RunTag->GetHMTriggers() < fHMTriggerRange[0]) || (RunTag->GetHMTriggers() > fHMTriggerRange[1]))
265 if (fMuonTriggerFlag)
266 if ((RunTag->GetMuonTriggers() < fMuonTriggerRange[0]) || (RunTag->GetMuonTriggers() > fMuonTriggerRange[1]))
268 if (fCollisionRateFlag)
269 if ((RunTag->GetCollisionRate() < fCollisionRateRange[0]) || (RunTag->GetCollisionRate() > fCollisionRateRange[1]))
272 if ((RunTag->GetMeanVertex() < fMeanVertexRange[0]) || (RunTag->GetMeanVertex() > fMeanVertexRange[1]))
274 if (fVertexQualityFlag)
275 if ((RunTag->GetVertexQuality() < fVertexQualityRange[0]) || (RunTag->GetVertexQuality() > fVertexQualityRange[1]))