Removing the AliClusterTGeo class
[u/mrichter/AliRoot.git] / MUON / AliMUONTrackLight.h
CommitLineData
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
090026bf 26
27#include <TClonesArray.h>
28#include <TLorentzVector.h>
55fd51b0 29
30class AliMUONTrack;
31class AliESDMuonTrack;
32class AliRunLoader;
33
34class TParticle;
35
36class 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;
75protected:
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