PandaRoot
PndEmcAbsWaveformSimulator Class Referenceabstract

Abstract base class for waveform simulator. More...

#include <PndEmcAbsWaveformSimulator.h>

Inheritance diagram for PndEmcAbsWaveformSimulator:
PndEmcFullStackedWaveformSimulator PndEmcMultiWaveformSimulator

Public Member Functions

virtual PndEmcWaveformSimulate (PndEmcWaveformData *wfData, TClonesArray *arrayToStore=nullptr)
 
virtual PndEmcWaveformSimulateSinglePulse (Double_t hitEnergy, Double_t hitTime, TClonesArray *arrayToStore=nullptr, Int_t detId=-1, Int_t trackId=-1, Int_t hitIndex=-1)
 
virtual PndEmcWaveformGet1GevWaveform ()=0
 
virtual void GetAbsoluteTimeInterval (PndEmcWaveformData *wfData, Double_t &startTime, Double_t &activeTime)=0
 
virtual Double_t GetTimeBeforeFirstHit (PndEmcWaveformData *)
 
virtual Double_t GetScale ()=0
 
virtual Double_t GetTotalScale ()
 
virtual Double_t GetSampleRate ()
 
virtual void AddModifier (PndEmcAbsWaveformModifier *wfModifier)
 

Protected Member Functions

 PndEmcAbsWaveformSimulator ()
 
 PndEmcAbsWaveformSimulator (Double_t sampleRate)
 
virtual PndEmcWaveformMakeWaveform (PndEmcWaveformData *wfData, TClonesArray *arrayToStore=nullptr)=0
 
virtual PndEmcWaveformMakeSingleWaveform (Double_t hitEnergy, Double_t hitTime, TClonesArray *arrayToStore=nullptr, Int_t detId=-1, Int_t trackId=-1, Int_t hitIndex=-1)=0
 
void SyncWithADCClock (Double_t &time)
 
virtual PndEmcWaveformCallModifiers (PndEmcWaveform *wf)
 
 ClassDef (PndEmcAbsWaveformSimulator, 3)
 

Protected Attributes

TList fListOfWaveformModifiers
 
Double_t fSampleRate
 sampling rate of SADC. In 1/ns More...
 

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 24 of file PndEmcAbsWaveformSimulator.h.

Constructor & Destructor Documentation

◆ PndEmcAbsWaveformSimulator() [1/2]

PndEmcAbsWaveformSimulator::PndEmcAbsWaveformSimulator ( )
inlineprotected

Definition at line 73 of file PndEmcAbsWaveformSimulator.h.

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

◆ PndEmcAbsWaveformSimulator() [2/2]

PndEmcAbsWaveformSimulator::PndEmcAbsWaveformSimulator ( Double_t  sampleRate)
inlineprotected

Definition at line 74 of file PndEmcAbsWaveformSimulator.h.

References MakeSingleWaveform(), and MakeWaveform().

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

Member Function Documentation

◆ AddModifier()

virtual void PndEmcAbsWaveformSimulator::AddModifier ( PndEmcAbsWaveformModifier wfModifier)
inlinevirtual

Definition at line 70 of file PndEmcAbsWaveformSimulator.h.

References fListOfWaveformModifiers.

◆ CallModifiers()

virtual PndEmcWaveform* PndEmcAbsWaveformSimulator::CallModifiers ( PndEmcWaveform wf)
inlineprotectedvirtual

Reimplemented in PndEmcMultiWaveformSimulator.

Definition at line 83 of file PndEmcAbsWaveformSimulator.h.

References fListOfWaveformModifiers.

Referenced by Simulate(), and SimulateSinglePulse().

84  {
85  TIter iterModifiers(&fListOfWaveformModifiers);
86  while (PndEmcAbsWaveformModifier *wfmod = (PndEmcAbsWaveformModifier *)iterModifiers()) {
87  wfmod->Modify(wf);
88  }
89  return wf;
90  }
interface for waveform modifiers

◆ ClassDef()

PndEmcAbsWaveformSimulator::ClassDef ( PndEmcAbsWaveformSimulator  ,
 
)
protected

◆ Get1GevWaveform()

virtual PndEmcWaveform* PndEmcAbsWaveformSimulator::Get1GevWaveform ( )
pure virtual

returns 1GeV equivalent waveform

might be used for calibration etc.

Implemented in PndEmcFullStackedWaveformSimulator.

Referenced by SimulateSinglePulse().

◆ GetAbsoluteTimeInterval()

virtual void PndEmcAbsWaveformSimulator::GetAbsoluteTimeInterval ( PndEmcWaveformData wfData,
Double_t &  startTime,
Double_t &  activeTime 
)
pure virtual

returns absolute livetime interval of waveform

times in ns

Implemented in PndEmcFullStackedWaveformSimulator.

Referenced by SimulateSinglePulse().

◆ GetSampleRate()

virtual Double_t PndEmcAbsWaveformSimulator::GetSampleRate ( )
inlinevirtual

Definition at line 68 of file PndEmcAbsWaveformSimulator.h.

References fSampleRate.

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

◆ GetScale()

virtual Double_t PndEmcAbsWaveformSimulator::GetScale ( )
pure virtual

Get 1GeV pulse height equivalient of simulator generated waveform

Implemented in PndEmcFullStackedWaveformSimulator.

Referenced by GetTimeBeforeFirstHit(), and GetTotalScale().

◆ GetTimeBeforeFirstHit()

virtual Double_t PndEmcAbsWaveformSimulator::GetTimeBeforeFirstHit ( PndEmcWaveformData )
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 PndEmcFullStackedWaveformSimulator.

Definition at line 50 of file PndEmcAbsWaveformSimulator.h.

References GetScale().

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

◆ GetTotalScale()

virtual Double_t PndEmcAbsWaveformSimulator::GetTotalScale ( )
inlinevirtual

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

Definition at line 56 of file PndEmcAbsWaveformSimulator.h.

References fListOfWaveformModifiers, and GetScale().

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

◆ MakeSingleWaveform()

virtual PndEmcWaveform* PndEmcAbsWaveformSimulator::MakeSingleWaveform ( Double_t  hitEnergy,
Double_t  hitTime,
TClonesArray *  arrayToStore = nullptr,
Int_t  detId = -1,
Int_t  trackId = -1,
Int_t  hitIndex = -1 
)
protectedpure virtual

◆ MakeWaveform()

virtual PndEmcWaveform* PndEmcAbsWaveformSimulator::MakeWaveform ( PndEmcWaveformData wfData,
TClonesArray *  arrayToStore = nullptr 
)
protectedpure virtual

◆ Simulate()

virtual PndEmcWaveform* PndEmcAbsWaveformSimulator::Simulate ( PndEmcWaveformData wfData,
TClonesArray *  arrayToStore = nullptr 
)
inlinevirtual

Simulate Waveform based on wfData object

The PndEmcWaveformData object is used by the emc timebased simulation

Definition at line 29 of file PndEmcAbsWaveformSimulator.h.

References CallModifiers(), and MakeWaveform().

29 { return CallModifiers(MakeWaveform(wfData, arrayToStore)); }
virtual PndEmcWaveform * MakeWaveform(PndEmcWaveformData *wfData, TClonesArray *arrayToStore=nullptr)=0
virtual PndEmcWaveform * CallModifiers(PndEmcWaveform *wf)

◆ SimulateSinglePulse()

virtual PndEmcWaveform* PndEmcAbsWaveformSimulator::SimulateSinglePulse ( Double_t  hitEnergy,
Double_t  hitTime,
TClonesArray *  arrayToStore = nullptr,
Int_t  detId = -1,
Int_t  trackId = -1,
Int_t  hitIndex = -1 
)
inlinevirtual

Simulate waveform consisting of single pusle

Definition at line 32 of file PndEmcAbsWaveformSimulator.h.

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

33  {
34  return CallModifiers(MakeSingleWaveform(hitEnergy, hitTime, arrayToStore, detId, trackId, hitIndex));
35  }
virtual PndEmcWaveform * MakeSingleWaveform(Double_t hitEnergy, Double_t hitTime, TClonesArray *arrayToStore=nullptr, Int_t detId=-1, Int_t trackId=-1, Int_t hitIndex=-1)=0
virtual PndEmcWaveform * CallModifiers(PndEmcWaveform *wf)

◆ SyncWithADCClock()

void PndEmcAbsWaveformSimulator::SyncWithADCClock ( Double_t &  time)
inlineprotected

Definition at line 81 of file PndEmcAbsWaveformSimulator.h.

References fSampleRate.

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

Member Data Documentation

◆ fListOfWaveformModifiers

TList PndEmcAbsWaveformSimulator::fListOfWaveformModifiers
protected

Definition at line 92 of file PndEmcAbsWaveformSimulator.h.

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

◆ fSampleRate

Double_t PndEmcAbsWaveformSimulator::fSampleRate
protected

sampling rate of SADC. In 1/ns

Definition at line 93 of file PndEmcAbsWaveformSimulator.h.

Referenced by GetSampleRate(), and SyncWithADCClock().


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