]> git.uio.no Git - u/mrichter/AliRoot.git/blame - PWG4/JetTasks/AliPWG4HighPtQATPConly.cxx
addedd new histos for cosmics
[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),
b5cc0c6d 67 fNEventAll(0),
68 fNEventSel(0),
df943115 69 fPtAll(0),
70 fPtSel(0),
fdceab34 71 fPtAllminPtTPCvsPtAll(0),
72 fPtAllminPtTPCvsPtAllNPointTPC(0),
65e8ecdd 73 fPtAllminPtTPCvsPtAllNPointTPCS(0),
fdceab34 74 fPtAllminPtTPCvsPtAllDCAR(0),
75 fPtAllminPtTPCvsPtAllDCAZ(0),
76 fPtAllminPtTPCvsPtAllPhi(0),
77 fPtAllminPtTPCvsPtAllNPointITS(0),
78 fPtAllminPtTPCvsPtAllNSigmaToVertex(0),
79 fPtAllminPtTPCvsPtAllChi2C(0),
80 fPtAllminPtTPCvsPtAllRel1PtUncertainty(0),
f4d11ac8 81 fPtAllminPtTPCvsPtAllChi2PerNClusTPC(0),
82 fPtAllminPtTPCvsPtAllChi2PerNClusITS(0),
83 fEtaPhiOutliers(0),
84 fPtSelITSouter(0),
85 fPtITSouterminPtTPCvsPtAll(0),
86 fPtITSouterminPtTPCvsPtAllNPointTPC(0),
65e8ecdd 87 fPtITSouterminPtTPCvsPtAllNPointTPCS(0),
f4d11ac8 88 fPtITSouterminPtTPCvsPtAllDCAR(0),
89 fPtITSouterminPtTPCvsPtAllDCAZ(0),
90 fPtITSouterminPtTPCvsPtAllPhi(0),
91 fPtITSouterminPtTPCvsPtAllNPointITS(0),
92 fPtITSouterminPtTPCvsPtAllNSigmaToVertex(0),
93 fPtITSouterminPtTPCvsPtAllChi2C(0),
94 fPtITSouterminPtTPCvsPtAllRel1PtUncertainty(0),
95 fPtITSouterminPtTPCvsPtAllChi2PerNClusTPC(0),
96 fPtITSouterminPtTPCvsPtAllChi2PerNClusITS(0),
97 fPtITSouterminPtTPCvsPtAll_ITSLayer0(0),
98 fPtITSouterminPtTPCvsPtAll_ITSLayer1(0),
99 fPtITSouterminPtTPCvsPtAll_ITSLayer2(0),
100 fPtITSouterminPtTPCvsPtAll_ITSLayer3(0),
101 fPtITSouterminPtTPCvsPtAll_ITSLayer4(0),
102 fPtITSouterminPtTPCvsPtAll_ITSLayer5(0),
103 fPtITSouterminPtTPCvsPtAll_NoSPD(0),
104 fPtITSouterminPtTPCvsPtAll_NoSDD(0),
105 fPtITSouterminPtTPCvsPtAll_NoSSD(0),
106 fPtITSouterminPtTPCvsPtAllChi2PerNClusITS_ITSLayer0(0),
107 fPtITSouterminPtTPCvsPtAllChi2PerNClusITS_ITSLayer1(0),
108 fPtITSouterminPtTPCvsPtAllChi2PerNClusITS_ITSLayer2(0),
109 fPtITSouterminPtTPCvsPtAllChi2PerNClusITS_ITSLayer3(0),
110 fPtITSouterminPtTPCvsPtAllChi2PerNClusITS_ITSLayer4(0),
111 fPtITSouterminPtTPCvsPtAllChi2PerNClusITS_ITSLayer5(0),
112 fPtITSouterminPtTPCvsPtAllChi2PerNClusITS_NoSPD(0),
113 fPtITSouterminPtTPCvsPtAllChi2PerNClusITS_NoSDD(0),
114 fPtITSouterminPtTPCvsPtAllChi2PerNClusITS_NoSSD(0),
fdceab34 115 fHistList(0),
116 fPtAllTPC(0),
117 fPtSelTPC(0),
118 fPtSelTPCITS(0),
119 fHistListTPC(0),
120 fPtSelITS(0),
121 fPtITSminPtTPCvsPtITS(0),
122 fPtITSminPtTPCvsPtITSNPointTPC(0),
65e8ecdd 123 fPtITSminPtTPCvsPtITSNPointTPCS(0),
fdceab34 124 fPtITSminPtTPCvsPtITSDCAR(0),
125 fPtITSminPtTPCvsPtITSDCAZ(0),
126 fPtITSminPtTPCvsPtITSPhi(0),
127 fPtITSminPtTPCvsPtITSNPointITS(0),
128 fPtITSminPtTPCvsPtITSNSigmaToVertex(0),
129 fPtITSminPtTPCvsPtITSChi2C(0),
130 fPtITSminPtTPCvsPtITSRel1PtUncertainty(0),
f4d11ac8 131 fPtITSminPtTPCvsPtITSChi2PerNClusTPC(0),
132 fPtITSminPtTPCvsPtITSChi2PerNClusITS(0),
f4d11ac8 133 fPtRel1PtUncertaintyChi2PerClusTPC(0),
65e8ecdd 134 fPtNPointTPCSChi2PerClusTPC(0),
135 fPtNPointTPCSRel1PtUncertainty(0),
136 fPtRel1PtUncertaintyChi2PerClusTPC_SharedSel(0),
137 fHistListITS(0),
138 fPtCosmicCandidates(0),
139 fDeltaPtCosmicCandidates(0),
140 fDeltaPhi(0),
141 fDeltaEta(0),
142 fHistListCosmics(0)
fdceab34 143{
df943115 144
fdceab34 145}
146//________________________________________________________________________
147AliPWG4HighPtQATPConly::AliPWG4HighPtQATPConly(const char *name):
148 AliAnalysisTask(name, ""),
149 fESD(0),
f4d11ac8 150 fESDfriend(0),
151 fMC(0),
fdceab34 152 fTrackCuts(),
153 fTrackCutsITS(),
b5cc0c6d 154 fNEventAll(0),
155 fNEventSel(0),
df943115 156 fPtAll(0),
157 fPtSel(0),
fdceab34 158 fPtAllminPtTPCvsPtAll(0),
159 fPtAllminPtTPCvsPtAllNPointTPC(0),
65e8ecdd 160 fPtAllminPtTPCvsPtAllNPointTPCS(0),
fdceab34 161 fPtAllminPtTPCvsPtAllDCAR(0),
162 fPtAllminPtTPCvsPtAllDCAZ(0),
163 fPtAllminPtTPCvsPtAllPhi(0),
164 fPtAllminPtTPCvsPtAllNPointITS(0),
165 fPtAllminPtTPCvsPtAllNSigmaToVertex(0),
166 fPtAllminPtTPCvsPtAllChi2C(0),
167 fPtAllminPtTPCvsPtAllRel1PtUncertainty(0),
f4d11ac8 168 fPtAllminPtTPCvsPtAllChi2PerNClusTPC(0),
169 fPtAllminPtTPCvsPtAllChi2PerNClusITS(0),
170 fEtaPhiOutliers(0),
171 fPtSelITSouter(0),
172 fPtITSouterminPtTPCvsPtAll(0),
173 fPtITSouterminPtTPCvsPtAllNPointTPC(0),
65e8ecdd 174 fPtITSouterminPtTPCvsPtAllNPointTPCS(0),
f4d11ac8 175 fPtITSouterminPtTPCvsPtAllDCAR(0),
176 fPtITSouterminPtTPCvsPtAllDCAZ(0),
177 fPtITSouterminPtTPCvsPtAllPhi(0),
178 fPtITSouterminPtTPCvsPtAllNPointITS(0),
179 fPtITSouterminPtTPCvsPtAllNSigmaToVertex(0),
180 fPtITSouterminPtTPCvsPtAllChi2C(0),
181 fPtITSouterminPtTPCvsPtAllRel1PtUncertainty(0),
182 fPtITSouterminPtTPCvsPtAllChi2PerNClusTPC(0),
183 fPtITSouterminPtTPCvsPtAllChi2PerNClusITS(0),
184 fPtITSouterminPtTPCvsPtAll_ITSLayer0(0),
185 fPtITSouterminPtTPCvsPtAll_ITSLayer1(0),
186 fPtITSouterminPtTPCvsPtAll_ITSLayer2(0),
187 fPtITSouterminPtTPCvsPtAll_ITSLayer3(0),
188 fPtITSouterminPtTPCvsPtAll_ITSLayer4(0),
189 fPtITSouterminPtTPCvsPtAll_ITSLayer5(0),
190 fPtITSouterminPtTPCvsPtAll_NoSPD(0),
191 fPtITSouterminPtTPCvsPtAll_NoSDD(0),
192 fPtITSouterminPtTPCvsPtAll_NoSSD(0),
193 fPtITSouterminPtTPCvsPtAllChi2PerNClusITS_ITSLayer0(0),
194 fPtITSouterminPtTPCvsPtAllChi2PerNClusITS_ITSLayer1(0),
195 fPtITSouterminPtTPCvsPtAllChi2PerNClusITS_ITSLayer2(0),
196 fPtITSouterminPtTPCvsPtAllChi2PerNClusITS_ITSLayer3(0),
197 fPtITSouterminPtTPCvsPtAllChi2PerNClusITS_ITSLayer4(0),
198 fPtITSouterminPtTPCvsPtAllChi2PerNClusITS_ITSLayer5(0),
199 fPtITSouterminPtTPCvsPtAllChi2PerNClusITS_NoSPD(0),
200 fPtITSouterminPtTPCvsPtAllChi2PerNClusITS_NoSDD(0),
201 fPtITSouterminPtTPCvsPtAllChi2PerNClusITS_NoSSD(0),
fdceab34 202 fHistList(0),
203 fPtAllTPC(0),
204 fPtSelTPC(0),
205 fPtSelTPCITS(0),
206 fHistListTPC(0),
207 fPtSelITS(0),
208 fPtITSminPtTPCvsPtITS(0),
209 fPtITSminPtTPCvsPtITSNPointTPC(0),
65e8ecdd 210 fPtITSminPtTPCvsPtITSNPointTPCS(0),
fdceab34 211 fPtITSminPtTPCvsPtITSDCAR(0),
212 fPtITSminPtTPCvsPtITSDCAZ(0),
213 fPtITSminPtTPCvsPtITSPhi(0),
214 fPtITSminPtTPCvsPtITSNPointITS(0),
215 fPtITSminPtTPCvsPtITSNSigmaToVertex(0),
216 fPtITSminPtTPCvsPtITSChi2C(0),
217 fPtITSminPtTPCvsPtITSRel1PtUncertainty(0),
f4d11ac8 218 fPtITSminPtTPCvsPtITSChi2PerNClusTPC(0),
219 fPtITSminPtTPCvsPtITSChi2PerNClusITS(0),
f4d11ac8 220 fPtRel1PtUncertaintyChi2PerClusTPC(0),
65e8ecdd 221 fPtNPointTPCSChi2PerClusTPC(0),
222 fPtNPointTPCSRel1PtUncertainty(0),
223 fPtRel1PtUncertaintyChi2PerClusTPC_SharedSel(0),
224 fHistListITS(0),
225 fPtCosmicCandidates(0),
226 fDeltaPtCosmicCandidates(0),
227 fDeltaPhi(0),
228 fDeltaEta(0),
229 fHistListCosmics(0)
fdceab34 230{
231 //
232 // Constructor. Initialization of Inputs and Outputs
233 //
234 Info("AliPWG4HighPtQATPConly","Calling Constructor");
235 // Input slot #0 works with a TChain ESD
236 DefineInput(0, TChain::Class());
237 // Output slot #0 writes into a TList
238 DefineOutput(0, TList::Class());
239 // Output slot #1 writes into a TList
240 DefineOutput(1, TList::Class());
241 // Output slot #2 writes into a TList
242 DefineOutput(2, TList::Class());
65e8ecdd 243 // Output slot #3 writes into a TList
244 DefineOutput(3, TList::Class());
df943115 245}
fdceab34 246
247//________________________________________________________________________
248void AliPWG4HighPtQATPConly::ConnectInputData(Option_t *)
249{
250 // Connect ESD here
251 // Called once
df943115 252 AliDebug(2,Form(">> AliPWG4HighPtSpectra::ConnectInputData \n"));
fdceab34 253 TTree* tree = dynamic_cast<TTree*> (GetInputData(0));
254 if (!tree) {
f4d11ac8 255 AliDebug(2,Form( "ERROR: Could not read chain from input slot 0 \n"));
256 return;
257 }
258
259 AliESDInputHandler *esdH = dynamic_cast<AliESDInputHandler*> (AliAnalysisManager::GetAnalysisManager()->GetInputEventHandler());
260
261 if (!esdH) {
262 AliDebug(2,Form("ERROR: Could not get ESDInputHandler"));
263 return;
264 } else
265 fESD = esdH->GetEvent();
266
267 AliMCEventHandler *eventHandler = dynamic_cast<AliMCEventHandler*> (AliAnalysisManager::GetAnalysisManager()->GetMCtruthEventHandler());
268 // AliMCEventHandler* mcH = dynamic_cast<AliMCEventHandler*>
269 // (AliAnalysisManager::GetAnalysisManager()->GetMCtruthEventHandler());
270 if (!eventHandler) {
271 AliDebug(2,Form( "ERROR: Could not retrieve MC event handler \n"));
fdceab34 272 }
f4d11ac8 273 else
274 fMC = eventHandler->MCEvent();
275
276 //attach the ESD friend
277 // tree->SetBranchStatus("*", kTRUE);
278// tree->SetBranchStatus("Tracks*", kTRUE);
279// tree->SetBranchStatus("ESDfriend*", kTRUE);
280 // fESD->ReadFromTree(tree);
281
282 fESDfriend = (AliESDfriend*)fESD->FindListObject("AliESDfriend");
283 if (!fESDfriend)
284 {
285 // works for both, we just want to avoid setting the branch adress twice
286 // in case of the new ESD
287 tree->SetBranchAddress("ESDfriend.",&fESDfriend);
288 }
289
fdceab34 290}
291
fdceab34 292//________________________________________________________________________
293void AliPWG4HighPtQATPConly::CreateOutputObjects() {
294 //Create output objects
df943115 295 AliDebug(2,Form(">> AliPWG4HighPtQATPConly::CreateOutputObjects \n"));
296
297 Bool_t oldStatus = TH1::AddDirectoryStatus();
298 TH1::AddDirectory(kFALSE);
299
fdceab34 300 OpenFile(0);
301 fHistList = new TList();
302 OpenFile(1);
303 fHistListTPC = new TList();
304 OpenFile(2);
305 fHistListITS = new TList();
65e8ecdd 306 OpenFile(3);
307 fHistListCosmics = new TList();
308
fdceab34 309
310 Int_t fgkNPhiBins=18;
311 Float_t kMinPhi = 0.;
312 Float_t kMaxPhi = 2.*TMath::Pi();
313
f4d11ac8 314 Float_t fgkPtMin=0.;
fdceab34 315 Float_t fgkPtMax=100.;
f4d11ac8 316 Int_t fgkNPtBins=(int)(fgkPtMax-fgkPtMin);
317
318 Float_t fgkChi2PerClusMin = 0.;
319 Float_t fgkChi2PerClusMax = 3.5;
320 Int_t fgkChi2PerClusBins = (int)(fgkChi2PerClusMax*10.);
65e8ecdd 321
f4d11ac8 322
b5cc0c6d 323 Int_t fgkResPtBins=80;
fdceab34 324
b5cc0c6d 325 fNEventAll = new TH1F("fNEventAll","NEventAll",1,-0.5,0.5);
326 fHistList->Add(fNEventAll);
327 fNEventSel = new TH1F("fNEventSel","NEvent Selected for analysis",1,-0.5,0.5);
328 fHistList->Add(fNEventSel);
fdceab34 329 fPtAll = new TH1F("fPtAll","PtAll",fgkNPtBins, fgkPtMin, fgkPtMax);
330 fHistList->Add(fPtAll);
331 fPtSel = new TH1F("fPtSel","PtSel",fgkNPtBins, fgkPtMin, fgkPtMax);
332 fHistList->Add(fPtSel);
65e8ecdd 333
fdceab34 334 fPtAllminPtTPCvsPtAll = new TH2F("fPtAllminPtTPCvsPtAll","PtAllminPtTPCvsPtAll",fgkNPtBins, fgkPtMin,fgkPtMax,fgkResPtBins,-1.,1.);
f4d11ac8 335 fPtAllminPtTPCvsPtAll->SetXTitle("p_{t}^{Global}");
336 fPtAllminPtTPCvsPtAll->SetYTitle("(1/p_{t}^{Global}-1/p_{t}^{TPC})/(1/p_{t}^{Global})");
fdceab34 337 fHistList->Add(fPtAllminPtTPCvsPtAll);
338
339 fPtAllminPtTPCvsPtAllNPointTPC = new TH3F("fPtAllminPtTPCvsPtAllNPointTPC","PtAllminPtTPCvsPtAllNPointTPC",fgkNPtBins, fgkPtMin,fgkPtMax,fgkResPtBins,-1.,1.,160,0.5,160.5);
f4d11ac8 340 fPtAllminPtTPCvsPtAllNPointTPC->SetXTitle("p_{t}^{Global}");
341 fPtAllminPtTPCvsPtAllNPointTPC->SetYTitle("(1/p_{t}^{Global}-1/p_{t}^{TPC})/(1/p_{t}^{Global})");
fdceab34 342 fPtAllminPtTPCvsPtAllNPointTPC->SetZTitle("N_{point,TPC}");
343 fHistList->Add(fPtAllminPtTPCvsPtAllNPointTPC);
344
65e8ecdd 345 fPtAllminPtTPCvsPtAllNPointTPCS = new TH3F("fPtAllminPtTPCvsPtAllNPointTPCS","PtAllminPtTPCvsPtAllNPointTPCS",fgkNPtBins, fgkPtMin,fgkPtMax,fgkResPtBins,-1.,1.,100,0.,1.);
346 fPtAllminPtTPCvsPtAllNPointTPCS->SetXTitle("p_{t}^{Global}");
347 fPtAllminPtTPCvsPtAllNPointTPCS->SetYTitle("(1/p_{t}^{Global}-1/p_{t}^{TPC})/(1/p_{t}^{Global})");
348 fPtAllminPtTPCvsPtAllNPointTPCS->SetZTitle("N_{point,TPC}^{Shared}/N_{point,TPC}");
349 fHistList->Add(fPtAllminPtTPCvsPtAllNPointTPCS);
350
67ebd013 351 fPtAllminPtTPCvsPtAllDCAR = new TH3F("fPtAllminPtTPCvsPtAllDCAR","PtAllminPtTPCvsPtAllDCAR",fgkNPtBins, fgkPtMin,fgkPtMax,fgkResPtBins,-1.,1.,80,-0.2,0.2);
f4d11ac8 352 fPtAllminPtTPCvsPtAllDCAR->SetXTitle("p_{t}^{Global}");
353 fPtAllminPtTPCvsPtAllDCAR->SetYTitle("(1/p_{t}^{Global}-1/p_{t}^{TPC})/(1/p_{t}^{Global})");
fdceab34 354 fPtAllminPtTPCvsPtAllDCAR->SetZTitle("DCA_{R}");
355 fHistList->Add(fPtAllminPtTPCvsPtAllDCAR);
356
67ebd013 357 fPtAllminPtTPCvsPtAllDCAZ = new TH3F("fPtAllminPtTPCvsPtAllDCAZ","PtAllminPtTPCvsPtAllDCAZ",fgkNPtBins, fgkPtMin,fgkPtMax,fgkResPtBins,-1.,1.,80,-2.,2.);
f4d11ac8 358 fPtAllminPtTPCvsPtAllDCAZ->SetXTitle("p_{t}^{Global}");
359 fPtAllminPtTPCvsPtAllDCAZ->SetYTitle("(1/p_{t}^{Global}-1/p_{t}^{TPC})/(1/p_{t}^{Global})");
fdceab34 360 fPtAllminPtTPCvsPtAllDCAZ->SetZTitle("DCA_{Z}");
361 fHistList->Add(fPtAllminPtTPCvsPtAllDCAZ);
362
363 fPtAllminPtTPCvsPtAllPhi = new TH3F("fPtAllminPtTPCvsPtAllPhi","PtAllminPtTPCvsPtAllPhi",fgkNPtBins, fgkPtMin,fgkPtMax,fgkResPtBins,-1.,1.,fgkNPhiBins,kMinPhi,kMaxPhi);
f4d11ac8 364 fPtAllminPtTPCvsPtAllPhi->SetXTitle("p_{t}^{Global}");
365 fPtAllminPtTPCvsPtAllPhi->SetYTitle("(1/p_{t}^{Global}-1/p_{t}^{TPC})/(1/p_{t}^{Global})");
fdceab34 366 fPtAllminPtTPCvsPtAllPhi->SetZTitle("#phi");
367 fHistList->Add(fPtAllminPtTPCvsPtAllPhi);
368
369 fPtAllminPtTPCvsPtAllNPointITS = new TH3F("fPtAllminPtTPCvsPtAllNPointITS","PtAllminPtTPCvsPtAllNPointITS",fgkNPtBins, fgkPtMin,fgkPtMax,fgkResPtBins,-1.,1.,9,-0.5,8.5);
f4d11ac8 370 fPtAllminPtTPCvsPtAllNPointITS->SetXTitle("p_{t}^{Global}");
371 fPtAllminPtTPCvsPtAllNPointITS->SetYTitle("(1/p_{t}^{Global}-1/p_{t}^{TPC})/(1/p_{t}^{Global})");
372 fPtAllminPtTPCvsPtAllNPointITS->SetZTitle("N_{point,ITS}");
fdceab34 373 fHistList->Add(fPtAllminPtTPCvsPtAllNPointITS);
374
375 fPtAllminPtTPCvsPtAllNSigmaToVertex = new TH3F("fPtAllminPtTPCvsPtAllNSigmaToVertex","PtAllminPtTPCvsPtAllNSigmaToVertex",fgkNPtBins, fgkPtMin,fgkPtMax,fgkResPtBins,-1.,1.,40,0.,8.);
f4d11ac8 376 fPtAllminPtTPCvsPtAllNSigmaToVertex->SetXTitle("p_{t}^{Global}");
377 fPtAllminPtTPCvsPtAllNSigmaToVertex->SetYTitle("(1/p_{t}^{Global}-1/p_{t}^{TPC})/(1/p_{t}^{Global})");
fdceab34 378 fPtAllminPtTPCvsPtAllNSigmaToVertex->SetZTitle("N#sigma to vertex");
379 fHistList->Add(fPtAllminPtTPCvsPtAllNSigmaToVertex);
380
381 fPtAllminPtTPCvsPtAllChi2C = new TH3F("fPtAllminPtTPCvsPtAllChi2C","PtAllminPtTPCvsPtAllChi2C",fgkNPtBins, fgkPtMin,fgkPtMax,fgkResPtBins,-1.,1.,20,0.,10.);
f4d11ac8 382 fPtAllminPtTPCvsPtAllChi2C->SetXTitle("p_{t}^{Global}");
383 fPtAllminPtTPCvsPtAllChi2C->SetYTitle("(1/p_{t}^{Global}-1/p_{t}^{TPC})/(1/p_{t}^{Global})");
fdceab34 384 fPtAllminPtTPCvsPtAllChi2C->SetZTitle("Constrained #chi^{2}");
385 fHistList->Add(fPtAllminPtTPCvsPtAllChi2C);
386
387 fPtAllminPtTPCvsPtAllRel1PtUncertainty = new TH3F("fPtAllminPtTPCvsPtAllRel1PtUncertainty","PtAllminPtTPCvsPtAllRel1PtUncertainty",fgkNPtBins, fgkPtMin,fgkPtMax,fgkResPtBins,-1.,1.,30,0.,0.3);
f4d11ac8 388 fPtAllminPtTPCvsPtAllRel1PtUncertainty->SetXTitle("p_{t}^{Global}");
389 fPtAllminPtTPCvsPtAllRel1PtUncertainty->SetYTitle("(1/p_{t}^{Global}-1/p_{t}^{TPC})/(1/p_{t}^{Global})");
fdceab34 390 fPtAllminPtTPCvsPtAllRel1PtUncertainty->SetZTitle("Rel1PtUncertainty");
391 fHistList->Add(fPtAllminPtTPCvsPtAllRel1PtUncertainty);
392
f4d11ac8 393 fPtAllminPtTPCvsPtAllChi2PerNClusTPC = new TH3F("fPtAllminPtTPCvsPtAllChi2PerNClusTPC","PtAllminPtTPCvsPtAllChi2PerNClusTPC",fgkNPtBins, fgkPtMin,fgkPtMax,fgkResPtBins,-1.,1.,fgkChi2PerClusBins,fgkChi2PerClusMin,fgkChi2PerClusMax);
394 fPtAllminPtTPCvsPtAllChi2PerNClusTPC->SetXTitle("p_{t}^{Global}");
395 fPtAllminPtTPCvsPtAllChi2PerNClusTPC->SetYTitle("(1/p_{t}^{Global}-1/p_{t}^{TPC})/(1/p_{t}^{Global})");
65e8ecdd 396 fPtAllminPtTPCvsPtAllChi2PerNClusTPC->SetZTitle("#chi^{2}/(2*NClusTPC-5)");
f4d11ac8 397 fHistList->Add(fPtAllminPtTPCvsPtAllChi2PerNClusTPC);
398
399 fPtAllminPtTPCvsPtAllChi2PerNClusITS = new TH3F("fPtAllminPtTPCvsPtAllChi2PerNClusITS","PtAllminPtTPCvsPtAllChi2PerNClusITS",fgkNPtBins, fgkPtMin,fgkPtMax,fgkResPtBins,-1.,1.,fgkChi2PerClusBins,fgkChi2PerClusMin,fgkChi2PerClusMax);
400 fPtAllminPtTPCvsPtAllChi2PerNClusITS->SetXTitle("p_{t}^{Global}");
401 fPtAllminPtTPCvsPtAllChi2PerNClusITS->SetYTitle("(1/p_{t}^{Global}-1/p_{t}^{TPC})/(1/p_{t}^{Global})");
65e8ecdd 402 fPtAllminPtTPCvsPtAllChi2PerNClusITS->SetZTitle("#chi^{2}/(2*NClusITS-5)");
f4d11ac8 403 fHistList->Add(fPtAllminPtTPCvsPtAllChi2PerNClusITS);
404
405 fEtaPhiOutliers = new TH2F("fEtaPhiOutliers","PtAllminPtTPCvsPtAll",20, -1.,1.,fgkNPhiBins,kMinPhi,kMaxPhi);
406 fEtaPhiOutliers->SetXTitle("#eta");
407 fEtaPhiOutliers->SetYTitle("#phi");
408 fHistList->Add(fEtaPhiOutliers);
409
410 //Global vs ITSouter-TPCinner
411 fPtSelITSouter = new TH1F("fPtSelITSouter","PtSelITSouter",fgkNPtBins,fgkPtMin,fgkPtMax);
412 fHistList->Add(fPtSelITSouter);
413
414 fPtITSouterminPtTPCvsPtAll = new TH2F("fPtITSouterminPtTPCvsPtAll","PtAllminPtTPCvsPtAll",fgkNPtBins, fgkPtMin,fgkPtMax,fgkResPtBins,-1.,1.);
415 fPtITSouterminPtTPCvsPtAll->SetXTitle("p_{t}^{Global}");
416 fPtITSouterminPtTPCvsPtAll->SetYTitle("(1/p_{t}^{ITSouter}-1/p_{t}^{TPCinner})/(1/p_{t}^{ITSouter})");
417 fHistList->Add(fPtITSouterminPtTPCvsPtAll);
418
419 fPtITSouterminPtTPCvsPtAllNPointTPC = new TH3F("fPtITSouterminPtTPCvsPtAllNPointTPC","PtAllminPtTPCvsPtAllNPointTPC",fgkNPtBins, fgkPtMin,fgkPtMax,fgkResPtBins,-1.,1.,160,0.5,160.5);
420 fPtITSouterminPtTPCvsPtAllNPointTPC->SetXTitle("p_{t}^{Global}");
421 fPtITSouterminPtTPCvsPtAllNPointTPC->SetYTitle("(1/p_{t}^{ITSouter}-1/p_{t}^{TPCinner})/(1/p_{t}^{ITSouter})");
422 fPtITSouterminPtTPCvsPtAllNPointTPC->SetZTitle("N_{point,TPC}");
423 fHistList->Add(fPtITSouterminPtTPCvsPtAllNPointTPC);
424
65e8ecdd 425 fPtITSouterminPtTPCvsPtAllNPointTPCS = new TH3F("fPtITSouterminPtTPCvsPtAllNPointTPCS","PtAllminPtTPCvsPtAllNPointTPCS",fgkNPtBins, fgkPtMin,fgkPtMax,fgkResPtBins,-1.,1.,100,0.,1.);
426 fPtITSouterminPtTPCvsPtAllNPointTPCS->SetXTitle("p_{t}^{Global}");
427 fPtITSouterminPtTPCvsPtAllNPointTPCS->SetYTitle("(1/p_{t}^{Global}-1/p_{t}^{TPC})/(1/p_{t}^{Global})");
428 fPtITSouterminPtTPCvsPtAllNPointTPCS->SetZTitle("N_{point,TPC}^{Shared}/N_{point,TPC}");
429 fHistList->Add(fPtITSouterminPtTPCvsPtAllNPointTPCS);
430
f4d11ac8 431 fPtITSouterminPtTPCvsPtAllDCAR = new TH3F("fPtITSouterminPtTPCvsPtAllDCAR","PtAllminPtTPCvsPtAllDCAR",fgkNPtBins, fgkPtMin,fgkPtMax,fgkResPtBins,-1.,1.,80,-0.2,0.2);
432 fPtITSouterminPtTPCvsPtAllDCAR->SetXTitle("p_{t}^{Global}");
433 fPtITSouterminPtTPCvsPtAllDCAR->SetYTitle("(1/p_{t}^{ITSouter}-1/p_{t}^{TPCinner})/(1/p_{t}^{ITSouter})");
434 fPtITSouterminPtTPCvsPtAllDCAR->SetZTitle("DCA_{R}");
435 fHistList->Add(fPtITSouterminPtTPCvsPtAllDCAR);
436
437 fPtITSouterminPtTPCvsPtAllDCAZ = new TH3F("fPtITSouterminPtTPCvsPtAllDCAZ","PtAllminPtTPCvsPtAllDCAZ",fgkNPtBins, fgkPtMin,fgkPtMax,fgkResPtBins,-1.,1.,80,-2.,2.);
438 fPtITSouterminPtTPCvsPtAllDCAZ->SetXTitle("p_{t}^{Global}");
439 fPtITSouterminPtTPCvsPtAllDCAZ->SetYTitle("(1/p_{t}^{ITSouter}-1/p_{t}^{TPCinner})/(1/p_{t}^{ITSouter})");
440 fPtITSouterminPtTPCvsPtAllDCAZ->SetZTitle("DCA_{Z}");
441 fHistList->Add(fPtITSouterminPtTPCvsPtAllDCAZ);
442
443 fPtITSouterminPtTPCvsPtAllPhi = new TH3F("fPtITSouterminPtTPCvsPtAllPhi","PtAllminPtTPCvsPtAllPhi",fgkNPtBins, fgkPtMin,fgkPtMax,fgkResPtBins,-1.,1.,fgkNPhiBins,kMinPhi,kMaxPhi);
444 fPtITSouterminPtTPCvsPtAllPhi->SetXTitle("p_{t}^{Global}");
445 fPtITSouterminPtTPCvsPtAllPhi->SetYTitle("(1/p_{t}^{ITSouter}-1/p_{t}^{TPCinner})/(1/p_{t}^{ITSouter})");
446 fPtITSouterminPtTPCvsPtAllPhi->SetZTitle("#phi");
447 fHistList->Add(fPtITSouterminPtTPCvsPtAllPhi);
448
449 fPtITSouterminPtTPCvsPtAllNPointITS = new TH3F("fPtITSouterminPtTPCvsPtAllNPointITS","PtAllminPtTPCvsPtAllNPointITS",fgkNPtBins, fgkPtMin,fgkPtMax,fgkResPtBins,-1.,1.,9,-0.5,8.5);
450 fPtITSouterminPtTPCvsPtAllNPointITS->SetXTitle("p_{t}^{Global}");
451 fPtITSouterminPtTPCvsPtAllNPointITS->SetYTitle("(1/p_{t}^{ITSouter}-1/p_{t}^{TPCinner})/(1/p_{t}^{ITSouter})");
452 fPtITSouterminPtTPCvsPtAllNPointITS->SetZTitle("N_{point,ITS}");
453 fHistList->Add(fPtITSouterminPtTPCvsPtAllNPointITS);
454
455 fPtITSouterminPtTPCvsPtAllNSigmaToVertex = new TH3F("fPtITSouterminPtTPCvsPtAllNSigmaToVertex","PtAllminPtTPCvsPtAllNSigmaToVertex",fgkNPtBins, fgkPtMin,fgkPtMax,fgkResPtBins,-1.,1.,40,0.,8.);
456 fPtITSouterminPtTPCvsPtAllNSigmaToVertex->SetXTitle("p_{t}^{Global}");
457 fPtITSouterminPtTPCvsPtAllNSigmaToVertex->SetYTitle("(1/p_{t}^{ITSouter}-1/p_{t}^{TPCinner})/(1/p_{t}^{ITSouter})");
458 fPtITSouterminPtTPCvsPtAllNSigmaToVertex->SetZTitle("N#sigma to vertex");
459 fHistList->Add(fPtITSouterminPtTPCvsPtAllNSigmaToVertex);
460
461 fPtITSouterminPtTPCvsPtAllChi2C = new TH3F("fPtITSouterminPtTPCvsPtAllChi2C","PtAllminPtTPCvsPtAllChi2C",fgkNPtBins, fgkPtMin,fgkPtMax,fgkResPtBins,-1.,1.,20,0.,10.);
462 fPtITSouterminPtTPCvsPtAllChi2C->SetXTitle("p_{t}^{Global}");
463 fPtITSouterminPtTPCvsPtAllChi2C->SetYTitle("(1/p_{t}^{ITSouter}-1/p_{t}^{TPCinner})/(1/p_{t}^{ITSouter})");
464 fPtITSouterminPtTPCvsPtAllChi2C->SetZTitle("Constrained #chi^{2}");
465 fHistList->Add(fPtITSouterminPtTPCvsPtAllChi2C);
466
467 fPtITSouterminPtTPCvsPtAllRel1PtUncertainty = new TH3F("fPtITSouterminPtTPCvsPtAllRel1PtUncertainty","PtAllminPtTPCvsPtAllRel1PtUncertainty",fgkNPtBins, fgkPtMin,fgkPtMax,fgkResPtBins,-1.,1.,30,0.,0.3);
468 fPtITSouterminPtTPCvsPtAllRel1PtUncertainty->SetXTitle("p_{t}^{Global}");
469 fPtITSouterminPtTPCvsPtAllRel1PtUncertainty->SetYTitle("(1/p_{t}^{ITSouter}-1/p_{t}^{TPCinner})/(1/p_{t}^{ITSouter})");
470 fPtITSouterminPtTPCvsPtAllRel1PtUncertainty->SetZTitle("Rel1PtUncertainty");
471 fHistList->Add(fPtITSouterminPtTPCvsPtAllRel1PtUncertainty);
472
473 fPtITSouterminPtTPCvsPtAllChi2PerNClusTPC = new TH3F("fPtITSouterminPtTPCvsPtAllChi2PerNClusTPC","PtAllminPtTPCvsPtAllChi2PerNClusTPC",fgkNPtBins, fgkPtMin,fgkPtMax,fgkResPtBins,-1.,1.,35,0.,3.5);
474 fPtITSouterminPtTPCvsPtAllChi2PerNClusTPC->SetXTitle("p_{t}^{Global}");
475 fPtITSouterminPtTPCvsPtAllChi2PerNClusTPC->SetYTitle("(1/p_{t}^{Global}-1/p_{t}^{TPC})/(1/p_{t}^{Global})");
65e8ecdd 476 fPtITSouterminPtTPCvsPtAllChi2PerNClusTPC->SetZTitle("#chi^{2}/(2*NClusTPC-5)");
f4d11ac8 477 fHistList->Add(fPtITSouterminPtTPCvsPtAllChi2PerNClusTPC);
478
479 fPtITSouterminPtTPCvsPtAllChi2PerNClusITS = new TH3F("fPtITSouterminPtTPCvsPtAllChi2PerNClusITS","PtAllminPtTPCvsPtAllChi2PerNClusITS",fgkNPtBins, fgkPtMin,fgkPtMax,fgkResPtBins,-1.,1.,35,0.,3.5);
480 fPtITSouterminPtTPCvsPtAllChi2PerNClusITS->SetXTitle("p_{t}^{Global}");
481 fPtITSouterminPtTPCvsPtAllChi2PerNClusITS->SetYTitle("(1/p_{t}^{Global}-1/p_{t}^{TPC})/(1/p_{t}^{Global})");
65e8ecdd 482 fPtITSouterminPtTPCvsPtAllChi2PerNClusITS->SetZTitle("#chi^{2}/(2*NClusITS-5)");
f4d11ac8 483 fHistList->Add(fPtITSouterminPtTPCvsPtAllChi2PerNClusITS);
484
485 //As function of ITS layers
486 fPtITSouterminPtTPCvsPtAll_ITSLayer0 = new TH2F("fPtITSouterminPtTPCvsPtAll_ITSLayer0","PtAllminPtTPCvsPtAll_ITSLayer0",fgkNPtBins, fgkPtMin,fgkPtMax,fgkResPtBins,-1.,1.);
487 fPtITSouterminPtTPCvsPtAll_ITSLayer0->SetXTitle("p_{t}^{Global}");
488 fPtITSouterminPtTPCvsPtAll_ITSLayer0->SetYTitle("(1/p_{t}^{ITSouter}-1/p_{t}^{TPCinner})/(1/p_{t}^{ITSouter})");
489 fHistList->Add(fPtITSouterminPtTPCvsPtAll_ITSLayer0);
490
491 fPtITSouterminPtTPCvsPtAll_ITSLayer1 = new TH2F("fPtITSouterminPtTPCvsPtAll_ITSLayer1","PtAllminPtTPCvsPtAll_ITSLayer1",fgkNPtBins, fgkPtMin,fgkPtMax,fgkResPtBins,-1.,1.);
492 fPtITSouterminPtTPCvsPtAll_ITSLayer1->SetXTitle("p_{t}^{Global}");
493 fPtITSouterminPtTPCvsPtAll_ITSLayer1->SetYTitle("(1/p_{t}^{ITSouter}-1/p_{t}^{TPCinner})/(1/p_{t}^{ITSouter})");
494 fHistList->Add(fPtITSouterminPtTPCvsPtAll_ITSLayer1);
495
496 fPtITSouterminPtTPCvsPtAll_ITSLayer2 = new TH2F("fPtITSouterminPtTPCvsPtAll_ITSLayer2","PtAllminPtTPCvsPtAll_ITSLayer2",fgkNPtBins, fgkPtMin,fgkPtMax,fgkResPtBins,-1.,1.);
497 fPtITSouterminPtTPCvsPtAll_ITSLayer2->SetXTitle("p_{t}^{Global}");
498 fPtITSouterminPtTPCvsPtAll_ITSLayer2->SetYTitle("(1/p_{t}^{ITSouter}-1/p_{t}^{TPCinner})/(1/p_{t}^{ITSouter})");
499 fHistList->Add(fPtITSouterminPtTPCvsPtAll_ITSLayer2);
500
501 fPtITSouterminPtTPCvsPtAll_ITSLayer3 = new TH2F("fPtITSouterminPtTPCvsPtAll_ITSLayer3","PtAllminPtTPCvsPtAll_ITSLayer3",fgkNPtBins, fgkPtMin,fgkPtMax,fgkResPtBins,-1.,1.);
502 fPtITSouterminPtTPCvsPtAll_ITSLayer3->SetXTitle("p_{t}^{Global}");
503 fPtITSouterminPtTPCvsPtAll_ITSLayer3->SetYTitle("(1/p_{t}^{ITSouter}-1/p_{t}^{TPCinner})/(1/p_{t}^{ITSouter})");
504 fHistList->Add(fPtITSouterminPtTPCvsPtAll_ITSLayer3);
505
506 fPtITSouterminPtTPCvsPtAll_ITSLayer4 = new TH2F("fPtITSouterminPtTPCvsPtAll_ITSLayer4","PtAllminPtTPCvsPtAll_ITSLayer4",fgkNPtBins, fgkPtMin,fgkPtMax,fgkResPtBins,-1.,1.);
507 fPtITSouterminPtTPCvsPtAll_ITSLayer4->SetXTitle("p_{t}^{Global}");
508 fPtITSouterminPtTPCvsPtAll_ITSLayer4->SetYTitle("(1/p_{t}^{ITSouter}-1/p_{t}^{TPCinner})/(1/p_{t}^{ITSouter})");
509 fHistList->Add(fPtITSouterminPtTPCvsPtAll_ITSLayer4);
510
511 fPtITSouterminPtTPCvsPtAll_ITSLayer5 = new TH2F("fPtITSouterminPtTPCvsPtAll_ITSLayer5","PtAllminPtTPCvsPtAll_ITSLayer5",fgkNPtBins, fgkPtMin,fgkPtMax,fgkResPtBins,-1.,1.);
512 fPtITSouterminPtTPCvsPtAll_ITSLayer5->SetXTitle("p_{t}^{Global}");
513 fPtITSouterminPtTPCvsPtAll_ITSLayer5->SetYTitle("(1/p_{t}^{ITSouter}-1/p_{t}^{TPCinner})/(1/p_{t}^{ITSouter})");
514 fHistList->Add(fPtITSouterminPtTPCvsPtAll_ITSLayer5);
515
516 fPtITSouterminPtTPCvsPtAll_NoSPD = new TH2F("fPtITSouterminPtTPCvsPtAll_NoSPD","PtAllminPtTPCvsPtAll_NoSPD",fgkNPtBins, fgkPtMin,fgkPtMax,fgkResPtBins,-1.,1.);
517 fPtITSouterminPtTPCvsPtAll_NoSPD->SetXTitle("p_{t}^{Global}");
518 fPtITSouterminPtTPCvsPtAll_NoSPD->SetYTitle("(1/p_{t}^{ITSouter}-1/p_{t}^{TPCinner})/(1/p_{t}^{ITSouter})");
519 fHistList->Add(fPtITSouterminPtTPCvsPtAll_NoSPD);
520
521 fPtITSouterminPtTPCvsPtAll_NoSDD = new TH2F("fPtITSouterminPtTPCvsPtAll_NoSDD","PtAllminPtTPCvsPtAll_NoSDD",fgkNPtBins, fgkPtMin,fgkPtMax,fgkResPtBins,-1.,1.);
522 fPtITSouterminPtTPCvsPtAll_NoSDD->SetXTitle("p_{t}^{Global}");
523 fPtITSouterminPtTPCvsPtAll_NoSDD->SetYTitle("(1/p_{t}^{ITSouter}-1/p_{t}^{TPCinner})/(1/p_{t}^{ITSouter})");
524 fHistList->Add(fPtITSouterminPtTPCvsPtAll_NoSDD);
525
526 fPtITSouterminPtTPCvsPtAll_NoSSD = new TH2F("fPtITSouterminPtTPCvsPtAll_NoSSD","PtAllminPtTPCvsPtAll_NoSSD",fgkNPtBins, fgkPtMin,fgkPtMax,fgkResPtBins,-1.,1.);
527 fPtITSouterminPtTPCvsPtAll_NoSSD->SetXTitle("p_{t}^{Global}");
528 fPtITSouterminPtTPCvsPtAll_NoSSD->SetYTitle("(1/p_{t}^{ITSouter}-1/p_{t}^{TPCinner})/(1/p_{t}^{ITSouter})");
529 fHistList->Add(fPtITSouterminPtTPCvsPtAll_NoSSD);
530
531 //
532 fPtITSouterminPtTPCvsPtAllChi2PerNClusITS_ITSLayer0 = new TH3F("fPtITSouterminPtTPCvsPtAllChi2PerNClusITS_ITSLayer0","PtAllminPtTPCvsPtAllChi2PerNClusITS_ITSLayer0",fgkNPtBins, fgkPtMin,fgkPtMax,fgkResPtBins,-1.,1.,fgkChi2PerClusBins,fgkChi2PerClusMin,fgkChi2PerClusMax);
533 fPtITSouterminPtTPCvsPtAllChi2PerNClusITS_ITSLayer0->SetXTitle("p_{t}^{Global}");
534 fPtITSouterminPtTPCvsPtAllChi2PerNClusITS_ITSLayer0->SetYTitle("(1/p_{t}^{ITSouter}-1/p_{t}^{TPCinner})/(1/p_{t}^{ITSouter})");
535 fPtITSouterminPtTPCvsPtAllChi2PerNClusITS_ITSLayer0->SetZTitle("#chi^{2}/NPointITS");
536 fHistList->Add(fPtITSouterminPtTPCvsPtAllChi2PerNClusITS_ITSLayer0);
537
538 fPtITSouterminPtTPCvsPtAllChi2PerNClusITS_ITSLayer1 = new TH3F("fPtITSouterminPtTPCvsPtAllChi2PerNClusITS_ITSLayer1","PtAllminPtTPCvsPtAllChi2PerNClusITS_ITSLayer1",fgkNPtBins, fgkPtMin,fgkPtMax,fgkResPtBins,-1.,1.,fgkChi2PerClusBins,fgkChi2PerClusMin,fgkChi2PerClusMax);
539 fPtITSouterminPtTPCvsPtAllChi2PerNClusITS_ITSLayer1->SetXTitle("p_{t}^{Global}");
540 fPtITSouterminPtTPCvsPtAllChi2PerNClusITS_ITSLayer1->SetYTitle("(1/p_{t}^{ITSouter}-1/p_{t}^{TPCinner})/(1/p_{t}^{ITSouter})");
541 fPtITSouterminPtTPCvsPtAllChi2PerNClusITS_ITSLayer1->SetZTitle("#chi^{2}/NPointITS");
542 fHistList->Add(fPtITSouterminPtTPCvsPtAllChi2PerNClusITS_ITSLayer1);
543
544 fPtITSouterminPtTPCvsPtAllChi2PerNClusITS_ITSLayer2 = new TH3F("fPtITSouterminPtTPCvsPtAllChi2PerNClusITS_ITSLayer2","PtAllminPtTPCvsPtAllChi2PerNClusITS_ITSLayer2",fgkNPtBins, fgkPtMin,fgkPtMax,fgkResPtBins,-1.,1.,fgkChi2PerClusBins,fgkChi2PerClusMin,fgkChi2PerClusMax);
545 fPtITSouterminPtTPCvsPtAllChi2PerNClusITS_ITSLayer2->SetXTitle("p_{t}^{Global}");
546 fPtITSouterminPtTPCvsPtAllChi2PerNClusITS_ITSLayer2->SetYTitle("(1/p_{t}^{ITSouter}-1/p_{t}^{TPCinner})/(1/p_{t}^{ITSouter})");
547 fPtITSouterminPtTPCvsPtAllChi2PerNClusITS_ITSLayer2->SetZTitle("#chi^{2}/NPointITS");
548 fHistList->Add(fPtITSouterminPtTPCvsPtAllChi2PerNClusITS_ITSLayer2);
549
550 fPtITSouterminPtTPCvsPtAllChi2PerNClusITS_ITSLayer3 = new TH3F("fPtITSouterminPtTPCvsPtAllChi2PerNClusITS_ITSLayer3","PtAllminPtTPCvsPtAllChi2PerNClusITS_ITSLayer3",fgkNPtBins, fgkPtMin,fgkPtMax,fgkResPtBins,-1.,1.,fgkChi2PerClusBins,fgkChi2PerClusMin,fgkChi2PerClusMax);
551 fPtITSouterminPtTPCvsPtAllChi2PerNClusITS_ITSLayer3->SetXTitle("p_{t}^{Global}");
552 fPtITSouterminPtTPCvsPtAllChi2PerNClusITS_ITSLayer3->SetYTitle("(1/p_{t}^{ITSouter}-1/p_{t}^{TPCinner})/(1/p_{t}^{ITSouter})");
553 fPtITSouterminPtTPCvsPtAllChi2PerNClusITS_ITSLayer3->SetZTitle("#chi^{2}/NPointITS");
554 fHistList->Add(fPtITSouterminPtTPCvsPtAllChi2PerNClusITS_ITSLayer3);
555
556 fPtITSouterminPtTPCvsPtAllChi2PerNClusITS_ITSLayer4 = new TH3F("fPtITSouterminPtTPCvsPtAllChi2PerNClusITS_ITSLayer4","PtAllminPtTPCvsPtAllChi2PerNClusITS_ITSLayer4",fgkNPtBins, fgkPtMin,fgkPtMax,fgkResPtBins,-1.,1.,fgkChi2PerClusBins,fgkChi2PerClusMin,fgkChi2PerClusMax);
557 fPtITSouterminPtTPCvsPtAllChi2PerNClusITS_ITSLayer4->SetXTitle("p_{t}^{Global}");
558 fPtITSouterminPtTPCvsPtAllChi2PerNClusITS_ITSLayer4->SetYTitle("(1/p_{t}^{ITSouter}-1/p_{t}^{TPCinner})/(1/p_{t}^{ITSouter})");
559 fPtITSouterminPtTPCvsPtAllChi2PerNClusITS_ITSLayer4->SetZTitle("#chi^{2}/NPointITS");
560 fHistList->Add(fPtITSouterminPtTPCvsPtAllChi2PerNClusITS_ITSLayer4);
561
562 fPtITSouterminPtTPCvsPtAllChi2PerNClusITS_ITSLayer5 = new TH3F("fPtITSouterminPtTPCvsPtAllChi2PerNClusITS_ITSLayer5","PtAllminPtTPCvsPtAllChi2PerNClusITS_ITSLayer5",fgkNPtBins, fgkPtMin,fgkPtMax,fgkResPtBins,-1.,1.,fgkChi2PerClusBins,fgkChi2PerClusMin,fgkChi2PerClusMax);
563 fPtITSouterminPtTPCvsPtAllChi2PerNClusITS_ITSLayer5->SetXTitle("p_{t}^{Global}");
564 fPtITSouterminPtTPCvsPtAllChi2PerNClusITS_ITSLayer5->SetYTitle("(1/p_{t}^{ITSouter}-1/p_{t}^{TPCinner})/(1/p_{t}^{ITSouter})");
565 fPtITSouterminPtTPCvsPtAllChi2PerNClusITS_ITSLayer5->SetZTitle("#chi^{2}/NPointITS");
566 fHistList->Add(fPtITSouterminPtTPCvsPtAllChi2PerNClusITS_ITSLayer5);
567
568 fPtITSouterminPtTPCvsPtAllChi2PerNClusITS_NoSPD = new TH3F("fPtITSouterminPtTPCvsPtAllChi2PerNClusITS_NoSPD","PtAllminPtTPCvsPtAllChi2PerNClusITS_NoSPD",fgkNPtBins, fgkPtMin,fgkPtMax,fgkResPtBins,-1.,1.,fgkChi2PerClusBins,fgkChi2PerClusMin,fgkChi2PerClusMax);
569 fPtITSouterminPtTPCvsPtAllChi2PerNClusITS_NoSPD->SetXTitle("p_{t}^{Global}");
570 fPtITSouterminPtTPCvsPtAllChi2PerNClusITS_NoSPD->SetYTitle("(1/p_{t}^{ITSouter}-1/p_{t}^{TPCinner})/(1/p_{t}^{ITSouter})");
65e8ecdd 571 fPtITSouterminPtTPCvsPtAllChi2PerNClusITS_NoSPD->SetZTitle("#chi^{2}/(2*NPointITS-5)");
f4d11ac8 572 fHistList->Add(fPtITSouterminPtTPCvsPtAllChi2PerNClusITS_NoSPD);
573
574 fPtITSouterminPtTPCvsPtAllChi2PerNClusITS_NoSDD = new TH3F("fPtITSouterminPtTPCvsPtAllChi2PerNClusITS_NoSDD","PtAllminPtTPCvsPtAllChi2PerNClusITS_NoSDD",fgkNPtBins, fgkPtMin,fgkPtMax,fgkResPtBins,-1.,1.,fgkChi2PerClusBins,fgkChi2PerClusMin,fgkChi2PerClusMax);
575 fPtITSouterminPtTPCvsPtAllChi2PerNClusITS_NoSDD->SetXTitle("p_{t}^{Global}");
576 fPtITSouterminPtTPCvsPtAllChi2PerNClusITS_NoSDD->SetYTitle("(1/p_{t}^{ITSouter}-1/p_{t}^{TPCinner})/(1/p_{t}^{ITSouter})");
65e8ecdd 577 fPtITSouterminPtTPCvsPtAllChi2PerNClusITS_NoSDD->SetZTitle("#chi^{2}/(2*NPointITS-5)");
f4d11ac8 578 fHistList->Add(fPtITSouterminPtTPCvsPtAllChi2PerNClusITS_NoSDD);
579
580 fPtITSouterminPtTPCvsPtAllChi2PerNClusITS_NoSSD = new TH3F("fPtITSouterminPtTPCvsPtAllChi2PerNClusITS_NoSSD","PtAllminPtTPCvsPtAllChi2PerNClusITS_NoSSD",fgkNPtBins, fgkPtMin,fgkPtMax,fgkResPtBins,-1.,1.,fgkChi2PerClusBins,fgkChi2PerClusMin,fgkChi2PerClusMax);
581 fPtITSouterminPtTPCvsPtAllChi2PerNClusITS_NoSSD->SetXTitle("p_{t}^{Global}");
582 fPtITSouterminPtTPCvsPtAllChi2PerNClusITS_NoSSD->SetYTitle("(1/p_{t}^{ITSouter}-1/p_{t}^{TPCinner})/(1/p_{t}^{ITSouter})");
65e8ecdd 583 fPtITSouterminPtTPCvsPtAllChi2PerNClusITS_NoSSD->SetZTitle("#chi^{2}/(2*NPointITS-5)");
f4d11ac8 584 fHistList->Add(fPtITSouterminPtTPCvsPtAllChi2PerNClusITS_NoSSD);
585
586
fdceab34 587 //ITSrefit
588 fPtSelITS = new TH1F("fPtSelITSrefit","PtSel",fgkNPtBins, fgkPtMin, fgkPtMax);
589 fHistListITS->Add(fPtSelITS);
590
591 fPtITSminPtTPCvsPtITS = new TH2F("fPtITSminPtTPCvsPtITS","PtITSminPtTPCvsPtITS",fgkNPtBins, fgkPtMin,fgkPtMax,fgkResPtBins,-1.,1.);
65e8ecdd 592 fPtITSminPtTPCvsPtITS->SetXTitle("p_{t}^{Global}");
593 fPtITSminPtTPCvsPtITS->SetYTitle("(1/p_{t}^{Global}-1/p_{t}^{TPC})/(1/p_{t}^{Global})");
fdceab34 594 fHistListITS->Add(fPtITSminPtTPCvsPtITS);
595
596 fPtITSminPtTPCvsPtITSNPointTPC = new TH3F("fPtITSminPtTPCvsPtITSNPointTPC","PtITSminPtTPCvsPtITSNPointTPC",fgkNPtBins, fgkPtMin,fgkPtMax,fgkResPtBins,-1.,1.,160,0.5,160.5);
65e8ecdd 597 fPtITSminPtTPCvsPtITSNPointTPC->SetXTitle("p_{t}^{Global}");
598 fPtITSminPtTPCvsPtITSNPointTPC->SetYTitle("(1/p_{t}^{Global}-1/p_{t}^{TPC})/(1/p_{t}^{Global})");
fdceab34 599 fPtITSminPtTPCvsPtITSNPointTPC->SetZTitle("N_{point,TPC}");
600 fHistListITS->Add(fPtITSminPtTPCvsPtITSNPointTPC);
65e8ecdd 601
602 fPtITSminPtTPCvsPtITSNPointTPCS = new TH3F("fPtITSminPtTPCvsPtITSNPointTPCS","PtITSminPtTPCvsPtITSNPointTPCS",fgkNPtBins, fgkPtMin,fgkPtMax,fgkResPtBins,-1.,1.,100,0.,1.);
603 fPtITSminPtTPCvsPtITSNPointTPCS->SetXTitle("p_{t}^{Global}");
604 fPtITSminPtTPCvsPtITSNPointTPCS->SetYTitle("(1/p_{t}^{Global}-1/p_{t}^{TPC})/(1/p_{t}^{Global})");
605 fPtITSminPtTPCvsPtITSNPointTPCS->SetZTitle("N_{point,TPC}^{Shared}/N_{point,TPC}");
606 fHistListITS->Add(fPtITSminPtTPCvsPtITSNPointTPCS);
607
67ebd013 608 fPtITSminPtTPCvsPtITSDCAR = new TH3F("fPtITSminPtTPCvsPtITSDCAR","PtITSminPtTPCvsPtITSDCAR",fgkNPtBins, fgkPtMin,fgkPtMax,fgkResPtBins,-1.,1.,80,-0.2,0.2);
65e8ecdd 609 fPtITSminPtTPCvsPtITSDCAR->SetXTitle("p_{t}^{Global}");
610 fPtITSminPtTPCvsPtITSDCAR->SetYTitle("(1/p_{t}^{Global}-1/p_{t}^{TPC})/(1/p_{t}^{Global})");
fdceab34 611 fPtITSminPtTPCvsPtITSDCAR->SetZTitle("DCA_{R}");
612 fHistListITS->Add(fPtITSminPtTPCvsPtITSDCAR);
613
67ebd013 614 fPtITSminPtTPCvsPtITSDCAZ = new TH3F("fPtITSminPtTPCvsPtITSDCAZ","PtITSminPtTPCvsPtITSDCAZ",fgkNPtBins, fgkPtMin,fgkPtMax,fgkResPtBins,-1.,1.,80,-2.,2.);
65e8ecdd 615 fPtITSminPtTPCvsPtITSDCAZ->SetXTitle("p_{t}^{Global}");
616 fPtITSminPtTPCvsPtITSDCAZ->SetYTitle("(1/p_{t}^{Global}-1/p_{t}^{TPC})/(1/p_{t}^{Global})");
fdceab34 617 fPtITSminPtTPCvsPtITSDCAZ->SetZTitle("DCA_{Z}");
618 fHistListITS->Add(fPtITSminPtTPCvsPtITSDCAZ);
619
620 fPtITSminPtTPCvsPtITSPhi = new TH3F("fPtITSminPtTPCvsPtITSPhi","PtITSminPtTPCvsPtITSPhi",fgkNPtBins, fgkPtMin,fgkPtMax,fgkResPtBins,-1.,1.,fgkNPhiBins,kMinPhi,kMaxPhi);
65e8ecdd 621 fPtITSminPtTPCvsPtITSPhi->SetXTitle("p_{t}^{Global}");
622 fPtITSminPtTPCvsPtITSPhi->SetYTitle("(1/p_{t}^{Global}-1/p_{t}^{TPC})/(1/p_{t}^{Global})");
fdceab34 623 fPtITSminPtTPCvsPtITSPhi->SetZTitle("#phi");
624 fHistListITS->Add(fPtITSminPtTPCvsPtITSPhi);
625
626 fPtITSminPtTPCvsPtITSNPointITS = new TH3F("fPtITSminPtTPCvsPtITSNPointITS","PtITSminPtTPCvsPtITSNPointITS",fgkNPtBins, fgkPtMin,fgkPtMax,fgkResPtBins,-1.,1.,9,-0.5,8.5);
65e8ecdd 627 fPtITSminPtTPCvsPtITSNPointITS->SetXTitle("p_{t}^{Global}");
628 fPtITSminPtTPCvsPtITSNPointITS->SetYTitle("(1/p_{t}^{Global}-1/p_{t}^{TPC})/(1/p_{t}^{Global})");
f4d11ac8 629 fPtITSminPtTPCvsPtITSNPointITS->SetZTitle("N_{point,ITS}");
fdceab34 630 fHistListITS->Add(fPtITSminPtTPCvsPtITSNPointITS);
631
632 fPtITSminPtTPCvsPtITSNSigmaToVertex = new TH3F("fPtITSminPtTPCvsPtITSNSigmaToVertex","PtITSminPtTPCvsPtITSNSigmaToVertex",fgkNPtBins, fgkPtMin,fgkPtMax,fgkResPtBins,-1.,1.,40,0.,8.);
65e8ecdd 633 fPtITSminPtTPCvsPtITSNSigmaToVertex->SetXTitle("p_{t}^{Global}");
634 fPtITSminPtTPCvsPtITSNSigmaToVertex->SetYTitle("(1/p_{t}^{Global}-1/p_{t}^{TPC})/(1/p_{t}^{Global})");
fdceab34 635 fPtITSminPtTPCvsPtITSNSigmaToVertex->SetZTitle("N#sigma to vertex");
636 fHistListITS->Add(fPtITSminPtTPCvsPtITSNSigmaToVertex);
637
638 fPtITSminPtTPCvsPtITSChi2C = new TH3F("fPtITSminPtTPCvsPtITSChi2C","PtITSminPtTPCvsPtITSChi2C",fgkNPtBins, fgkPtMin,fgkPtMax,fgkResPtBins,-1.,1.,20,0.,10.);
65e8ecdd 639 fPtITSminPtTPCvsPtITSChi2C->SetXTitle("p_{t}^{Global}");
640 fPtITSminPtTPCvsPtITSChi2C->SetYTitle("(1/p_{t}^{Global}-1/p_{t}^{TPC})/(1/p_{t}^{Global})");
fdceab34 641 fPtITSminPtTPCvsPtITSChi2C->SetZTitle("Constrained #chi^{2}");
642 fHistListITS->Add(fPtITSminPtTPCvsPtITSChi2C);
643
644 fPtITSminPtTPCvsPtITSRel1PtUncertainty = new TH3F("fPtITSminPtTPCvsPtITSRel1PtUncertainty","PtITSminPtTPCvsPtITSRel1PtUncertainty",fgkNPtBins, fgkPtMin,fgkPtMax,fgkResPtBins,-1.,1.,30,0.,0.3);
65e8ecdd 645 fPtITSminPtTPCvsPtITSRel1PtUncertainty->SetXTitle("p_{t}^{Global}");
646 fPtITSminPtTPCvsPtITSRel1PtUncertainty->SetYTitle("(1/p_{t}^{Global}-1/p_{t}^{TPC})/(1/p_{t}^{Global})");
fdceab34 647 fPtITSminPtTPCvsPtITSRel1PtUncertainty->SetZTitle("Rel1PtUncertainty");
648 fHistListITS->Add(fPtITSminPtTPCvsPtITSRel1PtUncertainty);
649
f4d11ac8 650 fPtITSminPtTPCvsPtITSChi2PerNClusTPC = new TH3F("fPtITSminPtTPCvsPtITSChi2PerNClusTPC","PtITSminPtTPCvsPtITSChi2PerNClusTPC",fgkNPtBins, fgkPtMin,fgkPtMax,fgkResPtBins,-1.,1.,35,0.,3.5);
65e8ecdd 651 fPtITSminPtTPCvsPtITSChi2PerNClusTPC->SetXTitle("p_{t}^{Global}");
652 fPtITSminPtTPCvsPtITSChi2PerNClusTPC->SetYTitle("(1/p_{t}^{Global}-1/p_{t}^{TPC})/(1/p_{t}^{Global})");
653 fPtITSminPtTPCvsPtITSChi2PerNClusTPC->SetZTitle("#chi^{2}/(2*NClusTPC-5)");
f4d11ac8 654 fHistListITS->Add(fPtITSminPtTPCvsPtITSChi2PerNClusTPC);
655
656 fPtITSminPtTPCvsPtITSChi2PerNClusITS = new TH3F("fPtITSminPtTPCvsPtITSChi2PerNClusITS","PtITSminPtTPCvsPtITSChi2PerNClusITS",fgkNPtBins, fgkPtMin,fgkPtMax,fgkResPtBins,-1.,1.,35,0.,3.5);
65e8ecdd 657 fPtITSminPtTPCvsPtITSChi2PerNClusITS->SetXTitle("p_{t}^{Global}");
658 fPtITSminPtTPCvsPtITSChi2PerNClusITS->SetYTitle("(1/p_{t}^{Global}-1/p_{t}^{TPC})/(1/p_{t}^{Global})");
659 fPtITSminPtTPCvsPtITSChi2PerNClusITS->SetZTitle("#chi^{2}/(2*NClusITS-5)");
f4d11ac8 660 fHistListITS->Add(fPtITSminPtTPCvsPtITSChi2PerNClusITS);
661
f4d11ac8 662 fPtRel1PtUncertaintyChi2PerClusTPC = new TH3F("fPtRel1PtUncertaintyChi2PerClusTPC","PtITSminPtTPCvsPtITSRel1PtUncertainty",fgkNPtBins, fgkPtMin,fgkPtMax,30,0.,0.3,35,0.,3.5);
663 fPtRel1PtUncertaintyChi2PerClusTPC->SetXTitle("p_{t}^{global}");
664 fPtRel1PtUncertaintyChi2PerClusTPC->SetYTitle("Rel1PtUncertainty");
65e8ecdd 665 fPtRel1PtUncertaintyChi2PerClusTPC->SetZTitle("#chi^{2}/(2*N_{clusters}^{TPC}-5)");
f4d11ac8 666 fHistListITS->Add(fPtRel1PtUncertaintyChi2PerClusTPC);
667
65e8ecdd 668 fPtNPointTPCSChi2PerClusTPC = new TH3F("fPtNPointTPCSChi2PerClusTPC","PtITSminPtTPCvsPtITSNPointTPCS",fgkNPtBins, fgkPtMin,fgkPtMax,100,0.,1.,35,0.,3.5);
669 fPtNPointTPCSChi2PerClusTPC->SetXTitle("p_{t}^{global}");
670 fPtNPointTPCSChi2PerClusTPC->SetYTitle("N_{Point,TPC}^{Shared}/N_{Point,TPC}");
671 fPtNPointTPCSChi2PerClusTPC->SetZTitle("#chi^{2}/(2*N_{clusters}^{TPC}-5)");
672 fHistListITS->Add(fPtNPointTPCSChi2PerClusTPC);
673
674 fPtNPointTPCSRel1PtUncertainty = new TH3F("fPtNPointTPCSRel1PtUncertainty","PtITSminPtTPCvsPtITSNPointTPCS",fgkNPtBins, fgkPtMin,fgkPtMax,100,0.,1.,30,0.,0.3);
675 fPtNPointTPCSRel1PtUncertainty->SetXTitle("p_{t}^{global}");
676 fPtNPointTPCSRel1PtUncertainty->SetYTitle("N_{Point,TPC}^{Shared}/N_{Point,TPC}");
677 fPtNPointTPCSRel1PtUncertainty->SetZTitle("Rel1PtUncertainty");
678 fHistListITS->Add(fPtNPointTPCSRel1PtUncertainty);
679
680 fPtRel1PtUncertaintyChi2PerClusTPC_SharedSel = new TH3F("fPtRel1PtUncertaintyChi2PerClusTPC_SharedSel","PtITSminPtTPCvsPtITSRel1PtUncertainty",fgkNPtBins, fgkPtMin,fgkPtMax,30,0.,0.3,35,0.,3.5);
681 fPtRel1PtUncertaintyChi2PerClusTPC_SharedSel->SetXTitle("p_{t}^{global}");
682 fPtRel1PtUncertaintyChi2PerClusTPC_SharedSel->SetYTitle("Rel1PtUncertainty");
683 fPtRel1PtUncertaintyChi2PerClusTPC_SharedSel->SetZTitle("#chi^{2}/(2*N_{clusters}^{TPC}-5)");
684 fHistListITS->Add(fPtRel1PtUncertaintyChi2PerClusTPC_SharedSel);
685
fdceab34 686 fPtAllTPC = new TH1F("fPtAllTPC","PtAll",fgkNPtBins, fgkPtMin, fgkPtMax);
687 fHistListTPC->Add(fPtAllTPC);
688 fPtSelTPC = new TH1F("fPtSelTPC","PtSel",fgkNPtBins, fgkPtMin, fgkPtMax);
689 fHistListTPC->Add(fPtSelTPC);
690 fPtSelTPCITS = new TH1F("fPtSelTPCITS","PtSel",fgkNPtBins, fgkPtMin, fgkPtMax);
691 fHistListTPC->Add(fPtSelTPCITS);
df943115 692
65e8ecdd 693 //****************************************************************************************************************//
694 // Cosmic Candidates //
695 //****************************************************************************************************************//
696 fPtCosmicCandidates = new TH1F("fPtCosmicCandidates","fPtCosmicCandidates",fgkNPtBins, fgkPtMin, fgkPtMax);
697 fHistListCosmics->Add(fPtCosmicCandidates);
698 fDeltaPtCosmicCandidates = new TH1F("fDeltaPtCosmicCandidates","fDeltaPtCosmicCandidates",fgkNPtBins, -50., 50.);
699 fHistListCosmics->Add(fDeltaPtCosmicCandidates);
700 fDeltaPhi = new TH1F("fDeltaPhi","fDeltaPhi",fgkNPhiBins*2,-1*kMaxPhi,kMaxPhi);
701 fHistListCosmics->Add(fDeltaPhi);
702 fDeltaEta = new TH1F("fDeltaEta","fDeltaEta",20, -2.,2.);
703 fHistListCosmics->Add(fDeltaEta);
704
df943115 705 TH1::AddDirectory(oldStatus);
706
fdceab34 707}
708//________________________________________________________________________
709void AliPWG4HighPtQATPConly::Exec(Option_t *) {
710 // Main loop
711 // Called for each event
df943115 712 AliDebug(2,Form(">> AliPWG4HighPtQATPConly::Exec \n"));
713
b5cc0c6d 714 // All events without selection
b5cc0c6d 715 fNEventAll->Fill(0.);
716
df943115 717 if (!fESD) {
718 AliDebug(2,Form("ERROR: fESD not available"));
67ebd013 719 // Post output data
720 PostData(0, fHistList);
721 PostData(1, fHistListTPC);
722 PostData(2, fHistListITS);
65e8ecdd 723 PostData(3, fHistListCosmics);
fdceab34 724 return;
725 }
726
f4d11ac8 727 fESD->SetESDfriend(fESDfriend); //Attach the friend to the ESD
728 if (!fESDfriend) {
729 AliDebug(2,Form("ERROR: fESDfriend not available"));
730 // Post output data
731 PostData(0, fHistList);
732 PostData(1, fHistListTPC);
733 PostData(2, fHistListITS);
65e8ecdd 734 PostData(3, fHistListCosmics);
f4d11ac8 735 return;
736 }
737
67ebd013 738 Bool_t isSelected = ((AliInputEventHandler*)(AliAnalysisManager::GetAnalysisManager()->GetInputEventHandler()))->IsEventSelected();
739 if(!isSelected) { //Select collison candidates
b5cc0c6d 740 AliDebug(2,Form(" Trigger Selection: event REJECTED ... "));
cd9a6fa2 741 // Post output data
67ebd013 742 PostData(0, fHistList);
743 PostData(1, fHistListTPC);
744 PostData(2, fHistListITS);
65e8ecdd 745 PostData(3, fHistListCosmics);
b5cc0c6d 746 return;
67ebd013 747 }
fdceab34 748
f4d11ac8 749 // AliMCEventHandler *eventHandler = dynamic_cast<AliMCEventHandler*> (AliAnalysisManager::GetAnalysisManager()->GetMCtruthEventHandler());
750// // AliMCEventHandler* eventHandler = (AliMCEventHandler*)(AliAnalysisManager::GetAnalysisManager()->GetMCtruthEventHandler());
751
752 AliStack* stack = 0x0;
753 AliMCEvent* mcEvent = 0x0;
754
755 if(fMC) {
756 mcEvent = fMC;
757 if (!mcEvent) {
758 AliDebug(2,Form("ERROR: Could not retrieve MC event"));
759 PostData(0, fHistList);
760 PostData(1, fHistListTPC);
761 PostData(2, fHistListITS);
65e8ecdd 762 PostData(3, fHistListCosmics);
f4d11ac8 763 return;
764 }
765
766 AliDebug(2,Form("MC particles: %d", mcEvent->GetNumberOfTracks()));
767
768 stack = mcEvent->Stack(); //Particles Stack
769
770 AliDebug(2,Form("MC particles stack: %d", stack->GetNtrack()));
771 }
772
773
b5cc0c6d 774 const AliESDVertex *vtx = fESD->GetPrimaryVertexTracks();
fdceab34 775 // Need vertex cut
67ebd013 776 if (vtx->GetNContributors() < 2) {
777 // Post output data
778 PostData(0, fHistList);
779 PostData(1, fHistListTPC);
780 PostData(2, fHistListITS);
65e8ecdd 781 PostData(3, fHistListCosmics);
fdceab34 782 return;
67ebd013 783 }
fdceab34 784
df943115 785 AliDebug(2,Form("Vertex title %s, status %d, nCont %d\n",vtx->GetTitle(), vtx->GetStatus(), vtx->GetNContributors()));
b5cc0c6d 786 double primVtx[3];
787 vtx->GetXYZ(primVtx);
788 // printf("primVtx: %g %g %g \n",primVtx[0],primVtx[1],primVtx[2]);
67ebd013 789 if(TMath::Sqrt(primVtx[0]*primVtx[0] + primVtx[1]*primVtx[1])>1. || TMath::Abs(primVtx[2]>10.)){
cd9a6fa2 790 // Post output data
791 PostData(0, fHistList);
792 PostData(1, fHistListTPC);
793 PostData(2, fHistListITS);
65e8ecdd 794 PostData(3, fHistListCosmics);
cd9a6fa2 795 return;
796 }
797 if(!fESD->GetNumberOfTracks() || fESD->GetNumberOfTracks()<2){
798 // Post output data
799 PostData(0, fHistList);
800 PostData(1, fHistListTPC);
801 PostData(2, fHistListITS);
65e8ecdd 802 PostData(3, fHistListCosmics);
cd9a6fa2 803 return;
804 }
fdceab34 805 Int_t nTracks = fESD->GetNumberOfTracks();
b5cc0c6d 806 AliDebug(2,Form("nTracks %d\n", nTracks));
807
808 if(!fTrackCuts) return;
809
810 // Selected events for analysis
811 fNEventSel->Fill(0.);
df943115 812
fdceab34 813 for (Int_t iTrack = 0; iTrack < nTracks; iTrack++) {
814
815 AliESDtrack *track = fESD->GetTrack(iTrack);
816 AliExternalTrackParam *trackTPC = (AliExternalTrackParam *)track->GetTPCInnerParam();
67ebd013 817 if(!track || !trackTPC) continue;
f4d11ac8 818 const AliESDfriendTrack* constfriendtrack = track->GetFriendTrack();
819 if (!constfriendtrack) { continue;}
820 AliESDfriendTrack friendtrack(*constfriendtrack);
821
fdceab34 822 Float_t pt = track->Pt();
823 Float_t ptTPC = trackTPC->Pt();
824 Float_t phi = track->Phi();
825 Float_t dca2D, dcaZ;
826 track->GetImpactParameters(dca2D,dcaZ);
827 // Float_t dca2DTPC, dcaZTPC;
828 //track->GetImpactParametersTPC(dca2DTPC,dcaZTPC);
829 UChar_t itsMap = track->GetITSClusterMap();
830 Int_t nPointITS = 0;
831 for (Int_t i=0; i < 6; i++) {
832 if (itsMap & (1 << i))
833 nPointITS ++;
834 }
b5cc0c6d 835 double mom[3];
836 track->GetPxPyPz(mom);
f4d11ac8 837 double momTPC[3];
838 trackTPC->GetPxPyPz(momTPC);
fdceab34 839 Float_t nSigmaToVertex = fTrackCuts->GetSigmaToVertex(track);// Calculates the number of sigma to the vertex for a track.
840 Float_t chi2C = track->GetConstrainedChi2();
b5cc0c6d 841 Float_t relUncertainty1Pt = TMath::Sqrt(TMath::Abs(track->GetSigma1Pt2()))*pt;
f4d11ac8 842 Float_t chi2PerClusterTPC = -1.;
843 Float_t nClustersTPC = track->GetTPCNcls();
38ecb6a5 844 if(nClustersTPC>0.) chi2PerClusterTPC = track->GetTPCchi2()/(2.*nClustersTPC-5.);
845 Float_t chi2PerNPointITS = -1.;
846 if(nPointITS>3) chi2PerNPointITS = track->GetITSchi2()/(2.*(float)nPointITS-5.);
fdceab34 847
848 fPtAll->Fill(pt);
849 fPtAllTPC->Fill(ptTPC);
65e8ecdd 850
851
fdceab34 852 if (fTrackCuts->AcceptTrack(track)) {
853
65e8ecdd 854 Bool_t cosmic = kFALSE;
855 if(pt>6.) { cosmic = IsCosmic(track,iTrack,6.); }
856 // if(cosmic) continue;
857
fdceab34 858 fPtSel->Fill(pt);
fdceab34 859 fPtSelTPC->Fill(ptTPC);
f4d11ac8 860 if(ptTPC==0. || pt==0.) continue;
fdceab34 861 fPtAllminPtTPCvsPtAll->Fill(pt,(1./pt-1./ptTPC)/(1./pt) );
65e8ecdd 862 fPtAllminPtTPCvsPtAllNPointTPC->Fill(pt,(1./pt-1./ptTPC)/(1./pt),nClustersTPC);
863 if(nClustersTPC>0.) fPtAllminPtTPCvsPtAllNPointTPCS->Fill(pt,(1./pt-1./ptTPC)/(1./pt),track->GetTPCnclsS()/nClustersTPC);
fdceab34 864 fPtAllminPtTPCvsPtAllDCAR->Fill(pt,(1./pt-1./ptTPC)/(1./pt),dca2D);
865 fPtAllminPtTPCvsPtAllDCAZ->Fill(pt,(1./pt-1./ptTPC)/(1./pt),dcaZ);
866 fPtAllminPtTPCvsPtAllPhi->Fill(pt,(1./pt-1./ptTPC)/(1./pt),phi);
867 fPtAllminPtTPCvsPtAllNPointITS->Fill(pt,(1./pt-1./ptTPC)/(1./pt),nPointITS);
868 fPtAllminPtTPCvsPtAllNSigmaToVertex->Fill(pt,(1./pt-1./ptTPC)/(1./pt),nSigmaToVertex);
869 fPtAllminPtTPCvsPtAllChi2C->Fill(pt,(1./pt-1./ptTPC)/(1./pt),chi2C);
870 fPtAllminPtTPCvsPtAllRel1PtUncertainty->Fill(pt,(1./pt-1./ptTPC)/(1./pt),relUncertainty1Pt);
f4d11ac8 871 fPtAllminPtTPCvsPtAllChi2PerNClusTPC->Fill(pt,(1./pt-1./ptTPC)/(1./pt),chi2PerClusterTPC);
38ecb6a5 872 if(nPointITS>3) fPtAllminPtTPCvsPtAllChi2PerNClusITS->Fill(pt,(1./pt-1./ptTPC)/(1./pt),chi2PerNPointITS);
f4d11ac8 873 if(TMath::Abs((1./pt-1./ptTPC)/(1./pt))>0.8) fEtaPhiOutliers->Fill(track->Eta(),phi);
874 if (friendtrack.GetITSOut()) {
875 AliExternalTrackParam trackITSouter(*(friendtrack.GetITSOut()));
876 Float_t ptITSouter = trackITSouter.Pt();
877 if(ptITSouter==0.) continue;
878 fPtSelITSouter->Fill(ptITSouter);
879 fPtITSouterminPtTPCvsPtAll->Fill(pt,(1./ptITSouter-1./ptTPC)/(1./ptITSouter) );
65e8ecdd 880 fPtITSouterminPtTPCvsPtAllNPointTPC->Fill(pt,(1./ptITSouter-1./ptTPC)/(1./ptITSouter),nClustersTPC);
881 if(nClustersTPC>0.) fPtITSouterminPtTPCvsPtAllNPointTPCS->Fill(pt,(1./ptITSouter-1./ptTPC)/(1./ptITSouter),track->GetTPCnclsS()/nClustersTPC);
f4d11ac8 882 fPtITSouterminPtTPCvsPtAllDCAR->Fill(pt,(1./ptITSouter-1./ptTPC)/(1./ptITSouter),dca2D);
883 fPtITSouterminPtTPCvsPtAllDCAZ->Fill(pt,(1./ptITSouter-1./ptTPC)/(1./ptITSouter),dcaZ);
884 fPtITSouterminPtTPCvsPtAllPhi->Fill(pt,(1./ptITSouter-1./ptTPC)/(1./ptITSouter),phi);
885 fPtITSouterminPtTPCvsPtAllNPointITS->Fill(pt,(1./ptITSouter-1./ptTPC)/(1./ptITSouter),nPointITS);
886 fPtITSouterminPtTPCvsPtAllNSigmaToVertex->Fill(pt,(1./ptITSouter-1./ptTPC)/(1./ptITSouter),nSigmaToVertex);
887 fPtITSouterminPtTPCvsPtAllChi2C->Fill(pt,(1./ptITSouter-1./ptTPC)/(1./ptITSouter),chi2C);
888 fPtITSouterminPtTPCvsPtAllRel1PtUncertainty->Fill(pt,(1./ptITSouter-1./ptTPC)/(1./ptITSouter),relUncertainty1Pt);
889 fPtITSouterminPtTPCvsPtAllChi2PerNClusTPC->Fill(pt,(1./ptITSouter-1./ptTPC)/(1./ptITSouter),chi2PerClusterTPC);
38ecb6a5 890 if(nPointITS>3) fPtITSouterminPtTPCvsPtAllChi2PerNClusITS->Fill(pt,(1./ptITSouter-1./ptTPC)/(1./ptITSouter),chi2PerNPointITS);
f4d11ac8 891 if(track->HasPointOnITSLayer(0)) {
892 fPtITSouterminPtTPCvsPtAll_ITSLayer0->Fill(pt,(1./ptITSouter-1./ptTPC)/(1./ptITSouter));
38ecb6a5 893 if(nPointITS>3) fPtITSouterminPtTPCvsPtAllChi2PerNClusITS_ITSLayer0->Fill(pt,(1./ptITSouter-1./ptTPC)/(1./ptITSouter),chi2PerNPointITS);
f4d11ac8 894 }
895 if(!track->HasPointOnITSLayer(0) && track->HasPointOnITSLayer(1)) {
896 fPtITSouterminPtTPCvsPtAll_ITSLayer1->Fill(pt,(1./ptITSouter-1./ptTPC)/(1./ptITSouter));
38ecb6a5 897 if(nPointITS>3) fPtITSouterminPtTPCvsPtAllChi2PerNClusITS_ITSLayer1->Fill(pt,(1./ptITSouter-1./ptTPC)/(1./ptITSouter),chi2PerNPointITS);
f4d11ac8 898 }
899 if(!track->HasPointOnITSLayer(0) && !track->HasPointOnITSLayer(1) && track->HasPointOnITSLayer(2)) {
900 fPtITSouterminPtTPCvsPtAll_ITSLayer2->Fill(pt,(1./ptITSouter-1./ptTPC)/(1./ptITSouter));
38ecb6a5 901 if(nPointITS>3) fPtITSouterminPtTPCvsPtAllChi2PerNClusITS_ITSLayer2->Fill(pt,(1./ptITSouter-1./ptTPC)/(1./ptITSouter),chi2PerNPointITS);
f4d11ac8 902 }
903 if(!track->HasPointOnITSLayer(0) && !track->HasPointOnITSLayer(1) && !track->HasPointOnITSLayer(2) && track->HasPointOnITSLayer(3)) {
904 fPtITSouterminPtTPCvsPtAll_ITSLayer3->Fill(pt,(1./ptITSouter-1./ptTPC)/(1./ptITSouter));
38ecb6a5 905 if(nPointITS>3) fPtITSouterminPtTPCvsPtAllChi2PerNClusITS_ITSLayer3->Fill(pt,(1./ptITSouter-1./ptTPC)/(1./ptITSouter),chi2PerNPointITS);
f4d11ac8 906 }
907 if(!track->HasPointOnITSLayer(0) && !track->HasPointOnITSLayer(1) && !track->HasPointOnITSLayer(2) && !track->HasPointOnITSLayer(3) && track->HasPointOnITSLayer(4)) {
908 fPtITSouterminPtTPCvsPtAll_ITSLayer4->Fill(pt,(1./ptITSouter-1./ptTPC)/(1./ptITSouter));
38ecb6a5 909 if(nPointITS>3) fPtITSouterminPtTPCvsPtAllChi2PerNClusITS_ITSLayer4->Fill(pt,(1./ptITSouter-1./ptTPC)/(1./ptITSouter),chi2PerNPointITS);
f4d11ac8 910 }
911 if(!track->HasPointOnITSLayer(0) && !track->HasPointOnITSLayer(1) && !track->HasPointOnITSLayer(2) && !track->HasPointOnITSLayer(3) && !track->HasPointOnITSLayer(4) && track->HasPointOnITSLayer(5)) {
912 fPtITSouterminPtTPCvsPtAll_ITSLayer5->Fill(pt,(1./ptITSouter-1./ptTPC)/(1./ptITSouter));
38ecb6a5 913 if(nPointITS>3) fPtITSouterminPtTPCvsPtAllChi2PerNClusITS_ITSLayer5->Fill(pt,(1./ptITSouter-1./ptTPC)/(1./ptITSouter),chi2PerNPointITS);
f4d11ac8 914 }
915
916 if(!track->HasPointOnITSLayer(0) && !track->HasPointOnITSLayer(1)) {
917 fPtITSouterminPtTPCvsPtAll_NoSPD->Fill(pt,(1./ptITSouter-1./ptTPC)/(1./ptITSouter));
38ecb6a5 918 if(nPointITS>3) fPtITSouterminPtTPCvsPtAllChi2PerNClusITS_NoSPD->Fill(pt,(1./ptITSouter-1./ptTPC)/(1./ptITSouter),chi2PerNPointITS);
f4d11ac8 919 }
920 if(!track->HasPointOnITSLayer(2) && !track->HasPointOnITSLayer(3)) {
921 fPtITSouterminPtTPCvsPtAll_NoSDD->Fill(pt,(1./ptITSouter-1./ptTPC)/(1./ptITSouter));
38ecb6a5 922 if(nPointITS>3) fPtITSouterminPtTPCvsPtAllChi2PerNClusITS_NoSDD->Fill(pt,(1./ptITSouter-1./ptTPC)/(1./ptITSouter),chi2PerNPointITS);
f4d11ac8 923 }
924 if(!track->HasPointOnITSLayer(4) && !track->HasPointOnITSLayer(5)) {
925 fPtITSouterminPtTPCvsPtAll_NoSSD->Fill(pt,(1./ptITSouter-1./ptTPC)/(1./ptITSouter));
38ecb6a5 926 if(nPointITS>3) fPtITSouterminPtTPCvsPtAllChi2PerNClusITS_NoSSD->Fill(pt,(1./ptITSouter-1./ptTPC)/(1./ptITSouter),chi2PerNPointITS);
f4d11ac8 927 }
928 }
38ecb6a5 929
fdceab34 930 }//fTrackCuts selection
931
932
933 //ITSrefit selection
934 if (fTrackCutsITS->AcceptTrack(track)) {
935
936 fPtSelITS->Fill(pt);
937 fPtSelTPCITS->Fill(ptTPC);
938 fPtITSminPtTPCvsPtITS->Fill(pt,(1./pt-1./ptTPC)/(1./pt) );
65e8ecdd 939 fPtITSminPtTPCvsPtITSNPointTPC->Fill(pt,(1./pt-1./ptTPC)/(1./pt),nClustersTPC);
940 if(nClustersTPC>0.) fPtITSminPtTPCvsPtITSNPointTPCS->Fill(pt,(1./pt-1./ptTPC)/(1./pt),track->GetTPCnclsS()/nClustersTPC);
fdceab34 941 fPtITSminPtTPCvsPtITSDCAR->Fill(pt,(1./pt-1./ptTPC)/(1./pt),dca2D);
942 fPtITSminPtTPCvsPtITSDCAZ->Fill(pt,(1./pt-1./ptTPC)/(1./pt),dcaZ);
943 fPtITSminPtTPCvsPtITSPhi->Fill(pt,(pt-ptTPC)/(pt),phi);
944 fPtITSminPtTPCvsPtITSNPointITS->Fill(pt,(pt-ptTPC)/(pt),nPointITS);
945 fPtITSminPtTPCvsPtITSNSigmaToVertex->Fill(pt,(1./pt-1./ptTPC)/(1./pt),nSigmaToVertex);
946 fPtITSminPtTPCvsPtITSChi2C->Fill(pt,(1./pt-1./ptTPC)/(1./pt),chi2C);
947 fPtITSminPtTPCvsPtITSRel1PtUncertainty->Fill(pt,(1./pt-1./ptTPC)/(1./pt),relUncertainty1Pt);
f4d11ac8 948 fPtITSminPtTPCvsPtITSChi2PerNClusTPC->Fill(pt,(1./pt-1./ptTPC)/(1./pt),chi2PerClusterTPC);
38ecb6a5 949 if(nPointITS>3) fPtITSminPtTPCvsPtITSChi2PerNClusITS->Fill(pt,(1./pt-1./ptTPC)/(1./pt),chi2PerNPointITS);
65e8ecdd 950
951 fPtRel1PtUncertaintyChi2PerClusTPC->Fill(pt,relUncertainty1Pt,chi2PerClusterTPC);
952 fPtNPointTPCSChi2PerClusTPC->Fill(pt,track->GetTPCnclsS()/nClustersTPC,chi2PerClusterTPC);
953 fPtNPointTPCSRel1PtUncertainty->Fill(pt,track->GetTPCnclsS()/nClustersTPC,relUncertainty1Pt);
954 if(track->GetTPCnclsS()/nClustersTPC>0.05) fPtRel1PtUncertaintyChi2PerClusTPC_SharedSel->Fill(pt,relUncertainty1Pt,chi2PerClusterTPC);
fdceab34 955 }//fTrackCutsITS loop
956
f4d11ac8 957 }//ESD track loop
fdceab34 958
959 // Post output data
960 PostData(0, fHistList);
961 PostData(1, fHistListTPC);
962 PostData(2, fHistListITS);
65e8ecdd 963 PostData(3, fHistListCosmics);
964
965}
966//________________________________________________________________________
967Bool_t AliPWG4HighPtQATPConly::IsCosmic(const AliESDtrack *track1 , Int_t trackNumber, Double_t ptMin)
968{
969 Bool_t candidate = kFALSE;
970 Bool_t candidate2 = kFALSE;
971 if(!track1) return candidate;
972
973 Int_t nTracks = fESD->GetNumberOfTracks();
974
975 for (Int_t iTrack = trackNumber+1; iTrack < nTracks; iTrack++) {
976 candidate2 = kFALSE;
977 AliESDtrack *track2 = fESD->GetTrack(iTrack);
978 if(!track2) continue;
979 if(!(fTrackCuts->AcceptTrack(track2))) continue;
980 if(track2->Pt()<ptMin) continue;
981
982 //Check if same charge
983 if( (track1->GetSign()*track2->GetSign()) < 0. ) continue;
984
985 //Check if back-to-back
986 Double_t mom1[3],mom2[3];
987 track1->GetPxPyPz(mom1);
988 track2->GetPxPyPz(mom2);
989 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]) );
990 Double_t theta = TMath::ACos(cosTheta);
991 if(TMath::Abs(TMath::Pi()-theta)<fMaxCosmicAngle) { candidate = kTRUE; candidate2 = kTRUE;}
992
993 if(candidate2) {
994 fDeltaPtCosmicCandidates->Fill(track1->Pt()-track2->Pt());
995 fDeltaPhi->Fill(track1->Phi()-track2->Phi());
996 fDeltaPhi->Fill(track1->Eta()-track2->Eta());
997 }
fdceab34 998
65e8ecdd 999 }
1000
1001 if(candidate) {
1002 fPtCosmicCandidates->Fill(track1->Pt());
1003 }
1004
1005 return candidate;
fdceab34 1006}
65e8ecdd 1007
fdceab34 1008//________________________________________________________________________
1009void AliPWG4HighPtQATPConly::Terminate(Option_t *)
1010{
fdceab34 1011
fdceab34 1012}
df943115 1013
1014#endif