ATLAS Offline Software
Loading...
Searching...
No Matches
InDet::PixelDefectsEmulatorCondAlg Class Reference

Conditions algorithms for emulating ITK pixel defects. More...

#include <PixelDefectsEmulatorCondAlg.h>

Inheritance diagram for InDet::PixelDefectsEmulatorCondAlg:
Collaboration diagram for InDet::PixelDefectsEmulatorCondAlg:

Public Types

using T_ID
using T_ModuleHelper
using T_EmulatedDefects
using T_DetectorElementCollection
using T_ModuleDesign

Public Member Functions

virtual StatusCode initialize () override final
 DefectsEmulatorCondAlgBase (const std::string &name, ISvcLocator *pSvcLocator)
virtual StatusCode execute (const EventContext &ctx) const override
virtual StatusCode finalize () override
virtual StatusCode sysInitialize () override
 Override sysInitialize.
virtual bool isClonable () const override
 Specify if the algorithm is clonable.
virtual unsigned int cardinality () const override
 Cardinality (Maximum number of clones that can exist) special value 0 means that algorithm is reentrant.
virtual StatusCode sysExecute (const EventContext &ctx) override
 Execute an algorithm.
virtual const DataObjIDColl & extraOutputDeps () const override
 Return the list of extra output dependencies.
virtual bool filterPassed (const EventContext &ctx) const
virtual void setFilterPassed (bool state, const EventContext &ctx) const
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 Types

enum  DefectTypes
enum  EProbabilities
enum  ECornerDefectParams
enum  ECounts
enum  EPosHistType
enum  EPerModuleHistType

Protected Member Functions

const PixelDefectsEmulatorCondAlgderived () const
StatusCode initializeBase (unsigned int n_masks, unsigned int wafer_hash_max)
StatusCode initializeProbabilities (unsigned int n_masks)
StatusCode initializeCornerDefects ()
StatusCode checkProbabilities (unsigned int n_probabilities) const
 Consistency check of module patterns, probabilities.
double totalProbability (const std::vector< unsigned int > &module_pattern_idx, unsigned int prob_idx) const
 Compute the total probability using the probabilities associated to the given list of patterns.
void makeCumulativeProbabilityDist (std::vector< unsigned int > &module_pattern_idx, unsigned int prob_idx, std::vector< double > &cumulative_prob) const
 Create a cumulative distribution from the referenced set of probabilities.
unsigned int throwNumberOfDefects (std::span< CLHEP::HepRandomEngine * > rndmEngine, const std::vector< unsigned int > &module_pattern_idx, unsigned int n_masks, unsigned int n_cells, std::vector< unsigned int > &n_mask_defects) const
void printSummaryOfDefectGeneration (unsigned int n_masks, unsigned int n_error, unsigned int n_defects_total, const std::vector< std::array< unsigned int, kNCounts > > &counts) const
std::pair< unsigned int, unsigned int > findHist (unsigned int pattern_i, unsigned int n_rows, unsigned int n_cols) const
void histogramDefectModule (unsigned int module_pattern_i, unsigned int hist_pattern_i, unsigned int id_hash, const Amg::Vector3D &center) const
void fillPerModuleHistograms (unsigned int module_pattern_i, unsigned int pattern_hist_i, unsigned int matrix_histogram_index, unsigned int matrix_index, unsigned int module_i, unsigned int n_masks, const std::vector< unsigned int > &n_mask_defects, const Amg::Vector3D &center) const
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.

Static Protected Member Functions

static std::string IDName ()
 The name of the PixelID identifier utility.
static std::unordered_multimap< unsigned int, unsigned int > getModuleConnectionMap (const InDetDD::SiDetectorElementCollection &det_ele)
 Get the map which defines which modules are connected to the same physical sensor.
static bool isModuleDefect (const EventContext &ctx, unsigned int id_hash)
 Provide alternative method to mark modules as defect.

Protected Attributes

SG::ReadCondHandleKey< T_DetectorElementCollectionm_detEleCollKey
SG::WriteCondHandleKey< T_EmulatedDefectsm_writeKey
Gaudi::Property< std::string > m_idName
const T_IDm_idHelper
ServiceHandle< IAthRNGSvcm_rndmSvc
Gaudi::Property< std::vector< std::vector< int > > > m_modulePattern
Gaudi::Property< std::vector< std::vector< double > > > m_defectProbability
Gaudi::Property< std::vector< std::vector< double > > > m_nDefectFractionsPerPattern
Gaudi::Property< std::vector< std::vector< double > > > m_cornerDefectParamsPerPattern
Gaudi::Property< std::vector< std::vector< double > > > m_cornerDefectNCornerFractionsPerPattern
std::vector< std::vector< std::vector< float > > > m_perPatternAndMaskFractions
std::vector< std::vector< float > > m_perPatternCornerDefectNCornerCummulativeProb
Gaudi::Property< bool > m_rngPerDefectType
Gaudi::Property< bool > m_oddRowToggle
Gaudi::Property< bool > m_oddColToggle
Gaudi::Property< bool > m_checkerBoardToggle
Gaudi::Property< unsigned int > m_maxAttempts
ServiceHandle< ITHistSvc > m_histSvc
Gaudi::Property< std::string > m_histogramGroupName
Gaudi::Property< bool > m_fillHistogramsPerPattern
Gaudi::Property< bool > m_fillEtaPhiHistogramsPerPattern
Gaudi::Property< std::string > m_outputFile
Gaudi::Property< std::vector< std::string > > m_inputFiles
std::vector< std::string > m_rngName
std::vector< std::string > m_groupDefectHistNames
std::vector< unsigned int > m_maxNGroupDefects
std::mutex m_histMutex
std::vector< unsigned int > m_matrixTypeId ATLAS_THREAD_SAFE
std::vector< std::vector< unsigned int > > m_dimPerHist ATLAS_THREAD_SAFE
std::vector< std::vector< TH2 * > > m_hist ATLAS_THREAD_SAFE
std::vector< std::vector< std::vector< TH1 * > > > m_groupDefectHists ATLAS_THREAD_SAFE
std::vector< std::vector< TH2 * > > m_moduleHist ATLAS_THREAD_SAFE
std::array< std::vector< TH2 * >, kNPosHists > m_defectModuleEtaPhiHist ATLAS_THREAD_SAFE
std::array< std::vector< TH2 * >, kNPosHists > m_defectModuleEtaLayerHist ATLAS_THREAD_SAFE
std::atomic< unsigned int > m_modulesWithoutDefectParameters
bool m_histogrammingEnabled

Private Types

typedef ServiceHandle< StoreGateSvcStoreGateSvc_t

Private Member Functions

Gaudi::Details::PropertyBase & declareGaudiProperty (Gaudi::Property< T, V, H > &hndl, const SG::VarHandleKeyType &)
 specialization for handling Gaudi::Property<SG::VarHandleKey>

Private Attributes

DataObjIDColl m_extendedExtraObjects
 Extra output dependency collection, extended by AthAlgorithmDHUpdate to add symlinks.
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

Friends

class DefectsEmulatorCondAlgImpl< PixelDefectsEmulatorCondAlg >

Detailed Description

Conditions algorithms for emulating ITK pixel defects.

The algorithm mask random pixels, core columns (group of 8 or 4 consecutive columns of a chip), circuits or modules as defect. This data can be used to reject RDOs overlapping with these defects.

Definition at line 35 of file PixelDefectsEmulatorCondAlg.h.

Member Typedef Documentation

◆ StoreGateSvc_t

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

Definition at line 388 of file AthCommonDataStore.h.

◆ T_DetectorElementCollection

using InDet::DefectsEmulatorCondAlgImpl< PixelDefectsEmulatorCondAlg >::T_DetectorElementCollection
inherited

Definition at line 40 of file DefectsEmulatorCondAlgImpl.h.

◆ T_EmulatedDefects

using InDet::DefectsEmulatorCondAlgImpl< PixelDefectsEmulatorCondAlg >::T_EmulatedDefects
inherited

Definition at line 39 of file DefectsEmulatorCondAlgImpl.h.

◆ T_ID

◆ T_ModuleDesign

Definition at line 41 of file DefectsEmulatorCondAlgImpl.h.

◆ T_ModuleHelper

Definition at line 38 of file DefectsEmulatorCondAlgImpl.h.

Member Enumeration Documentation

◆ DefectTypes

Definition at line 100 of file DefectsEmulatorCondAlgBase.h.

100 {
104 };
Conditions algorithms for emulating ITK pixel or strip defects.

◆ ECornerDefectParams

◆ ECounts

◆ EPerModuleHistType

◆ EPosHistType

Definition at line 236 of file DefectsEmulatorCondAlgBase.h.

◆ EProbabilities

Definition at line 106 of file DefectsEmulatorCondAlgBase.h.

106 {
109 kNProb
110 };

Member Function Documentation

◆ cardinality()

unsigned int AthCommonReentrantAlgorithm< Gaudi::Algorithm >::cardinality ( ) const
overridevirtualinherited

Cardinality (Maximum number of clones that can exist) special value 0 means that algorithm is reentrant.

Override this to return 0 for reentrant algorithms.

Definition at line 75 of file AthCommonReentrantAlgorithm.cxx.

64{
65 return 0;
66}

◆ checkProbabilities()

StatusCode InDet::DefectsEmulatorCondAlgBase::checkProbabilities ( unsigned int n_probabilities) const
protectedinherited

Consistency check of module patterns, probabilities.

Definition at line 125 of file DefectsEmulatorCondAlgBase.cxx.

188 {
189 if (!(m_modulePattern.size() == m_defectProbability.size()
192 if (m_modulePattern.size() != m_defectProbability.size()) {
193 ATH_MSG_ERROR( "size difference modulePattern vs defectProbability : " << m_modulePattern.size() << " != " << m_defectProbability.size() << "?");
194 }
196 if (!ret) {
197 ATH_MSG_ERROR( "Order problem in modulePattern : " << ret << "?");
198 }
200 if (!ret) {
201 ATH_MSG_ERROR( "Size problem in defectProbability : " << ret << " ( n_prob" << n_probabilities << ")?");
202 }
203 }
204 return m_modulePattern.size() == m_defectProbability.size()
208 }
#define ATH_MSG_ERROR(x)
bool verifyElementCount(const std::vector< std::vector< T > > &arr, std::size_t n_expected)
test whether the 2D vector arr has the expected number of elements.
bool verifyModulePatternList(const std::vector< std::vector< int > > &arr)
Verify whether a list of module identifier patterns is consistent.

◆ declareGaudiProperty()

Gaudi::Details::PropertyBase & AthCommonDataStore< AthCommonMsg< Gaudi::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< Gaudi::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>

◆ DefectsEmulatorCondAlgBase()

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

◆ derived()

const PixelDefectsEmulatorCondAlg & InDet::DefectsEmulatorCondAlgImpl< PixelDefectsEmulatorCondAlg >::derived ( ) const
inlineprotectedinherited

Definition at line 49 of file DefectsEmulatorCondAlgImpl.h.

49{ return *static_cast<const T_Derived *>(this); }

◆ detStore()

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

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

Definition at line 95 of file AthCommonDataStore.h.

95{ return m_detStore; }

◆ evtStore()

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

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

Definition at line 85 of file AthCommonDataStore.h.

85{ return m_evtStore; }

◆ execute()

virtual StatusCode InDet::DefectsEmulatorCondAlgImpl< PixelDefectsEmulatorCondAlg >::execute ( const EventContext & ctx) const
overridevirtualinherited

◆ extraDeps_update_handler()

void AthCommonDataStore< AthCommonMsg< Gaudi::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 & AthCommonReentrantAlgorithm< Gaudi::Algorithm >::extraOutputDeps ( ) const
overridevirtualinherited

Return the list of extra output dependencies.

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

Definition at line 94 of file AthCommonReentrantAlgorithm.cxx.

90{
91 // If we didn't find any symlinks to add, just return the collection
92 // from the base class. Otherwise, return the extended collection.
93 if (!m_extendedExtraObjects.empty()) {
95 }
97}

◆ fillPerModuleHistograms()

void InDet::DefectsEmulatorCondAlgBase::fillPerModuleHistograms ( unsigned int module_pattern_i,
unsigned int pattern_hist_i,
unsigned int matrix_histogram_index,
unsigned int matrix_index,
unsigned int module_i,
unsigned int n_masks,
const std::vector< unsigned int > & n_mask_defects,
const Amg::Vector3D & center ) const
protectedinherited

Definition at line 215 of file DefectsEmulatorCondAlgBase.cxx.

527 {
528 // all the following histograms are expected to have the same binning
529 // i.e. one bin per ID hash organised in a matrix
533 unsigned int ids_per_col = static_cast<unsigned int>(m_moduleHist[pattern_hist_i][kDefectModule]->GetNbinsX());
535 unsigned int mask_i=n_masks;
536 for (; --mask_i>0; ) {
537 assert( mask_i < n_mask_defects.size() && mask_i>0);
538 if (!m_groupDefectHists.empty()) {
540 }
543 }
547 unsigned int n_defects_total = std::accumulate(n_mask_defects.begin(),n_mask_defects.end(), 0u);
548 if (n_defects_total>0) {
554 }
555 }

◆ filterPassed()

virtual bool AthCommonReentrantAlgorithm< Gaudi::Algorithm >::filterPassed ( const EventContext & ctx) const
inlinevirtualinherited

Definition at line 96 of file AthCommonReentrantAlgorithm.h.

96 {
97 return execState( ctx ).filterPassed();
98 }
virtual bool filterPassed(const EventContext &ctx) const

◆ finalize()

StatusCode InDet::DefectsEmulatorCondAlgBase::finalize ( )
overridevirtualinherited

Definition at line 40 of file DefectsEmulatorCondAlgBase.cxx.

210 {
212 ATH_MSG_WARNING("No defect parameters for " << m_modulesWithoutDefectParameters << " modules.");
213 }
214 return StatusCode::SUCCESS;
215 }
#define ATH_MSG_WARNING(x)

◆ findHist()

std::pair< unsigned int, unsigned int > InDet::DefectsEmulatorCondAlgBase::findHist ( unsigned int pattern_i,
unsigned int n_rows,
unsigned int n_cols ) const
protectedinherited

Definition at line 203 of file DefectsEmulatorCondAlgBase.cxx.

296 {
297 unsigned int key=(n_rows << 16) | n_cols;
298 assert( pattern_i < m_dimPerHist.size());
299 assert( pattern_i < m_hist.size());
300 unsigned int matrix_type_id;
301 {
303 if (global_iter != m_matrixTypeId.end()) {
305 }
306 else {
308 m_matrixTypeId.push_back(key);
309 }
310 }
311
313 if (iter == m_dimPerHist[pattern_i].end()) {
315 name << "defects_" << pattern_i << "_" << (matrix_type_id) << "_" << n_rows << "_" << n_cols;
317 title << "Defects for " << n_rows << "(rows) #times " << n_cols << " (columns) ID " << (matrix_type_id) << ", pattern " << pattern_i;
318 {
320 m_hist[pattern_i].push_back(new TH2F(name.str().c_str(), title.str().c_str(),
321 n_cols, -0.5, n_cols-0.5,
322 n_rows, -0.5, n_rows-0.5
323 ));
324 }
325 m_hist[pattern_i].back()->GetXaxis()->SetTitle("offline column");
326 m_hist[pattern_i].back()->GetYaxis()->SetTitle("offline row");
327 if ( m_histSvc->regHist(m_histogramGroupName.value() + name.str(),m_hist[pattern_i].back()).isFailure() ) {
328 throw std::runtime_error("Failed to register histogram.");
329 }
330 m_dimPerHist[pattern_i].push_back(key);
331
332 if (!m_groupDefectHists.empty()) {
335 m_groupDefectHists[pattern_i].emplace_back();
337 for (unsigned int group_i=0u; group_i < m_groupDefectHistNames.size(); ++group_i) {
340 hname << "n_" << group_name << "_" << pattern_i << "_" << matrix_type_id << "_" << n_rows << "_" << n_cols;
342 htitle << "Number of " << group_name << " defects for " << n_rows << "(rows) #times " << n_cols << " (columns) ID "
343 << (matrix_type_id) << ", pattern " << pattern_i;
344
345 {
348 m_groupDefectHists[pattern_i].back()[group_i]= new TH1F(hname.str().c_str(), htitle.str().c_str(),
350 }
351 if (m_histSvc->regHist(m_histogramGroupName.value() + m_groupDefectHists[pattern_i].back()[group_i]->GetName(),
352 m_groupDefectHists[pattern_i].back()[group_i]).isFailure() ) {
353 throw std::runtime_error("Failed to register histogram.");
354 }
355 }
356 }
357 return std::make_pair(static_cast<unsigned int>(m_hist[pattern_i].size()-1), matrix_type_id);
358 }
359 else {
360 return std::make_pair(static_cast<unsigned int>(iter-m_dimPerHist[pattern_i].begin()), matrix_type_id);
361 }
362 }

◆ getModuleConnectionMap()

std::unordered_multimap< unsigned int, unsigned int > InDet::PixelDefectsEmulatorCondAlg::getModuleConnectionMap ( const InDetDD::SiDetectorElementCollection & det_ele)
inlinestaticprotected

Get the map which defines which modules are connected to the same physical sensor.

For pixel each physical sensor is connected to exactly one module, so an empty map is returned.

Definition at line 54 of file PixelDefectsEmulatorCondAlg.h.

54 {
55 return std::unordered_multimap<unsigned int, unsigned int> ();
56 }

◆ histogramDefectModule()

void InDet::DefectsEmulatorCondAlgBase::histogramDefectModule ( unsigned int module_pattern_i,
unsigned int hist_pattern_i,
unsigned int id_hash,
const Amg::Vector3D & center ) const
protectedinherited

◆ IDName()

std::string InDet::PixelDefectsEmulatorCondAlg::IDName ( )
inlinestaticprotected

The name of the PixelID identifier utility.

Definition at line 48 of file PixelDefectsEmulatorCondAlg.h.

48{ return std::string("PixelID"); }

◆ initialize()

StatusCode InDet::PixelDefectsEmulatorCondAlg::initialize ( )
finaloverridevirtual

Reimplemented from InDet::DefectsEmulatorCondAlgImpl< PixelDefectsEmulatorCondAlg >.

Definition at line 10 of file PixelDefectsEmulatorCondAlg.cxx.

10 {
11
13 m_groupDefectHistNames.push_back("core-column");
14 m_groupDefectHistNames.push_back("circuit");
15 // set upper edge of the 1D number of group defects (core-column, circuit) histograms
16 m_maxNGroupDefects.clear();
17 m_maxNGroupDefects.push_back(10);
18 m_maxNGroupDefects.push_back(4);
20 }
std::vector< std::string > m_groupDefectHistNames
std::vector< unsigned int > m_maxNGroupDefects
virtual StatusCode initialize() override

◆ initializeBase()

StatusCode InDet::DefectsEmulatorCondAlgBase::initializeBase ( unsigned int n_masks,
unsigned int wafer_hash_max )
protectedinherited

Definition at line 43 of file DefectsEmulatorCondAlgBase.cxx.

27 {
28 ATH_CHECK(m_rndmSvc.retrieve());
29 m_rngName.reserve( m_rngPerDefectType.value() ? kMaskDefects + n_masks : 1);
30 if (m_rngPerDefectType.value() ) {
31 m_rngName.push_back(name()+"RngModuleDefects");
32 m_rngName.push_back(name()+"RngCornerDefects");
33 for (unsigned int mask_i=0; mask_i<n_masks; ++mask_i) {
35 rng_name << name() << "RngMaskDefect" << mask_i;
36 m_rngName.push_back(rng_name.str());
37 }
39 }
40 else {
41 m_rngName.push_back(name()+"RandomEngine");
42 }
45 if (!m_outputFile.empty() && (!hasExtensions(m_outputFile.value(), ".root") && !hasExtensions(m_outputFile.value(), ".json"))) {
46 ATH_MSG_ERROR("Output file \"" << m_outputFile.value() << "\" does not have extensions \".root\" or \".json\".");
48 }
49 for (const std::string &input_file : m_inputFiles.value()) {
50 if ((!hasExtensions(input_file, ".root") && !hasExtensions(input_file, ".json"))) {
51 ATH_MSG_ERROR("Input file \"" << input_file << "\" does not have extensions \".root\" or \".json\".");
53 }
54 }
55
56 if (!m_histSvc.name().empty() && !m_histogramGroupName.value().empty()) {
57 ATH_CHECK(m_histSvc.retrieve());
59 // allow histogramming for at most 6 different pixel module types
60 // histgram for additional module types will end up in the last histogram
62 constexpr unsigned int n_different_matrices_max=6;
65 if (!m_groupDefectHistNames.empty()) {
67 }
68 for (unsigned int pattern_i=0; pattern_i < n_pattern_for_histogramming; ++pattern_i) {
71 }
73 "matrix_type_id_per_module;Matrix type ID per module",
74 "defect_module;Module is defect",
75 "defects_per_module;Defect cells per module"};
78 hname << group_name << "defects_per_module;" << group_name <<" defects per module";
79 hist_name.push_back(hname.str());
80 }
82 unsigned int max_y_axis = (((wafer_hash_max+99)/100+9)/10)*10;
83
84 for (unsigned int pattern_i=0; pattern_i<m_moduleHist.size(); ++pattern_i) {
85 m_moduleHist.at(pattern_i).resize(hist_name.size(), nullptr);
86 for (unsigned int hist_i=0; hist_i<hist_name.size(); ++hist_i) {
87 // support idHashes from 0 to 10k
90 a_name << hist_name[hist_i].substr(0, (pos != std::string::npos ? pos : hist_name[hist_i].size())) << "_" << pattern_i;
93 << " ( module pattern " << pattern_i << ")";
94 {
96 m_moduleHist.at(pattern_i).at(hist_i) = new TH2F(a_name.str().c_str(), a_title.str().c_str(),
97 100, -0.5, 100-0.5,
98 max_y_axis, -0.5, max_y_axis-0.5);
99 }
100 m_moduleHist[pattern_i][hist_i]->GetXaxis()->SetTitle("ID hash % 100");
101 m_moduleHist[pattern_i][hist_i]->GetYaxis()->SetTitle("ID hash / 100");
102 ATH_MSG_VERBOSE("Create histogram pattern " << pattern_i << " hist " << hist_i << " name " << a_name.str().c_str()
103 << " -> " << m_moduleHist[pattern_i][hist_i]->GetName());
104 if ( m_histSvc->regHist(m_histogramGroupName.value() + m_moduleHist[pattern_i][hist_i]->GetName(),
105 m_moduleHist[pattern_i][hist_i]).isFailure() ) {
106 return StatusCode::FAILURE;
107 }
108 }
109 }
110
112 for (unsigned int pos_i=0; pos_i<m_defectModuleEtaPhiHist.size(); ++pos_i) {
115 }
117 "defect_modules",
118 "modules_with_defects"
119 };
121 "Defect modules",
122 "Modules with defects"
123 };
124 for (unsigned pattern_i=0; pattern_i< n_eta_phi_histograms; ++pattern_i) {
125 for (unsigned int pos_i=0; pos_i<m_defectModuleEtaPhiHist.size(); ++pos_i) {
126 {
128 a_name << pos_hist_name.at(pos_i) << "_zr" << "_" << pattern_i;
130 a_title << pos_hist_title.at(pos_i) << " vs global zr" << " ( module pattern " << pattern_i << ")";
131 {
133 m_defectModuleEtaPhiHist.at(pos_i).at(pattern_i) = new TH2F(a_name.str().c_str(), a_title.str().c_str(),
134 200, -3000, 3000,
135 200, 0, 1050
136 );
137 }
138 if ( m_histSvc->regHist(m_histogramGroupName.value() + m_defectModuleEtaPhiHist.at(pos_i).at(pattern_i)->GetName(),
139 m_defectModuleEtaPhiHist.at(pos_i).at(pattern_i)).isFailure() ) {
140 return StatusCode::FAILURE;
141 }
142 }
143 {
145 a_name << pos_hist_name.at(pos_i) << "_xy" << "_" << pattern_i;
147 a_title << pos_hist_title.at(pos_i) << " vs global xy" << " ( module pattern " << pattern_i << ")";
148 {
150 m_defectModuleEtaLayerHist.at(pos_i).at(pattern_i) = new TH2F(a_name.str().c_str(), a_title.str().c_str(),
151 200, -1050,1050,
152 200, -1050,1050
153 );
154 }
155 if ( m_histSvc->regHist(m_histogramGroupName.value() + m_defectModuleEtaLayerHist.at(pos_i).at(pattern_i)->GetName(),
156 m_defectModuleEtaLayerHist.at(pos_i).at(pattern_i)).isFailure() ) {
157 return StatusCode::FAILURE;
158 }
159 }
160 }
161 }
162
163 if (n_masks>1) {
164 m_maxNGroupDefects.resize( n_masks-1, 0u);
166 for (unsigned int mask_i=0; mask_i<n_masks-1; ++mask_i) {
168 }
169 }
170
171 if (m_groupDefectHistNames.size() != n_masks-1) {
172 ATH_MSG_FATAL("m_groupDefectHistNames does not contain a name per mask starting from the second mask "
173 "(the first mask must be the full matrix)");
174 return StatusCode::FAILURE;
175 }
176 if (m_maxNGroupDefects.size() != n_masks-1) {
177 ATH_MSG_FATAL("m_maxNGroupDefects does not contain a upper bin value for number of expected defects "
178 "per mask starting from the second mask (the first mask must be the full matrix)");
179 return StatusCode::FAILURE;
180 }
181 }
182 }
183
184 return StatusCode::SUCCESS;
185 }
#define ATH_CHECK
Evaluate an expression and check for errors.
#define ATH_MSG_FATAL(x)
#define ATH_MSG_VERBOSE(x)

◆ initializeCornerDefects()

StatusCode InDet::DefectsEmulatorCondAlgBase::initializeCornerDefects ( )
protectedinherited

Definition at line 45 of file DefectsEmulatorCondAlgBase.cxx.

457 {
458 if (!m_cornerDefectParamsPerPattern.empty()) {
459 if (m_cornerDefectParamsPerPattern.size() != m_modulePattern.size()) {
460 ATH_MSG_ERROR("Expected exactly one set of corner defect parameters per module pattern but the numbers disagree "
461 << m_cornerDefectParamsPerPattern.size() << " != " << m_modulePattern.size());
462 return StatusCode::FAILURE;
463 }
465 ATH_MSG_ERROR("Expected exactly one set of n corner fractions per module pattern but the numbers disagree "
467 return StatusCode::FAILURE;
468 }
470 for (unsigned int pattern_i=0; pattern_i < m_cornerDefectParamsPerPattern.size(); ++pattern_i) {
473 ATH_MSG_ERROR("Mismatch in number of corner defect parameters for pattern " << pattern_i << ". Expected " << kNCornerDefectParams
474 << " but got " << m_cornerDefectParamsPerPattern[pattern_i].size() );
475 return StatusCode::FAILURE;
476 }
478 ATH_MSG_ERROR("Too many Fractions for corner defects for pattern " << pattern_i <<
479 ". Expected fractions for at most 4 corners but got " << m_cornerDefectNCornerFractionsPerPattern[pattern_i].size()
480 << ".");
481 return StatusCode::FAILURE;
482 }
485 0.);
486 if (std::abs(scale-1.)>1e-3) {
487 ATH_MSG_ERROR("The fractions for corner defects in 1.." << m_cornerDefectNCornerFractionsPerPattern[pattern_i].size()
488 << " corner(s) for pattern " << pattern_i << " do not add up to ~1 but " << scale);
489 return StatusCode::FAILURE;
490 }
493 double total = 0.;
495 total += fraction * scale;
496 m_perPatternCornerDefectNCornerCummulativeProb[pattern_i].push_back( static_cast<float>(total) );
497 }
498 }
499 }
500 return StatusCode::SUCCESS;
501 }
static const Attributes_t empty

◆ initializeProbabilities()

StatusCode InDet::DefectsEmulatorCondAlgBase::initializeProbabilities ( unsigned int n_masks)
protectedinherited

Definition at line 44 of file DefectsEmulatorCondAlgBase.cxx.

373 {
374 if (n_masks>=1) {
375 if (m_nDefectFractionsPerPattern.size() != m_modulePattern.size()) {
376 ATH_MSG_ERROR("The number of fraction lists per pattern does not match the number of module patterns: "
377 << m_nDefectFractionsPerPattern.size() << " != " << m_modulePattern.size());
378 return StatusCode::FAILURE;
379 }
380 if (m_defectProbability.size() != m_modulePattern.size()) {
381 ATH_MSG_ERROR("The number of probability lists per pattern does not match the number of module patterns: "
382 << m_defectProbability.size() << " != " << m_modulePattern.size());
383 return StatusCode::FAILURE;
384 }
386
387 // there should be one vector with fractions for each mask 0:cell, 1:1st group mask, ...
388 for (unsigned int pattern_i=0; pattern_i< m_perPatternAndMaskFractions.size(); ++pattern_i) {
392 ATH_MSG_ERROR("There should be one probability for the module to be defect, one probability for a pixel/strip etc. "
393 "to be defect and one probability for each group to be defect i.e. "
394 << (kCellDefectProb + n_masks) << " probabilities, but there are "
395 << m_defectProbability.size() << " for pattern " << pattern_i);
396 return StatusCode::FAILURE;
397 }
398 double sum=0.;
399 for (unsigned int value_i=0; value_i< m_nDefectFractionsPerPattern[pattern_i].size(); ++value_i) {
403 ATH_MSG_ERROR("More fraction lists than number of masks: "
405 << " for pattern " << pattern_i);
406 return StatusCode::FAILURE;
407 }
409 sum=0.;
410 }
411 }
412 else {
414 m_perPatternAndMaskFractions[pattern_i].back().push_back(sum);
415 }
416 }
419 defect_names.resize( 1+m_groupDefectHistNames.size() );
420 defect_names[0]="cell";
422
423 // mask_i: 0: cell, 1: first group, ...
424 for (unsigned int mask_i=0; mask_i< m_perPatternAndMaskFractions[pattern_i].size(); ++mask_i) {
427 ATH_MSG_ERROR("Empty fraction list or fractions do not add up to 1: "
430 << " for pattern " << pattern_i << ", mask " << mask_i
431 << " (" << defect_names.at(mask_i) << ")");
432 return StatusCode::FAILURE;
433 }
434 ATH_MSG_DEBUG("Fractions for pattern " << pattern_i << " mask " << mask_i
435 << " (" << defect_names.at(mask_i) << "):"
439 if (mask_i>0) {
440 // only scale the fractions to the total probability to have at least one defect
441 // for group defects.
442 // For cell defects the fractions mean fractions for group sizes 1,2, ....
445 }
446 }
447 ATH_MSG_DEBUG("Probabilities for pattern " << pattern_i << " mask " << mask_i
448 << " (" << defect_names.at(mask_i) << ") for 1.."
449 << m_perPatternAndMaskFractions[pattern_i][mask_i].size() << " defects:"
451 }
452 }
453 }
455 }
#define ATH_MSG_DEBUG(x)

◆ inputHandles()

virtual std::vector< Gaudi::DataHandle * > AthCommonDataStore< AthCommonMsg< Gaudi::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.

◆ isClonable()

bool AthCommonReentrantAlgorithm< Gaudi::Algorithm >::isClonable ( ) const
overridevirtualinherited

Specify if the algorithm is clonable.

Reentrant algorithms are clonable.

Definition at line 68 of file AthCommonReentrantAlgorithm.cxx.

52{
53 // Reentrant algorithms are clonable.
54 return true;
55}

◆ isModuleDefect()

bool InDet::PixelDefectsEmulatorCondAlg::isModuleDefect ( const EventContext & ctx,
unsigned int id_hash )
inlinestaticprotected

Provide alternative method to mark modules as defect.

For pixel there is no alternative method. So, no module is marked as defect by this method.

Definition at line 60 of file PixelDefectsEmulatorCondAlg.h.

60 {
61 return false;
62 }

◆ makeCumulativeProbabilityDist()

void InDet::DefectsEmulatorCondAlgBase::makeCumulativeProbabilityDist ( std::vector< unsigned int > & module_pattern_idx,
unsigned int prob_idx,
std::vector< double > & cumulative_prob ) const
inlineprotectedinherited

Create a cumulative distribution from the referenced set of probabilities.

Parameters
module_pattern_idxindex of patterns for which the associated probabilities are to be considered
prob_idxthe index of the probability (e.g. module defect probability, single element defect probability)
cumulative_proboutput vector to be filled with the cumulative_distribution in ascending order Create a cumulative distributions using the specified probabilities associated to each pattern referenced by module_pattern_idx

Definition at line 147 of file DefectsEmulatorCondAlgBase.h.

149 {
150 cumulative_prob.clear();
151 double total_prob=0.f;
152 for (unsigned int pattern_i : module_pattern_idx) {
153 assert( prob_idx < m_defectProbability.value().at(pattern_i).size() );
155 cumulative_prob.push_back(total_prob);
156 }
157 }

◆ msg()

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

Definition at line 24 of file AthCommonMsg.h.

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

◆ msgLvl()

bool AthCommonMsg< Gaudi::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< Gaudi::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.

◆ printSummaryOfDefectGeneration()

void InDet::DefectsEmulatorCondAlgBase::printSummaryOfDefectGeneration ( unsigned int n_masks,
unsigned int n_error,
unsigned int n_defects_total,
const std::vector< std::array< unsigned int, kNCounts > > & counts ) const
protectedinherited

Definition at line 189 of file DefectsEmulatorCondAlgBase.cxx.

266 {
267 assert(counts.size() == n_masks+1 );
268 msg(MSG::INFO) << "Total cells: " << counts[0][kNElements] << ", module design of wrong type: " << n_error << ", defects "
269 << n_defects_total << ".\n";
270 for (unsigned int mask_i=0; mask_i < counts.size(); ++mask_i) {
271 msg() << "Defect " << (mask_i==0 ? "cells" : (mask_i>m_groupDefectHistNames.size() ? "modules" : m_groupDefectHistNames.at(mask_i-1)))
272 << " " << counts[mask_i][kNDefects] << " / " << counts[mask_i][kNElements];
274 msg() << "(";
275 if (counts[mask_i][kNRetries]>0) {
276 msg() << "retries " << counts[mask_i][kNRetries];
278 msg() << ";";
279 }
280 }
282 msg() << "exceeded max attempts " << counts[mask_i][kNMaxRtriesExceeded];
283 }
284 msg() << ")";
285 }
287 msg() << " max/module " <<counts[mask_i][kMaxDefectsPerModule];
288 }
289 if (mask_i+1<counts.size()) {
290 msg() << ".\n";
291 }
292 }
293 msg() << endmsg;
294 }

◆ 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< Gaudi::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< Gaudi::Algorithm > >::renounceArray ( SG::VarHandleKeyArray & handlesArray)
inlineprotectedinherited

remove all handles from I/O resolution

Definition at line 364 of file AthCommonDataStore.h.

364 {
366 }

◆ setFilterPassed()

virtual void AthCommonReentrantAlgorithm< Gaudi::Algorithm >::setFilterPassed ( bool state,
const EventContext & ctx ) const
inlinevirtualinherited

Definition at line 100 of file AthCommonReentrantAlgorithm.h.

100 {
102 }
virtual void setFilterPassed(bool state, const EventContext &ctx) const

◆ sysExecute()

StatusCode AthCommonReentrantAlgorithm< Gaudi::Algorithm >::sysExecute ( const EventContext & ctx)
overridevirtualinherited

Execute an algorithm.

We override this in order to work around an issue with the Algorithm base class storing the event context in a member variable that can cause crashes in MT jobs.

Definition at line 85 of file AthCommonReentrantAlgorithm.cxx.

77{
78 return BaseAlg::sysExecute (ctx);
79}

◆ sysInitialize()

StatusCode AthCommonReentrantAlgorithm< Gaudi::Algorithm >::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

Definition at line 61 of file AthCommonReentrantAlgorithm.cxx.

107 {
109
110 if (sc.isFailure()) {
111 return sc;
112 }
113
114 ServiceHandle<ICondSvc> cs("CondSvc",name());
115 for (auto h : outputHandles()) {
116 if (h->isCondition() && h->mode() == Gaudi::DataHandle::Writer) {
117 // do this inside the loop so we don't create the CondSvc until needed
118 if ( cs.retrieve().isFailure() ) {
119 ATH_MSG_WARNING("no CondSvc found: won't autoreg WriteCondHandles");
120 return StatusCode::SUCCESS;
121 }
122 if (cs->regHandle(this,*h).isFailure()) {
124 ATH_MSG_ERROR("unable to register WriteCondHandle " << h->fullKey()
125 << " with CondSvc");
126 }
127 }
128 }
129 return sc;
130}
virtual std::vector< Gaudi::DataHandle * > outputHandles() const override

◆ sysStart()

virtual StatusCode AthCommonDataStore< AthCommonMsg< Gaudi::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.

◆ throwNumberOfDefects()

unsigned int InDet::DefectsEmulatorCondAlgBase::throwNumberOfDefects ( std::span< CLHEP::HepRandomEngine * > rndmEngine,
const std::vector< unsigned int > & module_pattern_idx,
unsigned int n_masks,
unsigned int n_cells,
std::vector< unsigned int > & n_mask_defects ) const
protectedinherited

Definition at line 178 of file DefectsEmulatorCondAlgBase.cxx.

223 {
224 n_mask_defects.clear();
225 n_mask_defects.resize(n_masks, 0u);
226
227 // to avoid throwing random numbers if not necessary
228 // first identify the masks for which random numbers need to be thrown.
230 for (unsigned int mask_i=n_masks; mask_i-->1; ) {
231 for (unsigned int match_i: module_pattern_idx) {
233 if (m_perPatternAndMaskFractions.at(match_i).at(mask_i).back()>0.) {
234 has[mask_i]=true;
235 break;
236 }
237 }
238 }
239
240 for (unsigned int mask_i=n_masks; mask_i-->1; ) {
241 assert(mask_i>0 && mask_i<rndmEngine.size());
242 float prob = !has.at(mask_i) ? 1. : CLHEP::RandFlat::shoot(rndmEngine[mask_i],1.);
243
244 for (unsigned int match_i: module_pattern_idx) {
249 break;
250 }
251
253 if (prob<=0.f) break;
254 }
255 }
257 n_mask_defects[0]= static_cast<unsigned int>(std::max(0,static_cast<int>(
259 n_cells * defect_prob))));
260 return std::accumulate(n_mask_defects.begin(),n_mask_defects.end(), 0u);
261 }
double totalProbability(const std::vector< unsigned int > &module_pattern_idx, unsigned int prob_idx) const

◆ totalProbability()

double InDet::DefectsEmulatorCondAlgBase::totalProbability ( const std::vector< unsigned int > & module_pattern_idx,
unsigned int prob_idx ) const
inlineprotectedinherited

Compute the total probability using the probabilities associated to the given list of patterns.

Parameters
module_pattern_idxthe index of the patterns
theindex of the probabilities to be used (e.g. module defect probability, single element defect probability)
Returns
sum of the referenced probabilities.

Definition at line 132 of file DefectsEmulatorCondAlgBase.h.

132 {
133 double total_prob=0;
134 for (unsigned int pattern_i : module_pattern_idx) {
135 assert( prob_idx < m_defectProbability.value().at(pattern_i).size() );
137 }
138 return total_prob;
139 }

◆ updateVHKA()

void AthCommonDataStore< AthCommonMsg< Gaudi::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 }

◆ DefectsEmulatorCondAlgImpl< PixelDefectsEmulatorCondAlg >

Definition at line 1 of file PixelDefectsEmulatorCondAlg.h.

Member Data Documentation

◆ ATLAS_THREAD_SAFE [1/7]

std::vector<unsigned int> m_matrixTypeId InDet::DefectsEmulatorCondAlgBase::ATLAS_THREAD_SAFE
mutableprotectedinherited

Definition at line 229 of file DefectsEmulatorCondAlgBase.h.

◆ ATLAS_THREAD_SAFE [2/7]

std::vector<std::vector<unsigned int> > m_dimPerHist InDet::DefectsEmulatorCondAlgBase::ATLAS_THREAD_SAFE
mutableprotectedinherited

Definition at line 230 of file DefectsEmulatorCondAlgBase.h.

◆ ATLAS_THREAD_SAFE [3/7]

std::vector< std::vector< TH2 *> > m_hist InDet::DefectsEmulatorCondAlgBase::ATLAS_THREAD_SAFE
mutableprotectedinherited

Definition at line 232 of file DefectsEmulatorCondAlgBase.h.

◆ ATLAS_THREAD_SAFE [4/7]

std::vector< std::vector<std::vector< TH1 *> > > m_groupDefectHists InDet::DefectsEmulatorCondAlgBase::ATLAS_THREAD_SAFE
mutableprotectedinherited

Definition at line 233 of file DefectsEmulatorCondAlgBase.h.

◆ ATLAS_THREAD_SAFE [5/7]

std::vector< std::vector< TH2 *> > m_moduleHist InDet::DefectsEmulatorCondAlgBase::ATLAS_THREAD_SAFE
mutableprotectedinherited

Definition at line 234 of file DefectsEmulatorCondAlgBase.h.

◆ ATLAS_THREAD_SAFE [6/7]

std::array<std::vector<TH2 *>,kNPosHists> m_defectModuleEtaPhiHist InDet::DefectsEmulatorCondAlgBase::ATLAS_THREAD_SAFE
mutableprotectedinherited

Definition at line 241 of file DefectsEmulatorCondAlgBase.h.

◆ ATLAS_THREAD_SAFE [7/7]

std::array<std::vector<TH2 *>,kNPosHists> m_defectModuleEtaLayerHist InDet::DefectsEmulatorCondAlgBase::ATLAS_THREAD_SAFE
mutableprotectedinherited

Definition at line 242 of file DefectsEmulatorCondAlgBase.h.

◆ m_checkerBoardToggle

Gaudi::Property<bool> InDet::DefectsEmulatorCondAlgBase::m_checkerBoardToggle
protectedinherited

Definition at line 80 of file DefectsEmulatorCondAlgBase.h.

81{this, "CheckerBoardDefects", false};

◆ m_cornerDefectNCornerFractionsPerPattern

Gaudi::Property<std::vector<std::vector<double> > > InDet::DefectsEmulatorCondAlgBase::m_cornerDefectNCornerFractionsPerPattern
protectedinherited

Definition at line 64 of file DefectsEmulatorCondAlgBase.h.

65 {this,"NCornerDefectFractionsPerPattern", {},
66 "List of fractions per pattern for exactly 1 to 4 corner defects under the codition that there is a defect." };

◆ m_cornerDefectParamsPerPattern

Gaudi::Property<std::vector<std::vector<double> > > InDet::DefectsEmulatorCondAlgBase::m_cornerDefectParamsPerPattern
protectedinherited

Definition at line 60 of file DefectsEmulatorCondAlgBase.h.

61 {this,"CornerDefectParamsPerPattern", {},
62 "Set of corner defect parameters (probability, x-intersection pos min, max, y-intersection pos min, max, sagitta minm max). "
63 "per module pattern. " };

◆ m_defectProbability

Gaudi::Property<std::vector<std::vector<double> > > InDet::DefectsEmulatorCondAlgBase::m_defectProbability
protectedinherited

Definition at line 53 of file DefectsEmulatorCondAlgBase.h.

54 {this,"DefectProbabilities", {},
55 "Defect probabilities per module pattern: defect module, defect strip." };

◆ m_detEleCollKey

Definition at line 51 of file DefectsEmulatorCondAlgImpl.h.

52{this, "DetEleCollKey", "", "Key of SiDetectorElementCollection"};

◆ m_detStore

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

Pointer to StoreGate (detector store by default)

Definition at line 393 of file AthCommonDataStore.h.

◆ m_evtStore

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

Pointer to StoreGate (event store by default)

Definition at line 390 of file AthCommonDataStore.h.

◆ m_extendedExtraObjects

DataObjIDColl AthCommonReentrantAlgorithm< Gaudi::Algorithm >::m_extendedExtraObjects
privateinherited

Extra output dependency collection, extended by AthAlgorithmDHUpdate to add symlinks.

Empty if no symlinks were found.

Definition at line 114 of file AthCommonReentrantAlgorithm.h.

◆ m_fillEtaPhiHistogramsPerPattern

Gaudi::Property<bool> InDet::DefectsEmulatorCondAlgBase::m_fillEtaPhiHistogramsPerPattern
protectedinherited

Definition at line 90 of file DefectsEmulatorCondAlgBase.h.

91{this, "FillEtaPhiHistogramsPerPattern", false, "If true, histogram per eta, phi amd z, R are filled separately per pattern."};

◆ m_fillHistogramsPerPattern

Gaudi::Property<bool> InDet::DefectsEmulatorCondAlgBase::m_fillHistogramsPerPattern
protectedinherited

Definition at line 88 of file DefectsEmulatorCondAlgBase.h.

89{this, "FillHistogramsPerPattern", false, "If true, histogram per module defects etc. separately per pattern."};

◆ m_groupDefectHistNames

std::vector<std::string> InDet::DefectsEmulatorCondAlgBase::m_groupDefectHistNames
protectedinherited

Definition at line 225 of file DefectsEmulatorCondAlgBase.h.

◆ m_histMutex

std::mutex InDet::DefectsEmulatorCondAlgBase::m_histMutex
mutableprotectedinherited

Definition at line 227 of file DefectsEmulatorCondAlgBase.h.

◆ m_histogramGroupName

Gaudi::Property<std::string> InDet::DefectsEmulatorCondAlgBase::m_histogramGroupName
protectedinherited

Definition at line 86 of file DefectsEmulatorCondAlgBase.h.

87{this,"HistogramGroupName","", "Histogram group name or empty to disable histogramming"};

◆ m_histogrammingEnabled

bool InDet::DefectsEmulatorCondAlgBase::m_histogrammingEnabled
protectedinherited

Definition at line 253 of file DefectsEmulatorCondAlgBase.h.

◆ m_histSvc

ServiceHandle<ITHistSvc> InDet::DefectsEmulatorCondAlgBase::m_histSvc
protectedinherited

Definition at line 85 of file DefectsEmulatorCondAlgBase.h.

85{this,"HistSvc","THistSvc"};

◆ m_idHelper

const T_ID* InDet::DefectsEmulatorCondAlgImpl< PixelDefectsEmulatorCondAlg >::m_idHelper
protectedinherited

Definition at line 60 of file DefectsEmulatorCondAlgImpl.h.

◆ m_idName

Gaudi::Property<std::string> InDet::DefectsEmulatorCondAlgImpl< PixelDefectsEmulatorCondAlg >::m_idName
protectedinherited

Definition at line 57 of file DefectsEmulatorCondAlgImpl.h.

58{this, "IDName", "", "Name of the ID tool to decode identifiers"};

◆ m_inputFiles

Gaudi::Property<std::vector<std::string> > InDet::DefectsEmulatorCondAlgBase::m_inputFiles
protectedinherited

Definition at line 95 of file DefectsEmulatorCondAlgBase.h.

96{this,"DefectsInputFiles",{}, "Empty or file name to write out conditions data (.json or .root)."};

◆ m_maxAttempts

Gaudi::Property<unsigned int> InDet::DefectsEmulatorCondAlgBase::m_maxAttempts
protectedinherited

Definition at line 82 of file DefectsEmulatorCondAlgBase.h.

83{this, "MaxRandomPositionAttempts", 10};

◆ m_maxNGroupDefects

std::vector<unsigned int> InDet::DefectsEmulatorCondAlgBase::m_maxNGroupDefects
protectedinherited

Definition at line 226 of file DefectsEmulatorCondAlgBase.h.

◆ m_modulePattern

Gaudi::Property<std::vector<std::vector<int> > > InDet::DefectsEmulatorCondAlgBase::m_modulePattern
protectedinherited

Definition at line 49 of file DefectsEmulatorCondAlgBase.h.

50 {this,"ModulePatterns", {},
51 "Integer ranges to select: (0-1) barrel/end-cap range, (2-3) layer, (4-5) eta index range, (6-7) phi index range, "
52 "(8-9) module number of columns or strips, (10) both sides (0,1), (11) all rows (0,1)" };

◆ m_modulesWithoutDefectParameters

std::atomic<unsigned int> InDet::DefectsEmulatorCondAlgBase::m_modulesWithoutDefectParameters
mutableprotectedinherited

Definition at line 251 of file DefectsEmulatorCondAlgBase.h.

251{};

◆ m_nDefectFractionsPerPattern

Gaudi::Property<std::vector<std::vector<double> > > InDet::DefectsEmulatorCondAlgBase::m_nDefectFractionsPerPattern
protectedinherited

Definition at line 56 of file DefectsEmulatorCondAlgBase.h.

57 {this,"NDefectFractionsPerPattern", {},
58 "List of fractions per pattern for exactly 1 to n defects under the codition that there is a defect, where -1. marks the"
59 "end of this lists, before the fractions for the next mask start." };

◆ m_oddColToggle

Gaudi::Property<bool> InDet::DefectsEmulatorCondAlgBase::m_oddColToggle
protectedinherited

Definition at line 78 of file DefectsEmulatorCondAlgBase.h.

79{this, "OddColToggle", false};

◆ m_oddRowToggle

Gaudi::Property<bool> InDet::DefectsEmulatorCondAlgBase::m_oddRowToggle
protectedinherited

Definition at line 76 of file DefectsEmulatorCondAlgBase.h.

77{this, "OddRowToggle", false};

◆ m_outputFile

Gaudi::Property<std::string> InDet::DefectsEmulatorCondAlgBase::m_outputFile
protectedinherited

Definition at line 93 of file DefectsEmulatorCondAlgBase.h.

94{this,"DefectsOutputFile","", "Empty or file name to write out conditions data (.json or .root)."};

◆ m_perPatternAndMaskFractions

std::vector<std::vector<std::vector<float> > > InDet::DefectsEmulatorCondAlgBase::m_perPatternAndMaskFractions
protectedinherited

Definition at line 68 of file DefectsEmulatorCondAlgBase.h.

◆ m_perPatternCornerDefectNCornerCummulativeProb

std::vector<std::vector<float> > InDet::DefectsEmulatorCondAlgBase::m_perPatternCornerDefectNCornerCummulativeProb
protectedinherited

Definition at line 69 of file DefectsEmulatorCondAlgBase.h.

◆ m_rndmSvc

ServiceHandle<IAthRNGSvc> InDet::DefectsEmulatorCondAlgBase::m_rndmSvc
protectedinherited

Definition at line 47 of file DefectsEmulatorCondAlgBase.h.

47{this, "RndmSvc", "AthRNGSvc", ""};

◆ m_rngName

std::vector<std::string> InDet::DefectsEmulatorCondAlgBase::m_rngName
protectedinherited

Definition at line 98 of file DefectsEmulatorCondAlgBase.h.

◆ m_rngPerDefectType

Gaudi::Property<bool> InDet::DefectsEmulatorCondAlgBase::m_rngPerDefectType
protectedinherited

Definition at line 71 of file DefectsEmulatorCondAlgBase.h.

72{this, "RngPerDefectType", false, "One RNG per defect type to decorrelate randomness of defects."};

◆ m_varHandleArraysDeclared

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

Definition at line 399 of file AthCommonDataStore.h.

◆ m_vhka

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

Definition at line 398 of file AthCommonDataStore.h.

◆ m_writeKey

Definition at line 54 of file DefectsEmulatorCondAlgImpl.h.

55{this, "WriteKey", "", "Key of output emulated defect conditions data"};

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