CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
RecoTauDiscriminantPlugins.h
Go to the documentation of this file.
1 #ifndef RecoTauTag_RecoTau_RecoTauDiscriminantPlugins_h
2 #define RecoTauTag_RecoTau_RecoTauDiscriminantPlugins_h
3 
4 /*
5  * Common base classes for the plugins used in the
6  * that produce PFTau discriminants. A PFTauDiscriminant
7  * (not discriminator) is a vector of doubles associated
8  * to a given tau, and represent some observable(s) for that
9  * tau.
10  *
11  * Author: Evan K. Friis, UC Davis
12  *
13  */
14 
17 #include <vector>
18 
19 namespace reco { namespace tau {
20 
21 // Convert a MVA name (i.e. Pt, Eta) to the appropriate plugin name.
22 // Example: discPluginName("Pt") -> "RecoTauDiscriminationPt"
24  return "RecoTauDiscrimination" + mvaName;
25 }
26 
28  public:
32  virtual void beginEvent() {}
33  // Get an observable
34  virtual std::vector<double> operator()(const reco::PFTauRef& pfTau) const=0;
35 };
36 
37 // Build a discriminant using a unary PFTau function that returns a single value
38 template<double Function(const reco::PFTau&)>
40  public:
43 
45 
46  virtual std::vector<double> operator()(const reco::PFTauRef& pfTau) const {
47  std::vector<double> output(1, Function(*pfTau));
48  return output;
49  }
50 };
51 
52 // Build a discriminant using a unary PFTau function that returns a vector of values
53 template<std::vector<double> Function(const reco::PFTau&)>
56  public:
59 
61 
62  virtual std::vector<double> operator()(const reco::PFTauRef& pfTau) const {
63  return Function(*pfTau);
64  }
65 };
66 } } // end reco::tau
67 
70 #endif
RecoTauDiscriminantFunctionPlugin(const edm::ParameterSet &pset)
RecoTauDiscriminantVectorFunctionPlugin(const edm::ParameterSet &pset)
edmplugin::PluginFactory< reco::tau::RecoTauDiscriminantPlugin *(const edm::ParameterSet &)> RecoTauDiscriminantPluginFactory
RecoTauDiscriminantPlugin(const edm::ParameterSet &pset)
std::string discPluginName(const std::string &mvaName)
virtual std::vector< double > operator()(const reco::PFTauRef &pfTau) const =0
virtual std::vector< double > operator()(const reco::PFTauRef &pfTau) const
virtual std::vector< double > operator()(const reco::PFTauRef &pfTau) const