Jpp
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  bool hasDetector(JType<JPPM_DU_t> type, const int id) { return id == 1; }
53  bool hasDetector(JType<JKM3NeT_t> type, const int id) { return id >= 2 && id <= 100000; }
54  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  */
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  */
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  */
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  */
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
JException.hh
JLANG::JIndexOutOfRange
Exception for accessing an index in a collection that is outside of its range.
Definition: JException.hh:90
JLANG::JType
Auxiliary class for a type holder.
Definition: JType.hh:19
JDETECTOR::JDetectorAddressMap_t< JTypeList< JHead_t, JTail_t > >::has
static bool has(const int id)
Has detector address map.
Definition: JDetectorAddressMapToolkit.hh:443
JDETECTOR::JMonteCarlo_t
Monte Carlo .detx file.
Definition: JDetectorAddressMapToolkit.hh:35
JDETECTOR::JPMTPhysicalAddress
Data structure for PMT physical address.
Definition: JPMTPhysicalAddress.hh:26
JDETECTOR::JDetectorAddressMap_t
Auxiliary class to extract detector address map from detector identifier.
Definition: JDetectorAddressMapToolkit.hh:416
JDETECTOR::getPMTLogicalIndex
int getPMTLogicalIndex(int id, int tdc)
Get PMT logical index for given module identifier and TDC channel.
Definition: JDetectorAddressMapToolkit.hh:406
JDetectorAddressMap.hh
JLANG::JNullType
Auxiliary class for no type definition.
Definition: JNullType.hh:19
JDETECTOR::JDetectorAddressMap_t< JTypeList< JHead_t, JNullType > >::get
static JDetectorAddressMap & get(const int id)
Get detector address map.
Definition: JDetectorAddressMapToolkit.hh:459
JLANG::JTYPELIST
Auxiliary class for recursive type list generation.
Definition: JTypeList.hh:377
JDETECTOR::getPMTAddressTranslator
const JPMTAddressTranslator & getPMTAddressTranslator(int id, int tdc)
Get PMT address translator for given module identifier and TDC channel.
Definition: JDetectorAddressMapToolkit.hh:392
JDETECTOR::JTemplateDetectorAddressMap< JKM3NeT_t >::getDefaultModuleAddressMap
virtual const JModuleAddressMap & getDefaultModuleAddressMap() const
Get default module address map.
Definition: JDetectorAddressMapToolkit.hh:234
JDETECTOR::JTemplateDetectorAddressMap
Template lookup table for PMT addresses in detector.
Definition: JDetectorAddressMapToolkit.hh:64
JModuleAddressMap.hh
JDETECTOR::JModuleAddressMap
Lookup table for PMT addresses in optical module.
Definition: JModuleAddressMap.hh:82
JDETECTOR::JTemplateDetectorAddressMap< JMonteCarlo_t >::getDefaultModuleAddressMap
virtual const JModuleAddressMap & getDefaultModuleAddressMap() const
Get default module address map.
Definition: JDetectorAddressMapToolkit.hh:306
JPP
This name space includes all other name spaces (except KM3NETDAQ, KM3NET and ANTARES).
Definition: JAAnetToolkit.hh:37
JDETECTOR::JObsolete_t
obsolete detector
Definition: JDetectorAddressMapToolkit.hh:36
JDETECTOR::JKM3NeT_t
KM3NeT.
Definition: JDetectorAddressMapToolkit.hh:34
JDETECTOR::JTemplateDetectorAddressMap< JObsolete_t >::getDefaultModuleAddressMap
virtual const JModuleAddressMap & getDefaultModuleAddressMap() const
Get default module address map.
Definition: JDetectorAddressMapToolkit.hh:88
JDETECTOR::JTemplateDetectorAddressMap< JMonteCarlo_t >::JTemplateDetectorAddressMap
JTemplateDetectorAddressMap()
Default constructor.
Definition: JDetectorAddressMapToolkit.hh:296
JDETECTOR::JPPM_DU_t
Type definitions for different detectors.PPM_DU.
Definition: JDetectorAddressMapToolkit.hh:33
THROW
#define THROW(JException_t, A)
Marco for throwing exception with std::ostream compatible message.
Definition: JException.hh:669
JDETECTOR::hasDetector
bool hasDetector(JType< JMonteCarlo_t > type, const int id)
Definition: JDetectorAddressMapToolkit.hh:54
JLANG::JTypeList
Type list.
Definition: JTypeList.hh:22
JDETECTOR::JModuleAddressMap::configure
void configure()
Configure internal router.
Definition: JModuleAddressMap.hh:140
JDETECTOR::JDetectorTypes_t
JTYPELIST< JPPM_DU_t, JKM3NeT_t, JMonteCarlo_t >::typelist JDetectorTypes_t
Type list of detector types.
Definition: JDetectorAddressMapToolkit.hh:42
JDETECTOR::getModuleAddressMap
JModuleAddressMap & getModuleAddressMap(int id)
Get module address map.
Definition: JDetectorAddressMapToolkit.hh:378
JDETECTOR::JTemplateDetectorAddressMap< JPPM_DU_t >::getDefaultModuleAddressMap
virtual const JModuleAddressMap & getDefaultModuleAddressMap() const
Get default module address map.
Definition: JDetectorAddressMapToolkit.hh:162
JDETECTOR::JTemplateDetectorAddressMap< JKM3NeT_t >::JTemplateDetectorAddressMap
JTemplateDetectorAddressMap()
Default constructor.
Definition: JDetectorAddressMapToolkit.hh:224
JTypeList.hh
JDETECTOR::JTemplateDetectorAddressMap< JObsolete_t >::JTemplateDetectorAddressMap
JTemplateDetectorAddressMap()
Default constructor.
Definition: JDetectorAddressMapToolkit.hh:78
JNullType.hh
JDETECTOR::JDetectorAddressMap
Lookup table for PMT addresses in detector.
Definition: JDetectorAddressMap.hh:25
JDETECTOR::JDetectorAddressMap_t< JTypeList< JHead_t, JTail_t > >::get
static JDetectorAddressMap & get(const int id)
Get detector address map.
Definition: JDetectorAddressMapToolkit.hh:428
JDETECTOR::hasDetectorAddressMap
bool hasDetectorAddressMap(const int id)
Check if detector address map is available.
Definition: JDetectorAddressMapToolkit.hh:499
JAANET::get
T get(const JHead &header)
Get object from header.
Definition: JHeadToolkit.hh:295
JDETECTOR::JDetectorAddressMap_t< JTypeList< JHead_t, JNullType > >::has
static bool has(const int id)
Has detector address map.
Definition: JDetectorAddressMapToolkit.hh:474
JDETECTOR::JTemplateDetectorAddressMap< JPPM_DU_t >::JTemplateDetectorAddressMap
JTemplateDetectorAddressMap()
Default constructor.
Definition: JDetectorAddressMapToolkit.hh:150
JType.hh
JDETECTOR::JPMTAddressTranslator
Data structure to translate PMT physical to readout address.
Definition: JModuleAddressMap.hh:28
JDETECTOR::JPMTReadoutAddress
Data structure for PMT readout address.
Definition: JPMTReadoutAddress.hh:27
JDETECTOR::getDetectorAddressMap
JDetectorAddressMap & getDetectorAddressMap(const int id)
Get detector address map.
Definition: JDetectorAddressMapToolkit.hh:487
JDETECTOR
Auxiliary classes and methods for detector calibration.
Definition: JAnchor.hh:12