]>
Commit | Line | Data |
---|---|---|
aac81e6b | 1 | #ifndef ALIANALYSISTASKHJETDPHI_H |
2 | #define ALIANALYSISTASKHJETDPHI_H | |
3 | ||
4 | #include <vector> | |
5 | ||
6 | class TH2F; | |
7 | class TH1F; | |
8 | class TF1; | |
9 | class THnSparse; | |
10 | class TClonesArray; | |
11 | class TObject; | |
12 | class TString; | |
13 | class AliAODEvent; | |
14 | class AliESDEvent; | |
15 | class AliAODExtension; | |
16 | class AliMCEvent; | |
17 | class AliRhoParameter; | |
18 | class TRandom3; | |
19 | class AliEmcalJet; | |
20 | class AliVTrack; | |
21 | class AliNamedArrayI; | |
22 | class AliAODTrack; | |
23 | class AliESDtrackCuts; | |
24 | class AliAODJetEventBackground; | |
25 | class AliNamedString; | |
26 | ||
27 | #include "AliAnalysisTaskSE.h" | |
28 | ||
29 | class 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 | ||
83 | protected: | |
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 |