以下の拡張機能を amorita branchで実験中です
o LOSSMAP拡張(Revision 3150以降)
LOSSMAPフラグがONの際に、粒子分布の第8要素にParticle Lost Position情報を出力する
* 拡張された粒子分布は以下の通り
beam := {{x1,...}, {px1,...}, {y1,...}, {py1,...}, {z1,...}, {dp1,...}, {flg1,...} ,{lost1,...}}
lost#: #-th粒子のLost Position情報
1 =< lost# =< LINE["LENGTH"]: TrackParticles[]内で POSITION lost#で失われた
-1 >= lost# >= -LINE["LENGTH"]: TrackParticles[]に渡された時点で、POSITION -lost#で失われていた
0: 消失位置不明 or 生存中(flg#に依存)
* TrackParticles[]へ与えられた粒子分布が第8要素を含むとき、過去のParticle Lost Position情報を継承する
o Multi-Turn拡張(Revision 3153以降)
第4引数を拡張し、TrackParticles[]内でMulti-Turn Trackingを行う
* 新しい引数プロトタイプは以下の通り
{dst1_Real, beam1_List} = TrackParticles[{src:(_Real_String), beam_List}, dst:(_Real|_String):"$$$", tBegin_Real:1, tEnd_Real:tBegin]
tEnd > tBegin時に、Trackingは、tBegin-th turnの `src'から開始され、tEnd-th turnの `dst'で終了する。
turn numberは `src'通過時に加算される。
Multi-Turn拡張に関しては直感的な拡張になっていますが、LOSSMAP拡張に関しては
* フラグを新設すべきか否か
- TrackParticles[]へ option引数で指示する
- TrackParticles[]へ渡す粒子分布のフォーマットの違いで暗黙のうちに指示する
* 新設したフラグの名称
* 出力形式
- PHOTONSフラグのように、グローバル変数経由で出力する
* ExternalMap[]のようなに、粒子消失時にコールバックを発生させる
等々、設計上の選択肢がありえますので、実際のユースケースを前提とした提案を募集します