1 #ifndef ALIANALYSISTASKHJETSPECTRA_H
2 #define ALIANALYSISTASKHJETSPECTRA_H
16 class AliRhoParameter;
19 class AliAnalysisUtils;
22 // ANALYSIS OF HIGH PT HADRON TRIGGER ASSOCIATED SPECTRUM OF RECOIL JETS IN P+PB
23 // Author Filip Krizek (17.May. 2014)
25 class AliAnalysisTaskHJetSpectra : public AliAnalysisTaskSE {
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 *);
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;}
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;}
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);
70 Double_t GetConePt(Double_t eta, Double_t phi, Double_t radius);
72 Double_t GetPythiaPrimaryVertex();
73 //FK// Double_t GetPythiaTrials();
75 void GetPerpendicularCone(Double_t vecPhi, Double_t vecTheta, Double_t& conePt);
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);
84 Double_t RelativePhi(Double_t mphi,Double_t vphi);
85 Double_t EstimateBgRhoMedian();
86 Double_t EstimateBgCone();
87 Double_t GetExternalRho();
89 // ######### STANDARD FUNCTIONS
90 void Calculate(AliVEvent* event);
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
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
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, ...)
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
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
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
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
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
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
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
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
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
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
190 TProfile* fh1Xsec; //! pythia cross section and trials
191 TH1F* fh1Trials; //! trials are added
192 TH1F* fh1PtHard; //! Pt har of the event...
194 Int_t fNofRandomCones; // the number of random cones per event
198 AliAnalysisTaskHJetSpectra(const AliAnalysisTaskHJetSpectra&);
199 AliAnalysisTaskHJetSpectra& operator=(const AliAnalysisTaskHJetSpectra&);
201 ClassDef(AliAnalysisTaskHJetSpectra, 2); // Charged jet analysis for pA