1 #ifndef ALITRIGDIGITALCIRCUIT_H
2 #define ALITRIGDIGITALCIRCUIT_H
3 /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
4 * See cxx source for full Copyright notice */
7 // Author: Andrei Gheata, 27/07/2009
9 //==============================================================================
10 // AliTrigDigitalCircuit - Base class for digital circuits having N Boolean
11 // inputs and one Boolean output. Derived classes must implement the pure
12 // virtual method Trigger() that will return the Boolean response
13 // of the circuit as function of the inputs.
14 //==============================================================================
16 #ifndef ALITRIGDEVICE_H
17 #include "AliTrigDevice.h"
25 class AliTrigConnector;
27 class AliTrigDigitalCircuit : public AliTrigDevice {
30 AliTrigDigitalCircuit() : AliTrigDevice(), fLastOutput(kFALSE), fConnector(0), fInputs() {}
31 AliTrigDigitalCircuit(const char *name, UInt_t ninputs) : AliTrigDevice(name, ninputs, 1), fLastOutput(kFALSE), fConnector(0), fInputs(ninputs) {}
32 AliTrigDigitalCircuit(const AliTrigDigitalCircuit &other);
33 virtual ~AliTrigDigitalCircuit() {}
34 AliTrigDigitalCircuit &operator=(const AliTrigDigitalCircuit &other);
36 virtual Bool_t Connect(UInt_t output, AliTrigDevice *other, UInt_t at_input);
37 virtual Bool_t Response(UInt_t output);
39 Bool_t GetInputValue(UInt_t input) const {return fInputs.TestBitNumber(input);}
40 virtual void ResetInputs() {fInputs.ResetAllBits();}
41 virtual void SetInputValue(UInt_t input, Bool_t value) {fInputs.SetBitNumber(input,value);}
42 virtual void SetInputValue(UInt_t input, AliTrigEvent *signal) {};
44 // Circuit response function.
45 virtual Bool_t Trigger() = 0;
48 Bool_t fLastOutput; // Output recorded after the last Response() call.
49 AliTrigConnector *fConnector; // Connector for the circuit output
52 ClassDef(AliTrigDigitalCircuit,1) // Base class for digital circuits