Analysis Software
Documentation for
sPHENIX
simulation software
Home page
Related Pages
Modules
Namespaces
Classes
Files
Examples
External Links
File List
File Members
All
Classes
Namespaces
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Friends
Macros
Groups
Pages
AlignmentTransformation.h
Go to the documentation of this file.
Or view
the newest version in sPHENIX GitHub for file AlignmentTransformation.h
1
#ifndef TRACKBASE_ALIGNMENTTRANSFORMATION_H
2
#define TRACKBASE_ALIGNMENTTRANSFORMATION_H
3
4
#include "
alignmentTransformationContainer.h
"
5
#include "
TrkrDefs.h
"
6
7
#include <Eigen/Dense>
8
#include <Eigen/Geometry>
9
10
#include <map>
11
#include <random>
12
13
14
15
class
PHCompositeNode
;
16
17
class
ActsGeometry
;
18
19
class
AlignmentTransformation
{
20
21
public
:
22
AlignmentTransformation
() =
default
;
23
24
~AlignmentTransformation
(){}
25
26
void
createMap
(
PHCompositeNode
* topNode);
27
void
createAlignmentTransformContainer
(
PHCompositeNode
* topNode);
28
29
void
generateRandomPerturbations
(Eigen::Vector3d angleDev, Eigen::Vector3d transformDev);
30
31
bool
perturbMVTX
=
false
;
32
bool
perturbINTT
=
false
;
33
bool
perturbTPC
=
false
;
34
bool
perturbMM
=
false
;
35
36
Eigen::Vector3d
perturbationAngles
= Eigen::Vector3d(0.0,0.0,0.0);
37
Eigen::Vector3d
perturbationTranslation
= Eigen::Vector3d(0.0,0.0,0.0);
38
39
void
setMVTXParams
(
double
mvtxDevs[6])
40
{
41
mvtxAngleDev
(0) = mvtxDevs[0];
42
mvtxAngleDev
(1) = mvtxDevs[1];
43
mvtxAngleDev
(2) = mvtxDevs[2];
44
mvtxTransDev
(0) = mvtxDevs[3];
45
mvtxTransDev
(1) = mvtxDevs[4];
46
mvtxTransDev
(2) = mvtxDevs[5];
47
48
perturbMVTX
=
true
;
49
50
if
(
localVerbosity
)
51
{
52
std::cout <<
"perturbMVTX: "
<<
perturbMVTX
<<
" MVTX Angle Std Dev: "
<<
mvtxAngleDev
<<
"MVTX Trans Std Dev:"
<<
mvtxTransDev
<< std::endl;
53
}
54
}
55
56
void
setINTTParams
(
double
inttDevs[6])
57
{
58
inttAngleDev
(0) = inttDevs[0];
59
inttAngleDev
(1) = inttDevs[1];
60
inttAngleDev
(2) = inttDevs[2];
61
inttTransDev
(0) = inttDevs[3];
62
inttTransDev
(1) = inttDevs[4];
63
inttTransDev
(2) = inttDevs[5];
64
65
perturbINTT
=
true
;
66
67
if
(
localVerbosity
)
68
{
69
std::cout <<
"perturbINTT: "
<<
perturbINTT
<<
" INTT Angle Std Dev: "
<<
inttAngleDev
<<
"INTT Trans Std Dev:"
<<
inttTransDev
<< std::endl;
70
}
71
}
72
void
setTPCParams
(
double
tpcDevs[6])
73
{
74
tpcAngleDev
(0) = tpcDevs[0];
75
tpcAngleDev
(1) = tpcDevs[1];
76
tpcAngleDev
(2) = tpcDevs[2];
77
tpcTransDev
(0) = tpcDevs[3];
78
tpcTransDev
(1) = tpcDevs[4];
79
tpcTransDev
(2) = tpcDevs[5];
80
81
perturbTPC
=
true
;
82
83
if
(
localVerbosity
)
84
{
85
std::cout <<
"perturbTPC: "
<<
perturbTPC
<<
" TPC Angle Std Dev: "
<<
tpcAngleDev
<<
"TPC Trans Std Dev:"
<<
tpcTransDev
<< std::endl;
86
}
87
}
88
void
setMMParams
(
double
mmDevs[6])
89
{
90
mmAngleDev
(0) = mmDevs[0];
91
mmAngleDev
(1) = mmDevs[1];
92
mmAngleDev
(2) = mmDevs[2];
93
mmTransDev
(0) = mmDevs[3];
94
mmTransDev
(1) = mmDevs[4];
95
mmTransDev
(2) = mmDevs[5];
96
97
perturbMM
=
true
;
98
99
if
(
localVerbosity
)
100
{
101
std::cout <<
"perturbMM: "
<<
perturbMM
<<
" MM Angle Std Dev: "
<<
mmAngleDev
<<
"MM Trans Std Dev:"
<<
mmTransDev
<< std::endl;
102
}
103
}
104
105
void
verbosity
() {
localVerbosity
= 1;}
106
void
misalignmentFactor
(uint8_t
layer
,
const
double
factor);
107
void
useInttSurveyGeometry
(
bool
sur) {
use_intt_survey_geometry
= sur;}
108
109
private
:
110
111
Eigen::Vector3d
mvtxAngleDev
;
112
Eigen::Vector3d
mvtxTransDev
;
113
Eigen::Vector3d
inttAngleDev
;
114
Eigen::Vector3d
inttTransDev
;
115
Eigen::Vector3d
tpcAngleDev
;
116
Eigen::Vector3d
tpcTransDev
;
117
Eigen::Vector3d
mmAngleDev
;
118
Eigen::Vector3d
mmTransDev
;
119
120
std::default_random_engine
generator
;
121
122
std::string
alignmentParamsFile
=
"./localAlignmentParamsFile.txt"
;
123
124
int
localVerbosity
= 0;
125
126
bool
use_global_millepede_translations
=
true
;
127
bool
use_intt_survey_geometry
=
false
;
128
129
Acts::Transform3
newMakeTransform
(
Surface
surf
, Eigen::Vector3d& millepedeTranslation, Eigen::Vector3d& sensorAngles,
bool
survey);
130
131
alignmentTransformationContainer
*
transformMap
= NULL;
132
alignmentTransformationContainer
*
transformMapTransient
= NULL;
133
ActsGeometry
*
m_tGeometry
= NULL;
134
135
int
getNodes
(
PHCompositeNode
* topNode);
136
137
};
138
139
#endif
coresoftware
blob
master
offline
packages
trackbase
AlignmentTransformation.h
Built by
Jin Huang
. updated:
Sat Feb 17 2024 22:18:08
using
1.8.2 with
sPHENIX GitHub integration