Default implementation of the simulation of K40 background.  
 More...
#include <JK40DefaultSimulator.hh>
 | 
| static double  | p1 () | 
|   | Parameters for probability of coincidence as a function of the cosine of space angle between PMT axes.  More...
  | 
|   | 
| static double  | p2 () | 
|   | 
| static double  | p3 () | 
|   | 
| static double  | p4 () | 
|   | 
 | 
| JBuffer2D_t  | probability2D | 
|   | This correlation matrix is a two-dimensional array in which element [i][j] corresponds to the probability of a genuine coincidence due to K40 decays, where i and j refer to the indices of the PMTs in the optical module.  More...
  | 
|   | 
| JBuffer1D_t  | probability1D | 
|   | This probability vector is a one-dimensional array in which element [i] corresponds to the probability of a genuine coincidence due to K40 decays, where i refers to the index of the PMT in the optical module.  More...
  | 
|   | 
| JBuffer1D_t  | probabilityND | 
|   | This probability vector is a one-dimensional array in which element [i] corresponds to the probability of an additional hit, where i refers to the index of the PMT in the optical module.  More...
  | 
|   | 
| JBuffer1D_t  | rateL1_Hz | 
|   | Multiples rate as a function of the multiplicity.  More...
  | 
|   | 
Default implementation of the simulation of K40 background. 
This class implements the JK40Simulator interface. 
Definition at line 25 of file JK40DefaultSimulator.hh.
 
◆ JK40DefaultSimulator() [1/2]
  
  
      
        
          | JDETECTOR::JK40DefaultSimulator::JK40DefaultSimulator  | 
          ( | 
           | ) | 
           | 
         
       
   | 
  
inline   | 
  
 
 
◆ JK40DefaultSimulator() [2/2]
  
  
      
        
          | JDETECTOR::JK40DefaultSimulator::JK40DefaultSimulator  | 
          ( | 
          const JK40Rates &  | 
          rates | ) | 
           | 
         
       
   | 
  
inline   | 
  
 
 
◆ getInstance()
Get reference to unique instance of this class object. 
This method returns an object with default values. The singles and multiples rates are taken from KM3NeT internal note "Detector simulations for KM3NeT".
- Returns
 - reference to this class object 
 
Definition at line 57 of file JK40DefaultSimulator.hh.
 
 
◆ getSinglesRate() [1/2]
  
  
      
        
          | virtual double JDETECTOR::JK40DefaultSimulator::getSinglesRate  | 
          ( | 
          const JPMTIdentifier &  | 
          pmt | ) | 
           const | 
         
       
   | 
  
inlinevirtual   | 
  
 
 
◆ getMultiplesRate() [1/2]
  
  
      
        
          | virtual double JDETECTOR::JK40DefaultSimulator::getMultiplesRate  | 
          ( | 
          const JModuleIdentifier &  | 
          module,  | 
         
        
           | 
           | 
          const int  | 
          M  | 
         
        
           | 
          ) | 
           |  const | 
         
       
   | 
  
inlinevirtual   | 
  
 
 
◆ getProbability()
  
  
      
        
          | virtual double JDETECTOR::JK40DefaultSimulator::getProbability  | 
          ( | 
          const double  | 
          ct | ) | 
           const | 
         
       
   | 
  
inlinevirtual   | 
  
 
 
◆ p1()
  
  
      
        
          | static double JDETECTOR::JK40DefaultSimulator::p1  | 
          ( | 
           | ) | 
           | 
         
       
   | 
  
inlinestaticprotected   | 
  
 
Parameters for probability of coincidence as a function of the cosine of space angle between PMT axes. 
Values are provided by V.Kulikovski. 
Definition at line 155 of file JK40DefaultSimulator.hh.
 
 
◆ p2()
  
  
      
        
          | static double JDETECTOR::JK40DefaultSimulator::p2  | 
          ( | 
           | ) | 
           | 
         
       
   | 
  
inlinestaticprotected   | 
  
 
 
◆ p3()
  
  
      
        
          | static double JDETECTOR::JK40DefaultSimulator::p3  | 
          ( | 
           | ) | 
           | 
         
       
   | 
  
inlinestaticprotected   | 
  
 
 
◆ p4()
  
  
      
        
          | static double JDETECTOR::JK40DefaultSimulator::p4  | 
          ( | 
           | ) | 
           | 
         
       
   | 
  
inlinestaticprotected   | 
  
 
 
◆ generateHits()
  
  
      
        
          | virtual void JDETECTOR::JK40DefaultSimulatorInterface::generateHits  | 
          ( | 
          const JModule &  | 
          module,  | 
         
        
           | 
           | 
          const JTimeRange &  | 
          period,  | 
         
        
           | 
           | 
          JModuleData &  | 
          output  | 
         
        
           | 
          ) | 
           |  const | 
         
       
   | 
  
inlinevirtualinherited   | 
  
 
Generate hits. 
- Parameters
 - 
  
    | module | module  | 
    | period | time window [ns]  | 
    | output | background data  | 
  
   
Implements JDETECTOR::JK40Simulator.
Definition at line 112 of file JK40DefaultSimulatorInterface.hh.
  119       const int N = module.size();
 
  130       for (
int pmt = 0; pmt != N; ++pmt) {
 
  134         if (rateL0_Hz > 0.0) {
 
  136           const double t_ns = 1.0e9 / rateL0_Hz;          
 
  138           for (
double t1 = period.getLowerLimit() + gRandom->Exp(t_ns); t1 < period.getUpperLimit(); t1 += gRandom->Exp(t_ns)) {
 
  147       double totalRateL1_Hz = 0.0;
 
  149       for (
int i = 0; i != N; ++i) {
 
  153       if (totalRateL1_Hz > 0.0) {
 
  155         const double t_ns = 1.0e9 / totalRateL1_Hz;       
 
  157         double t1 = period.getLowerLimit() + gRandom->Exp(t_ns);
 
  159         if (t1 < period.getUpperLimit()) {
 
  164           for (
int i = 0; i != N; ++i) {
 
  168             for (
int j = i + 1; 
j != N; ++
j) {
 
  181           for (
int i = 0; i != N; ++i) {
 
  185             for (
int j = 0; 
j != N; ++
j) {
 
  191           for ( ; t1 < period.getUpperLimit(); t1 += gRandom->Exp(t_ns)) {
 
  213                 for (
unsigned int pmtN = pmt2; M != 0; --M) {
 
  215                   for (
int i = 0; i != N; ++i) {
 
  227             catch (
const JNumericalPrecision&) {}
 
 
 
 
◆ getRandomIndex()
  
  
      
        
          | static unsigned int JDETECTOR::JK40DefaultSimulatorInterface::getRandomIndex  | 
          ( | 
          const JBuffer1D_t &  | 
          buffer,  | 
         
        
           | 
           | 
          const double  | 
          random  | 
         
        
           | 
          ) | 
           |  | 
         
       
   | 
  
inlinestaticinherited   | 
  
 
Get index based on random value. 
It is assumed that the values of the input buffer monotonously decrease or increase. This method throws an exception when the summed values in the input buffer is zero.
- Parameters
 - 
  
    | buffer | input values  | 
    | random | random value <0,1]  | 
  
   
- Returns
 - index 
 
Definition at line 244 of file JK40DefaultSimulatorInterface.hh.
  248       for (JBuffer1D_t::const_iterator i = buffer.begin(); i != buffer.end(); ++i) {
 
  256         unsigned int index = 0;
 
  258         for (JBuffer1D_t::const_iterator i = buffer.begin(); i != buffer.end() && (x -= *i) > 0.0; ++i, ++index) {}
 
  260         if (index == buffer.size()) {
 
  268         THROW(JNumericalPrecision, 
"getRandomIndex(): zero or negative probability.");
 
 
 
 
◆ getSigma()
  
  
      
        
          | static double JDETECTOR::JK40DefaultSimulatorInterface::getSigma  | 
          ( | 
           | ) | 
           | 
         
       
   | 
  
inlinestaticinherited   | 
  
 
 
◆ getSinglesRate() [2/2]
  
  
      
        
          | double JDETECTOR::JK40Rates::getSinglesRate  | 
          ( | 
           | ) | 
           const | 
         
       
   | 
  
inlineinherited   | 
  
 
Get singles rate. 
- Returns
 - rate [Hz] 
 
Definition at line 97 of file JK40Rates.hh.
 
 
◆ getMultiplesRate() [2/2]
Get multiples rate. 
- Parameters
 - 
  
  
 
- Returns
 - rate [Hz] 
 
Definition at line 109 of file JK40Rates.hh.
 
 
◆ getLowerL1Multiplicity()
Get lower multiplicty. 
- Returns
 - lower multiplicity 
 
Definition at line 123 of file JK40Rates.hh.
 
 
◆ getUpperL1Multiplicity()
Get upper multiplicty. 
- Returns
 - upper multiplicity 
 
Definition at line 134 of file JK40Rates.hh.
 
 
◆ correct()
  
  
      
        
          | void JDETECTOR::JK40Rates::correct  | 
          ( | 
          const double  | 
          QE | ) | 
           | 
         
       
   | 
  
inlineinherited   | 
  
 
Correct rates for global efficiency,. 
- Parameters
 - 
  
  
 
Definition at line 145 of file JK40Rates.hh.
  175         for (JRateL1_t::iterator i = 
rateL1.begin(); i != 
rateL1.end(); ++i) {
 
 
 
 
◆ operator>>
Read K40 simulator from input. 
- Parameters
 - 
  
    | in | input stream  | 
    | object | K40 simulator  | 
  
   
- Returns
 - input stream 
 
Definition at line 109 of file JK40DefaultSimulator.hh.
  111       const double rateL0 = 
object.rateL0;
 
  113       if (in >> 
object.
rateL0) {
 
  115         object.rateL1.clear();
 
  117         for (
double x; in >> x; ) {
 
  118           object.rateL1.push_back(x);
 
 
 
 
◆ operator<<
Write K40 simulator to output. 
- Parameters
 - 
  
    | out | output stream  | 
    | object | K40 simulator  | 
  
   
- Returns
 - output stream 
 
Definition at line 137 of file JK40DefaultSimulator.hh.
  139       out << 
object.rateL0;
 
  141       for (JRateL1_t::const_iterator i = 
object.
rateL1.begin(); i != 
object.rateL1.end(); ++i) {
 
 
 
 
◆ probability2D
  
  
      
        
          | JBuffer2D_t JDETECTOR::JK40DefaultSimulatorInterface::probability2D | 
         
       
   | 
  
mutableprivateinherited   | 
  
 
This correlation matrix is a two-dimensional array in which element [i][j] corresponds to the probability of a genuine coincidence due to K40 decays, where i and j refer to the indices of the PMTs in the optical module. 
Definition at line 289 of file JK40DefaultSimulatorInterface.hh.
 
 
◆ probability1D
  
  
      
        
          | JBuffer1D_t JDETECTOR::JK40DefaultSimulatorInterface::probability1D | 
         
       
   | 
  
mutableprivateinherited   | 
  
 
This probability vector is a one-dimensional array in which element [i] corresponds to the probability of a genuine coincidence due to K40 decays, where i refers to the index of the PMT in the optical module. 
Definition at line 296 of file JK40DefaultSimulatorInterface.hh.
 
 
◆ probabilityND
  
  
      
        
          | JBuffer1D_t JDETECTOR::JK40DefaultSimulatorInterface::probabilityND | 
         
       
   | 
  
mutableprivateinherited   | 
  
 
This probability vector is a one-dimensional array in which element [i] corresponds to the probability of an additional hit, where i refers to the index of the PMT in the optical module. 
Definition at line 303 of file JK40DefaultSimulatorInterface.hh.
 
 
◆ rateL1_Hz
  
  
      
        
          | JBuffer1D_t JDETECTOR::JK40DefaultSimulatorInterface::rateL1_Hz | 
         
       
   | 
  
mutableprivateinherited   | 
  
 
 
◆ LOWER_L1_MULTIPLICITY
◆ rateL0
◆ rateL1
The documentation for this class was generated from the following file:
 
Default implementation of the simulation of K40 background.
 
JRateL1_t rateL1
multiples rates [Hz]
 
static double getSigma()
Get intrinsic time smearing of K40 coincidences.
 
JBuffer2D_t probability2D
This correlation matrix is a two-dimensional array in which element [i][j] corresponds to the probabi...
 
virtual double getMultiplesRate(const JModuleIdentifier &module, const int M) const =0
Get multiples rate as a function of optical module.
 
void resize(size_t size)
Resize.
 
double getSinglesRate() const
Get singles rate.
 
static unsigned int getRandomIndex(const JBuffer1D_t &buffer, const double random)
Get index based on random value.
 
int getID() const
Get identifier.
 
JBuffer1D_t rateL1_Hz
Multiples rate as a function of the multiplicity.
 
#define THROW(JException_t, A)
Marco for throwing exception with std::ostream compatible message.
 
virtual double getSinglesRate(const JPMTIdentifier &pmt) const =0
Get singles rate as a function of PMT.
 
static double p1()
Parameters for probability of coincidence as a function of the cosine of space angle between PMT axes...
 
size_t multiplicity_type
Type definition of multiplicity.
 
static JK40Rates & getInstance()
Get reference to unique instance of this class object.
 
JRateL0_t rateL0
singles rate [Hz]
 
JBuffer1D_t probabilityND
This probability vector is a one-dimensional array in which element [i] corresponds to the probabilit...
 
JBuffer1D_t probability1D
This probability vector is a one-dimensional array in which element [i] corresponds to the probabilit...
 
multiplicity_type getUpperL1Multiplicity() const
Get upper multiplicty.
 
double getMultiplesRate(const multiplicity_type M) const
Get multiples rate.
 
multiplicity_type getLowerL1Multiplicity() const
Get lower multiplicty.
 
Data structure for PMT analogue signal.
 
JK40Rates()
Default constructor.
 
virtual double getProbability(const double ct) const =0
Get probability of coincidence.
 
double getDot(const JFirst_t &first, const JSecond_t &second)
Get dot product of objects.
 
static const multiplicity_type LOWER_L1_MULTIPLICITY
Lower L1 multiplicity.