ROOT logo
//-*- Mode: C++ -*-
// $Id$
#ifndef ALIESDHLTDECISION_H
#define ALIESDHLTDECISION_H
/* This file is property of and copyright by the ALICE HLT Project        *
 * ALICE Experiment at CERN, All rights reserved.                         *
 * See cxx source for full Copyright notice                               */

/// @file   AliESDHLTDecision.h
/// @author matthias.richter@ift.uib.no
/// @date   23 Nov 2009
/// @brief  Container for HLT decision within the ESD

#include "TNamed.h"
#include "TArrayI.h"
#include "TArrayL64.h"
#include "TClonesArray.h"

class AliESDHLTDecision : public TNamed
{
 public:
  /// constructor
  AliESDHLTDecision();
  /// constructor
  AliESDHLTDecision(bool result, const char* description);
  /// copy constructor
  AliESDHLTDecision(const AliESDHLTDecision& src);
  /// assignment operator
  AliESDHLTDecision& operator=(const AliESDHLTDecision& src);
  /// destructor
  ~AliESDHLTDecision();

  /// set trigger result
  void SetTriggerResult(bool result) {SetBit(kTriggerResult, result);}

  /// set the active HLT trigger items
  int SetTriggerItems(TArrayI items) {fTriggerItems=items; return 0;}

  /// set the event counters for HLT trigger items
  int SetCounters(TArrayL64 counters) {fCounters=counters; return 0;}

  /// get the description og the global trigger decision
  const char* GetDescription() const;

  /// trigger result
  bool Result() const { return TestBit(kTriggerResult) == 1; }

  /// Inherited from TObject. Return the result of the trigger.
  /// @return   "0" or "1" (note: its a string)
  virtual Option_t *GetOption() const {return Result()?"1":"0";}

  /// check whether the HLT global trigger has fired, or
  /// for a specific HLT trigger class if specified
  Bool_t    IsTriggerFired(const char* name=NULL) const;

  /// Inherited from TObject. Print Information.
  virtual void Print(Option_t* option = "") const;

  /// Inherited from TObject. Copy this to the specified object.
  virtual void Copy(TObject &object) const;
  
  /// Inherited from TObject. Create a new clone.
  virtual TObject *Clone(const char *newname="") const;

  enum {
    /// trigger result true/false
    kTriggerResult =       BIT(15),
    /// indicate trigger decision object
    kTriggerDecision =     BIT(16)
  };

  static const char* Name() {return fgkName;}

 protected:
 private:
  /// short info about the input objects stored in TNamed
  /// trigger name, description (title), 
  /// type: TObject bit 15 set for trigger decisions
  /// decision: TObject bit 16 indicates true/false
  TClonesArray fInputObjectInfo; // TNamed objects

  /// array of fired trigger item ids from the HLT trigger menu
  TArrayI fTriggerItems; // list of fired trigger items

  /// trigger counters for HLT trigger items
  TArrayL64 fCounters; // event counters for trigger items

  /// object name for the HLT decision
  static const char* fgkName; // the name of the HLT decision

  ClassDef(AliESDHLTDecision, 1)
};
#endif //ALIESDHLTDECISION_H
 AliESDHLTDecision.h:1
 AliESDHLTDecision.h:2
 AliESDHLTDecision.h:3
 AliESDHLTDecision.h:4
 AliESDHLTDecision.h:5
 AliESDHLTDecision.h:6
 AliESDHLTDecision.h:7
 AliESDHLTDecision.h:8
 AliESDHLTDecision.h:9
 AliESDHLTDecision.h:10
 AliESDHLTDecision.h:11
 AliESDHLTDecision.h:12
 AliESDHLTDecision.h:13
 AliESDHLTDecision.h:14
 AliESDHLTDecision.h:15
 AliESDHLTDecision.h:16
 AliESDHLTDecision.h:17
 AliESDHLTDecision.h:18
 AliESDHLTDecision.h:19
 AliESDHLTDecision.h:20
 AliESDHLTDecision.h:21
 AliESDHLTDecision.h:22
 AliESDHLTDecision.h:23
 AliESDHLTDecision.h:24
 AliESDHLTDecision.h:25
 AliESDHLTDecision.h:26
 AliESDHLTDecision.h:27
 AliESDHLTDecision.h:28
 AliESDHLTDecision.h:29
 AliESDHLTDecision.h:30
 AliESDHLTDecision.h:31
 AliESDHLTDecision.h:32
 AliESDHLTDecision.h:33
 AliESDHLTDecision.h:34
 AliESDHLTDecision.h:35
 AliESDHLTDecision.h:36
 AliESDHLTDecision.h:37
 AliESDHLTDecision.h:38
 AliESDHLTDecision.h:39
 AliESDHLTDecision.h:40
 AliESDHLTDecision.h:41
 AliESDHLTDecision.h:42
 AliESDHLTDecision.h:43
 AliESDHLTDecision.h:44
 AliESDHLTDecision.h:45
 AliESDHLTDecision.h:46
 AliESDHLTDecision.h:47
 AliESDHLTDecision.h:48
 AliESDHLTDecision.h:49
 AliESDHLTDecision.h:50
 AliESDHLTDecision.h:51
 AliESDHLTDecision.h:52
 AliESDHLTDecision.h:53
 AliESDHLTDecision.h:54
 AliESDHLTDecision.h:55
 AliESDHLTDecision.h:56
 AliESDHLTDecision.h:57
 AliESDHLTDecision.h:58
 AliESDHLTDecision.h:59
 AliESDHLTDecision.h:60
 AliESDHLTDecision.h:61
 AliESDHLTDecision.h:62
 AliESDHLTDecision.h:63
 AliESDHLTDecision.h:64
 AliESDHLTDecision.h:65
 AliESDHLTDecision.h:66
 AliESDHLTDecision.h:67
 AliESDHLTDecision.h:68
 AliESDHLTDecision.h:69
 AliESDHLTDecision.h:70
 AliESDHLTDecision.h:71
 AliESDHLTDecision.h:72
 AliESDHLTDecision.h:73
 AliESDHLTDecision.h:74
 AliESDHLTDecision.h:75
 AliESDHLTDecision.h:76
 AliESDHLTDecision.h:77
 AliESDHLTDecision.h:78
 AliESDHLTDecision.h:79
 AliESDHLTDecision.h:80
 AliESDHLTDecision.h:81
 AliESDHLTDecision.h:82
 AliESDHLTDecision.h:83
 AliESDHLTDecision.h:84
 AliESDHLTDecision.h:85
 AliESDHLTDecision.h:86
 AliESDHLTDecision.h:87
 AliESDHLTDecision.h:88
 AliESDHLTDecision.h:89
 AliESDHLTDecision.h:90
 AliESDHLTDecision.h:91
 AliESDHLTDecision.h:92
 AliESDHLTDecision.h:93