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

In This Package:

DaqFormatSelector.cc

Go to the documentation of this file.
00001 /*
00002  *  DaqFormatSelector.cc
00003  *  DaqFormatModules
00004  *
00005  *  Created by Simon Patton on 8/8/10.
00006  *  Copyright 2010 DayaBay Collaboration. All rights reserved.
00007  *
00008  */
00009 #include "DaqFormatSelector.h"
00010 
00011 #include "DaqFormatContext.h"
00012 #include "StructureConverter.h"
00013 
00014 #include "DaqReadoutSvc/IDaqReadoutSvc.h"
00015 
00016 using DybDaq::DaqFormatContext;
00017 using DybDaq::DaqFormatSelector;
00018 using DybDaq::StructureConverter;
00019 using std::vector;
00020 using std::string;
00021 
00022 DaqFormatSelector::DaqFormatSelector(const std::string& name,
00023                                      ISvcLocator* svc) :
00024 Service(name,
00025             svc),
00026 m_inputFiles(new vector<string>()) {
00027     declareProperty("InputFiles",
00028                     *m_inputFiles,
00029                     "List of input data files");
00030     declareProperty("SamplingInterval",
00031                     m_samplingInterval = 1,
00032                     "The sampling interval for runnihng spare analysis"); 
00033     declareProperty("ActionOnInvalid",
00034                     m_actionOnInvalid = DaqFormatContext::kExitOnInvalid,
00035                     "The action to take when an invalid event is found"); 
00036 }
00037 
00038 DaqFormatSelector::~DaqFormatSelector() {
00039     if (0 != m_inputFiles) {
00040         delete m_inputFiles;
00041     }
00042 }
00043 
00044 StatusCode DaqFormatSelector::createContext(Context*& context) const {
00045     IDaqReadoutSvc* daqSvc = 0;
00046     StatusCode status = service("DaqReadoutSvc",
00047                                 "DaqReadoutSvc",
00048                                 daqSvc);
00049     if (status.isFailure() ) {
00050         return status;
00051     }
00052     context = new DaqFormatContext(*m_inputFiles,
00053                                    m_actionOnInvalid,
00054                                    *msgSvc(),
00055                                    *daqSvc);
00056     return StatusCode::SUCCESS;
00057 }
00058 
00059 StatusCode DaqFormatSelector::next(Context& context) const {
00060     return next(context,
00061                 m_samplingInterval);
00062 }
00063 
00064 
00065 StatusCode DaqFormatSelector::next(Context& context,
00066                                    int jump) const {
00067     DaqFormatContext* ctxt = dynamic_cast<DaqFormatContext*>(&context);
00068     return ctxt->jump(jump);
00069 }
00070 
00071 
00072 StatusCode DaqFormatSelector::createAddress(const Context& context,
00073                                             IOpaqueAddress*& iop) const {
00074     const DaqFormatContext* ctxt = dynamic_cast<const DaqFormatContext*>(&context);
00075     StatusCode status = ctxt->isGoodEvent();
00076     if (status.isFailure()) {
00077         return status;
00078     }
00079     iop = new StructureConverter::Address(*ctxt,
00080                                           StructureConverter::kEvent);
00081     return StatusCode::SUCCESS;
00082 }
00083 
00084 
00085 StatusCode DaqFormatSelector::releaseContext(Context*& context) const {
00086     if (0 != context) {
00087         delete context;
00088     }
00089     return StatusCode::SUCCESS;
00090 }
00091 
00092 
00093 StatusCode DaqFormatSelector::queryInterface(const InterfaceID& id,
00094                                              void** interface) {
00095     if (IEvtSelector::interfaceID().versionMatch(id)) {
00096         // Good enough. Return this object
00097         *interface = dynamic_cast<IEvtSelector*>(this);
00098         addRef();
00099         return StatusCode::SUCCESS;
00100     }
00101     // Try base class
00102     return Service::queryInterface(id,
00103                                    interface);
00104 }
00105 
00106 StatusCode DaqFormatSelector::previous(Context& /* context */) const {
00107     return StatusCode::FAILURE;
00108 }
00109 
00110 StatusCode DaqFormatSelector::previous(Context& /* context */,
00111                                        int /* jump */) const {
00112     return StatusCode::FAILURE;
00113 }
00114 
00115 StatusCode DaqFormatSelector::last(Context& /* context */) const {
00116     return StatusCode::FAILURE;
00117 }
00118 
00119 StatusCode DaqFormatSelector::rewind(Context& /* context */) const {
00120     return StatusCode::FAILURE;
00121 }
00122 
00123 StatusCode DaqFormatSelector::resetCriteria(const std::string& /* criteria */,
00124                                             Context& /* context */) const {
00125     return StatusCode::FAILURE;
00126 }
| Classes | Job Modules | Data Objects | Services | Algorithms | Tools | Packages | Directories | Tracs |

Generated on Mon Apr 11 20:46:28 2011 for DaqFormatModules by doxygen 1.4.7