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< StoreGateSvc > StoreGateSvc_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< FsrCandidate > m_fsrPhotons
FsrCandidate::FsrType m_fsr_type
ToolHandle< CP::IIsolationSelectionTool > m_isoSelTool
ToolHandle< CP::IEgammaCalibrationAndSmearingTool > m_energyRescaler
ToolHandle< IAsgSelectionTool > m_elIsGoodOQSelectionTool
ToolHandle< IAsgSelectionTool > m_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 471 of file FsrPhotonTool.cxx.

471 {
472 double dphi= fabs(phi1 - phi2);
473 if (dphi > M_PI) dphi=2*M_PI-dphi;
474 return dphi;
475 }
#define M_PI

◆ deltaR()

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

Definition at line 478 of file FsrPhotonTool.cxx.

478 {
479
480 double deta = fabs(meta - peta);
481 double dphi = deltaPhi(mphi, pphi);
482 double dR = sqrt((dphi*dphi)+(deta*deta));
483
484 return dR;
485 }
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<char> DFCommonPhotonsCleaning ("DFCommonPhotonsCleaning");
191 static const SG::AuxElement::Accessor<float> topoetcone20 ("topoetcone20");
192
195 std::vector< std::pair <const xAOD::IParticle*, double> > farFsrCandList;
196 farFsrCandList.clear();
197 farFsrCandList.reserve(photons_cont->size());
198
199 // Save muon or electron of overlap removal for isolation
200 ConstDataVector<xAOD::IParticleContainer> parts(SG::VIEW_ELEMENTS);
201 parts.push_back(part);
202
203 ATH_MSG_DEBUG( "In getFarFsrCandidateList function : photon size = " << photons_cont->size());
204
205 for (auto ph : *photons_cont) {
206
207 // apply both object quality and photon cleaning
208 bool oqIsOK = (bool) m_phIsGoodOQSelectionTool->accept(ph) && DFCommonPhotonsCleaning(*ph);
209
210 bool is_tight_photon = DFCommonPhotonsIsEMTight(*ph);
211 if ( oqIsOK && (ph->p4().Et() > m_far_fsr_etcut) && is_tight_photon) {
212 // correct isolation leakage
213
214 ATH_MSG_VERBOSE( "Far Fsr ph bef : pt " << ph->pt() << " topoetcone20 = " << topoetcone20(*ph));
215
216 // apply isolation selection
217 bool farPhIsoOK = (bool) m_isoSelTool->accept(*ph);
218
219 ATH_MSG_VERBOSE( "Far Fsr ph aft: pt " << ph->pt() << " topoetcone20 = " << topoetcone20(*ph));
220
221 bool far_fsr_drcut_isOK = false;
222 if (farPhIsoOK) {
223 double dr = deltaR(part->eta(), part->phi(), ph->eta(), ph->phi());
224 far_fsr_drcut_isOK = (dr > m_far_fsr_drcut);
225
226 if (far_fsr_drcut_isOK && dr < 0.2) {
227 ATH_MSG_VERBOSE( "Far Fsr candidate kinematics : author " << ph->author()
228 << " Et = " << ph->p4().Et()
229 << " dr = " << dr
230 << " isoIsOK = " << farPhIsoOK );
231 }
232
233 if(far_fsr_drcut_isOK) farFsrCandList.push_back(std::make_pair(ph, dr));
234 }
235
236 ATH_MSG_DEBUG( "Far Fsr candidate kinematics : author " << ph->author()
237 << " Et = " << ph->p4().Et()
238 << " tight = " << is_tight_photon
239 << " farPhIsoOK = " << farPhIsoOK
240 << " far_fsr_drcut_isOK = " << far_fsr_drcut_isOK);
241 }
242 }
243
245 return sortFsrCandidates(farFsrCandList);
246 }
#define ATH_MSG_DEBUG(x,...)
#define ATH_MSG_VERBOSE(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::Event 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::Event, 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::Event 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::Event, 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 249 of file FsrPhotonTool.cxx.

251 {
252
253 static const SG::AuxElement::Accessor<char> DFCommonPhotonsCleaning ("DFCommonPhotonsCleaning");
254
259 std::vector< std::pair <const xAOD::IParticle*, double> > nearFsrCandList;
260
261 nearFsrCandList.reserve(photons_cont->size()+electrons_cont->size());
262 ATH_MSG_DEBUG( "In getNearFsrCandidateList function : photon size = " << photons_cont->size()
263 << ", electron size = " << electrons_cont->size());
264
265 for (auto photon : *photons_cont) {
266 float photon_f1;
267 photon->showerShapeValue(photon_f1, xAOD::EgammaParameters::f1);
268
269 bool oqIsOK = (bool) m_phIsGoodOQSelectionTool->accept(photon) && DFCommonPhotonsCleaning(*photon);
270
271 // Selection is tighter for photons below high_et_min
272 bool high_et_photon = (photon->p4().Et() > m_high_et_min);
273 if( ( oqIsOK && high_et_photon && (photon->p4().Et() > m_etcut) && (photon_f1 > m_f1cut) )
274 ||
275 ( oqIsOK && !high_et_photon && (photon_f1 > m_topo_f1cut)
276 && (m_etcut < photon->p4().Et())) ) {
277
278 double dr = deltaR(muon->eta(), muon->phi(), photon->eta(), photon->phi());
279
280 // ph_cl_eta/phi should be used in duplicate
281 if ( (!high_et_photon && dr < m_topo_drcut)
282 || (high_et_photon && dr < m_drcut) ) {
283 nearFsrCandList.push_back(std::make_pair(photon, dr));
284 ATH_MSG_DEBUG( "Near Fsr candidates ( photon ) kinematics ; author "
285 << photon->author()
286 << " Et = " << photon->p4().Et()
287 << " f1 = " << photon_f1
288 << " dr = " << dr );
289 }
290 }
291 }
292
293 unsigned int nofPhFsr = nearFsrCandList.size();
294
295 // look for fsr photons in electron container
296 for (auto electron : *electrons_cont) {
297 // remove overlap with fsr already found
298 if ( (nearFsrCandList.size() > 0) && isOverlap(electron, nearFsrCandList, nofPhFsr) ) continue;
299
300 // Check object quality
301 // bool oqIsOK = electron->isGoodOQ(xAOD::EgammaParameters::BADCLUSELECTRON);
302bool oqIsOK = (bool) m_elIsGoodOQSelectionTool->accept(electron);
303
304 const xAOD::TrackParticle* electron_track = electron->trackParticle();
305 const xAOD::TrackParticle* muon_track = muon->trackParticle(xAOD::Muon::TrackParticleType::Primary);
306
307 bool elmutrackmatch = ( (fabs(electron_track->theta()- muon_track->theta()) < m_overlap_el_mu) &&
308 (deltaPhi(electron_track->phi(), muon_track->phi()) < m_overlap_el_mu) );
309 float electron_f1;
310 electron->showerShapeValue(electron_f1, xAOD::EgammaParameters::f1);
311
312 // Get the corrected cluster energy:
313 // if the electron energy has been calibrated, we apply the change applied to the
314 // electron four vector assuming that the uncorrected energy is
315 // Eclus/cosh(track_eta). This will not work if an e-p combination has also been
316 // applied, and so the following will have to change. RDS 04/2015.
317 float eCorr = electron->p4().Et()/(electron->caloCluster()->e()/cosh(electron->trackParticle()->eta()));
318 float clEt = eCorr*electron->caloCluster()->et();
319
320 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());
321
322 // Allow topo-clusters to come in as electrons - apply f1 sliding window cut for Et
323 // > 3.5 GeV and f1 topo cut for Et 1-3.5 GeV
324 if( elmutrackmatch && oqIsOK &&
327
328 double dr = deltaR(muon->eta(), muon->phi(), electron->caloCluster()->eta(), electron->caloCluster()->phi());
329
330 if ( dr < m_drcut ) {
331 nearFsrCandList.push_back(std::make_pair(electron, dr));
332 ATH_MSG_DEBUG( "Near Fsr candidates ( electron ) kinematics : author "
333 << electron->author()
334 << " Et = " << clEt
335 << " f1 = " << electron_f1
336 << " dr = " << dr );
337 }
338 else ATH_MSG_VERBOSE( "FAILED Near Fsr candidates ( electron ) kinematics : author "
339 << electron->author()
340 << " Et = " << clEt
341 << " f1 = " << electron_f1
342 << " dr = " << dr );
343 }
344 else {
345 double dr = deltaR(muon->eta(), muon->phi(), electron->caloCluster()->eta(), electron->caloCluster()->phi());
346
347 if (elmutrackmatch && dr < m_drcut ) {
348 ATH_MSG_DEBUG( "FAILED Near Fsr candidates ( electron ) kinematics : author "
349 << electron->author()
350 << " Et = " << clEt
351 << " f1 = " << electron_f1
352 << " dr = " << deltaR(muon->eta(), muon->phi(), electron->caloCluster()->eta(), electron->caloCluster()->phi())
353 << " theta/phi el/mu " << electron_track->theta() << "/" << muon->p4().Theta()
354 << "/" << electron_track->phi() << "/" << muon->phi()
355 << " theta/phi mu trk " << muon_track->theta() << "/" << muon_track->phi()
356 );
357 }
358 }
359 }
360
361 return sortFsrCandidates(nearFsrCandList);
362
363 } // 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 454 of file FsrPhotonTool.cxx.

456 {
457 for (unsigned int indx=0; indx < nofPhFsr; indx++ ) {
458 const xAOD::Photon* ph = dynamic_cast<const xAOD::Photon*>(phfsr.at(indx).first);
459 if (!ph) continue;
460 const xAOD::CaloCluster* ph_cl = ph->caloCluster();
461 const xAOD::CaloCluster* el_cl = electron->caloCluster();
462 double dr = deltaR(el_cl->eta(), el_cl->phi(),
463 ph_cl->eta(), ph_cl->phi());
464 ATH_MSG_VERBOSE( "isOverlap dr, ets " << (dr < m_overlap_el_ph) << "/" << dr << "/"
465 << ph_cl->et() << "/" << el_cl->et());
466 if ( dr < m_overlap_el_ph ) return true;
467 }
468 return false;
469 }
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 366 of file FsrPhotonTool.cxx.

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

◆ 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: