7#ifndef EGAMMAEVENT_EGAMMA_H
8#define EGAMMAEVENT_EGAMMA_H 1
32#include "AthLinks/ElementLink.h"
33#include "AthLinks/ElementLinkVector.h"
37#include "CaloEvent/CaloClusterContainer.h"
90 egamma(
const egamma &rhs,
bool copyDetails=
true,
bool copyMinimal=
false);
97 void setE (
double theE);
99 void setEta (
double theEta);
101 void setPhi (
double thePhi);
103 void setM (
double theM);
110 void set4Mom (
const CLHEP::HepLorentzVector & theHlv );
140 template <
typename T>
141 const T*
detail(
const std::string& name =
"",
unsigned int index = 0)
const;
145 const std::string& name =
"",
146 unsigned int index = 0)
const;
158 const std::string& name =
"",
159 unsigned int index = 0)
const;
261 bool *found =
nullptr)
const;
264 bool *found =
nullptr)
const;
275 unsigned int isem(
unsigned int mask,
280 unsigned int isemse(
unsigned int mask,
bool *found)
const;
320 std::size_t iloop = 0;
325 for (; iloop != nsize; iloop++) {
328 ptr =
dynamic_cast<const T*
>(*(
m_egDetails[iloop]));
329 if (0 != ptr && ptr->linkIndex() == (
int)
index) {
339 ptr =
dynamic_cast<const T*
>(*(
m_egDetails[iloop]));
340 if (0 != ptr && ptr->linkIndex() == (
int)
index){
bool isValid(const T &p)
Av: we implement here an ATLAS-sepcific convention: all particles which are 99xxxxx are fine.
Storable container for CaloCluster.
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.
Dummy type needed fro specialized implementation.
P4ImplEEtaPhiM is a base class for classes with 4-momentum behavior, for which E, eta,...
void set4Mom(const I4Momentum &theI4Mom)
set all 4-mom from another I4Momentum reference
void setEta(const double theEta)
set eta data member
void setE(const double theE)
set energy data member
void setM(const double theM)
set mass data member
void setPhi(const double thePhi)
set phi data member
const momentum_type & momentumBase() const
egammaNavigation navigable_type
virtual CLHEP::HepLorentzVector hlv() const
ParticleEvent::Base particle_type
virtual double phi() const
virtual double eta() const
P4ImplEEtaPhiM momentum_type
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
const momentum_type & get4Mom(egamma::eg4MomType type=egamma::Combined) const
return the combined or additional uncombined cluster 4mom
egammaImpl_t::navigable_type navigable_type
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
void setE(double theE)
set energy 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 setEta(double theEta)
set eta data member
void setErrorMatrix(Amg::MatrixX)
void set4Mom(const I4Momentum &theI4Mom)
set all 4-mom from another I4Momentum reference
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 resetAuthor()
set_egamma ID
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)
void setPhi(double thePhi)
set phi data member
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
egammaImpl_t::momentum_type momentum_type
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.
egammaImpl_t::particle_type particle_type
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.
void setM(double theM)
set mass data member
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 addAuthor(unsigned int author)
Add author.
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
NavigableTerminalNode egammaNavigation
Eigen::Matrix< double, Eigen::Dynamic, Eigen::Dynamic > MatrixX
Dynamic Matrix - dynamic allocation.
@ IsEM
cut-based identification for egamma objects (cluster and track-based)
const unsigned int ALL
all cuts