]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - TRIGGER/AliTrigEvent.h
Some of the trigger base classes. Steering part not yet in.
[u/mrichter/AliRoot.git] / TRIGGER / AliTrigEvent.h
diff --git a/TRIGGER/AliTrigEvent.h b/TRIGGER/AliTrigEvent.h
new file mode 100644 (file)
index 0000000..b129865
--- /dev/null
@@ -0,0 +1,94 @@
+#ifndef ALITRIGEVENT_H
+#define ALITRIGEVENT_H
+/* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
+ * See cxx source for full Copyright notice                               */
+
+/* $Id$ */
+// Author: Andrei Gheata, 28/07/2009
+
+//==============================================================================
+//   AliTrigEvent - Base class for generic information exchanged by a trigger
+//                  device. Trigger inputs and outputs are represented and
+//                  handled via AliTrigEvent objects. Trigger events are typically
+//                  wrappers for the information exchanged on a single I/O slot
+//                  or a group of correlated inputs.
+//==============================================================================
+
+#ifndef ROOT_TObject
+#include "TObject.h"
+#endif
+
+class TClass;
+class AliTrigEvent : public TObject {
+
+public:
+enum ETrigSignalFlags {
+  kActive = BIT(14)
+}
+  
+  AliTrigEvent() : TObject {}
+  virtual ~AliTrigEvent() {}
+
+  void                      Activate(Bool_t flag);
+  Bool_t                    IsActive() const {return TObject::TestBit(kActive);}
+  
+  // Import data from a source signal. Has to be implemented by derived signals.
+  virtual Bool_t            ImportData(AliTrigEvent *source) = 0;
+  virtual Bool_t            SetType(const char *classname) {return kTRUE;}
+  virtual TClass           *GetType() {return NULL;}
+     
+  ClassDef(AliTrigEvent,1)  // Generic event embedding data.
+};
+
+
+//==============================================================================
+//   AliTrigEventWithMask - Event embedding a bit mask as TBits
+// 
+//==============================================================================
+class TBits;
+class AliTrigEventWithMask : public AliTrigEvent {
+
+public:
+  AliTrigEventWithMask() : AliTrigEvent(), fValue() {}
+  virtual ~AliTrigEventWithMask() {}
+  
+  virtual Bool_t            ImportData(AliTrigEvent *source);
+
+  const TBits              &GetValue() const {return fValue;}
+  void                      SetValue(const TBits &value) {fValue = value;}
+
+private:
+  TBits                     fValue;  // Mask value
+     
+  ClassDef(AliTrigEventWithMask,1)  // Signal embedding a TBits object.
+};
+
+//==============================================================================
+//   AliTrigEventWithObject - Event embedding a TObject
+// 
+//==============================================================================
+
+class TClass;
+class AliTrigEventWithObject : public AliTrigEvent {
+
+public:
+  AliTrigEventWithObject() : AliTrigEvent(), fValue(0) {}
+  AliTrigEventWithObject(const char *classname);
+  AliTrigEventWithObject(const AliTrigEventWithObject &other);
+  virtual ~AliTrigEventWithObject() {}
+  
+  AliTrigEventWithObject   &operator=(const AliTrigEventWithObject &other);
+  virtual Bool_t            ImportData(AliTrigEvent *source);
+  virtual TClass           *GetType() const  {return fType;}
+  virtual Bool_t            SetType(const char *classname);
+  TObject                  *GetValue() const {return fValue;}
+  Bool_t                    SetValue(TObject *value);
+
+private:
+  TObject                  *fValue;  // Embedded object
+  TClass                   *fType;   //! Object type
+     
+  ClassDef(AliTrigEventWithObject,1)  // Signal embedding an object.
+};
+
+#endif