1 #ifndef MACRO_G4TrackingService_C
2 #define MACRO_G4TrackingService_C
11 #include <qa_modules/QAG4SimulationMvtx.h>
29 const double &rad_len_copper,
30 const double &rad_len_aluminum,
31 const double &rad_len_water,
32 const double &rad_len_plastic,
33 const double &rad_len_carbon,
34 const double &rad_len_iron,
35 const double &z_south,
36 const double &z_north,
37 const double &r_south,
38 const double &r_north);
42 const string get_name();
43 const double get_rad_len_copper();
44 const double get_rad_len_aluminum();
45 const double get_rad_len_water();
46 const double get_rad_len_plastic();
47 const double get_rad_len_carbon();
48 const double get_rad_len_iron();
49 const double get_z_south();
50 const double get_z_north();
51 const double get_r_south();
52 const double get_r_north();
56 const double m_rad_len_copper = 0.0;
57 const double m_rad_len_aluminum = 0.0;
58 const double m_rad_len_water = 0.0;
59 const double m_rad_len_plastic = 0.0;
60 const double m_rad_len_carbon = 0.0;
61 const double m_rad_len_iron = 0.0;
62 const double m_z_south = 0.0;
63 const double m_z_north = 0.0;
64 const double m_r_south = 0.0;
65 const double m_r_north = 0.0;
68 const double &rad_len_copper,
69 const double &rad_len_aluminum,
70 const double &rad_len_water,
71 const double &rad_len_plastic,
72 const double &rad_len_carbon,
73 const double &rad_len_iron,
74 const double &z_south,
75 const double &z_north,
76 const double &r_south,
77 const double &r_north)
79 , m_rad_len_copper(rad_len_copper)
80 , m_rad_len_aluminum(rad_len_aluminum)
81 , m_rad_len_water(rad_len_water)
82 , m_rad_len_plastic(rad_len_plastic)
83 , m_rad_len_carbon(rad_len_carbon)
84 , m_rad_len_iron(rad_len_iron)
113 namespace G4TrackingService
117 ,make_pair(
"G4_Al", 8.897)
118 ,make_pair(
"G4_WATER", 36.08)
119 ,make_pair(
"G4_POLYETHYLENE", 50.31)
120 ,make_pair(
"PEEK", 30.00)
121 ,make_pair(
"G4_Fe", 1.757)};
154 double innerRadiusSouth =
object->get_r_south();
155 double innerRadiusNorth =
object->get_r_north();
161 if (thickness[i] == 0)
continue;
164 cone->
SetR1(innerRadiusSouth, innerRadiusSouth + thickness[i]);
165 cone->
SetR2(innerRadiusNorth, innerRadiusNorth + thickness[i]);
174 innerRadiusSouth += thickness[i];
175 innerRadiusNorth += thickness[i];
177 radius =
max(innerRadiusSouth, innerRadiusNorth);
190 double innerRadius =
object->get_r_south();
196 if (thickness[i] == 0)
continue;
209 innerRadius += thickness[i];
211 radius = innerRadius;
218 vector<ServiceProperties *> cylinders, cones;
221 double disk_cone_radii = 50.;
222 double avg_thickness_inner = 1.0;
223 double vtx_support_radius = 9.0;
224 double vtx_e_length = 19.44;
225 double vtx_h_length = 19.44;
226 double sagitta_support_radius = 17.0 + 1.5;
227 double sagitta_support_e_length = 37.7861;
228 double sagitta_support_h_length = 37.7861;
229 double plateau_length = 5.1;
233 double inner_uRwell_radius = 33.12;
234 double gap = 1. * avg_thickness_inner;
235 inner_uRwell_radius -=
gap;
236 double inner_uRwell_e_length = 67.54;
237 double inner_uRwell_h_length = 67.54;
238 double inner_uRwell_length = inner_uRwell_e_length + inner_uRwell_h_length;
240 double e_cone_ends = 110.;
241 double h_cone_ends = 110.;
244 cylinders.push_back(
new ServiceProperties(
"ETrackingCylinderService_1", 9, 0, 0.42, 0.32, shellX0, 0, -400, -310, 270, 0));
245 cones.push_back(
new ServiceProperties(
"ETrackingConeService_1", 9, 0, 0.42, 0.32, shellX0, 0, -310, -300, 270, 68));
246 cylinders.push_back(
new ServiceProperties(
"ETrackingCylinderService_2", 17, 0, 0.56, 0.64, shellX0, 0, -300, -200, 68, 0));
247 cylinders.push_back(
new ServiceProperties(
"ETrackingCylinderService_3", 15, 0, 0.56, 0.56, shellX0, 0, -200, -147.47, 68, 0));
251 double CuThickness = 13.;
252 double AlThickness = 0.;
253 double WaterThickness = 0.70;
254 double PlasticThickness = 0.48;
255 double CarbonThickness = shellX0;
257 double X_X0_percent = 0.1;
260 cones.push_back(
new ServiceProperties(
"ETrackingCone_Disk4TouRwell", CuThickness, AlThickness, WaterThickness, PlasticThickness, CarbonThickness, 0, -147.47, -90, 68, 41.5));
263 cylinders.push_back(
new ServiceProperties(
"ETrackingCyl_uRWellPlateau", CuThickness, AlThickness, WaterThickness, PlasticThickness, CarbonThickness, 0, -90, -56.08, 41.5, 0));
266 cones.push_back(
new ServiceProperties(
"ETrackingCone_uRwellToVertex", CuThickness, AlThickness, WaterThickness, PlasticThickness, CarbonThickness, 0, -56.08, -7.699, 41.5, 5.7));
269 cylinders.push_back(
new ServiceProperties(
"BTrackingCyl_Vertex2", 0, 0, 0, 0, X_X0_percent, 0, -15.3, 15.3, 12.6, 0));
272 cylinders.push_back(
new ServiceProperties(
"BTrackingCyl_Vertex", 0, 0, 0, 0, X_X0_percent, 0, -7.699, 7.699, 5.7, 0));
275 cones.push_back(
new ServiceProperties(
"HTrackingCone_VertexTouRwell", CuThickness, AlThickness, WaterThickness, PlasticThickness, CarbonThickness, 0, 7.699, 56.08, 5.7, 41.5));
278 cylinders.push_back(
new ServiceProperties(
"HTrackingRWellPlateau", CuThickness, AlThickness, WaterThickness, PlasticThickness, CarbonThickness, 0, 56.08, 103.75, 41.5, 0));
281 cones.push_back(
new ServiceProperties(
"HTrackingCone_uRwellToDisk5", CuThickness, AlThickness, WaterThickness, PlasticThickness, CarbonThickness, 0, 103.75, 173, 41.5, 69.2));
284 cones.push_back(
new ServiceProperties(
"HTrackingConeService_7", 13, 0, 0.70, 0.48, shellX0, 0, 173, 173.1, 69.2, 85));
285 cones.push_back(
new ServiceProperties(
"HTrackingConeService_8", 13, 0, 0.70, 0.48, shellX0, 0, 173.1, 195, 85, 100));
287 cylinders.push_back(
new ServiceProperties(
"EEMCalSupport", 0, 0, 0, 0, 0, 171, -200, -197, 62, 0));