SiStripEventSummary

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 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260

#ifndef DataFormats_SiStripEventSummary_SiStripEventSummary_H
#define DataFormats_SiStripEventSummary_SiStripEventSummary_H

#include "DataFormats/SiStripCommon/interface/SiStripConstants.h"
#include <sstream>
#include <vector>

class SiStripEventSummary;

/** Debug info for SiStripFedKey class. */
std::ostream& operator<<(std::ostream&, const SiStripEventSummary&);

/**
   @class SiStripFedKey
   @author R.Bainbridge
   
   @brief A container class for generic run and event-related info,
   information required by the commissioning analyses (such as
   hardware parameters), event quality flags, error conditions, etc...
*/
class SiStripEventSummary {
public:
  // ---------- Constructors, destructors ----------

  /** Default constructor. */
  SiStripEventSummary();

  /** Default destructor. */
  ~SiStripEventSummary() { ; }

  // ---------- General information ----------

  /** Identifies if commissioning info is valid or not (when using
      global trigger to understand if HW config is being changed). */
  inline bool valid() const;

  /** Identifier of trigger FED (null value means not found). */
  inline uint16_t triggerFed() const;

  /** Flag to identify if commissioning info already set. */
  inline bool isSet() const;

  // ---------- Run and event-related info ----------

  /** Returns run type. */
  inline const sistrip::RunType& runType() const;

  /** Returns event number. */
  inline const uint32_t& event() const;

  /** Returns bunch crossing number. */
  inline const uint32_t& bx() const;

  // ---------- Hardware-related info ----------

  /** Returns FED readout mode. */
  inline const sistrip::FedReadoutMode& fedReadoutMode() const;

  /** Returns APV readout mode. */
  inline const sistrip::ApvReadoutMode& apvReadoutMode() const;

  /** Returns APVE golden pipeline address. */
  inline const uint16_t& apveAddress() const;

  /** Returns number of APVs that are synchronized. */
  inline const uint32_t& nApvsInSync() const;

  /** Returns number of APVs that are not synchronized. */
  inline const uint32_t& nApvsOutOfSync() const;

  /** Returns number of APVs with error flags set. */
  inline const uint32_t& nApvsErrors() const;

  // ---------- Commissioning info ----------

  /** Indicates whether all params are null or not. */
  inline bool nullParams() const;

  /** Returns values of all params. */
  inline const std::vector<uint32_t>& params() const;

  /** Returns bin number for very fast connection. */
  inline const uint32_t& binNumber() const;

  /** Returns PLL coarse delay setting. */
  inline const uint32_t& pllCoarse() const;

  /** Returns PLL fine delay setting. */
  inline const uint32_t& pllFine() const;

  /** Returns APV latency setting. */
  inline const uint32_t& latency() const;

  /** Returns APV calibration channels (CDRV). */
  inline const uint32_t& calChan() const;

  /** Returns APV calibration timing (CSEL). */
  inline const uint32_t& calSel() const;

  /** Returns APV ISHA. */
  inline const uint32_t& isha() const;

  /** Returns APV VFS. */
  inline const uint32_t& vfs() const;

  /** Returns TTCrx delay setting. */
  inline const uint32_t& ttcrx() const;

  /** Returns VPSP setting. */
  inline const uint32_t& vpsp() const;

  /** Returns CCU channel of module being tuned for VPSP. */
  inline const uint32_t& vpspCcuChan() const;

  /** Returns LLD gain setting. */
  inline const uint32_t& lldGain() const;

  /** Returns LLD bias setting. */
  inline const uint32_t& lldBias() const;

  /** Returns device id. */
  inline const uint32_t& deviceId() const;

  /** Returns process id. */
  inline const uint32_t& processId() const;

  /** Returns process IP address. */
  inline const uint32_t& processIp() const;

  /** Returns DCU id. */
  inline const uint32_t& dcuId() const;

  /** Returns the layer mask for fine delay runs */
  inline const uint32_t& layerScanned() const;

  // ---------- Setter methods ----------

  /** Sets commissioning-related information. */
  void commissioningInfo(const uint32_t* const buffer, const uint32_t& event);

  /** Sets DAQ register information. */
  void commissioningInfo(const uint32_t& daq_register1, const uint32_t& daq_register2);

  /** Sets trigger FED number. */
  inline void triggerFed(const int16_t&);

  /** Sets FED readout mode. */
  void fedReadoutMode(const uint16_t&);

  /** Sets event number. */
  inline void event(const uint32_t&);

  /** Sets bunch crossing number. */
  inline void bx(const uint32_t&);

  inline void apveAddress(uint16_t& addr);
  inline void nApvsInSync(uint32_t& napvs_in_sync);
  inline void nApvsOutOfSync(uint32_t& napvs_out_of_sync);
  inline void nApvsErrors(uint32_t& napvs_with_errors);

private:
  // ---------- General info ----------

  /** Flag to signify if trigger FED information is valid. */
  bool valid_;

  /** */
  uint16_t triggerFed_;

  // ---------- Run- and event-related info ----------

  /** Run type. */
  sistrip::RunType runType_;

  /** Event number. */
  uint32_t event_;

  /** Bunch crossing number. */
  uint32_t bx_;

  /** Spill number. */
  uint32_t spillNumber_;

  /** Number of DataSenders (c.f. ReadoutUnits). */
  uint32_t nDataSenders_;

  // ---------- Hardware-related info ----------

  /** FED readout mode. */
  sistrip::FedReadoutMode fedReadoutMode_;

  /** APV readout mode. */
  sistrip::ApvReadoutMode apvReadoutMode_;

  /** APVE golden pipeline address. */
  uint16_t apveAddress_;

  /** Number of APVs that are synchronized. */
  uint32_t nApvsInSync_;

  /** Number of APVs that are not synchronized. */
  uint32_t nApvsOutOfSync_;

  /** Number of APVs with error flags set. */
  uint32_t nApvsErrors_;

  /** Parameters related to commissioning analysis. */
  std::vector<uint32_t> params_;
};

// ---------- inline methods ----------

bool SiStripEventSummary::valid() const { return valid_; }
uint16_t SiStripEventSummary::triggerFed() const { return triggerFed_; }
bool SiStripEventSummary::isSet() const { return (/* triggerFed_ > 0 && */ runType_ != sistrip::UNDEFINED_RUN_TYPE); }

const sistrip::RunType& SiStripEventSummary::runType() const { return runType_; }
const uint32_t& SiStripEventSummary::event() const { return event_; }
const uint32_t& SiStripEventSummary::bx() const { return bx_; }

const sistrip::FedReadoutMode& SiStripEventSummary::fedReadoutMode() const { return fedReadoutMode_; }
const sistrip::ApvReadoutMode& SiStripEventSummary::apvReadoutMode() const { return apvReadoutMode_; }

const uint16_t& SiStripEventSummary::apveAddress() const { return apveAddress_; }
const uint32_t& SiStripEventSummary::nApvsInSync() const { return nApvsInSync_; }
const uint32_t& SiStripEventSummary::nApvsOutOfSync() const { return nApvsOutOfSync_; }
const uint32_t& SiStripEventSummary::nApvsErrors() const { return nApvsErrors_; }

bool SiStripEventSummary::nullParams() const { return (!params_[0] && !params_[1] && !params_[2] && !params_[3]); }
const std::vector<uint32_t>& SiStripEventSummary::params() const { return params_; }
const uint32_t& SiStripEventSummary::binNumber() const { return params_[0]; }
const uint32_t& SiStripEventSummary::pllCoarse() const { return params_[0]; }
const uint32_t& SiStripEventSummary::pllFine() const { return params_[1]; }
const uint32_t& SiStripEventSummary::latency() const { return params_[0]; }
const uint32_t& SiStripEventSummary::calChan() const { return params_[1]; }
const uint32_t& SiStripEventSummary::calSel() const { return params_[2]; }
const uint32_t& SiStripEventSummary::isha() const { return params_[3]; }
const uint32_t& SiStripEventSummary::vfs() const { return params_[4]; }
const uint32_t& SiStripEventSummary::ttcrx() const { return params_[2]; }
const uint32_t& SiStripEventSummary::vpsp() const { return params_[0]; }
const uint32_t& SiStripEventSummary::vpspCcuChan() const { return params_[1]; }
const uint32_t& SiStripEventSummary::lldGain() const { return params_[0]; }
const uint32_t& SiStripEventSummary::lldBias() const { return params_[1]; }
const uint32_t& SiStripEventSummary::deviceId() const { return params_[0]; }
const uint32_t& SiStripEventSummary::processId() const { return params_[1]; }
const uint32_t& SiStripEventSummary::processIp() const { return params_[2]; }
const uint32_t& SiStripEventSummary::dcuId() const { return params_[3]; }
const uint32_t& SiStripEventSummary::layerScanned() const { return params_[3]; }

void SiStripEventSummary::triggerFed(const int16_t& fed) { fed < 0 ? triggerFed_ = 0 : triggerFed_ = fed; }
void SiStripEventSummary::event(const uint32_t& event) { event_ = event; }
void SiStripEventSummary::bx(const uint32_t& bx) { bx_ = bx; }

void SiStripEventSummary::apveAddress(uint16_t& addr) { apveAddress_ = addr; }
void SiStripEventSummary::nApvsInSync(uint32_t& napvs_in_sync) { nApvsInSync_ = napvs_in_sync; }
void SiStripEventSummary::nApvsOutOfSync(uint32_t& napvs_out_of_sync) { nApvsOutOfSync_ = napvs_out_of_sync; }
void SiStripEventSummary::nApvsErrors(uint32_t& napvs_with_errors) { nApvsErrors_ = napvs_with_errors; }

#endif  // DataFormats_SiStripEventSummary_SiStripEventSummary_H