MicromegasとsTGCのMCの作成には下記のの4段階があります。
粒子の生成。
生成された粒子が到来したたときの検出器のシミュレーション。
Micromegas検出器とsTGC検出器の情報のデジタル化
NSWトリガーがインストールされたときにできるデータファイル。(現段階(2018/2/6)ではまだインストールされていない。)
基本的にはMMdigitizationページ通りにやればよいが、Particle GenerationとDetector Simulation with NSW は恐ろしく時間がかかります。そこで、引継ぎでもらったMC (HitsFile)からMCを作成することをお勧めします。そこでMM Digitizationから説明します。MMのRootFileとMDTのRootFileは異なる過程で作成されるため(現段階(2018/2/6))、最終的にMMのRootFileとMDTのRootFileを合体させる方法を取ります。
MMのRootFileはHits->RDOのMCを作る過程中で作成します。まずTestAreaのDirectoryをコピー。ここではHits->RDO->ESDまでMCを作る。
MicromegasとsTGCの情報が入ったRootFileはHits->RDOの過程でアウトプットしてくれるようになっています。現状ではMDTのrootファイルはESDから作成します。(MMもESDから作成したいが、今のAthenaではESDになるとコンテナが残らない仕様になっていてます。(現段階(2018/2/6)))
また….shはMultijet、Zmumu、SingleMuonPt30,100のHitsファイルにそれぞれように対応しています(コマンドは同じ)。同じディレクトリにlist.…があるが、そこにファイル名を入れ、.shのMCを読み込むディレクトリのPathを変えてください。
MicromegasとsTGCの情報が入ったRootFileのアウトプットについていじりたければ、コマンドにもPythonファイル(WikiPRDValAlg.digi.py)を読み込むように書いているが、そのTrueかFalseかを書き直せばよいです。
Reco_tf.py \
--preExec 'from DetFlags import DetFlags;DetFlags.ID_setOff();DetFlags.Calo_setOn();DetFlags.Muon_setOn();DetFlags.MDT_setOn();DetFlags.\
CSC_setOn();DetFlags.TGC_setOn();DetFlags.RPC_setOn();DetFlags.sTGC_setOn();DetFlags.Micromegas_setOn();DetFlags.Truth_setOn();' \
--inputHITSFile (自分で設定)\
--outputRDOFile (自分で設定).RDO.pool.root \
--maxEvents -1 \
--postInclude (自分で設定)/TestArea/WorkArea/run/nsw_py/NSW.config.digi.py, (自分で設定)/TestArea/WorkArea/run/nsw_py/\
WikiPRDValAlg.digi.py \
--conditionsTag='OFLCOND-MC12b-SIM-00' \
--geometryVersion 'ATLAS-R2-2015-03-01-00'
Reco_tf.py \
--preExec 'all:rec.doTrigger = False;rec.Production = False; doJetMissingETTag=False;rec.doTau=False;rec.doForwardDet=False;rec.doInDet=False;rec.doC\
alo=False;rec.doMuon=True;rec.doEgamma=False;rec.doMuonCombined=False;rec.doApplyAODFix=False;' \
--postInclude (自分で設定)TestArea/WorkArea/run/nsw_py/NSW.neo.config.digi.py \
--inputRDOFile /afs/cern.ch/work/k/kwakamiy/TestArea/WorkArea/run/${line}.RDO/${line}.RDO.pool.root \
--outputESDFile (自分で設定).ESD.pool.root \
--maxEvents -1 \
--conditionsTag='OFLCOND-MC12b-SIM-00' \
--geometryVersion ATLAS-R2-2015-03-01-00
MDTのRootFileは上の過程の後のESDから作成します。まずAthenaのDirectoryをコピーしてください。
….pyは上と同様にMultijet、Zmumu、SingleMuonPt30,100のHitsファイルにそれぞれように対応しています(コマンドは同じ)。上で作成されたESDを指定してAthenaを走らせてやると、MDTのRootFileができます。
MDTの情報やほかの検出器の情報を増やしたい場合はAthena/MyNewPackage/srcのMyAnalysisAlg.cxxで変数を追加してください。
testArea.mergeのディレクトリをコピーしてください。merge.cxxでMMとMDTのRootFile名と合体したRootFile名を記入してください。
これをすることで合体できます。しかし、EventNumberなどでEventマッチさせてなく、今はMMのTruthのセグメントのPhiとOffline_muonのセグメントのPhiを使ってマッチさせています。もしイベントがズレていると、Phiの情報もずれるのでMergeが止まる仕様にしています。もし上の過程で変数を増やした場合、ここでもそれに対応して増やす必要があります。
もしZmumuやMultijetのMCを作りたい場合、rucioなど使用してHitsFileをDownloadして同様に行えば大丈夫です。また今回Gridを使用していないが、引継ぎしている方にはGridを使用した方法やESDから一度にMDT,Micromegas,sTGCの情報をアウトプットする方法を確立してほしいです。今回MDTとMMのRootFileが同じ過程中に出ないため、最後に合体させる方法を採用したが、いつか同じESDにコンテナが入るようになれば、その過程も必要なくなります。
ある程度構造化しており、本体はMuonSA.Cです。これをroot -l .C+で読み込み、Loop()を回すことでMicromegasの再構成からPtの計算まですべて動きます。
アルゴリズムの本体です。Loop()中に、NSW_recoやMDT_recoなど関数を色々書いていると思いますが、それらが各検出器での再構成の関数です。
MDTの再構成アルゴリズムを全て書いています。
SuperPoint からαを計算するアルゴリズムを書いています。
PtαからインナーステーションにBack-ExtrapolateするLUTを書いています。
Truthの情報を用いた値をアウトプットするためのものです。
NSWを用いた再構成のアルゴリズムのすべてを書いています。
αとβからPTを計算するためのLUTを書いています。LUTはhttps://gitlab.cern.ch/atlas/athena/blob/21.1/Trigger/TrigAlgorithms/TrigL2MuonSA/share/pt_endcap_run2.lutから採用しています。
各関数と独自のクラスを定義しています。MM_InfoはMMの再構成に必要な情報を分けるために使用しています。Cal_Infoセグメント候補全ての情報と最終的に選べたものを詰めるために使用しています。Confirm_Infoは各過程でミスがないか確認するための変数を定義しています。
ここには依然作成したRootFileがあります。ファイル名でどんなファイルかわかるはずです。
ここではアルゴリズムに間違いがないか各過程で確認するため、解析後に必要な変数を新たなRootFileにしてアウトプットしています。何をアウトプットしているかはMuonSA.CでRootFileの設定をしているので、そこを確認してください。
ここは現行のMuonSAのコードが入っており、新しく開発する際に参考にしました。アルゴリズム動かす際には、必要ありません。
ここはCanvasにかいたヒストグラムなどをPrintしPDFにしたものをここには置きました。アルゴリズムを見ると…->Print("…")で所々書いていることが分かると思います。
ATLASのスタイルで書くためのPackageです。