- for (i = 1; i <= npad2; ++i) {
- number = i+(j-1)*npad2;
- gMC->Gsposp("DS11", number, "DW11", xb, yb, zb, ihrotm, "ONLY", hexd1, 10);
- xb += (hexd1[6]*2.);
- }
- xrow = xrow+1;
- yb += (hexd1[6]*sqrt(3.));
- }
- Float_t z_ss,z_air1,z_air2,z_gas;
-// Place other components inside super module
- z_ss=-dpara_sm[2]+dpara_ss[2];
- gMC->Gspos("SMSS", 1, "SUPR", 0., 0., z_ss, 0, "ONLY");
- z_air1=z_ss+dpara_ss[2] +dpara_air[2];
- gMC->Gspos("SMAR", 1, "SUPR", 0., 0., z_air1, 0, "ONLY");
- z_gas=z_air1+dpara_air[2]+dpara[2]+0.1;
- gMC->Gspos("DW11", 1, "SUPR", 0., 0., z_gas, 0, "ONLY");
- z_air2=z_gas+dpara[2]+0.1+dpara_air[2];
- gMC->Gspos("SMAR", 2, "SUPR", 0., 0., z_air2, 0, "ONLY");
-
-// --- DEFINE MODules, iron, and lead voLUMES
-
-
-// volume for SUPERMODULE
-// Pb
- Float_t dpara_pb[6] = {12.5,12.5,8.,30.,0.,0.};
- dpara_pb[0]=dpara_sm[0];
- dpara_pb[1]=dpara_sm[1];
-// dpara_pb[2]=1.1/2.;
- dpara_pb[2]=1.5/2.;
- gMC->Gsvolu("SUPB","PARA", idtmed[600], dpara_pb, 6);
- gMC->Gsatt("SUPB", "SEEN", 1);
-// Fe
- Float_t dpara_fe[6] = {12.5,12.5,8.,30.,0.,0.};
- dpara_fe[0]=dpara_sm[0];
- dpara_fe[1]=dpara_sm[1];
- dpara_fe[2]=0.5/2.;
- gMC->Gsvolu("SUFE","PARA", idtmed[601], dpara_fe, 6);
- gMC->Gsatt("SUFE", "SEEN", 1);
-// volume for DM11
- Float_t dpara_dm11[6] = {12.5,12.5,0.8,30.,0.,0.};
- dpara_dm11[0]=dpara_sm[0]+.01;
- dpara_dm11[1] = dpara_dm11[0] *root3_cons;
- dpara_dm11[2]= 6.2/2.;
-
-//
- gMC->Gsvolu("DM11","PARA", idtmed[698], dpara_dm11, 6);
- gMC->Gsatt("DM11", "SEEN", 1);
-// position super module inside DM11
- Float_t z_ps,z_pb,z_fe,z_cv;
- z_ps=-dpara_dm11[2]+dpara_sm[2];
- gMC->Gspos("SUPR", 1, "DM11", 0., 0., z_ps, irotdm, "ONLY");
- z_pb=z_ps+dpara_sm[2]+dpara_pb[2];
- gMC->Gspos("SUPB", 1, "DM11", 0., 0., z_pb, 0, "ONLY");
- z_fe=z_pb+dpara_pb[2]+dpara_fe[2];
- gMC->Gspos("SUFE", 1, "DM11", 0., 0., z_fe, 0, "ONLY");
- z_cv=z_fe+dpara_fe[2]+dpara_sm[2];
- gMC->Gspos("SUPR", 2, "DM11", 0., 0., z_cv, 0, "ONLY");
-//
+ // Place hexagonal cells ECCU placed inside EST2
+ yb = 0.;
+ zb = 0.;
+ xb = -(dbox2[0]) + fgkCellRadius;
+ for (i = 1; i <= fgkNcolUM2; ++i)
+ {
+ number = i;
+ gMC->Gspos("ECCU", number, "EST2", xb,yb,zb, ihrotm, "ONLY");
+ xb += (fgkCellRadius*2.);
+ }
+
+ // 2 types of rectangular shaped unit modules EUM1 and EUM2 (defined by BOX)
+
+ // Create EUM1
+
+ Float_t dbox3[3];
+ dbox3[0] = dbox1[0]+fgkCellRadius/2.;
+ dbox3[1] = (dbox1[1]*fgkNrowUM1)-(fgkCellRadius*fgkSqroot3*(fgkNrowUM1-1)/6.);
+ dbox3[2] = fgkCellDepth/2.;
+
+ gMC->Gsvolu("EUM1","BOX", idtmed[698], dbox3, 3);
+ gMC->Gsatt("EUM1", "SEEN", 1);
+
+ // Place rectangular strips EST1 inside EUM1 unit module
+
+ yb = -dbox3[1]+dbox1[1];
+ for (j = 1; j <= fgkNrowUM1; ++j)
+ {
+ if(j%2 == 0)
+ {
+ xb = fgkCellRadius/2.0;
+ }
+ else
+ {
+ xb = -fgkCellRadius/2.0;
+ }
+ number = j;
+ gMC->Gspos("EST1",number, "EUM1", xb, yb , 0. , 0, "MANY");
+ yb = (-dbox3[1]+dbox1[1])+j*1.0*fgkCellRadius*fgkSqroot3;
+ }
+
+ // Create EUM2
+
+ Float_t dbox4[3];
+ dbox4[0] = dbox2[0] + fgkCellRadius/2.;
+ dbox4[1] =(dbox2[1]*fgkNrowUM2)-(fgkCellRadius*fgkSqroot3*(fgkNrowUM2-1)/6.);
+ dbox4[2] = dbox3[2];
+
+ gMC->Gsvolu("EUM2","BOX", idtmed[698], dbox4, 3);
+ gMC->Gsatt("EUM2", "SEEN", 1);
+
+ // Place rectangular strips EST2 inside EUM2 unit module
+
+ yb = -dbox4[1]+dbox2[1];
+ for (j = 1; j <= fgkNrowUM2; ++j)
+ {
+ if(j%2 == 0)
+ {
+ xb = fgkCellRadius/2.0;
+ }
+ else
+ {
+ xb = -fgkCellRadius/2.0;
+ }
+ number = j;
+ gMC->Gspos("EST2",number, "EUM2", xb, yb , 0. , 0, "MANY");
+ yb = (-dbox4[1]+dbox2[1])+j*1.0*fgkCellRadius*fgkSqroot3;
+ }
+
+ // 2 types of Rectangular shaped supermodules (BOX)
+ //each with 6 unit modules
+
+ // volume for SUPERMODULE ESMA
+ //Space added to provide a gapping for HV between UM's
+
+ Float_t dboxSM1[3];
+ dboxSM1[0] = 3.0*dbox3[0]+(2.0*0.025);
+ dboxSM1[1] = 2.0*dbox3[1]+0.025;
+ dboxSM1[2] = fgkCellDepth/2.;
+
+ gMC->Gsvolu("ESMA","BOX", idtmed[698], dboxSM1, 3);
+ gMC->Gsatt("ESMA", "SEEN", 1);
+
+ //Position the 6 unit modules in EMSA
+ Float_t xa1,xa2,xa3,ya1,ya2;
+ xa1 = -dboxSM1[0] + dbox3[0];
+ xa2 = 0.;
+ xa3 = dboxSM1[0] - dbox3[0];
+ ya1 = dboxSM1[1] - dbox3[1];
+ ya2 = -dboxSM1[1] + dbox3[1];
+
+ gMC->Gspos("EUM1", 1, "ESMA", xa1, ya1, 0., 0, "ONLY");
+ gMC->Gspos("EUM1", 2, "ESMA", xa2, ya1, 0., 0, "ONLY");
+ gMC->Gspos("EUM1", 3, "ESMA", xa3, ya1, 0., 0, "ONLY");
+ gMC->Gspos("EUM1", 4, "ESMA", xa1, ya2, 0., 0, "ONLY");
+ gMC->Gspos("EUM1", 5, "ESMA", xa2, ya2, 0., 0, "ONLY");
+ gMC->Gspos("EUM1", 6, "ESMA", xa3, ya2, 0., 0, "ONLY");
+
+
+ // volume for SUPERMODULE ESMB
+ //Space is added to provide a gapping for HV between UM's
+ Float_t dboxSM2[3];
+ dboxSM2[0] = 2.0*dbox4[0]+0.025;
+ dboxSM2[1] = 3.0*dbox4[1]+(2.0*0.025);
+ dboxSM2[2] = fgkCellDepth/2.;
+
+ gMC->Gsvolu("ESMB","BOX", idtmed[698], dboxSM2, 3);
+ gMC->Gsatt("ESMB", "SEEN", 1);
+
+ //Position the 6 unit modules in EMSB
+ Float_t xb1,xb2,yb1,yb2,yb3;
+ xb1 = -dboxSM2[0] +dbox4[0];
+ xb2 = dboxSM2[0]-dbox4[0];
+ yb1 = dboxSM2[1]-dbox4[1];
+ yb2 = 0.;
+ yb3 = -dboxSM2[1]+dbox4[1];
+
+ gMC->Gspos("EUM2", 1, "ESMB", xb1, yb1, 0., 0, "ONLY");
+ gMC->Gspos("EUM2", 2, "ESMB", xb2, yb1, 0., 0, "ONLY");
+ gMC->Gspos("EUM2", 3, "ESMB", xb1, yb2, 0., 0, "ONLY");
+ gMC->Gspos("EUM2", 4, "ESMB", xb2, yb2, 0., 0, "ONLY");
+ gMC->Gspos("EUM2", 5, "ESMB", xb1, yb3, 0., 0, "ONLY");
+ gMC->Gspos("EUM2", 6, "ESMB", xb2, yb3, 0., 0, "ONLY");
+
+ // Make a 3mm thick G10 Base plate for ESMA
+ Float_t dboxG1a[3];
+ dboxG1a[0] = dboxSM1[0];
+ dboxG1a[1] = dboxSM1[1];
+ dboxG1a[2] = fgkThBase/2.;
+
+ gMC->Gsvolu("EBPA","BOX", idtmed[607], dboxG1a, 3);
+ gMC->Gsatt("EBPA", "SEEN", 1);
+
+ // Make a 1.6mm thick G10 PCB for ESMA
+ Float_t dboxG2a[3];
+ dboxG2a[0] = dboxSM1[0];
+ dboxG2a[1] = dboxSM1[1];
+ dboxG2a[2] = fgkThPCB/2.;
+
+ gMC->Gsvolu("EPCA","BOX", idtmed[607], dboxG2a, 3);
+ gMC->Gsatt("EPCA", "SEEN", 1);
+
+
+ // Make a Full module EFPA of AIR to place EBPA,
+ // 1mm AIR, EPCA, ESMA,EPCA for PMD
+
+ Float_t dboxAlla[3];
+ dboxAlla[0] = dboxSM1[0];
+ dboxAlla[1] = dboxSM1[1];
+ dboxAlla[2] = (fgkThBase+fgkThAir+fgkThPCB+dboxSM1[2]+fgkThPCB)/2.;
+
+ gMC->Gsvolu("EFPA","BOX", idtmed[698], dboxAlla, 3);
+ gMC->Gsatt("EFPA", "SEEN", 1);
+
+
+ // Make a Full module EFCA of AIR to place EBPA,
+ // 1mm AIR, EPCA, ESMA,EPC for CPV
+ Float_t dboxAlla2[3];
+ dboxAlla2[0] = dboxSM1[0];
+ dboxAlla2[1] = dboxSM1[1];
+ dboxAlla2[2] = (fgkThBase+fgkThAir+fgkThPCB+dboxSM1[2]+fgkThPCB)/2.;
+
+ gMC->Gsvolu("EFCA","BOX", idtmed[698], dboxAlla2, 3);
+ gMC->Gsatt("EFCA", "SEEN", 1);
+
+ // Now place everything in EFPA for PMD
+
+ Float_t zbpa,zpcba1,zpcba2,zsma;
+ zpcba1 = - dboxAlla[2]+fgkThPCB/2.0;
+ gMC->Gspos("EPCA", 1, "EFPA", 0., 0., zpcba1, 0, "ONLY");
+ zsma = zpcba1+dboxSM1[2];
+ gMC->Gspos("ESMA", 1, "EFPA", 0., 0., zsma, 0, "ONLY");
+ zpcba2 = zsma+fgkThPCB/2.0;
+ gMC->Gspos("EPCA", 2, "EFPA", 0., 0., zpcba2, 0, "ONLY");
+ zbpa = zpcba2+fgkThAir+fgkThBase/2.0;
+ gMC->Gspos("EBPA", 1, "EFPA", 0., 0., zbpa, 0, "ONLY");
+
+ // Now place everything in EFCA for CPV
+
+ Float_t zbpa2,zpcba12,zpcba22,zsma2;
+ zbpa2 = - dboxAlla2[2]+fgkThBase/2.0;
+ gMC->Gspos("EBPA", 1, "EFCA", 0., 0., zbpa2, 0, "ONLY");
+ zpcba12 = zbpa2+fgkThAir+fgkThPCB/2.0;
+ gMC->Gspos("EPCA", 1, "EFCA", 0., 0., zpcba12, 0, "ONLY");
+ zsma2 = zpcba12+dboxSM1[2];
+ gMC->Gspos("ESMA", 1, "EFCA", 0., 0., zsma2, 0, "ONLY");
+ zpcba22 = zsma2+fgkThPCB/2.0;
+ gMC->Gspos("EPCA", 2, "EFCA", 0., 0., zpcba22, 0, "ONLY");
+
+
+
+ // Make a 3mm thick G10 Base plate for ESMB
+ Float_t dboxG1b[3];
+ dboxG1b[0] = dboxSM2[0];
+ dboxG1b[1] = dboxSM2[1];
+ dboxG1b[2] = fgkThBase/2.;
+
+ gMC->Gsvolu("EBPB","BOX", idtmed[607], dboxG1b, 3);
+ gMC->Gsatt("EBPB", "SEEN", 1);
+
+ // Make a 1.6mm thick G10 PCB for ESMB
+ Float_t dboxG2b[3];
+ dboxG2b[0] = dboxSM2[0];
+ dboxG2b[1] = dboxSM2[1];
+ dboxG2b[2] = fgkThPCB/2.;
+
+ gMC->Gsvolu("EPCB","BOX", idtmed[607], dboxG2b, 3);
+ gMC->Gsatt("EPCB", "SEEN", 1);
+
+ // Make a Full module EFPB of AIR to place EBPB,
+ //1mm AIR, EPCB, ESMB,EPCB for PMD
+ Float_t dboxAllb[3];
+ dboxAllb[0] = dboxSM2[0];
+ dboxAllb[1] = dboxSM2[1];
+ dboxAllb[2] = (fgkThBase+fgkThAir+fgkThPCB+dboxSM2[2]+fgkThPCB)/2.;
+
+ gMC->Gsvolu("EFPB","BOX", idtmed[698], dboxAllb, 3);
+ gMC->Gsatt("EFPB", "SEEN", 1);
+
+ // Make a Full module EFCB of AIR to place EBPB,
+ //1mm AIR, EPCB, ESMB,EPCB for CPV
+ Float_t dboxAllb2[3];
+ dboxAllb2[0] = dboxSM2[0];
+ dboxAllb2[1] = dboxSM2[1];
+ dboxAllb2[2] = (fgkThBase+fgkThAir+fgkThPCB+dboxSM2[2]+fgkThPCB)/2.;
+
+ gMC->Gsvolu("EFCB","BOX", idtmed[698], dboxAllb2, 3);
+ gMC->Gsatt("EFCB", "SEEN", 1);
+
+
+ // Now place everything in EFPB for PMD
+
+ Float_t zbpb,zpcbb1,zpcbb2,zsmb;
+ zpcbb1 = - dboxAllb[2]+fgkThPCB/2.0;
+ gMC->Gspos("EPCB", 1, "EFPB", 0., 0., zpcbb1, 0, "ONLY");
+ zsmb = zpcbb1+dboxSM2[2];
+ gMC->Gspos("ESMB", 1, "EFPB", 0., 0., zsmb, 0, "ONLY");
+ zpcbb2 = zsmb+fgkThPCB/2.0;
+ gMC->Gspos("EPCB", 2, "EFPB", 0., 0., zpcbb2, 0, "ONLY");
+ zbpb = zpcbb2+fgkThAir+fgkThBase/2.0;
+ gMC->Gspos("EBPB", 1, "EFPB", 0., 0., zbpb, 0, "ONLY");
+
+
+ // Now place everything in EFCB for CPV
+
+ Float_t zbpb2,zpcbb12,zpcbb22,zsmb2;
+ zbpb2 = - dboxAllb2[2]+fgkThBase/2.0;
+ gMC->Gspos("EBPB", 1, "EFCB", 0., 0., zbpb2, 0, "ONLY");
+ zpcbb12 = zbpb2+0.1+fgkThPCB/2.0;
+ gMC->Gspos("EPCB", 1, "EFCB", 0., 0., zpcbb12, 0, "ONLY");
+ zsmb2 = zpcbb12+dboxSM2[2];
+ gMC->Gspos("ESMB", 1, "EFCB", 0., 0., zsmb2, 0, "ONLY");
+ zpcbb22 = zsmb2+fgkThPCB/2.0;
+ gMC->Gspos("EPCB", 2, "EFCB", 0., 0., zpcbb22, 0, "ONLY");
+
+
+ // Master MODULE EMPA of aluminum for PMD
+ fDboxmm1[0] = dboxSM1[0]+fgkBoundary;
+ fDboxmm1[1] = dboxSM1[1]+fgkBoundary;
+ fDboxmm1[2] = dboxAlla[2];
+
+ gMC->Gsvolu("EMPA","BOX", idtmed[603], fDboxmm1, 3);
+ gMC->Gsatt("EMPA", "SEEN", 1);
+
+ // Master MODULE EMCA of aluminum for CPV
+ fDboxmm12[0] = dboxSM1[0]+fgkBoundary;
+ fDboxmm12[1] = dboxSM1[1]+fgkBoundary;
+ fDboxmm12[2] = dboxAlla[2];
+
+ gMC->Gsvolu("EMCA","BOX", idtmed[603], fDboxmm12, 3);
+ gMC->Gsatt("EMCA", "SEEN", 1);
+
+
+ //Position EFMA inside EMMA for PMD and CPV
+ gMC->Gspos("EFPA", 1, "EMPA", 0., 0., 0., 0, "ONLY");
+ gMC->Gspos("EFCA", 1, "EMCA", 0., 0., 0., 0, "ONLY");
+
+
+ // Master MODULE EMPB of aluminum for PMD
+ fDboxmm2[0] = dboxSM2[0]+fgkBoundary;
+ fDboxmm2[1] = dboxSM2[1]+fgkBoundary;
+ fDboxmm2[2] = dboxAllb[2];
+
+ gMC->Gsvolu("EMPB","BOX", idtmed[603], fDboxmm2, 3);
+ gMC->Gsatt("EMPB", "SEEN", 1);
+
+ // Master MODULE EMCB of aluminum for CPV
+ fDboxmm22[0] = dboxSM2[0]+fgkBoundary;
+ fDboxmm22[1] = dboxSM2[1]+fgkBoundary;
+ fDboxmm22[2] = dboxAllb[2];
+
+ gMC->Gsvolu("EMCB","BOX", idtmed[603], fDboxmm22, 3);
+ gMC->Gsatt("EMCB", "SEEN", 1);
+
+ //Position EFMB inside EMMB
+ gMC->Gspos("EFPB", 1, "EMPB", 0., 0., 0., 0, "ONLY");
+ gMC->Gspos("EFCB", 1, "EMCB", 0., 0., 0., 0, "ONLY");