From 18f9207351ee4e7c4f166fd997441e3e52ab907e Mon Sep 17 00:00:00 2001 From: Frank Gaede <frank.gaede@desy.de> Date: Fri, 24 Feb 2017 13:26:23 +0100 Subject: [PATCH] implment skipping to event in GuineaPig reader --- plugins/Geant4EventReaderGuineaPig.cpp | 39 ++++++++++++++++++++++++-- 1 file changed, 37 insertions(+), 2 deletions(-) diff --git a/plugins/Geant4EventReaderGuineaPig.cpp b/plugins/Geant4EventReaderGuineaPig.cpp index e2d92848a..dce3c087c 100644 --- a/plugins/Geant4EventReaderGuineaPig.cpp +++ b/plugins/Geant4EventReaderGuineaPig.cpp @@ -114,7 +114,32 @@ Geant4EventReaderGuineaPig::moveToEvent(int event_number) { if( m_currEvent == 0 && event_number > 0 ){ - printout(INFO,"EventReaderGuineaPig::moveToEvent"," --- Cannot skip to event %d in GuineaPig files - ignored ! ", event_number ); + if( m_part_num < 1 ) { + + printout(ERROR,"EventReaderGuineaPig::moveToEvent"," --- Cannot skip to event %d in GuineaPig file without parameter 'ParticlesPerEvent' being set ! ", event_number ); + + return EVENT_READER_IO_ERROR; + + } else { + + + unsigned nSkipParticles = m_part_num * event_number ; + + printout(INFO,"EventReaderGuineaPig::moveToEvent"," --- Will skip first %d events, i.e. %d particles ", event_number , nSkipParticles ); + + // First check the input file status + if ( !m_input.good() || m_input.eof() ) { + return EVENT_READER_IO_ERROR; + } + + for (unsigned i = 0; i<nSkipParticles; ++i){ + if (m_input.ignore(numeric_limits<streamsize>::max(), m_input.widen('\n'))){ + //just skipping the line + } + else + return EVENT_READER_IO_ERROR ; + } + } } // else: nothing to do ... @@ -138,6 +163,14 @@ Geant4EventReaderGuineaPig::readParticles(int /* event_number */, if ( !m_input.good() || m_input.eof() ) { return EVENT_READER_IO_ERROR; } + + // Vertex* vtx = new Vertex ; + // vtx->x = 0 ; + // vtx->y = 0 ; + // vtx->z = 0 ; + // vtx->time = 0 ; + // vertices.push_back( vtx ) ; + double Energy; double betaX; @@ -167,6 +200,8 @@ Geant4EventReaderGuineaPig::readParticles(int /* event_number */, } } + // printf(" ------- %e %e %e %e %e %e %e \n", Energy,betaX, betaY,betaZ,posX,posY,posZ ) ; + // // Create a MCParticle and fill it from stdhep info Particle* p = new Particle(counter); @@ -222,7 +257,7 @@ Geant4EventReaderGuineaPig::readParticles(int /* event_number */, // create a new vertex for this particle vertices.push_back( vtx) ; - // counter++; + } // End loop over particles ++m_currEvent; -- GitLab