]> git.uio.no Git - u/mrichter/AliRoot.git/blob - PWGJE/EMCALJetTasks/UserTasks/AliAnalysisTaskHJetSpectra.h
Merge branch 'master' of https://git.cern.ch/reps/AliRoot
[u/mrichter/AliRoot.git] / PWGJE / EMCALJetTasks / UserTasks / AliAnalysisTaskHJetSpectra.h
1 #ifndef ALIANALYSISTASKHJETSPECTRA_H
2 #define ALIANALYSISTASKHJETSPECTRA_H
3
4
5 class TH1I;
6 class TH1F;
7 class TH2F;
8 class TH2D;
9 class TH1D;
10 class THnSparse;
11 class TProfile;
12 class TList;
13 class TClonesArray;
14 class TString;
15 class AliEmcalJet;
16 class AliRhoParameter;
17 class AliVParticle;
18 class AliLog;
19 class AliAnalysisUtils;
20 class TRandom3;
21
22 // ANALYSIS OF HIGH PT HADRON TRIGGER ASSOCIATED SPECTRUM OF RECOIL JETS IN P+PB
23 // Author Filip Krizek   (17.May. 2014)
24
25 class AliAnalysisTaskHJetSpectra : public AliAnalysisTaskSE {
26    public:
27    // ######### CONTRUCTORS/DESTRUCTORS AND STD FUNCTIONS
28    AliAnalysisTaskHJetSpectra();
29    AliAnalysisTaskHJetSpectra(const char *name, const char* trackArrayName, const char* jetArrayName, const char* backgroundJetArrayName);
30    virtual ~AliAnalysisTaskHJetSpectra();
31    virtual void     UserCreateOutputObjects();
32    virtual void     UserExec(Option_t *option);
33    virtual Bool_t   UserNotify();
34    virtual void     Terminate(Option_t *);
35
36   // ######### SETTERS/GETTERS
37   void        SetAnalyzePythia(Bool_t val) {fAnalyzePythia = val;}
38   void        SetUseDefaultVertexCut (Bool_t val) {fUseDefaultVertexCut = val;} 
39   void        SetUsePileUpCut (Bool_t val) {fUsePileUpCut = val;} 
40   void        SetNumberOfCentralityBins(Int_t val) {fNumberOfCentralityBins = val;} 
41   void        SetSignalJetMinArea(Double_t minArea) {fMinJetArea = minArea;}
42   void        SetRandConeRadius(Double_t radius) {fRandConeRadius = radius;}
43   void        SetSignalJetRadius(Double_t radius) {fSignalJetRadius = radius;}
44   void        SetBackgroundJetRadius(Double_t radius) {fBackgroundJetRadius = radius;}
45   void        SetMinPtOfJetsToBeRemovedInBg(Double_t minPt) {fBackgroundJetPtMin = minPt;}
46   void        SetCentralityType(const char* type) {fCentralityType = type;} 
47   void        SetExternalRhoTaskName(const char* name) {fRhoTaskName = name;}
48   void        SetAcceptanceWindows(Double_t trackEta, Double_t signalJetRadius, Double_t bgrdJetRadius){
49                  fTrackEtaWindow = trackEta; 
50                  fSignalJetRadius = signalJetRadius; 
51                  fBackgroundJetRadius = bgrdJetRadius; 
52                  fSignalJetEtaWindow = fTrackEtaWindow-fSignalJetRadius; 
53                  fBackgroundJetEtaWindow = fTrackEtaWindow-fBackgroundJetRadius;} 
54
55   void SetTT(Double_t ttlow, Double_t tthigh){ fTTlow = ttlow; fTThigh = tthigh; }
56   void SetTTType(Int_t tttype){ fTTtype = tttype;} 
57   void SetDphi(Double_t dphi){ fDphiCut = TMath::Pi() - dphi;} 
58   void SetDoubleBinPrecision(Bool_t db){ fUseDoubleBinPrecision = db;} 
59   //void SetMC(Bool_t mc){ fIsMC = mc; };
60   void SetNofRandomCones(Int_t nrc){ fNofRandomCones = nrc;}
61
62  private:
63
64   // ######### MAIN CALCULATION FUNCTIONS
65   void    GetDeltaPt(Double_t rho1, Double_t &dpt1, 
66                      Double_t rho2, Double_t &dpt2, 
67                      Double_t rho3, Double_t &dpt3, Double_t leadingJetExclusionProbability = 0); 
68
69
70   Double_t    GetConePt(Double_t eta, Double_t phi, Double_t radius); 
71 //FK//  Double_t    GetPtHard();
72 //FK//  Double_t    GetPythiaTrials();
73
74   void        GetPerpendicularCone(Double_t vecPhi, Double_t vecTheta, Double_t& conePt);
75
76   // ######### CHECK FUNCTIONS
77   Bool_t      IsTrackInAcceptance(AliVParticle* track); 
78   Bool_t      IsEventInAcceptance(AliVEvent* event); 
79   Bool_t      IsBackgroundJetInAcceptance(AliEmcalJet* jet); 
80   Bool_t      IsSignalJetInAcceptance(AliEmcalJet* jet); 
81   
82
83    Double_t RelativePhi(Double_t mphi,Double_t vphi); 
84    Double_t EstimateBgRhoMedian(); 
85    Double_t EstimateBgCone();  
86    Double_t GetExternalRho(); 
87
88   // ######### STANDARD FUNCTIONS
89   void      Calculate(AliVEvent* event);   
90   void      ExecOnce();                    
91
92   TList*              fOutputList;            //! Output list
93   // ########## USAGE TRIGGERS 
94   Bool_t              fAnalyzePythia;         // trigger if pythia properties should be processed
95   Bool_t              fIsKinematics;          // trigger if data is kinematics only (for naming reasons)
96   Bool_t              fUseDefaultVertexCut;   // trigger if automatic vertex cut from helper class should be done 
97   Bool_t              fUsePileUpCut;          // trigger if pileup cut should be done
98   
99
100   // ########## SOURCE INFORMATION
101   TClonesArray*       fJetArray;              //! object containing the jets   
102   TClonesArray*       fTrackArray;            //! object containing the tracks 
103   TClonesArray*       fBackgroundJetArray;    //! object containing background jets
104   TString*            fJetArrayName;          // name of object containing the jets
105   TString*            fTrackArrayName;        // name of object containing the tracks 
106   TString*            fBackgroundJetArrayName;// name of object containing event wise bckgrds
107   TString             fRhoTaskName;           // name of rho CMS bg task for this analysis
108   // ########## JET/DIJET/RC PROPERTIES
109   Double_t            fRandConeRadius;        // Radius for the random cones
110   Double_t            fRandConeRadiusSquared; // Radius for the random cones squared
111   Double_t            fSignalJetRadius;       // Radius for the signal jets
112   Double_t            fBackgroundJetRadius;   // Radius for the jets to be removed from bg 
113   Double_t            fBackgroundJetPtMin;    // Minimum pt of jets which are ignored during bg calculation
114   // ########## CUTS 
115   Double_t            fSignalJetEtaWindow;    // +- window in eta for signal jets 
116   Double_t            fBackgroundJetEtaWindow;// +- window in eta for background jets 
117   Double_t            fTrackEtaWindow;        // +- window in eta for tracks  
118   Double_t            fMinTrackPt;            // Min track pt to be accepted  
119   Double_t            fMinJetArea;            // Min jet area to be accepted
120   Int_t               fNumberOfCentralityBins;// Number of centrality bins used for histograms
121   TString             fCentralityType;        // Used centrality estimate (V0A, V0C, V0M, ...) 
122
123   // ########## EVENT PROPERTIES
124   Double_t            fCrossSection;          //! value is filled, if pythia header is accessible 
125   Double_t            fTrials;                //! value is filled, if pythia header is accessible 
126
127   // ########## GENERAL ////VARS
128   TRandom3*           fRandom;                //! A random number
129   AliAnalysisUtils*   fHelperClass;           //! Vertex selection helper
130   Bool_t              fInitialized;           //! trigger if tracks/jets are loaded  initiates calling   ExecOnce 
131
132
133   Double_t            fTTlow;  //trigger particles TT bin lower boundary
134   Double_t            fTThigh; //trigger particles TT bin upper boundary
135   Int_t               fTTtype; //trigger particle type 0=single inclusive, 2 = inclusive  
136   Double_t            fDphiCut; //minimal azimuthal angle between trigger and assoc jet 
137   Bool_t              fUseDoubleBinPrecision; //use double bin precision
138
139    TH1I               *fHistEvtSelection;     //!  event statistics
140    TH2F               *fh2Ntriggers;  //! trigger counter
141    THnSparse         *fHJetSpec;//!  TT associated spectrum of jets
142    THnSparse         *fHJetSpecSubUeMedian;//! TT associated spectrum of jets, jetPT corredted for UE cell median
143    THnSparse         *fHJetSpecSubUeCone;//! TT associated spectrum of jets, jetPT corredted for UE perp cone
144    THnSparse         *fHJetSpecSubUeCMS; //! TT associated spectrum of jets, jetPT corredted for UE CMS
145
146    TH2F    *fhRhoCellMedian; //! X=rho from cell median Y=centrality
147    TH2F    *fhRhoCone; //! X=rho from perp cone, Y=centrality
148    TH2F    *fhRhoCMS;  //! X=rho from CMS, Y=centrality
149    TH2F    *fhRhoCellMedianIncl; //! X=rho from cell median Y=centrality
150    TH2F    *fhRhoConeIncl; //! X=rho from perp cone, Y=centrality
151    TH2F    *fhRhoCMSIncl;  //! X=rho from CMS, Y=centrality
152  
153    TH1F    *fARhoCellMedian;//! jet area times rho from cell median
154    TH1F    *fARhoCone; //! jet area times rho from perp cone
155    TH1F    *fARhoCMS;//! jet area times rho from CMS
156
157    TH2D    *fhDeltaPtMedian; //! delta pT from RndCone using rho from cell median high pT particle in event 
158    TH2D    *fhDeltaPtCone; //! delta pT from RndCone using rho from perp cone high pT particle in event
159    TH2D    *fhDeltaPtCMS; //! delta pT from RndCone using rho CMS high pT particle in event
160    TH2D    *fhDeltaPtMedianIncl; //! delta pT from RndCone using rho from cell median inclusive event
161    TH2D    *fhDeltaPtConeIncl; //! delta pT from RndCone using rho from perp cone inclusive event
162    TH2D    *fhDeltaPtCMSIncl; //! delta pT from RndCone using rho CMS inclusive event
163
164
165    TH2F     *fhJetPhi;   //! jet phi vs jet pT
166    TH2F     *fhTrackPhi; //! track phi vs track pT
167    TH2F     *fhJetEta;   //! jet eta vs jet pT 
168    TH2F     *fhTrackEta; //! track eta vs track pT
169    TH2F     *fhTrackCentVsPt; //!  X=centrality; Y= track pT
170    TH1F     *fhVertexZ;  //! vertexZ inclusive
171    TH1F     *fhVertexZAccept; //! vertexZ accepted after vtx cut
172    TH2F     *fhDphiTriggerJet; //! Delta phi versus jet pT
173    TH1F     *fhDphiTriggerJetAccept; //!Dphi of accepted jets after dphi cut
174
175    TH1F     *fhCentrality;     //! centrality 
176    TH1F     *fhCentralityV0M;  //! centrality V0 multiplicity A+C
177    TH1F     *fhCentralityV0A;  //! centrality from V0A
178    TH1F     *fhCentralityV0C;  //! centrality from V0C
179    TH1F     *fhCentralityZNA;  //! centrality from ZNA
180
181    Int_t    fNofRndTrials;     //! number of random trials for cell area estimate
182    Double_t fJetFreeAreaFrac;  //! minimal fraction of cell area to be accepted to cell median
183    Int_t    fnEta;    //! the number of cells in eta direction
184    Int_t    fnPhi;    //! the number of cell in phi direction 
185    Double_t fEtaSize;  //! size of cell in eta
186    Double_t fPhiSize;  //! size of cell in phi
187    Double_t fCellArea; //! cell area  
188
189    TProfile*     fh1Xsec;   //! pythia cross section and trials
190    TH1F*         fh1Trials; //! trials are added
191    TH1F*         fh1PtHard;  //! Pt har of the event...      
192
193    Int_t  fNofRandomCones; // the number of random cones per event
194
195    //Bool_t fIsMC;   
196
197   AliAnalysisTaskHJetSpectra(const AliAnalysisTaskHJetSpectra&);
198   AliAnalysisTaskHJetSpectra& operator=(const AliAnalysisTaskHJetSpectra&);
199
200   ClassDef(AliAnalysisTaskHJetSpectra, 1); // Charged jet analysis for pA
201
202 };
203 #endif