ATLAS Offline Software
Public Member Functions | Protected Member Functions | Private Types | Private Member Functions | Static Private Member Functions | Private Attributes | List of all members
FSR::FsrPhotonTool Class Referenceabstract

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. More...
 
 ~FsrPhotonTool ()
 Create a destructor. More...
 
virtual void print () const =0
 Print the state of the tool. More...
 
virtual void print () const
 Print the state of the tool. More...
 
ServiceHandle< StoreGateSvc > & evtStore ()
 The standard StoreGateSvc (event store) Returns (kind of) a pointer to the StoreGateSvc. More...
 
const ServiceHandle< StoreGateSvc > & evtStore () const
 The standard StoreGateSvc (event store) Returns (kind of) a pointer to the StoreGateSvc. More...
 
const ServiceHandle< StoreGateSvc > & detStore () const
 The standard StoreGateSvc/DetectorStore Returns (kind of) a pointer to the StoreGateSvc. More...
 
virtual StatusCode sysInitialize () override
 Perform system initialization for an algorithm. More...
 
virtual StatusCode sysStart () override
 Handle START transition. More...
 
virtual std::vector< Gaudi::DataHandle * > inputHandles () const override
 Return this algorithm's input handles. More...
 
virtual std::vector< Gaudi::DataHandle * > outputHandles () const override
 Return this algorithm's output handles. More...
 
Gaudi::Details::PropertyBase & declareProperty (Gaudi::Property< T > &t)
 
Gaudi::Details::PropertyBase * declareProperty (const std::string &name, SG::VarHandleKey &hndl, const std::string &doc, const SG::VarHandleKeyType &)
 Declare a new Gaudi property. More...
 
Gaudi::Details::PropertyBase * declareProperty (const std::string &name, SG::VarHandleBase &hndl, const std::string &doc, const SG::VarHandleType &)
 Declare a new Gaudi property. More...
 
Gaudi::Details::PropertyBase * declareProperty (const std::string &name, SG::VarHandleKeyArray &hndArr, const std::string &doc, const SG::VarHandleKeyArrayType &)
 
Gaudi::Details::PropertyBase * declareProperty (const std::string &name, T &property, const std::string &doc, const SG::NotHandleType &)
 Declare a new Gaudi property. More...
 
Gaudi::Details::PropertyBase * declareProperty (const std::string &name, T &property, const std::string &doc="none")
 Declare a new Gaudi property. More...
 
void updateVHKA (Gaudi::Details::PropertyBase &)
 
MsgStream & msg () const
 
MsgStream & msg (const MSG::Level lvl) const
 
bool msgLvl (const MSG::Level lvl) const
 
Function(s) implementing the asg::IAsgTool interface
virtual StatusCode initialize ()
 Function initialising the tool. More...
 
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) More...
 
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. More...
 
virtual std::vector< FsrCandidate > * getFarFsrCandidateList (const xAOD::IParticle *part, xAOD::PhotonContainer *photons_cont)
 Find and Return ALL FAR FSR candidates. More...
 
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. More...
 

Protected Member Functions

void renounceArray (SG::VarHandleKeyArray &handlesArray)
 remove all handles from I/O resolution More...
 
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. More...
 

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. More...
 
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 > &hndl, const SG::VarHandleKeyType &)
 specialization for handling Gaudi::Property<SG::VarHandleKey> More...
 
Gaudi::Details::PropertyBase & declareGaudiProperty (Gaudi::Property< T > &hndl, const SG::VarHandleKeyArrayType &)
 specialization for handling Gaudi::Property<SG::VarHandleKeyArray> More...
 
Gaudi::Details::PropertyBase & declareGaudiProperty (Gaudi::Property< T > &hndl, const SG::VarHandleType &)
 specialization for handling Gaudi::Property<SG::VarHandleBase> More...
 
Gaudi::Details::PropertyBase & declareGaudiProperty (Gaudi::Property< T > &t, const SG::NotHandleType &)
 specialization for handling everything that's not a Gaudi::Property<SG::VarHandleKey> or a <SG::VarHandleKeyArray> More...
 

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_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::IIsolationCorrectionToolm_isoCorrTool
 
ToolHandle< CP::IEgammaCalibrationAndSmearingToolm_energyRescaler
 
StoreGateSvc_t m_evtStore
 Pointer to StoreGate (event store by default) More...
 
StoreGateSvc_t m_detStore
 Pointer to StoreGate (detector store by default) More...
 
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

Definition at line 30 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 20 of file FsrPhotonTool.cxx.

21  : asg::AsgTool( name ),
23  m_isoSelTool("", this),
24  m_isoCorrTool("", this),
25  m_energyRescaler("", this)
26  {}

◆ ~FsrPhotonTool()

FSR::FsrPhotonTool::~FsrPhotonTool ( )

Create a destructor.

Definition at line 28 of file FsrPhotonTool.cxx.

29  {}

Member Function Documentation

◆ compareEt()

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

Definition at line 83 of file FsrPhotonTool.h.

83 { return (c1.Et > c2.Et); }

◆ declareGaudiProperty() [1/4]

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

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

Definition at line 170 of file AthCommonDataStore.h.

172  {
173  return *AthCommonDataStore<PBASE>::declareProperty(hndl.name(),
174  hndl.value(),
175  hndl.documentation());
176 
177  }

◆ declareGaudiProperty() [2/4]

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

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

Definition at line 156 of file AthCommonDataStore.h.

158  {
159  return *AthCommonDataStore<PBASE>::declareProperty(hndl.name(),
160  hndl.value(),
161  hndl.documentation());
162 
163  }

◆ declareGaudiProperty() [3/4]

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

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

Definition at line 184 of file AthCommonDataStore.h.

186  {
187  return *AthCommonDataStore<PBASE>::declareProperty(hndl.name(),
188  hndl.value(),
189  hndl.documentation());
190  }

◆ declareGaudiProperty() [4/4]

Gaudi::Details::PropertyBase& AthCommonDataStore< AthCommonMsg< AlgTool > >::declareGaudiProperty ( Gaudi::Property< T > &  t,
const SG::NotHandleType  
)
inlineprivateinherited

specialization for handling everything that's not a Gaudi::Property<SG::VarHandleKey> or a <SG::VarHandleKeyArray>

Definition at line 199 of file AthCommonDataStore.h.

200  {
201  return PBASE::declareProperty(t);
202  }

◆ declareProperty() [1/6]

Gaudi::Details::PropertyBase* AthCommonDataStore< AthCommonMsg< AlgTool > >::declareProperty ( const std::string &  name,
SG::VarHandleBase hndl,
const std::string &  doc,
const SG::VarHandleType  
)
inlineinherited

Declare a new Gaudi property.

Parameters
nameName of the property.
hndlObject holding the property value.
docDocumentation string for the property.

This is the version for types that derive from SG::VarHandleBase. The property value object is put on the input and output lists as appropriate; then we forward to the base class.

Definition at line 245 of file AthCommonDataStore.h.

249  {
250  this->declare(hndl.vhKey());
251  hndl.vhKey().setOwner(this);
252 
253  return PBASE::declareProperty(name,hndl,doc);
254  }

◆ declareProperty() [2/6]

Gaudi::Details::PropertyBase* AthCommonDataStore< AthCommonMsg< AlgTool > >::declareProperty ( const std::string &  name,
SG::VarHandleKey hndl,
const std::string &  doc,
const SG::VarHandleKeyType  
)
inlineinherited

Declare a new Gaudi property.

Parameters
nameName of the property.
hndlObject holding the property value.
docDocumentation string for the property.

This is the version for types that derive from SG::VarHandleKey. The property value object is put on the input and output lists as appropriate; then we forward to the base class.

Definition at line 221 of file AthCommonDataStore.h.

225  {
226  this->declare(hndl);
227  hndl.setOwner(this);
228 
229  return PBASE::declareProperty(name,hndl,doc);
230  }

◆ declareProperty() [3/6]

Gaudi::Details::PropertyBase* AthCommonDataStore< AthCommonMsg< AlgTool > >::declareProperty ( const std::string &  name,
SG::VarHandleKeyArray hndArr,
const std::string &  doc,
const SG::VarHandleKeyArrayType  
)
inlineinherited

Definition at line 259 of file AthCommonDataStore.h.

263  {
264 
265  // std::ostringstream ost;
266  // ost << Algorithm::name() << " VHKA declareProp: " << name
267  // << " size: " << hndArr.keys().size()
268  // << " mode: " << hndArr.mode()
269  // << " vhka size: " << m_vhka.size()
270  // << "\n";
271  // debug() << ost.str() << endmsg;
272 
273  hndArr.setOwner(this);
274  m_vhka.push_back(&hndArr);
275 
276  Gaudi::Details::PropertyBase* p = PBASE::declareProperty(name, hndArr, doc);
277  if (p != 0) {
278  p->declareUpdateHandler(&AthCommonDataStore<PBASE>::updateVHKA, this);
279  } else {
280  ATH_MSG_ERROR("unable to call declareProperty on VarHandleKeyArray "
281  << name);
282  }
283 
284  return p;
285 
286  }

◆ declareProperty() [4/6]

Gaudi::Details::PropertyBase* AthCommonDataStore< AthCommonMsg< AlgTool > >::declareProperty ( const std::string &  name,
T &  property,
const std::string &  doc,
const SG::NotHandleType  
)
inlineinherited

Declare a new Gaudi property.

Parameters
nameName of the property.
propertyObject holding the property value.
docDocumentation string for the property.

This is the generic version, for types that do not derive from SG::VarHandleKey. It just forwards to the base class version of declareProperty.

Definition at line 333 of file AthCommonDataStore.h.

337  {
338  return PBASE::declareProperty(name, property, doc);
339  }

◆ declareProperty() [5/6]

Gaudi::Details::PropertyBase* AthCommonDataStore< AthCommonMsg< AlgTool > >::declareProperty ( const std::string &  name,
T &  property,
const std::string &  doc = "none" 
)
inlineinherited

Declare a new Gaudi property.

Parameters
nameName of the property.
propertyObject holding the property value.
docDocumentation string for the property.

This dispatches to either the generic declareProperty or the one for VarHandle/Key/KeyArray.

Definition at line 352 of file AthCommonDataStore.h.

355  {
356  typedef typename SG::HandleClassifier<T>::type htype;
357  return declareProperty (name, property, doc, htype());
358  }

◆ declareProperty() [6/6]

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

Definition at line 145 of file AthCommonDataStore.h.

145  {
146  typedef typename SG::HandleClassifier<T>::type htype;
148  }

◆ deltaPhi()

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

Definition at line 460 of file FsrPhotonTool.cxx.

461  {
462  double dphi= fabs(phi1 - phi2);
463  if (dphi > M_PI) dphi=2*M_PI-dphi;
464  return dphi;
465  }

◆ deltaR()

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

Definition at line 468 of file FsrPhotonTool.cxx.

468  {
469 
470  double deta = fabs(meta - peta);
471  double dphi = deltaPhi(mphi, pphi);
472  double dR = sqrt((dphi*dphi)+(deta*deta));
473 
474  return dR;
475  }

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

95 { return m_detStore; }

◆ evtStore() [1/2]

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.

85 { return m_evtStore; }

◆ evtStore() [2/2]

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

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

Definition at line 90 of file AthCommonDataStore.h.

90 { return m_evtStore; }

◆ 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 184 of file FsrPhotonTool.cxx.

185  {
186 
187 
188  static const SG::AuxElement::Accessor<char> DFCommonPhotonsIsEMTight ("DFCommonPhotonsIsEMTight");
189  static const SG::AuxElement::Accessor<float> topoetcone20 ("topoetcone20");
190 
192  m_fsr_type = FsrCandidate::FsrType::FsrFar;
193  std::vector< std::pair <const xAOD::IParticle*, double> > farFsrCandList;
194  farFsrCandList.clear();
195  farFsrCandList.reserve(photons_cont->size());
196 
197  // Save muon or electron of overlap removal for isolation
199  parts.push_back(part);
200 
201  ATH_MSG_DEBUG( "In getFarFsrCandidateList function : photon size = " << photons_cont->size());
202 
203  for (auto ph : *photons_cont) {
204 
205  bool is_tight_photon = DFCommonPhotonsIsEMTight(*ph);
206  if ( (ph->p4().Et() > m_far_fsr_etcut) && is_tight_photon) {
207  // correct isolation leakage
208 
209  ATH_MSG_VERBOSE( "Far Fsr ph bef : pt " << ph->pt() << " topoetcone20 = " << topoetcone20(*ph));
210 
211  CP::CorrectionCode rc = m_isoCorrTool->applyCorrection(*ph);
212  if (CP::CorrectionCode::Ok != rc) {
213  ATH_MSG_ERROR("applyIsoSelection: Unable to apply iso correction for photon " << ph->pt());
214  }
215 
216  ATH_MSG_VERBOSE( "Far Fsr ph aft : pt " << ph->pt() << " topoetcone20 = " << topoetcone20(*ph));
217 
218  // apply isolation selection
219  bool farPhIsoOK = (bool) m_isoSelTool->accept(*ph);
220 
221  ATH_MSG_VERBOSE( "Far Fsr ph aft1: pt " << ph->pt() << " topoetcone20 = " << topoetcone20(*ph));
222 
223  bool far_fsr_drcut_isOK = false;
224  if (farPhIsoOK) {
225  double dr = deltaR(part->eta(), part->phi(), ph->eta(), ph->phi());
226  far_fsr_drcut_isOK = (dr > m_far_fsr_drcut);
227 
228  if (far_fsr_drcut_isOK && dr < 0.2) {
229  ATH_MSG_VERBOSE( "Far Fsr candidate kinematics : author " << ph->author()
230  << " Et = " << ph->p4().Et()
231  << " dr = " << dr
232  << " isoIsOK = " << farPhIsoOK );
233  }
234 
235  if(far_fsr_drcut_isOK) farFsrCandList.push_back(std::make_pair(ph, dr));
236  }
237 
238  ATH_MSG_DEBUG( "Far Fsr candidate kinematics : author " << ph->author()
239  << " Et = " << ph->p4().Et()
240  << " tight = " << is_tight_photon
241  << " farPhIsoOK = " << farPhIsoOK
242  << " far_fsr_drcut_isOK = " << far_fsr_drcut_isOK);
243  }
244  }
245 
247  return sortFsrCandidates(farFsrCandList);
248  }

◆ 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 135 of file FsrPhotonTool.cxx.

138  {
139  xAOD::PhotonContainer* photons_cont = NULL;
140  const xAOD::ElectronContainer* electrons_cont = NULL;
141 
142  // check for photon container
143  if (0 == photons) {
144  ATH_MSG_ERROR( "getFsrCandidateList: No Photon container provided" );
145  return NULL;
146  }
147  else {
148  // set the containers
149  photons_cont = photons;
150  }
151 
152  // check for electron container
153  if (0 == electrons) {
154  ATH_MSG_ERROR( "getFsrCandidateList: No Electron container provided" );
155  return NULL;
156  }
157  else {
158  // set the containers
159  electrons_cont = electrons;
160  }
161 
165 
167  m_fsr_type = FsrCandidate::FsrType::FsrUnknown;
168 
169  const xAOD::Electron* electron = dynamic_cast<const xAOD::Electron*>(part);
170  if (electron) {
171  return getFarFsrCandidateList(part, photons_cont);
172  }
173 
174  const xAOD::Muon* muon = dynamic_cast<const xAOD::Muon*>(part);
175  if (muon) {
176  std::vector<FsrCandidate>* nearlist = getNearFsrCandidateList(muon, photons_cont, electrons_cont);
177  return (nearlist->size() > 0) ? nearlist : getFarFsrCandidateList(part, photons_cont);
178  }
179 
180  ATH_MSG_WARNING( "The FSR search not done !" );
181  return NULL;
182  }

◆ 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 101 of file FsrPhotonTool.cxx.

104  {
105 
106  if (photons == 0 ||electrons == 0) {
107  ATH_MSG_ERROR( "getFsrPhoton: You MUST provide photon AND electron containers" );
108  candidate = FsrCandidate();
110  }
111 
112 
113  std::vector<FsrCandidate>* cands = getFsrCandidateList(part, photons, electrons);
114 
115  ATH_MSG_DEBUG( "Fsr candidate size = " << cands->size() );
116 
117  // Return gracefully:
118  if (cands->size() > 0) {
119  candidate = cands->at(0);
120  return CP::CorrectionCode::Ok;
121  }
122  candidate = FsrCandidate();
123  ATH_MSG_DEBUG( "Fsr candidate f1 = " << candidate.f1
124  << ", deltaR = " << candidate.deltaR
125  << ", Et = " << candidate.Et
126  << ", Eta = " << candidate.eta
127  << ", Phi = " << candidate.phi
128  << ", type = " <<candidate.type);
130 
131  }

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

◆ 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 251 of file FsrPhotonTool.cxx.

252  {
254  m_fsr_type = FsrCandidate::FsrType::FsrNear;
257  std::vector< std::pair <const xAOD::IParticle*, double> > nearFsrCandList;
258 
259  nearFsrCandList.reserve(photons_cont->size()+electrons_cont->size());
260  ATH_MSG_DEBUG( "In getNearFsrCandidateList function : photon size = " << photons_cont->size()
261  << ", electron size = " << electrons_cont->size());
262 
263  for (auto photon : *photons_cont) {
264  float photon_f1;
265  photon->showerShapeValue(photon_f1, xAOD::EgammaParameters::f1);
266 
267  // Selection is tighter for photons below high_et_min
268  bool high_et_photon = (photon->p4().Et() > m_high_et_min);
269  if( ( high_et_photon && (photon->p4().Et() > m_etcut) && (photon_f1 > m_f1cut) )
270  ||( !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  {
293  // remove overlap with fsr already found
294  if ( (nearFsrCandList.size() > 0) && isOverlap(electron, nearFsrCandList, nofPhFsr) ) continue;
295 
296  const xAOD::TrackParticle* electron_track = electron->trackParticle();
297  const xAOD::TrackParticle* muon_track = muon->primaryTrackParticle();
298 
299  bool elmutrackmatch = ( (fabs(electron_track->theta()- muon_track->theta()) < m_overlap_el_mu) &&
300  (deltaPhi(electron_track->phi(), muon_track->phi()) < m_overlap_el_mu) );
301  float electron_f1;
302  electron->showerShapeValue(electron_f1, xAOD::EgammaParameters::f1);
303 
304  // Get the corrected cluster energy:
305  // if the electron energy has been calibrated, we apply the change applied to the
306  // electron four vector assuming that the uncorrected energy is
307  // Eclus/cosh(track_eta). This will not work if an e-p combination has also been
308  // applied, and so the following will have to change. RDS 04/2015.
309  float eCorr = electron->p4().Et()/(electron->caloCluster()->e()/cosh(electron->trackParticle()->eta()));
310  float clEt = eCorr*electron->caloCluster()->et();
311 
312  ATH_MSG_VERBOSE( "Near Fsr candidate ( electron ) Et = " << clEt << " eCorr " << eCorr);
313 
314  // Allow topo-clusters to come in as electrons - apply f1 sliding window cut for Et
315  // > 3.5 GeV and f1 topo cut for Et 1-3.5 GeV
316  if( elmutrackmatch &&
317  ((clEt < m_high_et_min && m_etcut < clEt && electron_f1 > m_topo_f1cut ) ||
318  (m_high_et_min < clEt && electron_f1 > m_f1cut )) ) {
319 
320  double dr = deltaR(muon->eta(), muon->phi(), electron->caloCluster()->eta(), electron->caloCluster()->phi());
321 
322  if ( dr < m_drcut ) {
323  nearFsrCandList.push_back(std::make_pair(electron, dr));
324  ATH_MSG_DEBUG( "Near Fsr candidates ( electron ) kinematics : author "
325  << electron->author()
326  << " Et = " << clEt
327  << " f1 = " << electron_f1
328  << " dr = " << dr );
329  }
330  else ATH_MSG_VERBOSE( "FAILED Near Fsr candidates ( electron ) kinematics : author "
331  << electron->author()
332  << " Et = " << clEt
333  << " f1 = " << electron_f1
334  << " dr = " << dr );
335  }
336  else {
337  double dr = deltaR(muon->eta(), muon->phi(), electron->caloCluster()->eta(), electron->caloCluster()->phi());
338 
339  if (elmutrackmatch && dr < m_drcut ) {
340  ATH_MSG_DEBUG( "FAILED Near Fsr candidates ( electron ) kinematics : author "
341  << electron->author()
342  << " Et = " << clEt
343  << " f1 = " << electron_f1
344  << " dr = " << deltaR(muon->eta(), muon->phi(), electron->caloCluster()->eta(), electron->caloCluster()->phi())
345  << " theta/phi el/mu " << electron_track->theta() << "/" << muon->p4().Theta()
346  << "/" << electron_track->phi() << "/" << muon->phi()
347  << " theta/phi mu trk " << muon_track->theta() << "/" << muon_track->phi()
348  );
349  }
350  }
351  }
352 
353  return sortFsrCandidates(nearFsrCandList);
354 
355  } // end of getFsrPhotons

◆ 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 ( )
virtual

Function initialising the tool.

Reimplemented from asg::AsgTool.

Definition at line 32 of file FsrPhotonTool.cxx.

32  {
33 
34  // Greet the user:
35  ATH_MSG_INFO( "Initialising..." );
36 
37  ATH_MSG_INFO( "initialize: high_et_min " << m_high_et_min);
38  ATH_MSG_INFO( "initialize: overlap_el_ph " << m_overlap_el_ph);
39  ATH_MSG_INFO( "initialize: overlap_el_mu " << m_overlap_el_mu);
40  ATH_MSG_INFO( "initialize: far_fsr_drcut " << m_far_fsr_drcut);
41  ATH_MSG_INFO( "initialize: far_fsr_etcut " << m_far_fsr_etcut);
42  ATH_MSG_INFO( "initialize: far_fsr_isoWorkingPoint " << m_far_fsr_isoWorkingPoint);
43  ATH_MSG_INFO( "initialize: drcut " << m_drcut);
44  ATH_MSG_INFO( "initialize: etcut " << m_etcut);
45  ATH_MSG_INFO( "initialize: f1cut " << m_f1cut);
46  ATH_MSG_INFO( "initialize: topo_drcut " << m_topo_drcut);
47  ATH_MSG_INFO( "initialize: topo_f1cut " << m_topo_f1cut);
48  ATH_MSG_INFO( "initialize: egCalibToolName " << m_energyRescalerName);
49 
50  // Initialize the isolation tool for leakage correction
51 
52  asg::AsgToolConfig config1 ("CP::IsolationCorrectionTool/isoCorrTool");
53  RETURN_CHECK("initialize", config1.setProperty ("AFII_corr", m_AFII_corr));
54  RETURN_CHECK("initialize", config1.setProperty ("IsMC", m_is_mc));
55  ATH_MSG_DEBUG("initialize - set IsMC/AFII_corr: " << int(m_is_mc) << "/" << int(m_AFII_corr) << " for IsolationCorrectionTool ");
56  if (msg().level() <= MSG::DEBUG) {
57  RETURN_CHECK( "initialize", config1.setProperty( "OutputLevel", MSG::DEBUG) );
58  }
59  RETURN_CHECK("initialize", config1.makePrivateTool (m_isoCorrTool));
60  ATH_MSG_INFO("initialize - IsolationCorrectionTool initialized " << m_isoCorrTool->name());
61 
62 
63  // Create IsolationSelectionTool for far fsr selection.
64  // Will use the closeBy corrected isolation variables if DoCloseByCorrection is set to true, which is default.
65  asg::AsgToolConfig config2 ("CP::IsolationSelectionTool/isolationSelectionTool");
66  RETURN_CHECK("initialize", config2.setProperty( "PhotonWP", m_far_fsr_isoWorkingPoint));
67 
68  if (m_doCloseByIso) {
69  RETURN_CHECK("initialize", config2.setProperty("IsoDecSuffix", "CloseByCorr"));
70  if (msg().level() <= MSG::DEBUG) {
71  RETURN_CHECK( "initialize", config2.setProperty( "OutputLevel", MSG::DEBUG) );
72  }
73  }
74  RETURN_CHECK("initialize", config2.makePrivateTool (m_isoSelTool));
75  ATH_MSG_INFO("initialize - photon IsolationSelectionTool initialized " << m_isoSelTool->name());
76 
77  RETURN_CHECK("initialize", m_isoSelTool.retrieve());
78  RETURN_CHECK("initialize", m_isoCorrTool.retrieve());
79 
80  // get egamma calibration tool - needed to recalibrate electron as a photon
81  if (m_energyRescalerName.size()) {
82  m_energyRescaler = ToolHandle<CP::IEgammaCalibrationAndSmearingTool>(m_energyRescalerName);
83  if (m_energyRescaler.empty()) {
84  ATH_MSG_ERROR("initialize - unable to get IEgammaCalibrationAndSmearingTool with name: " << m_energyRescalerName);
85  return StatusCode::FAILURE;
86  }
87 
88  ATH_MSG_INFO("initialize - found IEgammaCalibrationAndSmearingTool with name: " << m_energyRescalerName);
89  }
90  else {
91  ATH_MSG_ERROR("initialize - CANNOT retrive IEgammaCalibrationAndSmearingTool. Please set the property 'egCalibToolName' to be able to recalibrate fsr photon found as an electron ");
92  return StatusCode::FAILURE;
93  }
94 
95 
96  // Return gracefully:
97  return StatusCode::SUCCESS;
98  }

◆ 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 445 of file FsrPhotonTool.cxx.

446  {
447  for (unsigned int indx=0; indx < nofPhFsr; indx++ ) {
448  const xAOD::Photon* ph = dynamic_cast<const xAOD::Photon*>(phfsr.at(indx).first);
449  const xAOD::CaloCluster* ph_cl = ph->caloCluster();
450  const xAOD::CaloCluster* el_cl = electron->caloCluster();
451  double dr = deltaR(el_cl->eta(), el_cl->phi(),
452  ph_cl->eta(), ph_cl->phi());
453  ATH_MSG_VERBOSE( "isOverlap dr, ets " << (dr < m_overlap_el_ph) << "/" << dr << "/"
454  << ph_cl->et() << "/" << el_cl->et());
455  if ( dr < m_overlap_el_ph ) return true;
456  }
457  return false;
458  }

◆ msg() [1/2]

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

Definition at line 24 of file AthCommonMsg.h.

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

◆ msg() [2/2]

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

Definition at line 27 of file AthCommonMsg.h.

27  {
28  return this->msgStream(lvl);
29  }

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

◆ 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() [1/2]

void asg::AsgTool::print ( ) const
virtualinherited

◆ print() [2/2]

virtual void asg::IAsgTool::print ( ) const
pure virtualinherited

◆ 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();
383  PBASE::renounce (h);
384  }

◆ 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  {
365  handlesArray.renounce();
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 358 of file FsrPhotonTool.cxx.

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

◆ 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 DerivationFramework::CfAthAlgTool, AthCheckedComponent< AthAlgTool >, AthCheckedComponent<::AthAlgTool >, and asg::AsgMetadataTool.

◆ 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) {
312  std::vector<SG::VarHandleKey*> keys = a->keys();
313  for (auto k : keys) {
314  k->setOwner(this);
315  }
316  }
317  }

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 100 of file FsrPhotonTool.h.

◆ 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 103 of file FsrPhotonTool.h.

◆ m_drcut

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

Definition at line 93 of file FsrPhotonTool.h.

◆ m_energyRescaler

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

Definition at line 110 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 99 of file FsrPhotonTool.h.

◆ m_etcut

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

Definition at line 94 of file FsrPhotonTool.h.

◆ 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 95 of file FsrPhotonTool.h.

◆ 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 91 of file FsrPhotonTool.h.

◆ 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 92 of file FsrPhotonTool.h.

◆ 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 98 of file FsrPhotonTool.h.

◆ m_fsr_type

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

Definition at line 106 of file FsrPhotonTool.h.

◆ m_fsrPhotons

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

Definition at line 105 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 88 of file FsrPhotonTool.h.

◆ m_is_mc

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

Definition at line 101 of file FsrPhotonTool.h.

◆ m_isoCorrTool

ToolHandle<CP::IIsolationCorrectionTool> FSR::FsrPhotonTool::m_isoCorrTool
private

Definition at line 109 of file FsrPhotonTool.h.

◆ m_isoSelTool

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

Definition at line 108 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 90 of file FsrPhotonTool.h.

◆ 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 89 of file FsrPhotonTool.h.

◆ 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 96 of file FsrPhotonTool.h.

◆ 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 97 of file FsrPhotonTool.h.

◆ 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:
LArG4FSStartPointFilter.part
part
Definition: LArG4FSStartPointFilter.py:21
xAOD::CaloCluster_v1::phi
virtual double phi() const
The azimuthal angle ( ) of the particle.
Definition: CaloCluster_v1.cxx:256
xAOD::muon
@ muon
Definition: TrackingPrimitives.h:195
RETURN_CHECK
#define RETURN_CHECK(CONTEXT, EXP)
Helper macro for checking return codes in a compact form in the code.
Definition: ReturnCheck.h:26
asg::AsgTool
Base class for the dual-use tool implementation classes.
Definition: AsgTool.h:47
Trk::ParticleSwitcher::particle
constexpr ParticleHypothesis particle[PARTICLEHYPOTHESES]
the array of masses
Definition: ParticleHypothesis.h:76
xAOD::Iso::topoetcone20
@ topoetcone20
Topo-cluster ET-sum.
Definition: IsolationType.h:48
StateLessPT_NewConfig.proxy
proxy
Definition: StateLessPT_NewConfig.py:392
ATH_MSG_INFO
#define ATH_MSG_INFO(x)
Definition: AthMsgStreamMacros.h:31
FSR::FsrPhotonTool::m_f1cut
Gaudi::Property< double > m_f1cut
Definition: FsrPhotonTool.h:95
SG::Accessor
Helper class to provide type-safe access to aux data.
Definition: Control/AthContainers/AthContainers/Accessor.h:68
SG::VIEW_ELEMENTS
@ VIEW_ELEMENTS
this data object is a view, it does not own its elmts
Definition: OwnershipPolicy.h:18
AthCommonDataStore::declareProperty
Gaudi::Details::PropertyBase & declareProperty(Gaudi::Property< T > &t)
Definition: AthCommonDataStore.h:145
FSR::FsrPhotonTool::m_overlap_el_ph
Gaudi::Property< double > m_overlap_el_ph
Definition: FsrPhotonTool.h:89
extractSporadic.c1
c1
Definition: extractSporadic.py:134
FSR::FsrPhotonTool::compareEt
static bool compareEt(const FsrCandidate &c1, const FsrCandidate &c2)
Definition: FsrPhotonTool.h:83
M_PI
#define M_PI
Definition: ActiveFraction.h:11
AthCommonDataStore< AthCommonMsg< AlgTool > >::m_evtStore
StoreGateSvc_t m_evtStore
Pointer to StoreGate (event store by default)
Definition: AthCommonDataStore.h:390
AthCommonDataStore< AthCommonMsg< AlgTool > >::m_vhka
std::vector< SG::VarHandleKeyArray * > m_vhka
Definition: AthCommonDataStore.h:398
xAOD::CaloCluster_v1::et
double et() const
Definition: CaloCluster_v1.h:856
python.TurnDataReader.dr
dr
Definition: TurnDataReader.py:112
read_hist_ntuple.t
t
Definition: read_hist_ntuple.py:5
FSR::FsrPhotonTool::m_fsrPhotons
std::vector< FsrCandidate > m_fsrPhotons
Definition: FsrPhotonTool.h:105
ATH_MSG_VERBOSE
#define ATH_MSG_VERBOSE(x)
Definition: AthMsgStreamMacros.h:28
dbg::ptr
void * ptr(T *p)
Definition: SGImplSvc.cxx:74
xAOD::IParticle
Class providing the definition of the 4-vector interface.
Definition: Event/xAOD/xAODBase/xAODBase/IParticle.h:41
FSR::FsrPhotonTool::m_is_mc
Gaudi::Property< bool > m_is_mc
Definition: FsrPhotonTool.h:101
xAOD::Muon_v1
Class describing a Muon.
Definition: Muon_v1.h:38
FSR::FsrPhotonTool::m_far_fsr_isoWorkingPoint
Gaudi::Property< std::string > m_far_fsr_isoWorkingPoint
Definition: FsrPhotonTool.h:98
python.iconfTool.models.loaders.level
level
Definition: loaders.py:20
SG::VarHandleKeyArray::setOwner
virtual void setOwner(IDataHandleHolder *o)=0
IDTPMcnv.htype
htype
Definition: IDTPMcnv.py:29
FSR::FsrCandidate::FsrUnknown
@ FsrUnknown
Definition: IFsrPhotonTool.h:29
AthCommonDataStore< AthCommonMsg< AlgTool > >::evtStore
ServiceHandle< StoreGateSvc > & evtStore()
The standard StoreGateSvc (event store) Returns (kind of) a pointer to the StoreGateSvc.
Definition: AthCommonDataStore.h:85
CP::CorrectionCode::Error
@ Error
Some error happened during the object correction.
Definition: CorrectionCode.h:36
xAOD::CaloCluster_v1
Description of a calorimeter cluster.
Definition: CaloCluster_v1.h:59
FSR::FsrPhotonTool::m_energyRescalerName
Gaudi::Property< std::string > m_energyRescalerName
Definition: FsrPhotonTool.h:99
python.utils.AtlRunQueryDQUtils.p
p
Definition: AtlRunQueryDQUtils.py:210
AthCommonDataStore
Definition: AthCommonDataStore.h:52
ATH_MSG_ERROR
#define ATH_MSG_ERROR(x)
Definition: AthMsgStreamMacros.h:33
asg::AsgToolConfig
an object that can create a AsgTool
Definition: AsgToolConfig.h:22
xAOD::EgammaParameters::f1
@ f1
E1/E = fraction of energy reconstructed in the first sampling, where E1 is energy in all strips belon...
Definition: EgammaEnums.h:52
xAOD::CaloCluster_v1::eta
virtual double eta() const
The pseudorapidity ( ) of the particle.
Definition: CaloCluster_v1.cxx:251
lumiFormat.i
int i
Definition: lumiFormat.py:85
FSR::FsrPhotonTool::m_etcut
Gaudi::Property< double > m_etcut
Definition: FsrPhotonTool.h:94
ATH_MSG_DEBUG
#define ATH_MSG_DEBUG(x)
Definition: AthMsgStreamMacros.h:29
xAOD::Egamma_v1::caloCluster
const xAOD::CaloCluster * caloCluster(size_t index=0) const
Pointer to the xAOD::CaloCluster/s that define the electron candidate.
Definition: Egamma_v1.cxx:388
python.xAODType.dummy
dummy
Definition: xAODType.py:4
MSG::name
const std::string & name(Level lvl)
Convenience function for translating message levels to strings.
Definition: MsgLevel.cxx:19
AthCommonDataStore< AthCommonMsg< AlgTool > >::m_detStore
StoreGateSvc_t m_detStore
Pointer to StoreGate (detector store by default)
Definition: AthCommonDataStore.h:393
DataVector
Derived DataVector<T>.
Definition: DataVector.h:794
FSR::FsrPhotonTool::deltaR
double deltaR(float muonEta, float muonPhi, float phEta, float phPhi) const
Definition: FsrPhotonTool.cxx:468
SG::VarHandleKeyArray::renounce
virtual void renounce()=0
SG::HandleClassifier::type
std::conditional< std::is_base_of< SG::VarHandleKeyArray, T >::value, VarHandleKeyArrayType, type2 >::type type
Definition: HandleClassifier.h:54
FSR::FsrPhotonTool::m_doCloseByIso
Gaudi::Property< bool > m_doCloseByIso
Definition: FsrPhotonTool.h:103
merge_scale_histograms.doc
string doc
Definition: merge_scale_histograms.py:9
FSR::FsrPhotonTool::m_isoCorrTool
ToolHandle< CP::IIsolationCorrectionTool > m_isoCorrTool
Definition: FsrPhotonTool.h:109
name
std::string name
Definition: Control/AthContainers/Root/debug.cxx:228
FSR::FsrCandidate::FsrFar
@ FsrFar
Definition: IFsrPhotonTool.h:29
FSR::FsrPhotonTool::m_AFII_corr
Gaudi::Property< bool > m_AFII_corr
Definition: FsrPhotonTool.h:100
xAOD::Electron_v1
Definition: Electron_v1.h:34
FSR::FsrPhotonTool::isOverlap
bool isOverlap(const xAOD::Electron_v1 *electron, const std::vector< std::pair< const xAOD::IParticle *, double > > &phfsr, unsigned int nofPhFsr)
Definition: FsrPhotonTool.cxx:445
FSR::FsrPhotonTool::getFarFsrCandidateList
virtual std::vector< FsrCandidate > * getFarFsrCandidateList(const xAOD::IParticle *part, xAOD::PhotonContainer *photons_cont)
Find and Return ALL FAR FSR candidates.
Definition: FsrPhotonTool.cxx:184
FSR::FsrPhotonTool::m_overlap_el_mu
Gaudi::Property< double > m_overlap_el_mu
Definition: FsrPhotonTool.h:90
python.DataFormatRates.c2
c2
Definition: DataFormatRates.py:123
CP::CorrectionCode::Ok
@ Ok
The correction was done successfully.
Definition: CorrectionCode.h:38
FSR::FsrPhotonTool::m_high_et_min
Gaudi::Property< double > m_high_et_min
Definition: FsrPhotonTool.h:88
xAOD::photon
@ photon
Definition: TrackingPrimitives.h:199
FSR::FsrPhotonTool::m_topo_f1cut
Gaudi::Property< double > m_topo_f1cut
Definition: FsrPhotonTool.h:97
a
TList * a
Definition: liststreamerinfos.cxx:10
h
xAOD::Photon_v1
Definition: Photon_v1.h:37
std::sort
void sort(typename std::reverse_iterator< DataModel_detail::iterator< DVL > > beg, typename std::reverse_iterator< DataModel_detail::iterator< DVL > > end, const Compare &comp)
Specialization of sort for DataVector/List.
Definition: DVL_algorithms.h:623
ATH_MSG_WARNING
#define ATH_MSG_WARNING(x)
Definition: AthMsgStreamMacros.h:32
ConstDataVector
DataVector adapter that acts like it holds const pointers.
Definition: ConstDataVector.h:76
FSR::FsrPhotonTool::m_energyRescaler
ToolHandle< CP::IEgammaCalibrationAndSmearingTool > m_energyRescaler
Definition: FsrPhotonTool.h:110
DEBUG
#define DEBUG
Definition: page_access.h:11
FSR::FsrPhotonTool::sortFsrCandidates
std::vector< FsrCandidate > * sortFsrCandidates(const std::vector< std::pair< const xAOD::IParticle *, double > > &FsrCandList, const std::string &option="ET")
Need for the FSR search.
Definition: FsrPhotonTool.cxx:358
FSR::FsrPhotonTool::getFsrCandidateList
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...
Definition: FsrPhotonTool.cxx:135
AthCommonMsg< AlgTool >::msg
MsgStream & msg() const
Definition: AthCommonMsg.h:24
CP::CorrectionCode
Return value from object correction CP tools.
Definition: CorrectionCode.h:31
xAOD::EgammaParameters::electron
@ electron
Definition: EgammaEnums.h:18
SG::VarHandleBase::vhKey
SG::VarHandleKey & vhKey()
Return a non-const reference to the HandleKey.
Definition: StoreGate/src/VarHandleBase.cxx:623
doL1CaloHVCorrections.parts
parts
Definition: doL1CaloHVCorrections.py:334
FSR::FsrPhotonTool::m_drcut
Gaudi::Property< double > m_drcut
Definition: FsrPhotonTool.h:93
python.Bindings.keys
keys
Definition: Control/AthenaPython/python/Bindings.py:798
FSR::FsrPhotonTool::m_fsr_type
FsrCandidate::FsrType m_fsr_type
Definition: FsrPhotonTool.h:106
xAOD::TrackParticle_v1
Class describing a TrackParticle.
Definition: TrackParticle_v1.h:43
FSR::FsrPhotonTool::m_far_fsr_etcut
Gaudi::Property< double > m_far_fsr_etcut
Definition: FsrPhotonTool.h:92
FSR::FsrPhotonTool::m_topo_drcut
Gaudi::Property< double > m_topo_drcut
Definition: FsrPhotonTool.h:96
SG::DataProxy
Definition: DataProxy.h:45
FSR::FsrPhotonTool::m_far_fsr_drcut
Gaudi::Property< double > m_far_fsr_drcut
Definition: FsrPhotonTool.h:91
xAOD::bool
setBGCode setTAP setLVL2ErrorBits bool
Definition: TrigDecision_v1.cxx:60
xAOD::TrackParticle_v1::theta
float theta() const
Returns the parameter, which has range 0 to .
python.compressB64.c
def c
Definition: compressB64.py:93
DataVector::size
size_type size() const noexcept
Returns the number of elements in the collection.
AthCommonDataStore::declareGaudiProperty
Gaudi::Details::PropertyBase & declareGaudiProperty(Gaudi::Property< T > &hndl, const SG::VarHandleKeyType &)
specialization for handling Gaudi::Property<SG::VarHandleKey>
Definition: AthCommonDataStore.h:156
FSR::FsrPhotonTool::deltaPhi
double deltaPhi(float phi1, float phi2) const
Definition: FsrPhotonTool.cxx:460
InDetDD::electrons
@ electrons
Definition: InDetDD_Defs.h:17
FSR::FsrCandidate::FsrNear
@ FsrNear
Definition: IFsrPhotonTool.h:29
FSR::FsrPhotonTool::getNearFsrCandidateList
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.
Definition: FsrPhotonTool.cxx:251
python.trfValidateRootFile.rc
rc
Definition: trfValidateRootFile.py:355
xAOD::TrackParticle_v1::phi
virtual double phi() const override final
The azimuthal angle ( ) of the particle (has range to .)
fitman.k
k
Definition: fitman.py:528
FSR::FsrPhotonTool::m_isoSelTool
ToolHandle< CP::IIsolationSelectionTool > m_isoSelTool
Definition: FsrPhotonTool.h:108