//Setups Analysis Management //Allows program to write aida file //and create plots and histograms. #ifdef G4ANALYSIS_USE #include #include "G4ios.hh" #include "G4Run.hh" #include "G4Event.hh" #include "G4Track.hh" #include "G4VVisManager.hh" #include "G4TrajectoryContainer.hh" #include "G4Trajectory.hh" #include "AIDA/AIDA.h" #include "ReactorAnalysisManager.hh" ReactorAnalysisManager* ReactorAnalysisManager::instance = 0; ReactorAnalysisManager::ReactorAnalysisManager() :analysisFactory(0), hFactory(0), tFactory(0), plotter(0) { // Hooking an AIDA compliant analysis system. analysisFactory = AIDA_createAnalysisFactory(); if(analysisFactory) { ITreeFactory* treeFactory = analysisFactory->createTreeFactory(); tree = treeFactory->create("Yaguar_Reactor.aida","xml",false,true,"compress=yes"); hFactory = analysisFactory->createHistogramFactory(*tree); IPlotterFactory* pf = analysisFactory->createPlotterFactory(0,0); if (pf) { plotter = pf->create("Plotter"); delete pf; } delete treeFactory; // Will not delete the ITree. } } ReactorAnalysisManager::~ReactorAnalysisManager() { if (analysisFactory) { if (!tree->commit()) G4cout << "Commit failed: no AIDA file produced!" << G4endl; delete tree; delete tFactory; delete hFactory; delete plotter; G4cout << "Warning: In case of working with JAS-AIDA, Geant4 will NOT exit unless you close the JAS-AIDA window." << G4endl; delete analysisFactory; } } IHistogramFactory* ReactorAnalysisManager::getHistogramFactory() { return hFactory; } IPlotter* ReactorAnalysisManager::getPlotter() { return plotter; } ReactorAnalysisManager* ReactorAnalysisManager::getInstance() { if (instance == 0) instance = new ReactorAnalysisManager(); return instance; } void ReactorAnalysisManager::dispose() { if (instance != 0) { delete instance; instance = 0; } } #endif // G4ANALYSIS_USE