So Chigusa
So Chigusa
So Chigusa

Madgraph の導入から計算まで

最終更新: 2022-08-18

Madgraph の導入方法、使い方、トラブルシューティングに関する tips

logo

最終更新: 2022-08-18

Madgraph の導入方法、使い方、トラブルシューティングに関する tips

導入、初期設定

何度くりかえしてもどこか違うエラーが出るので、今回の成功例を書いておく(2020/1/15) まず、現在のところ gfortran-8 が Madgraph 周りの compile に対応していないので、 homebrew install gcc@7 対応して、2020/1/15追記 最新版の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 を押す。

  1. LO Drell-Yan
 p = p b b~
 generate p p > e+ e-
 output pp2ee
 launch
  1. NLO Drell-Yan
 import model sm-no_b_mass
 generate p p > e+ e- [QCD]
 output pp2eeNLO
 launch

等々。

(2022/8/18) Delphes on Mac OS 11, 12

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というファイルが自動生成される。 これをコピーして適宜編集し、イベント毎に使い回す方が効率は良さそう。

この投稿をシェアする: