#include #include #include #include #include "UtlArguments.hh" #include "RcdArena.hh" #include "RcdCount.hh" #include "RunReader.hh" #include "SubAccessor.hh" #include "MpsAnalysis.hh" using namespace std; bool continueJob=true; void signalHandler(int signal) { std::cerr << "Process "<< getpid() << " received signal "<< signal << std::endl; continueJob=false; } int main(int argc, const char **argv) { UtlArguments argh(argc, argv); const unsigned numberOfBtrs(argh.optionArgument('b', 1000000000, "Number of bunch trains")); const unsigned numberOfCfgs(argh.optionArgument('c', 1000000000, "Number of configurations")); const unsigned numberOfRuns(argh.optionArgument('n', 1, "Number of runs")); const unsigned printLevel(argh.optionArgument('p', 9, "Print level")); const unsigned analysisBits(argh.optionArgument('a', MpsAnalysis::defaultMpsAnalysisBits, "MpsAnalysis bits")); const unsigned lowThreshold(argh.optionArgument('l', 0, "Low threshold")); const unsigned highThreshold(argh.optionArgument('u', 500, "Upper threshold")); const unsigned bins(argh.optionArgument('i', 0, "Bins")); // Get run number as last argument const unsigned runnum(argh.lastArgument(999999, "Run number")); if (argh.help()) return 0; // Allow interrupts signal(SIGINT, signalHandler); signal(SIGTERM, signalHandler); // Define memory space for records RcdArena arena; // Create simple record type counter and configuration counter RcdCount counter; unsigned nCfg(0); unsigned nBtr(0); // Create MAPS analysis module MpsAnalysis analysis(analysisBits, runnum, bins, lowThreshold, highThreshold); analysis.printLevel(printLevel); // This can handle both single-file and multi-file runs RunReader reader; for (unsigned run(0); run