]>
Commit | Line | Data |
---|---|---|
5e5a2b89 | 1 | // |
91b7e743 | 2 | // Author: A Castro (UTK) |
3 | // Last Modified: August 11, 2014 | |
5e5a2b89 | 4 | |
5 | #include "AliAnalysisTaskEmcalJetHF.h" | |
6 | ||
7 | // general ROOT includes | |
8 | #include <TCanvas.h> | |
9 | #include <TChain.h> | |
10 | #include <TClonesArray.h> | |
11 | #include <TH1F.h> | |
12 | #include <TH2F.h> | |
13 | #include <TH3F.h> | |
14 | #include <THnSparse.h> | |
15 | #include <TList.h> | |
16 | #include <TLorentzVector.h> | |
17 | #include <TParameter.h> | |
18 | #include <TParticle.h> | |
19 | #include <TTree.h> | |
20 | #include <TVector3.h> | |
21 | #include <TObjArray.h> | |
22 | ||
23 | // AliROOT includes | |
24 | #include "AliAODEvent.h" | |
25 | #include "AliESDEvent.h" | |
26 | #include "AliAnalysisManager.h" | |
27 | #include "AliAnalysisTask.h" | |
28 | #include "AliCentrality.h" | |
29 | #include "AliEmcalJet.h" | |
30 | #include "AliAODJet.h" | |
31 | #include "AliVCluster.h" | |
32 | #include "AliVTrack.h" | |
33 | #include <AliVEvent.h> | |
34 | #include <AliVParticle.h> | |
35 | #include "AliRhoParameter.h" | |
91b7e743 | 36 | #include "AliLog.h" |
37 | #include "AliJetContainer.h" | |
38 | #include "AliParticleContainer.h" | |
39 | #include "AliClusterContainer.h" | |
5e5a2b89 | 40 | #include "AliEmcalParticle.h" |
91b7e743 | 41 | #include "AliESDCaloCluster.h" |
42 | #include <AliESDtrackCuts.h> | |
43 | #include "AliPID.h" | |
44 | #include "AliTPCdEdxInfo.h" | |
45 | //#include "AliCaloTrackESDReader.h" | |
46 | //#include "AliCaloTrackAODReader.h" | |
47 | //#include "AliCaloTrackReader.h" | |
5e5a2b89 | 48 | |
49 | // event handler (and pico's) includes | |
50 | #include <AliInputEventHandler.h> | |
51 | #include <AliVEventHandler.h> | |
52 | #include "AliESDInputHandler.h" | |
53 | #include "AliPicoTrack.h" | |
54 | #include "AliEventPoolManager.h" | |
91b7e743 | 55 | #include "AliAODTrack.h" |
56 | #include "AliESDtrack.h" | |
5e5a2b89 | 57 | |
58 | // PID includes | |
59 | #include "AliPIDResponse.h" | |
60 | #include "AliTPCPIDResponse.h" | |
61 | #include "AliESDpid.h" | |
62 | ||
63 | #include <AliInputEventHandler.h> | |
64 | #include <AliVEventHandler.h> | |
65 | ||
66 | // magnetic field includes | |
67 | #include "TGeoGlobalMagField.h" | |
68 | #include "AliMagF.h" | |
69 | ||
e8c28d9e | 70 | using std::cout; |
71 | using std::endl; | |
72 | ||
5e5a2b89 | 73 | ClassImp(AliAnalysisTaskEmcalJetHF) |
74 | ||
75 | //________________________________________________________________________ | |
76 | AliAnalysisTaskEmcalJetHF::AliAnalysisTaskEmcalJetHF() : | |
77 | AliAnalysisTaskEmcalJet("heavyF",kFALSE), | |
78 | event(0), | |
79 | fillHist(0), | |
91b7e743 | 80 | fEventTrigEMCALL1Gamma1(0), |
81 | fEventTrigEMCALL1Gamma2(0), | |
82 | fGlobalQA(0), | |
83 | fInputEvent(0x0), | |
5e5a2b89 | 84 | fCuts(0), |
47d82e4b | 85 | fPhimin(-10), fPhimax(10), |
86 | fEtamin(-0.9), fEtamax(0.9), | |
87 | fAreacut(0.0), | |
91b7e743 | 88 | fJetHIpt(20.0), |
5e5a2b89 | 89 | fTrackPtCut(2.0), |
90 | fTrackEta(0.9), | |
08f52641 | 91 | fTrkQAcut(0), |
91b7e743 | 92 | fesdTrackCuts(0), |
5e5a2b89 | 93 | fPIDResponse(0x0), fTPCResponse(), |
94 | fEsdtrackCutsITSTPC(), | |
95 | fEsdtrackCutsTPC(), | |
96 | fEsdtrackCutsITS(), | |
91b7e743 | 97 | fJetsCont(0), fTracksCont(0), fCaloClustersCont(0), fTracksJetCont(0), fCaloClustersJetCont(0), |
5e5a2b89 | 98 | fESD(0), fAOD(0), |
99 | fHistRhovsCent(0), | |
100 | fHistJetPhi(0), | |
101 | fHistCorJetPt(0), fHistJetPt(0), | |
91b7e743 | 102 | fHistHighJetPt(0), |
5e5a2b89 | 103 | fHistnSigElecPt(0), |
5e5a2b89 | 104 | fHistnJetTrackvnJetClusters(0), |
91b7e743 | 105 | fHistPtDEtaDPhiTrackClus(0), |
106 | fHistPtDEtaDPhiClusTrack(0), | |
107 | fhnPIDHF(0x0), fhnJetQA(0x0), fhnClusterTrackQA(0x0), fhnTrackClusterQA(0x0), fhnPIDHFTtoC(0x0) | |
5e5a2b89 | 108 | { |
109 | // Default constructor. | |
110 | for (Int_t i = 0;i<6;++i){ | |
111 | fHistJetPtvsTrackPt[i] = 0; | |
112 | fHistTrackPt[i] = 0; | |
113 | fHistEP0[i] = 0; | |
114 | fHistEP0A[i] = 0; | |
115 | fHistEP0C[i] = 0; | |
116 | fHistEPAvsC[i] = 0; | |
117 | } | |
118 | ||
119 | SetMakeGeneralHistograms(kTRUE); | |
120 | ||
121 | } | |
122 | ||
123 | //________________________________________________________________________ | |
124 | AliAnalysisTaskEmcalJetHF::AliAnalysisTaskEmcalJetHF(const char *name) : | |
125 | AliAnalysisTaskEmcalJet(name,kTRUE), | |
126 | event(0), | |
127 | fillHist(0), | |
91b7e743 | 128 | fEventTrigEMCALL1Gamma1(0), |
129 | fEventTrigEMCALL1Gamma2(0), | |
130 | fGlobalQA(0), | |
131 | fInputEvent(0x0), | |
5e5a2b89 | 132 | fCuts(0), |
47d82e4b | 133 | fPhimin(-10), fPhimax(10), |
134 | fEtamin(-0.9), fEtamax(0.9), | |
135 | fAreacut(0.0), | |
91b7e743 | 136 | fJetHIpt(20.0), |
5e5a2b89 | 137 | fTrackPtCut(2.0), |
138 | fTrackEta(0.9), | |
08f52641 | 139 | fTrkQAcut(0), |
91b7e743 | 140 | fesdTrackCuts(0), |
5e5a2b89 | 141 | fPIDResponse(0x0), fTPCResponse(), |
142 | fEsdtrackCutsITSTPC(), | |
143 | fEsdtrackCutsTPC(), | |
144 | fEsdtrackCutsITS(), | |
91b7e743 | 145 | fJetsCont(0), fTracksCont(0), fCaloClustersCont(0), fTracksJetCont(0), fCaloClustersJetCont(0), |
5e5a2b89 | 146 | fESD(0), fAOD(0), |
147 | fHistRhovsCent(0), | |
148 | fHistJetPhi(0), | |
149 | fHistCorJetPt(0), fHistJetPt(0), | |
91b7e743 | 150 | fHistHighJetPt(0), |
5e5a2b89 | 151 | fHistnSigElecPt(0), |
5e5a2b89 | 152 | fHistnJetTrackvnJetClusters(0), |
91b7e743 | 153 | fHistPtDEtaDPhiTrackClus(0), |
154 | fHistPtDEtaDPhiClusTrack(0), | |
155 | fhnPIDHF(0x0), fhnJetQA(0x0), fhnClusterTrackQA(0x0), fhnTrackClusterQA(0x0), fhnPIDHFTtoC(0x0) | |
5e5a2b89 | 156 | { |
157 | for (Int_t i = 0;i<6;++i){ | |
158 | fHistJetPtvsTrackPt[i] = 0; | |
159 | fHistTrackPt[i] = 0; | |
160 | fHistEP0[i] = 0; | |
161 | fHistEP0A[i] = 0; | |
162 | fHistEP0C[i] = 0; | |
163 | fHistEPAvsC[i] = 0; | |
164 | } | |
165 | SetMakeGeneralHistograms(kTRUE); | |
166 | ||
167 | DefineInput(0,TChain::Class()); | |
168 | DefineOutput(1, TList::Class()); | |
169 | } | |
170 | ||
171 | //_______________________________________________________________________ | |
172 | AliAnalysisTaskEmcalJetHF::~AliAnalysisTaskEmcalJetHF() | |
173 | { | |
174 | // destructor | |
175 | // | |
176 | if (fOutput) { | |
177 | delete fOutput; | |
178 | fOutput = 0; | |
179 | } | |
180 | } | |
181 | ||
182 | //________________________________________________________________________ | |
183 | void AliAnalysisTaskEmcalJetHF::UserCreateOutputObjects() | |
184 | { | |
185 | if (! fCreateHisto) | |
186 | return; | |
187 | AliAnalysisTaskEmcalJet::UserCreateOutputObjects(); | |
188 | ||
91b7e743 | 189 | //fJetsCont = GetJetContainer(0); |
190 | if(fJetsCont) { //get particles and clusters connected to jets | |
191 | fTracksJetCont = fJetsCont->GetParticleContainer(); | |
192 | fCaloClustersJetCont = fJetsCont->GetClusterContainer(); | |
193 | } | |
194 | else { //no jets, just analysis tracks and clusters | |
195 | fTracksCont = GetParticleContainer(0); | |
196 | fCaloClustersCont = GetClusterContainer(0); | |
197 | } | |
198 | fTracksCont->SetClassName("AliVTrack"); | |
199 | fCaloClustersCont->SetClassName("AliVCluster"); | |
5e5a2b89 | 200 | |
201 | fHistJetPhi = new TH1F("NjetvsPhi", "NjetvsPhi", 288,-2*TMath::Pi(),2*TMath::Pi()); | |
202 | fHistJetPt = new TH1F("NjetvsJetPt", "NjetvsJetPt", 300, 0, 300); | |
203 | fOutput->Add(fHistJetPhi); | |
204 | fOutput->Add(fHistJetPt); | |
205 | ||
206 | fillHist = 1; | |
91b7e743 | 207 | TString histname; |
5e5a2b89 | 208 | |
5e5a2b89 | 209 | if(fillHist>0){ |
210 | fHistRhovsCent = new TH2F("RhovsCent", "RhovsCent", 100, 0.0, 100.0, 400, 0, 400); | |
211 | fHistCorJetPt = new TH1F("NjetvsCorrJetPt", "NjetvsCorrJetPt", 300, -100, 200); | |
5e5a2b89 | 212 | fHistnSigElecPt = new TH2F("nsig_v_pt(TPC)","nsig_v_pt(TPC)",200,0,100,100,-10,10); |
5e5a2b89 | 213 | fHistnJetTrackvnJetClusters = new TH2F("NumbJetTracksvJetClusters","NumbJetTracksvJetClusters",21,0,20,21,0,20); |
91b7e743 | 214 | fHistHighJetPt = new TH1F("HighestPtJetPerEvent","HighJetPt",300,0,150); |
215 | ||
216 | histname = "fHistPtDEtaDPhiTrackClus"; | |
217 | fHistPtDEtaDPhiTrackClus = new TH3F(histname.Data(),Form("%s;#it{p}_{T}^{track};#Delta#eta;#Delta#varphi",histname.Data()),100,0.,100.,100,-0.1,0.1,100,-0.1,0.1); | |
218 | fOutput->Add(fHistPtDEtaDPhiTrackClus); | |
219 | ||
220 | histname = "fHistPtDEtaDPhiClusTrack"; | |
221 | fHistPtDEtaDPhiClusTrack = new TH3F(histname.Data(),Form("%s;#it{p}_{T}^{clus};#Delta#eta;#Delta#varphi",histname.Data()),100,0.,100.,100,-0.1,0.1,100,-0.1,0.1); | |
222 | fOutput->Add(fHistPtDEtaDPhiClusTrack); | |
223 | ||
5e5a2b89 | 224 | // PT bins used to be (2000, -100, 300) |
225 | TString name; | |
226 | TString title; | |
227 | ||
228 | // creating centrality dependent histos that don't involve Global Rho | |
229 | for (Int_t i = 0;i<6;++i){ | |
230 | name = TString(Form("JetPtvsTrackPt_%i",i)); | |
231 | title = TString(Form("Jet pT vs Leading Track pT cent bin %i",i)); | |
232 | fHistJetPtvsTrackPt[i] = new TH2F(name,title, 500, -100, 400, 100,0,100); | |
233 | fOutput->Add(fHistJetPtvsTrackPt[i]); | |
234 | ||
235 | name = TString(Form("TrackPt_%i",i)); | |
236 | title = TString(Form("Track pT cent bin %i",i)); | |
237 | fHistTrackPt[i] = new TH1F(name,title,400,0,200); | |
238 | fOutput->Add(fHistTrackPt[i]); | |
239 | ||
240 | name = TString(Form("EP0_%i",i)); | |
241 | title = TString(Form("EP VZero cent bin %i",i)); | |
242 | fHistEP0[i] = new TH1F(name,title,144,-TMath::Pi(),TMath::Pi()); | |
243 | fOutput->Add(fHistEP0[i]); | |
244 | ||
245 | name = TString(Form("EP0A_%i",i)); | |
246 | title = TString(Form("EP VZero cent bin %i",i)); | |
247 | fHistEP0A[i] = new TH1F(name,title,144,-TMath::Pi(),TMath::Pi()); | |
248 | fOutput->Add(fHistEP0A[i]); | |
249 | ||
250 | name = TString(Form("EP0C_%i",i)); | |
251 | title = TString(Form("EP VZero cent bin %i",i)); | |
252 | fHistEP0C[i] = new TH1F(name,title,144,-TMath::Pi(),TMath::Pi()); | |
253 | fOutput->Add(fHistEP0C[i]); | |
254 | ||
255 | name = TString(Form("EPAvsC_%i",i)); | |
256 | title = TString(Form("EP VZero cent bin %i",i)); | |
257 | fHistEPAvsC[i] = new TH2F(name,title,144,-TMath::Pi(),TMath::Pi(),100,-TMath::Pi(),TMath::Pi()); | |
258 | fOutput->Add(fHistEPAvsC[i]); | |
259 | ||
260 | } | |
261 | ||
262 | fOutput->Add(fHistRhovsCent); | |
263 | fOutput->Add(fHistCorJetPt); | |
5e5a2b89 | 264 | fOutput->Add(fHistnSigElecPt); |
5e5a2b89 | 265 | fOutput->Add(fHistnJetTrackvnJetClusters); |
91b7e743 | 266 | fOutput->Add(fHistHighJetPt); |
5e5a2b89 | 267 | }//Fill Histograms |
268 | ||
5e5a2b89 | 269 | // ****************************** PID ***************************************************** |
270 | // set up PID handler | |
271 | AliAnalysisManager *man=AliAnalysisManager::GetAnalysisManager(); | |
272 | AliInputEventHandler* inputHandler = (AliInputEventHandler*) (man->GetInputEventHandler()); | |
273 | if(!inputHandler) { | |
274 | AliFatal("Input handler needed"); | |
91b7e743 | 275 | return; |
5e5a2b89 | 276 | } |
277 | ||
278 | // PID response object | |
279 | //fPIDResponse = (AliPIDResponse*)inputHandler->GetPIDResponse(); | |
280 | // inputHandler->CreatePIDResponse(fIsMC); // needed to create object, why though? | |
281 | fPIDResponse = inputHandler->GetPIDResponse(); | |
282 | if (!fPIDResponse) { | |
283 | AliError("PIDResponse object was not created"); | |
91b7e743 | 284 | return; |
5e5a2b89 | 285 | } |
08f52641 | 286 | // **************************************************************************************** |
287 | UInt_t bitcoded = 0; // bit coded, see GetDimParamsPID() below | |
91b7e743 | 288 | bitcoded = 1<<0 | 1<<1 | 1<<2 | 1<<3 | 1<<4 | 1<<5 | 1<<6 | 1<<7 | 1<<8 | 1<<9 | 1<<10 | 1<<11 | 1<<12 | 1<<13| 1<<14 | 1<<15 | 1<<16 | 1<<17; |
289 | fhnPIDHF = NewTHnSparseDHF("fhnPIDHFCtoT", bitcoded); | |
08f52641 | 290 | |
291 | UInt_t bitcoded1 = 0; // bit coded, see GetDimParamsPID() below | |
292 | bitcoded1 = 1<<0 | 1<<1 | 1<<2 | 1<<3 | 1<<4; | |
293 | fhnJetQA = NewTHnSparseDJetQA("fhnJetQA", bitcoded1); | |
294 | ||
295 | UInt_t bitcoded2 = 0; // bit coded, see GetDimParamsPID() below | |
91b7e743 | 296 | bitcoded2 = 1<<1 | 1<<2 | 1<<3 | 1<<4 | 1<<5 | 1<<8 | 1<<9 | 1<<10 | 1<<15 | 1<<16 | 1<<17; |
297 | fhnClusterTrackQA = NewTHnSparseDHF("fhnClusterTrackQA", bitcoded2); | |
08f52641 | 298 | |
299 | UInt_t bitcoded3 = 0; // bit coded, see GetDimParamsPID() below | |
91b7e743 | 300 | bitcoded3 = 1<<1 | 1<<2 | 1<<3 | 1<<4 | 1<<5 | 1<<8 | 1<<9 | 1<<10 | 1<<15 | 1<<16 | 1<<17; |
301 | fhnTrackClusterQA = NewTHnSparseDHF("fhnTrackClusterQA", bitcoded3); | |
302 | ||
303 | UInt_t bitcoded7 = 0; // bit coded, see GetDimParamsPID() below | |
304 | bitcoded7 = 1<<0 | 1<<1 | 1<<2 | 1<<3 | 1<<4 | 1<<5 | 1<<6 | 1<<7 | 1<<8 | 1<<9 | 1<<10 | 1<<11 | 1<<12 | 1<<13| 1<<14 | 1<<15 | 1<<16 | 1<<17; | |
305 | fhnPIDHFTtoC = NewTHnSparseDHF("fhnPIDHFTtoC", bitcoded7); | |
08f52641 | 306 | |
5e5a2b89 | 307 | cout << "_______________Created Sparse__________________" << endl; |
08f52641 | 308 | |
5e5a2b89 | 309 | fOutput->Add(fhnPIDHF); |
08f52641 | 310 | fOutput->Add(fhnJetQA); |
91b7e743 | 311 | fOutput->Add(fhnClusterTrackQA); |
312 | fOutput->Add(fhnTrackClusterQA); | |
313 | fOutput->Add(fhnPIDHFTtoC); | |
5e5a2b89 | 314 | |
315 | PostData(1, fOutput); | |
91b7e743 | 316 | |
5e5a2b89 | 317 | } |
318 | ||
319 | //________________________________________________________ | |
320 | void AliAnalysisTaskEmcalJetHF::ExecOnce() | |
321 | { | |
91b7e743 | 322 | // Initialize the analysis |
5e5a2b89 | 323 | AliAnalysisTaskEmcalJet::ExecOnce(); |
91b7e743 | 324 | |
325 | if (fJetsCont && fJetsCont->GetArray() == 0) fJetsCont = 0; | |
326 | if (fTracksCont && fTracksCont->GetArray() == 0) fTracksCont = 0; | |
327 | if (fCaloClustersCont && fCaloClustersCont->GetArray() == 0) fCaloClustersCont = 0; | |
328 | ||
5e5a2b89 | 329 | |
330 | } // end of ExecOnce | |
331 | ||
332 | //________________________________________________________________________ | |
333 | Bool_t AliAnalysisTaskEmcalJetHF::Run() | |
334 | { | |
335 | // check to see if we have any tracks | |
336 | if (!fTracks) return kTRUE; | |
337 | if (!fJets) return kTRUE; | |
91b7e743 | 338 | |
08f52641 | 339 | // what kind of event do we have: AOD or ESD? |
47d82e4b | 340 | Bool_t useAOD; |
08f52641 | 341 | if (dynamic_cast<AliAODEvent*>(InputEvent())) useAOD = kTRUE; |
342 | else useAOD = kFALSE; | |
343 | ||
91b7e743 | 344 | fEventTrigEMCALL1Gamma1 = kFALSE; |
345 | fEventTrigEMCALL1Gamma2 = kFALSE; | |
346 | ||
08f52641 | 347 | // if we have ESD event, set up ESD object |
348 | if(!useAOD){ | |
349 | fESD = dynamic_cast<AliESDEvent*>(InputEvent()); | |
350 | if (!fESD) { | |
351 | AliError(Form("ERROR: fESD not available\n")); | |
352 | return kTRUE; | |
5e5a2b89 | 353 | } |
5e5a2b89 | 354 | } |
91b7e743 | 355 | |
5e5a2b89 | 356 | // if we have AOD event, set up AOD object |
357 | if(useAOD){ | |
358 | fAOD = dynamic_cast<AliAODEvent*>(InputEvent()); | |
359 | if(!fAOD) { | |
360 | AliError(Form("ERROR: fAOD not available\n")); | |
361 | return kTRUE; | |
362 | } | |
363 | } | |
5e5a2b89 | 364 | |
365 | // get magnetic field info for DCA | |
366 | Double_t MagF = fESD->GetMagneticField(); | |
367 | Double_t MagSign = 1.0; | |
368 | if(MagF<0)MagSign = -1.0; | |
369 | // set magnetic field | |
370 | if (!TGeoGlobalMagField::Instance()->GetField()) { | |
371 | AliMagF* field = new AliMagF("Maps","Maps", MagSign, MagSign, AliMagF::k5kG); | |
372 | TGeoGlobalMagField::Instance()->SetField(field); | |
373 | } | |
374 | ||
375 | // get centrality bin | |
376 | Int_t centbin = GetCentBin(fCent); | |
377 | //for pp analyses we will just use the first centrality bin | |
378 | if (centbin == -1) centbin = 0; | |
379 | ||
380 | // get vertex information | |
381 | Double_t fvertex[3]={0,0,0}; | |
382 | InputEvent()->GetPrimaryVertex()->GetXYZ(fvertex); | |
383 | //Double_t zVtx=fvertex[2]; | |
384 | ||
385 | // create pointer to list of input event | |
386 | TList *list = InputEvent()->GetList(); | |
387 | if(!list) { | |
388 | AliError(Form("ERROR: list not attached\n")); | |
389 | return kTRUE; | |
390 | } | |
391 | ||
392 | // background density | |
393 | fRhoVal = fRho->GetVal(); | |
394 | ||
395 | // initialize TClonesArray pointers to jets and tracks | |
396 | TClonesArray *jets = 0; | |
91b7e743 | 397 | //TClonesArray *tracks = 0; |
398 | //TClonesArray *clusters = 0; | |
399 | //TClonesArray * clusterList = 0; | |
400 | ||
5e5a2b89 | 401 | // get Jets object |
402 | jets = dynamic_cast<TClonesArray*>(list->FindObject(fJets)); | |
403 | if(!jets){ | |
404 | AliError(Form("Pointer to jets %s == 0", fJets->GetName())); | |
405 | return kTRUE; | |
91b7e743 | 406 | } // verify existence of jets |
08f52641 | 407 | |
91b7e743 | 408 | event++; |
409 | //cout<<"Event #: "<<event<<" Number of Clusters: "<<fCaloClustersCont->GetNClusters()<<" Number of Tracks: "<<fTracksCont->GetNParticles()<<endl; | |
08f52641 | 410 | |
91b7e743 | 411 | // Int_t nclusters = fInputEvent->GetNumberOfCaloClusters(); |
47d82e4b | 412 | |
47d82e4b | 413 | |
5e5a2b89 | 414 | // get number of jets and tracks |
415 | const Int_t Njets = jets->GetEntries(); | |
5e5a2b89 | 416 | if(Njets<1) return kTRUE; |
47d82e4b | 417 | |
91b7e743 | 418 | if (fTracksCont) { |
419 | AliVTrack *track = static_cast<AliVTrack*>(fTracksCont->GetNextAcceptParticle(0)); | |
420 | while(track) { | |
421 | track = static_cast<AliVTrack*>(fTracksCont->GetNextAcceptParticle()); | |
5e5a2b89 | 422 | } |
91b7e743 | 423 | } |
424 | if (fCaloClustersCont) { | |
425 | AliVCluster *cluster = fCaloClustersCont->GetNextAcceptCluster(0); | |
426 | while(cluster) { | |
427 | TLorentzVector nPart; | |
428 | cluster->GetMomentum(nPart, fVertex); | |
429 | cluster = fCaloClustersCont->GetNextAcceptCluster(); | |
5e5a2b89 | 430 | } |
91b7e743 | 431 | } |
08f52641 | 432 | |
47d82e4b | 433 | // Start Jet Analysis |
5e5a2b89 | 434 | // initialize jet parameters |
435 | Int_t ijethi=-1; | |
436 | Double_t highestjetpt=0.0; | |
91b7e743 | 437 | |
438 | // loop over jets in an event - to find highest jet pT and apply some cuts && JetQA Sparse | |
439 | for (Int_t ijet = 0; ijet < Njets; ijet++){ | |
440 | // get our jets | |
441 | AliEmcalJet *jet = static_cast<AliEmcalJet*>(jets->At(ijet)); | |
442 | if (!jet) continue; | |
443 | ||
444 | // apply jet cuts | |
445 | if(!AcceptMyJet(jet)) continue; | |
5e5a2b89 | 446 | |
08f52641 | 447 | |
91b7e743 | 448 | |
449 | if(highestjetpt<jet->Pt()){ | |
450 | ijethi=ijet; | |
451 | highestjetpt=jet->Pt(); | |
452 | } | |
453 | } // end of looping over jets | |
454 | ||
455 | fHistHighJetPt->Fill(ijethi); | |
456 | // ********************************************************************** | |
457 | // JET LOOP | |
458 | // ********************************************************************** | |
459 | ||
460 | // loop over jets in the event and make appropriate cuts | |
461 | for (Int_t iJets = 0; iJets < Njets; ++iJets) { | |
462 | AliEmcalJet *jet = static_cast<AliEmcalJet*>(fJets->At(iJets)); | |
463 | if (!jet) // see if we have a jet | |
464 | continue; | |
08f52641 | 465 | |
91b7e743 | 466 | // phi of jet, constrained to 1.6 < Phi < 2.94 |
467 | float jetphi = jet->Phi(); // phi of jet | |
468 | // apply jet cuts | |
469 | if(!AcceptMyJet(jet)) continue; | |
5e5a2b89 | 470 | |
91b7e743 | 471 | //AliEmcalJet::EFlavourTag tag=AliEmcalJet::kDStar; |
472 | //jet->AddFlavourTag(tag); | |
47d82e4b | 473 | |
0d436d87 | 474 | //MV: removed to avoid compiler warnings |
475 | // Bool_t bkgrnd1 = kFALSE; | |
476 | // Bool_t sig1 = kFALSE; | |
91b7e743 | 477 | |
478 | Int_t JetClusters = jet->GetNumberOfClusters(); | |
479 | Int_t JetTracks = jet -> GetNumberOfTracks(); | |
480 | fHistnJetTrackvnJetClusters->Fill(JetClusters,JetTracks); | |
5e5a2b89 | 481 | // Initializations and Calculations |
5e5a2b89 | 482 | Double_t jetptraw = jet->Pt(); // raw pT of jet |
483 | Double_t jetPt = -500; // initialize corr jet pt LOCAL | |
484 | Double_t jetarea = -500; // initialize jet area | |
485 | jetarea = jet->Area(); // jet area | |
486 | jetPt = jet->Pt() - jetarea*fRhoVal; // semi-corrected pT of jet from GLOBAL rho value | |
91b7e743 | 487 | fHistCorJetPt->Fill(jetPt); |
488 | ||
47d82e4b | 489 | if(jet->Pt() > fJetHIpt) { |
91b7e743 | 490 | if(!fTracksCont || !fCaloClustersCont) return kTRUE; |
5e5a2b89 | 491 | |
91b7e743 | 492 | Double_t dEdx = -99; |
493 | Double_t EovP = -99; | |
494 | Float_t DCAxy = -999; | |
495 | Float_t DCAz = -999; | |
5e5a2b89 | 496 | |
91b7e743 | 497 | Double_t deta = 999; |
498 | Double_t dphi = 999; | |
499 | Int_t NumbCluster = -999; | |
500 | NumbCluster = fCaloClustersCont->GetNClusters(); | |
f53815f2 | 501 | Double_t JetQA[5] = {static_cast<Double_t>(Njets), static_cast<Double_t>(jet->GetNumberOfTracks()), static_cast<Double_t>(jet->GetNumberOfClusters()),jet->Eta(), jet->Phi()}; |
91b7e743 | 502 | fhnJetQA->Fill(JetQA); |
08f52641 | 503 | |
91b7e743 | 504 | //*********************************************** |
505 | //****************Track Matched to Closest Cluster | |
5e5a2b89 | 506 | |
5e5a2b89 | 507 | |
91b7e743 | 508 | for(int iCluster = 0; iCluster <= NumbCluster; iCluster++){ |
509 | //Get closest track to cluster to track matching!!!!! | |
510 | //AliVCluster *cluster = fCaloClustersCont->GetNextAcceptedCluster(iCluster); | |
511 | AliVCluster *cluster = fCaloClustersCont->GetCluster(iCluster); | |
512 | ||
513 | if(! IsJetCluster(jet, iCluster, kFALSE)) continue; | |
514 | ||
515 | // while(cluster) { | |
516 | TLorentzVector nPart; | |
517 | cluster->GetMomentum(nPart, fVertex); | |
518 | //fHistClustersPt[fCentBin]->Fill(nPart.Pt()); | |
519 | Double_t fclusE = -999; | |
520 | fclusE = cluster->E(); | |
521 | ||
5e5a2b89 | 522 | Float_t pos[3]; |
91b7e743 | 523 | cluster->GetPosition(pos); // Get cluster position |
5e5a2b89 | 524 | TVector3 cp(pos); |
91b7e743 | 525 | |
526 | //Get matched track | |
527 | AliVTrack *mt = NULL; | |
528 | //AliESDtrack *mt = NULL; | |
529 | AliESDtrack *ESDmt = NULL; | |
530 | AliAODCaloCluster *acl = dynamic_cast<AliAODCaloCluster*>(cluster); | |
531 | if(acl) { | |
5e5a2b89 | 532 | |
91b7e743 | 533 | //mt = static_cast<AliVTrack*>(acl->GetTrackMatched(0)); |
534 | } | |
535 | else { | |
08f52641 | 536 | |
91b7e743 | 537 | AliESDCaloCluster *ecl = dynamic_cast<AliESDCaloCluster*>(cluster); |
538 | Int_t im = ecl->GetTrackMatchedIndex(); | |
539 | ||
540 | if(fTracksCont && im>=0) { | |
541 | //mt = static_cast<AliVTrack*>(fTracksCont->GetParticle(im)); | |
542 | mt = static_cast<AliVTrack*>(fTracksCont->GetParticle(im)); | |
543 | if(!mt) continue; | |
5e5a2b89 | 544 | |
91b7e743 | 545 | ESDmt = static_cast<AliESDtrack*>(mt); |
546 | if(!ESDmt) continue; | |
5e5a2b89 | 547 | |
91b7e743 | 548 | Double_t pcluster = mt->P(); |
549 | //Double_t esdp = ESDmt->P(); | |
550 | //Int_t LabelNumb, IDNumb; | |
551 | //LabelNumb = ESDmt->GetLabel(); | |
552 | //IDNumb= ESDmt -> GetID(); | |
553 | ||
554 | dEdx = mt->GetTPCsignal(); | |
555 | Double_t p = mt->P(); | |
556 | //TPC nSigma's | |
557 | //nsigpion = fPIDResponse->NumberOfSigmasTPC(mt,AliPID::kPion); | |
558 | Double_t nSigmaElectron_TPC = fPIDResponse->NumberOfSigmasTPC(mt,AliPID::kElectron); | |
559 | Double_t nSigmaElectron_TOF = fPIDResponse->NumberOfSigmasTOF(mt,AliPID::kElectron); | |
560 | dEdx = mt->GetTPCsignal(); | |
561 | ESDmt->GetImpactParameters(DCAxy, DCAz); | |
5e5a2b89 | 562 | EovP = fclusE/p; |
91b7e743 | 563 | Double_t HF_tracks[18] = {fCent, mt->Pt(), pcluster ,mt->Eta(), mt->Phi(), EovP, DCAxy, DCAz, dEdx,nSigmaElectron_TPC, nSigmaElectron_TOF,0 /*nSigmaElectron_EMCAL*/, jetptraw, jetphi, jet->Eta(),fclusE,cp.PseudoRapidity(),cp.Phi()}; |
564 | fhnPIDHF->Fill(HF_tracks); // fill Sparse Histo with trigger entries | |
565 | ||
566 | ||
567 | ||
568 | } | |
569 | } | |
08f52641 | 570 | |
91b7e743 | 571 | if(mt) { |
572 | AliPicoTrack::GetEtaPhiDiff(mt, cluster, dphi, deta); | |
573 | fHistPtDEtaDPhiClusTrack->Fill(nPart.Pt(),deta,dphi); | |
574 | ||
575 | ||
576 | ||
577 | } | |
5e5a2b89 | 578 | |
91b7e743 | 579 | //cluster = fCaloClustersCont->GetNextAcceptCluster(); |
580 | //if(! IsJetCluster(jet, cluster, kFALSE)) continue; | |
581 | //} | |
582 | ||
583 | /* | |
584 | Double_t p = mt->P(); | |
585 | Float_t pos[3]; | |
586 | cluster->GetPosition(pos); // Get cluster position | |
587 | //AliESDtrack *trackESD = fESD->GetTrack(Ntracks); | |
588 | ||
589 | // nSigmaElectron_TPC = fPIDResponse->NumberOfSigmasTPC(mt,AliPID::kElectron); | |
590 | // nSigmaElectron_TOF= fPIDResponse->NumberOfSigmasTOF(mt,AliPID::kElectron); | |
591 | EovP = fclusE/p; | |
592 | TVector3 cp(pos); | |
593 | ||
594 | //if(!fesdTrackCuts->AcceptTrack(mt)) continue; | |
595 | //dEdx = mt->GetTPCsignal(); | |
596 | //mt->GetImpactParameters(DCAxy, DCAz); | |
597 | //nSigmaElectron_TPC = fPIDResponse->NumberOfSigmasTPC(trackESD,AliPID::kElectron); | |
598 | //nSigmaElectron_TOF = fPIDResponse->NumberOfSigmasTOF(trackESD,AliPID::kElectron); | |
599 | ||
600 | ||
601 | //Double_t HF_tracks[18] = {fCent, mt->Pt(), mt->P() ,mt->Eta(), mt->Phi(), EovP, DCAxy, DCAz, dEdx, nSigmaElectron_TPC, nSigmaElectron_TOF, nSigmaElectron_EMCAL, jet->Pt(), jet->Phi(), jet->Eta(),fclusE,cp.PseudoRapidity(),cp.Phi()}; | |
602 | //fhnPIDHF->Fill(HF_tracks); // fill Sparse Histo with trigger entries | |
603 | */ | |
604 | //cluster = fCaloClustersCont->GetNextAcceptCluster(); | |
605 | //if(! IsJetCluster(jet, cluster, kFALSE)) continue; | |
606 | ||
607 | ||
608 | //AliESDtrack *ESDacceptedTrack = NULL; | |
609 | }//loop over cluster | |
610 | ||
611 | //******************************Cluster Matched To Closest Track | |
612 | //************************************************************** | |
5e5a2b89 | 613 | |
91b7e743 | 614 | |
615 | Int_t NumbTrackContainer = -999; | |
616 | NumbTrackContainer = fTracksCont->GetNParticles(); | |
617 | for(int iTracks = 0; iTracks <= NumbTrackContainer; iTracks++){ | |
618 | AliVTrack *AcceptedTrack =static_cast<AliVTrack*>(fTracksCont->GetParticle(iTracks)); | |
619 | if(!AcceptedTrack){ | |
620 | AliError(Form("Couldn't get AliVTrack Container %d\n", iTracks)); | |
621 | continue; | |
622 | } | |
623 | if(!IsJetTrack(jet,iTracks,kFALSE))continue; | |
624 | //Get matched cluster | |
625 | Int_t emc1 = AcceptedTrack->GetEMCALcluster(); | |
626 | ||
627 | Double_t acceptTrackP = AcceptedTrack->P(); | |
628 | Double_t acceptTrackPt = AcceptedTrack->Pt(); | |
629 | Double_t acceptTrackEta = AcceptedTrack->Eta(); | |
630 | Double_t acceptTrackPhi = AcceptedTrack->Phi(); | |
631 | Double_t nSigmaElectron_TPC_at = fPIDResponse->NumberOfSigmasTPC(AcceptedTrack,AliPID::kElectron); | |
632 | Double_t nSigmaElectron_TOF_at = fPIDResponse->NumberOfSigmasTOF(AcceptedTrack,AliPID::kElectron); | |
633 | ||
634 | ||
635 | AliESDtrack *ESDacceptedTrack = static_cast<AliESDtrack*>(AcceptedTrack); | |
636 | ||
637 | if(!ESDacceptedTrack){ | |
638 | AliError(Form("Couldn't get AliESDTrack %d\n", iTracks)); | |
639 | continue; | |
640 | } | |
641 | //Double_t DCAxy_at, DCAz_at; | |
642 | Double_t dEdxat = AcceptedTrack->GetTPCsignal(); | |
643 | //ESDacceptedTrack->GetImpactParameters(DCAxy_at, DCAz_at); | |
644 | ||
645 | ||
646 | if(fCaloClustersCont && emc1>=0) { | |
647 | AliVCluster *clusMatch = fCaloClustersCont->GetCluster(emc1); | |
648 | if(!clusMatch){ | |
649 | AliError(Form("Couldn't get matched AliVCluster %d\n", emc1)); | |
650 | continue; | |
651 | } | |
652 | ||
5e5a2b89 | 653 | |
91b7e743 | 654 | |
655 | Double_t mClusterE = clusMatch->E(); | |
656 | Float_t pos_mc[3]; | |
657 | clusMatch->GetPosition(pos_mc); // Get cluster position | |
658 | TVector3 mcp(pos_mc); | |
659 | Double_t EovP_mc = -999; | |
660 | EovP_mc = mClusterE/acceptTrackP; | |
0d436d87 | 661 | //MV: removed to avoid compiler warnings |
662 | // if(EovP_mc < 0.2){ | |
663 | // bkgrnd1 = kTRUE; //Hadron Background | |
664 | // } | |
665 | ||
666 | //Code without meaning: | |
667 | //if(0.8 < EovP_mc < 1.2){ | |
668 | // if(-1.5<nSigmaElectron_TPC_at<5.0){ | |
669 | // if(4.0<acceptTrackPt<10.0){ | |
670 | ||
671 | //Corrected code: | |
672 | // if(EovP_mc >0.8 && EovP_mc<1.2){ | |
673 | // if(nSigmaElectron_TPC_at>-1.5 && nSigmaElectron_TPC_at<5.0){ | |
674 | // if(acceptTrackPt>4.0 && acceptTrackPt<10.0){ | |
675 | // sig1 = kTRUE; //Electron Candidate | |
676 | // } | |
677 | // } | |
678 | // } | |
91b7e743 | 679 | |
680 | Double_t HF_tracks2[18] = {fCent, acceptTrackPt, acceptTrackP ,acceptTrackEta, acceptTrackPhi, EovP_mc, 0, 0, dEdxat,nSigmaElectron_TPC_at, nSigmaElectron_TOF_at,0 , jetPt, jet->Phi(), jet->Eta(),mClusterE,mcp.PseudoRapidity(),mcp.Phi()}; | |
681 | fhnPIDHFTtoC->Fill(HF_tracks2); // fill Sparse Histo with trigger entries | |
682 | } | |
683 | //AcceptedTrack = static_cast<AliVTrack*>(fTracksCont->GetNextAcceptParticle()); | |
684 | ||
685 | } //loop over tracks for matching to closest cluster | |
686 | ||
687 | ||
688 | ||
689 | ||
690 | } // highest pt jet cut | |
691 | /* | |
692 | Int_t tag = -999; | |
693 | if(bkgrnd1 == kTRUE) { | |
694 | AliEmcalJet::EFlavourTag tag=AliEmcalJet::kBckgrd1; | |
695 | jet->AddFlavourTag(tag); | |
696 | } | |
697 | if(sig1 == kTRUE && !bkgrnd1){ | |
698 | AliEmcalJet::EFlavourTag tag=AliEmcalJet::kSig1; | |
699 | jet->AddFlavourTag(tag); | |
700 | } | |
701 | */ | |
5e5a2b89 | 702 | } // LOOP over JETS in event |
703 | ||
91b7e743 | 704 | |
705 | ||
706 | if(fGlobalQA == 1) CheckClusTrackMatchingQA(); | |
707 | ||
5e5a2b89 | 708 | return kTRUE; |
91b7e743 | 709 | |
5e5a2b89 | 710 | } |
711 | //________________________________________________________________________ | |
712 | void AliAnalysisTaskEmcalJetHF::Terminate(Option_t *) | |
713 | { | |
714 | cout<<"###########################"<<endl; | |
715 | cout<<"#### Task Finished ####"<<endl; | |
716 | cout<<"###########################"<<endl; | |
717 | cout<<"###########################"<<endl; | |
718 | } // end of terminate | |
719 | ||
91b7e743 | 720 | |
721 | //________________________________________________________________________ | |
722 | void AliAnalysisTaskEmcalJetHF::CheckClusTrackMatchingQA() | |
723 | { | |
724 | ||
725 | if(!fTracksCont || !fCaloClustersCont) return; | |
726 | ||
727 | Int_t trkcounter = 0; | |
728 | Int_t cluscounter = 0; | |
729 | Double_t deta = 999; | |
730 | Double_t dphi = 999; | |
731 | ||
732 | //Get closest cluster to track | |
733 | AliVTrack *track = static_cast<AliVTrack*>(fTracksCont->GetNextAcceptParticle(0)); | |
734 | while(track) { | |
735 | //if(!track) continue; | |
736 | AliESDtrack *ESDtrackQA1 = static_cast<AliESDtrack*>(track); | |
737 | if(!ESDtrackQA1) continue; | |
738 | if(!fPIDResponse) continue; | |
739 | Double_t pQA1 = track->P(); | |
740 | Double_t nSigmaElectron_TPC_QA1 = fPIDResponse->NumberOfSigmasTPC(ESDtrackQA1,AliPID::kElectron); | |
741 | Double_t nSigmaElectron_TOF_QA1 = fPIDResponse->NumberOfSigmasTOF(ESDtrackQA1,AliPID::kElectron); | |
742 | Double_t dEdxQA1 = ESDtrackQA1->GetTPCsignal(); | |
743 | //Get matched cluster | |
744 | Int_t emc1 = track->GetEMCALcluster(); | |
745 | if(fCaloClustersCont && emc1>=0) { | |
746 | AliVCluster *clusMatch = fCaloClustersCont->GetCluster(emc1); | |
747 | //if(!clusMatch) continue; | |
748 | if(clusMatch) { | |
749 | Double_t ClusterE_QA1 = clusMatch->E(); | |
750 | Double_t EovPQA1 = ClusterE_QA1/pQA1; | |
751 | Float_t pos_mc1[3]; | |
752 | clusMatch->GetPosition(pos_mc1); // Get cluster position | |
753 | TVector3 mc1(pos_mc1); | |
754 | fHistnSigElecPt->Fill(nSigmaElectron_TPC_QA1,track->Pt()); | |
755 | Double_t HF_tracks3[11] = {track->Pt(), track->P() , track->Eta(), track->Phi(), EovPQA1, dEdxQA1 ,nSigmaElectron_TPC_QA1, nSigmaElectron_TOF_QA1, clusMatch->E(), mc1.PseudoRapidity(),mc1.Phi()}; | |
756 | fhnTrackClusterQA->Fill(HF_tracks3); | |
757 | AliPicoTrack::GetEtaPhiDiff(track, clusMatch, dphi, deta); | |
758 | fHistPtDEtaDPhiTrackClus->Fill(track->Pt(),deta,dphi); | |
759 | cluscounter++; | |
760 | }//clus matching | |
761 | ||
762 | }//matched cluster | |
763 | ||
764 | track = static_cast<AliVTrack*>(fTracksCont->GetNextAcceptParticle()); | |
765 | trkcounter++; | |
766 | }//track loop | |
767 | /* | |
768 | //Get closest track to cluster | |
769 | AliVCluster *cluster = fCaloClustersCont->GetNextAcceptCluster(0); | |
770 | while(cluster) { | |
771 | if(!cluster) continue; | |
772 | ||
773 | Double_t ClusterE_QA2 = cluster->E(); | |
774 | //Double_t EovPQA1 = ClusterE_QA1/pQA1; | |
775 | Float_t pos_mc2[3]; | |
776 | cluster->GetPosition(pos_mc2); // Get cluster position | |
777 | TVector3 mc2(pos_mc2); | |
778 | ||
779 | TLorentzVector nPart; | |
780 | cluster->GetMomentum(nPart, fVertex); | |
781 | ||
782 | //Get matched track | |
783 | AliVTrack *mt = NULL; | |
784 | AliAODCaloCluster *acl = dynamic_cast<AliAODCaloCluster*>(cluster); | |
785 | if(!acl) continue; | |
786 | if(acl) { | |
787 | if(acl->GetNTracksMatched()>1) | |
788 | mt = static_cast<AliVTrack*>(acl->GetTrackMatched(0)); | |
789 | if(!mt) continue; | |
790 | AliESDtrack *ESDtrackQA2 = static_cast<AliESDtrack*>(mt); | |
791 | if(!ESDtrackQA2) continue; | |
792 | Double_t nSigmaElectron_TPC_QA2 = fPIDResponse->NumberOfSigmasTPC(ESDtrackQA1,AliPID::kElectron); | |
793 | Double_t nSigmaElectron_TOF_QA2 = fPIDResponse->NumberOfSigmasTOF(ESDtrackQA1,AliPID::kElectron); | |
794 | Double_t dEdxQA1 = ESDtrackQA2->GetTPCsignal(); | |
795 | Double_t EovPQA2 = -999; | |
796 | Double_t pQA2 = mt->P(); | |
797 | EovPQA2 = ClusterE_QA2/pQA2; | |
798 | ||
799 | //Double_t HF_tracks4[11] = {mt->Pt(), mt->P() , mt->Eta(), mt->Phi(), EovPQA2, dEdxQA2 ,nSigmaElectron_TPC_QA2, nSigmaElectron_TOF_QA2, mc2.PseudoRapidity(),mc2.Phi()}; | |
800 | //fhnClusterTrackQA->Fill(HF_tracks4); | |
801 | } | |
802 | else { | |
803 | AliESDCaloCluster *ecl = dynamic_cast<AliESDCaloCluster*>(cluster); | |
804 | if(!ecl) continue; | |
805 | Int_t im = ecl->GetTrackMatchedIndex(); | |
806 | if(fTracksCont && im>=0) { | |
807 | mt = static_cast<AliVTrack*>(fTracksCont->GetParticle(im)); | |
808 | if(!mt) continue | |
809 | } | |
810 | } | |
811 | AliPicoTrack::GetEtaPhiDiff(mt, cluster, dphi, deta); | |
812 | fHistPtDEtaDPhiClusTrack->Fill(nPart.Pt(),deta,dphi); | |
813 | cluster = fCaloClustersCont->GetNextAcceptCluster(); | |
814 | } | |
815 | } | |
816 | */ | |
817 | /* | |
818 | //Get closest track to cluster | |
819 | AliVCluster *cluster = fCaloClustersCont->GetNextAcceptCluster(0); | |
820 | while(cluster) { | |
821 | if(!cluster){ | |
822 | AliError(Form("Couldn't get CtoT AliCluster Container")); | |
823 | continue; | |
824 | } | |
825 | Double_t ClusterE_QA2 = cluster->E(); | |
826 | Float_t pos_mc2[3]; | |
827 | cluster->GetPosition(pos_mc2); // Get cluster position | |
828 | TVector3 mc2(pos_mc2); | |
829 | TLorentzVector nPart; | |
830 | cluster->GetMomentum(nPart, fVertex); | |
831 | //Get matched track | |
832 | AliVTrack *mt = NULL; | |
833 | AliESDCaloCluster *ecl = dynamic_cast<AliESDCaloCluster*>(cluster); | |
834 | if(!ecl){ | |
835 | AliError(Form("Couldn't get CtoT AliESDCluster Container %d\n")); | |
836 | continue; | |
837 | } | |
838 | Int_t im = ecl->GetTrackMatchedIndex(); | |
839 | if(fTracksCont && im>=0) { | |
840 | //mt = static_cast<AliVTrack*>(fTracksCont->GetParticle(im)); | |
841 | //if(!mt){ | |
842 | //AliError(Form("Couldn't get CT AliVTrack Container %d\n",im)); | |
843 | //continue; | |
844 | // } | |
845 | //AliPicoTrack::GetEtaPhiDiff(mt, cluster, dphi, deta); | |
846 | fHistPtDEtaDPhiClusTrack->Fill(nPart.Pt(),deta,dphi); | |
847 | AliESDtrack *ESDtrackQA2 = static_cast<AliESDtrack*>(mt); | |
848 | if(!ESDtrackQA2){ | |
849 | AliError(Form("Couldn't get CT AliESDTrack Container %d\n")); | |
850 | continue; | |
851 | } | |
852 | Double_t nSigmaElectron_TPC_QA2 = fPIDResponse->NumberOfSigmasTPC(ESDtrackQA2,AliPID::kElectron); | |
853 | Double_t nSigmaElectron_TOF_QA2 = fPIDResponse->NumberOfSigmasTOF(ESDtrackQA2,AliPID::kElectron); | |
854 | Double_t dEdxQA1 = ESDtrackQA2->GetTPCsignal(); | |
855 | Double_t EovPQA2 = -999; | |
856 | Double_t pQA2 = mt->P(); | |
857 | EovPQA2 = ClusterE_QA2/pQA2; | |
858 | ||
859 | ||
860 | } | |
861 | //cluster = fCaloClustersCont->GetNextAcceptCluster(); | |
862 | cluster = static_cast<AliVCluster*>(fCaloClustersCont->GetNextAcceptCluster()); | |
863 | } | |
864 | */ | |
865 | } | |
866 | ||
867 | ||
47d82e4b | 868 | //________________________________________________________________________ |
869 | Int_t AliAnalysisTaskEmcalJetHF::AcceptMyJet(AliEmcalJet *jet) { | |
870 | //applies all jet cuts except pt | |
871 | if ((jet->Phi()<fPhimin)||(jet->Phi()>fPhimax)) return 0; | |
872 | if ((jet->Eta()<fEtamin)||(jet->Eta()>fEtamax)) return 0; | |
873 | if (jet->Area()<fAreacut) return 0; | |
874 | // prevents 0 area jets from sneaking by when area cut == 0 | |
875 | if (jet->Area()==0) return 0; | |
876 | //exclude jets with extremely high pt tracks which are likely misreconstructed | |
877 | if(jet->MaxTrackPt()>100) return 0; | |
878 | ||
879 | //passed all above cuts | |
880 | return 1; | |
881 | } | |
882 | ||
5e5a2b89 | 883 | //________________________________________________________________________ |
884 | Int_t AliAnalysisTaskEmcalJetHF::GetCentBin(Double_t cent) const | |
885 | { // Get centrality bin. | |
886 | ||
887 | Int_t centbin = -1; | |
888 | if (cent>=0 && cent<10) | |
889 | centbin = 0; | |
890 | else if (cent>=10 && cent<20) | |
891 | centbin = 1; | |
892 | else if (cent>=20 && cent<30) | |
893 | centbin = 2; | |
894 | else if (cent>=30 && cent<40) | |
895 | centbin = 3; | |
896 | else if (cent>=40 && cent<50) | |
897 | centbin = 4; | |
898 | else if (cent>=50 && cent<90) | |
899 | centbin = 5; | |
900 | return centbin; | |
91b7e743 | 901 | } |
902 | ||
903 | //________________________________________________________________________________ | |
904 | /* | |
905 | void AliAnalysisTaskEmcalJetHF::FlagFlavour(AliEmcalJet *jet){ | |
906 | ||
907 | AliEmcalJet::EFlavourTag tag=AliEmcalJet::kDStar; | |
908 | if (fCandidateType==kD0toKpi) tag=AliEmcalJet::kD0; | |
909 | if (fIsDInJet) jet->AddFlavourTag(tag); | |
910 | ||
911 | return; | |
912 | ||
913 | } | |
914 | */ | |
915 | //____________________________________________________________________________________________ | |
5e5a2b89 | 916 | THnSparse* AliAnalysisTaskEmcalJetHF::NewTHnSparseDHF(const char* name, UInt_t entries) |
917 | { | |
918 | // generate new THnSparseD PID, axes are defined in GetDimParams() | |
919 | Int_t count = 0; | |
920 | UInt_t tmp = entries; | |
921 | while(tmp!=0){ | |
922 | count++; | |
923 | tmp = tmp &~ -tmp; // clear lowest bit | |
924 | } | |
925 | ||
926 | TString hnTitle(name); | |
927 | const Int_t dim = count; | |
928 | Int_t nbins[dim]; | |
929 | Double_t xmin[dim]; | |
930 | Double_t xmax[dim]; | |
931 | ||
932 | Int_t i=0; | |
933 | Int_t c=0; | |
934 | while(c<dim && i<32){ | |
935 | if(entries&(1<<i)){ | |
936 | ||
937 | TString label(""); | |
938 | GetDimParamsHF(i, label, nbins[c], xmin[c], xmax[c]); | |
939 | hnTitle += Form(";%s",label.Data()); | |
940 | c++; | |
941 | } | |
942 | ||
943 | i++; | |
944 | } | |
945 | hnTitle += ";"; | |
946 | ||
947 | return new THnSparseD(name, hnTitle.Data(), dim, nbins, xmin, xmax); | |
08f52641 | 948 | } // end of NewTHnSparseF PID |
949 | ||
950 | THnSparse* AliAnalysisTaskEmcalJetHF::NewTHnSparseDJetQA(const char* name, UInt_t entries) | |
951 | { | |
952 | // generate new THnSparseD JetQA, axes are defined in GetDimParamsJetQA() | |
953 | Int_t count = 0; | |
954 | UInt_t tmp = entries; | |
955 | while(tmp!=0){ | |
956 | count++; | |
957 | tmp = tmp &~ -tmp; // clear lowest bit | |
958 | } | |
959 | ||
960 | TString hnTitle(name); | |
961 | const Int_t dim = count; | |
962 | Int_t nbins[dim]; | |
963 | Double_t xmin[dim]; | |
964 | Double_t xmax[dim]; | |
965 | ||
966 | Int_t i=0; | |
967 | Int_t c=0; | |
968 | while(c<dim && i<32){ | |
969 | if(entries&(1<<i)){ | |
970 | ||
971 | TString label(""); | |
972 | GetDimParamsJetQA(i, label, nbins[c], xmin[c], xmax[c]); | |
973 | hnTitle += Form(";%s",label.Data()); | |
974 | c++; | |
975 | } | |
976 | ||
977 | i++; | |
978 | } | |
979 | hnTitle += ";"; | |
980 | ||
981 | return new THnSparseD(name, hnTitle.Data(), dim, nbins, xmin, xmax); | |
982 | } // end of NewTHnSparseF JetQA | |
983 | ||
5e5a2b89 | 984 | |
985 | void AliAnalysisTaskEmcalJetHF::GetDimParamsHF(Int_t iEntry, TString &label, Int_t &nbins, Double_t &xmin, Double_t &xmax) | |
986 | { | |
987 | // stores label and binning of axis for THnSparse | |
988 | const Double_t pi = TMath::Pi(); | |
989 | ||
990 | switch(iEntry){ | |
991 | ||
992 | case 0: | |
993 | label = "V0 centrality (%)"; | |
994 | nbins = 10; | |
995 | xmin = 0.; | |
996 | xmax = 100.; | |
997 | break; | |
998 | ||
999 | case 1: | |
1000 | label = "Track p_{T}"; | |
91b7e743 | 1001 | nbins = 300; |
5e5a2b89 | 1002 | xmin = 0.; |
1003 | xmax = 75.; | |
1004 | break; | |
1005 | ||
1006 | case 2: | |
1007 | label = "Track p"; | |
91b7e743 | 1008 | nbins = 300; |
5e5a2b89 | 1009 | xmin = 0.; |
1010 | xmax = 75.; | |
1011 | break; | |
1012 | ||
1013 | case 3: | |
1014 | label = "Track Eta"; | |
91b7e743 | 1015 | nbins = 48; |
1016 | xmin = -1.2; | |
1017 | xmax = 1.2; | |
5e5a2b89 | 1018 | break; |
1019 | ||
1020 | case 4: | |
1021 | label = "Track Phi"; | |
1022 | nbins = 72; | |
1023 | xmin = 0; | |
1024 | xmax = 2*pi; | |
1025 | break; | |
1026 | ||
1027 | case 5: | |
1028 | label = "E/p of track"; | |
1029 | nbins = 400; | |
1030 | xmin = 0; | |
1031 | xmax = 4.0; | |
1032 | break; | |
1033 | ||
1034 | case 6: | |
1035 | label = "DCA xy"; | |
1036 | nbins = 20; | |
1037 | xmin = -10; | |
1038 | xmax = 10; | |
1039 | break; | |
1040 | ||
1041 | case 7: | |
1042 | label = "DCA z"; | |
1043 | nbins = 20; | |
1044 | xmin = -10; | |
1045 | xmax = 10; | |
1046 | break; | |
1047 | ||
1048 | case 8: | |
1049 | label = "dEdX of track - TPC"; | |
1050 | nbins = 300; | |
1051 | xmin = 0; | |
1052 | xmax = 300; | |
1053 | break; | |
1054 | ||
1055 | case 9: | |
1056 | label = "nSigma electron TPC"; | |
1057 | nbins = 50; | |
1058 | xmin = -5; | |
1059 | xmax = 5; | |
1060 | break; | |
1061 | ||
1062 | case 10: | |
1063 | label = "nSigma electron TOF"; | |
1064 | nbins = 50; | |
1065 | xmin = -5; | |
1066 | xmax = 5; | |
1067 | break; | |
1068 | ||
1069 | case 11: | |
1070 | label = "nSigma electron Emcal"; | |
1071 | nbins = 50; | |
1072 | xmin = -5; | |
1073 | xmax = 5; | |
1074 | break; | |
91b7e743 | 1075 | |
1076 | case 12: | |
1077 | label = "Jet pT"; | |
1078 | nbins = 40; | |
1079 | xmin = 0; | |
1080 | xmax = 200; | |
1081 | break; | |
1082 | ||
1083 | case 13: | |
1084 | label = "Jet Phi"; | |
1085 | nbins = 72; | |
1086 | xmin = 0; | |
1087 | xmax = 2*pi; | |
1088 | break; | |
1089 | ||
1090 | case 14: | |
1091 | label = "Jet Eta"; | |
1092 | nbins = 24; | |
1093 | xmin = -1.2; | |
1094 | xmax = 1.2; | |
1095 | break; | |
1096 | ||
1097 | case 15: | |
1098 | label = "Cluster Energy"; | |
1099 | nbins = 150; | |
1100 | xmin = 0; | |
1101 | xmax = 15; | |
1102 | break; | |
1103 | ||
1104 | case 16: | |
1105 | label = "Cluster Eta"; | |
1106 | nbins = 24; | |
1107 | xmin = -1.2; | |
1108 | xmax = 1.2; | |
1109 | break; | |
1110 | ||
1111 | case 17: | |
1112 | label = "Cluster Phi"; | |
1113 | nbins = 72; | |
1114 | xmin = 0; | |
1115 | xmax = 2*pi; | |
1116 | break; | |
1117 | ||
5e5a2b89 | 1118 | |
1119 | ||
91b7e743 | 1120 | } // end of switch |
08f52641 | 1121 | } // end of getting dim-params |
1122 | ||
1123 | void AliAnalysisTaskEmcalJetHF::GetDimParamsJetQA(Int_t iEntry, TString &label, Int_t &nbins, Double_t &xmin, Double_t &xmax) | |
1124 | { | |
1125 | // stores label and binning of axis for THnSparse | |
1126 | const Double_t pi = TMath::Pi(); | |
1127 | ||
1128 | switch(iEntry){ | |
1129 | ||
1130 | case 0: | |
1131 | label = "number of Jets in Event"; | |
91b7e743 | 1132 | nbins = 100; |
08f52641 | 1133 | xmin = 0.; |
91b7e743 | 1134 | xmax = 100.; |
08f52641 | 1135 | break; |
1136 | ||
1137 | case 1: | |
1138 | label = "number of Clusters in a Jet"; | |
1139 | nbins = 100; | |
1140 | xmin = 0.; | |
1141 | xmax = 100.; | |
1142 | break; | |
1143 | ||
1144 | case 2: | |
1145 | label = "number of Tracks in a Jet"; | |
1146 | nbins = 100; | |
1147 | xmin = 0.; | |
1148 | xmax = 100.; | |
1149 | break; | |
1150 | ||
1151 | case 3: | |
1152 | label = "Jet Eta"; | |
1153 | nbins = 24; | |
1154 | xmin = -1.2; | |
1155 | xmax = 1.2; | |
1156 | break; | |
1157 | ||
1158 | case 4: | |
1159 | label = "Jet Phi"; | |
1160 | nbins = 72; | |
1161 | xmin = 0; | |
1162 | xmax = 2*pi; | |
1163 | break; | |
1164 | ||
1165 | case 5: | |
1166 | label = "Cluster Energy"; | |
91b7e743 | 1167 | nbins = 150; |
08f52641 | 1168 | xmin = 0; |
91b7e743 | 1169 | xmax = 15; |
08f52641 | 1170 | break; |
1171 | ||
1172 | case 6: | |
1173 | label = "Cluster Eta"; | |
1174 | nbins = 24; | |
1175 | xmin = -1.2; | |
1176 | xmax = 1.2; | |
1177 | break; | |
1178 | ||
1179 | case 7: | |
1180 | label = "Cluster Phi"; | |
1181 | nbins = 72; | |
1182 | xmin = 0; | |
1183 | xmax = 2*pi; | |
1184 | break; | |
1185 | ||
1186 | case 8: | |
1187 | label = "Is EMCalCluster"; | |
1188 | nbins = 2; | |
1189 | xmin = 0; | |
1190 | xmax = 2; | |
1191 | break; | |
1192 | ||
1193 | case 9: | |
1194 | label = "Number of Matched Tracks to Cluster"; | |
1195 | nbins = 60; | |
1196 | xmin = 0; | |
1197 | xmax = 60; | |
1198 | break; | |
1199 | ||
1200 | case 10: | |
1201 | label = "Track Pt"; | |
91b7e743 | 1202 | nbins = 300; |
08f52641 | 1203 | xmin = 0; |
1204 | xmax = 75; | |
1205 | break; | |
1206 | ||
1207 | case 11: | |
1208 | label = "Track Eta"; | |
1209 | nbins = 24; | |
1210 | xmin = -1.2; | |
1211 | xmax = 1.2; | |
1212 | break; | |
1213 | ||
1214 | case 12: | |
1215 | label= "Track Phi"; | |
1216 | nbins = 72; | |
1217 | xmin = 0; | |
1218 | xmax = 2*pi; | |
1219 | break; | |
1220 | ||
1221 | case 13: | |
1222 | label="Is Track EMCal"; | |
1223 | nbins = 2; | |
1224 | xmin = 0; | |
1225 | xmax = 2; | |
1226 | break; | |
1227 | ||
1228 | case 14: | |
1229 | label = "Get Track EMCal Cluster"; | |
1230 | nbins = 100; | |
1231 | xmin = 0; | |
1232 | xmax = 100; | |
1233 | break; | |
1234 | ||
1235 | case 15: | |
1236 | label = "Track Matched Phi"; | |
1237 | nbins = 72; | |
1238 | xmin = 0; | |
1239 | xmax = 2*pi; | |
1240 | ||
1241 | ||
1242 | ||
1243 | ||
1244 | } // end of switch | |
1245 | } // end of getting dim-params | |
1246 | ||
5e5a2b89 | 1247 | |
1248 |