]>
Commit | Line | Data |
---|---|---|
55fd51b0 | 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 | ||
929be614 | 9 | /// \ingroup evaluation |
55fd51b0 | 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 AliRunLoader; | |
31 | ||
32 | class TParticle; | |
33 | ||
34 | class AliMUONTrackLight : public TObject { | |
35 | public: | |
36 | AliMUONTrackLight(); | |
37 | AliMUONTrackLight(AliESDMuonTrack* muonTrack); | |
38 | AliMUONTrackLight(const AliMUONTrackLight &muonCopy); | |
39 | virtual ~AliMUONTrackLight(){;} | |
40 | ||
41 | void SetPGen(TLorentzVector pgen) {fPgen = pgen;} | |
42 | TLorentzVector GetPGen() const {return fPgen;} | |
43 | void SetPRec(TLorentzVector prec) {fPrec = prec;} | |
44 | TLorentzVector GetPRec() const {return fPrec;} | |
45 | void SetVertex(Double_t *xyz) {for (Int_t i=0; i<3; i++) fXYZ[i]=xyz[i];} | |
46 | Double_t* GetVertex() { return fXYZ; } | |
47 | void SetCharge(Int_t charge) {fCharge = charge;} | |
48 | Int_t GetCharge() const {return fCharge;} | |
49 | Int_t GetParentPDGCode(Int_t index = 0) const { return fParentPDGCode[index]; } | |
50 | Int_t GetParentPythiaLine(Int_t index = 0) const { return fParentPythiaLine[index]; } | |
51 | Int_t GetQuarkPDGCode(Int_t index = 0) const { return fQuarkPDGCode[index]; } | |
52 | Int_t GetQuarkPythiaLine(Int_t index = 0) const { return fQuarkPythiaLine[index]; } | |
53 | Int_t GetTrackPythiaLine() const {return fTrackPythiaLine;} | |
54 | Int_t GetTrackPDGCode() const {return fTrackPDGCode;} | |
55 | void SetTrackPythiaLine(Int_t trackLine) {fTrackPythiaLine = trackLine;} | |
56 | void SetTrackPDGCode(Int_t trackPdg) {fTrackPDGCode = trackPdg;} | |
57 | void ComputePRecAndChargeFromESD(AliESDMuonTrack* muonTrack); | |
58 | Bool_t IsAMuon() const { return (TMath::Abs(fTrackPDGCode)==13); } | |
59 | void SetPxPyPz(Double_t px, Double_t py, Double_t pz); | |
60 | void SetTriggered(Bool_t isTriggered) { fIsTriggered = isTriggered; } | |
61 | Bool_t IsTriggered() const { return fIsTriggered; } | |
62 | TParticle* FindRefTrack(AliMUONTrack* trackReco, TClonesArray* trackRefArray, AliRunLoader *runLoader); | |
63 | Int_t TrackCheck(Bool_t *compTrack); | |
64 | Int_t GetNParents() const {return fNParents;} | |
65 | void FillMuonHistory(AliRunLoader *runLoader, TParticle *part); | |
66 | Bool_t IsB0(Int_t intTest) const;//checks if the provided PDG code corresponds to a neutral B meson | |
67 | Bool_t IsMotherAResonance(Int_t index=0) const; | |
68 | Bool_t GetOscillation() const {return fOscillation;} | |
69 | virtual void PrintInfo(Option_t* opt); //"H" muon's decay history | |
70 | //"K" muon kinematics | |
71 | //"A" all variables | |
72 | Int_t GetParentFlavour(Int_t idParent=0) const; | |
73 | protected: | |
74 | static const Int_t fgkNParentsMax = 5; /// maximum number of parents | |
75 | TLorentzVector fPrec; /// reconstructed 4-momentum | |
76 | Double_t fXYZ[3]; /// primary vertex position from the ITS | |
77 | Bool_t fIsTriggered; /// flag for trigger | |
78 | Int_t fCharge; /// muon charge | |
79 | Float_t fCentr; /// centrality | |
80 | TLorentzVector fPgen; /// 4-momentum of the generated particle | |
81 | Int_t fTrackPythiaLine; ///line of kin. stack where rec. track (in general, the muon) is stored | |
82 | Int_t fTrackPDGCode; ///pdg code of the rec. track (in general will be a muon) | |
83 | Int_t fParentPDGCode[fgkNParentsMax]; /// hadronised parents and grandparents | |
84 | Int_t fParentPythiaLine[fgkNParentsMax];///line of Pythia output for hadronised parents & grandparents | |
85 | Int_t fQuarkPDGCode[4]; /// pdg of the string [0], quarks/gluons [1,2], sometimes proton [3] | |
86 | Int_t fQuarkPythiaLine[4]; ///line of Pythia output for string [0] and quarks [1,2], sometimes proton [3] | |
87 | Bool_t fOscillation; /// flag for oscillation | |
88 | Int_t fNParents; ///acually filled no. of *fragmented* parents | |
89 | void SetOscillation(Bool_t oscillation) { fOscillation = oscillation; } | |
90 | void SetParentPDGCode(Int_t index, Int_t pdg) { fParentPDGCode[index] = pdg; } | |
91 | void SetParentPythiaLine(Int_t index, Int_t line) { fParentPythiaLine[index] = line; } | |
92 | void SetQuarkPDGCode(Int_t index, Int_t pdg){ fQuarkPDGCode[index] = pdg; } | |
93 | void SetQuarkPythiaLine(Int_t index, Int_t line){ fQuarkPythiaLine[index] = line; } | |
94 | void ResetQuarkInfo(); | |
95 | ||
96 | ClassDef(AliMUONTrackLight,1) /// Muon Track for analysis | |
97 | }; | |
98 | ||
99 | #endif |