00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
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;
00027
00028 namespace Atlfast {
00035 class MuonSmearer : virtual public ISmearer,
00036 virtual private DefaultSmearer
00037 {
00038 public:
00039
00040
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
00050
00051 virtual HepLorentzVector smear(const HepLorentzVector& avec);
00052
00053 private:
00054
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
00067
00068
00069
00070
00071
00072
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;
00081 };
00082
00083 }
00084
00085 #endif
00086
00087
00088
00089
00090
00091
00092
00093
00094
00095
00096
00097
00098
00099
00100
00101
00102
00103
00104
00105
00106