FairRoot/PandaRoot
Public Member Functions | Protected Attributes | Static Protected Attributes | Friends | List of all members
PndEmcWaveform Class Reference

represents a simulated waveform in an emc crystal More...

#include <PndEmcWaveform.h>

Inheritance diagram for PndEmcWaveform:
PndEmcMultiWaveform

Public Member Functions

 PndEmcWaveform ()
 
 PndEmcWaveform (int trackId, long detId, const std::vector< Double_t > &signal, Int_t hitIndex=-1)
 
 PndEmcWaveform (long detId, const std::vector< Double_t > &signal, const FairMultiLinkedData &links)
 
 PndEmcWaveform (Int_t trackId, Long_t detId, Double_t sampleRate, Long_t waveform_length=64, Int_t hitIndex=-1, Double_t time=0.)
 
virtual ~PndEmcWaveform ()
 
long GetDetectorId () const
 
int GetTrackId () const
 
Short_t GetModule () const
 
PndEmcTwoCoordIndexGetTCI () const
 
virtual std::vector< double > GetSignal () const
 
virtual std::vector< Double_tGetSignalError () const
 
Int_t GetHitIndex () const
 
virtual bool operator== (const PndEmcWaveform &otherWave) const
 
virtual bool operator< (const PndEmcWaveform &otherWave) const
 
virtual bool operator!= (const PndEmcWaveform &otherWave) const
 
virtual bool equal (FairTimeStamp *data)
 
PndEmcWaveformoperator+= (const PndEmcWaveform &otherWave)
 
Double_t GetSampleRate () const
 
Double_t GetScale (Double_t sampleRate, PndEmcAbsPulseshape *pulseshape) const
 
Double_t GetNormalisation (Double_t sampleRate, PndEmcAbsPulseshape *pulseshape) const
 
Int_t GetWaveformLength () const
 
void SetSampleRate (Double_t rate)
 
void UpdateWaveform (PndEmcHit *hit, Double_t pePerMeV, Bool_t usePhotonStatistic, Double_t excessNoiseFactor, Double_t firstADCBinTime, Double_t sampleRate, PndEmcAbsPulseshape *pulseshape, Double_t=0)
 
void MakeWaveform (Double_t energy, Double_t time, Double_t pePerMeV, Bool_t usePhotonStatistic, Double_t excessNoiseFactor, Double_t firstADCBinTime, Double_t sampleRate, PndEmcAbsPulseshape *pulseshape, Double_t=0)
 
void AddElecNoise (Double_t)
 
void Digitise (Double_t)
 
void AddElecNoiseAndDigitise (Double_t, Double_t, Double_t=0)
 
void AddShapedElecNoiseAndDigitise (Double_t noise_width, Double_t oneBitResolution, PndEmcAbsPulseshape *pulseshape, Double_t firstADCBinTime, Double_t sampleRate, Double_t=0)
 
void SetWaveform (std::vector< Double_t > &signal, Int_t length)
 
Double_t Max ()
 
virtual void clearAndReset ()
 
virtual void Clear (Option_t *)
 
Double_t GetActiveTime () const
 
Int_t GetPileupCount () const
 
void AddEvt (Int_t evtNo)
 
const std::vector< Int_t > & GetEvtList () const
 
TGraphErrors * ToTGraph () const
 
Double_t GetBaseline () const
 
Double_t Integral () const
 

Protected Attributes

Int_t fTrackId
 
Int_t fDetectorId
 
Int_t fWaveformLength
 
std::vector< Double_tfSignal
 
std::vector< Double_tfSignalError
 
Int_t fHitIndex
 
Double_t fSampleRate
 
Double_t fBaselineValue
 
std::vector< Int_t > fEvt
 

Static Protected Attributes

static Double_t BarrelOverlapTime = 700
 
static Double_t ForwardOverlapTime = 390
 
static Double_t ShashylikOverlapTime = 130
 

Friends

class PndEmcAbsWaveformModifier
 

Detailed Description

represents a simulated waveform in an emc crystal

Definition at line 56 of file PndEmcWaveform.h.

Constructor & Destructor Documentation

PndEmcWaveform::PndEmcWaveform ( )

Definition at line 47 of file PndEmcWaveform.cxx.

47  :
48  FairTimeStamp()
49  ,fTrackId(-1)
50  ,fDetectorId(-1)
51  ,fWaveformLength(0)
52  ,fSignal(0,0.)
53  ,fSignalError(0,0.)
54  ,fHitIndex(-1)
55  ,fSampleRate(0.)
56  ,fBaselineValue(0.)
57 {}
Double_t fSampleRate
std::vector< Double_t > fSignal
Double_t fBaselineValue
std::vector< Double_t > fSignalError
PndEmcWaveform::PndEmcWaveform ( int  trackId,
long  detId,
const std::vector< Double_t > &  signal,
Int_t  hitIndex = -1 
)

Definition at line 73 of file PndEmcWaveform.cxx.

73  :
74  fTrackId(trackId),
75  fDetectorId(detId),
76  fWaveformLength(signal.size()),
77  fSignal(signal),
78  fHitIndex(hitIndex)
79 {
80  if(hitIndex>=0) SetLink(FairLink(-1, FairRootManager::Instance()->GetEntryNr(), "EmcHit", hitIndex));
81 }
std::vector< Double_t > fSignal
PndEmcWaveform::PndEmcWaveform ( long  detId,
const std::vector< Double_t > &  signal,
const FairMultiLinkedData &  links 
)

Definition at line 83 of file PndEmcWaveform.cxx.

83  :
84  fTrackId(-1),
85  fDetectorId(detId),
86  fWaveformLength(signal.size()),
87  fSignal(signal),
88  fHitIndex(-1) {
89  SetLinks(links);
90 }
std::vector< Double_t > fSignal
PndEmcWaveform::PndEmcWaveform ( Int_t  trackId,
Long_t  detId,
Double_t  sampleRate,
Long_t  waveform_length = 64,
Int_t  hitIndex = -1,
Double_t  time = 0. 
)
PndEmcWaveform::~PndEmcWaveform ( )
virtual

Definition at line 130 of file PndEmcWaveform.cxx.

References fEvt, fSignal, and fSignalError.

131 {
132  fSignal.clear();
133  fSignalError.clear();
134  fEvt.clear();
135 }
std::vector< Double_t > fSignal
std::vector< Int_t > fEvt
std::vector< Double_t > fSignalError

Member Function Documentation

void PndEmcWaveform::AddElecNoise ( Double_t  width)

Definition at line 236 of file PndEmcWaveform.cxx.

References Double_t, fSignal, fWaveformLength, and i.

237 {
238 
239  for (int i=0;i<fWaveformLength;i++)
240  {
241  Double_t ran_noise;
242  ran_noise=gRandom->Gaus(0,1)*width;
243  fSignal[i]+=ran_noise;
244  }
245 }
Int_t i
Definition: run_full.C:25
Double_t
std::vector< Double_t > fSignal
void PndEmcWaveform::AddElecNoiseAndDigitise ( Double_t  noise_width,
Double_t  oneBitResolution,
Double_t  EnergyError = 0 
)

Definition at line 259 of file PndEmcWaveform.cxx.

References Double_t, fBaselineValue, fSignal, fSignalError, fWaveformLength, i, and sqrt().

Referenced by PndEmcHitsToWaveform::Exec().

261 {
262  // Do both e_noise and digitisation.
263 
264  for ( int i=0;i<fWaveformLength;i++)
265  {
266  Double_t ran_noise=gRandom->Gaus(0,1)*noise_width;
267  fSignal[i]+=ran_noise;
268  if (fSignal[i]<0) fSignal[i]=0;
269  fSignal[i]=(Double_t) ( long (fSignal[i]/oneBitResolution+64)-64 ) * oneBitResolution;
270  }
271  Double_t sumCharge(0.);
272  Double_t sumChargeErr(0.);
273  for (Int_t i=0;i<fWaveformLength;i++)
274  {
275  sumCharge += fSignal[i];
276  sumChargeErr += sqrt(fSignal[i]);
277  }
278  Double_t Coff = EnergyError*sumCharge/sumChargeErr;
279  for(Int_t i=0;i<fWaveformLength;++i){
280  fSignalError[i] = fSignal[i]*Coff;
281  }
282  //calculate baseline
283  static Int_t baseline_length =100;
284  for(Int_t j=0;j<baseline_length;++j){
285  fBaselineValue += gRandom->Gaus(0,1)*noise_width;
286  }
287  fBaselineValue/=baseline_length;
288 }
Int_t i
Definition: run_full.C:25
friend F32vec4 sqrt(const F32vec4 &a)
Definition: P4_F32vec4.h:29
Double_t
std::vector< Double_t > fSignal
Double_t fBaselineValue
std::vector< Double_t > fSignalError
void PndEmcWaveform::AddEvt ( Int_t  evtNo)
inline

Definition at line 135 of file PndEmcWaveform.h.

References fEvt.

Referenced by PndEmcHitsToWaveform::Exec(), and operator+=().

135 { fEvt.push_back(evtNo);}
std::vector< Int_t > fEvt
void PndEmcWaveform::AddShapedElecNoiseAndDigitise ( Double_t  noise_width,
Double_t  oneBitResolution,
PndEmcAbsPulseshape pulseshape,
Double_t  firstADCBinTime,
Double_t  sampleRate,
Double_t  EnergyError = 0 
)

Definition at line 291 of file PndEmcWaveform.cxx.

References Double_t, fBaselineValue, fSignal, fSignalError, fWaveformLength, i, sqrt(), t, and PndEmcAbsPulseshape::value().

Referenced by PndEmcHitsToWaveform::Exec().

293 {
294  // Do both e_noise and digitisation.
295  Double_t t;
296  for ( int i=0;i<fWaveformLength;i++)
297  {
298  t = i/sampleRate;
299  Double_t ran_noise=gRandom->Gaus(0,1)*noise_width;
300  fSignal[i] += pulseshape->value(t,ran_noise,firstADCBinTime);
301  }
302  Double_t sumCharge(0.);
303  Double_t sumChargeErr(0.);
304  for (Int_t i=0;i<fWaveformLength;i++)
305  {
306  sumCharge += fSignal[i];
307  sumChargeErr += sqrt(fSignal[i]);
308  }
309  Double_t Coff = EnergyError*sumCharge/sumChargeErr;
310  for(Int_t i=0;i<fWaveformLength;++i){
311  fSignalError[i] = fSignal[i]*Coff;
312  }
313  //calculate baseline
314  static Int_t baseline_length =100;
315  for(Int_t j=0;j<baseline_length;++j){
316  t = j/sampleRate;
317  Double_t ran_noise=gRandom->Gaus(0,1)*noise_width;
318  fBaselineValue += pulseshape->value(t,ran_noise,firstADCBinTime);
319  }
320  fBaselineValue/=baseline_length;
321 
322 }
Int_t i
Definition: run_full.C:25
friend F32vec4 sqrt(const F32vec4 &a)
Definition: P4_F32vec4.h:29
virtual double value(const double t, const double amp, const double toffset) const
Double_t
std::vector< Double_t > fSignal
TTree * t
Definition: bump_analys.C:13
Double_t fBaselineValue
std::vector< Double_t > fSignalError
virtual void PndEmcWaveform::Clear ( Option_t *  )
inlinevirtual

Reimplemented in PndEmcMultiWaveform.

Definition at line 130 of file PndEmcWaveform.h.

References fSignal.

130 {fSignal.clear();};
std::vector< Double_t > fSignal
void PndEmcWaveform::clearAndReset ( )
virtual

Reimplemented in PndEmcMultiWaveform.

Definition at line 334 of file PndEmcWaveform.cxx.

References fSignal.

Referenced by GetNormalisation().

334  {
335  // reset values of fSignal to 0
336  fill(fSignal.begin(),fSignal.end(),0);
337 }
std::vector< Double_t > fSignal
void PndEmcWaveform::Digitise ( Double_t  oneBitResolution)

Definition at line 249 of file PndEmcWaveform.cxx.

References Double_t, fSignal, fWaveformLength, and i.

250 {
251  for ( int i=0;i<fWaveformLength;i++)
252  {
253  fSignal[i]=(Double_t) ( long (fSignal[i]/oneBitResolution+64)-64 ) * oneBitResolution;
254  }
255 }
Int_t i
Definition: run_full.C:25
Double_t
std::vector< Double_t > fSignal
bool PndEmcWaveform::equal ( FairTimeStamp *  data)
virtual

Definition at line 373 of file PndEmcWaveform.cxx.

References GetDetectorId().

374 {
375  PndEmcWaveform* other = (PndEmcWaveform*)(data);
376  if(GetDetectorId() == other->GetDetectorId()) return true;
377  return false;
378 }
long GetDetectorId() const
represents a simulated waveform in an emc crystal
Double_t PndEmcWaveform::GetActiveTime ( ) const
inline

Definition at line 132 of file PndEmcWaveform.h.

References fSampleRate, and fWaveformLength.

Referenced by PndEmcHitsToWaveform::Exec(), PndEmcWaveformWriteoutBuffer::Modify(), and operator<().

132 { return GetTimeStamp() + (fWaveformLength-1)/fSampleRate*1.0e9; }//nano seconds
Double_t fSampleRate
Double_t PndEmcWaveform::GetBaseline ( ) const
inline

Definition at line 140 of file PndEmcWaveform.h.

References fBaselineValue.

Referenced by PndEmcAnalysis::Exec(), and PndEmcPSAFPGADigitalFilterAnalyser::Process().

140 { return fBaselineValue;}
Double_t fBaselineValue
long PndEmcWaveform::GetDetectorId ( ) const
inline
const std::vector<Int_t>& PndEmcWaveform::GetEvtList ( ) const
inline

Definition at line 136 of file PndEmcWaveform.h.

References fEvt.

Referenced by PndEmcWaveformToDigi::Exec(), PndEmcAnalysis::Exec(), operator+=(), and PndEmcWaveformWriteoutBuffer::WriteToFile().

136 { return fEvt; }
std::vector< Int_t > fEvt
Int_t PndEmcWaveform::GetHitIndex ( ) const
inline
Short_t PndEmcWaveform::GetModule ( ) const
inline
Double_t PndEmcWaveform::GetNormalisation ( Double_t  sampleRate,
PndEmcAbsPulseshape pulseshape 
) const

Definition at line 149 of file PndEmcWaveform.cxx.

References clearAndReset(), Double_t, Max(), PndEmcHit::SetEnergy(), PndEmcHit::SetTime(), and UpdateWaveform().

Referenced by GetScale().

150 {
151  // Function to return the equivalent pulse height for a 1 GeV pulse
152  // Used in EmcHitsToWaveform to determine electronics noise scale
153 
154  PndEmcWaveform newWaveform(*this);
155  newWaveform.clearAndReset();
156 
157  PndEmcHit *gevHit=new PndEmcHit();
158  gevHit->SetEnergy(1.0);
159  gevHit->SetTime(0.);
160  newWaveform.UpdateWaveform(gevHit, 0, false, 1., 0., sampleRate, pulseshape);
161  delete gevHit;
162 
163  Double_t maximum=newWaveform.Max();
164  return maximum;
165 }
Double_t
virtual void SetEnergy(Double32_t energy)
Definition: PndEmcHit.h:50
represents a simulated waveform in an emc crystal
represents the deposited energy of one emc crystal from simulation
Definition: PndEmcHit.h:26
virtual void SetTime(Double32_t time)
Definition: PndEmcHit.h:51
Int_t PndEmcWaveform::GetPileupCount ( ) const
inline

Definition at line 133 of file PndEmcWaveform.h.

References fEvt.

Referenced by PndEmcAnalysis::Exec(), and PndEmcWaveformWriteoutBuffer::Modify().

133 {return fEvt.size() - 1; }
std::vector< Int_t > fEvt
Double_t PndEmcWaveform::GetSampleRate ( ) const
inline

Definition at line 100 of file PndEmcWaveform.h.

References fSampleRate.

Referenced by PndEmcFWEndcapDigi::Exec(), and PndEmcMultiWaveformSimulator::MultiplyWaveform().

100 { return fSampleRate; } //in s^(-1)
Double_t fSampleRate
Double_t PndEmcWaveform::GetScale ( Double_t  sampleRate,
PndEmcAbsPulseshape pulseshape 
) const

Definition at line 143 of file PndEmcWaveform.cxx.

References GetNormalisation().

Referenced by PndEmcHitsToWaveform::Init().

144 {
145  return GetNormalisation(sampleRate, pulseshape);
146 }
Double_t GetNormalisation(Double_t sampleRate, PndEmcAbsPulseshape *pulseshape) const
virtual std::vector<double> PndEmcWaveform::GetSignal ( ) const
inlinevirtual
virtual std::vector<Double_t> PndEmcWaveform::GetSignalError ( ) const
inlinevirtual

Definition at line 86 of file PndEmcWaveform.h.

References fSignalError.

86 { return fSignalError; }
std::vector< Double_t > fSignalError
PndEmcTwoCoordIndex * PndEmcWaveform::GetTCI ( ) const

Definition at line 339 of file PndEmcWaveform.cxx.

References emcMap, fDetectorId, PndEmcMapper::GetTCI(), and PndEmcMapper::Instance().

Referenced by PndEmcAnalysis::Exec(), and PndEmcWaveformWriteoutBuffer::Modify().

340 {
342  PndEmcTwoCoordIndex* tci=emcMap->GetTCI(fDetectorId);
343  return tci;
344 }
stores crystal index coordinates (x,y) or (theta,phi)
PndEmcTwoCoordIndex * GetTCI(Int_t DetectorId)
Emc geometry mapper.
Definition: PndEmcMapper.h:22
PndEmcMapper * emcMap
static PndEmcMapper * Instance()
int PndEmcWaveform::GetTrackId ( ) const
inline
Int_t PndEmcWaveform::GetWaveformLength ( ) const
inline

Definition at line 103 of file PndEmcWaveform.h.

References fWaveformLength.

Referenced by PndEmcAnalysis::Exec().

103 {return fWaveformLength;}
Double_t PndEmcWaveform::Integral ( ) const

Definition at line 432 of file PndEmcWaveform.cxx.

References Double_t, fSignal, and i.

Referenced by PndEmcWaveformToDigi::Init().

432  {
433  Double_t sum(0.);
434  for(size_t i=0;i<fSignal.size();++i)
435  sum += fSignal[i];
436  return sum;
437 }
Int_t i
Definition: run_full.C:25
Double_t
std::vector< Double_t > fSignal
void PndEmcWaveform::MakeWaveform ( Double_t  energy,
Double_t  time,
Double_t  pePerMeV,
Bool_t  usePhotonStatistic,
Double_t  excessNoiseFactor,
Double_t  firstADCBinTime,
Double_t  sampleRate,
PndEmcAbsPulseshape pulseshape,
Double_t  EnergyError = 0 
)

Definition at line 190 of file PndEmcWaveform.cxx.

References Double_t, fabs(), fSignal, fSignalError, fWaveformLength, i, sqrt(), and PndEmcAbsPulseshape::value().

Referenced by UpdateWaveform().

199 {
200  Double_t amplitude;
201  Double_t photonStatFactor;
202  if (usePhotonStatistic)
203  {
204  Double_t crystalPhotonsMeV = 1.0e3 * energy * pePerMeV;
205  photonStatFactor = gRandom->Gaus(1,sqrt(excessNoiseFactor/crystalPhotonsMeV));
206  }
207  else
208  {
209  photonStatFactor=1.;
210  }
211 
212  amplitude = energy*photonStatFactor;
213 
214  Double_t local_time(0.);
215  Double_t time_offset=firstADCBinTime;//nano seconds
216 
217  Double_t sumCharge(0.);
218  Double_t sumChargeErr(0.);
219 
220  for (Int_t i=0;i<fWaveformLength;i++)
221  {
222  local_time = i/sampleRate;//seconds
223  fSignal[i]+=(pulseshape->value(local_time,amplitude,time_offset));
224  sumCharge += fSignal[i];
225  sumChargeErr += sqrt(fabs(fSignal[i]));
226  }
227  Double_t Coff = EnergyError*sumCharge/sumChargeErr;
228  for(Int_t i=0;i<fWaveformLength;++i){
229  fSignalError[i] = fSignal[i]*Coff;
230  }
231 
232 }
Int_t i
Definition: run_full.C:25
friend F32vec4 sqrt(const F32vec4 &a)
Definition: P4_F32vec4.h:29
virtual double value(const double t, const double amp, const double toffset) const
Double_t
friend F32vec4 fabs(const F32vec4 &a)
Definition: P4_F32vec4.h:47
std::vector< Double_t > fSignal
std::vector< Double_t > fSignalError
Double_t energy
Definition: plot_dirc.C:15
Double_t PndEmcWaveform::Max ( )

Definition at line 325 of file PndEmcWaveform.cxx.

References Double_t, and fSignal.

Referenced by PndEmcAnalysis::Exec(), GetNormalisation(), and PndEmcWaveformToDigi::Init().

326 {
327  Double_t _max;
328  _max=*max_element(fSignal.begin(),fSignal.end());
329  return _max;
330 }
Double_t
std::vector< Double_t > fSignal
bool PndEmcWaveform::operator!= ( const PndEmcWaveform otherWave) const
virtual

Definition at line 368 of file PndEmcWaveform.cxx.

References fDetectorId.

369 {
370  if(fDetectorId != otherWave.fDetectorId) return true;
371  return false;
372 }
PndEmcWaveform & PndEmcWaveform::operator+= ( const PndEmcWaveform otherWave)

Definition at line 380 of file PndEmcWaveform.cxx.

References AddEvt(), fSampleRate, fSignal, fSignalError, fWaveformLength, GetEvtList(), i, and sqrt().

381 {
382  if(GetTimeStamp()> otherWave.GetTimeStamp())// current wave earlier
383  {
384  std::cerr<<"Please make sure the eariler waveform += the later waveform"<<std::endl;
385  return *this;
386  }
387  //++ fPileupCount ;
388 
389  const std::vector<Int_t>& evtList = otherWave.GetEvtList();
390  for(size_t i=0; i< evtList.size();++i){
391  AddEvt(evtList[i]);
392  }
393 
394  Int_t k =0;
395  Int_t IDX = 0;
396  for(; (IDX < fWaveformLength) && (k < otherWave.fWaveformLength); ++ IDX){
397  if((GetTimeStamp() + IDX/fSampleRate*1.0e9) < otherWave.GetTimeStamp()){
398  continue;
399  }
400  fSignal[IDX] += otherWave.fSignal[k];
401  fSignalError[IDX] = sqrt(fSignalError[IDX]*fSignalError[IDX] + otherWave.fSignalError[k]*otherWave.fSignalError[k]);
402  ++k;
403  }
404  if(k < otherWave.fWaveformLength){
405  fWaveformLength += otherWave.fWaveformLength - k ;
406  for(; IDX < fWaveformLength; ++IDX, ++k){
407  fSignal.push_back(otherWave.fSignal[k]);
408  fSignalError.push_back(otherWave.fSignalError[k]);
409  }
410  }
411 
412  return *this;
413 }
Int_t i
Definition: run_full.C:25
friend F32vec4 sqrt(const F32vec4 &a)
Definition: P4_F32vec4.h:29
Double_t fSampleRate
const std::vector< Int_t > & GetEvtList() const
std::vector< Double_t > fSignal
void AddEvt(Int_t evtNo)
std::vector< Double_t > fSignalError
bool PndEmcWaveform::operator< ( const PndEmcWaveform otherWave) const
virtual

Definition at line 350 of file PndEmcWaveform.cxx.

References BarrelOverlapTime, Double_t, ForwardOverlapTime, GetActiveTime(), GetDetectorId(), GetModule(), and ShashylikOverlapTime.

351 {
352  Double_t overlapped_time = 0.;
353  if(GetModule() == 3) overlapped_time = PndEmcWaveform::ForwardOverlapTime;
354  else if(GetModule() == 5) overlapped_time = PndEmcWaveform::ShashylikOverlapTime;
355  else overlapped_time = PndEmcWaveform::BarrelOverlapTime;
356 
357  if(GetDetectorId() < otherWave.GetDetectorId())
358  return true;
359  else if (GetDetectorId() == otherWave.GetDetectorId()){
360  if(GetTimeStamp() < otherWave.GetTimeStamp())
361  return otherWave.GetTimeStamp() > GetActiveTime() - overlapped_time;
362  else
363  return GetTimeStamp() > otherWave.GetActiveTime() - overlapped_time;
364  }else
365  return false;
366 
367 }
Double_t GetActiveTime() const
static Double_t BarrelOverlapTime
static Double_t ShashylikOverlapTime
static Double_t ForwardOverlapTime
Double_t
long GetDetectorId() const
Short_t GetModule() const
bool PndEmcWaveform::operator== ( const PndEmcWaveform otherWave) const
virtual

Definition at line 345 of file PndEmcWaveform.cxx.

References fDetectorId.

346 {
347  if(fDetectorId != otherWave.fDetectorId) return false;
348  return true;
349 }
void PndEmcWaveform::SetSampleRate ( Double_t  rate)
inline
void PndEmcWaveform::SetWaveform ( std::vector< Double_t > &  signal,
Int_t  length 
)

Definition at line 427 of file PndEmcWaveform.cxx.

References fSignal, and fWaveformLength.

428 {
429  fSignal = signal;
430  fWaveformLength=length;
431 }
std::vector< Double_t > fSignal
TGraphErrors * PndEmcWaveform::ToTGraph ( ) const

Definition at line 415 of file PndEmcWaveform.cxx.

References Double_t, fSampleRate, fSignal, fSignalError, g, and i.

Referenced by PndEmcWaveformWriteoutBuffer::WriteToFile().

416 {
417 
418  //free this object outside
419  TGraphErrors* g = new TGraphErrors(fSignal.size());
420  for(size_t i = 0; i< fSignal.size(); ++i){
421  g->SetPoint(i, GetTimeStamp()/1.e9 + Double_t(i)/fSampleRate, fSignal[i]);
422  g->SetPointError(i, 0, fSignalError[i]);
423  }
424  return g;
425 }
Int_t i
Definition: run_full.C:25
TFile * g
Double_t fSampleRate
Double_t
std::vector< Double_t > fSignal
std::vector< Double_t > fSignalError
void PndEmcWaveform::UpdateWaveform ( PndEmcHit hit,
Double_t  pePerMeV,
Bool_t  usePhotonStatistic,
Double_t  excessNoiseFactor,
Double_t  firstADCBinTime,
Double_t  sampleRate,
PndEmcAbsPulseshape pulseshape,
Double_t  EnergyError = 0 
)

Definition at line 173 of file PndEmcWaveform.cxx.

References Double_t, energy, PndEmcHit::GetEnergy(), and MakeWaveform().

Referenced by PndEmcHitsToWaveform::Exec(), GetNormalisation(), PndEmcWaveformToDigi::Init(), PndEmcWaveformToCalibratedDigi::Init(), and PndEmcMultiWaveformToCalibratedDigi::Init().

181 {
183  Double_t time= GetTimeStamp();//firstADCBinTime = 0.;
184 
185  MakeWaveform(energy, time, pePerMeV, usePhotonStatistic, excessNoiseFactor, firstADCBinTime, sampleRate, pulseshape, EnergyError);
186 
187 }
Double_t
virtual Double_t GetEnergy() const
Definition: PndEmcHit.h:54
void MakeWaveform(Double_t energy, Double_t time, Double_t pePerMeV, Bool_t usePhotonStatistic, Double_t excessNoiseFactor, Double_t firstADCBinTime, Double_t sampleRate, PndEmcAbsPulseshape *pulseshape, Double_t=0)
Double_t energy
Definition: plot_dirc.C:15

Friends And Related Function Documentation

friend class PndEmcAbsWaveformModifier
friend

Definition at line 59 of file PndEmcWaveform.h.

Member Data Documentation

Double_t PndEmcWaveform::BarrelOverlapTime = 700
staticprotected

Definition at line 157 of file PndEmcWaveform.h.

Referenced by operator<().

Double_t PndEmcWaveform::fBaselineValue
protected
Int_t PndEmcWaveform::fDetectorId
protected

Definition at line 145 of file PndEmcWaveform.h.

Referenced by GetDetectorId(), GetModule(), GetTCI(), operator!=(), and operator==().

std::vector<Int_t> PndEmcWaveform::fEvt
protected

Definition at line 154 of file PndEmcWaveform.h.

Referenced by AddEvt(), GetEvtList(), GetPileupCount(), and ~PndEmcWaveform().

Int_t PndEmcWaveform::fHitIndex
protected

Definition at line 149 of file PndEmcWaveform.h.

Referenced by GetHitIndex().

Double_t PndEmcWaveform::ForwardOverlapTime = 390
staticprotected

Definition at line 158 of file PndEmcWaveform.h.

Referenced by operator<().

Double_t PndEmcWaveform::fSampleRate
protected

Definition at line 151 of file PndEmcWaveform.h.

Referenced by GetActiveTime(), GetSampleRate(), operator+=(), SetSampleRate(), and ToTGraph().

std::vector<Double_t> PndEmcWaveform::fSignal
protected
std::vector<Double_t> PndEmcWaveform::fSignalError
protected
Int_t PndEmcWaveform::fTrackId
protected

Definition at line 144 of file PndEmcWaveform.h.

Referenced by GetTrackId().

Int_t PndEmcWaveform::fWaveformLength
protected
Double_t PndEmcWaveform::ShashylikOverlapTime = 130
staticprotected

Definition at line 159 of file PndEmcWaveform.h.

Referenced by operator<().


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