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