Jpp  16.0.0-rc.1
the software that should make you happy
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
JPMTDefaultSimulator.hh
Go to the documentation of this file.
1 #ifndef __JDETECTOR__JPMTDEFAULTSIMULATOR__
2 #define __JDETECTOR__JPMTDEFAULTSIMULATOR__
3 
4 #include <vector>
5 
6 #include "JTools/JHashMap.hh"
9 #include "JDetector/JDetector.hh"
11 
12 
13 /**
14  * \author mdejong
15  */
16 
17 namespace JDETECTOR {}
18 namespace JPP { using namespace JDETECTOR; }
19 
20 namespace JDETECTOR {
21 
22  using JTOOLS::JHashMap;
23 
24 
25  /**
26  * Auxiliary container for PMT analogue signal processors in same optical module.
27  */
29  public std::vector<JPMTAnalogueSignalProcessor>
30  {
31  /**
32  * Put PMT signal processor in container at given readout channel.
33  *
34  * \param pmt PMT readout channel
35  * \param cpu PMT signal processor
36  */
37  void put(const size_t pmt, const JPMTAnalogueSignalProcessor& cpu)
38  {
39  if (this->size() <= pmt) {
40  this->resize(pmt + 1);
41  }
42 
43  (*this)[pmt] = cpu;
44  }
45  };
46 
47 
48  /**
49  * Default PMT simulation.
50  *
51  * This class implements the JPMTDefaultSimulatorInterface interface for a given detector
52  * using the JPMTAnalogueSignalProcessor with corresponding PMT parameters.
53  */
56  public JHashMap<int, JModuleAnalogueSignalProcessor>
57  {
58  public:
59  /**
60  * Default constructor.
61  */
63  {}
64 
65 
66  /**
67  * Constructor for complete detector.
68  *
69  * \param parameters PMT parameters
70  * \param detector detector
71  */
73  const JDetector& detector)
74  {
75  for (JDetector::const_iterator module = detector.begin(); module != detector.end(); ++module) {
76  for (size_t pmt = 0; pmt != module->size(); ++pmt) {
77  this->get(module->getID()).put(pmt, JPMTAnalogueSignalProcessor(parameters.getPMTParameters(JPMTIdentifier(module->getID(), pmt))));
78  }
79  }
80  }
81 
82 
83  /**
84  * Constructor for single PMT.
85  *
86  * \param parameters PMT parameters
87  * \param pmt PMT identifier
88  */
90  const JPMTIdentifier& pmt)
91  {
92  this->get(pmt.getID()).put(pmt.getPMTAddress(), JPMTAnalogueSignalProcessor(parameters));
93  }
94 
95 
96  /**
97  * Get PMT signal processor.
98  *
99  * \param pmt PMT identifier
100  * \return PMT signal processor
101  */
102  virtual const JPMTSignalProcessorInterface& getPMTSignalProcessor(const JPMTIdentifier& pmt) const override
103  {
104  return this->get(pmt.getID())[pmt.getPMTAddress()];
105  }
106  };
107 }
108 
109 #endif
virtual const JPMTSignalProcessorInterface & getPMTSignalProcessor(const JPMTIdentifier &pmt) const override
Get PMT signal processor.
JPMTDefaultSimulator()
Default constructor.
General purpose class for hash map of unique keys.
Definition: JHashMap.hh:72
JPMTDefaultSimulator(const JPMTParameters &parameters, const JPMTIdentifier &pmt)
Constructor for single PMT.
General purpose class for hash map of unique elements.
Detector data structure.
Definition: JDetector.hh:89
const JPMTParameters & getPMTParameters(const JPMTIdentifier &id) const
Get PMT parameters.
*fatal Wrong number of arguments esac JCookie sh typeset Z DETECTOR typeset Z SOURCE_RUN typeset Z TARGET_RUN set_variable PARAMETERS_FILE $WORKDIR parameters
Definition: diff-Tuna.sh:38
Data structure for detector geometry and calibration.
int getID() const
Get identifier.
Definition: JObjectID.hh:50
Auxiliary container for PMT analogue signal processors in same optical module.
int getPMTAddress() const
Get PMT address (= TDC).
Auxiliary class for map of PMT parameters.
void put(typename JClass< key_type >::argument_type key, typename JClass< mapped_type >::argument_type value)
Put pair-wise element (key,value) into collection.
JPMTDefaultSimulator(const JPMTParametersMap &parameters, const JDetector &detector)
Constructor for complete detector.
void put(const size_t pmt, const JPMTAnalogueSignalProcessor &cpu)
Put PMT signal processor in container at given readout channel.
PMT analogue signal processor.
Data structure for PMT parameters.
do set_variable DETECTOR_TXT $WORKDIR detector