1#ifndef __JDETECTOR__JK40DEFAULTSIMULATORINTERFACE__ 
    2#define __JDETECTOR__JK40DEFAULTSIMULATORINTERFACE__ 
   65      const pair_type& operator()(
const double random)
 const 
   67        double P = this->rbegin()->
P;
 
   76        int imax = this->size() - 1;
 
   78        for (
int i = (imax + imin) / 2; imax - imin != 1; i = (imax + imin) / 2) {
 
  144      const size_t N = 
module.size();
 
  145      const size_t M = (N * (N - 1)) / 2;
 
  153      for (
size_t pmt = 0; pmt != N; ++pmt) {
 
  157        if (rateL0_Hz > 0.0) {
 
  159          const double t_ns = 1.0e9 / rateL0_Hz;          
 
  170      double totalRateL1_Hz = 0.0;
 
  172      for (
size_t i = 0; i != N; ++i) {
 
  176      if (totalRateL1_Hz > 0.0) {
 
  178        const double t_ns = 1.0e9 / totalRateL1_Hz;       
 
  191          for (
size_t pmt1 = 0; pmt1 != N; ++pmt1) {
 
  192            for (
size_t pmt2 = 0; pmt2 != pmt1; ++pmt2) {
 
  194              const double ct = getDot(module[pmt1].getDirection(), module[pmt2].getDirection());
 
  204          for ( ; t1 < period.
getUpperLimit(); t1 += gRandom->Exp(t_ns)) {
 
  219              for (
double R = totalRateL1_Hz * gRandom->Rndm(); M != N && (R -= 
rateL1_Hz[M]) > 0.0; ++M) {}
 
  225                for ( ; M != 0; --M) {
 
  231                  for (
size_t i = 0; i != N; ++i) {
 
  233                    if (buffer.count(i) == 0) {
 
  237                        const double ct = getDot(module[i].getDirection(), module[*pmt].getDirection());
 
  242                      P += probability1D[i];
 
  246                      probability1D[i] = 0.0;
 
  254                    for (P *= gRandom->Rndm(); pmt != N && (P -= probability1D[pmt]) > 0.0; ++pmt) {}
 
 
  306      static double sigma = 0.5;
 
 
 
Compiler version dependent expressions, macros, etc.
 
#define THROW(JException_t, A)
Marco for throwing exception with std::ostream compatible message.
 
Default K40 simulator interface.
 
virtual void generateHits(const JModule &module, const JTimeRange &period, JModuleData &output) const
Generate hits.
 
static double & get_sigma()
Get intrinsic time smearing of K40 coincidences.
 
static double getSigma()
Get intrinsic time smearing of K40 coincidences.
 
std::vector< double > rateL1_Hz
Multiples rate as a function of the multiplicity.
 
static void setSigma(const double sigma)
Set intrinsic time smearing of K40 coincidences.
 
virtual double getSinglesRate(const JPMTIdentifier &pmt) const =0
Get singles rate as a function of PMT.
 
virtual double getMultiplesRate(const JModuleIdentifier &module, const int M) const =0
Get multiples rate as a function of optical module.
 
JK40DefaultSimulatorInterface()
Default constructor.
 
virtual double getProbability(const double ct) const =0
Get probability of coincidence.
 
Interface for simulation of K40 background.
 
Data structure for PMT data corresponding to a detector module.
 
Data structure for a composite optical module.
 
Exception for numerical precision error.
 
Auxiliary class for object identification.
 
int getID() const
Get identifier.
 
file Auxiliary data structures and methods for detector calibration.
 
This name space includes all other name spaces (except KM3NETDAQ, KM3NET and ANTARES).
 
double P
probability of coincidence
 
Data structure for PMT analogue signal.