11#include "CaloEvent/CaloCluster.h"
82 IAthenaBarCode::operator=(rhs);
83 INavigable::operator=(rhs);
84 I4Momentum::operator=(rhs);
85 INavigable4Momentum::operator=(rhs);
119 bool checkFlag =
false;
126 if ( aTrack !=
nullptr )
131 if ( trackToken !=
nullptr )
144 if ( parTrackToken !=
nullptr )
159 if ( checkFlag )
return;
166 if ( aCluster !=
nullptr )
171 if ( clusToken !=
nullptr )
181 if ( parClusToken !=
nullptr )
190 if ( checkFlag )
return;
196 if ( aCluster!=
nullptr ) aCluster->
fillToken(theToken);
206 if ( aCluster!=
nullptr ) theToken.
trySetObject(aCluster);
214 const std::any& theWeight)
const
216 bool checkFlag =
false;
222 if ( aTrack !=
nullptr )
227 if ( trackToken !=
nullptr )
240 if ( parTrackToken !=
nullptr )
244 std::any_cast<double>(theWeight));
251 if ( checkFlag )
return;
258 if ( aCluster !=
nullptr )
263 if ( clusToken !=
nullptr )
273 if ( parClusToken !=
nullptr )
276 std::any_cast<double>(theWeight));
283 if ( checkFlag )
return;
289 if ( aCluster !=
nullptr ) aCluster->
fillToken(theToken,theWeight);
299 if ( aTrack !=
nullptr ) theToken.
trySetObject(aTrack, theWeight);
300 if ( aCluster !=
nullptr ) theToken.
trySetObject(aCluster,theWeight);
313 return m_egPID->egammaID(idflag, found);
323 return m_egPID->egammaID(idflag,
nullptr);
334 return m_egPID->set_egammaID(idflag,result);
344 return m_egPID->set_egammaIDint(idflag,result);
527 link.toIndexedElement(*pCont,
index);
535 link.toContainedElement(*pCont, track);
572 link.toIndexedElement(*pCont,
index);
580 link.toContainedElement(*pCont, conv);
611 link.toContainedElement( *cont, ptr);
680 return (
m_egPID->isEMsofte(mask, found)==0);
793 return m_egPID->isEMsofte(mask,
nullptr);
804 return m_egPID->isEMsofte(mask, found);
811 return (
m_egPID->IsGoodOQ(mask, found) == 0);
822 return m_egPID->IsGoodOQ(mask, found);
835 const std::string& name ,
836 unsigned int index)
const
840 for (
size_t i = 0; i < nsize; i++) {
892 const std::string& name,
unsigned int index)
const
897 for (
size_t i = 0; i < nsize; i++) {
905 if ( ptr && ptr->hasParameter(key) && ptr->linkIndex() == (
int)
index)
906 return ptr->parameter(key);
964 const unsigned int Nrows =thematrix.rows();
965 CLHEP::HepSymMatrix thematrixCLHEP(Nrows,0);
967 for (
unsigned int i=0; i<Nrows;++i) {
968 for (
unsigned int j=0; j<Nrows;++j){
969 thematrixCLHEP[i][j]= thematrix(i,j);
979 const unsigned int Nrows =thematrix.rows();
980 CLHEP::HepSymMatrix thematrixCLHEP(Nrows,0);
982for (
unsigned int i=0; i<Nrows;++i) {
983 for (
unsigned int j=0; j<Nrows;++j){
984 thematrixCLHEP[i][j]= thematrix(i,j);
bool isValid() const
Test to see if the link can be dereferenced.
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.
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)
std::unique_ptr< egPID > m_egPID
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 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