- //
- // Create the geometry of the pads
- // *** DEFINITION OF THE GEOMETRY OF THE PMD ***
- // *** DIFFERENT PADS WITH SIZES 8 MM, 10 MM, 12 MM AND 15 MM SQUARE
- // -- Author : Y.P. VIYOGI, 04/06/1997.
- // -- Modified: P.V.K.S.Baba(JU), 13-12-97.
-
- AliMC* pMC = AliMC::GetMC();
-
- Int_t npad1, npad2, npad3, npad4;
- Float_t spad1[3], spad2[3], spad3[3], spad4[3];
- Float_t scpv1[3], scpv2[3], scpv3[3], scpv4[3];
- Int_t i, j;
- Float_t sstr1[3], spsw1[3], sstr2[3], spsw2[3], sstr3[3], spsw3[3],
- sstr4[3], spsw4[3];
- Float_t xa, ya, za, xb, yb, zb, xc, sw[3], yc, zc;
- Float_t sfe[3];
- Float_t spb[3], pad1, pad2, pad3, pad4;
- // VOLUMES Names : begining with D for all PMD volumes,
- // DMO1 : MODULE TYPE 1 ( 8 MM PADS)
- // DM11 : MODULE TYPE 2 (10 MM PADS)
- // DM12 : MODULE TYPE 3 (12 MM PADS)
- // DM13 : MODULE TYPE 4 (15 MM PADS)
-
- // The names of SIZE variables begin with S and have more meaningful
- // characters as shown below.
-
- // VOLUME SIZE MEDIUM : REMARKS
- // ------ ----- ------ : ---------------------------
-
- // DPPB SPB PB : PB Converter and its SIZE
- // DPFE SFE FE : FE Support Plate and its SIZE
-
- // DP11 SPAD2 GAS : PAD TYPE 2 (10 MM)
- // DP12 SPAD2 GAS : PAD TYPE 2 FOR CPV(10 MM)
- // DS11 SSTR2 FE : STRIP OF IRON
- // DW11 SPSW2 G10 : PRESHOWER
- // DV11 SCPV2 G10 : CPV
-
- // DP13 SPAD3 GAS : PAD TYPE 3 (12 MM)
- // DP14 SPAD3 GAS : PAD TYPE 3 FOR CPV(12 MM)
- // DS12 SSTR3 FE : STRIP OF IRON
- // DW12 SPSW3 G10 : PRESHOWER
- // DV12 SCPV3 G10 : CPV
-
- // DP15 SPAD4 GAS : PAD TYPE 4 (15 MM)
- // DP16 SPAD4 GAS : PAD TYPE 4 FOR CPV(15 MM)
- // DS13 SSTR4 FE : STRIP OF IRON
- // DW13 SPSW4 G10 : PRESHOWER
- // DV13 SCPV4 G10 : CPV
-
- // ****************** VOLUME TREE ******************
-
- // DM11 (Module)
- // |
- // |
- // -------------------------------------------------
- // | | | |
- // | | | |
- // DV11( CPV) DPFE DPPB DW11(Preshower)
- // | |
- // | |
- // DS12(Strip) DS11(Strip)
- // | |
- // | |
- // DP12(Pads) DP11(Pads)
-
- // ************************************************************
-
- // --- The above gives the Volume Tree. PAD is a gas cell of size
- // --- given by PADSIZE in the input cards. STRIP is a collection of
- //--- PADs in a row. STRIPs are positioned in the PRESHOWER BOX. This is
- //--- then placed in the MODULE. The PSW and the MODULE have the same size
- // --- ; Lead converter, Iron support plate are also placed
- // --- in the MODULE.
-
-
- // DATA PAD1,PAD2,PAD3,PAD4/4*0.8/
- // DATA NPAD1,NPAD2,NPAD3,NPAD4/4*30/
-
- Int_t *idtmed = gAlice->Idtmed();
-
- // **** PAD SIZE 8 MM
- // pmdin = fPar[0];
- // pmdout = fPar[1];
- thgas = fPar[2];
- thcell = fPar[3];
- thmin = fIn[0];
- thmax = fIn[1];
- zdist = fIn[2];
- thlow = fIn[3];
- thhigh = fIn[4];
- // wafer = fGeo[0];
- edge = fGeo[1];
- numqu = Int_t(fGeo[2]);
-
-
- // *BABA
- pad1 = fPadSize[0];
- pad2 = fPadSize[1];
- pad3 = fPadSize[2];
- pad4 = fPadSize[3];
- npad1 = Int_t(24/fPadSize[0]);
- npad2 = Int_t(24/fPadSize[1]);
- npad3 = Int_t(24/fPadSize[2]);
- npad4 = Int_t(24/fPadSize[3]);
- // *BABA
- spad1[0] = (pad1 - thcell) / 2.;
- spad1[1] = spad1[0];
- spad1[2] = thgas / 2;
- pMC->Gsvolu("DP21", "BOX ", idtmed[604], spad1, 3);
- pMC->Gsatt("DP21", "SEEN", 1);
- pMC->Gsvolu("DP22", "BOX ", idtmed[604], spad1, 3);
- pMC->Gsatt("DP22", "SEEN", 1);
-
- sstr1[0] = npad1*pad1/2;
- sstr1[1] = pad1/2;
- sstr1[2] = thgas/2;
- pMC->Gsvolu("DS21", "BOX ", idtmed[605], sstr1, 3);
- pMC->Gsatt("DS21", "SEEN", 1);
- pMC->Gsvolu("DS22", "BOX ", idtmed[605], sstr1, 3);
- pMC->Gsatt("DS22", "SEEN", 1);
-
- spsw1[0] = sstr1[0] + edge;
- spsw1[1] = spsw1[0];
- spsw1[2] = (thgas + .4) / 2;
- // 2 mm G10 Plate cover (NMATE = 808)
- scpv1[0] = spsw1[0];
- scpv1[1] = spsw1[1];
- scpv1[2] = spsw1[2];
- pMC->Gsvolu("DW21", "BOX ", idtmed[607], spsw1, 3);
- pMC->Gsatt("DW21", "SEEN", 1);
- pMC->Gsvolu("DV21", "BOX ", idtmed[607], spsw1, 3);
- pMC->Gsatt("DV21", "SEEN", 1);
-
- // --- place pads in a strip
- xa = (-npad1 + 1.) * pad1 / 2.;
- ya = 0.;
- za = 0.;
- for (i = 1; i <= npad1; ++i) {
- pMC->Gsposp("DP21", i, "DS21", xa, ya, za, 0, "ONLY", spad1, 3);
- pMC->Gsposp("DP22", i, "DS22", xa, ya, za, 0, "ONLY", spad1, 3);
- xa += pad1;
- }
- // --- place strips in the PRESHOWER AND CPV boxes
- xb = 0.;
- yb = (-npad1 + 1.) * pad1 / 2.;
- zb = 0.;
- for (j = 1; j <= npad1; ++j) {
- pMC->Gsposp("DS21", j, "DW21", xb, yb, zb, 0, "ONLY", sstr1, 3);
- pMC->Gsposp("DS22", j, "DV21", xb, yb, zb, 0, "ONLY", sstr1, 3);
- yb += pad1;
- }
-
- // **** PAD SIZE 10 MM
-
- spad2[0] = (pad2 - thcell) / 2.;
- spad2[1] = spad2[0];
- spad2[2] = thgas / 2;
- pMC->Gsvolu("DP11", "BOX ", idtmed[604], spad2, 3);
- pMC->Gsatt("DP11", "SEEN", 1);
- pMC->Gsvolu("DP12", "BOX ", idtmed[604], spad2, 3);
- pMC->Gsatt("DP12", "SEEN", 1);
-
- sstr2[0] = npad2 * pad2 / 2;
- sstr2[1] = pad2 / 2;
- sstr2[2] = thgas / 2;
- pMC->Gsvolu("DS11", "BOX ", idtmed[605], sstr2, 3);
- pMC->Gsatt("DS11", "SEEN", 1);
- pMC->Gsvolu("DS12", "BOX ", idtmed[605], sstr2, 3);
- pMC->Gsatt("DS12", "SEEN", 1);
-
- spsw2[0] = sstr2[0] + edge;
- spsw2[1] = spsw2[0];
- spsw2[2] = (thgas + .4) / 2;
- // 2 mm G10 Plate cover (NMATE = 808)
- scpv2[0] = spsw2[0];
- scpv2[1] = spsw2[1];
- scpv2[2] = spsw2[2];
- pMC->Gsvolu("DW11","BOX ", idtmed[607], spsw2, 3);
- pMC->Gsatt("DW11", "SEEN", 1);
- pMC->Gsvolu("DV11","BOX ", idtmed[607], spsw2, 3);
- pMC->Gsatt("DV11", "SEEN", 1);
-
- // --- place pads in a strip
- xa = (-npad2 + 1.) * pad2 / 2.;
- ya = 0.;
- za = 0.;
- for (i = 1; i <= npad2; ++i) {
- pMC->Gsposp("DP11", i, "DS11", xa, ya, za, 0, "ONLY", spad2, 3);
- pMC->Gsposp("DP12", i, "DS12", xa, ya, za, 0, "ONLY", spad2, 3);
- xa += pad2;
- }
- // --- place strips in the PRESHOWER AND CPV boxes
- xb = 0.;
- yb = (-npad2 + 1.) * pad2 / 2.;
- zb = 0.;
- for (j = 1; j <= npad2; ++j) {
- pMC->Gsposp("DS11", j, "DW11", xb, yb, zb, 0, "ONLY", sstr2, 3);
- pMC->Gsposp("DS12", j, "DV11", xb, yb, zb, 0, "ONLY", sstr2, 3);
- yb += pad2;
- }
-
- // **** PAD SIZE 12 MM
-
- spad3[0] = (pad3 - thcell) / 2.;
- spad3[1] = spad3[0];
- spad3[2] = thgas / 2;
- pMC->Gsvolu("DP13", "BOX ", idtmed[604], spad3, 3);
- pMC->Gsatt("DP13", "SEEN", 1);
- pMC->Gsvolu("DP14", "BOX ", idtmed[604], spad3, 3);
- pMC->Gsatt("DP14", "SEEN", 1);
-
- sstr3[0] = npad3 * pad3 / 2;
- sstr3[1] = pad3 / 2;
- sstr3[2] = thgas / 2;
- pMC->Gsvolu("DS13", "BOX ", idtmed[605], sstr3, 3);
- pMC->Gsatt("DS13", "SEEN", 1);
- pMC->Gsvolu("DS14", "BOX ", idtmed[605], sstr3, 3);
- pMC->Gsatt("DS14", "SEEN", 1);
-
- spsw3[0] = sstr3[0] + edge;
- spsw3[1] = spsw3[0];
- spsw3[2] = (thgas + .4) / 2;
- // 2 mm G10 Plate cover (NMATE = 808)
- scpv3[0] = spsw3[0];
- scpv3[1] = spsw3[1];
- scpv3[2] = spsw3[2];
- pMC->Gsvolu("DW12","BOX ", idtmed[607], spsw3, 3);
- pMC->Gsatt("DW12", "SEEN", 1);
- pMC->Gsvolu("DV12","BOX ", idtmed[607], spsw3, 3);
- pMC->Gsatt("DV12", "SEEN", 1);
-
- // --- place pads in a strip
- xa = (-npad3 + 1.) * pad3 / 2.;
- ya = 0.;
- za = 0.;
- for (i = 1; i <= npad3; ++i) {
- pMC->Gsposp("DP13", i, "DS13", xa, ya, za, 0, "ONLY", spad3, 3);
- pMC->Gsposp("DP14", i, "DS14", xa, ya, za, 0, "ONLY", spad3, 3);
- xa += pad3;
- }
- // --- place strips in the PRESHOWER AND CPV boxes
- xb = 0.;
- yb = (-npad3 + 1.) * pad3 / 2.;
- zb = 0.;
- for (j = 1; j <= npad3; ++j) {
- pMC->Gsposp("DS13", j, "DW12", xb, yb, zb, 0, "ONLY", sstr3, 3);
- pMC->Gsposp("DS14", j, "DV12", xb, yb, zb, 0, "ONLY", sstr3, 3);
- yb += pad3;
- }
-
- // **** PAD SIZE 15 MM
-
- spad4[0] = (pad4 - thcell) / 2.;
- spad4[1] = spad4[0];
- spad4[2] = thgas / 2;
- pMC->Gsvolu("DP15","BOX ", idtmed[604], spad4, 3);
- pMC->Gsatt("DP15", "SEEN", 1);
- pMC->Gsvolu("DP16","BOX ", idtmed[604], spad4, 3);
- pMC->Gsatt("DP16", "SEEN", 1);
-
- sstr4[0] = npad4 * pad4 / 2;
- sstr4[1] = pad4 / 2;
- sstr4[2] = thgas / 2;
- pMC->Gsvolu("DS15","BOX ", idtmed[605], sstr4, 3);
- pMC->Gsatt("DS15", "SEEN", 1);
- pMC->Gsvolu("DS16","BOX ", idtmed[605], sstr4, 3);
- pMC->Gsatt("DS16", "SEEN", 1);
-
- spsw4[0] = sstr4[0] + edge;
- spsw4[1] = spsw4[0];
- spsw4[2] = (thgas + .4) / 2;
- // 2 mm G10 Plate cover (NMATE = 808)
- scpv4[0] = spsw4[0];
- scpv4[1] = spsw4[1];
- scpv4[2] = spsw4[2];
- pMC->Gsvolu("DW13","BOX ", idtmed[607], spsw4, 3);
- pMC->Gsatt("DW13", "SEEN", 1);
- pMC->Gsvolu("DV13","BOX ", idtmed[607], spsw4, 3);
- pMC->Gsatt("DV13", "SEEN", 1);
-
- // --- place pads in a strip
- xa = (-npad4 + 1.) * pad4 / 2.;
- ya = 0.;
- za = 0.;
- for (i = 1; i <= npad4; ++i) {
- pMC->Gsposp("DP15", i, "DS15", xa, ya, za, 0, "ONLY", spad4, 3);
- pMC->Gsposp("DP16", i, "DS16", xa, ya, za, 0, "ONLY", spad4, 3);
- xa += pad4;
- }
- // --- place strips in the PRESHOWER AND CPV boxes
- xb = 0.;
- yb = (-npad4 + 1.) * pad4 / 2.;
- zb = 0.;
- for (j = 1; j <= npad4; ++j) {
- pMC->Gsposp("DS15", j, "DW13", xb, yb, zb, 0, "ONLY", sstr4, 3);
- pMC->Gsposp("DS16", j, "DV13", xb, yb, zb, 0, "ONLY", sstr4, 3);
- yb += pad4;
- }
-
-
- // --- DEFINE MODULES, IRON, TUNGSTEN AND LEAD VOLUMES
-
-
- spb[0] = spsw1[0];
- spb[1] = spsw1[1];
- spb[2] = .75;
- pMC->Gsvolu("DPPB","BOX ", idtmed[600], spb, 3);
- pMC->Gsatt("DPPB", "SEEN", 1);
-
- sw[0] = spsw1[0];
- sw[1] = spsw1[1];
- sw[2] = 0.9/2.;
- pMC->Gsvolu("DPW ","BOX ", idtmed[600], sw, 3);
- pMC->Gsatt("DPW ", "SEEN", 1);
-
- sfe[0] = spsw1[0];
- sfe[1] = spsw1[1];
- sfe[2] = 0.6/2.;
- pMC->Gsvolu("DPFE","BOX ", idtmed[605], sfe, 3);
- pMC->Gsatt("DPFE", "SEEN", 1);
-
- smod1[0] = spsw1[0];
- smod1[1] = smod1[0];
- // SMOD1(3)=SPSW1(3)+SFE(3)+SW (3)+SCPV1(3)
- smod1[2] = spsw1[2] + sfe[2] + spb[2] + scpv1[2];
- pMC->Gsvolu("DM21", "BOX ", idtmed[698], smod1, 3);
-
- smod2[0] = spsw2[0];
- smod2[1] = smod2[0];
- smod2[2] = spsw2[2] + sfe[2] + spb[2] + scpv2[2];
- pMC->Gsvolu("DM11", "BOX ", idtmed[698], smod2, 3);
-
- smod3[0] = spsw3[0];
- smod3[1] = smod3[0];
- smod3[2] = spsw3[2] + sfe[2] + spb[2] + scpv3[2];
- pMC->Gsvolu("DM12", "BOX ", idtmed[698], smod3, 3);
-
- smod4[0] = spsw4[0];
- smod4[1] = smod4[0];
- smod4[2] = spsw4[2] + sfe[2] + spb[2] + scpv4[2];
- pMC->Gsvolu("DM13", "BOX ", idtmed[698], smod4, 3);
-
- // **** MODULE TYPE 1 : ALWAYS WITH TUNSGTEN CONVERTER
-
- // *** try with PB once 8.6.97
-
- // --- place gas box (as CPV), iron support, lead converter and gas box
- // --- (preshower) in the module
- xc = 0.;
- yc = 0.;
- // --- First the CPV box
- zc = -(spsw1[2] + sfe[2] + spb[2] + spsw1[2]) + spsw1[2];
- pMC->Gspos("DV21", 1, "DM21", xc, yc, zc, 0, "ONLY");
- // --- Then iron support plate
- zc = zc + sfe[2] + spsw1[2];
- pMC->Gspos("DPFE", 1, "DM21", xc, yc, zc, 0, "ONLY");
- // --- Then converter plate
- zc = zc + sfe[2] + spb[2];
- pMC->Gspos("DPPB", 1, "DM21", xc, yc, zc, 0, "ONLY");
- // --- Lastly the preshower box
- zc = zc + spb[2] + spsw1[2];
- pMC->Gspos("DW21", 1, "DM21", xc, yc, zc, 0, "ONLY");
-
- // **** MODULE TYPE 2
-
- // --- place gas box (as CPV), iron support, lead converter and gas box
- // --- (preshower) in the module
- xc = 0.;
- yc = 0.;
- // --- First the CPV box
- zc = -(spsw2[2] + sfe[2] + spb[2] + spsw2[2]) + spsw2[2];
- pMC->Gspos("DV11", 1, "DM11", xc, yc, zc, 0, "ONLY");
- // --- Then iron support plate
- zc = zc + sfe[2] + spsw2[2];
- pMC->Gspos("DPFE", 1, "DM11", xc, yc, zc, 0, "ONLY");
- // --- Then lead converter plate
- zc = zc + sfe[2] + spb[2];
- pMC->Gspos("DPPB", 1, "DM11", xc, yc, zc, 0, "ONLY");
- // --- Lastly the preshower box
- zc = zc + spb[2] + spsw2[2];
- pMC->Gspos("DW11", 1, "DM11", xc, yc, zc, 0, "ONLY");
-
-
- // **** MODULE TYPE 3
-
- // --- place gas box (as CPV), iron support, lead converter and gas box
- // --- (preshower) in the module
- xc = 0.;
- yc = 0.;
- // --- First the CPV box
- zc = -(spsw3[2] + sfe[2] + spb[2] + spsw3[2]) + spsw3[2];
- pMC->Gspos("DV12", 1, "DM12", xc, yc, zc, 0, "ONLY");
- // --- Then iron support plate
- zc = zc + sfe[2] + spsw3[2];
- pMC->Gspos("DPFE", 1, "DM12", xc, yc, zc, 0, "ONLY");
- // --- Then lead converter plate
- zc = zc + sfe[2] + spb[2];
- pMC->Gspos("DPPB", 1, "DM12", xc, yc, zc, 0, "ONLY");
- // --- Lastly the preshower box
- zc = zc + spb[2] + spsw3[2];
- pMC->Gspos("DW12", 1, "DM12", xc, yc, zc, 0, "ONLY");
-