- // Gaudi
- #include "GaudiKernel/IToolSvc.h"
-
- // Tb/TbEvent
- #include "Event/TbHit.h"
- #include "Event/TbTrigger.h"
- #include "Event/TbCluster.h"
-
- // Tb/TbKernel
- #include "TbKernel/TbAlgorithm.h"
- #include "TbKernel/TbConstants.h"
-
- // Local
- #include "TbRawStream.h"
-
- /** @class TbPacketRecycler TbPacketRecycler.h
- *
- * Algorithm to move unprocessed data in the overlap into the next event
- * designed to prevent clusters / tracks being cut between events
- *
- * @author Tim Evans (timothy.david.evans@cern.ch)
- * @date 2014-04-01
- */
-
- class TbPacketRecycler : public TbAlgorithm {
- public:
- /// Constructor
- TbPacketRecycler(const std::string& name, ISvcLocator* pSvcLocator);
- /// Destructor
- virtual ~TbPacketRecycler() {}
-
- virtual StatusCode initialize(); ///< Algorithm initialization
- virtual StatusCode execute(); ///< Algorithm execution
-
- private:
- std::vector<TbRawStream*> m_streams;
- std::string m_hitLocation;
- std::string m_trgLocation;
- std::string m_clusLocation;
- template <typename TYPE>
- void recycle(KeyedContainer<TYPE, Containers::HashMap>* container,
- TbRawStream* s);
- void removeClusters(LHCb::TbClusters* clusters);
- template <typename TYPE>
- void addToCache(std::vector<TYPE*> cache, TYPE* packet) {
- cache.push_back(packet);
- }
- };
-
- template <>
- void TbPacketRecycler::addToCache(std::vector<LHCb::TbHit*> cache,
- LHCb::TbHit* packet) {
- cache.push_back(packet);
- }