- const Float_t kConst1 = .293;
- const Float_t kConst2 = .707;
-
- // Local variables
- Int_t j, nwave;
- Float_t dcone1[5], dcone2[5], dcone3[5], dcone4[5], dcone5[5],
- dcone6[5], dcone7[5], dcone8[5];
- Float_t xc, yc, zc, dundul[3];
- Int_t *idtmed = fIdtmed->GetArray()-1999;
-
- // Function Body
-
- dcone1[0] = kConst1 * pitch / 2;
- dcone1[1] = rundul;
- dcone1[2] = dcone1[1] + thick;
- dcone1[3] = dcone1[1] + kConst2 * pitch;
- dcone1[4] = dcone1[3] + thick;
-
- dcone2[0] = kConst2 * pitch / 2;
- dcone2[1] = dcone1[3];
- dcone2[2] = dcone1[4];
- dcone2[3] = dcone2[1] + kConst1 * pitch;
- dcone2[4] = dcone2[3] + thick;
-
- dcone3[0] = dcone2[0];
- dcone3[1] = dcone2[3];
- dcone3[2] = dcone2[4];
- dcone3[3] = dcone2[1];
- dcone3[4] = dcone2[2];
-
- dcone4[0] = dcone1[0];
- dcone4[1] = dcone1[3];
- dcone4[2] = dcone1[4];
- dcone4[3] = dcone1[1];
- dcone4[4] = dcone1[2];
-
- dcone5[0] = dcone1[0];
- dcone5[1] = dcone1[1] - thick;
- dcone5[2] = dcone1[1];
- dcone5[3] = dcone5[1] - kConst2 * pitch;
- dcone5[4] = dcone5[3] + thick;
-
- dcone6[0] = dcone2[0];
- dcone6[1] = dcone5[3];
- dcone6[2] = dcone5[4];
- dcone6[3] = dcone6[1] - kConst1 * pitch;
- dcone6[4] = dcone6[3] + thick;
- dcone7[0] = dcone6[0];
- dcone7[1] = dcone6[3];
- dcone7[2] = dcone6[4];
- dcone7[3] = dcone5[3];
- dcone7[4] = dcone5[4];
-
- dcone8[0] = dcone5[0];
- dcone8[1] = dcone7[3];
- dcone8[2] = dcone7[4];
- dcone8[3] = dcone5[1];
- dcone8[4] = dcone5[2];
-
- gMC->Gsvolu(cone[0], "CONE", idtmed[2018], dcone1, 5);
- gMC->Gsvolu(cone[1], "CONE", idtmed[2018], dcone2, 5);
- gMC->Gsvolu(cone[2], "CONE", idtmed[2018], dcone3, 5);
- gMC->Gsvolu(cone[3], "CONE", idtmed[2018], dcone4, 5);
- gMC->Gsvolu(cone[4], "CONE", idtmed[2018], dcone5, 5);
- gMC->Gsvolu(cone[5], "CONE", idtmed[2018], dcone6, 5);
- gMC->Gsvolu(cone[6], "CONE", idtmed[2018], dcone7, 5);
- gMC->Gsvolu(cone[7], "CONE", idtmed[2018], dcone8, 5);
- gMC->Gsatt(cone[0], "SEEN", 0);
- gMC->Gsatt(cone[1], "SEEN", 0);
- gMC->Gsatt(cone[2], "SEEN", 0);
- gMC->Gsatt(cone[3], "SEEN", 0);
- gMC->Gsatt(cone[4], "SEEN", 0);
- gMC->Gsatt(cone[5], "SEEN", 0);
- gMC->Gsatt(cone[6], "SEEN", 0);
- gMC->Gsatt(cone[7], "SEEN", 0);
-
- // DEFINE AN IMAGINARY TUBE VOLUME FOR UNDULATED CHAMBER, FILL WITH VACUUM
-
- nwave = Int_t (zundul / (pitch * 2) + .1);
- dundul[2] = pitch * 2 * nwave;
- dundul[1] = rundul + pitch + thick * 2;
- //
- dundul[0] = 2.9;
- gMC->Gsvolu(undul, "TUBE", idtmed[2015], dundul, 3);
-
- xc = 0;
- yc = 0;
- zc = -dundul[2] + dcone1[0];
- for (j = 1; j <= nwave; ++j) {
- gMC->Gspos(cone[0], j, undul, xc, yc, zc, 0, "ONLY");
- zc = zc + dcone1[0] + dcone2[0];
- gMC->Gspos(cone[1], j, undul, xc, yc, zc, 0, "ONLY");
- zc = zc + dcone2[0] + dcone3[0];
- gMC->Gspos(cone[2], j, undul, xc, yc, zc, 0, "ONLY");
- zc = zc + dcone3[0] + dcone4[0];
- gMC->Gspos(cone[3], j, undul, xc, yc, zc, 0, "ONLY");
- zc = zc + dcone4[0] + dcone5[0];
- gMC->Gspos(cone[4], j, undul, xc, yc, zc, 0, "ONLY");
- zc = zc + dcone5[0] + dcone6[0];
- gMC->Gspos(cone[5], j, undul, xc, yc, zc, 0, "ONLY");
- zc = zc + dcone6[0] + dcone7[0];
- gMC->Gspos(cone[6], j, undul, xc, yc, zc, 0, "ONLY");
- zc = zc + dcone7[0] + dcone8[0];
- gMC->Gspos(cone[7], j, undul, xc, yc, zc, 0, "ONLY");
- zc = zc + dcone8[0] + dcone1[0];
- }