List of all members | Public Member Functions | Public Attributes | Static Public Attributes | Protected Types | Protected Member Functions | Protected Attributes | Static Protected Attributes | Private Member Functions | Private Attributes | Friends
mdet::Scintillator Class Reference

Actual muon-sensitive objects. More...

#include "mdet/Scintillator.h"

Inheritance diagram for mdet::Scintillator:
Inheritance graph
[legend]

Public Member Functions

 AddIdMessage (o)
 
double ComputeDecayDelay () const
 Computes a delay due to decay process. More...
 
double GetDecayDelayMean () const
 The mean value of the delay time. More...
 
double GetDecayDelayStdDev () const
 The standard deviation fo the delay time. More...
 
int GetId () const
 The id of this component. More...
 
const VManager::IndexMap & GetIdsMap () const
 The id identifying this component within its detector hierarhy. More...
 
utl::CoordinateSystemPtr GetLocalCoordinateSystem () const
 Local system based on position and configured rotations. More...
 
const ModuleGetModule () const
 Retrieve the parent mdet::Module. More...
 
utl::Point GetPosition () const
 
return o str ()
 
Geometrical body-like interface.

The intention of these methods is to hide to the clients the actual shape of the Scintillator, while providing the necessary functions to query the geometrical characteristics of the Scintillator.

For example, it was discussed to have composite scintillators, built from multiple strips. These composite ones would make a single unit as a detecting device. On the other hand the principal quantities that may be used are shape independent, like the lenght of the path of a particle on the scint manterial: it seems better, so, to hide the actual shape. In fact, the current box-shaped Scintillators aren't actually exactly box-shaped because the Scinttillators have a wedge were the mdet::Fiber is buried into. So precisely the shape of the mdet::Scintillator is obtained as substraction of the mdet::Fiber volume from that of the mdet::Scintillator.

bool Contains (const utl::Point &point) const
 Answers if point lies within the Scintillator. More...
 
bool IntersectedBy (const utl::Line &line) const
 Answers if line crosses the body of the Scintillator. More...
 
utl::Segment ComputeIntersectionWith (const utl::Line &line) const
 Computes the intersection of line within the Scintillator. More...
 
utl::Segment ComputeUndergroundIntersectionOf (const utl::Line &line) const
 Computes the intersection of line with the ground (until reaching the Scintillator). More...
 
double ComputeUndergroundGrammageFor (const utl::Line &l) const
 Computes the amount of mass transversed until reaching the Scintillator. More...
 
double GetArea () const
 Compute Scintillator's total area in square metres. More...
 
template<class V >
VVisitShape (V &v) const
 Callback method for inspecting shape-aware properties. More...
 

Public Attributes

std::string const
 Returns the message that identifies this component. More...
 
const DetectorUserData< C > & const
 Retrieve the user custom data. More...
 

Static Public Attributes

static const char *const kComponentId = MHierarchyInfo::kComponentsIds[3]
 
static const char *const kComponentName = MHierarchyInfo::kComponentsNames[3]
 

Protected Types

typedef std::string CoordinateType
 Simple internal typedef to emulate the actual enumeration via a type handled in the configuration mechanism. More...
 

Protected Member Functions

template<typename T , template< typename > class P>
T & GetData (P< T > &d, const std::string &p) const
 Common utility function for configuration. More...
 
template<typename T >
T & GetData (T &d, const std::string &p) const
 Common utility function for configuration. More...
 
void Register (utl::VValidated &v)
 Register the field so as to allow handling it. More...
 
s<< " ]";}DetectorComponent(int
i, const VManager::IndexMap
&parentMap):fId(i), fIdsMap(parentMap){Init();}DetectorComponent(const
int i):fId(i){Init();}virtual
~DetectorComponent(){}virtual
void Update(const bool
invalidateData, const bool){for(FieldsContainer::iterator
i=fFields.begin(), e=fFields.end();i!=e;++i)(*i) -> 
SetValid (false)
 
Specific datum accesor components.

In the most commeon situation deriving clases won't override these methods (and so the actual retrieval will be forwarded to the expected method in the Config template argument. Nevertheless they are made virtual in order to allow posible customization by subclasses. This customization could be done in principle in the Get method, basing the decision on the tag, but that would be pretty ugly.

virtual double GetComponent1 () const
 First component of the position vector. More...
 
virtual double GetComponent2 () const
 Second component of the position vector. More...
 
virtual double GetComponent3 () const
 Third component of the position vector. More...
 
virtual double GetEulerPhi () const
 First Euler angle for rotation over (original) z. More...
 
virtual double GetEulerTheta () const
 Second Euler angle for rotation over (intermediate) x. More...
 
virtual double GetEulerPsi () const
 Third Euler angle for rotation over (intermediate) z. More...
 
virtual CoordinateType GetCoordinateType () const
 Coordinate type. More...
 

Protected Attributes

template<typename T1 , typename T2 , template< typename, typename > class P>
T1 & const
 Doubly-templated variation of common utility. More...
 
template<typename T >
T & const
 Specialization for utl::Validated. More...
 
void const
 Message that identifies the component. More...
 
s<< "id="<< GetId()<< " [";for(It
i=GetIdsMap().begin(), e=GetIdsMap().end();i!=e;++i)
s<< " "<< i-> first<< "="<< i-> 
second
 

Static Protected Attributes

static const std::string kComponent1Tag
 Tag for first vector component in config. More...
 
static const std::string kComponent2Tag
 Tag for second vector component in config. More...
 
static const std::string kComponent3Tag
 Tag for third vector component in config. More...
 
static const std::string kCoordinateTypeTag
 
static const std::string kEulerPhiTag
 Tag for first rotation's Euler angle in config. More...
 
static const std::string kEulerPsiTag
 Tag for third rotation's Euler angle in config. More...
 
static const std::string kEulerThetaTag
 Tag for second rotation's Euler angle in config. More...
 

Private Member Functions

double GetDecayTime () const
 Characteristic decay time. More...
 
double GetEpsilon () const
 FP comparison limit. More...
 
double GetLocalSoilDensity () const
 Simplest density distribution: constant value. More...
 
utl::CoordinateSystemPtr GetReferenceCoordinateSystem () const
 The reference is the local coordinate system of mdet::Module. More...
 
bool Intersects (const utl::Plane &p, const utl::Line &l) const
 Check for intersection. More...
 
bool IsCloseTo (double a, double b) const
 FP Comparison criteria. More...
 
 Scintillator (int sId, const det::VManager::IndexMap &parentMap, const Module &parent)
 Constructs the Scintillator (obviously!). More...
 
 ~Scintillator ()
 
Internal part of the body-like geometrical interface.
template<class Container >
void IntersectionHelper (Container &v, const utl::Line &l, utl::Plane(Scintillator::*ComputePlane)() const ) const
 Helper function for another specific member. More...
 
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. More...
 
bool OnSide (const utl::Plane &sidePlane, const utl::Line &line) const
 Indicates whether the line hits the Scintillator on the side contained in sidePlane. More...
 
utl::Plane ComputeGroundPlane () const
 The (inifite) plane that coincides with the ground. More...
 
utl::Plane ComputeTopPlane () const
 The plane where the top of the Scintillator lays. More...
 
utl::Plane ComputeBottomPlane () const
 The plane where the bottom of the Scintillator lays. More...
 
utl::Plane ComputeFrontPlane () const
 The plane where the front of the Scintillator lays. More...
 
utl::Plane ComputeBackPlane () const
 The plane where the back of the Scintillator lays. More...
 
utl::Plane ComputeRightPlane () const
 The plane where the right of the Scintillator lays. More...
 
utl::Plane ComputeLeftPlane () const
 The plane where the left of the Scintillator lays. More...
 
utl::Plane ComputePlaneHelper (double ext, double x, double y, double z) const
 Helper to construct the different planes. More...
 
double GetLength () const
 Length of the strip (y direction in the local coordinate system). More...
 
double GetWidth () const
 Width of the strip (x direction in the local coordinate system). More...
 
double GetHeight () const
 Height of the strip (z direction in the local coordinate system). More...
 

Private Attributes

utl::Validated< double > fDecayTime
 
utl::Validated< double > fEpsilon
 
utl::Validated< double > fHeight
 
utl::Validated< double > fLength
 
utl::Validated< double > fLocalSoilDensity
 
const ModulefModule
 
utl::Validated< double > fWidth
 

Friends

template<class T >
void boost::checked_delete (T *) BOOST_NOEXCEPT
 Friendship for destruction. More...
 
struct det::ComponentUpdater
 See mdet::Counter. More...
 
class det::MPositionable< Scintillator >
 Frienship for GetData callback. More...
 
struct det::ParentCreator
 Friendship to allow creation (or call it construction). More...
 

Detailed Description

Actual muon-sensitive objects.

In short, the Scintillators are made of an special plastic which has a response (light) when an impinging muon reach one of them. Actually they are sensible to negative particles. At last, they represent a body of this material, a body that's arranged within a given Module.

Todo:
Check some library for geometrical stuff (ROOT or some other CERN related stuff). Anyway, it seems better to hide that concern to the clients of this class.
Author
Rodolfo Federico Gamarra
Date
09 Jan 2009

Definition at line 46 of file MDetector/Scintillator.h.

Member Typedef Documentation

typedef std::string det::MPositionable< Scintillator >::CoordinateType
protectedinherited

Simple internal typedef to emulate the actual enumeration via a type handled in the configuration mechanism.

Definition at line 157 of file MPositionable.h.

Constructor & Destructor Documentation

mdet::Scintillator::Scintillator ( int  sId,
const det::VManager::IndexMap parentMap,
const Module parent 
)
private

Constructs the Scintillator (obviously!).

Parameters
sIdThe identifier to be used.
parentMapThe identifiers of the parent within the hierarchy.
parentThe parent mdet::Module.

A reference to the parent is kept in this class and part of the construction is delegated to the first super-class.

See Also
mdet::MDectectorComponent::Type

Definition at line 41 of file MDetector/Scintillator.cc.

References fDecayTime, fHeight, fLength, fLocalSoilDensity, fWidth, and det::DetectorComponent< C, ManagerProvider >::Register().

mdet::Scintillator::~Scintillator ( )
inlineprivate

Definition at line 253 of file MDetector/Scintillator.h.

Member Function Documentation

template<class C , class ManagerProvider >
det::DetectorComponent< C, ManagerProvider >::AddIdMessage ( )
inherited
utl::Plane mdet::Scintillator::ComputeBackPlane ( ) const
private

The plane where the back of the Scintillator lays.

Computes the (infinite) plane where the back of the Scintillator (y direction in the local coordinate system) lays in the negative side of the axis up to half of its length.

Definition at line 411 of file MDetector/Scintillator.cc.

References ComputePlaneHelper(), and GetLength().

Referenced by ComputeIntersectionWith(), and IntersectedBy().

utl::Plane mdet::Scintillator::ComputeBottomPlane ( ) const
private

The plane where the bottom of the Scintillator lays.

Computes the (infinite) plane where the bottom of the Scintillator (z direction in the local coordinate system) lays in the negative side of the axis up to half of its height.

Definition at line 403 of file MDetector/Scintillator.cc.

References ComputePlaneHelper(), and GetHeight().

Referenced by ComputeIntersectionWith(), and IntersectedBy().

double mdet::Scintillator::ComputeDecayDelay ( ) const
utl::Plane mdet::Scintillator::ComputeFrontPlane ( ) const
private

The plane where the front of the Scintillator lays.

Computes the (infinite) plane where the front of the Scintillator (y direction in the local coordinate system) lays up to half of its length.

Definition at line 419 of file MDetector/Scintillator.cc.

References ComputePlaneHelper(), and GetLength().

Referenced by ComputeIntersectionWith(), and IntersectedBy().

utl::Plane mdet::Scintillator::ComputeGroundPlane ( ) const
private
utl::Segment mdet::Scintillator::ComputeIntersectionWith ( const utl::Line line) const
utl::Plane mdet::Scintillator::ComputeLeftPlane ( ) const
private

The plane where the left of the Scintillator lays.

Computes the (infinite) plane where the left of the Scintillator (x direction in the local coordinate system) lays in the negative side of the axis up to half of its width.

Definition at line 435 of file MDetector/Scintillator.cc.

References ComputePlaneHelper(), and GetWidth().

Referenced by ComputeIntersectionWith(), and IntersectedBy().

utl::Plane mdet::Scintillator::ComputePlaneHelper ( double  ext,
double  x,
double  y,
double  z 
) const
private

Helper to construct the different planes.

Parameters
extThe magnitud of the extent in the direction, position of the anchor point.
xFactor for x direction.
yIdem for y.
zIdem for z..

Definition at line 443 of file MDetector/Scintillator.cc.

References RdGeoCeLDFFitter::a, det::MPositionable< Scintillator >::GetLocalCoordinateSystem(), and TelescopeSimulatorKG::RTFunctions::Plane().

Referenced by ComputeBackPlane(), ComputeBottomPlane(), ComputeFrontPlane(), ComputeLeftPlane(), ComputeRightPlane(), and ComputeTopPlane().

utl::Plane mdet::Scintillator::ComputeRightPlane ( ) const
private

The plane where the right of the Scintillator lays.

Computes the (infinite) plane where the right of the Scintillator (x direction in the local coordinate system) lays up to half of its width.

Definition at line 427 of file MDetector/Scintillator.cc.

References ComputePlaneHelper(), and GetWidth().

Referenced by ComputeIntersectionWith(), and IntersectedBy().

utl::Plane mdet::Scintillator::ComputeTopPlane ( ) const
private

The plane where the top of the Scintillator lays.

Computes the (infinite) plane where the top of the Scintillator (z direction in the local coordinate system) lays up to half of its height.

Definition at line 395 of file MDetector/Scintillator.cc.

References ComputePlaneHelper(), and GetHeight().

Referenced by ComputeIntersectionWith(), and IntersectedBy().

double mdet::Scintillator::ComputeUndergroundGrammageFor ( const utl::Line l) const

Computes the amount of mass transversed until reaching the Scintillator.

Given the soil density distribution, this method computes the transversed mass, from the ground to the scint.

See Also
IntersectedBy
ComputeGroundIntersectionOf

Definition at line 332 of file MDetector/Scintillator.cc.

References ComputeUndergroundIntersectionOf(), utl::Segment::GetLength(), and GetLocalSoilDensity().

utl::Segment mdet::Scintillator::ComputeUndergroundIntersectionOf ( const utl::Line line) const

Computes the intersection of line with the ground (until reaching the Scintillator).

Computes the segment (of the given line) that joins the ground with the Scintillator (in that order, from the ground to the Scint).

See Also
IntersectedBy

Definition at line 317 of file MDetector/Scintillator.cc.

References ComputeGroundPlane(), ComputeIntersectionWith(), utl::Segment::GetBegin(), and utl::Intersection().

Referenced by ComputeUndergroundGrammageFor().

bool mdet::Scintillator::Contains ( const utl::Point point) const
double mdet::Scintillator::GetArea ( ) const
virtual double det::MPositionable< Scintillator >::GetComponent1 ( ) const
protectedvirtualinherited

First component of the position vector.

It could be x or r, according to the type determined by GetCoordinateType.

See Also
utl::Vector
virtual double det::MPositionable< Scintillator >::GetComponent2 ( ) const
protectedvirtualinherited

Second component of the position vector.

See Also
GetComponent1
virtual double det::MPositionable< Scintillator >::GetComponent3 ( ) const
protectedvirtualinherited

Third component of the position vector.

See Also
GetComponent1
virtual CoordinateType det::MPositionable< Scintillator >::GetCoordinateType ( ) const
protectedvirtualinherited

Coordinate type.

See Also
utl::Vector::CoordinateType
template<class C , class ManagerProvider >
template<typename T , template< typename > class P>
T& det::DetectorComponent< C, ManagerProvider >::GetData ( P< T > &  d,
const std::string &  p 
) const
inlineprotectedinherited

Common utility function for configuration.

Retrieves data from the provided (via this class' template parameter) Manager instance and goes on with initialization.

Parameters
dAn object of type P<T> wrapping the real of type T.
pProperty name. The template class P must provide:
  • A bool-like interface (operator ! and a conversion (possibly implicit to bool) to query initialization.
  • An T& operator*() to retrieve the actual data.
  • P& operator=(T* const ptr) for proper initialization.
  • As of the wrapped class T, it must be default constructible.

This is fullfilled by, for instance, utl::ShadowPtr as P and built-in types for T.

Definition at line 191 of file DetectorComponent.h.

References det::DetectorComponent< C, ManagerProvider >::d, and G4StationSimulatorOG::p.

Referenced by mdet::Channel::GetAbsoluteError(), mdet::BackEndSiPM::GetADCOffset(), mdet::BackEndSiPM::GetADCPar1(), mdet::BackEndSiPM::GetADCPar2(), mdet::BackEndSiPM::GetADCPar3(), mdet::BackEndSiPM::GetADCPar4(), mdet::BackEndSiPM::GetADCPar5(), mdet::BackEndSiPM::GetADCPar6(), mdet::BackEndSiPM::GetADCSaturationDown(), mdet::BackEndSiPM::GetADCSaturationUp(), mdet::Module::GetAreaKind(), mdet::Counter::GetAssociatedTankId(), mdet::Fiber::GetAttenuationAmplitudeA(), mdet::Fiber::GetAttenuationAmplitudeASiPM(), mdet::Fiber::GetAttenuationAmplitudeB(), mdet::Fiber::GetAttenuationAmplitudeBSiPM(), mdet::Fiber::GetAttenuationLengthA(), mdet::Fiber::GetAttenuationLengthASiPM(), mdet::Fiber::GetAttenuationLengthB(), mdet::Fiber::GetAttenuationLengthBSiPM(), mdet::Fiber::GetAttenuationReference(), mdet::Fiber::GetAttenuationReferenceEnergy(), mdet::Fiber::GetAttenuationReferenceThickness(), mdet::Module::GetBackgroundMuonsFlux(), mdet::FrontEndSiPM::GetBaseLineFluctuationHG(), mdet::FrontEndSiPM::GetBaseLineFluctuationLG(), mdet::Channel::GetDCGain(), mdet::Fiber::GetDecayTime(), GetDecayTime(), mdet::FrontEndSiPM::GetDelayBinaryADCMean(), mdet::FrontEndSiPM::GetDelayBinaryADCSigma(), mdet::FrontEndSiPM::GetDigitalBackGroundProbability(), mdet::FrontEndSiPM::GetDigitalBackGroundWidthMean(), mdet::FrontEndSiPM::GetDigitalBackGroundWidthStdDev(), mdet::ChannelSiPM::GetDiscriminatorGain(), mdet::ChannelSiPM::GetDiscriminatorHiLevel(), mdet::Channel::GetDiscriminatorHiLevel(), mdet::ChannelSiPM::GetDiscriminatorLowLevel(), mdet::Channel::GetDiscriminatorLowLevel(), mdet::ChannelSiPM::GetDiscriminatorThreshold(), mdet::ChannelSiPM::GetDiscriminatorTransitionTime(), GetEpsilon(), mdet::FrontEnd::GetFalseRangeHiThreshold(), mdet::FrontEndSiPM::GetFalseRangeHiThreshold(), mdet::ChannelSiPM::GetFastShaperGain(), mdet::ChannelSiPM::GetFastShaperTime(), mdet::Channel::GetFeedbackResistance(), mdet::BackEndSiPM::GetFirstAdderOffset(), mdet::BackEndSiPM::GetFirstAdderPar1(), mdet::BackEndSiPM::GetFirstAdderPar2(), mdet::BackEndSiPM::GetFirstAdderPar3(), mdet::BackEndSiPM::GetFirstAdderPar4(), mdet::BackEndSiPM::GetFirstAdderPar5(), mdet::BackEndSiPM::GetFirstAdderSaturationDown(), mdet::BackEndSiPM::GetFirstAdderSaturationUp(), GetHeight(), mdet::Channel::GetHighCutoffFrequency(), mdet::BackEndSiPM::GetHighGainAmplifierAdjustmentFactor(), mdet::BackEndSiPM::GetHighGainAmplifierOffset(), mdet::BackEndSiPM::GetHighGainAmplifierPar1(), mdet::BackEndSiPM::GetHighGainAmplifierPar2(), mdet::BackEndSiPM::GetHighGainAmplifierPar3(), mdet::BackEndSiPM::GetHighGainAmplifierPar4(), mdet::BackEndSiPM::GetHighGainAmplifierPar5(), mdet::BackEndSiPM::GetHighGainAmplifierPar6(), mdet::BackEndSiPM::GetHighGainAmplifierPar7(), mdet::BackEndSiPM::GetHighGainAmplifierPar8(), mdet::BackEndSiPM::GetHighGainAmplifierPar9(), mdet::BackEndSiPM::GetHighGainAmplifierSaturationDown(), mdet::BackEndSiPM::GetHighGainAmplifierSaturationUp(), mdet::Channel::GetInitialIntervalLength(), mdet::Channel::GetInvertingInputResistance(), mdet::Channel::GetIterationsNumber(), GetLength(), GetLocalSoilDensity(), mdet::Channel::GetLowCutoffFrequency(), mdet::BackEndSiPM::GetLowGainAmplifierAdjustmentFactor(), mdet::BackEndSiPM::GetLowGainAmplifierOffset(), mdet::BackEndSiPM::GetLowGainAmplifierPar1(), mdet::BackEndSiPM::GetLowGainAmplifierPar2(), mdet::BackEndSiPM::GetLowGainAmplifierPar3(), mdet::BackEndSiPM::GetLowGainAmplifierPar4(), mdet::BackEndSiPM::GetLowGainAmplifierPar5(), mdet::BackEndSiPM::GetLowGainAmplifierPar6(), mdet::BackEndSiPM::GetLowGainAmplifierPar7(), mdet::BackEndSiPM::GetLowGainAmplifierPar8(), mdet::BackEndSiPM::GetLowGainAmplifierPar9(), mdet::BackEndSiPM::GetLowGainAmplifierSaturationDown(), mdet::BackEndSiPM::GetLowGainAmplifierSaturationUp(), mdet::Channel::GetMaxNumberOfErrors(), mdet::FrontEnd::GetMeanSampleRatePeriod(), mdet::FrontEndSiPM::GetMeanSampleRatePeriod(), mdet::BackEndSiPM::GetNumberOfChannelsToGroup(), mdet::Fiber::GetNumericalAperture(), mdet::Fiber::GetOnManifoldLength(), mdet::Module::GetPhotoDetector(), mdet::FrontEndSiPM::GetPostT1BufferLength(), mdet::FrontEnd::GetPostT1BufferLength(), mdet::ChannelSiPM::GetPreAmplifierGain(), mdet::ChannelSiPM::GetPreAmplifierTime(), mdet::FrontEndSiPM::GetPreT1BufferLength(), mdet::FrontEnd::GetPreT1BufferLength(), mdet::SiPM::GetPulseAmplitude1Mean(), mdet::SiPM::GetPulseAmplitude1StdDev(), mdet::SiPM::GetPulseAmplitude2Mean(), mdet::SiPM::GetPulseAmplitude2StdDev(), mdet::SiPM::GetPulseAmplitude3Mean(), mdet::SiPM::GetPulseAmplitude3StdDev(), mdet::Pixel::GetPulseAmplitudeMean(), mdet::Pixel::GetPulseAmplitudeStdDev(), mdet::Pixel::GetPulseChargeMean(), mdet::Pixel::GetPulseChargeStdDev(), mdet::Pixel::GetPulseParametersCorrelation(), mdet::Pixel::GetPulseParametrization(), mdet::SiPM::GetPulseRelevantWidth(), mdet::Pixel::GetPulseRelevantWidth(), mdet::Pixel::GetPulseStdDevMean(), mdet::Pixel::GetPulseStdDevStdDev(), mdet::SiPM::GetPulseTime1Mean(), mdet::SiPM::GetPulseTime1StdDev(), mdet::SiPM::GetPulseTime2Mean(), mdet::SiPM::GetPulseTime2StdDev(), mdet::SiPM::GetPulseTime3Mean(), mdet::SiPM::GetPulseTime3StdDev(), mdet::SiPM::GetPulseTime4Mean(), mdet::SiPM::GetPulseTime4StdDev(), mdet::Fiber::GetRadius(), mdet::Fiber::GetRefractionIndex(), mdet::Channel::GetResponseTime(), mdet::FrontEnd::GetSampleRatePeriodJitter(), mdet::FrontEndSiPM::GetSampleTimeADC(), mdet::BackEndSiPM::GetSecondAdderOffset(), mdet::BackEndSiPM::GetSecondAdderPar1(), mdet::BackEndSiPM::GetSecondAdderPar2(), mdet::BackEndSiPM::GetSecondAdderPar3(), mdet::BackEndSiPM::GetSecondAdderPar4(), mdet::BackEndSiPM::GetSecondAdderPar5(), mdet::BackEndSiPM::GetSecondAdderSaturationDown(), mdet::BackEndSiPM::GetSecondAdderSaturationUp(), mdet::Channel::GetSignalShiftMean(), mdet::Channel::GetSignalShiftStdDev(), mdet::BackEndSiPM::GetSimplifiedGainHG(), mdet::BackEndSiPM::GetSimplifiedGainLG(), mdet::BackEndSiPM::GetSimplifiedTime(), mdet::Channel::GetSlewRate(), mdet::FrontEndSiPM::GetStepADC(), mdet::Channel::GetThreshold(), mdet::FrontEnd::GetTrueRangeLowThreshold(), mdet::FrontEndSiPM::GetTrueRangeLowThreshold(), and GetWidth().

template<class C , class ManagerProvider >
template<typename T >
T& det::DetectorComponent< C, ManagerProvider >::GetData ( T &  d,
const std::string &  p 
) const
inlineprotectedinherited

Common utility function for configuration.

Overload without wrapping parameter: directly gets the datum as parameter. Typically invoked with T equal to a primitive type (int, double, so on).

Definition at line 232 of file DetectorComponent.h.

double mdet::Scintillator::GetDecayDelayMean ( ) const

The mean value of the delay time.

This method is provided for completeness, so as to allow the user to query the particular mean value.

For the computation of an specific value the user has to call the "Compute", which will give a value acording the actual distribution followed by the processes involved.

See Also
ComputeDecayDelay

Definition at line 130 of file MDetector/Scintillator.cc.

References GetDecayTime().

Referenced by GetDecayDelayStdDev().

double mdet::Scintillator::GetDecayDelayStdDev ( ) const

The standard deviation fo the delay time.

See Also
GetDecayDelayMean

Definition at line 139 of file MDetector/Scintillator.cc.

References GetDecayDelayMean().

double mdet::Scintillator::GetDecayTime ( ) const
private

Characteristic decay time.

Definition at line 103 of file MDetector/Scintillator.cc.

References fDecayTime, and det::DetectorComponent< C, ManagerProvider >::GetData().

Referenced by ComputeDecayDelay(), and GetDecayDelayMean().

double mdet::Scintillator::GetEpsilon ( ) const
private

FP comparison limit.

Definition at line 110 of file MDetector/Scintillator.cc.

References fEpsilon, and det::DetectorComponent< C, ManagerProvider >::GetData().

Referenced by IsCloseTo().

virtual double det::MPositionable< Scintillator >::GetEulerPhi ( ) const
protectedvirtualinherited

First Euler angle for rotation over (original) z.

virtual double det::MPositionable< Scintillator >::GetEulerPsi ( ) const
protectedvirtualinherited

Third Euler angle for rotation over (intermediate) z.

virtual double det::MPositionable< Scintillator >::GetEulerTheta ( ) const
protectedvirtualinherited

Second Euler angle for rotation over (intermediate) x.

double mdet::Scintillator::GetHeight ( ) const
private

Height of the strip (z direction in the local coordinate system).

See Also
GetLegth

Definition at line 87 of file MDetector/Scintillator.cc.

References fHeight, and det::DetectorComponent< C, ManagerProvider >::GetData().

Referenced by ComputeBottomPlane(), ComputeTopPlane(), Contains(), and VisitShape().

template<class C , class ManagerProvider >
int det::DetectorComponent< C, ManagerProvider >::GetId ( ) const
inlineinherited

The id of this component.

Definition at line 105 of file DetectorComponent.h.

References det::DetectorComponent< C, ManagerProvider >::fId.

Referenced by G4StationSimulatorOG::G4StationConstruction::AssembleUMD(), MuonCounterViewerAG::ScintBuilder::Box(), MdLDFFinderAG::Likelihood2::CalculateCandidateLikelihood(), MdLDFFinderAG::Likelihood3::CalculateCandidateLikelihood(), MdLDFFinderAG::Likelihood::CalculateCandidateLikelihood(), MdLDFFinderAG::MdLDFFinder::CalculateChi2(), MdLDFFinderAG::MdLDFFinder::FillModulesShowerPlaneDistances(), EdepSimulatorAG::PrimaryGenerator::GeneratePrimaries(), mdet::PMT::GetCrossTalk(), det::DetectorComponent< C, ManagerProvider >::Init(), MdOptoElectronicSimulatorAG::MdOptoElectronicSimulator::OptoElectronics(), MdOptoElectronicSimulatorAG::MdOptoElectronicSimulator::PlotChannel(), MdCounterSimulatorAG::MdCounterSimulator::PlotChannel(), MdOptoElectronicSimulatorAG::MdOptoElectronicSimulator::PlotIntegrator(), MdCounterSimulatorAG::MdCounterSimulator::PlotIntegrator(), MdOptoElectronicSimulatorAG::MdOptoElectronicSimulator::ProcessPulses(), MdCounterSimulatorAG::MdCounterSimulator::ProcessPulses(), MdOptoElectronicSimulatorAG::MdOptoElectronicSimulator::ProcessPulsesIntegrator(), MdCounterSimulatorAG::MdCounterSimulator::ProcessPulsesIntegrator(), MdEventSelectorAG::MdEventSelector::RejectTimeOutliers(), EdepSimulatorAG::EdepSimulator::Run(), MuonCounterViewerAG::MuonCounterViewer::Run(), MdCounterSimulatorAG::MdCounterSimulator::RunFromMEventScintillatorSimulated(), MdLDFFinderAG::MdLDFFinder::SetLdfResiduals(), MdOptoElectronicSimulatorAG::MdOptoElectronicSimulator::SimulateElectronics(), MdCounterSimulatorAG::MdCounterSimulator::SimulateElectronics(), and MdCounterSimulatorAG::MdCounterSimulator::SimulatePulses().

template<class C , class ManagerProvider >
const VManager::IndexMap& det::DetectorComponent< C, ManagerProvider >::GetIdsMap ( ) const
inlineinherited
double mdet::Scintillator::GetLength ( ) const
private

Length of the strip (y direction in the local coordinate system).

Up to now the mdet::Scintillator have the simplest (and currently actual) possible shape. They are strips, so under currently normal conditions the following holds:

  • Lenght is the largest extent (~m).
  • Width lies in between (~dm).
  • Height is the shortest (~cm).

Definition at line 71 of file MDetector/Scintillator.cc.

References fLength, and det::DetectorComponent< C, ManagerProvider >::GetData().

Referenced by ComputeBackPlane(), ComputeFrontPlane(), Contains(), GetArea(), and VisitShape().

utl::CoordinateSystemPtr det::MPositionable< Scintillator >::GetLocalCoordinateSystem ( ) const
inherited

Local system based on position and configured rotations.

Referenced by ComputePlaneHelper(), and Contains().

double mdet::Scintillator::GetLocalSoilDensity ( ) const
private

Simplest density distribution: constant value.

Definition at line 95 of file MDetector/Scintillator.cc.

References fLocalSoilDensity, and det::DetectorComponent< C, ManagerProvider >::GetData().

Referenced by ComputeUndergroundGrammageFor().

const Module & mdet::Scintillator::GetModule ( ) const
utl::Point det::MPositionable< Scintillator >::GetPosition ( ) const
inherited

This object position, based the configured components and the reference coordinate system. The return type is by-copy as of the general recommendation due to Bugzilla's report #307. Also this topic was referred by in 'Point copy vs reference, GetPosition and report #307.', see auger-offline-devel archives for January 2009.

Referenced by Contains().

utl::CoordinateSystemPtr mdet::Scintillator::GetReferenceCoordinateSystem ( ) const
privatevirtual

The reference is the local coordinate system of mdet::Module.

The local coordinate system of the scintillator is in the center of it.

See Also
mdet::Module::GetLocalCoordinateSystem

Implements det::MPositionable< Scintillator >.

Definition at line 55 of file MDetector/Scintillator.cc.

References det::MPositionable< Config >::GetLocalCoordinateSystem(), and GetModule().

double mdet::Scintillator::GetWidth ( ) const
private

Width of the strip (x direction in the local coordinate system).

See Also
GetLength

Definition at line 79 of file MDetector/Scintillator.cc.

References fWidth, and det::DetectorComponent< C, ManagerProvider >::GetData().

Referenced by ComputeLeftPlane(), ComputeRightPlane(), Contains(), GetArea(), and VisitShape().

bool mdet::Scintillator::InExtent ( double  ext,
const utl::Vector pLocal,
const utl::Vector normal 
) const
private

Checks if the vector lies within Scintillator's extent for the given axis.

Parameters
extExtent of the Scintillator in the desidered direction.
pLocalVector with origin on the local coordinate system.
normalNormal vector to perform the projection.

Definition at line 376 of file MDetector/Scintillator.cc.

References RdGeoCeLDFFitter::c, and IsCloseTo().

Referenced by Contains().

bool mdet::Scintillator::IntersectedBy ( const utl::Line line) const
template<class Container >
void mdet::Scintillator::IntersectionHelper ( Container &  v,
const utl::Line l,
utl::Plane(Scintillator::*)() const  ComputePlane 
) const
private

Helper function for another specific member.

Parameters
vContainer of for the selected planes (passed by non-const reference).
lLine wrt which things are computed.
ComputePlaneMember pointer for delayed plane calculation.
See Also
IntersectionWith

Definition at line 300 of file MDetector/Scintillator.cc.

References utl::Intersection(), OnSide(), and G4StationSimulatorOG::p.

Referenced by ComputeIntersectionWith().

bool mdet::Scintillator::Intersects ( const utl::Plane p,
const utl::Line l 
) const
private

Check for intersection.

Checks whether there is a single point intersection.

Definition at line 464 of file MDetector/Scintillator.cc.

References det::DetectorComponent< C, ManagerProvider >::d, utl::Line::GetDirection(), utl::Plane::GetNormal(), and IsCloseTo().

Referenced by OnSide().

bool mdet::Scintillator::IsCloseTo ( double  a,
double  b 
) const
private

FP Comparison criteria.

Definition at line 453 of file MDetector/Scintillator.cc.

References GetEpsilon(), and max.

Referenced by InExtent(), and Intersects().

bool mdet::Scintillator::OnSide ( const utl::Plane sidePlane,
const utl::Line line 
) const
private

Indicates whether the line hits the Scintillator on the side contained in sidePlane.

Definition at line 217 of file MDetector/Scintillator.cc.

References Contains(), utl::Intersection(), and Intersects().

Referenced by IntersectedBy(), and IntersectionHelper().

template<class C , class ManagerProvider >
void det::DetectorComponent< C, ManagerProvider >::Register ( utl::VValidated v)
inlineprotectedinherited

Register the field so as to allow handling it.

Definition at line 298 of file DetectorComponent.h.

References det::DetectorComponent< C, ManagerProvider >::fFields.

Referenced by mdet::ChannelSiPM::ChannelSiPM(), mdet::Counter::Counter(), mdet::Module::Module(), and Scintillator().

template<class C , class ManagerProvider >
s<< " ]"; } DetectorComponent(int i, const VManager::IndexMap& parentMap) : fId(i), fIdsMap(parentMap) { Init(); } DetectorComponent(const int i) : fId(i) { Init(); } virtual ~DetectorComponent() { } virtual void Update(const bool invalidateData, const bool ) { for (FieldsContainer::iterator i = fFields.begin(), e = fFields.end(); i != e; ++i) (*i)-> det::DetectorComponent< C, ManagerProvider >::SetValid ( false  )
protectedinherited
template<class C , class ManagerProvider >
return o det::DetectorComponent< C, ManagerProvider >::str ( )
inherited
template<class V >
V& mdet::Scintillator::VisitShape ( V v) const
inline

Callback method for inspecting shape-aware properties.

Parameters
vCallback object (see details).
Returns
The argument v to allow function call chaining.

As stated, the intention is to hide the actual shape of the Scitillator via the previous functions. Nevertheless, it seems reasonable to give a way to inspect shape-dependant properties just in case it's neccesary and those function aren't enough.

The template argument is assumed to provide shape-aware methods, which are called with the Scintillator and those (hidden) shape-dependant properties:

  • Box(const Scintillator& s, double w, double l, double h) where s is the scint and w its width, l its length and h its height.

For example, you can define some class like

class ShapeAware {
public:
// Box callback function.
void Box(const mdet::Scintillator& s, double w, double l, double h) {
double localResult;
// Box aware stuff.
fResult = localResult; // Keep the result in the field.
}
// Let's say your return a double.
double GetResult() { return fResult; }
private:
double fResult;
// your other data: you may have to define other methods to fill these fields,
// in order to have that information available in the callback methods.
};

then you can use it like

ShapeAware sa;
//... stuff
// Pass the sa to the scintillator, then chain the GetResultFunction call.
double result = s.VisitShape(sa).GetResult();
See Also
Boost's Variant library or Visitor pattern literature (http://en.wikipedia.org/wiki/Visitor_pattern or Design Patterns: Elements of Reusable Object-Oriented Software by Gamma et al).

Other possibilities:

  • build a oo-hierarchy but that would be too much.
  • leave public those properties (putting a nice comment).
  • build (instead of templating) interfaces to be called with shape-dependant parameters.

Other possibilities: The visit shape could be defined to return what would be returned by the called function. To do this (i) another template argument may be added or (ii) a traits type could be supposed to be included in V. The first choice has two drawbacks: this VisitShape method has to assume a certain cv-qualification and the calls to VisitShape have to include the return type specialized in the template args (the return type should be the first template arg, so it isn't neccesary to specify the type of the callback object). The second choice requires to define the typedef. Another, different, posssibility is to add a (templated) output argument. At last, returning the arg seemed to be the most general choice.

Definition at line 186 of file MDetector/Scintillator.h.

References GetHeight(), GetLength(), and GetWidth().

Referenced by mdet::Fiber::GetOnScintillatorLength(), MuonCounterViewerAG::MuonCounterViewer::Run(), and G4StationSimulatorOG::G4StationConstruction::SetUMDParameters().

Friends And Related Function Documentation

template<class T >
void boost::checked_delete ( T *  )
friend

Friendship for destruction.

Depends on det::ComponentGroup innards.

friend struct det::ComponentUpdater
friend

See mdet::Counter.

Definition at line 270 of file MDetector/Scintillator.h.

friend class det::MPositionable< Scintillator >
friend

Frienship for GetData callback.

Definition at line 257 of file MDetector/Scintillator.h.

friend struct det::ParentCreator
friend

Friendship to allow creation (or call it construction).

Definition at line 261 of file MDetector/Scintillator.h.

Member Data Documentation

template<class C , class ManagerProvider >
T & det::DetectorComponent< T >::const
inherited
Initial value:
{
std::ostringstream o

Returns the message that identifies this component.

To make unambiguous the call in the wrapped version.

This method is just a convenience informative method, not meant to be used for control-flow logic (please do not parse this!).

See Also
AddIdMessage(std::ostringstream& s) const.

In the wrapped version, when wrapped type is itself a wrapping template, the compiler has a hard time to decide what to do. So this function was created with the logic formerly contained in the non-wrapped version.

Related to this, see http://www.gotw.ca/publications/mill17.htm.

Definition at line 125 of file DetectorComponent.h.

template<class C , class ManagerProvider >
const DetectorUserData<C>& det::DetectorComponent< C, ManagerProvider >::const
inherited
Initial value:
{
if (!fUserData) {
std::string dataMngr;
GetDataNoWrap(dataMngr, "userData");
DetectorUserData<C>* const t = new DetectorUserData<C>();
DetectorUserData<C>::Load(t, dataMngr);
fUserData = t;
}
return *fUserData

Retrieve the user custom data.

Definition at line 137 of file DetectorComponent.h.

template<class C , class ManagerProvider >
template<typename T1 , typename T2 , template< typename, typename > class P>
T1& det::DetectorComponent< C, ManagerProvider >::const
protectedinherited
Initial value:
{
return GetDataUnwrap<T1>(d, p)

Doubly-templated variation of common utility.

Needed to be added in response to the addition of a 2nd policy parameter to utl::ShadowPtr.

Definition at line 203 of file DetectorComponent.h.

template<class C , class ManagerProvider >
template<typename T >
T& det::DetectorComponent< C, ManagerProvider >::const
protectedinherited
Initial value:
{
if (! d.IsValid()) {
GetDataNoWrap(d.Get(), p);
d.SetValid();
}
return d.Get()

Specialization for utl::Validated.

To make unambiguous the call in the wrapped version.

In the wrapped version, when wrapped type is itself a wrapping template, the compiler has a hard time to decide what to do. So this function was created with the logic formerly contained in the non-wrapped version.

Related to this, see http://www.gotw.ca/publications/mill17.htm.

Definition at line 216 of file DetectorComponent.h.

template<class C , class ManagerProvider >
void det::DetectorComponent< C, ManagerProvider >::const
protectedinherited
Initial value:
{
typedef det::VManager::IndexMap::const_iterator It

Message that identifies the component.

Streams-out a (human-readeable) message identifying the component in the hierarchy. It's meant to be used only in messages sent to the user as a way to identify the component that isssues the message (be it an information, warning or error one).

Maybe it'd have been more idiomatic to overload operator<< but I feel that it would be misleading to "stream out" a DetectorComponent.

Definition at line 250 of file DetectorComponent.h.

utl::Validated<double> mdet::Scintillator::fDecayTime
mutableprivate

Definition at line 417 of file MDetector/Scintillator.h.

Referenced by GetDecayTime(), and Scintillator().

utl::Validated<double> mdet::Scintillator::fEpsilon
mutableprivate

Definition at line 419 of file MDetector/Scintillator.h.

Referenced by GetEpsilon().

utl::Validated<double> mdet::Scintillator::fHeight
mutableprivate

Definition at line 413 of file MDetector/Scintillator.h.

Referenced by GetHeight(), and Scintillator().

utl::Validated<double> mdet::Scintillator::fLength
mutableprivate

Definition at line 409 of file MDetector/Scintillator.h.

Referenced by GetLength(), and Scintillator().

utl::Validated<double> mdet::Scintillator::fLocalSoilDensity
mutableprivate

Definition at line 415 of file MDetector/Scintillator.h.

Referenced by GetLocalSoilDensity(), and Scintillator().

const Module& mdet::Scintillator::fModule
private

Definition at line 421 of file MDetector/Scintillator.h.

Referenced by GetModule().

utl::Validated<double> mdet::Scintillator::fWidth
mutableprivate

Definition at line 411 of file MDetector/Scintillator.h.

Referenced by GetWidth(), and Scintillator().

const std::string det::MPositionable< Scintillator >::kComponent1Tag
staticprotectedinherited

Tag for first vector component in config.

Definition at line 145 of file MPositionable.h.

const std::string det::MPositionable< Scintillator >::kComponent2Tag
staticprotectedinherited

Tag for second vector component in config.

Definition at line 147 of file MPositionable.h.

const std::string det::MPositionable< Scintillator >::kComponent3Tag
staticprotectedinherited

Tag for third vector component in config.

Definition at line 149 of file MPositionable.h.

const char *const mdet::Scintillator::kComponentId = MHierarchyInfo::kComponentsIds[3]
static

Definition at line 54 of file MDetector/Scintillator.h.

const char *const mdet::Scintillator::kComponentName = MHierarchyInfo::kComponentsNames[3]
static

Definition at line 52 of file MDetector/Scintillator.h.

const std::string det::MPositionable< Scintillator >::kCoordinateTypeTag
staticprotectedinherited

Tag for coordinate type selection. This tag defines the meaning of the three components.

See Also
utl::BasicVector::CoordinateType

Definition at line 143 of file MPositionable.h.

const std::string det::MPositionable< Scintillator >::kEulerPhiTag
staticprotectedinherited

Tag for first rotation's Euler angle in config.

Definition at line 151 of file MPositionable.h.

const std::string det::MPositionable< Scintillator >::kEulerPsiTag
staticprotectedinherited

Tag for third rotation's Euler angle in config.

Definition at line 155 of file MPositionable.h.

const std::string det::MPositionable< Scintillator >::kEulerThetaTag
staticprotectedinherited

Tag for second rotation's Euler angle in config.

Definition at line 153 of file MPositionable.h.

template<class C , class ManagerProvider >
s<< "id=" << GetId() << " ["; for (It i = GetIdsMap().begin(), e = GetIdsMap().end(); i != e; ++i) s << " " << i-> first<< "=" << i-> det::DetectorComponent< C, ManagerProvider >::second
protectedinherited

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

, generated on Tue Sep 26 2023.