]>
Commit | Line | Data |
---|---|---|
890973b8 | 1 | void InitHistograms(AliDielectron *die, Int_t cutDefinition); |
f6a71c64 | 2 | void InitCF(AliDielectron* die, Int_t cutDefinition); |
890973b8 | 3 | |
b863bc83 | 4 | void SetupEventCuts(AliDielectron *die, ULong64_t triggers); |
890973b8 | 5 | void SetupTrackCuts(AliDielectron *die, Int_t cutDefinition); |
b863bc83 | 6 | void SetupPairCuts(AliDielectron *die, Int_t cutDefinition); |
ab5dc7f9 | 7 | void SetupV0Cuts( AliDielectron *die, Int_t cutDefinition); |
8 | ||
9 | void ConfigEvtPlane(AliDielectron *die, Int_t cutDefinition); | |
890973b8 | 10 | |
5ab640ac | 11 | void AddMCSignals(AliDielectron *die); |
12 | ||
890973b8 | 13 | void SetEtaCorrection(); |
14 | TVectorD *GetRunNumbers(); | |
15 | ||
ab5dc7f9 | 16 | TString names=("QA;PIDQA"); |
17 | enum { kQA=0, kQApid }; | |
890973b8 | 18 | |
19 | TObjArray *arrNames=names.Tokenize(";"); | |
20 | const Int_t nDie=arrNames->GetEntries(); | |
21 | ||
b863bc83 | 22 | Bool_t isESD = kTRUE; |
23 | Bool_t hasMC = kFALSE; | |
24 | TString list = gSystem->Getenv("LIST"); | |
890973b8 | 25 | |
ab5dc7f9 | 26 | AliDielectron* ConfigJpsiQA_jpsi_PbPb(Int_t cutDefinition, TString prod="", |
27 | ULong64_t triggers=AliVEvent::kCentral | AliVEvent::kSemiCentral | AliVEvent::kMB) | |
890973b8 | 28 | { |
29 | // | |
30 | // Setup the instance of AliDielectron | |
31 | // | |
32 | ||
33 | // find mc or not? | |
34 | if( list.IsNull()) list=prod; | |
35 | if( list.Contains("LHC10h") || list.Contains("LHC11h") ) hasMC=kFALSE; | |
36 | if( list.Contains("LHC11a10") || list.Contains("LHC12a17") ) hasMC=kTRUE; | |
37 | ||
38 | //ESD handler? | |
39 | isESD=(AliAnalysisManager::GetAnalysisManager()->GetInputEventHandler()->IsA()==AliESDInputHandler::Class()); | |
40 | ||
41 | // switch off some configurations | |
42 | if(hasMC) { // MONTE CARLO | |
43 | switch(cutDefinition) { | |
ab5dc7f9 | 44 | //case kQApid: return 0x0; |
890973b8 | 45 | } |
46 | } else { // COLLISION DATA | |
47 | switch(cutDefinition) { | |
ab5dc7f9 | 48 | // case kQA: return 0x0; |
49 | // case kQApid: return 0x0; | |
890973b8 | 50 | } |
51 | } | |
52 | ||
53 | // create the actual framework object | |
54 | TString name=Form("%02d",cutDefinition); | |
ab5dc7f9 | 55 | if (cutDefinition<arrNames->GetEntriesFast()) name=arrNames->At(cutDefinition)->GetName(); |
56 | printf(" Adding %s%s config %s for %s \n",(isESD?"ESD":"AOD"),(hasMC?" MC":""),name.Data(),list.Data()); | |
57 | ||
58 | // init AliDielectron | |
59 | AliDielectron *die = new AliDielectron(Form("%s",name.Data()), Form("QA config: %s",name.Data())); | |
890973b8 | 60 | die->SetHasMC(hasMC); |
61 | ||
423cc7ef | 62 | // cut setup |
b863bc83 | 63 | SetupEventCuts(die,triggers); |
15f4cb18 | 64 | SetupTrackCuts(die,cutDefinition); |
ab5dc7f9 | 65 | if(cutDefinition!=kQApid) SetupPairCuts(die,cutDefinition); |
66 | SetupV0Cuts(die,cutDefinition); | |
890973b8 | 67 | |
5ab640ac | 68 | // MC signals |
69 | if(hasMC) { | |
70 | AddMCSignals(die); | |
71 | printf(" Add %d MC signals \n",die->GetMCSignals()->GetEntriesFast()); | |
72 | } | |
890973b8 | 73 | // histogram setup |
74 | InitHistograms(die,cutDefinition); | |
ab5dc7f9 | 75 | //printf(" Add %d classes to the manager \n",die->GetHistogramList()->GetEntries()); |
890973b8 | 76 | |
f6a71c64 | 77 | // CF container setup |
ab5dc7f9 | 78 | //InitCF(die,cutDefinition); |
890973b8 | 79 | |
ab5dc7f9 | 80 | // tpc event plane configuration |
81 | // ConfigEvtPlane(die,cutDefinition); | |
34107494 | 82 | |
890973b8 | 83 | // prefilter settings |
ab5dc7f9 | 84 | // if(cutDefinition==kQA) die->SetNoPairing(); |
85 | // else | |
1c96a71e | 86 | die->SetPreFilterUnlikeOnly(); |
890973b8 | 87 | //die->SetPreFilterAllSigns(); |
88 | ||
89 | // setup eta correction | |
90 | // if(isESD && list.Contains("LHC10h")) SetEtaCorrection(); | |
91 | ||
92 | // VZERO calibration | |
93 | TString trainRoot=gSystem->Getenv("TRAIN_ROOT"); | |
94 | if (!trainRoot.IsNull()) { | |
95 | die->SetVZEROCalibrationFilename("$TRAIN_ROOT/util/dielectron/dielectron/VzeroCalibrationLHC10h.root"); | |
96 | die->SetVZERORecenteringFilename("$TRAIN_ROOT/util/dielectron/dielectron/VzeroRecenteringLHC10h.root"); | |
97 | } | |
98 | ||
99 | return die; | |
100 | } | |
101 | ||
423cc7ef | 102 | //______________________________________________________________________________________ |
b863bc83 | 103 | void SetupEventCuts(AliDielectron *die, ULong64_t triggers) |
423cc7ef | 104 | { |
105 | // | |
106 | // Setup the event cuts | |
107 | // | |
108 | ||
b863bc83 | 109 | // trigger specific centrality cuts (reject trigger inefficiencies) |
90c1ae2d | 110 | Double_t minCent=0.0, maxCent=80.; |
111 | if(!hasMC) { | |
112 | switch(triggers) { | |
113 | case AliVEvent::kCentral: minCent= 0.; maxCent= 9.; break; | |
114 | case AliVEvent::kSemiCentral: minCent=12.; maxCent=53.; break; | |
115 | case AliVEvent::kMB: minCent= 0.; maxCent=80.; break; | |
116 | default: minCent= 0.; maxCent=80.; break; | |
117 | } | |
b863bc83 | 118 | } |
119 | ||
423cc7ef | 120 | AliDielectronEventCuts *eventCuts=new AliDielectronEventCuts("eventCuts","eventCuts"); |
121 | if(!isESD) eventCuts->SetVertexType(AliDielectronEventCuts::kVtxAny); | |
122 | eventCuts->SetRequireVertex(); | |
123 | eventCuts->SetMinVtxContributors(1); | |
124 | eventCuts->SetVertexZ(-10.,+10.); | |
ab5dc7f9 | 125 | eventCuts->SetCentralityRange(minCent,maxCent); |
90c1ae2d | 126 | |
127 | /* | |
128 | TF1 *fMean = new TF1("fMean", "pol1", 0,25e+3); | |
129 | fMean->SetParameters(631.301, 1.49836); | |
130 | TF1 *fSigma = new TF1("fSigma","[0]+sqrt([1]*x+[2])",0,25e+3); | |
131 | fSigma->SetParameters(-25.7843, 32.8055, 35275.7); | |
132 | eventCuts->SetCutOnV0MultipicityNTrks(fMean, fSigma, 4.0); | |
133 | */ | |
134 | ||
423cc7ef | 135 | eventCuts->Print(); |
136 | die->GetEventFilter().AddCuts(eventCuts); | |
137 | ||
138 | } | |
139 | ||
890973b8 | 140 | //______________________________________________________________________________________ |
141 | void SetupTrackCuts(AliDielectron *die, Int_t cutDefinition) | |
142 | { | |
143 | // | |
144 | // Setup the track cuts | |
145 | // | |
146 | ||
147 | // Quality cuts | |
148 | AliDielectronCutGroup* cuts = new AliDielectronCutGroup("cuts","cuts",AliDielectronCutGroup::kCompAND); | |
890973b8 | 149 | die->GetTrackFilter().AddCuts(cuts); |
150 | ||
90c1ae2d | 151 | // AliDielectronVarCuts *mc = new AliDielectronVarCuts("MCCut","MCCut"); |
152 | //mc->AddCut(AliDielectronVarManager::kHasCocktailMother, 0); // exclude enhanced signals | |
153 | //mc->AddCut(AliDielectronVarManager::kHasCocktailGrandMother, 0); // exclude enhanced signals | |
423cc7ef | 154 | // mc->AddCut(AliDielectronVarManager::kPdgCode, -6, 6, kTRUE); // exclude quarks to speed up |
155 | // mc->AddCut(AliDielectronVarManager::kPdgCode, 21, 21, kTRUE); // exclude gluons to speed up | |
90c1ae2d | 156 | //if(hasMC) { |
157 | // cuts->AddCut(mc); | |
158 | // mc->Print(); | |
159 | //} | |
423cc7ef | 160 | |
890973b8 | 161 | // AOD track filter (needs to be first cut to speed up) |
162 | AliDielectronTrackCuts *trkFilter = new AliDielectronTrackCuts("TrkFilter","TrkFilter"); | |
890973b8 | 163 | trkFilter->SetAODFilterBit(AliDielectronTrackCuts::kTPCqual); |
2ed1b6ff | 164 | //if(!isESD) cuts->AddCut(trkFilter); |
890973b8 | 165 | |
90c1ae2d | 166 | AliDielectronTrackCuts *trkCuts = new AliDielectronTrackCuts("TrkCuts","TrkCuts"); |
ab5dc7f9 | 167 | if(cutDefinition==kQA) trkCuts->SetITSclusterCut(AliDielectronTrackCuts::kOneOf, 15); // ITS-4 = 1+2+4+8 |
168 | if(cutDefinition==kQA) trkCuts->SetRequireITSRefit(kTRUE); | |
169 | if(cutDefinition!=kQA) trkCuts->SetMinNCrossedRowsOverFindable(0.6); | |
90c1ae2d | 170 | trkCuts->SetRequireTPCRefit(kTRUE); |
171 | cuts->AddCut(trkCuts); | |
172 | ||
890973b8 | 173 | // track cuts ESD and AOD |
174 | AliDielectronVarCuts *varCuts = new AliDielectronVarCuts("VarCuts","VarCuts"); | |
ab5dc7f9 | 175 | if(cutDefinition==kQA) varCuts->AddCut(AliDielectronVarManager::kPt,0.8,1e30); //1.1 |
176 | if(cutDefinition==kQA) varCuts->AddCut(AliDielectronVarManager::kImpactParXY, -1.0, 1.0); | |
177 | if(cutDefinition==kQA) varCuts->AddCut(AliDielectronVarManager::kImpactParZ, -3.0, 3.0); | |
178 | if(cutDefinition==kQA) varCuts->AddCut(AliDielectronVarManager::kTOFbeta, 0.2, 0.9, kTRUE); | |
15f4cb18 | 179 | varCuts->AddCut(AliDielectronVarManager::kEta, -0.9, 0.9); |
890973b8 | 180 | varCuts->AddCut(AliDielectronVarManager::kTPCchi2Cl, 0.0, 4.0); |
890973b8 | 181 | varCuts->AddCut(AliDielectronVarManager::kNclsTPC, 50.0, 160.0); |
15f4cb18 | 182 | varCuts->AddCut(AliDielectronVarManager::kKinkIndex0, 0.0); |
890973b8 | 183 | cuts->AddCut(varCuts); |
184 | ||
890973b8 | 185 | /* vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv PID CUTS vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv */ |
186 | AliDielectronPID *pid = new AliDielectronPID("PID","PID"); | |
890973b8 | 187 | ////////////////////////////////// DATA |
188 | if(!hasMC) { | |
189 | // TPC | |
ab5dc7f9 | 190 | pid->AddCut(AliDielectronPID::kTPC,AliPID::kElectron, -3.,3.0); |
191 | if(cutDefinition==kQA) pid->AddCut(AliDielectronPID::kTPC,AliPID::kPion, -100.,4.0,0.,0.,kTRUE); | |
192 | // pid->AddCut(AliDielectronPID::kTPC,AliPID::kProton, -100.,3.5,0.,0.,kTRUE); | |
890973b8 | 193 | |
194 | // TOF | |
ab5dc7f9 | 195 | //pid->AddCut(AliDielectronPID::kTOF,AliPID::kElectron,-5,5.,0.,0.,kFALSE,AliDielectronPID::kIfAvailable); |
196 | pid->AddCut(AliDielectronPID::kTOF,AliPID::kElectron,-3,5.,0.,0.,kFALSE,AliDielectronPID::kIfAvailable); | |
890973b8 | 197 | |
198 | // TRD 1- or 2-dimensonal | |
199 | /* pid->AddCut(AliDielectronPID::kTRDeleEff,AliPID::kElectron,.8,1.,3.5.,6.,kFALSE, | |
200 | AliDielectronPID::kIfAvailable,AliDielectronVarManager::kTRDpidQuality); | |
201 | pid->AddCut(AliDielectronPID::kTRDeleEff2D,AliPID::kElectron,.8,1.,3.5.,6.,kFALSE, | |
202 | AliDielectronPID::kIfAvailable,AliDielectronVarManager::kTRDpidQuality); | |
203 | */ | |
204 | } | |
205 | ||
206 | ////////////////////////////////// MC | |
207 | if(hasMC) { | |
208 | ||
5ab640ac | 209 | // TPC |
210 | pid->AddCut(AliDielectronPID::kTPC,AliPID::kElectron, -4.,4.0); | |
211 | pid->AddCut(AliDielectronPID::kTPC,AliPID::kPion, -100.,4.0,0.,0.,kTRUE); | |
212 | pid->AddCut(AliDielectronPID::kTPC,AliPID::kProton, -100.,3.5,0.,0.,kTRUE); | |
213 | ||
214 | // TOF | |
215 | pid->AddCut(AliDielectronPID::kTOF,AliPID::kElectron,-5,5.,0.,0.,kFALSE,AliDielectronPID::kIfAvailable); | |
216 | ||
890973b8 | 217 | } //hasMC |
218 | ||
ab5dc7f9 | 219 | cuts->AddCut(pid); |
890973b8 | 220 | /* ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ PID CUTS ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^*/ |
221 | ||
222 | ||
223 | // exclude conversion electrons selected by the tender | |
224 | AliDielectronTrackCuts *noconv=new AliDielectronTrackCuts("noConv","noConv"); | |
225 | noconv->SetV0DaughterCut(AliPID::kElectron,kTRUE); | |
2ed1b6ff | 226 | //cuts->AddCut(noconv); |
227 | ||
ab5dc7f9 | 228 | |
229 | // cuts->Print(); | |
230 | ||
231 | die->GetTrackFilter().GetCuts()->ls(); | |
2ed1b6ff | 232 | } |
233 | ||
890973b8 | 234 | //______________________________________________________________________________________ |
235 | void SetupPairCuts(AliDielectron *die, Int_t cutDefinition) | |
236 | { | |
237 | // | |
238 | // Setup the pair cuts | |
239 | // | |
240 | ||
241 | // conversion rejection | |
77e2c705 | 242 | Double_t gCut; |
243 | switch(cutDefinition) { | |
ab5dc7f9 | 244 | case kQA: gCut = 0.05; break; |
245 | case kQApid: gCut = 0.00; return; | |
246 | default: gCut = 0.05; | |
77e2c705 | 247 | } |
248 | AliDielectronVarCuts *gammaCuts = new AliDielectronVarCuts("GammaCuts","GammaCuts"); | |
77e2c705 | 249 | gammaCuts->AddCut(AliDielectronVarManager::kM, 0.0, gCut); |
250 | gammaCuts->Print(); | |
251 | die->GetPairPreFilter().AddCuts(gammaCuts); | |
890973b8 | 252 | |
253 | // rapidity selection | |
1c96a71e | 254 | //AliDielectronVarCuts *rapCut=new AliDielectronVarCuts("|Y|<.9","|Y|<.9"); |
255 | //rapCut->AddCut(AliDielectronVarManager::kY,-0.9,0.9); | |
256 | //die->GetPairFilter().AddCuts(rapCut); | |
890973b8 | 257 | |
90c1ae2d | 258 | // minv cut (for better jpsi candidate to mc comparison) |
259 | AliDielectronVarCuts *minvCut=new AliDielectronVarCuts("PairCut","PairCut"); | |
260 | minvCut->AddCut(AliDielectronVarManager::kM,2.92,3,.16); | |
261 | if(!hasMC) { | |
262 | // minvCut->Print(); | |
263 | // die->GetPairFilter().AddCuts(minvCut); | |
264 | } | |
ab5dc7f9 | 265 | |
266 | // gamma selection | |
267 | AliDielectronVarCuts *gamma = new AliDielectronVarCuts("Gamma","Gamma"); | |
268 | gamma->AddCut(AliDielectronVarManager::kOpeningAngle, 0.0, 0.035); // 0.1 | |
269 | gamma->AddCut(AliDielectronVarManager::kCosPointingAngle, TMath::Cos(0.02), 1.0); | |
270 | gamma->AddCut(AliDielectronVarManager::kLegDist, 0.0, 0.25); | |
271 | gamma->AddCut(AliDielectronVarManager::kR, 3.0, 90.0); | |
272 | gamma->AddCut(AliDielectronVarManager::kPsiPair, 0.0, 0.05); | |
273 | gamma->AddCut(AliDielectronVarManager::kChi2NDF, 0.0, 10.0); | |
274 | gamma->AddCut(AliDielectronVarManager::kM, 0.0, 0.05); | |
275 | if(cutDefinition==kQApid) { | |
276 | // gamma->Print(); | |
277 | // die->GetPairFilter().AddCuts(gamma); | |
278 | } | |
279 | ||
280 | } | |
281 | ||
282 | //______________________________________________________________________________________ | |
283 | void SetupV0Cuts(AliDielectron *die, Int_t cutDefinition) | |
284 | { | |
285 | // | |
286 | // Setup the V0 cuts | |
287 | // | |
288 | ||
289 | if(cutDefinition!=kQApid) return; | |
290 | ||
291 | // add to cut group | |
292 | TIter next(die->GetTrackFilter().GetCuts()); | |
293 | AliAnalysisCuts *cuts; | |
294 | while((cuts = (AliAnalysisCuts*)next())) { | |
295 | if(cuts->IsA() == AliDielectronCutGroup::Class()) break; | |
296 | } | |
297 | ||
298 | AliDielectronV0Cuts *gammaV0Cuts = new AliDielectronV0Cuts("IsGamma","IsGamma"); | |
299 | gammaV0Cuts->SetPdgCodes(22,11,11); | |
300 | //gammaV0Cuts->SetDefaultPID(13); // TPC+-3.5 TOF+-4 | |
301 | gammaV0Cuts->SetDefaultPID(7); // TPC+-10 TOF+-3 required | |
302 | gammaV0Cuts->AddCut(AliDielectronVarManager::kCosPointingAngle, TMath::Cos(0.02), 1.0 ); | |
303 | gammaV0Cuts->AddCut(AliDielectronVarManager::kChi2NDF, 0.0, 10.0 ); | |
304 | gammaV0Cuts->AddCut(AliDielectronVarManager::kLegDist, 0.0, 0.25); | |
305 | gammaV0Cuts->AddCut(AliDielectronVarManager::kR, 3.0, 90.0 ); | |
306 | gammaV0Cuts->AddCut(AliDielectronVarManager::kPsiPair, 0.0, 0.05); | |
307 | gammaV0Cuts->AddCut(AliDielectronVarManager::kM, 0.0, 0.05); | |
308 | // gammaV0Cuts->AddCut(AliDielectronVarManager::kOpeningAngle, 0.0, 0.1 ); | |
309 | gammaV0Cuts->AddCut(AliDielectronVarManager::kArmPt, 0.0, 0.05); | |
310 | // gammaV0Cuts->AddCut(AliDielectronVarManager::kArmAlpha, -0.35, 0.35); // not sure if this works fine | |
311 | gammaV0Cuts->SetExcludeTracks(kFALSE); // inclusion | |
312 | gammaV0Cuts->Print(); | |
313 | ||
314 | // efficiency | |
315 | // const Double_t cutQTG < 0.05; | |
316 | // purity | |
317 | // const Double_t |cutAlphaG| < 0.35; && const Double_t cutQTG < 0.05; | |
318 | // const Double_t |cutAlphaG2|[2] = {0.6, 0.8}; && const Double_t cutQTG2 < 0.04; // high pt gammas | |
319 | ||
320 | ////////// | |
321 | /* // Hans configuration | |
322 | fMaxEta(1.4), | |
323 | fMinR(10.), | |
324 | fMaxR(180.), | |
325 | fMaxChi2NDF(5.), //100 | |
326 | fMaxPsi(.05), //2 | |
327 | fMinCosP(0.9997), //0.97 | |
328 | fMinDaughterPt(.05), | |
329 | fMinTPCNcls(70), //40 | |
330 | fMaxAsym(.06), | |
331 | fMaxNSigEleTPC(4.), | |
332 | fMaxNSigEleTPCLowP(3.), //4. | |
333 | fMinNSigPioTPC(1.), | |
334 | fMinNSigKaoTPC(1.), | |
335 | fMinNSigProTPC(1.), | |
336 | fMaxNSigEleTOF(3.), | |
337 | */ | |
338 | ||
339 | ||
340 | ||
341 | ||
342 | ||
343 | ||
344 | if(cuts) | |
345 | ((AliDielectronCutGroup*)cuts)->AddCut(gammaV0Cuts); | |
346 | else | |
347 | die->GetTrackFilter().AddCuts(gammaV0Cuts); | |
348 | } | |
349 | ||
350 | //______________________________________________________________________________________ | |
351 | void ConfigEvtPlane(AliDielectron *die, Int_t cutDefinition) | |
352 | { | |
353 | // | |
354 | // Configurate the TPC event plane | |
355 | // | |
356 | ||
357 | Double_t gGap = 0.0; | |
358 | AliDielectronVarCuts *poi = new AliDielectronVarCuts("PoI","PoI"); | |
359 | poi->AddCut(AliDielectronVarManager::kM,2.92,3.20); // particles of interest, jpsi mass window | |
360 | die->GetEventPlanePOIPreFilter().AddCuts(poi); | |
361 | ||
362 | // eta gap in tpc event plane | |
363 | //AliDielectronVarCuts *etaGap = new AliDielectronVarCuts(AliDielectronVarManager::GetValueName(AliDielectronVarManager::kEta),"etaGap"); | |
364 | //etaGap->AddCut(AliDielectronVarManager::kEta,-1*gGap,gGap,kTRUE); | |
365 | //die->GetEventPlanePreFilter().AddCuts(etaGap); | |
366 | //if(cutDefinition==kSubLS) die->SetLikeSignSubEvents(); | |
367 | ||
368 | die->SetPreFilterEventPlane(); | |
890973b8 | 369 | } |
370 | ||
371 | //______________________________________________________________________________________ | |
372 | void InitHistograms(AliDielectron *die, Int_t cutDefinition) | |
373 | { | |
374 | // | |
375 | // Initialise the histograms | |
376 | // | |
377 | ||
378 | // booleans for histo selection | |
ab5dc7f9 | 379 | Bool_t bHistEvtQA=kFALSE, bHistTrackQA=kFALSE, bHistPairQA = kFALSE, bHistPidQA=kFALSE; |
890973b8 | 380 | switch (cutDefinition) { |
ab5dc7f9 | 381 | case kQA: bHistEvtQA=kTRUE; bHistTrackQA=kTRUE; bHistPairQA=kTRUE; bHistPidQA=kFALSE; break; |
382 | case kQApid: bHistEvtQA=kFALSE; bHistTrackQA=kFALSE; bHistPairQA=kFALSE; bHistPidQA=kTRUE; break; | |
890973b8 | 383 | } |
384 | ||
890973b8 | 385 | //Setup histogram Manager |
386 | AliDielectronHistos *histos=new AliDielectronHistos(die->GetName(),die->GetTitle()); | |
387 | ||
890973b8 | 388 | ////// EVENT HISTOS ///// |
389 | if(bHistEvtQA) { | |
390 | ||
391 | //add histograms to event class | |
392 | histos->AddClass("Event"); | |
ab5dc7f9 | 393 | |
394 | Int_t binsev[] ={ 125, 100, 100, 100, 100, 100, 55 }; | |
395 | Double_t minev[] ={ 0., 0., 0., 0., 0., 0., 0. }; | |
396 | Double_t maxev[] ={25000.,20000.,20000.,4000.,4000., 4000., 1.1}; | |
397 | UInt_t varev[] ={AliDielectronVarManager::kMultV0, | |
398 | AliDielectronVarManager::kNTrk, | |
399 | AliDielectronVarManager::kRefMult, | |
400 | AliDielectronVarManager::kNacc, | |
401 | AliDielectronVarManager::kRefMultTPConly, | |
402 | AliDielectronVarManager::kNVtxContrib, | |
403 | AliDielectronVarManager::kMatchEffITSTPC }; | |
404 | histos->UserSparse("Event", 7, binsev, minev, maxev, varev); | |
405 | ||
5ab640ac | 406 | histos->UserHistogram("Event","","", 80,0.,80., AliDielectronVarManager::kCentrality); |
ab5dc7f9 | 407 | |
5ab640ac | 408 | histos->UserHistogram("Event","","", GetRunNumbers(), AliDielectronVarManager::kRunNumber); |
34107494 | 409 | histos->UserHistogram("Event","","", GetRunNumbers(), AliDielectronHelper::MakeLinBinning(80,0.,80.), |
890973b8 | 410 | AliDielectronVarManager::kRunNumber, AliDielectronVarManager::kCentrality); |
34107494 | 411 | histos->UserProfile("Event","","", AliDielectronVarManager::kCentrality, GetRunNumbers(), AliDielectronVarManager::kRunNumber); |
412 | histos->UserProfile("Event","","", AliDielectronVarManager::kCentralitySPD, GetRunNumbers(), AliDielectronVarManager::kRunNumber); | |
413 | histos->UserProfile("Event","","", AliDielectronVarManager::kZvPrim, GetRunNumbers(), AliDielectronVarManager::kRunNumber); | |
414 | histos->UserProfile("Event","","", AliDielectronVarManager::kZvPrim, GetRunNumbers(), AliDielectronVarManager::kRunNumber, "s;-10;10"); | |
415 | histos->UserProfile("Event","","", AliDielectronVarManager::kZvPrim, AliDielectronHelper::MakeLinBinning(80,0.,80.), AliDielectronVarManager::kCentrality); | |
0c09cae4 | 416 | histos->UserProfile("Event","","", AliDielectronVarManager::kZvPrim, 250,0.,25000., AliDielectronVarManager::kMultV0A); |
417 | histos->UserProfile("Event","","", AliDielectronVarManager::kZvPrim, 250,0.,25000., AliDielectronVarManager::kMultV0C); | |
34107494 | 418 | histos->UserHistogram("Event","","", GetRunNumbers(), AliDielectronHelper::MakeLinBinning(150,-15.,15.), |
890973b8 | 419 | AliDielectronVarManager::kRunNumber, AliDielectronVarManager::kZvPrim); |
5ab640ac | 420 | histos->UserHistogram("Event","","", 80.,0.,80., 150,-15.,15., |
421 | AliDielectronVarManager::kCentrality, AliDielectronVarManager::kZvPrim); | |
422 | ||
2ed1b6ff | 423 | histos->UserHistogram("Event","","", 300.,0.,6000., 300,0.,6000., |
424 | AliDielectronVarManager::kNVtxContrib, AliDielectronVarManager::kNVtxContribTPC); | |
425 | histos->UserHistogram("Event","","", 200.,0.,4000., 200,0.,4000., | |
426 | AliDielectronVarManager::kNVtxContrib, AliDielectronVarManager::kNacc); | |
427 | ||
428 | ||
5ab640ac | 429 | histos->UserHistogram("Event","","", GetRunNumbers(), AliDielectronHelper::MakeLinBinning(250,0.,25000.), |
430 | AliDielectronVarManager::kRunNumber, AliDielectronVarManager::kMultV0); | |
431 | histos->UserHistogram("Event","","", 80.,0.,80., 250,0.,25000., | |
432 | AliDielectronVarManager::kCentrality, AliDielectronVarManager::kMultV0); | |
433 | histos->UserProfile("Event","","", AliDielectronVarManager::kMultV0, 80.,0.,80., AliDielectronVarManager::kCentrality); | |
434 | histos->UserProfile("Event","","", AliDielectronVarManager::kMultV0, 80.,0.,80., AliDielectronVarManager::kCentralitySPD); | |
435 | histos->UserProfile("Event","","", AliDielectronVarManager::kMultV0, GetRunNumbers(), AliDielectronVarManager::kRunNumber); | |
0c09cae4 | 436 | histos->UserHistogram("Event","","", 250,0.,25000., AliDielectronVarManager::kMultV0); |
437 | histos->UserHistogram("Event","","", 250,0.,25000., AliDielectronVarManager::kMultV0A); | |
438 | histos->UserHistogram("Event","","", 250,0.,25000., AliDielectronVarManager::kMultV0C); | |
439 | histos->UserHistogram("Event","","", 200,0.,20000., 250,0.,25000., AliDielectronVarManager::kNTrk, AliDielectronVarManager::kMultV0 ); | |
440 | histos->UserHistogram("Event","","", 200,0.,20000., 250,0.,25000., AliDielectronVarManager::kNTrk, AliDielectronVarManager::kMultV0A); | |
441 | histos->UserHistogram("Event","","", 200,0.,20000., 250,0.,25000., AliDielectronVarManager::kNTrk, AliDielectronVarManager::kMultV0C); | |
5ab640ac | 442 | |
2ed1b6ff | 443 | |
444 | ||
90c1ae2d | 445 | histos->UserHistogram("Event","","", |
446 | AliDielectronHelper::MakeLinBinning(200,0.,20000.), | |
447 | AliDielectronHelper::MakeLinBinning(250,0.,25000.), | |
448 | GetRunNumbers(), | |
449 | AliDielectronVarManager::kNTrk, AliDielectronVarManager::kMultV0A, AliDielectronVarManager::kRunNumber); | |
450 | histos->UserHistogram("Event","","", | |
451 | AliDielectronHelper::MakeLinBinning(200,0.,20000.), | |
452 | AliDielectronHelper::MakeLinBinning(250,0.,25000.), | |
453 | GetRunNumbers(), | |
454 | AliDielectronVarManager::kNTrk, AliDielectronVarManager::kMultV0C, AliDielectronVarManager::kRunNumber); | |
455 | ||
15f4cb18 | 456 | histos->UserHistogram("Event","","", 110,0.,1.1, AliDielectronVarManager::kMatchEffITSTPC); |
457 | histos->UserHistogram("Event","","", 200,0.,20000., 110,0.,1.1, | |
458 | AliDielectronVarManager::kNTrk, AliDielectronVarManager::kMatchEffITSTPC); | |
5ab640ac | 459 | histos->UserHistogram("Event","","", 80.,0.,80., 80.,0.,80., AliDielectronVarManager::kCentrality, AliDielectronVarManager::kCentralitySPD); |
460 | ||
34107494 | 461 | |
462 | histos->UserHistogram("Event","","", GetRunNumbers(), AliDielectronHelper::MakeLinBinning(100,-2.,+2.), | |
890973b8 | 463 | AliDielectronVarManager::kRunNumber, AliDielectronVarManager::kv0ArpH2); |
34107494 | 464 | histos->UserHistogram("Event","","", GetRunNumbers(), AliDielectronHelper::MakeLinBinning(100,-2.,+2.), |
890973b8 | 465 | AliDielectronVarManager::kRunNumber, AliDielectronVarManager::kv0CrpH2); |
2ed1b6ff | 466 | histos->UserHistogram("Event","","", GetRunNumbers(), AliDielectronHelper::MakeLinBinning(100,-2.,+2.), |
467 | AliDielectronVarManager::kRunNumber, AliDielectronVarManager::kTPCrpH2uc); | |
90c1ae2d | 468 | histos->UserHistogram("Event","","", 80,0.,80., 100,-2.,+2., |
469 | AliDielectronVarManager::kCentrality, AliDielectronVarManager::kv0CrpH2); | |
470 | histos->UserHistogram("Event","","", 80,0.,80., 100,-2.,+2., | |
471 | AliDielectronVarManager::kCentrality, AliDielectronVarManager::kv0ArpH2); | |
2ed1b6ff | 472 | histos->UserHistogram("Event","","", 80,0.,80., 100,-2.,+2., |
473 | AliDielectronVarManager::kCentrality, AliDielectronVarManager::kTPCrpH2uc); | |
474 | histos->UserHistogram("Event","","", 80,0.,80., 100,0.,250., | |
475 | AliDielectronVarManager::kCentrality, AliDielectronVarManager::kTPCmagH2uc); | |
890973b8 | 476 | } |
477 | ||
5ab640ac | 478 | ////// PAIR HISTOS ///// |
479 | if(bHistPairQA) { | |
480 | ||
481 | //add histograms to track class | |
482 | histos->SetReservedWords("Pair"); | |
483 | histos->AddClass(Form("Pair_%s",AliDielectron::PairClassName(AliDielectron::kEv1PM))); | |
484 | ||
485 | //add MC signal histograms to track class | |
0c09cae4 | 486 | if(die->GetMCSignals()) { |
487 | for (Int_t i=0; i<die->GetMCSignals()->GetEntriesFast(); ++i) | |
488 | histos->AddClass(Form("Pair_%s",die->GetMCSignals()->At(i)->GetName())); | |
489 | } | |
5ab640ac | 490 | |
491 | histos->UserHistogram("Pair","","", 20, 0.,10., AliDielectronVarManager::kPt); | |
492 | histos->UserHistogram("Pair","","", 200,-1.,+1., AliDielectronVarManager::kEta); | |
90c1ae2d | 493 | histos->UserHistogram("Pair","","", 180,-1.*TMath::Pi(),TMath::Pi(),AliDielectronVarManager::kPhi); |
5ab640ac | 494 | histos->UserHistogram("Pair","","", 180, 0.,TMath::Pi(), AliDielectronVarManager::kOpeningAngle); |
495 | histos->UserHistogram("Pair","","", 300, 0.,300*0.04, AliDielectronVarManager::kM); | |
90c1ae2d | 496 | histos->UserHistogram("Pair","","", 180, 0.,TMath::Pi(), AliDielectronVarManager::kPhivPair); |
497 | histos->UserHistogram("Pair","","", 200, 0.,1., AliDielectronVarManager::kCosPointingAngle); | |
498 | histos->UserHistogram("Pair","","", 200, 0.,20., AliDielectronVarManager::kR); | |
499 | histos->UserHistogram("Pair","","", 100,-1.,+1., AliDielectronVarManager::kThetaCS); | |
500 | ||
ab5dc7f9 | 501 | histos->UserHistogram("Pair","","", 200,-10.,+10., 125, 0.0, 2.5, AliDielectronVarManager::kArmAlpha, AliDielectronVarManager::kArmPt); |
502 | ||
90c1ae2d | 503 | if(hasMC) histos->UserHistogram("Pair","","",10000,-5000.5,4999.5, 300, 0.,300*0.04, AliDielectronVarManager::kPdgCode, AliDielectronVarManager::kM); |
5ab640ac | 504 | |
505 | histos->UserProfile("Pair","","", AliDielectronVarManager::kPt, GetRunNumbers(), AliDielectronVarManager::kRunNumber); | |
506 | histos->UserProfile("Pair","","", AliDielectronVarManager::kEta, GetRunNumbers(), AliDielectronVarManager::kRunNumber); | |
507 | histos->UserProfile("Pair","","", AliDielectronVarManager::kPhi, GetRunNumbers(), AliDielectronVarManager::kRunNumber); | |
5ab640ac | 508 | } |
509 | ||
510 | ////// TRACK HISTOS ///// | |
890973b8 | 511 | if(bHistTrackQA) { |
512 | ||
513 | //add histograms to track class | |
514 | histos->SetReservedWords("Track"); | |
ab5dc7f9 | 515 | // all tracks after all cuts |
516 | histos->AddClass(Form("Track_%s", AliDielectron::PairClassName(AliDielectron::kEv1PM))); | |
517 | // fill legs from OS pairs | |
518 | histos->AddClass(Form("Track_Legs_%s",AliDielectron::PairClassName(AliDielectron::kEv1PM))); | |
519 | ||
5ab640ac | 520 | //add MC signal histograms to track class |
0c09cae4 | 521 | if(die->GetMCSignals()) { |
522 | for (Int_t i=0; i<die->GetMCSignals()->GetEntriesFast(); ++i) | |
523 | histos->AddClass(Form("Track_Legs_%s",die->GetMCSignals()->At(i)->GetName())); | |
524 | } | |
5ab640ac | 525 | |
34107494 | 526 | histos->UserHistogram("Track","","", 400, 0.,20., AliDielectronVarManager::kPt); |
527 | histos->UserHistogram("Track","","", 200,-1.,+1., AliDielectronVarManager::kEta); | |
528 | histos->UserHistogram("Track","","", 180,0.,TMath::TwoPi(),AliDielectronVarManager::kPhi); | |
529 | histos->UserProfile("Track","","", AliDielectronVarManager::kPt, GetRunNumbers(), AliDielectronVarManager::kRunNumber); | |
530 | histos->UserProfile("Track","","", AliDielectronVarManager::kEta, GetRunNumbers(), AliDielectronVarManager::kRunNumber); | |
531 | histos->UserProfile("Track","","", AliDielectronVarManager::kPhi, GetRunNumbers(), AliDielectronVarManager::kRunNumber); | |
5ab640ac | 532 | histos->UserProfile("Track","","", AliDielectronVarManager::kPt, 80,0.,80., AliDielectronVarManager::kCentrality); |
533 | histos->UserProfile("Track","","", AliDielectronVarManager::kEta, 80,0.,80., AliDielectronVarManager::kCentrality); | |
534 | histos->UserProfile("Track","","", AliDielectronVarManager::kPhi, 80,0.,80., AliDielectronVarManager::kCentrality); | |
34107494 | 535 | |
536 | histos->UserHistogram("Track","","", 400,-1.,+1., AliDielectronVarManager::kImpactParXY); | |
537 | histos->UserHistogram("Track","","", 600,-3.,+3., AliDielectronVarManager::kImpactParZ); | |
538 | histos->UserProfile("Track","","", AliDielectronVarManager::kImpactParXY, | |
539 | 200,-1.,+1., 180,0.,TMath::TwoPi(), AliDielectronVarManager::kEta, AliDielectronVarManager::kPhi); | |
540 | histos->UserProfile("Track","","", AliDielectronVarManager::kImpactParZ, | |
541 | 200,-1.,+1., 180,0.,TMath::TwoPi(), AliDielectronVarManager::kEta, AliDielectronVarManager::kPhi); | |
542 | histos->UserProfile("Track","","", AliDielectronVarManager::kImpactParXY, GetRunNumbers(), AliDielectronVarManager::kRunNumber); | |
543 | histos->UserProfile("Track","","", AliDielectronVarManager::kImpactParZ, GetRunNumbers(), AliDielectronVarManager::kRunNumber); | |
890973b8 | 544 | |
545 | ||
546 | // TPC | |
34107494 | 547 | histos->UserHistogram("Track","","", 160,0.,160., AliDielectronVarManager::kNclsTPC); |
548 | histos->UserProfile("Track","","", AliDielectronVarManager::kNclsTPC, GetRunNumbers(), AliDielectronVarManager::kRunNumber); | |
549 | histos->UserProfile("Track","","", AliDielectronVarManager::kNclsTPC, 80, 0.,80., AliDielectronVarManager::kCentrality); | |
90c1ae2d | 550 | histos->UserProfile("Track","","", AliDielectronVarManager::kNclsTPC, 40, 0.,20., AliDielectronVarManager::kPt); |
34107494 | 551 | histos->UserProfile("Track","","", AliDielectronVarManager::kNclsTPC, |
552 | 200,-1.,+1., 180,0.,TMath::TwoPi(), AliDielectronVarManager::kEta, AliDielectronVarManager::kPhi); | |
553 | ||
90c1ae2d | 554 | |
34107494 | 555 | histos->UserHistogram("Track","","", 8,0.,8., AliDielectronVarManager::kTPCclsSegments); |
556 | histos->UserProfile("Track","","", AliDielectronVarManager::kTPCclsSegments, GetRunNumbers(), AliDielectronVarManager::kRunNumber); | |
557 | histos->UserProfile("Track","","", AliDielectronVarManager::kTPCclsSegments, 80, 0.,80., AliDielectronVarManager::kCentrality); | |
558 | histos->UserProfile("Track","", "", AliDielectronVarManager::kTPCclsSegments, | |
559 | 200,-1.,+1., 180,0.,TMath::TwoPi(), AliDielectronVarManager::kEta, AliDielectronVarManager::kPhi); | |
0c09cae4 | 560 | |
77e2c705 | 561 | histos->UserHistogram("Track","","", 110,0.,1.1, AliDielectronVarManager::kNFclsTPCfCross); |
562 | histos->UserProfile("Track","","", AliDielectronVarManager::kNFclsTPCfCross, GetRunNumbers(), AliDielectronVarManager::kRunNumber); | |
563 | histos->UserProfile("Track","","", AliDielectronVarManager::kNFclsTPCfCross, 80, 0.,80., AliDielectronVarManager::kCentrality); | |
564 | histos->UserProfile("Track","", "", AliDielectronVarManager::kNFclsTPCfCross, | |
0c09cae4 | 565 | 200,-1.,+1., 180,0.,TMath::TwoPi(), AliDielectronVarManager::kEta, AliDielectronVarManager::kPhi); |
566 | ||
890973b8 | 567 | // ITS |
34107494 | 568 | histos->UserHistogram("Track","","", 7,0.,7., AliDielectronVarManager::kNclsITS); |
569 | histos->UserProfile("Track","","", AliDielectronVarManager::kNclsITS, GetRunNumbers(), AliDielectronVarManager::kRunNumber); | |
570 | histos->UserProfile("Track","","", AliDielectronVarManager::kNclsITS, 80, 0.,80., AliDielectronVarManager::kCentrality); | |
90c1ae2d | 571 | histos->UserProfile("Track","","", AliDielectronVarManager::kNclsITS, 40, 0.,20., AliDielectronVarManager::kPt); |
34107494 | 572 | histos->UserProfile("Track","", "", AliDielectronVarManager::kNclsITS, |
573 | 200,-1.,+1., 180,0.,TMath::TwoPi(), AliDielectronVarManager::kEta, AliDielectronVarManager::kPhi); | |
b863bc83 | 574 | |
575 | histos->UserHistogram("Track","","", 7,0.,7., AliDielectronVarManager::kITSLayerFirstCls); | |
576 | histos->UserProfile("Track","", "", AliDielectronVarManager::kITSLayerFirstCls, | |
577 | 200,-1.,+1., 180,0.,TMath::TwoPi(), AliDielectronVarManager::kEta, AliDielectronVarManager::kPhi); | |
578 | ||
579 | // TRD | |
580 | histos->UserHistogram("Track","", "", 7, 0., 7., AliDielectronVarManager::kTRDpidQuality); | |
581 | histos->UserHistogram("Track","", "", 105,-1.,20., AliDielectronVarManager::kTRDchi2); | |
ab5dc7f9 | 582 | // TRD PID |
583 | // histos->UserHistogram("Track","", "", 100,0.0,5., 100,0.,6., AliDielectronVarManager::kPIn, AliDielectronVarManager::kTRDsignal); | |
584 | histos->UserHistogram("Track","","", 100,0.,1., AliDielectronVarManager::kTRDprobEle); | |
585 | histos->UserHistogram("Track","","", 100,0.,1., AliDielectronVarManager::kTRDprobPio); | |
586 | // histos->UserHistogram("Track","","", 100,0.,1., AliDielectronVarManager::kTRDprob2DEle); | |
587 | // histos->UserHistogram("Track","","", 100,0.,1., AliDielectronVarManager::kTRDprob2DPio); | |
77e2c705 | 588 | |
890973b8 | 589 | // TPC PID |
34107494 | 590 | histos->UserProfile("Track","","", AliDielectronVarManager::kTPCnSigmaEle, GetRunNumbers(), AliDielectronVarManager::kRunNumber); |
ab5dc7f9 | 591 | // histos->UserHistogram("Track","","", GetRunNumbers(), AliDielectronHelper::MakeLinBinning(200, 0.,200.), AliDielectronVarManager::kRunNumber, AliDielectronVarManager::kTPCSignal); |
34107494 | 592 | histos->UserHistogram("Track","","", GetRunNumbers(), AliDielectronHelper::MakeLinBinning(16, 0.,80.), AliDielectronHelper::MakeLinBinning(100, -5.,+5), |
890973b8 | 593 | AliDielectronVarManager::kRunNumber, AliDielectronVarManager::kCentrality, AliDielectronVarManager::kTPCnSigmaEle); |
34107494 | 594 | histos->UserHistogram("Track","","", GetRunNumbers(), AliDielectronHelper::MakeLinBinning(20, -1.,1.), AliDielectronHelper::MakeLinBinning(100, -5.,+5), |
890973b8 | 595 | AliDielectronVarManager::kRunNumber, AliDielectronVarManager::kEta, AliDielectronVarManager::kTPCnSigmaEle); |
34107494 | 596 | histos->UserHistogram("Track","","", GetRunNumbers(), AliDielectronHelper::MakeLinBinning(18, 0.,TMath::TwoPi()), AliDielectronHelper::MakeLinBinning(100, -5.,+5), |
890973b8 | 597 | AliDielectronVarManager::kRunNumber, AliDielectronVarManager::kPhi, AliDielectronVarManager::kTPCnSigmaEle); |
598 | ||
599 | // TOF PID | |
34107494 | 600 | histos->UserHistogram("Track","", "", 100,-10.,+10., AliDielectronVarManager::kTOFnSigmaEle); |
5ab640ac | 601 | histos->UserHistogram("Track","", "", 250,0.0,5., 100,-10.,+10., AliDielectronVarManager::kPIn, AliDielectronVarManager::kTOFnSigmaEle); |
34107494 | 602 | histos->UserProfile("Track","","", AliDielectronVarManager::kTOFnSigmaEle, GetRunNumbers(), AliDielectronVarManager::kRunNumber, "h;-10;+10"); |
603 | histos->UserProfile("Track","","", AliDielectronVarManager::kTOFnSigmaEle, | |
604 | GetRunNumbers(), AliDielectronHelper::MakeLinBinning(16, 0.,80.), AliDielectronVarManager::kRunNumber, AliDielectronVarManager::kCentrality,"h;-10;+10"); | |
605 | histos->UserProfile("Track","","", AliDielectronVarManager::kTOFnSigmaEle, | |
890973b8 | 606 | AliDielectronHelper::MakeLinBinning(20, -1.,+1.), AliDielectronHelper::MakeLinBinning(18, 0.,TMath::TwoPi()), |
607 | AliDielectronVarManager::kEta, AliDielectronVarManager::kPhi, "h;-10;+10"); | |
890973b8 | 608 | |
423cc7ef | 609 | // MC pdg codes |
610 | if(hasMC) { | |
90c1ae2d | 611 | // histos->UserHistogram("Event","","", 25, 0., 25., AliDielectronVarManager::kNumberOfJPsisPrompt); |
423cc7ef | 612 | histos->UserHistogram("Track","","",10000,-5000.5,4999.5, AliDielectronVarManager::kPdgCodeGrandMother); |
613 | histos->UserHistogram("Track","","",10000,-5000.5,4999.5, AliDielectronVarManager::kPdgCodeMother); | |
614 | histos->UserHistogram("Track","","",10000,-5000.5,4999.5, AliDielectronVarManager::kPdgCode); | |
615 | } | |
890973b8 | 616 | } |
617 | ||
ab5dc7f9 | 618 | // TPC PID |
619 | if(bHistPidQA) { | |
620 | //add histograms to track class | |
621 | histos->SetReservedWords("Track"); | |
622 | //for (Int_t i=0; i<2; ++i) histos->AddClass(Form("Track_%s",AliDielectron::TrackClassName(i))); | |
623 | histos->AddClass(Form("Track_%s",AliDielectron::PairClassName(AliDielectron::kEv1PM))); | |
624 | ||
625 | TObjArray *limits = new TObjArray(); | |
626 | limits->Add(AliDielectronHelper::MakeLinBinning(100,-10., 5.)); | |
627 | limits->Add(AliDielectronHelper::MakeLinBinning(100, 0., 200.)); | |
628 | limits->Add(AliDielectronHelper::MakeLinBinning(100, 0., 4000.)); | |
629 | limits->Add(AliDielectronHelper::MakeLinBinning( 50, 0., 10.)); | |
630 | limits->Add(AliDielectronHelper::MakeLinBinning( 32, 0., 80.)); | |
631 | limits->Add(AliDielectronHelper::MakeLinBinning( 20, -1., 1.)); | |
632 | limits->Add(GetRunNumbers()); | |
633 | ||
634 | UInt_t var[7]={AliDielectronVarManager::kTPCnSigmaEle, | |
635 | AliDielectronVarManager::kTPCsignal, | |
636 | AliDielectronVarManager::kNacc, | |
637 | AliDielectronVarManager::kPIn, | |
638 | AliDielectronVarManager::kCentrality, | |
639 | AliDielectronVarManager::kEta, | |
640 | AliDielectronVarManager::kRunNumber}; | |
641 | histos->UserSparse("Track", 7, limits, var); | |
642 | ||
643 | } | |
644 | ||
645 | ||
890973b8 | 646 | die->SetHistogramManager(histos); |
647 | } | |
648 | ||
f6a71c64 | 649 | void InitCF(AliDielectron* die, Int_t cutDefinition) |
650 | { | |
651 | // | |
652 | // Setup the CF Manager | |
653 | // | |
654 | ||
655 | AliDielectronCF *cf=new AliDielectronCF(die->GetName(),die->GetTitle()); | |
656 | // event variables | |
657 | cf->AddVariable(AliDielectronVarManager::kMultV0, 125,0.,25000. ); | |
658 | cf->AddVariable(AliDielectronVarManager::kNTrk, 100,0.,20000. ); | |
659 | cf->AddVariable(AliDielectronVarManager::kNacc, 100,0., 4000. ); | |
660 | cf->AddVariable(AliDielectronVarManager::kMatchEffITSTPC, 55,0., 1.1); | |
661 | ||
662 | die->SetCFManagerPair(cf); | |
663 | } | |
664 | ||
5ab640ac | 665 | void AddMCSignals(AliDielectron *die){ |
666 | //Do we have an MC handler? | |
667 | if (!hasMC) return; | |
668 | ||
669 | AliDielectronSignalMC* inclusiveJpsi = new AliDielectronSignalMC("inclusiveJpsi","Inclusive J/psi"); | |
670 | inclusiveJpsi->SetLegPDGs(11,-11); | |
671 | inclusiveJpsi->SetMotherPDGs(443,443); | |
672 | inclusiveJpsi->SetMothersRelation(AliDielectronSignalMC::kSame); | |
673 | inclusiveJpsi->SetFillPureMCStep(kTRUE); | |
674 | inclusiveJpsi->SetCheckBothChargesLegs(kTRUE,kTRUE); | |
675 | inclusiveJpsi->SetCheckBothChargesMothers(kTRUE,kTRUE); | |
676 | die->AddSignalMC(inclusiveJpsi); | |
677 | ||
678 | AliDielectronSignalMC* promptJpsi = new AliDielectronSignalMC("promptJpsi","Prompt J/psi"); // prompt J/psi (not from beauty decays) | |
679 | promptJpsi->SetLegPDGs(11,-11); | |
680 | promptJpsi->SetMotherPDGs(443,443); | |
681 | promptJpsi->SetGrandMotherPDGs(503,503,kTRUE,kTRUE); // not from beauty hadrons | |
682 | promptJpsi->SetMothersRelation(AliDielectronSignalMC::kSame); | |
683 | promptJpsi->SetFillPureMCStep(kTRUE); | |
684 | promptJpsi->SetLegSources(AliDielectronSignalMC::kFinalState, AliDielectronSignalMC::kFinalState); | |
685 | promptJpsi->SetCheckBothChargesLegs(kTRUE,kTRUE); | |
686 | promptJpsi->SetCheckBothChargesMothers(kTRUE,kTRUE); | |
687 | promptJpsi->SetCheckBothChargesGrandMothers(kTRUE,kTRUE); | |
688 | die->AddSignalMC(promptJpsi); | |
689 | ||
690 | AliDielectronSignalMC* beautyJpsi = new AliDielectronSignalMC("beautyJpsi","Beauty J/psi"); | |
691 | beautyJpsi->SetLegPDGs(11,-11); | |
692 | beautyJpsi->SetMotherPDGs(443,443); | |
693 | beautyJpsi->SetMothersRelation(AliDielectronSignalMC::kSame); | |
694 | beautyJpsi->SetGrandMotherPDGs(500,500); | |
695 | beautyJpsi->SetFillPureMCStep(kTRUE); | |
696 | beautyJpsi->SetCheckBothChargesLegs(kTRUE,kTRUE); | |
697 | beautyJpsi->SetCheckBothChargesMothers(kTRUE,kTRUE); | |
698 | beautyJpsi->SetCheckBothChargesGrandMothers(kTRUE,kTRUE); | |
699 | die->AddSignalMC(beautyJpsi); | |
700 | ||
701 | AliDielectronSignalMC* directJpsi = new AliDielectronSignalMC("directJpsi","Direct J/psi"); // embedded J/psi | |
702 | directJpsi->SetLegPDGs(11,-11); | |
703 | directJpsi->SetMotherPDGs(443,443); | |
704 | directJpsi->SetMothersRelation(AliDielectronSignalMC::kSame); | |
705 | directJpsi->SetFillPureMCStep(kTRUE); | |
706 | directJpsi->SetLegSources(AliDielectronSignalMC::kFinalState, AliDielectronSignalMC::kFinalState); | |
707 | directJpsi->SetMotherSources(AliDielectronSignalMC::kDirect, AliDielectronSignalMC::kDirect); | |
708 | directJpsi->SetCheckBothChargesLegs(kTRUE,kTRUE); | |
709 | directJpsi->SetCheckBothChargesMothers(kTRUE,kTRUE); | |
710 | die->AddSignalMC(directJpsi); | |
90c1ae2d | 711 | |
712 | AliDielectronSignalMC* gammaConversion = new AliDielectronSignalMC("gammaConversion","gamma conversions"); | |
713 | gammaConversion->SetLegPDGs(11,-11); | |
714 | gammaConversion->SetCheckBothChargesLegs(kTRUE,kTRUE); | |
715 | gammaConversion->SetLegSources(AliDielectronSignalMC::kSecondary, AliDielectronSignalMC::kSecondary); | |
716 | gammaConversion->SetMotherPDGs(22,22); | |
717 | gammaConversion->SetMothersRelation(AliDielectronSignalMC::kSame); | |
718 | die->AddSignalMC(gammaConversion); | |
719 | ||
77e2c705 | 720 | /* |
721 | AliDielectronSignalMC* gammaConversionHI = new AliDielectronSignalMC("gammaConversionHI","gamma conversions Hijing"); | |
722 | gammaConversionHI->SetLegPDGs(11,-11); | |
723 | gammaConversionHI->SetCheckBothChargesLegs(kTRUE,kTRUE); | |
724 | gammaConversionHI->SetLegSources(AliDielectronSignalMC::kSecondary, AliDielectronSignalMC::kSecondary); | |
725 | gammaConversionHI->SetMotherSources(AliDielectronSignalMC::kNoCocktail, AliDielectronSignalMC::kNoCocktail); | |
726 | gammaConversionHI->SetGrandMotherSources(AliDielectronSignalMC::kNoCocktail, AliDielectronSignalMC::kNoCocktail); | |
727 | gammaConversionHI->SetMotherPDGs(22,22); | |
728 | gammaConversionHI->SetMothersRelation(AliDielectronSignalMC::kSame); | |
729 | die->AddSignalMC(gammaConversionHI); | |
730 | */ | |
731 | ||
90c1ae2d | 732 | AliDielectronSignalMC* conversionElePairs = new AliDielectronSignalMC("conversionEle","conversion electron pairs"); // pairs made from conversion (may be also from 2 different conversions) |
5ab640ac | 733 | conversionElePairs->SetLegPDGs(11,-11); |
734 | conversionElePairs->SetCheckBothChargesLegs(kTRUE,kTRUE); | |
735 | conversionElePairs->SetLegSources(AliDielectronSignalMC::kSecondary, AliDielectronSignalMC::kSecondary); | |
736 | conversionElePairs->SetMotherPDGs(22,22); | |
423cc7ef | 737 | die->AddSignalMC(conversionElePairs); |
5ab640ac | 738 | |
90c1ae2d | 739 | AliDielectronSignalMC* inclJpsiElePairs = new AliDielectronSignalMC("inclJpsiEle","Inclusive J/psi electron pairs"); // pairs made from Jpsi electron + any different electron (no real jpsis) |
740 | inclJpsiElePairs->SetLegPDGs(11,-11); | |
741 | inclJpsiElePairs->SetMotherPDGs(443,0); | |
742 | inclJpsiElePairs->SetCheckBothChargesLegs(kTRUE,kTRUE); | |
743 | inclJpsiElePairs->SetMothersRelation(AliDielectronSignalMC::kDifferent); | |
744 | die->AddSignalMC(inclJpsiElePairs); | |
745 | ||
5ab640ac | 746 | // prompt J/psi radiative channel |
747 | AliDielectronSignalMC* promptJpsiRad = new AliDielectronSignalMC("promptJpsiRad","Prompt J/psi Radiative"); // prompt J/psi (not from beauty decays) | |
748 | promptJpsiRad->SetLegPDGs(11,-11); | |
749 | promptJpsiRad->SetMotherPDGs(443,443); | |
750 | promptJpsiRad->SetGrandMotherPDGs(503,503,kTRUE,kTRUE); // not from beauty hadrons | |
751 | promptJpsiRad->SetMothersRelation(AliDielectronSignalMC::kSame); | |
752 | promptJpsiRad->SetFillPureMCStep(kTRUE); | |
753 | promptJpsiRad->SetLegSources(AliDielectronSignalMC::kFinalState, AliDielectronSignalMC::kFinalState); | |
754 | promptJpsiRad->SetCheckBothChargesLegs(kTRUE,kTRUE); | |
755 | promptJpsiRad->SetCheckBothChargesMothers(kTRUE,kTRUE); | |
756 | promptJpsiRad->SetCheckBothChargesGrandMothers(kTRUE,kTRUE); | |
757 | promptJpsiRad->SetJpsiRadiative(AliDielectronSignalMC::kIsRadiative); | |
423cc7ef | 758 | // die->AddSignalMC(promptJpsiRad); |
5ab640ac | 759 | |
760 | // prompt J/psi Non radiative channel | |
761 | AliDielectronSignalMC* promptJpsiNonRad = new AliDielectronSignalMC("promptJpsiNonRad","Prompt J/psi non-Radiative"); // prompt J/psi (not from beauty decays) | |
762 | promptJpsiNonRad->SetLegPDGs(11,-11); | |
763 | promptJpsiNonRad->SetMotherPDGs(443,443); | |
764 | promptJpsiNonRad->SetGrandMotherPDGs(503,503,kTRUE,kTRUE); // not from beauty hadrons | |
765 | promptJpsiNonRad->SetMothersRelation(AliDielectronSignalMC::kSame); | |
766 | promptJpsiNonRad->SetFillPureMCStep(kTRUE); | |
767 | promptJpsiNonRad->SetLegSources(AliDielectronSignalMC::kFinalState, AliDielectronSignalMC::kFinalState); | |
768 | promptJpsiNonRad->SetCheckBothChargesLegs(kTRUE,kTRUE); | |
769 | promptJpsiNonRad->SetCheckBothChargesMothers(kTRUE,kTRUE); | |
770 | promptJpsiNonRad->SetCheckBothChargesGrandMothers(kTRUE,kTRUE); | |
771 | promptJpsiNonRad->SetJpsiRadiative(AliDielectronSignalMC::kIsNotRadiative); | |
423cc7ef | 772 | // die->AddSignalMC(promptJpsiNonRad); |
5ab640ac | 773 | } |
774 | ||
775 | ||
890973b8 | 776 | void SetEtaCorrection() |
777 | { | |
778 | if (AliDielectronPID::GetEtaCorrFunction()) return; | |
779 | ||
780 | TString etaMap="$TRAIN_ROOT/jpsi_JPSI/EtaCorrMaps.root"; | |
781 | TString trainRoot=gSystem->Getenv("TRAIN_ROOT"); | |
782 | if (trainRoot.IsNull()) etaMap="$ALICE_ROOT/PWGDQ/dielectron/files/EtaCorrMaps.root"; | |
783 | if (gSystem->AccessPathName(gSystem->ExpandPathName(etaMap.Data()))){ | |
784 | Error("ConfigPbPb","Eta map not found: %s",etaMap.Data()); | |
785 | return; | |
786 | } | |
787 | ||
788 | TFile f(etaMap.Data()); | |
789 | if (!f.IsOpen()) return; | |
790 | TList *keys=f.GetListOfKeys(); | |
791 | ||
792 | for (Int_t i=0; i<keys->GetEntries(); ++i){ | |
793 | TString kName=keys->At(i)->GetName(); | |
794 | TPRegexp reg(kName); | |
795 | if (reg.MatchB(list)){ | |
796 | printf(" Using Eta Correction Function: %s\n",kName.Data()); | |
797 | AliDielectronPID::SetEtaCorrFunction((TF1*)f.Get(kName.Data())); | |
798 | } | |
799 | } | |
800 | } | |
801 | ||
802 | TVectorD *GetRunNumbers() { | |
803 | ||
804 | Double_t runLHC10h[] = { // all good runs based on RCT 29.Mai | |
805 | 139510, 139507, 139505, 139503, 139465, 139438, 139437, 139360, 139329, 139328, 139314, 139310, 139309, 139173, 139107, 139105, 139038, 139037, 139036, 139029, 139028, 138872, 138871, 138870, 138837, 138732, 138730, 138666, 138662, 138653, 138652, 138638, 138624, 138621, 138583, 138582, 138579, 138578, 138534, 138469, 138442, 138439, 138438, 138396, 138364, 138275, 138225, 138201, 138197, 138192, 138190, 137848, 137844, 137752, 137751, 137724, 137722, 137718, 137704, 137693, 137692, 137691, 137686, 137685, 137639, 137638, 137608, 137595, 137549, 137546, 137544, 137541, 137539, 137531, 137530, 137443, 137441, 137440, 137439, 137434, 137432, 137431, 137430, 137366, 137243, 137236, 137235, 137232, 137231, 137230, 137162, 137161, 137135 | |
806 | }; | |
807 | ||
808 | Double_t runLHC11h[] = { // all good runs based on RCT 29.Mai | |
809 | 170593, 170572, 170388, 170387, 170315, 170313, 170312, 170311, 170309, 170308, 170306, 170270, 170269, 170268, 170230, 170228, 170207, 170204, 170203, 170193, 170163, 170159, 170155, 170091, 170089, 170088, 170085, 170084, 170083, 170081, 170040, 170027, 169965, 169923, 169859, 169858, 169855, 169846, 169838, 169837, 169835, 169591, 169590, 169588, 169587, 169586, 169557, 169555, 169554, 169553, 169550, 169515, 169512, 169506, 169504, 169498, 169475, 169420, 169419, 169418, 169417, 169415, 169411, 169238, 169167, 169160, 169156, 169148, 169145, 169144, 169138, 169099, 169094, 169091, 169045, 169044, 169040, 169035, 168992, 168988, 168826, 168777, 168514, 168512, 168511, 168467, 168464, 168460, 168458, 168362, 168361, 168342, 168341, 168325, 168322, 168311, 168310, 168115, 168108, 168107, 168105, 168076, 168069, 167988, 167987, 167985, 167920, 167915 | |
810 | }; | |
811 | ||
812 | // selection via environement variable (works only for gsi trains) | |
813 | ||
814 | ||
815 | if(list.Contains("LHC10h") || list.Contains("LHC11a10")) { | |
816 | Int_t size = (int) (sizeof(runLHC10h)/sizeof(Double_t)); | |
817 | TVectorD *vec = new TVectorD(size+1); | |
818 | ||
819 | (*vec)[size] = runLHC10h[0] + 1; | |
820 | for (int i = 0; i < size; i++) { | |
821 | (*vec)[i] = runLHC10h[size-1-i]; | |
822 | } | |
823 | // vec->Print(""); | |
824 | return vec; | |
825 | } | |
826 | ||
827 | if( list.Contains("LHC11h") || list.Contains("LHC12a17") ) { | |
828 | ||
829 | Int_t size = (int) (sizeof(runLHC11h)/sizeof(Double_t)); | |
830 | TVectorD *vec = new TVectorD(size+1); | |
831 | ||
832 | (*vec)[size] = runLHC11h[0] + 1; | |
833 | for (int i = 0; i < size; i++) { | |
834 | (*vec)[i] = runLHC11h[size-1-i]; | |
835 | } | |
836 | // vec->Print(""); | |
837 | return vec; | |
838 | } | |
839 | ||
840 | TVectorD *vec = new TVectorD(2); | |
841 | (*vec)[0] = 0; | |
0c09cae4 | 842 | (*vec)[1] = 1; |
890973b8 | 843 | return vec; |
844 | ||
845 | } |