b16b83f58ec9a4e14a1a795f8b62ad14a6b4ff74
[u/mrichter/AliRoot.git] / STEER / AliESDcascade.h
1 #ifndef ALIESDCASCADE_H
2 #define ALIESDCASCADE_H
3
4 /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
5  * See cxx source for full Copyright notice                               */
6
7 /* $Id$ */
8
9 //-------------------------------------------------------------------------
10 //                        ESD Cascade Vertex Class
11 //               Implementation of the cascade vertex class
12 //    Origin: Christian Kuhn, IReS, Strasbourg, christian.kuhn@ires.in2p3.fr
13 //-------------------------------------------------------------------------
14
15 #include <TObject.h>
16 #include <TPDGCode.h>
17 #include "AliESDv0.h"
18
19 class AliExternalTrackParam;
20
21
22 class AliESDcascade : public AliESDv0 {
23
24   enum  { kOmegaPlusBar =  -3334,
25           kXiPlusBar    =  -3312,
26           kXiMinus      =   3312,
27           kOmegaMinus   =   3334};
28
29 public:
30   AliESDcascade();
31   AliESDcascade(const AliESDcascade&);
32   AliESDcascade(const AliESDv0 &v0,
33                 const AliExternalTrackParam &t, Int_t i);
34   ~AliESDcascade();
35
36   Double_t ChangeMassHypothesis(Double_t &v0q, Int_t code=kXiMinus); 
37
38   Int_t    GetPdgCodeXi() const {return fPdgCodeXi;}
39   Double_t GetEffMassXi() const {return fEffMassXi;}
40   Double_t GetChi2Xi()  const {return fChi2Xi;}
41   void     GetPxPyPz(Double_t &px, Double_t &py, Double_t &pz) const;
42   void     GetXYZcascade(Double_t &x, Double_t &y, Double_t &z) const;
43   Double_t GetDcascade(Double_t x0=0.,Double_t y0=0.,Double_t z0=0.) const;
44
45   void     GetBPxPyPz(Double_t &px, Double_t &py, Double_t &pz) const {
46      px=fBachMom[0]; py=fBachMom[1]; pz=fBachMom[2];
47   }
48
49   Int_t    GetBindex() const {return fBachIdx;}
50   void     SetIndex(Int_t i) {fBachIdx=i;}        //for the consistensy with V0
51   Int_t    GetIndex() const {return GetBindex();} //for the consistensy with V0
52   void     SetDcaXiDaughters(Double_t rDcaXiDaughters=0.);
53   Double_t GetDcaXiDaughters() const {return fDcaXiDaughters;}
54   Double_t GetCascadeCosineOfPointingAngle(Double_t&, Double_t&, Double_t&) const;
55
56   void GetPosCovXi(Double_t cov[6]) const;
57
58 protected: 
59
60   Double32_t fEffMassXi;      // reconstructed cascade effective mass
61   Double32_t fChi2Xi;         // chi2 value
62   Double32_t fDcaXiDaughters; // dca between Xi's daughters
63   Double32_t fPosXi[3];       // cascade vertex position (global)
64   Double32_t fPosCovXi[6];    // covariance matrix of the vertex position
65   Double32_t fBachMom[3];     // bachelor momentum (global)
66   Double32_t fBachMomCov[6];  // covariance matrix of the bachelor momentum.
67   Int_t      fPdgCodeXi;      // reconstructed cascade type (PDG code)
68   Int_t      fBachIdx;        // label of the bachelor track
69
70
71 private:
72   AliESDcascade& operator=(const AliESDcascade&);
73
74   ClassDef(AliESDcascade,5) // reconstructed cascade vertex
75 };
76
77 inline
78 void AliESDcascade::SetDcaXiDaughters(Double_t rDcaXiDaughters){
79   fDcaXiDaughters=rDcaXiDaughters;
80 }
81
82 #endif