ATLAS Offline Software
Loading...
Searching...
No Matches
MuonVal::IParticleFourMomBranch Class Reference

Helper class to easily to add xAOD::IParticles and associated decorator variables to the MuonTesterTree. More...

#include <IParticleFourMomBranch.h>

Inheritance diagram for MuonVal::IParticleFourMomBranch:
Collaboration diagram for MuonVal::IParticleFourMomBranch:

Public Types

using DataDependency = SG::VarHandleKey*

Public Member Functions

 IParticleFourMomBranch (MuonTesterTree &tree, const std::string &particle)
 Construct an IParticleFourMomBranch.
bool fill (const EventContext &ctx) override
 Fill the branch.
bool init () override
 Initialize the branches and all children.
std::string name () const override
 Name of the four momentum branch.
const TTree * tree () const override
 Return the underyling TTree pointer.
TTree * tree () override
 Returns the pointer to the underlying TTree object.
MuonTesterTree & getTree ()
 Access to the MuonTrestTree parent.
bool initialized () const
 Has the init method been called.
std::vector< DataDependency > data_dependencies () override
 Returns a list of all Read(Coond)HandleKeys needed by the branch.
size_t size () const
 How many particles have been pushed back already.
void push_back (const xAOD::IParticle *p) override
 Similar to the IAuxElementDecoration branch but only accepting IParticles.
void push_back (const xAOD::IParticle &p) override
void operator+= (const xAOD::IParticle *p) override
void operator+= (const xAOD::IParticle &p) override
size_t find (const xAOD::IParticle &p) const
 Returns the position at which the particle has already be inserted in the chain – If the particle is not present then the size is returned – In cases of nullptr -1 is returned.
size_t find (const xAOD::IParticle *p) const
size_t find (std::function< bool(const xAOD::IParticle *)> func) const
 Find the first particle satisfying the selection criteria given by the client.
std::span< const xAOD::IParticle *const > getCached (const EventContext &ctx)
 Returns the list of currently cached particles.
template<typename T>
bool addVariable (const std::string &variable, std::string_view accName="")
 Writes a variable of type <T> which can be directly accessed via an SG::AuxElement e.g.
template<typename T>
bool addVariable (T defaultValue, const std::string &variable, std::string_view accName="")
 Write a variable of type <T> to the TTree.
template<typename T>
bool addVariableGeV (const std::string &variable, const std::string &accName="")
 Write a variable of type <T> to the TTree, but divide it by 1k before dumping.
template<typename T>
bool addVariableGeV (T defaultValue, const std::string &variable, const std::string &accName="")
 Write a variable of type <T> to the TTree, but divide it by 1k before dumping.
template<typename T>
std::shared_ptr< ParticleVariableBranch< T > > getBranch (const std::string &var) const
 Returns the point to the underlying ParticleVariableBranch translating the IParticle Accessors into TTree branches.
bool addVariable (std::shared_ptr< IParticleDecorationBranch > branch)
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.

Private Types

using evt_t = EventIDBase::event_number_t

Private Member Functions

void initMessaging () const
 Initialize our message level and MessageSvc.

Private Attributes

MuonTesterTree & m_parent
std::string m_name {}
bool m_init {false}
bool m_updated {false}
VectorBranch< float > m_pt {m_parent.tree(), m_name +"_pt"}
VectorBranch< float > m_eta {m_parent.tree(), m_name + "_eta"}
VectorBranch< float > m_phi {m_parent.tree(), m_name + "_phi"}
VectorBranch< float > m_e {m_parent.tree(), m_name + "_e"}
VectorBranch< int > m_q {m_parent.tree(), m_name+"_q"}
std::vector< std::shared_ptr< IParticleDecorationBranch > > m_variables {}
std::vector< const xAOD::IParticle * > m_cached_particles {}
evt_t m_lastFilled {std::numeric_limits<evt_t>::max()}
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

Helper class to easily to add xAOD::IParticles and associated decorator variables to the MuonTesterTree.

The branch saves, the particle 4-momentum (E,Pt, Eta, Phi). Energy and Pt are saved in units of GeV. Extra information decorated to the particle can also easily appended to the tree output.

Potential setup:
auto part_br = std::make_shared<IParticleFourMomBranch>(m_testerTree, "TheCakeIsALie"); /// Adds a branch ptcone30 and fetches the infromation from ptcone30 part_br->addVariable<float>("ptcone30"); /// Adds a branch caloIso and fetches the information from etcone20 part_br->addVariable<float>("caloIso", "etcone20");

m_testerTree.addBranch(part_br); Then fill the branches: for (const xAOD::IParticle* part : *container) { part_br->push_back(part); }

Definition at line 34 of file IParticleFourMomBranch.h.

Member Typedef Documentation

◆ DataDependency

◆ evt_t

using MuonVal::IParticleFourMomBranch::evt_t = EventIDBase::event_number_t
private

Definition at line 142 of file IParticleFourMomBranch.h.

Constructor & Destructor Documentation

◆ IParticleFourMomBranch()

MuonVal::IParticleFourMomBranch::IParticleFourMomBranch ( MuonTesterTree & tree,
const std::string & particle )

Construct an IParticleFourMomBranch.

Parameters
treeInstance of the parental MuonTesterTree to which the IParticleFourMom branch is added
particleName of the IParticleFourMomBranch inside the TTree

Definition at line 16 of file IParticleFourMomBranch.cxx.

17 :
18 AthMessaging{std::format("IParticle {:}", particle)},
AthMessaging(IMessageSvc *msgSvc, const std::string &name)
Constructor.
const TTree * tree() const override
Return the underyling TTree pointer.
constexpr ParticleHypothesis particle[PARTICLEHYPOTHESES]
the array of masses

Member Function Documentation

◆ addVariable() [1/3]

template<typename T>
bool MuonVal::IParticleFourMomBranch::addVariable ( const std::string & variable,
std::string_view accName = "" )

Writes a variable of type <T> which can be directly accessed via an SG::AuxElement e.g.

SG::Accessor<float> acc_ptCone30{"pt_cone30"}; const float ptCone30 = acc_ptCone30(*partPtr); to the TTree. If the variable is not available the filling of the TTree fails

Parameters
variableName of the branch in the output tree
accNameName of the accessor to obtain the information. If left empty, it's assumed that the accesor is the same as the variable name

◆ addVariable() [2/3]

bool MuonVal::IParticleFourMomBranch::addVariable ( std::shared_ptr< IParticleDecorationBranch > branch)

Definition at line 144 of file IParticleFourMomBranch.cxx.

144 {
145 if (initialized()) {
146 ATH_MSG_ERROR("The branch is already initialized. Cannot add more branches");
147 return false;
148 } else if (!branch) {
149 ATH_MSG_ERROR("Nullptr is given.");
150 return false;
151 }
152
153 auto itr = std::find_if(m_variables.begin(), m_variables.end(),
154 [&branch](const std::shared_ptr<IParticleDecorationBranch>& known) {
155 return known == branch || known->name() == branch->name();
156 });
157 if (itr != m_variables.end()) {
158 if (typeid((*itr).get()) != typeid(branch.get())) {
159 ATH_MSG_ERROR("Different branches have been added here under "<<branch->name()<<".");
160 return false;
161 }
162 return true;
163 }
164 m_variables.push_back(branch);
165 return m_parent.registerBranch(branch);
166 }
#define ATH_MSG_ERROR(x,...)
bool initialized() const
Has the init method been called.
std::vector< std::shared_ptr< IParticleDecorationBranch > > m_variables

◆ addVariable() [3/3]

template<typename T>
bool MuonVal::IParticleFourMomBranch::addVariable ( T defaultValue,
const std::string & variable,
std::string_view accName = "" )

Write a variable of type <T> to the TTree.

If the information is not decorated to the particle a default value is used

Parameters
defValueDefault value to use as a backup option
variableName of the branch in the output tree
accNameName of the accessor to obtain the information. If left empty, it's assumed that the accesor is the same as the variable name

◆ addVariableGeV() [1/2]

template<typename T>
bool MuonVal::IParticleFourMomBranch::addVariableGeV ( const std::string & variable,
const std::string & accName = "" )

Write a variable of type <T> to the TTree, but divide it by 1k before dumping.

Useful for the conversion from MeV to GeV

Parameters
variableName of the branch in the output tree
accNameName of the accessor to obtain the information. If left empty, it's assumed that the accesor is the same as the variable name

◆ addVariableGeV() [2/2]

template<typename T>
bool MuonVal::IParticleFourMomBranch::addVariableGeV ( T defaultValue,
const std::string & variable,
const std::string & accName = "" )

Write a variable of type <T> to the TTree, but divide it by 1k before dumping.

Useful for the conversion from MeV to GeV

Parameters
defValueDefault value to use as a backup option
variableName of the branch in the output tree
accNameName of the accessor to obtain the information. If left empty, it's assumed that the accesor is the same as the variable name

◆ data_dependencies()

std::vector< IParticleFourMomBranch::DataDependency > MuonVal::IParticleFourMomBranch::data_dependencies ( )
overridevirtual

Returns a list of all Read(Coond)HandleKeys needed by the branch.

Implements MuonVal::IMuonTesterBranch.

Definition at line 167 of file IParticleFourMomBranch.cxx.

167 {
168 std::vector<DataDependency> to_ret{};
169 for (const std::shared_ptr<IParticleDecorationBranch>& br : m_variables) {
170 std::vector<DataDependency> childDep{br->data_dependencies()};
171 to_ret.insert(to_ret.end(),childDep.begin(), childDep.end());
172 }
173 return to_ret;
174 }

◆ fill()

bool MuonVal::IParticleFourMomBranch::fill ( const EventContext & ctx)
overridevirtual

Fill the branch.

Implements MuonVal::IMuonTesterBranch.

Definition at line 99 of file IParticleFourMomBranch.cxx.

99 {
100 if (!m_updated) {
101 m_cached_particles.clear();
102 }
103 if (!m_pt.fill(ctx) || !m_eta.fill(ctx) || !m_phi.fill(ctx) || !m_e.fill(ctx) || !m_q.fill(ctx)){
104 return false;
105 }
106 for (const auto& var : m_variables) {
107 if (!var->fill(ctx)) {
108 return false;
109 }
110 }
111 m_init = true;
112 m_updated = false;
113 m_lastFilled = ctx.eventID().event_number();
114 return true;
115 }
std::vector< const xAOD::IParticle * > m_cached_particles

◆ find() [1/3]

size_t MuonVal::IParticleFourMomBranch::find ( const xAOD::IParticle & p) const

Returns the position at which the particle has already be inserted in the chain – If the particle is not present then the size is returned – In cases of nullptr -1 is returned.

Definition at line 75 of file IParticleFourMomBranch.cxx.

75 {
76 return find(&p);
77 }
size_t find(const xAOD::IParticle &p) const
Returns the position at which the particle has already be inserted in the chain – If the particle is ...

◆ find() [2/3]

size_t MuonVal::IParticleFourMomBranch::find ( const xAOD::IParticle * p) const

Definition at line 78 of file IParticleFourMomBranch.cxx.

78 {
79 if (!p) {
80 return dummyIdx;
81 }
82 return find([p](const xAOD::IParticle* cached) {
83 return p == cached;
84 });
85 }
cached(func)
Decorator to cache function return value.
Definition cached.py:6

◆ find() [3/3]

size_t MuonVal::IParticleFourMomBranch::find ( std::function< bool(const xAOD::IParticle *)> func) const

Find the first particle satisfying the selection criteria given by the client.

If none of the particle is actually matching the current size of the branch is returned

Definition at line 86 of file IParticleFourMomBranch.cxx.

86 {
87 if (!m_updated) {
88 return dummyIdx;
89 }
90 size_t j{0};
91 for (const xAOD::IParticle* p : m_cached_particles) {
92 if (func(p)) {
93 return j;
94 }
95 ++j;
96 }
97 return dummyIdx;
98 }
float j(const xAOD::IParticle &, const xAOD::TrackMeasurementValidation &hit, const Eigen::Matrix3d &jab_inv)

◆ getBranch()

template<typename T>
std::shared_ptr< ParticleVariableBranch< T > > MuonVal::IParticleFourMomBranch::getBranch ( const std::string & var) const

Returns the point to the underlying ParticleVariableBranch translating the IParticle Accessors into TTree branches.

Parameters
variableName of the branch as parsed in addVariable(GeV)

◆ getCached()

std::span< const xAOD::IParticle *const > MuonVal::IParticleFourMomBranch::getCached ( const EventContext & ctx)

Returns the list of currently cached particles.

Definition at line 25 of file IParticleFourMomBranch.cxx.

25 {
26 /* Reset the particles from the previous event*/
27 if (!m_updated && ctx.eventID().event_number() != m_lastFilled) {
28 m_cached_particles.clear();
29 }
30 return m_cached_particles;
31 }

◆ getTree()

MuonTesterTree & MuonVal::IParticleFourMomBranch::getTree ( )

Access to the MuonTrestTree parent.

Definition at line 22 of file IParticleFourMomBranch.cxx.

22 {
23 return m_parent;
24 }

◆ init()

bool MuonVal::IParticleFourMomBranch::init ( )
overridevirtual

Initialize the branches and all children.

Implements MuonVal::IMuonTesterBranch.

Definition at line 119 of file IParticleFourMomBranch.cxx.

119 {
120 if (initialized()) {
121 return true;
122 }
123
124 if (!m_pt.init() || !m_eta.init() || !m_phi.init() || !m_e.init() || !m_q.init()) {
125 return false;
126 }
127 std::vector<IMuonTesterBranch*> branchesToInit{};
128 for (auto& v : m_variables) {
129 branchesToInit.push_back(v.get());
130 }
131 std::sort(branchesToInit.begin(), branchesToInit.end(),
132 [](IMuonTesterBranch* a, IMuonTesterBranch* b) {
133 return a->name() < b->name();
134 });
135 for (auto& br : branchesToInit) {
136 if (!br->init()) {
137 ATH_MSG_ERROR("Failed to initialize "<<br->name());
138 return false;
139 }
140 }
141 return true;
142 }
static Double_t a
void sort(typename DataModel_detail::iterator< DVL > beg, typename DataModel_detail::iterator< DVL > end)
Specialization of sort for DataVector/List.

◆ initialized()

bool MuonVal::IParticleFourMomBranch::initialized ( ) const

Has the init method been called.

Definition at line 116 of file IParticleFourMomBranch.cxx.

116 {
117 return m_init;
118 }

◆ 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)
int outputLevel(const IMessageSvc *ims, const std::string &source)

◆ 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 167 of file AthMessaging.h.

168{
169 MsgStream* ms = m_msg_tls.get();
170 if (!ms) {
171 if (!m_initialized.test_and_set()) initMessaging();
172 ms = new MsgStream(m_imsg,m_nm);
173 m_msg_tls.reset( ms );
174 }
175
176 ms->setLevel (m_lvl);
177 return *ms;
178}
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 182 of file AthMessaging.h.

183{ 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
lvlThe message level to test against
Returns
boolean Indicating if messages at given level will be printed
Return values
trueMessages at level "lvl" will be printed

Definition at line 151 of file AthMessaging.h.

152{
153 // If user did not set explicit message level we have to initialize
154 // the messaging and retrieve the default via the MessageSvc.
155 if (m_lvl==MSG::NIL && !m_initialized.test_and_set()) initMessaging();
156
157 if (m_lvl <= lvl) {
158 msg() << lvl;
159 return true;
160 } else {
161 return false;
162 }
163}

◆ name()

std::string MuonVal::IParticleFourMomBranch::name ( ) const
overridevirtual

Name of the four momentum branch.

Implements MuonVal::IMuonTesterBranch.

Definition at line 34 of file IParticleFourMomBranch.cxx.

34{ return m_name; }

◆ operator+=() [1/2]

void MuonVal::IParticleFourMomBranch::operator+= ( const xAOD::IParticle & p)
overridevirtual

Implements MuonVal::IParticleDecorationBranch.

Definition at line 38 of file IParticleFourMomBranch.cxx.

38{push_back(p); }
void push_back(const xAOD::IParticle *p) override
Similar to the IAuxElementDecoration branch but only accepting IParticles.

◆ operator+=() [2/2]

void MuonVal::IParticleFourMomBranch::operator+= ( const xAOD::IParticle * p)
overridevirtual

Implements MuonVal::IParticleDecorationBranch.

Definition at line 37 of file IParticleFourMomBranch.cxx.

37{push_back(p); }

◆ push_back() [1/2]

void MuonVal::IParticleFourMomBranch::push_back ( const xAOD::IParticle & p)
overridevirtual

Implements MuonVal::IParticleDecorationBranch.

Definition at line 39 of file IParticleFourMomBranch.cxx.

39{ push_back(&p); }

◆ push_back() [2/2]

void MuonVal::IParticleFourMomBranch::push_back ( const xAOD::IParticle * p)
overridevirtual

Similar to the IAuxElementDecoration branch but only accepting IParticles.

Avoid that the particle is added twice to the tree

Implements MuonVal::IParticleDecorationBranch.

Definition at line 40 of file IParticleFourMomBranch.cxx.

40 {
41 if (!m_updated) {
42 m_cached_particles.clear();
43 m_updated = true;
44 }
46 if (!p || find(p) < size()){
47 if (p) {
48 ATH_MSG_VERBOSE("Rejected particle ("<<p<<") "<<p->pt()<<", "<<p->eta()
49 <<", "<<p->phi()<<". Size: "<<size());
50 }
51 return;
52 }
53
54 m_cached_particles.push_back(p);
55 m_pt.push_back(p->pt() * MeVtoGeV);
56 m_eta.push_back(p->eta());
57 m_phi.push_back(p->phi());
58 m_e.push_back(p->e() * MeVtoGeV);
59 int q{0};
60 if (acc_charge.isAvailable(*p)) {
61 q = acc_charge(*p);
62 } else if (p->type() == xAOD::Type::ObjectType::TrackParticle){
63 q = static_cast<const xAOD::TrackParticle*>(p)->charge();
64 } else if (p->type() == xAOD::Type::ObjectType::TruthParticle) {
65 q = static_cast<const xAOD::TruthParticle*>(p)->charge();
66 }
67 ATH_MSG_VERBOSE("New particle ("<<p<<") "<<p->pt()<<", "<<p->eta()<<", "<<p->phi()<<", q: "<<q<<". Size: "<<size());
68
69 m_q.push_back(q);
70 for (const auto& var : m_variables) {
71 var->push_back(p);
72 }
73 }
#define ATH_MSG_VERBOSE(x,...)
double charge(const T &p)
Definition AtlasPID.h:1003
size_t size() const
How many particles have been pushed back already.
@ TrackParticle
The object is a charged track particle.
Definition ObjectType.h:43
@ TruthParticle
The object is a truth particle.
Definition ObjectType.h:67
TrackParticle_v1 TrackParticle
Reference the current persistent version:
TruthParticle_v1 TruthParticle
Typedef to implementation.

◆ 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}

◆ size()

size_t MuonVal::IParticleFourMomBranch::size ( ) const

How many particles have been pushed back already.

Definition at line 33 of file IParticleFourMomBranch.cxx.

33{ return m_updated ? m_cached_particles.size() : 0; }

◆ tree() [1/2]

const TTree * MuonVal::IParticleFourMomBranch::tree ( ) const
overridevirtual

Return the underyling TTree pointer.

Implements MuonVal::IMuonTesterBranch.

Definition at line 35 of file IParticleFourMomBranch.cxx.

35{ return m_pt.tree(); }

◆ tree() [2/2]

TTree * MuonVal::IParticleFourMomBranch::tree ( )
overridevirtual

Returns the pointer to the underlying TTree object.

Implements MuonVal::IMuonTesterBranch.

Definition at line 36 of file IParticleFourMomBranch.cxx.

36{ return m_pt.tree(); }

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_cached_particles

std::vector<const xAOD::IParticle*> MuonVal::IParticleFourMomBranch::m_cached_particles {}
private

Definition at line 140 of file IParticleFourMomBranch.h.

140{};

◆ m_e

VectorBranch<float> MuonVal::IParticleFourMomBranch::m_e {m_parent.tree(), m_name + "_e"}
private

Definition at line 136 of file IParticleFourMomBranch.h.

136{m_parent.tree(), m_name + "_e"};

◆ m_eta

VectorBranch<float> MuonVal::IParticleFourMomBranch::m_eta {m_parent.tree(), m_name + "_eta"}
private

Definition at line 134 of file IParticleFourMomBranch.h.

134{m_parent.tree(), m_name + "_eta"};

◆ m_imsg

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

MessageSvc pointer.

Definition at line 135 of file AthMessaging.h.

135{ nullptr };

◆ m_init

bool MuonVal::IParticleFourMomBranch::m_init {false}
private

Definition at line 131 of file IParticleFourMomBranch.h.

131{false};

◆ m_lastFilled

evt_t MuonVal::IParticleFourMomBranch::m_lastFilled {std::numeric_limits<evt_t>::max()}
private

Definition at line 143 of file IParticleFourMomBranch.h.

143{std::numeric_limits<evt_t>::max()};

◆ 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_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::IParticleFourMomBranch::m_name {}
private

Definition at line 130 of file IParticleFourMomBranch.h.

130{};

◆ m_nm

std::string AthMessaging::m_nm
privateinherited

Message source name.

Definition at line 129 of file AthMessaging.h.

◆ m_parent

MuonTesterTree& MuonVal::IParticleFourMomBranch::m_parent
private

Definition at line 129 of file IParticleFourMomBranch.h.

◆ m_phi

VectorBranch<float> MuonVal::IParticleFourMomBranch::m_phi {m_parent.tree(), m_name + "_phi"}
private

Definition at line 135 of file IParticleFourMomBranch.h.

135{m_parent.tree(), m_name + "_phi"};

◆ m_pt

VectorBranch<float> MuonVal::IParticleFourMomBranch::m_pt {m_parent.tree(), m_name +"_pt"}
private

Definition at line 133 of file IParticleFourMomBranch.h.

133{m_parent.tree(), m_name +"_pt"};

◆ m_q

VectorBranch<int> MuonVal::IParticleFourMomBranch::m_q {m_parent.tree(), m_name+"_q"}
private

Definition at line 137 of file IParticleFourMomBranch.h.

137{m_parent.tree(), m_name+"_q"};

◆ m_updated

bool MuonVal::IParticleFourMomBranch::m_updated {false}
private

Definition at line 132 of file IParticleFourMomBranch.h.

132{false};

◆ m_variables

std::vector<std::shared_ptr<IParticleDecorationBranch> > MuonVal::IParticleFourMomBranch::m_variables {}
private

Definition at line 139 of file IParticleFourMomBranch.h.

139{};

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