]>
Commit | Line | Data |
---|---|---|
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 | ||
11 | AliESDtrackCuts* SetupESDcuts(); | |
12 | void AddCFContainers(AliTRDcheckESD* checkESD); | |
13 | ||
14 | void 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 | ||
36 | AliESDtrackCuts* 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 | ||
52 | void 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 |