X-Git-Url: http://git.uio.no/git/?a=blobdiff_plain;f=PWG3%2FvertexingHF%2FAliRDHFCuts.cxx;h=9ef087085679abf8e5d7373612f2aabf71b15e49;hb=46627015cd3f8e48fd27bdc6d9960b49f8130e92;hp=e83d335695f1ab6da3b40bb9743a8e2ff5662b81;hpb=c96634a269febf53bb70cd7b73e62e50e44bc1c9;p=u%2Fmrichter%2FAliRoot.git diff --git a/PWG3/vertexingHF/AliRDHFCuts.cxx b/PWG3/vertexingHF/AliRDHFCuts.cxx index e83d335695f..9ef08708567 100644 --- a/PWG3/vertexingHF/AliRDHFCuts.cxx +++ b/PWG3/vertexingHF/AliRDHFCuts.cxx @@ -54,7 +54,9 @@ fVarsForOpt(0), fGlobalIndex(1), fCutsRD(0), fIsUpperCut(0), -fUsePID(kFALSE) +fUsePID(kFALSE), +fPidHF(0), +fWhyRejection(0) { // // Default Constructor @@ -79,7 +81,9 @@ AliRDHFCuts::AliRDHFCuts(const AliRDHFCuts &source) : fGlobalIndex(source.fGlobalIndex), fCutsRD(0), fIsUpperCut(0), - fUsePID(source.fUsePID) + fUsePID(source.fUsePID), + fPidHF(0), + fWhyRejection(source.fWhyRejection) { // // Copy constructor @@ -90,6 +94,7 @@ AliRDHFCuts::AliRDHFCuts(const AliRDHFCuts &source) : 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(); } @@ -113,6 +118,8 @@ AliRDHFCuts &AliRDHFCuts::operator=(const AliRDHFCuts &source) 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); @@ -136,7 +143,10 @@ AliRDHFCuts::~AliRDHFCuts() { fCutsRD=0; } if(fIsUpperCut) {delete [] fIsUpperCut; fIsUpperCut=0;} - + if(fPidHF){ + delete fPidHF; + fPidHF=0; + } } //--------------------------------------------------------------------------- Bool_t AliRDHFCuts::IsEventSelected(AliVEvent *event) const { @@ -167,12 +177,11 @@ Bool_t AliRDHFCuts::AreDaughtersSelected(AliAODRecoDecayHF *d) 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; @@ -181,19 +190,30 @@ Bool_t AliRDHFCuts::AreDaughtersSelected(AliAODRecoDecayHF *d) const { 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