BOSS 7.0.4
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
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