]>
Commit | Line | Data |
---|---|---|
0c4ee52f | 1 | /************************************************************************** |
2 | * Author: Panos Christakoglou. * | |
3 | * Contributors are mentioned in the code where appropriate. * | |
4 | * * | |
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 | **************************************************************************/ | |
13 | ||
14 | /* $Id$ */ | |
15 | ||
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 | //----------------------------------------------------------------- | |
21 | ||
22 | class AliLog; | |
23 | class AliESD; | |
24 | ||
25 | #include "AliRunTag.h" | |
26 | #include "AliRunTagCuts.h" | |
27 | ||
28 | ClassImp(AliRunTagCuts) | |
29 | ||
30 | ||
31 | //___________________________________________________________________________ | |
fe12e09c | 32 | AliRunTagCuts::AliRunTagCuts() : |
33 | TObject(), | |
34 | fAliceRunId(-1), | |
35 | fAliceRunIdFlag(kFALSE), | |
36 | fAliceMagneticField(-1.), | |
37 | fAliceMagneticFieldFlag(kFALSE), | |
04cb11d4 | 38 | fAliceDipoleField(-1.), |
39 | fAliceDipoleFieldFlag(kFALSE), | |
fe12e09c | 40 | fAliceRunStartTimeMin(-1), |
41 | fAliceRunStartTimeMax(-1), | |
42 | fAliceRunStartTimeFlag(kFALSE), | |
43 | fAliceRunStopTimeMin(-1), | |
44 | fAliceRunStopTimeMax(-1), | |
45 | fAliceRunStopTimeFlag(kFALSE), | |
46 | fAlirootVersion(""), | |
47 | fAlirootVersionFlag(kFALSE), | |
48 | fRootVersion(""), | |
49 | fRootVersionFlag(kFALSE), | |
50 | fGeant3Version(""), | |
04cb11d4 | 51 | fGeant3VersionFlag(kFALSE), |
52 | fLHCPeriod(""), | |
53 | fLHCPeriodFlag(kFALSE), | |
54 | fRecPass(""), | |
55 | fRecPassFlag(kFALSE), | |
56 | fProdName(""), | |
57 | fProdNameFlag(kFALSE), | |
58 | fAliceRunValidation(0), | |
59 | fAliceRunValidationFlag(kFALSE), | |
60 | fAliceRunQualities(""), | |
61 | fAliceRunQualitiesFlag(kFALSE), | |
fe12e09c | 62 | fAliceBeamEnergy(-1), |
63 | fAliceBeamEnergyFlag(kFALSE), | |
64 | fAliceBeamType(""), | |
65 | fAliceBeamTypeFlag(kFALSE), | |
66 | fAliceCalibrationVersion(-1), | |
67 | fAliceCalibrationVersionFlag(kFALSE), | |
68 | fAliceDataType(-1), | |
04cb11d4 | 69 | fAliceDataTypeFlag(kFALSE), |
70 | fBeamTriggerRange(), | |
71 | fBeamTriggerFlag(kFALSE), | |
72 | fCollisionTriggerRange(), | |
73 | fCollisionTriggerFlag(kFALSE), | |
74 | fEmptyTriggerRange(), | |
75 | fEmptyTriggerFlag(kFALSE), | |
76 | fASideTriggerRange(), | |
77 | fASideTriggerFlag(kFALSE), | |
78 | fCSideTriggerRange(), | |
79 | fCSideTriggerFlag(kFALSE), | |
80 | fHMTriggerRange(), | |
81 | fHMTriggerFlag(kFALSE), | |
82 | fMuonTriggerRange(), | |
83 | fMuonTriggerFlag(kFALSE), | |
84 | fCollisionRateRange(), | |
85 | fCollisionRateFlag(kFALSE), | |
86 | fMeanVertexRange(), | |
87 | fMeanVertexFlag(kFALSE), | |
88 | fVertexQualityRange(), | |
89 | fVertexQualityFlag(kFALSE) | |
fe12e09c | 90 | { |
0c4ee52f | 91 | //Default constructor which calls the Reset method. |
0c4ee52f | 92 | } |
93 | ||
94 | //___________________________________________________________________________ | |
95 | AliRunTagCuts::~AliRunTagCuts() { | |
96 | //Defaut destructor. | |
97 | } | |
98 | ||
99 | //___________________________________________________________________________ | |
100 | void AliRunTagCuts::Reset() { | |
101 | //Sets dummy values to every private member. | |
102 | fAliceRunId = -1; | |
103 | fAliceRunIdFlag = kFALSE; | |
104 | fAliceMagneticField = -1.; | |
105 | fAliceMagneticFieldFlag = kFALSE; | |
04cb11d4 | 106 | fAliceDipoleField = -1.; |
107 | fAliceDipoleFieldFlag = kFALSE; | |
0c4ee52f | 108 | fAliceRunStartTimeMin = -1; |
109 | fAliceRunStartTimeMax = -1; | |
110 | fAliceRunStartTimeFlag = kFALSE; | |
111 | fAliceRunStopTimeMin = -1; | |
112 | fAliceRunStopTimeMax = -1; | |
113 | fAliceRunStopTimeFlag = kFALSE; | |
114 | fAlirootVersion = ""; | |
115 | fAlirootVersionFlag = kFALSE; | |
116 | fRootVersion = ""; | |
117 | fRootVersionFlag = kFALSE; | |
118 | fGeant3Version = ""; | |
119 | fGeant3VersionFlag = kFALSE; | |
04cb11d4 | 120 | fLHCPeriod = ""; |
121 | fLHCPeriodFlag = kFALSE; | |
122 | fRecPass = ""; | |
123 | fRecPassFlag = kFALSE; | |
124 | fProdName = ""; | |
125 | fProdNameFlag = kFALSE; | |
126 | fAliceRunValidation = 0; | |
127 | fAliceRunValidationFlag = kFALSE; | |
128 | fAliceRunQualities = ""; | |
129 | fAliceRunQualitiesFlag = kFALSE; | |
0c4ee52f | 130 | fAliceBeamEnergy = -1; |
131 | fAliceBeamEnergyFlag = kFALSE; | |
132 | fAliceBeamType = ""; | |
133 | fAliceBeamTypeFlag = kFALSE; | |
134 | fAliceCalibrationVersion = -1; | |
135 | fAliceCalibrationVersionFlag = kFALSE; | |
136 | fAliceDataType = -1; | |
137 | fAliceDataTypeFlag = kFALSE; | |
04cb11d4 | 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; | |
168 | } | |
169 | ||
170 | void AliRunTagCuts::AddRunQualityValue(Int_t qval) | |
171 | { | |
172 | // Adds to the list of selected run qualities | |
173 | fAliceRunQualities += qval; | |
174 | fAliceRunQualities += " "; | |
175 | fAliceRunQualitiesFlag = kTRUE; | |
0c4ee52f | 176 | } |
177 | ||
178 | //___________________________________________________________________________ | |
179 | Bool_t AliRunTagCuts::IsAccepted(AliRunTag *RunTag) const { | |
180 | //Returns true if the event is accepted otherwise false. | |
181 | if(fAliceRunIdFlag) | |
182 | if((RunTag->GetRunId() != fAliceRunId)) | |
183 | return kFALSE; | |
184 | if(fAliceMagneticFieldFlag) | |
185 | if((RunTag->GetMagneticField() != fAliceMagneticField)) | |
186 | return kFALSE; | |
04cb11d4 | 187 | if(fAliceDipoleFieldFlag) |
188 | if((RunTag->GetDipoleField() != fAliceDipoleField)) | |
189 | return kFALSE; | |
0c4ee52f | 190 | if(fAliceRunStartTimeFlag) |
191 | if((RunTag->GetRunStartTime() < fAliceRunStartTimeMin) || (RunTag->GetRunStartTime() > fAliceRunStartTimeMax)) | |
192 | return kFALSE; | |
193 | if(fAliceRunStopTimeFlag) | |
194 | if((RunTag->GetRunStopTime() < fAliceRunStopTimeMin) || (RunTag->GetRunStopTime() > fAliceRunStopTimeMax)) | |
195 | return kFALSE; | |
196 | if(fAlirootVersionFlag) | |
197 | if((RunTag->GetAlirootVersion() != fAlirootVersion)) | |
198 | return kFALSE; | |
199 | if(fRootVersionFlag) | |
200 | if((RunTag->GetRootVersion() != fRootVersion)) | |
201 | return kFALSE; | |
202 | if(fGeant3VersionFlag) | |
203 | if((RunTag->GetGeant3Version() != fGeant3Version)) | |
204 | return kFALSE; | |
04cb11d4 | 205 | if(fLHCPeriodFlag) |
206 | if((RunTag->GetLHCPeriod() != fLHCPeriod)) | |
207 | return kFALSE; | |
208 | if(fRecPassFlag) | |
209 | if((RunTag->GetReconstructionPass() != fRecPass)) | |
210 | return kFALSE; | |
211 | if(fProdNameFlag) | |
212 | if((RunTag->GetProductionName() != fProdName)) | |
213 | return kFALSE; | |
214 | if(fAliceRunValidationFlag) | |
215 | if(RunTag->GetRunValidation()) | |
216 | return kFALSE; | |
217 | if (fAliceRunQualitiesFlag) { | |
218 | TObjArray *tQualities = fAliceRunQualities.Tokenize(" "); | |
219 | Bool_t tQual = kFALSE; | |
220 | ||
221 | TString tRQual = ""; | |
222 | tRQual += RunTag->GetRunQuality(); | |
223 | ||
224 | for (int iqual=0; iqual<tQualities->GetEntries(); iqual++) | |
225 | if (((TObjString *) tQualities->At(iqual))->GetString().Contains(tRQual)) | |
226 | tQual = kTRUE; | |
227 | // if (EvTag->GetFiredTriggerClasses().Contains(((TObjString *) tClasses->At(iqual))->GetString())) | |
228 | ||
229 | tQualities->Delete(); | |
230 | delete tQualities; | |
231 | ||
232 | if (!tQual) | |
0c4ee52f | 233 | return kFALSE; |
04cb11d4 | 234 | } |
0c4ee52f | 235 | if(fAliceBeamEnergyFlag) |
236 | if(RunTag->GetBeamEnergy() != fAliceBeamEnergy) | |
237 | return kFALSE; | |
238 | if(fAliceBeamTypeFlag) | |
239 | if(RunTag->GetBeamType() != fAliceBeamType) | |
240 | return kFALSE; | |
241 | if(fAliceCalibrationVersionFlag) | |
242 | if(RunTag->GetBeamEnergy() != fAliceBeamEnergy) | |
243 | return kFALSE; | |
244 | if(fAliceDataTypeFlag) | |
245 | if(RunTag->GetDataType() != fAliceDataType) | |
246 | return kFALSE; | |
04cb11d4 | 247 | if (fBeamTriggerFlag) |
248 | if ((RunTag->GetBeamTriggers() < fBeamTriggerRange[0]) || (RunTag->GetBeamTriggers() > fBeamTriggerRange[1])) | |
249 | return kFALSE; | |
250 | if (fCollisionTriggerFlag) | |
251 | if ((RunTag->GetCollisionTriggers() < fCollisionTriggerRange[0]) || (RunTag->GetCollisionTriggers() > fCollisionTriggerRange[1])) | |
252 | return kFALSE; | |
253 | if (fEmptyTriggerFlag) | |
254 | if ((RunTag->GetEmptyTriggers() < fEmptyTriggerRange[0]) || (RunTag->GetEmptyTriggers() > fEmptyTriggerRange[1])) | |
255 | return kFALSE; | |
256 | if (fCSideTriggerFlag) | |
257 | if ((RunTag->GetCSideTriggers() < fCSideTriggerRange[0]) || (RunTag->GetCSideTriggers() > fCSideTriggerRange[1])) | |
258 | return kFALSE; | |
259 | if (fASideTriggerFlag) | |
260 | if ((RunTag->GetASideTriggers() < fASideTriggerRange[0]) || (RunTag->GetASideTriggers() > fASideTriggerRange[1])) | |
261 | return kFALSE; | |
262 | if (fHMTriggerFlag) | |
263 | if ((RunTag->GetHMTriggers() < fHMTriggerRange[0]) || (RunTag->GetHMTriggers() > fHMTriggerRange[1])) | |
264 | return kFALSE; | |
265 | if (fMuonTriggerFlag) | |
266 | if ((RunTag->GetMuonTriggers() < fMuonTriggerRange[0]) || (RunTag->GetMuonTriggers() > fMuonTriggerRange[1])) | |
267 | return kFALSE; | |
268 | if (fCollisionRateFlag) | |
269 | if ((RunTag->GetCollisionRate() < fCollisionRateRange[0]) || (RunTag->GetCollisionRate() > fCollisionRateRange[1])) | |
270 | return kFALSE; | |
271 | if (fMeanVertexFlag) | |
272 | if ((RunTag->GetMeanVertex() < fMeanVertexRange[0]) || (RunTag->GetMeanVertex() > fMeanVertexRange[1])) | |
273 | return kFALSE; | |
274 | if (fVertexQualityFlag) | |
275 | if ((RunTag->GetVertexQuality() < fVertexQualityRange[0]) || (RunTag->GetVertexQuality() > fVertexQualityRange[1])) | |
276 | return kFALSE; | |
277 | ||
0c4ee52f | 278 | return kTRUE; |
279 | } |