Jpp 20.0.0-27-g39925593c-D
the software that should make you happy
Loading...
Searching...
No Matches
Public Types | Public Member Functions | Protected Attributes | Private Types | Private Member Functions | Private Attributes | List of all members
JDETECTOR::JDetectorSimulator Class Reference

Detector simulation. More...

#include <JDetectorSimulator.hh>

Inheritance diagram for JDETECTOR::JDetectorSimulator:
JDETECTOR::JPMTRouter JDETECTOR::JK40Simulator JDETECTOR::JPMTSimulator JDETECTOR::JCLBSimulator JLANG::JReference< JClass_t >

Public Types

typedef JDetector::const_iterator const_iterator
 

Public Member Functions

 JDetectorSimulator (const JDetector &detector)
 Constructor.
 
bool hasK40Simulator () const
 Check availability of K40 simulator.
 
bool hasPMTSimulator () const
 Check availability of PMT simulator.
 
bool hasCLBSimulator () const
 Check availability of CLB simulator.
 
const JK40SimulatorgetK40Simulator () const
 Get K40 simulator.
 
const JPMTSimulatorgetPMTSimulator () const
 Get PMT simulator.
 
const JCLBSimulatorgetCLBSimulator () const
 Get CLB simulator.
 
void reset (JK40Simulator *k40Simulator)
 Reset K40 simulator.
 
void reset (JPMTSimulator *pmtSimulator)
 Reset PMT simulator.
 
void reset (JCLBSimulator *clbSimulator)
 Reset CLB simulator.
 
virtual void generateHits (const JModule &module, const JTimeRange &period, JModuleData &output) const override
 Generate hits.
 
virtual void processHits (const JPMTIdentifier &ID, const JCalibration &calibration, const JStatus &status, const JPMTData< JPMTSignal > &input, JPMTData< JPMTPulse > &output) const override
 Process hits.
 
virtual void processData (const JModuleIdentifier &id, const JCLBInput &input, JDAQSuperFrame &output) const override
 Process data.
 
virtual void operator() (const JModule &module, JModuleData &input, JDAQSuperFrame &output) const
 Process module data in one step.
 
const JPMTRoutergetPMTRouter () const
 Get PMT router.
 
const JPMTAddressgetAddress (const JObjectID &id) const
 Get address of PMT.
 
const JPMTgetPMT (const JPMTAddress &address) const
 Get PMT.
 
const JPMTgetPMT (const JObjectID &id) const
 Get PMT.
 
bool hasPMT (const JObjectID &id) const
 Has PMT.
 
JPMTIdentifier getIdentifier (const JPMTAddress &address) const
 Get identifier of PMT.
 
JPMTIdentifier getIdentifier (const JObjectID &id) const
 Get identifier of PMT.
 
const JModulegetModule (const JModuleAddress &address) const
 Get module.
 
const JModulegetParentModule (const JObjectID &id) const
 Get parent module.
 
int getParentModuleID (const JObjectID &id) const
 Get parent module identifier.
 
JPMTChannel getPMTChannel (const JPMTAddress &address) const
 Get PMT channel.
 
JPMTChannel getPMTChannel (const JObjectID &id) const
 Get PMT channel.
 
JUTMPosition getUTMPosition (const JObjectID &id) const
 Get UTM position of given PMT identifier.
 
const JClass_t & getReference () const
 Get reference to object.
 
JClass_t & getReference ()
 Get reference to object.
 
bool is_valid () const
 Check validity of reference.
 
const JClass_t * operator-> () const
 Smart pointer.
 
JClass_t * operator-> ()
 Smart pointer.
 
const JClass_t & operator* () const
 Dereference operator.
 
JClass_t & operator* ()
 Dereference operator.
 
virtual bool hasCLB (const JModuleIdentifier &id) const
 Check if CLB exist.
 

Protected Attributes

std::unique_ptr< JK40Simulatork40Simulator
 
std::unique_ptr< JPMTSimulatorpmtSimulator
 
std::unique_ptr< JCLBSimulatorclbSimulator
 
JClass_t & __object
 

Private Types

typedef JReference< const JDetectorJReference_t
 

Private Member Functions

 JDetectorSimulator (const JDetectorSimulator &)
 Make copy constructor inaccesible.
 
JDetectorSimulatoroperator= (const JDetectorSimulator &)
 Make assignment operator inaccesible.
 

Private Attributes

JTOOLS::JRouter< JPMTAddressrouter
 

Detailed Description

Detector simulation.

This class implements the JK40Simulator, JPMTSimulator and JCLBSimulator interfaces. The implementations of these interfaces should be provided via pointers to corresponding objects.

N.B: This class owns the objects pointed to using class JLANG::JSinglePointer.

Definition at line 34 of file JDetectorSimulator.hh.

Member Typedef Documentation

◆ JReference_t

typedef JReference<const JDetector> JDETECTOR::JPMTRouter::JReference_t
privateinherited

Definition at line 39 of file JPMTRouter.hh.

◆ const_iterator

typedef JDetector::const_iterator JDETECTOR::JPMTRouter::const_iterator
inherited

Definition at line 43 of file JPMTRouter.hh.

Constructor & Destructor Documentation

◆ JDetectorSimulator() [1/2]

JDETECTOR::JDetectorSimulator::JDetectorSimulator ( const JDetectorSimulator & )
private

Make copy constructor inaccesible.

◆ JDetectorSimulator() [2/2]

JDETECTOR::JDetectorSimulator::JDetectorSimulator ( const JDetector & detector)
inline

Constructor.

Parameters
detectordetector

Definition at line 59 of file JDetectorSimulator.hh.

59 :
61 {}
Router for direct addressing of PMT data in detector data structure.
Definition JPMTRouter.hh:37
Detector file.
Definition JHead.hh:227

Member Function Documentation

◆ operator=()

JDetectorSimulator & JDETECTOR::JDetectorSimulator::operator= ( const JDetectorSimulator & )
private

Make assignment operator inaccesible.

◆ hasK40Simulator()

bool JDETECTOR::JDetectorSimulator::hasK40Simulator ( ) const
inline

Check availability of K40 simulator.

Returns
true if simulator available; else false

Definition at line 69 of file JDetectorSimulator.hh.

70 {
71 return k40Simulator.get() != NULL;
72 }
std::unique_ptr< JK40Simulator > k40Simulator
Template definition of a multi-dimensional oscillation probability interpolation table.

◆ hasPMTSimulator()

bool JDETECTOR::JDetectorSimulator::hasPMTSimulator ( ) const
inline

Check availability of PMT simulator.

Returns
true if simulator available; else false

Definition at line 81 of file JDetectorSimulator.hh.

82 {
83 return pmtSimulator.get() != NULL;
84 }
std::unique_ptr< JPMTSimulator > pmtSimulator

◆ hasCLBSimulator()

bool JDETECTOR::JDetectorSimulator::hasCLBSimulator ( ) const
inline

Check availability of CLB simulator.

Returns
true if simulator available; else false

Definition at line 92 of file JDetectorSimulator.hh.

93 {
94 return clbSimulator.get() != NULL;
95 }
std::unique_ptr< JCLBSimulator > clbSimulator

◆ getK40Simulator()

const JK40Simulator & JDETECTOR::JDetectorSimulator::getK40Simulator ( ) const
inline

Get K40 simulator.

Returns
K40 simulator

Definition at line 103 of file JDetectorSimulator.hh.

104 {
105 if (hasK40Simulator())
106 return *k40Simulator;
107 else
108 THROW(JPointerException, "JDetectorSimulator: K40 simulator not avaliable.");
109 }
#define THROW(JException_t, A)
Marco for throwing exception with std::ostream compatible message.
bool hasK40Simulator() const
Check availability of K40 simulator.
Exception for accessing an invalid pointer.

◆ getPMTSimulator()

const JPMTSimulator & JDETECTOR::JDetectorSimulator::getPMTSimulator ( ) const
inline

Get PMT simulator.

Returns
PMT simulator

Definition at line 117 of file JDetectorSimulator.hh.

118 {
119 if (hasPMTSimulator())
120 return *pmtSimulator;
121 else
122 THROW(JPointerException, "JDetectorSimulator: PMT simulator not avaliable.");
123 }
bool hasPMTSimulator() const
Check availability of PMT simulator.

◆ getCLBSimulator()

const JCLBSimulator & JDETECTOR::JDetectorSimulator::getCLBSimulator ( ) const
inline

Get CLB simulator.

Returns
CLB simulator

Definition at line 131 of file JDetectorSimulator.hh.

132 {
133 if (hasCLBSimulator())
134 return *clbSimulator;
135 else
136 THROW(JPointerException, "JDetectorSimulator: CLB simulator not avaliable.");
137 }
bool hasCLBSimulator() const
Check availability of CLB simulator.

◆ reset() [1/3]

void JDETECTOR::JDetectorSimulator::reset ( JK40Simulator * k40Simulator)
inline

Reset K40 simulator.

Parameters
k40SimulatorK40 simulator

Definition at line 145 of file JDetectorSimulator.hh.

146 {
147 this->k40Simulator.reset(k40Simulator);
148 }

◆ reset() [2/3]

void JDETECTOR::JDetectorSimulator::reset ( JPMTSimulator * pmtSimulator)
inline

Reset PMT simulator.

Parameters
pmtSimulatorPMT simulator

Definition at line 157 of file JDetectorSimulator.hh.

158 {
159 this->pmtSimulator.reset(pmtSimulator);
160 }

◆ reset() [3/3]

void JDETECTOR::JDetectorSimulator::reset ( JCLBSimulator * clbSimulator)
inline

Reset CLB simulator.

Parameters
clbSimulatorCLB simulator

Definition at line 168 of file JDetectorSimulator.hh.

169 {
170 this->clbSimulator.reset(clbSimulator);
171 }

◆ generateHits()

virtual void JDETECTOR::JDetectorSimulator::generateHits ( const JModule & module,
const JTimeRange & period,
JModuleData & output ) const
inlineoverridevirtual

Generate hits.

Parameters
modulemodule
periodtime window [ns]
outputbackground data

Implements JDETECTOR::JK40Simulator.

Definition at line 181 of file JDetectorSimulator.hh.

184 {
185 getK40Simulator().generateHits(module, period, output);
186 }
const JK40Simulator & getK40Simulator() const
Get K40 simulator.

◆ processHits()

virtual void JDETECTOR::JDetectorSimulator::processHits ( const JPMTIdentifier & ID,
const JCalibration & calibration,
const JStatus & status,
const JPMTData< JPMTSignal > & input,
JPMTData< JPMTPulse > & output ) const
inlineoverridevirtual

Process hits.

Parameters
IDPMT identifier
calibrationPMT calibration
statusPMT status
inputPMT signals
outputPMT hits

Implements JDETECTOR::JPMTSimulator.

Definition at line 198 of file JDetectorSimulator.hh.

203 {
204 getPMTSimulator().processHits(ID, calibration, status, input, output);
205 }
const JPMTSimulator & getPMTSimulator() const
Get PMT simulator.
Calibration.
Definition JHead.hh:330

◆ processData()

virtual void JDETECTOR::JDetectorSimulator::processData ( const JModuleIdentifier & id,
const JCLBInput & input,
JDAQSuperFrame & output ) const
inlineoverridevirtual

Process data.

Parameters
idmodule identifier
inputPMT data
outputCLB data

Implements JDETECTOR::JCLBSimulator.

Definition at line 215 of file JDetectorSimulator.hh.

216 {
217 getCLBSimulator().processData(id, input, output);
218 }
const JCLBSimulator & getCLBSimulator() const
Get CLB simulator.

◆ operator()()

virtual void JDETECTOR::JDetectorSimulator::operator() ( const JModule & module,
JModuleData & input,
JDAQSuperFrame & output ) const
inlinevirtual

Process module data in one step.

Parameters
modulemodule
inputPMT signals
outputCLB data

Definition at line 228 of file JDetectorSimulator.hh.

231 {
232 // PMT simulation
233
234 JCLBInput buffer(input.size());
235
236 for (unsigned int i = 0; i != input.size(); ++i) {
237
238 input[i].sort();
239
240 const JPMT& pmt = module.getPMT(i);
241
242 processHits(JPMTIdentifier(module.getID(), i),
243 pmt.getCalibration(),
244 pmt.getStatus(),
245 input [i],
246 buffer[i]);
247 }
248
249 // CLB simulation
250
251 processData(module, buffer, output);
252 }
const JCalibration & getCalibration() const
Get calibration.
virtual void processData(const JModuleIdentifier &id, const JCLBInput &input, JDAQSuperFrame &output) const override
Process data.
virtual void processHits(const JPMTIdentifier &ID, const JCalibration &calibration, const JStatus &status, const JPMTData< JPMTSignal > &input, JPMTData< JPMTPulse > &output) const override
Process hits.
Data structure for PMT geometry, calibration and status.
Definition JPMT.hh:49
status_type getStatus(const JType< status_type > &type) const
Get status.
Definition JStatus.hh:60

◆ getPMTRouter()

const JPMTRouter & JDETECTOR::JPMTRouter::getPMTRouter ( ) const
inlineinherited

Get PMT router.

Returns
PMT router

Definition at line 68 of file JPMTRouter.hh.

69 {
70 return static_cast<const JPMTRouter&>(*this);
71 }
JPMTRouter(const JDetector &detector)
Constructor.
Definition JPMTRouter.hh:51

◆ getAddress()

const JPMTAddress & JDETECTOR::JPMTRouter::getAddress ( const JObjectID & id) const
inlineinherited

Get address of PMT.

Parameters
idPMT identifier
Returns
address

Definition at line 80 of file JPMTRouter.hh.

81 {
82 return router.get(id.getID());
83 }
JTOOLS::JRouter< JPMTAddress > router

◆ getPMT() [1/2]

const JPMT & JDETECTOR::JPMTRouter::getPMT ( const JPMTAddress & address) const
inlineinherited

Get PMT.

Parameters
addressPMT address
Returns
PMT

Definition at line 92 of file JPMTRouter.hh.

93 {
94 return getReference().getPMT(address);
95 }
const JClass_t & getReference() const
Get reference to object.
Definition JReference.hh:38

◆ getPMT() [2/2]

const JPMT & JDETECTOR::JPMTRouter::getPMT ( const JObjectID & id) const
inlineinherited

Get PMT.

Parameters
idPMT identifier
Returns
PMT

Definition at line 104 of file JPMTRouter.hh.

105 {
106 return getReference().getPMT(this->getAddress(id));
107 }
const JPMTAddress & getAddress(const JObjectID &id) const
Get address of PMT.
Definition JPMTRouter.hh:80

◆ hasPMT()

bool JDETECTOR::JPMTRouter::hasPMT ( const JObjectID & id) const
inlineinherited

Has PMT.

Parameters
idPMT identifier
Returns
true if PMT present; else false

Definition at line 116 of file JPMTRouter.hh.

117 {
118 return router.has(id.getID());
119 }

◆ getIdentifier() [1/2]

JPMTIdentifier JDETECTOR::JPMTRouter::getIdentifier ( const JPMTAddress & address) const
inlineinherited

Get identifier of PMT.

Parameters
addressPMT address
Returns
address

Definition at line 128 of file JPMTRouter.hh.

129 {
130 return JPMTIdentifier(getModule(address), address.second);
131 }
const JModule & getModule(const JModuleAddress &address) const
Get module.

◆ getIdentifier() [2/2]

JPMTIdentifier JDETECTOR::JPMTRouter::getIdentifier ( const JObjectID & id) const
inlineinherited

Get identifier of PMT.

Parameters
idPMT identifier
Returns
address

Definition at line 140 of file JPMTRouter.hh.

141 {
142 return getIdentifier(this->getAddress(id));
143 }
JPMTIdentifier getIdentifier(const JPMTAddress &address) const
Get identifier of PMT.

◆ getModule()

const JModule & JDETECTOR::JPMTRouter::getModule ( const JModuleAddress & address) const
inlineinherited

Get module.

Parameters
addressmodule address
Returns
module

Definition at line 152 of file JPMTRouter.hh.

153 {
154 return getReference().getModule(address);
155 }

◆ getParentModule()

const JModule & JDETECTOR::JPMTRouter::getParentModule ( const JObjectID & id) const
inlineinherited

Get parent module.

Parameters
idPMT identifier
Returns
module

Definition at line 164 of file JPMTRouter.hh.

165 {
166 return getModule(this->getAddress(id));
167 }

◆ getParentModuleID()

int JDETECTOR::JPMTRouter::getParentModuleID ( const JObjectID & id) const
inlineinherited

Get parent module identifier.

Parameters
idPMT identifier
Returns
module identifier

Definition at line 176 of file JPMTRouter.hh.

177 {
178 return getParentModule(id).getID();
179 }
const JModule & getParentModule(const JObjectID &id) const
Get parent module.
int getID() const
Get identifier.
Definition JObjectID.hh:50

◆ getPMTChannel() [1/2]

JPMTChannel JDETECTOR::JPMTRouter::getPMTChannel ( const JPMTAddress & address) const
inlineinherited

Get PMT channel.

Parameters
addressPMT address
Returns
PMT channel

Definition at line 188 of file JPMTRouter.hh.

189 {
190 return JPMTChannel(getModule(address).getLocation(), address.second);
191 }

◆ getPMTChannel() [2/2]

JPMTChannel JDETECTOR::JPMTRouter::getPMTChannel ( const JObjectID & id) const
inlineinherited

Get PMT channel.

Parameters
idPMT identifier
Returns
PMT channel

Definition at line 200 of file JPMTRouter.hh.

201 {
202 return getPMTChannel(getAddress(id));
203 }
JPMTChannel getPMTChannel(const JPMTAddress &address) const
Get PMT channel.

◆ getUTMPosition()

JUTMPosition JDETECTOR::JPMTRouter::getUTMPosition ( const JObjectID & id) const
inlineinherited

Get UTM position of given PMT identifier.

Parameters
idPMT identifier
Returns
UTM position

Definition at line 212 of file JPMTRouter.hh.

213 {
214 return JUTMPosition(getPMT(id).getPosition() + getReference().getPosition());
215 }
const JPMT & getPMT(const JPMTAddress &address) const
Get PMT.
Definition JPMTRouter.hh:92
JPosition3D getPosition(const JModule &first, const JModule &second)
Get position to go from first to second module.

◆ getReference() [1/2]

template<class JClass_t >
const JClass_t & JLANG::JReference< JClass_t >::getReference ( ) const
inlineinherited

Get reference to object.

Returns
reference to object

Definition at line 38 of file JReference.hh.

39 {
40 return __object;
41 }
JClass_t & __object

◆ getReference() [2/2]

template<class JClass_t >
JClass_t & JLANG::JReference< JClass_t >::getReference ( )
inlineinherited

Get reference to object.

Returns
reference to object

Definition at line 49 of file JReference.hh.

50 {
51 return __object;
52 }

◆ is_valid()

template<class JClass_t >
bool JLANG::JReference< JClass_t >::is_valid ( ) const
inlineinherited

Check validity of reference.

Returns
true

Definition at line 60 of file JReference.hh.

61 {
62 return true;
63 }

◆ operator->() [1/2]

template<class JClass_t >
const JClass_t * JLANG::JReference< JClass_t >::operator-> ( ) const
inlineinherited

Smart pointer.

Returns
pointer to object

Definition at line 71 of file JReference.hh.

72 {
73 return &__object;
74 }

◆ operator->() [2/2]

template<class JClass_t >
JClass_t * JLANG::JReference< JClass_t >::operator-> ( )
inlineinherited

Smart pointer.

Returns
pointer to object

Definition at line 82 of file JReference.hh.

83 {
84 return &__object;
85 }

◆ operator*() [1/2]

template<class JClass_t >
const JClass_t & JLANG::JReference< JClass_t >::operator* ( ) const
inlineinherited

Dereference operator.

Returns
reference to object

Definition at line 93 of file JReference.hh.

94 {
95 return __object;
96 }

◆ operator*() [2/2]

template<class JClass_t >
JClass_t & JLANG::JReference< JClass_t >::operator* ( )
inlineinherited

Dereference operator.

Returns
reference to object

Definition at line 104 of file JReference.hh.

105 {
106 return __object;
107 }

◆ hasCLB()

virtual bool JDETECTOR::JCLBSimulator::hasCLB ( const JModuleIdentifier & id) const
inlinevirtualinherited

Check if CLB exist.

Parameters
idmodule identifier
Returns
true

Reimplemented in JTRIGGER::JCLBRunByRunSimulator.

Definition at line 67 of file JCLBSimulator.hh.

68 {
69 return true;
70 }

Member Data Documentation

◆ k40Simulator

std::unique_ptr<JK40Simulator> JDETECTOR::JDetectorSimulator::k40Simulator
protected

Definition at line 256 of file JDetectorSimulator.hh.

◆ pmtSimulator

std::unique_ptr<JPMTSimulator> JDETECTOR::JDetectorSimulator::pmtSimulator
protected

Definition at line 257 of file JDetectorSimulator.hh.

◆ clbSimulator

std::unique_ptr<JCLBSimulator> JDETECTOR::JDetectorSimulator::clbSimulator
protected

Definition at line 258 of file JDetectorSimulator.hh.

◆ router

JTOOLS::JRouter<JPMTAddress> JDETECTOR::JPMTRouter::router
privateinherited

Definition at line 218 of file JPMTRouter.hh.

◆ __object

template<class JClass_t >
JClass_t& JLANG::JReference< JClass_t >::__object
protectedinherited

Definition at line 110 of file JReference.hh.


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