]> git.uio.no Git - u/mrichter/AliRoot.git/blob - PWGCF/Correlations/DPhi/AliAnalysisTaskMinijet.h
Corrected end-of-line behavior
[u/mrichter/AliRoot.git] / PWGCF / Correlations / DPhi / AliAnalysisTaskMinijet.h
1 #ifndef ALIANALYSISTASKMINIJET_H
2 #define ALIANALYSISTASKMINIJET_H
3
4 // Two-particle correlations using all particles over pt threshold
5 // Extract mini-jet yield and fragmentation properties via Delta-Phi histograms
6 // Can use ESD or AOD, reconstructed and Monte Carlo data as input
7 // Author: eva.sicking@cern.ch
8
9 class TList;
10 class TH1F;
11 class TH2F;
12 class TProfile;
13 class THnSparse;
14 class AliESDtrackCuts;
15
16 #include "AliAnalysisTaskSE.h"
17 #include <vector>
18
19 class AliAnalysisTaskMinijet : public AliAnalysisTaskSE {
20  public:
21   AliAnalysisTaskMinijet(const char *name="<default name>");
22   virtual ~AliAnalysisTaskMinijet();
23   
24   virtual void UserCreateOutputObjects();
25   virtual void UserExec(Option_t* option);
26   virtual void Terminate(Option_t *);
27   virtual void SetCuts(AliESDtrackCuts* cuts){fCuts = cuts;}
28   
29   void         SetUseMC(Bool_t useMC=kTRUE, Bool_t mcOnly=kFALSE)    {fUseMC = useMC; fMcOnly=mcOnly;}
30   void         SetAnalyseOnlyPrimaries(Bool_t analysePrimOnly)       {fAnalysePrimOnly = analysePrimOnly;} // not used anymore
31   void         SetPtRange(Float_t ptMin, Float_t ptMax)              {fPtMin = ptMin; fPtMax = ptMax; }
32   void         SetTriggerPtCut(Float_t triggerPtCut)                 {fTriggerPtCut = triggerPtCut;}  
33   void         SetAssociatePtCut(Float_t associatePtCut)             {fAssociatePtCut = associatePtCut;} 
34   void         SetModeEsdAod(Int_t mode)                             {fMode = mode;}
35   void         SetTriggerMask(Int_t triggerType)                     {fTriggerType = triggerType;}
36   void         SetFilterBit(Int_t filterBit)                         {fFilterBit = filterBit;}
37   void         SetMaxVertexZ(Float_t vertexZCut)                     {fVertexZCut = vertexZCut;}
38   void         SetMaxEta(Float_t etaCut)                             {fEtaCut = etaCut;}
39   void         SetMaxEtaSeed(Float_t etaCutSeed)                     {fEtaCutSeed = etaCutSeed;}
40   void         SetSelectParticles(Int_t selectParticles)             {fSelectParticles = selectParticles;}
41   void         SetSelectParticlesAssoc(Int_t selectParticlesAssoc)   {fSelectParticlesAssoc = selectParticlesAssoc;}
42   void         SetCheckSDD(Bool_t checkSDD, Int_t selOption)         {fCheckSDD = checkSDD; fSelOption = selOption;}
43   void         SetCorrStrangeness(Bool_t corrStrangeness)            {fCorrStrangeness = corrStrangeness;}
44   void         SetThreeParticleCorrelation(Bool_t threeParticleCorr) {fThreeParticleCorr = threeParticleCorr;}
45   void         SetRejectCorrupted(Bool_t rejectChunks, Int_t nTPC)   {fRejectChunks = rejectChunks; fNTPC = nTPC;}
46
47     void         SetCentralityMethod(TString centralityMethod)                   {fCentralityMethod = centralityMethod;}
48     
49     
50  private:
51
52   Double_t ReadEventESD         (std::vector<Float_t> &pt,  std::vector<Float_t> &eta,
53                               std::vector<Float_t> &phi,  std::vector<Short_t> &charge,
54                               std::vector<Float_t> &strangnessWeight,
55                               std::vector<Double_t> &nTracksTracklets, const Int_t step);
56   Double_t ReadEventESDRecMcProp(std::vector<Float_t> &pt,  std::vector<Float_t> &eta,
57                               std::vector<Float_t> &phi,  std::vector<Short_t> &charge,
58                               std::vector<Float_t> &strangnessWeight,
59                               std::vector<Double_t> &nTracksTracklets, const Int_t step);
60   Double_t ReadEventESDMC       (std::vector<Float_t> &pt,  std::vector<Float_t> &eta,
61                               std::vector<Float_t> &phi,  std::vector<Short_t> &charge,
62                               std::vector<Float_t> &strangnessWeight,
63                               std::vector<Double_t> &nTracksTracklets, const Int_t step);
64   
65   Double_t ReadEventAOD         (std::vector<Float_t> &pt,  std::vector<Float_t> &eta,
66                               std::vector<Float_t> &phi,  std::vector<Short_t> &charge,
67                               std::vector<Float_t> &strangnessWeight,
68                               std::vector<Double_t> &nTracksTracklets, const Int_t step);
69   Double_t ReadEventAODRecMcProp(std::vector<Float_t> &pt,  std::vector<Float_t> &eta,
70                               std::vector<Float_t> &phi,  std::vector<Short_t> &charge,
71                               std::vector<Float_t> &strangnessWeight,
72                               std::vector<Double_t> &nTracksTracklets, const Int_t step);
73   Double_t ReadEventAODMC       (std::vector<Float_t> &pt,  std::vector<Float_t> &eta,
74                               std::vector<Float_t> &phi,  std::vector<Short_t> &charge,
75                               std::vector<Float_t> &strangnessWeight,
76                               std::vector<Double_t> &nTracksTracklets, const Int_t step);
77   
78   void  Analyse         (const std::vector<Float_t> &pt, 
79                          const std::vector<Float_t> &eta, 
80                          const std::vector<Float_t> &phi, 
81                          const std::vector<Short_t> &charge, 
82                          const std::vector<Float_t> &strangnessWeight,
83                          const Double_t ntacks, const Int_t ntacklets=0,
84                          const Int_t nAll=0, const Int_t step=0);
85   
86   Bool_t                 SelectParticlePlusCharged(const Short_t charge, const Int_t pdg, const Bool_t prim);
87   Bool_t                 SelectParticle(const Short_t charge, const Int_t pdg, const Bool_t prim);
88   Bool_t                 CheckEvent(const Bool_t recVertex);
89   const Double_t*        CreateLogAxis(const Int_t nbins, const Double_t xmin, const Double_t xmax); 
90   Bool_t                 CheckLikeSign(const Short_t chargeEventAxis, const Short_t chargeOthers);
91
92
93   Bool_t       fUseMC;                      // flag for Monte Carlo usages
94   Bool_t       fMcOnly;                     // flag defines, if only MC data is used in analysis or also reconstructed data
95   Double_t     fBSign;                      // magnetic field
96   Bool_t       fAnalysePrimOnly;            // flag for analysis of primaries only (also in reconstructed data)
97   Float_t      fPtMin;                      // set lower limit for pt acceptance for mutliplicity defintion
98   Float_t      fPtMax;                      // set upper limit for pt acceptance for mutliplicity defintion
99   AliESDtrackCuts* fCuts;                   // List of cuts for ESDs
100   Float_t      fTriggerPtCut;               // cut on particle pt used as event axis
101   Float_t      fAssociatePtCut;             // cut on particle pt used for correlations
102   Int_t        fMode;                       // ESD(=0) of AOD(=1) reading 
103   Int_t        fTriggerType;                // sets trigger -> AliVEvent::kMB, AliVEvent::kHighMult
104   Int_t        fFilterBit;                  // Filter bit written in ESD filter, select track type
105   Float_t      fVertexZCut;                 // vertex cut
106   Float_t      fEtaCut;                     // eta acceptance cut
107   Float_t      fEtaCutSeed;                 // eta acceptance cut for seed
108   Int_t        fSelectParticles;            // only in cas of MC: use also neutral particles or not 
109   Int_t        fSelectParticlesAssoc;       // only in cas of MC: use also neutral particles or not 
110   Bool_t       fCheckSDD;                   // check if SDD was in read out partition (needed for LHC11a)
111   Int_t        fSelOption;                  // 0 = use hit in SDD for event selection, 1 = use trigger for event selection
112   Bool_t       fCorrStrangeness;            // for data correction -> Pythia simulations underestimate contamination from strangness
113   Bool_t       fThreeParticleCorr;          // perform three particle correlation
114   Bool_t       fRejectChunks;               // rejection of chunks in which no ITS tracks are reconstructed
115   Int_t        fNTPC;                       // track number limit for rejection decision.
116
117   AliESDEvent *fESDEvent;                   //! esd event
118   AliAODEvent *fAODEvent;                   //! aod event
119   Double_t        fNMcPrimAccept;              // global variable for mc multiplucity
120   Double_t        fNRecAccept;                 // global variable for rec multiplucity
121   Float_t      fNRecAcceptStrangeCorr;                 // global variable for rec multiplucity
122   Double_t        fNMcPrimAcceptTracklet;      // global variable for mc multiplucity
123   Double_t        fNRecAcceptTracklet;         // global variable for rec multiplucity
124   Float_t      fVzEvent;                    // global variable for rec vertex position
125   Double_t     fMeanPtRec;                  // global variable for rec mean pt
126   Double_t     fLeadingPtRec;               // global variable for rec mean pt
127
128   TList      *fHists;                       // output list
129   TH1F       *fStep;                        // how many events have passed which correction step
130   TH1F       *fEventStat;                   // how many events are accepted by trigger, vertex selection, 1 track in acceptance (for real data)
131   TH1F       *fHistPt;                      // Pt spectrum ESD
132   TH1F       *fHistPtMC;                    // Pt spectrum MC
133   TH2F       *fNContrNtracklets;            // control histogram for vertex->nContributers and number of tracklets
134   TH2F       *fNContrNtracks;               // control histogram for vertex->nContributers and number of tracks
135   TH2F       *fCorruptedChunks;             // control histogram: TPC tracks versus ITS-TPC-tracks
136   TH2F       *fCorruptedChunksAfter;        // control histogram: TPC tracks versus ITS-TPC-tracks
137
138   TH2F       *fNmcNch;                      // N mc - N ch rec
139   TProfile   *fPNmcNch;                     // N mc - N ch rec
140   TH2F       *fNmcNchVtx;                   // N mc - N ch rec for events with reconstructed vertex
141   TH2F       *fNmcNchVtxStrangeCorr;        // N mc - N ch rec for events with reconstructed vertex + strangeness correction
142   TProfile   *fPNmcNchVtx;                  // N mc - N ch rec for events with reconstructed vertex
143   TH2F       *fNmcNchTracklet;              // N mc - N ch rec
144   TProfile   *fPNmcNchTracklet;             // N mc - N ch rec
145   TH2F       *fNmcNchVtxTracklet;           // N mc - N ch rec for events with reconstructed vertex
146   TProfile   *fPNmcNchVtxTracklet;          // N mc - N ch rec for events with reconstructed vertex
147   TH2F       *fChargedPi0;                  // charged versus charged+Pi0
148   TH1F       *fVertexCheck;                 // check which fraction of events has vtx_rec but no good vtx_mc
149   TH1F       *fPropagateDca;                // check of AliAODtrack::PropagateToDca
150
151   THnSparse  *fMapSingleTrig[8];            //! multi-dim histo for trigger track properties
152   THnSparse  *fMapPair[8];                  //! multi-dim histo for pair properties
153   THnSparse  *fMapEvent[8];                 //! multi-dim histo for event properties
154   THnSparse  *fMapAll[8];                   //! multi-dim histo for properties of all analysed tracks
155   THnSparse  *fMapThree[8];                 //! multi-dim histo for properties of three particle correlations
156   
157   TH1F       * fVertexZ[8];                 // z of vertex
158   TH1F       * fNcharge[8];                 // pt
159   TH1F       * fPt[8];                      // pt
160   TH1F       * fEta[8];                     // eta
161   TH1F       * fPhi[8];                     // phi
162   TH1F       * fDcaXY[8];                   // dca xy direction
163   TH1F       * fDcaZ[8];                    // dca z direction
164
165   TH1F       * fPtSeed[8];                  // pt of seed (event axis)
166   TH1F       * fEtaSeed[8];                 // eta of seed 
167   TH1F       * fPhiSeed[8];                 // phi of seed
168
169   TH1F       * fPtOthers[8];                // pt of all other particels used in dEtadPhi
170   TH1F       * fEtaOthers[8];               // eta of all other particels used in dEtadPhi
171   TH1F       * fPhiOthers[8];               // phi of all other particels used in dEtadPhi
172   TH2F       * fPtEtaOthers[8];             // pt-eta of all other particels used in dEtadPhi
173
174
175   TH2F       * fPhiEta[8];                  // eta - phi
176   TH2F       * fDPhiDEtaEventAxis[8];       // correlation dEta-dPhi towards event axis
177   TH2F       * fDPhiDEtaEventAxisSeeds[8];  // correlation dEta-dPhi towards event axis of trigger particles
178   TH1F       * fTriggerNch[8];              // number of triggers with accepted-track number
179   TH2F       * fTriggerNchSeeds[8];         // number of triggers with accepted-track number
180   TH1F       * fTriggerTracklet[8];         // number of triggers with accepted-tracklet number
181   TH2F       * fNch07Nch[8];                // nCharged with pT>fTriggerPtCut vs nCharged
182   TProfile   * fPNch07Nch[8];               // nCharged with pT>fTriggerPtCut vs nCharged
183   
184   TH2F       * fNch07Tracklet[8];           // nCharged with pT>fTriggerPtCut vs nTracklet
185   TH2F       * fNchTracklet[8];             // nCharged vs nTracklet
186   TProfile   * fPNch07Tracklet[8];           // nCharged with pT>fTriggerPtCut vs nTracklet
187
188   TH1F       * fDPhiEventAxis[8];           // delta phi of associate tracks to event axis
189   TH2F       * fDPhi1DPhi2[8];              // dPhi1 versus dPhi2: three particle correlation test
190     
191     TString fCentralityMethod;        //centrality pA
192  
193   AliAnalysisTaskMinijet(const AliAnalysisTaskMinijet&); // not implemented
194   AliAnalysisTaskMinijet& operator=(const AliAnalysisTaskMinijet&); // not implemented
195   
196   ClassDef(AliAnalysisTaskMinijet, 2); // mini jet analysis with two particle correlations
197 };
198
199 #endif