ATLAS Offline Software
Loading...
Searching...
No Matches
FCS_StepInfoSDTool.h
Go to the documentation of this file.
1/*
2 Copyright (C) 2002-2022 CERN for the benefit of the ATLAS collaboration
3*/
4
5#ifndef ISF_FASTCALOSIMSD_FCS_STEPINFOSDTOOL_H
6#define ISF_FASTCALOSIMSD_FCS_STEPINFOSDTOOL_H
7
12
13// System includes
14#include <string>
15#include <vector>
16#include <thread>
17
18#include "tbb/concurrent_unordered_map.h"
19
20// G4Atlas includes
22
23// Local includes
24#include "FCS_StepInfoSD.h"
25
26// Forward declarations
28class LArEM_ID;
29class LArFCAL_ID;
30class LArHEC_ID;
31class TileID;
32class ITileCalculator;
33
34namespace FCS_Param {
35
44
45 public:
47 FCS_StepInfoSDTool(const std::string& type, const std::string& name,
48 const IInterface* parent);
49
51 StatusCode initialize() override final;
52
54 StatusCode Gather(HitCollectionMap&) override final;
55
56 private:
58 G4VSensitiveDetector* makeSD() const override final;
59
61 virtual StatusCode initializeCalculators();
62
65 const std::string& name, ILArCalculatorSvc* calc,
66 const std::vector<std::string>& volumes) const;
67
70 const std::string& name, ITileCalculator* calc,
71 const std::vector<std::string>& volumes) const;
72
74 std::string m_hitCollName;
75
76 //SD thread map
77 mutable tbb::concurrent_unordered_map<std::thread::id, G4VSensitiveDetector*, std::hash<std::thread::id>> m_sdThreadMap ATLAS_THREAD_SAFE;
78
81 std::vector<std::string> m_stacVolumes;
82 std::vector<std::string> m_presBarVolumes;
83 std::vector<std::string> m_posIWVolumes;
84 std::vector<std::string> m_negIWVolumes;
85 std::vector<std::string> m_posOWVolumes;
86 std::vector<std::string> m_negOWVolumes;
87 std::vector<std::string> m_presECVolumes;
88 std::vector<std::string> m_pBOBVolumes;
89 std::vector<std::string> m_nBOBVolumes;
90 std::vector<std::string> m_fcal1Volumes;
91 std::vector<std::string> m_fcal2Volumes;
92 std::vector<std::string> m_fcal3Volumes;
93 std::vector<std::string> m_sliceVolumes;
94 std::vector<std::string> m_tileVolumes;
96
98 m_bpsmodcalc; // LArG4::BarrelPresampler::CalibrationCalculator
100 m_embcalc; // LArG4::Barrel::CalibrationCalculator
101 ServiceHandle<ILArCalculatorSvc> m_emepiwcalc; // LArG4::EC::CalibrationCalculator(LArWheelCalculator::InnerAbsorberWheel,
102 // 1)
103 ServiceHandle<ILArCalculatorSvc> m_emeniwcalc; // LArG4::EC::CalibrationCalculator(LArWheelCalculator::InnerAbsorberWheel,
104 // -1)
105 ServiceHandle<ILArCalculatorSvc> m_emepowcalc; // LArG4::EC::CalibrationCalculator(LArWheelCalculator::OuterAbsorberWheel,
106 // 1)
107 ServiceHandle<ILArCalculatorSvc> m_emenowcalc; // LArG4::EC::CalibrationCalculator(LArWheelCalculator::OuterAbsorberWheel,
108 // -1)
110 m_emepscalc; // LArG4::EC::PresamplerCalibrationCalculator
111 ServiceHandle<ILArCalculatorSvc> m_emepobarcalc; // LArG4::EC::CalibrationCalculator(LArWheelCalculator::BackOuterBarretteWheelCalib,
112 // 1)
113 ServiceHandle<ILArCalculatorSvc> m_emenobarcalc; // LArG4::EC::CalibrationCalculator(LArWheelCalculator::BackOuterBarretteWheelCalib,
114 // 1)
116 m_heccalc; // LArG4::HEC::LArHECCalibrationWheelCalculator(LArG4::HEC::kWheelActive)
121
130
131}; // class FCS_StepInfoSDTool
132
133} // namespace FCS_Param
134
135#endif
std::vector< std::string > m_tileVolumes
std::string m_hitCollName
Hit collection name.
FCS_StepInfoSD * makeOneTileSD(const std::string &name, ITileCalculator *calc, const std::vector< std::string > &volumes) const
Helper method to create one SD.
tbb::concurrent_unordered_map< std::thread::id, G4VSensitiveDetector *, std::hash< std::thread::id > > m_sdThreadMap ATLAS_THREAD_SAFE
ServiceHandle< ILArCalculatorSvc > m_emepobarcalc
std::vector< std::string > m_fcal3Volumes
std::vector< std::string > m_posOWVolumes
ServiceHandle< ILArCalculatorSvc > m_fcal2calc
std::vector< std::string > m_presECVolumes
std::vector< std::string > m_nBOBVolumes
std::vector< std::string > m_stacVolumes
G4VSensitiveDetector * makeSD() const override final
Create the SD wrapper for current worker thread.
ServiceHandle< ILArCalculatorSvc > m_bpsmodcalc
ServiceHandle< ILArCalculatorSvc > m_emepowcalc
ServiceHandle< ILArCalculatorSvc > m_emepscalc
ServiceHandle< ILArCalculatorSvc > m_fcal3calc
FCS_StepInfoSD * makeOneLArSD(const std::string &name, ILArCalculatorSvc *calc, const std::vector< std::string > &volumes) const
Helper method to create one SD.
std::vector< std::string > m_pBOBVolumes
StatusCode Gather(HitCollectionMap &) override final
Calls down to all the SDs to pack their hits into one collection.
ServiceHandle< ILArCalculatorSvc > m_emenowcalc
ServiceHandle< ILArCalculatorSvc > m_emepiwcalc
FCS_StepInfoSDTool(const std::string &type, const std::string &name, const IInterface *parent)
Constructor.
std::vector< std::string > m_sliceVolumes
ServiceHandle< ITileCalculator > m_tileCalculator
std::vector< std::string > m_fcal1Volumes
ServiceHandle< ILArCalculatorSvc > m_emeniwcalc
virtual StatusCode initializeCalculators()
Initialize Calculator Services.
std::vector< std::string > m_fcal2Volumes
std::vector< std::string > m_presBarVolumes
std::vector< std::string > m_negIWVolumes
std::vector< std::string > m_negOWVolumes
ServiceHandle< ILArCalculatorSvc > m_fcal1calc
ServiceHandle< ILArCalculatorSvc > m_embcalc
StatusCode initialize() override final
Initialize the tool.
ServiceHandle< ILArCalculatorSvc > m_emenobarcalc
std::vector< std::string > m_posIWVolumes
ServiceHandle< ILArCalculatorSvc > m_heccalc
Common sensitive detector class for LAr systems.
Small wrapper around hit collection map to facilitate accessing the hit collection.
Helper class for LArEM offline identifiers.
Definition LArEM_ID.h:111
Helper class for LArFCAL offline identifiers.
Definition LArFCAL_ID.h:49
Helper class for LArHEC offline identifiers.
Definition LArHEC_ID.h:76
SensitiveDetectorBase(const std::string &type, const std::string &name, const IInterface *parent)
Standard constructor.
Helper class for TileCal offline identifiers.
Definition TileID.h:67