]> git.uio.no Git - u/mrichter/AliRoot.git/blame - PWGHF/correlationHF/AliHFAssociatedTrackCuts.cxx
Coverity
[u/mrichter/AliRoot.git] / PWGHF / correlationHF / AliHFAssociatedTrackCuts.cxx
CommitLineData
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 36using std::cout;
37using std::endl;
815e6bab 38
39ClassImp(AliHFAssociatedTrackCuts)
40
41//--------------------------------------------------------------------------
42AliHFAssociatedTrackCuts::AliHFAssociatedTrackCuts():
43AliAnalysisCuts(),
44fESDTrackCuts(0),
45fPidObj(0),
bce70c96 46
47fPoolMaxNEvents(0),
48fPoolMinNTracks(0),
49fMinEventsToMix(0),
50fNzVtxBins(0),
51fNzVtxBinsDim(0),
52fZvtxBins(0),
53fNCentBins(0),
54fNCentBinsDim(0),
55fCentBins(0),
56
53454b81 57fNofMCEventType(0),
58fMCEventType(0),
59
815e6bab 60fNTrackCuts(0),
61fAODTrackCuts(0),
62fTrackCutsNames(0),
63fNvZeroCuts(0),
64fAODvZeroCuts(0),
c84dbedf 65fvZeroCutsNames(0),
66fBit(0),
53454b81 67fCharge(0),
68fDescription("")
815e6bab 69
70{
71 //
72 //default constructor
73 //
74 //
75 //default constructor
76 //
77
78}
79
80//--------------------------------------------------------------------------
81AliHFAssociatedTrackCuts::AliHFAssociatedTrackCuts(const char* name, const char* title):
82AliAnalysisCuts(name,title),
83fESDTrackCuts(0),
84fPidObj(0),
bce70c96 85
86fPoolMaxNEvents(0),
87fPoolMinNTracks(0),
88fMinEventsToMix(0),
89fNzVtxBins(0),
90fNzVtxBinsDim(0),
91fZvtxBins(0),
92fNCentBins(0),
93fNCentBinsDim(0),
94fCentBins(0),
95
53454b81 96fNofMCEventType(0),
97fMCEventType(0),
98
815e6bab 99fNTrackCuts(0),
100fAODTrackCuts(0),
101fTrackCutsNames(0),
102fNvZeroCuts(0),
103fAODvZeroCuts(0),
c84dbedf 104fvZeroCutsNames(0),
105fBit(0),
53454b81 106fCharge(0),
107fDescription("")
815e6bab 108
109{
110 //
111 //default constructor
112 //
113
114}
115//--------------------------------------------------------------------------
116AliHFAssociatedTrackCuts::AliHFAssociatedTrackCuts(const AliHFAssociatedTrackCuts &source) :
117AliAnalysisCuts(source),
118fESDTrackCuts(source.fESDTrackCuts),
119fPidObj(source.fPidObj),
bce70c96 120
121fPoolMaxNEvents(source.fPoolMaxNEvents),
122fPoolMinNTracks(source.fPoolMinNTracks),
123fMinEventsToMix(source.fMinEventsToMix),
124fNzVtxBins(source.fNzVtxBins),
125fNzVtxBinsDim(source.fNzVtxBinsDim),
126fZvtxBins(source.fZvtxBins),
127fNCentBins(source.fNCentBins),
128fNCentBinsDim(source.fNCentBinsDim),
129fCentBins(source.fCentBins),
130
53454b81 131fNofMCEventType(source.fNofMCEventType),
132fMCEventType(source.fMCEventType),
133
815e6bab 134fNTrackCuts(source.fNTrackCuts),
135fAODTrackCuts(source.fAODTrackCuts),
136fTrackCutsNames(source.fTrackCutsNames),
137fNvZeroCuts(source.fNvZeroCuts),
138fAODvZeroCuts(source.fAODvZeroCuts),
c84dbedf 139fvZeroCutsNames(source.fvZeroCutsNames),
140fBit(source.fBit),
53454b81 141fCharge(source.fCharge),
142fDescription(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//--------------------------------------------------------------------------
156AliHFAssociatedTrackCuts &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//--------------------------------------------------------------------------
181AliHFAssociatedTrackCuts::~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//--------------------------------------------------------------------------
195Bool_t AliHFAssociatedTrackCuts::IsInAcceptance()
196{
197 printf("Careful: method AliHFAssociatedTrackCuts::IsInAcceptance is not implemented yet \n");
198 return kFALSE;
199}
200//--------------------------------------------------------------------------
bce70c96 201Bool_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//--------------------------------------------------------------------------
213Bool_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
229Bool_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 238Bool_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//--------------------------------------------------------------------------
293Bool_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 308Bool_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//--------------------------------------------------------------------------
358Bool_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//________________________________________________________
395void 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//________________________________________________________
407void 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//________________________________________________________
417void 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//--------------------------------------------------------------------------
430void 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//--------------------------------------------------------------------------
442void 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//--------------------------------------------------------------------------
458void 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//--------------------------------------------------------------------------
470void 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 516void 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//--------------------------------------------------------------------------
539void 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