CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
AntiElectronIDMVA5.cc
Go to the documentation of this file.
2 
4 
10 
13 
14 #include <TFile.h>
15 
17  : isInitialized_(false),
18  mva_NoEleMatch_woGwoGSF_BL_(0),
19  mva_NoEleMatch_woGwGSF_BL_(0),
20  mva_NoEleMatch_wGwoGSF_BL_(0),
21  mva_NoEleMatch_wGwGSF_BL_(0),
22  mva_woGwoGSF_BL_(0),
23  mva_woGwGSF_BL_(0),
24  mva_wGwoGSF_BL_(0),
25  mva_wGwGSF_BL_(0),
26  mva_NoEleMatch_woGwoGSF_EC_(0),
27  mva_NoEleMatch_woGwGSF_EC_(0),
28  mva_NoEleMatch_wGwoGSF_EC_(0),
29  mva_NoEleMatch_wGwGSF_EC_(0),
30  mva_woGwoGSF_EC_(0),
31  mva_woGwGSF_EC_(0),
32  mva_wGwoGSF_EC_(0),
33  mva_wGwGSF_EC_(0)
34 {
35  loadMVAfromDB_ = cfg.exists("loadMVAfromDB") ? cfg.getParameter<bool>("loadMVAfromDB"): false;
36  if ( !loadMVAfromDB_ ) {
37  inputFileName_ = cfg.getParameter<edm::FileInPath>("inputFileName");
38  }
39  mvaName_NoEleMatch_woGwoGSF_BL_ = cfg.getParameter<std::string>("mvaName_NoEleMatch_woGwoGSF_BL");
40  mvaName_NoEleMatch_woGwGSF_BL_ = cfg.getParameter<std::string>("mvaName_NoEleMatch_woGwGSF_BL");
41  mvaName_NoEleMatch_wGwoGSF_BL_ = cfg.getParameter<std::string>("mvaName_NoEleMatch_wGwoGSF_BL");
42  mvaName_NoEleMatch_wGwGSF_BL_ = cfg.getParameter<std::string>("mvaName_NoEleMatch_wGwGSF_BL");
43  mvaName_woGwoGSF_BL_ = cfg.getParameter<std::string>("mvaName_woGwoGSF_BL");
44  mvaName_woGwGSF_BL_ = cfg.getParameter<std::string>("mvaName_woGwGSF_BL");
45  mvaName_wGwoGSF_BL_ = cfg.getParameter<std::string>("mvaName_wGwoGSF_BL");
46  mvaName_wGwGSF_BL_ = cfg.getParameter<std::string>("mvaName_wGwGSF_BL");
47  mvaName_NoEleMatch_woGwoGSF_EC_ = cfg.getParameter<std::string>("mvaName_NoEleMatch_woGwoGSF_EC");
48  mvaName_NoEleMatch_woGwGSF_EC_ = cfg.getParameter<std::string>("mvaName_NoEleMatch_woGwGSF_EC");
49  mvaName_NoEleMatch_wGwoGSF_EC_ = cfg.getParameter<std::string>("mvaName_NoEleMatch_wGwoGSF_EC");
50  mvaName_NoEleMatch_wGwGSF_EC_ = cfg.getParameter<std::string>("mvaName_NoEleMatch_wGwGSF_EC");
51  mvaName_woGwoGSF_EC_ = cfg.getParameter<std::string>("mvaName_woGwoGSF_EC");
52  mvaName_woGwGSF_EC_ = cfg.getParameter<std::string>("mvaName_woGwGSF_EC");
53  mvaName_wGwoGSF_EC_ = cfg.getParameter<std::string>("mvaName_wGwoGSF_EC");
54  mvaName_wGwGSF_EC_ = cfg.getParameter<std::string>("mvaName_wGwGSF_EC");
55 
56  Var_NoEleMatch_woGwoGSF_Barrel_ = new Float_t[10];
57  Var_NoEleMatch_woGwGSF_Barrel_ = new Float_t[16];
58  Var_NoEleMatch_wGwoGSF_Barrel_ = new Float_t[14];
59  Var_NoEleMatch_wGwGSF_Barrel_ = new Float_t[20];
60  Var_woGwoGSF_Barrel_ = new Float_t[18];
61  Var_woGwGSF_Barrel_ = new Float_t[24];
62  Var_wGwoGSF_Barrel_ = new Float_t[22];
63  Var_wGwGSF_Barrel_ = new Float_t[28];
64  Var_NoEleMatch_woGwoGSF_Endcap_ = new Float_t[9];
65  Var_NoEleMatch_woGwGSF_Endcap_ = new Float_t[15];
66  Var_NoEleMatch_wGwoGSF_Endcap_ = new Float_t[13];
67  Var_NoEleMatch_wGwGSF_Endcap_ = new Float_t[19];
68  Var_woGwoGSF_Endcap_ = new Float_t[17];
69  Var_woGwGSF_Endcap_ = new Float_t[23];
70  Var_wGwoGSF_Endcap_ = new Float_t[21];
71  Var_wGwGSF_Endcap_ = new Float_t[27];
72 
73  verbosity_ = 0;
74 }
75 
77 {
82  delete [] Var_woGwoGSF_Barrel_;
83  delete [] Var_woGwGSF_Barrel_;
84  delete [] Var_wGwoGSF_Barrel_;
85  delete [] Var_wGwGSF_Barrel_;
90  delete [] Var_woGwoGSF_Endcap_;
91  delete [] Var_woGwGSF_Endcap_;
92  delete [] Var_wGwoGSF_Endcap_;
93  delete [] Var_wGwGSF_Endcap_;
94  if ( !loadMVAfromDB_ ){
99  delete mva_woGwoGSF_BL_;
100  delete mva_woGwGSF_BL_;
101  delete mva_wGwoGSF_BL_;
102  delete mva_wGwGSF_BL_;
107  delete mva_woGwoGSF_EC_;
108  delete mva_woGwGSF_EC_;
109  delete mva_wGwoGSF_EC_;
110  delete mva_wGwGSF_EC_;
111  }
112  for ( std::vector<TFile*>::iterator it = inputFilesToDelete_.begin();
113  it != inputFilesToDelete_.end(); ++it ) {
114  delete (*it);
115  }
116 }
117 
118 namespace
119 {
120  const GBRForest* loadMVAfromFile(TFile* inputFile, const std::string& mvaName)
121  {
122 
123  //const GBRForest* mva = dynamic_cast<GBRForest*>(inputFile->Get(mvaName.data())); // CV: dynamic_cast<GBRForest*> fails for some reason ?!
124  const GBRForest* mva = (GBRForest*)inputFile->Get(mvaName.data());
125  if ( !mva )
126  throw cms::Exception("PFRecoTauDiscriminationAgainstMuonMVA::loadMVA")
127  << " Failed to load MVA = " << mvaName.data() << " from file " << " !!\n";
128 
129  return mva;
130  }
131 
132  const GBRForest* loadMVAfromDB(const edm::EventSetup& es, const std::string& mvaName)
133  {
135  es.get<GBRWrapperRcd>().get(mvaName, mva);
136  return mva.product();
137  }
138 }
139 
141 {
142  if ( !isInitialized_ ) {
143  if ( loadMVAfromDB_ ) {
160  } else {
161  if ( inputFileName_.location() == edm::FileInPath::Unknown ) throw cms::Exception("PFRecoTauDiscriminationAgainstMuonMVA::loadMVA")
162  << " Failed to find File = " << inputFileName_ << " !!\n";
163  TFile* inputFile = new TFile(inputFileName_.fullPath().data());
164 
165  mva_NoEleMatch_woGwoGSF_BL_ = loadMVAfromFile(inputFile, mvaName_NoEleMatch_woGwoGSF_BL_);
166  mva_NoEleMatch_woGwGSF_BL_ = loadMVAfromFile(inputFile, mvaName_NoEleMatch_woGwGSF_BL_);
167  mva_NoEleMatch_wGwoGSF_BL_ = loadMVAfromFile(inputFile, mvaName_NoEleMatch_wGwoGSF_BL_);
168  mva_NoEleMatch_wGwGSF_BL_ = loadMVAfromFile(inputFile, mvaName_NoEleMatch_wGwGSF_BL_);
169  mva_woGwoGSF_BL_ = loadMVAfromFile(inputFile, mvaName_woGwoGSF_BL_);
170  mva_woGwGSF_BL_ = loadMVAfromFile(inputFile, mvaName_woGwGSF_BL_);
171  mva_wGwoGSF_BL_ = loadMVAfromFile(inputFile, mvaName_wGwoGSF_BL_);
172  mva_wGwGSF_BL_ = loadMVAfromFile(inputFile, mvaName_wGwGSF_BL_);
173  mva_NoEleMatch_woGwoGSF_EC_ = loadMVAfromFile(inputFile, mvaName_NoEleMatch_woGwoGSF_EC_);
174  mva_NoEleMatch_woGwGSF_EC_ = loadMVAfromFile(inputFile, mvaName_NoEleMatch_woGwGSF_EC_);
175  mva_NoEleMatch_wGwoGSF_EC_ = loadMVAfromFile(inputFile, mvaName_NoEleMatch_wGwoGSF_EC_);
176  mva_NoEleMatch_wGwGSF_EC_ = loadMVAfromFile(inputFile, mvaName_NoEleMatch_wGwGSF_EC_);
177  mva_woGwoGSF_EC_ = loadMVAfromFile(inputFile, mvaName_woGwoGSF_EC_);
178  mva_woGwGSF_EC_ = loadMVAfromFile(inputFile, mvaName_woGwGSF_EC_);
179  mva_wGwoGSF_EC_ = loadMVAfromFile(inputFile, mvaName_wGwoGSF_EC_);
180  mva_wGwGSF_EC_ = loadMVAfromFile(inputFile, mvaName_wGwGSF_EC_);
181  inputFilesToDelete_.push_back(inputFile);
182  }
183  isInitialized_ = true;
184  }
185 }
186 
187 double AntiElectronIDMVA5::MVAValue(Float_t TauEtaAtEcalEntrance,
188  Float_t TauPt,
189  Float_t TauLeadChargedPFCandEtaAtEcalEntrance,
190  Float_t TauLeadChargedPFCandPt,
191  Float_t TaudCrackEta,
192  Float_t TaudCrackPhi,
193  Float_t TauEmFraction,
194  Float_t TauSignalPFGammaCands,
195  Float_t TauLeadPFChargedHadrHoP,
196  Float_t TauLeadPFChargedHadrEoP,
197  Float_t TauVisMass,
198  Float_t TauHadrMva,
199  const std::vector<Float_t>& GammasdEta,
200  const std::vector<Float_t>& GammasdPhi,
201  const std::vector<Float_t>& GammasPt,
202  Float_t TauKFNumHits,
203  Float_t TauGSFNumHits,
204  Float_t TauGSFChi2,
205  Float_t TauGSFTrackResol,
206  Float_t TauGSFTracklnPt,
207  Float_t TauGSFTrackEta,
208  Float_t TauPhi,
209  Float_t TauSignalPFChargedCands,
210  Float_t TauHasGsf,
211  Float_t ElecEta,
212  Float_t ElecPhi,
213  Float_t ElecPt,
214  Float_t ElecEe,
215  Float_t ElecEgamma,
216  Float_t ElecPin,
217  Float_t ElecPout,
218  Float_t ElecFbrem,
219  Float_t ElecChi2GSF,
220  Float_t ElecGSFNumHits,
221  Float_t ElecGSFTrackResol,
222  Float_t ElecGSFTracklnPt,
223  Float_t ElecGSFTrackEta)
224 {
225  double sumPt = 0.;
226  double dEta = 0.;
227  double dEta2 = 0.;
228  double dPhi = 0.;
229  double dPhi2 = 0.;
230  double sumPt2 = 0.;
231  for ( unsigned int i = 0 ; i < GammasPt.size() ; ++i ) {
232  double pt_i = GammasPt[i];
233  double phi_i = GammasdPhi[i];
234  if ( GammasdPhi[i] > M_PI ) phi_i = GammasdPhi[i] - 2*M_PI;
235  else if ( GammasdPhi[i] < -M_PI ) phi_i = GammasdPhi[i] + 2*M_PI;
236  double eta_i = GammasdEta[i];
237  sumPt += pt_i;
238  sumPt2 += (pt_i*pt_i);
239  dEta += (pt_i*eta_i);
240  dEta2 += (pt_i*eta_i*eta_i);
241  dPhi += (pt_i*phi_i);
242  dPhi2 += (pt_i*phi_i*phi_i);
243  }
244 
245  Float_t TauGammaEnFrac = sumPt/TauPt;
246 
247  if ( sumPt > 0. ) {
248  dEta /= sumPt;
249  dPhi /= sumPt;
250  dEta2 /= sumPt;
251  dPhi2 /= sumPt;
252  }
253 
254  Float_t TauGammaEtaMom = std::sqrt(dEta2)*std::sqrt(TauGammaEnFrac)*TauPt;
255  Float_t TauGammaPhiMom = std::sqrt(dPhi2)*std::sqrt(TauGammaEnFrac)*TauPt;
256 
257  return MVAValue(TauEtaAtEcalEntrance,
258  TauPt,
259  TauLeadChargedPFCandEtaAtEcalEntrance,
260  TauLeadChargedPFCandPt,
261  TaudCrackEta,
262  TaudCrackPhi,
263  TauEmFraction,
264  TauSignalPFGammaCands,
265  TauLeadPFChargedHadrHoP,
266  TauLeadPFChargedHadrEoP,
267  TauVisMass,
268  TauHadrMva,
269  TauGammaEtaMom,
270  TauGammaPhiMom,
271  TauGammaEnFrac,
272  TauKFNumHits,
273  TauGSFNumHits,
274  TauGSFChi2,
275  TauGSFTrackResol,
276  TauGSFTracklnPt,
277  TauGSFTrackEta,
278  TauPhi,
279  TauSignalPFChargedCands,
280  TauHasGsf,
281  ElecEta,
282  ElecPhi,
283  ElecPt,
284  ElecEe,
285  ElecEgamma,
286  ElecPin,
287  ElecPout,
288  ElecFbrem,
289  ElecChi2GSF,
290  ElecGSFNumHits,
291  ElecGSFTrackResol,
292  ElecGSFTracklnPt,
293  ElecGSFTrackEta);
294 }
295 
296 double AntiElectronIDMVA5::MVAValue(Float_t TauEtaAtEcalEntrance,
297  Float_t TauPt,
298  Float_t TauLeadChargedPFCandEtaAtEcalEntrance,
299  Float_t TauLeadChargedPFCandPt,
300  Float_t TaudCrackEta,
301  Float_t TaudCrackPhi,
302  Float_t TauEmFract,
303  Float_t TauSignalPFGammaCands,
304  Float_t TauLeadPFChargedHadrHoP,
305  Float_t TauLeadPFChargedHadrEoP,
306  Float_t TauVisMass,
307  Float_t TauHadrMva,
308  Float_t TauGammaEtaMom,
309  Float_t TauGammaPhiMom,
310  Float_t TauGammaEnFrac,
311  Float_t TauKFNumHits,
312  Float_t TauGSFNumHits,
313  Float_t TauGSFChi2,
314  Float_t TauGSFTrackResol,
315  Float_t TauGSFTracklnPt,
316  Float_t TauGSFTrackEta,
317  Float_t TauPhi,
318  Float_t TauSignalPFChargedCands,
319  Float_t TauHasGsf,
320  Float_t ElecEta,
321  Float_t ElecPhi,
322  Float_t ElecPt,
323  Float_t ElecEe,
324  Float_t ElecEgamma,
325  Float_t ElecPin,
326  Float_t ElecPout,
327  Float_t ElecFbrem,
328  Float_t ElecChi2GSF,
329  Float_t ElecGSFNumHits,
330  Float_t ElecGSFTrackResol,
331  Float_t ElecGSFTracklnPt,
332  Float_t ElecGSFTrackEta)
333 {
334  if ( !isInitialized_ ) {
335  throw cms::Exception("ClassNotInitialized")
336  << " AntiElectronMVA not properly initialized !!\n";
337  }
338 
339  Float_t TauEmFraction = std::max(TauEmFract, float(0.));
340  Float_t TauNumHitsVariable = (TauGSFNumHits - TauKFNumHits)/(TauGSFNumHits + TauKFNumHits);
341  Float_t ElecEtotOverPin = (ElecEe + ElecEgamma)/ElecPin;
342  Float_t ElecEgammaOverPdif = ElecEgamma/(ElecPin - ElecPout);
343 
344  double mvaValue = -99.;
345  if ( deltaR(TauEtaAtEcalEntrance, TauPhi, ElecEta, ElecPhi) > 0.3 && TauSignalPFGammaCands == 0 && TauHasGsf < 0.5) {
346  if ( std::abs(TauEtaAtEcalEntrance) < 1.479 ){
347  Var_NoEleMatch_woGwoGSF_Barrel_[0] = TauEtaAtEcalEntrance;
348  Var_NoEleMatch_woGwoGSF_Barrel_[1] = TauLeadChargedPFCandEtaAtEcalEntrance;
349  Var_NoEleMatch_woGwoGSF_Barrel_[2] = std::min(float(2.), TauLeadChargedPFCandPt/std::max(float(1.), TauPt));
350  Var_NoEleMatch_woGwoGSF_Barrel_[3] = std::log(std::max(float(1.), TauPt));
351  Var_NoEleMatch_woGwoGSF_Barrel_[4] = TauEmFraction;
352  Var_NoEleMatch_woGwoGSF_Barrel_[5] = TauLeadPFChargedHadrHoP;
353  Var_NoEleMatch_woGwoGSF_Barrel_[6] = TauLeadPFChargedHadrEoP;
354  Var_NoEleMatch_woGwoGSF_Barrel_[7] = TauVisMass;
355  Var_NoEleMatch_woGwoGSF_Barrel_[8] = TaudCrackEta;
356  Var_NoEleMatch_woGwoGSF_Barrel_[9] = TaudCrackPhi;
358  } else {
359  Var_NoEleMatch_woGwoGSF_Endcap_[0] = TauEtaAtEcalEntrance;
360  Var_NoEleMatch_woGwoGSF_Endcap_[1] = TauLeadChargedPFCandEtaAtEcalEntrance;
361  Var_NoEleMatch_woGwoGSF_Endcap_[2] = std::min(float(2.), TauLeadChargedPFCandPt/std::max(float(1.), TauPt));
362  Var_NoEleMatch_woGwoGSF_Endcap_[3] = std::log(std::max(float(1.), TauPt));
363  Var_NoEleMatch_woGwoGSF_Endcap_[4] = TauEmFraction;
364  Var_NoEleMatch_woGwoGSF_Endcap_[5] = TauLeadPFChargedHadrHoP;
365  Var_NoEleMatch_woGwoGSF_Endcap_[6] = TauLeadPFChargedHadrEoP;
366  Var_NoEleMatch_woGwoGSF_Endcap_[7] = TauVisMass;
367  Var_NoEleMatch_woGwoGSF_Endcap_[8] = TaudCrackEta;
369  }
370  } else if ( deltaR(TauEtaAtEcalEntrance, TauPhi, ElecEta, ElecPhi) > 0.3 && TauSignalPFGammaCands == 0 && TauHasGsf > 0.5) {
371  if ( std::abs(TauEtaAtEcalEntrance) < 1.479 ){
372  Var_NoEleMatch_woGwGSF_Barrel_[0] = TauEtaAtEcalEntrance;
373  Var_NoEleMatch_woGwGSF_Barrel_[1] = TauLeadChargedPFCandEtaAtEcalEntrance;
374  Var_NoEleMatch_woGwGSF_Barrel_[2] = std::min(float(2.), TauLeadChargedPFCandPt/std::max(float(1.), TauPt));
375  Var_NoEleMatch_woGwGSF_Barrel_[3] = std::log(std::max(float(1.), TauPt));
376  Var_NoEleMatch_woGwGSF_Barrel_[4] = TauEmFraction;
377  Var_NoEleMatch_woGwGSF_Barrel_[5] = TauLeadPFChargedHadrHoP;
378  Var_NoEleMatch_woGwGSF_Barrel_[6] = TauLeadPFChargedHadrEoP;
379  Var_NoEleMatch_woGwGSF_Barrel_[7] = TauVisMass;
380  Var_NoEleMatch_woGwGSF_Barrel_[8] = TauHadrMva;
381  Var_NoEleMatch_woGwGSF_Barrel_[9] = TauGSFChi2;
382  Var_NoEleMatch_woGwGSF_Barrel_[10] = TauNumHitsVariable;
383  Var_NoEleMatch_woGwGSF_Barrel_[11] = TauGSFTrackResol;
384  Var_NoEleMatch_woGwGSF_Barrel_[12] = TauGSFTracklnPt;
385  Var_NoEleMatch_woGwGSF_Barrel_[13] = TauGSFTrackEta;
386  Var_NoEleMatch_woGwGSF_Barrel_[14] = TaudCrackEta;
387  Var_NoEleMatch_woGwGSF_Barrel_[15] = TaudCrackPhi;
389  } else {
390  Var_NoEleMatch_woGwGSF_Endcap_[0] = TauEtaAtEcalEntrance;
391  Var_NoEleMatch_woGwGSF_Endcap_[1] = TauLeadChargedPFCandEtaAtEcalEntrance;
392  Var_NoEleMatch_woGwGSF_Endcap_[2] = std::min(float(2.), TauLeadChargedPFCandPt/std::max(float(1.), TauPt));
393  Var_NoEleMatch_woGwGSF_Endcap_[3] = std::log(std::max(float(1.), TauPt));
394  Var_NoEleMatch_woGwGSF_Endcap_[4] = TauEmFraction;
395  Var_NoEleMatch_woGwGSF_Endcap_[5] = TauLeadPFChargedHadrHoP;
396  Var_NoEleMatch_woGwGSF_Endcap_[6] = TauLeadPFChargedHadrEoP;
397  Var_NoEleMatch_woGwGSF_Endcap_[7] = TauVisMass;
398  Var_NoEleMatch_woGwGSF_Endcap_[8] = TauHadrMva;
399  Var_NoEleMatch_woGwGSF_Endcap_[9] = TauGSFChi2;
400  Var_NoEleMatch_woGwGSF_Endcap_[10] = TauNumHitsVariable;
401  Var_NoEleMatch_woGwGSF_Endcap_[11] = TauGSFTrackResol;
402  Var_NoEleMatch_woGwGSF_Endcap_[12] = TauGSFTracklnPt;
403  Var_NoEleMatch_woGwGSF_Endcap_[13] = TauGSFTrackEta;
404  Var_NoEleMatch_woGwGSF_Endcap_[14] = TaudCrackEta;
406  }
407  } else if ( deltaR(TauEtaAtEcalEntrance, TauPhi, ElecEta, ElecPhi) > 0.3 && TauSignalPFGammaCands > 0 && TauHasGsf < 0.5 ) {
408  if ( std::abs(TauEtaAtEcalEntrance) < 1.479 ){
409  Var_NoEleMatch_wGwoGSF_Barrel_[0] = TauEtaAtEcalEntrance;
410  Var_NoEleMatch_wGwoGSF_Barrel_[1] = TauLeadChargedPFCandEtaAtEcalEntrance;
411  Var_NoEleMatch_wGwoGSF_Barrel_[2] = std::min(float(2.), TauLeadChargedPFCandPt/std::max(float(1.), TauPt));
412  Var_NoEleMatch_wGwoGSF_Barrel_[3] = std::log(std::max(float(1.), TauPt));
413  Var_NoEleMatch_wGwoGSF_Barrel_[4] = TauEmFraction;
414  Var_NoEleMatch_wGwoGSF_Barrel_[5] = TauSignalPFGammaCands;
415  Var_NoEleMatch_wGwoGSF_Barrel_[6] = TauLeadPFChargedHadrHoP;
416  Var_NoEleMatch_wGwoGSF_Barrel_[7] = TauLeadPFChargedHadrEoP;
417  Var_NoEleMatch_wGwoGSF_Barrel_[8] = TauVisMass;
418  Var_NoEleMatch_wGwoGSF_Barrel_[9] = TauGammaEtaMom;
419  Var_NoEleMatch_wGwoGSF_Barrel_[10] = TauGammaPhiMom;
420  Var_NoEleMatch_wGwoGSF_Barrel_[11] = TauGammaEnFrac;
421  Var_NoEleMatch_wGwoGSF_Barrel_[12] = TaudCrackEta;
422  Var_NoEleMatch_wGwoGSF_Barrel_[13] = TaudCrackPhi;
424  } else {
425  Var_NoEleMatch_wGwoGSF_Endcap_[0] = TauEtaAtEcalEntrance;
426  Var_NoEleMatch_wGwoGSF_Endcap_[1] = TauLeadChargedPFCandEtaAtEcalEntrance;
427  Var_NoEleMatch_wGwoGSF_Endcap_[2] = std::min(float(2.), TauLeadChargedPFCandPt/std::max(float(1.), TauPt));
428  Var_NoEleMatch_wGwoGSF_Endcap_[3] = std::log(std::max(float(1.), TauPt));
429  Var_NoEleMatch_wGwoGSF_Endcap_[4] = TauEmFraction;
430  Var_NoEleMatch_wGwoGSF_Endcap_[5] = TauSignalPFGammaCands;
431  Var_NoEleMatch_wGwoGSF_Endcap_[6] = TauLeadPFChargedHadrHoP;
432  Var_NoEleMatch_wGwoGSF_Endcap_[7] = TauLeadPFChargedHadrEoP;
433  Var_NoEleMatch_wGwoGSF_Endcap_[8] = TauVisMass;
434  Var_NoEleMatch_wGwoGSF_Endcap_[9] = TauGammaEtaMom;
435  Var_NoEleMatch_wGwoGSF_Endcap_[10] = TauGammaPhiMom;
436  Var_NoEleMatch_wGwoGSF_Endcap_[11] = TauGammaEnFrac;
437  Var_NoEleMatch_wGwoGSF_Endcap_[12] = TaudCrackEta;
439  }
440  }
441  else if ( deltaR(TauEtaAtEcalEntrance, TauPhi, ElecEta, ElecPhi) > 0.3 && TauSignalPFGammaCands > 0 && TauHasGsf > 0.5 ) {
442  if ( std::abs(TauEtaAtEcalEntrance) < 1.479 ) {
443  Var_NoEleMatch_wGwGSF_Barrel_[0] = TauEtaAtEcalEntrance;
444  Var_NoEleMatch_wGwGSF_Barrel_[1] = TauLeadChargedPFCandEtaAtEcalEntrance;
445  Var_NoEleMatch_wGwGSF_Barrel_[2] = std::min(float(2.), TauLeadChargedPFCandPt/std::max(float(1.), TauPt));
446  Var_NoEleMatch_wGwGSF_Barrel_[3] = std::log(std::max(float(1.), TauPt));
447  Var_NoEleMatch_wGwGSF_Barrel_[4] = TauEmFraction;
448  Var_NoEleMatch_wGwGSF_Barrel_[5] = TauSignalPFGammaCands;
449  Var_NoEleMatch_wGwGSF_Barrel_[6] = TauLeadPFChargedHadrHoP;
450  Var_NoEleMatch_wGwGSF_Barrel_[7] = TauLeadPFChargedHadrEoP;
451  Var_NoEleMatch_wGwGSF_Barrel_[8] = TauVisMass;
452  Var_NoEleMatch_wGwGSF_Barrel_[9] = TauHadrMva;
453  Var_NoEleMatch_wGwGSF_Barrel_[10] = TauGammaEtaMom;
454  Var_NoEleMatch_wGwGSF_Barrel_[11] = TauGammaPhiMom;
455  Var_NoEleMatch_wGwGSF_Barrel_[12] = TauGammaEnFrac;
456  Var_NoEleMatch_wGwGSF_Barrel_[13] = TauGSFChi2;
457  Var_NoEleMatch_wGwGSF_Barrel_[14] = TauNumHitsVariable;
458  Var_NoEleMatch_wGwGSF_Barrel_[15] = TauGSFTrackResol;
459  Var_NoEleMatch_wGwGSF_Barrel_[16] = TauGSFTracklnPt;
460  Var_NoEleMatch_wGwGSF_Barrel_[17] = TauGSFTrackEta;
461  Var_NoEleMatch_wGwGSF_Barrel_[18] = TaudCrackEta;
462  Var_NoEleMatch_wGwGSF_Barrel_[19] = TaudCrackPhi;
464  } else {
465  Var_NoEleMatch_wGwGSF_Endcap_[0] = TauEtaAtEcalEntrance;
466  Var_NoEleMatch_wGwGSF_Endcap_[1] = TauLeadChargedPFCandEtaAtEcalEntrance;
467  Var_NoEleMatch_wGwGSF_Endcap_[2] = std::min(float(2.), TauLeadChargedPFCandPt/std::max(float(1.), TauPt));
468  Var_NoEleMatch_wGwGSF_Endcap_[3] = std::log(std::max(float(1.), TauPt));
469  Var_NoEleMatch_wGwGSF_Endcap_[4] = TauEmFraction;
470  Var_NoEleMatch_wGwGSF_Endcap_[5] = TauSignalPFGammaCands;
471  Var_NoEleMatch_wGwGSF_Endcap_[6] = TauLeadPFChargedHadrHoP;
472  Var_NoEleMatch_wGwGSF_Endcap_[7] = TauLeadPFChargedHadrEoP;
473  Var_NoEleMatch_wGwGSF_Endcap_[8] = TauVisMass;
474  Var_NoEleMatch_wGwGSF_Endcap_[9] = TauHadrMva;
475  Var_NoEleMatch_wGwGSF_Endcap_[10] = TauGammaEtaMom;
476  Var_NoEleMatch_wGwGSF_Endcap_[11] = TauGammaPhiMom;
477  Var_NoEleMatch_wGwGSF_Endcap_[12] = TauGammaEnFrac;
478  Var_NoEleMatch_wGwGSF_Endcap_[13] = TauGSFChi2;
479  Var_NoEleMatch_wGwGSF_Endcap_[14] = TauNumHitsVariable;
480  Var_NoEleMatch_wGwGSF_Endcap_[15] = TauGSFTrackResol;
481  Var_NoEleMatch_wGwGSF_Endcap_[16] = TauGSFTracklnPt;
482  Var_NoEleMatch_wGwGSF_Endcap_[17] = TauGSFTrackEta;
483  Var_NoEleMatch_wGwGSF_Endcap_[18] = TaudCrackEta;
485  }
486  } else if ( TauSignalPFGammaCands == 0 && TauHasGsf < 0.5 ) {
487  if ( std::abs(TauEtaAtEcalEntrance) < 1.479 ) {
488  Var_woGwoGSF_Barrel_[0] = ElecEtotOverPin;
489  Var_woGwoGSF_Barrel_[1] = ElecEgammaOverPdif;
490  Var_woGwoGSF_Barrel_[2] = ElecFbrem;
491  Var_woGwoGSF_Barrel_[3] = ElecChi2GSF;
492  Var_woGwoGSF_Barrel_[4] = ElecGSFNumHits;
493  Var_woGwoGSF_Barrel_[5] = ElecGSFTrackResol;
494  Var_woGwoGSF_Barrel_[6] = ElecGSFTracklnPt;
495  Var_woGwoGSF_Barrel_[7] = ElecGSFTrackEta;
496  Var_woGwoGSF_Barrel_[8] = TauEtaAtEcalEntrance;
497  Var_woGwoGSF_Barrel_[9] = TauLeadChargedPFCandEtaAtEcalEntrance;
498  Var_woGwoGSF_Barrel_[10] = std::min(float(2.), TauLeadChargedPFCandPt/std::max(float(1.), TauPt));
499  Var_woGwoGSF_Barrel_[11] = std::log(std::max(float(1.), TauPt));
500  Var_woGwoGSF_Barrel_[12] = TauEmFraction;
501  Var_woGwoGSF_Barrel_[13] = TauLeadPFChargedHadrHoP;
502  Var_woGwoGSF_Barrel_[14] = TauLeadPFChargedHadrEoP;
503  Var_woGwoGSF_Barrel_[15] = TauVisMass;
504  Var_woGwoGSF_Barrel_[16] = TaudCrackEta;
505  Var_woGwoGSF_Barrel_[17] = TaudCrackPhi;
507  } else {
508  Var_woGwoGSF_Endcap_[0] = ElecEtotOverPin;
509  Var_woGwoGSF_Endcap_[1] = ElecEgammaOverPdif;
510  Var_woGwoGSF_Endcap_[2] = ElecFbrem;
511  Var_woGwoGSF_Endcap_[3] = ElecChi2GSF;
512  Var_woGwoGSF_Endcap_[4] = ElecGSFNumHits;
513  Var_woGwoGSF_Endcap_[5] = ElecGSFTrackResol;
514  Var_woGwoGSF_Endcap_[6] = ElecGSFTracklnPt;
515  Var_woGwoGSF_Endcap_[7] = ElecGSFTrackEta;
516  Var_woGwoGSF_Endcap_[8] = TauEtaAtEcalEntrance;
517  Var_woGwoGSF_Endcap_[9] = TauLeadChargedPFCandEtaAtEcalEntrance;
518  Var_woGwoGSF_Endcap_[10] = std::min(float(2.), TauLeadChargedPFCandPt/std::max(float(1.), TauPt));
519  Var_woGwoGSF_Endcap_[11] = std::log(std::max(float(1.), TauPt));
520  Var_woGwoGSF_Endcap_[12] = TauEmFraction;
521  Var_woGwoGSF_Endcap_[13] = TauLeadPFChargedHadrHoP;
522  Var_woGwoGSF_Endcap_[14] = TauLeadPFChargedHadrEoP;
523  Var_woGwoGSF_Endcap_[15] = TauVisMass;
524  Var_woGwoGSF_Endcap_[16] = TaudCrackEta;
526  }
527  } else if ( TauSignalPFGammaCands == 0 && TauHasGsf > 0.5 ) {
528  if ( std::abs(TauEtaAtEcalEntrance) < 1.479 ) {
529  Var_woGwGSF_Barrel_[0] = ElecEtotOverPin;
530  Var_woGwGSF_Barrel_[1] = ElecEgammaOverPdif;
531  Var_woGwGSF_Barrel_[2] = ElecFbrem;
532  Var_woGwGSF_Barrel_[3] = ElecChi2GSF;
533  Var_woGwGSF_Barrel_[4] = ElecGSFNumHits;
534  Var_woGwGSF_Barrel_[5] = ElecGSFTrackResol;
535  Var_woGwGSF_Barrel_[6] = ElecGSFTracklnPt;
536  Var_woGwGSF_Barrel_[7] = ElecGSFTrackEta;
537  Var_woGwGSF_Barrel_[8] = TauEtaAtEcalEntrance;
538  Var_woGwGSF_Barrel_[9] = TauLeadChargedPFCandEtaAtEcalEntrance;
539  Var_woGwGSF_Barrel_[10] = std::min(float(2.), TauLeadChargedPFCandPt/std::max(float(1.), TauPt));
540  Var_woGwGSF_Barrel_[11] = std::log(std::max(float(1.), TauPt));
541  Var_woGwGSF_Barrel_[12] = TauEmFraction;
542  Var_woGwGSF_Barrel_[13] = TauLeadPFChargedHadrHoP;
543  Var_woGwGSF_Barrel_[14] = TauLeadPFChargedHadrEoP;
544  Var_woGwGSF_Barrel_[15] = TauVisMass;
545  Var_woGwGSF_Barrel_[16] = TauHadrMva;
546  Var_woGwGSF_Barrel_[17] = TauGSFChi2;
547  Var_woGwGSF_Barrel_[18] = TauNumHitsVariable;
548  Var_woGwGSF_Barrel_[19] = TauGSFTrackResol;
549  Var_woGwGSF_Barrel_[20] = TauGSFTracklnPt;
550  Var_woGwGSF_Barrel_[21] = TauGSFTrackEta;
551  Var_woGwGSF_Barrel_[22] = TaudCrackEta;
552  Var_woGwGSF_Barrel_[23] = TaudCrackPhi;
554  } else {
555  Var_woGwGSF_Endcap_[0] = ElecEtotOverPin;
556  Var_woGwGSF_Endcap_[1] = ElecEgammaOverPdif;
557  Var_woGwGSF_Endcap_[2] = ElecFbrem;
558  Var_woGwGSF_Endcap_[3] = ElecChi2GSF;
559  Var_woGwGSF_Endcap_[4] = ElecGSFNumHits;
560  Var_woGwGSF_Endcap_[5] = ElecGSFTrackResol;
561  Var_woGwGSF_Endcap_[6] = ElecGSFTracklnPt;
562  Var_woGwGSF_Endcap_[7] = ElecGSFTrackEta;
563  Var_woGwGSF_Endcap_[8] = TauEtaAtEcalEntrance;
564  Var_woGwGSF_Endcap_[9] = TauLeadChargedPFCandEtaAtEcalEntrance;
565  Var_woGwGSF_Endcap_[10] = std::min(float(2.), TauLeadChargedPFCandPt/std::max(float(1.), TauPt));
566  Var_woGwGSF_Endcap_[11] = std::log(std::max(float(1.), TauPt));
567  Var_woGwGSF_Endcap_[12] = TauEmFraction;
568  Var_woGwGSF_Endcap_[13] = TauLeadPFChargedHadrHoP;
569  Var_woGwGSF_Endcap_[14] = TauLeadPFChargedHadrEoP;
570  Var_woGwGSF_Endcap_[15] = TauVisMass;
571  Var_woGwGSF_Endcap_[16] = TauHadrMva;
572  Var_woGwGSF_Endcap_[17] = TauGSFChi2;
573  Var_woGwGSF_Endcap_[18] = TauNumHitsVariable;
574  Var_woGwGSF_Endcap_[19] = TauGSFTrackResol;
575  Var_woGwGSF_Endcap_[20] = TauGSFTracklnPt;
576  Var_woGwGSF_Endcap_[21] = TauGSFTrackEta;
577  Var_woGwGSF_Endcap_[22] = TaudCrackEta;
579  }
580  } else if ( TauSignalPFGammaCands > 0 && TauHasGsf < 0.5 ) {
581  if ( std::abs(TauEtaAtEcalEntrance) < 1.479 ) {
582  Var_wGwoGSF_Barrel_[0] = ElecEtotOverPin;
583  Var_wGwoGSF_Barrel_[1] = ElecEgammaOverPdif;
584  Var_wGwoGSF_Barrel_[2] = ElecFbrem;
585  Var_wGwoGSF_Barrel_[3] = ElecChi2GSF;
586  Var_wGwoGSF_Barrel_[4] = ElecGSFNumHits;
587  Var_wGwoGSF_Barrel_[5] = ElecGSFTrackResol;
588  Var_wGwoGSF_Barrel_[6] = ElecGSFTracklnPt;
589  Var_wGwoGSF_Barrel_[7] = ElecGSFTrackEta;
590  Var_wGwoGSF_Barrel_[8] = TauEtaAtEcalEntrance;
591  Var_wGwoGSF_Barrel_[9] = TauLeadChargedPFCandEtaAtEcalEntrance;
592  Var_wGwoGSF_Barrel_[10] = std::min(float(2.), TauLeadChargedPFCandPt/std::max(float(1.), TauPt));
593  Var_wGwoGSF_Barrel_[11] = std::log(std::max(float(1.), TauPt));
594  Var_wGwoGSF_Barrel_[12] = TauEmFraction;
595  Var_wGwoGSF_Barrel_[13] = TauSignalPFGammaCands;
596  Var_wGwoGSF_Barrel_[14] = TauLeadPFChargedHadrHoP;
597  Var_wGwoGSF_Barrel_[15] = TauLeadPFChargedHadrEoP;
598  Var_wGwoGSF_Barrel_[16] = TauVisMass;
599  Var_wGwoGSF_Barrel_[17] = TauGammaEtaMom;
600  Var_wGwoGSF_Barrel_[18] = TauGammaPhiMom;
601  Var_wGwoGSF_Barrel_[19] = TauGammaEnFrac;
602  Var_wGwoGSF_Barrel_[20] = TaudCrackEta;
603  Var_wGwoGSF_Barrel_[21] = TaudCrackPhi;
605  } else {
606  Var_wGwoGSF_Endcap_[0] = ElecEtotOverPin;
607  Var_wGwoGSF_Endcap_[1] = ElecEgammaOverPdif;
608  Var_wGwoGSF_Endcap_[2] = ElecFbrem;
609  Var_wGwoGSF_Endcap_[3] = ElecChi2GSF;
610  Var_wGwoGSF_Endcap_[4] = ElecGSFNumHits;
611  Var_wGwoGSF_Endcap_[5] = ElecGSFTrackResol;
612  Var_wGwoGSF_Endcap_[6] = ElecGSFTracklnPt;
613  Var_wGwoGSF_Endcap_[7] = ElecGSFTrackEta;
614  Var_wGwoGSF_Endcap_[8] = TauEtaAtEcalEntrance;
615  Var_wGwoGSF_Endcap_[9] = TauLeadChargedPFCandEtaAtEcalEntrance;
616  Var_wGwoGSF_Endcap_[10] = std::min(float(2.), TauLeadChargedPFCandPt/std::max(float(1.), TauPt));
617  Var_wGwoGSF_Endcap_[11] = std::log(std::max(float(1.), TauPt));
618  Var_wGwoGSF_Endcap_[12] = TauEmFraction;
619  Var_wGwoGSF_Endcap_[13] = TauSignalPFGammaCands;
620  Var_wGwoGSF_Endcap_[14] = TauLeadPFChargedHadrHoP;
621  Var_wGwoGSF_Endcap_[15] = TauLeadPFChargedHadrEoP;
622  Var_wGwoGSF_Endcap_[16] = TauVisMass;
623  Var_wGwoGSF_Endcap_[17] = TauGammaEtaMom;
624  Var_wGwoGSF_Endcap_[18] = TauGammaPhiMom;
625  Var_wGwoGSF_Endcap_[19] = TauGammaEnFrac;
626  Var_wGwoGSF_Endcap_[20] = TaudCrackEta;
628  }
629  } else if ( TauSignalPFGammaCands > 0 && TauHasGsf > 0.5 ) {
630  if ( std::abs(TauEtaAtEcalEntrance) < 1.479 ) {
631  Var_wGwGSF_Barrel_[0] = ElecEtotOverPin;
632  Var_wGwGSF_Barrel_[1] = ElecEgammaOverPdif;
633  Var_wGwGSF_Barrel_[2] = ElecFbrem;
634  Var_wGwGSF_Barrel_[3] = ElecChi2GSF;
635  Var_wGwGSF_Barrel_[4] = ElecGSFNumHits;
636  Var_wGwGSF_Barrel_[5] = ElecGSFTrackResol;
637  Var_wGwGSF_Barrel_[6] = ElecGSFTracklnPt;
638  Var_wGwGSF_Barrel_[7] = ElecGSFTrackEta;
639  Var_wGwGSF_Barrel_[8] = TauEtaAtEcalEntrance;
640  Var_wGwGSF_Barrel_[9] = TauLeadChargedPFCandEtaAtEcalEntrance;
641  Var_wGwGSF_Barrel_[10] = std::min(float(2.), TauLeadChargedPFCandPt/std::max(float(1.), TauPt));
642  Var_wGwGSF_Barrel_[11] = std::log(std::max(float(1.), TauPt));
643  Var_wGwGSF_Barrel_[12] = TauEmFraction;
644  Var_wGwGSF_Barrel_[13] = TauSignalPFGammaCands;
645  Var_wGwGSF_Barrel_[14] = TauLeadPFChargedHadrHoP;
646  Var_wGwGSF_Barrel_[15] = TauLeadPFChargedHadrEoP;
647  Var_wGwGSF_Barrel_[16] = TauVisMass;
648  Var_wGwGSF_Barrel_[17] = TauHadrMva;
649  Var_wGwGSF_Barrel_[18] = TauGammaEtaMom;
650  Var_wGwGSF_Barrel_[19] = TauGammaPhiMom;
651  Var_wGwGSF_Barrel_[20] = TauGammaEnFrac;
652  Var_wGwGSF_Barrel_[21] = TauGSFChi2;
653  Var_wGwGSF_Barrel_[22] = TauNumHitsVariable;
654  Var_wGwGSF_Barrel_[23] = TauGSFTrackResol;
655  Var_wGwGSF_Barrel_[24] = TauGSFTracklnPt;
656  Var_wGwGSF_Barrel_[25] = TauGSFTrackEta;
657  Var_wGwGSF_Barrel_[26] = TaudCrackEta;
658  Var_wGwGSF_Barrel_[27] = TaudCrackPhi;
660  } else {
661  Var_wGwGSF_Endcap_[0] = ElecEtotOverPin;
662  Var_wGwGSF_Endcap_[1] = ElecEgammaOverPdif;
663  Var_wGwGSF_Endcap_[2] = ElecFbrem;
664  Var_wGwGSF_Endcap_[3] = ElecChi2GSF;
665  Var_wGwGSF_Endcap_[4] = ElecGSFNumHits;
666  Var_wGwGSF_Endcap_[5] = ElecGSFTrackResol;
667  Var_wGwGSF_Endcap_[6] = ElecGSFTracklnPt;
668  Var_wGwGSF_Endcap_[7] = ElecGSFTrackEta;
669  Var_wGwGSF_Endcap_[8] = TauEtaAtEcalEntrance;
670  Var_wGwGSF_Endcap_[9] = TauLeadChargedPFCandEtaAtEcalEntrance;
671  Var_wGwGSF_Endcap_[10] = std::min(float(2.), TauLeadChargedPFCandPt/std::max(float(1.), TauPt));
672  Var_wGwGSF_Endcap_[11] = std::log(std::max(float(1.), TauPt));
673  Var_wGwGSF_Endcap_[12] = TauEmFraction;
674  Var_wGwGSF_Endcap_[13] = TauSignalPFGammaCands;
675  Var_wGwGSF_Endcap_[14] = TauLeadPFChargedHadrHoP;
676  Var_wGwGSF_Endcap_[15] = TauLeadPFChargedHadrEoP;
677  Var_wGwGSF_Endcap_[16] = TauVisMass;
678  Var_wGwGSF_Endcap_[17] = TauHadrMva;
679  Var_wGwGSF_Endcap_[18] = TauGammaEtaMom;
680  Var_wGwGSF_Endcap_[19] = TauGammaPhiMom;
681  Var_wGwGSF_Endcap_[20] = TauGammaEnFrac;
682  Var_wGwGSF_Endcap_[21] = TauGSFChi2;
683  Var_wGwGSF_Endcap_[22] = TauNumHitsVariable;
684  Var_wGwGSF_Endcap_[23] = TauGSFTrackResol;
685  Var_wGwGSF_Endcap_[24] = TauGSFTracklnPt;
686  Var_wGwGSF_Endcap_[25] = TauGSFTrackEta;
687  Var_wGwGSF_Endcap_[26] = TaudCrackEta;
689  }
690  }
691  return mvaValue;
692 }
693 
695  const reco::GsfElectron& theGsfEle)
696 
697 {
698  Float_t TauEtaAtEcalEntrance = -99.;
699  float sumEtaTimesEnergy = 0.;
700  float sumEnergy = 0.;
701  const std::vector<reco::PFCandidatePtr>& signalPFCands = thePFTau.signalPFCands();
702  for ( std::vector<reco::PFCandidatePtr>::const_iterator pfCandidate = signalPFCands.begin();
703  pfCandidate != signalPFCands.end(); ++pfCandidate ) {
704  sumEtaTimesEnergy += (*pfCandidate)->positionAtECALEntrance().eta()*(*pfCandidate)->energy();
705  sumEnergy += (*pfCandidate)->energy();
706  }
707  if ( sumEnergy > 0. ) {
708  TauEtaAtEcalEntrance = sumEtaTimesEnergy/sumEnergy;
709  }
710 
711  float TauLeadChargedPFCandEtaAtEcalEntrance = -99.;
712  float TauLeadChargedPFCandPt = -99.;
713  for ( std::vector<reco::PFCandidatePtr>::const_iterator pfCandidate = signalPFCands.begin();
714  pfCandidate != signalPFCands.end(); ++pfCandidate ) {
715  const reco::Track* track = 0;
716  if ( (*pfCandidate)->trackRef().isNonnull() ) track = (*pfCandidate)->trackRef().get();
717  else if ( (*pfCandidate)->muonRef().isNonnull() && (*pfCandidate)->muonRef()->innerTrack().isNonnull() ) track = (*pfCandidate)->muonRef()->innerTrack().get();
718  else if ( (*pfCandidate)->muonRef().isNonnull() && (*pfCandidate)->muonRef()->globalTrack().isNonnull() ) track = (*pfCandidate)->muonRef()->globalTrack().get();
719  else if ( (*pfCandidate)->muonRef().isNonnull() && (*pfCandidate)->muonRef()->outerTrack().isNonnull() ) track = (*pfCandidate)->muonRef()->outerTrack().get();
720  else if ( (*pfCandidate)->gsfTrackRef().isNonnull() ) track = (*pfCandidate)->gsfTrackRef().get();
721  if ( track ) {
722  if ( track->pt() > TauLeadChargedPFCandPt ) {
723  TauLeadChargedPFCandEtaAtEcalEntrance = (*pfCandidate)->positionAtECALEntrance().eta();
724  TauLeadChargedPFCandPt = track->pt();
725  }
726  }
727  }
728 
729  Float_t TauPt = thePFTau.pt();
730  Float_t TauEmFraction = std::max(thePFTau.emFraction(), (Float_t)0.);
731  Float_t TauSignalPFGammaCands = thePFTau.signalPFGammaCands().size();
732  Float_t TauLeadPFChargedHadrHoP = 0.;
733  Float_t TauLeadPFChargedHadrEoP = 0.;
734  if ( thePFTau.leadPFChargedHadrCand()->p() > 0. ) {
735  TauLeadPFChargedHadrHoP = thePFTau.leadPFChargedHadrCand()->hcalEnergy()/thePFTau.leadPFChargedHadrCand()->p();
736  TauLeadPFChargedHadrEoP = thePFTau.leadPFChargedHadrCand()->ecalEnergy()/thePFTau.leadPFChargedHadrCand()->p();
737  }
738  Float_t TauVisMass = thePFTau.mass();
739  Float_t TauHadrMva = std::max(thePFTau.electronPreIDOutput(), float(-1.0));
740  std::vector<Float_t> GammasdEta;
741  std::vector<Float_t> GammasdPhi;
742  std::vector<Float_t> GammasPt;
743  for ( unsigned i = 0 ; i < thePFTau.signalPFGammaCands().size(); ++i ) {
744  reco::PFCandidatePtr gamma = thePFTau.signalPFGammaCands().at(i);
745  if ( thePFTau.leadPFChargedHadrCand().isNonnull() ) {
746  GammasdEta.push_back(gamma->eta() - thePFTau.leadPFChargedHadrCand()->eta());
747  GammasdPhi.push_back(gamma->phi() - thePFTau.leadPFChargedHadrCand()->phi());
748  } else {
749  GammasdEta.push_back(gamma->eta() - thePFTau.eta());
750  GammasdPhi.push_back(gamma->phi() - thePFTau.phi());
751  }
752  GammasPt.push_back(gamma->pt());
753  }
754  Float_t TauKFNumHits = -99.;
755  if ( (thePFTau.leadPFChargedHadrCand()->trackRef()).isNonnull() ) {
756  TauKFNumHits = thePFTau.leadPFChargedHadrCand()->trackRef()->numberOfValidHits();
757  }
758  Float_t TauGSFNumHits = -99.;
759  Float_t TauGSFChi2 = -99.;
760  Float_t TauGSFTrackResol = -99.;
761  Float_t TauGSFTracklnPt = -99.;
762  Float_t TauGSFTrackEta = -99.;
763  if ( (thePFTau.leadPFChargedHadrCand()->gsfTrackRef()).isNonnull() ) {
764  TauGSFChi2 = thePFTau.leadPFChargedHadrCand()->gsfTrackRef()->normalizedChi2();
765  TauGSFNumHits = thePFTau.leadPFChargedHadrCand()->gsfTrackRef()->numberOfValidHits();
766  if ( thePFTau.leadPFChargedHadrCand()->gsfTrackRef()->pt() > 0. ) {
767  TauGSFTrackResol = thePFTau.leadPFChargedHadrCand()->gsfTrackRef()->ptError()/thePFTau.leadPFChargedHadrCand()->gsfTrackRef()->pt();
768  TauGSFTracklnPt = log(thePFTau.leadPFChargedHadrCand()->gsfTrackRef()->pt())*M_LN10;
769  }
770  TauGSFTrackEta = thePFTau.leadPFChargedHadrCand()->gsfTrackRef()->eta();
771  }
772  Float_t TauPhi = thePFTau.phi();
773  float sumPhiTimesEnergy = 0.;
774  float sumEnergyPhi = 0.;
775  for ( std::vector<reco::PFCandidatePtr>::const_iterator pfCandidate = signalPFCands.begin();
776  pfCandidate != signalPFCands.end(); ++pfCandidate ) {
777  sumPhiTimesEnergy += (*pfCandidate)->positionAtECALEntrance().phi()*(*pfCandidate)->energy();
778  sumEnergyPhi += (*pfCandidate)->energy();
779  }
780  if ( sumEnergyPhi > 0. ) {
781  TauPhi = sumPhiTimesEnergy/sumEnergyPhi;
782  }
783  Float_t TaudCrackPhi = dCrackPhi(TauPhi, TauEtaAtEcalEntrance);
784  Float_t TaudCrackEta = dCrackEta(TauEtaAtEcalEntrance);
785  Float_t TauSignalPFChargedCands = thePFTau.signalPFChargedHadrCands().size();
786  Float_t TauHasGsf = thePFTau.leadPFChargedHadrCand()->gsfTrackRef().isNonnull();
787 
788  Float_t ElecEta = theGsfEle.eta();
789  Float_t ElecPhi = theGsfEle.phi();
790  Float_t ElecPt = theGsfEle.pt();
791  //Variables related to the electron Cluster
792  Float_t ElecEe = 0.;
793  Float_t ElecEgamma = 0.;
794  reco::SuperClusterRef pfSuperCluster = theGsfEle.parentSuperCluster();
795  if ( pfSuperCluster.isNonnull() && pfSuperCluster.isAvailable() ) {
796  for ( reco::CaloCluster_iterator pfCluster = pfSuperCluster->clustersBegin();
797  pfCluster != pfSuperCluster->clustersEnd(); ++pfCluster ) {
798  double pfClusterEn = (*pfCluster)->energy();
799  if ( pfCluster == pfSuperCluster->clustersBegin() ) ElecEe += pfClusterEn;
800  else ElecEgamma += pfClusterEn;
801  }
802  }
803  Float_t ElecPin = std::sqrt(theGsfEle.trackMomentumAtVtx().Mag2());
804  Float_t ElecPout = std::sqrt(theGsfEle.trackMomentumOut().Mag2());
805  Float_t ElecFbrem = theGsfEle.fbrem();
806  //Variables related to the GsfTrack
807  Float_t ElecChi2GSF = -99.;
808  Float_t ElecGSFNumHits = -99.;
809  Float_t ElecGSFTrackResol = -99.;
810  Float_t ElecGSFTracklnPt = -99.;
811  Float_t ElecGSFTrackEta = -99.;
812  if ( theGsfEle.gsfTrack().isNonnull() ) {
813  ElecChi2GSF = (theGsfEle).gsfTrack()->normalizedChi2();
814  ElecGSFNumHits = (theGsfEle).gsfTrack()->numberOfValidHits();
815  if ( theGsfEle.gsfTrack()->pt() > 0. ) {
816  ElecGSFTrackResol = theGsfEle.gsfTrack()->ptError()/theGsfEle.gsfTrack()->pt();
817  ElecGSFTracklnPt = log(theGsfEle.gsfTrack()->pt())*M_LN10;
818  }
819  ElecGSFTrackEta = theGsfEle.gsfTrack()->eta();
820  }
821 
822  return MVAValue(TauEtaAtEcalEntrance,
823  TauPt,
824  TauLeadChargedPFCandEtaAtEcalEntrance,
825  TauLeadChargedPFCandPt,
826  TaudCrackEta,
827  TaudCrackPhi,
828  TauEmFraction,
829  TauSignalPFGammaCands,
830  TauLeadPFChargedHadrHoP,
831  TauLeadPFChargedHadrEoP,
832  TauVisMass,
833  TauHadrMva,
834  GammasdEta,
835  GammasdPhi,
836  GammasPt,
837  TauKFNumHits,
838  TauGSFNumHits,
839  TauGSFChi2,
840  TauGSFTrackResol,
841  TauGSFTracklnPt,
842  TauGSFTrackEta,
843  TauPhi,
844  TauSignalPFChargedCands,
845  TauHasGsf,
846  ElecEta,
847  ElecPhi,
848  ElecPt,
849  ElecEe,
850  ElecEgamma,
851  ElecPin,
852  ElecPout,
853  ElecFbrem,
854  ElecChi2GSF,
855  ElecGSFNumHits,
856  ElecGSFTrackResol,
857  ElecGSFTracklnPt,
858  ElecGSFTrackEta);
859 }
860 
862 {
863  Float_t TauEtaAtEcalEntrance = -99.;
864  float sumEtaTimesEnergy = 0.;
865  float sumEnergy = 0.;
866  const std::vector<reco::PFCandidatePtr>& signalPFCands = thePFTau.signalPFCands();
867  for ( std::vector<reco::PFCandidatePtr>::const_iterator pfCandidate = signalPFCands.begin();
868  pfCandidate != signalPFCands.end(); ++pfCandidate ) {
869  sumEtaTimesEnergy += (*pfCandidate)->positionAtECALEntrance().eta()*(*pfCandidate)->energy();
870  sumEnergy += (*pfCandidate)->energy();
871  }
872  if ( sumEnergy > 0. ) {
873  TauEtaAtEcalEntrance = sumEtaTimesEnergy/sumEnergy;
874  }
875 
876  float TauLeadChargedPFCandEtaAtEcalEntrance = -99.;
877  float TauLeadChargedPFCandPt = -99.;
878  for ( std::vector<reco::PFCandidatePtr>::const_iterator pfCandidate = signalPFCands.begin();
879  pfCandidate != signalPFCands.end(); ++pfCandidate ) {
880  const reco::Track* track = 0;
881  if ( (*pfCandidate)->trackRef().isNonnull() ) track = (*pfCandidate)->trackRef().get();
882  else if ( (*pfCandidate)->muonRef().isNonnull() && (*pfCandidate)->muonRef()->innerTrack().isNonnull() ) track = (*pfCandidate)->muonRef()->innerTrack().get();
883  else if ( (*pfCandidate)->muonRef().isNonnull() && (*pfCandidate)->muonRef()->globalTrack().isNonnull() ) track = (*pfCandidate)->muonRef()->globalTrack().get();
884  else if ( (*pfCandidate)->muonRef().isNonnull() && (*pfCandidate)->muonRef()->outerTrack().isNonnull() ) track = (*pfCandidate)->muonRef()->outerTrack().get();
885  else if ( (*pfCandidate)->gsfTrackRef().isNonnull() ) track = (*pfCandidate)->gsfTrackRef().get();
886  if ( track ) {
887  if ( track->pt() > TauLeadChargedPFCandPt ) {
888  TauLeadChargedPFCandEtaAtEcalEntrance = (*pfCandidate)->positionAtECALEntrance().eta();
889  TauLeadChargedPFCandPt = track->pt();
890  }
891  }
892  }
893 
894  Float_t TauPt = thePFTau.pt();
895  Float_t TauEmFraction = std::max(thePFTau.emFraction(), (Float_t)0.);
896  Float_t TauSignalPFGammaCands = thePFTau.signalPFGammaCands().size();
897  Float_t TauLeadPFChargedHadrHoP = 0.;
898  Float_t TauLeadPFChargedHadrEoP = 0.;
899  if ( thePFTau.leadPFChargedHadrCand()->p() > 0. ) {
900  TauLeadPFChargedHadrHoP = thePFTau.leadPFChargedHadrCand()->hcalEnergy()/thePFTau.leadPFChargedHadrCand()->p();
901  TauLeadPFChargedHadrEoP = thePFTau.leadPFChargedHadrCand()->ecalEnergy()/thePFTau.leadPFChargedHadrCand()->p();
902  }
903  Float_t TauVisMass = thePFTau.mass();
904  Float_t TauHadrMva = std::max(thePFTau.electronPreIDOutput(),float(-1.0));
905  std::vector<Float_t> GammasdEta;
906  std::vector<Float_t> GammasdPhi;
907  std::vector<Float_t> GammasPt;
908  for ( unsigned i = 0 ; i < thePFTau.signalPFGammaCands().size(); ++i ) {
909  reco::PFCandidatePtr gamma = thePFTau.signalPFGammaCands().at(i);
910  if ( thePFTau.leadPFChargedHadrCand().isNonnull() ) {
911  GammasdEta.push_back(gamma->eta() - thePFTau.leadPFChargedHadrCand()->eta());
912  GammasdPhi.push_back(gamma->phi() - thePFTau.leadPFChargedHadrCand()->phi());
913  } else {
914  GammasdEta.push_back(gamma->eta() - thePFTau.eta());
915  GammasdPhi.push_back(gamma->phi() - thePFTau.phi());
916  }
917  GammasPt.push_back(gamma->pt());
918  }
919  Float_t TauKFNumHits = -99.;
920  if ( (thePFTau.leadPFChargedHadrCand()->trackRef()).isNonnull() ) {
921  TauKFNumHits = thePFTau.leadPFChargedHadrCand()->trackRef()->numberOfValidHits();
922  }
923  Float_t TauGSFNumHits = -99.;
924  Float_t TauGSFChi2 = -99.;
925  Float_t TauGSFTrackResol = -99.;
926  Float_t TauGSFTracklnPt = -99.;
927  Float_t TauGSFTrackEta = -99.;
928  if ( (thePFTau.leadPFChargedHadrCand()->gsfTrackRef()).isNonnull() ) {
929  TauGSFChi2 = thePFTau.leadPFChargedHadrCand()->gsfTrackRef()->normalizedChi2();
930  TauGSFNumHits = thePFTau.leadPFChargedHadrCand()->gsfTrackRef()->numberOfValidHits();
931  if ( thePFTau.leadPFChargedHadrCand()->gsfTrackRef()->pt() > 0. ) {
932  TauGSFTrackResol = thePFTau.leadPFChargedHadrCand()->gsfTrackRef()->ptError()/thePFTau.leadPFChargedHadrCand()->gsfTrackRef()->pt();
933  TauGSFTracklnPt = log(thePFTau.leadPFChargedHadrCand()->gsfTrackRef()->pt())*M_LN10;
934  }
935  TauGSFTrackEta = thePFTau.leadPFChargedHadrCand()->gsfTrackRef()->eta();
936  }
937  Float_t TauPhi = thePFTau.phi();
938  float sumPhiTimesEnergy = 0.;
939  float sumEnergyPhi = 0.;
940  for ( std::vector<reco::PFCandidatePtr>::const_iterator pfCandidate = signalPFCands.begin();
941  pfCandidate != signalPFCands.end(); ++pfCandidate ) {
942  sumPhiTimesEnergy += (*pfCandidate)->positionAtECALEntrance().phi()*(*pfCandidate)->energy();
943  sumEnergyPhi += (*pfCandidate)->energy();
944  }
945  if ( sumEnergyPhi > 0. ) {
946  TauPhi = sumPhiTimesEnergy/sumEnergyPhi;
947  }
948  Float_t TaudCrackPhi = dCrackPhi(TauPhi,TauEtaAtEcalEntrance) ;
949  Float_t TaudCrackEta = dCrackEta(TauEtaAtEcalEntrance) ;
950  Float_t TauSignalPFChargedCands = thePFTau.signalPFChargedHadrCands().size();
951  Float_t TauHasGsf = thePFTau.leadPFChargedHadrCand()->gsfTrackRef().isNonnull();
952 
953  Float_t dummyElecEta = 9.9;
954 
955  return MVAValue(TauEtaAtEcalEntrance,
956  TauPt,
957  TauLeadChargedPFCandEtaAtEcalEntrance,
958  TauLeadChargedPFCandPt,
959  TaudCrackEta,
960  TaudCrackPhi,
961  TauEmFraction,
962  TauSignalPFGammaCands,
963  TauLeadPFChargedHadrHoP,
964  TauLeadPFChargedHadrEoP,
965  TauVisMass,
966  TauHadrMva,
967  GammasdEta,
968  GammasdPhi,
969  GammasPt,
970  TauKFNumHits,
971  TauGSFNumHits,
972  TauGSFChi2,
973  TauGSFTrackResol,
974  TauGSFTracklnPt,
975  TauGSFTrackEta,
976  TauPhi,
977  TauSignalPFChargedCands,
978  TauHasGsf,
979  dummyElecEta,
980  0.,
981  0.,
982  0.,
983  0.,
984  0.,
985  0.,
986  0.,
987  0.,
988  0.,
989  0.,
990  0.,
991  0.);
992 }
993 
994 double AntiElectronIDMVA5::minimum(double a, double b)
995 {
996  if ( std::abs(b) < std::abs(a) ) return b;
997  else return a;
998 }
999 
1000 
1001 #include<array>
1002 namespace {
1003 
1004  // IN: define locations of the 18 phi-cracks
1005  std::array<double,18> fill_cPhi() {
1006  constexpr double pi = M_PI; // 3.14159265358979323846;
1007  std::array<double,18> cPhi;
1008  // IN: define locations of the 18 phi-cracks
1009  cPhi[0] = 2.97025;
1010  for ( unsigned iCrack = 1; iCrack <= 17; ++iCrack )
1011  cPhi[iCrack] = cPhi[0] - 2.*iCrack*pi/18;
1012  return cPhi;
1013  }
1014 
1015  static const std::array<double,18> cPhi = fill_cPhi();
1016 
1017 }
1018 
1019 
1020 
1021 double AntiElectronIDMVA5::dCrackPhi(double phi, double eta)
1022 {
1023 //--- compute the (unsigned) distance to the closest phi-crack in the ECAL barrel
1024 
1025  constexpr double pi = M_PI; // 3.14159265358979323846;
1026 
1027  // IN: shift of this location if eta < 0
1028  constexpr double delta_cPhi = 0.00638;
1029 
1030  double retVal = 99.;
1031 
1032  if ( eta >= -1.47464 && eta <= 1.47464 ) {
1033 
1034  // the location is shifted
1035  if ( eta < 0. ) phi += delta_cPhi;
1036 
1037  // CV: need to bring-back phi into interval [-pi,+pi]
1038  if ( phi > pi ) phi -= 2.*pi;
1039  if ( phi < -pi ) phi += 2.*pi;
1040 
1041  if ( phi >= -pi && phi <= pi ) {
1042 
1043  // the problem of the extrema:
1044  if ( phi < cPhi[17] || phi >= cPhi[0] ) {
1045  if ( phi < 0. ) phi += 2.*pi;
1046  retVal = minimum(phi - cPhi[0], phi - cPhi[17] - 2.*pi);
1047  } else {
1048  // between these extrema...
1049  bool OK = false;
1050  unsigned iCrack = 16;
1051  while( !OK ) {
1052  if ( phi < cPhi[iCrack] ) {
1053  retVal = minimum(phi - cPhi[iCrack + 1], phi - cPhi[iCrack]);
1054  OK = true;
1055  } else {
1056  iCrack -= 1;
1057  }
1058  }
1059  }
1060  } else {
1061  retVal = 0.; // IN: if there is a problem, we assume that we are in a crack
1062  }
1063  } else {
1064  return -99.;
1065  }
1066 
1067  return std::abs(retVal);
1068 }
1069 
1071 {
1072 //--- compute the (unsigned) distance to the closest eta-crack in the ECAL barrel
1073 
1074  // IN: define locations of the eta-cracks
1075  double cracks[5] = { 0., 4.44747e-01, 7.92824e-01, 1.14090e+00, 1.47464e+00 };
1076 
1077  double retVal = 99.;
1078 
1079  for ( int iCrack = 0; iCrack < 5 ; ++iCrack ) {
1080  double d = minimum(eta - cracks[iCrack], eta + cracks[iCrack]);
1081  if ( std::abs(d) < std::abs(retVal) ) {
1082  retVal = d;
1083  }
1084  }
1085 
1086  return std::abs(retVal);
1087 }
const GBRForest * mva_woGwGSF_BL_
bool isAvailable() const
Definition: Ref.h:276
T getParameter(std::string const &) const
int i
Definition: DBlmapReader.cc:9
Float_t * Var_NoEleMatch_woGwoGSF_Endcap_
Float_t * Var_NoEleMatch_wGwoGSF_Barrel_
bool isNonnull() const
Checks for non-null.
Definition: Ref.h:250
SuperClusterRef parentSuperCluster() const
Definition: GsfElectron.h:188
const PFCandidatePtr & leadPFChargedHadrCand() const
Definition: PFTau.cc:63
virtual float pt() const
transverse momentum
pair< int, edm::FunctionWithDict > OK
Definition: findMethod.cc:72
const GBRForest * mva_woGwoGSF_BL_
double minimum(double a, double b)
virtual float phi() const
momentum azimuthal angle
edm::FileInPath inputFileName_
const GBRForest * mva_wGwoGSF_EC_
std::string mvaName_woGwoGSF_BL_
math::XYZVectorF trackMomentumAtVtx() const
Definition: GsfElectron.h:286
const std::vector< reco::PFCandidatePtr > & signalPFGammaCands() const
Gamma candidates in signal region.
Definition: PFTau.cc:80
const GBRForest * mva_NoEleMatch_woGwGSF_EC_
std::string mvaName_NoEleMatch_woGwoGSF_EC_
bool exists(std::string const &parameterName) const
checks if a parameter exists
float emFraction() const
Definition: PFTau.cc:209
float fbrem() const
Definition: GsfElectron.h:686
Float_t * Var_NoEleMatch_woGwoGSF_Barrel_
T eta() const
std::string mvaName_NoEleMatch_woGwGSF_BL_
const GBRForest * mva_NoEleMatch_wGwGSF_EC_
const std::vector< reco::PFCandidatePtr > & signalPFCands() const
PFCandidates in signal region.
Definition: PFTau.cc:74
#define constexpr
const Double_t pi
std::string mvaName_woGwoGSF_EC_
std::string mvaName_NoEleMatch_woGwGSF_EC_
std::string mvaName_wGwoGSF_EC_
const GBRForest * mva_NoEleMatch_woGwoGSF_EC_
void beginEvent(const edm::Event &, const edm::EventSetup &)
double eta() const
pseudorapidity of momentum vector
Definition: TrackBase.h:627
const GBRForest * mva_woGwoGSF_EC_
const GBRForest * mva_NoEleMatch_wGwGSF_BL_
double dPhi(double phi1, double phi2)
Definition: JetUtil.h:30
const T & max(const T &a, const T &b)
const GBRForest * mva_NoEleMatch_woGwoGSF_BL_
virtual float eta() const
momentum pseudorapidity
T sqrt(T t)
Definition: SSEVec.h:48
std::string mvaName_wGwoGSF_BL_
math::XYZVectorF trackMomentumOut() const
Definition: GsfElectron.h:288
double pt() const
track transverse momentum
Definition: TrackBase.h:597
std::string mvaName_woGwGSF_EC_
std::string mvaName_woGwGSF_BL_
const GBRForest * mva_woGwGSF_EC_
Abs< T >::type abs(const T &t)
Definition: Abs.h:22
std::string mvaName_wGwGSF_EC_
std::string mvaName_NoEleMatch_wGwoGSF_BL_
Float_t * Var_NoEleMatch_woGwGSF_Endcap_
std::vector< TFile * > inputFilesToDelete_
std::string mvaName_NoEleMatch_woGwoGSF_BL_
#define M_PI
double dCrackEta(double eta)
bool isNonnull() const
Checks for non-null.
Definition: Ptr.h:152
double deltaR(double eta1, double eta2, double phi1, double phi2)
Definition: TreeUtility.cc:17
const GBRForest * mva_wGwoGSF_BL_
std::string mvaName_wGwGSF_BL_
LocationCode location() const
Where was the file found?
Definition: FileInPath.cc:159
double MVAValue(Float_t TauEtaAtEcalEntrance, Float_t TauPt, Float_t TauLeadChargedPFCandEtaAtEcalEntrance, Float_t TauLeadChargedPFCandPt, Float_t TaudCrackEta, Float_t TaudCrackPhi, Float_t TauEmFraction, Float_t TauSignalPFGammaCands, Float_t TauLeadPFChargedHadrHoP, Float_t TauLeadPFChargedHadrEoP, Float_t TauVisMass, Float_t TauHadrMva, const std::vector< Float_t > &GammasdEta, const std::vector< Float_t > &GammasdPhi, const std::vector< Float_t > &GammasPt, Float_t TauKFNumHits, Float_t TauGSFNumHits, Float_t TauGSFChi2, Float_t TauGSFTrackResol, Float_t TauGSFTracklnPt, Float_t TauGSFTrackEta, Float_t TauPhi, Float_t TauSignalPFChargedCands, Float_t TauHasGsf, Float_t ElecEta, Float_t ElecPhi, Float_t ElecPt, Float_t ElecEe, Float_t ElecEgamma, Float_t ElecPin, Float_t ElecPout, Float_t ElecFbrem, Float_t ElecChi2GSF, Float_t ElecGSFNumHits, Float_t ElecGSFTrackResol, Float_t ElecGSFTracklnPt, Float_t ElecGSFTrackEta)
const GBRForest * mva_NoEleMatch_woGwGSF_BL_
const T & get() const
Definition: EventSetup.h:55
const GBRForest * mva_NoEleMatch_wGwoGSF_BL_
std::string mvaName_NoEleMatch_wGwGSF_BL_
T const * product() const
Definition: ESHandle.h:86
Float_t * Var_NoEleMatch_woGwGSF_Barrel_
const GBRForest * mva_wGwGSF_BL_
double b
Definition: hdecay.h:120
Float_t * Var_NoEleMatch_wGwGSF_Endcap_
const GBRForest * mva_NoEleMatch_wGwoGSF_EC_
const GBRForest * mva_wGwGSF_EC_
double a
Definition: hdecay.h:121
double dCrackPhi(double phi, double eta)
std::string mvaName_NoEleMatch_wGwoGSF_EC_
virtual float mass() const
mass
std::string mvaName_NoEleMatch_wGwGSF_EC_
Float_t * Var_NoEleMatch_wGwGSF_Barrel_
volatile std::atomic< bool > shutdown_flag false
std::string fullPath() const
Definition: FileInPath.cc:165
AntiElectronIDMVA5(const edm::ParameterSet &)
double GetClassifier(const float *vector) const
Definition: GBRForest.h:64
float electronPreIDOutput() const
Definition: PFTau.cc:216
Float_t * Var_NoEleMatch_wGwoGSF_Endcap_
const std::vector< reco::PFCandidatePtr > & signalPFChargedHadrCands() const
Charged hadrons in signal region.
Definition: PFTau.cc:76
virtual GsfTrackRef gsfTrack() const
reference to a GsfTrack
Definition: GsfElectron.h:183
Definition: DDAxes.h:10