AliPhysics  master (3d17d9d)
AliRDHFCutsCdeuterontodKpi.cxx
Go to the documentation of this file.
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 
19 // \class for cuts on reconstructed c-deuteron -> dKpi
20 // \First implementation by copying the AliRDHFCutsXicTopKpi class
21 // \inheriting from this class
22 // \author Author: J. Norman (jaime.norman@cern.ch)
24 
25 #include <TDatabasePDG.h>
26 #include <Riostream.h>
27 #include <AliAnalysisManager.h>
28 #include <AliInputEventHandler.h>
29 #include <AliPIDResponse.h>
30 
32 #include "AliRDHFCutsXictopKpi.h"
34 #include "AliRDHFCuts.h"
35 #include "AliAODTrack.h"
36 #include "AliESDtrack.h"
37 #include "AliKFParticle.h"
38 #include "AliESDVertex.h"
39 #include "AliVertexerTracks.h"
40 
41 using std::cout;
42 using std::endl;
43 
47 
48 //--------------------------------------------------------------------------
51 {
52  //
53  // Default Constructor
54  //
55 // Int_t nvars=13;
56 // SetNVars(nvars);
57 // TString varNames[13]={"inv. mass [GeV]",
58 // "pTK [GeV/c]",
59 // "pTP [GeV/c]",
60 // "d0K [cm] lower limit!",
61 // "d0Pi [cm] lower limit!",
62 // "dist12 (cm)",
63 // "sigmavert (cm)",
64 // "dist prim-sec (cm)",
65 // "pM=Max{pT1,pT2,pT3} (GeV/c)",
66 // "cosThetaPoint",
67 // "Sum d0^2 (cm^2)",
68 // "dca cut (cm)",
69 // "cut on pTpion [GeV/c]"};
70 // Bool_t isUpperCut[13]={kTRUE,
71 // kFALSE,
72 // kFALSE,
73 // kFALSE,
74 // kFALSE,
75 // kFALSE,
76 // kTRUE,
77 // kFALSE,
78 // kFALSE,
79 // kFALSE,
80 // kFALSE,
81 // kTRUE,
82 // kFALSE
83 // };
84 // SetVarNames(nvars,varNames,isUpperCut);
85 // Bool_t forOpt[13]={kFALSE,
86 // kTRUE,
87 // kTRUE,
88 // kFALSE,
89 // kFALSE,
90 // kFALSE,
91 // kFALSE,
92 // kTRUE,
93 // kFALSE,
94 // kFALSE,
95 // kFALSE,
96 // kFALSE,
97 // kTRUE};
98 // SetVarsForOpt(4,forOpt);
99 // Float_t limits[2]={0,999999999.};
100 // SetPtBins(2,limits);
101 // for (Int_t ispecies=0;ispecies<AliPID::kSPECIES;++ispecies)
102 // fPIDThreshold[ispecies]=0.;
103 }
104 //--------------------------------------------------------------------------
106  AliRDHFCutsXictopKpi(source)
107 {
108  //
109  // Copy constructor
110  //
111 // if (source.fPidObjprot) fPidObjprot = new AliAODPidHF(*(source.fPidObjprot));
112 // else fPidObjprot = new AliAODPidHF();
113 // if (source.fPidObjpion) fPidObjpion = new AliAODPidHF(*(source.fPidObjpion));
114 // else fPidObjpion = new AliAODPidHF();
115 // memcpy(fPIDThreshold,source.fPIDThreshold,AliPID::kSPECIES*sizeof(Double_t));
116 }
117 //--------------------------------------------------------------------------
119 {
120  //
121  // assignment operator
122  //
123  if(this != &source) {
124  AliRDHFCuts::operator=(source);
125  }
126 
127  return *this;
128 }
129 //---------------------------------------------------------------------------
131  //
132  // // Default Destructor
133  //
134 
135 }
136 
137 //---------------------------------------------------------------------------
139  //
140  // Fills in vars the values of the variables
141  //
142 
143  if(nvars!=fnVarsForOpt) {
144  printf("AliRDHFCutsCdeuterontodKpi::GetCutsVarsForOpt: wrong number of variables\n");
145  return;
146  }
147 
149 
150  Int_t iter=-1;
151  if(fVarsForOpt[0]){
152  iter++;
153  vars[iter]=dd->InvMassCdeuterondKpi();
154  }
155  if(fVarsForOpt[1]){
156  iter++;
157  for(Int_t iprong=0;iprong<3;iprong++){
158  if(TMath::Abs(pdgdaughters[iprong])==321) {
159  vars[iter]=dd->PtProng(iprong);
160  }
161  }
162  }
163  if(fVarsForOpt[2]){
164  iter++;
165  for(Int_t iprong=0;iprong<3;iprong++){
166  if(TMath::Abs(pdgdaughters[iprong])==1000010020) {
167  vars[iter]=dd->PtProng(iprong);
168  }
169  }
170  }
171  if(fVarsForOpt[3]){
172  iter++;
173  for(Int_t iprong=0;iprong<3;iprong++){
174  if(TMath::Abs(pdgdaughters[iprong])==1000010020) {
175  vars[iter]=dd->Getd0Prong(iprong);
176  }
177  }
178  }
179  if(fVarsForOpt[4]){
180  iter++;
181  for(Int_t iprong=0;iprong<3;iprong++){
182  if(TMath::Abs(pdgdaughters[iprong])==211) {
183  vars[iter]=dd->Getd0Prong(iprong);
184  }
185  }
186  }
187  if(fVarsForOpt[5]){
188  iter++;
189  vars[iter]=dd->GetDist12toPrim();
190  }
191  if(fVarsForOpt[6]){
192  iter++;
193  vars[iter]=dd->GetSigmaVert(aod);
194  }
195  if(fVarsForOpt[7]){
196  iter++;
197  vars[iter] = dd->DecayLength();
198  }
199  if(fVarsForOpt[8]){
200  iter++;
201  Float_t ptmax=0;
202  for(Int_t i=0;i<3;i++){
203  if(dd->PtProng(i)>ptmax)ptmax=dd->PtProng(i);
204  }
205  vars[iter]=ptmax;
206  }
207  if(fVarsForOpt[9]){
208  iter++;
209  vars[iter]=dd->CosPointingAngle();
210  }
211  if(fVarsForOpt[10]){
212  iter++;
213  vars[iter]=dd->Getd0Prong(0)*dd->Getd0Prong(0)+dd->Getd0Prong(1)*dd->Getd0Prong(1)+dd->Getd0Prong(2)*dd->Getd0Prong(2);
214  }
215  if(fVarsForOpt[11]){
216  iter++;
217  vars[iter]=dd->GetDCA();
218  }
219  if(fVarsForOpt[12]){
220  iter++;
221  for(Int_t iprong=0;iprong<3;iprong++){
222  if(TMath::Abs(pdgdaughters[iprong])==211) {
223  vars[iter]=dd->PtProng(iprong);
224  }
225  }
226  }
227 
228  return;
229 }
230 //---------------------------------------------------------------------------
232  //
233  // Apply selection
234  //
235 
236  //Printf("---- WE ARE IN THE C-DEUTERON CLASS - WELL DONE ---");
237  if(!fCutsRD){
238  AliError("Cut matrice not inizialized. Exit...\n");
239  return 0;
240  }
241  //PrintAll();
243 
244  if(!d){
245  AliError("AliAODRecoDecayHF3Prong null \n");
246  return 0;
247  }
248 
249  //
250  // NB: pdg code of Lc... shall we change it ???
251  //
252  if(fKeepSignalMC) if(IsSignalMC(d,aod,4122)) return 3;
253 
254  Int_t returnvalue=3;
255  Int_t returnvaluePID=3;
256 
257  if(d->Pt()<fMinPtCand) return 0;
258  if(d->Pt()>fMaxPtCand) return 0;
259  //Printf("1: Pt cut passed");
260 
262  //Printf("2: track selection filter bit and bad daughter passed");
263 
264 
265  // selection on daughter tracks
266  if(selectionLevel==AliRDHFCuts::kAll ||
267  selectionLevel==AliRDHFCuts::kTracks) {
268  if(!AreDaughtersSelected(d,aod)) return 0;
269  }
270  //Printf("3: selection on daughter tracks passed");
271 
272 
273  // PID selection
274  if(selectionLevel==AliRDHFCuts::kAll ||
275  selectionLevel==AliRDHFCuts::kCandidate||
276  selectionLevel==AliRDHFCuts::kPID) {
277  switch (fPIDStrategy) {
278  Printf("check PID strategy = %i",fPIDStrategy);
279  case kNSigma:
280  returnvaluePID = IsSelectedPID(d);
281  break;
282  case kNSigmaMin:
283  returnvaluePID = IsSelectedPID(d);
284  break;
285  case kNSigmaPbPb:
286  returnvaluePID = IsSelectedNSigmaPbPb(d);
287  break;
288  case kCombined:
289  returnvaluePID = IsSelectedCombinedPID(d);
290  break;
291  case kCombinedSoft:
292  returnvaluePID = IsSelectedCombinedPIDSoft(d);
293  break;
294  case kNSigmaStrong:
295  returnvaluePID = IsSelectedPIDStrong(d);
296  break;
297  case kCombinedpPb:
298  returnvaluePID = IsSelectedCombinedPIDpPb(d);
299  break;
300  case kCombinedpPb2:
301  returnvaluePID = IsSelectedCombinedPIDpPb2(d);
302  break;
303  case kCombinedProb:
304  returnvaluePID = IsSelectedCombinedPIDProb(d);
305  break;
306  }
307  fIsSelectedPID=returnvaluePID;
308  //Printf("is selected PID = %i",fIsSelectedPID);
309  }
310  // if(fUsePID || selectionLevel==AliRDHFCuts::kPID) returnvaluePID = IsSelectedCombinedPID(d); // to test!!
311  if(returnvaluePID==0) return 0;
312  //Printf("4: passed PID selection");
313 
314 
315 
316 
317  // selection on candidate
318  if(selectionLevel==AliRDHFCuts::kAll ||
319  selectionLevel==AliRDHFCuts::kCandidate) {
320 
321  Double_t pt=d->Pt();
322  //Printf("\tcandidate selection");
323  //Printf("\tpt = %f",pt);
324 
325  Int_t ptbin=PtBin(pt);
326 
327  Double_t mCdeuterondKpi=0.,mCdeuteronpiKd=0.;
328  Int_t okCdeuterondKpi=1,okCdeuteronpiKd=1;
329 
330  Double_t mLcPDG = 3.226;
331 
332  mCdeuterondKpi=d->InvMassCdeuterondKpi();
333  mCdeuteronpiKd=d->InvMassCdeuteronpiKd();
334  //Printf("\tmass c deuteron dKpi = %f",mCdeuterondKpi);
335  //Printf("\tmass c deuteron piKd = %f",mCdeuteronpiKd);
336 
337  // Comparison with Lc mass from PDG.
338  // From the cutobject, only the upper limit is set.
339  // The lower limit is hardocoded, in order to discard candidates with
340  // mass lower than the Lc.
341  if(TMath::Abs(mCdeuterondKpi-mLcPDG) > fCutsRD[GetGlobalIndex(0,ptbin)]) okCdeuterondKpi = 0;
342  if(TMath::Abs(mCdeuteronpiKd-mLcPDG) > fCutsRD[GetGlobalIndex(0,ptbin)]) okCdeuteronpiKd = 0;
343  if(!okCdeuterondKpi && !okCdeuteronpiKd) return 0;
344  //Printf("5: passed invariant mass selection");
345 
346  switch (fCutsStrategy) {
347 
348  case kStandard:
349  if(TMath::Abs(d->PtProng(1)) < fCutsRD[GetGlobalIndex(1,ptbin)] || TMath::Abs(d->Getd0Prong(1))<fCutsRD[GetGlobalIndex(3,ptbin)]) return 0;//Kaon
350  if(d->Pt()>=3. && d->PProng(1)<0.55) return 0;
351  if(fUseSpecialCut) {
352  if(TMath::Abs(d->PtProng(0)) < TMath::Abs(d->PtProng(2)) )okCdeuterondKpi=0;
353  if(TMath::Abs(d->PtProng(2)) < TMath::Abs(d->PtProng(0)) )okCdeuteronpiKd=0;
354  }
355  if((TMath::Abs(d->PtProng(0)) < fCutsRD[GetGlobalIndex(2,ptbin)]) || (TMath::Abs(d->PtProng(2)) < fCutsRD[GetGlobalIndex(12,ptbin)])) okCdeuterondKpi=0;
356  if((TMath::Abs(d->PtProng(2)) < fCutsRD[GetGlobalIndex(2,ptbin)]) || (TMath::Abs(d->PtProng(0)) < fCutsRD[GetGlobalIndex(12,ptbin)]))okCdeuteronpiKd=0;
357  if(!okCdeuterondKpi && !okCdeuteronpiKd) return 0;
358  //2track cuts
359  // postponed
360  //if(d->GetDist12toPrim()<fCutsRD[GetGlobalIndex(5,ptbin)]|| d->GetDist23toPrim()<fCutsRD[GetGlobalIndex(5,ptbin)]) return 0;
361  //if(d->GetDist12toPrim()>0.5) return 0;
362  //if(d->GetDist23toPrim()>0.5) return 0;
364  if(d->Getd0Prong(0)*d->Getd0Prong(1)<0. && d->Getd0Prong(2)*d->Getd0Prong(1)<0.) return 0;
365  }
366  //sec vert
367  if(d->DecayLength()<fCutsRD[GetGlobalIndex(7,ptbin)]) return 0;
368  if(d->DecayLength()>0.5) return 0;
369 
370  // Double_t sumd0s=d->Getd0Prong(0)*d->Getd0Prong(0)+d->Getd0Prong(1)*d->Getd0Prong(1)+d->Getd0Prong(2)*d->Getd0Prong(2);
371  // if(sumd0s<fCutsRD[GetGlobalIndex(10,ptbin)]) return 0;
372  if((d->Getd0Prong(0)*d->Getd0Prong(0)+d->Getd0Prong(1)*d->Getd0Prong(1)+d->Getd0Prong(2)*d->Getd0Prong(2))<fCutsRD[GetGlobalIndex(10,ptbin)]) return 0;
373 
374  if(TMath::Abs(d->PtProng(0))<fCutsRD[GetGlobalIndex(8,ptbin)] && TMath::Abs(d->PtProng(1))<fCutsRD[GetGlobalIndex(8,ptbin)] && TMath::Abs(d->PtProng(2))<fCutsRD[GetGlobalIndex(8,ptbin)]) return 0;
375  if(d->CosPointingAngle()< fCutsRD[GetGlobalIndex(9,ptbin)]) return 0;
376  if(d->GetSigmaVert(aod)>fCutsRD[GetGlobalIndex(6,ptbin)]) return 0;
377 
378  //DCA
379  for(Int_t i=0;i<3;i++) if(d->GetDCA(i)>fCutsRD[GetGlobalIndex(11,ptbin)]) return 0;
380 
381  // dist12 and dist23
382  if(d->GetDist12toPrim()<fCutsRD[GetGlobalIndex(5,ptbin)]|| d->GetDist23toPrim()<fCutsRD[GetGlobalIndex(5,ptbin)]) return 0;
383  if(d->GetDist12toPrim()>0.5) return 0;
384  if(d->GetDist23toPrim()>0.5) return 0;
385 
386  break;
387 
388 
389  case kKF:
390  Int_t pdgs[3]={0,321,0};
391  Bool_t constraint=kFALSE;
392  if(fCutsRD[GetGlobalIndex(1,ptbin)]>0.) constraint=kTRUE;
393  Double_t field=aod->GetMagneticField();
394  if (returnvaluePID==1 || returnvaluePID==3){
395 
396  pdgs[0]=2122;pdgs[2]=211;
397  AliKFParticle *lc1=ReconstructKF(d,pdgs,field,constraint);
398  if(!lc1){
399  okCdeuterondKpi=0;
400  }else{
401  if(lc1->GetChi2()/lc1->GetNDF()>fCutsRD[GetGlobalIndex(2,ptbin)]) okCdeuterondKpi=0;
402  }
403  } else if(returnvaluePID>=2){
404 
405  pdgs[0]=211;pdgs[2]=1000010020;
406  AliKFParticle *lc2=ReconstructKF(d,pdgs,field,constraint);
407  if(!lc2){
408  okCdeuteronpiKd=0;
409  }else{
410  if(lc2->GetChi2()/lc2->GetNDF()>fCutsRD[GetGlobalIndex(2,ptbin)])okCdeuteronpiKd=0;
411  }
412  }
413  break;
414 
415  }
416 
417  if(okCdeuterondKpi) returnvalue=1; //cuts passed as Xic->pKpi
418  if(okCdeuteronpiKd) returnvalue=2; //cuts passed as Xic->piKp
419  if(okCdeuterondKpi && okCdeuteronpiKd) returnvalue=3; //cuts passed as both pKpi and piKp
420 
421  }
422 
423 
424  Int_t returnvalueTot=CombinePIDCuts(returnvalue,returnvaluePID);
425  //Printf("\tcuts return value = %i",returnvalue);
426  //Printf("\tPID return value = %i",returnvaluePID);
427  //Printf("\tfinal cuts return value = %i",returnvalueTot);
428  return returnvalueTot;
429 }
430 
431 
432 
434 
435  //Printf(" -- IN THE PID SELECTION FUNCTION - SICK");
436 
437  if(!fUsePID || !obj) return 3;
438  Int_t okLcpKpi=0,okLcpiKp=0;
439  Int_t returnvalue=0;
440  Bool_t isMC=fPidHF->GetMC();
441  Bool_t ispion0=kTRUE,ispion2=kTRUE;
442  Bool_t isdeuteron0=kFALSE,isdeuteron2=kFALSE;
443  Bool_t iskaon1=kFALSE;
444  if(isMC) {
445  fPidObjprot->SetMC(kTRUE);
446  fPidObjpion->SetMC(kTRUE);
447  }
448 
449  if(fPidObjprot->GetPidResponse()==0x0){
450  AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager();
451  AliInputEventHandler *inputHandler=(AliInputEventHandler*)mgr->GetInputEventHandler();
452  AliPIDResponse *pidResp=inputHandler->GetPIDResponse();
453  fPidObjprot->SetPidResponse(pidResp);
454  }
455  if(fPidObjpion->GetPidResponse()==0x0){
456  AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager();
457  AliInputEventHandler *inputHandler=(AliInputEventHandler*)mgr->GetInputEventHandler();
458  AliPIDResponse *pidResp=inputHandler->GetPIDResponse();
459  fPidObjpion->SetPidResponse(pidResp);
460  }
461  if(fPidHF->GetPidResponse()==0x0){
462  AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager();
463  AliInputEventHandler *inputHandler=(AliInputEventHandler*)mgr->GetInputEventHandler();
464  AliPIDResponse *pidResp=inputHandler->GetPIDResponse();
465  fPidHF->SetPidResponse(pidResp);
466  }
467 
468  for(Int_t i=0;i<3;i++){
469  AliAODTrack *track=(AliAODTrack*)obj->GetDaughter(i);
470  if(!track) return 0;
471  if(i==1) {
472  // identify kaon
473  //if(track->P()<0.55){
474  // fPidHF->SetTOF(kFALSE);
475  // fPidHF->SetTOFdecide(kFALSE);
476  //}
477  Int_t isKaon=0;
478  isKaon=fPIDStrategy==kNSigmaMin?fPidHF->MatchTPCTOFMin(track,3):fPidHF->MakeRawPid(track,3);
479  if(isKaon>=1) iskaon1=kTRUE;
480  // if(track->P()<0.55){
481  // fPidHF->SetTOF(kTRUE);
482  // fPidHF->SetTOFdecide(kTRUE);
483  // }
484 
485 
486  if(isKaon>=1) iskaon1=kTRUE;
487 
488  if(!iskaon1) return 0;
489 
490  }else{
491  //pion or deuteron
492  //if(track->P()<1.){
493  // fPidObjprot->SetTOF(kFALSE);
494  // fPidObjprot->SetTOFdecide(kFALSE);
495  // }
496 
497  Int_t isDeuteron=0;
499  Int_t isPion=0;
501 
502  // if(track->P()<1.){
503  // fPidObjprot->SetTOF(kTRUE);
504  // fPidObjprot->SetTOFdecide(kTRUE);
505  // }
506 
507 
508  if(i==0) {
509  if(isPion<0) ispion0=kFALSE;
510  if(isDeuteron>=1) isdeuteron0=kTRUE;
511 
512  }
513  if(!ispion0 && !isdeuteron0) return 0;
514  if(i==2) {
515  if(isPion<0) ispion2=kFALSE;
516  if(isDeuteron>=1) isdeuteron2=kTRUE;
517  }
518 
519  }
520  }
521 
522  //Printf("isdeuteron0 = %i, isdeuteron2 = %i, ispion0 = %i, iskaon2 = %i", isdeuteron0, isdeuteron2, ispion0, ispion2);
523  if(ispion2 && isdeuteron0 && iskaon1) okLcpKpi=1;
524  if(ispion0 && isdeuteron2 && iskaon1) okLcpiKp=1;
525  if(okLcpKpi) returnvalue=1; //cuts passed as Lc->pKpi
526  if(okLcpiKp) returnvalue=2; //cuts passed as Lc->piKp
527  if(okLcpKpi && okLcpiKp) returnvalue=3; //cuts passed as both pKpi and piKp
528 
529  return returnvalue;
530 }
Int_t IsSelectedCombinedPIDProb(AliAODRecoDecayHF *obj)
Bool_t fUseSpecialCut
cut strategy (standard or KF)
Int_t PtBin(Float_t pt) const
Definition: AliRDHFCuts.h:330
double Double_t
Definition: External.C:58
Double_t InvMassCdeuteronpiKd() const
Bool_t IsSignalMC(AliAODRecoDecay *d, AliAODEvent *aod, Int_t pdg) const
Int_t IsSelectedNSigmaPbPb(AliAODRecoDecayHF *obj)
AliRDHFCutsCdeuterontodKpi(const char *name="CutsLctopKpi")
AliRDHFCuts & operator=(const AliRDHFCuts &source)
Bool_t fUsePID
Definition: AliRDHFCuts.h:476
Int_t MatchTPCTOFMin(AliAODTrack *track, Int_t specie)
PID nSigma strategy closer to the Bayesian approach with Max. prob.
Bool_t HasBadDaughters() const
int Int_t
Definition: External.C:63
Bool_t fUseTrackSelectionWithFilterBits
flag to reject kink daughters
Definition: AliRDHFCuts.h:512
Int_t fnVarsForOpt
Definition: AliRDHFCuts.h:471
float Float_t
Definition: External.C:68
const Double_t ptmax
Double_t fMaxPtCand
minimum pt of the candidate
Definition: AliRDHFCuts.h:500
AliRDHFCutsCdeuterontodKpi & operator=(const AliRDHFCutsCdeuterontodKpi &source)
ECutsStrategy fCutsStrategy
PID threshold for each species.
Bool_t fKeepSignalMC
max rapidity of candidate (if !=-999 overrides IsInFiducialAcceptance)
Definition: AliRDHFCuts.h:502
Double_t GetSigmaVert(const AliAODEvent *aod=0x0)
Int_t fIsSelectedPID
outcome of cuts selection
Definition: AliRDHFCuts.h:498
Int_t CombinePIDCuts(Int_t returnvalue, Int_t returnvaluePID) const
Bool_t GetMC() const
Definition: AliAODPidHF.h:161
Int_t MakeRawPid(AliAODTrack *track, Int_t specie)
AliPIDResponse * GetPidResponse() const
Definition: AliAODPidHF.h:173
virtual void GetCutVarsForOpt(AliAODRecoDecayHF *d, Float_t *vars, Int_t nvars, Int_t *pdgdaughters)
Int_t IsSelectedCombinedPID(AliAODRecoDecayHF *obj)
Float_t * fCutsRD
fnVars*fnPtBins
Definition: AliRDHFCuts.h:474
Bool_t * fVarsForOpt
number of cut vars to be optimized for candidates
Definition: AliRDHFCuts.h:472
Bool_t isMC
Bool_t AreDaughtersSelected(AliAODRecoDecayHF *rd, const AliAODEvent *aod=0x0) const
void SetMC(Bool_t mc)
Definition: AliAODPidHF.h:114
Int_t IsSelectedPID(AliAODRecoDecayHF *obj)
Int_t IsSelectedCombinedPIDpPb(AliAODRecoDecayHF *obj)
virtual Int_t IsSelected(TObject *obj, Int_t selectionLevel)
AliKFParticle * ReconstructKF(AliAODRecoDecayHF3Prong *d, Int_t *pdgs, Double_t field, Bool_t constraint) const
Double_t InvMassCdeuterondKpi() const
Int_t IsSelectedCombinedPIDSoft(AliAODRecoDecayHF *obj)
bool Bool_t
Definition: External.C:53
Double_t CosPointingAngle() const
AliAODPidHF * fPidHF
enable AOD049 centrality cleanup
Definition: AliRDHFCuts.h:478
Int_t IsSelectedCombinedPIDpPb2(AliAODRecoDecayHF *obj)
Int_t GetGlobalIndex(Int_t iVar, Int_t iPtBin) const
Double_t DecayLength() const
Double_t fMinPtCand
outcome of PID selection
Definition: AliRDHFCuts.h:499
Int_t IsSelectedPIDStrong(AliAODRecoDecayHF *obj)
void SetPidResponse(AliPIDResponse *pidResp)
Definition: AliAODPidHF.h:124