CMS 3D CMS Logo

Public Member Functions | Private Attributes | Static Private Attributes

L1GtfeExtWord Class Reference

#include <L1GtfeExtWord.h>

Inheritance diagram for L1GtfeExtWord:
L1GtfeWord

List of all members.

Public Member Functions

const boost::uint16_t beamMode () const
const boost::uint16_t beamMomentum () const
const boost::uint16_t bst (int iB) const
 get/set BST block for index iB
const std::vector
< boost::uint16_t > & 
bst () const
 get the full BST block
const unsigned int bstLengthBytes () const
 get the size of the BST block
const boost::uint16_t bstMasterStatus () const
const boost::uint16_t bstSource () const
 get/set hex message indicating the source of BST message
const unsigned int getSize () const
 get the size of the GTFE block in GT EVM record (in multiple of 8 bits)
const boost::uint64_t gpsTime () const
 LHC-BOB-ES-0001 (EDMS 638899)
 L1GtfeExtWord (boost::uint16_t boardIdValue, boost::uint16_t recordLengthValue, boost::uint16_t recordLength1Value, boost::uint16_t bxNrValue, boost::uint32_t setupVersionValue, boost::uint16_t activeBoardsValue, boost::uint16_t altNrBxBoardValue, boost::uint32_t totalTriggerNrValue, std::vector< boost::uint16_t > bstValue, boost::uint16_t bstSourceValue)
 constructor from unpacked values, m_bst size taken from bstValue
 L1GtfeExtWord (int bstSizeBytes)
 all members set to zero, m_bst has bstSizeBytes zero elements
 L1GtfeExtWord ()
 constructors
const boost::uint32_t lhcFillNumber () const
bool operator!= (const L1GtfeExtWord &) const
 unequal operator
bool operator== (const L1GtfeExtWord &) const
 equal operator
const boost::uint16_t particleTypeBeam1 () const
const boost::uint16_t particleTypeBeam2 () const
virtual void print (std::ostream &myCout) const
 pretty print the content of a L1GtfeExtWord
void reset ()
 reset the content of a L1GtfeExtWord
void resize (int bstSizeBytes)
 resize the BST vector to get the right size of the block
void setBst (const boost::uint16_t bstVal, const int iB)
void setBst (const boost::uint64_t &word64, const int iB)
 set the BST block for index iB from a 64-bits word
void setBstSource (const boost::uint16_t bstSourceVal)
void setBstSource (const boost::uint64_t &word64)
 set the hex message indicating the source of BST message from a 64-bits word
void setBstSourceWord64 (boost::uint64_t &word64, const int iWord)
void setBstWord64 (boost::uint64_t &word64, int iB, const int iWord)
void setGpsTime (const boost::uint64_t)
const boost::uint32_t totalIntensityBeam1 () const
const boost::uint32_t totalIntensityBeam2 () const
const boost::uint32_t turnCountNumber () const
virtual void unpack (const unsigned char *gtfePtr)
virtual ~L1GtfeExtWord ()
 destructor

Private Attributes

std::vector< boost::uint16_t > m_bst
 BST message - each byte is an vector element.
boost::uint16_t m_bstSource
 hex message indicating the source of BST message (beam or simulated)

Static Private Attributes

static const int BeamModeFirstBlock = 26
static const int BeamModeLastBlock = 27
static const int BeamMomentumFirstBlock = 30
static const int BeamMomentumLastBlock = 31
static const int BstBitSize = 8
 size in bits for a BST block
static const boost::uint64_t BstBlockMask = 0xFFULL
static const int BstFirstWord = 2
 block description in the raw GT record
static const int BstMasterStatusFirstBlock = 17
static const int BstMasterStatusLastBlock = 17
static const boost::uint64_t BstSourceMask = 0xFFFF000000000000ULL
static const int BstSourceShift = 48
static const int GpsTimeFirstBlock = 0
 BST blocks: conversion to defined quantities (LHC-BOB-ES-0001)
static const int GpsTimeLastBlock = 7
static const int LhcFillNumberFirstBlock = 22
static const int LhcFillNumberLastBlock = 25
static const int ParticleTypeBeam1FirstBlock = 28
static const int ParticleTypeBeam1LastBlock = 28
static const int ParticleTypeBeam2FirstBlock = 29
static const int ParticleTypeBeam2LastBlock = 29
static const int TotalIntensityBeam1FirstBlock = 32
static const int TotalIntensityBeam1LastBlock = 35
static const int TotalIntensityBeam2FirstBlock = 36
static const int TotalIntensityBeam2LastBlock = 39
static const int TurnCountNumberFirstBlock = 18
static const int TurnCountNumberLastBlock = 21

Detailed Description

Description: L1 Global Trigger - extended GTFE block in the readout record.

Implementation: <TODO: enter implementation details>

Author:
: Vasile Mihai Ghete - HEPHY Vienna

$Date$ $Revision$

Description: L1 Global Trigger - GTFE words in the readout record.

Implementation: <TODO: enter implementation details>

Author:
: Vasile Mihai Ghete - HEPHY Vienna

$Date$ $Revision$

Definition at line 33 of file L1GtfeExtWord.h.


Constructor & Destructor Documentation

L1GtfeExtWord::L1GtfeExtWord ( )

constructors

Definition at line 36 of file L1GtfeExtWord.cc.

                             :
    L1GtfeWord() {

    // empty

}
L1GtfeExtWord::L1GtfeExtWord ( int  bstSizeBytes)

all members set to zero, m_bst has bstSizeBytes zero elements

Definition at line 44 of file L1GtfeExtWord.cc.

References m_bst.

                                             :
    L1GtfeWord() {

    m_bst.resize(bstSizeBytes);

}
L1GtfeExtWord::L1GtfeExtWord ( boost::uint16_t  boardIdValue,
boost::uint16_t  recordLengthValue,
boost::uint16_t  recordLength1Value,
boost::uint16_t  bxNrValue,
boost::uint32_t  setupVersionValue,
boost::uint16_t  activeBoardsValue,
boost::uint16_t  altNrBxBoardValue,
boost::uint32_t  totalTriggerNrValue,
std::vector< boost::uint16_t >  bstValue,
boost::uint16_t  bstSourceValue 
)

constructor from unpacked values, m_bst size taken from bstValue

Definition at line 53 of file L1GtfeExtWord.cc.

                                                                         :
    L1GtfeWord(
            boardIdValue, recordLength1Value, recordLengthValue, bxNrValue, setupVersionValue,
            activeBoardsValue, altNrBxBoardValue, totalTriggerNrValue), m_bst(bstValue),
            m_bstSource(bstSourceValue)

{

    // empty
}
L1GtfeExtWord::~L1GtfeExtWord ( ) [virtual]

destructor

Definition at line 70 of file L1GtfeExtWord.cc.

                              {

    // empty now

}

Member Function Documentation

const boost::uint16_t L1GtfeExtWord::beamMode ( ) const

Definition at line 253 of file L1GtfeExtWord.cc.

References BeamModeFirstBlock, BeamModeLastBlock, BstBitSize, and m_bst.

Referenced by L1TGT::analyze(), DQMProvInfo::makeGtInfo(), and ConditionDumperInEdm::produce().

{

    boost::uint16_t bm = 0;

    // return 0 if BST message too small
    int bstSize = m_bst.size();
    if (BeamModeLastBlock >= bstSize) {
        return bm;
    }

    for (int iB = BeamModeFirstBlock; iB <= BeamModeLastBlock; ++iB) {

        // keep capitalization for similarity with other functions
        const int scaledIB = iB - BeamModeFirstBlock;
        const int BstShift = BstBitSize*scaledIB;

        bm = bm | ( m_bst[iB] << BstShift );

    }

    return bm;
}
const boost::uint16_t L1GtfeExtWord::beamMomentum ( ) const

Definition at line 326 of file L1GtfeExtWord.cc.

References BeamMomentumFirstBlock, BeamMomentumLastBlock, BstBitSize, and m_bst.

Referenced by L1TGT::analyze(), DQMProvInfo::makeGtInfo(), and ConditionDumperInEdm::produce().

{

    boost::uint16_t bm = 0;

    // return 0 if BST message too small
    int bstSize = m_bst.size();
    if (BeamMomentumLastBlock >= bstSize) {
        return bm;
    }

    for (int iB = BeamMomentumFirstBlock; iB <= BeamMomentumLastBlock; ++iB) {

        // keep capitalization for similarity with other functions
        const int scaledIB = iB - BeamMomentumFirstBlock;
        const int BstShift = BstBitSize*scaledIB;

        bm = bm | ( m_bst[iB] << BstShift );

    }

    return bm;
}
const std::vector<boost::uint16_t>& L1GtfeExtWord::bst ( ) const [inline]

get the full BST block

Definition at line 71 of file L1GtfeExtWord.h.

References m_bst.

                                                        {
        return m_bst;
    }
const uint16_t L1GtfeExtWord::bst ( int  iB) const

get/set BST block for index iB

Definition at line 402 of file L1GtfeExtWord.cc.

References Exception, and m_bst.

{

    int NumberBstBlocks = m_bst.size();

    if (iB < 0 || iB >= NumberBstBlocks) {
        throw cms::Exception("BstIndexError")
        << "\nError: index for BST array out of range. Allowed range: [0, "
        << NumberBstBlocks << ") " << std::endl;

    } else {
        return m_bst[iB];
    }

}
const unsigned int L1GtfeExtWord::bstLengthBytes ( ) const [inline]

get the size of the BST block

Definition at line 76 of file L1GtfeExtWord.h.

References m_bst.

Referenced by L1GTEvmDigiToRaw::produce().

                                                     {
        return m_bst.size();
    }
const boost::uint16_t L1GtfeExtWord::bstMasterStatus ( ) const

Definition at line 178 of file L1GtfeExtWord.cc.

References BstBitSize, BstMasterStatusFirstBlock, BstMasterStatusLastBlock, and m_bst.

Referenced by L1TGT::analyze(), and ConditionDumperInEdm::produce().

{

    boost::uint16_t bms = 0;

    // return 0 if BST message too small
    int bstSize = m_bst.size();
    if (BstMasterStatusLastBlock >= bstSize) {
        return bms;
    }

    for (int iB = BstMasterStatusFirstBlock; iB <= BstMasterStatusLastBlock; ++iB) {

        // keep capitalization for similarity with other functions
        const int scaledIB = iB - BstMasterStatusFirstBlock;
        const int BstShift = BstBitSize*scaledIB;

        bms = bms | ( m_bst[iB] << BstShift );

    }

    return bms;
}
const boost::uint16_t L1GtfeExtWord::bstSource ( ) const [inline]

get/set hex message indicating the source of BST message

Definition at line 114 of file L1GtfeExtWord.h.

References m_bstSource.

                                                 {
        return m_bstSource;
    }
const unsigned int L1GtfeExtWord::getSize ( ) const

get the size of the GTFE block in GT EVM record (in multiple of 8 bits)

Reimplemented from L1GtfeWord.

Definition at line 491 of file L1GtfeExtWord.cc.

References L1GtfeWord::getSize(), and m_bst.

Referenced by L1GTEvmDigiToRaw::packGTFE(), L1GTEvmDigiToRaw::produce(), L1GlobalTriggerEvmRawToDigi::produce(), setBstSourceWord64(), and unpack().

                                                {

    L1GtfeWord gtfeWord;
    unsigned int gtfeSize = gtfeWord.getSize();

    unsigned int gtfeExtSize;

    // 2 bytes to write if real BST message or simulated BST message
    unsigned int bytesBstWriter = 2;

    // size of BST block, using rounded 64-bit words (8 bytes per 64-bit word)

    unsigned int bstSize = m_bst.size();

    if ( (bstSize +bytesBstWriter )%8 == 0) {
        gtfeExtSize = gtfeSize + bstSize + bytesBstWriter;
    }
    else {
        gtfeExtSize = gtfeSize + bstSize + bytesBstWriter + (8 - (bstSize + bytesBstWriter)%8 );
    }

    return gtfeExtSize;
}
const boost::uint64_t L1GtfeExtWord::gpsTime ( ) const

LHC-BOB-ES-0001 (EDMS 638899)

Definition at line 117 of file L1GtfeExtWord.cc.

References BstBitSize, GpsTimeFirstBlock, GpsTimeLastBlock, and m_bst.

Referenced by L1TGT::analyze().

{

    boost::uint64_t gpst = 0ULL;

    // return 0 if BST message too small
    int bstSize = m_bst.size();
    if (GpsTimeLastBlock >= bstSize) {
        return gpst;
    }

    for (int iB = GpsTimeFirstBlock; iB <= GpsTimeLastBlock; ++iB) {

        // keep capitalization for similarity with other functions
        const int scaledIB = iB - GpsTimeFirstBlock;
        const int BstShift = BstBitSize*scaledIB;

        gpst = gpst |
               ( (static_cast<boost::uint64_t> (m_bst[iB])) << BstShift );

    }

    return gpst;
}
const boost::uint32_t L1GtfeExtWord::lhcFillNumber ( ) const

Definition at line 228 of file L1GtfeExtWord.cc.

References BstBitSize, LhcFillNumberFirstBlock, LhcFillNumberLastBlock, and m_bst.

Referenced by L1TGT::analyze(), DQMProvInfo::makeGtInfo(), and ConditionDumperInEdm::produce().

{

    boost::uint32_t lhcfn = 0;

    // return 0 if BST message too small
    int bstSize = m_bst.size();
    if (LhcFillNumberLastBlock >= bstSize) {
        return lhcfn;
    }

    for (int iB = LhcFillNumberFirstBlock; iB <= LhcFillNumberLastBlock; ++iB) {

        // keep capitalization for similarity with other functions
        const int scaledIB = iB - LhcFillNumberFirstBlock;
        const int BstShift = BstBitSize*scaledIB;

        lhcfn = lhcfn |
                ( (static_cast<boost::uint32_t> (m_bst[iB])) << BstShift );

    }

    return lhcfn;
}
bool L1GtfeExtWord::operator!= ( const L1GtfeExtWord result) const

unequal operator

Definition at line 108 of file L1GtfeExtWord.cc.

{

    return !( result == *this);

}
bool L1GtfeExtWord::operator== ( const L1GtfeExtWord result) const

equal operator

Definition at line 77 of file L1GtfeExtWord.cc.

References m_bst, m_bstSource, and query::result.

{

    // base class

    const L1GtfeWord gtfeResult = result;
    const L1GtfeWord gtfeThis = *this;

    if (gtfeThis != gtfeResult) {
        return false;
    }


    //

    for (unsigned int iB = 0; iB < m_bst.size(); ++iB) {
        if(m_bst[iB] != result.m_bst[iB]) {
            return false;
        }
    }

    if ( m_bstSource != result.m_bstSource) {
        return false;
    }

    // all members identical
    return true;

}
const boost::uint16_t L1GtfeExtWord::particleTypeBeam1 ( ) const

Definition at line 277 of file L1GtfeExtWord.cc.

References BstBitSize, m_bst, ParticleTypeBeam1FirstBlock, and ParticleTypeBeam1LastBlock.

{

    boost::uint16_t ptb = 0;

    // return 0 if BST message too small
    int bstSize = m_bst.size();
    if (ParticleTypeBeam1LastBlock >= bstSize) {
        return ptb;
    }

    for (int iB = ParticleTypeBeam1FirstBlock; iB <= ParticleTypeBeam1LastBlock; ++iB) {

        // keep capitalization for similarity with other functions
        const int scaledIB = iB - ParticleTypeBeam1FirstBlock;
        const int BstShift = BstBitSize*scaledIB;

        ptb = ptb | ( m_bst[iB] << BstShift );

    }

    return ptb;
}
const boost::uint16_t L1GtfeExtWord::particleTypeBeam2 ( ) const

Definition at line 301 of file L1GtfeExtWord.cc.

References BstBitSize, m_bst, ParticleTypeBeam2FirstBlock, and ParticleTypeBeam2LastBlock.

{

    boost::uint16_t ptb = 0;

    // return 0 if BST message too small
    int bstSize = m_bst.size();
    if (ParticleTypeBeam2LastBlock >= bstSize) {
        return ptb;
    }

    for (int iB = ParticleTypeBeam2FirstBlock; iB <= ParticleTypeBeam2LastBlock; ++iB) {

        // keep capitalization for similarity with other functions
        const int scaledIB = iB - ParticleTypeBeam2FirstBlock;
        const int BstShift = BstBitSize*scaledIB;

        ptb = ptb | ( m_bst[iB] << BstShift );

    }

    return ptb;

}
void L1GtfeExtWord::print ( std::ostream &  myCout) const [virtual]

pretty print the content of a L1GtfeExtWord

Reimplemented from L1GtfeWord.

Definition at line 534 of file L1GtfeExtWord.cc.

References m_bst, and m_bstSource.

Referenced by L1GlobalTriggerEvmReadoutRecord::print(), L1GTEvmDigiToRaw::produce(), and L1GlobalTriggerEvmRawToDigi::produce().

{

    myCout << "\n L1GtfeExtWord::print \n" << std::endl;

    int sizeW64 = 64;
    int dataBlocksPerLine = sizeW64/8; // 8x8 bits per line

    L1GtfeWord::print(myCout);

    int NumberBstBlocks = m_bst.size();

    myCout << "\n  BST ";
    for (int iB = 0; iB < NumberBstBlocks; ++iB) {

        myCout << "\n" << std::hex << " hex: ";

        for (int jB = iB; jB < dataBlocksPerLine + iB; ++jB) {

            if (jB >= NumberBstBlocks) {
                break;
            }

            myCout
            << std::setw(2) << std::setfill('0') << m_bst[jB]
            << "   " << std::setfill(' ');
        }

        myCout << "\n"<< std::dec << " dec: " ;

        for (int jB = iB; jB < dataBlocksPerLine + iB; ++jB) {

            if (jB >= NumberBstBlocks) {
                break;
            }

            myCout
            << std::setw(3) << std::setfill('0') << m_bst[jB]
            << "  " << std::setfill(' ');
        }

        myCout << std::endl;

        iB += dataBlocksPerLine - 1;
    }

    myCout << "\n  BST source [hex]: " << std::hex << std::setw(4) << std::setfill('0')
        << m_bstSource << std::endl;

}
void L1GtfeExtWord::reset ( void  ) [virtual]

reset the content of a L1GtfeExtWord

Reimplemented from L1GtfeWord.

Definition at line 525 of file L1GtfeExtWord.cc.

References m_bst.

Referenced by L1GlobalTriggerEvmRawToDigi::produce().

{

    L1GtfeWord::reset();
    m_bst.clear();

}
void L1GtfeExtWord::resize ( int  bstSizeBytes)

resize the BST vector to get the right size of the block

Definition at line 518 of file L1GtfeExtWord.cc.

References m_bst.

Referenced by L1GlobalTriggerEvmRawToDigi::produce().

                                           {

    m_bst.resize(bstSizeBytes);

}
void L1GtfeExtWord::setBst ( const boost::uint16_t  bstVal,
const int  iB 
)

Referenced by unpack().

void L1GtfeExtWord::setBst ( const boost::uint64_t &  word64,
const int  iB 
)

set the BST block for index iB from a 64-bits word

Definition at line 435 of file L1GtfeExtWord.cc.

References BstBitSize, BstBlockMask, and m_bst.

{

    // keep capitalization for similarity with other functions //FIXME check it again
    const int scaledIB = iB%(sizeof(word64)*8/BstBitSize);
    const int BstShift = BstBitSize*scaledIB;
    const boost::uint64_t BstMask = 0x0000000000000000ULL | (BstBlockMask << BstShift);

    m_bst[iB] = static_cast<boost::uint16_t> ((word64 & BstMask) >> BstShift);

}
void L1GtfeExtWord::setBstSource ( const boost::uint64_t &  word64)

set the hex message indicating the source of BST message from a 64-bits word

Definition at line 467 of file L1GtfeExtWord.cc.

References BstSourceMask, BstSourceShift, and m_bstSource.

void L1GtfeExtWord::setBstSource ( const boost::uint16_t  bstSourceVal) [inline]

Definition at line 118 of file L1GtfeExtWord.h.

References m_bstSource.

Referenced by L1GlobalTrigger::produce().

                                                               {
        m_bstSource = bstSourceVal;
    }
void L1GtfeExtWord::setBstSourceWord64 ( boost::uint64_t &  word64,
const int  iWord 
)

set hex message indicating the source of BST message in a 64-bits word, having the index iWord in the GTFE raw record

Definition at line 475 of file L1GtfeExtWord.cc.

References BstSourceShift, getSize(), and m_bstSource.

                                                                             {

    // BST always in the last word of GTFE extended - size must be correct!
    int gtfeSize = this->getSize();

    int BstSourceWord = gtfeSize/8 - 1; // counting starts at 0

    if (iWord == BstSourceWord) {
        word64 = word64 | (static_cast<boost::uint64_t> (m_bstSource)
                           << BstSourceShift);
    }

}
void L1GtfeExtWord::setBstWord64 ( boost::uint64_t &  word64,
int  iB,
const int  iWord 
)

set the BST block in a 64-bits word, having the index iWord in the GTFE raw record

Definition at line 449 of file L1GtfeExtWord.cc.

References BstBitSize, BstFirstWord, and m_bst.

Referenced by L1GTEvmDigiToRaw::packGTFE().

{

    // keep capitalization for similarity with other functions
    const int scaledIB = iB%(sizeof(word64)*8/BstBitSize);
    const int BstShift = BstBitSize*scaledIB;
    const int BstWord = iB/(sizeof(word64)*8/BstBitSize) + BstFirstWord;

    if (iWord == BstWord) {
        word64 = word64 |
                 (static_cast<boost::uint64_t> (m_bst[iB]) << BstShift);
    }


}
void L1GtfeExtWord::setGpsTime ( const boost::uint64_t  gpsTimeValue)

Definition at line 142 of file L1GtfeExtWord.cc.

References BstBitSize, BstBlockMask, GpsTimeFirstBlock, GpsTimeLastBlock, and m_bst.

Referenced by L1GlobalTrigger::produce().

                                                               {

    // return if BST message too small
    int bstSize = m_bst.size();
    if (GpsTimeLastBlock >= bstSize) {

        edm::LogError("L1GtfeExtWord") << "Error: BST message length "
            << bstSize << " smaller than the required GpsTimeLastBlock "
            << GpsTimeLastBlock << "\n Cannot set GpsTime" << std::endl;

        return;
    }

    for (int iB = GpsTimeFirstBlock; iB <= GpsTimeLastBlock; ++iB) {

        // keep capitalization for similarity with other functions
        const int scaledIB = iB - GpsTimeFirstBlock;
        const int BstShift = BstBitSize*scaledIB;
        const boost::uint64_t BstMask = 0x0000000000000000ULL | (BstBlockMask << BstShift);

        m_bst[iB] = static_cast<boost::uint16_t> ((gpsTimeValue & BstMask) >> BstShift);

        //LogTrace("L1GtfeExtWord")
        //<< "BstShift: value [dec] = " << BstShift << "\n"
        //<< "BstBlockMask: value [hex] = "  << std::hex << BstBlockMask << "\n"
        //<< "BstMask: value [hex] = "<< BstMask << std::dec
        //<< std::endl;

        //LogTrace("L1GtfeExtWord")
        //<< "BST block " << iB << ": value [hex] = " << std::hex << m_bst[iB] << std::dec
        //<< std::endl;

    }

}
const boost::uint32_t L1GtfeExtWord::totalIntensityBeam1 ( ) const

Definition at line 350 of file L1GtfeExtWord.cc.

References BstBitSize, m_bst, TotalIntensityBeam1FirstBlock, and TotalIntensityBeam1LastBlock.

Referenced by L1TGT::analyze(), DQMProvInfo::makeGtInfo(), and ConditionDumperInEdm::produce().

{

    boost::uint32_t tib = 0;

    // return 0 if BST message too small
    int bstSize = m_bst.size();
    if (TotalIntensityBeam1LastBlock >= bstSize) {
        return tib;
    }

    for (int iB = TotalIntensityBeam1FirstBlock; iB <= TotalIntensityBeam1LastBlock; ++iB) {

        // keep capitalization for similarity with other functions
        const int scaledIB = iB - TotalIntensityBeam1FirstBlock;
        const int BstShift = BstBitSize*scaledIB;

        tib = tib |
              ( (static_cast<boost::uint32_t> (m_bst[iB])) << BstShift );

    }

    return tib;
}
const boost::uint32_t L1GtfeExtWord::totalIntensityBeam2 ( ) const

Definition at line 375 of file L1GtfeExtWord.cc.

References BstBitSize, m_bst, TotalIntensityBeam2FirstBlock, and TotalIntensityBeam2LastBlock.

Referenced by L1TGT::analyze(), DQMProvInfo::makeGtInfo(), and ConditionDumperInEdm::produce().

{

    boost::uint32_t tib = 0;

    // return 0 if BST message too small
    int bstSize = m_bst.size();
    if (TotalIntensityBeam2LastBlock >= bstSize) {
        return tib;
    }

    for (int iB = TotalIntensityBeam2FirstBlock; iB <= TotalIntensityBeam2LastBlock; ++iB) {

        // keep capitalization for similarity with other functions
        const int scaledIB = iB - TotalIntensityBeam2FirstBlock;
        const int BstShift = BstBitSize*scaledIB;

        tib = tib |
              ( (static_cast<boost::uint32_t> (m_bst[iB])) << BstShift );

    }

    return tib;
}
const boost::uint32_t L1GtfeExtWord::turnCountNumber ( ) const

Definition at line 203 of file L1GtfeExtWord.cc.

References BstBitSize, m_bst, TurnCountNumberFirstBlock, and TurnCountNumberLastBlock.

Referenced by L1TGT::analyze(), and ConditionDumperInEdm::produce().

{

    boost::uint32_t tcn = 0;

    // return 0 if BST message too small
    int bstSize = m_bst.size();
    if (TurnCountNumberLastBlock >= bstSize) {
        return tcn;
    }

    for (int iB = TurnCountNumberFirstBlock; iB <= TurnCountNumberLastBlock; ++iB) {

        // keep capitalization for similarity with other functions
        const int scaledIB = iB - TurnCountNumberFirstBlock;
        const int BstShift = BstBitSize*scaledIB;

        tcn = tcn |
              ( (static_cast<boost::uint32_t> (m_bst[iB])) << BstShift );

    }

    return tcn;
}
void L1GtfeExtWord::unpack ( const unsigned char *  gtfePtr) [virtual]

unpack GTFE gtfePtr pointer to the beginning of the GTFE block in the raw data

Reimplemented from L1GtfeWord.

Definition at line 585 of file L1GtfeExtWord.cc.

References BstBitSize, BstFirstWord, getSize(), L1GtfeWord::getSize(), edm::isDebugEnabled(), LogDebug, LogTrace, m_bst, and setBst().

Referenced by L1GlobalTriggerEvmRawToDigi::produce().

{
    LogDebug("L1GtfeExtWord")
    << "\nUnpacking GTFE block.\n"
    << std::endl;

    L1GtfeWord::unpack(gtfePtr);

    // TODO make BlockSize protected & use friends instead of creating L1GtfeWord?
    L1GtfeWord gtfeWord;
    const unsigned char* gtfeExtPtr = gtfePtr + gtfeWord.getSize();

    const boost::uint64_t* payload =
        reinterpret_cast<boost::uint64_t*>(const_cast<unsigned char*>(gtfeExtPtr));

    int BlockSizeExt = this->getSize()/8;
    int NumberBstBlocks = m_bst.size();

    if (edm::isDebugEnabled() ) {

        for (int iWord = BstFirstWord; iWord < BlockSizeExt; ++iWord) {

            int jWord = iWord - BstFirstWord;
            LogTrace("L1GtfeExtWord")
            << std::setw(4) << iWord << "  "
            << std::hex << std::setfill('0')
            << std::setw(16) << payload[jWord]
            << std::dec << std::setfill(' ')
            << std::endl;

        }
    }

    int blocksPerWord = sizeof(boost::uint64_t)*8/BstBitSize;

    for (int iB = 0; iB < NumberBstBlocks; ++iB) {

        // keep capitalization for similarity with other functions
        int BstWord = iB/blocksPerWord;

        setBst(payload[BstWord], iB);

    }

}

Member Data Documentation

const int L1GtfeExtWord::BeamModeFirstBlock = 26 [static, private]

Definition at line 177 of file L1GtfeExtWord.h.

Referenced by beamMode().

const int L1GtfeExtWord::BeamModeLastBlock = 27 [static, private]

Definition at line 178 of file L1GtfeExtWord.h.

Referenced by beamMode().

const int L1GtfeExtWord::BeamMomentumFirstBlock = 30 [static, private]

Definition at line 186 of file L1GtfeExtWord.h.

Referenced by beamMomentum().

const int L1GtfeExtWord::BeamMomentumLastBlock = 31 [static, private]

Definition at line 187 of file L1GtfeExtWord.h.

Referenced by beamMomentum().

const int L1GtfeExtWord::BstBitSize = 8 [static, private]
const boost::uint64_t L1GtfeExtWord::BstBlockMask = 0xFFULL [static, private]

BST block mask, correlated with the number of bits of a block 8 bit = 0xFF

Definition at line 161 of file L1GtfeExtWord.h.

Referenced by setBst(), and setGpsTime().

const int L1GtfeExtWord::BstFirstWord = 2 [static, private]

block description in the raw GT record

index of first word for BST blocks

Definition at line 154 of file L1GtfeExtWord.h.

Referenced by setBstWord64(), and unpack().

const int L1GtfeExtWord::BstMasterStatusFirstBlock = 17 [static, private]

Definition at line 168 of file L1GtfeExtWord.h.

Referenced by bstMasterStatus().

const int L1GtfeExtWord::BstMasterStatusLastBlock = 17 [static, private]

Definition at line 169 of file L1GtfeExtWord.h.

Referenced by bstMasterStatus().

const boost::uint64_t L1GtfeExtWord::BstSourceMask = 0xFFFF000000000000ULL [static, private]

Definition at line 196 of file L1GtfeExtWord.h.

Referenced by setBstSource().

const int L1GtfeExtWord::BstSourceShift = 48 [static, private]

Definition at line 198 of file L1GtfeExtWord.h.

Referenced by setBstSource(), and setBstSourceWord64().

const int L1GtfeExtWord::GpsTimeFirstBlock = 0 [static, private]

BST blocks: conversion to defined quantities (LHC-BOB-ES-0001)

Definition at line 165 of file L1GtfeExtWord.h.

Referenced by gpsTime(), and setGpsTime().

const int L1GtfeExtWord::GpsTimeLastBlock = 7 [static, private]

Definition at line 166 of file L1GtfeExtWord.h.

Referenced by gpsTime(), and setGpsTime().

const int L1GtfeExtWord::LhcFillNumberFirstBlock = 22 [static, private]

Definition at line 174 of file L1GtfeExtWord.h.

Referenced by lhcFillNumber().

const int L1GtfeExtWord::LhcFillNumberLastBlock = 25 [static, private]

Definition at line 175 of file L1GtfeExtWord.h.

Referenced by lhcFillNumber().

std::vector<boost::uint16_t> L1GtfeExtWord::m_bst [private]
boost::uint16_t L1GtfeExtWord::m_bstSource [private]

hex message indicating the source of BST message (beam or simulated)

Definition at line 208 of file L1GtfeExtWord.h.

Referenced by bstSource(), operator==(), print(), setBstSource(), and setBstSourceWord64().

const int L1GtfeExtWord::ParticleTypeBeam1FirstBlock = 28 [static, private]

Definition at line 180 of file L1GtfeExtWord.h.

Referenced by particleTypeBeam1().

const int L1GtfeExtWord::ParticleTypeBeam1LastBlock = 28 [static, private]

Definition at line 181 of file L1GtfeExtWord.h.

Referenced by particleTypeBeam1().

const int L1GtfeExtWord::ParticleTypeBeam2FirstBlock = 29 [static, private]

Definition at line 183 of file L1GtfeExtWord.h.

Referenced by particleTypeBeam2().

const int L1GtfeExtWord::ParticleTypeBeam2LastBlock = 29 [static, private]

Definition at line 184 of file L1GtfeExtWord.h.

Referenced by particleTypeBeam2().

const int L1GtfeExtWord::TotalIntensityBeam1FirstBlock = 32 [static, private]

Definition at line 189 of file L1GtfeExtWord.h.

Referenced by totalIntensityBeam1().

const int L1GtfeExtWord::TotalIntensityBeam1LastBlock = 35 [static, private]

Definition at line 190 of file L1GtfeExtWord.h.

Referenced by totalIntensityBeam1().

const int L1GtfeExtWord::TotalIntensityBeam2FirstBlock = 36 [static, private]

Definition at line 192 of file L1GtfeExtWord.h.

Referenced by totalIntensityBeam2().

const int L1GtfeExtWord::TotalIntensityBeam2LastBlock = 39 [static, private]

Definition at line 193 of file L1GtfeExtWord.h.

Referenced by totalIntensityBeam2().

const int L1GtfeExtWord::TurnCountNumberFirstBlock = 18 [static, private]

Definition at line 171 of file L1GtfeExtWord.h.

Referenced by turnCountNumber().

const int L1GtfeExtWord::TurnCountNumberLastBlock = 21 [static, private]

Definition at line 172 of file L1GtfeExtWord.h.

Referenced by turnCountNumber().