1 #ifndef _SdPMTSimulatorOG_SdPMTSimulator_h_
2 #define _SdPMTSimulatorOG_SdPMTSimulator_h_
4 #include <fwk/VModule.h>
5 #include <utl/TabulatedFunction.h>
6 #include <utl/TimeDistribution-fwd.h>
7 #include <utl/config.h>
9 #include <sevt/SEvent.h>
10 #include <sevt/StationConstants.h>
11 #include <CLHEP/Random/Randomize.h>
22 namespace SdPMTSimulatorOG {
std::set< sevt::StationConstants::SignalComponent > FundamentalComponents
fwk::VModule::ResultFlag Finish() override
Finish: invoked at end of the run (NOT end of the event)
Class to hold collection (x,y) points and provide interpolation between them.
utl::TabulatedFunction fMeanPulseShape
Histogram class for time distributions with suppressed empty bins.
REGISTER_MODULE("SdPMTSimulatorOG", SdPMTSimulator)
Wraps the random number engine used to generate distributions.
fwk::VModule::ResultFlag Init() override
Initialize: invoked at beginning of run (NOT beginning of event)
fwk::VModule::ResultFlag Run(evt::Event &event) override
Run: invoked once per event.
void ConvertPEToBaseSignal(const double scaling, const utl::TimeDistributionI &pe, utl::TimeDistributionD &baseSignal)
CLHEP::RandGeneral * fChargeDistribution
utl::RandomEngine * fRandomEngine
void FillPulseShape(const utl::TabulatedFunction &rawPulse)
PMT simulation from PE release times to PE charge distribution.
ResultFlag
Flag returned by module methods to the RunController.
virtual ~SdPMTSimulator()=default
FundamentalComponents fFundamentalComponents
utl::TabulatedFunction * fSaturationFunction
double fCurrent2VoltageMultiplier
void SimulateSaturation(utl::TimeDistributionD &baseSignal, const utl::TimeDistributionD &totalBaseSignal)