Stack management, digitization and pile-up 浅井 慎 (SLAC) 内容 Stack management Stackの仕組み G4UserStackingAction Digitization G4VDigitizerModule G4VDigit, G4TDigitsCollection Multi-event handling and Pile-up UI commands, Aliased variables, loop commands これらはnaiveなsimulationには不要だが、これらの仕組み を活用すれば、より効率的でflexibleなsimulation application が作れる Stack management, digitization and pile-up - M.Asai (SLAC) 2 Stackの仕組み デフォルトではGeant4は3つのtrack stackを持つ “Urgent”, “Waiting”, “PostponeToNextEvent” TrackはUrgent stackのみからpopされる Urgent stackが空になると、Waiting stack中のtrackがまとめて Urgent stackに移される UserStackingAction が新しいtrackをどのstackに入れるか(あるいは killするか)を判断する • デフォルトでは全てのtrack が Urgent stackへ 複数のstackを活用することにより、“highest priority scan”せずに trackの優先順位をコントロールできる 任意の数のstackを増やすことが出来る stack managementによるeventやtrackの適切なselection/abortionによっ て、全体としてのシミュレーションの効率が向上する Stack management, digitization and pile-up - M.Asai (SLAC) 3 Stackの仕組み primary tracks User Stacking Action Classify Event Manager Push Pop Push Urgent Stack Pop Push Push Waiting Stack Process One Track Stacking Manager Postpone To Next Event Stack secondary or suspended tracks Tracking Manager Stack management, digitization and pile-up - M.Asai (SLAC) 4 G4UserStackingAction G4UserStackingActionは3つのmethodを持つ void NewStage() Urgent stackが空になった時に、 Waiting stack中の全てのtrackが Urgent stackに移された後で呼ばれる stackManager->ReClassify()を呼べば、移されたtrackが順次 ClassifyNewTrack()に渡されるので、改めてclassifyしなおす G4ClassificationOfNewTrack ClassifyNewTrack(const G4Track*) 新しいtrackがG4StackManagerにpushされる毎に呼ばれる Classification • fUrgent // pushed into Urgent stack • fWaiting // pushed into Waiting stack • fPostpone // pushed into PostponeToNextEevnt stack • fKill // killed void PrepareNewEvent() 1event開始時に呼ばれるので、classification schemeをリセット Stack management, digitization and pile-up - M.Asai (SLAC) 5 G4UserStackingActionの例 ExN04StackingAction このexampleは、簡略化したcollider detectorのジオメトリと Higgs粒子が4 muonにdecayするevent sampleを持つ 1) Eventの始めではprimary muonのみがUrgent stackに 入れられ、他の全ての primary particleはWaiting stackへ入れられる Urgent stackが空にな るとmuon counter中の hit数をチェック 充分な数のHitがなけれ ばeventをabortする Stack management, digitization and pile-up - M.Asai (SLAC) 6 G4UserStackingActionの例 2) primary charged trackのみをUrgent stackに移す 個々のprimary charged trackは、 tracker region内だけtrackingされ、 calorimeterに到達したらsuspend されてWaiting Stackに戻される Urgent stackが空になるとTracker 中のhit数をチェック 充分な数のisolated muonがなけれ ばeventをabortする 3) “Region of Interest”に含まれる粒子だけ がUrgent stackに移され、それ以外は killされる すなわち、R.o.I.の中だけshower を作る Stack management, digitization and pile-up - M.Asai (SLAC) 7 Digitization Digit は測定器の出力を表す (例えばADC/TDC count, trigger signal) Digit は、hitや他のdigitを基にして、G4VDigitizerModuleの継承クラスが 作る DigitはG4VDigitを継承してユーザーが用意するクラスで、 G4TDigitsCollection、G4DCofThisEventによりG4Eventクラスに蓄えら れる Hitと同じ構造 Hit/sensitive detectorと異なる点 sensitive detectorはlogical volumeに割り付けられ、hitはtracking時 に自動的に作られる Digitizer moduleは特定のvolumeには割り付けられず、Geant4kernelは自発的にdigitを作らない • 例えばEndOfEventActionから、ユーザーが個々のdigitizer moduleのDigitize()関数を、必要な順序で呼ぶ Stack management, digitization and pile-up - M.Asai (SLAC) 8 Multi-events treatment and pile-up G4Eventmanagerは、複数のeventを同時に取り扱うことは 出来ない 当然UserEventActionもだめ Runのレベルでのみ、複数eventを取り扱うことが出来る G4RunManagerを継承して自分のRunManagerを作る AnalyzeEvent()関数を実装し、この関数内で複数eventに アクセスする • G4Event* GetPreviousEvent(int) • Run開始前にSetNumberOfEventsToBeStored()で必要 なevent数を指定することを忘れずに 必要ならばDigitizerModuleを呼ぶことも出来る Stack management, digitization and pile-up - M.Asai (SLAC) 9 Geant4 UI command Geant4 の UI command は次の方法で実行できる (G)UI interactive command submission Macro file Hard-coded implementation • 遅いが、target classのポインタは不要 • 濫用してはいけない G4UImanager* UI = G4UImanager::GetUIpointer(); UI->ApplyCommand("/run/verbose 1"); コマンドは次の3つの部分から成る Command directory Command Parameter(s) Stack management, digitization and pile-up - M.Asai (SLAC) 10 Available Commands 利用可能なコマンド(ユーザー定義コマンドを含む) /control/manual [directory] 画面(標準出力)に表示 /control/createHTML [directory] HTML file(s) built-in commands のリストは User‘s Guide For Application Developers の section 7.1 にもある Stack management, digitization and pile-up - M.Asai (SLAC) 11 Available commands 使用可能なコマンド、パラメータの有効範囲等はダイナ ミックに変化する 幾つかのコマンドはGeant4の特定の状態でのみ有効 例えば /run/beamOn は PreInit と Idle 状態でのみ. 個々のパラメータは string, boolean, integer, doubleのいず れかの型 空白を含む文字列は double-quotes (” ”)でかこむ 省略可能なパラメータもある。この場合にはデフォルト値 が使われる デフォルト値は、あらかじめ設定された値の場合と現 在値の場合がある 1つ目のパラメータをデフォルト値に、2つ目のパラ メータには値を与えたい場合には!を使う /dir/command ! second Stack management, digitization and pile-up - M.Asai (SLAC) 12 Available commands コマンドは以下の場合には拒否される 適切でない状態で発行された パラメータの型がちがう パラメータの数が足りない パラメータが指定範囲に無い • ineteger とdouble 型のパラメータの場合 パラメータが candidate list にない • string型のパラメータの場合 Aliasのまちがい Command not found Stack management, digitization and pile-up - M.Asai (SLAC) 13 Macro file 全てのコマンドは full-path で与える Use “#” for comment line. 始めの“#” から行末までがコメントになる /control/verbose を2にすればコメント行が標準出 力にエコーされる. Macro file の実行 /control/execute “file_name” /control/loop /control/foreach Macro fileは再帰的に呼べる Stack management, digitization and pile-up - M.Asai (SLAC) 14 Alias Alias の設定 /control/alias [name] [value] /control/loop や /control/foreach でも設定される Alias 値は 数字しか含まなくても文字列として取り扱われる Alias は他の UI commandで使用できる, command name, directory path, parameterもしくはそれらの組み 合わせとして. 長い、よく使うコマンドを短く出来る Aliasを使う特にはcurly brackets “{” and “}” で囲む. Alias は再帰的に 解釈される /control/alias file1 /diskA/run1 /control/alias file2 /diskB/run2 /control/alias run 1 /myCommand/getFile {file{run}}.dat Stack management, digitization and pile-up - M.Asai (SLAC) 15 Repeating macro execution /control/loop [macroFile] [counterName] [initialValue] [finalValue] [stepSize] – counterNameがalias変数になる /control/foreach [macroFile] [counterName] [valueList] – counterNameがalias変数になる – valueListはdouble-quotes (” ”)でかこむ Stack management, digitization and pile-up - M.Asai (SLAC) 16 UI command and messenger (G)UI Messenger クラスを実装し、commandを定義 すれば自分のcommandを使える 2. apply messenger 1. register 4. invoke 3. do it UImanager command Target class parameter Stack management, digitization and pile-up - M.Asai (SLAC) 17
© Copyright 2025 ExpyDoc