/home/bes3soft/bes3soft/Boss/7.0.2/dist/7.0.2/Reconstruction/TofRec/TofRec-00-04-46/src/TofCheckData.cxx

Go to the documentation of this file.
00001 #include "TofRec/TofCheckData.h"
00002 #include "DstEvent/TofHitStatus.h"
00003 #include <iostream>
00004 
00005 TofCheckData::TofCheckData( NTuple::Tuple*& trk, NTuple::Tuple*& cbtrk, NTuple::Tuple*& cetrk, NTuple::Tuple*& cetftrk ):trk_tuple(trk),cbtrk_tuple(cbtrk),cetrk_tuple(cetrk),cetftrk_tuple(cetftrk) {
00006 
00007   if(!trk_tuple) {
00008     std::cerr<<" Error: invalid pionter in TofCheckData(NTuple::Tuple*) for trk_tple"<<std::endl;
00009   }
00010   else{
00011     trk_tuple->addItem("run",        trk_run        );
00012     trk_tuple->addItem("event",      trk_event      );
00013     trk_tuple->addItem("toftrackid", trk_toftrackid );
00014     trk_tuple->addItem("trackid",    trk_trackid    );
00015     trk_tuple->addItem("charge",     trk_charge     );
00016     trk_tuple->addItem("p",       5, trk_p          );
00017     trk_tuple->addItem("tofid",      trk_tofid      );
00018     trk_tuple->addItem("strip",      trk_strip      );
00019     trk_tuple->addItem("raw",        trk_raw        );
00020     trk_tuple->addItem("readout",    trk_readout    );
00021     trk_tuple->addItem("counter",    trk_counter    );
00022     trk_tuple->addItem("cluster",    trk_cluster    );
00023     trk_tuple->addItem("barrel",     trk_barrel     );
00024     trk_tuple->addItem("east",       trk_east       );
00025     trk_tuple->addItem("layer",      trk_layer      );
00026     trk_tuple->addItem("over",       trk_overflow   );
00027     trk_tuple->addItem("cluster",    trk_cluster    );
00028     trk_tuple->addItem("multihit",   trk_multihit   );
00029     trk_tuple->addItem("ncounter",   trk_ncounter   );
00030     trk_tuple->addItem("neast",      trk_neast      );
00031     trk_tuple->addItem("nwest",      trk_nwest      );
00032     trk_tuple->addItem("mrpc",       trk_mrpc       );
00033     trk_tuple->addItem("path",       trk_path       );
00034     trk_tuple->addItem("zrhit",      trk_zrhit      );
00035     trk_tuple->addItem("ph",         trk_ph         );
00036     trk_tuple->addItem("tof",        trk_tof        );
00037     trk_tuple->addItem("errtof",     trk_errtof     );
00038     trk_tuple->addItem("beta",       trk_beta       );
00039     trk_tuple->addItem("texpe",      trk_texpe      );
00040     trk_tuple->addItem("texpmu",     trk_texpmu     );
00041     trk_tuple->addItem("texppi",     trk_texppi     );
00042     trk_tuple->addItem("texpk",      trk_texpk      );
00043     trk_tuple->addItem("texpp",      trk_texpp      );
00044     trk_tuple->addItem("offe",       trk_offe       );
00045     trk_tuple->addItem("offmu",      trk_offmu      );
00046     trk_tuple->addItem("offpi",      trk_offpi      );
00047     trk_tuple->addItem("offk",       trk_offk       );
00048     trk_tuple->addItem("offp",       trk_offp       );
00049     trk_tuple->addItem("sige",       trk_sige       );
00050     trk_tuple->addItem("sigmu",      trk_sigmu      );
00051     trk_tuple->addItem("sigpi",      trk_sigpi      );
00052     trk_tuple->addItem("sigk",       trk_sigk       );
00053     trk_tuple->addItem("sigp",       trk_sigp       );
00054     trk_tuple->addItem("qual",       trk_quality    );
00055     trk_tuple->addItem("t0",         trk_t0         );
00056     trk_tuple->addItem("errt0",      trk_errt0      );
00057     trk_tuple->addItem("errz",       trk_errz       );
00058     trk_tuple->addItem("phi",        trk_phi        );
00059     trk_tuple->addItem("errphi",     trk_errphi     );
00060     trk_tuple->addItem("e",          trk_energy     );
00061     trk_tuple->addItem("erre",       trk_errenergy  );
00062   }
00063 
00064   if(!cbtrk_tuple) {
00065     std::cerr<<" Error: invalid pionter in TofCheckData(NTuple::Tuple*) for cbtrk_tple"<<std::endl;
00066   }
00067   else{
00068     cbtrk_tuple->addItem("run",        cbtrk_run        );
00069     cbtrk_tuple->addItem("event",      cbtrk_event      );
00070     cbtrk_tuple->addItem("tofid",      cbtrk_tofid      );
00071     cbtrk_tuple->addItem("qual",       cbtrk_qual       );
00072     cbtrk_tuple->addItem("texp",       cbtrk_texp       );
00073     cbtrk_tuple->addItem("tdc1",       cbtrk_tdc1       );
00074     cbtrk_tuple->addItem("tdc2",       cbtrk_tdc2       );
00075     cbtrk_tuple->addItem("adc1",       cbtrk_adc1       );
00076     cbtrk_tuple->addItem("adc2",       cbtrk_adc2       );
00077     cbtrk_tuple->addItem("zhit",       cbtrk_zhit       );
00078     cbtrk_tuple->addItem("dzhit",      cbtrk_dzhit      );
00079     cbtrk_tuple->addItem("sint",       cbtrk_sintheta   );
00080     cbtrk_tuple->addItem("p",          cbtrk_p          );
00081     cbtrk_tuple->addItem("q",          cbtrk_q          );
00082     cbtrk_tuple->addItem("path",       cbtrk_path       );
00083   }
00084 
00085   if(!cetrk_tuple) {
00086     std::cerr<<" Error: invalid pionter in TofCheckData(NTuple::Tuple*) for cetrk_tple"<<std::endl;
00087   }
00088   else{
00089     cetrk_tuple->addItem("run",        cetrk_run        );
00090     cetrk_tuple->addItem("event",      cetrk_event      );
00091     cetrk_tuple->addItem("tofid",      cetrk_tofid      );
00092     cetrk_tuple->addItem("qual",       cetrk_qual       );
00093     cetrk_tuple->addItem("texp",       cetrk_texp       );
00094     cetrk_tuple->addItem("tdc",        cetrk_tdc        );
00095     cetrk_tuple->addItem("adc",        cetrk_adc        );
00096     cetrk_tuple->addItem("rhit",       cetrk_rhit       );
00097     cetrk_tuple->addItem("drhit",      cetrk_drhit      );
00098     //    cetrk_tuple->addItem("sint",       cetrk_sintheta   );
00099     cetrk_tuple->addItem("p",          cetrk_p          );
00100     cetrk_tuple->addItem("q",          cetrk_q          );
00101     cetrk_tuple->addItem("path",       cetrk_path       );
00102   }
00103 
00104   if(!cetftrk_tuple) {
00105     std::cerr<<" Error: invalid pionter in TofCheckData(NTuple::Tuple*) for cetftrk_tple"<<std::endl;
00106   }
00107   else{
00108     cetftrk_tuple->addItem("run",        cetftrk_run        );
00109     cetftrk_tuple->addItem("event",      cetftrk_event      );
00110     cetftrk_tuple->addItem("tofid",      cetftrk_tofid      );
00111     cetftrk_tuple->addItem("qual",       cetftrk_qual       );
00112     cetftrk_tuple->addItem("texp",       cetftrk_texp       );
00113     cetftrk_tuple->addItem("tdc1",       cetftrk_tdc1       );
00114     cetftrk_tuple->addItem("tdc2",       cetftrk_tdc2       );
00115     cetftrk_tuple->addItem("adc1",       cetftrk_adc1       );
00116     cetftrk_tuple->addItem("adc2",       cetftrk_adc2       );
00117     cetftrk_tuple->addItem("zhit",       cetftrk_zhit       );
00118     cetftrk_tuple->addItem("dzhit",      cetftrk_dzhit      );
00119     cetftrk_tuple->addItem("sint",       cetftrk_sintheta   );
00120     cetftrk_tuple->addItem("p",          cetftrk_p          );
00121     cetftrk_tuple->addItem("q",          cetftrk_q          );
00122     cetftrk_tuple->addItem("path",       cetftrk_path       );
00123   }
00124 }
00125 
00126 
00127 void TofCheckData::Fill(Event::EventHeader& eventHeader, RecTofTrack*& recTof, RecMdcKalTrack*& kalTrack, bool fillTrk ) {
00128 
00129   int charge = 0;
00130   double p[5]= {0.};
00131   if( fillTrk ) {
00132     kalTrack->setPidType( RecMdcKalTrack::electron );
00133     double kappa = kalTrack->kappa();
00134     if( kappa>0 ) { charge = 1; }
00135     else { charge = -1; }
00136     if( abs(kappa)<1.0e-6 ) { kappa = 1.0e-6; }
00137     p[0]  = abs(sqrt( 1.0 + kalTrack->tanl()*kalTrack->tanl() ) / kappa);
00138     kalTrack->setPidType( RecMdcKalTrack::muon );
00139     kappa = kalTrack->kappa();
00140     if( abs(kappa)<1.0e-6 ) { kappa = 1.0e-6; }
00141     p[1]  = abs(sqrt( 1.0 + kalTrack->tanl()*kalTrack->tanl() ) / kappa );
00142     kalTrack->setPidType( RecMdcKalTrack::pion );
00143     kappa = kalTrack->kappa();
00144     if( abs(kappa)<1.0e-6 ) { kappa = 1.0e-6; }
00145     p[2]  = abs(sqrt( 1.0 + kalTrack->tanl()*kalTrack->tanl() ) / kappa );
00146     kalTrack->setPidType( RecMdcKalTrack::kaon );
00147     kappa = kalTrack->kappa();
00148     if( abs(kappa)<1.0e-6 ) { kappa = 1.0e-6; }
00149     p[3]  = abs(sqrt( 1.0 + kalTrack->tanl()*kalTrack->tanl() ) / kappa );
00150     kalTrack->setPidType( RecMdcKalTrack::proton );
00151     kappa = kalTrack->kappa();
00152     if( abs(kappa)<1.0e-6 ) { kappa = 1.0e-6; }
00153     p[4]  = abs(sqrt( 1.0 + kalTrack->tanl()*kalTrack->tanl() ) / kappa );
00154   }
00155   trk_run     = eventHeader.runNumber();
00156   trk_event   = eventHeader.eventNumber();
00157   trk_toftrackid = recTof->tofTrackID();
00158   trk_trackid    = recTof->trackID();
00159   trk_charge     = charge;
00160   for( unsigned int i=0; i<5; i++ ) {
00161     trk_p[i]    = p[i];
00162   }
00163   trk_tofid      = recTof->tofID();
00164   trk_strip      = recTof->strip();
00165   TofHitStatus* hitStatus = new TofHitStatus;
00166   hitStatus->setStatus( recTof->status() );
00167   trk_raw       = hitStatus->is_raw();
00168   trk_readout   = hitStatus->is_readout();
00169   trk_counter   = hitStatus->is_counter();
00170   trk_cluster   = hitStatus->is_cluster();
00171   trk_barrel    = hitStatus->is_barrel();
00172   trk_east      = hitStatus->is_east();
00173   trk_layer     = hitStatus->layer();
00174   trk_overflow  = hitStatus->is_overflow();
00175   trk_multihit  = hitStatus->is_multihit();
00176   trk_ncounter  = hitStatus->ncounter();
00177   trk_neast     = hitStatus->neast();
00178   trk_nwest     = hitStatus->nwest();
00179   trk_mrpc      = hitStatus->is_mrpc();
00180   delete hitStatus;
00181   /*
00182   if( hitStatus->is_mrpc() ) {
00183     if( recTof->tofID() >= 0 ) {
00184       trk_tofid      = static_cast<int>(recTof->tofID()/12);
00185       trk_strip      = static_cast<int>(recTof->tofID()%12);
00186     }
00187   }
00188   */
00189   trk_path    = recTof->path();
00190   trk_zrhit   = recTof->zrhit();
00191   trk_ph      = recTof->ph();
00192   trk_tof     = recTof->tof();
00193   trk_errtof  = recTof->errtof();
00194   trk_beta    = recTof->beta();
00195   trk_texpe   = recTof->texpElectron();
00196   trk_texpmu  = recTof->texpMuon();
00197   trk_texppi  = recTof->texpPion();
00198   trk_texpk   = recTof->texpKaon();
00199   trk_texpp   = recTof->texpProton();
00200   trk_offe    = recTof->toffsetElectron();
00201   trk_offmu   = recTof->toffsetMuon();
00202   trk_offpi   = recTof->toffsetPion();
00203   trk_offk    = recTof->toffsetKaon();
00204   trk_offp    = recTof->toffsetProton();
00205   trk_sige    = recTof->sigmaElectron();
00206   trk_sigmu   = recTof->sigmaMuon();
00207   trk_sigpi   = recTof->sigmaPion();
00208   trk_sigk    = recTof->sigmaKaon();
00209   trk_sigp    = recTof->sigmaProton();
00210   trk_quality = recTof->quality();
00211   trk_t0      = recTof->t0();
00212   trk_errt0   = recTof->errt0();
00213   trk_errz    = recTof->errz();
00214   trk_phi     = recTof->phi();
00215   trk_errphi  = recTof->errphi();
00216   trk_energy  = recTof->energy();
00217   trk_errenergy = recTof->errenergy();
00218   trk_tuple->write();
00219   return;
00220 }
00221 
00222 
00223 void TofCheckData::FillBarrel(Event::EventHeader& eventHeader, RecBTofCalHit*& recBTof ) {
00224 
00225   cbtrk_run     = eventHeader.runNumber();
00226   cbtrk_event   = eventHeader.eventNumber();
00227   cbtrk_tofid   = recBTof->mod();
00228   cbtrk_qual    = recBTof->qual();
00229   cbtrk_texp    = recBTof->tpred(1);
00230   cbtrk_tdc1    = recBTof->tdc1();
00231   cbtrk_tdc2    = recBTof->tdc2();
00232   cbtrk_adc1    = recBTof->adc1();
00233   cbtrk_adc2    = recBTof->adc2();
00234   cbtrk_zhit    = recBTof->zHit();
00235   cbtrk_dzhit   = recBTof->dzHit();
00236   cbtrk_sintheta = recBTof->sinTheta();
00237   cbtrk_p       = recBTof->p();
00238   cbtrk_q       = recBTof->Q();
00239   cbtrk_path    = recBTof->path();
00240   cbtrk_tuple->write();
00241   return;
00242 }
00243 
00244 
00245 void TofCheckData::Fill(Event::EventHeader& eventHeader, RecETofCalHit*& recETof ) {
00246 
00247   cetrk_run     = eventHeader.runNumber();
00248   cetrk_event   = eventHeader.eventNumber();
00249   cetrk_tofid   = recETof->mod();
00250   cetrk_qual    = recETof->qual();
00251   cetrk_texp    = recETof->tpred(1);
00252   cetrk_tdc     = recETof->tdc();
00253   cetrk_adc     = recETof->adc();
00254   cetrk_rhit    = recETof->rHit();
00255   cetrk_drhit   = recETof->drHit();
00256   //  cetrk_sintheta = recETof->sinTheta();
00257   cetrk_p       = recETof->p();
00258   cetrk_q       = recETof->Q();
00259   cetrk_path    = recETof->path();
00260   cetrk_tuple->write();
00261   return;
00262 }
00263 
00264 void TofCheckData::FillETF(Event::EventHeader& eventHeader, RecBTofCalHit*& recBTof ) {
00265 
00266   cetftrk_run     = eventHeader.runNumber();
00267   cetftrk_event   = eventHeader.eventNumber();
00268   cetftrk_tofid   = recBTof->mod();
00269   cetftrk_qual    = recBTof->qual();
00270   cetftrk_texp    = recBTof->tpred(1);
00271   cetftrk_tdc1    = recBTof->tdc1();
00272   cetftrk_tdc2    = recBTof->tdc2();
00273   cetftrk_adc1    = recBTof->adc1();
00274   cetftrk_adc2    = recBTof->adc2();
00275   cetftrk_zhit    = recBTof->zHit();
00276   cetftrk_dzhit   = recBTof->dzHit();
00277   cetftrk_sintheta = recBTof->sinTheta();
00278   cetftrk_p       = recBTof->p();
00279   cetftrk_q       = recBTof->Q();
00280   cetftrk_path    = recBTof->path();
00281   cetftrk_tuple->write();
00282   return;
00283 }
00284 
00285 
00286 void TofCheckData::FillCol(Event::EventHeader& eventHeader, RecTofTrackCol& recTofTrackCol, RecMdcKalTrackCol& kalTrackCol) {
00287   RecTofTrackCol::iterator iter_tof = recTofTrackCol.begin();
00288   for( ; iter_tof!=recTofTrackCol.end(); iter_tof++ ) {
00289     RecMdcKalTrackCol::iterator iter_kal = kalTrackCol.begin();
00290     for( ; iter_kal!=kalTrackCol.end(); iter_kal++ ) {
00291       if( (*iter_tof)->trackID() == (*iter_kal)->trackId() ) break;
00292     }
00293     Fill( eventHeader, *iter_tof, *iter_kal, iter_kal!=kalTrackCol.end() );
00294   }
00295   return;
00296 }
00297 
00298 void TofCheckData::FillCol(Event::EventHeader& eventHeader, RecBTofCalHitCol& recBTofCalHitCol) {
00299   RecBTofCalHitCol::iterator iter_btof = recBTofCalHitCol.begin();
00300   for( ; iter_btof!=recBTofCalHitCol.end(); iter_btof++ ) {
00301     if( fabs( (*iter_btof)->dzHit() - 1.0 )<1.0e-6 ) {
00302       FillBarrel( eventHeader, *iter_btof );
00303     }
00304     else {
00305       FillETF( eventHeader, *iter_btof );
00306     }
00307   }
00308   return;
00309 }
00310 
00311 void TofCheckData::FillCol(Event::EventHeader& eventHeader, RecETofCalHitCol& recETofCalHitCol) {
00312   RecETofCalHitCol::iterator iter_etof = recETofCalHitCol.begin();
00313   for( ; iter_etof!=recETofCalHitCol.end(); iter_etof++ ) {
00314     Fill( eventHeader, *iter_etof );
00315   }
00316   return;
00317 }

Generated on Tue Nov 29 23:14:10 2016 for BOSS_7.0.2 by  doxygen 1.4.7