L1GlobalTriggerRecord

Macros

Line Code
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132
#ifndef L1GlobalTrigger_L1GlobalTriggerRecord_h
#define L1GlobalTrigger_L1GlobalTriggerRecord_h

/**
 * \class L1GlobalTriggerRecord
 * 
 * 
 * Description: stripped-down record for L1 Global Trigger.  
 *
 * Implementation:
 *    <TODO: enter implementation details>
 *   
 * \author: Vasile Mihai Ghete   - HEPHY Vienna
 * 
 *
 */

// system include files
#include <vector>
#include <iosfwd>

// user include files
#include "DataFormats/L1GlobalTrigger/interface/L1GlobalTriggerReadoutSetupFwd.h"

// forward declarations
namespace edm {
  template <typename T>
  class Handle;
}

// class interface

class L1GlobalTriggerRecord {
public:
  /// constructors
  L1GlobalTriggerRecord();

  L1GlobalTriggerRecord(const unsigned int numberPhysTriggers, const unsigned int numberTechnicalTriggers);

  /// copy constructor
  L1GlobalTriggerRecord(const L1GlobalTriggerRecord&);

  /// destructor
  virtual ~L1GlobalTriggerRecord();

  /// assignment operator
  L1GlobalTriggerRecord& operator=(const L1GlobalTriggerRecord&);

  /// equal operator
  bool operator==(const L1GlobalTriggerRecord&) const;

  /// unequal operator
  bool operator!=(const L1GlobalTriggerRecord&) const;

public:
  /// get Global Trigger decision, decision word and technical trigger word
  /// for bunch cross with L1Accept (BxInEvent = 0)
  inline const bool decision() const { return m_gtGlobalDecision; }

  inline const DecisionWord decisionWord() const { return m_gtDecisionWord; }

  inline const TechnicalTriggerWord technicalTriggerWord() const { return m_gtTechnicalTriggerWord; }

  inline const DecisionWord decisionWordBeforeMask() const { return m_gtDecisionWordBeforeMask; }

  inline const TechnicalTriggerWord technicalTriggerWordBeforeMask() const {
    return m_gtTechnicalTriggerWordBeforeMask;
  }

  /// set global decision, decision word and technical trigger word
  /// for bunch cross with L1Accept (BxInEvent = 0)
  void setDecision(const bool& dValue);
  void setDecisionWord(const DecisionWord& dWordValue);
  void setTechnicalTriggerWord(const TechnicalTriggerWord& ttWordValue);

  void setDecisionWordBeforeMask(const DecisionWord& dWordValue);
  void setTechnicalTriggerWordBeforeMask(const TechnicalTriggerWord& ttWordValue);

  /// get/set index of the set of prescale factors

  inline const unsigned int gtPrescaleFactorIndexTech() const { return m_gtPrescaleFactorIndexTech; }

  void setGtPrescaleFactorIndexTech(const unsigned int& gtPrescaleFactorIndexTechValue) {
    m_gtPrescaleFactorIndexTech = gtPrescaleFactorIndexTechValue;
  }

  inline const unsigned int gtPrescaleFactorIndexAlgo() const { return m_gtPrescaleFactorIndexAlgo; }

  void setGtPrescaleFactorIndexAlgo(const unsigned int& gtPrescaleFactorIndexAlgoValue) {
    m_gtPrescaleFactorIndexAlgo = gtPrescaleFactorIndexAlgoValue;
  }

  /// print global decision and algorithm decision word
  void printGtDecision(std::ostream& myCout) const;

  /// print technical triggers
  void printTechnicalTrigger(std::ostream& myCout) const;

  // other methods

  /// clear the record
  void reset();

  /// pretty print the content of a L1GlobalTriggerRecord
  void print(std::ostream& myCout) const;

  /// output stream operator
  friend std::ostream& operator<<(std::ostream&, const L1GlobalTriggerRecord&);

private:
  /// global decision for L1A bunch cross
  bool m_gtGlobalDecision;

  /// algorithm decision word for L1A bunch cross
  DecisionWord m_gtDecisionWord;

  /// technical trigger word for L1A bunch cross
  TechnicalTriggerWord m_gtTechnicalTriggerWord;

  /// algorithm decision word for L1A bunch cross before applying the masks
  DecisionWord m_gtDecisionWordBeforeMask;

  /// technical trigger word for L1A bunch cross before applying the masks
  TechnicalTriggerWord m_gtTechnicalTriggerWordBeforeMask;

  /// index of the set of prescale factors in the DB/EventSetup
  /// for algorithm triggers and technical triggers
  unsigned int m_gtPrescaleFactorIndexTech;
  unsigned int m_gtPrescaleFactorIndexAlgo;
};

#endif