List of all members | Public Types | Public Member Functions | Static Public Member Functions | Protected Types | Protected Attributes | Private Types | Private Member Functions | Private Attributes
SdPMTSimulatorOG::SdPMTSimulator Class Reference

PMT simulation from PE release times to PE charge distribution. More...

#include <SdPMTSimulator.h>

Inheritance diagram for SdPMTSimulatorOG::SdPMTSimulator:
Inheritance graph
[legend]

Public Types

enum  ResultFlag { eSuccess, eFailure, eBreakLoop, eContinueLoop }
 Flag returned by module methods to the RunController. More...
 
enum  VersionInfoType {
  eFilename = 1, eRevisionNumber = 2, eDate = 3, eTime = 4,
  eLastEditor = 5
}
 Different types of version info that can be retrieved from GetVersionInfo. More...
 

Public Member Functions

fwk::VModule::ResultFlag Finish () override
 Finish: invoked at end of the run (NOT end of the event) More...
 
utl::StopwatchGetStopwatch ()
 
const utl::StopwatchGetStopwatch () const
 
std::string GetVersionInfo (const VersionInfoType v) const
 Retrieve different sorts of module version info. More...
 
fwk::VModule::ResultFlag Init () override
 Initialize: invoked at beginning of run (NOT beginning of event) More...
 
void InitTiming ()
 
fwk::VModule::ResultFlag Run (evt::Event &event) override
 Run: invoked once per event. More...
 
ResultFlag RunWithTiming (evt::Event &event)
 
virtual ~SdPMTSimulator ()=default
 

Static Public Member Functions

static std::string GetResultFlagByName (const ResultFlag flag)
 

Protected Types

enum  InfoLevel { eInfoNone = 0, eInfoFinal = 1, eInfoIntermediate = 2, eInfoDebug = 3 }
 

Protected Attributes

int fInfoLevel = 0
 

Private Types

typedef std::set
< sevt::StationConstants::SignalComponent
FundamentalComponents
 

Private Member Functions

void ConvertPEToBaseSignal (const double scaling, const utl::TimeDistributionI &pe, utl::TimeDistributionD &baseSignal)
 
void FillPulseShape (const utl::TabulatedFunction &rawPulse)
 
 REGISTER_MODULE ("SdPMTSimulatorOG", SdPMTSimulator)
 
void SimulateSaturation (utl::TimeDistributionD &baseSignal, const utl::TimeDistributionD &totalBaseSignal)
 

Private Attributes

CLHEP::RandGeneral * fChargeDistribution = nullptr
 
double fCurrent2VoltageMultiplier = 0
 
FundamentalComponents fFundamentalComponents
 
double fKFactor = 0
 
double fMaxCharge = 0
 
utl::TabulatedFunction fMeanPulseShape
 
double fMinCharge = 0
 
double fPMTGain = 0
 
double fPulseMaxTime = 0
 
utl::RandomEnginefRandomEngine = nullptr
 
utl::TabulatedFunctionfSaturationFunction = nullptr
 

Detailed Description

PMT simulation from PE release times to PE charge distribution.

This simulation takes PE release times from the tank simulation and produces a distribution of charge (in electrons) as a function of time. The charge includes the PMT gain (G), so that, for example, 1 photoelectron produces a total charge of G electrons.

Traces are broken down by component. Note, however, that the total signal may not be exactly equal to the sum of the signal components. This is because each component is simulated independently (including the total), and the simulation involves drawing random numbers to scale the pulse shape for each photoelectron. We do it this way, rather than summing all components to make the total, because some components include other components. For example, the first-bounce component includes contributions from all particle types. Accounting for this in the sum would require hardwiring such that summing takes place only over exclusive components, which is an option for future development.

Author
T. Paul
Date
1 March 2004

Definition at line 49 of file SdPMTSimulatorOG/SdPMTSimulator.h.

Member Typedef Documentation

Definition at line 84 of file SdPMTSimulatorOG/SdPMTSimulator.h.

Member Enumeration Documentation

enum fwk::VModule::InfoLevel
protectedinherited
Enumerator
eInfoNone 
eInfoFinal 
eInfoIntermediate 
eInfoDebug 

Definition at line 125 of file VModule.h.

enum fwk::VModule::ResultFlag
inherited

Flag returned by module methods to the RunController.

Enumerator
eSuccess 

Report success to RunController.

eFailure 

Report failure to RunController, causing RunController to terminate execution.

eBreakLoop 

Break current loop. It works for nested loops too!

eContinueLoop 

Skip remaining modules in the current loop and continue with next iteration of the loop.

Definition at line 60 of file VModule.h.

Different types of version info that can be retrieved from GetVersionInfo.

Enumerator
eFilename 
eRevisionNumber 
eDate 
eTime 
eLastEditor 

Definition at line 110 of file VModule.h.

Constructor & Destructor Documentation

virtual SdPMTSimulatorOG::SdPMTSimulator::~SdPMTSimulator ( )
virtualdefault

Member Function Documentation

void SdPMTSimulator::ConvertPEToBaseSignal ( const double  scaling,
const utl::TimeDistributionI pe,
utl::TimeDistributionD baseSignal 
)
private
void SdPMTSimulator::FillPulseShape ( const utl::TabulatedFunction rawPulse)
private
VModule::ResultFlag SdPMTSimulator::Finish ( )
overridevirtual

Finish: invoked at end of the run (NOT end of the event)

This method is for things that should be done at the end of the run (for example, closing files or writing out histograms) {You must override this method in your concrete module}

Implements fwk::VModule.

Definition at line 321 of file SdPMTSimulatorOG/SdPMTSimulator.cc.

References io::eSuccess.

std::string fwk::VModule::GetResultFlagByName ( const ResultFlag  flag)
staticinherited
utl::Stopwatch& fwk::VModule::GetStopwatch ( )
inlineinherited

Definition at line 106 of file VModule.h.

References fwk::VModule::fStopwatch.

const utl::Stopwatch& fwk::VModule::GetStopwatch ( ) const
inlineinherited

Definition at line 107 of file VModule.h.

References fwk::VModule::fStopwatch.

std::string fwk::VModule::GetVersionInfo ( const VersionInfoType  v) const
inherited
VModule::ResultFlag SdPMTSimulator::Init ( )
overridevirtual

Initialize: invoked at beginning of run (NOT beginning of event)

This method is for things that should be done once at the beginning of a run (for example, booking histograms, performing calculations that need to be done only once, initializing parameters) {You must override this method in your concrete module}

Implements fwk::VModule.

Definition at line 31 of file SdPMTSimulatorOG/SdPMTSimulator.cc.

References RdGeoCeLDFFitter::c, cevt::StationConstants::eLastSource, ERROR, io::eSuccess, cevt::StationConstants::eTotal, sevt::StationConstants::GetSignalComponentName(), INFO, and galactic::volt.

void fwk::VModule::InitTiming ( )
inlineinherited

Definition at line 95 of file VModule.h.

References fwk::VModule::fStopwatch, and utl::Stopwatch::Reset().

SdPMTSimulatorOG::SdPMTSimulator::REGISTER_MODULE ( "SdPMTSimulatorOG"  ,
SdPMTSimulator   
)
private
VModule::ResultFlag SdPMTSimulator::Run ( evt::Event event)
overridevirtual

Run: invoked once per event.

This method is for things that should be done once per event {You must override this method in your concrete module}

Implements fwk::VModule.

Definition at line 214 of file SdPMTSimulatorOG/SdPMTSimulator.cc.

References sdet::PMTConstants::eAnyType, ERROR, io::eSuccess, cevt::StationConstants::eTotal, sevt::StationConstants::eTotalNoSaturation, sdet::PMTConstants::eWaterCherenkovSmall, and evt::Event::HasSEvent().

ResultFlag fwk::VModule::RunWithTiming ( evt::Event event)
inlineinherited
void SdPMTSimulator::SimulateSaturation ( utl::TimeDistributionD baseSignal,
const utl::TimeDistributionD totalBaseSignal 
)
private

Definition at line 199 of file SdPMTSimulatorOG/SdPMTSimulator.cc.

References utl::TimeDistribution< T >::At(), and max.

Member Data Documentation

CLHEP::RandGeneral* SdPMTSimulatorOG::SdPMTSimulator::fChargeDistribution = nullptr
private

Definition at line 72 of file SdPMTSimulatorOG/SdPMTSimulator.h.

double SdPMTSimulatorOG::SdPMTSimulator::fCurrent2VoltageMultiplier = 0
private

Definition at line 80 of file SdPMTSimulatorOG/SdPMTSimulator.h.

FundamentalComponents SdPMTSimulatorOG::SdPMTSimulator::fFundamentalComponents
private

Definition at line 85 of file SdPMTSimulatorOG/SdPMTSimulator.h.

int fwk::VModule::fInfoLevel = 0
protectedinherited
double SdPMTSimulatorOG::SdPMTSimulator::fKFactor = 0
private

Definition at line 75 of file SdPMTSimulatorOG/SdPMTSimulator.h.

double SdPMTSimulatorOG::SdPMTSimulator::fMaxCharge = 0
private

Definition at line 77 of file SdPMTSimulatorOG/SdPMTSimulator.h.

utl::TabulatedFunction SdPMTSimulatorOG::SdPMTSimulator::fMeanPulseShape
private

Definition at line 71 of file SdPMTSimulatorOG/SdPMTSimulator.h.

double SdPMTSimulatorOG::SdPMTSimulator::fMinCharge = 0
private

Definition at line 76 of file SdPMTSimulatorOG/SdPMTSimulator.h.

double SdPMTSimulatorOG::SdPMTSimulator::fPMTGain = 0
private

Definition at line 74 of file SdPMTSimulatorOG/SdPMTSimulator.h.

double SdPMTSimulatorOG::SdPMTSimulator::fPulseMaxTime = 0
private

Definition at line 69 of file SdPMTSimulatorOG/SdPMTSimulator.h.

utl::RandomEngine* SdPMTSimulatorOG::SdPMTSimulator::fRandomEngine = nullptr
private

Definition at line 82 of file SdPMTSimulatorOG/SdPMTSimulator.h.

utl::TabulatedFunction* SdPMTSimulatorOG::SdPMTSimulator::fSaturationFunction = nullptr
private

Definition at line 79 of file SdPMTSimulatorOG/SdPMTSimulator.h.


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

, generated on Tue Sep 26 2023.