]> git.uio.no Git - u/mrichter/AliRoot.git/blob - PWGJE/EMCALJetTasks/UserTasks/AliAnalysisTaskHJetSpectra.h
081d755cfceedb40b1b9d41e451f75664bd88f35
[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   Double_t    GetPtHard();
72   Double_t    GetPythiaPrimaryVertex();
73 //FK//  Double_t    GetPythiaTrials();
74
75   void        GetPerpendicularCone(Double_t vecPhi, Double_t vecTheta, Double_t& conePt);
76
77   // ######### CHECK FUNCTIONS
78   Bool_t      IsTrackInAcceptance(AliVParticle* track); 
79   Bool_t      IsEventInAcceptance(AliVEvent* event); 
80   Bool_t      IsBackgroundJetInAcceptance(AliEmcalJet* jet); 
81   Bool_t      IsSignalJetInAcceptance(AliEmcalJet* jet); 
82   
83
84    Double_t RelativePhi(Double_t mphi,Double_t vphi); 
85    Double_t EstimateBgRhoMedian(); 
86    Double_t EstimateBgCone();  
87    Double_t GetExternalRho(); 
88
89   // ######### STANDARD FUNCTIONS
90   void      Calculate(AliVEvent* event);   
91   void      ExecOnce();                    
92
93   TList*              fOutputList;            //! Output list
94   // ########## USAGE TRIGGERS 
95   Bool_t              fAnalyzePythia;         // trigger if pythia properties should be processed
96   Bool_t              fIsKinematics;          // trigger if data is kinematics only (for naming reasons)
97   Bool_t              fUseDefaultVertexCut;   // trigger if automatic vertex cut from helper class should be done 
98   Bool_t              fUsePileUpCut;          // trigger if pileup cut should be done
99   
100
101   // ########## SOURCE INFORMATION
102   TClonesArray*       fJetArray;              //! object containing the jets   
103   TClonesArray*       fTrackArray;            //! object containing the tracks 
104   TClonesArray*       fBackgroundJetArray;    //! object containing background jets
105   TString*            fJetArrayName;          // name of object containing the jets
106   TString*            fTrackArrayName;        // name of object containing the tracks 
107   TString*            fBackgroundJetArrayName;// name of object containing event wise bckgrds
108   TString             fRhoTaskName;           // name of rho CMS bg task for this analysis
109   // ########## JET/DIJET/RC PROPERTIES
110   Double_t            fRandConeRadius;        // Radius for the random cones
111   Double_t            fRandConeRadiusSquared; // Radius for the random cones squared
112   Double_t            fSignalJetRadius;       // Radius for the signal jets
113   Double_t            fBackgroundJetRadius;   // Radius for the jets to be removed from bg 
114   Double_t            fBackgroundJetPtMin;    // Minimum pt of jets which are ignored during bg calculation
115   // ########## CUTS 
116   Double_t            fSignalJetEtaWindow;    // +- window in eta for signal jets 
117   Double_t            fBackgroundJetEtaWindow;// +- window in eta for background jets 
118   Double_t            fTrackEtaWindow;        // +- window in eta for tracks  
119   Double_t            fMinTrackPt;            // Min track pt to be accepted  
120   Double_t            fMinJetArea;            // Min jet area to be accepted
121   Int_t               fNumberOfCentralityBins;// Number of centrality bins used for histograms
122   TString             fCentralityType;        // Used centrality estimate (V0A, V0C, V0M, ...) 
123
124   // ########## EVENT PROPERTIES
125   Double_t            fCrossSection;          //! value is filled, if pythia header is accessible 
126   Double_t            fTrials;                //! value is filled, if pythia header is accessible 
127
128   // ########## GENERAL ////VARS
129   TRandom3*           fRandom;                //! A random number
130   AliAnalysisUtils*   fHelperClass;           //! Vertex selection helper
131   Bool_t              fInitialized;           //! trigger if tracks/jets are loaded  initiates calling   ExecOnce 
132
133
134   Double_t            fTTlow;  //trigger particles TT bin lower boundary
135   Double_t            fTThigh; //trigger particles TT bin upper boundary
136   Int_t               fTTtype; //trigger particle type 0=single inclusive, 2 = inclusive  
137   Double_t            fDphiCut; //minimal azimuthal angle between trigger and assoc jet 
138   Bool_t              fUseDoubleBinPrecision; //use double bin precision
139
140    TH1I               *fHistEvtSelection;     //!  event statistics
141    TH2F               *fh2Ntriggers;  //! trigger counter
142    THnSparseF         *fHJetSpec;//!  TT associated spectrum of jets
143    THnSparseF         *fHJetSpecSubUeMedian;//! TT associated spectrum of jets, jetPT corredted for UE cell median
144    THnSparseF         *fHJetSpecSubUeCone;//! TT associated spectrum of jets, jetPT corredted for UE perp cone
145    THnSparseF         *fHJetSpecSubUeCMS; //! TT associated spectrum of jets, jetPT corredted for UE CMS
146
147    TH2F    *fhRhoCellMedian; //! X=rho from cell median Y=centrality
148    TH2F    *fhRhoCone; //! X=rho from perp cone, Y=centrality
149    TH2F    *fhRhoCMS;  //! X=rho from CMS, Y=centrality
150    TH2F    *fhRhoCellMedianIncl; //! X=rho from cell median Y=centrality
151    TH2F    *fhRhoConeIncl; //! X=rho from perp cone, Y=centrality
152    TH2F    *fhRhoCMSIncl;  //! X=rho from CMS, Y=centrality
153  
154    TH1F    *fARhoCellMedian;//! jet area times rho from cell median
155    TH1F    *fARhoCone; //! jet area times rho from perp cone
156    TH1F    *fARhoCMS;//! jet area times rho from CMS
157
158    TH2D    *fhDeltaPtMedian; //! delta pT from RndCone using rho from cell median high pT particle in event 
159    TH2D    *fhDeltaPtCone; //! delta pT from RndCone using rho from perp cone high pT particle in event
160    TH2D    *fhDeltaPtCMS; //! delta pT from RndCone using rho CMS high pT particle in event
161    TH2D    *fhDeltaPtMedianIncl; //! delta pT from RndCone using rho from cell median inclusive event
162    TH2D    *fhDeltaPtConeIncl; //! delta pT from RndCone using rho from perp cone inclusive event
163    TH2D    *fhDeltaPtCMSIncl; //! delta pT from RndCone using rho CMS inclusive event
164
165
166    TH2F     *fhJetPhi;   //! jet phi vs jet pT
167    TH2F     *fhTrackPhi; //! track phi vs track pT
168    TH2F     *fhJetEta;   //! jet eta vs jet pT 
169    TH2F     *fhTrackEta; //! track eta vs track pT
170    TH2F     *fhTrackCentVsPt; //!  X=centrality; Y= track pT
171    TH1F     *fhVertexZ;  //! vertexZ inclusive
172    TH1F     *fhVertexZAccept; //! vertexZ accepted after vtx cut
173    TH2F     *fhDphiTriggerJet; //! Delta phi versus jet pT
174    TH1F     *fhDphiTriggerJetAccept; //!Dphi of accepted jets after dphi cut
175
176    TH1F     *fhCentrality;     //! centrality 
177    TH1F     *fhCentralityV0M;  //! centrality V0 multiplicity A+C
178    TH1F     *fhCentralityV0A;  //! centrality from V0A
179    TH1F     *fhCentralityV0C;  //! centrality from V0C
180    TH1F     *fhCentralityZNA;  //! centrality from ZNA
181
182    Int_t    fNofRndTrials;     //! number of random trials for cell area estimate
183    Double_t fJetFreeAreaFrac;  //! minimal fraction of cell area to be accepted to cell median
184    Int_t    fnEta;    //! the number of cells in eta direction
185    Int_t    fnPhi;    //! the number of cell in phi direction 
186    Double_t fEtaSize;  //! size of cell in eta
187    Double_t fPhiSize;  //! size of cell in phi
188    Double_t fCellArea; //! cell area  
189
190    TProfile*     fh1Xsec;   //! pythia cross section and trials
191    TH1F*         fh1Trials; //! trials are added
192    TH1F*         fh1PtHard;  //! Pt har of the event...      
193
194    Int_t  fNofRandomCones; // the number of random cones per event
195
196    //Bool_t fIsMC;   
197
198   AliAnalysisTaskHJetSpectra(const AliAnalysisTaskHJetSpectra&);
199   AliAnalysisTaskHJetSpectra& operator=(const AliAnalysisTaskHJetSpectra&);
200
201   ClassDef(AliAnalysisTaskHJetSpectra, 2); // Charged jet analysis for pA
202
203 };
204 #endif