CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
List of all members | Public Member Functions | Protected Member Functions | Protected Attributes
PFMETAlgorithmMVA Class Reference

#include <PFMETAlgorithmMVA.h>

Public Member Functions

void evaluateMVA ()
 
double getCovU1 () const
 
double getCovU2 () const
 
double getDPhi () const
 
reco::Candidate::LorentzVector getMEt () const
 
const reco::METCovMatrixgetMEtCov () const
 
double getU () const
 
void initialize (const edm::EventSetup &)
 
 PFMETAlgorithmMVA (const edm::ParameterSet &cfg)
 
void print (std::ostream &) const
 
void setHasPhotons (bool hasPhotons)
 
void setInput (const std::vector< mvaMEtUtilities::leptonInfo > &, const std::vector< mvaMEtUtilities::JetInfo > &, const std::vector< mvaMEtUtilities::pfCandInfo > &, const std::vector< reco::Vertex::Point > &)
 
 ~PFMETAlgorithmMVA ()
 

Protected Member Functions

void evaluateCovU1 ()
 
void evaluateCovU2 ()
 
void evaluateDPhi ()
 
void evaluateU ()
 
void setInput (double, double, double, double, double, double, double, double, double, double, double, double, double, double, double, double, double, double, double, double, double, double, double, double)
 

Protected Attributes

edm::ParameterSet cfg_
 
double chargedSumLeptonPx_
 
double chargedSumLeptonPy_
 
double dZcut_
 
bool hasPhotons_
 
bool is42_
 
bool isOld42_
 
Float_t jet1Eta_
 
Float_t jet1Phi_
 
Float_t jet1Pt_
 
Float_t jet2Eta_
 
Float_t jet2Phi_
 
Float_t jet2Pt_
 
bool loadMVAfromDB_
 
Float_t * mvaInputCovU1_
 
Float_t * mvaInputCovU2_
 
Float_t * mvaInputDPhi_
 
Float_t * mvaInputU_
 
reco::Candidate::LorentzVector mvaMEt_
 
reco::METCovMatrix mvaMEtCov_
 
std::string mvaNameCovU1_
 
std::string mvaNameCovU2_
 
std::string mvaNameDPhi_
 
std::string mvaNameU_
 
Float_t mvaOutputCovU1_
 
Float_t mvaOutputCovU2_
 
Float_t mvaOutputDPhi_
 
Float_t mvaOutputU_
 
const GBRForestmvaReaderCovU1_
 
const GBRForestmvaReaderCovU2_
 
const GBRForestmvaReaderDPhi_
 
const GBRForestmvaReaderU_
 
int mvaType_
 
Float_t npuPhi_
 
Float_t npuSumEt_
 
Float_t npuU_
 
Float_t numJets_
 
Float_t numJetsPtGt30_
 
Float_t numVertices_
 
Float_t pfPhi_
 
Float_t pfSumEt_
 
Float_t pfU_
 
Float_t pucPhi_
 
Float_t pucSumEt_
 
Float_t pucU_
 
Float_t puMEt_
 
Float_t puPhi_
 
Float_t puSumEt_
 
double sumLeptonPx_
 
double sumLeptonPy_
 
Float_t tkPhi_
 
Float_t tkSumEt_
 
Float_t tkU_
 
mvaMEtUtilities utils_
 

Detailed Description

MVA based algorithm for computing the particle-flow missing Et

Authors
Phil Harris, CERN Christian Veelken, LLR

Definition at line 31 of file PFMETAlgorithmMVA.h.

Constructor & Destructor Documentation

PFMETAlgorithmMVA::PFMETAlgorithmMVA ( const edm::ParameterSet cfg)

Definition at line 47 of file PFMETAlgorithmMVA.cc.

References dZcut_, edm::ParameterSet::getParameter(), is42_, isOld42_, kBaseline, loadMVAfromDB_, mvaInputCovU1_, mvaInputCovU2_, mvaInputDPhi_, mvaInputU_, and mvaType_.

48  : utils_(cfg),
49  mvaInputU_(nullptr),
50  mvaInputDPhi_(nullptr),
51  mvaInputCovU1_(nullptr),
52  mvaInputCovU2_(nullptr),
53  mvaReaderU_(nullptr),
54  mvaReaderDPhi_(nullptr),
55  mvaReaderCovU1_(nullptr),
56  mvaReaderCovU2_(nullptr),
57  cfg_(cfg)
58 {
60 
61  dZcut_ = cfg.getParameter<double>("dZcut");
62  isOld42_ = cfg.getParameter<bool>("useOld42");
63 
64  loadMVAfromDB_ = cfg.getParameter<bool>("loadMVAfromDB");
65 
66  is42_ = cfg.getParameter<bool>("is42");
67 
68  mvaInputU_ = new Float_t[25];
69  mvaInputDPhi_ = new Float_t[23];
70  mvaInputCovU1_ = new Float_t[26];
71  mvaInputCovU2_ = new Float_t[26];
72 }
T getParameter(std::string const &) const
mvaMEtUtilities utils_
const GBRForest * mvaReaderCovU1_
const GBRForest * mvaReaderCovU2_
edm::ParameterSet cfg_
const GBRForest * mvaReaderDPhi_
const GBRForest * mvaReaderU_
PFMETAlgorithmMVA::~PFMETAlgorithmMVA ( )

Definition at line 74 of file PFMETAlgorithmMVA.cc.

References loadMVAfromDB_, mvaInputCovU1_, mvaInputCovU2_, mvaInputDPhi_, mvaInputU_, mvaReaderCovU1_, mvaReaderCovU2_, mvaReaderDPhi_, and mvaReaderU_.

75 {
76  delete mvaInputU_;
77  delete mvaInputDPhi_;
78  delete mvaInputCovU1_;
79  delete mvaInputCovU2_;
80 
81  if ( !loadMVAfromDB_ ) {
82  delete mvaReaderU_;
83  delete mvaReaderDPhi_;
84  delete mvaReaderCovU1_;
85  delete mvaReaderCovU2_;
86  }
87 }
const GBRForest * mvaReaderCovU1_
const GBRForest * mvaReaderCovU2_
const GBRForest * mvaReaderDPhi_
const GBRForest * mvaReaderU_

Member Function Documentation

void PFMETAlgorithmMVA::evaluateCovU1 ( )
protected

Definition at line 326 of file PFMETAlgorithmMVA.cc.

References GBRForest::GetResponse(), isOld42_, jet1Eta_, jet1Phi_, jet1Pt_, jet2Eta_, jet2Phi_, jet2Pt_, mvaInputCovU1_, mvaOutputCovU1_, mvaOutputDPhi_, mvaOutputU_, mvaReaderCovU1_, npuPhi_, npuSumEt_, npuU_, numJets_, numJetsPtGt30_, numVertices_, pfPhi_, pfSumEt_, pfU_, pucPhi_, pucSumEt_, pucU_, puMEt_, puPhi_, puSumEt_, tkPhi_, tkSumEt_, and tkU_.

Referenced by evaluateMVA().

327 {
328  mvaInputCovU1_[0] = pfSumEt_; // PH: helps flattens response vs. Nvtx
330  mvaInputCovU1_[2] = pfU_;
331  mvaInputCovU1_[3] = pfPhi_;
333  mvaInputCovU1_[5] = tkU_;
334  mvaInputCovU1_[6] = tkPhi_;
336  mvaInputCovU1_[8] = npuU_;
337  mvaInputCovU1_[9] = npuPhi_;
338  mvaInputCovU1_[10] = puSumEt_;
339  mvaInputCovU1_[11] = puMEt_;
340  mvaInputCovU1_[12] = puPhi_;
342  mvaInputCovU1_[14] = pucU_;
343  mvaInputCovU1_[15] = pucPhi_;
344  mvaInputCovU1_[16] = jet1Pt_;
345  mvaInputCovU1_[17] = jet1Eta_;
346  mvaInputCovU1_[18] = jet1Phi_;
347  mvaInputCovU1_[19] = jet2Pt_;
348  mvaInputCovU1_[20] = jet2Eta_;
349  mvaInputCovU1_[21] = jet2Phi_;
350  mvaInputCovU1_[22] = numJets_;
355  if ( !isOld42_ ) mvaOutputCovU1_ *= mvaOutputCovU1_; // PH: Training is not on the square anymore
356 }
double GetResponse(const float *vector) const
Definition: GBRForest.h:55
const GBRForest * mvaReaderCovU1_
void PFMETAlgorithmMVA::evaluateCovU2 ( )
protected

Definition at line 358 of file PFMETAlgorithmMVA.cc.

References GBRForest::GetResponse(), isOld42_, jet1Eta_, jet1Phi_, jet1Pt_, jet2Eta_, jet2Phi_, jet2Pt_, mvaInputCovU2_, mvaOutputCovU2_, mvaOutputDPhi_, mvaOutputU_, mvaReaderCovU2_, npuPhi_, npuSumEt_, npuU_, numJets_, numJetsPtGt30_, numVertices_, pfPhi_, pfSumEt_, pfU_, pucPhi_, pucSumEt_, pucU_, puMEt_, puPhi_, puSumEt_, tkPhi_, tkSumEt_, and tkU_.

Referenced by evaluateMVA().

359 {
360  mvaInputCovU2_[0] = pfSumEt_; // PH: helps flattens response vs. Nvtx
362  mvaInputCovU2_[2] = pfU_;
363  mvaInputCovU2_[3] = pfPhi_;
365  mvaInputCovU2_[5] = tkU_;
366  mvaInputCovU2_[6] = tkPhi_;
368  mvaInputCovU2_[8] = npuU_;
369  mvaInputCovU2_[9] = npuPhi_;
370  mvaInputCovU2_[10] = puSumEt_;
371  mvaInputCovU2_[11] = puMEt_;
372  mvaInputCovU2_[12] = puPhi_;
374  mvaInputCovU2_[14] = pucU_;
375  mvaInputCovU2_[15] = pucPhi_;
376  mvaInputCovU2_[16] = jet1Pt_;
377  mvaInputCovU2_[17] = jet1Eta_;
378  mvaInputCovU2_[18] = jet1Phi_;
379  mvaInputCovU2_[19] = jet2Pt_;
380  mvaInputCovU2_[20] = jet2Eta_;
381  mvaInputCovU2_[21] = jet2Phi_;
382  mvaInputCovU2_[22] = numJets_;
387  if ( !isOld42_ ) mvaOutputCovU2_ *= mvaOutputCovU2_; // PH: Training is not on the square anymore
388 }
double GetResponse(const float *vector) const
Definition: GBRForest.h:55
const GBRForest * mvaReaderCovU2_
void PFMETAlgorithmMVA::evaluateDPhi ( )
protected

Definition at line 298 of file PFMETAlgorithmMVA.cc.

References GBRForest::GetResponse(), jet1Eta_, jet1Phi_, jet1Pt_, jet2Eta_, jet2Phi_, jet2Pt_, mvaInputDPhi_, mvaOutputDPhi_, mvaReaderDPhi_, npuPhi_, npuSumEt_, npuU_, numJets_, numJetsPtGt30_, numVertices_, pfPhi_, pfU_, pucPhi_, pucSumEt_, pucU_, puMEt_, puPhi_, puSumEt_, tkPhi_, tkSumEt_, and tkU_.

Referenced by evaluateMVA().

299 {
301  mvaInputDPhi_[1] = pfU_;
302  mvaInputDPhi_[2] = pfPhi_;
303  mvaInputDPhi_[3] = tkSumEt_;
304  mvaInputDPhi_[4] = tkU_;
305  mvaInputDPhi_[5] = tkPhi_;
307  mvaInputDPhi_[7] = npuU_;
308  mvaInputDPhi_[8] = npuPhi_;
309  mvaInputDPhi_[9] = puSumEt_;
310  mvaInputDPhi_[10] = puMEt_;
311  mvaInputDPhi_[11] = puPhi_;
312  mvaInputDPhi_[12] = pucSumEt_;
313  mvaInputDPhi_[13] = pucU_;
314  mvaInputDPhi_[14] = pucPhi_;
315  mvaInputDPhi_[15] = jet1Pt_;
316  mvaInputDPhi_[16] = jet1Eta_;
317  mvaInputDPhi_[17] = jet1Phi_;
318  mvaInputDPhi_[18] = jet2Pt_;
319  mvaInputDPhi_[19] = jet2Eta_;
320  mvaInputDPhi_[20] = jet2Phi_;
321  mvaInputDPhi_[21] = numJets_;
324 }
double GetResponse(const float *vector) const
Definition: GBRForest.h:55
const GBRForest * mvaReaderDPhi_
void PFMETAlgorithmMVA::evaluateMVA ( )

Definition at line 232 of file PFMETAlgorithmMVA.cc.

References funct::cos(), evaluateCovU1(), evaluateCovU2(), evaluateDPhi(), evaluateU(), hasPhotons_, bookConverter::max, mvaMEt_, mvaMEtCov_, mvaOutputCovU1_, mvaOutputCovU2_, mvaOutputDPhi_, mvaOutputU_, npuU_, pfPhi_, pfU_, colinearityKinematic::Phi, Pi, funct::sin(), mathSSE::sqrt(), sumLeptonPx_, sumLeptonPy_, and tkU_.

Referenced by reco::PFMETProducerMVA::produce().

233 {
234  // CV: MVAs needs to be evaluated in order { DPhi, U1, CovU1, CovU2 }
235  // as MVA for U1 (CovU1, CovU2) uses output of DPhi (DPhi and U1) MVA
236  evaluateDPhi();
237  evaluateU();
238  evaluateCovU1();
239  evaluateCovU2();
240 
241  // compute MET(Photon check)
242  if(hasPhotons_) {
243  //Fix events with unphysical properties
245  if(tkU_/sumLeptonPt < 0.1 || npuU_/sumLeptonPt < 0.1 ) mvaOutputU_ = 1.;
246  if(tkU_/sumLeptonPt < 0.1 || npuU_/sumLeptonPt < 0.1 ) mvaOutputDPhi_ = 0.;
247  }
248  double U = pfU_*mvaOutputU_;
249  double Phi = pfPhi_ + mvaOutputDPhi_;
250  if ( U < 0. ) Phi += Pi;
251  double cosPhi = cos(Phi);
252  double sinPhi = sin(Phi);
253  double metPx = U*cosPhi - sumLeptonPx_; // CV: U is actually minus the hadronic recoil in the event
254  double metPy = U*sinPhi - sumLeptonPy_;
255  double metPt = sqrt(metPx*metPx + metPy*metPy);
256  mvaMEt_.SetCoordinates(metPx, metPy, 0., metPt);
257 
258  // compute MET uncertainties in dirrections parallel and perpendicular to hadronic recoil
259  // (neglecting uncertainties on lepton momenta)
260  mvaMEtCov_(0, 0) = mvaOutputCovU1_*cosPhi*cosPhi + mvaOutputCovU2_*sinPhi*sinPhi;
261  mvaMEtCov_(0, 1) = -mvaOutputCovU1_*sinPhi*cosPhi + mvaOutputCovU2_*sinPhi*cosPhi;
262  mvaMEtCov_(1, 0) = mvaMEtCov_(0, 1);
263  mvaMEtCov_(1, 1) = mvaOutputCovU1_*sinPhi*sinPhi + mvaOutputCovU2_*cosPhi*cosPhi;
264 }
const double Pi
Sin< T >::type sin(const T &t)
Definition: Sin.h:22
T sqrt(T t)
Definition: SSEVec.h:48
Cos< T >::type cos(const T &t)
Definition: Cos.h:22
reco::METCovMatrix mvaMEtCov_
reco::Candidate::LorentzVector mvaMEt_
void PFMETAlgorithmMVA::evaluateU ( )
protected

Definition at line 268 of file PFMETAlgorithmMVA.cc.

References GBRForest::GetResponse(), jet1Eta_, jet1Phi_, jet1Pt_, jet2Eta_, jet2Phi_, jet2Pt_, mvaInputU_, mvaOutputDPhi_, mvaOutputU_, mvaReaderU_, npuPhi_, npuSumEt_, npuU_, numJets_, numJetsPtGt30_, numVertices_, pfPhi_, pfSumEt_, pfU_, pucPhi_, pucSumEt_, pucU_, puMEt_, puPhi_, puSumEt_, tkPhi_, tkSumEt_, and tkU_.

Referenced by evaluateMVA().

269 {
270  mvaInputU_[0] = pfSumEt_; // PH: helps flattens response vs. Nvtx
272  mvaInputU_[2] = pfU_;
273  mvaInputU_[3] = pfPhi_;
274  mvaInputU_[4] = tkSumEt_;
275  mvaInputU_[5] = tkU_;
276  mvaInputU_[6] = tkPhi_;
277  mvaInputU_[7] = npuSumEt_;
278  mvaInputU_[8] = npuU_;
279  mvaInputU_[9] = npuPhi_;
280  mvaInputU_[10] = puSumEt_;
281  mvaInputU_[11] = puMEt_;
282  mvaInputU_[12] = puPhi_;
283  mvaInputU_[13] = pucSumEt_;
284  mvaInputU_[14] = pucU_;
285  mvaInputU_[15] = pucPhi_;
286  mvaInputU_[16] = jet1Pt_;
287  mvaInputU_[17] = jet1Eta_;
288  mvaInputU_[18] = jet1Phi_;
289  mvaInputU_[19] = jet2Pt_;
290  mvaInputU_[20] = jet2Eta_;
291  mvaInputU_[21] = jet2Phi_;
292  mvaInputU_[22] = numJets_;
296 }
double GetResponse(const float *vector) const
Definition: GBRForest.h:55
const GBRForest * mvaReaderU_
double PFMETAlgorithmMVA::getCovU1 ( ) const
inline

Definition at line 55 of file PFMETAlgorithmMVA.h.

References mvaOutputCovU1_.

55 { return mvaOutputCovU1_; }
double PFMETAlgorithmMVA::getCovU2 ( ) const
inline

Definition at line 56 of file PFMETAlgorithmMVA.h.

References mvaOutputCovU2_.

56 { return mvaOutputCovU2_; }
double PFMETAlgorithmMVA::getDPhi ( ) const
inline

Definition at line 54 of file PFMETAlgorithmMVA.h.

References mvaOutputDPhi_.

54 { return mvaOutputDPhi_; }
reco::Candidate::LorentzVector PFMETAlgorithmMVA::getMEt ( ) const
inline

Definition at line 50 of file PFMETAlgorithmMVA.h.

References mvaMEt_.

Referenced by reco::PFMETProducerMVA::produce().

50 { return mvaMEt_; }
reco::Candidate::LorentzVector mvaMEt_
const reco::METCovMatrix& PFMETAlgorithmMVA::getMEtCov ( ) const
inline

Definition at line 51 of file PFMETAlgorithmMVA.h.

References mvaMEtCov_.

Referenced by reco::PFMETProducerMVA::produce().

51 { return mvaMEtCov_; }
reco::METCovMatrix mvaMEtCov_
double PFMETAlgorithmMVA::getU ( ) const
inline

Definition at line 53 of file PFMETAlgorithmMVA.h.

References mvaOutputU_.

53 { return mvaOutputU_; }
void PFMETAlgorithmMVA::initialize ( const edm::EventSetup es)

Definition at line 89 of file PFMETAlgorithmMVA.cc.

References cfg_, edm::ParameterSet::getParameter(), mvaPFMET_cff::loadMVAfromDB, loadMVAfromDB_, mvaNameCovU1_, mvaNameCovU2_, mvaNameDPhi_, mvaNameU_, mvaReaderCovU1_, mvaReaderCovU2_, mvaReaderDPhi_, mvaReaderU_, and AlCaHLTBitMon_QueryRunRegistry::string.

Referenced by reco::PFMETProducerMVA::produce().

90 {
91  if ( loadMVAfromDB_ ) {
92  //std::cout << "<PFMETAlgorithmMVA::initialize>: loading BDTs from Database." << std::endl;
93  edm::ParameterSet cfgInputRecords = cfg_.getParameter<edm::ParameterSet>("inputRecords");
94  mvaNameU_ = cfgInputRecords.getParameter<std::string>("U");
95  mvaReaderU_ = loadMVAfromDB(es, mvaNameU_);
96  mvaNameDPhi_ = cfgInputRecords.getParameter<std::string>("DPhi");
98  mvaNameCovU1_ = cfgInputRecords.getParameter<std::string>("CovU1");
100  mvaNameCovU2_ = cfgInputRecords.getParameter<std::string>("CovU2");
102  } else {
103  //std::cout << "<PFMETAlgorithmMVA::initialize>: loading BDTs from ROOT files." << std::endl;
104  edm::ParameterSet cfgInputFileNames = cfg_.getParameter<edm::ParameterSet>("inputFileNames");
105 
106  mvaNameU_ = "U1Correction";
107  mvaNameDPhi_ = "PhiCorrection";
108  mvaNameCovU1_ = "CovU1";
109  mvaNameCovU2_ = "CovU2";
110 
111  edm::FileInPath inputFileNameU = cfgInputFileNames.getParameter<edm::FileInPath>("U");
112  mvaReaderU_ = loadMVAfromFile(inputFileNameU, mvaNameU_);
113  edm::FileInPath inputFileNameDPhi = cfgInputFileNames.getParameter<edm::FileInPath>("DPhi");
114  mvaReaderDPhi_ = loadMVAfromFile(inputFileNameDPhi, mvaNameDPhi_);
115  edm::FileInPath inputFileNameCovU1 = cfgInputFileNames.getParameter<edm::FileInPath>("CovU1");
116  mvaReaderCovU1_ = loadMVAfromFile(inputFileNameCovU1, mvaNameCovU1_);
117  edm::FileInPath inputFileNameCovU2 = cfgInputFileNames.getParameter<edm::FileInPath>("CovU2");
118  mvaReaderCovU2_ = loadMVAfromFile(inputFileNameCovU2, mvaNameCovU2_);
119  }
120 }
T getParameter(std::string const &) const
const GBRForest * mvaReaderCovU1_
const GBRForest * mvaReaderCovU2_
edm::ParameterSet cfg_
std::string mvaNameCovU1_
const GBRForest * mvaReaderDPhi_
const GBRForest * mvaReaderU_
std::string mvaNameDPhi_
std::string mvaNameCovU2_
tuple loadMVAfromDB
Definition: mvaPFMET_cff.py:41
void PFMETAlgorithmMVA::print ( std::ostream &  stream) const

Definition at line 389 of file PFMETAlgorithmMVA.cc.

References jet1Eta_, jet1Phi_, jet1Pt_, jet2Eta_, jet2Phi_, jet2Pt_, mvaOutputCovU1_, mvaOutputCovU2_, mvaOutputDPhi_, mvaOutputU_, npuPhi_, npuSumEt_, npuU_, numJets_, numJetsPtGt30_, numVertices_, pfPhi_, pfSumEt_, pfU_, pucPhi_, pucSumEt_, pucU_, puMEt_, puPhi_, puSumEt_, mathSSE::sqrt(), sumLeptonPx_, sumLeptonPy_, tkPhi_, tkSumEt_, and tkU_.

390 {
391  stream << "<PFMETAlgorithmMVA::print>:" << std::endl;
392  stream << " PF: sumEt = " << pfSumEt_ << ", U = " << pfU_ << ", phi = " << pfPhi_ << std::endl;
393  stream << " TK: sumEt = " << tkSumEt_ << ", U = " << tkU_ << ", phi = " << tkPhi_ << std::endl;
394  stream << " NPU: sumEt = " << npuSumEt_ << ", U = " << npuU_ << ", phi = " << npuPhi_ << std::endl;
395  stream << " PU: sumEt = " << puSumEt_ << ", MEt = " << puMEt_ << ", phi = " << puPhi_ << std::endl;
396  stream << " PUC: sumEt = " << pucSumEt_ << ", U = " << pucU_ << ", phi = " << pucPhi_ << std::endl;
397  stream << " jet1: Pt = " << jet1Pt_ << ", eta = " << jet1Eta_ << ", phi = " << jet1Phi_ << std::endl;
398  stream << " jet2: Pt = " << jet2Pt_ << ", eta = " << jet2Eta_ << ", phi = " << jet2Phi_ << std::endl;
399  stream << " num. jets = " << numJets_ << " (" << numJetsPtGt30_ << " with Pt > 30 GeV)" << std::endl;
400  stream << " num. vertices = " << numVertices_ << std::endl;
401  stream << " MVA output: U = " << mvaOutputU_ << ", dPhi = " << mvaOutputDPhi_ << ","
402  << " covU1 = " << mvaOutputCovU1_ << ", covU2 = " << mvaOutputCovU2_ << std::endl;
403  stream << " sum(leptons): Pt = " << sqrt(sumLeptonPx_*sumLeptonPx_ + sumLeptonPy_*sumLeptonPy_) << ","
404  << " phi = " << atan2(sumLeptonPy_, sumLeptonPx_) << " "
405  << "(Px = " << sumLeptonPx_ << ", Py = " << sumLeptonPy_ << ")" << std::endl;
406 }
T sqrt(T t)
Definition: SSEVec.h:48
void PFMETAlgorithmMVA::setHasPhotons ( bool  hasPhotons)
inline

Definition at line 41 of file PFMETAlgorithmMVA.h.

References hasPhotons_.

Referenced by reco::PFMETProducerMVA::produce().

41 { hasPhotons_ = hasPhotons; }
void PFMETAlgorithmMVA::setInput ( const std::vector< mvaMEtUtilities::leptonInfo > &  leptons,
const std::vector< mvaMEtUtilities::JetInfo > &  jets,
const std::vector< mvaMEtUtilities::pfCandInfo > &  pfCandidates,
const std::vector< reco::Vertex::Point > &  vertices 
)

CommonMETData sumLeptons = utils_.computePFCandSum(pfCandidates_leptons, dZcut_, 2);

Definition at line 123 of file PFMETAlgorithmMVA.cc.

References chargedSumLeptonPx_, chargedSumLeptonPy_, mvaMEtUtilities::cleanJets(), mvaMEtUtilities::computeNegNoPURecoil(), mvaMEtUtilities::computeNegPFRecoil(), mvaMEtUtilities::computeNegPUCRecoil(), mvaMEtUtilities::computeNegTrackRecoil(), mvaMEtUtilities::computePUMEt(), mvaMEtUtilities::computeSumLeptons(), dZcut_, is42_, mvaMEtUtilities::leadJetP4(), CommonMETData::met, CommonMETData::mex, CommonMETData::mey, mvaMEtUtilities::numJetsAboveThreshold(), CommonMETData::phi, mvaMEtUtilities::subleadJetP4(), CommonMETData::sumet, sumLeptonPx_, sumLeptonPy_, and utils_.

Referenced by reco::PFMETProducerMVA::produce().

127 {
128  //std::vector<mvaMEtUtilities::pfCandInfo> pfCandidates_leptons = utils_.cleanPFCands(pfCandidates, leptons, 0.3, true);
130  //const std::vector<mvaMEtUtilities::pfCandInfo> pfCandidates_cleaned = utils_.cleanPFCands(pfCandidates, leptons, 0.3, false);
131 
132  CommonMETData sumLeptons = utils_.computeSumLeptons(leptons, false);
133  CommonMETData chargedSumLeptons = utils_.computeSumLeptons(leptons, true);
134 
135  sumLeptonPx_ = sumLeptons.mex;
136  sumLeptonPy_ = sumLeptons.mey;
137 
138  chargedSumLeptonPx_ = chargedSumLeptons.mex;
139  chargedSumLeptonPy_ = chargedSumLeptons.mey;
140 
141  double ptThreshold = -1000.;
142  if ( is42_ ) ptThreshold = 1.; //PH: For 42 training added a pT cut of 1 GeV on corrected Jets
143  std::vector<mvaMEtUtilities::JetInfo> jets_cleaned = utils_.cleanJets(jets, leptons, ptThreshold, 0.5);
144 
145  CommonMETData pfRecoil_data = utils_.computeNegPFRecoil (sumLeptons , pfCandidates, dZcut_);
146  CommonMETData tkRecoil_data = utils_.computeNegTrackRecoil(chargedSumLeptons, pfCandidates, dZcut_);
147  CommonMETData npuRecoil_data = utils_.computeNegNoPURecoil (chargedSumLeptons, pfCandidates, jets_cleaned, dZcut_);
148  CommonMETData pucRecoil_data = utils_.computeNegPUCRecoil (sumLeptons , pfCandidates, jets_cleaned, dZcut_);
149  CommonMETData puMEt_data = utils_.computePUMEt ( pfCandidates, jets_cleaned, 0.2); //dZCut bug
150 
151  reco::Candidate::LorentzVector jet1P4 = utils_.leadJetP4(jets_cleaned);
152  reco::Candidate::LorentzVector jet2P4 = utils_.subleadJetP4(jets_cleaned);
153 
154  double pfSumEt = pfRecoil_data.sumet;
155  double pfU = pfRecoil_data.met;
156  double pfPhi = pfRecoil_data.phi;
157  double tkSumEt = tkRecoil_data.sumet;
158  double tkU = tkRecoil_data.met;
159  double tkPhi = tkRecoil_data.phi;
160  double npuSumEt = npuRecoil_data.sumet;
161  double npuU = npuRecoil_data.met;
162  double npuPhi = npuRecoil_data.phi;
163  double puSumEt = puMEt_data.sumet;
164  double puMEt = puMEt_data.met;
165  double puPhi = puMEt_data.phi;
166  double pucSumEt = pucRecoil_data.sumet;
167  double pucU = pucRecoil_data.met;
168  double pucPhi = pucRecoil_data.phi;
169  double jet1Pt = jet1P4.pt();
170  double jet1Eta = jet1P4.eta();
171  double jet1Phi = jet1P4.phi();
172  double jet2Pt = jet2P4.pt();
173  double jet2Eta = jet2P4.eta();
174  double jet2Phi = jet2P4.phi();
175  double numJetsPtGt30 = utils_.numJetsAboveThreshold(jets_cleaned, 30.);
176  double numJets = jets_cleaned.size();
177  double numVertices = vertices.size();
178 
179  setInput(pfSumEt, pfU, pfPhi,
180  tkSumEt, tkU, tkPhi,
181  npuSumEt, npuU, npuPhi,
182  puSumEt, puMEt, puPhi,
183  pucSumEt, pucU, pucPhi,
184  jet1Pt, jet1Eta, jet1Phi,
185  jet2Pt, jet2Eta, jet2Phi,
186  numJetsPtGt30, numJets,
187  numVertices);
188 
189 }
reco::Candidate::LorentzVector leadJetP4(const std::vector< JetInfo > &)
unsigned numJetsAboveThreshold(const std::vector< JetInfo > &, double)
mvaMEtUtilities utils_
CommonMETData computeNegPFRecoil(const CommonMETData &, const std::vector< pfCandInfo > &, double)
std::vector< PFCandidatePtr > pfCandidates(const PFJet &jet, int particleId, bool sort=true)
vector< PseudoJet > jets
Structure containing data common to all types of MET.
Definition: CommonMETData.h:12
reco::Candidate::LorentzVector subleadJetP4(const std::vector< JetInfo > &)
CommonMETData computeNegNoPURecoil(const CommonMETData &, const std::vector< pfCandInfo > &, const std::vector< JetInfo > &, double)
CommonMETData computeSumLeptons(const std::vector< leptonInfo > &leptons, bool iCharged)
CommonMETData computeNegPUCRecoil(const CommonMETData &, const std::vector< pfCandInfo > &, const std::vector< JetInfo > &, double)
math::XYZTLorentzVector LorentzVector
Lorentz vector.
Definition: Candidate.h:41
CommonMETData computePUMEt(const std::vector< pfCandInfo > &, const std::vector< JetInfo > &, double)
void setInput(const std::vector< mvaMEtUtilities::leptonInfo > &, const std::vector< mvaMEtUtilities::JetInfo > &, const std::vector< mvaMEtUtilities::pfCandInfo > &, const std::vector< reco::Vertex::Point > &)
CommonMETData computeNegTrackRecoil(const CommonMETData &, const std::vector< pfCandInfo > &, double)
std::vector< JetInfo > cleanJets(const std::vector< JetInfo > &, const std::vector< leptonInfo > &, double, double)
void PFMETAlgorithmMVA::setInput ( double  pfSumEt,
double  pfU,
double  pfPhi,
double  tkSumEt,
double  tkU,
double  tkPhi,
double  npuSumEt,
double  npuU,
double  npuPhi,
double  puSumEt,
double  puMEt,
double  puPhi,
double  pucSumEt,
double  pucU,
double  pucPhi,
double  jet1Pt,
double  jet1Eta,
double  jet1Phi,
double  jet2Pt,
double  jet2Eta,
double  jet2Phi,
double  numJetsPtGt30,
double  numJets,
double  numVertices 
)
protected

Definition at line 191 of file PFMETAlgorithmMVA.cc.

References jet1Eta_, jet1Phi_, jet1Pt_, jet2Eta_, jet2Phi_, jet2Pt_, npuPhi_, npuSumEt_, npuU_, numJets_, numJetsPtGt30_, numVertices_, pfPhi_, pfSumEt_, pfU_, pucPhi_, pucSumEt_, pucU_, puMEt_, puPhi_, puSumEt_, tkPhi_, tkSumEt_, and tkU_.

200 {
201  // CV: add protection against "empty events"
202  if ( pfSumEt < 1. ) pfSumEt = 1.;
203 
204  pfSumEt_ = pfSumEt;
205  pfU_ = pfU;
206  pfPhi_ = pfPhi;
207  tkSumEt_ = tkSumEt/pfSumEt_;
208  tkU_ = tkU;
209  tkPhi_ = tkPhi;
210  npuSumEt_ = npuSumEt/pfSumEt_;
211  npuU_ = npuU;
212  npuPhi_ = npuPhi;
213  puSumEt_ = puSumEt/pfSumEt_;
214  puMEt_ = puMEt;
215  puPhi_ = puPhi;
216  pucSumEt_ = pucSumEt/pfSumEt_;
217  pucU_ = pucU;
218  pucPhi_ = pucPhi;
219  jet1Pt_ = jet1Pt;
220  jet1Eta_ = jet1Eta;
221  jet1Phi_ = jet1Phi;
222  jet2Pt_ = jet2Pt;
223  jet2Eta_ = jet2Eta;
224  jet2Phi_ = jet2Phi;
225  numJetsPtGt30_ = numJetsPtGt30;
226  numJets_ = numJets;
227  numVertices_ = numVertices;
228 }

Member Data Documentation

edm::ParameterSet PFMETAlgorithmMVA::cfg_
protected

Definition at line 141 of file PFMETAlgorithmMVA.h.

Referenced by initialize().

double PFMETAlgorithmMVA::chargedSumLeptonPx_
protected

Definition at line 127 of file PFMETAlgorithmMVA.h.

Referenced by setInput().

double PFMETAlgorithmMVA::chargedSumLeptonPy_
protected

Definition at line 128 of file PFMETAlgorithmMVA.h.

Referenced by setInput().

double PFMETAlgorithmMVA::dZcut_
protected

Definition at line 88 of file PFMETAlgorithmMVA.h.

Referenced by PFMETAlgorithmMVA(), and setInput().

bool PFMETAlgorithmMVA::hasPhotons_
protected

Definition at line 87 of file PFMETAlgorithmMVA.h.

Referenced by evaluateMVA(), and setHasPhotons().

bool PFMETAlgorithmMVA::is42_
protected

Definition at line 85 of file PFMETAlgorithmMVA.h.

Referenced by PFMETAlgorithmMVA(), and setInput().

bool PFMETAlgorithmMVA::isOld42_
protected

Definition at line 86 of file PFMETAlgorithmMVA.h.

Referenced by evaluateCovU1(), evaluateCovU2(), and PFMETAlgorithmMVA().

Float_t PFMETAlgorithmMVA::jet1Eta_
protected
Float_t PFMETAlgorithmMVA::jet1Phi_
protected
Float_t PFMETAlgorithmMVA::jet1Pt_
protected
Float_t PFMETAlgorithmMVA::jet2Eta_
protected
Float_t PFMETAlgorithmMVA::jet2Phi_
protected
Float_t PFMETAlgorithmMVA::jet2Pt_
protected
bool PFMETAlgorithmMVA::loadMVAfromDB_
protected

Definition at line 139 of file PFMETAlgorithmMVA.h.

Referenced by initialize(), PFMETAlgorithmMVA(), and ~PFMETAlgorithmMVA().

Float_t* PFMETAlgorithmMVA::mvaInputCovU1_
protected

Definition at line 117 of file PFMETAlgorithmMVA.h.

Referenced by evaluateCovU1(), PFMETAlgorithmMVA(), and ~PFMETAlgorithmMVA().

Float_t* PFMETAlgorithmMVA::mvaInputCovU2_
protected

Definition at line 118 of file PFMETAlgorithmMVA.h.

Referenced by evaluateCovU2(), PFMETAlgorithmMVA(), and ~PFMETAlgorithmMVA().

Float_t* PFMETAlgorithmMVA::mvaInputDPhi_
protected

Definition at line 116 of file PFMETAlgorithmMVA.h.

Referenced by evaluateDPhi(), PFMETAlgorithmMVA(), and ~PFMETAlgorithmMVA().

Float_t* PFMETAlgorithmMVA::mvaInputU_
protected

Definition at line 115 of file PFMETAlgorithmMVA.h.

Referenced by evaluateU(), PFMETAlgorithmMVA(), and ~PFMETAlgorithmMVA().

reco::Candidate::LorentzVector PFMETAlgorithmMVA::mvaMEt_
protected

Definition at line 130 of file PFMETAlgorithmMVA.h.

Referenced by evaluateMVA(), and getMEt().

reco::METCovMatrix PFMETAlgorithmMVA::mvaMEtCov_
protected

Definition at line 132 of file PFMETAlgorithmMVA.h.

Referenced by evaluateMVA(), and getMEtCov().

std::string PFMETAlgorithmMVA::mvaNameCovU1_
protected

Definition at line 81 of file PFMETAlgorithmMVA.h.

Referenced by initialize().

std::string PFMETAlgorithmMVA::mvaNameCovU2_
protected

Definition at line 82 of file PFMETAlgorithmMVA.h.

Referenced by initialize().

std::string PFMETAlgorithmMVA::mvaNameDPhi_
protected

Definition at line 80 of file PFMETAlgorithmMVA.h.

Referenced by initialize().

std::string PFMETAlgorithmMVA::mvaNameU_
protected

Definition at line 79 of file PFMETAlgorithmMVA.h.

Referenced by initialize().

Float_t PFMETAlgorithmMVA::mvaOutputCovU1_
protected

Definition at line 122 of file PFMETAlgorithmMVA.h.

Referenced by evaluateCovU1(), evaluateMVA(), getCovU1(), and print().

Float_t PFMETAlgorithmMVA::mvaOutputCovU2_
protected

Definition at line 123 of file PFMETAlgorithmMVA.h.

Referenced by evaluateCovU2(), evaluateMVA(), getCovU2(), and print().

Float_t PFMETAlgorithmMVA::mvaOutputDPhi_
protected
Float_t PFMETAlgorithmMVA::mvaOutputU_
protected

Definition at line 120 of file PFMETAlgorithmMVA.h.

Referenced by evaluateCovU1(), evaluateCovU2(), evaluateMVA(), evaluateU(), getU(), and print().

const GBRForest* PFMETAlgorithmMVA::mvaReaderCovU1_
protected

Definition at line 136 of file PFMETAlgorithmMVA.h.

Referenced by evaluateCovU1(), initialize(), and ~PFMETAlgorithmMVA().

const GBRForest* PFMETAlgorithmMVA::mvaReaderCovU2_
protected

Definition at line 137 of file PFMETAlgorithmMVA.h.

Referenced by evaluateCovU2(), initialize(), and ~PFMETAlgorithmMVA().

const GBRForest* PFMETAlgorithmMVA::mvaReaderDPhi_
protected

Definition at line 135 of file PFMETAlgorithmMVA.h.

Referenced by evaluateDPhi(), initialize(), and ~PFMETAlgorithmMVA().

const GBRForest* PFMETAlgorithmMVA::mvaReaderU_
protected

Definition at line 134 of file PFMETAlgorithmMVA.h.

Referenced by evaluateU(), initialize(), and ~PFMETAlgorithmMVA().

int PFMETAlgorithmMVA::mvaType_
protected

Definition at line 84 of file PFMETAlgorithmMVA.h.

Referenced by PFMETAlgorithmMVA().

Float_t PFMETAlgorithmMVA::npuPhi_
protected
Float_t PFMETAlgorithmMVA::npuSumEt_
protected
Float_t PFMETAlgorithmMVA::npuU_
protected
Float_t PFMETAlgorithmMVA::numJets_
protected
Float_t PFMETAlgorithmMVA::numJetsPtGt30_
protected
Float_t PFMETAlgorithmMVA::numVertices_
protected
Float_t PFMETAlgorithmMVA::pfPhi_
protected
Float_t PFMETAlgorithmMVA::pfSumEt_
protected

Definition at line 90 of file PFMETAlgorithmMVA.h.

Referenced by evaluateCovU1(), evaluateCovU2(), evaluateU(), print(), and setInput().

Float_t PFMETAlgorithmMVA::pfU_
protected
Float_t PFMETAlgorithmMVA::pucPhi_
protected
Float_t PFMETAlgorithmMVA::pucSumEt_
protected
Float_t PFMETAlgorithmMVA::pucU_
protected
Float_t PFMETAlgorithmMVA::puMEt_
protected
Float_t PFMETAlgorithmMVA::puPhi_
protected
Float_t PFMETAlgorithmMVA::puSumEt_
protected
double PFMETAlgorithmMVA::sumLeptonPx_
protected

Definition at line 125 of file PFMETAlgorithmMVA.h.

Referenced by evaluateMVA(), print(), and setInput().

double PFMETAlgorithmMVA::sumLeptonPy_
protected

Definition at line 126 of file PFMETAlgorithmMVA.h.

Referenced by evaluateMVA(), print(), and setInput().

Float_t PFMETAlgorithmMVA::tkPhi_
protected
Float_t PFMETAlgorithmMVA::tkSumEt_
protected
Float_t PFMETAlgorithmMVA::tkU_
protected
mvaMEtUtilities PFMETAlgorithmMVA::utils_
protected

Definition at line 77 of file PFMETAlgorithmMVA.h.

Referenced by setInput().