#include <BesMdcCalTransfer.hh>
Public Member Functions | |
BesMdcCalTransfer (void) | |
~BesMdcCalTransfer (void) | |
void | SetHitPointer (BesMdcHit *hit) |
void | GetSigma (double &sigma1, double &sigma2, double &f) |
double | D2T (double driftDNew) |
double | GetT0 (void) |
double | GetTimeWalk (void) |
double | GetEff (void) |
Private Attributes | |
G4int | layerId |
G4int | cellId |
G4int | posFlag |
G4double | driftD |
G4double | edep |
G4double | theta |
G4double | enterAngle |
G4double | z |
IMdcCalibFunSvc * | mdcCalFunSvc |
Definition at line 18 of file BesMdcCalTransfer.hh.
BesMdcCalTransfer::BesMdcCalTransfer | ( | void | ) |
Definition at line 17 of file BesMdcCalTransfer.cc.
References mdcCalFunSvc.
00017 { 00018 StatusCode sc= Gaudi::svcLocator()->service("MdcCalibFunSvc",mdcCalFunSvc); 00019 if (!sc.isSuccess()) 00020 std::cout <<" MdcCal::Could not open Cal Service"<<std::endl; 00021 }
BesMdcCalTransfer::~BesMdcCalTransfer | ( | void | ) |
double BesMdcCalTransfer::D2T | ( | double | driftDNew | ) |
Definition at line 109 of file BesMdcCalTransfer.cc.
References cellId, IMdcCalibFunSvc::distToDriftTime(), enterAngle, layerId, mdcCalFunSvc, and posFlag.
Referenced by BesMdcDigitizer::Digitize(), and BesMdcSD::ProcessHits().
00109 { 00110 double driftT; 00111 driftT= mdcCalFunSvc->distToDriftTime(driftDNew, layerId, cellId, posFlag, enterAngle); 00112 // driftT = driftD/40.*1000; 00113 /* 00114 G4double c[8],x1; 00115 c[0]=0.; c[1]=1.96061432e01.;c[2]=2.31378106.; c[3]=3.59120632e-1; c[0]=0.;c[0]=0.;c[0]=0.;c[0]=0.;x1=5.924711; 00116 driftT=0.; 00117 if(driftD<x1){ 00118 for(int i=0;i<7;i++){ 00119 driftT+=c[i]*driftD; 00120 } 00121 }else{ 00122 for(int i=0;i<8;i++){ 00123 driftT+=c[i]*driftD; 00124 } 00125 } 00126 */ 00127 return driftT; 00128 }
double BesMdcCalTransfer::GetEff | ( | void | ) |
void BesMdcCalTransfer::GetSigma | ( | double & | sigma1, | |
double & | sigma2, | |||
double & | f | |||
) |
Definition at line 36 of file BesMdcCalTransfer.cc.
References driftD, edep, enterAngle, IMdcCalibFunSvc::getF(), IMdcCalibFunSvc::getSigma1(), IMdcCalibFunSvc::getSigma2(), layerId, mdcCalFunSvc, posFlag, theta, and z.
00036 { 00037 sigma1 = mdcCalFunSvc->getSigma1(layerId, posFlag, driftD, 00038 enterAngle, theta, z, edep); 00039 sigma2 = mdcCalFunSvc->getSigma2(layerId, posFlag, driftD, 00040 enterAngle, theta, z, edep); 00041 f = mdcCalFunSvc->getF(layerId, posFlag, driftD, 00042 enterAngle, theta, z, edep); 00043 00044 /* 00045 if(layerId<8){ 00046 if(driftD<0.5){ 00047 sigma1=0.112784; sigma2=0.229274; f=0.666; 00048 }else if(driftD<1.){ 00049 sigma1=0.103123; sigma2=0.269797; f=0.934; 00050 }else if(driftD<1.5){ 00051 sigma1=0.08276; sigma2=0.17493; f=0.89; 00052 }else if(driftD<2.){ 00053 sigma1=0.070109; sigma2=0.149859; f=0.89; 00054 }else if(driftD<2.5){ 00055 sigma1=0.064453; sigma2=0.130149; f=0.886; 00056 }else if(driftD<3.){ 00057 sigma1=0.062383; sigma2=0.138806; f=0.942; 00058 }else if(driftD<3.5){ 00059 sigma1=0.061873; sigma2=0.145696; f=0.946; 00060 }else if(driftD<4.){ 00061 sigma1=0.061236; sigma2=0.119584; f=0.891; 00062 }else if(driftD<4.5){ 00063 sigma1=0.066292; sigma2=0.148426; f=0.917; 00064 }else if(driftD<5.){ 00065 sigma1=0.078074; sigma2=0.188148; f=0.911; 00066 }else if(driftD<5.5){ 00067 sigma1=0.088657; sigma2=0.27548; f=0.838; 00068 }else{ 00069 sigma1=0.093089; sigma2=0.115556; f=0.367; 00070 } 00071 }else{ 00072 if(driftD<0.5){ 00073 sigma1=0.112433; sigma2=0.327548; f=0.645; 00074 }else if(driftD<1.){ 00075 sigma1=0.096703; sigma2=0.305206; f=0.897; 00076 }else if(driftD<1.5){ 00077 sigma1=0.082518; sigma2=0.248913; f= 0.934; 00078 }else if(driftD<2.){ 00079 sigma1=0.072501; sigma2=0.153868; f= 0.899; 00080 }else if(driftD<2.5){ 00081 sigma1= 0.065535; sigma2=0.14246; f=0.914; 00082 }else if(driftD<3.){ 00083 sigma1=0.060497; sigma2=0.126489; f=0.918; 00084 }else if(driftD<3.5){ 00085 sigma1=0.057643; sigma2= 0.112927; f=0.892; 00086 }else if(driftD<4.){ 00087 sigma1=0.055266; sigma2=0.094833; f=0.887; 00088 }else if(driftD<4.5){ 00089 sigma1=0.056263; sigma2=0.124419; f= 0.932; 00090 }else if(driftD<5.){ 00091 sigma1=0.056599; sigma2=0.124248; f=0.923; 00092 }else if(driftD<5.5){ 00093 sigma1= 0.061377; sigma2=0.146147; f=0.964; 00094 }else if(driftD<6.){ 00095 sigma1=0.063978; sigma2=0.150591; f=0.942; 00096 }else if(driftD<6.5){ 00097 sigma1=0.072951; sigma2=0.15685; f=0.913; 00098 }else if(driftD<7.){ 00099 sigma1=0.085438; sigma2=0.255109; f=0.931; 00100 }else if(driftD<7.5){ 00101 sigma1=0.101635; sigma2=0.315529; f=0.878; 00102 }else{ 00103 sigma1=0.149529; sigma2=0.374697; f=0.89; 00104 } 00105 } 00106 */ 00107 }
double BesMdcCalTransfer::GetT0 | ( | void | ) |
Definition at line 130 of file BesMdcCalTransfer.cc.
References cellId, IMdcCalibFunSvc::getT0(), layerId, and mdcCalFunSvc.
Referenced by BesMdcDigitizer::Digitize().
00130 { 00131 return mdcCalFunSvc->getT0(layerId, cellId); 00132 }
double BesMdcCalTransfer::GetTimeWalk | ( | void | ) |
Definition at line 134 of file BesMdcCalTransfer.cc.
References edep, IMdcCalibFunSvc::getTimeWalk(), layerId, and mdcCalFunSvc.
Referenced by BesMdcDigitizer::Digitize().
00134 { 00135 return mdcCalFunSvc->getTimeWalk(layerId, edep); 00136 }
void BesMdcCalTransfer::SetHitPointer | ( | BesMdcHit * | hit | ) |
Definition at line 25 of file BesMdcCalTransfer.cc.
References cellId, driftD, edep, enterAngle, BesMdcHit::GetCellNo(), BesMdcHit::GetDriftD(), BesMdcHit::GetEdep(), BesMdcHit::GetEnterAngle(), BesMdcHit::GetLayerNo(), BesMdcHit::GetPos(), BesMdcHit::GetPosFlag(), BesMdcHit::GetTheta(), layerId, posFlag, theta, and z.
Referenced by BesMdcDigitizer::Digitize(), and BesMdcSD::ProcessHits().
00025 { 00026 layerId = hit->GetLayerNo(); 00027 cellId = hit->GetCellNo(); 00028 driftD = hit->GetDriftD(); 00029 edep = hit->GetEdep(); 00030 theta = hit->GetTheta(); 00031 enterAngle = hit->GetEnterAngle(); 00032 posFlag = hit->GetPosFlag(); 00033 z = hit->GetPos().z(); 00034 }
G4int BesMdcCalTransfer::cellId [private] |
Definition at line 37 of file BesMdcCalTransfer.hh.
Referenced by D2T(), GetT0(), and SetHitPointer().
G4double BesMdcCalTransfer::driftD [private] |
G4double BesMdcCalTransfer::edep [private] |
Definition at line 38 of file BesMdcCalTransfer.hh.
Referenced by GetSigma(), GetTimeWalk(), and SetHitPointer().
G4double BesMdcCalTransfer::enterAngle [private] |
Definition at line 38 of file BesMdcCalTransfer.hh.
Referenced by D2T(), GetSigma(), and SetHitPointer().
G4int BesMdcCalTransfer::layerId [private] |
Definition at line 37 of file BesMdcCalTransfer.hh.
Referenced by D2T(), GetSigma(), GetT0(), GetTimeWalk(), and SetHitPointer().
IMdcCalibFunSvc* BesMdcCalTransfer::mdcCalFunSvc [private] |
Definition at line 40 of file BesMdcCalTransfer.hh.
Referenced by BesMdcCalTransfer(), D2T(), GetSigma(), GetT0(), and GetTimeWalk().
G4int BesMdcCalTransfer::posFlag [private] |
Definition at line 37 of file BesMdcCalTransfer.hh.
Referenced by D2T(), GetSigma(), and SetHitPointer().
G4double BesMdcCalTransfer::theta [private] |
G4double BesMdcCalTransfer::z [private] |