Jpp  debug
the software that should make you happy
JTrigger/JTriggerParameters.hh
Go to the documentation of this file.
1 #ifndef __JTRIGGERPARAMETERS__
2 #define __JTRIGGERPARAMETERS__
3 
4 #include <istream>
5 #include <ostream>
6 #include <limits>
7 
8 #include <TROOT.h>
9 #include <TObject.h>
10 
11 #include "JROOT/JRoot.hh"
12 #include "JPhysics/JConstants.hh"
13 
14 #include "JTrigger/JPrescaler.hh"
18 #include "JTrigger/JTriggerNB_t.hh"
19 
20 
21 /**
22  * \author mdejong
23  */
24 
25 namespace JTRIGGER {}
26 namespace JPP { using namespace JTRIGGER; }
27 
28 namespace JTRIGGER {
29 
30  /**
31  * Data structure for L2 parameters.
32  */
33  struct JL2Parameters :
34  public TObject
35  {
36  /**
37  * Default constructor.
38  */
40  {
41  reset();
42  }
43 
44 
45  /**
46  * Constructor.
47  *
48  * \param numberOfHits minimal number of hits
49  * \param TMaxLocal_ns maximal time difference [ns]
50  * \param ctMin minimal cosine space angle between PMT axes
51  */
53  const double TMaxLocal_ns,
54  const double ctMin)
55  {
56  this->numberOfHits = numberOfHits;
57  this->TMaxLocal_ns = TMaxLocal_ns;
58  this->ctMin = ctMin;
59  }
60 
61 
62  /**
63  * Virtual destructor.
64  */
65  virtual ~JL2Parameters()
66  {}
67 
68 
69  /**
70  * Reset L2 parameters.
71  */
72  void reset()
73  {
74  numberOfHits = 0;
75  TMaxLocal_ns = 0.0;
76  ctMin = 1.0;
77  }
78 
79 
80  /**
81  * Equality
82  *
83  * \param parameters L2 parameters
84  * \return true if equals; else false
85  */
86  bool equals(const JL2Parameters& parameters) const
87  {
88  return (this->numberOfHits == parameters.numberOfHits &&
89  this->TMaxLocal_ns == parameters.TMaxLocal_ns &&
90  this->ctMin == parameters.ctMin);
91  }
92 
93 
94  /**
95  * Check validity.
96  *
97  * \return true if not-equal to default value; else false
98  */
99  inline bool is_valid() const
100  {
101  return !this->equals(JL2Parameters());
102  }
103 
104 
106 
107  int numberOfHits; ///< minimal number of hits
108  double TMaxLocal_ns; ///< maximal time difference [ns]
109  double ctMin; ///< minimal cosine space angle between PMT axes
110  };
111 
112 
113  /**
114  * Data structure for all trigger parameters.
115  */
117  public TObject
118  {
119  public:
120  /**
121  * Default constructor.
122  */
124  {
125  reset();
126  }
127 
128 
129  /**
130  * Virtual destructor.
131  */
133  {}
134 
135 
136  /**
137  * Set dependent trigger parameters.
138  *
139  * \param DMax_m maximal distance between PMTs [m]
140  */
141  void set(const double DMax_m = 0.0)
142  {
143  using namespace JPHYSICS;
144 
145  const double t1 = DMax_m * getIndexOfRefraction() * getInverseSpeedOfLight();
146 
147  if (t1 > TMaxEvent_ns) {
148  TMaxEvent_ns = t1;
149  }
150 
151  trigger3DMuon.DMax_m = DMax_m;
152 
153  // backward compatibility
154 
155  if (!L2.is_valid()) {
157  }
158 
159  if (triggerNB.enabled && triggerNB.write.prescale == 0) {
161  }
162  }
163 
164 
165  /**
166  * Reset trigger parameters.
167  */
168  void reset()
169  {
172  trigger3DMuon .reset();
173  triggerNB .reset();
174 
175  highRateVeto_Hz = std::numeric_limits<double>::max();
176  L2Min = 2;
177  ctMin = -1.0;
178  TMaxLocal_ns = 10.0;
179  TMaxEvent_ns = 1000.0;
180  numberOfBins = 1000;
181  combineL1 = true;
182 
183  disableHighRateVeto = false;
184 
185  L2.reset();
186  SN.reset();
187  NB.reset();
188 
189  writeTimeslices = 0;
190  writeSummary = 1;
191  writeL0 = 0;
192  writeL1 = 0;
193  writeL2 = 0;
194  writeSN = 0;
195  }
196 
197 
198  /**
199  * Test equality for high-rate vetos.
200  *
201  * \param R1_Hz high-rate veto
202  * \param R2_Hz high-rate veto
203  * \return true if equal; else false
204  */
205  static bool equals(const double R1_Hz, const double R2_Hz)
206  {
207  using namespace std;
208 
209  if (R1_Hz <= numeric_limits<int>::max() &&
210  R2_Hz <= numeric_limits<int>::max()) {
211 
212  return (int) R1_Hz == (int) R2_Hz;
213 
214  } else {
215 
216  return (R1_Hz > numeric_limits<int>::max() &&
217  R2_Hz > numeric_limits<int>::max());
218  }
219  }
220 
221 
222  /**
223  * Equality
224  *
225  * \param parameters trigger parameters
226  * \return true if equals; else false
227  */
228  bool equals(const JTriggerParameters& parameters) const
229  {
230  return (trigger3DShower.equals(parameters) &&
231  triggerMXShower.equals(parameters) &&
232  trigger3DMuon .equals(parameters) &&
233  triggerNB .equals(parameters) &&
234 
236  parameters.highRateVeto_Hz) &&
237 
238  L2Min == parameters.L2Min &&
239  ctMin == parameters.ctMin &&
240  TMaxLocal_ns == parameters.TMaxLocal_ns &&
241  TMaxEvent_ns == parameters.TMaxEvent_ns &&
242  numberOfBins == parameters.numberOfBins &&
243  combineL1 == parameters.combineL1 &&
244 
246 
247  L2.equals(parameters.L2) &&
248  SN.equals(parameters.SN) &&
249  NB.equals(parameters.NB) &&
250 
251  writeSummary .equals(parameters.writeSummary) &&
252  writeL0 .equals(parameters.writeL0) &&
253  writeL1 .equals(parameters.writeL1) &&
254  writeL2 .equals(parameters.writeL2) &&
255  writeSN .equals(parameters.writeSN));
256  }
257 
258 
259  /**
260  * Equal operator for trigger parameters.
261  *
262  * \param first event
263  * \param second event
264  * \result true if first event equal to second; else false
265  */
266  friend inline bool operator==(const JTriggerParameters& first,
267  const JTriggerParameters& second)
268  {
269  return first.equals(second);
270  }
271 
272 
273  /**
274  * Type conversion operators.
275  */
276  inline operator JTrigger3DShower_t::JParameters() const { return trigger3DShower; } //!< JTrigger3DShower parameters
277  inline operator JTriggerMXShower_t::JParameters() const { return triggerMXShower; } //!< JTriggerMXShower parameters
278  inline operator JTrigger3DMuon_t::JParameters() const { return trigger3DMuon; } //!< JTrigger3DMuon parameters
279  inline operator JTriggerNB_t::JParameters() const { return triggerNB; } //!< JTrigger3DMuon parameters
280 
281 
282  /**
283  * Action method at file open.
284  *
285  * \param version version
286  */
287  static void actionAtFileOpen(int version)
288  {
289  ROOT_IO_VERSION = version;
290  }
291 
292 
293  /**
294  * Action method at file read.
295  */
297  {
298  if (ROOT_IO_VERSION <= 7) {
299 
301  }
302 
303  if (ROOT_IO_VERSION <= 6) {
304 
307 
308  } else if (ROOT_IO_VERSION <= 8) {
309 
312  }
313 
314  if (ROOT_IO_VERSION <= 11) {
315 
317  }
318  }
319 
320 
322 
323 
324  // Trigger specific parameters
325 
330 
331 
332  // Global parameters
333 
334  double highRateVeto_Hz; ///< high-rate veto [Hz]
335  int L2Min; ///< minimal number of L0 hits for L2
336  double ctMin; ///< this parameter has been deprecated
337  double TMaxLocal_ns; ///< maximal time difference between L0 hits for L1
338  double TMaxEvent_ns; ///< maximal time before and after event for snapshot
339  int numberOfBins; ///< number of bins for lookup table of timeslice
340  bool combineL1; ///< combine multiple L1s in many-fold coincidence
341  bool disableHighRateVeto;///< disable high-rate veto
342 
343  JL2Parameters L2; ///< L2 processing
344  JL2Parameters SN; ///< Supernova trigger
345  JL2Parameters NB; ///< nano-beacon trigger
346 
347  JPrescaler writeTimeslices; ///< write JDAQTimeslice with L0 data (deprecated)
348  JPrescaler writeSummary; ///< write JDAQSummaryslice
349  JPrescaler writeL0; ///< write JDAQTimeslice with L0 data
350  JPrescaler writeL1; ///< write JDAQTimeslice with L1 data
351  JPrescaler writeL2; ///< write JDAQTimeslice with L2 data
352  JPrescaler writeSN; ///< write JDAQTimeslice with SN data
353 
354  static int ROOT_IO_VERSION; //!< Streamer version of JTriggerParameters as obtained from ROOT file.
355  };
356 }
357 
358 
359 /**
360  * Read L2 parameters from input.
361  *
362  * \param in input stream
363  * \param parameters L2 parameters
364  * \return input stream
365  */
366 std::istream& operator>>(std::istream& in, JTRIGGER::JL2Parameters& parameters);
367 
368 
369 /**
370  * Write L2 parameters to output.
371  *
372  * \param out output stream
373  * \param parameters L2 parameters
374  * \return output stream
375  */
376 std::ostream& operator<<(std::ostream& out, const JTRIGGER::JL2Parameters& parameters);
377 
378 
379 /**
380  * Read trigger parameters from input.
381  *
382  * \param in input stream
383  * \param parameters trigger parameters
384  * \return input stream
385  */
386 std::istream& operator>>(std::istream& in, JTRIGGER::JTriggerParameters& parameters);
387 
388 
389 /**
390  * Write trigger parameters to output.
391  *
392  * \param out output stream
393  * \param parameters trigger parameters
394  * \return output stream
395  */
396 std::ostream& operator<<(std::ostream& out, const JTRIGGER::JTriggerParameters& parameters);
397 
398 #endif
Physics constants.
This include file serves the purpose of hiding ROOT dependencies and circumphere namespace problems w...
std::ostream & operator<<(std::ostream &out, const JTRIGGER::JL2Parameters &parameters)
Write L2 parameters to output.
std::istream & operator>>(std::istream &in, JTRIGGER::JL2Parameters &parameters)
Read L2 parameters from input.
Auxiliary class for prescaling.
Definition: JPrescaler.hh:25
bool equals(const JPrescaler &prescaler) const
Equality.
Definition: JPrescaler.hh:60
long long int prescale
Definition: JPrescaler.hh:96
bool equals(const JParameters &parameters) const
Equality.
void reset()
Reset trigger parameters.
double DMax_m
maximal distance between PMTs [m]
int numberOfModules
minimal number of modules to trigger event
int numberOfHits
minimal number of hits to trigger event
int numberOfModules
minimal number of modules to trigger event
int numberOfHits
minimal number of hits to trigger event
void reset()
Reset trigger parameters.
bool equals(const JParameters &parameters) const
Equality.
bool equals(const JParameters &parameters) const
Equality.
void reset()
Reset trigger parameters.
bool enabled
enabled status of trigger
Definition: JTriggerNB_t.hh:82
void reset()
Reset trigger parameters.
Definition: JTriggerNB_t.hh:50
bool equals(const JParameters &parameters) const
Equality.
Definition: JTriggerNB_t.hh:71
Data structure for all trigger parameters.
static int ROOT_IO_VERSION
Streamer version of JTriggerParameters as obtained from ROOT file.
double highRateVeto_Hz
high-rate veto [Hz]
int L2Min
minimal number of L0 hits for L2
virtual ~JTriggerParameters()
Virtual destructor.
void set(const double DMax_m=0.0)
Set dependent trigger parameters.
int numberOfBins
number of bins for lookup table of timeslice
JPrescaler writeL0
write JDAQTimeslice with L0 data
double TMaxLocal_ns
maximal time difference between L0 hits for L1
friend bool operator==(const JTriggerParameters &first, const JTriggerParameters &second)
Equal operator for trigger parameters.
JPrescaler writeL1
write JDAQTimeslice with L1 data
JPrescaler writeSummary
write JDAQSummaryslice
static bool equals(const double R1_Hz, const double R2_Hz)
Test equality for high-rate vetos.
JPrescaler writeL2
write JDAQTimeslice with L2 data
ClassDef(JTriggerParameters, 14)
JTrigger3DShower_t::JParameters trigger3DShower
JTrigger3DMuon_t::JParameters trigger3DMuon
static void actionAtFileOpen(int version)
Action method at file open.
JL2Parameters SN
Supernova trigger.
JPrescaler writeSN
write JDAQTimeslice with SN data
JPrescaler writeTimeslices
write JDAQTimeslice with L0 data (deprecated)
JL2Parameters NB
nano-beacon trigger
double TMaxEvent_ns
maximal time before and after event for snapshot
bool disableHighRateVeto
disable high-rate veto
double ctMin
this parameter has been deprecated
void actionAtFileRead()
Action method at file read.
bool combineL1
combine multiple L1s in many-fold coincidence
bool equals(const JTriggerParameters &parameters) const
Equality.
JTriggerMXShower_t::JParameters triggerMXShower
void reset()
Reset trigger parameters.
Auxiliary methods for light properties of deep-sea water.
double getIndexOfRefraction()
Get average index of refraction of water corresponding to group velocity.
const double getInverseSpeedOfLight()
Get inverse speed of light.
This name space includes all other name spaces (except KM3NETDAQ, KM3NET and ANTARES).
Auxiliary classes and methods for triggering.
Definition: JSTDTypes.hh:14
Data structure for L2 parameters.
ClassDef(JL2Parameters, 1)
double ctMin
minimal cosine space angle between PMT axes
void reset()
Reset L2 parameters.
double TMaxLocal_ns
maximal time difference [ns]
virtual ~JL2Parameters()
Virtual destructor.
bool is_valid() const
Check validity.
JL2Parameters(const int numberOfHits, const double TMaxLocal_ns, const double ctMin)
Constructor.
int numberOfHits
minimal number of hits
bool equals(const JL2Parameters &parameters) const
Equality.
Definition: JRoot.hh:19