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

Class to hold multiple waveforms from one Emc Hit / ADC readout. More...

#include <PndEmcMultiWaveform.h>

Inheritance diagram for PndEmcMultiWaveform:
PndEmcWaveform

Public Member Functions

 PndEmcMultiWaveform ()
 
 PndEmcMultiWaveform (Int_t trackid, Long_t detId, Long_t waveform_length=128, Int_t hitIndex=-1)
 
virtual ~PndEmcMultiWaveform ()
 
void SetWaveform (const std::vector< Double_t > &signal, Int_t length, Int_t Waveform)
 
virtual void clearAndReset ()
 
virtual void Clear (Option_t *)
 
Int_t GetNumberOfWaveforms () const
 
Int_t GetActiveWaveform () const
 
void SetActiveWaveform (Int_t active=1)
 
virtual std::vector< Double_tGetSignal () const
 
long GetDetectorId () const
 
int GetTrackId () const
 
Short_t GetModule () const
 
PndEmcTwoCoordIndexGetTCI () 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 ()
 
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
 

Private Member Functions

 ClassDef (PndEmcMultiWaveform, 2)
 

Private Attributes

std::vector< std::vector
< Double_t > > 
fSignals
 
Int_t fActiveWaveform
 

Friends

class PndEmcAbsWaveformModifier
 

Detailed Description

Class to hold multiple waveforms from one Emc Hit / ADC readout.

Author
Ch. Hammann chamm.nosp@m.ann@.nosp@m.hiskp.nosp@m..uni.nosp@m.-bonn.nosp@m..de

Definition at line 23 of file PndEmcMultiWaveform.h.

Constructor & Destructor Documentation

PndEmcMultiWaveform::PndEmcMultiWaveform ( )
inline

Definition at line 29 of file PndEmcMultiWaveform.h.

29 :PndEmcWaveform(),fSignals(1,std::vector<Double_t>(0,0.)),fActiveWaveform(1){};
std::vector< std::vector< Double_t > > fSignals
PndEmcMultiWaveform::PndEmcMultiWaveform ( Int_t  trackid,
Long_t  detId,
Long_t  waveform_length = 128,
Int_t  hitIndex = -1 
)
virtual PndEmcMultiWaveform::~PndEmcMultiWaveform ( )
inlinevirtual

Definition at line 33 of file PndEmcMultiWaveform.h.

References PndEmcWaveform::fSignal, and fSignals.

33  {
34  fSignal.clear();
35  fSignals.clear();
36  };
std::vector< Double_t > fSignal
std::vector< std::vector< Double_t > > fSignals

Member Function Documentation

void PndEmcWaveform::AddElecNoise ( Double_t  width)
inherited

Definition at line 236 of file PndEmcWaveform.cxx.

References Double_t, PndEmcWaveform::fSignal, PndEmcWaveform::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 
)
inherited

Definition at line 259 of file PndEmcWaveform.cxx.

References Double_t, PndEmcWaveform::fBaselineValue, PndEmcWaveform::fSignal, PndEmcWaveform::fSignalError, PndEmcWaveform::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)
inlineinherited

Definition at line 135 of file PndEmcWaveform.h.

References PndEmcWaveform::fEvt.

Referenced by PndEmcHitsToWaveform::Exec(), and PndEmcWaveform::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 
)
inherited

Definition at line 291 of file PndEmcWaveform.cxx.

References Double_t, PndEmcWaveform::fBaselineValue, PndEmcWaveform::fSignal, PndEmcWaveform::fSignalError, PndEmcWaveform::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
PndEmcMultiWaveform::ClassDef ( PndEmcMultiWaveform  ,
 
)
private
virtual void PndEmcMultiWaveform::Clear ( Option_t *  )
inlinevirtual

Reimplemented from PndEmcWaveform.

Definition at line 43 of file PndEmcMultiWaveform.h.

References PndEmcWaveform::fSignal, and fSignals.

43 {fSignal.clear();fSignals.clear();};
std::vector< Double_t > fSignal
std::vector< std::vector< Double_t > > fSignals
void PndEmcMultiWaveform::clearAndReset ( )
virtual

Reimplemented from PndEmcWaveform.

Definition at line 25 of file PndEmcMultiWaveform.cxx.

References fSignals, and PndEmcWaveform::fWaveformLength.

25  {
26  fSignals.clear();
27  fSignals.at(0)=std::vector<Double_t>(fWaveformLength,0.);
28 }
std::vector< std::vector< Double_t > > fSignals
void PndEmcWaveform::Digitise ( Double_t  oneBitResolution)
inherited

Definition at line 249 of file PndEmcWaveform.cxx.

References Double_t, PndEmcWaveform::fSignal, PndEmcWaveform::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)
virtualinherited

Definition at line 373 of file PndEmcWaveform.cxx.

References PndEmcWaveform::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
inlineinherited

Definition at line 132 of file PndEmcWaveform.h.

References PndEmcWaveform::fSampleRate, and PndEmcWaveform::fWaveformLength.

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

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

Definition at line 45 of file PndEmcMultiWaveform.h.

References fActiveWaveform.

Referenced by PndEmcHighLowPSA::Process().

45 {return fActiveWaveform;};
Double_t PndEmcWaveform::GetBaseline ( ) const
inlineinherited
long PndEmcWaveform::GetDetectorId ( ) const
inlineinherited
const std::vector<Int_t>& PndEmcWaveform::GetEvtList ( ) const
inlineinherited
Int_t PndEmcWaveform::GetHitIndex ( ) const
inlineinherited
Short_t PndEmcWaveform::GetModule ( ) const
inlineinherited
Double_t PndEmcWaveform::GetNormalisation ( Double_t  sampleRate,
PndEmcAbsPulseshape pulseshape 
) const
inherited

Definition at line 149 of file PndEmcWaveform.cxx.

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

Referenced by PndEmcWaveform::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 PndEmcMultiWaveform::GetNumberOfWaveforms ( ) const
inline

Definition at line 44 of file PndEmcMultiWaveform.h.

References fSignals.

Referenced by PndEmcMultiWaveformToCalibratedDigi::Exec().

44 {return fSignals.size();};
std::vector< std::vector< Double_t > > fSignals
Int_t PndEmcWaveform::GetPileupCount ( ) const
inlineinherited

Definition at line 133 of file PndEmcWaveform.h.

References PndEmcWaveform::fEvt.

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

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

Definition at line 100 of file PndEmcWaveform.h.

References PndEmcWaveform::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
inherited

Definition at line 143 of file PndEmcWaveform.cxx.

References PndEmcWaveform::GetNormalisation().

Referenced by PndEmcHitsToWaveform::Init().

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

Reimplemented from PndEmcWaveform.

Definition at line 30 of file PndEmcMultiWaveform.cxx.

References fActiveWaveform, and fSignals.

30  {
31  if( fActiveWaveform <1 || fActiveWaveform >= (int)fSignals.size()){
32  return fSignals.at(0);
33  }else{
34  return fSignals.at(fActiveWaveform);
35  }
36 }
std::vector< std::vector< Double_t > > fSignals
virtual std::vector<Double_t> PndEmcWaveform::GetSignalError ( ) const
inlinevirtualinherited

Definition at line 86 of file PndEmcWaveform.h.

References PndEmcWaveform::fSignalError.

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

Definition at line 339 of file PndEmcWaveform.cxx.

References emcMap, PndEmcWaveform::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
inlineinherited
Int_t PndEmcWaveform::GetWaveformLength ( ) const
inlineinherited

Definition at line 103 of file PndEmcWaveform.h.

References PndEmcWaveform::fWaveformLength.

Referenced by PndEmcAnalysis::Exec().

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

Definition at line 432 of file PndEmcWaveform.cxx.

References Double_t, PndEmcWaveform::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 
)
inherited

Definition at line 190 of file PndEmcWaveform.cxx.

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

Referenced by PndEmcWaveform::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 ( )
inherited

Definition at line 325 of file PndEmcWaveform.cxx.

References Double_t, and PndEmcWaveform::fSignal.

Referenced by PndEmcAnalysis::Exec(), PndEmcWaveform::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
virtualinherited

Definition at line 368 of file PndEmcWaveform.cxx.

References PndEmcWaveform::fDetectorId.

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

Definition at line 380 of file PndEmcWaveform.cxx.

References PndEmcWaveform::AddEvt(), PndEmcWaveform::fSampleRate, PndEmcWaveform::fSignal, PndEmcWaveform::fSignalError, PndEmcWaveform::fWaveformLength, PndEmcWaveform::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
virtualinherited

Definition at line 350 of file PndEmcWaveform.cxx.

References PndEmcWaveform::BarrelOverlapTime, Double_t, PndEmcWaveform::ForwardOverlapTime, PndEmcWaveform::GetActiveTime(), PndEmcWaveform::GetDetectorId(), PndEmcWaveform::GetModule(), and PndEmcWaveform::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
virtualinherited

Definition at line 345 of file PndEmcWaveform.cxx.

References PndEmcWaveform::fDetectorId.

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

Definition at line 38 of file PndEmcMultiWaveform.cxx.

References fSignals, and PndEmcWaveform::fWaveformLength.

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

38  { // length //[R.K.03/2017] unused variable(s)
39  if(Waveform < 0){
40  return;
41  }
42  if(Waveform>=(int)fSignals.size()){
43  fSignals.insert(fSignals.end(),Waveform-fSignals.size()+1,std::vector<Double_t>(fWaveformLength,0.));
44  }
45  fSignals[Waveform]= signal;
46 }
std::vector< std::vector< Double_t > > fSignals
void PndEmcWaveform::SetWaveform ( std::vector< Double_t > &  signal,
Int_t  length 
)
inherited

Definition at line 427 of file PndEmcWaveform.cxx.

References PndEmcWaveform::fSignal, and PndEmcWaveform::fWaveformLength.

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

Definition at line 415 of file PndEmcWaveform.cxx.

References Double_t, PndEmcWaveform::fSampleRate, PndEmcWaveform::fSignal, PndEmcWaveform::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 
)
inherited

Definition at line 173 of file PndEmcWaveform.cxx.

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

Referenced by PndEmcHitsToWaveform::Exec(), PndEmcWaveform::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 26 of file PndEmcMultiWaveform.h.

Member Data Documentation

Double_t PndEmcWaveform::BarrelOverlapTime = 700
staticprotectedinherited

Definition at line 157 of file PndEmcWaveform.h.

Referenced by PndEmcWaveform::operator<().

Int_t PndEmcMultiWaveform::fActiveWaveform
private

Definition at line 51 of file PndEmcMultiWaveform.h.

Referenced by GetActiveWaveform(), GetSignal(), and SetActiveWaveform().

Double_t PndEmcWaveform::fBaselineValue
protectedinherited
Int_t PndEmcWaveform::fDetectorId
protectedinherited
std::vector<Int_t> PndEmcWaveform::fEvt
protectedinherited
Int_t PndEmcWaveform::fHitIndex
protectedinherited

Definition at line 149 of file PndEmcWaveform.h.

Referenced by PndEmcWaveform::GetHitIndex().

Double_t PndEmcWaveform::ForwardOverlapTime = 390
staticprotectedinherited

Definition at line 158 of file PndEmcWaveform.h.

Referenced by PndEmcWaveform::operator<().

Double_t PndEmcWaveform::fSampleRate
protectedinherited
std::vector<Double_t> PndEmcWaveform::fSignal
protectedinherited
std::vector<Double_t> PndEmcWaveform::fSignalError
protectedinherited
std::vector<std::vector<Double_t> > PndEmcMultiWaveform::fSignals
private
Int_t PndEmcWaveform::fTrackId
protectedinherited

Definition at line 144 of file PndEmcWaveform.h.

Referenced by PndEmcWaveform::GetTrackId().

Int_t PndEmcWaveform::fWaveformLength
protectedinherited
Double_t PndEmcWaveform::ShashylikOverlapTime = 130
staticprotectedinherited

Definition at line 159 of file PndEmcWaveform.h.

Referenced by PndEmcWaveform::operator<().


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