11#include "CaloEvent/CaloCluster.h"
86 IAthenaBarCode::operator=(rhs);
87 INavigable::operator=(rhs);
88 I4Momentum::operator=(rhs);
89 INavigable4Momentum::operator=(rhs);
121 bool checkFlag =
false;
128 if ( aTrack !=
nullptr )
133 if ( trackToken !=
nullptr )
146 if ( parTrackToken !=
nullptr )
161 if ( checkFlag )
return;
168 if ( aCluster !=
nullptr )
173 if ( clusToken !=
nullptr )
183 if ( parClusToken !=
nullptr )
192 if ( checkFlag )
return;
198 if ( aCluster!=
nullptr ) aCluster->
fillToken(theToken);
208 if ( aCluster!=
nullptr ) theToken.
trySetObject(aCluster);
216 const std::any& theWeight)
const
218 bool checkFlag =
false;
224 if ( aTrack !=
nullptr )
229 if ( trackToken !=
nullptr )
242 if ( parTrackToken !=
nullptr )
246 std::any_cast<double>(theWeight));
253 if ( checkFlag )
return;
260 if ( aCluster !=
nullptr )
265 if ( clusToken !=
nullptr )
275 if ( parClusToken !=
nullptr )
278 std::any_cast<double>(theWeight));
285 if ( checkFlag )
return;
291 if ( aCluster !=
nullptr ) aCluster->
fillToken(theToken,theWeight);
301 if ( aTrack !=
nullptr ) theToken.
trySetObject(aTrack, theWeight);
302 if ( aCluster !=
nullptr ) theToken.
trySetObject(aCluster,theWeight);
315 return m_egPID->egammaID(idflag, found);
325 return m_egPID->egammaID(idflag,
nullptr);
688 return (
m_egPID->isEMsofte(mask, found)==0);
801 return m_egPID->isEMsofte(mask,
nullptr);
812 return m_egPID->isEMsofte(mask, found);
819 return (
m_egPID->IsGoodOQ(mask, found) == 0);
830 return m_egPID->IsGoodOQ(mask, found);
843 const std::string& name ,
844 unsigned int index)
const
848 for (
size_t i = 0; i < nsize; i++) {
900 const std::string& name,
unsigned int index)
const
905 for (
size_t i = 0; i < nsize; i++) {
913 if ( ptr && ptr->hasParameter(key) && ptr->linkIndex() == (
int)
index)
914 return ptr->parameter(key);
972 const unsigned int Nrows =thematrix.rows();
973 CLHEP::HepSymMatrix thematrixCLHEP(Nrows,0);
975 for (
unsigned int i=0; i<Nrows;++i) {
976 for (
unsigned int j=0; j<Nrows;++j){
977 thematrixCLHEP[i][j]= thematrix(i,j);
987 const unsigned int Nrows =thematrix.rows();
988 CLHEP::HepSymMatrix thematrixCLHEP(Nrows,0);
990for (
unsigned int i=0; i<Nrows;++i) {
991 for (
unsigned int j=0; j<Nrows;++j){
992 thematrixCLHEP[i][j]= thematrix(i,j);
bool isValid(const T &p)
Av: we implement here an ATLAS-sepcific convention: all particles which are 99xxxxx are fine.
Provide an interface for finding inheritance information at run time.
#define SG_ADD_BASE(D, B)
Add a new base class B to class D.
#define SG_VIRTUAL(T)
Used to mark virtual derivation.
Storable container for CaloCluster.
virtual void fillToken(INavigationToken &iToken) const
fill token for navigation
Principal data class for CaloCell clusters.
ElementLinkVector implementation for standalone ROOT.
ElementLink implementation for ROOT usage.
bool toIndexedElement(BaseConstReference data, index_type elemID, IProxyDict *sg=0)
Set the link to an element given by index and pointer to container.
bool toContainedElement(BaseConstReference data, ElementType element, IProxyDict *sg=0)
Set from element pointer and a reference to the container (storable)
I4Momentum is an abstract base class providing 4-momentum behavior.
virtual bool trySetObject(const INavigable *child)=0
void setObject(const_child_ptr data)
virtual const I4MomentumError * errors() const
void setErrors(const ErrorMatrixEEtaPhiM &err)
set the errors
const momentum_type & momentumBase() const
virtual CLHEP::HepLorentzVector hlv() const
ParticleImpl & operator=(const ParticleImpl &rhs)
virtual double phi() const
virtual double eta() const
Container for detailed egamma information.
Base class for detailed egamma information.
Class to hold PID vars egamma information.
void setTrackParticle(const Rec::TrackParticleContainer *, int)
Set Track Particle.
egamma()
Default constructor.
bool passID(egammaPIDObs::egammaIDQuality id) const
does electron/photon pass the given quality
int nDetails() const
number of details in egamma object
ElementLinkVector< egDetailContainer > m_egDetails
ElementLink< CaloRingsContainer > m_rings
unsigned int isemse(unsigned int mask=egammaPIDObs::ALL) const
ID flag with cuts for softe, 0:e, >1:jet.
unsigned int isem(unsigned int mask=egammaPIDObs::ALL, egammaPIDObs::PID pid=egammaPIDObs::IsEM) const
ID flag with cuts, 0:e, >1:jet.
void setUncombinedPhi(double thePhi)
set uncombined phi data member
virtual ~egamma()
Destructor.
const ElementLink< CaloRingsContainer > & ringsElementLink() const
element link to rings
double detailValue(egammaParameters::ParamDef key, const std::string &name="", unsigned int index=0) const
get the float value of key in the container name
void setUncombinedE(double theE)
set uncombined energy data member
void setTrackParticleElementLinkVector(const ElementLinkVector< Rec::TrackParticleContainer > &v)
void setErrorMatrix(Amg::MatrixX)
void setDetailElementLink(const ElementLink< egDetailContainer > &link)
set detailElementLink
void setConversion(const VxContainer *, int)
Set Conversion.
const egPID * pid() const
const Trk::VxCandidate * conversion(unsigned int index=0) const
pointer to Conversion
void setUncombined4Mom(const I4Momentum &theI4Mom)
set uncombined all 4-mom from another I4Momentum reference
double egammaID(egammaPIDObs::PID, bool *found) const
access to PID information, as double to work for IsEM and all possible weights as likelihood
const Rec::TrackParticle * trackParticle(unsigned int index=0) const
pointer to TrackParticle
virtual void fillToken(INavigationToken &thisToken) const
fill token
ParticleImpl< egammaNavigation, P4ImplEEtaPhiM > egammaImpl_t
unsigned int nConversions() const
void setRings(const CaloRingsContainer *, int)
Set rings object.
egamma & operator=(const egamma &rhs)
unsigned int author() const
Reconstruction Author.
void setUncombinedErrorMatrix(Amg::MatrixX)
ElementLink< CaloClusterContainer > m_cluster
const ElementLinkVector< Rec::TrackParticleContainer > & trackParticleElementLinkVector() const
bool set_egammaIDint(egammaPIDObs::PID id, unsigned int result)
set_egamma ID, for usigned int values
bool isPhoton(unsigned int mask=egammaPIDObs::ALL, egammaPIDObs::PID pid=egammaPIDObs::IsEM, bool *found=nullptr) const
void setTrackParticleElementLink(const ElementLink< Rec::TrackParticleContainer > &link)
Set Track Particle Link.
void setCluster(const CaloClusterContainer *, int)
Set cluster.
void resetConversion(unsigned int index=0)
Reset Conversion.
void setConversionElementLinkVector(const ElementLinkVector< VxContainer > &link)
void setUncombinedEta(double theEta)
set uncombined eta data member
ElementLinkVector< VxContainer > m_conversion
void setDetail(const egDetailContainer *, const egDetail *)
set detail
std::string detailName(int i) const
name of detail i
bool isElectron(unsigned int mask=egammaPIDObs::ALL, egammaPIDObs::PID pid=egammaPIDObs::IsEM, bool *found=nullptr) const
ID flag with cuts, true:e/phot, false:bkg.
ElementLinkVector< Rec::TrackParticleContainer > m_trackParticle
void setRingsElementLink(const ElementLink< CaloRingsContainer > &link)
Set Rings Element Link.
virtual const I4MomentumError * errors() const
override standard errors to allow lazy loading (lazy loading NOW DISABLED)
bool isGoodOQ(unsigned int mask=egammaPIDObs::ALLOQ, bool *found=nullptr) const
OQ flag.
unsigned int isgoodoq(unsigned int mask=egammaPIDObs::ALLOQ, bool *found=nullptr) const
void set_pid(egPID *)
set particle ID
void print() const
print method
void setUncombinedM(double theM)
set uncombined mass data member
void setDetailElementLinkVector(const ElementLinkVector< egDetailContainer > &v)
const T * detail(const std::string &name="", unsigned int index=0) const
retrieve eg-detail objects:
bool set_egammaID(egammaPIDObs::PID id, double result)
set_egamma ID, for doubles and all possible weights as likelihood
void resetTrackParticle(unsigned int index=0)
Reset Track Particle.
const ElementLinkVector< egDetailContainer > & detailElementLinkVector() const
momentum_type m_momentumCluster
const CaloRings * rings() const
pointer to CaloRings
void resetCluster()
Reset Cluster.
void resetRings()
Reset Cluster.
ElementLink< egDetailContainer > detailElementLink(int i) const
ElementLink for detail i.
void setClusterElementLink(const ElementLink< CaloClusterContainer > &link)
Set Cluster Element Link.
const CaloCluster * cluster() const
pointer to CaloCluster
const ElementLinkVector< VxContainer > & conversionElementLinkVector() const
ElementLink< Rec::TrackParticleContainer > trackParticleElementLink(unsigned int index=0) const
element link to trackParticle
unsigned int nTrackParticles() const
const ElementLink< CaloClusterContainer > & clusterElementLink() const
element link to cluster
void setConversionElementLink(const ElementLink< VxContainer > &link)
Set Conversion.
bool isSofte(unsigned int mask=egammaPIDObs::ALL, bool *found=nullptr) const
uses special softe cuts
ElementLink< VxContainer > conversionElementLink(unsigned int index=0) const
element link to conversion
Eigen::Matrix< double, Eigen::Dynamic, Eigen::Dynamic > MatrixX
Dynamic Matrix - dynamic allocation.
const unsigned int ElectronLooseIso
Loose electron selecton with isolation.
const unsigned int PhotonLooseARIso
Loose photon selection with Ambiguity resolver and Isolation.
const unsigned int ElectronLoosePP
Loose++ electron selection.
const unsigned int PhotonTightAR
Tight photon selection with Ambiguity resolver.
const unsigned int ElectronMediumPPIso
Medium++ electron selecton with isolation.
const unsigned int ElectronLoose
Loose electron selection.
const unsigned int PhotonTightIso
Tight photon selection with isolation.
const unsigned int PhotonTight
Tight photon selection.
const unsigned int ElectronTightIso
Tight electron selection with isolation requirement.
const unsigned int ElectronMedium
Medium electron selecton.
const unsigned int PhotonTightARIso
Tight photon selection with isolation and Ambiguity resolver.
const unsigned int PhotonLoose
Loose photon selection.
const unsigned int frwdElectronTight
forward electron flavours
const unsigned int ElectronMediumPP
Medium++ electron selecton.
const unsigned int PhotonMediumAR
Medium photon selection.
const unsigned int frwdElectronLoose
@ IsEMLoose
cut-based identification for egamma objects (Loose)
@ IsEMTight
cut-based identification for egamma objects (Tight)
@ IsEMMedium
cut-based identification for egamma objects (Medium)
@ IsEM
cut-based identification for egamma objects (cluster and track-based)
const unsigned int ElectronMediumIso
MediumIso electron selecton.
const unsigned int ElectronTightPP
Tight++ electron selecton.
const unsigned int ElectronTight
Tight electron selection.
const unsigned int ElectronTightPPIso
Tight++ electron selecton with isolation.
const unsigned int PhotonLooseIso
Loose photon selection with Isolation.
const unsigned int PhotonMedium
Medium photon selection.
const unsigned int PhotonLooseAR
Loose photon selection with Ambiguity resolver.
const double EgParamUndefined