]>
Commit | Line | Data |
---|---|---|
1 | #ifndef ALITRIGDEVICE_H | |
2 | #define ALITRIGDEVICE_H | |
3 | /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. * | |
4 | * See cxx source for full Copyright notice */ | |
5 | ||
6 | /* $Id$ */ | |
7 | // Author: Andrei Gheata, 27/07/2009 | |
8 | ||
9 | //============================================================================== | |
10 | // AliTrigDevice - Base class for a generic device. | |
11 | //============================================================================== | |
12 | ||
13 | #ifndef ROOT_TNamed | |
14 | #include "TNamed.h" | |
15 | #endif | |
16 | ||
17 | class AliTrigEvent; | |
18 | class AliTrigScheduler; | |
19 | class AliTrigScheduledResponse; | |
20 | ||
21 | class AliTrigDevice : public TNamed { | |
22 | ||
23 | private: | |
24 | AliTrigDevice(const AliTrigDevice &other); | |
25 | AliTrigDevice &operator=(const AliTrigDevice &other); | |
26 | ||
27 | public: | |
28 | AliTrigDevice(); | |
29 | AliTrigDevice(const char *name, Int_t ninputs, Int_t noutputs); | |
30 | virtual ~AliTrigDevice(); | |
31 | ||
32 | virtual void AddDevice(AliTrigDevice *other); | |
33 | Int_t GetNcomponents() const; | |
34 | AliTrigDevice *GetComponent(Int_t n); | |
35 | AliTrigScheduledResponse *GetResponseFunction(const char *name); | |
36 | AliTrigScheduler *GetScheduler() const {return fScheduler;} | |
37 | ||
38 | //____________________________________________________________________________ | |
39 | // Device creation method to be implemented by derived classes. The response | |
40 | // functions are registered here. Connections between component devices should | |
41 | // also be handled in this method. | |
42 | virtual Bool_t CreateDevice() {return kTRUE;} | |
43 | //____________________________________________________________________________ | |
44 | // Connectivity to other devices. The method will create a connector between | |
45 | // an output of this device to one input of the other. | |
46 | virtual Bool_t Connect(Int_t /*output*/, AliTrigDevice */*other*/, Int_t /*at_input*/) {return kTRUE;} | |
47 | ||
48 | //____________________________________________________________________________ | |
49 | // Response functions to be implemented by specific devices. Has to propagate | |
50 | // the response to all connected devices. Representing the output #n of the device. | |
51 | virtual Bool_t Response(Int_t output = 0) = 0; | |
52 | ||
53 | //____________________________________________________________________________ | |
54 | // Create the response functions of the device. | |
55 | // The delay argument is in arbitrary time units with respect to the startup | |
56 | // reference. Note that the created scheduled entry must be registered to the | |
57 | // device scheduler via: fDevice->AddScheduledEntry() method | |
58 | AliTrigScheduledResponse *RegisterResponseFunction(const char *name, Int_t output, Int_t delay); | |
59 | ||
60 | //____________________________________________________________________________ | |
61 | // Setting the value for a given input for digital devices of general ones | |
62 | // that are handling generic signals. | |
63 | virtual const char *GetOutputType(Int_t /*output*/) {return 0;} | |
64 | virtual Bool_t SetInputType(Int_t input, const char *classname) = 0; | |
65 | virtual Bool_t SetInputValue(Int_t input, Bool_t value) = 0; | |
66 | virtual Bool_t SetInputValue(Int_t input, AliTrigEvent *event) = 0; | |
67 | ||
68 | //____________________________________________________________________________ | |
69 | // Device-dependent inputs reset method | |
70 | virtual void ResetInputs() = 0; | |
71 | ||
72 | void SetNinputs(Int_t ninputs) {fNinputs = ninputs;} | |
73 | void SetNoutputs(Int_t noutputs) {fNoutputs = noutputs;} | |
74 | Int_t GetNinputs() const {return fNinputs;} | |
75 | Int_t GetNoutputs() const {return fNoutputs;} | |
76 | ||
77 | protected: | |
78 | Int_t fNinputs; // Number of inputs | |
79 | Int_t fNoutputs; // Number of outputs | |
80 | AliTrigScheduler *fScheduler; // Device scheduler | |
81 | TObjArray *fComponents; // Component devices | |
82 | TObjArray *fResponseFunctions; // List of response functions | |
83 | ||
84 | ClassDef(AliTrigDevice,1) // Base class for trigger devices | |
85 | }; | |
86 | #endif |