1 #ifndef ALIAODRECOCASCADEHF_H
2 #define ALIAODRECOCASCADEHF_H
3 /* Copyright(c) 1998-2008, ALICE Experiment at CERN, All rights reserved. *
4 * See cxx source for full Copyright notice */
8 //***********************************************************
9 // Class AliAODRecoCascadeHF
10 // base class for AOD reconstructed heavy-flavour cascade decays
12 // The convention is: prong 0 is the bachelor, prong 1 is the "V0"
14 // Author: X-M. Zhang, zhangxm@iopp.ccnu.edu.cn
15 //***********************************************************
18 #include <TRefArray.h>
19 #include <TClonesArray.h>
21 #include "AliAODVertex.h"
23 #include "AliAODRecoDecayHF2Prong.h"
25 class AliAODRecoCascadeHF : public AliAODRecoDecayHF2Prong {
29 AliAODRecoCascadeHF();
30 AliAODRecoCascadeHF(AliAODVertex *vtx2, Short_t charge,
31 Double_t *px, Double_t *py, Double_t *pz,
32 Double_t *d0, Double_t *d0err, Double_t dca);
33 AliAODRecoCascadeHF(AliAODVertex *vtx2, Short_t charge,
34 Double_t *d0, Double_t *d0err, Double_t dca);
35 virtual ~AliAODRecoCascadeHF();
37 AliAODRecoCascadeHF(const AliAODRecoCascadeHF& source);
38 AliAODRecoCascadeHF& operator=(const AliAODRecoCascadeHF& source);
40 // 2prong (D0 for Dstar)
41 AliAODRecoDecayHF2Prong* Get2Prong() const {
42 if(!GetDaughter(1)) return 0;
43 if ( ! ((AliAODRecoDecay*)GetDaughter(1))->IsA()->InheritsFrom("AliAODRecoDecayHF2Prong") ){
44 AliWarning("Object is not of type AliAODRecoDecayHF2Prong");
47 return (AliAODRecoDecayHF2Prong*)GetDaughter(1);
50 // Bachelor (soft pion for Dstar)
51 AliAODTrack* GetBachelor() const {return (AliAODTrack*)GetDaughter(0);}
53 // v0 (Ks or Lambda for Lambda_c)
54 AliAODv0* Getv0() const {
55 if ( ! ((AliAODRecoDecay*)GetDaughter(1))->IsA()->InheritsFrom("AliAODv0") ){
56 AliWarning("Object is not of type v0");
59 return (AliAODv0*)GetDaughter(1);
62 // Get v0 positive track
63 AliAODTrack* Getv0PositiveTrack() const { return (AliAODTrack*)Getv0()->GetDaughter(0); }
64 // Get v0 negative track
65 AliAODTrack* Getv0NegativeTrack() const { return (AliAODTrack*)Getv0()->GetDaughter(1); }
68 Double_t EDstar() const {return E(413);}
69 Double_t YDstar() const {return Y(413);}
70 Bool_t SelectDstar(const Double_t *cutsDstar,const Double_t *cutsD0,Bool_t testD0=kTRUE) const;
71 Double_t InvMassD0() const {return (Charge()>0 ? Get2Prong()->InvMassD0() : Get2Prong()->InvMassD0bar());}
72 Double_t InvMassDstarKpipi() const;
73 Double_t DeltaInvMass() const {return (InvMassDstarKpipi()-InvMassD0());}
74 Double_t AngleD0dkpPisoft() const;
75 Bool_t TrigonometricalCut() const;
78 Double_t InvMassLctoK0sP() const {
79 UInt_t pdg[2]={2212,310}; return InvMass(2,pdg);
81 Double_t InvMassLctoLambdaPi() const {
82 UInt_t pdg[2]={211,3122}; return InvMass(2,pdg);
84 Bool_t SelectLctoV0(const Double_t *cutsLctoV0, Bool_t okLck0sp, Bool_t okLcLpi, Bool_t okLcLbarpi) const;
86 Int_t MatchToMC(Int_t pdgabs,Int_t pdgabs2prong,
87 Int_t *pdgDg,Int_t *pdgDg2prong,
88 TClonesArray *mcArray, Bool_t isV0=kFALSE) const;
90 Double_t CosV0PointingAngle() const;
91 Double_t CosV0PointingAngleXY() const;
92 Double_t DecayLengthV0() const;
93 Double_t DecayLengthXYV0() const;
94 Double_t NormalizedV0DecayLength() const;
95 Double_t NormalizedV0DecayLengthXY() const;
99 ClassDef(AliAODRecoCascadeHF, 2); // heavy-flavour cascade class