Skip to content
Snippets Groups Projects
Commit b87a3460 authored by Walter Lampl's avatar Walter Lampl
Browse files

Merge branch 'LArFebHeaderReader' into LArRawCalibDataReadingAlgFTPresel

parents 4389c932 370b9729
No related branches found
No related tags found
No related merge requests found
/*
Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration
*/
#include "LArRawEvent/LArFebHeader.h"
#include "LArByteStream/LArRodBlockStructure.h"
#include "LArFebHeaderReader.h"
void LArFebHeaderReader::fillFebHeader(LArFebHeader* larFebHeader, //output
const LArRodBlockStructure* rodBlock, //input
const ROBFragment& rob) { //input
larFebHeader->SetFormatVersion(rob.rod_version());
larFebHeader->SetSourceId(rob.rod_source_id());
larFebHeader->SetRunNumber(rob.rod_run_no());
larFebHeader->SetELVL1Id(rob.rod_lvl1_id());
larFebHeader->SetBCId(rob.rod_bc_id());
larFebHeader->SetLVL1TigType(rob.rod_lvl1_trigger_type());
larFebHeader->SetDetEventType(rob.rod_detev_type());
//set DSP data
const unsigned nsample=rodBlock->getNumberOfSamples();
larFebHeader->SetRodStatus(rodBlock->getStatus());
larFebHeader->SetDspCodeVersion(rodBlock->getDspCodeVersion());
larFebHeader->SetDspEventCounter(rodBlock->getDspEventCounter());
larFebHeader->SetRodResults1Size(rodBlock->getResults1Size());
larFebHeader->SetRodResults2Size(rodBlock->getResults2Size());
larFebHeader->SetRodRawDataSize(rodBlock->getRawDataSize());
larFebHeader->SetNbSweetCells1(rodBlock->getNbSweetCells1());
larFebHeader->SetNbSweetCells2(rodBlock->getNbSweetCells2());
larFebHeader->SetNbSamples(nsample);
larFebHeader->SetOnlineChecksum(rodBlock->onlineCheckSum());
larFebHeader->SetOfflineChecksum(rodBlock->offlineCheckSum());
if(!rodBlock->hasControlWords()) {
larFebHeader->SetFebELVL1Id(rob.rod_lvl1_id());
larFebHeader->SetFebBCId(rob.rod_bc_id());
} else {
const uint16_t evtid = rodBlock->getCtrl1(0) & 0x1f;
const uint16_t bcid = rodBlock->getCtrl2(0) & 0x1fff;
larFebHeader->SetFebELVL1Id(evtid);
larFebHeader->SetFebBCId(bcid);
for(int iadc=0;iadc<16;iadc++) {
larFebHeader->SetFebCtrl1(rodBlock->getCtrl1(iadc));
larFebHeader->SetFebCtrl2(rodBlock->getCtrl2(iadc));
larFebHeader->SetFebCtrl3(rodBlock->getCtrl3(iadc));
}
for(unsigned int i = 0; i<nsample; i++ ) {
larFebHeader->SetFebSCA(rodBlock->getRadd(0,i) & 0xff);
}
}//end else no control words
return;
}
/*
Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration
*/
#include "ByteStreamData/RawEvent.h"
class LArFebHeader;
class LArRodBlockStructure;
namespace LArFebHeaderReader{
using OFFLINE_FRAGMENTS_NAMESPACE::ROBFragment;
/**
* @brief Fill info for one FEB Header
* @param lfh Pointer ot the FEB header obj to fill
* @param bl Pointer to the input RodBlockStructure
* @param robFrag Pointer to the input ROB Fragment
*
* Extracts a bunch of control words, etc from the
* byte stream objects LArRodBlockStructure and
* ROBFragment and stores them in a FebHeader object
*
*/
void fillFebHeader(LArFebHeader* lfh, const LArRodBlockStructure* bl, const ROBFragment& robFrag);
} //namespace
......@@ -17,6 +17,8 @@
#include "LArByteStream/LArRodBlockCalibrationV3.h"
#include "LArByteStream/LArRodBlockTransparentV0.h"
#include "LArFebHeaderReader.h"
LArRawCalibDataReadingAlg::LArRawCalibDataReadingAlg(const std::string& name, ISvcLocator* pSvcLocator) :
AthReentrantAlgorithm(name, pSvcLocator) {}
......@@ -293,45 +295,7 @@ StatusCode LArRawCalibDataReadingAlg::execute(const EventContext& ctx) const {
//Decode FebHeaders (if requested)
if (m_doFebHeaders) {
std::unique_ptr<LArFebHeader> larFebHeader(new LArFebHeader(fId));
larFebHeader->SetFormatVersion(rob.rod_version());
larFebHeader->SetSourceId(rob.rod_source_id());
larFebHeader->SetRunNumber(rob.rod_run_no());
larFebHeader->SetELVL1Id(rob.rod_lvl1_id());
larFebHeader->SetBCId(rob.rod_bc_id());
larFebHeader->SetLVL1TigType(rob.rod_lvl1_trigger_type());
larFebHeader->SetDetEventType(rob.rod_detev_type());
//set DSP data
const unsigned nsample=rodBlock->getNumberOfSamples();
larFebHeader->SetRodStatus(rodBlock->getStatus());
larFebHeader->SetDspCodeVersion(rodBlock->getDspCodeVersion());
larFebHeader->SetDspEventCounter(rodBlock->getDspEventCounter());
larFebHeader->SetRodResults1Size(rodBlock->getResults1Size());
larFebHeader->SetRodResults2Size(rodBlock->getResults2Size());
larFebHeader->SetRodRawDataSize(rodBlock->getRawDataSize());
larFebHeader->SetNbSweetCells1(rodBlock->getNbSweetCells1());
larFebHeader->SetNbSweetCells2(rodBlock->getNbSweetCells2());
larFebHeader->SetNbSamples(nsample);
larFebHeader->SetOnlineChecksum(rodBlock->onlineCheckSum());
larFebHeader->SetOfflineChecksum(rodBlock->offlineCheckSum());
if(!rodBlock->hasControlWords()) {
larFebHeader->SetFebELVL1Id(rob.rod_lvl1_id());
larFebHeader->SetFebBCId(rob.rod_bc_id());
} else {
const uint16_t evtid = rodBlock->getCtrl1(0) & 0x1f;
const uint16_t bcid = rodBlock->getCtrl2(0) & 0x1fff;
larFebHeader->SetFebELVL1Id(evtid);
larFebHeader->SetFebBCId(bcid);
for(int iadc=0;iadc<16;iadc++) {
larFebHeader->SetFebCtrl1(rodBlock->getCtrl1(iadc));
larFebHeader->SetFebCtrl2(rodBlock->getCtrl2(iadc));
larFebHeader->SetFebCtrl3(rodBlock->getCtrl3(iadc));
}
for(unsigned int i = 0; i<nsample; i++ ) {
larFebHeader->SetFebSCA(rodBlock->getRadd(0,i) & 0xff);
}
}//end else no control words
LArFebHeaderReader::fillFebHeader(larFebHeader.get(),rodBlock.get(),rob);
febHeaders->push_back(std::move(larFebHeader));
}//end if m_doFebHeaders
......
......@@ -15,6 +15,9 @@
#include "LArByteStream/LArRodBlockPhysicsV5.h"
#include "LArByteStream/LArRodBlockPhysicsV6.h"
#include "LArFebHeaderReader.h"
LArRawDataReadingAlg::LArRawDataReadingAlg(const std::string& name, ISvcLocator* pSvcLocator) :
AthReentrantAlgorithm(name, pSvcLocator) {}
......@@ -212,45 +215,7 @@ StatusCode LArRawDataReadingAlg::execute(const EventContext& ctx) const {
//Decode FebHeaders (if requested)
if (m_doFebHeaders) {
std::unique_ptr<LArFebHeader> larFebHeader(new LArFebHeader(fId));
larFebHeader->SetFormatVersion(rob.rod_version());
larFebHeader->SetSourceId(rob.rod_source_id());
larFebHeader->SetRunNumber(rob.rod_run_no());
larFebHeader->SetELVL1Id(rob.rod_lvl1_id());
larFebHeader->SetBCId(rob.rod_bc_id());
larFebHeader->SetLVL1TigType(rob.rod_lvl1_trigger_type());
larFebHeader->SetDetEventType(rob.rod_detev_type());
//set DSP data
const unsigned nsample=rodBlock->getNumberOfSamples();
larFebHeader->SetRodStatus(rodBlock->getStatus());
larFebHeader->SetDspCodeVersion(rodBlock->getDspCodeVersion());
larFebHeader->SetDspEventCounter(rodBlock->getDspEventCounter());
larFebHeader->SetRodResults1Size(rodBlock->getResults1Size());
larFebHeader->SetRodResults2Size(rodBlock->getResults2Size());
larFebHeader->SetRodRawDataSize(rodBlock->getRawDataSize());
larFebHeader->SetNbSweetCells1(rodBlock->getNbSweetCells1());
larFebHeader->SetNbSweetCells2(rodBlock->getNbSweetCells2());
larFebHeader->SetNbSamples(nsample);
larFebHeader->SetOnlineChecksum(rodBlock->onlineCheckSum());
larFebHeader->SetOfflineChecksum(rodBlock->offlineCheckSum());
if(!rodBlock->hasControlWords()) {
larFebHeader->SetFebELVL1Id(rob.rod_lvl1_id());
larFebHeader->SetFebBCId(rob.rod_bc_id());
} else {
const uint16_t evtid = rodBlock->getCtrl1(0) & 0x1f;
const uint16_t bcid = rodBlock->getCtrl2(0) & 0x1fff;
larFebHeader->SetFebELVL1Id(evtid);
larFebHeader->SetFebBCId(bcid);
for(int iadc=0;iadc<16;iadc++) {
larFebHeader->SetFebCtrl1(rodBlock->getCtrl1(iadc));
larFebHeader->SetFebCtrl2(rodBlock->getCtrl2(iadc));
larFebHeader->SetFebCtrl3(rodBlock->getCtrl3(iadc));
}
for(unsigned int i = 0; i<nsample; i++ ) {
larFebHeader->SetFebSCA(rodBlock->getRadd(0,i) & 0xff);
}
}//end else no control words
LArFebHeaderReader::fillFebHeader(larFebHeader.get(),rodBlock.get(),rob);
febHeaders->push_back(std::move(larFebHeader));
}//end if m_doFebHeaders
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment