ATLAS Offline Software
TRTDigitizationTool.h
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration
3 */
4 
5 #ifndef TRT_DIGITIZATION_TRTDIGITIZATIONTOOL_H
6 #define TRT_DIGITIZATION_TRTDIGITIZATIONTOOL_H
7 
13 #include "xAODEventInfo/EventInfo.h" /*SubEvent*/
17 #include "GaudiKernel/ServiceHandle.h"
18 #include "GaudiKernel/ToolHandle.h"
20 #include "ITRT_SimDriftTimeTool.h"
24 
27 #include "TRTDigit.h"
28 
29 // For magneticfield
31 
36 #include "StoreGate/WriteHandle.h"
37 #include <vector>
38 #include <set>
39 #include <utility> /* pair */
40 
41 class TRT_ID;
44 class TRTDigCondBase;
45 class TRTNoise;
46 
47 namespace CLHEP{
48  class HepRandomEngine;
49 }
50 
51 namespace HepPDT{
52  class ParticleDataTable;
53 }
54 
56 class TRTUncompressedHit;
58 //class TRTUncompressedHitCollection;
59 namespace InDetDD {
60  class TRT_DetectorManager;
61 }
62 
63 class TRTDigSettings;
64 
65 class TRTDigitizationTool : virtual public IPileUpTool, public PileUpToolBase {
66 public:
67  TRTDigitizationTool( const std::string& type, const std::string& name, const IInterface* parent );
68 
71 
73  virtual StatusCode initialize() override final;
74 
76  virtual StatusCode finalize() override final;
77 
79  virtual StatusCode mergeEvent(const EventContext& ctx) override final;
80 
82  virtual StatusCode processBunchXing( int bunchXing,
83  SubEventIterator bSubEvents,
84  SubEventIterator eSubEvents ) override final;
87  // virtual bool toProcess(int bunchXing) const;
88 
89  virtual StatusCode prepareEvent( const EventContext& ctx, const unsigned int nInputEvents ) override final;
90 
98  virtual StatusCode processAllSubEvents(const EventContext& ctx) override final;
99 
100 private:
101  CLHEP::HepRandomEngine* getRandomEngine(const std::string& streamName, const EventContext& ctx) const;
102  CLHEP::HepRandomEngine* getRandomEngine(const std::string& streamName, unsigned long int randomSeedOffset, const EventContext& ctx) const;
103 
104  Identifier getIdentifier( int hitID,
105  IdentifierHash& hashId,
106  Identifier& layerID,
107  bool& statusok ) const;
108 
109  StatusCode ConditionsDependingInitialization (const EventContext& ctx);
110 
111  StatusCode lateInitialize(const EventContext& ctx);
112  StatusCode processStraws(const EventContext& ctx,
114  std::set<int>& sim_hitids,
115  std::set<Identifier>& simhitsIdentifiers,
116  CLHEP::HepRandomEngine *rndmEngine,
117  CLHEP::HepRandomEngine *strawRndmEngine,
118  CLHEP::HepRandomEngine *elecProcRndmEngine,
119  CLHEP::HepRandomEngine *elecNoiseRndmEngine,
120  CLHEP::HepRandomEngine *paiRndmEngine);
122 
123  static double getCosmicEventPhase(CLHEP::HepRandomEngine *rndmEngine);
124 
126  ToolHandle<ITRT_PAITool> m_TRTpaiToolXe{this, "PAI_Tool_Xe", "TRT_PAI_Process_Xe", "The PAI model for ionisation in the TRT Xe gas"};
127  ToolHandle<ITRT_PAITool> m_TRTpaiToolAr{this, "PAI_Tool_Ar", "TRT_PAI_Process_Ar", "The PAI model for ionisation in the TRT Ar gas"};
128  ToolHandle<ITRT_PAITool> m_TRTpaiToolKr{this, "PAI_Tool_Kr", "TRT_PAI_Process_Kr", "The PAI model for ionisation in the TRT Kr gas"};
129  ToolHandle<ITRT_SimDriftTimeTool> m_TRTsimdrifttimetool{this, "SimDriftTimeTool", "TRT_SimDriftTimeTool", "Drift time versus distance (r-t-relation) for TRT straws"};
130  ToolHandle<ITRT_StrawStatusSummaryTool> m_sumTool{this, "InDetTRTStrawStatusSummaryTool", "TRT_StrawStatusSummaryTool", ""};
131  ToolHandle<ITRT_CalDbTool> m_calDbTool{this, "InDetTRTCalDbTool", "TRT_CalDbTool", ""};
132  ServiceHandle<PileUpMergeSvc> m_mergeSvc{this, "MergeSvc", "PileUpMergeSvc", "Merge service"};
133  ServiceHandle<IAthRNGSvc> m_rndmSvc{this, "RndmSvc", "AthRNGSvc", ""};
134  ServiceHandle<ITRT_StrawNeighbourSvc> m_TRTStrawNeighbourSvc{this, "TRT_StrawNeighbourSvc", "TRT_StrawNeighbourSvc", ""};
135  // Read handle for conditions object to get the field cache
136  SG::ReadCondHandleKey<AtlasFieldCacheCondObj> m_fieldCacheCondObjInputKey {this, "AtlasFieldCacheCondObj", "fieldCondObj",
137  "Name of the Magnetic Field conditions object key"};
138  Gaudi::Property<bool> m_onlyUseContainerName{this, "OnlyUseContainerName", true, "Don't use the ReadHandleKey directly. Just extract the container name from it."};
139  SG::ReadHandleKey<TRTUncompressedHitCollection> m_hitsContainerKey{this, "DataObjectName", "TRTUncompressedHits", "Data Object Name"};
140  std::string m_dataObjectName{""};
141  SG::WriteHandleKey<TRT_RDO_Container> m_outputRDOCollName{this,"OutputObjectName","TRT_RDOs","WHK Output Object name"};
142  SG::WriteHandleKey<InDetSimDataCollection> m_outputSDOCollName{this,"OutputSDOName","TRT_SDO_Map","WHK Output SDO container name"};
144 
145  Gaudi::Property<bool> m_printOverrideableSettings{this, "PrintOverrideableSettings", false, "Print overrideable settings"};
146  Gaudi::Property<bool> m_printUsedDigSettings{this, "PrintDigSettings", true, "Print ditigization settings"};
147  Gaudi::Property<int> m_HardScatterSplittingMode{this, "HardScatterSplittingMode", 0, ""};
148  Gaudi::Property<int> m_UseGasMix{this, "UseGasMix", 0, ""};
149  Gaudi::Property<unsigned long int> m_randomSeedOffset{this, "RandomSeedOffset", 678910, ""};
150 
152 
153  std::vector<std::pair<unsigned int, int> > m_seen;
154  std::vector<TRTDigit> m_vDigits;
159  //unsigned int m_timer_eventcount;
161  const TRT_ID* m_trt_id{};
162  std::vector<TRTUncompressedHitCollection*> m_trtHitCollList;
165  double m_minCrossingTimeSDO{0.0};
166  double m_maxCrossingTimeSDO{0.0};
167  double m_minpileuptruthEkin{0.0};
168  // const ComTime* m_ComTime{};
169  double m_cosmicEventPhase{0.0}; // local replacement for the comTime service
170  const HepPDT::ParticleDataTable* m_particleTable{};
172  bool m_first_event{true};
173 
175 
176 };
177 
178 #endif
ReadHandleKey.h
Property holding a SG store/key/clid from which a ReadHandle is made.
TRTDigitizationTool::ConditionsDependingInitialization
StatusCode ConditionsDependingInitialization(const EventContext &ctx)
Definition: TRTDigitizationTool.cxx:872
TRT_RDO_Container.h
TRTDigitizationTool::m_rndmSvc
ServiceHandle< IAthRNGSvc > m_rndmSvc
Random number service.
Definition: TRTDigitizationTool.h:133
AtlasFieldCacheCondObj.h
TRTDigitizationTool::m_calDbTool
ToolHandle< ITRT_CalDbTool > m_calDbTool
Definition: TRTDigitizationTool.h:131
TRTDigitizationTool::m_vDigits
std::vector< TRTDigit > m_vDigits
Vector of all digits.
Definition: TRTDigitizationTool.h:154
TRTDigitizationTool::m_outputRDOCollName
SG::WriteHandleKey< TRT_RDO_Container > m_outputRDOCollName
name of the output RDOs.
Definition: TRTDigitizationTool.h:141
TRTDigitizationTool::processBunchXing
virtual StatusCode processBunchXing(int bunchXing, SubEventIterator bSubEvents, SubEventIterator eSubEvents) override final
called for each active bunch-crossing to process current SubEvents bunchXing is in ns
Definition: TRTDigitizationTool.cxx:201
TRTUncompressedHit
Definition: TRTUncompressedHit.h:11
TRTDigitizationTool::~TRTDigitizationTool
~TRTDigitizationTool()
Destructor.
Definition: TRTDigitizationTool.cxx:80
TRTElectronicsProcessing
Electronics Processing.
Definition: TRTElectronicsProcessing.h:23
TRTDigitizationTool::processStraws
StatusCode processStraws(const EventContext &ctx, TimedHitCollection< TRTUncompressedHit > &thpctrt, std::set< int > &sim_hitids, std::set< Identifier > &simhitsIdentifiers, CLHEP::HepRandomEngine *rndmEngine, CLHEP::HepRandomEngine *strawRndmEngine, CLHEP::HepRandomEngine *elecProcRndmEngine, CLHEP::HepRandomEngine *elecNoiseRndmEngine, CLHEP::HepRandomEngine *paiRndmEngine)
Definition: TRTDigitizationTool.cxx:343
TRTDigitizationTool::m_trtrdo_container
SG::WriteHandle< TRT_RDO_Container > m_trtrdo_container
Definition: TRTDigitizationTool.h:143
TRTDigitizationTool::m_seen
std::vector< std::pair< unsigned int, int > > m_seen
Definition: TRTDigitizationTool.h:153
TRTDigitizationTool::m_pNoise
TRTNoise * m_pNoise
Definition: TRTDigitizationTool.h:158
SG::ReadHandleKey
Property holding a SG store/key/clid from which a ReadHandle is made.
Definition: StoreGate/StoreGate/ReadHandleKey.h:39
TRTDigitizationTool::m_settings
TRTDigSettings * m_settings
Definition: TRTDigitizationTool.h:151
TRTDigitizationTool::m_fieldCacheCondObjInputKey
SG::ReadCondHandleKey< AtlasFieldCacheCondObj > m_fieldCacheCondObjInputKey
Definition: TRTDigitizationTool.h:136
AthenaAttributeList.h
TRTDigitizationTool::m_pDigConditions
TRTDigCondBase * m_pDigConditions
Definition: TRTDigitizationTool.h:157
TRTDigitizationTool::m_particleTable
const HepPDT::ParticleDataTable * m_particleTable
Definition: TRTDigitizationTool.h:170
TRTDigitizationTool::m_mergeSvc
ServiceHandle< PileUpMergeSvc > m_mergeSvc
Definition: TRTDigitizationTool.h:132
TRTDigitizationTool::m_randomSeedOffset
Gaudi::Property< unsigned long int > m_randomSeedOffset
Definition: TRTDigitizationTool.h:149
TRTDigitizationTool::m_manager
const InDetDD::TRT_DetectorManager * m_manager
Definition: TRTDigitizationTool.h:160
WriteHandle.h
Handle class for recording to StoreGate.
TRTDigitizationTool::getRandomEngine
CLHEP::HepRandomEngine * getRandomEngine(const std::string &streamName, const EventContext &ctx) const
Definition: TRTDigitizationTool.cxx:617
TRTDigitizationTool::createAndStoreRDOs
StatusCode createAndStoreRDOs()
Definition: TRTDigitizationTool.cxx:718
ITRT_PAITool.h
SG::WriteHandleKey
Property holding a SG store/key/clid from which a WriteHandle is made.
Definition: StoreGate/StoreGate/WriteHandleKey.h:40
ITRT_StrawStatusSummaryTool.h
abstract interface to TRT straw status constants
TRTDigitizationTool::prepareEvent
virtual StatusCode prepareEvent(const EventContext &ctx, const unsigned int nInputEvents) override final
return false if not interested in certain xing times (in ns) implemented by default in PileUpToolBase...
Definition: TRTDigitizationTool.cxx:191
TRTDigitizationTool::m_TRTpaiToolAr
ToolHandle< ITRT_PAITool > m_TRTpaiToolAr
Definition: TRTDigitizationTool.h:127
Identifier
Definition: DetectorDescription/Identifier/Identifier/Identifier.h:32
EL::StatusCode
::StatusCode StatusCode
StatusCode definition for legacy code.
Definition: PhysicsAnalysis/D3PDTools/EventLoop/EventLoop/StatusCode.h:22
TRTDigitizationTool::m_minpileuptruthEkin
double m_minpileuptruthEkin
Definition: TRTDigitizationTool.h:167
TRTDigitizationTool::m_dataObjectName
std::string m_dataObjectName
Definition: TRTDigitizationTool.h:140
CLHEP
STD'S.
Definition: IAtRndmGenSvc.h:19
TRTDigitizationTool::getCosmicEventPhase
static double getCosmicEventPhase(CLHEP::HepRandomEngine *rndmEngine)
Definition: TRTDigitizationTool.cxx:899
TRTDigitizationTool::m_UseGasMix
Gaudi::Property< int > m_UseGasMix
Definition: TRTDigitizationTool.h:148
TRTNoise
Simulation of noise hits in the TRT.
Definition: TRTNoise.h:39
test_pyathena.parent
parent
Definition: test_pyathena.py:15
TimedHitCollection.h
TRTDigitizationTool::m_pProcessingOfStraw
TRTProcessingOfStraw * m_pProcessingOfStraw
Definition: TRTDigitizationTool.h:156
TRTDigitizationTool::m_printOverrideableSettings
Gaudi::Property< bool > m_printOverrideableSettings
Definition: TRTDigitizationTool.h:145
TRTDigitizationTool::m_sumTool
ToolHandle< ITRT_StrawStatusSummaryTool > m_sumTool
Definition: TRTDigitizationTool.h:130
ITRT_CalDbTool.h
abstract interface to TRT calibration constants
HepPDT
Definition: BeamHaloGenerator.h:13
IPileUpTool
Definition: IPileUpTool.h:24
TRTDigitizationTool::m_TRTpaiToolKr
ToolHandle< ITRT_PAITool > m_TRTpaiToolKr
Definition: TRTDigitizationTool.h:128
TRTDigitizationTool::getIdentifier
Identifier getIdentifier(int hitID, IdentifierHash &hashId, Identifier &layerID, bool &statusok) const
Definition: TRTDigitizationTool.cxx:784
PileUpToolBase
Definition: PileUpToolBase.h:18
TRTProcessingOfStraw
TRT Digitization: Processing of a TRT Straws.
Definition: TRTProcessingOfStraw.h:55
TRTDigitizationTool::processAllSubEvents
virtual StatusCode processAllSubEvents(const EventContext &ctx) override final
Perform digitization:
Definition: TRTDigitizationTool.cxx:495
TRTDigitizationTool::m_HardScatterSplittingMode
Gaudi::Property< int > m_HardScatterSplittingMode
Definition: TRTDigitizationTool.h:147
ReadCondHandleKey.h
WriteHandleKey.h
Property holding a SG store/key/clid from which a WriteHandle is made.
TRTDigitizationTool::TRTDigitizationTool
TRTDigitizationTool(const std::string &type, const std::string &name, const IInterface *parent)
Definition: TRTDigitizationTool.cxx:70
name
std::string name
Definition: Control/AthContainers/Root/debug.cxx:195
TRTDigitizationTool::m_TRTStrawNeighbourSvc
ServiceHandle< ITRT_StrawNeighbourSvc > m_TRTStrawNeighbourSvc
Definition: TRTDigitizationTool.h:134
TRTDigitizationTool::m_trtHitCollList
std::vector< TRTUncompressedHitCollection * > m_trtHitCollList
Definition: TRTDigitizationTool.h:162
TRTDigit.h
EventInfo.h
TRTDigitizationTool::lateInitialize
StatusCode lateInitialize(const EventContext &ctx)
Definition: TRTDigitizationTool.cxx:246
ITRT_StrawNeighbourSvc.h
Abstract interface to information on straws electronic grouping.
TRTDigitizationTool
Definition: TRTDigitizationTool.h:65
SG::ReadCondHandleKey< AtlasFieldCacheCondObj >
SG::WriteHandle
Definition: StoreGate/StoreGate/WriteHandle.h:76
TRTDigitizationTool::m_trt_id
const TRT_ID * m_trt_id
TRT Id Helper.
Definition: TRTDigitizationTool.h:161
AthenaPoolExample_Copy.streamName
string streamName
Definition: AthenaPoolExample_Copy.py:39
TRTDigitizationTool::m_TRTpaiToolXe
ToolHandle< ITRT_PAITool > m_TRTpaiToolXe
Configurable properties.
Definition: TRTDigitizationTool.h:126
TRT_ID
Definition: TRT_ID.h:84
TRTDigitizationTool::m_printUsedDigSettings
Gaudi::Property< bool > m_printUsedDigSettings
Definition: TRTDigitizationTool.h:146
InDetDD::TRT_DetectorManager
The Detector Manager for all TRT Detector elements, it acts as the interface to the detector elements...
Definition: TRT_DetectorManager.h:69
TRTUncompressedHitCollection.h
TRTDigitizationTool::m_pElectronicsProcessing
TRTElectronicsProcessing * m_pElectronicsProcessing
Definition: TRTDigitizationTool.h:155
InDetDD
Message Stream Member.
Definition: FakeTrackBuilder.h:8
TRTDigitizationTool::m_cosmicEventPhase
double m_cosmicEventPhase
Definition: TRTDigitizationTool.h:169
PileUpMergeSvc.h
the preferred mechanism to access information from the different event stores in a pileup job.
TRTDigitizationTool::initialize
virtual StatusCode initialize() override final
Initialize.
Definition: TRTDigitizationTool.cxx:93
TRTDigitizationTool::mergeEvent
virtual StatusCode mergeEvent(const EventContext &ctx) override final
called at the end of the subevts loop. Not (necessarily) able to access SubEvents
Definition: TRTDigitizationTool.cxx:636
InDetSimDataCollection.h
python.CaloScaleNoiseConfig.type
type
Definition: CaloScaleNoiseConfig.py:78
ITRT_SimDriftTimeTool.h
TRTDigitizationTool::m_maxCrossingTimeSDO
double m_maxCrossingTimeSDO
Definition: TRTDigitizationTool.h:166
SubEventIterator
std::vector< xAOD::EventInfo::SubEvent >::const_iterator SubEventIterator
Definition: IPileUpTool.h:22
TRTDigitizationTool::finalize
virtual StatusCode finalize() override final
Finalize.
Definition: TRTDigitizationTool.cxx:859
TRTDigitizationTool::m_alreadyPrintedPDGcodeWarning
bool m_alreadyPrintedPDGcodeWarning
Definition: TRTDigitizationTool.h:164
TRTDigitizationTool::m_outputSDOCollName
SG::WriteHandleKey< InDetSimDataCollection > m_outputSDOCollName
name of the output SDOs.
Definition: TRTDigitizationTool.h:142
TRTDigitizationTool::m_first_event
bool m_first_event
Definition: TRTDigitizationTool.h:172
TRTDigSettings
Class containing parameters and settings used by TRT digitization.
Definition: TRTDigSettings.h:35
IdentifierHash
Definition: IdentifierHash.h:38
TRTDigitizationTool::m_hitsContainerKey
SG::ReadHandleKey< TRTUncompressedHitCollection > m_hitsContainerKey
Definition: TRTDigitizationTool.h:139
PileUpToolBase.h
helper base class IPileUpTool::toProcess().
TRTDigitizationTool::m_digverscontainerkey
SG::ReadCondHandleKey< AthenaAttributeList > m_digverscontainerkey
Definition: TRTDigitizationTool.h:171
TRTDigitizationTool::m_HardScatterSplittingSkipper
bool m_HardScatterSplittingSkipper
Definition: TRTDigitizationTool.h:174
TRTDigitizationTool::m_TRTsimdrifttimetool
ToolHandle< ITRT_SimDriftTimeTool > m_TRTsimdrifttimetool
Definition: TRTDigitizationTool.h:129
TRTDigitizationTool::m_thpctrt
TimedHitCollection< TRTUncompressedHit > * m_thpctrt
Definition: TRTDigitizationTool.h:163
TRTDigitizationTool::m_onlyUseContainerName
Gaudi::Property< bool > m_onlyUseContainerName
Definition: TRTDigitizationTool.h:138
TimedHitCollection< TRTUncompressedHit >
TRTDigitizationTool::m_minCrossingTimeSDO
double m_minCrossingTimeSDO
Definition: TRTDigitizationTool.h:165
IAthRNGSvc.h
ServiceHandle< PileUpMergeSvc >
TRTDigCondBase
Communication with CondDB.
Definition: TRTDigCondBase.h:32