CMS 3D CMS Logo

ElectronMVAEstimatorRun2.h
Go to the documentation of this file.
1 #ifndef RecoEgamma_ElectronIdentification_ElectronMVAEstimatorRun2_H
2 #define RecoEgamma_ElectronIdentification_ElectronMVAEstimatorRun2_H
3 
9 
13 
14 #include <TMath.h>
15 
17 
18  public:
19 
20  // Constructor and destructor
23  // For use with FWLite/Python
25  const std::string& mvaName,
26  int nCategories,
28  const std::vector<std::string>& categoryCutStrings,
29  const std::vector<std::string> &weightFileNames,
30  bool debug=false );
31 
32  // For use with FWLite/Python
33  static std::vector<float> getExtraVars(reco::GsfElectron const& ele,
35  reco::BeamSpot const* beamSpot,
36  double rho)
37  {
38  // Conversion vertex fit
39  reco::Conversion const* conv = ConversionTools::matchedConversion(ele, *conversions, beamSpot->position());
40 
41  float convVtxFitProb = -1.;
42  if(!(conv == nullptr)) {
43  const reco::Vertex &vtx = conv->conversionVertex();
44  if (vtx.isValid()) {
45  convVtxFitProb = TMath::Prob( vtx.chi2(), vtx.ndof());
46  }
47  }
48 
49  // kf track related variables
50  bool validKf=false;
51  reco::TrackRef trackRef = ele.closestCtfTrackRef();
52  validKf = trackRef.isAvailable();
53  validKf &= trackRef.isNonnull();
54  float kfchi2 = validKf ? trackRef->normalizedChi2() : 0 ; //ielectron->track()->normalizedChi2() : 0 ;
55  float kfhits = validKf ? trackRef->hitPattern().trackerLayersWithMeasurement() : -1. ;
56 
57  return std::vector<float>{kfhits, kfchi2, convVtxFitProb, static_cast<float>(rho)};
58  }
59 
60  // Calculation of the MVA value
61  float mvaValue( const reco::Candidate* candidate, std::vector<float> const& auxVariables, int &iCategory) const override;
62 
63  int findCategory( const reco::Candidate* candidate) const override;
64 
65  private:
66 
67  void init(const std::vector<std::string> &weightFileNames);
68 
69  int findCategory(reco::GsfElectron const& electron) const;
70 
71  std::vector<ThreadSafeStringCut<StringCutObjectSelector<reco::GsfElectron>, reco::GsfElectron>> categoryFunctions_;
72  std::vector<int> nVariables_;
73 
74  // Data members
75  std::vector< std::unique_ptr<const GBRForest> > gbrForests_;
76 
77 
78  // There might be different variables for each category, so the variables
79  // names vector is itself a vector of length nCategories
80  std::vector<std::vector<int>> variables_;
81 
83 
84 };
85 
86 #endif
const reco::Vertex & conversionVertex() const
returns the reco conversion vertex
Definition: Conversion.h:98
static std::vector< float > getExtraVars(reco::GsfElectron const &ele, reco::ConversionCollection const *conversions, reco::BeamSpot const *beamSpot, double rho)
bool isAvailable() const
Definition: Ref.h:575
static reco::Conversion const * matchedConversion(const reco::GsfElectron &ele, const reco::ConversionCollection &convCol, const math::XYZPoint &beamspot, bool allowCkfMatch=true, float lxyMin=2.0, float probMin=1e-6, unsigned int nHitsBeforeVtxMax=0)
virtual TrackRef closestCtfTrackRef() const
Definition: GsfElectron.h:205
bool isNonnull() const
Checks for non-null.
Definition: Ref.h:251
static HepMC::IO_HEPEVT conv
bool isValid() const
Tells whether the vertex is valid.
Definition: Vertex.h:68
MVAVariableManager< reco::GsfElectron > mvaVarMngr_
std::vector< ThreadSafeStringCut< StringCutObjectSelector< reco::GsfElectron >, reco::GsfElectron > > categoryFunctions_
std::vector< Conversion > ConversionCollection
collectin of Conversion objects
Definition: ConversionFwd.h:9
float mvaValue(const reco::Candidate *candidate, std::vector< float > const &auxVariables, int &iCategory) const override
ElectronMVAEstimatorRun2(const edm::ParameterSet &conf)
double chi2() const
chi-squares
Definition: Vertex.h:98
void init(const std::vector< std::string > &weightFileNames)
std::vector< std::vector< int > > variables_
std::vector< std::unique_ptr< const GBRForest > > gbrForests_
double ndof() const
Definition: Vertex.h:105
#define debug
Definition: HDRShower.cc:19
int findCategory(const reco::Candidate *candidate) const override
const Point & position() const
position
Definition: BeamSpot.h:62