]> git.uio.no Git - u/mrichter/AliRoot.git/blame - PWGJE/EMCALJetTasks/UserTasks/AliAnalysisTaskHJetDphi.h
Ch. jets in pPb: Minor improvements
[u/mrichter/AliRoot.git] / PWGJE / EMCALJetTasks / UserTasks / AliAnalysisTaskHJetDphi.h
CommitLineData
aac81e6b 1#ifndef ALIANALYSISTASKHJETDPHI_H
2#define ALIANALYSISTASKHJETDPHI_H
3
4#include <vector>
5
6class TH2F;
7class TH1F;
8class TF1;
9class THnSparse;
10class TClonesArray;
11class TObject;
12class TString;
13class AliAODEvent;
14class AliESDEvent;
15class AliAODExtension;
16class AliMCEvent;
17class AliRhoParameter;
18class TRandom3;
19class AliEmcalJet;
20class AliVTrack;
21class AliNamedArrayI;
22class AliAODTrack;
23class AliESDtrackCuts;
24class AliAODJetEventBackground;
25class AliNamedString;
26
27#include "AliAnalysisTaskSE.h"
28
29class AliAnalysisTaskHJetDphi : public AliAnalysisTaskSE {
30 public:
31 AliAnalysisTaskHJetDphi();
32 AliAnalysisTaskHJetDphi(const char *name);
33 virtual ~AliAnalysisTaskHJetDphi();
34
35 void UserCreateOutputObjects();
36 Bool_t UserNotify();
37 void UserExec(Option_t *option);
38 void Terminate(Option_t *);
39 void PrintConfig();
40
41 void SetVerbosity(Int_t i) { fVerbosity = i; }
42 void SetIsEmbedding(Bool_t b) { fIsEmbedding = b; }
43 void SetAnaType(Int_t i) { fAnaType = i; }
44 void SetRunPeriod(char *p) { fPeriod = p; }
45 void SetCollisionSystem(char *s) { fCollisionSystem = s; }
46 void SetIsMC(Bool_t mc) { fIsMC = mc; }
47 void SetAnalyzeMCTruth(Bool_t mc) { fAnalyzeMCTruth = mc; }
48 void SetOfflineTrgMask(AliVEvent::EOfflineTriggerTypes mask) { fOfflineTrgMask = mask; }
49 void SetMaxVtxZ(Double_t z) { fMaxVtxZ = z; }
50 void SetFilterMask(UInt_t filter) { fFilterMask = filter; }
51 void SetRequireITSRefit(Bool_t r) { fRequireITSRefit = r; }
49bf6461 52 void SetRequireSharedClsCut(Bool_t r) { fRequireSharedClsCut = r; }
aac81e6b 53 void SetNonStdFile(char* s) { fNonStdFile = s; }
54 void SetMcParticleArrName(char *s) { fMcParticleArrName = s; }
55 void SetEmbTrkArrName(char *s) { fEmbTrkArrName = s; }
56 void SetTrackArrName(char *s) { fTrackArrName=s; }
57 void SetSwitchOnAvoidTpcHole(Bool_t cut) { fSwitchOnAvoidTpcHole=cut; }
58 void SetAvoidTpcHole(Bool_t cut) { fAvoidTpcHole=cut; }
59 void SetCutTPCBoundary(Bool_t cut) { fCutTPCBoundary=cut; }
60 void SetDistToTPCBoundary(Double_t dist) { fDistToTPCBoundary=dist; }
61 void SetTrkPtRange(Double_t min, Double_t max) { fMinTrkPt=min; fMaxTrkPt=max; }
62 void SetTrkPhiRange(Double_t min, Double_t max) { fMinTrkPhi=min; fMaxTrkPhi=max; }
63 void SetTrkEtaRange(Double_t min, Double_t max) { fMinTrkEta=min; fMaxTrkEta=max; }
64 void SetRadius(Double_t rad) { fRadius=rad; }
65 void SetJetArrName(char *s) { fJetArrName=s; }
66 void SetPLJetArrName(char *s) { fPLJetArrName = s; }
67 void SetDLJetArrName(char *s) { fDLJetArrName = s; }
68 void SetRhoName(char *s) { fRhoName=s; }
69 void SetRunTrkQA(Bool_t run) { fRunTrkQA=run; }
70 void SetRunJetQA(Bool_t run) { fRunJetQA=run; }
71 void SetRunSingleInclHJet(Bool_t run) { fRunSingleInclHJet=run; }
72 void SetTTtype(Bool_t type) { fTTtype=type; }
73 void SetTTRange(Double_t min, Double_t max) { fTTMinPt=min; fTTMaxPt=max; }
74 void SetJetPtMin(Double_t min) { fJetPtMin = min; }
75 void SetRunPLHJet(Bool_t run) { fRunPLHJet = run; }
76 void SetRunDLHJet(Bool_t run) { fRunDLHJet = run; }
77 void SetRunLeadTrkQA(Bool_t run) { fRunLeadTrkQA=run; }
78 void SetStudyKtEffects(Bool_t study) { fStudyKtEffects=study; }
79 void SetKtValue(Double_t kt) { fKtValue=kt; }
80 void SetAODfilterBits(Int_t b0 = 0, Int_t b1 = 0) { fAODfilterBits[0] = b0 ; fAODfilterBits[1] = b1 ; }
81 void SetRunBkgFlow(Bool_t run) { fRunBkgFlow=run; }
82
83
84protected:
85 Bool_t RetrieveArraies();
86 void RunTrackQA();
87 void RunJetQA(const TClonesArray *jetArray, const Double_t rho, THnSparse *hJetPt, THnSparse *hJetArea, THnSparse *hJetQA);
88 Int_t FindSingleIncTrigger(const TClonesArray *trackArray, Double_t &trigPt, Double_t &trigPhi, Double_t &trigEta, const Int_t arrayType);
89 void RunSingleInclHJetCorr(Double_t trigPt, Double_t trigPhi, Double_t trigEta, const TClonesArray *jetArray, Double_t rho, THnSparse *hTT, THnSparse *hn);
90 void RunLeadTrkQA();
91 void StudyKtEffects();
92 Bool_t AcceptTrack(AliVParticle *track);
93 Bool_t IsGoodAODtrack(AliVParticle *track);
94 Bool_t IsGoodJet(Double_t jetEta);
95 Double_t GetLeadingPt(const Int_t jetIndex);
96 Double_t GetZ(const Double_t trkPx, const Double_t trkPy, const Double_t trkPz, const Double_t jetPx, const Double_t jetPy, const Double_t jetPz);
97 Double_t CalculateDPhi(const Double_t phi1, const Double_t phi2);
98 Double_t CalculatePhi(const Double_t py, const Double_t px);
99 Int_t LocateToTPCHole(const Double_t phi);
100 Int_t GetParticleType(Int_t pdg_input);
101 Double_t GetAODTrackPtRes(AliAODTrack *track);
102 Int_t GetPtHardBin(Double_t ptHard);
103
104 private:
0330533a 105 Int_t fVerbosity; // Control output
aac81e6b 106 Bool_t fIsEmbedding; // Flag of embedding trains
107 Int_t fAnaType; // 0-EMCal jet framework; 1-charged jet framework
108 TString fPeriod; // Run period
109 TString fCollisionSystem; // Collision system
110 Bool_t fIsMC; // Flag if MC data
111 Bool_t fAnalyzeMCTruth; // Analyze MC truth
112 AliMCEvent *fMC; //! MC events
113 AliVEvent *fEvent; //! Input event
114 AliESDEvent *fESD; //! ESD event
115 AliAODEvent *fAODIn; //! Input AOD event
116 AliAODEvent *fAODOut; //! Output AOD event
117 AliAODExtension *fAODExtension; //! where we take the jets from can be input or output AOD
118 AliVEvent::EOfflineTriggerTypes fOfflineTrgMask; // Mask of offline triggers to accept
119 Int_t fTriggerType; //! Trigger type of the event
120 Double_t fCentrality; //! V0M for current event
121 Double_t fMaxVtxZ; // Maximum z of vertices
122 AliESDtrackCuts *fEsdTrkCut; //! Track cuts for global tracks in ESD
123 AliESDtrackCuts *fEsdHybCut; //! Track cuts for complementary tracks in ESD
124 UInt_t fFilterMask; // Filter mask to select AOD tracks
125 Bool_t fRequireITSRefit; // Flag to require ITS refit for AOD tracks
49bf6461 126 Bool_t fRequireSharedClsCut; // Flag to require cut on fraction of shared TPC clusters
aac81e6b 127 Bool_t fIsInit; //! Flag if all the arraies are successfully retrieved
128 TString fNonStdFile; // Name of delta aod file to catch the extension
129 TString fMcParticleArrName; // Name of the input mc particles
130 TClonesArray *fMcParticleArray; //! Array of input mc particles
131 AliNamedArrayI *fMcParticlelMap; //! Array of mc map for EMCal train
132 TString fEmbTrkArrName; // Name of PbPb tracks + PYTHIA tracks
133 TClonesArray *fEmbTrkArray; //! Array of PbPb tracks + PYTHIA tracks
134 TString fTrackArrName; // Name of the input track array
135 TClonesArray *fTrackArray; //! Array of input tracks
136 Int_t fTriggerTrkIndex; //! Index of the trigger track in the event
137 Double_t fTriggerTrkPt; //! Trigger track pt
138 Bool_t fSwitchOnAvoidTpcHole; // Switch on to avoid TPC hole for the recoil jets
139 Bool_t fAvoidTpcHole; // Flag if TPC hole is present
140 Bool_t fCutTPCBoundary; // Flag of reqiring trigger tracks stay away from TPC boundary
141 Double_t fDistToTPCBoundary; // Distance to TPC boundary
142 Double_t fMinTrkPt; // Minimum pt for tracks
143 Double_t fMaxTrkPt; // Maximum pt for tracks
144 Double_t fMinTrkEta; // Minimum eta for tracks
145 Double_t fMaxTrkEta; // Maximum eta for tracks
146 Double_t fMinTrkPhi; // Minimum phi for tracks
147 Double_t fMaxTrkPhi; // Maximum phi for tracks
148 Double_t fRadius; // Jet radius
149 TString fJetArrName; // Name of the found jet array
150 TString fPLJetArrName; // Name of the embedded PYTHIA jet array on particle level
151 TString fDLJetArrName; // Name of the embedded PYTHIA jet array on detector level
152 TClonesArray *fJetArray; //! Array of the found jets
153 TClonesArray *fPLJetArray; //! Array of the embedded PYTHIA jet array on particle level
154 TClonesArray *fDLJetArray; //! Array of the embedded PYTHIA jet array on detector level
155 TString fRhoName; // Name of the rho parameter
156 AliRhoParameter *fRho; //! Rho parameter
157 Double_t fRhoValue; //! Value of the rho parameter
158 AliAODJetEventBackground *fEvtBkg; //! Event background for LEGO train
159 AliNamedString *fPtHardBinName; //! Pt hard bin param
160 Int_t fPtHardBin; //! Pt hard bin
161 Bool_t fRunTrkQA; // Flag to run track QA
162 Bool_t fRunJetQA; // Flag to run jet QA
163 Bool_t fRunSingleInclHJet; // Flag to run h+jet
164 Int_t fTTtype; // 0-single inclusive; 1-leading (not implemented yet)
165 Double_t fTTMinPt; // Minimum pt for TT
166 Double_t fTTMaxPt; // Maximum pt for TT
167 Double_t fJetPtMin; // Minimum pt for jets
168 Bool_t fRunPLHJet; // Run h+jet for detector-level jets
169 Bool_t fRunDLHJet; // Run h+jet for particle-level jets
170 Bool_t fRunLeadTrkQA; // Run QA for trigger hadron
171 Bool_t fStudyKtEffects; // Study kt effects
172 Double_t fKtValue; // Value of input kt
173 TRandom3 *fRandom; //! Random number generator
174 Int_t fAODfilterBits[2]; // AOD track filter bit map
175 Bool_t fRunBkgFlow; // Vary rho for recoil jets
176
177 // List of histograms
178 TList *fOutputList; //! Output list
179 TH1F *fhEventStat; //!
180 TH1F *fhNTrials; //!
181 TH1F *fhPtHardBins; //!
182
183 // Event properties
184 TH1F *fhVtxZ[4]; //!
185 TH1F *fhCentrality[4]; //!
186 TH2F *fhRhoVsCent[4]; //!
187
188 // track QA
189 TH2F *fhTrkPt[4]; //!
190 THnSparse *fhTrkQA[4]; //!
191 THnSparse *fhTrkPtRes[4]; //!
192 THnSparse *fhTrkPhiRes[4]; //!
193
194 // jet QA
195 THnSparse *fhJetPt[4][3]; //!
196 THnSparse *fhJetArea[4][3]; //!
197 THnSparse *fhJetQA[4][3]; //!
198
199 // h+jet analysis
200 TH1F *fhNumberOfTT[4]; //!
201 THnSparse *fhTTPt[4][3]; //!
202 THnSparse *fHJetPhiCorr[4][3]; //!
203 THnSparse *fHJetPhiCorrUp[4]; //!
204 THnSparse *fHJetPhiCorrDown[4]; //!
205
206 // additional studies
207 THnSparse *fhLeadTrkQA[4]; //!
208 THnSparse *fhKtEffects[4]; //!
209
210 AliAnalysisTaskHJetDphi(const AliAnalysisTaskHJetDphi&); // not implemented
211 AliAnalysisTaskHJetDphi &operator=(const AliAnalysisTaskHJetDphi&); // not implemented
212
49bf6461 213 ClassDef(AliAnalysisTaskHJetDphi, 2);
aac81e6b 214};
215
216#endif