クレブシュ-ゴルダン係数
- ROOT でクレブシュ-ゴルダン係数を計算する場合、 3j 記号を用いて以下のように計算する。
- クレブシュ-ゴルダン係数は以下のようにいろいろな書き方がある。
2行目の書き方は、Particle Data Group (PDG) の Clebsch-Gordan Coefficients の pdf で採用されている書き方。 最後の C を用いた書き方は浜本さんがよく使う書き方である (例えば、PRC69(2004)041306(R), PRC81(2010)021304)。
計算
例えば
を計算するマクロ(calc_Clebsch_Gordan.C) は以下のようになる。
1 #include "Math/SpecFunc.h" 2 #include <iostream> 3 4 Double_t Clebsch_Gordan(Int_t two_ja, Int_t two_jb, Int_t two_jc, 5 Int_t two_ma, Int_t two_mb, Int_t two_mc ) { 6 return pow(-1,(two_ja-two_jb+two_mc)/2)*sqrt(two_jc+1) 7 *ROOT::Math::wigner_3j(two_ja, two_jb, two_jc, 8 two_ma, two_mb, -two_mc); 9 } 10 11 void calc_Clebsch_Gordan() { 12 Int_t two_j1 = 3; 13 Int_t two_j2 = 5; 14 Int_t two_j3 = 4; 15 Int_t two_m1 = 1; 16 Int_t two_m2 = -1; 17 Int_t two_m3 = 0; 18 std::cout << "C(" 19 << two_j1/2. << ", " << two_j2/2. << ", " << two_j3/2. << "; " 20 << two_m1/2. << ", " << two_m2/2. << ", " << two_m3/2. << ") = " 21 << Clebsch_Gordan(two_j1,two_j2,two_j3,two_m1,two_m2,two_m3) << std::endl; 22 }
MathMore ライブラリの ROOT::Math::wigner_3j 関数を用いている。この関数の引数は普通の 3j 記号の変数を2倍したものを用いる。実行方法は以下の通り。マクロの実行前に MathMore ライブラリをロードする。 MathMore ライブラリは前もってインストールしておく必要がある(参考: ROOT/MathMore)。
$ root root [] gSystem->Load("libMathMore") (int)1 root [] .x calc_Clebsch_Gordan.C C(1.5, 2.5, 2; 0.5, -0.5, 0) = -0.267261