導入、初期設定
何度くりかえしてもどこか違うエラーが出るので、今回の成功例を書いておく(2020/1/15)
まず、現在のところ gfortran-8 が Madgraph 周りの compile に対応していないので、
(2020/1/15追記 最新版のhomebrew install gcc@7
対応して、MadGraph v2.8.2
ではこの操作が不要なことを確認済み。
確認は Mac OS BigSur (ARM), Mac OS Mojave (Intel) で行った。)
input/mg5_configuration.txt
内のグローバル設定をいじる。
automatic_html_opening = False
これにより、launch
時にブラウザが自動で立ち上がるのを防止する。
fastjet が存在しないエラーが出るときは、fastjet = None
でとりあえず動く。
次に、bin/mg5_aMC
から dependency のインストール
install boost
install lhapdf6
install zlib
install hepmc
install pythia8
delphes
のインストールの際には、~/.bash_profile
に以下の設定が必要。
(正しく設定されていない場合、設定の詳細がエラーメッセージとして出力されて install が進まない)
export ROOTSYS=<root installation path>
export PATH=$PATH:$ROOTSYS/bin
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$ROOTSYS/lib
export DYLD_LIBRARY_PATH=$DYLD_LIBRARY_PATH:$ROOTSYS/lib
設定を行なって source ~/.bash_profile
したら、bin/mg5_aMC
に戻って
install Delphes
ただし、macOS > 10 ではページ下部に示すコンパイルエラーが発生するので、以下の記述に従って修正が必要。 (2024/4/24)修正の必要性を再確認。
用法
あとは普通に使用する。
launch
時に要求される dependency code は基本的に何も考えず Enter を押す。
- LO Drell-Yan
p = p b b~
generate p p > e+ e-
output pp2ee
launch
- NLO Drell-Yan
import model sm-no_b_mass
generate p p > e+ e- [QCD]
output pp2eeNLO
launch
等々。
Delphes on Mac OS > 10
Mac (arm) OS 12 にて Delphes をインストールしようとしたところ、以下のエラーに遭遇した。
>> Building libDelphesNoFastJet.so
clang: error: no such file or directory: 'libDelphesNoFastJet.so'
make: *** [libDelphesNoFastJet.so] Error 1
この Q&A にある通り、これは <Delphes installation>/doc/Makefile.arch
が Mac OS <=10 にしか対応していないことが問題らしい。
問題は
wget http://cp3.irmp.ucl.ac.be/downloads/Delphes-3.5.0.tar.gz
とダウンロードした Delphes で起こり、最新版の
git clone https://github.com/delphes/delphes.git
では修正済みなので、後者を用いる。
MadGraph と連携させる場合、前者が使用されるのでエラーが出るが、一度 ./bin/mg5_aMC
から抜け出して <MadGraph installation>/Delphes/doc/
の中の Makefile.arch
を github 上の最新版と置き換え、手動で make
し直せばコンパイルが通る。
実行ファイルが完成すれば通常通り MadGraph と連携させられることを確認済み。
(2019/6/26) jet matching
MadGraph のバージョンによって(?)jet matching の際に run_card.dat
を弄る必要がある。
1 = ickkw ! 0 no matching, 1 MLM
ちなみにヘルプを見ると(https://cp3.irmp.ucl.ac.be/projects/madgraph/wiki/Matching)、紛らわしいことにオプションの 2
が CKKW に対応するらしい。
これが on の状態で jet の本数を変えたプロセスをいくつか merge して走らせると、個々のプロセスを独立に走らせて計算した断面積の和と比して、大きな断面積が parton level で出てきたりする。
これが matching に十分な overlap を含む phase space の取り方になっていて、その後 pythia が走ってきちんと matching してくれる。
(2019/4/26) 事前にコードを書いてインタープリタに読ませる
簡単な例として、わかりやすい名前で複数回launchしたい場合、
launch pp2gogo2 -n 6TeV_0
launch pp2gogo2 -n 6TeV_1
launch pp2gogo2 -n 6TeV_2
などと書いたテキストファイル(launch_several_times.txt
とする)を用意する。
これを
./bin/mg5_aMC launch_several_times.txt
として読み込めば、その通りに実行してくれる。 当然、モデル読み込み、multiparticle 定義等の記述も書いておける。
(2019/04/21) お好みの模型パラメータをデフォルト設定に
例えばSMでb-quarkのPDFを考えたいとき、bはmasslessでなければいけないので、
import model SM-no_b_mass
とするところから始める。
これは、**MG5**/model/sm/restrict_no_b_mass.dat
というデータファイルの内容をparam_card.dat
として読み込んでいるだけである。
同様に、例えばAMSBのベンチマークポイントをデフォルトとして計算を始めたい場合、**MG5**/model/MSSM_SLHA2/
内にrestrict_AMSB.dat
などの名前でparam_card.dat
をコピペし、
import model MSSM_SLHA2-AMSB
でロードされる。
さらに前段階として、崩壊幅の計算を前もってさせておいてparam_card.dat
をアップデートすると便利。
これには、阿部様のページ http://tomohiro_abe.droppages.com/index.html のメモを参考、
compute_widths n2 go <<etc>> --body_decay=2.0025
とするなど。モデルディレクトリ内にparam_card.dat
が新しくできて、そこには崩壊幅の情報が追加されている。
(2018/11/20) User defined cuts
イベント生成の際に、勝手なカットをかけたい。
一番簡単に、fortran ソースに直接カットパラメータを書き込む方法を試した。
各プロセスのディレクトリ内に存在する SubProcesses/cuts.f
に、以下のように書く。
C***************************************************************
C***************************************************************
C PUT HERE YOUR USER-DEFINED CUTS
C***************************************************************
C***************************************************************
do i=1,nexternal ! loop over all external particles
if(istatus(i).eq.1 .and. ! final state particle
& (ipdg(i).eq.12 .or. ipdg(i).eq.14 .or. ipdg(i).eq.16)) then ! neutrino
do j=1,nexternal ! loop over all external particles
if (is_a_lp(j)) then ! l+
if (2d0 * sqrt(p(1,i)**2+p(2,i)**2) * sqrt(p(1,j)**2+p(2,j)**2)
& - 2d0*(p(1,i)*p(1,j)+p(2,i)*p(2,j))
& .lt. 480d0**2) then ! transverse mass cut at 480GeV
passcuts_user=.false.
return
endif
endif
enddo
endif
enddo
return
end
上の例では、終状態の lepton と neutrino の transverse mass でカットをかけている。
注意点として、このカット単体では条件を満たすデータ点が少なすぎてエラーを吐くので(下記リンクと同様の症状と思われる)、
別個に run_card.dat
で lepton pT cut(pT > 100GeV)をかけておいた。
参考:https://answers.launchpad.net/mg5amcnlo/+question/446723
(2018/08/24) aMCatNLOError : Some tests failed, run cannot continue
エラーメッセージを見てエラーが出たテストを特定する。
今回は Soft / Collinear test で失敗していたので、SubProcesses/test_soft_col_limits.f
の中身を覗いてみる。
https://answers.launchpad.net/mg5amcnlo/+question/255905
に依ると、energy scale が複数ある場合、numerical instability が大きくてこの手のエラーが起きやすいらしい。
そこで、テストの基準を緩めることにして、
parameter (max_fail=(LARGE ENOUGH VALUE))
(2018/08/19) Systematics module を使う
Systematics module を使うためには、LHAPDF の python interface が必要。
上記install lhapdf6
で入れた LHAPDF ではライブラリのリンクが上手く貼られていなかった
(brew ver. 等複数の LHAPDF が混在したせい?)ため、手動で入れなおした。
configure CXX=g++-7
からmake
そしてmake install
。
正しくインストールできれば、/usr/local/lib/python2.7/site-packages
で python モジュールを立ち上げ、
import lhapdf
で何も文句を言われずに LHAPDF を読み込めるはず。
この変更に対応して、input/mg5_configuration.txt
内の設定はlhapdf = /usr/local/bin/lhapdf-config
(デフォルトのインストールパス)に。そして、bin/mg5_aMC
からinstall pythia8
で pythia も入れなおす。
実際にlaunch
する際には、特に QCD NLO オプションの場合、run_card.dat
の書き換えが必要。
lhapdf = pdlabel ! PDF set
True = reweight_scale ! Reweight to get scale variation using the
True = reweight_pdf ! Reweight to get PDF uncertainty. Should be a
True = store_rwgt_info ! Store info for reweighting in LHE file
systematics = systematics_program
['--mur=0.5,1,2', '--muf=0.5,1,2', '--pdf=errorset'] = systematics_arguments ! see: https://cp3.irmp.ucl.ac.be/projects/madgraph/wiki/Systematics#Systematicspythonmodule
これで、くりこみ点(結合定数とPDF)、および PDF choice のエラーを自動で計算してくれる。
とすることで、無事動いた。
以下、古いバージョンに対するtips、あるいは古い認識
(2018/12/06) MadGraph v2.6.4 ???
????
v2.6.3.2 では動いていた以下のプロセスが v2.6.4 では動かない。 param_card.dat で指定している崩壊率の指定にミスがあるのか否か?
import model MSSM_SLHA2
p p > go go, go > n1 j j, go > n1 j j
(2018/12/06) MadGraph v2.6.3.2 ???
v2.6.5で修正を確認
一方で、v2.6.3.2 では standalone pythia8 command が正しく動かない。
https://answers.launchpad.net/mg5amcnlo/+question/671278 にあるように、
KeyError : 'event_norm'
と怒られるので、作ったイベントを v2.6.4 のディレクトリ
に丸ごとコピーして、そちらで standalone pythia8 を動かせばとりあえず shower できる。
プロセスディレクトリ内の./bin/madevent
から、
pythia8 (RUN NAME)
上の方法で一度動かしておくと、run_shower.sh
およびtag_1_pythia8.cmd
というファイルが自動生成される。
これをコピーして適宜編集し、イベント毎に使い回す方が効率は良さそう。