Main Page | Namespace List | Class Hierarchy | Alphabetical List | Class List | Directories | File List | Namespace Members | Class Members | File Members | Related Pages

EmcWaveform Class Reference

#include <EmcWaveform.h>

List of all members.

Public Member Functions

 EmcWaveform (int, double, double)
 EmcWaveform ()
 EmcWaveform (int, double, double)
 EmcWaveform ()
int frontEdgeTrg (double thres)
int frontEdgeTrg (double thres)
double getADCTrg (int time)
double getADCTrg (int time)
double GetPeakTime () const
double GetPeakTime () const
double GetPeakTimeTrg () const
double GetPeakTimeTrg () const
double GetSampleTime () const
double GetSampleTime () const
double GetSampleTimeTrg () const
double GetSampleTimeTrg () const
double GetTau () const
double GetTau () const
double GetTauTrg () const
double GetTauTrg () const
double GetTimeOffset () const
double GetTimeOffset () const
double GetTimeOffsetTrg () const
double GetTimeOffsetTrg () const
double * GetWave () const
double * GetWave () const
int length () const
int length () const
void makeWaveform (double energy, double time)
void makeWaveform (double energy, double time)
void makeWaveformTrg (double energy, double time)
void makeWaveformTrg (double energy, double time)
double max (int &binOfMax) const
double max (int &binOfMax) const
EmcWaveformoperator *= (const double)
EmcWaveformoperator *= (const double)
EmcWaveformoperator+= (const EmcWaveform &)
EmcWaveformoperator+= (const EmcWaveform &)
EmcWaveformoperator/= (const double)
EmcWaveformoperator/= (const double)
EmcWaveformoperator= (const EmcWaveform &)
EmcWaveformoperator= (const EmcWaveform &)
double & operator[] (int) const
double & operator[] (int) const
void print ()
void print ()
 ~EmcWaveform ()
 ~EmcWaveform ()

Protected Attributes

int array_size
double * emcWave
double * emcWave

Private Attributes

double m_peakTime
double m_peakTimeTrg
double m_sampleTime
double m_sampleTimeTrg
double m_tau
double m_tauTrg
double m_timeOffset
double m_timeOffsetTrg


Constructor & Destructor Documentation

EmcWaveform::EmcWaveform  ) 
 

00018 {
00019   array_size = 60;
00020   m_tau = 1000.;
00021   m_sampleTime = 50.;
00022   m_peakTime = 4000.;
00023   m_timeOffset = 2500.;
00024   emcWave=new double[array_size];
00025 
00026   for (int i=0; i<array_size;i++)
00027     emcWave[i]=0;
00028 }

EmcWaveform::EmcWaveform int  ,
double  ,
double 
 

00031   :m_tau(tau),m_sampleTime(sampleTime)
00032 {
00033   if(size>0){
00034     array_size=size;
00035     emcWave=new double[array_size];
00036     double *init=emcWave+array_size;
00037     while(init!=emcWave) *--init=0.0;
00038   }
00039 }

EmcWaveform::~EmcWaveform  ) 
 

00042                          {
00043   delete [] emcWave;
00044   emcWave=0;
00045 }

EmcWaveform::EmcWaveform  ) 
 

EmcWaveform::EmcWaveform int  ,
double  ,
double 
 

EmcWaveform::~EmcWaveform  ) 
 


Member Function Documentation

int EmcWaveform::frontEdgeTrg double  thres  ) 
 

int EmcWaveform::frontEdgeTrg double  thres  ) 
 

00102 {
00103   int binOfMax = -1;
00104   for (int i=0;i<array_size;i++)
00105   {
00106     if (emcWave[i]>thres)
00107     {
00108       binOfMax = i;
00109       break;
00110     }
00111   }
00112   return binOfMax;
00113 }

double EmcWaveform::getADCTrg int  time  ) 
 

double EmcWaveform::getADCTrg int  time  ) 
 

00093 {
00094   double adc = emcWave[0];
00095   for(int i = 0; i < array_size; i++) {
00096     if(time >= i*m_sampleTime && time < (i+1)*m_sampleTime) adc = emcWave[i];
00097   } 
00098   return adc;
00099 }   

double EmcWaveform::GetPeakTime  )  const [inline]
 

00067 { return m_peakTime; }

double EmcWaveform::GetPeakTime  )  const [inline]
 

00067 { return m_peakTime; }

double EmcWaveform::GetPeakTimeTrg  )  const [inline]
 

00068 { return m_peakTimeTrg; }

double EmcWaveform::GetPeakTimeTrg  )  const [inline]
 

00068 { return m_peakTimeTrg; }

double EmcWaveform::GetSampleTime  )  const [inline]
 

00065 { return m_sampleTime; }

double EmcWaveform::GetSampleTime  )  const [inline]
 

00065 { return m_sampleTime; }

double EmcWaveform::GetSampleTimeTrg  )  const [inline]
 

00066 { return m_sampleTimeTrg; }

double EmcWaveform::GetSampleTimeTrg  )  const [inline]
 

00066 { return m_sampleTimeTrg; }

double EmcWaveform::GetTau  )  const [inline]
 

00063 { return m_tau; }

double EmcWaveform::GetTau  )  const [inline]
 

00063 { return m_tau; }

double EmcWaveform::GetTauTrg  )  const [inline]
 

00064 { return m_tauTrg; }

double EmcWaveform::GetTauTrg  )  const [inline]
 

00064 { return m_tauTrg; }

double EmcWaveform::GetTimeOffset  )  const [inline]
 

00069 { return m_timeOffset; }

double EmcWaveform::GetTimeOffset  )  const [inline]
 

00069 { return m_timeOffset; }

double EmcWaveform::GetTimeOffsetTrg  )  const [inline]
 

00070 { return m_timeOffsetTrg; }

double EmcWaveform::GetTimeOffsetTrg  )  const [inline]
 

00070 { return m_timeOffsetTrg; }

double* EmcWaveform::GetWave  )  const [inline]
 

00062 { return emcWave; }

double* EmcWaveform::GetWave  )  const [inline]
 

00062 { return emcWave; }

int EmcWaveform::length  )  const [inline]
 

00061 {  return array_size;}

int EmcWaveform::length  )  const [inline]
 

00061 {  return array_size;}

void EmcWaveform::makeWaveform double  energy,
double  time
 

void EmcWaveform::makeWaveform double  energy,
double  time
 

00132 {
00133   double time0 = time*m_sampleTime+m_timeOffset-m_peakTime; //start time
00134   double tempTime = 0;  //time for each bin
00135 
00136   double peak = m_peakTime*m_peakTime*m_peakTime*m_peakTime*exp(-m_peakTime/m_tau)/24;
00137 
00138   for (int i=0;i<array_size;i++)
00139   {
00140     tempTime = i*m_sampleTime + m_timeOffset - time0;
00141     if(tempTime>0)
00142       emcWave[i] += 
00143         energy*tempTime*tempTime*tempTime*tempTime*exp(-tempTime/m_tau)/(24*peak);
00144   }
00145 }

void EmcWaveform::makeWaveformTrg double  energy,
double  time
 

void EmcWaveform::makeWaveformTrg double  energy,
double  time
 

00116 { 
00117   double time0 = time*m_sampleTime+m_timeOffset-m_peakTime; //start time
00118   double tempTime = 0;  //time for each bin
00119   
00120   double peak = m_peakTime*m_peakTime*m_peakTime*m_peakTime*exp(-m_peakTime/m_tau)/24;
00121   
00122   for (int i=0;i<array_size;i++)
00123   { 
00124     tempTime = i*m_sampleTime + m_timeOffset - time0;
00125     if(tempTime>0)
00126       emcWave[i] +=
00127         energy*tempTime*tempTime*tempTime*tempTime*exp(-tempTime/m_tau)/(24*peak);
00128   }
00129 }

double EmcWaveform::max int &  binOfMax  )  const
 

double EmcWaveform::max int &  binOfMax  )  const
 

00078 {
00079   double maxi=emcWave[0];
00080   binOfMax = 0;
00081   for (int i=1;i<array_size;i++)
00082   {
00083     if (emcWave[i]>maxi) 
00084     {
00085       maxi=emcWave[i];
00086       binOfMax = i;
00087     }
00088   }
00089   return maxi;
00090 }

EmcWaveform& EmcWaveform::operator *= const   double  ) 
 

EmcWaveform & EmcWaveform::operator *= const   double  ) 
 

00049 {
00050   for (int i=0; i<array_size;i++) emcWave[i]*=scale;
00051   return *this;
00052 }

EmcWaveform& EmcWaveform::operator+= const EmcWaveform  ) 
 

EmcWaveform & EmcWaveform::operator+= const EmcWaveform  ) 
 

00061 {
00062   for (int i=0; i<array_size;i++) emcWave[i]+=assign[i];
00063   return *this;
00064 }

EmcWaveform& EmcWaveform::operator/= const   double  ) 
 

EmcWaveform & EmcWaveform::operator/= const   double  ) 
 

00055 {
00056   for (int i=0; i<array_size;i++) emcWave[i]/=scale;
00057   return *this;
00058 }

EmcWaveform& EmcWaveform::operator= const EmcWaveform  ) 
 

EmcWaveform & EmcWaveform::operator= const EmcWaveform  ) 
 

00067 {
00068   if (this != &assign) {
00069     if (emcWave!=0) delete [] emcWave;
00070     emcWave=new double[assign.array_size];
00071     array_size=assign.array_size;
00072     for (int i=0;i<array_size;i++) emcWave[i]=assign[i];
00073   }
00074   return *this;
00075 }

double& EmcWaveform::operator[] int   )  const [inline]
 

double & EmcWaveform::operator[] int   )  const [inline]
 

00101 {
00102   if(index<0 || index>array_size-1){
00103     cout << "Array bounds exceeded. Index " << index << endl;
00104     ::abort();
00105   }
00106   return emcWave[index];
00107 }

void EmcWaveform::print  ) 
 

void EmcWaveform::print  ) 
 

00148 {
00149   cout<<"New Wave!"<<endl;
00150   for(int i=0;i<array_size;i++)
00151     cout<<emcWave[i]<<"\t";
00152   cout<<endl;
00153 }


Member Data Documentation

int EmcWaveform::array_size [protected]
 

double* EmcWaveform::emcWave [protected]
 

double* EmcWaveform::emcWave [protected]
 

double EmcWaveform::m_peakTime [private]
 

double EmcWaveform::m_peakTimeTrg [private]
 

double EmcWaveform::m_sampleTime [private]
 

double EmcWaveform::m_sampleTimeTrg [private]
 

double EmcWaveform::m_tau [private]
 

double EmcWaveform::m_tauTrg [private]
 

double EmcWaveform::m_timeOffset [private]
 

double EmcWaveform::m_timeOffsetTrg [private]
 


The documentation for this class was generated from the following files:
Generated on Wed Feb 2 16:02:26 2011 for BOSS6.5.5 by  doxygen 1.3.9.1