何度くりかえしてもどこか違うエラーが出るので、今回の成功例を書いておく(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
あとは普通に使用する。
launch時に要求される dependency code は基本的に何も考えず Enter を押す。
p = p b b~
generate p p > e+ e-
output pp2ee
launch
import model sm-no_b_mass
generate p p > e+ e- [QCD]
output pp2eeNLO
launch
等々。
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 と連携させられることを確認済み。
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 してくれる。
簡単な例として、わかりやすい名前で複数回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 定義等の記述も書いておける。
例えば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が新しくできて、そこには崩壊幅の情報が追加されている。
イベント生成の際に、勝手なカットをかけたい。
一番簡単に、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)をかけておいた。
おそらく run_card.dat の方の cut は、サンプル点を選び出す段階で既に適用されている。
参考:https://answers.launchpad.net/mg5amcnlo/+question/446723
エラーメッセージを見てエラーが出たテストを特定する。
今回は 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))
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 のエラーを自動で計算してくれる。
とすることで、無事動いた。
????
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
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というファイルが自動生成される。
これをコピーして適宜編集し、イベント毎に使い回す方が効率は良さそう。