PandaRoot
BSEmcAbsWaveformSimulator Class Referenceabstract

Abstract base class for waveform simulator. More...

#include <BSEmcAbsWaveformSimulator.h>

Inheritance diagram for BSEmcAbsWaveformSimulator:
BSEmcFullStackedWaveformSimulator BSEmcMultiWaveformSimulator

Public Member Functions

virtual BSEmcWaveformSimulate (BSEmcWaveformData *t_wfData, TClonesArray *t_arrayToStore=nullptr)
 
virtual BSEmcWaveformSimulateSinglePulse (Double_t t_hitEnergy, Double_t t_hitTime, TClonesArray *t_arrayToStore=nullptr, Int_t t_detId=-1, Int_t t_trackId=-1, Int_t t_hitIndex=-1)
 
virtual BSEmcWaveformGet1GevWaveform ()=0
 
virtual void GetAbsoluteTimeInterval (BSEmcWaveformData *t_wfData, Double_t &t_startTime, Double_t &t_activeTime)=0
 
virtual Double_t GetTimeBeforeFirstHit (BSEmcWaveformData *)
 
virtual Double_t GetScale ()=0
 
virtual Double_t GetTotalScale ()
 
virtual Double_t GetSampleRate ()
 
virtual void AddModifier (BSEmcAbsWaveformModifier *t_wfModifier)
 
void SetHitBranchName (const TString &t_branchname)
 

Protected Member Functions

 BSEmcAbsWaveformSimulator ()
 
 BSEmcAbsWaveformSimulator (Double_t sampleRate)
 
virtual BSEmcWaveformMakeWaveform (BSEmcWaveformData *t_wfData, TClonesArray *t_arrayToStore=nullptr)=0
 
virtual BSEmcWaveformMakeSingleWaveform (Double_t t_hitEnergy, Double_t t_hitTime, TClonesArray *t_arrayToStore=nullptr, Int_t t_detId=-1, Int_t t_trackId=-1, Int_t t_hitIndex=-1)=0
 
void SyncWithADCClock (Double_t &t_time)
 
virtual BSEmcWaveformCallModifiers (BSEmcWaveform *t_wf)
 
 ClassDef (BSEmcAbsWaveformSimulator, 3)
 

Protected Attributes

TList fListOfWaveformModifiers {}
 
Double_t fSampleRate {-1}
 sampling rate of SADC. In 1/ns More...
 
TString fHitBranchName {""}
 

Detailed Description

Abstract base class for waveform simulator.

Author
Ph. Mahlberg mahlb.nosp@m.erg@.nosp@m.hiskp.nosp@m..uni.nosp@m.-bonn.nosp@m..de

Definition at line 22 of file BSEmcAbsWaveformSimulator.h.

Constructor & Destructor Documentation

◆ BSEmcAbsWaveformSimulator() [1/2]

BSEmcAbsWaveformSimulator::BSEmcAbsWaveformSimulator ( )
inlineprotected

Definition at line 74 of file BSEmcAbsWaveformSimulator.h.

74 : fSampleRate(0){};
Double_t fSampleRate
sampling rate of SADC. In 1/ns

◆ BSEmcAbsWaveformSimulator() [2/2]

BSEmcAbsWaveformSimulator::BSEmcAbsWaveformSimulator ( Double_t  sampleRate)
inlineprotected

Definition at line 75 of file BSEmcAbsWaveformSimulator.h.

References MakeSingleWaveform(), and MakeWaveform().

75 : fSampleRate(sampleRate){};
Double_t fSampleRate
sampling rate of SADC. In 1/ns

Member Function Documentation

◆ AddModifier()

virtual void BSEmcAbsWaveformSimulator::AddModifier ( BSEmcAbsWaveformModifier t_wfModifier)
inlinevirtual

Definition at line 69 of file BSEmcAbsWaveformSimulator.h.

References fListOfWaveformModifiers.

69 { fListOfWaveformModifiers.Add(t_wfModifier); }

◆ CallModifiers()

virtual BSEmcWaveform* BSEmcAbsWaveformSimulator::CallModifiers ( BSEmcWaveform t_wf)
inlineprotectedvirtual

Reimplemented in BSEmcMultiWaveformSimulator.

Definition at line 84 of file BSEmcAbsWaveformSimulator.h.

References fListOfWaveformModifiers.

Referenced by Simulate(), and SimulateSinglePulse().

85  {
86  TIter iterModifiers(&fListOfWaveformModifiers);
87  while (BSEmcAbsWaveformModifier *wfmod = dynamic_cast<BSEmcAbsWaveformModifier *>(iterModifiers())) {
88  wfmod->Modify(t_wf);
89  }
90  return t_wf;
91  }
interface for waveform modifiers

◆ ClassDef()

BSEmcAbsWaveformSimulator::ClassDef ( BSEmcAbsWaveformSimulator  ,
 
)
protected

◆ Get1GevWaveform()

virtual BSEmcWaveform* BSEmcAbsWaveformSimulator::Get1GevWaveform ( )
pure virtual

returns 1GeV equivalent waveform

might be used for calibration etc.

Implemented in BSEmcFullStackedWaveformSimulator.

Referenced by SimulateSinglePulse().

◆ GetAbsoluteTimeInterval()

virtual void BSEmcAbsWaveformSimulator::GetAbsoluteTimeInterval ( BSEmcWaveformData t_wfData,
Double_t &  t_startTime,
Double_t &  t_activeTime 
)
pure virtual

returns absolute livetime interval of waveform

times in ns

Implemented in BSEmcFullStackedWaveformSimulator.

Referenced by SimulateSinglePulse().

◆ GetSampleRate()

virtual Double_t BSEmcAbsWaveformSimulator::GetSampleRate ( )
inlinevirtual

Definition at line 67 of file BSEmcAbsWaveformSimulator.h.

References fSampleRate.

67 { return fSampleRate; }
Double_t fSampleRate
sampling rate of SADC. In 1/ns

◆ GetScale()

virtual Double_t BSEmcAbsWaveformSimulator::GetScale ( )
pure virtual

Get 1GeV pulse height equivalient of simulator generated waveform

Implemented in BSEmcFullStackedWaveformSimulator.

Referenced by GetTimeBeforeFirstHit(), and GetTotalScale().

◆ GetTimeBeforeFirstHit()

virtual Double_t BSEmcAbsWaveformSimulator::GetTimeBeforeFirstHit ( BSEmcWaveformData )
inlinevirtual

maximum timeinterval generated waveforms are ahead of causal detector hits

Information is needed by timebased simulation framework. E.g. provokeed by simulation of preceding baseline samples

Reimplemented in BSEmcFullStackedWaveformSimulator.

Definition at line 49 of file BSEmcAbsWaveformSimulator.h.

References GetScale().

49 { return 0; } // in ns // wfData //[R.K.03/2017] unused variable(s)

◆ GetTotalScale()

virtual Double_t BSEmcAbsWaveformSimulator::GetTotalScale ( )
inlinevirtual

Get 1GeV pulse height equivalent of waveform at end of modification chain

Definition at line 55 of file BSEmcAbsWaveformSimulator.h.

References fListOfWaveformModifiers, and GetScale().

56  {
57  Double_t totalScale = GetScale();
58 
59  TIter iterModifiers(&fListOfWaveformModifiers);
60  while (BSEmcAbsWaveformModifier *wfmod = dynamic_cast<BSEmcAbsWaveformModifier *>(iterModifiers())) {
61  totalScale *= wfmod->GetScale();
62  }
63 
64  return totalScale;
65  }
virtual Double_t GetScale()=0
interface for waveform modifiers

◆ MakeSingleWaveform()

virtual BSEmcWaveform* BSEmcAbsWaveformSimulator::MakeSingleWaveform ( Double_t  t_hitEnergy,
Double_t  t_hitTime,
TClonesArray *  t_arrayToStore = nullptr,
Int_t  t_detId = -1,
Int_t  t_trackId = -1,
Int_t  t_hitIndex = -1 
)
protectedpure virtual

◆ MakeWaveform()

virtual BSEmcWaveform* BSEmcAbsWaveformSimulator::MakeWaveform ( BSEmcWaveformData t_wfData,
TClonesArray *  t_arrayToStore = nullptr 
)
protectedpure virtual

◆ SetHitBranchName()

void BSEmcAbsWaveformSimulator::SetHitBranchName ( const TString &  t_branchname)
inline

◆ Simulate()

virtual BSEmcWaveform* BSEmcAbsWaveformSimulator::Simulate ( BSEmcWaveformData t_wfData,
TClonesArray *  t_arrayToStore = nullptr 
)
inlinevirtual

Simulate Waveform based on wfData object

The BSEmcWaveformData object is used by the emc timebased simulation

Definition at line 27 of file BSEmcAbsWaveformSimulator.h.

References CallModifiers(), and MakeWaveform().

27 { return CallModifiers(MakeWaveform(t_wfData, t_arrayToStore)); }
virtual BSEmcWaveform * MakeWaveform(BSEmcWaveformData *t_wfData, TClonesArray *t_arrayToStore=nullptr)=0
virtual BSEmcWaveform * CallModifiers(BSEmcWaveform *t_wf)

◆ SimulateSinglePulse()

virtual BSEmcWaveform* BSEmcAbsWaveformSimulator::SimulateSinglePulse ( Double_t  t_hitEnergy,
Double_t  t_hitTime,
TClonesArray *  t_arrayToStore = nullptr,
Int_t  t_detId = -1,
Int_t  t_trackId = -1,
Int_t  t_hitIndex = -1 
)
inlinevirtual

Simulate waveform consisting of single pusle

Definition at line 31 of file BSEmcAbsWaveformSimulator.h.

References CallModifiers(), Get1GevWaveform(), GetAbsoluteTimeInterval(), and MakeSingleWaveform().

32  {
33  return CallModifiers(MakeSingleWaveform(t_hitEnergy, t_hitTime, t_arrayToStore, t_detId, t_trackId, t_hitIndex));
34  }
virtual BSEmcWaveform * MakeSingleWaveform(Double_t t_hitEnergy, Double_t t_hitTime, TClonesArray *t_arrayToStore=nullptr, Int_t t_detId=-1, Int_t t_trackId=-1, Int_t t_hitIndex=-1)=0
virtual BSEmcWaveform * CallModifiers(BSEmcWaveform *t_wf)

◆ SyncWithADCClock()

void BSEmcAbsWaveformSimulator::SyncWithADCClock ( Double_t &  t_time)
inlineprotected

Definition at line 82 of file BSEmcAbsWaveformSimulator.h.

References fSampleRate.

82 { t_time = TMath::Floor(t_time * fSampleRate) / fSampleRate; };
Double_t fSampleRate
sampling rate of SADC. In 1/ns

Member Data Documentation

◆ fHitBranchName

TString BSEmcAbsWaveformSimulator::fHitBranchName {""}
protected

Definition at line 96 of file BSEmcAbsWaveformSimulator.h.

Referenced by SetHitBranchName().

◆ fListOfWaveformModifiers

TList BSEmcAbsWaveformSimulator::fListOfWaveformModifiers {}
protected

Definition at line 93 of file BSEmcAbsWaveformSimulator.h.

Referenced by AddModifier(), CallModifiers(), and GetTotalScale().

◆ fSampleRate

Double_t BSEmcAbsWaveformSimulator::fSampleRate {-1}
protected

sampling rate of SADC. In 1/ns

Definition at line 94 of file BSEmcAbsWaveformSimulator.h.

Referenced by GetSampleRate(), and SyncWithADCClock().


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