課題4:高エネルギーイベントのシミュレーション

home , 準備 (linux | editor | X window | ROOT | login | remote ROOT | Geant4) , 課題(1 | 2 | 3 | 4 | 5 | 6)updated 2011.11.24b

[1] 概要

  • 高エネルギーの衝突現象は複雑なので、理論に基づいたイベントのシミュレーションプログラムが発達している。ここではその一例を示す。ここで試すPythiaは高エネルギー分野で最もよく使われているプログラムである。

  • Pythiaのマニュアルは ここにある。

    [2] Pythia(ピシア)を走らせる

    quark/leptongauge,H mesonbaryon
    1d11e 21g 111π0211π+411D+ 2212p2112n
    2u12νe 22γ 113ρ0213ρ+ 413D*+ 1114Δ-2114Δ0
    3s13μ- 23Z0 221η223ω421 D0 2214Δ+2224Δ++
    4c14νμ 24W+ 311K0 313K*0 423D*0 3122Λ03112-
    5b15τ 25h0 321K+323K*+ 431Ds+ 3114*-32120
    6t16ντ    331η'333φ 433Ds*+3214*03222+

    1. mkdir subject-4でsubject-4/のdirectoryを作りcd subject-4で入る。

    2. PYTHIA 8.1を開きThe current version of the PYTHIA code:(現在は pythia8157.gz, 5481rm -r py KB)をダウンロードして tar xvfz pythia8157.gz で展開するとdirectory pythia8157 ができる。

    3. cd pythia8157の中に入り make でコンパイルする。

    4. cd examplesの中に入り サンプルプログラム main01.cc,...., main84.cc などがあることを確認する。

    5. make main01 で例の01をコンパイルすると main01.exe ができる。

    6. ./main01.exe > output01 で実行すると output01.htm が出来る。

    7. 最初のイベントの粒子が中間状態でできたクオークやグルーオンを含んで全てリストしてある。数百個の粒子が生成されていることが見える。各粒子の右上の表のようなKF番号(粒子の種類番号)が付いている。

    [3] 粒子のラピディティ(rapidity)分布

  • 高エネルギー衝突実験では観測量の変数の一つとしてラピディティ(rapidity)を使う。その定義と性質はRapidityとはに載っている。

  • LHCアトラス実験の最初の物理結果としてECM=900GeVでの荷電粒子のラピディティ分布が出ている( 論文右図)。

    1. cp main01.cc main00.ccで main00.cc をつくり、その内容を以下に従って変更する:
      1. pythia.init( 2212, 2212, 14000.);をpythia.init( 2212, 2212, 900.);に変更する (900 GeVに変更)。
      2. if (iEvent < 1) {pythia.info.list(); pythia.event.list();} を消す。
      3. for (int iEvent = 0; iEvent < 100; ++iEvent) { を for (int iEvent = 0; iEvent < 1000; ++iEvent) { に変えて1000 eventつくる。
      4. if (pythia.event[i].isFinal() && pythia.event[i].isCharged()) のうち pythia.event[i].isCharged()の条件をはずす。
      5. ++nCharged;の代わりに
          {
                ++nCharged;
                std::cout<<iEvent<<" "<<pythia.event[i].id()<<" "<<
                pythia.event[i].px()<<" "<<pythia.event[i].py()<<" "<<
                pythia.event[i].pz()<<" "<<pythia.event[i].e()<<endl;
              }
        
        で置き換える。

    2. make main00.cc でコンパイルするとmain00.exeができる。ただしmain00.exeが既に存在するときはrm main00.exeであらかじめ消しておく。

    3. ./main00.exe > output00.txt で実行し、output00.txt の前後を不要な部分を削除して
      0 321 -1.93 0.37 4.02 4.51
      0 321 -0.06 -0.05 -42.18 42.18
      0 -321 0.45 -0.19 -12.98 13.00
      0 2212 0.60 -0.70 -15.83 15.88
      0 -2212 1.13 -0.19 -27.10 27.14
      0 211 -0.62 0.42 -0.90 1.18
      0 211 -0.30 0.23 28.54 28.54
      0 211 -0.40 -0.50 0.83 1.06
      0 2212 0.18 0.15 1.86 2.09
      0 -211 0.88 -1.16 -0.70 1.62
      0 211 0.05 0.15 0.02 0.21
      0 -211 -0.23 -0.19 0.47 0.58
      .
      .
      
      の部分のみを残す。ただし途中で PYTHIA Warning in MultipleInteractions::pTnext: weight above unityなどの文字列が入っていることがあるので、あらかじめ PY などでそれらの文字行を探してその行を削除削除しておく。

    4. output00.txtを読み込みrapidityを計算してプロットするROOTマクロplot_rapidity.Cをつくると右図のような荷電粒子のrapidity分布ができる。

    5. 提出課題4a:ECM=7000 GeVでのrapidity分布を粒子別(π+-,)に重ねてプロットするグラフを作る。