MOMO; Geant4開発のための統合したGUIデスクトップ


2004年11月25日
Hajime YOSHIDA
鳴門教育大学

インデックス

  1. MOMOとその引き出されたバージョン
  2. MOMOを使って、どのようにGeant4検出器、物理学リスト、メイン・プログラム、およびmakefileを開発しますか
  3. GGE Geant4 幾何学エディタ
    1. 特徴
    2. 物質的なエディタとボリュームエディタ
    3. GGEのメニュー
    4. 物質的なエディタ
      1. 要素の周期表
      2. 物質的なエディタの機能
    5. 論理的なボリュームエディタ
      1. Geant4論理的な大量を定義する機能
    6. 物質的なボリュームエディタ
      1. 物質的な大量エディタの限界
      2. G4PVPlacementの建設者
      3. 単一の配置されたボリューム
      4. 再三のTranslationallyは大量を置きました
      5. 再三の回転方向に配置された大量
      6. X、YまたはZの方向、rhoにおけるレプリカ、phi、またはZの方向におけるレプリカ
    7. C++コードの世代
      1. GGEにおける命名規則
      2. デフォルト値とコンボボックス
  4. GPE Geant4 物理学エディタ
    1. 粒子
    2. EMプロセス
    3. GPEによって生成されたC++コード
    4. 持続的なファイル
  5. MOMOの友人ファイル
    1. MOMOによって生成されたMomomake.gmk
    2. MOMOによって生成されたメイン・プログラム
  6. Makefilesと環境変数
  7. GAGと利益
    1. さるぐつわ
    2. 利益
TOP 1) MOMOとその引き出されたバージョン

Momoは、GGE(Geant4 幾何学エディタ)、GPE(Geant4 物理学エディタ)、GAG(Geant4 順応的なGUI)、および利益(ネットワークのためのGeant4順応的なインタフェース)のような既存のツールを結合するGeant4のために一種の統合したGUIデスクトップと思われます。 それはまたユーザーに、彼の環境変数を反映しているmakefileを作成し、GGEとGPEによって生成されたC++ソースコードを利用する簡単なメイン・プログラムを作成し、運転アプリケーションをコンパイルする機能を提供します。 それはJavaで完全に書かれて、Linux、Windows、およびMacのようなジャワ島を運営しているどのようなプラットフォームの上ででも動きます。 現在、Java1.4(いくつかの機能はジャワ島1.5とともによく働きません)はサポートされます。 現在の時間に、MOMOの3つのバージョンがあります(それは、始まる違う方法を持っています)。
スタンドアロンのバージョン
それは、「ジャワ」コマンドを使って、コンソールの中で始められなければなりません。 スタンドアロンのバージョンのジャー(Javaアーカイブ)ファイルMOMO.jarは下でサイトからダウンロードされることができます: その環境と友人ファイルのセットが、準備される(後で説明されます)、MOMOが、C++メイン・プログラム、GNU makefileを作成することが可能で、運転プログラムを作るためにコンパイルする時のNaruto Webサーバー。 Geant4の実行を操縦するために、GAG(Geant4 順応的なGUI)と利益(ネットワークのためのGeant4順応的なインタフェース)は入手可能で、MOMOの現在のバージョンの中で統合します。
Java Web開始バージョン
このバージョンはデジタル署名とのスタンドアロンのバージョンとまったく同じMOMOをもっています。 ユーザーがウェブブラウザの中でそれをクリックする時に、ジャーファイルは自動的にダウンロードされます。 そして、それは彼に、彼が、サインを信頼して、それを始めたいかどうかを尋ねます。
MomoPluginからJAS3
上のように、JAS3はMomoPlugin.jarを積み込まれる時に同様な機能を提供します。 下に説明されるように、MomoPlugin.jarの現在のバージョンはスタンドアロンのバージョンの中で発見されたいくつかの機能(作成メイン・プログラムとmakefile)を欠きます。 pluginバージョンは、Geant4の実行を操縦するG4Pluginと連携して使われることができます。 MomoPluginとG4PluginはSLACで入手可能です。 メイン・プログラムは、G4Pluginと接続するためにG4UIrmiクラスを使わなければなりません。 フロントエンドのクラスG4UIrmiはより強く一理あります that それのマルチスレッドG4UIGAG 。 従って、G4Plugin + G4UIrmiのユーザーは、シミュレーションの実行を操縦し、結果を分析して、退去(コード開発のための言うまでもなく強力な統合した環境)なしでロングランの実行をやめることができます。 このマニュアルはこの興味深いpluginを扱いません。

後ろ
2) MOMOを使って、どのように検出器、物理学リスト、メイン・プログラム、およびmakefileを開発しますか
MOMOを使って、ユーザーは幾何学を作成することができて、物理学(主要なC++クラスとmakefile)はGeant4ライブラリによってそれらを編集します。 Schematicalな図は下で示されます。
   GGE             GPE            MOMOまたはMOMO Envユーザー。 パネルMOMO友人
    |               |                 |              |                   |
 Geometry.cc   PhysicsList.cc    MySimulation.cc makefile         *.cc *.hh
    |               |                 |              |                   | Geometry.o PhysicsList.o
     MySimulation.o Momomake.gmk
          *.o
       \             \                |             /                  /
                                 Mysimulation
                                      /\
                                      ||
                                 GAG/利益/G4Plugin

共通のMOMOのすべてのバージョンは以下の重要な機能を提供します; MOMOは特別なメニューを持っています;
  1. 「プロジェクト」メニュー
  2. これが文書化するヘルプメニューは表示されます。
MOMOは支持者によって助けられます;
後ろ
3つの)GGE Geant4幾何学エディタ

GGEまたはGEANT4幾何学エディタは、GEANT4の検出器幾何学書を「作成する」表形式のツールです。 テーブル〈ユーザーが満たした〉の列から、それは完全なC++クラスコードを生成します 素材および論理的な巻で線を描く 。 それは論理的な大量の物質的な大量を含んで置いている完全な幾何学の制限されて、比較的簡単なケースが可能です。

3-1) 特徴

後ろ
テーブル
ユーザーが彼ら自身の検出器パラメータで誰のセルを満たすことができるかの中に、それはユーザーにいくつかのテーブルを提供します。 テーブルの各列はクラスの一定の方法の一種の例示またはアプリケーションと一致しています。
Geant4デフォルトについてユーザーを援助してください。
デフォルト値、Geant4の正規のユニット、前定義されたGeant4定数などは視覚的にユーザーの選択のために提供されます。
C++コード生成
彼らが部分的で、imcompleteであってもテーブルの中でデータを使って、幾何学のクラス名が供給されるならば、GGEは検出器のためにC++ソースコードを生成することができます。
ユーザーがそう望んでいるならば、GGEによって生成されたC++コードは、原子、素材、固体、色属性、論理的な大量、および回転と翻訳を持つ物質的な大量の定義を含めて検出器の徹底的な説明であるかもしれません。
検出器データの固執と再利用
全部検出器データと物質的なデータはJavaの連載フォーマットまたはXMLフォーマットの中の、la GDML-1に保存されることができます。 それはより後での再利用のためにリロードされることができます。 la GDML-1が、素材と論理的な大量に制限したことであるXMLフォーマット。 しかし、XMLファイルはGDML-1の現在のimcompletenessのためMOMOのテーブルの中でいくつかのアイテムを欠きます。 物質的な大量はサポートされません。
友人はファイルし、特別な「プロジェクト」は機能します。

後ろ

3-2) 物質的なエディタとボリュームエディタ


GGEは、相互に関係づけられる2つの表形式のエディタ(素材とボリューム)から成ります。
物質的なエディタは2つのテーブルから成ります; 「最初からの素材」のための一方、「合成の素材」のための別のもの。
ボリュームエディタは2つの少ないエディタから成ります; 「論理的な大量」のための一方と「物質的な大量」のための別のもの。 論理的なボリュームエディタは、固体で、物質的で、視覚化の属性を含めて、ユーザーが論理的な大量の徹底的な説明を指定することを可能にします。
物質的なボリュームエディタは対照的に制限された使用ケースだけをサポートします;単一の配置されたボリューム繰り返し配置された大量 増分のコピー数(翻訳上の配置または軸方向に対称的な配置) および レプリカ(どのような軸の中)。

秘訣!

  1. ユーザーによるテーブルのどれへのでもどのような変化でもGGEの内部のデータ構造に、それからC++コードに自動的に反映されるように、GGE/MOMOはJavaのMVC(モデル表示コントロール)モデルに基づきます。 クラス名だけが義務的であるけれども、ユーザーがどのような満たされた表形式のセルもなしでさえ今にもimcomplete C++クラスのためにさえファイルを取ってくることができるように、これは今にも真実です。
  2. 全体検出器説明は持続的なファイルに保存されることができて、より後での再利用のためにロードされることができます。
  3. テーブルからC++コードを生成するために、GGEは自身の名付ける規則を使用します。 これは後で説明されるでしょう。

後ろ

3-3) GGEのメニュー


GGEは一番上のメニューボタンと補充者のテキストエリアを持っています。

3-4) 物質的なエディタ


後ろ
エディタが2つの少ないテーブルから構成されている素材
  1. 「最初から素材」 および
  2. 「合成の素材」。
これらのテーブルは必要なら意志としてenlengthenedされることができます。 2つのテーブルの境界はまた意志として動くことができます。
すべての列は、1つの素材(ひっかくか、妥協してください)と一致しています。 要素(s)を選んだ後に、ユーザーが、「付加してください」または「挿入」ボタンを押す時に、列は選ばれた要素(s)とデフォルト値で満たされます。
後ろ

3-4-1) 要素の周期表


テーブルの「付加してください」または「挿入」ボタンの1つが押される時に、周期表はポップアップされます。
要素がマウスクリックによって選ばれて、それがある時に、ラベル色は緑色になります。 複数の要素(現在のupto 20)は合成の素材として同時に選ばれることができます。 いつマウスが選ばれた要素の上でクリックされるか、いるかは選択解除されます。 従って、ユーザーは正しい要素(s)を選ぶことができます。
原子のfoundamental特性; Z、Aなどは原子のテーブルにあらかじめ組み込まれて、テーブルに自動的にコピーされます。 ユーザーに非可視でも、それらは、C++、XML、およびJavaの連載ファイルを作成するためにまた使われます。
要素ウィンドウは今にもウィンドウの近いボタンによって隠されることができます。
後ろ

3-4-2) 物質的なエディタの機能


以下の機能は実施されます;
  1. 素材を付加し、挿入し、編集し、削除してください
  2. 使用において」最初のカラムは、ユーザーの検出器(論理的な大量)中で使われた素材をマークすることになっています。 列がはじめてに作成される時に、デフォルト値は「使用において」です。
  3. 持続的な物質的なファイルから/に入力し、出力してください
    物質的なテーブルはJavaの持続的なファイルに保存されて、再利用されることができます。 la GDMLフォーマットがまた提供されるXML。 GDMLがまだ完全でなく、素材の状態などのような定義の一部を欠いていることに注意してください。
まだ実施されたNotはそうです; C++コードの上で気づいてください。
MOMOは要素のC++例を複写しないけれども、合成の素材の同じ名前の「使用において」例の可能な複写から保護されません。

3-4-3) dicom.xmlから生成されたコードフラグメント; XMLファイル。

// 要素
G4Element* elementH=新しいG4Element(「水素」、「H」、1。 、 1.00794*g/mole );
G4Element* elementC=新しいG4Element(「炭素」、「C」、6。 、 12.011*g/mole );
G4Element* elementN=新しいG4Element(「窒素」、「N」、7。 、 14.00674*g/mole );
G4Element* elementO=新しいG4Element(「酸素」、「O」、8。 、 15.9994*g/mole );
G4Element* elementNa=新しいG4Element(「ナトリウム」、「Na」、11。 、 22.989768*g/mole );
G4Element* elementMg=新しいG4Element(「マグネシウム」、「Mg」、12。 、 24.305*g/mole );
G4Element* elementP=新しいG4Element(「リン」、「P」、15。 、 30.973762*g/mole );
4G要素*elementS = new4G要素("は"、"S"、16を硫黄で処理します
。 、 32.066*g/mole );
G4Element* elementCl=新しいG4Element(「塩素」、「Cl」、17。 、 35.4527*g/mole );
G4Element* elementK=新しいG4Element(「カリウム」、「K」、19。 、 39.0983*g/mole );
G4Element* elementCa=新しいG4Element(「カルシウム」、「Ca」、20。 、 40.078*g/mole );
4G要素*elementFe = new4G要素("は"、"Feインチ、26にアイロンがけし
ます。 、 55.845*g/mole );

// 組み合わせからの素材

4Gの素材*SkeletonSpongiosa = new4Gの素材(「SkeletonSpongiosa」、1159.0の*kg/m3、12
、kStateUndefined、*273.15ケルビン、1.0個の*大気);
SkeletonSpongiosa->AddElement( elementH、 0.085 );
SkeletonSpongiosa->AddElement( elementC、 0.404 );
SkeletonSpongiosa->AddElement( elementN、 0.058 );
SkeletonSpongiosa->AddElement( elementO、 0.367 );
SkeletonSpongiosa->AddElement( elementNa、 0.0010 );
SkeletonSpongiosa->AddElement( elementMg、 0.0010 );
SkeletonSpongiosa->AddElement( elementP、 0.034 );
SkeletonSpongiosa->AddElement( elementS、 0.0020 );
SkeletonSpongiosa->AddElement( elementCl、 0.0020 );
SkeletonSpongiosa->AddElement( elementK、 0.0010 );
SkeletonSpongiosa->AddElement( elementCa、 0.044 );
SkeletonSpongiosa->AddElement( elementFe、 0.0010 );

上記のC++ラインは、XMLファイル このXMLファイルをリロードしたMOMOにより作成されたla GDML の次の破片から生成されます。

<?xml version="1.0" encoding="UTF-8"?>
<gdml xmlns:gdml=「http://cern.ch/2001/Schemas/GDML」xmlns:xsi=「http://www.w3.org/2001/XMLSchema-instance
」xsi:noNamespaceSchemaLocation=「../スキーマ/gdml_1.0.xsd」><!--スキップ>

  <素材>
     <!--要素>
     <要素name=「水素」formula=「H」Z=「1」><原子value=「1.00794」/>
     </element>
     <要素name=「炭素」formula=「C」Z=「6」><原子value=「12.011」/>
     </element>
     <要素name=「窒素」formula=「N」Z=「7」><原子value=「14.00674」/>
     </element>
     <要素name=「酸素」formula=「O」Z=「8」><原子value=「15.9994」/>
     </element>
     <要素name=「ナトリウム」formula=「Na」Z=「11」><原子value=「22.989768
     」/>
     </element>
     <要素name=「マグネシウム」formula=「Mg」Z=「12」><原子value=「24.305
     」/>
     </element>
     <要素name=「リン」formula=「P」Z=「15」><原子value=「30.973762」/>
     </element>
     <要素name=「硫黄」formula=「S」Z=「16」><原子value=「32.066」/>
     </element>
     <要素name=「塩素」formula=「Cl」Z=「17」><原子value=「35.4527」/>
     </element>
     <要素name=「カリウム」formula=「K」Z=「19」><原子value=「39.0983」/>
     </element>
     <要素name=「カルシウム」formula=「Ca」Z=「20」><原子value=「40.078
     」/>
     </element>
     <要素name=「鉄」formula=「Fe」Z=「26」><原子value=「55.845」/>
     </element>

     <!--組み合わせからの素材>
     <物質的なname=「SkeletonSpongiosa」>
         <D type="denstiy" value="1159.0" unit="kg/m3"/><T type=
         「温度」value=「273.15」unit=「ケルビン」/><P type=「パスカル」value=
         「1.0」unit=「大気」/><小数部n=「0.085」ref=「H」/>
         <小数部n=「0.404」ref=「C」/>
         <小数部n=「0.058」ref=「N」/>
         <小数部n=「0.367」ref=「O」/>
         <小数部n=「0.0010」ref=「Na」/>
         <小数部n=「0.0010」ref=「Mg」/>
         <小数部n=「0.034」ref=「P」/>
         <小数部n=「0.0020」ref=「S」/>
         <小数部n=「0.0020」ref=「Cl」/>
         <小数部n=「0.0010」ref=「K」/>
         <小数部n=「0.044」ref=「Ca」/>
         <小数部n=「0.0010」ref=「Fe」/>
     </material>
<!--スキップ>
</gdml>

後ろ

3-5) 論理的なボリュームエディタ


エディタが構成されている論理的なボリューム

3-5-1) 論理的なボリュームエディタの機能

後ろ
以下のfunctionaliteisは実施されます;
  1. 定義するG4LogicalVolumes
    論理的なvulumeテーブルの各列はG4LogicalVolume建設者の例を表しています。 ユーザーは対応したボタンによって列を付加し、挿入するか、削除することができます。
    テーブルは以下のカラムを持っています;
  2. 4Gの固体を選びます
    すべてのGeant4固体は、「固体を選んでください」ラベルの右に置かれた固体のリストボックスから選ばれることができます。
  3. 固体の線維症を選んだ後に、ユーザーは、「付加してください」または「挿入」ボタンを押し、新しい列はテーブルの中で作成されます。
  4. 「固体の」セル(2番目のカラム)をクリックすることによって、ウィンドウの上のポップは、固体のパラメータを指定するようです。 ユーザー缶
    MOMOによって生成されたBREP多円錐の論理的なボリューム「thintube」のコード破片。 赤における言葉はユーザーによってタイプ入力されたそれらです。
    G4double DzArraythintube []=
         {-1000.0台の*マイクロメーター、-750.0台の*マイクロメーター、-500.0台の*マイ
         クロメーター、-250.0台の*マイクロメーター、0.0台の*マイクロメーター、250.0台
         の*マイクロメーター、500.0台の*マイクロメーター、750.0台の*マイクロメーター
         、1000.0台の*マイクロメーター];
    G4double RminArraythintube []=
         {1.0台の*マイクロメーター、1.0台の*マイクロメーター、1.0台の*マイクロメータ
         ー、1.0台の*マイクロメーター、1.0台の*マイクロメーター、1.0台の*マイクロメー
         ター、1.0台の*マイクロメーター、1.0台の*マイクロメーター、1.0台の*マイクロメ
         ーター];
    G4double RmaxArraythintube []=
          {20.0台の*マイクロメーター、16.0台の*マイクロメーター、12.0台の*マイクロメ
          ーター、8.0台の*マイクロメーター、4.0台の*マイクロメーター、8.0台の*マイク
          ロメーター、12.0台の*マイクロメーター、16.0台の*マイクロメーター、20.0台の*
          マイクロメーター];
    
    G4BREPSolidPCone *solidthintube =新規G4BREPSolidPCone(「solidthintube
    」、//その名0.0*mrad、//その開始角度
    *270.0deg、その冒頭が歪曲する//
    9、//そのnZ
    DzArraythintube[0]、//z開始
    DzArraythintube、//z価値
    RminArraythintube、 //rmin
    RmaxArraythintube );  //rmax
    
    G4LogicalVolume * logicalthintube=新しいG4LogicalVolume(solidthintube
    、//その固体の炭素、//その素材
    「logicalthintube」、//その名前
     0、0、0);
    
    logicalthintube->SetVisAttributes()
    ;
    

  5. 定義する4Gの色
    視覚化属性とその名前は論理的な大量によって必要とされています。 それらは、グラフィカルな色選択者を使って、定義されることができます。 各色の与えられたユニークな名前はエディタパネルにリストされます。 選択者によって定義されたRGB数は、C++コードを生成するために取られます。
    MOMOによって生成されたコードフラグメントの例
    G4VisAttributes*lightblue= new G4VisAttributes(4G色(0/255。 、255/255. 、255/255.
     ));
    
  6. 使われた素材を作ってください」ボタン。
    このボタンをクリックして、GGEは論理的なボリュームテーブルの中で指定された素材を走査し、それに応じて物質的なテーブルの「使用において」セル(最初のカラム)をマークします。 論理的な大量において使われなかったすべての他の素材はマークされるわけではありません。 「使用において」とマークを付けられた列だけが、C++コードを生成するために使われることに注意してください。

後ろ

3-6) 物質的なボリュームエディタ


物質的なボリュームエディタは論理的なボリュームの置換の違う方法の5つの少ないテーブルから成ります。 各テーブルはタブを付けられた枠に含まれています。

3-6-1) 物質的な大量エディタの限界


論理的なボリュームエディタに比べて、物質的なボリューム1は一般性を制限しました。 従って、ユーザーが、論理的な大量を置く以下の過度に割り切った方法に満足しないならば、彼は出発点として論理的な大量などのために部分的に生成されたC++コードを使うことができます。

3-6-2) G4PVPlacementの建設者

後ろ
回転のタイプと母ボリュームのタイプによると以下の4タイプの建設者は実施されます。
  1. フレームの、物質的な母ボリュームの1人のconstructor = rotationをタイプしてください。
  2. ボディのタイプ2constructor = rotation、物質的な母ボリューム
  3. フレームのタイプ3constructor = rotation、論理的な母ボリューム
  4. ボディのタイプ4constructor = rotation、論理的な母ボリューム
次にに上の4つのケースのためにMOMOによって生成された例C++コードがあります。 最初の2つの場合に、赤における言葉は、ユーザーがエディタのセルにタイプ入力したそれらです。
  1. pName(すなわちG4PVPlacementの非スタンスの名前)を指定する最初のカラムの中の「ボックスbp」と「ボックスfp」
  2. spscifyに2番目のカラムの「動きを邪魔してください」 それらの論理的な巻、pLogicalな名前 。 論理的なボリュームパネルの中ですでに定義されたすべての名前は、1つを選ぶために表示されます。 この場合に、1つの「ボックス」は、違う物質的な大量を作るために使われます。
  3. pMother(すなわち母ボリュームの名前)において「コンテナ」。 接頭辞「論理的です」または「物質的です」は母ボリュームのタイプに従って付着します。
pNamesは、回転行列と回転角度などのようなローカル変数を明示するために接尾辞として使われます。 「コンテナ」だけがセルにタイプ入力される所で、それどころか、いくつかの接頭辞は、physicalcontainerとlogicalcontainerのように例を区別するために使われます。
命名規則は後で説明されるでしょう。

// 単一の配置された配置
// ボディ回転+物質的な母
G4RotationMatrix rotMatrixbox-bp;   // ユニット回転行列4G
の倍のanglebox-bp = 0.0*deg;   // 回転した角度rotMatrixbox-bp.rotateX(anglebox-bp)
;  // 腐敗行列

G4VPhysicalVolume*ボックスbp= new G4PVPlacement(4Gの変化3D
の(rotMatrixbox-bp       //回転
                 G4ThreeVector(0.0*mm、 0.0*mm、 0.0*mm))、
                 「ボックスbp」(その名前(2番目の建設者)が
                 ケースに入れる//)         //その論理的なボリュームphysicalcontainer 
                 、              間違いの//その母ボリューム、                 //
                 無ブーリアン操作0);                       //コピー数

// 回転+物質的な母を形成してくださいG4RotationMatrix rotMatrixbox-fp;   // ユニット回転行列4G
の倍のanglebox-fp = 0.0*deg;   // 回転した角度rotMatrixbox-fp.rotateX(anglebox-fp)
;  // 腐敗行列

G4VPhysicalVolume*ボックスfp= new G4PVPlacement(新しいG4RotationMatrix(rotMatrixbox-fp)
        // 
フレーム回転
                 G4ThreeVector(0.0*mm、 0.0*mm、 0.0*mm)、
                 「ボックス-fp」、// 1番目の建設者その名前
                 ボックス、         //その論理的なボリュームphysicalcontainer
                 、間違いの//その母ボリューム、//無ブーリアン操作
                 0);    //コピー数

// ボディ回転+論理的な母

G4RotationMatrix rotMatrixbox-bl;   // ユニット回転行列4Gの倍のanglebox-bl = 0.0*deg
;   // 回転した角度rotMatrixbox-bl.rotateX(anglebox-bl);  // 腐敗行列


G4VPhysicalVolume*ボックスbl= new G4PVPlacement(4Gの変化3Dの(rotMatrixbox-bl、//
回転
                 G4ThreeVector(0.0*mm、 0.0*mm、 0.0*mm))、
                 ボックス、//その現在の論理的なボリューム(4番目の建設者)「ボッ
                 クス-bl」、//その名前
                 logicalcontainer、              //その母ボリューム
                 間違いです                 //無ブーリアン操作
                 0);                       //コピー数

// 回転+論理的な母を形成してください。

G4RotationMatrix rotMatrixbox-fl;   // ユニット回転行列4Gの倍のanglebox-fl = 0.0*deg
;   // 回転した角度rotMatrixbox-fl.rotateX(anglebox-fl);  // 腐敗行列

G4VPhysicalVolume*ボックスfl= new G4PVPlacement(新しいG4RotationMatrix(rotMatrixbox-fl)
        // 
フレーム回転
                 G4ThreeVector(0.0*mm、 0.0*mm、 0.0*mm)、
                 ボックス、// 3番目の建設者その論理的なボリューム「ボックス-fl」
                 、//その名前
                 logicalcontainer、      間違いの//その母ボリューム、//無ブーリア
                 ン操作
                 0);    //コピー数

以下の簡単な配置はGGEにおいて提供されます。 すべての配置は独立なタブを付けられた枠に含まれています。
後ろ

3-6-3) 単一の配置されたボリューム(SPV)


各列は、論理的なボリュームに1対1の一致を持っている物質的なボリュームを表しています。 C++コードラインはまさに上で示されます。
重要です!! 世界ボリュームはこのテーブルの第一列で定義されなければなりません。
  1. 最初のカラムはボディまたはフレーム回転のどちらかを指定します。
  2. 2番目のカラムは物質的なボリュームの例の名前を指定します。
  3. 置かれるために、3番目のカラムは論理的なボリュームの名前を指定します。
  4. 4番目のカラムは母ボリュームのタイプを指定します。 母ボリュームは無効です(マスタ参照システム)、論理的であるか、物質的です。 MARSまたは世界ボリュームは第一列で指定されなければなりません。
  5. それがNULLではないならば、5番目のカラムは母ボリュームの名前を指定します。
  6. 長さの選択可能なユニットによって、X、Y、またはZの方向(デフォルトは全然翻訳ではありません)で、カラム7、8、および9-thは翻訳を指定します。
  7. 11-thカラムは回転(フレームまたはボディ)の軸を指定します; 12-thカラムの中の角度を持つX、Y、またはZ軸のまわりの回転

後ろ

3-6-4) 再三のTranslationallyは大量(RTPV配置)を置きました。


各列は、増分のコピー数を持つ論理的なボリュームのコピーのどのような数からでも成る物質的なボリュームを表しています。
  1. 上のように、一番目から4-thカラムは同じです。
  2. カラム6、7、および8-thは最初のコピーのポジションを指定します。
  3. 10-thカラムは配置の方向を指定します; X、Y、またはZの方向
  4. 11-thカラムは置換の増分のステップサイズを指定します。
  5. 最後のカラムはコピーの数を指定します。
次ににテーブルの中のラインから生成されたC++コードの破片があります。 ここで、「Boses」は最初のカラム、pNameにタイプ入力されます。 この言葉は、ループ変数と同様にローカル変数を明示するために接尾辞として使われます。 「ボックス」はpLogicalな(すなわち論理的なボリュームの名前)ものです。 ここで、母の名前はpMotherセルで「世界」としてタイプ入力されて、それは物質的です。 「ボックス」論理的なボリュームはコピー数「copyBoxes」を持つ10個の*cmのステップの中のX0 = -100*cmからのXの方向1から21に沿って翻訳されます。
G4int copyBoxes;
copyBoxes=0;
(G4int Boxes=1のために; ボックス<=21; ボックス++){
  G42倍ボックス[trans Boxes] =-100.0*cm+10.0*cm*(
  ボックス1);
  G4VPhysicalVolume * Boxes = new G4PVPlacement(0、      //無回転G4ThreeVector(
  箱詰め横断、0.0*cm、0.0*cm)、「ボックス」、//そ
  の名前
                 ボックス         //その論理的なボリュームphysicalworld 
                 、            間違いの//その母ボリューム、             //無ブー
                 リアン操作copyBoxes++);      //コピー数}

後ろ

3-6-5) 再三の回転方向に配置された大量; (RRPV配置)


各列は、増分のコピー数を持つ論理的なボリュームのコピーのどのような数の軸方向に均整のとれた配置からでも成る物質的なボリュームを表しています。
  1. カラムは、上のように、「pName」、「pLogic」、「MomType」、および「pMother」が同じであるのを「提案します」。
  2. (X0、 Y0、 Z0)カラムは軸状の回転のセンターのポジションを指定します。
  3. 「半径」カラムは軸方向に均整のとれた配置の半径を指定します。
  4. 「RotAxis」カラムは回転した軸を指定します; X、Y、またはZ
  5. 「Phi_0」と「dPhi」カラムは始まる角度と増分のステップ角度を指定します。
  6. 最後のカラムはコピーの数を指定します。
下のように、テーブルの列はC++コード列を生成します。 ここで、「円」はpNameです。 論理的なボリューム「ボックス」は30個の*degのステップを持ち、コピー数「copyCircle」を持つ*0degからのZ軸の1から10まわりでコピーされます。 回転(x0Circleのセンター、y0Circle、z0Circle) =(-200*mm、*100mm、0.0の*mm)。
// ボディのアクティブな回転
G4int copyCircle;
copyCircle=0;
G4RotationMatrix rotationMatrixCircle;4Gの倍のstartCircle = 0.0*deg;
4Gの倍のincCircle = 30.0*deg;
rotationMatrixCircle.rotateZ(startCircle);
4Gの倍のx0Circle = -200.0*mm;
4Gの倍のy0Circle = 100.0*mm;
4Gの倍のz0Circle = 0.0*mm;
4Gの倍のradiusCircle = 300.0*mm;

(G4int Circle=1のために; 円<=10; Circle++){
  G4double transCircle = startCircle+incCircle*(Circle-1);

  G4double xCircle, yCircle, zCircle;
  xCircle = x0Circle + radiusCircle * cos(transCircle);
  yCircle = y0Circle + radiusCircle * sin(transCircle);
  zCircle = z0Circle;
  G4VPhysicalVolume * Circle = new G4PVPlacement(G4Transform3D(rotationMatrixCircle,	//rotate
		 G4ThreeVector(xCircle, yCircle, zCircle)),
		 "Circle",   //its name 
		 box,         //its logical volume
		 physicalworld,            //its mother volume
		 false,             //no boolean operation
		 copyCircle++);      //copy number 
  rotationMatrixCircle.rotateZ(incCircle);
}


後ろ

3-6-6、Xにおける7つの)レプリカ、Y、またはZの方向(rho、phi、またはZの方向におけ るレプリカ)

  1. 幅(長さまたは角度における)とレプリカの数
  2. オフセット(長さまたは角度における)
  3. 論理的な、または物質的な母ボリューム
下で、テーブルの中の列から生成されたC++コード列です。 「スライスされます」はpName( 最初のカラム)です。 「ボックス」は、スライスされた.pMotherが「世界」であり、それが物質的なボリューム であることである論理的なボリュームです。 X軸に沿ったレプリカの数は2.0の*micronmeter幅によって、そして*-1.0mmのオフセットに よって1000です。
翻訳をスライスしています/

「physicalSlicedします」というG4PVReplica * physicalSliced=新規G4PVReplica(、//
名logicalbox、その論理的の//
                physicalworld、//その母
                kXAxis、軸に沿って//
                レプリカの1000個、//No
                2.0台の*マイクロメーター、//幅
                -1.0*mm); // オフセット
リニアの測量またはリニアの回転を持つparemetrisedされた大量は計画されるけれどもまだ実施されません。
後ろ

3-7) C++コードの世代


インプリメンテーションファイルとクラス定義ファイルを生成するために、GGEは2つのメニューボタンを持っています。 ここに、完全に作成される から 自動的に生成されたC++コードのサンプルがあり skeltonテーブル けれども、クラス名「MyDetector」によって。
//***** 結婚された2月25日20:27:44のJST 2004年でGeant4幾何学エディタによって生成さ
れます*****

//------HeaderFile-
 #は「MyDetector.hh」を含みます。

#は「G4UnitsTable.hh」を含みます。

#は「G4VUserDetectorConstruction.hh」を含みます。

#は「globals.hh」を含みます。
#は「G4Material.hh」を含みます。
#は「G4MaterialTable.hh」を含みます。
#は「G4Element.hh」を含みます。
#は「G4ElementTable.hh」を含みます。
#は「G4LogicalVolume.hh」を含みます。
#は「G4ThreeVector.hh」を含みます。
#は「G4PVPlacement.hh」を含みます。
#は「G4PVReplica.hh」を含みます。
#は「G4SDManager.hh」を含みます。
#は「G4VisAttributes.hh」を含みます。
#は「G4Colour.hh」を含みます。

MyDetector::MyDetector()
{ ; }
MyDetector::~MyDetector()
{ ; }
G4VPhysicalVolume* MyDetector::Construct( ) {
// 要素

// 組み合わせからの素材


// 最初からの素材


// 視覚化属性


// 論理的な大量


// 物質的な大量----  スライスして、シングルは配置、繰り返された配置を置きました。
---------------------------


// 単一の配置された配置


// 再三の配置翻訳


// 再三の配置AxialSymmetoric


// スライス翻訳


// スライスAxialSymmetric


// 現実の世界を戻してください。

次ににこのskeltonクラスの定義ファイルがあります。

// 幾何学ヘッダーファイル
結婚された2月25日20:27:44のJST 2004年でGeant4幾何学エディタによって生成された// MyDetector.hh


#ifndef MyDetector_h
#はMyDetector_h 1を定義します。

クラスG4VPhysicalVolume;
#は「G4VUserDetectorConstruction.hh」クラスMyDetectorを含みます:  公的であるG4VUserDetectorConstruction{
      public:
      MyDetector();
     ~MyDetector();

      public:
      G4VPhysicalVolume* Construct();
  };
#endif

後ろ

3-7-1) GGEにおける命名規則


正しくGGEを使うことと同様に生成されたC++コードを読むために、知っているGGEの命名規則は役立っています。 適切なGeant4建設者の表情は非常に示唆的になるでしょう。
  1. 要素と素材
    1. XXXが周期表の中の要素のシンボルを表している所で、要素は「elementXXX」と名付けられます。
    2. ちょうど、物質的なウィンドウの2番目のカラムをタイプ入力したように、素材は名付けられます。
  2. 固体と論理的な大量
    「論理的なボリューム」の最初の(一番左)カラムにタイプ入力された「名前」は、対応した固体を名付けるために使われます。 名前の「世界」がボックスの論理的なボリュームに与えられるならば、4Gの固体は例「solidworld」を持っています。
  3. 論理的で、物質的な大量
    1. テーブルの中で満たされたpName(物質的であるか、論理的です)セルのストリングは例の名前として文字どおりに使われます。
    2. 「pName」によって定義された物質的なボリュームの例は「物質的な」、i.e.を前置された名前を持っていて、例の名前は「物質的である」+ pName(+ =>ストリング連結)です。 「論理的です」は論理的なボリュームの例に追加されます。
    3. SPV(単一の配置されたボリューム)場合に、カラム「pName」(物質的なボリュームの例)と「pLogical」は同じストリングを持つかもしれません。
    4. RVA(再三の大量配置)場合に、「pName」は、コピーが繰り返し置かれる「pLogical」と違います。
  4. すべての変数はそれらの適切な例にちなんで名付けられます。 例えば見てください。制御変数はRVAのそれゆえループにおいて使いました。
    別の例は、BREP幾何学を定義する配列です。

後ろ

3-7-2) デフォルト値とコンボボックス

  1. 素材GGEのデフォルトオプションの値は、デフォルト値に、あらかじめ満たされたカラムにおいて、またはコンボボックスを提供します。 「使用」、「状態」、および「ユニット」カラムはコンボボックスを装備されます。 温度とプレッシャーカラムは*273.15ケルビンと1つの*大気であらかじめ満たされます。
  2. 大量「母Typeの」中のデフォルト値はG4PVPlacementにおけるNULL(すべての母)であり、論理的です(タイプ2、4人の建設者)、またはフィジカル(2人または4人の建設者をタイプしてください)です。


4)GPE: Geant4 物理学エディタBACK

ユーザーが、粒子とプロセスの間の協会を定義することができるように、GPEはGUIツールです。 それは2つの部分から成ります;
物理学リストテーブル
これはGPEの上部の半分において示されます。 デフォルトパラメータ(3番目から5番目のカラムからの)を持つ粒子(最初のカラム)とEMプロセス(2番目のカラム)のダブレットを追加するために、すべての列はC++コードラインを表しています。 粒子の名前はテーブルから下でマウスクリックによってコピーされることができます。
EM粒子テーブルとEMプロセステーブル
2つのテーブルはそれぞれタブを付けられた枠で表示されます。 ユーザーは粒子テーブルの中で粒子(s)を選び、それから、「付加してください」ボタンをクリックします。 新しい列はデフォルトプロセス「零」によって物理学リストテーブルの中で作成されます。 そして、ユーザーは「変化プロセス」ボタンにプロセスとクリックを選出します。

後ろ

4-1) 粒子


GPEは、instantiatedされるためにユーザーが粒子を選ぶことを手助けします。
  1. ユーザーは、カテゴリーに所属するか、個々の粒子を選ぶために、すべての粒子のセットを選ぶことができます。 以下のボタンは「EM粒子」というタイトルを付けられたタブを付けられた枠で示されます。
    • ボース粒子、軽粒子、中間子、重粒子、イオンの1つ
    • すべてのボース粒子、すべての軽粒子、すべての中間子、すべての重粒子、すべてのイオン、短命のすべて
    カテゴリー「Shortlived」における粒子は突然選ばれるか、全く選ばれないことができます。

粒子例示のためのC++コード


GPEは次の通り「ConstructParticle」方法を生成します;
MyPhysicsList::ConstructParticle()を取り消してください。
{
     ConstructBosons();
     ConstructLeptons();
     ConstructMesons();
     ConstructBarions();
     ConstructIons();
     ConstructShortLiveds();
}
そして、GPEは粒子の各カテゴリーのためにコードを生成します。
MyPhysicsList::ConstructBosons()を取り消してください。
{
     G4Geantino::GeantinoDefinition();
     ....
     ....
}

後ろ

4-2) EMプロセス


GPEと、ユーザーは仲間を選び、粒子にプロセスを登録することができます。 GPEの長所は次の通りであるかもしれません;
  1. プロセスマネジャー
    プロセスマネジャーへのプロセス、すなわちプロセスオブジェクトへのポインタ、および各小銅貨のための注文パラメータを登録するために必要とされている情報
  2. C++コード
    物理学における列から、リストテーブルGPEは似ているC++列を生成します;
      G4Aprocess* aProcess;
      G4ParticleDefinition*粒子;
    
      G4ProcessManager* pmanager = particle->GetProcessManager();
      ならば(aProcess->IsApplicable(*particle)) {pmanager->AddProcess (aProcess
      、idxAtRest、idxAlongStep、idxPostStep):
        }
    
  3. プロセスの選択において、デフォルト(あらかじめ決められます)を注文するパラメータは与えられます。 ユーザーは意志としてそれらを編集することができます。
  4. 入手可能なプロセス
      現在、交通、電磁波、および一般(4Gの腐敗)だけはGPEにおいて実施されます。
    • 以下の電磁気のプロセスはGPEにおいて入手可能です; 標準、ミューオン、xray、およびlowenergyは処理します。
    • 交通と4Gの腐敗はいつもGPE(デフォルト)によって含まれます。
    • Hadronicプロセスとモデルは実施されません。
    • 除かれたプロセスはパラメータ化であり、光学式に、以来、両方とも、深く検出器幾何学と相関しています。

後ろ

GPEによって生成された4-3の)C++コード

  1. 「ConstructProcess」方法のためのC++コード
    MyPhysicsList::ConstructProcess()を取り消してください。
    {
         AddTransportation();
         ConstructEM();
         //ConstructHad();
         ConstructGeneral():
    }
    
    ExN02PhysicsList::ConstructEM()を取り消してください。
    {
      theParticleIterator->reset();
      場合((*theParticleIterator))
        G4ParticleDefinition* particle = theParticleIterator->value();
        G4ProcessManager* pmanager = particle->GetProcessManager();
        4GのストリングparticleName = particle->GetParticleName();
    
    // 条項がPhysicsTableなものにおける列と一致しているならばそれぞれ
    
        ならば(particleName ==「ガンマ」)
          pmanager->AddProcess(新しいG4PhotoElectricEffect()、ordInActive、ordInActive
          、ordDefault);
        }
        ならば(particleName ==「ガンマ」)
          pmanager->AddProcess(新しいG4ComptonScattering()、ordInActive、ordInActive
          、ordDefault);
        }
        ならば(particleName ==「ガンマ」)
          pmanager->AddProcess(新しいG4GammaConversion()、ordInActive、ordInActive
          、ordDefault);
        }
        ならば(particleName ==「ガンマ」)
          pmanager->AddProcess(新しいG4PolarizedComptonScattering()、ordInActive、ordInActive
          、ordDefault);
        }
        ならば(「e-」というparticleName ==)
          pmanager->AddProcess(新しいG4MultipleScattering()、ordInActive、1、1);
        }
    .....
    .....
    
  2. ConstructGeneral()のためのC++コード
    #は「G4Decay.hh」を含みます。
    
    ExN02PhysicsList::ConstructGeneral(){を取り消してください。
      4Gの腐敗*theDecayProcess = new G4Decay();
      theParticleIterator->reset();
      場合((*theParticleIterator))
        G4ParticleDefinition* particle = theParticleIterator->value();
        G4ProcessManager* pmanager = particle->GetProcessManager();
        ならば(theDecayProcess->IsApplicable(*particle)) {pmanager ->AddProcess
        (theDecayProcess) ;
          pmanager ->SetProcessOrdering(theDecayProcess、 idxPostStep);
          pmanager ->SetProcessOrdering(theDecayProcess、 idxAtRest);
        }
      }
    }
    
  3. GPEはユーザーの物理学リストクラスのヘッダーファイルを生成します。
  4. デフォルト切断値のためのC++は、ユーザーの交差された長さを使って、生成されることができます。 (無地域による切断)。
    ExN02PhysicsList::SetCuts()を取り消してください。
    {
    タイプ入力した// defaultCutValueは使われます。
    
      ならば(verboseLevel >1)
        G4cout << "ExN02PhysicsList::SetCuts:";
      }
      SetCutsWithDefault();
    }
    
後ろ

4-4) 持続的なファイル


C++にコード化させるためまたは持続的なファイルに保存するために、クラス名とデフォルト切断値は不可欠です。 GPEの内容はJava連載フォーマットのファイルに保存されることができて、再利用されることができます。
5) MOMOの友人ファイル

友人ファイルはMomoHomeの下に含まれます。 赤におけるファイルはMOMOによって作成されます。
[~/MomoPlugin]$ ls -R MomoHome
MomoHome:
MomoN02Test.cc             PDGmaterials.xmlは/MomoN02MyDetector.g4dt
を含みます。     readme             src/ MomoN02PhysicsList.g4ph
     Momomake.gmk dicomVolume.xml vis.mac

MomoHome/は含みます:
MomoEventAction.hh MomoN02PhysicsList.hh          MomoRunAction.hh MomoN02MyDetector.hh MomoPrimaryGeneratorAction.hh MomoVisManager.hh

MomoHome/src:
MomoEventAction.cc MomoN02PhysicsList.cc          MomoRunAction.cc MomoN02MyDetector.cc MomoPrimaryGeneratorAction.cc MomoVisManager.cc
後ろ

MOMOによって生成された5-1つの)Momomake.gmk


以下は自動的に生成された「Momomake.gmk」ファイルです。 赤における言葉はユーザーによって指定された目標名です。 例において、G4WORKDIRとG4BINDIR(緑色における)は相対的なパス(期間)で指定されます。 momoが始められた所で、現在のディレクトリが意味していることに注意してください。
##### GNUmakefile#####
#----------------------------------------------------------
バイナリを作るために規則とパスを定義している#スクリプト。
#----------------------------------------------------------
Momo環境のためのGNUmakefileの#オートマチック作成。
G4TARGET、UI、およびVIS変数のユーザー選択を持ちます#
#Momoは、悪いgeantsを征服した伝説上の武士の名前です。 ----   H. ヨシダ。

名前:= MomoN02Test
G4TARGET:= $(名前)
G4EXLIB := true

使われた#ヴィス/GUI
G4VIS_USE_DAWN := 1
G4VIS_USE_DAWNFILE := 1
G4VIS_USE_OPENGLX := 1
G4VIS_USE_VRML := 1
G4VIS_USE_VRMLFILE := 1
#ヴィス/GUIは建築しました。
G4VIS_BUILD_DAWN_DRIVER := 1
G4VIS_BUILD_DAWNFILE_DRIVER := 1
G4VIS_BUILD_OPENGLX_DRIVER := 1
G4VIS_BUILD_VRML_DRIVER := 1
G4VIS_BUILD_VRMLFILE_DRIVER := 1

#将軍Envsは定義しました。
G4SYSTEM:= Linux g++
G4INSTALL:=/家/yoshidah/geant4.6.0.p01
G4WORKDIR:=.
G4BINDIR:=./貯蔵箱/Linux g++
G4USE_STL:=1
G4LIB_BUILD_STATIC:=1
G4LEDATA:=/家/yoshidah/G4DATA/G4EMLOW2.2
G4LEVELGAMMADATA:=/家/yoshidah/G4DATA/PhotonEvaporation

ifndef G4INSTALL
   G4INSTALL = ../../..
endif

. 偽物: すべて
all: lib貯蔵箱

  $(G4INSTALL)/config/binmake.gmkを含んでください。

5-2) MOMOによって生成されたメイン・プログラム

後ろ
すべての以下のコードは自動的にMOMOによって生成されます。 赤い言葉は、ユーザーがクラス名を定義したことです(MOMOはコード生成の間それを使います)。 緑色における言葉は意志として変更されることができます。
//##### MOMOメイン・プログラム#####
//#----------------------------------------------------------
Momo環境のためのメイン・プログラムの//#オートマチック作成。
// geant4.6.0のためにアップデートされた2003年12月
//--------------------------------------------------------------
Geant4 Momo //によって生成された// MomoN02Test.cc     場合 火曜日に 2月24日09時23
分50秒JST 2004 


このコードインプリメンテーションが// GEANT4協力 の知的所有権である//。
//
// または、プログラム(をコピーし、配布するか、修正することによって、何でも働きま
す。
// プログラム)に基づいて、このステートメント、//、およびすべてのその用語の受容を
示します。
//
//
#は「G4RunManager.hh」を含みます。
#は「G4UImanager.hh」を含みます。
// ユーザーインターフェイスドライバーの選択
#は「G4UIGAG.hh」を含みます。
// MomoのGGE#によって生成された検出器幾何学は「MomoN02MyDetector.hh
」を含みます。
// MomoのGPEによって生成された物理学リスト
#は「MomoN02PhysicsList.hh」を含みます。
// MomoのデフォルトPrimaryGeneratorAction
#は「MomoPrimaryGeneratorAction.hh」を含みます。
#は「MomoRunAction.hh」を含みます。
#は「MomoEventAction.hh」を含みます。
#ifdef G4VIS_USE
#は「MomoVisManager.hh」を含みます。
#endif
int main()
{
  // デフォルトランマネジャーを構成してください。
  G4RunManager* runManager = new G4RunManager;
  // 義務的な初期設定クラスを設定してください。
  runManager->SetUserInitialization(新しいMomoN02MyDetector)
  ;
  runManager->SetUserInitialization(新しいMomoN02PhysicsList)
  ;
#ifdef G4VIS_USE
  // 視覚化マネジャー
  G4VisManager* visManager = new MomoVisManager;
  visManager->Initialize();
#endif
  // 行動クラスを義務的なユーザーに課してください。
  runManager->SetUserAction(新しいMomoPrimaryGeneratorAction);
  // ユーザー行動クラスに、弾道runManager->SetUserAction(新しいMomoRunAction)
  を視覚化させてください;
  runManager->SetUserAction(新しいMomoEventAction);
  // 4Gのカーネルを初期設定してください。
  runManager->Initialize();
  // ユーザーインターフェイスマネジャーG4UImanager*UI = G4UImanager::GetUIpointer()
  にポインター犬をつかまえてください;
      G4UIsession * session = new G4UIGAG;
      session->SessionStart();
      セッションを削除してください;
  // 仕事終了
#ifdef G4VIS_USE
  visManagerを削除してください;
#endif
  runManagerを削除してください;
  リターン0;
}

以下の文書は、MOMOの環境パネルを助けるとGeant4文書から思われています。
10.5 Makefilesと環境変数BACK




このセクションは、どうGNUmakeインフラストラクチャーがGeant4において実施されるかを記述し、定義された最も重要な環境変数についてユーザー/インストーラにクイック・リファレンスガイドを提供します。

10.5.1 Geant4におけるGNUmakeシステム

このマニュアルのセクション2.7.1.1中で説明されるように、Geant4におけるGNUmakeプロセスは主に以下GNUmakeスクリプトファイル(によってコントロールされます。*.gmk スクリプトは中に置かれます。 $G4INSTALL/config): 単一のライブラリ(または、サブライブラリのセット)または実行可能を築くために、カレントディレクトリを、それのために興味があり、the "をもたらすものに明示的に変更しなければなりませんgmake「そこから、(を命じてください」グローバルなgmake(「化合物の図書館を建設するため)」。 ここに、ものが、図書館、および/またはexecutablesを建設するためにもたらすことができる基本的なコマンドまたはGNUmake「目標」のリストがあります: lib/貯蔵箱/ そしてtmp/ ディレクトリ

$G4INSTALL 環境変数は、Geant4ツールキットのインストールが、どこで、場所、従って、ライブラリが置かれるであろうカーネルを取るべきであるかを指定します。$G4INSTALL/lib. $G4WORKDIR 環境変数はユーザーによって設定されて、ユーザー作業用ディレクトリへのパスを指定します; テンポラリファイル(Geant4のインストールプロセスのオブジェクトファイルとデータの製品)は中に置かれるでしょう。$G4WORKDIR/tmp使われたシステムアーキテクチャによると。 バイナリは中に置かれるでしょう。 $G4WORKDIR/貯蔵箱使われたシステムアーキテクチャによると。 へのパス$G4WORKDIR/貯蔵箱/$G4SYSTEM 追加されるべきです。$パス 利用者環境で。


10.5.2 環境変数

ここにそれらの使用の短い説明によってGeant4 GNUmakeインフラストラクチャーの中で定義された最も重要な環境変数のリストがあります。 私達は、_not_に、ここでリストされて、(!)によってマークされたそれらの環境変数を無効にし(明白または事故によって)ように勧めます。

10.5.3 外部の蔵書をGeant4と接続します

あるユーザーのアプリケーションが実行可能な最終版を発生させるように必要とされているかもしれない外部の(または定義されたユーザー)パッケージによってライブラリのリンクリストを拡張するために、Geant4 GNUmakeインフラストラクチャーは許します。

10.5.3.1 *のために、*をしない追加外部のライブラリはGeant4を使います。

binmake.gmkを含める前のアプリケーションのGNUmakefileにおいて、L...-l..を使って、EXTRALIBSにおいて特別なライブラリを指定してください。 シンタックスまたは指定することによる、フルパス名、例えば:
  EXTRALIBS: =-L/lib<パス>-l<myExtraLib> または
  EXTRALIBS:=<進路>/lib/lib<myExtraLib>.a
また、EXTRA_LINK_DEPENDENCIES(それは実行可能な目標の依存状態に追加されます)を指定してもよく、それ、例えばをやってのけるためにまた規則を指定してさしつかえありません:
  EXTRA_LINK_DEPENDENCIES:=<進路>/lib/lib<myExtraLib>.a

  <進路>/lib/lib<myExtraLib>.a:
        cdの<進路>/lib; $(つくり)
ほぼ確実に、外部のライブラリ、例えばのヘッダーファイルのためにCPPFLAGSを増やす必要があることに注意してください:
  CPPFLAGS+=-I<進路>/は含みます。
テーブル10.5.1を見てください。

 #--------------------------------------------------------------------
 モジュール「Xplotter」#に依存しているアプリケーション「sim」のための#GNUmakefile
--------------------------------------------------------------------

 名前:= sim
 G4TARGET:= $(名前)
 G4EXLIB := true

 CPPFLAGS += -I$(HOME)/Xplotter/は含みます。
 EXTRALIBS += -L$(HOME)/Xplotter/lib -lXplotter EXTRA_LINK_DEPENDENCIES := $(HOME)/Xplotter/lib/libXplotter.a

 . 偽物: すべて

 all: lib貯蔵箱

 $(G4INSTALL)/config/binmake.gmkを含んでください。

 $(HOME)/Xplotter/lib/libXplotter.a:
         cd $(HOME)/Xplotter; $(つくり)
テーブル10.5.1
アプリケーションのためのカスタマイズされたGNUmakefileまたはGeant4と結合しなかった外部のモジュールを使っている例の例。

10.5.3.2 Geant4を使う外部のライブラリを追加します

上記に加えて、そのsrc/サブディレクトリにおいてソースファイルを含んでいるディレクトリのリストをEXTRALIBSSOURCEDIRSにおいて指定してください。 従って、GNUmakefileは含むかもしれません:
  EXTRALIBS += $(G4WORKDIR)/tmp/$(G4SYSTEM)/<myApp>/lib<myApp>.a \
               - L/lib<パス>-l<myExtraLib>
  EXTRALIBSSOURCEDIRS +=<進路>/<myApp><進路>/<MyExtraModule> EXTRA_LINK_DEPENDENCIES:= $(G4WORKDIR)/tmp/$(G4SYSTEM)/<myApp>/lib<myApp>.a

  MYSOURCES:= $(ワイルドカード<進路>/<myApp>/src/*cc)$(G4WORKDIR)/tmp/$(G4SYSTEM)/<myApp>/lib<myApp>.a
  : $(MYSOURCES) cd<進路>/<myApp>; $(つくり)
テーブル10.5.2を見てください。

#-----------------------------------------------------------------
モジュール「reco」#に依存しているアプリケーション「phys」のための#GNUmakefile-----------------------------------------------------------------

名前:= phys
G4TARGET:= $(名前)
G4EXLIB := true

EXTRALIBS += $(G4WORKDIR)/tmp/$(G4SYSTEM)/$(名前)/libphys.a\
             -L$(HOME)/reco/lib -lreco
EXTRALIBSSOURCEDIRS += $(HOME)/phys $(HOME)/reco EXTRA_LINK_DEPENDENCIES:= $(G4WORKDIR)/tmp/$(G4SYSTEM)/$(
名前)/libphys.a

. 偽物: すべて
all: lib貯蔵箱

$(G4INSTALL)/config/binmake.gmkを含んでください。

MYSOURCES:= $(ワイルドカード$(HOME)/phys/src/*cc)$(G4WORKDIR)/tmp/$(G4SYSTEM)/$(
名前)/libphys.a: $(MYSOURCES) cd $(HOME)/phys; $(つくり)
テーブル10.5.2
アプリケーションのためのカスタマイズされたGNUmakefileまたはGeant4と結合した外部のモジュールを使っている例の例。


7. GAGと利益


7-1 どのようにGAGを使いますか

後ろ
GAGの用法は簡単です。
  1. GAGタブをクリックし、GAGの枠を開いてください。
  2. 左上Geantメニューとその「開始」ボタンをクリックしてください。
  3. それの上のファイル選択者とクリックを使って、Geant4バイナリ・ファイルを選んでください。
  4. すぐに、Geant4コマンド木(左の)とパラメータパネル(右の)は表示されます。 下のパネルが、Geant4アプリケーションからアウトプットを表示したことであるAT。
  5. ノードをクリックしてください。さもないと、葉はそれらの助けをdiaplayedされさせます。 不透明な文字の中のコマンドは不活発なものです。
  6. パラメータはリストから選ばれるか、タイプ入力されます。
  7. 4つのボタンは入手可能です。
  8. 「Log_to_Terminal」ボタンがchechedされるならば、Geant4からのアウトプットは下のウィンドウの中で示されます。 このボタンはいつでも未チェックであるかもしれません。 「Log_to_File」ボタンはいつでもまたchechedされるか、未チェックであることができます。
  9. 実行を中断したいならば、「Kill_Geant4」ボタンは使われます。

7-2 どのように利益を使いますか

後ろ

利益は何ですか?

利益(ネットワークのためのGeant4順応的なインタフェース)はGAGに基づいたネットワーク化されたGUIツールです。 それはGAGのほとんどすべての機能を引き継ぎ、リモートのマシン(s)での(a)Geant4運転を利用するために、新しい機能を持っています。

Geant4がリモートの、またはローカルなサーバー(LinuxまたはSolaris)上で動く一方、クライアントマシン(WindowsまたはLinux)上のランを得てください。

それは、接続する2つの方法をリモートサーバーに提供します; SSHモードと利益ソケットモード。 それがリモートのSSh接続と同じくらい安全で、それがGeant4のインタフェースとしてG4UIGAGを必要としているので、SSHモードは強く勧められます。

利益SSHモード
利益はSSHクライアントfuctionを持ち、リモートサーバーと接続するために、それを使用します。 G4UIGAGクラスと編集されたGeant4は利益クライアントに接続していることができます。 SSH接続が認証の後に設立される時に、利益は、ユーザーが実行可能なGeant4を選び、それを動かせることができるリモートファイルブラウザを表示します。 データは彼らの移転の間に暗号化されて、両方の側でdecriptedされます。 従って、大量のデータが運転Geant4から利益にtransferedされるならば、いくらかのCPUパワーはクライアントマシンのために必要とされています。
リモートのGeant4からのアウトプットは利益コンソールの上で表示されます。 このコンソールは正常なSSHコンソールとして使われることができて、直接コマンドをタイプ入力することができます。
Plurielリモートセッションは、別個のタブを付けられた枠でそれぞれ表示されて、受け入れられることができます。 コンソールは各枠/セッションに付着します。
利益ソケットモード
利益は、リモートサーバーと接続するそれ自身の方法を使います。 リモートのGeant4は、標準のGeant4パッケージの中に分配されるG4UIGainServerクラスと編集されなければなりません。 このモードの中で、ユーザーは、リモートのマシンにログインした後にGeant4をリモートサーバーの上の実行可能なランにする必要があります。 G4UIGainServerはネットワークサーバーとして作動し、利益クライアントで利用可能なポートの番号を話します。 サーバーとポート番号を指定した後の利益クライアントは、Geant4と接続することを許されます。 Geant4アウトプット

どのように利益を使いますか

利益が利益ソケットモードの中で動いている時に、数値は場面を示します。

この例において、2つのタブを付けられた枠は、違うサーバーの上のリモートのGeant4s運転を動かすために表示されます。

  1. 利益はCygwinコンソールの上で始められます。 利益はJava Web開始によって始められることができます。
  2. サーバーと接続するか、走っている4Gの蟻4を閉じる(殺し)または利益を終えるトップメニュー。
  3. SShまたは利益のソケットを選ぶウィンドウ; さて、SSHINTERFACEは焦点が合います。
  4. リモートのホスト名をタイプ入力した後に、SSHログインウィンドウは示されます。
  5. SSHログインが受け入れられる時に、利益はより再多くのファイル選択者を示します。 G4UIGAGインタフェースを持つGeant4はこの選択者から始められることができます。
  6. いつGeant4が始められるか、Geant4初期設定アウトプットはcygwinコンソールの上で示されます。
  7. 初期設定段階の後で、木ウィンドウが利益の上で入手可能であるように命じてください。
  8. そして、利益コンソールはコマンド木ウィンドウの下で示されます。 利益ウィンドウ全体のハードコピーを見てください。 上記のコマンドパネルの中でそれらを選ぶ代わりにGeant4コマンドをタイプ入力することができるように、このコンソールはSSHコンソールです。
    左の境界で三角形の上の単一のクリックによってコンソールを縮ませることができます。
  9. エンディングGeant4実行の2つの方法は提供されます。 コマンド木は、まさにGeant4のその「出口」である「出口」コマンドを提供します。 一番上のメニューの上で、「近いもの」メニューは、CTRL + Cを運転Geant4プロセスに送ることになっています。 それは今にも送られることができます。

利益コンソールの上の通知


  • 現在、利益のコンソールはG4UIGAGインタフェースによってGeant4からecerything G4coutを表示します。 従って、利益プロトコルのために使用されたストリングは表示されます。 どうぞ、@@で始まっているラインを無視してください。
  • 利益コンソールは重いWindows(XまたはWindows)パワーを要求します。 従って、Linuxプラットフォームの上でまだ共通のS3などのような古いグラフィックアクセレータによって、コンソールのスピードは非常に遅いかもしれません。 そのような場合に、コンソール枠を縮ませることは、実行を加速するよい方法です。
  • 私達は24時間より多くのセッションについてインターネットの上の利益をテストしました。 Windows XPの上で、私達はセッションの間にいくつかの奇妙な変形した木アイコンを観察したけれども、機能は正しく、それらはいくらかの経過時間の後で正常になりました。
    ここにロングランのコピーがあります。
  • コンソールは現在G4UIterminalとNOT G4UItcshのセッションを提供します。
  • コンソールの上の「出口」をタイプするならば、Geant4の実行はやめられます。 コマンド木のための上部のウィンドウがGeant4との接続を失っている間に、コンソールはまだ通常のsshコンソールです。 コンソールの上の「出口」でタイプするならば、それはsshセッションを終えて、利益全体は破壊されるでしょう。

yoshida

作者について