45 #ifndef ST_TRS_SLOW_ANALOG_SIGNAL_GENERATOR_HH
46 #define ST_TRS_SLOW_ANALOG_SIGNAL_GENERATOR_HH
49 #include "StTrsAnalogSignalGenerator.hh"
53 enum StDistribution {endo,
59 symmetricGaussianApproximation,
60 symmetricGaussianExact,
61 asymmetricGaussianApproximation,
74 void setChargeDistribution(StDistribution);
76 inline double signalOnPad(
double,
double,
double,
double,
double,
double);
79 void setElectronicSampler(StSignal);
80 void sampleAnalogSignal();
85 double imageChargeIntegral(
double,
double,
double,
double,
double,
double);
86 double endoChargeIntegral(
double,
double,
double,
double,
double,
double);
96 double oneOverT(
double,
double);
105 double mDriftVelocity;
106 double mTimeBinWidth;
110 double mSymGausApproxFactor;
111 double mAsymGausApproxFactor;
112 double mAsymGausUnRestFactor;
114 StDistribution mChargeDistribution;
117 inline double StTrsSlowAnalogSignalGenerator::signalSampler(
double t,
StTrsAnalogSignal& sig)
128 if(mSampler == (StTrsSlowAnalogSignalGenerator::undefined)) {
129 cerr <<
"ERROR: no function selected" << endl;
136 case symmetricGaussianApproximation:
137 return symmetricGaussianApproximateResponse(t, sig);
140 return deltaResponse(t, sig);
142 case symmetricGaussianExact:
143 return symmetricGaussianExactResponse(t, sig);
145 case asymmetricGaussianApproximation:
146 return asymmetricGaussianApproximateResponse(t, sig);
149 return realShaperResponse(t,sig);
155 cerr <<
"Default Function Selected. ERROR!" << endl;
161 inline double StTrsSlowAnalogSignalGenerator::signalOnPad(
double xo,
double yo,
double xl,
double xu,
double yl,
double yu)
164 switch(mChargeDistribution)
168 return endoChargeIntegral(xo,yo,xl,xu,yl,yu);
173 cout <<
"Gatti Distribution Not Implemented Yet!" << endl;
178 return imageChargeIntegral(xo,yo,xl,xu,yl,yu);
181 cerr <<
"Default Function Selected. ERROR!" << endl;