1 ////////////////////////////////////////////////////////////////////////////////
3 // Author: Artur Szostak
4 // Email: artur@alice.phy.uct.ac.za | artursz@iafrica.com
6 ////////////////////////////////////////////////////////////////////////////////
8 #ifndef dHLT_TRACKING_IO_INTERFACE_HPP
9 #define dHLT_TRACKING_IO_INTERFACE_HPP
11 #include "BasicTypes.hpp"
12 #include "EventID.hpp"
13 #include "TriggerRecord.hpp"
14 #include "RegionOfInterest.hpp"
15 #include "Cluster.hpp"
28 // Do not free memory of triggers nor clusters for a given event until the
29 // corresponding ReleaseTriggers or ReleaseClusters method is called.
31 /* Called by the framework when a new trigger record is to be processed.
33 virtual void AddTriggers(const EventID event, const TriggerRecord* triggers, const UInt count) = 0;
35 /* When no more triggers are expected by the framework then this method is called.
37 virtual void EndOfTriggers(const EventID event) = 0;
39 /* Called by the framework when the requested cluster blocks are to be processed.
41 virtual void AddClusters(const EventID event, const ROI region, const ClusterPoint* clusters, const UInt count) = 0;
43 /* When no more clusters are expected by the framework then this method is called.
45 virtual void EndOfClusters(const EventID event, const ROI region) = 0;
54 /* Called when clusters from the specified region of interest are required
55 to reconstruct the track.
57 virtual void RequestClusters(const EventID event, const ROI region) = 0;
59 /* When no more clusters are required for a given event then this method
62 virtual void EndOfClusterRequests(const EventID event) = 0;
64 // Do not free the returned memory until ReturnTracks is called
65 // with the same memory pointer.
66 virtual Track* AllocateTrackBlock(const UInt size) = 0;
68 /* When tracks have been found they are returned to the framework with
71 virtual void ReturnTracks(const EventID event, Track* newtracks, const UInt count) = 0;
73 /* When no more tracks can be found for this event then this method is called.
75 virtual void EndOfTracks(const EventID event) = 0;
77 // Do not free trigger blocks until this method is called for the given block of memory.
78 virtual void ReleaseTriggers(const TriggerRecord* triggers) = 0;
80 // Do not free cluster blocks until this method is called for the given block of memory.
81 virtual void ReleaseClusters(const ClusterPoint* clusters) = 0;
89 #endif // dHLT_TRACKING_IO_INTERFACE_HPP