FairRoot/PandaRoot
Public Member Functions | Protected Member Functions | Protected Attributes | List of all members
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=NULL)
 
virtual PndEmcWaveformSimulateSinglePulse (Double_t hitEnergy, Double_t hitTime, TClonesArray *arrayToStore=NULL, 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=NULL)=0
 
virtual PndEmcWaveformMakeSingleWaveform (Double_t hitEnergy, Double_t hitTime, TClonesArray *arrayToStore=NULL, 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 25 of file PndEmcAbsWaveformSimulator.h.

Constructor & Destructor Documentation

PndEmcAbsWaveformSimulator::PndEmcAbsWaveformSimulator ( )
inlineprotected

Definition at line 71 of file PndEmcAbsWaveformSimulator.h.

71 : fSampleRate(0) {};
Double_t fSampleRate
sampling rate of SADC. In 1/ns
PndEmcAbsWaveformSimulator::PndEmcAbsWaveformSimulator ( Double_t  sampleRate)
inlineprotected

Definition at line 72 of file PndEmcAbsWaveformSimulator.h.

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

Member Function Documentation

virtual void PndEmcAbsWaveformSimulator::AddModifier ( PndEmcAbsWaveformModifier wfModifier)
inlinevirtual
virtual PndEmcWaveform* PndEmcAbsWaveformSimulator::CallModifiers ( PndEmcWaveform wf)
inlineprotectedvirtual

Reimplemented in PndEmcMultiWaveformSimulator.

Definition at line 82 of file PndEmcAbsWaveformSimulator.h.

References fListOfWaveformModifiers.

Referenced by Simulate(), and SimulateSinglePulse().

82  {
83  TIter iterModifiers(&fListOfWaveformModifiers);
84  while(PndEmcAbsWaveformModifier* wfmod = (PndEmcAbsWaveformModifier*) iterModifiers()) {
85  wfmod->Modify(wf);
86  }
87  return wf;
88  }
interface for waveform modifiers
PndEmcAbsWaveformSimulator::ClassDef ( PndEmcAbsWaveformSimulator  ,
 
)
protected
virtual PndEmcWaveform* PndEmcAbsWaveformSimulator::Get1GevWaveform ( )
pure virtual

returns 1GeV equivalent waveform

might be used for calibration etc.

Implemented in PndEmcFullStackedWaveformSimulator.

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 PndEmcWaveformBuffer::FillNewData(), and PndEmcWaveformBuffer::Modify().

virtual Double_t PndEmcAbsWaveformSimulator::GetSampleRate ( )
inlinevirtual
virtual Double_t PndEmcAbsWaveformSimulator::GetScale ( )
pure virtual

Get 1GeV pulse height equivalient of simulator generated waveform

Implemented in PndEmcFullStackedWaveformSimulator.

Referenced by GetTotalScale().

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

Referenced by PndEmcWaveformBuffer::FillNewData(), and PndEmcWaveformBuffer::Modify().

49 { return 0; } // in ns // wfData //[R.K.03/2017] unused variable(s)
virtual Double_t PndEmcAbsWaveformSimulator::GetTotalScale ( )
inlinevirtual

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

Definition at line 55 of file PndEmcAbsWaveformSimulator.h.

References Double_t, fListOfWaveformModifiers, and GetScale().

55  {
56  Double_t totalScale = GetScale();
57 
58  TIter iterModifiers(&fListOfWaveformModifiers);
59  while(PndEmcAbsWaveformModifier* wfmod = (PndEmcAbsWaveformModifier*) iterModifiers()) {
60  totalScale *= wfmod->GetScale();
61  }
62 
63  return totalScale;
64  }
interface for waveform modifiers
Double_t
virtual Double_t GetScale()=0
virtual PndEmcWaveform* PndEmcAbsWaveformSimulator::MakeSingleWaveform ( Double_t  hitEnergy,
Double_t  hitTime,
TClonesArray *  arrayToStore = NULL,
Int_t  detId = -1,
Int_t  trackId = -1,
Int_t  hitIndex = -1 
)
protectedpure virtual
virtual PndEmcWaveform* PndEmcAbsWaveformSimulator::MakeWaveform ( PndEmcWaveformData wfData,
TClonesArray *  arrayToStore = NULL 
)
protectedpure virtual
virtual PndEmcWaveform* PndEmcAbsWaveformSimulator::Simulate ( PndEmcWaveformData wfData,
TClonesArray *  arrayToStore = NULL 
)
inlinevirtual

Simulate Waveform based on wfData object

The PndEmcWaveformData object is used by the emc timebased simulation

Definition at line 31 of file PndEmcAbsWaveformSimulator.h.

References CallModifiers(), and MakeWaveform().

Referenced by PndEmcWaveformBuffer::AddNewDataToTClonesArray().

31 { return CallModifiers(MakeWaveform(wfData, arrayToStore)); }
virtual PndEmcWaveform * MakeWaveform(PndEmcWaveformData *wfData, TClonesArray *arrayToStore=NULL)=0
virtual PndEmcWaveform * CallModifiers(PndEmcWaveform *wf)
virtual PndEmcWaveform* PndEmcAbsWaveformSimulator::SimulateSinglePulse ( Double_t  hitEnergy,
Double_t  hitTime,
TClonesArray *  arrayToStore = NULL,
Int_t  detId = -1,
Int_t  trackId = -1,
Int_t  hitIndex = -1 
)
inlinevirtual

Simulate waveform consisting of single pusle

Definition at line 34 of file PndEmcAbsWaveformSimulator.h.

References CallModifiers(), and MakeSingleWaveform().

34 { return CallModifiers(MakeSingleWaveform(hitEnergy, hitTime, arrayToStore, detId, trackId, hitIndex)); }
virtual PndEmcWaveform * CallModifiers(PndEmcWaveform *wf)
virtual PndEmcWaveform * MakeSingleWaveform(Double_t hitEnergy, Double_t hitTime, TClonesArray *arrayToStore=NULL, Int_t detId=-1, Int_t trackId=-1, Int_t hitIndex=-1)=0
void PndEmcAbsWaveformSimulator::SyncWithADCClock ( Double_t time)
inlineprotected

Definition at line 78 of file PndEmcAbsWaveformSimulator.h.

References fSampleRate.

Referenced by PndEmcFullStackedWaveformSimulator::GetAbsoluteTimeInterval(), and PndEmcFullStackedWaveformSimulator::MakeSingleWaveform().

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

Member Data Documentation

TList PndEmcAbsWaveformSimulator::fListOfWaveformModifiers
protected
Double_t PndEmcAbsWaveformSimulator::fSampleRate
protected

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