Locked History Actions

クレブシュ-ゴルダン係数

クレブシュ-ゴルダン係数

計算

  • 例えば $C(\frac{3}{2}, \frac{5}{2}, 2; \frac{1}{2},$-$\frac{1}{2},0)$ を計算するマクロ(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