]> git.uio.no Git - u/mrichter/AliRoot.git/blob - PWGHF/vertexingHF/AliAODRecoCascadeHF3Prong.h
Merge branch 'feature-movesplit'
[u/mrichter/AliRoot.git] / PWGHF / vertexingHF / AliAODRecoCascadeHF3Prong.h
1 #ifndef ALIAODRECOCASCADEHF3PRONG_H
2 #define ALIAODRECOCASCADEHF3PRONG_H
3 /* Copyright(c) 1998-2008, ALICE Experiment at CERN, All rights reserved. *
4  * See cxx source for full Copyright notice                               */
5
6 /* $Id$ */ 
7
8 //***********************************************************
9 // Class AliAODRecoCascadeHF3Prong
10 // base class for AOD reconstructed heavy-flavour cascade 3Prong decays
11 // (Xic+->pi Xi pi, ...)
12 // The convention is: prong 0 is bachelor, prong 1 is cascade
13 // prong 2 is bachelor
14 //
15 // Author: Y.S. Watanabe, wyosuke@cns.s.u-tokyo.ac.jp
16 //***********************************************************
17
18 #include <TRef.h>
19 #include <TRefArray.h>
20 #include <TClonesArray.h>
21 #include <TClass.h>
22 #include "AliAODVertex.h"
23 #include "AliAODcascade.h"
24 #include "AliAODv0.h"
25 #include "AliAODRecoDecayHF3Prong.h"
26
27 class AliAODRecoCascadeHF3Prong : public AliAODRecoDecayHF3Prong {
28
29  public:
30
31   AliAODRecoCascadeHF3Prong();
32   AliAODRecoCascadeHF3Prong(AliAODVertex *vtx2, Short_t charge,
33                             Double_t *px, Double_t *py, Double_t *pz,
34                             Double_t *d0, Double_t *d0err, 
35                             Double_t *dca, Double_t sigvert,
36                             Double_t dist12,Double_t dist23);
37   virtual ~AliAODRecoCascadeHF3Prong();
38
39   AliAODRecoCascadeHF3Prong(const AliAODRecoCascadeHF3Prong& source);
40   AliAODRecoCascadeHF3Prong& operator=(const AliAODRecoCascadeHF3Prong& source);
41
42   AliAODTrack* GetBachelor1() const {return (AliAODTrack*)GetDaughter(0);}
43   AliAODTrack* GetBachelor2() const {return (AliAODTrack*)GetDaughter(2);}
44   AliAODcascade* GetCascade() const {
45     if ( ! ((AliAODRecoDecay*)GetDaughter(1))->IsA()->InheritsFrom("AliAODcascade") ){
46       AliWarning("Object is not of type cascade");
47       return 0;
48     }
49     return (AliAODcascade*)GetDaughter(1);
50   }
51
52   AliAODTrack* GetCascadePositiveTrack() const { return  (AliAODTrack*)GetCascade()->GetDaughter(0);  }
53   AliAODTrack* GetCascadeNegativeTrack() const { return  (AliAODTrack*)GetCascade()->GetDaughter(1);  }
54   AliAODTrack* GetCascadeBachelorTrack() const { return  (AliAODTrack*)GetCascade()->GetDecayVertexXi()->GetDaughter(0);  }
55
56   // Xic invariant mass
57   Double_t InvMassPiXiPi() const {
58     UInt_t pdg[3]={211,3312,211}; return InvMass(3,pdg);
59   }
60
61   //  Int_t MatchToMC(Int_t pdgabs,Int_t pdgabs3prong,
62   //                  Int_t *pdgDg,Int_t *pdgDg3prong,
63   //                  TClonesArray *mcArray, Bool_t isV0=kFALSE) const;
64
65   Double_t CascDcaXiDaughters() const;
66   Double_t CascDcaV0Daughters() const;
67   Double_t CascDecayLength() const;
68   Double_t CascDecayLengthV0() const;
69   Double_t CascCosPointingAngle() const;
70   Double_t CascCosPointingAngleV0() const;
71   Double_t CascDcaV0ToPrimVertex() const;
72   Double_t CascDcaPosToPrimVertex() const;
73   Double_t CascDcaNegToPrimVertex() const;
74   Double_t CascDcaBachToPrimVertex() const;
75   Double_t CascMassXi() const;
76   Double_t CascMassLambda() const;
77   Double_t CascMassAntiLambda() const;
78
79   Double_t XicCosPointingAngle() const;
80
81  protected:
82
83   ClassDef(AliAODRecoCascadeHF3Prong, 1); // heavy-flavour cascade 3prong class
84 };
85
86 #endif