89 lines
1.9 KiB
C++
89 lines
1.9 KiB
C++
//
|
|
// SiPMAnalysis.cc
|
|
// SiPM
|
|
//
|
|
// Created by Baranyai David on 2018. 04. 03..
|
|
// Modified for SiPM Simulation on 2018. 08. 23
|
|
//
|
|
|
|
#include "SiPMAnalysis.hh"
|
|
|
|
SiPMAnalysis::SiPMAnalysis()
|
|
{
|
|
SiPMParameters *parameters = SiPMParameters::GetInstance();
|
|
G4int xDiv = parameters -> GetXDivison();
|
|
G4int yDiv = parameters -> GetYDivison();
|
|
noOfSipm = xDiv * yDiv;
|
|
G4int counter = 0;
|
|
|
|
char filename[20];
|
|
char treename[20];
|
|
snprintf(filename, 30, "data.root");
|
|
ttree = std::vector<TTree*>(noOfSipm,0);
|
|
|
|
for(int i = 0; i < xDiv; i++)
|
|
{
|
|
for (int j = 0; j < yDiv; j++)
|
|
{
|
|
snprintf(treename, 20, "%dx_%dy",i,j);
|
|
ttree[counter] = new TTree(treename, treename);
|
|
ttree[counter] -> Branch("x", &x);
|
|
ttree[counter] -> Branch("y", &y);
|
|
ttree[counter] -> Branch("e", &e);
|
|
ttree[counter] -> Branch("sipm", &sipm);
|
|
ttree[counter] -> Branch("time", &time);
|
|
counter++;
|
|
}
|
|
}
|
|
counter = 0;
|
|
|
|
file = new TFile(filename,"RECREATE");
|
|
instance = this;
|
|
SiPMAnalysisMutex = G4MUTEX_INITIALIZER;
|
|
}
|
|
|
|
SiPMAnalysis::~SiPMAnalysis()
|
|
{
|
|
|
|
}
|
|
|
|
SiPMAnalysis* SiPMAnalysis::getInstance()
|
|
{
|
|
if (instance == 0)
|
|
{
|
|
std::cout << "Created analysis instance" << std::endl;
|
|
instance = new SiPMAnalysis();
|
|
}
|
|
|
|
return instance;
|
|
}
|
|
|
|
void SiPMAnalysis::Fill(int copyNo, double x1, double y1, double e1, int sipm1, double time1)
|
|
{
|
|
G4AutoLock lock(&SiPMAnalysisMutex);
|
|
|
|
x = x1;
|
|
y = y1;
|
|
e = e1;
|
|
sipm = sipm1;
|
|
time = time1;
|
|
|
|
ttree[copyNo] -> Fill();
|
|
|
|
ttree[copyNo] -> FlushBaskets();
|
|
|
|
lock.unlock();
|
|
}
|
|
|
|
void SiPMAnalysis::Close()
|
|
{
|
|
for(int i = 0; i < noOfSipm; i++)
|
|
{
|
|
ttree[i] -> Write();
|
|
}
|
|
file -> Close();
|
|
}
|
|
|
|
/* Null, because instance will be initialized on demand. */
|
|
SiPMAnalysis* SiPMAnalysis::instance = 0;
|