#include <EmcWaveform.h>
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 |
EmcWaveform & | operator *= (const double) |
EmcWaveform & | operator *= (const double) |
EmcWaveform & | operator+= (const EmcWaveform &) |
EmcWaveform & | operator+= (const EmcWaveform &) |
EmcWaveform & | operator/= (const double) |
EmcWaveform & | operator/= (const double) |
EmcWaveform & | operator= (const EmcWaveform &) |
EmcWaveform & | operator= (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 |
|
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 }
|
|
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 }
|
|
00042 { 00043 delete [] emcWave; 00044 emcWave=0; 00045 }
|
|
|
|
|
|
|
|
|
|
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 }
|
|
|
|
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 }
|
|
00067 { return m_peakTime; }
|
|
00067 { return m_peakTime; }
|
|
00068 { return m_peakTimeTrg; }
|
|
00068 { return m_peakTimeTrg; }
|
|
00065 { return m_sampleTime; }
|
|
00065 { return m_sampleTime; }
|
|
00066 { return m_sampleTimeTrg; }
|
|
00066 { return m_sampleTimeTrg; }
|
|
00063 { return m_tau; }
|
|
00063 { return m_tau; }
|
|
00064 { return m_tauTrg; }
|
|
00064 { return m_tauTrg; }
|
|
00069 { return m_timeOffset; }
|
|
00069 { return m_timeOffset; }
|
|
00070 { return m_timeOffsetTrg; }
|
|
00070 { return m_timeOffsetTrg; }
|
|
00062 { return emcWave; }
|
|
00062 { return emcWave; }
|
|
00061 { return array_size;}
|
|
00061 { return array_size;}
|
|
|
|
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 }
|
|
|
|
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 }
|
|
|
|
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 }
|
|
|
|
00049 { 00050 for (int i=0; i<array_size;i++) emcWave[i]*=scale; 00051 return *this; 00052 }
|
|
|
|
00061 { 00062 for (int i=0; i<array_size;i++) emcWave[i]+=assign[i]; 00063 return *this; 00064 }
|
|
|
|
00055 { 00056 for (int i=0; i<array_size;i++) emcWave[i]/=scale; 00057 return *this; 00058 }
|
|
|
|
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 }
|
|
|
|
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 }
|
|
|
|
00148 { 00149 cout<<"New Wave!"<<endl; 00150 for(int i=0;i<array_size;i++) 00151 cout<<emcWave[i]<<"\t"; 00152 cout<<endl; 00153 }
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|