42 double mZ,
int layerNumber,
int direction,
double Rin,
43 double Rout,
double overlap,
const std::string&
face,
44 const std::string& layout_type, TGeoVolume* motherVolume);
47 double mZ,
int layerNumber,
int direction,
double Rin,
49 TGeoVolume* motherVolume);
52 static void create_layout(
53 double mZ,
int layerNumber,
int direction,
double Rin,
54 double Rout,
double overlap,
const std::string&
face,
55 const std::string& layout_type, TGeoVolume* motherVolume);
57 void create_layout_staveGeo(
58 double mZ,
int layerNumber,
int direction,
double Rin,
60 TGeoVolume* motherVolume);
64 void build_staves_exact(
65 TGeoVolume* motherVolume,
int layerNumber,
int direction,
67 const std::array<std::array<double, 3>, 4>& staveTriangles,
68 double z_offset_to_carbon_face,
69 std::vector<PosNegPositionTypes>& y_positionsPosNeg,
70 unsigned& staveVolumeCount);
72 void build_staves_greedy(
73 TGeoVolume* motherVolume,
int layerNumber,
int direction,
double Rin,
double Rout,
75 const std::array<std::array<double, 3>, 4>& staveTriangles,
76 double z_offset_to_carbon_face,
77 std::vector<PosNegPositionTypes>& y_positionsPosNeg,
unsigned& staveVolumeCount);
80 void add_stave_volumes(
81 TGeoVolume* motherVolume,
int layerNumber,
int direction,
83 const std::array<std::array<double, 3>, 4>& staveTriangles,
84 double z_offset_to_carbon_face, std::pair<double, double>& absAllowedYRange,
85 double y_midpoint,
bool mirrorStaveAroundX,
unsigned* staveVolumeCount);
90 void addEndOfStaveCard(
91 TGeoVolume* motherVolume,
const std::string&
name,
int direction,
92 unsigned volume_count,
double x_mid,
double y_tip,
double z_sensor,
93 bool isML,
double cuThickness);
96 void fill_stave_greedy(
99 std::pair<double, double>& absAllowedYRange);
101 PositionTypes fill_stave_exact(
const std::vector<Constants::StaveFill>& fills);
104 TGeoVolume* motherVolume, std::string volumeName,
int direction,
105 unsigned* volume_count,
double staveLength,
106 std::array<std::array<double, 3>, 4> staveTriangles,
107 std::pair<double, double>& absAllowedYRange,
108 double x_mid,
double y_mid,
double z_stave_shift_forward);
109 void addDetectorVolume(
110 TGeoVolume* motherVolume, std::string volumeName,
int color, TGeoMedium* med,
111 unsigned volume_count,
double x_mid,
double y_mid,
double z_mid,
112 double x_half_length,
double y_half_length,
double z_half_length,
double rotX = 0);
114 void add2x1GlueVolume(
115 TGeoVolume* motherVolume,
int layerNumber,
int direction,
unsigned stave_idx,
116 unsigned volume_count,
double x_mid,
double y_mid,
double z_mid,
117 std::string element_glued_to);
119 void add2x1CopperVolume(
120 TGeoVolume* motherVolume,
int layerNumber,
int direction,
unsigned stave_idx,
121 unsigned volume_count,
double x_mid,
double y_mid,
double z_mid);
123 void add2x1KaptonVolume(
124 TGeoVolume* motherVolume,
int layerNumber,
int direction,
unsigned stave_idx,
125 unsigned volume_count,
double x_mid,
double y_mid,
double z_mid);
127 void addSingleSensorVolume(
128 TGeoVolume* motherVolume,
int layerNumber,
int direction,
unsigned stave_idx,
129 unsigned volume_count,
double active_x_mid,
double y_mid,
double z_mid,
bool isLeft);
void createModule_staveGeo(double mZ, int layerNumber, int direction, double Rin, double Rout, double z_offset_local, const Constants::StaveConfig &staveConfig, TGeoVolume *motherVolume)
static void createModule(double mZ, int layerNumber, int direction, double Rin, double Rout, double overlap, const std::string &face, const std::string &layout_type, TGeoVolume *motherVolume)