fGlobalIndex(1),
fCutsRD(0),
fIsUpperCut(0),
-fUsePID(kFALSE)
+fUsePID(kFALSE),
+fPidHF(0),
+fWhyRejection(0)
{
//
// Default Constructor
fGlobalIndex(source.fGlobalIndex),
fCutsRD(0),
fIsUpperCut(0),
- fUsePID(source.fUsePID)
+ fUsePID(source.fUsePID),
+ fPidHF(0),
+ fWhyRejection(source.fWhyRejection)
{
//
// Copy constructor
if(source.fVarNames) SetVarNames(source.fnVars,source.fVarNames,source.fIsUpperCut);
if(source.fCutsRD) SetCuts(source.fGlobalIndex,source.fCutsRD);
if(source.fVarsForOpt) SetVarsForOpt(source.fnVarsForOpt,source.fVarsForOpt);
+ if(source.fPidHF) SetPidHF(source.fPidHF);
PrintAll();
}
fGlobalIndex=source.fGlobalIndex;
fnVarsForOpt=source.fnVarsForOpt;
fUsePID=source.fUsePID;
+ SetPidHF(source.GetPidHF());
+ fWhyRejection=source.fWhyRejection;
if(source.GetTrackCuts()) AddTrackCuts(source.GetTrackCuts());
if(source.fPtBinLimits) SetPtBins(source.fnPtBinLimits,source.fPtBinLimits);
fCutsRD=0;
}
if(fIsUpperCut) {delete [] fIsUpperCut; fIsUpperCut=0;}
-
+ if(fPidHF){
+ delete fPidHF;
+ fPidHF=0;
+ }
}
//---------------------------------------------------------------------------
Bool_t AliRDHFCuts::IsEventSelected(AliVEvent *event) const {
if(!fTrackCuts) return kTRUE;
Int_t ndaughters = d->GetNDaughters();
- AliESDtrack* esdTrack=0;
AliAODVertex *vAOD = d->GetPrimaryVtx();
Double_t pos[3],cov[6];
vAOD->GetXYZ(pos);
vAOD->GetCovarianceMatrix(cov);
- const AliESDVertex *vESD = new AliESDVertex(pos,cov,100.,100);
+ const AliESDVertex vESD(pos,cov,100.,100);
Bool_t retval=kTRUE;
if(!dgTrack) retval = kFALSE;
//printf("charge %d\n",dgTrack->Charge());
if(dgTrack->Charge()==0) continue; // it's not a track, but a V0
- // convert to ESD track here
- esdTrack=new AliESDtrack(dgTrack);
- // needed to calculate the impact parameters
- esdTrack->RelateToVertex(vESD,0.,3.);
- if(!fTrackCuts->IsSelected(esdTrack)) retval = kFALSE;
- delete esdTrack; esdTrack=0;
- }
- delete vESD; vESD=0;
+ if(!IsDaughterSelected(dgTrack,&vESD,fTrackCuts)) retval = kFALSE;
+ }
return retval;
}
//---------------------------------------------------------------------------
+Bool_t AliRDHFCuts::IsDaughterSelected(AliAODTrack *track,const AliESDVertex *primary,AliESDtrackCuts *cuts) const {
+ //
+ // Convert to ESDtrack, relate to vertex and check cuts
+ //
+ if(!cuts) return kTRUE;
+
+ Bool_t retval=kTRUE;
+
+ // convert to ESD track here
+ AliESDtrack esdTrack(track);
+ // needed to calculate the impact parameters
+ esdTrack.RelateToVertex(primary,0.,3.);
+ if(!cuts->IsSelected(&esdTrack)) retval = kFALSE;
+
+ return retval;
+}
+//---------------------------------------------------------------------------
void AliRDHFCuts::SetPtBins(Int_t nPtBinLimits,Float_t *ptBinLimits) {
// Set the pt bins