]> git.uio.no Git - u/mrichter/AliRoot.git/blob - PWGJE/EMCALJetTasks/UserTasks/AliAnalysisTaskDijetHadron.h
Add new DijetHadron task from Taiyo
[u/mrichter/AliRoot.git] / PWGJE / EMCALJetTasks / UserTasks / AliAnalysisTaskDijetHadron.h
1 #ifndef ALIANALYSISTASKDIJETHADRON_H
2 #define ALIANALYSISTASKDIJETHADRON_H
3
4 // $Id$
5 #include <vector>
6
7 class TH1;
8 class TH2;
9 class TH3;
10 class TH2F;
11 class TH1F;
12 class TF1;
13 class TH3F;
14 class THnSparse;
15 class TClonesArray;
16 class TObject;
17 class TString;
18 class AliNamedString;
19 class AliAODEvent;
20 class AliESDEvent;
21 class AliMCEvent;
22 class AliRhoParameter;
23 class TRandom3;
24 class AliEmcalJet;
25 class AliVTrack;
26 class AliNamedArrayI;
27 class AliJetContainer;
28 class AliParticleContainer;
29 class AliClusterContainer;
30
31 template<class T> class TParameter;
32
33 #include "AliAnalysisTaskSE.h"
34 #include "AliEmcalJet.h"
35 #include "AliAnalysisTaskEmcalJet.h"
36
37 class AliAnalysisTaskDijetHadron : public AliAnalysisTaskEmcalJet {
38  public:
39
40   AliAnalysisTaskDijetHadron();
41   AliAnalysisTaskDijetHadron(const char *name);
42   virtual ~AliAnalysisTaskDijetHadron() {;}
43
44   void                        UserCreateOutputObjects();
45
46   void                        SetJetMinRC2LJ(Float_t d)                            { fMinRC2LJ                = d          ; }
47   void                        SetRCperEvent(Int_t n)                               { fRCperEvent              = n          ; }
48   void                        SetMCJetPtThreshold(Double_t t)                      { fMCJetPtThreshold        = t          ; }
49   void                        SetConeRadius(Double_t r)                            { fConeRadius              = r          ; }
50   void                        SetConeEtaPhiEMCAL() ;
51   void                        SetConeEtaPhiTPC()   ;
52   void                        SetConeEtaLimits(Float_t min, Float_t max)           { fConeMinEta = min, fConeMaxEta = max  ; }
53   void                        SetConePhiLimits(Float_t min, Float_t max)           { fConeMinPhi = min, fConeMaxPhi = max  ; }
54
55  protected:
56   void                        AllocateHistogramArrays()                                                                     ;
57   void                        ExecOnce()                                                                                    ;
58   Bool_t                      FillHistograms()                                                                              ;
59   void                        GetLeadingJets(Int_t &maxJetIndex, Int_t &max2JetIndex)                                       ;
60   AliEmcalJet*                NextEmbeddedJet(Bool_t reset=kFALSE)                                                          ;
61   void                        DoEmbTrackLoop()                                                                              ;
62   void                        DoEmbClusterLoop()                                                                            ;
63   void                        GetRandomCone(Float_t &pt, Float_t &eta, Float_t &phi, AliParticleContainer* tracks, AliClusterContainer* clusters,
64                                             AliEmcalJet *jet = 0, Bool_t bPartialExclusion = 0) const;
65   Double_t                    GetZ(const Double_t trkPx, const Double_t trkPy, const Double_t trkPz, const Double_t jetPx, const Double_t jetPy, const Double_t jetPz);
66   Double_t                    GetNColl() const;
67
68
69   Double_t                    fMCJetPtThreshold;                               // threshold for MC jets
70   Float_t                     fMinRC2LJ;                                       // Minimum distance random cone to leading jet
71   Int_t                       fRCperEvent;                                     // No. of random cones per event
72   Double_t                    fConeRadius;                                     // Radius of the random cones
73   Float_t                     fConeMinEta;                                     // Minimum eta of the random cones
74   Float_t                     fConeMaxEta;                                     // Maximum eta of the random cones
75   Float_t                     fConeMinPhi;                                     // Minimum phi of the random cones
76   Float_t                     fConeMaxPhi;                                     // Maximum phi of the random cones
77
78   AliJetContainer            *fJetsCont;                                       //!PbPb Jets
79   AliParticleContainer       *fTracksCont;                                     //!PbPb Tracks
80   AliClusterContainer        *fCaloClustersCont;                               //!PbPb Clusters  
81   AliJetContainer            *fMCJetsCont;                                     //!MC jets
82   AliParticleContainer       *fMCTracksCont;                                   //!MC tracks
83   AliClusterContainer        *fMCCaloClustersCont;                             //!MC clusters  
84   AliJetContainer            *fEmbJetsCont;                                    //!EMB jets
85   AliParticleContainer       *fEmbTracksCont;                                  //!EMB tracks
86   AliClusterContainer        *fEmbCaloClustersCont;                            //!EMB clusters  
87   //AliParticleContainer       *fRandTracksCont;                               //!Randomized tracks
88   //AliClusterContainer        *fRandCaloClustersCont;                         //!Randomized clusters
89
90   // Random cones
91   TH2                        *fHistRCPhiEta;                                   //!Phi-Eta distribution of random cones
92   TH1                       **fHistRCPt;                                       //!Random cone pt
93   TH1                       **fHistRCPtExLJ;                                   //!Random cone pt, imposing min distance from leading jet
94   TH1                       **fHistRCPtExPartialLJ;                            //!Random cone pt, imposing min distance from leading jet with 1/ncoll probability
95   //TH1                       **fHistRCPtRand;                                 //!Random cone pt, randomized particles
96   TH2                       **fHistRhoVSRCPt;                                  //!Area(RC) * rho vs. Pt(RC)
97   TH2                       **fHistDeltaPtRCvsEP;                              //!deltaPt = Pt(RC) - A * rho vs. event plane
98   TH1                       **fHistDeltaPtRCExLJ;                              //!deltaPt = Pt(RC) - A * rho, imposing min distance from leading jet
99   TH1                       **fHistDeltaPtRCExPartialLJ;                       //!deltaPt = Pt(RC) - A * rho, imposing min distance from leading jet with 1/ncoll probability
100   //TH1                       **fHistDeltaPtRCRand;                            //!deltaPt = Pt(RC) - A * rho, randomzied particles
101
102   // Jet embedding
103   TH3                       **fHistEmbJetsPtArea;                              //!Pt vs. area of EMB jets
104   TH3                       **fHistEmbJetsCorrPtArea;                          //!Pt-rho*A vs. area of EMB jets
105   TH2                       **fHistEmbPartPtvsJetPt;                           //!MC jet pt total jet pt
106   TH2                       **fHistEmbPartPtvsJetCorrPt;                       //!MC jet pt total jet pt - rho*A
107   TH2                       **fHistJetPtvsJetCorrPt;                           //!Pt vs jet pt - rho*A
108   TH1                       **fHistDistLeadPart2JetAxis;                       //!Distance between leading particle and jet axis
109   TH2                       **fHistEmbBkgArea;                                 //!Pt(embjet) - Pt(embtrack) vs. area of EMB jets
110   TH2                       **fHistRhoVSEmbBkg;                                //!Area(embjet) * rho vs. Pt(embjet) - Pt(embtrack)
111   TH2                       **fHistDeltaPtEmbArea;                             //!deltaPt = Pt(embjet) - Area(embjet) * rho - Pt(embtrack) vs. Area(embjet)
112   TH2                       **fHistDeltaPtEmbvsEP;                             //!deltaPt = Pt(embjet) - Area(embjet) * rho - Pt(embtrack) vs. event plane
113   TH2                        *fHistRCPtExLJVSDPhiLJ;                           //!Random cone pt, imposing min distance from leading jet, vs. deltaPhi leading jet
114   TH2                        *fHistRCPtExPartialLJVSDPhiLJ;                    //!Random cone pt, imposing min distance from leading jet, vs. deltaPhi leading jet with 1/ncoll probability
115   TH2                        *fHistEmbJetsPhiEta;                              //!Phi-Eta distribution of EMB jets
116   TH2                        *fHistLeadPartPhiEta;                             //!Phi-Eta distribution of the leading particle of EMB jets
117
118   //User Task
119   TH1                        *fCent_V0;                                        //!Centrality
120   TH1                        *fVertex_z_cut;                                   //!z_vertex_cut
121   TH1                        *fJetBG_rho;                                      //!rhoValue
122   TH2                        *fJetBG_rho_Cent;                                 //!rho vs. Centrality
123   TH1                        **fTrackPt_PbPb;                                  //!PbPb, trackPt
124   TH1                        **fTrackPhi_PbPb;                                 //!PbPb, trackPhi
125   TH1                        **fTrackEta_PbPb;                                 //!PbPb, trackEta
126   TH2                        **fTrack_Phi_Eta_PbPb;                            //!PbPb, trackPhi vs. trackEta
127   TH1                        **fTrackPt_MC;                                    //!MC, trackPt
128   TH1                        **fTrackPhi_MC;                                   //!MC, trackPhi
129   TH1                        **fTrackEta_MC;                                   //!MC, trackEta
130   TH2                        **fTrack_Phi_Eta_MC;                              //!MC, trackPhi vs. trackEta
131   TH1                        **fTrackPt_EMB;                                   //!EMB, trackPt
132   TH1                        **fTrackPhi_EMB;                                  //!EMB, trackPhi
133   TH1                        **fTrackEta_EMB;                                  //!EMB, trackEta
134   TH2                        **fTrack_Phi_Eta_EMB;                             //!EMB, trackPhi vs. trackEta
135   TH1                        *fJetPt_PbPb[4][3];                               //!PbPb, jetPt
136   TH1                        *fJetPhi_PbPb[4][3];                              //!PbPb, jetPhi
137   TH1                        *fJetEta_PbPb[4][3];                              //!PbPb, jetEta
138   TH2                        *fJet_Phi_Eta_PbPb[4][3];                         //!PbPb, jetPhi vs. jetEta
139   TH1                        *fJetPt_BG_PbPb[4][3];                            //!PbPb, pT - rho * area
140   TH1                        *fJet1Pt_PbPb[4][3][4][4];                        //!PbPb, leadingjetPt
141   TH1                        *fJet2Pt_PbPb[4][3][4][4];                        //!PbPb, subleadingjetPt
142   TH1                        *fJet1Pt_BG_PbPb[4][3][4][4];                     //!PbPb, pT - rho * area, jet1
143   TH1                        *fJet2Pt_BG_PbPb[4][3][4][4];                     //!PbPb, pT - rho * area, jet2
144   TH1                        *fJetDeltaPhi_PbPb[4][3][4][4];                   //!PbPb, jetDeltaPhi
145   TH1                        *fJetDeltaEta_PbPb[4][3][4][4];                   //!PbPb, jetDeltaEta
146   TH1                        *fJetDeltaEP_PbPb[4][3][4][4];                    //!PbPb, jetDeltaEP
147   TH1                        *fJet1SelectPt_BG_PbPb[4][3][4][4];               //!PbPb, selectleadingjetPt
148   TH1                        *fJet2SelectPt_BG_PbPb[4][3][4][4];               //!PbPb, selectsubleadingjetPt
149   TH1                        *fAj_PbPb[4][3][4][4];                            //!PbPb, Aj(energy balance) -> Aj = (jet1-jet2)/(jet1+jet2)
150
151   TH1                        *fJetPt_MC[4][3];                                 //!MC, jetPt
152   TH1                        *fJetPhi_MC[4][3];                                //!MC, jetPhi
153   TH1                        *fJetEta_MC[4][3];                                //!MC, jetEta
154   TH2                        *fJet_Phi_Eta_MC[4][3];                           //!MC, jetPhi vs. jetEta
155   TH1                        *fJet1Pt_MC[4][3][4][4];                          //!MC, leadingjetPt
156   TH1                        *fJet2Pt_MC[4][3][4][4];                          //!MC, subleadingjetPt
157   TH1                        *fJetDeltaPhi_MC[4][3][4][4];                     //!MC, jetDeltaPhi
158   TH1                        *fJetDeltaEta_MC[4][3][4][4];                     //!MC, jetDeltaEta
159   TH1                        *fJetDeltaEP_MC[4][3][4][4];                      //!MC, jetDeltaEP
160   TH1                        *fAj_MC[4][3][4][4];                              //!MC, Aj(energy balance) -> Aj = (jet1-jet2)/(jet1+jet2)
161
162   TH1                        *fJetPt_EMB[4][3];                                //!EMB, jetPt
163   TH1                        *fJetPhi_EMB[4][3];                               //!EMB, jetPhi
164   TH1                        *fJetEta_EMB[4][3];                               //!EMB, jetEta
165   TH2                        *fJet_Phi_Eta_EMB[4][3];                          //!EMB, jetPhi vs. jetEta
166   TH1                        *fJetPt_BG_EMB[4][3];                             //!EMB, pT - rho * area
167   TH1                        *fJetDeltaPt[4][3];                               //!EMB, pT - rho * area - pT(embtrack)
168   TH1                        *fJet1Pt_EMB[4][3][4][4];                         //!EMB, leadingjetPt
169   TH1                        *fJet2Pt_EMB[4][3][4][4];                         //!EMB, subleadingjetPt
170   TH1                        *fJet1Pt_BG_EMB[4][3][4][4];                      //!EMB, pT - rho * area, jet1
171   TH1                        *fJet2Pt_BG_EMB[4][3][4][4];                      //!EMB, pT - rho * area, jet2
172   TH1                        *fJet1DeltaPt[4][3][4][4];                        //!EMB, pT - rho * area - pT(embtrack), jet1
173   TH1                        *fJet2DeltaPt[4][3][4][4];                        //!EMB, pT - rho * area - pT(embtrack), jet2
174   TH1                        *fJetDeltaPhi_EMB[4][3][4][4];                    //!EMB, jetDeltaPhi
175   TH1                        *fJetDeltaEta_EMB[4][3][4][4];                    //!EMB, jetDeltaEta
176   TH1                        *fJetDeltaEP_EMB[4][3][4][4];                     //!EMB, jetDeltaEP
177   TH1                        *fJet1SelectPt_BG_EMB[4][3][4][4];                //!EMB, selectleadingjetPt
178   TH1                        *fJet2SelectPt_BG_EMB[4][3][4][4];                //!EMB, selectsubleadingjetPt
179   TH1                        *fJet1SelectDeltaPt[4][3][4][4];                  //!EMB, selectleadingjetPt
180   TH1                        *fJet2SelectDeltaPt[4][3][4][4];                  //!EMB, selectsubleadingjetPt
181   TH1                        *fAj_EMB[4][3][4][4];                             //!EMB, Aj(energy balance) -> Aj = (jet1-jet2)/(jet1+jet2)
182
183   TH1                        *fHJetDeltaPhi_Aj0_PbPb[4][3][4][4][4];           //!PbPb, HjetDeltaPhi, no Aj cut
184   TH1                        *fHJetDeltaPhi_Aj1_PbPb[4][3][4][4][4];           //!PbPb, HjetDeltaPhi, Aj1(0.0 to 0.2)
185   TH1                        *fHJetDeltaPhi_Aj2_PbPb[4][3][4][4][4];           //!PbPb, HjetDeltaPhi, Aj2(0.2 to 0.4)
186   TH1                        *fHJetDeltaPhi_Aj3_PbPb[4][3][4][4][4];           //!PbPb, HjetDeltaPhi, Aj3(0.4 to 0.6)
187   TH1                        *fHJetDeltaPhi_Aj4_PbPb[4][3][4][4][4];           //!PbPb, HjetDeltaPhi, Aj4(0.6 to 0.8)
188   TH1                        *fHJetPt_Aj0_PbPb[4][3][4][4][4];                 //!PbPb, HjetPt, no Aj cut
189   TH1                        *fHJetPt_Aj1_PbPb[4][3][4][4][4];                 //!PbPb, HjetPt, Aj1
190   TH1                        *fHJetPt_Aj2_PbPb[4][3][4][4][4];                 //!PbPb, HjetPt, Aj2
191   TH1                        *fHJetPt_Aj3_PbPb[4][3][4][4][4];                 //!PbPb, HjetPt, Aj3
192   TH1                        *fHJetPt_Aj4_PbPb[4][3][4][4][4];                 //!PbPb, HjetPt, Aj4
193   TH1                        *fHJetDeltaPhi_Aj0_MC[4][3][4][4][4];             //!MC, HjetDeltaPhi, no Aj cut
194   TH1                        *fHJetDeltaPhi_Aj1_MC[4][3][4][4][4];             //!MC, HjetDeltaPhi, Aj1(0.0 to 0.2)
195   TH1                        *fHJetDeltaPhi_Aj2_MC[4][3][4][4][4];             //!MC, HjetDeltaPhi, Aj2(0.2 to 0.4)
196   TH1                        *fHJetDeltaPhi_Aj3_MC[4][3][4][4][4];             //!MC, HjetDeltaPhi, Aj3(0.4 to 0.6)
197   TH1                        *fHJetDeltaPhi_Aj4_MC[4][3][4][4][4];             //!MC, HjetDeltaPhi, Aj4(0.6 to 0.8)
198   TH1                        *fHJetPt_Aj0_MC[4][3][4][4][4];                   //!MC, HjetPt, no Aj cut
199   TH1                        *fHJetPt_Aj1_MC[4][3][4][4][4];                   //!MC, HjetPt, Aj1
200   TH1                        *fHJetPt_Aj2_MC[4][3][4][4][4];                   //!MC, HjetPt, Aj2
201   TH1                        *fHJetPt_Aj3_MC[4][3][4][4][4];                   //!MC, HjetPt, Aj3
202   TH1                        *fHJetPt_Aj4_MC[4][3][4][4][4];                   //!MC, HjetPt, Aj4
203   TH1                        *fHJetDeltaPhi_Aj0_EMB[4][3][4][4][4];            //!EMB, HjetDeltaPhi, no Aj cut
204   TH1                        *fHJetDeltaPhi_Aj1_EMB[4][3][4][4][4];            //!EMB, HjetDeltaPhi, Aj1(0.0 to 0.2)
205   TH1                        *fHJetDeltaPhi_Aj2_EMB[4][3][4][4][4];            //!EMB, HjetDeltaPhi, Aj2(0.2 to 0.4)
206   TH1                        *fHJetDeltaPhi_Aj3_EMB[4][3][4][4][4];            //!EMB, HjetDeltaPhi, Aj3(0.4 to 0.6)
207   TH1                        *fHJetDeltaPhi_Aj4_EMB[4][3][4][4][4];            //!EMB, HjetDeltaPhi, Aj4(0.6 to 0.8)
208   TH1                        *fHJetPt_Aj0_EMB[4][3][4][4][4];                  //!EMB, HjetPt, no Aj cut
209   TH1                        *fHJetPt_Aj1_EMB[4][3][4][4][4];                  //!EMB, HjetPt, Aj1
210   TH1                        *fHJetPt_Aj2_EMB[4][3][4][4][4];                  //!EMB, HjetPt, Aj2
211   TH1                        *fHJetPt_Aj3_EMB[4][3][4][4][4];                  //!EMB, HjetPt, Aj3
212   TH1                        *fHJetPt_Aj4_EMB[4][3][4][4][4];                  //!EMB, HjetPt, Aj4
213
214   TH1                        *fHJetDeltaPhiasEP_Aj0_PbPb[4][4][4][4][4];       //!PbPb, HjetDeltaPhi, asEP, no Aj cut
215   TH1                        *fHJetDeltaPhiasEP_Aj1_PbPb[4][4][4][4][4];       //!PbPb, HjetDeltaPhi, asEP, Aj1
216   TH1                        *fHJetDeltaPhiasEP_Aj2_PbPb[4][4][4][4][4];       //!PbPb, HjetDeltaPhi, asEP, Aj2
217   TH1                        *fHJetDeltaPhiasEP_Aj3_PbPb[4][4][4][4][4];       //!PbPb, HjetDeltaPhi, asEP, Aj3
218   TH1                        *fHJetDeltaPhiasEP_Aj4_PbPb[4][4][4][4][4];       //!PbPb, HjetDeltaPhi, asEP, Aj4
219   TH1                        *fHJetPtasEP_Aj0_PbPb[4][4][4][4][4];             //!PbPb, HjetPt, asEP, no Aj cut
220   TH1                        *fHJetPtasEP_Aj1_PbPb[4][4][4][4][4];             //!PbPb, HjetPt, asEP, Aj1
221   TH1                        *fHJetPtasEP_Aj2_PbPb[4][4][4][4][4];             //!PbPb, HjetPt, asEP, Aj2
222   TH1                        *fHJetPtasEP_Aj3_PbPb[4][4][4][4][4];             //!PbPb, HjetPt, asEP, Aj3
223   TH1                        *fHJetPtasEP_Aj4_PbPb[4][4][4][4][4];             //!PbPb, HjetPt, asEP, Aj4
224   TH1                        *fHJetDeltaPhiasEP_Aj0_MC[4][4][4][4][4];         //!MC, HjetDeltaPhi, asEP, no Aj cut
225   TH1                        *fHJetDeltaPhiasEP_Aj1_MC[4][4][4][4][4];         //!MC, HjetDeltaPhi, asEP, Aj1
226   TH1                        *fHJetDeltaPhiasEP_Aj2_MC[4][4][4][4][4];         //!MC, HjetDeltaPhi, asEP, Aj2
227   TH1                        *fHJetDeltaPhiasEP_Aj3_MC[4][4][4][4][4];         //!MC, HjetDeltaPhi, asEP, Aj3
228   TH1                        *fHJetDeltaPhiasEP_Aj4_MC[4][4][4][4][4];         //!MC, HjetDeltaPhi, asEP, Aj4
229   TH1                        *fHJetPtasEP_Aj0_MC[4][4][4][4][4];               //!MC, HjetPt, asEP, no Aj cut
230   TH1                        *fHJetPtasEP_Aj1_MC[4][4][4][4][4];               //!MC, HjetPt, asEP, Aj1
231   TH1                        *fHJetPtasEP_Aj2_MC[4][4][4][4][4];               //!MC, HjetPt, asEP, Aj2
232   TH1                        *fHJetPtasEP_Aj3_MC[4][4][4][4][4];               //!MC, HjetPt, asEP, Aj3
233   TH1                        *fHJetPtasEP_Aj4_MC[4][4][4][4][4];               //!MC, HjetPt, asEP, Aj4
234   TH1                        *fHJetDeltaPhiasEP_Aj0_EMB[4][4][4][4][4];        //!EMB, HjetDeltaPhi, asEP, no Aj cut
235   TH1                        *fHJetDeltaPhiasEP_Aj1_EMB[4][4][4][4][4];        //!EMB, HjetDeltaPhi, asEP, Aj1
236   TH1                        *fHJetDeltaPhiasEP_Aj2_EMB[4][4][4][4][4];        //!EMB, HjetDeltaPhi, asEP, Aj2
237   TH1                        *fHJetDeltaPhiasEP_Aj3_EMB[4][4][4][4][4];        //!EMB, HjetDeltaPhi, asEP, Aj3
238   TH1                        *fHJetDeltaPhiasEP_Aj4_EMB[4][4][4][4][4];        //!EMB, HjetDeltaPhi, asEP, Aj4
239   TH1                        *fHJetPtasEP_Aj0_EMB[4][4][4][4][4];              //!EMB, HjetPt, asEP, no Aj cut
240   TH1                        *fHJetPtasEP_Aj1_EMB[4][4][4][4][4];              //!EMB, HjetPt, asEP, Aj1
241   TH1                        *fHJetPtasEP_Aj2_EMB[4][4][4][4][4];              //!EMB, HjetPt, asEP, Aj2
242   TH1                        *fHJetPtasEP_Aj3_EMB[4][4][4][4][4];              //!EMB, HjetPt, asEP, Aj3
243   TH1                        *fHJetPtasEP_Aj4_EMB[4][4][4][4][4];              //!EMB, HjetPt, asEP, Aj4
244
245
246  private:
247   AliVEvent                  *fEvent;
248   Double_t                    fCentrality;                                     //! V0M for current event
249   //AliNamedString             *fPtHardBinName;                                //!Pt hard bin param
250   //Int_t                       fPtHardBin;                                    //!        
251   //TH1F                        *fhPtHardBins;                                 //!
252
253   AliAnalysisTaskDijetHadron(const AliAnalysisTaskDijetHadron&);                     // not implemented
254   AliAnalysisTaskDijetHadron &operator=(const AliAnalysisTaskDijetHadron&);          // not implemented
255
256   ClassDef(AliAnalysisTaskDijetHadron, 5)                                         // Jet-Hadron analysis task
257 };
258 #endif