#ifndef ALIMUONPAIRLIGHT_H #define ALIMUONPAIRLIGHT_H /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. * * See cxx source for full Copyright notice */ /* $Id$ */ // Revision of includes 06/09/2006 /// \ingroup evaluation /// \class AliMUONPairLight /// \brief Compact information for the generated muon pairs /// /// Compact information for the generated muon pairs in the MUON arm /// useful at the last stage of the analysis chain /// Pairs are built with two AliMUONTrackLight objects /// Using the class AliMUONTrackLight this class combines the decay /// information ("history") of the reconstructed tracks and fills /// a series of flags for the formed reconstructed dimuon: /// fIsCorrelated, fCreationProcess, fIsFeedDown, ... /// for information about the dimuon, use PrintInfo with the appropriate /// printflag /// To be used together with AliMUONTrackLight /// /// \author This class was prepared by INFN Cagliari, July 2006 /// (authors: H.Woehri, A.de Falco) // MUON classes #include "AliMUONTrackLight.h" // ROOT classes //#include "TLorentzVector.h" class TLorentzVector; class AliMUONPairLight : public TObject { public: AliMUONPairLight(); AliMUONPairLight(AliMUONPairLight &dimuCopy); virtual ~AliMUONPairLight(); AliMUONPairLight& operator=(const AliMUONPairLight&); virtual void SetMuons(const AliMUONTrackLight& mu0, const AliMUONTrackLight& mu1); AliMUONTrackLight* GetMuon(Int_t index) ; Int_t GetMuonMotherPDG(Int_t imuon, Int_t mother=0) ; /// returns kTRUE if the creation process of the pair was "open charm" (kFALSE... otherwise) Bool_t IsOpenCharm() {return (TMath::Abs(fMu0.GetParentFlavour(0))==4 && TMath::Abs(fMu1.GetParentFlavour(0))==4 && fIsCorrelated && !IsAResonance());} /// returns kTRUE if the creation process of the pair was "open beauty" (kFALSE... otherwise) Bool_t IsOpenBeauty() {return (TMath::Abs(fMu0.GetParentFlavour(0))==5 && TMath::Abs(fMu1.GetParentFlavour(0))==5 && fIsCorrelated && !IsAResonance());} Bool_t IsAResonance(); /// returns kTRUE if at least one of the first hadronised parent is a pi or a K (kFALSE... otherwise) Bool_t IsOneMuonFromPionOrKaon(){return (fMu0.IsParentPionOrKaon(0) || fMu1.IsParentPionOrKaon(0));} /// Return the info if the two muons are of correlated origin Bool_t IsCorrelated() const {return fIsCorrelated;} /// Return the pdg of common mother Int_t GetCauseOfCorrelation() const {return fCauseOfCorrelation;} /// Return the info if the process is from feeddown Bool_t IsFeedDown() const {return fIsFeedDown;} /// returns kTRUE if at least one of the reconstructed tracks is not a muon (kFALSE... otherwise) Bool_t IsOneTrackNotAMuon() {return (!( fMu0.IsAMuon() && fMu1.IsAMuon() )) ;} /// returns the charge of the created pair Int_t GetCharge() {return fMu0.GetCharge() + fMu1.GetCharge();} /// \brief Return the info ablout creation process ///0: pair creation, 1: gluon splitting, 2: flavour excitation, 3: same fragmented mother, -1: resonance Int_t GetCreationProcess() const {return fCreationProcess;} /// Set the info ablout creation process void SetCorrelated(Bool_t answer) {fIsCorrelated = answer; } /// Set the pdg of common mother void SetCauseOfCorrelation(Int_t pdg) {fCauseOfCorrelation = pdg; } /// Set the info if the process is from feeddown void SetFeedDown(Int_t answer) {fIsFeedDown = answer;} /// returns a TLorentzVector containing the reconstructed kinematics of the pair TLorentzVector GetPRec(){return fMu0.GetPRec()+fMu1.GetPRec();} /// returns a TLorentzVector containing the generated kinematics of the pair TLorentzVector GetPGen(){return fMu0.GetPGen()+fMu1.GetPGen();} Double_t GetOpeningAngle(); Bool_t IsDimuonFromCorrPiK(); virtual void PrintInfo(const Option_t* opt);//"H" single muons' decay histories //"K" dimuon kinematics //"F" dimuon flags //"A" all variables protected: /// Checks if muons are correlated and assigns void SetProcess(); AliMUONTrackLight fMu0; ///< first muon AliMUONTrackLight fMu1; ///< second muon Int_t fCreationProcess; ///<0: pair creation, 1: gluon splitting, 2: flavour excitation, 3: same fragmented mother, -1: resonance Bool_t fIsCorrelated; ///