32 if(
this == &rhs)
return *
this;
94 acc(*
this) |= 1<<
static_cast<unsigned int>(
author);
99 return (
acc(*
this)& (1<<
static_cast<unsigned int>(
author)));
107 if (
acc->isAvailable(*
this)) {
108 value = (*acc)( *this );
122 ( *acc )( *this ) = value;
129 if (!el.isValid())
return false;
130 return (*el)->summaryValue(value,information);
135 return ( *
acc )( *this );
140 return ( *
acc )( *this );
145 if( !
acc.isAvailable( *
this ) ) {
150 value =
acc( *
this );
169 if( !
acc || !
acc->isAvailable( *
this ) ) {
174 value = ( *acc )( *this );
187 throw std::runtime_error(
"Muon_v1::setParameter - no float accessor for paramdef number: "
188 +std::to_string(information));
191 ( *acc )( *this ) = value;
196 if( !
acc || !
acc->isAvailable( *
this ) ) {
201 value = ( *acc )( *this );
214 throw std::runtime_error(
"Muon_v1::setParameter - no int accessor for paramdef number: "+std::to_string(information));
217 ( *acc )( *this ) = value;
223 return static_cast<Quality
>(temp&3);
229 acc( *
this ) =
acc( *
this ) & ~(0x7);
230 acc( *
this ) |= temp;
244 if (value)
acc( *
this ) |= 8;
245 else acc( *
this ) &= 247;
257 if( !
acc || !
acc->isAvailable( *
this) ){
262 value = ( *acc )( *this );
275 throw std::runtime_error(
"Unknown/Unavailable Isolation type requested" );
278 ( *acc )( *this ) = value;
285 if( !
acc.isAvailable( *
this) )
return false;
287 value =
acc( *
this );
295 if( !
acc.isAvailable( *
this) )
throw std::runtime_error(
"Unknown/Unavailable Isolation correction requested" );
303 acc( *
this ) = value;
309 if( !
acc.isAvailable( *
this) )
return false;
311 value =
acc( *
this );
318 if( !
acc.isAvailable( *
this) )
throw std::runtime_error(
"Unknown/Unavailable Isolation correction requested" );
325 acc( *
this ) = value;
331 if( !
acc.isAvailable( *
this) )
return false;
333 value = std::bitset<32>(
acc( *
this ));
339 if( !
acc.isAvailable( *
this) )
throw std::runtime_error(
"Unknown/Unavailable Isolation BitSet requested" );
340 return std::bitset<32>(
acc( *
this ) );
346 acc( *
this ) = value;
360 case SiliconAssociatedForwardMuon :
367 case MuonStandAlone :
373 if ( acc1.isAvailable( *
this ) && acc1( *this ).isValid() ) {
374 return acc1( *
this );
378 if ( acc2.isAvailable( *
this ) && acc2( *this ).isValid() ) {
379 return acc2( *
this );
383 if ( acc3.isAvailable( *
this ) && acc3( *this ).isValid()) {
384 return acc3( *
this );
387 throw std::runtime_error(
"Type is MuonStandAlone but no available link to return!");
390 throw std::runtime_error(
"Unknown primary type - not sure which track particle to return!");
401 case SiliconAssociatedForwardMuon :
404 if( !
acc.isAvailable( *
this ) )
return nullptr;
407 if( ! link.
isValid() )
return nullptr;
415 if( !
acc.isAvailable( *
this ) )
return nullptr;
418 if( ! link.
isValid() )
return nullptr;
422 case MuonStandAlone :
426 if ( acc1.isAvailable( *
this ) ) {
428 if ( link.
isValid() )
return *link;
433 if ( acc2.isAvailable( *
this ) ) {
435 if ( link.
isValid() )
return *link;
440 if ( acc3.isAvailable( *
this ) ) {
442 if ( link.
isValid() )
return *link;
460 case CombinedTrackParticle :
463 case InnerDetectorTrackParticle :
466 case MuonSpectrometerTrackParticle :
469 case ExtrapolatedMuonSpectrometerTrackParticle :
472 case MSOnlyExtrapolatedMuonSpectrometerTrackParticle :
476 throw std::runtime_error(
"Unknown TrackParticleType - not sure which track particle to return!");
490 if( ! el.isValid() ) {
503 case InnerDetectorTrackParticle :
507 case MuonSpectrometerTrackParticle :
511 case CombinedTrackParticle :
515 case ExtrapolatedMuonSpectrometerTrackParticle :
519 case MSOnlyExtrapolatedMuonSpectrometerTrackParticle :
525 throw std::runtime_error(
"Unknown or Primary TrackParticleType - not sure which track particle to set!");
533 if( !
acc.isAvailable( *
this ) ) {
544 if( ! el.isValid() ) {
582 if( ! el.isValid() ) {
Scalar eta() const
pseudorapidity method
#define AUXSTORE_PRIMITIVE_GETTER_WITH_CAST(CL, PERSTYPE, TRANSTYPE, NAME)
Macro creating a getter function with a type conversion.
#define AUXSTORE_PRIMITIVE_SETTER_WITH_CAST(CL, PERSTYPE, TRANSTYPE, NAME, SETTER)
Macro creating a setter function with a type conversion.
#define AUXSTORE_OBJECT_GETTER(CL, TYPE, NAME)
Macro creating the reader function for a complex auxiliary property.
#define AUXSTORE_PRIMITIVE_SETTER_AND_GETTER(CL, TYPE, NAME, SETTER)
Macro creating the accessors of primitive auxiliary properties.
#define AUXSTORE_OBJECT_SETTER_AND_GETTER(CL, TYPE, NAME, SETTER)
Macro creating the accessors of complex auxiliary properties.
A number of constexpr particle constants to avoid hardcoding them directly in various places.
ElementLink implementation for ROOT usage.
bool isValid() const
Test to see if the link can be dereferenced.
void makePrivateStore()
Create a new (empty) private store for this object.
bool hasStore() const
Return true if this object has an associated store.
SG::Accessor< T, ALLOC > Accessor
const SG::AuxVectorData * container() const
Return the container holding this element.
Exception — Attempt to retrieve nonexistent aux data item.
IParticle & operator=(const IParticle &)=default
SG::Accessor< T, ALLOC > Accessor
const ElementLink< TrackParticleContainer > & combinedTrackParticleLink() const
Returns an ElementLink to the InnerDetector TrackParticle used in identification of this muon.
bool setIsolationCorrectionBitset(uint32_t value, const Iso::IsolationFlavour flavour)
Set method for Isolation corection Bitset.
virtual double eta() const
The pseudorapidity ( ) of the particle.
const ElementLink< MuonSegmentContainer > & muonSegmentLink(size_t i) const
Returns a link to the specified MuonSegment.
Muon_v1()=default
inject the enums
void setPassesIDCuts(bool)
bool summaryValue(uint8_t &value, const SummaryType information) const
Accessor for TrackSummary values (in most cases, retrieved from the 'primary' TrackParticle - though ...
const ElementLink< TrackParticleContainer > & trackParticleLink(TrackParticleType type) const
Returns an ElementLink to the TrackParticle used in identification of this muon.
const ElementLink< TrackParticleContainer > & inDetTrackParticleLink() const
Returns an ElementLink to the InnerDetector TrackParticle used in identification of this muon.
const TrackParticle * primaryTrackParticle() const
Returns a pointer (which should not usually be NULL, but might be if the muon has been stripped of in...
virtual FourMom_t p4() const
The full 4-momentum of the particle.
void setTrackParticleLink(TrackParticleType type, const ElementLink< TrackParticleContainer > &link)
Set method for TrackParticle links.
bool setIsolationCaloCorrection(float value, const Iso::IsolationFlavour flavour, const Iso::IsolationCaloCorrection type, const Iso::IsolationCorrectionParameter param)
set method for Isolation Calo Corrections.
const ElementLink< TrackParticleContainer > & extrapolatedMuonSpectrometerTrackParticleLink() const
Returns an ElementLink to the Extrapolated Muon Spectrometer TrackParticle used in identification of ...
float floatSummaryValue(const SummaryType information) const
Same as bool summaryValue(float& value, const SummaryType &information) const , but without check (wi...
virtual double m() const
The invariant mass of the particle..
bool passesIDCuts() const
MCP ID hit cuts - get/set the corresponding status bit in the quality decoration.
void addAllAuthor(const Author author)
add author to all authors
IParticle::FourMom_t FourMom_t
Definition of the 4-momentum type.
float uint8MuonSummaryValue(const MuonSummaryType information) const
Same as bool summaryValue(uint8_t& value, const MuonSummaryType &information) const,...
const MuonSegment * muonSegment(size_t i) const
Returns a pointer to the specified MuonSegment.
const ElementLink< CaloClusterContainer > & clusterLink() const
Returns an ElementLinkto the cluster associated to this muon.
Quality quality() const
Muon CP quality accessors.
bool isAuthor(const Author author) const
Returns 'true' if 'author' is the an author of this muon.
bool parameter(float &value, const ParamDef parameter) const
Get a parameter for this Muon - momentumBalanceSignificance for example.
virtual double phi() const
The azimuthal angle ( ) of the particle.
uint8_t uint8SummaryValue(const SummaryType information) const
Same as bool summaryValue(uint8_t& value, const SummaryType &information) const, but without check (w...
bool isolationCaloCorrection(float &value, const Iso::IsolationFlavour flavour, const Iso::IsolationCaloCorrection type, const Iso::IsolationCorrectionParameter param) const
Accessor for Isolation Calo correction.
const ElementLink< TrackParticleContainer > & msOnlyExtrapolatedMuonSpectrometerTrackParticleLink() const
Returns an ElementLink to the MS-only Extrapolated Muon Spectrometer TrackParticle used in identifica...
void setParameter(float value, const ParamDef parameter)
Set method for parameter values.
bool isolation(float &value, const Iso::IsolationType information) const
Accessor for Isolation values.
virtual double rapidity() const
The true rapidity (y) of the particle.
Muon_v1 & operator=(const Muon_v1 &rhs)
Assignment operator.
float floatParameter(const ParamDef parameter) const
Same as bool parameter(float& value, const ParamDef ¶meter) const, but without check (will throw ...
bool isolationTrackCorrection(float &value, const Iso::IsolationFlavour flavour, const Iso::IsolationTrackCorrection type) const
Accessor for Isolation Track correction.
virtual double e() const
The total energy of the particle.
GenVecFourMom_t genvecP4() const
The full 4-momentum of the particle : GenVector.
int intParameter(const ParamDef parameter) const
Same as bool parameter(float& value, const ParamDef ¶meter) const, but without check (will throw ...
virtual double pt() const
The transverse momentum ( ) of the particle.
virtual Type::ObjectType type() const
The type of the object as a simple enumeration.
size_t nMuonSegments() const
Number of MuonSegments linked to by this Muon.
ROOT::Math::LorentzVector< ROOT::Math::PtEtaPhiM4D< double > > GenVecFourMom_t
Base 4 Momentum type for Muon.
void setP4(double pt, double eta, double phi)
Set method for IParticle values.
void setIsolation(float value, const Iso::IsolationType information)
Set method for Isolation values.
bool setIsolationTrackCorrection(float value, const Iso::IsolationFlavour flavour, const Iso::IsolationTrackCorrection type)
Set method for Isolation Track Corrections.
bool isolationCorrectionBitset(std::bitset< 32 > &value, const Iso::IsolationFlavour flavour) const
Accessor for Isolation corection Bitset.
MuonType muonType() const
const TrackParticle * trackParticle(TrackParticleType type) const
Returns a pointer (which can be NULL) to the TrackParticle used in identification of this muon.
const ElementLink< TrackParticleContainer > & muonSpectrometerTrackParticleLink() const
Returns an ElementLink to the InnerDetector TrackParticle used in identification of this muon.
const CaloCluster * cluster() const
Retrieve the associated cluster with a bare pointer.
const ElementLink< TrackParticleContainer > & primaryTrackParticleLink() const
void setSummaryValue(uint8_t value, const SummaryType information)
Set method for storing TrackSummary SummaryType information on the Muon (see Aux to see which is alre...
bool summaryValue(uint8_t &value, const SummaryType &information) const
Accessor for TrackSummary values.
constexpr double muonMassInMeV
the mass of the muon (in MeV)
IsolationType
Overall enumeration for isolation types in xAOD files.
IsolationFlavour
Enumeration for different ways of calculating isolation in xAOD files.
IsolationCorrectionParameter
IsolationCaloCorrection
Enumeration for different ways of correcting isolation in xAOD files.
ICaloAffectedTool is abstract interface for tools checking if 4 mom is in calo affected region.
static setEnergyLossType const SG::AuxElement::Accessor< std::vector< ElementLink< MuonSegmentContainer > > > muonSegmentsAcc("muonSegmentLinks")
setStrategy setMatchFlag ElementLink< TrackParticleContainer >
const SG::AuxElement::Accessor< uint32_t > getIsolationCorrectionBitsetAccessor(Iso::IsolationFlavour type)
Returns an accessor for the correction bitset corresponding to this IsolationType.
setRcore setEtHad setFside pt
AUXSTORE_PRIMITIVE_SETTER_WITH_CAST(CompositeParticle_v1, float, double, px, setPx) AUXSTORE_PRIMITIVE_SETTER_WITH_CAST(CompositeParticle_v1
CaloCluster_v1 CaloCluster
Define the latest version of the calorimeter cluster class.
const SG::AuxElement::Accessor< float > * trackSummaryAccessorV1< float >(xAOD::SummaryType type)
const SG::AuxElement::Accessor< uint8_t > * trackSummaryAccessorV1< uint8_t >(xAOD::SummaryType type)
MuonSegmentContainer_v1 MuonSegmentContainer
Definition of the current "MuonSegment container version".
TrackParticle_v1 TrackParticle
Reference the current persistent version:
const SG::AuxElement::Accessor< float > getIsolationCorrectionAccessor(Iso::IsolationFlavour type, Iso::IsolationCaloCorrection corr, Iso::IsolationCorrectionParameter param)
const SG::Accessor< uint8_t > & muonTrackSummaryAccessorV1(xAOD::MuonSummaryType type)
Helper function for managing MuonTrackSummary Accessor objects.
const SG::AuxElement::Accessor< float > * getIsolationAccessor(Iso::IsolationType type)
Get the Accessor object for a given isolation type.
const SG::Accessor< T > * parameterAccessorV1(Muon_v1::ParamDef type)
This function holds on to Accessor objects that can be used by each Muon_v1 object at runtime to get/...
TrackParticleContainer_v1 TrackParticleContainer
Definition of the current "TrackParticle container version".
setBGCode setTAP setLVL2ErrorBits bool
static const SG::AuxElement::Accessor< ElementLink< IParticleContainer > > acc("originalObjectLink")
Object used for setting/getting the dynamic decoration in question.
AUXSTORE_OBJECT_SETTER_AND_GETTER(CaloRings_v1, RingSetLinks, ringSetLinks, setRingSetLinks) unsigned CaloRings_v1
MuonSegment_v1 MuonSegment
Reference the current persistent version:
SummaryType
Enumerates the different types of information stored in Summary.
MuonSummaryType
Enumerates the different types of information stored in Summary.