Corrected protection.
[u/mrichter/AliRoot.git] / STEER / AliEventTagCuts.h
1 #ifndef ALIEVENTTAGCUTS_H
2 #define ALIEVENTTAGCUTS_H
3 /*  See cxx source for full Copyright notice */
4
5
6 /* $Id$ */
7
8 //-------------------------------------------------------------------------
9 //                       Class AliEventTagCuts
10 //   This is the class for the cuts in event tags
11 //
12 //    Origin: Panos Christakoglou, UOA-CERN, Panos.Christakoglou@cern.ch
13 //-------------------------------------------------------------------------
14
15 #include <TObject.h>
16
17 class AliEventTag;
18
19 //___________________________________________________________________________
20 class AliEventTagCuts : public TObject {
21  public:
22   AliEventTagCuts();
23   ~AliEventTagCuts();
24   void Reset();
25   
26   //____________________________________________________//
27   void SetPeriodNumberRange(UInt_t n1, UInt_t n2);
28   void SetOrbitNumberRange(UInt_t n1, UInt_t n2);
29   void SetBunchCrossNumberRange(UShort_t n1, UShort_t n2);
30
31   void SetEventType(UInt_t ntype);
32
33   void SetNParticipantsRange(Int_t low, Int_t high);
34   void SetImpactParamRange(Float_t low, Float_t high);
35
36   void SetEtaLeadingParticleRange(Float_t low, Float_t high);
37   void SetPhiLeadingParticleRange(Float_t low, Float_t high);
38   void SetPrimaryVertexXRange(Float_t low, Float_t high);
39   void SetPrimaryVertexYRange(Float_t low, Float_t high);
40   void SetPrimaryVertexZRange(Float_t low, Float_t high);
41   void SetPrimaryVertexFlag(Int_t flag);
42   void SetPrimaryVertexZErrorRange(Float_t low, Float_t high);
43
44   void SetTriggerMask(ULong64_t trmask);
45   void SetTriggerCluster(UChar_t trcluster);
46
47   void SetZDCNeutron1Range(Float_t low, Float_t high);
48   void SetZDCProton1Range(Float_t low, Float_t high);
49   void SetZDCEMRange(Float_t low, Float_t high);
50   void SetZDCNeutron2Range(Float_t low, Float_t high);
51   void SetZDCProton2Range(Float_t low, Float_t high);
52   void SetT0VertexZRange(Float_t low, Float_t high);
53
54   void SetMultiplicityRange(Int_t low, Int_t high);
55   void SetPosMultiplicityRange(Int_t low, Int_t high);
56   void SetNegMultiplicityRange(Int_t low, Int_t high);
57   void SetNeutrMultiplicityRange(Int_t low, Int_t high);
58   void SetNV0sRange(Int_t low, Int_t high);
59   void SetNCascadesRange(Int_t low, Int_t high);
60   void SetNKinksRange(Int_t low, Int_t high);
61  
62   void SetNPMDTracksRange(Int_t low, Int_t high);
63   void SetNFMDTracksRange(Int_t low, Int_t high);
64   void SetNPHOSClustersRange(Int_t low, Int_t high);
65   void SetNEMCALClustersRange(Int_t low, Int_t high);
66   void SetNJetCandidatesRange(Int_t low, Int_t high);
67
68   void SetTopJetEnergyMin(Float_t low);
69   void SetTopNeutralEnergyMin(Float_t low);
70   void SetNHardPhotonsRange(Int_t low, Int_t high);
71   void SetNChargedAbove1GeVRange(Int_t low, Int_t high);
72   void SetNChargedAbove3GeVRange(Int_t low, Int_t high);
73   void SetNChargedAbove10GeVRange(Int_t low, Int_t high);
74   void SetNMuonsAbove1GeVRange(Int_t low, Int_t high);
75   void SetNMuonsAbove3GeVRange(Int_t low, Int_t high);
76   void SetNMuonsAbove10GeVRange(Int_t low, Int_t high);
77   void SetNElectronsAbove1GeVRange(Int_t low, Int_t high);
78   void SetNElectronsAbove3GeVRange(Int_t low, Int_t high);
79   void SetNElectronsAbove10GeVRange(Int_t low, Int_t high);
80   void SetNElectronRange(Int_t low, Int_t high);
81   void SetNFWMuonRange(Int_t low, Int_t high);
82   void SetNFWMatchedMuonRange(Int_t low, Int_t high);
83   void SetNMuonRange(Int_t low, Int_t high);
84   void SetNPionRange(Int_t low, Int_t high);
85   void SetNKaonRange(Int_t low, Int_t high);
86   void SetNProtonRange(Int_t low, Int_t high);
87   void SetNLambdaRange(Int_t low, Int_t high);
88   void SetNPhotonRange(Int_t low, Int_t high);
89   void SetNPi0Range(Int_t low, Int_t high);
90   void SetNNeutronRange(Int_t low, Int_t high);
91   void SetNKaon0Range(Int_t low, Int_t high); 
92   void SetTotalPRange(Float_t low, Float_t high);
93   void SetMeanPtRange(Float_t low, Float_t high);
94   void SetTopPtMin(Float_t low);
95   void SetTotalNeutralPRange(Float_t low, Float_t high);
96   void SetMeanNeutralPtPRange(Float_t low, Float_t high);
97   void SetTopNeutralPtMin(Float_t low);
98   void SetEventPlaneAngleRange(Float_t low, Float_t high);
99   void SetHBTRadiiRange(Float_t low, Float_t high);
100  
101   //First physics
102   void SetNumberOfFiredChipsLayer1Range(Int_t low, Int_t high);
103   void SetNumberOfFiredChipsLayer2Range(Int_t low, Int_t high);
104   void SetNumberOfSPDTrackletsRange(Int_t low, Int_t high);
105
106   // Trigger
107   void ResetTriggerClasses();
108   void AddRequiredFiredTriggerClass(TString aclass);
109   void InitializeTriggerClasses(TString aclass);
110
111   Bool_t IsAccepted(AliEventTag *EvTag) const;
112   Bool_t IsAccepted(const AliEventTag *EvTag) const;
113
114   //____________________________________________________//
115  private:
116   UInt_t fPeriodNumberMin, fPeriodNumberMax;                    //min/max value of the period number
117   Bool_t fPeriodNumberFlag;                                   // Shows whether this cut is used or not
118
119   UInt_t fOrbitNumberMin, fOrbitNumberMax;                    //min/max value of the orbit number
120   Bool_t fOrbitNumberFlag;                                   // Shows whether this cut is used or not
121
122   UShort_t fBunchCrossNumberMin, fBunchCrossNumberMax;                    //min/max value of the bunch crossing number
123   Bool_t fBunchCrossNumberFlag;                                   // Shows whether this cut is used or not
124
125   UInt_t fEventType;                                          //event type == 7 ==> PHYSICS_EVENT
126   Bool_t fEventTypeFlag;                                      // Shows whether this cut is used or not
127
128   Int_t fNParticipantsMin, fNParticipantsMax;                 // # participants range
129   Bool_t fNParticipantsFlag;                                  // Shows whether this cut is used or not
130   Float_t fImpactParamMin, fImpactParamMax;                   // Impact parameter range
131   Bool_t fImpactParamFlag;                                    // Shows whether this cut is used or not
132
133   Float_t fEtaMin, fEtaMax;                                   // Definition of the range of the eta leading
134   Bool_t fEtaFlag;                                            // Shows whether this cut is used or not
135   Float_t fPhiMin, fPhiMax;                                   // Definition of the range of the phi leading
136   Bool_t fPhiFlag;                                            // Shows whether this cut is used or not  
137          
138   Float_t fVxMin, fVxMax;                                     // Definition of the range of the Vx
139   Bool_t fVxFlag;                                             // Shows whether this cut is used or not
140   Float_t fVyMin, fVyMax;                                     // Definition of the range of the Vy
141   Bool_t fVyFlag;                                             // Shows whether this cut is used or not
142   Float_t fVzMin, fVzMax;                                     // Definition of the range of the Vz
143   Bool_t fVzFlag;                                             // Shows whether this cut is used or not
144   Int_t fPrimaryVertexFlag;                                   // Primary vertex flag: 0->not found, 1->found
145   Bool_t fPVFlag;                                             // Shows whether this cut is used or not
146   Float_t fPrimaryVertexZErrorMin, fPrimaryVertexZErrorMax;   // Range of the primary vertex z error
147   Bool_t fPVzErrorFlag;                                       // Shows whether this cut is used or not
148
149   ULong64_t fTriggerMask;                                     // trigger mask definition
150   Bool_t fTriggerMaskFlag;                                    // Shows whether this cut is used or not
151   UChar_t fTriggerCluster;                                    // trigger cluster definition
152   Bool_t fTriggerClusterFlag;                                 // Shows whether this cut is used or not
153   
154   Float_t fZDCNeutron1EnergyMin, fZDCNeutron1EnergyMax;       // ZDC min,max - neutron
155   Bool_t fZDCNeutron1EnergyFlag;                              // Shows whether this cut is used or not
156   Float_t fZDCProton1EnergyMin, fZDCProton1EnergyMax;         // ZDC min,max - proton
157   Bool_t fZDCProton1EnergyFlag;                               // Shows whether this cut is used or not
158   Float_t fZDCNeutron2EnergyMin, fZDCNeutron2EnergyMax;       // ZDC min,max - neutron
159   Bool_t fZDCNeutron2EnergyFlag;                              // Shows whether this cut is used or not
160   Float_t fZDCProton2EnergyMin, fZDCProton2EnergyMax;         // ZDC min,max - proton
161   Bool_t fZDCProton2EnergyFlag;                               // Shows whether this cut is used or not
162   Float_t fZDCEMEnergyMin, fZDCEMEnergyMax;                   // ZDC min,max - em
163   Bool_t fZDCEMEnergyFlag;                                    // Shows whether this cut is used or not
164   Float_t fT0VertexZMin, fT0VertexZMax;                       // T0 min, max
165   Bool_t fT0VertexZFlag;                                      // Shows whether this cut is used or not  
166
167   Int_t fMultMin, fMultMax;                                   // Definition of the range of the multiplicity
168   Bool_t fMultFlag;                                           // Shows whether this cut is used or not
169   Int_t fPosMultMin, fPosMultMax;                             // Positive tracks multiplicity range
170   Bool_t fPosMultFlag;                                        // Shows whether this cut is used or not
171   Int_t fNegMultMin, fNegMultMax;                             // Negative tracks multiplicity range
172   Bool_t fNegMultFlag;                                        // Shows whether this cut is used or not
173   Int_t fNeutrMultMin, fNeutrMultMax;                         // Neutral tracks multiplicity range
174   Bool_t fNeutrMultFlag;                                      // Shows whether this cut is used or not
175   Int_t fNV0sMin, fNV0sMax;                                   // Range of # of V0s
176   Bool_t fNV0sFlag;                                           // Shows whether this cut is used or not
177   Int_t fNCascadesMin, fNCascadesMax;                         // Range of # of cascades
178   Bool_t fNCascadesFlag;                                      // Shows whether this cut is used or not
179   Int_t fNKinksMin, fNKinksMax;                               // Range of # of kinks
180   Bool_t fNKinksFlag;                                         // Shows whether this cut is used or not
181   
182   Int_t fNPMDTracksMin, fNPMDTracksMax;                       // Range of # of PMD tracks
183   Bool_t fNPMDTracksFlag;                                     // Shows whether this cut is used or not
184   Int_t fNFMDTracksMin, fNFMDTracksMax;                       // Range of # of FMD tracks
185   Bool_t fNFMDTracksFlag;                                     // Shows whether this cut is used or not
186   Int_t fNPHOSClustersMin, fNPHOSClustersMax;                 // Range of # of PHOS clusters
187   Bool_t fNPHOSClustersFlag;                                  // Shows whether this cut is used or not
188   Int_t fNEMCALClustersMin, fNEMCALClustersMax;               // Range of # of EMCAL clusters
189   Bool_t fNEMCALClustersFlag;                                 // Shows whether this cut is used or not
190   Int_t fNJetCandidatesMin, fNJetCandidatesMax;               // Range of # of jet candidates
191   Bool_t fNJetCandidatesFlag;                                 // Shows whether this cut is used or not
192
193   Float_t fTopJetEnergyMin;                                   // top jet energy minimum value
194   Bool_t fTopJetEnergyMinFlag;                                // Shows whether this cut is used or not
195   Float_t fTopNeutralEnergyMin;                               // top neutral energy minimum value
196   Bool_t fTopNeutralEnergyMinFlag;                            // Shows whether this cut is used or not  
197   
198   Int_t fNHardPhotonCandidatesMin, fNHardPhotonCandidatesMax; // # of hard photons candidates
199   Bool_t fNHardPhotonCandidatesFlag;                          // Shows whether this cut is used or not
200   Int_t fNChargedAbove1GeVMin, fNChargedAbove1GeVMax;         // Definition of the range of the # of charged above 1GeV
201   Bool_t fNChargedAbove1GeVFlag;                              // Shows whether this cut is used or not
202   Int_t fNChargedAbove3GeVMin, fNChargedAbove3GeVMax;         // Definition of the range of the # of charged above 3GeV
203   Bool_t fNChargedAbove3GeVFlag;                              // Shows whether this cut is used or not
204   Int_t fNChargedAbove10GeVMin, fNChargedAbove10GeVMax;       // Definition of the range of the # of charged above 10GeV
205   Bool_t fNChargedAbove10GeVFlag;                             // Shows whether this cut is used or not
206   Int_t fNMuonsAbove1GeVMin, fNMuonsAbove1GeVMax;             // Definition of the range of the # of muons above 1GeV
207   Bool_t fNMuonsAbove1GeVFlag;                                // Shows whether this cut is used or not
208   Int_t fNMuonsAbove3GeVMin, fNMuonsAbove3GeVMax;             // Definition of the range of the # of muons above 3GeV
209   Bool_t fNMuonsAbove3GeVFlag;                                // Shows whether this cut is used or not
210   Int_t fNMuonsAbove10GeVMin, fNMuonsAbove10GeVMax;           // Definition of the range of the # of muons above 10GeV
211   Bool_t fNMuonsAbove10GeVFlag;                               // Shows whether this cut is used or not
212   Int_t fNElectronsAbove1GeVMin, fNElectronsAbove1GeVMax;     // Definition of the range of the # of electorns above 1GeV
213   Bool_t fNElectronsAbove1GeVFlag;                            // Shows whether this cut is used or not
214   Int_t fNElectronsAbove3GeVMin, fNElectronsAbove3GeVMax;     // Definition of the range of the # of electorns above 3GeV
215   Bool_t fNElectronsAbove3GeVFlag;                            // Shows whether this cut is used or not
216   Int_t fNElectronsAbove10GeVMin,fNElectronsAbove10GeVMax;    // Definition of the range of the # of electorns above 10GeV
217   Bool_t fNElectronsAbove10GeVFlag;                           // Shows whether this cut is used or not  
218   Int_t fNElectronsMin, fNElectronsMax;                       // # of electrons range
219   Bool_t fNElectronsFlag;                                     // Shows whether this cut is used or not
220   Int_t fNFWMuonsMin, fNFWMuonsMax;                           // # of forward muons range
221   Bool_t fNFWMuonsFlag;                                       // Shows whether this cut is used or not
222   Int_t fNFWMatchedMuonsMin, fNFWMatchedMuonsMax;             // # of forward matched muons range
223   Bool_t fNFWMatchedMuonsFlag;                                // Shows whether this cut is used or not
224   Int_t fNMuonsMin, fNMuonsMax;                               // # of muons range
225   Bool_t fNMuonsFlag;                                         // Shows whether this cut is used or not
226   Int_t fNPionsMin, fNPionsMax;                               // # of pions range
227   Bool_t fNPionsFlag;                                         // Shows whether this cut is used or not
228   Int_t fNKaonsMin, fNKaonsMax;                               // # of kaons range
229   Bool_t fNKaonsFlag;                                         // Shows whether this cut is used or not
230   Int_t fNProtonsMin, fNProtonsMax;                           // # of protons range
231   Bool_t fNProtonsFlag;                                       // Shows whether this cut is used or not
232   Int_t fNLambdasMin, fNLambdasMax;                           // # of lambdas range
233   Bool_t fNLambdasFlag;                                       // Shows whether this cut is used or not
234   Int_t fNPhotonsMin, fNPhotonsMax;                           // # of photons range
235   Bool_t fNPhotonFlag;                                        // Shows whether this cut is used or not
236   Int_t fNPi0sMin, fNPi0sMax;                                 // # of Pi0s range
237   Bool_t fNPi0sFlag;                                          // Shows whether this cut is used or not
238   Int_t fNNeutronsMin, fNNeutronsMax;                         // # of neutrons range
239   Bool_t fNNeutronsFlag;                                      // Shows whether this cut is used or not
240   Int_t fNKaon0sMin, fNKaon0sMax;                             // # of K0s range
241   Bool_t fNKaon0sFlag;                                        // Shows whether this cut is used or not  
242   Float_t fTotalPMin, fTotalPMax;                             // Range of the sum of the momentum per event
243   Bool_t fTotalPFlag;                                         // Shows whether this cut is used or not
244   Float_t fMeanPtMin, fMeanPtMax;                             // Range of mean Pt per event
245   Bool_t fMeanPtFlag;                                         // Shows whether this cut is used or not
246   Float_t fTopPtMin;                                          // Max Pt for each event
247   Bool_t fTopPtMinFlag;                                       // Shows whether this cut is used or not
248   Float_t fTotalNeutralPMin, fTotalNeutralPMax;               // Sum of the momentum per event for neutral
249   Bool_t fTotalNeutralPFlag;                                  // Shows whether this cut is used or not
250   Float_t fMeanNeutralPtMin, fMeanNeutralPtMax;               // Mean Pt per event for neutral
251   Bool_t fMeanNeutralPtFlag;                                  // Shows whether this cut is used or not
252   Float_t fTopNeutralPtMin;                                   // Minimum value for highest Pt for the event for neutral
253   Bool_t fTopNeutralPtMinFlag;                                // Shows whether this cut is used or not
254   Float_t fEventPlaneAngleMin, fEventPlaneAngleMax;           // event plane info
255   Bool_t fEventPlaneAngleFlag;                                // Shows whether this cut is used or not
256   Float_t fHBTRadiiMin, fHBTRadiiMax;                         // HBT info
257   Bool_t fHBTRadiiFlag;                                       // Shows whether this cut is used or not
258
259   Int_t fNumberOfFiredChipsLayer1Min, fNumberOfFiredChipsLayer1Max; //min/max number of fired chips - layer 1
260   Bool_t fNumberOfFiredChipsLayer1Flag;                       // Shows whether this cut is used or not
261   Int_t fNumberOfFiredChipsLayer2Min, fNumberOfFiredChipsLayer2Max; //min/max number of fired chips - layer 2
262   Bool_t fNumberOfFiredChipsLayer2Flag;                       // Shows whether this cut is used or not
263   Int_t fNumberOfSPDTrackletsMin, fNumberOfSPDTrackletsMax;   //min/max number of SPD tracklets
264   Bool_t fNumberOfSPDTrackletsFlag;                          // Shows whether this cut is used or not
265
266   Bool_t fFiredTriggerClassFlag;                              // Shows whether this cut is used or not
267   TString fFiredTriggerClass;                                 // Triger class must be present to accept event
268
269   TString fActiveTriggerClasses;                              // Trigger classes active for this run
270
271   ClassDef(AliEventTagCuts, 4)
272 };
273
274 #endif