88 #include "StTrsFastChargeTransporter.hh"
105 {
int i= fieldFactorTable();
if(i){ }}
107 StTrsFastChargeTransporter::~StTrsFastChargeTransporter() {}
109 int StTrsFastChargeTransporter::fieldFactorTable()
126 void StTrsFastChargeTransporter::transportToWire(
StTrsMiniChargeSegment& seg,
double& SigmaL,
double& SigmaT)
130 double driftLength =seg.position().z();
131 double drift =driftLength;
136 SigmaT= b<mB2[0]? mSigmaTransverse *::sqrt(drift/(mK[0]*b+mb[0])):
137 mSigmaTransverse *::sqrt(drift/(mK[1]*b+mb[1])) ;
139 SigmaT= b<mB2[2]? mSigmaTransverse *::sqrt(drift/(mK[2]*b+mb[2])):
140 mSigmaTransverse *::sqrt(drift/(mK[3]*b+mb[3])) ;
141 SigmaL= mSigmaLongitudinal*::sqrt(drift);
161 cout <<
"ERROR: StTrsFastChargeTransporter::transportToWire()" << endl;
162 cout <<
"ERROR: Drift distance < 0" << endl;
171 if (mTransverseDiffusion) {
179 if (mLongitudinalDiffusion) {
191 if (seg.position().y() > mGeomDb->firstOuterSectorAnodeWire())
192 seg.position().setZ(seg.position().z()+ mGeomDb->outerSectorzOffSet());
194 seg.position().setZ(seg.position().z()+ mGeomDb->innerSectorzOffSet());
201 if(mChargeAttachment) {
202 seg.setCharge(seg.charge()*chargeAttachment(driftLength));
208 if(mGatingGridTransparency) {
210 seg.setCharge(seg.charge()*wireGridTransmission());
216 double StTrsFastChargeTransporter::wireGridTransmission()
218 if(mDoTransparencyCalc)
219 mTransparency = transparencyCalculation();
220 return mTransparency;
223 double StTrsFastChargeTransporter::chargeAttachment(
double driftL)
const
233 return 1.-mAttachment*(mO2Concentration/1.e+6)*sqr(.760*bar)*driftL/mDriftVelocity;