デフォルトでは全てのtrack が Urgent stackへ

Download Report

Transcript デフォルトでは全てのtrack が Urgent stackへ

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