1 #ifndef _mdet_Scintillator_h
2 #define _mdet_Scintillator_h
4 #include <det/VManager.h>
5 #include <det/MPositionable.h>
7 #include <mdet/MDetectorComponent.h>
10 #include <utl/Plane.h>
12 #include <utl/Vector.h>
13 #include <utl/Segment.h>
14 #include <utl/CoordinateSystemPtr.h>
15 #include <utl/Validated.h>
22 struct ComponentUpdater;
270 friend struct det::ComponentUpdater;
284 template<class Container>
296 bool InExtent(
double ext, const utl::Vector& pLocal, const utl::Vector& normal) const;
301 bool OnSide(const utl::
Plane& sidePlane, const utl::Line& line) const;
426 #endif // _mdet_Scintillator_h
double Plane(const utl::Point &point, const utl::Vector &normal, const utl::Photon &photonIn, utl::Photon &photonOut)
bool IntersectedBy(const utl::Line &line) const
Answers if line crosses the body of the Scintillator.
bool InExtent(double ext, const utl::Vector &pLocal, const utl::Vector &normal) const
Checks if the vector lies within Scintillator's extent for the given axis.
utl::Validated< double > fLength
bool OnSide(const utl::Plane &sidePlane, const utl::Line &line) const
Indicates whether the line hits the Scintillator on the side contained in sidePlane.
bool IsCloseTo(double a, double b) const
FP Comparison criteria.
utl::Plane ComputeBottomPlane() const
The plane where the bottom of the Scintillator lays.
utl::Plane ComputeBackPlane() const
The plane where the back of the Scintillator lays.
utl::Plane ComputeTopPlane() const
The plane where the top of the Scintillator lays.
bool Contains(const utl::Point &point) const
Answers if point lies within the Scintillator.
double GetDecayTime() const
Characteristic decay time.
Mixin class to be inherited from objects that have a position.
Defines within it the common (templated) type for muon detector hierarchy components.
utl::Plane ComputeLeftPlane() const
The plane where the left of the Scintillator lays.
void IntersectionHelper(Container &v, const utl::Line &l, utl::Plane(Scintillator::*ComputePlane)() const ) const
Helper function for another specific member.
double GetWidth() const
Width of the strip (x direction in the local coordinate system).
double GetHeight() const
Height of the strip (z direction in the local coordinate system).
double GetDecayDelayStdDev() const
The standard deviation fo the delay time.
double GetEpsilon() const
FP comparison limit.
Actual muon-sensitive objects.
boost::shared_ptr< const CoordinateTransformer > CoordinateSystemPtr
Shared pointer for coordinate systems.
double GetLength() const
Length of the strip (y direction in the local coordinate system).
utl::Plane ComputeRightPlane() const
The plane where the right of the Scintillator lays.
utl::Plane ComputeGroundPlane() const
The (inifite) plane that coincides with the ground.
V & VisitShape(V &v) const
Callback method for inspecting shape-aware properties.
utl::Validated< double > fEpsilon
double GetArea() const
Compute Scintillator's total area in square metres.
static const char *const kComponentName
utl::Validated< double > fDecayTime
utl::Validated< double > fWidth
double GetDecayDelayMean() const
The mean value of the delay time.
std::string const
Returns the message that identifies this component.
utl::Segment ComputeIntersectionWith(const utl::Line &line) const
Computes the intersection of line within the Scintillator.
double ComputeUndergroundGrammageFor(const utl::Line &l) const
Computes the amount of mass transversed until reaching the Scintillator.
std::map< std::string, std::string > IndexMap
const Module & GetModule() const
Retrieve the parent mdet::Module.
double ComputeDecayDelay() const
Computes a delay due to decay process.
utl::Plane ComputeFrontPlane() const
The plane where the front of the Scintillator lays.
bool Intersects(const utl::Plane &p, const utl::Line &l) const
Check for intersection.
double GetLocalSoilDensity() const
Simplest density distribution: constant value.
Scintillator(int sId, const det::VManager::IndexMap &parentMap, const Module &parent)
Constructs the Scintillator (obviously!).
Type
The type of file that we are acutally opening.
utl::CoordinateSystemPtr GetReferenceCoordinateSystem() const
The reference is the local coordinate system of mdet::Module.
utl::Validated< double > fHeight
utl::Segment ComputeUndergroundIntersectionOf(const utl::Line &line) const
Computes the intersection of line with the ground (until reaching the Scintillator).
friend void boost::checked_delete(T *) BOOST_NOEXCEPT
Friendship for destruction.
utl::Validated< double > fLocalSoilDensity
utl::Plane ComputePlaneHelper(double ext, double x, double y, double z) const
Helper to construct the different planes.
static const char *const kComponentId
The child the information from the parent upon construction.
A segment joins two points.