00001 #include "ValidRecTofTrack/ValidRecTofTrackAlg.h" 00002 #include "GaudiKernel/MsgStream.h" 00003 #include "GaudiKernel/SmartDataPtr.h" 00004 #include "GaudiKernel/IHistogramSvc.h" 00005 00006 #include "TofRecEvent/RecTofTrack.h" 00007 #include "DstEvent/TofHitStatus.h" 00008 00009 00010 ValidRecTofTrackAlg::ValidRecTofTrackAlg(const std::string& name, ISvcLocator* pSvcLocator) : Algorithm(name, pSvcLocator) { } 00011 00012 StatusCode ValidRecTofTrackAlg::initialize(){ 00013 MsgStream log( msgSvc(), name() ); 00014 log << MSG::INFO << "ValidRecTofTrackAlg initialize !" << endreq; 00015 00016 NTuplePtr nt1(ntupleSvc(),"FILE201/tof"); 00017 if ( nt1 ) m_tuple_tof = nt1; 00018 else { 00019 m_tuple_tof=ntupleSvc()->book("FILE201/tof",CLID_ColumnWiseTuple,"Validation of TOF" ); 00020 if( m_tuple_tof ) { 00021 m_tuple_tof->addItem("run", m_run ); 00022 m_tuple_tof->addItem("evt", m_event ); 00023 m_tuple_tof->addItem("toftrk", m_tofTrackID ); 00024 m_tuple_tof->addItem("trk", m_trackID ); 00025 m_tuple_tof->addItem("tofid", m_tofID ); 00026 m_tuple_tof->addItem("status", m_status ); 00027 m_tuple_tof->addItem("raw", m_raw ); 00028 m_tuple_tof->addItem("readout", m_readout ); 00029 m_tuple_tof->addItem("counter", m_counter ); 00030 m_tuple_tof->addItem("cluster", m_cluster ); 00031 m_tuple_tof->addItem("barrel", m_barrel ); 00032 m_tuple_tof->addItem("east", m_east ); 00033 m_tuple_tof->addItem("layer", m_layer ); 00034 m_tuple_tof->addItem("ncounter",m_ncounter ); 00035 m_tuple_tof->addItem("neast", m_neast ); 00036 m_tuple_tof->addItem("nwest", m_nwest ); 00037 m_tuple_tof->addItem("path", m_path ); 00038 m_tuple_tof->addItem("zrhit", m_zrhit ); 00039 m_tuple_tof->addItem("ph", m_ph ); 00040 m_tuple_tof->addItem("tof", m_tof ); 00041 m_tuple_tof->addItem("etof", m_errtof ); 00042 m_tuple_tof->addItem("beta", m_beta ); 00043 m_tuple_tof->addItem("texpe", m_texpe ); 00044 m_tuple_tof->addItem("texpmu", m_texpmu ); 00045 m_tuple_tof->addItem("texppi", m_texppi ); 00046 m_tuple_tof->addItem("texpk", m_texpk ); 00047 m_tuple_tof->addItem("texpp", m_texpp ); 00048 m_tuple_tof->addItem("toffe", m_toffe ); 00049 m_tuple_tof->addItem("toffmu", m_toffmu ); 00050 m_tuple_tof->addItem("toffpi", m_toffpi ); 00051 m_tuple_tof->addItem("toffk", m_toffk ); 00052 m_tuple_tof->addItem("toffp", m_toffp ); 00053 m_tuple_tof->addItem("toffpb", m_toffpb ); 00054 m_tuple_tof->addItem("sige", m_sigmae ); 00055 m_tuple_tof->addItem("sigmu", m_sigmamu ); 00056 m_tuple_tof->addItem("sigpi", m_sigmapi ); 00057 m_tuple_tof->addItem("sigk", m_sigmak ); 00058 m_tuple_tof->addItem("sigp", m_sigmap ); 00059 m_tuple_tof->addItem("sigpb", m_sigmapb ); 00060 m_tuple_tof->addItem("qual", m_quality ); 00061 m_tuple_tof->addItem("t0", m_t0 ); 00062 m_tuple_tof->addItem("et0", m_errt0 ); 00063 m_tuple_tof->addItem("ez", m_errz ); 00064 m_tuple_tof->addItem("phi", m_phi ); 00065 m_tuple_tof->addItem("ephi", m_errphi ); 00066 m_tuple_tof->addItem("e", m_energy ); 00067 m_tuple_tof->addItem("ee", m_errenergy ); 00068 } 00069 } 00070 00071 log << MSG::INFO << "Finish ValidRecTofTrackAlg initialize!" << endreq; 00072 return StatusCode::SUCCESS; 00073 } 00074 00075 00076 StatusCode ValidRecTofTrackAlg::execute() { 00077 MsgStream log(msgSvc(), name()); 00078 SmartDataPtr<RecTofTrackCol> tofTracks(eventSvc(),"/Event/Recon/RecTofTrackCol"); 00079 if( ! tofTracks ) { 00080 log << MSG::ERROR << "Unable to retrieve RecTofTrackCol" << endreq; 00081 return StatusCode::FAILURE; 00082 } 00083 else { 00084 log << MSG::DEBUG << "RecTofTrackCol retrieved of size "<< tofTracks->size() << endreq; 00085 for(RecTofTrackCol::iterator it=tofTracks->begin(); it!=tofTracks->end(); it++) { 00086 m_run = 0.0; 00087 m_event = 0.0; 00088 m_tofTrackID = (*it)->tofTrackID(); 00089 m_trackID = (*it)->trackID(); 00090 m_tofID = (*it)->tofID(); 00091 unsigned int status = (*it)->status(); 00092 TofHitStatus* tofhits = new TofHitStatus; 00093 tofhits->setStatus( status ); 00094 m_status = (*it)->status(); 00095 m_raw = tofhits->is_raw(); 00096 m_readout = tofhits->is_readout(); 00097 m_counter = tofhits->is_counter(); 00098 m_cluster = tofhits->is_cluster(); 00099 m_barrel = tofhits->is_barrel(); 00100 m_east = tofhits->is_east(); 00101 m_layer = tofhits->layer(); 00102 m_ncounter = tofhits->ncounter(); 00103 m_neast = tofhits->neast(); 00104 m_nwest = tofhits->nwest(); 00105 delete tofhits; 00106 m_path = (*it)->path(); 00107 m_zrhit = (*it)->zrhit(); 00108 m_ph = (*it)->ph(); 00109 m_tof = (*it)->tof(); 00110 m_errtof = (*it)->errtof(); 00111 m_beta = (*it)->beta(); 00112 m_texpe = (*it)->texpElectron(); 00113 m_texpmu = (*it)->texpMuon(); 00114 m_texppi = (*it)->texpPion(); 00115 m_texpk = (*it)->texpKaon(); 00116 m_texpp = (*it)->texpProton(); 00117 m_toffe = (*it)->toffsetElectron(); 00118 m_toffmu = (*it)->toffsetMuon(); 00119 m_toffpi = (*it)->toffsetPion(); 00120 m_toffk = (*it)->toffsetKaon(); 00121 m_toffp = (*it)->toffsetProton(); 00122 m_toffpb = (*it)->toffsetAntiProton(); 00123 m_sigmae = (*it)->sigmaElectron(); 00124 m_sigmamu = (*it)->sigmaMuon(); 00125 m_sigmapi = (*it)->sigmaPion(); 00126 m_sigmak = (*it)->sigmaKaon(); 00127 m_sigmap = (*it)->sigmaProton(); 00128 m_sigmapb = (*it)->sigmaAntiProton(); 00129 m_quality = (*it)->quality(); 00130 m_t0 = (*it)->t0(); 00131 m_errt0 = (*it)->errt0(); 00132 m_errz = (*it)->errz(); 00133 m_phi = (*it)->phi(); 00134 m_errphi = (*it)->errphi(); 00135 m_energy = (*it)->energy(); 00136 m_errenergy = (*it)->errenergy(); 00137 00138 m_tuple_tof->write(); 00139 } 00140 } 00141 return StatusCode::SUCCESS; 00142 } 00143 00144 00145 StatusCode ValidRecTofTrackAlg::finalize() { 00146 MsgStream log(msgSvc(), name()); 00147 log << MSG::INFO << "Finalizing..." << endreq; 00148 return StatusCode::SUCCESS; 00149 }