Skip to content
Snippets Groups Projects
Commit 9cdaf5cb authored by Frank Winklmeier's avatar Frank Winklmeier
Browse files

Merge branch 'master-ATLASRECTS-4831-v3' into 'master'

Add methods using EventContext in some SCT conditions tools (ATLASRECTS-4831).

See merge request !20744
parents 6999695d 2f799284
No related branches found
No related tags found
9 merge requests!58791DataQualityConfigurations: Modify L1Calo config for web display,!46784MuonCondInterface: Enable thread-safety checking.,!46776Updated LArMonitoring config file for WD to match new files produced using MT,!45405updated ART test cron job,!42417Draft: DIRE and VINCIA Base Fragments for Pythia 8.3,!28528Revert 63f845ae,!27054Atr20369 210,!26342Monopole: Handle fractionally charged particles,!20744Add methods using EventContext in some SCT conditions tools (ATLASRECTS-4831).
Showing
with 403 additions and 171 deletions
......@@ -71,19 +71,19 @@ StatusCode SCT_ConditionsParameterTestAlg::execute(const EventContext& ctx) cons
ATH_MSG_INFO(m_conditionsParameterTool);
try {
paramFilled =(m_conditionsParameterTool->filled());
paramFilled =(m_conditionsParameterTool->filled(ctx));
} catch (...) {
ATH_MSG_FATAL("Exception caught while trying to determine whether the data object was filled");
return StatusCode::FAILURE;
}
try {
float maxval{m_conditionsParameterTool->max(SCT_CondParameterData::AVG_THRESHOLD)};
float minval{m_conditionsParameterTool->min(SCT_CondParameterData::AVG_THRESHOLD)};
float avg{m_conditionsParameterTool->avg(SCT_CondParameterData::AVG_THRESHOLD)};
float sd{m_conditionsParameterTool->sd(SCT_CondParameterData::AVG_THRESHOLD)};
unsigned int n{m_conditionsParameterTool->n(SCT_CondParameterData::AVG_THRESHOLD)};
float thresh{m_conditionsParameterTool->value(IdentifierHash{1760}, SCT_CondParameterData::AVG_THRESHOLD)};
float maxval{m_conditionsParameterTool->max(SCT_CondParameterData::AVG_THRESHOLD, ctx)};
float minval{m_conditionsParameterTool->min(SCT_CondParameterData::AVG_THRESHOLD, ctx)};
float avg{m_conditionsParameterTool->avg(SCT_CondParameterData::AVG_THRESHOLD, ctx)};
float sd{m_conditionsParameterTool->sd(SCT_CondParameterData::AVG_THRESHOLD, ctx)};
unsigned int n{m_conditionsParameterTool->n(SCT_CondParameterData::AVG_THRESHOLD, ctx)};
float thresh{m_conditionsParameterTool->value(IdentifierHash{1760}, SCT_CondParameterData::AVG_THRESHOLD, ctx)};
ATH_MSG_INFO(" value element 1760: " << thresh);
ATH_MSG_INFO(" max threshold: " << maxval);
ATH_MSG_INFO(" min threshold: " << minval);
......@@ -98,7 +98,7 @@ StatusCode SCT_ConditionsParameterTestAlg::execute(const EventContext& ctx) cons
SCT_ConditionsAlgorithms::S_t histo;
init(histo, 0.0, 8.0, 100);
std::vector<float> values;
m_conditionsParameterTool->getValues(values, SCT_CondParameterData::AVG_THRESHOLD);
m_conditionsParameterTool->getValues(values, SCT_CondParameterData::AVG_THRESHOLD, ctx);
for (float i: values) {
fill(histo, i);
}
......
......@@ -29,15 +29,15 @@ StatusCode SCT_ConfigurationConditionsTestAlg::initialize() {
return StatusCode::SUCCESS;
}
StatusCode SCT_ConfigurationConditionsTestAlg::execute(const EventContext& /*ctx*/) const {
StatusCode SCT_ConfigurationConditionsTestAlg::execute(const EventContext& ctx) const {
ATH_MSG_INFO("in execute()");
// Bad modules
unsigned int nBadMods{static_cast<unsigned int>(m_configConditions->badModules()->size())};
unsigned int nBadMods{static_cast<unsigned int>(m_configConditions->badModules(ctx)->size())};
// Bad links
unsigned int nBadLink0{0}, nBadLink1{0}, nBadLinkBoth{0};
const std::map<IdentifierHash, std::pair<bool, bool>>* badLinks{m_configConditions->badLinks()};
const std::map<IdentifierHash, std::pair<bool, bool>>* badLinks{m_configConditions->badLinks(ctx)};
std::map<IdentifierHash, std::pair<bool, bool>>::const_iterator linkItr{badLinks->begin()};
std::map<IdentifierHash, std::pair<bool, bool>>::const_iterator linkEnd{badLinks->end()};
while (linkItr != linkEnd) {
......@@ -50,7 +50,7 @@ StatusCode SCT_ConfigurationConditionsTestAlg::execute(const EventContext& /*ctx
// Bad chips
unsigned int nBadChips{0};
const std::map<Identifier, unsigned int>* badChips{m_configConditions->badChips()};
const std::map<Identifier, unsigned int>* badChips{m_configConditions->badChips(ctx)};
std::map<Identifier, unsigned int>::const_iterator chipItr{badChips->begin()};
std::map<Identifier, unsigned int>::const_iterator chipEnd{badChips->end()};
while (chipItr != chipEnd) {
......@@ -61,12 +61,12 @@ StatusCode SCT_ConfigurationConditionsTestAlg::execute(const EventContext& /*ctx
// Bad strips
std::set<Identifier> badStripsAll;
m_configConditions->badStrips(badStripsAll);
m_configConditions->badStrips(badStripsAll, ctx);
unsigned int nBadStrips{static_cast<unsigned int>(badStripsAll.size())};
// Bad strips (w/o bad modules and chips)
std::set<Identifier> badStripsExclusive;
m_configConditions->badStrips(badStripsExclusive, true, true);
m_configConditions->badStrips(badStripsExclusive, ctx, true, true);
unsigned int nBadStripsExclusive{static_cast<unsigned int>(badStripsExclusive.size())};
unsigned int nBadStripsExclusiveBEC[]{0,0,0};
......
......@@ -41,7 +41,7 @@ StatusCode SCT_DCSConditionsTestAlg::execute(const EventContext& ctx) const {
ATH_MSG_INFO(m_DCSConditionsTool);
try {
gettempworks = (m_DCSConditionsTool->sensorTemperature(Identifier{141015041}, InDetConditions::SCT_STRIP));
gettempworks = (m_DCSConditionsTool->sensorTemperature(Identifier{141015041}, ctx, InDetConditions::SCT_STRIP));
isgoodworks =(m_DCSConditionsTool->isGood(Identifier{208584704}, ctx, InDetConditions::SCT_SIDE));
module = (m_DCSConditionsTool->canReportAbout(InDetConditions::SCT_MODULE));
strip = (m_DCSConditionsTool->canReportAbout(InDetConditions::SCT_STRIP));
......@@ -55,14 +55,14 @@ StatusCode SCT_DCSConditionsTestAlg::execute(const EventContext& ctx) const {
ATH_MSG_INFO("gettemp(141015041,Strip) " << gettempworks);
try {
gethvworks = (m_DCSConditionsTool->modHV(Identifier{141015041}, InDetConditions::SCT_STRIP));
gethvworks = (m_DCSConditionsTool->modHV(Identifier{141015041}, ctx, InDetConditions::SCT_STRIP));
} catch(...) {
ATH_MSG_FATAL("Exception caught while trying to the modHV method");
return StatusCode::FAILURE;
}
ATH_MSG_INFO("gethv(141015041,Strip) " << (gethvworks ? "successful" : "failed"));
ATH_MSG_INFO("gethv(141015041,Strip) " << (m_DCSConditionsTool->modHV(Identifier{141015041}, InDetConditions::SCT_STRIP)));
ATH_MSG_INFO("gethv(141015041,Strip) " << (m_DCSConditionsTool->modHV(Identifier{141015041}, ctx, InDetConditions::SCT_STRIP)));
try {
isgoodworks = (m_DCSConditionsTool->isGood(Identifier{208584704}, ctx, InDetConditions::SCT_SIDE));
......
......@@ -99,7 +99,7 @@ StatusCode SCT_SiliconHVCondAlg::execute(const EventContext& ctx) const {
std::unique_ptr<SCT_DCSFloatCondData> writeCdo{std::make_unique<SCT_DCSFloatCondData>()};
const SCT_ID::size_type wafer_hash_max{m_pHelper->wafer_hash_max()};
for (SCT_ID::size_type hash{0}; hash<wafer_hash_max; hash++) {
writeCdo->setValue(hash, m_sctDCSTool->modHV(IdentifierHash(hash)));
writeCdo->setValue(hash, m_sctDCSTool->modHV(IdentifierHash(hash), ctx));
}
// Record the output cond object
......
......@@ -99,7 +99,7 @@ StatusCode SCT_SiliconTempCondAlg::execute(const EventContext& ctx) const {
std::unique_ptr<SCT_DCSFloatCondData> writeCdo{std::make_unique<SCT_DCSFloatCondData>()};
const SCT_ID::size_type wafer_hash_max{m_pHelper->wafer_hash_max()};
for (SCT_ID::size_type hash{0}; hash<wafer_hash_max; hash++) {
writeCdo->setValue(hash, m_sctDCSTool->sensorTemperature(IdentifierHash(hash)));
writeCdo->setValue(hash, m_sctDCSTool->sensorTemperature(IdentifierHash(hash), ctx));
}
// Record the output cond object
......
......@@ -43,15 +43,21 @@ class ISCT_ByteStreamErrorsTool: virtual public ISCT_ConditionsTool {
virtual const std::set<IdentifierHash>* getErrorSet(int errorType, const EventContext& ctx) const =0;
virtual bool isRODSimulatedData() const =0;
virtual bool isRODSimulatedData(const EventContext& ctx) const =0;
virtual bool isRODSimulatedData(const IdentifierHash& elementIdHash) const =0;
virtual bool isRODSimulatedData(const IdentifierHash& elementIdHash, const EventContext& ctx) const =0;
virtual bool isCondensedReadout() const =0;
virtual bool HVisOn() const =0;
virtual bool isCondensedReadout(const EventContext& ctx) const =0;
virtual bool isHVOn() const =0;
virtual bool isHVOn(const EventContext& ctx) const =0;
/** Temporary status of chips for a particular module (packed as 1st 12 bits of unsigned int) */
virtual unsigned int tempMaskedChips(const Identifier& moduleId) const =0;
virtual unsigned int tempMaskedChips(const Identifier& moduleId, const EventContext& ctx) const =0;
/** Status ABCD errors of chips for a particular module (packed as 1st 12 bits of unsigned int) */
virtual unsigned int abcdErrorChips(const Identifier& moduleId) const =0;
virtual unsigned int abcdErrorChips(const Identifier& moduleId, const EventContext& ctx) const =0;
private:
......
/*
Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration
*/
/**
......@@ -16,6 +16,7 @@
#include "SCT_ConditionsData/SCT_ChargeTrappingCondData.h"
//Gaudi Includes
#include "GaudiKernel/EventContext.h"
#include "GaudiKernel/IAlgTool.h"
//forward declarations
......@@ -34,7 +35,9 @@ class ISCT_ChargeTrappingTool: virtual public IAlgTool
/// Creates the InterfaceID and interfaceID() method
DeclareInterfaceID(ISCT_ChargeTrappingTool, 1, 0);
virtual SCT_ChargeTrappingCondData getCondData(const IdentifierHash& elementHash, double pos, const EventContext& ctx) const =0;
virtual SCT_ChargeTrappingCondData getCondData(const IdentifierHash& elementHash, double pos) const =0;
virtual void getHoleTransport(double& x0, double& y0, double& xfin, double& yfin, double& Q_m2, double& Q_m1, double& Q_00, double& Q_p1, double& Q_p2, const EventContext& ctx) const =0;
virtual void getHoleTransport(double& x0, double& y0, double& xfin, double& yfin, double& Q_m2, double& Q_m1, double& Q_00, double& Q_p1, double& Q_p2) const =0;
};
......
/*
Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration
*/
/**
......@@ -11,15 +11,16 @@
#ifndef ISCT_ConditionsParameterTool_h
#define ISCT_ConditionsParameterTool_h
//STL includes
#include <vector>
//Athena includes
#include "SCT_ConditionsData/SCT_CondParameterData.h"
#include "Identifier/IdentifierHash.h"
//Gaudi Includes
#include "GaudiKernel/EventContext.h"
#include "GaudiKernel/IAlgTool.h"
//Athena includes
#include "SCT_ConditionsData/SCT_CondParameterData.h"
#include "Identifier/IdentifierHash.h"
//STL includes
#include <vector>
/**
* @class ISCT_ConditionsParameterSvc
......@@ -33,39 +34,51 @@ class ISCT_ConditionsParameterTool: virtual public IAlgTool {
DeclareInterfaceID(ISCT_ConditionsParameterTool, 1, 0);
///Is the required parameter available?
virtual bool available(const SCT_CondParameterData::ParameterIndex iparam, const EventContext& ctx) const =0;
virtual bool available(const SCT_CondParameterData::ParameterIndex iparam) const =0;
///Give the indicated value for a module identifier hash
virtual float value(const IdentifierHash& idHash, const SCT_CondParameterData::ParameterIndex iparam, const EventContext& ctx) const =0;
virtual float value(const IdentifierHash& idHash, const SCT_CondParameterData::ParameterIndex iparam) const =0;
///Measure of how many valid values went to calculate it. Should be 1 but if, say, 3 chip values were valid out of 6, it could be less (0.5 in this case)
virtual float validity(const IdentifierHash& idHash, const SCT_CondParameterData::ParameterIndex iparam, const EventContext& ctx) const =0;
virtual float validity(const IdentifierHash& idHash, const SCT_CondParameterData::ParameterIndex iparam) const =0;
///Is a given value within acceptable limits?
virtual bool isValid(const float parameterValue, const SCT_CondParameterData::ParameterIndex iparam, const EventContext& ctx) const =0;
virtual bool isValid(const float parameterValue, const SCT_CondParameterData::ParameterIndex iparam) const =0;
///What is the default error value for this parameter?
virtual float invalid(const unsigned int iparam, const EventContext& ctx) const =0;
virtual float invalid(const unsigned int iparam) const =0;
///Maximum value read in from the database
virtual float max(const SCT_CondParameterData::ParameterIndex iparam, const EventContext& ctx) const =0;
virtual float max(const SCT_CondParameterData::ParameterIndex iparam) const =0;
///Minimum value read in from the database
virtual float min(const SCT_CondParameterData::ParameterIndex iparam, const EventContext& ctx) const =0;
virtual float min(const SCT_CondParameterData::ParameterIndex iparam) const =0;
///Average value
virtual float avg(const SCT_CondParameterData::ParameterIndex iparam, const EventContext& ctx) const =0;
virtual float avg(const SCT_CondParameterData::ParameterIndex iparam) const =0;
///Standard deviation
virtual float sd(const SCT_CondParameterData::ParameterIndex iparam, const EventContext& ctx) const =0;
virtual float sd(const SCT_CondParameterData::ParameterIndex iparam) const =0;
///Number of values read in
virtual unsigned int n(const SCT_CondParameterData::ParameterIndex iparam, const EventContext& ctx) const =0;
virtual unsigned int n(const SCT_CondParameterData::ParameterIndex iparam) const =0;
///Fill a user-provided vector with the values (hopefully won't be needed?)
virtual void getValues(std::vector<float>& userVector, const SCT_CondParameterData::ParameterIndex iparam, const EventContext& ctx) const =0;
virtual void getValues(std::vector<float>& userVector, const SCT_CondParameterData::ParameterIndex iparam) const =0;
///Report whether the structure was filled
virtual bool filled(const EventContext& ctx) const =0;
virtual bool filled() const =0;
};
......
/*
Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration
*/
/**
......@@ -39,24 +39,32 @@ class ISCT_ConfigurationConditionsTool: virtual public ISCT_ConditionsTool {
//@}
/** Set of bad module Identifiers */
virtual const std::set<Identifier>* badModules(const EventContext& ctx) const =0;
virtual const std::set<Identifier>* badModules() const =0;
/** Map of link status for all modules with at least one bad link (true = good, false = bad)*/
virtual const std::map<IdentifierHash, std::pair<bool, bool> >* badLinks(const EventContext& ctx) const =0;
virtual const std::map<IdentifierHash, std::pair<bool, bool> >* badLinks() const =0;
/** Link status for a particluar module (true = good, false = bad)*/
virtual std::pair<bool, bool> badLinks(const IdentifierHash& hash, const EventContext& ctx) const =0;
virtual std::pair<bool, bool> badLinks(const IdentifierHash& hash) const =0;
/** Map of chips status for all modules with at least one bad chip (packed as 1st 12 bits of unsigned int)*/
virtual const std::map<Identifier, unsigned int>* badChips(const EventContext& ctx) const =0;
virtual const std::map<Identifier, unsigned int>* badChips() const =0;
/** Chips status for a particular module (packed as 1st 12 bits of unsigned int)*/
virtual unsigned int badChips(const Identifier& moduleId, const EventContext& ctx) const =0;
virtual unsigned int badChips(const Identifier& moduleId) const =0;
/** Set of bad strip Identifiers */
virtual void badStrips(std::set<Identifier>& strips, const EventContext& ctx, bool ignoreBadModules=false, bool ignoreBadChips=false) const =0;
virtual void badStrips(std::set<Identifier>& strips, bool ignoreBadModules=false, bool ignoreBadChips=false) const =0;
/** Set of bad strip Identifiers for a particular module*/
virtual void badStrips(const Identifier& moduleId, std::set<Identifier>& strips, const EventContext& ctx, bool ignoreBadModules=false, bool ignoreBadChips=false) const =0;
virtual void badStrips(const Identifier& moduleId, std::set<Identifier>& strips, bool ignoreBadModules=false, bool ignoreBadChips=false) const =0;
/** Get the chip number containing a particular strip*/
virtual int getChip(const Identifier& stripId, const EventContext& ctx) const =0;
virtual int getChip(const Identifier& stripId) const =0;
private:
......
/*
Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration
*/
/**
......@@ -34,16 +34,22 @@ class ISCT_DCSConditionsTool: virtual public ISCT_ConditionsTool {
DeclareInterfaceID(ISCT_DCSConditionsTool, 1, 0);
//@}
virtual float modHV(const Identifier& elementId, const EventContext& ctx, InDetConditions::Hierarchy h=InDetConditions::DEFAULT) const =0;
virtual float modHV(const Identifier& elementId, InDetConditions::Hierarchy h=InDetConditions::DEFAULT) const =0;
//Does the same for hashIds
virtual float modHV(const IdentifierHash& hashId, const EventContext& ctx) const =0;
virtual float modHV(const IdentifierHash& hashId) const =0;
//Returns temp0 (0 if there is no information)
virtual float hybridTemperature(const Identifier& elementId, const EventContext& ctx, InDetConditions::Hierarchy h=InDetConditions::DEFAULT) const =0;
virtual float hybridTemperature(const Identifier& elementId, InDetConditions::Hierarchy h=InDetConditions::DEFAULT) const =0;
//Does the same for hashIds
virtual float hybridTemperature(const IdentifierHash& hashId, const EventContext& ctx) const =0;
virtual float hybridTemperature(const IdentifierHash& hashId) const =0;
//Returns temp0 + correction for Lorentz angle calculation (0 if there is no information)
virtual float sensorTemperature(const Identifier& elementId, const EventContext& ctx, InDetConditions::Hierarchy h=InDetConditions::DEFAULT) const =0;
virtual float sensorTemperature(const Identifier& elementId, InDetConditions::Hierarchy h=InDetConditions::DEFAULT) const =0;
//Does the same for hashIds
virtual float sensorTemperature(const IdentifierHash& hashId, const EventContext& ctx) const =0;
virtual float sensorTemperature(const IdentifierHash& hashId) const =0;
private:
......
/*
Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration
*/
/**
......@@ -12,12 +12,13 @@
#ifndef ISCT_RadDamageSummaryTool_h
#define ISCT_RadDamageSummaryTool_h
//Gaudi Includes
#include "GaudiKernel/IAlgTool.h"
//Athena include
#include "SCT_ConditionsData/SCT_ChargeTrappingCondData.h"
//Gaudi Includes
#include "GaudiKernel/EventContext.h"
#include "GaudiKernel/IAlgTool.h"
//forward declarations
class IdentifierHash;
......@@ -34,7 +35,9 @@ class ISCT_RadDamageSummaryTool: virtual public IAlgTool
/// Creates the InterfaceID and interfaceID() method
DeclareInterfaceID(ISCT_RadDamageSummaryTool, 1, 0);
virtual void holeTransport(double& x0, double& y0, double& xfin, double& yfin, double& Q_m2, double& Q_m1, double& Q_00, double& Q_p1, double& Q_p2, const EventContext& ctx) const =0;
virtual void holeTransport(double& x0, double& y0, double& xfin, double& yfin, double& Q_m2, double& Q_m1, double& Q_00, double& Q_p1, double& Q_p2) const =0;
virtual SCT_ChargeTrappingCondData getCondData(const IdentifierHash& elementHash, const double& zpos, const EventContext& ctx) const =0;
virtual SCT_ChargeTrappingCondData getCondData(const IdentifierHash& elementHash, const double& zpos) const =0;
};
......
......@@ -67,19 +67,31 @@ SCT_ByteStreamErrorsTool::finalize() {
////////////////////////////////////////////////////////////////////////////////////
bool
SCT_ByteStreamErrorsTool::isCondensedReadout() const {
const SCT_ByteStreamFractionContainer* fracData{getFracData()};
SCT_ByteStreamErrorsTool::isCondensedReadout(const EventContext& ctx) const {
const SCT_ByteStreamFractionContainer* fracData{getFracData(ctx)};
if (fracData==nullptr) return false;
return fracData->majority(SCT_ByteStreamFractionContainer::CondensedMode);
}
bool
SCT_ByteStreamErrorsTool::HVisOn() const {
const SCT_ByteStreamFractionContainer* fracData{getFracData()};
SCT_ByteStreamErrorsTool::isCondensedReadout() const {
const EventContext& ctx{Gaudi::Hive::currentContext()};
return isCondensedReadout(ctx);
}
bool
SCT_ByteStreamErrorsTool::isHVOn(const EventContext& ctx) const {
const SCT_ByteStreamFractionContainer* fracData{getFracData(ctx)};
if (fracData==nullptr) return true;
return fracData->majority(SCT_ByteStreamFractionContainer::HVOn);
}
bool
SCT_ByteStreamErrorsTool::isHVOn() const {
const EventContext& ctx{Gaudi::Hive::currentContext()};
return isHVOn(ctx);
}
/////////////////////////////////////////////////////////////////////////////
/** Used by ConditionsSummayTool to decide whether to call isGood() for a particular
......@@ -104,7 +116,7 @@ SCT_ByteStreamErrorsTool::canReportAbout(InDetConditions::Hierarchy h) const {
bool
SCT_ByteStreamErrorsTool::isGood(const IdentifierHash& elementIdHash, const EventContext& ctx) const {
if (m_checkRODSimulatedData and isRODSimulatedData(elementIdHash)) return false;
if (m_checkRODSimulatedData and isRODSimulatedData(elementIdHash, ctx)) return false;
bool result{true};
......@@ -117,9 +129,9 @@ SCT_ByteStreamErrorsTool::isGood(const IdentifierHash& elementIdHash, const Even
// If all 6 chips of a link issue ABCD errors or are bad chips or temporarily masked chips, the link is treated as bad one.
const Identifier wafer_id{m_sct_id->wafer_id(elementIdHash)};
const Identifier module_id{m_sct_id->module_id(wafer_id)};
unsigned int badChips{m_config->badChips(module_id)};
unsigned int abcdErrorChips2{abcdErrorChips(module_id)};
unsigned int tempMaskedChips2{tempMaskedChips(module_id)};
unsigned int badChips{m_config->badChips(module_id, ctx)};
unsigned int abcdErrorChips2{abcdErrorChips(module_id, ctx)};
unsigned int tempMaskedChips2{tempMaskedChips(module_id, ctx)};
const int side{m_sct_id->side(wafer_id)};
bool allChipsBad{true};
const int idMax{static_cast<short>(side==0 ? 6 : 12)};
......@@ -151,7 +163,7 @@ SCT_ByteStreamErrorsTool::isGood(const Identifier& elementId, const EventContext
return isGood(elementIdHash, ctx);
}
if (h==InDetConditions::SCT_CHIP) {
return isGoodChip(elementId);
return isGoodChip(elementId, ctx);
}
return true;
......@@ -165,7 +177,7 @@ SCT_ByteStreamErrorsTool::isGood(const Identifier& elementId, InDetConditions::H
}
bool
SCT_ByteStreamErrorsTool::isGoodChip(const Identifier& stripId) const {
SCT_ByteStreamErrorsTool::isGoodChip(const Identifier& stripId, const EventContext& ctx) const {
// This check assumes present SCT.
// Get module number
const Identifier moduleId{m_sct_id->module_id(stripId)};
......@@ -176,7 +188,7 @@ SCT_ByteStreamErrorsTool::isGoodChip(const Identifier& stripId) const {
const Identifier waferId{m_sct_id->wafer_id(stripId)};
const IdentifierHash waferHash{m_sct_id->wafer_hash(waferId)};
if (m_checkRODSimulatedData and isRODSimulatedData(waferHash)) return false;
if (m_checkRODSimulatedData and isRODSimulatedData(waferHash, ctx)) return false;
// tempMaskedChips and abcdErrorChips hold 12 bits.
// bit 0 (LSB) is chip 0 for side 0.
......@@ -184,9 +196,9 @@ SCT_ByteStreamErrorsTool::isGoodChip(const Identifier& stripId) const {
// bit 6 is chip 6 for side 1.
// bit 11 is chip 11 for side 1.
// Temporarily masked chip information
const unsigned int v_tempMaskedChips{tempMaskedChips(moduleId)};
const unsigned int v_tempMaskedChips{tempMaskedChips(moduleId, ctx)};
// Information of chips with ABCD errors
const unsigned int v_abcdErrorChips{abcdErrorChips(moduleId)};
const unsigned int v_abcdErrorChips{abcdErrorChips(moduleId, ctx)};
// Take 'OR' of tempMaskedChips and abcdErrorChips
const unsigned int badChips{v_tempMaskedChips | v_abcdErrorChips};
......@@ -200,7 +212,7 @@ SCT_ByteStreamErrorsTool::isGoodChip(const Identifier& stripId) const {
// If there is no bad chip on the side, this check is done.
if ((side==0 and (badChips & 0x3F)==0) or (side==1 and (badChips & 0xFC0)==0)) return true;
int chip{getChip(stripId)};
int chip{getChip(stripId, ctx)};
if (chip<0 or chip>=12) {
ATH_MSG_WARNING("chip number is invalid: " << chip);
return false;
......@@ -213,10 +225,10 @@ SCT_ByteStreamErrorsTool::isGoodChip(const Identifier& stripId) const {
}
int
SCT_ByteStreamErrorsTool::getChip(const Identifier& stripId) const {
SCT_ByteStreamErrorsTool::getChip(const Identifier& stripId, const EventContext& ctx) const {
const Identifier waferId{m_sct_id->wafer_id(stripId)};
const IdentifierHash waferHash{m_sct_id->wafer_hash(waferId)};
const InDetDD::SiDetectorElement* siElement{getDetectorElement(waferHash)};
const InDetDD::SiDetectorElement* siElement{getDetectorElement(waferHash, ctx)};
if (siElement==nullptr) {
ATH_MSG_DEBUG ("InDetDD::SiDetectorElement is not obtained from stripId " << stripId);
return -1;
......@@ -273,15 +285,25 @@ SCT_ByteStreamErrorsTool::resetSets(const EventContext& ctx) const {
* e.g. for monitoring plots.
*/
const std::set<IdentifierHash>*
SCT_ByteStreamErrorsTool::getErrorSet(int errorType) const {
const EventContext& ctx{Gaudi::Hive::currentContext()};
const std::set<IdentifierHash>*
SCT_ByteStreamErrorsTool::getErrorSet(int errorType, const EventContext& ctx) const {
if (errorType>=0 and errorType<SCT_ByteStreamErrors::NUM_ERROR_TYPES) {
return getErrorSet(errorType, ctx);
StatusCode sc{fillData(ctx)};
if (sc.isFailure()) {
ATH_MSG_ERROR("fillData in getErrorSet fails");
}
return &m_bsErrors[errorType][ctx.slot()];
}
return nullptr;
}
const std::set<IdentifierHash>*
SCT_ByteStreamErrorsTool::getErrorSet(int errorType) const {
const EventContext& ctx{Gaudi::Hive::currentContext()};
return getErrorSet(errorType, ctx);
}
////////////////////////////////////////////////////////////////////////
/** this function is used to populate the data of this tool from
......@@ -347,7 +369,7 @@ SCT_ByteStreamErrorsTool::fillData(const EventContext& ctx) const {
} else if (elt->second>=SCT_ByteStreamErrors::TempMaskedChip0 and elt->second<=SCT_ByteStreamErrors::TempMaskedChip5) {
m_tempMaskedChips[slot][module_id] |= (1 << (elt->second-SCT_ByteStreamErrors::TempMaskedChip0 + side*6));
} else {
std::pair<bool, bool> badLinks{m_config->badLinks(elt->first)};
std::pair<bool, bool> badLinks{m_config->badLinks(elt->first, ctx)};
bool result{(side==0 ? badLinks.first : badLinks.second) and (badLinks.first xor badLinks.second)};
if (result) {
/// error in a module using RX redundancy - add an error for the other link as well!!
......@@ -385,40 +407,59 @@ SCT_ByteStreamErrorsTool::addError(const IdentifierHash& id, int errorType, cons
/** A bit from a particular word in the ByteStream if the data
* is coming from the ROD simulator rather than real modules. */
bool
SCT_ByteStreamErrorsTool::isRODSimulatedData() const {
const SCT_ByteStreamFractionContainer* fracData{getFracData()};
SCT_ByteStreamErrorsTool::isRODSimulatedData(const EventContext& ctx) const {
const SCT_ByteStreamFractionContainer* fracData{getFracData(ctx)};
if (fracData==nullptr) return false;
return fracData->majority(SCT_ByteStreamFractionContainer::SimulatedData);
}
///////////////////////////////////////////////////////////////////////////////
bool
SCT_ByteStreamErrorsTool::isRODSimulatedData(const IdentifierHash& elementIdHash) const {
SCT_ByteStreamErrorsTool::isRODSimulatedData() const {
const EventContext& ctx{Gaudi::Hive::currentContext()};
return isRODSimulatedData(ctx);
}
///////////////////////////////////////////////////////////////////////////////
bool
SCT_ByteStreamErrorsTool::isRODSimulatedData(const IdentifierHash& elementIdHash, const EventContext& ctx) const {
const std::set<IdentifierHash>* errorSet{getErrorSet(SCT_ByteStreamErrors::RODSimulatedData, ctx)};
return (errorSet->count(elementIdHash)!=0);
}
bool
SCT_ByteStreamErrorsTool::isRODSimulatedData(const IdentifierHash& elementIdHash) const {
const EventContext& ctx{Gaudi::Hive::currentContext()};
return isRODSimulatedData(elementIdHash, ctx);
}
///////////////////////////////////////////////////////////////////////////////
unsigned int SCT_ByteStreamErrorsTool::tempMaskedChips(const Identifier& moduleId) const {
const EventContext& ctx{Gaudi::Hive::currentContext()};
unsigned int SCT_ByteStreamErrorsTool::tempMaskedChips(const Identifier& moduleId, const EventContext& ctx) const {
const std::map<Identifier, unsigned int>& v_tempMaskedChips{getTempMaskedChips(ctx)};
std::map<Identifier, unsigned int>::const_iterator it{v_tempMaskedChips.find(moduleId)};
if (it!=v_tempMaskedChips.end()) return it->second;
return 0;
}
unsigned int SCT_ByteStreamErrorsTool::abcdErrorChips(const Identifier& moduleId) const {
unsigned int SCT_ByteStreamErrorsTool::tempMaskedChips(const Identifier& moduleId) const {
const EventContext& ctx{Gaudi::Hive::currentContext()};
return tempMaskedChips(moduleId, ctx);
}
unsigned int SCT_ByteStreamErrorsTool::abcdErrorChips(const Identifier& moduleId, const EventContext& ctx) const {
const std::map<Identifier, unsigned int>& v_abcdErrorChips{getAbcdErrorChips(ctx)};
std::map<Identifier, unsigned int>::const_iterator it{v_abcdErrorChips.find(moduleId)};
if (it!=v_abcdErrorChips.end()) return it->second;
return 0;
}
const SCT_ByteStreamFractionContainer* SCT_ByteStreamErrorsTool::getFracData() const {
SG::ReadHandle<SCT_ByteStreamFractionContainer> fracCont{m_bsFracContainerName};
unsigned int SCT_ByteStreamErrorsTool::abcdErrorChips(const Identifier& moduleId) const {
const EventContext& ctx{Gaudi::Hive::currentContext()};
return abcdErrorChips(moduleId, ctx);
}
const SCT_ByteStreamFractionContainer* SCT_ByteStreamErrorsTool::getFracData(const EventContext& ctx) const {
SG::ReadHandle<SCT_ByteStreamFractionContainer> fracCont{m_bsFracContainerName, ctx};
if (not fracCont.isValid()) {
ATH_MSG_INFO(m_bsFracContainerName.key() << " cannot be retrieved");
return nullptr;
......@@ -426,9 +467,7 @@ const SCT_ByteStreamFractionContainer* SCT_ByteStreamErrorsTool::getFracData() c
return fracCont.ptr();
}
const InDetDD::SiDetectorElement* SCT_ByteStreamErrorsTool::getDetectorElement(const IdentifierHash& waferHash) const {
const EventContext& ctx{Gaudi::Hive::currentContext()};
const InDetDD::SiDetectorElement* SCT_ByteStreamErrorsTool::getDetectorElement(const IdentifierHash& waferHash, const EventContext& ctx) const {
static const EventContext::ContextEvt_t invalidValue{EventContext::INVALID_CONTEXT_EVT};
EventContext::ContextID_t slot{ctx.slot()};
EventContext::ContextEvt_t evt{ctx.evt()};
......@@ -448,15 +487,6 @@ const InDetDD::SiDetectorElement* SCT_ByteStreamErrorsTool::getDetectorElement(c
return m_detectorElements->getDetectorElement(waferHash);
}
const std::set<IdentifierHash>* SCT_ByteStreamErrorsTool::getErrorSet(int errorType, const EventContext& ctx) const {
StatusCode sc{fillData(ctx)};
if (sc.isFailure()) {
ATH_MSG_ERROR("fillData in getErrorSet fails");
}
return &m_bsErrors[errorType][ctx.slot()];
}
const std::map<Identifier, unsigned int>& SCT_ByteStreamErrorsTool::getTempMaskedChips(const EventContext& ctx) const {
StatusCode sc{fillData(ctx)};
if (sc.isFailure()) {
......
......@@ -63,14 +63,20 @@ public:
virtual bool isGood(const IdentifierHash& elementIdHash) const override;
virtual bool isGood(const IdentifierHash& elementIdHash, const EventContext& ctx) const override;
const std::set<IdentifierHash>* getErrorSet(int errorType) const override; // Used by SCTRawDataProviderTool and others
const std::set<IdentifierHash>* getErrorSet(int errorType, const EventContext& ctx) const override; // Used by SCTRawDataProviderTool and others
const std::set<IdentifierHash>* getErrorSet(int errorType) const override; // Used by SCTRawDataProviderTool and others
virtual unsigned int tempMaskedChips(const Identifier& moduleId) const override; // Internally used
virtual unsigned int tempMaskedChips(const Identifier& moduleId, const EventContext& ctx) const override; // Internally used
virtual unsigned int tempMaskedChips(const Identifier& moduleId) const override;
virtual unsigned int abcdErrorChips(const Identifier& moduleId) const override; // Internally used
virtual unsigned int abcdErrorChips(const Identifier& moduleId, const EventContext& ctx) const override; // Internally used
virtual bool isRODSimulatedData(const EventContext& ctx) const override; // Internally used
virtual bool isRODSimulatedData() const override; // Internally used
virtual bool isRODSimulatedData(const IdentifierHash& elementIdHash, const EventContext& ctx) const override;
virtual bool isRODSimulatedData(const IdentifierHash& elementIdHash) const override;
virtual bool HVisOn() const override; // Internally used
virtual bool isHVOn(const EventContext& ctx) const override; // Not used
virtual bool isHVOn() const override; // Not used
virtual bool isCondensedReadout(const EventContext& ctx) const override; // Not used
virtual bool isCondensedReadout() const override; // Not used
private:
......@@ -107,12 +113,12 @@ private:
void addError(const IdentifierHash& id, int errorType, const EventContext& ctx) const;
void resetSets(const EventContext& ctx) const;
bool isGoodChip(const Identifier& stripId) const;
int getChip(const Identifier& stripId) const;
bool isGoodChip(const Identifier& stripId, const EventContext& ctx) const;
int getChip(const Identifier& stripId, const EventContext& ctx) const;
// For isRODSimulatedData, HVisOn and isCondensedReadout
const SCT_ByteStreamFractionContainer* getFracData() const;
const InDetDD::SiDetectorElement* getDetectorElement(const IdentifierHash& waferHash) const;
const SCT_ByteStreamFractionContainer* getFracData(const EventContext& ctx) const;
const InDetDD::SiDetectorElement* getDetectorElement(const IdentifierHash& waferHash, const EventContext& ctx) const;
const std::map<Identifier, unsigned int>& getTempMaskedChips(const EventContext& ctx) const;
const std::map<Identifier, unsigned int>& getAbcdErrorChips(const EventContext& ctx) const;
......
/*
Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration
*/
/**
......@@ -89,17 +89,30 @@ StatusCode SCT_ChargeTrappingTool::finalize()
return StatusCode::SUCCESS;
}
SCT_ChargeTrappingCondData SCT_ChargeTrappingTool::getCondData(const IdentifierHash& elementHash, double pos, const EventContext& ctx) const
{
return calculate(elementHash, pos, ctx);
}
SCT_ChargeTrappingCondData SCT_ChargeTrappingTool::getCondData(const IdentifierHash& elementHash, double pos) const
{
return calculate(elementHash, pos);
const EventContext& ctx{Gaudi::Hive::currentContext()};
return getCondData(elementHash, pos, ctx);
}
void SCT_ChargeTrappingTool::getHoleTransport(double& x0, double& y0, double& xfin, double& yfin, double& Q_m2, double& Q_m1, double& Q_00, double& Q_p1, double& Q_p2) const
void SCT_ChargeTrappingTool::getHoleTransport(double& x0, double& y0, double& xfin, double& yfin, double& Q_m2, double& Q_m1, double& Q_00, double& Q_p1, double& Q_p2, const EventContext& /*ctx*/) const
{
holeTransport(x0, y0, xfin, yfin, Q_m2, Q_m1, Q_00, Q_p1, Q_p2);
}
SCT_ChargeTrappingCondData SCT_ChargeTrappingTool::calculate(const IdentifierHash& elementHash, double pos) const
void SCT_ChargeTrappingTool::getHoleTransport(double& x0, double& y0, double& xfin, double& yfin, double& Q_m2, double& Q_m1, double& Q_00, double& Q_p1, double& Q_p2) const
{
const EventContext& ctx{Gaudi::Hive::currentContext()};
getHoleTransport(x0, y0, xfin, yfin, Q_m2, Q_m1, Q_00, Q_p1, Q_p2, ctx);
}
SCT_ChargeTrappingCondData SCT_ChargeTrappingTool::calculate(const IdentifierHash& elementHash, double pos, const EventContext& ctx) const
{
ATH_MSG_VERBOSE("Updating cache for elementHash = " << elementHash);
......@@ -113,7 +126,7 @@ SCT_ChargeTrappingCondData SCT_ChargeTrappingTool::calculate(const IdentifierHas
SCT_ChargeTrappingCondData condData;
const InDetDD::SiDetectorElement* element{getDetectorElement(elementHash)};
const InDetDD::SiDetectorElement* element{getDetectorElement(elementHash, ctx)};
double temperature{0.};
double deplVoltage{0.};
......@@ -339,9 +352,7 @@ void SCT_ChargeTrappingTool::holeTransport(double& x0, double& y0, double& xfin,
return;
}
const InDetDD::SiDetectorElement* SCT_ChargeTrappingTool::getDetectorElement(const IdentifierHash& waferHash) const {
const EventContext& ctx{Gaudi::Hive::currentContext()};
const InDetDD::SiDetectorElement* SCT_ChargeTrappingTool::getDetectorElement(const IdentifierHash& waferHash, const EventContext& ctx) const {
static const EventContext::ContextEvt_t invalidValue{EventContext::INVALID_CONTEXT_EVT};
EventContext::ContextID_t slot{ctx.slot()};
EventContext::ContextEvt_t evt{ctx.evt()};
......
/*
Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration
*/
/**
......@@ -48,11 +48,13 @@ class SCT_ChargeTrappingTool: public extends<AthAlgTool, ISCT_ChargeTrappingTool
virtual StatusCode initialize() override;
virtual StatusCode finalize() override;
virtual SCT_ChargeTrappingCondData getCondData(const IdentifierHash& elementHash, double pos, const EventContext& ctx) const override;
virtual SCT_ChargeTrappingCondData getCondData(const IdentifierHash& elementHash, double pos) const override;
virtual void getHoleTransport(double& x0, double& y0, double& xfin, double& yfin, double& Q_m2, double& Q_m1, double& Q_00, double& Q_p1, double& Q_p2, const EventContext& ctx) const override;
virtual void getHoleTransport(double& x0, double& y0, double& xfin, double& yfin, double& Q_m2, double& Q_m1, double& Q_00, double& Q_p1, double& Q_p2) const override;
private:
SCT_ChargeTrappingCondData calculate(const IdentifierHash& elementHash, double pos) const;
SCT_ChargeTrappingCondData calculate(const IdentifierHash& elementHash, double pos, const EventContext& ctx) const;
double induced(int istrip, double x, double y) const;
double getPotentialValue(int& ix, int& iy);
void holeTransport(double& x0, double& y0, double& xfin, double& yfin, double& Q_m2, double& Q_m1, double& Q_00, double& Q_p1, double& Q_p2) const;
......@@ -90,7 +92,7 @@ class SCT_ChargeTrappingTool: public extends<AthAlgTool, ISCT_ChargeTrappingTool
mutable std::vector<EventContext::ContextEvt_t> m_cacheElements;
// Pointer of InDetDD::SiDetectorElementCollection
mutable Gaudi::Hive::ContextSpecificPtr<const InDetDD::SiDetectorElementCollection> m_detectorElements;
const InDetDD::SiDetectorElement* getDetectorElement(const IdentifierHash& waferHash) const;
const InDetDD::SiDetectorElement* getDetectorElement(const IdentifierHash& waferHash, const EventContext& ctx) const;
};
#endif // SCT_ChargeTrappingTool_h
/*
Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration
*/
/**
......@@ -32,35 +32,59 @@ SCT_ConditionsParameterTool::finalize() {
///Is the required parameter available?
bool
SCT_ConditionsParameterTool::available(const SCT_CondParameterData::ParameterIndex iparam) const {
SCT_ConditionsParameterTool::available(const SCT_CondParameterData::ParameterIndex iparam, const EventContext& /*ctx*/) const {
return (iparam==SCT_CondParameterData::AVG_THRESHOLD);
}
bool
SCT_ConditionsParameterTool::available(const SCT_CondParameterData::ParameterIndex iparam) const {
const EventContext& ctx{Gaudi::Hive::currentContext()};
return available(iparam, ctx);
}
///Give the indicated value for a module identifier hash
float
SCT_ConditionsParameterTool::value(const IdentifierHash& idHash, const SCT_CondParameterData::ParameterIndex iparam) const {
const SCT_CondParameterData* data{getCondData()};
SCT_ConditionsParameterTool::value(const IdentifierHash& idHash, const SCT_CondParameterData::ParameterIndex iparam, const EventContext& ctx) const {
const SCT_CondParameterData* data{getCondData(ctx)};
if (data==nullptr) return invalid(iparam);
return data->getValue(idHash, iparam);
}
float
SCT_ConditionsParameterTool::value(const IdentifierHash& idHash, const SCT_CondParameterData::ParameterIndex iparam) const {
const EventContext& ctx{Gaudi::Hive::currentContext()};
return value(idHash, iparam, ctx);
}
///Measure of how many valid values went to calculate it. Should be 1 but if, say, 3 chip values were valid out of 6, it could be less (0.5 in this case)
float
SCT_ConditionsParameterTool::validity(const IdentifierHash& /*idHash*/, const SCT_CondParameterData::ParameterIndex /*iparam*/) const {
SCT_ConditionsParameterTool::validity(const IdentifierHash& /*idHash*/, const SCT_CondParameterData::ParameterIndex /*iparam*/, const EventContext& /*ctx*/) const {
return 1.0;
}
float
SCT_ConditionsParameterTool::validity(const IdentifierHash& idHash, const SCT_CondParameterData::ParameterIndex iparam) const {
const EventContext& ctx{Gaudi::Hive::currentContext()};
return validity(idHash, iparam, ctx);
}
///Is a given value within acceptable limits?
bool
SCT_ConditionsParameterTool::isValid(const float parameterValue, const SCT_CondParameterData::ParameterIndex iparam) const {
const SCT_CondParameterData* data{getCondData()};
SCT_ConditionsParameterTool::isValid(const float parameterValue, const SCT_CondParameterData::ParameterIndex iparam, const EventContext& ctx) const {
const SCT_CondParameterData* data{getCondData(ctx)};
if (data==nullptr) return invalid(iparam);
return data->isValid(parameterValue, iparam);
}
bool
SCT_ConditionsParameterTool::isValid(const float parameterValue, const SCT_CondParameterData::ParameterIndex iparam) const {
const EventContext& ctx{Gaudi::Hive::currentContext()};
return isValid(parameterValue, iparam, ctx);
}
///What is the default error value for this parameter?
float
SCT_ConditionsParameterTool::invalid(const unsigned int iparam) const {
SCT_ConditionsParameterTool::invalid(const unsigned int iparam, const EventContext& /*ctx*/) const {
float result{0.0};
if (iparam==SCT_CondParameterData::AVG_THRESHOLD) {
result=std::numeric_limits<float>::quiet_NaN();
......@@ -68,63 +92,111 @@ SCT_ConditionsParameterTool::invalid(const unsigned int iparam) const {
return result;
}
float
SCT_ConditionsParameterTool::invalid(const unsigned int iparam) const {
const EventContext& ctx{Gaudi::Hive::currentContext()};
return invalid(iparam, ctx);
}
///Maximum value read in from the database
float
SCT_ConditionsParameterTool::max(const SCT_CondParameterData::ParameterIndex iparam) const {
const SCT_CondParameterData* data{getCondData()};
SCT_ConditionsParameterTool::max(const SCT_CondParameterData::ParameterIndex iparam, const EventContext& ctx) const {
const SCT_CondParameterData* data{getCondData(ctx)};
if (data==nullptr) return invalid(iparam);
return data->max(iparam);
}
float
SCT_ConditionsParameterTool::max(const SCT_CondParameterData::ParameterIndex iparam) const {
const EventContext& ctx{Gaudi::Hive::currentContext()};
return max(iparam, ctx);
}
///Minimum value read in from the database
float
SCT_ConditionsParameterTool::min(const SCT_CondParameterData::ParameterIndex iparam) const {
const SCT_CondParameterData* data{getCondData()};
SCT_ConditionsParameterTool::min(const SCT_CondParameterData::ParameterIndex iparam, const EventContext& ctx) const {
const SCT_CondParameterData* data{getCondData(ctx)};
if (data==nullptr) return invalid(iparam);
return data->min(iparam);
}
float
SCT_ConditionsParameterTool::min(const SCT_CondParameterData::ParameterIndex iparam) const {
const EventContext& ctx{Gaudi::Hive::currentContext()};
return min(iparam, ctx);
}
///Average value
float
SCT_ConditionsParameterTool::avg(const SCT_CondParameterData::ParameterIndex iparam) const {
const SCT_CondParameterData* data{getCondData()};
SCT_ConditionsParameterTool::avg(const SCT_CondParameterData::ParameterIndex iparam, const EventContext& ctx) const {
const SCT_CondParameterData* data{getCondData(ctx)};
if (data==nullptr) return invalid(iparam);
return data->avg(iparam);
}
float
SCT_ConditionsParameterTool::avg(const SCT_CondParameterData::ParameterIndex iparam) const {
const EventContext& ctx{Gaudi::Hive::currentContext()};
return avg(iparam, ctx);
}
///Standard deviation
float
SCT_ConditionsParameterTool::sd(const SCT_CondParameterData::ParameterIndex iparam) const {
const SCT_CondParameterData* data{getCondData()};
SCT_ConditionsParameterTool::sd(const SCT_CondParameterData::ParameterIndex iparam, const EventContext& ctx) const {
const SCT_CondParameterData* data{getCondData(ctx)};
if (data==nullptr) return invalid(iparam);
return data->sd(iparam);
}
float
SCT_ConditionsParameterTool::sd(const SCT_CondParameterData::ParameterIndex iparam) const {
const EventContext& ctx{Gaudi::Hive::currentContext()};
return sd(iparam, ctx);
}
///Number of values read in
unsigned int
SCT_ConditionsParameterTool::n(const SCT_CondParameterData::ParameterIndex iparam) const {
const SCT_CondParameterData* data{getCondData()};
SCT_ConditionsParameterTool::n(const SCT_CondParameterData::ParameterIndex iparam, const EventContext& ctx) const {
const SCT_CondParameterData* data{getCondData(ctx)};
if (data==nullptr) return 0;
return data->n(iparam);
}
unsigned int
SCT_ConditionsParameterTool::n(const SCT_CondParameterData::ParameterIndex iparam) const {
const EventContext& ctx{Gaudi::Hive::currentContext()};
return n(iparam, ctx);
}
///Fill a user-provided vector with the values (hopefully won't be needed?)
void
SCT_ConditionsParameterTool::getValues(std::vector<float>& userVector, const SCT_CondParameterData::ParameterIndex iparam) const {
const SCT_CondParameterData* data{getCondData()};
SCT_ConditionsParameterTool::getValues(std::vector<float>& userVector, const SCT_CondParameterData::ParameterIndex iparam, const EventContext& ctx) const {
const SCT_CondParameterData* data{getCondData(ctx)};
if (data!=nullptr) data->getValues(userVector, iparam);
//no return value
}
void
SCT_ConditionsParameterTool::getValues(std::vector<float>& userVector, const SCT_CondParameterData::ParameterIndex iparam) const {
const EventContext& ctx{Gaudi::Hive::currentContext()};
getValues(userVector, iparam, ctx);
}
///Report whether the structure was filled
bool
SCT_ConditionsParameterTool::filled() const {
const SCT_CondParameterData* data{getCondData()};
SCT_ConditionsParameterTool::filled(const EventContext& ctx) const {
const SCT_CondParameterData* data{getCondData(ctx)};
return (data!=nullptr);
}
const SCT_CondParameterData* SCT_ConditionsParameterTool::getCondData() const {
SG::ReadCondHandle<SCT_CondParameterData> condData{m_condKey};
bool
SCT_ConditionsParameterTool::filled() const {
const EventContext& ctx{Gaudi::Hive::currentContext()};
return filled(ctx);
}
const SCT_CondParameterData* SCT_ConditionsParameterTool::getCondData(const EventContext& ctx) const {
SG::ReadCondHandle<SCT_CondParameterData> condData{m_condKey, ctx};
if (not condData.isValid()) {
ATH_MSG_ERROR("Failed to get " << m_condKey.key());
return nullptr;
......
......@@ -47,45 +47,57 @@ class SCT_ConditionsParameterTool: public extends<AthAlgTool, ISCT_ConditionsPar
//@}
///Is the required parameter available?
virtual bool available(const SCT_CondParameterData::ParameterIndex iparam, const EventContext& ctx) const override;
virtual bool available(const SCT_CondParameterData::ParameterIndex iparam) const override;
///Give the indicated value for a module identifier hash
virtual float value(const IdentifierHash& idHash, const SCT_CondParameterData::ParameterIndex iparam, const EventContext& ctx) const override;
virtual float value(const IdentifierHash& idHash, const SCT_CondParameterData::ParameterIndex iparam) const override;
///Measure of how many valid values went to calculate it. Should be 1 but if, say, 3 chip values were valid out of 6, it could be less (0.5 in this case)
virtual float validity(const IdentifierHash& idHash, const SCT_CondParameterData::ParameterIndex iparam, const EventContext& ctx) const override;
virtual float validity(const IdentifierHash& idHash, const SCT_CondParameterData::ParameterIndex iparam) const override;
///Is a given value within acceptable limits?
virtual bool isValid(const float parameterValue, const SCT_CondParameterData::ParameterIndex iparam, const EventContext& ctx) const override;
virtual bool isValid(const float parameterValue, const SCT_CondParameterData::ParameterIndex iparam) const override;
///What is the default error value for this parameter?
virtual float invalid(const unsigned int iparam, const EventContext& ctx) const override;
virtual float invalid(const unsigned int iparam) const override;
///Maximum value read in from the database
virtual float max(const SCT_CondParameterData::ParameterIndex iparam, const EventContext& ctx) const override;
virtual float max(const SCT_CondParameterData::ParameterIndex iparam) const override;
///Minimum value read in from the database
virtual float min(const SCT_CondParameterData::ParameterIndex iparam, const EventContext& ctx) const override;
virtual float min(const SCT_CondParameterData::ParameterIndex iparam) const override;
///Average value
virtual float avg(const SCT_CondParameterData::ParameterIndex iparam, const EventContext& ctx) const override;
virtual float avg(const SCT_CondParameterData::ParameterIndex iparam) const override;
///Standard deviation
virtual float sd(const SCT_CondParameterData::ParameterIndex iparam, const EventContext& ctx) const override;
virtual float sd(const SCT_CondParameterData::ParameterIndex iparam) const override;
///Number of values read in
virtual unsigned int n(const SCT_CondParameterData::ParameterIndex iparam, const EventContext& ctx) const override;
virtual unsigned int n(const SCT_CondParameterData::ParameterIndex iparam) const override;
///Fill a user-provided vector with the values (hopefully won't be needed?)
virtual void getValues(std::vector<float>& userVector, const SCT_CondParameterData::ParameterIndex iparam, const EventContext& ctx) const override;
virtual void getValues(std::vector<float>& userVector, const SCT_CondParameterData::ParameterIndex iparam) const override;
///Report whether the structure was filled
virtual bool filled(const EventContext& ctx) const override;
virtual bool filled() const override;
private:
//the data structure
SG::ReadCondHandleKey<SCT_CondParameterData> m_condKey{this, "CondKey", "SCT_CondParameterData", "SCT parameters"};
const SCT_CondParameterData* getCondData() const;
const SCT_CondParameterData* getCondData(const EventContext& ctx) const;
};
#endif // SCT_ConditionsParameterTool_h
......@@ -67,13 +67,13 @@ bool SCT_ConfigurationConditionsTool::isGood(const Identifier& elementId, const
result = (not condData->isBadStrip(m_pHelper->wafer_hash(m_pHelper->wafer_id(elementId)),
m_pHelper->strip(elementId)));
// If strip itself is not bad, check if it's in a bad module
if (result and m_checkStripsInsideModules) result = (not isStripInBadModule(elementId));
if (result and m_checkStripsInsideModules) result = (not isStripInBadModule(elementId, ctx));
} else if (h == InDetConditions::SCT_MODULE) {
result = (not condData->isBadModuleId(elementId));
} else if (h == InDetConditions::SCT_SIDE or h == InDetConditions::DEFAULT) {
result = (not condData->isBadWaferId(elementId));
} else if (h == InDetConditions::SCT_CHIP) {
result = isGoodChip(elementId);
result = isGoodChip(elementId, ctx);
}
return result;
}
......@@ -92,12 +92,11 @@ bool SCT_ConfigurationConditionsTool::isGood(const IdentifierHash& hashId, const
bool SCT_ConfigurationConditionsTool::isGood(const IdentifierHash& hashId) const {
const EventContext& ctx{Gaudi::Hive::currentContext()};
return isGood(hashId, ctx);
}
// Is a chip with this Identifier good?
bool SCT_ConfigurationConditionsTool::isGoodChip(const Identifier& stripId) const {
bool SCT_ConfigurationConditionsTool::isGoodChip(const Identifier& stripId, const EventContext& ctx) const {
// This check assumes present SCT.
// Get module number
const Identifier moduleId{m_pHelper->module_id(stripId)};
......@@ -107,7 +106,7 @@ bool SCT_ConfigurationConditionsTool::isGoodChip(const Identifier& stripId) cons
}
// badChips word for the module
const unsigned int v_badChips{badChips(moduleId)};
const unsigned int v_badChips{badChips(moduleId, ctx)};
// badChips holds 12 bits.
// bit 0 (LSB) is chip 0 for side 0.
// bit 5 is chip 5 for side 0.
......@@ -124,7 +123,7 @@ bool SCT_ConfigurationConditionsTool::isGoodChip(const Identifier& stripId) cons
// If there is no bad chip on the side, this check is done.
if ((side==0 and (v_badChips & 0x3F)==0) or (side==1 and (v_badChips & 0xFC0)==0)) return true;
int chip{getChip(stripId)};
int chip{getChip(stripId, ctx)};
if (chip<0 or chip>=12) {
ATH_MSG_WARNING("chip number is invalid: " << chip);
return false;
......@@ -137,8 +136,7 @@ bool SCT_ConfigurationConditionsTool::isGoodChip(const Identifier& stripId) cons
}
// Check if a strip is within a bad module
bool SCT_ConfigurationConditionsTool::isStripInBadModule(const Identifier& stripId) const {
const EventContext& ctx{Gaudi::Hive::currentContext()};
bool SCT_ConfigurationConditionsTool::isStripInBadModule(const Identifier& stripId, const EventContext& ctx) const {
const SCT_ConfigurationCondData* condData{getCondData(ctx)};
if (condData==nullptr) {
ATH_MSG_ERROR("In isStripInBadModule, SCT_ConfigurationCondData pointer cannot be retrieved");
......@@ -150,8 +148,7 @@ bool SCT_ConfigurationConditionsTool::isStripInBadModule(const Identifier& strip
}
// Check if a wafer is within a bad module
bool SCT_ConfigurationConditionsTool::isWaferInBadModule(const Identifier& waferId) const {
const EventContext& ctx{Gaudi::Hive::currentContext()};
bool SCT_ConfigurationConditionsTool::isWaferInBadModule(const Identifier& waferId, const EventContext& ctx) const {
const SCT_ConfigurationCondData* condData{getCondData(ctx)};
if (condData==nullptr) {
ATH_MSG_ERROR("In isWaferInBadModule, SCT_ConfigurationCondData pointer cannot be retrieved");
......@@ -163,15 +160,14 @@ bool SCT_ConfigurationConditionsTool::isWaferInBadModule(const Identifier& wafer
}
// Find the chip number containing a particular strip Identifier
int SCT_ConfigurationConditionsTool::getChip(const Identifier& stripId) const {
int SCT_ConfigurationConditionsTool::getChip(const Identifier& stripId, const EventContext& ctx) const {
// Find side and strip number
const int side{m_pHelper->side(stripId)};
int strip{m_pHelper->strip(stripId)};
// Check for swapped readout direction
const IdentifierHash waferHash{m_pHelper->wafer_hash(m_pHelper->wafer_id(stripId))};
const InDetDD::SiDetectorElement* pElement{getDetectorElement(waferHash)};
const InDetDD::SiDetectorElement* pElement{getDetectorElement(waferHash, ctx)};
if (pElement==nullptr) {
ATH_MSG_FATAL("Element pointer is NULL in 'badStrips' method");
return invalidChipNumber;
......@@ -182,8 +178,12 @@ int SCT_ConfigurationConditionsTool::getChip(const Identifier& stripId) const {
return (side==0 ? strip/stripsPerChip : strip/stripsPerChip + 6);
}
const std::set<Identifier>* SCT_ConfigurationConditionsTool::badModules() const {
int SCT_ConfigurationConditionsTool::getChip(const Identifier& stripId) const {
const EventContext& ctx{Gaudi::Hive::currentContext()};
return getChip(stripId, ctx);
}
const std::set<Identifier>* SCT_ConfigurationConditionsTool::badModules(const EventContext& ctx) const {
const SCT_ConfigurationCondData* condData{getCondData(ctx)};
if (condData==nullptr) {
ATH_MSG_ERROR("In badModules, SCT_ConfigurationCondData pointer cannot be retrieved");
......@@ -193,8 +193,12 @@ const std::set<Identifier>* SCT_ConfigurationConditionsTool::badModules() const
return condData->getBadModuleIds();
}
void SCT_ConfigurationConditionsTool::badStrips(const Identifier& moduleId, std::set<Identifier>& strips, bool ignoreBadModules, bool ignoreBadChips) const {
const std::set<Identifier>* SCT_ConfigurationConditionsTool::badModules() const {
const EventContext& ctx{Gaudi::Hive::currentContext()};
return badModules(ctx);
}
void SCT_ConfigurationConditionsTool::badStrips(const Identifier& moduleId, std::set<Identifier>& strips, const EventContext& ctx, bool ignoreBadModules, bool ignoreBadChips) const {
const SCT_ConfigurationCondData* condData{getCondData(ctx)};
if (condData==nullptr) {
ATH_MSG_ERROR("In badStrips, SCT_ConfigurationCondData pointer cannot be retrieved");
......@@ -219,11 +223,15 @@ void SCT_ConfigurationConditionsTool::badStrips(const Identifier& moduleId, std:
if (m_pHelper->module_id(m_pHelper->wafer_id(badStripId)) == moduleId) strips.insert(badStripId);
}
}
void SCT_ConfigurationConditionsTool::badStrips(const Identifier& moduleId, std::set<Identifier>& strips, bool ignoreBadModules, bool ignoreBadChips) const {
const EventContext& ctx{Gaudi::Hive::currentContext()};
return badStrips(moduleId, strips, ctx, ignoreBadModules, ignoreBadChips);
}
std::pair<bool, bool> SCT_ConfigurationConditionsTool::badLinks(const IdentifierHash& hash) const {
std::pair<bool, bool> SCT_ConfigurationConditionsTool::badLinks(const IdentifierHash& hash, const EventContext& ctx) const {
// Bad links for a given module
// Bad convetion is used. true is for good link and false is for bad link...
const EventContext& ctx{Gaudi::Hive::currentContext()};
const SCT_ConfigurationCondData* condData{getCondData(ctx)};
if (condData==nullptr) {
ATH_MSG_ERROR("In badLinks, SCT_ConfigurationCondData pointer cannot be retrieved");
......@@ -233,8 +241,12 @@ std::pair<bool, bool> SCT_ConfigurationConditionsTool::badLinks(const Identifier
return condData->areBadLinks(hash);
}
const std::map<IdentifierHash, std::pair<bool, bool>>* SCT_ConfigurationConditionsTool::badLinks() const {
std::pair<bool, bool> SCT_ConfigurationConditionsTool::badLinks(const IdentifierHash& hash) const {
const EventContext& ctx{Gaudi::Hive::currentContext()};
return badLinks(hash, ctx);
}
const std::map<IdentifierHash, std::pair<bool, bool>>* SCT_ConfigurationConditionsTool::badLinks(const EventContext& ctx) const {
const SCT_ConfigurationCondData* condData{getCondData(ctx)};
if (condData==nullptr) {
ATH_MSG_ERROR("In badLinks, SCT_ConfigurationCondData pointer cannot be retrieved");
......@@ -244,8 +256,12 @@ const std::map<IdentifierHash, std::pair<bool, bool>>* SCT_ConfigurationConditio
return condData->getBadLinks();
}
const std::map<Identifier, unsigned int>* SCT_ConfigurationConditionsTool::badChips() const {
const std::map<IdentifierHash, std::pair<bool, bool>>* SCT_ConfigurationConditionsTool::badLinks() const {
const EventContext& ctx{Gaudi::Hive::currentContext()};
return badLinks(ctx);
}
const std::map<Identifier, unsigned int>* SCT_ConfigurationConditionsTool::badChips(const EventContext& ctx) const {
const SCT_ConfigurationCondData* condData{getCondData(ctx)};
if (condData==nullptr) {
ATH_MSG_ERROR("In badChips, SCT_ConfigurationCondData pointer cannot be retrieved");
......@@ -255,9 +271,13 @@ const std::map<Identifier, unsigned int>* SCT_ConfigurationConditionsTool::badCh
return condData->getBadChips();
}
unsigned int SCT_ConfigurationConditionsTool::badChips(const Identifier& moduleId) const {
// Bad chips for a given module
const std::map<Identifier, unsigned int>* SCT_ConfigurationConditionsTool::badChips() const {
const EventContext& ctx{Gaudi::Hive::currentContext()};
return badChips(ctx);
}
unsigned int SCT_ConfigurationConditionsTool::badChips(const Identifier& moduleId, const EventContext& ctx) const {
// Bad chips for a given module
const SCT_ConfigurationCondData* condData{getCondData(ctx)};
if (condData==nullptr) {
ATH_MSG_ERROR("In badChips, SCT_ConfigurationCondData pointer cannot be retrieved");
......@@ -267,9 +287,12 @@ unsigned int SCT_ConfigurationConditionsTool::badChips(const Identifier& moduleI
return condData->getBadChips(moduleId);
}
void
SCT_ConfigurationConditionsTool::badStrips(std::set<Identifier>& strips, bool ignoreBadModules, bool ignoreBadChips) const {
unsigned int SCT_ConfigurationConditionsTool::badChips(const Identifier& moduleId) const {
const EventContext& ctx{Gaudi::Hive::currentContext()};
return badChips(moduleId, ctx);
}
void
SCT_ConfigurationConditionsTool::badStrips(std::set<Identifier>& strips, const EventContext& ctx, bool ignoreBadModules, bool ignoreBadChips) const {
const SCT_ConfigurationCondData* condData{getCondData(ctx)};
if (condData==nullptr) {
ATH_MSG_ERROR("In badStrips, SCT_ConfigurationCondData pointer cannot be retrieved");
......@@ -298,6 +321,12 @@ SCT_ConfigurationConditionsTool::badStrips(std::set<Identifier>& strips, bool ig
}
}
void
SCT_ConfigurationConditionsTool::badStrips(std::set<Identifier>& strips, bool ignoreBadModules, bool ignoreBadChips) const {
const EventContext& ctx{Gaudi::Hive::currentContext()};
badStrips(strips, ctx, ignoreBadModules, ignoreBadChips);
}
const SCT_ConfigurationCondData*
SCT_ConfigurationConditionsTool::getCondData(const EventContext& ctx) const {
static const EventContext::ContextEvt_t invalidValue{EventContext::INVALID_CONTEXT_EVT};
......@@ -319,9 +348,7 @@ SCT_ConfigurationConditionsTool::getCondData(const EventContext& ctx) const {
return m_condData.get();
}
const InDetDD::SiDetectorElement* SCT_ConfigurationConditionsTool::getDetectorElement(const IdentifierHash& waferHash) const {
const EventContext& ctx{Gaudi::Hive::currentContext()};
const InDetDD::SiDetectorElement* SCT_ConfigurationConditionsTool::getDetectorElement(const IdentifierHash& waferHash, const EventContext& ctx) const {
static const EventContext::ContextEvt_t invalidValue{EventContext::INVALID_CONTEXT_EVT};
EventContext::ContextID_t slot{ctx.slot()};
EventContext::ContextEvt_t evt{ctx.evt()};
......
......@@ -60,20 +60,28 @@ class SCT_ConfigurationConditionsTool: public extends<AthAlgTool, ISCT_Configura
virtual bool isGood(const IdentifierHash& hashId, const EventContext& ctx) const override;
/**List of bad modules*/
virtual const std::set<Identifier>* badModules(const EventContext& ctx) const override;
virtual const std::set<Identifier>* badModules() const override;
/**List of bad strips*/
virtual void badStrips(std::set<Identifier>& strips, const EventContext& ctx, bool ignoreBadModules=false, bool ignoreBadChips=false) const override;
virtual void badStrips(std::set<Identifier>& strips, bool ignoreBadModules=false, bool ignoreBadChips=false) const override;
/**List of bad strips for a given module*/
virtual void badStrips(const Identifier& moduleId, std::set<Identifier>& strips, const EventContext& ctx, bool ignoreBadModules=false, bool ignoreBadChips=false) const override;
virtual void badStrips(const Identifier& moduleId, std::set<Identifier>& strips, bool ignoreBadModules=false, bool ignoreBadChips=false) const override;
/**List of bad links*/
virtual std::pair<bool, bool> badLinks(const IdentifierHash& hash, const EventContext& ctx) const override;
virtual std::pair<bool, bool> badLinks(const IdentifierHash& hash) const override;
/**Bad links for a given module*/
virtual const std::map<IdentifierHash, std::pair<bool, bool>>* badLinks(const EventContext& ctx) const override;
virtual const std::map<IdentifierHash, std::pair<bool, bool>>* badLinks() const override;
/**List of bad chips*/
virtual const std::map<Identifier, unsigned int>* badChips(const EventContext& ctx) const override;
virtual const std::map<Identifier, unsigned int>* badChips() const override;
/**Bad chips for a given module*/
virtual unsigned int badChips(const Identifier& moduleId, const EventContext& ctx) const override;
virtual unsigned int badChips(const Identifier& moduleId) const override;
/** Get the chip number containing a particular strip*/
virtual int getChip(const Identifier& stripId, const EventContext& ctx) const override;
virtual int getChip(const Identifier& stripId) const override;
private:
......@@ -93,18 +101,18 @@ class SCT_ConfigurationConditionsTool: public extends<AthAlgTool, ISCT_Configura
bool m_checkStripsInsideModules; //!< Do we want to check if a strip is bad because it is inside a bad module
/** Is a strip within a bad module*/
bool isStripInBadModule(const Identifier& stripId) const;
bool isStripInBadModule(const Identifier& stripId, const EventContext& ctx) const;
/** Is a wafer in a bad module*/
bool isWaferInBadModule(const Identifier& waferId) const;
bool isWaferInBadModule(const Identifier& waferId, const EventContext& ctx) const;
/**Is a chip with this Identifier good?*/
bool isGoodChip(const Identifier& stripId) const;
bool isGoodChip(const Identifier& stripId, const EventContext& ctx) const;
/** enum for constants*/
enum {stripsPerChip=128, lastStrip=767, invalidChipNumber=-1};
const SCT_ConfigurationCondData* getCondData(const EventContext& ctx) const;
const InDetDD::SiDetectorElement* getDetectorElement(const IdentifierHash& waferHash) const;
const InDetDD::SiDetectorElement* getDetectorElement(const IdentifierHash& waferHash, const EventContext& ctx) const;
};
#endif // SCT_ConfigurationConditionsTool_h
......@@ -87,7 +87,7 @@ Identifier SCT_DCSConditionsTool::getModuleID(const Identifier& elementId, InDet
//Returns if element Id is good or bad
bool SCT_DCSConditionsTool::isGood(const Identifier& elementId, const EventContext& ctx, InDetConditions::Hierarchy h) const {
Identifier moduleId=getModuleID(elementId, h);
Identifier moduleId{getModuleID(elementId, h)};
if (not moduleId.is_valid()) return true; // not canreportabout
if ((m_readAllDBFolders and m_returnHVTemp) or (not m_readAllDBFolders and not m_returnHVTemp)) {
......@@ -102,7 +102,6 @@ bool SCT_DCSConditionsTool::isGood(const Identifier& elementId, const EventConte
bool SCT_DCSConditionsTool::isGood(const Identifier& elementId, InDetConditions::Hierarchy h) const {
const EventContext& ctx{Gaudi::Hive::currentContext()};
return isGood(elementId, ctx, h);
}
......@@ -115,7 +114,6 @@ bool SCT_DCSConditionsTool::isGood(const IdentifierHash& hashId, const EventCont
bool SCT_DCSConditionsTool::isGood(const IdentifierHash& hashId) const {
const EventContext& ctx{Gaudi::Hive::currentContext()};
return isGood(hashId, ctx);
}
......@@ -123,11 +121,10 @@ bool SCT_DCSConditionsTool::isGood(const IdentifierHash& hashId) const {
// some lame helper methods:
// returns HV (s_defaultHV(-30) if there is no information)
float SCT_DCSConditionsTool::modHV(const Identifier& elementId, InDetConditions::Hierarchy h) const {
Identifier moduleId = getModuleID(elementId, h);
float SCT_DCSConditionsTool::modHV(const Identifier& elementId, const EventContext& ctx, InDetConditions::Hierarchy h) const {
Identifier moduleId{getModuleID(elementId, h)};
if (not moduleId.is_valid()) return s_defaultHV; // not canreportabout, return s_defaultHV(-30)
const EventContext& ctx{Gaudi::Hive::currentContext()};
const SCT_DCSFloatCondData* condDataHV{getCondDataHV(ctx)};
if (!condDataHV) return s_defaultHV; // no cond data
......@@ -138,19 +135,28 @@ float SCT_DCSConditionsTool::modHV(const Identifier& elementId, InDetConditions:
return s_defaultHV; //didn't find the module, return s_defaultHV(-30)
}
float SCT_DCSConditionsTool::modHV(const Identifier& elementId, InDetConditions::Hierarchy h) const {
const EventContext& ctx{Gaudi::Hive::currentContext()};
return modHV(elementId, ctx, h);
}
//Does the same for hashIds
float SCT_DCSConditionsTool::modHV(const IdentifierHash& hashId, const EventContext& ctx) const {
Identifier waferId{m_pHelper->wafer_id(hashId)};
Identifier moduleId{m_pHelper->module_id(waferId)};
return modHV(moduleId, ctx, InDetConditions::SCT_MODULE);
}
float SCT_DCSConditionsTool::modHV(const IdentifierHash& hashId) const {
Identifier waferId = m_pHelper->wafer_id(hashId);
Identifier moduleId = m_pHelper->module_id(waferId);
return modHV(moduleId,InDetConditions::SCT_MODULE);
}
const EventContext& ctx{Gaudi::Hive::currentContext()};
return modHV(hashId, ctx);
}
//Returns temp0 (s_defaultTemperature(-40) if there is no information)
float SCT_DCSConditionsTool::hybridTemperature(const Identifier& elementId, InDetConditions::Hierarchy h) const {
Identifier moduleId = getModuleID(elementId, h);
float SCT_DCSConditionsTool::hybridTemperature(const Identifier& elementId, const EventContext& ctx, InDetConditions::Hierarchy h) const {
Identifier moduleId{getModuleID(elementId, h)};
if (not moduleId.is_valid()) return s_defaultTemperature; // not canreportabout
const EventContext& ctx{Gaudi::Hive::currentContext()};
const SCT_DCSFloatCondData* condDataTemp0{getCondDataTemp0(ctx)};
if (!condDataTemp0) return s_defaultTemperature; // no cond data
......@@ -159,21 +165,30 @@ float SCT_DCSConditionsTool::hybridTemperature(const Identifier& elementId, InDe
return temperature;
}
return s_defaultTemperature;//didn't find the module, return -40.
}
}
float SCT_DCSConditionsTool::hybridTemperature(const Identifier& elementId, InDetConditions::Hierarchy h) const {
const EventContext& ctx{Gaudi::Hive::currentContext()};
return hybridTemperature(elementId, ctx, h);
}
//Does the same for hashIds
float SCT_DCSConditionsTool::hybridTemperature(const IdentifierHash& hashId, const EventContext& ctx) const {
Identifier waferId{m_pHelper->wafer_id(hashId)};
Identifier moduleId{m_pHelper->module_id(waferId)};
return hybridTemperature(moduleId, ctx, InDetConditions::SCT_MODULE);
}
float SCT_DCSConditionsTool::hybridTemperature(const IdentifierHash& hashId) const {
Identifier waferId = m_pHelper->wafer_id(hashId);
Identifier moduleId = m_pHelper->module_id(waferId);
return hybridTemperature(moduleId, InDetConditions::SCT_MODULE);
const EventContext& ctx{Gaudi::Hive::currentContext()};
return hybridTemperature(hashId, ctx);
}
//Returns temp0 + correction for Lorentz angle calculation (s_defaultTemperature(-40) if there is no information)
float SCT_DCSConditionsTool::sensorTemperature(const Identifier& elementId, InDetConditions::Hierarchy h) const {
Identifier moduleId = getModuleID(elementId, h);
float SCT_DCSConditionsTool::sensorTemperature(const Identifier& elementId, const EventContext& ctx, InDetConditions::Hierarchy h) const {
Identifier moduleId{getModuleID(elementId, h)};
if (not moduleId.is_valid()) return s_defaultTemperature; // not canreportabout
const EventContext& ctx{Gaudi::Hive::currentContext()};
const SCT_DCSFloatCondData* condDataTemp0{getCondDataTemp0(ctx)};
if (!condDataTemp0) return s_defaultTemperature; // no cond data
......@@ -194,11 +209,21 @@ float SCT_DCSConditionsTool::sensorTemperature(const Identifier& elementId, InDe
return s_defaultTemperature; //didn't find the module, return s_defaultTemperature(-40).
}
float SCT_DCSConditionsTool::sensorTemperature(const Identifier& elementId, InDetConditions::Hierarchy h) const {
const EventContext& ctx{Gaudi::Hive::currentContext()};
return sensorTemperature(elementId, ctx, h);
}
//Does the same for hashIds
float SCT_DCSConditionsTool::sensorTemperature(const IdentifierHash& hashId, const EventContext& ctx) const {
Identifier waferId{m_pHelper->wafer_id(hashId)};
Identifier moduleId{m_pHelper->module_id(waferId)};
return sensorTemperature(moduleId, ctx, InDetConditions::SCT_MODULE);
}
float SCT_DCSConditionsTool::sensorTemperature(const IdentifierHash& hashId) const {
Identifier waferId = m_pHelper->wafer_id(hashId);
Identifier moduleId = m_pHelper->module_id(waferId);
return sensorTemperature(moduleId, InDetConditions::SCT_MODULE);
const EventContext& ctx{Gaudi::Hive::currentContext()};
return sensorTemperature(hashId, ctx);
}
///////////////////////////////////
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment