LCOV - code coverage report
Current view: top level - TRIGGER - AliTrigScheduler.h (source / functions) Hit Total Coverage
Test: coverage.info Lines: 3 15 20.0 %
Date: 2016-06-14 17:26:59 Functions: 3 27 11.1 %

          Line data    Source code
       1             : #ifndef ALITRIGSCHEDULER_H
       2             : #define ALITRIGSCHEDULER_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             : #ifndef ROOT_TNamed
      10             : #include "TNamed.h"
      11             : #endif
      12             : 
      13             : //==============================================================================
      14             : //
      15             : //   AliTrigScheduledGroup - A group of scheduled entries that will simply be
      16             : //                           fired-up sequentially. The group delay in global time
      17             : //                           units is the latest start time of the contained
      18             : //                           entries. A group has a priority assigned by the
      19             : //                           owner scheduler object. Groups are fired-up according
      20             : //                           a programable sequence.
      21             : //
      22             : //==============================================================================
      23             : 
      24             : class TObjArray;
      25             : class AliTrigScheduledEntry;
      26             : class AliTrigScheduler;
      27             : 
      28             : //______________________________________________________________________________
      29             : class AliTrigScheduledGroup : public TNamed {
      30             : 
      31             : private:
      32             :   Int_t                     fPriority;     // Group priority
      33             :   Int_t                     fDelay;        // Group max. delay.
      34             :   TObjArray                *fEntries;      // List of scheduled entries
      35             : 
      36             : private:
      37             :   AliTrigScheduledGroup(const AliTrigScheduledGroup &other);
      38             :   AliTrigScheduledGroup &operator=(const AliTrigScheduledGroup &other);
      39             : 
      40             : public:  
      41             :   AliTrigScheduledGroup();
      42             :   AliTrigScheduledGroup(const char *name, Int_t priority=0);
      43             :   virtual ~AliTrigScheduledGroup();
      44             :   
      45             :   void                      AddEntry(AliTrigScheduledEntry *entry);
      46             :   void                      FireUp(Int_t time);
      47           0 :   TObjArray                *GetScheduledEntries() const {return fEntries;}
      48             :   Int_t                     GetNentries() const;
      49           0 :   Int_t                     GetPriority() const {return fPriority;}
      50           0 :   Int_t                     GetDelay()    const {return fDelay;}
      51             :   virtual void              Print(Option_t *option) const;
      52             :   void                      RemoveEntry(AliTrigScheduledEntry *entry);  
      53           0 :   void                      SetPriority(Int_t priority) {fPriority = priority;}
      54             :     
      55          12 :   ClassDef(AliTrigScheduledGroup, 1) // Groups of scheduled response functions
      56             : };   
      57             : 
      58             : //==============================================================================
      59             : //
      60             : //   AliTrigScheduledSequence - A programable group sequence. Scheduled groups
      61             : //                      are owned and controlled by a trigger scheduler. They
      62             : //                      are fired-up in such a sequence. A sequence supports some
      63             : //                      default modes but can also be programed manually.
      64             : //
      65             : //==============================================================================
      66             : 
      67             : //______________________________________________________________________________
      68             : class AliTrigScheduledSequence : public TNamed {
      69             : 
      70             : public:
      71             : enum ESortingType {
      72             :   kDefault       = 0,
      73             :   kTimeInc       = 1,
      74             :   kTimeDec       = 2,
      75             :   kPriorityInc   = 3,
      76             :   kPriorityDec   = 4,
      77             :   kCustom        = 5
      78             : };  
      79             : 
      80             : private:
      81             :   AliTrigScheduler         *fScheduler;    // Scheduler to which the sequence applies
      82             :   Int_t                     fNgroups;      // Number of groups
      83             :   ESortingType              fType;         // Sorting type
      84             :   Int_t                    *fArray;        //[fNgroups] Array specifying the sequence
      85             : 
      86             : private:
      87             :   AliTrigScheduledSequence(const AliTrigScheduledSequence &other);
      88             :   AliTrigScheduledSequence &operator=(const AliTrigScheduledSequence &other);
      89             :   void                      SortArray(Int_t *array, Bool_t increasing);
      90             : 
      91             : public:
      92             :   AliTrigScheduledSequence();
      93             :   AliTrigScheduledSequence(const char *name, AliTrigScheduler *scheduler);
      94             :   virtual ~AliTrigScheduledSequence();
      95             :   
      96           0 :   Int_t                    *GetArray() const {return fArray;}
      97           0 :   Int_t                     GetNgroups() const {return fNgroups;}
      98           0 :   AliTrigScheduler         *GetScheduler() const {return fScheduler;}
      99           0 :   ESortingType              GetSortingType() const {return fType;}
     100             :   virtual void              Print(Option_t *option) const;
     101             :   void                      Sort(ESortingType type, Int_t *sequence=0);
     102             :   
     103          12 :   ClassDef(AliTrigScheduledSequence, 1)  // Class for a scheduled group sequence
     104             : };
     105             : 
     106             : //==============================================================================
     107             : //
     108             : //   AliTrigScheduler - Device response function scheduler. Every device has a
     109             : //                      scheduler, but the same scheduler can replay responses of
     110             : //                      several devices. A scheduler holds groups of scheduled 
     111             : //                      entries. The groups can be replayed in programable
     112             : //                      sequences. A default group and sequence are always created.
     113             : //
     114             : //==============================================================================
     115             : 
     116             : class AliTrigScheduledGroup;
     117             : class AliTrigScheduledSequence;
     118             : 
     119             : //______________________________________________________________________________
     120             : class AliTrigScheduler : public TNamed {
     121             : 
     122             : private:
     123             :   Int_t                     fNgroups;      // Number of scheduled groups (at least one)
     124             :   TObjArray                *fGroups;       // List of groups of response functions
     125             :   TObjArray                *fSequences;    // List of group replay sequences
     126             :   AliTrigScheduledSequence *fCurrentSequence; // Current group replay sequence
     127             : 
     128             : private:
     129             :   AliTrigScheduler(const AliTrigScheduler &other);
     130             :   AliTrigScheduler &operator=(const AliTrigScheduler &other);
     131             : 
     132             : public:
     133             :   AliTrigScheduler();
     134             :   AliTrigScheduler(const char *name);
     135             :   virtual ~AliTrigScheduler();
     136             :   
     137             :   void                      AddScheduledEntry(AliTrigScheduledEntry *entry, const char *togroup="default");
     138             :   AliTrigScheduledGroup    *AddGroup(const char *groupname);
     139             :   AliTrigScheduledGroup    *AddGroup(AliTrigScheduledGroup *group);
     140             :   AliTrigScheduledSequence *AddSequence(const char *seqname, AliTrigScheduledSequence::ESortingType type=AliTrigScheduledSequence::kDefault, 
     141             :                                         Int_t *sequence = 0);
     142             :   void                      FireUp(Int_t time);
     143           0 :   AliTrigScheduledSequence *GetCurrentSequence() const {return fCurrentSequence;}
     144           0 :   Int_t                     GetNgroups() const {return fNgroups;}
     145           0 :   TObjArray                *GetScheduledGroups() const {return fGroups;}
     146             :   AliTrigScheduledGroup    *GetScheduledGroup(Int_t i) const;
     147             :   AliTrigScheduledGroup    *GetScheduledGroup(const char *name) const;
     148           0 :   void                      SetCurrentSequence(AliTrigScheduledSequence *seq) {fCurrentSequence = seq;}
     149             :   void                      SetGroupPriority(const char *groupname, Int_t priority);
     150             :      
     151          12 :   ClassDef(AliTrigScheduler,1)  // Trigger scheduler class
     152             : };
     153             : #endif

Generated by: LCOV version 1.11