ATLAS Offline Software
Public Types | Public Member Functions | Protected Types | Protected Member Functions | Static Protected Member Functions | Protected Attributes | Private Types | Private Member Functions | Private Attributes | Friends | List of all members
InDet::StripDefectsEmulatorCondAlg Class Reference

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

#include <StripDefectsEmulatorCondAlg.h>

Inheritance diagram for InDet::StripDefectsEmulatorCondAlg:
Collaboration diagram for InDet::StripDefectsEmulatorCondAlg:

Public Types

using T_ID = detail::DetectorEmulatorCondAlgTraits< StripDefectsEmulatorCondAlg >::T_ID
 
using T_ModuleHelper = detail::DetectorEmulatorCondAlgTraits< StripDefectsEmulatorCondAlg >::T_ModuleHelper
 
using T_EmulatedDefects = detail::DetectorEmulatorCondAlgTraits< StripDefectsEmulatorCondAlg >::T_EmulatedDefects
 
using T_DetectorElementCollection = detail::DetectorEmulatorCondAlgTraits< StripDefectsEmulatorCondAlg >::T_DetectorElementCollection
 
using T_ModuleDesign = detail::DetectorEmulatorCondAlgTraits< StripDefectsEmulatorCondAlg >::T_ModuleDesign
 

Public Member Functions

virtual StatusCode initialize () override final
 
virtual StatusCode execute (const EventContext &ctx) const override
 
 DefectsEmulatorCondAlgBase (const std::string &name, ISvcLocator *pSvcLocator)
 
virtual StatusCode finalize () override
 
virtual StatusCode sysInitialize () override
 Override sysInitialize. More...
 
virtual bool isClonable () const override
 Specify if the algorithm is clonable. More...
 
virtual unsigned int cardinality () const override
 Cardinality (Maximum number of clones that can exist) special value 0 means that algorithm is reentrant. More...
 
virtual StatusCode sysExecute (const EventContext &ctx) override
 Execute an algorithm. More...
 
virtual const DataObjIDColl & extraOutputDeps () const override
 Return the list of extra output dependencies. More...
 
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. More...
 
const ServiceHandle< StoreGateSvc > & evtStore () const
 The standard StoreGateSvc (event store) Returns (kind of) a pointer to the StoreGateSvc. More...
 
const ServiceHandle< StoreGateSvc > & detStore () const
 The standard StoreGateSvc/DetectorStore Returns (kind of) a pointer to the StoreGateSvc. More...
 
virtual StatusCode sysStart () override
 Handle START transition. More...
 
virtual std::vector< Gaudi::DataHandle * > inputHandles () const override
 Return this algorithm's input handles. More...
 
virtual std::vector< Gaudi::DataHandle * > outputHandles () const override
 Return this algorithm's output handles. More...
 
Gaudi::Details::PropertyBase & declareProperty (Gaudi::Property< T, V, H > &t)
 
Gaudi::Details::PropertyBase * declareProperty (const std::string &name, SG::VarHandleKey &hndl, const std::string &doc, const SG::VarHandleKeyType &)
 Declare a new Gaudi property. More...
 
Gaudi::Details::PropertyBase * declareProperty (const std::string &name, SG::VarHandleBase &hndl, const std::string &doc, const SG::VarHandleType &)
 Declare a new Gaudi property. More...
 
Gaudi::Details::PropertyBase * declareProperty (const std::string &name, SG::VarHandleKeyArray &hndArr, const std::string &doc, const SG::VarHandleKeyArrayType &)
 
Gaudi::Details::PropertyBase * declareProperty (const std::string &name, T &property, const std::string &doc, const SG::NotHandleType &)
 Declare a new Gaudi property. More...
 
Gaudi::Details::PropertyBase * declareProperty (const std::string &name, T &property, const std::string &doc="none")
 Declare a new Gaudi property. More...
 
void updateVHKA (Gaudi::Details::PropertyBase &)
 
MsgStream & msg () const
 
MsgStream & msg (const MSG::Level lvl) const
 
bool msgLvl (const MSG::Level lvl) const
 

Protected Types

enum  DefectTypes { kModuleDefects, kCornerDefects, kMaskDefects }
 
enum  EProbabilities { kModuleDefectProb, kCellDefectProb, kNProb }
 
enum  ECornerDefectParams {
  kCornerDefectProb, kCornerDefectWidthColumnDirectionOffset, kCornerDefectWidthColumnDirection, kCornerDefectkWidthRowDirectionOffset,
  kCornerDefectkWidthRowDirection, kCornerDefectkSagittaOffset, kCornerDefectkSagitta, kNCornerDefectParams
}
 
enum  ECounts {
  kNElements, kNDefects, kNRetries, kNMaxRtriesExceeded,
  kNModulesWithDefects, kMaxDefectsPerModule, kNCounts
}
 
enum  EPosHistType { kDefectModulePos, kModulesWithDefectsPos, kNPosHists }
 
enum  EPerModuleHistType { kMatrixTypeId, kDefectModule, kDefectCell, kNPerModuleHistTypes }
 

Protected Member Functions

std::unordered_multimap< unsigned int, unsigned int > getModuleConnectionMap (const InDetDD::SiDetectorElementCollection &det_ele_coll) const
 Return the map which defines which modules are connected to the same sensor as a reference module. More...
 
bool isModuleDefect (const EventContext &ctx, unsigned int id_hash) const
 Alternative method to declare strip modules as defect. More...
 
const StripDefectsEmulatorCondAlgderived () 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. More...
 
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. More...
 
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. More...
 
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 More...
 
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. More...
 

Static Protected Member Functions

static std::string IDName ()
 Name of the SCT_ID helper. More...
 

Protected Attributes

ToolHandle< ISCT_ConditionsToolm_moduleVetoTool {this,"SCTConditionsTool","","Optional SCT conditions tool to mark modules as defect (alternative to ModulePattern)"}
 
SG::ReadCondHandleKey< T_DetectorElementCollectionm_detEleCollKey
 
SG::WriteCondHandleKey< T_EmulatedDefectsm_writeKey
 
Gaudi::Property< std::string > m_idName
 
const T_IDm_idHelper
 
ServiceHandle< IAthRNGSvcm_rndmSvc {this, "RndmSvc", "AthRNGSvc", ""}
 
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 {this, "RngPerDefectType", false, "One RNG per defect type to decorrelate randomness of defects."}
 
Gaudi::Property< bool > m_oddRowToggle {this, "OddRowToggle", false}
 
Gaudi::Property< bool > m_oddColToggle {this, "OddColToggle", false}
 
Gaudi::Property< bool > m_checkerBoardToggle {this, "CheckerBoardDefects", false}
 
Gaudi::Property< unsigned int > m_maxAttempts {this, "MaxRandomPositionAttempts", 10}
 
ServiceHandle< ITHistSvc > m_histSvc {this,"HistSvc","THistSvc"}
 
Gaudi::Property< std::string > m_histogramGroupName {this,"HistogramGroupName","", "Histogram group name or empty to disable histogramming"}
 
Gaudi::Property< bool > m_fillHistogramsPerPattern {this, "FillHistogramsPerPattern", false, "If true, histogram per module defects etc. separately per pattern."}
 
Gaudi::Property< bool > m_fillEtaPhiHistogramsPerPattern {this, "FillEtaPhiHistogramsPerPattern", false, "If true, histogram per eta, phi amd z, R are filled separately per pattern."}
 
Gaudi::Property< std::string > m_outputFile {this,"DefectsOutputFile","", "Empty or file name to write out conditions data (.json or .root)."}
 
Gaudi::Property< std::vector< std::string > > m_inputFiles {this,"DefectsInputFiles",{}, "Empty or file name to write out conditions data (.json or .root)."}
 
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 = false
 

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> More...
 
Gaudi::Details::PropertyBase & declareGaudiProperty (Gaudi::Property< T, V, H > &hndl, const SG::VarHandleKeyArrayType &)
 specialization for handling Gaudi::Property<SG::VarHandleKeyArray> More...
 
Gaudi::Details::PropertyBase & declareGaudiProperty (Gaudi::Property< T, V, H > &hndl, const SG::VarHandleType &)
 specialization for handling Gaudi::Property<SG::VarHandleBase> More...
 
Gaudi::Details::PropertyBase & declareGaudiProperty (Gaudi::Property< T, V, H > &t, const SG::NotHandleType &)
 specialization for handling everything that's not a Gaudi::Property<SG::VarHandleKey> or a <SG::VarHandleKeyArray> More...
 

Private Attributes

DataObjIDColl m_extendedExtraObjects
 Extra output dependency collection, extended by AthAlgorithmDHUpdate to add symlinks. More...
 
StoreGateSvc_t m_evtStore
 Pointer to StoreGate (event store by default) More...
 
StoreGateSvc_t m_detStore
 Pointer to StoreGate (detector store by default) More...
 
std::vector< SG::VarHandleKeyArray * > m_vhka
 
bool m_varHandleArraysDeclared
 

Friends

class DefectsEmulatorCondAlgImpl< StripDefectsEmulatorCondAlg >
 

Detailed Description

Conditions algorithms for emulating ITK strip defects.

The algorithm mask random strips and modules as defect. This data can be used to reject hits overlapping with these defects.

Definition at line 38 of file StripDefectsEmulatorCondAlg.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

Definition at line 40 of file DefectsEmulatorCondAlgImpl.h.

◆ T_EmulatedDefects

Definition at line 39 of file DefectsEmulatorCondAlgImpl.h.

◆ T_ID

Definition at line 37 of file DefectsEmulatorCondAlgImpl.h.

◆ T_ModuleDesign

Definition at line 41 of file DefectsEmulatorCondAlgImpl.h.

◆ T_ModuleHelper

Definition at line 38 of file DefectsEmulatorCondAlgImpl.h.

Member Enumeration Documentation

◆ DefectTypes

Enumerator
kModuleDefects 
kCornerDefects 
kMaskDefects 

Definition at line 100 of file DefectsEmulatorCondAlgBase.h.

100  {
104  };

◆ ECornerDefectParams

Enumerator
kCornerDefectProb 
kCornerDefectWidthColumnDirectionOffset 
kCornerDefectWidthColumnDirection 
kCornerDefectkWidthRowDirectionOffset 
kCornerDefectkWidthRowDirection 
kCornerDefectkSagittaOffset 
kCornerDefectkSagitta 
kNCornerDefectParams 

Definition at line 112 of file DefectsEmulatorCondAlgBase.h.

◆ ECounts

Enumerator
kNElements 
kNDefects 
kNRetries 
kNMaxRtriesExceeded 
kNModulesWithDefects 
kMaxDefectsPerModule 
kNCounts 

Definition at line 159 of file DefectsEmulatorCondAlgBase.h.

159  {
160  kNElements,
161  kNDefects,
162  kNRetries,
166  kNCounts
167  };

◆ EPerModuleHistType

Enumerator
kMatrixTypeId 
kDefectModule 
kDefectCell 
kNPerModuleHistTypes 

Definition at line 244 of file DefectsEmulatorCondAlgBase.h.

244  {
247  kDefectCell,
249  };

◆ EPosHistType

Enumerator
kDefectModulePos 
kModulesWithDefectsPos 
kNPosHists 

Definition at line 236 of file DefectsEmulatorCondAlgBase.h.

236  {
239  kNPosHists
240  };

◆ EProbabilities

Enumerator
kModuleDefectProb 
kCellDefectProb 
kNProb 

Definition at line 106 of file DefectsEmulatorCondAlgBase.h.

106  {
109  kNProb
110  };

Member Function Documentation

◆ cardinality()

unsigned int AthCommonReentrantAlgorithm< Gaudi::Algorithm >::cardinality
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.

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 188 of file DefectsEmulatorCondAlgBase.cxx.

188  {
189  if (!(m_modulePattern.size() == m_defectProbability.size()
191  && ModuleIdentifierMatchUtil::verifyElementCount<double>(m_defectProbability.value(), n_probabilities))) {
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  }
199  ret = ModuleIdentifierMatchUtil::verifyElementCount<double>(m_defectProbability.value(), n_probabilities);
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()
206  && ModuleIdentifierMatchUtil::verifyElementCount<double>(m_defectProbability.value(), n_probabilities)
207  ? StatusCode::SUCCESS : StatusCode::FAILURE;
208  }

◆ declareGaudiProperty() [1/4]

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

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

Definition at line 170 of file AthCommonDataStore.h.

172  {
173  return *AthCommonDataStore<PBASE>::declareProperty(hndl.name(),
174  hndl.value(),
175  hndl.documentation());
176 
177  }

◆ declareGaudiProperty() [2/4]

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  {
159  return *AthCommonDataStore<PBASE>::declareProperty(hndl.name(),
160  hndl.value(),
161  hndl.documentation());
162 
163  }

◆ declareGaudiProperty() [3/4]

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

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

Definition at line 184 of file AthCommonDataStore.h.

186  {
187  return *AthCommonDataStore<PBASE>::declareProperty(hndl.name(),
188  hndl.value(),
189  hndl.documentation());
190  }

◆ declareGaudiProperty() [4/4]

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

specialization for handling everything that's not a Gaudi::Property<SG::VarHandleKey> or a <SG::VarHandleKeyArray>

Definition at line 199 of file AthCommonDataStore.h.

200  {
201  return PBASE::declareProperty(t);
202  }

◆ declareProperty() [1/6]

Gaudi::Details::PropertyBase* AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::declareProperty ( const std::string &  name,
SG::VarHandleBase hndl,
const std::string &  doc,
const SG::VarHandleType  
)
inlineinherited

Declare a new Gaudi property.

Parameters
nameName of the property.
hndlObject holding the property value.
docDocumentation string for the property.

This is the version for types that derive from SG::VarHandleBase. The property value object is put on the input and output lists as appropriate; then we forward to the base class.

Definition at line 245 of file AthCommonDataStore.h.

249  {
250  this->declare(hndl.vhKey());
251  hndl.vhKey().setOwner(this);
252 
253  return PBASE::declareProperty(name,hndl,doc);
254  }

◆ declareProperty() [2/6]

Gaudi::Details::PropertyBase* AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::declareProperty ( const std::string &  name,
SG::VarHandleKey hndl,
const std::string &  doc,
const SG::VarHandleKeyType  
)
inlineinherited

Declare a new Gaudi property.

Parameters
nameName of the property.
hndlObject holding the property value.
docDocumentation string for the property.

This is the version for types that derive from SG::VarHandleKey. The property value object is put on the input and output lists as appropriate; then we forward to the base class.

Definition at line 221 of file AthCommonDataStore.h.

225  {
226  this->declare(hndl);
227  hndl.setOwner(this);
228 
229  return PBASE::declareProperty(name,hndl,doc);
230  }

◆ declareProperty() [3/6]

Gaudi::Details::PropertyBase* AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::declareProperty ( const std::string &  name,
SG::VarHandleKeyArray hndArr,
const std::string &  doc,
const SG::VarHandleKeyArrayType  
)
inlineinherited

Definition at line 259 of file AthCommonDataStore.h.

263  {
264 
265  // std::ostringstream ost;
266  // ost << Algorithm::name() << " VHKA declareProp: " << name
267  // << " size: " << hndArr.keys().size()
268  // << " mode: " << hndArr.mode()
269  // << " vhka size: " << m_vhka.size()
270  // << "\n";
271  // debug() << ost.str() << endmsg;
272 
273  hndArr.setOwner(this);
274  m_vhka.push_back(&hndArr);
275 
276  Gaudi::Details::PropertyBase* p = PBASE::declareProperty(name, hndArr, doc);
277  if (p != 0) {
278  p->declareUpdateHandler(&AthCommonDataStore<PBASE>::updateVHKA, this);
279  } else {
280  ATH_MSG_ERROR("unable to call declareProperty on VarHandleKeyArray "
281  << name);
282  }
283 
284  return p;
285 
286  }

◆ declareProperty() [4/6]

Gaudi::Details::PropertyBase* AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::declareProperty ( const std::string &  name,
T &  property,
const std::string &  doc,
const SG::NotHandleType  
)
inlineinherited

Declare a new Gaudi property.

Parameters
nameName of the property.
propertyObject holding the property value.
docDocumentation string for the property.

This is the generic version, for types that do not derive from SG::VarHandleKey. It just forwards to the base class version of declareProperty.

Definition at line 333 of file AthCommonDataStore.h.

337  {
338  return PBASE::declareProperty(name, property, doc);
339  }

◆ declareProperty() [5/6]

Gaudi::Details::PropertyBase* AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::declareProperty ( const std::string &  name,
T &  property,
const std::string &  doc = "none" 
)
inlineinherited

Declare a new Gaudi property.

Parameters
nameName of the property.
propertyObject holding the property value.
docDocumentation string for the property.

This dispatches to either the generic declareProperty or the one for VarHandle/Key/KeyArray.

Definition at line 352 of file AthCommonDataStore.h.

355  {
356  typedef typename SG::HandleClassifier<T>::type htype;
357  return declareProperty (name, property, doc, htype());
358  }

◆ declareProperty() [6/6]

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  }

◆ DefectsEmulatorCondAlgBase()

InDet::DefectsEmulatorCondAlgBase::DefectsEmulatorCondAlgBase
inherited

Definition at line 43 of file DefectsEmulatorCondAlgBase.cxx.

24  : AthReentrantAlgorithm(name, pSvcLocator)
25  {}

◆ derived()

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() [1/2]

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; }

◆ evtStore() [2/2]

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

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

Definition at line 90 of file AthCommonDataStore.h.

90 { return m_evtStore; }

◆ execute()

virtual StatusCode InDet::DefectsEmulatorCondAlgImpl< StripDefectsEmulatorCondAlg >::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
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  }
96  return BaseAlg::extraOutputDeps();
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 505 of file DefectsEmulatorCondAlgBase.cxx.

513  {
514  // all the following histograms are expected to have the same binning
515  // i.e. one bin per ID hash organised in a matrix
516  assert( pattern_hist_i < m_moduleHist.size());
517  assert( kMatrixTypeId < m_moduleHist[pattern_hist_i].size());
518  assert( kDefectModule < m_moduleHist[pattern_hist_i].size());
519  unsigned int ids_per_col = static_cast<unsigned int>(m_moduleHist[pattern_hist_i][kDefectModule]->GetNbinsX());
520  unsigned int bin_i=m_moduleHist[pattern_hist_i][kDefectModule]->GetBin( module_i%ids_per_col+1, module_i/ids_per_col+1);
521  unsigned int mask_i=n_masks;
522  for (; --mask_i>0; ) {
523  assert( mask_i < n_mask_defects.size() && mask_i>0);
524  if (!m_groupDefectHists.empty()) {
525  m_groupDefectHists[pattern_hist_i][matrix_histogram_index][mask_i-1]->Fill(n_mask_defects[mask_i]);
526  }
527  assert( (kDefectCell+mask_i) < m_moduleHist[pattern_hist_i].size());
528  m_moduleHist[pattern_hist_i][kDefectCell+mask_i]->SetBinContent(bin_i, n_mask_defects[mask_i]);
529  }
530  assert( (kDefectCell+mask_i) < m_moduleHist[pattern_hist_i].size());
531  m_moduleHist[pattern_hist_i][kDefectCell+mask_i]->SetBinContent(bin_i, n_mask_defects[mask_i]);
532  m_moduleHist[pattern_hist_i][kMatrixTypeId]->SetBinContent(bin_i, matrix_index+1 );
533  unsigned int n_defects_total = std::accumulate(n_mask_defects.begin(),n_mask_defects.end(), 0u);
534  if (n_defects_total>0) {
535  unsigned int eta_phi_pattern_i = m_fillEtaPhiHistogramsPerPattern ? module_pattern_i : 0;
536  assert( kModulesWithDefectsPos < m_defectModuleEtaPhiHist.size());
537  assert( eta_phi_pattern_i < m_defectModuleEtaPhiHist[kModulesWithDefectsPos].size() );
538  m_defectModuleEtaPhiHist[kModulesWithDefectsPos][eta_phi_pattern_i]->Fill(center.z(), center.perp());
539  m_defectModuleEtaLayerHist[kModulesWithDefectsPos][eta_phi_pattern_i]->Fill(center.x(), center.y(),n_defects_total);
540  }
541  }

◆ 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  }

◆ finalize()

StatusCode InDet::DefectsEmulatorCondAlgBase::finalize ( )
overridevirtualinherited

Definition at line 210 of file DefectsEmulatorCondAlgBase.cxx.

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

◆ 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 296 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  {
302  std::vector<unsigned int>::const_iterator global_iter = std::find(m_matrixTypeId.begin(), m_matrixTypeId.end(), key );
303  if (global_iter != m_matrixTypeId.end()) {
304  matrix_type_id = global_iter - m_matrixTypeId.begin();
305  }
306  else {
307  matrix_type_id =m_matrixTypeId.size();
308  m_matrixTypeId.push_back(key);
309  }
310  }
311 
312  std::vector<unsigned int>::const_iterator iter = std::find(m_dimPerHist[pattern_i].begin(), m_dimPerHist[pattern_i].end(), key );
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()) {
333  assert( pattern_i < m_groupDefectHists.size());
334  assert( m_groupDefectHistNames.size() == m_maxNGroupDefects.size());
335  m_groupDefectHists[pattern_i].emplace_back();
336  m_groupDefectHists[pattern_i].back().resize(m_groupDefectHistNames.size());
337  for (unsigned int group_i=0u; group_i < m_groupDefectHistNames.size(); ++group_i) {
338  const std::string &group_name = m_groupDefectHistNames[group_i];
340  hname << "n_" << group_name << "_" << pattern_i << "_" << matrix_type_id << "_" << n_rows << "_" << n_cols;
341  HistUtil::StringCat htitle;
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  {
347  assert(group_i < m_groupDefectHists[pattern_i].back().size());
348  m_groupDefectHists[pattern_i].back()[group_i]= new TH1F(hname.str().c_str(), htitle.str().c_str(),
349  m_maxNGroupDefects[group_i]+1, -0.5,m_maxNGroupDefects[group_i]+.5);
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::StripDefectsEmulatorCondAlg::getModuleConnectionMap ( const InDetDD::SiDetectorElementCollection det_ele_coll) const
inlineprotected

Return the map which defines which modules are connected to the same sensor as a reference module.

Definition at line 57 of file StripDefectsEmulatorCondAlg.h.

57  {
59  }

◆ 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

Definition at line 490 of file DefectsEmulatorCondAlgBase.cxx.

493  {
494  assert( hist_pattern_i < m_moduleHist.size() );
495  unsigned int ids_per_col = static_cast<unsigned int>(m_moduleHist[hist_pattern_i][kDefectModule]->GetNbinsX());
496  unsigned int bin_i=m_moduleHist[hist_pattern_i][kDefectModule]->GetBin( id_hash%ids_per_col+1, id_hash/ids_per_col+1);
497  m_moduleHist[hist_pattern_i][kDefectModule]->SetBinContent(bin_i,1);
498  unsigned int eta_phi_pattern_i = m_fillEtaPhiHistogramsPerPattern ? module_pattern_i : 0;
499  assert( kDefectModulePos < m_defectModuleEtaPhiHist.size());
500  assert( eta_phi_pattern_i < m_defectModuleEtaPhiHist[kDefectModulePos].size() );
501  m_defectModuleEtaPhiHist[kDefectModulePos][eta_phi_pattern_i]->Fill(center.z(), center.perp());
502  m_defectModuleEtaLayerHist[kDefectModulePos][eta_phi_pattern_i]->Fill(center.x(), center.y());
503  }

◆ IDName()

static std::string InDet::StripDefectsEmulatorCondAlg::IDName ( )
inlinestaticprotected

Name of the SCT_ID helper.

Definition at line 53 of file StripDefectsEmulatorCondAlg.h.

53 { return std::string("SCT_ID"); }

◆ initialize()

StatusCode InDet::StripDefectsEmulatorCondAlg::initialize ( )
finaloverridevirtual

Reimplemented from InDet::DefectsEmulatorCondAlgImpl< StripDefectsEmulatorCondAlg >.

Definition at line 7 of file StripDefectsEmulatorCondAlg.cxx.

7  {
8  // There are no group defects defined for strips
10  m_maxNGroupDefects.clear();
12  }

◆ initializeBase()

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

Definition at line 27 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) {
34  std::stringstream rng_name;
35  rng_name << name() << "RngMaskDefect" << mask_i;
36  m_rngName.push_back(rng_name.str());
37  }
38  assert(kMaskDefects+n_masks == m_rngName.size());
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\".");
47  return StatusCode::FAILURE;
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\".");
52  return StatusCode::FAILURE;
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
61  unsigned int n_pattern_for_histogramming = m_fillHistogramsPerPattern ? m_modulePattern.size() : 1;
62  constexpr unsigned int n_different_matrices_max=6;
63  m_dimPerHist.resize(n_pattern_for_histogramming);
64  m_hist.resize(n_pattern_for_histogramming);
65  if (!m_groupDefectHistNames.empty()) {
66  m_groupDefectHists.resize(n_pattern_for_histogramming);
67  }
68  for (unsigned int pattern_i=0; pattern_i < n_pattern_for_histogramming; ++pattern_i) {
69  m_dimPerHist[pattern_i].reserve(n_different_matrices_max);
70  m_hist[pattern_i].reserve(n_different_matrices_max);
71  }
72  std::vector<std::string> hist_name {
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"};
76  for (const std::string &group_name: m_groupDefectHistNames) {
78  hname << group_name << "defects_per_module;" << group_name <<" defects per module";
79  hist_name.push_back(hname.str());
80  }
81  m_moduleHist.resize(n_pattern_for_histogramming);
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
88  std::string::size_type pos = hist_name.at(hist_i).find(";");
89  HistUtil::StringCat a_name;
90  a_name << hist_name[hist_i].substr(0, (pos != std::string::npos ? pos : hist_name[hist_i].size())) << "_" << pattern_i;
91  HistUtil::StringCat a_title;
92  a_title << hist_name[hist_i].substr((pos != std::string::npos ? pos+1 : 0), hist_name[hist_i].size())
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 
111  unsigned int n_eta_phi_histograms = m_fillEtaPhiHistogramsPerPattern ? m_modulePattern.size() : 1;
112  for (unsigned int pos_i=0; pos_i<m_defectModuleEtaPhiHist.size(); ++pos_i) {
113  m_defectModuleEtaPhiHist.at(pos_i).resize(n_eta_phi_histograms, nullptr);
114  m_defectModuleEtaLayerHist.at(pos_i).resize(n_eta_phi_histograms, nullptr);
115  }
116  std::array<std::string_view, kNPosHists> pos_hist_name {
117  "defect_modules",
118  "modules_with_defects"
119  };
120  std::array<std::string_view, kNPosHists> pos_hist_title {
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  {
127  HistUtil::StringCat a_name;
128  a_name << pos_hist_name.at(pos_i) << "_zr" << "_" << pattern_i;
129  HistUtil::StringCat a_title;
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  {
144  HistUtil::StringCat a_name;
145  a_name << pos_hist_name.at(pos_i) << "_xy" << "_" << pattern_i;
146  HistUtil::StringCat a_title;
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);
165  for (const std::vector<std::vector<float> > &fractions_per_pattern : m_perPatternAndMaskFractions) {
166  for (unsigned int mask_i=0; mask_i<n_masks-1; ++mask_i) {
167  m_maxNGroupDefects[mask_i] = std::max(m_maxNGroupDefects[mask_i], static_cast<unsigned int>(fractions_per_pattern[mask_i].size()));
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  }

◆ initializeCornerDefects()

StatusCode InDet::DefectsEmulatorCondAlgBase::initializeCornerDefects ( )
protectedinherited

Definition at line 443 of file DefectsEmulatorCondAlgBase.cxx.

443  {
444  if (!m_cornerDefectParamsPerPattern.empty()) {
445  if (m_cornerDefectParamsPerPattern.size() != m_modulePattern.size()) {
446  ATH_MSG_ERROR("Expected exactly one set of corner defect parameters per module pattern but the numbers disagree "
447  << m_cornerDefectParamsPerPattern.size() << " != " << m_modulePattern.size());
448  return StatusCode::FAILURE;
449  }
451  ATH_MSG_ERROR("Expected exactly one set of n corner fractions per module pattern but the numbers disagree "
453  return StatusCode::FAILURE;
454  }
456  for (unsigned int pattern_i=0; pattern_i < m_cornerDefectParamsPerPattern.size(); ++pattern_i) {
457  if (m_cornerDefectParamsPerPattern[pattern_i].empty()) continue;
459  ATH_MSG_ERROR("Mismatch in number of corner defect parameters for pattern " << pattern_i << ". Expected " << kNCornerDefectParams
460  << " but got " << m_cornerDefectParamsPerPattern[pattern_i].size() );
461  return StatusCode::FAILURE;
462  }
463  if (m_cornerDefectNCornerFractionsPerPattern[pattern_i].size()>4) {
464  ATH_MSG_ERROR("Too many Fractions for corner defects for pattern " << pattern_i <<
465  ". Expected fractions for at most 4 corners but got " << m_cornerDefectNCornerFractionsPerPattern[pattern_i].size()
466  << ".");
467  return StatusCode::FAILURE;
468  }
469  double scale = std::accumulate( m_cornerDefectNCornerFractionsPerPattern.value()[pattern_i].begin(),
470  m_cornerDefectNCornerFractionsPerPattern.value()[pattern_i].end(),
471  0.);
472  if (std::abs(scale-1.)>1e-3) {
473  ATH_MSG_ERROR("The fractions for corner defects in 1.." << m_cornerDefectNCornerFractionsPerPattern[pattern_i].size()
474  << " corner(s) for pattern " << pattern_i << " do not add up to ~1 but " << scale);
475  return StatusCode::FAILURE;
476  }
479  double total = 0.;
480  for (double fraction : m_cornerDefectNCornerFractionsPerPattern[pattern_i]) {
481  total += fraction * scale;
482  m_perPatternCornerDefectNCornerCummulativeProb[pattern_i].push_back( static_cast<float>(total) );
483  }
484  }
485  }
486  return StatusCode::SUCCESS;
487  }

◆ initializeProbabilities()

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

Definition at line 373 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  for (unsigned int pattern_i=0; pattern_i< m_perPatternAndMaskFractions.size(); ++pattern_i) {
387  m_perPatternAndMaskFractions[pattern_i].reserve( n_masks-1);
388  m_perPatternAndMaskFractions[pattern_i].emplace_back();
389  if (m_defectProbability[pattern_i].size() != kCellDefectProb + n_masks) {
390  ATH_MSG_ERROR("There should be one probability for the module to be defect, one probability for a pixel/strip etc. "
391  "to be defect and one probability for each group to be defect i.e. "
392  << (kCellDefectProb + n_masks) << " probabilities, but there are "
393  << m_defectProbability.size() << " for pattern " << pattern_i);
394  return StatusCode::FAILURE;
395  }
396  double sum=0.;
397  for (unsigned int value_i=0; value_i< m_nDefectFractionsPerPattern[pattern_i].size(); ++value_i) {
398  if (m_nDefectFractionsPerPattern[pattern_i][value_i]<0.) {
399  if (value_i+1 < m_nDefectFractionsPerPattern[pattern_i].size()) {
400  if (m_perPatternAndMaskFractions[pattern_i].size() == n_masks-1) {
401  ATH_MSG_ERROR("More fraction lists than number of masks: "
402  << m_perPatternAndMaskFractions[pattern_i].size()+1 << " > " << (n_masks-1)
403  << " for pattern " << pattern_i);
404  return StatusCode::FAILURE;
405  }
406  m_perPatternAndMaskFractions[pattern_i].emplace_back();
407  sum=0.;
408  }
409  }
410  else {
411  sum += m_nDefectFractionsPerPattern[pattern_i][value_i];
412  m_perPatternAndMaskFractions[pattern_i].back().push_back(sum);
413  }
414  }
415  for (unsigned int mask_i=0; mask_i< m_perPatternAndMaskFractions[pattern_i].size(); ++mask_i) {
416  if ( m_perPatternAndMaskFractions[pattern_i][mask_i].empty()
417  || std::abs(m_perPatternAndMaskFractions[pattern_i][mask_i].back()-1.)>1e-5) {
418  ATH_MSG_ERROR("Empty fraction list or fractions do not add up to 1: "
419  << (!m_perPatternAndMaskFractions[pattern_i][mask_i].empty()
420  ?m_perPatternAndMaskFractions[pattern_i][mask_i].back() : -1.f)
421  << " for pattern " << pattern_i << ", mask " << mask_i
422  << " (" << m_groupDefectHistNames.at(mask_i) << ")");
423  return StatusCode::FAILURE;
424  }
425  ATH_MSG_DEBUG("Fractions for pattern " << pattern_i << " mask " << mask_i
426  << " (" << m_groupDefectHistNames.at(mask_i) << "):"
427  << m_perPatternAndMaskFractions[pattern_i][mask_i]);
428  assert( pattern_i < m_defectProbability.size() );
429  assert( kNProb + mask_i < m_defectProbability[pattern_i].size() );
430  for (float &value : m_perPatternAndMaskFractions[pattern_i][mask_i] ) {
431  value *= m_defectProbability[pattern_i][kNProb+mask_i];
432  }
433  ATH_MSG_DEBUG("Probabilities for pattern " << pattern_i << " mask " << mask_i
434  << " (" << m_groupDefectHistNames.at(mask_i) << ") for 1.."
435  << m_perPatternAndMaskFractions[pattern_i][mask_i].size() << " defects:"
436  << m_perPatternAndMaskFractions[pattern_i][mask_i]);
437  }
438  }
439  }
440  return checkProbabilities(kCellDefectProb+n_masks);
441  }

◆ 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
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::StripDefectsEmulatorCondAlg::isModuleDefect ( const EventContext &  ctx,
unsigned int  id_hash 
) const
inlineprotected

Alternative method to declare strip modules as defect.

If the module veto tool is enabled, the tool can be used alternatively to declare strip modules as defect.

Definition at line 63 of file StripDefectsEmulatorCondAlg.h.

63  {
64  return (m_moduleVetoTool.isEnabled() && !m_moduleVetoTool->isGood(id_hash, ctx));
65  }

◆ 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() );
154  total_prob += m_defectProbability.value()[pattern_i][prob_idx];
155  cumulative_prob.push_back(total_prob);
156  }
157  }

◆ msg() [1/2]

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

Definition at line 24 of file AthCommonMsg.h.

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

◆ msg() [2/2]

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

Definition at line 27 of file AthCommonMsg.h.

27  {
28  return this->msgStream(lvl);
29  }

◆ 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 263 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];
273  if (counts[mask_i][kNRetries]>0 || counts[mask_i][kNMaxRtriesExceeded]>0) {
274  msg() << "(";
275  if (counts[mask_i][kNRetries]>0) {
276  msg() << "retries " << counts[mask_i][kNRetries];
277  if (counts[mask_i][kNMaxRtriesExceeded]>0) {
278  msg() << ";";
279  }
280  }
281  if (counts[mask_i][kNMaxRtriesExceeded]>0) {
282  msg() << "exceeded max attempts " << counts[mask_i][kNMaxRtriesExceeded];
283  }
284  msg() << ")";
285  }
286  if (counts[mask_i][kMaxDefectsPerModule]>0) {
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();
383  PBASE::renounce (h);
384  }

◆ 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  {
365  handlesArray.renounce();
366  }

◆ setFilterPassed()

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

Definition at line 100 of file AthCommonReentrantAlgorithm.h.

100  {
101  execState( ctx ).setFilterPassed( state );
102  }

◆ 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

Reimplemented from AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >.

Reimplemented in InputMakerBase, and HypoBase.

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()) {
123  sc = StatusCode::FAILURE;
124  ATH_MSG_ERROR("unable to register WriteCondHandle " << h->fullKey()
125  << " with CondSvc");
126  }
127  }
128  }
129  return sc;
130 }

◆ 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 218 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.
229  std::vector<bool> has(n_masks, false);
230  for (unsigned int mask_i=n_masks; mask_i-->1; ) {
231  for (unsigned int match_i: module_pattern_idx) {
232  assert(!m_perPatternAndMaskFractions.at(match_i).at(mask_i-1).empty());
233  if (m_perPatternAndMaskFractions.at(match_i).at(mask_i-1).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) {
245  unsigned int n_mask_defects_idx=m_perPatternAndMaskFractions.at(match_i).at(mask_i-1).size();
246  for (; n_mask_defects_idx-->0 && prob <= m_perPatternAndMaskFractions[match_i][mask_i-1][n_mask_defects_idx];);
247  if (++n_mask_defects_idx < m_perPatternAndMaskFractions[match_i][mask_i-1].size()) {
248  n_mask_defects[mask_i] = n_mask_defects_idx+1;
249  break;
250  }
251 
252  prob -= m_perPatternAndMaskFractions[match_i][mask_i-1].back();
253  if (prob<=0.f) break;
254  }
255  }
256  double defect_prob = totalProbability(module_pattern_idx,kCellDefectProb);
257  n_mask_defects[0]= static_cast<unsigned int>(std::max(0,static_cast<int>(
258  CLHEP::RandPoisson::shoot(rndmEngine[0],
259  n_cells * defect_prob))));
260  return std::accumulate(n_mask_defects.begin(),n_mask_defects.end(), 0u);
261  }

◆ 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() );
136  total_prob += m_defectProbability.value()[pattern_i][prob_idx];
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) {
312  std::vector<SG::VarHandleKey*> keys = a->keys();
313  for (auto k : keys) {
314  k->setOwner(this);
315  }
316  }
317  }

Friends And Related Function Documentation

◆ DefectsEmulatorCondAlgImpl< StripDefectsEmulatorCondAlg >

Definition at line 1 of file StripDefectsEmulatorCondAlg.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 {this, "CheckerBoardDefects", false}
protectedinherited

Definition at line 80 of file DefectsEmulatorCondAlgBase.h.

◆ m_cornerDefectNCornerFractionsPerPattern

Gaudi::Property<std::vector<std::vector<double> > > InDet::DefectsEmulatorCondAlgBase::m_cornerDefectNCornerFractionsPerPattern
protectedinherited
Initial value:
{this,"NCornerDefectFractionsPerPattern", {},
"List of fractions per pattern for exactly 1 to 4 corner defects under the codition that there is a defect." }

Definition at line 64 of file DefectsEmulatorCondAlgBase.h.

◆ m_cornerDefectParamsPerPattern

Gaudi::Property<std::vector<std::vector<double> > > InDet::DefectsEmulatorCondAlgBase::m_cornerDefectParamsPerPattern
protectedinherited
Initial value:
{this,"CornerDefectParamsPerPattern", {},
"Set of corner defect parameters (probability, x-intersection pos min, max, y-intersection pos min, max, sagitta minm max). "
"per module pattern. " }

Definition at line 60 of file DefectsEmulatorCondAlgBase.h.

◆ m_defectProbability

Gaudi::Property<std::vector<std::vector<double> > > InDet::DefectsEmulatorCondAlgBase::m_defectProbability
protectedinherited
Initial value:
{this,"DefectProbabilities", {},
"Defect probabilities per module pattern: defect module, defect strip." }

Definition at line 53 of file DefectsEmulatorCondAlgBase.h.

◆ m_detEleCollKey

Definition at line 51 of file DefectsEmulatorCondAlgImpl.h.

◆ 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 {this, "FillEtaPhiHistogramsPerPattern", false, "If true, histogram per eta, phi amd z, R are filled separately per pattern."}
protectedinherited

Definition at line 90 of file DefectsEmulatorCondAlgBase.h.

◆ m_fillHistogramsPerPattern

Gaudi::Property<bool> InDet::DefectsEmulatorCondAlgBase::m_fillHistogramsPerPattern {this, "FillHistogramsPerPattern", false, "If true, histogram per module defects etc. separately per pattern."}
protectedinherited

Definition at line 88 of file DefectsEmulatorCondAlgBase.h.

◆ 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 {this,"HistogramGroupName","", "Histogram group name or empty to disable histogramming"}
protectedinherited

Definition at line 86 of file DefectsEmulatorCondAlgBase.h.

◆ m_histogrammingEnabled

bool InDet::DefectsEmulatorCondAlgBase::m_histogrammingEnabled = false
protectedinherited

Definition at line 253 of file DefectsEmulatorCondAlgBase.h.

◆ m_histSvc

ServiceHandle<ITHistSvc> InDet::DefectsEmulatorCondAlgBase::m_histSvc {this,"HistSvc","THistSvc"}
protectedinherited

Definition at line 85 of file DefectsEmulatorCondAlgBase.h.

◆ m_idHelper

Definition at line 60 of file DefectsEmulatorCondAlgImpl.h.

◆ m_idName

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

Definition at line 57 of file DefectsEmulatorCondAlgImpl.h.

◆ m_inputFiles

Gaudi::Property<std::vector<std::string> > InDet::DefectsEmulatorCondAlgBase::m_inputFiles {this,"DefectsInputFiles",{}, "Empty or file name to write out conditions data (.json or .root)."}
protectedinherited

Definition at line 95 of file DefectsEmulatorCondAlgBase.h.

◆ m_maxAttempts

Gaudi::Property<unsigned int> InDet::DefectsEmulatorCondAlgBase::m_maxAttempts {this, "MaxRandomPositionAttempts", 10}
protectedinherited

Definition at line 82 of file DefectsEmulatorCondAlgBase.h.

◆ 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
Initial value:
{this,"ModulePatterns", {},
"Integer ranges to select: (0-1) barrel/end-cap range, (2-3) layer, (4-5) eta index range, (6-7) phi index range, "
"(8-9) module number of columns or strips, (10) both sides (0,1), (11) all rows (0,1)" }

Definition at line 49 of file DefectsEmulatorCondAlgBase.h.

◆ m_modulesWithoutDefectParameters

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

Definition at line 251 of file DefectsEmulatorCondAlgBase.h.

◆ m_moduleVetoTool

ToolHandle<ISCT_ConditionsTool> InDet::StripDefectsEmulatorCondAlg::m_moduleVetoTool {this,"SCTConditionsTool","","Optional SCT conditions tool to mark modules as defect (alternative to ModulePattern)"}
protected

Definition at line 48 of file StripDefectsEmulatorCondAlg.h.

◆ m_nDefectFractionsPerPattern

Gaudi::Property<std::vector<std::vector<double> > > InDet::DefectsEmulatorCondAlgBase::m_nDefectFractionsPerPattern
protectedinherited
Initial value:
{this,"NDefectFractionsPerPattern", {},
"List of fractions per pattern for exactly 1 to n defects under the codition that there is a defect, where -1. marks the"
"end of this lists, before the fractions for the next mask start." }

Definition at line 56 of file DefectsEmulatorCondAlgBase.h.

◆ m_oddColToggle

Gaudi::Property<bool> InDet::DefectsEmulatorCondAlgBase::m_oddColToggle {this, "OddColToggle", false}
protectedinherited

Definition at line 78 of file DefectsEmulatorCondAlgBase.h.

◆ m_oddRowToggle

Gaudi::Property<bool> InDet::DefectsEmulatorCondAlgBase::m_oddRowToggle {this, "OddRowToggle", false}
protectedinherited

Definition at line 76 of file DefectsEmulatorCondAlgBase.h.

◆ m_outputFile

Gaudi::Property<std::string> InDet::DefectsEmulatorCondAlgBase::m_outputFile {this,"DefectsOutputFile","", "Empty or file name to write out conditions data (.json or .root)."}
protectedinherited

Definition at line 93 of file DefectsEmulatorCondAlgBase.h.

◆ 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 {this, "RndmSvc", "AthRNGSvc", ""}
protectedinherited

Definition at line 47 of file DefectsEmulatorCondAlgBase.h.

◆ 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 {this, "RngPerDefectType", false, "One RNG per defect type to decorrelate randomness of defects."}
protectedinherited

Definition at line 71 of file DefectsEmulatorCondAlgBase.h.

◆ 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.


The documentation for this class was generated from the following files:
AllowedVariables::e
e
Definition: AsgElectronSelectorTool.cxx:37
InDet::DefectsEmulatorCondAlgImpl::initialize
virtual StatusCode initialize() override
InDet::StripDefectsEmulatorCondAlg::m_moduleVetoTool
ToolHandle< ISCT_ConditionsTool > m_moduleVetoTool
Definition: StripDefectsEmulatorCondAlg.h:49
createLinkingScheme.iter
iter
Definition: createLinkingScheme.py:62
ATH_MSG_FATAL
#define ATH_MSG_FATAL(x)
Definition: AthMsgStreamMacros.h:34
InDet::DefectsEmulatorCondAlgBase::m_rndmSvc
ServiceHandle< IAthRNGSvc > m_rndmSvc
Definition: DefectsEmulatorCondAlgBase.h:47
InDet::DefectsEmulatorCondAlgBase::kMaxDefectsPerModule
@ kMaxDefectsPerModule
Definition: DefectsEmulatorCondAlgBase.h:165
InDet::DefectsEmulatorCondAlgBase::m_nDefectFractionsPerPattern
Gaudi::Property< std::vector< std::vector< double > > > m_nDefectFractionsPerPattern
Definition: DefectsEmulatorCondAlgBase.h:57
find
std::string find(const std::string &s)
return a remapped string
Definition: hcg.cxx:135
dqt_zlumi_pandas.hname
string hname
Definition: dqt_zlumi_pandas.py:280
InDet::DefectsEmulatorCondAlgBase::kDefectModulePos
@ kDefectModulePos
Definition: DefectsEmulatorCondAlgBase.h:237
max
constexpr double max()
Definition: ap_fixedTest.cxx:33
InDet::DefectsEmulatorCondAlgBase::initializeCornerDefects
StatusCode initializeCornerDefects()
Definition: DefectsEmulatorCondAlgBase.cxx:443
InDet::DefectsEmulatorCondAlgBase::totalProbability
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.
Definition: DefectsEmulatorCondAlgBase.h:132
AthCommonDataStore::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 > renounce(T &h)
Definition: AthCommonDataStore.h:380
PlotCalibFromCool.begin
begin
Definition: PlotCalibFromCool.py:94
InDet::DefectsEmulatorCondAlgBase::kModuleDefectProb
@ kModuleDefectProb
Definition: DefectsEmulatorCondAlgBase.h:107
python.ROOTUtils.protect
def protect(obj)
Definition: python/ROOTUtils.py:14
InDet::DefectsEmulatorCondAlgBase::m_histogramGroupName
Gaudi::Property< std::string > m_histogramGroupName
Definition: DefectsEmulatorCondAlgBase.h:87
InDet::DefectsEmulatorCondAlgBase::m_outputFile
Gaudi::Property< std::string > m_outputFile
Definition: DefectsEmulatorCondAlgBase.h:94
AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::m_evtStore
StoreGateSvc_t m_evtStore
Pointer to StoreGate (event store by default)
Definition: AthCommonDataStore.h:390
AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::m_vhka
std::vector< SG::VarHandleKeyArray * > m_vhka
Definition: AthCommonDataStore.h:398
python.resample_meson.input_file
input_file
Definition: resample_meson.py:164
InDet::DefectsEmulatorCondAlgImpl< StripDefectsEmulatorCondAlg >::m_idHelper
const T_ID * m_idHelper
Definition: DefectsEmulatorCondAlgImpl.h:60
athena.value
value
Definition: athena.py:124
InDet::DefectsEmulatorCondAlgBase::kNElements
@ kNElements
Definition: DefectsEmulatorCondAlgBase.h:160
InDet::DefectsEmulatorCondAlgBase::m_perPatternAndMaskFractions
std::vector< std::vector< std::vector< float > > > m_perPatternAndMaskFractions
Definition: DefectsEmulatorCondAlgBase.h:68
HistUtil::StringCat
Definition: HistUtil.h:41
InDet::DefectsEmulatorCondAlgBase::m_histSvc
ServiceHandle< ITHistSvc > m_histSvc
Definition: DefectsEmulatorCondAlgBase.h:85
read_hist_ntuple.t
t
Definition: read_hist_ntuple.py:5
InDet::DefectsEmulatorCondAlgBase::m_fillEtaPhiHistogramsPerPattern
Gaudi::Property< bool > m_fillEtaPhiHistogramsPerPattern
Definition: DefectsEmulatorCondAlgBase.h:91
ATH_MSG_VERBOSE
#define ATH_MSG_VERBOSE(x)
Definition: AthMsgStreamMacros.h:28
yodamerge_tmp.scale
scale
Definition: yodamerge_tmp.py:138
covarianceTool.prob
prob
Definition: covarianceTool.py:678
python.TrigEgammaMonitorHelper.TH2F
def TH2F(name, title, nxbins, bins_par2, bins_par3, bins_par4, bins_par5=None, bins_par6=None, path='', **kwargs)
Definition: TrigEgammaMonitorHelper.py:45
InDet::DefectsEmulatorCondAlgBase::kMaskDefects
@ kMaskDefects
Definition: DefectsEmulatorCondAlgBase.h:103
Trk::u
@ u
Enums for curvilinear frames.
Definition: ParamDefs.h:77
AthenaPoolTestRead.sc
sc
Definition: AthenaPoolTestRead.py:27
mergePhysValFiles.end
end
Definition: DataQuality/DataQualityUtils/scripts/mergePhysValFiles.py:92
SG::VarHandleKeyArray::setOwner
virtual void setOwner(IDataHandleHolder *o)=0
AthReentrantAlgorithm
An algorithm that can be simultaneously executed in multiple threads.
Definition: AthReentrantAlgorithm.h:74
InDet::DefectsEmulatorCondAlgBase::m_perPatternCornerDefectNCornerCummulativeProb
std::vector< std::vector< float > > m_perPatternCornerDefectNCornerCummulativeProb
Definition: DefectsEmulatorCondAlgBase.h:69
InDet::DefectsEmulatorCondAlgBase::kNCounts
@ kNCounts
Definition: DefectsEmulatorCondAlgBase.h:166
IDTPMcnv.htype
htype
Definition: IDTPMcnv.py:29
InDet::DefectsEmulatorCondAlgBase::m_rngPerDefectType
Gaudi::Property< bool > m_rngPerDefectType
Definition: DefectsEmulatorCondAlgBase.h:72
python.setupRTTAlg.size
int size
Definition: setupRTTAlg.py:39
AthCommonDataStore::declareGaudiProperty
Gaudi::Details::PropertyBase & declareGaudiProperty(Gaudi::Property< T, V, H > &hndl, const SG::VarHandleKeyType &)
specialization for handling Gaudi::Property<SG::VarHandleKey>
Definition: AthCommonDataStore.h:156
AthCommonReentrantAlgorithm::extraOutputDeps
virtual const DataObjIDColl & extraOutputDeps() const override
Return the list of extra output dependencies.
Definition: AthCommonReentrantAlgorithm.cxx:89
InDet::DefectsEmulatorCondAlgBase::m_defectProbability
Gaudi::Property< std::vector< std::vector< double > > > m_defectProbability
Definition: DefectsEmulatorCondAlgBase.h:54
python.utils.AtlRunQueryDQUtils.p
p
Definition: AtlRunQueryDQUtils.py:209
AthCommonDataStore
Definition: AthCommonDataStore.h:52
ATH_MSG_ERROR
#define ATH_MSG_ERROR(x)
Definition: AthMsgStreamMacros.h:33
convertTimingResiduals.sum
sum
Definition: convertTimingResiduals.py:55
AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::outputHandles
virtual std::vector< Gaudi::DataHandle * > outputHandles() const override
Return this algorithm's output handles.
L1TopoRatesCalculator_submatrix_plotter.counts
counts
Definition: L1TopoRatesCalculator_submatrix_plotter.py:74
endmsg
#define endmsg
Definition: AnalysisConfig_Ntuple.cxx:63
EL::StatusCode
::StatusCode StatusCode
StatusCode definition for legacy code.
Definition: PhysicsAnalysis/D3PDTools/EventLoop/EventLoop/StatusCode.h:22
ATH_MSG_DEBUG
#define ATH_MSG_DEBUG(x)
Definition: AthMsgStreamMacros.h:29
AthCommonDataStore::declareProperty
Gaudi::Details::PropertyBase & declareProperty(Gaudi::Property< T, V, H > &t)
Definition: AthCommonDataStore.h:145
InDet::DefectsEmulatorCondAlgBase::kCornerDefects
@ kCornerDefects
Definition: DefectsEmulatorCondAlgBase.h:102
InDet::DefectsEmulatorCondAlgBase::kNCornerDefectParams
@ kNCornerDefectParams
Definition: DefectsEmulatorCondAlgBase.h:120
AthCommonReentrantAlgorithm::sysExecute
virtual StatusCode sysExecute(const EventContext &ctx) override
Execute an algorithm.
Definition: AthCommonReentrantAlgorithm.cxx:76
covarianceTool.title
title
Definition: covarianceTool.py:542
InDet::DefectsEmulatorCondAlgBase::kCornerDefectkSagitta
@ kCornerDefectkSagitta
Definition: DefectsEmulatorCondAlgBase.h:119
mc.group_name
group_name
Definition: mc.PhPy8EG_A14NNPDF23_NNLOPS_example.py:33
ATH_CHECK
#define ATH_CHECK
Definition: AthCheckMacros.h:40
InDet::DefectsEmulatorCondAlgBase::initializeProbabilities
StatusCode initializeProbabilities(unsigned int n_masks)
Definition: DefectsEmulatorCondAlgBase.cxx:373
InDet::ModuleIdentifierMatchUtil::verifyModulePatternList
bool verifyModulePatternList(const std::vector< std::vector< int > > &arr)
Verify whether a list of module identifier patterns is consistent.
Definition: ModuleIdentifierMatchUtil.h:99
InDet::DefectsEmulatorCondAlgBase::kNDefects
@ kNDefects
Definition: DefectsEmulatorCondAlgBase.h:161
hist_file_dump.f
f
Definition: hist_file_dump.py:140
AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::m_detStore
StoreGateSvc_t m_detStore
Pointer to StoreGate (detector store by default)
Definition: AthCommonDataStore.h:393
InDet::DefectsEmulatorCondAlgBase::kCornerDefectkWidthRowDirectionOffset
@ kCornerDefectkWidthRowDirectionOffset
Definition: DefectsEmulatorCondAlgBase.h:116
InDet::DefectsEmulatorCondAlgBase::m_modulePattern
Gaudi::Property< std::vector< std::vector< int > > > m_modulePattern
Definition: DefectsEmulatorCondAlgBase.h:50
InDet::DefectsEmulatorCondAlgBase::kCornerDefectWidthColumnDirection
@ kCornerDefectWidthColumnDirection
Definition: DefectsEmulatorCondAlgBase.h:115
InDet::DefectsEmulatorCondAlgBase::m_cornerDefectNCornerFractionsPerPattern
Gaudi::Property< std::vector< std::vector< double > > > m_cornerDefectNCornerFractionsPerPattern
Definition: DefectsEmulatorCondAlgBase.h:65
SG::VarHandleKeyArray::renounce
virtual void renounce()=0
SG::HandleClassifier::type
std::conditional< std::is_base_of< SG::VarHandleKeyArray, T >::value, VarHandleKeyArrayType, type2 >::type type
Definition: HandleClassifier.h:54
InDet::DefectsEmulatorCondAlgBase::kNMaxRtriesExceeded
@ kNMaxRtriesExceeded
Definition: DefectsEmulatorCondAlgBase.h:163
InDet::DefectsEmulatorCondAlgBase::kMatrixTypeId
@ kMatrixTypeId
Definition: DefectsEmulatorCondAlgBase.h:245
merge_scale_histograms.doc
string doc
Definition: merge_scale_histograms.py:9
InDet::DefectsEmulatorCondAlgBase::kCornerDefectProb
@ kCornerDefectProb
Definition: DefectsEmulatorCondAlgBase.h:113
name
std::string name
Definition: Control/AthContainers/Root/debug.cxx:240
InDet::DefectsEmulatorCondAlgBase::m_inputFiles
Gaudi::Property< std::vector< std::string > > m_inputFiles
Definition: DefectsEmulatorCondAlgBase.h:96
InDet::DefectsEmulatorCondAlgBase::m_fillHistogramsPerPattern
Gaudi::Property< bool > m_fillHistogramsPerPattern
Definition: DefectsEmulatorCondAlgBase.h:89
InDet::ConnectedModulesUtil::createModuleConnectionMap
std::unordered_multimap< unsigned int, unsigned int > createModuleConnectionMap(const T_ID &id_helper, const InDetDD::SiDetectorElementCollection &det_ele_coll)
create a map between detector elements and all such elements connected the same sensor
Definition: ConnectedModulesUtil.h:28
InDet::DefectsEmulatorCondAlgBase::kNProb
@ kNProb
Definition: DefectsEmulatorCondAlgBase.h:109
python.LumiBlobConversion.pos
pos
Definition: LumiBlobConversion.py:16
InDet::DefectsEmulatorCondAlgBase::kNPosHists
@ kNPosHists
Definition: DefectsEmulatorCondAlgBase.h:239
runIDAlign.accumulate
accumulate
Update flags based on parser line args.
Definition: runIDAlign.py:107
InDet::DefectsEmulatorCondAlgBase::checkProbabilities
StatusCode checkProbabilities(unsigned int n_probabilities) const
Consistency check of module patterns, probabilities.
Definition: DefectsEmulatorCondAlgBase.cxx:188
InDet::DefectsEmulatorCondAlgBase::kNPerModuleHistTypes
@ kNPerModuleHistTypes
Definition: DefectsEmulatorCondAlgBase.h:248
a
TList * a
Definition: liststreamerinfos.cxx:10
columnar::empty
bool empty() const noexcept
Definition: ObjectRange.h:163
h
ATH_MSG_WARNING
#define ATH_MSG_WARNING(x)
Definition: AthMsgStreamMacros.h:32
python.Constants.INFO
int INFO
Definition: Control/AthenaCommon/python/Constants.py:15
InDet::DefectsEmulatorCondAlgBase::kCornerDefectkWidthRowDirection
@ kCornerDefectkWidthRowDirection
Definition: DefectsEmulatorCondAlgBase.h:117
InDet::DefectsEmulatorCondAlgBase::kCornerDefectWidthColumnDirectionOffset
@ kCornerDefectWidthColumnDirectionOffset
Definition: DefectsEmulatorCondAlgBase.h:114
InDet::DefectsEmulatorCondAlgBase::kModuleDefects
@ kModuleDefects
Definition: DefectsEmulatorCondAlgBase.h:101
InDet::DefectsEmulatorCondAlgBase::m_histogrammingEnabled
bool m_histogrammingEnabled
Definition: DefectsEmulatorCondAlgBase.h:253
InDet::DefectsEmulatorCondAlgBase::kModulesWithDefectsPos
@ kModulesWithDefectsPos
Definition: DefectsEmulatorCondAlgBase.h:238
AthCommonMsg< Gaudi::Algorithm >::msg
MsgStream & msg() const
Definition: AthCommonMsg.h:24
InDet::DefectsEmulatorCondAlgBase::kNModulesWithDefects
@ kNModulesWithDefects
Definition: DefectsEmulatorCondAlgBase.h:164
InDet::DefectsEmulatorCondAlgBase::m_rngName
std::vector< std::string > m_rngName
Definition: DefectsEmulatorCondAlgBase.h:98
HistUtil::ProtectHistogramCreation
Definition: HistUtil.h:14
SG::VarHandleBase::vhKey
SG::VarHandleKey & vhKey()
Return a non-const reference to the HandleKey.
Definition: StoreGate/src/VarHandleBase.cxx:629
InDet::DefectsEmulatorCondAlgBase::kCornerDefectkSagittaOffset
@ kCornerDefectkSagittaOffset
Definition: DefectsEmulatorCondAlgBase.h:118
InDet::DefectsEmulatorCondAlgBase::m_maxNGroupDefects
std::vector< unsigned int > m_maxNGroupDefects
Definition: DefectsEmulatorCondAlgBase.h:226
InDet::DefectsEmulatorCondAlgBase::kNRetries
@ kNRetries
Definition: DefectsEmulatorCondAlgBase.h:162
AthCommonReentrantAlgorithm< Gaudi::Algorithm >::sysInitialize
virtual StatusCode sysInitialize() override
Override sysInitialize.
Definition: AthCommonReentrantAlgorithm.cxx:107
python.Bindings.keys
keys
Definition: Control/AthenaPython/python/Bindings.py:801
InDet::DefectsEmulatorCondAlgBase::m_modulesWithoutDefectParameters
std::atomic< unsigned int > m_modulesWithoutDefectParameters
Definition: DefectsEmulatorCondAlgBase.h:251
python.TrigEgammaMonitorHelper.TH1F
def TH1F(name, title, nxbins, bins_par2, bins_par3=None, path='', **kwargs)
Definition: TrigEgammaMonitorHelper.py:24
LHEF::Writer
Pythia8::Writer Writer
Definition: Prophecy4fMerger.cxx:12
InDet::DefectsEmulatorCondAlgBase::kDefectCell
@ kDefectCell
Definition: DefectsEmulatorCondAlgBase.h:247
AthCommonReentrantAlgorithm< Gaudi::Algorithm >::m_extendedExtraObjects
DataObjIDColl m_extendedExtraObjects
Extra output dependency collection, extended by AthAlgorithmDHUpdate to add symlinks.
Definition: AthCommonReentrantAlgorithm.h:114
InDet::DefectsEmulatorCondAlgBase::kCellDefectProb
@ kCellDefectProb
Definition: DefectsEmulatorCondAlgBase.h:108
InDet::DefectsEmulatorCondAlgBase::m_cornerDefectParamsPerPattern
Gaudi::Property< std::vector< std::vector< double > > > m_cornerDefectParamsPerPattern
Definition: DefectsEmulatorCondAlgBase.h:61
InDet::DefectsEmulatorCondAlgBase::m_groupDefectHistNames
std::vector< std::string > m_groupDefectHistNames
Definition: DefectsEmulatorCondAlgBase.h:225
fitman.k
k
Definition: fitman.py:528
ServiceHandle< ICondSvc >
InDet::DefectsEmulatorCondAlgBase::kDefectModule
@ kDefectModule
Definition: DefectsEmulatorCondAlgBase.h:246
mapkey::key
key
Definition: TElectronEfficiencyCorrectionTool.cxx:37
HistUtil::StringCat::str
const std::string & str() const
Definition: HistUtil.h:47