27 {
"IsoCloseByCorr_assocClustEta",
"IsoCloseByCorr_assocClustPhi",
"IsoCloseByCorr_assocClustEnergy",
28 "IsoCloseByCorr_assocClustDecor"};
33 {
"IsoCloseByCorr_assocPflowEta",
"IsoCloseByCorr_assocPflowPhi",
"IsoCloseByCorr_assocPflowEnergy",
34 "IsoCloseByCorr_assocPflowDecor"};
65 ATH_MSG_WARNING(
"The ParticleCaloExtensionTool was not configured. Pleease include it!!!");
76 ATH_MSG_INFO(
"No TrackSelectionTool provided, so I will create and configure my own, called: " <<
config.name());
90 ATH_CHECK(
config.setProperty(
"WorkingPoint",
"Nonprompt_All_MaxWeight"));
100 return StatusCode::SUCCESS;
104 for (
const std::unique_ptr<IsolationWP>& W : WPs) {
105 for (
const std::unique_ptr<IsolationCondition>&
C : W->conditions()) {
106 for (
unsigned int t = 0; t <
C->num_types(); ++t) {
107 const IsoType iso_type =
C->type(t);
108 if (std::find(
types.begin(),
types.end(), iso_type) ==
types.end())
types.emplace_back(iso_type);
109 if (m_isohelpers.find(iso_type) == m_isohelpers.end()) {
116 [](
const IsolationType& t) { return isTrackIso(t) && !isTrackIsoTTVA(t); }) !=
types.end();
124 for (
const std::string& cont : containers) {
146 if (iso_types.empty()) {
ATH_MSG_DEBUG(
"No isolation types have been defined for particle type " <<
particleName(particle)); }
148 std::lock_guard<std::mutex> guard{m_isoHelpersMutex};
149 IsoHelperMap::const_iterator Itr = m_isohelpers.find(
type);
151 ATH_MSG_WARNING(
"Failed to properly access the vanilla isolation variable "
153 << particle->pt() *
MeVtoGeV <<
" GeV, eta: " << particle->eta() <<
", phi: " << particle->phi());
175 if (!isLRT.isAvailable(*prim) || !isLRT(*prim) ) {
177 cache.
tracks.insert(tracks.begin(), tracks.end());
180 cache.
clusters.insert(clusters.begin(), clusters.end());
194 if (!readHandle.
isValid())
return;
195 std::set<const xAOD::IParticle*> tombola{};
202 for (
size_t ch = 0; ch < flow->nChargedObjects(); ++ch) {
204 if (tombola.count(obj)) {
205 const std::vector<float>&
weights = flow->chargedObjectWeights();
209 for (
size_t ne = 0; ne < flow->nOtherObjects(); ++ne) {
211 if (tombola.count(obj)) {
212 const std::vector<float>&
weights = flow->otherObjectWeights();
214 ATH_MSG_VERBOSE(
"getAssocFlowElements: neflow " << ne <<
", " << obj->type() <<
", " << obj->pt() <<
", " << obj->eta() <<
", " << obj->phi() <<
", " << flow->pt() <<
", " << flow->eta() <<
", " << flow->phi());
220 #ifndef XAOD_ANALYSIS
226 std::unique_ptr<Trk::CaloExtension> caloExtension;
233 const std::vector<Trk::CurvilinearParameters>& intersections = caloExtension->caloLayerIntersections();
234 if(!intersections.empty()){
236 for (
unsigned int i = 0; i < intersections.size(); ++i){
240 avePoint = (1./intersections.size())*avePoint;
241 eta = avePoint.eta();
242 phi = avePoint.phi();
254 const EventContext& ctx,
259 ATH_MSG_ERROR(
"The IsolationCloseByCorrectionTool was not initialised!!!");
280 <<
" eta: " << particle->eta()
281 <<
" phi: " << particle->phi());
284 ATH_MSG_ERROR(
"Failed to correct the isolation of particle with pt: " << particle->pt() *
MeVtoGeV <<
" GeV"
285 <<
" eta: " << particle->eta()
286 <<
" phi: " << particle->phi());
291 <<
" eta: " << particle->eta()
292 <<
" phi: " << particle->phi());
300 <<
" eta: " << particle->eta()
301 <<
" phi: " << particle->phi());
303 ATH_MSG_ERROR(
"Failed to copy the isolation of particle with pt: " << particle->pt() *
MeVtoGeV <<
" GeV"
304 <<
" eta: " << particle->eta()
305 <<
" phi: " << particle->phi());
313 <<
" eta: " << particle->eta()
314 <<
" phi: " << particle->phi());
316 ATH_MSG_ERROR(
"Failed to copy the isolation of particle with pt: " << particle->pt() *
MeVtoGeV <<
" GeV"
317 <<
" eta: " << particle->eta()
318 <<
" phi: " << particle->phi());
332 std::lock_guard<std::mutex> guard{m_isoHelpersMutex};
338 if (conts.insert(c).second) {
339 for (
const IsoType t : isoTypes) {
340 auto it = m_isohelpers.find (t);
341 if (it != m_isohelpers.end())
342 it->second->lockDecorations(*part->container());
347 c_nc->lockDecoration (dec_assocPhi.
auxid());
348 c_nc->lockDecoration (dec_isDecor.
auxid());
354 for (
const IsoType t : isoTypes) {
355 auto it = m_isohelpers.find (t);
356 if (it != m_isohelpers.end())
357 it->second->lockDecorations(*parts);
361 c_nc->lockDecoration (dec_assocEta.
auxid());
362 c_nc->lockDecoration (dec_assocPhi.
auxid());
363 c_nc->lockDecoration (dec_isDecor.
auxid());
368 if (!particle)
return dummy;
387 float iso_variable{0.f};
404 ATH_MSG_DEBUG(
"subtractCloseByContribution: Set pt, eta, phi " << par->pt() <<
", " << par->eta() <<
", " << par->phi() <<
" for " <<
toString(iso_type) <<
" to " << iso_variable);
405 std::lock_guard<std::mutex> guard{m_isoHelpersMutex};
417 ATH_MSG_DEBUG(
"copyIsoValuesForPartsNotSelected " << part->type() <<
" " << part->pt() *
MeVtoGeV <<
" GeV" <<
" eta: " << part->eta() <<
" phi: " << part->phi());
424 float iso_variable{0.f};
425 std::lock_guard<std::mutex> guard{m_isoHelpersMutex};
430 ATH_MSG_DEBUG(
"copyIsoValuesForPartsNotSelected: Set pt, eta " << part->pt() <<
", " << part->eta() <<
", " << part->phi() <<
" for " <<
toString(iso_type) <<
" to " << iso_variable);
441 const std::vector<IsolationType>&
types,
445 ATH_MSG_ERROR(
"The IsolationCloseByCorrectionTool was not initialised!!!");
450 std::lock_guard<std::mutex> guard{m_isoHelpersMutex};
452 IsoHelperMap::const_iterator Itr = m_isohelpers.find(t);
453 if (Itr != m_isohelpers.end()) {
continue; }
457 corrections.assign(
types.size(), 0);
460 const EventContext& ctx = Gaudi::Hive::currentContext();
462 std::vector<float>::iterator
Cone = corrections.begin();
465 std::lock_guard<std::mutex> guard{m_isoHelpersMutex};
466 IsoHelperMap::const_iterator Itr = m_isohelpers.find(iso_type);
503 if (mu->muonType() != xAOD::Muon::SiliconAssociatedForwardMuon)
504 to_return.emplace(mu->trackParticle(xAOD::Muon::TrackParticleType::InnerDetectorTrackParticle));
507 to_return.emplace(trk);
513 << trk->pt() *
MeVtoGeV <<
" GeV, eta: " << trk->eta() <<
", phi: " << trk->phi());
514 to_return.emplace(trk);
522 for (
const TrackPtr trk : assoc_tracks) {
545 for (
size_t calo = 0; calo < egamm->
nCaloClusters(); ++calo) {
547 if (!clust)
continue;
550 if (cluster && std::abs(cluster->eta()) < 7. && cluster->e() >
MinClusterEnergy) {
551 clusters.emplace(cluster);
553 ATH_MSG_VERBOSE(
"getAssociatedClusters: " <<
P->type() <<
" has topo cluster with pt: " << cluster->pt() *
MeVtoGeV <<
" GeV, eta: "
554 << cluster->eta() <<
", phi: " << cluster->phi());
558 if (clusters.size())
return clusters;
562 if (!topoClusters.
isValid())
return clusters;
567 bool foundMuonTopo =
false;
570 << cl->eta() <<
", phi: " << cl->phi());
573 if (cluster && std::abs(cluster->eta()) < 7. && cluster->e() >
MinClusterEnergy) {
576 clusters.emplace(cluster);
577 foundMuonTopo =
true;
578 ATH_MSG_VERBOSE(
"getAssociatedClusters: muon has topo cluster with pt: " << cluster->pt() *
MeVtoGeV <<
" GeV, eta: "
579 << cluster->eta() <<
", phi: " << cluster->phi());
582 ATH_MSG_VERBOSE(
"getAssociatedClusters: muon topo cluster already associated with an EG objet - cluster with pt: "
583 << cluster->pt() *
MeVtoGeV <<
" GeV, eta: " << cluster->eta() <<
", phi: " << cluster->phi());
588 if (!foundMuonTopo) {
593 ATH_MSG_VERBOSE(
"getAssociatedClusters: found mu tp " <<
" with pt: " << tp->pt() *
MeVtoGeV <<
" GeV, eta: " << tp->eta() <<
", phi: " << tp->phi());
597 ATH_MSG_VERBOSE(
"getAssociatedClusters: tp extrapolated - tpEtaAtCalo " << tpEtaAtCalo <<
", tpPhiAtCalo " << tpPhiAtCalo);
599 if (cluster && std::abs(cluster->eta()) < 7. && cluster->e() >
MinClusterEnergy &&
601 clusters.emplace(cluster);
602 ATH_MSG_VERBOSE(
"getAssociatedClusters: for mu trkPart save clus " <<
" with pt: " << cluster->pt() *
MeVtoGeV <<
" GeV, eta: " << cluster->eta() <<
", phi: " << cluster->phi() <<
", tpEtaAtCalo " << tpEtaAtCalo <<
", tpPhiAtCalo " << tpPhiAtCalo);
614 if (!
P)
return false;
626 std::lock_guard<std::mutex> guard{m_isoHelpersMutex};
627 IsoHelperMap::const_iterator Itr = m_isohelpers.find(
type);
628 if (Itr == m_isohelpers.end() || Itr->second->getOriginalIsolation(par, isoValue) ==
CorrectionCode::Error) {
631 }
else if (cache.
tracks.empty())
640 <<
", phi: " << par->phi() <<
" before correction: " << isoValue *
MeVtoGeV <<
" GeV. "
641 << ToExclude.size() <<
" tracks will be excluded.");
649 if (
overlap(Ref, poluting_trk, MaxDR) && !ToExclude.count(poluting_trk)) {
651 << poluting_trk->
pt() *
MeVtoGeV <<
" GeV, eta: " << poluting_trk->
eta() <<
", phi: " << poluting_trk->
phi()
652 <<
" with dR: " << std::sqrt(
deltaR2(Ref, poluting_trk)) <<
" from the isolation cone " <<
toString(
type)
653 <<
" " << (isoValue *
MeVtoGeV) <<
" GeV.");
654 isoValue -= poluting_trk->
pt();
657 isoValue = std::max(0.f, isoValue);
659 <<
", phi: " << par->phi() <<
" after correction: " << isoValue *
MeVtoGeV <<
" GeV");
664 float& isoValue)
const {
670 ATH_MSG_ERROR(
"getCloseByCorrectionPflowIso() -- Could not retrieve the isolation variable.");
674 if (isoValue <= 0.) {
675 ATH_MSG_DEBUG(
"Pflow varible is already sufficiently isolated ");
679 float ref_eta{0.f}, ref_phi{0.f};
684 << primary->pt() *
MeVtoGeV <<
" GeV, eta: " << primary->eta()
685 <<
", phi: " << primary->phi() <<
" before correction: " << isoValue *
MeVtoGeV <<
" GeV. ");
688 ATH_MSG_VERBOSE(
"Loop over pflow element: " << flow->pt() <<
" GeV, eta: " << flow->eta() <<
" phi: " << flow->phi());
695 if (assoc_coll.count(flow)) {
696 ATH_MSG_VERBOSE(
"Flow element is directly associated with the object");
700 ATH_MSG_VERBOSE(
"Found overlapping pflow element: " << flow->pt() <<
" GeV, eta: " << flow->eta()
701 <<
" phi: " << flow->phi() <<
" dR: " << dR);
702 isoValue -= flow->pt() * flow.weight;
706 << primary->pt() *
MeVtoGeV <<
" GeV, eta: " << primary->eta()
707 <<
", phi: " << primary->phi() <<
" after correction: " << isoValue *
MeVtoGeV <<
" GeV. ");
714 if (others == primary)
continue;
715 if (!acc_isDecor.
isAvailable(*others) || !acc_isDecor(*others)) {
716 ATH_MSG_ERROR(
"The variable energy averaged pflow decorations are not available for "<<
particleName(others)<<
". Please check");
719 const float other_eta = acc_eta(*others);
720 const float other_phi = acc_phi(*others);
722 if (dR > coneDR)
continue;
724 isoValue -= acc_ene(*others);
730 isoValue = std::max(0.f, isoValue);
736 float& isoValue)
const {
743 std::lock_guard<std::mutex> guard{m_isoHelpersMutex};
750 if (isoValue <= 0.) {
751 ATH_MSG_DEBUG(
"Topo et cone variable is already sufficiently isolated");
754 float ref_eta{0.f}, ref_phi{0.f};
761 << primary->pt() *
MeVtoGeV <<
" GeV, eta: " << primary->eta()
762 <<
", phi: " << primary->phi() <<
" before correction: " << isoValue *
MeVtoGeV <<
" GeV. ");
766 ATH_MSG_VERBOSE(
"getCloseByCorrectionTopoIso: Loop over cluster: " << calo->
pt() *
MeVtoGeV <<
" GeV, eta: " << calo->
eta() <<
" phi: " << calo->
phi() <<
" dR: " << dR);
767 if (dR > MaxDR)
continue;
769 if (assoc.count(calo)) {
770 ATH_MSG_VERBOSE(
"getCloseByCorrectionTopoIso: skip due to assoc " << assoc.count(calo));
779 <<
" phi: " << calo->
phi() <<
" dR: " << dR);
783 << primary->pt() *
MeVtoGeV <<
" GeV, eta: " << primary->eta()
784 <<
", phi: " << primary->phi() <<
" after correction: " << isoValue *
MeVtoGeV <<
" GeV. ");
791 if (others == primary)
continue;
792 if (!acc_isDecor.
isAvailable(*others) || !acc_isDecor(*others)) {
796 const float other_eta = acc_eta(*others);
797 const float other_phi = acc_phi(*others);
799 if (dR > MaxDR)
continue;
801 isoValue -= acc_ene(*others);
804 isoValue = std::max(0.f, isoValue);
821 }
else if (acc_isDecor.
isAvailable(*par) && acc_isDecor(*par)) {
822 eta = acc_assocEta(*par);
823 phi = acc_assocPhi(*par);
825 float assoc_ene{0.f};
830 dec_assocEta(*par) =
eta;
831 dec_assocPhi(*par) =
phi;
832 dec_isDecor(*par) =
true;
836 float&
phi,
float& energy)
const {
839 if (flowCollection.empty()) {
840 phi = particle->phi();
841 eta = particle->eta();
845 const float flow_energy = ele->e() * ele.weight;
847 phi += ele->phi() * flow_energy;
848 eta += ele->eta() * flow_energy;
849 energy += flow_energy;
852 phi = particle->phi();
853 eta = particle->eta();
860 phi = particle->phi();
861 eta = particle->eta();
866 if (!cluster)
return;
867 energy = cluster->
e();
870 float etaT{0.f}, phiT{0.f}, dphiT{0.f};
872 for (
unsigned int i = 0; i < CaloSampling::Unknown; ++i) {
884 if (!nSample)
return;
885 ATH_MSG_DEBUG(
"Eta, phi before sampling: " <<
eta <<
", " <<
phi <<
" and after sampling: " << etaT / nSample <<
", "
888 eta = etaT / nSample;
890 << mu->eta() <<
", phi: " << mu->phi() <<
" energy, eta, phi " << energy <<
", " <<
eta <<
", " <<
phi
891 <<
", et " << energy * mu->pt() / mu->e());
896 for (
unsigned int cl = 0; cl < egamm->
nCaloClusters(); ++cl) {
899 ATH_MSG_DEBUG(
"Cluster " << cl <<
" is not defined " << egamm);
904 if (!cluster)
continue;
908 eta += cluster->eta() * clus_e;
909 phi += cluster->phi() * clus_e;
912 << cluster->eta() <<
", phi: " << cluster->phi());
919 << egamm->
eta() <<
", phi: " << egamm->
phi() <<
" energy, eta, phi " << energy <<
", " <<
eta <<
", " <<
phi );
921 ATH_MSG_DEBUG(
"Average energy from the clusters is too low " << energy <<
" copy particle properties");
932 if (iso_types.empty()) {
935 ATH_MSG_WARNING(
"Could not cast particle for acceptCorrected. Will return false.");
938 info.addCut(
"castCut",
"whether we managed to cast to a known type");
949 strPar.
eta =
x.eta();
950 strPar.
type =
x.type();
951 std::vector<float> corrections;
953 ATH_MSG_WARNING(
"Could not calculate the corrections. acceptCorrected(x) is done without the corrections.");
957 for (
unsigned int i = 0; i < iso_types.size(); ++i) {
960 float old = (*acc)(
x);
961 ATH_MSG_DEBUG(
"Correcting " <<
toString(iso_types.at(i)) <<
" from " << old <<
" to " << corrections[i]);
969 if (!Verticies.
isValid() || !Verticies->size()) {
989 if (MiniIso < ConeDR)
return MiniIso;
1014 const xAOD::TrackParticle* idTrk =
muon->trackParticle(xAOD::Muon::TrackParticleType::InnerDetectorTrackParticle);
1015 return idTrk ? idTrk :
muon->primaryTrackParticle();
1030 if (AvgCalo || (
P->type() != P1->
type() &&
1032 float phi1{0.f},
eta1{0.f}, eta2{0.f}, phi2{0.f};
1038 float dEta =
P->eta() - P1->
eta();
1039 return dEta * dEta + dPhi * dPhi;
1045 std::lock_guard<std::mutex> guard{m_isoHelpersMutex};
1046 IsoHelperMap::const_iterator itr = m_isohelpers.find(isoVariable);
1048 if (itr == m_isohelpers.end() || itr->second->getOriginalIsolation(particle, isovalue) ==
CorrectionCode::Error) {
1049 ATH_MSG_ERROR(
"Failed to retrieve the original isolation cone ");
1062 Et = Et - cluster->
eSample(xAOD::CaloCluster::CaloSample::TileGap3) /
1064 }
catch (...) { Et = cluster->
p4().Et(); }
1066 return std::max(Et, 0.f);
1089 return ttvaFlavours.count(flavour);
1097 return ttvaFlavours.count(flavour);
1111 if (Pt1000_Flavours.count(flavour))
return 1000;
Scalar eta() const
pseudorapidity method
#define ATH_CHECK
Evaluate an expression and check for errors.
#define ATH_MSG_VERBOSE(x)
#define ATH_MSG_WARNING(x)
Define macros for attributes used to control the static checker.
Return value from object correction CP tools.
@ Error
Some error happened during the object correction.
@ OutOfValidityRange
Input object is out of validity range.
@ Ok
The correction was done successfully.
bool empty() const noexcept
Returns true if the collection is empty.
SG::Accessor< T, ALLOC > Accessor
Manage lookup of vectors of auxiliary data.
void lockDecoration(SG::auxid_t auxid)
Explicitly lock a decoration.
bool isAvailable(const ELT &e) const
Test to see if this variable exists in the store.
SG::auxid_t auxid() const
Return the aux id for this variable.
virtual bool isValid() override final
Can the handle be successfully dereferenced?
virtual double pt() const
The transverse momentum ( ) of the particle (negative for negative-energy clusters)
float phiSample(const CaloSample sampling) const
Retrieve barycenter in a given sample.
virtual double eta() const
The pseudorapidity ( ) of the particle.
virtual double e() const
The total energy of the particle.
float eSample(const CaloSample sampling) const
virtual double phi() const
The azimuthal angle ( ) of the particle.
float etaSample(const CaloSample sampling) const
Retrieve barycenter in a given sample.
virtual FourMom_t p4() const
The full 4-momentum of the particle.
bool hasSampling(const CaloSample s) const
Checks if certain smapling contributes to cluster.
virtual double pt() const override final
The transverse momentum ( ) of the particle.
virtual double e() const override
The total energy of the particle.
size_t nCaloClusters() const
Return the number of xAOD::CaloClusters that define the electron candidate.
virtual double eta() const override final
The pseudorapidity ( ) of the particle.
virtual double phi() const override final
The azimuthal angle ( ) of the particle.
const xAOD::CaloCluster * caloCluster(size_t index=0) const
Pointer to the xAOD::CaloCluster/s that define the electron candidate.
Class providing the definition of the 4-vector interface.
virtual double eta() const =0
The pseudorapidity ( ) of the particle.
virtual Type::ObjectType type() const =0
The type of the object as a simple enumeration.
virtual double phi() const override final
The azimuthal angle ( ) of the particle (has range to .)
virtual double pt() const override final
The transverse momentum ( ) of the particle.
virtual double eta() const override final
The pseudorapidity ( ) of the particle.
Eigen::Matrix< double, 3, 1 > Vector3D
Select isolated Photons, Electrons and Muons.
std::vector< IsoType > IsoVector
SG::AuxElement::ConstAccessor< char > CharAccessor
xAOD::Iso::IsolationType IsoType
std::set< FlowElementPtr > PflowSet
SG::AuxElement::ConstAccessor< float > FloatAccessor
std::set< TrackPtr > TrackSet
constexpr float MinClusterEnergy
IsolationCloseByCorrectionTool::caloDecorNames caloDecorNames
std::unordered_set< const SG::AuxVectorData * > UnorderedContainerSet
SG::AuxElement::Decorator< char > CharDecorator
std::set< CaloClusterPtr > ClusterSet
SortedObjPtr< xAOD::CaloCluster > CaloClusterPtr
SG::AuxElement::Decorator< float > FloatDecorator
SortedObjPtr< xAOD::TrackParticle > TrackPtr
@ VIEW_ELEMENTS
this data object is a view, it does not own its elmts
ObjectType
Type of objects that have a representation in the xAOD EDM.
@ TrackParticle
The object is a charged track particle.
@ Photon
The object is a photon.
@ CaloCluster
The object is a calorimeter cluster.
@ Muon
The object is a muon.
@ Electron
The object is an electron.
std::set< const xAOD::TrackParticle * > getTrackParticles(const xAOD::Egamma *eg, bool useBremAssoc=true, bool allParticles=true)
Return a list of all or only the best TrackParticle associated to the object.
std::vector< const xAOD::CaloCluster * > getAssociatedTopoClusters(const xAOD::CaloCluster *cluster)
Return a vector of all the topo clusters associated with the egamma cluster.
Namespace holding the IsolationType enumeration.
IsolationFlavour isolationFlavour(IsolationType type)
convert Isolation Type into Isolation Flavour
IsolationType
Overall enumeration for isolation types in xAOD files.
IsolationFlavour
Enumeration for different ways of calculating isolation in xAOD files.
@ topoetcone
Topo-cluster ET-sum.
@ ptvarcone_Nonprompt_All_MaxWeightTTVALooseCone_pt1000
@ ptcone_Nonprompt_All_MaxWeightTTVALooseCone_pt1000
@ ptvarcone_Nonprompt_All_MaxWeightTTVA_pt500
ptvarcone for high mu
@ neflowisol
neutral eflow
@ ptvarcone
mini isolation
@ ptvarcone_Nonprompt_All_MaxWeightTTVALooseCone_pt500
@ ptcone_Nonprompt_All_MaxWeightTTVA_pt1000
@ ptcone_Nonprompt_All_MaxWeightTTVALooseCone_pt500
ptcone for high mu
@ ptvarcone_Nonprompt_All_MaxWeightTTVA_pt1000
@ ptcone_Nonprompt_All_MaxWeightTTVA_pt500
ptcone for high mu
float coneSize(IsolationConeSize type)
convert Isolation Size into cone size
std::string toString(const IsoType &iso)
double deltaPhi(double phiA, double phiB)
delta Phi in range [-pi,pi[
double deltaR(double rapidity1, double phi1, double rapidity2, double phi2)
from bare bare rapidity,phi
double deltaR2(double rapidity1, double phi1, double rapidity2, double phi2)
from bare rapidity,phi
PhotonContainer_v1 PhotonContainer
Definition of the current "photon container version".
ElectronContainer_v1 ElectronContainer
Definition of the current "electron container version".
setEt setPhi setE277 setWeta2 eta1
CaloCluster_v1 CaloCluster
Define the latest version of the calorimeter cluster class.
FlowElement_v1 FlowElement
Definition of the current "pfo version".
TrackParticle_v1 TrackParticle
Reference the current persistent version:
const IParticle * getOriginalObject(const IParticle ©)
This function can be used to conveniently get a pointer back to the original object from which a copy...
Vertex_v1 Vertex
Define the latest version of the vertex class.
Egamma_v1 Egamma
Definition of the current "egamma version".
static const EventInfo_v1::Accessor< std::vector< std::string > > types("streamTagTypes")
const SG::AuxElement::Accessor< float > * getIsolationAccessor(Iso::IsolationType type)
Get the Accessor object for a given isolation type.
static const SG::AuxElement::Accessor< std::vector< std::string > > names("thrNames")
Accessor for the names of the passed thresholds.
Muon_v1 Muon
Reference the current persistent version:
setBGCode setTAP setLVL2ErrorBits bool
static const SG::AuxElement::Accessor< ElementLink< IParticleContainer > > acc("originalObjectLink")
Object used for setting/getting the dynamic decoration in question.
MuonContainer_v1 MuonContainer
Definition of the current "Muon container version".
DataVector< IParticle > IParticleContainer
Simple convenience declaration of IParticleContainer.
For the flow elements we need a special derivate which also contains the weights.
std::vector< float > isolationValues
xAOD::Type::ObjectType type