組み合わせジオメトリーCGの使い方
KEK 平山、波戸 SSL 杉田
2008-08-06
テキスト：naicgv.pdfおよびphantomcgv.pdfの1-3ページ

CG（Combinatorial Geometry)体系• 利点：複雑な体系を比較的少ない労力で記述可能• 形状定義：SOLID（中身のある物体）で表現• 領域定義：形状の組み合わせ（論理演算）で記述– 一番外側はDiscard領域• 14種類の形状

直方体（RPP） 円柱（RCC） 球（SPH） 円錐台（TRC） トーラス（TOR）
上記5種類はEGS4でも対応
平行六面体 楕円柱、楕円錐、楕円球、くさび型、平面、多面体、六角柱、一般楕円体(Cgview 2.1.0以降のマニュアル参照)

各形状の入力
パラメータ

記述順序
••
•
•
•

RPP No. Xmin Xmax Ymin Ymax Zmin Zmax
SPH No. Vx Vy Vz R
RCC No. Vx Vy Vz Hx Hy Hz R
TRC No. Vx Vy Vz Hx Hy Hz R1 R2
TOR No. Vx Vy Vz R1 R2 θ1 θ2 n

ジオメトリ入力の簡略化

CG→"DEFINE VARIOUS THICKNESSES/DISTANCES"
TCOV=0.1; "Thickness of Al case in cm "TGAP=0.5; "Gap between case and detector in cm"
TDE=7.62; "Thickness of detector in cm"
TQUARTZ=0.5;"Thickness of quartz window in cm""DEFINITION OF PLANES"

RCC
RCC
RCC
RCCEND
Z1Z2Z3Z4END

123412340000000000.1
55.10000000030
29.81514.9109.954.9-1-2-3←円筒平板→"******************************************************************"STANFORD LINEAR ACCELERATOR CENTER"（EGS4) "SUBROUTINE HOWFAR;"
EGS4 SUBPROGRAM - 8 MAY 1983/1730""SET ALL COORDINATES AND NORMALS TO ZERO TO BEGIN WITH""******************************************************************"
DO J=1,NPLAN [;COMIN/DEBUG,EPCONT,GEOM,PASSIT,STACK,THRESH/;
PCOORD(1,J)=0.0; PCOORD(2,J)=0.0; PCOORD(3,J)=0.0;
PNORM(1,J)=0.0; PNORM(2,J)=0.0; PNORM(3,J)=1.0;
IRL=IR(NP); "SET LOCAL VARIABLE"]"NOW PUT IN THE EXCEPTIONS"PCOORD(3,2)=PCOORD(3,1)+TCOV;PCOORD(3,3)=PCOORD(3,2)+TGAP;PCOORD(3,4)=PCOORD(3,3)+TDE;
PCOORD(3,5)=PCOORD(3,4)+TQUARTZ;OUTPUT; ('1PCOORD AND PNORM VALUES FOR EACH J-PLANE(I=1,3):',//);
DO J=1,NPLAN [OUTPUT J,(PCOORD(I,J),I=1,3),(PNORM(I,J),I=1,3);(I5,6G15.7);]"DEFINE THE CYLINDER RADII"RDET=3.81; "Radius of detector in cm"
RGAP=0.5; "Gap between detector and case in cm"
RTCOV=0.1; "Cover thickness in cm"
CYRAD(1)=RDET;CYRAD(2)=CYRAD(1)+RGAP;CYRAD(3)=CYRAD(2)+RTCOV;IF(IRL.LE.1.OR.IRL.GE.IRZ+2) [IDISC=1; RETURN;]NSLAB=(IRL-2)/NCYL + 1 ; "SLAB NUMBER"
NANNU=IRL-1-NCYL*(NSLAB-1); "ANNULUS NUMBER"
NPL1=NSLAB+1; NPL2=NSLAB;
IF(NSLAB.LT.NPLAN-1) [NRG1=IRL+NCYL;]ELSE [NRG1=IRZ+2;]
IF(NSLAB.GT.1) [NRG2=IRL-NCYL;]ELSE [NRG2=1;]$PLAN2P(NPL1,NRG1,1,NPL2,NRG2,-1);
IF(NANNU.LT.NCYL) [NRG2=IRL+1;]
ELSE [NRG2=IRZ+3;]
IF(NANNU.GT.1) [NRG1=IRL-1; NCL2=NANNU;
NCL1=NANNU-1;$CYL2(NCL1,NRG1,NCL2,NRG2); RETURN;]$CYLNDR(1,1,IHIT,TCYL);
IF(IHIT.EQ.1) [$CHGTR(TCYL,NRG2);]
RETURN;
END; "END OF SUBROUTINE HOWFAR"

単独の立体では不便…
←こんな体系で計算したい
領域I=+2 OR +3 論理和立体２立体３立体の組み合わせで空間を指定して、「領域」、「リージョン」、「ゾーン」と呼ぶ。
＋－でそれぞれ立体の内側と外側を示す。

ゾーンK=+3
リージョンJ=+2 -3 論理差

CG体系での論理演算の例
論理和：1 OR 2

論理積：1 2221

否定と論理和：1 OR -2

1

否定と論理積：1 -22211

論理演算の組み合わせ例
Ｚ２Ｚ１Z2 +3 –1 OR +3 –2 :立体3の内側で立体1の外側、または、立体3の 内側で立体2の外側の空間

複雑なCG体系の例
空気ステンレス容器
アルゴンガス検出器

放射性溶液
半球＋円柱形状検出器

立体の入力RCC 1 0.00.00.00.00.030.010.0

RCC 2 0.00.00.10.00.029.89.9

RCC 3 0.00.05.00.00.0

15.05.0

RCC 4 0.00.0

5.1

0.0

0.0

14.9

4.9

RCC 5 0.0

0.0

6.0

0.00.08.0

2.0

RCC 6 0.00.0

6.1

0.00.07.9

1.9

SPH 7 0.00.0

14.0

1.9

SPH 8 0.00.0

14.0

2.0

SPH 9 0.0

0.0

20.0

4.9

SPH 10 0.0

0.0

20.0

5.0

RCC 11 0.0

0.0

-1.0

0.0

0.0

40.0

15.0

END

Z1+6 OR +7Z2+5 -6 OR +8 -7 -5Z3+4 -5 -8 OR +9 -4Z4+3 -4 OR +10 -9 -3Z5+2 -3 -10５ 空気Z6+1 -2

６ SUS容器Z7+11 -1

追跡終了領域END

１ 放射性溶液
２ SUS容器３ アルゴン検出器
４ SUS容器