ATLAS Offline Software
Loading...
Searching...
No Matches
FixLArElecCalib Class Reference

fix electronic calibration constants for MC. More...

#include <FixLArElecCalib.h>

Inheritance diagram for FixLArElecCalib:

Public Member Functions

 FixLArElecCalib (const std::string &name, ISvcLocator *pSvcLocator)
virtual ~FixLArElecCalib ()=default
virtual StatusCode initialize () override
virtual StatusCode execute () override
virtual StatusCode finalize () override
virtual StatusCode stop ATLAS_NOT_THREAD_SAFE () override
StatusCode fix1 (const LArOnOffIdMapping *cabling)
StatusCode fix2 (const LArOnOffIdMapping *cabling)
StatusCode fix3 ATLAS_NOT_THREAD_SAFE (const LArOnOffIdMapping *cabling)
StatusCode fix4 ATLAS_NOT_THREAD_SAFE (const LArOnOffIdMapping *cabling)
StatusCode fix5 ATLAS_NOT_THREAD_SAFE (const LArOnOffIdMapping *cabling)
StatusCode fix6 ATLAS_NOT_THREAD_SAFE (const LArOnOffIdMapping *cabling)
StatusCode fix7 ATLAS_NOT_THREAD_SAFE (const LArOnOffIdMapping *cabling)
StatusCode fix8 ATLAS_NOT_THREAD_SAFE (const LArOnOffIdMapping *cabling)
StatusCode fix9 ATLAS_NOT_THREAD_SAFE (const LArOnOffIdMapping *cabling)
StatusCode fix10 ATLAS_NOT_THREAD_SAFE (const LArOnOffIdMapping *cabling)
StatusCode fix11 ATLAS_NOT_THREAD_SAFE (const LArOnOffIdMapping *cabling)
StatusCode fix12 (const LArOnOffIdMapping *cabling)
StatusCode fix13 (const LArOnOffIdMapping *cabling)
StatusCode fix14 (const LArOnOffIdMapping *cabling)
StatusCode fix15 ATLAS_NOT_THREAD_SAFE ()
StatusCode fix16 ATLAS_NOT_THREAD_SAFE ()
StatusCode fix17 ATLAS_NOT_THREAD_SAFE (const LArOnOffIdMapping *cabling)
StatusCode fix18 (const LArCalibLineMapping *clmap)
virtual StatusCode sysInitialize () override
 Override sysInitialize.
virtual const DataObjIDColl & extraOutputDeps () const override
 Return the list of extra output dependencies.
ServiceHandle< StoreGateSvc > & evtStore ()
 The standard StoreGateSvc (event store) Returns (kind of) a pointer to the StoreGateSvc.
const ServiceHandle< StoreGateSvc > & detStore () const
 The standard StoreGateSvc/DetectorStore Returns (kind of) a pointer to the StoreGateSvc.
virtual StatusCode sysStart () override
 Handle START transition.
virtual std::vector< Gaudi::DataHandle * > inputHandles () const override
 Return this algorithm's input handles.
virtual std::vector< Gaudi::DataHandle * > outputHandles () const override
 Return this algorithm's output handles.
Gaudi::Details::PropertyBase & declareProperty (Gaudi::Property< T, V, H > &t)
void updateVHKA (Gaudi::Details::PropertyBase &)
MsgStream & msg () const
bool msgLvl (const MSG::Level lvl) const

Protected Member Functions

void renounceArray (SG::VarHandleKeyArray &handlesArray)
 remove all handles from I/O resolution
std::enable_if_t< std::is_void_v< std::result_of_t< decltype(&T::renounce)(T)> > &&!std::is_base_of_v< SG::VarHandleKeyArray, T > &&std::is_base_of_v< Gaudi::DataHandle, T >, void > renounce (T &h)
void extraDeps_update_handler (Gaudi::Details::PropertyBase &ExtraDeps)
 Add StoreName to extra input/output deps as needed.

Private Types

typedef std::pair< HWIdentifier, std::vector< float > > ROW_t
typedef std::vector< ROW_tVROW_t
typedef ServiceHandle< StoreGateSvcStoreGateSvc_t

Private Member Functions

StatusCode ReadFile (const std::string &filename, const LArOnOffIdMapping *cabling, bool EM, bool withGain, int nvar)
StatusCode ReadFileAll (const std::string &filename, const LArOnOffIdMapping *cabling, bool withGain, int nvar)
StatusCode update_DAC2uA (const std::string &em_filename, const std::string &hec_filename)
template<class T>
StatusCode update_EM_HEC ATLAS_NOT_THREAD_SAFE (const std::string &em_filename, const std::string &hec_filename, const LArOnOffIdMapping *cabling, bool withGain, int nvar)
template<class T>
StatusCode update_All ATLAS_NOT_THREAD_SAFE (const std::string &filename, const LArOnOffIdMapping *cabling, bool withGain, int nvar)
void print_object (std::string_view msg, const LArNoiseMC::LArCondObj &obj)
void set_object (LArNoiseMC::LArCondObj &obj, const std::vector< float > &v)
void print_object (std::string_view msg, const LArAutoCorrMC::LArCondObj &obj)
void set_object (LArAutoCorrMC::LArCondObj &obj, const std::vector< float > &v)
void print_object (std::string_view, const LArRampMC::LArCondObj &obj)
void set_object (LArRampMC::LArCondObj &obj, const std::vector< float > &v)
void print_object (std::string_view msg, const LArShape32MC::LArCondObj &obj)
void set_object (LArShape32MC::LArCondObj &obj, const std::vector< float > &v)
void print_object (std::string_view msg, const LArSingleFloatP &obj)
void set_object (LArSingleFloatP &obj, const std::vector< float > &v)
StatusCode addMphysOverMcal (const LArOnOffIdMapping *cabling)
StatusCode fixDACuAMeV ATLAS_NOT_THREAD_SAFE ()
StatusCode updateEMfSampl ATLAS_NOT_THREAD_SAFE (const std::string &filename, const LArOnOffIdMapping *cabling)
StatusCode updateMinBias ATLAS_NOT_THREAD_SAFE (const std::string &filename, const LArOnOffIdMapping *cabling)
StatusCode updateEM_DACuAMeV ATLAS_NOT_THREAD_SAFE (const std::string &filename, const LArOnOffIdMapping *cabling)
StatusCode updateHADfSampl ATLAS_NOT_THREAD_SAFE (const LArOnOffIdMapping *cabling)
Gaudi::Details::PropertyBase & declareGaudiProperty (Gaudi::Property< T, V, H > &hndl, const SG::VarHandleKeyType &)
 specialization for handling Gaudi::Property<SG::VarHandleKey>

Private Attributes

SG::ReadCondHandleKey< LArOnOffIdMappingm_cablingKey {this,"CablingKey","LArOnOffIdMap","SG Key of LArOnOffIdMapping object"}
SG::ReadCondHandleKey< LArCalibLineMappingm_CLKey {this, "CalibLineKey", "LArCalibLineMap", "calib line key"}
IntegerProperty m_fixFlag {this, "FixFlag", 1, "which fix to apply"}
StringProperty m_g4Phys {this, "G4Phys", "", "which physics list to use"}
StringProperty m_infile {this, "InputFile", "", "name of inpput file"}
const LArEM_IDm_em_idhelper
const LArHEC_IDm_hec_idhelper
const LArFCAL_IDm_fcal_idhelper
const LArOnlineIDm_online_idhelper
const LArEM_SuperCell_IDm_sem_idhelper
const LArHEC_SuperCell_IDm_shec_idhelper
const LArOnline_SuperCellIDm_sonline_idhelper
const CaloCell_SuperCell_IDm_scell_idhelper
VROW_t m_cache [3]
DataObjIDColl m_extendedExtraObjects
StoreGateSvc_t m_evtStore
 Pointer to StoreGate (event store by default).
StoreGateSvc_t m_detStore
 Pointer to StoreGate (detector store by default).
std::vector< SG::VarHandleKeyArray * > m_vhka
bool m_varHandleArraysDeclared

Detailed Description

fix electronic calibration constants for MC.

Author
Hong Ma hma@b.nosp@m.nl.g.nosp@m.ov

Purpose: read in the LAr electronic calib data, and fix them ready to be written out again as a new version.

This should be used with FixLArElecCalib_jobOptions.py to write a new POOL file.

Implemented fixes:

  1. Flag = 1 Replacing values for barrel in LArDAC2uAMC Input barrel_dac2ua_oct06.txt
  2. Flag=2 fix FCAL conditions data for new mapping in release 13.
  3. Flag=3 replace fsampl for 4.8.2 June 13,2007: FCAL numbers updated by P. Krieger. Junly 10, 2007: updated the number for 13.0.20
  4. Flag=4 replace uA2MeV DAC2uA with that in dac2ua_ua2mev_rel13.txt
  5. Flag=5 replace FCAL noise and minbiasRMS from Sven Menke's new number for release 13.

6 Flag=6 replace All FCAL noise and ADC2DAC, uA2MeV and DAC2uA. <HG/MG> = 9.96 +/- 0.01 <MG/LG> = 9.67 +/- 0.01

7 Flag=7 replace sampling fraction for QGSP_BERT from 13.0.30.

8 Flag=8 replace EM/HEC autoCorr, noise, dac2ua, mphys, ramp, shape, ua2mev

9 Flag=9 fix FCAL AutoCorr

10 Flag=10 fix FCAL ramp. The scaling factor were inverted. Ramp_M = Ramp_H*9.96 Ramp_L = Ramp_H*9.96*9.67

11 Flag=11 Update HEC Ramp

12 Flag=12 Fill the LArMinBiasMC and LArMinBiasAverageMC from ntuple created by LArMinBiasAlg (in CaloCondPhysAlgs)
13 Flag=13 Filling the OnlOflMap for SC

14 Flag=14 Fill the LArMinBiasAverageMC type in LArPileupAverage folder for BCID correction from ntuple created by LArMinBiasAlg (in CaloCondPhysAlgs)

15 Flag=15 Scale the MinBiasAverage by constant

16 Flag=16 Fix the EMEC-A FT 7 slot 11 OnOfIdMap cable swap

17 Flag=17 replace All shape

18 Flag=18 Fix the calib. line mapping for the EMF, where all channels in EMB-A FT 0 has CL=channel

Definition at line 36 of file FixLArElecCalib.h.

Member Typedef Documentation

◆ ROW_t

typedef std::pair<HWIdentifier,std::vector<float> > FixLArElecCalib::ROW_t
private

Definition at line 127 of file FixLArElecCalib.h.

◆ StoreGateSvc_t

typedef ServiceHandle<StoreGateSvc> AthCommonDataStore< AthCommonMsg< Algorithm > >::StoreGateSvc_t
privateinherited

Definition at line 388 of file AthCommonDataStore.h.

◆ VROW_t

typedef std::vector<ROW_t> FixLArElecCalib::VROW_t
private

Definition at line 128 of file FixLArElecCalib.h.

Constructor & Destructor Documentation

◆ FixLArElecCalib()

FixLArElecCalib::FixLArElecCalib ( const std::string & name,
ISvcLocator * pSvcLocator )

Definition at line 115 of file FixLArElecCalib.cxx.

115 :
116 AthAlgorithm(name,pSvcLocator),
117 m_em_idhelper(nullptr),
118 m_hec_idhelper(nullptr),
119 m_fcal_idhelper(nullptr),
120 m_online_idhelper(nullptr),
121 m_sem_idhelper(nullptr),
122 m_shec_idhelper(nullptr),
123 m_sonline_idhelper(nullptr),
124 m_scell_idhelper(nullptr)
125{
126
127}
AthAlgorithm()
Default constructor:
const LArOnline_SuperCellID * m_sonline_idhelper
const LArEM_SuperCell_ID * m_sem_idhelper
const LArHEC_ID * m_hec_idhelper
const LArOnlineID * m_online_idhelper
const LArFCAL_ID * m_fcal_idhelper
const CaloCell_SuperCell_ID * m_scell_idhelper
const LArEM_ID * m_em_idhelper
const LArHEC_SuperCell_ID * m_shec_idhelper

◆ ~FixLArElecCalib()

virtual FixLArElecCalib::~FixLArElecCalib ( )
virtualdefault

Member Function Documentation

◆ addMphysOverMcal()

StatusCode FixLArElecCalib::addMphysOverMcal ( const LArOnOffIdMapping * cabling)
private

Definition at line 1428 of file FixLArElecCalib.cxx.

1428 {
1429 // add the contain to DetStore.
1430 // fill 1 for all FCAL/HEC channels
1431
1432 ATH_MSG_INFO ( " addMphysOverMcal() " );
1433 // create LArMphysOverMcal with FCAL numbers = 1.
1434
1435 std::unique_ptr<LArMphysOverMcalMC> mphys = std::make_unique<LArMphysOverMcalMC>();
1436 mphys->setGroupingType(LArConditionsContainerBase::SingleGroup);
1437 ATH_CHECK( mphys->initialize() );
1438
1439 int n=0;
1440
1441 std::string filename("FCal_noise_minbias_adc2mev.txt");
1442
1443 std::ifstream infile(filename ) ;
1444
1445 if(! infile.good() )
1446 {
1447 ATH_MSG_ERROR(" fail to open file "<<filename);
1448 return StatusCode::FAILURE;
1449 }
1450
1451
1452 char s[200];
1453
1454 ATH_MSG_INFO("Opened FCAL file");
1455 for(int i = 0;i<27;++i){
1456 infile.getline(s,200);
1457 ATH_MSG_INFO(s);
1458 }
1459
1460 std::string str_id;
1461
1462 float vol,noise_p,noise_h, noise_m,noise_l;
1463 float ramp_val,ua2MeV_val,dac2uA_val;
1464 std::string channel_type;
1465 while ( infile>>str_id >>vol>>noise_p >> noise_h>>noise_m>>noise_l
1466 >>channel_type>> ramp_val>>ua2MeV_val>>dac2uA_val )
1467 {
1468 const char* ch_id = str_id.c_str();
1469
1470 if(str_id.substr(0,1)!=std::string("A")){
1471 ATH_MSG_INFO(" skipping string"<<str_id);
1472 continue;
1473 }
1474
1475 int mod,phi,eta;
1476 sscanf(ch_id, "A%d.%d.%d", &mod,&phi,&eta);
1477 if(phi>7){
1478 ATH_MSG_INFO(" skipping phi"<<str_id<<" phi="<<phi);
1479 continue;
1480 }
1481
1482 ++n;
1483
1484 ATH_MSG_INFO(" Setting channel "<<str_id);
1485 Identifier id = m_fcal_idhelper->channel_id(2,mod,eta,phi);
1486 HWIdentifier hid = cabling->createSignalChannelID(id);
1487
1489 t.m_data =1. ;
1490 mphys->setPdata(hid,t,0);
1491 mphys->setPdata(hid,t,1);
1492 mphys->setPdata(hid,t,2);
1493 }
1494
1495 ATH_MSG_INFO(" MphysOverMcal added "<<n<<" FCAL channels");
1496
1497 bool EM=false ;
1498 bool withGain=false;
1499 int nvar = 1;
1500 std::string hec_filename("mphys_hec.txt");
1501 ATH_CHECK( ReadFile(hec_filename,cabling,EM,withGain,nvar) );
1502
1503 int igain=0;
1504 n=0;
1505 for( ROW_t &it : m_cache[igain])
1506 {
1507 HWIdentifier hid = it.first;
1509 t.m_data =1. ;
1510 mphys->setPdata(hid,t,0);
1511 mphys->setPdata(hid,t,1);
1512 mphys->setPdata(hid,t,2);
1513 ++n;
1514
1515 }
1516
1517 ATH_CHECK( detStore()->record(std::move(mphys),"LArMphysOverMcal") );
1518 ILArMphysOverMcal* imphys=nullptr;
1519 ATH_CHECK (detStore()->symLink(mphys.get(),imphys) );
1520
1521 ATH_MSG_ERROR(" Number of HEC channel added "<<n <<" per gain ");
1522 return StatusCode::SUCCESS ;
1523}
Scalar eta() const
pseudorapidity method
Scalar phi() const
phi method
#define ATH_CHECK
Evaluate an expression and check for errors.
#define ATH_MSG_ERROR(x)
#define ATH_MSG_INFO(x)
const ServiceHandle< StoreGateSvc > & detStore() const
StatusCode ReadFile(const std::string &filename, const LArOnOffIdMapping *cabling, bool EM, bool withGain, int nvar)
std::pair< HWIdentifier, std::vector< float > > ROW_t

◆ ATLAS_NOT_THREAD_SAFE() [1/20]

StatusCode fixDACuAMeV FixLArElecCalib::ATLAS_NOT_THREAD_SAFE ( )
private

◆ ATLAS_NOT_THREAD_SAFE() [2/20]

StatusCode fix16 FixLArElecCalib::ATLAS_NOT_THREAD_SAFE ( )

◆ ATLAS_NOT_THREAD_SAFE() [3/20]

StatusCode fix15 FixLArElecCalib::ATLAS_NOT_THREAD_SAFE ( )

◆ ATLAS_NOT_THREAD_SAFE() [4/20]

virtual StatusCode stop FixLArElecCalib::ATLAS_NOT_THREAD_SAFE ( )
overridevirtual

◆ ATLAS_NOT_THREAD_SAFE() [5/20]

StatusCode updateHADfSampl FixLArElecCalib::ATLAS_NOT_THREAD_SAFE ( const LArOnOffIdMapping * cabling)
private

◆ ATLAS_NOT_THREAD_SAFE() [6/20]

StatusCode fix17 FixLArElecCalib::ATLAS_NOT_THREAD_SAFE ( const LArOnOffIdMapping * cabling)

◆ ATLAS_NOT_THREAD_SAFE() [7/20]

StatusCode fix11 FixLArElecCalib::ATLAS_NOT_THREAD_SAFE ( const LArOnOffIdMapping * cabling)

◆ ATLAS_NOT_THREAD_SAFE() [8/20]

StatusCode fix10 FixLArElecCalib::ATLAS_NOT_THREAD_SAFE ( const LArOnOffIdMapping * cabling)

◆ ATLAS_NOT_THREAD_SAFE() [9/20]

StatusCode fix9 FixLArElecCalib::ATLAS_NOT_THREAD_SAFE ( const LArOnOffIdMapping * cabling)

◆ ATLAS_NOT_THREAD_SAFE() [10/20]

StatusCode fix8 FixLArElecCalib::ATLAS_NOT_THREAD_SAFE ( const LArOnOffIdMapping * cabling)

◆ ATLAS_NOT_THREAD_SAFE() [11/20]

StatusCode fix7 FixLArElecCalib::ATLAS_NOT_THREAD_SAFE ( const LArOnOffIdMapping * cabling)

◆ ATLAS_NOT_THREAD_SAFE() [12/20]

StatusCode fix6 FixLArElecCalib::ATLAS_NOT_THREAD_SAFE ( const LArOnOffIdMapping * cabling)

◆ ATLAS_NOT_THREAD_SAFE() [13/20]

StatusCode fix5 FixLArElecCalib::ATLAS_NOT_THREAD_SAFE ( const LArOnOffIdMapping * cabling)

◆ ATLAS_NOT_THREAD_SAFE() [14/20]

StatusCode fix4 FixLArElecCalib::ATLAS_NOT_THREAD_SAFE ( const LArOnOffIdMapping * cabling)

◆ ATLAS_NOT_THREAD_SAFE() [15/20]

StatusCode fix3 FixLArElecCalib::ATLAS_NOT_THREAD_SAFE ( const LArOnOffIdMapping * cabling)

◆ ATLAS_NOT_THREAD_SAFE() [16/20]

template<class T>
StatusCode update_EM_HEC FixLArElecCalib::ATLAS_NOT_THREAD_SAFE ( const std::string & em_filename,
const std::string & hec_filename,
const LArOnOffIdMapping * cabling,
bool withGain,
int nvar )
private

◆ ATLAS_NOT_THREAD_SAFE() [17/20]

StatusCode updateEM_DACuAMeV FixLArElecCalib::ATLAS_NOT_THREAD_SAFE ( const std::string & filename,
const LArOnOffIdMapping * cabling )
private

◆ ATLAS_NOT_THREAD_SAFE() [18/20]

StatusCode updateMinBias FixLArElecCalib::ATLAS_NOT_THREAD_SAFE ( const std::string & filename,
const LArOnOffIdMapping * cabling )
private

◆ ATLAS_NOT_THREAD_SAFE() [19/20]

StatusCode updateEMfSampl FixLArElecCalib::ATLAS_NOT_THREAD_SAFE ( const std::string & filename,
const LArOnOffIdMapping * cabling )
private

◆ ATLAS_NOT_THREAD_SAFE() [20/20]

template<class T>
StatusCode update_All FixLArElecCalib::ATLAS_NOT_THREAD_SAFE ( const std::string & filename,
const LArOnOffIdMapping * cabling,
bool withGain,
int nvar )
private

◆ declareGaudiProperty()

Gaudi::Details::PropertyBase & AthCommonDataStore< AthCommonMsg< Algorithm > >::declareGaudiProperty ( Gaudi::Property< T, V, H > & hndl,
const SG::VarHandleKeyType &  )
inlineprivateinherited

specialization for handling Gaudi::Property<SG::VarHandleKey>

Definition at line 156 of file AthCommonDataStore.h.

158 {
160 hndl.value(),
161 hndl.documentation());
162
163 }
Gaudi::Details::PropertyBase & declareProperty(Gaudi::Property< T, V, H > &t)

◆ declareProperty()

Gaudi::Details::PropertyBase & AthCommonDataStore< AthCommonMsg< Algorithm > >::declareProperty ( Gaudi::Property< T, V, H > & t)
inlineinherited

Definition at line 145 of file AthCommonDataStore.h.

145 {
146 typedef typename SG::HandleClassifier<T>::type htype;
148 }
Gaudi::Details::PropertyBase & declareGaudiProperty(Gaudi::Property< T, V, H > &hndl, const SG::VarHandleKeyType &)
specialization for handling Gaudi::Property<SG::VarHandleKey>

◆ detStore()

const ServiceHandle< StoreGateSvc > & AthCommonDataStore< AthCommonMsg< Algorithm > >::detStore ( ) const
inlineinherited

The standard StoreGateSvc/DetectorStore Returns (kind of) a pointer to the StoreGateSvc.

Definition at line 95 of file AthCommonDataStore.h.

◆ evtStore()

ServiceHandle< StoreGateSvc > & AthCommonDataStore< AthCommonMsg< Algorithm > >::evtStore ( )
inlineinherited

The standard StoreGateSvc (event store) Returns (kind of) a pointer to the StoreGateSvc.

Definition at line 85 of file AthCommonDataStore.h.

◆ execute()

StatusCode FixLArElecCalib::execute ( )
overridevirtual

Definition at line 147 of file FixLArElecCalib.cxx.

147 {
148
149 const EventContext& ctx = Gaudi::Hive::currentContext();
150
151 SG::ReadCondHandle<LArOnOffIdMapping> cablingHdl{m_cablingKey, ctx};
152 const LArOnOffIdMapping* cabling{*cablingHdl};
153 if(!cabling) {
154 ATH_MSG_WARNING( "Do not have cabling mapping from key " << m_cablingKey.key() );
155 }
156 if(m_fixFlag==13)
157 return fix13(cabling);
158
159 return StatusCode::SUCCESS;
160}
#define ATH_MSG_WARNING(x)
StatusCode fix13(const LArOnOffIdMapping *cabling)
SG::ReadCondHandleKey< LArOnOffIdMapping > m_cablingKey
IntegerProperty m_fixFlag

◆ extraDeps_update_handler()

void AthCommonDataStore< AthCommonMsg< Algorithm > >::extraDeps_update_handler ( Gaudi::Details::PropertyBase & ExtraDeps)
protectedinherited

Add StoreName to extra input/output deps as needed.

use the logic of the VarHandleKey to parse the DataObjID keys supplied via the ExtraInputs and ExtraOuputs Properties to add the StoreName if it's not explicitly given

◆ extraOutputDeps()

const DataObjIDColl & AthAlgorithm::extraOutputDeps ( ) const
overridevirtualinherited

Return the list of extra output dependencies.

This list is extended to include symlinks implied by inheritance relations.

Definition at line 50 of file AthAlgorithm.cxx.

51{
52 // If we didn't find any symlinks to add, just return the collection
53 // from the base class. Otherwise, return the extended collection.
54 if (!m_extendedExtraObjects.empty()) {
56 }
57 return Algorithm::extraOutputDeps();
58}
DataObjIDColl m_extendedExtraObjects

◆ finalize()

virtual StatusCode FixLArElecCalib::finalize ( )
inlineoverridevirtual

Definition at line 44 of file FixLArElecCalib.h.

44{return StatusCode::SUCCESS;}

◆ fix1()

StatusCode FixLArElecCalib::fix1 ( const LArOnOffIdMapping * cabling)

Definition at line 223 of file FixLArElecCalib.cxx.

223 {
224
225 ATH_MSG_INFO ( " in fix1() " );
226
227 // Fix1 is for updating the EM DAC2uA, assuming symmetry.
228 // Input should be MC Conditions data with DetDescrVersion=ATLAS-DC3-05
229
230 // Pointer to StoreGate
231 const LArEM_ID* em_idhelper = nullptr;
232 ATH_CHECK( detStore()->retrieve(em_idhelper) );
233
234 const LArOnlineID* online_idhelper = nullptr;
235 ATH_CHECK( detStore()->retrieve(online_idhelper) );
236
237 // retrieve DetDescrManager
238 SmartIF<IToolSvc> toolSvc{Gaudi::svcLocator()->service("ToolSvc")};
239 ATH_CHECK(toolSvc.isValid());
240
241 LArDAC2uAMC * dac2ua = nullptr;
242 ATH_CHECK( detStore()->retrieve(dac2ua) );
243
244 // read in the file
245
246 std::ifstream infile("barrel_dac2ua_oct06.txt") ;
247 if(! infile.good() )
248 {
249 ATH_MSG_ERROR(" fail to open file ");
250 return StatusCode::FAILURE;
251 }
252
253
254 int det,samp,reg,eta;
255 float value ;
256 int n = 0;
257 while ( infile>>det>>samp>>reg>>eta>>value )
258 {
259 ++n;
260 ATH_MSG_DEBUG(" det,samp,reg,eta,value="
261 <<det<<" "
262 <<samp<<" "
263 <<reg<<" "
264 <<eta<<" "
265 <<value<<" " );
266
267 Identifier id ;
268 if ( det==1 && samp==1 && reg==0 && eta==0 ){
269 // eta=0 for strip, not connected, but keep it
270 // Removed disconnected channels: 03/2016 RDS
271 // ATH_MSG_DEBUG(" disconnected strip ");
272 // id = em_idhelper->disc_channel_id(det,samp,reg,eta,0);
273 }else
274 id = em_idhelper->channel_id(det,samp,reg,eta,0);
275
276 HWIdentifier hid = cabling->createSignalChannelID(id);
277 LArDAC2uAComplete::LArCondObj & t = dac2ua->get(hid,0);
278 ATH_MSG_DEBUG(" online id = "<<online_idhelper->print_to_string(hid));
279
280 if( t.isEmpty() )
281 {
282 ATH_MSG_WARNING(" No existing conditions data " );
283 continue ;
284 }
285 ATH_MSG_DEBUG(" Old DAC2uA = "<< t.m_data<< " " );
286
287 t.m_data = value ;
288
289 const LArDAC2uAComplete::LArCondObj & t3 = dac2ua->get(hid,0);
290 ATH_MSG_DEBUG(" New DAC2uA = "<< t3.m_data << " " );
291
292 }
293
294 ATH_MSG_DEBUG(" Number of entries changes = " <<n );
295 return StatusCode::SUCCESS;
296}
#define ATH_MSG_DEBUG(x)
std::string print_to_string(Identifier id, const IdContext *context=0) const
or provide the printout in string form
ConstReference get(const HWIdentifier id, unsigned int gain=0) const
get data with online identifier
Identifier channel_id(const ExpandedIdentifier &exp_id) const
Build a cell identifier from an expanded identifier.
std::vector< LUCID_RawData_p1 > t3

◆ fix12()

StatusCode FixLArElecCalib::fix12 ( const LArOnOffIdMapping * cabling)

Definition at line 2001 of file FixLArElecCalib.cxx.

2001 {
2002
2003 ATH_MSG_INFO ( " in fix12() " );
2004
2005 // Fix12 is for filling the MinBiasRMS and MinBiasAverage from ntuple
2006
2007 // Create new container
2008 std::unique_ptr<LArMinBiasMC> minbias = std::make_unique<LArMinBiasMC>();
2009 ATH_CHECK( minbias->setGroupingType("Single", msg()) );
2010 ATH_CHECK( minbias->initialize() );
2011 std::unique_ptr<LArMinBiasAverageMC> minbias_av = std::make_unique<LArMinBiasAverageMC>();
2012 ATH_CHECK( minbias_av->setGroupingType("Single", msg()) );
2013 ATH_CHECK( minbias_av->initialize() );
2014 //
2015 std::unique_ptr<TFile> fin= std::make_unique<TFile>("ntuple_av.root");
2016 TTree *tin=dynamic_cast<TTree*>(fin->Get("m_tree"));
2017 if (!tin) {
2018 ATH_MSG_ERROR("Can't read tree m_tree");
2019 return StatusCode::FAILURE;
2020 }
2021 const int nindex=1833;
2022 int ncell;
2023 std::vector<int> identifier(2862);
2024 std::vector<int> layer(2862);
2025 std::vector<int> region(2862);
2026 std::vector<int> ieta(2862);
2027 std::vector<float> eta(2862);
2028 std::vector<double> average(2862);
2029 std::vector<double> rms(2862);
2030 TBranch *b_ncell;
2031 TBranch *b_identifier;
2032 TBranch *b_layer;
2033 TBranch *b_region;
2034 TBranch *b_ieta;
2035 TBranch *b_eta;
2036 TBranch *b_average;
2037 TBranch *b_rms;
2038 tin->SetMakeClass(1);
2039 tin->SetBranchAddress("ncell", &ncell, &b_ncell);
2040 tin->SetBranchAddress("identifier", identifier.data(), &b_identifier);
2041 tin->SetBranchAddress("layer", layer.data(), &b_layer);
2042 tin->SetBranchAddress("region", region.data(), &b_region);
2043 tin->SetBranchAddress("ieta", ieta.data(), &b_ieta);
2044 tin->SetBranchAddress("eta", eta.data(), &b_eta);
2045 tin->SetBranchAddress("average", average.data(), &b_average);
2046 tin->SetBranchAddress("rms", rms.data(), &b_rms);
2047 tin->GetEntry(0);
2048
2049 if(ncell>nindex) ncell=nindex;
2050 for(int icell=0; icell<ncell; ++icell) {
2051
2052 Identifier32 id32(identifier[icell]);
2053 Identifier id(id32);
2054 HWIdentifier hid = cabling->createSignalChannelID(id);
2055
2056 minbias->set(hid, rms[icell]);
2057 minbias_av->set(hid, average[icell]);
2058
2059 }
2060
2061 ATH_MSG_INFO(" number of channels in intuple ="<<ncell);
2062
2063 ATH_MSG_INFO ( "Stored container " << minbias->totalNumberOfConditions() << " conditions, key LArMinBias " );
2064 ATH_CHECK( detStore()->record(std::move(minbias),"LArMinBias") );
2065 //ATH_CHECK( detStore()->symLink(minbias.get(), dynamic_cast<ILArMinBias*>(minbias.get())) );
2067 ATH_MSG_INFO ( "Stored container " << minbias_av->totalNumberOfConditions() << " conditions, key LArMinBiasAverage " );
2068 ATH_CHECK( detStore()->record(std::move(minbias_av),"LArMinBiasAverage") );
2069 //ATH_CHECK( detStore()->symLink(minbias_av.get(), dynamic_cast<ILArMinBiasAverage*>(minbias_av.get())) );
2071
2072 return StatusCode::SUCCESS;
2073}
MsgStream & msg() const
@ layer
Definition HitInfo.h:79

◆ fix13()

StatusCode FixLArElecCalib::fix13 ( const LArOnOffIdMapping * cabling)

Definition at line 1730 of file FixLArElecCalib.cxx.

1730 {
1731
1732 ATH_MSG_INFO ( " in fix13() " );
1733 // update EM/HEC 7 data objects.
1734
1735 ToolHandle<ICaloSuperCellIDTool> scidtool("CaloSuperCellIDTool");
1736 if ( scidtool.retrieve().isFailure() ) {
1737 ATH_MSG_ERROR ( " Could not retrieve scitool " );
1738 }
1739
1740 std::set<Identifier> scidset;
1741 std::map<HWIdentifier,int> sslot_schannel_idx;
1742 std::vector<unsigned int> OrderOnlHash_OffID;
1743 std::vector<unsigned int> OrderOffHash_OnlID;
1744 OrderOnlHash_OffID.resize(40000,0);
1745 OrderOffHash_OnlID.resize(40000,0);
1746
1747 Identifier::size_type channel_size = m_em_idhelper->channel_hash_max();
1748 unsigned int min_onl_hash = 999999;
1749 unsigned int max_onl_hash = 0;
1750 unsigned int min_off_hash = 999999;
1751 unsigned int max_off_hash = 0;
1752 std::ofstream hashes("AllHashChannels_All.txt");
1753 std::ofstream of("AllChannels_EM.txt");
1754
1755 for(size_t i = 0; i < channel_size ; i++) {
1756 Identifier chid = m_em_idhelper->channel_id(i);
1757 bool isEM = ( m_em_idhelper->is_em_barrel( chid ) || m_em_idhelper->is_em_endcap( chid ) ) ;
1758 if ( ! isEM ) continue;
1759 Identifier SCID = scidtool->offlineToSuperCellID(chid);
1760 if ( scidset.find(SCID) == scidset.end() && (m_scell_idhelper->calo_cell_hash( SCID ).value() < 99999) )
1761 scidset.insert(SCID);
1762 else continue;
1763 HWIdentifier hwid = cabling->createSignalChannelID(chid);
1764 if ( i == 0 ){
1765 of << "Off ID\t\tSCID\t\tOnl ID\t\tFT\tslot\tB-E pos_neg\tSamp\teta\tphi\tFEB_ID\t\tSHWID\t" << std::endl;
1766 }
1767 of << chid.get_identifier32().get_compact() << "\t0x" <<
1768 SCID.get_identifier32().get_compact() << "\t0x" <<
1769 hwid.get_identifier32().get_compact() ;
1770 Identifier regId = m_em_idhelper->region_id( chid );
1771 int reg = m_em_idhelper->region( chid );
1772 IdentifierHash regHash = m_em_idhelper->region_hash( regId );
1773 int samp = m_em_idhelper->sampling( chid );
1774 int feedthrough = m_online_idhelper->feedthrough( hwid );
1775 int bar_ec = m_online_idhelper->barrel_ec( hwid );
1776 int pos_neg = m_online_idhelper->pos_neg( hwid );
1777 int slot = m_online_idhelper->slot( hwid );
1778 float etaG = m_em_idhelper->etaGranularity(regHash);
1779 float phiG = m_em_idhelper->phiGranularity(regHash);
1780 float eta0 = m_em_idhelper->eta0(regHash);
1781 float phi0 = m_em_idhelper->phi0(regHash);
1782 float eta = etaG*m_em_idhelper->eta( chid ) + eta0;
1783 float phi = phiG*m_em_idhelper->phi( chid ) + phi0;
1784 char etaChar[10];
1785 char phiChar[10];
1786 sprintf(etaChar,"%5.4f",eta);
1787 sprintf(phiChar,"%5.4f",phi);
1788 of << std::dec << "\t" << feedthrough << "\t" << slot;
1789 of << "\t" << bar_ec << " " << pos_neg << "\t\t" << samp << "\t";
1790 of << etaChar << " " << phiChar << "\t0x";
1791 HWIdentifier feb_id = m_online_idhelper->feb_Id(hwid);
1792 int sslot=1;
1793 bool InSlot= m_em_idhelper->is_em_endcap_inner ( chid );
1794 bool OutSlot= m_em_idhelper->is_em_endcap_outer ( chid ) ;
1795 bool secondOutSlot=false;
1796 if ( OutSlot ) {
1797 if ( (samp==1) && (reg==5) ) secondOutSlot=true;
1798 if ( (samp==2) && (reg==1) && ( m_em_idhelper->eta( chid )>=39 ) )
1799 secondOutSlot=true;
1800 if ( (samp==3) && (reg==0) && ( m_em_idhelper->eta( chid )>=18 ) )
1801 secondOutSlot=true;
1802 }
1803 HWIdentifier sfeb_id = m_sonline_idhelper->feb_Id(bar_ec,pos_neg,feedthrough,sslot);
1804
1805 if ( InSlot ) {
1806 sfeb_id = m_sonline_idhelper->feb_Id(bar_ec,pos_neg,feedthrough-1,sslot+1);
1807 }
1808 if ( secondOutSlot ) {
1809 sfeb_id = m_sonline_idhelper->feb_Id(bar_ec,pos_neg,feedthrough,sslot+1);
1810 }
1811 if ( sslot_schannel_idx.find(sfeb_id) == sslot_schannel_idx.end() )
1812 sslot_schannel_idx[sfeb_id]=0;
1813 else sslot_schannel_idx[sfeb_id]++;
1814 HWIdentifier shwid = m_sonline_idhelper->channel_Id(sfeb_id,sslot_schannel_idx[sfeb_id]);
1815 unsigned int onl_hash = m_sonline_idhelper->channel_Hash( shwid ).value();
1816 if ( onl_hash > max_onl_hash ) max_onl_hash = onl_hash;
1817 if ( onl_hash < min_onl_hash ) min_onl_hash = onl_hash;
1818 unsigned int off_hash = m_scell_idhelper->calo_cell_hash( SCID ).value();
1819 if ( off_hash > max_off_hash ) max_off_hash = off_hash;
1820 if ( off_hash < min_off_hash ) min_off_hash = off_hash;
1821 of << std::hex;
1822 of << feb_id.get_identifier32().get_compact();
1823 of << "\t0x" << shwid.get_identifier32().get_compact();
1824 of << " " << m_online_idhelper->channel_name(hwid) << " " << m_sonline_idhelper->channel_name(shwid);
1825 of << std::dec;
1826 of << " " << onl_hash << " " << off_hash;
1827 of << std::endl;
1828
1829 if ( m_scell_idhelper->calo_cell_hash( SCID ).value() < 40000 )
1830 OrderOffHash_OnlID[m_scell_idhelper->calo_cell_hash( SCID ).value()] = shwid.get_identifier32().get_compact();
1831 if ( m_sonline_idhelper->channel_Hash( shwid ).value() < 40000 )
1832 OrderOnlHash_OffID[m_sonline_idhelper->channel_Hash( shwid ).value()] = SCID.get_identifier32().get_compact();
1833 }
1834 of << "Hash check. Onl : " << min_onl_hash << " " << max_onl_hash;
1835 of << "; Off : " << min_off_hash << " " << max_off_hash << std::endl;;
1836 of.close();
1837
1838 channel_size = m_hec_idhelper->channel_hash_max();
1839 min_onl_hash = 999999;
1840 max_onl_hash = 0;
1841 min_off_hash = 999999;
1842 max_off_hash = 0;
1843 std::ofstream of1("AllChannels_HEC.txt");
1844
1845 of1 << "Off ID\t\tSCID\t\tOnl ID\t\tFT\tslot\tB-E pos_neg\tSamp\teta\tphi\tFEB_ID\t\tSHWID\t" << std::endl;
1846 for(size_t i = 0; i < channel_size ; i++) {
1847 Identifier chid = m_hec_idhelper->channel_id(i);
1848 if ( ! ( m_hec_idhelper->is_lar_hec( chid ) ) ) continue;
1849 Identifier SCID = scidtool->offlineToSuperCellID(chid);
1850 if ( scidset.find(SCID) == scidset.end() )
1851 scidset.insert(SCID);
1852 else continue;
1853 HWIdentifier hwid = cabling->createSignalChannelID(chid);
1854 of1 << chid.get_identifier32().get_compact() << "\t0x" <<
1855 SCID.get_identifier32().get_compact() << "\t0x" <<
1856 hwid.get_identifier32().get_compact() ;
1857 Identifier regId = m_hec_idhelper->region_id( chid );
1858 IdentifierHash regHash = m_hec_idhelper->region_hash( regId );
1859 int samp = m_hec_idhelper->sampling( chid );
1860 int feedthrough = m_online_idhelper->feedthrough( hwid );
1861 int bar_ec = m_online_idhelper->barrel_ec( hwid );
1862 int pos_neg = m_online_idhelper->pos_neg( hwid );
1863 int slot = m_online_idhelper->slot( hwid );
1864 float etaG = m_hec_idhelper->etaGranularity(regHash);
1865 float phiG = m_hec_idhelper->phiGranularity(regHash);
1866 float eta0 = m_hec_idhelper->eta0(regHash);
1867 float phi0 = m_hec_idhelper->phi0(regHash);
1868 float eta = etaG*m_hec_idhelper->eta( chid ) + eta0;
1869 float phi = phiG*m_hec_idhelper->phi( chid ) + phi0;
1870 char etaChar[10];
1871 char phiChar[10];
1872 sprintf(etaChar,"%5.4f",eta);
1873 sprintf(phiChar,"%5.4f",phi);
1874 of1 << std::dec << "\t" << feedthrough << "\t" << slot;
1875 of1 << "\t" << bar_ec << " " << pos_neg << "\t\t" << samp << "\t";
1876 of1 << etaChar << " " << phiChar << "\t0x";
1877 HWIdentifier feb_id = m_online_idhelper->feb_Id(hwid);
1878 int sslot=1;
1879 int subtract=0;
1880 HWIdentifier sfeb_id = m_sonline_idhelper->feb_Id(bar_ec,pos_neg,feedthrough,sslot);
1881 if ( sslot_schannel_idx.find(sfeb_id) == sslot_schannel_idx.end() )
1882 sslot_schannel_idx[sfeb_id]=0;
1883 else sslot_schannel_idx[sfeb_id]++;
1884 if ( (feedthrough==6) && (bar_ec==1) && (slot>9) ) {
1885 sfeb_id = m_sonline_idhelper->feb_Id(bar_ec,pos_neg,feedthrough,sslot+1);
1886 subtract=192;
1887 }
1888 HWIdentifier shwid = m_sonline_idhelper->channel_Id(sfeb_id,sslot_schannel_idx[sfeb_id]-subtract);
1889 unsigned int onl_hash = m_sonline_idhelper->channel_Hash( shwid ).value();
1890 if ( onl_hash > max_onl_hash ) max_onl_hash = onl_hash;
1891 if ( onl_hash < min_onl_hash ) min_onl_hash = onl_hash;
1892 unsigned int off_hash = m_scell_idhelper->calo_cell_hash( SCID ).value();
1893 if ( off_hash > max_off_hash ) max_off_hash = off_hash;
1894 if ( off_hash < min_off_hash ) min_off_hash = off_hash;
1895 of1 << std::hex;
1896 of1 << feb_id.get_identifier32().get_compact();
1897 of1 << "\t0x" << shwid.get_identifier32().get_compact();
1898 of1 << " " << m_online_idhelper->channel_name(hwid) << " " << m_sonline_idhelper->channel_name(shwid);
1899 of1 << std::dec;
1900 of1 << " " << onl_hash << " " << off_hash;
1901 of1 << std::endl;
1902
1903 OrderOffHash_OnlID[m_scell_idhelper->calo_cell_hash( SCID ).value()] = shwid.get_identifier32().get_compact();
1904 OrderOnlHash_OffID[m_sonline_idhelper->channel_Hash( shwid ).value()] = SCID.get_identifier32().get_compact();
1905 }
1906
1907 channel_size = m_fcal_idhelper->channel_hash_max();
1908 min_onl_hash = 999999;
1909 max_onl_hash = 0;
1910 min_off_hash = 999999;
1911 max_off_hash = 0;
1912 std::ofstream of3("AllChannels_FCAL.txt");
1913
1914 of3 << "Off ID\t\tSCID\t\tOnl ID\t\tFT\tslot\tB-E pos_neg\tSamp\teta\tphi\tFEB_ID\t\tSHWID\t" << std::endl;
1915 for(size_t i = 0; i < channel_size ; i++) {
1916 Identifier chid = m_fcal_idhelper->channel_id(i);
1917 if ( ! ( m_fcal_idhelper->is_lar_fcal( chid ) ) ) continue;
1918 Identifier SCID = scidtool->offlineToSuperCellID(chid);
1919 if ( scidset.find(SCID) == scidset.end() )
1920 scidset.insert(SCID);
1921 else continue;
1922 HWIdentifier hwid = cabling->createSignalChannelID(chid);
1923 of3 << chid.get_identifier32().get_compact() << "\t0x" <<
1924 SCID.get_identifier32().get_compact() << "\t0x" <<
1925 hwid.get_identifier32().get_compact() ;
1926 int samp = 0;
1927 int feedthrough = m_online_idhelper->feedthrough( hwid );
1928 int bar_ec = m_online_idhelper->barrel_ec( hwid );
1929 int pos_neg = m_online_idhelper->pos_neg( hwid );
1930 int slot = m_online_idhelper->slot( hwid );
1931 of3 << std::dec << "\t" << feedthrough << "\t" << slot;
1932 of3 << "\t" << bar_ec << " " << pos_neg << "\t\t" << samp << "\t";
1933 HWIdentifier feb_id = m_online_idhelper->feb_Id(hwid);
1934 int sslot=1;
1935 HWIdentifier sfeb_id = m_sonline_idhelper->feb_Id(bar_ec,pos_neg,feedthrough,sslot);
1936 if ( (feedthrough==6) && (bar_ec==1) && (slot>9) ) {
1937 sfeb_id = m_sonline_idhelper->feb_Id(bar_ec,pos_neg,feedthrough,sslot+1);
1938 }
1939 if ( sslot_schannel_idx.find(sfeb_id) == sslot_schannel_idx.end() )
1940 sslot_schannel_idx[sfeb_id]=0;
1941 else sslot_schannel_idx[sfeb_id]++;
1942 HWIdentifier shwid = m_sonline_idhelper->channel_Id(sfeb_id,sslot_schannel_idx[sfeb_id]);
1943 unsigned int onl_hash = m_sonline_idhelper->channel_Hash( shwid ).value();
1944 if ( onl_hash > max_onl_hash ) max_onl_hash = onl_hash;
1945 if ( onl_hash < min_onl_hash ) min_onl_hash = onl_hash;
1946 unsigned int off_hash = m_scell_idhelper->calo_cell_hash( SCID ).value();
1947 if ( off_hash > max_off_hash ) max_off_hash = off_hash;
1948 if ( off_hash < min_off_hash ) min_off_hash = off_hash;
1949 of3 << std::hex;
1950 of3 << feb_id.get_identifier32().get_compact();
1951 of3 << "\t0x" << shwid.get_identifier32().get_compact();
1952 of3 << " " << m_online_idhelper->channel_name(hwid) << " " << m_sonline_idhelper->channel_name(shwid);
1953 of3 << std::dec;
1954 of3 << " " << onl_hash << " " << off_hash;
1955 of3 << std::endl;
1956
1957 OrderOffHash_OnlID[m_scell_idhelper->calo_cell_hash( SCID ).value()] = shwid.get_identifier32().get_compact();
1958 OrderOnlHash_OffID[m_sonline_idhelper->channel_Hash( shwid ).value()] = SCID.get_identifier32().get_compact();
1959 }
1960
1961 of3 << "Hash check. Onl : " << min_onl_hash << " " << max_onl_hash;
1962 of3 << "; Off : " << min_off_hash << " " << max_off_hash << std::endl;;
1963 of3.close();
1964
1965
1966
1967 const uint32_t onlHashMax=m_sonline_idhelper->channelHashMax();
1968 coral::AttributeListSpecification *spec_onOff = new coral::AttributeListSpecification();
1969 spec_onOff->extend("OnlineHashToOfflineId", "blob");
1970 spec_onOff->extend<unsigned>("version");
1971 std::unique_ptr<AthenaAttributeList> al_onOff = std::make_unique<AthenaAttributeList>(*spec_onOff);
1972 coral::Blob& blobOnOff=(*al_onOff)["OnlineHashToOfflineId"].data<coral::Blob>();
1973 (*al_onOff)["version"].setValue(0U);
1974 blobOnOff.resize(onlHashMax*sizeof(uint32_t));
1975 uint32_t* pBlobOnOff=static_cast<uint32_t*>(blobOnOff.startingAddress());
1976 unsigned nConn=0;
1977
1978 const uint32_t emptyId=Identifier().get_identifier32().get_compact();
1979 for(size_t ii=0;ii<onlHashMax;ii++) {
1980 if (OrderOnlHash_OffID[ii] != 0) {
1981 pBlobOnOff[ii]=OrderOnlHash_OffID[ii];
1982 nConn++;
1983 }
1984 else
1985 pBlobOnOff[ii]=emptyId;
1986 }
1987
1988 ATH_MSG_INFO ( "HashMax=" << onlHashMax << ", connected=" << nConn );
1989
1990 ATH_CHECK( detStore()->record(std::move(al_onOff),"/LAR/IdentifierOfl/OnOffIdMap_SC") );
1991
1992 hashes << "idx \t Off2OnlId \t Onl2OffId" << std::endl;
1993 for(size_t ii=0;ii<40000;ii++)
1994 if ( (OrderOffHash_OnlID[ii] != 0) || ( OrderOnlHash_OffID[ii] != 0 ) )
1995 hashes << std::dec << ii << std::hex << " \t " << OrderOffHash_OnlID[ii] << " \t\t " << OrderOnlHash_OffID[ii] << std::endl;
1996 hashes.close();
1997
1998 return StatusCode::SUCCESS;
1999}
value_type get_compact() const
Get the compact id.
Identifier32 get_identifier32() const
Get the 32-bit version Identifier, will be invalid if >32 bits needed.
setEventNumber uint32_t

◆ fix14()

StatusCode FixLArElecCalib::fix14 ( const LArOnOffIdMapping * cabling)

Definition at line 2075 of file FixLArElecCalib.cxx.

2075 {
2076
2077 ATH_MSG_INFO ( " in fix14() " );
2078
2079 // Fix14 is for filling the LArPileupAverage from ntuple
2080
2081 const ILArfSampl* larfSampl = nullptr;
2082 ATH_CHECK( detStore()->retrieve(larfSampl,"") );
2083 // Will try to regenerate from scratch
2084 // Create new container
2085 std::unique_ptr<LArMinBiasAverageMC> minbias_av = std::make_unique<LArMinBiasAverageMC>();
2086 ATH_CHECK( minbias_av->setGroupingType("Single", msg()) );
2087 ATH_CHECK( minbias_av->initialize() );
2088 //
2089 std::unique_ptr<TFile> fin= std::make_unique<TFile>(m_infile.value().c_str());
2090 TTree *tin=dynamic_cast<TTree*>(fin->Get("m_tree"));
2091 if (!tin) {
2092 ATH_MSG_ERROR("Can't read tree m_tree");
2093 return StatusCode::FAILURE;
2094 }
2095 int ncell;
2096 std::vector<int> identifier(2862);
2097 std::vector<int> layer(2862);
2098 std::vector<int> region(2862);
2099 std::vector<int> ieta(2862);
2100 std::vector<float> eta(2862);
2101 std::vector<double> average(2862);
2102 std::vector<double> rms(2862);
2103 TBranch *b_ncell;
2104 TBranch *b_identifier;
2105 TBranch *b_layer;
2106 TBranch *b_region;
2107 TBranch *b_ieta;
2108 TBranch *b_eta;
2109 TBranch *b_average;
2110 TBranch *b_rms;
2111 tin->SetMakeClass(1);
2112 tin->SetBranchAddress("ncell", &ncell, &b_ncell);
2113 tin->SetBranchAddress("identifier", identifier.data(), &b_identifier);
2114 tin->SetBranchAddress("layer", layer.data(), &b_layer);
2115 tin->SetBranchAddress("region", region.data(), &b_region);
2116 tin->SetBranchAddress("ieta", ieta.data(), &b_ieta);
2117 tin->SetBranchAddress("eta", eta.data(), &b_eta);
2118 tin->SetBranchAddress("average", average.data(), &b_average);
2119 tin->SetBranchAddress("rms", rms.data(), &b_rms);
2120 tin->GetEntry(0);
2121
2122
2123 for(int icell=0; icell<ncell; ++icell) {
2124
2125 Identifier32 id32(identifier[icell]);
2126 Identifier id(id32);
2127 HWIdentifier hid = cabling->createSignalChannelID(id);
2128 float fsampl = larfSampl->FSAMPL(hid);
2129 minbias_av->set(hid, 6.31*average[icell]/fsampl);
2130
2131 }
2132
2133 ATH_MSG_INFO(" number of channels in intuple ="<<ncell);
2134
2135 ATH_MSG_INFO ( "Stored container " << minbias_av->totalNumberOfConditions() << " conditions, key LArPileupAverage " );
2136 ATH_CHECK( detStore()->record(std::move(minbias_av),"LArPileupAverage") );
2137 ATH_CHECK( detStore()->symLink(minbias_av.get(), dynamic_cast<ILArMinBiasAverage*>(minbias_av.get())) );
2138
2139 return StatusCode::SUCCESS;
2140}
StringProperty m_infile
virtual const float & FSAMPL(const HWIdentifier &id) const =0

◆ fix18()

StatusCode FixLArElecCalib::fix18 ( const LArCalibLineMapping * clmap)

Definition at line 2239 of file FixLArElecCalib.cxx.

2239 {
2240
2241 ATH_MSG_INFO ( " in fix18() " );
2242
2243 const uint32_t onlHashMax=m_online_idhelper->channelHashMax();
2244
2245 coral::AttributeListSpecification* spec_calib = new coral::AttributeListSpecification();
2246 spec_calib->extend("OnlineHashToCalibIds", "blob");
2247 spec_calib->extend<unsigned>("version");
2248 std::unique_ptr<AthenaAttributeList> al_calib = std::make_unique<AthenaAttributeList>(*spec_calib);
2249 coral::Blob& blobCalib=(*al_calib)["OnlineHashToCalibIds"].data<coral::Blob>();
2250 (*al_calib)["version"].setValue(0U);
2251 blobCalib.resize(onlHashMax*sizeof(uint32_t)*4); //Bigger than necessary
2252
2253 spec_calib->release();
2254 // cppcheck-suppress memleak
2255 spec_calib = nullptr;
2256
2257 uint32_t* pBlobCalib=static_cast<uint32_t*>(blobCalib.startingAddress());
2258 size_t calibIndex=0;
2259
2260
2261 // loop over all online hashes
2262 for (unsigned i=0;i<onlHashMax;++i) {
2263 const HWIdentifier hwid = m_online_idhelper->channel_Id(IdentifierHash(i));
2264
2265 const std::vector<HWIdentifier>& calibIDs=cabling->calibSlotLine(hwid);
2266 const size_t nCalibLines=calibIDs.size();
2267
2268 if (m_online_idhelper->isEMBchannel(hwid) && m_online_idhelper->pos_neg(hwid) == 1 && m_online_idhelper->feedthrough(hwid) == 0 ) { // EMB-A FT 0
2269 if(nCalibLines > 1) { //should not be in our channels
2270 ATH_MSG_ERROR("Wrong number of CL in our channels");
2271 return StatusCode::FAILURE;
2272 }
2273 if(nCalibLines==0) {
2274 pBlobCalib[calibIndex++]=0;
2275 } else {
2276 const HWIdentifier cmodule = m_online_idhelper->calib_module_Id(calibIDs[0]);
2277 const HWIdentifier newcl = m_online_idhelper->calib_channel_Id(cmodule, m_online_idhelper->channel(hwid) );
2278 if(!m_online_idhelper->isCalibration(newcl)) {
2279 ATH_MSG_ERROR("Something wrong, new CL not a calibration");
2280 ATH_MSG_ERROR("Channel: "<<hwid.get_identifier32().get_compact()<<" old CL: "<< calibIDs[0].get_identifier32().get_compact()<<" new CL: "<<newcl.get_identifier32().get_compact());
2281 return StatusCode::FAILURE;
2282 }
2283 ATH_MSG_INFO("Channel: "<<hwid.get_identifier32().get_compact()<<" old CL: "<< calibIDs[0].get_identifier32().get_compact()<<" new CL: "<<newcl.get_identifier32().get_compact());
2284 pBlobCalib[calibIndex++]=1;
2285 pBlobCalib[calibIndex++]=newcl.get_identifier32().get_compact();
2286 }
2287 } else {
2288 pBlobCalib[calibIndex++]=nCalibLines;
2289 for(uint32_t iCalib=0;iCalib<nCalibLines;++iCalib)
2290 pBlobCalib[calibIndex++]=calibIDs[iCalib].get_identifier32().get_compact();
2291 }
2292 }
2293 blobCalib.resize(calibIndex*sizeof(uint32_t)); //Size down to actual size
2294 ATH_MSG_INFO( "BlobSize CalibId:" << calibIndex);
2295
2296 // and now record the blob to SG
2297 ATH_CHECK(detStore()->record(std::move(al_calib),"/LAR/Identifier/CalibIdMap_EMF"));
2298
2299 return StatusCode::SUCCESS;
2300}

◆ fix2()

StatusCode FixLArElecCalib::fix2 ( const LArOnOffIdMapping * cabling)

Definition at line 299 of file FixLArElecCalib.cxx.

299 {
300
301 ATH_MSG_INFO ( " in fix2() " );
302
303 // Fix2 is for updating the FCAL conditions data after IdFix7
304 // Input should be MC Conditions data with DetDescrVersion=ATLAS-DC3-05
305
306 const LArFCAL_ID* fcal_idhelper = nullptr;
307 ATH_CHECK( detStore()->retrieve(fcal_idhelper) );
308
309 const LArOnlineID* online_idhelper = nullptr;
310 ATH_CHECK( detStore()->retrieve(online_idhelper) );
311
312 // retrieve DetDescrManager
313 SmartIF<IToolSvc> toolSvc{Gaudi::svcLocator()->service("ToolSvc")};
314 ATH_CHECK(toolSvc.isValid());
315
316 LArDAC2uAMC * dac2ua = nullptr;
317 ATH_CHECK( detStore()->retrieve(dac2ua) );
318
319 LAruA2MeVMC * ua2mev = nullptr;
320 ATH_CHECK( detStore()->retrieve(ua2mev) );
321
322 LArRampMC * ramp = nullptr;
323 ATH_CHECK( detStore()->retrieve(ramp) );
324
325 LArShape32MC * shape = nullptr;
326 ATH_CHECK( detStore()->retrieve(shape) );
327
328 LArNoiseMC * noise = nullptr;
329 ATH_CHECK( detStore()->retrieve(noise) );
330
331 LArfSamplMC * fsampl = nullptr;
332 ATH_CHECK( detStore()->retrieve(fsampl) );
333
334 LArMinBiasMC * minbias = nullptr;
335 ATH_CHECK( detStore()->retrieve(minbias) );
336
337 LArAutoCorrMC * ac = nullptr;
338 ATH_CHECK( detStore()->retrieve(ac) );
339
340
341 for( unsigned int gain=0;gain<3;++gain)
342 {
343 // loop over all the old data
345 LArRampMC::ConditionsMapIterator it_e = ramp->end(gain);
346
347 int n=0;
348 for (; it!=it_e;++it)
349 {
350 HWIdentifier hid = it.channelId();
351 if( (*it).isEmpty() ) continue;
352 if(cabling->isOnlineConnected(hid)){
353 continue;
354 }else
355 {
356 ATH_MSG_DEBUG(" unconnected channel"
357 << online_idhelper->print_to_string(hid) );
358 ac->get(hid,gain) = LArAutoCorrComplete::LArCondObj();
359 ramp->get(hid,gain) = LArRampComplete::LArCondObj();
360 shape->get(hid,gain) = LArShape32MC::LArCondObj();
361 noise->get(hid,gain) = LArNoiseComplete::LArCondObj();
362 if(gain==0){
363 dac2ua->get(hid,gain) = LArDAC2uAComplete::LArCondObj();
364 ua2mev->get(hid,gain) = LAruA2MeVComplete::LArCondObj();
365 fsampl->get(hid,gain) = LArfSamplComplete::LArCondObj();
366 minbias->get(hid,gain) = LArMinBiasComplete::LArCondObj();
367 }
368 ++n ;
369 }
370
371 }
372 ATH_MSG_DEBUG(" Gain="<<gain<<
373 " Number of entries removed = " <<n );
374 }
375
376
377 HWIdentifier hid_mod[3];
378 hid_mod[0] = online_idhelper->channel_Id(1,1,6,1,33);
379 hid_mod[1] = online_idhelper->channel_Id(1,1,6,10,12);
380 hid_mod[2] = online_idhelper->channel_Id(1,1,6,14,12);
381
382 // loop over all FCAL channels
383 std::vector<Identifier>::const_iterator it= fcal_idhelper->fcal_begin();
384 std::vector<Identifier>::const_iterator it_e= fcal_idhelper->fcal_end();
385 int n = 0;
386 for(;it!=it_e; ++it)
387 {
388 Identifier id = *it;
389 int pn = fcal_idhelper->pos_neg(id);
390 if(pn!=2) continue;
391 int phi = fcal_idhelper->phi(id);
392 if (phi>7) continue;
393
394 int module = fcal_idhelper->module(id)-1;
395
396 HWIdentifier hid = cabling->createSignalChannelID(id);
397
398 for(unsigned int gain = 0;gain<3;++gain){
399
400 LArRampComplete::LArCondObj& rampP = ramp->get(hid,gain) ;
401 if (!rampP.isEmpty()) continue ;
402
403 ATH_MSG_DEBUG(" channel needs repair "
404 << online_idhelper->print_to_string(hid) );
405 ATH_MSG_DEBUG ( fcal_idhelper->print_to_string(id) );
406 ATH_MSG_DEBUG ( "module = "<<module );
407
408 ++n;
409
410 LArRampComplete::LArCondObj ramp_std = ramp->get(hid_mod[module],gain) ;
411 ramp->setPdata(hid,ramp_std,gain);
412
413 LArAutoCorrComplete::LArCondObj ac_std = ac->get(hid_mod[module],gain) ;
414 ac->setPdata(hid,ac_std,gain);
415
416 LArShape32MC::LArCondObj shape_std = shape->get(hid_mod[module],gain) ;
417 shape->setPdata(hid,shape_std,gain);
418
419 LArNoiseComplete::LArCondObj noise_std = noise->get(hid_mod[module],gain) ;
420 noise->setPdata(hid,noise_std,gain);
421
422 if(gain==0){
423
424 LAruA2MeVComplete::LArCondObj ua2mev_std = ua2mev->get(hid_mod[module],gain) ;
425 ua2mev->setPdata(hid,ua2mev_std,gain);
426
427 LArDAC2uAComplete::LArCondObj dac2ua_std = dac2ua->get(hid_mod[module],gain) ;
428 dac2ua->setPdata(hid,dac2ua_std,gain);
429
430 LArfSamplComplete::LArCondObj fsampl_std = fsampl->get(hid_mod[module],gain) ;
431 fsampl->setPdata(hid,fsampl_std,gain);
432
433 LArMinBiasComplete::LArCondObj minbias_std = minbias->get(hid_mod[module],gain) ;
434 minbias->setPdata(hid,minbias_std,gain);
435
436 }
437
438 }
439 }
440
441 ATH_MSG_DEBUG( " Number of entries fixed " <<n );
442 return StatusCode::SUCCESS;
443}
void setPdata(const HWIdentifier id, const T &payload, unsigned int gain=0)
put payload in persistent data
ConstConditionsMapIterator begin(unsigned int gain) const
get iterator for all channels for a gain
ConstConditionsMapIterator end(unsigned int gain) const
end of all channels for this gain
id_iterator fcal_end() const
end iterator over full set of Fcal Identifiers for channels
id_iterator fcal_begin() const
begin iterator over full set of Fcal Identifiers for channels
int phi(const Identifier id) const
phi [0,15]
int pos_neg(const Identifier id) const
pos_neg : +/- 2 (A/C side)
HWIdentifier channel_Id(int barrel_ec, int pos_neg, int feedthrough, int slot, int channel) const
create channel identifier from fields
bool isEmpty() const
Definition LArRampP1.h:29

◆ initialize()

StatusCode FixLArElecCalib::initialize ( )
overridevirtual

Definition at line 129 of file FixLArElecCalib.cxx.

129 {
130 ATH_MSG_INFO ( " in initialize " );
131
132 ATH_CHECK( detStore()->retrieve(m_em_idhelper) );
133 ATH_CHECK( detStore()->retrieve(m_hec_idhelper) );
134 ATH_CHECK( detStore()->retrieve(m_fcal_idhelper) );
135 ATH_CHECK( detStore()->retrieve(m_sem_idhelper) );
136 ATH_CHECK( detStore()->retrieve(m_shec_idhelper) );
137 ATH_CHECK( detStore()->retrieve(m_online_idhelper) );
138 ATH_CHECK( detStore()->retrieve(m_sonline_idhelper) );
139 ATH_CHECK( detStore()->retrieve(m_scell_idhelper) );
140
141 ATH_CHECK( m_cablingKey.initialize() );
142 ATH_CHECK( m_CLKey.initialize() );
143
144 return StatusCode::SUCCESS;
145}
SG::ReadCondHandleKey< LArCalibLineMapping > m_CLKey

◆ inputHandles()

virtual std::vector< Gaudi::DataHandle * > AthCommonDataStore< AthCommonMsg< Algorithm > >::inputHandles ( ) const
overridevirtualinherited

Return this algorithm's input handles.

We override this to include handle instances from key arrays if they have not yet been declared. See comments on updateVHKA.

◆ msg()

MsgStream & AthCommonMsg< Algorithm >::msg ( ) const
inlineinherited

Definition at line 24 of file AthCommonMsg.h.

24 {
25 return this->msgStream();
26 }

◆ msgLvl()

bool AthCommonMsg< Algorithm >::msgLvl ( const MSG::Level lvl) const
inlineinherited

Definition at line 30 of file AthCommonMsg.h.

30 {
31 return this->msgLevel(lvl);
32 }

◆ outputHandles()

virtual std::vector< Gaudi::DataHandle * > AthCommonDataStore< AthCommonMsg< Algorithm > >::outputHandles ( ) const
overridevirtualinherited

Return this algorithm's output handles.

We override this to include handle instances from key arrays if they have not yet been declared. See comments on updateVHKA.

◆ print_object() [1/5]

void FixLArElecCalib::print_object ( std::string_view msg,
const LArAutoCorrMC::LArCondObj & obj )
private

Definition at line 1305 of file FixLArElecCalib.cxx.

1306{
1307 if( obj.isEmpty()){
1308 ATH_MSG_INFO(" LArAutoCorrMC " << s << " is empty" );
1309 }else
1310 {
1311 msg()<<MSG::DEBUG<<" LArAutoCorrMC" << s ;
1312 for (unsigned int i =0 ; i<obj.m_vAutoCorr.size();++i)
1313 msg()<< " " << obj.m_vAutoCorr[i];
1314 msg()<<endmsg;
1315 }
1316 return ;
1317}
#define endmsg

◆ print_object() [2/5]

void FixLArElecCalib::print_object ( std::string_view msg,
const LArNoiseMC::LArCondObj & obj )
private

Definition at line 1285 of file FixLArElecCalib.cxx.

1286{
1287 if( obj.isEmpty()){
1288 ATH_MSG_INFO(" LArNoiseMC " << msg << " is empty" );
1289 }else
1290 ATH_MSG_DEBUG(" LArNoiseMC" << msg << obj.m_Noise );
1291 return ;
1292}

◆ print_object() [3/5]

void FixLArElecCalib::print_object ( std::string_view msg,
const LArShape32MC::LArCondObj & obj )
private

Definition at line 1361 of file FixLArElecCalib.cxx.

1362{
1363 if( obj.isEmpty()){
1364 ATH_MSG_INFO(" LArShape32MC " << s << " is empty" );
1365 }else
1366 {
1367 msg()<<MSG::DEBUG<<" LArShape" << s ;
1368 for (unsigned int i =0 ; i<obj.m_vShape.size();++i)
1369 msg()<< " " << obj.m_vShape[i];
1370 msg()<<endmsg;
1371
1372 msg()<<MSG::DEBUG<<" LArShapeDer" << s ;
1373 for (unsigned int i =0 ; i<obj.m_vShapeDer.size();++i)
1374 msg()<< " " << obj.m_vShapeDer[i];
1375 msg()<<endmsg;
1376 }
1377 return ;
1378}

◆ print_object() [4/5]

void FixLArElecCalib::print_object ( std::string_view msg,
const LArSingleFloatP & obj )
private

Definition at line 1405 of file FixLArElecCalib.cxx.

1406{
1407 if( obj.isEmpty()){
1408 ATH_MSG_INFO(" LArSingleFloatP " << msg << " is empty" );
1409 }else
1410 ATH_MSG_DEBUG(" LArSingleFloatP " << msg << obj.m_data );
1411 return ;
1412}

◆ print_object() [5/5]

void FixLArElecCalib::print_object ( std::string_view s,
const LArRampMC::LArCondObj & obj )
private

Definition at line 1332 of file FixLArElecCalib.cxx.

1333{
1334 if( obj.isEmpty()){
1335 ATH_MSG_INFO(" LArRampMC " << s << " is empty" );
1336 }else
1337 {
1338 msg()<<MSG::DEBUG<<" LArRampMC" << s ;
1339 for (unsigned int i =0 ; i<obj.m_vRamp.size();++i)
1340 msg()<< " " << obj.m_vRamp[i];
1341 msg()<<endmsg;
1342 }
1343 return ;
1344}

◆ ReadFile()

StatusCode FixLArElecCalib::ReadFile ( const std::string & filename,
const LArOnOffIdMapping * cabling,
bool EM,
bool withGain,
int nvar )
private

Definition at line 1146 of file FixLArElecCalib.cxx.

1146 {
1147
1148 std::ifstream infile(filename) ;
1149
1150 if(! infile.good() )
1151 {
1152 ATH_MSG_ERROR(" fail to open file "<<filename );
1153 return StatusCode::FAILURE;
1154 }
1155
1156 ATH_MSG_INFO(" Opened file "<<filename );
1157
1158 m_cache[0].clear();
1159 m_cache[1].clear();
1160 m_cache[2].clear();
1161
1162 char s[200];
1163 infile.getline(s,200);
1164 ATH_MSG_INFO(" first line of the file "<<s);
1165
1166 int det=2;
1167 int samp,reg,eta;
1168 int first;
1169 while ( infile>>first )
1170 {
1171 if (EM) {
1172 det = first;
1173 infile>>samp>>reg>>eta;
1174 }else
1175 {
1176 samp=first;
1177 infile>>reg>>eta;
1178 }
1179
1180 int gain=0;
1181 if(withGain) infile>>gain ;
1182 std::vector<float> vfl;
1183 float x;
1184
1185 for (int i=0;i<nvar;++i)
1186 {
1187 infile>>x;
1188 vfl.push_back(x);
1189 }
1190 ATH_MSG_DEBUG(" det,samp,reg,eta,values="
1191 <<det<<" "
1192 <<samp<<" "
1193 <<reg<<" "
1194 <<eta<<" " );
1195
1196 Identifier id ;
1197 if (EM)
1198 {
1199 if ( det==1 && samp==1 && reg==0 && eta==0 ){
1200 // eta=0 for strip, not connected, but keep it
1201 // Removed disconnected channels: 03/2016 RDS
1202 ATH_MSG_DEBUG(" disconnected strip ");
1203 }else
1204 id = m_em_idhelper->channel_id(det,samp,reg,eta,0);
1205 }else //HEC
1206 {
1207 id = m_hec_idhelper->channel_id(2,samp,reg,eta,0);
1208 }
1209 HWIdentifier hid = cabling->createSignalChannelID(id);
1210
1211 if (gain >= 0 && gain < 3)
1212 m_cache[gain].push_back(ROW_t(hid,vfl));
1213 }
1214
1215 return StatusCode::SUCCESS;
1216}
#define x
bool first
Definition DeMoScan.py:534

◆ ReadFileAll()

StatusCode FixLArElecCalib::ReadFileAll ( const std::string & filename,
const LArOnOffIdMapping * cabling,
bool withGain,
int nvar )
private

Definition at line 1218 of file FixLArElecCalib.cxx.

1218 {
1219
1220 std::ifstream infile(filename) ;
1221
1222 if(! infile.good() )
1223 {
1224 ATH_MSG_ERROR(" fail to open file "<<filename );
1225 return StatusCode::FAILURE;
1226 }
1227
1228 ATH_MSG_INFO(" Opened file "<<filename );
1229
1230 m_cache[0].clear();
1231 m_cache[1].clear();
1232 m_cache[2].clear();
1233
1234 char s[200];
1235 infile.getline(s,200);
1236 ATH_MSG_INFO(" first line of the file "<<s);
1237
1238 int det=0,samp=0,reg=0,eta=0;
1239 int first=0;
1240 while ( infile>>first>>samp>>reg>>eta ) {
1241 Identifier id ;
1242 int gain=0;
1243 float x;
1244 if(first <= 2) { // Calo 0,1,2 is EM
1245 det = first+1;
1246 if ( det==1 && samp==1 && reg==0 && eta==0 ){
1247 // eta=0 for strip, not connected, but keep it
1248 // Removed disconnected channels: 03/2016 RDS
1249 ATH_MSG_DEBUG(" disconnected strip ");
1250 // id = m_em_idhelper->disc_channel_id(det,samp,reg,eta,0);
1251 }else
1252 id = m_em_idhelper->channel_id(det,samp,reg,eta,0);
1253 } else if (first == 3) { // HEC
1254 id = m_hec_idhelper->channel_id(2,samp,reg,eta,0);
1255 } else if (first == 4) { // FCAL
1256 id = m_fcal_idhelper->channel_id(2,samp+1,eta,0);
1257 } else {
1258 ATH_MSG_WARNING(" Wrong calo number "<<first<<" skipping !!!");
1259 if(withGain) infile>>gain ;
1260 for (int i=0;i<nvar;++i) infile>>x;
1261 continue;
1262 }
1263 if(withGain) infile>>gain ;
1264 std::vector<float> vfl;
1265
1266 for (int i=0;i<nvar;++i)
1267 {
1268 infile>>x;
1269 vfl.push_back(x);
1270 }
1271 ATH_MSG_DEBUG(" first, det,samp,reg,eta,values="
1272 <<first<<" " <<det<<" " <<samp<<" " <<reg<<" " <<eta<<" " );
1273
1274 HWIdentifier hid = cabling->createSignalChannelID(id);
1275
1276 if (gain >= 0 && gain < 3) m_cache[gain].push_back(ROW_t(hid,vfl));
1277 else {
1278 ATH_MSG_WARNING(" Wrong gain " <<gain<<" skipping !");
1279 }
1280 }// while
1281
1282 return StatusCode::SUCCESS;
1283}

◆ renounce()

std::enable_if_t< std::is_void_v< std::result_of_t< decltype(&T::renounce)(T)> > &&!std::is_base_of_v< SG::VarHandleKeyArray, T > &&std::is_base_of_v< Gaudi::DataHandle, T >, void > AthCommonDataStore< AthCommonMsg< Algorithm > >::renounce ( T & h)
inlineprotectedinherited

Definition at line 380 of file AthCommonDataStore.h.

381 {
382 h.renounce();
384 }
std::enable_if_t< std::is_void_v< std::result_of_t< decltype(&T::renounce)(T)> > &&!std::is_base_of_v< SG::VarHandleKeyArray, T > &&std::is_base_of_v< Gaudi::DataHandle, T >, void > renounce(T &h)

◆ renounceArray()

void AthCommonDataStore< AthCommonMsg< Algorithm > >::renounceArray ( SG::VarHandleKeyArray & handlesArray)
inlineprotectedinherited

remove all handles from I/O resolution

Definition at line 364 of file AthCommonDataStore.h.

364 {
366 }

◆ set_object() [1/5]

void FixLArElecCalib::set_object ( LArAutoCorrMC::LArCondObj & obj,
const std::vector< float > & v )
private

Definition at line 1319 of file FixLArElecCalib.cxx.

1320{
1321 if (v.size()<4 )
1322 {
1323 ATH_MSG_ERROR( "for LArAutoCorrMC, size of vector = "<< v.size()<<" is less then 4" );
1324 return ;
1325 }
1326
1327 obj.m_vAutoCorr.resize(4);
1328 std::copy_n(v.begin(), 4, obj.m_vAutoCorr.begin());
1329 return;
1330}

◆ set_object() [2/5]

void FixLArElecCalib::set_object ( LArNoiseMC::LArCondObj & obj,
const std::vector< float > & v )
private

Definition at line 1294 of file FixLArElecCalib.cxx.

1295{
1296 if (v.size()!=1)
1297 {
1298 ATH_MSG_ERROR ("for LArNoiseMC, size of vector = "<< v.size() <<" differs from one");
1299 return ;
1300 }
1301 obj.m_Noise = v[0];
1302 return;
1303}

◆ set_object() [3/5]

void FixLArElecCalib::set_object ( LArRampMC::LArCondObj & obj,
const std::vector< float > & v )
private

Definition at line 1346 of file FixLArElecCalib.cxx.

1347{
1348 if (v.size()!=1 )
1349 {
1350 ATH_MSG_ERROR ("for LArRampMC, size of vector = "<< v.size());
1351 return ;
1352 }
1353 obj.m_vRamp.resize(3);
1354 obj.m_vRamp[0]=0;
1355 obj.m_vRamp[1]=v[0];
1356 obj.m_vRamp[2]=0;
1357
1358 return;
1359}

◆ set_object() [4/5]

void FixLArElecCalib::set_object ( LArShape32MC::LArCondObj & obj,
const std::vector< float > & v )
private

Definition at line 1380 of file FixLArElecCalib.cxx.

1381{
1382
1383 if (v.size()!=64 && v.size()!=32 )
1384 {
1385 ATH_MSG_ERROR ("for LArShape32MC, size of vector = "<< v.size());
1386 return ;
1387 }
1388
1389 unsigned int size = 32;
1390 obj.m_vShape.resize(size);
1391 obj.m_vShapeDer.resize(size);
1392
1393 for(unsigned int i=0;i<size;++i){
1394 obj.m_vShape[i]=v[i];
1395 if(v.size() == 64 ) obj.m_vShapeDer[i]=v[i+size]; else obj.m_vShapeDer[i]=0.;
1396 }
1397
1398 return;
1399}
size_t size() const
Number of registered mappings.

◆ set_object() [5/5]

void FixLArElecCalib::set_object ( LArSingleFloatP & obj,
const std::vector< float > & v )
private

Definition at line 1414 of file FixLArElecCalib.cxx.

1415{
1416 if (v.size()!=1)
1417 {
1418 ATH_MSG_ERROR( "for LArSingleFloatP, size of vector = "<< v.size() );
1419 return ;
1420 }
1421 obj.m_data = v[0];
1422 return;
1423}

◆ sysInitialize()

StatusCode AthAlgorithm::sysInitialize ( )
overridevirtualinherited

Override sysInitialize.

Override sysInitialize from the base class.

Loop through all output handles, and if they're WriteCondHandles, automatically register them and this Algorithm with the CondSvc

Scan through all outputHandles, and if they're WriteCondHandles, register them with the CondSvc

Reimplemented from AthCommonDataStore< AthCommonMsg< Algorithm > >.

Reimplemented in AthAnalysisAlgorithm, AthFilterAlgorithm, AthHistogramAlgorithm, and PyAthena::Alg.

Definition at line 66 of file AthAlgorithm.cxx.

66 {
68
69 if (sc.isFailure()) {
70 return sc;
71 }
72 ServiceHandle<ICondSvc> cs("CondSvc",name());
73 for (auto h : outputHandles()) {
74 if (h->isCondition() && h->mode() == Gaudi::DataHandle::Writer) {
75 // do this inside the loop so we don't create the CondSvc until needed
76 if ( cs.retrieve().isFailure() ) {
77 ATH_MSG_WARNING("no CondSvc found: won't autoreg WriteCondHandles");
78 return StatusCode::SUCCESS;
79 }
80 if (cs->regHandle(this,*h).isFailure()) {
81 sc = StatusCode::FAILURE;
82 ATH_MSG_ERROR("unable to register WriteCondHandle " << h->fullKey()
83 << " with CondSvc");
84 }
85 }
86 }
87 return sc;
88}
static Double_t sc
virtual StatusCode sysInitialize() override
Override sysInitialize.
AthCommonDataStore(const std::string &name, T... args)
virtual std::vector< Gaudi::DataHandle * > outputHandles() const override
::StatusCode StatusCode
StatusCode definition for legacy code.

◆ sysStart()

virtual StatusCode AthCommonDataStore< AthCommonMsg< Algorithm > >::sysStart ( )
overridevirtualinherited

Handle START transition.

We override this in order to make sure that conditions handle keys can cache a pointer to the conditions container.

◆ update_DAC2uA()

StatusCode FixLArElecCalib::update_DAC2uA ( const std::string & em_filename,
const std::string & hec_filename )
private

◆ updateVHKA()

void AthCommonDataStore< AthCommonMsg< Algorithm > >::updateVHKA ( Gaudi::Details::PropertyBase & )
inlineinherited

Definition at line 308 of file AthCommonDataStore.h.

308 {
309 // debug() << "updateVHKA for property " << p.name() << " " << p.toString()
310 // << " size: " << m_vhka.size() << endmsg;
311 for (auto &a : m_vhka) {
313 for (auto k : keys) {
314 k->setOwner(this);
315 }
316 }
317 }
std::vector< SG::VarHandleKeyArray * > m_vhka

Member Data Documentation

◆ m_cablingKey

SG::ReadCondHandleKey<LArOnOffIdMapping> FixLArElecCalib::m_cablingKey {this,"CablingKey","LArOnOffIdMap","SG Key of LArOnOffIdMapping object"}
private

Definition at line 68 of file FixLArElecCalib.h.

68{this,"CablingKey","LArOnOffIdMap","SG Key of LArOnOffIdMapping object"};

◆ m_cache

VROW_t FixLArElecCalib::m_cache[3]
private

Definition at line 130 of file FixLArElecCalib.h.

◆ m_CLKey

SG::ReadCondHandleKey<LArCalibLineMapping> FixLArElecCalib::m_CLKey {this, "CalibLineKey", "LArCalibLineMap", "calib line key"}
private

Definition at line 69 of file FixLArElecCalib.h.

69{this, "CalibLineKey", "LArCalibLineMap", "calib line key"};

◆ m_detStore

StoreGateSvc_t AthCommonDataStore< AthCommonMsg< Algorithm > >::m_detStore
privateinherited

Pointer to StoreGate (detector store by default).

Definition at line 393 of file AthCommonDataStore.h.

◆ m_em_idhelper

const LArEM_ID* FixLArElecCalib::m_em_idhelper
private

Definition at line 118 of file FixLArElecCalib.h.

◆ m_evtStore

StoreGateSvc_t AthCommonDataStore< AthCommonMsg< Algorithm > >::m_evtStore
privateinherited

Pointer to StoreGate (event store by default).

Definition at line 390 of file AthCommonDataStore.h.

◆ m_extendedExtraObjects

DataObjIDColl AthAlgorithm::m_extendedExtraObjects
privateinherited

Definition at line 79 of file AthAlgorithm.h.

◆ m_fcal_idhelper

const LArFCAL_ID* FixLArElecCalib::m_fcal_idhelper
private

Definition at line 120 of file FixLArElecCalib.h.

◆ m_fixFlag

IntegerProperty FixLArElecCalib::m_fixFlag {this, "FixFlag", 1, "which fix to apply"}
private

Definition at line 71 of file FixLArElecCalib.h.

71{this, "FixFlag", 1, "which fix to apply"};

◆ m_g4Phys

StringProperty FixLArElecCalib::m_g4Phys {this, "G4Phys", "", "which physics list to use"}
private

Definition at line 72 of file FixLArElecCalib.h.

72{this, "G4Phys", "", "which physics list to use"};

◆ m_hec_idhelper

const LArHEC_ID* FixLArElecCalib::m_hec_idhelper
private

Definition at line 119 of file FixLArElecCalib.h.

◆ m_infile

StringProperty FixLArElecCalib::m_infile {this, "InputFile", "", "name of inpput file"}
private

Definition at line 73 of file FixLArElecCalib.h.

73{this, "InputFile", "", "name of inpput file"};

◆ m_online_idhelper

const LArOnlineID* FixLArElecCalib::m_online_idhelper
private

Definition at line 121 of file FixLArElecCalib.h.

◆ m_scell_idhelper

const CaloCell_SuperCell_ID* FixLArElecCalib::m_scell_idhelper
private

Definition at line 125 of file FixLArElecCalib.h.

◆ m_sem_idhelper

const LArEM_SuperCell_ID* FixLArElecCalib::m_sem_idhelper
private

Definition at line 122 of file FixLArElecCalib.h.

◆ m_shec_idhelper

const LArHEC_SuperCell_ID* FixLArElecCalib::m_shec_idhelper
private

Definition at line 123 of file FixLArElecCalib.h.

◆ m_sonline_idhelper

const LArOnline_SuperCellID* FixLArElecCalib::m_sonline_idhelper
private

Definition at line 124 of file FixLArElecCalib.h.

◆ m_varHandleArraysDeclared

bool AthCommonDataStore< AthCommonMsg< Algorithm > >::m_varHandleArraysDeclared
privateinherited

Definition at line 399 of file AthCommonDataStore.h.

◆ m_vhka

std::vector<SG::VarHandleKeyArray*> AthCommonDataStore< AthCommonMsg< Algorithm > >::m_vhka
privateinherited

Definition at line 398 of file AthCommonDataStore.h.


The documentation for this class was generated from the following files: