3 #include <mdet/MHierarchyInfo.h>
5 #include <utl/RandomEngine.h>
6 #include <utl/MathConstants.h>
8 #include <fwk/RandomEngineRegistry.h>
11 #include <CLHEP/Random/RandGauss.h>
14 using CLHEP::RandGauss;
30 Register(fPulseAmplitude1Mean);
31 Register(fPulseAmplitude1StdDev);
32 Register(fPulseAmplitude2Mean);
33 Register(fPulseAmplitude2StdDev);
34 Register(fPulseAmplitude3Mean);
35 Register(fPulseAmplitude3StdDev);
36 Register(fPulseTime1Mean);
37 Register(fPulseTime1StdDev);
38 Register(fPulseTime2Mean);
39 Register(fPulseTime2StdDev);
40 Register(fPulseTime3Mean);
41 Register(fPulseTime3StdDev);
42 Register(fPulseTime4Mean);
43 Register(fPulseTime4StdDev);
44 Register(fPulseRelevantWidth);
174 double *parameterMeans =
new double[7];
175 double *parameterSigmas =
new double[7];
192 double *parameters =
new double[7];
193 for (
int i = 0; i < 7; i++){
194 if(parameterSigmas[i]!=0.0){
195 parameters[i] = CLHEP::RandGauss::shoot(& rnd.
GetEngine(), parameterMeans[i], parameterSigmas[i]);
197 parameters[i] = parameterMeans[i];
204 return PE(*
this, parameters[0], parameters[2], parameters[4], parameters[1], parameters[3], parameters[5], parameters[6], t);
static const char *const kComponentName
utl::Validated< double > fPulseAmplitude1Mean
utl::Validated< double > fPulseTime4Mean
utl::Validated< double > fPulseTime1StdDev
utl::Validated< double > fPulseTime2Mean
RandomEngineType & GetEngine()
double GetPulseAmplitude2StdDev() const
Standard deviation of amplitude 2 in PE pulses in Parameter space.
static const char *const kComponentsNames[13]
det::DetectorComponent< C, MManagerProvider > Type
Type specializing det::DetectorComponent for Muon hierarchy.
double GetPulseRelevantWidth() const
Pulse relevant time width.
utl::Validated< double > fPulseTime3Mean
void Update(std::vector< double > &init, const std::vector< double > &res)
static const char *const kComponentsIds[13]
double GetPulseTime1Mean() const
Mean time 1 of PE pulses in Parameter space.
utl::Validated< double > fPulseAmplitude2StdDev
utl::ShadowPtr< IdsContainer > fChannelSiPMScintillatorFiberIds
Container for indices of corresponding Channel, Scintillator, Fiber.
const IdsContainer & GetChannelSiPMScintillatorFiberIds() const
Indices for Channel, Scintillator, Fiber of corrresponding Pixel.
T & GetData(P< T > &d, const std::string &p) const
Common utility function for configuration.
SiPM(int pId, const det::VManager::IndexMap &parentMap, const SiPMArray &parent)
Constructs the SiPM.
double GetPulseAmplitude2Mean() const
Mean amplitude 2 of PE pulses in Parameter space.
utl::Validated< double > fPulseAmplitude3StdDev
Wraps the random number engine used to generate distributions.
utl::Validated< double > fPulseTime2StdDev
double GetPulseTime4Mean() const
Mean time 4 of PE pulses in Parameter space.
double GetPulseTime3Mean() const
Mean time 3 of PE pulses in Parameter space.
std::vector< int > IdsContainer
Typedef for container of corresponding Channel, Scintillator, Fiber indices.
utl::Validated< double > fPulseRelevantWidth
utl::Validated< double > fPulseAmplitude3Mean
double GetPulseAmplitude1StdDev() const
Standard deviation of amplitude 1 in PE pulses in Parameter space.
double GetPulseAmplitude1Mean() const
Mean amplitude 1 of PE pulses in Parameter space.
utl::Validated< double > fPulseAmplitude1StdDev
double GetPulseTime2Mean() const
Mean time 2 of PE pulses in Parameter space.
double GetPulseTime4StdDev() const
Standard deviation of time 4 in PE pulses in Parameter space.
double GetPulseTime3StdDev() const
Standard deviation of time 3 in PE pulses in Parameter space.
utl::Validated< double > fPulseTime4StdDev
std::map< std::string, std::string > IndexMap
utl::Validated< double > fPulseTime3StdDev
static const char *const kComponentId
PE MakePEAt(double t) const
Constructs an PE according to this SiPM characteristics.
double GetPulseTime2StdDev() const
Standard deviation of time 2 in PE pulses in Parameter space.
utl::Validated< double > fPulseTime1Mean
utl::Validated< double > fPulseAmplitude2Mean
double GetPulseAmplitude3Mean() const
Mean amplitude 3 of PE pulses in Parameter space.
double GetPulseAmplitude3StdDev() const
Standard deviation of amplitude 3 in PE pulses in Parameter space.
double GetPulseTime1StdDev() const
Standard deviation of time 1 in PE pulses in Parameter space.
void Update(bool invalidateData, bool invalidateComponents)