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  * $Id $
14  */
15 
18 #include <vector>
19 
20 namespace reco { namespace tau {
21 
22 // Convert a MVA name (i.e. Pt, Eta) to the appropriate plugin name.
23 // Example: discPluginName("Pt") -> "RecoTauDiscriminationPt"
24 inline std::string discPluginName(const std::string& mvaName) {
25  return "RecoTauDiscrimination" + mvaName;
26 }
27 
29  public:
33  virtual void beginEvent() {}
34  // Get an observable
35  virtual std::vector<double> operator()(const reco::PFTauRef& pfTau) const=0;
36 };
37 
38 // Build a discriminant using a unary PFTau function that returns a single value
39 template<double Function(const reco::PFTau&)>
41  public:
44 
46 
47  virtual std::vector<double> operator()(const reco::PFTauRef& pfTau) const {
48  std::vector<double> output(1, Function(*pfTau));
49  return output;
50  }
51 };
52 
53 // Build a discriminant using a unary PFTau function that returns a vector of values
54 template<std::vector<double> Function(const reco::PFTau&)>
57  public:
60 
62 
63  virtual std::vector<double> operator()(const reco::PFTauRef& pfTau) const {
64  return Function(*pfTau);
65  }
66 };
67 } } // end reco::tau
68 
71 #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