BOSS 7.0.8
BESIII Offline Software System
Loading...
Searching...
No Matches
BesSCM.cc
Go to the documentation of this file.
1//---------------------------------------------------------------------------//
2//// BOOST --- BESIII Object_Oreiented Simulation Tool //
3////---------------------------------------------------------------------------//
4////Descpirtion: BES beam pipe
5////Author: Liuhm
6////Created: May 21, 2003
7////Comment:
8////---------------------------------------------------------------------------//
9////
10#include "BesSCM.hh"
11
12#include "G4Box.hh"
13#include "G4Tubs.hh"
14#include "G4Trap.hh"
15#include "G4UnionSolid.hh"
16#include "G4SubtractionSolid.hh"
17#include "G4LogicalVolume.hh"
18#include "G4VPhysicalVolume.hh"
19#include "G4ThreeVector.hh"
20#include "G4Material.hh"
21#include "G4PVPlacement.hh"
22#include "globals.hh"
23#include "G4VisAttributes.hh"
24#include "G4Color.hh"
25#include "BesSubdetector.hh"
26#include "BesSCMParameter.hh"
27
29{
30 scmPar = new BesSCMParameter();
31 scmPar->ReadData();
32 for(G4int i=0; i<3; i++)
33 {
34 innerCryo[i] = scmPar->getInnerCryo(i);
35 l1Adia[i] = scmPar->getL1Adia(i);
36 innerShield[i] = scmPar->getInnerShield(i);
37 l2Adia[i] = scmPar->getL2Adia(i);
38 outerShield[i] = scmPar->getOuterShield(i);
39 l3Adia[i] = scmPar->getL3Adia(i);
40 l1insu[i] = scmPar->getL1insu(i);
41 coil[i] = scmPar->getCoil(i);
42 l2insu[i] = scmPar->getL2insu(i);
43 supp[i] = scmPar->getSupp(i);
44 l4Adia[i] = scmPar->getL4Adia(i);
45 outerCryo[i] = scmPar->getOuterCryo(i);
46 }
47 for(G4int i=0; i<5; i++)
48 {
49 endShield[i] = scmPar->getEndShield(i);
50 endCoil[i] = scmPar->getEndCoil(i);
51 endCryo[i] = scmPar->getEndCryo(i);
52 rein[i] = scmPar->getRein(i);
53 }
54
55 for(G4int i=0; i<6; i++)
56 {
57 pipe1[i] = scmPar->getPipe1(i);
58 pipe2[i] = scmPar->getPipe2(i);
59 pipe3[i] = scmPar->getPipe3(i);
60 }
61
62 for(G4int i=0; i<13; i++)
63 {
64 hole[i] = scmPar->getHole(i);
65 }
66
67 logicalinnCryo = 0;
68 physicalinnCryo = 0;
69
70 logicall1Adia = 0;
71 physicall1Adia = 0;
72
73 logicalinnShield = 0;
74 physicalinnShield = 0;
75
76 logicall2Adia = 0;
77 physicall2Adia = 0;
78
79 logicaloutShield = 0;
80 physicaloutShield = 0;
81
82 logicall3Adia = 0;
83 physicall3Adia = 0;
84
85 logicalendShield = 0;
86 physicalendShield1 = 0;
87 physicalendShield2 = 0;
88
89 logicall1insu = 0;
90 physicall1insu = 0;
91
92 logicalcoil = 0;
93 physicalcoil = 0;
94
95 logicall2insu = 0;
96 physicall2insu = 0;
97
98 logicalsupp = 0;
99 physicalsupp = 0;
100
101 logicall4Adia = 0;
102 physicall4Adia = 0;
103
104 logicalendCoil = 0;
105 physicalendCoil1 = 0;
106 physicalendCoil2 = 0;
107
108 logicalouterCryo = 0;
109 physicalouterCryo = 0;
110
111 logicalendCryo = 0;
112 physicalendCryo1 = 0;
113 physicalendCryo2 = 0;
114
115 logicalrein = 0;
116 physicalrein1 = 0;
117 physicalrein2 = 0;
118
119 logicalpipe1 = 0;
120 physicalpipe1 = 0;
121
122 logicalpipe2 = 0;
123 physicalpipe2 = 0;
124
125 logicalpipe3 = 0;
126 physicalpipe3 = 0;
127
128 liquidhelium = 0;
129 Steel = 0;
130 fibre = 0;
131}
132
134{
135 G4double density, a, z,fractionmass;
136 G4int nel;
137 G4String name, symbol;
138 density = 0.1248*g/cm3;
139 a = 4.00*g/mole;
140 liquidhelium = new G4Material(name="liquidhelium",z=2.0,a,density);
141
142 density = 7.14*g/cm3;
143 a = 52.00*g/mole;
144 G4Material* Chromium = new G4Material(name="Chromium",z=24.0,a,density);
145
146 density = 7.87*g/cm3;
147 a = 55.845*g/mole;
148 G4Material* Iron = new G4Material(name="Iron",z=26.0,a,density);
149
150 density = 8.91*g/cm3;
151 a = 58.693*g/mole;
152 G4Material* Nickel = new G4Material(name="Nickel",z=28.0,a,density);
153
154 density = 7.47*g/cm3;
155 a = 54.938*g/mole;
156 G4Material* Manganese = new G4Material(name="Manganese",z=25.0,a,density);
157
158 density = 7.801*g/cm3;
159 Steel = new G4Material(name="Steel",density,nel=4);
160 Steel->AddMaterial(Iron, fractionmass = 0.69);
161 Steel->AddMaterial(Chromium, fractionmass = 0.19);
162 Steel->AddMaterial(Manganese, fractionmass = 0.02);
163 Steel->AddMaterial(Nickel, fractionmass = 0.10);
164
165 a = 12.01*g/mole;
166 G4Element* C = new G4Element(name="Carbon" ,symbol="C" , z= 6., a);
167 a = 1.01*g/mole;
168 G4Element* H = new G4Element(name="Hydrogen",symbol="H" , z= 1., a);
169 a = 16.00*g/mole;
170 G4Element* O = new G4Element(name="Oxygen" ,symbol="O" , z= 8., a);
171
172 density = 2.25*mg/cm3;
173 fibre = new G4Material(name="fibre",density,nel=3);
174 fibre->AddElement(C, fractionmass = 0.625);
175 fibre->AddElement(H, fractionmass = 0.042);
176 fibre->AddElement(O, fractionmass = 0.333);
177}
178
179void BesSCM::Construct(G4LogicalVolume* logicalbes)
180{
182
183 G4RotationMatrix* xRot = new G4RotationMatrix;
184 xRot->rotateX(90*deg);
185 //the chimney of SCM from outer to inner
186 G4Tubs* hole1 = new G4Tubs("hole1",hole[0],hole[1],hole[2]/2,0,360);
187 G4LogicalVolume* logicalhole1 = new G4LogicalVolume(hole1, Steel,"logicalhole1");
188 //G4VPhysicalVolume* physicalhole1 =
189 new G4PVPlacement(xRot,G4ThreeVector(0,(outerCryo[1]+hole[2]/2)*mm,1640*mm),logicalhole1,"physicalhole1",logicalbes,false,0);
190
191 G4Tubs* hole2 = new G4Tubs("hole2",hole[3],hole[4],hole[5]/2,0,360);
192 G4LogicalVolume* logicalhole2 = new G4LogicalVolume(hole2, Steel,"logicalhole2");
193 //G4VPhysicalVolume* physicalhole2 =
194 new G4PVPlacement(xRot,G4ThreeVector(0,(outerCryo[1]+hole[2]+hole[5]/2)*mm,1640*mm),logicalhole2,"physicalhole2",logicalbes,false,0);
195
196 G4Tubs* hole3 = new G4Tubs("hole3",hole[6],hole[7],hole[12]/2,0,360);
197 G4LogicalVolume* logicalhole3 = new G4LogicalVolume(hole3, Steel,"logicalhole3");
198 //G4VPhysicalVolume* physicalhole3 =
199 new G4PVPlacement(xRot,G4ThreeVector(0,(outerCryo[1]+hole[2]+hole[12]/2)*mm,1640*mm),logicalhole3,"physicalhole3",logicalbes,false,0);
200
201 G4Tubs* hole4 = new G4Tubs("hole4",hole[8],hole[9],hole[12]/2,0,360);
202 G4LogicalVolume* logicalhole4 = new G4LogicalVolume(hole4, G4Material::GetMaterial("Aluminium"),"logicalhole4");
203 //G4VPhysicalVolume* physicalhole4 =
204 new G4PVPlacement(xRot,G4ThreeVector(0,(l3Adia[1]+pipe2[1]+pipe2[4]+hole[12]/2)*mm,1640*mm),logicalhole4,"physicalhole4",logicalbes,false,0);
205
206 G4Box* hole5 = new G4Box("hole5",hole[10]/2,hole[11]/2,hole[12]/2);
207 G4LogicalVolume* logicalhole5 = new G4LogicalVolume(hole5, G4Material::GetMaterial("Aluminium"),"logicalhole5");
208 //G4VPhysicalVolume* physicalhole5 =
209 new G4PVPlacement(xRot,G4ThreeVector(0,(l3Adia[1]+pipe2[1]+pipe2[4]+hole[12]/2)*mm,1640*mm),logicalhole5,"physicalhole5",logicalbes,false,0);
210
211
212 G4Tubs* solidSCM_tmp = new G4Tubs("solidSCM_tmp",innerCryo[0]*mm,1700*mm,(outerCryo[2]+2*endCryo[2])/2.0*mm,0,360);
213 G4Tubs* hole_tmp1 = new G4Tubs("hole_tmp1",0,hole[1],(1700.-1617.5+2)/2.*mm,0,360);
214 G4SubtractionSolid* solidSCM = new G4SubtractionSolid("solidSCM",solidSCM_tmp,hole_tmp1,xRot,G4ThreeVector(0,(1700.+1617.5+2)/2*mm,1640*mm) );
215 logicalSCM = new G4LogicalVolume(solidSCM, G4Material::GetMaterial("Air"),"logicalSCM");
216 physicalSCM = new G4PVPlacement(0,G4ThreeVector(0,0,0),logicalSCM,"physicalSCM",logicalbes,false,0);
217
218 G4Tubs* tub1 = new G4Tubs("tub1",innerCryo[0]*mm,innerCryo[1]*mm,innerCryo[2]/2.0*mm,0,360);
219 logicalinnCryo = new G4LogicalVolume(tub1, Steel,"logicalinnCryo");
220 physicalinnCryo = new G4PVPlacement(0,G4ThreeVector(0,0,0),logicalinnCryo,"physicalinnCryo",logicalSCM,false,0);
221
222 G4Tubs* tub2 = new G4Tubs("tub2",l1Adia[0]*mm,l1Adia[1]*mm,l1Adia[2]/2.0*mm,0,360);
223 logicall1Adia = new G4LogicalVolume(tub2, fibre,"logicall1Adia");
224 physicall1Adia = new G4PVPlacement(0,G4ThreeVector(0,0,0),logicall1Adia,"physicall1Adia",logicalSCM,false,0);
225
226 G4Tubs* tub3 = new G4Tubs("tub3",innerShield[0]*mm,innerShield[1]*mm,innerShield[2]/2.0*mm,0,360);
227 logicalinnShield = new G4LogicalVolume(tub3, G4Material::GetMaterial("Aluminium"),"logicalinnShield");
228 physicalinnShield = new G4PVPlacement(0,G4ThreeVector(0,0,0),logicalinnShield,"physicalinnShield",logicalSCM,false,0);
229
230 G4Tubs* tub4 = new G4Tubs("tub4",l2Adia[0]*mm,l2Adia[1]*mm,l2Adia[2]/2.0*mm,0,360);
231 logicall2Adia = new G4LogicalVolume(tub4, fibre,"logicall2Adia");
232 physicall2Adia = new G4PVPlacement(0,G4ThreeVector(0,0,0),logicall2Adia,"physicall2Adia",logicalSCM,false,0);
233
234 G4Tubs* hole_tmp3 = new G4Tubs("hole_tmp3",0,hole[8]*mm,25*mm,0,360);
235 G4Tubs* tub5_tmp = new G4Tubs("tub5_tmp",outerShield[0]*mm,outerShield[1]*mm,outerShield[2]/2.0*mm,0,360);
236 G4SubtractionSolid* tub5 = new G4SubtractionSolid("tub5",tub5_tmp,hole_tmp3,xRot,G4ThreeVector(0,(outerShield[0]+outerShield[1])/2*mm,1640*mm) );
237 logicaloutShield = new G4LogicalVolume(tub5, G4Material::GetMaterial("Aluminium"),"logicaloutShield");
238 physicaloutShield = new G4PVPlacement(0,G4ThreeVector(0,0,0),logicaloutShield,"physicaloutShield",logicalSCM,false,0);
239
240 G4Tubs* tub6_tmp = new G4Tubs("tub6_tmp",l3Adia[0]*mm,l3Adia[1]*mm,l3Adia[2]/2.0*mm,0,360);
241 G4SubtractionSolid* tub6 = new G4SubtractionSolid("tub6",tub6_tmp,hole_tmp3,xRot,G4ThreeVector(0,(l3Adia[0]+l3Adia[1])/2*mm,1640*mm) );
242 logicall3Adia = new G4LogicalVolume(tub6, fibre,"logicall3Adia");
243 physicall3Adia = new G4PVPlacement(0,G4ThreeVector(0,0,0),logicall3Adia,"physicall3Adia",logicalSCM,false,0);
244
245 G4Tubs* tub7 = new G4Tubs("tub7",endShield[0]*mm,endShield[1]*mm,endShield[2]/2.0*mm,0,360);
246 logicalendShield = new G4LogicalVolume(tub7, G4Material::GetMaterial("Aluminium"),"logicalendShield");
247 physicalendShield1 = new G4PVPlacement(0,G4ThreeVector(0,0,endShield[3]*mm),logicalendShield,"physicalendShield1",logicalSCM,false,0);
248 physicalendShield2 = new G4PVPlacement(0,G4ThreeVector(0,0,endShield[4]*mm),logicalendShield,"physicalendShield2",logicalSCM,false,1);
249
250 G4Tubs* tub8 = new G4Tubs("tub8",l1insu[0]*mm,l1insu[1]*mm,l1insu[2]/2.0*mm,0,360);
251 logicall1insu = new G4LogicalVolume(tub8, fibre,"logicall1insu");
252 physicall1insu = new G4PVPlacement(0,G4ThreeVector(0,0,0),logicall1insu,"physicall1insu",logicalSCM,false,0);
253
254 G4Tubs* tub9 = new G4Tubs("tub9",coil[0]*mm,coil[1]*mm,coil[2]/2.0*mm,0,360);
255 logicalcoil = new G4LogicalVolume(tub9, G4Material::GetMaterial("Aluminium"),"logicalcoil");
256 physicalcoil = new G4PVPlacement(0,G4ThreeVector(0,0,0),logicalcoil,"physicalcoil",logicalSCM,false,0);
257
258 G4Tubs* tub10 = new G4Tubs("tub10",l2insu[0]*mm,l2insu[1]*mm,l2insu[2]/2.0*mm,0,360);
259 logicall2insu = new G4LogicalVolume(tub10, fibre,"logicall2insu");
260 physicall2insu = new G4PVPlacement(0,G4ThreeVector(0,0,0),logicall2insu,"physicall2insu",logicalSCM,false,0);
261
262 G4Tubs* tub11 = new G4Tubs("tub11",supp[0]*mm,supp[1]*mm,supp[2]/2.0*mm,0,360);
263 logicalsupp = new G4LogicalVolume(tub11, G4Material::GetMaterial("Aluminium"),"logicalsupp");
264 physicalsupp = new G4PVPlacement(0,G4ThreeVector(0,0,0),logicalsupp,"physicalsupp",logicalSCM,false,0);
265
266 G4Tubs* tub12 = new G4Tubs("tub12",l4Adia[0]*mm,l4Adia[1]*mm,l4Adia[2]/2.0*mm,0,360);
267 logicall4Adia = new G4LogicalVolume(tub12, fibre,"logicall4Adia");
268 physicall4Adia = new G4PVPlacement(0,G4ThreeVector(0,0,0),logicall4Adia,"physicall4Adia",logicalSCM,false,0);
269
270 G4Tubs* tub13 = new G4Tubs("tub13",endCoil[0]*mm,endCoil[1]*mm,endCoil[2]/2.0*mm,0,360);
271 logicalendCoil = new G4LogicalVolume(tub13, G4Material::GetMaterial("Aluminium"),"logicalendCoil");
272 physicalendCoil1 = new G4PVPlacement(0,G4ThreeVector(0,0,endCoil[3]*mm),logicalendCoil,"physicalendCoil1",logicalSCM,false,0);
273 physicalendCoil2 = new G4PVPlacement(0,G4ThreeVector(0,0,endCoil[4]*mm),logicalendCoil,"physicalendCoil2",logicalSCM,false,1);
274
275 G4Tubs* hole_tmp2 = new G4Tubs("hole_tmp2",0,hole[1],18*mm,0,360);
276 G4Tubs* tub14_tmp = new G4Tubs("tub14_tmp",outerCryo[0]*mm,outerCryo[1]*mm,outerCryo[2]/2.0*mm,0,360);
277 G4SubtractionSolid* tub14 = new G4SubtractionSolid("tub14",tub14_tmp,hole_tmp2,xRot,G4ThreeVector(0,(outerCryo[1]-8)*mm,1640*mm) );
278 logicalouterCryo = new G4LogicalVolume(tub14, Steel,"logicalouterCryo");
279 physicalouterCryo = new G4PVPlacement(0,G4ThreeVector(0,0,0),logicalouterCryo,"physicalouterCryo",logicalSCM,false,0);
280
281 G4Tubs* tub15 = new G4Tubs("tub15",endCryo[0]*mm,endCryo[1]*mm,endCryo[2]/2.0*mm,0,360);
282 logicalendCryo = new G4LogicalVolume(tub15, Steel,"logicalendCryo");
283 physicalendCryo1 = new G4PVPlacement(0,G4ThreeVector(0,0,endCryo[3]*mm),logicalendCryo,"physicalendCryo1",logicalSCM,false,0);
284 physicalendCryo2 = new G4PVPlacement(0,G4ThreeVector(0,0,endCryo[4]*mm),logicalendCryo,"physicalendCryo2",logicalSCM,false,1);
285/*
286 G4Trap* trap = new G4Trap("trap",rein[2]/2.0*mm,0,0,rein[1]/2*mm,rein[1]*std::tan(pi/8)*mm,2,0,rein[1]/2*mm,rein[1]*std::tan(pi/8)*mm,2,0);
287 G4Tubs* tub16 = new G4Tubs("tub16",0,outerCryo[1]*mm,(rein[2]/2.0+3)*mm,0,360);
288
289 G4SubtractionSolid* solidrein = new G4SubtractionSolid("solidrein",trap,tub16,0,G4ThreeVector(0,847.5*mm,0) );
290 logicalrein = new G4LogicalVolume(solidrein, Steel,"logicalrein");
291
292 for(int i=0; i<8; i++)
293 {
294 std::ostringstream osnamerein;
295 osnamerein << "physicalrein1_"<<i;
296 G4RotationMatrix* zRot = new G4RotationMatrix;
297 zRot->rotateZ(45*i*deg);
298 physicalrein1 = new G4PVPlacement(zRot,G4ThreeVector(-rein[1]/2*std::sin(pi/4*i)*mm,-rein[1]/2*std::cos(pi/4*i)*mm,rein[3]*mm),logicalrein,osnamerein.str(),logicalSCM,false,i);
299 }
300 for(G4int i=0; i<4; i++)
301 {
302 std::ostringstream osnamerein;
303 osnamerein << "physicalrein2_"<<i;
304 G4RotationMatrix* zRot = new G4RotationMatrix;
305 zRot->rotateZ(45*i*deg);
306 physicalrein2 = new G4PVPlacement(zRot,G4ThreeVector(-rein[1]/2*std::sin(pi/4*i)*mm,-rein[1]/2*std::cos(pi/4*i)*mm,rein[4]*mm),logicalrein,osnamerein.str(),logicalSCM,false,8+i);
307 }
308
309 for(G4int i=5; i<8; i++)
310 {
311 std::ostringstream osnamerein;
312 osnamerein << "physicalrein2_"<<i;
313 G4RotationMatrix* zRot = new G4RotationMatrix;
314 zRot->rotateZ(45*i*deg);
315 physicalrein2 = new G4PVPlacement(zRot,G4ThreeVector(-rein[1]/2*std::sin(pi/4*i)*mm,-rein[1]/2*std::cos(pi/4*i)*mm,rein[4]*mm),logicalrein,osnamerein.str(),logicalSCM,false,8+i);
316 }
317*/
318 //pipe of inner 77k
319 G4Box* solidpipe1 = new G4Box("solidpipe1",pipe1[2]/2*mm,(pipe1[1]+pipe1[4])/2*mm,pipe1[5]/2*mm);
320 logicalpipe1 = new G4LogicalVolume(solidpipe1, G4Material::GetMaterial("Air"),"logicalpipe1");
321 G4Tubs* tub17 = new G4Tubs("tub17",pipe1[0]*mm,pipe1[1]*mm,pipe1[5]/2*mm,0,360);
322 G4Tubs* tub18 = new G4Tubs("tub18",0,pipe1[1]*mm,pipe1[5]/2*mm,0,360);
323 G4Tubs* tub19 = new G4Tubs("tub19",0,pipe1[0]*mm,pipe1[5]/2*mm,0,360);
324 G4Box* solidbox1 = new G4Box("solidbox1",pipe1[2]/2*mm,pipe1[3]/2*mm,pipe1[5]/2*mm);
325 G4SubtractionSolid* solidsub1 = new G4SubtractionSolid("solidsub1",solidbox1,tub18,0,G4ThreeVector(0,(pipe1[4]-pipe1[3]/2)*mm,0) );
326 G4LogicalVolume* logicalsub1 = new G4LogicalVolume(solidsub1, G4Material::GetMaterial("Aluminium"),"logicalsub1");
327 G4LogicalVolume* logicaltub17 = new G4LogicalVolume(tub17, G4Material::GetMaterial("Aluminium"),"logicaltub17");
328 G4LogicalVolume* logicaltub19 = new G4LogicalVolume(tub19,liquidhelium,"logicaltub19");
329 //G4VPhysicalVolume* physicaltub17 =
330 new G4PVPlacement(0,G4ThreeVector(0,0,0),logicaltub17,"physicaltub17",logicalpipe1,false,0);
331 //G4VPhysicalVolume* physicaltub19 =
332 new G4PVPlacement(0,G4ThreeVector(0,0,0),logicaltub19,"physicaltub19",logicalpipe1,false,0);
333 //G4VPhysicalVolume* physicalsub1 =
334 new G4PVPlacement(0,G4ThreeVector(0,-(pipe1[4]-pipe1[3]/2)*mm,0),logicalsub1,"physicalsub1",logicalpipe1,false,0);
335 for(G4int i=0; i<24; i++)
336 {
337 std::ostringstream osnamerein;
338 osnamerein << "physicalpipe1_"<<i;
339 G4RotationMatrix* zRot = new G4RotationMatrix;
340 zRot->rotateZ(15*i*deg);
341 //pipe of inner 77k
342 physicalpipe1=new G4PVPlacement(zRot,G4ThreeVector(-(std::sqrt(innerShield[0]*innerShield[0]-pipe1[2]/2*pipe1[2]/2)-
343 (pipe1[1]+pipe1[4])/2)*std::sin(15*pi/180*i)*mm,-(std::sqrt(innerShield[0]*innerShield[0]-
344 pipe1[2]/2*pipe1[2]/2)-(pipe1[1]+pipe1[4])/2)*std::cos(15*pi/180*i)*mm,0),
345 logicalpipe1,osnamerein.str(),logicalSCM,false,0);
346 }
347 //pipe of outer 77k
348 G4Box* solidpipe2 = new G4Box("solidpipe2",pipe2[2]/2*mm,(pipe2[1]+pipe2[4])/2*mm,pipe2[5]/2*mm);
349 logicalpipe2 = new G4LogicalVolume(solidpipe2,G4Material::GetMaterial("Air"),"logicalpipe2");
350 G4Tubs* tub20 = new G4Tubs("tub20",pipe2[0]*mm,pipe2[1]*mm,pipe2[5]/2*mm,0,360);
351 G4Tubs* tub21 = new G4Tubs("tub21",0,pipe2[1]*mm,pipe2[5]/2*mm,0,360);
352 G4Tubs* tub22 = new G4Tubs("tub22",0,pipe2[0]*mm,pipe2[5]/2*mm,0,360);
353 G4Box* solidbox2 = new G4Box("solidbox2",pipe2[2]/2*mm,pipe2[3]/2*mm,pipe2[5]/2*mm);
354 G4SubtractionSolid* solidsub2 = new G4SubtractionSolid("solidsub2",solidbox2,tub21,0,G4ThreeVector(0,(pipe2[4]-pipe2[3]/2)*mm,0) );
355 G4LogicalVolume* logicalsub2 = new G4LogicalVolume(solidsub2,G4Material::GetMaterial("Aluminium"),"logicalsub2");
356 G4LogicalVolume* logicaltub20 = new G4LogicalVolume(tub20,G4Material::GetMaterial("Aluminium"),"logicaltub20");
357 G4LogicalVolume* logicaltub22 = new G4LogicalVolume(tub22,liquidhelium,"logicaltub22");
358 //G4VPhysicalVolume* physicaltub20 =
359 new G4PVPlacement(0,G4ThreeVector(0,0,0),logicaltub20,"physicaltub20",logicalpipe2,false,0);
360 //G4VPhysicalVolume* physicaltub22 =
361 new G4PVPlacement(0,G4ThreeVector(0,0,0),logicaltub22,"physicaltub22",logicalpipe2,false,0);
362 //G4VPhysicalVolume* physicalsub2 =
363 new G4PVPlacement(0,G4ThreeVector(0,-(pipe2[4]-pipe2[3]/2)*mm,0),logicalsub2,"physicalsub2",logicalpipe2,false,0);
364 for(G4int i=0; i<24; i++)
365 {
366 std::ostringstream osnamerein;
367 osnamerein << "physicalpipe2_"<<i;
368 G4RotationMatrix* zRot = new G4RotationMatrix;
369 zRot->rotateZ(15*i*deg);
370 physicalpipe2= new G4PVPlacement(zRot,G4ThreeVector(-(l3Adia[1]+(pipe2[1]+pipe2[4])/2)*std::sin(15*pi/180*i)*mm,
371 -(l3Adia[1]+(pipe2[1]+pipe2[4])/2)*std::cos(15*pi/180*i)*mm,0),logicalpipe2,osnamerein.str(),
372 logicalSCM,false,0);
373 }
374
375 //pipe of 4k
376 G4Box* solidpipe3 = new G4Box("solidpipe3",pipe3[2]/2*mm,(pipe3[1]+pipe3[4])/2*mm,pipe3[5]/2*mm);
377 logicalpipe3 = new G4LogicalVolume(solidpipe3,G4Material::GetMaterial("Air"),"logicalpipe3");
378 G4Tubs* tub23 = new G4Tubs("tub23",pipe3[0]*mm,pipe3[1]*mm,pipe3[5]/2*mm,0,360);
379 G4Tubs* tub24 = new G4Tubs("tub24",0,pipe3[1]*mm,pipe3[5]/2*mm,0,360);
380 G4Tubs* tub25 = new G4Tubs("tub25",0,pipe3[0]*mm,pipe3[5]/2*mm,0,360);
381 G4Box* solidbox3 = new G4Box("solidbox3",pipe3[2]/2*mm,pipe3[3]/2*mm,pipe3[5]/2*mm);
382 G4SubtractionSolid* solidsub3 = new G4SubtractionSolid("solidsub3",solidbox3,tub24,0,G4ThreeVector(0,(pipe3[4]-pipe3[3]/2)*mm,0));
383 G4LogicalVolume* logicalsub3 = new G4LogicalVolume(solidsub3,G4Material::GetMaterial("Aluminium"),"logicalsub3");
384 G4LogicalVolume* logicaltub23 = new G4LogicalVolume(tub23,G4Material::GetMaterial("Aluminium"),"logicaltub23");
385 G4LogicalVolume* logicaltub25 = new G4LogicalVolume(tub25,liquidhelium,"logicaltub25");
386 //G4VPhysicalVolume* physicaltub23 =
387 new G4PVPlacement(0,G4ThreeVector(0,0,0),logicaltub23,"physicaltub23",logicalpipe3,false,0);
388 //G4VPhysicalVolume* physicaltub25 =
389 new G4PVPlacement(0,G4ThreeVector(0,0,0),logicaltub25,"physicaltub25",logicalpipe3,false,0);
390 //G4VPhysicalVolume* physicalsub3 =
391 new G4PVPlacement(0,G4ThreeVector(0,-(pipe3[4]-pipe3[3]/2)*mm,0),logicalsub3,"physicalsub3",logicalpipe3,false,0);
392 for(G4int i=0; i<24; i++)
393 {
394 std::ostringstream osnamerein;
395 osnamerein << "physicalpipe3_"<<i;
396 G4RotationMatrix* zRot = new G4RotationMatrix;
397 zRot->rotateZ(15*i*deg);
398 physicalpipe3= new G4PVPlacement(zRot,G4ThreeVector(-(l4Adia[1]+(pipe3[1]+pipe3[4])/2)*std::sin(15*pi/180*i)*mm,
399 -(l4Adia[1]+(pipe3[1]+pipe3[4])/2)*std::cos(15*pi/180*i)*mm,0),logicalpipe3,osnamerein.str(),
400 logicalSCM,false,0);
401 }
402
403 //G4VisAttributes* visSCM = new G4VisAttributes(G4Colour(1.,1.,1.));
404 G4VisAttributes* visSCM1 = new G4VisAttributes(G4Colour(0.,0.,1.));
405 logicalSCM->SetVisAttributes(visSCM1);
406 logicalinnCryo->SetVisAttributes(visSCM1);
407// logicalinnCryo->SetVisAttributes(G4VisAttributes::Invisible);
408 logicalouterCryo->SetVisAttributes(visSCM1);
409// logicalouterCryo->SetVisAttributes(G4VisAttributes::Invisible);
410 logicalendCryo->SetVisAttributes(visSCM1);
411// logicalendCryo->SetVisAttributes(G4VisAttributes::Invisible);
412 G4VisAttributes* visSCM2 = new G4VisAttributes(G4Colour(0.,1.,0.));
413 logicall1Adia->SetVisAttributes(visSCM2);
414// logicall1Adia->SetVisAttributes(G4VisAttributes::Invisible);
415 logicall2Adia->SetVisAttributes(visSCM2);
416// logicall2Adia->SetVisAttributes(G4VisAttributes::Invisible);
417 logicall3Adia->SetVisAttributes(visSCM2);
418// logicall3Adia->SetVisAttributes(G4VisAttributes::Invisible);
419 logicall4Adia->SetVisAttributes(visSCM2);
420// logicall4Adia->SetVisAttributes(G4VisAttributes::Invisible);
421 G4VisAttributes* visSCM3 = new G4VisAttributes(G4Colour(1.,0.,0.));
422 logicalinnShield->SetVisAttributes(visSCM3);
423// logicalinnShield->SetVisAttributes(G4VisAttributes::Invisible);
424 logicaloutShield->SetVisAttributes(visSCM3);
425// logicaloutShield->SetVisAttributes(G4VisAttributes::Invisible);
426 logicalendShield->SetVisAttributes(visSCM3);
427// logicalendShield->SetVisAttributes(G4VisAttributes::Invisible);
428
429 G4VisAttributes* visSCM4 = new G4VisAttributes(G4Colour(0.,1.,1.));
430 logicall1insu->SetVisAttributes(visSCM4);
431// logicall1insu->SetVisAttributes(G4VisAttributes::Invisible);
432 logicall2insu->SetVisAttributes(visSCM4);
433// logicall2insu->SetVisAttributes(G4VisAttributes::Invisible);
434 G4VisAttributes* visSCM5 = new G4VisAttributes(G4Colour(1.,0.,1.));
435 logicalcoil->SetVisAttributes(visSCM5);
436// logicalcoil->SetVisAttributes(G4VisAttributes::Invisible);
437 logicalendCoil->SetVisAttributes(visSCM5);
438// logicalendCoil->SetVisAttributes(G4VisAttributes::Invisible);
439 G4VisAttributes* visSCM6 = new G4VisAttributes(G4Colour(1.,1.,0.));
440 logicalsupp->SetVisAttributes(visSCM6);
441// logicalsupp->SetVisAttributes(G4VisAttributes::Invisible);
442// G4VisAttributes* visSCM7 = new G4VisAttributes(G4Colour(0.,0.,0.));
443// logicalrein->SetVisAttributes(G4VisAttributes::Invisible);
444// logicalpipe1->SetVisAttributes(G4VisAttributes::Invisible);
445 logicalpipe2->SetVisAttributes(visSCM2);
446// logicalpipe2->SetVisAttributes(G4VisAttributes::Invisible);
447// logicalpipe3->SetVisAttributes(G4VisAttributes::Invisible);
448 logicaltub17->SetVisAttributes(visSCM2);
449// logicaltub17->SetVisAttributes(G4VisAttributes::Invisible);
450 logicaltub19->SetVisAttributes(visSCM5);
451// logicaltub19->SetVisAttributes(G4VisAttributes::Invisible);
452 logicaltub20->SetVisAttributes(visSCM1);
453// logicaltub20->SetVisAttributes(G4VisAttributes::Invisible);
454 logicaltub22->SetVisAttributes(visSCM1);
455// logicaltub22->SetVisAttributes(G4VisAttributes::Invisible);
456 logicaltub23->SetVisAttributes(visSCM2);
457// logicaltub23->SetVisAttributes(G4VisAttributes::Invisible);
458 logicaltub25->SetVisAttributes(visSCM5);
459// logicaltub25->SetVisAttributes(G4VisAttributes::Invisible);
460 logicalsub1->SetVisAttributes(visSCM4);
461// logicalsub1->SetVisAttributes(G4VisAttributes::Invisible);
462 logicalsub2->SetVisAttributes(visSCM4);
463// logicalsub2->SetVisAttributes(G4VisAttributes::Invisible);
464
465 logicalsub3->SetVisAttributes(visSCM4);
466// logicalsub3->SetVisAttributes(G4VisAttributes::Invisible);
467 logicalhole1->SetVisAttributes(visSCM3);
468// logicalhole1->SetVisAttributes(G4VisAttributes::Invisible);
469 logicalhole2->SetVisAttributes(visSCM3);
470// logicalhole2->SetVisAttributes(G4VisAttributes::Invisible);
471 logicalhole3->SetVisAttributes(visSCM3);
472// logicalhole3->SetVisAttributes(G4VisAttributes::Invisible);
473 logicalhole4->SetVisAttributes(visSCM3);
474// logicalhole4->SetVisAttributes(G4VisAttributes::Invisible);
475 logicalhole5->SetVisAttributes(visSCM3);
476// logicalhole5->SetVisAttributes(G4VisAttributes::Invisible);
477}
***************************************************************************************Pseudo Class RRes *****************************************************************************************Parameters and physical constants **Maarten sept ************************************************************************DOUBLE PRECISION xsmu **************************************************************************PARTICLE DATA all others are from PDG *Only resonances with known widths into electron pairs are sept ************************************************************************C Declarations C
Definition: RRes.h:29
G4double getL3Adia(G4int i)
G4double getL1insu(G4int i)
G4double getPipe3(G4int i)
G4double getEndCoil(G4int i)
G4double getOuterShield(G4int i)
G4double getCoil(G4int i)
G4double getRein(G4int i)
G4double getL1Adia(G4int i)
G4double getHole(G4int i)
G4double getL2insu(G4int i)
G4double getL4Adia(G4int i)
G4double getPipe1(G4int i)
G4double getEndCryo(G4int i)
G4double getL2Adia(G4int i)
G4double getInnerCryo(G4int i)
G4double getSupp(G4int i)
G4double getInnerShield(G4int i)
G4double getOuterCryo(G4int i)
G4double getEndShield(G4int i)
G4double getPipe2(G4int i)
BesSCM()
Definition: BesSCM.cc:28
void Construct(G4LogicalVolume *logicbes)
Definition: BesSCM.cc:179
void DefineMaterial()
Definition: BesSCM.cc:133
IMPLICIT REAL *A H
Definition: myXsection.h:1
const float pi
Definition: vector3.h:133