1 #ifndef _sevt_PMTSimData_h_
2 #define _sevt_PMTSimData_h_
4 #include <utl/ShadowPtr.h>
5 #include <utl/TimeStamp.h>
6 #include <utl/MultiTrace.h>
7 #include <sevt/StationConstants.h>
8 #include <utl/MultiTimeDistribution.h>
9 #include <utl/IteratorRange.h>
10 #include <sdet/PMTConstants.h>
11 #include <utl/ClassHelpers.h>
13 #include <boost/range/adaptor/map.hpp>
18 #warning DV remove EventIO friendship
20 class PMTSimData_ROOT;
#define OFFLINE_MAKE_BOTH_ITERATOR_RANGES_ARG(_Iterator_, _ConstIterator_, _NamePrefix_, _Arg_)
const utl::TimeDistributionD & GetFADCTraceD(const sdet::PMTConstants::PMTGain gain=sdet::PMTConstants::eHighGain, const StationConstants::SignalComponent source=StationConstants::eTotal) const
Get const FADC trace by gain and source.
pointer with built-in initialization, deletion, deep copying
BaseSignalsIterator BaseSignalsBegin()
Begin iterator over PMT base signal sources.
ConstFilterSignalsIterator FilterSignalsEnd() const
Const end iterator over available front-end filter sources.
const utl::TimeDistributionD & GetBaseSignal(const StationConstants::SignalComponent source=StationConstants::eTotal) const
Get simulated signal at the PMT base (before filter)
FADCTraceDIterator FADCTracesDEnd(const sdet::PMTConstants::PMTGain gain=sdet::PMTConstants::eHighGain)
End iterator over available FADC traces (you specify the gain)
boost::transform_iterator< LabeledObjectFunctor, typename MultiObjectContainer::iterator, LabeledObjectType > Iterator
utl::MultiTraceI::Iterator FADCTriggeredTraceIterator
Iterator over available high gain channel FADC sources.
utl::MultiTimeDistributionI::Iterator PETimeDistributionsIterator
Iterator over available PE time distribution sources. See utl::MultiTimeDistribution.
TimeTraceDMap fFADCTracesD[sdet::PMTConstants::eNumberOfGains]
utl::MultiTraceD::Iterator FADCTriggeredTraceDIterator
Iterator over available high gain channel FADC sources.
TimeDistribution< double > TimeDistributionD
class to hold data at PMT level
ConstFADCTriggeredTraceIterator FADCTriggeredTracesEnd(const utl::TimeStamp &stamp, const sdet::PMTConstants::PMTGain gain) const
void ClearBaseSignals()
Remove signal at PMT base.
#define OFFLINE_MAKE_BOTH_ITERATOR_RANGES(_Iterator_, _ConstIterator_, _NamePrefix_)
total (shower and background)
double GetTriggerVEMPeak(const bool isUUB) const
ConstFADCTriggeredTraceDIterator FADCTriggeredTracesDEnd(const utl::TimeStamp &stamp, const sdet::PMTConstants::PMTGain gain) const
PETimeDistributionsIterator PETimeDistributionsBegin()
Begin iterator over PE time distribution sources.
bool HasBaseSignal(const StationConstants::SignalComponent source=StationConstants::eTotal) const
Check if signal at PMT base already exists (optionally for a given source)
#define OFFLINE_MAKE_BOTH_ITERATOR_RANGES_ARG2(_Iterator_, _ConstIterator_, _NamePrefix_, _Arg1_, _Arg2_)
FilterSignalsIterator FilterSignalsEnd()
End iterator over available front-end filter sources.
std::map< utl::TimeStamp, utl::MultiTraceI > TimeTraceIMap
unsigned int fFADCTraceLength
ConstPETimeDistributionsIterator PETimeDistributionsBegin() const
Begin iterator over PE time distribution sources.
Histogram class for time distributions with suppressed empty bins.
double fCompatibilityTriggerVEMPeak
FADCTriggeredTraceIterator FADCTriggeredTracesBegin(const utl::TimeStamp &stamp, const sdet::PMTConstants::PMTGain gain)
ConstBaseSignalsIterator BaseSignalsEnd() const
Const end iterator over PMT base signal sources.
utl::MultiTimeDistributionI fPETimeDistribution
utl::MultiTraceI & GetMultiTrace(const utl::TimeStamp &stamp, const sdet::PMTConstants::PMTGain gain)
Utility function to retrieve the multi trace and throw an exception when it fails.
void SetCompatibilityTriggerVEMPeak(const double peak)
ConstFADCTriggeredTraceIterator FADCTriggeredTracesBegin(const utl::TimeStamp &stamp, const sdet::PMTConstants::PMTGain gain) const
utl::MultiTimeDistributionI::ConstIterator ConstPETimeDistributionsIterator
Const iterator over available PE time distribution sources.
utl::MultiTraceD::ConstIterator ConstFADCTriggeredTraceDIterator
boost::transform_iterator< LabeledObjectFunctor, typename MultiObjectContainer::const_iterator, LabeledObjectType > ConstIterator
ConstFADCTraceIterator FADCTracesEnd(const sdet::PMTConstants::PMTGain gain=sdet::PMTConstants::eHighGain) const
Const end iterator over available FADC traces (you specify the gain)
bool HasPETimeDistribution(const StationConstants::SignalComponent source=StationConstants::eTotal) const
Check if a PE release time distribution exists (optionally for a given source)
TimeDistribution< T > & GetTimeDistribution(const int label=0)
Returns the trace for /par source.
bool HasFADCTrace(StationConstants::SignalComponent source=StationConstants::eTotal) const
Check if FADC trace (prior to local trigger simulation) exists.
A TimeStamp holds GPS second and nanosecond for some event.
ConstFilterSignalsIterator FilterSignalsBegin() const
Const begin iterator over available front-end filter sources.
BaseSignalsIterator BaseSignalsEnd()
End iterator over PMT base signal sources.
utl::MultiTraceD & GetMultiTraceD(const utl::TimeStamp &stamp, const sdet::PMTConstants::PMTGain gain)
bool HasFilterSignal(const StationConstants::SignalComponent source=StationConstants::eTotal) const
Check if the signal at front-end filter already exists (optionally for a given source) ...
void MakeBaseSignal(const StationConstants::SignalComponent source=StationConstants::eTotal)
Create a TimeDistributionD representing signal at PMT base (optionally for a give source) ...
void SetFADCBinSize(const double binSize)
#define OFFLINE_CAST_CONST_METHOD(_Method_)
FADCTraceIterator FADCTracesBegin(const sdet::PMTConstants::PMTGain gain=sdet::PMTConstants::eHighGain)
Begin iterator over available FADC traces (you specify the gain)
PETimeDistributionsIterator PETimeDistributionsEnd()
End iterator over PE time distribution sources.
#define OFFLINE_MAKE_CONST_ITERATOR_RANGE(_ConstIterator_, _NamePrefix_)
utl::MultiTimeDistributionD::Iterator FilterSignalsIterator
Iterator over available front-end filter sources.
FADCTraceIterator FADCTracesEnd(const sdet::PMTConstants::PMTGain gain=sdet::PMTConstants::eHighGain)
End iterator over available FADC traces (you specify the gain)
utl::TimeDistributionD & GetFilterSignal(const StationConstants::SignalComponent source=StationConstants::eTotal)
get simulated signal after the filter, optionally for a given source.
utl::MultiTimeDistributionD::Iterator FADCTraceDIterator
Iterator over available high gain channel FADC sources.
utl::MultiTimeDistributionD fFADCTraceD[sdet::PMTConstants::eNumberOfGains]
utl::MultiTraceI::ConstIterator ConstFADCTriggeredTraceIterator
std::map< utl::TimeStamp, utl::MultiTraceI > TimeTraceMap
ConstBaseSignalsIterator BaseSignalsBegin() const
Const begin iterator over PMT base signal sources.
FADCTriggeredTraceIterator FADCTriggeredTracesEnd(const utl::TimeStamp &stamp, const sdet::PMTConstants::PMTGain gain)
utl::MultiTimeDistributionD fFilterSignal
decltype(std::begin(boost::adaptors::keys(TimeTraceMap()))) typedef TriggerTimeIterator
utl::MultiTimeDistributionD::Iterator BaseSignalsIterator
Iterator over available PMT base signal sources.
utl::MultiTimeDistributionI::Iterator FADCTraceIterator
Iterator over available high gain channel FADC sources.
Persistent SD PMTSimData using ROOT.
utl::MultiTimeDistributionI::ConstIterator ConstFADCTraceIterator
Const iterator over available high gain channel FADC sources.
void SetTriggerVEMPeak(const double peak)
Class to hold simulated data at PMT level.
Trace< T > & GetTrace(const int label=0)
Returns the trace for /par source.
total (shower and background)
ConstFADCTriggeredTraceDIterator FADCTriggeredTracesDBegin(const utl::TimeStamp &stamp, const sdet::PMTConstants::PMTGain gain) const
utl::MultiTimeDistributionD fBaseSignal
const utl::TimeDistributionD & GetFilterSignal(const StationConstants::SignalComponent source=StationConstants::eTotal) const
get const simulated signal after the filter
FADCTriggeredTraceDIterator FADCTriggeredTracesDEnd(const utl::TimeStamp &stamp, const sdet::PMTConstants::PMTGain gain)
FADCTriggeredTraceDIterator FADCTriggeredTracesDBegin(const utl::TimeStamp &stamp, const sdet::PMTConstants::PMTGain gain)
TimeDistribution< int > TimeDistributionI
TriggerTimeIterator TriggerTimesEnd() const
utl::MultiTimeDistributionI fFADCTrace[sdet::PMTConstants::eNumberOfGains]
void SetFADCTraceLength(const unsigned int traceLength)
const utl::TimeDistributionI & GetFADCTrace(const sdet::PMTConstants::PMTGain gain=sdet::PMTConstants::eHighGain, const StationConstants::SignalComponent source=StationConstants::eTotal) const
Get const FADC trace by gain and source.
utl::TimeDistributionD & GetFADCTraceD(const sdet::PMTConstants::PMTGain gain=sdet::PMTConstants::eHighGain, const StationConstants::SignalComponent source=StationConstants::eTotal)
Get FADC trace by gain and source (these are double-valued traces so we sidestep the truncation of di...
ConstPETimeDistributionsIterator PETimeDistributionsEnd() const
End iterator over PE time distribution sources.
void MakeFilterSignal(const StationConstants::SignalComponent source=StationConstants::eTotal)
Create a TimeDistributionD representing signal after front-end filter (optionally for a given source)...
utl::TimeDistributionI & GetPETimeDistribution(const StationConstants::SignalComponent source=StationConstants::eTotal)
Simulated photoelectron time distribution.
utl::TimeDistributionD & GetBaseSignal(const StationConstants::SignalComponent source=StationConstants::eTotal)
Get simulated signal at the PMT base, optionally for a given source.
ConstFADCTraceDIterator FADCTracesDEnd(const sdet::PMTConstants::PMTGain gain=sdet::PMTConstants::eHighGain) const
Const end iterator over available FADC traces (you specify the gain)
utl::TimeDistributionI & GetFADCTrace(const sdet::PMTConstants::PMTGain gain=sdet::PMTConstants::eHighGain, const StationConstants::SignalComponent source=StationConstants::eTotal)
Get FADC trace by gain and source.
const utl::TraceD & GetFADCTraceD(const utl::TimeStamp &stamp, const sdet::PMTConstants::PMTGain gain=sdet::PMTConstants::eHighGain, const StationConstants::SignalComponent source=StationConstants::eTotal) const
TimeTraceIMap fFADCTraces[sdet::PMTConstants::eNumberOfGains]
ConstFADCTraceDIterator FADCTracesDBegin(const sdet::PMTConstants::PMTGain gain=sdet::PMTConstants::eHighGain) const
Const begin iterator over available FADC traces (you specify the gain)
utl::MultiTimeDistributionD::ConstIterator ConstFADCTraceDIterator
Const iterator over available high gain channel FADC sources.
FADCTraceDIterator FADCTracesDBegin(const sdet::PMTConstants::PMTGain gain=sdet::PMTConstants::eHighGain)
Begin iterator over available FADC traces (you specify the gain)
utl::MultiTimeDistributionD::ConstIterator ConstBaseSignalsIterator
Const iterator over available PMT base signal sources.
TriggerTimeIterator TriggerTimesBegin() const
const utl::TimeDistributionI & GetPETimeDistribution(const StationConstants::SignalComponent source=StationConstants::eTotal) const
Simulated photoelectron time distribution.
bool HasLabel(const int label) const
const utl::TraceI & GetFADCTrace(const utl::TimeStamp &stamp, const sdet::PMTConstants::PMTGain gain=sdet::PMTConstants::eHighGain, const StationConstants::SignalComponent source=StationConstants::eTotal) const
utl::MultiTimeDistributionD::ConstIterator ConstFilterSignalsIterator
Const iterator over available front-end filter sources.
std::map< utl::TimeStamp, utl::MultiTraceD > TimeTraceDMap
void MakeFADCTrace(StationConstants::SignalComponent source=StationConstants::eTotal)
Make FADC trace prior to local trigger simulation.
ConstFADCTraceIterator FADCTracesBegin(const sdet::PMTConstants::PMTGain gain=sdet::PMTConstants::eHighGain) const
Const begin iterator over available FADC traces (you specify the gain)
FilterSignalsIterator FilterSignalsBegin()
Begin iterator over available front-end filter sources.
void MakePETimeDistribution(const StationConstants::SignalComponent source=StationConstants::eTotal)
Create a PE release time distribution (optionally for given source)