日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

Geant 4 生成 ROOT 文件(初学)

發(fā)布時(shí)間:2023/12/20 编程问答 39 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Geant 4 生成 ROOT 文件(初学) 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

exmapleB4b 源代碼 B4bRunAction.cc(部分)

1. 在 RunAction() 構(gòu)造函數(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,生成四個(gè)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,每行四個(gè)數(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ù)中,生成一個(gè)root文件,名稱(chēng)為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 gap

6. 查看數(shù)據(jù)或繪圖:

B4->Show()/Scan()/Print() Eabs->Draw() root [2] B4->Show(0) ======> EVENT:0Eabs = 46.0496Egap = 3.95037Labs = 32.332Lgap = 17.8681

注:其他信息

AnalysisManager類(lèi)信息: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

總結(jié)

以上是生活随笔為你收集整理的Geant 4 生成 ROOT 文件(初学)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。