ATLAS Offline Software
Loading...
Searching...
No Matches
FSR::FsrPhotonTool Class Reference

Implementation for the "FSR" provider tool. More...

#include <FsrPhotonTool.h>

Inheritance diagram for FSR::FsrPhotonTool:
Collaboration diagram for FSR::FsrPhotonTool:

Public Member Functions

 FsrPhotonTool (const std::string &name)
 Create a proper constructor for Athena.
 ~FsrPhotonTool ()
 Create a destructor.
virtual void print () const
 Print the state of the tool.
ServiceHandle< StoreGateSvc > & evtStore ()
 The standard StoreGateSvc (event store) Returns (kind of) a pointer to the StoreGateSvc.
const ServiceHandle< StoreGateSvc > & detStore () const
 The standard StoreGateSvc/DetectorStore Returns (kind of) a pointer to the StoreGateSvc.
virtual StatusCode sysInitialize () override
 Perform system initialization for an algorithm.
virtual StatusCode sysStart () override
 Handle START transition.
virtual std::vector< Gaudi::DataHandle * > inputHandles () const override
 Return this algorithm's input handles.
virtual std::vector< Gaudi::DataHandle * > outputHandles () const override
 Return this algorithm's output handles.
Gaudi::Details::PropertyBase & declareProperty (Gaudi::Property< T, V, H > &t)
void updateVHKA (Gaudi::Details::PropertyBase &)
MsgStream & msg () const
bool msgLvl (const MSG::Level lvl) const
Function(s) implementing the asg::IAsgTool interface
virtual StatusCode initialize ()
 Function initialising the tool.
Function(s) implementing the IFsrPhotonTool interface
virtual CP::CorrectionCode getFsrPhoton (const xAOD::IParticle *part, FsrCandidate &candidate, xAOD::PhotonContainer *photons, const xAOD::ElectronContainer *electrons)
 Get the "FSR candidate" as a return value for a muon (collinar and far FSR)
virtual std::vector< FsrCandidate > * getFsrCandidateList (const xAOD::IParticle *part, xAOD::PhotonContainer *photons, const xAOD::ElectronContainer *electrons)
 Find ALL FSR candidates for a given particle (electron or muon) providing newly calibrated photon and electron containers.
virtual std::vector< FsrCandidate > * getFarFsrCandidateList (const xAOD::IParticle *part, xAOD::PhotonContainer *photons_cont)
 Find and Return ALL FAR FSR candidates.
virtual std::vector< FsrCandidate > * getNearFsrCandidateList (const xAOD::Muon *part, const xAOD::PhotonContainer *photons_cont, const xAOD::ElectronContainer *electrons_cont)
 Find and Return ALL NEAR FSR candidates.
Additional helper functions, not directly mimicking Athena
template<class T>
const T * getProperty (const std::string &name) const
 Get one of the tool's properties.
const std::string & msg_level_name () const __attribute__((deprecated))
 A deprecated function for getting the message level's name.
const std::string & getName (const void *ptr) const
 Get the name of an object that is / should be in the event store.
SG::sgkey_t getKey (const void *ptr) const
 Get the (hashed) key of an object that is in the event store.

Protected Member Functions

void renounceArray (SG::VarHandleKeyArray &handlesArray)
 remove all handles from I/O resolution
std::enable_if_t< std::is_void_v< std::result_of_t< decltype(&T::renounce)(T)> > &&!std::is_base_of_v< SG::VarHandleKeyArray, T > &&std::is_base_of_v< Gaudi::DataHandle, T >, void > renounce (T &h)
void extraDeps_update_handler (Gaudi::Details::PropertyBase &ExtraDeps)
 Add StoreName to extra input/output deps as needed.

Private Types

typedef ServiceHandle< StoreGateSvcStoreGateSvc_t

Private Member Functions

std::vector< FsrCandidate > * sortFsrCandidates (const std::vector< std::pair< const xAOD::IParticle *, double > > &FsrCandList, const std::string &option="ET")
 Need for the FSR search.
bool isOverlap (const xAOD::Electron_v1 *electron, const std::vector< std::pair< const xAOD::IParticle *, double > > &phfsr, unsigned int nofPhFsr)
double deltaR (float muonEta, float muonPhi, float phEta, float phPhi) const
double deltaPhi (float phi1, float phi2) const
Gaudi::Details::PropertyBase & declareGaudiProperty (Gaudi::Property< T, V, H > &hndl, const SG::VarHandleKeyType &)
 specialization for handling Gaudi::Property<SG::VarHandleKey>

Static Private Member Functions

static bool compareEt (const FsrCandidate &c1, const FsrCandidate &c2)

Private Attributes

Gaudi::Property< double > m_high_et_min {this, "high_et_min", 3500. , "Minimum Et cut for higg Et photons" }
Gaudi::Property< double > m_overlap_el_ph {this, "overlap_el_ph", 0.01 , "Overlap dR for electrons and photons" }
Gaudi::Property< double > m_overlap_el_mu {this, "overlap_el_mu", 0.001 , "Overlap dR for electrons and muons" }
Gaudi::Property< double > m_far_fsr_drcut {this, "far_fsr_drcut", 0.15 , "Minimum dR cut for far fsr" }
Gaudi::Property< double > m_far_fsr_etcut {this, "far_fsr_etcut", 10000.0 , "Minimum et cut for far fsr" }
Gaudi::Property< double > m_drcut {this, "drcut", 0.15 , "Maximun dR cut to be near fsr" }
Gaudi::Property< double > m_etcut {this, "etcut", 1000.0 , "Minimum Et cut for near fsr" }
Gaudi::Property< double > m_f1cut {this, "f1cut", 0.1 , "f1 cut for high Et clusters" }
Gaudi::Property< double > m_topo_drcut {this, "topo_drcut", 0.08 , "Maximum dR cut for low Et clusters" }
Gaudi::Property< double > m_topo_f1cut {this, "topo_f1cut", 0.2 , "Minimum f1 cut for low Et clusters" }
Gaudi::Property< std::string > m_far_fsr_isoWorkingPoint {this, "far_fsr_isoWorkingPoint", "FixedCutLoose", "Far fsr isolation working point" }
Gaudi::Property< std::string > m_energyRescalerName {this, "egCalibToolName", "" , "EnergyRescale tool to calibrate photons as electrons" }
Gaudi::Property< bool > m_suppresEnergyRescaling {this, "SuppressEnergyRescaling", false , "flag to suppress energy rescaling - should only be used for testing purposes, e.g. test w/o calib for PhysLite " }
Gaudi::Property< bool > m_AFII_corr {this, "AFII_corr", false , "Is AFII for isolation correction" }
Gaudi::Property< bool > m_is_mc {this, "IsMC", true , "Is MC" }
Gaudi::Property< bool > m_doCloseByIso {this, "DoCloseByCorrection", true , "flag to use isolation variables with 'CloseByCorr' suffix " }
std::vector< FsrCandidatem_fsrPhotons
FsrCandidate::FsrType m_fsr_type
ToolHandle< CP::IIsolationSelectionToolm_isoSelTool
ToolHandle< CP::IEgammaCalibrationAndSmearingToolm_energyRescaler
ToolHandle< IAsgSelectionToolm_elIsGoodOQSelectionTool
ToolHandle< IAsgSelectionToolm_phIsGoodOQSelectionTool
StoreGateSvc_t m_evtStore
 Pointer to StoreGate (event store by default)
StoreGateSvc_t m_detStore
 Pointer to StoreGate (detector store by default)
std::vector< SG::VarHandleKeyArray * > m_vhka
bool m_varHandleArraysDeclared

Detailed Description

Implementation for the "FSR" provider tool.

Author
Tulay Cuhadar Donszelmann tcuha.nosp@m.dar@.nosp@m.cern..nosp@m.ch
RD Schaffer R.D.S.nosp@m.chaf.nosp@m.fer@c.nosp@m.ern..nosp@m.ch

Definition at line 32 of file FsrPhotonTool.h.

Member Typedef Documentation

◆ StoreGateSvc_t

typedef ServiceHandle<StoreGateSvc> AthCommonDataStore< AthCommonMsg< AlgTool > >::StoreGateSvc_t
privateinherited

Definition at line 388 of file AthCommonDataStore.h.

Constructor & Destructor Documentation

◆ FsrPhotonTool()

FSR::FsrPhotonTool::FsrPhotonTool ( const std::string & name)

Create a proper constructor for Athena.

Create a constructor for standalone usage

Definition at line 21 of file FsrPhotonTool.cxx.

22 : asg::AsgTool( name ),
24 m_isoSelTool("", this),
25 m_energyRescaler("", this),
28 {}
ToolHandle< IAsgSelectionTool > m_phIsGoodOQSelectionTool
FsrCandidate::FsrType m_fsr_type
ToolHandle< CP::IEgammaCalibrationAndSmearingTool > m_energyRescaler
ToolHandle< IAsgSelectionTool > m_elIsGoodOQSelectionTool
ToolHandle< CP::IIsolationSelectionTool > m_isoSelTool

◆ ~FsrPhotonTool()

FSR::FsrPhotonTool::~FsrPhotonTool ( )

Create a destructor.

Definition at line 30 of file FsrPhotonTool.cxx.

31 {}

Member Function Documentation

◆ compareEt()

bool FSR::FsrPhotonTool::compareEt ( const FsrCandidate & c1,
const FsrCandidate & c2 )
inlinestaticprivate

Definition at line 85 of file FsrPhotonTool.h.

◆ declareGaudiProperty()

Gaudi::Details::PropertyBase & AthCommonDataStore< AthCommonMsg< AlgTool > >::declareGaudiProperty ( Gaudi::Property< T, V, H > & hndl,
const SG::VarHandleKeyType &  )
inlineprivateinherited

specialization for handling Gaudi::Property<SG::VarHandleKey>

Definition at line 156 of file AthCommonDataStore.h.

158 {
160 hndl.value(),
161 hndl.documentation());
162
163 }
Gaudi::Details::PropertyBase & declareProperty(Gaudi::Property< T, V, H > &t)

◆ declareProperty()

Gaudi::Details::PropertyBase & AthCommonDataStore< AthCommonMsg< AlgTool > >::declareProperty ( Gaudi::Property< T, V, H > & t)
inlineinherited

Definition at line 145 of file AthCommonDataStore.h.

145 {
146 typedef typename SG::HandleClassifier<T>::type htype;
148 }
Gaudi::Details::PropertyBase & declareGaudiProperty(Gaudi::Property< T, V, H > &hndl, const SG::VarHandleKeyType &)
specialization for handling Gaudi::Property<SG::VarHandleKey>

◆ deltaPhi()

double FSR::FsrPhotonTool::deltaPhi ( float phi1,
float phi2 ) const
private

Definition at line 465 of file FsrPhotonTool.cxx.

465 {
466 double dphi= fabs(phi1 - phi2);
467 if (dphi > M_PI) dphi=2*M_PI-dphi;
468 return dphi;
469 }
#define M_PI

◆ deltaR()

double FSR::FsrPhotonTool::deltaR ( float muonEta,
float muonPhi,
float phEta,
float phPhi ) const
private

Definition at line 472 of file FsrPhotonTool.cxx.

472 {
473
474 double deta = fabs(meta - peta);
475 double dphi = deltaPhi(mphi, pphi);
476 double dR = sqrt((dphi*dphi)+(deta*deta));
477
478 return dR;
479 }
double deltaPhi(float phi1, float phi2) const

◆ detStore()

const ServiceHandle< StoreGateSvc > & AthCommonDataStore< AthCommonMsg< AlgTool > >::detStore ( ) const
inlineinherited

The standard StoreGateSvc/DetectorStore Returns (kind of) a pointer to the StoreGateSvc.

Definition at line 95 of file AthCommonDataStore.h.

◆ evtStore()

ServiceHandle< StoreGateSvc > & AthCommonDataStore< AthCommonMsg< AlgTool > >::evtStore ( )
inlineinherited

The standard StoreGateSvc (event store) Returns (kind of) a pointer to the StoreGateSvc.

Definition at line 85 of file AthCommonDataStore.h.

◆ extraDeps_update_handler()

void AthCommonDataStore< AthCommonMsg< AlgTool > >::extraDeps_update_handler ( Gaudi::Details::PropertyBase & ExtraDeps)
protectedinherited

Add StoreName to extra input/output deps as needed.

use the logic of the VarHandleKey to parse the DataObjID keys supplied via the ExtraInputs and ExtraOuputs Properties to add the StoreName if it's not explicitly given

◆ getFarFsrCandidateList()

std::vector< FsrCandidate > * FSR::FsrPhotonTool::getFarFsrCandidateList ( const xAOD::IParticle * part,
xAOD::PhotonContainer * photons_cont )
virtual

Find and Return ALL FAR FSR candidates.

Set FSR type to far

return sorted list

Implements FSR::IFsrPhotonTool.

Definition at line 185 of file FsrPhotonTool.cxx.

186 {
187
188
189 static const SG::AuxElement::Accessor<char> DFCommonPhotonsIsEMTight ("DFCommonPhotonsIsEMTight");
190 static const SG::AuxElement::Accessor<float> topoetcone20 ("topoetcone20");
191
194 std::vector< std::pair <const xAOD::IParticle*, double> > farFsrCandList;
195 farFsrCandList.clear();
196 farFsrCandList.reserve(photons_cont->size());
197
198 // Save muon or electron of overlap removal for isolation
199 ConstDataVector<xAOD::IParticleContainer> parts(SG::VIEW_ELEMENTS);
200 parts.push_back(part);
201
202 ATH_MSG_DEBUG( "In getFarFsrCandidateList function : photon size = " << photons_cont->size());
203
204 for (auto ph : *photons_cont) {
205
206 bool oqIsOK = (bool) m_phIsGoodOQSelectionTool->accept(ph);
207
208 bool is_tight_photon = DFCommonPhotonsIsEMTight(*ph);
209 if ( oqIsOK && (ph->p4().Et() > m_far_fsr_etcut) && is_tight_photon) {
210 // correct isolation leakage
211
212 ATH_MSG_VERBOSE( "Far Fsr ph bef : pt " << ph->pt() << " topoetcone20 = " << topoetcone20(*ph));
213
214 // apply isolation selection
215 bool farPhIsoOK = (bool) m_isoSelTool->accept(*ph);
216
217 ATH_MSG_VERBOSE( "Far Fsr ph aft: pt " << ph->pt() << " topoetcone20 = " << topoetcone20(*ph));
218
219 bool far_fsr_drcut_isOK = false;
220 if (farPhIsoOK) {
221 double dr = deltaR(part->eta(), part->phi(), ph->eta(), ph->phi());
222 far_fsr_drcut_isOK = (dr > m_far_fsr_drcut);
223
224 if (far_fsr_drcut_isOK && dr < 0.2) {
225 ATH_MSG_VERBOSE( "Far Fsr candidate kinematics : author " << ph->author()
226 << " Et = " << ph->p4().Et()
227 << " dr = " << dr
228 << " isoIsOK = " << farPhIsoOK );
229 }
230
231 if(far_fsr_drcut_isOK) farFsrCandList.push_back(std::make_pair(ph, dr));
232 }
233
234 ATH_MSG_DEBUG( "Far Fsr candidate kinematics : author " << ph->author()
235 << " Et = " << ph->p4().Et()
236 << " tight = " << is_tight_photon
237 << " farPhIsoOK = " << farPhIsoOK
238 << " far_fsr_drcut_isOK = " << far_fsr_drcut_isOK);
239 }
240 }
241
243 return sortFsrCandidates(farFsrCandList);
244 }
#define ATH_MSG_VERBOSE(x)
#define ATH_MSG_DEBUG(x)
size_type size() const noexcept
Returns the number of elements in the collection.
Gaudi::Property< double > m_far_fsr_etcut
Gaudi::Property< double > m_far_fsr_drcut
std::vector< FsrCandidate > * sortFsrCandidates(const std::vector< std::pair< const xAOD::IParticle *, double > > &FsrCandList, const std::string &option="ET")
Need for the FSR search.
double deltaR(float muonEta, float muonPhi, float phEta, float phPhi) const
@ VIEW_ELEMENTS
this data object is a view, it does not own its elmts
@ topoetcone20
Topo-cluster ET-sum.
setBGCode setTAP setLVL2ErrorBits bool

◆ getFsrCandidateList()

std::vector< FsrCandidate > * FSR::FsrPhotonTool::getFsrCandidateList ( const xAOD::IParticle * part,
xAOD::PhotonContainer * photons,
const xAOD::ElectronContainer * electrons )
virtual

Find ALL FSR candidates for a given particle (electron or muon) providing newly calibrated photon and electron containers.

Search for far fsr for for electron and muon Electron : far fsr is the only option - return the result Muon : In case collinar fsr not found, check the far fsr

Set FSR type to far

Implements FSR::IFsrPhotonTool.

Definition at line 137 of file FsrPhotonTool.cxx.

139 {
140 xAOD::PhotonContainer* photons_cont = NULL;
141 const xAOD::ElectronContainer* electrons_cont = NULL;
142
143 // check for photon container
144 if (0 == photons) {
145 ATH_MSG_ERROR( "getFsrCandidateList: No Photon container provided" );
146 return NULL;
147 }
148 else {
149 // set the containers
150 photons_cont = photons;
151 }
152
153 // check for electron container
154 if (0 == electrons) {
155 ATH_MSG_ERROR( "getFsrCandidateList: No Electron container provided" );
156 return NULL;
157 }
158 else {
159 // set the containers
160 electrons_cont = electrons;
161 }
162
166
169
170 const xAOD::Electron* electron = dynamic_cast<const xAOD::Electron*>(part);
171 if (electron) {
172 return getFarFsrCandidateList(part, photons_cont);
173 }
174
175 const xAOD::Muon* muon = dynamic_cast<const xAOD::Muon*>(part);
176 if (muon) {
177 std::vector<FsrCandidate>* nearlist = getNearFsrCandidateList(muon, photons_cont, electrons_cont);
178 return (nearlist->size() > 0) ? nearlist : getFarFsrCandidateList(part, photons_cont);
179 }
180
181 ATH_MSG_WARNING( "The FSR search not done !" );
182 return NULL;
183 }
#define ATH_MSG_ERROR(x)
#define ATH_MSG_WARNING(x)
virtual std::vector< FsrCandidate > * getNearFsrCandidateList(const xAOD::Muon *part, const xAOD::PhotonContainer *photons_cont, const xAOD::ElectronContainer *electrons_cont)
Find and Return ALL NEAR FSR candidates.
virtual std::vector< FsrCandidate > * getFarFsrCandidateList(const xAOD::IParticle *part, xAOD::PhotonContainer *photons_cont)
Find and Return ALL FAR FSR candidates.
PhotonContainer_v1 PhotonContainer
Definition of the current "photon container version".
ElectronContainer_v1 ElectronContainer
Definition of the current "electron container version".
Muon_v1 Muon
Reference the current persistent version:
Electron_v1 Electron
Definition of the current "egamma version".

◆ getFsrPhoton()

CP::CorrectionCode FSR::FsrPhotonTool::getFsrPhoton ( const xAOD::IParticle * part,
FsrCandidate & candidate,
xAOD::PhotonContainer * photons,
const xAOD::ElectronContainer * electrons )
virtual

Get the "FSR candidate" as a return value for a muon (collinar and far FSR)

Implements FSR::IFsrPhotonTool.

Definition at line 104 of file FsrPhotonTool.cxx.

106 {
107
108 if (photons == 0 ||electrons == 0) {
109 ATH_MSG_ERROR( "getFsrPhoton: You MUST provide photon AND electron containers" );
110 candidate = FsrCandidate();
112 }
113
114
115 std::vector<FsrCandidate>* cands = getFsrCandidateList(part, photons, electrons);
116
117 ATH_MSG_DEBUG( "Fsr candidate size = " << cands->size() );
118
119 // Return gracefully:
120 if (cands->size() > 0) {
121 candidate = cands->at(0);
123 }
124 candidate = FsrCandidate();
125 ATH_MSG_DEBUG( "Fsr candidate f1 = " << candidate.f1
126 << ", deltaR = " << candidate.deltaR
127 << ", Et = " << candidate.Et
128 << ", Eta = " << candidate.eta
129 << ", Phi = " << candidate.phi
130 << ", type = " <<candidate.type);
132
133 }
@ Error
Some error happened during the object correction.
@ Ok
The correction was done successfully.
virtual std::vector< FsrCandidate > * getFsrCandidateList(const xAOD::IParticle *part, xAOD::PhotonContainer *photons, const xAOD::ElectronContainer *electrons)
Find ALL FSR candidates for a given particle (electron or muon) providing newly calibrated photon and...

◆ getKey()

SG::sgkey_t asg::AsgTool::getKey ( const void * ptr) const
inherited

Get the (hashed) key of an object that is in the event store.

This is a bit of a special one. StoreGateSvc and xAOD::TEvent both provide ways for getting the SG::sgkey_t key for an object that is in the store, based on a bare pointer. But they provide different interfaces for doing so.

In order to allow tools to efficiently perform this operation, they can use this helper function.

See also
asg::AsgTool::getName
Parameters
ptrThe bare pointer to the object that the event store should know about
Returns
The hashed key of the object in the store. If not found, an invalid (zero) key.

Definition at line 119 of file AsgTool.cxx.

119 {
120
121#ifdef XAOD_STANDALONE
122 // In case we use @c xAOD::TEvent, we have a direct function call
123 // for this.
124 return evtStore()->event()->getKey( ptr );
125#else
126 const SG::DataProxy* proxy = evtStore()->proxy( ptr );
127 return ( proxy == nullptr ? 0 : proxy->sgkey() );
128#endif // XAOD_STANDALONE
129 }
ServiceHandle< StoreGateSvc > & evtStore()

◆ getName()

const std::string & asg::AsgTool::getName ( const void * ptr) const
inherited

Get the name of an object that is / should be in the event store.

This is a bit of a special one. StoreGateSvc and xAOD::TEvent both provide ways for getting the std::string name for an object that is in the store, based on a bare pointer. But they provide different interfaces for doing so.

In order to allow tools to efficiently perform this operation, they can use this helper function.

See also
asg::AsgTool::getKey
Parameters
ptrThe bare pointer to the object that the event store should know about
Returns
The string name of the object in the store. If not found, an empty string.

Definition at line 106 of file AsgTool.cxx.

106 {
107
108#ifdef XAOD_STANDALONE
109 // In case we use @c xAOD::TEvent, we have a direct function call
110 // for this.
111 return evtStore()->event()->getName( ptr );
112#else
113 const SG::DataProxy* proxy = evtStore()->proxy( ptr );
114 static const std::string dummy = "";
115 return ( proxy == nullptr ? dummy : proxy->name() );
116#endif // XAOD_STANDALONE
117 }

◆ getNearFsrCandidateList()

std::vector< FsrCandidate > * FSR::FsrPhotonTool::getNearFsrCandidateList ( const xAOD::Muon * part,
const xAOD::PhotonContainer * photons_cont,
const xAOD::ElectronContainer * electrons_cont )
virtual

Find and Return ALL NEAR FSR candidates.

Set FSR type to far

Start looking for collinar FSR for muons Loop over photon candidates and choose the FSR photons

Implements FSR::IFsrPhotonTool.

Definition at line 247 of file FsrPhotonTool.cxx.

249 {
254 std::vector< std::pair <const xAOD::IParticle*, double> > nearFsrCandList;
255
256 nearFsrCandList.reserve(photons_cont->size()+electrons_cont->size());
257 ATH_MSG_DEBUG( "In getNearFsrCandidateList function : photon size = " << photons_cont->size()
258 << ", electron size = " << electrons_cont->size());
259
260 for (auto photon : *photons_cont) {
261 float photon_f1;
262 photon->showerShapeValue(photon_f1, xAOD::EgammaParameters::f1);
263
264 bool oqIsOK = (bool) m_phIsGoodOQSelectionTool->accept(photon);
265
266 // Selection is tighter for photons below high_et_min
267 bool high_et_photon = (photon->p4().Et() > m_high_et_min);
268 if( ( oqIsOK && high_et_photon && (photon->p4().Et() > m_etcut) && (photon_f1 > m_f1cut) )
269 ||
270 ( oqIsOK && !high_et_photon && (photon_f1 > m_topo_f1cut)
271 && (m_etcut < photon->p4().Et())) ) {
272
273 double dr = deltaR(muon->eta(), muon->phi(), photon->eta(), photon->phi());
274
275 // ph_cl_eta/phi should be used in duplicate
276 if ( (!high_et_photon && dr < m_topo_drcut)
277 || (high_et_photon && dr < m_drcut) ) {
278 nearFsrCandList.push_back(std::make_pair(photon, dr));
279 ATH_MSG_DEBUG( "Near Fsr candidates ( photon ) kinematics ; author "
280 << photon->author()
281 << " Et = " << photon->p4().Et()
282 << " f1 = " << photon_f1
283 << " dr = " << dr );
284 }
285 }
286 }
287
288 unsigned int nofPhFsr = nearFsrCandList.size();
289
290 // look for fsr photons in electron container
291 for (auto electron : *electrons_cont) {
292 // remove overlap with fsr already found
293 if ( (nearFsrCandList.size() > 0) && isOverlap(electron, nearFsrCandList, nofPhFsr) ) continue;
294
295 // Check object quality
296 // bool oqIsOK = electron->isGoodOQ(xAOD::EgammaParameters::BADCLUSELECTRON);
297bool oqIsOK = (bool) m_elIsGoodOQSelectionTool->accept(electron);
298
299 const xAOD::TrackParticle* electron_track = electron->trackParticle();
300 const xAOD::TrackParticle* muon_track = muon->primaryTrackParticle();
301
302 bool elmutrackmatch = ( (fabs(electron_track->theta()- muon_track->theta()) < m_overlap_el_mu) &&
303 (deltaPhi(electron_track->phi(), muon_track->phi()) < m_overlap_el_mu) );
304 float electron_f1;
305 electron->showerShapeValue(electron_f1, xAOD::EgammaParameters::f1);
306
307 // Get the corrected cluster energy:
308 // if the electron energy has been calibrated, we apply the change applied to the
309 // electron four vector assuming that the uncorrected energy is
310 // Eclus/cosh(track_eta). This will not work if an e-p combination has also been
311 // applied, and so the following will have to change. RDS 04/2015.
312 float eCorr = electron->p4().Et()/(electron->caloCluster()->e()/cosh(electron->trackParticle()->eta()));
313 float clEt = eCorr*electron->caloCluster()->et();
314
315 ATH_MSG_VERBOSE( "Near Fsr candidate ( electron ) Et = " << clEt << " eCorr " << eCorr << " OQ is ok: " << (int) oqIsOK << ", pt,eta,phi " << electron->pt()/1000 << ", " << electron->eta() << ", " << electron->phi());
316
317 // Allow topo-clusters to come in as electrons - apply f1 sliding window cut for Et
318 // > 3.5 GeV and f1 topo cut for Et 1-3.5 GeV
319 if( elmutrackmatch && oqIsOK &&
322
323 double dr = deltaR(muon->eta(), muon->phi(), electron->caloCluster()->eta(), electron->caloCluster()->phi());
324
325 if ( dr < m_drcut ) {
326 nearFsrCandList.push_back(std::make_pair(electron, dr));
327 ATH_MSG_DEBUG( "Near Fsr candidates ( electron ) kinematics : author "
328 << electron->author()
329 << " Et = " << clEt
330 << " f1 = " << electron_f1
331 << " dr = " << dr );
332 }
333 else ATH_MSG_VERBOSE( "FAILED Near Fsr candidates ( electron ) kinematics : author "
334 << electron->author()
335 << " Et = " << clEt
336 << " f1 = " << electron_f1
337 << " dr = " << dr );
338 }
339 else {
340 double dr = deltaR(muon->eta(), muon->phi(), electron->caloCluster()->eta(), electron->caloCluster()->phi());
341
342 if (elmutrackmatch && dr < m_drcut ) {
343 ATH_MSG_DEBUG( "FAILED Near Fsr candidates ( electron ) kinematics : author "
344 << electron->author()
345 << " Et = " << clEt
346 << " f1 = " << electron_f1
347 << " dr = " << deltaR(muon->eta(), muon->phi(), electron->caloCluster()->eta(), electron->caloCluster()->phi())
348 << " theta/phi el/mu " << electron_track->theta() << "/" << muon->p4().Theta()
349 << "/" << electron_track->phi() << "/" << muon->phi()
350 << " theta/phi mu trk " << muon_track->theta() << "/" << muon_track->phi()
351 );
352 }
353 }
354 }
355
356 return sortFsrCandidates(nearFsrCandList);
357
358 } // end of getFsrPhotons
Gaudi::Property< double > m_drcut
Gaudi::Property< double > m_topo_drcut
Gaudi::Property< double > m_etcut
Gaudi::Property< double > m_f1cut
bool isOverlap(const xAOD::Electron_v1 *electron, const std::vector< std::pair< const xAOD::IParticle *, double > > &phfsr, unsigned int nofPhFsr)
Gaudi::Property< double > m_topo_f1cut
Gaudi::Property< double > m_overlap_el_mu
Gaudi::Property< double > m_high_et_min
float theta() const
Returns the parameter, which has range 0 to .
virtual double phi() const override final
The azimuthal angle ( ) of the particle (has range to .)
@ f1
E1/E = fraction of energy reconstructed in the first sampling, where E1 is energy in all strips belon...
Definition EgammaEnums.h:53
TrackParticle_v1 TrackParticle
Reference the current persistent version:

◆ getProperty()

template<class T>
const T * asg::AsgTool::getProperty ( const std::string & name) const
inherited

Get one of the tool's properties.

◆ initialize()

StatusCode FSR::FsrPhotonTool::initialize ( void )
virtual

Function initialising the tool.

Reimplemented from asg::AsgTool.

Definition at line 34 of file FsrPhotonTool.cxx.

34 {
35
36 // Greet the user:
37 ATH_MSG_INFO( "Initialising..." );
38
39 ATH_MSG_INFO( "initialize: high_et_min " << m_high_et_min);
40 ATH_MSG_INFO( "initialize: overlap_el_ph " << m_overlap_el_ph);
41 ATH_MSG_INFO( "initialize: overlap_el_mu " << m_overlap_el_mu);
42 ATH_MSG_INFO( "initialize: far_fsr_drcut " << m_far_fsr_drcut);
43 ATH_MSG_INFO( "initialize: far_fsr_etcut " << m_far_fsr_etcut);
44 ATH_MSG_INFO( "initialize: far_fsr_isoWorkingPoint " << m_far_fsr_isoWorkingPoint);
45 ATH_MSG_INFO( "initialize: drcut " << m_drcut);
46 ATH_MSG_INFO( "initialize: etcut " << m_etcut);
47 ATH_MSG_INFO( "initialize: f1cut " << m_f1cut);
48 ATH_MSG_INFO( "initialize: topo_drcut " << m_topo_drcut);
49 ATH_MSG_INFO( "initialize: topo_f1cut " << m_topo_f1cut);
50 ATH_MSG_INFO( "initialize: egCalibToolName " << m_energyRescalerName);
51
52 // Create IsolationSelectionTool for far fsr selection.
53 // Will use the closeBy corrected isolation variables if DoCloseByCorrection is set to true, which is default.
54 asg::AsgToolConfig config ("CP::IsolationSelectionTool/isolationSelectionTool");
55 RETURN_CHECK("initialize", config.setProperty( "PhotonWP", m_far_fsr_isoWorkingPoint));
56
57 if (m_doCloseByIso) {
58 RETURN_CHECK("initialize", config.setProperty("IsoDecSuffix", "CloseByCorr"));
59 if (msg().level() <= MSG::DEBUG) {
60 RETURN_CHECK( "initialize", config.setProperty( "OutputLevel", MSG::DEBUG) );
61 }
62 }
63 RETURN_CHECK("initialize", config.makePrivateTool (m_isoSelTool));
64 ATH_MSG_INFO("initialize - photon IsolationSelectionTool initialized " << m_isoSelTool->name());
65
66 RETURN_CHECK("initialize", m_isoSelTool.retrieve());
67
68 // get egamma calibration tool - needed to recalibrate electron as a photon
69 if (m_energyRescalerName.size()) {
70 m_energyRescaler = ToolHandle<CP::IEgammaCalibrationAndSmearingTool>(m_energyRescalerName);
71 if (m_energyRescaler.empty()) {
72 ATH_MSG_ERROR("initialize - unable to get IEgammaCalibrationAndSmearingTool with name: " << m_energyRescalerName);
73 return StatusCode::FAILURE;
74 }
75
76 ATH_MSG_INFO("initialize - found IEgammaCalibrationAndSmearingTool with name: " << m_energyRescalerName);
77 }
78 else {
79 ATH_MSG_ERROR("initialize - CANNOT retrieve IEgammaCalibrationAndSmearingTool. Please set the property 'egCalibToolName' to be able to recalibrate fsr photon found as an electron ");
80 return StatusCode::FAILURE;
81 }
82
83 // setup electron and photon object quality tools - checks object quality and Dead HV cell cuts
84
85 // electron OQ
86 asg::AsgToolConfig config1 ("CP::EgammaIsGoodOQSelectionTool/electronIsGoodOQSelectionTool");
87 RETURN_CHECK("initialize", config1.setProperty( "Mask", xAOD::EgammaParameters::BADCLUSELECTRON));
88 RETURN_CHECK("initialize", config1.makePrivateTool (m_elIsGoodOQSelectionTool));
89 RETURN_CHECK("initialize", m_elIsGoodOQSelectionTool.retrieve());
90 ATH_MSG_INFO("initialize - electronIsGoodOQSelectionTool initialized " << m_elIsGoodOQSelectionTool->name());
91
92 // photon OQ
93 asg::AsgToolConfig config2 ("CP::EgammaIsGoodOQSelectionTool/photonIsGoodOQSelectionTool");
94 RETURN_CHECK("initialize", config2.setProperty( "Mask", xAOD::EgammaParameters::BADCLUSPHOTON));
95 RETURN_CHECK("initialize", config2.makePrivateTool (m_phIsGoodOQSelectionTool));
96 RETURN_CHECK("initialize", m_phIsGoodOQSelectionTool.retrieve());
97 ATH_MSG_INFO("initialize - electronIsGoodOQSelectionTool initialized " << m_phIsGoodOQSelectionTool->name());
98
99 // Return gracefully:
100 return StatusCode::SUCCESS;
101 }
#define ATH_MSG_INFO(x)
#define RETURN_CHECK(CONTEXT, EXP)
Helper macro for checking return codes in a compact form in the code.
Definition ReturnCheck.h:26
Gaudi::Property< bool > m_doCloseByIso
Gaudi::Property< std::string > m_energyRescalerName
Gaudi::Property< double > m_overlap_el_ph
Gaudi::Property< std::string > m_far_fsr_isoWorkingPoint
const uint32_t BADCLUSELECTRON
Definition EgammaDefs.h:116
const uint32_t BADCLUSPHOTON
Definition EgammaDefs.h:124
MsgStream & msg
Definition testRead.cxx:32

◆ inputHandles()

virtual std::vector< Gaudi::DataHandle * > AthCommonDataStore< AthCommonMsg< AlgTool > >::inputHandles ( ) const
overridevirtualinherited

Return this algorithm's input handles.

We override this to include handle instances from key arrays if they have not yet been declared. See comments on updateVHKA.

◆ isOverlap()

bool FSR::FsrPhotonTool::isOverlap ( const xAOD::Electron_v1 * electron,
const std::vector< std::pair< const xAOD::IParticle *, double > > & phfsr,
unsigned int nofPhFsr )
private

Definition at line 449 of file FsrPhotonTool.cxx.

451 {
452 for (unsigned int indx=0; indx < nofPhFsr; indx++ ) {
453 const xAOD::Photon* ph = dynamic_cast<const xAOD::Photon*>(phfsr.at(indx).first);
454 const xAOD::CaloCluster* ph_cl = ph->caloCluster();
455 const xAOD::CaloCluster* el_cl = electron->caloCluster();
456 double dr = deltaR(el_cl->eta(), el_cl->phi(),
457 ph_cl->eta(), ph_cl->phi());
458 ATH_MSG_VERBOSE( "isOverlap dr, ets " << (dr < m_overlap_el_ph) << "/" << dr << "/"
459 << ph_cl->et() << "/" << el_cl->et());
460 if ( dr < m_overlap_el_ph ) return true;
461 }
462 return false;
463 }
virtual double eta() const
The pseudorapidity ( ) of the particle.
virtual double phi() const
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.
CaloCluster_v1 CaloCluster
Define the latest version of the calorimeter cluster class.
Photon_v1 Photon
Definition of the current "egamma version".

◆ msg()

MsgStream & AthCommonMsg< AlgTool >::msg ( ) const
inlineinherited

Definition at line 24 of file AthCommonMsg.h.

24 {
25 return this->msgStream();
26 }

◆ msg_level_name()

const std::string & asg::AsgTool::msg_level_name ( ) const
inherited

A deprecated function for getting the message level's name.

Instead of using this, weirdly named function, user code should get the string name of the current minimum message level (in case they really need it...), with:

MSG::name( msg().level() )

This function's name doesn't follow the ATLAS coding rules, and as such will be removed in the not too distant future.

Returns
The string name of the current minimum message level that's printed

Definition at line 101 of file AsgTool.cxx.

101 {
102
103 return MSG::name( msg().level() );
104 }
MsgStream & msg() const
const std::string & name(Level lvl)
Convenience function for translating message levels to strings.
Definition MsgLevel.cxx:19

◆ msgLvl()

bool AthCommonMsg< AlgTool >::msgLvl ( const MSG::Level lvl) const
inlineinherited

Definition at line 30 of file AthCommonMsg.h.

30 {
31 return this->msgLevel(lvl);
32 }

◆ outputHandles()

virtual std::vector< Gaudi::DataHandle * > AthCommonDataStore< AthCommonMsg< AlgTool > >::outputHandles ( ) const
overridevirtualinherited

Return this algorithm's output handles.

We override this to include handle instances from key arrays if they have not yet been declared. See comments on updateVHKA.

◆ print()

◆ renounce()

std::enable_if_t< std::is_void_v< std::result_of_t< decltype(&T::renounce)(T)> > &&!std::is_base_of_v< SG::VarHandleKeyArray, T > &&std::is_base_of_v< Gaudi::DataHandle, T >, void > AthCommonDataStore< AthCommonMsg< AlgTool > >::renounce ( T & h)
inlineprotectedinherited

Definition at line 380 of file AthCommonDataStore.h.

381 {
382 h.renounce();
384 }
std::enable_if_t< std::is_void_v< std::result_of_t< decltype(&T::renounce)(T)> > &&!std::is_base_of_v< SG::VarHandleKeyArray, T > &&std::is_base_of_v< Gaudi::DataHandle, T >, void > renounce(T &h)

◆ renounceArray()

void AthCommonDataStore< AthCommonMsg< AlgTool > >::renounceArray ( SG::VarHandleKeyArray & handlesArray)
inlineprotectedinherited

remove all handles from I/O resolution

Definition at line 364 of file AthCommonDataStore.h.

364 {
366 }

◆ sortFsrCandidates()

std::vector< FsrCandidate > * FSR::FsrPhotonTool::sortFsrCandidates ( const std::vector< std::pair< const xAOD::IParticle *, double > > & FsrCandList,
const std::string & option = "ET" )
private

Need for the FSR search.

Definition at line 361 of file FsrPhotonTool.cxx.

363 {
364
365 m_fsrPhotons.clear();
366 m_fsrPhotons.reserve(FsrCandList.size());
367
368 for (unsigned int i=0; i < FsrCandList.size(); i++ ) {
369 FsrCandidate c;
370 const xAOD::IParticle* particle = FsrCandList.at(i).first;
371 const xAOD::Electron* electron = dynamic_cast<const xAOD::Electron*>(particle);
372 const xAOD::Photon* photon = dynamic_cast<const xAOD::Photon*>(particle);
373 float part_f1(-999);
374 if ( electron ){
375 c.container = "electron" ;
376
377 // If we have an energy rescaler, calibrate correctly the electron as a photon
378 if (!m_energyRescaler.empty()) {
380 photon.Egamma_v1::operator=(*electron);
381 if (m_energyRescaler->applyCorrection(photon) != CP::CorrectionCode::Ok) {
382 ATH_MSG_ERROR("FsrPhotonTool::sortFsrCandidates: Unable to applyCorrection to photon ");
383 }
384 if ( photon.showerShapeValue(part_f1, xAOD::EgammaParameters::f1) ) c.f1 = part_f1;
385 c.Et = photon.pt();
386 c.eta = photon.caloCluster()->eta();
387 c.phi = photon.caloCluster()->phi();
388
389 ATH_MSG_DEBUG("FsrPhotonTool::sortFsrCandidates: el/ph et " << electron->pt() << "/"
390 << electron->caloCluster()->eta() << "/" << electron->caloCluster()->phi() << " "
391 << photon.pt() << "/"
392 << photon.caloCluster()->eta() << "/" << photon.caloCluster()->phi());
393 }
394 else {
395 // Use the cluster pt/eta/phi when considering the electron to be an FSR photon
396 // setup accessor for electron cluster corrected energy
397
398 // Get the corrected cluster energy:
399 // if the electron energy has been calibrated, we apply the change applied to the
400 // electron four vector assuming that the uncorrected energy is
401 // Eclus/cosh(track_eta). This will not work if an e-p combination has also been
402 // applied, and so the following will have to change. RDS 04/2015.
403 float eCorr = electron->p4().Et()/(electron->caloCluster()->e()/cosh(electron->trackParticle()->eta()));
404 float clEt = eCorr*electron->caloCluster()->et();
405 if ( electron->showerShapeValue(part_f1, xAOD::EgammaParameters::f1) ) c.f1 = part_f1;
406 c.Et = clEt;
407 c.eta = electron->caloCluster()->eta();
408 c.phi = electron->caloCluster()->phi();
409 }
410
411 }
412 else if ( photon ) {
413 c.container = "photon";
414 if ( photon->showerShapeValue(part_f1, xAOD::EgammaParameters::f1) ) c.f1 = part_f1;
415 c.Et = photon->p4().Et();
416 c.eta = photon->eta();
417 c.phi = photon->phi();
418 }
419 else {
420 ATH_MSG_WARNING( "sortFsrCandidates: undefined particle - NOT electron nor photon. Should never get here!" );
421 c.container = "";
422 c.Et = 0;
423 c.eta = 0;
424 c.phi = 0;
425 }
426 c.particle = particle;
427 c.deltaR = FsrCandList.at(i).second;
428 if(c.deltaR < 0.05) c.Et -= 400./cosh(particle->eta());
429 c.type = (c.deltaR > m_far_fsr_drcut) ? FsrCandidate::FsrFar : FsrCandidate::FsrNear;
430 m_fsrPhotons.push_back(c);
431
432 ATH_MSG_DEBUG( "sortFsrCandidates: save fsr candidate f1 = " << c.f1
433 << ", deltaR = " << c.deltaR
434 << ", Et = " << c.Et
435 << ", Eta = " << c.eta
436 << ", Phi = " << c.phi
437 << ", type = " <<c.type);
438
439 }
440
441 ATH_MSG_DEBUG( "sortFsrCandidates: found " << m_fsrPhotons.size() << " FSR photons" );
442
443 // sort FSR candidates w.r.t min dR or ET
444 if (option=="ET") std::sort(m_fsrPhotons.begin(), m_fsrPhotons.end(), compareEt);
445 else std::sort(m_fsrPhotons.begin(), m_fsrPhotons.end());
446 return &m_fsrPhotons;
447 }
static bool compareEt(const FsrCandidate &c1, const FsrCandidate &c2)
std::vector< FsrCandidate > m_fsrPhotons
constexpr ParticleHypothesis particle[PARTICLEHYPOTHESES]
the array of masses
void sort(typename DataModel_detail::iterator< DVL > beg, typename DataModel_detail::iterator< DVL > end)
Specialization of sort for DataVector/List.

◆ sysInitialize()

virtual StatusCode AthCommonDataStore< AthCommonMsg< AlgTool > >::sysInitialize ( )
overridevirtualinherited

Perform system initialization for an algorithm.

We override this to declare all the elements of handle key arrays at the end of initialization. See comments on updateVHKA.

Reimplemented in asg::AsgMetadataTool, AthCheckedComponent< AthAlgTool >, AthCheckedComponent<::AthAlgTool >, and DerivationFramework::CfAthAlgTool.

◆ sysStart()

virtual StatusCode AthCommonDataStore< AthCommonMsg< AlgTool > >::sysStart ( )
overridevirtualinherited

Handle START transition.

We override this in order to make sure that conditions handle keys can cache a pointer to the conditions container.

◆ updateVHKA()

void AthCommonDataStore< AthCommonMsg< AlgTool > >::updateVHKA ( Gaudi::Details::PropertyBase & )
inlineinherited

Definition at line 308 of file AthCommonDataStore.h.

308 {
309 // debug() << "updateVHKA for property " << p.name() << " " << p.toString()
310 // << " size: " << m_vhka.size() << endmsg;
311 for (auto &a : m_vhka) {
313 for (auto k : keys) {
314 k->setOwner(this);
315 }
316 }
317 }
std::vector< SG::VarHandleKeyArray * > m_vhka

Member Data Documentation

◆ m_AFII_corr

Gaudi::Property<bool> FSR::FsrPhotonTool::m_AFII_corr {this, "AFII_corr", false , "Is AFII for isolation correction" }
private

Definition at line 103 of file FsrPhotonTool.h.

103{this, "AFII_corr", false , "Is AFII for isolation correction" };

◆ m_detStore

StoreGateSvc_t AthCommonDataStore< AthCommonMsg< AlgTool > >::m_detStore
privateinherited

Pointer to StoreGate (detector store by default)

Definition at line 393 of file AthCommonDataStore.h.

◆ m_doCloseByIso

Gaudi::Property<bool> FSR::FsrPhotonTool::m_doCloseByIso {this, "DoCloseByCorrection", true , "flag to use isolation variables with 'CloseByCorr' suffix " }
private

Definition at line 106 of file FsrPhotonTool.h.

106{this, "DoCloseByCorrection", true , "flag to use isolation variables with 'CloseByCorr' suffix " };

◆ m_drcut

Gaudi::Property<double> FSR::FsrPhotonTool::m_drcut {this, "drcut", 0.15 , "Maximun dR cut to be near fsr" }
private

Definition at line 95 of file FsrPhotonTool.h.

95{this, "drcut", 0.15 , "Maximun dR cut to be near fsr" };

◆ m_elIsGoodOQSelectionTool

ToolHandle<IAsgSelectionTool> FSR::FsrPhotonTool::m_elIsGoodOQSelectionTool
private

Definition at line 113 of file FsrPhotonTool.h.

◆ m_energyRescaler

ToolHandle<CP::IEgammaCalibrationAndSmearingTool> FSR::FsrPhotonTool::m_energyRescaler
private

Definition at line 112 of file FsrPhotonTool.h.

◆ m_energyRescalerName

Gaudi::Property<std::string> FSR::FsrPhotonTool::m_energyRescalerName {this, "egCalibToolName", "" , "EnergyRescale tool to calibrate photons as electrons" }
private

Definition at line 101 of file FsrPhotonTool.h.

101{this, "egCalibToolName", "" , "EnergyRescale tool to calibrate photons as electrons" };

◆ m_etcut

Gaudi::Property<double> FSR::FsrPhotonTool::m_etcut {this, "etcut", 1000.0 , "Minimum Et cut for near fsr" }
private

Definition at line 96 of file FsrPhotonTool.h.

96{this, "etcut", 1000.0 , "Minimum Et cut for near fsr" };

◆ m_evtStore

StoreGateSvc_t AthCommonDataStore< AthCommonMsg< AlgTool > >::m_evtStore
privateinherited

Pointer to StoreGate (event store by default)

Definition at line 390 of file AthCommonDataStore.h.

◆ m_f1cut

Gaudi::Property<double> FSR::FsrPhotonTool::m_f1cut {this, "f1cut", 0.1 , "f1 cut for high Et clusters" }
private

Definition at line 97 of file FsrPhotonTool.h.

97{this, "f1cut", 0.1 , "f1 cut for high Et clusters" };

◆ m_far_fsr_drcut

Gaudi::Property<double> FSR::FsrPhotonTool::m_far_fsr_drcut {this, "far_fsr_drcut", 0.15 , "Minimum dR cut for far fsr" }
private

Definition at line 93 of file FsrPhotonTool.h.

93{this, "far_fsr_drcut", 0.15 , "Minimum dR cut for far fsr" };

◆ m_far_fsr_etcut

Gaudi::Property<double> FSR::FsrPhotonTool::m_far_fsr_etcut {this, "far_fsr_etcut", 10000.0 , "Minimum et cut for far fsr" }
private

Definition at line 94 of file FsrPhotonTool.h.

94{this, "far_fsr_etcut", 10000.0 , "Minimum et cut for far fsr" };

◆ m_far_fsr_isoWorkingPoint

Gaudi::Property<std::string> FSR::FsrPhotonTool::m_far_fsr_isoWorkingPoint {this, "far_fsr_isoWorkingPoint", "FixedCutLoose", "Far fsr isolation working point" }
private

Definition at line 100 of file FsrPhotonTool.h.

100{this, "far_fsr_isoWorkingPoint", "FixedCutLoose", "Far fsr isolation working point" };

◆ m_fsr_type

FsrCandidate::FsrType FSR::FsrPhotonTool::m_fsr_type
private

Definition at line 109 of file FsrPhotonTool.h.

◆ m_fsrPhotons

std::vector<FsrCandidate> FSR::FsrPhotonTool::m_fsrPhotons
private

Definition at line 108 of file FsrPhotonTool.h.

◆ m_high_et_min

Gaudi::Property<double> FSR::FsrPhotonTool::m_high_et_min {this, "high_et_min", 3500. , "Minimum Et cut for higg Et photons" }
private

Definition at line 90 of file FsrPhotonTool.h.

90{this, "high_et_min", 3500. , "Minimum Et cut for higg Et photons" };

◆ m_is_mc

Gaudi::Property<bool> FSR::FsrPhotonTool::m_is_mc {this, "IsMC", true , "Is MC" }
private

Definition at line 104 of file FsrPhotonTool.h.

104{this, "IsMC", true , "Is MC" };

◆ m_isoSelTool

ToolHandle<CP::IIsolationSelectionTool> FSR::FsrPhotonTool::m_isoSelTool
private

Definition at line 111 of file FsrPhotonTool.h.

◆ m_overlap_el_mu

Gaudi::Property<double> FSR::FsrPhotonTool::m_overlap_el_mu {this, "overlap_el_mu", 0.001 , "Overlap dR for electrons and muons" }
private

Definition at line 92 of file FsrPhotonTool.h.

92{this, "overlap_el_mu", 0.001 , "Overlap dR for electrons and muons" };

◆ m_overlap_el_ph

Gaudi::Property<double> FSR::FsrPhotonTool::m_overlap_el_ph {this, "overlap_el_ph", 0.01 , "Overlap dR for electrons and photons" }
private

Definition at line 91 of file FsrPhotonTool.h.

91{this, "overlap_el_ph", 0.01 , "Overlap dR for electrons and photons" };

◆ m_phIsGoodOQSelectionTool

ToolHandle<IAsgSelectionTool> FSR::FsrPhotonTool::m_phIsGoodOQSelectionTool
private

Definition at line 114 of file FsrPhotonTool.h.

◆ m_suppresEnergyRescaling

Gaudi::Property<bool> FSR::FsrPhotonTool::m_suppresEnergyRescaling {this, "SuppressEnergyRescaling", false , "flag to suppress energy rescaling - should only be used for testing purposes, e.g. test w/o calib for PhysLite " }
private

Definition at line 102 of file FsrPhotonTool.h.

102{this, "SuppressEnergyRescaling", false , "flag to suppress energy rescaling - should only be used for testing purposes, e.g. test w/o calib for PhysLite " };

◆ m_topo_drcut

Gaudi::Property<double> FSR::FsrPhotonTool::m_topo_drcut {this, "topo_drcut", 0.08 , "Maximum dR cut for low Et clusters" }
private

Definition at line 98 of file FsrPhotonTool.h.

98{this, "topo_drcut", 0.08 , "Maximum dR cut for low Et clusters" };

◆ m_topo_f1cut

Gaudi::Property<double> FSR::FsrPhotonTool::m_topo_f1cut {this, "topo_f1cut", 0.2 , "Minimum f1 cut for low Et clusters" }
private

Definition at line 99 of file FsrPhotonTool.h.

99{this, "topo_f1cut", 0.2 , "Minimum f1 cut for low Et clusters" };

◆ m_varHandleArraysDeclared

bool AthCommonDataStore< AthCommonMsg< AlgTool > >::m_varHandleArraysDeclared
privateinherited

Definition at line 399 of file AthCommonDataStore.h.

◆ m_vhka

std::vector<SG::VarHandleKeyArray*> AthCommonDataStore< AthCommonMsg< AlgTool > >::m_vhka
privateinherited

Definition at line 398 of file AthCommonDataStore.h.


The documentation for this class was generated from the following files: