ハドロンの基本情報と崩壊分岐比などをダンプするマクロ
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+