Skip to content
Snippets Groups Projects
Commit 5a621cf6 authored by Edward Moyse's avatar Edward Moyse
Browse files

Merge branch 'ofctool.LArCalibTools-20210421' into 'master'

LArCalibTools: Remove references to LArOFCTool.

See merge request atlas/athena!42818
parents 69d48b8c 4e90daa3
No related branches found
No related tags found
No related merge requests found
......@@ -19,27 +19,29 @@
#ifndef LAROFC2NTUPLE_H
#define LAROFC2NTUPLE_H
#include "LArCalibTools/LArCond2NtupleBase.h"
#include "LArElecCalib/ILArOFCTool.h"
#include "StoreGate/ReadCondHandleKey.h"
#include "LArElecCalib/ILArOFC.h"
class LArOFC2Ntuple : public LArCond2NtupleBase {
public:
LArOFC2Ntuple(const std::string & name, ISvcLocator * pSvcLocator);
~LArOFC2Ntuple();
virtual ~LArOFC2Ntuple();
//standard algorithm methods
StatusCode initialize();
virtual StatusCode stop();
StatusCode finalize(){return StatusCode::SUCCESS;}
virtual StatusCode initialize() override;
virtual StatusCode stop() override;
virtual StatusCode finalize() override {return StatusCode::SUCCESS;}
private:
unsigned m_nSamples;// , m_nPhases ;
std::string m_contKey;
std::string m_ntName;
std::string m_ntFile;
bool m_isMC;
ToolHandle<ILArOFCTool> m_OFCTool;
/// Property: OFC coefficients (conditions input).
SG::ReadCondHandleKey<ILArOFC> m_ofcKey
{this, "ContainerKey", "LArOFC", "SG Key of OFC conditions object" };
};
#endif
......@@ -193,26 +193,25 @@ if doObj("OFC"):
LArOFC2Ntuple.OffId=OffIdDump
if IsMC:
if SuperCells:
LArOFC2Ntuple.IsMC=IsMC
from LArRecUtils.LArOFCSCToolDefault import LArOFCSCToolDefault
theOFCTool = LArOFCSCToolDefault()
theOFCTool.Dump=True
ToolSvc += theOFCTool
LArOFC2Ntuple.OFCTool = theOFCTool
from LArRecUtils.LArOFCSCCondAlgDefault import LArOFCCondAlgDefault
ofcAlg = LArOFCSCCondAlgDefault()
else:
conddb.addFolder("",getDBFolderAndTag("/LAR/ElecCalibMC/OFC"))
LArOFC2Ntuple.IsMC=IsMC
from LArRecUtils.LArOFCToolDefault import LArOFCToolDefault
theOFCTool = LArOFCToolDefault()
theOFCTool.Dump=True
ToolSvc += theOFCTool
LArOFC2Ntuple.OFCTool = theOFCTool
from LArRecUtils.LArOFCCondAlgDefault import LArOFCCondAlgDefault
ofcAlg = LArOFCCondAlgDefault()
LArOFC2Ntuple.ContainerKey = ofcAlg.LArOFCObjKey
elif IsFlat:
conddb.addFolder("",getDBFolderAndTag("/LAR/ElecCalibFlat/OFC"))
svcMgr.LArFlatConditionSvc.OFCInput="/LAR/ElecCalibFlat/OFC"
else:
conddb.addFolder("",getDBFolderAndTag("/LAR/ElecCalibOfl/OFC/PhysWave/RTM/"+OFCFolder))
LArOFC2Ntuple.ContainerKey = "LArOFC"
from LArRecUtils.LArRecUtilsConf import LArFlatConditionsAlg_LArOFCFlat_ as LArOFCCondAlg
from AthenaCommon.AlgSequence import AthSequencer
condSequence = AthSequencer("AthCondSeq")
folder = '/LAR/ElecCalibFlat/OFC'
conddb.addFolder('LAR_ONL', getDBFolderAndTag(folder), className = 'CondAttrListCollection')
condSequence += LArOFCCondAlg (ReadKey=folder, WriteKey='LArOFC')
else:
conddb.addFolder("",getDBFolderAndTag("/LAR/ElecCalibOfl/OFC/PhysWave/RTM/"+OFCFolder) + '<key>LArOFC</key>',
className='LArOFCComplete')
LArOFC2Ntuple.isSC=SuperCells
LArOFC2Ntuple.isFlat=IsFlat
topSequence+=LArOFC2Ntuple
......
......@@ -117,17 +117,13 @@ if doObj("OFC"):
from LArRecUtils.LArADC2MeVToolDefault import LArADC2MeVToolDefault
theLArADC2MeVToolDefault = LArADC2MeVToolDefault()
ToolSvc += theLArADC2MeVToolDefault
from LArRecUtils.LArOFCToolDefault import LArOFCToolDefault
theOFCTool = LArOFCToolDefault()
theOFCTool.Dump=True
ToolSvc += theOFCTool
from LArRecUtils.LArOFCCondAlgDefault import LArOFCCondAlgDefault
LArOFCCondAlgDefault()
from LArCalibTools.LArCalibToolsConf import LArOFC2Ntuple
LArOFC2Ntuple = LArOFC2Ntuple("LArOFC2Ntuple")
LArOFC2Ntuple.ContainerKey = "LArOFC"
LArOFC2Ntuple.AddFEBTempInfo=False
LArOFC2Ntuple.IsMC = True
LArOFC2Ntuple.OFCTool = theOFCTool
topSequence+=LArOFC2Ntuple
if (doObj("SHAPE")):
......
......@@ -3,20 +3,17 @@
*/
#include "LArCalibTools/LArOFC2Ntuple.h"
#include "LArRawConditions/LArOFCComplete.h"
#include "CaloIdentifier/CaloGain.h"
#include "LArIdentifier/LArOnlineID.h"
#include "StoreGate/StoreGateSvc.h"
#include "StoreGate/ReadCondHandle.h"
#include "GaudiKernel/ThreadLocalContext.h"
LArOFC2Ntuple::LArOFC2Ntuple(const std::string& name, ISvcLocator* pSvcLocator):
LArCond2NtupleBase(name, pSvcLocator)
{
declareProperty("ContainerKey", m_contKey = "LArOFC");
declareProperty("Nsamples", m_nSamples = 5);
declareProperty("NtupleName", m_ntName = "OFC");
declareProperty("NtupleFile", m_ntFile = "FILE1");
declareProperty("IsMC", m_isMC=false);
declareProperty("OFCTool", m_OFCTool );
}
LArOFC2Ntuple::~LArOFC2Ntuple()
......@@ -26,80 +23,38 @@ StatusCode LArOFC2Ntuple::initialize() {
m_ntTitle="Optimal Filtering Coefficients";
m_ntpath=std::string("/NTUPLES/")+m_ntFile+std::string("/")+m_ntName;
if ( LArCond2NtupleBase::initialize().isFailure() ) {
return StatusCode::FAILURE;
}
if ( m_isMC && m_OFCTool.retrieve().isFailure() ) {
ATH_MSG_ERROR( "OFC tool required for MC conditions but not available" );
return StatusCode::FAILURE;
}
ATH_CHECK( m_ofcKey.initialize() );
ATH_CHECK( LArCond2NtupleBase::initialize() );
return StatusCode::SUCCESS;
}
StatusCode LArOFC2Ntuple::stop() {
StatusCode sc;
const EventContext& ctx = Gaudi::Hive::currentContext();
// Ntuple booking: Specific
NTuple::Item<long> gain, phase, nSamples;
NTuple::Item<float> timeOffset, phasetime;
NTuple::Array<float> OFCa, OFCb;
sc=m_nt->addItem("Gain",gain,-1,2);
if (sc!=StatusCode::SUCCESS) {
ATH_MSG_ERROR( "addItem 'gain' failed" );
return StatusCode::FAILURE;
}
//Specific:
sc=m_nt->addItem("TimeOffset",timeOffset,0,100);
if (sc!=StatusCode::SUCCESS) {
ATH_MSG_ERROR( "addItem 'TimeOffset' failed" );
return StatusCode::FAILURE;
}
sc=m_nt->addItem("Phase",phase,0,49);
if (sc!=StatusCode::SUCCESS) {
ATH_MSG_ERROR( "addItem 'phase' failed" );
return StatusCode::FAILURE;
}
sc=m_nt->addItem("PhaseTime",phasetime,0,800);
if (sc!=StatusCode::SUCCESS) {
ATH_MSG_ERROR( "addItem 'PhaseTime' failed" );
return StatusCode::FAILURE;
}
sc=m_nt->addItem("nSamples",nSamples,0,100);
if (sc!=StatusCode::SUCCESS) {
ATH_MSG_ERROR( "addItem 'nSamples' failed" );
return StatusCode::FAILURE;
}
sc=m_nt->addItem("OFCa",m_nSamples,OFCa);
if (sc!=StatusCode::SUCCESS) {
ATH_MSG_ERROR( "addItem 'OFCa' failed" );
return StatusCode::FAILURE;
}
sc=m_nt->addItem("OFCb",m_nSamples,OFCb);
if (sc!=StatusCode::SUCCESS) {
ATH_MSG_ERROR( "addItem 'OFCb' failed" );
return StatusCode::FAILURE;
}
ATH_CHECK( m_nt->addItem("Gain",gain,-1,2) );
ATH_CHECK( m_nt->addItem("TimeOffset",timeOffset,0,100) );
ATH_CHECK( m_nt->addItem("Phase",phase,0,49) );
ATH_CHECK( m_nt->addItem("PhaseTime",phasetime,0,800) );
ATH_CHECK( m_nt->addItem("nSamples",nSamples,0,100) );
ATH_CHECK( m_nt->addItem("OFCa",m_nSamples,OFCa) );
ATH_CHECK( m_nt->addItem("OFCb",m_nSamples,OFCb) );
// retrieve OFC object
const ILArOFC* larOFC = NULL ;
if ( !m_isMC ) {
ATH_MSG_DEBUG( "Retrieving ILArOFC object with key " << m_contKey );
sc = m_detStore->retrieve(larOFC,m_contKey);
if (sc.isFailure()) {
ATH_MSG_ERROR( "Can't retrieve ILArOFC with key " << m_contKey << " from Conditions Store" );
return StatusCode::FAILURE;
}
}
// retrieve OFC object
SG::ReadCondHandle<ILArOFC> larOFC (m_ofcKey, ctx);
const LArOnOffIdMapping *cabling=0;
if(m_isSC) {
ATH_MSG_DEBUG( "LArOFC2Ntuple: using SC cabling" );
SG::ReadCondHandle<LArOnOffIdMapping> cablingHdl{m_cablingSCKey};
SG::ReadCondHandle<LArOnOffIdMapping> cablingHdl{m_cablingSCKey, ctx};
cabling=*cablingHdl;
}else{
SG::ReadCondHandle<LArOnOffIdMapping> cablingHdl{m_cablingKey};
SG::ReadCondHandle<LArOnOffIdMapping> cablingHdl{m_cablingKey, ctx};
cabling=*cablingHdl;
}
......@@ -111,42 +66,12 @@ StatusCode LArOFC2Ntuple::stop() {
unsigned cellCounter=0;
for ( unsigned igain=CaloGain::LARHIGHGAIN;
igain<CaloGain::LARNGAIN ; ++igain ) {
std::vector<HWIdentifier>::const_iterator it = m_onlineId->channel_begin();
std::vector<HWIdentifier>::const_iterator it_e = m_onlineId->channel_end();
if ( m_isMC ) {
for (;it!=it_e;it++) {
const HWIdentifier chid = *it;
if (!cabling->isOnlineConnected(chid)) continue;
ATH_MSG_VERBOSE( "Dumping OFC for channel 0x" << MSG::hex
<< chid.get_compact() << MSG::dec );
ILArOFC::OFCRef_t ofc_a=m_OFCTool->OFC_a(chid,igain);
ILArOFC::OFCRef_t ofc_b=m_OFCTool->OFC_b(chid,igain);
fillFromIdentifier(chid);
gain = (long)igain ;
phase = (long)0 ;
nSamples=ofc_a.size();
for (int k=0;k<nSamples;k++ ) {
OFCa[k] = ofc_a[k] ;
OFCb[k] = ofc_b[k] ;
}
timeOffset = 0;
phasetime = 0;
sc = ntupleSvc()->writeRecord(m_nt);
cellCounter++;
if (sc!=StatusCode::SUCCESS) {
ATH_MSG_ERROR( "writeRecord failed" );
return StatusCode::FAILURE;
}
}//loop over channels
} else { // is_MC
for (;it!=it_e;it++) {
const HWIdentifier chid = *it;
igain<CaloGain::LARNGAIN ; ++igain )
{
for (HWIdentifier chid : m_onlineId->channel_range()) {
if ( !cabling->isOnlineConnected(chid)) continue;
ATH_MSG_VERBOSE( "Dumping OFC for channel 0x" << MSG::hex
<< chid.get_compact() << MSG::dec );
<< chid.get_compact() << MSG::dec );
for (unsigned iphase=0;iphase<larOFC->nTimeBins(chid,igain);iphase++) {
ILArOFC::OFCRef_t ofc_a=larOFC->OFC_a(chid,igain,iphase);
//Check if we have OFC for this channel and gain
......@@ -165,15 +90,10 @@ StatusCode LArOFC2Ntuple::stop() {
phasetime = phase*larOFC->timeBinWidth(chid,igain);
sc = ntupleSvc()->writeRecord(m_nt);
ATH_CHECK( ntupleSvc()->writeRecord(m_nt) );
cellCounter++;
if (sc!=StatusCode::SUCCESS) {
ATH_MSG_ERROR( "writeRecord failed" );
return StatusCode::FAILURE;
}
}//loop over phases
}//loop over channels
}
}//loop over gains
ATH_MSG_INFO( "Total number of cells = " << cellCounter );
ATH_MSG_INFO( "LArOFC2Ntuple has finished." );
......
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