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

Electronic front-end for the modules. More...

#include "mdet/FrontEndSiPM.h"

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

Classes

class  Sampler
 Encapsulates the sampling logic. More...
 

Public Types

typedef std::vector< int > BrokenChannelContainer
 
typedef ChannelGroup::ConstIterator ChannelConstIterator
 Convenience typedef for const iterator over the contained mdet::Channel instances. More...
 

Public Member Functions

 AddIdMessage (o)
 
ChannelConstIterator ChannelsBegin () const
 Begin iterator over the contained channels. More...
 
ChannelConstIterator ChannelsEnd () const
 End iterator over the contained channels. More...
 
unsigned short GetADCBaseLineFluctuationHG () const
 
unsigned short GetADCBaseLineFluctuationLG () const
 Noise injection for binary and ADC channels. More...
 
unsigned short GetADCBaseLineOffsetHG () const
 
unsigned short GetADCBaseLineOffsetLG () const
 ADC channels offset. More...
 
unsigned short GetADCCounts (double value) const
 
const BrokenChannelContainerGetBrokenChannels () const
 List of broken channels. More...
 
unsigned int GetBufferLength () const
 Number of bins of the buffer. More...
 
double GetDelayBinaryADC () const
 
int GetId () const
 The id of this component. More...
 
const VManager::IndexMap & GetIdsMap () const
 The id identifying this component within its detector hierarhy. More...
 
short GetInjectDigitalNoiseBin () const
 
unsigned short GetInjectDigitalNoiseChannel () const
 
unsigned short GetInjectDigitalNoiseWidth () const
 
ULong64_t GetMask () const
 Size of the (cyclic) external memory buffer associated to each module. More...
 
double GetMeanSampleRatePeriod () const
 Mean electronic sample rate period. More...
 
const ModuleGetModule () const
 The module to which this FrontEndSiPM belongs. More...
 
unsigned int GetPostT1BufferLength () const
 Number of bins of the post-T1 buffer. More...
 
unsigned int GetPreT1BufferLength () const
 Number of bins of the (cyclic) pre-T1 buffer. More...
 
double GetSampleTimeADC () const
 ADC Sample Time and delay. More...
 
Sampler MakeSampler () const
 Create a new sampler object. More...
 
return o str ()
 

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[8]
 
static const char *const kComponentName = MHierarchyInfo::kComponentsNames[8]
 

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)
 

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
 

Private Types

typedef MComponentGroup
< FrontEndSiPM, ChannelSiPM,
det::ParentCreator >::Type 
ChannelGroup
 Type for the set of associated mdet::ChannelSiPM. More...
 

Private Member Functions

 FrontEndSiPM (int fId, const det::VManager::IndexMap &parentMap, const Module &parent)
 Constructs the electronic front-end. More...
 
double GetBaseLineFluctuationHG () const
 
double GetBaseLineFluctuationLG () const
 
const ChannelGroupGetChannels () const
 Retrieves the group of channels. More...
 
double GetDelayBinaryADCMean () const
 Delay between the binary trace and the ADC traces. More...
 
double GetDelayBinaryADCSigma () const
 
double GetDigitalBackGroundProbability () const
 Noise in digital channel. More...
 
double GetDigitalBackGroundWidthMean () const
 
double GetDigitalBackGroundWidthStdDev () const
 
double GetFalseRangeHiThreshold () const
 Hi end-point of the range where the voltage is taken as a false-value by the FPGA sampling process. More...
 
double GetStepADC () const
 ADC resolution. More...
 
double GetTrueRangeLowThreshold () const
 Low end-point of the range where the voltage is taken as a true-value by the FPGA sampling proccess. More...
 
void Update (bool invalidateData, bool invalidateComponents)
 Forward to channels and to base-class. More...
 
 ~FrontEndSiPM ()
 Destructor (!). More...
 

Private Attributes

utl::Validated< double > fBaseLineFluctuationHG
 
utl::Validated< double > fBaseLineFluctuationLG
 
utl::ShadowPtr
< BrokenChannelContainer
fBrokenChannels
 
ChannelGroup fChannels
 
utl::Validated< double > fDelayBinaryADCMean
 
utl::Validated< double > fDelayBinaryADCSigma
 
utl::Validated< double > fDigitalBackGroundProbability
 
utl::Validated< double > fDigitalBackGroundWidthMean
 
utl::Validated< double > fDigitalBackGroundWidthStdDev
 
utl::Validated< int > fExternalMemoryBufferLength
 
utl::Validated< double > fFalseRangeHiThreshold
 
utl::Validated< double > fMeanSampleRatePeriod
 
const ModulefModule
 
utl::Validated< int > fPostT1BufferLength
 
utl::Validated< int > fPreT1BufferLength
 
utl::Validated< double > fSampleTimeADC
 
utl::Validated< double > fStepADC
 
utl::Validated< double > fTrueRangeLowThreshold
 

Friends

template<class A1 , class A2 , class A3 , class A4 >
class det::ComponentGroup
 See mdet::Counter. More...
 
class Module
 Friendship to allow construction. Also access to channels (GetChannels). More...
 
class utl::ShadowPtr< FrontEndSiPM >
 Frienship to allow destruction. More...
 

Detailed Description

Electronic front-end for the modules.

Multi-channel electronic device meant to register the signal that came out from each SiPM.

Comment: This should not be done like this. Some abstraction is needed at FronEnd.h and there should be different extensions for PMT and SiPM. Over-riding/loading some methods should be enough. An even better approach might be to have an interface and two different branches of implementation.

Definition at line 35 of file FrontEndSiPM.h.

Member Typedef Documentation

Definition at line 77 of file FrontEndSiPM.h.

typedef ChannelGroup::ConstIterator mdet::FrontEndSiPM::ChannelConstIterator

Convenience typedef for const iterator over the contained mdet::Channel instances.

Definition at line 82 of file FrontEndSiPM.h.

Type for the set of associated mdet::ChannelSiPM.

Definition at line 42 of file FrontEndSiPM.h.

Constructor & Destructor Documentation

mdet::FrontEndSiPM::FrontEndSiPM ( int  fId,
const det::VManager::IndexMap parentMap,
const Module parent 
)
private

Constructs the electronic front-end.

Parameters
fIdThe 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.

This method is kept private; creation of these objects is not meant to be performed by client code. See the related friendship declaration.

See Also
mdet::MDectectorComponent::Type

Definition at line 26 of file FrontEndSiPM.cc.

mdet::FrontEndSiPM::~FrontEndSiPM ( )
inlineprivate

Destructor (!).

Definition at line 268 of file FrontEndSiPM.h.

Member Function Documentation

template<class C , class ManagerProvider >
det::DetectorComponent< C, ManagerProvider >::AddIdMessage ( )
inherited
ChannelConstIterator mdet::FrontEndSiPM::ChannelsBegin ( ) const
inline

Begin iterator over the contained channels.

Definition at line 87 of file FrontEndSiPM.h.

References fChannels.

Referenced by MdCounterSimulatorAG::MdCounterSimulator::GetTriggerTimeFromSD(), and UnderGrdInjectorAG::UnderGrdInjector::Run().

ChannelConstIterator mdet::FrontEndSiPM::ChannelsEnd ( ) const
inline

End iterator over the contained channels.

Definition at line 93 of file FrontEndSiPM.h.

References fChannels.

Referenced by MdCounterSimulatorAG::MdCounterSimulator::GetTriggerTimeFromSD(), and UnderGrdInjectorAG::UnderGrdInjector::Run().

unsigned short mdet::FrontEndSiPM::GetADCBaseLineFluctuationHG ( ) const
unsigned short mdet::FrontEndSiPM::GetADCBaseLineFluctuationLG ( ) const
unsigned short mdet::FrontEndSiPM::GetADCBaseLineOffsetHG ( ) const
unsigned short mdet::FrontEndSiPM::GetADCBaseLineOffsetLG ( ) const

ADC channels offset.

unsigned short mdet::FrontEndSiPM::GetADCCounts ( double  value) const
double mdet::FrontEndSiPM::GetBaseLineFluctuationHG ( ) const
private
double mdet::FrontEndSiPM::GetBaseLineFluctuationLG ( ) const
private
const FrontEndSiPM::BrokenChannelContainer & mdet::FrontEndSiPM::GetBrokenChannels ( ) const

List of broken channels.

See Also
GetBrokenChannels()

Definition at line 150 of file FrontEndSiPM.cc.

References fBrokenChannels.

Referenced by GetMask().

unsigned int mdet::FrontEndSiPM::GetBufferLength ( ) const
inline
const ChannelGroup& mdet::FrontEndSiPM::GetChannels ( ) const
inlineprivate

Retrieves the group of channels.

Definition at line 272 of file FrontEndSiPM.h.

References fChannels.

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(), GetBaseLineFluctuationHG(), GetBaseLineFluctuationLG(), mdet::Channel::GetDCGain(), mdet::Fiber::GetDecayTime(), mdet::Scintillator::GetDecayTime(), GetDelayBinaryADCMean(), GetDelayBinaryADCSigma(), GetDigitalBackGroundProbability(), GetDigitalBackGroundWidthMean(), GetDigitalBackGroundWidthStdDev(), mdet::ChannelSiPM::GetDiscriminatorGain(), mdet::ChannelSiPM::GetDiscriminatorHiLevel(), mdet::Channel::GetDiscriminatorHiLevel(), mdet::ChannelSiPM::GetDiscriminatorLowLevel(), mdet::Channel::GetDiscriminatorLowLevel(), mdet::ChannelSiPM::GetDiscriminatorThreshold(), mdet::ChannelSiPM::GetDiscriminatorTransitionTime(), mdet::Scintillator::GetEpsilon(), mdet::FrontEnd::GetFalseRangeHiThreshold(), 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(), mdet::Scintillator::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(), mdet::Scintillator::GetLength(), mdet::Scintillator::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(), GetMeanSampleRatePeriod(), mdet::BackEndSiPM::GetNumberOfChannelsToGroup(), mdet::Fiber::GetNumericalAperture(), mdet::Fiber::GetOnManifoldLength(), mdet::Module::GetPhotoDetector(), GetPostT1BufferLength(), mdet::FrontEnd::GetPostT1BufferLength(), mdet::ChannelSiPM::GetPreAmplifierGain(), mdet::ChannelSiPM::GetPreAmplifierTime(), 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(), 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(), GetStepADC(), mdet::Channel::GetThreshold(), mdet::FrontEnd::GetTrueRangeLowThreshold(), GetTrueRangeLowThreshold(), and mdet::Scintillator::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::FrontEndSiPM::GetDelayBinaryADC ( ) const
double mdet::FrontEndSiPM::GetDelayBinaryADCMean ( ) const
private

Delay between the binary trace and the ADC traces.

Definition at line 104 of file FrontEndSiPM.cc.

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

Referenced by GetDelayBinaryADC().

double mdet::FrontEndSiPM::GetDelayBinaryADCSigma ( ) const
private
double mdet::FrontEndSiPM::GetDigitalBackGroundProbability ( ) const
private

Noise in digital channel.

Definition at line 130 of file FrontEndSiPM.cc.

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

Referenced by GetInjectDigitalNoiseBin().

double mdet::FrontEndSiPM::GetDigitalBackGroundWidthMean ( ) const
private
double mdet::FrontEndSiPM::GetDigitalBackGroundWidthStdDev ( ) const
private
double mdet::FrontEndSiPM::GetFalseRangeHiThreshold ( ) const
private

Hi end-point of the range where the voltage is taken as a false-value by the FPGA sampling process.

To be a false-value a voltage needs to be lower than this value.

See Also
Sample
FPGASample

Definition at line 83 of file FrontEndSiPM.cc.

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

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
short mdet::FrontEndSiPM::GetInjectDigitalNoiseBin ( ) const
unsigned short mdet::FrontEndSiPM::GetInjectDigitalNoiseChannel ( ) const
unsigned short mdet::FrontEndSiPM::GetInjectDigitalNoiseWidth ( ) const
ULong64_t mdet::FrontEndSiPM::GetMask ( ) const

Size of the (cyclic) external memory buffer associated to each module.

See Also
GetPreT1BufferLength
GetPostT1BufferLength

The working strategy is signal collecting is goes like this. On a loop the signal is collected on the PreT1-buffer; when a significant signal is detected in the tank, a T1 signal is sent to the front end from the tank. Then the PreT1-buffer is frozen and the data collection proceeds to write on the PostT1-buffer. Upon reaching the end of this second stage buffer, the complete trace (pre+post) is stored in an external cyclic memory buffer, with room for n complete (pre+post) buffers (where n is the return value of this method). For typical values, this length (of the external memory) amounts to 10 seconds of data acquisition, taking into account the typical T1 rate from the tanks. On the other side, upon detection of a T3 configuration CDAS will ask the Counter / Modules for the traces collected at (within a tolerance) the T3 time. The external memory buffer will be scanned and those detected will be sent to CDAS. As a last remark, note that the tank promotes certain T1 times to T2, whereas the front end stores only T1 and does no filtering according to T2 promotion (the actual device was built without a mechanism to retrieve T2 promotion information from the tank to the front end). What CDAS promotes to T3 are only what was formerly promoted to T2, so in this external memory buffer certain (pre+post) buffers will be stored (temporarily, recall the cyclic nature) but CDAS will never request them. Get mask of broken channels.

See Also
GetMask()

Definition at line 159 of file FrontEndSiPM.cc.

References GetBrokenChannels().

double mdet::FrontEndSiPM::GetMeanSampleRatePeriod ( ) const

Mean electronic sample rate period.

This is the (mean) time elapsed between consecutive digital samples. Tipically in the order of ns.

See Also
MakeSampler

Definition at line 53 of file FrontEndSiPM.cc.

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

Referenced by MdMuonEstimatorAG::MdMuonEstimator::FillChannelsOn(), MdMuonCounterAG::MdMuonCounter::FillChannelsOn(), MdMuonCounterAG::MdMuonCounter::FillModuleRecData(), MdMuonEstimatorAG::MdMuonEstimator::GetSamplingTime(), MdMuonCounterAG::MdMuonCounter::GetTraceOffset(), MdCounterSimulatorAG::MdCounterSimulator::GetTriggerTimeFromSD(), MdMuonEstimatorAG::MdMuonEstimator::LoadPatternMatchesInModuleRecData(), otoa::MD2ADST::MakeModule(), MdOptoElectronicSimulatorAG::MdOptoElectronicSimulator::PlotChannel(), MdCounterSimulatorAG::MdCounterSimulator::PlotChannel(), MdOptoElectronicSimulatorAG::MdOptoElectronicSimulator::ProcessPulses(), MdCounterSimulatorAG::MdCounterSimulator::ProcessPulses(), MdOptoElectronicSimulatorAG::MdOptoElectronicSimulator::ProcessPulsesIntegrator(), MdCounterSimulatorAG::MdCounterSimulator::ProcessPulsesIntegrator(), UnderGrdInjectorAG::UnderGrdInjector::Run(), MdMuonCounterAG::MdMuonCounter::Run(), MdOptoElectronicSimulatorAG::MdOptoElectronicSimulator::SampleTrace(), MdCounterSimulatorAG::MdCounterSimulator::SampleTrace(), MdOptoElectronicSimulatorAG::MdOptoElectronicSimulator::SampleTraceADC(), and MdCounterSimulatorAG::MdCounterSimulator::SampleTraceADC().

const Module & mdet::FrontEndSiPM::GetModule ( ) const
unsigned int mdet::FrontEndSiPM::GetPostT1BufferLength ( ) const
unsigned int mdet::FrontEndSiPM::GetPreT1BufferLength ( ) const
double mdet::FrontEndSiPM::GetSampleTimeADC ( ) const
double mdet::FrontEndSiPM::GetStepADC ( ) const
private

ADC resolution.

Definition at line 97 of file FrontEndSiPM.cc.

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

Referenced by GetADCCounts().

double mdet::FrontEndSiPM::GetTrueRangeLowThreshold ( ) const
private

Low end-point of the range where the voltage is taken as a true-value by the FPGA sampling proccess.

To be a true-value a voltage needs to be higher than this value.

See Also
Sample
FPGASample

Definition at line 76 of file FrontEndSiPM.cc.

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

FrontEndSiPM::Sampler mdet::FrontEndSiPM::MakeSampler ( ) const
template<class C , class ManagerProvider >
void det::DetectorComponent< C, ManagerProvider >::Register ( utl::VValidated v)
inlineprotectedinherited
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
void mdet::FrontEndSiPM::Update ( bool  invalidateData,
bool  invalidateComponents 
)
private

Forward to channels and to base-class.

Definition at line 298 of file FrontEndSiPM.cc.

References fBrokenChannels, fChannels, det::DetectorComponent< C, ManagerProvider >::GetIdsMap(), and Update().

Friends And Related Function Documentation

template<class A1 , class A2 , class A3 , class A4 >
friend class det::ComponentGroup
friend

See mdet::Counter.

Definition at line 290 of file FrontEndSiPM.h.

friend class Module
friend

Friendship to allow construction. Also access to channels (GetChannels).

Definition at line 278 of file FrontEndSiPM.h.

friend class utl::ShadowPtr< FrontEndSiPM >
friend

Frienship to allow destruction.

This comes from the fact that the FrontEndSiPM is kept (in mdet::Module) within one of these.

Definition at line 287 of file FrontEndSiPM.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::FrontEndSiPM::fBaseLineFluctuationHG
mutableprivate

Definition at line 326 of file FrontEndSiPM.h.

Referenced by GetBaseLineFluctuationHG().

utl::Validated<double> mdet::FrontEndSiPM::fBaseLineFluctuationLG
mutableprivate

Definition at line 325 of file FrontEndSiPM.h.

Referenced by GetBaseLineFluctuationLG().

utl::ShadowPtr<BrokenChannelContainer> mdet::FrontEndSiPM::fBrokenChannels
mutableprivate

Definition at line 313 of file FrontEndSiPM.h.

Referenced by GetBrokenChannels(), and Update().

ChannelGroup mdet::FrontEndSiPM::fChannels
private
utl::Validated<double> mdet::FrontEndSiPM::fDelayBinaryADCMean
mutableprivate

Definition at line 317 of file FrontEndSiPM.h.

Referenced by GetDelayBinaryADCMean().

utl::Validated<double> mdet::FrontEndSiPM::fDelayBinaryADCSigma
mutableprivate

Definition at line 318 of file FrontEndSiPM.h.

Referenced by GetDelayBinaryADCSigma().

utl::Validated<double> mdet::FrontEndSiPM::fDigitalBackGroundProbability
mutableprivate

Definition at line 328 of file FrontEndSiPM.h.

Referenced by GetDigitalBackGroundProbability().

utl::Validated<double> mdet::FrontEndSiPM::fDigitalBackGroundWidthMean
mutableprivate

Definition at line 329 of file FrontEndSiPM.h.

Referenced by GetDigitalBackGroundWidthMean().

utl::Validated<double> mdet::FrontEndSiPM::fDigitalBackGroundWidthStdDev
mutableprivate

Definition at line 330 of file FrontEndSiPM.h.

Referenced by GetDigitalBackGroundWidthStdDev().

utl::Validated<int> mdet::FrontEndSiPM::fExternalMemoryBufferLength
mutableprivate

Definition at line 307 of file FrontEndSiPM.h.

utl::Validated<double> mdet::FrontEndSiPM::fFalseRangeHiThreshold
mutableprivate

Definition at line 311 of file FrontEndSiPM.h.

Referenced by GetFalseRangeHiThreshold().

utl::Validated<double> mdet::FrontEndSiPM::fMeanSampleRatePeriod
mutableprivate

Definition at line 294 of file FrontEndSiPM.h.

Referenced by GetMeanSampleRatePeriod().

const Module& mdet::FrontEndSiPM::fModule
private

Definition at line 332 of file FrontEndSiPM.h.

Referenced by GetModule().

utl::Validated<int> mdet::FrontEndSiPM::fPostT1BufferLength
mutableprivate

Definition at line 305 of file FrontEndSiPM.h.

Referenced by GetPostT1BufferLength().

utl::Validated<int> mdet::FrontEndSiPM::fPreT1BufferLength
mutableprivate

Definition at line 303 of file FrontEndSiPM.h.

Referenced by GetPreT1BufferLength().

utl::Validated<double> mdet::FrontEndSiPM::fSampleTimeADC
mutableprivate

Definition at line 315 of file FrontEndSiPM.h.

Referenced by GetSampleTimeADC().

utl::Validated<double> mdet::FrontEndSiPM::fStepADC
mutableprivate

Definition at line 316 of file FrontEndSiPM.h.

Referenced by GetStepADC().

utl::Validated<double> mdet::FrontEndSiPM::fTrueRangeLowThreshold
mutableprivate

Definition at line 309 of file FrontEndSiPM.h.

Referenced by GetTrueRangeLowThreshold().

const char *const mdet::FrontEndSiPM::kComponentId = MHierarchyInfo::kComponentsIds[8]
static

Definition at line 75 of file FrontEndSiPM.h.

const char *const mdet::FrontEndSiPM::kComponentName = MHierarchyInfo::kComponentsNames[8]
static

Definition at line 73 of file FrontEndSiPM.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.