ATLAS Offline Software
graphics
VP1
VP1Systems
VP1TrackSystems
src
SimHitHandle_ForwardHit.cxx
Go to the documentation of this file.
1
/*
2
Copyright (C) 2002-2024 CERN for the benefit of the ATLAS collaboration
3
*/
4
5
7
// //
8
// Implementation of class SimHitHandle_ForwardHit //
9
// //
10
// Author: Thomas Keck (t.keck@cern.ch) //
11
// Initial version: July 2013 //
12
// //
14
15
#include "
VP1TrackSystems/SimHitHandle_ForwardHit.h
"
16
#include "
VP1Base/VP1Msg.h
"
17
#include "
VP1Utils/VP1DetInfo.h
"
18
#include "
VP1Utils/VP1ParticleData.h
"
19
#include "
VP1TrackSystems/VP1TrackSanity.h
"
20
21
#include "
ForwardRegion_SimEv/SimulationHit.h
"
22
#include "
InDetIdentifier/PixelID.h
"
23
#include "
InDetIdentifier/SCT_ID.h
"
24
#include "
TrkSurfaces/StraightLineSurface.h
"
25
#include "
TrkSurfaces/Surface.h
"
26
27
#include "
TrkParameters/TrackParameters.h
"
28
29
#include "
GeoPrimitives/GeoPrimitives.h
"
30
#include "
GeoPrimitives/CLHEPtoEigenConverter.h
"
31
32
33
//____________________________________________________________________
34
class
SimHitHandle_ForwardHit::Imp
{
35
public
:
36
Imp
(
const
SimulationHit
*
h
) :
thehit
(
h
){}
37
const
SimulationHit
*
thehit
;
38
};
39
40
41
//____________________________________________________________________
42
SimHitHandle_ForwardHit::SimHitHandle_ForwardHit
(
const
SimulationHit
*
h
)
43
:
SimHitHandleBase
(), m_d(
new
Imp
(
h
))
44
{
45
if
(!
h
)
46
VP1Msg::message
(
"SimHitHandle_ForwardHit constructor ERROR: Received null hit pointer"
);
47
48
m_link
=
HepMcParticleLink
(
m_d
->
thehit
->
trackID
(), 0,
HepMcParticleLink::IS_POSITION
,
HepMcParticleLink::IS_BARCODE
);
// FIXME barcode-based
49
}
50
51
//____________________________________________________________________
52
SimHitHandle_ForwardHit::~SimHitHandle_ForwardHit
()
53
{
54
delete
m_d
;
55
}
56
57
//Trk::GlobalMomentum SimHitHandle_ForwardHit::momentumDirection() const
58
Amg::Vector3D
SimHitHandle_ForwardHit::momentumDirection
()
const
59
{
60
return
Amg::Hep3VectorToEigen
(
m_d
->
thehit
->
pre
().
direction
);
61
}
62
63
double
SimHitHandle_ForwardHit::actualMomentum
()
const
64
{
65
return
m_d
->
thehit
->
pre
().
momentum
.mag();
66
}
67
//____________________________________________________________________
68
Amg::Vector3D
SimHitHandle_ForwardHit::posStart
()
const
69
{
70
return
Amg::Hep3VectorToEigen
(
m_d
->
thehit
->
pre
().
position
);
71
}
72
73
//____________________________________________________________________
74
Amg::Vector3D
SimHitHandle_ForwardHit::posEnd
()
const
75
{
76
return
Amg::Hep3VectorToEigen
(
m_d
->
thehit
->
post
().
position
);
77
}
78
79
//____________________________________________________________________
80
double
SimHitHandle_ForwardHit::hitTime
()
const
81
{
82
return
m_d
->
thehit
->
pre
().
time
;
83
}
84
85
//____________________________________________________________________
86
const
HepMcParticleLink
&
SimHitHandle_ForwardHit::particleLink
()
const
87
{
88
return
m_link
;
89
}
90
91
//____________________________________________________________________
92
int
SimHitHandle_ForwardHit::actualPDGCodeFromSimHit
()
const
93
{
94
return
m_d
->
thehit
->
particleEncoding
();
95
}
96
97
//____________________________________________________________________
98
Trk::TrackParameters
*
SimHitHandle_ForwardHit::createTrackParameters
()
const
99
{
100
101
// const Trk::StraightLineSurface * surf = new Trk::StraightLineSurface(new HepGeom::Translate3D(0,0,0));
102
Amg::Transform3D
transf =
Amg::CLHEPTranslate3DToEigen
( HepGeom::Translate3D(0,0,0) );
103
const
Trk::StraightLineSurface
* surf =
new
Trk::StraightLineSurface
( transf );
104
105
106
if
(!surf) {
107
VP1Msg::message
(
"SimHitHandle_ForwardHit::createTrackParameters ERROR: could not get Trk::StraightLineSurface"
);
108
return
nullptr
;
109
}
110
111
double
c
;
112
if
( !
hasCharge
() ) {
113
bool
ok;
114
c
=
VP1ParticleData::particleCharge
(
m_d
->
thehit
->
particleEncoding
(),ok);
115
if
(!ok) {
116
VP1Msg::message
(
"SimHitHandle_ForwardHit::createTrackParameters ERROR: Could not find particle charge (pdg="
117
+
QString::number
(
m_d
->
thehit
->
particleEncoding
())+
"). Assuming charge=+1."
);
118
c
= +1.0;
119
}
else
{
120
if
(
VP1Msg::verbose
())
121
VP1Msg::messageVerbose
(
"Looked up particle charge for trt simhit with pdg code "
+
VP1Msg::str
(
m_d
->
thehit
->
particleEncoding
())+
": "
+
VP1Msg::str
(
c
));
122
}
123
const_cast<
SimHitHandle_ForwardHit
*
>
(
this
)->
setCharge
(
c
);
124
}
else
{
125
c
=
charge
();
126
}
127
return
new
Trk::AtaStraightLine
(
posStart
(),
momentumDirection
(),
c
,*surf);
128
//Fixme: Use constructor with local coords instead?:
129
}
PixelID.h
This is an Identifier helper class for the Pixel subdetector. This class is a factory for creating co...
SimHitHandle_ForwardHit::actualPDGCodeFromSimHit
int actualPDGCodeFromSimHit() const
Definition:
SimHitHandle_ForwardHit.cxx:92
SCT_ID.h
This is an Identifier helper class for the SCT subdetector. This class is a factory for creating comp...
StraightLineSurface.h
SimHitHandle_ForwardHit::m_link
HepMcParticleLink m_link
Definition:
SimHitHandle_ForwardHit.h:45
TrackParameters.h
Surface.h
HepMcParticleLink::IS_BARCODE
@ IS_BARCODE
Definition:
HepMcParticleLink.h:85
SimHitHandle_ForwardHit::particleLink
const HepMcParticleLink & particleLink() const
Definition:
SimHitHandle_ForwardHit.cxx:86
VP1Msg.h
CSV_InDetExporter.new
new
Definition:
CSV_InDetExporter.py:145
SimHitHandle_ForwardHit::actualMomentum
double actualMomentum() const
Definition:
SimHitHandle_ForwardHit.cxx:63
VP1ParticleData.h
SimHitHandle_ForwardHit.h
SimHitHandle_ForwardHit::posStart
Amg::Vector3D posStart() const
Definition:
SimHitHandle_ForwardHit.cxx:68
SimulationHit::StepPoint::time
double time
Definition:
SimulationHit.h:23
VP1String::str
static QString str(const QString &s)
Definition:
VP1String.h:49
SimulationHit
Definition:
SimulationHit.h:11
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
VP1TrackSanity.h
SimulationHit::pre
const StepPoint & pre() const
Definition:
SimulationHit.h:30
Trk::AtaStraightLine
ParametersT< TrackParametersDim, Charged, StraightLineSurface > AtaStraightLine
Definition:
Tracking/TrkEvent/TrkParameters/TrkParameters/TrackParameters.h:35
VP1DetInfo.h
GeoPrimitives.h
HepMcParticleLink
a link optimized in size for a GenParticle in a McEventCollection
Definition:
HepMcParticleLink.h:72
SimHitHandleBase::setCharge
void setCharge(const double &c)
Definition:
SimHitHandleBase.h:57
HepMcParticleLink::IS_POSITION
@ IS_POSITION
Definition:
HepMcParticleLink.h:80
SimHitHandle_ForwardHit::hitTime
double hitTime() const
Definition:
SimHitHandle_ForwardHit.cxx:80
Amg::Transform3D
Eigen::Affine3d Transform3D
Definition:
GeoPrimitives.h:46
SimHitHandle_ForwardHit::Imp::thehit
const SimulationHit * thehit
Definition:
SimHitHandle_ForwardHit.cxx:37
VP1ParticleData::particleCharge
static double particleCharge(const int &pdgcode, bool &ok)
Definition:
VP1ParticleData.cxx:103
SimulationHit::StepPoint::position
CLHEP::Hep3Vector position
Definition:
SimulationHit.h:24
Trk::ParametersBase
Definition:
ParametersBase.h:55
SimHitHandle_ForwardHit::~SimHitHandle_ForwardHit
virtual ~SimHitHandle_ForwardHit()
Definition:
SimHitHandle_ForwardHit.cxx:52
SimHitHandle_ForwardHit::momentumDirection
Amg::Vector3D momentumDirection() const
Definition:
SimHitHandle_ForwardHit.cxx:58
SimHitHandle_ForwardHit::Imp
Definition:
SimHitHandle_ForwardHit.cxx:34
CLHEPtoEigenConverter.h
SimulationHit::trackID
int trackID() const
Definition:
SimulationHit.h:34
SimHitHandle_ForwardHit
Definition:
SimHitHandle_ForwardHit.h:23
python.selection.number
number
Definition:
selection.py:20
VP1Msg::messageVerbose
static void messageVerbose(const QString &)
Definition:
VP1Msg.cxx:84
SimulationHit::particleEncoding
int particleEncoding() const
Definition:
SimulationHit.h:33
Amg::Vector3D
Eigen::Matrix< double, 3, 1 > Vector3D
Definition:
GeoPrimitives.h:47
SimulationHit::post
const StepPoint & post() const
Definition:
SimulationHit.h:31
SimHitHandle_ForwardHit::Imp::Imp
Imp(const SimulationHit *h)
Definition:
SimHitHandle_ForwardHit.cxx:36
SimHitHandle_ForwardHit::m_d
Imp * m_d
Definition:
SimHitHandle_ForwardHit.h:43
SimHitHandle_ForwardHit::posEnd
Amg::Vector3D posEnd() const
Definition:
SimHitHandle_ForwardHit.cxx:74
Amg::CLHEPTranslate3DToEigen
Amg::Transform3D CLHEPTranslate3DToEigen(const HepGeom::Translate3D &CLHEPtranslate3D)
Converts a CLHEP-based HepGeom::Translate3 into an Eigen-based Amg::Transform3D.
Definition:
CLHEPtoEigenConverter.h:99
SimHitHandle_ForwardHit::createTrackParameters
Trk::TrackParameters * createTrackParameters() const
Definition:
SimHitHandle_ForwardHit.cxx:98
h
SimHitHandle_ForwardHit::SimHitHandle_ForwardHit
SimHitHandle_ForwardHit(const SimulationHit *)
Definition:
SimHitHandle_ForwardHit.cxx:42
VP1Msg::message
static void message(const QString &, IVP1System *sys=0)
Definition:
VP1Msg.cxx:30
SimHitHandleBase::hasCharge
bool hasCharge() const
Definition:
SimHitHandleBase.h:50
SimHitHandleBase
Definition:
SimHitHandleBase.h:32
SimHitHandleBase::charge
double charge() const
Definition:
SimHitHandleBase.h:51
VP1Msg::verbose
static bool verbose()
Definition:
VP1Msg.h:31
SimulationHit.h
python.compressB64.c
def c
Definition:
compressB64.py:93
SimulationHit::StepPoint::direction
CLHEP::Hep3Vector direction
Definition:
SimulationHit.h:26
SimulationHit::StepPoint::momentum
CLHEP::Hep3Vector momentum
Definition:
SimulationHit.h:27
Trk::StraightLineSurface
Definition:
StraightLineSurface.h:51
Generated on Sun Dec 22 2024 21:18:10 for ATLAS Offline Software by
1.8.18