1#ifndef __JTIMESLICE__JRANDOMTIMESLICE__ 
    2#define __JTIMESLICE__JRANDOMTIMESLICE__ 
   63        for (JDetector::const_iterator module = simbad->begin(); module != simbad->end(); ++module) {
 
   65          if (!module->empty()) {
 
   67            buffer.
reset(module->size());
 
   73            simbad(*module, buffer, *(this->rbegin()));
 
 
  102      if (N <   100) { N =   100; }                              
 
  103      if (N > 50000) { N = 50000; }                              
 
  110      for (
iterator frame = this->begin(); frame != this->end(); ++frame) {
 
  112        if (!frame->empty()) {
 
  114          for (
size_t i = 0; i != N; ++i) {
 
  121                               numeric_limits<JTDC_t>::max());   
 
  125            T_max[hit->getPMT()] = hit->getT();
 
  127            const int i = hit->getT() / Ts;
 
  129            buffer[i].push_back(*hit);
 
  135            if (frame->testHighRateVeto(pmt)) {
 
  136              keep.insert(T_max[pmt] / Ts);
 
  146          for (
size_t in = 0; in != N; ++in) {
 
  148            const size_t  out   = index [in];
 
  151            const JTDC_t  T_in  = in  * Ts;
 
  152            const JTDC_t  T_out = out * Ts;
 
  154            for (buffer_type::iterator i = zbuf.begin(); i != zbuf.end(); ++i, ++hit) {
 
  155              *hit = 
JDAQHit(i->getPMT(), (i->getT() - T_out) + T_in, i->getToT());
 
 
  185        for (
size_t i = 0; i != this->size(); ++i) {
 
  191        for (
const size_t i2 : keep) {
 
 
  210        for (
int i = i2 - 1; i > i1; --i) {
 
  212          const int l = i1 + gRandom->Integer(i - i1);
 
  214          std::swap((*
this)[i], (*
this)[l]);
 
 
 
 
KM3NeT DAQ constants, bit handling, etc.
 
Auxiliaries for creation of time slice data.
 
virtual void generateHits(const JModule &module, const JTimeRange &period, JModuleData &output) const override
Generate hits.
 
bool hasPMTSimulator() const
Check availability of PMT simulator.
 
bool hasK40Simulator() const
Check availability of K40 simulator.
 
bool hasCLBSimulator() const
Check availability of CLB simulator.
 
Data structure for PMT data corresponding to a detector module.
 
void reset(size_t size)
Reset buffers.
 
void setDAQChronometer(const JDAQChronometer &chronometer)
Set DAQ chronometer.
 
int getFrameIndex() const
Get frame index.
 
unsigned int JTDC_t
leading edge [ns]
 
Data frame of one optical module.
 
This name space includes all other name spaces (except KM3NETDAQ, KM3NET and ANTARES).
 
std::vector< JHitW0 > buffer_type
hits
 
KM3NeT DAQ data structures and auxiliaries.
 
double getFrameTime()
Get frame time duration.
 
double getTimeSinceRTS(const int frame_index)
Get time in ns since last RTS for a given frame index.
 
static const int NUMBER_OF_PMTS
Total number of PMTs in module.
 
Auxiliary class for TDC constraints.
 
Auxiliary data structure for randomisation of indices.
 
random_indices_t(const size_t N)
Constructor.
 
void random_shuffle(const int i1, const int i2)
Randomly shuffle values between given indices.
 
void random_shuffle(const std::set< size_t > &keep)
Randomly shuffle values between fixed indices.
 
Timeslice with random data.
 
JRandomTimeslice(const JDAQChronometer &chronometer, const JDetectorSimulator &simbad)
Constructor.
 
JRandomTimeslice()
Default constructor.
 
void recycle(const double T_ns)
Recycle time slice by randomly shuffling time intervals of data.
 
Base class class for generation of time slice data.