Back to home page

EIC code displayed by LXR

 
 

    


File indexing completed on 2025-02-21 10:00:30

0001 /***********************************************************************************\
0002 * (c) Copyright 1998-2019 CERN for the benefit of the LHCb and ATLAS collaborations *
0003 *                                                                                   *
0004 * This software is distributed under the terms of the Apache version 2 licence,     *
0005 * copied verbatim in the file "LICENSE".                                            *
0006 *                                                                                   *
0007 * In applying this licence, CERN does not waive the privileges and immunities       *
0008 * granted to it by virtue of its status as an Intergovernmental Organization        *
0009 * or submit itself to any jurisdiction.                                             *
0010 \***********************************************************************************/
0011 #ifndef GAUDIKERNEL_ICONDSVC_H
0012 #define GAUDIKERNEL_ICONDSVC_H 1
0013 
0014 #include "GaudiKernel/DataHandle.h"
0015 #include "GaudiKernel/DataObjID.h"
0016 #include "GaudiKernel/EventContext.h"
0017 #include "GaudiKernel/EventIDRange.h"
0018 #include "GaudiKernel/IAlgorithm.h"
0019 #include "GaudiKernel/IService.h"
0020 
0021 #include <set>
0022 #include <sstream>
0023 #include <string>
0024 
0025 /**@class ICondSvc ICondSvc.h GaudiKernel/ICondSvc.h
0026  *
0027  *  Interface for the Condition Service. It allows Algorithms to register
0028  *  their ConditionsHanaldes with the Service, and clients to query the
0029  *  Service to determine which objects are valid/invalid for a particualar
0030  *  EventContext.
0031  *
0032  *  @author  Charles Leggett
0033  *  @version 2.0
0034  */
0035 
0036 class ConditionSlotFuture;
0037 class IConditionIOSvc;
0038 
0039 class GAUDI_API ICondSvc : virtual public IService {
0040 public:
0041   DeclareInterfaceID( ICondSvc, 1, 0 );
0042 
0043   /// register dependency between an Algorithm and the Condition Handle it creates
0044   virtual StatusCode regHandle( IAlgorithm* alg, const Gaudi::DataHandle& id ) = 0;
0045 
0046   /// check to see if a specific condition object ID is valid for this event
0047   virtual bool isValidID( const EventContext& ctx, const DataObjID& id ) const = 0;
0048 
0049   /// get list of all registered condition Algorithms
0050   virtual const std::set<IAlgorithm*>& condAlgs() const = 0;
0051 
0052   /// query if a specific Algorithm is a registered condition Algorithm
0053   virtual bool isRegistered( IAlgorithm* alg ) const = 0;
0054 
0055   /// query if a condition Object ID is registered
0056   virtual bool isRegistered( const DataObjID& id ) const = 0;
0057 
0058   /// get collection of all registered condition Object IDs
0059   virtual const DataObjIDColl& conditionIDs() const = 0;
0060 
0061   /// dump the condition store
0062   virtual void dump( std::ostream& ost ) const = 0;
0063 
0064   /// retrieve all valid ranges for one Object ID
0065   virtual StatusCode validRanges( std::vector<EventIDRange>& ranges, const DataObjID& id ) const = 0;
0066 
0067   /// Asynchronously setup conditions
0068   virtual ConditionSlotFuture* startConditionSetup( const EventContext& ctx ) = 0;
0069 
0070   /// register an IConditionIOSvc (alternative to Algorithm processing of
0071   /// Conditions)
0072   virtual StatusCode registerConditionIOSvc( IConditionIOSvc* ioService ) = 0;
0073 };
0074 
0075 #endif