]> git.uio.no Git - u/mrichter/AliRoot.git/blob - PWGLF/QATasks/AliAnalysisTaskQAHighPtDeDx.h
Merge branch 'feature-movesplit'
[u/mrichter/AliRoot.git] / PWGLF / QATasks / AliAnalysisTaskQAHighPtDeDx.h
1 #ifndef ALIANALYSISTASKQAHIGHPTDEDX_H
2 #define ALIANALYSISTASKQAHIGHPTDEDX_H
3 /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
4 * See cxx source for full Copyright notice */
5 /* $Id$ */
6
7
8 // ROOT includes
9 #include <TList.h>
10 #include <TH1.h>
11 #include <TProfile.h>
12 #include <TTreeStream.h>
13 #include <TRandom.h>
14 #include <TObject.h>
15
16 // AliRoot includes
17 #include <AliAnalysisTaskSE.h>
18 #include <AliESDEvent.h>
19 #include <AliAODEvent.h>
20 #include <AliMCEvent.h>
21 #include <AliAnalysisFilter.h>
22 #include <AliStack.h>
23 #include <AliGenEventHeader.h>
24 #include <AliVHeader.h>
25 #include <AliAODMCParticle.h> 
26 #include <AliESDtrackCuts.h>
27
28
29
30 class AliAnalysisTaskQAHighPtDeDx : public AliAnalysisTaskSE {
31  public:
32  
33
34   AliAnalysisTaskQAHighPtDeDx();
35   AliAnalysisTaskQAHighPtDeDx(const char *name);
36   virtual ~AliAnalysisTaskQAHighPtDeDx();
37
38
39
40
41
42
43   //AliAnalysisTaskQAHighPtDeDx(const char *name="<default name>");
44   //virtual ~AliAnalysisTaskQAHighPtDeDx() { /*if (fOutputList) delete fOutputList;*/}//;
45
46   virtual void   UserCreateOutputObjects();
47   virtual void   UserExec(Option_t *option);
48
49   Bool_t   GetAnalysisMC() { return fAnalysisMC; }   
50   Double_t GetVtxCut() { return fVtxCut; }   
51   Double_t GetEtaCut() { return fEtaCut; }     
52   //Double_t GetMinPt() { return fMinPt; }   
53   //Int_t    GetTreeOption() { return fTreeOption; }  
54
55   virtual void  SetTrigger(UInt_t ktriggerInt) {ftrigBit = ktriggerInt;}
56   virtual void  SetTrackFilterGolden(AliAnalysisFilter* trackF) {fTrackFilterGolden = trackF;}
57   virtual void  SetTrackFilterTPC(AliAnalysisFilter* trackF) {fTrackFilterTPC = trackF;}
58   virtual void  SetCentralityEstimator(const char * centEst) {fCentEst = centEst;}
59   virtual void  SetAnalysisType(const char* analysisType) {fAnalysisType = analysisType;}
60   virtual void  SetAnalysisMC(Bool_t isMC) {fAnalysisMC = isMC;}
61   virtual void  SetVtxCut(Double_t vtxCut){fVtxCut = vtxCut;}
62   virtual void  SetEtaCut(Double_t etaCut){fEtaCut = etaCut;}
63   virtual void  SetPileUpRej(Bool_t isrej) {fPileUpRej = isrej;}   
64   virtual void  SetMinCent(Float_t minvalc) {fMinCent = minvalc;}
65   virtual void  SetMaxCent(Float_t maxvalc) {fMaxCent = maxvalc;}
66   virtual void  SetStoreMcIn(Bool_t value) {fStoreMcIn = value;}
67   virtual void  SetAnalysisPbPb(Bool_t isanaPbPb) {fAnalysisPbPb = isanaPbPb;}
68
69  private:
70   virtual Float_t GetVertex(const AliVEvent* event) const;
71   virtual void AnalyzeESD(AliESDEvent* esd); 
72   virtual void AnalyzeAOD(AliAODEvent* aod); 
73   virtual void ProduceArrayTrksESD(AliESDEvent* event);
74   virtual void ProduceArrayV0ESD(AliESDEvent* event);
75   virtual void ProduceArrayTrksAOD(AliAODEvent* event);
76   virtual void ProduceArrayV0AOD(AliAODEvent* event);
77   Short_t   GetPidCode(Int_t pdgCode) const;
78   void      ProcessMCTruthESD();
79   void      ProcessMCTruthAOD(); 
80
81   Short_t   GetPythiaEventProcessType(Int_t pythiaType);
82   Short_t   GetDPMjetEventProcessType(Int_t dpmJetType);
83   ULong64_t GetEventIdAsLong(AliVHeader* header) const;
84
85   TParticle* FindPrimaryMother(AliStack* stack, Int_t label);
86   Int_t      FindPrimaryMotherLabel(AliStack* stack, Int_t label);
87
88   AliAODMCParticle* FindPrimaryMotherAOD(AliAODMCParticle* startParticle);
89
90   TParticle* FindPrimaryMotherV0(AliStack* stack, Int_t label);
91   Int_t      FindPrimaryMotherLabelV0(AliStack* stack, Int_t label, Int_t& nSteps);
92   Bool_t PhiCut(Double_t pt, Double_t phi, Double_t q, Float_t   mag, TF1* phiCutLow, TF1* phiCutHigh);
93
94
95   AliAODMCParticle* FindPrimaryMotherAODV0(AliAODMCParticle* startParticle, Int_t& nSteps);
96
97
98
99   static const Double_t fgkClight;   // Speed of light (cm/ps)
100
101   AliESDEvent* fESD;                  //! ESD object
102   AliAODEvent* fAOD;                  //! AOD object
103   AliMCEvent*  fMC;                   //! MC object
104   AliStack*    fMCStack;              //! MC ESD stack
105   TClonesArray* fMCArray;             //! MC array for AOD
106   AliAnalysisFilter* fTrackFilterGolden;    //  Track Filter, set 2010 with golden cuts
107   AliAnalysisFilter* fTrackFilterTPC; // track filter for TPC only tracks
108   TString       fCentEst;             // V0A , V0M, 
109   TString       fAnalysisType;        //  "ESD" or "AOD"
110   Bool_t        fAnalysisMC;          //  Real(kFALSE) or MC(kTRUE) flag
111   Bool_t        fAnalysisPbPb;        //  true you want to analyze PbPb data, false for pp
112   UInt_t       ftrigBit;
113   TRandom*      fRandom;              //! random number generator
114   Bool_t        fPileUpRej;           // kTRUE is pile-up is rejected
115  
116
117
118   //
119   // Cuts and options
120   //
121
122   Double_t     fVtxCut;             // Vtx cut on z position in cm
123   Double_t     fEtaCut;             // Eta cut used to select particles
124   Float_t      fMinCent; //minimum centrality
125   Float_t      fMaxCent; //maximum centrality
126   Bool_t       fStoreMcIn;          // Store MC input tracks
127   //
128   // Help variables
129   //
130   Short_t      fMcProcessType;      // -1=invalid, 0=data, 1=ND, 2=SD, 3=DD
131   Short_t      fTriggeredEventMB;   // 1 = triggered, 0 = not trigged (MC only)
132   Short_t      fVtxStatus;          // -1 = no vtx, 0 = outside cut, 1 = inside cut
133   Float_t      fZvtx;               // z vertex
134   Float_t      fZvtxMC;             // z vertex MC (truth)
135   Int_t        fRun;                // run no
136   ULong64_t    fEventId;            // unique event id
137               
138   //
139   // Output objects
140   //
141   TList*        fListOfObjects;     //! Output list of objects
142   TH1I*         fEvents;            //! No of accepted events
143   TH1I*         fVtx;               //! Event vertex info
144   TH1F*         fVtxMC;             //! Event vertex info for ALL MC events
145   TH1F*         fVtxBeforeCuts;     //! Vertex z dist before cuts
146   TH1F*         fVtxAfterCuts;      //! Vertex z dist after cuts
147   TH1F* fn1;
148   TH1F* fcent;
149
150   TH2D *hMIPVsEta;
151   TProfile *pMIPVsEta;
152   TH2D *hMIPVsEtaV0s;
153   TProfile *pMIPVsEtaV0s;
154   TH2D *hPlateauVsEta;
155   TProfile *pPlateauVsEta;
156   TH2D *hPhi;
157
158   TH2D     *hMIPVsNch[9];
159   TProfile *pMIPVsNch[9];
160
161   TH2D     *hMIPVsPhi[9];
162   TProfile *pMIPVsPhi[9];
163   TH2D     *hPlateauVsPhi[9];
164   TProfile *pPlateauVsPhi[9];
165
166   TH2D* histPiV0[9];
167   TH1D* histpPiV0[9];
168
169   TH2D* histPV0[9];
170   TH1D* histpPV0[9];
171
172   TH2D* histAllCh[9];
173
174   TH2D* histPiTof[9];
175   TH1D* histpPiTof[9];
176
177   TH2D* histEV0[9];
178
179   TH1D* hMcIn[7][9];
180   TH1D* hMcOut[7][9];
181
182   AliAnalysisTaskQAHighPtDeDx(const AliAnalysisTaskQAHighPtDeDx&);            // not implemented
183   AliAnalysisTaskQAHighPtDeDx& operator=(const AliAnalysisTaskQAHighPtDeDx&); // not implemented
184
185   //TTree*        fTree;              //! Debug tree 
186
187   ClassDef(AliAnalysisTaskQAHighPtDeDx, 1);    //Analysis task for high pt analysis 
188 };
189
190 #endif