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