00001 #ifndef STSVTSIMULATION_HH
00002 #define STSVTSIMULATION_HH
00003
00004
00005
00006
00007
00008 #include <Stiostream.h>
00009 #include <math.h>
00010 #include <stdlib.h>
00011
00012 #include "StSvtElectronCloud.hh"
00013
00014 class StSvtSignal;
00015 class StSvtHybridPixelsD;
00016
00017 #define SvtSim_MaxBufferSize 20
00018
00019 struct PasaSignalAttributes
00020 {
00021 int anode [SvtSim_MaxBufferSize];
00022 double mPeak [SvtSim_MaxBufferSize];
00023 double mTimeCenter[SvtSim_MaxBufferSize];
00024 double mTimeWidth [SvtSim_MaxBufferSize];
00025 double mUnderShoot[SvtSim_MaxBufferSize];
00026 double mTempBuffer[SvtSim_MaxBufferSize][128];
00027 double mCharge [SvtSim_MaxBufferSize];
00028 };
00029
00030 class StSvtSimulation:public TObject
00031 {
00032 public:
00033 StSvtSimulation();
00034 ~StSvtSimulation();
00035
00036 void setOptions(int option);
00037 void setElCloud(StSvtElectronCloud* elCloud);
00038 void setAnodeTimeBinSizes(double timBinSize, double anodeSize);
00039 void setDriftVelocity(double driftVelocity);
00040 void setTrappingConst(double trapConst);
00041 void setPasaSigAttributes(int pasaSigAttributes, int numOfAnodesPerHit=0);
00042
00043 void doCloud(double time, double Energy,double mTheta,double mPhi,int trackId);
00044 void fillBuffer(double mAnHit, double mTimeHit, StSvtHybridPixelsD *svtSimDataPixels);
00045
00046 PasaSignalAttributes getPasaSigAttributes();
00047 double getPeak();
00048
00049
00050 private:
00051
00052 void resetAnodeAttributes();
00053 void resetBuffer();
00054
00055 int mNumOfAnodesPerHit;
00056 int mUpperAn;
00057 int mLowerAn;
00058
00059 int mPasaDebug;
00060
00061 double mTimeBinSize;
00062 double mAnodeSize;
00063 double mDriftVelocity;
00064 int mSignalOption;
00065 double mPeakSignal;
00066
00067 StSvtElectronCloud* mElectronCloud;
00068 StSvtSignal* mSvtSignal;
00069
00070
00071 PasaSignalAttributes mPasaSignals;
00072
00073 ClassDef(StSvtSimulation,2)
00074
00075 };
00076
00077 inline PasaSignalAttributes StSvtSimulation::getPasaSigAttributes(){return mPasaSignals;}
00078 inline double StSvtSimulation::getPeak(){return mPeakSignal;}
00079
00080 #endif