Loading [MathJax]/extensions/tex2jax.js
ATLAS Offline Software
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Modules Pages
PadTriggerLogicOfflineTool.h
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2025 CERN for the benefit of the ATLAS collaboration
3 */
4 
5 #ifndef NSWL1_PADTRIGGERLOGICOFFLINETOOL_H
6 #define NSWL1_PADTRIGGERLOGICOFFLINETOOL_H
7 
8 #include "CLHEP/Random/RandFlat.h"
9 #include "CLHEP/Random/RandGauss.h"
11 #include "GaudiKernel/ITHistSvc.h"
12 #include "GaudiKernel/ServiceHandle.h"
31 
32 #include <boost/geometry.hpp>
33 #include <boost/geometry/geometries/point_xy.hpp>
34 #include <boost/geometry/geometries/polygon.hpp>
35 #include "Math/Vector3D.h"
36 #include <functional>
37 #include <algorithm>
38 #include <map>
39 #include <utility>
40 #include <cmath>
41 
42 namespace MuonGM {
43  class MuonDetectorManager;
44 }
45 
46 namespace NSWL1 {
47  /*
48  * @short Simulation of the pad trigger
49  *
50  * DG--todo This class implements the Pad TDS offline simulation. It loops over the input digits,
51  * DG--todo determines the BC tag and applies the additional processing of the VMM chip which is
52  * DG--todo not yet implemented in the digitization. The loop is executed over the full digit pool
53  * DG--todo once upon the first data request for an event and the PAD data are internally cached
54  * DG--todo and collected per trigger sectors. The run ID and event ID are cached; the processing
55  * DG--todo status is also cached to be propagated via a StatusCode at each data request.
56  * DG--todo
57  * DG--todo Supported processing:
58  * DG--todo Time delay simulation by subtracting the time_of_flight and the electronic random jitter;
59  * DG--todo VMM Dead Time simulation;
60  * DG--todo
61  * DG--todo It returns a vector of PadData to input the PadTrigger simulation.
62  * Oct 2015
63  *
64  * Major updates for release 22 processing: francesco.giuseppe.gravili@cern.ch
65  */
67  virtual public IPadTriggerLogicTool, public AthAlgTool {
68  public:
69  PadTriggerLogicOfflineTool(const std::string& type,
70  const std::string& name,
71  const IInterface* parent);
72  virtual ~PadTriggerLogicOfflineTool()=default;
73  virtual StatusCode initialize () override;
75 
76  virtual StatusCode compute_pad_triggers(const std::vector<std::shared_ptr<PadData>>& pads, std::vector<std::unique_ptr<PadTrigger>> &triggers) const override;
77 
78  int ROI2BandId(const float EtaTrigAtCenter, const int SectorType) const;//Recipe From Y.R (based on eta slicing of triggering bands see the implementation)
79 
80  static std::vector<std::unique_ptr<PadTrigger>> build4of4SingleWedgeTriggers(const std::vector<std::shared_ptr<PadData>> &pads);
81 
84 
85  private:
87  const std::vector<float> m_etaBandsLargeSector;
88  const std::vector<float> m_etaBandsSmallSector;
89 
90  mutable std::map<IdentifierHash, std::pair<double,double> > m_phiTable ATLAS_THREAD_SAFE{};
91  mutable std::pair<double,double> m_Zratio ATLAS_THREAD_SAFE{};
92  mutable std::atomic<bool> m_isInitialized ATLAS_THREAD_SAFE{false};
93  mutable std::mutex m_mutex ATLAS_THREAD_SAFE{};
94 
95  SG::ReadCondHandleKey<MuonGM::MuonDetectorManager> m_detManagerKey{this, "MuonManagerKey", "MuonDetectorManager"};
96 
97  Gaudi::Property<float> m_PadEfficiency {this, "PadEfficiency", 1.0, "Pad trigger efficiency"};
98  Gaudi::Property<int> m_phiIdBits {this, "PhiIdBits", 6, "Number of bit to compute Phi-Id of pad triggers"};
99  Gaudi::Property<bool> m_useSimple4of4 {this, "UseSimple4of4", false, "Use simplified logic requiring 4 hits on 4 gas gaps"};
100 
102  void fillPhiTable() const;
104  };
105 } // namespace NSWL1
106 #endif
NSWL1::PadTriggerLogicOfflineTool::m_tdrLogic
L1TdrStgcTriggerLogic m_tdrLogic
Definition: PadTriggerLogicOfflineTool.h:103
NSWL1::PadTriggerLogicOfflineTool::~PadTriggerLogicOfflineTool
virtual ~PadTriggerLogicOfflineTool()=default
TrapezoidBounds.h
MuonGM
Ensure that the Athena extensions are properly loaded.
Definition: GeoMuonHits.h:27
NSWL1::PadTriggerLogicOfflineTool::ROI2BandId
int ROI2BandId(const float EtaTrigAtCenter, const int SectorType) const
Definition: PadTriggerLogicOfflineTool.cxx:176
TriggerTypes.h
NSWL1::PadTriggerLogicOfflineTool
Definition: PadTriggerLogicOfflineTool.h:67
tdr_compat_enum.h
SectorTriggerCandidate.h
sTgcReadoutElement.h
PadData.h
BeamSpot::mutex
std::mutex mutex
Definition: InDetBeamSpotVertex.cxx:18
NSWL1::PadTriggerLogicOfflineTool::compute_pad_triggers
virtual StatusCode compute_pad_triggers(const std::vector< std::shared_ptr< PadData >> &pads, std::vector< std::unique_ptr< PadTrigger >> &triggers) const override
Log a message using the Athena controlled logging system.
Definition: PadTriggerLogicOfflineTool.cxx:105
NSWL1::PadTriggerLogicOfflineTool::PadTriggerLogicOfflineTool
PadTriggerLogicOfflineTool(const std::string &type, const std::string &name, const IInterface *parent)
Definition: PadTriggerLogicOfflineTool.cxx:13
read_hist_ntuple.t
t
Definition: read_hist_ntuple.py:5
python.TrigTLAMonitorAlgorithm.triggers
triggers
Definition: TrigTLAMonitorAlgorithm.py:196
NSWL1::IPadTriggerLogicTool
interface for the PadTriggerLogic tools
Definition: IPadTriggerLogicTool.h:32
python.CaloAddPedShiftConfig.type
type
Definition: CaloAddPedShiftConfig.py:42
IPadTriggerLogicTool.h
NSWL1::PadTriggerLogicOfflineTool::ATLAS_THREAD_SAFE
std::map< IdentifierHash, std::pair< double, double > > m_phiTable ATLAS_THREAD_SAFE
Definition: PadTriggerLogicOfflineTool.h:90
NSWL1::PadOfflineData
class modeling the pad hit fragment for the NSW L1 offline simulation
Definition: PadOfflineData.h:36
EL::StatusCode
::StatusCode StatusCode
StatusCode definition for legacy code.
Definition: PhysicsAnalysis/D3PDTools/EventLoop/EventLoop/StatusCode.h:22
NSWL1::PadTriggerLogicOfflineTool::fillPhiTable
void fillPhiTable() const
Definition: PadTriggerLogicOfflineTool.cxx:409
AthAlgTool.h
sTGCTriggerBandsInEta.h
test_pyathena.parent
parent
Definition: test_pyathena.py:15
NSWL1::PadTriggerLogicOfflineTool::m_PadEfficiency
Gaudi::Property< float > m_PadEfficiency
Definition: PadTriggerLogicOfflineTool.h:97
NSWL1::PadTriggerLogicOfflineTool::initialize
virtual StatusCode initialize() override
Definition: PadTriggerLogicOfflineTool.cxx:22
NSWL1::PadTriggerLogicOfflineTool::convert
PadTrigger convert(const SectorTriggerCandidate &t) const
from TDR-style SectorTriggerCandidate to PadTrigger
Definition: PadTriggerLogicOfflineTool.cxx:201
NSWL1::PadTriggerLogicOfflineTool::build4of4SingleWedgeTriggers
static std::vector< std::unique_ptr< PadTrigger > > build4of4SingleWedgeTriggers(const std::vector< std::shared_ptr< PadData >> &pads)
Definition: PadTriggerLogicOfflineTool.cxx:67
name
std::string name
Definition: Control/AthContainers/Root/debug.cxx:228
PadOfflineData.h
MuonDetectorManager.h
NSWL1::PadTriggerLogicOfflineTool::m_etaBandsLargeSector
const std::vector< float > m_etaBandsLargeSector
get the output tree from the athena histogram service
Definition: PadTriggerLogicOfflineTool.h:87
NSWL1::SectorTriggerCandidate
Definition: SectorTriggerCandidate.h:26
NSWL1::PadTriggerLogicOfflineTool::m_etaBandsSmallSector
const std::vector< float > m_etaBandsSmallSector
Definition: PadTriggerLogicOfflineTool.h:88
SG::ReadCondHandleKey< MuonGM::MuonDetectorManager >
SectorType
SectorType
Definition: sTGCenumeration.h:39
NSWL1::PadTrigger
Holder of the pad trigger information.
Definition: PadTrigger.h:26
PlaneSurface.h
NSWL1::PadTriggerLogicOfflineTool::fillGeometricInformation
void fillGeometricInformation(PadOfflineData &) const
Definition: PadTriggerLogicOfflineTool.cxx:32
NSWL1::PadTriggerLogicOfflineTool::m_phiIdBits
Gaudi::Property< int > m_phiIdBits
Definition: PadTriggerLogicOfflineTool.h:98
sTgcDigit.h
sTgcDigitContainer.h
PadTrigger.h
AthAlgTool
Definition: AthAlgTool.h:26
MuonSimDataCollection.h
NSWL1::PadTriggerLogicOfflineTool::m_useSimple4of4
Gaudi::Property< bool > m_useSimple4of4
Definition: PadTriggerLogicOfflineTool.h:99
NSWL1::L1TdrStgcTriggerLogic
Initial version of the stgc pad trigger logic.
Definition: L1TdrStgcTriggerLogic.h:47
SingleWedgePadTrigger.h
NSWL1
A trigger trigger candidate for a stgc sector.
Definition: NSWL1Simulation.cxx:7
MuonSimData.h
L1TdrStgcTriggerLogic.h
NSWL1::PadTriggerLogicOfflineTool::m_detManagerKey
SG::ReadCondHandleKey< MuonGM::MuonDetectorManager > m_detManagerKey
Definition: PadTriggerLogicOfflineTool.h:95