1 #ifndef ALIANALYSISTASKMINIJET_H
\r
2 #define ALIANALYSISTASKMINIJET_H
\r
4 // Two-particle correlations using all particles over pt threshold
\r
5 // Extract mini-jet yield and fragmentation properties via Delta-Phi histograms
\r
6 // Can use ESD or AOD, reconstructed and Monte Carlo data as input
\r
7 // Author: eva.sicking@cern.ch
\r
15 class AliESDtrackCuts;
\r
17 #include "AliAnalysisTaskSE.h"
\r
20 class AliAnalysisTaskMinijet : public AliAnalysisTaskSE {
\r
22 AliAnalysisTaskMinijet(const char *name="<default name>");
\r
23 virtual ~AliAnalysisTaskMinijet();
\r
25 virtual void UserCreateOutputObjects();
\r
26 virtual void UserExec(Option_t* option);
\r
27 virtual void Terminate(Option_t *);
\r
28 virtual void SetCuts(AliESDtrackCuts* cuts){fCuts = cuts;}
\r
30 void SetUseMC(Bool_t useMC=kTRUE, Bool_t mcOnly=kFALSE) {fUseMC = useMC; fMcOnly=mcOnly;}
\r
31 void SetAnalyseOnlyPrimaries(Bool_t analysePrimOnly) {fAnalysePrimOnly = analysePrimOnly;} // not used anymore
\r
32 void SetPtRangeMultiplicity(Float_t ptMin, Float_t ptMax) {fPtMin = ptMin; fPtMax = ptMax; }
\r
33 void SetTriggerPtCut(Float_t triggerPtCut) {fTriggerPtCut = triggerPtCut;}
\r
34 void SetAssociatePtCut(Float_t associatePtCut) {fAssociatePtCut = associatePtCut;}
\r
35 void SetModeEsdAod(Int_t mode) {fMode = mode;}
\r
36 void SetMaxVertexZ(Float_t vertexZCut) {fVertexZCut = vertexZCut;}
\r
37 void SetMaxEta(Float_t etaCut) {fEtaCut = etaCut;}
\r
38 void SetMaxEtaSeed(Float_t etaCutSeed) {fEtaCutSeed = etaCutSeed;}
\r
39 void SetSelectParticles(Int_t selectParticles) {fSelectParticles = selectParticles;}
\r
40 void SetSelectParticlesAssoc(Int_t selectParticlesAssoc) {fSelectParticlesAssoc = selectParticlesAssoc;}
\r
45 Int_t LoopESD (std::vector<Float_t> &pt, std::vector<Float_t> &eta,
\r
46 std::vector<Float_t> &phi, std::vector<Short_t> &charge,
\r
47 std::vector<Int_t> &nTracksTracklets, const Int_t step);
\r
48 Int_t LoopESDRecMcProp(std::vector<Float_t> &pt, std::vector<Float_t> &eta,
\r
49 std::vector<Float_t> &phi, std::vector<Short_t> &charge,
\r
50 std::vector<Int_t> &nTracksTracklets, const Int_t step);
\r
51 Int_t LoopESDMC (std::vector<Float_t> &pt, std::vector<Float_t> &eta,
\r
52 std::vector<Float_t> &phi, std::vector<Short_t> &charge,
\r
53 std::vector<Int_t> &nTracksTracklets, const Int_t step);
\r
55 Int_t LoopAOD (std::vector<Float_t> &pt, std::vector<Float_t> &eta,
\r
56 std::vector<Float_t> &phi, std::vector<Short_t> &charge,
\r
57 std::vector<Int_t> &nTracksTracklets, const Int_t step);
\r
58 Int_t LoopAODRecMcProp(std::vector<Float_t> &pt, std::vector<Float_t> &eta,
\r
59 std::vector<Float_t> &phi, std::vector<Short_t> &charge,
\r
60 std::vector<Int_t> &nTracksTracklets, const Int_t step);
\r
61 Int_t LoopAODMC (std::vector<Float_t> &pt, std::vector<Float_t> &eta,
\r
62 std::vector<Float_t> &phi, std::vector<Short_t> &charge,
\r
63 std::vector<Int_t> &nTracksTracklets, const Int_t step);
\r
65 void Analyse (const std::vector<Float_t> &pt,
\r
66 const std::vector<Float_t> &eta,
\r
67 const std::vector<Float_t> &phi,
\r
68 const std::vector<Short_t> &charge,
\r
69 const Int_t ntacks, const Int_t ntacklets=0,
\r
70 const Int_t nAll=0, const Int_t step=0);
\r
72 const Bool_t SelectParticlePlusCharged(Short_t charge, Int_t pdg, Bool_t prim);
\r
73 const Bool_t SelectParticle(Short_t charge, Int_t pdg, Bool_t prim);
\r
74 const Bool_t CheckEvent(const Bool_t recVertex);
\r
75 const Double_t* CreateLogAxis(const Int_t nbins, const Double_t xmin, const Double_t xmax);
\r
76 const Bool_t CheckLikeSign(const Short_t chargeEventAxis, const Short_t chargeOthers);
\r
79 Bool_t fUseMC; // flag for Monte Carlo usages
\r
80 Bool_t fMcOnly; // flag defines, if only MC data is used in analysis or also reconstructed data
\r
81 Double_t fBSign; // magnetic field
\r
82 Bool_t fAnalysePrimOnly; // flag for analysis of primaries only (also in reconstructed data)
\r
83 Float_t fPtMin; // set lower limit for pt acceptance for mutliplicity defintion
\r
84 Float_t fPtMax; // set upper limit for pt acceptance for mutliplicity defintion
\r
85 AliESDtrackCuts* fCuts; // List of cuts for ESDs
\r
86 Float_t fTriggerPtCut; // cut on particle pt used as event axis
\r
87 Float_t fAssociatePtCut; // cut on particle pt used for correlations
\r
88 Int_t fMode; // ESD(=0) of AOD(=1) reading
\r
89 Float_t fVertexZCut; // vertex cut
\r
90 Float_t fEtaCut; // eta acceptance cut
\r
91 Float_t fEtaCutSeed; // eta acceptance cut for seed
\r
92 Int_t fSelectParticles; // only in cas of MC: use also neutral particles or not
\r
93 Int_t fSelectParticlesAssoc; // only in cas of MC: use also neutral particles or not
\r
95 AliESDEvent *fESDEvent; //! esd event
\r
96 AliAODEvent *fAODEvent; //! aod event
\r
97 Int_t fNMcPrimAccept; // global variable for mc multiplucity
\r
98 Int_t fNRecAccept; // global variable for rec multiplucity
\r
99 Float_t fVzEvent; // global variable for rec vertex position
\r
100 Double_t fMeanPtRec; // global variable for rec mean pt
\r
101 Double_t fLeadingPtRec; // global variable for rec mean pt
\r
103 TList *fHists; // output list
\r
104 TH1F *fStep; // how many events have passed which correction step
\r
105 TH1F *fHistPt; // Pt spectrum ESD
\r
106 TH1F *fHistPtMC; // Pt spectrum MC
\r
108 TH2F *fNmcNch; // N mc - N ch rec
\r
109 TProfile *fPNmcNch; // N mc - N ch rec
\r
110 TH2F *fChargedPi0; // charged versus charged+Pi0
\r
112 THnSparse *fMapSingleTrig[6]; //! multi-dim histo for trigger track properties
\r
113 THnSparse *fMapPair[6]; //! multi-dim histo for pair properties
\r
114 THnSparse *fMapEvent[6]; //! multi-dim histo for event properties
\r
115 THnSparse *fMapAll[6]; //! multi-dim histo for properties of all analysed tracks
\r
117 TH1F * fVertexZ[6]; // z of vertex
\r
118 TH1F * fNcharge[6]; // pt
\r
119 TH1F * fPt[6]; // pt
\r
120 TH1F * fEta[6]; // eta
\r
121 TH1F * fPhi[6]; // phi
\r
122 TH1F * fDcaXY[6]; // dca xy direction
\r
123 TH1F * fDcaZ[6]; // dca z direction
\r
125 TH1F * fPtSeed[6]; // pt of seed (event axis)
\r
126 TH1F * fEtaSeed[6]; // eta of seed
\r
127 TH1F * fPhiSeed[6]; // phi of seed
\r
129 TH1F * fPtOthers[6]; // pt of all other particels used in dEtadPhi
\r
130 TH1F * fEtaOthers[6]; // eta of all other particels used in dEtadPhi
\r
131 TH1F * fPhiOthers[6]; // phi of all other particels used in dEtadPhi
\r
132 TH2F * fPtEtaOthers[6]; // pt-eta of all other particels used in dEtadPhi
\r
135 TH2F * fPhiEta[6]; // eta - phi
\r
136 TH2F * fDPhiDEtaEventAxis[6]; // correlation dEta-dPhi towards event axis
\r
137 TH2F * fDPhiDEtaEventAxisSeeds[6]; // correlation dEta-dPhi towards event axis of trigger particles
\r
138 TH1F * fTriggerNch[6]; // number of triggers with accepted-track number
\r
139 TH2F * fTriggerNchSeeds[6]; // number of triggers with accepted-track number
\r
140 TH1F * fTriggerTracklet[6]; // number of triggers with accepted-tracklet number
\r
141 TH2F * fNch07Nch[6]; // nCharged with pT>fTriggerPtCut vs nCharged
\r
142 TProfile * fPNch07Nch[6]; // nCharged with pT>fTriggerPtCut vs nCharged
\r
144 TH2F * fNch07Tracklet[6]; // nCharged with pT>fTriggerPtCut vs nTracklet
\r
145 TH2F * fNchTracklet[6]; // nCharged vs nTracklet
\r
146 TProfile * fPNch07Tracklet[6]; // nCharged with pT>fTriggerPtCut vs nTracklet
\r
148 TH1F * fDPhiEventAxis[6]; // delta phi of associate tracks to event axis
\r
150 AliAnalysisTaskMinijet(const AliAnalysisTaskMinijet&); // not implemented
\r
151 AliAnalysisTaskMinijet& operator=(const AliAnalysisTaskMinijet&); // not implemented
\r
153 ClassDef(AliAnalysisTaskMinijet, 1); // example of analysis
\r