ハドロンの基本情報と崩壊分岐比などをダンプするマクロ

Particle Data Groupのページに飛んで毎回PDFを見るのは大変なので、基本的な情報をダンプしてくれるマクロを準備しました。 第一引数にconst char*型で粒子の名前を指定すれば、指定したハドロンの質量や寿命をダンプしてくれます。 またTParticlePDGには崩壊チャンネルの情報が格納されており、TDecayChannelとして呼び出すことができます。 そのため、そのメソッドを使用して崩壊チャンネルと分岐比をダンプしています。 ソースコードは以下の通りです。

void GetDecayBranchFromPDG( const char* hname = "K-")
{ 

  TDatabasePDG* gPDGMassTable = new TDatabasePDG();
  TString HadronName = hname;
  TParticlePDG *ParentHadron = gPDGMassTable->GetParticle(HadronName.Data());
  Int_t NumOfDecayChannel = ParentHadron->NDecayChannels();
  
  std::cout << "  Parent Hadron : " << HadronName.Data() << ", Mass : " << ParentHadron->Mass()*1.e3 << "[MeV], Life Time : " << ParentHadron->Lifetime() << "[s]" << std::endl;
  
  for(Int_t i=0; i<NumOfDecayChannel; i++){
  
    TDecayChannel * DecayChannel = ParentHadron->DecayChannel(i);
    Double_t Val =  DecayChannel->BranchingRatio();
    Int_t NumOfDaughter = DecayChannel->NDaughters();
  
    std::cout << "    Decay Channel " << i << ", Branching Ratio : " << Val << ", Daughter List : ";
  
    for(Int_t j=0; j<NumOfDaughter; j++){
  
      TParticlePDG *DaughterHadron = gPDGMassTable->GetParticle(DecayChannel->DaughterPdgCode(j));
      std::cout << DaughterHadron->GetName() << " " ;
  
    }

  std::cout << std::endl;
  }

}
ヒント

第一引数に指定する名前については結局、元のテキストファイルを見る必要があります。 パスは$ROOTSYS/etc/pdg_table.txtです。 中身は以下ようになっています。NAMEのところが第一引数に渡すべき名前です。

#--------------------------------------------------------------------
#    i   NAME.............  KF AP   CLASS      Q        MASS     WIDTH  2*I+1 I3 2*S+1 FLVR TrkCod N(dec)
#--------------------------------------------------------------------
    1 d                     1  1 100 Quark      -1 4.670000e-03 0.000000e+00 -100 -1 -100 -1   -1   8
#----------------------------------------------------------------------
#    decay  type(PY6)    BR     Nd         daughters(codes, then names)
#----------------------------------------------------------------------
         1   102   0.00000e+00   2       21        1                                     g          d
         2   102   0.00000e+00   2       22        1                                     gamma      d
         3   102   0.00000e+00   2       23        1                                     Z0         d
         4   102   0.00000e+00   2      -24        2                                     W-         u
         5   102   0.00000e+00   2      -24        4                                     W-         c
         6   102   0.00000e+00   2      -24        6                                     W-         t
         7   102   0.00000e+00   2      -24        8                                     W-         t'
         8   102   0.00000e+00   2       25        1                                     h0         d
    2 d_bar                -1       1     0
    3 u                     2  1 100 Quark       2 2.160000e-03 0.000000e+00 -100 -1 -100 -1   -1   8
...

最後にマクロを実行した結果を貼っておく。

artemis [0] .x macro/GetDecayBranchFromPDG.C("K-")
  Parent Hadron : K-, Mass : 493.677[MeV], Life Time : 1.23794e-08[s]
    Decay Channel 0, Branching Ratio : 0.6352, Daughter List : mu- nu_mu_bar 
    Decay Channel 1, Branching Ratio : 0.2116, Daughter List : pi- pi0 
    Decay Channel 2, Branching Ratio : 0.0559, Daughter List : pi- pi- pi+ 
    Decay Channel 3, Branching Ratio : 0.0173, Daughter List : pi- pi0 pi0 
    Decay Channel 4, Branching Ratio : 0.0482, Daughter List : nu_e_bar e- pi0 
    Decay Channel 5, Branching Ratio : 0.0318, Daughter List : nu_mu_bar mu- pi0 
artemis [1] .x macro/GetDecayBranchFromPDG.C("mu-")
  Parent Hadron : mu-, Mass : 105.658[MeV], Life Time : 2.19698e-06[s]
    Decay Channel 0, Branching Ratio : 1, Daughter List : nu_e_bar e- nu_mu 
    Decay Channel 1, Branching Ratio : 0, Daughter List : gamma mu- 
    Decay Channel 2, Branching Ratio : 0, Daughter List : Z0 mu- 
    Decay Channel 3, Branching Ratio : 0, Daughter List : W- nu_mu 
    Decay Channel 4, Branching Ratio : 0, Daughter List : h0 mu- 
artemis [2] .x macro/GetDecayBranchFromPDG.C("pi-")
  Parent Hadron : pi-, Mass : 139.57[MeV], Life Time : 2.60327e-08[s]
    Decay Channel 0, Branching Ratio : 0.999877, Daughter List : mu- nu_mu_bar 
    Decay Channel 1, Branching Ratio : 0.000123, Daughter List : e- nu_e_bar 
artemis [3] .x macro/GetDecayBranchFromPDG.C("pi0")
  Parent Hadron : pi0, Mass : 134.977[MeV], Life Time : 8.42781e-17[s]
    Decay Channel 0, Branching Ratio : 0.988, Daughter List : gamma gamma 
    Decay Channel 1, Branching Ratio : 0.012, Daughter List : gamma e- e+