ATLAS Offline Software
ZeroLifetimePositioner.h
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration
3 */
4 
5 #ifndef BEAMEFFECTS_ZEROLIFETIMEPOSITIONER_H
6 #define BEAMEFFECTS_ZEROLIFETIMEPOSITIONER_H 1
7 
8 // FrameWork includes
9 #include "GaudiKernel/ToolHandle.h"
12 #include <vector>
13 
14 namespace Simulation {
15 
21  class ZeroLifetimePositioner : public extends<AthService, Simulation::IZeroLifetimePatcher> {
22 
23  public:
25  ZeroLifetimePositioner( const std::string& name, ISvcLocator* pSvcLocator );
26 
28  StatusCode initialize() override final;
29  StatusCode finalize() override final;
30 
32  virtual StatusCode applyWorkaround(HepMC::GenEvent& ge) const override final;
33 
35  virtual StatusCode removeWorkaround(HepMC::GenEvent& ge) const override final;
36 
37  private:
38  StatusCode manipulate(HepMC::GenEvent& ge, bool applyPatch, bool removePatch) const;
39  Gaudi::Property<bool> m_applyPatch{this, "ApplyPatch", false};
40  Gaudi::Property<bool> m_removePatch{this, "RemovePatch", false};
41  Gaudi::Property<std::vector<int>> m_pdgCodesToCheck{ this, "PDGCodesToCheck", {421,511,531} }; // Apply fix to neutral mesons with oscillations: B0, B0s, D0
42  };
43 
44 }
45 
46 #endif //> !BEAMEFFECTS_ZEROLIFETIMEPOSITIONER_H
Simulation::ZeroLifetimePositioner
Definition: ZeroLifetimePositioner.h:21
Simulation::ZeroLifetimePositioner::initialize
StatusCode initialize() override final
Athena algtool's Hooks.
Definition: ZeroLifetimePositioner.cxx:27
Simulation::ZeroLifetimePositioner::ZeroLifetimePositioner
ZeroLifetimePositioner(const std::string &name, ISvcLocator *pSvcLocator)
Constructor with parameters.
Definition: ZeroLifetimePositioner.cxx:19
EL::StatusCode
::StatusCode StatusCode
StatusCode definition for legacy code.
Definition: PhysicsAnalysis/D3PDTools/EventLoop/EventLoop/StatusCode.h:22
name
std::string name
Definition: Control/AthContainers/Root/debug.cxx:195
IZeroLifetimePatcher.h
Simulation::ZeroLifetimePositioner::removeWorkaround
virtual StatusCode removeWorkaround(HepMC::GenEvent &ge) const override final
Removes the workaround for zero-lifetime particles from the GenEvent.
Definition: ZeroLifetimePositioner.cxx:54
Simulation::ZeroLifetimePositioner::m_applyPatch
Gaudi::Property< bool > m_applyPatch
Definition: ZeroLifetimePositioner.h:39
Simulation::ZeroLifetimePositioner::finalize
StatusCode finalize() override final
Athena algtool's Hooks.
Definition: ZeroLifetimePositioner.cxx:40
Simulation
Definition: BeamEffectsAlg.cxx:21
Simulation::ZeroLifetimePositioner::m_removePatch
Gaudi::Property< bool > m_removePatch
Definition: ZeroLifetimePositioner.h:40
Simulation::ZeroLifetimePositioner::manipulate
StatusCode manipulate(HepMC::GenEvent &ge, bool applyPatch, bool removePatch) const
modifies (displaces) the given GenEvent
Definition: ZeroLifetimePositioner.cxx:62
AthService.h
Simulation::ZeroLifetimePositioner::applyWorkaround
virtual StatusCode applyWorkaround(HepMC::GenEvent &ge) const override final
Applies the workaround for zero-lifetime particles to the GenEvent.
Definition: ZeroLifetimePositioner.cxx:47
Simulation::ZeroLifetimePositioner::m_pdgCodesToCheck
Gaudi::Property< std::vector< int > > m_pdgCodesToCheck
Definition: ZeroLifetimePositioner.h:41