ATLAS Offline Software
Loading...
Searching...
No Matches
SimHitHandle_TRTHit Class Reference

#include <SimHitHandle_TRTHit.h>

Inheritance diagram for SimHitHandle_TRTHit:
Collaboration diagram for SimHitHandle_TRTHit:

Classes

class  Imp

Public Member Functions

 SimHitHandle_TRTHit (const TRTUncompressedHit *)
virtual ~SimHitHandle_TRTHit ()
QString type () const
Amg::Vector3D momentumDirection () const
double actualMomentum () const
Amg::Vector3D posStart () const
Amg::Vector3D posEnd () const
double hitTime () const
int actualPDGCodeFromSimHit () const
const HepMcParticleLinkparticleLink () const
Trk::TrackParameterscreateTrackParameters () const
double momentum () const
int pdg () const
SimBarCode simBarCode () const
bool hasCharge () const
double charge () const
void setFakeMomentum (const double &m)
void setCharge (const double &c)
void cacheMomentum ()

Private Member Functions

void setPDG (int)

Private Attributes

Impm_d
Trk::TrackParametersm_trackPars
int m_pdgId
double m_fakemom
double m_charge

Detailed Description

Definition at line 23 of file SimHitHandle_TRTHit.h.

Constructor & Destructor Documentation

◆ SimHitHandle_TRTHit()

SimHitHandle_TRTHit::SimHitHandle_TRTHit ( const TRTUncompressedHit * h)

Definition at line 43 of file SimHitHandle_TRTHit.cxx.

44 : SimHitHandleBase(), m_d(new Imp(h))
45{
46 if (!h)
47 VP1Msg::message("SimHitHandle_TRTHit constructor ERROR: Received null hit pointer");
48}
static void message(const QString &, IVP1System *sys=0)
Definition VP1Msg.cxx:30

◆ ~SimHitHandle_TRTHit()

SimHitHandle_TRTHit::~SimHitHandle_TRTHit ( )
virtual

Definition at line 51 of file SimHitHandle_TRTHit.cxx.

52{
53 delete m_d;
54}

Member Function Documentation

◆ actualMomentum()

double SimHitHandle_TRTHit::actualMomentum ( ) const
virtual

Reimplemented from SimHitHandleBase.

Definition at line 69 of file SimHitHandle_TRTHit.cxx.

70{
71 bool ok;
72 double mass = VP1ParticleData::particleMass(m_d->thehit->GetParticleEncoding(),ok);
73 if (!ok) {
74 VP1Msg::message("SimHitHandle_TRTHit constructor WARNING: Could not determine mass for pdg code "
75 +QString::number(pdg())+". Assuming charged pion mass.");
77 }
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);
81 if (betasq<=0.0)
82 return 0.0;
83 return sqrt(betasq)*(mass+ekin);
84}
static double particleMass(const int &pdgcode, bool &ok)
constexpr double chargedPionMassInMeV
the mass of the charged pion (in MeV)

◆ actualPDGCodeFromSimHit()

int SimHitHandle_TRTHit::actualPDGCodeFromSimHit ( ) const
virtual

Reimplemented from SimHitHandleBase.

Definition at line 162 of file SimHitHandle_TRTHit.cxx.

163{
164 return m_d->thehit->GetParticleEncoding();
165}

◆ cacheMomentum()

void SimHitHandleBase::cacheMomentum ( )
inlineinherited

Definition at line 58 of file SimHitHandleBase.h.

58{ if (m_fakemom==-2) m_fakemom = actualMomentum(); }
virtual double actualMomentum() const

◆ charge()

double SimHitHandleBase::charge ( ) const
inlineinherited

Definition at line 51 of file SimHitHandleBase.h.

51{ return m_charge; }

◆ createTrackParameters()

Trk::TrackParameters * SimHitHandle_TRTHit::createTrackParameters ( ) const
virtual

Implements SimHitHandleBase.

Definition at line 168 of file SimHitHandle_TRTHit.cxx.

169{
170 if (!m_d->ensureDetElemInit())
171 return nullptr;
172 const Trk::StraightLineSurface * surf
173 = dynamic_cast<const Trk::StraightLineSurface *>( &(m_d->detelem->strawSurface(m_d->strawID)));
174 if (!surf) {
175 VP1Msg::message("SimHitHandle_TRTHit::createTrackParameters ERROR: could not get Trk::StraightLineSurface");
176 return nullptr;
177 }
178
179 double c;
180 if ( !hasCharge() ) {
181 bool ok;
182 c = VP1ParticleData::particleCharge(m_d->thehit->GetParticleEncoding(),ok);
183 if (!ok) {
184 VP1Msg::message("SimHitHandle_TRTHit::createTrackParameters ERROR: Could not find particle charge (pdg="
185 +QString::number(m_d->thehit->GetParticleEncoding())+"). Assuming charge=+1.");
186 c = +1.0;
187 } else {
188 if (VP1Msg::verbose())
189 VP1Msg::messageVerbose("Looked up particle charge for trt simhit with pdg code "+VP1Msg::str(m_d->thehit->GetParticleEncoding())+": "+VP1Msg::str(c));
190 }
191 const_cast<SimHitHandle_TRTHit*>(this)->setCharge(c);
192 } else {
193 c = charge();
194 }
195 return new Trk::AtaStraightLine(0.5*(posStart()+posEnd()),momentum()*momentumDirection(),c,*surf);
196 //Fixme: Use constructor with local coords instead?:
197}
double charge() const
void setCharge(const double &c)
bool hasCharge() const
double momentum() const
SimHitHandle_TRTHit(const TRTUncompressedHit *)
Amg::Vector3D posStart() const
Amg::Vector3D momentumDirection() const
Amg::Vector3D posEnd() const
static void messageVerbose(const QString &)
Definition VP1Msg.cxx:84
static bool verbose()
Definition VP1Msg.h:31
static double particleCharge(const int &pdgcode, bool &ok)
static QString str(const QString &s)
Definition VP1String.h:49
ParametersT< TrackParametersDim, Charged, StraightLineSurface > AtaStraightLine

◆ hasCharge()

bool SimHitHandleBase::hasCharge ( ) const
inlineinherited

Definition at line 50 of file SimHitHandleBase.h.

50{ return m_charge!=-99999.0; }

◆ hitTime()

double SimHitHandle_TRTHit::hitTime ( ) const
virtual

Implements SimHitHandleBase.

Definition at line 150 of file SimHitHandle_TRTHit.cxx.

151{
152 return m_d->thehit->GetGlobalTime();
153}

◆ momentum()

double SimHitHandleBase::momentum ( ) const
inlineinherited

Definition at line 41 of file SimHitHandleBase.h.

41{ return m_fakemom == -2 ? actualMomentum() : m_fakemom; }

◆ momentumDirection()

Amg::Vector3D SimHitHandle_TRTHit::momentumDirection ( ) const
virtual

Implements SimHitHandleBase.

Definition at line 59 of file SimHitHandle_TRTHit.cxx.

60{
62 VP1Msg::messageVerbose("SimHitHandle_SiHit::momentumDirection() ERROR: posStart()==posEnd()");
64// return Trk::GlobalMomentum(u.x(),u.y(),u.z());
65 return Amg::Vector3D(u.x(),u.y(),u.z());
66}
const PlainObject unit() const
This is a plugin that makes Eigen look like CLHEP & defines some convenience methods.
Eigen::Matrix< double, 3, 1 > Vector3D
@ u
Enums for curvilinear frames.
Definition ParamDefs.h:77

◆ particleLink()

const HepMcParticleLink & SimHitHandle_TRTHit::particleLink ( ) const
virtual

Implements SimHitHandleBase.

Definition at line 156 of file SimHitHandle_TRTHit.cxx.

157{
158 return m_d->thehit->particleLink();
159}

◆ pdg()

int SimHitHandleBase::pdg ( ) const
inlineinherited

Definition at line 82 of file SimHitHandleBase.h.

83{
84 return m_pdgId;
85}

◆ posEnd()

Amg::Vector3D SimHitHandle_TRTHit::posEnd ( ) const
virtual

Implements SimHitHandleBase.

Definition at line 142 of file SimHitHandle_TRTHit.cxx.

143{
144 if (!m_d->ensureDetElemInit())
145 return Amg::Vector3D(0,0,0);
146 return Amg::CLHEPTransformToEigen(m_d->detelem->getAbsoluteTransform(m_d->strawID)) * Amg::Vector3D(m_d->thehit->GetPostStepX(),m_d->thehit->GetPostStepY(),m_d->thehit->GetPostStepZ());
147}
Amg::Transform3D CLHEPTransformToEigen(const HepGeom::Transform3D &CLHEPtransf)
Converts a CLHEP-based HepGeom::Transform3D into an Eigen Amg::Transform3D.

◆ posStart()

Amg::Vector3D SimHitHandle_TRTHit::posStart ( ) const
virtual

Implements SimHitHandleBase.

Definition at line 134 of file SimHitHandle_TRTHit.cxx.

135{
136 if (!m_d->ensureDetElemInit())
137 return Amg::Vector3D(0,0,0);
138 return Amg::CLHEPTransformToEigen(m_d->detelem->getAbsoluteTransform(m_d->strawID)) * Amg::Vector3D(m_d->thehit->GetPreStepX(),m_d->thehit->GetPreStepY(),m_d->thehit->GetPreStepZ());
139}

◆ setCharge()

void SimHitHandleBase::setCharge ( const double & c)
inlineinherited

Definition at line 57 of file SimHitHandleBase.h.

57{ m_charge = c; }

◆ setFakeMomentum()

void SimHitHandleBase::setFakeMomentum ( const double & m)
inlineinherited

Definition at line 56 of file SimHitHandleBase.h.

◆ setPDG()

void SimHitHandleBase::setPDG ( int pdg)
inlineprivateinherited

Definition at line 87 of file SimHitHandleBase.h.

88{
89 m_pdgId = pdg;
90}

◆ simBarCode()

SimBarCode SimHitHandleBase::simBarCode ( ) const
inlineinherited

Definition at line 48 of file SimHitHandleBase.h.

48{ return SimBarCode(particleLink(),pdg()); }
virtual const HepMcParticleLink & particleLink() const =0

◆ type()

QString SimHitHandle_TRTHit::type ( ) const
inlinevirtual

Implements SimHitHandleBase.

Definition at line 29 of file SimHitHandle_TRTHit.h.

29{ return "TRTUncompressedHit"; };

Member Data Documentation

◆ m_charge

double SimHitHandleBase::m_charge
privateinherited

Definition at line 71 of file SimHitHandleBase.h.

◆ m_d

Imp* SimHitHandle_TRTHit::m_d
private

Definition at line 44 of file SimHitHandle_TRTHit.h.

◆ m_fakemom

double SimHitHandleBase::m_fakemom
privateinherited

Definition at line 70 of file SimHitHandleBase.h.

◆ m_pdgId

int SimHitHandleBase::m_pdgId
privateinherited

Definition at line 68 of file SimHitHandleBase.h.

◆ m_trackPars

Trk::TrackParameters* SimHitHandleBase::m_trackPars
mutableprivateinherited

Definition at line 67 of file SimHitHandleBase.h.


The documentation for this class was generated from the following files: