1 ////////////////////////////////////////////////////////////////////////////////
3 // Author: Artur Szostak
4 // Email: artur@alice.phy.uct.ac.za | artursz@iafrica.com
6 ////////////////////////////////////////////////////////////////////////////////
8 #ifndef dHLT_TRACKING_IO_HANDLER_HPP
9 #define dHLT_TRACKING_IO_HANDLER_HPP
14 #include "Tracking/Tracker.hpp"
15 #include "Tracking/IOInterface.hpp"
16 #include "Tracking/EventHandler.hpp"
18 #include "Buffers/RegionTree.hpp"
19 #include "Buffers/List.hpp"
20 #include "Buffers/LookupTable.hpp"
24 ostream& operator << (ostream& os, const dHLT::EventID& id)
26 os << "[" << id.bunch << ", " << id.timestamp << "]";
38 using dHLT::Buffers::List;
39 using dHLT::Buffers::LookupTable;
46 virtual Tracker* NewTracker() = 0;
47 virtual void FreeTracker(Tracker* tracker) = 0;
51 ////////////////////////////////////////////////////////////////////////////////////////////
54 class IOHandler : public IOInterface
58 class EventLookupTable : public LookupTable<EventID, EventHandler> {};
60 ///////// IOInterface ///////////
62 virtual void AddTriggers(const EventID event, const TriggerRecord* triggers, const UInt count);
63 virtual void EndOfTriggers(const EventID event);
64 virtual void AddClusters(const EventID event, const ROI region, const ClusterPoint* clusters, const UInt count);
65 virtual void EndOfClusters(const EventID event, const ROI region);
68 //////// EventHandler callbacks /////////////
70 void RequestClusters(const EventID event, const ROI region);
71 void EndOfClusterRequests(const EventID event);
73 Track* AllocateTrackBlock(const UInt size);
74 void ReturnTracks(const EventID event, Track* newtracks, const UInt count);
75 void EndOfTracks(const EventID event);
77 void ReleaseTriggers(const TriggerRecord* triggers);
78 void ReleaseClusters(const ClusterPoint* clusters);
80 Tracker* NewTracker();
81 void FreeTracker(Tracker* tracker);
83 ////////////////////////////////////
86 virtual ~IOHandler() {};
88 void SetCallback(IOCallback* callback) { framework = callback; };
89 void SetTrackerStack(TrackerStack* stack) { trackerstack = stack; };
91 UInt GetMaxTracksInBlock()
99 IOCallback* framework;
100 TrackerStack* trackerstack;
102 EventLookupTable eventtable;
109 #endif // dHLT_TRACKING_IO_HANDLER_HPP