+// Mother Volume QBPM
+ ppcon[0] = 0;
+ ppcon[1] = 360;
+ ppcon[2] = 20;
+// 1
+ ppcon[3] = -90.;
+ ppcon[4] = 0.;
+ ppcon[5] = 3.1;
+// 2
+ ppcon[6] = -84.;
+ ppcon[7] = 0.;
+ ppcon[8] = 3.1;
+// 3
+ ppcon[9] = -84.;
+ ppcon[10] = 0.;
+ ppcon[11] = 4.4;
+// 4
+ ppcon[12] = -90+2.*hlenQb24[2]+2.8+2.*hlenQb24[1];
+ ppcon[13] = 0.;
+ ppcon[14] = 4.4;
+// 5
+ ppcon[15] = ppcon[12];
+ ppcon[16] = 0.;
+ ppcon[17] = 4.1;
+// 6
+ ppcon[18] = ppcon[15] + 2.5 + 2.*kdzubA+0.2;
+ ppcon[19] = 0.;
+ ppcon[20] = 4.1;
+// 7
+ ppcon[21] = ppcon[18];
+ ppcon[22] = 0.;
+ ppcon[23] = 3.2;
+// 8
+ ppcon[24] = ppcon[21] + 2.* kdzbbA-0.4;
+ ppcon[25] = 0.;
+ ppcon[26] = 3.2;
+// 9
+ ppcon[27] = ppcon[24];
+ ppcon[28] = 0.;
+ ppcon[29] = 4.1;
+// 10
+ ppcon[30] = -44.;
+ ppcon[31] = 0.;
+ ppcon[32] = 4.1;
+// 11
+ ppcon[33] = -44.;
+ ppcon[34] = 0;
+ ppcon[35] = 3.06;
+// 12
+ ppcon[36] = 38.;
+ ppcon[37] = 0;
+ ppcon[38] = 3.06;
+// 13
+ ppcon[39] = 38.;
+ ppcon[40] = 0;
+ ppcon[41] = 4.1;
+// 14
+ ppcon[42] = hlenQbbe1+2.*hlenQbab-0.1;
+ ppcon[43] = 0.;
+ ppcon[44] = 4.1;
+// 15
+ ppcon[45] = ppcon[42];
+ ppcon[46] = 0.;
+ ppcon[47] = 4.1;
+// 16
+ ppcon[48] = ppcon[45]+2.*hlenQb29-5.;
+ ppcon[49] = 0.;
+ ppcon[50] = 4.1;
+// 17
+ ppcon[51] = ppcon[48];
+ ppcon[52] = 0.;
+ ppcon[53] = 56.;
+// 18
+ ppcon[54] = ppcon[51]+2.*kdzb+10.;
+ ppcon[55] = 0.;
+ ppcon[56] = 56.;
+// 19
+ ppcon[57] = ppcon[54];
+ ppcon[58] = 0.;
+ ppcon[59] = 4.1;
+// 20
+ ppcon[60] = 800.;
+ ppcon[61] = 0.;
+ ppcon[62] = 4.1;
+
+ gMC->Gsvolu("QBPM", "PCON", idtmed[kAir], ppcon,63);
+
+
+//
+// volume definitions of various sections
+//
+
+//
+// The Vacuum
+ gMC->Gsvolu("QBVA","TUBE", idtmed[kVac], ptube, 0);
+ ptube[0] = 0.0;
+ ptube[1] = kRinSt;
+ ptube[2] = (90.-hlenQbbe2)/2.;
+ dz = -90. + ptube[2];
+ gMC->Gsposp ("QBVA", 1, "QBPM", 0., 0., dz , 0, "ONLY", ptube, 3);
+ dz = dz + ptube[2];
+
+ ptube[1] = kRinBe;
+ ptube[2] = hlenQbbe+hlenQbab;
+ dz = dz + ptube[2];
+ gMC->Gsposp ("QBVA", 2, "QBPM", 0., 0., dz , 0, "ONLY", ptube, 3);
+ dz = dz + ptube[2];
+
+ ptube[1] = kRinSt;
+ ptube[2] = (800.-hlenQbbe1-2.*hlenQbab)/2.;
+ dz = dz + ptube[2];
+ gMC->Gsposp ("QBVA", 3, "QBPM", 0., 0., dz , 0, "ONLY", ptube, 3);
+
+//
+// Be Pipe in central Alice
+ ptube[0] = kRinBe;
+ ptube[1] = kRoutBe;
+ ptube[2] = hlenQbbe;
+
+ gMC->Gsvolu("QBBE","TUBE", idtmed[kBe], ptube, 3);
+
+//
+// Support Ring
+//
+ // Mother
+ ptube[0] = kRoutSB;
+ ptube[1] = 4.0;
+ ptube[2] = 0.6;
+ gMC->Gsvolu("QBSR", "TUBE", idtmed[kAlu], ptube,3);
+ // Inner support
+ ptube[0] = kRoutSB;
+ ptube[1] = 3.5;
+ gMC->Gsvolu("QBSS", "TUBE", idtmed[kPA], ptube,3);
+ gMC->Gspos("QBSS", 1, "QBSR", 0.0, 0.0, 0.0, 0, "ONLY");
+
+ gMC->Gspos("QBSR", 1, "QBPM", 0.0, 0.0, 40., 0, "ONLY");
+ gMC->Gspos("QBSR", 2, "QBPM", 0.0, 0.0, 150., 0, "ONLY");
+ gMC->Gspos("QBSR", 3, "QBPM", 0.0, 0.0, 260., 0, "ONLY");
+ gMC->Gspos("QBSR", 4, "QBPM", 0.0, 0.0,- 46., 0, "ONLY");
+//
+// Flange and Fixed Point: non absorber side
+//
+// ---------->
+//
+// Mother
+ ppcon[0] = 0;
+ ppcon[1] = 360;
+ ppcon[2] = 4;
+// 1:
+ ppcon[3] = -hlenQb29;
+ ppcon[4] = kRinSt;
+ ppcon[5] = 5.8;
+// 2
+ ppcon[6] = ppcon[3]+3.6;
+ ppcon[7] = kRinSt;
+ ppcon[8] = 5.8;
+// 3
+ ppcon[9] = ppcon[6];
+ ppcon[10] = kRinSt;
+ ppcon[11] = 3.6;
+// 4
+ ppcon[12] = hlenQb29;
+ ppcon[13] = kRinSt;
+ ppcon[14] = 3.6;
+
+ gMC->Gsvolu("QB29", "PCON", idtmed[kAir], ppcon,15);
+
+
+// Flange
+ ptube[0] = kRinSt;
+ ptube[1] = 5.7;
+ ptube[2] = 1.75;
+ gMC->Gsvolu("QF29","TUBE", idtmed[kInox], ptube, 3);
+ gMC->Gspos("QF29", 1, "QB29", 0.0, 0.0, -hlenQb29+1.75, 0, "ONLY");
+// Pipe
+ ptube[0] = kRinSt;
+ ptube[1] = 3.06;
+ ptube[2] = hlenQb29;
+ gMC->Gsvolu("QS29","TUBE", idtmed[kInox], ptube, 3);
+ gMC->Gspos("QS29", 1, "QB29", 0.0, 0.0, 0., 0, "ONLY");
+// Fixed point
+ ptube[0] = kRinSt;
+ ptube[1] = 3.5;
+ ptube[2] = 0.3;
+ gMC->Gsvolu("QP29","TUBE", idtmed[kInox], ptube, 3);
+ gMC->Gspos("QP29", 1, "QB29", 0.0, 0.0, -hlenQb29+9.75+3., 0, "ONLY");
+
+//
+//
+// Inox beam pipe: final section on non-absorber side
+
+ ptube[0] = kRinSt;
+ ptube[1] = kRoutSt;
+ ptube[2] = hlenQb28;
+
+ gMC->Gsvolu("QB28","TUBE", idtmed[kInox], ptube, 3);
+//
+//
+// Air with high transport cuts outside QB28
+ ptube[0] = 25.;
+ ptube[1] = 100.;
+ ptube[2] = hlenQb28;
+
+ gMC->Gsvolu("QA28","TUBE", idtmed[kAirHigh], ptube, 3);
+ gGeoManager->SetVolumeAttribute("QA28", "SEEN", 0);
+// Al-Be (40-60 wgt%, rho=2.7 g/cm**3) beam pipe
+//
+// This section is under study (A.M. 1/2/2002)
+//
+
+ ptube[0] = kRinBe;
+ if (fPipeMaterial == kAlu) {
+ ptube[1] = 3.06;
+ } else if (fPipeMaterial == kBe) {
+ ptube[1] = kRoutBe;
+ } else if (fPipeMaterial == kInox){
+ ptube[1] = kRoutSt;
+ }
+ ptube[2] = hlenQbab;
+
+ gMC->Gsvolu("QBAB","TUBE", idtmed[fPipeMaterial], ptube, 3);
+
+// 2.5 mm thick SS tube for hanging pump
+/*
+ ptube[0] = Rin;
+ ptube[1] = 3.15;
+ ptube[2] = hlenQb26;
+
+ gMC->Gsvolu("QB26","TUBE", idtmed[kInox], ptube, 3);
+*/
+//
+// Bellows
+//
+//
+// Mother Volume
+ Float_t pconQBE0[33];
+ pconQBE0[ 0]= 0;
+ pconQBE0[ 1]= 360;
+ pconQBE0[ 2]= 10;
+// 1
+ pconQBE0[ 3] = -kdzbA;
+ pconQBE0[ 4] = kRinSB;
+ pconQBE0[ 5] = kRoutSB;
+//
+ pconQBE0[ 6] = -kdzbA+2.5;
+ pconQBE0[ 7] = kRinSB;
+ pconQBE0[ 8] = kRoutSB;
+// 2
+ pconQBE0[ 9] = -kdzbA+2.5;
+ pconQBE0[10] = kRinSB;
+ pconQBE0[11] = 3.60;
+// 3
+ pconQBE0[12] = -kdzbA+2.5+2.*kdzubA;
+ pconQBE0[13] = kRinSB;
+ pconQBE0[14] = 3.60;
+// 4
+ pconQBE0[15] = -kdzbA+2.5+2.*kdzubA;
+ pconQBE0[16] = kRinSB;
+ pconQBE0[17] = kRoutSB;
+// 5
+ pconQBE0[18] = -kdzbA+2.5+2.*kdzubA+2.*kdzbbA;
+ pconQBE0[19] = kRinSB;
+ pconQBE0[20] = kRoutSB;
+// 6
+ pconQBE0[21] = -kdzbA+2.5+2.*kdzubA+2.*kdzbbA;
+ pconQBE0[22] = kRinSB;
+ pconQBE0[23] = 3.60;
+// 7
+ pconQBE0[24] = -kdzbA+2.5+4.*kdzubA+2.*kdzbbA;
+ pconQBE0[25] = kRinSB;
+ pconQBE0[26] = 3.60;
+// 8
+ pconQBE0[27] = -kdzbA+2.5+4.*kdzubA+2.*kdzbbA;
+ pconQBE0[28] = kRinSB;
+ pconQBE0[29] = kRoutSB;
+// 9
+ pconQBE0[30] = -kdzbA+5.0+4.*kdzubA+2.*kdzbbA;
+ pconQBE0[31] = kRinSB;
+ pconQBE0[32] = kRoutSB;
+
+ gMC->Gsvolu("QBE0", "PCON", idtmed[kAir], pconQBE0, 33);
+//
+// Undulated piece mother
+ ptube[0] = kRinSB;
+ ptube[1] = 3.60;
+ ptube[2] = kdzubA;
+ gMC->Gsvolu("QBEM","TUBE", idtmed[kAir], ptube, 3);
+ dz = -kdzbA+kdzubA+2.5;
+ gMC->Gspos("QBEM", 2 ,"QBE0", 0.0, 0.0, dz, 0 , "ONLY");
+ gMC->Gspos("QBEM", 1 ,"QBE0", 0.0, 0.0, -dz, idrotm[2012], "ONLY");
+//
+ Float_t pund[30];
+ Float_t uw = 0.02;
+ Float_t ur = 2.*kdzubA-36.*uw;
+ Float_t uz = ur/37.;
+ Float_t ut = uz+uw;
+
+ pund[ 0] = 0;
+ pund[ 1] = 360;
+ pund[ 2] = 8;
+
+ pund[ 3] = -ut;
+ pund[ 4] = kRinSB;
+ pund[ 5] = kRinSB+uw;
+
+ pund[ 6] = -ut+uz;
+ pund[ 7] = pund[4];
+ pund[ 8] = pund[5];
+
+ pund[ 9] = pund[6];
+ pund[10] = pund[4];
+ pund[11] = 3.6;
+
+ pund[12] = pund[9]+uw;
+ pund[13] = pund[10];
+ pund[14] = pund[11];
+
+ pund[15] = pund[12];
+ pund[16] = 3.6-uw;
+ pund[17] = pund[14];
+
+ pund[18] = pund[12]+uz;
+ pund[19] = pund[16];
+ pund[20] = pund[17];
+
+ pund[21] = pund[18];
+ pund[22] = kRinSB;
+ pund[23] = pund[20];
+
+ pund[24] = pund[21]+uw;
+ pund[25] = pund[22];
+ pund[26] = pund[23];
+
+ gMC->Gsvolu("QBEU", "PCON", idtmed[kInox], pund, 27);
+
+ for (i = 0; i < 18; i++)
+ {
+ dz = -kdzubA+(1+2*i)*ut;
+ gMC->Gspos("QBEU", i+1 ,"QBEM", 0.0, 0.0, dz, 0 , "ONLY");
+ }
+ ptube[0] = kRinSB;
+ ptube[1] = kRinSB+uw;
+ ptube[2] = uz;
+ gMC->Gsvolu("QBEW","TUBE", idtmed[kInox], ptube, 3);
+ gMC->Gspos("QBEW", 1 ,"QBEM", 0.0, 0.0, kdzubA-uz, 0 , "ONLY");
+
+//
+// BeamPipe
+ gMC->Gsvolu("QBEP","TUBE", idtmed[kInox], ptube, 0);
+ ptube[0] = kRinSB;
+ ptube[1] = kRoutSB;
+ ptube[2] = 1.25;
+ gMC->Gsposp("QBEP", 1 ,"QBE0", 0.0, 0.0, -kdzbA+1.25, 0 , "ONLY", ptube, 3);
+ gMC->Gsposp("QBEP", 2 ,"QBE0", 0.0, 0.0, kdzbA-1.25, 0 , "ONLY", ptube, 3);
+ ptube[2] = kdzbbA;
+ gMC->Gsposp("QBEP", 3 ,"QBE0", 0.0, 0.0, 0., 0 , "ONLY", ptube, 3);
+//
+//
+// ----> End Bellow
+//
+// **** Placement of various sections on non-absorber side ****
+//
+ //
+ // first the beryllium section
+ Float_t zpos = -(hlenQbbe2-hlenQbbe1)/2;
+ gMC->Gspos("QBBE", 1, "QBPM", 0., 0., zpos, 0, "ONLY");
+
+ // next meta-metal transition QBT1 on on-absorber side
+// zpos = zpos + hlenQbbe + hlenQbt1;
+// gMC->Gspos("QBT1", 1, "QBPM", 0., 0., zpos, 0, "ONLY");
+
+ // Aluminium OR Al-be alloy section
+ zpos = hlenQbbe1+hlenQbab;
+ gMC->Gspos("QBAB", 1, "QBPM", 0.0, 0.0, zpos, 0, "ONLY");
+ //
+ // inox flange at the start of bellow
+ zpos = zpos + hlenQbab + hlenQb29;
+ gMC->Gspos("QB29", 1, "QBPM", 0.0, 0.0, zpos, idrotm[2012], "ONLY");
+ //
+ // bellow section
+ zpos = zpos + hlenQb29 + hlenQbe0;
+ gMC->Gspos("QBE0", 2 ,"QBPM", 0.0, 0.0, zpos, 0, "ONLY");
+ //
+ // inox flange at the end of bellow and start of thick inox for pump
+ zpos = zpos + hlenQbe0 + hlenQb29;
+ gMC->Gspos("QB29", 2, "QBPM", 0.0, 0.0, zpos, 0, "ONLY");
+ //
+ //last inox section till 800 cm
+ zpos = zpos + hlenQb29 + hlenQb28;
+ gMC->Gspos("QB28", 1, "QBPM", 0.0, 0.0, zpos, 0, "ONLY");
+ gMC->Gspos("QA28", 1, "ALIC", 0.0, 0.0, zpos, 0, "ONLY");
+
+//******** end of placement on non-absorber side *********
+ //
+ // **** Absorber side *****
+ //
+ //
+//
+// Beam pipes between elements
+//
+ gMC->Gsvolu("QB24","TUBE", idtmed[kInox], ptube, 0);
+ ptube[0] = kRinSt;
+ ptube[1] = kRoutSt;
+ ptube[2] = hlenQb24[0];
+ Float_t bpbe[33];
+ bpbe[ 0] = 0.;
+ bpbe[ 1] = 360.;
+ bpbe[ 2] = 10.;
+ // 1
+ bpbe[ 3] = -hlenQb24[0];
+ bpbe[ 4] = kRinSB;
+ bpbe[ 5] = kRoutSB;
+ // 2
+ bpbe[ 6] = hlenQb24[0] - 5.8;
+ bpbe[ 7] = kRinSB;
+ bpbe[ 8] = kRoutSB;
+ // 3
+ bpbe[ 9] = hlenQb24[0] - 5.8;
+ bpbe[10] = kRinSt;
+ bpbe[11] = 3.05;
+ // 4
+ bpbe[12] = hlenQb24[0] - 4.5;
+ bpbe[13] = kRinSt;
+ bpbe[14] = 3.05;
+ // 5
+ bpbe[15] = hlenQb24[0] - 4.5;
+ bpbe[16] = kRinSt;
+ bpbe[17] = kRoutSt ;
+ // 6
+ bpbe[18] = hlenQb24[0] - 3.5;
+ bpbe[19] = kRinSt;
+ bpbe[20] = kRoutSt ;
+ // 7
+ bpbe[21] = hlenQb24[0] - 3.5;
+ bpbe[22] = kRinSt;
+ bpbe[23] = 3.05;
+ // 8
+ bpbe[24] = hlenQb24[0] - 3.0;
+ bpbe[25] = kRinSt;
+ bpbe[26] = 3.05;
+ // 9
+ bpbe[27] = hlenQb24[0] - 3.0;
+ bpbe[28] = kRinSt;
+ bpbe[29] = kRoutSt;
+ // 10
+ bpbe[30] = hlenQb24[0];
+ bpbe[31] = kRinSt;
+ bpbe[32] = kRoutSt;
+
+ gMC->Gsvolu("QA24","PCON", idtmed[kInox], bpbe, 33);
+
+ dz = hlenQbbe2 + hlenQb24[0];
+
+ gMC->Gspos("QA24", 1 ,"QBPM", 0.0, 0.0, -dz, 0, "ONLY");
+//
+// Bellow on absorber side
+
+ dz = dz+hlenQb24[0] + kdzbA;
+ gMC->Gspos("QBE0", 1 ,"QBPM", 0.0, 0.0, -dz, 0, "ONLY");
+//
+ ptube[2] = hlenQb24[1];
+ dz = dz + kdzb + ptube[2];
+ gMC->Gsposp("QB24", 2 ,"QBPM", 0.0, 0.0, -dz, 0, "ONLY", ptube, 3);
+ dz = dz + ptube[2];
+
+//
+// Flange