43{
46
49 JLimit_t& numberOfEvents = inputFile.getLimit();
50 string detectorFile;
55
56 try {
57
58 JParser<> zap(
"Auxiliary program to generate noise in Monte Carlo event.");
59
68
69 zap(argc, argv);
70 }
71 catch(const exception &error) {
72 FATAL(error.what() << endl);
73 }
74
75
76 seed.set(gRandom);
77
78 const int NPE = 1;
79
80
82
83 try {
85 }
88 }
89
90
92
94
96 }
97
98
100
102
105 }
106
109
110 if (!inputFile.empty()) {
111
113
115
117
119
121
123
125
127
129
130 iter_swap(i, --__end);
131
132 } else {
133
134 time_range.include(
getTime(*i));
135
136 ++i;
137 }
138 }
139
140 event->mc_hits.erase(__end, event->mc_hits.end());
141
142 if (time_range.is_valid())
143 time_range.add(period);
144 else
145 time_range = period;
146
147
149
150 for (JDetector::const_iterator module =
detector.begin(); module !=
detector.end(); ++module) {
151
152 buffer.
reset(module->size());
153
154 modk40.generateHits(*module, time_range, buffer);
155
156 for (unsigned int pmt = 0; pmt != buffer.size(); ++pmt) {
157
158 const JModuleData::value_type& frame = buffer[pmt];
159
160 for (JModuleData::value_type::const_iterator hit = frame.begin(); hit != frame.end(); ++hit) {
161
162 event->mc_hits.push_back(
JHit_t(event->mc_hits.size() + 1,
163 module->getPMT(pmt).getID(),
165 0,
166 hit->t_ns,
167 NPE));
168 }
169 }
170 }
171
172
174 }
175 } else {
176
177 for (
counter_type counter = 0; counter != numberOfEvents; ++counter) {
178
179 STATUS(
"event: " << setw(10) << counter <<
'\r');
DEBUG(endl);
180
182
184
185 for (JDetector::const_iterator module =
detector.begin(); module !=
detector.end(); ++module) {
186
187 buffer.
reset(module->size());
188
189 modk40.generateHits(*module, period, buffer);
190
191 for (unsigned int pmt = 0; pmt != buffer.size(); ++pmt) {
192
193 const JModuleData::value_type& frame = buffer[pmt];
194
195 for (JModuleData::value_type::const_iterator hit = frame.begin(); hit != frame.end(); ++hit) {
196
198 module->getPMT(pmt).getID(),
200 0,
201 hit->t_ns,
202 NPE));
203 }
204 }
205 }
206
207
209 }
210 }
212
215}
#define DEBUG(A)
Message macros.
#define make_field(A,...)
macro to convert parameter to JParserTemplateElement object
Default implementation of the simulation of K40 background.
Data structure for PMT data corresponding to a detector module.
void reset(size_t size)
Reset buffers.
Utility class to parse command line options.
General purpose class for object reading from a list of file names.
virtual bool hasNext() override
Check availability of next element.
counter_type getCounter() const
Get counter.
virtual const pointer_type & next() override
Get next element.
@ HIT_TYPE_NOISE
Random noise.
bool is_noise(const Hit &hit)
Verify hit origin.
JTOOLS::JRange< double > JTimeRange
Type definition for time range (unit [s]).
void load(const std::string &file_name, JDetector &detector)
Load detector from input file.
This name space includes all other name spaces (except KM3NETDAQ, KM3NET and ANTARES).
Long64_t counter_type
Type definition for counter.
const char * getTime()
Get current local time conform ISO-8601 standard.
double getMaximalTime(const double R_Hz)
Get maximal time for given rate.
The Evt class respresent a Monte Carlo (MC) event as well as an offline event.
std::vector< Hit > mc_hits
MC: list of MC truth hits.
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.
Auxiliary class to set-up Hit.
Auxiliary class for defining the range of iterations of objects.
static counter_type max()
Get maximum counter value.