添付のrootrcファイルをホームディレクトリの隠しファイル.rootrcとする。
cd mv ~/Downloads/rootrc .rootrc mkdir RootUtils mv ~/Downloads/AtlasStyle.C; mv ~/Downloads/rootlogon.C
近藤先生のホームページから取ってきたファイルを使用します。荷電パイ中間子ビーム下流の130mに設置した、放出角度が2度から3度のスリットをすり抜けるニュートリノのエネルギー分布を調べる課題になっていたようである。ここでは20GeVの荷電パイオンの崩壊によって発生するニュートリノのエネルギだけ調べることにする。
コードは運動量20GeVのpionを発生させるところから始まる。崩壊のサブプログラムではpionからmuonとneutrinoを球対称に生成し、ローレンツ変換で実験室系での4元運動量を返している。メインプログラムでは標準出力にmuonとneutrinoのエネルギー100k個を出力する。作業は
g++ -o pimu_1 pimu_1.cxx ./pimu_1 > pimu_1.txt source /opt/heplib/ROOT/v6-24-00/bin/thisroot.sh root //rootが起動するので入力プロンプトから .x plot_pimu_1.C .q //rootを終了するコマンド
荷電パイ中間子の重心系から2体崩壊する運動学は、親の質量がma、崩壊粒子の質量がそれぞれmb,mcとして崩壊粒子の運動量pcmが計算される。重心系の運動量を求め、その向きが球対称になるように特殊な乱数技術(phase-space sampling)で変換する。更に2つの崩壊粒子を親粒子の持っていた速度でローレンツ変換する。
飛行中のpionの固有時間はガンマファクターで遅くなっている。いつ崩壊するかは一様乱数を使って決める。重み付きの分布を発生するには逆関数を使うことになる。
飛行距離とエネルギーの関係を次のスクリプトを参考に、図の分布を作成することを課題としてみる。
この課題の最後は、pionの生成エネルギーが4乗に反比例することと、コリメータで制限したときのneutrinoのエネルギー分布を求める問題になっていた。関連するファイルを上げておく。
陽子の衝突実験ではパートン分布関数と呼ばれる内部のquark, gluonの運動量分布関数が必要となる。これらはパートンの衝突エネルギーで異なってくる。以下の頁でその様子を調べる。実験データを処理するグループがいくつかあり、ここではMRSTグループのものを使ってみる。図のようにパラメータをセットしてみる。陽子の運動量に式の中のxをかけると衝突するパートンの運動量となる。このxは電子と陽子の非弾性衝突のパラメータとなりスケーリング変数と呼ばれたりファインマンのxと呼ばれたりした。分布はMake the Plotボタンを押して作成する。
http://hepdata.cedar.ac.uk/pdf/pdf3.html
すべてのpartonについて数値の結果を10GeVと100GeVの衝突について作成したものを上げておく。
この2つの異なるエネルギーのパートン分布関数を比較するスクリプトが用意されている。 hi
高いエネルギーの陽子・陽子衝突によってパートン同士の衝突が起きてヒッグス粒子が生成されるときの生成断面積を計算する。ヒッグスの生成過程はグルーオン融合のほか、ベクトルボゾン融合、トップ・クォーク随伴生成があるがここでは断面積の最も大きなグルーオン融合のみについて計算してみる。まず、グルーオン融合のルミノシティ関数について説明する。ここでしめす図とプログラムは近藤先生の演習ページからそのままダウンロードしたものである。計算の単位はGeVで断面積の単位はフェムトバーンである。
プログラムが使っているgluonのパートン分布関数は課題2のものなので以下のとおりに実行してみる。ルミノシティ関数についてはドレルヤン変数のときの反応のおきやすさの指標と考えればよい。ドレルヤン変数と重心系のエネルギーの2乗をかけたものの平方根が生成粒子の質量となる。そのため粒子が生成するためには特定のドレルヤン変数を取る必要がありドレルヤン変数で積分しても、結局その条件が残ってくる。この条件を持つデルタ関数がどこかに含まれていることになる。
mkdir kadai3 cd kadai3 ln -s ../kadai2/MSTW_10000.txt gluon_10000.txt g++ -o partonLuminosity partonLuminosity.cxx ./partonLuminosity
数値が出てくるが、リストのtauが8.e-05の値が14TeV, Higgs massが125GeVのとき断面積計算で使われる数値となる。
まずrootを入れないといけないが、本家ページを見ると最近はUbuntuではcondaで入れるらしい。今までの実習ファイルから課題を作り直す必要がある。anacondaは自分環境が一般的らしい。今までは共通環境だったのに。そのへんがどうも今風なのか?いまやサーバーでいろいろするのは古いのかな。とりあえずひらってきた計算機にソースを落としてコンパイルしてみる。一応成功。でも英語版20.04ではXROOTDがどうのこうので失敗。自分コンパイルのバイナリをコピーしたら動いた。
あとTgraph*をつけないと行けないころがroot6になって起きた。
初期設定のAtlasStyle.Cのマクロの自動設定のやり方がいまいち不明。実行ディレクトリに持ってきて、関数定義の順番を変えるなどして設定してみた。面倒。plotのマクロではstream.hの.hを取る。初期設定を手動でするには
root .x AtlasStyle.C SetAtlasStyle();
とすると、一応可能。なぜか自動設定できる場合もある。あれれ。家のv6-18-00。
コピペがWindowsのEdgeなどからできない。まずはxtermが必要。
sudo apt update sudo upgrade sudo apt install xterm xterm &
この中だと、真ん中ボタンがpasteになるので、ブラウザーからコピペが可能になる。18.04ならNews2018にそのころの履歴があるがrootの近辺を見て、
sudo apt install git build-essential x11-apps x11-utils ls /proc cat /proc/cpuinfo sudo apt install cmake sudo apt install libx11-dev libxpm-dev libxft-dev libxext-dev sudo apt install libssl-dev sudo apt install -y libglu1-mesa-dev sudo apt install -y libglew1.5-dev libftgl-dev sudo apt install python-dev sudo apt install libxml2-dev pwd mkdir work cd work which wget wget https://root.cern/download/root_v6.18.00.source.tar.gz sudo apt install libgsl0-dev sudo apt install libqt4-dev sudo apt install r-base python-numpy-dev tar zxvf root_v6.18.00.source.tar.gz mkdir rootBuild cd rootBuild cmake -DCMAKE_INSTALL_PREFIX=/opt/heplib/ROOT/root-6.18.00 ../root-6.18.00 make sudo make install sudo ln -s /opt/heplib/ROOT/root-6.18.00 /opt/heplib/ROOT/pro source /opt/heplib/ROOT/pro/bin/root.sh root //exit は .q
などとlinuxではしてみた。ー>WSLではエラーになる。結局バイナリを取ってきて展開する。
Windows Subsystem for Linuxで演習をやるとすると、使い勝手はいかに。aptに問題発生。vimは入ったみたいだったのに。
下のファイルもいまいちっぽい。port番号が入ってない。ネットで見て、/etc/apt/apt.confに以下を書いたらOKだった。
Acquire::http::Proxy "http://proxy.kyokyo-u.ac.jp:xxx" Acquire::https::Proxy "https://proxy.kyokyo-u.ac.jp:xxx"
2行目二番目のhttpをhttpsに勝手に変えてみた。
この人は、nと互いに素なaについてはwikiにあるのでスルーして、いわゆる中国の剰余定理を簡単に説明している。あと後ろのほうでpythonで計算してるので、ubuntuがあるとフォローできます。
https://qiita.com/YutaKase6/items/cd9e26d723809dc85928