Bug corrected.
[u/mrichter/AliRoot.git] / STEER / AliESDHLTDecision.h
1 //-*- Mode: C++ -*-
2 // $Id$
3 #ifndef ALIESDHLTDECISION_H
4 #define ALIESDHLTDECISION_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   AliESDHLTDecision.h
10 /// @author matthias.richter@ift.uib.no
11 /// @date   23 Nov 2009
12 /// @brief  Container for HLT decision within the ESD
13
14 #include "TNamed.h"
15 #include "TArrayI.h"
16 #include "TArrayL64.h"
17 #include "TClonesArray.h"
18
19 class AliESDHLTDecision : public TNamed
20 {
21  public:
22   /// constructor
23   AliESDHLTDecision();
24   /// constructor
25   AliESDHLTDecision(bool result, const char* description);
26   /// copy constructor
27   AliESDHLTDecision(const AliESDHLTDecision& src);
28   /// assignment operator
29   AliESDHLTDecision& operator=(const AliESDHLTDecision& src);
30   /// destructor
31   ~AliESDHLTDecision();
32
33   /// set trigger result
34   void SetTriggerResult(bool result) {SetBit(kTriggerResult, result);}
35
36   /// set the active HLT trigger items
37   int SetTriggerItems(TArrayI items) {fTriggerItems=items; return 0;}
38
39   /// set the event counters for HLT trigger items
40   int SetCounters(TArrayL64 counters) {fCounters=counters; return 0;}
41
42   /// get the description og the global trigger decision
43   const char* GetDescription() const;
44
45   /// trigger result
46   bool Result() const { return TestBit(kTriggerResult) == 1; }
47
48   /// Inherited from TObject. Return the result of the trigger.
49   /// @return   "0" or "1" (note: its a string)
50   virtual Option_t *GetOption() const {return Result()?"1":"0";}
51
52   /// check whether the HLT global trigger has fired, or
53   /// for a specific HLT trigger class if specified
54   Bool_t    IsTriggerFired(const char* name=NULL) const;
55
56   /// Inherited from TObject. Print Information.
57   virtual void Print(Option_t* option = "") const;
58
59   /// Inherited from TObject. Copy this to the specified object.
60   virtual void Copy(TObject &object) const;
61   
62   /// Inherited from TObject. Create a new clone.
63   virtual TObject *Clone(const char *newname="") const;
64
65   enum {
66     /// trigger result true/false
67     kTriggerResult =       BIT(15),
68     /// indicate trigger decision object
69     kTriggerDecision =     BIT(16)
70   };
71
72   static const char* Name() {return fgkName;}
73
74  protected:
75  private:
76   /// short info about the input objects stored in TNamed
77   /// trigger name, description (title), 
78   /// type: TObject bit 15 set for trigger decisions
79   /// decision: TObject bit 16 indicates true/false
80   TClonesArray fInputObjectInfo; // TNamed objects
81
82   /// array of fired trigger item ids from the HLT trigger menu
83   TArrayI fTriggerItems; // list of fired trigger items
84
85   /// trigger counters for HLT trigger items
86   TArrayL64 fCounters; // event counters for trigger items
87
88   /// object name for the HLT decision
89   static const char* fgkName; // the name of the HLT decision
90
91   ClassDef(AliESDHLTDecision, 1)
92 };
93 #endif //ALIESDHLTDECISION_H