EIC Software
Reference for
EIC
simulation and reconstruction software on GitHub
Home page
Related Pages
Modules
Namespaces
Classes
Files
External Links
File List
File Members
EIC Software
Deprecated List
Modules
Namespaces
Classes
Files
File List
acts
BeastMagneticField
delphes_EIC
Doxygen_Assist
east
eic-smear
EicRoot
blob
master
base
cbmbase
cbmdata
dbase
eic
ayk
base
cad
calorimetry
detectors
event
field
htc
htree
infrastructure
jana
proto
tracking
EicIdealTrackingCode.cxx
EicIdealTrackingCode.h
EicRecoKalmanTask.cxx
EicRecoKalmanTask.h
EicTrackingDigiHit.cxx
EicTrackingDigiHit.h
EicTrackingDigiHitProducer.cxx
EicTrackingDigiHitProducer.h
EicTrackingRecoHit.cxx
EicTrackingRecoHit.h
trackingLinkDef.h
eventdisplay
examples
fairtools
field
gconfig
geane
genfit
GenfitTools
geobase
geometry
input
littrack
parbase
passive
pCDR-2018
pid
pnddata
PndTools
rich
trackbase
eicsmear-jetexample
eicsmeardetectors
EicToyModel
estarlight
Fun4All-lmon
fun4all_coresoftware
fun4all_eic_qa
fun4all_eic_tutorials
fun4all_eicdetectors
fun4all_eicmacros
fun4all_g4jleic
fun4all_GenFit
fun4all_macros
fun4all_tutorials
g4exampledetector
g4lblvtx
online_distribution
PEPSI
doxygen_mainpage.h
File Members
External Links
•
All
Classes
Namespaces
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Friends
Macros
Groups
Pages
EicTrackingRecoHit.cxx
Go to the documentation of this file.
Or view
the newest version in sPHENIX GitHub for file EicTrackingRecoHit.cxx
1
//
2
// AYK (ayk@bnl.gov), 2013/06/12
3
//
4
// Tracking reco hit and GenFit interface classes;
5
//
6
7
#include <assert.h>
8
9
#include <
GeaneTrackRep.h
>
10
11
#include "
EicTrackingRecoHit.h
"
12
13
// Move to a better place later;
14
#define _SQR_(arg) ((arg)*(arg))
15
16
// -----------------------------------------------------------------------------------------------
17
18
TMatrixT<double>
EicTrackingRecoHit::getHMatrix
(
const
GFAbsTrackRep
* stateVector)
19
{
20
// Deal with Geane representation for now;
21
if
(dynamic_cast<const GeaneTrackRep*>(stateVector) != NULL) {
22
// Do it better later once implement 1D X- and Y-silicon detectors;
23
assert(
GetMdim
() == 2);
24
25
TMatrixT<double> HMatrix(
GetMdim
(), 5);
26
27
// Reset all elements;
28
for
(
unsigned
ip
=0;
ip
<
GetMdim
();
ip
++)
29
for
(
unsigned
iq=0; iq<5; iq++)
30
HMatrix[
ip
][iq] = 0.0;
31
32
// Set only slope coefficients (?);
33
for
(
unsigned
ip
=0;
ip
<
GetMdim
();
ip
++)
34
HMatrix[
ip
][
ip
+3] = 1.0;
35
36
return
HMatrix;
37
}
38
else
{
39
std::cerr <<
"For now can only handle state"
40
<<
" vectors of type GeaneTrackRep only -> abort"
41
<< std::endl;
42
throw
;
43
}
//if
44
}
// EicTrackingRecoHit::getHMatrix()
45
46
// -----------------------------------------------------------------------------------------------
47
48
//
49
// FIXME: may want to optimize some of the actions here (check basis
50
// vector lookup availability, etc);
51
//
52
53
const
LogicalVolumeLookupTableEntry
*
EicTrackingRecoHit::GetLookupTableNode
(
EicTrackingDigiHit
* hit,
void
*ptr)
54
{
55
EicGeoParData
*gPtr = (
EicGeoParData
*)ptr;
56
ULogicalIndex_t
id
= gPtr->
GeantMultiToLogicalIndex
(hit->
GetMultiIndex
());
57
58
return
gPtr->
GetLookupTableNode
(
id
);
59
}
// EicTrackingRecoHit::GetLookupTableNode()
60
61
// -----------------------------------------------------------------------------------------------
62
63
EicPlanarRecoHit::EicPlanarRecoHit
(
EicTrackingDigiHit
* hit,
void
*ptr) :
64
GFRecoHitIfc
<
GFPlanarHitPolicy
>(hit->GetMdim()), mDim(hit->GetMdim())
65
{
66
const
LogicalVolumeLookupTableEntry
*node =
GetLookupTableNode
(hit, ptr);
67
68
// Reset hit coordinates to 0.0 and assign local (diagonal) covariance matrix;
69
// see virtual plane definition below (global[] enters there!);
70
TVector3 local = hit->
GetLocalCoordinates
();
71
72
// fHitCoord[][] & fHitCov[][] are not inherited from EicTrackingRecoHit, so perhaps
73
// do not want to try to unify this code between EicPlanarRecoHit & EicSpaceRecoHit;
74
for
(
int
iq=0; iq<hit->
GetMdim
(); iq++) {
75
fHitCoord
[iq][0 ] = 0.0;
76
77
//fHitCov [iq][iq] = _SQR_(hit->GetSigma(iq));
78
fHitCov
[iq][iq] = hit->
GetCovariance
(iq,iq);
79
}
//for iq
80
81
if
(hit->
mXYmode
) {
82
TVector3 uu(1,0,0), vv(0,1,0);
83
fPolicy
.
setDetPlane
(
GFDetPlane
(
LocalToMaster
(node->
mGeoMtx
, local),
84
LocalToMasterVect
(node->
mGeoMtx
, uu),
85
LocalToMasterVect
(node->
mGeoMtx
, vv)));
86
}
else
{
87
//assert(0);
88
// NB: should be in sync with EicKfNodeTemplateCartesian2D::SmearLocalCoord();
89
TVector3 uu = TVector3(local.Y(),-local.X(),0).Unit(), vv(0,0,1);
90
fPolicy
.
setDetPlane
(
GFDetPlane
(
LocalToMaster
(node->
mGeoMtx
, local),
91
LocalToMasterVect
(node->
mGeoMtx
, uu),
92
LocalToMasterVect
(node->
mGeoMtx
, vv)));
93
}
//if
94
}
// EicPlanarRecoHit::EicPlanarRecoHit()
95
96
// -----------------------------------------------------------------------------------------------
97
98
//
99
// FIXME: move cov.matrix to MARS; for now assume that TPC is aligned along Z axis
100
// -> no rotation needed here; -> CHECK!!!
101
//
102
103
EicSpaceRecoHit::EicSpaceRecoHit
(
EicTrackingDigiHit
* hit,
void
*ptr) :
104
GFRecoHitIfc
<
GFSpacepointHitPolicy
>(3)
105
{
106
const
LogicalVolumeLookupTableEntry
*node =
GetLookupTableNode
(hit, ptr);
107
108
// Reset hit coordinates to 0.0 and assign local (diagonal) covariance matrix;
109
// see virtual plane definition below (global[] enters there!);
110
TVector3 local = hit->
GetLocalCoordinates
();
111
TVector3 global =
LocalToMaster
(node->
mGeoMtx
, local);
112
113
double
buffer
[3][3];
114
for
(
int
ip
=0;
ip
<hit->
GetMdim
();
ip
++)
115
for
(
int
iq=0; iq<hit->
GetMdim
(); iq++)
116
buffer[
ip
][iq] = hit->
GetCovariance
(
ip
,iq);
117
TGeoRotation grr;
118
grr.SetMatrix((
double
*)buffer);
119
120
TGeoRotation www = *node->
mGeoMtx
* grr * node->
mGeoMtx
->Inverse();
121
//TGeoRotation www = node->mGeoMtx->Inverse() * grr * *node->mGeoMtx;
122
123
for
(
int
ip
=0;
ip
<hit->
GetMdim
();
ip
++) {
124
fHitCoord
[
ip
][0 ] = global[
ip
];
125
126
for
(
int
iq=0; iq<hit->
GetMdim
(); iq++)
127
//@@@ earlier version (buggy: no conversion to MARS) fHitCov[ip][iq] = hit->GetCovariance(ip,iq);
128
fHitCov
[
ip
][iq] = www.GetRotationMatrix()[
ip
*3+iq];
129
}
//for ip
130
}
// EicSpaceRecoHit::EicSpaceRecoHit()
131
132
// -----------------------------------------------------------------------------------------------
133
134
ClassImp
(
EicSpaceRecoHit
)
135
ClassImp
(
EicPlanarRecoHit
)
EicRoot
blob
master
eic
tracking
EicTrackingRecoHit.cxx
Built by
Jin Huang
. updated:
Mon Jan 22 2024 12:43:35
using
1.8.2 with
EIC GitHub integration