1 #include <mdet/Fiber.h>
3 #include <mdet/Scintillator.h>
4 #include <mdet/MHierarchyInfo.h>
5 #include <mdet/Module.h>
7 #include <utl/Vector.h>
8 #include <utl/RandomEngine.h>
10 #include <fwk/RandomEngineRegistry.h>
12 #include <CLHEP/Random/RandPoisson.h>
13 #include <CLHEP/Random/RandExponential.h>
21 double GetWidth()
const
25 double GetLength()
const
29 double GetHeight()
const
231 double attenuationAmplitudeA;
232 double attenuationAmplitudeB;
233 double attenuationLengthA;
234 double attenuationLengthB;
249 double lambda0 = attenuationAmplitudeA * std::exp(-x / attenuationLengthA) +
250 attenuationAmplitudeB * std::exp(-x / attenuationLengthB);
252 double lambda = lambda0;
262 return CLHEP::RandPoisson::shoot(& rnd.
GetEngine(), lambda);
272 Register(fOnScintillatorLength);
273 Register(fOnManifoldLength);
274 Register(fNumericalAperture);
276 Register(fRefractionIndex);
277 Register(fDecayTime);
278 Register(fAttenuationLengthA);
279 Register(fAttenuationLengthB);
280 Register(fAttenuationAmplitudeA);
281 Register(fAttenuationAmplitudeB);
282 Register(fAttenuationReferenceThickness);
double GetAttenuationLengthASiPM() const
AttenuationReference GetAttenuationReference() const
Return the type of refrence to use.
double GetOnScintillatorLength() const
The length of the fiber along its scintillator.
double GetAttenuationAmplitudeA() const
utl::Validated< double > fRefractionIndex
static EnumType Create(const int k)
int version of the overloaded creation method.
utl::Validated< double > fAttenuationAmplitudeBSiPM
RandomEngineType & GetEngine()
unsigned int ComputeSPENumber(double x, double l, double e) const
Computes a number of SPE given the impinging distance, the length of the track and the energy of the ...
Mixin class to be inherited from objects that have a position.
static const char *const kComponentsNames[13]
det::DetectorComponent< C, MManagerProvider > Type
Type specializing det::DetectorComponent for Muon hierarchy.
utl::CoordinateSystemPtr GetLocalCoordinateSystem() const
Local system based on position and configured rotations.
utl::Validated< double > fAttenuationAmplitudeASiPM
static const char *const kComponentsIds[13]
double GetRadius() const
The radius of the fiber.
utl::Validated< double > fAttenuationReferenceEnergy
static const char *const AttenuationReferenceTags[]
Tags for textual representation.
double GetAttenuationLengthA() const
double GetAttenuationLengthBSiPM() const
T & GetData(P< T > &d, const std::string &p) const
Common utility function for configuration.
utl::Validated< double > fAttenuationLengthB
Actual muon-sensitive objects.
boost::shared_ptr< const CoordinateTransformer > CoordinateSystemPtr
Shared pointer for coordinate systems.
double GetDecayTime() const
The characteristic decay time of the fiber.
double GetNumericalAperture() const
The numerical aperture of the fiber.
Wraps the random number engine used to generate distributions.
utl::Validated< double > fAttenuationLengthASiPM
AttenuationReference
Kinds of possible attenuation references.
V & VisitShape(V &v) const
Callback method for inspecting shape-aware properties.
double GetAttenuationReferenceThickness() const
utl::Validated< double > fAttenuationAmplitudeB
utl::Validated< double > fAttenuationLengthA
const Scintillator & GetScintillatorFor(const Component &c) const
Returns the associated mdet::Scintillator.
utl::CoordinateSystemPtr GetReferenceCoordinateSystem() const
The reference is the local coordinate system of mdet::Scintillator.
double GetAttenuationAmplitudeASiPM() const
double GetDecayDelayMean() const
The mean value of the delay time.
double GetDecayDelayStdDev() const
The standard deviation fo the delay time.
utl::Validated< AttenuationReferenceForConfig > fAttenuationReference
utl::Validated< double > fRadius
utl::Validated< double > fAttenuationLengthBSiPM
const Module & GetModule() const
Retrieve the parent mdet::Module.
static const char *const kComponentId
double GetAttenuationAmplitudeBSiPM() const
std::map< std::string, std::string > IndexMap
double GetAttenuationAmplitudeB() const
utl::Validated< double > fDecayTime
double GetAttenuationLengthB() const
utl::Validated< double > fOnManifoldLength
double ComputeDecayDelay() const
Computes a delay due to decay process.
static const char *const kComponentName
utl::Validated< double > fAttenuationAmplitudeA
double GetAttenuationReferenceEnergy() const
Fiber(int fId, const det::VManager::IndexMap &parentMap, const Module &parent)
Constructs the Fiber (obviously!).
utl::Validated< double > fAttenuationReferenceThickness
double GetRefractionIndex() const
The refraction (or refractive) index of the fiber.
double GetOnManifoldLength() const
The length of the fiber along the path that joins the scintillator to its pixel on the PMT...