Added V0A23 (V0 rings 2-3), V0C01 (V0 rings 0-1) and V0S = V0A23+V0C01
[u/mrichter/AliRoot.git] / STEER / STEERBase / AliRunTagCuts.cxx
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 //___________________________________________________________________________
32 AliRunTagCuts::AliRunTagCuts() :
33   TObject(),
34   fAliceRunId(-1),                  
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),        
46   fAlirootVersion(""),              
47   fAlirootVersionFlag(kFALSE),          
48   fRootVersion(""),                 
49   fRootVersionFlag(kFALSE),             
50   fGeant3Version(""),               
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),
62   fAliceBeamEnergy(-1),             
63   fAliceBeamEnergyFlag(kFALSE),         
64   fAliceBeamType(""),               
65   fAliceBeamTypeFlag(kFALSE),           
66   fAliceCalibrationVersion(-1),    
67   fAliceCalibrationVersionFlag(kFALSE),
68   fAliceDataType(-1),                
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)
90 {
91   //Default constructor which calls the Reset method.
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;      
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;          
116   fRootVersion = "";                 
117   fRootVersionFlag = kFALSE;             
118   fGeant3Version = "";               
119   fGeant3VersionFlag = kFALSE;           
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;
130   fAliceBeamEnergy = -1;             
131   fAliceBeamEnergyFlag = kFALSE;         
132   fAliceBeamType = "";               
133   fAliceBeamTypeFlag = kFALSE;           
134   fAliceCalibrationVersion = -1;    
135   fAliceCalibrationVersionFlag = kFALSE;
136   fAliceDataType = -1;                
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;
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;
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;
187   if(fAliceDipoleFieldFlag)
188     if((RunTag->GetDipoleField() != fAliceDipoleField))
189       return kFALSE;
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;
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)
233       return kFALSE;
234   }
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;
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
278   return kTRUE;
279 }