1 #ifndef ALIANALYSISTASKJETCOREPP_H
2 #define ALIANALYSISTASKJETCOREPP_H
4 /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
5 * See cxx source for full Copyright notice */
7 // **************************************
8 // This task performs hadron-trigger recoil jet correlations
9 // Output pT spectrum of jet given trigger pT
10 // Author: filip krizek 16th March 2013
11 // *******************************************
26 class AliAODExtension;
28 class AliGenPythiaEventHeader;
30 #include "AliAnalysisTaskSE.h"
31 #include "AliVEvent.h"
33 class AliAnalysisTaskJetCorePP : public AliAnalysisTaskSE {
35 AliAnalysisTaskJetCorePP();
36 AliAnalysisTaskJetCorePP(const char *name);
37 AliAnalysisTaskJetCorePP(const AliAnalysisTaskJetCorePP& a);
38 AliAnalysisTaskJetCorePP& operator=(const AliAnalysisTaskJetCorePP& a); // not implemented
39 virtual ~AliAnalysisTaskJetCorePP();
40 virtual void LocalInit() {Init();}
42 virtual void UserCreateOutputObjects();
43 virtual void UserExec(Option_t *option);
44 virtual void Terminate(const Option_t*);
45 virtual Bool_t Notify();
47 virtual void SetBranchName(const TString &name){ fJetBranchName = name; }
48 virtual void SetBranchNameChargMC(const TString &name){ fJetBranchNameChargMC = name; }
49 virtual void SetBranchNameFullMC(const TString &name){ fJetBranchNameFullMC = name; }
50 virtual void SetBranchNameBg(const TString &name){ fJetBranchNameBg = name; }
51 virtual void SetBranchNameBgChargMC(const TString &name){ fJetBranchNameBgChargMC = name; }
52 virtual void SetNonStdFile(char* c){fNonStdFile = c;}
53 virtual void SetSystem(Int_t sys) { fSystem = sys; }
54 virtual void SetJetR(Float_t jR) { fJetParamR = jR; }
55 virtual void SetBgJetR(Float_t bgjR) { fBgJetParamR = bgjR; }
56 virtual void SetBgMaxJetPt(Float_t mpt){ fBgMaxJetPt = mpt;}
57 virtual void SetBgConeR(Float_t cr){ fBgConeR = cr; }
58 virtual void SetOfflineTrgMask(AliVEvent::EOfflineTriggerTypes mask) { fOfflineTrgMask = mask; }
59 virtual void SetMinContribVtx(Int_t n) { fMinContribVtx = n; }
60 virtual void SetVtxZMin(Float_t z) { fVtxZMin = z; }
61 virtual void SetVtxZMax(Float_t z) { fVtxZMax = z; }
62 virtual void SetFilterMask(UInt_t i){fFilterMask = i;}
63 virtual void SetCentMin(Float_t cent) { fCentMin = cent; }
64 virtual void SetCentMax(Float_t cent) { fCentMax = cent; }
65 virtual void SetJetEtaMin(Float_t eta) { fJetEtaMin = eta; }
66 virtual void SetJetEtaMax(Float_t eta) { fJetEtaMax = eta; }
67 virtual void SetTriggerEtaCut(Float_t eta) { fTriggerEtaCut = eta; }
68 virtual void SetTrackEtaCut(Float_t eta) { fTrackEtaCut = eta; }
69 virtual void SetTrackLowPtCut(Float_t pt) { fTrackLowPtCut=pt; }
70 virtual void SetTriggerType(Int_t tt){ fHardest=tt;}
71 virtual void SetEventNumberRangeLow(Int_t rl){ fEventNumberRangeLow=rl;}
72 virtual void SetEventNumberRangeHigh(Int_t rh){ fEventNumberRangeHigh=rh;}
73 virtual void SetTriggerPtRangeLow(Float_t tl){ fTriggerPtRangeLow=tl;}
74 virtual void SetTriggerPtRangeHigh(Float_t th){ fTriggerPtRangeHigh=th;}
75 virtual void SetFillResponseMatrix(Bool_t brm){ fFillRespMx = brm;}
77 Double_t RelativePhi(Double_t angle1, Double_t angle2);
80 //private member functions
81 Int_t GetListOfTracks(TList *list); //returns index of trig and track list
83 Bool_t SelectMCGenTracks(AliVParticle *trk, TList *trkList, Double_t &ptLeading, Int_t &index, Int_t counter);
84 void FillEffHistos(TList *recList, TList *genList);
86 void EstimateBgRhoMedian(TList *listJet, TList* listPart, Double_t &rhoMedian);//median method to estimate bg
87 void EstimateBgCone(TList *listJet, TList* listPart, Double_t &rhoPerpCone);//perp cone method to estimate bg
88 void ReadTClonesArray(TString bname, TList *list); //init jets lists
89 //private member objects
90 AliESDEvent *fESD; //! ESD object
91 AliAODEvent *fAODIn; //! AOD event for AOD input tracks
92 AliAODEvent *fAODOut; //! AOD event
93 AliAODExtension *fAODExtension; //! where we take the jets from can be input or output AOD
96 TString fJetBranchName; // name of jet branch
97 TString fJetBranchNameChargMC; // name of jet branch
98 TString fJetBranchNameFullMC; // name of jet branch
99 TString fJetBranchNameBg; // name of bg (kt) jet branch
100 TString fJetBranchNameBgChargMC; // name of bg (kT) jet branch
101 TList *fListJets; //! jet list reconstructed level
102 TList *fListJetsGen; //! jet list generator level
103 TList *fListJetsGenFull; //! jet list generator level full jets
104 TList *fListJetsBg; //! jet list reconstructed level to be removed from bg
105 TList *fListJetsBgGen; //! jet list generator level to be removed from bg
108 TString fNonStdFile; // name of delta aod file to catch the extension
111 Int_t fSystem; // collision system pp=0, pPb=1
112 Float_t fJetParamR; // jet cone resolution (radius) R
113 Float_t fBgJetParamR; // jet cone resolution (radius) R of jet to be removed from bg
114 Float_t fBgMaxJetPt; // max pt of jets accepted in bg
115 Float_t fBgConeR; //perp cone R used to assess bg
116 AliVEvent::EOfflineTriggerTypes fOfflineTrgMask; // mask of offline trigs
117 Int_t fMinContribVtx; // min numb of trk contrib for prim vertex
118 Float_t fVtxZMin; // lower bound on vertex z
119 Float_t fVtxZMax; // upper bound on vertex z
120 UInt_t fFilterMask; // filter bit for slected tracks
121 Float_t fCentMin; // lower bound on centrality
122 Float_t fCentMax; // upper bound on centrality
123 Float_t fJetEtaMin; // lower bound on eta for found jets
124 Float_t fJetEtaMax; // upper bound on eta for found jets
125 Float_t fTriggerEtaCut; // lower bound on eta for trigger track
126 Float_t fTrackEtaCut; // upper bound on eta for trigger track
127 Float_t fTrackLowPtCut; // upper bound on eta for trigger track
130 TList *fOutputList; //! output data container
131 TH1I *fHistEvtSelection; //! event selection statistic
132 TH2F *fh2Ntriggers; //trigger pT versus centrality
133 THnSparse *fHJetSpec; //Recoil jet spectrum
134 THnSparse *fHJetSpecSubUeMedian; //Recoil jet spectrum, jet pT corrected by kT median
135 THnSparse *fHJetSpecSubUeCone; //Recoil jet spectrum, jet pT corrected by perp cone rho
138 THnSparse *fHJetUeMedian; //UE background from kT median
139 THnSparse *fHJetUeCone; //UE background from perp cone
140 THnSparse *fHRhoUeMedianVsCone; //EBE UE from perp cone
141 //THnSparse *fHJetDensity; //density of jet with A>0.07 //fk
142 //THnSparse *fHJetDensityA4; //density of jets with A>0.4 //fk
143 TH2D *fhJetPhi; //Azimuthal distribution of jets
144 TH2D *fhTriggerPhi; //Azimuthal distribution of trigger hadron
145 TH2D *fhJetEta; //Pseudorapidity distribution of jets
146 TH2D *fhTriggerEta; //Pseudorapidity distribution of trigger hadron
147 TH1D *fhVertexZ; //z vertex distribution
148 TH1D *fhVertexZAccept; //z vertex distribution after cut
149 TH1D *fhContribVtx; //contributors to vertex
150 TH1D *fhContribVtxAccept; //contributors to vertex after cut
151 TH1D *fhDphiTriggerJet; //Deltaphi between trigger and jet
152 TH1D *fhDphiTriggerJetAccept; //Deltaphi between trigger and jet after cut
153 TH1D *fhCentrality; //Deltaphi between trigger and jet
154 TH1D *fhCentralityAccept; //Deltaphi between trigger and jet after cut
156 //THnSparse *fHJetPtRaw; //bg unsubtr. vs bg subtr. pT spectrum of jets vs jet area
157 //THnSparse *fHLeadingJetPtRaw; //bg unsubtr. vs bg. subtr. leading jet pT vs area
158 //THnSparse *fHDphiVsJetPtAll; //Dphitrigger-jet versus jet pt for all jets given pTtrigg
161 TH2D *fhJetPtGenVsJetPtRec; //jet respose matrix
162 TH2D *fhJetPtGenVsJetPtRecSubUeMedian; //jet respose matrix both pT with subtracted kT median bg
163 TH2D *fhJetPtGenVsJetPtRecSubUeCone; //jet respose matrix both pT with subtracted weighted kT median bg
164 TH1D *fhJetPtGen; //generated pT spectrum of jets
165 TH1D *fhJetPtSubUeMedianGen; //generated pT spectrum of jets with subtracted kT median
166 TH1D *fhJetPtSubUeConeGen; //generated pT spectrum of jets with perp cone
167 TH2D *fhJetPtGenChargVsJetPtGenFull; //generated pT spectrum of full jets
168 TH1D *fhJetPtGenFull; // generated pT spectrum of full jets
169 TH2F *fh2NtriggersGen; //trigger pT versus centrality in generator level
170 THnSparse *fHJetSpecGen; //Recoil jet spectrum at generator level
171 THnSparse *fHJetSpecSubUeMedianGen; //Recoil jet spectrum at gen level, jet pT corrected by kT median
172 THnSparse *fHJetSpecSubUeConeGen; //Recoil jet spectrum at gen level, jet pT corrected with rho from cone
173 THnSparse *fHJetUeMedianGen; //UE background from kT median
174 THnSparse *fHJetUeConeGen; //UE background from Perp Cone
175 TH2D *fhPtTrkTruePrimRec; // pt spectrum of true reconstructed primary tracks
176 TH2D *fhPtTrkTruePrimGen; // pt spectrum of true generated primary track
177 TH2D *fhPtTrkSecOrFakeRec; // pt spectrum of reconstructed fake or secondary tracks
178 THnSparse *fHRhoUeMedianVsConeGen; //EBE UE from Median vs Perp Cone generator level
180 Bool_t fIsChargedMC; //flag analysis on MC data with true and on the real data false
181 Bool_t fIsFullMC; //flag analysis on MC data with true and on the real data false
182 TArrayI faGenIndex; // labels of particles on MC generator level
183 TArrayI faRecIndex; // labels of particles on reconstructed track level
184 const Double_t fkAcceptance; //eta times phi Alice coverage
185 const Double_t fkDeltaPhiCut; //Delta phi cut on trigger-jet distance in azimuth
187 TProfile* fh1Xsec; //! pythia cross section and trials
188 TH1F* fh1Trials; //! trials are added
189 TH1F* fh1AvgTrials; //! trials are added
190 TH1F* fh1PtHard; //! Pt har of the event...
191 TH1F* fh1PtHardNoW; //! Pt har of the event without weigt
192 TH1F* fh1PtHardTrials; //! Number of trials
193 Float_t fAvgTrials; // Average number of trials
196 Int_t fHardest; // trigger type 0=single incl, 1=LP
197 Int_t fEventNumberRangeLow; // lower range of selected event numbers
198 Int_t fEventNumberRangeHigh; // high range of selected event numbers
199 Float_t fTriggerPtRangeLow; // lower range of selected trigger pt
200 Float_t fTriggerPtRangeHigh; // upper range of selected trigger pt
202 Bool_t fFillRespMx; //fill response matrix files
205 TRandom3* fRandom; // TRandom3
206 const Int_t fnTrials; //number of random trials to measure cell area
207 const Int_t fnPhi; //number of cells in phi
208 const Int_t fnEta; //number of cells in eta
209 const Double_t fEtaSize; //cell size in eta
210 const Double_t fPhiSize; //cell size in phi
211 const Double_t fCellArea; //cell area
212 Double_t fSafetyMargin; //enlarge a bit the jet size to avoid contamination of UE
214 ClassDef(AliAnalysisTaskJetCorePP, 9); //has to end with number larger than 0