Jpp  18.4.0
the software that should make you happy
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
JCalibrateK40.hh
Go to the documentation of this file.
1 #ifndef __JCALIBRATE_JCALIBRATEK40__
2 #define __JCALIBRATE_JCALIBRATEK40__
3 
4 #include <cmath>
5 #include <algorithm>
6 
8 #include "JDetector/JModule.hh"
9 #include "JMath/JMathToolkit.hh"
10 
11 /**
12  * \author mdejong
13  */
14 
15 namespace JCALIBRATE {}
16 namespace JPP { using namespace JCALIBRATE; }
17 
18 namespace JCALIBRATE {
19 
21  using JDETECTOR::JModule;
22 
23 
24  /**
25  * Histogram naming.
26  */
27  static const char* const weights_hist_t = "weights_hist"; //!< Name of histogram with normalisation constants.
28 
29  static const char* const W1_overall_t = "W1_overall"; //!< Named bin for duration of the run
30  static const char* const WS_t = "WS"; //!< Named bin for time residual bin width
31  static const char* const WB_t = "WB"; //!< Named bin for value of TMax_ns in JCalibrateK40
32 
33  static const char* const _2S = ".2S"; //!< Name extension for 2D counts
34  static const char* const _1B = ".1B"; //!< Name extension for 1D background
35  static const char* const _1L = ".1L"; //!< Name extension for 1D live time
36  static const char* const _2R = ".2R"; //!< Name extension for 2D rate measured
37  static const char* const _2F = ".2F"; //!< Name extension for 2F rate fitted
38  static const char* const _1D = ".1D"; //!< Name extension for 1D time offset
39  static const char* const _1F = ".1F"; //!< Name extension for 1D time offset fit
40 
42 
43 
44  /**
45  * Auxiliary class to sort pairs of PMT addresses within optical module.
46  */
48  /**
49  * Constructor.
50  *
51  * \param module detector module
52  * \param epsilon precision
53  */
55  const double epsilon = 1.0e-5) :
56  module (module),
58  {}
59 
60 
61  /**
62  * Comparison of two pairs of PMT addresses.
63  *
64  * \param first first pair of PMT addresses
65  * \param second second pair of PMT addresses
66  * \return true if first pair has larger space angle; else false
67  */
68  inline bool operator()(const pair_type& first, const pair_type& second) const
69  {
70  using namespace std;
71 
72  if (fabs(this->getDot(first) - this->getDot(second)) > epsilon)
73  return this->getDot(first) < this->getDot(second);
74  else if (max(first.first, first.second) == max(second.first, second.second))
75  return min(first.first, first.second) < min(second.first, second.second);
76  else
77  return max(first.first, first.second) < max(second.first, second.second);
78  }
79 
80 
81  /**
82  * Get cosine of space angle between PMT axes.
83  *
84  * \param pair pair of PMT addresses
85  * \return cosine
86  */
87  inline double getDot(const pair_type& pair) const
88  {
89  return JMATH::getDot(module.getPMT(pair.first) .getDirection(),
90  module.getPMT(pair.second).getDirection());
91  }
92 
93  protected:
94  const JModule& module;
95  const double epsilon;
96  };
97 
98 
99  /**
100  * PMT combinatorics for optical module.
101  */
103  public JCombinatorics
104  {
105  /**
106  * Default constructor.
107  */
109  {}
110 
111 
112  /**
113  * Constructor.
114  *
115  * \param module detector module
116  */
118  {
119  this->configure(module.size());
120 
121  this->sort(JPairwiseComparator(module));
122  }
123  };
124 }
125 
126 #endif
JCombinatorics::pair_type pair_type
Auxiliary class to convert pair of indices to unique index and back.
Auxiliary methods for geometrical methods.
Data structure for a composite optical module.
Definition: JModule.hh:67
static const char *const WB_t
Named bin for value of TMax_ns in JCalibrateK40.
const JDirection3D & getDirection() const
Get direction.
Data structure for a pair of indices.
then echo The file $DIR KM3NeT_00000001_00000000 root already please rename or remove it first
double getDot(const pair_type &pair) const
Get cosine of space angle between PMT axes.
static const char *const _1F
Name extension for 1D time offset fit.
JCombinatorics_t(const JModule &module)
Constructor.
static const char *const WS_t
Named bin for time residual bin width.
static const char *const _2F
Name extension for 2F rate fitted.
Auxiliary class to sort pairs of PMT addresses within optical module.
static const char *const _1B
Name extension for 1D background.
double getDot(const JFirst_t &first, const JSecond_t &second)
Get dot product of objects.
static const char *const _2R
Name extension for 2D rate measured.
const JPMT & getPMT(const int index) const
Get PMT.
Definition: JModule.hh:172
JCombinatorics_t()
Default constructor.
static const char *const weights_hist_t
Histogram naming.
static const char *const _1L
Name extension for 1D live time.
void configure(const T &value, const JAbstractCollection< JAbscissa_t > &bounds, JBool< false > option)
Configuration of value.
JPairwiseComparator(const JModule &module, const double epsilon=1.0e-5)
Constructor.
static const char *const W1_overall_t
Named bin for duration of the run.
bool operator()(const pair_type &first, const pair_type &second) const
Comparison of two pairs of PMT addresses.
PMT combinatorics for optical module.
static const char *const _1D
Name extension for 1D time offset.
static const char *const _2S
Name extension for 2D counts.
Data structure for optical module.