ATLAS Offline Software
Public Member Functions | Static Public Member Functions | Protected Member Functions | Private Types | Private Member Functions | Static Private Member Functions | Private Attributes | Static Private Attributes | List of all members
DerivationFramework::SkimmingToolHIGG1 Class Reference

#include <SkimmingToolHIGG1.h>

Inheritance diagram for DerivationFramework::SkimmingToolHIGG1:
Collaboration diagram for DerivationFramework::SkimmingToolHIGG1:

Public Member Functions

 SkimmingToolHIGG1 (const std::string &t, const std::string &n, const IInterface *p)
 Constructor with parameters. More...
 
 ~SkimmingToolHIGG1 ()
 Destructor. More...
 
virtual StatusCode initialize () override
 
virtual StatusCode finalize () override
 
virtual bool eventPassesFilter () const override
 Check that the current event passes this filter. 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
 

Static Public Member Functions

static const InterfaceID & interfaceID ()
 AlgTool interface methods. 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

using LeadingPhotons_t = std::array< const xAOD::Photon *, 2 >
 Leading and sub-leading photon (in that order) More...
 
typedef ServiceHandle< StoreGateSvcStoreGateSvc_t
 

Private Member Functions

bool SubcutOneMergedElectron () const
 
bool SubcutGoodRunList () const
 
bool SubcutLArError (const xAOD::EventInfo &eventInfo) const
 
bool SubcutTrigger () const
 
std::optional< LeadingPhotons_tSubcutPreselect () const
 
bool SubcutOnePhotonOneElectron () const
 
bool SubcutTwoElectrons () const
 
bool SubcutOnePhotonOneMuon () const
 
bool SubcutOnePhotonTwoElectrons () const
 
bool SubcutOnePhotonTwoMuons () const
 
bool SubcutOnePhotonMergedElectrons (const xAOD::EventInfo &eventInfo) const
 
bool SubcutHighPtOnePhotonOneElectron () const
 
bool SubcutKinematic (const LeadingPhotons_t &leadingPhotons, double invariantMass) const
 
bool SubcutQuality (const LeadingPhotons_t &leadingPhotons) const
 
bool SubcutIsolation () const
 
bool SubcutInvariantMass (double invariantMass) const
 
bool PhotonPreselect (const xAOD::Photon *ph) const
 
bool ElectronPreselect (const xAOD::Electron *el) const
 
bool MergedElectronPreselect (const xAOD::Electron *el) const
 
bool MuonPreselect (const xAOD::Muon *mu) const
 
double CalculateInvariantMass (const LeadingPhotons_t &leadingPhotons) const
 
double GetDiphotonVertex () const
 
double CorrectedEta (const xAOD::Photon *ph) 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 double CorrectedEnergy (const xAOD::Photon *ph)
 
static double ReturnRZ_1stSampling_cscopt2 (double eta1)
 

Private Attributes

ToolHandle< Trig::TrigDecisionToolm_trigDecisionTool
 
bool m_reqGRL
 
bool m_reqLArError
 
bool m_reqTrigger
 
bool m_reqPreselection
 
bool m_incMergedElectron
 
bool m_incSingleElectron
 
bool m_incDoubleElectron
 
bool m_incSingleMuon
 
bool m_incDoubleMuon
 
bool m_incDoubleElectronPhoton
 
bool m_incMergedElectronPhoton
 
bool m_incHighPtElectronPhoton
 
bool m_incTwoPhotons
 
bool m_reqKinematic
 
bool m_reqQuality
 
bool m_reqIsolation
 
bool m_reqInvariantMass
 
std::string m_goodRunList
 
std::string m_defaultTrigger
 
std::vector< std::string > m_triggers
 
std::vector< std::string > m_mergedtriggers
 
double m_minPhotonPt
 
bool m_removeCrack
 
double m_maxEta
 
bool m_relativePtCuts
 
double m_leadingPhotonPt
 
double m_subleadingPhotonPt
 
double m_minInvariantMass
 
double m_maxInvariantMass
 
double m_minElectronPt
 
double m_minMergedElectronPt
 
double m_minMuonPt
 
double m_maxMuonEta
 
std::atomic< unsigned int > m_n_tot {0}
 
std::atomic< unsigned int > m_n_passGRL {0}
 
std::atomic< unsigned int > m_n_passLArError {0}
 
std::atomic< unsigned int > m_n_passTrigger {0}
 
std::atomic< unsigned int > m_n_passPreselect {0}
 
std::atomic< unsigned int > m_n_passSingleElectronPreselect {0}
 
std::atomic< unsigned int > m_n_passDoubleElectronPreselect {0}
 
std::atomic< unsigned int > m_n_passSingleMuonPreselect {0}
 
std::atomic< unsigned int > m_n_passSinglePhotonDoubleMuonPreselect {0}
 
std::atomic< unsigned int > m_n_passSinglePhotonDoubleElectronPreselect {0}
 
std::atomic< unsigned int > m_n_passSinglePhotonMergedElectronPreselect {0}
 
std::atomic< unsigned int > m_n_passHighPtPhotonMergedElectronPreselect {0}
 
std::atomic< unsigned int > m_n_passSingleMergedElectronPreselect {0}
 
std::atomic< unsigned int > m_n_passKinematic {0}
 
std::atomic< unsigned int > m_n_passQuality {0}
 
std::atomic< unsigned int > m_n_passIsolation {0}
 
std::atomic< unsigned int > m_n_passInvariantMass {0}
 
std::atomic< unsigned int > m_n_pass {0}
 
ToolHandle< IAsgElectronIsEMSelectorm_mergedCutTools
 
SG::ReadHandleKey< xAOD::EventInfom_eventInfoKey { this, "EventInfoKey", "EventInfo", "" }
 
SG::ReadHandleKey< xAOD::PhotonContainerm_photonKey { this, "PhotonKey", "Photons", "" }
 
SG::ReadHandleKey< xAOD::ElectronContainerm_electronKey { this, "ElectronKey", "Electrons", "" }
 
SG::ReadHandleKey< xAOD::MuonContainerm_muonKey { this, "MuonKey", "Muons", "" }
 
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
 

Static Private Attributes

static const double s_MZ = 91187.6*CLHEP::MeV
 

Detailed Description

Author
jsaxo.nosp@m.n@ce.nosp@m.rn.ch
magda.nosp@m.c@ce.nosp@m.rn.ch

Definition at line 46 of file SkimmingToolHIGG1.h.

Member Typedef Documentation

◆ LeadingPhotons_t

Leading and sub-leading photon (in that order)

Definition at line 127 of file SkimmingToolHIGG1.h.

◆ StoreGateSvc_t

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

Definition at line 388 of file AthCommonDataStore.h.

Constructor & Destructor Documentation

◆ SkimmingToolHIGG1()

DerivationFramework::SkimmingToolHIGG1::SkimmingToolHIGG1 ( const std::string &  t,
const std::string &  n,
const IInterface *  p 
)

Constructor with parameters.

Definition at line 22 of file SkimmingToolHIGG1.cxx.

24  :
25  AthAlgTool(t, n, p),
26  m_trigDecisionTool("Trig::TrigDecisionTool/TrigDecisionTool"),
28 {
29 
30  declareInterface<DerivationFramework::ISkimmingTool>(this);
31 
32  declareProperty("RequireGRL", m_reqGRL = true);
33  declareProperty("ReqireLArError", m_reqLArError = true);
34  declareProperty("RequireTrigger", m_reqTrigger = true);
35  declareProperty("RequirePreselection", m_reqPreselection = true);
36  declareProperty("IncludeSingleMergedElectronPreselection", m_incMergedElectron = false);
37  declareProperty("IncludeSingleElectronPreselection", m_incSingleElectron = true);
38  declareProperty("IncludeDoubleElectronPreselection", m_incDoubleElectron = false);
39  declareProperty("IncludeSingleMuonPreselection", m_incSingleMuon = true);
40  declareProperty("IncludeDoubleMuonPreselection", m_incDoubleMuon = false);
41  declareProperty("IncludePhotonDoubleElectronPreselection", m_incDoubleElectronPhoton = false);
42  declareProperty("IncludePhotonMergedElectronPreselection", m_incMergedElectronPhoton = false);
43  declareProperty("IncludeHighPtPhotonElectronPreselection", m_incHighPtElectronPhoton = false);
44  declareProperty("IncludeDoublePhotonPreselection", m_incTwoPhotons = true);
45 
46  declareProperty("RequireKinematic", m_reqKinematic = true);
47  declareProperty("RequireQuality", m_reqQuality = true);
48  declareProperty("RequireIsolation", m_reqIsolation = true);
49  declareProperty("RequireInvariantMass", m_reqInvariantMass = true);
50 
51  declareProperty("GoodRunList", m_goodRunList = "");
52 
53  declareProperty("DefaultTrigger", m_defaultTrigger = "EF_g35_loose_g25_loose");
54  declareProperty("Triggers", m_triggers = std::vector<std::string>());
55  declareProperty("MergedElectronTriggers",m_mergedtriggers = std::vector<std::string>() );
56 
57  declareProperty("MinimumPhotonPt", m_minPhotonPt = 20*CLHEP::GeV);
58  declareProperty("MinimumElectronPt", m_minElectronPt = 20*CLHEP::GeV);
59  declareProperty("MinimumMergedElectronPt", m_minMergedElectronPt = 18*CLHEP::GeV);
60 
61  declareProperty("MinimumMuonPt", m_minMuonPt = 20*CLHEP::GeV);
62  declareProperty("MaxMuonEta", m_maxMuonEta = 2.7);
63  declareProperty("RemoveCrack", m_removeCrack = true);
64  declareProperty("MaxEta", m_maxEta = 2.47);
65 
66  declareProperty("RelativePtCuts", m_relativePtCuts = true);
67  declareProperty("LeadingPhotonPtCut", m_leadingPhotonPt = 0.35);
68  declareProperty("SubleadingPhotonPtCut", m_subleadingPhotonPt = 0.25);
69 
70  declareProperty("MinInvariantMass", m_minInvariantMass = 105*CLHEP::GeV);
71  declareProperty("MaxInvariantMass", m_maxInvariantMass = 160*CLHEP::GeV);
72 
73  declareProperty("MergedElectronCutTool", m_mergedCutTools);
74 
75 }

◆ ~SkimmingToolHIGG1()

DerivationFramework::SkimmingToolHIGG1::~SkimmingToolHIGG1 ( )

Destructor.

Definition at line 78 of file SkimmingToolHIGG1.cxx.

78  {
79 }

Member Function Documentation

◆ CalculateInvariantMass()

double DerivationFramework::SkimmingToolHIGG1::CalculateInvariantMass ( const LeadingPhotons_t leadingPhotons) const
private

CAUTION - PLACEHOLDERS

CAUTION - CONSTANTS SHOULD BE UPDATED.

Definition at line 388 of file SkimmingToolHIGG1.cxx.

388  {
389 
391  const double ph_e_lead = CorrectedEnergy(leadingPhotons[0]);
392  const double ph_e_subl = CorrectedEnergy(leadingPhotons[1]);
393 
395  const double ph_eta_lead = CorrectedEta(leadingPhotons[0]);
396  const double ph_eta_subl = CorrectedEta(leadingPhotons[1]);
397 
398  const double ph_phi_lead = leadingPhotons[0]->phi();
399  const double ph_phi_subl = leadingPhotons[1]->phi();
400 
401  const double ph_pt_lead = ph_e_lead / cosh(ph_eta_lead);
402  const double ph_pt_subl = ph_e_subl / cosh(ph_eta_subl);
403 
404  TLorentzVector leadPhotonLV;
405  TLorentzVector sublPhotonLV;
406  leadPhotonLV.SetPtEtaPhiM(ph_pt_lead, ph_eta_lead, ph_phi_lead, 0.);
407  sublPhotonLV.SetPtEtaPhiM(ph_pt_subl, ph_eta_subl, ph_phi_subl, 0.);
408 
409  return (leadPhotonLV + sublPhotonLV).M();
410 
411 }

◆ CorrectedEnergy()

double DerivationFramework::SkimmingToolHIGG1::CorrectedEnergy ( const xAOD::Photon ph)
staticprivate

Definition at line 422 of file SkimmingToolHIGG1.cxx.

422  {
423 
424  return ph->e();
425 
426 }

◆ CorrectedEta()

double DerivationFramework::SkimmingToolHIGG1::CorrectedEta ( const xAOD::Photon ph) const
private

Definition at line 431 of file SkimmingToolHIGG1.cxx.

431  {
432 
433  double eta1 = ph->caloCluster()->etaBE(1);
434 
435  double R_photom_n_front, Z_photom_n_front;
436  if (std::abs(eta1) < 1.5) { // barrel
437  R_photom_n_front = ReturnRZ_1stSampling_cscopt2(eta1);
438  Z_photom_n_front = R_photom_n_front*sinh(eta1);
439  } else { // endcap
440  Z_photom_n_front = ReturnRZ_1stSampling_cscopt2(eta1);
441  R_photom_n_front = Z_photom_n_front/sinh(eta1);
442  }
443 
444  return asinh((Z_photom_n_front - GetDiphotonVertex())/R_photom_n_front);
445 
446 }

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

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

◆ ElectronPreselect()

bool DerivationFramework::SkimmingToolHIGG1::ElectronPreselect ( const xAOD::Electron el) const
private

Definition at line 766 of file SkimmingToolHIGG1.cxx.

766  {
767 
768  if (!el) return false;
769 
770  bool val(false);
771  bool defined(false);
772 
773  static const SG::ConstAccessor<char> DFCommonElectronsLooseAcc("DFCommonElectronsLoose");
774  if(DFCommonElectronsLooseAcc.isAvailable(*el)){
775  defined = true;
776  val = val || static_cast<bool>(DFCommonElectronsLooseAcc(*el));
777  }else{
778  defined = el->passSelection(val, "Loose");
779  }
780 
781  static const SG::ConstAccessor<char> DFCommonElectronsLHLooseAcc("DFCommonElectronsLHLoose");
782  if(DFCommonElectronsLHLooseAcc.isAvailable(*el)){
783  defined = true;
784  val = val || static_cast<bool>(DFCommonElectronsLHLooseAcc(*el));
785  }
786 
787  if(!defined || !val) return false;
788 
789  double eta = std::abs(el->eta());
790  double pt = el->pt();
791 
792  if (eta > m_maxEta) return false;
793  if (m_removeCrack && 1.37 <= eta && eta <= 1.52) return false;
794  if (pt <= m_minElectronPt) return false;
795 
796  return true;
797 
798 }

◆ eventPassesFilter()

bool DerivationFramework::SkimmingToolHIGG1::eventPassesFilter ( ) const
overridevirtual

Check that the current event passes this filter.

Implements DerivationFramework::ISkimmingTool.

Definition at line 158 of file SkimmingToolHIGG1.cxx.

159 {
160 
161  m_n_tot++;
162 
163  bool writeEvent(false);
164  const EventContext& ctx = Gaudi::Hive::currentContext();
166 
167  if (m_reqGRL && !SubcutGoodRunList() ) return false;
168  if (m_reqLArError && !SubcutLArError(*eventInfo) ) return false;
169  if (m_reqTrigger && !SubcutTrigger() ) return false;
170 
171  const auto leadingPhotons = SubcutPreselect();
172  if (m_incTwoPhotons && !m_reqPreselection) writeEvent = true;
173 
174  // ey, ee, muy events
175  if (m_incSingleElectron && SubcutOnePhotonOneElectron() ) writeEvent = true;
176  if (m_incDoubleElectron && SubcutTwoElectrons() ) writeEvent = true;
177  if (m_incSingleMuon && SubcutOnePhotonOneMuon() ) writeEvent = true;
178 
179  // eey, mumuy events
180  if (m_incMergedElectronPhoton && SubcutOnePhotonMergedElectrons(*eventInfo)) writeEvent = true;
181  if (m_incDoubleMuon && SubcutOnePhotonTwoMuons() ) writeEvent = true;
182  if (m_incDoubleElectronPhoton && SubcutOnePhotonTwoElectrons() ) writeEvent = true;
183  if (m_incHighPtElectronPhoton && SubcutHighPtOnePhotonOneElectron() ) writeEvent = true;
184 
185  if (m_incMergedElectron && SubcutOneMergedElectron() ) writeEvent = true;
186  // There *must* be two photons for the remaining
187  // pieces, but you can still save the event...
188  if (m_incTwoPhotons && leadingPhotons) {
190  const double mass = CalculateInvariantMass(leadingPhotons.value());
191 
192  bool passTwoPhotonCuts(true);
193  if (m_reqQuality && !SubcutQuality(leadingPhotons.value())) passTwoPhotonCuts = false;
194  if (m_reqKinematic && !SubcutKinematic(leadingPhotons.value(), mass)) passTwoPhotonCuts = false;
195  if (m_reqIsolation && !SubcutIsolation()) passTwoPhotonCuts = false;
196  if (m_reqInvariantMass && !SubcutInvariantMass(mass)) passTwoPhotonCuts = false;
197  // yy events
198  if (passTwoPhotonCuts) writeEvent = true;
199 
200  }
201 
202 
203  if (!writeEvent) return false;
204 
205  m_n_pass++;
206  return true;
207 }

◆ 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

◆ finalize()

StatusCode DerivationFramework::SkimmingToolHIGG1::finalize ( )
overridevirtual

Definition at line 116 of file SkimmingToolHIGG1.cxx.

117 {
118  ATH_MSG_VERBOSE("finalize() ...");
119  ATH_MSG_INFO("Processed " << m_n_tot << " events, " << m_n_pass << " events passed filter ");
120 
121 
122  ATH_MSG_INFO("GRL :: " << m_n_passGRL);
123  ATH_MSG_INFO("lar :: " << m_n_passLArError);
124  ATH_MSG_INFO("trig :: " << m_n_passTrigger);
125  ATH_MSG_INFO("----------------------------");
130  if(m_incSingleMuon)
132  if(m_incDoubleMuon)
142 
143  if(m_incTwoPhotons){
144  ATH_MSG_INFO("2y :: " << m_n_passPreselect);
145  ATH_MSG_INFO("----------------------------");
146  ATH_MSG_INFO("2y - kin :: " << m_n_passKinematic);
147  ATH_MSG_INFO("2y - qual :: " << m_n_passQuality);
148  ATH_MSG_INFO("2y - iso :: " << m_n_passIsolation);
149  ATH_MSG_INFO("2y - inv :: " << m_n_passInvariantMass);
150  }
151  ATH_MSG_INFO("----------------------------");
152  ATH_MSG_INFO("passed :: " << m_n_pass);
153 
154  return StatusCode::SUCCESS;
155 }

◆ GetDiphotonVertex()

double DerivationFramework::SkimmingToolHIGG1::GetDiphotonVertex ( ) const
private

Definition at line 415 of file SkimmingToolHIGG1.cxx.

415  {
416 
417  return 0;
418 
419 }

◆ initialize()

StatusCode DerivationFramework::SkimmingToolHIGG1::initialize ( )
overridevirtual

Definition at line 82 of file SkimmingToolHIGG1.cxx.

83 {
84  ATH_MSG_VERBOSE("INITIALIZING HSG1 SELECTOR TOOL");
85 
87  // trigger decision tool
88  if(m_trigDecisionTool.retrieve(DisableTool{!m_reqTrigger}).isFailure()) {
89  ATH_MSG_FATAL("Failed to retrieve tool: " << m_trigDecisionTool);
90  return StatusCode::FAILURE;
91  }
92  if (m_triggers.empty()) m_triggers.push_back(m_defaultTrigger);
93  ATH_MSG_INFO("Retrieved tool: " << m_trigDecisionTool);
95  //
97  if( m_mergedCutTools.retrieve().isFailure() )
98  {
99  ATH_MSG_FATAL("Failed to retrieve tool: ElectronPhotonSelectorTools");
100  return StatusCode::FAILURE;
101  }
102  }
103 
105 
106  ATH_CHECK( m_photonKey.initialize() );
107 
109 
110  ATH_CHECK( m_muonKey.initialize() );
111 
113  return StatusCode::SUCCESS;
114 }

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

◆ interfaceID()

static const InterfaceID& DerivationFramework::ISkimmingTool::interfaceID ( )
inlinestaticinherited

AlgTool interface methods.

Definition at line 32 of file ISkimmingTool.h.

32 { return IID_ISkimmingTool; }

◆ MergedElectronPreselect()

bool DerivationFramework::SkimmingToolHIGG1::MergedElectronPreselect ( const xAOD::Electron el) const
private

Definition at line 800 of file SkimmingToolHIGG1.cxx.

800  {
801 
802  if (!el) return false;
803 
804  double eta = std::abs(el->eta());
805  double pt = el->pt();
806 
807  if (eta > m_maxEta) return false;
808  if (m_removeCrack && 1.37 <= eta && eta <= 1.52) return false;
809  if (pt <= m_minMergedElectronPt) return false;
810 
811  return m_mergedCutTools->accept(el) || ElectronPreselect(el);
812 
813 }

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

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

◆ MuonPreselect()

bool DerivationFramework::SkimmingToolHIGG1::MuonPreselect ( const xAOD::Muon mu) const
private

Definition at line 815 of file SkimmingToolHIGG1.cxx.

815  {
816 
817  if (!mu) return false;
818 
819  static const SG::ConstAccessor<char> DFCommonGoodMuonAcc("DFCommonGoodMuon");
820  if(DFCommonGoodMuonAcc.isAvailable(*mu))
821  if( !static_cast<bool>(DFCommonGoodMuonAcc(*mu)) )
822  return false;
823 
824  static const SG::ConstAccessor<char> DFCommonMuonsPreselectionAcc("DFCommonMuonsPreselection");
825  if(DFCommonMuonsPreselectionAcc.isAvailable(*mu))
826  if( !static_cast<bool>(DFCommonMuonsPreselectionAcc(*mu)) )
827  return false;
828 
829  double eta = std::abs(mu->eta());
830  double pt = mu->pt();
831 
832  if (eta > m_maxMuonEta) return false;
833  if (pt <= m_minMuonPt) return false;
834 
835  return true;
836 
837 }

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

◆ PhotonPreselect()

bool DerivationFramework::SkimmingToolHIGG1::PhotonPreselect ( const xAOD::Photon ph) const
private

Definition at line 295 of file SkimmingToolHIGG1.cxx.

295  {
296 
297  if (!ph) return false;
298 
299  if (!ph->isGoodOQ(34214)) return false;
300 
301  bool val(false);
302  bool defined(false);
303 
304  static const SG::ConstAccessor<char> DFCommonPhotonsIsEMLooseAcc("DFCommonPhotonsIsEMLoose");
305  if(DFCommonPhotonsIsEMLooseAcc.isAvailable(*ph)){
306  defined = true;
307  val = static_cast<bool>(DFCommonPhotonsIsEMLooseAcc(*ph));
308  }
309  else{
310  defined = ph->passSelection(val, "Loose");
311  }
312 
313  if(!defined || !val) return false;
314 
315 
316  // veto topo-seeded clusters
317  // uint16_t author = 0;
318  // author = ph->author();
319  // if (author & xAOD::EgammaParameters::AuthorCaloTopo35) return false;
320 
321  // Check which variable versions are best...
322  const xAOD::CaloCluster *caloCluster(ph->caloCluster());
323  double eta = std::abs(caloCluster->etaBE(2));
324 
325  if (eta > m_maxEta) return false;
326  if (m_removeCrack &&
327  1.37 <= eta && eta <= 1.52) return false;
328  if (caloCluster->e()/cosh(eta) < m_minPhotonPt) return false;
329 
330  return true;
331 
332 }

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

◆ ReturnRZ_1stSampling_cscopt2()

double DerivationFramework::SkimmingToolHIGG1::ReturnRZ_1stSampling_cscopt2 ( double  eta1)
staticprivate

Definition at line 449 of file SkimmingToolHIGG1.cxx.

449  {
450 
451  float abs_eta1 = std::abs(eta1);
452 
453  double radius = -99999;
454  if (abs_eta1 < 0.8) {
455  radius = 1558.859292 - 4.990838 * abs_eta1 - 21.144279 * abs_eta1 * abs_eta1;
456  } else if (abs_eta1 < 1.5) {
457  radius = 1522.775373 + 27.970192 * abs_eta1 - 21.104108 * abs_eta1 * abs_eta1;
458  } else { //endcap
459  radius = 3790.671754;
460  if (eta1 < 0.) radius = -radius;
461  }
462 
463  return radius;
464 
465 }

◆ SubcutGoodRunList()

bool DerivationFramework::SkimmingToolHIGG1::SubcutGoodRunList ( ) const
private

Definition at line 209 of file SkimmingToolHIGG1.cxx.

209  {
210 
211  // Placeholder
212  m_n_passGRL++;
213  return true;
214 }

◆ SubcutHighPtOnePhotonOneElectron()

bool DerivationFramework::SkimmingToolHIGG1::SubcutHighPtOnePhotonOneElectron ( ) const
private

Definition at line 725 of file SkimmingToolHIGG1.cxx.

726 {
727 
728 
730 
731  xAOD::PhotonContainer::const_iterator ph_itr(photons->begin());
732  xAOD::PhotonContainer::const_iterator ph_end(photons->end());
733 
735 
738 
739  int nPhoton = 0;
740  int nElectron = 0;
741 
742  for( ; ph_itr != ph_end; ++ph_itr){
743  if(PhotonPreselect(*ph_itr) && (*ph_itr)->pt() > 500*CLHEP::GeV){
744  ++nPhoton;
745  }
746  }
747 
748  for( ; el_itr != el_end; ++el_itr){
749  if( std::abs((*el_itr)->eta()) <= m_maxEta && (*el_itr)->pt() > m_minElectronPt){
750  ++nElectron;
751  }
752  }
753 
754  if(nPhoton >= 1 && nElectron >= 1 ){
755  ATH_MSG_DEBUG("Event selected with " << nPhoton << " high pt photons and " << nElectron << " merged electron");
757  return true;
758  } else {
759  return false;
760  }
761 
762 }

◆ SubcutInvariantMass()

bool DerivationFramework::SkimmingToolHIGG1::SubcutInvariantMass ( double  invariantMass) const
private

Definition at line 375 of file SkimmingToolHIGG1.cxx.

375  {
376 
377  bool passInvariantMass = (!m_minInvariantMass ||
378  m_minInvariantMass < invariantMass);
379 
380  passInvariantMass &= (!m_maxInvariantMass ||
381  invariantMass < m_maxInvariantMass);
382 
383  if (passInvariantMass) m_n_passInvariantMass++;
384  return passInvariantMass;
385 
386 }

◆ SubcutIsolation()

bool DerivationFramework::SkimmingToolHIGG1::SubcutIsolation ( ) const
private

Definition at line 367 of file SkimmingToolHIGG1.cxx.

367  {
368 
369  // PLACEHOLDER!!!
371  return true;
372 }

◆ SubcutKinematic()

bool DerivationFramework::SkimmingToolHIGG1::SubcutKinematic ( const LeadingPhotons_t leadingPhotons,
double  invariantMass 
) const
private

Definition at line 334 of file SkimmingToolHIGG1.cxx.

334  {
335 
336  bool passKinematic;
337  if (m_relativePtCuts) {
338  passKinematic = (leadingPhotons[0]->pt() > invariantMass * m_leadingPhotonPt);
339  passKinematic &= (leadingPhotons[1]->pt() > invariantMass * m_subleadingPhotonPt);
340  } else {
341  passKinematic = (leadingPhotons[0]->pt() > m_leadingPhotonPt);
342  passKinematic &= (leadingPhotons[1]->pt() > m_subleadingPhotonPt);
343  }
344 
345  if (passKinematic) m_n_passKinematic++;
346  return passKinematic;
347 
348 }

◆ SubcutLArError()

bool DerivationFramework::SkimmingToolHIGG1::SubcutLArError ( const xAOD::EventInfo eventInfo) const
private

Definition at line 217 of file SkimmingToolHIGG1.cxx.

217  {
218 
221  return true;
222  }
223  else return false;
224 }

◆ SubcutOneMergedElectron()

bool DerivationFramework::SkimmingToolHIGG1::SubcutOneMergedElectron ( ) const
private

Definition at line 497 of file SkimmingToolHIGG1.cxx.

497  {
498 
500 
501  int nEle(0);
502  for(const auto *const el: *electrons){
503  if( el->pt() < m_minElectronPt)
504  continue;
505  //Count the number of Si tracks matching the electron
506  int nSiTrack(0);
507  int z0_1 = 1;
508  for( unsigned int trk_i(0); trk_i < el->nTrackParticles(); ++trk_i){
509  const auto *ele_tp = el->trackParticle(trk_i);
510  if(!ele_tp){
511  continue;
512  }
513  uint8_t nPixHits(0), nPixDead(0), nSCTHits(0), nSCTDead(0);
514  bool allFound = true;
515  allFound = allFound && ele_tp->summaryValue(nPixHits, xAOD::numberOfPixelHits);
516  allFound = allFound && ele_tp->summaryValue(nPixDead, xAOD::numberOfPixelDeadSensors);
517  allFound = allFound && ele_tp->summaryValue(nSCTHits, xAOD::numberOfSCTHits);
518  allFound = allFound && ele_tp->summaryValue(nSCTDead, xAOD::numberOfSCTDeadSensors);
519 
520  // Require that the track be a reasonble silicon track
521  int nSiHitsPlusDeadSensors = nPixHits + nPixDead + nSCTHits + nSCTDead;
522  if(nSiHitsPlusDeadSensors >= 7)
523  {
524  //Ensure that the tracks come from roughly the same region of the detector
525  if(nSiTrack == 0)
526  z0_1 = ele_tp->z0();
527  else if( std::abs(z0_1 - ele_tp->z0()) > 10 )
528  continue;
529  ++nSiTrack;
530  }
531  }
532  //If 2 or more the electron is selected
533  if(nSiTrack>1)
534  ++nEle;
535  }
536  if(nEle>0){
538  return true;
539  }
540  return false;
541 }

◆ SubcutOnePhotonMergedElectrons()

bool DerivationFramework::SkimmingToolHIGG1::SubcutOnePhotonMergedElectrons ( const xAOD::EventInfo eventInfo) const
private

Definition at line 669 of file SkimmingToolHIGG1.cxx.

670 {
671 
672 
673  bool passTrigger=false;
674  if(!m_mergedtriggers.empty()) {
675  for (unsigned int i = 0; i < m_mergedtriggers.size(); i++) {
676  ATH_MSG_DEBUG("TRIGGER = " << m_mergedtriggers.at(i));
677  if(m_trigDecisionTool->isPassed(m_mergedtriggers.at(i)))
678  passTrigger = true;
679  }
680  } else {
682  ATH_MSG_WARNING("Selecting Merged electrons but no Merged Triggers Selected ! -- was that intentional?");
683  passTrigger = true;
684  }
685  if(!passTrigger)
686  return false;
687 
688 
690 
692 
693  bool passSelection = false;
694 
695  for(const auto *el : *electrons){
697  for(const auto *ph: *photons){
698  if(PhotonPreselect(ph)){
699  passSelection = true;
700  auto eph = ph->p4() + el->p4();
701  if(eph.M() > 90 * CLHEP::GeV)
702  {
703  break;
704  }
705  }
706  }
707  }
708  if(passSelection)
709  {
710  break;
711  }
712  }
713 
714  if(passSelection){
715  ATH_MSG_DEBUG("Event selected with a photons and a merged electron");
717  return true;
718  } else {
719  return false;
720  }
721 
722 }

◆ SubcutOnePhotonOneElectron()

bool DerivationFramework::SkimmingToolHIGG1::SubcutOnePhotonOneElectron ( ) const
private

Definition at line 467 of file SkimmingToolHIGG1.cxx.

467  {
468 
470 
471  xAOD::PhotonContainer::const_iterator ph_itr(photons->begin());
472  xAOD::PhotonContainer::const_iterator ph_end(photons->end());
473 
475 
478 
479  bool passSingleElectronPreselect = false;
480 
481  for( ; ph_itr != ph_end; ++ph_itr){
482  if(PhotonPreselect(*ph_itr)){
483  for( ; el_itr != el_end; ++el_itr){
484  if(ElectronPreselect(*el_itr)){
485  passSingleElectronPreselect = true;
486  }
487  }
488  }
489  }
490 
491 
492  if(passSingleElectronPreselect) m_n_passSingleElectronPreselect++;
493  return passSingleElectronPreselect;
494 }

◆ SubcutOnePhotonOneMuon()

bool DerivationFramework::SkimmingToolHIGG1::SubcutOnePhotonOneMuon ( ) const
private

Definition at line 565 of file SkimmingToolHIGG1.cxx.

565  {
566 
568 
569  xAOD::PhotonContainer::const_iterator ph_itr(photons->begin());
570  xAOD::PhotonContainer::const_iterator ph_end(photons->end());
571 
573 
574  xAOD::MuonContainer::const_iterator mu_itr(muons->begin());
575  xAOD::MuonContainer::const_iterator mu_end(muons->end());
576 
577  bool passSingleMuonPreselect = false;
578 
579  for( ; ph_itr != ph_end; ++ph_itr){
580  if(PhotonPreselect(*ph_itr)){
581  for( ; mu_itr != mu_end; ++mu_itr){
582  if(MuonPreselect(*mu_itr)){
583  passSingleMuonPreselect = true;
584  }
585  }
586  }
587  }
588 
589 
590  if(passSingleMuonPreselect) m_n_passSingleMuonPreselect++;
591  return passSingleMuonPreselect;
592 }

◆ SubcutOnePhotonTwoElectrons()

bool DerivationFramework::SkimmingToolHIGG1::SubcutOnePhotonTwoElectrons ( ) const
private

Definition at line 632 of file SkimmingToolHIGG1.cxx.

633 {
635 
636  xAOD::PhotonContainer::const_iterator ph_itr(photons->begin());
637  xAOD::PhotonContainer::const_iterator ph_end(photons->end());
638 
640 
643 
644  int nPhoton = 0;
645  int nElectron = 0;
646 
647  for( ; ph_itr != ph_end; ++ph_itr){
648  if(PhotonPreselect(*ph_itr)){
649  ++nPhoton;
650  }
651  }
652 
653  for( ; el_itr != el_end; ++el_itr){
654  if(ElectronPreselect(*el_itr)){
655  ++nElectron;
656  }
657  }
658 
659  if(nPhoton >= 1 && nElectron >= 2){
660  ATH_MSG_DEBUG("Event selected with " << nPhoton << " photons and " << nElectron << " electrons");
662  return true;
663  } else {
664  return false;
665  }
666 
667 }

◆ SubcutOnePhotonTwoMuons()

bool DerivationFramework::SkimmingToolHIGG1::SubcutOnePhotonTwoMuons ( ) const
private

Definition at line 594 of file SkimmingToolHIGG1.cxx.

595 {
597 
598  xAOD::PhotonContainer::const_iterator ph_itr(photons->begin());
599  xAOD::PhotonContainer::const_iterator ph_end(photons->end());
600 
602 
603  xAOD::MuonContainer::const_iterator mu_itr(muons->begin());
604  xAOD::MuonContainer::const_iterator mu_end(muons->end());
605 
606  int nPhoton = 0;
607  int nMuon = 0;
608 
609  for( ; ph_itr != ph_end; ++ph_itr){
610  if(PhotonPreselect(*ph_itr)){
611  ++nPhoton;
612  }
613  }
614 
615  for( ; mu_itr != mu_end; ++mu_itr){
616  if(MuonPreselect(*mu_itr)){
617  ++nMuon;
618  }
619  }
620 
621 
622  if(nPhoton >= 1 && nMuon >= 2){
623  ATH_MSG_DEBUG("Event selected with " << nPhoton << " photons and " << nMuon << " muons");
625  return true;
626  } else {
627  return false;
628  }
629 }

◆ SubcutPreselect()

std::optional< DerivationFramework::SkimmingToolHIGG1::LeadingPhotons_t > DerivationFramework::SkimmingToolHIGG1::SubcutPreselect ( ) const
private

Definition at line 247 of file SkimmingToolHIGG1.cxx.

247  {
248 
250 
251  xAOD::PhotonContainer::const_iterator ph_itr(photons->begin());
252  xAOD::PhotonContainer::const_iterator ph_end(photons->end());
253 
254  int ph_pos_lead = -1;
255  int ph_pos_subl = -1;
256  int ph_pt_lead = 0;
257  int ph_pt_subl = 0;
258 
259  for(int i = 0; ph_itr != ph_end; ++ph_itr, ++i) {
260 
261  if (PhotonPreselect(*ph_itr)) {
262 
263  if ((*ph_itr)->pt() > ph_pt_lead) {
264 
265  ph_pos_subl = ph_pos_lead; ph_pos_lead = i;
266  ph_pt_subl = ph_pt_lead;
267  ph_pt_lead = (*ph_itr)->pt();
268 
269  } else if ((*ph_itr)->pt() > ph_pt_subl) {
270  ph_pos_subl = i;
271  ph_pt_subl = (*ph_itr)->pt();
272  }
273  }
274  }
275 
276  // save this for the derivation.
277  //std::vector<int> *leadingV = new std::vector<int>();
278  //leadingV->push_back(m_ph_pos_lead);
279  //leadingV->push_back(m_ph_pos_subl);
280  //if (!evtStore()->contains<std::vector<int> >("leadingV")) CHECK(evtStore()->record(leadingV, "leadingV"));
281 
282  // save this for this code.
283  if (ph_pos_subl != -1) {
284  const xAOD::Photon* ph_lead = *(photons->begin() + ph_pos_lead);
285  const xAOD::Photon* ph_subl = *(photons->begin() + ph_pos_subl);
287 
288  return LeadingPhotons_t{ph_lead,ph_subl};
289  }
290 
291  return {};
292 }

◆ SubcutQuality()

bool DerivationFramework::SkimmingToolHIGG1::SubcutQuality ( const LeadingPhotons_t leadingPhotons) const
private

Definition at line 350 of file SkimmingToolHIGG1.cxx.

350  {
351 
352  bool val(0);
353  bool passQuality = false;
354  leadingPhotons[0]->passSelection(val, "Tight");
355  const int ph_tight_lead = val;
356 
357  leadingPhotons[1]->passSelection(val, "Tight");
358  const int ph_tight_subl = val;
359 
360  passQuality = (ph_tight_lead && ph_tight_subl);
361 
362  if (passQuality) m_n_passQuality++;
363  return passQuality;
364 
365 }

◆ SubcutTrigger()

bool DerivationFramework::SkimmingToolHIGG1::SubcutTrigger ( ) const
private

Definition at line 227 of file SkimmingToolHIGG1.cxx.

227  {
228 
229  //just for counting purposes
230  bool passTrigger = !m_reqTrigger;
231 
232  if(m_triggers.empty()) passTrigger = true;
233 
234  for (unsigned int i = 0; i < m_triggers.size(); i++) {
235  ATH_MSG_DEBUG("TRIGGER = " << m_triggers.at(i));
236  if(m_trigDecisionTool->isPassed(m_triggers.at(i)))
237  passTrigger = true;
238  }
239 
240  if (passTrigger) m_n_passTrigger++;
241  return passTrigger;
242 
243 }

◆ SubcutTwoElectrons()

bool DerivationFramework::SkimmingToolHIGG1::SubcutTwoElectrons ( ) const
private

Definition at line 543 of file SkimmingToolHIGG1.cxx.

543  {
544 
546 
549 
550  int nEle(0);
551  bool passDoubleElectronPreselect = false;
552 
553  for( ; el_itr != el_end; ++el_itr){
554  if(ElectronPreselect(*el_itr))
555  nEle++;
556  }
557 
558  if(nEle >=2) passDoubleElectronPreselect = true;
559 
560  if(passDoubleElectronPreselect) m_n_passDoubleElectronPreselect++;
561  return passDoubleElectronPreselect;
562 }

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

std::string DerivationFramework::SkimmingToolHIGG1::m_defaultTrigger
private

Definition at line 97 of file SkimmingToolHIGG1.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_electronKey

SG::ReadHandleKey<xAOD::ElectronContainer > DerivationFramework::SkimmingToolHIGG1::m_electronKey { this, "ElectronKey", "Electrons", "" }
private

Definition at line 194 of file SkimmingToolHIGG1.h.

◆ m_eventInfoKey

SG::ReadHandleKey<xAOD::EventInfo> DerivationFramework::SkimmingToolHIGG1::m_eventInfoKey { this, "EventInfoKey", "EventInfo", "" }
private

Definition at line 188 of file SkimmingToolHIGG1.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_goodRunList

std::string DerivationFramework::SkimmingToolHIGG1::m_goodRunList
private

Definition at line 95 of file SkimmingToolHIGG1.h.

◆ m_incDoubleElectron

bool DerivationFramework::SkimmingToolHIGG1::m_incDoubleElectron
private

Definition at line 80 of file SkimmingToolHIGG1.h.

◆ m_incDoubleElectronPhoton

bool DerivationFramework::SkimmingToolHIGG1::m_incDoubleElectronPhoton
private

Definition at line 83 of file SkimmingToolHIGG1.h.

◆ m_incDoubleMuon

bool DerivationFramework::SkimmingToolHIGG1::m_incDoubleMuon
private

Definition at line 82 of file SkimmingToolHIGG1.h.

◆ m_incHighPtElectronPhoton

bool DerivationFramework::SkimmingToolHIGG1::m_incHighPtElectronPhoton
private

Definition at line 85 of file SkimmingToolHIGG1.h.

◆ m_incMergedElectron

bool DerivationFramework::SkimmingToolHIGG1::m_incMergedElectron
private

Definition at line 78 of file SkimmingToolHIGG1.h.

◆ m_incMergedElectronPhoton

bool DerivationFramework::SkimmingToolHIGG1::m_incMergedElectronPhoton
private

Definition at line 84 of file SkimmingToolHIGG1.h.

◆ m_incSingleElectron

bool DerivationFramework::SkimmingToolHIGG1::m_incSingleElectron
private

Definition at line 79 of file SkimmingToolHIGG1.h.

◆ m_incSingleMuon

bool DerivationFramework::SkimmingToolHIGG1::m_incSingleMuon
private

Definition at line 81 of file SkimmingToolHIGG1.h.

◆ m_incTwoPhotons

bool DerivationFramework::SkimmingToolHIGG1::m_incTwoPhotons
private

Definition at line 86 of file SkimmingToolHIGG1.h.

◆ m_leadingPhotonPt

double DerivationFramework::SkimmingToolHIGG1::m_leadingPhotonPt
private

Definition at line 106 of file SkimmingToolHIGG1.h.

◆ m_maxEta

double DerivationFramework::SkimmingToolHIGG1::m_maxEta
private

Definition at line 103 of file SkimmingToolHIGG1.h.

◆ m_maxInvariantMass

double DerivationFramework::SkimmingToolHIGG1::m_maxInvariantMass
private

Definition at line 110 of file SkimmingToolHIGG1.h.

◆ m_maxMuonEta

double DerivationFramework::SkimmingToolHIGG1::m_maxMuonEta
private

Definition at line 115 of file SkimmingToolHIGG1.h.

◆ m_mergedCutTools

ToolHandle<IAsgElectronIsEMSelector> DerivationFramework::SkimmingToolHIGG1::m_mergedCutTools
private

Definition at line 185 of file SkimmingToolHIGG1.h.

◆ m_mergedtriggers

std::vector<std::string> DerivationFramework::SkimmingToolHIGG1::m_mergedtriggers
private

Definition at line 99 of file SkimmingToolHIGG1.h.

◆ m_minElectronPt

double DerivationFramework::SkimmingToolHIGG1::m_minElectronPt
private

Definition at line 112 of file SkimmingToolHIGG1.h.

◆ m_minInvariantMass

double DerivationFramework::SkimmingToolHIGG1::m_minInvariantMass
private

Definition at line 109 of file SkimmingToolHIGG1.h.

◆ m_minMergedElectronPt

double DerivationFramework::SkimmingToolHIGG1::m_minMergedElectronPt
private

Definition at line 113 of file SkimmingToolHIGG1.h.

◆ m_minMuonPt

double DerivationFramework::SkimmingToolHIGG1::m_minMuonPt
private

Definition at line 114 of file SkimmingToolHIGG1.h.

◆ m_minPhotonPt

double DerivationFramework::SkimmingToolHIGG1::m_minPhotonPt
private

Definition at line 101 of file SkimmingToolHIGG1.h.

◆ m_muonKey

SG::ReadHandleKey<xAOD::MuonContainer > DerivationFramework::SkimmingToolHIGG1::m_muonKey { this, "MuonKey", "Muons", "" }
private

Definition at line 197 of file SkimmingToolHIGG1.h.

◆ m_n_pass

std::atomic<unsigned int> DerivationFramework::SkimmingToolHIGG1::m_n_pass {0}
mutableprivate

Definition at line 174 of file SkimmingToolHIGG1.h.

◆ m_n_passDoubleElectronPreselect

std::atomic<unsigned int> DerivationFramework::SkimmingToolHIGG1::m_n_passDoubleElectronPreselect {0}
mutableprivate

Definition at line 163 of file SkimmingToolHIGG1.h.

◆ m_n_passGRL

std::atomic<unsigned int> DerivationFramework::SkimmingToolHIGG1::m_n_passGRL {0}
mutableprivate

Definition at line 158 of file SkimmingToolHIGG1.h.

◆ m_n_passHighPtPhotonMergedElectronPreselect

std::atomic<unsigned int> DerivationFramework::SkimmingToolHIGG1::m_n_passHighPtPhotonMergedElectronPreselect {0}
mutableprivate

Definition at line 168 of file SkimmingToolHIGG1.h.

◆ m_n_passInvariantMass

std::atomic<unsigned int> DerivationFramework::SkimmingToolHIGG1::m_n_passInvariantMass {0}
mutableprivate

Definition at line 173 of file SkimmingToolHIGG1.h.

◆ m_n_passIsolation

std::atomic<unsigned int> DerivationFramework::SkimmingToolHIGG1::m_n_passIsolation {0}
mutableprivate

Definition at line 172 of file SkimmingToolHIGG1.h.

◆ m_n_passKinematic

std::atomic<unsigned int> DerivationFramework::SkimmingToolHIGG1::m_n_passKinematic {0}
mutableprivate

Definition at line 170 of file SkimmingToolHIGG1.h.

◆ m_n_passLArError

std::atomic<unsigned int> DerivationFramework::SkimmingToolHIGG1::m_n_passLArError {0}
mutableprivate

Definition at line 159 of file SkimmingToolHIGG1.h.

◆ m_n_passPreselect

std::atomic<unsigned int> DerivationFramework::SkimmingToolHIGG1::m_n_passPreselect {0}
mutableprivate

Definition at line 161 of file SkimmingToolHIGG1.h.

◆ m_n_passQuality

std::atomic<unsigned int> DerivationFramework::SkimmingToolHIGG1::m_n_passQuality {0}
mutableprivate

Definition at line 171 of file SkimmingToolHIGG1.h.

◆ m_n_passSingleElectronPreselect

std::atomic<unsigned int> DerivationFramework::SkimmingToolHIGG1::m_n_passSingleElectronPreselect {0}
mutableprivate

Definition at line 162 of file SkimmingToolHIGG1.h.

◆ m_n_passSingleMergedElectronPreselect

std::atomic<unsigned int> DerivationFramework::SkimmingToolHIGG1::m_n_passSingleMergedElectronPreselect {0}
mutableprivate

Definition at line 169 of file SkimmingToolHIGG1.h.

◆ m_n_passSingleMuonPreselect

std::atomic<unsigned int> DerivationFramework::SkimmingToolHIGG1::m_n_passSingleMuonPreselect {0}
mutableprivate

Definition at line 164 of file SkimmingToolHIGG1.h.

◆ m_n_passSinglePhotonDoubleElectronPreselect

std::atomic<unsigned int> DerivationFramework::SkimmingToolHIGG1::m_n_passSinglePhotonDoubleElectronPreselect {0}
mutableprivate

Definition at line 166 of file SkimmingToolHIGG1.h.

◆ m_n_passSinglePhotonDoubleMuonPreselect

std::atomic<unsigned int> DerivationFramework::SkimmingToolHIGG1::m_n_passSinglePhotonDoubleMuonPreselect {0}
mutableprivate

Definition at line 165 of file SkimmingToolHIGG1.h.

◆ m_n_passSinglePhotonMergedElectronPreselect

std::atomic<unsigned int> DerivationFramework::SkimmingToolHIGG1::m_n_passSinglePhotonMergedElectronPreselect {0}
mutableprivate

Definition at line 167 of file SkimmingToolHIGG1.h.

◆ m_n_passTrigger

std::atomic<unsigned int> DerivationFramework::SkimmingToolHIGG1::m_n_passTrigger {0}
mutableprivate

Definition at line 160 of file SkimmingToolHIGG1.h.

◆ m_n_tot

std::atomic<unsigned int> DerivationFramework::SkimmingToolHIGG1::m_n_tot {0}
mutableprivate

Definition at line 157 of file SkimmingToolHIGG1.h.

◆ m_photonKey

SG::ReadHandleKey<xAOD::PhotonContainer > DerivationFramework::SkimmingToolHIGG1::m_photonKey { this, "PhotonKey", "Photons", "" }
private

Definition at line 191 of file SkimmingToolHIGG1.h.

◆ m_relativePtCuts

bool DerivationFramework::SkimmingToolHIGG1::m_relativePtCuts
private

Definition at line 105 of file SkimmingToolHIGG1.h.

◆ m_removeCrack

bool DerivationFramework::SkimmingToolHIGG1::m_removeCrack
private

Definition at line 102 of file SkimmingToolHIGG1.h.

◆ m_reqGRL

bool DerivationFramework::SkimmingToolHIGG1::m_reqGRL
private

Definition at line 74 of file SkimmingToolHIGG1.h.

◆ m_reqInvariantMass

bool DerivationFramework::SkimmingToolHIGG1::m_reqInvariantMass
private

Definition at line 90 of file SkimmingToolHIGG1.h.

◆ m_reqIsolation

bool DerivationFramework::SkimmingToolHIGG1::m_reqIsolation
private

Definition at line 89 of file SkimmingToolHIGG1.h.

◆ m_reqKinematic

bool DerivationFramework::SkimmingToolHIGG1::m_reqKinematic
private

Definition at line 87 of file SkimmingToolHIGG1.h.

◆ m_reqLArError

bool DerivationFramework::SkimmingToolHIGG1::m_reqLArError
private

Definition at line 75 of file SkimmingToolHIGG1.h.

◆ m_reqPreselection

bool DerivationFramework::SkimmingToolHIGG1::m_reqPreselection
private

Definition at line 77 of file SkimmingToolHIGG1.h.

◆ m_reqQuality

bool DerivationFramework::SkimmingToolHIGG1::m_reqQuality
private

Definition at line 88 of file SkimmingToolHIGG1.h.

◆ m_reqTrigger

bool DerivationFramework::SkimmingToolHIGG1::m_reqTrigger
private

Definition at line 76 of file SkimmingToolHIGG1.h.

◆ m_subleadingPhotonPt

double DerivationFramework::SkimmingToolHIGG1::m_subleadingPhotonPt
private

Definition at line 107 of file SkimmingToolHIGG1.h.

◆ m_trigDecisionTool

ToolHandle<Trig::TrigDecisionTool> DerivationFramework::SkimmingToolHIGG1::m_trigDecisionTool
private

Definition at line 69 of file SkimmingToolHIGG1.h.

◆ m_triggers

std::vector<std::string> DerivationFramework::SkimmingToolHIGG1::m_triggers
private

Definition at line 98 of file SkimmingToolHIGG1.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.

◆ s_MZ

const double DerivationFramework::SkimmingToolHIGG1::s_MZ = 91187.6*CLHEP::MeV
staticprivate

Definition at line 180 of file SkimmingToolHIGG1.h.


The documentation for this class was generated from the following files:
DerivationFramework::SkimmingToolHIGG1::SubcutTrigger
bool SubcutTrigger() const
Definition: SkimmingToolHIGG1.cxx:227
DerivationFramework::SkimmingToolHIGG1::m_minMergedElectronPt
double m_minMergedElectronPt
Definition: SkimmingToolHIGG1.h:113
DerivationFramework::SkimmingToolHIGG1::MergedElectronPreselect
bool MergedElectronPreselect(const xAOD::Electron *el) const
Definition: SkimmingToolHIGG1.cxx:800
DerivationFramework::SkimmingToolHIGG1::SubcutOneMergedElectron
bool SubcutOneMergedElectron() const
Definition: SkimmingToolHIGG1.cxx:497
DerivationFramework::SkimmingToolHIGG1::m_triggers
std::vector< std::string > m_triggers
Definition: SkimmingToolHIGG1.h:98
GeV
#define GeV
Definition: PhysicsAnalysis/TauID/TauAnalysisTools/Root/HelperFunctions.cxx:17
ATH_MSG_FATAL
#define ATH_MSG_FATAL(x)
Definition: AthMsgStreamMacros.h:34
DataModel_detail::const_iterator
Const iterator class for DataVector/DataList.
Definition: DVLIterator.h:82
DerivationFramework::SkimmingToolHIGG1::SubcutInvariantMass
bool SubcutInvariantMass(double invariantMass) const
Definition: SkimmingToolHIGG1.cxx:375
DerivationFramework::SkimmingToolHIGG1::m_incSingleMuon
bool m_incSingleMuon
Definition: SkimmingToolHIGG1.h:81
DerivationFramework::SkimmingToolHIGG1::m_reqPreselection
bool m_reqPreselection
Definition: SkimmingToolHIGG1.h:77
DerivationFramework::SkimmingToolHIGG1::m_n_passSinglePhotonDoubleElectronPreselect
std::atomic< unsigned int > m_n_passSinglePhotonDoubleElectronPreselect
Definition: SkimmingToolHIGG1.h:166
DerivationFramework::SkimmingToolHIGG1::m_n_passPreselect
std::atomic< unsigned int > m_n_passPreselect
Definition: SkimmingToolHIGG1.h:161
DerivationFramework::SkimmingToolHIGG1::SubcutGoodRunList
bool SubcutGoodRunList() const
Definition: SkimmingToolHIGG1.cxx:209
ATH_MSG_INFO
#define ATH_MSG_INFO(x)
Definition: AthMsgStreamMacros.h:31
DerivationFramework::SkimmingToolHIGG1::m_minElectronPt
double m_minElectronPt
Definition: SkimmingToolHIGG1.h:112
xAOD::uint8_t
uint8_t
Definition: Muon_v1.cxx:557
DerivationFramework::SkimmingToolHIGG1::m_incTwoPhotons
bool m_incTwoPhotons
Definition: SkimmingToolHIGG1.h:86
Base_Fragment.mass
mass
Definition: Sherpa_i/share/common/Base_Fragment.py:59
DerivationFramework::SkimmingToolHIGG1::m_n_passSingleMergedElectronPreselect
std::atomic< unsigned int > m_n_passSingleMergedElectronPreselect
Definition: SkimmingToolHIGG1.h:169
DerivationFramework::SkimmingToolHIGG1::m_maxMuonEta
double m_maxMuonEta
Definition: SkimmingToolHIGG1.h:115
eta
Scalar eta() const
pseudorapidity method
Definition: AmgMatrixBasePlugin.h:83
SG::ReadHandle
Definition: StoreGate/StoreGate/ReadHandle.h:70
AthCommonDataStore< AthCommonMsg< AlgTool > >::declareProperty
Gaudi::Details::PropertyBase & declareProperty(Gaudi::Property< T > &t)
Definition: AthCommonDataStore.h:145
xAOD::Egamma_v1::e
virtual double e() const override final
The total energy of the particle.
Definition: Egamma_v1.cxx:90
DerivationFramework::SkimmingToolHIGG1::m_maxEta
double m_maxEta
Definition: SkimmingToolHIGG1.h:103
DerivationFramework::SkimmingToolHIGG1::m_n_pass
std::atomic< unsigned int > m_n_pass
Definition: SkimmingToolHIGG1.h:174
DerivationFramework::SkimmingToolHIGG1::m_reqLArError
bool m_reqLArError
Definition: SkimmingToolHIGG1.h:75
DerivationFramework::SkimmingToolHIGG1::m_reqTrigger
bool m_reqTrigger
Definition: SkimmingToolHIGG1.h:76
test_pyathena.pt
pt
Definition: test_pyathena.py: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
DerivationFramework::SkimmingToolHIGG1::m_electronKey
SG::ReadHandleKey< xAOD::ElectronContainer > m_electronKey
Definition: SkimmingToolHIGG1.h:194
xAOD::eta1
setEt setPhi setE277 setWeta2 eta1
Definition: TrigEMCluster_v1.cxx:41
xAOD::numberOfPixelHits
@ numberOfPixelHits
these are the pixel hits, including the b-layer [unit8_t].
Definition: TrackingPrimitives.h:259
SG::ConstAccessor< char >
DerivationFramework::SkimmingToolHIGG1::m_incMergedElectronPhoton
bool m_incMergedElectronPhoton
Definition: SkimmingToolHIGG1.h:84
read_hist_ntuple.t
t
Definition: read_hist_ntuple.py:5
ATH_MSG_VERBOSE
#define ATH_MSG_VERBOSE(x)
Definition: AthMsgStreamMacros.h:28
DerivationFramework::SkimmingToolHIGG1::m_photonKey
SG::ReadHandleKey< xAOD::PhotonContainer > m_photonKey
Definition: SkimmingToolHIGG1.h:191
DerivationFramework::SkimmingToolHIGG1::m_n_passKinematic
std::atomic< unsigned int > m_n_passKinematic
Definition: SkimmingToolHIGG1.h:170
DerivationFramework::SkimmingToolHIGG1::m_n_passGRL
std::atomic< unsigned int > m_n_passGRL
Definition: SkimmingToolHIGG1.h:158
DerivationFramework::SkimmingToolHIGG1::PhotonPreselect
bool PhotonPreselect(const xAOD::Photon *ph) const
Definition: SkimmingToolHIGG1.cxx:295
DerivationFramework::SkimmingToolHIGG1::SubcutOnePhotonTwoMuons
bool SubcutOnePhotonTwoMuons() const
Definition: SkimmingToolHIGG1.cxx:594
xAOD::EventInfo_v1::IS_SIMULATION
@ IS_SIMULATION
true: simulation, false: data
Definition: EventInfo_v1.h:151
DerivationFramework::SkimmingToolHIGG1::m_incSingleElectron
bool m_incSingleElectron
Definition: SkimmingToolHIGG1.h:79
xAOD::EventInfo_v1::LAr
@ LAr
The LAr calorimeter.
Definition: EventInfo_v1.h:335
DerivationFramework::SkimmingToolHIGG1::m_subleadingPhotonPt
double m_subleadingPhotonPt
Definition: SkimmingToolHIGG1.h:107
DerivationFramework::SkimmingToolHIGG1::m_muonKey
SG::ReadHandleKey< xAOD::MuonContainer > m_muonKey
Definition: SkimmingToolHIGG1.h:197
DerivationFramework::SkimmingToolHIGG1::m_incDoubleMuon
bool m_incDoubleMuon
Definition: SkimmingToolHIGG1.h:82
SG::VarHandleKeyArray::setOwner
virtual void setOwner(IDataHandleHolder *o)=0
xAOD::EventInfo_v1::Error
@ Error
The sub-detector issued an error.
Definition: EventInfo_v1.h:349
DerivationFramework::SkimmingToolHIGG1::SubcutHighPtOnePhotonOneElectron
bool SubcutHighPtOnePhotonOneElectron() const
Definition: SkimmingToolHIGG1.cxx:725
IDTPMcnv.htype
htype
Definition: IDTPMcnv.py:29
DerivationFramework::SkimmingToolHIGG1::MuonPreselect
bool MuonPreselect(const xAOD::Muon *mu) const
Definition: SkimmingToolHIGG1.cxx:815
DerivationFramework::SkimmingToolHIGG1::m_mergedCutTools
ToolHandle< IAsgElectronIsEMSelector > m_mergedCutTools
Definition: SkimmingToolHIGG1.h:185
DerivationFramework::SkimmingToolHIGG1::m_n_passIsolation
std::atomic< unsigned int > m_n_passIsolation
Definition: SkimmingToolHIGG1.h:172
DerivationFramework::SkimmingToolHIGG1::SubcutPreselect
std::optional< LeadingPhotons_t > SubcutPreselect() const
Definition: SkimmingToolHIGG1.cxx:247
DerivationFramework::SkimmingToolHIGG1::m_eventInfoKey
SG::ReadHandleKey< xAOD::EventInfo > m_eventInfoKey
Definition: SkimmingToolHIGG1.h:188
xAOD::CaloCluster_v1::etaBE
float etaBE(const unsigned layer) const
Get the eta in one layer of the EM Calo.
Definition: CaloCluster_v1.cxx:644
DerivationFramework::SkimmingToolHIGG1::m_n_passLArError
std::atomic< unsigned int > m_n_passLArError
Definition: SkimmingToolHIGG1.h:159
DerivationFramework::SkimmingToolHIGG1::m_minInvariantMass
double m_minInvariantMass
Definition: SkimmingToolHIGG1.h:109
xAOD::CaloCluster_v1
Description of a calorimeter cluster.
Definition: CaloCluster_v1.h:59
DerivationFramework::SkimmingToolHIGG1::CalculateInvariantMass
double CalculateInvariantMass(const LeadingPhotons_t &leadingPhotons) const
Definition: SkimmingToolHIGG1.cxx:388
DerivationFramework::SkimmingToolHIGG1::m_incHighPtElectronPhoton
bool m_incHighPtElectronPhoton
Definition: SkimmingToolHIGG1.h:85
python.utils.AtlRunQueryDQUtils.p
p
Definition: AtlRunQueryDQUtils.py:210
DerivationFramework::SkimmingToolHIGG1::m_incMergedElectron
bool m_incMergedElectron
Definition: SkimmingToolHIGG1.h:78
DerivationFramework::SkimmingToolHIGG1::m_mergedtriggers
std::vector< std::string > m_mergedtriggers
Definition: SkimmingToolHIGG1.h:99
AthCommonDataStore
Definition: AthCommonDataStore.h:52
ATH_MSG_ERROR
#define ATH_MSG_ERROR(x)
Definition: AthMsgStreamMacros.h:33
DerivationFramework::SkimmingToolHIGG1::SubcutKinematic
bool SubcutKinematic(const LeadingPhotons_t &leadingPhotons, double invariantMass) const
Definition: SkimmingToolHIGG1.cxx:334
DerivationFramework::SkimmingToolHIGG1::SubcutOnePhotonTwoElectrons
bool SubcutOnePhotonTwoElectrons() const
Definition: SkimmingToolHIGG1.cxx:632
lumiFormat.i
int i
Definition: lumiFormat.py:85
IDTPM::nSCTHits
float nSCTHits(const U &p)
Definition: TrackParametersHelper.h:393
DerivationFramework::SkimmingToolHIGG1::SubcutLArError
bool SubcutLArError(const xAOD::EventInfo &eventInfo) const
Definition: SkimmingToolHIGG1.cxx:217
beamspotman.n
n
Definition: beamspotman.py:731
ATH_MSG_DEBUG
#define ATH_MSG_DEBUG(x)
Definition: AthMsgStreamMacros.h:29
DerivationFramework::SkimmingToolHIGG1::m_n_tot
std::atomic< unsigned int > m_n_tot
Definition: SkimmingToolHIGG1.h:157
DerivationFramework::SkimmingToolHIGG1::m_reqQuality
bool m_reqQuality
Definition: SkimmingToolHIGG1.h:88
DerivationFramework::SkimmingToolHIGG1::m_maxInvariantMass
double m_maxInvariantMass
Definition: SkimmingToolHIGG1.h:110
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
DerivationFramework::SkimmingToolHIGG1::m_n_passQuality
std::atomic< unsigned int > m_n_passQuality
Definition: SkimmingToolHIGG1.h:171
DerivationFramework::SkimmingToolHIGG1::m_n_passSinglePhotonMergedElectronPreselect
std::atomic< unsigned int > m_n_passSinglePhotonMergedElectronPreselect
Definition: SkimmingToolHIGG1.h:167
plotIsoValidation.el
el
Definition: plotIsoValidation.py:197
DerivationFramework::SkimmingToolHIGG1::CorrectedEnergy
static double CorrectedEnergy(const xAOD::Photon *ph)
Definition: SkimmingToolHIGG1.cxx:422
DerivationFramework::SkimmingToolHIGG1::m_n_passSinglePhotonDoubleMuonPreselect
std::atomic< unsigned int > m_n_passSinglePhotonDoubleMuonPreselect
Definition: SkimmingToolHIGG1.h:165
ATH_CHECK
#define ATH_CHECK
Definition: AthCheckMacros.h:40
DerivationFramework::SkimmingToolHIGG1::LeadingPhotons_t
std::array< const xAOD::Photon *, 2 > LeadingPhotons_t
Leading and sub-leading photon (in that order)
Definition: SkimmingToolHIGG1.h:127
python.Dumpers.asinh
def asinh(x)
helper methods ---------------------------------------------------------—
Definition: Dumpers.py:89
DerivationFramework::SkimmingToolHIGG1::m_defaultTrigger
std::string m_defaultTrigger
Definition: SkimmingToolHIGG1.h:97
AthCommonDataStore< AthCommonMsg< AlgTool > >::m_detStore
StoreGateSvc_t m_detStore
Pointer to StoreGate (detector store by default)
Definition: AthCommonDataStore.h:393
SG::VarHandleKey::initialize
StatusCode initialize(bool used=true)
If this object is used as a property, then this should be called during the initialize phase.
Definition: AthToolSupport/AsgDataHandles/Root/VarHandleKey.cxx:103
DerivationFramework::SkimmingToolHIGG1::m_reqIsolation
bool m_reqIsolation
Definition: SkimmingToolHIGG1.h:89
DerivationFramework::SkimmingToolHIGG1::m_relativePtCuts
bool m_relativePtCuts
Definition: SkimmingToolHIGG1.h:105
DerivationFramework::SkimmingToolHIGG1::m_n_passDoubleElectronPreselect
std::atomic< unsigned int > m_n_passDoubleElectronPreselect
Definition: SkimmingToolHIGG1.h:163
AthAlgTool::AthAlgTool
AthAlgTool()
Default constructor:
DerivationFramework::SkimmingToolHIGG1::SubcutOnePhotonOneElectron
bool SubcutOnePhotonOneElectron() const
Definition: SkimmingToolHIGG1.cxx:467
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
DerivationFramework::SkimmingToolHIGG1::CorrectedEta
double CorrectedEta(const xAOD::Photon *ph) const
Definition: SkimmingToolHIGG1.cxx:431
DerivationFramework::SkimmingToolHIGG1::GetDiphotonVertex
double GetDiphotonVertex() const
Definition: SkimmingToolHIGG1.cxx:415
DerivationFramework::SkimmingToolHIGG1::m_n_passHighPtPhotonMergedElectronPreselect
std::atomic< unsigned int > m_n_passHighPtPhotonMergedElectronPreselect
Definition: SkimmingToolHIGG1.h:168
DerivationFramework::SkimmingToolHIGG1::m_reqGRL
bool m_reqGRL
Definition: SkimmingToolHIGG1.h:74
DerivationFramework::SkimmingToolHIGG1::SubcutIsolation
bool SubcutIsolation() const
Definition: SkimmingToolHIGG1.cxx:367
merge_scale_histograms.doc
string doc
Definition: merge_scale_histograms.py:9
name
std::string name
Definition: Control/AthContainers/Root/debug.cxx:228
DerivationFramework::SkimmingToolHIGG1::m_goodRunList
std::string m_goodRunList
Definition: SkimmingToolHIGG1.h:95
DerivationFramework::SkimmingToolHIGG1::ElectronPreselect
bool ElectronPreselect(const xAOD::Electron *el) const
Definition: SkimmingToolHIGG1.cxx:766
ParticleGun_SamplingFraction.radius
radius
Definition: ParticleGun_SamplingFraction.py:96
DerivationFramework::SkimmingToolHIGG1::m_reqInvariantMass
bool m_reqInvariantMass
Definition: SkimmingToolHIGG1.h:90
DerivationFramework::SkimmingToolHIGG1::m_trigDecisionTool
ToolHandle< Trig::TrigDecisionTool > m_trigDecisionTool
Definition: SkimmingToolHIGG1.h:69
DerivationFramework::SkimmingToolHIGG1::m_leadingPhotonPt
double m_leadingPhotonPt
Definition: SkimmingToolHIGG1.h:106
DerivationFramework::SkimmingToolHIGG1::m_minMuonPt
double m_minMuonPt
Definition: SkimmingToolHIGG1.h:114
a
TList * a
Definition: liststreamerinfos.cxx:10
DerivationFramework::SkimmingToolHIGG1::SubcutOnePhotonMergedElectrons
bool SubcutOnePhotonMergedElectrons(const xAOD::EventInfo &eventInfo) const
Definition: SkimmingToolHIGG1.cxx:669
h
xAOD::Photon_v1
Definition: Photon_v1.h:37
DerivationFramework::SkimmingToolHIGG1::m_n_passInvariantMass
std::atomic< unsigned int > m_n_passInvariantMass
Definition: SkimmingToolHIGG1.h:173
ATH_MSG_WARNING
#define ATH_MSG_WARNING(x)
Definition: AthMsgStreamMacros.h:32
xAOD::numberOfSCTDeadSensors
@ numberOfSCTDeadSensors
number of dead SCT sensors crossed [unit8_t].
Definition: TrackingPrimitives.h:273
DerivationFramework::SkimmingToolHIGG1::SubcutTwoElectrons
bool SubcutTwoElectrons() const
Definition: SkimmingToolHIGG1.cxx:543
DerivationFramework::SkimmingToolHIGG1::ReturnRZ_1stSampling_cscopt2
static double ReturnRZ_1stSampling_cscopt2(double eta1)
Definition: SkimmingToolHIGG1.cxx:449
Pythia8_RapidityOrderMPI.val
val
Definition: Pythia8_RapidityOrderMPI.py:14
DerivationFramework::SkimmingToolHIGG1::m_minPhotonPt
double m_minPhotonPt
Definition: SkimmingToolHIGG1.h:101
xAOD::EventInfo_v1::errorState
EventFlagErrorState errorState(EventFlagSubDet subDet) const
Get the error state for a particular sub-detector.
Definition: EventInfo_v1.cxx:817
SG::VarHandleBase::vhKey
SG::VarHandleKey & vhKey()
Return a non-const reference to the HandleKey.
Definition: StoreGate/src/VarHandleBase.cxx:623
DerivationFramework::SkimmingToolHIGG1::m_n_passSingleMuonPreselect
std::atomic< unsigned int > m_n_passSingleMuonPreselect
Definition: SkimmingToolHIGG1.h:164
xAOD::numberOfSCTHits
@ numberOfSCTHits
number of hits in SCT [unit8_t].
Definition: TrackingPrimitives.h:268
DerivationFramework::SkimmingToolHIGG1::m_incDoubleElectron
bool m_incDoubleElectron
Definition: SkimmingToolHIGG1.h:80
python.Bindings.keys
keys
Definition: Control/AthenaPython/python/Bindings.py:798
xAOD::numberOfPixelDeadSensors
@ numberOfPixelDeadSensors
number of dead pixel sensors crossed [unit8_t].
Definition: TrackingPrimitives.h:266
DerivationFramework::SkimmingToolHIGG1::SubcutOnePhotonOneMuon
bool SubcutOnePhotonOneMuon() const
Definition: SkimmingToolHIGG1.cxx:565
DerivationFramework::SkimmingToolHIGG1::SubcutQuality
bool SubcutQuality(const LeadingPhotons_t &leadingPhotons) const
Definition: SkimmingToolHIGG1.cxx:350
DerivationFramework::SkimmingToolHIGG1::m_removeCrack
bool m_removeCrack
Definition: SkimmingToolHIGG1.h:102
DerivationFramework::SkimmingToolHIGG1::m_reqKinematic
bool m_reqKinematic
Definition: SkimmingToolHIGG1.h:87
DerivationFramework::SkimmingToolHIGG1::m_n_passSingleElectronPreselect
std::atomic< unsigned int > m_n_passSingleElectronPreselect
Definition: SkimmingToolHIGG1.h:162
CaloNoise_fillDB.mu
mu
Definition: CaloNoise_fillDB.py:53
DerivationFramework::SkimmingToolHIGG1::m_incDoubleElectronPhoton
bool m_incDoubleElectronPhoton
Definition: SkimmingToolHIGG1.h:83
AthCommonDataStore::declareGaudiProperty
Gaudi::Details::PropertyBase & declareGaudiProperty(Gaudi::Property< T > &hndl, const SG::VarHandleKeyType &)
specialization for handling Gaudi::Property<SG::VarHandleKey>
Definition: AthCommonDataStore.h:156
InDetDD::electrons
@ electrons
Definition: InDetDD_Defs.h:17
xAOD::Egamma_v1::passSelection
bool passSelection(bool &value, const std::string &menu) const
Check if the egamma object pass a selection menu (using the name) If the menu decision is stored in t...
DerivationFramework::SkimmingToolHIGG1::m_n_passTrigger
std::atomic< unsigned int > m_n_passTrigger
Definition: SkimmingToolHIGG1.h:160
fitman.k
k
Definition: fitman.py:528
xAOD::EventInfo_v1::eventType
bool eventType(EventType type) const
Check for one particular bitmask value.
xAOD::Egamma_v1::isGoodOQ
bool isGoodOQ(uint32_t mask) const
Check object quality. Return True is it is Good Object Quality.
Definition: Egamma_v1.cxx:236