Corrected protection.
[u/mrichter/AliRoot.git] / STEER / AliEventTagCuts.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 //           AliEventTagCuts class
18 //   This is the class to deal with the event tag level cuts
19 //   Origin: Panos Christakoglou, UOA-CERN, Panos.Christakoglou@cern.ch
20 //-----------------------------------------------------------------
21
22 #include <AliLog.h>
23 class AliESD;
24
25 #include <TMath.h>
26 #include "AliEventTag.h"
27 #include "AliEventTagCuts.h"
28 #include <TObjArray.h>
29 #include <TObjString.h>
30
31 ClassImp(AliEventTagCuts)
32
33
34 //___________________________________________________________________________
35 AliEventTagCuts::AliEventTagCuts() :
36   TObject(),
37   fPeriodNumberMin(0), fPeriodNumberMax(0xFFFFFFFF), fPeriodNumberFlag(kFALSE),
38   fOrbitNumberMin(0), fOrbitNumberMax(0xFFFFFFFF), fOrbitNumberFlag(kFALSE),
39   fBunchCrossNumberMin(0), fBunchCrossNumberMax(0xFFFF), 
40   fBunchCrossNumberFlag(kFALSE),
41   fEventType(7), fEventTypeFlag(kFALSE),
42   fNParticipantsMin(-1), fNParticipantsMax(10000),
43   fNParticipantsFlag(kFALSE),
44   fImpactParamMin(-1.0), fImpactParamMax(1000.0),
45   fImpactParamFlag(kFALSE),
46   fEtaMin(-13.0), fEtaMax(13.0), 
47   fEtaFlag(kFALSE),
48   fPhiMin(0.), fPhiMax(2*(TMath::Pi())), 
49   fPhiFlag(kFALSE),
50   fVxMin(-1000.0), fVxMax(1000.0), 
51   fVxFlag(kFALSE),
52   fVyMin(-1000.0), fVyMax(1000.0),  
53   fVyFlag(kFALSE),
54   fVzMin(-1000.0), fVzMax(1000.0),
55   fVzFlag(kFALSE),
56   fPrimaryVertexFlag(1),
57   fPVFlag(kFALSE),
58
59   fPrimaryVertexZErrorMin(-10000.), fPrimaryVertexZErrorMax(10000.),
60   fPVzErrorFlag(kFALSE),
61   fTriggerMask(0),
62   fTriggerMaskFlag(kFALSE),
63   fTriggerCluster(0),
64   fTriggerClusterFlag(kFALSE),
65  
66   fZDCNeutron1EnergyMin(-1.0), fZDCNeutron1EnergyMax(100000.0),
67   fZDCNeutron1EnergyFlag(kFALSE),
68   fZDCProton1EnergyMin(-1.0), fZDCProton1EnergyMax(100000.0),
69   fZDCProton1EnergyFlag(kFALSE),
70   fZDCNeutron2EnergyMin(-1.0), fZDCNeutron2EnergyMax(100000.0),
71   fZDCNeutron2EnergyFlag(kFALSE),
72   fZDCProton2EnergyMin(-1.0), fZDCProton2EnergyMax(100000.0),
73   fZDCProton2EnergyFlag(kFALSE),
74   fZDCEMEnergyMin(-1.0), fZDCEMEnergyMax(100000.0),
75   fZDCEMEnergyFlag(kFALSE),
76   fT0VertexZMin(-10000.0), fT0VertexZMax(10000.0),  
77   fT0VertexZFlag(kFALSE),
78   fMultMin(0), fMultMax(100000),  
79   fMultFlag(kFALSE),
80   fPosMultMin(-1), fPosMultMax(100000),
81   fPosMultFlag(kFALSE),
82   fNegMultMin(-1), fNegMultMax(100000),
83   fNegMultFlag(kFALSE),
84   fNeutrMultMin(-1), fNeutrMultMax(100000),
85   fNeutrMultFlag(kFALSE),
86   fNV0sMin(-1), fNV0sMax(1000000),
87   fNV0sFlag(kFALSE),
88   fNCascadesMin(-1), fNCascadesMax(100000),
89   fNCascadesFlag(kFALSE),
90   fNKinksMin(-1), fNKinksMax(1000000),
91   fNKinksFlag(kFALSE),
92
93   fNPMDTracksMin(-1), fNPMDTracksMax(100000),
94   fNPMDTracksFlag(kFALSE),
95   fNFMDTracksMin(-1), fNFMDTracksMax(100000),
96   fNFMDTracksFlag(kFALSE),
97   fNPHOSClustersMin(-1), fNPHOSClustersMax(100000),
98   fNPHOSClustersFlag(kFALSE),
99   fNEMCALClustersMin(-1), fNEMCALClustersMax(100000),
100   fNEMCALClustersFlag(kFALSE),
101   fNJetCandidatesMin(-1), fNJetCandidatesMax(100000),
102   fNJetCandidatesFlag(kFALSE),
103
104   fTopJetEnergyMin(-1.0), 
105   fTopJetEnergyMinFlag(kFALSE),
106   fTopNeutralEnergyMin(-1.0), 
107   fTopNeutralEnergyMinFlag(kFALSE),
108   fNHardPhotonCandidatesMin(-1), fNHardPhotonCandidatesMax(100000),
109   fNHardPhotonCandidatesFlag(kFALSE),
110   fNChargedAbove1GeVMin(-1), fNChargedAbove1GeVMax(100000),
111   fNChargedAbove1GeVFlag(kFALSE),
112   fNChargedAbove3GeVMin(-1), fNChargedAbove3GeVMax(100000),
113   fNChargedAbove3GeVFlag(kFALSE),
114   fNChargedAbove10GeVMin(-1), fNChargedAbove10GeVMax(100000),
115   fNChargedAbove10GeVFlag(kFALSE),
116   fNMuonsAbove1GeVMin(-1), fNMuonsAbove1GeVMax(100000),
117   fNMuonsAbove1GeVFlag(kFALSE),
118   fNMuonsAbove3GeVMin(-1), fNMuonsAbove3GeVMax(100000),
119   fNMuonsAbove3GeVFlag(kFALSE),
120   fNMuonsAbove10GeVMin(-1), fNMuonsAbove10GeVMax(100000), 
121   fNMuonsAbove10GeVFlag(kFALSE),
122   fNElectronsAbove1GeVMin(-1), fNElectronsAbove1GeVMax(100000),
123   fNElectronsAbove1GeVFlag(kFALSE),
124   fNElectronsAbove3GeVMin(-1), fNElectronsAbove3GeVMax(100000),
125   fNElectronsAbove3GeVFlag(kFALSE),
126   fNElectronsAbove10GeVMin(-1), fNElectronsAbove10GeVMax(100000),
127   fNElectronsAbove10GeVFlag(kFALSE),
128   fNElectronsMin(-1), fNElectronsMax(100000),
129   fNElectronsFlag(kFALSE),
130   fNFWMuonsMin(-1), fNFWMuonsMax(100000),
131   fNFWMuonsFlag(kFALSE),
132   fNFWMatchedMuonsMin(-1), fNFWMatchedMuonsMax(100000),
133   fNFWMatchedMuonsFlag(kFALSE),
134   fNMuonsMin(-1), fNMuonsMax(100000),
135   fNMuonsFlag(kFALSE),
136   fNPionsMin(-1), fNPionsMax(100000),
137   fNPionsFlag(kFALSE),
138   fNKaonsMin(-1), fNKaonsMax(100000),
139   fNKaonsFlag(kFALSE),
140   fNProtonsMin(-1), fNProtonsMax(100000),
141   fNProtonsFlag(kFALSE),
142   fNLambdasMin(-1), fNLambdasMax(100000),
143   fNLambdasFlag(kFALSE),
144   fNPhotonsMin(-1), fNPhotonsMax(100000),
145   fNPhotonFlag(kFALSE),
146   fNPi0sMin(-1), fNPi0sMax(100000), 
147   fNPi0sFlag(kFALSE),
148   fNNeutronsMin(-1), fNNeutronsMax(100000), 
149   fNNeutronsFlag(kFALSE),
150   fNKaon0sMin(-1), fNKaon0sMax(100000), 
151   fNKaon0sFlag(kFALSE),
152   fTotalPMin(-1.0), fTotalPMax(1000000.0),
153   fTotalPFlag(kFALSE),
154   fMeanPtMin(-1.0), fMeanPtMax(100000.0),
155   fMeanPtFlag(kFALSE),
156   fTopPtMin(-1.0),
157   fTopPtMinFlag(kFALSE),
158   fTotalNeutralPMin(-1.0), fTotalNeutralPMax(1000000.0),   
159   fTotalNeutralPFlag(kFALSE),
160   fMeanNeutralPtMin(-1.0), fMeanNeutralPtMax(1000000.0), 
161   fMeanNeutralPtFlag(kFALSE),
162   fTopNeutralPtMin(-1.0), 
163   fTopNeutralPtMinFlag(kFALSE),
164   fEventPlaneAngleMin(-10000000.0), fEventPlaneAngleMax(10000000.0), 
165   fEventPlaneAngleFlag(kFALSE),
166   fHBTRadiiMin(-1.0), fHBTRadiiMax(100000.0), 
167   fHBTRadiiFlag(kFALSE),
168
169   fNumberOfFiredChipsLayer1Min(0), fNumberOfFiredChipsLayer1Max(100000),
170   fNumberOfFiredChipsLayer1Flag(kFALSE),
171   fNumberOfFiredChipsLayer2Min(0), fNumberOfFiredChipsLayer2Max(100000),
172   fNumberOfFiredChipsLayer2Flag(kFALSE),
173   fNumberOfSPDTrackletsMin(0), fNumberOfSPDTrackletsMax(100000),
174   fNumberOfSPDTrackletsFlag(kFALSE),
175   
176   fFiredTriggerClassFlag(kFALSE), fFiredTriggerClass(""),
177   fActiveTriggerClasses("")
178 {
179   //Default constructor which calls the Reset method.
180   Reset();
181 }
182
183 //___________________________________________________________________________
184 AliEventTagCuts::~AliEventTagCuts() {  
185   //Defaut destructor.
186 }
187
188 //___________________________________________________________________________
189 void AliEventTagCuts::Reset() {
190   //Sets dummy values to every private member.
191   fPeriodNumberFlag = kFALSE;
192   fOrbitNumberFlag = kFALSE;
193   fBunchCrossNumberFlag = kFALSE;
194   
195   fEventTypeFlag = kFALSE;
196
197   fNParticipantsFlag = kFALSE;
198   fImpactParamFlag = kFALSE;
199
200   fEtaFlag = kFALSE;
201   fPhiFlag = kFALSE;
202   fVxFlag = kFALSE;
203   fVyFlag = kFALSE;
204   fVzFlag = kFALSE;
205   fPVFlag = kFALSE;
206   fPVzErrorFlag = kFALSE;
207
208   fTriggerMaskFlag = kFALSE;
209   fTriggerClusterFlag = kFALSE;
210
211   fZDCNeutron1EnergyFlag = kFALSE;
212   fZDCProton1EnergyFlag = kFALSE;
213   fZDCNeutron2EnergyFlag = kFALSE;
214   fZDCProton2EnergyFlag = kFALSE;
215   fZDCEMEnergyFlag = kFALSE;
216   fT0VertexZFlag = kFALSE;
217   fMultFlag = kFALSE;
218   fPosMultFlag = kFALSE;
219   fNegMultFlag = kFALSE;
220   fNeutrMultFlag = kFALSE;
221   fNV0sFlag = kFALSE;
222   fNCascadesFlag = kFALSE;
223   fNKinksFlag = kFALSE;
224
225   fNPMDTracksFlag = kFALSE;
226   fNFMDTracksFlag = kFALSE;
227   fNPHOSClustersFlag = kFALSE;
228   fNEMCALClustersFlag = kFALSE;
229   fNJetCandidatesFlag = kFALSE;
230
231   fTopJetEnergyMinFlag = kFALSE;
232   fNHardPhotonCandidatesFlag = kFALSE;
233   fTopNeutralEnergyMinFlag = kFALSE;
234   fNChargedAbove1GeVFlag = kFALSE;
235   fNChargedAbove3GeVFlag = kFALSE;
236   fNChargedAbove10GeVFlag = kFALSE;
237   fNMuonsAbove1GeVFlag = kFALSE;
238   fNMuonsAbove3GeVFlag = kFALSE;
239   fNMuonsAbove10GeVFlag = kFALSE;
240   fNElectronsAbove1GeVFlag = kFALSE;
241   fNElectronsAbove3GeVFlag = kFALSE;
242   fNElectronsAbove10GeVFlag = kFALSE;
243   fNElectronsFlag = kFALSE;
244   fNFWMuonsFlag = kFALSE;
245   fNFWMatchedMuonsFlag = kFALSE;
246   fNMuonsFlag = kFALSE;
247   fNPionsFlag = kFALSE;
248   fNKaonsFlag = kFALSE;
249   fNProtonsFlag = kFALSE;
250   fNLambdasFlag = kFALSE;
251   fNPhotonFlag = kFALSE;
252   fNPi0sFlag = kFALSE;
253   fNNeutronsFlag = kFALSE;
254   fNKaon0sFlag = kFALSE;
255   fTotalPFlag = kFALSE;
256   fMeanPtFlag = kFALSE;
257   fTopPtMinFlag = kFALSE;
258   fTotalNeutralPFlag = kFALSE;
259   fMeanNeutralPtFlag = kFALSE;
260   fTopNeutralPtMinFlag = kFALSE;
261   fEventPlaneAngleFlag = kFALSE;
262   fHBTRadiiFlag = kFALSE;
263
264   fNumberOfFiredChipsLayer1Flag = kFALSE;
265   fNumberOfFiredChipsLayer2Flag = kFALSE;
266   fNumberOfSPDTrackletsFlag = kFALSE;
267
268   fPeriodNumberMin = 0, fPeriodNumberMax = 0xFFFFFFFF;
269   fOrbitNumberMin = 0, fOrbitNumberMax = 0xFFFFFFFF;
270   fBunchCrossNumberMin = 0, fBunchCrossNumberMax = 0xFFFF;
271
272   fEventType = 7;
273
274   fEtaMin = -13.0; fEtaMax = 13.0;
275   fPhiMin = 0.; fPhiMax = 2*(TMath::Pi());
276   fVxMin = -1000.0; fVxMax = 1000.0; 
277   fVyMin = -1000.0; fVyMax = 1000.0;  
278   fVzMin = -1000.0; fVzMax = 1000.0;
279   fNParticipantsMin = -1; fNParticipantsMax = 10000;
280   fImpactParamMin = -1.0; fImpactParamMax = 1000.0;
281   fPrimaryVertexFlag = 1;
282
283   fPrimaryVertexZErrorMin = -10000.; fPrimaryVertexZErrorMax = 10000.;
284   fTriggerMask = 0;
285   fTriggerCluster = 0;
286  
287   fZDCNeutron1EnergyMin = -1.0; fZDCNeutron1EnergyMax = 100000.0;
288   fZDCProton1EnergyMin = -1.0; fZDCProton1EnergyMax = 100000.0;
289   fZDCNeutron2EnergyMin = -1.0; fZDCNeutron2EnergyMax = 100000.0;
290   fZDCProton2EnergyMin = -1.0; fZDCProton2EnergyMax = 100000.0;
291   fZDCEMEnergyMin = -1.0; fZDCEMEnergyMax = 100000.0;
292   fT0VertexZMin = -10000.0; fT0VertexZMax = 10000.0;  
293   fMultMin = 0; fMultMax = 100000;  
294   fPosMultMin = -1; fPosMultMax = 100000;
295   fNegMultMin = -1; fNegMultMax = 100000;
296   fNeutrMultMin = -1; fNeutrMultMax = 100000;
297   fNV0sMin = -1; fNV0sMax = 1000000;
298   fNCascadesMin = -1; fNCascadesMax = 100000;
299   fNKinksMin = -1; fNKinksMax = 1000000;
300
301   fNPMDTracksMin = -1, fNPMDTracksMax = 100000;
302   fNFMDTracksMin = -1, fNFMDTracksMax = 100000;
303   fNPHOSClustersMin = -1, fNPHOSClustersMax = 100000;
304   fNEMCALClustersMin = -1, fNEMCALClustersMax = 100000;
305   fNJetCandidatesMin = -1, fNJetCandidatesMax = 100000;
306
307   fTopJetEnergyMin = -1.0; 
308   fNHardPhotonCandidatesMin = -1; fNHardPhotonCandidatesMax = 100000;
309   fTopNeutralEnergyMin = -1.0; 
310   fNChargedAbove1GeVMin = -1; fNChargedAbove1GeVMax = 100000;
311   fNChargedAbove3GeVMin = -1; fNChargedAbove3GeVMax = 100000;
312   fNChargedAbove10GeVMin = -1; fNChargedAbove10GeVMax = 100000;
313   fNMuonsAbove1GeVMin = -1; fNMuonsAbove1GeVMax = 100000;
314   fNMuonsAbove3GeVMin = -1; fNMuonsAbove3GeVMax = 100000;
315   fNMuonsAbove10GeVMin = -1; fNMuonsAbove10GeVMax = 100000; 
316   fNElectronsAbove1GeVMin = -1; fNElectronsAbove1GeVMax = 100000;
317   fNElectronsAbove3GeVMin = -1; fNElectronsAbove3GeVMax = 100000;
318   fNElectronsAbove10GeVMin = -1; fNElectronsAbove10GeVMax = 100000;
319   fNElectronsMin = -1; fNElectronsMax = 100000;
320   fNFWMuonsMin = -1; fNFWMuonsMax = 100000;
321   fNFWMatchedMuonsMin = -1; fNFWMatchedMuonsMax = 100000;
322   fNMuonsMin = -1; fNMuonsMax = 100000;
323   fNPionsMin = -1; fNPionsMax = 100000;
324   fNKaonsMin = -1; fNKaonsMax = 100000;
325   fNProtonsMin = -1; fNProtonsMax = 100000;
326   fNLambdasMin = -1; fNLambdasMax = 100000;
327   fNPhotonsMin = -1; fNPhotonsMax = 100000;
328   fNPi0sMin = -1; fNPi0sMax = 100000; 
329   fNNeutronsMin = -1; fNNeutronsMax = 100000; 
330   fNKaon0sMin = -1; fNKaon0sMax = 100000; 
331   fTotalPMin = -1.0; fTotalPMax = 1000000.0;
332   fMeanPtMin = -1.0; fMeanPtMax = 100000.0;
333   fTopPtMin = -1.0; fTotalNeutralPMin = -1.0;
334   fTotalNeutralPMax = 1000000.0;   
335   fMeanNeutralPtMin = -1.0; fMeanNeutralPtMax = 1000000.0; 
336   fTopNeutralPtMin = -1.0; 
337   fEventPlaneAngleMin = -10000000.0; fEventPlaneAngleMax = 10000000.0; 
338   fHBTRadiiMin = -1.0; fHBTRadiiMax = 100000.0; 
339
340   fNumberOfFiredChipsLayer1Min = 0, fNumberOfFiredChipsLayer1Max = 100000;
341   fNumberOfFiredChipsLayer2Min = 0, fNumberOfFiredChipsLayer2Max = 100000;
342   fNumberOfSPDTrackletsMin = 0, fNumberOfSPDTrackletsMax = 100000;
343
344   fFiredTriggerClass = "";
345   fFiredTriggerClassFlag = kFALSE;
346 }
347
348 //___________________________________________________________________________
349 void AliEventTagCuts::SetEventType(UInt_t ntype) {
350   //Sets the event type
351   //and the corresponding flag to kTRUE if the cut is used.
352   fEventType = ntype;
353   fEventTypeFlag = kTRUE;
354 }
355
356 //___________________________________________________________________________
357 void AliEventTagCuts::SetNumberOfFiredChipsLayer1Range(Int_t low, Int_t high) {
358   //Sets the range for the number of fired chips of layer 1
359   //and the corresponding flag to kTRUE if the cut is used.
360   fNumberOfFiredChipsLayer1Min = low;
361   fNumberOfFiredChipsLayer1Max = high;
362   fNumberOfFiredChipsLayer1Flag = kTRUE;
363 }
364
365 //___________________________________________________________________________
366 void AliEventTagCuts::SetNumberOfFiredChipsLayer2Range(Int_t low, Int_t high) {
367   //Sets the range for the number of fired chips of layer 2
368   //and the corresponding flag to kTRUE if the cut is used.
369   fNumberOfFiredChipsLayer2Min = low;
370   fNumberOfFiredChipsLayer2Max = high;
371   fNumberOfFiredChipsLayer2Flag = kTRUE;
372 }
373
374 //___________________________________________________________________________
375 void AliEventTagCuts::SetNumberOfSPDTrackletsRange(Int_t low, Int_t high) {
376   //Sets the range for the number of fired chips of layer 1
377   //and the corresponding flag to kTRUE if the cut is used.
378   fNumberOfSPDTrackletsMin = low;
379   fNumberOfSPDTrackletsMax = high;
380   fNumberOfSPDTrackletsFlag = kTRUE;
381 }
382
383 //___________________________________________________________________________
384 void AliEventTagCuts::SetPeriodNumberRange(UInt_t low, UInt_t high) {
385   //Sets the period number range
386   //and the corresponding flag to kTRUE if the cut is used.
387   fPeriodNumberMin = low;
388   fPeriodNumberMax = high; 
389   fPeriodNumberFlag = kTRUE;
390 }
391
392 //___________________________________________________________________________
393 void AliEventTagCuts::SetOrbitNumberRange(UInt_t low, UInt_t high) {
394   //Sets the orbit number range
395   //and the corresponding flag to kTRUE if the cut is used.
396   fOrbitNumberMin = low;
397   fOrbitNumberMax = high; 
398   fOrbitNumberFlag = kTRUE;
399 }
400
401 //___________________________________________________________________________
402 void AliEventTagCuts::SetBunchCrossNumberRange(UShort_t low, UShort_t high) {
403   //Sets the BC number range
404   //and the corresponding flag to kTRUE if the cut is used.
405   fBunchCrossNumberMin = low;
406   fBunchCrossNumberMax = high; 
407   fBunchCrossNumberFlag = kTRUE;
408 }
409
410 //___________________________________________________________________________
411 void AliEventTagCuts::SetPrimaryVertexXRange(Float_t low, Float_t high) {
412   //Sets the primary vertex x range 
413   //and the corresponding flag to kTRUE if the cut is used.
414   fVxMin = low;
415   fVxMax = high; 
416   fVxFlag = kTRUE;
417 }
418
419 //___________________________________________________________________________
420 void AliEventTagCuts::SetPrimaryVertexYRange(Float_t low, Float_t high) {
421   //Sets the primary vertex y range 
422   //and the corresponding flag to kTRUE if the cut is used.
423   fVyMin = low;
424   fVyMax = high; 
425   fVyFlag = kTRUE;
426 }
427
428 //___________________________________________________________________________
429 void AliEventTagCuts::SetPrimaryVertexZRange(Float_t low, Float_t high) {
430   //Sets the primary vertex z range 
431   //and the corresponding flag to kTRUE if the cut is used.
432   fVzMin = low;
433   fVzMax = high; 
434   fVzFlag = kTRUE;
435 }
436
437 //___________________________________________________________________________
438  void AliEventTagCuts::SetEtaLeadingParticleRange(Float_t low, Float_t high) {
439   //Sets the eta range of LP 
440   //and the corresponding flag to kTRUE if the cut is used.
441   fEtaMin = low;
442   fEtaMax = high; 
443   fEtaFlag = kTRUE;
444 }
445 //__________________________________________________________________________
446 void AliEventTagCuts::SetPhiLeadingParticleRange(Float_t low, Float_t high) {
447   //Sets the eta range of LP 
448   //and the corresponding flag to kTRUE if the cut is used.
449   fPhiMin = low;
450   fPhiMax = high; 
451   fPhiFlag = kTRUE;
452
453
454 //___________________________________________________________________________
455 void AliEventTagCuts::SetPrimaryVertexZErrorRange(Float_t low, Float_t high) {
456   //Sets the primary vertex z error range 
457   //and the corresponding flag to kTRUE if the cut is used.
458   fPrimaryVertexZErrorMin = low;
459   fPrimaryVertexZErrorMax = high; 
460   fPVzErrorFlag = kTRUE;
461 }
462
463 //___________________________________________________________________________
464 void AliEventTagCuts::SetTriggerMask(ULong64_t trmask) {
465   //Sets the trigger mask 
466   //and the corresponding flag to kTRUE if the cut is used.
467   fTriggerMask = trmask;
468   fTriggerMaskFlag = kTRUE;
469 }
470
471 //___________________________________________________________________________
472 void AliEventTagCuts::SetTriggerCluster(UChar_t trcluster) {
473   //Sets the trigger cluster 
474   //and the corresponding flag to kTRUE if the cut is used.
475   fTriggerCluster = trcluster;
476   fTriggerClusterFlag = kTRUE;
477 }
478
479 //___________________________________________________________________________
480 void AliEventTagCuts::SetMultiplicityRange(Int_t low, Int_t high) {
481   //Sets the primary multiplicity range 
482   //and the corresponding flag to kTRUE if the cut is used.
483   fMultMin = low;
484   fMultMax = high;
485   fMultFlag = kTRUE;
486 }
487
488 //___________________________________________________________________________
489 void AliEventTagCuts::SetNParticipantsRange(Int_t low, Int_t high) {
490   //Sets the number of participants range 
491   //and the corresponding flag to kTRUE if the cut is used.
492   fNParticipantsMin = low;
493   fNParticipantsMax = high;
494   fNParticipantsFlag = kTRUE;
495 }
496
497 //___________________________________________________________________________
498 void AliEventTagCuts::SetImpactParamRange(Float_t low, Float_t high) {
499   //Sets the impact parameter range 
500   //and the corresponding flag to kTRUE if the cut is used.
501   fImpactParamMin = low;
502   fImpactParamMax = high;
503   fImpactParamFlag = kTRUE;
504 }
505  
506
507 //___________________________________________________________________________
508 void AliEventTagCuts::SetPrimaryVertexFlag(Int_t flag) {
509   //Sets the primary vertex flag cut 
510   //and the corresponding flag to kTRUE if the cut is used.
511   fPrimaryVertexFlag = flag;
512   fPVFlag = kTRUE;
513 }
514
515 //___________________________________________________________________________
516 void AliEventTagCuts::SetZDCNeutron1Range(Float_t low, Float_t high) {
517   //Sets the ZDC's neutron energy range 
518   //and the corresponding flag to kTRUE if the cut is used.
519   fZDCNeutron1EnergyMin = low;
520   fZDCNeutron1EnergyMax = high;
521   fZDCNeutron1EnergyFlag = kTRUE;
522 }
523
524 //___________________________________________________________________________
525 void AliEventTagCuts::SetZDCProton1Range(Float_t low, Float_t high) {
526   //Sets the ZDC's proton energy range 
527   //and the corresponding flag to kTRUE if the cut is used.
528   fZDCProton1EnergyMin = low;
529   fZDCProton1EnergyMax = high;
530   fZDCProton1EnergyFlag = kTRUE;
531 }
532 //___________________________________________________________________________
533 void AliEventTagCuts::SetZDCNeutron2Range(Float_t low, Float_t high) {
534   //Sets the ZDC's neutron energy range 
535   //and the corresponding flag to kTRUE if the cut is used.
536   fZDCNeutron2EnergyMin = low;
537   fZDCNeutron2EnergyMax = high;
538   fZDCNeutron2EnergyFlag = kTRUE;
539 }
540 //___________________________________________________________________________
541 void AliEventTagCuts::SetZDCProton2Range(Float_t low, Float_t high) {
542   //Sets the ZDC's proton energy range 
543   //and the corresponding flag to kTRUE if the cut is used.
544   fZDCProton2EnergyMin = low;
545   fZDCProton2EnergyMax = high;
546   fZDCProton2EnergyFlag = kTRUE;
547 }
548 //___________________________________________________________________________
549 void AliEventTagCuts::SetZDCEMRange(Float_t low, Float_t high) {
550   //Sets the ZDC's em energy range 
551   //and the corresponding flag to kTRUE if the cut is used.
552   fZDCEMEnergyMin = low;
553   fZDCEMEnergyMax = high;
554   fZDCEMEnergyFlag = kTRUE;
555 }
556
557 //___________________________________________________________________________
558 void AliEventTagCuts::SetT0VertexZRange(Float_t low, Float_t high) {
559   //Sets the T0's Vz range 
560   //and the corresponding flag to kTRUE if the cut is used.
561   fT0VertexZMin = low;
562   fT0VertexZMax = high;
563   fT0VertexZFlag = kTRUE;
564 }
565
566 //___________________________________________________________________________
567 void AliEventTagCuts::SetPosMultiplicityRange(Int_t low, Int_t high) {
568   //Sets the positive multiplicity range 
569   //and the corresponding flag to kTRUE if the cut is used.
570   fPosMultMin = low;
571   fPosMultMax = high;
572   fPosMultFlag = kTRUE;
573 }
574
575
576 //___________________________________________________________________________
577 void AliEventTagCuts::SetNegMultiplicityRange(Int_t low, Int_t high) {
578   //Sets the negative multiplicity range 
579   //and the corresponding flag to kTRUE if the cut is used.
580   fNegMultMin = low;
581   fNegMultMax = high;
582   fNegMultFlag = kTRUE;
583 }
584
585
586 //___________________________________________________________________________
587 void AliEventTagCuts::SetNeutrMultiplicityRange(Int_t low, Int_t high) {
588   //Sets the neutral particle multiplicity range 
589   //and the corresponding flag to kTRUE if the cut is used.
590   fNeutrMultMin = low;
591   fNeutrMultMax = high;
592   fNeutrMultFlag = kTRUE;
593 }
594
595 //___________________________________________________________________________
596 void AliEventTagCuts::SetNV0sRange(Int_t low, Int_t high) {
597   //Sets the v0s multiplicity range 
598   //and the corresponding flag to kTRUE if the cut is used.
599   fNV0sMin = low;
600   fNV0sMax = high;
601   fNV0sFlag = kTRUE;
602 }
603
604 //___________________________________________________________________________
605 void AliEventTagCuts::SetNCascadesRange(Int_t low, Int_t high) {
606   //Sets the cascades multiplicity range 
607   //and the corresponding flag to kTRUE if the cut is used.
608   fNCascadesMin = low;
609   fNCascadesMax = high;
610   fNCascadesFlag = kTRUE;
611 }
612
613 //___________________________________________________________________________
614 void AliEventTagCuts::SetNKinksRange(Int_t low, Int_t high) {
615   //Sets the kinks multiplicity range 
616   //and the corresponding flag to kTRUE if the cut is used.
617   fNKinksMin = low;
618   fNKinksMax = high;
619   fNKinksFlag = kTRUE;
620 }
621
622 //___________________________________________________________________________
623 void AliEventTagCuts::SetNPMDTracksRange(Int_t low, Int_t high) {
624   //Sets the number of PMD tracks range 
625   //and the corresponding flag to kTRUE if the cut is used.
626   fNPMDTracksMin = low;
627   fNPMDTracksMax = high;
628   fNPMDTracksFlag = kTRUE;
629 }
630
631 //___________________________________________________________________________
632 void AliEventTagCuts::SetNFMDTracksRange(Int_t low, Int_t high) {
633   //Sets the number of FMD tracks range 
634   //and the corresponding flag to kTRUE if the cut is used.
635   fNFMDTracksMin = low;
636   fNFMDTracksMax = high;
637   fNFMDTracksFlag = kTRUE;
638 }
639
640 //___________________________________________________________________________
641 void AliEventTagCuts::SetNPHOSClustersRange(Int_t low, Int_t high) {
642   //Sets the number of PHOS clusters range 
643   //and the corresponding flag to kTRUE if the cut is used.
644   fNPHOSClustersMin = low;
645   fNPHOSClustersMax = high;
646   fNPHOSClustersFlag = kTRUE;
647 }
648
649 //___________________________________________________________________________
650 void AliEventTagCuts::SetNEMCALClustersRange(Int_t low, Int_t high) {
651   //Sets the number of EMCAL clusters range 
652   //and the corresponding flag to kTRUE if the cut is used.
653   fNEMCALClustersMin = low;
654   fNEMCALClustersMax = high;
655   fNEMCALClustersFlag = kTRUE;
656 }
657
658 //___________________________________________________________________________
659 void AliEventTagCuts::SetNJetCandidatesRange(Int_t low, Int_t high) {
660   //Sets the number of jet candidates range 
661   //and the corresponding flag to kTRUE if the cut is used.
662   fNJetCandidatesMin = low;
663   fNJetCandidatesMax = high;
664   fNJetCandidatesFlag = kTRUE;
665 }
666
667 //___________________________________________________________________________
668 void AliEventTagCuts::SetTopJetEnergyMin(Float_t low) {
669   //Sets the lower limit of the maximum jet energy
670   //and the corresponding flag to kTRUE if the cut is used.
671   fTopJetEnergyMin = low; 
672   fTopJetEnergyMinFlag = kTRUE;
673 }
674 //___________________________________________________________________________
675 void AliEventTagCuts::SetTopNeutralEnergyMin(Float_t low) {
676   //Sets the lower limit of the maximum neutral jet energy
677   //and the corresponding flag to kTRUE if the cut is used.
678   fTopNeutralEnergyMin = low; 
679   fTopNeutralEnergyMinFlag = kTRUE;
680 }
681 //___________________________________________________________________________
682 void AliEventTagCuts::SetNHardPhotonsRange(Int_t low, Int_t high) {
683   //Sets the hard photons multiplicity range
684   //and the corresponding flag to kTRUE if the cut is used.
685   fNHardPhotonCandidatesMin = low;
686   fNHardPhotonCandidatesMax = high;
687   fNHardPhotonCandidatesFlag = kTRUE;
688
689
690 //___________________________________________________________________________
691 void AliEventTagCuts::SetNChargedAbove1GeVRange(Int_t low, Int_t high) {
692   //Sets the number of charged above 1GeV range
693   //and the corresponding flag to kTRUE if the cut is used.
694   fNChargedAbove1GeVMin = low;
695   fNChargedAbove1GeVMax = high;
696   fNChargedAbove1GeVFlag = kTRUE;
697 }
698
699 //___________________________________________________________________________
700  void AliEventTagCuts::SetNChargedAbove3GeVRange(Int_t low, Int_t high) {
701   //Sets the number of charged above 3GeV range
702   //and the corresponding flag to kTRUE if the cut is used.
703   fNChargedAbove3GeVMin = low;
704   fNChargedAbove3GeVMax = high;
705   fNChargedAbove3GeVFlag = kTRUE;
706 }
707
708
709 //___________________________________________________________________________
710 void AliEventTagCuts::SetNChargedAbove10GeVRange(Int_t low, Int_t high) {
711   //Sets the number of charged above 10GeV range
712   //and the corresponding flag to kTRUE if the cut is used.
713   fNChargedAbove10GeVMin = low;
714   fNChargedAbove10GeVMax = high;
715   fNChargedAbove10GeVFlag = kTRUE;
716 }
717
718
719 //___________________________________________________________________________
720 void AliEventTagCuts::SetNMuonsAbove1GeVRange(Int_t low, Int_t high) {
721   //Sets the number of muons above 1GeV range
722   //and the corresponding flag to kTRUE if the cut is used.
723   fNMuonsAbove1GeVMin = low;
724   fNMuonsAbove1GeVMax = high;
725   fNMuonsAbove1GeVFlag = kTRUE;
726 }
727
728
729 //___________________________________________________________________________
730 void AliEventTagCuts::SetNMuonsAbove3GeVRange(Int_t low, Int_t high) {
731   //Sets the number of muons above 3GeV range
732   //and the corresponding flag to kTRUE if the cut is used.
733   fNMuonsAbove3GeVMin = low;
734   fNMuonsAbove3GeVMax = high;
735   fNMuonsAbove3GeVFlag = kTRUE;
736
737
738 //___________________________________________________________________________
739 void AliEventTagCuts::SetNMuonsAbove10GeVRange(Int_t low, Int_t high) {
740   //Sets the number of muons above 10GeV range
741   //and the corresponding flag to kTRUE if the cut is used.
742   fNMuonsAbove10GeVMin = low;
743   fNMuonsAbove10GeVMax = high; 
744   fNMuonsAbove10GeVFlag = kTRUE;
745 }
746
747
748 //___________________________________________________________________________
749 void AliEventTagCuts::SetNElectronsAbove1GeVRange(Int_t low, Int_t high) {
750   //Sets the number of electrons above 1GeV range
751   //and the corresponding flag to kTRUE if the cut is used.
752   fNElectronsAbove1GeVMin = low;
753   fNElectronsAbove1GeVMax = high;
754   fNElectronsAbove1GeVFlag = kTRUE;
755 }
756
757 //___________________________________________________________________________
758 void AliEventTagCuts::SetNElectronsAbove3GeVRange(Int_t low, Int_t high) {
759   //Sets the number of electrons above 3GeV range
760   //and the corresponding flag to kTRUE if the cut is used.
761   fNElectronsAbove3GeVMin = low;
762   fNElectronsAbove3GeVMax = high;
763   fNElectronsAbove3GeVFlag = kTRUE;
764 }
765
766 //___________________________________________________________________________
767 void AliEventTagCuts::SetNElectronsAbove10GeVRange(Int_t low, Int_t high) {  
768   //Sets the number of electrons above 10GeV range
769   //and the corresponding flag to kTRUE if the cut is used.
770   fNElectronsAbove10GeVMin = low;
771   fNElectronsAbove10GeVMax = high;
772   fNElectronsAbove10GeVFlag = kTRUE;
773 }
774 //___________________________________________________________________________
775 void AliEventTagCuts::SetNElectronRange(Int_t low, Int_t high) {
776   //Sets the electron multiplicity range
777   //and the corresponding flag to kTRUE if the cut is used.
778   fNElectronsMin = low;
779   fNElectronsMax = high;
780   fNElectronsFlag = kTRUE;
781 }
782 //___________________________________________________________________________
783 void AliEventTagCuts::SetNFWMuonRange(Int_t low, Int_t high) {
784   //Sets the forward muon multiplicity range
785   //and the corresponding flag to kTRUE if the cut is used.
786   fNFWMuonsMin = low;
787   fNFWMuonsMax = high;
788   fNFWMuonsFlag = kTRUE;
789 }
790
791 //___________________________________________________________________________
792 void AliEventTagCuts::SetNFWMatchedMuonRange(Int_t low, Int_t high) {
793   //Sets the forward trigger matched muon multiplicity range
794   //and the corresponding flag to kTRUE if the cut is used.
795   fNFWMatchedMuonsMin = low;
796   fNFWMatchedMuonsMax = high;
797   fNFWMatchedMuonsFlag = kTRUE;
798 }
799
800 //___________________________________________________________________________
801 void AliEventTagCuts::SetNMuonRange(Int_t low, Int_t high) {
802   //Sets the muon multiplicity range
803   //and the corresponding flag to kTRUE if the cut is used.
804   fNMuonsMin = low;
805   fNMuonsMax = high;
806   fNMuonsFlag = kTRUE;
807 }
808
809 //___________________________________________________________________________
810 void AliEventTagCuts::SetNPionRange(Int_t low, Int_t high) {
811   //Sets the pion multiplicity range
812   //and the corresponding flag to kTRUE if the cut is used.
813   fNPionsMin = low;
814   fNPionsMax = high;
815   fNPionsFlag = kTRUE;
816
817
818 //___________________________________________________________________________
819 void AliEventTagCuts::SetNKaonRange(Int_t low, Int_t high) {
820   //Sets the kaon multiplicity range
821   //and the corresponding flag to kTRUE if the cut is used.
822   fNKaonsMin = low;
823   fNKaonsMax = high;
824   fNKaonsFlag = kTRUE;
825 }
826
827 //___________________________________________________________________________
828 void AliEventTagCuts::SetNProtonRange(Int_t low, Int_t high) {
829   //Sets the proton multiplicity range
830   //and the corresponding flag to kTRUE if the cut is used.
831   fNProtonsMin = low;
832   fNProtonsMax = high;
833   fNProtonsFlag = kTRUE;
834
835
836 //___________________________________________________________________________
837 void AliEventTagCuts::SetNLambdaRange(Int_t low, Int_t high) {
838   //Sets the lambda multiplicity range
839   //and the corresponding flag to kTRUE if the cut is used.
840   fNLambdasMin = low;
841   fNLambdasMax = high;
842   fNLambdasFlag = kTRUE;
843
844 //___________________________________________________________________________
845 void AliEventTagCuts::SetNPhotonRange(Int_t low, Int_t high) {
846   //Sets the photon multiplicity range
847   //and the corresponding flag to kTRUE if the cut is used.
848   fNPhotonsMin = low;
849   fNPhotonsMax = high;
850   fNPhotonFlag = kTRUE;
851
852 //___________________________________________________________________________
853 void AliEventTagCuts::SetNPi0Range(Int_t low, Int_t high) {
854   //Sets the pi0 multiplicity range
855   //and the corresponding flag to kTRUE if the cut is used.
856   fNPi0sMin = low;
857   fNPi0sMax = high; 
858   fNPi0sFlag = kTRUE;
859 }  
860
861 //___________________________________________________________________________
862 void AliEventTagCuts::SetNNeutronRange(Int_t low, Int_t high) {
863   //Sets the neutron multiplicity range
864   //and the corresponding flag to kTRUE if the cut is used.
865   fNNeutronsMin = low;
866   fNNeutronsMax = high; 
867   fNNeutronsFlag = kTRUE;
868 }
869
870 //___________________________________________________________________________
871 void AliEventTagCuts::SetNKaon0Range(Int_t low, Int_t high) {  
872   //Sets the K0s multiplicity range
873   //and the corresponding flag to kTRUE if the cut is used.
874   fNKaon0sMin = low;
875   fNKaon0sMax = high; 
876   fNKaon0sFlag = kTRUE;
877 }
878
879 //___________________________________________________________________________
880 void AliEventTagCuts::SetTotalPRange(Float_t low, Float_t high) {
881   //Sets the total momentum range
882   //and the corresponding flag to kTRUE if the cut is used.
883   fTotalPMin = low;
884   fTotalPMax = high;
885   fTotalPFlag = kTRUE;
886 }
887
888 //___________________________________________________________________________
889 void AliEventTagCuts::SetMeanPtRange(Float_t low, Float_t high) {
890   //Sets the mean Pt range
891   //and the corresponding flag to kTRUE if the cut is used.
892   fMeanPtMin = low;
893   fMeanPtMax = high;
894   fMeanPtFlag = kTRUE;
895 }  
896
897 //___________________________________________________________________________
898 void AliEventTagCuts::SetTopPtMin(Float_t low) {
899   //Sets the lower limit of the max Pt value
900   //and the corresponding flag to kTRUE if the cut is used.
901   fTopPtMin = low; 
902   fTopPtMinFlag = kTRUE;
903 }
904
905 //___________________________________________________________________________
906 void AliEventTagCuts::SetTotalNeutralPRange(Float_t low, Float_t high) {  
907   //Sets the total momentum of neutral particles range
908   //and the corresponding flag to kTRUE if the cut is used.
909   fTotalNeutralPMin =low ;
910   fTotalNeutralPMax = high;  
911   fTotalNeutralPFlag = kTRUE;
912 }
913 //___________________________________________________________________________
914 void AliEventTagCuts::SetMeanNeutralPtPRange(Float_t low, Float_t high) {  
915   //Sets the mean Pt of neutral particles range
916   //and the corresponding flag to kTRUE if the cut is used.
917   fMeanNeutralPtMin = low;
918   fMeanNeutralPtMax = high; 
919   fMeanNeutralPtFlag = kTRUE;
920 }
921 //___________________________________________________________________________
922 void AliEventTagCuts::SetTopNeutralPtMin(Float_t low) {  
923   //Sets the lower limit of the maximum Pt of neutral particles
924   //and the corresponding flag to kTRUE if the cut is used.
925   fTopNeutralPtMin = low; 
926   fTopNeutralPtMinFlag = kTRUE;
927 }
928
929 //___________________________________________________________________________
930 void AliEventTagCuts::SetEventPlaneAngleRange(Float_t low, Float_t high) {
931   //Sets the event plane range
932   //and the corresponding flag to kTRUE if the cut is used.
933   fEventPlaneAngleMin = low;
934   fEventPlaneAngleMax = high; 
935   fEventPlaneAngleFlag = kTRUE;
936 }
937
938 //___________________________________________________________________________
939 void AliEventTagCuts::SetHBTRadiiRange(Float_t low, Float_t high) {
940   //Sets the HBT radii range
941   //and the corresponding flag to kTRUE if the cut is used.
942   fHBTRadiiMin = low;
943   fHBTRadiiMax = high; 
944   fHBTRadiiFlag = kTRUE;
945 }
946
947 void AliEventTagCuts::AddRequiredFiredTriggerClass(TString aclass)
948 {
949   fFiredTriggerClassFlag += " ";
950   fFiredTriggerClass += aclass;
951   fFiredTriggerClassFlag = kTRUE;
952 }
953
954 void AliEventTagCuts::ResetTriggerClasses()
955 {
956   fFiredTriggerClassFlag = kFALSE;
957   fFiredTriggerClass = "";
958 }
959
960 void AliEventTagCuts::InitializeTriggerClasses(TString aclass)
961 {
962   fActiveTriggerClasses = aclass;
963 }
964
965 //___________________________________________________________________________
966 Bool_t AliEventTagCuts::IsAccepted(AliEventTag *EvTag) const {
967   //Returns true if the event is accepted otherwise false.
968   if(fEventTypeFlag)
969     if(EvTag->GetEventType() != fEventType)
970       return kFALSE;
971   
972   if(fNumberOfFiredChipsLayer1Flag)
973     if((EvTag->GetNumberOfFiredChipsLayer1() < fNumberOfFiredChipsLayer1Min) || (EvTag->GetNumberOfFiredChipsLayer1() > fNumberOfFiredChipsLayer1Max))
974       return kFALSE;
975
976   if(fNumberOfFiredChipsLayer2Flag)
977     if((EvTag->GetNumberOfFiredChipsLayer2() < fNumberOfFiredChipsLayer2Min) || (EvTag->GetNumberOfFiredChipsLayer2() > fNumberOfFiredChipsLayer2Max))
978       return kFALSE;
979
980   if(fNumberOfSPDTrackletsFlag)
981     if((EvTag->GetNumberOfSPDTracklets() < fNumberOfSPDTrackletsMin) || (EvTag->GetNumberOfSPDTracklets() > fNumberOfSPDTrackletsMax))
982       return kFALSE;
983
984   if(fPeriodNumberFlag)
985     if((EvTag->GetPeriodNumber() < fPeriodNumberMin) || (EvTag->GetPeriodNumber() > fPeriodNumberMax))
986       return kFALSE;
987
988   if(fOrbitNumberFlag)
989     if((EvTag->GetOrbitNumber() < fOrbitNumberMin) || (EvTag->GetOrbitNumber() > fOrbitNumberMax))
990       return kFALSE;
991
992   if(fBunchCrossNumberFlag)
993     if((EvTag->GetBunchCrossNumber() < fBunchCrossNumberMin) || (EvTag->GetBunchCrossNumber() > fBunchCrossNumberMax))
994       return kFALSE;
995
996
997  if(fEtaFlag)
998     if((EvTag->GetEtaMaxPt() < fEtaMin) || (EvTag->GetEtaMaxPt() > fEtaMax))
999       return kFALSE;
1000
1001   if(fPhiFlag)
1002     if((EvTag->GetPhiMaxPt() < fPhiMin) || (EvTag->GetPhiMaxPt() > fPhiMax))
1003       return kFALSE;
1004
1005   if(fVzFlag)
1006     if((EvTag->GetVertexZ() < fVzMin) || (EvTag->GetVertexZ() > fVzMax))
1007       return kFALSE;
1008   
1009   if(fVyFlag)
1010     if((EvTag->GetVertexY() < fVyMin) || (EvTag->GetVertexY() > fVyMax))
1011       return kFALSE;
1012   
1013   if(fVxFlag)
1014     if((EvTag->GetVertexX() < fVxMin) || (EvTag->GetVertexX() > fVxMax))
1015       return kFALSE;
1016   
1017   if(fNParticipantsFlag)
1018     if((EvTag->GetNumOfParticipants() < fNParticipantsMin) || (EvTag->GetNumOfParticipants() > fNParticipantsMax))
1019       return kFALSE; 
1020   
1021   if(fImpactParamFlag)
1022     if((EvTag->GetImpactParameter() < fImpactParamMin) || (EvTag->GetImpactParameter() > fImpactParamMax))
1023       return kFALSE; 
1024   
1025   if(fPVFlag)
1026     if((EvTag->GetVertexFlag() != fPrimaryVertexFlag))
1027       return kFALSE; 
1028   
1029   if(fPVzErrorFlag)
1030     if((EvTag->GetVertexZError() < fPrimaryVertexZErrorMin) || (EvTag->GetVertexZError() > fPrimaryVertexZErrorMax))
1031       return kFALSE; 
1032   if(fTriggerMaskFlag)
1033     if((EvTag->GetTriggerMask() & fTriggerMask) != fTriggerMask)
1034       return kFALSE; 
1035   if(fTriggerClusterFlag)
1036     if((EvTag->GetTriggerCluster() != fTriggerCluster))
1037       return kFALSE; 
1038
1039   if(fZDCNeutron1EnergyFlag)
1040     if((EvTag->GetZDCNeutron1Energy() < fZDCNeutron1EnergyMin) || (EvTag->GetZDCNeutron1Energy() > fZDCNeutron1EnergyMax))
1041       return kFALSE; 
1042   
1043   if(fZDCProton1EnergyFlag)
1044     if((EvTag->GetZDCProton1Energy() < fZDCProton1EnergyMin) || (EvTag->GetZDCProton1Energy() > fZDCProton1EnergyMax))
1045       return kFALSE; 
1046   
1047   if(fZDCNeutron2EnergyFlag)
1048     if((EvTag->GetZDCNeutron2Energy() < fZDCNeutron2EnergyMin) || (EvTag->GetZDCNeutron2Energy() > fZDCNeutron2EnergyMax))
1049       return kFALSE; 
1050   
1051   if(fZDCProton2EnergyFlag)
1052     if((EvTag->GetZDCProton2Energy() < fZDCProton2EnergyMin) || (EvTag->GetZDCProton2Energy() > fZDCProton2EnergyMax))
1053       return kFALSE; 
1054   
1055   if(fZDCEMEnergyFlag)
1056     if((EvTag->GetZDCEMEnergy(1) < fZDCEMEnergyMin) || (EvTag->GetZDCEMEnergy(1) > fZDCEMEnergyMax))
1057       return kFALSE; 
1058   
1059   if(fT0VertexZFlag)
1060     if((EvTag->GetT0VertexZ() < fT0VertexZMin) || (EvTag->GetT0VertexZ() > fT0VertexZMax))
1061       return kFALSE; 
1062   
1063   if(fMultFlag)
1064     if((EvTag->GetNumOfTracks() < fMultMin) || (EvTag->GetNumOfTracks() > fMultMax))
1065       return kFALSE; 
1066   
1067   if(fPosMultFlag)
1068     if((EvTag->GetNumOfPosTracks() < fPosMultMin) || (EvTag->GetNumOfPosTracks() > fPosMultMax))
1069       return kFALSE; 
1070   
1071   if(fNegMultFlag)
1072     if((EvTag->GetNumOfNegTracks() < fNegMultMin) || (EvTag->GetNumOfNegTracks() > fNegMultMax))
1073       return kFALSE; 
1074   
1075   if(fNeutrMultFlag)
1076     if((EvTag->GetNumOfNeutrTracks() < fNeutrMultMin) || (EvTag->GetNumOfNeutrTracks() > fNeutrMultMax))
1077       return kFALSE; 
1078   
1079   if(fNV0sFlag)
1080     if((EvTag->GetNumOfV0s() < fNV0sMin) || (EvTag->GetNumOfV0s() > fNV0sMax))
1081       return kFALSE; 
1082   
1083   if(fNCascadesFlag)
1084     if((EvTag->GetNumOfCascades() < fNCascadesMin) || (EvTag->GetNumOfCascades() > fNCascadesMax))
1085       return kFALSE; 
1086   
1087   if(fNKinksFlag)
1088     if((EvTag->GetNumOfKinks() < fNKinksMin) || (EvTag->GetNumOfKinks() > fNKinksMax))
1089       return kFALSE; 
1090
1091
1092   if(fNPMDTracksFlag)
1093     if((EvTag->GetNumOfPMDTracks() < fNPMDTracksMin) || (EvTag->GetNumOfPMDTracks() > fNPMDTracksMax))
1094       return kFALSE; 
1095   if(fNFMDTracksFlag)
1096     if((EvTag->GetNumOfFMDTracks() < fNFMDTracksMin) || (EvTag->GetNumOfFMDTracks() > fNFMDTracksMax))
1097       return kFALSE; 
1098   if(fNPHOSClustersFlag)
1099     if((EvTag->GetNumOfPHOSClusters() < fNPHOSClustersMin) || (EvTag->GetNumOfPHOSClusters() > fNPHOSClustersMax))
1100       return kFALSE; 
1101   if(fNEMCALClustersFlag)
1102     if((EvTag->GetNumOfEMCALClusters() < fNEMCALClustersMin) || (EvTag->GetNumOfEMCALClusters() > fNEMCALClustersMax))
1103       return kFALSE; 
1104   if(fNJetCandidatesFlag)
1105     if((EvTag->GetNumOfJetCandidates() < fNJetCandidatesMin) || (EvTag->GetNumOfJetCandidates() > fNJetCandidatesMax))
1106       return kFALSE; 
1107
1108
1109   if(fTopJetEnergyMinFlag)
1110     if((EvTag->GetMaxJetEnergy() < fTopJetEnergyMin))
1111       return kFALSE; 
1112   
1113   if(fNHardPhotonCandidatesFlag)
1114     if((EvTag->GetNumOfHardPhotonsCandidates() < fNHardPhotonCandidatesMin) || (EvTag->GetNumOfHardPhotonsCandidates() > fNHardPhotonCandidatesMax))
1115       return kFALSE; 
1116   
1117   if(fTopNeutralEnergyMinFlag)
1118     if((EvTag->GetMaxNeutralEnergy() < fTopNeutralEnergyMin))
1119       return kFALSE; 
1120   
1121   if(fNChargedAbove1GeVFlag)
1122     if((EvTag->GetNumOfChargedAbove1GeV() < fNChargedAbove1GeVMin) || (EvTag->GetNumOfChargedAbove1GeV() > fNChargedAbove1GeVMax))
1123       return kFALSE; 
1124   
1125   if(fNChargedAbove3GeVFlag)
1126     if((EvTag->GetNumOfChargedAbove3GeV() < fNChargedAbove3GeVMin) || (EvTag->GetNumOfChargedAbove3GeV() > fNChargedAbove3GeVMax))
1127       return kFALSE; 
1128   
1129   if(fNChargedAbove10GeVFlag)
1130     if((EvTag->GetNumOfChargedAbove10GeV() < fNChargedAbove10GeVMin) || (EvTag->GetNumOfChargedAbove10GeV() > fNChargedAbove10GeVMax))
1131       return kFALSE; 
1132   
1133   if(fNMuonsAbove1GeVFlag)
1134     if((EvTag->GetNumOfMuonsAbove1GeV() < fNMuonsAbove1GeVMin) || (EvTag->GetNumOfMuonsAbove1GeV() > fNMuonsAbove1GeVMax))
1135       return kFALSE; 
1136   
1137   if(fNMuonsAbove3GeVFlag)
1138     if((EvTag->GetNumOfMuonsAbove3GeV() < fNMuonsAbove3GeVMin) || (EvTag->GetNumOfMuonsAbove3GeV() > fNMuonsAbove3GeVMax))
1139       return kFALSE; 
1140   
1141   if(fNMuonsAbove10GeVFlag)
1142     if((EvTag->GetNumOfMuonsAbove10GeV() < fNMuonsAbove10GeVMin) || (EvTag->GetNumOfMuonsAbove10GeV() > fNMuonsAbove10GeVMax))
1143       return kFALSE; 
1144   
1145   if(fNElectronsAbove1GeVFlag)
1146     if((EvTag->GetNumOfElectronsAbove1GeV()  < fNElectronsAbove1GeVMin) || (EvTag->GetNumOfElectronsAbove1GeV()  > fNElectronsAbove1GeVMax))
1147       return kFALSE; 
1148   
1149   if(fNElectronsAbove3GeVFlag)
1150     if((EvTag->GetNumOfElectronsAbove3GeV() < fNElectronsAbove3GeVMin) || (EvTag->GetNumOfElectronsAbove3GeV() > fNElectronsAbove3GeVMax))
1151       return kFALSE; 
1152   
1153   if(fNElectronsAbove10GeVFlag)
1154     if((EvTag->GetNumOfElectronsAbove10GeV() < fNElectronsAbove10GeVMin) || (EvTag->GetNumOfElectronsAbove10GeV() > fNElectronsAbove10GeVMax))
1155       return kFALSE; 
1156   
1157   if(fNElectronsFlag)
1158     if((EvTag->GetNumOfElectrons() < fNElectronsMin) || (EvTag->GetNumOfElectrons() > fNElectronsMax))
1159       return kFALSE; 
1160   
1161   if(fNFWMuonsFlag)
1162     if((EvTag->GetNumOfFWMuons() < fNFWMuonsMin) || (EvTag->GetNumOfFWMuons() > fNFWMuonsMax))
1163       return kFALSE; 
1164   
1165   if(fNFWMatchedMuonsFlag)
1166     if((EvTag->GetNumOfFWMatchedMuons() < fNFWMatchedMuonsMin) || (EvTag->GetNumOfFWMatchedMuons() > fNFWMatchedMuonsMax))
1167       return kFALSE; 
1168   
1169   if(fNMuonsFlag)
1170     if((EvTag->GetNumOfMuons() < fNMuonsMin) || (EvTag->GetNumOfMuons() > fNMuonsMax))
1171       return kFALSE; 
1172   
1173   if(fNPionsFlag)
1174     if((EvTag->GetNumOfPions() < fNPionsMin) || (EvTag->GetNumOfPions() > fNPionsMax))
1175       return kFALSE; 
1176   
1177   if(fNKaonsFlag)
1178     if((EvTag->GetNumOfKaons() < fNKaonsMin) || (EvTag->GetNumOfKaons() > fNKaonsMax))
1179       return kFALSE; 
1180   
1181   if(fNProtonsFlag)
1182     if((EvTag->GetNumOfProtons() < fNProtonsMin) || (EvTag->GetNumOfProtons() > fNProtonsMax))
1183       return kFALSE; 
1184   
1185   if(fNLambdasFlag)
1186     if((EvTag->GetNumOfLambdas() < fNLambdasMin) || (EvTag->GetNumOfLambdas() > fNLambdasMax))
1187       return kFALSE; 
1188   
1189   if(fNPhotonFlag)
1190     if((EvTag->GetNumOfPhotons() < fNPhotonsMin) || (EvTag->GetNumOfPhotons() > fNPhotonsMax))
1191       return kFALSE; 
1192   
1193   if(fNPi0sFlag)
1194     if((EvTag->GetNumOfPi0s() < fNPi0sMin) || (EvTag->GetNumOfPi0s() > fNPi0sMax))
1195       return kFALSE; 
1196   
1197   if(fNNeutronsFlag)
1198     if((EvTag->GetNumOfNeutrons() < fNNeutronsMin) || (EvTag->GetNumOfNeutrons() > fNNeutronsMax))
1199       return kFALSE; 
1200   
1201   if(fNKaon0sFlag)
1202     if((EvTag->GetNumOfKaon0s() < fNKaon0sMin) || (EvTag->GetNumOfKaon0s() > fNKaon0sMax))
1203       return kFALSE; 
1204   
1205   if(fTotalPFlag)
1206     if((EvTag->GetTotalMomentum() < fTotalPMin) || (EvTag->GetTotalMomentum() > fTotalPMax))
1207       return kFALSE; 
1208   
1209   if(fMeanPtFlag)
1210     if((EvTag->GetMeanPt() < fMeanPtMin) || (EvTag->GetMeanPt() > fMeanPtMax))
1211       return kFALSE; 
1212   
1213   if(fTopPtMinFlag)
1214     if((EvTag->GetMaxPt() < fTopPtMin))
1215       return kFALSE; 
1216   
1217   if(fTotalNeutralPFlag)
1218     if((EvTag->GetNeutralTotalMomentum() < fTotalNeutralPMin) || (EvTag->GetNeutralTotalMomentum() > fTotalNeutralPMax))
1219       return kFALSE; 
1220   
1221   if(fMeanNeutralPtFlag)
1222     if((EvTag->GetNeutralMeanPt() < fMeanNeutralPtMin) || (EvTag->GetNeutralMeanPt() >fMeanNeutralPtMax ))
1223       return kFALSE; 
1224   
1225   if(fTopNeutralPtMinFlag)
1226     if((EvTag->GetNeutralMaxPt() < fTopNeutralPtMin))
1227       return kFALSE; 
1228   
1229   if(fEventPlaneAngleFlag)
1230     if((EvTag->GetEventPlaneAngle() < fEventPlaneAngleMin) || (EvTag->GetEventPlaneAngle() > fEventPlaneAngleMax))
1231       return kFALSE; 
1232   
1233   if(fHBTRadiiFlag)
1234     if((EvTag->GetHBTRadii() < fHBTRadiiMin) || (EvTag->GetHBTRadii() > fHBTRadiiMax))
1235       return kFALSE; 
1236
1237   if (fFiredTriggerClassFlag) {
1238     if (fActiveTriggerClasses.Length() == 0) {
1239       AliWarning("Attempt to select Trigger classes but Active trigger classes not set in AliEventTagCuts. Cannot make the selection on Fired Trigger classes");
1240     }
1241     else {
1242       TObjArray *tClasses = fFiredTriggerClass.Tokenize(" ");
1243       Bool_t tTrig = kFALSE;
1244     
1245       for (int itrig=0; itrig<tClasses->GetEntries(); itrig++)
1246         if (EvTag->GetFiredTriggerClasses(fActiveTriggerClasses).Contains(((TObjString *) tClasses->At(itrig))->GetString()))
1247           tTrig = kTRUE;
1248       
1249       tClasses->Delete();
1250       delete tClasses;
1251       
1252       if (!tTrig)
1253         return kFALSE;
1254     }
1255   }
1256   
1257   return kTRUE;
1258 }
1259
1260 Bool_t AliEventTagCuts::IsAccepted(const AliEventTag *EvTag) const
1261 {
1262   //Returns true if the event is accepted otherwise false.
1263   if(fEventTypeFlag)
1264     if(EvTag->GetEventType() != fEventType)
1265       return kFALSE;
1266   
1267   if(fNumberOfFiredChipsLayer1Flag)
1268     if((EvTag->GetNumberOfFiredChipsLayer1() < fNumberOfFiredChipsLayer1Min) || (EvTag->GetNumberOfFiredChipsLayer1() > fNumberOfFiredChipsLayer1Max))
1269       return kFALSE;
1270
1271   if(fNumberOfFiredChipsLayer2Flag)
1272     if((EvTag->GetNumberOfFiredChipsLayer2() < fNumberOfFiredChipsLayer2Min) || (EvTag->GetNumberOfFiredChipsLayer2() > fNumberOfFiredChipsLayer2Max))
1273       return kFALSE;
1274
1275   if(fNumberOfSPDTrackletsFlag)
1276     if((EvTag->GetNumberOfSPDTracklets() < fNumberOfSPDTrackletsMin) || (EvTag->GetNumberOfSPDTracklets() > fNumberOfSPDTrackletsMax))
1277       return kFALSE;
1278
1279   if(fPeriodNumberFlag)
1280     if((EvTag->GetPeriodNumber() < fPeriodNumberMin) || (EvTag->GetPeriodNumber() > fPeriodNumberMax))
1281       return kFALSE;
1282
1283   if(fOrbitNumberFlag)
1284     if((EvTag->GetOrbitNumber() < fOrbitNumberMin) || (EvTag->GetOrbitNumber() > fOrbitNumberMax))
1285       return kFALSE;
1286
1287   if(fBunchCrossNumberFlag)
1288     if((EvTag->GetBunchCrossNumber() < fBunchCrossNumberMin) || (EvTag->GetBunchCrossNumber() > fBunchCrossNumberMax))
1289       return kFALSE;
1290
1291
1292  if(fEtaFlag)
1293     if((EvTag->GetEtaMaxPt() < fEtaMin) || (EvTag->GetEtaMaxPt() > fEtaMax))
1294       return kFALSE;
1295
1296   if(fPhiFlag)
1297     if((EvTag->GetPhiMaxPt() < fPhiMin) || (EvTag->GetPhiMaxPt() > fPhiMax))
1298       return kFALSE;
1299
1300   if(fVzFlag)
1301     if((EvTag->GetVertexZ() < fVzMin) || (EvTag->GetVertexZ() > fVzMax))
1302       return kFALSE;
1303   
1304   if(fVyFlag)
1305     if((EvTag->GetVertexY() < fVyMin) || (EvTag->GetVertexY() > fVyMax))
1306       return kFALSE;
1307   
1308   if(fVxFlag)
1309     if((EvTag->GetVertexX() < fVxMin) || (EvTag->GetVertexX() > fVxMax))
1310       return kFALSE;
1311   
1312   if(fNParticipantsFlag)
1313     if((EvTag->GetNumOfParticipants() < fNParticipantsMin) || (EvTag->GetNumOfParticipants() > fNParticipantsMax))
1314       return kFALSE; 
1315   
1316   if(fImpactParamFlag)
1317     if((EvTag->GetImpactParameter() < fImpactParamMin) || (EvTag->GetImpactParameter() > fImpactParamMax))
1318       return kFALSE; 
1319   
1320   if(fPVFlag)
1321     if((EvTag->GetVertexFlag() != fPrimaryVertexFlag))
1322       return kFALSE; 
1323   
1324   if(fPVzErrorFlag)
1325     if((EvTag->GetVertexZError() < fPrimaryVertexZErrorMin) || (EvTag->GetVertexZError() > fPrimaryVertexZErrorMax))
1326       return kFALSE; 
1327   if(fTriggerMaskFlag)
1328     if((EvTag->GetTriggerMask() & fTriggerMask) != fTriggerMask)
1329       return kFALSE; 
1330   if(fTriggerClusterFlag)
1331     if((EvTag->GetTriggerCluster() != fTriggerCluster))
1332       return kFALSE; 
1333
1334   if(fZDCNeutron1EnergyFlag)
1335     if((EvTag->GetZDCNeutron1Energy() < fZDCNeutron1EnergyMin) || (EvTag->GetZDCNeutron1Energy() > fZDCNeutron1EnergyMax))
1336       return kFALSE; 
1337   
1338   if(fZDCProton1EnergyFlag)
1339     if((EvTag->GetZDCProton1Energy() < fZDCProton1EnergyMin) || (EvTag->GetZDCProton1Energy() > fZDCProton1EnergyMax))
1340       return kFALSE; 
1341   
1342   if(fZDCNeutron2EnergyFlag)
1343     if((EvTag->GetZDCNeutron2Energy() < fZDCNeutron2EnergyMin) || (EvTag->GetZDCNeutron2Energy() > fZDCNeutron2EnergyMax))
1344       return kFALSE; 
1345   
1346   if(fZDCProton2EnergyFlag)
1347     if((EvTag->GetZDCProton2Energy() < fZDCProton2EnergyMin) || (EvTag->GetZDCProton2Energy() > fZDCProton2EnergyMax))
1348       return kFALSE; 
1349   
1350   if(fZDCEMEnergyFlag)
1351     if((EvTag->GetZDCEMEnergy(1) < fZDCEMEnergyMin) || (EvTag->GetZDCEMEnergy(1) > fZDCEMEnergyMax))
1352       return kFALSE; 
1353   
1354   if(fT0VertexZFlag)
1355     if((EvTag->GetT0VertexZ() < fT0VertexZMin) || (EvTag->GetT0VertexZ() > fT0VertexZMax))
1356       return kFALSE; 
1357   
1358   if(fMultFlag)
1359     if((EvTag->GetNumOfTracks() < fMultMin) || (EvTag->GetNumOfTracks() > fMultMax))
1360       return kFALSE; 
1361   
1362   if(fPosMultFlag)
1363     if((EvTag->GetNumOfPosTracks() < fPosMultMin) || (EvTag->GetNumOfPosTracks() > fPosMultMax))
1364       return kFALSE; 
1365   
1366   if(fNegMultFlag)
1367     if((EvTag->GetNumOfNegTracks() < fNegMultMin) || (EvTag->GetNumOfNegTracks() > fNegMultMax))
1368       return kFALSE; 
1369   
1370   if(fNeutrMultFlag)
1371     if((EvTag->GetNumOfNeutrTracks() < fNeutrMultMin) || (EvTag->GetNumOfNeutrTracks() > fNeutrMultMax))
1372       return kFALSE; 
1373   
1374   if(fNV0sFlag)
1375     if((EvTag->GetNumOfV0s() < fNV0sMin) || (EvTag->GetNumOfV0s() > fNV0sMax))
1376       return kFALSE; 
1377   
1378   if(fNCascadesFlag)
1379     if((EvTag->GetNumOfCascades() < fNCascadesMin) || (EvTag->GetNumOfCascades() > fNCascadesMax))
1380       return kFALSE; 
1381   
1382   if(fNKinksFlag)
1383     if((EvTag->GetNumOfKinks() < fNKinksMin) || (EvTag->GetNumOfKinks() > fNKinksMax))
1384       return kFALSE; 
1385
1386
1387   if(fNPMDTracksFlag)
1388     if((EvTag->GetNumOfPMDTracks() < fNPMDTracksMin) || (EvTag->GetNumOfPMDTracks() > fNPMDTracksMax))
1389       return kFALSE; 
1390   if(fNFMDTracksFlag)
1391     if((EvTag->GetNumOfFMDTracks() < fNFMDTracksMin) || (EvTag->GetNumOfFMDTracks() > fNFMDTracksMax))
1392       return kFALSE; 
1393   if(fNPHOSClustersFlag)
1394     if((EvTag->GetNumOfPHOSClusters() < fNPHOSClustersMin) || (EvTag->GetNumOfPHOSClusters() > fNPHOSClustersMax))
1395       return kFALSE; 
1396   if(fNEMCALClustersFlag)
1397     if((EvTag->GetNumOfEMCALClusters() < fNEMCALClustersMin) || (EvTag->GetNumOfEMCALClusters() > fNEMCALClustersMax))
1398       return kFALSE; 
1399   if(fNJetCandidatesFlag)
1400     if((EvTag->GetNumOfJetCandidates() < fNJetCandidatesMin) || (EvTag->GetNumOfJetCandidates() > fNJetCandidatesMax))
1401       return kFALSE; 
1402
1403
1404   if(fTopJetEnergyMinFlag)
1405     if((EvTag->GetMaxJetEnergy() < fTopJetEnergyMin))
1406       return kFALSE; 
1407   
1408   if(fNHardPhotonCandidatesFlag)
1409     if((EvTag->GetNumOfHardPhotonsCandidates() < fNHardPhotonCandidatesMin) || (EvTag->GetNumOfHardPhotonsCandidates() > fNHardPhotonCandidatesMax))
1410       return kFALSE; 
1411   
1412   if(fTopNeutralEnergyMinFlag)
1413     if((EvTag->GetMaxNeutralEnergy() < fTopNeutralEnergyMin))
1414       return kFALSE; 
1415   
1416   if(fNChargedAbove1GeVFlag)
1417     if((EvTag->GetNumOfChargedAbove1GeV() < fNChargedAbove1GeVMin) || (EvTag->GetNumOfChargedAbove1GeV() > fNChargedAbove1GeVMax))
1418       return kFALSE; 
1419   
1420   if(fNChargedAbove3GeVFlag)
1421     if((EvTag->GetNumOfChargedAbove3GeV() < fNChargedAbove3GeVMin) || (EvTag->GetNumOfChargedAbove3GeV() > fNChargedAbove3GeVMax))
1422       return kFALSE; 
1423   
1424   if(fNChargedAbove10GeVFlag)
1425     if((EvTag->GetNumOfChargedAbove10GeV() < fNChargedAbove10GeVMin) || (EvTag->GetNumOfChargedAbove10GeV() > fNChargedAbove10GeVMax))
1426       return kFALSE; 
1427   
1428   if(fNMuonsAbove1GeVFlag)
1429     if((EvTag->GetNumOfMuonsAbove1GeV() < fNMuonsAbove1GeVMin) || (EvTag->GetNumOfMuonsAbove1GeV() > fNMuonsAbove1GeVMax))
1430       return kFALSE; 
1431   
1432   if(fNMuonsAbove3GeVFlag)
1433     if((EvTag->GetNumOfMuonsAbove3GeV() < fNMuonsAbove3GeVMin) || (EvTag->GetNumOfMuonsAbove3GeV() > fNMuonsAbove3GeVMax))
1434       return kFALSE; 
1435   
1436   if(fNMuonsAbove10GeVFlag)
1437     if((EvTag->GetNumOfMuonsAbove10GeV() < fNMuonsAbove10GeVMin) || (EvTag->GetNumOfMuonsAbove10GeV() > fNMuonsAbove10GeVMax))
1438       return kFALSE; 
1439   
1440   if(fNElectronsAbove1GeVFlag)
1441     if((EvTag->GetNumOfElectronsAbove1GeV()  < fNElectronsAbove1GeVMin) || (EvTag->GetNumOfElectronsAbove1GeV()  > fNElectronsAbove1GeVMax))
1442       return kFALSE; 
1443   
1444   if(fNElectronsAbove3GeVFlag)
1445     if((EvTag->GetNumOfElectronsAbove3GeV() < fNElectronsAbove3GeVMin) || (EvTag->GetNumOfElectronsAbove3GeV() > fNElectronsAbove3GeVMax))
1446       return kFALSE; 
1447   
1448   if(fNElectronsAbove10GeVFlag)
1449     if((EvTag->GetNumOfElectronsAbove10GeV() < fNElectronsAbove10GeVMin) || (EvTag->GetNumOfElectronsAbove10GeV() > fNElectronsAbove10GeVMax))
1450       return kFALSE; 
1451   
1452   if(fNElectronsFlag)
1453     if((EvTag->GetNumOfElectrons() < fNElectronsMin) || (EvTag->GetNumOfElectrons() > fNElectronsMax))
1454       return kFALSE; 
1455   
1456   if(fNFWMuonsFlag)
1457     if((EvTag->GetNumOfFWMuons() < fNFWMuonsMin) || (EvTag->GetNumOfFWMuons() > fNFWMuonsMax))
1458       return kFALSE; 
1459   
1460   if(fNFWMatchedMuonsFlag)
1461     if((EvTag->GetNumOfFWMatchedMuons() < fNFWMatchedMuonsMin) || (EvTag->GetNumOfFWMatchedMuons() > fNFWMatchedMuonsMax))
1462       return kFALSE; 
1463   
1464   if(fNMuonsFlag)
1465     if((EvTag->GetNumOfMuons() < fNMuonsMin) || (EvTag->GetNumOfMuons() > fNMuonsMax))
1466       return kFALSE; 
1467   
1468   if(fNPionsFlag)
1469     if((EvTag->GetNumOfPions() < fNPionsMin) || (EvTag->GetNumOfPions() > fNPionsMax))
1470       return kFALSE; 
1471   
1472   if(fNKaonsFlag)
1473     if((EvTag->GetNumOfKaons() < fNKaonsMin) || (EvTag->GetNumOfKaons() > fNKaonsMax))
1474       return kFALSE; 
1475   
1476   if(fNProtonsFlag)
1477     if((EvTag->GetNumOfProtons() < fNProtonsMin) || (EvTag->GetNumOfProtons() > fNProtonsMax))
1478       return kFALSE; 
1479   
1480   if(fNLambdasFlag)
1481     if((EvTag->GetNumOfLambdas() < fNLambdasMin) || (EvTag->GetNumOfLambdas() > fNLambdasMax))
1482       return kFALSE; 
1483   
1484   if(fNPhotonFlag)
1485     if((EvTag->GetNumOfPhotons() < fNPhotonsMin) || (EvTag->GetNumOfPhotons() > fNPhotonsMax))
1486       return kFALSE; 
1487   
1488   if(fNPi0sFlag)
1489     if((EvTag->GetNumOfPi0s() < fNPi0sMin) || (EvTag->GetNumOfPi0s() > fNPi0sMax))
1490       return kFALSE; 
1491   
1492   if(fNNeutronsFlag)
1493     if((EvTag->GetNumOfNeutrons() < fNNeutronsMin) || (EvTag->GetNumOfNeutrons() > fNNeutronsMax))
1494       return kFALSE; 
1495   
1496   if(fNKaon0sFlag)
1497     if((EvTag->GetNumOfKaon0s() < fNKaon0sMin) || (EvTag->GetNumOfKaon0s() > fNKaon0sMax))
1498       return kFALSE; 
1499   
1500   if(fTotalPFlag)
1501     if((EvTag->GetTotalMomentum() < fTotalPMin) || (EvTag->GetTotalMomentum() > fTotalPMax))
1502       return kFALSE; 
1503   
1504   if(fMeanPtFlag)
1505     if((EvTag->GetMeanPt() < fMeanPtMin) || (EvTag->GetMeanPt() > fMeanPtMax))
1506       return kFALSE; 
1507   
1508   if(fTopPtMinFlag)
1509     if((EvTag->GetMaxPt() < fTopPtMin))
1510       return kFALSE; 
1511   
1512   if(fTotalNeutralPFlag)
1513     if((EvTag->GetNeutralTotalMomentum() < fTotalNeutralPMin) || (EvTag->GetNeutralTotalMomentum() > fTotalNeutralPMax))
1514       return kFALSE; 
1515   
1516   if(fMeanNeutralPtFlag)
1517     if((EvTag->GetNeutralMeanPt() < fMeanNeutralPtMin) || (EvTag->GetNeutralMeanPt() >fMeanNeutralPtMax ))
1518       return kFALSE; 
1519   
1520   if(fTopNeutralPtMinFlag)
1521     if((EvTag->GetNeutralMaxPt() < fTopNeutralPtMin))
1522       return kFALSE; 
1523   
1524   if(fEventPlaneAngleFlag)
1525     if((EvTag->GetEventPlaneAngle() < fEventPlaneAngleMin) || (EvTag->GetEventPlaneAngle() > fEventPlaneAngleMax))
1526       return kFALSE; 
1527   
1528   if(fHBTRadiiFlag)
1529     if((EvTag->GetHBTRadii() < fHBTRadiiMin) || (EvTag->GetHBTRadii() > fHBTRadiiMax))
1530       return kFALSE; 
1531
1532   if (fFiredTriggerClassFlag) {
1533     if (fActiveTriggerClasses.Length() == 0) {
1534       AliWarning("Attempt to select Trigger classes but Active trigger classes not set in AliEventTagCuts. Cannot make the selection on Fired Trigger classes");
1535     }
1536     else {
1537       TObjArray *tClasses = fFiredTriggerClass.Tokenize(" ");
1538       Bool_t tTrig = kFALSE;
1539     
1540       for (int itrig=0; itrig<tClasses->GetEntries(); itrig++)
1541         if (EvTag->GetFiredTriggerClasses(fActiveTriggerClasses).Contains(((TObjString *) tClasses->At(itrig))->GetString()))
1542           tTrig = kTRUE;
1543       
1544       tClasses->Delete();
1545       delete tClasses;
1546       
1547       if (!tTrig)
1548         return kFALSE;
1549     }
1550   }
1551   
1552   return kTRUE;
1553   
1554 }