00001 #ifndef STSVTSIGNAL_HH
00002 #define STSVTSIGNAL_HH
00003
00004
00005 #include <Stiostream.h>
00006 #include <string.h>
00007 #include <math.h>
00008
00009 class StSvtElectronCloud;
00010
00011 class StSvtSignal
00012 {
00013 public:
00014 StSvtSignal();
00015 ~StSvtSignal();
00016
00017 void setOption(int option);
00018 void setAnodeTimeBinSizes(double timBinSize, double anodeSize);
00019 void setDriftVelocity(double driftVelocity);
00020 void setCloud(StSvtElectronCloud* elCloud);
00021 double chargeFraction(int an, double anHit);
00022 int timeCenterAndWidth(double anHit,double timeHit);
00023 void setTimeWidth(double timWidth);
00024 void calcConvSignal(double chargeOnAnode);
00025 void selemonSignal(int nMin,int nMax, double tStep, double charge);
00026 void rykovSignal(int nMin,int nMax, double tStep);
00027 void pasaRelatedStuff();
00028 void doPasaOnly(int option);
00029 void peakingTimeR();
00030 void halfWidthAtHalfMaxR();
00031 void peakingTimeS();
00032 void halfWidthAtHalfMaxS();
00033 void unNormPasaConst();
00034 void normPasaConst();
00035 void arrays();
00036 double signal(double t);
00037 double getShortSignal(double localTime);
00038 double getLongSignal(double localTime);
00039 double useArrays5And6(double ds1,double dsc);
00040 double useArrays3And4Or1And2(double ds1,double dsc);
00041 double numConvInt(int nMin , int n, int numOfIntPoints, double tStep, double t);
00042 double analConvInt(double tim, double sigmat, double tc);
00043 double simpsonInt(int numOfIntPoints,double lowlim, double step, double t);
00044 double gausInput(double tim);
00045 double pasaRes(double tim);
00046 double freq(double num);
00047 double prob1(double anOrTimeDiff , double sigma);
00048 double prob2(double num , double sigma);
00049 int getLowTBin();
00050 int getHiTBin();
00051 int getTrackId() const {return mTrackId;}
00052 double getTimeCenter();
00053 double getTimeWidth();
00054 double getPeak();
00055 double getMinUnderShoot();
00056 double getSignal(int n);
00057 void resetPeakAndUnderShoot();
00058 void resetSignal(int lBin, int hBin);
00059
00060 private:
00061 double mTotalHitCharge;
00062 double mAnRightEdge;
00063 double mAnLeftEdge;
00064 double mFractionOfCharge;
00065 double mCollectedCharge;
00066
00067 int mOption;
00068 int mLowTBin;
00069 int mHiTBin;
00070 int mTrackId;
00071
00072 double mDriftVel;
00073 double mTimeBinSize;
00074 double mAnodeSize;
00075
00076 double mSigmaMajor;
00077 double mSigmaMinor;
00078 double mTimeCenter;
00079 double mTimeWidth;
00080 double mPeakSignal;
00081 double mMinUnderShoot;
00082
00083 double GAP_TWIDTH;
00084 double mPasaGain;
00085
00086
00087 double mPasaNorm;
00088 double mPeakTimeS;
00089 double mPasaMaxS;
00090 double mFwhmS;
00091
00092
00093 double mPasaMaxR;
00094 double mPeakTimeR;
00095 double mFwhmR;
00096
00097 double mTau_s;
00098 double mTau_l;
00099
00100 double mC1;
00101 double mC2;
00102 double mC3;
00103
00104 double mSignal[128];
00105 double mPasa[5];
00106 double mArray1[9];
00107 double mArray2[9];
00108 double mArray3[7];
00109 double mArray4[7];
00110 double mArray5[6];
00111 double mArray6[6];
00112
00113
00114
00115 };
00116
00117
00118
00119
00120
00121
00122
00123
00124
00125
00126
00127
00128
00129
00130
00131
00132
00133
00134
00135
00136
00137
00138
00139
00140
00141
00142
00143
00144
00145
00146
00147
00148
00149
00150
00151
00152
00153
00154
00155
00156
00157
00158
00159
00160
00161
00162
00163
00164
00165
00166
00167
00168
00169
00170
00171 #endif