43 struct JK40DefaultSimulator_t :
49 JK40DefaultSimulator_t() :
62 friend inline std::istream&
operator>>(std::istream&
in, JK40DefaultSimulator_t&
object)
94 int 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);
127 using namespace KM3NETDAQ;
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);
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());
Utility class to parse command line options.
int main(int argc, char *argv[])
Default implementation of the simulation of K40 background.
Data structure for a composite optical module.
double ctMin
minimal cosine space angle between PMT axes
Router for direct addressing of module data in detector data structure.
Empty structure for specification of parser element that is initialised (i.e. does not require input)...
Basic data structure for time and time over threshold information of hit.
Data structure for UTC time.
Data structure for detector geometry and calibration.
int numberOfHits
minimal number of hits
double getTimeOfFrame(const int frame_index)
Get start time of frame in ns since start of run for a given frame index.
Basic data structure for L0 hit.
JK40DefaultSimulator()
Default constructor.
T & getInstance(const T &object)
Get static instance from temporary object.
#define make_field(A,...)
macro to convert parameter to JParserTemplateElement object
Auxiliary class for map of PMT parameters.
General purpose messaging.
friend std::istream & operator>>(std::istream &in, JK40DefaultSimulator &object)
Read K40 simulator from input.
void reset(JK40Simulator *k40Simulator)
Reset K40 simulator.
Direct access to module in detector data structure.
Data structure for L2 parameters.
then fatal The output file must have the wildcard in the e g root fi eval JPrintDetector a $DETECTOR O IDENTIFIER eval JPrintDetector a $DETECTOR O SUMMARY JAcoustics sh $DETECTOR_ID source JAcousticsToolkit sh CHECK_EXIT_CODE typeset A EMITTERS get_tripods $WORKDIR tripod txt EMITTERS get_transmitters $WORKDIR transmitter txt EMITTERS for EMITTER in
Utility class to parse command line options.
const JModuleAddress & getAddress(const JObjectID &id) const
Get address of module.
double TMaxLocal_ns
maximal time difference [ns]
bool hasModule(const JObjectID &id) const
Has module.
Auxiliary data structure for L1 build parameters.
2-dimensional frame with time calibrated data from one optical module.
do set_variable DETECTOR_TXT $WORKDIR detector
Timeslice with random data.
Basic data structure for L1 hit.
#define DEBUG(A)
Message macros.