CMS 3D CMS Logo

EgammaHLTPixelMatchParamObjects.h
Go to the documentation of this file.
1 //These objects allow an arbitary parameristisation to be used
2 //design:
3 // the function and parameterisation can be changing without having to change the interface
4 // or breaking backwards compatibiltiy with existing configs.
5 // This is vital for the HLT and the main driving force behind the design which otherwise
6 // could have been a lot simplier
7 //
8 //usage:
9 // The variables used are defined by an intermediate object which defines the
10 // variables x,y, and z. 1D objects only need to define x, 2D objects x,y, etc.
11 // Example is "AbsEtaNrClus" which defines x as |supercluster eta| and y as #subclusters of the supercluster.
12 // The object also defines a pass function where it determines if x (and y,z) is
13 // within the specificed xmin and xmax range. This is mainly done as individual
14 // objects can decide whether this means min<=x<max or min<=x<=max
15 //
16 // These objects are used by the binning objects. The bins can currently be 1D, 2D,
17 // or 3D based on the intermediate object. Each bin has a function with it.
18 // The function takes a ParmaType as an argument and returns a float.
19 // The function is defined by a string of format FUNCID:=ExtraConfigInfo
20 // FUNCID = function type which allows different functions to be selected
21 // while ExtraConfigInfo is any extra information needed to configure that func
22 // currently implimented types are TF1, TF2, TF3
23 // so to get a TF1 which is a pol3 just do TF1:=pol3
24 //
25 //future plans:
26 // Seperate out intermediate wrapper objects such as AbsEtaNrClus
27 // and put them in their own file. However some mechanism is needed to register them
28 // so for now this isnt done. Note we might move to the standard CMSSW of dealing
29 // with this
30 
35 
36 #include "TF1.h"
37 #include "TF2.h"
38 #include "TF3.h"
39 
40 namespace egPM {
41 
42  struct AbsEtaNrClus {
43  float x;
44  size_t y;
45 
47  reco::SuperClusterRef scRef = seed.caloCluster().castTo<reco::SuperClusterRef>();
48  x = std::abs(scRef->eta());
49  y = scRef->clustersSize();
50  }
51  bool pass(float absEtaMin, float absEtaMax, size_t nrClusMin, size_t nrClusMax) const {
52  return x >= absEtaMin && x < absEtaMax && y >= nrClusMin && y <= nrClusMax;
53  }
54  };
55  struct AbsEtaNrClusPhi {
56  float x;
57  size_t y;
58  float z;
59 
61  reco::SuperClusterRef scRef = seed.caloCluster().castTo<reco::SuperClusterRef>();
62  x = std::abs(scRef->eta());
63  y = scRef->clustersSize();
64  z = scRef->phi();
65  }
66  bool pass(float absEtaMin, float absEtaMax, size_t nrClusMin, size_t nrClusMax, float phiMin, float phiMax) const {
67  return x >= absEtaMin && x < absEtaMax && y >= nrClusMin && y <= nrClusMax && z >= phiMin && z < phiMax;
68  }
69  };
70 
71  struct AbsEtaNrClusEt {
72  float x;
73  size_t y;
74  float z;
75 
77  reco::SuperClusterRef scRef = seed.caloCluster().castTo<reco::SuperClusterRef>();
78  x = std::abs(scRef->eta());
79  y = scRef->clustersSize();
80  z = scRef->energy() * sin(scRef->position().Theta());
81  }
82  bool pass(float absEtaMin, float absEtaMax, size_t nrClusMin, size_t nrClusMax, float etMin, float etMax) const {
83  return x >= absEtaMin && x < absEtaMax && y >= nrClusMin && y <= nrClusMax && z >= etMin && z < etMax;
84  }
85  };
86 
87  //these structs wrap the TF1 object
88  //also if the ParamType doesnt have a high enough dimension
89  //(ie using only one with x,y for a TF3), then the second
90  //template parameter disables the function
91  template <typename ParamType, bool = true>
92  struct TF1Wrap {
93  private:
95 
96  public:
97  TF1Wrap(const std::string& funcExpr, const std::vector<double>& params) : func_("func", funcExpr.c_str()) {
98  for (size_t paraNr = 0; paraNr < params.size(); paraNr++) {
99  func_.SetParameter(paraNr, params[paraNr]);
100  }
101  }
102  float operator()(const ParamType& obj) { return func_.Eval(obj.x); };
103  };
104  template <typename ParamType>
105  class TF1Wrap<ParamType, false> {
106  public:
107  TF1Wrap(const std::string& funcExpr, const std::vector<double>& params) {}
108  float operator()(const ParamType& obj) { return 1.; };
109  };
110 
111  template <typename ParamType, bool = true>
112  struct TF2Wrap {
113  private:
115 
116  public:
117  TF2Wrap(const std::string& funcExpr, const std::vector<double>& params) : func_("func", funcExpr.c_str()) {
118  for (size_t paraNr = 0; paraNr < params.size(); paraNr++) {
119  func_.SetParameter(paraNr, params[paraNr]);
120  }
121  }
122  float operator()(const ParamType& obj) { return func_.Eval(obj.x, obj.y); };
123  };
124  template <typename ParamType>
125  class TF2Wrap<ParamType, false> {
126  public:
127  TF2Wrap(const std::string& funcExpr, const std::vector<double>& params) {}
128  float operator()(const ParamType& obj) { return 1.; };
129  };
130 
131  template <typename ParamType, bool = true>
132  struct TF3Wrap {
133  private:
134  TF3 func_;
135 
136  public:
137  TF3Wrap(const std::string& funcExpr, const std::vector<double>& params) : func_("func", funcExpr.c_str()) {
138  for (size_t paraNr = 0; paraNr < params.size(); paraNr++) {
139  func_.SetParameter(paraNr, params[paraNr]);
140  }
141  }
142  float operator()(const ParamType& obj) { return func_.Eval(obj.x, obj.y, obj.z); };
143  };
144  template <typename ParamType>
145  class TF3Wrap<ParamType, false> {
146  public:
147  TF3Wrap(const std::string& funcExpr, const std::vector<double>& params) {}
148  float operator()(const ParamType& obj) { return 1.; };
149  };
150 
151  //the following functions allow for the fact that the type in the CMSSW PSet does not
152  //have floats do when it sees a float parameter, it retrieves a double
153  template <typename T>
154  struct ConfigType {
155  typedef T type;
156  };
157  template <>
158  struct ConfigType<float> {
159  typedef double type;
160  };
161  template <>
162  struct ConfigType<size_t> {
163  typedef int type;
164  };
165 
166  //helper functions to figure out what dimension the ParamType is
167  //and not generate functions which require a higher dimension
168  template <typename T>
169  constexpr auto has1D(int) -> decltype(T::x, bool()) {
170  return true;
171  }
172  template <typename T>
173  constexpr bool has1D(...) {
174  return false;
175  }
176  template <typename T>
177  constexpr auto has2D(int) -> decltype(T::y, bool()) {
178  return true;
179  }
180  template <typename T>
181  constexpr bool has2D(...) {
182  return false;
183  }
184  template <typename T>
185  constexpr auto has3D(int) -> decltype(T::z, bool()) {
186  return true;
187  }
188  template <typename T>
189  constexpr bool has3D(...) {
190  return false;
191  }
192 
193  template <typename InputType>
194  class ParamBin {
195  public:
196  ParamBin() {}
197  virtual ~ParamBin() {}
198  virtual bool pass(const InputType&) const = 0;
199  virtual float operator()(const InputType&) const = 0;
200 
201  protected:
202  //the FUNCTYPE:=funcExpr is designed for future extensions
203  static std::pair<std::string, std::string> readFuncStr(const std::string& inStr) {
204  size_t pos = inStr.find(":=");
205  if (pos != std::string::npos)
206  return std::make_pair(inStr.substr(0, pos), inStr.substr(pos + 2));
207  else
208  return std::make_pair(inStr, std::string(""));
209  }
210  template <typename ParamType>
211  static std::function<float(const ParamType&)> makeFunc(const edm::ParameterSet& config) {
212  auto funcType = readFuncStr(config.getParameter<std::string>("funcType"));
213  auto funcParams = config.getParameter<std::vector<double>>("funcParams");
214  if (funcType.first == "TF1" && has1D<ParamType>(0))
215  return TF1Wrap<ParamType, has1D<ParamType>(0)>(funcType.second, funcParams);
216  else if (funcType.first == "TF2" && has2D<ParamType>(0))
217  return TF2Wrap<ParamType, has2D<ParamType>(0)>(funcType.second, funcParams);
218  else if (funcType.first == "TF3" && has3D<ParamType>(0))
219  return TF3Wrap<ParamType, has3D<ParamType>(0)>(funcType.second, funcParams);
220  else
221  throw cms::Exception("InvalidConfig") << " type " << funcType.first
222  << " is not recognised or is imcompatable with the ParamType, "
223  "configuration is invalid and needs to be fixed"
224  << std::endl;
225  }
226  };
227 
228  template <typename InputType, typename ParamType>
229  class ParamBin1D : public ParamBin<InputType> {
230  private:
231  using XType = decltype(ParamType::x);
233  std::function<float(const ParamType&)> func_;
234 
235  public:
237  : xMin_(config.getParameter<typename ConfigType<XType>::type>("xMin")),
238  xMax_(config.getParameter<typename ConfigType<XType>::type>("xMax")),
239  func_(ParamBin<InputType>::template makeFunc<ParamType>(config)) {}
240  bool pass(const InputType& input) const override { return ParamType(input).pass(xMin_, xMax_); }
241  float operator()(const InputType& input) const override {
242  if (!pass(input))
243  return 0;
244  else
245  return func_(ParamType(input));
246  }
247  };
248 
249  template <typename InputType, typename ParamType>
250  class ParamBin2D : public ParamBin<InputType> {
251  private:
252  using XType = decltype(ParamType::x);
253  using YType = decltype(ParamType::y);
256  std::function<float(const ParamType&)> func_;
257 
258  public:
260  : xMin_(config.getParameter<typename ConfigType<XType>::type>("xMin")),
261  xMax_(config.getParameter<typename ConfigType<XType>::type>("xMax")),
262  yMin_(config.getParameter<typename ConfigType<YType>::type>("yMin")),
263  yMax_(config.getParameter<typename ConfigType<YType>::type>("yMax")),
264  func_(ParamBin<InputType>::template makeFunc<ParamType>(config)) {}
265 
266  bool pass(const InputType& input) const override { return ParamType(input).pass(xMin_, xMax_, yMin_, yMax_); }
267  float operator()(const InputType& input) const override {
268  if (!pass(input))
269  return 0;
270  else
271  return func_(ParamType(input));
272  }
273  };
274 
275  template <typename InputType, typename ParamType>
276  class ParamBin3D : public ParamBin<InputType> {
277  using XType = decltype(ParamType::x);
278  using YType = decltype(ParamType::y);
279  using ZType = decltype(ParamType::z);
280 
284  std::function<float(const ParamType&)> func_;
285 
286  public:
288  : xMin_(config.getParameter<typename ConfigType<XType>::type>("xMin")),
289  xMax_(config.getParameter<typename ConfigType<XType>::type>("xMax")),
290  yMin_(config.getParameter<typename ConfigType<YType>::type>("yMin")),
291  yMax_(config.getParameter<typename ConfigType<YType>::type>("yMax")),
292  zMin_(config.getParameter<typename ConfigType<ZType>::type>("zMin")),
293  zMax_(config.getParameter<typename ConfigType<ZType>::type>("zMax")),
294  func_(ParamBin<InputType>::template makeFunc<ParamType>(config)) {}
295 
296  bool pass(const InputType& input) const override {
297  return ParamType(input).pass(xMin_, xMax_, yMin_, yMax_, zMin_, zMax_);
298  }
299  float operator()(const InputType& input) const override {
300  if (!pass(input))
301  return 0;
302  else
303  return func_(ParamType(input));
304  }
305  };
306 
307  template <typename InputType>
308  class Param {
309  std::vector<std::unique_ptr<ParamBin<InputType>>> bins_;
310 
311  public:
313  std::vector<edm::ParameterSet> binConfigs = config.getParameter<std::vector<edm::ParameterSet>>("bins");
314  for (auto& binConfig : binConfigs)
315  bins_.emplace_back(createParamBin_(binConfig));
316  }
317  float operator()(const InputType& input) const {
318  for (auto& bin : bins_) {
319  if (bin->pass(input))
320  return (*bin)(input);
321  }
322  return -1; //didnt find a suitable bin, just return -1 for now
323  }
324 
325  private:
326  std::unique_ptr<ParamBin<InputType>> createParamBin_(const edm::ParameterSet& config) {
327  std::string type = config.getParameter<std::string>("binType");
328  if (type == "AbsEtaClus")
329  return std::make_unique<ParamBin2D<InputType, AbsEtaNrClus>>(config);
330  else if (type == "AbsEtaClusPhi")
331  return std::make_unique<ParamBin3D<InputType, AbsEtaNrClusPhi>>(config);
332  else if (type == "AbsEtaClusEt")
333  return std::make_unique<ParamBin3D<InputType, AbsEtaNrClusEt>>(config);
334  else
335  throw cms::Exception("InvalidConfig")
336  << " type " << type << " is not recognised, configuration is invalid and needs to be fixed" << std::endl;
337  }
338  };
339 } // namespace egPM
egPM::ConfigType< float >::type
double type
Definition: EgammaHLTPixelMatchParamObjects.h:159
egPM
Definition: EgammaHLTPixelMatchParamObjects.h:40
egPM::ParamBin1D::pass
bool pass(const InputType &input) const override
Definition: EgammaHLTPixelMatchParamObjects.h:240
photonAnalyzer_cfi.etMin
etMin
Definition: photonAnalyzer_cfi.py:54
egPM::AbsEtaNrClusPhi::pass
bool pass(float absEtaMin, float absEtaMax, size_t nrClusMin, size_t nrClusMax, float phiMin, float phiMax) const
Definition: EgammaHLTPixelMatchParamObjects.h:66
input
static const std::string input
Definition: EdmProvDump.cc:48
dqmMemoryStats.float
float
Definition: dqmMemoryStats.py:127
funct::false
false
Definition: Factorize.h:34
egPM::ParamBin2D
Definition: EgammaHLTPixelMatchParamObjects.h:250
egPM::ParamBin3D::func_
std::function< float(const ParamType &)> func_
Definition: EgammaHLTPixelMatchParamObjects.h:284
detailsBasic3DVector::z
float float float z
Definition: extBasic3DVector.h:14
egPM::ConfigType< size_t >::type
int type
Definition: EgammaHLTPixelMatchParamObjects.h:163
egPM::TF3Wrap
Definition: EgammaHLTPixelMatchParamObjects.h:132
CalibrationSummaryClient_cfi.params
params
Definition: CalibrationSummaryClient_cfi.py:14
egPM::TF3Wrap::func_
TF3 func_
Definition: EgammaHLTPixelMatchParamObjects.h:134
egPM::ParamBin::makeFunc
static std::function< float(const ParamType &)> makeFunc(const edm::ParameterSet &config)
Definition: EgammaHLTPixelMatchParamObjects.h:211
funcType
funcType
Definition: SiPixelActionExecutor.h:21
egPM::has1D
constexpr auto has1D(int) -> decltype(T::x, bool())
Definition: EgammaHLTPixelMatchParamObjects.h:169
pos
Definition: PixelAliasList.h:18
egPM::ConfigType::type
T type
Definition: EgammaHLTPixelMatchParamObjects.h:155
egPM::ParamBin3D::operator()
float operator()(const InputType &input) const override
Definition: EgammaHLTPixelMatchParamObjects.h:299
egPM::AbsEtaNrClusPhi
Definition: EgammaHLTPixelMatchParamObjects.h:55
egPM::TF1Wrap< ParamType, false >::TF1Wrap
TF1Wrap(const std::string &funcExpr, const std::vector< double > &params)
Definition: EgammaHLTPixelMatchParamObjects.h:107
egPM::TF2Wrap::operator()
float operator()(const ParamType &obj)
Definition: EgammaHLTPixelMatchParamObjects.h:122
egPM::has2D
constexpr auto has2D(int) -> decltype(T::y, bool())
Definition: EgammaHLTPixelMatchParamObjects.h:177
tools.TF1
TF1
Definition: tools.py:23
egPM::ParamBin1D::func_
std::function< float(const ParamType &)> func_
Definition: EgammaHLTPixelMatchParamObjects.h:233
edm::InputType
InputType
Definition: InputType.h:5
egPM::TF2Wrap< ParamType, false >::TF2Wrap
TF2Wrap(const std::string &funcExpr, const std::vector< double > &params)
Definition: EgammaHLTPixelMatchParamObjects.h:127
egPM::ParamBin3D::zMax_
ZType zMax_
Definition: EgammaHLTPixelMatchParamObjects.h:283
egPM::TF1Wrap
Definition: EgammaHLTPixelMatchParamObjects.h:92
egPM::ParamBin2D::pass
bool pass(const InputType &input) const override
Definition: EgammaHLTPixelMatchParamObjects.h:266
edm::Ref< SuperClusterCollection >
egPM::TF3Wrap< ParamType, false >::TF3Wrap
TF3Wrap(const std::string &funcExpr, const std::vector< double > &params)
Definition: EgammaHLTPixelMatchParamObjects.h:147
egPM::AbsEtaNrClusPhi::x
float x
Definition: EgammaHLTPixelMatchParamObjects.h:56
egPM::ParamBin2D::ParamBin2D
ParamBin2D(const edm::ParameterSet &config)
Definition: EgammaHLTPixelMatchParamObjects.h:259
funct::sin
Sin< T >::type sin(const T &t)
Definition: Sin.h:22
egPM::ParamBin2D::operator()
float operator()(const InputType &input) const override
Definition: EgammaHLTPixelMatchParamObjects.h:267
egPM::ConfigType
Definition: EgammaHLTPixelMatchParamObjects.h:154
egPM::ParamBin
Definition: EgammaHLTPixelMatchParamObjects.h:194
config
Definition: config.py:1
egPM::has3D
constexpr auto has3D(int) -> decltype(T::z, bool())
Definition: EgammaHLTPixelMatchParamObjects.h:185
egPM::ParamBin::operator()
virtual float operator()(const InputType &) const =0
egPM::ParamBin3D::ParamBin3D
ParamBin3D(const edm::ParameterSet &config)
Definition: EgammaHLTPixelMatchParamObjects.h:287
egPM::ParamBin2D::YType
decltype(ParamType::y) YType
Definition: EgammaHLTPixelMatchParamObjects.h:253
egPM::AbsEtaNrClusEt::z
float z
Definition: EgammaHLTPixelMatchParamObjects.h:74
reco::ElectronSeed
Definition: ElectronSeed.h:51
egPM::ParamBin1D::XType
decltype(ParamType::x) XType
Definition: EgammaHLTPixelMatchParamObjects.h:231
egPM::ParamBin2D::func_
std::function< float(const ParamType &)> func_
Definition: EgammaHLTPixelMatchParamObjects.h:256
egPM::ParamBin::readFuncStr
static std::pair< std::string, std::string > readFuncStr(const std::string &inStr)
Definition: EgammaHLTPixelMatchParamObjects.h:203
egPM::ParamBin::ParamBin
ParamBin()
Definition: EgammaHLTPixelMatchParamObjects.h:196
egPM::ParamBin3D::XType
decltype(ParamType::x) XType
Definition: EgammaHLTPixelMatchParamObjects.h:277
vertices_cff.x
x
Definition: vertices_cff.py:29
AlignmentTrackSelector_cfi.phiMin
phiMin
Definition: AlignmentTrackSelector_cfi.py:18
AlignmentTrackSelector_cfi.phiMax
phiMax
Definition: AlignmentTrackSelector_cfi.py:17
egPM::AbsEtaNrClus::x
float x
Definition: EgammaHLTPixelMatchParamObjects.h:43
egPM::AbsEtaNrClusEt::y
size_t y
Definition: EgammaHLTPixelMatchParamObjects.h:73
egPM::ParamBin1D::xMax_
XType xMax_
Definition: EgammaHLTPixelMatchParamObjects.h:232
ZElectronSkim_cff.absEtaMax
absEtaMax
Definition: ZElectronSkim_cff.py:36
egPM::ParamBin3D::YType
decltype(ParamType::y) YType
Definition: EgammaHLTPixelMatchParamObjects.h:278
looper.config
config
Definition: looper.py:291
egPM::AbsEtaNrClusEt::pass
bool pass(float absEtaMin, float absEtaMax, size_t nrClusMin, size_t nrClusMax, float etMin, float etMax) const
Definition: EgammaHLTPixelMatchParamObjects.h:82
tools.TF2
TF2
Definition: tools.py:24
egPM::TF1Wrap::TF1Wrap
TF1Wrap(const std::string &funcExpr, const std::vector< double > &params)
Definition: EgammaHLTPixelMatchParamObjects.h:97
getGTfromDQMFile.obj
obj
Definition: getGTfromDQMFile.py:32
AlCaHLTBitMon_QueryRunRegistry.string
string
Definition: AlCaHLTBitMon_QueryRunRegistry.py:256
egPM::AbsEtaNrClus::y
size_t y
Definition: EgammaHLTPixelMatchParamObjects.h:44
egPM::ParamBin3D::zMin_
ZType zMin_
Definition: EgammaHLTPixelMatchParamObjects.h:283
egPM::ParamBin1D::operator()
float operator()(const InputType &input) const override
Definition: EgammaHLTPixelMatchParamObjects.h:241
egPM::ParamBin2D::xMin_
XType xMin_
Definition: EgammaHLTPixelMatchParamObjects.h:254
egPM::ParamBin1D
Definition: EgammaHLTPixelMatchParamObjects.h:229
egPM::ParamBin3D::xMin_
XType xMin_
Definition: EgammaHLTPixelMatchParamObjects.h:281
edm::ParameterSet
Definition: ParameterSet.h:36
egPM::Param::createParamBin_
std::unique_ptr< ParamBin< InputType > > createParamBin_(const edm::ParameterSet &config)
Definition: EgammaHLTPixelMatchParamObjects.h:326
egPM::TF2Wrap< ParamType, false >::operator()
float operator()(const ParamType &obj)
Definition: EgammaHLTPixelMatchParamObjects.h:128
ZElectronSkim_cff.absEtaMin
absEtaMin
Definition: ZElectronSkim_cff.py:35
egPM::AbsEtaNrClus::pass
bool pass(float absEtaMin, float absEtaMax, size_t nrClusMin, size_t nrClusMax) const
Definition: EgammaHLTPixelMatchParamObjects.h:51
egPM::Param::operator()
float operator()(const InputType &input) const
Definition: EgammaHLTPixelMatchParamObjects.h:317
egPM::TF3Wrap< ParamType, false >::operator()
float operator()(const ParamType &obj)
Definition: EgammaHLTPixelMatchParamObjects.h:148
egPM::Param
Definition: EgammaHLTPixelMatchParamObjects.h:308
egPM::AbsEtaNrClusPhi::z
float z
Definition: EgammaHLTPixelMatchParamObjects.h:58
egPM::ParamBin3D
Definition: EgammaHLTPixelMatchParamObjects.h:276
egPM::AbsEtaNrClus::AbsEtaNrClus
AbsEtaNrClus(const reco::ElectronSeed &seed)
Definition: EgammaHLTPixelMatchParamObjects.h:46
egPM::AbsEtaNrClusEt::AbsEtaNrClusEt
AbsEtaNrClusEt(const reco::ElectronSeed &seed)
Definition: EgammaHLTPixelMatchParamObjects.h:76
egPM::Param::Param
Param(const edm::ParameterSet &config)
Definition: EgammaHLTPixelMatchParamObjects.h:312
egPM::TF1Wrap::func_
TF1 func_
Definition: EgammaHLTPixelMatchParamObjects.h:94
svgfig.template
def template(fileName, svg, replaceme="REPLACEME")
Definition: svgfig.py:521
egPM::ParamBin3D::pass
bool pass(const InputType &input) const override
Definition: EgammaHLTPixelMatchParamObjects.h:296
egPM::ParamBin2D::XType
decltype(ParamType::x) XType
Definition: EgammaHLTPixelMatchParamObjects.h:252
egPM::TF2Wrap::func_
TF2 func_
Definition: EgammaHLTPixelMatchParamObjects.h:114
egPM::AbsEtaNrClusPhi::y
size_t y
Definition: EgammaHLTPixelMatchParamObjects.h:57
newFWLiteAna.bin
bin
Definition: newFWLiteAna.py:161
egPM::TF2Wrap::TF2Wrap
TF2Wrap(const std::string &funcExpr, const std::vector< double > &params)
Definition: EgammaHLTPixelMatchParamObjects.h:117
cosmicPhotonAnalyzer_cfi.etMax
etMax
Definition: cosmicPhotonAnalyzer_cfi.py:11
type
type
Definition: HCALResponse.h:21
egPM::TF3Wrap::operator()
float operator()(const ParamType &obj)
Definition: EgammaHLTPixelMatchParamObjects.h:142
SuperClusterFwd.h
egPM::ParamBin1D::xMin_
XType xMin_
Definition: EgammaHLTPixelMatchParamObjects.h:232
egPM::ParamBin::pass
virtual bool pass(const InputType &) const =0
T
long double T
Definition: Basic3DVectorLD.h:48
egPM::TF3Wrap::TF3Wrap
TF3Wrap(const std::string &funcExpr, const std::vector< double > &params)
Definition: EgammaHLTPixelMatchParamObjects.h:137
SuperCluster.h
Exception
Definition: hltDiff.cc:246
detailsBasic3DVector::y
float float y
Definition: extBasic3DVector.h:14
egPM::ParamBin2D::yMax_
YType yMax_
Definition: EgammaHLTPixelMatchParamObjects.h:255
HiBiasedCentrality_cfi.function
function
Definition: HiBiasedCentrality_cfi.py:4
egPM::Param::bins_
std::vector< std::unique_ptr< ParamBin< InputType > > > bins_
Definition: EgammaHLTPixelMatchParamObjects.h:309
HLT_2018_cff.funcParams
funcParams
Definition: HLT_2018_cff.py:13908
egPM::ParamBin::~ParamBin
virtual ~ParamBin()
Definition: EgammaHLTPixelMatchParamObjects.h:197
egPM::AbsEtaNrClusEt
Definition: EgammaHLTPixelMatchParamObjects.h:71
egPM::AbsEtaNrClusEt::x
float x
Definition: EgammaHLTPixelMatchParamObjects.h:72
egPM::ParamBin1D::ParamBin1D
ParamBin1D(const edm::ParameterSet &config)
Definition: EgammaHLTPixelMatchParamObjects.h:236
egPM::ParamBin3D::yMin_
YType yMin_
Definition: EgammaHLTPixelMatchParamObjects.h:282
egPM::AbsEtaNrClus
Definition: EgammaHLTPixelMatchParamObjects.h:42
funct::abs
Abs< T >::type abs(const T &t)
Definition: Abs.h:22
egPM::TF2Wrap
Definition: EgammaHLTPixelMatchParamObjects.h:112
egPM::ParamBin3D::yMax_
YType yMax_
Definition: EgammaHLTPixelMatchParamObjects.h:282
ParameterSet.h
egPM::TF1Wrap< ParamType, false >::operator()
float operator()(const ParamType &obj)
Definition: EgammaHLTPixelMatchParamObjects.h:108
egPM::AbsEtaNrClusPhi::AbsEtaNrClusPhi
AbsEtaNrClusPhi(const reco::ElectronSeed &seed)
Definition: EgammaHLTPixelMatchParamObjects.h:60
egPM::ParamBin3D::ZType
decltype(ParamType::z) ZType
Definition: EgammaHLTPixelMatchParamObjects.h:279
SurveyInfoScenario_cff.seed
seed
Definition: SurveyInfoScenario_cff.py:295
egPM::ParamBin2D::yMin_
YType yMin_
Definition: EgammaHLTPixelMatchParamObjects.h:255
egPM::ParamBin3D::xMax_
XType xMax_
Definition: EgammaHLTPixelMatchParamObjects.h:281
ElectronSeed.h
egPM::ParamBin2D::xMax_
XType xMax_
Definition: EgammaHLTPixelMatchParamObjects.h:254
egPM::TF1Wrap::operator()
float operator()(const ParamType &obj)
Definition: EgammaHLTPixelMatchParamObjects.h:102