CMS 3D CMS Logo

All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
FMGLfromTKEfficiencyHandler.cc
Go to the documentation of this file.
1 #include <fstream>
2 
5 
8 
10 
12  : random(engine) {;
13 
14  std::string fname = "FastSimulation/ParamL3MuonProducer/data/efficiencyGL_TK.data";
15  std::string path(getenv("CMSSW_SEARCH_PATH"));
16  FileInPath f1(path,fname);
17 
18  if ( f1() == 0) {
19  std::cout << "File efficiencyGL_TK.data not found in " << path << std::endl;
20  throw Genexception(" efficiency list not found for FMGLfromTKEfficiencyHandler.");
21  } else {
22  std::cout << "Reading " << f1.name() << std::endl;
23  }
24  std::ifstream & listfile = *f1();
25 
26  double eff=0.;
27  int nent;
28  listfile >> nent;
29  if (nent != nEtaBins) {
30  std::cout << " *** ERROR -> FMGLfromTKEfficiencyHandler : nEta bins " << nent << " instead of " << nEtaBins << std::endl;
31  }
32  for (int i=0; i<nEtaBins; i++) {
33  listfile >> eff;
34  Effic_Eta[i]=eff;
35  }
36 
37 }
38 
40  delete Effic_Eta;
41 }
42 
44 
45  // At least eight hit in the tracker : To be tuned !!!
46  //if ( aTrack.recHits().size() < 8 ) return false;
47 
48  // At least zero reconstructed Pixel hits : To be tuned !!!
49  //int seed = 0;
50  //for ( unsigned i=1; i<6; ++i )
51  // if ( aTrack.isARecHit(i) ) ++seed;
52  //if ( seed < 0 ) return false;
53 
54  double myEffEta=0. , myEffPt=0. , myCorrection=1. , myEff;
55 
56  // Eta dependence :
57  double eta = fabs(aTrack.momentum().eta());
58  if (eta < 2.40) {
59  int iEtaBin = (int) ( (eta/2.40) * nEtaBins);
60  myEffEta = Effic_Eta[iEtaBin];
61  } else return false;
62 
63  // Pt dependence (same as L3 muons for "track-only" Global Muons):
64  double pt = std::sqrt(aTrack.momentum().perp2());
65  if (eta<1.04) {
66  if (pt>40.) myEffPt = 0.9583 - pt*5.82726e-05;
67  // else if (pt>4.10) myEffPt = 0.952*(1.-exp(-(pt-4.072)));
68  else if (pt>4.0) myEffPt = 0.952*(1.-sqrt(exp(-(pt-3.2))));
69  // myCorrection = 1.045;
70  myCorrection = 1.077;
71  }
72  else if (eta<2.07) {
73  if (pt>173.) myEffPt = 0.991 - pt*3.46562e-05;
74  // else if (pt>3.10) myEffPt = 0.985*(1.-exp(-(pt-3.061)));
75  else if (pt>3.0) myEffPt = 0.985*(1.-sqrt(exp(-(pt-2.4))));
76  // myCorrection = 1.027;
77  myCorrection = 1.028;
78  }
79  else if (eta<2.40) {
80  if (pt>26.) myEffPt = 0.9221 - pt*7.75139e-05;
81  else if (pt>3.00) myEffPt = 0.927*(1.-exp(-sqrt(pt-1.617)));
82  // myCorrection = 1.061;
83  myCorrection = 1.133;
84  }
85  else return false;
86 
87  /*
88  // Special high Pt muons treatment :
89  if (pt>400.) {
90  float myEffHighPt=1.;
91  float pttev = pt/1000.;
92  if (eta < 0.3) {
93  myEffHighPt = 0.952 - 0.033*pttev;
94  } else if ( eta < 0.6) {
95  myEffHighPt = 0.973 - 0.033*pttev;
96  } else if ( eta < 0.9) {
97  myEffHighPt = 0.969 - 0.045*pttev;
98  } else if ( eta < 1.2) {
99  myEffHighPt = 0.968 - 0.058*pttev;
100  } else if ( eta < 1.5) {
101  myEffHighPt = 0.966 - 0.074*pttev;
102  } else if ( eta < 1.8) {
103  myEffHighPt = 0.955 - 0.11*pttev;
104  } else if ( eta < 2.1) {
105  myEffHighPt = 0.982 - 0.11*pttev;
106  } else {
107  myEffHighPt = 0.958 - 0.14*pttev;
108  }
109  myEffPt = (myEffPt>myEffHighPt? myEffHighPt : myEffPt);
110  }
111  */
112  /*
113  if (eta<1.04) {
114  if (pt>40.) myEffPt = 0.9583 - pt*5.82726e-05;
115  else if (pt>4.10) myEffPt = 0.952*(1.-exp(-(pt-4.072)));
116  myCorrection = 1.115;
117  }
118  else if (eta<2.07) {
119  if (pt>173.) myEffPt = 0.991 - pt*3.46562e-05;
120  else if (pt>3.10) myEffPt = 0.985*(1.-exp(-(pt-3.061)));
121  myCorrection = 1.034;
122  }
123  else if (eta<2.40) {
124  if (pt>26.) myEffPt = 0.9221 - pt*7.75139e-05;
125  else if (pt>3.00) myEffPt = 0.927*(1.-exp(-sqrt(pt-1.617)));
126  myCorrection = 1.157;
127  }
128  else return false;
129  */
130 
131  myEff = myEffEta*myEffPt*myCorrection;
132 
133  double prob = random->flatShoot();
134  return (myEff > prob) ;
135 
136 }
137 
138 
139 
int i
Definition: DBlmapReader.cc:9
FMGLfromTKEfficiencyHandler(const RandomEngine *engine)
Exp< T >::type exp(const T &t)
Definition: Exp.h:22
TRandom random
Definition: MVATrainer.cc:138
T eta() const
int path() const
Definition: HLTadd.h:3
T sqrt(T t)
Definition: SSEVec.h:28
double flatShoot(double xmin=0.0, double xmax=1.0) const
Definition: RandomEngine.h:30
const String & name() const
return full name
Definition: FileInPath.h:34
string fname
main script
const math::XYZTLorentzVectorD & momentum() const
particle info...
Definition: CoreSimTrack.h:36
tuple cout
Definition: gather_cfg.py:41