9 #ifndef TRKEXUNITTESTS_EXTRAPOLATIONENGINETEST_H
10 #define TRKEXUNITTESTS_EXTRAPOLATIONENGINETEST_H
13 #include "GaudiKernel/ServiceHandle.h"
14 #include "GaudiKernel/ToolHandle.h"
30 class IExtrapolationEngine;
31 class IPositionMomentumWriter;
44 using TrkExUnitTestBase::TrkExUnitTestBase;
66 ToolHandle<IExtrapolationEngine> m_extrapolationEngine{
67 this,
"ExtrapolationEngine",
""};
73 BooleanProperty m_useHGTD{
this,
"UseHGTD",
false};
75 BooleanProperty m_parametersMode{
this,
"ParametersMode", 1,
76 "0 - neutral, 1 - charged, 2 - multi"};
77 IntegerProperty m_particleHypothesis{
this,
"ParticleHypothesis", 2};
79 BooleanProperty m_smearProductionVertex{
this,
"SmearOrigin",
false};
80 BooleanProperty m_smearFlatOriginT{
this,
"SmearFlatOriginD0",
false};
81 BooleanProperty m_smearFlatOriginZ{
this,
"SmearFlatOriginZ0",
false};
82 DoubleProperty m_sigmaOriginT{
this,
"SimgaOriginD0", 0.};
83 DoubleProperty m_sigmaOriginZ{
this,
"SimgaOriginZ0", 0.};
84 DoubleProperty m_d0Min{
this,
"D0Min", 0.};
85 DoubleProperty m_d0Max{
this,
"D0Max", 0.};
86 DoubleProperty m_z0Min{
this,
"Z0Min", 0.};
87 DoubleProperty m_z0Max{
this,
"Z0Max", 0.};
89 DoubleProperty m_etaMin{
this,
"EtaMin", -3.};
90 DoubleProperty m_etaMax{
this,
"EtaMax", 3.};
91 DoubleProperty m_phiMin{
this,
"PhiMin", -
M_PI};
92 DoubleProperty m_phiMax{
this,
"PhiMax",
M_PI};
93 DoubleProperty m_ptMin{
this,
"PtMin", 100.};
94 DoubleProperty m_ptMax{
this,
"PtMax", 100000.};
96 DoubleProperty m_pathLimit{
this,
"PathLimit", 10e10};
98 BooleanProperty m_collectSensitive{
this,
"CollectSensitive",
false};
99 BooleanProperty m_collectPassive{
this,
"CollectPassive",
false};
100 BooleanProperty m_collectBoundary{
this,
"CollectBoundary",
false};
101 BooleanProperty m_collectMaterial{
this,
"CollectMaterial",
false};
103 BooleanProperty m_backExtrapolation{
this,
"BackExtrapolation",
false};
104 BooleanProperty m_stepwiseExtrapolation{
this,
"StepwiseExtrapolation",
false};
107 IntegerProperty m_stepsPhi{
this,
"PhiSteps", 1};
108 int m_currentPhiStep = 0;
109 FloatArrayProperty m_etaScans{
this,
"EtaScans", {}};
110 double m_currentEta = 0.;
111 FloatArrayProperty m_phiScans{
this,
"PhiScans", {}};
112 double m_currentPhi = 0.;
113 BooleanProperty m_splitCharge{
this,
"SplitCharge",
false};
115 BooleanProperty m_writeTTree{
this,
"WriteTTree",
true};
116 ToolHandle<IPositionMomentumWriter> m_posmomWriter{
117 this,
"PositionMomentumWriter",
""};
119 StringProperty m_treeName{
this,
"TreeName",
"ExtrapolationEngineTest"};
120 StringProperty m_treeFolder{
this,
"TreeFolder",
"/val/"};
121 StringProperty m_treeDescription{
this,
"TreeDescription",
122 "ExtrapolationEngine test setup"};
123 TTree* m_tree =
nullptr;
126 float m_startPositionX = 0.0F;
127 float m_startPositionY = 0.0F;
128 float m_startPositionZ = 0.0F;
129 float m_startPositionR = 0.0F;
130 float m_startPhi = 0.0F;
131 float m_startTheta = 0.0F;
132 float m_startEta = 0.0F;
133 float m_startP = 0.0F;
134 float m_startPt = 0.0F;
135 float m_charge = -1.;
137 int m_endSuccessful = 0;
138 float m_endPositionX = 0.0F;
139 float m_endPositionY = 0.0F;
140 float m_endPositionZ = 0.0F;
141 float m_endPositionR = 0.0F;
142 float m_endPhi = 0.0F;
143 float m_endTheta = 0.0F;
144 float m_endEta = 0.0F;
146 float m_endPt = 0.0F;
147 float m_endPathLength = 0.0F;
149 int m_backSuccessful = 0;
150 float m_backPositionX = 0.0F;
151 float m_backPositionY = 0.0F;
152 float m_backPositionZ = 0.0F;
153 float m_backPositionR = 0.0F;
154 float m_backPhi = 0.;
155 float m_backTheta = 0.;
156 float m_backEta = 0.;
165 std::vector< std::vector< float >* >
m_pPhi;
167 std::vector< std::vector< float >* >
m_pEta;
168 std::vector< std::vector< float >* >
m_pP;
169 std::vector< std::vector< float >* >
m_pPt;
171 std::vector< int >* m_sensitiveSurfaceType =
nullptr;
172 std::vector< int >* m_sensitiveLayerIndex =
nullptr;
173 std::vector< float >* m_sensitiveLocalPosX =
nullptr;
174 std::vector< float >* m_sensitiveLocalPosY =
nullptr;
175 std::vector< float >* m_sensitiveCenterPosX =
nullptr;
176 std::vector< float >* m_sensitiveCenterPosY =
nullptr;
177 std::vector< float >* m_sensitiveCenterPosZ =
nullptr;
178 std::vector< float >* m_sensitiveCenterPosR =
nullptr;
179 std::vector< float >* m_sensitiveCenterPosPhi =
nullptr;
180 std::vector< float >* m_sensitiveLocalPosR =
nullptr;
181 std::vector< float >* m_sensitiveLocalPosPhi =
nullptr;
182 std::vector< int >* m_sensitiveDetector =
nullptr;
183 std::vector< int >* m_sensitiveIsInnermost =
nullptr;
184 std::vector< int >* m_sensitiveIsNextToInnermost =
nullptr;
185 std::vector< int >* m_sensitiveBarrelEndcap =
nullptr;
186 std::vector< int >* m_sensitiveLayerDisc =
nullptr;
187 std::vector< int >* m_sensitiveEtaModule =
nullptr;
188 std::vector< int >* m_sensitivePhiModule =
nullptr;
189 std::vector< int >* m_sensitiveSide =
nullptr;
190 std::vector< int >* m_sensitiveNearBondGap =
nullptr;
191 std::vector< int >* m_sensitiveisInside =
nullptr;
192 std::vector< int >* m_sensitiveisInsideBound =
nullptr;
193 std::vector< float >* m_materialtInX0AccumulatedUpTo =
nullptr;
195 float m_materialThicknessInX0 = 0.;
196 float m_materialThicknessInL0 = 0.;
197 float m_materialThicknessZARho = 0.;
198 float m_materialEmulatedIonizationLoss = 0.;
200 float m_materialThicknessInX0Bwd = 0.;
201 float m_materialThicknessInL0Bwd = 0.;
203 float m_materialThicknessInX0Sensitive = 0.;
204 float m_materialThicknessInX0Passive = 0.;
205 float m_materialThicknessInX0Boundary = 0.;
207 float m_materialThicknessInX0Cylinder = 0.;
208 float m_materialThicknessInX0Disc = 0.;
209 float m_materialThicknessInX0Plane = 0.;
211 std::vector< float >* m_materialThicknessInX0Accumulated =
nullptr;
212 std::vector< float >* m_materialThicknessInX0Steps =
nullptr;
213 std::vector< float >* m_materialThicknessInL0Steps =
nullptr;
214 std::vector< float >* m_materialPositionX =
nullptr;
215 std::vector< float >* m_materialPositionY =
nullptr;
216 std::vector< float >* m_materialPositionZ =
nullptr;
217 std::vector< float >* m_materialPositionR =
nullptr;
218 std::vector< float >* m_materialPositionP =
nullptr;
219 std::vector< float >* m_materialPositionPt =
nullptr;
220 std::vector< float >* m_materialScaling =
nullptr;
221 std::vector< int >* m_stepDirection =
nullptr;
223 int m_endStepSuccessful = 0;
224 float m_endStepPositionX = 0.;
225 float m_endStepPositionY = 0.;
226 float m_endStepPositionZ = 0.;
227 float m_endStepPositionR = 0.;
228 float m_endStepPhi = 0.;
229 float m_endStepTheta = 0.;
230 float m_endStepEta = 0.;
231 float m_endStepP = 0.;
232 float m_endStepPt = 0.;
233 float m_endStepPathLength = 0.;
234 float m_endStepThicknessInX0 = 0.;