| Classes | Job Modules | Data Objects | Services | Algorithms | Tools | Packages | Directories | Tracs |

In This Package:

RawDataEvtSelector.cc

Go to the documentation of this file.
00001 #include "GaudiKernel/PropertyMgr.h"
00002 #include "GaudiKernel/IMessageSvc.h"
00003 #include "GaudiKernel/StatusCode.h"
00004 #include "GaudiKernel/MsgStream.h"
00005 #include "GaudiKernel/DataObject.h"
00006 
00007 #include "RawDataIO/IRawDataInputSvc.h"
00008 #include "RawDataEvent.h"
00009 #include "RawDataAddress.h"
00010 #include "RawDataEvtSelector.h"
00011 
00012 using namespace std;
00013 
00014 RawDataEvtSelector::RawDataEvtSelector(const string& name, ISvcLocator* svcloc)
00015       : Service(name, svcloc),
00016       m_rawSvc(0)
00017 {
00018 }
00019 
00020 RawDataEvtSelector::~RawDataEvtSelector()
00021 {
00022    MsgStream log(msgSvc(), name());
00023    log << MSG::INFO << "RawDataEvtSelector::~RawDataEvtSelector()" << endreq;
00024 }
00025 
00026 StatusCode RawDataEvtSelector::initialize()
00027 {
00028    MsgStream log(msgSvc(), name());
00029    log << MSG::INFO << "initialize() ... in name " << name() << endreq;
00030 
00031    StatusCode sc = Service::initialize();
00032    if (sc.isFailure()) return sc;
00033 
00034    sc = service("RawDataInputSvc", m_rawSvc, true);
00035    if (sc.isFailure()) {
00036       log << MSG::ERROR << "Cannot get RawDataInputSvc" << endreq;
00037    }
00038 
00039    return sc;
00040 }
00041 
00042 StatusCode RawDataEvtSelector::finalize()
00043 {
00044    return Service::finalize();
00045 }
00046 
00047 
00048 StatusCode RawDataEvtSelector::createContext(IEvtSelector::Context*& it) const
00049 {
00050    //wm m_rawSvc->initialize();
00051    it =  new RawDataEvtSelector::Context(this);
00052    return StatusCode::SUCCESS;
00053 }
00054 
00055 StatusCode RawDataEvtSelector::next(IEvtSelector::Context& it) const
00056 {
00057    MsgStream log(msgSvc(), name());
00058    log << MSG::DEBUG << "next" << endreq;
00059    return next(it, 1);
00060 }
00061 
00062 StatusCode RawDataEvtSelector::next(IEvtSelector::Context& ctxt, int jump) const
00063 {
00064    MsgStream log(msgSvc(), name());
00065    log << MSG::DEBUG << "next(" << jump << ")" << endreq;
00066    StatusCode sc = m_rawSvc->nextEvent();
00067    if (!sc.isSuccess()) {
00068       log << MSG::WARNING << "call to RawDataInputSvc->nextEvent() failed!!!" << endreq;
00069       return sc;
00070    }
00071    RawDataEvtSelector::Context* rc = dynamic_cast<RawDataEvtSelector::Context*>(&ctxt);
00072    if (!rc)
00073       return StatusCode::FAILURE;
00074    return setEntry(*rc, rc->m_entry + jump);
00075 }
00076 
00077 StatusCode RawDataEvtSelector::previous(IEvtSelector::Context& it) const
00078 {
00079    return previous(it, 1);
00080 }
00081 
00082 StatusCode RawDataEvtSelector::previous(IEvtSelector::Context& it, int jump) const
00083 {
00084    RawDataEvtSelector::Context* rc = dynamic_cast<RawDataEvtSelector::Context*>(&it);
00085    if (!rc) return StatusCode::FAILURE;
00086    rc->m_entry -= jump;
00087    return setEntry(*rc, rc->m_entry - jump);
00088 }
00089 
00090 StatusCode RawDataEvtSelector::last(IEvtSelector::Context&)const
00091 {
00092    MsgStream log(msgSvc(), name());
00093    log << MSG::ERROR << "last() not currently supported" << endreq;
00094    return StatusCode::FAILURE;
00095 }
00096 
00097 StatusCode RawDataEvtSelector::resetCriteria(const string& cr, IEvtSelector::Context& c) const
00098 {
00099    MsgStream log(msgSvc(), name());
00100    log << MSG::INFO << "resetCriteria(" << cr << ")" << endreq;
00101 
00102    RawDataEvtSelector::Context* rc = dynamic_cast<RawDataEvtSelector::Context*>(&c);
00103    if (!rc) return StatusCode::FAILURE;
00104    return StatusCode::SUCCESS;
00105 }
00106 
00107 StatusCode RawDataEvtSelector::rewind(IEvtSelector::Context&) const
00108 {
00109    MsgStream log(msgSvc(), name());
00110    log << MSG::ERROR << "rewind() not implemented" << endreq;
00111    return StatusCode::FAILURE;
00112 }
00113 
00114 StatusCode RawDataEvtSelector::createAddress(const IEvtSelector::Context& c, IOpaqueAddress*& iop) const
00115 {
00116    MsgStream log(msgSvc(), name());
00117    log << MSG::DEBUG << "createAddress" << endreq;
00118    const RawDataEvtSelector::Context* rc = dynamic_cast<const RawDataEvtSelector::Context*>(&c);
00119    if (!rc) {
00120       log << MSG::ERROR << "Failed to get Context" << endreq;
00121       return StatusCode::FAILURE;
00122    }
00123 
00124    iop = new RawDataAddress(DataObject::classID(), "Event", "Event");
00125    log << MSG::DEBUG << "createAddress for /Event" << endreq;
00126    return StatusCode::SUCCESS;
00127 }
00128 
00129 StatusCode RawDataEvtSelector::releaseContext(IEvtSelector::Context*& it) const
00130 {
00131    RawDataEvtSelector::Context* rc = dynamic_cast<RawDataEvtSelector::Context*>(it);
00132    if (!rc) return StatusCode::FAILURE;
00133 
00134    delete rc;
00135    it = 0;
00136    return StatusCode::SUCCESS;
00137 }
00138 
00139 StatusCode RawDataEvtSelector::queryInterface(const InterfaceID& riid, void** ppvInterface)
00140 {
00141    MsgStream log(msgSvc(), name());
00142    if (riid == IID_IEvtSelector) {
00143       *ppvInterface = (IEvtSelector*)this;
00144       addRef();
00145       log << MSG::DEBUG << "queryInterface(IID_IEvtSelector)" << endreq;
00146       return StatusCode::SUCCESS;
00147    } else if (riid == IID_IProperty) {
00148       *ppvInterface = (IProperty*)this;
00149    } else {
00150       log << MSG::DEBUG << "queryInterface(" << riid << ")" << endreq;
00151       return Service::queryInterface(riid, ppvInterface);
00152    }
00153    addRef();
00154    return StatusCode::SUCCESS;
00155 }
00156 
00157 StatusCode RawDataEvtSelector::setEntry(RawDataEvtSelector::Context& rc, int entry) const
00158 {
00159    MsgStream log(msgSvc(), name());
00160    log << MSG::DEBUG << "setEntry(" << entry << ")" << endreq;
00161 
00162    rc.m_entry = entry;
00163    return StatusCode::SUCCESS;
00164 }
| Classes | Job Modules | Data Objects | Services | Algorithms | Tools | Packages | Directories | Tracs |

Generated on Mon Apr 11 20:27:02 2011 for RawDataIO by doxygen 1.4.7