Jpp  18.5.2
the software that should make you happy
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
Public Member Functions | Protected Member Functions | Protected Attributes | List of all members
JDETECTOR::JDetectorBuilder_t< JKM3NeTFit_t > Class Template Reference

Template specialisation of JDetectorBuilder for KM3NeT detector with all known features. More...

#include <JDetectorSupportkit.hh>

Inheritance diagram for JDETECTOR::JDetectorBuilder_t< JKM3NeTFit_t >:
JDETECTOR::JDetectorBuilder_t< JKM3NeT_t > JDETECTOR::JDetectorBuilder JDETECTOR::JDetectorAddressMap

Public Member Functions

 JDetectorBuilder_t ()
 Default constructor. More...
 
virtual const JModuleAddressMapgetDefaultModuleAddressMap () const override
 Get default module address map. More...
 
const JModulegetModule (const int id=-1, const JLocation &location=JLocation()) const
 Get module. More...
 
virtual int getModuleID (const JLocation &location) const
 Get module identifier. More...
 
const JModuleAddressMapget (const int id) const
 Get module address map. More...
 
JModuleAddressMapget (const int id)
 Get module address map. More...
 
const JPMTAddressTranslatorget (const JPMTIdentifier &id) const
 Get PMT address translator. More...
 

Protected Member Functions

virtual void configure () const override
 Configure module. More...
 

Protected Attributes

JModule module
 
std::vector< JModuleAddressMapbuffer
 
JTOOLS::JRouter< int > router
 

Detailed Description

template<>
class JDETECTOR::JDetectorBuilder_t< JKM3NeTFit_t >

Template specialisation of JDetectorBuilder for KM3NeT detector with all known features.

Definition at line 452 of file JDetectorSupportkit.hh.

Constructor & Destructor Documentation

Default constructor.

Definition at line 459 of file JDetectorSupportkit.hh.

460  {
461  // NCR A02904908
462 
463  get(817802210).rotateL('B');
464 
465  // https://elog.km3net.de/Analysis/721
466  // https://elog.km3net.de/Analysis/723
467 
468  get(817351722).swapTDC(15, 17);
469  get(808972598).swapTDC(27, 28);
470  get(817315169).swapTDC(14, 18);
471  get(806481218).swapTDC( 9, 11);
472 
473  get(817295048).rotateR('B');
474 
475  // NCR A03733363
476 
477  get(817565802).swapTDC( 3, 4);
478 
479  // NCR A02922408
480 
481  get(817801283).swapTDC(22, 24);
482  get(817801283).swapTDC(24, 26);
483  }

Member Function Documentation

virtual void JDETECTOR::JDetectorBuilder_t< JKM3NeTFit_t >::configure ( ) const
inlineoverrideprotectedvirtual

Configure module.

Reimplemented from JDETECTOR::JDetectorBuilder.

Definition at line 489 of file JDetectorSupportkit.hh.

490  {
491  using namespace JPP;
492 
493  // https://elog.km3net.de/Analysis/723
494 
495  if (module.getID() == 817802210) {
496 
497  const JRotation3Z R(-60.0 * PI / 180.0);
498 
499  for (JModule::iterator pmt = module.begin(); pmt != module.end(); ++pmt) {
500  if (pmt->getDZ() < 0.0) {
501  pmt->rotate(R);
502  }
503  }
504  }
505  }
int getID() const
Get identifier.
Definition: JObjectID.hh:50
static const double PI
Mathematical constants.
then JCookie sh JDataQuality D $DETECTOR_ID R
Definition: JDataQuality.sh:41
virtual const JModuleAddressMap& JDETECTOR::JDetectorBuilder_t< JKM3NeT_t >::getDefaultModuleAddressMap ( ) const
inlineoverridevirtualinherited

Get default module address map.

Returns
module address map

Implements JDETECTOR::JDetectorAddressMap.

Definition at line 326 of file JDetectorSupportkit.hh.

327  {
328  static JModuleAddressMap memo;
329 
330  if (memo.empty()) {
331 
332  memo.push_back(JPMTAddressTranslator(JPMTReadoutAddress(22), JPMTPhysicalAddress('A', 1)));
333 
334  memo.push_back(JPMTAddressTranslator(JPMTReadoutAddress(14), JPMTPhysicalAddress('B', 1)));
335  memo.push_back(JPMTAddressTranslator(JPMTReadoutAddress(19), JPMTPhysicalAddress('B', 2)));
336  memo.push_back(JPMTAddressTranslator(JPMTReadoutAddress(25), JPMTPhysicalAddress('B', 3)));
337  memo.push_back(JPMTAddressTranslator(JPMTReadoutAddress(24), JPMTPhysicalAddress('B', 4)));
338  memo.push_back(JPMTAddressTranslator(JPMTReadoutAddress(26), JPMTPhysicalAddress('B', 5)));
339  memo.push_back(JPMTAddressTranslator(JPMTReadoutAddress(18), JPMTPhysicalAddress('B', 6)));
340 
341  memo.push_back(JPMTAddressTranslator(JPMTReadoutAddress(13), JPMTPhysicalAddress('C', 1)));
342  memo.push_back(JPMTAddressTranslator(JPMTReadoutAddress(21), JPMTPhysicalAddress('C', 2)));
343  memo.push_back(JPMTAddressTranslator(JPMTReadoutAddress(29), JPMTPhysicalAddress('C', 3)));
344  memo.push_back(JPMTAddressTranslator(JPMTReadoutAddress(28), JPMTPhysicalAddress('C', 4)));
345  memo.push_back(JPMTAddressTranslator(JPMTReadoutAddress(20), JPMTPhysicalAddress('C', 5)));
346  memo.push_back(JPMTAddressTranslator(JPMTReadoutAddress(17), JPMTPhysicalAddress('C', 6)));
347 
348  memo.push_back(JPMTAddressTranslator(JPMTReadoutAddress(12), JPMTPhysicalAddress('D', 1)));
349  memo.push_back(JPMTAddressTranslator(JPMTReadoutAddress(15), JPMTPhysicalAddress('D', 2)));
350  memo.push_back(JPMTAddressTranslator(JPMTReadoutAddress(23), JPMTPhysicalAddress('D', 3)));
351  memo.push_back(JPMTAddressTranslator(JPMTReadoutAddress(30), JPMTPhysicalAddress('D', 4)));
352  memo.push_back(JPMTAddressTranslator(JPMTReadoutAddress(27), JPMTPhysicalAddress('D', 5)));
353  memo.push_back(JPMTAddressTranslator(JPMTReadoutAddress(16), JPMTPhysicalAddress('D', 6)));
354 
355  memo.push_back(JPMTAddressTranslator(JPMTReadoutAddress(10), JPMTPhysicalAddress('E', 1)));
356  memo.push_back(JPMTAddressTranslator(JPMTReadoutAddress( 6), JPMTPhysicalAddress('E', 2)));
357  memo.push_back(JPMTAddressTranslator(JPMTReadoutAddress( 3), JPMTPhysicalAddress('E', 3)));
358  memo.push_back(JPMTAddressTranslator(JPMTReadoutAddress( 2), JPMTPhysicalAddress('E', 4)));
359  memo.push_back(JPMTAddressTranslator(JPMTReadoutAddress( 1), JPMTPhysicalAddress('E', 5)));
360  memo.push_back(JPMTAddressTranslator(JPMTReadoutAddress(11), JPMTPhysicalAddress('E', 6)));
361 
362  memo.push_back(JPMTAddressTranslator(JPMTReadoutAddress( 9), JPMTPhysicalAddress('F', 1)));
363  memo.push_back(JPMTAddressTranslator(JPMTReadoutAddress( 8), JPMTPhysicalAddress('F', 2)));
364  memo.push_back(JPMTAddressTranslator(JPMTReadoutAddress( 4), JPMTPhysicalAddress('F', 3)));
365  memo.push_back(JPMTAddressTranslator(JPMTReadoutAddress( 0), JPMTPhysicalAddress('F', 4)));
366  memo.push_back(JPMTAddressTranslator(JPMTReadoutAddress( 5), JPMTPhysicalAddress('F', 5)));
367  memo.push_back(JPMTAddressTranslator(JPMTReadoutAddress( 7), JPMTPhysicalAddress('F', 6)));
368 
369  memo.configure();
370  }
371 
372  return memo;
373  }
Lookup table for PMT addresses in optical module.
Data structure to translate PMT physical to readout address.
Data structure for PMT readout address.
Data structure for PMT physical address.
void configure()
Configure internal router.
const JModule& JDETECTOR::JDetectorBuilder::getModule ( const int  id = -1,
const JLocation location = JLocation() 
) const
inlineinherited

Get module.

The configuration of module is according internal module address map.

Parameters
idmodule identifier
locationmodule location
Returns
module

Definition at line 85 of file JDetectorSupportkit.hh.

86  {
87  module.setID(id);
88  module.setLocation(location);
89 
90  const JModuleAddressMap& memo = this->get(id);
91 
92  module.resize(memo.size());
93 
94  if (memo.has( 0)) { module[memo[ 0].tdc] = JPMT( 1, JAxis3D(JVector3D(+0.000, +0.000, -0.200), JVersor3D(+0.000, +0.000, -1.000))); }
95 
96  if (memo.has( 1)) { module[memo[ 1].tdc] = JPMT( 2, JAxis3D(JVector3D(+0.000, +0.105, -0.170), JVersor3D(+0.000, +0.527, -0.850))); }
97  if (memo.has( 2)) { module[memo[ 2].tdc] = JPMT( 3, JAxis3D(JVector3D(+0.091, +0.053, -0.170), JVersor3D(+0.456, +0.263, -0.850))); }
98  if (memo.has( 3)) { module[memo[ 3].tdc] = JPMT( 4, JAxis3D(JVector3D(+0.091, -0.053, -0.170), JVersor3D(+0.456, -0.263, -0.850))); }
99  if (memo.has( 4)) { module[memo[ 4].tdc] = JPMT( 5, JAxis3D(JVector3D(+0.000, -0.105, -0.170), JVersor3D(+0.000, -0.527, -0.850))); }
100  if (memo.has( 5)) { module[memo[ 5].tdc] = JPMT( 6, JAxis3D(JVector3D(-0.091, -0.053, -0.170), JVersor3D(-0.456, -0.263, -0.850))); }
101  if (memo.has( 6)) { module[memo[ 6].tdc] = JPMT( 7, JAxis3D(JVector3D(-0.091, +0.053, -0.170), JVersor3D(-0.456, +0.263, -0.850))); }
102 
103  if (memo.has( 7)) { module[memo[ 7].tdc] = JPMT( 8, JAxis3D(JVector3D(+0.083, +0.144, -0.111), JVersor3D(+0.416, +0.720, -0.555))); }
104  if (memo.has( 8)) { module[memo[ 8].tdc] = JPMT( 9, JAxis3D(JVector3D(+0.166, +0.000, -0.111), JVersor3D(+0.832, +0.000, -0.555))); }
105  if (memo.has( 9)) { module[memo[ 9].tdc] = JPMT(10, JAxis3D(JVector3D(+0.083, -0.144, -0.111), JVersor3D(+0.416, -0.720, -0.555))); }
106  if (memo.has(10)) { module[memo[10].tdc] = JPMT(11, JAxis3D(JVector3D(-0.083, -0.144, -0.111), JVersor3D(-0.416, -0.720, -0.555))); }
107  if (memo.has(11)) { module[memo[11].tdc] = JPMT(12, JAxis3D(JVector3D(-0.166, +0.000, -0.111), JVersor3D(-0.832, +0.000, -0.555))); }
108  if (memo.has(12)) { module[memo[12].tdc] = JPMT(13, JAxis3D(JVector3D(-0.083, +0.144, -0.111), JVersor3D(-0.416, +0.720, -0.555))); }
109 
110  if (memo.has(13)) { module[memo[13].tdc] = JPMT(14, JAxis3D(JVector3D(+0.000, +0.191, -0.059), JVersor3D(+0.000, +0.955, -0.295))); }
111  if (memo.has(14)) { module[memo[14].tdc] = JPMT(15, JAxis3D(JVector3D(+0.165, +0.096, -0.059), JVersor3D(+0.827, +0.478, -0.295))); }
112  if (memo.has(15)) { module[memo[15].tdc] = JPMT(16, JAxis3D(JVector3D(+0.165, -0.096, -0.059), JVersor3D(+0.827, -0.478, -0.295))); }
113  if (memo.has(16)) { module[memo[16].tdc] = JPMT(17, JAxis3D(JVector3D(+0.000, -0.191, -0.059), JVersor3D(+0.000, -0.955, -0.295))); }
114  if (memo.has(17)) { module[memo[17].tdc] = JPMT(18, JAxis3D(JVector3D(-0.165, -0.096, -0.059), JVersor3D(-0.827, -0.478, -0.295))); }
115  if (memo.has(18)) { module[memo[18].tdc] = JPMT(19, JAxis3D(JVector3D(-0.165, +0.096, -0.059), JVersor3D(-0.827, +0.478, -0.295))); }
116 
117  if (memo.has(19)) { module[memo[19].tdc] = JPMT(20, JAxis3D(JVector3D(+0.096, +0.165, +0.059), JVersor3D(+0.478, +0.827, +0.295))); }
118  if (memo.has(20)) { module[memo[20].tdc] = JPMT(21, JAxis3D(JVector3D(+0.191, +0.000, +0.059), JVersor3D(+0.955, +0.000, +0.295))); }
119  if (memo.has(21)) { module[memo[21].tdc] = JPMT(22, JAxis3D(JVector3D(+0.096, -0.165, +0.059), JVersor3D(+0.478, -0.827, +0.295))); }
120  if (memo.has(22)) { module[memo[22].tdc] = JPMT(23, JAxis3D(JVector3D(-0.096, -0.165, +0.059), JVersor3D(-0.478, -0.827, +0.295))); }
121  if (memo.has(23)) { module[memo[23].tdc] = JPMT(24, JAxis3D(JVector3D(-0.191, +0.000, +0.059), JVersor3D(-0.955, +0.000, +0.295))); }
122  if (memo.has(24)) { module[memo[24].tdc] = JPMT(25, JAxis3D(JVector3D(-0.096, +0.165, +0.059), JVersor3D(-0.478, +0.827, +0.295))); }
123 
124  if (memo.has(25)) { module[memo[25].tdc] = JPMT(26, JAxis3D(JVector3D(+0.000, +0.166, +0.111), JVersor3D(+0.000, +0.832, +0.555))); }
125  if (memo.has(26)) { module[memo[26].tdc] = JPMT(27, JAxis3D(JVector3D(+0.144, +0.083, +0.111), JVersor3D(+0.720, +0.416, +0.555))); }
126  if (memo.has(27)) { module[memo[27].tdc] = JPMT(28, JAxis3D(JVector3D(+0.144, -0.083, +0.111), JVersor3D(+0.720, -0.416, +0.555))); }
127  if (memo.has(28)) { module[memo[28].tdc] = JPMT(29, JAxis3D(JVector3D(+0.000, -0.166, +0.111), JVersor3D(+0.000, -0.832, +0.555))); }
128  if (memo.has(29)) { module[memo[29].tdc] = JPMT(30, JAxis3D(JVector3D(-0.144, -0.083, +0.111), JVersor3D(-0.720, -0.416, +0.555))); }
129  if (memo.has(30)) { module[memo[30].tdc] = JPMT(31, JAxis3D(JVector3D(-0.144, +0.083, +0.111), JVersor3D(-0.720, +0.416, +0.555))); }
130 
131  configure();
132 
133  module.compile();
134  module.set(JVector3D(0.0, 0.0, 0.0));
135 
136  return module;
137  }
void setLocation(const JLocation &location)
Set location.
Definition: JLocation.hh:91
Lookup table for PMT addresses in optical module.
virtual void configure() const
Configure module.
Data structure for PMT geometry, calibration and status.
Definition: JPMT.hh:43
void compile()
Compile module data.
Definition: JModule.hh:281
void setID(const int id)
Set identifier.
Definition: JObjectID.hh:72
JModule & set(const JVector3D &pos)
Set position.
Definition: JModule.hh:407
bool has(const int index) const
Test whether index is available.
virtual int JDETECTOR::JDetectorAddressMap::getModuleID ( const JLocation location) const
inlinevirtualinherited

Get module identifier.

Parameters
locationmodule location
Returns
module identifier

Definition at line 58 of file JDetectorAddressMap.hh.

59  {
60  return location.getString() * 100 + location.getFloor();
61  }
int getFloor() const
Get floor number.
Definition: JLocation.hh:145
int getString() const
Get string number.
Definition: JLocation.hh:134
const JModuleAddressMap& JDETECTOR::JDetectorAddressMap::get ( const int  id) const
inlineinherited

Get module address map.

Parameters
idmodule identifier

Definition at line 69 of file JDetectorAddressMap.hh.

70  {
71  if (router.has(id))
72  return buffer[router.get(id)];
73  else
75  }
virtual const JModuleAddressMap & getDefaultModuleAddressMap() const =0
Get default module address map.
std::vector< JModuleAddressMap > buffer
JModuleAddressMap& JDETECTOR::JDetectorAddressMap::get ( const int  id)
inlineinherited

Get module address map.

Parameters
idmodule identifier
Returns
module address map

Definition at line 84 of file JDetectorAddressMap.hh.

85  {
86  if (!router.has(id)) {
87 
89 
90  router.put(id, buffer.size() - 1);
91  }
92 
93  return buffer[router.get(id)];
94  }
virtual const JModuleAddressMap & getDefaultModuleAddressMap() const =0
Get default module address map.
std::vector< JModuleAddressMap > buffer
const JPMTAddressTranslator& JDETECTOR::JDetectorAddressMap::get ( const JPMTIdentifier id) const
inlineinherited

Get PMT address translator.

Parameters
idPMY identifier
Returns
PMT address translator

Definition at line 103 of file JDetectorAddressMap.hh.

104  {
105  return get(id.getModuleID()).getAddressTranslator(id.getTDC());
106  }

Member Data Documentation

JModule JDETECTOR::JDetectorBuilder::module
mutableprotectedinherited

Definition at line 146 of file JDetectorSupportkit.hh.

std::vector<JModuleAddressMap> JDETECTOR::JDetectorAddressMap::buffer
protectedinherited

Definition at line 109 of file JDetectorAddressMap.hh.

JTOOLS::JRouter<int> JDETECTOR::JDetectorAddressMap::router
protectedinherited

Definition at line 110 of file JDetectorAddressMap.hh.


The documentation for this class was generated from the following file: