BOSS 8.0.0
BESIII Offline Software System
Loading...
Searching...
No Matches
EmcWaveform Class Reference

#include <EmcWaveform.h>

Public Member Functions

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

Protected Attributes

double * emcWave
int array_size

Detailed Description

Constructor & Destructor Documentation

◆ EmcWaveform() [1/6]

EmcWaveform::EmcWaveform ( )

Definition at line 17 of file EmcWaveform.cxx.

17 {
18 array_size = 60;
19 m_tau = 1000.;
20 m_sampleTime = 50.;
21 m_peakTime = 4000.;
22 m_timeOffset = 2500.;
23 emcWave = new double[array_size];
24
25 for ( int i = 0; i < array_size; i++ ) emcWave[i] = 0;
26}

Referenced by operator*=(), operator+=(), operator/=(), and operator=().

◆ EmcWaveform() [2/6]

EmcWaveform::EmcWaveform ( int size,
double tau,
double sampleTime )

Definition at line 28 of file EmcWaveform.cxx.

29 : m_tau( tau ), m_sampleTime( sampleTime ) {
30 if ( size > 0 )
31 {
32 array_size = size;
33 emcWave = new double[array_size];
34 double* init = emcWave + array_size;
35 while ( init != emcWave ) *--init = 0.0;
36 }
37}
InputRawInit init

◆ ~EmcWaveform() [1/3]

EmcWaveform::~EmcWaveform ( )

Definition at line 40 of file EmcWaveform.cxx.

40 {
41 delete[] emcWave;
42 emcWave = 0;
43}

◆ EmcWaveform() [3/6]

EmcWaveform::EmcWaveform ( )

◆ EmcWaveform() [4/6]

EmcWaveform::EmcWaveform ( int ,
double ,
double  )

◆ ~EmcWaveform() [2/3]

EmcWaveform::~EmcWaveform ( )

◆ EmcWaveform() [5/6]

EmcWaveform::EmcWaveform ( )

◆ EmcWaveform() [6/6]

EmcWaveform::EmcWaveform ( int ,
double ,
double  )

◆ ~EmcWaveform() [3/3]

EmcWaveform::~EmcWaveform ( )

Member Function Documentation

◆ frontEdgeTrg() [1/3]

int EmcWaveform::frontEdgeTrg ( double thres)

Definition at line 95 of file EmcWaveform.cxx.

95 {
96 int binOfMax = -1;
97 for ( int i = 0; i < array_size; i++ )
98 {
99 if ( emcWave[i] > thres )
100 {
101 binOfMax = i;
102 break;
103 }
104 }
105 return binOfMax;
106}

Referenced by BesTrigL1::getEmcAnalogSig().

◆ frontEdgeTrg() [2/3]

int EmcWaveform::frontEdgeTrg ( double thres)

◆ frontEdgeTrg() [3/3]

int EmcWaveform::frontEdgeTrg ( double thres)

◆ getADCTrg() [1/3]

double EmcWaveform::getADCTrg ( int time)

Definition at line 86 of file EmcWaveform.cxx.

86 {
87 double adc = emcWave[0];
88 for ( int i = 0; i < array_size; i++ )
89 {
90 if ( time >= i * m_sampleTime && time < ( i + 1 ) * m_sampleTime ) adc = emcWave[i];
91 }
92 return adc;
93}
Double_t time

◆ getADCTrg() [2/3]

double EmcWaveform::getADCTrg ( int time)

◆ getADCTrg() [3/3]

double EmcWaveform::getADCTrg ( int time)

◆ GetPeakTime() [1/3]

double EmcWaveform::GetPeakTime ( ) const
inline

Definition at line 66 of file Emc/EmcWaveform/include/EmcWaveform/EmcWaveform.h.

66{ return m_peakTime; }

◆ GetPeakTime() [2/3]

double EmcWaveform::GetPeakTime ( ) const
inline

Definition at line 66 of file InstallArea/x86_64-el9-gcc13-dbg/include/EmcWaveform/EmcWaveform.h.

66{ return m_peakTime; }

◆ GetPeakTime() [3/3]

double EmcWaveform::GetPeakTime ( ) const
inline

Definition at line 66 of file InstallArea/x86_64-el9-gcc13-opt/include/EmcWaveform/EmcWaveform.h.

66{ return m_peakTime; }

◆ GetPeakTimeTrg() [1/3]

double EmcWaveform::GetPeakTimeTrg ( ) const
inline

Definition at line 67 of file Emc/EmcWaveform/include/EmcWaveform/EmcWaveform.h.

67{ return m_peakTimeTrg; }

◆ GetPeakTimeTrg() [2/3]

double EmcWaveform::GetPeakTimeTrg ( ) const
inline

Definition at line 67 of file InstallArea/x86_64-el9-gcc13-dbg/include/EmcWaveform/EmcWaveform.h.

67{ return m_peakTimeTrg; }

◆ GetPeakTimeTrg() [3/3]

double EmcWaveform::GetPeakTimeTrg ( ) const
inline

Definition at line 67 of file InstallArea/x86_64-el9-gcc13-opt/include/EmcWaveform/EmcWaveform.h.

67{ return m_peakTimeTrg; }

◆ GetSampleTime() [1/3]

double EmcWaveform::GetSampleTime ( ) const
inline

Definition at line 64 of file Emc/EmcWaveform/include/EmcWaveform/EmcWaveform.h.

64{ return m_sampleTime; }

◆ GetSampleTime() [2/3]

double EmcWaveform::GetSampleTime ( ) const
inline

Definition at line 64 of file InstallArea/x86_64-el9-gcc13-dbg/include/EmcWaveform/EmcWaveform.h.

64{ return m_sampleTime; }

◆ GetSampleTime() [3/3]

double EmcWaveform::GetSampleTime ( ) const
inline

Definition at line 64 of file InstallArea/x86_64-el9-gcc13-opt/include/EmcWaveform/EmcWaveform.h.

64{ return m_sampleTime; }

◆ GetSampleTimeTrg() [1/3]

double EmcWaveform::GetSampleTimeTrg ( ) const
inline

Definition at line 65 of file Emc/EmcWaveform/include/EmcWaveform/EmcWaveform.h.

65{ return m_sampleTimeTrg; }

◆ GetSampleTimeTrg() [2/3]

double EmcWaveform::GetSampleTimeTrg ( ) const
inline

Definition at line 65 of file InstallArea/x86_64-el9-gcc13-dbg/include/EmcWaveform/EmcWaveform.h.

65{ return m_sampleTimeTrg; }

◆ GetSampleTimeTrg() [3/3]

double EmcWaveform::GetSampleTimeTrg ( ) const
inline

Definition at line 65 of file InstallArea/x86_64-el9-gcc13-opt/include/EmcWaveform/EmcWaveform.h.

65{ return m_sampleTimeTrg; }

◆ GetTau() [1/3]

double EmcWaveform::GetTau ( ) const
inline

Definition at line 62 of file Emc/EmcWaveform/include/EmcWaveform/EmcWaveform.h.

62{ return m_tau; }

◆ GetTau() [2/3]

double EmcWaveform::GetTau ( ) const
inline

Definition at line 62 of file InstallArea/x86_64-el9-gcc13-dbg/include/EmcWaveform/EmcWaveform.h.

62{ return m_tau; }

◆ GetTau() [3/3]

double EmcWaveform::GetTau ( ) const
inline

Definition at line 62 of file InstallArea/x86_64-el9-gcc13-opt/include/EmcWaveform/EmcWaveform.h.

62{ return m_tau; }

◆ GetTauTrg() [1/3]

double EmcWaveform::GetTauTrg ( ) const
inline

Definition at line 63 of file Emc/EmcWaveform/include/EmcWaveform/EmcWaveform.h.

63{ return m_tauTrg; }

◆ GetTauTrg() [2/3]

double EmcWaveform::GetTauTrg ( ) const
inline

Definition at line 63 of file InstallArea/x86_64-el9-gcc13-dbg/include/EmcWaveform/EmcWaveform.h.

63{ return m_tauTrg; }

◆ GetTauTrg() [3/3]

double EmcWaveform::GetTauTrg ( ) const
inline

Definition at line 63 of file InstallArea/x86_64-el9-gcc13-opt/include/EmcWaveform/EmcWaveform.h.

63{ return m_tauTrg; }

◆ GetTimeOffset() [1/3]

double EmcWaveform::GetTimeOffset ( ) const
inline

Definition at line 68 of file Emc/EmcWaveform/include/EmcWaveform/EmcWaveform.h.

68{ return m_timeOffset; }

◆ GetTimeOffset() [2/3]

double EmcWaveform::GetTimeOffset ( ) const
inline

Definition at line 68 of file InstallArea/x86_64-el9-gcc13-dbg/include/EmcWaveform/EmcWaveform.h.

68{ return m_timeOffset; }

◆ GetTimeOffset() [3/3]

double EmcWaveform::GetTimeOffset ( ) const
inline

Definition at line 68 of file InstallArea/x86_64-el9-gcc13-opt/include/EmcWaveform/EmcWaveform.h.

68{ return m_timeOffset; }

◆ GetTimeOffsetTrg() [1/3]

double EmcWaveform::GetTimeOffsetTrg ( ) const
inline

Definition at line 69 of file Emc/EmcWaveform/include/EmcWaveform/EmcWaveform.h.

69{ return m_timeOffsetTrg; }

◆ GetTimeOffsetTrg() [2/3]

double EmcWaveform::GetTimeOffsetTrg ( ) const
inline

Definition at line 69 of file InstallArea/x86_64-el9-gcc13-dbg/include/EmcWaveform/EmcWaveform.h.

69{ return m_timeOffsetTrg; }

◆ GetTimeOffsetTrg() [3/3]

double EmcWaveform::GetTimeOffsetTrg ( ) const
inline

Definition at line 69 of file InstallArea/x86_64-el9-gcc13-opt/include/EmcWaveform/EmcWaveform.h.

69{ return m_timeOffsetTrg; }

◆ GetWave() [1/3]

double * EmcWaveform::GetWave ( ) const
inline

Definition at line 61 of file Emc/EmcWaveform/include/EmcWaveform/EmcWaveform.h.

61{ return emcWave; }

◆ GetWave() [2/3]

double * EmcWaveform::GetWave ( ) const
inline

◆ GetWave() [3/3]

double * EmcWaveform::GetWave ( ) const
inline

◆ length() [1/3]

int EmcWaveform::length ( ) const
inline

Definition at line 60 of file Emc/EmcWaveform/include/EmcWaveform/EmcWaveform.h.

60{ return array_size; }

◆ length() [2/3]

int EmcWaveform::length ( ) const
inline

◆ length() [3/3]

int EmcWaveform::length ( ) const
inline

◆ makeWaveform() [1/3]

void EmcWaveform::makeWaveform ( double energy,
double time )

Definition at line 124 of file EmcWaveform.cxx.

124 {
125 double time0 = time * m_sampleTime + m_timeOffset - m_peakTime; // start time
126 double tempTime = 0; // time for each bin
127
128 double peak =
129 m_peakTime * m_peakTime * m_peakTime * m_peakTime * exp( -m_peakTime / m_tau ) / 24;
130
131 for ( int i = 0; i < array_size; i++ )
132 {
133 tempTime = i * m_sampleTime + m_timeOffset - time0;
134 if ( tempTime > 0 )
135 emcWave[i] += energy * tempTime * tempTime * tempTime * tempTime *
136 exp( -tempTime / m_tau ) / ( 24 * peak );
137 }
138}
EvtComplex exp(const EvtComplex &c)
************Class m_ypar INTEGER m_KeyWgt INTEGER m_KeyIHVP INTEGER m_KeyGPS INTEGER m_IsBeamPolarized INTEGER m_EvtGenInterface DOUBLE PRECISION m_Emin DOUBLE PRECISION m_sphot DOUBLE PRECISION m_Xenph DOUBLE PRECISION m_q2 DOUBLE PRECISION m_PolBeam2 DOUBLE PRECISION m_xErrPb *COMMON c_KK2f $ !CMS energy average $ !Spin Polarization vector first beam $ !Spin Polarization vector second beam $ !Beam energy spread[GeV] $ !minimum hadronization energy[GeV] $ !input READ never touch them !$ !debug facility $ !maximum weight $ !inverse alfaQED $ !minimum real photon energy
Definition KK2f.h:50

Referenced by EmcDigi::operator+=().

◆ makeWaveform() [2/3]

void EmcWaveform::makeWaveform ( double energy,
double time )

◆ makeWaveform() [3/3]

void EmcWaveform::makeWaveform ( double energy,
double time )

◆ makeWaveformTrg() [1/3]

void EmcWaveform::makeWaveformTrg ( double energy,
double time )

Definition at line 108 of file EmcWaveform.cxx.

108 {
109 double time0 = time * m_sampleTime + m_timeOffset - m_peakTime; // start time
110 double tempTime = 0; // time for each bin
111
112 double peak =
113 m_peakTime * m_peakTime * m_peakTime * m_peakTime * exp( -m_peakTime / m_tau ) / 24;
114
115 for ( int i = 0; i < array_size; i++ )
116 {
117 tempTime = i * m_sampleTime + m_timeOffset - time0;
118 if ( tempTime > 0 )
119 emcWave[i] += energy * tempTime * tempTime * tempTime * tempTime *
120 exp( -tempTime / m_tau ) / ( 24 * peak );
121 }
122}

Referenced by BesTrigL1::getEmcAnalogSig().

◆ makeWaveformTrg() [2/3]

void EmcWaveform::makeWaveformTrg ( double energy,
double time )

◆ makeWaveformTrg() [3/3]

void EmcWaveform::makeWaveformTrg ( double energy,
double time )

◆ max() [1/3]

double EmcWaveform::max ( int & binOfMax) const

Definition at line 72 of file EmcWaveform.cxx.

72 {
73 double maxi = emcWave[0];
74 binOfMax = 0;
75 for ( int i = 1; i < array_size; i++ )
76 {
77 if ( emcWave[i] > maxi )
78 {
79 maxi = emcWave[i];
80 binOfMax = i;
81 }
82 }
83 return maxi;
84}

Referenced by BesTrigL1::findEmcPeakTime(), and EmcDigi::operator+=().

◆ max() [2/3]

double EmcWaveform::max ( int & binOfMax) const

◆ max() [3/3]

double EmcWaveform::max ( int & binOfMax) const

◆ operator*=() [1/3]

EmcWaveform & EmcWaveform::operator*= ( const double scale)

Definition at line 46 of file EmcWaveform.cxx.

46 {
47 for ( int i = 0; i < array_size; i++ ) emcWave[i] *= scale;
48 return *this;
49}

◆ operator*=() [2/3]

EmcWaveform & EmcWaveform::operator*= ( const double )

◆ operator*=() [3/3]

EmcWaveform & EmcWaveform::operator*= ( const double )

◆ operator+=() [1/3]

EmcWaveform & EmcWaveform::operator+= ( const EmcWaveform & assign)

Definition at line 56 of file EmcWaveform.cxx.

56 {
57 for ( int i = 0; i < array_size; i++ ) emcWave[i] += assign[i];
58 return *this;
59}

◆ operator+=() [2/3]

EmcWaveform & EmcWaveform::operator+= ( const EmcWaveform & )

◆ operator+=() [3/3]

EmcWaveform & EmcWaveform::operator+= ( const EmcWaveform & )

◆ operator/=() [1/3]

EmcWaveform & EmcWaveform::operator/= ( const double scale)

Definition at line 51 of file EmcWaveform.cxx.

51 {
52 for ( int i = 0; i < array_size; i++ ) emcWave[i] /= scale;
53 return *this;
54}

◆ operator/=() [2/3]

EmcWaveform & EmcWaveform::operator/= ( const double )

◆ operator/=() [3/3]

EmcWaveform & EmcWaveform::operator/= ( const double )

◆ operator=() [1/3]

EmcWaveform & EmcWaveform::operator= ( const EmcWaveform & assign)

Definition at line 61 of file EmcWaveform.cxx.

61 {
62 if ( this != &assign )
63 {
64 if ( emcWave != 0 ) delete[] emcWave;
65 emcWave = new double[assign.array_size];
66 array_size = assign.array_size;
67 for ( int i = 0; i < array_size; i++ ) emcWave[i] = assign[i];
68 }
69 return *this;
70}

◆ operator=() [2/3]

EmcWaveform & EmcWaveform::operator= ( const EmcWaveform & )

◆ operator=() [3/3]

EmcWaveform & EmcWaveform::operator= ( const EmcWaveform & )

◆ operator[]() [1/3]

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

Definition at line 96 of file Emc/EmcWaveform/include/EmcWaveform/EmcWaveform.h.

96 {
97 if ( index < 0 || index > array_size - 1 )
98 {
99 cout << "Array bounds exceeded. Index " << index << endl;
100 ::abort();
101 }
102 return emcWave[index];
103}

◆ operator[]() [2/3]

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

◆ operator[]() [3/3]

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

◆ print() [1/3]

void EmcWaveform::print ( )

Definition at line 140 of file EmcWaveform.cxx.

140 {
141 cout << "New Wave!" << endl;
142 for ( int i = 0; i < array_size; i++ ) cout << emcWave[i] << "\t";
143 cout << endl;
144}

◆ print() [2/3]

void EmcWaveform::print ( )

◆ print() [3/3]

void EmcWaveform::print ( )

Member Data Documentation

◆ array_size

◆ emcWave


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