Jpp  16.0.0
the software that should make you happy
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
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  L2.reset();
184  SN.reset();
185  NB.reset();
186 
187  writeTimeslices = 0;
188  writeSummary = 1;
189  writeL0 = 0;
190  writeL1 = 0;
191  writeL2 = 0;
192  writeSN = 0;
193  }
194 
195 
196  /**
197  * Test equality for high-rate vetos.
198  *
199  * \param R1_Hz high-rate veto
200  * \param R2_Hz high-rate veto
201  * \return true if equal; else false
202  */
203  static bool equals(const double R1_Hz, const double R2_Hz)
204  {
205  using namespace std;
206 
207  if (R1_Hz <= numeric_limits<int>::max() &&
208  R2_Hz <= numeric_limits<int>::max()) {
209 
210  return (int) R1_Hz == (int) R2_Hz;
211 
212  } else {
213 
214  return (R1_Hz > numeric_limits<int>::max() &&
215  R2_Hz > numeric_limits<int>::max());
216  }
217  }
218 
219 
220  /**
221  * Equality
222  *
223  * \param parameters trigger parameters
224  * \return true if equals; else false
225  */
227  {
228  return (trigger3DShower.equals(parameters) &&
229  triggerMXShower.equals(parameters) &&
230  trigger3DMuon .equals(parameters) &&
231  triggerNB .equals(parameters) &&
232 
234  parameters.highRateVeto_Hz) &&
235 
236  L2Min == parameters.L2Min &&
237  ctMin == parameters.ctMin &&
238  TMaxLocal_ns == parameters.TMaxLocal_ns &&
239  TMaxEvent_ns == parameters.TMaxEvent_ns &&
240  numberOfBins == parameters.numberOfBins &&
241  combineL1 == parameters.combineL1 &&
242 
243  L2.equals(parameters.L2) &&
244  SN.equals(parameters.SN) &&
245  NB.equals(parameters.NB) &&
246 
247  writeSummary .equals(parameters.writeSummary) &&
248  writeL0 .equals(parameters.writeL0) &&
249  writeL1 .equals(parameters.writeL1) &&
250  writeL2 .equals(parameters.writeL2) &&
251  writeSN .equals(parameters.writeSN));
252  }
253 
254 
255  /**
256  * Equal operator for trigger parameters.
257  *
258  * \param first event
259  * \param second event
260  * \result true if first event equal to second; else false
261  */
262  friend inline bool operator==(const JTriggerParameters& first,
263  const JTriggerParameters& second)
264  {
265  return first.equals(second);
266  }
267 
268 
269  /**
270  * Type conversion operators.
271  */
272  inline operator JTrigger3DShower_t::JParameters() const { return trigger3DShower; } //!< JTrigger3DShower parameters
273  inline operator JTriggerMXShower_t::JParameters() const { return triggerMXShower; } //!< JTriggerMXShower parameters
274  inline operator JTrigger3DMuon_t::JParameters() const { return trigger3DMuon; } //!< JTrigger3DMuon parameters
275  inline operator JTriggerNB_t::JParameters() const { return triggerNB; } //!< JTrigger3DMuon parameters
276 
277 
278  /**
279  * Action method at file open.
280  *
281  * \param version version
282  */
283  static void actionAtFileOpen(int version)
284  {
286  }
287 
288 
289  /**
290  * Action method at file read.
291  */
293  {
294  if (ROOT_IO_VERSION <= 7) {
295 
297  }
298 
299  if (ROOT_IO_VERSION <= 6) {
300 
303 
304  } else if (ROOT_IO_VERSION <= 8) {
305 
308  }
309 
310  if (ROOT_IO_VERSION <= 11) {
311 
313  }
314  }
315 
316 
318 
319 
320  // Trigger specific parameters
321 
326 
327 
328  // Global parameters
329 
330  double highRateVeto_Hz; ///< high-rate veto [Hz]
331  int L2Min; ///< minimal number of L0 hits for L2
332  double ctMin; ///< this parameter has been deprecated
333  double TMaxLocal_ns; ///< maximal time difference between L0 hits for L1
334  double TMaxEvent_ns; ///< maximal time before and after event for snapshot
335  int numberOfBins; ///< number of bins for lookup table of timeslice
336  bool combineL1; ///< combine multiple L1s in many-fold coincidence
337 
338  JL2Parameters L2; ///< L2 processing
339  JL2Parameters SN; ///< Supernova trigger
340  JL2Parameters NB; ///< nano-beacon trigger
341 
342  JPrescaler writeTimeslices; ///< write JDAQTimeslice with L0 data (deprecated)
343  JPrescaler writeSummary; ///< write JDAQSummaryslice
344  JPrescaler writeL0; ///< write JDAQTimeslice with L0 data
345  JPrescaler writeL1; ///< write JDAQTimeslice with L1 data
346  JPrescaler writeL2; ///< write JDAQTimeslice with L2 data
347  JPrescaler writeSN; ///< write JDAQTimeslice with SN data
348 
349  static int ROOT_IO_VERSION; //!< Streamer version of JTriggerParameters as obtained from ROOT file.
350  };
351 }
352 
353 
354 /**
355  * Read L2 parameters from input.
356  *
357  * \param in input stream
358  * \param parameters L2 parameters
359  * \return input stream
360  */
361 std::istream& operator>>(std::istream& in, JTRIGGER::JL2Parameters& parameters);
362 
363 
364 /**
365  * Write L2 parameters to output.
366  *
367  * \param out output stream
368  * \param parameters L2 parameters
369  * \return output stream
370  */
371 std::ostream& operator<<(std::ostream& out, const JTRIGGER::JL2Parameters& parameters);
372 
373 
374 /**
375  * Read trigger parameters from input.
376  *
377  * \param in input stream
378  * \param parameters trigger parameters
379  * \return input stream
380  */
381 std::istream& operator>>(std::istream& in, JTRIGGER::JTriggerParameters& parameters);
382 
383 
384 /**
385  * Write trigger parameters to output.
386  *
387  * \param out output stream
388  * \param parameters trigger parameters
389  * \return output stream
390  */
391 std::ostream& operator<<(std::ostream& out, const JTRIGGER::JTriggerParameters& parameters);
392 
393 #endif
void reset()
Reset trigger parameters.
Data structure for all trigger parameters.
friend bool operator==(const JTriggerParameters &first, const JTriggerParameters &second)
Equal operator for trigger parameters.
bool equals(const JParameters &parameters) const
Equality.
bool equals(const JL2Parameters &parameters) const
Equality.
bool enabled
enabled status of trigger
Definition: JTriggerNB_t.hh:84
double getIndexOfRefraction()
Get average index of refraction of water corresponding to group velocity.
double ctMin
minimal cosine space angle between PMT axes
JPrescaler writeTimeslices
write JDAQTimeslice with L0 data (deprecated)
Auxiliary class for prescaling.
Definition: JPrescaler.hh:23
int numberOfBins
number of bins for lookup table of timeslice
double DMax_m
maximal distance between PMTs [m]
int numberOfHits
minimal number of hits to trigger event
Definition: JRoot.hh:19
bool combineL1
combine multiple L1s in many-fold coincidence
bool equals(const JParameters &parameters) const
Equality.
*fatal Wrong number of arguments esac JCookie sh typeset Z DETECTOR typeset Z SOURCE_RUN typeset Z TARGET_RUN set_variable PARAMETERS_FILE $WORKDIR parameters
Definition: diff-Tuna.sh:38
then usage $script< detector file >< detectorfile > nIf the range of floors is the first detector file is aligned to the second before the comparison nIn this
JL2Parameters()
Default constructor.
static void actionAtFileOpen(int version)
Action method at file open.
This include file serves the purpose of hiding ROOT dependencies and circumphere namespace problems w...
int L2Min
minimal number of L0 hits for L2
ClassDef(JL2Parameters, 1)
int numberOfHits
minimal number of hits
double TMaxLocal_ns
maximal time difference between L0 hits for L1
then echo The file $DIR KM3NeT_00000001_00000000 root already please rename or remove it first
int numberOfModules
minimal number of modules to trigger event
virtual ~JTriggerParameters()
Virtual destructor.
JTriggerMXShower_t::JParameters triggerMXShower
long long int prescale
Definition: JPrescaler.hh:96
void reset()
Reset trigger parameters.
Definition: JTriggerNB_t.hh:52
JL2Parameters(const int numberOfHits, const double TMaxLocal_ns, const double ctMin)
Constructor.
double TMaxEvent_ns
maximal time before and after event for snapshot
void reset()
Reset trigger parameters.
JL2Parameters SN
Supernova trigger.
void reset()
Reset trigger parameters.
JPrescaler writeSummary
write JDAQSummaryslice
double highRateVeto_Hz
high-rate veto [Hz]
JTrigger3DShower_t::JParameters trigger3DShower
static int ROOT_IO_VERSION
Streamer version of JTriggerParameters as obtained from ROOT file.
double ctMin
this parameter has been deprecated
bool is_valid() const
Check validity.
bool equals(const JPrescaler &prescaler) const
Equality.
Definition: JPrescaler.hh:60
Physics constants.
void reset()
Reset trigger parameters.
JL2Parameters NB
nano-beacon trigger
int numberOfHits
minimal number of hits to trigger event
JPrescaler writeL2
write JDAQTimeslice with L2 data
void actionAtFileRead()
Action method at file read.
JPrescaler writeL1
write JDAQTimeslice with L1 data
bool equals(const JParameters &parameters) const
Equality.
Data structure for L2 parameters.
JPrescaler writeL0
write JDAQTimeslice with L0 data
std::istream & operator>>(std::istream &in, JAANET::JHead &header)
Read header from input.
Definition: JHead.hh:1693
int numberOfModules
minimal number of modules to trigger event
const double getInverseSpeedOfLight()
Get inverse speed of light.
double TMaxLocal_ns
maximal time difference [ns]
bool equals(const JParameters &parameters) const
Equality.
Definition: JTriggerNB_t.hh:73
bool equals(const JTriggerParameters &parameters) const
Equality.
ClassDef(JTriggerParameters, 13)
std::ostream & operator<<(std::ostream &stream, const CLBCommonHeader &header)
static bool equals(const double R1_Hz, const double R2_Hz)
Test equality for high-rate vetos.
void reset()
Reset L2 parameters.
then fatal Wrong number of arguments fi set_variable DETECTOR $argv[1] set_variable INPUT_FILE $argv[2] eval JPrintDetector a $DETECTOR O IDENTIFIER eval JPrintDetector a $DETECTOR O SUMMARY source JAcoustics sh $DETECTOR_ID CHECK_EXIT_CODE typeset A TRIPODS get_tripods $WORKDIR tripod txt TRIPODS for EMITTER in
Definition: JCanberra.sh:42
virtual ~JL2Parameters()
Virtual destructor.
version
Definition: JCalibratePMT.sh:7
JTrigger3DMuon_t::JParameters trigger3DMuon
JPrescaler writeSN
write JDAQTimeslice with SN data
void set(const double DMax_m=0.0)
Set dependent trigger parameters.