1 #ifndef ALIMUONPAIRLIGHT_H
2 #define ALIMUONPAIRLIGHT_H
3 /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
4 * See cxx source for full Copyright notice */
7 // Revision of includes 06/09/2006
9 /// \ingroup evaluation
10 /// \class AliMUONPairLight
11 /// \brief Compact information for the generated muon pairs
13 /// Compact information for the generated muon pairs in the MUON arm
14 /// useful at the last stage of the analysis chain
15 /// Pairs are built with two AliMUONTrackLight objects
16 /// Using the class AliMUONTrackLight this class combines the decay
17 /// information ("history") of the reconstructed tracks and fills
18 /// a series of flags for the formed reconstructed dimuon:
19 /// fIsCorrelated, fCreationProcess, fIsFeedDown, ...
20 /// for information about the dimuon, use PrintInfo with the appropriate
22 /// To be used together with AliMUONTrackLight
24 /// \author This class was prepared by INFN Cagliari, July 2006
25 /// (authors: H.Woehri, A.de Falco)
28 #include "AliMUONTrackLight.h"
31 //#include "TLorentzVector.h"
34 class AliMUONPairLight : public TObject {
37 AliMUONPairLight(AliMUONPairLight &dimuCopy);
38 virtual ~AliMUONPairLight();
39 virtual void SetMuons(AliMUONTrackLight mu0, AliMUONTrackLight mu1);
40 AliMUONTrackLight* GetMuon(Int_t index) ;
41 Int_t GetMuonMotherPDG(Int_t imuon, Int_t mother=0) ;
42 Bool_t IsOpenCharm() {return (TMath::Abs(fMu0.GetParentFlavour(0))==4 && TMath::Abs(fMu1.GetParentFlavour(0))==4 && fIsCorrelated && !IsAResonance());}
43 Bool_t IsOpenBeauty() {return (TMath::Abs(fMu0.GetParentFlavour(0))==5 && TMath::Abs(fMu1.GetParentFlavour(0))==5 && fIsCorrelated && !IsAResonance());}
44 Bool_t IsAResonance();
45 Bool_t IsCorrelated() const {return fIsCorrelated;}
46 Int_t GetCauseOfCorrelation() const {return fCauseOfCorrelation;}
47 Bool_t IsFeedDown() const {return fIsFeedDown;}
48 Bool_t IsOneTrackNotAMuon() {return (!( fMu0.IsAMuon() && fMu1.IsAMuon() )) ;}
49 Int_t GetCharge() {return fMu0.GetCharge() + fMu1.GetCharge();}
50 Int_t GetCreationProcess() const {return fCreationProcess;}
51 void SetCorrelated(Bool_t answer) {fIsCorrelated = answer; }
52 void SetCauseOfCorrelation(Int_t pdg) {fCauseOfCorrelation = pdg; }
53 void SetFeedDown(Int_t answer) {fIsFeedDown = answer;}
54 TLorentzVector GetPRec(){return fMu0.GetPRec()+fMu1.GetPRec();}
55 TLorentzVector GetPGen(){return fMu0.GetPGen()+fMu1.GetPGen();}
56 Double_t GetOpeningAngle();
57 virtual void PrintInfo(Option_t* opt);//"H" single muons' decay histories
58 //"K" dimuon kinematics
62 AliMUONTrackLight fMu0; /// first muon
63 AliMUONTrackLight fMu1; /// second muon
64 Int_t fCreationProcess; ///0: pair creation, 1: gluon splitting, 2: flavour excitation, 3: same fragmented mother, -1: resonance
65 Bool_t fIsCorrelated; ///tells if the two muons are of correlated origin
66 Int_t fCauseOfCorrelation; ///pdg of common mother
67 Int_t fIsFeedDown; /// tells if the process is from feeddown
69 void SetProcess();///checks if muons are correlated and assigns
71 ClassDef(AliMUONPairLight,1) /// Dimuon carrying info at generation and reconstruction level