]>
Commit | Line | Data |
---|---|---|
e23730c7 | 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 | ||
4f679a16 | 7 | /* $Id$ */ |
8 | ||
e23730c7 | 9 | //------------------------------------------------------------------------- |
10 | // ESD Cascade Vertex Class | |
4f679a16 | 11 | // Implementation of the cascade vertex class |
e23730c7 | 12 | // Origin: Christian Kuhn, IReS, Strasbourg, christian.kuhn@ires.in2p3.fr |
3e27a419 | 13 | // Modified by: Antonin Maire,IPHC, Antonin.Maire@ires.in2p3.fr |
14 | // and Boris Hippolyte,IPHC, hippolyt@in2p3.fr | |
e23730c7 | 15 | //------------------------------------------------------------------------- |
16 | ||
17 | #include <TObject.h> | |
18 | #include <TPDGCode.h> | |
c028b974 | 19 | #include "AliESDv0.h" |
e23730c7 | 20 | |
c7bafca9 | 21 | class AliExternalTrackParam; |
e23730c7 | 22 | |
e23730c7 | 23 | |
c028b974 | 24 | class AliESDcascade : public AliESDv0 { |
25 | ||
562dd0b4 | 26 | enum { kOmegaPlusBar = -3334, |
27 | kXiPlusBar = -3312, | |
28 | kXiMinus = 3312, | |
29 | kOmegaMinus = 3334}; | |
30 | ||
e23730c7 | 31 | public: |
32 | AliESDcascade(); | |
c028b974 | 33 | AliESDcascade(const AliESDcascade&); |
34 | AliESDcascade(const AliESDv0 &v0, | |
c7bafca9 | 35 | const AliExternalTrackParam &t, Int_t i); |
c028b974 | 36 | ~AliESDcascade(); |
732a24fe | 37 | AliESDcascade& operator=(const AliESDcascade&); |
38 | virtual void Copy(TObject &obj) const; | |
c028b974 | 39 | |
646c9704 | 40 | // Start with AliVParticle functions |
41 | virtual Double_t Px() const { return fNmom[0]+fPmom[0]+fBachMom[0]; } | |
42 | virtual Double_t Py() const { return fNmom[1]+fPmom[1]+fBachMom[1]; } | |
43 | virtual Double_t Pz() const { return fNmom[2]+fPmom[2]+fBachMom[2]; } | |
44 | virtual Double_t Pt() const { return TMath::Sqrt(Px()*Px()+Py()*Py()); } | |
45 | virtual Double_t P() const { | |
46 | return TMath::Sqrt(Px()*Px()+Py()*Py()+Pz()*Pz()); | |
47 | } | |
48 | virtual Bool_t PxPyPz(Double_t p[3]) const { p[0] = Px(); p[1] = Py(); p[2] = Pz(); return kTRUE; } | |
49 | virtual Double_t Xv() const { return fPosXi[0]; } | |
50 | virtual Double_t Yv() const { return fPosXi[1]; } | |
51 | virtual Double_t Zv() const { return fPosXi[2]; } | |
52 | virtual Bool_t XvYvZv(Double_t x[3]) const { x[0] = Xv(); x[1] = Yv(); x[2] = Zv(); return kTRUE; } | |
53 | virtual Double_t OneOverPt() const { return (Pt() != 0.) ? 1./Pt() : -999.; } | |
54 | virtual Double_t Phi() const {return TMath::Pi()+TMath::ATan2(-Py(),-Px()); } | |
55 | virtual Double_t Theta() const {return 0.5*TMath::Pi()-TMath::ATan(Pz()/(Pt()+1.e-13)); } | |
56 | virtual Double_t E() const; // default is Xis but can be changed via ChangeMassHypothesis (defined in the .cxx) | |
57 | virtual Double_t M() const { return GetEffMassXi(); } | |
58 | virtual Double_t Eta() const { return 0.5*TMath::Log((P()+Pz())/(P()-Pz()+1.e-13)); } | |
3e27a419 | 59 | virtual Double_t Y() const; |
646c9704 | 60 | virtual Short_t Charge() const { return 0; } |
61 | virtual Int_t GetLabel() const { return -1; } // temporary | |
62 | virtual const Double_t *PID() const { return 0; } // return PID object ? (to be discussed!) | |
63 | ||
3e27a419 | 64 | // Then extend the AliVParticle functions |
65 | Double_t E(Int_t pdg) const; | |
66 | Double_t Y(Int_t pdg) const; | |
67 | ||
68 | // Now the functions for analysis consistency | |
69 | Double_t RapXi() const; | |
70 | Double_t RapOmega() const; | |
71 | Double_t AlphaXi() const; | |
72 | Double_t PtArmXi() const; | |
73 | ||
74 | // Eventually the older functions | |
e23730c7 | 75 | Double_t ChangeMassHypothesis(Double_t &v0q, Int_t code=kXiMinus); |
76 | ||
8668c148 | 77 | Int_t GetPdgCodeXi() const {return fPdgCodeXi;} |
78 | Double_t GetEffMassXi() const {return fEffMassXi;} | |
c028b974 | 79 | Double_t GetChi2Xi() const {return fChi2Xi;} |
80 | void GetPxPyPz(Double_t &px, Double_t &py, Double_t &pz) const; | |
81 | void GetXYZcascade(Double_t &x, Double_t &y, Double_t &z) const; | |
82 | Double_t GetDcascade(Double_t x0=0.,Double_t y0=0.,Double_t z0=0.) const; | |
e23730c7 | 83 | |
c028b974 | 84 | void GetBPxPyPz(Double_t &px, Double_t &py, Double_t &pz) const { |
e23730c7 | 85 | px=fBachMom[0]; py=fBachMom[1]; pz=fBachMom[2]; |
86 | } | |
c028b974 | 87 | |
88 | Int_t GetBindex() const {return fBachIdx;} | |
646c9704 | 89 | void SetIndex(Int_t i) {fBachIdx=i;} //for the consistency with V0 |
90 | Int_t GetIndex() const {return GetBindex();} //for the consistency with V0 | |
c028b974 | 91 | void SetDcaXiDaughters(Double_t rDcaXiDaughters=0.); |
92 | Double_t GetDcaXiDaughters() const {return fDcaXiDaughters;} | |
93 | Double_t GetCascadeCosineOfPointingAngle(Double_t&, Double_t&, Double_t&) const; | |
e23730c7 | 94 | |
074f017b | 95 | void GetPosCovXi(Double_t cov[6]) const; |
96 | ||
e23730c7 | 97 | protected: |
562dd0b4 | 98 | |
8668c148 | 99 | Double32_t fEffMassXi; // reconstructed cascade effective mass |
61402fa9 | 100 | Double32_t fChi2Xi; // chi2 value |
101 | Double32_t fDcaXiDaughters; // dca between Xi's daughters | |
102 | Double32_t fPosXi[3]; // cascade vertex position (global) | |
103 | Double32_t fPosCovXi[6]; // covariance matrix of the vertex position | |
61402fa9 | 104 | Double32_t fBachMom[3]; // bachelor momentum (global) |
105 | Double32_t fBachMomCov[6]; // covariance matrix of the bachelor momentum. | |
562dd0b4 | 106 | Int_t fPdgCodeXi; // reconstructed cascade type (PDG code) |
107 | Int_t fBachIdx; // label of the bachelor track | |
108 | ||
e23730c7 | 109 | |
d6a49f20 | 110 | private: |
732a24fe | 111 | |
d6a49f20 | 112 | |
562dd0b4 | 113 | ClassDef(AliESDcascade,5) // reconstructed cascade vertex |
e23730c7 | 114 | }; |
115 | ||
c028b974 | 116 | inline |
117 | void AliESDcascade::SetDcaXiDaughters(Double_t rDcaXiDaughters){ | |
118 | fDcaXiDaughters=rDcaXiDaughters; | |
119 | } | |
e23730c7 | 120 | |
c028b974 | 121 | #endif |