]> git.uio.no Git - u/mrichter/AliRoot.git/blob - MUON/AliMUONPairLight.h
First big commit of the mchview program and its accompanying library,
[u/mrichter/AliRoot.git] / MUON / AliMUONPairLight.h
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   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
43   /// returns kTRUE if the creation process of the pair was "open charm" (kFALSE... otherwise)
44   Bool_t IsOpenCharm() {return (TMath::Abs(fMu0.GetParentFlavour(0))==4 && TMath::Abs(fMu1.GetParentFlavour(0))==4 && fIsCorrelated && !IsAResonance());}
45   /// returns kTRUE if the creation process of the pair was "open beauty" (kFALSE... otherwise)
46   Bool_t IsOpenBeauty() {return (TMath::Abs(fMu0.GetParentFlavour(0))==5 && TMath::Abs(fMu1.GetParentFlavour(0))==5 && fIsCorrelated  && !IsAResonance());}
47   Bool_t IsAResonance(); 
48   /// returns kTRUE if at least one of the first hadronised parent is a pi or a K (kFALSE... otherwise)
49   Bool_t IsOneMuonFromPionOrKaon(){return (fMu0.IsParentPionOrKaon(0) || fMu1.IsParentPionOrKaon(0));}
50   /// Return the info if the two muons are of correlated origin
51   Bool_t IsCorrelated() const {return fIsCorrelated;}   
52   /// Return the pdg of common mother
53   Int_t GetCauseOfCorrelation() const {return fCauseOfCorrelation;}
54   /// Return the info if the process is from feeddown 
55   Bool_t IsFeedDown() const {return fIsFeedDown;}   
56   /// returns kTRUE if at least one of the reconstructed tracks is not a muon (kFALSE... otherwise)
57   Bool_t IsOneTrackNotAMuon() {return (!( fMu0.IsAMuon() && fMu1.IsAMuon() )) ;}
58   /// returns the charge of the created pair
59   Int_t GetCharge() {return fMu0.GetCharge() + fMu1.GetCharge();}
60   /// \brief Return the info ablout creation process
61   ///0: pair creation, 1: gluon splitting, 2: flavour excitation, 3: same fragmented mother, -1: resonance
62   Int_t GetCreationProcess() const  {return fCreationProcess;}
63   /// Set the info ablout creation process
64   void SetCorrelated(Bool_t answer) {fIsCorrelated = answer; }
65   /// Set the pdg of common mother
66   void SetCauseOfCorrelation(Int_t pdg) {fCauseOfCorrelation = pdg; }
67   /// Set the info if the process is from feeddown
68   void SetFeedDown(Int_t answer) {fIsFeedDown = answer;}
69   /// returns a TLorentzVector containing the reconstructed kinematics of the pair
70   TLorentzVector GetPRec(){return fMu0.GetPRec()+fMu1.GetPRec();}
71   /// returns a TLorentzVector containing the generated kinematics of the pair
72   TLorentzVector GetPGen(){return fMu0.GetPGen()+fMu1.GetPGen();}
73   Double_t GetOpeningAngle(); 
74   Bool_t IsDimuonFromCorrPiK();
75   virtual void PrintInfo(Option_t* opt);//"H" single muons' decay histories
76                                            //"K" dimuon kinematics
77                                            //"F" dimuon flags
78                                            //"A" all variables
79
80 protected: 
81   /// Checks if muons are correlated and assigns
82   void SetProcess();
83
84   AliMUONTrackLight fMu0;   ///< first muon  
85   AliMUONTrackLight fMu1;   ///< second muon
86   Int_t fCreationProcess; ///<0: pair creation, 1: gluon splitting, 2: flavour excitation, 3: same fragmented mother, -1: resonance
87   Bool_t fIsCorrelated; ///<tells if the two muons are of correlated origin
88   Int_t fCauseOfCorrelation; ///<pdg of common mother
89   Int_t fIsFeedDown;     ///< tells if the process is from feeddown 
90
91   ClassDef(AliMUONPairLight,1)  /// Dimuon carrying info at generation and reconstruction level
92 }; 
93 #endif