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 */
12 #include <TTreeStream.h>
17 #include <AliAnalysisTaskSE.h>
18 #include <AliESDEvent.h>
19 #include <AliAODEvent.h>
20 #include <AliMCEvent.h>
21 #include <AliAnalysisFilter.h>
23 #include <AliGenEventHeader.h>
24 #include <AliVHeader.h>
25 #include <AliAODMCParticle.h>
26 #include <AliESDtrackCuts.h>
30 class AliAnalysisTaskQAHighPtDeDx : public AliAnalysisTaskSE {
34 AliAnalysisTaskQAHighPtDeDx();
35 AliAnalysisTaskQAHighPtDeDx(const char *name);
36 virtual ~AliAnalysisTaskQAHighPtDeDx();
43 //AliAnalysisTaskQAHighPtDeDx(const char *name="<default name>");
44 //virtual ~AliAnalysisTaskQAHighPtDeDx() { /*if (fOutputList) delete fOutputList;*/}//;
46 virtual void UserCreateOutputObjects();
47 virtual void UserExec(Option_t *option);
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; }
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;}
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();
81 Short_t GetPythiaEventProcessType(Int_t pythiaType);
82 Short_t GetDPMjetEventProcessType(Int_t dpmJetType);
83 ULong64_t GetEventIdAsLong(AliVHeader* header) const;
85 TParticle* FindPrimaryMother(AliStack* stack, Int_t label);
86 Int_t FindPrimaryMotherLabel(AliStack* stack, Int_t label);
88 AliAODMCParticle* FindPrimaryMotherAOD(AliAODMCParticle* startParticle);
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);
95 AliAODMCParticle* FindPrimaryMotherAODV0(AliAODMCParticle* startParticle, Int_t& nSteps);
99 static const Double_t fgkClight; // Speed of light (cm/ps)
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
113 TRandom* fRandom; //! random number generator
114 Bool_t fPileUpRej; // kTRUE is pile-up is rejected
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
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
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
153 TProfile *pMIPVsEtaV0s;
155 TProfile *pPlateauVsEta;
159 TProfile *pMIPVsNch[9];
162 TProfile *pMIPVsPhi[9];
163 TH2D *hPlateauVsPhi[9];
164 TProfile *pPlateauVsPhi[9];
182 AliAnalysisTaskQAHighPtDeDx(const AliAnalysisTaskQAHighPtDeDx&); // not implemented
183 AliAnalysisTaskQAHighPtDeDx& operator=(const AliAnalysisTaskQAHighPtDeDx&); // not implemented
185 //TTree* fTree; //! Debug tree
187 ClassDef(AliAnalysisTaskQAHighPtDeDx, 1); //Analysis task for high pt analysis