#ifndef ALIAODRECOCASCADEHF_H
#define ALIAODRECOCASCADEHF_H
#include <TRef.h>
#include <TRefArray.h>
#include <TClonesArray.h>
#include <TClass.h>
#include "AliAODVertex.h"
#include "AliAODv0.h"
#include "AliAODRecoDecayHF2Prong.h"
class AliAODRecoCascadeHF : public AliAODRecoDecayHF2Prong {
public:
AliAODRecoCascadeHF();
AliAODRecoCascadeHF(AliAODVertex *vtx2, Short_t charge,
Double_t *px, Double_t *py, Double_t *pz,
Double_t *d0, Double_t *d0err, Double_t dca);
AliAODRecoCascadeHF(AliAODVertex *vtx2, Short_t charge,
Double_t *d0, Double_t *d0err, Double_t dca);
virtual ~AliAODRecoCascadeHF();
AliAODRecoCascadeHF(const AliAODRecoCascadeHF& source);
AliAODRecoCascadeHF& operator=(const AliAODRecoCascadeHF& source);
AliAODRecoDecayHF2Prong* Get2Prong() const {
if(!GetDaughter(1)) return 0;
if ( ! ((AliAODRecoDecay*)GetDaughter(1))->IsA()->InheritsFrom("AliAODRecoDecayHF2Prong") ){
AliWarning("Object is not of type AliAODRecoDecayHF2Prong");
return 0;
}
return (AliAODRecoDecayHF2Prong*)GetDaughter(1);
}
AliAODTrack* GetBachelor() const {return (AliAODTrack*)GetDaughter(0);}
AliAODv0* Getv0() const {
if ( ! ((AliAODRecoDecay*)GetDaughter(1))->IsA()->InheritsFrom("AliAODv0") ){
AliWarning("Object is not of type v0");
return 0;
}
return (AliAODv0*)GetDaughter(1);
}
AliAODTrack* Getv0PositiveTrack() const { return (AliAODTrack*)Getv0()->GetDaughter(0); }
AliAODTrack* Getv0NegativeTrack() const { return (AliAODTrack*)Getv0()->GetDaughter(1); }
Double_t EDstar() const {return E(413);}
Double_t YDstar() const {return Y(413);}
Bool_t SelectDstar(const Double_t *cutsDstar,const Double_t *cutsD0,Bool_t testD0=kTRUE) const;
Double_t InvMassD0() const {return (Charge()>0 ? Get2Prong()->InvMassD0() : Get2Prong()->InvMassD0bar());}
Double_t InvMassDstarKpipi() const;
Double_t DeltaInvMass() const {return (InvMassDstarKpipi()-InvMassD0());}
Double_t AngleD0dkpPisoft() const;
Bool_t TrigonometricalCut() const;
Double_t InvMassLctoK0sP() const {
UInt_t pdg[2]={2212,310}; return InvMass(2,pdg);
}
Double_t InvMassLctoLambdaPi() const {
UInt_t pdg[2]={211,3122}; return InvMass(2,pdg);
}
Bool_t SelectLctoV0(const Double_t *cutsLctoV0, Bool_t okLck0sp, Bool_t okLcLpi, Bool_t okLcLbarpi) const;
Int_t MatchToMC(Int_t pdgabs,Int_t pdgabs2prong,
Int_t *pdgDg,Int_t *pdgDg2prong,
TClonesArray *mcArray, Bool_t isV0=kFALSE) const;
Double_t CosV0PointingAngle() const;
Double_t CosV0PointingAngleXY() const;
Double_t DecayLengthV0() const;
Double_t DecayLengthXYV0() const;
Double_t NormalizedV0DecayLength() const;
Double_t NormalizedV0DecayLengthXY() const;
protected:
ClassDef(AliAODRecoCascadeHF, 2);
};
#endif
AliAODRecoCascadeHF.h:100 AliAODRecoCascadeHF.h:101 AliAODRecoCascadeHF.h:102