Applying the new standard cuts in the QA Task, run the same task twice with different...
[u/mrichter/AliRoot.git] / PWG4 / JetTasks / AliPWG4HighPtQATPConly.cxx
CommitLineData
fdceab34 1/**************************************************************************
2 * Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
3 * *
4 * Author: The ALICE Off-line Project. *
5 * Contributors are mentioned in the code where appropriate. *
6 * *
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 **************************************************************************/
15
16//-----------------------------------------------------------------------
17// This class compares the global reconstruction with the TPConly
18// reconstruction
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//-----------------------------------------------------------------------
24
67ebd013 25#ifndef ALIPWG4HIGHPTQATPCONLY_CXX
26#define ALIPWG4HIGHPTQATPCONLY_CXX
df943115 27
fdceab34 28#include "AliPWG4HighPtQATPConly.h"
29
b5cc0c6d 30#include "TVector3.h"
31#include <iostream>
fdceab34 32#include "TH1.h"
33#include "TH2.h"
34#include "TH3.h"
35#include "TList.h"
36#include "TChain.h"
37#include "TH3F.h"
f4d11ac8 38#include <Bytes.h>
39#include <TTree.h>
b5cc0c6d 40
fdceab34 41#include "AliAnalysisManager.h"
42#include "AliESDInputHandler.h"
43#include "AliESDtrack.h"
f4d11ac8 44#include "AliESDfriend.h"
45#include "AliESDfriendTrack.h"
fdceab34 46#include "AliESDtrackCuts.h"
47#include "AliExternalTrackParam.h"
df943115 48#include "AliLog.h"
67ebd013 49//#include "AliAnalysisHelperJetTasks.h"
fdceab34 50
f4d11ac8 51#include "AliStack.h"
52#include "TParticle.h"
53#include "TH1I.h"
54#include "AliMCEvent.h"
55#include "AliMCEventHandler.h"
56
fdceab34 57using namespace std; //required for resolving the 'cout' symbol
58
59ClassImp(AliPWG4HighPtQATPConly)
60
61AliPWG4HighPtQATPConly::AliPWG4HighPtQATPConly(): AliAnalysisTask("AliPWG4HighPtQATPConly", ""),
62 fESD(0),
f4d11ac8 63 fESDfriend(0),
64 fMC(0),
fdceab34 65 fTrackCuts(0),
66 fTrackCutsITS(0),
a994dd35 67 fMaxCosmicAngle(0.002),
b5cc0c6d 68 fNEventAll(0),
69 fNEventSel(0),
df943115 70 fPtAll(0),
71 fPtSel(0),
fdceab34 72 fPtAllminPtTPCvsPtAll(0),
73 fPtAllminPtTPCvsPtAllNPointTPC(0),
65e8ecdd 74 fPtAllminPtTPCvsPtAllNPointTPCS(0),
fdceab34 75 fPtAllminPtTPCvsPtAllDCAR(0),
76 fPtAllminPtTPCvsPtAllDCAZ(0),
77 fPtAllminPtTPCvsPtAllPhi(0),
78 fPtAllminPtTPCvsPtAllNPointITS(0),
79 fPtAllminPtTPCvsPtAllNSigmaToVertex(0),
80 fPtAllminPtTPCvsPtAllChi2C(0),
81 fPtAllminPtTPCvsPtAllRel1PtUncertainty(0),
f4d11ac8 82 fPtAllminPtTPCvsPtAllChi2PerNClusTPC(0),
83 fPtAllminPtTPCvsPtAllChi2PerNClusITS(0),
9c8dfcb5 84 fPtAllminPtTPCvsNPointTPCPhi(0),
85 fPtAllminPtTPCvsNPointITSPhi(0),
86 fPtAllminPtTPCvsRel1PtUncertaintyPhi(0),
f4d11ac8 87 fEtaPhiOutliers(0),
88 fPtSelITSouter(0),
89 fPtITSouterminPtTPCvsPtAll(0),
90 fPtITSouterminPtTPCvsPtAllNPointTPC(0),
65e8ecdd 91 fPtITSouterminPtTPCvsPtAllNPointTPCS(0),
f4d11ac8 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),
3adc85ec 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),
fdceab34 119 fHistList(0),
120 fPtAllTPC(0),
121 fPtSelTPC(0),
122 fPtSelTPCITS(0),
123 fHistListTPC(0),
124 fPtSelITS(0),
125 fPtITSminPtTPCvsPtITS(0),
126 fPtITSminPtTPCvsPtITSNPointTPC(0),
65e8ecdd 127 fPtITSminPtTPCvsPtITSNPointTPCS(0),
fdceab34 128 fPtITSminPtTPCvsPtITSDCAR(0),
129 fPtITSminPtTPCvsPtITSDCAZ(0),
130 fPtITSminPtTPCvsPtITSPhi(0),
131 fPtITSminPtTPCvsPtITSNPointITS(0),
132 fPtITSminPtTPCvsPtITSNSigmaToVertex(0),
133 fPtITSminPtTPCvsPtITSChi2C(0),
134 fPtITSminPtTPCvsPtITSRel1PtUncertainty(0),
f4d11ac8 135 fPtITSminPtTPCvsPtITSChi2PerNClusTPC(0),
136 fPtITSminPtTPCvsPtITSChi2PerNClusITS(0),
9c8dfcb5 137 fPtITSminPtTPCvsNPointTPCPhi(0),
138 fPtITSminPtTPCvsNPointITSPhi(0),
139 fPtITSminPtTPCvsRel1PtUncertaintyPhi(0),
f4d11ac8 140 fPtRel1PtUncertaintyChi2PerClusTPC(0),
65e8ecdd 141 fPtNPointTPCSChi2PerClusTPC(0),
142 fPtNPointTPCSRel1PtUncertainty(0),
3adc85ec 143 fPtRel1PtUncertaintyChi2PerClusTPCSharedSel(0),
65e8ecdd 144 fHistListITS(0),
145 fPtCosmicCandidates(0),
146 fDeltaPtCosmicCandidates(0),
147 fDeltaPhi(0),
148 fDeltaEta(0),
149 fHistListCosmics(0)
fdceab34 150{
df943115 151
fdceab34 152}
153//________________________________________________________________________
154AliPWG4HighPtQATPConly::AliPWG4HighPtQATPConly(const char *name):
155 AliAnalysisTask(name, ""),
156 fESD(0),
f4d11ac8 157 fESDfriend(0),
158 fMC(0),
fdceab34 159 fTrackCuts(),
160 fTrackCutsITS(),
a994dd35 161 fMaxCosmicAngle(0.002),
b5cc0c6d 162 fNEventAll(0),
163 fNEventSel(0),
df943115 164 fPtAll(0),
165 fPtSel(0),
fdceab34 166 fPtAllminPtTPCvsPtAll(0),
167 fPtAllminPtTPCvsPtAllNPointTPC(0),
65e8ecdd 168 fPtAllminPtTPCvsPtAllNPointTPCS(0),
fdceab34 169 fPtAllminPtTPCvsPtAllDCAR(0),
170 fPtAllminPtTPCvsPtAllDCAZ(0),
171 fPtAllminPtTPCvsPtAllPhi(0),
172 fPtAllminPtTPCvsPtAllNPointITS(0),
173 fPtAllminPtTPCvsPtAllNSigmaToVertex(0),
174 fPtAllminPtTPCvsPtAllChi2C(0),
175 fPtAllminPtTPCvsPtAllRel1PtUncertainty(0),
f4d11ac8 176 fPtAllminPtTPCvsPtAllChi2PerNClusTPC(0),
177 fPtAllminPtTPCvsPtAllChi2PerNClusITS(0),
b35040a5 178 fPtAllminPtTPCvsNPointTPCPhi(0),
179 fPtAllminPtTPCvsNPointITSPhi(0),
180 fPtAllminPtTPCvsRel1PtUncertaintyPhi(0),
f4d11ac8 181 fEtaPhiOutliers(0),
182 fPtSelITSouter(0),
183 fPtITSouterminPtTPCvsPtAll(0),
184 fPtITSouterminPtTPCvsPtAllNPointTPC(0),
65e8ecdd 185 fPtITSouterminPtTPCvsPtAllNPointTPCS(0),
f4d11ac8 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),
3adc85ec 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),
fdceab34 213 fHistList(0),
214 fPtAllTPC(0),
215 fPtSelTPC(0),
216 fPtSelTPCITS(0),
217 fHistListTPC(0),
218 fPtSelITS(0),
219 fPtITSminPtTPCvsPtITS(0),
220 fPtITSminPtTPCvsPtITSNPointTPC(0),
65e8ecdd 221 fPtITSminPtTPCvsPtITSNPointTPCS(0),
fdceab34 222 fPtITSminPtTPCvsPtITSDCAR(0),
223 fPtITSminPtTPCvsPtITSDCAZ(0),
224 fPtITSminPtTPCvsPtITSPhi(0),
225 fPtITSminPtTPCvsPtITSNPointITS(0),
226 fPtITSminPtTPCvsPtITSNSigmaToVertex(0),
227 fPtITSminPtTPCvsPtITSChi2C(0),
228 fPtITSminPtTPCvsPtITSRel1PtUncertainty(0),
f4d11ac8 229 fPtITSminPtTPCvsPtITSChi2PerNClusTPC(0),
230 fPtITSminPtTPCvsPtITSChi2PerNClusITS(0),
b35040a5 231 fPtITSminPtTPCvsNPointTPCPhi(0),
232 fPtITSminPtTPCvsNPointITSPhi(0),
233 fPtITSminPtTPCvsRel1PtUncertaintyPhi(0),
f4d11ac8 234 fPtRel1PtUncertaintyChi2PerClusTPC(0),
65e8ecdd 235 fPtNPointTPCSChi2PerClusTPC(0),
236 fPtNPointTPCSRel1PtUncertainty(0),
3adc85ec 237 fPtRel1PtUncertaintyChi2PerClusTPCSharedSel(0),
65e8ecdd 238 fHistListITS(0),
239 fPtCosmicCandidates(0),
240 fDeltaPtCosmicCandidates(0),
241 fDeltaPhi(0),
242 fDeltaEta(0),
243 fHistListCosmics(0)
fdceab34 244{
245 //
246 // Constructor. Initialization of Inputs and Outputs
247 //
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());
65e8ecdd 257 // Output slot #3 writes into a TList
258 DefineOutput(3, TList::Class());
df943115 259}
fdceab34 260
261//________________________________________________________________________
262void AliPWG4HighPtQATPConly::ConnectInputData(Option_t *)
263{
264 // Connect ESD here
265 // Called once
df943115 266 AliDebug(2,Form(">> AliPWG4HighPtSpectra::ConnectInputData \n"));
fdceab34 267 TTree* tree = dynamic_cast<TTree*> (GetInputData(0));
268 if (!tree) {
f4d11ac8 269 AliDebug(2,Form( "ERROR: Could not read chain from input slot 0 \n"));
270 return;
271 }
272
273 AliESDInputHandler *esdH = dynamic_cast<AliESDInputHandler*> (AliAnalysisManager::GetAnalysisManager()->GetInputEventHandler());
274
275 if (!esdH) {
276 AliDebug(2,Form("ERROR: Could not get ESDInputHandler"));
277 return;
278 } else
279 fESD = esdH->GetEvent();
280
281 AliMCEventHandler *eventHandler = dynamic_cast<AliMCEventHandler*> (AliAnalysisManager::GetAnalysisManager()->GetMCtruthEventHandler());
282 // AliMCEventHandler* mcH = dynamic_cast<AliMCEventHandler*>
283 // (AliAnalysisManager::GetAnalysisManager()->GetMCtruthEventHandler());
284 if (!eventHandler) {
285 AliDebug(2,Form( "ERROR: Could not retrieve MC event handler \n"));
fdceab34 286 }
f4d11ac8 287 else
288 fMC = eventHandler->MCEvent();
289
290 //attach the ESD friend
291 // tree->SetBranchStatus("*", kTRUE);
292// tree->SetBranchStatus("Tracks*", kTRUE);
293// tree->SetBranchStatus("ESDfriend*", kTRUE);
294 // fESD->ReadFromTree(tree);
295
296 fESDfriend = (AliESDfriend*)fESD->FindListObject("AliESDfriend");
297 if (!fESDfriend)
298 {
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);
302 }
303
fdceab34 304}
305
306//________________________________________________________________________
fdceab34 307void AliPWG4HighPtQATPConly::CreateOutputObjects() {
308 //Create output objects
df943115 309 AliDebug(2,Form(">> AliPWG4HighPtQATPConly::CreateOutputObjects \n"));
310
311 Bool_t oldStatus = TH1::AddDirectoryStatus();
312 TH1::AddDirectory(kFALSE);
313
fdceab34 314 OpenFile(0);
315 fHistList = new TList();
316 OpenFile(1);
317 fHistListTPC = new TList();
318 OpenFile(2);
319 fHistListITS = new TList();
65e8ecdd 320 OpenFile(3);
321 fHistListCosmics = new TList();
322
fdceab34 323
b35040a5 324 Int_t fgkNPhiBins=36;
fdceab34 325 Float_t kMinPhi = 0.;
326 Float_t kMaxPhi = 2.*TMath::Pi();
327
f4d11ac8 328 Float_t fgkPtMin=0.;
fdceab34 329 Float_t fgkPtMax=100.;
f4d11ac8 330 Int_t fgkNPtBins=(int)(fgkPtMax-fgkPtMin);
331
332 Float_t fgkChi2PerClusMin = 0.;
b35040a5 333 Float_t fgkChi2PerClusMax = 4.;
f4d11ac8 334 Int_t fgkChi2PerClusBins = (int)(fgkChi2PerClusMax*10.);
65e8ecdd 335
f4d11ac8 336
b5cc0c6d 337 Int_t fgkResPtBins=80;
fdceab34 338
b5cc0c6d 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);
fdceab34 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);
65e8ecdd 347
fdceab34 348 fPtAllminPtTPCvsPtAll = new TH2F("fPtAllminPtTPCvsPtAll","PtAllminPtTPCvsPtAll",fgkNPtBins, fgkPtMin,fgkPtMax,fgkResPtBins,-1.,1.);
f4d11ac8 349 fPtAllminPtTPCvsPtAll->SetXTitle("p_{t}^{Global}");
350 fPtAllminPtTPCvsPtAll->SetYTitle("(1/p_{t}^{Global}-1/p_{t}^{TPC})/(1/p_{t}^{Global})");
fdceab34 351 fHistList->Add(fPtAllminPtTPCvsPtAll);
352
353 fPtAllminPtTPCvsPtAllNPointTPC = new TH3F("fPtAllminPtTPCvsPtAllNPointTPC","PtAllminPtTPCvsPtAllNPointTPC",fgkNPtBins, fgkPtMin,fgkPtMax,fgkResPtBins,-1.,1.,160,0.5,160.5);
f4d11ac8 354 fPtAllminPtTPCvsPtAllNPointTPC->SetXTitle("p_{t}^{Global}");
355 fPtAllminPtTPCvsPtAllNPointTPC->SetYTitle("(1/p_{t}^{Global}-1/p_{t}^{TPC})/(1/p_{t}^{Global})");
fdceab34 356 fPtAllminPtTPCvsPtAllNPointTPC->SetZTitle("N_{point,TPC}");
357 fHistList->Add(fPtAllminPtTPCvsPtAllNPointTPC);
358
65e8ecdd 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);
364
67ebd013 365 fPtAllminPtTPCvsPtAllDCAR = new TH3F("fPtAllminPtTPCvsPtAllDCAR","PtAllminPtTPCvsPtAllDCAR",fgkNPtBins, fgkPtMin,fgkPtMax,fgkResPtBins,-1.,1.,80,-0.2,0.2);
f4d11ac8 366 fPtAllminPtTPCvsPtAllDCAR->SetXTitle("p_{t}^{Global}");
367 fPtAllminPtTPCvsPtAllDCAR->SetYTitle("(1/p_{t}^{Global}-1/p_{t}^{TPC})/(1/p_{t}^{Global})");
fdceab34 368 fPtAllminPtTPCvsPtAllDCAR->SetZTitle("DCA_{R}");
369 fHistList->Add(fPtAllminPtTPCvsPtAllDCAR);
370
67ebd013 371 fPtAllminPtTPCvsPtAllDCAZ = new TH3F("fPtAllminPtTPCvsPtAllDCAZ","PtAllminPtTPCvsPtAllDCAZ",fgkNPtBins, fgkPtMin,fgkPtMax,fgkResPtBins,-1.,1.,80,-2.,2.);
f4d11ac8 372 fPtAllminPtTPCvsPtAllDCAZ->SetXTitle("p_{t}^{Global}");
373 fPtAllminPtTPCvsPtAllDCAZ->SetYTitle("(1/p_{t}^{Global}-1/p_{t}^{TPC})/(1/p_{t}^{Global})");
fdceab34 374 fPtAllminPtTPCvsPtAllDCAZ->SetZTitle("DCA_{Z}");
375 fHistList->Add(fPtAllminPtTPCvsPtAllDCAZ);
376
377 fPtAllminPtTPCvsPtAllPhi = new TH3F("fPtAllminPtTPCvsPtAllPhi","PtAllminPtTPCvsPtAllPhi",fgkNPtBins, fgkPtMin,fgkPtMax,fgkResPtBins,-1.,1.,fgkNPhiBins,kMinPhi,kMaxPhi);
f4d11ac8 378 fPtAllminPtTPCvsPtAllPhi->SetXTitle("p_{t}^{Global}");
379 fPtAllminPtTPCvsPtAllPhi->SetYTitle("(1/p_{t}^{Global}-1/p_{t}^{TPC})/(1/p_{t}^{Global})");
fdceab34 380 fPtAllminPtTPCvsPtAllPhi->SetZTitle("#phi");
381 fHistList->Add(fPtAllminPtTPCvsPtAllPhi);
382
383 fPtAllminPtTPCvsPtAllNPointITS = new TH3F("fPtAllminPtTPCvsPtAllNPointITS","PtAllminPtTPCvsPtAllNPointITS",fgkNPtBins, fgkPtMin,fgkPtMax,fgkResPtBins,-1.,1.,9,-0.5,8.5);
f4d11ac8 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}");
fdceab34 387 fHistList->Add(fPtAllminPtTPCvsPtAllNPointITS);
388
389 fPtAllminPtTPCvsPtAllNSigmaToVertex = new TH3F("fPtAllminPtTPCvsPtAllNSigmaToVertex","PtAllminPtTPCvsPtAllNSigmaToVertex",fgkNPtBins, fgkPtMin,fgkPtMax,fgkResPtBins,-1.,1.,40,0.,8.);
f4d11ac8 390 fPtAllminPtTPCvsPtAllNSigmaToVertex->SetXTitle("p_{t}^{Global}");
391 fPtAllminPtTPCvsPtAllNSigmaToVertex->SetYTitle("(1/p_{t}^{Global}-1/p_{t}^{TPC})/(1/p_{t}^{Global})");
fdceab34 392 fPtAllminPtTPCvsPtAllNSigmaToVertex->SetZTitle("N#sigma to vertex");
393 fHistList->Add(fPtAllminPtTPCvsPtAllNSigmaToVertex);
394
395 fPtAllminPtTPCvsPtAllChi2C = new TH3F("fPtAllminPtTPCvsPtAllChi2C","PtAllminPtTPCvsPtAllChi2C",fgkNPtBins, fgkPtMin,fgkPtMax,fgkResPtBins,-1.,1.,20,0.,10.);
f4d11ac8 396 fPtAllminPtTPCvsPtAllChi2C->SetXTitle("p_{t}^{Global}");
397 fPtAllminPtTPCvsPtAllChi2C->SetYTitle("(1/p_{t}^{Global}-1/p_{t}^{TPC})/(1/p_{t}^{Global})");
fdceab34 398 fPtAllminPtTPCvsPtAllChi2C->SetZTitle("Constrained #chi^{2}");
399 fHistList->Add(fPtAllminPtTPCvsPtAllChi2C);
400
401 fPtAllminPtTPCvsPtAllRel1PtUncertainty = new TH3F("fPtAllminPtTPCvsPtAllRel1PtUncertainty","PtAllminPtTPCvsPtAllRel1PtUncertainty",fgkNPtBins, fgkPtMin,fgkPtMax,fgkResPtBins,-1.,1.,30,0.,0.3);
f4d11ac8 402 fPtAllminPtTPCvsPtAllRel1PtUncertainty->SetXTitle("p_{t}^{Global}");
403 fPtAllminPtTPCvsPtAllRel1PtUncertainty->SetYTitle("(1/p_{t}^{Global}-1/p_{t}^{TPC})/(1/p_{t}^{Global})");
fdceab34 404 fPtAllminPtTPCvsPtAllRel1PtUncertainty->SetZTitle("Rel1PtUncertainty");
405 fHistList->Add(fPtAllminPtTPCvsPtAllRel1PtUncertainty);
406
f4d11ac8 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})");
65e8ecdd 410 fPtAllminPtTPCvsPtAllChi2PerNClusTPC->SetZTitle("#chi^{2}/(2*NClusTPC-5)");
f4d11ac8 411 fHistList->Add(fPtAllminPtTPCvsPtAllChi2PerNClusTPC);
412
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})");
65e8ecdd 416 fPtAllminPtTPCvsPtAllChi2PerNClusITS->SetZTitle("#chi^{2}/(2*NClusITS-5)");
f4d11ac8 417 fHistList->Add(fPtAllminPtTPCvsPtAllChi2PerNClusITS);
418
9c8dfcb5 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);
424
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);
430
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);
436
f4d11ac8 437 fEtaPhiOutliers = new TH2F("fEtaPhiOutliers","PtAllminPtTPCvsPtAll",20, -1.,1.,fgkNPhiBins,kMinPhi,kMaxPhi);
438 fEtaPhiOutliers->SetXTitle("#eta");
439 fEtaPhiOutliers->SetYTitle("#phi");
440 fHistList->Add(fEtaPhiOutliers);
441
442 //Global vs ITSouter-TPCinner
443 fPtSelITSouter = new TH1F("fPtSelITSouter","PtSelITSouter",fgkNPtBins,fgkPtMin,fgkPtMax);
444 fHistList->Add(fPtSelITSouter);
445
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);
450
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);
456
65e8ecdd 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);
462
f4d11ac8 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);
468
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);
474
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);
480
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);
486
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);
492
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);
498
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);
504
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})");
65e8ecdd 508 fPtITSouterminPtTPCvsPtAllChi2PerNClusTPC->SetZTitle("#chi^{2}/(2*NClusTPC-5)");
f4d11ac8 509 fHistList->Add(fPtITSouterminPtTPCvsPtAllChi2PerNClusTPC);
510
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})");
65e8ecdd 514 fPtITSouterminPtTPCvsPtAllChi2PerNClusITS->SetZTitle("#chi^{2}/(2*NClusITS-5)");
f4d11ac8 515 fHistList->Add(fPtITSouterminPtTPCvsPtAllChi2PerNClusITS);
516
517 //As function of ITS layers
3adc85ec 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);
522
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);
527
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);
532
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);
537
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);
542
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);
547
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);
552
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);
557
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);
f4d11ac8 562
563 //
3adc85ec 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);
569
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);
575
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);
581
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);
587
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);
593
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);
599
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);
605
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);
611
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);
f4d11ac8 617
618
fdceab34 619 //ITSrefit
620 fPtSelITS = new TH1F("fPtSelITSrefit","PtSel",fgkNPtBins, fgkPtMin, fgkPtMax);
621 fHistListITS->Add(fPtSelITS);
622
623 fPtITSminPtTPCvsPtITS = new TH2F("fPtITSminPtTPCvsPtITS","PtITSminPtTPCvsPtITS",fgkNPtBins, fgkPtMin,fgkPtMax,fgkResPtBins,-1.,1.);
65e8ecdd 624 fPtITSminPtTPCvsPtITS->SetXTitle("p_{t}^{Global}");
625 fPtITSminPtTPCvsPtITS->SetYTitle("(1/p_{t}^{Global}-1/p_{t}^{TPC})/(1/p_{t}^{Global})");
fdceab34 626 fHistListITS->Add(fPtITSminPtTPCvsPtITS);
627
628 fPtITSminPtTPCvsPtITSNPointTPC = new TH3F("fPtITSminPtTPCvsPtITSNPointTPC","PtITSminPtTPCvsPtITSNPointTPC",fgkNPtBins, fgkPtMin,fgkPtMax,fgkResPtBins,-1.,1.,160,0.5,160.5);
65e8ecdd 629 fPtITSminPtTPCvsPtITSNPointTPC->SetXTitle("p_{t}^{Global}");
630 fPtITSminPtTPCvsPtITSNPointTPC->SetYTitle("(1/p_{t}^{Global}-1/p_{t}^{TPC})/(1/p_{t}^{Global})");
fdceab34 631 fPtITSminPtTPCvsPtITSNPointTPC->SetZTitle("N_{point,TPC}");
632 fHistListITS->Add(fPtITSminPtTPCvsPtITSNPointTPC);
65e8ecdd 633
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);
639
67ebd013 640 fPtITSminPtTPCvsPtITSDCAR = new TH3F("fPtITSminPtTPCvsPtITSDCAR","PtITSminPtTPCvsPtITSDCAR",fgkNPtBins, fgkPtMin,fgkPtMax,fgkResPtBins,-1.,1.,80,-0.2,0.2);
65e8ecdd 641 fPtITSminPtTPCvsPtITSDCAR->SetXTitle("p_{t}^{Global}");
642 fPtITSminPtTPCvsPtITSDCAR->SetYTitle("(1/p_{t}^{Global}-1/p_{t}^{TPC})/(1/p_{t}^{Global})");
fdceab34 643 fPtITSminPtTPCvsPtITSDCAR->SetZTitle("DCA_{R}");
644 fHistListITS->Add(fPtITSminPtTPCvsPtITSDCAR);
645
67ebd013 646 fPtITSminPtTPCvsPtITSDCAZ = new TH3F("fPtITSminPtTPCvsPtITSDCAZ","PtITSminPtTPCvsPtITSDCAZ",fgkNPtBins, fgkPtMin,fgkPtMax,fgkResPtBins,-1.,1.,80,-2.,2.);
65e8ecdd 647 fPtITSminPtTPCvsPtITSDCAZ->SetXTitle("p_{t}^{Global}");
648 fPtITSminPtTPCvsPtITSDCAZ->SetYTitle("(1/p_{t}^{Global}-1/p_{t}^{TPC})/(1/p_{t}^{Global})");
fdceab34 649 fPtITSminPtTPCvsPtITSDCAZ->SetZTitle("DCA_{Z}");
650 fHistListITS->Add(fPtITSminPtTPCvsPtITSDCAZ);
651
652 fPtITSminPtTPCvsPtITSPhi = new TH3F("fPtITSminPtTPCvsPtITSPhi","PtITSminPtTPCvsPtITSPhi",fgkNPtBins, fgkPtMin,fgkPtMax,fgkResPtBins,-1.,1.,fgkNPhiBins,kMinPhi,kMaxPhi);
65e8ecdd 653 fPtITSminPtTPCvsPtITSPhi->SetXTitle("p_{t}^{Global}");
654 fPtITSminPtTPCvsPtITSPhi->SetYTitle("(1/p_{t}^{Global}-1/p_{t}^{TPC})/(1/p_{t}^{Global})");
fdceab34 655 fPtITSminPtTPCvsPtITSPhi->SetZTitle("#phi");
656 fHistListITS->Add(fPtITSminPtTPCvsPtITSPhi);
657
658 fPtITSminPtTPCvsPtITSNPointITS = new TH3F("fPtITSminPtTPCvsPtITSNPointITS","PtITSminPtTPCvsPtITSNPointITS",fgkNPtBins, fgkPtMin,fgkPtMax,fgkResPtBins,-1.,1.,9,-0.5,8.5);
65e8ecdd 659 fPtITSminPtTPCvsPtITSNPointITS->SetXTitle("p_{t}^{Global}");
660 fPtITSminPtTPCvsPtITSNPointITS->SetYTitle("(1/p_{t}^{Global}-1/p_{t}^{TPC})/(1/p_{t}^{Global})");
f4d11ac8 661 fPtITSminPtTPCvsPtITSNPointITS->SetZTitle("N_{point,ITS}");
fdceab34 662 fHistListITS->Add(fPtITSminPtTPCvsPtITSNPointITS);
663
664 fPtITSminPtTPCvsPtITSNSigmaToVertex = new TH3F("fPtITSminPtTPCvsPtITSNSigmaToVertex","PtITSminPtTPCvsPtITSNSigmaToVertex",fgkNPtBins, fgkPtMin,fgkPtMax,fgkResPtBins,-1.,1.,40,0.,8.);
65e8ecdd 665 fPtITSminPtTPCvsPtITSNSigmaToVertex->SetXTitle("p_{t}^{Global}");
666 fPtITSminPtTPCvsPtITSNSigmaToVertex->SetYTitle("(1/p_{t}^{Global}-1/p_{t}^{TPC})/(1/p_{t}^{Global})");
fdceab34 667 fPtITSminPtTPCvsPtITSNSigmaToVertex->SetZTitle("N#sigma to vertex");
668 fHistListITS->Add(fPtITSminPtTPCvsPtITSNSigmaToVertex);
669
670 fPtITSminPtTPCvsPtITSChi2C = new TH3F("fPtITSminPtTPCvsPtITSChi2C","PtITSminPtTPCvsPtITSChi2C",fgkNPtBins, fgkPtMin,fgkPtMax,fgkResPtBins,-1.,1.,20,0.,10.);
65e8ecdd 671 fPtITSminPtTPCvsPtITSChi2C->SetXTitle("p_{t}^{Global}");
672 fPtITSminPtTPCvsPtITSChi2C->SetYTitle("(1/p_{t}^{Global}-1/p_{t}^{TPC})/(1/p_{t}^{Global})");
fdceab34 673 fPtITSminPtTPCvsPtITSChi2C->SetZTitle("Constrained #chi^{2}");
674 fHistListITS->Add(fPtITSminPtTPCvsPtITSChi2C);
675
676 fPtITSminPtTPCvsPtITSRel1PtUncertainty = new TH3F("fPtITSminPtTPCvsPtITSRel1PtUncertainty","PtITSminPtTPCvsPtITSRel1PtUncertainty",fgkNPtBins, fgkPtMin,fgkPtMax,fgkResPtBins,-1.,1.,30,0.,0.3);
65e8ecdd 677 fPtITSminPtTPCvsPtITSRel1PtUncertainty->SetXTitle("p_{t}^{Global}");
678 fPtITSminPtTPCvsPtITSRel1PtUncertainty->SetYTitle("(1/p_{t}^{Global}-1/p_{t}^{TPC})/(1/p_{t}^{Global})");
fdceab34 679 fPtITSminPtTPCvsPtITSRel1PtUncertainty->SetZTitle("Rel1PtUncertainty");
680 fHistListITS->Add(fPtITSminPtTPCvsPtITSRel1PtUncertainty);
681
f4d11ac8 682 fPtITSminPtTPCvsPtITSChi2PerNClusTPC = new TH3F("fPtITSminPtTPCvsPtITSChi2PerNClusTPC","PtITSminPtTPCvsPtITSChi2PerNClusTPC",fgkNPtBins, fgkPtMin,fgkPtMax,fgkResPtBins,-1.,1.,35,0.,3.5);
65e8ecdd 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)");
f4d11ac8 686 fHistListITS->Add(fPtITSminPtTPCvsPtITSChi2PerNClusTPC);
687
688 fPtITSminPtTPCvsPtITSChi2PerNClusITS = new TH3F("fPtITSminPtTPCvsPtITSChi2PerNClusITS","PtITSminPtTPCvsPtITSChi2PerNClusITS",fgkNPtBins, fgkPtMin,fgkPtMax,fgkResPtBins,-1.,1.,35,0.,3.5);
65e8ecdd 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)");
f4d11ac8 692 fHistListITS->Add(fPtITSminPtTPCvsPtITSChi2PerNClusITS);
693
9c8dfcb5 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);
699
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);
705
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);
711
f4d11ac8 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");
65e8ecdd 715 fPtRel1PtUncertaintyChi2PerClusTPC->SetZTitle("#chi^{2}/(2*N_{clusters}^{TPC}-5)");
f4d11ac8 716 fHistListITS->Add(fPtRel1PtUncertaintyChi2PerClusTPC);
717
65e8ecdd 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);
723
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);
729
3adc85ec 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);
65e8ecdd 735
fdceab34 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);
df943115 742
65e8ecdd 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);
754
df943115 755 TH1::AddDirectory(oldStatus);
756
fdceab34 757}
758//________________________________________________________________________
759void AliPWG4HighPtQATPConly::Exec(Option_t *) {
760 // Main loop
761 // Called for each event
df943115 762 AliDebug(2,Form(">> AliPWG4HighPtQATPConly::Exec \n"));
763
b5cc0c6d 764 // All events without selection
b5cc0c6d 765 fNEventAll->Fill(0.);
766
df943115 767 if (!fESD) {
768 AliDebug(2,Form("ERROR: fESD not available"));
67ebd013 769 // Post output data
770 PostData(0, fHistList);
771 PostData(1, fHistListTPC);
772 PostData(2, fHistListITS);
65e8ecdd 773 PostData(3, fHistListCosmics);
fdceab34 774 return;
775 }
776
f4d11ac8 777 fESD->SetESDfriend(fESDfriend); //Attach the friend to the ESD
778 if (!fESDfriend) {
779 AliDebug(2,Form("ERROR: fESDfriend not available"));
780 // Post output data
781 PostData(0, fHistList);
782 PostData(1, fHistListTPC);
783 PostData(2, fHistListITS);
65e8ecdd 784 PostData(3, fHistListCosmics);
f4d11ac8 785 return;
786 }
787
67ebd013 788 Bool_t isSelected = ((AliInputEventHandler*)(AliAnalysisManager::GetAnalysisManager()->GetInputEventHandler()))->IsEventSelected();
789 if(!isSelected) { //Select collison candidates
b5cc0c6d 790 AliDebug(2,Form(" Trigger Selection: event REJECTED ... "));
cd9a6fa2 791 // Post output data
67ebd013 792 PostData(0, fHistList);
793 PostData(1, fHistListTPC);
794 PostData(2, fHistListITS);
65e8ecdd 795 PostData(3, fHistListCosmics);
b5cc0c6d 796 return;
67ebd013 797 }
fdceab34 798
f4d11ac8 799 // AliMCEventHandler *eventHandler = dynamic_cast<AliMCEventHandler*> (AliAnalysisManager::GetAnalysisManager()->GetMCtruthEventHandler());
800// // AliMCEventHandler* eventHandler = (AliMCEventHandler*)(AliAnalysisManager::GetAnalysisManager()->GetMCtruthEventHandler());
801
802 AliStack* stack = 0x0;
803 AliMCEvent* mcEvent = 0x0;
804
805 if(fMC) {
806 mcEvent = fMC;
807 if (!mcEvent) {
808 AliDebug(2,Form("ERROR: Could not retrieve MC event"));
809 PostData(0, fHistList);
810 PostData(1, fHistListTPC);
811 PostData(2, fHistListITS);
65e8ecdd 812 PostData(3, fHistListCosmics);
f4d11ac8 813 return;
814 }
815
816 AliDebug(2,Form("MC particles: %d", mcEvent->GetNumberOfTracks()));
817
818 stack = mcEvent->Stack(); //Particles Stack
819
820 AliDebug(2,Form("MC particles stack: %d", stack->GetNtrack()));
821 }
822
823
b5cc0c6d 824 const AliESDVertex *vtx = fESD->GetPrimaryVertexTracks();
fdceab34 825 // Need vertex cut
67ebd013 826 if (vtx->GetNContributors() < 2) {
827 // Post output data
828 PostData(0, fHistList);
829 PostData(1, fHistListTPC);
830 PostData(2, fHistListITS);
65e8ecdd 831 PostData(3, fHistListCosmics);
fdceab34 832 return;
67ebd013 833 }
fdceab34 834
df943115 835 AliDebug(2,Form("Vertex title %s, status %d, nCont %d\n",vtx->GetTitle(), vtx->GetStatus(), vtx->GetNContributors()));
b5cc0c6d 836 double primVtx[3];
837 vtx->GetXYZ(primVtx);
838 // printf("primVtx: %g %g %g \n",primVtx[0],primVtx[1],primVtx[2]);
67ebd013 839 if(TMath::Sqrt(primVtx[0]*primVtx[0] + primVtx[1]*primVtx[1])>1. || TMath::Abs(primVtx[2]>10.)){
cd9a6fa2 840 // Post output data
841 PostData(0, fHistList);
842 PostData(1, fHistListTPC);
843 PostData(2, fHistListITS);
65e8ecdd 844 PostData(3, fHistListCosmics);
cd9a6fa2 845 return;
846 }
847 if(!fESD->GetNumberOfTracks() || fESD->GetNumberOfTracks()<2){
848 // Post output data
849 PostData(0, fHistList);
850 PostData(1, fHistListTPC);
851 PostData(2, fHistListITS);
65e8ecdd 852 PostData(3, fHistListCosmics);
cd9a6fa2 853 return;
854 }
fdceab34 855 Int_t nTracks = fESD->GetNumberOfTracks();
b5cc0c6d 856 AliDebug(2,Form("nTracks %d\n", nTracks));
857
858 if(!fTrackCuts) return;
859
860 // Selected events for analysis
861 fNEventSel->Fill(0.);
df943115 862
fdceab34 863 for (Int_t iTrack = 0; iTrack < nTracks; iTrack++) {
864
865 AliESDtrack *track = fESD->GetTrack(iTrack);
866 AliExternalTrackParam *trackTPC = (AliExternalTrackParam *)track->GetTPCInnerParam();
67ebd013 867 if(!track || !trackTPC) continue;
f4d11ac8 868 const AliESDfriendTrack* constfriendtrack = track->GetFriendTrack();
869 if (!constfriendtrack) { continue;}
870 AliESDfriendTrack friendtrack(*constfriendtrack);
871
fdceab34 872 Float_t pt = track->Pt();
873 Float_t ptTPC = trackTPC->Pt();
874 Float_t phi = track->Phi();
875 Float_t dca2D, dcaZ;
876 track->GetImpactParameters(dca2D,dcaZ);
877 // Float_t dca2DTPC, dcaZTPC;
878 //track->GetImpactParametersTPC(dca2DTPC,dcaZTPC);
879 UChar_t itsMap = track->GetITSClusterMap();
880 Int_t nPointITS = 0;
881 for (Int_t i=0; i < 6; i++) {
882 if (itsMap & (1 << i))
883 nPointITS ++;
884 }
b5cc0c6d 885 double mom[3];
886 track->GetPxPyPz(mom);
f4d11ac8 887 double momTPC[3];
888 trackTPC->GetPxPyPz(momTPC);
fdceab34 889 Float_t nSigmaToVertex = fTrackCuts->GetSigmaToVertex(track);// Calculates the number of sigma to the vertex for a track.
890 Float_t chi2C = track->GetConstrainedChi2();
b5cc0c6d 891 Float_t relUncertainty1Pt = TMath::Sqrt(TMath::Abs(track->GetSigma1Pt2()))*pt;
f4d11ac8 892 Float_t chi2PerClusterTPC = -1.;
893 Float_t nClustersTPC = track->GetTPCNcls();
38ecb6a5 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.);
fdceab34 897
898 fPtAll->Fill(pt);
899 fPtAllTPC->Fill(ptTPC);
65e8ecdd 900
901
fdceab34 902 if (fTrackCuts->AcceptTrack(track)) {
903
65e8ecdd 904 Bool_t cosmic = kFALSE;
905 if(pt>6.) { cosmic = IsCosmic(track,iTrack,6.); }
906 // if(cosmic) continue;
907
fdceab34 908 fPtSel->Fill(pt);
fdceab34 909 fPtSelTPC->Fill(ptTPC);
f4d11ac8 910 if(ptTPC==0. || pt==0.) continue;
fdceab34 911 fPtAllminPtTPCvsPtAll->Fill(pt,(1./pt-1./ptTPC)/(1./pt) );
65e8ecdd 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);
fdceab34 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);
f4d11ac8 921 fPtAllminPtTPCvsPtAllChi2PerNClusTPC->Fill(pt,(1./pt-1./ptTPC)/(1./pt),chi2PerClusterTPC);
38ecb6a5 922 if(nPointITS>3) fPtAllminPtTPCvsPtAllChi2PerNClusITS->Fill(pt,(1./pt-1./ptTPC)/(1./pt),chi2PerNPointITS);
9c8dfcb5 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);
926
f4d11ac8 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) );
65e8ecdd 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);
f4d11ac8 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);
38ecb6a5 944 if(nPointITS>3) fPtITSouterminPtTPCvsPtAllChi2PerNClusITS->Fill(pt,(1./ptITSouter-1./ptTPC)/(1./ptITSouter),chi2PerNPointITS);
f4d11ac8 945 if(track->HasPointOnITSLayer(0)) {
3adc85ec 946 fPtITSouterminPtTPCvsPtAllITSLayer0->Fill(pt,(1./ptITSouter-1./ptTPC)/(1./ptITSouter));
947 if(nPointITS>3) fPtITSouterminPtTPCvsPtAllChi2PerNClusITSLayer0->Fill(pt,(1./ptITSouter-1./ptTPC)/(1./ptITSouter),chi2PerNPointITS);
f4d11ac8 948 }
949 if(!track->HasPointOnITSLayer(0) && track->HasPointOnITSLayer(1)) {
3adc85ec 950 fPtITSouterminPtTPCvsPtAllITSLayer1->Fill(pt,(1./ptITSouter-1./ptTPC)/(1./ptITSouter));
951 if(nPointITS>3) fPtITSouterminPtTPCvsPtAllChi2PerNClusITSLayer1->Fill(pt,(1./ptITSouter-1./ptTPC)/(1./ptITSouter),chi2PerNPointITS);
f4d11ac8 952 }
953 if(!track->HasPointOnITSLayer(0) && !track->HasPointOnITSLayer(1) && track->HasPointOnITSLayer(2)) {
3adc85ec 954 fPtITSouterminPtTPCvsPtAllITSLayer2->Fill(pt,(1./ptITSouter-1./ptTPC)/(1./ptITSouter));
955 if(nPointITS>3) fPtITSouterminPtTPCvsPtAllChi2PerNClusITSLayer2->Fill(pt,(1./ptITSouter-1./ptTPC)/(1./ptITSouter),chi2PerNPointITS);
f4d11ac8 956 }
957 if(!track->HasPointOnITSLayer(0) && !track->HasPointOnITSLayer(1) && !track->HasPointOnITSLayer(2) && track->HasPointOnITSLayer(3)) {
3adc85ec 958 fPtITSouterminPtTPCvsPtAllITSLayer3->Fill(pt,(1./ptITSouter-1./ptTPC)/(1./ptITSouter));
959 if(nPointITS>3) fPtITSouterminPtTPCvsPtAllChi2PerNClusITSLayer3->Fill(pt,(1./ptITSouter-1./ptTPC)/(1./ptITSouter),chi2PerNPointITS);
f4d11ac8 960 }
961 if(!track->HasPointOnITSLayer(0) && !track->HasPointOnITSLayer(1) && !track->HasPointOnITSLayer(2) && !track->HasPointOnITSLayer(3) && track->HasPointOnITSLayer(4)) {
3adc85ec 962 fPtITSouterminPtTPCvsPtAllITSLayer4->Fill(pt,(1./ptITSouter-1./ptTPC)/(1./ptITSouter));
963 if(nPointITS>3) fPtITSouterminPtTPCvsPtAllChi2PerNClusITSLayer4->Fill(pt,(1./ptITSouter-1./ptTPC)/(1./ptITSouter),chi2PerNPointITS);
f4d11ac8 964 }
965 if(!track->HasPointOnITSLayer(0) && !track->HasPointOnITSLayer(1) && !track->HasPointOnITSLayer(2) && !track->HasPointOnITSLayer(3) && !track->HasPointOnITSLayer(4) && track->HasPointOnITSLayer(5)) {
3adc85ec 966 fPtITSouterminPtTPCvsPtAllITSLayer5->Fill(pt,(1./ptITSouter-1./ptTPC)/(1./ptITSouter));
967 if(nPointITS>3) fPtITSouterminPtTPCvsPtAllChi2PerNClusITSLayer5->Fill(pt,(1./ptITSouter-1./ptTPC)/(1./ptITSouter),chi2PerNPointITS);
f4d11ac8 968 }
969
970 if(!track->HasPointOnITSLayer(0) && !track->HasPointOnITSLayer(1)) {
3adc85ec 971 fPtITSouterminPtTPCvsPtAllNoSPD->Fill(pt,(1./ptITSouter-1./ptTPC)/(1./ptITSouter));
972 if(nPointITS>3) fPtITSouterminPtTPCvsPtAllChi2PerNClusITSNoSPD->Fill(pt,(1./ptITSouter-1./ptTPC)/(1./ptITSouter),chi2PerNPointITS);
f4d11ac8 973 }
974 if(!track->HasPointOnITSLayer(2) && !track->HasPointOnITSLayer(3)) {
3adc85ec 975 fPtITSouterminPtTPCvsPtAllNoSDD->Fill(pt,(1./ptITSouter-1./ptTPC)/(1./ptITSouter));
976 if(nPointITS>3) fPtITSouterminPtTPCvsPtAllChi2PerNClusITSNoSDD->Fill(pt,(1./ptITSouter-1./ptTPC)/(1./ptITSouter),chi2PerNPointITS);
f4d11ac8 977 }
978 if(!track->HasPointOnITSLayer(4) && !track->HasPointOnITSLayer(5)) {
3adc85ec 979 fPtITSouterminPtTPCvsPtAllNoSSD->Fill(pt,(1./ptITSouter-1./ptTPC)/(1./ptITSouter));
980 if(nPointITS>3) fPtITSouterminPtTPCvsPtAllChi2PerNClusITSNoSSD->Fill(pt,(1./ptITSouter-1./ptTPC)/(1./ptITSouter),chi2PerNPointITS);
f4d11ac8 981 }
982 }
38ecb6a5 983
fdceab34 984 }//fTrackCuts selection
985
986
987 //ITSrefit selection
988 if (fTrackCutsITS->AcceptTrack(track)) {
989
990 fPtSelITS->Fill(pt);
991 fPtSelTPCITS->Fill(ptTPC);
992 fPtITSminPtTPCvsPtITS->Fill(pt,(1./pt-1./ptTPC)/(1./pt) );
65e8ecdd 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);
fdceab34 995 fPtITSminPtTPCvsPtITSDCAR->Fill(pt,(1./pt-1./ptTPC)/(1./pt),dca2D);
996 fPtITSminPtTPCvsPtITSDCAZ->Fill(pt,(1./pt-1./ptTPC)/(1./pt),dcaZ);
10295ac3 997 fPtITSminPtTPCvsPtITSPhi->Fill(pt,(1./pt-1./ptTPC)/(1./pt),phi);
998 fPtITSminPtTPCvsPtITSNPointITS->Fill(pt,(1./pt-1./ptTPC)/(1./pt),nPointITS);
fdceab34 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);
f4d11ac8 1002 fPtITSminPtTPCvsPtITSChi2PerNClusTPC->Fill(pt,(1./pt-1./ptTPC)/(1./pt),chi2PerClusterTPC);
38ecb6a5 1003 if(nPointITS>3) fPtITSminPtTPCvsPtITSChi2PerNClusITS->Fill(pt,(1./pt-1./ptTPC)/(1./pt),chi2PerNPointITS);
9c8dfcb5 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);
65e8ecdd 1007
1008 fPtRel1PtUncertaintyChi2PerClusTPC->Fill(pt,relUncertainty1Pt,chi2PerClusterTPC);
1009 fPtNPointTPCSChi2PerClusTPC->Fill(pt,track->GetTPCnclsS()/nClustersTPC,chi2PerClusterTPC);
1010 fPtNPointTPCSRel1PtUncertainty->Fill(pt,track->GetTPCnclsS()/nClustersTPC,relUncertainty1Pt);
3adc85ec 1011 if(track->GetTPCnclsS()/nClustersTPC>0.05) fPtRel1PtUncertaintyChi2PerClusTPCSharedSel->Fill(pt,relUncertainty1Pt,chi2PerClusterTPC);
fdceab34 1012 }//fTrackCutsITS loop
1013
f4d11ac8 1014 }//ESD track loop
fdceab34 1015
1016 // Post output data
1017 PostData(0, fHistList);
1018 PostData(1, fHistListTPC);
1019 PostData(2, fHistListITS);
65e8ecdd 1020 PostData(3, fHistListCosmics);
1021
1022}
1023//________________________________________________________________________
1024Bool_t AliPWG4HighPtQATPConly::IsCosmic(const AliESDtrack *track1 , Int_t trackNumber, Double_t ptMin)
1025{
9c8dfcb5 1026 Bool_t candidate1 = kFALSE;
65e8ecdd 1027 Bool_t candidate2 = kFALSE;
9c8dfcb5 1028 if(!track1) return candidate1;
65e8ecdd 1029
1030 Int_t nTracks = fESD->GetNumberOfTracks();
1031
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;
1038
9c8dfcb5 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;
65e8ecdd 1042
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);
9c8dfcb5 1049 if(TMath::Abs(TMath::Pi()-theta)<fMaxCosmicAngle) { candidate1 = kTRUE; candidate2 = kTRUE;}
65e8ecdd 1050
1051 if(candidate2) {
1052 fDeltaPtCosmicCandidates->Fill(track1->Pt()-track2->Pt());
1053 fDeltaPhi->Fill(track1->Phi()-track2->Phi());
a994dd35 1054 fDeltaEta->Fill(track1->Eta()-track2->Eta());
65e8ecdd 1055 }
fdceab34 1056
65e8ecdd 1057 }
1058
9c8dfcb5 1059 if(candidate1) {
65e8ecdd 1060 fPtCosmicCandidates->Fill(track1->Pt());
1061 }
1062
9c8dfcb5 1063 return candidate1;
fdceab34 1064}
65e8ecdd 1065
fdceab34 1066//________________________________________________________________________
1067void AliPWG4HighPtQATPConly::Terminate(Option_t *)
1068{
fdceab34 1069
fdceab34 1070}
df943115 1071
1072#endif