43 struct JK40DefaultSimulator_t :
49 JK40DefaultSimulator_t() :
62 friend inline std::istream&
operator>>(std::istream& in, JK40DefaultSimulator_t&
object)
94int main(
int argc,
char **argv)
100 Long64_t numberOfEvents;
102 JK40DefaultSimulator_t k40Simulator;
109 JParser<> zap(
"Example program to test hit coincidence building with random data.");
121 catch(
const exception &error) {
122 FATAL(error.what() << endl);
125 gRandom->SetSeed(seed);
132 detector.push_back(getModule<JKM3NeT_t>(1001));
138 simbad.
reset(k40Simulator.clone());
143 TProfile hn(
"hn", NULL, 31, 0.5, +31.5);
144 TProfile hc(
"hc", NULL, 21, -1.05, +1.05);
145 TProfile ht(
"ht", NULL, 20, 0.5, +20.5);
151 typedef vector <hit_type> JFrameL1_t;
153 typedef JBuildL1 <hit_type> JBuildL1_t;
157 JSuperFrame2D_t buffer;
160 for (
int event_count = 0; event_count < numberOfEvents; ++event_count) {
162 STATUS(
"event: " << setw(10) << event_count <<
'\r');
DEBUG(endl);
164 const int frame_index = 1;
170 for (JDAQTimeslice::const_iterator super_frame = timeslice.begin(); super_frame != timeslice.end(); ++super_frame) {
172 if (moduleRouter.
hasModule(super_frame->getModuleID())) {
178 buffer(*super_frame, module);
182 buildL1(buffer, back_inserter(dataL1));
185 if (!dataL1.empty()) {
189 JFrameL1_t d1(dataL1);
192 for (
int i = 1; i <= hn.GetNbinsX(); ++i) {
198 buildL2(buffer, d1, back_inserter(d2));
200 hn.Fill((
double) buildL2.
numberOfHits, (
double) d2.size() / (
double) dataL1.size());
207 if (!dataL1.empty()) {
211 JFrameL1_t d1(dataL1);
214 for (
int i = 1; i <= hc.GetNbinsX(); ++i) {
216 buildL2.
ctMin = hc.GetBinCenter(i);
220 buildL2(buffer, d1, back_inserter(d2));
222 hc.Fill(buildL2.
ctMin, (
double) d2.size() / (
double) dataL1.size());
229 if (!dataL1.empty()) {
233 JFrameL1_t d1(dataL1);
236 for (
int i = ht.GetNbinsX(); i != 0; --i) {
242 buildL2(buffer, d1, back_inserter(d2));
244 ht.Fill(buildL2.
TMaxLocal_ns, (
double) d2.size() / (
double) dataL1.size());
Data structure for detector geometry and calibration.
Basic data structure for L0 hit.
Basic data structure for L1 hit.
General purpose messaging.
#define DEBUG(A)
Message macros.
Direct access to module in detector data structure.
Utility class to parse command line options.
#define make_field(A,...)
macro to convert parameter to JParserTemplateElement object
int main(int argc, char **argv)
Basic data structure for time and time over threshold information of hit.
void reset(JK40Simulator *k40Simulator)
Reset K40 simulator.
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.
const JModuleAddress & getAddress(const JObjectID &id) const
Get address of module.
Data structure for a composite optical module.
Auxiliary class for map of PMT parameters.
Utility class to parse command line options.
2-dimensional frame with time calibrated data from one optical module.
Data structure for UTC time.
T & getInstance(const T &object)
Get static instance from temporary object.
This name space includes all other name spaces (except KM3NETDAQ, KM3NET and ANTARES).
KM3NeT DAQ data structures and auxiliaries.
double getTimeOfFrame(const int frame_index)
Get start time of frame in ns since start of run for a given frame index.
JReader & operator>>(JReader &in, JDAQChronometer &chronometer)
Read DAQ chronometer from input.
Empty structure for specification of parser element that is initialised (i.e. does not require input)...
Auxiliary data structure for L1 build parameters.
Data structure for L2 parameters.
double ctMin
minimal cosine space angle between PMT axes
double TMaxLocal_ns
maximal time difference [ns]
int numberOfHits
minimal number of hits
Timeslice with random data.