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
14 class AliESDtrackCuts;
\r
16 #include "AliAnalysisTaskSE.h"
\r
19 class AliAnalysisTaskMinijet : public AliAnalysisTaskSE {
\r
21 AliAnalysisTaskMinijet(const char *name="<default name>");
\r
22 virtual ~AliAnalysisTaskMinijet();
\r
24 virtual void UserCreateOutputObjects();
\r
25 virtual void UserExec(Option_t* option);
\r
26 virtual void Terminate(Option_t *);
\r
27 virtual void SetCuts(AliESDtrackCuts* cuts){fCuts = cuts;}
\r
29 void SetUseMC(Bool_t useMC=kTRUE, Bool_t mcOnly=kFALSE) {fUseMC = useMC; fMcOnly=mcOnly;}
\r
30 void SetAnalyseOnlyPrimaries(Bool_t analysePrimOnly) {fAnalysePrimOnly = analysePrimOnly;} // not used anymore
\r
31 void SetPtRange(Float_t ptMin, Float_t ptMax) {fPtMin = ptMin; fPtMax = ptMax; }
\r
32 void SetTriggerPtCut(Float_t triggerPtCut) {fTriggerPtCut = triggerPtCut;}
\r
33 void SetAssociatePtCut(Float_t associatePtCut) {fAssociatePtCut = associatePtCut;}
\r
34 void SetModeEsdAod(Int_t mode) {fMode = mode;}
\r
35 void SetTriggerMask(Int_t triggerType) {fTriggerType = triggerType;}
\r
36 void SetFilterBit(Int_t filterBit) {fFilterBit = filterBit;}
\r
37 void SetMaxVertexZ(Float_t vertexZCut) {fVertexZCut = vertexZCut;}
\r
38 void SetMaxEta(Float_t etaCut) {fEtaCut = etaCut;}
\r
39 void SetMaxEtaSeed(Float_t etaCutSeed) {fEtaCutSeed = etaCutSeed;}
\r
40 void SetSelectParticles(Int_t selectParticles) {fSelectParticles = selectParticles;}
\r
41 void SetSelectParticlesAssoc(Int_t selectParticlesAssoc) {fSelectParticlesAssoc = selectParticlesAssoc;}
\r
42 void SetCheckSDD (Bool_t checkSDD, Int_t selOption) {fCheckSDD = checkSDD; fSelOption = selOption;}
\r
47 Int_t ReadEventESD (std::vector<Float_t> &pt, std::vector<Float_t> &eta,
\r
48 std::vector<Float_t> &phi, std::vector<Short_t> &charge,
\r
49 std::vector<Int_t> &nTracksTracklets, const Int_t step);
\r
50 Int_t ReadEventESDRecMcProp(std::vector<Float_t> &pt, std::vector<Float_t> &eta,
\r
51 std::vector<Float_t> &phi, std::vector<Short_t> &charge,
\r
52 std::vector<Int_t> &nTracksTracklets, const Int_t step);
\r
53 Int_t ReadEventESDMC (std::vector<Float_t> &pt, std::vector<Float_t> &eta,
\r
54 std::vector<Float_t> &phi, std::vector<Short_t> &charge,
\r
55 std::vector<Int_t> &nTracksTracklets, const Int_t step);
\r
57 Int_t ReadEventAOD (std::vector<Float_t> &pt, std::vector<Float_t> &eta,
\r
58 std::vector<Float_t> &phi, std::vector<Short_t> &charge,
\r
59 std::vector<Int_t> &nTracksTracklets, const Int_t step);
\r
60 Int_t ReadEventAODRecMcProp(std::vector<Float_t> &pt, std::vector<Float_t> &eta,
\r
61 std::vector<Float_t> &phi, std::vector<Short_t> &charge,
\r
62 std::vector<Int_t> &nTracksTracklets, const Int_t step);
\r
63 Int_t ReadEventAODMC (std::vector<Float_t> &pt, std::vector<Float_t> &eta,
\r
64 std::vector<Float_t> &phi, std::vector<Short_t> &charge,
\r
65 std::vector<Int_t> &nTracksTracklets, const Int_t step);
\r
67 void Analyse (const std::vector<Float_t> &pt,
\r
68 const std::vector<Float_t> &eta,
\r
69 const std::vector<Float_t> &phi,
\r
70 const std::vector<Short_t> &charge,
\r
71 const Int_t ntacks, const Int_t ntacklets=0,
\r
72 const Int_t nAll=0, const Int_t step=0);
\r
74 Bool_t SelectParticlePlusCharged(const Short_t charge, const Int_t pdg, const Bool_t prim);
\r
75 Bool_t SelectParticle(const Short_t charge, const Int_t pdg, const Bool_t prim);
\r
76 Bool_t CheckEvent(const Bool_t recVertex);
\r
77 const Double_t* CreateLogAxis(const Int_t nbins, const Double_t xmin, const Double_t xmax);
\r
78 Bool_t CheckLikeSign(const Short_t chargeEventAxis, const Short_t chargeOthers);
\r
81 Bool_t fUseMC; // flag for Monte Carlo usages
\r
82 Bool_t fMcOnly; // flag defines, if only MC data is used in analysis or also reconstructed data
\r
83 Double_t fBSign; // magnetic field
\r
84 Bool_t fAnalysePrimOnly; // flag for analysis of primaries only (also in reconstructed data)
\r
85 Float_t fPtMin; // set lower limit for pt acceptance for mutliplicity defintion
\r
86 Float_t fPtMax; // set upper limit for pt acceptance for mutliplicity defintion
\r
87 AliESDtrackCuts* fCuts; // List of cuts for ESDs
\r
88 Float_t fTriggerPtCut; // cut on particle pt used as event axis
\r
89 Float_t fAssociatePtCut; // cut on particle pt used for correlations
\r
90 Int_t fMode; // ESD(=0) of AOD(=1) reading
\r
91 Int_t fTriggerType; // sets trigger -> AliVEvent::kMB, AliVEvent::kHighMult
\r
92 Int_t fFilterBit; // Filter bit written in ESD filter, select track type
\r
93 Float_t fVertexZCut; // vertex cut
\r
94 Float_t fEtaCut; // eta acceptance cut
\r
95 Float_t fEtaCutSeed; // eta acceptance cut for seed
\r
96 Int_t fSelectParticles; // only in cas of MC: use also neutral particles or not
\r
97 Int_t fSelectParticlesAssoc; // only in cas of MC: use also neutral particles or not
\r
98 Bool_t fCheckSDD; // check if SDD was in read out partition (needed for LHC11a)
\r
99 Int_t fSelOption; // 0 = use hit in SDD for event selection, 1 = use trigger for event selection
\r
101 AliESDEvent *fESDEvent; //! esd event
\r
102 AliAODEvent *fAODEvent; //! aod event
\r
103 Int_t fNMcPrimAccept; // global variable for mc multiplucity
\r
104 Int_t fNRecAccept; // global variable for rec multiplucity
\r
105 Int_t fNMcPrimAcceptTracklet; // global variable for mc multiplucity
\r
106 Int_t fNRecAcceptTracklet; // global variable for rec multiplucity
\r
107 Float_t fVzEvent; // global variable for rec vertex position
\r
108 Double_t fMeanPtRec; // global variable for rec mean pt
\r
109 Double_t fLeadingPtRec; // global variable for rec mean pt
\r
111 TList *fHists; // output list
\r
112 TH1F *fStep; // how many events have passed which correction step
\r
113 TH1F *fHistPt; // Pt spectrum ESD
\r
114 TH1F *fHistPtMC; // Pt spectrum MC
\r
115 TH2F *fNContrNtracklets; // controll histogram for vertex->nContributers and number of tracklets
\r
116 TH2F *fNContrNtracks; // controll histogram for vertex->nContributers and number of tracks
\r
118 TH2F *fNmcNch; // N mc - N ch rec
\r
119 TProfile *fPNmcNch; // N mc - N ch rec
\r
120 TH2F *fNmcNchVtx; // N mc - N ch rec for events with reconstructed vertex
\r
121 TProfile *fPNmcNchVtx; // N mc - N ch rec for events with reconstructed vertex
\r
122 TH2F *fNmcNchTracklet; // N mc - N ch rec
\r
123 TProfile *fPNmcNchTracklet; // N mc - N ch rec
\r
124 TH2F *fNmcNchVtxTracklet; // N mc - N ch rec for events with reconstructed vertex
\r
125 TProfile *fPNmcNchVtxTracklet; // N mc - N ch rec for events with reconstructed vertex
\r
126 TH2F *fChargedPi0; // charged versus charged+Pi0
\r
127 TH1F *fVertexCheck; // check which fraction of events has vtx_rec but no good vtx_mc
\r
129 THnSparse *fMapSingleTrig[6]; //! multi-dim histo for trigger track properties
\r
130 THnSparse *fMapPair[6]; //! multi-dim histo for pair properties
\r
131 THnSparse *fMapEvent[6]; //! multi-dim histo for event properties
\r
132 THnSparse *fMapAll[6]; //! multi-dim histo for properties of all analysed tracks
\r
134 TH1F * fVertexZ[6]; // z of vertex
\r
135 TH1F * fNcharge[6]; // pt
\r
136 TH1F * fPt[6]; // pt
\r
137 TH1F * fEta[6]; // eta
\r
138 TH1F * fPhi[6]; // phi
\r
139 TH1F * fDcaXY[6]; // dca xy direction
\r
140 TH1F * fDcaZ[6]; // dca z direction
\r
142 TH1F * fPtSeed[6]; // pt of seed (event axis)
\r
143 TH1F * fEtaSeed[6]; // eta of seed
\r
144 TH1F * fPhiSeed[6]; // phi of seed
\r
146 TH1F * fPtOthers[6]; // pt of all other particels used in dEtadPhi
\r
147 TH1F * fEtaOthers[6]; // eta of all other particels used in dEtadPhi
\r
148 TH1F * fPhiOthers[6]; // phi of all other particels used in dEtadPhi
\r
149 TH2F * fPtEtaOthers[6]; // pt-eta of all other particels used in dEtadPhi
\r
152 TH2F * fPhiEta[6]; // eta - phi
\r
153 TH2F * fDPhiDEtaEventAxis[6]; // correlation dEta-dPhi towards event axis
\r
154 TH2F * fDPhiDEtaEventAxisSeeds[6]; // correlation dEta-dPhi towards event axis of trigger particles
\r
155 TH1F * fTriggerNch[6]; // number of triggers with accepted-track number
\r
156 TH2F * fTriggerNchSeeds[6]; // number of triggers with accepted-track number
\r
157 TH1F * fTriggerTracklet[6]; // number of triggers with accepted-tracklet number
\r
158 TH2F * fNch07Nch[6]; // nCharged with pT>fTriggerPtCut vs nCharged
\r
159 TProfile * fPNch07Nch[6]; // nCharged with pT>fTriggerPtCut vs nCharged
\r
161 TH2F * fNch07Tracklet[6]; // nCharged with pT>fTriggerPtCut vs nTracklet
\r
162 TH2F * fNchTracklet[6]; // nCharged vs nTracklet
\r
163 TProfile * fPNch07Tracklet[6]; // nCharged with pT>fTriggerPtCut vs nTracklet
\r
165 TH1F * fDPhiEventAxis[6]; // delta phi of associate tracks to event axis
\r
167 AliAnalysisTaskMinijet(const AliAnalysisTaskMinijet&); // not implemented
\r
168 AliAnalysisTaskMinijet& operator=(const AliAnalysisTaskMinijet&); // not implemented
\r
170 ClassDef(AliAnalysisTaskMinijet, 1); // example of analysis
\r