Main Page   Namespace List   Class Hierarchy   Compound List   File List   Namespace Members   Compound Members   File Members  

MuonSmearer.h

Go to the documentation of this file.
00001 // MuonSmearer class
00002 //
00003 // Implements smearing for muons
00004 //
00005 // Namespace Atlfast::
00006 //
00007 //--------------------------------------------------------------
00008 //
00009 // MuonSmearer replicates the smearing code of ATLFAST++'s
00010 // MuonMaker. It provides the smear() method defined
00011 // in the ISmearer interface. It privately inherits from
00012 // the DefaultSmearer class to use its implementation of
00013 // random number services etc.
00014 //
00015 // Authors: H.T.Phillips, P. Clarke, E. Richter-Was, P. Sherwood, R. Steward
00016 //
00017 
00018 #ifndef ATLFAST_MUONSMEARER_H
00019 #define ATLFAST_MUONSMEARER_H
00020 
00021 
00022 #include <pair.h>
00023 #include "AtlfastCode/ISmearer.h"
00024 #include "AtlfastCode/DefaultSmearer.h"
00025 
00026 class HepLorentzVector; //forward declaration
00027 
00028 namespace Atlfast {
00035   class MuonSmearer : virtual public ISmearer, 
00036                           virtual private DefaultSmearer 
00037     {
00038     public:
00039       //--------------------------------------------------------------------------
00040       // constructors and destructors- we can leave everything to DefaultSmearer
00041       //--------------------------------------------------------------------------
00042       MuonSmearer(const int aseed, const int lumi, const int keymuo): 
00043         ISmearer(),       DefaultSmearer(aseed), m_lumi(lumi),    m_keymuo(keymuo), 
00044         m_magic1(0.0005), m_magic2(10./7000.),   m_magic3(0.012), m_magic4(0.02),
00045         m_percent(0.01) { }
00046       virtual ~MuonSmearer() { };
00047 
00048       //--------------------------------------------------------------------------
00049       // the only thing we actually need to provide is the smear() method
00050       //--------------------------------------------------------------------------
00051       virtual HepLorentzVector smear(const HepLorentzVector& avec);
00052 
00053     private:
00054       //      float resolumu_(float* pt, float* eta, float* phi, float* resol);
00055       pair<float, float> resolms(float pt, float eta, float phi);
00056       float resolid1(float pt, float eta);
00057       pair<float, float> resolid2(float pt, float eta);
00058       float resol1 (float sigmams, float sigmamuon,
00059                     float sigmaid, float sigmatrack);
00060       float resol2 (float sigmamuon, float sigmatrack);
00061       float resol3  ();
00062       float resol4  ();
00063 
00064 
00065       //--------------------------------------------------------------------------
00066       // luminosity option. Currently using an int with 1= low lumi
00067       // 2 = high lumi. This is not very pleasant, but leave for now
00068       //
00069       // flag:
00070       // 1   use muon sepectrometer alone
00071       // 2   use ID alone
00072       // >2  combinations of muon spectrometer and ID
00073       //--------------------------------------------------------------------------
00074       int   m_lumi;
00075       int   m_keymuo;
00076       float m_magic1;
00077       float m_magic2;
00078       float m_magic3;
00079       float m_magic4;
00080       float m_percent;  //to convert resolumu resolutions which are percerntages
00081     };
00082 
00083 } // end of namespace bracket
00084 
00085 #endif
00086 
00087 
00088 
00089 
00090 
00091 
00092 
00093 
00094 
00095 
00096 
00097 
00098 
00099 
00100 
00101 
00102 
00103 
00104 
00105 
00106 

Generated on Thu Feb 21 14:30:46 2002 for Atlfast by doxygen1.2.13.1 written by Dimitri van Heesch, © 1997-2001