Line data Source code
1 : #ifndef ALIHLTMUONMANSOTRACKERFSMCALLBACK_H
2 : #define ALIHLTMUONMANSOTRACKERFSMCALLBACK_H
3 : /**************************************************************************
4 : * This file is property of and copyright by the ALICE HLT Project *
5 : * All rights reserved. *
6 : * *
7 : * Primary Authors: *
8 : * Artur Szostak <artursz@iafrica.com> *
9 : * *
10 : * Permission to use, copy, modify and distribute this software and its *
11 : * documentation strictly for non-commercial purposes is hereby granted *
12 : * without fee, provided that the above copyright notice appears in all *
13 : * copies and that both the copyright notice and this permission notice *
14 : * appear in the supporting documentation. The authors make no claims *
15 : * about the suitability of this software for any purpose. It is *
16 : * provided "as is" without express or implied warranty. *
17 : **************************************************************************/
18 :
19 : // $Id$
20 :
21 : /**
22 : * @file AliHLTMUONMansoTrackerFSMCallback.h
23 : * @author Artur Szostak <artursz@iafrica.com>
24 : * @date
25 : * @brief This is the abstract callback interface required by the Finite
26 : * State Machine (FSM) implementation of the Manso algorithm.
27 : */
28 :
29 : #include "AliHLTMUONDataTypes.h"
30 : #include <cassert>
31 :
32 : class AliHLTMUONMansoTrackerFSM;
33 :
34 6 : class AliHLTMUONMansoTrackerFSMCallback
35 : {
36 : public:
37 :
38 6 : virtual ~AliHLTMUONMansoTrackerFSMCallback() {};
39 :
40 : /* All clusters that fall within the specified boundary box on the specified
41 : chamber should be returned to the tracker, by calling the ReturnClusters
42 : method of the given tracker. The same tag parameter must be passed on the
43 : ReturnClusters method's parameter list.
44 : @param left The left border of the boundary box (x direction).
45 : @param right The right border of the boundary box (x direction).
46 : @param bottom The bottom border of the boundary box (y direction).
47 : @param top The top border of the boundary box (y direction).
48 : */
49 : virtual void RequestClusters(
50 : AliHLTMUONMansoTrackerFSM* tracker,
51 : AliHLTFloat32_t left, AliHLTFloat32_t right,
52 : AliHLTFloat32_t bottom, AliHLTFloat32_t top,
53 : AliHLTMUONChamberName chamber, const void* tag
54 : ) = 0;
55 :
56 : /* When this method is called then one knows no more RequestClusters method
57 : calls are expected.
58 : */
59 : virtual void EndOfClusterRequests(AliHLTMUONMansoTrackerFSM* tracker) = 0;
60 :
61 : /* This method is called when the tracker has found a track. The FillTrackData
62 : method of the given tracker should be called to receive the track data.
63 : At this point all cluster blocks can be released.
64 : */
65 : virtual void FoundTrack(AliHLTMUONMansoTrackerFSM* tracker) = 0;
66 :
67 : /* When the tracker is finished with its work but no track was found then
68 : this method is called. At this point no more work should be performed by
69 : the tracker and all cluster blocks can be released.
70 : */
71 : virtual void NoTrackFound(AliHLTMUONMansoTrackerFSM* tracker) = 0;
72 : };
73 :
74 : #endif // ALIHLTMUONMANSOTRACKERFSMCALLBACK_H
|