00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035
00037
00051 #include "StTofSimParam.h"
00052 #include <Stiostream.h>
00053 #include "StMessMgr.h"
00054 #include "math.h"
00055
00056
00057
00058
00060 StTofSimParam::StTofSimParam(){
00062 mSimuTofp = false;
00063 mSimuVpd = true;
00064 mSimuTofFast = true;
00065 mSimuTofSlow = false;
00066
00068 m_adc_overflow = 1024.0 ;
00069 m_attlen = 110.0 ;
00070 m_cath_eff = 0.2 ;
00071 m_cath_surf = 0.61 ;
00072 m_delay = 80.2e-12 ;
00073 m_elec_noise = 0. ;
00074 m_gate_t0 = 3.e-9 ;
00075 m_gate_width = 200.e-9 ;
00076 m_geo_from_geant = 1. ;
00077 m_GeV_2_n_photons = 1.e+7 ;
00078 m_nphe_to_adc = 0.2 ;
00079 m_phys_noise = 0. ;
00080 m_position_tolerance = 0.3 ;
00081 m_slat_para = 0. ;
00082 m_start_res = 50.e-12 ;
00083 m_surf_loss = 0.42 ;
00084 m_time_res = 16.e-12 ;
00085 m_tdc_overflow = 2048.0 ;
00086
00088 m_n_gap = 6 ;
00089 m_nmax_clus = 20 ;
00090 m_d_in = 0.54 ;
00091 m_d_out = 1.10 ;
00092 m_d_gap = 0.22 ;
00093 m_alpha_dg = 31.944 ;
00094 m_er = 5.0 ;
00095 m_clus_par[0] = 10.07 ;
00096 m_clus_par[1] = -6.781 ;
00097 m_clus_par[2] = 6.396 ;
00098 m_clus_par[3] = -0.6407 ;
00099 m_vd_mean = 2.28e-4 ;
00100 m_nmean_e = 2.42 ;
00101 m_nmax_e = 1.6e+7 ;
00102 m_dt = 25. ;
00103 m_ndt = 600 ;
00104 m_toffset = 6000. ;
00105 m_adc_thre = 12.8 ;
00106 m_xtalk_dy = 1.0 ;
00107 m_res_fee = 45.e-12 ;
00108
00110 m_res_tof = 85.e-12 ;
00111 m_thre_tof = 1.e-7 ;
00112 m_res_vpd = 140.e-12 ;
00113 m_thre_vpd = 1.e-7 ;
00114
00116 for(int i=0;i<120;i++) {
00117 for(int j=0;j<192;j++) {
00118 m_eff_tof[i][j] = 0.95;
00119 }
00120 }
00124 for(int i=0;i<50;i++) {
00125 if(i<38) m_eff_vpd[i] = 0.95;
00126 else m_eff_vpd[i] = 0.0;
00127 }
00128
00129 }
00130
00131
00133 StTofSimParam::~StTofSimParam(){ }
00134
00135
00137 void StTofSimParam::init(){
00138
00139
00140
00141
00142
00143
00144
00145
00146
00147
00148
00149
00150 }
00151
00152 float StTofSimParam::nclus(float beta) const
00153 {
00154 if (beta>0.999999) beta = 0.999999;
00155 if (beta<0.) beta = 0.;
00156
00157 float ga = 1./sqrt(1.-beta*beta);
00158 float para = 1./sqrt(ga);
00159 float clus = m_clus_par[0] + m_clus_par[1]*para + m_clus_par[2]*para*para + m_clus_par[3]*para*para*para;
00160
00161 return clus;
00162 }
00163
00164 void StTofSimParam::print(){
00165 LOG_INFO << "------StTofSimParam::print()------" << endm;
00166 if(mSimuTofp) {
00167 LOG_INFO << " ==>> TOFp parameters <<== " << endm;
00168 LOG_INFO << " adc_overflow = " << m_adc_overflow << endm;
00169 LOG_INFO << " attlen = " << m_attlen << endm;
00170 LOG_INFO << " cath_eff = " << m_cath_eff << endm;
00171 LOG_INFO << " cath_surf = " << m_cath_surf << endm;
00172 LOG_INFO << " delay = " << m_delay << endm;
00173 LOG_INFO << " elec_noise = " << m_elec_noise << endm;
00174 LOG_INFO << " gate_t0 = " << m_gate_t0 << endm;
00175 LOG_INFO << " gate_width = " << m_gate_width << endm;
00176 LOG_INFO << " geo_from_geant = " << m_geo_from_geant << endm;
00177 LOG_INFO << " GeV_2_n_photons = " << m_GeV_2_n_photons << endm;
00178 LOG_INFO << " nphe_to_adc = " << m_nphe_to_adc << endm;
00179 LOG_INFO << " phys_noise = " << m_phys_noise << endm;
00180 LOG_INFO << " position_tolerance = " << m_position_tolerance << endm;
00181 LOG_INFO << " slat_para = " << m_slat_para << endm;
00182 LOG_INFO << " start_res = " << m_start_res << endm;
00183 LOG_INFO << " surf_loss = " << m_surf_loss << endm;
00184 LOG_INFO << " tdc_overflow = " << m_tdc_overflow << endm;
00185 LOG_INFO << " time_res = " << m_time_res << endm;
00186 }
00187 if(mSimuVpd) {
00188 LOG_INFO << " ==>> VPD parameters <<== " << endm;
00189 LOG_INFO << " res_vpd = " << m_res_vpd << endm;
00190 LOG_INFO << " thre_vpd = " << m_thre_vpd << endm;
00191 }
00192 if(mSimuTofFast) {
00193 LOG_INFO << " ==>> MRPC TOF fast simu parameters <<== " << endm;
00194 LOG_INFO << " res_tof = " << m_res_tof << endm;
00195 LOG_INFO << " thre_tof = " << m_thre_tof << endm;
00196 }
00197 if(mSimuTofSlow) {
00198 LOG_INFO << " ==>> MRPC TOF slow simu parameters <<== " << endm;
00199 LOG_INFO << " n_gap = " << m_n_gap << endm;
00200 LOG_INFO << " nmax_clus = " << m_nmax_clus << endm;
00201 LOG_INFO << " d_in = " << m_d_in << endm;
00202 LOG_INFO << " d_out = " << m_d_out << endm;
00203 LOG_INFO << " d_gap = " << m_d_gap << endm;
00204 LOG_INFO << " alpha = " << alpha() << endm;
00205 LOG_INFO << " er = " << m_er << endm;
00206 LOG_INFO << " vd_mean = " << m_vd_mean << endm;
00207 LOG_INFO << " nmean_e = " << m_nmean_e << endm;
00208 LOG_INFO << " nmax_e = " << m_nmax_e << endm;
00209 LOG_INFO << " dt = " << m_dt << endm;
00210 LOG_INFO << " ndt = " << m_ndt << endm;
00211 LOG_INFO << " toffset = " << m_toffset << endm;
00212 LOG_INFO << " adc_thre = " << m_adc_thre << endm;
00213 LOG_INFO << " xtalk_dy = " << m_xtalk_dy << endm;
00214 LOG_INFO << " res_fee = " << m_res_fee << endm;
00215 }
00216 LOG_INFO << " ==>> VPD dead channels <<== " << endm;
00217 for(int i=0;i<38;i++) {
00218 if(m_eff_vpd[i]<1.e-4) {
00219 const char *westeast = (i/19) ? "West" : "East";
00220 int itube = i%19 + 1;
00221 LOG_INFO << " " << westeast << " tube " << itube << endm;
00222 }
00223 }
00224 LOG_INFO << " ==>> TOF dead channels <<== " << endm;
00225 for(int i=0;i<120;i++) {
00226 for(int j=0;j<192;j++) {
00227 int itray = i+1;
00228 int imodule = j/6 + 1;
00229 int icell = j%6 + 1;
00230 if(m_eff_tof[i][j]<1.e-4)
00231 LOG_INFO << " tray " << itray << " module " << imodule << " cell " << icell << endm;
00232 }
00233 }
00234 LOG_INFO << "----------------------------------" << endm;
00235 }