]> git.uio.no Git - u/mrichter/AliRoot.git/blob - PWGHF/vertexingHF/AliAODRecoDecayHF3Prong.h
consolidate zero-length arrays (aka struct hack)
[u/mrichter/AliRoot.git] / PWGHF / vertexingHF / AliAODRecoDecayHF3Prong.h
1 #ifndef ALIAODRECODECAYHF3PRONG_H
2 #define ALIAODRECODECAYHF3PRONG_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 AliAODRecoDecayHF3Prong
10 // base class for AOD reconstructed 3-prong heavy-flavour decays
11 // (D+->Kpipi, Ds->KKpi ...)
12 // Author: E.Bruna bruna@to.infn.it, F.Prino prino@to.infn.it
13 //***********************************************************
14
15 #include "AliAODRecoDecay.h"
16 #include "AliAODRecoDecayHF.h"
17 #include "AliAODEvent.h"
18
19 class AliAODRecoDecayHF3Prong : public AliAODRecoDecayHF {
20
21  public:
22   
23   AliAODRecoDecayHF3Prong();
24    AliAODRecoDecayHF3Prong(AliAODVertex *vtx2,
25                            Double_t *px,Double_t *py,Double_t *pz,
26                            Double_t *d0,Double_t *d0err,
27                            Double_t *dca, Double_t sigvert,
28                            Double_t dist12,Double_t dist23,Short_t charge);
29    AliAODRecoDecayHF3Prong(AliAODVertex *vtx2,
30                            Double_t *d0,Double_t *d0err,
31                            Double_t *dca, Double_t sigvert,
32                            Double_t dist12,Double_t dist23, Short_t charge);
33
34   AliAODRecoDecayHF3Prong(const AliAODRecoDecayHF3Prong& source);
35   AliAODRecoDecayHF3Prong& operator=(const AliAODRecoDecayHF3Prong& source); 
36   void GetDCAs(Double_t dca[3]) const 
37     {for(Int_t i=0;i<3;i++) dca[i]=GetDCA(i);}
38   Double_t GetSigmaVert(const AliAODEvent* aod=0x0) { 
39     if(fSigmaVert>0.00001) return fSigmaVert; 
40     if(aod) fSigmaVert=ComputeSigmaVert(aod);
41     return fSigmaVert;
42   }
43   Double_t ComputeSigmaVert(const AliAODEvent* aod) const;
44   Double_t GetDist12toPrim() const { return fDist12toPrim; }
45   Double_t GetDist23toPrim() const { return fDist23toPrim; }
46   void SetDist12toPrim(Double_t d) { fDist12toPrim=d; }
47   void SetDist23toPrim(Double_t d) { fDist23toPrim=d; }
48
49
50   // D+->Kpipi
51   Double_t EDplus() const {return E(411);} 
52   Double_t YDplus() const {return Y(411);} 
53   Double_t CtDplus() const {return Ct(411);} 
54   Double_t CtDplus(Double_t point[3]) const {return AliAODRecoDecay::Ct(411,point);}
55   Double_t CtDplus(AliAODVertex *vtx1) const {return AliAODRecoDecay::Ct(411,vtx1);}
56   Double_t InvMassDplus() const {UInt_t pdg[3]={211,321,211};return InvMass(3,pdg);}
57   Bool_t   SelectDplus(const Double_t* cuts) const;
58
59   // Ds+->KKpi
60   Double_t EDs() const {return E(431);} 
61   Double_t YDs() const {return Y(431);} 
62   Double_t CtDs() const {return Ct(431);} 
63   Double_t CtDs(Double_t point[3]) const {return AliAODRecoDecay::Ct(431,point);}
64   Double_t CtDs(AliAODVertex *vtx1) const {return AliAODRecoDecay::Ct(431,vtx1);}
65   Double_t InvMassDsKKpi() const {UInt_t pdg[3]={321,321,211};return InvMass(3,pdg);}
66   Double_t InvMassDspiKK() const {UInt_t pdg[3]={211,321,321};return InvMass(3,pdg);}
67   
68   Double_t CosPiKPhiRFrameKKpi() const {return CosPiKPhiRFrame(0);}
69   Double_t CosPiKPhiRFramepiKK() const {return CosPiKPhiRFrame(1);}
70   Double_t CosPiDsLabFrameKKpi() const {return CosPiDsLabFrame(0);}
71   Double_t CosPiDsLabFramepiKK() const {return CosPiDsLabFrame(1);}
72   
73   Double_t CosPiKPhiRFrame(Int_t option) const;
74   Double_t CosPiDsLabFrame(Int_t option) const;
75   Bool_t   SelectDs(const Double_t* cuts,Int_t &okDsKKpi,Int_t &okDspiKK, Int_t &okMassPhi, Int_t &okMassK0star) 
76     const; // same variables as D+, for now
77
78   // Lambdac+->pKpi
79   Double_t ELc() const {return E(4122);} 
80   Double_t YLc() const {return Y(4122);} 
81   Double_t CtLc() const {return Ct(4122);} 
82   Double_t CtLc(Double_t point[3]) const {return AliAODRecoDecay::Ct(4122,point);}
83   Double_t CtLc(AliAODVertex *vtx1) const {return AliAODRecoDecay::Ct(4122,vtx1);}
84   Double_t InvMassLcpKpi() const {UInt_t pdg[3]={2212,321,211};return InvMass(3,pdg);}
85   Double_t InvMassLcpiKp() const {UInt_t pdg[3]={211,321,2212};return InvMass(3,pdg);}
86   Bool_t   SelectLc(const Double_t* cuts,Int_t &okLcpKpi,Int_t &okLcpiKp) 
87     const; // same variables as D+, for now
88
89  private:
90
91   Double_t fSigmaVert; // track dispersion around the secondary vertex
92   Double_t fDist12toPrim; //distance prim vert - 2 opposite sign track vertex 
93   Double_t fDist23toPrim; //distance prim vert - 2 opposite sign track vertex
94
95
96
97   ClassDef(AliAODRecoDecayHF3Prong,1)  // base class for AOD reconstructed 
98                                        // heavy-flavour 3-prong decays
99 };
100
101 #endif