00001 #ifndef FML1PtSmearer_H 00002 #define FML1PtSmearer_H 00003 00004 class SimpleL1MuGMTCand; 00005 class RandomEngine; 00006 00016 class FML1PtSmearer { 00017 00018 public: 00019 00021 FML1PtSmearer(const RandomEngine * engine); 00022 00024 ~FML1PtSmearer(); 00025 00027 bool smear(SimpleL1MuGMTCand *); 00028 00029 private: 00030 00031 const RandomEngine * random; 00032 00033 int IndexOfPtgen(float pt); 00034 00035 static const int NPTL1=31; 00036 static const int NPT=136; 00037 static const int DIMRES=3*NPT*NPTL1; 00038 float resolution[DIMRES]; 00039 00040 inline float ChargeMisIdent(int ieta , double pt) { 00041 float df=0.; 00042 switch (ieta) { 00043 case 0: 00044 df = 2.16909e-03 + 1.95708e-04*pt ; 00045 break; 00046 case 1: 00047 if (pt>500.) pt = 500.; 00048 df = 1.00445e-02 + 1.15253e-03*pt - 7.73819e-07*pt*pt ; 00049 break; 00050 case 2: 00051 if (pt>200.) pt = 200.; 00052 df = 5.00580e-02 + 5.88949e-03*pt - 2.98100e-05*pt*pt + 5.02454e-08*pt*pt*pt ; 00053 break; 00054 } 00055 return (df<0.5? df: 0.5) ; 00056 } 00057 00058 }; 00059 00060 #endif