]>
Commit | Line | Data |
---|---|---|
a62a2d82 | 1 | /************************************************************************** |
2 | * Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. * | |
3 | * See cxx source for full Copyright notice * | |
4 | **************************************************************************/ | |
5 | ||
6 | //------------------------------------------------------------------------- | |
7 | // Class AliRsnDaughter | |
8 | // | |
9 | // A simple object which describes a reconstructed track | |
10 | // with some references to its related generated particle | |
11 | // and some facilities which could help in composing its | |
12 | // 4-momentum, for resonance study. | |
13 | // | |
14 | // author: A. Pulvirenti (email: alberto.pulvirenti@ct.infn.it) | |
15 | //------------------------------------------------------------------------- | |
16 | ||
17 | #ifndef ALIRSNDAUGHTER_H | |
18 | #define ALIRSNDAUGHTER_H | |
19 | ||
20 | #include "AliPID.h" | |
21 | #include <TVector3.h> | |
22 | #include <TParticle.h> | |
23 | #include <TLorentzVector.h> | |
24 | ||
25 | class AliESDtrack; | |
26 | ||
27 | class AliRsnDaughter : public TObject | |
28 | { | |
29 | public: | |
30 | AliRsnDaughter(); | |
31 | AliRsnDaughter(const AliRsnDaughter ©); | |
32 | ||
33 | virtual ~AliRsnDaughter() { } | |
34 | ||
35 | Bool_t Adopt(TParticle* particle); | |
36 | Bool_t Adopt(const AliESDtrack* track, Bool_t checkRefit = kTRUE); | |
37 | TVector3 Get3Momentum() const {TVector3 v(fP[0],fP[1],fP[2]); return v;} | |
38 | TLorentzVector Get4Momentum() const {TLorentzVector v(fP[0],fP[1],fP[2],GetEnergy()); return v;} | |
39 | Double_t GetEnergy() const {return TMath::Sqrt(fMass*fMass + GetP2());} | |
40 | UShort_t GetIndex() const {return fIndex;} | |
41 | Int_t GetLabel() const {return fLabel;} | |
42 | Double_t GetMass() const {return fMass;} | |
43 | Int_t GetMother() const {return fMother;} | |
44 | Short_t GetMotherPDG() const {return fMotherPDG;} | |
45 | UShort_t GetPDG() const {return fPDG;} | |
46 | Double_t GetPIDweight(Int_t i) const {return ( (i>=0&&i<AliPID::kSPECIES)?fPIDwgt[i]:-1.0 );} | |
47 | Char_t GetSign() const {return fSign;} | |
48 | Double_t GetP2() const {return fP[0]*fP[0] + fP[1]*fP[1] + fP[2]*fP[2];} | |
49 | Double_t GetP() const {return TMath::Sqrt(GetP2());} | |
50 | Double_t GetPx() const {return fP[0];} | |
51 | Double_t GetPy() const {return fP[1];} | |
52 | Double_t GetPz() const {return fP[2];} | |
53 | Double_t GetPt() const {return TMath::Sqrt(fP[0]*fP[0] + fP[1]*fP[1]);} | |
54 | Short_t GetTruePDG() const {return fTruePDG;} | |
55 | TVector3 GetVertex() const {TVector3 v(fV[0],fV[1],fV[2]); return v;} | |
56 | Double_t GetVx() const {return fV[0];} | |
57 | Double_t GetVy() const {return fV[1];} | |
58 | Double_t GetVz() const {return fV[2];} | |
59 | Double_t GetVt() const {return TMath::Sqrt(fV[0]*fV[0] + fV[1]*fV[1]);} | |
60 | void SetIndex(UShort_t value) {fIndex = value;} | |
61 | void SetIndex(Int_t value) {fIndex = (UShort_t)value;} | |
62 | void SetLabel(Int_t l) {fLabel = l;} | |
63 | void SetMass(Double_t m) {fMass = m;} | |
64 | void SetMother(Int_t l) {fMother = l;} | |
65 | void SetMotherPDG(Short_t pdg) {fMotherPDG = pdg;} | |
66 | void SetPDG(UShort_t pdg) {fPDG = TMath::Abs(pdg);} | |
67 | void SetPDG(Int_t pdg) {fPDG = (UShort_t)TMath::Abs(pdg);} | |
68 | void SetPIDweights(const Double_t *pid) {Int_t i;for(i=0;i<AliPID::kSPECIES;i++)fPIDwgt[i]=pid[i];} | |
69 | void SetPxPyPz(Double_t px,Double_t py,Double_t pz) {fP[0]=px;fP[1]=py;fP[2]=pz;} | |
70 | void SetSign(Char_t value) {fSign = value;} | |
71 | void SetSign(Int_t value) {fSign = (Char_t)value;} | |
72 | void SetTruePDG(Short_t pdg) {fTruePDG = pdg;} | |
73 | void SetVxVyVz(Double_t vx,Double_t vy,Double_t vz) {fV[0]=vx;fV[1]=vy;fV[2]=vz;} | |
74 | ||
75 | friend AliRsnDaughter operator+(AliRsnDaughter t1, AliRsnDaughter t2); | |
76 | ||
77 | private: | |
78 | ||
79 | Char_t fSign; // charge sign | |
80 | UShort_t fPDG; // assigned PDG code from PID (0=undefined) | |
81 | UShort_t fIndex; // reference index in AliESD container | |
82 | ||
83 | Double_t fP[3]; // vector momentum | |
84 | Double_t fV[3]; // production vertex | |
85 | Double_t fMass; // mass | |
86 | ||
87 | Double_t fPIDwgt[AliPID::kSPECIES]; // particle PID weights | |
88 | ||
89 | // The following data are useful for simulated events only | |
90 | // and can be left blank when using real or 'realistic' data | |
91 | ||
92 | Int_t fLabel; // GEANT label of corresponding particle | |
93 | Short_t fTruePDG; // PDG code of corresponding particle | |
94 | Int_t fMother; // GEANT label of mother particle | |
95 | Short_t fMotherPDG; // PDG code of mother particle | |
96 | ||
97 | ClassDef(AliRsnDaughter,1) | |
98 | }; | |
99 | ||
100 | #endif |