]>
Commit | Line | Data |
---|---|---|
05d80dd6 | 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 */ | |
5 | ||
27de2dfb | 6 | /* $Id$ */ |
7 | ||
05d80dd6 | 8 | //*********************************************************** |
9 | // Class AliAODRecoCascadeHF | |
10 | // base class for AOD reconstructed heavy-flavour cascade decays | |
11 | // (D*->D0pi, ...) | |
12 | // The convention is: prong 0 is the bachelor, prong 1 is the "V0" | |
13 | // | |
c3fe1eed | 14 | // Author: X-M. Zhang, zhangxm@iopp.ccnu.edu.cn |
05d80dd6 | 15 | //*********************************************************** |
16 | ||
17 | #include <TRef.h> | |
18 | #include <TRefArray.h> | |
b3999999 | 19 | #include <TClonesArray.h> |
a07ad8e0 | 20 | #include <TClass.h> |
05d80dd6 | 21 | #include "AliAODVertex.h" |
a07ad8e0 | 22 | #include "AliAODv0.h" |
05d80dd6 | 23 | #include "AliAODRecoDecayHF2Prong.h" |
24 | ||
25 | class AliAODRecoCascadeHF : public AliAODRecoDecayHF2Prong { | |
26 | ||
27 | public: | |
28 | ||
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(); | |
36 | ||
37 | AliAODRecoCascadeHF(const AliAODRecoCascadeHF& source); | |
38 | AliAODRecoCascadeHF& operator=(const AliAODRecoCascadeHF& source); | |
39 | ||
40 | // 2prong (D0 for Dstar) | |
a07ad8e0 | 41 | AliAODRecoDecayHF2Prong* Get2Prong() const { |
1f5d076f | 42 | if(!GetDaughter(1)) return 0; |
a07ad8e0 | 43 | if ( ! ((AliAODRecoDecay*)GetDaughter(1))->IsA()->InheritsFrom("AliAODRecoDecayHF2Prong") ){ |
44 | AliWarning("Object is not of type AliAODRecoDecayHF2Prong"); | |
45 | return 0; | |
46 | } | |
47 | return (AliAODRecoDecayHF2Prong*)GetDaughter(1); | |
48 | } | |
05d80dd6 | 49 | |
50 | // Bachelor (soft pion for Dstar) | |
51 | AliAODTrack* GetBachelor() const {return (AliAODTrack*)GetDaughter(0);} | |
52 | ||
a07ad8e0 | 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"); | |
57 | return 0; | |
58 | } | |
59 | return (AliAODv0*)GetDaughter(1); | |
60 | } | |
61 | ||
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); } | |
66 | ||
05d80dd6 | 67 | // D*->D0pi, D0->Kpi |
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());} | |
3f6adfc9 | 74 | Double_t AngleD0dkpPisoft() const; |
ccfae9f3 | 75 | Bool_t TrigonometricalCut() const; |
05d80dd6 | 76 | |
a07ad8e0 | 77 | // Lc invariant mass |
78 | Double_t InvMassLctoK0sP() const { | |
79 | UInt_t pdg[2]={2212,310}; return InvMass(2,pdg); | |
80 | } | |
81 | Double_t InvMassLctoLambdaPi() const { | |
82 | UInt_t pdg[2]={211,3122}; return InvMass(2,pdg); | |
83 | } | |
9ff3fa8f | 84 | Bool_t SelectLctoV0(const Double_t *cutsLctoV0, Bool_t okLck0sp, Bool_t okLcLpi, Bool_t okLcLbarpi) const; |
a07ad8e0 | 85 | |
383937f0 | 86 | Int_t MatchToMC(Int_t pdgabs,Int_t pdgabs2prong, |
87 | Int_t *pdgDg,Int_t *pdgDg2prong, | |
36462b08 | 88 | TClonesArray *mcArray, Bool_t isV0=kFALSE) const; |
b3999999 | 89 | |
9ff3fa8f | 90 | Double_t CosV0PointingAngle() const; |
ff12b981 | 91 | Double_t CosV0PointingAngleXY() const; |
c9283e92 | 92 | Double_t DecayLengthV0() const; |
9ff3fa8f | 93 | Double_t DecayLengthXYV0() const; |
ff12b981 | 94 | Double_t NormalizedV0DecayLength() const; |
95 | Double_t NormalizedV0DecayLengthXY() const; | |
c9283e92 | 96 | |
05d80dd6 | 97 | protected: |
98 | ||
dcfa35b3 | 99 | ClassDef(AliAODRecoCascadeHF, 2); // heavy-flavour cascade class |
05d80dd6 | 100 | }; |
101 | ||
102 | #endif |