Line data Source code
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 */
5 :
6 : /* $Id$ */
7 : // Revision of includes 06/09/2006
8 :
9 : /// \ingroup evaluation
10 : /// \class AliMUONPairLight
11 : /// \brief Compact information for the generated muon pairs
12 : ///
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
21 : /// printflag
22 : /// To be used together with AliMUONTrackLight
23 : ///
24 : /// \author This class was prepared by INFN Cagliari, July 2006
25 : /// (authors: H.Woehri, A.de Falco)
26 :
27 : // MUON classes
28 : #include "AliMUONTrackLight.h"
29 :
30 : // ROOT classes
31 : //#include "TLorentzVector.h"
32 : class TLorentzVector;
33 :
34 : class AliMUONPairLight : public TObject {
35 : public:
36 : AliMUONPairLight();
37 : AliMUONPairLight(AliMUONPairLight &dimuCopy);
38 : virtual ~AliMUONPairLight();
39 : AliMUONPairLight& operator=(const AliMUONPairLight&);
40 : virtual void SetMuons(const AliMUONTrackLight& mu0, const AliMUONTrackLight& mu1);
41 : AliMUONTrackLight* GetMuon(Int_t index) ;
42 : Int_t GetMuonMotherPDG(Int_t imuon, Int_t mother=0) ;
43 :
44 : /// returns kTRUE if the creation process of the pair was "open charm" (kFALSE... otherwise)
45 0 : Bool_t IsOpenCharm() {return (TMath::Abs(fMu0.GetParentFlavour(0))==4 && TMath::Abs(fMu1.GetParentFlavour(0))==4 && fIsCorrelated && !IsAResonance());}
46 : /// returns kTRUE if the creation process of the pair was "open beauty" (kFALSE... otherwise)
47 0 : Bool_t IsOpenBeauty() {return (TMath::Abs(fMu0.GetParentFlavour(0))==5 && TMath::Abs(fMu1.GetParentFlavour(0))==5 && fIsCorrelated && !IsAResonance());}
48 : Bool_t IsAResonance();
49 : /// returns kTRUE if at least one of the first hadronised parent is a pi or a K (kFALSE... otherwise)
50 0 : Bool_t IsOneMuonFromPionOrKaon(){return (fMu0.IsParentPionOrKaon(0) || fMu1.IsParentPionOrKaon(0));}
51 : /// Return the info if the two muons are of correlated origin
52 0 : Bool_t IsCorrelated() const {return fIsCorrelated;}
53 : /// Return the pdg of common mother
54 0 : Int_t GetCauseOfCorrelation() const {return fCauseOfCorrelation;}
55 : /// Return the info if the process is from feeddown
56 0 : Bool_t IsFeedDown() const {return fIsFeedDown;}
57 : /// returns kTRUE if at least one of the reconstructed tracks is not a muon (kFALSE... otherwise)
58 0 : Bool_t IsOneTrackNotAMuon() {return (!( fMu0.IsAMuon() && fMu1.IsAMuon() )) ;}
59 : /// returns the charge of the created pair
60 0 : Int_t GetCharge() {return fMu0.GetCharge() + fMu1.GetCharge();}
61 : /// \brief Return the info ablout creation process
62 : ///0: pair creation, 1: gluon splitting, 2: flavour excitation, 3: same fragmented mother, -1: resonance
63 0 : Int_t GetCreationProcess() const {return fCreationProcess;}
64 : /// Set the info ablout creation process
65 0 : void SetCorrelated(Bool_t answer) {fIsCorrelated = answer; }
66 : /// Set the pdg of common mother
67 0 : void SetCauseOfCorrelation(Int_t pdg) {fCauseOfCorrelation = pdg; }
68 : /// Set the info if the process is from feeddown
69 0 : void SetFeedDown(Int_t answer) {fIsFeedDown = answer;}
70 : /// returns a TLorentzVector containing the reconstructed kinematics of the pair
71 0 : TLorentzVector GetPRec(){return fMu0.GetPRec()+fMu1.GetPRec();}
72 : /// returns a TLorentzVector containing the generated kinematics of the pair
73 0 : TLorentzVector GetPGen(){return fMu0.GetPGen()+fMu1.GetPGen();}
74 : Double_t GetOpeningAngle();
75 : Bool_t IsDimuonFromCorrPiK();
76 : virtual void PrintInfo(const Option_t* opt);//"H" single muons' decay histories
77 : //"K" dimuon kinematics
78 : //"F" dimuon flags
79 : //"A" all variables
80 :
81 : protected:
82 : /// Checks if muons are correlated and assigns
83 : void SetProcess();
84 :
85 : AliMUONTrackLight fMu0; ///< first muon
86 : AliMUONTrackLight fMu1; ///< second muon
87 : Int_t fCreationProcess; ///<0: pair creation, 1: gluon splitting, 2: flavour excitation, 3: same fragmented mother, -1: resonance
88 : Bool_t fIsCorrelated; ///<tells if the two muons are of correlated origin
89 : Int_t fCauseOfCorrelation; ///<pdg of common mother
90 : Int_t fIsFeedDown; ///< tells if the process is from feeddown
91 :
92 16 : ClassDef(AliMUONPairLight,1) /// Dimuon carrying info at generation and reconstruction level
93 : };
94 : #endif
|