]> git.uio.no Git - u/mrichter/AliRoot.git/blob - PWGJE/EMCALJetTasks/UserTasks/AliAnalysisTaskEmcalJetHadEPpid.h
Merge remote-tracking branch 'origin/master' into TPCdev
[u/mrichter/AliRoot.git] / PWGJE / EMCALJetTasks / UserTasks / AliAnalysisTaskEmcalJetHadEPpid.h
1 #ifndef AliAnalysisTaskEmcalJetHadEPpid_h
2 #define AliAnalysisTaskEmcalJetHadEPpid_h
3
4 // root classes
5 class TClonesArray;
6 class TH1F;
7 class TH2F;
8 class TH3F;
9 class THnSparse;
10 class TList;
11 class TLorentzVector;
12 class TGraph;
13
14 // AliROOT classes
15 class AliEventPoolManager;
16 class AliLocalRhoParameter;
17 // added 12/9
18 class AliEMCALTrack;
19 class AliMagF;
20 class AliESDEvent;
21 class AliAODEvent;
22 class AliEMCALGeometry;
23 class AliEMCALRecoUtils;
24 class AliESDtrack;
25
26 // this whole section of includes added 
27 #include <AliAnalysisTaskEmcalJet.h>
28 #include <AliEmcalJet.h>
29 #include <AliVEvent.h>
30 #include <AliVTrack.h>
31 #include <AliVCluster.h>
32 #include <TClonesArray.h>
33 #include <TMath.h>
34 #include <TRandom3.h>
35 #include <AliLog.h>
36
37 #include "AliAnalysisTaskLocalRho.h"
38 #include "AliLocalRhoParameter.h"
39
40 // PID stuff
41 #include "AliPIDResponse.h"
42
43 #include "AliAnalysisFilter.h"
44
45 class AliAnalysisTaskEmcalJetHadEPpid : public AliAnalysisTaskEmcalJet {
46  public:
47   AliAnalysisTaskEmcalJetHadEPpid();
48   AliAnalysisTaskEmcalJetHadEPpid(const char *name);
49   //virtual ~AliAnalysisTaskEmcalJetHadEPpid() {}
50   virtual ~AliAnalysisTaskEmcalJetHadEPpid();
51
52   virtual void            UserCreateOutputObjects();
53   virtual THnSparse*      NewTHnSparseF(const char* name, UInt_t entries);
54   virtual void            GetDimParams(Int_t iEntry,TString &label, Int_t &nbins, Double_t &xmin, Double_t &xmax);
55   virtual THnSparse*      NewTHnSparseFPID(const char* name, UInt_t entries);
56   virtual void            GetDimParamsPID(Int_t iEntry,TString &label, Int_t &nbins, Double_t &xmin, Double_t &xmax);
57   void                    SetPlotGlobalRho(Bool_t g)            { doPlotGlobalRho = g; } // plot global rho switch
58   void                    SetVariableBinning(Bool_t v)          { doVariableBinning = v; } // do variable binning switch
59   void                    SetdoPID(Bool_t p)                    { doPID = p; }   // do PID switch
60   void                    SetvarbinTHnSparse(Bool_t vb)         { dovarbinTHnSparse = vb; }
61   void                    SetDataType(Bool_t data)              { useAOD = data; }
62
63   // getters
64   TString                 GetLocalRhoName() const               {return fLocalRhoName; }
65
66   // set names of some objects
67   virtual void            SetLocalRhoName(const char *ln)          {fLocalRhoName = ln; }
68   virtual void            SetTracksName(const char *tn)            {fTracksName = tn; }
69   virtual void            SetJetsName(const char *jn)              {fJetsName = jn; }
70
71   // bias and cuts
72   virtual void            SetAreaCut(Double_t a)                { fAreacut    = a; }
73   virtual void            SetTrkBias(Double_t b)                { fTrkBias    = b; }  //require a track with pt > b in jet
74   virtual void            SetClusBias(Double_t b)               { fClusBias   = b; }  //require a cluster with pt > b in jet
75   virtual void            SetTrkEta(Double_t e)                 { fTrkEta   = e; }  //eta range of the associated tracks
76   virtual void            SetJetPtcut(Double_t jpt)             { fJetPtcut = jpt; } // jet pt cut
77  
78   // eta and phi limits of jets
79   virtual void            SetJetEta(Double_t emin, Double_t emax)  { fEtamin = emin; fEtamax = emax; }
80   virtual void            SetJetPhi(Double_t pmin, Double_t pmax)  { fPhimin = pmin; fPhimax = pmax; }
81
82   // event mixing setters
83   virtual void            SetEventMixing(Int_t yesno)              { fDoEventMixing=yesno; }
84   virtual void            SetMixingTracks(Int_t tracks)            { fMixingTracks = tracks; }
85
86 protected:
87   // functions 
88   void                   ExecOnce();
89   Bool_t                 Run();
90   virtual void           Terminate(Option_t *); 
91   virtual Int_t          GetCentBin(Double_t cent) const; // centrality bin of event
92   Float_t                RelativePhi(Double_t mphi,Double_t vphi) const; // relative jet track angle
93   Float_t                RelativeEPJET(Double_t jetAng, Double_t EPAng) const;  // relative jet event plane angle
94   virtual Int_t          GetEtaBin(Double_t eta) const;      // eta bins
95   virtual Int_t          GetpTjetBin(Double_t pt) const;     // jet pt bins
96   virtual Int_t          GetpTtrackBin(Double_t pt) const;   // track pt bins
97   virtual Int_t          GetzVertexBin(Double_t zVtx) const; // zVertex bin
98   void                   SetfHistPIDcounterLabels(TH1* fHistPID) const;  // PID counter
99
100   // parameters of detector to cut on for event
101   Double_t               fPhimin;                  // phi min
102   Double_t               fPhimax;                  // phi max
103   Double_t               fEtamin;                  // eta min
104   Double_t               fEtamax;                  // eta max
105   Double_t               fAreacut;                 // area cut
106   Double_t               fTrkBias;                 // track bias
107   Double_t               fClusBias;                // cluster bias
108   Double_t               fTrkEta;                  // eta min/max of tracks
109   Double_t               fJetPtcut;                // jet pt to cut on for correlations
110
111   // event mixing
112   Int_t                  fDoEventMixing;
113   Int_t                  fMixingTracks;
114
115   // switches for plots
116   Bool_t                 doPlotGlobalRho;
117   Bool_t                 doVariableBinning;
118   Bool_t                 dovarbinTHnSparse;
119  
120   // data type switch
121   Bool_t                 useAOD;
122
123   // switches for PID
124   Bool_t                 doPID;
125
126   // local rho value
127   Double_t               fLocalRhoVal;
128
129   // object names
130   TString                fTracksName;
131   TString                fJetsName;
132
133   // event counter
134   Int_t                  event;
135
136   // boolean functions for PID
137   Bool_t                 isPItpc, isKtpc, isPtpc;
138   Double_t                       nPIDtpc;
139
140   Bool_t                 isPIits, isKits, isPits;
141   Double_t                       nPIDits;  
142
143   Bool_t                 isPItof, isKtof, isPtof;
144   Double_t                       nPIDtof;
145
146   // event pool
147   TObjArray*             CloneAndReduceTrackList(TObjArray* tracks);
148   AliEventPoolManager   *fPoolMgr;  // event pool Manager object
149
150   // PID
151   AliPIDResponse        *fPIDResponse;   // PID response object
152   AliTPCPIDResponse     *fTPCResponse;   // TPC pid response object
153
154  private:
155   // needed for PID
156   AliESDEvent     *fESD;                  //ESD object
157   AliAODEvent     *fAOD;                  //AOD object
158
159   TH2F                  *fHistTPCdEdX;
160   TH2F                  *fHistITSsignal;
161 //  TH2F                    *fHistTOFsignal;
162
163   TH2F                  *fHistRhovsCent; //!
164   TH2F                  *fHistNjetvsCent;//! number of jets versus Centrality
165   TH2F                  *fHistJetPtvsTrackPt[6];//!
166   TH2F                  *fHistRawJetPtvsTrackPt[6];//!
167   TH1F                  *fHistTrackPt[6];//!
168   TH1F                  *fHistEP0[6];//!
169   TH1F                  *fHistEP0A[6];//!
170   TH1F                  *fHistEP0C[6];//!
171   TH2F                  *fHistEPAvsC[6];//!
172   TH2F                  *fHistJetPtvsdEP[6];//!
173   TH2F                  *fHistJetPtvsdEPBias[6];//!
174   TH2F                  *fHistRhovsdEP[6]; //!
175   TH3F                  *fHistJetEtaPhiPt[6];//!
176   TH3F                  *fHistJetEtaPhiPtBias[6];//!
177   TH2F                  *fHistJetPtArea[6];//!
178   TH2F                  *fHistJetPtAreaBias[6];//!
179   TH2F                  *fHistJetPtNcon[6]; //!
180   TH2F                  *fHistJetPtNconBias[6]; //!
181   TH2F                  *fHistJetPtNconCh[6]; //!
182   TH2F                  *fHistJetPtNconBiasCh[6]; //!
183   TH2F                  *fHistJetPtNconEm[6]; //!
184   TH2F                  *fHistJetPtNconBiasEm[6]; //!
185   TH1F                  *fHistJetHaddPhiINcent[6];
186   TH1F                  *fHistJetHaddPhiOUTcent[6];
187   TH1F                  *fHistJetHaddPhiMIDcent[6];
188 // ***********************
189   TH1                   *fHistCentrality;
190   TH1                   *fHistZvtx;
191   TH1                   *fHistMult;
192   TH1                   *fHistJetPhi;
193   TH1                   *fHistTrackPhi;
194   TH1                   *fHistJetHaddPhiIN;
195   TH1                   *fHistJetHaddPhiOUT;
196   TH1                   *fHistJetHaddPhiMID;
197   TH1                   *fHistJetHaddPhiBias;
198   TH1                   *fHistJetHaddPhiINBias;
199   TH1                   *fHistJetHaddPhiOUTBias;
200   TH1                   *fHistJetHaddPhiMIDBias;
201
202   TH1                   *fHistMEdPHI; // phi distrubtion of mixed events
203   TH1                   *fHistTrackPtallcent;
204
205   TH2                   *fHistJetEtaPhi;  
206   TH2                   *fHistTrackEtaPhi[4][7];
207   TH1                   *fHistJetHadbindPhi[9]; 
208   TH1                   *fHistJetHadbindPhiIN[9]; 
209   TH1                   *fHistJetHadbindPhiMID[9]; 
210   TH1                   *fHistJetHadbindPhiOUT[9]; 
211   TH2                   *fHistJetHEtaPhi;
212
213   TH1                   *fHistJetPt[2];
214   TH1                   *fHistJetPtBias[2];
215   TH1                   *fHistJetPtTT[2];
216   TH2                   *fHistAreavsRawPt[2];
217   TH2                   *fHistJetH[2][5][3];
218   TH2                   *fHistJetHBias[2][5][3];
219   TH2                   *fHistJetHTT[2][5][3];
220   TH1F                  *fHistJetHdPHI[11];
221   TH2F                  *fHistJetHdETAdPHI[11];
222   TH2F                  *fHistSEphieta; // single events phi-eta distributions
223   TH2F                  *fHistMEphieta; // mixed events phi-eta distributions
224   TH1F                  *fHistJetHaddPHI;
225
226   // PID status histo's
227   TH1                   *fHistPID;
228
229   // THn Sparse's
230   THnSparse             *fhnPID;          // PID sparse
231   THnSparse             *fhnMixedEvents;  // mixed events matrix
232   THnSparse             *fhnJH;           // jet hadron events matrix
233
234 // ***********************************************************
235    
236   //Declare it private to avoid compilation warning
237   AliAnalysisTaskEmcalJetHadEPpid(const AliAnalysisTaskEmcalJetHadEPpid & g) ; // cpy ctor
238
239   AliAnalysisTaskEmcalJetHadEPpid& operator=(const AliAnalysisTaskEmcalJetHadEPpid&); // not implemented
240   ClassDef(AliAnalysisTaskEmcalJetHadEPpid, 4); // Emcal jet hadron PID - Event plane dependence
241 };
242 #endif