#include #include #include #include "TROOT.h" #include "TFile.h" #include "TH1D.h" #include "JDetector/JPMTSimulator.hh" #include "JDetector/JPMTDefaultSimulator.hh" #include "Jeep/JParser.hh" #include "Jeep/JMessage.hh" /** * \file * * Example program to test generation of transit times using PMT simulator. * \author mdejong */ int main(int argc, char **argv) { using namespace std; using namespace JPP; string outputFile; int numberOfHits; JPMTParameters parameters; int debug; try { JProperties properties = parameters.getProperties(); JParser<> zap("Example program to test generation of transit times using PMT simulator."); zap['o'] = make_field(outputFile) = "pmt.root"; zap['n'] = make_field(numberOfHits) = 10000; zap['P'] = make_field(properties) = JPARSER::initialised(); zap['d'] = make_field(debug) = 0; zap(argc, argv); } catch(const exception &error) { FATAL(error.what() << endl); } if (debug >= JEEP::debug_t) { cout << "PMT parameters:" << endl; cout << parameters.getProperties(JEquationParameters("=", "\n", "", "")) << endl; } const JPMTIdentifier pmt(1,0); const JCalibration calibration; const JStatus status; const JPMTDefaultSimulator simulator(parameters, pmt); TFile out(outputFile.c_str(), "recreate"); JPMTData input; JPMTData output; TH1D h1("tts", NULL, 120, -20.0, +100.0); for (int i = 0; i != numberOfHits; ++i) { const double t_ns = 0.0; const int npe = 1; const double W = 1.0 / (double) numberOfHits; input .clear(); output.clear(); input.push_back(JPMTSignal(t_ns, npe)); simulator.processHits(pmt, calibration, status, input, output); for (JPMTData::const_iterator hit = output.begin(); hit != output.end(); ++hit) { h1.Fill(hit->t_ns, W); } } out.Write(); out.Close(); }