Line data Source code
1 : #ifndef ALIMUONTRACKLIGHT_H
2 : #define ALIMUONTRACKLIGHT_H
3 : /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
4 : * See cxx source for full Copyright notice */
5 :
6 : /* $Id$ */
7 : // Revision of includes 06/09/2006
8 :
9 : /// \ingroup evaluation
10 : /// \class AliMUONTrackLight
11 : /// \brief Compact information for the muon generated tracks
12 : ///
13 : /// Compact information for the muon generated tracks in the MUON arm
14 : /// useful at the last stage of the analysis chain
15 : /// provides a link between the reconstructed track and the generated particle
16 : /// stores kinematical information at gen. and rec. level and
17 : /// the decay history of the muon, allowing the identification of the
18 : /// mother process
19 : ///
20 : /// To be used together with AliMUONPairLight
21 : ///
22 : /// \author This class was prepared by INFN Cagliari, July 2006
23 : /// (authors: H.Woehri, A.de Falco)
24 :
25 : // ROOT classes
26 : #include "TLorentzVector.h"
27 :
28 : class AliMUONTrack;
29 : class AliESDMuonTrack;
30 : class AliStack;
31 : class TParticle;
32 : class AliMUONVTrackStore;
33 :
34 : class AliMUONTrackLight : public TObject {
35 : public:
36 : AliMUONTrackLight();
37 : AliMUONTrackLight(AliESDMuonTrack* muonTrack);
38 : AliMUONTrackLight(const AliMUONTrackLight &muonCopy);
39 : AliMUONTrackLight& operator=(const AliMUONTrackLight&);
40 : virtual ~AliMUONTrackLight();
41 :
42 : /// Set 4-momentum of the generated particle
43 0 : void SetPGen(TLorentzVector pgen) {fPgen = pgen;}
44 : /// Return 4-momentum of the generated particle
45 0 : TLorentzVector GetPGen() const {return fPgen;}
46 : /// Set reconstructed 4-momentum
47 0 : void SetPRec(TLorentzVector prec) {fPrec = prec;}
48 : /// Return reconstructed 4-momentum
49 0 : TLorentzVector GetPRec() const {return fPrec;}
50 : /// Set primary vertex position from the ITS
51 0 : void SetVertex(Double_t *xyz) {for (Int_t i=0; i<3; i++) fXYZ[i]=xyz[i];}
52 : /// Return primary vertex x position from the ITS
53 0 : Double_t GetX() const { return fXYZ[0]; }
54 : /// Return primary vertex y position from the ITS
55 0 : Double_t GetY() const { return fXYZ[1]; }
56 : /// Return primary vertex z position from the ITS
57 0 : Double_t GetZ() const { return fXYZ[2]; }
58 : /// Return primary vertex position from the ITS
59 0 : Double_t* GetVertex() { return fXYZ; }
60 : /// Set chi2 / ndf in the MUON track fit
61 0 : void SetChi2(Double_t chi2) {fChi2=chi2;}
62 : /// Return chi2 / ndf in the MUON track fit
63 0 : Double_t GetChi2() const { return fChi2; }
64 : /// Set weight assigned to the muon
65 0 : void SetWeight(Double_t w) {fWeight=w;}
66 : /// Return weight assigned to the muon
67 0 : Double_t GetWeight() const { return fWeight; }
68 :
69 : /// Set muon charge
70 0 : void SetCharge(Int_t charge) {fCharge = charge;}
71 : /// Return muon charge
72 0 : Int_t GetCharge() const {return fCharge;}
73 : /// Return hadronised parents and grandparents
74 0 : Int_t GetParentPDGCode(Int_t index = 0) const { return fParentPDGCode[index]; }
75 : /// Return line of Pythia output for hadronised parents & grandparents
76 0 : Int_t GetParentPythiaLine(Int_t index = 0) const { return fParentPythiaLine[index]; }
77 : /// Return pdg of the string [0], quarks/gluons [1,2], sometimes proton [3]
78 0 : Int_t GetQuarkPDGCode(Int_t index = 0) const { return fQuarkPDGCode[index]; }
79 : /// Return line of Pythia output for string [0] and quarks [1,2], sometimes proton [3]
80 0 : Int_t GetQuarkPythiaLine(Int_t index = 0) const { return fQuarkPythiaLine[index]; }
81 : /// Return line of Pythia output for string [0] and quarks [1,2], sometimes proton [3]
82 0 : Int_t GetTrackPythiaLine() const {return fTrackPythiaLine;}
83 : /// Return pdg code of the rec. track (in general will be a muon)
84 0 : Int_t GetTrackPDGCode() const {return fTrackPDGCode;}
85 : /// Set line of kin. stack where rec. track (in general, the muon) is stored
86 0 : void SetTrackPythiaLine(Int_t trackLine) {fTrackPythiaLine = trackLine;}
87 : /// Set pdg code of the rec. track (in general will be a muon)
88 0 : void SetTrackPDGCode(Int_t trackPdg) {fTrackPDGCode = trackPdg;}
89 : void FillFromESD(AliESDMuonTrack* muonTrack, Double_t zvert=-9999);
90 : void FillFromAliMUONTrack(AliMUONTrack *trackReco,Double_t zvert=-9999);
91 : /// Return info if is a muon
92 0 : Bool_t IsAMuon() const { return (TMath::Abs(fTrackPDGCode)==13); }
93 : Bool_t IsParentPionOrKaon(Int_t idParent = 0);
94 : void SetPxPyPz(Double_t px, Double_t py, Double_t pz);
95 : /// Set flag for trigger
96 0 : void SetTriggered(Bool_t isTriggered) { fIsTriggered = isTriggered; }
97 : /// Return flag for trigger
98 0 : Bool_t IsTriggered() const { return fIsTriggered; }
99 : /// Return acually filled no. of *fragmented* parents
100 0 : Int_t GetNParents() const {return fNParents;}
101 : void FillMuonHistory(AliStack *stack, TParticle *part);
102 : Bool_t IsB0(Int_t intTest) const;//checks if the provided PDG code corresponds to a neutral B meson
103 : Bool_t IsMotherAResonance(Int_t index=0) const;
104 : /// Return flag for oscillation
105 0 : Bool_t GetOscillation() const {return fOscillation;}
106 : virtual void PrintInfo(const Option_t* opt); //"H" muon's decay history
107 : //"K" muon kinematics
108 : //"A" all variables
109 : Int_t GetParentFlavour(Int_t idParent=0) const;
110 : Bool_t IsDiquark(Int_t pdg) const;
111 : protected:
112 : static const Int_t fgkNParentsMax = 5; ///< maximum number of parents
113 : TLorentzVector fPrec; ///< reconstructed 4-momentum
114 : Double_t fXYZ[3]; ///< primary vertex position from the ITS
115 : Bool_t fIsTriggered; ///< flag for trigger
116 : Int_t fCharge; ///< muon charge
117 : Double_t fChi2; ///< chi2 / ndf in the MUON track fit
118 : Float_t fCentr; ///< centrality
119 : TLorentzVector fPgen; ///< 4-momentum of the generated particle
120 : Int_t fTrackPythiaLine; ///< line of kin. stack where rec. track (in general, the muon) is stored
121 : Int_t fTrackPDGCode; ///< pdg code of the rec. track (in general will be a muon)
122 : Int_t fParentPDGCode[fgkNParentsMax]; ///< hadronised parents and grandparents
123 : Int_t fParentPythiaLine[fgkNParentsMax];///< line of Pythia output for hadronised parents & grandparents
124 : Int_t fQuarkPDGCode[4]; ///< pdg of the string [0], quarks/gluons [1,2], sometimes proton [3]
125 : Int_t fQuarkPythiaLine[4]; ///< line of Pythia output for string [0] and quarks [1,2], sometimes proton [3]
126 : Bool_t fOscillation; ///< flag for oscillation
127 : Int_t fNParents; ///< acually filled no. of *fragmented* parents
128 : Double_t fWeight; ///< weight assigned to the muon
129 : /// Set flag for oscillation
130 0 : void SetOscillation(Bool_t oscillation) { fOscillation = oscillation; }
131 : /// Set hadronised parents and grandparents
132 : void SetParentPDGCode(Int_t index, Int_t pdg);
133 : /// Set line of Pythia output for hadronised parents & grandparents
134 : void SetParentPythiaLine(Int_t index, Int_t line);
135 : /// Set pdg of the string [0], quarks/gluons [1,2], sometimes proton [3]
136 : void SetQuarkPDGCode(Int_t index, Int_t pdg);
137 : /// Set line of Pythia output for string [0] and quarks [1,2], sometimes proton [3]
138 : void SetQuarkPythiaLine(Int_t index, Int_t line);
139 : void ResetQuarkInfo();
140 :
141 16 : ClassDef(AliMUONTrackLight,1) /// Muon Track for analysis
142 : };
143 :
144 : #endif
|