CMS 3D CMS Logo

JetResolution.cc
Go to the documentation of this file.
1 #ifndef STANDALONE
5 
8 #else
9 #include "JetResolution.h"
10 #endif
11 
12 namespace JME {
13 
15  m_object = std::make_shared<JetResolutionObject>(filename);
16  }
17 
19  m_object = std::make_shared<JetResolutionObject>(object);
20  }
21 
22 #ifndef STANDALONE
25  setup.get<JetResolutionRcd>().get(label, handle);
26 
27  return *handle;
28  }
29 #endif
30 
32  const JetResolutionObject::Record* record = m_object->getRecord(parameters);
33  if (! record)
34  return 1;
35 
36  return m_object->evaluateFormula(*record, parameters);
37  }
38 
40  m_object = std::make_shared<JetResolutionObject>(filename);
41  }
42 
44  m_object = std::make_shared<JetResolutionObject>(object);
45  }
46 
47 #ifndef STANDALONE
50  setup.get<JetResolutionScaleFactorRcd>().get(label, handle);
51 
52  return *handle;
53  }
54 #endif
55 
57  Variation variation /* = Variation::NOMINAL*/,
58  std::string uncertaintySource /* = ""*/) const {
59  const JetResolutionObject::Record* record = m_object->getRecord(parameters);
60  if (! record)
61  return 1;
62 
63  const std::vector<float>& parameters_values = record->getParametersValues();
64  const std::vector<std::string>& parameter_names = m_object->getDefinition().getParametersName();
65  size_t parameter = static_cast<size_t>(variation);
66  if (!uncertaintySource.empty()) {
67  if (variation == Variation::DOWN)
68  parameter = std::distance(parameter_names.begin(),
69  std::find(parameter_names.begin(), parameter_names.end(), uncertaintySource + "Down"));
70  else if (variation == Variation::UP)
71  parameter = std::distance(parameter_names.begin(),
72  std::find(parameter_names.begin(), parameter_names.end(), uncertaintySource + "Up"));
73  if (parameter >= parameter_names.size()) {
74  std::string s;
75  for (const auto& piece : parameter_names)
76  s += piece + " ";
77  throw cms::Exception("InvalidParameter") << "Invalid value for 'uncertaintySource' parameter. Only " + s + " are supported.\n";
78  }
79  }
80  return parameters_values[parameter];
81  }
82 
83 }
84 
85 #ifndef STANDALONE
89 #endif
float getResolution(const JetParameters &parameters) const
static const JetResolution get(const edm::EventSetup &, const std::string &)
JetCorrectorParameters::Record record
Definition: classes.h:7
def setup(process, global_tag, zero_tesla=False)
Definition: GeneralSetup.py:2
void find(edm::Handle< EcalRecHitCollection > &hits, DetId thisDet, std::vector< EcalRecHitCollection::const_iterator > &hit, bool debug=false)
Definition: FindCaloHit.cc:20
std::shared_ptr< JetResolutionObject > m_object
Definition: JetResolution.h:42
char const * label
float getScaleFactor(const JetParameters &parameters, Variation variation=Variation::NOMINAL, std::string uncertaintySource="") const
#define TYPELOOKUP_DATA_REG(_dataclass_)
Definition: typelookup.h:102
const std::vector< float > & getParametersValues() const
static const JetResolutionScaleFactor get(const edm::EventSetup &, const std::string &)
T get() const
Definition: EventSetup.h:71