Graduation-Project/src/GeneAnalysisManager.cc

83 lines
2.0 KiB
C++

#include "GeneAnalysisManager.hh"
GeneAnalysisManager* GeneAnalysisManager::instance = 0;
GeneAnalysisManager::GeneAnalysisManager()
#ifdef ANALYSIS_USE
: analysisFileName("Simulation_C13an.root"),
theTFile(0),
tr(0)
#endif
{
// evtNo = 0;
memset(&mydata, 0x00, sizeof(mydata));
}
GeneAnalysisManager::~GeneAnalysisManager() {
#ifdef ANALYSIS_USE
delete theTFile;
theTFile = 0;
delete tr;
tr = 0;
#endif
}
GeneAnalysisManager* GeneAnalysisManager::GetInstance() {
if (instance == 0) instance = new GeneAnalysisManager;
return instance;
}
void GeneAnalysisManager::SetAnalysisFileName(G4String aFileName) { analysisFileName = aFileName; }
void GeneAnalysisManager::FillDetData(G4int ndets, G4double* edet, G4int* ndet) {
mydata.Ndets = ndets;
for (G4int i = 0; i < ndets; i++) {
mydata.detE[i] = edet[i];
mydata.detId[i] = ndet[i];
}
}
void GeneAnalysisManager::FillAng(G4double thetacm, G4double thetalab) {
mydata.Thetacm = thetacm;
mydata.Thetalab = thetalab;
}
/*
void GeneAnalysisManager::EventNo(){
evtNo++;
}
*/
#ifdef ANALYSIS_USE
void GeneAnalysisManager::book() {
// delete all associated variables created via new, moreover it delete itself.
if (theTFile != 0) delete theTFile;
theTFile = new TFile(analysisFileName, "RECREATE");
// create a tree
tr = new TTree("SimData1", "C13an simulation data");
tr->Branch("Thetacm", &mydata.Thetacm, "Thetacm/D");
tr->Branch("Thetalab", &mydata.Thetalab, "Thetalab/D");
tr->Branch("Ndets", &mydata.Ndets, "Ndets/I");
tr->Branch("detE", mydata.detE, "detE[Ndets]/D");
tr->Branch("detId", mydata.detId, "detId[Ndets]/I");
}
void GeneAnalysisManager::FillTree() {
tr->Fill();
memset(&mydata, 0x00, sizeof(mydata));
}
// save data & close the file
void GeneAnalysisManager::save() {
if (theTFile) {
theTFile->Write();
theTFile->Close();
}
// evtNo = 0;
// G4cout<<" --> reactNum: "<< reactNum <<G4endl;
}
#endif