/data3/calcul/jacquem/working_dir/Micromegas/micromegasFrameWork/lcio/src/cpp/src/SIO/SIOTrackerPulseHandler.cc

Go to the documentation of this file.
00001 #include "SIO/SIOTrackerPulseHandler.h"
00002 
00003 #include "SIO/LCSIO.h"
00004 
00005 #include "EVENT/TrackerPulse.h"
00006 #include "EVENT/LCIO.h"
00007 #include "IMPL/LCFlagImpl.h"
00008 #include "IOIMPL/TrackerPulseIOImpl.h"
00009 
00010 #include "SIO_functions.h"
00011 #include "SIO_block.h"
00012 
00013 
00014 using namespace EVENT ;
00015 using namespace IMPL ;
00016 using namespace IOIMPL ;
00017 
00018 
00019 namespace SIO{
00020     
00021   unsigned int SIOTrackerPulseHandler::read(SIO_stream* stream, 
00022                                       LCObject** objP){
00023     unsigned int status ; 
00024         
00025     // create a new object :
00026     TrackerPulseIOImpl* hit  = new TrackerPulseIOImpl ;
00027     *objP = hit ;
00028         
00029     SIO_DATA( stream ,  &(hit->_cellID0) , 1  ) ;
00030     
00031     LCFlagImpl lcFlag(_flag) ;
00032     if( lcFlag.bitSet( LCIO::TRAWBIT_ID1 ) )
00033       SIO_DATA( stream ,  &(hit->_cellID1) , 1  ) ;
00034 
00035     SIO_DATA( stream ,  &(hit->_time) , 1  ) ;
00036     SIO_DATA( stream ,  &(hit->_charge )  , 1  ) ;
00037     if( _vers > SIO_VERSION_ENCODE( 1, 12 )   ){
00038 
00039         //SIO_DATA( stream ,  &(hit->_timeError) , 1  ) ;
00040         //SIO_DATA( stream ,  &(hit->_chargeError )  , 1  ) ;
00041 
00042         if( lcFlag.bitSet( LCIO::TRAWBIT_CM ) ){
00043             float cov[TRKPULSENCOVMATRIX] ;
00044             SIO_DATA( stream ,  cov  ,  TRKPULSENCOVMATRIX ) ;
00045             hit->setCovMatrix( cov ) ;
00046         }
00047     }
00048     SIO_DATA( stream ,  &(hit->_quality )  , 1  ) ;
00049     
00050     SIO_PNTR( stream , &(hit->_corrData) ) ;
00051     
00052     SIO_PTAG( stream , dynamic_cast<const TrackerPulse*>(hit) ) ;
00053 
00054     return ( SIO_BLOCK_SUCCESS ) ;
00055   }
00056     
00057     
00058   unsigned int SIOTrackerPulseHandler::write(SIO_stream* stream, 
00059                                        const LCObject* obj){
00060     
00061     unsigned int status ; 
00062 
00063     const TrackerPulse* hit = dynamic_cast<const TrackerPulse*>(obj)  ;
00064 
00065     LCSIO_WRITE( stream, hit->getCellID0()  ) ;
00066       
00067     LCFlagImpl lcFlag(_flag) ;
00068     if( lcFlag.bitSet( LCIO::TRAWBIT_ID1 ) )
00069       LCSIO_WRITE( stream, hit->getCellID1()  ) ;
00070     LCSIO_WRITE( stream, hit->getTime()  ) ;
00071     LCSIO_WRITE( stream, hit->getCharge()  ) ;
00072     //LCSIO_WRITE( stream, hit->getTimeError()  ) ;
00073     //LCSIO_WRITE( stream, hit->getChargeError()  ) ;
00074     if( lcFlag.bitSet( LCIO::TRAWBIT_CM ) ){
00075         const FloatVec& cov = hit->getCovMatrix() ;
00076         for(unsigned int i=0; i<cov.size(); i++){
00077             LCSIO_WRITE( stream, cov[i]  ) ;
00078         }
00079     }
00080     LCSIO_WRITE( stream, hit->getQuality()  ) ;
00081 
00082     TrackerData* corr = hit->getTrackerData() ;
00083     SIO_PNTR( stream ,  & corr ); 
00084 
00085     
00086     SIO_PTAG( stream , hit ) ;
00087     
00088     return ( SIO_BLOCK_SUCCESS ) ;
00089   }
00090   
00091 } // namespace

Generated on Mon Jan 7 13:15:21 2013 for MicromegasFramework by  doxygen 1.4.7