Jpp test-rotations-new
the software that should make you happy
Loading...
Searching...
No Matches
JDETECTOR::JDetectorBuilder_t< JKM3NeTFit_t > Class 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.
 
virtual const JModuleAddressMapgetDefaultModuleAddressMap () const override
 Get default module address map.
 
const JModulegetModule (const int id=-1, const JLocation &location=JLocation()) const
 Get module.
 
virtual int getModuleID (const JLocation &location) const
 Get module identifier.
 
const JModuleAddressMapget (const int id) const
 Get module address map.
 
JModuleAddressMapget (const int id)
 Get module address map.
 
const JPMTAddressTranslatorget (const JPMTIdentifier &id) const
 Get PMT address translator.
 

Protected Member Functions

virtual void configure () const override
 Configure module.
 

Protected Attributes

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

Detailed Description

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

Definition at line 452 of file JDetectorSupportkit.hh.

Constructor & Destructor Documentation

◆ JDetectorBuilder_t()

JDETECTOR::JDetectorBuilder_t< JKM3NeTFit_t >::JDetectorBuilder_t ( )
inline

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 }
const JModuleAddressMap & get(const int id) const
Get module address map.
void rotateL(const char ring)
Swap readout addresses by left rotation of physical addresses of PMTs in a given ring.
void swapTDC(const int tdc1, const int tdc2)
Swap physical addresses corresponding to TDCs.
void rotateR(const char ring)
Swap readout addresses by right rotation of physical addresses of PMTs in a given ring.

Member Function Documentation

◆ configure()

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
506 // https://git.km3net.de/auxiliary_data/calibration/-/issues/10
507
508 if (module.getID() == 817603901) {
509
510 const JRotation3Z R(+60.0 * PI / 180.0);
511
512 for (JModule::iterator pmt = module.begin(); pmt != module.end(); ++pmt) {
513 if (pmt->getDZ() < 0.0) {
514 pmt->rotate(R);
515 }
516 }
517 }
518 }
Rotation around Z-axis.
int getID() const
Get identifier.
Definition JObjectID.hh:50
This name space includes all other name spaces (except KM3NETDAQ, KM3NET and ANTARES).

◆ getDefaultModuleAddressMap()

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 }

◆ getModule()

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 }
virtual void configure() const
Configure module.

◆ getModuleID()

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 }

◆ get() [1/3]

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 }
std::vector< JModuleAddressMap > buffer
virtual const JModuleAddressMap & getDefaultModuleAddressMap() const =0
Get default module address map.

◆ get() [2/3]

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 }

◆ get() [3/3]

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 }
virtual int getModuleID(const JLocation &location) const
Get module identifier.
const JPMTAddressTranslator & getAddressTranslator(const int tdc) const
Get PMT address translator.

Member Data Documentation

◆ module

JModule JDETECTOR::JDetectorBuilder::module
mutableprotectedinherited

Definition at line 146 of file JDetectorSupportkit.hh.

◆ buffer

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

Definition at line 109 of file JDetectorAddressMap.hh.

◆ router

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: