00001 #ifndef STSVTELECTRONCLOUD_HH
00002 #define STSVTELECTRONCLOUD_HH
00003
00004 #include <Stiostream.h>
00005 #include <stdlib.h>
00006 #include <math.h>
00007 #include "StObject.h"
00008
00018 class StSvtElectronCloud:public StObject
00019 {
00020 public:
00021 StSvtElectronCloud();
00022 ~StSvtElectronCloud();
00023
00024
00025 void setSiliconProp();
00026 void setElectronLifeTime(double tLife);
00027 void setDriftVelocity(double driftVel);
00028 void setTrappingConst(double trapConst);
00029 void setDiffusionConst(double diffConst);
00030
00031 void setPar(double energy,double theta, double phi,double timeBinSize,int trackId);
00032 void CalcExpansion(double mTc);
00033 void runge_kutta4(int steps, double t0, double steplen,int save);
00034 void adamsBushFort(int steps, double t0, double steplen);
00035
00036 double getSigmaDrift();
00037 double getSigmaAnode();
00038 double getSigmaCorr();
00039 double getSigmaMajor();
00040 double getSigmaMinor();
00041 double getPhi();
00042 double getChargeAtAnode();
00043 int getTrackId() const {return mTrackId;}
00044
00045 private:
00046 void setInitWidths(double w1, double w2);
00047
00048 double mSigX;
00049 double mSigY ;
00050 double mSigXY;
00051
00052 double m_dSigX[4];
00053 double m_dSigY[4];
00054 double m_dSigXY[4];
00055
00056 double mChargeNow;
00057 double mTotCharge;
00058
00059 double mEnergy;
00060 double mTheta;
00061 double mPhi;
00062 double mInitPhi;
00063
00064 double mDriftVel;
00065 double mTimBinSize;
00066
00067 double mSDD_thickness;
00068 double mInitHitSize;
00069 double mTrapConst;
00070 double mDiffusionConst;
00071 double mDiffConstX;
00072 double mDiffConstY;
00073 double mSi_DielConst;
00074 double mSi_EnergyGap;
00075 double mPermitivity;
00076 double mSi_Mobility;
00077 double mLifeTime;
00078 int mTrackId;
00079 void CalculateDiffXY();
00080 void GetDerivatives(double &dSx,double &dSy,double &dSxy,double SX,double SY,double SXY,double time);
00081
00082 ClassDef(StSvtElectronCloud,1)
00083 };
00084
00085 #endif