Analysis Software
Documentation for sPHENIX simulation software
 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 
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 
20 
21  public:
22  AlignmentTransformation() = default;
23 
25 
26  void createMap(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);
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 
128 
129  Acts::Transform3 newMakeTransform(Surface surf, Eigen::Vector3d& millepedeTranslation, Eigen::Vector3d& sensorAngles, bool survey);
130 
134 
135  int getNodes(PHCompositeNode* topNode);
136 
137 };
138 
139 #endif