53 using namespace KM3NETDAQ;
74 JParser<> zap(
"Auxiliary program to determine PMT parameters from OMGsim data.");
76 zap[
'f'] =
make_field(inputFile,
"input file.");
78 zap[
'n'] =
make_field(numberOfEvents) = JLimit::max();
79 zap[
'a'] =
make_field(detectorFile,
"detector file.");
80 zap[
'T'] =
make_field(TMax_ns,
"time window [ns].") = 20.0;
88 catch(
const exception &error) {
89 FATAL(error.what() << endl);
93 gRandom->SetSeed(seed);
106 FATAL(
"Wrong number of modules " <<
detector.size() << endl);
116 const Int_t nx = combinatorics.getNumberOfPairs();
117 const Double_t
xmin = -0.5;
118 const Double_t
xmax = nx - 0.5;
120 const Double_t ymin = -floor(TMax_ns) + 0.125;
121 const Double_t ymax = +floor(TMax_ns) - 0.125;
122 const Int_t ny = (Int_t) ((ymax - ymin) / 0.25);
131 for (
size_t i = 0;
i != module.size(); ++
i) {
132 router.put(module[
i].getID(),
i);
135 double numberOfPrimaries = 0.0;
141 STATUS(
"Extracting header data... " << flush);
145 const JHead buffer(header);
147 if (buffer.is_valid(&JHead::norma))
148 numberOfPrimaries = buffer.norma.numberOfPrimaries;
154 }
catch(
const exception& error) {
155 FATAL(error.what() << endl);
158 if (numberOfPrimaries == 0.0) {
159 FATAL(
"Number of primaries " << numberOfPrimaries << endl);
180 while (inputFile.hasNext()) {
182 if (inputFile.getCounter()%10000== 0) {
183 STATUS(
"event: " << setw(10) << inputFile.getCounter() <<
'\r');
DEBUG(endl);
186 const Evt* evt = inputFile.next();
192 for (
const auto& hit : evt->
mc_hits) {
194 if (router.has(hit.pmt_id)) {
196 const int pmt = router.get(hit.pmt_id);
205 for (
const auto& hit : output) {
206 buffer.push_back({pmt, hit.t_ns});
214 h2s.Fill((
double) combinatorics.getIndex(p->pmt,q->pmt),
215 JCombinatorics::getSign(p->pmt,q->pmt) * (q->t1 - p->t1));
223 const double W =
R / numberOfPrimaries;
Utility class to parse command line options.
Data structure for PMT analogue signal.
Data structure for a composite optical module.
#define THROW(JException_t, A)
Marco for throwing exception with std::ostream compatible message.
Utility class to parse parameter values.
*fatal Wrong number of arguments esac JCookie sh typeset Z DETECTOR typeset Z SOURCE_RUN typeset Z TARGET_RUN set_variable PARAMETERS_FILE $WORKDIR parameters
#define MAKE_CSTRING(A)
Make C-string.
JCalibration getCalibration(const JCalibration &first, const JCalibration &second)
Get calibration to go from first to second calibration.
Empty structure for specification of parser element that is initialised (i.e. does not require input)...
Head getHeader(const JMultipleFileScanner_t &file_list)
Get Monte Carlo header.
Auxiliary class for defining the range of iterations of objects.
Auxiliary class to sort pairs of PMT addresses within optical module.
#define make_field(A,...)
macro to convert parameter to JParserTemplateElement object
bool putObject(TDirectory &dir, const TObject &object)
Write object to ROOT directory.
The Head class reflects the header of Monte-Carlo event files, which consists of keys (also referred ...
PMT analogue signal processor.
then JCookie sh JDataQuality D $DETECTOR_ID R
void load(const std::string &file_name, JDetector &detector)
Load detector from input file.
General purpose class for object reading from a list of file names.
std::vector< Hit > mc_hits
MC: list of MC truth hits.
Template data structure for PMT I/O.
const JLimit & getLimit() const
Get limit.
Data structure for PMT parameters.
do set_variable DETECTOR_TXT $WORKDIR detector
The Evt class respresent a Monte Carlo (MC) event as well as an offline event.
static const char *const _2S
Name extension for 2D counts.
#define DEBUG(A)
Message macros.