Update (Andrea)
[u/mrichter/AliRoot.git] / PWG3 / vertexingHF / AliAODRecoDecayHF4Prong.h
1 #ifndef ALIAODRECODECAYHF4PRONG_H
2 #define ALIAODRECODECAYHF4PRONG_H
3 /* Copyright(c) 1998-2006, ALICE Experiment at CERN, All rights reserved. *
4  * See cxx source for full Copyright notice                               */
5
6 /* $Id$ */ 
7
8 //***********************************************************
9 // Class AliAODRecoDecayHF4Prong
10 // base class for AOD reconstructed 4-prong heavy-flavour decays
11 // (D0->Kpipipi, etc...)
12 // Authors: G.E.Bruno Giuseppe.Bruno@ba.infn.it, R.Romita Rossella.Romita@ba.infn.it
13 //***********************************************************
14
15 #include "AliAODRecoDecay.h"
16 #include "AliAODRecoDecayHF.h"
17
18 class AliAODRecoDecayHF4Prong : public AliAODRecoDecayHF {
19
20  public:
21
22   AliAODRecoDecayHF4Prong();
23   AliAODRecoDecayHF4Prong(AliAODVertex *vtx2,
24                            Double_t *px,Double_t *py,Double_t *pz,
25                            Double_t *d0,Double_t *d0err,
26                            Double_t *dca, //Double_t sigvert,
27                            Double_t dist12,Double_t dist3, 
28                            Double_t dist4, 
29                            Short_t charge);
30    AliAODRecoDecayHF4Prong(AliAODVertex *vtx2,
31                            Double_t *d0,Double_t *d0err,
32                            Double_t *dca, //Double_t sigvert,
33                            Double_t dist12,Double_t dist3, 
34                            Double_t dist4, 
35                            Short_t charge);
36
37   AliAODRecoDecayHF4Prong(const AliAODRecoDecayHF4Prong& source);
38   AliAODRecoDecayHF4Prong& operator=(const AliAODRecoDecayHF4Prong& source); 
39
40   virtual ~AliAODRecoDecayHF4Prong() {}  
41  
42   void GetDCAs(Double_t dca[6]) const 
43     {for(Int_t i=0;i<6;i++) dca[i]=GetDCA(i);} 
44   // convention:fDCA[0]=p0p1,fDCA[1]=p0p2,fDCA[2]=p0p3,fDCA[3]=p1p2...
45   Double_t GetDist12toPrim() const {return fDist12toPrim;}
46   Double_t GetDist3toPrim() const {return fDist3toPrim;}
47   Double_t GetDist4toPrim() const {return fDist4toPrim;}
48
49   // D0->pi+K- pipi and D0bar->K+pi- pipi (in the order given) 
50   Double_t ED0() const {return E(421);}
51   Double_t YD0() const {return Y(421);} 
52   Double_t CtD0() const {return Ct(421);} 
53   Double_t CtD0(Double_t point[3]) const {return AliAODRecoDecay::Ct(421,point);}
54   Double_t CtD0(AliAODVertex *vtx1) const {return AliAODRecoDecay::Ct(421,vtx1);}
55   Double_t InvMassRho(Int_t i,Int_t j) const {return InvMass2Prongs(i,j,211,211);} 
56   Bool_t CutRhoMass(Double_t massD0[2],Double_t massD0bar[2],Double_t CutMass,Double_t CutRho) const; 
57
58   void InvMassD0(Double_t mD0[2]) const;
59   void InvMassD0bar(Double_t mD0bar[2]) const;
60
61   Bool_t   SelectD0(const Double_t* cuts,Int_t &okD0,Int_t &okD0bar) const;
62
63  private:
64
65   //Double_t fSigmaVert; // track dispersion around the secondary vertex
66   Double_t fDist12toPrim; //distance prim vert - 2 opposite sign track vertex 
67   Double_t fDist3toPrim; //distance prim vert - 3 track vertex 
68   Double_t fDist4toPrim; //distance prim vert - 4 track vertex 
69   //Double_t fDist123toPrim;  //distance 
70  
71
72   ClassDef(AliAODRecoDecayHF4Prong,2)  // base class for AOD reconstructed 
73                                        // heavy-flavour 3-prong decays
74 };
75
76 #endif