Geant 4 生成 ROOT 文件(初学)

您所在的位置:网站首页 geant4能量沉积数据处理 Geant 4 生成 ROOT 文件(初学)

Geant 4 生成 ROOT 文件(初学)

2023-09-22 07:01| 来源: 网络整理| 查看: 265

exmapleB4b 源代码 B4bRunAction.cc(部分)

1. 在 RunAction() 构造函数中,定义 直方图或TTree 的格式

// Create analysis manager // The choice of analysis technology is done via selectin of a namespace // in B4Analysis.hh auto analysisManager = G4AnalysisManager::Instance(); G4cout 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,每行四个数据 // analysisManager->CreateNtuple("B4", "Edep and TrackL"); analysisManager->CreateNtupleDColumn("Eabs"); analysisManager->CreateNtupleDColumn("Egap"); analysisManager->CreateNtupleDColumn("Labs"); analysisManager->CreateNtupleDColumn("Lgap"); analysisManager->FinishNtuple(); }

2. 在 BeginOfRunAction() 函数中,生成一个root文件,名称为B4

void B4RunAction::BeginOfRunAction(const G4Run* /*run*/) { //inform the runManager to save random number seed //G4RunManager::GetRunManager()->SetRandomNumberStore(true); // Get analysis manager auto analysisManager = G4AnalysisManager::Instance(); // Open an output file // G4String fileName = "B4"; analysisManager->OpenFile(fileName); }

3. 在 EndOfRunAction() 函数中,保存数据(analysis manager)到root文件

void B4RunAction::EndOfRunAction(const G4Run* /*run*/) { // print histogram statistics // 该部分可查阅源代码 // save histograms & ntuple // analysisManager->Write(); analysisManager->CloseFile(); }

4. 在需要抽取数据的文件中,向 analysis manager 填充数据:源代码 B4bcEventAction.cc(部分)

// Fill histograms, ntuple // // get analysis manager auto analysisManager = G4AnalysisManager::Instance(); // fill histograms analysisManager->FillH1(0, absoHit->GetEdep()); analysisManager->FillH1(1, gapHit->GetEdep()); analysisManager->FillH1(2, absoHit->GetTrackLength()); analysisManager->FillH1(3, gapHit->GetTrackLength()); // fill ntuple analysisManager->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 TrackL KEY: TH1D Eabs;1 Edep in absorber KEY: TH1D Egap;1 Edep in gap KEY: TH1D Labs;1 trackL in absorber KEY: TH1D Lgap;1 trackL in gap

6. 查看数据或绘图:

B4->Show()/Scan()/Print() Eabs->Draw() root [2] B4->Show(0) ======> EVENT:0 Eabs = 46.0496 Egap = 3.95037 Labs = 32.332 Lgap = 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



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3