@@ -110,6 +110,10 @@ M1ElectronShield::populate(const FuncDataBase& Control)
110
110
connectGap=Control.EvalVar <double >(keyName+" ConnectGap" );
111
111
connectThick=Control.EvalVar <double >(keyName+" ConnectThick" );
112
112
113
+ nCut=Control.EvalVar <size_t >(keyName+" NCut" );
114
+ cutRadius=Control.EvalVar <double >(keyName+" CutRadius" );
115
+ cutGap=Control.EvalVar <double >(keyName+" CutGap" );
116
+
113
117
blockOffset=Control.EvalVar <double >(keyName+" BlockOffset" );
114
118
blockWidth=Control.EvalVar <double >(keyName+" BlockWidth" );
115
119
@@ -119,7 +123,7 @@ M1ElectronShield::populate(const FuncDataBase& Control)
119
123
120
124
pipeRadius=Control.EvalVar <double >(keyName+" PipeRadius" );
121
125
pipeThick=Control.EvalVar <double >(keyName+" PipeThick" );
122
-
126
+
123
127
voidMat=ModelSupport::EvalMat<int >(Control,keyName+" VoidMat" );
124
128
electronMat=ModelSupport::EvalMat<int >(Control,keyName+" ElectronMat" );
125
129
waterMat=ModelSupport::EvalMat<int >(Control,keyName+" WaterMat" );
@@ -134,7 +138,6 @@ M1ElectronShield::createSurfaces()
134
138
*/
135
139
{
136
140
ELog::RegMethod RegA (" M1ElectronShield" ," createSurfaces" );
137
-
138
141
139
142
// ELECTRON shield
140
143
ModelSupport::buildPlane (SMap,buildIndex+1 ,Origin-Y*(elecLength/2.0 ),Y);
@@ -189,6 +192,15 @@ M1ElectronShield::createSurfaces()
189
192
ModelSupport::buildPlane
190
193
(SMap,buildIndex+416 ,pOrg+Z*(plateHeight/2.0 -plateThick),Z);
191
194
195
+ Geometry::Vec3D cMid=pOrg-Y*(static_cast <double >(nCut/2 )*cutGap);
196
+ int BI (buildIndex+400 );
197
+ for (size_t i=0 ;i<nCut;i++)
198
+ {
199
+ ModelSupport::buildCylinder (SMap,BI+7 ,cMid,X,cutRadius);
200
+ cMid+=Y*cutGap;
201
+ BI+=10 ;
202
+ }
203
+
192
204
ModelSupport::buildPlane
193
205
(SMap,buildIndex+503 ,pOrg+X*(blockOffset+blockWidth),X);
194
206
@@ -250,11 +262,23 @@ M1ElectronShield::createObjects(Simulation& System)
250
262
HR=ModelSupport::getHeadRule
251
263
(SMap,buildIndex," 1 -2 314 -403 205 -206" );
252
264
makeCell (" EHeatVoid" ,System,cellIndex++,voidMat,0.0 ,HR);
253
-
265
+
266
+ const HeadRule mainCutHR=
267
+ ModelSupport::getHeadRule (SMap,buildIndex," 403 -404" );
268
+ HeadRule cutHR;
269
+ int BI (buildIndex+400 );
270
+ for (size_t i=0 ;i<nCut;i++)
271
+ {
272
+ HR=mainCutHR*HeadRule (SMap,BI,-7 );
273
+ makeCell (" PlateHole" ,System,cellIndex++,voidMat,0.0 ,HR);
274
+ cutHR*=HeadRule (SMap,BI,7 );
275
+ BI+=10 ;
276
+ }
254
277
HR=ModelSupport::getHeadRule
255
278
(SMap,buildIndex," 1 -2 403 -404 405 -406" );
256
- makeCell (" Plate" ,System,cellIndex++,electronMat,0.0 ,HR);
279
+ makeCell (" Plate" ,System,cellIndex++,electronMat,0.0 ,HR*cutHR );
257
280
281
+
258
282
HR=ModelSupport::getHeadRule
259
283
(SMap,buildIndex," 1 -2 303 -403 405 -415" );
260
284
makeCell (" PlateEnd" ,System,cellIndex++,electronMat,0.0 ,HR);
@@ -319,7 +343,6 @@ M1ElectronShield::createVoidObjects(Simulation& System)
319
343
ELog::RegMethod RegA (" M1ElectronShield" ," createObjects" );
320
344
321
345
const HeadRule tubeHR=getRule (" TubeRadius" );
322
-
323
346
324
347
const HeadRule ACylHR=getRule (" ringACyl" );
325
348
const HeadRule AFrontHR=getRule (" ringAFront" );
@@ -432,7 +455,6 @@ M1ElectronShield::createAll(Simulation& System,
432
455
433
456
createVoidObjects (System);
434
457
addExternal (System);
435
-
436
458
437
459
return ;
438
460
}
0 commit comments