00001 #include "TofRec/TofCheckDigi.h"
00002 #include "TofRec/TofConstants.h"
00003 #include "TofCaliSvc/ITofCaliSvc.h"
00004
00005 #include "Identifier/Identifier.h"
00006 #include "Identifier/TofID.h"
00007 #include "McTruth/TofMcHit.h"
00008 #include "McTruth/McParticle.h"
00009 #include <iostream>
00010
00011 extern ITofCaliSvc* tofCaliSvc;
00012
00013
00014 TofCheckDigi::TofCheckDigi( NTuple::Tuple*& digi, NTuple::Tuple*& barrel, NTuple::Tuple*& endcap, NTuple::Tuple*& mrpc, NTuple::Tuple*& ext, NTuple::Tuple*& tof, NTuple::Tuple*& bhabha ):digi_tuple(digi),barrel_tuple(barrel),endcap_tuple(endcap),mrpc_tuple(mrpc),ext_tuple(ext),tof_tuple(tof),bb_tuple(bhabha) {
00015 if(!digi_tuple) {
00016 std::cerr<<" Error: invalid pionter in TofCheckDigi(NTuple::Tuple*) for digi_tuple "<<std::endl;
00017 }
00018 else{
00019 digi_tuple->addItem("run", digi_run );
00020 digi_tuple->addItem("event", digi_event );
00021 digi_tuple->addItem("barrel", digi_barrel );
00022 digi_tuple->addItem("endcap", digi_endcap );
00023 digi_tuple->addItem("layer", digi_layer );
00024 digi_tuple->addItem("tofid", digi_tofId );
00025 digi_tuple->addItem("strip", digi_strip );
00026 digi_tuple->addItem("end", digi_end );
00027 digi_tuple->addItem("adc", digi_adc );
00028 digi_tuple->addItem("tdc", digi_tdc );
00029 digi_tuple->addItem("qclock", digi_qclock );
00030 digi_tuple->addItem("tclock", digi_tclock );
00031 digi_tuple->addItem("over", digi_overflow );
00032 digi_tuple->addItem("noq", digi_noq );
00033 digi_tuple->addItem("not", digi_not );
00034 digi_tuple->addItem("multiq", digi_multiq );
00035 digi_tuple->addItem("multit", digi_multit );
00036 digi_tuple->addItem("overq", digi_overq );
00037 digi_tuple->addItem("overt", digi_overt );
00038 digi_tuple->addItem("t0", digi_t0 );
00039 digi_tuple->addItem("t0stat", digi_t0stat );
00040 digi_tuple->addItem("crate", digi_crate );
00041 digi_tuple->addItem("geo", digi_geo );
00042 digi_tuple->addItem("tdcnum", digi_tdcnum );
00043 digi_tuple->addItem("err", digi_err );
00044 }
00045
00046 if(!barrel_tuple) {
00047 std::cerr<<" Error: invalid pionter in TofCheckDigi(NTuple::Tuple*) for barrel_tuple "<<std::endl;
00048 }
00049 else{
00050 barrel_tuple->addItem("run", barrel_run );
00051 barrel_tuple->addItem("event", barrel_event );
00052 barrel_tuple->addItem("tofid", barrel_tofId );
00053 barrel_tuple->addItem("icluster", barrel_tofTrackId );
00054 barrel_tuple->addItem("layer", barrel_layer );
00055 barrel_tuple->addItem("qch1", barrel_qchannel1 );
00056 barrel_tuple->addItem("tch1", barrel_tchannel1 );
00057 barrel_tuple->addItem("qch2", barrel_qchannel2 );
00058 barrel_tuple->addItem("tch2", barrel_tchannel2 );
00059 barrel_tuple->addItem("qtc1", barrel_qtc1 );
00060 barrel_tuple->addItem("adc1", barrel_adc1 );
00061 barrel_tuple->addItem("tdc1", barrel_tdc1 );
00062 barrel_tuple->addItem("qtc2", barrel_qtc2 );
00063 barrel_tuple->addItem("adc2", barrel_adc2 );
00064 barrel_tuple->addItem("tdc2", barrel_tdc2 );
00065 barrel_tuple->addItem("qclock1", barrel_qclock1 );
00066 barrel_tuple->addItem("tclock1", barrel_tclock1 );
00067 barrel_tuple->addItem("qclock2", barrel_qclock2 );
00068 barrel_tuple->addItem("tclock2", barrel_tclock2 );
00069 barrel_tuple->addItem("qual", barrel_quality );
00070 barrel_tuple->addItem("tmatched", barrel_tmatched );
00071 barrel_tuple->addItem("qtimes1", barrel_qtimes1 );
00072 barrel_tuple->addItem("ttimes1", barrel_ttimes1 );
00073 barrel_tuple->addItem("qtimes2", barrel_qtimes2 );
00074 barrel_tuple->addItem("ttimes2", barrel_ttimes2 );
00075 barrel_tuple->addItem("times1", barrel_times1 );
00076 barrel_tuple->addItem("times2", barrel_times2 );
00077 barrel_tuple->addItem("times", barrel_times );
00078 barrel_tuple->addItem("qnum1", barrel_qnum1 );
00079 barrel_tuple->addItem("tnum1", barrel_tnum1 );
00080 barrel_tuple->addItem("qnum2", barrel_qnum2 );
00081 barrel_tuple->addItem("tnum2", barrel_tnum2 );
00082 barrel_tuple->addItem("tsum", barrel_tsum );
00083 barrel_tuple->addItem("tsub", barrel_tsub );
00084 barrel_tuple->addItem("ztdc", barrel_ztdc );
00085 barrel_tuple->addItem("zadc", barrel_zadc );
00086 barrel_tuple->addItem("t0", barrel_t0 );
00087 barrel_tuple->addItem("t0stat", barrel_t0stat );
00088 }
00089
00090 if(!endcap_tuple) {
00091 std::cerr<<" Error: invalid pionter in TofCheckDigi(NTuple::Tuple*) for endcap_tuple "<<std::endl;
00092 }
00093 else{
00094 endcap_tuple->addItem("run", endcap_run );
00095 endcap_tuple->addItem("event", endcap_event );
00096 endcap_tuple->addItem("tofid", endcap_tofId );
00097 endcap_tuple->addItem("icluster", endcap_tofTrackId );
00098 endcap_tuple->addItem("qch", endcap_qchannel );
00099 endcap_tuple->addItem("tch", endcap_tchannel );
00100 endcap_tuple->addItem("qtc", endcap_qtc );
00101 endcap_tuple->addItem("adc", endcap_adc );
00102 endcap_tuple->addItem("tdc", endcap_tdc );
00103 endcap_tuple->addItem("qual", endcap_quality );
00104 endcap_tuple->addItem("qclock", endcap_qclock );
00105 endcap_tuple->addItem("tclock", endcap_tclock );
00106 endcap_tuple->addItem("qtimes", endcap_qtimes );
00107 endcap_tuple->addItem("ttimes", endcap_ttimes );
00108 endcap_tuple->addItem("times", endcap_times );
00109 endcap_tuple->addItem("qnum", endcap_qnum );
00110 endcap_tuple->addItem("tnum", endcap_tnum );
00111 endcap_tuple->addItem("t0", endcap_t0 );
00112 endcap_tuple->addItem("t0stat", endcap_t0stat );
00113 }
00114
00115 if(!mrpc_tuple) {
00116 std::cerr<<" Error: invalid pionter in TofCheckDigi(NTuple::Tuple*) for mrpc_tuple "<<std::endl;
00117 }
00118 else{
00119 mrpc_tuple->addItem("run", mrpc_run );
00120 mrpc_tuple->addItem("event", mrpc_event );
00121 mrpc_tuple->addItem("tofid", mrpc_tofId );
00122 mrpc_tuple->addItem("strip", mrpc_strip );
00123 mrpc_tuple->addItem("icluster", mrpc_tofTrackId );
00124 mrpc_tuple->addItem("ttch1", mrpc_ttch1 );
00125 mrpc_tuple->addItem("tlch1", mrpc_tlch1 );
00126 mrpc_tuple->addItem("ttch2", mrpc_ttch2 );
00127 mrpc_tuple->addItem("tlch2", mrpc_tlch2 );
00128 mrpc_tuple->addItem("tt1", mrpc_tt1 );
00129 mrpc_tuple->addItem("tl1", mrpc_tl1 );
00130 mrpc_tuple->addItem("tt2", mrpc_tt2 );
00131 mrpc_tuple->addItem("tl2", mrpc_tl2 );
00132 mrpc_tuple->addItem("tot1", mrpc_tot1 );
00133 mrpc_tuple->addItem("tot2", mrpc_tot2 );
00134 mrpc_tuple->addItem("qual", mrpc_quality );
00135 mrpc_tuple->addItem("tmatched", mrpc_tmatched );
00136 mrpc_tuple->addItem("tttimes1", mrpc_tttimes1 );
00137 mrpc_tuple->addItem("tltimes1", mrpc_tltimes1 );
00138 mrpc_tuple->addItem("tttimes2", mrpc_tttimes2 );
00139 mrpc_tuple->addItem("tltimes2", mrpc_tltimes2 );
00140 mrpc_tuple->addItem("times1", mrpc_times1 );
00141 mrpc_tuple->addItem("times2", mrpc_times2 );
00142 mrpc_tuple->addItem("times", mrpc_times );
00143 mrpc_tuple->addItem("ttnum1", mrpc_ttnum1 );
00144 mrpc_tuple->addItem("tlnum1", mrpc_tlnum1 );
00145 mrpc_tuple->addItem("ttnum2", mrpc_ttnum2 );
00146 mrpc_tuple->addItem("tlnum2", mrpc_tlnum2 );
00147 mrpc_tuple->addItem("tsum", mrpc_tsum );
00148 mrpc_tuple->addItem("tsub", mrpc_tsub );
00149 mrpc_tuple->addItem("ztdc", mrpc_ztdc );
00150 mrpc_tuple->addItem("zadc", mrpc_zadc );
00151 mrpc_tuple->addItem("t0", mrpc_t0 );
00152 mrpc_tuple->addItem("t0stat", mrpc_t0stat );
00153 }
00154
00155 if(!ext_tuple) {
00156 std::cerr<<" Error: invalid pionter in TofCheckDigi(NTuple::Tuple*) for ext_tple"<<std::endl;
00157 }
00158 else{
00159 ext_tuple->addItem("run", ext_run );
00160 ext_tuple->addItem("event", ext_event );
00161 ext_tuple->addItem("track", ext_trackid );
00162 ext_tuple->addItem("costheta", ext_costheta );
00163 ext_tuple->addItem("kal", 5, ext_kalman );
00164 ext_tuple->addItem("x1", 5, ext_x1 );
00165 ext_tuple->addItem("x2", 5, ext_x2 );
00166 ext_tuple->addItem("y1", 5, ext_y1 );
00167 ext_tuple->addItem("y2", 5, ext_y2 );
00168 ext_tuple->addItem("z1", 5, ext_z1 );
00169 ext_tuple->addItem("z2", 5, ext_z2 );
00170 ext_tuple->addItem("tofid1", 5, ext_tofid1 );
00171 ext_tuple->addItem("tofid2", 5, ext_tofid2 );
00172 ext_tuple->addItem("strip1", 5, ext_strip1 );
00173 ext_tuple->addItem("strip2", 5, ext_strip2 );
00174 ext_tuple->addItem("texp1", 5, ext_texp1 );
00175 ext_tuple->addItem("texp2", 5, ext_texp2 );
00176 ext_tuple->addItem("p", ext_p );
00177 ext_tuple->addItem("path1", 5, ext_path1 );
00178 ext_tuple->addItem("path2", 5, ext_path2 );
00179 ext_tuple->addItem("zrhit1", 5, ext_zrhit1 );
00180 ext_tuple->addItem("zrhit2", 5, ext_zrhit2 );
00181 ext_tuple->addItem("errzr1", 5, ext_errzr1 );
00182 ext_tuple->addItem("errzr2", 5, ext_errzr2 );
00183 ext_tuple->addItem("cost1", 5, ext_theta1 );
00184 ext_tuple->addItem("cost2", 5, ext_theta2 );
00185 ext_tuple->addItem("phi1", 5, ext_phi1 );
00186 ext_tuple->addItem("phi2", 5, ext_phi2 );
00187 ext_tuple->addItem("hitcase1", 5, ext_hitcase1 );
00188 ext_tuple->addItem("hitcase2", 5, ext_hitcase2 );
00189 ext_tuple->addItem("hitcase", 5, ext_hitcase );
00190 ext_tuple->addItem("qual", 5, ext_quality );
00191 }
00192
00193 if(!tof_tuple) {
00194 std::cerr<<" Error: invalid pionter in TofCheckDigi(NTuple::Tuple*) for tof_tple"<<std::endl;
00195 }
00196 else{
00197 tof_tuple->addItem("run", tof_run );
00198 tof_tuple->addItem("event", tof_event );
00199 tof_tuple->addItem("toftrack", tof_toftrackid );
00200 tof_tuple->addItem("track", tof_trackid );
00201 tof_tuple->addItem("charge", tof_charge );
00202 tof_tuple->addItem("pt", 5, tof_pt );
00203 tof_tuple->addItem("p", 5, tof_p );
00204 tof_tuple->addItem("id1", tof_id1 );
00205 tof_tuple->addItem("id2", tof_id2 );
00206 tof_tuple->addItem("istrip1", tof_istrip1 );
00207 tof_tuple->addItem("istrip2", tof_istrip2 );
00208 tof_tuple->addItem("dstrip1", tof_dstrip1 );
00209 tof_tuple->addItem("dstrip2", tof_dstrip2 );
00210 tof_tuple->addItem("barrel", tof_barrel );
00211 tof_tuple->addItem("hitcase", tof_hitcase );
00212 tof_tuple->addItem("mom", tof_momentum );
00213 tof_tuple->addItem("path1", tof_path1 );
00214 tof_tuple->addItem("path2", tof_path2 );
00215 tof_tuple->addItem("zrhit1", tof_zrhit1 );
00216 tof_tuple->addItem("zrhit2", tof_zrhit2 );
00217 tof_tuple->addItem("errzr1", tof_errzr1 );
00218 tof_tuple->addItem("errzr2", tof_errzr2 );
00219 tof_tuple->addItem("xhit1", tof_xhit1 );
00220 tof_tuple->addItem("yhit1", tof_yhit1 );
00221 tof_tuple->addItem("xhit2", tof_xhit2 );
00222 tof_tuple->addItem("yhit2", tof_yhit2 );
00223 tof_tuple->addItem("kal", 5, tof_kal );
00224 tof_tuple->addItem("zr1", 5, tof_zr1 );
00225 tof_tuple->addItem("zr2", 5, tof_zr2 );
00226 tof_tuple->addItem("ztdc1", tof_ztdc1 );
00227 tof_tuple->addItem("ztdc2", tof_ztdc2 );
00228 tof_tuple->addItem("zadc1", tof_zadc1 );
00229 tof_tuple->addItem("zadc2", tof_zadc2 );
00230 tof_tuple->addItem("zt1", tof_zt1 );
00231 tof_tuple->addItem("zt2", tof_zt2 );
00232 tof_tuple->addItem("zt3", tof_zt3 );
00233 tof_tuple->addItem("zt4", tof_zt4 );
00234 tof_tuple->addItem("zq1", tof_zq1 );
00235 tof_tuple->addItem("zq2", tof_zq2 );
00236 tof_tuple->addItem("zq3", tof_zq3 );
00237 tof_tuple->addItem("zq4", tof_zq4 );
00238 tof_tuple->addItem("size1", tof_size1 );
00239 tof_tuple->addItem("size2", tof_size2 );
00240 tof_tuple->addItem("size3", tof_size3 );
00241 tof_tuple->addItem("size4", tof_size4 );
00242 tof_tuple->addItem("theta1", tof_theta1 );
00243 tof_tuple->addItem("theta2", tof_theta2 );
00244 tof_tuple->addItem("phi1", tof_phi1 );
00245 tof_tuple->addItem("phi2", tof_phi2 );
00246 tof_tuple->addItem("qual1", tof_quality1 );
00247 tof_tuple->addItem("qual2", tof_quality2 );
00248 tof_tuple->addItem("qual", tof_quality );
00249 tof_tuple->addItem("change", tof_changed );
00250 tof_tuple->addItem("tofid1", tof_tofid1 );
00251 tof_tuple->addItem("tofid2", tof_tofid2 );
00252 tof_tuple->addItem("strip1", tof_strip1 );
00253 tof_tuple->addItem("strip2", tof_strip2 );
00254 tof_tuple->addItem("board1", tof_board1 );
00255 tof_tuple->addItem("board2", tof_board2 );
00256 tof_tuple->addItem("crate1", tof_crate1 );
00257 tof_tuple->addItem("crate2", tof_crate2 );
00258 tof_tuple->addItem("fee1", tof_fee1 );
00259 tof_tuple->addItem("fee2", tof_fee2 );
00260 tof_tuple->addItem("channel1", tof_channel1 );
00261 tof_tuple->addItem("channel2", tof_channel2 );
00262 tof_tuple->addItem("channel3", tof_channel3 );
00263 tof_tuple->addItem("channel4", tof_channel4 );
00264 tof_tuple->addItem("ph11", tof_ph11 );
00265 tof_tuple->addItem("ph12", tof_ph12 );
00266 tof_tuple->addItem("ph21", tof_ph21 );
00267 tof_tuple->addItem("ph22", tof_ph22 );
00268 tof_tuple->addItem("ph1", tof_ph1 );
00269 tof_tuple->addItem("ph2", tof_ph2 );
00270 tof_tuple->addItem("ph", tof_ph );
00271 tof_tuple->addItem("tofe11", tof_tofe11 );
00272 tof_tuple->addItem("tofe12", tof_tofe12 );
00273 tof_tuple->addItem("tofe21", tof_tofe21 );
00274 tof_tuple->addItem("tofe22", tof_tofe22 );
00275 tof_tuple->addItem("tofe1", tof_tofe1 );
00276 tof_tuple->addItem("tofe2", tof_tofe2 );
00277 tof_tuple->addItem("tofe", tof_tofe );
00278 tof_tuple->addItem("tofmu11", tof_tofmu11 );
00279 tof_tuple->addItem("tofmu12", tof_tofmu12 );
00280 tof_tuple->addItem("tofmu21", tof_tofmu21 );
00281 tof_tuple->addItem("tofmu22", tof_tofmu22 );
00282 tof_tuple->addItem("tofmu1", tof_tofmu1 );
00283 tof_tuple->addItem("tofmu2", tof_tofmu2 );
00284 tof_tuple->addItem("tofmu", tof_tofmu );
00285 tof_tuple->addItem("tofpi11", tof_tofpi11 );
00286 tof_tuple->addItem("tofpi12", tof_tofpi12 );
00287 tof_tuple->addItem("tofpi21", tof_tofpi21 );
00288 tof_tuple->addItem("tofpi22", tof_tofpi22 );
00289 tof_tuple->addItem("tofpi1", tof_tofpi1 );
00290 tof_tuple->addItem("tofpi2", tof_tofpi2 );
00291 tof_tuple->addItem("tofpi", tof_tofpi );
00292 tof_tuple->addItem("tofk11", tof_tofk11 );
00293 tof_tuple->addItem("tofk12", tof_tofk12 );
00294 tof_tuple->addItem("tofk21", tof_tofk21 );
00295 tof_tuple->addItem("tofk22", tof_tofk22 );
00296 tof_tuple->addItem("tofk1", tof_tofk1 );
00297 tof_tuple->addItem("tofk2", tof_tofk2 );
00298 tof_tuple->addItem("tofk", tof_tofk );
00299 tof_tuple->addItem("tofp11", tof_tofp11 );
00300 tof_tuple->addItem("tofp12", tof_tofp12 );
00301 tof_tuple->addItem("tofp21", tof_tofp21 );
00302 tof_tuple->addItem("tofp22", tof_tofp22 );
00303 tof_tuple->addItem("tofp1", tof_tofp1 );
00304 tof_tuple->addItem("tofp2", tof_tofp2 );
00305 tof_tuple->addItem("tofp", tof_tofp );
00306 tof_tuple->addItem("qch1", tof_qch1 );
00307 tof_tuple->addItem("qch2", tof_qch2 );
00308 tof_tuple->addItem("qch3", tof_qch3 );
00309 tof_tuple->addItem("qch4", tof_qch4 );
00310 tof_tuple->addItem("adc1", tof_adc1 );
00311 tof_tuple->addItem("adc2", tof_adc2 );
00312 tof_tuple->addItem("adc3", tof_adc3 );
00313 tof_tuple->addItem("adc4", tof_adc4 );
00314 tof_tuple->addItem("tdc1", tof_tdc1 );
00315 tof_tuple->addItem("tdc2", tof_tdc2 );
00316 tof_tuple->addItem("tdc3", tof_tdc3 );
00317 tof_tuple->addItem("tdc4", tof_tdc4 );
00318 tof_tuple->addItem("texpe1", tof_texpe1 );
00319 tof_tuple->addItem("texpmu1", tof_texpmu1 );
00320 tof_tuple->addItem("texppi1", tof_texppi1 );
00321 tof_tuple->addItem("texpk1", tof_texpk1 );
00322 tof_tuple->addItem("texpp1", tof_texpp1 );
00323 tof_tuple->addItem("texpe2", tof_texpe2 );
00324 tof_tuple->addItem("texpmu2", tof_texpmu2 );
00325 tof_tuple->addItem("texppi2", tof_texppi2 );
00326 tof_tuple->addItem("texpk2", tof_texpk2 );
00327 tof_tuple->addItem("texpp2", tof_texpp2 );
00328 tof_tuple->addItem("texpe", tof_texpe );
00329 tof_tuple->addItem("texpmu", tof_texpmu );
00330 tof_tuple->addItem("texppi", tof_texppi );
00331 tof_tuple->addItem("texpk", tof_texpk );
00332 tof_tuple->addItem("texpp", tof_texpp );
00333 tof_tuple->addItem("tdiff1", tof_tdiff1 );
00334 tof_tuple->addItem("tdiff2", tof_tdiff2 );
00335 tof_tuple->addItem("trig", tof_trig );
00336 tof_tuple->addItem("t0", tof_estime );
00337 tof_tuple->addItem("t0stat", tof_t0stat );
00338 tof_tuple->addItem("mctrkid", tof_mctrkid );
00339 tof_tuple->addItem("mcp", tof_mcp );
00340 tof_tuple->addItem("mctofp", tof_mctofp );
00341 tof_tuple->addItem("mczrhit", tof_mczrhit );
00342 tof_tuple->addItem("mcpath", tof_mcpath );
00343 tof_tuple->addItem("mctexp", tof_mctexp );
00344 }
00345
00346 if(!bb_tuple) {
00347 std::cerr<<" Error: invalid pionter in TofCheckDigi(NTuple::Tuple*) for bb_tple"<<std::endl;
00348 }
00349 else{
00350 bb_tuple->addItem("run", bb_run );
00351 bb_tuple->addItem("event", bb_event );
00352 bb_tuple->addItem("trksize", bb_trksize );
00353 bb_tuple->addItem("mdcsize", bb_mdcsize );
00354 bb_tuple->addItem("emcsize", bb_emcsize );
00355 bb_tuple->addItem("trk1", bb_trk1 );
00356 bb_tuple->addItem("pmdc1", bb_pmdc1 );
00357 bb_tuple->addItem("ptmdc1", bb_ptmdc1 );
00358 bb_tuple->addItem("theta1", bb_theta1 );
00359 bb_tuple->addItem("phi1", bb_phi1 );
00360 bb_tuple->addItem("x1", bb_x1 );
00361 bb_tuple->addItem("y1", bb_y1 );
00362 bb_tuple->addItem("z1", bb_z1 );
00363 bb_tuple->addItem("r1", bb_r1 );
00364 bb_tuple->addItem("charge1", bb_charge1 );
00365 bb_tuple->addItem("chi1", bb_chi1 );
00366 bb_tuple->addItem("ndof1", bb_ndof1 );
00367 bb_tuple->addItem("layer1", bb_layer1 );
00368 bb_tuple->addItem("trk2", bb_trk2 );
00369 bb_tuple->addItem("pmdc2", bb_pmdc2 );
00370 bb_tuple->addItem("ptmdc2", bb_ptmdc2 );
00371 bb_tuple->addItem("theta2", bb_theta2 );
00372 bb_tuple->addItem("phi2", bb_phi2 );
00373 bb_tuple->addItem("x2", bb_x2 );
00374 bb_tuple->addItem("y2", bb_y2 );
00375 bb_tuple->addItem("z2", bb_z2 );
00376 bb_tuple->addItem("r2", bb_r2 );
00377 bb_tuple->addItem("charge2", bb_charge2 );
00378 bb_tuple->addItem("chi2", bb_chi2 );
00379 bb_tuple->addItem("ndof2", bb_ndof2 );
00380 bb_tuple->addItem("layer2", bb_layer2 );
00381 bb_tuple->addItem("dang", bb_dang );
00382 bb_tuple->addItem("dphi", bb_dphi );
00383 bb_tuple->addItem("pe1", bb_pe1 );
00384 bb_tuple->addItem("pte1", bb_pte1 );
00385 bb_tuple->addItem("pe2", bb_pe2 );
00386 bb_tuple->addItem("pte2", bb_pte2 );
00387 bb_tuple->addItem("pmu1", bb_pmu1 );
00388 bb_tuple->addItem("ptmu1", bb_ptmu1 );
00389 bb_tuple->addItem("pmu2", bb_pmu2 );
00390 bb_tuple->addItem("ptmu2", bb_ptmu2 );
00391 bb_tuple->addItem("extx1", bb_extx1 );
00392 bb_tuple->addItem("exty1", bb_exty1 );
00393 bb_tuple->addItem("extz1", bb_extz1 );
00394 bb_tuple->addItem("extx2", bb_extx2 );
00395 bb_tuple->addItem("exty2", bb_exty2 );
00396 bb_tuple->addItem("extz2", bb_extz2 );
00397 bb_tuple->addItem("emctrk1", bb_emctrk1 );
00398 bb_tuple->addItem("emcx1", bb_emcx1 );
00399 bb_tuple->addItem("emcy1", bb_emcy1 );
00400 bb_tuple->addItem("emcz1", bb_emcz1 );
00401 bb_tuple->addItem("e1", bb_e1 );
00402 bb_tuple->addItem("th1", bb_th1 );
00403 bb_tuple->addItem("ph1", bb_ph1 );
00404 bb_tuple->addItem("emctrk2", bb_emctrk2 );
00405 bb_tuple->addItem("emcx2", bb_emcx2 );
00406 bb_tuple->addItem("emcy2", bb_emcy2 );
00407 bb_tuple->addItem("emcz2", bb_emcz2 );
00408 bb_tuple->addItem("e2", bb_e2 );
00409 bb_tuple->addItem("th2", bb_th2 );
00410 bb_tuple->addItem("ph2", bb_ph2 );
00411 bb_tuple->addItem("dr1", bb_dr1 );
00412 bb_tuple->addItem("drxy1", bb_drxy1 );
00413 bb_tuple->addItem("dz1", bb_dz1 );
00414 bb_tuple->addItem("dr2", bb_dr2 );
00415 bb_tuple->addItem("drxy2", bb_drxy2 );
00416 bb_tuple->addItem("dz2", bb_dz2 );
00417 bb_tuple->addItem("etot", bb_etot );
00418 }
00419
00420 return;
00421 }
00422
00423
00424 void TofCheckDigi::FillCol(Event::EventHeader& eventHeader, TofDigiCol& tofDigiCol, double estime, int t0stat ) {
00425 if( tofDigiCol.size() <= 0 ) return;
00426 TofDigiCol::iterator iter_digi = tofDigiCol.begin();
00427 for( ; iter_digi!=tofDigiCol.end(); iter_digi++ ) {
00428 unsigned int overflow = (*iter_digi)->getOverflow();
00429 if( ( overflow & 0xfe000000 ) == 0xfe000000 ) {
00430 if( digi_tuple ) {
00431 digi_run = eventHeader.runNumber();
00432 digi_event = eventHeader.eventNumber();
00433 digi_barrel = -1;
00434 digi_endcap = -1;
00435 digi_layer = -1;
00436 digi_tofId = -1;
00437 digi_strip = -1;
00438 digi_end = -1;
00439 digi_adc = 0x7fffffff;
00440 digi_tdc = 0x7fffffff;
00441 digi_qclock = 1000.0;
00442 digi_tclock = 1000.0;
00443 digi_overflow = overflow;
00444 digi_noq = -1;
00445 digi_not = -1;
00446 digi_multiq = -1;
00447 digi_multit = -1;
00448 digi_overq = -1;
00449 digi_overt = -1;
00450 digi_t0 = -1;
00451 digi_t0stat = -1;
00452 digi_crate = ( ( overflow &0x1000000 ) >> 24 );
00453 digi_geo = ( ( overflow &0x0f80000 ) >> 19 );
00454 digi_tdcnum = ( ( overflow &0x0078000 ) >> 15 );
00455 digi_err = ( overflow &0x0007fff );
00456 digi_tuple->write();
00457 }
00458 }
00459 else {
00460 Identifier iden = (*iter_digi)->identify();
00461 unsigned int adc = (*iter_digi)->getChargeChannel();
00462 unsigned int tdc = (*iter_digi)->getTimeChannel();
00463 if( digi_tuple ) {
00464 digi_run = eventHeader.runNumber();
00465 digi_event = eventHeader.eventNumber();
00466 digi_barrel = TofID::barrel_ec(iden);
00467 digi_endcap = TofID::endcap(iden);
00468 digi_layer = TofID::layer(iden);
00469 digi_strip = TofID::strip(iden);
00470 digi_end = TofID::end(iden);
00471 if( TofID::is_scin(iden) ) {
00472 digi_tofId = TofID::phi_module(iden);
00473 digi_adc = ( adc & 0x1fff );
00474 }
00475 if( TofID::is_mrpc(iden) ) {
00476 digi_tofId = TofID::module(iden);
00477 digi_adc = adc;
00478 }
00479 if( adc == 0x7fffffff ) digi_adc = adc;
00480 digi_tdc = tdc;
00481 digi_qclock = ( ( adc & 0x7e000 ) >> 13 );
00482 if( adc == 0x7fffffff ) digi_qclock = 1000.;
00483 digi_tclock = ( ( tdc & 0x7e000 ) >> 13 );
00484 if( tdc == 0x7fffffff ) digi_tclock = 1000.;
00485 digi_overflow = overflow;
00486 digi_noq = ( ( overflow & 0x20 ) >> 5 );
00487 digi_not = ( ( overflow & 0x10 ) >> 4 );
00488 digi_multiq = ( ( overflow & 0x08 ) >> 3 );
00489 digi_multit = ( ( overflow & 0x04 ) >> 2 );
00490 digi_overq = ( ( overflow & 0x02 ) >> 1 );
00491 digi_overt = ( overflow & 0x01 );
00492 digi_t0 = estime;
00493 digi_t0stat = t0stat;
00494 digi_crate = -1;
00495 digi_geo = -1;
00496 digi_tdcnum = -1;
00497 digi_tdcnum = -1;
00498 digi_err = -1;
00499 digi_tuple->write();
00500 }
00501 }
00502 }
00503
00504 return;
00505 }
00506
00507
00508 void TofCheckDigi::Fill_Barrel(Event::EventHeader& eventHeader, TofData*& bTof, double estime, int t0stat ) {
00509 barrel_run = eventHeader.runNumber();
00510 barrel_event = eventHeader.eventNumber();
00511 barrel_tofId = bTof->tofId();
00512 barrel_tofTrackId = bTof->tofTrackId();
00513 barrel_layer = bTof->layer();
00514 barrel_qchannel1 = bTof->adcChannelEast();
00515 barrel_tchannel1 = bTof->tdcChannelEast();
00516 barrel_qchannel2 = bTof->adcChannelWest();
00517 barrel_tchannel2 = bTof->tdcChannelWest();
00518 barrel_qtc1 = bTof->qtc1();
00519 barrel_adc1 = bTof->adc1();
00520 barrel_tdc1 = bTof->tdc1();
00521 barrel_qtc2 = bTof->qtc2();
00522 barrel_adc2 = bTof->adc2();
00523 barrel_tdc2 = bTof->tdc2();
00524 barrel_qclock1 = bTof->qclock1();
00525 barrel_tclock1 = bTof->tclock1();
00526 barrel_qclock2 = bTof->qclock2();
00527 barrel_tclock2 = bTof->tclock2();
00528 barrel_quality = bTof->quality();
00529 barrel_tmatched = bTof->tmatched();
00530 barrel_qtimes1 = bTof->qtimes1();
00531 barrel_ttimes1 = bTof->ttimes1();
00532 barrel_qtimes2 = bTof->qtimes2();
00533 barrel_ttimes2 = bTof->ttimes2();
00534 barrel_times1 = bTof->eastTimes();
00535 barrel_times2 = bTof->westTimes();
00536 barrel_times = bTof->times();
00537 barrel_qnum1 = bTof->qnumber1();
00538 barrel_tnum1 = bTof->tnumber1();
00539 barrel_qnum2 = bTof->qnumber2();
00540 barrel_tnum2 = bTof->tnumber2();
00541 barrel_tsum = ( bTof->tdc1() + bTof->tdc2() )/2.0;
00542 barrel_tsub = ( bTof->tdc1() - bTof->tdc2() )/2.0;
00543 barrel_ztdc = tofCaliSvc->ZTDC( bTof->tdc1(), bTof->tdc2(), bTof->tofId() );
00544 barrel_zadc = tofCaliSvc->ZADC( bTof->adc1(), bTof->adc2(), bTof->tofId() );
00545 barrel_t0 = estime;
00546 barrel_t0stat = t0stat;
00547 barrel_tuple->write();
00548 return;
00549 }
00550
00551
00552 void TofCheckDigi::Fill_Endcap(Event::EventHeader& eventHeader, TofData*& eTof, double estime, int t0stat) {
00553 endcap_run = eventHeader.runNumber();
00554 endcap_event = eventHeader.eventNumber();
00555 endcap_tofId = eTof->tofId();
00556 endcap_tofTrackId = eTof->tofTrackId();
00557 endcap_qchannel = eTof->adcChannel();
00558 endcap_tchannel = eTof->tdcChannel();
00559 endcap_qtc = eTof->qtc();
00560 endcap_adc = eTof->adc();
00561 endcap_tdc = eTof->tdc();
00562 endcap_quality = eTof->quality();
00563 endcap_qclock = eTof->qclock();
00564 endcap_tclock = eTof->tclock();
00565 endcap_qtimes = eTof->qtimes1();
00566 endcap_ttimes = eTof->ttimes1();
00567 endcap_times = eTof->times();
00568 endcap_qnum = eTof->qnumber1();
00569 endcap_tnum = eTof->tnumber1();
00570 endcap_t0 = estime;
00571 endcap_t0stat = t0stat;
00572 endcap_tuple->write();
00573 return;
00574 }
00575
00576
00577 void TofCheckDigi::Fill_MRPC(Event::EventHeader& eventHeader, TofData*& mrpcTof, double estime, int t0stat) {
00578 mrpc_run = eventHeader.runNumber();
00579 mrpc_event = eventHeader.eventNumber();
00580 mrpc_tofId = mrpcTof->tofId();
00581 mrpc_strip = mrpcTof->strip();
00582 mrpc_tofTrackId = mrpcTof->tofTrackId();
00583 mrpc_ttch1 = mrpcTof->adcChannelEast();
00584 mrpc_tlch1 = mrpcTof->tdcChannelEast();
00585 mrpc_ttch2 = mrpcTof->adcChannelWest();
00586 mrpc_tlch2 = mrpcTof->tdcChannelWest();
00587 mrpc_tt1 = mrpcTof->qtc1();
00588 mrpc_tl1 = mrpcTof->tdc1();
00589 mrpc_tt2 = mrpcTof->qtc2();
00590 mrpc_tl2 = mrpcTof->tdc2();
00591 mrpc_tot1 = mrpcTof->adc1();
00592 mrpc_tot2 = mrpcTof->adc2();
00593 mrpc_quality = mrpcTof->quality();
00594 mrpc_tmatched = mrpcTof->tmatched();
00595 mrpc_tttimes1 = mrpcTof->qtimes1();
00596 mrpc_tltimes1 = mrpcTof->ttimes1();
00597 mrpc_tttimes2 = mrpcTof->qtimes2();
00598 mrpc_tltimes2 = mrpcTof->ttimes2();
00599 mrpc_times1 = mrpcTof->eastTimes();
00600 mrpc_times2 = mrpcTof->westTimes();
00601 mrpc_times = mrpcTof->times();
00602 mrpc_ttnum1 = mrpcTof->qnumber1();
00603 mrpc_tlnum1 = mrpcTof->tnumber1();
00604 mrpc_ttnum2 = mrpcTof->qnumber2();
00605 mrpc_tlnum2 = mrpcTof->tnumber2();
00606 mrpc_tsum = ( mrpcTof->tdc1() + mrpcTof->tdc2() )/2.0;
00607 mrpc_tsub = ( mrpcTof->tdc1() - mrpcTof->tdc2() )/2.0;
00608 mrpc_ztdc = tofCaliSvc->ZTDC( mrpcTof->tdc1(), mrpcTof->tdc2(), mrpcTof->tofId() );
00609 mrpc_zadc = tofCaliSvc->ZADC( mrpcTof->adc1(), mrpcTof->adc2(), mrpcTof->tofId() );
00610 mrpc_t0 = estime;
00611 mrpc_t0stat = t0stat;
00612 mrpc_tuple->write();
00613 return;
00614 }
00615
00616
00617 void TofCheckDigi::FillCol(Event::EventHeader& eventHeader, TofDataMap& tofDataMap, double estime, int t0stat) {
00618 if( tofDataMap.empty() ) return;
00619 IterTofDataMap iter = tofDataMap.begin();
00620 for( ; iter != tofDataMap.end(); iter++ ) {
00621 Identifier iden = TofID::cell_id( (*iter).first );
00622 if( TofID::is_scin( iden ) ) {
00623 if( TofID::is_barrel( iden ) ) {
00624 Fill_Barrel( eventHeader, (*iter).second, estime, t0stat );
00625 }
00626 else {
00627 Fill_Endcap( eventHeader, (*iter).second, estime, t0stat );
00628 }
00629 }
00630 if( TofID::is_mrpc( iden ) ) {
00631 Fill_MRPC( eventHeader, (*iter).second, estime, t0stat );
00632 }
00633 }
00634 return;
00635 }
00636
00637
00638 void TofCheckDigi::FillCol(Event::EventHeader& eventHeader, std::vector<TofData*>& tofDataVec, double estime, int t0stat) {
00639 if( tofDataVec.size() <= 0 ) return;
00640 std::vector<TofData*>::iterator iter = tofDataVec.begin();
00641 for( ; iter != tofDataVec.end(); iter++ ) {
00642 if( (*iter)->barrel() ) {
00643 Fill_Barrel( eventHeader, (*iter), estime, t0stat );
00644 }
00645 else {
00646 Fill_Endcap( eventHeader, (*iter), estime, t0stat );
00647 }
00648 }
00649 return;
00650 }
00651
00652
00653 void TofCheckDigi::Fill(Event::EventHeader& eventHeader, RecMdcTrack*& mdcTrack, RecMdcKalTrack*& mdcKalTrack, RecExtTrack*& extTrack ) {
00654
00655 ext_run = eventHeader.runNumber();
00656 ext_event = eventHeader.eventNumber();
00657 ext_trackid = extTrack->trackId();
00658 ext_p = mdcTrack->p();
00659 ext_costheta= cos( mdcTrack->theta() );
00660
00661 int hitcase1[5], hitcase2[5], hitcase[5];
00662 int tofId1[5], tofId2[5];
00663
00664 for( unsigned int i=0; i<5; i++ ) {
00665
00666 ext_tofid1[i] = -9;
00667 ext_tofid2[i] = -9;
00668 ext_strip1[i] = -9;
00669 ext_strip2[i] = -9;
00670 ext_zrhit1[i] = -99.;
00671 ext_zrhit2[i] = -99.;
00672 ext_x1[i] = -999.;
00673 ext_x2[i] = -999.;
00674 ext_y1[i] = -999.;
00675 ext_y2[i] = -999.;
00676 ext_z1[i] = -999.;
00677 ext_z2[i] = -999.;
00678
00679 hitcase1[i] = 7;
00680 hitcase2[i] = 7;
00681 hitcase[i] = 7;
00682
00683 ext_kalman[i] = mdcKalTrack->getStat( 1, i );
00684 ext_x1[i] = (extTrack->tof1Position(i)).x();
00685 ext_x2[i] = (extTrack->tof2Position(i)).x();
00686 ext_y1[i] = (extTrack->tof1Position(i)).y();
00687 ext_y2[i] = (extTrack->tof2Position(i)).y();
00688 ext_z1[i] = (extTrack->tof1Position(i)).z();
00689 ext_z2[i] = (extTrack->tof2Position(i)).z();
00690
00691 tofId1[i] = extTrack->tof1VolumeNumber( i );
00692 tofId2[i] = extTrack->tof2VolumeNumber( i );
00693
00694 if( tofId1[i]>=0 && tofId1[i]<=87 ) {
00695 ext_tofid1[i] = tofId1[i];
00696 hitcase1[i] = 0;
00697 }
00698 else if( tofId1[i]>=176 && tofId1[i]<=223 ) {
00699 ext_tofid1[i] = tofId1[i] - 176 + 48;
00700 hitcase1[i] = 4;
00701 }
00702 else if( tofId1[i]>=224 && tofId1[i]<=271 ) {
00703 ext_tofid1[i] = tofId1[i] - 176 - 48;
00704 hitcase1[i] = 3;
00705 }
00706 else if( tofId1[i]>=272 && tofId1[i]<=1135 ) {
00707 int module = tofId1[i] - 176 - 96;
00708 ext_strip1[i] = module%12;
00709 ext_tofid1[i] = module/12;
00710 if( tofId1[i]>=272 && tofId1[i]<=703 ) {
00711 hitcase1[i] = 5;
00712 }
00713 else if( tofId1[i]>=704 && tofId1[i]<=1135 ) {
00714 hitcase1[i] = 6;
00715 }
00716 }
00717
00718 if( tofId2[i]>=88 && tofId2[i]<=175 ) {
00719 ext_tofid2[i] = tofId2[i];
00720 hitcase2[i] = 1;
00721 }
00722 else if( tofId2[i]>=272 && tofId2[i]<=1135 ) {
00723 int module = tofId2[i] - 176 - 96;
00724 ext_strip2[i] = module%12;
00725 ext_tofid2[i] = module/12;
00726 if( tofId2[i]>=272 && tofId2[i]<=703 ) {
00727 hitcase2[i] = 5;
00728 }
00729 else if( tofId2[i]>=704 && tofId2[i]<=1135 ) {
00730 hitcase2[i] = 6;
00731 }
00732 }
00733
00734
00735
00736
00737
00738
00739
00740
00741 if( ( hitcase1[i] == 0 ) || ( hitcase1[i] == 2 ) ) {
00742 ext_texp1[i] = extTrack->tof1( i );
00743 ext_path1[i] = extTrack->tof1Path( i );
00744 ext_zrhit1[i] = extTrack->tof1Position( i ).z();
00745 ext_errzr1[i] = extTrack->tof1PosSigmaAlongZ( i );
00746 ext_theta1[i] = extTrack->tof1Momentum( i ).rho()/extTrack->tof1Momentum( i ).r();
00747 ext_phi1[i] = extTrack->tof1Position( i ).phi();
00748 }
00749 else if( ( hitcase1[i] == 3 ) || ( hitcase1[i] == 4 ) ) {
00750 ext_texp1[i] = extTrack->tof1( i );
00751 ext_path1[i] = extTrack->tof1Path( i );
00752 ext_zrhit1[i] = extTrack->tof1Position( i ).rho();
00753 ext_errzr1[i] = sqrt( extTrack->tof1PosSigmaAlongX( i )*extTrack->tof1PosSigmaAlongX( i ) + extTrack->tof1PosSigmaAlongY( i )*extTrack->tof1PosSigmaAlongY( i ) );
00754 ext_theta1[i] = extTrack->tof1Momentum( i ).z()/extTrack->tof1Momentum( i ).r();
00755 ext_phi1[i] = extTrack->tof1Position( i ).phi();
00756 }
00757 else if( ( hitcase1[i] == 5 ) || ( hitcase1[i] == 6 ) ) {
00758 ext_texp1[i] = extTrack->tof1( i );
00759 ext_path1[i] = extTrack->tof1Path( i );
00760 ext_zrhit1[i] = extTrack->tof1Position( i ).x();
00761 ext_errzr1[i] = extTrack->tof1PosSigmaAlongX( i );
00762 ext_theta1[i] = extTrack->tof1Momentum( i ).z()/extTrack->tof1Momentum( i ).r();
00763 ext_phi1[i] = extTrack->tof1Position( i ).phi();
00764 }
00765
00766 if( ( hitcase2[i] == 5 ) || ( hitcase2[i] == 6 ) ) {
00767 ext_texp2[i] = extTrack->tof2( i );
00768 ext_path2[i] = extTrack->tof2Path( i );
00769 ext_zrhit2[i] = extTrack->tof2Position( i ).x();
00770 ext_errzr2[i] = extTrack->tof2PosSigmaAlongX( i );
00771 ext_theta1[i] = extTrack->tof2Momentum( i ).z()/extTrack->tof1Momentum( i ).r();
00772 ext_phi2[i] = extTrack->tof2Position( i ).phi();
00773 }
00774 else if( hitcase2[i] == 1 ) {
00775 ext_texp2[i] = extTrack->tof2( i );
00776 ext_path2[i] = extTrack->tof2Path( i );
00777 ext_zrhit2[i] = extTrack->tof2Position( i ).z();
00778 ext_errzr2[i] = extTrack->tof2PosSigmaAlongZ( i );
00779 ext_theta2[i] = extTrack->tof2Momentum( i ).rho()/extTrack->tof2Momentum( i ).r();
00780 ext_phi2[i] = extTrack->tof2Position( i ).phi();
00781 }
00782
00783 if( ( hitcase1[i] == 7 ) && ( hitcase2[i] == 7 ) ) { ext_quality[i] = 3; }
00784 else { ext_quality[i] = 0; }
00785
00786 if( hitcase1[i] == 0 ) {
00787 if( hitcase2[i] == 1 ) { hitcase[i] = 2; }
00788 else if( hitcase2[i] == 7 ) { hitcase[i] = 0; }
00789 }
00790 else if( ( hitcase1[i] == 3 ) || ( hitcase1[i] == 4 ) ) {
00791 if( hitcase2[i] == 7 ) { hitcase[i] == hitcase1[i]; }
00792 }
00793 else if( ( hitcase1[i] == 5 ) || ( hitcase1[i] == 6 ) ) {
00794 if( hitcase2[i] == 7 ) { hitcase[i] == hitcase1[i]; }
00795 }
00796
00797 if( hitcase2[i] == 1 ) {
00798 if( hitcase1[i] == 7 ) { hitcase[i] = 1; }
00799 }
00800 else if( ( hitcase2[i] == 5 ) || ( hitcase2[i] == 6 ) ) {
00801 if( hitcase1[i] == 7 ) { hitcase[i] == hitcase2[i]; }
00802 else if( hitcase1[i] == hitcase2[i] ) { hitcase[i] == hitcase2[i]; }
00803 }
00804
00805 ext_hitcase1[i] = hitcase1[i];
00806 ext_hitcase2[i] = hitcase2[i];
00807 ext_hitcase[i] = hitcase[i];
00808 }
00809
00810 ext_tuple->write();
00811
00812 return;
00813 }
00814
00815
00816 void TofCheckDigi::Fill_TofTrack(Event::EventHeader& eventHeader, TofTrack*& tof, double estime, int t0stat ) {
00817
00818 tof_run = eventHeader.runNumber();
00819 tof_event = eventHeader.eventNumber();
00820 tof_toftrackid = tof->tofTrackId();
00821 tof_trackid = tof->trackId();
00822 tof_id1 = tof->id1();
00823 tof_id2 = tof->id2();
00824 tof_istrip1 = tof->istrip1();
00825 tof_istrip2 = tof->istrip2();
00826 tof_barrel = tof->barrel();
00827 tof_hitcase = tof->hitCase();
00828 tof_momentum = tof->p();
00829 tof_path1 = tof->path1();
00830 tof_path2 = tof->path2();
00831 tof_zrhit1 = tof->zrhit1();
00832 tof_zrhit2 = tof->zrhit2();
00833 tof_errzr1 = tof->errzrhit1();
00834 tof_errzr2 = tof->errzrhit2();
00835 tof_xhit1 = tof->xhit1();
00836 tof_yhit1 = tof->yhit1();
00837 tof_xhit2 = tof->xhit2();
00838 tof_yhit2 = tof->yhit2();
00839 for( unsigned int i=0; i<5; i++ ) {
00840 tof_kal[i] = tof->kal(i);
00841 tof_zr1[i] = tof->zr1(i);
00842 tof_zr2[i] = tof->zr2(i);
00843 }
00844 tof_ztdc1 = tof->ztdc1();
00845 tof_ztdc2 = tof->ztdc2();
00846 tof_zadc1 = tof->zadc1();
00847 tof_zadc2 = tof->zadc2();
00848 tof_zt1 = -999.0;
00849 tof_zt2 = -999.0;
00850 tof_zt3 = -999.0;
00851 tof_zt4 = -999.0;
00852 tof_zq1 = -999.0;
00853 tof_zq2 = -999.0;
00854 tof_zq3 = -999.0;
00855 tof_zq4 = -999.0;
00856 if( tof->hitCase() == 0 || tof->hitCase() == 2 ) {
00857 tof_zt1 = tofCaliSvc->ZTDC1( tof->tdc2(), tof->tofId1(), tof->zrhit1() );
00858 tof_zt2 = tofCaliSvc->ZTDC2( tof->tdc1(), tof->tofId1(), tof->zrhit1() );
00859 tof_zq1 = tofCaliSvc->ZADC1( tof->adc2(), tof->tofId1(), tof->zrhit1() );
00860 tof_zq2 = tofCaliSvc->ZADC2( tof->adc1(), tof->tofId1(), tof->zrhit1() );
00861 }
00862 if( tof->hitCase() == 1 || tof->hitCase() == 2 ) {
00863 tof_zt3 = tofCaliSvc->ZTDC1( tof->tdc4(), tof->tofId2(), tof->zrhit2() );
00864 tof_zt4 = tofCaliSvc->ZTDC2( tof->tdc3(), tof->tofId2(), tof->zrhit2() );
00865 tof_zq3 = tofCaliSvc->ZADC1( tof->adc4(), tof->tofId2(), tof->zrhit2() );
00866 tof_zq4 = tofCaliSvc->ZADC2( tof->adc3(), tof->tofId2(), tof->zrhit2() );
00867 }
00868 tof_size1 = tof->size1();
00869 tof_size2 = tof->size2();
00870 tof_size3 = tof->size3();
00871 tof_size4 = tof->size4();
00872 tof_theta1 = tof->theta1();
00873 tof_theta2 = tof->theta2();
00874 tof_phi1 = tof->phi1();
00875 tof_phi2 = tof->phi2();
00876 tof_quality1 = tof->quality1();
00877 tof_quality2 = tof->quality2();
00878 tof_quality = tof->quality();
00879 tof_tofid1 = tof->tofId1();
00880 tof_tofid2 = tof->tofId2();
00881 tof_strip1 = tof->strip1();
00882 tof_strip2 = tof->strip2();
00883
00884
00885
00886
00887
00888
00889
00890
00891
00892
00893
00894
00895 tof_ph11 = tof->ph11();
00896 tof_ph12 = tof->ph12();
00897 tof_ph21 = tof->ph21();
00898 tof_ph22 = tof->ph22();
00899 tof_ph1 = tof->ph1();
00900 tof_ph2 = tof->ph2();
00901 tof_ph = tof->ph();
00902 tof_tofe11 = tof->tof11(0);
00903 tof_tofe12 = tof->tof12(0);
00904 tof_tofe21 = tof->tof21(0);
00905 tof_tofe22 = tof->tof22(0);
00906 tof_tofe1 = tof->tof1(0);
00907 tof_tofe2 = tof->tof2(0);
00908 tof_tofe = tof->tof(0);
00909 tof_tofmu11 = tof->tof11(1);
00910 tof_tofmu12 = tof->tof12(1);
00911 tof_tofmu21 = tof->tof21(1);
00912 tof_tofmu22 = tof->tof22(1);
00913 tof_tofmu1 = tof->tof1(1);
00914 tof_tofmu2 = tof->tof2(1);
00915 tof_tofmu = tof->tof(1);
00916 tof_tofpi11 = tof->tof11(2);
00917 tof_tofpi12 = tof->tof12(2);
00918 tof_tofpi21 = tof->tof21(2);
00919 tof_tofpi22 = tof->tof22(2);
00920 tof_tofpi1 = tof->tof1(2);
00921 tof_tofpi2 = tof->tof2(2);
00922 tof_tofpi = tof->tof(2);
00923 tof_tofk11 = tof->tof11(3);
00924 tof_tofk12 = tof->tof12(3);
00925 tof_tofk21 = tof->tof21(3);
00926 tof_tofk22 = tof->tof22(3);
00927 tof_tofk1 = tof->tof1(3);
00928 tof_tofk2 = tof->tof2(3);
00929 tof_tofk = tof->tof(3);
00930 tof_tofp11 = tof->tof11(4);
00931 tof_tofp12 = tof->tof12(4);
00932 tof_tofp21 = tof->tof21(4);
00933 tof_tofp22 = tof->tof22(4);
00934 tof_tofp1 = tof->tof1(4);
00935 tof_tofp2 = tof->tof2(4);
00936 tof_tofp = tof->tof(4);
00937 tof_qch1 = tof->qch1();
00938 tof_qch2 = tof->qch2();
00939 tof_qch3 = tof->qch3();
00940 tof_qch4 = tof->qch4();
00941 tof_adc1 = tof->adc1();
00942 tof_adc2 = tof->adc2();
00943 tof_adc3 = tof->adc3();
00944 tof_adc4 = tof->adc4();
00945 tof_tdc1 = tof->tdc1();
00946 tof_tdc2 = tof->tdc2();
00947 tof_tdc3 = tof->tdc3();
00948 tof_tdc4 = tof->tdc4();
00949 tof_texpe1 = tof->texpInner(0);
00950 tof_texpmu1 = tof->texpInner(1);
00951 tof_texppi1 = tof->texpInner(2);
00952 tof_texpk1 = tof->texpInner(3);
00953 tof_texpp1 = tof->texpInner(4);
00954 tof_texpe2 = tof->texpOuter(0);
00955 tof_texpmu2 = tof->texpOuter(1);
00956 tof_texppi2 = tof->texpOuter(2);
00957 tof_texpk2 = tof->texpOuter(3);
00958 tof_texpp2 = tof->texpOuter(4);
00959 tof_texpe = tof->texp(0);
00960 tof_texpmu = tof->texp(1);
00961 tof_texppi = tof->texp(2);
00962 tof_texpk = tof->texp(3);
00963 tof_texpp = tof->texp(4);
00964 tof_tdiff1 = tof->tdiff1();
00965 tof_tdiff2 = tof->tdiff2();
00966 tof_estime = estime;
00967 tof_t0stat = t0stat;
00968 tof_tuple->write();
00969
00970 return;
00971 }
00972
00973
00974 void TofCheckDigi::Fill_TofTrack(Event::EventHeader& eventHeader, TofTrack*& tof, double estime, int t0stat, TrigData& trigData ) {
00975
00976 tof_run = eventHeader.runNumber();
00977 tof_event = eventHeader.eventNumber();
00978 tof_toftrackid = tof->tofTrackId();
00979 tof_trackid = tof->trackId();
00980 tof_id1 = tof->id1();
00981 tof_id2 = tof->id2();
00982 tof_istrip1 = tof->istrip1();
00983 tof_istrip2 = tof->istrip2();
00984 tof_barrel = tof->barrel();
00985 tof_hitcase = tof->hitCase();
00986 tof_momentum = tof->p();
00987 tof_path1 = tof->path1();
00988 tof_path2 = tof->path2();
00989 tof_zrhit1 = tof->zrhit1();
00990 tof_zrhit2 = tof->zrhit2();
00991 tof_errzr1 = tof->errzrhit1();
00992 tof_errzr2 = tof->errzrhit2();
00993 tof_xhit1 = tof->xhit1();
00994 tof_yhit1 = tof->yhit1();
00995 tof_xhit2 = tof->xhit2();
00996 tof_yhit2 = tof->yhit2();
00997 for( unsigned int i=0; i<5; i++ ) {
00998 tof_kal[i] = tof->kal(i);
00999 tof_zr1[i] = tof->zr1(i);
01000 tof_zr2[i] = tof->zr2(i);
01001 }
01002 tof_ztdc1 = tof->ztdc1();
01003 tof_ztdc2 = tof->ztdc2();
01004 tof_zadc1 = tof->zadc1();
01005 tof_zadc2 = tof->zadc2();
01006 tof_zt1 = -999.0;
01007 tof_zt2 = -999.0;
01008 tof_zt3 = -999.0;
01009 tof_zt4 = -999.0;
01010 tof_zq1 = -999.0;
01011 tof_zq2 = -999.0;
01012 tof_zq3 = -999.0;
01013 tof_zq4 = -999.0;
01014 if( tof->hitCase() == 0 || tof->hitCase() == 2 ) {
01015 tof_zt1 = tofCaliSvc->ZTDC1( tof->tdc2(), tof->tofId1(), tof->zrhit1() );
01016 tof_zt2 = tofCaliSvc->ZTDC2( tof->tdc1(), tof->tofId1(), tof->zrhit1() );
01017 tof_zq1 = tofCaliSvc->ZADC1( tof->adc2(), tof->tofId1(), tof->zrhit1() );
01018 tof_zq2 = tofCaliSvc->ZADC2( tof->adc1(), tof->tofId1(), tof->zrhit1() );
01019 }
01020 if( tof->hitCase() == 1 || tof->hitCase() == 2 ) {
01021 tof_zt3 = tofCaliSvc->ZTDC1( tof->tdc4(), tof->tofId2(), tof->zrhit2() );
01022 tof_zt4 = tofCaliSvc->ZTDC2( tof->tdc3(), tof->tofId2(), tof->zrhit2() );
01023 tof_zq3 = tofCaliSvc->ZADC1( tof->adc4(), tof->tofId2(), tof->zrhit2() );
01024 tof_zq4 = tofCaliSvc->ZADC2( tof->adc3(), tof->tofId2(), tof->zrhit2() );
01025 }
01026 tof_size1 = tof->size1();
01027 tof_size2 = tof->size2();
01028 tof_size3 = tof->size3();
01029 tof_size4 = tof->size4();
01030 tof_theta1 = tof->theta1();
01031 tof_theta2 = tof->theta2();
01032 tof_phi1 = tof->phi1();
01033 tof_phi2 = tof->phi2();
01034 tof_quality1 = tof->quality1();
01035 tof_quality2 = tof->quality2();
01036 tof_quality = tof->quality();
01037 tof_tofid1 = tof->tofId1();
01038 tof_tofid2 = tof->tofId2();
01039 tof_strip1 = tof->strip1();
01040 tof_strip2 = tof->strip2();
01041
01042
01043
01044
01045
01046
01047
01048
01049
01050
01051
01052
01053 tof_ph11 = tof->ph11();
01054 tof_ph12 = tof->ph12();
01055 tof_ph21 = tof->ph21();
01056 tof_ph22 = tof->ph22();
01057 tof_ph1 = tof->ph1();
01058 tof_ph2 = tof->ph2();
01059 tof_ph = tof->ph();
01060 tof_tofe11 = tof->tof11(0);
01061 tof_tofe12 = tof->tof12(0);
01062 tof_tofe21 = tof->tof21(0);
01063 tof_tofe22 = tof->tof22(0);
01064 tof_tofe1 = tof->tof1(0);
01065 tof_tofe2 = tof->tof2(0);
01066 tof_tofe = tof->tof(0);
01067 tof_tofmu11 = tof->tof11(1);
01068 tof_tofmu12 = tof->tof12(1);
01069 tof_tofmu21 = tof->tof21(1);
01070 tof_tofmu22 = tof->tof22(1);
01071 tof_tofmu1 = tof->tof1(1);
01072 tof_tofmu2 = tof->tof2(1);
01073 tof_tofmu = tof->tof(1);
01074 tof_tofpi11 = tof->tof11(2);
01075 tof_tofpi12 = tof->tof12(2);
01076 tof_tofpi21 = tof->tof21(2);
01077 tof_tofpi22 = tof->tof22(2);
01078 tof_tofpi1 = tof->tof1(2);
01079 tof_tofpi2 = tof->tof2(2);
01080 tof_tofpi = tof->tof(2);
01081 tof_tofk11 = tof->tof11(3);
01082 tof_tofk12 = tof->tof12(3);
01083 tof_tofk21 = tof->tof21(3);
01084 tof_tofk22 = tof->tof22(3);
01085 tof_tofk1 = tof->tof1(3);
01086 tof_tofk2 = tof->tof2(3);
01087 tof_tofk = tof->tof(3);
01088 tof_tofp11 = tof->tof11(4);
01089 tof_tofp12 = tof->tof12(4);
01090 tof_tofp21 = tof->tof21(4);
01091 tof_tofp22 = tof->tof22(4);
01092 tof_tofp1 = tof->tof1(4);
01093 tof_tofp2 = tof->tof2(4);
01094 tof_tofp = tof->tof(4);
01095 tof_qch1 = tof->qch1();
01096 tof_qch2 = tof->qch2();
01097 tof_qch3 = tof->qch3();
01098 tof_qch4 = tof->qch4();
01099 tof_adc1 = tof->adc1();
01100 tof_adc2 = tof->adc2();
01101 tof_adc3 = tof->adc3();
01102 tof_adc4 = tof->adc4();
01103 tof_tdc1 = tof->tdc1();
01104 tof_tdc2 = tof->tdc2();
01105 tof_tdc3 = tof->tdc3();
01106 tof_tdc4 = tof->tdc4();
01107 tof_texpe1 = tof->texpInner(0);
01108 tof_texpmu1 = tof->texpInner(1);
01109 tof_texppi1 = tof->texpInner(2);
01110 tof_texpk1 = tof->texpInner(3);
01111 tof_texpp1 = tof->texpInner(4);
01112 tof_texpe2 = tof->texpOuter(0);
01113 tof_texpmu2 = tof->texpOuter(1);
01114 tof_texppi2 = tof->texpOuter(2);
01115 tof_texpk2 = tof->texpOuter(3);
01116 tof_texpp2 = tof->texpOuter(4);
01117 tof_texpe = tof->texp(0);
01118 tof_texpmu = tof->texp(1);
01119 tof_texppi = tof->texp(2);
01120 tof_texpk = tof->texp(3);
01121 tof_texpp = tof->texp(4);
01122 tof_tdiff1 = tof->tdiff1();
01123 tof_tdiff2 = tof->tdiff2();
01124 unsigned int trigChannel = 0;
01125 for( int i=0 ; i < 16; i++ ) {
01126 trigChannel = ( trigChannel | ( ( trigData.getTrigChannel(i) ) << i ) );
01127 }
01128 tof_trig = trigChannel;
01129 tof_estime = estime;
01130 tof_t0stat = t0stat;
01131 tof_tuple->write();
01132
01133 return;
01134 }
01135
01136
01137 void TofCheckDigi::Fill_TofTrack(Event::EventHeader& eventHeader, TofTrack*& tof, double estime, int t0stat, RecMdcKalTrackCol& mdcKalTrackCol ) {
01138
01139 tof_run = eventHeader.runNumber();
01140 tof_event = eventHeader.eventNumber();
01141 tof_toftrackid = tof->tofTrackId();
01142 tof_trackid = tof->trackId();
01143 RecMdcKalTrackCol::iterator iter = mdcKalTrackCol.begin();
01144 for( ; iter != mdcKalTrackCol.end(); iter++ ) {
01145 if( (*iter)->trackId() == tof->trackId() ) {
01146 double kappa = 10000.0;
01147 double tanl = -10000.0;
01148
01149 (*iter)->setPidType( RecMdcKalTrack::electron );
01150 kappa = (*iter)->kappa();
01151 tanl = (*iter)->tanl();
01152 if( kappa>0 ) { tof_charge = 1; }
01153 else { tof_charge = -1; }
01154 if( abs(kappa)<1.0e-6 ) { kappa = 1.0e-6; }
01155 tof_pt[0] = 1.0/kappa;
01156 tof_p[0] = abs(sqrt(1.0+tanl*tanl)*tof_pt[0]);
01157
01158 (*iter)->setPidType( RecMdcKalTrack::muon );
01159 kappa = (*iter)->kappa();
01160 tanl = (*iter)->tanl();
01161 if( abs(kappa)<1.0e-6 ) { kappa = 1.0e-6; }
01162 tof_pt[1] = 1.0/kappa;
01163 tof_p[1] = abs(sqrt(1.0+tanl*tanl)*tof_pt[1]);
01164
01165 (*iter)->setPidType( RecMdcKalTrack::pion );
01166 kappa = (*iter)->kappa();
01167 tanl = (*iter)->tanl();
01168 if( abs(kappa)<1.0e-6 ) { kappa = 1.0e-6; }
01169 tof_pt[2] = 1.0/kappa;
01170 tof_p[2] = abs(sqrt(1.0+tanl*tanl)*tof_pt[2]);
01171
01172 (*iter)->setPidType( RecMdcKalTrack::kaon );
01173 kappa = (*iter)->kappa();
01174 tanl = (*iter)->tanl();
01175 if( abs(kappa)<1.0e-6 ) { kappa = 1.0e-6; }
01176 tof_pt[3] = 1.0/kappa;
01177 tof_p[3] = abs(sqrt(1.0+tanl*tanl)*tof_pt[3]);
01178
01179 (*iter)->setPidType( RecMdcKalTrack::proton );
01180 kappa = (*iter)->kappa();
01181 tanl = (*iter)->tanl();
01182 if( abs(kappa)<1.0e-6 ) { kappa = 1.0e-6; }
01183 tof_pt[4] = 1.0/kappa;
01184 tof_p[4] = abs(sqrt(1.0+tanl*tanl)*tof_pt[4]);
01185
01186 break;
01187 }
01188 }
01189 tof_id1 = tof->id1();
01190 tof_id2 = tof->id2();
01191 tof_istrip1 = tof->istrip1();
01192 tof_istrip2 = tof->istrip2();
01193 tof_dstrip1 = tof->dstrip1();
01194 tof_dstrip2 = tof->dstrip2();
01195 tof_barrel = tof->barrel();
01196 tof_hitcase = tof->hitCase();
01197 tof_momentum = tof->p();
01198 tof_path1 = tof->path1();
01199 tof_path2 = tof->path2();
01200 tof_zrhit1 = tof->zrhit1();
01201 tof_zrhit2 = tof->zrhit2();
01202 tof_errzr1 = tof->errzrhit1();
01203 tof_errzr2 = tof->errzrhit2();
01204 tof_xhit1 = tof->xhit1();
01205 tof_yhit1 = tof->yhit1();
01206 tof_xhit2 = tof->xhit2();
01207 tof_yhit2 = tof->yhit2();
01208 for( unsigned int i=0; i<5; i++ ) {
01209 tof_kal[i] = tof->kal(i);
01210 tof_zr1[i] = tof->zr1(i);
01211 tof_zr2[i] = tof->zr2(i);
01212 }
01213 tof_ztdc1 = tof->ztdc1();
01214 tof_ztdc2 = tof->ztdc2();
01215 tof_zadc1 = tof->zadc1();
01216 tof_zadc2 = tof->zadc2();
01217 tof_zt1 = -999.0;
01218 tof_zt2 = -999.0;
01219 tof_zt3 = -999.0;
01220 tof_zt4 = -999.0;
01221 tof_zq1 = -999.0;
01222 tof_zq2 = -999.0;
01223 tof_zq3 = -999.0;
01224 tof_zq4 = -999.0;
01225 if( tof->hitCase() == 0 || tof->hitCase() == 2 ) {
01226 tof_zt1 = tofCaliSvc->ZTDC1( tof->tdc2(), tof->tofId1(), tof->zrhit1() );
01227 tof_zt2 = tofCaliSvc->ZTDC2( tof->tdc1(), tof->tofId1(), tof->zrhit1() );
01228 tof_zq1 = tofCaliSvc->ZADC1( tof->adc2(), tof->tofId1(), tof->zrhit1() );
01229 tof_zq2 = tofCaliSvc->ZADC2( tof->adc1(), tof->tofId1(), tof->zrhit1() );
01230 }
01231 if( tof->hitCase() == 1 || tof->hitCase() == 2 ) {
01232 tof_zt3 = tofCaliSvc->ZTDC1( tof->tdc4(), tof->tofId2(), tof->zrhit2() );
01233 tof_zt4 = tofCaliSvc->ZTDC2( tof->tdc3(), tof->tofId2(), tof->zrhit2() );
01234 tof_zq3 = tofCaliSvc->ZADC1( tof->adc4(), tof->tofId2(), tof->zrhit2() );
01235 tof_zq4 = tofCaliSvc->ZADC2( tof->adc3(), tof->tofId2(), tof->zrhit2() );
01236 }
01237 tof_size1 = tof->size1();
01238 tof_size2 = tof->size2();
01239 tof_size3 = tof->size3();
01240 tof_size4 = tof->size4();
01241 tof_theta1 = tof->theta1();
01242 tof_theta2 = tof->theta2();
01243 tof_phi1 = tof->phi1();
01244 tof_phi2 = tof->phi2();
01245 tof_quality1 = tof->quality1();
01246 tof_quality2 = tof->quality2();
01247 tof_quality = tof->quality();
01248 tof_tofid1 = tof->tofId1();
01249 tof_tofid2 = tof->tofId2();
01250 tof_strip1 = tof->strip1();
01251 tof_strip2 = tof->strip2();
01252
01253
01254
01255
01256
01257
01258
01259
01260
01261
01262
01263
01264 tof_ph11 = tof->ph11();
01265 tof_ph12 = tof->ph12();
01266 tof_ph21 = tof->ph21();
01267 tof_ph22 = tof->ph22();
01268 tof_ph1 = tof->ph1();
01269 tof_ph2 = tof->ph2();
01270 tof_ph = tof->ph();
01271 tof_tofe11 = tof->tof11(0);
01272 tof_tofe12 = tof->tof12(0);
01273 tof_tofe21 = tof->tof21(0);
01274 tof_tofe22 = tof->tof22(0);
01275 tof_tofe1 = tof->tof1(0);
01276 tof_tofe2 = tof->tof2(0);
01277 tof_tofe = tof->tof(0);
01278 tof_tofmu11 = tof->tof11(1);
01279 tof_tofmu12 = tof->tof12(1);
01280 tof_tofmu21 = tof->tof21(1);
01281 tof_tofmu22 = tof->tof22(1);
01282 tof_tofmu1 = tof->tof1(1);
01283 tof_tofmu2 = tof->tof2(1);
01284 tof_tofmu = tof->tof(1);
01285 tof_tofpi11 = tof->tof11(2);
01286 tof_tofpi12 = tof->tof12(2);
01287 tof_tofpi21 = tof->tof21(2);
01288 tof_tofpi22 = tof->tof22(2);
01289 tof_tofpi1 = tof->tof1(2);
01290 tof_tofpi2 = tof->tof2(2);
01291 tof_tofpi = tof->tof(2);
01292 tof_tofk11 = tof->tof11(3);
01293 tof_tofk12 = tof->tof12(3);
01294 tof_tofk21 = tof->tof21(3);
01295 tof_tofk22 = tof->tof22(3);
01296 tof_tofk1 = tof->tof1(3);
01297 tof_tofk2 = tof->tof2(3);
01298 tof_tofk = tof->tof(3);
01299 tof_tofp11 = tof->tof11(4);
01300 tof_tofp12 = tof->tof12(4);
01301 tof_tofp21 = tof->tof21(4);
01302 tof_tofp22 = tof->tof22(4);
01303 tof_tofp1 = tof->tof1(4);
01304 tof_tofp2 = tof->tof2(4);
01305 tof_tofp = tof->tof(4);
01306 tof_qch1 = tof->qch1();
01307 tof_qch2 = tof->qch2();
01308 tof_qch3 = tof->qch3();
01309 tof_qch4 = tof->qch4();
01310 tof_adc1 = tof->adc1();
01311 tof_adc2 = tof->adc2();
01312 tof_adc3 = tof->adc3();
01313 tof_adc4 = tof->adc4();
01314 tof_tdc1 = tof->tdc1();
01315 tof_tdc2 = tof->tdc2();
01316 tof_tdc3 = tof->tdc3();
01317 tof_tdc4 = tof->tdc4();
01318 tof_texpe1 = tof->texpInner(0);
01319 tof_texpmu1 = tof->texpInner(1);
01320 tof_texppi1 = tof->texpInner(2);
01321 tof_texpk1 = tof->texpInner(3);
01322 tof_texpp1 = tof->texpInner(4);
01323 tof_texpe2 = tof->texpOuter(0);
01324 tof_texpmu2 = tof->texpOuter(1);
01325 tof_texppi2 = tof->texpOuter(2);
01326 tof_texpk2 = tof->texpOuter(3);
01327 tof_texpp2 = tof->texpOuter(4);
01328 tof_texpe = tof->texp(0);
01329 tof_texpmu = tof->texp(1);
01330 tof_texppi = tof->texp(2);
01331 tof_texpk = tof->texp(3);
01332 tof_texpp = tof->texp(4);
01333 tof_tdiff1 = tof->tdiff1();
01334 tof_tdiff2 = tof->tdiff2();
01335 tof_estime = estime;
01336 tof_t0stat = t0stat;
01337 tof_tuple->write();
01338
01339 return;
01340 }
01341
01342
01343 void TofCheckDigi::Fill_TofTrack(Event::EventHeader& eventHeader, TofTrack*& tof, double estime, int t0stat, RecMdcKalTrackCol& mdcKalTrackCol, TofMcHitCol& tofMcCol, McParticleCol& mcParticleCol, std::string calibData ) {
01344
01345 tof_run = eventHeader.runNumber();
01346 tof_event = eventHeader.eventNumber();
01347 tof_toftrackid = tof->tofTrackId();
01348 tof_trackid = tof->trackId();
01349 RecMdcKalTrackCol::iterator iter = mdcKalTrackCol.begin();
01350 for( ; iter != mdcKalTrackCol.end(); iter++ ) {
01351 if( (*iter)->trackId() == tof->trackId() ) {
01352 double kappa = 10000.0;
01353 double tanl = -10000.0;
01354
01355 (*iter)->setPidType( RecMdcKalTrack::electron );
01356 kappa = (*iter)->kappa();
01357 tanl = (*iter)->tanl();
01358 if( kappa>0 ) { tof_charge = 1; }
01359 else { tof_charge = -1; }
01360 if( abs(kappa)<1.0e-6 ) { kappa = 1.0e-6; }
01361 tof_pt[0] = 1.0/kappa;
01362 tof_p[0] = abs(sqrt(1.0+tanl*tanl)*tof_pt[0]);
01363
01364 (*iter)->setPidType( RecMdcKalTrack::muon );
01365 kappa = (*iter)->kappa();
01366 tanl = (*iter)->tanl();
01367 if( abs(kappa)<1.0e-6 ) { kappa = 1.0e-6; }
01368 tof_pt[1] = 1.0/kappa;
01369 tof_p[1] = abs(sqrt(1.0+tanl*tanl)*tof_pt[1]);
01370
01371 (*iter)->setPidType( RecMdcKalTrack::pion );
01372 kappa = (*iter)->kappa();
01373 tanl = (*iter)->tanl();
01374 if( abs(kappa)<1.0e-6 ) { kappa = 1.0e-6; }
01375 tof_pt[2] = 1.0/kappa;
01376 tof_p[2] = abs(sqrt(1.0+tanl*tanl)*tof_pt[2]);
01377
01378 (*iter)->setPidType( RecMdcKalTrack::kaon );
01379 kappa = (*iter)->kappa();
01380 tanl = (*iter)->tanl();
01381 if( abs(kappa)<1.0e-6 ) { kappa = 1.0e-6; }
01382 tof_pt[3] = 1.0/kappa;
01383 tof_p[3] = abs(sqrt(1.0+tanl*tanl)*tof_pt[3]);
01384
01385 (*iter)->setPidType( RecMdcKalTrack::proton );
01386 kappa = (*iter)->kappa();
01387 tanl = (*iter)->tanl();
01388 if( abs(kappa)<1.0e-6 ) { kappa = 1.0e-6; }
01389 tof_pt[4] = 1.0/kappa;
01390 tof_p[4] = abs(sqrt(1.0+tanl*tanl)*tof_pt[4]);
01391
01392 break;
01393 }
01394 }
01395 tof_id1 = tof->id1();
01396 tof_id2 = tof->id2();
01397 tof_istrip1 = tof->istrip1();
01398 tof_istrip2 = tof->istrip2();
01399 tof_barrel = tof->barrel();
01400 tof_hitcase = tof->hitCase();
01401 tof_momentum = tof->p();
01402 tof_path1 = tof->path1();
01403 tof_path2 = tof->path2();
01404 tof_zrhit1 = tof->zrhit1();
01405 tof_zrhit2 = tof->zrhit2();
01406 tof_errzr1 = tof->errzrhit1();
01407 tof_errzr2 = tof->errzrhit2();
01408 tof_xhit1 = tof->xhit1();
01409 tof_yhit1 = tof->yhit1();
01410 tof_xhit2 = tof->xhit2();
01411 tof_yhit2 = tof->yhit2();
01412 for( unsigned int i=0; i<5; i++ ) {
01413 tof_kal[i] = tof->kal(i);
01414 tof_zr1[i] = tof->zr1(i);
01415 tof_zr2[i] = tof->zr2(i);
01416 }
01417 tof_ztdc1 = tof->ztdc1();
01418 tof_ztdc2 = tof->ztdc2();
01419 tof_zadc1 = tof->zadc1();
01420 tof_zadc2 = tof->zadc2();
01421 tof_zt1 = -999.0;
01422 tof_zt2 = -999.0;
01423 tof_zt3 = -999.0;
01424 tof_zt4 = -999.0;
01425 tof_zq1 = -999.0;
01426 tof_zq2 = -999.0;
01427 tof_zq3 = -999.0;
01428 tof_zq4 = -999.0;
01429 if( tof->hitCase() == 0 || tof->hitCase() == 2 ) {
01430 tof_zt1 = tofCaliSvc->ZTDC1( tof->tdc2(), tof->tofId1(), tof->zrhit1() );
01431 tof_zt2 = tofCaliSvc->ZTDC2( tof->tdc1(), tof->tofId1(), tof->zrhit1() );
01432 tof_zq1 = tofCaliSvc->ZADC1( tof->adc2(), tof->tofId1(), tof->zrhit1() );
01433 tof_zq2 = tofCaliSvc->ZADC2( tof->adc1(), tof->tofId1(), tof->zrhit1() );
01434 }
01435 if( tof->hitCase() == 1 || tof->hitCase() == 2 ) {
01436 tof_zt3 = tofCaliSvc->ZTDC1( tof->tdc4(), tof->tofId2(), tof->zrhit2() );
01437 tof_zt4 = tofCaliSvc->ZTDC2( tof->tdc3(), tof->tofId2(), tof->zrhit2() );
01438 tof_zq3 = tofCaliSvc->ZADC1( tof->adc4(), tof->tofId2(), tof->zrhit2() );
01439 tof_zq4 = tofCaliSvc->ZADC2( tof->adc3(), tof->tofId2(), tof->zrhit2() );
01440 }
01441 tof_size1 = tof->size1();
01442 tof_size2 = tof->size2();
01443 tof_size3 = tof->size3();
01444 tof_size4 = tof->size4();
01445 tof_theta1 = tof->theta1();
01446 tof_theta2 = tof->theta2();
01447 tof_phi1 = tof->phi1();
01448 tof_phi2 = tof->phi2();
01449 tof_quality1 = tof->quality1();
01450 tof_quality2 = tof->quality2();
01451 tof_quality = tof->quality();
01452 tof_tofid1 = tof->tofId1();
01453 tof_tofid2 = tof->tofId2();
01454 tof_strip1 = tof->strip1();
01455 tof_strip2 = tof->strip2();
01456
01457
01458
01459
01460
01461
01462
01463
01464
01465
01466
01467
01468 tof_ph11 = tof->ph11();
01469 tof_ph12 = tof->ph12();
01470 tof_ph21 = tof->ph21();
01471 tof_ph22 = tof->ph22();
01472 tof_ph1 = tof->ph1();
01473 tof_ph2 = tof->ph2();
01474 tof_ph = tof->ph();
01475 tof_tofe11 = tof->tof11(0);
01476 tof_tofe12 = tof->tof12(0);
01477 tof_tofe21 = tof->tof21(0);
01478 tof_tofe22 = tof->tof22(0);
01479 tof_tofe1 = tof->tof1(0);
01480 tof_tofe2 = tof->tof2(0);
01481 tof_tofe = tof->tof(0);
01482 tof_tofmu11 = tof->tof11(1);
01483 tof_tofmu12 = tof->tof12(1);
01484 tof_tofmu21 = tof->tof21(1);
01485 tof_tofmu22 = tof->tof22(1);
01486 tof_tofmu1 = tof->tof1(1);
01487 tof_tofmu2 = tof->tof2(1);
01488 tof_tofmu = tof->tof(1);
01489 tof_tofpi11 = tof->tof11(2);
01490 tof_tofpi12 = tof->tof12(2);
01491 tof_tofpi21 = tof->tof21(2);
01492 tof_tofpi22 = tof->tof22(2);
01493 tof_tofpi1 = tof->tof1(2);
01494 tof_tofpi2 = tof->tof2(2);
01495 tof_tofpi = tof->tof(2);
01496 tof_tofk11 = tof->tof11(3);
01497 tof_tofk12 = tof->tof12(3);
01498 tof_tofk21 = tof->tof21(3);
01499 tof_tofk22 = tof->tof22(3);
01500 tof_tofk1 = tof->tof1(3);
01501 tof_tofk2 = tof->tof2(3);
01502 tof_tofk = tof->tof(3);
01503 tof_tofp11 = tof->tof11(4);
01504 tof_tofp12 = tof->tof12(4);
01505 tof_tofp21 = tof->tof21(4);
01506 tof_tofp22 = tof->tof22(4);
01507 tof_tofp1 = tof->tof1(4);
01508 tof_tofp2 = tof->tof2(4);
01509 tof_tofp = tof->tof(4);
01510 tof_qch1 = tof->qch1();
01511 tof_qch2 = tof->qch2();
01512 tof_qch3 = tof->qch3();
01513 tof_qch4 = tof->qch4();
01514 tof_adc1 = tof->adc1();
01515 tof_adc2 = tof->adc2();
01516 tof_adc3 = tof->adc3();
01517 tof_adc4 = tof->adc4();
01518 tof_tdc1 = tof->tdc1();
01519 tof_tdc2 = tof->tdc2();
01520 tof_tdc3 = tof->tdc3();
01521 tof_tdc4 = tof->tdc4();
01522 tof_texpe1 = tof->texpInner(0);
01523 tof_texpmu1 = tof->texpInner(1);
01524 tof_texppi1 = tof->texpInner(2);
01525 tof_texpk1 = tof->texpInner(3);
01526 tof_texpp1 = tof->texpInner(4);
01527 tof_texpe2 = tof->texpOuter(0);
01528 tof_texpmu2 = tof->texpOuter(1);
01529 tof_texppi2 = tof->texpOuter(2);
01530 tof_texpk2 = tof->texpOuter(3);
01531 tof_texpp2 = tof->texpOuter(4);
01532 tof_texpe = tof->texp(0);
01533 tof_texpmu = tof->texp(1);
01534 tof_texppi = tof->texp(2);
01535 tof_texpk = tof->texp(3);
01536 tof_texpp = tof->texp(4);
01537 tof_tdiff1 = tof->tdiff1();
01538 tof_tdiff2 = tof->tdiff2();
01539 tof_estime = estime;
01540 tof_t0stat = t0stat;
01541
01542 int particleId = 0;
01543 if( calibData == "Bhabha" ) { particleId = 11; }
01544 else if( calibData == "Dimu" ) { particleId = 13; }
01545 else if( calibData == "pion" ) { particleId = 211; }
01546 else if( calibData == "kaon" ) { particleId = 321; }
01547 else if( calibData == "proton" ) { particleId = 2212; }
01548 else {
01549 cout << "Reconstruction::TofRec::TofCheckDigi::Fill_TofTrack: For MC, Wrong Input Particle ID!" << endl;
01550 }
01551
01552 tof_mcp = -100.0;
01553 tof_mctofp = -100.0;
01554 tof_mctrkid = -100.0;
01555 tof_mcpath = -100.0;
01556 tof_mctexp = -100.0;
01557 tof_mczrhit = -1000.0;
01558
01559 McParticleCol::iterator iter_mc = mcParticleCol.begin();
01560 for( ; iter_mc != mcParticleCol.end(); iter_mc++ ) {
01561 int pid = (*iter_mc)->particleProperty();
01562 if( abs(pid) != particleId ) continue;
01563 if( ( particleId==11 || particleId==13 ) && ( ( pid>0 && tof_charge>0 ) || ( pid<0 && tof_charge<0 ) ) ) continue;
01564 if( ( particleId!=11 && particleId!=13 ) && ( ( pid>0 && tof_charge<0 ) || ( pid<0 && tof_charge>0 ) ) ) continue;
01565
01566 int trkIndex = (*iter_mc)->trackIndex();
01567 tof_mcp = (*iter_mc)->initialFourMomentum().rho();
01568
01569 TofMcHitCol::iterator iter_mc_tof = tofMcCol.begin();
01570 for( ; iter_mc_tof != tofMcCol.end(); iter_mc_tof++ ) {
01571 if( trkIndex != (*iter_mc_tof)->getTrackIndex() ) continue;
01572 double mcposx = (*iter_mc_tof)->getPositionX();
01573 double mcposy = (*iter_mc_tof)->getPositionY();
01574 double mcposr = 0.1*sqrt(mcposx*mcposx+mcposy*mcposy);
01575 double mcposz = 0.1*(*iter_mc_tof)->getPositionZ();
01576 double mcpx = (*iter_mc_tof)->getPx();
01577 double mcpy = (*iter_mc_tof)->getPy();
01578 double mcpz = (*iter_mc_tof)->getPz();
01579 double mctofp = 0.001*sqrt(mcpx*mcpx+mcpy*mcpy+mcpz*mcpz);
01580 tof_mctofp = mctofp;
01581 tof_mctrkid = (*iter_mc_tof)->getTrackIndex();
01582 tof_mcpath = 0.1*(*iter_mc_tof)->getTrackLength();
01583 tof_mctexp = (*iter_mc_tof)->getFlightTime();
01584 if( tof->hitCase()==0 || tof->hitCase()==1 || tof->hitCase()==2 ) {
01585 tof_mczrhit = mcposz;
01586 }
01587 else if( tof->hitCase()==3 || tof->hitCase()==4 ) {
01588 tof_mczrhit = mcposr;
01589 }
01590 }
01591 }
01592
01593 tof_tuple->write();
01594
01595 return;
01596 }
01597
01598
01599 void TofCheckDigi::FillCol(Event::EventHeader& eventHeader, RecMdcTrackCol& mdcTrackCol, RecMdcKalTrackCol& mdcKalTrackCol, RecExtTrackCol& recExtTrackCol) {
01600 if( mdcTrackCol.size()<=0 || mdcKalTrackCol.size() <= 0 || recExtTrackCol.size() <= 0 ) return;
01601 RecExtTrackCol::iterator iter_ext = recExtTrackCol.begin();
01602 for( ; iter_ext!=recExtTrackCol.end(); iter_ext++ ) {
01603 RecMdcKalTrackCol::iterator iter_kal = mdcKalTrackCol.begin();
01604 for( ; iter_kal!=mdcKalTrackCol.end(); iter_kal++ ) {
01605 RecMdcTrackCol::iterator iter_mdc = mdcTrackCol.begin();
01606 for( ; iter_mdc!=mdcTrackCol.end(); iter_mdc++ ) {
01607 if( (*iter_kal)->getTrackId() != (*iter_mdc)->trackId() ) continue;
01608 if( (*iter_kal)->getTrackId() == (*iter_ext)->trackId() ) break;
01609 }
01610 if( iter_mdc != mdcTrackCol.end() ) {
01611 Fill( eventHeader, *iter_mdc, *iter_kal, *iter_ext );
01612 }
01613 }
01614 }
01615 return;
01616 }
01617
01618
01619 void TofCheckDigi::FillCol(Event::EventHeader& eventHeader, RecExtTrackCol& extTrackCol, RecMdcTrackCol& mdcTrackCol, RecEmcShowerCol& emcShowerCol, RecMdcKalTrackCol& mdcKalTrackCol) {
01620 bb_run = eventHeader.runNumber();
01621 bb_event = eventHeader.eventNumber();
01622 bb_trksize = extTrackCol.size();
01623 bb_mdcsize = mdcTrackCol.size();
01624 bb_emcsize = emcShowerCol.size();
01625
01626 RecMdcTrackCol::iterator iter_mdc1 = mdcTrackCol.begin();
01627 RecMdcTrackCol::iterator iter_mdc2 = mdcTrackCol.begin() + 1;
01628
01629 Hep3Vector p1 = (*iter_mdc1)->p3();
01630 Hep3Vector p2 = (*iter_mdc2)->p3();
01631
01632 bb_trk1 = (*iter_mdc1)->trackId();
01633 bb_pmdc1 = (*iter_mdc1)->p();
01634 bb_ptmdc1 = (*iter_mdc1)->pxy();
01635 bb_theta1 = (*iter_mdc1)->theta();
01636 bb_phi1 = (*iter_mdc1)->phi();
01637 bb_x1 = (*iter_mdc1)->x();
01638 bb_y1 = (*iter_mdc1)->y();
01639 bb_z1 = (*iter_mdc1)->z();
01640 bb_r1 = (*iter_mdc1)->r();
01641 bb_charge1 = (*iter_mdc1)->charge();
01642 bb_chi1 = (*iter_mdc1)->chi2();
01643 bb_ndof1 = (*iter_mdc1)->ndof();
01644 bb_layer1 = (*iter_mdc1)->lastLayer();
01645 bb_trk2 = (*iter_mdc2)->trackId();
01646 bb_pmdc2 = (*iter_mdc2)->p();
01647 bb_ptmdc2 = (*iter_mdc2)->pxy();
01648 bb_theta2 = (*iter_mdc2)->theta();
01649 bb_phi2 = (*iter_mdc2)->phi();
01650 bb_x2 = (*iter_mdc2)->x();
01651 bb_y2 = (*iter_mdc2)->y();
01652 bb_z2 = (*iter_mdc2)->z();
01653 bb_r2 = (*iter_mdc2)->r();
01654 bb_charge2 = (*iter_mdc2)->charge();
01655 bb_chi2 = (*iter_mdc2)->chi2();
01656 bb_ndof2 = (*iter_mdc2)->ndof();
01657 bb_layer2 = (*iter_mdc2)->lastLayer();
01658
01659 bb_dang = 180.0 - p1.angle( p2.unit() )*180.0/pi;
01660 bb_dphi = abs( (*iter_mdc1)->phi() - (*iter_mdc2)->phi() )*180.0/pi;
01661
01662 RecMdcKalTrackCol::iterator iter_kal1 = mdcKalTrackCol.begin();
01663 RecMdcKalTrackCol::iterator iter_kal2 = mdcKalTrackCol.begin() + 1;
01664
01665 if( ( (*iter_kal1)->trackId() == (*iter_mdc2)->trackId() ) && ( (*iter_kal2)->trackId() == (*iter_mdc1)->trackId() ) ) {
01666 RecMdcKalTrackCol::iterator iter_tmp = iter_kal1;
01667 iter_kal1 = iter_kal2;
01668 iter_kal2 = iter_tmp;
01669 }
01670
01671
01672 (*iter_kal1)->setPidType( RecMdcKalTrack::electron );
01673 (*iter_kal2)->setPidType( RecMdcKalTrack::electron );
01674 double tanl1 = (*iter_kal1)->tanl();
01675 double kappa1 = (*iter_kal1)->kappa();
01676 double tanl2 = (*iter_kal2)->tanl();
01677 double kappa2 = (*iter_kal2)->kappa();
01678 bb_pe1 = sqrt(1.0+tanl1*tanl1)/kappa1;
01679 bb_pte1 = 1.0/kappa1;
01680 bb_pe2 = sqrt(1.0+tanl2*tanl2)/kappa2;
01681 bb_pte2 = 1.0/kappa2;
01682
01683 (*iter_kal1)->setPidType( RecMdcKalTrack::muon );
01684 (*iter_kal2)->setPidType( RecMdcKalTrack::muon );
01685 tanl1 = (*iter_kal1)->tanl();
01686 kappa1 = (*iter_kal1)->kappa();
01687 tanl2 = (*iter_kal2)->tanl();
01688 kappa2 = (*iter_kal2)->kappa();
01689 bb_pmu1 = sqrt(1.0+tanl1*tanl1)/kappa1;
01690 bb_ptmu1 = 1.0/kappa1;
01691 bb_pmu2 = sqrt(1.0+tanl2*tanl2)/kappa2;
01692 bb_ptmu2 = 1.0/kappa2;
01693
01694 RecExtTrackCol::iterator iter_ext1 = extTrackCol.begin();
01695 RecExtTrackCol::iterator iter_ext2 = extTrackCol.begin() + 1;
01696
01697 Hep3Vector extPos1 = (*iter_ext1)->emcPosition();
01698 Hep3Vector extPos2 = (*iter_ext2)->emcPosition();
01699
01700 bb_extx1 = extPos1.x();
01701 bb_exty1 = extPos1.y();
01702 bb_extz1 = extPos1.z();
01703 bb_extx2 = extPos2.x();
01704 bb_exty2 = extPos2.y();
01705 bb_extz2 = extPos2.z();
01706
01707 RecEmcShowerCol::iterator iter_emc1 = emcShowerCol.begin();
01708 RecEmcShowerCol::iterator iter_emc2 = emcShowerCol.begin() + 1;
01709
01710 Hep3Vector emcPos1((*iter_emc1)->x(),(*iter_emc1)->y(),(*iter_emc1)->z());
01711 Hep3Vector emcPos2((*iter_emc2)->x(),(*iter_emc2)->y(),(*iter_emc2)->z());
01712
01713
01714
01715
01716 Hep3Vector dis1 = extPos1 - emcPos1;
01717 Hep3Vector dis2 = extPos2 - emcPos1;
01718
01719
01720
01721 if( dis1.r() > dis2.r() ) {
01722 RecEmcShowerCol::iterator iter_tmp = iter_emc1;
01723 iter_emc1 = iter_emc2;
01724 iter_emc2 = iter_tmp;
01725 Hep3Vector emc_tmp = emcPos1;
01726 emcPos1 = emcPos2;
01727 emcPos2 = emc_tmp;
01728 }
01729 dis1 = extPos1 - emcPos1;
01730 dis2 = extPos2 - emcPos2;
01731
01732 bb_emctrk1 = (*iter_emc1)->trackId();
01733 bb_emcx1 = (*iter_emc1)->x();
01734 bb_emcy1 = (*iter_emc1)->y();
01735 bb_emcz1 = (*iter_emc1)->z();
01736 bb_e1 = (*iter_emc1)->energy()/(*iter_mdc1)->p();;
01737 bb_th1 = (*iter_emc1)->theta();
01738 bb_ph1 = (*iter_emc1)->phi();
01739 bb_emctrk2 = (*iter_emc2)->trackId();
01740 bb_emcx2 = (*iter_emc2)->x();
01741 bb_emcy2 = (*iter_emc2)->y();
01742 bb_emcz2 = (*iter_emc2)->z();
01743 bb_e2 = (*iter_emc2)->energy()/(*iter_mdc2)->p();;
01744 bb_th2 = (*iter_emc2)->theta();
01745 bb_ph2 = (*iter_emc2)->phi();
01746 bb_dr1 = dis1.r();
01747 bb_drxy1 = dis1.rho();
01748 bb_dz1 = dis1.z();
01749 bb_dr2 = dis2.r();
01750 bb_drxy2 = dis2.rho();
01751 bb_dz2 = dis2.z();
01752
01753 double etot = 0.0;
01754 RecEmcShowerCol::iterator iter_emc = emcShowerCol.begin();
01755 for( ; iter_emc != emcShowerCol.end(); iter_emc++ ) {
01756 etot += (*iter_emc)->energy();
01757 }
01758 bb_etot = etot - (*iter_emc1)->energy() - (*iter_emc2)->energy();
01759
01760 bb_tuple->write();
01761
01762 return;
01763 }