ATLAS Offline Software
Photons.cxx
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2022 CERN for the benefit of the ATLAS collaboration
3 */
4 
5 // This source file implements all of the functions related to Photons
6 // in the SUSYObjDef_xAOD class
7 
8 // Local include(s):
10 
13 
20 
23 
24 // Helper for object quality
26 
27 #ifndef XAOD_STANDALONE // For now metadata is Athena-only
29 #endif
30 
31 namespace ST {
32 
33 StatusCode SUSYObjDef_xAOD::GetPhotons(xAOD::PhotonContainer*& copy, xAOD::ShallowAuxContainer*& copyaux, bool recordSG, const std::string& photonkey, const xAOD::PhotonContainer* containerToBeCopied)
34 {
35  if (!m_tool_init) {
36  ATH_MSG_ERROR("SUSYTools was not initialized!!");
37  return StatusCode::FAILURE;
38  }
39 
40  if (m_isPHYSLITE && photonkey.find("AnalysisPhotons")==std::string::npos){
41  ATH_MSG_ERROR("You are running on PHYSLITE derivation. Please change the Photons container to 'AnalysisPhotons'");
42  return StatusCode::FAILURE;
43  }
44 
45  const xAOD::PhotonContainer* photons = nullptr;
46  if (copy==nullptr) { // empty container provided
47  if (containerToBeCopied != nullptr) {
48  photons = containerToBeCopied;
49  }
50  else {
51  ATH_CHECK( evtStore()->retrieve(photons, photonkey) );
52  }
53  std::pair<xAOD::PhotonContainer*, xAOD::ShallowAuxContainer*> shallowcopy = xAOD::shallowCopyContainer(*photons);
54  copy = shallowcopy.first;
55  copyaux = shallowcopy.second;
56  bool setLinks = xAOD::setOriginalObjectLink(*photons, *copy);
57  if (!setLinks) {
58  ATH_MSG_WARNING("Failed to set original object links on " << photonkey);
59  }
60  } else { // use the user-supplied collection instead
61  ATH_MSG_DEBUG("Not retrieving photon collecton, using existing one provided by user");
62  photons=copy;
63  }
64 
65  for (const auto& photon : *copy) {
68  }
69 
70  if (recordSG) {
71  ATH_CHECK( evtStore()->record(copy, "STCalib" + photonkey + m_currentSyst.name()) );
72  ATH_CHECK( evtStore()->record(copyaux, "STCalib" + photonkey + m_currentSyst.name() + "Aux.") );
73  }
74  return StatusCode::SUCCESS;
75 }
76 
77 
79 
80  ATH_MSG_VERBOSE( "Starting FillPhoton on ph with pre-calibration pt=" << input.pt() );
81 
82  if ( !input.caloCluster() ) {
83  ATH_MSG_WARNING( "FillPhoton: no caloCluster found: " << input.caloCluster() );
84  return StatusCode::SUCCESS;
85  }
86 
87  //Check DeadHVCellRemoval
88  bool pass_deadHVTool = m_deadHVTool->accept(&input);
89 
90  if (m_debug) {
91  ATH_MSG_INFO( "PHOTON eta: " << input.eta() );
92  ATH_MSG_INFO( "PHOTON phi: " << input.phi() );
93  ATH_MSG_INFO( "PHOTON cl eta: " << input.caloCluster()->eta() );
94  ATH_MSG_INFO( "PHOTON cl phi: " << input.caloCluster()->phi() );
95  ATH_MSG_INFO( "PHOTON cl e: " << input.caloCluster()->e() );
96  ATH_MSG_INFO( "PHOTON OQ: " << input.OQ() );
97  ATH_MSG_INFO( "PHOTON author: " << input.author() );
98  ATH_MSG_INFO( "PHOTON deadHVTools: " << pass_deadHVTool );
99  }
100 
101  dec_baseline(input) = false;
102  dec_selected(input) = 0;
103  dec_isol(input) = false;
104  dec_isEM(input) = 0;
105 
106  if (!pass_deadHVTool) return StatusCode::SUCCESS;
107 
108  // Author cuts needed according to https://twiki.cern.ch/twiki/bin/view/AtlasProtected/EGammaIdentificationRun2#Photon_authors
110  return StatusCode::SUCCESS;
111 
113  ATH_MSG_ERROR("FillPhoton: EgammaCalibTool applyCorrection failed");
114 
116  ATH_MSG_ERROR("FillPhoton: IsolationCorrectionTool applyCorrection failed");
117 
118  ATH_MSG_VERBOSE( "FillPhoton: post-calibration pt=" << input.pt() );
119 
120  if (input.pt() < ptcut || std::abs(input.caloCluster()->etaBE(2)) >= etacut) return StatusCode::SUCCESS;
121 
123  if ( std::abs( input.caloCluster()->etaBE(2) ) >1.37 && std::abs( input.caloCluster()->etaBE(2) ) <1.52) {
124  return StatusCode::SUCCESS;
125  }
126  }
127 
128  //Object quality cut as described at https://twiki.cern.ch/twiki/bin/view/AtlasProtected/EGammaIdentificationRun2#Object_quality_cut
130  return StatusCode::SUCCESS;
131 
132  //Photon quality as in https://twiki.cern.ch/twiki/bin/view/AtlasProtected/EGammaIdentificationRun2#Photon_cleaning
133  bool passPhCleaning = false;
134  if (acc_passPhCleaning.isAvailable(input) && acc_passPhCleaningNoTime.isAvailable(input)) {
135  if ( (!m_photonAllowLate && acc_passPhCleaning(input)) || (m_photonAllowLate && acc_passPhCleaningNoTime(input)) ) passPhCleaning = true;
136  } else {
137  ATH_MSG_VERBOSE ("DFCommonPhotonsCleaning is not found in DAOD..");
139  ( m_photonAllowLate && PhotonHelpers::passOQqualityDelayed(input)) ) passPhCleaning = true;
140  }
141  if (!passPhCleaning) return StatusCode::SUCCESS;
142 
143 
144  bool passBaseID = false;
145  if (m_acc_photonIdBaseline.isAvailable(input)) {
146  passBaseID = bool(m_acc_photonIdBaseline(input));
147  } else {
148  passBaseID = bool(m_photonSelIsEMBaseline->accept(&input));
149  }
150  if (!passBaseID) return StatusCode::SUCCESS;
151 
152  //--- Do baseline isolation check
153  if ( !( m_photonBaselineIso_WP.empty() ) && !( m_isoBaselineTool->accept(input) ) ) return StatusCode::SUCCESS;
154 
155  dec_baseline(input) = true;
156  dec_selected(input) = 2;
157  if (!m_photonIso_WP.empty()) dec_isol(input) = bool(m_isoTool->accept(input));
158 
159  ATH_MSG_VERBOSE("FillPhoton: passed baseline selection.");
160  return StatusCode::SUCCESS;
161 }
162 
163 
164 bool SUSYObjDef_xAOD::IsSignalPhoton(const xAOD::Photon& input, float ptcut, float etacut) const
165 {
166  dec_signal(input) = false;
167 
168  if ( !acc_baseline(input) ) return false;
169 
170  if ( !m_egammaAmbiguityTool->accept(input) ) return false;
171 
172  if ( input.pt() < ptcut ) return false;
173  if ( etacut==DUMMYDEF ){
174  if(std::abs(input.caloCluster()->etaBE(2)) > m_photonEta ) return false;
175  }
176  else if ( std::abs(input.caloCluster()->etaBE(2)) > etacut ) return false;
177 
178  if (m_photonCrackVeto){
179  if ( std::abs( input.caloCluster()->etaBE(2) ) >1.37 && std::abs( input.caloCluster()->etaBE(2) ) <1.52) {
180  return false;
181  }
182  }
183 
184  if (acc_isol(input) || !m_doPhIsoSignal) {
185  ATH_MSG_VERBOSE( "IsSignalPhoton: passed isolation");
186  } else return false;
187 
188  bool passID = false;
189  if (m_acc_photonId.isAvailable(input)) {
190  passID = m_acc_photonId(input);
191  } else {
192  ATH_MSG_VERBOSE ("DFCommonPhotonsIsEMxxx variables are not found. Calculating the ID from Photon ID tool..");
193  passID = bool(m_photonSelIsEM->accept(&input));
194  }
195  if ( !passID ) return false;
196 
197  dec_signal(input) = true;
198 
199  return true;
200 }
201 
202 
203 double SUSYObjDef_xAOD::GetSignalPhotonSF(const xAOD::Photon& ph, const bool effSF, const bool isoSF, const bool triggerSF) const
204 {
205  double sf(1.);
206 
207  if (effSF) {
208 
209  double sf_eff = 1.;
210 
212  if (res == CP::CorrectionCode::OutOfValidityRange) ATH_MSG_WARNING(" GetSignalPhotonSF: EfficiencyScaleFactor out of validity range");
213 
214  sf *= sf_eff;
215  }
216 
217  if (isoSF) {
218 
219  double sf_iso = 1.;
220 
222  if (res == CP::CorrectionCode::OutOfValidityRange) ATH_MSG_WARNING(" GetSignalPhotonSF: IsolationScaleFactor out of validity range");
223 
224  sf *= sf_iso;
225  }
226 
227  if (triggerSF) {
228 
229  double sf_trigger = 1.;
230 
232  if (res == CP::CorrectionCode::OutOfValidityRange) ATH_MSG_WARNING(" GetSignalPhotonSF: TriggerScaleFactor out of validity range");
233 
234  sf *= sf_trigger;
235  }
236 
237  ATH_MSG_VERBOSE( "ScaleFactor " << sf );
238 
239  dec_effscalefact(ph) = sf;
240  return sf;
241 }
242 
243 
244 double SUSYObjDef_xAOD::GetSignalPhotonSFsys(const xAOD::Photon& ph, const CP::SystematicSet& systConfig, const bool effSF, const bool isoSF, const bool triggerSF)
245 {
246  double sf(1.);
247 
248  //Set the new systematic variation
250  if (ret != StatusCode::SUCCESS) {
251  ATH_MSG_ERROR("Cannot configure AsgPhotonEfficiencyCorrectionTool (reco) for systematic var. " << systConfig.name() );
252  }
253 
255  if (ret != StatusCode::SUCCESS) {
256  ATH_MSG_ERROR("Cannot configure AsgPhotonEfficiencyCorrectionTool (iso) for systematic var. " << systConfig.name() );
257  }
258 
260  if (ret != StatusCode::SUCCESS) {
261  ATH_MSG_ERROR("Cannot configure AsgPhotonEfficiencyCorrectionTool (trigger) for systematic var. " << systConfig.name() );
262  }
263 
264  if (effSF) {
265 
266  double sf_eff = 1.;
267 
269  if (res == CP::CorrectionCode::OutOfValidityRange) ATH_MSG_WARNING(" GetSignalPhotonSF: getEfficiencyScaleFactor out of validity range");
270 
271  sf *= sf_eff;
272  }
273 
274  if (isoSF) {
275 
276  double sf_iso = 1.;
277 
279  if (res == CP::CorrectionCode::OutOfValidityRange) ATH_MSG_WARNING(" GetSignalPhotonSF: getEfficiencyScaleFactor out of validity range");
280 
281  sf *= sf_iso;
282  }
283 
284  if (triggerSF) {
285 
286  double sf_trigger = 1.;
287 
289  if (res == CP::CorrectionCode::OutOfValidityRange) ATH_MSG_WARNING(" GetSignalPhotonSF: getEfficiencyScaleFactor out of validity range");
290 
291  sf *= sf_trigger;
292  }
293 
294  //Roll back to current sys
296  if (ret != StatusCode::SUCCESS) {
297  ATH_MSG_ERROR("Cannot configure AsgPhotonEfficiencyCorrectionTool back to default.");
298  }
299 
301  if (ret != StatusCode::SUCCESS) {
302  ATH_MSG_ERROR("Cannot configure AsgPhotonEfficiencyCorrectionTool (iso) for systematic var. " << systConfig.name() );
303  }
304 
306  if (ret != StatusCode::SUCCESS) {
307  ATH_MSG_ERROR("Cannot configure AsgPhotonEfficiencyCorrectionTool (trigger) for systematic var. " << systConfig.name() );
308  }
309 
310  ATH_MSG_VERBOSE( "ScaleFactor " << sf );
311 
312  dec_effscalefact(ph) = sf;
313  return sf;
314 }
315 
316 
317 double SUSYObjDef_xAOD::GetTotalPhotonSF(const xAOD::PhotonContainer& photons, const bool effSF, const bool isoSF, const bool triggerSF) const
318 {
319  double sf(1.);
320 
321  for (const xAOD::Photon* photon : photons) {
322  if (acc_signal(*photon) && acc_passOR(*photon)) { sf *= this->GetSignalPhotonSF(*photon, effSF, isoSF, triggerSF); }
323  }
324 
325  return sf;
326 }
327 
328 
329 double SUSYObjDef_xAOD::GetTotalPhotonSFsys(const xAOD::PhotonContainer& photons, const CP::SystematicSet& systConfig, const bool effSF, const bool isoSF, const bool triggerSF)
330 {
331  double sf(1.);
332 
333  for (const xAOD::Photon* photon : photons) {
334  if (acc_signal(*photon) && acc_passOR(*photon)) { sf *= this->GetSignalPhotonSFsys(*photon, systConfig, effSF, isoSF, triggerSF); }
335  }
336 
337  return sf;
338 }
339 
340 }
python.PyKernel.retrieve
def retrieve(aClass, aKey=None)
Definition: PyKernel.py:110
ST::SUSYObjDef_xAOD::m_photonBaselinePt
double m_photonBaselinePt
Definition: SUSYObjDef_xAOD.h:704
ST::SUSYObjDef_xAOD::m_deadHVTool
asg::AnaToolHandle< IAsgDeadHVCellRemovalTool > m_deadHVTool
Definition: SUSYObjDef_xAOD.h:884
IAsgPhotonEfficiencyCorrectionTool::getEfficiencyScaleFactor
virtual CP::CorrectionCode getEfficiencyScaleFactor(const xAOD::Egamma &, double &) const =0
Get the "photon scale factor" as a return value.
PhotonHelpers.h
TrackParticlexAODHelpers.h
ST::SUSYObjDef_xAOD::m_egammaCalibTool
asg::AnaToolHandle< CP::IEgammaCalibrationAndSmearingTool > m_egammaCalibTool
Combined electron collection.
Definition: SUSYObjDef_xAOD.h:879
ATH_MSG_INFO
#define ATH_MSG_INFO(x)
Definition: AthMsgStreamMacros.h:31
CP::IIsolationCorrectionTool::applyCorrection
virtual CP::CorrectionCode applyCorrection(xAOD::Egamma &)=0
IAsgPhotonIsEMSelector.h
IAsgDeadHVCellRemovalTool::accept
virtual bool accept(const xAOD::Egamma *part) const =0
ST::SUSYObjDef_xAOD::GetTotalPhotonSFsys
double GetTotalPhotonSFsys(const xAOD::PhotonContainer &photons, const CP::SystematicSet &systConfig, const bool effSF=true, const bool isoSF=true, const bool triggerSF=false) override final
Definition: Photons.cxx:329
ST::SUSYObjDef_xAOD::m_photonBaselineCrackVeto
bool m_photonBaselineCrackVeto
Definition: SUSYObjDef_xAOD.h:708
ST
Definition: Electrons.cxx:41
ST::SUSYObjDef_xAOD::m_photonTriggerSFTool
asg::AnaToolHandle< IAsgPhotonEfficiencyCorrectionTool > m_photonTriggerSFTool
Definition: SUSYObjDef_xAOD.h:887
ST::SUSYObjDef_xAOD::m_isoBaselineTool
asg::AnaToolHandle< CP::IIsolationSelectionTool > m_isoBaselineTool
Definition: SUSYObjDef_xAOD.h:954
xAOD::ShallowAuxContainer
Class creating a shallow copy of an existing auxiliary container.
Definition: ShallowAuxContainer.h:54
CP::SystematicSet
Class to wrap a set of SystematicVariations.
Definition: SystematicSet.h:31
ST::SUSYObjDef_xAOD::m_photonIso_WP
std::string m_photonIso_WP
Definition: SUSYObjDef_xAOD.h:656
CP::SystematicSet::name
std::string name() const
returns: the systematics joined into a single string.
Definition: SystematicSet.cxx:278
ST::SUSYObjDef_xAOD::m_doPhIsoSignal
bool m_doPhIsoSignal
Definition: SUSYObjDef_xAOD.h:779
SUSYObjDef_xAOD.h
CP::IIsolationSelectionTool::accept
virtual asg::AcceptData accept(const xAOD::Photon &x) const =0
Declare the interface that the class provides.
ST::SUSYObjDef_xAOD::IsSignalPhoton
bool IsSignalPhoton(const xAOD::Photon &input, const float ptcut, const float etacut=DUMMYDEF) const override final
Definition: Photons.cxx:164
ST::SUSYObjDef_xAOD::m_photonEta
double m_photonEta
Definition: SUSYObjDef_xAOD.h:706
CP::IEgammaCalibrationAndSmearingTool::applyCorrection
virtual CP::CorrectionCode applyCorrection(xAOD::Egamma &) const =0
IAsgPhotonEfficiencyCorrectionTool.h
ATH_MSG_VERBOSE
#define ATH_MSG_VERBOSE(x)
Definition: AthMsgStreamMacros.h:28
ST::SUSYObjDef_xAOD::m_debug
bool m_debug
Definition: SUSYObjDef_xAOD.h:532
ST::SUSYObjDef_xAOD::GetSignalPhotonSFsys
double GetSignalPhotonSFsys(const xAOD::Photon &ph, const CP::SystematicSet &systConfig, const bool effSF=true, const bool isoSF=true, const bool triggerSF=false) override final
Definition: Photons.cxx:244
Pythia8_A14_NNPDF23LO_forMGHT_EvtGen.ptcut
float ptcut
Definition: Pythia8_A14_NNPDF23LO_forMGHT_EvtGen.py:9
ST::SUSYObjDef_xAOD::m_tool_init
bool m_tool_init
Definition: SUSYObjDef_xAOD.h:557
ST::SUSYObjDef_xAOD::m_photonBaselineEta
double m_photonBaselineEta
Definition: SUSYObjDef_xAOD.h:705
IEGammaAmbiguityTool.h
ST::SUSYObjDef_xAOD::m_photonEfficiencySFTool
asg::AnaToolHandle< IAsgPhotonEfficiencyCorrectionTool > m_photonEfficiencySFTool
Definition: SUSYObjDef_xAOD.h:885
IElectronPhotonShowerShapeFudgeTool.h
AthCommonDataStore< AthCommonMsg< AlgTool > >::evtStore
ServiceHandle< StoreGateSvc > & evtStore()
The standard StoreGateSvc (event store) Returns (kind of) a pointer to the StoreGateSvc.
Definition: AthCommonDataStore.h:85
ST::SUSYObjDef_xAOD::m_isPHYSLITE
bool m_isPHYSLITE
Definition: SUSYObjDef_xAOD.h:789
PhotonHelpers::passOQquality
bool passOQquality(const xAOD::Photon &ph)
Helper to ease the implemmantation of the pass Quality requirements.
Definition: PhotonHelpers.cxx:12
IEgammaCalibrationAndSmearingTool.h
CP::CorrectionCode::OutOfValidityRange
@ OutOfValidityRange
Input object is out of validity range.
Definition: CorrectionCode.h:37
ST::SUSYObjDef_xAOD::m_acc_photonIdBaseline
SG::AuxElement::ConstAccessor< char > m_acc_photonIdBaseline
Definition: SUSYObjDef_xAOD.h:976
IIsolationCorrectionTool.h
ATH_MSG_ERROR
#define ATH_MSG_ERROR(x)
Definition: AthMsgStreamMacros.h:33
IAsgEGammaIsEMSelector::accept
virtual asg::AcceptData accept(const xAOD::IParticle *part) const =0
accept with pointer to IParticle so as to not hide the IAsgSelectionTool one
ret
T ret(T t)
Definition: rootspy.cxx:260
xAOD::EgammaParameters::AuthorAmbiguous
const uint16_t AuthorAmbiguous
Object Reconstructed by standard cluster-based algorithm.
Definition: EgammaDefs.h:32
EL::StatusCode
::StatusCode StatusCode
StatusCode definition for legacy code.
Definition: PhysicsAnalysis/D3PDTools/EventLoop/EventLoop/StatusCode.h:22
ATH_MSG_DEBUG
#define ATH_MSG_DEBUG(x)
Definition: AthMsgStreamMacros.h:29
PlotPulseshapeFromCool.input
input
Definition: PlotPulseshapeFromCool.py:106
res
std::pair< std::vector< unsigned int >, bool > res
Definition: JetGroupProductTest.cxx:14
ST::SUSYObjDef_xAOD::m_photonSelIsEM
asg::AnaToolHandle< IAsgPhotonIsEMSelector > m_photonSelIsEM
Definition: SUSYObjDef_xAOD.h:882
ATH_CHECK
#define ATH_CHECK
Definition: AthCheckMacros.h:40
DataVector
Derived DataVector<T>.
Definition: DataVector.h:581
IAsgDeadHVCellRemovalTool.h
ST::SUSYObjDef_xAOD::m_photonBaselineIso_WP
std::string m_photonBaselineIso_WP
Definition: SUSYObjDef_xAOD.h:655
ST::SUSYObjDef_xAOD::GetTotalPhotonSF
double GetTotalPhotonSF(const xAOD::PhotonContainer &photons, const bool effSF=true, const bool isoSF=true, const bool triggerSF=false) const override final
Definition: Photons.cxx:317
ST::SUSYObjDef_xAOD::m_photonAllowLate
bool m_photonAllowLate
Definition: SUSYObjDef_xAOD.h:710
ST::SUSYObjDef_xAOD::GetSignalPhotonSF
double GetSignalPhotonSF(const xAOD::Photon &ph, const bool effSF=true, const bool isoSF=true, const bool triggerSF=false) const override final
Definition: Photons.cxx:203
IEGammaAmbiguityTool::accept
virtual bool accept(const xAOD::Egamma &egamma) const =0
Accept or reject egamma object based on ambiguity resolution.
IIsolationSelectionTool.h
xAOD::shallowCopyContainer
std::pair< std::unique_ptr< T >, std::unique_ptr< ShallowAuxContainer > > shallowCopyContainer(const T &cont, [[maybe_unused]] const EventContext &ctx)
Function making a shallow copy of a constant container.
Definition: ShallowCopy.h:110
ST::SUSYObjDef_xAOD::m_acc_photonId
SG::AuxElement::ConstAccessor< char > m_acc_photonId
Definition: SUSYObjDef_xAOD.h:977
AthAnalysisHelper.h
ST::SUSYObjDef_xAOD::FillPhoton
StatusCode FillPhoton(xAOD::Photon &input, const float ptcut, const float etacut) override final
Definition: Photons.cxx:78
xAOD::EgammaParameters::BADCLUSPHOTON
const uint32_t BADCLUSPHOTON
Definition: EgammaDefs.h:124
CP::CorrectionCode::Ok
@ Ok
The correction was done successfully.
Definition: CorrectionCode.h:38
xAOD::photon
@ photon
Definition: TrackingPrimitives.h:199
ST::SUSYObjDef_xAOD::GetPhotons
StatusCode GetPhotons(xAOD::PhotonContainer *&copy, xAOD::ShallowAuxContainer *&copyaux, const bool recordSG=true, const std::string &photonkey="Photons", const xAOD::PhotonContainer *containerToBeCopied=nullptr) override final
Definition: Photons.cxx:33
xAOD::Photon_v1
Definition: Photon_v1.h:37
mapkey::sf
@ sf
Definition: TElectronEfficiencyCorrectionTool.cxx:38
ATH_MSG_WARNING
#define ATH_MSG_WARNING(x)
Definition: AthMsgStreamMacros.h:32
ST::SUSYObjDef_xAOD::m_photonSelIsEMBaseline
asg::AnaToolHandle< IAsgPhotonIsEMSelector > m_photonSelIsEMBaseline
Definition: SUSYObjDef_xAOD.h:883
ST::SUSYObjDef_xAOD::m_photonPt
double m_photonPt
Definition: SUSYObjDef_xAOD.h:707
xAOD::setOriginalObjectLink
bool setOriginalObjectLink(const IParticle &original, IParticle &copy)
This function should be used by CP tools when they make a deep copy of an object in their correctedCo...
Definition: IParticleHelpers.cxx:30
CP::CorrectionCode
Return value from object correction CP tools.
Definition: CorrectionCode.h:31
ST::SUSYObjDef_xAOD::m_currentSyst
CP::SystematicSet m_currentSyst
Definition: SUSYObjDef_xAOD.h:801
xAOD::EgammaParameters::AuthorPhoton
const uint16_t AuthorPhoton
Object Reconstructed by standard cluster-based algorithm.
Definition: EgammaDefs.h:28
IParticleHelpers.h
PhotonHelpers::passOQqualityDelayed
bool passOQqualityDelayed(const xAOD::Photon &ph)
Helpers to ease the implementation of the pass Quality requirements.
Definition: PhotonHelpers.cxx:29
calibdata.copy
bool copy
Definition: calibdata.py:27
xAOD::bool
setBGCode setTAP setLVL2ErrorBits bool
Definition: TrigDecision_v1.cxx:60
CP::ISystematicsTool::applySystematicVariation
virtual StatusCode applySystematicVariation(const SystematicSet &systConfig)=0
effects: configure this tool for the given list of systematic variations.
ST::SUSYObjDef_xAOD::m_photonCrackVeto
bool m_photonCrackVeto
Definition: SUSYObjDef_xAOD.h:709
ST::SUSYObjDef_xAOD::m_isoCorrTool
asg::AnaToolHandle< CP::IIsolationCorrectionTool > m_isoCorrTool
Definition: SUSYObjDef_xAOD.h:951
ST::SUSYObjDef_xAOD::m_photonIsolationSFTool
asg::AnaToolHandle< IAsgPhotonEfficiencyCorrectionTool > m_photonIsolationSFTool
Definition: SUSYObjDef_xAOD.h:886
ST::SUSYObjDef_xAOD::m_egammaAmbiguityTool
asg::AnaToolHandle< IEGammaAmbiguityTool > m_egammaAmbiguityTool
Definition: SUSYObjDef_xAOD.h:894
ST::SUSYObjDef_xAOD::m_isoTool
asg::AnaToolHandle< CP::IIsolationSelectionTool > m_isoTool
Definition: SUSYObjDef_xAOD.h:952