]> git.uio.no Git - u/mrichter/AliRoot.git/blame - PWGPP/TRD/macros/AddTRDcheckESD.C
Merge branch 'feature-movesplit'
[u/mrichter/AliRoot.git] / PWGPP / TRD / macros / AddTRDcheckESD.C
CommitLineData
69656036
AB
1
2#if ! defined (__CINT__) || defined (__MAKECINT__)
3#include "AliLog.h"
4#include "AliAnalysisManager.h"
5#include "AliAnalysisDataContainer.h"
6#include "AliAnalysisCuts.h"
7#include "AliESDtrackCuts.h"
8#include "PWGPP/TRD/AliTRDcheckESD.h"
9#endif
10
11AliESDtrackCuts* SetupESDcuts();
12void AddCFContainers(AliTRDcheckESD* checkESD);
13
14void AddTRDcheckESD(AliAnalysisManager *mgr)
15{
16 //AliLog::SetClassDebugLevel("AliTRDcheckESD", 5);
17 // AliInfo("aaaaaa6666666666");
18 AliTRDcheckESD *checkESD = new AliTRDcheckESD((char*)"TRDcheckESD");
19 checkESD->SetRefTrackFilter(SetupESDcuts());
20 mgr->AddTask(checkESD);
21 Bool_t mc = mgr->GetMCtruthEventHandler();
22 checkESD->SetMC(mc);
23 checkESD->SetCollision(/*kFALSE*/);
24 checkESD->SetDebugLevel(0);
25 checkESD->AddUserTrigger("WU");
26 checkESD->AddUserTrigger("QU");
27 checkESD->AddUserTrigger("SE");
28 checkESD->AddUserTrigger("JT");
29
30 AddCFContainers(checkESD);
31
32 mgr->ConnectInput(checkESD, 0, mgr->GetCommonInputContainer());
33 mgr->ConnectOutput(checkESD, 1, mgr->CreateContainer(checkESD->GetName(), TObjArray::Class(), AliAnalysisManager::kOutputContainer, Form("%s:TRD_Performance",mgr->GetCommonFileName())));
34}
35
36AliESDtrackCuts* SetupESDcuts() {
37 // Setup ESD cuts for the TPC reference tracks
38 AliESDtrackCuts* esdCuts = new AliESDtrackCuts;
39 esdCuts->SetPtRange(0.5, 100.0);
40 esdCuts->SetEtaRange(-0.9, +0.9);
41 esdCuts->SetRequireTPCRefit(kTRUE);
42 esdCuts->SetAcceptKinkDaughters(kFALSE);
43 esdCuts->SetMaxDCAToVertexXY(1.);
44 esdCuts->SetMaxDCAToVertexZ(3.);
45 esdCuts->SetMinNClustersTPC(70);
46 esdCuts->SetRequireITSRefit(kTRUE);
47 esdCuts->SetClusterRequirementITS(AliESDtrackCuts::kSPD,AliESDtrackCuts::kAny);
48 return esdCuts;
49}
50
51
52void AddCFContainers(AliTRDcheckESD* checkESD) {
53 //
54 // configure output CF containers
55 //
56 Double_t bcLimits[3501]; for(Int_t i=0; i<=3500; ++i) bcLimits[i] = -0.5+Double_t(i);
098f177f 57 //Double_t phiLimits[181]; for(Int_t i=0; i<=180; ++i) phiLimits[i] = 0.0+i*2.0*TMath::Pi()/180.0;
69656036
AB
58 Double_t phiParamLimits[181]; for(Int_t i=0; i<=180; ++i) phiParamLimits[i] = -1.0*TMath::Pi()+i*2.0*TMath::Pi()/180.0;
59 Double_t ptLimits[19] = {0.0, 0.5, 0.75, 1.0, 1.25, 1.5, 1.75, 2.0, 2.5, 3.0,
60 3.5, 4.0, 4.5, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0};
61 Double_t chargeLimits[3] = {-1.5,0.0,1.5};
62 Double_t etaLimits[91]; for(Int_t i=0;i<=90;++i) etaLimits[i] = -0.9+i*1.8/90.;
63 Double_t trdTrkltsLimits[8] = {-0.5,0.5,1.5,2.5,3.5,4.5,5.5,6.5};
64 Double_t trigLimits[AliTRDcheckESD::kNMaxAssignedTriggers+1]; for(Int_t i=0;i<=AliTRDcheckESD::kNMaxAssignedTriggers;++i) trigLimits[i] = 0.5+Double_t(i);
65 Double_t evMultLimits[6] = {0.0, 700., 1400., 2100., 2800., 3500.};
66 Double_t pLimits[18] = {0.0, 0.4, 0.6, 0.8, 1.0, 1.2, 1.4, 1.7, 2.0, 2.5,
67 3.0, 3.5, 4.0, 5.0, 6.0, 7.0, 9.0, 12.0};
68 Double_t qtotLimits[101]; for(Int_t i=0;i<=100;++i) qtotLimits[i] = 0.0+i*10000./100.;
69 Double_t layerLimits[7] = {-0.5,0.5,1.5,2.5,3.5,4.5,5.5};
70 Double_t sliceLimits[9] = {-0.5,0.5,1.5,2.5,3.5,4.5,5.5,6.5,7.5};
c2c78193 71 Double_t pLossLimits[101]; for(Int_t i=0;i<=100;++i) pLossLimits[i] = -500.+i*1000.0/100.;
69656036 72 Double_t trdClustersLimits[201]; for(Int_t i=0;i<=200;++i) trdClustersLimits[i] = -0.5+i*200.0/200.;
098f177f 73 //Double_t trdQualityLimits[101]; for(Int_t i=0;i<=100;++i) trdQualityLimits[i] = 0.0+i*2.0/100.;
c2c78193 74 Double_t trdBudgetLimits[101]; for(Int_t i=0;i<=100;++i) trdBudgetLimits[i] = 0.0+i*100.0/100.;
69656036
AB
75 Double_t trdChi2Limits[101]; for(Int_t i=0;i<=100;++i) trdChi2Limits[i] = 0.0+i*10.0/100.;
76 Double_t trackletClustersLimits[31]; for(Int_t i=0;i<=30;++i) trackletClustersLimits[i] = 0.0+i*1.0;
77 Double_t trackletClsRowsLimits[31]; for(Int_t i=0;i<=30;++i) trackletClsRowsLimits[i] = 0.0+Double_t(i)*1.0/30.0;
098f177f 78 //Double_t outerParamRadLimits[51]; for(Int_t i=0;i<=50;++i) outerParamRadLimits[i] = 0.0+Double_t(i)*500.0/50.0;
c2c78193 79
69656036
AB
80 // BC container
81 cout << "Container 1 :: BunchCrossingsCF" << endl;
82 Int_t bcSteps[3] = {AliTRDcheckESD::kTPCreference, AliTRDcheckESD::kTRD, AliTRDcheckESD::kTOF};
83 UInt_t bcVars[3] = {AliTRDcheckESD::kEventBC, AliTRDcheckESD::kTrackPhiTRD, AliTRDcheckESD::kTrackPt};
84 TArrayD bcBinning[3] = {TArrayD(3501, bcLimits), TArrayD(181,phiParamLimits), TArrayD(19,ptLimits)};
85 checkESD->AddCFContainer("BunchCrossingsCF", "Matching vs bunch crossings", 3, bcSteps, 3, bcVars, bcBinning);
86
87 // (phi,eta) matching container
88 cout << "Container 2 :: MatchingPhiEta" << endl;
89 Int_t matchPhiEtaSteps[3] = {AliTRDcheckESD::kTPCreference, AliTRDcheckESD::kTRD, AliTRDcheckESD::kTOF};
90 UInt_t matchPhiEtaVars[5] = {AliTRDcheckESD::kTrackCharge, AliTRDcheckESD::kTrackPhiTRD, AliTRDcheckESD::kTrackEtaTRD,
91 AliTRDcheckESD::kTrackTrdTracklets, AliTRDcheckESD::kEventTrigger};
92 TArrayD matchPhiEtaBinning[5] = {TArrayD(3,chargeLimits), TArrayD(181, phiParamLimits), TArrayD(91, etaLimits),
93 TArrayD(8,trdTrkltsLimits), TArrayD(AliTRDcheckESD::kNMaxAssignedTriggers+1, trigLimits)};
94 checkESD->AddCFContainer("MatchingPhiEta", "(phi,eta) matching CF", 3, matchPhiEtaSteps, 5, matchPhiEtaVars, matchPhiEtaBinning);
95
96 // pt matching container
97 cout << "Container 3 :: MatchingPt" << endl;
98 Int_t matchPtSteps[3] = {AliTRDcheckESD::kTPCreference, AliTRDcheckESD::kTRD, AliTRDcheckESD::kTOF};
99 UInt_t matchPtVars[6] = {AliTRDcheckESD::kEventMult, AliTRDcheckESD::kTrackCharge, AliTRDcheckESD::kTrackPhiTRD,
100 AliTRDcheckESD::kTrackPt, AliTRDcheckESD::kTrackTrdTracklets, AliTRDcheckESD::kEventTrigger};
101 TArrayD matchPtBinning[6] = {TArrayD(6,evMultLimits), TArrayD(3, chargeLimits), TArrayD(181, phiParamLimits),
102 TArrayD(19, ptLimits), TArrayD(8, trdTrkltsLimits), TArrayD(AliTRDcheckESD::kNMaxAssignedTriggers+1, trigLimits)};
103 checkESD->AddCFContainer("MatchingPt", "(pt,phi,multiplicity) matching", 3, matchPtSteps, 6, matchPtVars, matchPtBinning);
104
105 // qtot, vs event multiplicity and p
106 cout << "Container 4 :: CentralityCF" << endl;
107 Int_t qtotCentSteps[1] = {AliTRDcheckESD::kTRD};
c2c78193 108 UInt_t qtotCentVars[3] = {AliTRDcheckESD::kEventMult, AliTRDcheckESD::kTrackP,
109 AliTRDcheckESD::kTrackletQtot};
110 TArrayD qtotCentBinning[3] = {TArrayD(6,evMultLimits),
111 TArrayD(18, pLimits), TArrayD(101, qtotLimits)};
112 checkESD->AddCFContainer("CentralityCF", "qtot vs event multiplicity and p", 1, qtotCentSteps, 3, qtotCentVars, qtotCentBinning);
113
114 // qtot, vs event multiplicity and p
115 cout << "Container 5 :: ClustersCF" << endl;
116 Int_t clsCentSteps[1] = {AliTRDcheckESD::kTRD};
117 UInt_t clsCentVars[3] = {AliTRDcheckESD::kEventMult, AliTRDcheckESD::kTrackP,
118 AliTRDcheckESD::kTrackTrdClusters};
119 TArrayD clsCentBinning[3] = {TArrayD(6,evMultLimits),
120 TArrayD(18, pLimits), TArrayD(201, trdClustersLimits)};
121 checkESD->AddCFContainer("ClustersCF", "clusters/track vs event multiplicity and p", 1, clsCentSteps, 3, clsCentVars, clsCentBinning);
69656036
AB
122
123 // qtot vs (phi,eta) and layer
c2c78193 124 cout << "Container 6 :: QtotCF" << endl;
69656036
AB
125 Int_t qtotSteps[1] = {AliTRDcheckESD::kTRD};
126 UInt_t qtotVars[4] = {AliTRDcheckESD::kTrackPhiTRD, AliTRDcheckESD::kTrackEtaTRD,
127 AliTRDcheckESD::kTrackletQtot, AliTRDcheckESD::kTrackletLayer};
128 TArrayD qtotBinning[4] = {TArrayD(181, phiParamLimits), TArrayD(91, etaLimits),
129 TArrayD(101, qtotLimits), TArrayD(7, layerLimits)};
130 checkESD->AddCFContainer("QtotCF", "qtot vs (phi,eta) and layer", 1, qtotSteps, 4, qtotVars, qtotBinning);
131
132 // pulse height vs p and slice
c2c78193 133 cout << "Container 7 :: PulseHeightCF" << endl;
69656036
AB
134 Int_t phSteps[1] = {AliTRDcheckESD::kTRD};
135 UInt_t phVars[4] = {AliTRDcheckESD::kEventTrigger, AliTRDcheckESD::kTrackletP,
136 AliTRDcheckESD::kTrackletPHslice, AliTRDcheckESD::kTrackletSlice};
137 TArrayD phBinning[4] = {TArrayD(AliTRDcheckESD::kNMaxAssignedTriggers+1, trigLimits), TArrayD(18,pLimits),
138 TArrayD(101, qtotLimits), TArrayD(9,sliceLimits)};
139 checkESD->AddCFContainer("PulseHeightCF", "PH vs p and slice", 1, phSteps, 4, phVars, phBinning);
140
141 // TRD quality
c2c78193 142 /*cout << "Container 8 :: TRD quality" << endl;
69656036
AB
143 Int_t trdQualitySteps[1] = {AliTRDcheckESD::kTRD};
144 UInt_t trdQualityVars[5] = {AliTRDcheckESD::kTrackP, AliTRDcheckESD::kTrackPhiTRD, AliTRDcheckESD::kTrackEtaTRD,
145 AliTRDcheckESD::kTrackTrdQuality, AliTRDcheckESD::kTrackCharge};
146 TArrayD trdQualityBinning[5] = {TArrayD(18, pLimits), TArrayD(181, phiParamLimits), TArrayD(91, etaLimits),
147 TArrayD(101, trdQualityLimits), TArrayD(3, chargeLimits)};
148 checkESD->AddCFContainer("trdQuality", "TRD quality vs (p,phi,eta,charge)", 1, trdQualitySteps,
149 5, trdQualityVars, trdQualityBinning);
c2c78193 150 */
69656036 151 // TRD chi2
c2c78193 152 cout << "Container 9 :: TRD chi2" << endl;
69656036
AB
153 Int_t trdChi2Steps[1] = {AliTRDcheckESD::kTRD};
154 UInt_t trdChi2Vars[5] = {AliTRDcheckESD::kTrackPhiTRD, AliTRDcheckESD::kTrackEtaTRD,
155 AliTRDcheckESD::kTrackTrdChi2,
156 AliTRDcheckESD::kTrackPt, AliTRDcheckESD::kTrackCharge};
157 TArrayD trdChi2Binning[5] = {TArrayD(181, phiParamLimits), TArrayD(91, etaLimits),
158 TArrayD(101, trdChi2Limits),
159 TArrayD(19, ptLimits), TArrayD(3, chargeLimits)};
160 checkESD->AddCFContainer("trdChi2", "TRD chi2 vs (phi,eta,pt,charge)", 1, trdChi2Steps,
161 5, trdChi2Vars, trdChi2Binning);
162
163 // TRD material budget
c2c78193 164 cout << "Container 10 :: TRD material budget" << endl;
69656036
AB
165 Int_t trdBudgetSteps[1] = {AliTRDcheckESD::kTRD};
166 UInt_t trdBudgetVars[3] = {AliTRDcheckESD::kTrackPhiTRD, AliTRDcheckESD::kTrackEtaTRD,
167 AliTRDcheckESD::kTrackTRDBudget};
168 TArrayD trdBudgetBinning[3] = {TArrayD(181, phiParamLimits), TArrayD(91, etaLimits),
169 TArrayD(101, trdBudgetLimits)};
170 checkESD->AddCFContainer("trdBudget", "TRD budget vs (phi,eta)", 1, trdBudgetSteps,
171 3, trdBudgetVars, trdBudgetBinning);
172
173 // ploss vs (phi,eta) and layer
c2c78193 174 cout << "Container 11 :: Momentum loss" << endl;
69656036
AB
175 Int_t plossSteps[1] = {AliTRDcheckESD::kTRD};
176 UInt_t plossVars[5] = {AliTRDcheckESD::kTrackPhiTRD, AliTRDcheckESD::kTrackEtaTRD,
177 AliTRDcheckESD::kTrackPlossTRDlayer, AliTRDcheckESD::kTrackletLayer,
178 AliTRDcheckESD::kTrackCharge};
179 TArrayD plossBinning[5] = {TArrayD(181, phiParamLimits), TArrayD(91, etaLimits),
180 TArrayD(101, pLossLimits), TArrayD(7, layerLimits),
181 TArrayD(3, chargeLimits)};
182 checkESD->AddCFContainer("Ploss", "p loss vs (phi,eta,layer,charge)", 1, plossSteps, 5, plossVars, plossBinning);
183
184 // clusters per tracklet
c2c78193 185 cout << "Container 12 :: Clusters per tracklet" << endl;
69656036
AB
186 Int_t clustersSteps[1] = {AliTRDcheckESD::kTRD};
187 UInt_t clustersVars[5] = {AliTRDcheckESD::kTrackPhiTRD, AliTRDcheckESD::kTrackEtaTRD,
188 AliTRDcheckESD::kTrackletLayer, AliTRDcheckESD::kTrackletClusters,
189 AliTRDcheckESD::kTrackCharge};
190 TArrayD clustersBinning[5] = {TArrayD(181, phiParamLimits), TArrayD(91, etaLimits),
191 TArrayD(7, layerLimits), TArrayD(31, trackletClustersLimits),
192 TArrayD(3,chargeLimits)};
193 checkESD->AddCFContainer("clustersPerTracklet", "tracklet clusters vs (phi,eta,layer,charge)", 1, clustersSteps, 5, clustersVars, clustersBinning);
194
195 // clusters/crossed rows
c2c78193 196 cout << "Container 13 :: Clusters/crossed rows" << endl;
69656036
AB
197 Int_t clsRowsSteps[1] = {AliTRDcheckESD::kTRD};
198 UInt_t clsRowsVars[5] = {AliTRDcheckESD::kTrackPhiTRD, AliTRDcheckESD::kTrackEtaTRD,
199 AliTRDcheckESD::kTrackletLayer, AliTRDcheckESD::kTrackletClustersVsRows,
200 AliTRDcheckESD::kTrackCharge};
201 TArrayD clsRowsBinning[5] = {TArrayD(181, phiParamLimits), TArrayD(91, etaLimits),
202 TArrayD(7, layerLimits), TArrayD(31, trackletClsRowsLimits),
203 TArrayD(3,chargeLimits)};
204 checkESD->AddCFContainer("clustersVsRows", "tracklet/rows vs (phi,eta,layer,charge)", 1, clsRowsSteps, 5, clsRowsVars, clsRowsBinning);
205/*
206 // outer param radius
207 cout << "Container 13 :: Outer param" << endl;
208 Int_t outerParamSteps[1] = {AliTRDcheckESD::kTPCreference};
209 UInt_t outerParamVars[5] = {AliTRDcheckESD::kTrackPhiTRD, AliTRDcheckESD::kTrackEtaTRD,
210 AliTRDcheckESD::kTrackOuterParamRadius, AliTRDcheckESD::kTrackTrdTracklets,
211 AliTRDcheckESD::kTrackPt};
212 TArrayD outerParamBinning[5] = {TArrayD(181, phiParamLimits), TArrayD(91, etaLimits),
213 TArrayD(51, outerParamRadLimits), TArrayD(8,trdTrkltsLimits),
214 TArrayD(19, ptLimits)};
215 checkESD->AddCFContainer("outerParam", "outer param radius vs (phi,eta,pt,n-tracklets)", 1, outerParamSteps, 5, outerParamVars, outerParamBinning);
216*/
69656036
AB
217}
218