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", ""),
73 fPtAllminPtTPCvsPtAll(0),
74 fPtAllminPtTPCvsPtAllEtaPos(0),
75 fPtAllminPtTPCvsPtAllEtaNeg(0),
76 fPtAllminPtTPCvsPtAllNPointTPC(0),
77 fPtAllminPtTPCvsPtAllDCAR(0),
78 fPtAllminPtTPCvsPtAllDCAZ(0),
79 fPtAllminPtTPCvsPtAllPhi(0),
80 fPtAllminPtTPCvsPtAllNPointITS(0),
81 fPtAllminPtTPCvsPtAllNSigmaToVertex(0),
82 fPtAllminPtTPCvsPtAllChi2C(0),
83 fPtAllminPtTPCvsPtAllRel1PtUncertainty(0),
84 fPtAllminPtTPCvsPtAllChi2PerNClusTPC(0),
85 fPtAllminPtTPCvsPtAllChi2PerNClusITS(0),
86 fPtAllminPtTPCvsNPointTPCPhi(0),
87 fPtAllminPtTPCvsNPointITSPhi(0),
88 fPtAllminPtTPCvsRel1PtUncertaintyPhi(0),
91 fPtITSouterminPtTPCvsPtAll(0),
92 fPtITSouterminPtTPCvsPtAllEtaPos(0),
93 fPtITSouterminPtTPCvsPtAllEtaNeg(0),
94 fPtITSouterminPtTPCvsPtAllNPointTPC(0),
95 fPtITSouterminPtTPCvsPtAllDCAR(0),
96 fPtITSouterminPtTPCvsPtAllDCAZ(0),
97 fPtITSouterminPtTPCvsPtAllPhi(0),
98 fPtITSouterminPtTPCvsPtAllNPointITS(0),
99 fPtITSouterminPtTPCvsPtAllNSigmaToVertex(0),
100 fPtITSouterminPtTPCvsPtAllChi2C(0),
101 fPtITSouterminPtTPCvsPtAllRel1PtUncertainty(0),
102 fPtITSouterminPtTPCvsPtAllChi2PerNClusTPC(0),
103 fPtITSouterminPtTPCvsPtAllChi2PerNClusITS(0),
104 fPtITSouterminPtTPCvsPtAllITSLayer0(0),
105 fPtITSouterminPtTPCvsPtAllITSLayer1(0),
106 fPtITSouterminPtTPCvsPtAllITSLayer2(0),
107 fPtITSouterminPtTPCvsPtAllITSLayer3(0),
108 fPtITSouterminPtTPCvsPtAllITSLayer4(0),
109 fPtITSouterminPtTPCvsPtAllITSLayer5(0),
110 fPtITSouterminPtTPCvsPtAllNoSPD(0),
111 fPtITSouterminPtTPCvsPtAllNoSDD(0),
112 fPtITSouterminPtTPCvsPtAllNoSSD(0),
113 fPtITSouterminPtTPCvsPtAllChi2PerNClusITSLayer0(0),
114 fPtITSouterminPtTPCvsPtAllChi2PerNClusITSLayer1(0),
115 fPtITSouterminPtTPCvsPtAllChi2PerNClusITSLayer2(0),
116 fPtITSouterminPtTPCvsPtAllChi2PerNClusITSLayer3(0),
117 fPtITSouterminPtTPCvsPtAllChi2PerNClusITSLayer4(0),
118 fPtITSouterminPtTPCvsPtAllChi2PerNClusITSLayer5(0),
119 fPtITSouterminPtTPCvsPtAllChi2PerNClusITSNoSPD(0),
120 fPtITSouterminPtTPCvsPtAllChi2PerNClusITSNoSDD(0),
121 fPtITSouterminPtTPCvsPtAllChi2PerNClusITSNoSSD(0),
128 fPtITSminPtTPCvsPtITS(0),
129 fPtITSminPtTPCvsPtITSEtaPos(0),
130 fPtITSminPtTPCvsPtITSEtaNeg(0),
131 fPtITSminPtTPCvsPtITSNPointTPC(0),
132 fPtITSminPtTPCvsPtITSDCAR(0),
133 fPtITSminPtTPCvsPtITSDCAZ(0),
134 fPtITSminPtTPCvsPtITSPhi(0),
135 fPtITSminPtTPCvsPtITSNPointITS(0),
136 fPtITSminPtTPCvsPtITSNSigmaToVertex(0),
137 fPtITSminPtTPCvsPtITSChi2C(0),
138 fPtITSminPtTPCvsPtITSRel1PtUncertainty(0),
139 fPtITSminPtTPCvsPtITSChi2PerNClusTPC(0),
140 fPtITSminPtTPCvsPtITSChi2PerNClusITS(0),
141 fPtITSminPtTPCvsNPointTPCPhi(0),
142 fPtITSminPtTPCvsNPointITSPhi(0),
143 fPtITSminPtTPCvsRel1PtUncertaintyPhi(0),
144 fPtRel1PtUncertaintyChi2PerClusTPC(0),
150 //________________________________________________________________________
151 AliPWG4HighPtQATPConly::AliPWG4HighPtQATPConly(const char *name):
152 AliAnalysisTask(name, ""),
164 fPtAllminPtTPCvsPtAll(0),
165 fPtAllminPtTPCvsPtAllEtaPos(0),
166 fPtAllminPtTPCvsPtAllEtaNeg(0),
167 fPtAllminPtTPCvsPtAllNPointTPC(0),
168 fPtAllminPtTPCvsPtAllDCAR(0),
169 fPtAllminPtTPCvsPtAllDCAZ(0),
170 fPtAllminPtTPCvsPtAllPhi(0),
171 fPtAllminPtTPCvsPtAllNPointITS(0),
172 fPtAllminPtTPCvsPtAllNSigmaToVertex(0),
173 fPtAllminPtTPCvsPtAllChi2C(0),
174 fPtAllminPtTPCvsPtAllRel1PtUncertainty(0),
175 fPtAllminPtTPCvsPtAllChi2PerNClusTPC(0),
176 fPtAllminPtTPCvsPtAllChi2PerNClusITS(0),
177 fPtAllminPtTPCvsNPointTPCPhi(0),
178 fPtAllminPtTPCvsNPointITSPhi(0),
179 fPtAllminPtTPCvsRel1PtUncertaintyPhi(0),
182 fPtITSouterminPtTPCvsPtAll(0),
183 fPtITSouterminPtTPCvsPtAllEtaPos(0),
184 fPtITSouterminPtTPCvsPtAllEtaNeg(0),
185 fPtITSouterminPtTPCvsPtAllNPointTPC(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 fPtITSminPtTPCvsPtITSEtaPos(0),
221 fPtITSminPtTPCvsPtITSEtaNeg(0),
222 fPtITSminPtTPCvsPtITSNPointTPC(0),
223 fPtITSminPtTPCvsPtITSDCAR(0),
224 fPtITSminPtTPCvsPtITSDCAZ(0),
225 fPtITSminPtTPCvsPtITSPhi(0),
226 fPtITSminPtTPCvsPtITSNPointITS(0),
227 fPtITSminPtTPCvsPtITSNSigmaToVertex(0),
228 fPtITSminPtTPCvsPtITSChi2C(0),
229 fPtITSminPtTPCvsPtITSRel1PtUncertainty(0),
230 fPtITSminPtTPCvsPtITSChi2PerNClusTPC(0),
231 fPtITSminPtTPCvsPtITSChi2PerNClusITS(0),
232 fPtITSminPtTPCvsNPointTPCPhi(0),
233 fPtITSminPtTPCvsNPointITSPhi(0),
234 fPtITSminPtTPCvsRel1PtUncertaintyPhi(0),
235 fPtRel1PtUncertaintyChi2PerClusTPC(0),
239 // Constructor. Initialization of Inputs and Outputs
241 Info("AliPWG4HighPtQATPConly","Calling Constructor");
242 // Input slot #0 works with a TChain ESD
243 DefineInput(0, TChain::Class());
244 // Output slot #0, #1, #2 and #3 writes into a TList
245 DefineOutput(0, TList::Class());
246 DefineOutput(1, TList::Class());
247 DefineOutput(2, TList::Class());
248 // Output slot #4 and #5 writes into a AliESDtrackCuts
249 DefineOutput(3, AliESDtrackCuts::Class());
250 DefineOutput(4, AliESDtrackCuts::Class());
254 //________________________________________________________________________
255 void AliPWG4HighPtQATPConly::LocalInit()
258 // Only called once at beginning
260 PostData(3,fTrackCuts);
261 PostData(4,fTrackCutsITS);
264 //________________________________________________________________________
265 void AliPWG4HighPtQATPConly::ConnectInputData(Option_t *)
269 AliDebug(2,Form(">> AliPWG4HighPtSpectra::ConnectInputData \n"));
270 TTree* tree = dynamic_cast<TTree*> (GetInputData(0));
272 AliDebug(2,Form( "ERROR: Could not read chain from input slot 0 \n"));
276 AliESDInputHandler *esdH = dynamic_cast<AliESDInputHandler*> (AliAnalysisManager::GetAnalysisManager()->GetInputEventHandler());
279 AliDebug(2,Form("ERROR: Could not get ESDInputHandler"));
282 fESD = esdH->GetEvent();
284 AliMCEventHandler *eventHandler = dynamic_cast<AliMCEventHandler*> (AliAnalysisManager::GetAnalysisManager()->GetMCtruthEventHandler());
286 AliDebug(2,Form( "ERROR: Could not retrieve MC event handler \n"));
289 fMC = eventHandler->MCEvent();
291 fESDfriend = esdH->GetESDfriend();
295 //________________________________________________________________________
296 void AliPWG4HighPtQATPConly::CreateOutputObjects() {
297 //Create output objects
298 AliDebug(2,Form(">> AliPWG4HighPtQATPConly::CreateOutputObjects \n"));
300 Bool_t oldStatus = TH1::AddDirectoryStatus();
301 TH1::AddDirectory(kFALSE);
304 fHistList = new TList();
306 fHistListTPC = new TList();
308 fHistListITS = new TList();
310 Int_t fgkNPhiBins=18;
311 Float_t kMinPhi = 0.;
312 Float_t kMaxPhi = 2.*TMath::Pi();
313 Double_t *binsPhi=new Double_t[fgkNPhiBins+1];
314 for(Int_t i=0; i<=fgkNPhiBins; i++) binsPhi[i]=(Double_t)kMinPhi + (kMaxPhi-kMinPhi)/fgkNPhiBins*(Double_t)i ;
317 Float_t fgkPtMax=fPtMax;
319 Float_t ptBinEdges[2][2];
320 ptBinEdges[0][0] = 10.;
321 ptBinEdges[0][1] = 1.;
322 ptBinEdges[1][0] = 20.;
323 ptBinEdges[1][1] = 2.;
324 Float_t binWidth3 = 5.;
326 ptBinEdges[0][0] = 100.;
327 ptBinEdges[0][1] = 5.;
328 ptBinEdges[1][0] = 300.;
329 ptBinEdges[1][1] = 10.;
333 const Float_t ptmin1 = fgkPtMin;
334 const Float_t ptmax1 = ptBinEdges[0][0];
335 const Float_t ptmin2 = ptmax1 ;
336 const Float_t ptmax2 = ptBinEdges[1][0];
337 const Float_t ptmin3 = ptmax2 ;
338 const Float_t ptmax3 = fgkPtMax;
339 const Int_t nbin11 = (int)((ptmax1-ptmin1)/ptBinEdges[0][1]);
340 const Int_t nbin12 = (int)((ptmax2-ptmin2)/ptBinEdges[1][1])+nbin11;
341 const Int_t nbin13 = (int)((ptmax3-ptmin3)/binWidth3)+nbin12;
342 Int_t fgkNPtBins=nbin13;
343 //Create array with low edges of each bin
344 Double_t *binsPt=new Double_t[fgkNPtBins+1];
345 for(Int_t i=0; i<=fgkNPtBins; i++) {
346 if(i<=nbin11) binsPt[i]=(Double_t)ptmin1 + (ptmax1-ptmin1)/nbin11*(Double_t)i ;
347 if(i<=nbin12 && i>nbin11) binsPt[i]=(Double_t)ptmin2 + (ptmax2-ptmin2)/(nbin12-nbin11)*((Double_t)i-(Double_t)nbin11) ;
348 if(i<=nbin13 && i>nbin12) binsPt[i]=(Double_t)ptmin3 + (ptmax3-ptmin3)/(nbin13-nbin12)*((Double_t)i-(Double_t)nbin12) ;
351 Float_t fgkChi2PerClusMin = 0.;
352 Float_t fgkChi2PerClusMax = 4.;
353 Int_t fgkNChi2PerClusBins = (int)(fgkChi2PerClusMax*10.);
354 Double_t *binsChi2PerClus=new Double_t[fgkNChi2PerClusBins+1];
355 for(Int_t i=0; i<=fgkNChi2PerClusBins; i++) binsChi2PerClus[i]=(Double_t)fgkChi2PerClusMin + (fgkChi2PerClusMax-fgkChi2PerClusMin)/fgkNChi2PerClusBins*(Double_t)i ;
357 Int_t fgkNResPtBins=80;
358 Float_t fgkResPtMin = -1.;
359 Float_t fgkResPtMax = 1.;
360 Double_t *binsResPt=new Double_t[fgkNResPtBins+1];
361 for(Int_t i=0; i<=fgkNResPtBins; i++) binsResPt[i]=(Double_t)fgkResPtMin + (fgkResPtMax-fgkResPtMin)/fgkNResPtBins*(Double_t)i ;
363 Int_t fgkNEtaBins=20;
364 Float_t fgkEtaMin = -1.;
365 Float_t fgkEtaMax = 1.;
366 Double_t *binsEta=new Double_t[fgkNEtaBins+1];
367 for(Int_t i=0; i<=fgkNEtaBins; i++) binsEta[i]=(Double_t)fgkEtaMin + (fgkEtaMax-fgkEtaMin)/fgkNEtaBins*(Double_t)i ;
369 Int_t fgkNNPointTPCBins=80;
370 Float_t fgkNPointTPCMin = 0.5;
371 Float_t fgkNPointTPCMax = 160.5;
372 Double_t *binsNPointTPC=new Double_t[fgkNNPointTPCBins+1];
373 for(Int_t i=0; i<=fgkNNPointTPCBins; i++) binsNPointTPC[i]=(Double_t)fgkNPointTPCMin + (fgkNPointTPCMax-fgkNPointTPCMin)/fgkNNPointTPCBins*(Double_t)i ;
375 Int_t fgkNDCARBins=80;
376 Float_t fgkDCARMin = -0.2;
377 Float_t fgkDCARMax = 0.2;
378 Double_t *binsDCAR=new Double_t[fgkNDCARBins+1];
379 for(Int_t i=0; i<=fgkNDCARBins; i++) binsDCAR[i]=(Double_t)fgkDCARMin + (fgkDCARMax-fgkDCARMin)/fgkNDCARBins*(Double_t)i ;
381 Int_t fgkNDCAZBins=80;
382 Float_t fgkDCAZMin = -2.;
383 Float_t fgkDCAZMax = 2.;
384 Double_t *binsDCAZ=new Double_t[fgkNDCAZBins+1];
385 for(Int_t i=0; i<=fgkNDCAZBins; i++) binsDCAZ[i]=(Double_t)fgkDCAZMin + (fgkDCAZMax-fgkDCAZMin)/fgkNDCAZBins*(Double_t)i ;
387 Int_t fgkNNPointITSBins=9;
388 Float_t fgkNPointITSMin = -0.5;
389 Float_t fgkNPointITSMax = 8.5;
390 Double_t *binsNPointITS=new Double_t[fgkNNPointITSBins+1];
391 for(Int_t i=0; i<=fgkNNPointITSBins; i++) binsNPointITS[i]=(Double_t)fgkNPointITSMin + (fgkNPointITSMax-fgkNPointITSMin)/fgkNNPointITSBins*(Double_t)i ;
393 Int_t fgkNNSigmaToVertexBins=40;
394 Float_t fgkNSigmaToVertexMin = 0.;
395 Float_t fgkNSigmaToVertexMax = 8.;
396 Double_t *binsNSigmaToVertex=new Double_t[fgkNNSigmaToVertexBins+1];
397 for(Int_t i=0; i<=fgkNNSigmaToVertexBins; i++) binsNSigmaToVertex[i]=(Double_t)fgkNSigmaToVertexMin + (fgkNSigmaToVertexMax-fgkNSigmaToVertexMin)/fgkNNSigmaToVertexBins*(Double_t)i ;
399 Int_t fgkNChi2CBins=20;
400 Float_t fgkChi2CMin = 0.;
401 Float_t fgkChi2CMax = 10.;
402 Double_t *binsChi2C=new Double_t[fgkNChi2CBins+1];
403 for(Int_t i=0; i<=fgkNChi2CBins; i++) binsChi2C[i]=(Double_t)fgkChi2CMin + (fgkChi2CMax-fgkChi2CMin)/fgkNChi2CBins*(Double_t)i ;
405 Int_t fgkNRel1PtUncertaintyBins=30;
406 Float_t fgkRel1PtUncertaintyMin = 0.;
407 Float_t fgkRel1PtUncertaintyMax = 0.3;
408 Double_t *binsRel1PtUncertainty=new Double_t[fgkNRel1PtUncertaintyBins+1];
409 for(Int_t i=0; i<=fgkNRel1PtUncertaintyBins; i++) binsRel1PtUncertainty[i]=(Double_t)fgkRel1PtUncertaintyMin + (fgkRel1PtUncertaintyMax-fgkRel1PtUncertaintyMin)/fgkNRel1PtUncertaintyBins*(Double_t)i ;
411 fNEventAll = new TH1F("fNEventAll","NEventAll",1,-0.5,0.5);
412 fHistList->Add(fNEventAll);
413 fNEventSel = new TH1F("fNEventSel","NEvent Selected for analysis",1,-0.5,0.5);
414 fHistList->Add(fNEventSel);
415 fPtAll = new TH1F("fPtAll","PtAll",fgkNPtBins, binsPt);
416 fHistList->Add(fPtAll);
417 fPtSel = new TH1F("fPtSel","PtSel",fgkNPtBins, binsPt);
418 fHistList->Add(fPtSel);
420 fPtAllminPtTPCvsPtAll = new TH2F("fPtAllminPtTPCvsPtAll","PtAllminPtTPCvsPtAll",fgkNPtBins, binsPt,fgkNResPtBins,binsResPt);
421 fPtAllminPtTPCvsPtAll->SetXTitle("p_{t}^{Global}");
422 fPtAllminPtTPCvsPtAll->SetYTitle("(1/p_{t}^{Global}-1/p_{t}^{TPC})/(1/p_{t}^{Global})");
423 fHistList->Add(fPtAllminPtTPCvsPtAll);
425 fPtAllminPtTPCvsPtAllEtaPos = new TH3F("fPtAllminPtTPCvsPtAllEtaPos","PtAllminPtTPCvsPtAllEtaPos",fgkNPtBins, binsPt,fgkNResPtBins,binsResPt,fgkNEtaBins,binsEta);
426 fPtAllminPtTPCvsPtAllEtaPos->SetXTitle("p_{t}^{Global}");
427 fPtAllminPtTPCvsPtAllEtaPos->SetYTitle("(1/p_{t}^{Global}-1/p_{t}^{TPC})/(1/p_{t}^{Global})");
428 fPtAllminPtTPCvsPtAllEtaPos->SetZTitle("#eta");
429 fHistList->Add(fPtAllminPtTPCvsPtAllEtaPos);
431 fPtAllminPtTPCvsPtAllEtaNeg = new TH3F("fPtAllminPtTPCvsPtAllEtaNeg","PtAllminPtTPCvsPtAllEtaNeg",fgkNPtBins, binsPt,fgkNResPtBins,binsResPt,fgkNEtaBins,binsEta);
432 fPtAllminPtTPCvsPtAllEtaNeg->SetXTitle("p_{t}^{Global}");
433 fPtAllminPtTPCvsPtAllEtaNeg->SetYTitle("(1/p_{t}^{Global}-1/p_{t}^{TPC})/(1/p_{t}^{Global})");
434 fPtAllminPtTPCvsPtAllEtaNeg->SetZTitle("#eta");
435 fHistList->Add(fPtAllminPtTPCvsPtAllEtaNeg);
437 fPtAllminPtTPCvsPtAllNPointTPC = new TH3F("fPtAllminPtTPCvsPtAllNPointTPC","PtAllminPtTPCvsPtAllNPointTPC",fgkNPtBins, binsPt,fgkNResPtBins,binsResPt,fgkNNPointTPCBins,binsNPointTPC);
438 fPtAllminPtTPCvsPtAllNPointTPC->SetXTitle("p_{t}^{Global}");
439 fPtAllminPtTPCvsPtAllNPointTPC->SetYTitle("(1/p_{t}^{Global}-1/p_{t}^{TPC})/(1/p_{t}^{Global})");
440 fPtAllminPtTPCvsPtAllNPointTPC->SetZTitle("N_{point,TPC}");
441 fHistList->Add(fPtAllminPtTPCvsPtAllNPointTPC);
443 fPtAllminPtTPCvsPtAllDCAR = new TH3F("fPtAllminPtTPCvsPtAllDCAR","PtAllminPtTPCvsPtAllDCAR",fgkNPtBins, binsPt,fgkNResPtBins,binsResPt,fgkNDCARBins,binsDCAR);
444 fPtAllminPtTPCvsPtAllDCAR->SetXTitle("p_{t}^{Global}");
445 fPtAllminPtTPCvsPtAllDCAR->SetYTitle("(1/p_{t}^{Global}-1/p_{t}^{TPC})/(1/p_{t}^{Global})");
446 fPtAllminPtTPCvsPtAllDCAR->SetZTitle("DCA_{R}");
447 fHistList->Add(fPtAllminPtTPCvsPtAllDCAR);
449 fPtAllminPtTPCvsPtAllDCAZ = new TH3F("fPtAllminPtTPCvsPtAllDCAZ","PtAllminPtTPCvsPtAllDCAZ",fgkNPtBins, binsPt,fgkNResPtBins,binsResPt,fgkNDCAZBins,binsDCAZ);
450 fPtAllminPtTPCvsPtAllDCAZ->SetXTitle("p_{t}^{Global}");
451 fPtAllminPtTPCvsPtAllDCAZ->SetYTitle("(1/p_{t}^{Global}-1/p_{t}^{TPC})/(1/p_{t}^{Global})");
452 fPtAllminPtTPCvsPtAllDCAZ->SetZTitle("DCA_{Z}");
453 fHistList->Add(fPtAllminPtTPCvsPtAllDCAZ);
455 fPtAllminPtTPCvsPtAllPhi = new TH3F("fPtAllminPtTPCvsPtAllPhi","PtAllminPtTPCvsPtAllPhi",fgkNPtBins, binsPt,fgkNResPtBins,binsResPt,fgkNPhiBins,binsPhi);
456 fPtAllminPtTPCvsPtAllPhi->SetXTitle("p_{t}^{Global}");
457 fPtAllminPtTPCvsPtAllPhi->SetYTitle("(1/p_{t}^{Global}-1/p_{t}^{TPC})/(1/p_{t}^{Global})");
458 fPtAllminPtTPCvsPtAllPhi->SetZTitle("#phi");
459 fHistList->Add(fPtAllminPtTPCvsPtAllPhi);
461 fPtAllminPtTPCvsPtAllNPointITS = new TH3F("fPtAllminPtTPCvsPtAllNPointITS","PtAllminPtTPCvsPtAllNPointITS",fgkNPtBins, binsPt,fgkNResPtBins,binsResPt,fgkNNPointITSBins,binsNPointITS);
462 fPtAllminPtTPCvsPtAllNPointITS->SetXTitle("p_{t}^{Global}");
463 fPtAllminPtTPCvsPtAllNPointITS->SetYTitle("(1/p_{t}^{Global}-1/p_{t}^{TPC})/(1/p_{t}^{Global})");
464 fPtAllminPtTPCvsPtAllNPointITS->SetZTitle("N_{point,ITS}");
465 fHistList->Add(fPtAllminPtTPCvsPtAllNPointITS);
467 fPtAllminPtTPCvsPtAllNSigmaToVertex = new TH3F("fPtAllminPtTPCvsPtAllNSigmaToVertex","PtAllminPtTPCvsPtAllNSigmaToVertex",fgkNPtBins, binsPt,fgkNResPtBins,binsResPt,fgkNNSigmaToVertexBins,binsNSigmaToVertex);
468 fPtAllminPtTPCvsPtAllNSigmaToVertex->SetXTitle("p_{t}^{Global}");
469 fPtAllminPtTPCvsPtAllNSigmaToVertex->SetYTitle("(1/p_{t}^{Global}-1/p_{t}^{TPC})/(1/p_{t}^{Global})");
470 fPtAllminPtTPCvsPtAllNSigmaToVertex->SetZTitle("N#sigma to vertex");
471 fHistList->Add(fPtAllminPtTPCvsPtAllNSigmaToVertex);
473 fPtAllminPtTPCvsPtAllChi2C = new TH3F("fPtAllminPtTPCvsPtAllChi2C","PtAllminPtTPCvsPtAllChi2C",fgkNPtBins, binsPt,fgkNResPtBins,binsResPt,fgkNChi2CBins,binsChi2C);
474 fPtAllminPtTPCvsPtAllChi2C->SetXTitle("p_{t}^{Global}");
475 fPtAllminPtTPCvsPtAllChi2C->SetYTitle("(1/p_{t}^{Global}-1/p_{t}^{TPC})/(1/p_{t}^{Global})");
476 fPtAllminPtTPCvsPtAllChi2C->SetZTitle("Constrained #chi^{2}");
477 fHistList->Add(fPtAllminPtTPCvsPtAllChi2C);
479 fPtAllminPtTPCvsPtAllRel1PtUncertainty = new TH3F("fPtAllminPtTPCvsPtAllRel1PtUncertainty","PtAllminPtTPCvsPtAllRel1PtUncertainty",fgkNPtBins, binsPt,fgkNResPtBins,binsResPt,fgkNRel1PtUncertaintyBins,binsRel1PtUncertainty);
480 fPtAllminPtTPCvsPtAllRel1PtUncertainty->SetXTitle("p_{t}^{Global}");
481 fPtAllminPtTPCvsPtAllRel1PtUncertainty->SetYTitle("(1/p_{t}^{Global}-1/p_{t}^{TPC})/(1/p_{t}^{Global})");
482 fPtAllminPtTPCvsPtAllRel1PtUncertainty->SetZTitle("Rel1PtUncertainty");
483 fHistList->Add(fPtAllminPtTPCvsPtAllRel1PtUncertainty);
485 fPtAllminPtTPCvsPtAllChi2PerNClusTPC = new TH3F("fPtAllminPtTPCvsPtAllChi2PerNClusTPC","PtAllminPtTPCvsPtAllChi2PerNClusTPC",fgkNPtBins, binsPt,fgkNResPtBins,binsResPt,fgkNChi2PerClusBins,binsChi2PerClus);
486 fPtAllminPtTPCvsPtAllChi2PerNClusTPC->SetXTitle("p_{t}^{Global}");
487 fPtAllminPtTPCvsPtAllChi2PerNClusTPC->SetYTitle("(1/p_{t}^{Global}-1/p_{t}^{TPC})/(1/p_{t}^{Global})");
488 fPtAllminPtTPCvsPtAllChi2PerNClusTPC->SetZTitle("#chi^{2}/(2*NClusTPC-5)");
489 fHistList->Add(fPtAllminPtTPCvsPtAllChi2PerNClusTPC);
491 fPtAllminPtTPCvsPtAllChi2PerNClusITS = new TH3F("fPtAllminPtTPCvsPtAllChi2PerNClusITS","PtAllminPtTPCvsPtAllChi2PerNClusITS",fgkNPtBins, binsPt,fgkNResPtBins,binsResPt,fgkNChi2PerClusBins,binsChi2PerClus);
492 fPtAllminPtTPCvsPtAllChi2PerNClusITS->SetXTitle("p_{t}^{Global}");
493 fPtAllminPtTPCvsPtAllChi2PerNClusITS->SetYTitle("(1/p_{t}^{Global}-1/p_{t}^{TPC})/(1/p_{t}^{Global})");
494 fPtAllminPtTPCvsPtAllChi2PerNClusITS->SetZTitle("#chi^{2}/(2*NClusITS-5)");
495 fHistList->Add(fPtAllminPtTPCvsPtAllChi2PerNClusITS);
497 fPtAllminPtTPCvsNPointTPCPhi = new TH3F("fPtAllminPtTPCvsNPointTPCPhi","PtAllminPtTPCvsNPointTPCPhi",fgkNResPtBins,binsResPt,fgkNNPointTPCBins,binsNPointTPC,fgkNPhiBins,binsPhi);
498 fPtAllminPtTPCvsNPointTPCPhi->SetXTitle("(1/p_{t}^{Global}-1/p_{t}^{TPC})/(1/p_{t}^{Global})");
499 fPtAllminPtTPCvsNPointTPCPhi->SetYTitle("N_{point,TPC}");
500 fPtAllminPtTPCvsNPointTPCPhi->SetZTitle("#phi");
501 fHistList->Add(fPtAllminPtTPCvsNPointTPCPhi);
503 fPtAllminPtTPCvsNPointITSPhi = new TH3F("fPtAllminPtTPCvsNPointITSPhi","PtAllminPtTPCvsNPointITSPhi",fgkNResPtBins,binsResPt,fgkNNPointITSBins,binsNPointITS,fgkNPhiBins,binsPhi);
504 fPtAllminPtTPCvsNPointITSPhi->SetXTitle("(1/p_{t}^{Global}-1/p_{t}^{TPC})/(1/p_{t}^{Global})");
505 fPtAllminPtTPCvsNPointITSPhi->SetYTitle("N_{point,ITS}");
506 fPtAllminPtTPCvsNPointITSPhi->SetZTitle("#phi");
507 fHistList->Add(fPtAllminPtTPCvsNPointITSPhi);
509 fPtAllminPtTPCvsRel1PtUncertaintyPhi = new TH3F("fPtAllminPtTPCvsRel1PtUncertaintyPhi","PtAllminPtTPCvsRel1PtUncertaintyPhi",fgkNResPtBins,binsResPt,fgkNRel1PtUncertaintyBins,binsRel1PtUncertainty,fgkNPhiBins,binsPhi);
510 fPtAllminPtTPCvsRel1PtUncertaintyPhi->SetXTitle("(1/p_{t}^{Global}-1/p_{t}^{TPC})/(1/p_{t}^{Global})");
511 fPtAllminPtTPCvsRel1PtUncertaintyPhi->SetYTitle("Rel1PtUncertainty");
512 fPtAllminPtTPCvsRel1PtUncertaintyPhi->SetZTitle("#phi");
513 fHistList->Add(fPtAllminPtTPCvsRel1PtUncertaintyPhi);
515 fEtaPhiOutliers = new TH2F("fEtaPhiOutliers","PtAllminPtTPCvsPtAll",20, -1.,1.,fgkNPhiBins,binsPhi);
516 fEtaPhiOutliers->SetXTitle("#eta");
517 fEtaPhiOutliers->SetYTitle("#phi");
518 fHistList->Add(fEtaPhiOutliers);
520 //Global vs ITSouter-TPCinner
521 fPtSelITSouter = new TH1F("fPtSelITSouter","PtSelITSouter",fgkNPtBins,binsPt);
522 fHistList->Add(fPtSelITSouter);
524 fPtITSouterminPtTPCvsPtAll = new TH2F("fPtITSouterminPtTPCvsPtAll","PtITSouterminPtTPCvsPtAll",fgkNPtBins, binsPt,fgkNResPtBins,binsResPt);
525 fPtITSouterminPtTPCvsPtAll->SetXTitle("p_{t}^{Global}");
526 fPtITSouterminPtTPCvsPtAll->SetYTitle("(1/p_{t}^{ITSouter}-1/p_{t}^{TPCinner})/(1/p_{t}^{ITSouter})");
527 fHistList->Add(fPtITSouterminPtTPCvsPtAll);
529 fPtITSouterminPtTPCvsPtAllEtaPos = new TH3F("fPtITSouterminPtTPCvsPtAllEtaPos","PtITSouterminPtTPCvsPtAllEtaPos",fgkNPtBins, binsPt,fgkNResPtBins,binsResPt,fgkNEtaBins,binsEta);
530 fPtITSouterminPtTPCvsPtAllEtaPos->SetXTitle("p_{t}^{Global}");
531 fPtITSouterminPtTPCvsPtAllEtaPos->SetYTitle("(1/p_{t}^{Global}-1/p_{t}^{TPC})/(1/p_{t}^{Global})");
532 fHistList->Add(fPtITSouterminPtTPCvsPtAllEtaPos);
534 fPtITSouterminPtTPCvsPtAllEtaNeg = new TH3F("fPtITSouterminPtTPCvsPtAllEtaNeg","PtITSouterminPtTPCvsPtAllEtaNeg",fgkNPtBins, binsPt,fgkNResPtBins,binsResPt,fgkNEtaBins,binsEta);
535 fPtITSouterminPtTPCvsPtAllEtaNeg->SetXTitle("p_{t}^{Global}");
536 fPtITSouterminPtTPCvsPtAllEtaNeg->SetYTitle("(1/p_{t}^{Global}-1/p_{t}^{TPC})/(1/p_{t}^{Global})");
537 fHistList->Add(fPtITSouterminPtTPCvsPtAllEtaNeg);
539 fPtITSouterminPtTPCvsPtAllNPointTPC = new TH3F("fPtITSouterminPtTPCvsPtAllNPointTPC","PtITSouterminPtTPCvsPtAllNPointTPC",fgkNPtBins, binsPt,fgkNResPtBins,binsResPt,fgkNNPointTPCBins,binsNPointTPC);
540 fPtITSouterminPtTPCvsPtAllNPointTPC->SetXTitle("p_{t}^{Global}");
541 fPtITSouterminPtTPCvsPtAllNPointTPC->SetYTitle("(1/p_{t}^{ITSouter}-1/p_{t}^{TPCinner})/(1/p_{t}^{ITSouter})");
542 fPtITSouterminPtTPCvsPtAllNPointTPC->SetZTitle("N_{point,TPC}");
543 fHistList->Add(fPtITSouterminPtTPCvsPtAllNPointTPC);
545 fPtITSouterminPtTPCvsPtAllDCAR = new TH3F("fPtITSouterminPtTPCvsPtAllDCAR","PtITSouterminPtTPCvsPtAllDCAR",fgkNPtBins, binsPt,fgkNResPtBins,binsResPt,fgkNDCARBins,binsDCAR);
546 fPtITSouterminPtTPCvsPtAllDCAR->SetXTitle("p_{t}^{Global}");
547 fPtITSouterminPtTPCvsPtAllDCAR->SetYTitle("(1/p_{t}^{ITSouter}-1/p_{t}^{TPCinner})/(1/p_{t}^{ITSouter})");
548 fPtITSouterminPtTPCvsPtAllDCAR->SetZTitle("DCA_{R}");
549 fHistList->Add(fPtITSouterminPtTPCvsPtAllDCAR);
551 fPtITSouterminPtTPCvsPtAllDCAZ = new TH3F("fPtITSouterminPtTPCvsPtAllDCAZ","PtITSouterminPtTPCvsPtAllDCAZ",fgkNPtBins, binsPt,fgkNResPtBins,binsResPt,fgkNDCAZBins,binsDCAZ);
552 fPtITSouterminPtTPCvsPtAllDCAZ->SetXTitle("p_{t}^{Global}");
553 fPtITSouterminPtTPCvsPtAllDCAZ->SetYTitle("(1/p_{t}^{ITSouter}-1/p_{t}^{TPCinner})/(1/p_{t}^{ITSouter})");
554 fPtITSouterminPtTPCvsPtAllDCAZ->SetZTitle("DCA_{Z}");
555 fHistList->Add(fPtITSouterminPtTPCvsPtAllDCAZ);
557 fPtITSouterminPtTPCvsPtAllPhi = new TH3F("fPtITSouterminPtTPCvsPtAllPhi","PtITSouterminPtTPCvsPtAllPhi",fgkNPtBins, binsPt,fgkNResPtBins,binsResPt,fgkNPhiBins,binsPhi);
558 fPtITSouterminPtTPCvsPtAllPhi->SetXTitle("p_{t}^{Global}");
559 fPtITSouterminPtTPCvsPtAllPhi->SetYTitle("(1/p_{t}^{ITSouter}-1/p_{t}^{TPCinner})/(1/p_{t}^{ITSouter})");
560 fPtITSouterminPtTPCvsPtAllPhi->SetZTitle("#phi");
561 fHistList->Add(fPtITSouterminPtTPCvsPtAllPhi);
563 fPtITSouterminPtTPCvsPtAllNPointITS = new TH3F("fPtITSouterminPtTPCvsPtAllNPointITS","PtITSouterminPtTPCvsPtAllNPointITS",fgkNPtBins, binsPt,fgkNResPtBins,binsResPt,fgkNNPointITSBins,binsNPointITS);
564 fPtITSouterminPtTPCvsPtAllNPointITS->SetXTitle("p_{t}^{Global}");
565 fPtITSouterminPtTPCvsPtAllNPointITS->SetYTitle("(1/p_{t}^{ITSouter}-1/p_{t}^{TPCinner})/(1/p_{t}^{ITSouter})");
566 fPtITSouterminPtTPCvsPtAllNPointITS->SetZTitle("N_{point,ITS}");
567 fHistList->Add(fPtITSouterminPtTPCvsPtAllNPointITS);
569 fPtITSouterminPtTPCvsPtAllNSigmaToVertex = new TH3F("fPtITSouterminPtTPCvsPtAllNSigmaToVertex","PtITSouterminPtTPCvsPtAllNSigmaToVertex",fgkNPtBins, binsPt,fgkNResPtBins,binsResPt,fgkNNSigmaToVertexBins,binsNSigmaToVertex);
570 fPtITSouterminPtTPCvsPtAllNSigmaToVertex->SetXTitle("p_{t}^{Global}");
571 fPtITSouterminPtTPCvsPtAllNSigmaToVertex->SetYTitle("(1/p_{t}^{ITSouter}-1/p_{t}^{TPCinner})/(1/p_{t}^{ITSouter})");
572 fPtITSouterminPtTPCvsPtAllNSigmaToVertex->SetZTitle("N#sigma to vertex");
573 fHistList->Add(fPtITSouterminPtTPCvsPtAllNSigmaToVertex);
575 fPtITSouterminPtTPCvsPtAllChi2C = new TH3F("fPtITSouterminPtTPCvsPtAllChi2C","PtITSouterminPtTPCvsPtAllChi2C",fgkNPtBins, binsPt,fgkNResPtBins,binsResPt,fgkNChi2CBins,binsChi2C);
576 fPtITSouterminPtTPCvsPtAllChi2C->SetXTitle("p_{t}^{Global}");
577 fPtITSouterminPtTPCvsPtAllChi2C->SetYTitle("(1/p_{t}^{ITSouter}-1/p_{t}^{TPCinner})/(1/p_{t}^{ITSouter})");
578 fPtITSouterminPtTPCvsPtAllChi2C->SetZTitle("Constrained #chi^{2}");
579 fHistList->Add(fPtITSouterminPtTPCvsPtAllChi2C);
581 fPtITSouterminPtTPCvsPtAllRel1PtUncertainty = new TH3F("fPtITSouterminPtTPCvsPtAllRel1PtUncertainty","PtITSouterminPtTPCvsPtAllRel1PtUncertainty",fgkNPtBins, binsPt,fgkNResPtBins,binsResPt,fgkNRel1PtUncertaintyBins,binsRel1PtUncertainty);
582 fPtITSouterminPtTPCvsPtAllRel1PtUncertainty->SetXTitle("p_{t}^{Global}");
583 fPtITSouterminPtTPCvsPtAllRel1PtUncertainty->SetYTitle("(1/p_{t}^{ITSouter}-1/p_{t}^{TPCinner})/(1/p_{t}^{ITSouter})");
584 fPtITSouterminPtTPCvsPtAllRel1PtUncertainty->SetZTitle("Rel1PtUncertainty");
585 fHistList->Add(fPtITSouterminPtTPCvsPtAllRel1PtUncertainty);
587 fPtITSouterminPtTPCvsPtAllChi2PerNClusTPC = new TH3F("fPtITSouterminPtTPCvsPtAllChi2PerNClusTPC","PtITSouterminPtTPCvsPtAllChi2PerNClusTPC",fgkNPtBins, binsPt,fgkNResPtBins,binsResPt,fgkNChi2PerClusBins,binsChi2PerClus);
588 fPtITSouterminPtTPCvsPtAllChi2PerNClusTPC->SetXTitle("p_{t}^{Global}");
589 fPtITSouterminPtTPCvsPtAllChi2PerNClusTPC->SetYTitle("(1/p_{t}^{Global}-1/p_{t}^{TPC})/(1/p_{t}^{Global})");
590 fPtITSouterminPtTPCvsPtAllChi2PerNClusTPC->SetZTitle("#chi^{2}/(2*NClusTPC-5)");
591 fHistList->Add(fPtITSouterminPtTPCvsPtAllChi2PerNClusTPC);
593 fPtITSouterminPtTPCvsPtAllChi2PerNClusITS = new TH3F("fPtITSouterminPtTPCvsPtAllChi2PerNClusITS","PtITSouterminPtTPCvsPtAllChi2PerNClusITS",fgkNPtBins, binsPt,fgkNResPtBins,binsResPt,fgkNChi2PerClusBins,binsChi2PerClus);
594 fPtITSouterminPtTPCvsPtAllChi2PerNClusITS->SetXTitle("p_{t}^{Global}");
595 fPtITSouterminPtTPCvsPtAllChi2PerNClusITS->SetYTitle("(1/p_{t}^{Global}-1/p_{t}^{TPC})/(1/p_{t}^{Global})");
596 fPtITSouterminPtTPCvsPtAllChi2PerNClusITS->SetZTitle("#chi^{2}/(2*NClusITS-5)");
597 fHistList->Add(fPtITSouterminPtTPCvsPtAllChi2PerNClusITS);
599 //As function of ITS layers
600 fPtITSouterminPtTPCvsPtAllITSLayer0 = new TH2F("fPtITSouterminPtTPCvsPtAllITSLayer0","PtITSouterminPtTPCvsPtAllITSLayer0",fgkNPtBins, binsPt,fgkNResPtBins,binsResPt);
601 fPtITSouterminPtTPCvsPtAllITSLayer0->SetXTitle("p_{t}^{Global}");
602 fPtITSouterminPtTPCvsPtAllITSLayer0->SetYTitle("(1/p_{t}^{ITSouter}-1/p_{t}^{TPCinner})/(1/p_{t}^{ITSouter})");
603 fHistList->Add(fPtITSouterminPtTPCvsPtAllITSLayer0);
605 fPtITSouterminPtTPCvsPtAllITSLayer1 = new TH2F("fPtITSouterminPtTPCvsPtAllITSLayer1","PtITSouterminPtTPCvsPtAllITSLayer1",fgkNPtBins, binsPt,fgkNResPtBins,binsResPt);
606 fPtITSouterminPtTPCvsPtAllITSLayer1->SetXTitle("p_{t}^{Global}");
607 fPtITSouterminPtTPCvsPtAllITSLayer1->SetYTitle("(1/p_{t}^{ITSouter}-1/p_{t}^{TPCinner})/(1/p_{t}^{ITSouter})");
608 fHistList->Add(fPtITSouterminPtTPCvsPtAllITSLayer1);
610 fPtITSouterminPtTPCvsPtAllITSLayer2 = new TH2F("fPtITSouterminPtTPCvsPtAllITSLayer2","PtITSouterminPtTPCvsPtAllITSLayer2",fgkNPtBins, binsPt,fgkNResPtBins,binsResPt);
611 fPtITSouterminPtTPCvsPtAllITSLayer2->SetXTitle("p_{t}^{Global}");
612 fPtITSouterminPtTPCvsPtAllITSLayer2->SetYTitle("(1/p_{t}^{ITSouter}-1/p_{t}^{TPCinner})/(1/p_{t}^{ITSouter})");
613 fHistList->Add(fPtITSouterminPtTPCvsPtAllITSLayer2);
615 fPtITSouterminPtTPCvsPtAllITSLayer3 = new TH2F("fPtITSouterminPtTPCvsPtAllITSLayer3","PtITSouterminPtTPCvsPtAllITSLayer3",fgkNPtBins, binsPt,fgkNResPtBins,binsResPt);
616 fPtITSouterminPtTPCvsPtAllITSLayer3->SetXTitle("p_{t}^{Global}");
617 fPtITSouterminPtTPCvsPtAllITSLayer3->SetYTitle("(1/p_{t}^{ITSouter}-1/p_{t}^{TPCinner})/(1/p_{t}^{ITSouter})");
618 fHistList->Add(fPtITSouterminPtTPCvsPtAllITSLayer3);
620 fPtITSouterminPtTPCvsPtAllITSLayer4 = new TH2F("fPtITSouterminPtTPCvsPtAllITSLayer4","PtITSouterminPtTPCvsPtAllITSLayer4",fgkNPtBins, binsPt,fgkNResPtBins,binsResPt);
621 fPtITSouterminPtTPCvsPtAllITSLayer4->SetXTitle("p_{t}^{Global}");
622 fPtITSouterminPtTPCvsPtAllITSLayer4->SetYTitle("(1/p_{t}^{ITSouter}-1/p_{t}^{TPCinner})/(1/p_{t}^{ITSouter})");
623 fHistList->Add(fPtITSouterminPtTPCvsPtAllITSLayer4);
625 fPtITSouterminPtTPCvsPtAllITSLayer5 = new TH2F("fPtITSouterminPtTPCvsPtAllITSLayer5","PtITSouterminPtTPCvsPtAllITSLayer5",fgkNPtBins, binsPt,fgkNResPtBins,binsResPt);
626 fPtITSouterminPtTPCvsPtAllITSLayer5->SetXTitle("p_{t}^{Global}");
627 fPtITSouterminPtTPCvsPtAllITSLayer5->SetYTitle("(1/p_{t}^{ITSouter}-1/p_{t}^{TPCinner})/(1/p_{t}^{ITSouter})");
628 fHistList->Add(fPtITSouterminPtTPCvsPtAllITSLayer5);
630 fPtITSouterminPtTPCvsPtAllNoSPD = new TH2F("fPtITSouterminPtTPCvsPtAllNoSPD","PtITSouterminPtTPCvsPtAllNoSPD",fgkNPtBins, binsPt,fgkNResPtBins,binsResPt);
631 fPtITSouterminPtTPCvsPtAllNoSPD->SetXTitle("p_{t}^{Global}");
632 fPtITSouterminPtTPCvsPtAllNoSPD->SetYTitle("(1/p_{t}^{ITSouter}-1/p_{t}^{TPCinner})/(1/p_{t}^{ITSouter})");
633 fHistList->Add(fPtITSouterminPtTPCvsPtAllNoSPD);
635 fPtITSouterminPtTPCvsPtAllNoSDD = new TH2F("fPtITSouterminPtTPCvsPtAllNoSDD","PtITSouterminPtTPCvsPtAllNoSDD",fgkNPtBins, binsPt,fgkNResPtBins,binsResPt);
636 fPtITSouterminPtTPCvsPtAllNoSDD->SetXTitle("p_{t}^{Global}");
637 fPtITSouterminPtTPCvsPtAllNoSDD->SetYTitle("(1/p_{t}^{ITSouter}-1/p_{t}^{TPCinner})/(1/p_{t}^{ITSouter})");
638 fHistList->Add(fPtITSouterminPtTPCvsPtAllNoSDD);
640 fPtITSouterminPtTPCvsPtAllNoSSD = new TH2F("fPtITSouterminPtTPCvsPtAllNoSSD","PtITSouterminPtTPCvsPtAllNoSSD",fgkNPtBins, binsPt,fgkNResPtBins,binsResPt);
641 fPtITSouterminPtTPCvsPtAllNoSSD->SetXTitle("p_{t}^{Global}");
642 fPtITSouterminPtTPCvsPtAllNoSSD->SetYTitle("(1/p_{t}^{ITSouter}-1/p_{t}^{TPCinner})/(1/p_{t}^{ITSouter})");
643 fHistList->Add(fPtITSouterminPtTPCvsPtAllNoSSD);
646 fPtITSouterminPtTPCvsPtAllChi2PerNClusITSLayer0 = new TH3F("fPtITSouterminPtTPCvsPtAllChi2PerNClusITSLayer0","PtITSouterminPtTPCvsPtAllChi2PerNClusITSLayer0",fgkNPtBins, binsPt,fgkNResPtBins,binsResPt,fgkNChi2PerClusBins,binsChi2PerClus);
647 fPtITSouterminPtTPCvsPtAllChi2PerNClusITSLayer0->SetXTitle("p_{t}^{Global}");
648 fPtITSouterminPtTPCvsPtAllChi2PerNClusITSLayer0->SetYTitle("(1/p_{t}^{ITSouter}-1/p_{t}^{TPCinner})/(1/p_{t}^{ITSouter})");
649 fPtITSouterminPtTPCvsPtAllChi2PerNClusITSLayer0->SetZTitle("#chi^{2}/NPointITS");
650 fHistList->Add(fPtITSouterminPtTPCvsPtAllChi2PerNClusITSLayer0);
652 fPtITSouterminPtTPCvsPtAllChi2PerNClusITSLayer1 = new TH3F("fPtITSouterminPtTPCvsPtAllChi2PerNClusITSLayer1","PtITSouterminPtTPCvsPtAllChi2PerNClusITSLayer1",fgkNPtBins, binsPt,fgkNResPtBins,binsResPt,fgkNChi2PerClusBins,binsChi2PerClus);
653 fPtITSouterminPtTPCvsPtAllChi2PerNClusITSLayer1->SetXTitle("p_{t}^{Global}");
654 fPtITSouterminPtTPCvsPtAllChi2PerNClusITSLayer1->SetYTitle("(1/p_{t}^{ITSouter}-1/p_{t}^{TPCinner})/(1/p_{t}^{ITSouter})");
655 fPtITSouterminPtTPCvsPtAllChi2PerNClusITSLayer1->SetZTitle("#chi^{2}/NPointITS");
656 fHistList->Add(fPtITSouterminPtTPCvsPtAllChi2PerNClusITSLayer1);
658 fPtITSouterminPtTPCvsPtAllChi2PerNClusITSLayer2 = new TH3F("fPtITSouterminPtTPCvsPtAllChi2PerNClusITSLayer2","PtITSouterminPtTPCvsPtAllChi2PerNClusITSLayer2",fgkNPtBins, binsPt,fgkNResPtBins,binsResPt,fgkNChi2PerClusBins,binsChi2PerClus);
659 fPtITSouterminPtTPCvsPtAllChi2PerNClusITSLayer2->SetXTitle("p_{t}^{Global}");
660 fPtITSouterminPtTPCvsPtAllChi2PerNClusITSLayer2->SetYTitle("(1/p_{t}^{ITSouter}-1/p_{t}^{TPCinner})/(1/p_{t}^{ITSouter})");
661 fPtITSouterminPtTPCvsPtAllChi2PerNClusITSLayer2->SetZTitle("#chi^{2}/NPointITS");
662 fHistList->Add(fPtITSouterminPtTPCvsPtAllChi2PerNClusITSLayer2);
664 fPtITSouterminPtTPCvsPtAllChi2PerNClusITSLayer3 = new TH3F("fPtITSouterminPtTPCvsPtAllChi2PerNClusITSLayer3","PtITSouterminPtTPCvsPtAllChi2PerNClusITSLayer3",fgkNPtBins, binsPt,fgkNResPtBins,binsResPt,fgkNChi2PerClusBins,binsChi2PerClus);
665 fPtITSouterminPtTPCvsPtAllChi2PerNClusITSLayer3->SetXTitle("p_{t}^{Global}");
666 fPtITSouterminPtTPCvsPtAllChi2PerNClusITSLayer3->SetYTitle("(1/p_{t}^{ITSouter}-1/p_{t}^{TPCinner})/(1/p_{t}^{ITSouter})");
667 fPtITSouterminPtTPCvsPtAllChi2PerNClusITSLayer3->SetZTitle("#chi^{2}/NPointITS");
668 fHistList->Add(fPtITSouterminPtTPCvsPtAllChi2PerNClusITSLayer3);
670 fPtITSouterminPtTPCvsPtAllChi2PerNClusITSLayer4 = new TH3F("fPtITSouterminPtTPCvsPtAllChi2PerNClusITSLayer4","PtITSouterminPtTPCvsPtAllChi2PerNClusITSLayer4",fgkNPtBins, binsPt,fgkNResPtBins,binsResPt,fgkNChi2PerClusBins,binsChi2PerClus);
671 fPtITSouterminPtTPCvsPtAllChi2PerNClusITSLayer4->SetXTitle("p_{t}^{Global}");
672 fPtITSouterminPtTPCvsPtAllChi2PerNClusITSLayer4->SetYTitle("(1/p_{t}^{ITSouter}-1/p_{t}^{TPCinner})/(1/p_{t}^{ITSouter})");
673 fPtITSouterminPtTPCvsPtAllChi2PerNClusITSLayer4->SetZTitle("#chi^{2}/NPointITS");
674 fHistList->Add(fPtITSouterminPtTPCvsPtAllChi2PerNClusITSLayer4);
676 fPtITSouterminPtTPCvsPtAllChi2PerNClusITSLayer5 = new TH3F("fPtITSouterminPtTPCvsPtAllChi2PerNClusITSLayer5","PtITSouterminPtTPCvsPtAllChi2PerNClusITSLayer5",fgkNPtBins, binsPt,fgkNResPtBins,binsResPt,fgkNChi2PerClusBins,binsChi2PerClus);
677 fPtITSouterminPtTPCvsPtAllChi2PerNClusITSLayer5->SetXTitle("p_{t}^{Global}");
678 fPtITSouterminPtTPCvsPtAllChi2PerNClusITSLayer5->SetYTitle("(1/p_{t}^{ITSouter}-1/p_{t}^{TPCinner})/(1/p_{t}^{ITSouter})");
679 fPtITSouterminPtTPCvsPtAllChi2PerNClusITSLayer5->SetZTitle("#chi^{2}/NPointITS");
680 fHistList->Add(fPtITSouterminPtTPCvsPtAllChi2PerNClusITSLayer5);
682 fPtITSouterminPtTPCvsPtAllChi2PerNClusITSNoSPD = new TH3F("fPtITSouterminPtTPCvsPtAllChi2PerNClusITSNoSPD","PtITSouterminPtTPCvsPtAllChi2PerNClusITSNoSPD",fgkNPtBins, binsPt,fgkNResPtBins,binsResPt,fgkNChi2PerClusBins,binsChi2PerClus);
683 fPtITSouterminPtTPCvsPtAllChi2PerNClusITSNoSPD->SetXTitle("p_{t}^{Global}");
684 fPtITSouterminPtTPCvsPtAllChi2PerNClusITSNoSPD->SetYTitle("(1/p_{t}^{ITSouter}-1/p_{t}^{TPCinner})/(1/p_{t}^{ITSouter})");
685 fPtITSouterminPtTPCvsPtAllChi2PerNClusITSNoSPD->SetZTitle("#chi^{2}/(2*NPointITS-5)");
686 fHistList->Add(fPtITSouterminPtTPCvsPtAllChi2PerNClusITSNoSPD);
688 fPtITSouterminPtTPCvsPtAllChi2PerNClusITSNoSDD = new TH3F("fPtITSouterminPtTPCvsPtAllChi2PerNClusITSNoSDD","PtITSouterminPtTPCvsPtAllChi2PerNClusITSNoSDD",fgkNPtBins, binsPt,fgkNResPtBins,binsResPt,fgkNChi2PerClusBins,binsChi2PerClus);
689 fPtITSouterminPtTPCvsPtAllChi2PerNClusITSNoSDD->SetXTitle("p_{t}^{Global}");
690 fPtITSouterminPtTPCvsPtAllChi2PerNClusITSNoSDD->SetYTitle("(1/p_{t}^{ITSouter}-1/p_{t}^{TPCinner})/(1/p_{t}^{ITSouter})");
691 fPtITSouterminPtTPCvsPtAllChi2PerNClusITSNoSDD->SetZTitle("#chi^{2}/(2*NPointITS-5)");
692 fHistList->Add(fPtITSouterminPtTPCvsPtAllChi2PerNClusITSNoSDD);
694 fPtITSouterminPtTPCvsPtAllChi2PerNClusITSNoSSD = new TH3F("fPtITSouterminPtTPCvsPtAllChi2PerNClusITSNoSSD","PtITSouterminPtTPCvsPtAllChi2PerNClusITSNoSSD",fgkNPtBins, binsPt,fgkNResPtBins,binsResPt,fgkNChi2PerClusBins,binsChi2PerClus);
695 fPtITSouterminPtTPCvsPtAllChi2PerNClusITSNoSSD->SetXTitle("p_{t}^{Global}");
696 fPtITSouterminPtTPCvsPtAllChi2PerNClusITSNoSSD->SetYTitle("(1/p_{t}^{ITSouter}-1/p_{t}^{TPCinner})/(1/p_{t}^{ITSouter})");
697 fPtITSouterminPtTPCvsPtAllChi2PerNClusITSNoSSD->SetZTitle("#chi^{2}/(2*NPointITS-5)");
698 fHistList->Add(fPtITSouterminPtTPCvsPtAllChi2PerNClusITSNoSSD);
702 fPtSelITS = new TH1F("fPtSelITSrefit","PtSel",fgkNPtBins, binsPt);
703 fHistListITS->Add(fPtSelITS);
705 fPtITSminPtTPCvsPtITS = new TH2F("fPtITSminPtTPCvsPtITS","PtITSminPtTPCvsPtITS",fgkNPtBins, binsPt,fgkNResPtBins,binsResPt);
706 fPtITSminPtTPCvsPtITS->SetXTitle("p_{t}^{Global}");
707 fPtITSminPtTPCvsPtITS->SetYTitle("(1/p_{t}^{Global}-1/p_{t}^{TPC})/(1/p_{t}^{Global})");
708 fHistListITS->Add(fPtITSminPtTPCvsPtITS);
710 fPtITSminPtTPCvsPtITSEtaPos = new TH3F("fPtITSminPtTPCvsPtITSEtaPos","PtITSminPtTPCvsPtITSEtaPos",fgkNPtBins, binsPt,fgkNResPtBins,binsResPt,fgkNEtaBins,binsEta);
711 fPtITSminPtTPCvsPtITSEtaPos->SetXTitle("p_{t}^{Global}");
712 fPtITSminPtTPCvsPtITSEtaPos->SetYTitle("(1/p_{t}^{Global}-1/p_{t}^{TPC})/(1/p_{t}^{Global})");
713 fHistListITS->Add(fPtITSminPtTPCvsPtITSEtaPos);
715 fPtITSminPtTPCvsPtITSEtaNeg = new TH3F("fPtITSminPtTPCvsPtITSEtaNeg","PtITSminPtTPCvsPtITSEtaNeg",fgkNPtBins, binsPt,fgkNResPtBins,binsResPt,fgkNEtaBins,binsEta);
716 fPtITSminPtTPCvsPtITSEtaNeg->SetXTitle("p_{t}^{Global}");
717 fPtITSminPtTPCvsPtITSEtaNeg->SetYTitle("(1/p_{t}^{Global}-1/p_{t}^{TPC})/(1/p_{t}^{Global})");
718 fHistListITS->Add(fPtITSminPtTPCvsPtITSEtaNeg);
720 fPtITSminPtTPCvsPtITSNPointTPC = new TH3F("fPtITSminPtTPCvsPtITSNPointTPC","PtITSminPtTPCvsPtITSNPointTPC",fgkNPtBins, binsPt,fgkNResPtBins,binsResPt,fgkNNPointTPCBins,binsNPointTPC);
721 fPtITSminPtTPCvsPtITSNPointTPC->SetXTitle("p_{t}^{Global}");
722 fPtITSminPtTPCvsPtITSNPointTPC->SetYTitle("(1/p_{t}^{Global}-1/p_{t}^{TPC})/(1/p_{t}^{Global})");
723 fPtITSminPtTPCvsPtITSNPointTPC->SetZTitle("N_{point,TPC}");
724 fHistListITS->Add(fPtITSminPtTPCvsPtITSNPointTPC);
726 fPtITSminPtTPCvsPtITSDCAR = new TH3F("fPtITSminPtTPCvsPtITSDCAR","PtITSminPtTPCvsPtITSDCAR",fgkNPtBins, binsPt,fgkNResPtBins,binsResPt,fgkNDCARBins,binsDCAR);
727 fPtITSminPtTPCvsPtITSDCAR->SetXTitle("p_{t}^{Global}");
728 fPtITSminPtTPCvsPtITSDCAR->SetYTitle("(1/p_{t}^{Global}-1/p_{t}^{TPC})/(1/p_{t}^{Global})");
729 fPtITSminPtTPCvsPtITSDCAR->SetZTitle("DCA_{R}");
730 fHistListITS->Add(fPtITSminPtTPCvsPtITSDCAR);
732 fPtITSminPtTPCvsPtITSDCAZ = new TH3F("fPtITSminPtTPCvsPtITSDCAZ","PtITSminPtTPCvsPtITSDCAZ",fgkNPtBins, binsPt,fgkNResPtBins,binsResPt,fgkNDCAZBins,binsDCAZ);
733 fPtITSminPtTPCvsPtITSDCAZ->SetXTitle("p_{t}^{Global}");
734 fPtITSminPtTPCvsPtITSDCAZ->SetYTitle("(1/p_{t}^{Global}-1/p_{t}^{TPC})/(1/p_{t}^{Global})");
735 fPtITSminPtTPCvsPtITSDCAZ->SetZTitle("DCA_{Z}");
736 fHistListITS->Add(fPtITSminPtTPCvsPtITSDCAZ);
738 fPtITSminPtTPCvsPtITSPhi = new TH3F("fPtITSminPtTPCvsPtITSPhi","PtITSminPtTPCvsPtITSPhi",fgkNPtBins, binsPt,fgkNResPtBins,binsResPt,fgkNPhiBins,binsPhi);
739 fPtITSminPtTPCvsPtITSPhi->SetXTitle("p_{t}^{Global}");
740 fPtITSminPtTPCvsPtITSPhi->SetYTitle("(1/p_{t}^{Global}-1/p_{t}^{TPC})/(1/p_{t}^{Global})");
741 fPtITSminPtTPCvsPtITSPhi->SetZTitle("#phi");
742 fHistListITS->Add(fPtITSminPtTPCvsPtITSPhi);
744 fPtITSminPtTPCvsPtITSNPointITS = new TH3F("fPtITSminPtTPCvsPtITSNPointITS","PtITSminPtTPCvsPtITSNPointITS",fgkNPtBins, binsPt,fgkNResPtBins,binsResPt,fgkNNPointITSBins,binsNPointITS);
745 fPtITSminPtTPCvsPtITSNPointITS->SetXTitle("p_{t}^{Global}");
746 fPtITSminPtTPCvsPtITSNPointITS->SetYTitle("(1/p_{t}^{Global}-1/p_{t}^{TPC})/(1/p_{t}^{Global})");
747 fPtITSminPtTPCvsPtITSNPointITS->SetZTitle("N_{point,ITS}");
748 fHistListITS->Add(fPtITSminPtTPCvsPtITSNPointITS);
750 fPtITSminPtTPCvsPtITSNSigmaToVertex = new TH3F("fPtITSminPtTPCvsPtITSNSigmaToVertex","PtITSminPtTPCvsPtITSNSigmaToVertex",fgkNPtBins, binsPt,fgkNResPtBins,binsResPt,fgkNNSigmaToVertexBins,binsNSigmaToVertex);
751 fPtITSminPtTPCvsPtITSNSigmaToVertex->SetXTitle("p_{t}^{Global}");
752 fPtITSminPtTPCvsPtITSNSigmaToVertex->SetYTitle("(1/p_{t}^{Global}-1/p_{t}^{TPC})/(1/p_{t}^{Global})");
753 fPtITSminPtTPCvsPtITSNSigmaToVertex->SetZTitle("N#sigma to vertex");
754 fHistListITS->Add(fPtITSminPtTPCvsPtITSNSigmaToVertex);
756 fPtITSminPtTPCvsPtITSChi2C = new TH3F("fPtITSminPtTPCvsPtITSChi2C","PtITSminPtTPCvsPtITSChi2C",fgkNPtBins, binsPt,fgkNResPtBins,binsResPt,fgkNChi2CBins,binsChi2C);
757 fPtITSminPtTPCvsPtITSChi2C->SetXTitle("p_{t}^{Global}");
758 fPtITSminPtTPCvsPtITSChi2C->SetYTitle("(1/p_{t}^{Global}-1/p_{t}^{TPC})/(1/p_{t}^{Global})");
759 fPtITSminPtTPCvsPtITSChi2C->SetZTitle("Constrained #chi^{2}");
760 fHistListITS->Add(fPtITSminPtTPCvsPtITSChi2C);
762 fPtITSminPtTPCvsPtITSRel1PtUncertainty = new TH3F("fPtITSminPtTPCvsPtITSRel1PtUncertainty","PtITSminPtTPCvsPtITSRel1PtUncertainty",fgkNPtBins, binsPt,fgkNResPtBins,binsResPt,fgkNRel1PtUncertaintyBins,binsRel1PtUncertainty);
763 fPtITSminPtTPCvsPtITSRel1PtUncertainty->SetXTitle("p_{t}^{Global}");
764 fPtITSminPtTPCvsPtITSRel1PtUncertainty->SetYTitle("(1/p_{t}^{Global}-1/p_{t}^{TPC})/(1/p_{t}^{Global})");
765 fPtITSminPtTPCvsPtITSRel1PtUncertainty->SetZTitle("Rel1PtUncertainty");
766 fHistListITS->Add(fPtITSminPtTPCvsPtITSRel1PtUncertainty);
768 fPtITSminPtTPCvsPtITSChi2PerNClusTPC = new TH3F("fPtITSminPtTPCvsPtITSChi2PerNClusTPC","PtITSminPtTPCvsPtITSChi2PerNClusTPC",fgkNPtBins, binsPt,fgkNResPtBins,binsResPt,fgkNChi2PerClusBins,binsChi2PerClus);
769 fPtITSminPtTPCvsPtITSChi2PerNClusTPC->SetXTitle("p_{t}^{Global}");
770 fPtITSminPtTPCvsPtITSChi2PerNClusTPC->SetYTitle("(1/p_{t}^{Global}-1/p_{t}^{TPC})/(1/p_{t}^{Global})");
771 fPtITSminPtTPCvsPtITSChi2PerNClusTPC->SetZTitle("#chi^{2}/(2*NClusTPC-5)");
772 fHistListITS->Add(fPtITSminPtTPCvsPtITSChi2PerNClusTPC);
774 fPtITSminPtTPCvsPtITSChi2PerNClusITS = new TH3F("fPtITSminPtTPCvsPtITSChi2PerNClusITS","PtITSminPtTPCvsPtITSChi2PerNClusITS",fgkNPtBins, binsPt,fgkNResPtBins,binsResPt,fgkNChi2PerClusBins,binsChi2PerClus);
775 fPtITSminPtTPCvsPtITSChi2PerNClusITS->SetXTitle("p_{t}^{Global}");
776 fPtITSminPtTPCvsPtITSChi2PerNClusITS->SetYTitle("(1/p_{t}^{Global}-1/p_{t}^{TPC})/(1/p_{t}^{Global})");
777 fPtITSminPtTPCvsPtITSChi2PerNClusITS->SetZTitle("#chi^{2}/(2*NClusITS-5)");
778 fHistListITS->Add(fPtITSminPtTPCvsPtITSChi2PerNClusITS);
780 fPtITSminPtTPCvsNPointTPCPhi = new TH3F("fPtITSminPtTPCvsNPointTPCPhi","PtITSminPtTPCvsNPointTPCPhi",fgkNResPtBins,binsResPt,fgkNNPointTPCBins,binsNPointTPC,fgkNPhiBins,binsPhi);
781 fPtITSminPtTPCvsNPointTPCPhi->SetXTitle("(1/p_{t}^{Global}-1/p_{t}^{TPC})/(1/p_{t}^{Global})");
782 fPtITSminPtTPCvsNPointTPCPhi->SetYTitle("N_{point,TPC}");
783 fPtITSminPtTPCvsNPointTPCPhi->SetZTitle("#phi");
784 fHistListITS->Add(fPtITSminPtTPCvsNPointTPCPhi);
786 fPtITSminPtTPCvsNPointITSPhi = new TH3F("fPtITSminPtTPCvsNPointITSPhi","PtITSminPtTPCvsNPointITSPhi",fgkNResPtBins,binsResPt,fgkNNPointITSBins,binsNPointITS,fgkNPhiBins,binsPhi);
787 fPtITSminPtTPCvsNPointITSPhi->SetXTitle("(1/p_{t}^{Global}-1/p_{t}^{TPC})/(1/p_{t}^{Global})");
788 fPtITSminPtTPCvsNPointITSPhi->SetYTitle("N_{point,ITS}");
789 fPtITSminPtTPCvsNPointITSPhi->SetZTitle("#phi");
790 fHistListITS->Add(fPtITSminPtTPCvsNPointITSPhi);
792 fPtITSminPtTPCvsRel1PtUncertaintyPhi = new TH3F("fPtITSminPtTPCvsRel1PtUncertaintyPhi","PtITSminPtTPCvsRel1PtUncertaintyPhi",fgkNResPtBins,binsResPt,fgkNRel1PtUncertaintyBins,binsRel1PtUncertainty,fgkNPhiBins,binsPhi);
793 fPtITSminPtTPCvsRel1PtUncertaintyPhi->SetXTitle("(1/p_{t}^{Global}-1/p_{t}^{TPC})/(1/p_{t}^{Global})");
794 fPtITSminPtTPCvsRel1PtUncertaintyPhi->SetYTitle("Rel1PtUncertainty");
795 fPtITSminPtTPCvsRel1PtUncertaintyPhi->SetZTitle("#phi");
796 fHistListITS->Add(fPtITSminPtTPCvsRel1PtUncertaintyPhi);
798 fPtRel1PtUncertaintyChi2PerClusTPC = new TH3F("fPtRel1PtUncertaintyChi2PerClusTPC","PtITSminPtTPCvsPtITSRel1PtUncertainty",fgkNPtBins, binsPt,fgkNRel1PtUncertaintyBins,binsRel1PtUncertainty,fgkNChi2PerClusBins,binsChi2PerClus);
799 fPtRel1PtUncertaintyChi2PerClusTPC->SetXTitle("p_{t}^{global}");
800 fPtRel1PtUncertaintyChi2PerClusTPC->SetYTitle("Rel1PtUncertainty");
801 fPtRel1PtUncertaintyChi2PerClusTPC->SetZTitle("#chi^{2}/(2*N_{clusters}^{TPC}-5)");
802 fHistListITS->Add(fPtRel1PtUncertaintyChi2PerClusTPC);
804 fPtAllTPC = new TH1F("fPtAllTPC","PtAll",fgkNPtBins,binsPt);
805 fHistListTPC->Add(fPtAllTPC);
806 fPtSelTPC = new TH1F("fPtSelTPC","PtSel",fgkNPtBins,binsPt);
807 fHistListTPC->Add(fPtSelTPC);
808 fPtSelTPCITS = new TH1F("fPtSelTPCITS","PtSel",fgkNPtBins,binsPt);
809 fHistListTPC->Add(fPtSelTPCITS);
811 TH1::AddDirectory(oldStatus);
813 if(binsPhi) delete [] binsPhi;
814 if(binsChi2PerClus) delete [] binsChi2PerClus;
815 if(binsPt) delete [] binsPt;
816 if(binsResPt) delete [] binsResPt;
817 if(binsNPointTPC) delete [] binsNPointTPC;
818 if(binsDCAR) delete [] binsDCAR;
819 if(binsDCAZ) delete [] binsDCAZ;
820 if(binsNPointITS) delete [] binsNPointITS;
821 if(binsNSigmaToVertex) delete [] binsNSigmaToVertex;
822 if(binsChi2C) delete [] binsChi2C;
823 if(binsEta) delete [] binsEta;
824 if(binsRel1PtUncertainty) delete [] binsRel1PtUncertainty;
828 //________________________________________________________________________
829 void AliPWG4HighPtQATPConly::Exec(Option_t *) {
831 // Called for each event
832 AliDebug(2,Form(">> AliPWG4HighPtQATPConly::Exec \n"));
834 // All events without selection
835 fNEventAll->Fill(0.);
838 AliDebug(2,Form("ERROR: fESD not available"));
840 PostData(0, fHistList);
841 PostData(1, fHistListTPC);
842 PostData(2, fHistListITS);
846 UInt_t isSelected = ((AliInputEventHandler*)(AliAnalysisManager::GetAnalysisManager()->GetInputEventHandler()))->IsEventSelected();
847 if(!(isSelected&AliVEvent::kMB)) { //Select collison candidates
848 AliDebug(2,Form(" Trigger Selection: event REJECTED ... "));
850 PostData(0, fHistList);
851 PostData(1, fHistListTPC);
852 PostData(2, fHistListITS);
856 AliStack* stack = 0x0;
859 AliDebug(2,Form("MC particles: %d", fMC->GetNumberOfTracks()));
861 stack = fMC->Stack(); //Particles Stack
863 AliDebug(2,Form("MC particles stack: %d", stack->GetNtrack()));
866 AliDebug(2,Form("ERROR: Could not retrieve MC event"));
867 PostData(0, fHistList);
868 PostData(1, fHistListTPC);
869 PostData(2, fHistListITS);
874 const AliESDVertex *vtx = fESD->GetPrimaryVertexTracks();
876 TString vtxName(vtx->GetName());
877 if(vtx->GetNContributors() < 2 || (vtxName.Contains("TPCVertex")) ) {
879 vtx = fESD->GetPrimaryVertexSPD();
880 if(vtx->GetNContributors()<2) {
883 PostData(0, fHistList);
884 PostData(1, fHistListTPC);
885 PostData(2, fHistListITS);
890 AliDebug(2,Form("Vertex title %s, status %d, nCont %d\n",vtx->GetTitle(), vtx->GetStatus(), vtx->GetNContributors()));
891 double primVtx[3] = {0.,0.,0.};
892 vtx->GetXYZ(primVtx);
893 // printf("primVtx: %g %g %g \n",primVtx[0],primVtx[1],primVtx[2]);
894 if(TMath::Sqrt(primVtx[0]*primVtx[0] + primVtx[1]*primVtx[1])>1. || TMath::Abs(primVtx[2]>10.)){
896 PostData(0, fHistList);
897 PostData(1, fHistListTPC);
898 PostData(2, fHistListITS);
901 if(!fESD->GetNumberOfTracks() || fESD->GetNumberOfTracks()<2){
903 PostData(0, fHistList);
904 PostData(1, fHistListTPC);
905 PostData(2, fHistListITS);
908 Int_t nTracks = fESD->GetNumberOfTracks();
909 AliDebug(2,Form("nTracks %d\n", nTracks));
913 PostData(0, fHistList);
914 PostData(1, fHistListTPC);
915 PostData(2, fHistListITS);
919 // Selected events for analysis
920 fNEventSel->Fill(0.);
922 for (Int_t iTrack = 0; iTrack < nTracks; iTrack++) {
924 AliESDtrack *track = fESD->GetTrack(iTrack);
925 AliExternalTrackParam *trackTPC = (AliExternalTrackParam *)track->GetTPCInnerParam();
926 if(!track || !trackTPC) continue;
928 const AliESDfriendTrack* constfriendtrack = 0x0;
929 if(fESDfriend && fESDfriend->TestSkipBit()==kFALSE) constfriendtrack = track->GetFriendTrack();
931 Float_t pt = track->Pt();
932 Float_t ptTPC = trackTPC->Pt();
933 Float_t phi = track->Phi();
937 track->GetImpactParameters(dca2D,dcaZ);
939 UChar_t itsMap = track->GetITSClusterMap();
941 for (Int_t i=0; i < 6; i++) {
942 if (itsMap & (1 << i))
945 double mom[3] = {0.,0.,0.};
946 track->GetPxPyPz(mom);
947 double momTPC[3] = {0.,0.,0.};
948 trackTPC->GetPxPyPz(momTPC);
949 Float_t nSigmaToVertex = fTrackCuts->GetSigmaToVertex(track);// Calculates the number of sigma to the vertex for a track.
950 Float_t chi2C = track->GetConstrainedChi2();
951 Float_t relUncertainty1Pt = TMath::Sqrt(TMath::Abs(track->GetSigma1Pt2()))*pt;
952 Float_t chi2PerClusterTPC = -1.;
953 Float_t nClustersTPC = track->GetTPCNcls();
954 if(nClustersTPC>0.) chi2PerClusterTPC = track->GetTPCchi2()/(2.*nClustersTPC-5.);
955 Float_t chi2PerNPointITS = -1.;
956 if(nPointITS>3) chi2PerNPointITS = track->GetITSchi2()/(2.*(float)nPointITS-5.);
959 fPtAllTPC->Fill(ptTPC);
961 if (fTrackCuts->AcceptTrack(track)) {
963 fPtSelTPC->Fill(ptTPC);
964 if(ptTPC==0. || pt==0.) continue;
965 fPtAllminPtTPCvsPtAll->Fill(pt,(1./pt-1./ptTPC)/(1./pt) );
967 if(track->GetSign()>0.) fPtAllminPtTPCvsPtAllEtaPos->Fill(pt,(1./pt-1./ptTPC)/(1./pt),track->Eta());
968 if(track->GetSign()<0.) fPtAllminPtTPCvsPtAllEtaNeg->Fill(pt,(1./pt-1./ptTPC)/(1./pt),track->Eta());
970 fPtAllminPtTPCvsPtAllNPointTPC->Fill(pt,(1./pt-1./ptTPC)/(1./pt),nClustersTPC);
971 fPtAllminPtTPCvsPtAllDCAR->Fill(pt,(1./pt-1./ptTPC)/(1./pt),dca2D);
972 fPtAllminPtTPCvsPtAllDCAZ->Fill(pt,(1./pt-1./ptTPC)/(1./pt),dcaZ);
973 fPtAllminPtTPCvsPtAllPhi->Fill(pt,(1./pt-1./ptTPC)/(1./pt),phi);
974 fPtAllminPtTPCvsPtAllNPointITS->Fill(pt,(1./pt-1./ptTPC)/(1./pt),nPointITS);
975 fPtAllminPtTPCvsPtAllNSigmaToVertex->Fill(pt,(1./pt-1./ptTPC)/(1./pt),nSigmaToVertex);
976 fPtAllminPtTPCvsPtAllChi2C->Fill(pt,(1./pt-1./ptTPC)/(1./pt),chi2C);
977 fPtAllminPtTPCvsPtAllRel1PtUncertainty->Fill(pt,(1./pt-1./ptTPC)/(1./pt),relUncertainty1Pt);
978 fPtAllminPtTPCvsPtAllChi2PerNClusTPC->Fill(pt,(1./pt-1./ptTPC)/(1./pt),chi2PerClusterTPC);
979 if(nPointITS>3) fPtAllminPtTPCvsPtAllChi2PerNClusITS->Fill(pt,(1./pt-1./ptTPC)/(1./pt),chi2PerNPointITS);
980 fPtAllminPtTPCvsNPointTPCPhi->Fill((1./pt-1./ptTPC)/(1./pt),nClustersTPC,phi);
981 fPtAllminPtTPCvsNPointITSPhi->Fill((1./pt-1./ptTPC)/(1./pt),nPointITS,phi);
982 fPtAllminPtTPCvsRel1PtUncertaintyPhi->Fill((1./pt-1./ptTPC)/(1./pt),relUncertainty1Pt,phi);
984 if(TMath::Abs((1./pt-1./ptTPC)/(1./pt))>0.8) fEtaPhiOutliers->Fill(track->Eta(),phi);
986 if (constfriendtrack) {
987 AliESDfriendTrack friendtrack(*constfriendtrack);
988 if (friendtrack.GetITSOut()) {
989 AliExternalTrackParam trackITSouter(*(friendtrack.GetITSOut()));
990 Float_t ptITSouter = trackITSouter.Pt();
991 if(ptITSouter==0.) continue;
992 fPtSelITSouter->Fill(ptITSouter);
993 fPtITSouterminPtTPCvsPtAll->Fill(pt,(1./ptITSouter-1./ptTPC)/(1./ptITSouter) );
995 if(trackITSouter.GetSign()>0.) fPtITSouterminPtTPCvsPtAllEtaPos->Fill(pt,(1./ptITSouter-1./ptTPC)/(1./ptITSouter),trackITSouter.Eta());
996 if(trackITSouter.GetSign()<0.) fPtITSouterminPtTPCvsPtAllEtaNeg->Fill(pt,(1./ptITSouter-1./ptTPC)/(1./ptITSouter),trackITSouter.Eta());
998 fPtITSouterminPtTPCvsPtAllNPointTPC->Fill(pt,(1./ptITSouter-1./ptTPC)/(1./ptITSouter),nClustersTPC);
999 fPtITSouterminPtTPCvsPtAllDCAR->Fill(pt,(1./ptITSouter-1./ptTPC)/(1./ptITSouter),dca2D);
1000 fPtITSouterminPtTPCvsPtAllDCAZ->Fill(pt,(1./ptITSouter-1./ptTPC)/(1./ptITSouter),dcaZ);
1001 fPtITSouterminPtTPCvsPtAllPhi->Fill(pt,(1./ptITSouter-1./ptTPC)/(1./ptITSouter),phi);
1002 fPtITSouterminPtTPCvsPtAllNPointITS->Fill(pt,(1./ptITSouter-1./ptTPC)/(1./ptITSouter),nPointITS);
1003 fPtITSouterminPtTPCvsPtAllNSigmaToVertex->Fill(pt,(1./ptITSouter-1./ptTPC)/(1./ptITSouter),nSigmaToVertex);
1004 fPtITSouterminPtTPCvsPtAllChi2C->Fill(pt,(1./ptITSouter-1./ptTPC)/(1./ptITSouter),chi2C);
1005 fPtITSouterminPtTPCvsPtAllRel1PtUncertainty->Fill(pt,(1./ptITSouter-1./ptTPC)/(1./ptITSouter),relUncertainty1Pt);
1006 fPtITSouterminPtTPCvsPtAllChi2PerNClusTPC->Fill(pt,(1./ptITSouter-1./ptTPC)/(1./ptITSouter),chi2PerClusterTPC);
1007 if(nPointITS>3) fPtITSouterminPtTPCvsPtAllChi2PerNClusITS->Fill(pt,(1./ptITSouter-1./ptTPC)/(1./ptITSouter),chi2PerNPointITS);
1008 if(track->HasPointOnITSLayer(0)) {
1009 fPtITSouterminPtTPCvsPtAllITSLayer0->Fill(pt,(1./ptITSouter-1./ptTPC)/(1./ptITSouter));
1010 if(nPointITS>3) fPtITSouterminPtTPCvsPtAllChi2PerNClusITSLayer0->Fill(pt,(1./ptITSouter-1./ptTPC)/(1./ptITSouter),chi2PerNPointITS);
1012 if(!track->HasPointOnITSLayer(0) && track->HasPointOnITSLayer(1)) {
1013 fPtITSouterminPtTPCvsPtAllITSLayer1->Fill(pt,(1./ptITSouter-1./ptTPC)/(1./ptITSouter));
1014 if(nPointITS>3) fPtITSouterminPtTPCvsPtAllChi2PerNClusITSLayer1->Fill(pt,(1./ptITSouter-1./ptTPC)/(1./ptITSouter),chi2PerNPointITS);
1016 if(!track->HasPointOnITSLayer(0) && !track->HasPointOnITSLayer(1) && track->HasPointOnITSLayer(2)) {
1017 fPtITSouterminPtTPCvsPtAllITSLayer2->Fill(pt,(1./ptITSouter-1./ptTPC)/(1./ptITSouter));
1018 if(nPointITS>3) fPtITSouterminPtTPCvsPtAllChi2PerNClusITSLayer2->Fill(pt,(1./ptITSouter-1./ptTPC)/(1./ptITSouter),chi2PerNPointITS);
1020 if(!track->HasPointOnITSLayer(0) && !track->HasPointOnITSLayer(1) && !track->HasPointOnITSLayer(2) && track->HasPointOnITSLayer(3)) {
1021 fPtITSouterminPtTPCvsPtAllITSLayer3->Fill(pt,(1./ptITSouter-1./ptTPC)/(1./ptITSouter));
1022 if(nPointITS>3) fPtITSouterminPtTPCvsPtAllChi2PerNClusITSLayer3->Fill(pt,(1./ptITSouter-1./ptTPC)/(1./ptITSouter),chi2PerNPointITS);
1024 if(!track->HasPointOnITSLayer(0) && !track->HasPointOnITSLayer(1) && !track->HasPointOnITSLayer(2) && !track->HasPointOnITSLayer(3) && track->HasPointOnITSLayer(4)) {
1025 fPtITSouterminPtTPCvsPtAllITSLayer4->Fill(pt,(1./ptITSouter-1./ptTPC)/(1./ptITSouter));
1026 if(nPointITS>3) fPtITSouterminPtTPCvsPtAllChi2PerNClusITSLayer4->Fill(pt,(1./ptITSouter-1./ptTPC)/(1./ptITSouter),chi2PerNPointITS);
1028 if(!track->HasPointOnITSLayer(0) && !track->HasPointOnITSLayer(1) && !track->HasPointOnITSLayer(2) && !track->HasPointOnITSLayer(3) && !track->HasPointOnITSLayer(4) && track->HasPointOnITSLayer(5)) {
1029 fPtITSouterminPtTPCvsPtAllITSLayer5->Fill(pt,(1./ptITSouter-1./ptTPC)/(1./ptITSouter));
1030 if(nPointITS>3) fPtITSouterminPtTPCvsPtAllChi2PerNClusITSLayer5->Fill(pt,(1./ptITSouter-1./ptTPC)/(1./ptITSouter),chi2PerNPointITS);
1033 if(!track->HasPointOnITSLayer(0) && !track->HasPointOnITSLayer(1)) {
1034 fPtITSouterminPtTPCvsPtAllNoSPD->Fill(pt,(1./ptITSouter-1./ptTPC)/(1./ptITSouter));
1035 if(nPointITS>3) fPtITSouterminPtTPCvsPtAllChi2PerNClusITSNoSPD->Fill(pt,(1./ptITSouter-1./ptTPC)/(1./ptITSouter),chi2PerNPointITS);
1037 if(!track->HasPointOnITSLayer(2) && !track->HasPointOnITSLayer(3)) {
1038 fPtITSouterminPtTPCvsPtAllNoSDD->Fill(pt,(1./ptITSouter-1./ptTPC)/(1./ptITSouter));
1039 if(nPointITS>3) fPtITSouterminPtTPCvsPtAllChi2PerNClusITSNoSDD->Fill(pt,(1./ptITSouter-1./ptTPC)/(1./ptITSouter),chi2PerNPointITS);
1041 if(!track->HasPointOnITSLayer(4) && !track->HasPointOnITSLayer(5)) {
1042 fPtITSouterminPtTPCvsPtAllNoSSD->Fill(pt,(1./ptITSouter-1./ptTPC)/(1./ptITSouter));
1043 if(nPointITS>3) fPtITSouterminPtTPCvsPtAllChi2PerNClusITSNoSSD->Fill(pt,(1./ptITSouter-1./ptTPC)/(1./ptITSouter),chi2PerNPointITS);
1047 }//fTrackCuts selection
1050 //ITSrefit selection
1051 if (fTrackCutsITS->AcceptTrack(track)) {
1053 fPtSelITS->Fill(pt);
1054 fPtSelTPCITS->Fill(ptTPC);
1055 fPtITSminPtTPCvsPtITS->Fill(pt,(1./pt-1./ptTPC)/(1./pt) );
1056 if(track->GetSign()>0.) fPtITSminPtTPCvsPtITSEtaPos->Fill(pt,(1./pt-1./ptTPC)/(1./pt),track->Eta());
1057 if(track->GetSign()<0.) fPtITSminPtTPCvsPtITSEtaNeg->Fill(pt,(1./pt-1./ptTPC)/(1./pt),track->Eta());
1058 fPtITSminPtTPCvsPtITSNPointTPC->Fill(pt,(1./pt-1./ptTPC)/(1./pt),nClustersTPC);
1059 fPtITSminPtTPCvsPtITSDCAR->Fill(pt,(1./pt-1./ptTPC)/(1./pt),dca2D);
1060 fPtITSminPtTPCvsPtITSDCAZ->Fill(pt,(1./pt-1./ptTPC)/(1./pt),dcaZ);
1061 fPtITSminPtTPCvsPtITSPhi->Fill(pt,(1./pt-1./ptTPC)/(1./pt),phi);
1062 fPtITSminPtTPCvsPtITSNPointITS->Fill(pt,(1./pt-1./ptTPC)/(1./pt),nPointITS);
1063 fPtITSminPtTPCvsPtITSNSigmaToVertex->Fill(pt,(1./pt-1./ptTPC)/(1./pt),nSigmaToVertex);
1064 fPtITSminPtTPCvsPtITSChi2C->Fill(pt,(1./pt-1./ptTPC)/(1./pt),chi2C);
1065 fPtITSminPtTPCvsPtITSRel1PtUncertainty->Fill(pt,(1./pt-1./ptTPC)/(1./pt),relUncertainty1Pt);
1066 fPtITSminPtTPCvsPtITSChi2PerNClusTPC->Fill(pt,(1./pt-1./ptTPC)/(1./pt),chi2PerClusterTPC);
1067 if(nPointITS>3) fPtITSminPtTPCvsPtITSChi2PerNClusITS->Fill(pt,(1./pt-1./ptTPC)/(1./pt),chi2PerNPointITS);
1068 fPtITSminPtTPCvsNPointTPCPhi->Fill((1./pt-1./ptTPC)/(1./pt),nClustersTPC,phi);
1069 fPtITSminPtTPCvsNPointITSPhi->Fill((1./pt-1./ptTPC)/(1./pt),nPointITS,phi);
1070 fPtITSminPtTPCvsRel1PtUncertaintyPhi->Fill((1./pt-1./ptTPC)/(1./pt),relUncertainty1Pt,phi);
1072 fPtRel1PtUncertaintyChi2PerClusTPC->Fill(pt,relUncertainty1Pt,chi2PerClusterTPC);
1073 }//fTrackCutsITS loop
1078 PostData(0, fHistList);
1079 PostData(1, fHistListTPC);
1080 PostData(2, fHistListITS);
1084 //________________________________________________________________________
1085 void AliPWG4HighPtQATPConly::Terminate(Option_t *)