#include #include #include #include #include "TROOT.h" #include "TFile.h" #include "antcc/Header.hh" #include "antcc/Event.hh" #include "JROOT/JRootTree.hh" #include "Jeep/JParser.hh" #include "Jeep/JMessage.hh" #include "JSirene/JEvent.hh" #include "JDetector/JK40DefaultSimulator.hh" #include "JDetector/JDetector.hh" #include "JDetector/JDetectorToolkit.hh" #include "JSupport/JMultipleFileScanner.hh" #include "JSupport/JFileRecorder.hh" #include "JSupport/JMonteCarloToolkit.hh" #include "JSupport/JSupport.hh" /** * Auxiliary program to add noise to Monte Carlo event. */ int main(int argc, char **argv) { using namespace std; using namespace JSUPPORT; using JSIRENE::JTimeRange; JMultipleFileScanner inputFile; JFileRecorder ::typelist> outputFile; JLimit_t& numberOfEvents = inputFile.getLimit(); string detectorFile; double RateL0_Hz; vector RateL1_Hz; JTimeRange period; UInt_t seed; int debug; try { JParser<> zap; zap['f'] = make_field(inputFile); zap['o'] = make_field(outputFile) = "modk40.root"; zap['n'] = make_field(numberOfEvents) = JLimit::max(); zap['a'] = make_field(detectorFile); zap['r'] = make_field(RateL0_Hz); zap['R'] = make_field(RateL1_Hz); zap['T'] = make_field(period) = JTimeRange::JDEFAULT_RANGE; zap['S'] = make_field(seed) = 0; zap['d'] = make_field(debug) = 1; zap['f'] = JPARSER::initialised(); if (zap.read(argc, argv) != 0) return 1; } catch(const exception &error) { FATAL(error.what() << endl); } gRandom->SetSeed(seed); using namespace JSIRENE; JDetector detector; try { load(detectorFile, detector); } catch(const JException& error) { FATAL(error); } if (period == JTimeRange::JDEFAULT_RANGE) { const double Tmax = getMaximalTime(detector); period = JTimeRange(-Tmax, +Tmax); } const JK40DefaultSimulator modk40(RateL0_Hz, RateL1_Hz); outputFile.open(); if (!outputFile.is_open()) FATAL("Error opening file " << outputFile << endl); outputFile.put(*gRandom); if (!inputFile.empty()) copyHeader(inputFile, outputFile); JMultipleFileScanner& in = inputFile; for (JCounter_t event_count = 0; event_count != numberOfEvents; ++event_count) { STATUS("event: " << setw(10) << event_count << '\r'); DEBUG(endl); JEvent event; if (!in.empty()) { if (in.hasNext()) event = *in.next(); else break; } event.addNoise(detector, modk40, period); outputFile.put(event); } STATUS(endl); outputFile.put(*gRandom); outputFile.close(); }