X-Git-Url: http://git.uio.no/git/?a=blobdiff_plain;f=MUON%2FAliMUONTrackLight.h;h=dc976cac55477ba772dcb555d9103ff13930694f;hb=6cf643869d006dcfcc68ae9fee7f686c27cc4298;hp=fd4f0c655403c1bbf1dc2e6d707c622d643fe6b8;hpb=929be6142bfa11ce0c50b8c05d279610a5c225f1;p=u%2Fmrichter%2FAliRoot.git diff --git a/MUON/AliMUONTrackLight.h b/MUON/AliMUONTrackLight.h index fd4f0c65540..dc976cac554 100644 --- a/MUON/AliMUONTrackLight.h +++ b/MUON/AliMUONTrackLight.h @@ -27,69 +27,114 @@ class AliMUONTrack; class AliESDMuonTrack; -class AliRunLoader; - +class AliStack; class TParticle; +class AliMUONVTrackStore; -class AliMUONTrackLight : public TObject { +class AliMUONTrackLight : public TObject { public: AliMUONTrackLight(); AliMUONTrackLight(AliESDMuonTrack* muonTrack); AliMUONTrackLight(const AliMUONTrackLight &muonCopy); - virtual ~AliMUONTrackLight(){;} + AliMUONTrackLight& operator=(const AliMUONTrackLight&); + virtual ~AliMUONTrackLight(); + /// Set 4-momentum of the generated particle void SetPGen(TLorentzVector pgen) {fPgen = pgen;} + /// Return 4-momentum of the generated particle TLorentzVector GetPGen() const {return fPgen;} + /// Set reconstructed 4-momentum void SetPRec(TLorentzVector prec) {fPrec = prec;} + /// Return reconstructed 4-momentum TLorentzVector GetPRec() const {return fPrec;} + /// Set primary vertex position from the ITS void SetVertex(Double_t *xyz) {for (Int_t i=0; i<3; i++) fXYZ[i]=xyz[i];} + /// Return primary vertex x position from the ITS + Double_t GetX() const { return fXYZ[0]; } + /// Return primary vertex y position from the ITS + Double_t GetY() const { return fXYZ[1]; } + /// Return primary vertex z position from the ITS + Double_t GetZ() const { return fXYZ[2]; } + /// Return primary vertex position from the ITS Double_t* GetVertex() { return fXYZ; } + /// Set chi2 / ndf in the MUON track fit + void SetChi2(Double_t chi2) {fChi2=chi2;} + /// Return chi2 / ndf in the MUON track fit + Double_t GetChi2() const { return fChi2; } + /// Set weight assigned to the muon + void SetWeight(Double_t w) {fWeight=w;} + /// Return weight assigned to the muon + Double_t GetWeight() const { return fWeight; } + + /// Set muon charge void SetCharge(Int_t charge) {fCharge = charge;} + /// Return muon charge Int_t GetCharge() const {return fCharge;} + /// Return hadronised parents and grandparents Int_t GetParentPDGCode(Int_t index = 0) const { return fParentPDGCode[index]; } + /// Return line of Pythia output for hadronised parents & grandparents Int_t GetParentPythiaLine(Int_t index = 0) const { return fParentPythiaLine[index]; } + /// Return pdg of the string [0], quarks/gluons [1,2], sometimes proton [3] Int_t GetQuarkPDGCode(Int_t index = 0) const { return fQuarkPDGCode[index]; } + /// Return line of Pythia output for string [0] and quarks [1,2], sometimes proton [3] Int_t GetQuarkPythiaLine(Int_t index = 0) const { return fQuarkPythiaLine[index]; } + /// Return line of Pythia output for string [0] and quarks [1,2], sometimes proton [3] Int_t GetTrackPythiaLine() const {return fTrackPythiaLine;} + /// Return pdg code of the rec. track (in general will be a muon) Int_t GetTrackPDGCode() const {return fTrackPDGCode;} + /// Set line of kin. stack where rec. track (in general, the muon) is stored void SetTrackPythiaLine(Int_t trackLine) {fTrackPythiaLine = trackLine;} + /// Set pdg code of the rec. track (in general will be a muon) void SetTrackPDGCode(Int_t trackPdg) {fTrackPDGCode = trackPdg;} - void ComputePRecAndChargeFromESD(AliESDMuonTrack* muonTrack); + void FillFromESD(AliESDMuonTrack* muonTrack, Double_t zvert=-9999); + void FillFromAliMUONTrack(AliMUONTrack *trackReco,Double_t zvert=-9999); + /// Return info if is a muon Bool_t IsAMuon() const { return (TMath::Abs(fTrackPDGCode)==13); } + Bool_t IsParentPionOrKaon(Int_t idParent = 0); void SetPxPyPz(Double_t px, Double_t py, Double_t pz); + /// Set flag for trigger void SetTriggered(Bool_t isTriggered) { fIsTriggered = isTriggered; } + /// Return flag for trigger Bool_t IsTriggered() const { return fIsTriggered; } - TParticle* FindRefTrack(AliMUONTrack* trackReco, TClonesArray* trackRefArray, AliRunLoader *runLoader); - Int_t TrackCheck(Bool_t *compTrack); + /// Return acually filled no. of *fragmented* parents Int_t GetNParents() const {return fNParents;} - void FillMuonHistory(AliRunLoader *runLoader, TParticle *part); + void FillMuonHistory(AliStack *stack, TParticle *part); Bool_t IsB0(Int_t intTest) const;//checks if the provided PDG code corresponds to a neutral B meson Bool_t IsMotherAResonance(Int_t index=0) const; + /// Return flag for oscillation Bool_t GetOscillation() const {return fOscillation;} - virtual void PrintInfo(Option_t* opt); //"H" muon's decay history + virtual void PrintInfo(const Option_t* opt); //"H" muon's decay history //"K" muon kinematics //"A" all variables Int_t GetParentFlavour(Int_t idParent=0) const; + Bool_t IsDiquark(Int_t pdg) const; protected: - static const Int_t fgkNParentsMax = 5; /// maximum number of parents - TLorentzVector fPrec; /// reconstructed 4-momentum - Double_t fXYZ[3]; /// primary vertex position from the ITS - Bool_t fIsTriggered; /// flag for trigger - Int_t fCharge; /// muon charge - Float_t fCentr; /// centrality - TLorentzVector fPgen; /// 4-momentum of the generated particle - Int_t fTrackPythiaLine; ///line of kin. stack where rec. track (in general, the muon) is stored - Int_t fTrackPDGCode; ///pdg code of the rec. track (in general will be a muon) - Int_t fParentPDGCode[fgkNParentsMax]; /// hadronised parents and grandparents - Int_t fParentPythiaLine[fgkNParentsMax];///line of Pythia output for hadronised parents & grandparents - Int_t fQuarkPDGCode[4]; /// pdg of the string [0], quarks/gluons [1,2], sometimes proton [3] - Int_t fQuarkPythiaLine[4]; ///line of Pythia output for string [0] and quarks [1,2], sometimes proton [3] - Bool_t fOscillation; /// flag for oscillation - Int_t fNParents; ///acually filled no. of *fragmented* parents + static const Int_t fgkNParentsMax = 5; ///< maximum number of parents + TLorentzVector fPrec; ///< reconstructed 4-momentum + Double_t fXYZ[3]; ///< primary vertex position from the ITS + Bool_t fIsTriggered; ///< flag for trigger + Int_t fCharge; ///< muon charge + Double_t fChi2; ///< chi2 / ndf in the MUON track fit + Float_t fCentr; ///< centrality + TLorentzVector fPgen; ///< 4-momentum of the generated particle + Int_t fTrackPythiaLine; ///< line of kin. stack where rec. track (in general, the muon) is stored + Int_t fTrackPDGCode; ///< pdg code of the rec. track (in general will be a muon) + Int_t fParentPDGCode[fgkNParentsMax]; ///< hadronised parents and grandparents + Int_t fParentPythiaLine[fgkNParentsMax];///< line of Pythia output for hadronised parents & grandparents + Int_t fQuarkPDGCode[4]; ///< pdg of the string [0], quarks/gluons [1,2], sometimes proton [3] + Int_t fQuarkPythiaLine[4]; ///< line of Pythia output for string [0] and quarks [1,2], sometimes proton [3] + Bool_t fOscillation; ///< flag for oscillation + Int_t fNParents; ///< acually filled no. of *fragmented* parents + Double_t fWeight; ///< weight assigned to the muon + /// Set flag for oscillation void SetOscillation(Bool_t oscillation) { fOscillation = oscillation; } + /// Set hadronised parents and grandparents void SetParentPDGCode(Int_t index, Int_t pdg) { fParentPDGCode[index] = pdg; } + /// Set line of Pythia output for hadronised parents & grandparents void SetParentPythiaLine(Int_t index, Int_t line) { fParentPythiaLine[index] = line; } + /// Set pdg of the string [0], quarks/gluons [1,2], sometimes proton [3] void SetQuarkPDGCode(Int_t index, Int_t pdg){ fQuarkPDGCode[index] = pdg; } + /// Set line of Pythia output for string [0] and quarks [1,2], sometimes proton [3] void SetQuarkPythiaLine(Int_t index, Int_t line){ fQuarkPythiaLine[index] = line; } void ResetQuarkInfo();