7#ifndef XAODMISSINGET_VERSIONS_MISSINGETASSOCIATION_v1_H
8#define XAODMISSINGET_VERSIONS_MISSINGETASSOCIATION_v1_H
103 bool addObject(
const IParticle* pPart,
const std::vector<const IParticle*>& constlist);
110 const std::vector<float>&
calpx()
const;
112 float calpx(
size_t keyIdx)
const;
114 bool setCalPx(
const std::vector<float>& calpxvec);
117 const std::vector<float>&
calpy()
const;
118 float calpy(
size_t keyIdx)
const;
120 bool setCalPy(
const std::vector<float>& calpyvec);
123 const std::vector<float>&
calpz()
const;
124 float calpz(
size_t keyIdx)
const;
126 bool setCalPz(
const std::vector<float>& calpzvec);
129 const std::vector<float>&
cale()
const;
130 float cale(
size_t keyIdx)
const;
132 bool setCalE(
const std::vector<float>& calevec);
136 float calsumpt(
size_t keyIdx)
const;
138 bool setCalSumpt(
const std::vector<float>& calsumptvec);
141 const std::vector<MissingETBase::Types::bitmask_t>&
calkey()
const;
144 bool setCalKey(
const std::vector<MissingETBase::Types::bitmask_t>& calkeyvec);
155 const std::vector<float>&
trkpx()
const;
156 float trkpx(
size_t keyIdx)
const;
158 bool setTrkPx(
const std::vector<float>& trkpxvec);
161 const std::vector<float>&
trkpy()
const;
162 float trkpy(
size_t keyIdx)
const;
164 bool setTrkPy(
const std::vector<float>& trkpyvec);
167 const std::vector<float>&
trkpz()
const;
168 float trkpz(
size_t keyIdx)
const;
170 bool setTrkPz(
const std::vector<float>& trkpzvec);
173 const std::vector<float>&
trke()
const;
174 float trke(
size_t keyIdx)
const;
176 bool setTrkE(
const std::vector<float>& trkevec);
180 float trksumpt(
size_t keyIdx)
const;
182 bool setTrkSumpt(
const std::vector<float>& trksumptvec);
185 const std::vector<MissingETBase::Types::bitmask_t>&
trkkey()
const;
188 bool setTrkKey(
const std::vector<MissingETBase::Types::bitmask_t>& trkkeyvec);
211 void setJetTrkVec(
float px,
float py,
float pz,
float ce,
float sumpt);
225 std::vector<unsigned char>
overlapTypes(
size_t objIdx)
const;
229 const std::vector<std::vector<unsigned char> >&
overlapTypes);
257 std::vector<const IParticle*>
objects()
const;
258 std::vector<const IParticle*>
objects(std::vector<ConstVec>& calVecs,std::vector<ConstVec>& trkVecs)
const;
259 std::vector<const IParticle*>
objects(
const std::vector<float>*& calpxPtr,
260 const std::vector<float>*& calpyPtr,
261 const std::vector<float>*& calpzPtr,
262 const std::vector<float>*& calePtr,
263 const std::vector<float>*& calsumptPtr,
264 const std::vector<float>*& trkpxPtr,
265 const std::vector<float>*& trkpyPtr,
266 const std::vector<float>*& trkpzPtr,
267 const std::vector<float>*& trkePtr,
268 const std::vector<float>*& trksumptPtr)
const;
373 std::vector<MissingETBase::Types::bitmask_t>&
f_calkey();
380 std::vector<MissingETBase::Types::bitmask_t>&
f_trkkey();
413 template<
class POBJ,
class LINK>
void f_setObject(
const POBJ* pObj,LINK& elemLink);
Base class for elements of a container that can have aux data.
MissingETBase::Types::constvec_t operator*(const MissingETBase::Types::constvec_t &cvec, float scale)
Scale constituent vector by multiplication.
MissingETBase::Types::constvec_t operator-(const MissingETBase::Types::constvec_t &v0, const MissingETBase::Types::constvec_t &v2)
Subtract constituent vectors.
MissingETBase::Types::constvec_t operator/(const MissingETBase::Types::constvec_t &cvec, float scale)
Scale constituent vector by division.
MissingETBase::Types::constvec_t operator+(const MissingETBase::Types::constvec_t &v0, const MissingETBase::Types::constvec_t &v2)
Add constituent vectors.
Base class for elements of a container that can have aux data.
SG::Accessor< T, ALLOC > Accessor
Class providing the definition of the 4-vector interface.
Vector sum of constituents for subtractive overlap removal.
ConstVec & operator+=(const ConstVec &cvec)
Add another vector.
float ce() const
Returns .
float & cpx()
Returns reference to modifiable data word storing .
void setSumpt(float sumpt)
Set sumpt.
float & sumpt()
Returns reference to modifiable data word storing sum of component pt.
ConstVec(float cpx, float cpy, float cpz, float ce, float sumpt)
Constructor with parameters.
float sumpt() const
Returns sum of component pt.
bool operator==(const ConstVec &cvec) const
Equality comparator.
void setCpx(float px)
Set .
float cpz() const
Returns .
void setCpy(float py)
Set .
float & ce()
Returns reference to modifiable data word storing .
float cpt() const
Returns .
ConstVec & operator-=(const ConstVec &cvec)
Subtract another vector.
bool operator!=(const ConstVec &cvec) const
Inequality operator.
float cpx() const
Returns .
float & cpy()
Returns reference to modifiable data word storing .
float cpy() const
Returns .
void setCpz(float pz)
Set .
ConstVec & operator*=(float scale)
Scale vector by multiplication.
ConstVec()
Default constructor.
~ConstVec()
Data class destructor.
float & cpz()
Returns reference to modifiable data word storing .
ConstVec & operator/=(float scale)
Scale vector by division.
ConstVec(const IParticle &ipar)
Constructor from IParticle.
bool isMisc() const
Check if this association is a miscellaneous association.
const std::vector< float > & cale() const
Get the vector of .
bool setCalSumpt(const std::vector< float > &calsumptvec)
Set the vector of sumpt.
std::vector< float > & f_calpz()
std::map< const IParticle *, ConstVec > overrideMom()
Get override momenta.
bool setOverlaps(const std::vector< std::vector< size_t > > &overlapIndices, const std::vector< std::vector< unsigned char > > &overlapTypes)
Set the vector of overlap indices and types.
const Jet * refJet() const
Access reference jet.
std::vector< float > & f_cale()
const MissingETBase::Types::objlink_vector_t & objectLinks() const
Get the vector of links to the contributing physics or signal objects.
void addOverrideMom(std::map< const IParticle *, ConstVec > &pOverride)
Extend override momentum map.
const std::vector< MissingETBase::Types::bitmask_t > & calkey() const
Get the vector of cal keys.
bool checkUsage(const MissingETAssociationHelper &helper, const IParticle *pSig, MissingETBase::UsageHandler::Policy p) const
Check if this signal object matches the constituents of any flagged contributing objects.
static const SG::AuxElement::Accessor< float > m_acc_jettrke
std::vector< std::vector< ElementLink< IParticleContainer > > > m_objConstLinks
Cache object constituents for overlap-finding.
float jettrkpx() const
Get the vector for a given object referenced by index.
const std::vector< float > & trksumpt() const
Get the vector of .
bool clearTrkVecs()
Reset the track constituent vectors and keys.
void setJetTrkPy(float py)
Set track constituent vector for the reference jet.
size_t size() const
Update all internally used ElementLink instances.
bool setTrkPy(const std::vector< float > &trkpyvec)
Set the vector of .
void setJetTrkE(float e)
Set track constituent vector for the reference jet.
bool f_setLink(LINK &elemLink)
ConstVec trkVec(const IParticle *pPart) const
Get track constituent vector for a given object.
static const SG::AuxElement::Accessor< std::vector< float > > m_acc_trkpz
const std::vector< float > & calsumpt() const
Get the vector of sumpt.
void clearOverlaps()
Clear the vectors of overlap indices.
const std::vector< std::vector< unsigned char > > & overlapTypes() const
Get the list of object overlapTypes.
static const SG::AuxElement::Accessor< std::vector< float > > m_acc_calsumpt
static const SG::AuxElement::Accessor< std::vector< float > > m_acc_calpz
bool setCalE(const std::vector< float > &calevec)
Set the vector of .
bool setRefJet(const Jet *pJet)
Set reference jet by object pointer reference.
const std::vector< float > & calpy() const
Get the vector of .
void setJetTrkPx(float px)
Set track constituent vector for the reference jet.
ConstVec overlapTrkVec(const MissingETAssociationHelper &helper) const
Retrieve total track-based vector to be subtracted from the jet.
std::vector< const IParticle * > objects() const
Access contributing objects.
static const SG::AuxElement::Accessor< float > m_acc_jettrkpz
bool addOverlap(const IParticle *pPart, size_t index, unsigned char type)
Add overlap index for a given contributing object referenced by pointer.
float jettrkpy() const
Get the vector for a given object referenced by pointer.
const std::vector< MissingETBase::Types::bitmask_t > & trkkey() const
Get the vector of trk keys.
std::vector< float > & f_calsumpt()
size_t refJetIndex() const
Access index of reference jet in its container.
bool addTrkVec(MissingETBase::Types::bitmask_t key, float trkpx, float trkpy, float trkpz, float ce, float sumpt)
Add a key/vector pair for calo contributions.
MissingETBase::Types::objlink_vector_t & f_objectLinks()
Non-const link reference.
const std::vector< float > & trkpy() const
Get the vector of .
bool setOverlaps(const IParticle *pPart, const std::vector< size_t > &overlapIndices, const std::vector< unsigned char > &overlapTypes)
Set overlap indices and types for a given contributing object referenced by pointer.
std::vector< unsigned char > overlapTypes(const IParticle *pPart) const
Get the overlap types for a given object referenced by pointer.
void setOverrideMom(const std::map< const IParticle *, ConstVec > &pOverride)
Set override momenta.
const JetContainer * refJetContainer() const
Access reference jet container holding reference jet.
static const SG::AuxElement::Accessor< std::vector< float > > m_acc_trksumpt
bool setTrkPx(const std::vector< float > &trkpxvec)
Set the vector of .
xAOD::JetFourMom_t getAlternateConstVec() const
bool hasAlternateConstVec() const
size_t findTrkIndex(MissingETBase::Types::bitmask_t mask) const
bool hasOverlaps(const MissingETAssociationHelper &helper, size_t objIdx, MissingETBase::UsageHandler::Policy p=MissingETBase::UsageHandler::OnlyCluster) const
Check if any selected particles overlap this one.
ConstVec overlapCalVec(const MissingETAssociationHelper &helper) const
Retrieve total cluster-based vector to be subtracted from the jet.
bool setJetLink(const MissingETBase::Types::jetlink_t &jetLnk)
Set the link to the reference jet.
bool resetContrib(const IParticle *pPart)
Reset the contribution parameters of an object referenced by a pointer.
bool removeContrib()
Remove all contributions.
bool setObjectLinks(const MissingETBase::Types::objlink_vector_t &objLnks)
Set the vector of links to the contributing physics or signal objects.
const std::vector< float > & trkpz() const
Get the vector of .
bool containsSignal(const IParticle *pSig) const
Check if this signal object matches the constituents of any contributing objects.
static const SG::AuxElement::Accessor< float > m_acc_jettrkpx
bool removeContrib(const IParticle *pPart)
Remove a contribution referenced by an object pointer.
void setJetTrkPz(float pz)
Set track constituent vector for the reference jet.
std::vector< std::vector< size_t > > & f_overlapIndices()
record overlapIndices between constributing objects
void copyData(const MissingETAssociation_v1 &assocDescr)
std::vector< float > & f_trkpz()
bool setCalPx(const std::vector< float > &calpxvec)
Set the vector of .
static const SG::AuxElement::Accessor< std::vector< float > > m_acc_calpy
void setJetTrkSumpt(float sumpt)
Set track constituent vector for the reference jet.
virtual ~MissingETAssociation_v1()
Assignment operator.
std::map< const IParticle *, ConstVec > m_override
std::vector< float > & f_trkpx()
const std::vector< float > & trke() const
Get the vector of .
bool addObject(const IParticle *pPart, const std::vector< const IParticle * > &constlist)
Add object (particle) from pointer reference with individual constituent vectors.
const MissingETBase::Types::jetlink_t & jetLink() const
Get the link to the reference jet.
bool setTrkE(const std::vector< float > &trkevec)
Set the vector of .
std::vector< size_t > overlapIndices(const IParticle *pPart) const
Get the overlap indices for a given object referenced by pointer.
static const SG::AuxElement::Accessor< std::vector< float > > m_acc_trke
static const SG::AuxElement::Accessor< std::vector< float > > m_acc_trkpy
ConstVec jetTrkVec() const
Get track constituent vector for the reference jet.
static const SG::AuxElement::Accessor< std::vector< float > > m_acc_trkpx
bool clearCalVecs()
Reset the calo constituent vectors and keys.
std::vector< MissingETBase::Types::bitmask_t > & f_calkey()
bool setCalVec(size_t keyIdx, const ConstVec &cvec=ConstVec())
Set the calo constituent vector of an object contribution referenced by index.
std::vector< float > & f_trkpy()
static const SG::AuxElement::Accessor< float > m_acc_jettrksumpt
const std::vector< float > & calpz() const
Get the vector of .
bool containsPhysics(const IParticle *pPhys) const
Check if this physics object matches any contributing objects.
bool identifyOverlaps()
Loop over contributing objects to identify those that share constituents.
std::vector< float > & f_trksumpt()
bool f_removeContrib(size_t objIdx)
Copy the contribution data from a source.
bool empty() const
Empty list of contributing objects indicator.
void f_setObject(const POBJ *pObj, LINK &elemLink)
Generalized link manager.
static const SG::AuxElement::Accessor< std::vector< float > > m_acc_cale
bool operator!=(const MissingETAssociation_v1 &contrib) const
Equality.
size_t findCalIndex(MissingETBase::Types::bitmask_t mask) const
MissingETAssociation_v1 & operator=(const MissingETAssociation_v1 &assocDescr)
bool identifyOverlaps(const IParticle *pPart)
Search association for particles that share constituents with this one.
std::vector< std::vector< unsigned char > > & f_overlapTypes()
record overlapTypes between constributing objects
bool setTrkPz(const std::vector< float > &trkpzvec)
Set the vector of .
void createPrivateStore()
Function initialising the object to work in standalone mode.
float jettrkpz() const
Get the vector for a given object referenced by pointer.
static const SG::AuxElement::Accessor< std::vector< float > > m_acc_calpx
float jettrksumpt() const
Get the sumpt for a given object referenced by index.
const std::vector< float > & trkpx() const
Get the vector of .
bool setCalPz(const std::vector< float > &calpzvec)
Set the vector of .
float calpx(const IParticle *pPart) const
Get the vector for a given object referenced by pointer.
bool setCalKey(const std::vector< MissingETBase::Types::bitmask_t > &calkeyvec)
Set the vector of keys.
bool resetContrib()
Reset all contribution parameters.
bool operator==(const MissingETAssociation_v1 &contrib) const
bool addCalVec(MissingETBase::Types::bitmask_t key, float calpx, float calpy, float calpz, float cale, float sumpt)
Add a key/vector pair for calo contributions.
bool removeContrib(size_t objIdx)
Remove a contribution referenced by an index.
std::vector< float > & f_calpy()
bool setTrkKey(const std::vector< MissingETBase::Types::bitmask_t > &trkkeyvec)
Set the vector of keys.
size_t findIndex(const IParticle *pPart) const
Find index of given object in contributing object store.
float jettrke() const
Get the vector for a given object referenced by index.
void setJetTrkVec(const ConstVec &cvec=ConstVec())
Set the track constituent vector for the reference jet.
const std::vector< float > & calpx() const
Get the vector of .
std::vector< float > & f_calpx()
MissingETBase::Types::jetlink_t & f_jetLink()
Non-const link reference.
void initCache()
initialise cache for overlap removal decisions
bool setCalPy(const std::vector< float > &calpyvec)
Set the vector of .
static bool testPolicy(const xAOD::IParticle &part, MissingETBase::UsageHandler::Policy p)
std::vector< MissingETBase::Types::bitmask_t > & f_trkkey()
const std::vector< std::vector< size_t > > & overlapIndices() const
Get the list of object overlapIndices.
ConstVec calVec(const IParticle *pPart) const
Get calo constituent vector for a given object.
MissingETAssociation_v1(bool createStore=false)
Default constructor.
bool setTrkSumpt(const std::vector< float > &trksumptvec)
Set the vector of .
bool hasOverlaps(const MissingETAssociationHelper &helper, const IParticle *pPart, MissingETBase::UsageHandler::Policy p=MissingETBase::UsageHandler::OnlyCluster) const
Check if any selected particles overlap this one.
bool setTrkVec(size_t keyIdx, const ConstVec &cvec=ConstVec())
Set the track constituent vector of an object contribution referenced by index.
static const SG::AuxElement::Accessor< float > m_acc_jettrkpy
std::vector< float > & f_trke()
Namespace for generally used type definitions.
xAOD::MissingETAssociation_v1::ConstVec constvec_t
Type for constituent vector.
uint64_t bitmask_t
Type for status word bit mask.
std::vector< constvec_t > constvec_vector_t
Vector type for constituent vector containers.
ElementLink< xAOD::JetContainer > jetlink_t
Link to Jet object.
std::vector< objlink_t > objlink_vector_t
Vector of object links type.
Policy
Policies on usage checks.
@ OnlyCluster
CaloCluster based only.
General namespace for MET EDM software.
ObjectType
Type of objects that have a representation in the xAOD EDM.
ICaloAffectedTool is abstract interface for tools checking if 4 mom is in calo affected region.
Jet_v1 Jet
Definition of the current "jet version".
JetContainer_v1 JetContainer
Definition of the current "jet container version".
ROOT::Math::LorentzVector< ROOT::Math::PtEtaPhiM4D< double > > JetFourMom_t
Base 4 Momentum type for Jet.