]> git.uio.no Git - u/mrichter/AliRoot.git/blob - PWG4/JetTasks/AliPWG4HighPtQATPConly.cxx
Fixing compiler warnings
[u/mrichter/AliRoot.git] / PWG4 / JetTasks / AliPWG4HighPtQATPConly.cxx
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
25 #ifndef ALIPWG4HIGHPTQATPCONLY_CXX
26 #define ALIPWG4HIGHPTQATPCONLY_CXX
27
28 #include "AliPWG4HighPtQATPConly.h"
29
30 #include "TVector3.h"
31 #include <iostream>
32 #include "TH1.h"
33 #include "TH2.h"
34 #include "TH3.h"
35 #include "TList.h"
36 #include "TChain.h"
37 #include "TH3F.h"
38 #include <Bytes.h>
39 #include <TTree.h>
40
41 #include "AliAnalysisManager.h"
42 #include "AliESDInputHandler.h"
43 #include "AliESDtrack.h"
44 #include "AliESDfriend.h"
45 #include "AliESDfriendTrack.h"
46 #include "AliESDtrackCuts.h"
47 #include "AliExternalTrackParam.h"
48 #include "AliLog.h"
49 //#include "AliAnalysisHelperJetTasks.h"
50
51 #include "AliStack.h"
52 #include "TParticle.h"
53 #include "TH1I.h"
54 #include "AliMCEvent.h"
55 #include "AliMCEventHandler.h"
56
57 using namespace std; //required for resolving the 'cout' symbol
58
59 ClassImp(AliPWG4HighPtQATPConly)
60
61 AliPWG4HighPtQATPConly::AliPWG4HighPtQATPConly(): AliAnalysisTask("AliPWG4HighPtQATPConly", ""), 
62   fESD(0), 
63   fESDfriend(0), 
64   fMC(0),
65   fTrackCuts(0), 
66   fTrackCutsITS(0),
67   fMaxCosmicAngle(0.002),
68   fNEventAll(0),
69   fNEventSel(0),
70   fPtAll(0),
71   fPtSel(0),
72   fPtAllminPtTPCvsPtAll(0),
73   fPtAllminPtTPCvsPtAllNPointTPC(0),
74   fPtAllminPtTPCvsPtAllNPointTPCS(0),
75   fPtAllminPtTPCvsPtAllDCAR(0),
76   fPtAllminPtTPCvsPtAllDCAZ(0),
77   fPtAllminPtTPCvsPtAllPhi(0),
78   fPtAllminPtTPCvsPtAllNPointITS(0),
79   fPtAllminPtTPCvsPtAllNSigmaToVertex(0),
80   fPtAllminPtTPCvsPtAllChi2C(0),
81   fPtAllminPtTPCvsPtAllRel1PtUncertainty(0),
82   fPtAllminPtTPCvsPtAllChi2PerNClusTPC(0),
83   fPtAllminPtTPCvsPtAllChi2PerNClusITS(0),
84   fPtAllminPtTPCvsNPointTPCPhi(0),
85   fPtAllminPtTPCvsNPointITSPhi(0),
86   fPtAllminPtTPCvsRel1PtUncertaintyPhi(0),
87   fEtaPhiOutliers(0),
88   fPtSelITSouter(0),
89   fPtITSouterminPtTPCvsPtAll(0),
90   fPtITSouterminPtTPCvsPtAllNPointTPC(0),
91   fPtITSouterminPtTPCvsPtAllNPointTPCS(0),
92   fPtITSouterminPtTPCvsPtAllDCAR(0),
93   fPtITSouterminPtTPCvsPtAllDCAZ(0),
94   fPtITSouterminPtTPCvsPtAllPhi(0),
95   fPtITSouterminPtTPCvsPtAllNPointITS(0),
96   fPtITSouterminPtTPCvsPtAllNSigmaToVertex(0),
97   fPtITSouterminPtTPCvsPtAllChi2C(0),
98   fPtITSouterminPtTPCvsPtAllRel1PtUncertainty(0),
99   fPtITSouterminPtTPCvsPtAllChi2PerNClusTPC(0),
100   fPtITSouterminPtTPCvsPtAllChi2PerNClusITS(0),
101   fPtITSouterminPtTPCvsPtAllITSLayer0(0),
102   fPtITSouterminPtTPCvsPtAllITSLayer1(0),
103   fPtITSouterminPtTPCvsPtAllITSLayer2(0),
104   fPtITSouterminPtTPCvsPtAllITSLayer3(0),
105   fPtITSouterminPtTPCvsPtAllITSLayer4(0),
106   fPtITSouterminPtTPCvsPtAllITSLayer5(0),
107   fPtITSouterminPtTPCvsPtAllNoSPD(0),
108   fPtITSouterminPtTPCvsPtAllNoSDD(0),
109   fPtITSouterminPtTPCvsPtAllNoSSD(0),
110   fPtITSouterminPtTPCvsPtAllChi2PerNClusITSLayer0(0),
111   fPtITSouterminPtTPCvsPtAllChi2PerNClusITSLayer1(0),
112   fPtITSouterminPtTPCvsPtAllChi2PerNClusITSLayer2(0),
113   fPtITSouterminPtTPCvsPtAllChi2PerNClusITSLayer3(0),
114   fPtITSouterminPtTPCvsPtAllChi2PerNClusITSLayer4(0),
115   fPtITSouterminPtTPCvsPtAllChi2PerNClusITSLayer5(0),
116   fPtITSouterminPtTPCvsPtAllChi2PerNClusITSNoSPD(0),
117   fPtITSouterminPtTPCvsPtAllChi2PerNClusITSNoSDD(0),
118   fPtITSouterminPtTPCvsPtAllChi2PerNClusITSNoSSD(0),
119   fHistList(0),
120   fPtAllTPC(0),
121   fPtSelTPC(0),
122   fPtSelTPCITS(0),
123   fHistListTPC(0),
124   fPtSelITS(0),
125   fPtITSminPtTPCvsPtITS(0),
126   fPtITSminPtTPCvsPtITSNPointTPC(0),
127   fPtITSminPtTPCvsPtITSNPointTPCS(0),
128   fPtITSminPtTPCvsPtITSDCAR(0),
129   fPtITSminPtTPCvsPtITSDCAZ(0),
130   fPtITSminPtTPCvsPtITSPhi(0),
131   fPtITSminPtTPCvsPtITSNPointITS(0),
132   fPtITSminPtTPCvsPtITSNSigmaToVertex(0),
133   fPtITSminPtTPCvsPtITSChi2C(0),
134   fPtITSminPtTPCvsPtITSRel1PtUncertainty(0),
135   fPtITSminPtTPCvsPtITSChi2PerNClusTPC(0),
136   fPtITSminPtTPCvsPtITSChi2PerNClusITS(0),
137   fPtITSminPtTPCvsNPointTPCPhi(0),
138   fPtITSminPtTPCvsNPointITSPhi(0),
139   fPtITSminPtTPCvsRel1PtUncertaintyPhi(0),
140   fPtRel1PtUncertaintyChi2PerClusTPC(0),
141   fPtNPointTPCSChi2PerClusTPC(0),
142   fPtNPointTPCSRel1PtUncertainty(0),
143   fPtRel1PtUncertaintyChi2PerClusTPCSharedSel(0),
144   fHistListITS(0),
145   fPtCosmicCandidates(0),
146   fDeltaPtCosmicCandidates(0),
147   fDeltaPhi(0),
148   fDeltaEta(0),
149   fHistListCosmics(0)
150 {
151
152 }
153 //________________________________________________________________________
154 AliPWG4HighPtQATPConly::AliPWG4HighPtQATPConly(const char *name): 
155   AliAnalysisTask(name, ""), 
156   fESD(0),
157   fESDfriend(0), 
158   fMC(0),
159   fTrackCuts(),
160   fTrackCutsITS(),
161   fMaxCosmicAngle(0.002),
162   fNEventAll(0),
163   fNEventSel(0),
164   fPtAll(0),
165   fPtSel(0),
166   fPtAllminPtTPCvsPtAll(0),
167   fPtAllminPtTPCvsPtAllNPointTPC(0),
168   fPtAllminPtTPCvsPtAllNPointTPCS(0),
169   fPtAllminPtTPCvsPtAllDCAR(0),
170   fPtAllminPtTPCvsPtAllDCAZ(0),
171   fPtAllminPtTPCvsPtAllPhi(0),
172   fPtAllminPtTPCvsPtAllNPointITS(0),
173   fPtAllminPtTPCvsPtAllNSigmaToVertex(0),
174   fPtAllminPtTPCvsPtAllChi2C(0),
175   fPtAllminPtTPCvsPtAllRel1PtUncertainty(0),
176   fPtAllminPtTPCvsPtAllChi2PerNClusTPC(0),
177   fPtAllminPtTPCvsPtAllChi2PerNClusITS(0),
178   fPtAllminPtTPCvsNPointTPCPhi(0),
179   fPtAllminPtTPCvsNPointITSPhi(0),
180   fPtAllminPtTPCvsRel1PtUncertaintyPhi(0),
181   fEtaPhiOutliers(0),
182   fPtSelITSouter(0),
183   fPtITSouterminPtTPCvsPtAll(0),
184   fPtITSouterminPtTPCvsPtAllNPointTPC(0),
185   fPtITSouterminPtTPCvsPtAllNPointTPCS(0),
186   fPtITSouterminPtTPCvsPtAllDCAR(0),
187   fPtITSouterminPtTPCvsPtAllDCAZ(0),
188   fPtITSouterminPtTPCvsPtAllPhi(0),
189   fPtITSouterminPtTPCvsPtAllNPointITS(0),
190   fPtITSouterminPtTPCvsPtAllNSigmaToVertex(0),
191   fPtITSouterminPtTPCvsPtAllChi2C(0),
192   fPtITSouterminPtTPCvsPtAllRel1PtUncertainty(0),
193   fPtITSouterminPtTPCvsPtAllChi2PerNClusTPC(0),
194   fPtITSouterminPtTPCvsPtAllChi2PerNClusITS(0),
195   fPtITSouterminPtTPCvsPtAllITSLayer0(0),
196   fPtITSouterminPtTPCvsPtAllITSLayer1(0),
197   fPtITSouterminPtTPCvsPtAllITSLayer2(0),
198   fPtITSouterminPtTPCvsPtAllITSLayer3(0),
199   fPtITSouterminPtTPCvsPtAllITSLayer4(0),
200   fPtITSouterminPtTPCvsPtAllITSLayer5(0),
201   fPtITSouterminPtTPCvsPtAllNoSPD(0),
202   fPtITSouterminPtTPCvsPtAllNoSDD(0),
203   fPtITSouterminPtTPCvsPtAllNoSSD(0),
204   fPtITSouterminPtTPCvsPtAllChi2PerNClusITSLayer0(0),
205   fPtITSouterminPtTPCvsPtAllChi2PerNClusITSLayer1(0),
206   fPtITSouterminPtTPCvsPtAllChi2PerNClusITSLayer2(0),
207   fPtITSouterminPtTPCvsPtAllChi2PerNClusITSLayer3(0),
208   fPtITSouterminPtTPCvsPtAllChi2PerNClusITSLayer4(0),
209   fPtITSouterminPtTPCvsPtAllChi2PerNClusITSLayer5(0),
210   fPtITSouterminPtTPCvsPtAllChi2PerNClusITSNoSPD(0),
211   fPtITSouterminPtTPCvsPtAllChi2PerNClusITSNoSDD(0),
212   fPtITSouterminPtTPCvsPtAllChi2PerNClusITSNoSSD(0),
213   fHistList(0),
214   fPtAllTPC(0),
215   fPtSelTPC(0),
216   fPtSelTPCITS(0),
217   fHistListTPC(0),
218   fPtSelITS(0),
219   fPtITSminPtTPCvsPtITS(0),
220   fPtITSminPtTPCvsPtITSNPointTPC(0),
221   fPtITSminPtTPCvsPtITSNPointTPCS(0),
222   fPtITSminPtTPCvsPtITSDCAR(0),
223   fPtITSminPtTPCvsPtITSDCAZ(0),
224   fPtITSminPtTPCvsPtITSPhi(0),
225   fPtITSminPtTPCvsPtITSNPointITS(0),
226   fPtITSminPtTPCvsPtITSNSigmaToVertex(0),
227   fPtITSminPtTPCvsPtITSChi2C(0),
228   fPtITSminPtTPCvsPtITSRel1PtUncertainty(0),
229   fPtITSminPtTPCvsPtITSChi2PerNClusTPC(0),
230   fPtITSminPtTPCvsPtITSChi2PerNClusITS(0),
231   fPtITSminPtTPCvsNPointTPCPhi(0),
232   fPtITSminPtTPCvsNPointITSPhi(0),
233   fPtITSminPtTPCvsRel1PtUncertaintyPhi(0),
234   fPtRel1PtUncertaintyChi2PerClusTPC(0),
235   fPtNPointTPCSChi2PerClusTPC(0),
236   fPtNPointTPCSRel1PtUncertainty(0),
237   fPtRel1PtUncertaintyChi2PerClusTPCSharedSel(0),
238   fHistListITS(0),
239   fPtCosmicCandidates(0),
240   fDeltaPtCosmicCandidates(0),
241   fDeltaPhi(0),
242   fDeltaEta(0),
243   fHistListCosmics(0)
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());
257   // Output slot #3 writes into a TList
258   DefineOutput(3, TList::Class());
259 }
260
261 //________________________________________________________________________
262 void AliPWG4HighPtQATPConly::ConnectInputData(Option_t *) 
263 {
264   // Connect ESD here
265   // Called once
266   AliDebug(2,Form(">> AliPWG4HighPtSpectra::ConnectInputData \n"));
267   TTree* tree = dynamic_cast<TTree*> (GetInputData(0));
268   if (!tree) {
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"));
286   }
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   
304 }
305
306 //________________________________________________________________________
307 void AliPWG4HighPtQATPConly::CreateOutputObjects() {
308   //Create output objects
309   AliDebug(2,Form(">> AliPWG4HighPtQATPConly::CreateOutputObjects \n")); 
310
311   Bool_t oldStatus = TH1::AddDirectoryStatus();
312   TH1::AddDirectory(kFALSE); 
313
314   OpenFile(0);
315   fHistList = new TList();
316   OpenFile(1);
317   fHistListTPC = new TList();
318   OpenFile(2);
319   fHistListITS = new TList();
320   OpenFile(3);
321   fHistListCosmics = new TList();
322
323
324   Int_t fgkNPhiBins=36;
325   Float_t kMinPhi = 0.;
326   Float_t kMaxPhi = 2.*TMath::Pi();
327   
328   Float_t fgkPtMin=0.;
329   Float_t fgkPtMax=100.;
330   Int_t fgkNPtBins=(int)(fgkPtMax-fgkPtMin);
331
332   Float_t fgkChi2PerClusMin = 0.;
333   Float_t fgkChi2PerClusMax = 4.;
334   Int_t fgkChi2PerClusBins = (int)(fgkChi2PerClusMax*10.);
335   
336
337   Int_t fgkResPtBins=80;
338
339   fNEventAll = new TH1F("fNEventAll","NEventAll",1,-0.5,0.5);
340   fHistList->Add(fNEventAll);
341   fNEventSel = new TH1F("fNEventSel","NEvent Selected for analysis",1,-0.5,0.5);
342   fHistList->Add(fNEventSel);
343   fPtAll = new TH1F("fPtAll","PtAll",fgkNPtBins, fgkPtMin, fgkPtMax);
344   fHistList->Add(fPtAll);
345   fPtSel = new TH1F("fPtSel","PtSel",fgkNPtBins, fgkPtMin, fgkPtMax);
346   fHistList->Add(fPtSel);
347  
348   fPtAllminPtTPCvsPtAll = new TH2F("fPtAllminPtTPCvsPtAll","PtAllminPtTPCvsPtAll",fgkNPtBins, fgkPtMin,fgkPtMax,fgkResPtBins,-1.,1.);
349   fPtAllminPtTPCvsPtAll->SetXTitle("p_{t}^{Global}");
350   fPtAllminPtTPCvsPtAll->SetYTitle("(1/p_{t}^{Global}-1/p_{t}^{TPC})/(1/p_{t}^{Global})");
351   fHistList->Add(fPtAllminPtTPCvsPtAll);
352   
353   fPtAllminPtTPCvsPtAllNPointTPC = new TH3F("fPtAllminPtTPCvsPtAllNPointTPC","PtAllminPtTPCvsPtAllNPointTPC",fgkNPtBins, fgkPtMin,fgkPtMax,fgkResPtBins,-1.,1.,160,0.5,160.5);
354   fPtAllminPtTPCvsPtAllNPointTPC->SetXTitle("p_{t}^{Global}");
355   fPtAllminPtTPCvsPtAllNPointTPC->SetYTitle("(1/p_{t}^{Global}-1/p_{t}^{TPC})/(1/p_{t}^{Global})");
356   fPtAllminPtTPCvsPtAllNPointTPC->SetZTitle("N_{point,TPC}");
357   fHistList->Add(fPtAllminPtTPCvsPtAllNPointTPC);
358
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
365   fPtAllminPtTPCvsPtAllDCAR = new TH3F("fPtAllminPtTPCvsPtAllDCAR","PtAllminPtTPCvsPtAllDCAR",fgkNPtBins, fgkPtMin,fgkPtMax,fgkResPtBins,-1.,1.,80,-0.2,0.2);
366   fPtAllminPtTPCvsPtAllDCAR->SetXTitle("p_{t}^{Global}");
367   fPtAllminPtTPCvsPtAllDCAR->SetYTitle("(1/p_{t}^{Global}-1/p_{t}^{TPC})/(1/p_{t}^{Global})");
368   fPtAllminPtTPCvsPtAllDCAR->SetZTitle("DCA_{R}");
369   fHistList->Add(fPtAllminPtTPCvsPtAllDCAR);
370
371   fPtAllminPtTPCvsPtAllDCAZ = new TH3F("fPtAllminPtTPCvsPtAllDCAZ","PtAllminPtTPCvsPtAllDCAZ",fgkNPtBins, fgkPtMin,fgkPtMax,fgkResPtBins,-1.,1.,80,-2.,2.);
372   fPtAllminPtTPCvsPtAllDCAZ->SetXTitle("p_{t}^{Global}");
373   fPtAllminPtTPCvsPtAllDCAZ->SetYTitle("(1/p_{t}^{Global}-1/p_{t}^{TPC})/(1/p_{t}^{Global})");
374   fPtAllminPtTPCvsPtAllDCAZ->SetZTitle("DCA_{Z}");
375   fHistList->Add(fPtAllminPtTPCvsPtAllDCAZ);
376
377   fPtAllminPtTPCvsPtAllPhi = new TH3F("fPtAllminPtTPCvsPtAllPhi","PtAllminPtTPCvsPtAllPhi",fgkNPtBins, fgkPtMin,fgkPtMax,fgkResPtBins,-1.,1.,fgkNPhiBins,kMinPhi,kMaxPhi);
378   fPtAllminPtTPCvsPtAllPhi->SetXTitle("p_{t}^{Global}");
379   fPtAllminPtTPCvsPtAllPhi->SetYTitle("(1/p_{t}^{Global}-1/p_{t}^{TPC})/(1/p_{t}^{Global})");
380   fPtAllminPtTPCvsPtAllPhi->SetZTitle("#phi");
381   fHistList->Add(fPtAllminPtTPCvsPtAllPhi);
382
383   fPtAllminPtTPCvsPtAllNPointITS = new TH3F("fPtAllminPtTPCvsPtAllNPointITS","PtAllminPtTPCvsPtAllNPointITS",fgkNPtBins, fgkPtMin,fgkPtMax,fgkResPtBins,-1.,1.,9,-0.5,8.5);
384   fPtAllminPtTPCvsPtAllNPointITS->SetXTitle("p_{t}^{Global}");
385   fPtAllminPtTPCvsPtAllNPointITS->SetYTitle("(1/p_{t}^{Global}-1/p_{t}^{TPC})/(1/p_{t}^{Global})");
386   fPtAllminPtTPCvsPtAllNPointITS->SetZTitle("N_{point,ITS}");
387   fHistList->Add(fPtAllminPtTPCvsPtAllNPointITS);
388   
389   fPtAllminPtTPCvsPtAllNSigmaToVertex = new TH3F("fPtAllminPtTPCvsPtAllNSigmaToVertex","PtAllminPtTPCvsPtAllNSigmaToVertex",fgkNPtBins, fgkPtMin,fgkPtMax,fgkResPtBins,-1.,1.,40,0.,8.);
390   fPtAllminPtTPCvsPtAllNSigmaToVertex->SetXTitle("p_{t}^{Global}");
391   fPtAllminPtTPCvsPtAllNSigmaToVertex->SetYTitle("(1/p_{t}^{Global}-1/p_{t}^{TPC})/(1/p_{t}^{Global})");
392   fPtAllminPtTPCvsPtAllNSigmaToVertex->SetZTitle("N#sigma to vertex");
393   fHistList->Add(fPtAllminPtTPCvsPtAllNSigmaToVertex);
394
395   fPtAllminPtTPCvsPtAllChi2C = new TH3F("fPtAllminPtTPCvsPtAllChi2C","PtAllminPtTPCvsPtAllChi2C",fgkNPtBins, fgkPtMin,fgkPtMax,fgkResPtBins,-1.,1.,20,0.,10.);
396   fPtAllminPtTPCvsPtAllChi2C->SetXTitle("p_{t}^{Global}");
397   fPtAllminPtTPCvsPtAllChi2C->SetYTitle("(1/p_{t}^{Global}-1/p_{t}^{TPC})/(1/p_{t}^{Global})");
398   fPtAllminPtTPCvsPtAllChi2C->SetZTitle("Constrained #chi^{2}");
399   fHistList->Add(fPtAllminPtTPCvsPtAllChi2C);
400
401   fPtAllminPtTPCvsPtAllRel1PtUncertainty = new TH3F("fPtAllminPtTPCvsPtAllRel1PtUncertainty","PtAllminPtTPCvsPtAllRel1PtUncertainty",fgkNPtBins, fgkPtMin,fgkPtMax,fgkResPtBins,-1.,1.,30,0.,0.3);
402   fPtAllminPtTPCvsPtAllRel1PtUncertainty->SetXTitle("p_{t}^{Global}");
403   fPtAllminPtTPCvsPtAllRel1PtUncertainty->SetYTitle("(1/p_{t}^{Global}-1/p_{t}^{TPC})/(1/p_{t}^{Global})");
404   fPtAllminPtTPCvsPtAllRel1PtUncertainty->SetZTitle("Rel1PtUncertainty");
405   fHistList->Add(fPtAllminPtTPCvsPtAllRel1PtUncertainty);
406
407   fPtAllminPtTPCvsPtAllChi2PerNClusTPC = new TH3F("fPtAllminPtTPCvsPtAllChi2PerNClusTPC","PtAllminPtTPCvsPtAllChi2PerNClusTPC",fgkNPtBins, fgkPtMin,fgkPtMax,fgkResPtBins,-1.,1.,fgkChi2PerClusBins,fgkChi2PerClusMin,fgkChi2PerClusMax);
408   fPtAllminPtTPCvsPtAllChi2PerNClusTPC->SetXTitle("p_{t}^{Global}");
409   fPtAllminPtTPCvsPtAllChi2PerNClusTPC->SetYTitle("(1/p_{t}^{Global}-1/p_{t}^{TPC})/(1/p_{t}^{Global})");
410   fPtAllminPtTPCvsPtAllChi2PerNClusTPC->SetZTitle("#chi^{2}/(2*NClusTPC-5)");
411   fHistList->Add(fPtAllminPtTPCvsPtAllChi2PerNClusTPC);
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})");
416   fPtAllminPtTPCvsPtAllChi2PerNClusITS->SetZTitle("#chi^{2}/(2*NClusITS-5)");
417   fHistList->Add(fPtAllminPtTPCvsPtAllChi2PerNClusITS);
418
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
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
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
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})");
508   fPtITSouterminPtTPCvsPtAllChi2PerNClusTPC->SetZTitle("#chi^{2}/(2*NClusTPC-5)");
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})");
514   fPtITSouterminPtTPCvsPtAllChi2PerNClusITS->SetZTitle("#chi^{2}/(2*NClusITS-5)");
515   fHistList->Add(fPtITSouterminPtTPCvsPtAllChi2PerNClusITS);
516
517   //As function of ITS layers
518   fPtITSouterminPtTPCvsPtAllITSLayer0 = new TH2F("fPtITSouterminPtTPCvsPtAllITSLayer0","PtAllminPtTPCvsPtAllITSLayer0",fgkNPtBins, fgkPtMin,fgkPtMax,fgkResPtBins,-1.,1.);
519   fPtITSouterminPtTPCvsPtAllITSLayer0->SetXTitle("p_{t}^{Global}");
520   fPtITSouterminPtTPCvsPtAllITSLayer0->SetYTitle("(1/p_{t}^{ITSouter}-1/p_{t}^{TPCinner})/(1/p_{t}^{ITSouter})");
521   fHistList->Add(fPtITSouterminPtTPCvsPtAllITSLayer0);
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);
562
563   //
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);
617
618
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.);
624   fPtITSminPtTPCvsPtITS->SetXTitle("p_{t}^{Global}");
625   fPtITSminPtTPCvsPtITS->SetYTitle("(1/p_{t}^{Global}-1/p_{t}^{TPC})/(1/p_{t}^{Global})");
626   fHistListITS->Add(fPtITSminPtTPCvsPtITS);
627   
628   fPtITSminPtTPCvsPtITSNPointTPC = new TH3F("fPtITSminPtTPCvsPtITSNPointTPC","PtITSminPtTPCvsPtITSNPointTPC",fgkNPtBins, fgkPtMin,fgkPtMax,fgkResPtBins,-1.,1.,160,0.5,160.5);
629   fPtITSminPtTPCvsPtITSNPointTPC->SetXTitle("p_{t}^{Global}");
630   fPtITSminPtTPCvsPtITSNPointTPC->SetYTitle("(1/p_{t}^{Global}-1/p_{t}^{TPC})/(1/p_{t}^{Global})");
631   fPtITSminPtTPCvsPtITSNPointTPC->SetZTitle("N_{point,TPC}");
632   fHistListITS->Add(fPtITSminPtTPCvsPtITSNPointTPC);
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
640   fPtITSminPtTPCvsPtITSDCAR = new TH3F("fPtITSminPtTPCvsPtITSDCAR","PtITSminPtTPCvsPtITSDCAR",fgkNPtBins, fgkPtMin,fgkPtMax,fgkResPtBins,-1.,1.,80,-0.2,0.2);
641   fPtITSminPtTPCvsPtITSDCAR->SetXTitle("p_{t}^{Global}");
642   fPtITSminPtTPCvsPtITSDCAR->SetYTitle("(1/p_{t}^{Global}-1/p_{t}^{TPC})/(1/p_{t}^{Global})");
643   fPtITSminPtTPCvsPtITSDCAR->SetZTitle("DCA_{R}");
644   fHistListITS->Add(fPtITSminPtTPCvsPtITSDCAR);
645   
646   fPtITSminPtTPCvsPtITSDCAZ = new TH3F("fPtITSminPtTPCvsPtITSDCAZ","PtITSminPtTPCvsPtITSDCAZ",fgkNPtBins, fgkPtMin,fgkPtMax,fgkResPtBins,-1.,1.,80,-2.,2.);
647   fPtITSminPtTPCvsPtITSDCAZ->SetXTitle("p_{t}^{Global}");
648   fPtITSminPtTPCvsPtITSDCAZ->SetYTitle("(1/p_{t}^{Global}-1/p_{t}^{TPC})/(1/p_{t}^{Global})");
649   fPtITSminPtTPCvsPtITSDCAZ->SetZTitle("DCA_{Z}");
650   fHistListITS->Add(fPtITSminPtTPCvsPtITSDCAZ);
651   
652   fPtITSminPtTPCvsPtITSPhi = new TH3F("fPtITSminPtTPCvsPtITSPhi","PtITSminPtTPCvsPtITSPhi",fgkNPtBins, fgkPtMin,fgkPtMax,fgkResPtBins,-1.,1.,fgkNPhiBins,kMinPhi,kMaxPhi);
653   fPtITSminPtTPCvsPtITSPhi->SetXTitle("p_{t}^{Global}");
654   fPtITSminPtTPCvsPtITSPhi->SetYTitle("(1/p_{t}^{Global}-1/p_{t}^{TPC})/(1/p_{t}^{Global})");
655   fPtITSminPtTPCvsPtITSPhi->SetZTitle("#phi");
656   fHistListITS->Add(fPtITSminPtTPCvsPtITSPhi);
657   
658   fPtITSminPtTPCvsPtITSNPointITS = new TH3F("fPtITSminPtTPCvsPtITSNPointITS","PtITSminPtTPCvsPtITSNPointITS",fgkNPtBins, fgkPtMin,fgkPtMax,fgkResPtBins,-1.,1.,9,-0.5,8.5);
659   fPtITSminPtTPCvsPtITSNPointITS->SetXTitle("p_{t}^{Global}");
660   fPtITSminPtTPCvsPtITSNPointITS->SetYTitle("(1/p_{t}^{Global}-1/p_{t}^{TPC})/(1/p_{t}^{Global})");
661   fPtITSminPtTPCvsPtITSNPointITS->SetZTitle("N_{point,ITS}");
662   fHistListITS->Add(fPtITSminPtTPCvsPtITSNPointITS); 
663   
664   fPtITSminPtTPCvsPtITSNSigmaToVertex = new TH3F("fPtITSminPtTPCvsPtITSNSigmaToVertex","PtITSminPtTPCvsPtITSNSigmaToVertex",fgkNPtBins, fgkPtMin,fgkPtMax,fgkResPtBins,-1.,1.,40,0.,8.);
665   fPtITSminPtTPCvsPtITSNSigmaToVertex->SetXTitle("p_{t}^{Global}");
666   fPtITSminPtTPCvsPtITSNSigmaToVertex->SetYTitle("(1/p_{t}^{Global}-1/p_{t}^{TPC})/(1/p_{t}^{Global})");
667   fPtITSminPtTPCvsPtITSNSigmaToVertex->SetZTitle("N#sigma to vertex");
668   fHistListITS->Add(fPtITSminPtTPCvsPtITSNSigmaToVertex);
669
670   fPtITSminPtTPCvsPtITSChi2C = new TH3F("fPtITSminPtTPCvsPtITSChi2C","PtITSminPtTPCvsPtITSChi2C",fgkNPtBins, fgkPtMin,fgkPtMax,fgkResPtBins,-1.,1.,20,0.,10.);
671   fPtITSminPtTPCvsPtITSChi2C->SetXTitle("p_{t}^{Global}");
672   fPtITSminPtTPCvsPtITSChi2C->SetYTitle("(1/p_{t}^{Global}-1/p_{t}^{TPC})/(1/p_{t}^{Global})");
673   fPtITSminPtTPCvsPtITSChi2C->SetZTitle("Constrained #chi^{2}");
674   fHistListITS->Add(fPtITSminPtTPCvsPtITSChi2C);
675
676   fPtITSminPtTPCvsPtITSRel1PtUncertainty = new TH3F("fPtITSminPtTPCvsPtITSRel1PtUncertainty","PtITSminPtTPCvsPtITSRel1PtUncertainty",fgkNPtBins, fgkPtMin,fgkPtMax,fgkResPtBins,-1.,1.,30,0.,0.3);
677   fPtITSminPtTPCvsPtITSRel1PtUncertainty->SetXTitle("p_{t}^{Global}");
678   fPtITSminPtTPCvsPtITSRel1PtUncertainty->SetYTitle("(1/p_{t}^{Global}-1/p_{t}^{TPC})/(1/p_{t}^{Global})");
679   fPtITSminPtTPCvsPtITSRel1PtUncertainty->SetZTitle("Rel1PtUncertainty");
680   fHistListITS->Add(fPtITSminPtTPCvsPtITSRel1PtUncertainty);
681
682   fPtITSminPtTPCvsPtITSChi2PerNClusTPC = new TH3F("fPtITSminPtTPCvsPtITSChi2PerNClusTPC","PtITSminPtTPCvsPtITSChi2PerNClusTPC",fgkNPtBins, fgkPtMin,fgkPtMax,fgkResPtBins,-1.,1.,35,0.,3.5);
683   fPtITSminPtTPCvsPtITSChi2PerNClusTPC->SetXTitle("p_{t}^{Global}");
684   fPtITSminPtTPCvsPtITSChi2PerNClusTPC->SetYTitle("(1/p_{t}^{Global}-1/p_{t}^{TPC})/(1/p_{t}^{Global})");
685   fPtITSminPtTPCvsPtITSChi2PerNClusTPC->SetZTitle("#chi^{2}/(2*NClusTPC-5)");
686   fHistListITS->Add(fPtITSminPtTPCvsPtITSChi2PerNClusTPC);
687
688   fPtITSminPtTPCvsPtITSChi2PerNClusITS = new TH3F("fPtITSminPtTPCvsPtITSChi2PerNClusITS","PtITSminPtTPCvsPtITSChi2PerNClusITS",fgkNPtBins, fgkPtMin,fgkPtMax,fgkResPtBins,-1.,1.,35,0.,3.5);
689   fPtITSminPtTPCvsPtITSChi2PerNClusITS->SetXTitle("p_{t}^{Global}");
690   fPtITSminPtTPCvsPtITSChi2PerNClusITS->SetYTitle("(1/p_{t}^{Global}-1/p_{t}^{TPC})/(1/p_{t}^{Global})");
691   fPtITSminPtTPCvsPtITSChi2PerNClusITS->SetZTitle("#chi^{2}/(2*NClusITS-5)");
692   fHistListITS->Add(fPtITSminPtTPCvsPtITSChi2PerNClusITS);
693
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
712   fPtRel1PtUncertaintyChi2PerClusTPC = new TH3F("fPtRel1PtUncertaintyChi2PerClusTPC","PtITSminPtTPCvsPtITSRel1PtUncertainty",fgkNPtBins, fgkPtMin,fgkPtMax,30,0.,0.3,35,0.,3.5);
713   fPtRel1PtUncertaintyChi2PerClusTPC->SetXTitle("p_{t}^{global}");
714   fPtRel1PtUncertaintyChi2PerClusTPC->SetYTitle("Rel1PtUncertainty");
715   fPtRel1PtUncertaintyChi2PerClusTPC->SetZTitle("#chi^{2}/(2*N_{clusters}^{TPC}-5)");
716   fHistListITS->Add(fPtRel1PtUncertaintyChi2PerClusTPC);
717
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
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);
735
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);
742
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
755   TH1::AddDirectory(oldStatus);   
756
757 }
758 //________________________________________________________________________
759 void AliPWG4HighPtQATPConly::Exec(Option_t *) {  
760   // Main loop
761   // Called for each event
762   AliDebug(2,Form(">> AliPWG4HighPtQATPConly::Exec \n"));  
763
764   // All events without selection
765   fNEventAll->Fill(0.);
766
767   if (!fESD) {
768     AliDebug(2,Form("ERROR: fESD not available"));
769     // Post output data
770      PostData(0, fHistList);
771      PostData(1, fHistListTPC);
772      PostData(2, fHistListITS);
773      PostData(3, fHistListCosmics);
774     return;
775   }
776
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);
784      PostData(3, fHistListCosmics);
785     return;
786   }
787
788   Bool_t isSelected = ((AliInputEventHandler*)(AliAnalysisManager::GetAnalysisManager()->GetInputEventHandler()))->IsEventSelected();
789   if(!isSelected) { //Select collison candidates
790     AliDebug(2,Form(" Trigger Selection: event REJECTED ... "));
791     // Post output data
792      PostData(0, fHistList);
793      PostData(1, fHistListTPC);
794      PostData(2, fHistListITS);
795      PostData(3, fHistListCosmics);
796     return;
797   }
798
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);
812       PostData(3, fHistListCosmics);
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
824   const AliESDVertex *vtx = fESD->GetPrimaryVertexTracks();
825   // Need vertex cut
826   if (vtx->GetNContributors() < 2) {
827     // Post output data
828     PostData(0, fHistList);
829     PostData(1, fHistListTPC);
830     PostData(2, fHistListITS);
831     PostData(3, fHistListCosmics);
832     return;
833   }
834
835   AliDebug(2,Form("Vertex title %s, status %d, nCont %d\n",vtx->GetTitle(), vtx->GetStatus(), vtx->GetNContributors()));
836   double primVtx[3];
837   vtx->GetXYZ(primVtx);
838   //  printf("primVtx: %g  %g  %g \n",primVtx[0],primVtx[1],primVtx[2]);
839   if(TMath::Sqrt(primVtx[0]*primVtx[0] + primVtx[1]*primVtx[1])>1. || TMath::Abs(primVtx[2]>10.)){
840     // Post output data
841     PostData(0, fHistList);
842     PostData(1, fHistListTPC);
843     PostData(2, fHistListITS);
844     PostData(3, fHistListCosmics);
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);
852     PostData(3, fHistListCosmics);
853     return;
854   }
855   Int_t nTracks = fESD->GetNumberOfTracks();
856   AliDebug(2,Form("nTracks %d\n", nTracks));
857
858   if(!fTrackCuts) return;
859
860   // Selected events for analysis
861   fNEventSel->Fill(0.);
862
863   for (Int_t iTrack = 0; iTrack < nTracks; iTrack++) {
864     
865     AliESDtrack *track = fESD->GetTrack(iTrack);
866     AliExternalTrackParam *trackTPC = (AliExternalTrackParam *)track->GetTPCInnerParam();
867     if(!track || !trackTPC) continue;
868     const AliESDfriendTrack* constfriendtrack = track->GetFriendTrack();
869     if (!constfriendtrack) { continue;}
870     AliESDfriendTrack friendtrack(*constfriendtrack);
871  
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     }
885     double mom[3];
886     track->GetPxPyPz(mom);
887     double momTPC[3];
888     trackTPC->GetPxPyPz(momTPC);
889     Float_t nSigmaToVertex = fTrackCuts->GetSigmaToVertex(track);// Calculates the number of sigma to the vertex for a track.
890     Float_t chi2C = track->GetConstrainedChi2();
891     Float_t relUncertainty1Pt = TMath::Sqrt(TMath::Abs(track->GetSigma1Pt2()))*pt;
892     Float_t chi2PerClusterTPC = -1.;
893     Float_t nClustersTPC = track->GetTPCNcls();
894     if(nClustersTPC>0.) chi2PerClusterTPC = track->GetTPCchi2()/(2.*nClustersTPC-5.);
895     Float_t chi2PerNPointITS = -1.;
896     if(nPointITS>3) chi2PerNPointITS = track->GetITSchi2()/(2.*(float)nPointITS-5.);
897
898     fPtAll->Fill(pt);
899     fPtAllTPC->Fill(ptTPC);
900
901
902     if (fTrackCuts->AcceptTrack(track)) {
903
904       Bool_t cosmic = kFALSE;    
905       if(pt>6.) { cosmic = IsCosmic(track,iTrack,6.); }
906       //    if(cosmic) continue;
907
908       fPtSel->Fill(pt);
909       fPtSelTPC->Fill(ptTPC);
910       if(ptTPC==0. || pt==0.) continue;
911       fPtAllminPtTPCvsPtAll->Fill(pt,(1./pt-1./ptTPC)/(1./pt) );
912       fPtAllminPtTPCvsPtAllNPointTPC->Fill(pt,(1./pt-1./ptTPC)/(1./pt),nClustersTPC);
913       if(nClustersTPC>0.) fPtAllminPtTPCvsPtAllNPointTPCS->Fill(pt,(1./pt-1./ptTPC)/(1./pt),track->GetTPCnclsS()/nClustersTPC);
914       fPtAllminPtTPCvsPtAllDCAR->Fill(pt,(1./pt-1./ptTPC)/(1./pt),dca2D);
915       fPtAllminPtTPCvsPtAllDCAZ->Fill(pt,(1./pt-1./ptTPC)/(1./pt),dcaZ);
916       fPtAllminPtTPCvsPtAllPhi->Fill(pt,(1./pt-1./ptTPC)/(1./pt),phi);
917       fPtAllminPtTPCvsPtAllNPointITS->Fill(pt,(1./pt-1./ptTPC)/(1./pt),nPointITS);
918       fPtAllminPtTPCvsPtAllNSigmaToVertex->Fill(pt,(1./pt-1./ptTPC)/(1./pt),nSigmaToVertex);
919       fPtAllminPtTPCvsPtAllChi2C->Fill(pt,(1./pt-1./ptTPC)/(1./pt),chi2C);
920       fPtAllminPtTPCvsPtAllRel1PtUncertainty->Fill(pt,(1./pt-1./ptTPC)/(1./pt),relUncertainty1Pt);
921       fPtAllminPtTPCvsPtAllChi2PerNClusTPC->Fill(pt,(1./pt-1./ptTPC)/(1./pt),chi2PerClusterTPC);
922       if(nPointITS>3) fPtAllminPtTPCvsPtAllChi2PerNClusITS->Fill(pt,(1./pt-1./ptTPC)/(1./pt),chi2PerNPointITS);
923       fPtAllminPtTPCvsNPointTPCPhi->Fill((1./pt-1./ptTPC)/(1./pt),nClustersTPC,phi);
924       fPtAllminPtTPCvsNPointITSPhi->Fill((1./pt-1./ptTPC)/(1./pt),nPointITS,phi);
925       fPtAllminPtTPCvsRel1PtUncertaintyPhi->Fill((1./pt-1./ptTPC)/(1./pt),relUncertainty1Pt,phi);
926
927       if(TMath::Abs((1./pt-1./ptTPC)/(1./pt))>0.8) fEtaPhiOutliers->Fill(track->Eta(),phi);
928       if (friendtrack.GetITSOut()) {
929         AliExternalTrackParam trackITSouter(*(friendtrack.GetITSOut())); 
930         Float_t ptITSouter = trackITSouter.Pt();
931         if(ptITSouter==0.) continue;
932         fPtSelITSouter->Fill(ptITSouter);
933         fPtITSouterminPtTPCvsPtAll->Fill(pt,(1./ptITSouter-1./ptTPC)/(1./ptITSouter) );
934         fPtITSouterminPtTPCvsPtAllNPointTPC->Fill(pt,(1./ptITSouter-1./ptTPC)/(1./ptITSouter),nClustersTPC);
935         if(nClustersTPC>0.) fPtITSouterminPtTPCvsPtAllNPointTPCS->Fill(pt,(1./ptITSouter-1./ptTPC)/(1./ptITSouter),track->GetTPCnclsS()/nClustersTPC);
936         fPtITSouterminPtTPCvsPtAllDCAR->Fill(pt,(1./ptITSouter-1./ptTPC)/(1./ptITSouter),dca2D);
937         fPtITSouterminPtTPCvsPtAllDCAZ->Fill(pt,(1./ptITSouter-1./ptTPC)/(1./ptITSouter),dcaZ);
938         fPtITSouterminPtTPCvsPtAllPhi->Fill(pt,(1./ptITSouter-1./ptTPC)/(1./ptITSouter),phi);
939         fPtITSouterminPtTPCvsPtAllNPointITS->Fill(pt,(1./ptITSouter-1./ptTPC)/(1./ptITSouter),nPointITS);
940         fPtITSouterminPtTPCvsPtAllNSigmaToVertex->Fill(pt,(1./ptITSouter-1./ptTPC)/(1./ptITSouter),nSigmaToVertex);
941         fPtITSouterminPtTPCvsPtAllChi2C->Fill(pt,(1./ptITSouter-1./ptTPC)/(1./ptITSouter),chi2C);
942         fPtITSouterminPtTPCvsPtAllRel1PtUncertainty->Fill(pt,(1./ptITSouter-1./ptTPC)/(1./ptITSouter),relUncertainty1Pt);
943         fPtITSouterminPtTPCvsPtAllChi2PerNClusTPC->Fill(pt,(1./ptITSouter-1./ptTPC)/(1./ptITSouter),chi2PerClusterTPC);
944         if(nPointITS>3) fPtITSouterminPtTPCvsPtAllChi2PerNClusITS->Fill(pt,(1./ptITSouter-1./ptTPC)/(1./ptITSouter),chi2PerNPointITS);
945         if(track->HasPointOnITSLayer(0)) {
946           fPtITSouterminPtTPCvsPtAllITSLayer0->Fill(pt,(1./ptITSouter-1./ptTPC)/(1./ptITSouter));
947           if(nPointITS>3) fPtITSouterminPtTPCvsPtAllChi2PerNClusITSLayer0->Fill(pt,(1./ptITSouter-1./ptTPC)/(1./ptITSouter),chi2PerNPointITS);
948         }
949         if(!track->HasPointOnITSLayer(0) && track->HasPointOnITSLayer(1)) {
950           fPtITSouterminPtTPCvsPtAllITSLayer1->Fill(pt,(1./ptITSouter-1./ptTPC)/(1./ptITSouter));
951           if(nPointITS>3) fPtITSouterminPtTPCvsPtAllChi2PerNClusITSLayer1->Fill(pt,(1./ptITSouter-1./ptTPC)/(1./ptITSouter),chi2PerNPointITS);
952         }
953         if(!track->HasPointOnITSLayer(0) && !track->HasPointOnITSLayer(1) && track->HasPointOnITSLayer(2)) {
954           fPtITSouterminPtTPCvsPtAllITSLayer2->Fill(pt,(1./ptITSouter-1./ptTPC)/(1./ptITSouter));
955           if(nPointITS>3) fPtITSouterminPtTPCvsPtAllChi2PerNClusITSLayer2->Fill(pt,(1./ptITSouter-1./ptTPC)/(1./ptITSouter),chi2PerNPointITS);
956         }
957         if(!track->HasPointOnITSLayer(0) && !track->HasPointOnITSLayer(1) && !track->HasPointOnITSLayer(2) && track->HasPointOnITSLayer(3)) {
958           fPtITSouterminPtTPCvsPtAllITSLayer3->Fill(pt,(1./ptITSouter-1./ptTPC)/(1./ptITSouter));
959           if(nPointITS>3) fPtITSouterminPtTPCvsPtAllChi2PerNClusITSLayer3->Fill(pt,(1./ptITSouter-1./ptTPC)/(1./ptITSouter),chi2PerNPointITS);
960         }
961         if(!track->HasPointOnITSLayer(0) && !track->HasPointOnITSLayer(1) && !track->HasPointOnITSLayer(2) && !track->HasPointOnITSLayer(3) && track->HasPointOnITSLayer(4)) {
962           fPtITSouterminPtTPCvsPtAllITSLayer4->Fill(pt,(1./ptITSouter-1./ptTPC)/(1./ptITSouter));
963           if(nPointITS>3) fPtITSouterminPtTPCvsPtAllChi2PerNClusITSLayer4->Fill(pt,(1./ptITSouter-1./ptTPC)/(1./ptITSouter),chi2PerNPointITS);
964         }
965         if(!track->HasPointOnITSLayer(0) && !track->HasPointOnITSLayer(1) && !track->HasPointOnITSLayer(2) && !track->HasPointOnITSLayer(3) && !track->HasPointOnITSLayer(4) && track->HasPointOnITSLayer(5)) {
966           fPtITSouterminPtTPCvsPtAllITSLayer5->Fill(pt,(1./ptITSouter-1./ptTPC)/(1./ptITSouter));
967           if(nPointITS>3) fPtITSouterminPtTPCvsPtAllChi2PerNClusITSLayer5->Fill(pt,(1./ptITSouter-1./ptTPC)/(1./ptITSouter),chi2PerNPointITS);
968         }
969
970         if(!track->HasPointOnITSLayer(0) && !track->HasPointOnITSLayer(1)) {
971           fPtITSouterminPtTPCvsPtAllNoSPD->Fill(pt,(1./ptITSouter-1./ptTPC)/(1./ptITSouter));
972           if(nPointITS>3) fPtITSouterminPtTPCvsPtAllChi2PerNClusITSNoSPD->Fill(pt,(1./ptITSouter-1./ptTPC)/(1./ptITSouter),chi2PerNPointITS);
973         }
974         if(!track->HasPointOnITSLayer(2) && !track->HasPointOnITSLayer(3)) {
975           fPtITSouterminPtTPCvsPtAllNoSDD->Fill(pt,(1./ptITSouter-1./ptTPC)/(1./ptITSouter));
976           if(nPointITS>3) fPtITSouterminPtTPCvsPtAllChi2PerNClusITSNoSDD->Fill(pt,(1./ptITSouter-1./ptTPC)/(1./ptITSouter),chi2PerNPointITS);
977         }
978         if(!track->HasPointOnITSLayer(4) && !track->HasPointOnITSLayer(5)) {
979           fPtITSouterminPtTPCvsPtAllNoSSD->Fill(pt,(1./ptITSouter-1./ptTPC)/(1./ptITSouter));
980           if(nPointITS>3) fPtITSouterminPtTPCvsPtAllChi2PerNClusITSNoSSD->Fill(pt,(1./ptITSouter-1./ptTPC)/(1./ptITSouter),chi2PerNPointITS);
981         }
982       }
983
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) );
993       fPtITSminPtTPCvsPtITSNPointTPC->Fill(pt,(1./pt-1./ptTPC)/(1./pt),nClustersTPC);
994       if(nClustersTPC>0.) fPtITSminPtTPCvsPtITSNPointTPCS->Fill(pt,(1./pt-1./ptTPC)/(1./pt),track->GetTPCnclsS()/nClustersTPC);
995       fPtITSminPtTPCvsPtITSDCAR->Fill(pt,(1./pt-1./ptTPC)/(1./pt),dca2D);
996       fPtITSminPtTPCvsPtITSDCAZ->Fill(pt,(1./pt-1./ptTPC)/(1./pt),dcaZ);
997       fPtITSminPtTPCvsPtITSPhi->Fill(pt,(pt-ptTPC)/(pt),phi);
998       fPtITSminPtTPCvsPtITSNPointITS->Fill(pt,(pt-ptTPC)/(pt),nPointITS);
999       fPtITSminPtTPCvsPtITSNSigmaToVertex->Fill(pt,(1./pt-1./ptTPC)/(1./pt),nSigmaToVertex);
1000       fPtITSminPtTPCvsPtITSChi2C->Fill(pt,(1./pt-1./ptTPC)/(1./pt),chi2C);
1001       fPtITSminPtTPCvsPtITSRel1PtUncertainty->Fill(pt,(1./pt-1./ptTPC)/(1./pt),relUncertainty1Pt);
1002       fPtITSminPtTPCvsPtITSChi2PerNClusTPC->Fill(pt,(1./pt-1./ptTPC)/(1./pt),chi2PerClusterTPC);
1003       if(nPointITS>3) fPtITSminPtTPCvsPtITSChi2PerNClusITS->Fill(pt,(1./pt-1./ptTPC)/(1./pt),chi2PerNPointITS);
1004       fPtITSminPtTPCvsNPointTPCPhi->Fill((1./pt-1./ptTPC)/(1./pt),nClustersTPC,phi);
1005       fPtITSminPtTPCvsNPointITSPhi->Fill((1./pt-1./ptTPC)/(1./pt),nPointITS,phi);
1006       fPtITSminPtTPCvsRel1PtUncertaintyPhi->Fill((1./pt-1./ptTPC)/(1./pt),relUncertainty1Pt,phi);
1007
1008       fPtRel1PtUncertaintyChi2PerClusTPC->Fill(pt,relUncertainty1Pt,chi2PerClusterTPC);
1009       fPtNPointTPCSChi2PerClusTPC->Fill(pt,track->GetTPCnclsS()/nClustersTPC,chi2PerClusterTPC);
1010       fPtNPointTPCSRel1PtUncertainty->Fill(pt,track->GetTPCnclsS()/nClustersTPC,relUncertainty1Pt);
1011       if(track->GetTPCnclsS()/nClustersTPC>0.05) fPtRel1PtUncertaintyChi2PerClusTPCSharedSel->Fill(pt,relUncertainty1Pt,chi2PerClusterTPC);
1012     }//fTrackCutsITS loop
1013       
1014   }//ESD track loop
1015    
1016   // Post output data
1017   PostData(0, fHistList);
1018   PostData(1, fHistListTPC);
1019   PostData(2, fHistListITS);
1020   PostData(3, fHistListCosmics);
1021
1022 }
1023 //________________________________________________________________________
1024 Bool_t AliPWG4HighPtQATPConly::IsCosmic(const AliESDtrack *track1 , Int_t trackNumber, Double_t ptMin)
1025 {
1026   Bool_t candidate1 = kFALSE;
1027   Bool_t candidate2 = kFALSE;
1028   if(!track1) return candidate1;
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     
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;
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);
1049     if(TMath::Abs(TMath::Pi()-theta)<fMaxCosmicAngle) { candidate1 = kTRUE; candidate2 = kTRUE;}
1050
1051     if(candidate2) {
1052       fDeltaPtCosmicCandidates->Fill(track1->Pt()-track2->Pt());
1053       fDeltaPhi->Fill(track1->Phi()-track2->Phi());
1054       fDeltaEta->Fill(track1->Eta()-track2->Eta());
1055     }
1056
1057   }
1058
1059   if(candidate1) {
1060     fPtCosmicCandidates->Fill(track1->Pt());
1061   }
1062
1063    return candidate1;
1064 }
1065
1066 //________________________________________________________________________
1067 void AliPWG4HighPtQATPConly::Terminate(Option_t *)
1068 {
1069
1070 }
1071
1072 #endif