#include <MuonSFTestHelper.h>
|
| struct | SFSet |
| | Helper struct to store scale factor, data efficiency + mc efficiency for each systematic variation. More...
|
|
| | MuonSFBranches (MuonVal::MuonTesterTree &tree, const ToolHandle< CP::IMuonEfficiencyScaleFactors > &handle, const std::string &rel_name="") |
| virtual | ~MuonSFBranches ()=default |
| void | setMuon (const xAOD::Muon &muon) override final |
| bool | fill (const EventContext &ctx) override final |
| | The fill method checks if enough information is provided such that the branch is cleared from the information of the prevoius event and in cases of that updates did no happen befure a default value is provided.
|
| bool | init () override final |
| | The init method checks whether the branch name has already registered to the MuonTree and tries then to add the branch to the tree --> return false if the branch has already been defined or the inclusion of the branch to the tree failed or the name of the branch is empty.
|
| std::string | name () const override final |
| | Returns the name of the branch.
|
| bool | initialized () const |
| | Returns whether the object has been initialized or not The outcome of the variable is bound to a successful call of the addToTree method.
|
| TTree * | tree () override final |
| | Returns the underlying TTree object.
|
| const TTree * | tree () const override final |
| std::vector< DataDependency > | data_dependencies () override final |
| | Returns the data dependencies needed by the MuonTesterBranch.
|
| bool | msgLvl (const MSG::Level lvl) const |
| | Test the output level.
|
| MsgStream & | msg () const |
| | The standard message stream.
|
| MsgStream & | msg (const MSG::Level lvl) const |
| | The standard message stream.
|
| void | setLevel (MSG::Level lvl) |
| | Change the current logging level.
|
|
| template<class T> |
| bool | addToTree (T &variable) |
| | Connects the Memory buffer with the TTree.
|
| template<class Key> |
| bool | declare_dependency (Key &key) |
| | Declares the ReadHandle/ ReadCondHandleKey as data dependency of the algorithm.
|
| MuonTesterTree & | parent () |
| | Returns the reference to the MuonTesterTree parent.
|
Definition at line 71 of file MuonSFTestHelper.h.
◆ DataDependency
◆ MuonSFBranches()
Definition at line 90 of file MuonSFTestHelper.cxx.
92 :
93 MuonVal::MuonTesterBranch{
tree, relName + (relName.empty() ?
"" :
"_") +
virtual TTree * tree()=0
Returns the pointer to the underlying TTree object.
ToolHandle< CP::IMuonEfficiencyScaleFactors > m_handle
T getProperty(const asg::IAsgTool *interface_tool, const std::string &prop_name)
◆ ~MuonSFBranches()
| virtual TestMuonSF::MuonSFBranches::~MuonSFBranches |
( |
| ) |
|
|
virtualdefault |
◆ addToTree()
template<class T>
| bool MuonVal::MuonTesterBranch::addToTree |
( |
T & | variable | ) |
|
|
protectedinherited |
Connects the Memory buffer with the TTree.
◆ data_dependencies()
| std::vector< MuonTesterBranch::DataDependency > MuonVal::MuonTesterBranch::data_dependencies |
( |
| ) |
|
|
finaloverridevirtualinherited |
◆ declare_dependency()
template<class Key>
| bool MuonVal::MuonTesterBranch::declare_dependency |
( |
Key & | key | ) |
|
|
protectedinherited |
Declares the ReadHandle/ ReadCondHandleKey as data dependency of the algorithm.
◆ eraseWhiteSpaces()
| std::string MuonVal::MuonTesterBranch::eraseWhiteSpaces |
( |
const std::string & | In | ) |
|
|
staticinherited |
Definition at line 56 of file MuonTesterBranch.cxx.
56 {
60}
DataModel_detail::iterator< DVL > remove_if(typename DataModel_detail::iterator< DVL > beg, typename DataModel_detail::iterator< DVL > end, Predicate pred)
Specialization of remove_if for DataVector/List.
◆ fill()
| bool TestMuonSF::MuonSFBranches::fill |
( |
const EventContext & | ctx | ) |
|
|
finaloverridevirtual |
The fill method checks if enough information is provided such that the branch is cleared from the information of the prevoius event and in cases of that updates did no happen befure a default value is provided.
--> returns false if no update is called or the dummy value has not been defined
Implements MuonVal::IMuonTesterBranch.
Definition at line 112 of file MuonSFTestHelper.cxx.
112 {
113 for (
auto& sys :
m_SFs) {
114 if (!
sys->fill(ctx))
return false;
115 }
116 return true;
117 }
std::vector< std::unique_ptr< SFSet > > m_SFs
◆ fillSystematic()
No data-mc efficiencies provided for eta beyond 2.5
Definition at line 154 of file MuonSFTestHelper.cxx.
155 {
156 if (
m_handle->applySystematicVariation(Syst_SF.cpSet) != StatusCode::SUCCESS) {
157 ATH_MSG_ERROR(
"Failed to apply variation "<< Syst_SF.cpSet.name()<<
" for "<<
name());
159 }
161 CP::CorrectionCode
cc =
m_handle->getEfficiencyScaleFactor(muon, sf);
163 ATH_MSG_ERROR(
"Failed to retrieve the scale factor variation "<< Syst_SF.cpSet.name()<<
" for "<<
name());
165 }
166 Syst_SF.scaleFactor =
sf;
167
169 if (std::abs(
muon.eta()) > 2.5) {
170 Syst_SF.dataEff = -1;
171 Syst_SF.mcEff = -1;
173 }
176 ATH_MSG_ERROR(
"Failed to retrieve the data efficiency variation "<< Syst_SF.cpSet.name()<<
" for "<<
name());
178 }
179 Syst_SF.dataEff =
sf;
182 ATH_MSG_ERROR(
"Failed to retrieve the mc efficiency variation "<< Syst_SF.cpSet.name()<<
" for "<<
name());
184 }
187 }
@ Error
Some error happened during the object correction.
@ Ok
The correction was done successfully.
virtual std::string name() const =0
Returns the name of the branch.
◆ init()
| bool TestMuonSF::MuonSFBranches::init |
( |
| ) |
|
|
finaloverridevirtual |
The init method checks whether the branch name has already registered to the MuonTree and tries then to add the branch to the tree --> return false if the branch has already been defined or the inclusion of the branch to the tree failed or the name of the branch is empty.
Implements MuonVal::IMuonTesterBranch.
Definition at line 97 of file MuonSFTestHelper.cxx.
97 {
98 auto mesf =
dynamic_cast<const CP::MuonEfficiencyScaleFactors*
>(
m_handle.get());
99 if (!mesf) {
100 ATH_MSG_ERROR(
"Given tool not MuonCP::MuonEfficiencyScaleFactors");
101 return false;
102 }
104
106 m_SFs.emplace_back(std::make_unique<SFSet>(set, *
this));
107 if (!
m_SFs.back()->init())
return false;
108 }
109 return true;
110 }
std::vector< CP::SystematicSet > make_systematics_vector(const SystematicSet &systematics)
utility functions for working with systematics
◆ initialized()
| bool MuonVal::MuonTesterBranch::initialized |
( |
| ) |
const |
|
inherited |
Returns whether the object has been initialized or not The outcome of the variable is bound to a successful call of the addToTree method.
Definition at line 52 of file MuonTesterBranch.cxx.
◆ 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
43 if (
m_lvl == MSG::NIL) {
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 & AthMessaging::msg |
( |
| ) |
const |
|
inlineinherited |
The standard message stream.
Returns a reference to the default message stream May not be invoked before sysInitialize() has been invoked.
Definition at line 163 of file AthMessaging.h.
164{
166 if (!ms) {
170 }
171
174}
boost::thread_specific_ptr< MsgStream > m_msg_tls
MsgStream instance (a std::cout like with print-out levels)
void initMessaging() const
Initialize our message level and MessageSvc.
◆ msg() [2/2]
| MsgStream & AthMessaging::msg |
( |
const MSG::Level | lvl | ) |
const |
|
inlineinherited |
The standard message stream.
Returns a reference to the default message stream May not be invoked before sysInitialize() has been invoked.
Definition at line 178 of file AthMessaging.h.
179{
return msg() << lvl; }
MsgStream & msg() const
The standard message stream.
◆ msgLvl()
| bool AthMessaging::msgLvl |
( |
const MSG::Level | lvl | ) |
const |
|
inlineinherited |
Test the output level.
- Parameters
-
| lvl | The message level to test against |
- Returns
- boolean Indicating if messages at given level will be printed
- Return values
-
| true | Messages at level "lvl" will be printed |
Definition at line 151 of file AthMessaging.h.
152{
155 return true;
156 } else {
157 return false;
158 }
159}
◆ name()
| std::string MuonVal::MuonTesterBranch::name |
( |
| ) |
const |
|
finaloverridevirtualinherited |
◆ parent()
| MuonTesterTree & MuonVal::MuonTesterBranch::parent |
( |
| ) |
|
|
protectedinherited |
Returns the reference to the MuonTesterTree parent.
Definition at line 38 of file MuonTesterBranch.cxx.
38 {
41 }
43}
#define ATH_MSG_WARNING(x)
MuonTesterTree * m_parent
std::string name() const override final
Returns the name of the branch.
◆ setLevel()
| void AthMessaging::setLevel |
( |
MSG::Level | lvl | ) |
|
|
inherited |
◆ setMuon()
| void TestMuonSF::MuonSFBranches::setMuon |
( |
const xAOD::Muon & | muon | ) |
|
|
finaloverridevirtual |
Only the raw systematic sets have been activated We can loop over each set and fill it properly
Only process the nominal set or the set matching the syst bin
Implements TestMuonSF::MuonEffiBranch.
Definition at line 120 of file MuonSFTestHelper.cxx.
120 {
124 for (
auto& Syst_SF :
m_SFs) {
127 return;
128 }
129 }
130 } else {
132 if (bin < 0){
133 ATH_MSG_WARNING(
"Did not find a valid bin for muon with pT: "<<
muon.pt() *MeVtoGeV <<
" GeV, eta:"<<
135 return;
136 }
137 for (
auto& Syst_SF:
m_SFs){
139 bool process = Syst_SF->cpSet.name().empty() ||
140 std::find_if(Syst_SF->cpSet.begin(), Syst_SF->cpSet.end(),
141 [bin](const CP::SystematicVariation& t){
142 return t.isToyVariation() && t.getToyVariation().first ==
143 static_cast<unsigned>(bin);
144 }) != Syst_SF->cpSet.end();
148 return;
149 }
150 }
151 }
152 }
CP::CorrectionCode fillSystematic(const xAOD::Muon &muon, SFSet &set)
const std::string process
◆ systName()
Dummy helper function that encodes the systname set.
Definition at line 87 of file MuonSFTestHelper.h.
87 {
88 return set.name().empty() ? std::string(
"") : std::string(
"__") +
set.
name();
89 }
constexpr std::enable_if_t< is_bitmask_v< E >, E & > set(E &lhs, E rhs)
Convenience function to set bits in a class enum bitmask.
◆ tree() [1/2]
| const TTree * MuonVal::MuonTesterBranch::tree |
( |
| ) |
const |
|
finaloverridevirtualinherited |
◆ tree() [2/2]
| TTree * MuonVal::MuonTesterBranch::tree |
( |
| ) |
|
|
finaloverridevirtualinherited |
◆ ATLAS_THREAD_SAFE
| std::atomic_flag m_initialized AthMessaging::ATLAS_THREAD_SAFE = ATOMIC_FLAG_INIT |
|
mutableprivateinherited |
◆ m_dependencies
| std::vector<DataDependency> MuonVal::MuonTesterBranch::m_dependencies {} |
|
privateinherited |
◆ m_handle
◆ m_imsg
| std::atomic<IMessageSvc*> AthMessaging::m_imsg { nullptr } |
|
mutableprivateinherited |
◆ m_init
| bool MuonVal::MuonTesterBranch::m_init {false} |
|
privateinherited |
◆ m_lvl
| std::atomic<MSG::Level> AthMessaging::m_lvl { MSG::NIL } |
|
mutableprivateinherited |
◆ 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_name
| std::string MuonVal::MuonTesterBranch::m_name {} |
|
privateinherited |
◆ m_nm
| std::string AthMessaging::m_nm |
|
privateinherited |
◆ m_parent
| MuonTesterTree* MuonVal::MuonTesterBranch::m_parent {nullptr} |
|
privateinherited |
◆ m_SFs
| std::vector<std::unique_ptr<SFSet> > TestMuonSF::MuonSFBranches::m_SFs {} |
|
private |
◆ m_tree
| TTree* MuonVal::MuonTesterBranch::m_tree {nullptr} |
|
privateinherited |
◆ m_uncorrelate_sys
| bool TestMuonSF::MuonSFBranches::m_uncorrelate_sys {false} |
|
private |
The documentation for this class was generated from the following files: