Main Page   Class Hierarchy   Compound List   File List   Compound Members   File Members  

Prescaler.cpp

Go to the documentation of this file.
00001 #include "Prescaler.h"
00002 
00003 #include "GaudiKernel/MsgStream.h"
00004 #include "GaudiKernel/AlgFactory.h"
00005 
00006 static const AlgFactory<Prescaler>    Factory;
00007 const IAlgFactory& PrescalerFactory = Factory;
00008 
00009 Prescaler::Prescaler(const std::string& name, ISvcLocator* pSvcLocator) :
00010   Algorithm(name, pSvcLocator) ,
00011   m_pass( 0 ),
00012   m_seen( 0 )
00013 {
00014     declareProperty( "PercentPass", m_percentPass=100.0 );
00015     m_percentPass.verifier().setBounds( 0.0, 100.0 );
00016 }
00017 
00018 Prescaler::~Prescaler( )
00019 {
00020 }
00021 
00022 StatusCode
00023 Prescaler::initialize()
00024 {
00025     MsgStream log(msgSvc(), name());
00026     log << MSG::INFO << name( ) << ":Prescaler::Initialize - pass: " << m_percentPass << endreq;
00027     return StatusCode::SUCCESS;
00028 }
00029 
00030 StatusCode
00031 Prescaler::execute()
00032 {
00033      MsgStream log(msgSvc(), name());
00034      m_seen++;
00035      float fraction = (100.0 * (float)(m_pass+1)) / (float)m_seen;
00036      if ( fraction > m_percentPass ) {
00037          setFilterPassed( false );
00038          log << MSG::INFO << name( ) << ":Prescaler::execute - filter failed" << endreq;
00039      } else {
00040          log << MSG::INFO << name( ) << ":Prescaler::execute - filter passed" << endreq;
00041          m_pass++;
00042      }
00043     return StatusCode::SUCCESS;
00044 }
00045 
00046 StatusCode
00047 Prescaler::finalize()
00048 {
00049     MsgStream log(msgSvc(), name());
00050     log << MSG::INFO << name( ) << ":Prescaler::finalize - total events: "
00051         << m_seen << ", passed events: " << m_pass << endreq;
00052     return StatusCode::SUCCESS;
00053 }

Generated at Wed Nov 21 12:20:23 2001 by doxygen1.2.3 written by Dimitri van Heesch, © 1997-2000