Go to the documentation of this file.00001 #ifndef L1GlobalTrigger_L1TcsWord_h
00002 #define L1GlobalTrigger_L1TcsWord_h
00003
00020
00021 #include <boost/cstdint.hpp>
00022 #include <iosfwd>
00023
00024
00025 #include "DataFormats/L1GlobalTrigger/interface/L1GlobalTriggerReadoutSetupFwd.h"
00026 #include "DataFormats/L1GlobalTrigger/interface/L1GlobalTriggerReadoutSetup.h"
00027
00028
00029
00030
00031 class L1TcsWord
00032 {
00033
00034 public:
00035
00037 L1TcsWord();
00038
00040 L1TcsWord(
00041 boost::uint16_t boardIdValue,
00042 boost::uint16_t bxNrValue,
00043 boost::uint16_t daqNrValue,
00044 boost::uint16_t triggerTypeValue,
00045 boost::uint16_t statusValue,
00046 boost::uint16_t luminositySegmentNrValue,
00047 boost::uint32_t partRunNrValue,
00048 boost::uint32_t assignedPartitionsValue,
00049 boost::uint32_t partTrigNrValue,
00050 boost::uint32_t eventNrValue,
00051 boost::uint64_t orbitNrValue );
00052
00053
00055 virtual ~L1TcsWord();
00056
00058 bool operator==(const L1TcsWord&) const;
00059
00061 bool operator!=(const L1TcsWord&) const;
00062
00063 public:
00064
00066
00068 inline const boost::uint16_t boardId() const
00069 {
00070 return m_boardId;
00071 }
00072
00074 void setBoardId(const boost::uint16_t boardIdValue)
00075 {
00076 m_boardId = boardIdValue;
00077 }
00078
00080 void setBoardId(const boost::uint64_t& word64);
00081
00084 void setBoardIdWord64(boost::uint64_t& word64, int iWord);
00085
00086
00087
00089 inline const boost::uint16_t bxNr() const
00090 {
00091 return m_bxNr;
00092 }
00093
00094 void setBxNr(const boost::uint16_t bxNrValue)
00095 {
00096 m_bxNr = bxNrValue;
00097 }
00098
00100 void setBxNr(const boost::uint64_t& word64);
00101
00104 void setBxNrWord64(boost::uint64_t& word64, int iWord);
00105
00106
00107
00109 inline const boost::uint16_t daqNr() const
00110 {
00111 return m_daqNr;
00112 }
00113
00114 void setDaqNr(const boost::uint16_t daqNrValue)
00115 {
00116 m_daqNr = daqNrValue;
00117 }
00118
00120 void setDaqNr(const boost::uint64_t& word64);
00121
00124 void setDaqNrWord64(boost::uint64_t& word64, int iWord);
00125
00126
00127
00129 inline const boost::uint16_t triggerType() const
00130 {
00131 return m_triggerType;
00132 }
00133
00134 void setTriggerType(const boost::uint16_t triggerTypeValue)
00135 {
00136 m_triggerType = triggerTypeValue;
00137 }
00138
00140 void setTriggerType(const boost::uint64_t& word64);
00141
00144 void setTriggerTypeWord64(boost::uint64_t& word64, int iWord);
00145
00146
00147
00149 inline const boost::uint16_t status() const
00150 {
00151 return m_status;
00152 }
00153
00154 void setStatus(const boost::uint16_t statusValue)
00155 {
00156 m_status = statusValue;
00157 }
00158
00160 void setStatus(const boost::uint64_t& word64);
00161
00164 void setStatusWord64(boost::uint64_t& word64, int iWord);
00165
00166
00168 inline const boost::uint16_t luminositySegmentNr() const
00169 {
00170 return m_luminositySegmentNr;
00171 }
00172
00173 void setLuminositySegmentNr(const boost::uint16_t luminositySegmentNrValue)
00174 {
00175 m_luminositySegmentNr = luminositySegmentNrValue;
00176 }
00177
00179 void setLuminositySegmentNr(const boost::uint64_t& word64);
00180
00183 void setLuminositySegmentNrWord64(boost::uint64_t& word64, int iWord);
00184
00185
00186
00188 inline const boost::uint32_t partRunNr() const
00189 {
00190 return m_partRunNr;
00191 }
00192
00193 void setPartRunNr(const boost::uint32_t partRunNrValue)
00194 {
00195 m_partRunNr = partRunNrValue;
00196 }
00197
00199 void setPartRunNr(const boost::uint64_t& word64);
00200
00203 void setPartRunNrWord64(boost::uint64_t& word64, int iWord);
00204
00205
00206
00208 inline const boost::uint32_t assignedPartitions() const
00209 {
00210 return m_assignedPartitions;
00211 }
00212
00213 void setAssignedPartitions(const boost::uint32_t assignedPartitionsValue)
00214 {
00215 m_assignedPartitions = assignedPartitionsValue;
00216 }
00217
00219 void setAssignedPartitions(const boost::uint64_t& word64);
00220
00223 void setAssignedPartitionsWord64(boost::uint64_t& word64, int iWord);
00224
00225
00226
00228 inline const boost::uint32_t partTrigNr() const
00229 {
00230 return m_partTrigNr;
00231 }
00232
00233 void setPartTrigNr(const boost::uint32_t partTrigNrValue)
00234 {
00235 m_partTrigNr = partTrigNrValue;
00236 }
00237
00239 void setPartTrigNr(const boost::uint64_t& word64);
00240
00243 void setPartTrigNrWord64(boost::uint64_t& word64, int iWord);
00244
00245
00246
00248 inline const boost::uint32_t eventNr() const
00249 {
00250 return m_eventNr;
00251 }
00252
00253 void setEventNr(const boost::uint32_t eventNrValue)
00254 {
00255 m_eventNr = eventNrValue;
00256 }
00257
00259 void setEventNr(const boost::uint64_t& word64);
00260
00263 void setEventNrWord64(boost::uint64_t& word64, int iWord);
00264
00265
00266
00268 inline const boost::uint64_t orbitNr() const
00269 {
00270 return m_orbitNr;
00271 }
00272
00273 void setOrbitNr(const boost::uint64_t orbitNrValue)
00274 {
00275 m_orbitNr = orbitNrValue;
00276 }
00277
00279 void setOrbitNrFrom(const boost::uint64_t& word64);
00280
00283 void setOrbitNrWord64(boost::uint64_t& word64, int iWord);
00284
00285
00287 inline const unsigned int getSize() const
00288 {
00289 int unitLengthBits = L1GlobalTriggerReadoutSetup::UnitLength;
00290
00291 return BlockSize*unitLengthBits;
00292 }
00293
00294 public:
00295
00297 void reset();
00298
00300 void print(std::ostream& myCout) const;
00301
00304 void unpack(const unsigned char* tcsPtr);
00305
00306
00307
00308 private:
00309
00310
00311
00312
00313 static const int BlockSize;
00314
00315
00316
00317
00318 static const int BoardIdWord;
00319 static const int BxNrWord;
00320 static const int DaqNrWord;
00321 static const int TriggerTypeWord;
00322 static const int StatusWord;
00323 static const int LuminositySegmentNrWord;
00324
00325
00326 static const boost::uint64_t BoardIdMask;
00327 static const boost::uint64_t BxNrMask;
00328 static const boost::uint64_t DaqNrMask;
00329 static const boost::uint64_t TriggerTypeMask;
00330 static const boost::uint64_t StatusMask;
00331 static const boost::uint64_t LuminositySegmentNrMask;
00332
00333
00334 static const int BoardIdShift;
00335 static const int BxNrShift;
00336 static const int DaqNrShift;
00337 static const int TriggerTypeShift;
00338 static const int StatusShift;
00339 static const int LuminositySegmentNrShift;
00340
00341
00342
00343 static const int PartRunNrWord;
00344 static const int AssignedPartitionsWord;
00345
00346 static const boost::uint64_t PartRunNrMask;
00347 static const boost::uint64_t AssignedPartitionsMask;
00348
00349 static const int PartRunNrShift;
00350 static const int AssignedPartitionsShift;
00351
00352
00353
00354 static const int PartTrigNrWord;
00355 static const int EventNrWord;
00356
00357 static const boost::uint64_t PartTrigNrMask;
00358 static const boost::uint64_t EventNrMask;
00359
00360 static const int PartTrigNrShift;
00361 static const int EventNrShift;
00362
00363
00364
00365 static const int OrbitNrWord;
00366
00367 static const boost::uint64_t OrbitNrMask;
00368
00369 static const int OrbitNrShift;
00370
00371
00372
00373
00374
00375
00376
00377
00378 private:
00379
00381 boost::uint16_t m_boardId;
00382
00384 boost::uint16_t m_bxNr;
00385
00387 boost::uint16_t m_daqNr;
00388
00390 boost::uint16_t m_triggerType;
00391
00393 boost::uint16_t m_status;
00394
00396 boost::uint16_t m_luminositySegmentNr;
00397
00398
00399
00401 boost::uint32_t m_partRunNr;
00402
00406 boost::uint32_t m_assignedPartitions;
00407
00408
00409
00412 boost::uint32_t m_partTrigNr;
00413
00415 boost::uint32_t m_eventNr;
00416
00417
00418
00420 boost::uint64_t m_orbitNr;
00421
00422
00423
00424
00425 };
00426
00427 #endif