]> git.uio.no Git - u/mrichter/AliRoot.git/blob - HLT/BASE/AliHLTGlobalTriggerDecision.h
changes for the GPU code
[u/mrichter/AliRoot.git] / HLT / BASE / AliHLTGlobalTriggerDecision.h
1 //-*- Mode: C++ -*-
2 // $Id$
3 #ifndef ALIHLTGLOBALTRIGGERDECISION_H
4 #define ALIHLTGLOBALTRIGGERDECISION_H
5 /* This file is property of and copyright by the ALICE HLT Project        *
6  * ALICE Experiment at CERN, All rights reserved.                         *
7  * See cxx source for full Copyright notice                               */
8
9 /// @file   AliHLTGlobalTriggerDecision.h
10 /// @author Artur Szostak <artursz@iafrica.com>
11 /// @date   26 Nov 2008
12 /// @brief  Declaration of the AliHLTGlobalTriggerDecision class storing the global HLT decision.
13
14 #include "AliHLTTriggerDecision.h"
15 #include "TArrayL64.h"
16 #include "TObjArray.h"
17
18 class AliHLTGlobalTriggerDecision : public AliHLTTriggerDecision
19 {
20  public:
21   
22   /**
23    * Default constructor.
24    */
25   AliHLTGlobalTriggerDecision();
26   
27   /**
28    * Constructor specifying multiple information fields.
29    * \param result  The result of the global trigger decision.
30    * \param triggerDomain  The trigger domain for the global trigger decision.
31    * \param description  The description of (reason for) the global trigger decision.
32    */
33   AliHLTGlobalTriggerDecision(
34       bool result, const AliHLTTriggerDomain& triggerDomain,
35       const char* description = ""
36     );
37   
38   /**
39    * Default destructor.
40    */
41   virtual ~AliHLTGlobalTriggerDecision();
42
43   /**
44    * Copy constructor
45    */
46   AliHLTGlobalTriggerDecision(const AliHLTGlobalTriggerDecision& src);  
47
48   /**
49    * Assignment operator
50    */
51   AliHLTGlobalTriggerDecision& operator=(const AliHLTGlobalTriggerDecision& src);  
52
53   /**
54    * Inherited from TObject, this prints the contents of the trigger decision.
55    * \param option  Can be "short" which will print the short format or "counters"
56    *    which will print only the counters or "compact" which will print only the
57    *    global information but not the lists of input objects.
58    */
59   virtual void Print(Option_t* option = "") const;
60
61   /**
62    * Inherited from TObject. Copy this to the specified object.
63    */
64   virtual void Copy(TObject &object) const;
65   
66   /**
67    * Inherited from TObject. Create a new clone.
68    */
69   virtual TObject *Clone(const char *newname="") const;
70
71   /**
72    * Returns the number of trigger inputs that contributed to this global trigger decision.
73    */
74   Int_t NumberOfTriggerInputs() const { return fContributingTriggers.GetEntriesFast(); }
75   
76   /**
77    * Returns the i'th trigger input object in fContributingTriggers.
78    */
79   const AliHLTTriggerDecision* TriggerInput(Int_t i) const
80   {
81     return static_cast<const AliHLTTriggerDecision*>( fContributingTriggers[i] );
82   }
83   
84   /**
85    * Returns the list of trigger inputs used when making the global HLT trigger decision.
86    */
87   const TClonesArray& TriggerInputs() const { return fContributingTriggers; }
88   
89   /**
90    * Adds a trigger input to the list of triggers that were considered when making
91    * this global trigger decision.
92    * \param decision  The trigger decision object to add.
93    */
94   void AddTriggerInput(const AliHLTTriggerDecision& decision)
95   {
96     new (fContributingTriggers[fContributingTriggers.GetEntriesFast()]) AliHLTTriggerDecision(decision);
97   }
98   
99   /**
100    * Returns the number of other input objects that contributed to this global trigger decision.
101    */
102   Int_t NumberOfInputObjects() const { return fInputObjects.GetEntriesFast(); }
103   
104   /**
105    * Returns the i'th input object in fInputObjects.
106    */
107   const TObject* InputObject(Int_t i) const { return fInputObjects[i]; }
108   
109   /**
110    * Returns the list of other input objects used when making the global HLT trigger decision.
111    */
112   const TObjArray& InputObjects() const { return fInputObjects; }
113   
114   /**
115    * Adds a input object to the list of input objects that were considered when
116    * making this global trigger decision.
117    * \param object  The input object to add.
118    * \note  A copy of the object is made with TObject::Clone() and added.
119    */
120   void AddInputObject(const TObject* object)
121   {
122     fInputObjects.Add(object->Clone());
123   }
124   
125   /**
126    * Sets the counter array.
127    */
128   void SetCounters(const TArrayL64& counters) { fCounters = counters; }
129   
130   /**
131    * Returns the event trigger counters associated with the global trigger classes.
132    */
133   const TArrayL64& Counters() const { return fCounters; }
134   
135  private:
136   
137   TClonesArray fContributingTriggers;  /// The list of contributing trigger decisions from all AliHLTTrigger components that were considered.
138   TObjArray fInputObjects;  /// The list of other input objects.
139   TArrayL64 fCounters;  /// Event trigger counters. One counter for each trigger class in the global trigger.
140   
141   ClassDef(AliHLTGlobalTriggerDecision, 1) // Contains the HLT global trigger decision and information contributing to the decision.
142 };
143
144 #endif // ALIHLTGLOBALTRIGGERDECISION_H
145