Geant 4 生成 ROOT 文件(初学)
生活随笔
收集整理的這篇文章主要介紹了
Geant 4 生成 ROOT 文件(初学)
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
exmapleB4b 源代碼 B4bRunAction.cc(部分)
1. 在 RunAction() 構造函數(shù)中,定義 直方圖或TTree 的格式
// Create analysis manager// The choice of analysis technology is done via selectin of a namespace// in B4Analysis.hhauto analysisManager = G4AnalysisManager::Instance();G4cout << "Using " << analysisManager->GetType() << G4endl;// Create directories //analysisManager->SetHistoDirectoryName("histograms");//analysisManager->SetNtupleDirectoryName("ntuple");analysisManager->SetVerboseLevel(1);analysisManager->SetNtupleMerging(true);// Note: merging ntuples is available only with Root output// Book histograms, ntuple//// Creating histograms,生成四個1維直方圖 TH1D//analysisManager->CreateH1("Eabs","Edep in absorber", 100, 0., 800*MeV);analysisManager->CreateH1("Egap","Edep in gap", 100, 0., 100*MeV);analysisManager->CreateH1("Labs","trackL in absorber", 100, 0., 1*m);analysisManager->CreateH1("Lgap","trackL in gap", 100, 0., 50*cm);// Creating ntuple,生成 TTree,每行四個數(shù)據(jù)//analysisManager->CreateNtuple("B4", "Edep and TrackL");analysisManager->CreateNtupleDColumn("Eabs");analysisManager->CreateNtupleDColumn("Egap");analysisManager->CreateNtupleDColumn("Labs");analysisManager->CreateNtupleDColumn("Lgap");analysisManager->FinishNtuple(); }2. 在 BeginOfRunAction() 函數(shù)中,生成一個root文件,名稱為B4
void B4RunAction::BeginOfRunAction(const G4Run* /*run*/) { //inform the runManager to save random number seed//G4RunManager::GetRunManager()->SetRandomNumberStore(true);// Get analysis managerauto analysisManager = G4AnalysisManager::Instance();// Open an output file//G4String fileName = "B4";analysisManager->OpenFile(fileName); }3. 在 EndOfRunAction() 函數(shù)中,保存數(shù)據(jù)(analysis manager)到root文件
void B4RunAction::EndOfRunAction(const G4Run* /*run*/) {// print histogram statistics// 該部分可查閱源代碼// save histograms & ntuple//analysisManager->Write();analysisManager->CloseFile(); }4. 在需要抽取數(shù)據(jù)的文件中,向 analysis manager 填充數(shù)據(jù):源代碼 B4bcEventAction.cc(部分)
// Fill histograms, ntuple//// get analysis managerauto analysisManager = G4AnalysisManager::Instance();// fill histogramsanalysisManager->FillH1(0, absoHit->GetEdep());analysisManager->FillH1(1, gapHit->GetEdep());analysisManager->FillH1(2, absoHit->GetTrackLength());analysisManager->FillH1(3, gapHit->GetTrackLength());// fill ntupleanalysisManager->FillNtupleDColumn(0, absoHit->GetEdep());analysisManager->FillNtupleDColumn(1, gapHit->GetEdep());analysisManager->FillNtupleDColumn(2, absoHit->GetTrackLength());analysisManager->FillNtupleDColumn(3, gapHit->GetTrackLength());analysisManager->AddNtupleRow();5. 輸出文件:
TFile** B4.root TFile* B4.root KEY: TTree B4;1 Edep and TrackLKEY: TH1D Eabs;1 Edep in absorberKEY: TH1D Egap;1 Edep in gapKEY: TH1D Labs;1 trackL in absorberKEY: TH1D Lgap;1 trackL in gap6. 查看數(shù)據(jù)或繪圖:
B4->Show()/Scan()/Print() Eabs->Draw() root [2] B4->Show(0) ======> EVENT:0Eabs = 46.0496Egap = 3.95037Labs = 32.332Lgap = 17.8681注:其他信息
AnalysisManager類信息:http://www.apc.univ-paris7.fr/~franco/g4doxy4.10/html/class_analysis_manager.html
B5RunAction信息:http://geant4-userdoc.web.cern.ch/geant4-userdoc/Doxygen/examples_doc/html/B5RunAction_8cc_source.html
總結
以上是生活随笔為你收集整理的Geant 4 生成 ROOT 文件(初学)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 今年的金德值得期待的人物_原水_新浪博客
- 下一篇: 中兴通讯加入LoRa Alliance董