]> git.uio.no Git - u/mrichter/AliRoot.git/blob - HLT/MUON/OnlineAnalysis/AliHLTMUONMansoTrackerFSMCallback.h
ALIROOT-5433 Transition to CDHv3 in HLT
[u/mrichter/AliRoot.git] / HLT / MUON / OnlineAnalysis / AliHLTMUONMansoTrackerFSMCallback.h
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 class AliHLTMUONMansoTrackerFSMCallback
35 {
36 public:
37
38         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