102 if (pmt.getT0() <
T0_ns) {
144 JLimit_t& numberOfEvents = inputFile.getLimit();
159 JParser<> zap(
"Auxiliary program to trigger Monte Carlo events.");
161 zap[
'f'] =
make_field(inputFile,
"input file (output of detector simulation)");
178 catch(
const exception &error) {
210 FATAL(
"Invalid PMT parameters " << pmtParameters <<
endl);
213 if (pmtParameters.
getQE() != 1.0) {
215 WARNING(
"Correct background rates with global efficiency " << pmtParameters.
getQE() <<
endl);
245 if (!scanner.empty()) {
246 UTC = scanner.begin()->getTimesliceStart();
248 FATAL(
"Run-by-run simulation misses summary data." <<
endl);
264 NOTICE(
"Set trigger parameters from run-by-run input." <<
endl);
267 WARNING(
"No trigger parameters from run-by-run input;\nrun with default/user input." <<
endl);
272 JHead buffer(header);
277 copy(buffer, header);
281 NOTICE(
"Using fixed rates [Hz]: " << rates_Hz <<
endl);
295 if (parameters.disableHighRateVeto) {
297 NOTICE(
"Disabling high-rate veto of all PMTs." <<
endl);
310 const JTimeRange period(-(Tmax + parameters.TMaxLocal_ns),
311 +(Tmax + parameters.TMaxLocal_ns));
323 const JBuildL1_t buildL1(parameters);
324 const JBuildL2_t buildL2(parameters.L2);
325 const JBuildL2_t buildSN(parameters.SN);
334 TH1D h1(
"Trigger bits",
NULL, NUMBER_OF_TRIGGER_BITS, -0.5, NUMBER_OF_TRIGGER_BITS - 0.5);
349 int trigger_counter = 0;
351 for (
string file_name; inputFile.hasNext(); ) {
355 Evt*
event = inputFile.next();
359 if (file_name != inputFile.getFilename()) {
361 file_name = inputFile.getFilename();
365 event->mc_run_id =
head.start_run.run_id;
368 run =
event->mc_run_id;
372 int frame_index = inputFile.getCounter() + 1;
380 FATAL(
"Monte Carlo event time undefined." <<
endl);
388 const Long64_t index = scanner.find(utc);
392 p = scanner.getEntry(index - 1);
406 <<
FIXED(15,3) << event->mc_event_time.AsDouble() <<
" [s] "
408 <<
FIXED(12,0) << t1 <<
" [ns] "
412 if (!event->mc_hits.empty() &&
frame_time(t1)) {
424 timeRange.
add(event->mc_t);
425 timeRange.
add(period);
447 const JModule&
module = moduleRouter.getModule(super_frame->getModuleID());
448 const JSuperFrame2D_t& buffer = JSuperFrame2D_t::demultiplex(*
super_frame,
module);
478 JTimeslice_t::value_type tv(
super_frame->getDAQChronometer(),
508 for (
int i = 0; i != h1.GetNbinsX(); ++i) {
509 if (
to->hasTriggerBit(i)) {
520 cout <<
"Event time: "
521 <<
to->getFrameIndex() <<
' '
532 parameters.TMaxLocal_ns,
533 getTimeRange(parameters));
535 tev.setCounter(trigger_counter);
546 if (parameters.writeL0()) {
550 if (parameters.writeL1()) {
554 if (parameters.writeL2()) {
558 if (parameters.writeSN()) {
562 if (parameters.writeSummary()) {
Data structure for detector geometry and calibration.
Recording of objects on file according a format that follows from the file name extension.
Basic data structure for L0 hit.
Basic data structure for L1 hit.
General purpose messaging.
#define DEBUG(A)
Message macros.
Map of associated modules in detector.
Scanning of objects from multiple files according a format that follows from the extension of each fi...
Direct access to PMT in detector data structure.
Utility class to parse command line options.
#define make_field(A,...)
macro to convert parameter to JParserTemplateElement object
I/O formatting auxiliaries.
Auxiliaries for creation of summary data.
ROOT TTree parameter settings of various packages.
int main(int argc, char **argv)
Basic data structure for time and time over threshold information of hit.
void push(T JHead::*pd)
Push given data member to Head.
static double getSigma()
Get intrinsic time smearing of K40 coincidences.
static void setSigma(const double sigma)
Set intrinsic time smearing of K40 coincidences.
Default implementation of the simulation of K40 background.
Router for direct addressing of module data in detector data structure.
bool hasModule(const JObjectID &id) const
Has module.
Data structure for a composite optical module.
Default PMT simulation interface.
Auxiliary class for map of PMT parameters.
double getQE(const JPMTIdentifier &id) const
Get QE of given PMT.
bool is_valid() const
Check validity of PMT parameters.
Data structure for PMT geometry, calibration and status.
virtual const char * what() const override
Get error message.
static void Throw(const bool option)
Enable/disable throw option.
Template definition of a multi-dimensional oscillation probability interpolation table.
Router for fast addressing of summary data in KM3NETDAQ::JDAQSummaryslice data structure as a functio...
CLB simulation based on run-by-run information.
K40 simulation based on run-by-run information.
PMT simulation based on run-by-run information.
Auxiliary class to build KM3NETDAQ::JDAQEvent for a triggered event.
const JDAQChronometer & getDAQChronometer() const
Get DAQ chronometer.
JDAQUTCExtended getTimesliceStart() const
Get start of timeslice.
Data structure for UTC time.
static const JDAQUTCExtended & getInstance()
Get arbitrary offset (e.g.
JTimeRange getTimeRange(const Evt &event)
Get time range (i.e. time between earliest and latest hit) of Monte Carlo event.
void copy(const Head &from, JHead &to)
Copy header from from to to.
void load(const std::string &file_name, JDetector &detector)
Load detector from input file.
double getMaximalDistance(const JDetector &detector, const bool option=false)
Get maximal distance between modules in detector.
This name space includes all other name spaces (except KM3NETDAQ, KM3NET and ANTARES).
double getTimeDuration(const JDAQUTCTimeRange &utc)
Get time duration of given UTC time range.
JDAQUTCTimeRange getUTCTimeRange()
Get UTC time range.
JTriggerParameters getTriggerParameters(const JMultipleFileScanner_t &file_list)
Get trigger parameters.
Head getHeader(const JMultipleFileScanner_t &file_list)
Get Monte Carlo header.
KM3NeT DAQ data structures and auxiliaries.
double getFrameTime()
Get frame time duration.
void setDAQLongprint(const bool option)
Set DAQ print option.
double getTimeOfFrame(const int frame_index)
Get start time of frame in ns since start of run for a given frame index.
double getMaximalTime(const double R_Hz)
Get maximal time for given rate.
double getTimeDifference(const JDAQChronometer &first, const JDAQChronometer &second)
Get time difference between two chronometers.
JDAQUTCExtended getDAQUTCExtended(const TTimeStamp &t0, const double t1=0.0)
Get DAQ UTC time.
static const int HIGH_RATE_VETO_DISABLE
Enable (disable) use of high-rate veto test if this status bit is 0 (1);.
static const int PMT_DISABLE
ile KM3NeT Data Definitions v3.6.2 https://git.km3net.de/common/km3net-dataformat
The Evt class respresent a Monte Carlo (MC) event as well as an offline event.
Auxiliary data structure for floating point format specification.
The Head class reflects the header of Monte-Carlo event files, which consists of keys (also referred ...
double livetime_s
Live time [s].
Match of two events considering overlap in time and position.
Transmission with position.
Template definition of random value generator.
Empty structure for specification of parser element that is initialised (i.e. does not require input)...
Auxiliary class for K40 rates.
void correct(const double QE)
Correct rates for global efficiency,.
Auxiliary class for defining the range of iterations of objects.
static counter_type max()
Get maximum counter value.
Router for fast addressing of hits in KM3NETDAQ::JDAQTimeslice data structure as a function of the op...
void configure(const JDAQTimeslice ×lice)
Configure.
Timeslice with Monte Carlo event.
Auxiliary class to create summary data.