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