62 ATH_MSG_FATAL(
"Cannot create an UncertaintyComponent with an empty uncHistName");
64 ATH_MSG_FATAL(
"Cannot create an UncertaintyComponent scaling an UNKNOWN variable");
65 if (numHist != component.
uncNames.size())
102 return StatusCode::FAILURE;
110 return StatusCode::FAILURE;
118 return StatusCode::FAILURE;
123 if (
m_uncHist->initialize(histFile).isFailure())
return StatusCode::FAILURE;
130 return StatusCode::SUCCESS;
148 const TH1* histo =
m_uncHist->getHisto();
149 return !(fabs(histo->GetMinimum()) > 1.e-8 || fabs(histo->GetMaximum()) > 1.e-8);
203 double splitFactor = 1;
204 const TH1* histo =
m_uncHist->getHisto();
213 const double minPt = histo->GetXaxis()->GetBinLowEdge(1);
214 const double maxPt = histo->GetXaxis()->GetBinLowEdge(histo->GetNbinsX()+1);
217 const double slope = 1./(log(maxPt)-log(minPt));
218 const double intercept = -slope*log(minPt);
220 splitFactor = slope*log(valPt <= minPt ? minPt+1.e-3 : valPt >= maxPt ? maxPt-1.e-3 : valPt)+intercept;
228 const double minEta = 0;
229 const double maxEta = 4.5;
230 const double absEta = fabs(
jet.eta());
232 const double slope = 1./(maxEta - minEta);
233 const double intercept = -slope*minEta;
235 splitFactor = slope*(absEta <= minEta ? minEta+1.e-3 : absEta >= maxEta ? maxEta-1.e-3 : absEta)+intercept;
248 const double minPt = histo->GetXaxis()->GetBinLowEdge(1);
249 const double maxPt = histo->GetXaxis()->GetBinLowEdge(histo->GetNbinsX()+1);
252 const double minEta = 0;
253 const double maxEta = 4.5;
254 const double absEta = fabs(
jet.eta());
256 const double slopePt = 1./(log(maxPt)-log(minPt));
257 const double slopeEta = 1./(maxEta-minEta);
259 const double fixedPt = valPt <= minPt ? minPt+1.e-3 : valPt >= maxPt ? maxPt - 1.e-3 : valPt;
260 const double fixedEta = absEta <= minEta ? minEta+1.e-3 : absEta >= maxEta ? maxEta-1.e-3 : absEta;
262 splitFactor = (slopePt*(log(fixedPt)-log(minPt)) + slopeEta*(fixedEta-minEta))/2.;
269 const double minPt = histo->GetXaxis()->GetBinLowEdge(1);
270 const double maxPt = histo->GetXaxis()->GetBinLowEdge(histo->GetNbinsX()+1);
273 const double minEta = 0;
274 const double maxEta = 4.5;
275 const double absEta = fabs(
jet.eta());
277 const double slopePt = 1./(log(maxPt)-log(minPt));
278 const double slopeEta = 1./(maxEta-minEta);
280 const double fixedPt = valPt <= minPt ? minPt+1.e-3 : valPt >= maxPt ? maxPt - 1.e-3 : valPt;
281 const double fixedEta = absEta <= minEta ? minEta+1.e-3 : absEta >= maxEta ? maxEta-1.e-3 : absEta;
283 splitFactor = (slopePt*(log(fixedPt)-log(minPt)) + slopeEta*(maxEta-fixedEta))/2.;
289 splitFactor = sqrt(1-splitFactor*splitFactor);
303 if (validity < 1.e-5 && validity > -1.e-5)
return false;
304 if (validity < 1+1.e-5 && validity > 1-1.e-5)
return true;
317 if (scale.isAvailable(
jet))
318 return scale(
jet).M();
323 return scaleTAMoment(
jet);
342 if (scale.isAvailable(
jet))
343 return scale(
jet).M()/scale(
jet).Pt();
348 return scaleTAMoment(
jet)/
jet.pt();
368 if (scale.isAvailable(
jet))
369 return scale(
jet).M()/scale(
jet).E();
374 return scaleTAMoment(
jet)/
jet.e();
#define JESUNC_ERROR_CODE
#define JESUNC_NO_DEFAULT_CONSTRUCTOR
#define JESUNC_SAFE_DELETE(T)
static const Attributes_t empty
SG::ConstAccessor< T, ALLOC > ConstAccessor
bool isAvailable(const ELT &e) const
Test to see if this variable exists in the store.
AsgMessaging(const std::string &name)
Constructor with a name.
std::vector< TString > uncNames
JetFourMomAccessor is an extension of JetAttributeAccessor::AccessorWrapper<xAOD::JetFourMom_t> Acces...
const JetTopology::TypeEnum m_topology
virtual double getUncertainty(const xAOD::Jet &jet, const xAOD::EventInfo &eInfo) const
const Interpolate::TypeEnum m_interpolate
virtual ~UncertaintyComponent()
const float m_energyScale
virtual double getMassOverPt(const xAOD::Jet &jet, const CompMassDef::TypeEnum massDef) const
UncertaintyComponent(const ComponentHelper &component, const size_t numHist=1)
virtual TString getName() const
virtual double getUncertaintyImpl(const xAOD::Jet &jet, const xAOD::EventInfo &eInfo) const =0
virtual TString getValidName() const
virtual double getAbsMass(const xAOD::Jet &jet, const CompMassDef::TypeEnum massDef) const
virtual double getSplitFactor(const xAOD::Jet &jet) const
virtual double getMassOverE(const xAOD::Jet &jet, const CompMassDef::TypeEnum massDef) const
virtual bool getValidity(const xAOD::Jet &jet, const xAOD::EventInfo &eInfo) const
virtual bool isAlwaysZero() const
virtual bool getValidBool(const double validity) const
virtual bool getValidUncertainty(double &unc, const xAOD::Jet &jet, const xAOD::EventInfo &eInfo) const
const TString m_uncHistName
UncertaintyHistogram * m_validHist
const CompScaleVar::TypeEnum m_scaleVar
const TString m_validHistName
virtual bool getValidityImpl(const xAOD::Jet &jet, const xAOD::EventInfo &eInfo) const =0
virtual StatusCode initialize(TFile *histFile)
UncertaintyHistogram * m_uncHist
TString getJetScaleString(const TypeEnum type)
TString enumToString(const TypeEnum type)
bool operator==(const UncertaintyComponent &componentA, const UncertaintyComponent &componentB)
bool operator<(const UncertaintyComponent &componentA, const UncertaintyComponent &componentB)
Jet_v1 Jet
Definition of the current "jet version".
EventInfo_v1 EventInfo
Definition of the latest event info version.