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 () |
|
Default implementation of the simulation of K40 background.
This class implements the JK40Simulator interface.
Definition at line 25 of file JK40DefaultSimulator.hh.
JDETECTOR::JK40DefaultSimulator::JK40DefaultSimulator |
( |
| ) |
|
|
inline |
JDETECTOR::JK40DefaultSimulator::JK40DefaultSimulator |
( |
const JK40Rates & |
rates | ) |
|
|
inline |
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.
Default implementation of the simulation of K40 background.
static JK40Rates & getInstance()
Get reference to unique instance of this class object.
virtual double JDETECTOR::JK40DefaultSimulator::getSinglesRate |
( |
const JPMTIdentifier & |
pmt | ) |
const |
|
inlinevirtual |
virtual double JDETECTOR::JK40DefaultSimulator::getMultiplesRate |
( |
const JModuleIdentifier & |
module, |
|
|
const int |
M |
|
) |
| const |
|
inlinevirtual |
virtual double JDETECTOR::JK40DefaultSimulator::getProbability |
( |
const double |
ct | ) |
const |
|
inlinevirtual |
Get probability of coincidence.
- Parameters
-
ct | cosine space angle between PMT axes |
- Returns
- probability
Implements JDETECTOR::JK40DefaultSimulatorInterface.
Definition at line 96 of file JK40DefaultSimulator.hh.
98 return exp(ct * (
p1() + ct * (
p2() + ct * (
p3() + ct*
p4()))));
static double p1()
Parameters for probability of coincidence as a function of the cosine of space angle between PMT axes...
then set_variable FORMULA *[0] exp(-0.5 *(x-[1])*(x-[1])/([2]*[2]))" set_variable OUTPUT_FILE histogram.root JHistogram1D -o $WORKDIR/$OUTPUT_FILE -F "$FORMULA" -
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.
static double JDETECTOR::JK40DefaultSimulator::p2 |
( |
| ) |
|
|
inlinestaticprotected |
static double JDETECTOR::JK40DefaultSimulator::p3 |
( |
| ) |
|
|
inlinestaticprotected |
static double JDETECTOR::JK40DefaultSimulator::p4 |
( |
| ) |
|
|
inlinestaticprotected |
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();
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&) {}
static double getSigma()
Get intrinsic time smearing of K40 coincidences.
Data structure for PMT analogue signal.
JBuffer1D_t probabilityND
This probability vector is a one-dimensional array in which element [i] corresponds to the probabilit...
esac $JPP_DIR examples JDetector JTransitTime o $OUTPUT_FILE n N $NPE T $TTS_NS d $DEBUG for HISTOGRAM in tts tt2 pmt
static unsigned int getRandomIndex(const JBuffer1D_t &buffer, const double random)
Get index based on random value.
void resize(size_t size)
Resize.
virtual double getSinglesRate(const JPMTIdentifier &pmt) const =0
Get singles rate as a function of PMT.
int getID() const
Get identifier.
JBuffer2D_t probability2D
This correlation matrix is a two-dimensional array in which element [i][j] corresponds to the probabi...
JBuffer1D_t rateL1_Hz
Multiples rate as a function of the multiplicity.
double getDot(const JFirst_t &first, const JSecond_t &second)
Get dot product of objects.
virtual double getMultiplesRate(const JModuleIdentifier &module, const int M) const =0
Get multiples rate as a function of optical module.
JBuffer1D_t probability1D
This probability vector is a one-dimensional array in which element [i] corresponds to the probabilit...
then usage $script[input file[working directory[option]]] nWhere option can be N
virtual double getProbability(const double ct) const =0
Get probability of coincidence.
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.");
#define THROW(JException_t, A)
Marco for throwing exception with std::ostream compatible message.
static double JDETECTOR::JK40DefaultSimulatorInterface::getSigma |
( |
| ) |
|
|
inlinestaticinherited |
double JDETECTOR::JK40Rates::getSinglesRate |
( |
| ) |
const |
|
inlineinherited |
Get singles rate.
- Returns
- rate [Hz]
Definition at line 97 of file JK40Rates.hh.
JRateL0_t rateL0
singles rate [Hz]
Get multiples rate.
- Parameters
-
- Returns
- rate [Hz]
Definition at line 109 of file JK40Rates.hh.
size_t multiplicity_type
Type definition of multiplicity.
JRateL1_t rateL1
multiples rates [Hz]
static const multiplicity_type LOWER_L1_MULTIPLICITY
Lower L1 multiplicity.
Get lower multiplicty.
- Returns
- lower multiplicity
Definition at line 123 of file JK40Rates.hh.
static const multiplicity_type LOWER_L1_MULTIPLICITY
Lower L1 multiplicity.
Get upper multiplicty.
- Returns
- upper multiplicity
Definition at line 134 of file JK40Rates.hh.
JRateL1_t rateL1
multiples rates [Hz]
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) {
multiplicity_type getLowerL1Multiplicity() const
Get lower multiplicty.
size_t multiplicity_type
Type definition of multiplicity.
JRateL1_t rateL1
multiples rates [Hz]
then usage $script[distance] fi case set_variable R
double getMultiplesRate(const multiplicity_type M) const
Get multiples rate.
JRateL0_t rateL0
singles rate [Hz]
static const multiplicity_type LOWER_L1_MULTIPLICITY
Lower L1 multiplicity.
multiplicity_type getUpperL1Multiplicity() const
Get upper multiplicty.
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);
esac print_variable DETECTOR INPUT_FILE OUTPUT_FILE CDF for TYPE in
JRateL0_t rateL0
singles rate [Hz]
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) {
JRateL1_t rateL1
multiples rates [Hz]
The documentation for this class was generated from the following file: