ATLAS Offline Software
Public Member Functions | Private Member Functions | Private Attributes | List of all members
MuonG4R4::MdtSensitiveDetector Class Reference

#include <MdtSensitiveDetector.h>

Inheritance diagram for MuonG4R4::MdtSensitiveDetector:
Collaboration diagram for MuonG4R4::MdtSensitiveDetector:

Public Member Functions

 MdtSensitiveDetector (const std::string &name, const std::string &output_key, const std::string &trf_storKey, const MuonGMR4::MuonDetectorManager *detMgr)
 Constructor. More...
 
 ~MdtSensitiveDetector ()=default
 
void Initialize (G4HCofThisEvent *HCE) override final
 member functions More...
 
G4bool ProcessHits (G4Step *aStep, G4TouchableHistory *ROhist) override final
 
bool msgLvl (const MSG::Level lvl) const
 Test the output level. More...
 
MsgStream & msg () const
 The standard message stream. More...
 
MsgStream & msg (const MSG::Level lvl) const
 The standard message stream. More...
 
void setLevel (MSG::Level lvl)
 Change the current logging level. More...
 

Private Member Functions

const MuonGMR4::MdtReadoutElementgetReadoutElement (const G4TouchableHistory *touchHist) const
 Retrieves the matching readout element to a G4 hit. More...
 
Identifier getIdentifier (const ActsGeometryContext &gctx, const MuonGMR4::MdtReadoutElement *reElement, const G4TouchableHistory *touchHist) const
 Retrieves from the Readoutelement & the touchable history the Identifier. More...
 
void initMessaging () const
 Initialize our message level and MessageSvc. More...
 

Private Attributes

SG::WriteHandle< xAOD::MuonSimHitContainerm_writeHandle
 
SG::ReadHandleKey< ActsTrk::DetectorAlignStorem_trfCacheKey
 ReadHandleKey to the DetectorAlignmentStore caching the relevant transformations needed in this event. More...
 
const MuonGMR4::MuonDetectorManagerm_detMgr {nullptr}
 Pointer to the underlying detector manager. More...
 
std::string m_nm
 Message source name. More...
 
boost::thread_specific_ptr< MsgStream > m_msg_tls
 MsgStream instance (a std::cout like with print-out levels) More...
 
std::atomic< IMessageSvc * > m_imsg { nullptr }
 MessageSvc pointer. More...
 
std::atomic< MSG::Level > m_lvl { MSG::NIL }
 Current logging level. More...
 
std::atomic_flag m_initialized ATLAS_THREAD_SAFE = ATOMIC_FLAG_INIT
 Messaging initialized (initMessaging) More...
 

Detailed Description

Definition at line 86 of file MdtSensitiveDetector.h.

Constructor & Destructor Documentation

◆ MdtSensitiveDetector()

MuonG4R4::MdtSensitiveDetector::MdtSensitiveDetector ( const std::string &  name,
const std::string &  output_key,
const std::string &  trf_storKey,
const MuonGMR4::MuonDetectorManager detMgr 
)

Constructor.

Parameters
nameName of the Sensitive detctor / AthMessaging module
output_keyKey under which the sim hits are written into store gate
trf_storeKeyLocation of the DetctorAlignmentStore holding the transformations per event
detMgrPointer to the run-4 detector manager

Definition at line 26 of file MdtSensitiveDetector.cxx.

29  :
30  G4VSensitiveDetector{name},
32  m_writeHandle{output_key},
33  m_trfCacheKey{trfStore_key},
34  m_detMgr{detMgr} {
35  m_trfCacheKey.initialize().ignore();
36 }

◆ ~MdtSensitiveDetector()

MuonG4R4::MdtSensitiveDetector::~MdtSensitiveDetector ( )
default

Member Function Documentation

◆ getIdentifier()

Identifier MuonG4R4::MdtSensitiveDetector::getIdentifier ( const ActsGeometryContext gctx,
const MuonGMR4::MdtReadoutElement reElement,
const G4TouchableHistory *  touchHist 
) const
private

Retrieves from the Readoutelement & the touchable history the Identifier.

The Geant transform takes a hit global -> local --> inverse goes back to the global system Compose this one with the global to local transformation of the first tube in the layer -->

equilateral triangle

Update the reference tube position to be in the proper layer

It can happen that the tube is assigned to zero by numerical precision Catch these cases if the layer is fine

Definition at line 148 of file MdtSensitiveDetector.cxx.

150  {
151  const Amg::Transform3D localToGlobal{getTransform(touchHist, 0)};
154  Amg::Vector3D refTubePos = (readOutEle->globalToLocalTrans(gctx, readOutEle->measurementHash(1,1)) * localToGlobal).translation();
155  ATH_MSG_VERBOSE("Position of the tube wire w.r.t. the first tube in the multi layer "<<Amg::toString(refTubePos, 2));
157  static const double layerPitch = 1./ std::sin(60*Gaudi::Units::deg);
158  const int layer = std::round(refTubePos.x() * layerPitch / readOutEle->tubePitch()) +1;
159  if (layer <= 0) {
160  THROW_EXCEPTION("Tube hit in nirvana -- It seems that the tube position "
161  <<Amg::toString(refTubePos, 2)<<", perp: "<<refTubePos.perp()
162  <<" is outside of the volume envelope "
163  <<m_detMgr->idHelperSvc()->toStringDetEl(readOutEle->identify())<<". ");
164  }
166  refTubePos = (readOutEle->globalToLocalTrans(gctx, readOutEle->measurementHash(layer,1)) * localToGlobal).translation();
167  const double tubePitches = refTubePos.y() / readOutEle->tubePitch();
168  unsigned int tube = std::round(tubePitches) + 1;
169  tube = std::max(1u, std::min(readOutEle->numTubesInLay(), tube));
172  const Amg::Transform3D closureCheck{readOutEle->globalToLocalTrans(gctx,
173  readOutEle->measurementHash(layer, tube))*localToGlobal};
174  if (!Amg::isIdentity(closureCheck)) {
175  ATH_MSG_WARNING("Correction needed "<<layer<<","<<tube<<" "<<Amg::toString(closureCheck));
176  if (closureCheck.translation().y() > 0) ++tube;
177  else --tube;
178  }
179 
180  const IdentifierHash tubeHash = readOutEle->measurementHash(layer, tube);
181  const Identifier tubeId = readOutEle->measurementId(tubeHash);
182  {
183  const Amg::Transform3D closureCheck{readOutEle->globalToLocalTrans(gctx, tubeHash)*localToGlobal};
184  if (!Amg::isIdentity(closureCheck)) {
185  THROW_EXCEPTION("Tube hit in Nirvana -- It seems that the tube position "
186  <<Amg::toString(refTubePos, 2)<<", perp: "<<refTubePos.perp()
187  <<" is outside of the volume envelope "
188  <<m_detMgr->idHelperSvc()->toStringDetEl(readOutEle->identify())<<". "
189  <<"Layer: "<<layer<<", tube: "<<tube<<" "
190  <<Amg::toString(closureCheck)
191  <<"tube volume : "<<touchHist->GetVolume(0)->GetName()
192  <<" mdt chamber: "<<touchHist->GetVolume(2)->GetName());
193  }
194  }
195  ATH_MSG_VERBOSE("Tube & layer number candidate "<<tube<<", "<<layer<<" back and forth transformation "
196  <<Amg::toString(closureCheck));
197  return tubeId;
198 }

◆ getReadoutElement()

const MuonGMR4::MdtReadoutElement * MuonG4R4::MdtSensitiveDetector::getReadoutElement ( const G4TouchableHistory *  touchHist) const
private

Retrieves the matching readout element to a G4 hit.

The third volume in the history is the volume corresponding to the Muon multilayer

Find the Detector element from the Identifier

Build first the Identifier to find the detector element

Then retrieve the Detector element

Definition at line 50 of file MdtSensitiveDetector.cxx.

50  {
52  const std::string stationVolume = touchHist->GetVolume(2)->GetName();
53  using namespace MuonGMR4;
54  const std::vector<std::string> volumeTokens = tokenize(stationVolume, "_");
55  ATH_MSG_VERBOSE("Name of the station volume is "<<stationVolume);
56  if (volumeTokens.size() != 5) {
57  THROW_EXCEPTION(" Cannot deduce the station name from "<<stationVolume);
58  }
60  const std::string stName = volumeTokens[0].substr(0,3);
61  const int stationEta = atoi(volumeTokens[2]);
62  const int stationPhi = atoi(volumeTokens[3]);
63  const int multiLayer = atoi(volumeTokens[4]);
64  const MdtIdHelper& idHelper{m_detMgr->idHelperSvc()->mdtIdHelper()};
66  const Identifier detElId = idHelper.multilayerID(idHelper.elementID(stName,stationEta, stationPhi), multiLayer);
68  const MdtReadoutElement* readOutEle = m_detMgr->getMdtReadoutElement(detElId);
69  if (!readOutEle) {
70  THROW_EXCEPTION(" Failed to retrieve a valid detector element from "
71  <<m_detMgr->idHelperSvc()->toStringDetEl(detElId)<<" "<<stationVolume);
72  }
73  return readOutEle;
74 }

◆ Initialize()

void MuonG4R4::MdtSensitiveDetector::Initialize ( G4HCofThisEvent *  HCE)
finaloverride

member functions

Definition at line 38 of file MdtSensitiveDetector.cxx.

38  {
39  if (m_writeHandle.isValid()) {
40  ATH_MSG_VERBOSE("Simulation hit container "<<m_writeHandle.fullKey()<<" is already written");
41  return;
42  }
43  if (!m_writeHandle.recordNonConst(std::make_unique<xAOD::MuonSimHitContainer>(),
44  std::make_unique<xAOD::MuonSimHitAuxContainer>()).isSuccess()) {
45  THROW_EXCEPTION(" Failed to record "<<m_writeHandle.fullKey());
46  }
47  ATH_MSG_DEBUG("Output container "<<m_writeHandle.fullKey()<<" has been successfully created");
48 }

◆ initMessaging()

void AthMessaging::initMessaging ( ) const
privateinherited

Initialize our message level and MessageSvc.

This method should only be called once.

Definition at line 39 of file AthMessaging.cxx.

40 {
42  m_lvl = m_imsg ?
43  static_cast<MSG::Level>( m_imsg.load()->outputLevel(m_nm) ) :
44  MSG::INFO;
45 }

◆ msg() [1/2]

MsgStream & AthMessaging::msg ( ) const
inlineinherited

The standard message stream.

Returns a reference to the default message stream May not be invoked before sysInitialize() has been invoked.

Definition at line 164 of file AthMessaging.h.

165 {
166  MsgStream* ms = m_msg_tls.get();
167  if (!ms) {
168  if (!m_initialized.test_and_set()) initMessaging();
169  ms = new MsgStream(m_imsg,m_nm);
170  m_msg_tls.reset( ms );
171  }
172 
173  ms->setLevel (m_lvl);
174  return *ms;
175 }

◆ msg() [2/2]

MsgStream & AthMessaging::msg ( const MSG::Level  lvl) const
inlineinherited

The standard message stream.

Returns a reference to the default message stream May not be invoked before sysInitialize() has been invoked.

Definition at line 179 of file AthMessaging.h.

180 { return msg() << lvl; }

◆ msgLvl()

bool AthMessaging::msgLvl ( const MSG::Level  lvl) const
inlineinherited

Test the output level.

Parameters
lvlThe message level to test against
Returns
boolean Indicating if messages at given level will be printed
Return values
trueMessages at level "lvl" will be printed

Definition at line 151 of file AthMessaging.h.

152 {
153  if (!m_initialized.test_and_set()) initMessaging();
154  if (m_lvl <= lvl) {
155  msg() << lvl;
156  return true;
157  } else {
158  return false;
159  }
160 }

◆ ProcessHits()

G4bool MuonG4R4::MdtSensitiveDetector::ProcessHits ( G4Step *  aStep,
G4TouchableHistory *  ROhist 
)
finaloverride

Reject secondary particles

Calculate the closest approach of the track w.r.t the z-axis

Definition at line 76 of file MdtSensitiveDetector.cxx.

76  {
77  G4Track* currentTrack = aStep->GetTrack();
78 
79  // MDTs sensitive to charged particle only
80  if (currentTrack->GetDefinition()->GetPDGCharge() == 0.0) {
81  if (currentTrack->GetDefinition()!= G4Geantino::GeantinoDefinition()) return true;
82  else if (currentTrack->GetDefinition() != G4ChargedGeantino::ChargedGeantinoDefinition()) return true;
83  }
84 
85 
87  constexpr double velCutOff = 10.*Gaudi::Units::micrometer / Gaudi::Units::second;
88  if (currentTrack->GetVelocity() < velCutOff) return true;
89 
90  const G4TouchableHistory* touchHist = static_cast<const G4TouchableHistory*>(currentTrack->GetTouchable());
91  const MdtReadoutElement* reEle{getReadoutElement(touchHist)};
92 
93  ActsGeometryContext gctx{};
94 
96  if (!trfStoreHandle.isValid()) {
97  ATH_MSG_FATAL("Failed to retrieve "<<m_trfCacheKey.fullKey()<<".");
98  return false;
99  }
100  gctx.setStore(std::make_unique<DetectorAlignStore>(*trfStoreHandle));
101 
102  const Identifier HitID = getIdentifier(gctx, reEle, touchHist);
103  if (!HitID.is_valid()) {
104  ATH_MSG_VERBOSE("No valid hit found");
105  return true;
106  }
107 
108  const Amg::Transform3D globalToLocal{reEle->globalToLocalTrans(gctx, reEle->measurementHash(HitID))};
109 
110  // transform pre and post step positions to local positions
111  const Amg::Vector3D trackPosition{Amg::Hep3VectorToEigen(currentTrack->GetPosition())};
112  const Amg::Vector3D trackDirection{Amg::Hep3VectorToEigen(currentTrack->GetMomentumDirection())};
113 
114  const Amg::Vector3D trackLocPos{globalToLocal * trackPosition};
115  const Amg::Vector3D trackLocDir{globalToLocal.linear()* trackDirection};
116 
118  const double lambda = Amg::intersect<3>(Amg::Vector3D::Zero(), Amg::Vector3D::UnitZ(),
119  trackLocPos, trackLocDir).value_or(0);
120 
121  const Amg::Vector3D driftHit{trackLocPos + lambda * trackLocDir};
122 
123  const double globalTime{currentTrack->GetGlobalTime() + lambda / currentTrack->GetVelocity()};
124 
125  TrackHelper trHelp{currentTrack};
126 
127  ATH_MSG_VERBOSE(" Dumping of hit "<<m_detMgr->idHelperSvc()->toString(HitID)
128  <<", barcode: "<<trHelp.GenerateParticleLink().barcode()
129  <<", "<<(*currentTrack)
130  <<", driftCircle: "<<Amg::toString(driftHit, 2)
131  <<", direction "<<Amg::toString(trackLocDir, 2)
132  <<" to SimHit container ahead. ");
133 
134  xAOD::MuonSimHit* hit = new xAOD::MuonSimHit();
135  m_writeHandle->push_back(hit);
136  hit->setIdentifier(HitID);
137  hit->setLocalPosition(xAOD::toStorage(driftHit));
138  hit->setLocalDirection(xAOD::toStorage(trackLocDir));
139  hit->setMass(currentTrack->GetDefinition()->GetPDGMass());
140  hit->setGlobalTime(globalTime);
141  hit->setPdgId(currentTrack->GetDefinition()->GetPDGEncoding());
142  hit->setEnergyDeposit(aStep->GetTotalEnergyDeposit());
143  hit->setKineticEnergy(currentTrack->GetKineticEnergy());
144  hit->setGenParticleLink(trHelp.GenerateParticleLink());
145 
146  return true;
147 }

◆ setLevel()

void AthMessaging::setLevel ( MSG::Level  lvl)
inherited

Change the current logging level.

Use this rather than msg().setLevel() for proper operation with MT.

Definition at line 28 of file AthMessaging.cxx.

29 {
30  m_lvl = lvl;
31 }

Member Data Documentation

◆ ATLAS_THREAD_SAFE

std::atomic_flag m_initialized AthMessaging::ATLAS_THREAD_SAFE = ATOMIC_FLAG_INIT
mutableprivateinherited

Messaging initialized (initMessaging)

Definition at line 141 of file AthMessaging.h.

◆ m_detMgr

const MuonGMR4::MuonDetectorManager* MuonG4R4::MdtSensitiveDetector::m_detMgr {nullptr}
private

Pointer to the underlying detector manager.

Definition at line 124 of file MdtSensitiveDetector.h.

◆ m_imsg

std::atomic<IMessageSvc*> AthMessaging::m_imsg { nullptr }
mutableprivateinherited

MessageSvc pointer.

Definition at line 135 of file AthMessaging.h.

◆ m_lvl

std::atomic<MSG::Level> AthMessaging::m_lvl { MSG::NIL }
mutableprivateinherited

Current logging level.

Definition at line 138 of file AthMessaging.h.

◆ m_msg_tls

boost::thread_specific_ptr<MsgStream> AthMessaging::m_msg_tls
mutableprivateinherited

MsgStream instance (a std::cout like with print-out levels)

Definition at line 132 of file AthMessaging.h.

◆ m_nm

std::string AthMessaging::m_nm
privateinherited

Message source name.

Definition at line 129 of file AthMessaging.h.

◆ m_trfCacheKey

SG::ReadHandleKey<ActsTrk::DetectorAlignStore> MuonG4R4::MdtSensitiveDetector::m_trfCacheKey
private

ReadHandleKey to the DetectorAlignmentStore caching the relevant transformations needed in this event.

Definition at line 122 of file MdtSensitiveDetector.h.

◆ m_writeHandle

SG::WriteHandle<xAOD::MuonSimHitContainer> MuonG4R4::MdtSensitiveDetector::m_writeHandle
private

Definition at line 117 of file MdtSensitiveDetector.h.


The documentation for this class was generated from the following files:
AthMessaging::m_lvl
std::atomic< MSG::Level > m_lvl
Current logging level.
Definition: AthMessaging.h:138
python.SystemOfUnits.second
int second
Definition: SystemOfUnits.py:120
xAOD::MuonSimHit_v1
Definition: MuonSimHit_v1.h:18
Muon::nsw::STGTPSegments::moduleIDBits::stationPhi
constexpr uint8_t stationPhi
station Phi 1 to 8
Definition: NSWSTGTPDecodeBitmaps.h:129
ATH_MSG_FATAL
#define ATH_MSG_FATAL(x)
Definition: AthMsgStreamMacros.h:34
xAOD::MuonSimHit_v1::setIdentifier
void setIdentifier(const Identifier &id)
Sets the global ATLAS identifier.
Definition: xAODMuonSimHit_V1.cxx:43
max
#define max(a, b)
Definition: cfImp.cxx:41
SG::ReadHandle
Definition: StoreGate/StoreGate/ReadHandle.h:70
CxxUtils::tokenize
std::vector< std::string > tokenize(const std::string &the_str, std::string_view delimiters)
Splits the string into smaller substrings.
Definition: Control/CxxUtils/Root/StringUtils.cxx:15
xAOD::MuonSimHit_v1::setPdgId
void setPdgId(int id)
Sets the pdgID of the traversing particle.
MuonG4R4::getTransform
Amg::Transform3D getTransform(const G4VTouchable *history, unsigned int level)
Extracts the local -> global transformation from a TouchableHistory at a given level.
Definition: MuonSpectrometer/MuonPhaseII/MuonG4/MuonSensitiveDetectorsR4/MuonSensitiveDetectorsR4/Utils.h:24
MuonGM::round
float round(const float toRound, const unsigned int decimals)
Definition: Mdt.cxx:27
deg
#define deg
Definition: SbPolyhedron.cxx:17
xAOD::toStorage
MeasVector< N > toStorage(const AmgVector(N)&amgVec)
Converts the double precision of the AmgVector into the floating point storage precision of the MeasV...
Definition: MeasurementDefs.h:68
MuonG4R4::MdtSensitiveDetector::m_detMgr
const MuonGMR4::MuonDetectorManager * m_detMgr
Pointer to the underlying detector manager.
Definition: MdtSensitiveDetector.h:124
Muon::IMuonIdHelperSvc::toStringDetEl
virtual std::string toStringDetEl(const Identifier &id) const =0
print all fields up to detector element to string
xAOD::MuonSimHit_v1::setLocalPosition
void setLocalPosition(MeasVector< 3 > vec)
Sets the local position of the traversing particle.
Definition: xAODMuonSimHit_V1.cxx:55
ATH_MSG_VERBOSE
#define ATH_MSG_VERBOSE(x)
Definition: AthMsgStreamMacros.h:28
xAOD::MuonSimHit_v1::setGenParticleLink
void setGenParticleLink(const HepMcParticleLink &link)
Sets the link to the HepMC particle producing this hit.
Definition: xAODMuonSimHit_V1.cxx:82
THROW_EXCEPTION
#define THROW_EXCEPTION(MSG)
Definition: MMReadoutElement.cxx:48
AthMessaging::m_imsg
std::atomic< IMessageSvc * > m_imsg
MessageSvc pointer.
Definition: AthMessaging.h:135
python.SystemOfUnits.ms
int ms
Definition: SystemOfUnits.py:132
Trk::u
@ u
Enums for curvilinear frames.
Definition: ParamDefs.h:83
Athena::getMessageSvc
IMessageSvc * getMessageSvc(bool quiet=false)
Definition: getMessageSvc.cxx:20
xAOD::MuonSimHit_v1::setMass
void setMass(const float m)
set the rest-mass of the traversing particle
Amg::Hep3VectorToEigen
Amg::Vector3D Hep3VectorToEigen(const CLHEP::Hep3Vector &CLHEPvector)
Converts a CLHEP-based CLHEP::Hep3Vector into an Eigen-based Amg::Vector3D.
Definition: CLHEPtoEigenConverter.h:137
MuonG4R4::MdtSensitiveDetector::getReadoutElement
const MuonGMR4::MdtReadoutElement * getReadoutElement(const G4TouchableHistory *touchHist) const
Retrieves the matching readout element to a G4 hit.
Definition: MdtSensitiveDetector.cxx:50
TrackHelper
Definition: TrackHelper.h:14
xAOD::MuonSimHit_v1::setKineticEnergy
void setKineticEnergy(const float energy)
Sets the kinetic energy of the traversing particle.
Amg::toString
std::string toString(const Translation3D &translation, int precision=4)
GeoPrimitvesToStringConverter.
Definition: GeoPrimitivesToStringConverter.h:40
TrigConf::MSGTC::Level
Level
Definition: Trigger/TrigConfiguration/TrigConfBase/TrigConfBase/MsgStream.h:21
MuonGMR4
Definition: ChamberAssembleTool.h:16
ATH_MSG_DEBUG
#define ATH_MSG_DEBUG(x)
Definition: AthMsgStreamMacros.h:29
TRT::Hit::layer
@ layer
Definition: HitInfo.h:79
MuonG4R4::MdtSensitiveDetector::getIdentifier
Identifier getIdentifier(const ActsGeometryContext &gctx, const MuonGMR4::MdtReadoutElement *reElement, const G4TouchableHistory *touchHist) const
Retrieves from the Readoutelement & the touchable history the Identifier.
Definition: MdtSensitiveDetector.cxx:148
Amg::Transform3D
Eigen::Affine3d Transform3D
Definition: GeoPrimitives.h:46
MdtIdHelper
Definition: MdtIdHelper.h:61
AthMessaging
Class to provide easy MsgStream access and capabilities.
Definition: AthMessaging.h:55
Amg::isIdentity
bool isIdentity(const Amg::Transform3D &trans)
Checks whether the transformation is the Identity transformation.
Definition: GeoPrimitivesHelpers.h:348
python.SystemOfUnits.micrometer
int micrometer
Definition: SystemOfUnits.py:71
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
AthMessaging::msg
MsgStream & msg() const
The standard message stream.
Definition: AthMessaging.h:164
ActsGeometryContext
Include the GeoPrimitives which need to be put first.
Definition: ActsGeometryContext.h:27
min
#define min(a, b)
Definition: cfImp.cxx:40
xAOD::MuonSimHit_v1::setEnergyDeposit
void setEnergyDeposit(const float deposit)
Sets the energy deposited by the traversing particle inside the gas volume.
MuonGMR4::MdtReadoutElement
Definition: MuonPhaseII/MuonDetDescr/MuonReadoutGeometryR4/MuonReadoutGeometryR4/MdtReadoutElement.h:19
name
std::string name
Definition: Control/AthContainers/Root/debug.cxx:195
Muon::IMuonIdHelperSvc::mdtIdHelper
virtual const MdtIdHelper & mdtIdHelper() const =0
access to MdtIdHelper
xAOD::MuonSimHit_v1::setLocalDirection
void setLocalDirection(MeasVector< 3 > vec)
Sets the local direction of the traversing particle.
Definition: xAODMuonSimHit_V1.cxx:61
Amg::Vector3D
Eigen::Matrix< double, 3, 1 > Vector3D
Definition: GeoPrimitives.h:47
Muon::IMuonIdHelperSvc::toString
virtual std::string toString(const Identifier &id) const =0
print all fields to string
ATH_MSG_WARNING
#define ATH_MSG_WARNING(x)
Definition: AthMsgStreamMacros.h:32
AthMessaging::m_nm
std::string m_nm
Message source name.
Definition: AthMessaging.h:129
MuonGMR4::MuonDetectorManager::idHelperSvc
const Muon::IMuonIdHelperSvc * idHelperSvc() const
Returns a pointer to the central MuonIdHelperSvc.
Definition: MuonPhaseII/MuonDetDescr/MuonReadoutGeometryR4/src/MuonDetectorManager.cxx:132
MdtIdHelper::multilayerID
Identifier multilayerID(const Identifier &channeldID) const
Definition: MdtIdHelper.cxx:332
CxxUtils::atoi
int atoi(std::string_view str)
Helper functions to unpack numbers decoded in string into integers and doubles The strings are requir...
Definition: Control/CxxUtils/Root/StringUtils.cxx:85
AthMessaging::initMessaging
void initMessaging() const
Initialize our message level and MessageSvc.
Definition: AthMessaging.cxx:39
drawFromPickle.sin
sin
Definition: drawFromPickle.py:36
Muon::nsw::STGTPSegments::moduleIDBits::stationEta
constexpr uint8_t stationEta
1 to 3
Definition: NSWSTGTPDecodeBitmaps.h:127
HitID
int HitID
Definition: GenericMuonSimHit.h:13
AthMessaging::m_msg_tls
boost::thread_specific_ptr< MsgStream > m_msg_tls
MsgStream instance (a std::cout like with print-out levels)
Definition: AthMessaging.h:132
MuonG4R4::MdtSensitiveDetector::m_trfCacheKey
SG::ReadHandleKey< ActsTrk::DetectorAlignStore > m_trfCacheKey
ReadHandleKey to the DetectorAlignmentStore caching the relevant transformations needed in this event...
Definition: MdtSensitiveDetector.h:122
sTgcDigitEffiDump.multiLayer
int multiLayer
Definition: sTgcDigitEffiDump.py:36
NSWL1::globalToLocal
Polygon globalToLocal(const Polygon &pol, float z, const Trk::PlaneSurface &surf)
Definition: GeoUtils.cxx:103
xAOD::MuonSimHit_v1::setGlobalTime
void setGlobalTime(const float time)
Sets the time of the traversing particle.
calibdata.tube
tube
Definition: calibdata.py:31
xAOD::MuonSimHit
MuonSimHit_v1 MuonSimHit
Defined the version of the MuonSimHit.
Definition: MuonSimHit.h:12
MuonG4R4::MdtSensitiveDetector::m_writeHandle
SG::WriteHandle< xAOD::MuonSimHitContainer > m_writeHandle
Definition: MdtSensitiveDetector.h:117
generate::Zero
void Zero(TH1D *hin)
Definition: generate.cxx:32