Graduation-Project/src/GeneAnalysisManager.cc

64 lines
1.8 KiB
C++

#include "GeneAnalysisManager.hh"
GeneAnalysisManager* GeneAnalysisManager::instance = 0;
GeneAnalysisManager::GeneAnalysisManager() : analysisFileName("Simulation_Ne22an.root"), theTFile(0), tr(0) {
memset(&mydata, 0x00, sizeof(mydata));
}
GeneAnalysisManager::~GeneAnalysisManager() {
delete theTFile;
theTFile = 0;
delete tr;
tr = 0;
}
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::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", "Ne22an 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();
}
// 4cout<<" --> reactNum: "<< reactNum <<G4endl;
}