Jpp
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
JDetectorAddressMapToolkit.hh
Go to the documentation of this file.
1 #ifndef __JDETECTOR__JDETECTORADDRESSMAPTOOLKIT__
2 #define __JDETECTOR__JDETECTORADDRESSMAPTOOLKIT__
3 
4 #include "JLang/JTypeList.hh"
5 #include "JLang/JNullType.hh"
6 #include "JLang/JType.hh"
7 #include "JLang/JException.hh"
8 
11 
12 
13 /**
14  * \file
15  * Detector specific mapping between logical positions and readout channels of PMTs in optical modules.
16  * \author mdejong
17  */
18 namespace JDETECTOR {}
19 namespace JPP { using namespace JDETECTOR; }
20 
21 namespace JDETECTOR {
22 
23  using JLANG::JTypeList;
24  using JLANG::JTYPELIST;
25  using JLANG::JNullType;
26  using JLANG::JType;
28 
29 
30  /**
31  * Type definitions for different detectors.
32  */
33  struct JPPM_DU_t {}; //!< PPM_DU
34  struct JKM3NeT_t {}; //!< %KM3NeT
35  struct JMonteCarlo_t {}; //!< Monte Carlo .detx file
36  struct JObsolete_t {}; //!< obsolete detector
37 
38 
39  /**
40  * Type list of detector types.
41  */
43 
44 
45  /**
46  * Check validity of detector identifier.
47  *
48  * \param type detector type
49  * \param id detector identifier
50  * \return true if valid match; else false
51  */
52  inline bool hasDetector(JType<JPPM_DU_t> type, const int id) { return id == 1; }
53  inline bool hasDetector(JType<JKM3NeT_t> type, const int id) { return id >= 2 && id <= 100000; }
54  inline bool hasDetector(JType<JMonteCarlo_t> type, const int id) { return id >= -100000 && id <= -2; }
55 
56 
57  /**
58  * Template lookup table for PMT addresses in detector.\n
59  * The template argument refers to a specific detector.\n
60  * This class should be specialised for each detector.\n
61  * In the constructor of the specialised class, the various PMT swaps should be defined.
62  */
63  template<class JDetector_t>
65 
66 
67  /**
68  * Template specialisation of JTemplateDetectorAddressMap for obsolete detector.
69  */
70  template<>
72  public JDetectorAddressMap
73  {
74  public:
75  /**
76  * Default constructor.
77  */
80  {}
81 
82 
83  /**
84  * Get default module address map.
85  *
86  * \return module address map
87  */
88  virtual const JModuleAddressMap& getDefaultModuleAddressMap() const override
89  {
90  static JModuleAddressMap memo;
91 
92  if (memo.empty()) {
93 
94  memo.push_back(JPMTAddressTranslator(JPMTReadoutAddress( 0), JPMTPhysicalAddress('A', 1)));
95 
96  memo.push_back(JPMTAddressTranslator(JPMTReadoutAddress( 1), JPMTPhysicalAddress('B', 1)));
97  memo.push_back(JPMTAddressTranslator(JPMTReadoutAddress( 2), JPMTPhysicalAddress('B', 2)));
98  memo.push_back(JPMTAddressTranslator(JPMTReadoutAddress( 3), JPMTPhysicalAddress('B', 3)));
99  memo.push_back(JPMTAddressTranslator(JPMTReadoutAddress( 4), JPMTPhysicalAddress('B', 4)));
100  memo.push_back(JPMTAddressTranslator(JPMTReadoutAddress( 5), JPMTPhysicalAddress('B', 5)));
101  memo.push_back(JPMTAddressTranslator(JPMTReadoutAddress( 6), JPMTPhysicalAddress('B', 6)));
102 
103  memo.push_back(JPMTAddressTranslator(JPMTReadoutAddress( 7), JPMTPhysicalAddress('C', 1)));
104  memo.push_back(JPMTAddressTranslator(JPMTReadoutAddress( 8), JPMTPhysicalAddress('C', 2)));
105  memo.push_back(JPMTAddressTranslator(JPMTReadoutAddress( 9), JPMTPhysicalAddress('C', 3)));
106  memo.push_back(JPMTAddressTranslator(JPMTReadoutAddress(10), JPMTPhysicalAddress('C', 4)));
107  memo.push_back(JPMTAddressTranslator(JPMTReadoutAddress(11), JPMTPhysicalAddress('C', 5)));
108  memo.push_back(JPMTAddressTranslator(JPMTReadoutAddress(12), JPMTPhysicalAddress('C', 6)));
109 
110  memo.push_back(JPMTAddressTranslator(JPMTReadoutAddress(13), JPMTPhysicalAddress('D', 1)));
111  memo.push_back(JPMTAddressTranslator(JPMTReadoutAddress(14), JPMTPhysicalAddress('D', 2)));
112  memo.push_back(JPMTAddressTranslator(JPMTReadoutAddress(15), JPMTPhysicalAddress('D', 3)));
113  memo.push_back(JPMTAddressTranslator(JPMTReadoutAddress(16), JPMTPhysicalAddress('D', 4)));
114  memo.push_back(JPMTAddressTranslator(JPMTReadoutAddress(17), JPMTPhysicalAddress('D', 5)));
115  memo.push_back(JPMTAddressTranslator(JPMTReadoutAddress(18), JPMTPhysicalAddress('D', 6)));
116 
117  memo.push_back(JPMTAddressTranslator(JPMTReadoutAddress(19), JPMTPhysicalAddress('E', 1)));
118  memo.push_back(JPMTAddressTranslator(JPMTReadoutAddress(20), JPMTPhysicalAddress('E', 2)));
119  memo.push_back(JPMTAddressTranslator(JPMTReadoutAddress(21), JPMTPhysicalAddress('E', 3)));
120  memo.push_back(JPMTAddressTranslator(JPMTReadoutAddress(22), JPMTPhysicalAddress('E', 4)));
121  memo.push_back(JPMTAddressTranslator(JPMTReadoutAddress(23), JPMTPhysicalAddress('E', 5)));
122  memo.push_back(JPMTAddressTranslator(JPMTReadoutAddress(24), JPMTPhysicalAddress('E', 6)));
123 
124  memo.push_back(JPMTAddressTranslator(JPMTReadoutAddress(25), JPMTPhysicalAddress('F', 1)));
125  memo.push_back(JPMTAddressTranslator(JPMTReadoutAddress(26), JPMTPhysicalAddress('F', 2)));
126  memo.push_back(JPMTAddressTranslator(JPMTReadoutAddress(27), JPMTPhysicalAddress('F', 3)));
127  memo.push_back(JPMTAddressTranslator(JPMTReadoutAddress(28), JPMTPhysicalAddress('F', 4)));
128  memo.push_back(JPMTAddressTranslator(JPMTReadoutAddress(29), JPMTPhysicalAddress('F', 5)));
129  memo.push_back(JPMTAddressTranslator(JPMTReadoutAddress(30), JPMTPhysicalAddress('F', 6)));
130 
131  memo.configure();
132  }
133 
134  return memo;
135  }
136  };
137 
138 
139  /**
140  * Template specialisation of JTemplateDetectorAddressMap for PPM_DU detector.
141  */
142  template<>
144  public JDetectorAddressMap
145  {
146  public:
147  /**
148  * Default constructor.
149  */
152  {
153  get(103).swap(24,30);
154  }
155 
156 
157  /**
158  * Get default module address map.
159  *
160  * \return module address map
161  */
162  virtual const JModuleAddressMap& getDefaultModuleAddressMap() const override
163  {
164  static JModuleAddressMap memo;
165 
166  if (memo.empty()) {
167 
168  memo.push_back(JPMTAddressTranslator(JPMTReadoutAddress( 0), JPMTPhysicalAddress('A', 1)));
169 
170  memo.push_back(JPMTAddressTranslator(JPMTReadoutAddress( 6), JPMTPhysicalAddress('B', 1)));
171  memo.push_back(JPMTAddressTranslator(JPMTReadoutAddress( 5), JPMTPhysicalAddress('B', 2)));
172  memo.push_back(JPMTAddressTranslator(JPMTReadoutAddress( 4), JPMTPhysicalAddress('B', 3)));
173  memo.push_back(JPMTAddressTranslator(JPMTReadoutAddress( 3), JPMTPhysicalAddress('B', 4)));
174  memo.push_back(JPMTAddressTranslator(JPMTReadoutAddress( 2), JPMTPhysicalAddress('B', 5)));
175  memo.push_back(JPMTAddressTranslator(JPMTReadoutAddress( 1), JPMTPhysicalAddress('B', 6)));
176 
177  memo.push_back(JPMTAddressTranslator(JPMTReadoutAddress(12), JPMTPhysicalAddress('C', 1)));
178  memo.push_back(JPMTAddressTranslator(JPMTReadoutAddress(11), JPMTPhysicalAddress('C', 2)));
179  memo.push_back(JPMTAddressTranslator(JPMTReadoutAddress(10), JPMTPhysicalAddress('C', 3)));
180  memo.push_back(JPMTAddressTranslator(JPMTReadoutAddress( 9), JPMTPhysicalAddress('C', 4)));
181  memo.push_back(JPMTAddressTranslator(JPMTReadoutAddress( 8), JPMTPhysicalAddress('C', 5)));
182  memo.push_back(JPMTAddressTranslator(JPMTReadoutAddress( 7), JPMTPhysicalAddress('C', 6)));
183 
184  memo.push_back(JPMTAddressTranslator(JPMTReadoutAddress(18), JPMTPhysicalAddress('D', 1)));
185  memo.push_back(JPMTAddressTranslator(JPMTReadoutAddress(17), JPMTPhysicalAddress('D', 2)));
186  memo.push_back(JPMTAddressTranslator(JPMTReadoutAddress(16), JPMTPhysicalAddress('D', 3)));
187  memo.push_back(JPMTAddressTranslator(JPMTReadoutAddress(15), JPMTPhysicalAddress('D', 4)));
188  memo.push_back(JPMTAddressTranslator(JPMTReadoutAddress(14), JPMTPhysicalAddress('D', 5)));
189  memo.push_back(JPMTAddressTranslator(JPMTReadoutAddress(13), JPMTPhysicalAddress('D', 6)));
190 
191  memo.push_back(JPMTAddressTranslator(JPMTReadoutAddress(19), JPMTPhysicalAddress('E', 1)));
192  memo.push_back(JPMTAddressTranslator(JPMTReadoutAddress(24), JPMTPhysicalAddress('E', 2)));
193  memo.push_back(JPMTAddressTranslator(JPMTReadoutAddress(23), JPMTPhysicalAddress('E', 3)));
194  memo.push_back(JPMTAddressTranslator(JPMTReadoutAddress(22), JPMTPhysicalAddress('E', 4)));
195  memo.push_back(JPMTAddressTranslator(JPMTReadoutAddress(21), JPMTPhysicalAddress('E', 5)));
196  memo.push_back(JPMTAddressTranslator(JPMTReadoutAddress(20), JPMTPhysicalAddress('E', 6)));
197 
198  memo.push_back(JPMTAddressTranslator(JPMTReadoutAddress(25), JPMTPhysicalAddress('F', 1)));
199  memo.push_back(JPMTAddressTranslator(JPMTReadoutAddress(30), JPMTPhysicalAddress('F', 2)));
200  memo.push_back(JPMTAddressTranslator(JPMTReadoutAddress(29), JPMTPhysicalAddress('F', 3)));
201  memo.push_back(JPMTAddressTranslator(JPMTReadoutAddress(28), JPMTPhysicalAddress('F', 4)));
202  memo.push_back(JPMTAddressTranslator(JPMTReadoutAddress(27), JPMTPhysicalAddress('F', 5)));
203  memo.push_back(JPMTAddressTranslator(JPMTReadoutAddress(26), JPMTPhysicalAddress('F', 6)));
204 
205  memo.configure();
206  }
207 
208  return memo;
209  }
210  };
211 
212 
213  /**
214  * Template specialisation of JTemplateDetectorAddressMap for %KM3NeT detector.
215  */
216  template<>
218  public JDetectorAddressMap
219  {
220  public:
221  /**
222  * Default constructor.
223  */
226  {}
227 
228 
229  /**
230  * Get default module address map.
231  *
232  * \return module address map
233  */
234  virtual const JModuleAddressMap& getDefaultModuleAddressMap() const override
235  {
236  static JModuleAddressMap memo;
237 
238  if (memo.empty()) {
239 
240  memo.push_back(JPMTAddressTranslator(JPMTReadoutAddress(22), JPMTPhysicalAddress('A', 1)));
241 
242  memo.push_back(JPMTAddressTranslator(JPMTReadoutAddress(14), JPMTPhysicalAddress('B', 1)));
243  memo.push_back(JPMTAddressTranslator(JPMTReadoutAddress(19), JPMTPhysicalAddress('B', 2)));
244  memo.push_back(JPMTAddressTranslator(JPMTReadoutAddress(25), JPMTPhysicalAddress('B', 3)));
245  memo.push_back(JPMTAddressTranslator(JPMTReadoutAddress(24), JPMTPhysicalAddress('B', 4)));
246  memo.push_back(JPMTAddressTranslator(JPMTReadoutAddress(26), JPMTPhysicalAddress('B', 5)));
247  memo.push_back(JPMTAddressTranslator(JPMTReadoutAddress(18), JPMTPhysicalAddress('B', 6)));
248 
249  memo.push_back(JPMTAddressTranslator(JPMTReadoutAddress(13), JPMTPhysicalAddress('C', 1)));
250  memo.push_back(JPMTAddressTranslator(JPMTReadoutAddress(21), JPMTPhysicalAddress('C', 2)));
251  memo.push_back(JPMTAddressTranslator(JPMTReadoutAddress(29), JPMTPhysicalAddress('C', 3)));
252  memo.push_back(JPMTAddressTranslator(JPMTReadoutAddress(28), JPMTPhysicalAddress('C', 4)));
253  memo.push_back(JPMTAddressTranslator(JPMTReadoutAddress(20), JPMTPhysicalAddress('C', 5)));
254  memo.push_back(JPMTAddressTranslator(JPMTReadoutAddress(17), JPMTPhysicalAddress('C', 6)));
255 
256  memo.push_back(JPMTAddressTranslator(JPMTReadoutAddress(12), JPMTPhysicalAddress('D', 1)));
257  memo.push_back(JPMTAddressTranslator(JPMTReadoutAddress(15), JPMTPhysicalAddress('D', 2)));
258  memo.push_back(JPMTAddressTranslator(JPMTReadoutAddress(23), JPMTPhysicalAddress('D', 3)));
259  memo.push_back(JPMTAddressTranslator(JPMTReadoutAddress(30), JPMTPhysicalAddress('D', 4)));
260  memo.push_back(JPMTAddressTranslator(JPMTReadoutAddress(27), JPMTPhysicalAddress('D', 5)));
261  memo.push_back(JPMTAddressTranslator(JPMTReadoutAddress(16), JPMTPhysicalAddress('D', 6)));
262 
263  memo.push_back(JPMTAddressTranslator(JPMTReadoutAddress(10), JPMTPhysicalAddress('E', 1)));
264  memo.push_back(JPMTAddressTranslator(JPMTReadoutAddress( 6), JPMTPhysicalAddress('E', 2)));
265  memo.push_back(JPMTAddressTranslator(JPMTReadoutAddress( 3), JPMTPhysicalAddress('E', 3)));
266  memo.push_back(JPMTAddressTranslator(JPMTReadoutAddress( 2), JPMTPhysicalAddress('E', 4)));
267  memo.push_back(JPMTAddressTranslator(JPMTReadoutAddress( 1), JPMTPhysicalAddress('E', 5)));
268  memo.push_back(JPMTAddressTranslator(JPMTReadoutAddress(11), JPMTPhysicalAddress('E', 6)));
269 
270  memo.push_back(JPMTAddressTranslator(JPMTReadoutAddress( 9), JPMTPhysicalAddress('F', 1)));
271  memo.push_back(JPMTAddressTranslator(JPMTReadoutAddress( 8), JPMTPhysicalAddress('F', 2)));
272  memo.push_back(JPMTAddressTranslator(JPMTReadoutAddress( 4), JPMTPhysicalAddress('F', 3)));
273  memo.push_back(JPMTAddressTranslator(JPMTReadoutAddress( 0), JPMTPhysicalAddress('F', 4)));
274  memo.push_back(JPMTAddressTranslator(JPMTReadoutAddress( 5), JPMTPhysicalAddress('F', 5)));
275  memo.push_back(JPMTAddressTranslator(JPMTReadoutAddress( 7), JPMTPhysicalAddress('F', 6)));
276 
277  memo.configure();
278  }
279 
280  return memo;
281  }
282  };
283 
284 
285  /**
286  * Template specialisation of JTemplateDetectorAddressMap for Monte Carlo detector.
287  */
288  template<>
290  public JDetectorAddressMap
291  {
292  public:
293  /**
294  * Default constructor.
295  */
298  {}
299 
300 
301  /**
302  * Get default module address map.
303  *
304  * \return module address map
305  */
306  virtual const JModuleAddressMap& getDefaultModuleAddressMap() const override
307  {
308  static JModuleAddressMap memo;
309 
310  if (memo.empty()) {
311 
312  memo.push_back(JPMTAddressTranslator(JPMTReadoutAddress(22), JPMTPhysicalAddress('A', 1)));
313 
314  memo.push_back(JPMTAddressTranslator(JPMTReadoutAddress(14), JPMTPhysicalAddress('B', 1)));
315  memo.push_back(JPMTAddressTranslator(JPMTReadoutAddress(19), JPMTPhysicalAddress('B', 2)));
316  memo.push_back(JPMTAddressTranslator(JPMTReadoutAddress(25), JPMTPhysicalAddress('B', 3)));
317  memo.push_back(JPMTAddressTranslator(JPMTReadoutAddress(24), JPMTPhysicalAddress('B', 4)));
318  memo.push_back(JPMTAddressTranslator(JPMTReadoutAddress(26), JPMTPhysicalAddress('B', 5)));
319  memo.push_back(JPMTAddressTranslator(JPMTReadoutAddress(18), JPMTPhysicalAddress('B', 6)));
320 
321  memo.push_back(JPMTAddressTranslator(JPMTReadoutAddress(13), JPMTPhysicalAddress('C', 1)));
322  memo.push_back(JPMTAddressTranslator(JPMTReadoutAddress(21), JPMTPhysicalAddress('C', 2)));
323  memo.push_back(JPMTAddressTranslator(JPMTReadoutAddress(29), JPMTPhysicalAddress('C', 3)));
324  memo.push_back(JPMTAddressTranslator(JPMTReadoutAddress(28), JPMTPhysicalAddress('C', 4)));
325  memo.push_back(JPMTAddressTranslator(JPMTReadoutAddress(20), JPMTPhysicalAddress('C', 5)));
326  memo.push_back(JPMTAddressTranslator(JPMTReadoutAddress(17), JPMTPhysicalAddress('C', 6)));
327 
328  memo.push_back(JPMTAddressTranslator(JPMTReadoutAddress(12), JPMTPhysicalAddress('D', 1)));
329  memo.push_back(JPMTAddressTranslator(JPMTReadoutAddress(15), JPMTPhysicalAddress('D', 2)));
330  memo.push_back(JPMTAddressTranslator(JPMTReadoutAddress(23), JPMTPhysicalAddress('D', 3)));
331  memo.push_back(JPMTAddressTranslator(JPMTReadoutAddress(30), JPMTPhysicalAddress('D', 4)));
332  memo.push_back(JPMTAddressTranslator(JPMTReadoutAddress(27), JPMTPhysicalAddress('D', 5)));
333  memo.push_back(JPMTAddressTranslator(JPMTReadoutAddress(16), JPMTPhysicalAddress('D', 6)));
334 
335  memo.push_back(JPMTAddressTranslator(JPMTReadoutAddress(10), JPMTPhysicalAddress('E', 1)));
336  memo.push_back(JPMTAddressTranslator(JPMTReadoutAddress( 6), JPMTPhysicalAddress('E', 2)));
337  memo.push_back(JPMTAddressTranslator(JPMTReadoutAddress( 3), JPMTPhysicalAddress('E', 3)));
338  memo.push_back(JPMTAddressTranslator(JPMTReadoutAddress( 2), JPMTPhysicalAddress('E', 4)));
339  memo.push_back(JPMTAddressTranslator(JPMTReadoutAddress( 1), JPMTPhysicalAddress('E', 5)));
340  memo.push_back(JPMTAddressTranslator(JPMTReadoutAddress(11), JPMTPhysicalAddress('E', 6)));
341 
342  memo.push_back(JPMTAddressTranslator(JPMTReadoutAddress( 9), JPMTPhysicalAddress('F', 1)));
343  memo.push_back(JPMTAddressTranslator(JPMTReadoutAddress( 8), JPMTPhysicalAddress('F', 2)));
344  memo.push_back(JPMTAddressTranslator(JPMTReadoutAddress( 4), JPMTPhysicalAddress('F', 3)));
345  memo.push_back(JPMTAddressTranslator(JPMTReadoutAddress( 0), JPMTPhysicalAddress('F', 4)));
346  memo.push_back(JPMTAddressTranslator(JPMTReadoutAddress( 5), JPMTPhysicalAddress('F', 5)));
347  memo.push_back(JPMTAddressTranslator(JPMTReadoutAddress( 7), JPMTPhysicalAddress('F', 6)));
348 
349  memo.configure();
350  }
351 
352  return memo;
353  }
354  };
355 
356 
357  /**
358  * Get detector address map.
359  *
360  * \return detector address map
361  */
362  template<class JDetector_t>
364  {
366 
367  return demo;
368  }
369 
370 
371  /**
372  * Get module address map.
373  *
374  * \param id module identifier
375  * \return module address map
376  */
377  template<class JDetector_t>
379  {
380  return getDetectorAddressMap<JDetector_t>().get(id);
381  }
382 
383 
384  /**
385  * Get PMT address translator for given module identifier and TDC channel.
386  *
387  * \param id module identifier
388  * \param tdc TDC
389  * \return PMT address translator
390  */
391  template<class JDetector_t>
392  inline const JPMTAddressTranslator& getPMTAddressTranslator(int id, int tdc)
393  {
394  return getModuleAddressMap<JDetector_t>(id).getAddressTranslator(tdc);
395  }
396 
397 
398  /**
399  * Get PMT logical index for given module identifier and TDC channel.
400  *
401  * \param id module identifier
402  * \param tdc TDC
403  * \return PMT logical index
404  */
405  template<class JDetector_t>
406  inline int getPMTLogicalIndex(int id, int tdc)
407  {
408  return getModuleAddressMap<JDetector_t>(id).getIndex(tdc);
409  }
410 
411 
412  /**
413  * Auxiliary class to extract detector address map from detector identifier.
414  */
415  template<class T>
417 
418 
419  template<class JHead_t, class JTail_t>
420  struct JDetectorAddressMap_t< JTypeList<JHead_t, JTail_t> >
421  {
422  /**
423  * Get detector address map.
424  *
425  * \param id detector identifier
426  * \return detector address map
427  */
428  static JDetectorAddressMap& get(const int id)
429  {
430  if (hasDetector(JType<JHead_t>(), id))
431  return getDetectorAddressMap<JHead_t>();
432  else
434  }
435 
436 
437  /**
438  * Has detector address map.
439  *
440  * \param id detector identifier
441  * \return true if detector address map available; else false
442  */
443  static bool has(const int id)
444  {
446  }
447  };
448 
449 
450  template<class JHead_t>
452  {
453  /**
454  * Get detector address map.
455  *
456  * \param id detector identifier
457  * \return detector address map
458  */
459  static JDetectorAddressMap& get(const int id)
460  {
461  if (hasDetector(JType<JHead_t>(), id))
462  return getDetectorAddressMap<JHead_t>();
463  else
464  THROW(JIndexOutOfRange, "getDetectorAddressMap<..>(" << id << ")" );
465  }
466 
467 
468  /**
469  * Has detector address map.
470  *
471  * \param id detector identifier
472  * \return true if detector address map available; else false
473  */
474  static bool has(const int id)
475  {
476  return hasDetector(JType<JHead_t>(), id);
477  }
478  };
479 
480 
481  /**
482  * Get detector address map.
483  *
484  * \param id detector identifier
485  * \return detector address map
486  */
488  {
490  }
491 
492 
493  /**
494  * Check if detector address map is available.
495  *
496  * \param id detector identifier
497  * \return true if detector address map available; else false
498  */
499  inline bool hasDetectorAddressMap(const int id)
500  {
502  }
503 }
504 
505 #endif
virtual const JModuleAddressMap & getDefaultModuleAddressMap() const override
Get default module address map.
Exceptions.
virtual const JModuleAddressMap & getDefaultModuleAddressMap() const override
Get default module address map.
#define THROW(JException_t, A)
Marco for throwing exception with std::ostream compatible message.
Definition: JException.hh:670
virtual const JModuleAddressMap & getDefaultModuleAddressMap() const override
Get default module address map.
bool hasDetectorAddressMap(const int id)
Check if detector address map is available.
T get(const JHead &header)
Get object from header.
Lookup table for PMT addresses in detector.
Auxiliary class for a type holder.
Definition: JType.hh:19
Type list.
Definition: JTypeList.hh:22
Lookup table for PMT addresses in optical module.
bool hasDetector(JType< JPPM_DU_t > type, const int id)
Check validity of detector identifier.
Template lookup table for PMT addresses in detector.
Auxiliary class for recursive type list generation.
Definition: JTypeList.hh:351
JTYPELIST< JPPM_DU_t, JKM3NeT_t, JMonteCarlo_t >::typelist JDetectorTypes_t
Type list of detector types.
const JPMTAddressTranslator & getPMTAddressTranslator(int id, int tdc)
Get PMT address translator for given module identifier and TDC channel.
Type definitions for different detectors.PPM_DU.
Auxiliary class for no type definition.
Definition: JNullType.hh:19
JModuleAddressMap & getModuleAddressMap(int id)
Get module address map.
Data structure to translate PMT physical to readout address.
int getPMTLogicalIndex(int id, int tdc)
Get PMT logical index for given module identifier and TDC channel.
int getIndex()
Get index for user I/O manipulation.
Definition: JManip.hh:25
JDetectorAddressMap & getDetectorAddressMap()
Get detector address map.
Auxiliary class to extract detector address map from detector identifier.
Data structure for PMT readout address.
Data structure for PMT physical address.
Exception for accessing an index in a collection that is outside of its range.
Definition: JException.hh:90
void configure()
Configure internal router.
virtual const JModuleAddressMap & getDefaultModuleAddressMap() const override
Get default module address map.