47 VP1Msg::message(
"SimHitHandle_TRTHit constructor ERROR: Received null hit pointer");
74 VP1Msg::message(
"SimHitHandle_TRTHit constructor WARNING: Could not determine mass for pdg code "
75 +QString::number(
pdg())+
". Assuming charged pion mass.");
78 const double ekin =
m_d->thehit->GetKineticEnergy()*CLHEP::MeV;
79 const double gamma = 1.0 + ekin/mass;
80 double betasq = 1.0-1.0/(gamma*gamma);
83 return sqrt(betasq)*(mass+ekin);
96 size_t hitID =
thehit->GetHitID(), moduleID(0), trtID(0),sectorID(0);
97 static const size_t mask = 0x1F;
98 static const size_t shift = 5;
99 std::bitset<32> idBits(hitID);
101 size_t layerID(0), ringID(0);
104 layerID = hitID & mask;
106 moduleID = hitID & mask;
108 ringID = hitID & mask;
109 trtID = hitID >> shift;
110 detelem = mgr->getBarrelElement(trtID,ringID,moduleID,layerID);
113 size_t wheelID(0), planeID(0);
116 planeID = hitID & mask;
118 sectorID = hitID & mask;
120 wheelID = hitID & mask;
121 trtID = hitID >> shift;
122 bool isPositive = (trtID==2);
123 detelem = mgr->getEndcapElement(isPositive,wheelID,planeID,sectorID);
136 if (!
m_d->ensureDetElemInit())
144 if (!
m_d->ensureDetElemInit())
152 return m_d->thehit->GetGlobalTime();
158 return m_d->thehit->particleLink();
164 return m_d->thehit->GetParticleEncoding();
170 if (!
m_d->ensureDetElemInit())
175 VP1Msg::message(
"SimHitHandle_TRTHit::createTrackParameters ERROR: could not get Trk::StraightLineSurface");
184 VP1Msg::message(
"SimHitHandle_TRTHit::createTrackParameters ERROR: Could not find particle charge (pdg="
185 +QString::number(
m_d->thehit->GetParticleEncoding())+
"). Assuming charge=+1.");
const PlainObject unit() const
This is a plugin that makes Eigen look like CLHEP & defines some convenience methods.
A number of constexpr particle constants to avoid hardcoding them directly in various places.
Header file for AthHistogramAlgorithm.
a link optimized in size for a GenParticle in a McEventCollection
Virtual base class of TRT readout elements.
The Detector Manager for all TRT Detector elements, it acts as the interface to the detector elements...
void setCharge(const double &c)
const TRTUncompressedHit * thehit
Imp(const TRTUncompressedHit *h)
const InDetDD::TRT_BaseElement * detelem
bool ensureDetElemInit() const
const HepMcParticleLink & particleLink() const
Trk::TrackParameters * createTrackParameters() const
SimHitHandle_TRTHit(const TRTUncompressedHit *)
virtual ~SimHitHandle_TRTHit()
int actualPDGCodeFromSimHit() const
Amg::Vector3D posStart() const
double actualMomentum() const
Amg::Vector3D momentumDirection() const
Amg::Vector3D posEnd() const
Class for a StraightLineSurface in the ATLAS detector to describe dirft tube and straw like detectors...
static const InDetDD::TRT_DetectorManager * trtDetMgr()
static void messageVerbose(const QString &)
static void messageDebug(const QString &)
static void message(const QString &, IVP1System *sys=0)
static double particleMass(const int &pdgcode, bool &ok)
static double particleCharge(const int &pdgcode, bool &ok)
static QString str(const QString &s)
Amg::Transform3D CLHEPTransformToEigen(const HepGeom::Transform3D &CLHEPtransf)
Converts a CLHEP-based HepGeom::Transform3D into an Eigen Amg::Transform3D.
Eigen::Matrix< double, 3, 1 > Vector3D
constexpr double chargedPionMassInMeV
the mass of the charged pion (in MeV)
ParametersT< TrackParametersDim, Charged, StraightLineSurface > AtaStraightLine
ParametersBase< TrackParametersDim, Charged > TrackParameters