12 #include <top/modules/TOPChannelT0MC/TOPChannelT0MCModule.h>
15 #include <framework/datastore/StoreArray.h>
18 #include <framework/database/DBStore.h>
44 std::vector<double> frange = {100, 0., 1.};
46 setDescription(
"TOP channel T0 Calibration of MC extraction");
48 addParam(
"outputFile", m_outputFile,
"Output root file name",
50 addParam(
"fitRange", m_fitRange,
"fit range[nbins, xmin, xmax]", frange);
54 TOPChannelT0MCModule::~TOPChannelT0MCModule()
58 void TOPChannelT0MCModule::initialize()
61 m_digits.isRequired();
65 void TOPChannelT0MCModule::beginRun()
69 void TOPChannelT0MCModule::event()
72 for (
auto& digit : m_digits) {
73 unsigned channel = digit.getChannel();
74 if (channel < c_NumChannels) {
75 auto histo = m_histo[channel];
78 ss <<
"chan" << channel ;
81 string title =
"Times " + name;
82 histo =
new TH1F(name.c_str(), title.c_str(), (
int)m_fitRange[0], m_fitRange[1], m_fitRange[2]);
83 m_histo[channel] = histo;
85 if (digit.getTime() < m_fitRange[1] || digit.getTime() > m_fitRange[2])
continue;
86 histo->Fill(digit.getTime());
91 void TOPChannelT0MCModule::endRun()
95 void TOPChannelT0MCModule::terminate()
97 auto file =
new TFile(m_outputFile.c_str(),
"RECREATE");
98 auto otree =
new TTree(
"t0MC",
"extract channel t0 info. from MC");
100 unsigned channel = 0;
103 otree->Branch(
"maxpos", &maxpos,
"maxpos/D");
104 otree->Branch(
"channel", &channel,
"channel/I");
106 for (
int i = 0; i < c_NumChannels; i++) {
108 maxpos = m_histo[i]->GetXaxis()->GetBinCenter(m_histo[i]->GetMaximumBin());