]>
Commit | Line | Data |
---|---|---|
815e6bab | 1 | /************************************************************************** |
2 | * Copyright(c) 1998-2010, 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 | /* $Id$ */ | |
17 | ||
18 | //////////////////////////////////////////////////////////////////////// | |
19 | // | |
20 | // Base class for cuts on Associated tracks for HF Correlation analysis | |
21 | // | |
22 | // Author: S.Bjelogrlic (Utrecht) sandro.bjelogrlic@cern.ch | |
23 | //////////////////////////////////////////////////////////////////////// | |
24 | #include <Riostream.h> | |
25 | #include "AliHFAssociatedTrackCuts.h" | |
26 | #include "AliAODPidHF.h" | |
27 | #include "AliESDtrackCuts.h" | |
28 | #include "AliESDtrack.h" | |
29 | #include "AliAODv0.h" | |
30 | #include "AliAODVertex.h" | |
31 | #include "AliAODMCParticle.h" | |
8c2d7467 | 32 | #include "AliAnalysisManager.h" |
33 | #include "AliInputEventHandler.h" | |
815e6bab | 34 | #include "TString.h" |
35 | ||
14c8fedd | 36 | using std::cout; |
37 | using std::endl; | |
815e6bab | 38 | |
39 | ClassImp(AliHFAssociatedTrackCuts) | |
40 | ||
41 | //-------------------------------------------------------------------------- | |
42 | AliHFAssociatedTrackCuts::AliHFAssociatedTrackCuts(): | |
43 | AliAnalysisCuts(), | |
44 | fESDTrackCuts(0), | |
45 | fPidObj(0), | |
bce70c96 | 46 | |
47 | fPoolMaxNEvents(0), | |
48 | fPoolMinNTracks(0), | |
49 | fMinEventsToMix(0), | |
50 | fNzVtxBins(0), | |
51 | fNzVtxBinsDim(0), | |
52 | fZvtxBins(0), | |
53 | fNCentBins(0), | |
54 | fNCentBinsDim(0), | |
55 | fCentBins(0), | |
56 | ||
53454b81 | 57 | fNofMCEventType(0), |
58 | fMCEventType(0), | |
59 | ||
815e6bab | 60 | fNTrackCuts(0), |
61 | fAODTrackCuts(0), | |
62 | fTrackCutsNames(0), | |
63 | fNvZeroCuts(0), | |
64 | fAODvZeroCuts(0), | |
c84dbedf | 65 | fvZeroCutsNames(0), |
66 | fBit(0), | |
53454b81 | 67 | fCharge(0), |
68 | fDescription("") | |
815e6bab | 69 | |
70 | { | |
71 | // | |
72 | //default constructor | |
73 | // | |
74 | // | |
75 | //default constructor | |
76 | // | |
77 | ||
78 | } | |
79 | ||
80 | //-------------------------------------------------------------------------- | |
81 | AliHFAssociatedTrackCuts::AliHFAssociatedTrackCuts(const char* name, const char* title): | |
82 | AliAnalysisCuts(name,title), | |
83 | fESDTrackCuts(0), | |
84 | fPidObj(0), | |
bce70c96 | 85 | |
86 | fPoolMaxNEvents(0), | |
87 | fPoolMinNTracks(0), | |
88 | fMinEventsToMix(0), | |
89 | fNzVtxBins(0), | |
90 | fNzVtxBinsDim(0), | |
91 | fZvtxBins(0), | |
92 | fNCentBins(0), | |
93 | fNCentBinsDim(0), | |
94 | fCentBins(0), | |
95 | ||
53454b81 | 96 | fNofMCEventType(0), |
97 | fMCEventType(0), | |
98 | ||
815e6bab | 99 | fNTrackCuts(0), |
100 | fAODTrackCuts(0), | |
101 | fTrackCutsNames(0), | |
102 | fNvZeroCuts(0), | |
103 | fAODvZeroCuts(0), | |
c84dbedf | 104 | fvZeroCutsNames(0), |
105 | fBit(0), | |
53454b81 | 106 | fCharge(0), |
107 | fDescription("") | |
815e6bab | 108 | |
109 | { | |
110 | // | |
111 | //default constructor | |
112 | // | |
113 | ||
114 | } | |
115 | //-------------------------------------------------------------------------- | |
116 | AliHFAssociatedTrackCuts::AliHFAssociatedTrackCuts(const AliHFAssociatedTrackCuts &source) : | |
117 | AliAnalysisCuts(source), | |
118 | fESDTrackCuts(source.fESDTrackCuts), | |
119 | fPidObj(source.fPidObj), | |
bce70c96 | 120 | |
121 | fPoolMaxNEvents(source.fPoolMaxNEvents), | |
122 | fPoolMinNTracks(source.fPoolMinNTracks), | |
123 | fMinEventsToMix(source.fMinEventsToMix), | |
124 | fNzVtxBins(source.fNzVtxBins), | |
125 | fNzVtxBinsDim(source.fNzVtxBinsDim), | |
126 | fZvtxBins(source.fZvtxBins), | |
127 | fNCentBins(source.fNCentBins), | |
128 | fNCentBinsDim(source.fNCentBinsDim), | |
129 | fCentBins(source.fCentBins), | |
130 | ||
53454b81 | 131 | fNofMCEventType(source.fNofMCEventType), |
132 | fMCEventType(source.fMCEventType), | |
133 | ||
815e6bab | 134 | fNTrackCuts(source.fNTrackCuts), |
135 | fAODTrackCuts(source.fAODTrackCuts), | |
136 | fTrackCutsNames(source.fTrackCutsNames), | |
137 | fNvZeroCuts(source.fNvZeroCuts), | |
138 | fAODvZeroCuts(source.fAODvZeroCuts), | |
c84dbedf | 139 | fvZeroCutsNames(source.fvZeroCutsNames), |
140 | fBit(source.fBit), | |
53454b81 | 141 | fCharge(source.fCharge), |
142 | fDescription(source.fDescription) | |
815e6bab | 143 | { |
144 | // | |
145 | // copy constructor | |
146 | // | |
147 | ||
148 | ||
14c8fedd | 149 | AliInfo("AliHFAssociatedTrackCuts::Copy constructor "); |
815e6bab | 150 | if(source.fESDTrackCuts) AddTrackCuts(source.fESDTrackCuts); |
151 | if(source.fAODTrackCuts) SetAODTrackCuts(source.fAODTrackCuts); | |
152 | if(source.fAODvZeroCuts) SetAODvZeroCuts(source.fAODvZeroCuts); | |
153 | if(source.fPidObj) SetPidHF(source.fPidObj); | |
154 | } | |
155 | //-------------------------------------------------------------------------- | |
156 | AliHFAssociatedTrackCuts &AliHFAssociatedTrackCuts::operator=(const AliHFAssociatedTrackCuts &source) | |
157 | { | |
158 | // | |
159 | // assignment operator | |
160 | // | |
161 | if(&source == this) return *this; | |
162 | ||
163 | AliAnalysisCuts::operator=(source); | |
164 | fESDTrackCuts=source.fESDTrackCuts; | |
165 | fPidObj=source.fPidObj; | |
166 | fNTrackCuts=source.fNTrackCuts; | |
167 | fAODTrackCuts=source.fAODTrackCuts; | |
168 | fTrackCutsNames=source.fTrackCutsNames; | |
169 | fNvZeroCuts=source.fNvZeroCuts; | |
170 | fAODvZeroCuts=source.fAODvZeroCuts; | |
171 | fvZeroCutsNames=source.fvZeroCutsNames; | |
c84dbedf | 172 | fBit=source.fBit; |
173 | fCharge=source.fCharge; | |
815e6bab | 174 | |
175 | return *this; | |
176 | ||
177 | } | |
178 | ||
179 | ||
180 | //-------------------------------------------------------------------------- | |
181 | AliHFAssociatedTrackCuts::~AliHFAssociatedTrackCuts() | |
182 | { | |
183 | if(fESDTrackCuts) {delete fESDTrackCuts; fESDTrackCuts = 0;} | |
184 | if(fPidObj) {delete fPidObj; fPidObj = 0;} | |
bce70c96 | 185 | if(fZvtxBins) {delete[] fZvtxBins; fZvtxBins=0;} |
186 | if(fCentBins) {delete[] fCentBins; fCentBins=0;} | |
815e6bab | 187 | if(fAODTrackCuts) {delete[] fAODTrackCuts; fAODTrackCuts=0;} |
188 | if(fTrackCutsNames) {delete[] fTrackCutsNames; fTrackCutsNames=0;} | |
189 | if(fAODvZeroCuts){delete[] fAODvZeroCuts; fAODvZeroCuts=0;} | |
190 | if(fvZeroCutsNames) {delete[] fvZeroCutsNames; fvZeroCutsNames=0;} | |
8c2d7467 | 191 | |
815e6bab | 192 | |
193 | } | |
194 | //-------------------------------------------------------------------------- | |
195 | Bool_t AliHFAssociatedTrackCuts::IsInAcceptance() | |
196 | { | |
197 | printf("Careful: method AliHFAssociatedTrackCuts::IsInAcceptance is not implemented yet \n"); | |
198 | return kFALSE; | |
199 | } | |
200 | //-------------------------------------------------------------------------- | |
bce70c96 | 201 | Bool_t AliHFAssociatedTrackCuts::IsHadronSelected(AliAODTrack * track) |
815e6bab | 202 | { |
815e6bab | 203 | AliESDtrack esdtrack(track); |
bce70c96 | 204 | if(!fESDTrackCuts->IsSelected(&esdtrack)) return kFALSE; |
c84dbedf | 205 | |
206 | if(fBit && !track->TestFilterBit(fBit)) return kFALSE; // check the filter bit | |
207 | ||
bce70c96 | 208 | return kTRUE; |
815e6bab | 209 | |
bce70c96 | 210 | } |
211 | ||
212 | //-------------------------------------------------------------------------- | |
213 | Bool_t AliHFAssociatedTrackCuts::CheckHadronKinematic(Double_t pt, Double_t d0) | |
214 | { | |
815e6bab | 215 | |
815e6bab | 216 | |
815e6bab | 217 | |
bce70c96 | 218 | if(pt < fAODTrackCuts[0]) return kFALSE; |
219 | if(pt > fAODTrackCuts[1]) return kFALSE; | |
220 | if(d0 < fAODTrackCuts[2]) return kFALSE; | |
221 | if(d0 > fAODTrackCuts[3]) return kFALSE; | |
815e6bab | 222 | |
223 | return kTRUE; | |
224 | ||
225 | ||
226 | } | |
c84dbedf | 227 | //-------------------------------------------------------------------------- |
228 | ||
229 | Bool_t AliHFAssociatedTrackCuts::Charge(Short_t charge, AliAODTrack* track) | |
230 | {// charge is the charge to compare to (for example, a daughter of a D meson) | |
231 | ||
232 | if(!fCharge) return kTRUE; // if fCharge is set to 0 (no selection on the charge), returns always true | |
233 | if(track->Charge()!= fCharge*charge) return kFALSE; | |
234 | return kTRUE; | |
235 | } | |
236 | ||
815e6bab | 237 | //-------------------------------------------------------------------------- |
14c8fedd | 238 | Bool_t AliHFAssociatedTrackCuts::CheckKaonCompatibility(AliAODTrack * track, Bool_t useMc, TClonesArray* mcArray, Int_t method) |
815e6bab | 239 | { |
240 | Bool_t isKaon = kFALSE; | |
241 | ||
242 | if(useMc) { // on MC | |
243 | Int_t hadLabel = track->GetLabel(); | |
244 | if(hadLabel < 0) return kFALSE; | |
245 | AliAODMCParticle* hadron = dynamic_cast<AliAODMCParticle*>(mcArray->At(hadLabel)); | |
246 | Int_t pdg = TMath::Abs(hadron->GetPdgCode()); | |
247 | if (pdg == 321) isKaon = kTRUE; | |
248 | } | |
249 | ||
250 | if(!useMc) { // on DATA | |
14c8fedd | 251 | switch(method) { |
252 | case(1): { | |
815e6bab | 253 | Bool_t isKTPC=kFALSE; |
254 | Bool_t isPiTPC=kFALSE; | |
255 | Bool_t isPTPC=kFALSE; | |
256 | Bool_t isKTOF=kFALSE; | |
257 | Bool_t isPiTOF=kFALSE; | |
258 | Bool_t isPTOF=kFALSE; | |
259 | ||
260 | Bool_t KaonHyp = kFALSE; | |
261 | Bool_t PionHyp = kFALSE; | |
262 | Bool_t ProtonHyp = kFALSE; | |
263 | ||
264 | if(fPidObj->CheckStatus(track,"TOF")) { | |
265 | isKTOF=fPidObj->IsKaonRaw(track,"TOF"); | |
266 | isPiTOF=fPidObj->IsPionRaw(track,"TOF"); | |
267 | isPTOF=fPidObj->IsProtonRaw(track,"TOF"); | |
268 | } | |
269 | if(fPidObj->CheckStatus(track,"TPC")){ | |
270 | isKTPC=fPidObj->IsKaonRaw(track,"TPC"); | |
271 | isPiTPC=fPidObj->IsPionRaw(track,"TPC"); | |
272 | isPTPC=fPidObj->IsProtonRaw(track,"TPC"); | |
273 | } | |
274 | ||
275 | if (isKTOF && isKTPC) KaonHyp = kTRUE; | |
276 | if (isPiTOF && isPiTPC) PionHyp = kTRUE; | |
277 | if (isPTOF && isPTPC) ProtonHyp = kTRUE; | |
278 | ||
279 | if(KaonHyp && !PionHyp && !ProtonHyp) isKaon = kTRUE; | |
14c8fedd | 280 | break; |
281 | } | |
b9f81146 | 282 | case(2): { |
283 | if(fPidObj->MakeRawPid(track,3)>=1) isKaon = kTRUE; | |
14c8fedd | 284 | break; |
285 | } | |
b9f81146 | 286 | } |
815e6bab | 287 | } |
288 | ||
289 | return isKaon; | |
290 | ||
291 | } | |
292 | //-------------------------------------------------------------------------- | |
293 | Bool_t AliHFAssociatedTrackCuts::IsKZeroSelected(AliAODv0 *vzero, AliAODVertex *vtx1) | |
294 | { | |
295 | ||
296 | if(vzero->DcaV0Daughters()>fAODvZeroCuts[0]) return kFALSE; | |
297 | if(vzero->Chi2V0()>fAODvZeroCuts[1]) return kFALSE; | |
298 | if(vzero->DecayLength(vtx1) < fAODvZeroCuts[2]) return kFALSE; | |
299 | if(vzero->DecayLength(vtx1) > fAODvZeroCuts[3]) return kFALSE; | |
300 | if(vzero->OpenAngleV0() > fAODvZeroCuts[4]) return kFALSE; | |
301 | if(vzero->Pt() < fAODvZeroCuts[5]) return kFALSE; | |
302 | if(TMath::Abs(vzero->Eta()) > fAODvZeroCuts[6]) return kFALSE; | |
303 | ||
304 | ||
305 | return kTRUE; | |
306 | } | |
307 | //-------------------------------------------------------------------------- | |
53454b81 | 308 | Bool_t *AliHFAssociatedTrackCuts::IsMCpartFromHF(Int_t label, TClonesArray*mcArray){ |
02f91926 | 309 | // Check origin in MC |
815e6bab | 310 | |
02f91926 | 311 | AliAODMCParticle* mcParticle; |
312 | Int_t pdgCode = -1; | |
53454b81 | 313 | |
02f91926 | 314 | Bool_t isCharmy = kFALSE; |
315 | Bool_t isBeauty = kFALSE; | |
316 | Bool_t isD = kFALSE; | |
317 | Bool_t isB = kFALSE; | |
53454b81 | 318 | |
319 | Bool_t *originvect = new Bool_t[4]; | |
320 | ||
321 | originvect[0] = kFALSE; | |
322 | originvect[1] = kFALSE; | |
323 | originvect[2] = kFALSE; | |
324 | originvect[3] = kFALSE; | |
325 | ||
326 | if (label<0) return originvect; | |
327 | ||
328 | while(pdgCode!=2212){ // loops back to the collision to check the particle source | |
02f91926 | 329 | |
330 | mcParticle = dynamic_cast<AliAODMCParticle*>(mcArray->At(label)); | |
bf658d5c | 331 | if(!mcParticle) {AliError("NO MC PARTICLE"); break;} |
02f91926 | 332 | pdgCode = TMath::Abs(mcParticle->GetPdgCode()); |
333 | ||
334 | label = mcParticle->GetMother(); | |
335 | ||
336 | ||
337 | if((pdgCode>=400 && pdgCode <500) || (pdgCode>=4000 && pdgCode<5000 )) isD = kTRUE; | |
338 | if((pdgCode>=500 && pdgCode <600) || (pdgCode>=5000 && pdgCode<6000 )) {isD = kFALSE; isB = kTRUE;} | |
339 | ||
340 | ||
341 | if(pdgCode == 4) isCharmy = kTRUE; | |
342 | if(pdgCode == 5) {isBeauty = kTRUE; isCharmy = kFALSE;} | |
343 | if(label<0) break; | |
344 | ||
345 | } | |
53454b81 | 346 | |
347 | ||
348 | originvect[0] = isCharmy; | |
349 | originvect[1] = isBeauty; | |
350 | originvect[2] = isD; | |
351 | originvect[3] = isB; | |
352 | ||
353 | ||
354 | return originvect; | |
815e6bab | 355 | } |
bce70c96 | 356 | |
357 | //-------------------------------------------------------------------------- | |
358 | Bool_t AliHFAssociatedTrackCuts::InvMassDstarRejection(AliAODRecoDecayHF2Prong* d, AliAODTrack *track, Int_t hypD0) const { | |
359 | // | |
360 | // Calculates invmass of track+D0 and rejects if compatible with D* | |
361 | // (to remove pions from D*) | |
362 | // | |
363 | Double_t nsigma = 3.; | |
364 | ||
365 | Double_t mD0, mD0bar; | |
366 | d->InvMassD0(mD0,mD0bar); | |
367 | ||
368 | Double_t invmassDstar1 = 0, invmassDstar2 = 0; | |
369 | Double_t e1Pi = d->EProng(0,211), e2K = d->EProng(1,321); //hyp 1 (pi,K) - D0 | |
370 | Double_t e1K = d->EProng(0,321), e2Pi = d->EProng(1,211); //hyp 2 (K,pi) - D0bar | |
371 | Double_t psum2 = (d->Px()+track->Px())*(d->Px()+track->Px()) | |
372 | +(d->Py()+track->Py())*(d->Py()+track->Py()) | |
373 | +(d->Pz()+track->Pz())*(d->Pz()+track->Pz()); | |
374 | ||
375 | switch(hypD0) { | |
376 | case 1: | |
377 | invmassDstar1 = TMath::Sqrt(pow(e1Pi+e2K+track->E(0.1396),2.)-psum2); | |
378 | if ((TMath::Abs(invmassDstar1-mD0)-0.14543) < nsigma*800.*pow(10.,-6.)) return kFALSE; | |
379 | break; | |
380 | case 2: | |
381 | invmassDstar2 = TMath::Sqrt(pow(e2Pi+e1K+track->E(0.1396),2.)-psum2); | |
382 | if ((TMath::Abs(invmassDstar2-mD0bar)-0.14543) < nsigma*800.*pow(10.,-6.)) return kFALSE; | |
383 | break; | |
384 | case 3: | |
385 | invmassDstar1 = TMath::Sqrt(pow(e1Pi+e2K+track->E(0.1396),2.)-psum2); | |
386 | invmassDstar2 = TMath::Sqrt(pow(e2Pi+e1K+track->E(0.1396),2.)-psum2); | |
387 | if ((TMath::Abs(invmassDstar1-mD0)-0.14543) < nsigma*800.*pow(10.,-6.)) return kFALSE; | |
388 | if ((TMath::Abs(invmassDstar2-mD0bar)-0.14543) < nsigma*800.*pow(10.,-6.)) return kFALSE; | |
389 | break; | |
390 | } | |
391 | ||
392 | return kTRUE; | |
393 | } | |
53454b81 | 394 | //________________________________________________________ |
395 | void AliHFAssociatedTrackCuts::SetMCEventTypes(Int_t *MCEventTypeArray) | |
396 | // set the array of event types you want to process in MonteCarlo (gluon splitting, pair production etc.) | |
397 | { | |
398 | if(!fMCEventType) fMCEventType = new Int_t[fNofMCEventType]; | |
399 | ||
400 | for(Int_t k=0; k<fNofMCEventType; k++){ | |
401 | fMCEventType[k] = MCEventTypeArray[k]; | |
402 | } | |
403 | return; | |
404 | } | |
405 | ||
815e6bab | 406 | //________________________________________________________ |
407 | void AliHFAssociatedTrackCuts::SetAODTrackCuts(Float_t *cutsarray) | |
408 | { | |
815e6bab | 409 | if(!fAODTrackCuts) fAODTrackCuts = new Float_t[fNTrackCuts]; |
815e6bab | 410 | for(Int_t i =0; i<fNTrackCuts; i++){ |
815e6bab | 411 | fAODTrackCuts[i] = cutsarray[i]; |
412 | } | |
413 | SetTrackCutsNames(); | |
414 | return; | |
415 | } | |
416 | //________________________________________________________ | |
417 | void AliHFAssociatedTrackCuts::SetTrackCutsNames(/*TString *namearray*/){ | |
418 | ||
419 | fTrackCutsNames = new TString[4]; | |
420 | fTrackCutsNames[0]= "associated track:: pt min [GeV/c]................: "; | |
421 | fTrackCutsNames[1]= "associated track:: pt max [GeV/c]................: "; | |
422 | fTrackCutsNames[2]= "associated track:: d0 min [cm]...................: "; | |
423 | fTrackCutsNames[3]= "associated track:: d0 max [cm]...................: "; | |
424 | ||
425 | ||
426 | ||
427 | return; | |
428 | } | |
429 | //-------------------------------------------------------------------------- | |
430 | void AliHFAssociatedTrackCuts::SetAODvZeroCuts(Float_t *cutsarray) | |
431 | { | |
432 | ||
433 | ||
434 | if(!fAODvZeroCuts) fAODvZeroCuts = new Float_t[fNvZeroCuts]; | |
435 | for(Int_t i =0; i<fNvZeroCuts; i++){ | |
436 | fAODvZeroCuts[i] = cutsarray[i]; | |
437 | } | |
438 | SetvZeroCutsNames(); | |
439 | return; | |
440 | } | |
441 | //-------------------------------------------------------------------------- | |
442 | void AliHFAssociatedTrackCuts::SetvZeroCutsNames(/*TString *namearray*/){ | |
443 | ||
444 | fvZeroCutsNames = new TString[7]; | |
445 | fvZeroCutsNames[0] = "vZero:: max DCA between two daughters [cm].......: "; | |
446 | fvZeroCutsNames[1] = "vZero:: max fit Chi Square between two daughters.: "; | |
447 | fvZeroCutsNames[2] = "vZero:: min decay length [cm]....................: "; | |
448 | fvZeroCutsNames[3] = "vZero:: max decay length [cm]....................: "; | |
449 | fvZeroCutsNames[4] = "vZero:: max opening angle between daughters [rad]: "; | |
450 | fvZeroCutsNames[5] = "vZero:: pt min [Gev/c]...........................: "; | |
451 | fvZeroCutsNames[6] = "vZero:: |Eta| range <............................: "; | |
452 | ||
453 | ||
454 | return; | |
8c2d7467 | 455 | } |
456 | ||
457 | //-------------------------------------------------------------------------- | |
458 | void AliHFAssociatedTrackCuts::SetPidAssociated() | |
459 | { | |
460 | //setting PidResponse | |
461 | if(fPidObj->GetOldPid()==kFALSE && fPidObj->GetPidResponse()==0x0){ | |
462 | AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager(); | |
463 | AliInputEventHandler *inputHandler=(AliInputEventHandler*)mgr->GetInputEventHandler(); | |
464 | AliPIDResponse *pidResp=inputHandler->GetPIDResponse(); | |
465 | fPidObj->SetPidResponse(pidResp); | |
466 | } | |
815e6bab | 467 | } |
468 | ||
469 | //-------------------------------------------------------------------------- | |
470 | void AliHFAssociatedTrackCuts::PrintAll() | |
471 | { | |
53454b81 | 472 | |
473 | printf("\n================================================="); | |
815e6bab | 474 | printf("\nCuts for the associated track: \n \n"); |
475 | ||
476 | printf("ITS Refit........................................: %s\n",fESDTrackCuts->GetRequireITSRefit() ? "Yes" : "No"); | |
477 | printf("TPC Refit........................................: %s\n",fESDTrackCuts->GetRequireTPCRefit() ? "Yes" : "No"); | |
478 | printf("ITS SA...........................................: %s\n",fESDTrackCuts->GetRequireITSStandAlone() ? "Yes" : "No"); | |
479 | printf("TPC SA...........................................: %s\n",fESDTrackCuts->GetRequireTPCStandAlone() ? "Yes" : "No"); | |
480 | printf("Min number of ITS clusters.......................: %d\n",fESDTrackCuts->GetMinNClustersITS()); | |
481 | printf("Min number of TPC clusters.......................: %d\n",fESDTrackCuts->GetMinNClusterTPC()); | |
482 | Int_t spd = fESDTrackCuts->GetClusterRequirementITS(AliESDtrackCuts::kSPD); | |
53454b81 | 483 | if(spd==0) std::cout << "SPD..............................................: kOff" << std::endl; |
484 | if(spd==1) std::cout << "SPD..............................................: kNone" << std::endl; | |
485 | if(spd==2) std::cout << "SPD..............................................: kAny" << std::endl; | |
486 | if(spd==3) std::cout << "SPD..............................................: kFirst" << std::endl; | |
487 | if(spd==4) std::cout << "SPD..............................................: kOnlyFirst" << std::endl; | |
488 | if(spd==5) std::cout << "SPD..............................................: kSecond" << std::endl; | |
489 | if(spd==6) std::cout << "SPD..............................................: kOnlySecond" << std::endl; | |
490 | if(spd==7) std::cout << "SPD..............................................: kBoth" << std::endl; | |
491 | ||
492 | std::cout << "Filter Bit.......................................: " << fBit << std::endl; | |
493 | std::cout << "Charge...........................................: " << fCharge << std::endl; | |
815e6bab | 494 | |
495 | for(Int_t j=0;j<fNTrackCuts;j++){ | |
53454b81 | 496 | std::cout << fTrackCutsNames[j] << fAODTrackCuts[j] << std::endl; |
815e6bab | 497 | } |
53454b81 | 498 | printf("\n"); |
499 | printf("================================================="); | |
815e6bab | 500 | printf("\nCuts for the K0 candidates: \n \n"); |
501 | for(Int_t k=0;k<fNvZeroCuts;k++){ | |
53454b81 | 502 | std::cout << fvZeroCutsNames[k] << fAODvZeroCuts[k] << std::endl; |
815e6bab | 503 | } |
53454b81 | 504 | std::cout << " " << std::endl; |
bce70c96 | 505 | PrintPoolParameters(); |
53454b81 | 506 | PrintSelectedMCevents(); |
507 | ||
508 | printf("================================================="); | |
509 | printf("\nAdditional description\n"); | |
510 | std::cout << fDescription << std::endl; | |
511 | printf("\n"); | |
bce70c96 | 512 | |
815e6bab | 513 | } |
14c8fedd | 514 | |
515 | //-------------------------------------------------------------------------- | |
bce70c96 | 516 | void AliHFAssociatedTrackCuts::PrintPoolParameters() |
53454b81 | 517 | { |
518 | printf("================================================="); | |
bce70c96 | 519 | printf("\nEvent Pool settings: \n \n"); |
520 | ||
521 | printf("Number of zVtx Bins: %d\n", fNzVtxBins); | |
522 | printf("\nzVtx Bins:\n"); | |
523 | //Double_t zVtxbinLims[fNzVtxBins+1] = fNzVtxBins; | |
524 | for(Int_t k=0; k<fNzVtxBins; k++){ | |
c84dbedf | 525 | printf("Bin %d..............................................: %.1f - %.1f cm\n", k, fZvtxBins[k], fZvtxBins[k+1]); |
bce70c96 | 526 | } |
53454b81 | 527 | printf("\n"); |
bce70c96 | 528 | printf("\nNumber of Centrality(multiplicity) Bins: %d\n", fNCentBins); |
529 | printf("\nCentrality(multiplicity) Bins:\n"); | |
530 | for(Int_t k=0; k<fNCentBins; k++){ | |
c84dbedf | 531 | printf("Bin %d..............................................: %.1f - %.1f\n", k, fCentBins[k], fCentBins[k+1]); |
bce70c96 | 532 | } |
53454b81 | 533 | |
534 | ||
535 | ||
536 | } | |
537 | ||
538 | //-------------------------------------------------------------------------- | |
539 | void AliHFAssociatedTrackCuts::PrintSelectedMCevents() | |
540 | { | |
541 | printf("\n================================================="); | |
542 | ||
543 | printf("\nSelected MC events: \n \n"); | |
544 | printf("Number of selected events: %d\n",fNofMCEventType); | |
545 | ||
546 | for(Int_t k=0; k<fNofMCEventType; k++){ | |
547 | if(fMCEventType[k]==28) printf("=> Flavour excitation \n"); | |
548 | if(fMCEventType[k]==53) printf("=> Pair creation \n"); | |
549 | if(fMCEventType[k]==68) printf("=> Gluon splitting \n"); | |
550 | } | |
bce70c96 | 551 | |
53454b81 | 552 | printf("\n"); |
553 | for(Int_t k=0; k<fNofMCEventType; k++){ | |
554 | printf("MC process code %d \n",fMCEventType[k]); | |
555 | } | |
556 | ||
557 | printf("\n"); | |
bce70c96 | 558 | |
559 | ||
53454b81 | 560 | |
561 | ||
14c8fedd | 562 | } |
bce70c96 | 563 | |
564 |