1 /**************************************************************************
2 * Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
4 * Author: The ALICE Off-line Project. *
5 * Contributors are mentioned in the code where appropriate. *
7 * Permission to use, copy, modify and distribute this software and its *
8 * documentation strictly for non-commercial purposes is hereby granted *
9 * without fee, provided that the above copyright notice appears in all *
10 * copies and that both the copyright notice and this permission notice *
11 * appear in the supporting documentation. The authors make no claims *
12 * about the suitability of this software for any purpose. It is *
13 * provided "as is" without express or implied warranty. *
14 **************************************************************************/
16 //-----------------------------------------------------------------------
17 // This class compares the global reconstruction with the TPConly
19 // Momentum resolution is stored as function of track cuts and pt.
20 // Output: Histograms for different set of cuts
21 //-----------------------------------------------------------------------
22 // Author : Marta Verweij - UU
23 //-----------------------------------------------------------------------
25 #ifndef ALIPWG4HIGHPTQATPCONLY_CXX
26 #define ALIPWG4HIGHPTQATPCONLY_CXX
28 #include "AliPWG4HighPtQATPConly.h"
41 #include "AliAnalysisManager.h"
42 #include "AliESDInputHandler.h"
43 #include "AliESDtrack.h"
44 #include "AliESDfriend.h"
45 #include "AliESDfriendTrack.h"
46 #include "AliESDtrackCuts.h"
47 #include "AliExternalTrackParam.h"
49 //#include "AliAnalysisHelperJetTasks.h"
52 #include "TParticle.h"
54 #include "AliMCEvent.h"
55 #include "AliMCEventHandler.h"
57 using namespace std; //required for resolving the 'cout' symbol
59 ClassImp(AliPWG4HighPtQATPConly)
61 AliPWG4HighPtQATPConly::AliPWG4HighPtQATPConly(): AliAnalysisTask("AliPWG4HighPtQATPConly", ""),
67 fMaxCosmicAngle(0.002),
72 fPtAllminPtTPCvsPtAll(0),
73 fPtAllminPtTPCvsPtAllNPointTPC(0),
74 fPtAllminPtTPCvsPtAllNPointTPCS(0),
75 fPtAllminPtTPCvsPtAllDCAR(0),
76 fPtAllminPtTPCvsPtAllDCAZ(0),
77 fPtAllminPtTPCvsPtAllPhi(0),
78 fPtAllminPtTPCvsPtAllNPointITS(0),
79 fPtAllminPtTPCvsPtAllNSigmaToVertex(0),
80 fPtAllminPtTPCvsPtAllChi2C(0),
81 fPtAllminPtTPCvsPtAllRel1PtUncertainty(0),
82 fPtAllminPtTPCvsPtAllChi2PerNClusTPC(0),
83 fPtAllminPtTPCvsPtAllChi2PerNClusITS(0),
84 fPtAllminPtTPCvsNPointTPCPhi(0),
85 fPtAllminPtTPCvsNPointITSPhi(0),
86 fPtAllminPtTPCvsRel1PtUncertaintyPhi(0),
89 fPtITSouterminPtTPCvsPtAll(0),
90 fPtITSouterminPtTPCvsPtAllNPointTPC(0),
91 fPtITSouterminPtTPCvsPtAllNPointTPCS(0),
92 fPtITSouterminPtTPCvsPtAllDCAR(0),
93 fPtITSouterminPtTPCvsPtAllDCAZ(0),
94 fPtITSouterminPtTPCvsPtAllPhi(0),
95 fPtITSouterminPtTPCvsPtAllNPointITS(0),
96 fPtITSouterminPtTPCvsPtAllNSigmaToVertex(0),
97 fPtITSouterminPtTPCvsPtAllChi2C(0),
98 fPtITSouterminPtTPCvsPtAllRel1PtUncertainty(0),
99 fPtITSouterminPtTPCvsPtAllChi2PerNClusTPC(0),
100 fPtITSouterminPtTPCvsPtAllChi2PerNClusITS(0),
101 fPtITSouterminPtTPCvsPtAllITSLayer0(0),
102 fPtITSouterminPtTPCvsPtAllITSLayer1(0),
103 fPtITSouterminPtTPCvsPtAllITSLayer2(0),
104 fPtITSouterminPtTPCvsPtAllITSLayer3(0),
105 fPtITSouterminPtTPCvsPtAllITSLayer4(0),
106 fPtITSouterminPtTPCvsPtAllITSLayer5(0),
107 fPtITSouterminPtTPCvsPtAllNoSPD(0),
108 fPtITSouterminPtTPCvsPtAllNoSDD(0),
109 fPtITSouterminPtTPCvsPtAllNoSSD(0),
110 fPtITSouterminPtTPCvsPtAllChi2PerNClusITSLayer0(0),
111 fPtITSouterminPtTPCvsPtAllChi2PerNClusITSLayer1(0),
112 fPtITSouterminPtTPCvsPtAllChi2PerNClusITSLayer2(0),
113 fPtITSouterminPtTPCvsPtAllChi2PerNClusITSLayer3(0),
114 fPtITSouterminPtTPCvsPtAllChi2PerNClusITSLayer4(0),
115 fPtITSouterminPtTPCvsPtAllChi2PerNClusITSLayer5(0),
116 fPtITSouterminPtTPCvsPtAllChi2PerNClusITSNoSPD(0),
117 fPtITSouterminPtTPCvsPtAllChi2PerNClusITSNoSDD(0),
118 fPtITSouterminPtTPCvsPtAllChi2PerNClusITSNoSSD(0),
125 fPtITSminPtTPCvsPtITS(0),
126 fPtITSminPtTPCvsPtITSNPointTPC(0),
127 fPtITSminPtTPCvsPtITSNPointTPCS(0),
128 fPtITSminPtTPCvsPtITSDCAR(0),
129 fPtITSminPtTPCvsPtITSDCAZ(0),
130 fPtITSminPtTPCvsPtITSPhi(0),
131 fPtITSminPtTPCvsPtITSNPointITS(0),
132 fPtITSminPtTPCvsPtITSNSigmaToVertex(0),
133 fPtITSminPtTPCvsPtITSChi2C(0),
134 fPtITSminPtTPCvsPtITSRel1PtUncertainty(0),
135 fPtITSminPtTPCvsPtITSChi2PerNClusTPC(0),
136 fPtITSminPtTPCvsPtITSChi2PerNClusITS(0),
137 fPtITSminPtTPCvsNPointTPCPhi(0),
138 fPtITSminPtTPCvsNPointITSPhi(0),
139 fPtITSminPtTPCvsRel1PtUncertaintyPhi(0),
140 fPtRel1PtUncertaintyChi2PerClusTPC(0),
141 fPtNPointTPCSChi2PerClusTPC(0),
142 fPtNPointTPCSRel1PtUncertainty(0),
143 fPtRel1PtUncertaintyChi2PerClusTPCSharedSel(0),
145 fPtCosmicCandidates(0),
146 fDeltaPtCosmicCandidates(0),
153 //________________________________________________________________________
154 AliPWG4HighPtQATPConly::AliPWG4HighPtQATPConly(const char *name):
155 AliAnalysisTask(name, ""),
161 fMaxCosmicAngle(0.002),
166 fPtAllminPtTPCvsPtAll(0),
167 fPtAllminPtTPCvsPtAllNPointTPC(0),
168 fPtAllminPtTPCvsPtAllNPointTPCS(0),
169 fPtAllminPtTPCvsPtAllDCAR(0),
170 fPtAllminPtTPCvsPtAllDCAZ(0),
171 fPtAllminPtTPCvsPtAllPhi(0),
172 fPtAllminPtTPCvsPtAllNPointITS(0),
173 fPtAllminPtTPCvsPtAllNSigmaToVertex(0),
174 fPtAllminPtTPCvsPtAllChi2C(0),
175 fPtAllminPtTPCvsPtAllRel1PtUncertainty(0),
176 fPtAllminPtTPCvsPtAllChi2PerNClusTPC(0),
177 fPtAllminPtTPCvsPtAllChi2PerNClusITS(0),
178 fPtAllminPtTPCvsNPointTPCPhi(0),
179 fPtAllminPtTPCvsNPointITSPhi(0),
180 fPtAllminPtTPCvsRel1PtUncertaintyPhi(0),
183 fPtITSouterminPtTPCvsPtAll(0),
184 fPtITSouterminPtTPCvsPtAllNPointTPC(0),
185 fPtITSouterminPtTPCvsPtAllNPointTPCS(0),
186 fPtITSouterminPtTPCvsPtAllDCAR(0),
187 fPtITSouterminPtTPCvsPtAllDCAZ(0),
188 fPtITSouterminPtTPCvsPtAllPhi(0),
189 fPtITSouterminPtTPCvsPtAllNPointITS(0),
190 fPtITSouterminPtTPCvsPtAllNSigmaToVertex(0),
191 fPtITSouterminPtTPCvsPtAllChi2C(0),
192 fPtITSouterminPtTPCvsPtAllRel1PtUncertainty(0),
193 fPtITSouterminPtTPCvsPtAllChi2PerNClusTPC(0),
194 fPtITSouterminPtTPCvsPtAllChi2PerNClusITS(0),
195 fPtITSouterminPtTPCvsPtAllITSLayer0(0),
196 fPtITSouterminPtTPCvsPtAllITSLayer1(0),
197 fPtITSouterminPtTPCvsPtAllITSLayer2(0),
198 fPtITSouterminPtTPCvsPtAllITSLayer3(0),
199 fPtITSouterminPtTPCvsPtAllITSLayer4(0),
200 fPtITSouterminPtTPCvsPtAllITSLayer5(0),
201 fPtITSouterminPtTPCvsPtAllNoSPD(0),
202 fPtITSouterminPtTPCvsPtAllNoSDD(0),
203 fPtITSouterminPtTPCvsPtAllNoSSD(0),
204 fPtITSouterminPtTPCvsPtAllChi2PerNClusITSLayer0(0),
205 fPtITSouterminPtTPCvsPtAllChi2PerNClusITSLayer1(0),
206 fPtITSouterminPtTPCvsPtAllChi2PerNClusITSLayer2(0),
207 fPtITSouterminPtTPCvsPtAllChi2PerNClusITSLayer3(0),
208 fPtITSouterminPtTPCvsPtAllChi2PerNClusITSLayer4(0),
209 fPtITSouterminPtTPCvsPtAllChi2PerNClusITSLayer5(0),
210 fPtITSouterminPtTPCvsPtAllChi2PerNClusITSNoSPD(0),
211 fPtITSouterminPtTPCvsPtAllChi2PerNClusITSNoSDD(0),
212 fPtITSouterminPtTPCvsPtAllChi2PerNClusITSNoSSD(0),
219 fPtITSminPtTPCvsPtITS(0),
220 fPtITSminPtTPCvsPtITSNPointTPC(0),
221 fPtITSminPtTPCvsPtITSNPointTPCS(0),
222 fPtITSminPtTPCvsPtITSDCAR(0),
223 fPtITSminPtTPCvsPtITSDCAZ(0),
224 fPtITSminPtTPCvsPtITSPhi(0),
225 fPtITSminPtTPCvsPtITSNPointITS(0),
226 fPtITSminPtTPCvsPtITSNSigmaToVertex(0),
227 fPtITSminPtTPCvsPtITSChi2C(0),
228 fPtITSminPtTPCvsPtITSRel1PtUncertainty(0),
229 fPtITSminPtTPCvsPtITSChi2PerNClusTPC(0),
230 fPtITSminPtTPCvsPtITSChi2PerNClusITS(0),
231 fPtITSminPtTPCvsNPointTPCPhi(0),
232 fPtITSminPtTPCvsNPointITSPhi(0),
233 fPtITSminPtTPCvsRel1PtUncertaintyPhi(0),
234 fPtRel1PtUncertaintyChi2PerClusTPC(0),
235 fPtNPointTPCSChi2PerClusTPC(0),
236 fPtNPointTPCSRel1PtUncertainty(0),
237 fPtRel1PtUncertaintyChi2PerClusTPCSharedSel(0),
239 fPtCosmicCandidates(0),
240 fDeltaPtCosmicCandidates(0),
246 // Constructor. Initialization of Inputs and Outputs
248 Info("AliPWG4HighPtQATPConly","Calling Constructor");
249 // Input slot #0 works with a TChain ESD
250 DefineInput(0, TChain::Class());
251 // Output slot #0 writes into a TList
252 DefineOutput(0, TList::Class());
253 // Output slot #1 writes into a TList
254 DefineOutput(1, TList::Class());
255 // Output slot #2 writes into a TList
256 DefineOutput(2, TList::Class());
257 // Output slot #3 writes into a TList
258 DefineOutput(3, TList::Class());
261 //________________________________________________________________________
262 void AliPWG4HighPtQATPConly::ConnectInputData(Option_t *)
266 AliDebug(2,Form(">> AliPWG4HighPtSpectra::ConnectInputData \n"));
267 TTree* tree = dynamic_cast<TTree*> (GetInputData(0));
269 AliDebug(2,Form( "ERROR: Could not read chain from input slot 0 \n"));
273 AliESDInputHandler *esdH = dynamic_cast<AliESDInputHandler*> (AliAnalysisManager::GetAnalysisManager()->GetInputEventHandler());
276 AliDebug(2,Form("ERROR: Could not get ESDInputHandler"));
279 fESD = esdH->GetEvent();
281 AliMCEventHandler *eventHandler = dynamic_cast<AliMCEventHandler*> (AliAnalysisManager::GetAnalysisManager()->GetMCtruthEventHandler());
282 // AliMCEventHandler* mcH = dynamic_cast<AliMCEventHandler*>
283 // (AliAnalysisManager::GetAnalysisManager()->GetMCtruthEventHandler());
285 AliDebug(2,Form( "ERROR: Could not retrieve MC event handler \n"));
288 fMC = eventHandler->MCEvent();
290 //attach the ESD friend
291 // tree->SetBranchStatus("*", kTRUE);
292 // tree->SetBranchStatus("Tracks*", kTRUE);
293 // tree->SetBranchStatus("ESDfriend*", kTRUE);
294 // fESD->ReadFromTree(tree);
296 fESDfriend = (AliESDfriend*)fESD->FindListObject("AliESDfriend");
299 // works for both, we just want to avoid setting the branch adress twice
300 // in case of the new ESD
301 tree->SetBranchAddress("ESDfriend.",&fESDfriend);
306 //________________________________________________________________________
307 void AliPWG4HighPtQATPConly::CreateOutputObjects() {
308 //Create output objects
309 AliDebug(2,Form(">> AliPWG4HighPtQATPConly::CreateOutputObjects \n"));
311 Bool_t oldStatus = TH1::AddDirectoryStatus();
312 TH1::AddDirectory(kFALSE);
315 fHistList = new TList();
317 fHistListTPC = new TList();
319 fHistListITS = new TList();
321 fHistListCosmics = new TList();
324 Int_t fgkNPhiBins=36;
325 Float_t kMinPhi = 0.;
326 Float_t kMaxPhi = 2.*TMath::Pi();
329 Float_t fgkPtMax=100.;
330 Int_t fgkNPtBins=(int)(fgkPtMax-fgkPtMin);
332 Float_t fgkChi2PerClusMin = 0.;
333 Float_t fgkChi2PerClusMax = 4.;
334 Int_t fgkChi2PerClusBins = (int)(fgkChi2PerClusMax*10.);
337 Int_t fgkResPtBins=80;
339 fNEventAll = new TH1F("fNEventAll","NEventAll",1,-0.5,0.5);
340 fHistList->Add(fNEventAll);
341 fNEventSel = new TH1F("fNEventSel","NEvent Selected for analysis",1,-0.5,0.5);
342 fHistList->Add(fNEventSel);
343 fPtAll = new TH1F("fPtAll","PtAll",fgkNPtBins, fgkPtMin, fgkPtMax);
344 fHistList->Add(fPtAll);
345 fPtSel = new TH1F("fPtSel","PtSel",fgkNPtBins, fgkPtMin, fgkPtMax);
346 fHistList->Add(fPtSel);
348 fPtAllminPtTPCvsPtAll = new TH2F("fPtAllminPtTPCvsPtAll","PtAllminPtTPCvsPtAll",fgkNPtBins, fgkPtMin,fgkPtMax,fgkResPtBins,-1.,1.);
349 fPtAllminPtTPCvsPtAll->SetXTitle("p_{t}^{Global}");
350 fPtAllminPtTPCvsPtAll->SetYTitle("(1/p_{t}^{Global}-1/p_{t}^{TPC})/(1/p_{t}^{Global})");
351 fHistList->Add(fPtAllminPtTPCvsPtAll);
353 fPtAllminPtTPCvsPtAllNPointTPC = new TH3F("fPtAllminPtTPCvsPtAllNPointTPC","PtAllminPtTPCvsPtAllNPointTPC",fgkNPtBins, fgkPtMin,fgkPtMax,fgkResPtBins,-1.,1.,160,0.5,160.5);
354 fPtAllminPtTPCvsPtAllNPointTPC->SetXTitle("p_{t}^{Global}");
355 fPtAllminPtTPCvsPtAllNPointTPC->SetYTitle("(1/p_{t}^{Global}-1/p_{t}^{TPC})/(1/p_{t}^{Global})");
356 fPtAllminPtTPCvsPtAllNPointTPC->SetZTitle("N_{point,TPC}");
357 fHistList->Add(fPtAllminPtTPCvsPtAllNPointTPC);
359 fPtAllminPtTPCvsPtAllNPointTPCS = new TH3F("fPtAllminPtTPCvsPtAllNPointTPCS","PtAllminPtTPCvsPtAllNPointTPCS",fgkNPtBins, fgkPtMin,fgkPtMax,fgkResPtBins,-1.,1.,100,0.,1.);
360 fPtAllminPtTPCvsPtAllNPointTPCS->SetXTitle("p_{t}^{Global}");
361 fPtAllminPtTPCvsPtAllNPointTPCS->SetYTitle("(1/p_{t}^{Global}-1/p_{t}^{TPC})/(1/p_{t}^{Global})");
362 fPtAllminPtTPCvsPtAllNPointTPCS->SetZTitle("N_{point,TPC}^{Shared}/N_{point,TPC}");
363 fHistList->Add(fPtAllminPtTPCvsPtAllNPointTPCS);
365 fPtAllminPtTPCvsPtAllDCAR = new TH3F("fPtAllminPtTPCvsPtAllDCAR","PtAllminPtTPCvsPtAllDCAR",fgkNPtBins, fgkPtMin,fgkPtMax,fgkResPtBins,-1.,1.,80,-0.2,0.2);
366 fPtAllminPtTPCvsPtAllDCAR->SetXTitle("p_{t}^{Global}");
367 fPtAllminPtTPCvsPtAllDCAR->SetYTitle("(1/p_{t}^{Global}-1/p_{t}^{TPC})/(1/p_{t}^{Global})");
368 fPtAllminPtTPCvsPtAllDCAR->SetZTitle("DCA_{R}");
369 fHistList->Add(fPtAllminPtTPCvsPtAllDCAR);
371 fPtAllminPtTPCvsPtAllDCAZ = new TH3F("fPtAllminPtTPCvsPtAllDCAZ","PtAllminPtTPCvsPtAllDCAZ",fgkNPtBins, fgkPtMin,fgkPtMax,fgkResPtBins,-1.,1.,80,-2.,2.);
372 fPtAllminPtTPCvsPtAllDCAZ->SetXTitle("p_{t}^{Global}");
373 fPtAllminPtTPCvsPtAllDCAZ->SetYTitle("(1/p_{t}^{Global}-1/p_{t}^{TPC})/(1/p_{t}^{Global})");
374 fPtAllminPtTPCvsPtAllDCAZ->SetZTitle("DCA_{Z}");
375 fHistList->Add(fPtAllminPtTPCvsPtAllDCAZ);
377 fPtAllminPtTPCvsPtAllPhi = new TH3F("fPtAllminPtTPCvsPtAllPhi","PtAllminPtTPCvsPtAllPhi",fgkNPtBins, fgkPtMin,fgkPtMax,fgkResPtBins,-1.,1.,fgkNPhiBins,kMinPhi,kMaxPhi);
378 fPtAllminPtTPCvsPtAllPhi->SetXTitle("p_{t}^{Global}");
379 fPtAllminPtTPCvsPtAllPhi->SetYTitle("(1/p_{t}^{Global}-1/p_{t}^{TPC})/(1/p_{t}^{Global})");
380 fPtAllminPtTPCvsPtAllPhi->SetZTitle("#phi");
381 fHistList->Add(fPtAllminPtTPCvsPtAllPhi);
383 fPtAllminPtTPCvsPtAllNPointITS = new TH3F("fPtAllminPtTPCvsPtAllNPointITS","PtAllminPtTPCvsPtAllNPointITS",fgkNPtBins, fgkPtMin,fgkPtMax,fgkResPtBins,-1.,1.,9,-0.5,8.5);
384 fPtAllminPtTPCvsPtAllNPointITS->SetXTitle("p_{t}^{Global}");
385 fPtAllminPtTPCvsPtAllNPointITS->SetYTitle("(1/p_{t}^{Global}-1/p_{t}^{TPC})/(1/p_{t}^{Global})");
386 fPtAllminPtTPCvsPtAllNPointITS->SetZTitle("N_{point,ITS}");
387 fHistList->Add(fPtAllminPtTPCvsPtAllNPointITS);
389 fPtAllminPtTPCvsPtAllNSigmaToVertex = new TH3F("fPtAllminPtTPCvsPtAllNSigmaToVertex","PtAllminPtTPCvsPtAllNSigmaToVertex",fgkNPtBins, fgkPtMin,fgkPtMax,fgkResPtBins,-1.,1.,40,0.,8.);
390 fPtAllminPtTPCvsPtAllNSigmaToVertex->SetXTitle("p_{t}^{Global}");
391 fPtAllminPtTPCvsPtAllNSigmaToVertex->SetYTitle("(1/p_{t}^{Global}-1/p_{t}^{TPC})/(1/p_{t}^{Global})");
392 fPtAllminPtTPCvsPtAllNSigmaToVertex->SetZTitle("N#sigma to vertex");
393 fHistList->Add(fPtAllminPtTPCvsPtAllNSigmaToVertex);
395 fPtAllminPtTPCvsPtAllChi2C = new TH3F("fPtAllminPtTPCvsPtAllChi2C","PtAllminPtTPCvsPtAllChi2C",fgkNPtBins, fgkPtMin,fgkPtMax,fgkResPtBins,-1.,1.,20,0.,10.);
396 fPtAllminPtTPCvsPtAllChi2C->SetXTitle("p_{t}^{Global}");
397 fPtAllminPtTPCvsPtAllChi2C->SetYTitle("(1/p_{t}^{Global}-1/p_{t}^{TPC})/(1/p_{t}^{Global})");
398 fPtAllminPtTPCvsPtAllChi2C->SetZTitle("Constrained #chi^{2}");
399 fHistList->Add(fPtAllminPtTPCvsPtAllChi2C);
401 fPtAllminPtTPCvsPtAllRel1PtUncertainty = new TH3F("fPtAllminPtTPCvsPtAllRel1PtUncertainty","PtAllminPtTPCvsPtAllRel1PtUncertainty",fgkNPtBins, fgkPtMin,fgkPtMax,fgkResPtBins,-1.,1.,30,0.,0.3);
402 fPtAllminPtTPCvsPtAllRel1PtUncertainty->SetXTitle("p_{t}^{Global}");
403 fPtAllminPtTPCvsPtAllRel1PtUncertainty->SetYTitle("(1/p_{t}^{Global}-1/p_{t}^{TPC})/(1/p_{t}^{Global})");
404 fPtAllminPtTPCvsPtAllRel1PtUncertainty->SetZTitle("Rel1PtUncertainty");
405 fHistList->Add(fPtAllminPtTPCvsPtAllRel1PtUncertainty);
407 fPtAllminPtTPCvsPtAllChi2PerNClusTPC = new TH3F("fPtAllminPtTPCvsPtAllChi2PerNClusTPC","PtAllminPtTPCvsPtAllChi2PerNClusTPC",fgkNPtBins, fgkPtMin,fgkPtMax,fgkResPtBins,-1.,1.,fgkChi2PerClusBins,fgkChi2PerClusMin,fgkChi2PerClusMax);
408 fPtAllminPtTPCvsPtAllChi2PerNClusTPC->SetXTitle("p_{t}^{Global}");
409 fPtAllminPtTPCvsPtAllChi2PerNClusTPC->SetYTitle("(1/p_{t}^{Global}-1/p_{t}^{TPC})/(1/p_{t}^{Global})");
410 fPtAllminPtTPCvsPtAllChi2PerNClusTPC->SetZTitle("#chi^{2}/(2*NClusTPC-5)");
411 fHistList->Add(fPtAllminPtTPCvsPtAllChi2PerNClusTPC);
413 fPtAllminPtTPCvsPtAllChi2PerNClusITS = new TH3F("fPtAllminPtTPCvsPtAllChi2PerNClusITS","PtAllminPtTPCvsPtAllChi2PerNClusITS",fgkNPtBins, fgkPtMin,fgkPtMax,fgkResPtBins,-1.,1.,fgkChi2PerClusBins,fgkChi2PerClusMin,fgkChi2PerClusMax);
414 fPtAllminPtTPCvsPtAllChi2PerNClusITS->SetXTitle("p_{t}^{Global}");
415 fPtAllminPtTPCvsPtAllChi2PerNClusITS->SetYTitle("(1/p_{t}^{Global}-1/p_{t}^{TPC})/(1/p_{t}^{Global})");
416 fPtAllminPtTPCvsPtAllChi2PerNClusITS->SetZTitle("#chi^{2}/(2*NClusITS-5)");
417 fHistList->Add(fPtAllminPtTPCvsPtAllChi2PerNClusITS);
419 fPtAllminPtTPCvsNPointTPCPhi = new TH3F("fPtAllminPtTPCvsNPointTPCPhi","PtAllminPtTPCvsNPointTPCPhi",fgkResPtBins,-1,1.,160,0.5,160.5,fgkNPhiBins,kMinPhi,kMaxPhi);
420 fPtAllminPtTPCvsNPointTPCPhi->SetXTitle("(1/p_{t}^{Global}-1/p_{t}^{TPC})/(1/p_{t}^{Global})");
421 fPtAllminPtTPCvsNPointTPCPhi->SetYTitle("N_{point,TPC}");
422 fPtAllminPtTPCvsNPointTPCPhi->SetZTitle("#phi");
423 fHistList->Add(fPtAllminPtTPCvsNPointTPCPhi);
425 fPtAllminPtTPCvsNPointITSPhi = new TH3F("fPtAllminPtTPCvsNPointITSPhi","PtAllminPtTPCvsNPointITSPhi",fgkResPtBins,-1,1.,9,-0.5,8.5,fgkNPhiBins,kMinPhi,kMaxPhi);
426 fPtAllminPtTPCvsNPointITSPhi->SetXTitle("(1/p_{t}^{Global}-1/p_{t}^{TPC})/(1/p_{t}^{Global})");
427 fPtAllminPtTPCvsNPointITSPhi->SetYTitle("N_{point,ITS}");
428 fPtAllminPtTPCvsNPointITSPhi->SetZTitle("#phi");
429 fHistList->Add(fPtAllminPtTPCvsNPointITSPhi);
431 fPtAllminPtTPCvsRel1PtUncertaintyPhi = new TH3F("fPtAllminPtTPCvsRel1PtUncertaintyPhi","PtAllminPtTPCvsRel1PtUncertaintyPhi",fgkResPtBins,-1,1.,30,0.,0.3,fgkNPhiBins,kMinPhi,kMaxPhi);
432 fPtAllminPtTPCvsRel1PtUncertaintyPhi->SetXTitle("(1/p_{t}^{Global}-1/p_{t}^{TPC})/(1/p_{t}^{Global})");
433 fPtAllminPtTPCvsRel1PtUncertaintyPhi->SetYTitle("Rel1PtUncertainty");
434 fPtAllminPtTPCvsRel1PtUncertaintyPhi->SetZTitle("#phi");
435 fHistList->Add(fPtAllminPtTPCvsRel1PtUncertaintyPhi);
437 fEtaPhiOutliers = new TH2F("fEtaPhiOutliers","PtAllminPtTPCvsPtAll",20, -1.,1.,fgkNPhiBins,kMinPhi,kMaxPhi);
438 fEtaPhiOutliers->SetXTitle("#eta");
439 fEtaPhiOutliers->SetYTitle("#phi");
440 fHistList->Add(fEtaPhiOutliers);
442 //Global vs ITSouter-TPCinner
443 fPtSelITSouter = new TH1F("fPtSelITSouter","PtSelITSouter",fgkNPtBins,fgkPtMin,fgkPtMax);
444 fHistList->Add(fPtSelITSouter);
446 fPtITSouterminPtTPCvsPtAll = new TH2F("fPtITSouterminPtTPCvsPtAll","PtAllminPtTPCvsPtAll",fgkNPtBins, fgkPtMin,fgkPtMax,fgkResPtBins,-1.,1.);
447 fPtITSouterminPtTPCvsPtAll->SetXTitle("p_{t}^{Global}");
448 fPtITSouterminPtTPCvsPtAll->SetYTitle("(1/p_{t}^{ITSouter}-1/p_{t}^{TPCinner})/(1/p_{t}^{ITSouter})");
449 fHistList->Add(fPtITSouterminPtTPCvsPtAll);
451 fPtITSouterminPtTPCvsPtAllNPointTPC = new TH3F("fPtITSouterminPtTPCvsPtAllNPointTPC","PtAllminPtTPCvsPtAllNPointTPC",fgkNPtBins, fgkPtMin,fgkPtMax,fgkResPtBins,-1.,1.,160,0.5,160.5);
452 fPtITSouterminPtTPCvsPtAllNPointTPC->SetXTitle("p_{t}^{Global}");
453 fPtITSouterminPtTPCvsPtAllNPointTPC->SetYTitle("(1/p_{t}^{ITSouter}-1/p_{t}^{TPCinner})/(1/p_{t}^{ITSouter})");
454 fPtITSouterminPtTPCvsPtAllNPointTPC->SetZTitle("N_{point,TPC}");
455 fHistList->Add(fPtITSouterminPtTPCvsPtAllNPointTPC);
457 fPtITSouterminPtTPCvsPtAllNPointTPCS = new TH3F("fPtITSouterminPtTPCvsPtAllNPointTPCS","PtAllminPtTPCvsPtAllNPointTPCS",fgkNPtBins, fgkPtMin,fgkPtMax,fgkResPtBins,-1.,1.,100,0.,1.);
458 fPtITSouterminPtTPCvsPtAllNPointTPCS->SetXTitle("p_{t}^{Global}");
459 fPtITSouterminPtTPCvsPtAllNPointTPCS->SetYTitle("(1/p_{t}^{Global}-1/p_{t}^{TPC})/(1/p_{t}^{Global})");
460 fPtITSouterminPtTPCvsPtAllNPointTPCS->SetZTitle("N_{point,TPC}^{Shared}/N_{point,TPC}");
461 fHistList->Add(fPtITSouterminPtTPCvsPtAllNPointTPCS);
463 fPtITSouterminPtTPCvsPtAllDCAR = new TH3F("fPtITSouterminPtTPCvsPtAllDCAR","PtAllminPtTPCvsPtAllDCAR",fgkNPtBins, fgkPtMin,fgkPtMax,fgkResPtBins,-1.,1.,80,-0.2,0.2);
464 fPtITSouterminPtTPCvsPtAllDCAR->SetXTitle("p_{t}^{Global}");
465 fPtITSouterminPtTPCvsPtAllDCAR->SetYTitle("(1/p_{t}^{ITSouter}-1/p_{t}^{TPCinner})/(1/p_{t}^{ITSouter})");
466 fPtITSouterminPtTPCvsPtAllDCAR->SetZTitle("DCA_{R}");
467 fHistList->Add(fPtITSouterminPtTPCvsPtAllDCAR);
469 fPtITSouterminPtTPCvsPtAllDCAZ = new TH3F("fPtITSouterminPtTPCvsPtAllDCAZ","PtAllminPtTPCvsPtAllDCAZ",fgkNPtBins, fgkPtMin,fgkPtMax,fgkResPtBins,-1.,1.,80,-2.,2.);
470 fPtITSouterminPtTPCvsPtAllDCAZ->SetXTitle("p_{t}^{Global}");
471 fPtITSouterminPtTPCvsPtAllDCAZ->SetYTitle("(1/p_{t}^{ITSouter}-1/p_{t}^{TPCinner})/(1/p_{t}^{ITSouter})");
472 fPtITSouterminPtTPCvsPtAllDCAZ->SetZTitle("DCA_{Z}");
473 fHistList->Add(fPtITSouterminPtTPCvsPtAllDCAZ);
475 fPtITSouterminPtTPCvsPtAllPhi = new TH3F("fPtITSouterminPtTPCvsPtAllPhi","PtAllminPtTPCvsPtAllPhi",fgkNPtBins, fgkPtMin,fgkPtMax,fgkResPtBins,-1.,1.,fgkNPhiBins,kMinPhi,kMaxPhi);
476 fPtITSouterminPtTPCvsPtAllPhi->SetXTitle("p_{t}^{Global}");
477 fPtITSouterminPtTPCvsPtAllPhi->SetYTitle("(1/p_{t}^{ITSouter}-1/p_{t}^{TPCinner})/(1/p_{t}^{ITSouter})");
478 fPtITSouterminPtTPCvsPtAllPhi->SetZTitle("#phi");
479 fHistList->Add(fPtITSouterminPtTPCvsPtAllPhi);
481 fPtITSouterminPtTPCvsPtAllNPointITS = new TH3F("fPtITSouterminPtTPCvsPtAllNPointITS","PtAllminPtTPCvsPtAllNPointITS",fgkNPtBins, fgkPtMin,fgkPtMax,fgkResPtBins,-1.,1.,9,-0.5,8.5);
482 fPtITSouterminPtTPCvsPtAllNPointITS->SetXTitle("p_{t}^{Global}");
483 fPtITSouterminPtTPCvsPtAllNPointITS->SetYTitle("(1/p_{t}^{ITSouter}-1/p_{t}^{TPCinner})/(1/p_{t}^{ITSouter})");
484 fPtITSouterminPtTPCvsPtAllNPointITS->SetZTitle("N_{point,ITS}");
485 fHistList->Add(fPtITSouterminPtTPCvsPtAllNPointITS);
487 fPtITSouterminPtTPCvsPtAllNSigmaToVertex = new TH3F("fPtITSouterminPtTPCvsPtAllNSigmaToVertex","PtAllminPtTPCvsPtAllNSigmaToVertex",fgkNPtBins, fgkPtMin,fgkPtMax,fgkResPtBins,-1.,1.,40,0.,8.);
488 fPtITSouterminPtTPCvsPtAllNSigmaToVertex->SetXTitle("p_{t}^{Global}");
489 fPtITSouterminPtTPCvsPtAllNSigmaToVertex->SetYTitle("(1/p_{t}^{ITSouter}-1/p_{t}^{TPCinner})/(1/p_{t}^{ITSouter})");
490 fPtITSouterminPtTPCvsPtAllNSigmaToVertex->SetZTitle("N#sigma to vertex");
491 fHistList->Add(fPtITSouterminPtTPCvsPtAllNSigmaToVertex);
493 fPtITSouterminPtTPCvsPtAllChi2C = new TH3F("fPtITSouterminPtTPCvsPtAllChi2C","PtAllminPtTPCvsPtAllChi2C",fgkNPtBins, fgkPtMin,fgkPtMax,fgkResPtBins,-1.,1.,20,0.,10.);
494 fPtITSouterminPtTPCvsPtAllChi2C->SetXTitle("p_{t}^{Global}");
495 fPtITSouterminPtTPCvsPtAllChi2C->SetYTitle("(1/p_{t}^{ITSouter}-1/p_{t}^{TPCinner})/(1/p_{t}^{ITSouter})");
496 fPtITSouterminPtTPCvsPtAllChi2C->SetZTitle("Constrained #chi^{2}");
497 fHistList->Add(fPtITSouterminPtTPCvsPtAllChi2C);
499 fPtITSouterminPtTPCvsPtAllRel1PtUncertainty = new TH3F("fPtITSouterminPtTPCvsPtAllRel1PtUncertainty","PtAllminPtTPCvsPtAllRel1PtUncertainty",fgkNPtBins, fgkPtMin,fgkPtMax,fgkResPtBins,-1.,1.,30,0.,0.3);
500 fPtITSouterminPtTPCvsPtAllRel1PtUncertainty->SetXTitle("p_{t}^{Global}");
501 fPtITSouterminPtTPCvsPtAllRel1PtUncertainty->SetYTitle("(1/p_{t}^{ITSouter}-1/p_{t}^{TPCinner})/(1/p_{t}^{ITSouter})");
502 fPtITSouterminPtTPCvsPtAllRel1PtUncertainty->SetZTitle("Rel1PtUncertainty");
503 fHistList->Add(fPtITSouterminPtTPCvsPtAllRel1PtUncertainty);
505 fPtITSouterminPtTPCvsPtAllChi2PerNClusTPC = new TH3F("fPtITSouterminPtTPCvsPtAllChi2PerNClusTPC","PtAllminPtTPCvsPtAllChi2PerNClusTPC",fgkNPtBins, fgkPtMin,fgkPtMax,fgkResPtBins,-1.,1.,35,0.,3.5);
506 fPtITSouterminPtTPCvsPtAllChi2PerNClusTPC->SetXTitle("p_{t}^{Global}");
507 fPtITSouterminPtTPCvsPtAllChi2PerNClusTPC->SetYTitle("(1/p_{t}^{Global}-1/p_{t}^{TPC})/(1/p_{t}^{Global})");
508 fPtITSouterminPtTPCvsPtAllChi2PerNClusTPC->SetZTitle("#chi^{2}/(2*NClusTPC-5)");
509 fHistList->Add(fPtITSouterminPtTPCvsPtAllChi2PerNClusTPC);
511 fPtITSouterminPtTPCvsPtAllChi2PerNClusITS = new TH3F("fPtITSouterminPtTPCvsPtAllChi2PerNClusITS","PtAllminPtTPCvsPtAllChi2PerNClusITS",fgkNPtBins, fgkPtMin,fgkPtMax,fgkResPtBins,-1.,1.,35,0.,3.5);
512 fPtITSouterminPtTPCvsPtAllChi2PerNClusITS->SetXTitle("p_{t}^{Global}");
513 fPtITSouterminPtTPCvsPtAllChi2PerNClusITS->SetYTitle("(1/p_{t}^{Global}-1/p_{t}^{TPC})/(1/p_{t}^{Global})");
514 fPtITSouterminPtTPCvsPtAllChi2PerNClusITS->SetZTitle("#chi^{2}/(2*NClusITS-5)");
515 fHistList->Add(fPtITSouterminPtTPCvsPtAllChi2PerNClusITS);
517 //As function of ITS layers
518 fPtITSouterminPtTPCvsPtAllITSLayer0 = new TH2F("fPtITSouterminPtTPCvsPtAllITSLayer0","PtAllminPtTPCvsPtAllITSLayer0",fgkNPtBins, fgkPtMin,fgkPtMax,fgkResPtBins,-1.,1.);
519 fPtITSouterminPtTPCvsPtAllITSLayer0->SetXTitle("p_{t}^{Global}");
520 fPtITSouterminPtTPCvsPtAllITSLayer0->SetYTitle("(1/p_{t}^{ITSouter}-1/p_{t}^{TPCinner})/(1/p_{t}^{ITSouter})");
521 fHistList->Add(fPtITSouterminPtTPCvsPtAllITSLayer0);
523 fPtITSouterminPtTPCvsPtAllITSLayer1 = new TH2F("fPtITSouterminPtTPCvsPtAllITSLayer1","PtAllminPtTPCvsPtAllITSLayer1",fgkNPtBins, fgkPtMin,fgkPtMax,fgkResPtBins,-1.,1.);
524 fPtITSouterminPtTPCvsPtAllITSLayer1->SetXTitle("p_{t}^{Global}");
525 fPtITSouterminPtTPCvsPtAllITSLayer1->SetYTitle("(1/p_{t}^{ITSouter}-1/p_{t}^{TPCinner})/(1/p_{t}^{ITSouter})");
526 fHistList->Add(fPtITSouterminPtTPCvsPtAllITSLayer1);
528 fPtITSouterminPtTPCvsPtAllITSLayer2 = new TH2F("fPtITSouterminPtTPCvsPtAllITSLayer2","PtAllminPtTPCvsPtAllITSLayer2",fgkNPtBins, fgkPtMin,fgkPtMax,fgkResPtBins,-1.,1.);
529 fPtITSouterminPtTPCvsPtAllITSLayer2->SetXTitle("p_{t}^{Global}");
530 fPtITSouterminPtTPCvsPtAllITSLayer2->SetYTitle("(1/p_{t}^{ITSouter}-1/p_{t}^{TPCinner})/(1/p_{t}^{ITSouter})");
531 fHistList->Add(fPtITSouterminPtTPCvsPtAllITSLayer2);
533 fPtITSouterminPtTPCvsPtAllITSLayer3 = new TH2F("fPtITSouterminPtTPCvsPtAllITSLayer3","PtAllminPtTPCvsPtAllITSLayer3",fgkNPtBins, fgkPtMin,fgkPtMax,fgkResPtBins,-1.,1.);
534 fPtITSouterminPtTPCvsPtAllITSLayer3->SetXTitle("p_{t}^{Global}");
535 fPtITSouterminPtTPCvsPtAllITSLayer3->SetYTitle("(1/p_{t}^{ITSouter}-1/p_{t}^{TPCinner})/(1/p_{t}^{ITSouter})");
536 fHistList->Add(fPtITSouterminPtTPCvsPtAllITSLayer3);
538 fPtITSouterminPtTPCvsPtAllITSLayer4 = new TH2F("fPtITSouterminPtTPCvsPtAllITSLayer4","PtAllminPtTPCvsPtAllITSLayer4",fgkNPtBins, fgkPtMin,fgkPtMax,fgkResPtBins,-1.,1.);
539 fPtITSouterminPtTPCvsPtAllITSLayer4->SetXTitle("p_{t}^{Global}");
540 fPtITSouterminPtTPCvsPtAllITSLayer4->SetYTitle("(1/p_{t}^{ITSouter}-1/p_{t}^{TPCinner})/(1/p_{t}^{ITSouter})");
541 fHistList->Add(fPtITSouterminPtTPCvsPtAllITSLayer4);
543 fPtITSouterminPtTPCvsPtAllITSLayer5 = new TH2F("fPtITSouterminPtTPCvsPtAllITSLayer5","PtAllminPtTPCvsPtAllITSLayer5",fgkNPtBins, fgkPtMin,fgkPtMax,fgkResPtBins,-1.,1.);
544 fPtITSouterminPtTPCvsPtAllITSLayer5->SetXTitle("p_{t}^{Global}");
545 fPtITSouterminPtTPCvsPtAllITSLayer5->SetYTitle("(1/p_{t}^{ITSouter}-1/p_{t}^{TPCinner})/(1/p_{t}^{ITSouter})");
546 fHistList->Add(fPtITSouterminPtTPCvsPtAllITSLayer5);
548 fPtITSouterminPtTPCvsPtAllNoSPD = new TH2F("fPtITSouterminPtTPCvsPtAllNoSPD","PtAllminPtTPCvsPtAllNoSPD",fgkNPtBins, fgkPtMin,fgkPtMax,fgkResPtBins,-1.,1.);
549 fPtITSouterminPtTPCvsPtAllNoSPD->SetXTitle("p_{t}^{Global}");
550 fPtITSouterminPtTPCvsPtAllNoSPD->SetYTitle("(1/p_{t}^{ITSouter}-1/p_{t}^{TPCinner})/(1/p_{t}^{ITSouter})");
551 fHistList->Add(fPtITSouterminPtTPCvsPtAllNoSPD);
553 fPtITSouterminPtTPCvsPtAllNoSDD = new TH2F("fPtITSouterminPtTPCvsPtAllNoSDD","PtAllminPtTPCvsPtAllNoSDD",fgkNPtBins, fgkPtMin,fgkPtMax,fgkResPtBins,-1.,1.);
554 fPtITSouterminPtTPCvsPtAllNoSDD->SetXTitle("p_{t}^{Global}");
555 fPtITSouterminPtTPCvsPtAllNoSDD->SetYTitle("(1/p_{t}^{ITSouter}-1/p_{t}^{TPCinner})/(1/p_{t}^{ITSouter})");
556 fHistList->Add(fPtITSouterminPtTPCvsPtAllNoSDD);
558 fPtITSouterminPtTPCvsPtAllNoSSD = new TH2F("fPtITSouterminPtTPCvsPtAllNoSSD","PtAllminPtTPCvsPtAllNoSSD",fgkNPtBins, fgkPtMin,fgkPtMax,fgkResPtBins,-1.,1.);
559 fPtITSouterminPtTPCvsPtAllNoSSD->SetXTitle("p_{t}^{Global}");
560 fPtITSouterminPtTPCvsPtAllNoSSD->SetYTitle("(1/p_{t}^{ITSouter}-1/p_{t}^{TPCinner})/(1/p_{t}^{ITSouter})");
561 fHistList->Add(fPtITSouterminPtTPCvsPtAllNoSSD);
564 fPtITSouterminPtTPCvsPtAllChi2PerNClusITSLayer0 = new TH3F("fPtITSouterminPtTPCvsPtAllChi2PerNClusITSLayer0","PtAllminPtTPCvsPtAllChi2PerNClusITSLayer0",fgkNPtBins, fgkPtMin,fgkPtMax,fgkResPtBins,-1.,1.,fgkChi2PerClusBins,fgkChi2PerClusMin,fgkChi2PerClusMax);
565 fPtITSouterminPtTPCvsPtAllChi2PerNClusITSLayer0->SetXTitle("p_{t}^{Global}");
566 fPtITSouterminPtTPCvsPtAllChi2PerNClusITSLayer0->SetYTitle("(1/p_{t}^{ITSouter}-1/p_{t}^{TPCinner})/(1/p_{t}^{ITSouter})");
567 fPtITSouterminPtTPCvsPtAllChi2PerNClusITSLayer0->SetZTitle("#chi^{2}/NPointITS");
568 fHistList->Add(fPtITSouterminPtTPCvsPtAllChi2PerNClusITSLayer0);
570 fPtITSouterminPtTPCvsPtAllChi2PerNClusITSLayer1 = new TH3F("fPtITSouterminPtTPCvsPtAllChi2PerNClusITSLayer1","PtAllminPtTPCvsPtAllChi2PerNClusITSLayer1",fgkNPtBins, fgkPtMin,fgkPtMax,fgkResPtBins,-1.,1.,fgkChi2PerClusBins,fgkChi2PerClusMin,fgkChi2PerClusMax);
571 fPtITSouterminPtTPCvsPtAllChi2PerNClusITSLayer1->SetXTitle("p_{t}^{Global}");
572 fPtITSouterminPtTPCvsPtAllChi2PerNClusITSLayer1->SetYTitle("(1/p_{t}^{ITSouter}-1/p_{t}^{TPCinner})/(1/p_{t}^{ITSouter})");
573 fPtITSouterminPtTPCvsPtAllChi2PerNClusITSLayer1->SetZTitle("#chi^{2}/NPointITS");
574 fHistList->Add(fPtITSouterminPtTPCvsPtAllChi2PerNClusITSLayer1);
576 fPtITSouterminPtTPCvsPtAllChi2PerNClusITSLayer2 = new TH3F("fPtITSouterminPtTPCvsPtAllChi2PerNClusITSLayer2","PtAllminPtTPCvsPtAllChi2PerNClusITSLayer2",fgkNPtBins, fgkPtMin,fgkPtMax,fgkResPtBins,-1.,1.,fgkChi2PerClusBins,fgkChi2PerClusMin,fgkChi2PerClusMax);
577 fPtITSouterminPtTPCvsPtAllChi2PerNClusITSLayer2->SetXTitle("p_{t}^{Global}");
578 fPtITSouterminPtTPCvsPtAllChi2PerNClusITSLayer2->SetYTitle("(1/p_{t}^{ITSouter}-1/p_{t}^{TPCinner})/(1/p_{t}^{ITSouter})");
579 fPtITSouterminPtTPCvsPtAllChi2PerNClusITSLayer2->SetZTitle("#chi^{2}/NPointITS");
580 fHistList->Add(fPtITSouterminPtTPCvsPtAllChi2PerNClusITSLayer2);
582 fPtITSouterminPtTPCvsPtAllChi2PerNClusITSLayer3 = new TH3F("fPtITSouterminPtTPCvsPtAllChi2PerNClusITSLayer3","PtAllminPtTPCvsPtAllChi2PerNClusITSLayer3",fgkNPtBins, fgkPtMin,fgkPtMax,fgkResPtBins,-1.,1.,fgkChi2PerClusBins,fgkChi2PerClusMin,fgkChi2PerClusMax);
583 fPtITSouterminPtTPCvsPtAllChi2PerNClusITSLayer3->SetXTitle("p_{t}^{Global}");
584 fPtITSouterminPtTPCvsPtAllChi2PerNClusITSLayer3->SetYTitle("(1/p_{t}^{ITSouter}-1/p_{t}^{TPCinner})/(1/p_{t}^{ITSouter})");
585 fPtITSouterminPtTPCvsPtAllChi2PerNClusITSLayer3->SetZTitle("#chi^{2}/NPointITS");
586 fHistList->Add(fPtITSouterminPtTPCvsPtAllChi2PerNClusITSLayer3);
588 fPtITSouterminPtTPCvsPtAllChi2PerNClusITSLayer4 = new TH3F("fPtITSouterminPtTPCvsPtAllChi2PerNClusITSLayer4","PtAllminPtTPCvsPtAllChi2PerNClusITSLayer4",fgkNPtBins, fgkPtMin,fgkPtMax,fgkResPtBins,-1.,1.,fgkChi2PerClusBins,fgkChi2PerClusMin,fgkChi2PerClusMax);
589 fPtITSouterminPtTPCvsPtAllChi2PerNClusITSLayer4->SetXTitle("p_{t}^{Global}");
590 fPtITSouterminPtTPCvsPtAllChi2PerNClusITSLayer4->SetYTitle("(1/p_{t}^{ITSouter}-1/p_{t}^{TPCinner})/(1/p_{t}^{ITSouter})");
591 fPtITSouterminPtTPCvsPtAllChi2PerNClusITSLayer4->SetZTitle("#chi^{2}/NPointITS");
592 fHistList->Add(fPtITSouterminPtTPCvsPtAllChi2PerNClusITSLayer4);
594 fPtITSouterminPtTPCvsPtAllChi2PerNClusITSLayer5 = new TH3F("fPtITSouterminPtTPCvsPtAllChi2PerNClusITSLayer5","PtAllminPtTPCvsPtAllChi2PerNClusITSLayer5",fgkNPtBins, fgkPtMin,fgkPtMax,fgkResPtBins,-1.,1.,fgkChi2PerClusBins,fgkChi2PerClusMin,fgkChi2PerClusMax);
595 fPtITSouterminPtTPCvsPtAllChi2PerNClusITSLayer5->SetXTitle("p_{t}^{Global}");
596 fPtITSouterminPtTPCvsPtAllChi2PerNClusITSLayer5->SetYTitle("(1/p_{t}^{ITSouter}-1/p_{t}^{TPCinner})/(1/p_{t}^{ITSouter})");
597 fPtITSouterminPtTPCvsPtAllChi2PerNClusITSLayer5->SetZTitle("#chi^{2}/NPointITS");
598 fHistList->Add(fPtITSouterminPtTPCvsPtAllChi2PerNClusITSLayer5);
600 fPtITSouterminPtTPCvsPtAllChi2PerNClusITSNoSPD = new TH3F("fPtITSouterminPtTPCvsPtAllChi2PerNClusITSNoSPD","PtAllminPtTPCvsPtAllChi2PerNClusITSNoSPD",fgkNPtBins, fgkPtMin,fgkPtMax,fgkResPtBins,-1.,1.,fgkChi2PerClusBins,fgkChi2PerClusMin,fgkChi2PerClusMax);
601 fPtITSouterminPtTPCvsPtAllChi2PerNClusITSNoSPD->SetXTitle("p_{t}^{Global}");
602 fPtITSouterminPtTPCvsPtAllChi2PerNClusITSNoSPD->SetYTitle("(1/p_{t}^{ITSouter}-1/p_{t}^{TPCinner})/(1/p_{t}^{ITSouter})");
603 fPtITSouterminPtTPCvsPtAllChi2PerNClusITSNoSPD->SetZTitle("#chi^{2}/(2*NPointITS-5)");
604 fHistList->Add(fPtITSouterminPtTPCvsPtAllChi2PerNClusITSNoSPD);
606 fPtITSouterminPtTPCvsPtAllChi2PerNClusITSNoSDD = new TH3F("fPtITSouterminPtTPCvsPtAllChi2PerNClusITSNoSDD","PtAllminPtTPCvsPtAllChi2PerNClusITSNoSDD",fgkNPtBins, fgkPtMin,fgkPtMax,fgkResPtBins,-1.,1.,fgkChi2PerClusBins,fgkChi2PerClusMin,fgkChi2PerClusMax);
607 fPtITSouterminPtTPCvsPtAllChi2PerNClusITSNoSDD->SetXTitle("p_{t}^{Global}");
608 fPtITSouterminPtTPCvsPtAllChi2PerNClusITSNoSDD->SetYTitle("(1/p_{t}^{ITSouter}-1/p_{t}^{TPCinner})/(1/p_{t}^{ITSouter})");
609 fPtITSouterminPtTPCvsPtAllChi2PerNClusITSNoSDD->SetZTitle("#chi^{2}/(2*NPointITS-5)");
610 fHistList->Add(fPtITSouterminPtTPCvsPtAllChi2PerNClusITSNoSDD);
612 fPtITSouterminPtTPCvsPtAllChi2PerNClusITSNoSSD = new TH3F("fPtITSouterminPtTPCvsPtAllChi2PerNClusITSNoSSD","PtAllminPtTPCvsPtAllChi2PerNClusITSNoSSD",fgkNPtBins, fgkPtMin,fgkPtMax,fgkResPtBins,-1.,1.,fgkChi2PerClusBins,fgkChi2PerClusMin,fgkChi2PerClusMax);
613 fPtITSouterminPtTPCvsPtAllChi2PerNClusITSNoSSD->SetXTitle("p_{t}^{Global}");
614 fPtITSouterminPtTPCvsPtAllChi2PerNClusITSNoSSD->SetYTitle("(1/p_{t}^{ITSouter}-1/p_{t}^{TPCinner})/(1/p_{t}^{ITSouter})");
615 fPtITSouterminPtTPCvsPtAllChi2PerNClusITSNoSSD->SetZTitle("#chi^{2}/(2*NPointITS-5)");
616 fHistList->Add(fPtITSouterminPtTPCvsPtAllChi2PerNClusITSNoSSD);
620 fPtSelITS = new TH1F("fPtSelITSrefit","PtSel",fgkNPtBins, fgkPtMin, fgkPtMax);
621 fHistListITS->Add(fPtSelITS);
623 fPtITSminPtTPCvsPtITS = new TH2F("fPtITSminPtTPCvsPtITS","PtITSminPtTPCvsPtITS",fgkNPtBins, fgkPtMin,fgkPtMax,fgkResPtBins,-1.,1.);
624 fPtITSminPtTPCvsPtITS->SetXTitle("p_{t}^{Global}");
625 fPtITSminPtTPCvsPtITS->SetYTitle("(1/p_{t}^{Global}-1/p_{t}^{TPC})/(1/p_{t}^{Global})");
626 fHistListITS->Add(fPtITSminPtTPCvsPtITS);
628 fPtITSminPtTPCvsPtITSNPointTPC = new TH3F("fPtITSminPtTPCvsPtITSNPointTPC","PtITSminPtTPCvsPtITSNPointTPC",fgkNPtBins, fgkPtMin,fgkPtMax,fgkResPtBins,-1.,1.,160,0.5,160.5);
629 fPtITSminPtTPCvsPtITSNPointTPC->SetXTitle("p_{t}^{Global}");
630 fPtITSminPtTPCvsPtITSNPointTPC->SetYTitle("(1/p_{t}^{Global}-1/p_{t}^{TPC})/(1/p_{t}^{Global})");
631 fPtITSminPtTPCvsPtITSNPointTPC->SetZTitle("N_{point,TPC}");
632 fHistListITS->Add(fPtITSminPtTPCvsPtITSNPointTPC);
634 fPtITSminPtTPCvsPtITSNPointTPCS = new TH3F("fPtITSminPtTPCvsPtITSNPointTPCS","PtITSminPtTPCvsPtITSNPointTPCS",fgkNPtBins, fgkPtMin,fgkPtMax,fgkResPtBins,-1.,1.,100,0.,1.);
635 fPtITSminPtTPCvsPtITSNPointTPCS->SetXTitle("p_{t}^{Global}");
636 fPtITSminPtTPCvsPtITSNPointTPCS->SetYTitle("(1/p_{t}^{Global}-1/p_{t}^{TPC})/(1/p_{t}^{Global})");
637 fPtITSminPtTPCvsPtITSNPointTPCS->SetZTitle("N_{point,TPC}^{Shared}/N_{point,TPC}");
638 fHistListITS->Add(fPtITSminPtTPCvsPtITSNPointTPCS);
640 fPtITSminPtTPCvsPtITSDCAR = new TH3F("fPtITSminPtTPCvsPtITSDCAR","PtITSminPtTPCvsPtITSDCAR",fgkNPtBins, fgkPtMin,fgkPtMax,fgkResPtBins,-1.,1.,80,-0.2,0.2);
641 fPtITSminPtTPCvsPtITSDCAR->SetXTitle("p_{t}^{Global}");
642 fPtITSminPtTPCvsPtITSDCAR->SetYTitle("(1/p_{t}^{Global}-1/p_{t}^{TPC})/(1/p_{t}^{Global})");
643 fPtITSminPtTPCvsPtITSDCAR->SetZTitle("DCA_{R}");
644 fHistListITS->Add(fPtITSminPtTPCvsPtITSDCAR);
646 fPtITSminPtTPCvsPtITSDCAZ = new TH3F("fPtITSminPtTPCvsPtITSDCAZ","PtITSminPtTPCvsPtITSDCAZ",fgkNPtBins, fgkPtMin,fgkPtMax,fgkResPtBins,-1.,1.,80,-2.,2.);
647 fPtITSminPtTPCvsPtITSDCAZ->SetXTitle("p_{t}^{Global}");
648 fPtITSminPtTPCvsPtITSDCAZ->SetYTitle("(1/p_{t}^{Global}-1/p_{t}^{TPC})/(1/p_{t}^{Global})");
649 fPtITSminPtTPCvsPtITSDCAZ->SetZTitle("DCA_{Z}");
650 fHistListITS->Add(fPtITSminPtTPCvsPtITSDCAZ);
652 fPtITSminPtTPCvsPtITSPhi = new TH3F("fPtITSminPtTPCvsPtITSPhi","PtITSminPtTPCvsPtITSPhi",fgkNPtBins, fgkPtMin,fgkPtMax,fgkResPtBins,-1.,1.,fgkNPhiBins,kMinPhi,kMaxPhi);
653 fPtITSminPtTPCvsPtITSPhi->SetXTitle("p_{t}^{Global}");
654 fPtITSminPtTPCvsPtITSPhi->SetYTitle("(1/p_{t}^{Global}-1/p_{t}^{TPC})/(1/p_{t}^{Global})");
655 fPtITSminPtTPCvsPtITSPhi->SetZTitle("#phi");
656 fHistListITS->Add(fPtITSminPtTPCvsPtITSPhi);
658 fPtITSminPtTPCvsPtITSNPointITS = new TH3F("fPtITSminPtTPCvsPtITSNPointITS","PtITSminPtTPCvsPtITSNPointITS",fgkNPtBins, fgkPtMin,fgkPtMax,fgkResPtBins,-1.,1.,9,-0.5,8.5);
659 fPtITSminPtTPCvsPtITSNPointITS->SetXTitle("p_{t}^{Global}");
660 fPtITSminPtTPCvsPtITSNPointITS->SetYTitle("(1/p_{t}^{Global}-1/p_{t}^{TPC})/(1/p_{t}^{Global})");
661 fPtITSminPtTPCvsPtITSNPointITS->SetZTitle("N_{point,ITS}");
662 fHistListITS->Add(fPtITSminPtTPCvsPtITSNPointITS);
664 fPtITSminPtTPCvsPtITSNSigmaToVertex = new TH3F("fPtITSminPtTPCvsPtITSNSigmaToVertex","PtITSminPtTPCvsPtITSNSigmaToVertex",fgkNPtBins, fgkPtMin,fgkPtMax,fgkResPtBins,-1.,1.,40,0.,8.);
665 fPtITSminPtTPCvsPtITSNSigmaToVertex->SetXTitle("p_{t}^{Global}");
666 fPtITSminPtTPCvsPtITSNSigmaToVertex->SetYTitle("(1/p_{t}^{Global}-1/p_{t}^{TPC})/(1/p_{t}^{Global})");
667 fPtITSminPtTPCvsPtITSNSigmaToVertex->SetZTitle("N#sigma to vertex");
668 fHistListITS->Add(fPtITSminPtTPCvsPtITSNSigmaToVertex);
670 fPtITSminPtTPCvsPtITSChi2C = new TH3F("fPtITSminPtTPCvsPtITSChi2C","PtITSminPtTPCvsPtITSChi2C",fgkNPtBins, fgkPtMin,fgkPtMax,fgkResPtBins,-1.,1.,20,0.,10.);
671 fPtITSminPtTPCvsPtITSChi2C->SetXTitle("p_{t}^{Global}");
672 fPtITSminPtTPCvsPtITSChi2C->SetYTitle("(1/p_{t}^{Global}-1/p_{t}^{TPC})/(1/p_{t}^{Global})");
673 fPtITSminPtTPCvsPtITSChi2C->SetZTitle("Constrained #chi^{2}");
674 fHistListITS->Add(fPtITSminPtTPCvsPtITSChi2C);
676 fPtITSminPtTPCvsPtITSRel1PtUncertainty = new TH3F("fPtITSminPtTPCvsPtITSRel1PtUncertainty","PtITSminPtTPCvsPtITSRel1PtUncertainty",fgkNPtBins, fgkPtMin,fgkPtMax,fgkResPtBins,-1.,1.,30,0.,0.3);
677 fPtITSminPtTPCvsPtITSRel1PtUncertainty->SetXTitle("p_{t}^{Global}");
678 fPtITSminPtTPCvsPtITSRel1PtUncertainty->SetYTitle("(1/p_{t}^{Global}-1/p_{t}^{TPC})/(1/p_{t}^{Global})");
679 fPtITSminPtTPCvsPtITSRel1PtUncertainty->SetZTitle("Rel1PtUncertainty");
680 fHistListITS->Add(fPtITSminPtTPCvsPtITSRel1PtUncertainty);
682 fPtITSminPtTPCvsPtITSChi2PerNClusTPC = new TH3F("fPtITSminPtTPCvsPtITSChi2PerNClusTPC","PtITSminPtTPCvsPtITSChi2PerNClusTPC",fgkNPtBins, fgkPtMin,fgkPtMax,fgkResPtBins,-1.,1.,35,0.,3.5);
683 fPtITSminPtTPCvsPtITSChi2PerNClusTPC->SetXTitle("p_{t}^{Global}");
684 fPtITSminPtTPCvsPtITSChi2PerNClusTPC->SetYTitle("(1/p_{t}^{Global}-1/p_{t}^{TPC})/(1/p_{t}^{Global})");
685 fPtITSminPtTPCvsPtITSChi2PerNClusTPC->SetZTitle("#chi^{2}/(2*NClusTPC-5)");
686 fHistListITS->Add(fPtITSminPtTPCvsPtITSChi2PerNClusTPC);
688 fPtITSminPtTPCvsPtITSChi2PerNClusITS = new TH3F("fPtITSminPtTPCvsPtITSChi2PerNClusITS","PtITSminPtTPCvsPtITSChi2PerNClusITS",fgkNPtBins, fgkPtMin,fgkPtMax,fgkResPtBins,-1.,1.,35,0.,3.5);
689 fPtITSminPtTPCvsPtITSChi2PerNClusITS->SetXTitle("p_{t}^{Global}");
690 fPtITSminPtTPCvsPtITSChi2PerNClusITS->SetYTitle("(1/p_{t}^{Global}-1/p_{t}^{TPC})/(1/p_{t}^{Global})");
691 fPtITSminPtTPCvsPtITSChi2PerNClusITS->SetZTitle("#chi^{2}/(2*NClusITS-5)");
692 fHistListITS->Add(fPtITSminPtTPCvsPtITSChi2PerNClusITS);
694 fPtITSminPtTPCvsNPointTPCPhi = new TH3F("fPtITSminPtTPCvsNPointTPCPhi","PtITSminPtTPCvsNPointTPCPhi",fgkResPtBins,-1,1.,160,0.5,160.5,fgkNPhiBins,kMinPhi,kMaxPhi);
695 fPtITSminPtTPCvsNPointTPCPhi->SetXTitle("(1/p_{t}^{Global}-1/p_{t}^{TPC})/(1/p_{t}^{Global})");
696 fPtITSminPtTPCvsNPointTPCPhi->SetYTitle("N_{point,TPC}");
697 fPtITSminPtTPCvsNPointTPCPhi->SetZTitle("#phi");
698 fHistListITS->Add(fPtITSminPtTPCvsNPointTPCPhi);
700 fPtITSminPtTPCvsNPointITSPhi = new TH3F("fPtITSminPtTPCvsNPointITSPhi","PtITSminPtTPCvsNPointITSPhi",fgkResPtBins,-1,1.,9,-0.5,8.5,fgkNPhiBins,kMinPhi,kMaxPhi);
701 fPtITSminPtTPCvsNPointITSPhi->SetXTitle("(1/p_{t}^{Global}-1/p_{t}^{TPC})/(1/p_{t}^{Global})");
702 fPtITSminPtTPCvsNPointITSPhi->SetYTitle("N_{point,ITS}");
703 fPtITSminPtTPCvsNPointITSPhi->SetZTitle("#phi");
704 fHistListITS->Add(fPtITSminPtTPCvsNPointITSPhi);
706 fPtITSminPtTPCvsRel1PtUncertaintyPhi = new TH3F("fPtITSminPtTPCvsRel1PtUncertaintyPhi","PtITSminPtTPCvsRel1PtUncertaintyPhi",fgkResPtBins,-1,1.,30,0.,0.3,fgkNPhiBins,kMinPhi,kMaxPhi);
707 fPtITSminPtTPCvsRel1PtUncertaintyPhi->SetXTitle("(1/p_{t}^{Global}-1/p_{t}^{TPC})/(1/p_{t}^{Global})");
708 fPtITSminPtTPCvsRel1PtUncertaintyPhi->SetYTitle("Rel1PtUncertainty");
709 fPtITSminPtTPCvsRel1PtUncertaintyPhi->SetZTitle("#phi");
710 fHistListITS->Add(fPtITSminPtTPCvsRel1PtUncertaintyPhi);
712 fPtRel1PtUncertaintyChi2PerClusTPC = new TH3F("fPtRel1PtUncertaintyChi2PerClusTPC","PtITSminPtTPCvsPtITSRel1PtUncertainty",fgkNPtBins, fgkPtMin,fgkPtMax,30,0.,0.3,35,0.,3.5);
713 fPtRel1PtUncertaintyChi2PerClusTPC->SetXTitle("p_{t}^{global}");
714 fPtRel1PtUncertaintyChi2PerClusTPC->SetYTitle("Rel1PtUncertainty");
715 fPtRel1PtUncertaintyChi2PerClusTPC->SetZTitle("#chi^{2}/(2*N_{clusters}^{TPC}-5)");
716 fHistListITS->Add(fPtRel1PtUncertaintyChi2PerClusTPC);
718 fPtNPointTPCSChi2PerClusTPC = new TH3F("fPtNPointTPCSChi2PerClusTPC","PtITSminPtTPCvsPtITSNPointTPCS",fgkNPtBins, fgkPtMin,fgkPtMax,100,0.,1.,35,0.,3.5);
719 fPtNPointTPCSChi2PerClusTPC->SetXTitle("p_{t}^{global}");
720 fPtNPointTPCSChi2PerClusTPC->SetYTitle("N_{Point,TPC}^{Shared}/N_{Point,TPC}");
721 fPtNPointTPCSChi2PerClusTPC->SetZTitle("#chi^{2}/(2*N_{clusters}^{TPC}-5)");
722 fHistListITS->Add(fPtNPointTPCSChi2PerClusTPC);
724 fPtNPointTPCSRel1PtUncertainty = new TH3F("fPtNPointTPCSRel1PtUncertainty","PtITSminPtTPCvsPtITSNPointTPCS",fgkNPtBins, fgkPtMin,fgkPtMax,100,0.,1.,30,0.,0.3);
725 fPtNPointTPCSRel1PtUncertainty->SetXTitle("p_{t}^{global}");
726 fPtNPointTPCSRel1PtUncertainty->SetYTitle("N_{Point,TPC}^{Shared}/N_{Point,TPC}");
727 fPtNPointTPCSRel1PtUncertainty->SetZTitle("Rel1PtUncertainty");
728 fHistListITS->Add(fPtNPointTPCSRel1PtUncertainty);
730 fPtRel1PtUncertaintyChi2PerClusTPCSharedSel = new TH3F("fPtRel1PtUncertaintyChi2PerClusTPCSharedSel","PtITSminPtTPCvsPtITSRel1PtUncertainty",fgkNPtBins, fgkPtMin,fgkPtMax,30,0.,0.3,35,0.,3.5);
731 fPtRel1PtUncertaintyChi2PerClusTPCSharedSel->SetXTitle("p_{t}^{global}");
732 fPtRel1PtUncertaintyChi2PerClusTPCSharedSel->SetYTitle("Rel1PtUncertainty");
733 fPtRel1PtUncertaintyChi2PerClusTPCSharedSel->SetZTitle("#chi^{2}/(2*N_{clusters}^{TPC}-5)");
734 fHistListITS->Add(fPtRel1PtUncertaintyChi2PerClusTPCSharedSel);
736 fPtAllTPC = new TH1F("fPtAllTPC","PtAll",fgkNPtBins, fgkPtMin, fgkPtMax);
737 fHistListTPC->Add(fPtAllTPC);
738 fPtSelTPC = new TH1F("fPtSelTPC","PtSel",fgkNPtBins, fgkPtMin, fgkPtMax);
739 fHistListTPC->Add(fPtSelTPC);
740 fPtSelTPCITS = new TH1F("fPtSelTPCITS","PtSel",fgkNPtBins, fgkPtMin, fgkPtMax);
741 fHistListTPC->Add(fPtSelTPCITS);
743 //****************************************************************************************************************//
744 // Cosmic Candidates //
745 //****************************************************************************************************************//
746 fPtCosmicCandidates = new TH1F("fPtCosmicCandidates","fPtCosmicCandidates",fgkNPtBins, fgkPtMin, fgkPtMax);
747 fHistListCosmics->Add(fPtCosmicCandidates);
748 fDeltaPtCosmicCandidates = new TH1F("fDeltaPtCosmicCandidates","fDeltaPtCosmicCandidates",fgkNPtBins, -50., 50.);
749 fHistListCosmics->Add(fDeltaPtCosmicCandidates);
750 fDeltaPhi = new TH1F("fDeltaPhi","fDeltaPhi",fgkNPhiBins*2,-1*kMaxPhi,kMaxPhi);
751 fHistListCosmics->Add(fDeltaPhi);
752 fDeltaEta = new TH1F("fDeltaEta","fDeltaEta",20, -2.,2.);
753 fHistListCosmics->Add(fDeltaEta);
755 TH1::AddDirectory(oldStatus);
758 //________________________________________________________________________
759 void AliPWG4HighPtQATPConly::Exec(Option_t *) {
761 // Called for each event
762 AliDebug(2,Form(">> AliPWG4HighPtQATPConly::Exec \n"));
764 // All events without selection
765 fNEventAll->Fill(0.);
768 AliDebug(2,Form("ERROR: fESD not available"));
770 PostData(0, fHistList);
771 PostData(1, fHistListTPC);
772 PostData(2, fHistListITS);
773 PostData(3, fHistListCosmics);
777 fESD->SetESDfriend(fESDfriend); //Attach the friend to the ESD
779 AliDebug(2,Form("ERROR: fESDfriend not available"));
781 PostData(0, fHistList);
782 PostData(1, fHistListTPC);
783 PostData(2, fHistListITS);
784 PostData(3, fHistListCosmics);
788 Bool_t isSelected = ((AliInputEventHandler*)(AliAnalysisManager::GetAnalysisManager()->GetInputEventHandler()))->IsEventSelected();
789 if(!isSelected) { //Select collison candidates
790 AliDebug(2,Form(" Trigger Selection: event REJECTED ... "));
792 PostData(0, fHistList);
793 PostData(1, fHistListTPC);
794 PostData(2, fHistListITS);
795 PostData(3, fHistListCosmics);
799 // AliMCEventHandler *eventHandler = dynamic_cast<AliMCEventHandler*> (AliAnalysisManager::GetAnalysisManager()->GetMCtruthEventHandler());
800 // // AliMCEventHandler* eventHandler = (AliMCEventHandler*)(AliAnalysisManager::GetAnalysisManager()->GetMCtruthEventHandler());
802 AliStack* stack = 0x0;
803 AliMCEvent* mcEvent = 0x0;
808 AliDebug(2,Form("ERROR: Could not retrieve MC event"));
809 PostData(0, fHistList);
810 PostData(1, fHistListTPC);
811 PostData(2, fHistListITS);
812 PostData(3, fHistListCosmics);
816 AliDebug(2,Form("MC particles: %d", mcEvent->GetNumberOfTracks()));
818 stack = mcEvent->Stack(); //Particles Stack
820 AliDebug(2,Form("MC particles stack: %d", stack->GetNtrack()));
824 const AliESDVertex *vtx = fESD->GetPrimaryVertexTracks();
826 if (vtx->GetNContributors() < 2) {
828 PostData(0, fHistList);
829 PostData(1, fHistListTPC);
830 PostData(2, fHistListITS);
831 PostData(3, fHistListCosmics);
835 AliDebug(2,Form("Vertex title %s, status %d, nCont %d\n",vtx->GetTitle(), vtx->GetStatus(), vtx->GetNContributors()));
837 vtx->GetXYZ(primVtx);
838 // printf("primVtx: %g %g %g \n",primVtx[0],primVtx[1],primVtx[2]);
839 if(TMath::Sqrt(primVtx[0]*primVtx[0] + primVtx[1]*primVtx[1])>1. || TMath::Abs(primVtx[2]>10.)){
841 PostData(0, fHistList);
842 PostData(1, fHistListTPC);
843 PostData(2, fHistListITS);
844 PostData(3, fHistListCosmics);
847 if(!fESD->GetNumberOfTracks() || fESD->GetNumberOfTracks()<2){
849 PostData(0, fHistList);
850 PostData(1, fHistListTPC);
851 PostData(2, fHistListITS);
852 PostData(3, fHistListCosmics);
855 Int_t nTracks = fESD->GetNumberOfTracks();
856 AliDebug(2,Form("nTracks %d\n", nTracks));
858 if(!fTrackCuts) return;
860 // Selected events for analysis
861 fNEventSel->Fill(0.);
863 for (Int_t iTrack = 0; iTrack < nTracks; iTrack++) {
865 AliESDtrack *track = fESD->GetTrack(iTrack);
866 AliExternalTrackParam *trackTPC = (AliExternalTrackParam *)track->GetTPCInnerParam();
867 if(!track || !trackTPC) continue;
868 const AliESDfriendTrack* constfriendtrack = track->GetFriendTrack();
869 if (!constfriendtrack) { continue;}
870 AliESDfriendTrack friendtrack(*constfriendtrack);
872 Float_t pt = track->Pt();
873 Float_t ptTPC = trackTPC->Pt();
874 Float_t phi = track->Phi();
876 track->GetImpactParameters(dca2D,dcaZ);
877 // Float_t dca2DTPC, dcaZTPC;
878 //track->GetImpactParametersTPC(dca2DTPC,dcaZTPC);
879 UChar_t itsMap = track->GetITSClusterMap();
881 for (Int_t i=0; i < 6; i++) {
882 if (itsMap & (1 << i))
886 track->GetPxPyPz(mom);
888 trackTPC->GetPxPyPz(momTPC);
889 Float_t nSigmaToVertex = fTrackCuts->GetSigmaToVertex(track);// Calculates the number of sigma to the vertex for a track.
890 Float_t chi2C = track->GetConstrainedChi2();
891 Float_t relUncertainty1Pt = TMath::Sqrt(TMath::Abs(track->GetSigma1Pt2()))*pt;
892 Float_t chi2PerClusterTPC = -1.;
893 Float_t nClustersTPC = track->GetTPCNcls();
894 if(nClustersTPC>0.) chi2PerClusterTPC = track->GetTPCchi2()/(2.*nClustersTPC-5.);
895 Float_t chi2PerNPointITS = -1.;
896 if(nPointITS>3) chi2PerNPointITS = track->GetITSchi2()/(2.*(float)nPointITS-5.);
899 fPtAllTPC->Fill(ptTPC);
902 if (fTrackCuts->AcceptTrack(track)) {
904 Bool_t cosmic = kFALSE;
905 if(pt>6.) { cosmic = IsCosmic(track,iTrack,6.); }
906 // if(cosmic) continue;
909 fPtSelTPC->Fill(ptTPC);
910 if(ptTPC==0. || pt==0.) continue;
911 fPtAllminPtTPCvsPtAll->Fill(pt,(1./pt-1./ptTPC)/(1./pt) );
912 fPtAllminPtTPCvsPtAllNPointTPC->Fill(pt,(1./pt-1./ptTPC)/(1./pt),nClustersTPC);
913 if(nClustersTPC>0.) fPtAllminPtTPCvsPtAllNPointTPCS->Fill(pt,(1./pt-1./ptTPC)/(1./pt),track->GetTPCnclsS()/nClustersTPC);
914 fPtAllminPtTPCvsPtAllDCAR->Fill(pt,(1./pt-1./ptTPC)/(1./pt),dca2D);
915 fPtAllminPtTPCvsPtAllDCAZ->Fill(pt,(1./pt-1./ptTPC)/(1./pt),dcaZ);
916 fPtAllminPtTPCvsPtAllPhi->Fill(pt,(1./pt-1./ptTPC)/(1./pt),phi);
917 fPtAllminPtTPCvsPtAllNPointITS->Fill(pt,(1./pt-1./ptTPC)/(1./pt),nPointITS);
918 fPtAllminPtTPCvsPtAllNSigmaToVertex->Fill(pt,(1./pt-1./ptTPC)/(1./pt),nSigmaToVertex);
919 fPtAllminPtTPCvsPtAllChi2C->Fill(pt,(1./pt-1./ptTPC)/(1./pt),chi2C);
920 fPtAllminPtTPCvsPtAllRel1PtUncertainty->Fill(pt,(1./pt-1./ptTPC)/(1./pt),relUncertainty1Pt);
921 fPtAllminPtTPCvsPtAllChi2PerNClusTPC->Fill(pt,(1./pt-1./ptTPC)/(1./pt),chi2PerClusterTPC);
922 if(nPointITS>3) fPtAllminPtTPCvsPtAllChi2PerNClusITS->Fill(pt,(1./pt-1./ptTPC)/(1./pt),chi2PerNPointITS);
923 fPtAllminPtTPCvsNPointTPCPhi->Fill((1./pt-1./ptTPC)/(1./pt),nClustersTPC,phi);
924 fPtAllminPtTPCvsNPointITSPhi->Fill((1./pt-1./ptTPC)/(1./pt),nPointITS,phi);
925 fPtAllminPtTPCvsRel1PtUncertaintyPhi->Fill((1./pt-1./ptTPC)/(1./pt),relUncertainty1Pt,phi);
927 if(TMath::Abs((1./pt-1./ptTPC)/(1./pt))>0.8) fEtaPhiOutliers->Fill(track->Eta(),phi);
928 if (friendtrack.GetITSOut()) {
929 AliExternalTrackParam trackITSouter(*(friendtrack.GetITSOut()));
930 Float_t ptITSouter = trackITSouter.Pt();
931 if(ptITSouter==0.) continue;
932 fPtSelITSouter->Fill(ptITSouter);
933 fPtITSouterminPtTPCvsPtAll->Fill(pt,(1./ptITSouter-1./ptTPC)/(1./ptITSouter) );
934 fPtITSouterminPtTPCvsPtAllNPointTPC->Fill(pt,(1./ptITSouter-1./ptTPC)/(1./ptITSouter),nClustersTPC);
935 if(nClustersTPC>0.) fPtITSouterminPtTPCvsPtAllNPointTPCS->Fill(pt,(1./ptITSouter-1./ptTPC)/(1./ptITSouter),track->GetTPCnclsS()/nClustersTPC);
936 fPtITSouterminPtTPCvsPtAllDCAR->Fill(pt,(1./ptITSouter-1./ptTPC)/(1./ptITSouter),dca2D);
937 fPtITSouterminPtTPCvsPtAllDCAZ->Fill(pt,(1./ptITSouter-1./ptTPC)/(1./ptITSouter),dcaZ);
938 fPtITSouterminPtTPCvsPtAllPhi->Fill(pt,(1./ptITSouter-1./ptTPC)/(1./ptITSouter),phi);
939 fPtITSouterminPtTPCvsPtAllNPointITS->Fill(pt,(1./ptITSouter-1./ptTPC)/(1./ptITSouter),nPointITS);
940 fPtITSouterminPtTPCvsPtAllNSigmaToVertex->Fill(pt,(1./ptITSouter-1./ptTPC)/(1./ptITSouter),nSigmaToVertex);
941 fPtITSouterminPtTPCvsPtAllChi2C->Fill(pt,(1./ptITSouter-1./ptTPC)/(1./ptITSouter),chi2C);
942 fPtITSouterminPtTPCvsPtAllRel1PtUncertainty->Fill(pt,(1./ptITSouter-1./ptTPC)/(1./ptITSouter),relUncertainty1Pt);
943 fPtITSouterminPtTPCvsPtAllChi2PerNClusTPC->Fill(pt,(1./ptITSouter-1./ptTPC)/(1./ptITSouter),chi2PerClusterTPC);
944 if(nPointITS>3) fPtITSouterminPtTPCvsPtAllChi2PerNClusITS->Fill(pt,(1./ptITSouter-1./ptTPC)/(1./ptITSouter),chi2PerNPointITS);
945 if(track->HasPointOnITSLayer(0)) {
946 fPtITSouterminPtTPCvsPtAllITSLayer0->Fill(pt,(1./ptITSouter-1./ptTPC)/(1./ptITSouter));
947 if(nPointITS>3) fPtITSouterminPtTPCvsPtAllChi2PerNClusITSLayer0->Fill(pt,(1./ptITSouter-1./ptTPC)/(1./ptITSouter),chi2PerNPointITS);
949 if(!track->HasPointOnITSLayer(0) && track->HasPointOnITSLayer(1)) {
950 fPtITSouterminPtTPCvsPtAllITSLayer1->Fill(pt,(1./ptITSouter-1./ptTPC)/(1./ptITSouter));
951 if(nPointITS>3) fPtITSouterminPtTPCvsPtAllChi2PerNClusITSLayer1->Fill(pt,(1./ptITSouter-1./ptTPC)/(1./ptITSouter),chi2PerNPointITS);
953 if(!track->HasPointOnITSLayer(0) && !track->HasPointOnITSLayer(1) && track->HasPointOnITSLayer(2)) {
954 fPtITSouterminPtTPCvsPtAllITSLayer2->Fill(pt,(1./ptITSouter-1./ptTPC)/(1./ptITSouter));
955 if(nPointITS>3) fPtITSouterminPtTPCvsPtAllChi2PerNClusITSLayer2->Fill(pt,(1./ptITSouter-1./ptTPC)/(1./ptITSouter),chi2PerNPointITS);
957 if(!track->HasPointOnITSLayer(0) && !track->HasPointOnITSLayer(1) && !track->HasPointOnITSLayer(2) && track->HasPointOnITSLayer(3)) {
958 fPtITSouterminPtTPCvsPtAllITSLayer3->Fill(pt,(1./ptITSouter-1./ptTPC)/(1./ptITSouter));
959 if(nPointITS>3) fPtITSouterminPtTPCvsPtAllChi2PerNClusITSLayer3->Fill(pt,(1./ptITSouter-1./ptTPC)/(1./ptITSouter),chi2PerNPointITS);
961 if(!track->HasPointOnITSLayer(0) && !track->HasPointOnITSLayer(1) && !track->HasPointOnITSLayer(2) && !track->HasPointOnITSLayer(3) && track->HasPointOnITSLayer(4)) {
962 fPtITSouterminPtTPCvsPtAllITSLayer4->Fill(pt,(1./ptITSouter-1./ptTPC)/(1./ptITSouter));
963 if(nPointITS>3) fPtITSouterminPtTPCvsPtAllChi2PerNClusITSLayer4->Fill(pt,(1./ptITSouter-1./ptTPC)/(1./ptITSouter),chi2PerNPointITS);
965 if(!track->HasPointOnITSLayer(0) && !track->HasPointOnITSLayer(1) && !track->HasPointOnITSLayer(2) && !track->HasPointOnITSLayer(3) && !track->HasPointOnITSLayer(4) && track->HasPointOnITSLayer(5)) {
966 fPtITSouterminPtTPCvsPtAllITSLayer5->Fill(pt,(1./ptITSouter-1./ptTPC)/(1./ptITSouter));
967 if(nPointITS>3) fPtITSouterminPtTPCvsPtAllChi2PerNClusITSLayer5->Fill(pt,(1./ptITSouter-1./ptTPC)/(1./ptITSouter),chi2PerNPointITS);
970 if(!track->HasPointOnITSLayer(0) && !track->HasPointOnITSLayer(1)) {
971 fPtITSouterminPtTPCvsPtAllNoSPD->Fill(pt,(1./ptITSouter-1./ptTPC)/(1./ptITSouter));
972 if(nPointITS>3) fPtITSouterminPtTPCvsPtAllChi2PerNClusITSNoSPD->Fill(pt,(1./ptITSouter-1./ptTPC)/(1./ptITSouter),chi2PerNPointITS);
974 if(!track->HasPointOnITSLayer(2) && !track->HasPointOnITSLayer(3)) {
975 fPtITSouterminPtTPCvsPtAllNoSDD->Fill(pt,(1./ptITSouter-1./ptTPC)/(1./ptITSouter));
976 if(nPointITS>3) fPtITSouterminPtTPCvsPtAllChi2PerNClusITSNoSDD->Fill(pt,(1./ptITSouter-1./ptTPC)/(1./ptITSouter),chi2PerNPointITS);
978 if(!track->HasPointOnITSLayer(4) && !track->HasPointOnITSLayer(5)) {
979 fPtITSouterminPtTPCvsPtAllNoSSD->Fill(pt,(1./ptITSouter-1./ptTPC)/(1./ptITSouter));
980 if(nPointITS>3) fPtITSouterminPtTPCvsPtAllChi2PerNClusITSNoSSD->Fill(pt,(1./ptITSouter-1./ptTPC)/(1./ptITSouter),chi2PerNPointITS);
984 }//fTrackCuts selection
988 if (fTrackCutsITS->AcceptTrack(track)) {
991 fPtSelTPCITS->Fill(ptTPC);
992 fPtITSminPtTPCvsPtITS->Fill(pt,(1./pt-1./ptTPC)/(1./pt) );
993 fPtITSminPtTPCvsPtITSNPointTPC->Fill(pt,(1./pt-1./ptTPC)/(1./pt),nClustersTPC);
994 if(nClustersTPC>0.) fPtITSminPtTPCvsPtITSNPointTPCS->Fill(pt,(1./pt-1./ptTPC)/(1./pt),track->GetTPCnclsS()/nClustersTPC);
995 fPtITSminPtTPCvsPtITSDCAR->Fill(pt,(1./pt-1./ptTPC)/(1./pt),dca2D);
996 fPtITSminPtTPCvsPtITSDCAZ->Fill(pt,(1./pt-1./ptTPC)/(1./pt),dcaZ);
997 fPtITSminPtTPCvsPtITSPhi->Fill(pt,(pt-ptTPC)/(pt),phi);
998 fPtITSminPtTPCvsPtITSNPointITS->Fill(pt,(pt-ptTPC)/(pt),nPointITS);
999 fPtITSminPtTPCvsPtITSNSigmaToVertex->Fill(pt,(1./pt-1./ptTPC)/(1./pt),nSigmaToVertex);
1000 fPtITSminPtTPCvsPtITSChi2C->Fill(pt,(1./pt-1./ptTPC)/(1./pt),chi2C);
1001 fPtITSminPtTPCvsPtITSRel1PtUncertainty->Fill(pt,(1./pt-1./ptTPC)/(1./pt),relUncertainty1Pt);
1002 fPtITSminPtTPCvsPtITSChi2PerNClusTPC->Fill(pt,(1./pt-1./ptTPC)/(1./pt),chi2PerClusterTPC);
1003 if(nPointITS>3) fPtITSminPtTPCvsPtITSChi2PerNClusITS->Fill(pt,(1./pt-1./ptTPC)/(1./pt),chi2PerNPointITS);
1004 fPtITSminPtTPCvsNPointTPCPhi->Fill((1./pt-1./ptTPC)/(1./pt),nClustersTPC,phi);
1005 fPtITSminPtTPCvsNPointITSPhi->Fill((1./pt-1./ptTPC)/(1./pt),nPointITS,phi);
1006 fPtITSminPtTPCvsRel1PtUncertaintyPhi->Fill((1./pt-1./ptTPC)/(1./pt),relUncertainty1Pt,phi);
1008 fPtRel1PtUncertaintyChi2PerClusTPC->Fill(pt,relUncertainty1Pt,chi2PerClusterTPC);
1009 fPtNPointTPCSChi2PerClusTPC->Fill(pt,track->GetTPCnclsS()/nClustersTPC,chi2PerClusterTPC);
1010 fPtNPointTPCSRel1PtUncertainty->Fill(pt,track->GetTPCnclsS()/nClustersTPC,relUncertainty1Pt);
1011 if(track->GetTPCnclsS()/nClustersTPC>0.05) fPtRel1PtUncertaintyChi2PerClusTPCSharedSel->Fill(pt,relUncertainty1Pt,chi2PerClusterTPC);
1012 }//fTrackCutsITS loop
1017 PostData(0, fHistList);
1018 PostData(1, fHistListTPC);
1019 PostData(2, fHistListITS);
1020 PostData(3, fHistListCosmics);
1023 //________________________________________________________________________
1024 Bool_t AliPWG4HighPtQATPConly::IsCosmic(const AliESDtrack *track1 , Int_t trackNumber, Double_t ptMin)
1026 Bool_t candidate1 = kFALSE;
1027 Bool_t candidate2 = kFALSE;
1028 if(!track1) return candidate1;
1030 Int_t nTracks = fESD->GetNumberOfTracks();
1032 for (Int_t iTrack = trackNumber+1; iTrack < nTracks; iTrack++) {
1033 candidate2 = kFALSE;
1034 AliESDtrack *track2 = fESD->GetTrack(iTrack);
1035 if(!track2) continue;
1036 if(!(fTrackCuts->AcceptTrack(track2))) continue;
1037 if(track2->Pt()<ptMin) continue;
1039 //Check if same charge. If not same charge, pair is cosmic candidate
1040 //Removed condition for time being. Not so clear how wel we can measure curvature at high momenta
1041 // if( (track1->GetSign()*track2->GetSign()) > 0. ) continue;
1043 //Check if back-to-back
1044 Double_t mom1[3],mom2[3];
1045 track1->GetPxPyPz(mom1);
1046 track2->GetPxPyPz(mom2);
1047 Double_t cosTheta = (mom1[0]*mom2[0]+mom1[1]*mom2[1]+mom1[2]*mom2[2])/( TMath::Sqrt(mom1[0]*mom1[0]+mom1[1]*mom1[1]+mom1[2]*mom1[2])*TMath::Sqrt(mom2[0]*mom2[0]+mom2[1]*mom2[1]+mom2[2]*mom2[2]) );
1048 Double_t theta = TMath::ACos(cosTheta);
1049 if(TMath::Abs(TMath::Pi()-theta)<fMaxCosmicAngle) { candidate1 = kTRUE; candidate2 = kTRUE;}
1052 fDeltaPtCosmicCandidates->Fill(track1->Pt()-track2->Pt());
1053 fDeltaPhi->Fill(track1->Phi()-track2->Phi());
1054 fDeltaEta->Fill(track1->Eta()-track2->Eta());
1060 fPtCosmicCandidates->Fill(track1->Pt());
1066 //________________________________________________________________________
1067 void AliPWG4HighPtQATPConly::Terminate(Option_t *)