1 ////////////////////////////////////////////////////////////////////////////////
3 // Author: Artur Szostak
4 // Email: artur@alice.phy.uct.ac.za | artursz@iafrica.com
6 ////////////////////////////////////////////////////////////////////////////////
8 /* AliHLTMUONMicrodHLT is a minimalist framework for the dHLT tracking algorithm
9 to run in. It integrates all the internal components to execute the algorithm
11 To run the dHLT with the default Manso algorithm one performs the following
12 steps (Assuming we have an initialise AliMUONDataInterface object called
15 // Create a trigger source for the track seeds and populate it with data.
16 AliHLTMUONTriggerSource ts(data);
17 // We also need the cluster points.
18 AliHLTMUONClusterSource cs(data);
19 // Need a track sink to store the output data.
20 AliHLTMUONTrackSink output;
22 // Now we need the framework created and hook up the input and output.
23 AliHLTMUONMicrodHLT dhlt;
24 dhlt.SetTriggerSource(&ts);
25 dhlt.SetClusterSource(&ts);
26 dhlt.SetTrackSink(&output);
28 // And finally run the algorithm.
32 #ifndef ALIHLTMUONMICRODHLT_H
33 #define ALIHLTMUONMICRODHLT_H
38 #include "AliRoot/TriggerSource.hpp"
39 #include "AliRoot/ClusterSource.hpp"
40 #include "AliRoot/TrackSink.hpp"
41 #include "AliRoot/TrackerCallback.hpp"
44 class AliHLTMUONDummyClusterFinder;
45 class AliHLTMUONClusterFinderInterface;
46 class AliHLTMUONDummyTracker;
47 class AliHLTMUONTrackerInterface;
50 /* Routines for getting dHLT version information.
52 TString AliHLTMUONVersion();
53 UInt_t AliHLTMUONMajorVersion();
54 UInt_t AliHLTMUONMinorVersion();
55 UInt_t AliHLTMUONBuildNumber();
58 class AliHLTMUONMicrodHLT : public TObject
62 AliHLTMUONMicrodHLT();
63 virtual ~AliHLTMUONMicrodHLT();
65 /* Get/Set methods for the trigger data source.
66 Note: The source object must be cleaned up by the caller.
68 void SetTriggerSource(const AliHLTMUONTriggerSource* source);
69 const AliHLTMUONTriggerSource* GetTriggerSource() const { return fTriggerSource; };
71 /* Get/Set methods for the cluster data source.
72 Note: The source object must be cleaned up by the caller.
74 void SetClusterSource(const AliHLTMUONClusterSource* source);
75 const AliHLTMUONClusterSource* GetClusterSource() const { return fClusterSource; };
77 /* Get/Set methods for the track data sink (output target).
78 Note: The output object must be cleaned up by the caller.
80 void SetTrackSink(AliHLTMUONTrackSink* sink) { fTrackSink = sink; };
81 const AliHLTMUONTrackSink* GetTrackSink() const { return fTrackSink; };
83 /* Get/Set methods for the cluster finder interface.
84 Note: The cluster finder object must be cleaned up by the caller.
85 This field is optional. Use it if a custom cluster finder should be used.
87 void SetClusterFinder(AliHLTMUONClusterFinderInterface* clusterfinder)
89 fClusterFinder = clusterfinder;
92 const AliHLTMUONClusterFinderInterface* GetClusterFinder() const { return fClusterFinder; };
93 void SetClusterFinder(AliHLTMUONDummyClusterFinder* clusterfinder);
95 /* Get/Set methods for the tracker interface.
96 Note: The tracker object must be cleaned up by the caller.
97 This field is optional. Use it if a custom tracker should be used.
99 void SetTracker(AliHLTMUONTrackerInterface* tracker) { fTracker = tracker; };
100 const AliHLTMUONTrackerInterface* GetTracker() const { return fTracker; };
101 void SetTracker(AliHLTMUONDummyTracker* tracker);
103 /* The entry point routine for the dHLT algorithm in the micro format.
104 To run the dHLT set the input and output objects with the set methods
105 provided and then call this Run method.
109 // Get and set methods for the dHLT debug level.
110 static void DebugLevel(Int_t value);
111 static Int_t DebugLevel();
115 // Do not allow copying of this object.
116 AliHLTMUONMicrodHLT(const AliHLTMUONMicrodHLT& /*object*/) : TObject() {}
117 AliHLTMUONMicrodHLT& operator = (const AliHLTMUONMicrodHLT& /*object*/) { return *this; }
119 AliHLTMUONTriggerSource* fTriggerSource; //! Trigger record input source.
120 AliHLTMUONClusterSource* fClusterSource; //! Cluster point input source.
121 AliHLTMUONTrackSink* fTrackSink; //! Track output sink.
122 AliHLTMUONClusterFinderInterface* fClusterFinder; //! Interface to a custom cluster finder.
123 AliHLTMUONTrackerInterface* fTracker; //! Interface to a custom tracker.
125 ClassDef(AliHLTMUONMicrodHLT, 0); // A very minimal implementation of the dHLT algorithm.
129 #endif // ALIHLTMUONMICRODHLT_H