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