diff --git a/Calorimeter/CaloCondPhysAlgs/src/CaloCellCalcEnergyCorr.cxx b/Calorimeter/CaloCondPhysAlgs/src/CaloCellCalcEnergyCorr.cxx index 2a4808cff36c86c11717b2361d7412487984bf31..e9f1227fc2c493b25c7c4a34d636bb2d77f3d0a9 100644 --- a/Calorimeter/CaloCondPhysAlgs/src/CaloCellCalcEnergyCorr.cxx +++ b/Calorimeter/CaloCondPhysAlgs/src/CaloCellCalcEnergyCorr.cxx @@ -1,7 +1,7 @@ ///////////////////////// -*- C++ -*- ///////////////////////////// /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration */ // CaloCellCalcEnergyCorr.cxx @@ -16,7 +16,6 @@ #include "CaloDetDescr/CaloDetectorElements.h" #include "LArReadoutGeometry/EMBCell.h" -#include "LArHV/EMBHVElectrodeConstLink.h" #include "LArHV/EMBHVElectrode.h" #include "LArHV/EMBPresamplerHVModuleConstLink.h" #include "LArHV/EMBPresamplerHVModule.h" @@ -205,8 +204,8 @@ std::vector<int> CaloCellCalcEnergyCorr::GetHVLines(const Identifier& id) { const EMBCellConstLink cell = embElement->getEMBCell(); unsigned int nelec = cell->getNumElectrodes(); for (unsigned int i=0;i<nelec;i++) { - const EMBHVElectrodeConstLink electrode = cell->getElectrode(i); - for (unsigned int igap=0;igap<2;igap++) hv.insert(electrode->hvLineNo(igap)); + const EMBHVElectrode& electrode = cell->getElectrode(i); + for (unsigned int igap=0;igap<2;igap++) hv.insert(electrode.hvLineNo(igap)); } } else { // LAr EMEC const EMECDetectorElement* emecElement = dynamic_cast<const EMECDetectorElement*>(m_calodetdescrmgr->get_element(id)); diff --git a/LArCalorimeter/LArCafJobs/src/LArNoiseBursts.cxx b/LArCalorimeter/LArCafJobs/src/LArNoiseBursts.cxx index 078f9ff0439bc2bd6e455369991ca63970dc93b2..f273ce47731efe83ecdefb35d5715e015cd55d94 100644 --- a/LArCalorimeter/LArCafJobs/src/LArNoiseBursts.cxx +++ b/LArCalorimeter/LArCafJobs/src/LArNoiseBursts.cxx @@ -50,7 +50,6 @@ #include "CaloDetDescr/CaloDetDescrManager.h" #include "CaloDetDescr/CaloDetectorElements.h" #include "LArReadoutGeometry/EMBCell.h" -#include "LArHV/EMBHVElectrodeConstLink.h" #include "LArHV/EMBHVElectrode.h" #include "LArHV/EMBPresamplerHVModuleConstLink.h" #include "LArHV/EMBPresamplerHVModule.h" @@ -1389,8 +1388,8 @@ std::vector<int>* LArNoiseBursts::GetHVLines(const Identifier& id) nelec = cell->getNumElectrodes(); //ngap = 2*nelec; for(i=0;i<nelec;i++) { - const EMBHVElectrodeConstLink electrode = cell->getElectrode(i); - for(igap=0;igap<2;igap++) tmplines.push_back(electrode->hvLineNo(igap)); + const EMBHVElectrode& electrode = cell->getElectrode(i); + for(igap=0;igap<2;igap++) tmplines.push_back(electrode.hvLineNo(igap)); } } else { // LAr EMEC ATH_MSG_DEBUG ( "LAr EMEC"); diff --git a/LArCalorimeter/LArCondUtils/src/LArHV2Ntuple.cxx b/LArCalorimeter/LArCondUtils/src/LArHV2Ntuple.cxx index 542b5b4c5fd15199dbe0d02490ac0123dfff8129..5fa30e3ed5944bc1dca4ac1b71c3262125580677 100644 --- a/LArCalorimeter/LArCondUtils/src/LArHV2Ntuple.cxx +++ b/LArCalorimeter/LArCondUtils/src/LArHV2Ntuple.cxx @@ -9,9 +9,7 @@ #include "LArHV/LArHVManager.h" #include "LArHV/EMBHVManager.h" #include "LArHV/EMBHVModule.h" -#include "LArHV/EMBHVModuleConstLink.h" #include "LArHV/EMBHVElectrode.h" -#include "LArHV/EMBHVElectrodeConstLink.h" #include "LArHV/EMECHVManager.h" #include "LArHV/EMECHVModule.h" #include "LArHV/EMECHVModuleConstLink.h" @@ -128,19 +126,19 @@ const LArHVManager *manager = NULL; if (detStore()->retrieve(manager)==StatusCode::SUCCESS) { - const EMBHVManager* hvManager_EMB=manager->getEMBHVManager(); - for (unsigned int iSide=hvManager_EMB->beginSideIndex();iSide<hvManager_EMB->endSideIndex();iSide++) { // loop over HV modules - for (unsigned int iPhi=hvManager_EMB->beginPhiIndex();iPhi<hvManager_EMB->endPhiIndex();iPhi++) { - for (unsigned int iSector=hvManager_EMB->beginSectorIndex();iSector<hvManager_EMB->endSectorIndex();iSector++) { - for (unsigned int iEta=hvManager_EMB->beginEtaIndex();iEta<hvManager_EMB->endEtaIndex();iEta++) { //0 to 7 - EMBHVModuleConstLink hvMod = hvManager_EMB->getHVModule(iSide,iEta,iPhi,iSector); - float eta=0.5*(hvMod->getEtaMin()+hvMod->getEtaMax()); + const EMBHVManager& hvManager_EMB=manager->getEMBHVManager(); + for (unsigned int iSide=hvManager_EMB.beginSideIndex();iSide<hvManager_EMB.endSideIndex();iSide++) { // loop over HV modules + for (unsigned int iPhi=hvManager_EMB.beginPhiIndex();iPhi<hvManager_EMB.endPhiIndex();iPhi++) { + for (unsigned int iSector=hvManager_EMB.beginSectorIndex();iSector<hvManager_EMB.endSectorIndex();iSector++) { + for (unsigned int iEta=hvManager_EMB.beginEtaIndex();iEta<hvManager_EMB.endEtaIndex();iEta++) { //0 to 7 + const EMBHVModule& hvMod = hvManager_EMB.getHVModule(iSide,iEta,iPhi,iSector); + float eta=0.5*(hvMod.getEtaMin()+hvMod.getEtaMax()); for (unsigned int ielec=0;ielec<32;ielec++) { //use hvMod->getNumElectrodes when bug is corrected - EMBHVElectrodeConstLink electrode = hvMod->getElectrode(ielec); + const EMBHVElectrode& electrode = hvMod.getElectrode(ielec); for (unsigned int iGap=0;iGap<2;iGap++) { // EMB : 2, TRY TO FIND AUTOMATICALLY NB OF GAPS - float hv=electrode->voltage(iGap); - float current = electrode->current(iGap); - float phi = electrode->getPhi(); + float hv=electrode.voltage(iGap); + float current = electrode.current(iGap); + float phi = electrode.getPhi(); m_bec=0; m_isPresampler=0; @@ -150,7 +148,7 @@ m_gap = iGap; m_hv = hv; m_current= current; - m_hvline = electrode->hvLineNo(iGap); + m_hvline = electrode.hvLineNo(iGap); if(m_addcells) { for(unsigned i=0; i<m_hvonlId_map[m_hvline].size(); ++i) { @@ -442,8 +440,8 @@ std::vector<int> LArHV2Ntuple::GetHVLines(const Identifier& id) { const EMBCellConstLink cell = embElement->getEMBCell(); unsigned int nelec = cell->getNumElectrodes(); for (unsigned int i=0;i<nelec;i++) { - const EMBHVElectrodeConstLink electrode = cell->getElectrode(i); - for (unsigned int igap=0;igap<2;igap++) hv.insert(electrode->hvLineNo(igap)); + const EMBHVElectrode& electrode = cell->getElectrode(i); + for (unsigned int igap=0;igap<2;igap++) hv.insert(electrode.hvLineNo(igap)); } } else { // LAr EMEC const EMECDetectorElement* emecElement = dynamic_cast<const EMECDetectorElement*>(m_calodetdescrmgr->get_element(id)); diff --git a/LArCalorimeter/LArCondUtils/src/LArHVPathologyDbAlg.cxx b/LArCalorimeter/LArCondUtils/src/LArHVPathologyDbAlg.cxx index c29feabc0535d994338d03aedb5248d6c7b387e2..1a7a9652e81aebee80f86f86d9800b46fe50c38c 100644 --- a/LArCalorimeter/LArCondUtils/src/LArHVPathologyDbAlg.cxx +++ b/LArCalorimeter/LArCondUtils/src/LArHVPathologyDbAlg.cxx @@ -19,7 +19,6 @@ #include "CaloDetDescr/CaloDetectorElements.h" #include "LArReadoutGeometry/EMBCell.h" #include "LArHV/EMBHVElectrode.h" -#include "LArHV/EMBHVElectrodeConstLink.h" #include "LArHV/EMBPresamplerHVModuleConstLink.h" #include "LArHV/EMBPresamplerHVModule.h" #include "LArReadoutGeometry/EMECCell.h" @@ -360,9 +359,9 @@ std::vector<unsigned int> LArHVPathologyDbAlg::getElectInd(const Identifier & id const EMBCellConstLink cell = embElement->getEMBCell(); unsigned int nelec = cell->getNumElectrodes(); for (unsigned int i=0;i<nelec;i++) { - const EMBHVElectrodeConstLink electrode = cell->getElectrode(i); + const EMBHVElectrode& electrode = cell->getElectrode(i); for (unsigned int igap=0;igap<2;igap++) { - if (electrode->hvLineNo(igap)==HVline) { + if (electrode.hvLineNo(igap)==HVline) { list.push_back(2*i+igap); } } @@ -459,7 +458,7 @@ int LArHVPathologyDbAlg::getHVline(const Identifier & id, short unsigned int Ele msg(MSG::ERROR) << "Wrong electrode number " << ielec << " for cell "<< id.get_identifier32().get_compact() <<endmsg; return -1; } else { - return cell->getElectrode(ielec)->hvLineNo(igap); + return cell->getElectrode(ielec).hvLineNo(igap); } } } diff --git a/LArCalorimeter/LArCondUtils/src/LArHVToolDB.cxx b/LArCalorimeter/LArCondUtils/src/LArHVToolDB.cxx index cd4a771a8105429e3dba0cbf2bf25f06885936bf..81ea7e8b4d692bdf8e8cc15020a90822ba6ca091 100755 --- a/LArCalorimeter/LArCondUtils/src/LArHVToolDB.cxx +++ b/LArCalorimeter/LArCondUtils/src/LArHVToolDB.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration */ #include "LArHVToolDB.h" @@ -14,7 +14,6 @@ #include "CaloIdentifier/CaloIdManager.h" #include "CaloDetDescr/CaloDetDescrManager.h" #include "LArReadoutGeometry/EMBCell.h" -#include "LArHV/EMBHVElectrodeConstLink.h" #include "LArHV/EMBHVElectrode.h" #include "LArHV/EMBPresamplerHVModuleConstLink.h" #include "LArHV/EMBPresamplerHVModule.h" @@ -322,14 +321,14 @@ StatusCode LArHVToolDB::getPayload(const Identifier& id, std::vector< HV_t > & v unsigned int ngap = 2*nelec; double wt = 1./ngap; for (unsigned int i=0;i<nelec;i++) { - const EMBHVElectrodeConstLink electrode = cell->getElectrode(i); + const EMBHVElectrode& electrode = cell->getElectrode(i); //std::cout << "electrode: endcap index, eta index , phi index, sector index , electrode index " << electrode->getModule()->getSideIndex() << // " " << electrode->getModule()->getEtaIndex() << " " << electrode->getModule()->getPhiIndex() << // " " << electrode->getModule()->getSectorIndex() << " " << electrode->getElectrodeIndex() << std::endl; for (unsigned int igap=0;igap<2;igap++) { double hv; double curr; - electrode->voltage_current(igap,hv,curr); + electrode.voltage_current(igap,hv,curr); if (hasPathology) { msg(MSG::DEBUG) << "Has pathology for id: "<< m_larem_id->print_to_string(id)<<" "<<m_hasPathologyEM[index]<<endmsg; msg(MSG::DEBUG) << "Original hv: "<<hv<<" "; diff --git a/LArCalorimeter/LArG4/LArG4Barrel/src/LArBarrelCalculator.cxx b/LArCalorimeter/LArG4/LArG4Barrel/src/LArBarrelCalculator.cxx index 45f4bb0ccca9095e56100e22ae35878aaac294fd..80466c2a7dce9dd1c6fcdf742f92da67a100d0b2 100644 --- a/LArCalorimeter/LArG4/LArG4Barrel/src/LArBarrelCalculator.cxx +++ b/LArCalorimeter/LArG4/LArG4Barrel/src/LArBarrelCalculator.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration */ // The Cell Identifier for the EM Barrel readout cells @@ -42,9 +42,7 @@ #include "LArHV/LArHVManager.h" #include "LArHV/EMBHVManager.h" #include "LArHV/EMBHVModule.h" -#include "LArHV/EMBHVModuleConstLink.h" #include "LArHV/EMBHVElectrode.h" -#include "LArHV/EMBHVElectrodeConstLink.h" namespace Units = Athena::Units; @@ -701,19 +699,19 @@ void LArBarrelCalculator::InitHV() // get EMBHV Manager const LArHVManager *manager = nullptr; if (pDetStore->retrieve(manager)==StatusCode::SUCCESS) { - const EMBHVManager* hvManager=manager->getEMBHVManager(); + const EMBHVManager& hvManager=manager->getEMBHVManager(); ATH_MSG_INFO(" got HV Manager "); // loop over HV modules for (unsigned int iSide=0;iSide<2;iSide++) { for (unsigned int iPhi=0;iPhi<16;iPhi++) { for (unsigned int iSector=0;iSector<2;iSector++) { for (unsigned int iEta=0;iEta<7;iEta++) { - EMBHVModuleConstLink hvMod = hvManager->getHVModule(iSide,iEta+1,iPhi,iSector); + const EMBHVModule& hvMod = hvManager.getHVModule(iSide,iEta+1,iPhi,iSector); for (unsigned int ielec=0;ielec<32;ielec++) { - EMBHVElectrodeConstLink electrode = hvMod->getElectrode(ielec); + const EMBHVElectrode& electrode = hvMod.getElectrode(ielec); unsigned jElec = ielec+32*iSector+64*iPhi; for (unsigned int iGap=0;iGap<2;iGap++) { - double hv = electrode->voltage(iGap); + double hv = electrode.voltage(iGap); ATH_MSG_DEBUG(" iSide,jElec,iEta,iGap,hv " << iSide << " " << jElec << " " << iEta << " " << iGap << " " << hv); if (hv>-999.) m_hv[iSide][jElec][iEta][iGap] = hv; } diff --git a/LArCalorimeter/LArGeoModel/LArGeoAlgsNV/src/LArDetectorFactory.cxx b/LArCalorimeter/LArGeoModel/LArGeoAlgsNV/src/LArDetectorFactory.cxx index cc101e02c612ffd8535a3dbd9d6ef639422bee08..6924f5d551c196efa808688e3f15ce1a441302a1 100755 --- a/LArCalorimeter/LArGeoModel/LArGeoAlgsNV/src/LArDetectorFactory.cxx +++ b/LArCalorimeter/LArGeoModel/LArGeoAlgsNV/src/LArDetectorFactory.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration */ #include "LArDetectorFactory.h" @@ -53,15 +53,18 @@ #include "LArReadoutGeometry/EMBDetectorRegion.h" #include "LArReadoutGeometry/EMBDetDescr.h" -LArGeo::LArDetectorFactory::LArDetectorFactory(int testbeam,bool fullGeo) - : m_detectorManager(), - m_barrelSagging(false), - m_barrelVisLimit(-1), - m_fcalVisLimit(-1), - m_buildBarrel(true), - m_buildEndcap(true), - m_testbeam(testbeam), - m_fullGeo(fullGeo) +#include "LArHV/LArHVManager.h" + +LArGeo::LArDetectorFactory::LArDetectorFactory(int testbeam,bool fullGeo, const LArHVManager* hvManager) + : m_detectorManager(nullptr) + , m_hvManager(hvManager) + , m_barrelSagging(false) + , m_barrelVisLimit(-1) + , m_fcalVisLimit(-1) + , m_buildBarrel(true) + , m_buildEndcap(true) + , m_testbeam(testbeam) + , m_fullGeo(fullGeo) {} @@ -535,7 +538,7 @@ void LArGeo::LArDetectorFactory::create( GeoPhysVol* a_container ) try { - embDetectorManager = new EMBDetectorManager(); + embDetectorManager = new EMBDetectorManager(m_hvManager->getEMBHVManager()); int firstEndcap=m_testbeam==0 ? 0:1, endEndcap=2; for (int e= firstEndcap ;e<endEndcap;e++) { diff --git a/LArCalorimeter/LArGeoModel/LArGeoAlgsNV/src/LArDetectorFactory.h b/LArCalorimeter/LArGeoModel/LArGeoAlgsNV/src/LArDetectorFactory.h index 78f814b3bc419bbafb8337d5d58f63eb40e80a32..2bf603e08715092c3fdfc37c19fa48621c1ab393 100755 --- a/LArCalorimeter/LArGeoModel/LArGeoAlgsNV/src/LArDetectorFactory.h +++ b/LArCalorimeter/LArGeoModel/LArGeoAlgsNV/src/LArDetectorFactory.h @@ -1,11 +1,15 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration */ /** * @file LArDetectorFactory.h * - * @brief Declaration of LArDetectorFactory class + * @class LArGeo::LArDetectorFactory + * + * @brief LArDetectorFactory builds GeoModel description of LAr calorimeter by calling + * relevant 'Construction' classes (Barrel, Endcap). It also builds readout geometry + * description using LArReadoutGeometry objects. * * $Id: LArDetectorFactory.h,v 1.4 2009-02-10 16:43:17 tsulaia Exp $ */ @@ -15,19 +19,16 @@ #include "LArReadoutGeometry/LArDetectorManager.h" #include "GeoModelKernel/GeoVDetectorFactory.h" +class LArHVManager; + namespace LArGeo { - /** @class LArGeo::LArDetectorFactory - @brief LArDetectorFactory builds GeoModel description of LAr calorimeter by calling - relevant 'Construction' classes (Barrel, Endcap). It also builds readout geometry - description using LArReadoutGeometry objects. - */ class LArDetectorFactory : public GeoVDetectorFactory { public: // Constructor: - LArDetectorFactory(int testbeam, bool fullGeo); + LArDetectorFactory(int testbeam, bool fullGeo, const LArHVManager* hvManager); // Destructor: virtual ~LArDetectorFactory(); @@ -56,6 +57,7 @@ namespace LArGeo { // The manager: LArDetectorManager* m_detectorManager; + const LArHVManager* m_hvManager; bool m_barrelSagging; int m_barrelVisLimit; int m_fcalVisLimit; diff --git a/LArCalorimeter/LArGeoModel/LArGeoAlgsNV/src/LArDetectorTool.cxx b/LArCalorimeter/LArGeoModel/LArGeoAlgsNV/src/LArDetectorTool.cxx index 543e3dfce57e36a3403a2e5aee05852dc8dfa120..97b96c5cd0a19b722260c61a9ae7099f1cc2d8e5 100755 --- a/LArCalorimeter/LArGeoModel/LArGeoAlgsNV/src/LArDetectorTool.cxx +++ b/LArCalorimeter/LArGeoModel/LArGeoAlgsNV/src/LArDetectorTool.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration */ #include "LArReadoutGeometry/FCAL_ChannelMap.h" @@ -28,7 +28,6 @@ #include "GeoModelUtilities/StoredPhysVol.h" #include "GeoModelKernel/GeoFullPhysVol.h" #include "LArHV/LArHVManager.h" -#include "LArHV/EMBHVManager.h" #include "LArHV/EMECHVManager.h" #include "LArHV/HECHVManager.h" #include "LArHV/FCALHVManager.h" @@ -74,7 +73,6 @@ LArDetectorToolNV::~LArDetectorToolNV() StatusCode LArDetectorToolNV::create() { // Initialize the HV System: - const EMBHVManager *embHV=new EMBHVManager(); const EMECHVManager *emecHVI= new EMECHVManager(EMECHVModule::INNER); const EMECHVManager *emecHVO= new EMECHVManager(EMECHVModule::OUTER); const HECHVManager *hecHV = new HECHVManager(); @@ -82,7 +80,7 @@ StatusCode LArDetectorToolNV::create() const EMBPresamplerHVManager *embPSHV = new EMBPresamplerHVManager(); const EMECPresamplerHVManager *emecPSHV = new EMECPresamplerHVManager(); - LArHVManager *hvManager= new LArHVManager(embHV,emecHVI, emecHVO, hecHV, fcalHV,embPSHV, emecPSHV); + LArHVManager *hvManager= new LArHVManager(emecHVI, emecHVO, hecHV, fcalHV,embPSHV, emecPSHV); ATH_CHECK(detStore()->record(hvManager,"LArHVManager")); @@ -158,7 +156,7 @@ StatusCode LArDetectorToolNV::create() geometryLayout = "G3"; } - LArGeo::LArDetectorFactory theLArFactory(testbeam,m_geometryConfig=="FULL"); + LArGeo::LArDetectorFactory theLArFactory(testbeam,m_geometryConfig=="FULL",hvManager); theLArFactory.setBarrelSagging (m_barrelSaggingOn); theLArFactory.setBarrelCellVisLimit (m_barrelVisLimit); diff --git a/LArCalorimeter/LArGeoModel/LArHV/LArHV/EMBHVElectrode.h b/LArCalorimeter/LArGeoModel/LArHV/LArHV/EMBHVElectrode.h index 38c3c31b0cf659ef14a66dd9ce1e2e73db75494d..843bf16901fd297fe67f8d856db400c40187f8b4 100644 --- a/LArCalorimeter/LArGeoModel/LArHV/LArHV/EMBHVElectrode.h +++ b/LArCalorimeter/LArGeoModel/LArHV/LArHV/EMBHVElectrode.h @@ -1,29 +1,27 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration */ -#ifndef EMBHVELECTRODE_H_HEADER_INCLUDED_D823FBB9 -#define EMBHVELECTRODE_H_HEADER_INCLUDED_D823FBB9 -#include "GeoModelKernel/RCBase.h" -#include "LArHV/EMBHVModuleConstLink.h" -// -//##ModelId=475696070335 -class EMBHVElectrode : public RCBase +#ifndef LARHV_EMBHVELECTRODE_H +#define LARHV_EMBHVELECTRODE_H + +class EMBHVModule; + +class EMBHVElectrode { public: // Constructor - //##ModelId=475697F20323 - EMBHVElectrode(EMBHVModuleConstLink module, unsigned int iElectrode); + EMBHVElectrode(const EMBHVModule* module, unsigned int iElectrode); + + // Destructor + virtual ~EMBHVElectrode(); // Returns the index of this electrode. - //##ModelId=4756987F0395 unsigned int getElectrodeIndex() const; // returns a pointer to the module that owns this electrode. - //##ModelId=479BCD0B039F - EMBHVModuleConstLink getModule() const; + const EMBHVModule& getModule() const; - //##ModelId=47AA6C740007 double getPhi() const; // HV Status @@ -43,22 +41,14 @@ class EMBHVElectrode : public RCBase private: - // Destructor - //##ModelId=475697F20382 - virtual ~EMBHVElectrode(); - // Illegal operation - //##ModelId=475697F20337 EMBHVElectrode(const EMBHVElectrode& right); // Illegal operation - //##ModelId=475697F203A5 EMBHVElectrode& operator=(const EMBHVElectrode& right); class Clockwork; Clockwork *m_c; }; - - -#endif /* EMBHVELECTRODE_H_HEADER_INCLUDED_D823FBB9 */ +#endif diff --git a/LArCalorimeter/LArGeoModel/LArHV/LArHV/EMBHVElectrodeConstLink.h b/LArCalorimeter/LArGeoModel/LArHV/LArHV/EMBHVElectrodeConstLink.h deleted file mode 100644 index bcb79b8f76f47551739e5052d2f931d3420ea31e..0000000000000000000000000000000000000000 --- a/LArCalorimeter/LArGeoModel/LArHV/LArHV/EMBHVElectrodeConstLink.h +++ /dev/null @@ -1,10 +0,0 @@ -/* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration -*/ - -#ifndef _EMBHVElectrodeConstLink_h_ -#define _EMBHVElectrodeConstLink_h_ -#include "GeoModelKernel/ConstLink.h" -class EMBHVElectrode; -typedef ConstLink<EMBHVElectrode> EMBHVElectrodeConstLink; -#endif diff --git a/LArCalorimeter/LArGeoModel/LArHV/LArHV/EMBHVManager.h b/LArCalorimeter/LArGeoModel/LArHV/LArHV/EMBHVManager.h index d52f2b9f4874d1397e7121a79b0db962b50d33ed..ce53939e4ac7f008071bc8294863a2ef6e31f8b6 100644 --- a/LArCalorimeter/LArGeoModel/LArHV/LArHV/EMBHVManager.h +++ b/LArCalorimeter/LArGeoModel/LArHV/LArHV/EMBHVManager.h @@ -1,76 +1,64 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration */ -#ifndef EMBHVMANAGER_H_HEADER_INCLUDED_EA5D07D1 -#define EMBHVMANAGER_H_HEADER_INCLUDED_EA5D07D1 +#ifndef LARHV_EMBHVMANAGER_H +#define LARHV_EMBHVMANAGER_H -#include "GeoModelKernel/RCBase.h" -#include "LArHV/EMBHVModuleConstLink.h" #include "LArHV/EMBHVModule.h" - -class EMBHVDescriptor; - - -// This class provides direct access to information on the HV -// electrodes within the barrels. The information may be accessed either -// directly or iteratively. Direct access is provided by the getHVModule() -// method. Iterative access -// is by looping over valid side, eta, phi, and sector indices to -// retrieve a HV module. From the high voltage modules one -// can obtain a list of electrodes (iteratively or directly). -// -//##ModelId=475306FC0255 +#include "LArHV/EMBHVDescriptor.h" struct EMBHVPayload; -class EMBHVManager : public RCBase +/** + * @class EMBHVManager + * + * @brief This class provides direct access to information on the HV + * electrodes within the barrels. The information may be accessed either + * directly or iteratively. Direct access is provided by the getHVModule() + * method. Iterative access + * is by looping over valid side, eta, phi, and sector indices to + * retrieve a HV module. From the high voltage modules one + * can obtain a list of electrodes (iteratively or directly). + */ + +class EMBHVManager { public: - // Constructor - //##ModelId=475533F70142 EMBHVManager(); - // Gets the descriptor. (Not generally for users but nothing to hide - // here). - //##ModelId=4755C0750375 - const EMBHVDescriptor *getDescriptor() const; + // Destructor + virtual ~EMBHVManager(); + + // Gets the descriptor. (Not generally for users but nothing to hide here). + const EMBHVDescriptor& getDescriptor() const; // Begin phi index - //##ModelId=4755C07E0225 unsigned int beginPhiIndex() const; // End phi index - //##ModelId=4755C08F02F7 unsigned int endPhiIndex() const; // Begin eta index - //##ModelId=4755C094026E unsigned int beginEtaIndex() const; // End eta index - //##ModelId=4755C09A015F unsigned int endEtaIndex() const; // Begin sector index - //##ModelId=479B66510283 unsigned int beginSectorIndex() const; // End sector index - //##ModelId=479B66510295 unsigned int endSectorIndex() const; // Returns a high voltage module - //##ModelId=4755C0A200A6 - EMBHVModuleConstLink getHVModule(unsigned int iSide, unsigned int iEta, unsigned int iPhi, unsigned int iSector) const; + const EMBHVModule& getHVModule(unsigned int iSide, unsigned int iEta, unsigned int iPhi, unsigned int iSector) const; // Begin side index (0=negative and 1= positive) - //##ModelId=479BB7670398 unsigned int beginSideIndex() const; // End side index (0=negative and 1= positive) - //##ModelId=479BB76703AB unsigned int endSideIndex() const; // Refresh from the database if needed @@ -83,24 +71,15 @@ class EMBHVManager : public RCBase EMBHVPayload *getPayload(const EMBHVElectrode &) const; private: - // Destructor - //##ModelId=475533F7019B - virtual ~EMBHVManager(); - // Illegal operation - //##ModelId=475533F70154 EMBHVManager(const EMBHVManager& right); // Illegal operation - //##ModelId=475533F701B8 EMBHVManager& operator=(const EMBHVManager& right); friend class ImaginaryFriend; class Clockwork; Clockwork *m_c; - }; - - -#endif /* EMBHVMANAGER_H_HEADER_INCLUDED_EA5D07D1 */ +#endif diff --git a/LArCalorimeter/LArGeoModel/LArHV/LArHV/EMBHVModule.h b/LArCalorimeter/LArGeoModel/LArHV/LArHV/EMBHVModule.h index 861bb225352574d72c304b974e727cfe2a34a113..befa10cc07d897891ebc54a48f715c1e5c5124c2 100644 --- a/LArCalorimeter/LArGeoModel/LArHV/LArHV/EMBHVModule.h +++ b/LArCalorimeter/LArGeoModel/LArHV/LArHV/EMBHVModule.h @@ -1,71 +1,54 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration */ -#ifndef EMBHVMODULE_H_HEADER_INCLUDED_C40C54F8 -#define EMBHVMODULE_H_HEADER_INCLUDED_C40C54F8 -#include "GeoModelKernel/RCBase.h" -#include "GeoModelKernel/ConstLink.h" -#include "LArHV/EMBHVElectrodeConstLink.h" +#ifndef LARHV_EMBHVMODULE_H +#define LARHV_EMBHVMODULE_H + class EMBHVManager; +class EMBHVElectrode; -//##ModelId=4753092700BA -class EMBHVModule : public RCBase +class EMBHVModule { public: - //##ModelId=475656A60228 - EMBHVModule(const EMBHVManager *manager, unsigned int iSide, unsigned int iEta, unsigned int iPhi, unsigned int iSector); + EMBHVModule(const EMBHVManager *manager + , unsigned int iSide + , unsigned int iEta + , unsigned int iPhi + , unsigned int iSector); + + // Destructor + virtual ~EMBHVModule(); // Get eta Index - //##ModelId=475659560392 unsigned int getEtaIndex() const; // Get phi index - //##ModelId=4756597E0324 unsigned int getPhiIndex() const; // Get sector index - //##ModelId=479B9A7301DC unsigned int getSectorIndex() const; // Get num electrodes - //##ModelId=4756967601F7 unsigned int getNumElectrodes() const { return 64; } // Gets an electrode - //##ModelId=475696D40106 - EMBHVElectrodeConstLink getElectrode(unsigned int iElectrode) const; + const EMBHVElectrode& getElectrode(unsigned int iElectrode) const; + // Side Index (0=Negative, 1=Positive) - //##ModelId=479BBABD034D unsigned int getSideIndex() const; - //##ModelId=47AA68EE020D - double getEtaMin() const; - - //##ModelId=47AA68EE0223 + double getEtaMin() const; double getEtaMax() const; - - - //##ModelId=47AA68EE0236 double getPhiMin() const; - - - //##ModelId=47AA68EE024B double getPhiMax() const; - //##ModelId=47AB6F3600D2 - const EMBHVManager *getManager() const; - + const EMBHVManager& getManager() const; private: - // Destructor - //##ModelId=475656A60278 - virtual ~EMBHVModule(); - - // Illegal operation EMBHVModule& operator=(const EMBHVModule& right); // Illegal operation @@ -75,8 +58,6 @@ class EMBHVModule : public RCBase Clockwork *m_c; friend class ImaginaryFriend; - - }; -#endif /* EMBHVMODULE_H_HEADER_INCLUDED_C40C54F8 */ +#endif diff --git a/LArCalorimeter/LArGeoModel/LArHV/LArHV/EMBHVModuleConstLink.h b/LArCalorimeter/LArGeoModel/LArHV/LArHV/EMBHVModuleConstLink.h deleted file mode 100644 index 3c623bb0fb4256994af8fb29063690833884eab4..0000000000000000000000000000000000000000 --- a/LArCalorimeter/LArGeoModel/LArHV/LArHV/EMBHVModuleConstLink.h +++ /dev/null @@ -1,10 +0,0 @@ -/* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration -*/ - -#ifndef _EMBHVModuleConstLink_h_ -#define _EMBHVModuleConstLink_h_ -#include "GeoModelKernel/ConstLink.h" -class EMBHVModule; -typedef ConstLink<EMBHVModule> EMBHVModuleConstLink; -#endif diff --git a/LArCalorimeter/LArGeoModel/LArHV/LArHV/LArHVManager.h b/LArCalorimeter/LArGeoModel/LArHV/LArHV/LArHVManager.h index 92a2da7791edb2270073baca7be3473bdae8a3cb..1f6df12200041dca8dd14c51621e174ae83cf15b 100644 --- a/LArCalorimeter/LArGeoModel/LArHV/LArHV/LArHVManager.h +++ b/LArCalorimeter/LArGeoModel/LArHV/LArHV/LArHVManager.h @@ -1,10 +1,10 @@ /* - Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration */ -#ifndef LARHVMANAGER_H_HEADER_INCLUDED_E73E3A24 -#define LARHVMANAGER_H_HEADER_INCLUDED_E73E3A24 -class EMBHVManager; +#ifndef LARHV_LARHVMANAGER_H +#define LARHV_LARHVMANAGER_H + class EMECHVManager; class HECHVManager; class FCALHVManager; @@ -12,31 +12,34 @@ class EMBPresamplerHVManager; class EMECPresamplerHVManager; #include "LArHV/EMECHVManager.h" +#include "LArHV/EMBHVManager.h" #include "IOVSvc/IOVSvc.h" #include "StoreGate/DataHandle.h" -// This class provides access to the High Voltage throughout the LAr. -// High voltage conditions can also be accessed through the readout -// Geometry, if appropriate. - +/** + * @class LArHVManager + * + * @brief This class provides access to the High Voltage throughout the LAr. + * High voltage conditions can also be accessed through the readout + * Geometry, if appropriate. + */ class LArHVManager { public: - typedef EMECHVManager::IOType IOType; // Constructor // - LArHVManager(const EMBHVManager *embHv, const EMECHVManager *emecHvInner, const EMECHVManager *emecHvOuter, const HECHVManager *hecHv, const FCALHVManager *fcalHv, const EMBPresamplerHVManager *embPreManager, const EMECPresamplerHVManager *emecPreManager); + LArHVManager(const EMECHVManager *emecHvInner, const EMECHVManager *emecHvOuter, const HECHVManager *hecHv, const FCALHVManager *fcalHv, const EMBPresamplerHVManager *embPreManager, const EMECPresamplerHVManager *emecPreManager); // Destructor virtual ~LArHVManager(); // Returns the EMBHVManager - const EMBHVManager *getEMBHVManager() const; + const EMBHVManager& getEMBHVManager() const; // Returns the Barrel Presampler Manager: const EMBPresamplerHVManager *getEMBPresamplerHVManager() const; @@ -64,7 +67,7 @@ class LArHVManager LArHVManager(const LArHVManager& right); - const EMBHVManager *m_embHV; + EMBHVManager m_embHV; const EMECHVManager *m_emecHVInner; const EMECHVManager *m_emecHVOuter; const HECHVManager *m_hecHV; diff --git a/LArCalorimeter/LArGeoModel/LArHV/src/EMBHVElectrode.cpp b/LArCalorimeter/LArGeoModel/LArHV/src/EMBHVElectrode.cpp index b3ee93a141e21621582d801d5e3322144e79311a..86968242fbd8b965042ea8c24734977fceacae3c 100644 --- a/LArCalorimeter/LArGeoModel/LArHV/src/EMBHVElectrode.cpp +++ b/LArCalorimeter/LArGeoModel/LArHV/src/EMBHVElectrode.cpp @@ -1,78 +1,67 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration */ #include "LArHV/EMBHVElectrode.h" -#include "LArHV/EMBHVModuleConstLink.h" -#include "LArHV/EMBHVModule.h" #include "LArHV/EMBHVManager.h" +#include "LArHV/EMBHVModule.h" #include <cmath> #include "EMBHVPayload.h" class EMBHVElectrode::Clockwork { - public: - - const EMBHVModule *module; - unsigned int iElectrode; - + Clockwork(const EMBHVModule* modulePtr, unsigned int electrode) + : module(modulePtr) + , iElectrode(electrode) + {} + const EMBHVModule* module; + unsigned int iElectrode; }; -//##ModelId=475697F20323 -EMBHVElectrode::EMBHVElectrode(EMBHVModuleConstLink module, unsigned int iElectrode) :m_c(new Clockwork) +EMBHVElectrode::EMBHVElectrode(const EMBHVModule* module, unsigned int iElectrode) + : m_c(new Clockwork(module,iElectrode)) { - m_c->module=&*module; - m_c->iElectrode=iElectrode; } - -//##ModelId=475697F20382 EMBHVElectrode::~EMBHVElectrode() { delete m_c; } -//##ModelId=479BCD0B039F -EMBHVModuleConstLink EMBHVElectrode::getModule() const +const EMBHVModule& EMBHVElectrode::getModule() const { - return m_c->module; + return *(m_c->module); } -//##ModelId=47AA6C740007 double EMBHVElectrode::getPhi() const { return m_c->module->getPhiMin()+m_c->iElectrode*2.0*M_PI/1024.0; } -//##ModelId=47AB8993017C bool EMBHVElectrode::hvOn(int iGap) const { - EMBHVPayload *payload = m_c->module->getManager()->getPayload(*this); - if (payload->voltage[iGap]<-9999) return false; - else return true; + EMBHVPayload *payload = m_c->module->getManager().getPayload(*this); + return (payload->voltage[iGap]>=-9999); } double EMBHVElectrode::voltage(int iGap) const { - EMBHVPayload *payload = m_c->module->getManager()->getPayload(*this); + EMBHVPayload *payload = m_c->module->getManager().getPayload(*this); return payload->voltage[iGap]; } double EMBHVElectrode::current(int iGap) const { - EMBHVPayload *payload = m_c->module->getManager()->getPayload(*this); + EMBHVPayload *payload = m_c->module->getManager().getPayload(*this); return payload->current[iGap]; } - int EMBHVElectrode::hvLineNo(int iGap) const { - EMBHVPayload *payload = m_c->module->getManager()->getPayload(*this); + EMBHVPayload *payload = m_c->module->getManager().getPayload(*this); return payload->hvLineNo[iGap]; } - - void EMBHVElectrode::voltage_current(int iGap,double& voltage, double¤t) const { - EMBHVPayload *payload = m_c->module->getManager()->getPayload(*this); + EMBHVPayload *payload = m_c->module->getManager().getPayload(*this); voltage = payload->voltage[iGap]; current = payload->current[iGap]; } diff --git a/LArCalorimeter/LArGeoModel/LArHV/src/EMBHVManager.cpp b/LArCalorimeter/LArGeoModel/LArHV/src/EMBHVManager.cpp index d6faddbe9bb0da04651268b51496f18bc550e7f7..f30ee76a454c5e2e3251301a1d1cb4d1c096667a 100644 --- a/LArCalorimeter/LArGeoModel/LArHV/src/EMBHVManager.cpp +++ b/LArCalorimeter/LArGeoModel/LArHV/src/EMBHVManager.cpp @@ -1,9 +1,9 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration */ #include "LArHV/EMBHVManager.h" -#include "LArHV/EMBHVDescriptor.h" +#include "LArHV/EMBHVModule.h" #include "LArHV/EMBHVElectrode.h" #include "GeoModelKernel/CellBinning.h" #include <cmath> @@ -29,62 +29,74 @@ class EMBHVManager::Clockwork { public: - Clockwork() {}; + Clockwork(const EMBHVManager* manager) { + for(int iSide=0; iSide<2; ++iSide) { + for(int iEta=0; iEta<8; ++iEta) { + for(int iPhi=0; iPhi<16; ++iPhi) { + for(int iSector=0; iSector<2; ++iSector) { + moduleArray[iSide][iEta][iPhi][iSector] = new EMBHVModule(manager,iSide,iEta,iPhi,iSector); + } + } + } + } + } Clockwork(const Clockwork&) = delete; - EMBHVDescriptor *descriptor; - EMBHVModuleConstLink linkArray[2][8][16][2]; + ~Clockwork() { + for(int iSide=0; iSide<2; ++iSide) { + for(int iEta=0; iEta<8; ++iEta) { + for(int iPhi=0; iPhi<16; ++iPhi) { + for(int iSector=0; iSector<2; ++iSector) { + delete moduleArray[iSide][iEta][iPhi][iSector]; + } + } + } + } + } + EMBHVDescriptor descriptor{CellBinning(0.0, 1.4, 7, 1),CellBinning(0.0, 2*M_PI, 16)}; + const EMBHVModule* moduleArray[2][8][16][2]; std::atomic<bool> init{false}; std::mutex mtx; std::vector<EMBHVPayload> payloadArray; }; - - - - EMBHVManager::EMBHVManager() -:m_c(new Clockwork) + : m_c(new Clockwork(this)) { - m_c->descriptor = new EMBHVDescriptor(CellBinning(0.0, 1.4, 7, 1),CellBinning(0.0, 2*M_PI, 16)); - m_c->init=false; } - EMBHVManager::~EMBHVManager() { - delete m_c->descriptor; delete m_c; } -const EMBHVDescriptor *EMBHVManager::getDescriptor() const +const EMBHVDescriptor& EMBHVManager::getDescriptor() const { return m_c->descriptor; } unsigned int EMBHVManager::beginPhiIndex() const { - return m_c->descriptor->getPhiBinning().getFirstDivisionNumber(); + return m_c->descriptor.getPhiBinning().getFirstDivisionNumber(); } unsigned int EMBHVManager::endPhiIndex() const { - return m_c->descriptor->getPhiBinning().getFirstDivisionNumber() + m_c->descriptor->getPhiBinning().getNumDivisions(); + return m_c->descriptor.getPhiBinning().getFirstDivisionNumber() + m_c->descriptor.getPhiBinning().getNumDivisions(); } unsigned int EMBHVManager::beginEtaIndex() const { - return m_c->descriptor->getEtaBinning().getFirstDivisionNumber(); + return m_c->descriptor.getEtaBinning().getFirstDivisionNumber(); } unsigned int EMBHVManager::endEtaIndex() const { - return m_c->descriptor->getEtaBinning().getFirstDivisionNumber() + m_c->descriptor->getEtaBinning().getNumDivisions(); + return m_c->descriptor.getEtaBinning().getFirstDivisionNumber() + m_c->descriptor.getEtaBinning().getNumDivisions(); } -EMBHVModuleConstLink EMBHVManager::getHVModule(unsigned int iSide, unsigned int iEta,unsigned int iPhi, unsigned int iSector) const +const EMBHVModule& EMBHVManager::getHVModule(unsigned int iSide, unsigned int iEta,unsigned int iPhi, unsigned int iSector) const { - if (!m_c->linkArray[iSide][iEta][iPhi][iSector]) m_c->linkArray[iSide][iEta][iPhi][iSector] = EMBHVModuleConstLink(new EMBHVModule(this, iSide, iEta,iPhi,iSector)); - return m_c->linkArray[iSide][iEta][iPhi][iSector]; + return *(m_c->moduleArray[iSide][iEta][iPhi][iSector]); } unsigned int EMBHVManager::beginSectorIndex() const @@ -254,12 +266,12 @@ void EMBHVManager::update() const { EMBHVPayload *EMBHVManager::getPayload(const EMBHVElectrode &electrode) const { update(); unsigned int electrodeIndex = electrode.getElectrodeIndex(); - EMBHVModuleConstLink module = electrode.getModule(); - unsigned int etaIndex = module->getEtaIndex(); - unsigned int phiIndex = module->getPhiIndex(); - unsigned int sectorIndex = module->getSectorIndex(); - unsigned int sideIndex = module->getSideIndex(); - unsigned int index = 8192*sideIndex+1024*etaIndex+64*phiIndex+32*sectorIndex+electrodeIndex; + const EMBHVModule& module = electrode.getModule(); + unsigned int etaIndex = module.getEtaIndex(); + unsigned int phiIndex = module.getPhiIndex(); + unsigned int sectorIndex = module.getSectorIndex(); + unsigned int sideIndex = module.getSideIndex(); + unsigned int index = 8192*sideIndex+1024*etaIndex+64*phiIndex+32*sectorIndex+electrodeIndex; return &m_c->payloadArray[index]; } diff --git a/LArCalorimeter/LArGeoModel/LArHV/src/EMBHVModule.cpp b/LArCalorimeter/LArGeoModel/LArHV/src/EMBHVModule.cpp index d1d90ece59612cac6c871b46ac3b0a06fdf14c6c..b74e80bf7383f4a7edf7d14d10c4d41f7ef10fe9 100644 --- a/LArCalorimeter/LArGeoModel/LArHV/src/EMBHVModule.cpp +++ b/LArCalorimeter/LArGeoModel/LArHV/src/EMBHVModule.cpp @@ -1,122 +1,117 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration */ -#include "LArHV/EMBHVElectrode.h" #include "LArHV/EMBHVModule.h" #include "LArHV/EMBHVManager.h" #include "LArHV/EMBHVDescriptor.h" -class EMBHVModule::Clockwork { +#include "LArHV/EMBHVElectrode.h" +class EMBHVModule::Clockwork { public: - - const EMBHVManager * manager; - + Clockwork(const EMBHVManager* managerPtr + , const EMBHVModule* modulePtr + , unsigned int side + , unsigned int eta + , unsigned int phi + , unsigned int sector) + : manager(managerPtr) + , iSide(side) + , iEta(eta) + , iPhi(phi) + , iSector(sector) { + for(int i=0; i<64; ++i) { + electrodes[i] = new EMBHVElectrode(modulePtr,i); + } + } + ~Clockwork() { + for(int i=0; i<64; ++i) { + delete electrodes[i]; + } + } + const EMBHVManager* manager; unsigned int iSide; - unsigned int iEta; - unsigned int iPhi; - unsigned int iSector; - - EMBHVElectrodeConstLink links[64]; - + const EMBHVElectrode* electrodes[64]; }; -//##ModelId=475656A60228 -EMBHVModule::EMBHVModule(const EMBHVManager *manager, unsigned int iSide, unsigned int iEta, unsigned int iPhi, unsigned int iSector):m_c(new Clockwork) +EMBHVModule::EMBHVModule(const EMBHVManager* manager + , unsigned int iSide + , unsigned int iEta + , unsigned int iPhi + , unsigned int iSector) + : m_c(new Clockwork(manager,this,iSide,iEta,iPhi,iSector)) { - // Might need to ref the manager here.?? - m_c->manager=manager; - m_c->iSide=iSide; - m_c->iEta=iEta; - m_c->iPhi=iPhi; - m_c->iSector=iSector; - for (int i=0;i<64;i++) m_c->links[i]=0; } - -//##ModelId=475659560392 unsigned int EMBHVModule::getEtaIndex() const { return m_c->iEta; } -//##ModelId=4756597E0324 unsigned int EMBHVModule::getPhiIndex() const { return m_c->iPhi; } -//##ModelId=479B9A7301DC unsigned int EMBHVModule::getSectorIndex() const { return m_c->iSector; } -//##ModelId=475656A60278 EMBHVModule::~EMBHVModule() { delete m_c; } - -//##ModelId=475696D40106 -EMBHVElectrodeConstLink EMBHVModule::getElectrode(unsigned int iElectrode) const +const EMBHVElectrode& EMBHVModule::getElectrode(unsigned int iElectrode) const { - if (!m_c->links[iElectrode]) m_c->links[iElectrode] = EMBHVElectrodeConstLink (new EMBHVElectrode(this,iElectrode)); - return m_c->links[iElectrode]; + return *(m_c->electrodes[iElectrode]); } -//##ModelId=479BBABD034D unsigned int EMBHVModule::getSideIndex() const { return m_c->iSide; } -//##ModelId=47AA68EE020D double EMBHVModule::getEtaMin() const { if (m_c->iSide==0) { - return -m_c->manager->getDescriptor()->getEtaBinning().binUpper(m_c->iEta); + return -m_c->manager->getDescriptor().getEtaBinning().binUpper(m_c->iEta); } else { - return m_c->manager->getDescriptor()->getEtaBinning().binLower(m_c->iEta); + return m_c->manager->getDescriptor().getEtaBinning().binLower(m_c->iEta); } } -//##ModelId=47AA68EE0223 double EMBHVModule::getEtaMax() const { if (m_c->iSide==0) { - return -m_c->manager->getDescriptor()->getEtaBinning().binLower(m_c->iEta); + return -m_c->manager->getDescriptor().getEtaBinning().binLower(m_c->iEta); } else { - return m_c->manager->getDescriptor()->getEtaBinning().binUpper(m_c->iEta); + return m_c->manager->getDescriptor().getEtaBinning().binUpper(m_c->iEta); } } -//##ModelId=47AA68EE0236 double EMBHVModule::getPhiMin() const { return - m_c->manager->getDescriptor()->getPhiBinning().binLower(m_c->iPhi)+ - m_c->iSector*m_c->manager->getDescriptor()->getPhiBinning().getDelta()/2.0; + m_c->manager->getDescriptor().getPhiBinning().binLower(m_c->iPhi)+ + m_c->iSector*m_c->manager->getDescriptor().getPhiBinning().getDelta()/2.0; } -//##ModelId=47AA68EE024B double EMBHVModule::getPhiMax() const { return - m_c->manager->getDescriptor()->getPhiBinning().binLower(m_c->iPhi)+ - (m_c->iSector+1)*m_c->manager->getDescriptor()->getPhiBinning().getDelta()/2.0; + m_c->manager->getDescriptor().getPhiBinning().binLower(m_c->iPhi)+ + (m_c->iSector+1)*m_c->manager->getDescriptor().getPhiBinning().getDelta()/2.0; } - - -const EMBHVManager *EMBHVModule::getManager() const { - return m_c->manager; +const EMBHVManager& EMBHVModule::getManager() const { + return *(m_c->manager); } diff --git a/LArCalorimeter/LArGeoModel/LArHV/src/LArHVManager.cpp b/LArCalorimeter/LArGeoModel/LArHV/src/LArHVManager.cpp index a50cf6cb238f4388a810b024431ef037ad1e154b..6194b4429722695dfc7504afd09cbc4de5e65b8a 100644 --- a/LArCalorimeter/LArGeoModel/LArHV/src/LArHVManager.cpp +++ b/LArCalorimeter/LArGeoModel/LArHV/src/LArHVManager.cpp @@ -1,9 +1,8 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration */ #include "LArHV/LArHVManager.h" -#include "LArHV/EMBHVManager.h" #include "LArHV/EMECHVManager.h" #include "LArHV/HECHVManager.h" #include "LArHV/FCALHVManager.h" @@ -11,10 +10,20 @@ #include "LArHV/EMECPresamplerHVManager.h" #include "LArHV/LArHVManager.h" -LArHVManager::LArHVManager(const EMBHVManager *embHV, const EMECHVManager *emecHVInner, const EMECHVManager *emecHVOuter, const HECHVManager *hecHV, const FCALHVManager *fcalHV, const EMBPresamplerHVManager *embPreHV, const EMECPresamplerHVManager *emecPreHV): - m_embHV(embHV),m_emecHVInner(emecHVInner),m_emecHVOuter(emecHVOuter),m_hecHV(hecHV),m_fcalHV(fcalHV),m_embPreHV(embPreHV), m_emecPreHV(emecPreHV) +LArHVManager::LArHVManager(const EMECHVManager *emecHVInner + , const EMECHVManager *emecHVOuter + , const HECHVManager *hecHV + , const FCALHVManager *fcalHV + , const EMBPresamplerHVManager *embPreHV + , const EMECPresamplerHVManager *emecPreHV) + : m_embHV() + , m_emecHVInner(emecHVInner) + , m_emecHVOuter(emecHVOuter) + , m_hecHV(hecHV) + , m_fcalHV(fcalHV) + , m_embPreHV(embPreHV) + , m_emecPreHV(emecPreHV) { - if (m_embHV) m_embHV->ref(); if (m_emecHVInner) m_emecHVInner->ref(); if (m_emecHVOuter) m_emecHVOuter->ref(); if (m_hecHV) m_hecHV->ref(); @@ -26,7 +35,7 @@ LArHVManager::LArHVManager(const EMBHVManager *embHV, const EMECHVManager *emec void LArHVManager::reset() const { - if (m_embHV) m_embHV->reset(); + m_embHV.reset(); if (m_emecHVInner) m_emecHVInner->reset(); if (m_emecHVOuter) m_emecHVOuter->reset(); if (m_hecHV) m_hecHV->reset(); @@ -39,7 +48,6 @@ void LArHVManager::reset() const LArHVManager::~LArHVManager() { - if (m_embHV) m_embHV->unref(); if (m_emecHVInner) m_emecHVInner->unref(); if (m_emecHVOuter) m_emecHVOuter->unref(); if (m_hecHV) m_hecHV->unref(); @@ -49,7 +57,7 @@ LArHVManager::~LArHVManager() } -const EMBHVManager *LArHVManager::getEMBHVManager() const +const EMBHVManager& LArHVManager::getEMBHVManager() const { return m_embHV; } diff --git a/LArCalorimeter/LArGeoModel/LArReadoutGeometry/LArReadoutGeometry/EMBCell.h b/LArCalorimeter/LArGeoModel/LArReadoutGeometry/LArReadoutGeometry/EMBCell.h index d0c206b15a5a96f39b7decdb45e0b04b7ea42f0d..23cacd99d43528cd4048f1ea6dd038d702c7d78e 100755 --- a/LArCalorimeter/LArGeoModel/LArReadoutGeometry/LArReadoutGeometry/EMBCell.h +++ b/LArCalorimeter/LArGeoModel/LArReadoutGeometry/LArReadoutGeometry/EMBCell.h @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration */ #ifndef LARREADOUTGEOMETRY_EMBCELL_H @@ -9,17 +9,15 @@ #include "LArReadoutGeometry/EMBHVPathologies.h" #include "LArHV/EMBPresamplerHVModuleConstLink.h" #include "LArHV/EMBPresamplerHVModule.h" -#include "LArHV/EMBHVElectrodeConstLink.h" #include "LArHV/EMBHVElectrode.h" #include <cmath> #include "GeoModelKernel/RCBase.h" #include <vector> -/** - * @brief A cell of the electromagnetic barrel calorimeter readout - * geometry - */ -/** +/** + * @class EMBCell + * + * @brief A cell of the electromagnetic barrel calorimeter readout geometry * This class gives dimensions and positions, and indices of an * electromagnetic barrel calorimeter readout cell. Positions are * in local coordinates (local to a "big piece", or in this case the @@ -141,7 +139,7 @@ class EMBCell : public RCBase /** * @Get electrode */ - const EMBHVElectrodeConstLink & getElectrode (unsigned int i) const; + const EMBHVElectrode & getElectrode (unsigned int i) const; /** * @Get num HVPathologies @@ -175,7 +173,7 @@ class EMBCell : public RCBase const EMBDetDescr *m_embDetDescr; - mutable std::vector<EMBHVElectrodeConstLink> m_electrode; + mutable std::vector<const EMBHVElectrode*> m_electrode; mutable EMBPresamplerHVModuleConstLink m_presamplerModule; diff --git a/LArCalorimeter/LArGeoModel/LArReadoutGeometry/LArReadoutGeometry/EMBDetectorManager.h b/LArCalorimeter/LArGeoModel/LArReadoutGeometry/LArReadoutGeometry/EMBDetectorManager.h index 36d6281efbeb197de40dd76a65bda5a0c6295b9d..88ca94d6aca9ab1006d9726f348fa3edb4eebec6 100755 --- a/LArCalorimeter/LArGeoModel/LArReadoutGeometry/LArReadoutGeometry/EMBDetectorManager.h +++ b/LArCalorimeter/LArGeoModel/LArReadoutGeometry/LArReadoutGeometry/EMBDetectorManager.h @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration */ #ifndef LARREADOUTGEOMETRY_EMBDETECTORMANAGER_H @@ -8,21 +8,22 @@ #include <vector> #include "GeoModelKernel/GeoVDetectorManager.h" #include "LArReadoutGeometry/EMBAccordionDetails.h" +#include "LArHV/EMBHVManager.h" class EMBDetDescr; class EMBDetectorRegion; class EMBBasicReadoutNumbers; -class EMBHVManager; class EMBPresamplerHVManager; -/** - * @brief A manager class providing access to readout geometry information - * for the electromagnetic barrel calorimeter. - */ /** - * The EMBDetectorManager provides access to EMB Regions, - * to Descriptors for EMB regions, to the physical volumes - * (tree tops) within the EMB, and to a number of important - * engineering numbers within the EMB. + * @class EMBDetectorManager + * + * @brief A manager class providing access to readout geometry information + * for the electromagnetic barrel calorimeter. + * + * The EMBDetectorManager provides access to EMB Regions, + * to Descriptors for EMB regions, to the physical volumes + * (tree tops) within the EMB, and to a number of important + * engineering numbers within the EMB. */ class EMBDetectorManager : public GeoVDetectorManager @@ -37,7 +38,7 @@ class EMBDetectorManager : public GeoVDetectorManager /** * @brief Constructor */ - EMBDetectorManager(); + EMBDetectorManager(const EMBHVManager& hvManager); /** * @brief Destructor @@ -99,7 +100,7 @@ class EMBDetectorManager : public GeoVDetectorManager /** * @brief Get the HV Manager */ - const EMBHVManager *getHVManager () const; + const EMBHVManager& getHVManager () const; /** * @brief Get the HV Manager (Presampler) @@ -129,7 +130,7 @@ class EMBDetectorManager : public GeoVDetectorManager EMBDetRegionArray m_DetRegionsRandom; const EMBBasicReadoutNumbers *m_basicReadoutNumbers; mutable EMBAccordionDetails *m_accordionDetails; - mutable const EMBHVManager *m_hvManager; + const EMBHVManager& m_hvManager; mutable const EMBPresamplerHVManager *m_presamplerHVManager; }; diff --git a/LArCalorimeter/LArGeoModel/LArReadoutGeometry/src/EMBCell.cxx b/LArCalorimeter/LArGeoModel/LArReadoutGeometry/src/EMBCell.cxx index cde34057995f36a6d374a90e5be54b7894e914e3..25d87a3a29920de8b87d5d81ac44a30d46de6549 100755 --- a/LArCalorimeter/LArGeoModel/LArReadoutGeometry/src/EMBCell.cxx +++ b/LArCalorimeter/LArGeoModel/LArReadoutGeometry/src/EMBCell.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration */ #include "LArReadoutGeometry/EMBCell.h" @@ -32,9 +32,9 @@ unsigned int EMBCell::getNumElectrodes() const { return m_electrode.size(); } -const EMBHVElectrodeConstLink & EMBCell::getElectrode (unsigned int i) const { +const EMBHVElectrode & EMBCell::getElectrode (unsigned int i) const { if (m_electrode.size()==0 && !m_presamplerModule) initHV(); - return m_electrode[i]; + return *(m_electrode[i]); } const EMBPresamplerHVModuleConstLink & EMBCell::getPresamplerHVModule () const { @@ -73,7 +73,7 @@ void EMBCell::initHV() const { else { // M_PI - phi for left side - const EMBHVManager *hvManager=getDescriptor()->getManager()->getHVManager(); + const EMBHVManager& hvManager=getDescriptor()->getManager()->getHVManager(); double phiUpper = getPhiMaxNominal(); double phiLower = getPhiMinNominal(); @@ -81,8 +81,8 @@ void EMBCell::initHV() const { double eta=fabs(getEtaMax()+getEtaMin())/2.0; double phi=fabs(phiUpper+phiLower)/2.0; - const CellBinning & etaBinning=hvManager->getDescriptor()->getEtaBinning(); - const CellBinning & phiBinning=hvManager->getDescriptor()->getPhiBinning(); + const CellBinning & etaBinning=hvManager.getDescriptor().getEtaBinning(); + const CellBinning & phiBinning=hvManager.getDescriptor().getPhiBinning(); unsigned int iEta = int((eta - etaBinning.getStart())/etaBinning.getDelta()) + etaBinning.getFirstDivisionNumber(); unsigned int iPhi = int((phi - phiBinning.getStart())/phiBinning.getDelta()) + phiBinning.getFirstDivisionNumber(); unsigned int iSector = int(2.0*(phi - phiBinning.binLower(iPhi))/phiBinning.getDelta()); @@ -90,17 +90,17 @@ void EMBCell::initHV() const { if (iEta==8) iEta=7; - EMBHVModuleConstLink hvMod = hvManager->getHVModule(iSide,iEta,iPhi,iSector); + const EMBHVModule& hvMod = hvManager.getHVModule(iSide,iEta,iPhi,iSector); double dPhi = fabs((phiUpper-phiLower)); double phi0 = (iSide==1) ? M_PI/1024 : -(M_PI)/1024; // delta phi between first absorber and electrode at phi=0 - double sPhi = phiLower-hvMod->getPhiMin() + phi0; + double sPhi = phiLower-hvMod.getPhiMin() + phi0; unsigned int iOffset=int(sPhi*(M_1_PI/2*1024.)+0.5); unsigned int N =int(dPhi*(M_1_PI/2*1024.)+0.5); // std::cout << " EMBCell eta,phi1,phi2 cell, phiMinModule " << eta << " " << phiLower << " " << phiUpper << " " << hvMod->getPhiMin() << std::endl; for (unsigned int iElectrode=iOffset;iElectrode<iOffset+N;iElectrode++) { - EMBHVElectrodeConstLink hvElec = hvMod->getElectrode(iElectrode); - m_electrode.push_back(hvElec); + const EMBHVElectrode& hvElec = hvMod.getElectrode(iElectrode); + m_electrode.push_back(&hvElec); } } diff --git a/LArCalorimeter/LArGeoModel/LArReadoutGeometry/src/EMBDetectorManager.cxx b/LArCalorimeter/LArGeoModel/LArReadoutGeometry/src/EMBDetectorManager.cxx index 0004f3f289d80931aa571c6caad2bb3cb75efb2f..823af672498966e36f365a426445872808c0be81 100755 --- a/LArCalorimeter/LArGeoModel/LArReadoutGeometry/src/EMBDetectorManager.cxx +++ b/LArCalorimeter/LArGeoModel/LArReadoutGeometry/src/EMBDetectorManager.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration */ #include "GaudiKernel/MsgStream.h" @@ -28,7 +28,8 @@ public: }; -EMBDetectorManager::EMBDetectorManager() +EMBDetectorManager::EMBDetectorManager(const EMBHVManager& hvManager) + : m_hvManager(hvManager) { setName("LArEMB"); @@ -44,7 +45,6 @@ EMBDetectorManager::EMBDetectorManager() m_basicReadoutNumbers = new EMBBasicReadoutNumbers(); m_accordionDetails = NULL; - m_hvManager = NULL; m_presamplerHVManager = NULL; } @@ -107,16 +107,8 @@ void EMBDetectorManager::addTreeTop (PVLink treeTop) treeTop->ref(); } -const EMBHVManager * EMBDetectorManager::getHVManager () const +const EMBHVManager& EMBDetectorManager::getHVManager () const { - - if (!m_hvManager) { - StoreGateSvc *detStore = StoreGate::pointer("DetectorStore"); - const LArHVManager *manager = NULL; - if (detStore->retrieve(manager)==StatusCode::SUCCESS) { - m_hvManager=manager->getEMBHVManager(); - } - } return m_hvManager; } diff --git a/LArCalorimeter/LArRecUtils/src/LArHVCondAlg.cxx b/LArCalorimeter/LArRecUtils/src/LArHVCondAlg.cxx index 5c45c9d1954356224cdc7c28c18190748fa96e81..065c82006c8199141f481dfff0be948a801e0070 100755 --- a/LArCalorimeter/LArRecUtils/src/LArHVCondAlg.cxx +++ b/LArCalorimeter/LArRecUtils/src/LArHVCondAlg.cxx @@ -19,7 +19,6 @@ #include "LArHV/EMBHVManager.h" #include "LArHV/EMECHVModule.h" #include "LArHV/EMECHVModuleConstLink.h" -#include "LArHV/EMBHVElectrodeConstLink.h" #include "LArHV/EMBHVElectrode.h" #include "LArHV/EMBPresamplerHVManager.h" #include "LArHV/EMBPresamplerHVModuleConstLink.h" @@ -391,14 +390,14 @@ StatusCode LArHVCondAlg::fillPayload(LArHVData* hvdata, const LArHVData* hvdataO double wt = 1./ngap; v.clear(); ihv.clear(); for (unsigned int i=0;i<nelec;i++) { - const EMBHVElectrodeConstLink electrode = cell->getElectrode(i); + const EMBHVElectrode& electrode = cell->getElectrode(i); //std::cout << "electrode: endcap index, eta index , phi index, sector index , electrode index " << electrode->getModule()->getSideIndex() << // " " << electrode->getModule()->getEtaIndex() << " " << electrode->getModule()->getPhiIndex() << // " " << electrode->getModule()->getSectorIndex() << " " << electrode->getElectrodeIndex() << std::endl; for (unsigned int igap=0;igap<2;igap++) { - const std::vector<unsigned int>::const_iterator itrLine=std::find(hvlineidx.begin(), hvlineidx.end(), electrode->hvLineNo(igap)); + const std::vector<unsigned int>::const_iterator itrLine=std::find(hvlineidx.begin(), hvlineidx.end(), electrode.hvLineNo(igap)); if(itrLine == hvlineidx.end()) { // error, could not find HVline index - ATH_MSG_ERROR("Do not have hvline: "<<electrode->hvLineNo(igap)<<" in LArHVData mapping !!!"); + ATH_MSG_ERROR("Do not have hvline: "<<electrode.hvLineNo(igap)<<" in LArHVData mapping !!!"); return StatusCode::FAILURE; } unsigned idx = itrLine - hvlineidx.begin(); @@ -788,16 +787,16 @@ StatusCode LArHVCondAlg::searchNonNominalHV_EMB(CaloAffectedRegionInfoVec *vAffe // accordion calorimeter float HVnominal = HV_nominal("EMB",0.); - const EMBHVManager* hvManager_EMB=manager->getEMBHVManager(); + const EMBHVManager& hvManager_EMB=manager->getEMBHVManager(); - for (unsigned int iSide=hvManager_EMB->beginSideIndex();iSide<hvManager_EMB->endSideIndex();iSide++) { // loop over HV modules - for (unsigned int iPhi=hvManager_EMB->beginPhiIndex();iPhi<hvManager_EMB->endPhiIndex();iPhi++) { - for (unsigned int iSector=hvManager_EMB->beginSectorIndex();iSector<hvManager_EMB->endSectorIndex();iSector++) { - for (unsigned int iEta=hvManager_EMB->beginEtaIndex();iEta<hvManager_EMB->endEtaIndex();iEta++) { //0 to 7 - EMBHVModuleConstLink hvMod = hvManager_EMB->getHVModule(iSide,iEta,iPhi,iSector); + for (unsigned int iSide=hvManager_EMB.beginSideIndex();iSide<hvManager_EMB.endSideIndex();iSide++) { // loop over HV modules + for (unsigned int iPhi=hvManager_EMB.beginPhiIndex();iPhi<hvManager_EMB.endPhiIndex();iPhi++) { + for (unsigned int iSector=hvManager_EMB.beginSectorIndex();iSector<hvManager_EMB.endSectorIndex();iSector++) { + for (unsigned int iEta=hvManager_EMB.beginEtaIndex();iEta<hvManager_EMB.endEtaIndex();iEta++) { //0 to 7 + const EMBHVModule& hvMod = hvManager_EMB.getHVModule(iSide,iEta,iPhi,iSector); - float eta_min=hvMod->getEtaMin(); - float eta_max=hvMod->getEtaMax(); + float eta_min=hvMod.getEtaMin(); + float eta_max=hvMod.getEtaMax(); ATH_MSG_DEBUG("iSide,iPhi,iSector,iEta " << iSide << " " << iPhi << " " << iSector << " " << iEta); float phi_min=+30.,phi_max=-30.; @@ -805,20 +804,20 @@ StatusCode LArHVCondAlg::searchNonNominalHV_EMB(CaloAffectedRegionInfoVec *vAffe bool are_previous_HV_affected=false; bool are_previous_HV_dead=false; for (unsigned int ielec=0;ielec<32;ielec++) { //use hvMod->getNumElectrodes when bug is corrected - EMBHVElectrodeConstLink electrode = hvMod->getElectrode(ielec); + const EMBHVElectrode& electrode = hvMod.getElectrode(ielec); double hv[2]; for (unsigned int iGap=0;iGap<2;iGap++) { // EMB : 2, TRY TO FIND AUTOMATICALLY NB OF GAPS - const std::vector<unsigned int>::const_iterator itrLine=std::find(hvlineidx.begin(), hvlineidx.end(), electrode->hvLineNo(iGap)); + const std::vector<unsigned int>::const_iterator itrLine=std::find(hvlineidx.begin(), hvlineidx.end(), electrode.hvLineNo(iGap)); if(itrLine == hvlineidx.end()) { // error, could not find HVline index - ATH_MSG_ERROR("Do not have hvline: "<<electrode->hvLineNo(iGap)<<" in LArHVData !!!"); + ATH_MSG_ERROR("Do not have hvline: "<<electrode.hvLineNo(iGap)<<" in LArHVData !!!"); return StatusCode::FAILURE; } //unsigned idx = itrLine - hvlineidx.begin(); hv[iGap]=voltage[itrLine - hvlineidx.begin()]; } //end for iGap - ATH_MSG_DEBUG(" electrode HV " << ielec << " " << electrode->getPhi() << " "<< hv[0] << " " << hv[1] ); + ATH_MSG_DEBUG(" electrode HV " << ielec << " " << electrode.getPhi() << " "<< hv[0] << " " << hv[1] ); //take decisions according to all the gaps HV : bool isDead=false; @@ -845,26 +844,26 @@ StatusCode LArHVCondAlg::searchNonNominalHV_EMB(CaloAffectedRegionInfoVec *vAffe if (isDead) { if (!are_previous_HV_dead) { - phi_min=CaloPhiRange::fix(electrode->getPhi()-1e-4); - phi_max=CaloPhiRange::fix(electrode->getPhi()+1e-4); + phi_min=CaloPhiRange::fix(electrode.getPhi()-1e-4); + phi_max=CaloPhiRange::fix(electrode.getPhi()+1e-4); ATH_MSG_DEBUG(" -- start dead region " << eta_min << " " << eta_max << " " << phi_min << " " <<phi_max); are_previous_HV_dead = true; } else { - extendPhiRegion(electrode->getPhi(),phi_min,phi_max); + extendPhiRegion(electrode.getPhi(),phi_min,phi_max); ATH_MSG_DEBUG(" extend dead region " << phi_min << " " << phi_max); } } if (isAffected) { if (!are_previous_HV_affected) { - phi_min=CaloPhiRange::fix(electrode->getPhi()-1e-4); - phi_max=CaloPhiRange::fix(electrode->getPhi()+1e-4); + phi_min=CaloPhiRange::fix(electrode.getPhi()-1e-4); + phi_max=CaloPhiRange::fix(electrode.getPhi()+1e-4); ATH_MSG_DEBUG(" -- start affected region " << eta_min << " " << eta_max << " " << phi_min << " " <<phi_max); are_previous_HV_affected = true; } else { - extendPhiRegion(electrode->getPhi(),phi_min,phi_max); + extendPhiRegion(electrode.getPhi(),phi_min,phi_max); ATH_MSG_DEBUG(" extend affected region " << phi_min << " " << phi_max); } } diff --git a/LArCalorimeter/LArRecUtils/src/LArHVPathologyDbCondAlg.cxx b/LArCalorimeter/LArRecUtils/src/LArHVPathologyDbCondAlg.cxx index d3eb7dedd5f033cfceef1f1899eece0d93c39e03..7368e7d484484c579c706c55dcdd30c29a6ee567 100755 --- a/LArCalorimeter/LArRecUtils/src/LArHVPathologyDbCondAlg.cxx +++ b/LArCalorimeter/LArRecUtils/src/LArHVPathologyDbCondAlg.cxx @@ -186,9 +186,9 @@ void LArHVPathologyDbCondAlg::fillElectMap(LArHVPathology* hvpath) const { list.clear(); HVline = m_hvlineHelper->hv_line(hwid); for (unsigned int i=0;i<nelec;i++) { - const EMBHVElectrodeConstLink electrode = cell->getElectrode(i); + const EMBHVElectrode& electrode = cell->getElectrode(i); for (unsigned int igap=0;igap<2;igap++) { - if ((unsigned)electrode->hvLineNo(igap)==HVline) { + if ((unsigned)electrode.hvLineNo(igap)==HVline) { list.push_back(2*i+igap); } } diff --git a/graphics/VP1/VP1Systems/VP1CaloReadoutSystems/src/VP1CaloReadoutSystem.cxx b/graphics/VP1/VP1Systems/VP1CaloReadoutSystems/src/VP1CaloReadoutSystem.cxx index f9010d5760f6a7c449b2a3dd2a03be1da40071c7..0fca96226444c303fb808e72fab79bb9b101049e 100755 --- a/graphics/VP1/VP1Systems/VP1CaloReadoutSystems/src/VP1CaloReadoutSystem.cxx +++ b/graphics/VP1/VP1Systems/VP1CaloReadoutSystems/src/VP1CaloReadoutSystem.cxx @@ -1,5 +1,5 @@ /* - Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration + Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration */ #include "VP1CaloReadoutSystems/VP1CaloReadoutSystem.h" @@ -187,7 +187,7 @@ public: std::map < SoNode *, EMECCellConstLink> EMECMap; std::map < SoNode *, EMBCellConstLink> EMBMap; - std::map < SoNode *, EMBHVElectrodeConstLink> EMBHVMap; + std::map < SoNode *, const EMBHVElectrode*> EMBHVMap; std::map < SoNode *, EMECHVElectrodeConstLink> EMECHVMap; std::map < SoNode *, FCALHVLineConstLink> FCALHVMap; std::map < SoNode *, HECHVSubgapConstLink> HECHVMap; @@ -773,12 +773,12 @@ void VP1CaloReadoutSystem::createHV() { } - const EMBHVManager * embHVManager = larHVManager->getEMBHVManager(); - for (unsigned int e=embHVManager->beginSideIndex();e!=embHVManager->endSideIndex();e++) { - for (unsigned int s=embHVManager->beginSectorIndex();s!=embHVManager->endSectorIndex();s++) { - for (unsigned int y=embHVManager->beginEtaIndex();y!=embHVManager->endEtaIndex();y++) { - for (unsigned int p=embHVManager->beginPhiIndex();p!=embHVManager->endPhiIndex();p++) { - EMBHVModuleConstLink embMod=embHVManager->getHVModule(e,y,p,s); + const EMBHVManager& embHVManager = larHVManager->getEMBHVManager(); + for (unsigned int e=embHVManager.beginSideIndex();e!=embHVManager.endSideIndex();e++) { + for (unsigned int s=embHVManager.beginSectorIndex();s!=embHVManager.endSectorIndex();s++) { + for (unsigned int y=embHVManager.beginEtaIndex();y!=embHVManager.endEtaIndex();y++) { + for (unsigned int p=embHVManager.beginPhiIndex();p!=embHVManager.endPhiIndex();p++) { + const EMBHVModule& embMod=embHVManager.getHVModule(e,y,p,s); double r=1970; // Radius to draw stuff at for barrel HV. @@ -786,10 +786,10 @@ void VP1CaloReadoutSystem::createHV() { { int cc=0; - double etaMin=embMod->getEtaMin(); - double etaMax=embMod->getEtaMax(); - double phiMin=embMod->getPhiMin(); - double phiMax=embMod->getPhiMax(); + double etaMin=embMod.getEtaMin(); + double etaMax=embMod.getEtaMax(); + double phiMin=embMod.getPhiMin(); + double phiMax=embMod.getPhiMax(); SoVertexProperty *vtxProperty = new SoVertexProperty(); vtxProperty->vertex.set1Value(cc++, SbVec3f(r*cos(phiMin),r*sin(phiMin) ,r*sinh(etaMin))); vtxProperty->vertex.set1Value(cc++, SbVec3f(r*cos(phiMax),r*sin(phiMax) ,r*sinh(etaMin))); @@ -804,19 +804,19 @@ void VP1CaloReadoutSystem::createHV() { } - for (unsigned int i=0;i<embMod->getNumElectrodes();i++) { - EMBHVElectrodeConstLink electrode = embMod->getElectrode(i); + for (unsigned int i=0;i<embMod.getNumElectrodes();i++) { + const EMBHVElectrode& electrode = embMod.getElectrode(i); - double voltage0 = electrode->voltage(0); - double voltage1 = electrode->voltage(1); + double voltage0 = electrode.voltage(0); + double voltage1 = electrode.voltage(1); double nominalVoltage = m_clockwork->ui.embNominalSpinBox->value(); bool outOfTolerance = (fabs(voltage0-nominalVoltage) > double (tolerance)) || (fabs(voltage1-nominalVoltage) > double (tolerance)) ; bool missing = voltage0 == -99999 || voltage1 == -99999; { int cc=0; SoVertexProperty *vtxProperty = new SoVertexProperty(); - vtxProperty->vertex.set1Value(cc++, SbVec3f(r*cos(electrode->getPhi()),r*sin(electrode->getPhi()) ,r*sinh(electrode->getModule()->getEtaMin()))); - vtxProperty->vertex.set1Value(cc++, SbVec3f(r*cos(electrode->getPhi()),r*sin(electrode->getPhi()) ,r*sinh(electrode->getModule()->getEtaMax()))); + vtxProperty->vertex.set1Value(cc++, SbVec3f(r*cos(electrode.getPhi()),r*sin(electrode.getPhi()) ,r*sinh(electrode.getModule().getEtaMin()))); + vtxProperty->vertex.set1Value(cc++, SbVec3f(r*cos(electrode.getPhi()),r*sin(electrode.getPhi()) ,r*sinh(electrode.getModule().getEtaMax()))); SoLineSet *ls = new SoLineSet(); ls->numVertices=2; @@ -831,7 +831,7 @@ void VP1CaloReadoutSystem::createHV() { else { m_clockwork->embNormalSep->addChild(ls); } - m_clockwork->EMBHVMap[ls]=electrode; + m_clockwork->EMBHVMap[ls]=&electrode; } } } @@ -1681,12 +1681,12 @@ void VP1CaloReadoutSystem::userPickedNode(SoNode* mySelectedNode, SoPath */*pick // EMB HV { - std::map < SoNode *, EMBHVElectrodeConstLink>::const_iterator p = m_clockwork->EMBHVMap.find(mySelectedNode); + std::map < SoNode *, const EMBHVElectrode*>::const_iterator p = m_clockwork->EMBHVMap.find(mySelectedNode); if (p!=m_clockwork->EMBHVMap.end()) { - EMBHVElectrodeConstLink electrode = (*p).second; + const EMBHVElectrode* electrode = (*p).second; std::ostringstream outstream; - outstream << "Side: " << electrode->getModule()->getSideIndex() <<" Eta: " << electrode->getModule()->getEtaIndex() << " Phi: " << electrode->getModule()->getPhiIndex() << " Sector: " << electrode->getModule()->getSectorIndex() << " Electrode " << electrode->getElectrodeIndex() << " Voltages: " << electrode->voltage(0) << "/" << electrode->voltage(1) << "; currents: " << electrode->current(0) << "/" << electrode->current(1); + outstream << "Side: " << electrode->getModule().getSideIndex() <<" Eta: " << electrode->getModule().getEtaIndex() << " Phi: " << electrode->getModule().getPhiIndex() << " Sector: " << electrode->getModule().getSectorIndex() << " Electrode " << electrode->getElectrodeIndex() << " Voltages: " << electrode->voltage(0) << "/" << electrode->voltage(1) << "; currents: " << electrode->current(0) << "/" << electrode->current(1); message (outstream.str().c_str()); } } @@ -2180,16 +2180,16 @@ void VP1CaloReadoutSystem::userPickedNode(SoNode* mySelectedNode, SoPath */*pick std::ostringstream highVoltageStream; highVoltageStream << "There are " << element->getNumElectrodes() << " electrodes. Status: " << '\n'; message(highVoltageStream.str().c_str()); - std::set<EMBHVModuleConstLink> modSet; + std::set<const EMBHVModule*> modSet; for (unsigned int i=0;i<element->getNumElectrodes();i++) { - highVoltageStream << i << "Status: " << element->getElectrode(i)->getElectrodeIndex() << ' ' << element->getElectrode(i)->hvOn(0) << ' ' << element->getElectrode(i)->hvOn(1) << '\n'; - highVoltageStream << i << "Current: " << element->getElectrode(i)->getElectrodeIndex() << ' ' << element->getElectrode(i)->current(0) << ' ' << element->getElectrode(i)->current(1) << '\n'; - highVoltageStream << i << "Voltage: " << element->getElectrode(i)->getElectrodeIndex() << ' ' << element->getElectrode(i)->voltage(0) << ' ' << element->getElectrode(i)->voltage(1) << '\n'; + highVoltageStream << i << "Status: " << element->getElectrode(i).getElectrodeIndex() << ' ' << element->getElectrode(i).hvOn(0) << ' ' << element->getElectrode(i).hvOn(1) << '\n'; + highVoltageStream << i << "Current: " << element->getElectrode(i).getElectrodeIndex() << ' ' << element->getElectrode(i).current(0) << ' ' << element->getElectrode(i).current(1) << '\n'; + highVoltageStream << i << "Voltage: " << element->getElectrode(i).getElectrodeIndex() << ' ' << element->getElectrode(i).voltage(0) << ' ' << element->getElectrode(i).voltage(1) << '\n'; message(highVoltageStream.str().c_str()); // // Now let's show the module, and where she is: // - EMBHVModuleConstLink module = element->getElectrode(i)->getModule(); + const EMBHVModule& module = element->getElectrode(i).getModule(); if (!m_clockwork->ui.highVoltageCheckBox->isChecked()) continue; @@ -2212,16 +2212,16 @@ void VP1CaloReadoutSystem::userPickedNode(SoNode* mySelectedNode, SoPath */*pick double r = element->getRLocal(pos); - double phiMin = module->getPhiMin(); - double phiMax = module->getPhiMax(); - double etaMin = module->getEtaMin(); - double etaMax = module->getEtaMax(); + double phiMin = module.getPhiMin(); + double phiMax = module.getPhiMax(); + double etaMin = module.getEtaMin(); + double etaMax = module.getEtaMax(); sep->addChild(white); sep->addChild(drawStyle); sep->addChild(lm); - if (modSet.find(module)==modSet.end()) { - modSet.insert(module); + if (modSet.find(&module)==modSet.end()) { + modSet.insert(&module); @@ -2242,8 +2242,8 @@ void VP1CaloReadoutSystem::userPickedNode(SoNode* mySelectedNode, SoPath */*pick { int cc=0; SoVertexProperty *vtxProperty = new SoVertexProperty(); - vtxProperty->vertex.set1Value(cc++, SbVec3f(r*cos(element->getElectrode(i)->getPhi()),r*sin(element->getElectrode(i)->getPhi()) ,r*sinh(etaMin))); - vtxProperty->vertex.set1Value(cc++, SbVec3f(r*cos(element->getElectrode(i)->getPhi()),r*sin(element->getElectrode(i)->getPhi()) ,r*sinh(etaMax))); + vtxProperty->vertex.set1Value(cc++, SbVec3f(r*cos(element->getElectrode(i).getPhi()),r*sin(element->getElectrode(i).getPhi()) ,r*sinh(etaMin))); + vtxProperty->vertex.set1Value(cc++, SbVec3f(r*cos(element->getElectrode(i).getPhi()),r*sin(element->getElectrode(i).getPhi()) ,r*sinh(etaMax))); SoLineSet *ls = new SoLineSet(); ls->numVertices=2;