40 using shapeParam = std::vector<Double_t>;
41 using diskBoxCuts = std::vector<shapeParam>;
46 TGeoVolumeAssembly*
create(Int_t kHalf, Int_t disk);
49 void initParameters();
50 TGeoVolumeAssembly* mHalfDisk;
51 TGeoMedium* mSupportMedium;
53 Double_t mSupThickness;
59 Double_t mRaisedBoxHeight;
60 Double_t mFixBoxHeight;
61 Double_t mOuterCut[5];
64 std::vector<shapeParam> mDiskBoxCuts[5];
65 std::vector<shapeParam> mDiskRaisedBoxes[5];
66 std::vector<shapeParam> mDiskFixBoxes[5];
68 Int_t mNumberOfVoids[5];
69 Double_t (*mVoidVert[5])[4][2];
71 Int_t mNumberOfM2Holes[5];
72 Double_t (*mM2Holes[5])[2];
77 Int_t mNumberOfD2_hHoles[5];
78 Double_t (*mD2_hHoles[5])[2];
80 Double_t mHeight_D2_h;
83 Double_t (*mD65Holes[5])[2];
88 Double_t (*mD6Holes[5])[2];
92 Int_t mNumberOfD8_Holes[5];
94 Double_t (*mD8Holes[5])[2];
98 Double_t (*mD3Holes[5])[2];
101 Int_t mNumberOfM3Holes[5];
103 Double_t (*mM3Holes[5])[2];
107 Double_t (*mD45Holes[5])[2];
112 Double_t (*mD2Holes[5])[2];
129 TGeoCompositeShape* localCS =
nullptr;
131 TGeoTranslation* localTranslation;
133 for (
auto par : elements) {
136 localshape =
new SHAPE(par[0], par[1], par[2],
nullptr);
137 localTranslation =
new TGeoTranslation(par[3], par[4], par[5]);
141 localCS =
new TGeoCompositeShape(
nullptr,
compositeOperation(base, localshape, localTranslation, std::forward<OP>(
op)));
143 localCS =
new TGeoCompositeShape(
nullptr,
compositeOperation(localCS, localshape, localTranslation, std::forward<OP>(
op)));