]> git.uio.no Git - u/mrichter/AliRoot.git/blob - HLT/MUON/src/Tracking/IOHandler.hpp
Also dropping references to AliMUONTriggerCircuit which are depricated. This is a...
[u/mrichter/AliRoot.git] / HLT / MUON / src / Tracking / IOHandler.hpp
1 ////////////////////////////////////////////////////////////////////////////////
2 //
3 // Author: Artur Szostak
4 // Email:  artur@alice.phy.uct.ac.za | artursz@iafrica.com
5 //
6 ////////////////////////////////////////////////////////////////////////////////
7
8 #ifndef dHLT_TRACKING_IO_HANDLER_HPP
9 #define dHLT_TRACKING_IO_HANDLER_HPP
10
11 #include <vector>
12 #include <algorithm>
13
14 #include "Tracking/Tracker.hpp"
15 #include "Tracking/IOInterface.hpp"
16 #include "Tracking/EventHandler.hpp"
17
18 #include "Buffers/RegionTree.hpp"
19 #include "Buffers/List.hpp"
20 #include "Buffers/LookupTable.hpp"
21
22
23 /*
24 ostream& operator << (ostream& os, const dHLT::EventID& id)
25 {
26         os << "[" << id.bunch << ", " << id.timestamp << "]";
27         return os;
28 };
29 */
30
31
32 namespace dHLT
33 {
34 namespace Tracking
35 {
36
37
38 using dHLT::Buffers::List;
39 using dHLT::Buffers::LookupTable;
40
41
42 class TrackerStack
43 {
44 public:
45
46         virtual Tracker* NewTracker() = 0;
47         virtual void FreeTracker(Tracker* tracker) = 0;
48 };
49
50
51 ////////////////////////////////////////////////////////////////////////////////////////////
52
53
54 class IOHandler : public IOInterface
55 {
56 public:
57
58         class EventLookupTable : public LookupTable<EventID, EventHandler> {};
59
60         ///////// IOInterface ///////////
61
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);
66
67
68         //////// EventHandler callbacks /////////////
69
70         void RequestClusters(const EventID event, const ROI region);
71         void EndOfClusterRequests(const EventID event);
72         
73         Track* AllocateTrackBlock(const UInt size);
74         void ReturnTracks(const EventID event, Track* newtracks, const UInt count);
75         void EndOfTracks(const EventID event);
76
77         void ReleaseTriggers(const TriggerRecord* triggers);
78         void ReleaseClusters(const ClusterPoint* clusters);
79
80         Tracker* NewTracker();
81         void FreeTracker(Tracker* tracker);
82
83         ////////////////////////////////////
84
85         IOHandler();
86         virtual ~IOHandler() {};
87
88         void SetCallback(IOCallback* callback) { framework = callback; };
89         void SetTrackerStack(TrackerStack* stack) { trackerstack = stack; };
90
91         UInt GetMaxTracksInBlock()
92         {
93                 return 100;
94         };
95
96
97 private:
98
99         IOCallback* framework;
100         TrackerStack* trackerstack;
101
102         EventLookupTable eventtable;
103
104 };
105
106 } // Tracking
107 } // dHLT
108
109 #endif // dHLT_TRACKING_IO_HANDLER_HPP