ATLAS Offline Software
Loading...
Searching...
No Matches
jet::ResolutionHelper Class Reference

#include <ResolutionHelper.h>

Inheritance diagram for jet::ResolutionHelper:
Collaboration diagram for jet::ResolutionHelper:

Public Member Functions

 ResolutionHelper (const std::string &name, const std::string &jetDef)
 ResolutionHelper (const ResolutionHelper &toCopy)
virtual StatusCode initialize (TEnv &settings, TFile *histFile, const TString &MCtype)
virtual ~ResolutionHelper ()
std::tuple< const UncertaintyHistogram *, CompParametrization::TypeEnum, CompMassDef::TypeEnumgetNominalResolution (const CompScaleVar::TypeEnum smearType, const JetTopology::TypeEnum topology, const bool readMC) const
bool smearOnlyMC () const
bool smearDataAndMC () const
bool hasRelevantInfo (const CompScaleVar::TypeEnum type, const JetTopology::TypeEnum topology) const
void setLevel (MSG::Level lvl)
 Change the current logging level.
Functions providing the same interface as AthMessaging
bool msgLvl (const MSG::Level lvl) const
 Test the output level of the object.
MsgStream & msg () const
 The standard message stream.
MsgStream & msg (const MSG::Level lvl) const
 The standard message stream.

Private Member Functions

StatusCode parseInput (TEnv &settings, TFile *histFile, const TString &key, const TString &defaultValue, UncertaintyHistogram *&hist, CompParametrization::TypeEnum &param, CompMassDef::TypeEnum &massDef, const TString &MCtype)
void initMessaging () const
 Initialize our message level and MessageSvc.

Private Attributes

std::string m_name
std::string m_jetDef
bool m_isInit
bool m_smearOnlyMC
UncertaintyHistogramm_ptNomHistData
CompParametrization::TypeEnum m_ptNomParamData
CompMassDef::TypeEnum m_ptNomMassDefData
UncertaintyHistogramm_ptNomHistMC
CompParametrization::TypeEnum m_ptNomParamMC
CompMassDef::TypeEnum m_ptNomMassDefMC
UncertaintyHistogramm_fvNomHistData
CompParametrization::TypeEnum m_fvNomParamData
CompMassDef::TypeEnum m_fvNomMassDefData
UncertaintyHistogramm_fvNomHistMC
CompParametrization::TypeEnum m_fvNomParamMC
CompMassDef::TypeEnum m_fvNomMassDefMC
UncertaintyHistogramm_mQCDNomHistData
CompParametrization::TypeEnum m_mQCDNomParamData
CompMassDef::TypeEnum m_mQCDNomMassDefData
UncertaintyHistogramm_mQCDNomHistMC
CompParametrization::TypeEnum m_mQCDNomParamMC
CompMassDef::TypeEnum m_mQCDNomMassDefMC
UncertaintyHistogramm_mWZNomHistData
CompParametrization::TypeEnum m_mWZNomParamData
CompMassDef::TypeEnum m_mWZNomMassDefData
UncertaintyHistogramm_mWZNomHistMC
CompParametrization::TypeEnum m_mWZNomParamMC
CompMassDef::TypeEnum m_mWZNomMassDefMC
UncertaintyHistogramm_mHbbNomHistData
CompParametrization::TypeEnum m_mHbbNomParamData
CompMassDef::TypeEnum m_mHbbNomMassDefData
UncertaintyHistogramm_mHbbNomHistMC
CompParametrization::TypeEnum m_mHbbNomParamMC
CompMassDef::TypeEnum m_mHbbNomMassDefMC
UncertaintyHistogramm_mTopNomHistData
CompParametrization::TypeEnum m_mTopNomParamData
CompMassDef::TypeEnum m_mTopNomMassDefData
UncertaintyHistogramm_mTopNomHistMC
CompParametrization::TypeEnum m_mTopNomParamMC
CompMassDef::TypeEnum m_mTopNomMassDefMC
std::string m_nm
 Message source name.
boost::thread_specific_ptr< MsgStream > m_msg_tls
 MsgStream instance (a std::cout like with print-out levels)
std::atomic< IMessageSvc * > m_imsg { nullptr }
 MessageSvc pointer.
std::atomic< MSG::Level > m_lvl { MSG::NIL }
 Current logging level.
std::atomic_flag m_initialized ATLAS_THREAD_SAFE = ATOMIC_FLAG_INIT
 Messaging initialized (initMessaging)

Detailed Description

Constructor & Destructor Documentation

◆ ResolutionHelper() [1/2]

jet::ResolutionHelper::ResolutionHelper ( const std::string & name,
const std::string & jetDef )

Definition at line 17 of file Reconstruction/Jet/JetUncertainties/Root/ResolutionHelper.cxx.

18 : asg::AsgMessaging(name)
19 , m_name(name)
20 , m_jetDef(jetDef)
21 , m_isInit(false)
22 , m_smearOnlyMC(false)
23 , m_ptNomHistData(nullptr)
26 , m_ptNomHistMC(nullptr)
29 , m_fvNomHistData(nullptr)
32 , m_fvNomHistMC(nullptr)
35 , m_mQCDNomHistData(nullptr)
38 , m_mQCDNomHistMC(nullptr)
41 , m_mWZNomHistData(nullptr)
44 , m_mWZNomHistMC(nullptr)
47 , m_mHbbNomHistData(nullptr)
50 , m_mHbbNomHistMC(nullptr)
53 , m_mTopNomHistData(nullptr)
56 , m_mTopNomHistMC(nullptr)
59{ }

◆ ResolutionHelper() [2/2]

jet::ResolutionHelper::ResolutionHelper ( const ResolutionHelper & toCopy)

Definition at line 61 of file Reconstruction/Jet/JetUncertainties/Root/ResolutionHelper.cxx.

62 : asg::AsgMessaging(toCopy.m_name)
63 , m_name(toCopy.m_name)
64 , m_jetDef(toCopy.m_jetDef)
65 , m_isInit(toCopy.m_isInit)
66 , m_smearOnlyMC(toCopy.m_smearOnlyMC)
67 , m_ptNomHistData(!toCopy.m_ptNomHistData ? nullptr : new UncertaintyHistogram(*toCopy.m_ptNomHistData))
68 , m_ptNomParamData(toCopy.m_ptNomParamData)
69 , m_ptNomMassDefData(toCopy.m_ptNomMassDefData)
70 , m_ptNomHistMC(!toCopy.m_ptNomHistMC ? nullptr : new UncertaintyHistogram(*toCopy.m_ptNomHistMC))
71 , m_ptNomParamMC(toCopy.m_ptNomParamMC)
72 , m_ptNomMassDefMC(toCopy.m_ptNomMassDefMC)
73 , m_fvNomHistData(!toCopy.m_fvNomHistData ? nullptr : new UncertaintyHistogram(*toCopy.m_fvNomHistData))
74 , m_fvNomParamData(toCopy.m_fvNomParamData)
75 , m_fvNomMassDefData(toCopy.m_fvNomMassDefData)
76 , m_fvNomHistMC(!toCopy.m_fvNomHistMC ? nullptr : new UncertaintyHistogram(*toCopy.m_fvNomHistMC))
77 , m_fvNomParamMC(toCopy.m_fvNomParamMC)
78 , m_fvNomMassDefMC(toCopy.m_fvNomMassDefMC)
79 , m_mQCDNomHistData(!toCopy.m_mQCDNomHistData ? nullptr : new UncertaintyHistogram(*toCopy.m_mQCDNomHistData))
80 , m_mQCDNomParamData(toCopy.m_mQCDNomParamData)
81 , m_mQCDNomMassDefData(toCopy.m_mQCDNomMassDefData)
82 , m_mQCDNomHistMC(!toCopy.m_mQCDNomHistMC ? nullptr : new UncertaintyHistogram(*toCopy.m_mQCDNomHistMC))
83 , m_mQCDNomParamMC(toCopy.m_mQCDNomParamMC)
84 , m_mQCDNomMassDefMC(toCopy.m_mQCDNomMassDefMC)
85 , m_mWZNomHistData(!toCopy.m_mWZNomHistData ? nullptr : new UncertaintyHistogram(*toCopy.m_mWZNomHistData))
86 , m_mWZNomParamData(toCopy.m_mWZNomParamData)
87 , m_mWZNomMassDefData(toCopy.m_mWZNomMassDefData)
88 , m_mWZNomHistMC(!toCopy.m_mWZNomHistMC ? nullptr : new UncertaintyHistogram(*toCopy.m_mWZNomHistMC))
89 , m_mWZNomParamMC(toCopy.m_mWZNomParamMC)
90 , m_mWZNomMassDefMC(toCopy.m_mWZNomMassDefMC)
91 , m_mHbbNomHistData(!toCopy.m_mHbbNomHistData ? nullptr : new UncertaintyHistogram(*toCopy.m_mHbbNomHistData))
92 , m_mHbbNomParamData(toCopy.m_mHbbNomParamData)
93 , m_mHbbNomMassDefData(toCopy.m_mHbbNomMassDefData)
94 , m_mHbbNomHistMC(!toCopy.m_mHbbNomHistMC ? nullptr : new UncertaintyHistogram(*toCopy.m_mHbbNomHistMC))
95 , m_mHbbNomParamMC(toCopy.m_mHbbNomParamMC)
96 , m_mHbbNomMassDefMC(toCopy.m_mHbbNomMassDefMC)
97 , m_mTopNomHistData(!toCopy.m_mTopNomHistData ? nullptr : new UncertaintyHistogram(*toCopy.m_mTopNomHistData))
98 , m_mTopNomParamData(toCopy.m_mTopNomParamData)
99 , m_mTopNomMassDefData(toCopy.m_mTopNomMassDefData)
100 , m_mTopNomHistMC(!toCopy.m_mTopNomHistMC ? nullptr : new UncertaintyHistogram(*toCopy.m_mTopNomHistMC))
101 , m_mTopNomParamMC(toCopy.m_mTopNomParamMC)
102 , m_mTopNomMassDefMC(toCopy.m_mTopNomMassDefMC)
103{ }

◆ ~ResolutionHelper()

Member Function Documentation

◆ getNominalResolution()

std::tuple< const UncertaintyHistogram *, CompParametrization::TypeEnum, CompMassDef::TypeEnum > jet::ResolutionHelper::getNominalResolution ( const CompScaleVar::TypeEnum smearType,
const JetTopology::TypeEnum topology,
const bool readMC ) const

Definition at line 354 of file Reconstruction/Jet/JetUncertainties/Root/ResolutionHelper.cxx.

355{
356 // First get the resolution histogram and parametrization
357 const jet::UncertaintyHistogram* resolution = nullptr;
360
361 if (!m_isInit)
362 {
363 ATH_MSG_ERROR("Asking for the nominal resolution before initialization");
364 return std::tuple<const UncertaintyHistogram*,CompParametrization::TypeEnum,CompMassDef::TypeEnum>(NULL,CompParametrization::UNKNOWN,CompMassDef::UNKNOWN);
365 }
366
367
368 switch (smearType)
369 {
372 switch (topology)
373 {
374 case JetTopology::QCD:
375 if (readMC)
376 {
378 param = m_mQCDNomParamMC;
379 massDef = m_mQCDNomMassDefMC;
380 }
381 else
382 {
384 param = m_mQCDNomParamData;
385 massDef = m_mQCDNomMassDefData;
386 }
387 break;
388
389 case JetTopology::WZ:
390 if (readMC)
391 {
393 param = m_mWZNomParamMC;
394 massDef = m_mWZNomMassDefMC;
395 }
396 else
397 {
399 param = m_mWZNomParamData;
400 massDef = m_mWZNomMassDefData;
401 }
402 break;
403
404 case JetTopology::Hbb:
405 if (readMC)
406 {
408 param = m_mHbbNomParamMC;
409 massDef = m_mHbbNomMassDefMC;
410 }
411 else
412 {
414 param = m_mHbbNomParamData;
415 massDef = m_mHbbNomMassDefData;
416 }
417 break;
418
419 case JetTopology::Top:
420 if (readMC)
421 {
423 param = m_mTopNomParamMC;
424 massDef = m_mTopNomMassDefMC;
425 }
426 else
427 {
429 param = m_mTopNomParamData;
430 massDef = m_mTopNomMassDefData;
431 }
432 break;
433
435 // We shouldn't read this, as it was checked at a higher level
436 // Just to be safe, check it and return error code
437 ATH_MSG_ERROR("Mass resolution depends on a single jet topology, not a mixed topology");
438 return std::tuple<const UncertaintyHistogram*,CompParametrization::TypeEnum,CompMassDef::TypeEnum>(NULL,CompParametrization::UNKNOWN,CompMassDef::UNKNOWN);
439
440 default:
441 // We shouldn't read this, as it was checked at a higher level
442 // Just to be safe, check it and return error code
443 ATH_MSG_ERROR("Mass resolution depends on the jet topology, which was not specified");
444 return std::tuple<const UncertaintyHistogram*,CompParametrization::TypeEnum,CompMassDef::TypeEnum>(NULL,CompParametrization::UNKNOWN,CompMassDef::UNKNOWN);
445 }
446 break;
447
450 if (readMC)
451 {
453 param = m_ptNomParamMC;
454 massDef = m_ptNomMassDefMC;
455 }
456 else
457 {
459 param = m_ptNomParamData;
460 massDef = m_ptNomMassDefData;
461 }
462 break;
463
466 if (readMC)
467 {
469 param = m_fvNomParamMC;
470 massDef = m_fvNomMassDefMC;
471 }
472 else
473 {
475 param = m_fvNomParamData;
476 massDef = m_fvNomMassDefData;
477 }
478 break;
479
480 default:
481 // This is not a resolution uncertainty component
482 // We should not get here
483 // Print an erorr and return error code
484 ATH_MSG_ERROR("Asked for the smearing factor for a non-resolution component");
485 return std::tuple<const UncertaintyHistogram*,CompParametrization::TypeEnum,CompMassDef::TypeEnum>(NULL,CompParametrization::UNKNOWN,CompMassDef::UNKNOWN);
486 }
487 return std::tuple<const UncertaintyHistogram*,CompParametrization::TypeEnum,CompMassDef::TypeEnum>(resolution,param,massDef);
488}
#define ATH_MSG_ERROR(x)
double resolution[nGasTypes][nParametersResolution]

◆ hasRelevantInfo()

bool jet::ResolutionHelper::hasRelevantInfo ( const CompScaleVar::TypeEnum type,
const JetTopology::TypeEnum topology ) const

Definition at line 490 of file Reconstruction/Jet/JetUncertainties/Root/ResolutionHelper.cxx.

491{
492 if (!m_isInit)
493 {
494 throw std::runtime_error("Asking for nominal resolution information before initialization");
495 return false;
496 }
497
498 // Check that the nominal MC histograms for the specified type exist
499 // We have already checked that the parametrizations exist for each histogram
500 // We have already checked that the data histograms exist for each MC if relevant
501 switch (type)
502 {
505 return m_ptNomHistMC != nullptr;
506
509 return m_fvNomHistMC != nullptr;
510
513 switch (topology)
514 {
515 case JetTopology::QCD:
516 return m_mQCDNomHistMC != nullptr;
517
518 case JetTopology::WZ:
519 return m_mWZNomHistMC != nullptr;
520
521 case JetTopology::Hbb:
522 return m_mHbbNomHistMC != nullptr;
523
524 case JetTopology::Top:
525 return m_mTopNomHistMC != nullptr;
526
527 default:
528 throw std::runtime_error(Form("Unexpected topology type, cannot determine if relevant info exists: %s",JetTopology::enumToString(topology).Data()));
529 return false;
530 }
531
532 default:
533 throw std::runtime_error(Form("Unexpected variable type, cannot determine if relevant info exists: %s",CompScaleVar::enumToString(type).Data()));
534 return false;
535 }
536}
@ Data
Definition BaseObject.h:11
TString enumToString(const TypeEnum type)
TString enumToString(const TypeEnum type)

◆ initialize()

StatusCode jet::ResolutionHelper::initialize ( TEnv & settings,
TFile * histFile,
const TString & MCtype )
virtual

Definition at line 199 of file Reconstruction/Jet/JetUncertainties/Root/ResolutionHelper.cxx.

200{
201 if (m_isInit)
202 {
203 ATH_MSG_ERROR("Blocking double-initialization: " << m_name);
204 return StatusCode::FAILURE;
205 }
206
207 // Read nominal resolution information from the configuration file
208 // In many cases (especially configs before summer 2018), there are no inputs to find
209 // As such, it is perfectly normal behaviour to read zero inputs from the file
210 // However, there are some expectations
211 // There should be no cases of data resolution without MC resolution
212 // There can be cases of MC resolution without data resolution
213 // Histograms and their parametrizations must be paired (potentially also with mass)
214
215 // Expected format:
216 // KeyString: HistName,Parametrization
217 // KeyString: HistName,Parametrization,MassDef
218 // Example:
219 // NominalPtResData: PtResData,PtAbsEta
220 // Histogram name is PtResData_JETDEF
221 // Parametrization is pT vs |eta|
222 // NominalMassResMC: MassResMC,PtMass,Calo
223 // Histogram name is MassResMC_JETDEF
224 // Parametrization is pT vs m/pt
225 // Mass definition is calorimeter (not track-assisted or combined)
226
227
228 // Start with nominal pT resolution
229 if (parseInput(settings,histFile,"NominalPtResData","",m_ptNomHistData,m_ptNomParamData,m_ptNomMassDefData,MCtype).isFailure())
230 return StatusCode::FAILURE;
231 if (parseInput(settings,histFile,"NominalPtResMC","",m_ptNomHistMC,m_ptNomParamMC,m_ptNomMassDefMC,MCtype).isFailure())
232 return StatusCode::FAILURE;
234 {
235 ATH_MSG_ERROR("There should never be a nominal data resolution without a nominal MC resolution (pT)");
236 return StatusCode::FAILURE;
237 }
238
239 // Now the nominal four-vector resolution
240 if (parseInput(settings,histFile,"NominalFourVecResData","",m_fvNomHistData,m_fvNomParamData,m_fvNomMassDefData,MCtype).isFailure())
241 return StatusCode::FAILURE;
242 if (parseInput(settings,histFile,"NominalFourVecResMC","",m_fvNomHistMC,m_fvNomParamMC,m_fvNomMassDefMC,MCtype).isFailure())
243 return StatusCode::FAILURE;
245 {
246 ATH_MSG_ERROR("There should never be a nominal data resolution without a nominal MC resolution (four-vector)");
247 return StatusCode::FAILURE;
248 }
249
250 // Now the nominal mass resolution (topology-dependent)
251 // For simplicity, this is done with separate histograms for each one
252 // Lots of code duplication, but time is of the essence, and it works
253
254 // QCD topology
255 if (parseInput(settings,histFile,"NominalMassResDataQCD","",m_mQCDNomHistData,m_mQCDNomParamData,m_mQCDNomMassDefData,MCtype).isFailure())
256 return StatusCode::FAILURE;
257 if (parseInput(settings,histFile,"NominalMassResMCQCD","",m_mQCDNomHistMC,m_mQCDNomParamMC,m_mQCDNomMassDefMC,MCtype).isFailure())
258 return StatusCode::FAILURE;
260 {
261 ATH_MSG_ERROR("There should never be a nominal data resolution without a nominal MC resolution (four-vector)");
262 return StatusCode::FAILURE;
263 }
264
265 // WZ topology
266 if (parseInput(settings,histFile,"NominalMassResDataWZ","",m_mWZNomHistData,m_mWZNomParamData,m_mWZNomMassDefData,MCtype).isFailure())
267 return StatusCode::FAILURE;
268 if (parseInput(settings,histFile,"NominalMassResMCWZ","",m_mWZNomHistMC,m_mWZNomParamMC,m_mWZNomMassDefMC,MCtype).isFailure())
269 return StatusCode::FAILURE;
271 {
272 ATH_MSG_ERROR("There should never be a nominal data resolution without a nominal MC resolution (four-vector)");
273 return StatusCode::FAILURE;
274 }
275
276 // Hbb topology
277 if (parseInput(settings,histFile,"NominalMassResDataHbb","",m_mHbbNomHistData,m_mHbbNomParamData,m_mHbbNomMassDefData,MCtype).isFailure())
278 return StatusCode::FAILURE;
279 if (parseInput(settings,histFile,"NominalMassResMCHbb","",m_mHbbNomHistMC,m_mHbbNomParamMC,m_mHbbNomMassDefMC,MCtype).isFailure())
280 return StatusCode::FAILURE;
282 {
283 ATH_MSG_ERROR("There should never be a nominal data resolution without a nominal MC resolution (four-vector)");
284 return StatusCode::FAILURE;
285 }
286
287 // Top topology
288 if (parseInput(settings,histFile,"NominalMassResDataTop","",m_mTopNomHistData,m_mTopNomParamData,m_mTopNomMassDefData,MCtype).isFailure())
289 return StatusCode::FAILURE;
290 if (parseInput(settings,histFile,"NominalMassResMCTop","",m_mTopNomHistMC,m_mTopNomParamMC,m_mTopNomMassDefMC,MCtype).isFailure())
291 return StatusCode::FAILURE;
293 {
294 ATH_MSG_ERROR("There should never be a nominal data resolution without a nominal MC resolution (four-vector)");
295 return StatusCode::FAILURE;
296 }
297
298 // Check if the user has specified if this is full correlations or MC-only
299 TString smearType = settings.GetValue("ResolutionSmearOnlyMC","");
300 if (smearType != "")
301 {
302 if (!smearType.CompareTo("true",TString::kIgnoreCase))
303 m_smearOnlyMC = true;
304 else if (!smearType.CompareTo("false",TString::kIgnoreCase))
305 m_smearOnlyMC = false;
306 else
307 {
308 ATH_MSG_ERROR("The value of ResolutionSmearOnlyMC doesn't look like the expected boolean: " << smearType.Data());
309 return StatusCode::FAILURE;
310 }
311 ATH_MSG_INFO(Form(" ResolutionSmearOnlyMC: \"%s\"",m_smearOnlyMC ? "true" : "false"));
312 }
313
314 // If we are also smearing data, we need the data histograms for any MC histogram
315 if (!m_smearOnlyMC)
316 {
318 {
319 ATH_MSG_ERROR("Requested full smearing correlations (both data and MC), but only provided the MC nominal histogram for pT");
320 return StatusCode::FAILURE;
321 }
323 {
324 ATH_MSG_ERROR("Requested full smearing correlations (both data and MC), but only provided the MC nominal histogram for fourvec");
325 return StatusCode::FAILURE;
326 }
328 {
329 ATH_MSG_ERROR("Requested full smearing correlations (both data and MC), but only provided the MC nominal histogram for mQCD");
330 return StatusCode::FAILURE;
331 }
333 {
334 ATH_MSG_ERROR("Requested full smearing correlations (both data and MC), but only provided the MC nominal histogram for mWZ");
335 return StatusCode::FAILURE;
336 }
338 {
339 ATH_MSG_ERROR("Requested full smearing correlations (both data and MC), but only provided the MC nominal histogram for mHbb");
340 return StatusCode::FAILURE;
341 }
343 {
344 ATH_MSG_ERROR("Requested full smearing correlations (both data and MC), but only provided the MC nominal histogram for mTop");
345 return StatusCode::FAILURE;
346 }
347 }
348
349
350 m_isInit = true;
351 return StatusCode::SUCCESS;
352}
#define ATH_MSG_INFO(x)
StatusCode parseInput(TEnv &settings, TFile *histFile, const TString &key, const TString &defaultValue, UncertaintyHistogram *&hist, CompParametrization::TypeEnum &param, CompMassDef::TypeEnum &massDef, const TString &MCtype)

◆ initMessaging()

void AthMessaging::initMessaging ( ) const
privateinherited

Initialize our message level and MessageSvc.

This method should only be called once.

Definition at line 39 of file AthMessaging.cxx.

40{
42 // If user did not set an explicit level, set a default
43 if (m_lvl == MSG::NIL) {
44 m_lvl = m_imsg ?
45 static_cast<MSG::Level>( m_imsg.load()->outputLevel(m_nm) ) :
46 MSG::INFO;
47 }
48}
std::string m_nm
Message source name.
std::atomic< IMessageSvc * > m_imsg
MessageSvc pointer.
std::atomic< MSG::Level > m_lvl
Current logging level.
IMessageSvc * getMessageSvc(bool quiet=false)

◆ msg() [1/2]

MsgStream & asg::AsgMessaging::msg ( ) const
inherited

The standard message stream.

Returns
A reference to the default message stream of this object.

Definition at line 49 of file AsgMessaging.cxx.

49 {
50#ifndef XAOD_STANDALONE
51 return ::AthMessaging::msg();
52#else // not XAOD_STANDALONE
53 return m_msg;
54#endif // not XAOD_STANDALONE
55 }

◆ msg() [2/2]

MsgStream & asg::AsgMessaging::msg ( const MSG::Level lvl) const
inherited

The standard message stream.

Parameters
lvlThe message level to set the stream to
Returns
A reference to the default message stream, set to level "lvl"

Definition at line 57 of file AsgMessaging.cxx.

57 {
58#ifndef XAOD_STANDALONE
59 return ::AthMessaging::msg( lvl );
60#else // not XAOD_STANDALONE
61 m_msg << lvl;
62 return m_msg;
63#endif // not XAOD_STANDALONE
64 }

◆ msgLvl()

bool asg::AsgMessaging::msgLvl ( const MSG::Level lvl) const
inherited

Test the output level of the object.

Parameters
lvlThe message level to test against
Returns
boolean Indicting if messages at given level will be printed
true If messages at level "lvl" will be printed

Definition at line 41 of file AsgMessaging.cxx.

41 {
42#ifndef XAOD_STANDALONE
43 return ::AthMessaging::msgLvl( lvl );
44#else // not XAOD_STANDALONE
45 return m_msg.msgLevel( lvl );
46#endif // not XAOD_STANDALONE
47 }

◆ parseInput()

StatusCode jet::ResolutionHelper::parseInput ( TEnv & settings,
TFile * histFile,
const TString & key,
const TString & defaultValue,
UncertaintyHistogram *& hist,
CompParametrization::TypeEnum & param,
CompMassDef::TypeEnum & massDef,
const TString & MCtype )
private

Definition at line 121 of file Reconstruction/Jet/JetUncertainties/Root/ResolutionHelper.cxx.

122{
123 // Get the string
124 TString value = settings.GetValue(key,defaultValue);
125
126 // Check the trivial case
127 if (value == "")
128 return StatusCode::SUCCESS;
129
130 // Ensure it matches the expected format
131 if (!value.Contains(","))
132 {
133 ATH_MSG_ERROR("Key of " << key.Data() << " has an unexpected value format (missing comma): " << value.Data());
134 return StatusCode::FAILURE;
135 }
136
137 // Split the string
138 std::vector<TString> splitValue = utils::vectorize<TString>(value,", ");
139 if (splitValue.size() < 3)
140 {
141 ATH_MSG_ERROR("Key of " << key.Data() << " has unexpected value format (less than 3 strings): " << value.Data());
142 return StatusCode::FAILURE;
143 }
144 else if (splitValue.size() > 4)
145 {
146 ATH_MSG_ERROR("Key of " << key.Data() << " has unexpected value format (more than 4 strings): " << value.Data());
147 return StatusCode::FAILURE;
148 }
149
150 // Ensure that the parametrization is valid
151 param = CompParametrization::stringToEnum(splitValue.at(1));
152 if (param == CompParametrization::UNKNOWN)
153 {
154 ATH_MSG_ERROR("Key of " << key.Data() << " has unexpected parametrization value: " << splitValue.at(1));
155 return StatusCode::FAILURE;
156 }
157
158 // Ensure that the interpolation type is valid
159 Interpolate::TypeEnum interp = Interpolate::stringToEnum(splitValue.at(2));
160 if (interp == Interpolate::UNKNOWN)
161 {
162 ATH_MSG_ERROR("Key of " << key.Data() << " has unexpected interpolation type: " << splitValue.at(2));
163 return StatusCode::FAILURE;
164 }
165
166 // If this is a mass parametrization, ensure that a mass definition was specified
168 {
169 if (splitValue.size() != 4)
170 {
171 ATH_MSG_ERROR("Key of " << key.Data() << " has unexpected value format (missing mass definition): " << value.Data());
172 return StatusCode::FAILURE;
173 }
174 massDef = CompMassDef::stringToEnum(splitValue.at(3));
175 if (massDef == CompMassDef::UNKNOWN)
176 {
177 ATH_MSG_ERROR("Key of " << key.Data() << " has unexpected mass definition: " << splitValue.at(3));
178 return StatusCode::FAILURE;
179 }
180 }
181
182 // Replace generic MCTYPE string with the user-specified type if applicable
183 TString histName = splitValue.at(0);
184 histName.ReplaceAll("MCTYPE",MCtype);
185
186 // Create the histogram
187 hist = new UncertaintyHistogram(histName+"_"+m_jetDef.c_str(),interp);
188
189 // Initialize the histogram
190 if (hist->initialize(histFile).isFailure())
191 return StatusCode::FAILURE;
192
193 // Print out that we successfully read the input
194 ATH_MSG_INFO(Form(" %s: \"%s\"",key.Data(),value.Data()));
195
196 return StatusCode::SUCCESS;
197}
TypeEnum stringToEnum(const TString &type)
TypeEnum stringToEnum(const TString &type)
bool includesMass(const TypeEnum type)
TypeEnum stringToEnum(const TString &type)
bool vectorize(const TString &str, const TString &sep, std::vector< T > &result)

◆ setLevel()

void AthMessaging::setLevel ( MSG::Level lvl)
inherited

Change the current logging level.

Use this rather than msg().setLevel() for proper operation with MT.

Definition at line 28 of file AthMessaging.cxx.

29{
30 m_lvl = lvl;
31}

◆ smearDataAndMC()

bool jet::ResolutionHelper::smearDataAndMC ( ) const
inline

◆ smearOnlyMC()

bool jet::ResolutionHelper::smearOnlyMC ( ) const
inline

Member Data Documentation

◆ ATLAS_THREAD_SAFE

std::atomic_flag m_initialized AthMessaging::ATLAS_THREAD_SAFE = ATOMIC_FLAG_INIT
mutableprivateinherited

Messaging initialized (initMessaging)

Definition at line 141 of file AthMessaging.h.

◆ m_fvNomHistData

UncertaintyHistogram* jet::ResolutionHelper::m_fvNomHistData
private

◆ m_fvNomHistMC

UncertaintyHistogram* jet::ResolutionHelper::m_fvNomHistMC
private

◆ m_fvNomMassDefData

CompMassDef::TypeEnum jet::ResolutionHelper::m_fvNomMassDefData
private

◆ m_fvNomMassDefMC

CompMassDef::TypeEnum jet::ResolutionHelper::m_fvNomMassDefMC
private

◆ m_fvNomParamData

CompParametrization::TypeEnum jet::ResolutionHelper::m_fvNomParamData
private

◆ m_fvNomParamMC

CompParametrization::TypeEnum jet::ResolutionHelper::m_fvNomParamMC
private

◆ m_imsg

std::atomic<IMessageSvc*> AthMessaging::m_imsg { nullptr }
mutableprivateinherited

MessageSvc pointer.

Definition at line 135 of file AthMessaging.h.

135{ nullptr };

◆ m_isInit

bool jet::ResolutionHelper::m_isInit
private

◆ m_jetDef

std::string jet::ResolutionHelper::m_jetDef
private

◆ m_lvl

std::atomic<MSG::Level> AthMessaging::m_lvl { MSG::NIL }
mutableprivateinherited

Current logging level.

Definition at line 138 of file AthMessaging.h.

138{ MSG::NIL };

◆ m_mHbbNomHistData

UncertaintyHistogram* jet::ResolutionHelper::m_mHbbNomHistData
private

◆ m_mHbbNomHistMC

UncertaintyHistogram* jet::ResolutionHelper::m_mHbbNomHistMC
private

◆ m_mHbbNomMassDefData

CompMassDef::TypeEnum jet::ResolutionHelper::m_mHbbNomMassDefData
private

◆ m_mHbbNomMassDefMC

CompMassDef::TypeEnum jet::ResolutionHelper::m_mHbbNomMassDefMC
private

◆ m_mHbbNomParamData

CompParametrization::TypeEnum jet::ResolutionHelper::m_mHbbNomParamData
private

◆ m_mHbbNomParamMC

CompParametrization::TypeEnum jet::ResolutionHelper::m_mHbbNomParamMC
private

◆ m_mQCDNomHistData

UncertaintyHistogram* jet::ResolutionHelper::m_mQCDNomHistData
private

◆ m_mQCDNomHistMC

UncertaintyHistogram* jet::ResolutionHelper::m_mQCDNomHistMC
private

◆ m_mQCDNomMassDefData

CompMassDef::TypeEnum jet::ResolutionHelper::m_mQCDNomMassDefData
private

◆ m_mQCDNomMassDefMC

CompMassDef::TypeEnum jet::ResolutionHelper::m_mQCDNomMassDefMC
private

◆ m_mQCDNomParamData

CompParametrization::TypeEnum jet::ResolutionHelper::m_mQCDNomParamData
private

◆ m_mQCDNomParamMC

CompParametrization::TypeEnum jet::ResolutionHelper::m_mQCDNomParamMC
private

◆ m_msg_tls

boost::thread_specific_ptr<MsgStream> AthMessaging::m_msg_tls
mutableprivateinherited

MsgStream instance (a std::cout like with print-out levels)

Definition at line 132 of file AthMessaging.h.

◆ m_mTopNomHistData

UncertaintyHistogram* jet::ResolutionHelper::m_mTopNomHistData
private

◆ m_mTopNomHistMC

UncertaintyHistogram* jet::ResolutionHelper::m_mTopNomHistMC
private

◆ m_mTopNomMassDefData

CompMassDef::TypeEnum jet::ResolutionHelper::m_mTopNomMassDefData
private

◆ m_mTopNomMassDefMC

CompMassDef::TypeEnum jet::ResolutionHelper::m_mTopNomMassDefMC
private

◆ m_mTopNomParamData

CompParametrization::TypeEnum jet::ResolutionHelper::m_mTopNomParamData
private

◆ m_mTopNomParamMC

CompParametrization::TypeEnum jet::ResolutionHelper::m_mTopNomParamMC
private

◆ m_mWZNomHistData

UncertaintyHistogram* jet::ResolutionHelper::m_mWZNomHistData
private

◆ m_mWZNomHistMC

UncertaintyHistogram* jet::ResolutionHelper::m_mWZNomHistMC
private

◆ m_mWZNomMassDefData

CompMassDef::TypeEnum jet::ResolutionHelper::m_mWZNomMassDefData
private

◆ m_mWZNomMassDefMC

CompMassDef::TypeEnum jet::ResolutionHelper::m_mWZNomMassDefMC
private

◆ m_mWZNomParamData

CompParametrization::TypeEnum jet::ResolutionHelper::m_mWZNomParamData
private

◆ m_mWZNomParamMC

CompParametrization::TypeEnum jet::ResolutionHelper::m_mWZNomParamMC
private

◆ m_name

std::string jet::ResolutionHelper::m_name
private

◆ m_nm

std::string AthMessaging::m_nm
privateinherited

Message source name.

Definition at line 129 of file AthMessaging.h.

◆ m_ptNomHistData

UncertaintyHistogram* jet::ResolutionHelper::m_ptNomHistData
private

◆ m_ptNomHistMC

UncertaintyHistogram* jet::ResolutionHelper::m_ptNomHistMC
private

◆ m_ptNomMassDefData

CompMassDef::TypeEnum jet::ResolutionHelper::m_ptNomMassDefData
private

◆ m_ptNomMassDefMC

CompMassDef::TypeEnum jet::ResolutionHelper::m_ptNomMassDefMC
private

◆ m_ptNomParamData

CompParametrization::TypeEnum jet::ResolutionHelper::m_ptNomParamData
private

◆ m_ptNomParamMC

CompParametrization::TypeEnum jet::ResolutionHelper::m_ptNomParamMC
private

◆ m_smearOnlyMC

bool jet::ResolutionHelper::m_smearOnlyMC
private

The documentation for this class was generated from the following files: