]> git.uio.no Git - u/mrichter/AliRoot.git/blob - PWGJE/AliAnalysisTaskJetCorePP.h
Add AD0 (AD) in the shuttle interface class
[u/mrichter/AliRoot.git] / PWGJE / AliAnalysisTaskJetCorePP.h
1 #ifndef ALIANALYSISTASKJETCOREPP_H
2 #define ALIANALYSISTASKJETCOREPP_H
3
4 /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
5  * See cxx source for full Copyright notice                               */
6
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 // *******************************************
12
13 class TH1F;
14 class TH1D;
15 class TH1I;
16 class TH2F;
17 class TH3F;
18 class TList;
19 class TClonesArray;
20 class THnSparse;
21 class TRandom3;
22 class TArrayI; 
23 class TProfile;
24 class TFile;
25 class TKey;
26 class AliESDEvent;
27 class AliAODExtension;
28 class AliAODEvent;
29 class AliGenPythiaEventHeader;
30 class AliMCEvent;    //FK//
31 class AliMCEventHandler; //FK//
32 class AliGenEventHeader; //FK//
33
34 #include "AliAnalysisTaskSE.h"
35 #include "AliVEvent.h"
36
37 class AliAnalysisTaskJetCorePP : public AliAnalysisTaskSE {
38 public:
39    AliAnalysisTaskJetCorePP();
40    AliAnalysisTaskJetCorePP(const char *name);
41    AliAnalysisTaskJetCorePP(const AliAnalysisTaskJetCorePP& a); 
42    AliAnalysisTaskJetCorePP& operator=(const AliAnalysisTaskJetCorePP& a); // not implemented
43    virtual ~AliAnalysisTaskJetCorePP();
44    virtual void  LocalInit() {Init();}
45    virtual void  Init();
46    virtual void  UserCreateOutputObjects();
47    virtual void  UserExec(Option_t *option);
48    virtual void  Terminate(const Option_t*);
49    virtual Bool_t Notify();
50  
51    virtual void  SetBranchName(const TString &name){ fJetBranchName = name; } 
52    virtual void  SetBranchNameChargMC(const TString &name){ fJetBranchNameChargMC = name; } 
53    virtual void  SetBranchNameKine(const TString &name){ fJetBranchNameKine = name; } 
54    virtual void  SetBranchNameFullMC(const TString &name){ fJetBranchNameFullMC = name; } 
55    virtual void  SetBranchNameBg(const TString &name){ fJetBranchNameBg = name; } 
56    virtual void  SetBranchNameBgChargMC(const TString &name){ fJetBranchNameBgChargMC = name; } 
57    virtual void  SetBranchNameBgKine(const TString &name){ fJetBranchNameBgKine = name; } 
58    virtual void  SetNonStdFile(char* c){fNonStdFile = c;} 
59    virtual void  SetSystem(Int_t sys) { fSystem = sys; } 
60    virtual void  SetJetR(Float_t jR) { fJetParamR = jR; }
61    virtual void  SetBgJetR(Float_t bgjR) { fBgJetParamR = bgjR; }
62    virtual void  SetBgMaxJetPt(Float_t mpt){ fBgMaxJetPt = mpt;}
63    virtual void  SetRndTrials(Int_t nt){ fnTrials = nt;}
64    virtual void  SetFreeAreaFrac(Float_t frac){ fJetFreeAreaFrac = frac;}
65    virtual void  SetBgConeR(Float_t cr){ fBgConeR = cr; } 
66    virtual void  SetOfflineTrgMask(AliVEvent::EOfflineTriggerTypes mask) { fOfflineTrgMask = mask; } 
67    virtual void  SetMinContribVtx(Int_t n) { fMinContribVtx = n; } 
68    virtual void  SetVtxZMin(Float_t z) { fVtxZMin = z; }
69    virtual void  SetVtxZMax(Float_t z) { fVtxZMax = z; } 
70    virtual void  SetFilterMask(UInt_t i){fFilterMask = i;} 
71    virtual void  SetCentMin(Float_t cent) { fCentMin = cent; }
72    virtual void  SetCentMax(Float_t cent) { fCentMax = cent; } 
73    virtual void  SetJetEtaMin(Float_t eta) { fJetEtaMin = eta; }
74    virtual void  SetJetEtaMax(Float_t eta) { fJetEtaMax = eta; } 
75    virtual void  SetTriggerEtaCut(Float_t eta) { fTriggerEtaCut = eta; }
76    virtual void  SetTrackEtaCut(Float_t eta) { fTrackEtaCut = eta; }
77    virtual void  SetTrackLowPtCut(Float_t pt) { fTrackLowPtCut=pt; } 
78    virtual void  SetTriggerType(Int_t tt){ fHardest=tt;}
79    virtual void  SetEventNumberRangeLow(Int_t rl){ fEventNumberRangeLow=rl;}
80    virtual void  SetEventNumberRangeHigh(Int_t rh){ fEventNumberRangeHigh=rh;}  
81    virtual void  SetTriggerPtRangeLow(Float_t tl){ fTriggerPtRangeLow=tl;}   
82    virtual void  SetTriggerPtRangeHigh(Float_t th){ fTriggerPtRangeHigh=th;}  
83    virtual void  SetFillResponseMatrix(Bool_t brm){ fFillRespMx = brm;}
84    virtual void  SetBinning(Bool_t bbb) { fDoubleBinning = bbb; } 
85    virtual void  SetUseExchangeContainerInput(Bool_t b){ fUseExchContainer = b;} 
86
87    Double_t RelativePhi(Double_t angle1, Double_t angle2); 
88
89 private:
90    //private member functions
91    Int_t   GetListOfTracks(TList *list); //returns index of trig and track list
92
93    Bool_t SelectMCGenTracks(AliVParticle *trk, TList *trkList, Double_t &ptLeading, Int_t &index, Int_t counter);
94    void FillEffHistos(TList *recList, TList *genList);
95    
96    void EstimateBgRhoMedian(TList *listJet, TList* listPart, Double_t &rhoMedian, Int_t mode);//median method to estimate bg
97    void EstimateBgCone(TList *listJet, TList* listPart, Double_t &rhoPerpCone);//perp cone method to estimate bg
98    void ReadTClonesArray(TString bname, TList *list); //init jets lists
99    //private member objects
100    AliESDEvent *fESD;    //! ESD object
101    AliAODEvent *fAODIn;  //! AOD event for AOD input tracks
102    AliAODEvent *fAODOut; //! AOD event 
103    AliAODExtension  *fAODExtension; //! where we take the jets from can be input or output AOD
104    AliMCEvent           *fMcEvent;    //! MC event                       
105    AliInputEventHandler *fMcHandler;  //! MCEventHandler                 
106
107
108    // jets to compare
109    TString fJetBranchName; //  name of jet branch 
110    TString fJetBranchNameChargMC;   //  name of jet branch output AOD
111    TString fJetBranchNameKine; //  name of jet branch kine
112    TString fJetBranchNameFullMC; //  name of jet branch 
113    TString fJetBranchNameBg; //  name of bg (kt) jet branch 
114    TString fJetBranchNameBgChargMC; //  name of bg (kT) jet branch 
115    TString fJetBranchNameBgKine; //  name of bg (kT) jet branch 
116    TList  *fListJets;      //! jet list reconstructed level
117    TList  *fListJetsGen;   //! jet list generator level 
118    TList  *fListJetsGenFull; //! jet list generator level full jets 
119    TList  *fListJetsBg;      //! jet list reconstructed level to be removed from bg
120    TList  *fListJetsBgGen;   //! jet list generator level to be removed from bg  
121
122
123    TString fNonStdFile;    // name of delta aod file to catch the extension
124
125    // event selection
126    Int_t   fSystem;        // collision system  pp=0, pPb=1  
127    Float_t fJetParamR;     // jet cone resolution (radius) R 
128    Float_t fBgJetParamR;   // jet cone resolution (radius) R of jet to be removed from bg
129    Float_t fBgMaxJetPt;    // max pt of jets accepted in bg 
130    Float_t fBgConeR;       //perp cone R used to assess bg
131    AliVEvent::EOfflineTriggerTypes fOfflineTrgMask; // mask of offline trigs 
132    Int_t   fMinContribVtx; // min numb of trk contrib for prim vertex 
133    Float_t fVtxZMin;       // lower bound on vertex z 
134    Float_t fVtxZMax;       // upper bound on vertex z 
135    UInt_t  fFilterMask;    // filter bit for slected tracks  
136    Float_t fCentMin;       // lower bound on centrality 
137    Float_t fCentMax;       // upper bound on centrality 
138    Float_t fJetEtaMin;     // lower bound on eta for found jets 
139    Float_t fJetEtaMax;     // upper bound on eta for found jets 
140    Float_t fTriggerEtaCut; // lower bound on eta for trigger track
141    Float_t fTrackEtaCut;   // upper bound on eta for trigger track 
142    Float_t fTrackLowPtCut; // upper bound on eta for trigger track
143    Bool_t  fUseExchContainer; //use exhange container
144    
145    TList *fOutputList;          //! output data container 
146    TH1I  *fHistEvtSelection;    //! event selection statistic 
147    TH2F      *fh2Ntriggers;     //trigger pT versus centrality 
148    THnSparse *fHJetSpec;      //Recoil jet spectrum  
149    THnSparse *fHJetSpecSubUeMedian; //Recoil jet spectrum, jet pT corrected by kT median  
150    THnSparse *fHJetSpecSubUeCone;  //Recoil jet spectrum, jet pT corrected by perp cone rho 
151    
152    THnSparse *fHJetPhiCorr; // Dphi distribution jet-triger
153    THnSparse *fHJetPhiCorrSubUeMedian; // Dphi distribution jet-triger
154    THnSparse *fHJetPhiCorrSubUeCone; // Dphi distribution jet-triger
155
156    //Diagnostics
157    THnSparse *fHJetUeMedian;   //UE background from kT median
158    THnSparse *fHJetUeCone;      //UE background from perp cone 
159    THnSparse *fHRhoUeMedianVsCone;    //EBE UE from perp cone
160    //THnSparse *fHJetDensity;       //density of jet with A>0.07  //fk
161    //THnSparse *fHJetDensityA4;     //density of jets with A>0.4 //fk
162    TH2D *fhJetPhi;     //Azimuthal distribution of jets
163    TH2D *fhTriggerPhi; //Azimuthal distribution of trigger hadron
164    TH2D *fhJetEta;     //Pseudorapidity distribution of jets
165    TH2D *fhTriggerEta; //Pseudorapidity distribution of trigger hadron
166    TH1D *fhVertexZ;    //z vertex distribution 
167    TH1D *fhVertexZAccept;    //z vertex distribution after cut
168    TH1D *fhContribVtx;    //contributors to vertex 
169    TH1D *fhContribVtxAccept;    //contributors to vertex after cut
170    TH1D *fhDphiTriggerJet;  //Deltaphi between trigger and jet 
171    TH1D *fhDphiTriggerJetAccept;  //Deltaphi between trigger and jet after cut
172    TH1D *fhCentrality;  //Deltaphi between trigger and jet 
173    TH1D *fhCentralityAccept;  //Deltaphi between trigger and jet after cut
174    TH1D *fhNofMultipleTriggers; // The number of additional triggers in events with at least one trigger 
175    TH1D *fhNofMultipleTriggersCone; // The number of additional triggers in events with at least one trigger 
176    TH1D *fhNofMultipleTriggersConeLow; // The number of additional triggers in events with at least one trigger 
177    TH1D *fhNofMultipleTriggersConeHigh; // The number of additional triggers in events with at least one trigger 
178    TH1D *fhDeltaRMultTriggersLow; // Angular distributions between trigger and assoc
179    TH1D *fhDeltaRMultTriggersHigh; // Angular distributions between trigger and assoc
180    TH1D *fhDeltaPhiMultTriggersLow; // Delta phi between trigger and assoc single incl trigger
181    TH1D *fhDeltaPhiMultTriggersHigh; // Delta phi between trigger and assoc single incl triger
182
183    TH1D *fhDeltaPhiMultTriggersInclLow; // Delta phi between trigger and assoc  incl trigg
184    TH1D *fhDeltaPhiMultTriggersInclHigh; // Delta phi between trigger and assoc incl trigg
185    TH1D *fhInclTrigCounter; // count the total number of inclusive triggers
186
187    //THnSparse *fHJetPtRaw;      //bg unsubtr. vs bg subtr. pT spectrum of jets vs jet area
188    //THnSparse *fHLeadingJetPtRaw; //bg unsubtr. vs bg. subtr. leading jet pT vs area 
189    //THnSparse *fHDphiVsJetPtAll;   //Dphitrigger-jet  versus jet pt for all jets given pTtrigg  
190
191    //MC generator level
192    TH2D      *fhJetPtGenVsJetPtRec; //jet respose matrix  
193    TH2D      *fhJetPtGenVsJetPtRecSubUeMedian; //jet respose matrix both pT with subtracted kT median bg 
194    TH2D      *fhJetPtGenVsJetPtRecSubUeCone; //jet respose matrix both pT with subtracted weighted kT median bg 
195    TH1D      *fhJetPtGen;           //generated pT spectrum of jets  
196    TH1D      *fhJetPtSubUeMedianGen; //generated pT spectrum of jets with subtracted kT median  
197    TH1D      *fhJetPtSubUeConeGen;    //generated pT spectrum of jets with perp cone
198    TH2D      *fhJetPtResolutionVsPtGen; // pTjet,rec-pTjet,gen/ pTjet,gen  versus pT jet,gen
199    TH2D      *fhJetPtResolutionVsPtConeGen;//pTjet,rec-pTjet,gen/ pTjet,gen  versus pT jet,gen
200    TH2D      *fhJetPtGenChargVsJetPtGenFull; //generated pT spectrum of full jets
201    TH1D      *fhJetPtGenFull; // generated pT spectrum of full jets
202    TH2F      *fh2NtriggersGen; //trigger pT versus centrality in generator level
203    THnSparse *fHJetSpecGen;    //Recoil jet spectrum at generator level 
204    THnSparse *fHJetSpecSubUeMedianGen;  //Recoil jet spectrum at gen level, jet pT corrected by kT median 
205    THnSparse *fHJetSpecSubUeConeGen; //Recoil jet spectrum at gen level, jet pT corrected with rho from cone
206    THnSparse *fHJetPhiCorrGen; // Dphi distribution jet-triger
207    THnSparse *fHJetPhiCorrSubUeMedianGen; // Dphi distribution jet-triger
208    THnSparse *fHJetPhiCorrSubUeConeGen; // Dphi distribution jet-triger
209    THnSparse *fHJetUeMedianGen;   //UE background from kT median
210    THnSparse *fHJetUeConeGen;      //UE background from Perp Cone 
211    TH2D      *fhPtTrkTruePrimRec; // pt spectrum of true reconstructed primary tracks    
212    TH2D      *fhPtTrkTruePrimGen; // pt spectrum of true generated primary track    
213    TH2D      *fhPtTrkSecOrFakeRec; // pt spectrum of reconstructed fake or secondary tracks    
214    THnSparse *fHRhoUeMedianVsConeGen; //EBE UE from Median vs Perp Cone  generator level 
215   
216    TH1D  *fhEntriesToMedian; //how many entries were used to calculate
217    TH1D  *fhEntriesToMedianGen; //how many entries were used to calculate in MC
218    TH1D  *fhCellAreaToMedian; //how many entries were used to calculate
219    TH1D  *fhCellAreaToMedianGen; //how many entries were used to calculate in MC
220  
221    TH1D *fhNofMultipleTriggersGen; // The number of additional triggers in events with at least one trigger 
222    TH1D *fhNofMultipleTriggersConeGen; // The number of additional triggers in events with at least one trigger in R<0.4 15-50
223    TH1D *fhNofMultipleTriggersConeGenLow; // The number of additional triggers in events with at least one trigger in R<0.4 15-20
224    TH1D *fhNofMultipleTriggersConeGenHigh; // The number of additional triggers in events with at least one trigger in R<0.4 20-50 
225    TH1D *fhDeltaRMultTriggersGenLow; // Angular distributions between trigger and assoc
226    TH1D *fhDeltaRMultTriggersGenHigh; // Angular distributions between trigger and assoc
227    TH1D *fhDeltaPhiMultTriggersGenLow; // Angular distributions between trigger and assoc  15-20
228    TH1D *fhDeltaPhiMultTriggersGenHigh; // Angular distributions between trigger and assoc 20-50
229
230    TH1D *fhDeltaPhiMultTriggersInclGenLow; // Delta phi between trigger and assoc  incl trigg
231    TH1D *fhDeltaPhiMultTriggersInclGenHigh; // Delta phi between trigger and assoc incl trigg
232    TH1D *fhInclTrigCounterGen; // count the total number of inclusive triggers
233
234    TH1D *fhNofMultipleTriggersConeGenA; // The number of additional triggers in events with at least one trigger in R<0.4 
235    TH1D *fhNofMultipleTriggersConeGenALow; // The number of additional triggers in events with at least one trigger in R<0.4 15-20 
236    TH1D *fhNofMultipleTriggersConeGenAHigh; // The number of additional triggers in events with at least one trigger in R<0.4  20-50
237    TH1D *fhDeltaRMultTriggersGenALow; //Delta R for eloss scenation in assoc 15-20 bin 
238    TH1D *fhDeltaPhiMultTriggersGenALow;//Delta phi for eloss scenation in assoc 15-20 bin 
239    TH1D *fhDeltaRMultTriggersGenAHigh; //Delta R for eloss scenation in assoc 20-50 bin 
240    TH1D *fhDeltaPhiMultTriggersGenAHigh;//Delta phi for eloss scenation in assoc 20-50 bin 
241    TH1D *fhNofTriggersGenA; //Count triggers in eloss scenario
242
243    TH1D *fhNofMultipleTriggersConeGenB; // The number of additional triggers in events with at least one trigger in R<0.4 15-50
244    TH1D *fhNofMultipleTriggersConeGenBLow; // The number of additional triggers in events with at least one trigger in R<0.4 15-20
245    TH1D *fhNofMultipleTriggersConeGenBHigh; // The number of additional triggers in events with at least one trigger in R<0.4 20-50 
246    TH1D *fhDeltaRMultTriggersGenBLow; //Delta R for eloss scenation in assoc 15-20 bin 
247    TH1D *fhDeltaPhiMultTriggersGenBLow;//Delta phi for eloss scenation in assoc 15-20 bin 
248    TH1D *fhDeltaRMultTriggersGenBHigh; //Delta R for eloss scenation in assoc 20-50 bin 
249    TH1D *fhDeltaPhiMultTriggersGenBHigh;//Delta phi for eloss scenation in assoc 20-50 bin 
250    TH1D *fhNofTriggersGenB; //Count triggers in eloss scenario
251
252
253    TH1D *fhTriggerCounterGenLevel; // The number of sing incl rec TT tracks that have gen level particle assigned within the same TT bin 
254    TH1D *fhDeltaRMultTriggersGenLevelLow; // corresp. genereator level TT track combined with generator level Assoc tracks 15-20 
255    TH1D *fhDeltaPhiMultTriggersGenLevelLow; //corresp. genereator level TT track combined with generator level Assoc tracks 15-20 
256    TH1D *fhDeltaRMultTriggersGenLevelHigh;  // corresp. genereator level TT track combined with generator level Assoc tracks 20-50 
257    TH1D *fhDeltaPhiMultTriggersGenLevelHigh;// corresp. genereator level TT track combined with generator level Assoc tracks 20-50
258
259
260    Bool_t fIsChargedMC;   //flag analysis on MC data with true and on the real+kine data false
261    Bool_t fIsKine;       //flag analysis on kine data with true and on the real+MC data false
262    Bool_t fIsFullMC;   //flag analysis on MC data with true and on the real+kine data false
263    TArrayI faGenIndex;   // labels of particles on MC generator level  
264    TArrayI faRecIndex;   // labels of particles on reconstructed track level
265    const Double_t fkAcceptance; //eta times phi  Alice coverage  
266    const Double_t fkDeltaPhiCut; //Delta phi cut on  trigger-jet distance in azimuth
267  
268    TProfile*     fh1Xsec;   //! pythia cross section and trials
269    TH1F*         fh1Trials; //! trials are added
270    TH1F*         fh1AvgTrials; //! trials are added
271    TH1F*         fh1PtHard;  //! Pt har of the event...      
272    TH1F*         fh1PtHardNoW;  //! Pt har of the event without weigt      
273    TH1F*         fh1PtHardTrials;  //! Number of trials
274    Float_t       fAvgTrials;       // Average number of trials
275
276    
277    Int_t   fHardest;               // trigger type 0=single incl, 1=LP 
278    Int_t   fEventNumberRangeLow;   // lower range of selected event numbers  
279    Int_t   fEventNumberRangeHigh;  // high range of selected event numbers  
280    Float_t fTriggerPtRangeLow;   // lower range of selected trigger pt
281    Float_t fTriggerPtRangeHigh;  // upper range of selected trigger pt
282
283    Bool_t  fFillRespMx;    //fill response matrix files
284
285
286    TRandom3* fRandom;           // TRandom3 
287    Int_t fnTrials;  //number of random trials to measure cell area
288    Float_t fJetFreeAreaFrac; //fraction of area in cell free of jets  
289    const Int_t  fnPhi; //number of cells in phi
290    const Int_t  fnEta; //number of cells in eta
291    const Double_t fEtaSize; //cell size in eta 
292    const Double_t fPhiSize; //cell size in phi
293    const Double_t fCellArea; //cell area
294    Double_t fSafetyMargin; //enlarge a bit the jet size to avoid contamination of UE
295
296    Bool_t fDoubleBinning; //0=use 2 GeV/c bins  ; 1= use 1 GeV/c bins
297  
298    ClassDef(AliAnalysisTaskJetCorePP, 17);  //has to end with number larger than 0
299 };
300
301 #endif
302