]> git.uio.no Git - u/mrichter/AliRoot.git/blob - PWG3/muon/AliAnalysisTaskSingleMu.h
Coverity fix (Ivana)
[u/mrichter/AliRoot.git] / PWG3 / muon / AliAnalysisTaskSingleMu.h
1 /// \ingroup "PWG3muon"
2 /// \class AliAnalysisTaskSingleMu
3 /// \brief Analysis task for single muons in the spectrometer
4 ///
5 //  Author Diego Stocco
6 #ifndef ALIANALYSISTASKSINGLEMU_H
7 #define ALIANALYSISTASKSINGLEMU_H
8
9 #include "AliAnalysisTaskSE.h"
10
11 class TList;
12 class AliMCParticle;
13 class TTree;
14 class TMap;
15 class TObjArray;
16 //class TAxis;
17 class AliCFManager;
18
19 class AliAnalysisTaskSingleMu : public AliAnalysisTaskSE {
20  public:
21   AliAnalysisTaskSingleMu(const char *name = "AliAnalysisTaskSingleMu", Int_t fillTreeScaleDown = 0, Bool_t keepAll = kFALSE);
22   virtual ~AliAnalysisTaskSingleMu();
23   
24   virtual void   UserCreateOutputObjects();
25   virtual void   UserExec(Option_t *option);
26   virtual void   Terminate(Option_t *option);
27   virtual void   NotifyRun();
28   virtual void   FinishTaskOutput();
29
30   void SetTriggerClasses(TString triggerClasses = 
31                          "CINT1-B-NOPF CINT1-AC-NOPF CINT1-E-NOPF CMUS1-B-NOPF CMUS1-AC-NOPF CMUS1-E-NOPF CINT1B-ABCE-NOPF CINT1A-ABCE-NOPF CINT1C-ABCE-NOPF CMUS1B-ABCE-NOPF CMUS1A-ABCE-NOPF CMUS1C-ABCE-NOPF CINT5-B-NOPF CINT5-AC-NOPF CINT5-E-NOPF CMUS5-B-NOPF CMUS5-AC-NOPF CMUS5-E-NOPF CINT5B-ABCE-NOPF CINT5A-ABCE-NOPF CINT5C-ABCE-NOPF CMUS5B-ABCE-NOPF CMUS5A-ABCE-NOPF CMUS5C-ABCE-NOPF");
32
33   /// Get CORRFW manager
34   AliCFManager * GetCFManager() const { return fCFManager; }
35
36   enum {
37     kHvarPt,         ///< Pt at vertex
38     //    kHvarY,          ///< Rapidity
39     kHvarEta,        ///< Pseudo-Rapidity
40     kHvarPhi,        ///< Phi
41     kHvarDCA,        ///< DCA
42     kHvarVz,         ///< Z vertex position
43     kHvarThetaZones, ///< Theta at absorber end (4 zones)
44     kHvarCharge,     ///< Particle charge
45     kHvarMatchTrig,  ///< Matching trigger
46     kHvarTrigClass,  ///< Trigger classes
47     kHvarIsGoodVtx,  ///< IP vertex correctly reconstructed
48     kHvarMotherType, ///< Mother type (MC only)
49     kHvarCentrality, ///< Centrality class
50     kNvars           ///< THnSparse dimensions
51   };
52
53   enum {
54     kStepReconstructed,  ///< Reconstructed tracks
55     //kStepAcceptance,     ///< Track in acceptance
56     kStepGeneratedMC,    ///< Generated tracks (MC)
57     //kStepAcceptanceMC,   ///< Track in acceptance (MC)
58     kNsteps              ///< Number of steps
59   };
60   
61  private:
62
63   AliAnalysisTaskSingleMu(const AliAnalysisTaskSingleMu&);
64   AliAnalysisTaskSingleMu& operator=(const AliAnalysisTaskSingleMu&);
65
66
67   enum {
68     kHistoNeventsPerTrig,    ///< Number of events per trigger
69     kHistoMuonMultiplicity,  ///< Number of muons per event
70     kHistoEventVz,           ///< Vertex z distribution for all events
71     kHistoNeventsPerRun,     ///< Number of triggers per run (for check)
72     kHistoNmuonsPerRun,      ///< Number of muons per run (for check)
73     kNsummaryHistos          ///< Number of summary histograms
74   };
75
76   enum {
77     kNoMatchTrig,  ///< No match with trigger
78     kAllPtTrig,    ///< Match All Pt
79     kLowPtTrig,    ///< Match Low Pt
80     kHighPtTrig,   ///< Match High Pt
81     kNtrigCuts     ///< Total number of trigger types
82   };
83
84
85   // Histograms for MC
86   enum {
87     kHistoCheckVzMC,    ///< Check vertex distribution for all vertex
88     kHistoCheckVzHasVtxMC, ///< Check vertex distribution for reco vertex
89     kHistoCheckVzNoPileupMC, ///< Check vertex distribution for non-pileup vtx
90     kNsummaryHistosMC   ///< Summary histograms for MC
91   };
92
93   enum {
94     kHistoPtResolutionMC, ///< Pt resolution
95     kNhistoTypesMC        ///< Number of MC histograms
96   };
97
98   enum {
99     kCharmMu,       ///< Mu from charm
100     kBeautyMu,      ///< Mu from beauty
101     kPrimaryMu,     ///< Primary mu
102     kSecondaryMu,   ///< Secondary mu
103     kRecoHadron,    ///< Reconstructed hadron
104     kUnknownPart,   ///< Particle that fails matching kine
105     kNtrackSources  ///< Total number of track sources
106   };
107
108   // Tree
109   enum {
110     kVarPx, ///< Px at vertex
111     kVarPy, ///< Py at vertex
112     kVarPz, ///< Pz at vertex
113     kVarPt, ///< Pt at vertex
114     kVarPxAtDCA, ///< Px at DCA
115     kVarPyAtDCA, ///< Py at DCA
116     kVarPzAtDCA, ///< Pz at DCA
117     kVarPtAtDCA, ///< Pt at DCA
118     kVarPxUncorrected, ///< Px at first chamber
119     kVarPyUncorrected, ///< Py at first chamber
120     kVarPzUncorrected, ///< Pz at first chamber
121     kVarPtUncorrected, ///< Pt at first chamber
122     kVarXUncorrected, ///< X at first chamber
123     kVarYUncorrected, ///< Y at at first chamber
124     kVarZUncorrected, ///< Z at at first chamber
125     kVarXatDCA, ///< X position at DCA
126     kVarYatDCA, ///< Y position at DCA
127     kVarDCA, ///< DCA
128     kVarEta, ///< Eta
129     kVarRapidity, ///< Rapidity
130     kVarCharge, ///< Charge
131     kVarRAtAbsEnd, ///< R at absorber end
132     // Global event info
133     kVarIPVx, ///< IP x position
134     kVarIPVy, ///< IP y position
135     kVarIPVz, ///< IP z position
136     kVarCentrality, ///< Event centrality
137     kNvarFloat
138   };
139
140   enum {
141     kVarMatchTrig, ///< Match trigger
142     kVarIsMuon, ///< Is muon
143     kVarIsGhost, ///< Is Ghost (trigger track not matching tracker)
144     kVarLocalCircuit, ///< Fired local circuit
145     // Global event info
146     kVarPassPhysicsSelection, ///< Pass physics selection (Requires ESD)
147     kVarNVtxContrib, ///< Vertex contributors
148     kVarNspdTracklets, ///< SPD tracklets
149     kVarIsPileup, ///< Pileup vertices
150     kNvarInt
151   };
152
153   enum {
154     // Global event info
155     kVarTrigMask, ///< Fires triggers mask
156     kNvarChar
157   };
158
159   // Event ID
160   enum {
161     // Global event info
162     kVarBunchCrossNumber, ///< Bunch crossing number
163     kVarOrbitNumber, ///< Orbit number
164     kVarPeriodNumber, ///< Period number
165     kVarRunNumber, ///< Run number
166     kNvarUInt
167   };
168   
169   // Tree MC
170   enum {
171     kVarPxMC, ///< Px from Kine
172     kVarPyMC, ///< Py from Kine
173     kVarPzMC, ///< Pz from Kine
174     kVarPtMC, ///< Pt from Kine
175     kVarEtaMC,  ///< Eta from Kine
176     kVarRapidityMC, ///< Rapidity from Kine
177     kVarVxMC, ///< Particle production x vertex from Kine
178     kVarVyMC, ///< Particle production y vertex from Kine
179     kVarVzMC, ///< Particle production z vertex from Kine
180     kVarMotherPxMC, ///< Mother px from Kine
181     kVarMotherPyMC, ///< Mother py from Kine
182     kVarMotherPzMC, ///< Mother pz from Kine
183     kVarMotherEtaMC,  ///< Mother eta from Kine
184     kVarMotherRapidityMC, ///< Mother rapidity from Kine
185     kVarMotherVxMC, ///< Mother production x vertex from Kine
186     kVarMotherVyMC, ///< Mother production y vertex from Kine
187     kVarMotherVzMC, ///< Mother production z vertex from Kine
188     // Global event info
189     kVarIPVxMC, ///< IP x position
190     kVarIPVyMC, ///< IP y position
191     kVarIPVzMC, ///< IP z position
192     kNvarFloatMC
193   };
194
195   enum {
196     kVarPdg, ///< PDG
197     kVarMotherPdg, ///< Mother PDG
198     kVarMotherType, ///< Mother type
199     kNvarIntMC
200   };
201
202   Int_t GetHistoIndex(Int_t histoTypeIndex, Int_t trigIndex = -1, Int_t srcIndex = -1);
203   Float_t GetBinThetaAbsEnd(Float_t RAtAbsEnd, Bool_t isTheta = kFALSE);
204   Float_t GetBinTrigClass(const Char_t* trigClass);
205
206   void FillTriggerHistos(Int_t histoIndex, Int_t matchTrig, Int_t motherType,
207                          Float_t var1, Float_t var2 = 0. , Float_t var3 = 0.);
208   
209   Int_t RecoTrackMother(AliMCParticle* mcParticle);
210
211   void Reset(Bool_t keepGlobal = kTRUE);
212
213   void SetAxisLabel(TAxis* axis);
214
215   Int_t fFillTreeScaleDown; ///< Ntuple must be filled each fFillTreeScaleDown events
216   Bool_t fKeepAll; ///< Flag indicating to keep all info in tree
217   Int_t  fkNvtxContribCut; ///< Number of cuts in vertex contributors
218   TObjArray* fTriggerClasses; ///< full trigger class name
219   AliCFManager* fCFManager; //!< Pointer to the CF manager
220   TList* fHistoList;   //!< List of histograms for data
221   TList* fHistoListMC; //!< List of histograms for MC
222   TList* fHistoListQA; //!< List of QA histos
223   TTree* fTreeSingleMu; //!< Optional output Tree
224   Float_t* fVarFloat; //!< Reconstructed parameters float
225   Int_t* fVarInt; //!< Reconstructed parameters int
226   Char_t** fVarChar; //!< Reconstructed parameters string
227   UInt_t* fVarUInt; //!< Reconstructed parameters Uint
228   Float_t* fVarFloatMC; //!< MC parameters float
229   Int_t* fVarIntMC; //!< MC parameters int
230   TMap* fAuxObjects; //!< Map of vertex distribution per run
231   TString fDebugString; //!< Debug string
232
233   ClassDef(AliAnalysisTaskSingleMu, 2); // Single muon analysis
234 };
235
236 #endif