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

#include <PixelAthErrorMonAlg.h>

Inheritance diagram for PixelAthErrorMonAlg:
Collaboration diagram for PixelAthErrorMonAlg:

Public Types

enum class  Environment_t {
  user = 0 , online , tier0 , tier0Raw ,
  tier0ESD , AOD , altprod
}
 Specifies the processing environment. More...
enum class  DataType_t {
  userDefined = 0 , monteCarlo , collisions , cosmics ,
  heavyIonCollisions
}
 Specifies what type of input data is being monitored. More...

Public Member Functions

 PixelAthErrorMonAlg (const std::string &name, ISvcLocator *pSvcLocator)
virtual ~PixelAthErrorMonAlg ()
virtual StatusCode initialize () override
 initialize
virtual StatusCode fillHistograms (const EventContext &ctx) const override
 adds event to the monitoring histograms
std::string findComponentString (int bec, int ld) const
int getErrorCategory (int error_cat_rodmod) const
std::bitset< kNumErrorStatesFEI3getErrorStateFEI3Mod (uint64_t errorword) const
std::bitset< kNumErrorStatesFEI3getErrorStateFE (uint64_t errorword, bool isibl) const
void fillErrorCatRODmod (uint64_t mod_errorword, int(&nerrors_cat_rodmod)[ErrorCategoryRODMOD::COUNT][nFEIBL2D]) const
void fillErrorCatRODmod (uint64_t fe_errorword, bool is_fei4, int(&nerrors_cat_rodmod)[ErrorCategoryRODMOD::COUNT][nFEIBL2D], int ife) const
void fillErrorCatRODmod (int servicecode, int payload, int(&nerrors_cat_rodmod)[ErrorCategoryRODMOD::COUNT][nFEIBL2D], int ife) const
bool isPerFEI3State (const std::string &state) const
void fill1DProfLumiLayers (const std::string &prof1Dname, int lb, float *weights, int nlayers=PixLayers::COUNT) const
 filling 1DProf per-lumi per-layer histograms ["ECA","ECC","BLayer","Layer1","Layer2","IBL","IBL2D","IBL3D"]
void fill2DProfLumiLayers (const std::string &prof2Dname, int lb, float(*weights)[PixLayers::COUNT], const int *nCategories) const
 filling 2DProf per-lumi per-layer histograms ["ECA","ECC","BLayer","Layer1","Layer2","IBL2D","IBL3D"]
int getPixLayersID (int ec, int ld) const
 helper function to get layers ID
bool isIBL2D (int hashID) const
 helper function to check if module is IBL planar based on pixel hash ID
bool isIBL3D (int hashID) const
 helper function to check if module is IBL 3D based on pixel hash ID
int getNumberOfFEs (int pixlayer, int etaMod) const
 helper function to get number of FEs per module
void getPhiEtaMod (Identifier &id, int &phiMod, int &etaMod, bool &copyFE) const
 helper function to get eta phi coordinates of per-layer arrays
bool isHitOnTrack (Identifier id, std::vector< Identifier > const &RDOIDs) const
 checks if hit is on track
bool isClusterOnTrack (Identifier id, std::vector< std::pair< Identifier, double > > const &ClusterIDs) const
 checks if cluster is on track
bool isClusterOnTrack (Identifier id, std::vector< std::pair< Identifier, double > > const &ClusterIDs, double &cosalpha) const
 checks if cluster is on track and returns its cosalpha
void fill2DProfLayerAccum (const VecAccumulator2DMap &accumulator) const
 take VecAccumulator2DMap and fill the corresponding group
void fill1DModProfAccum (const VecAccumulator2DMap &accumulator, int lumiblock) const
 take VecAccumulator2DMap and fill 3D arrays [layer, pm, em] with its values and lumiblock
void fillFromArrays (const std::string &namePP0, AccumulatorArrays &pixarrays, const std::string &name2DMap="") const
 filling 1DProfile per-pp0(ROD) histograms for ["ECA","ECC","BLayer","Layer1","Layer2","IBLA","IBLC"]
virtual StatusCode execute (const EventContext &ctx) const override
 Applies filters and trigger requirements.
void fill (const ToolHandle< GenericMonitoringTool > &groupHandle, std::vector< std::reference_wrapper< Monitored::IMonitoredVariable > > &&variables) const
 Fills a vector of variables to a group by reference.
void fill (const ToolHandle< GenericMonitoringTool > &groupHandle, const std::vector< std::reference_wrapper< Monitored::IMonitoredVariable > > &variables) const
 Fills a vector of variables to a group by reference.
template<typename... T>
void fill (const ToolHandle< GenericMonitoringTool > &groupHandle, T &&... variables) const
 Fills a variadic list of variables to a group by reference.
void fill (const std::string &groupName, std::vector< std::reference_wrapper< Monitored::IMonitoredVariable > > &&variables) const
 Fills a vector of variables to a group by name.
void fill (const std::string &groupName, const std::vector< std::reference_wrapper< Monitored::IMonitoredVariable > > &variables) const
 Fills a vector of variables to a group by name.
template<typename... T>
void fill (const std::string &groupName, T &&... variables) const
 Fills a variadic list of variables to a group by name.
Environment_t environment () const
 Accessor functions for the environment.
Environment_t envStringToEnum (const std::string &str) const
 Convert the environment string from the python configuration to an enum object.
DataType_t dataType () const
 Accessor functions for the data type.
DataType_t dataTypeStringToEnum (const std::string &str) const
 Convert the data type string from the python configuration to an enum object.
const ToolHandle< GenericMonitoringTool > & getGroup (const std::string &name) const
 Get a specific monitoring tool from the tool handle array.
const ToolHandle< Trig::TrigDecisionTool > & getTrigDecisionTool () const
 Get the trigger decision tool member.
bool trigChainsArePassed (const std::vector< std::string > &vTrigNames) const
 Check whether triggers are passed.
SG::ReadHandle< xAOD::EventInfoGetEventInfo (const EventContext &) const
 Return a ReadHandle for an EventInfo object (get run/event numbers, etc.)
virtual float lbAverageInteractionsPerCrossing (const EventContext &ctx=Gaudi::Hive::currentContext()) const
 Calculate the average mu, i.e.
virtual float lbInteractionsPerCrossing (const EventContext &ctx=Gaudi::Hive::currentContext()) const
 Calculate instantaneous number of interactions, i.e.
virtual float lbAverageLuminosity (const EventContext &ctx=Gaudi::Hive::currentContext()) const
 Calculate average luminosity (in ub-1 s-1 => 10^30 cm-2 s-1).
virtual float lbLuminosityPerBCID (const EventContext &ctx=Gaudi::Hive::currentContext()) const
 Calculate the instantaneous luminosity per bunch crossing.
virtual double lbDuration (const EventContext &ctx=Gaudi::Hive::currentContext()) const
 Calculate the duration of the luminosity block (in seconds)
virtual float lbAverageLivefraction (const EventContext &ctx=Gaudi::Hive::currentContext()) const
 Calculate the average luminosity livefraction.
virtual float livefractionPerBCID (const EventContext &ctx=Gaudi::Hive::currentContext()) const
 Calculate the live fraction per bunch crossing ID.
virtual double lbLumiWeight (const EventContext &ctx=Gaudi::Hive::currentContext()) const
 Calculate the average integrated luminosity multiplied by the live fraction.
virtual StatusCode parseList (const std::string &line, std::vector< std::string > &result) const
 Parse a string into a vector.
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

Public Attributes

str runtext = ''
int NumLayersDisk = 3
int NumStavesIBL = 14
int NumStavesL0 = 22
int NumStavesL1 = 38
int NumStavesL2 = 52
int NumModulesBarrel = 13
int NumModulesDisk = 48
int NumPP0sEC = 24
str btxt = ";eta index of module"
str sbtxt = ";shifted eta index of module"
str ditxt = ";disk number"
list layers = ["ECA","ECC","BLayer","Layer1","Layer2","IBL2D","IBL3D"]
list baselayers = ["ECA","ECC","BLayer","Layer1","Layer2","IBL"]
list xbinsl = [ 3, 3, 13, 13, 13, 32]
list xminsl = [ -0.5, -0.5,-6.5,-6.5,-6.5,-16.5]
list ybinsl = [ 48, 48, 22, 38, 52, 14]
list etatxt = [ditxt,ditxt,btxt,btxt,btxt,sbtxt]
str phitext = ";phi index of module"
list xbinsfel = [ 24, 24, 104, 104, 104, 32]
list xminsfel = [ -0.5, -0.5, -52, -52, -52,-16.5]
list ybinsfel = [ 96, 96, 44, 76, 104, 14]
list totcuts = [ 15, 15, 15, 15, 15, 4, 4]
list xbinsem = [ 3, 3, 13, 13, 13, 20]
list xminsem = [ 0.5, 0.5,-6.5,-6.5,-6.5, -10]
list xbinstotz = [ 3, 3, 13, 13, 13, 20]
list xminstotz = [ -0.5, -0.5,-0.5,-0.5,-0.5, -0.5]
list ztotbinsy = [ 20, 20, 20, 20, 20, 20, 20]
list ztotminsy = [ 19.5, 19.5, 7.5,19.5,19.5, -0.5, -0.5]
list errbbinsy = [ 17, 17, 17, 17, 17, 27, 27]
list errbminsy = [ 0, 0, 0, 0, 0, 0, 0]
list errbbsizy = [ 1, 1, 1, 1, 1, 1, 1]
list errtbinsy = [ 7, 7, 7, 7, 7, 7, 7]
list pp0layers = ["ECA","ECC","BLayer","Layer1","Layer2","IBLA","IBLC"]
list pp0xbins = [ 24, 24, 22, 38, 52, 14, 14]
list fei3layers = ["ECA","ECC","BLayer","Layer1","Layer2"]
list fei4layers = ["IBL2D","IBL3D"]
str lumitext = ";lumi block"
int lumibinsx = 3000
int bcidbinsx = 3600
list LayersDisk = ["Disk 1", "Disk 2", "Disk 3"]
list ModulesBarrel
list ModulesIBL
list LabelX = [LayersDisk, LayersDisk, ModulesBarrel, ModulesBarrel, ModulesBarrel, ModulesIBL]
list LayersDiskFE
list ModulesBarrelFE
list LabelFEX = [LayersDiskFE, LayersDiskFE, ModulesBarrelFE, ModulesBarrelFE, ModulesBarrelFE, ModulesIBL]
list ModulesECA
list ModulesECC
list StavesL00
list StavesL0
list StavesL1
list StavesL2
list StavesIBL
list LabelY = [ModulesECA, ModulesECC, StavesL0, StavesL1, StavesL2, StavesIBL]
list ModulesFEECA = []
list ModulesFEECC = []
list StavesFEL0 = []
list StavesFEL1 = []
list StavesFEL2 = []
list LabelFEY = [ModulesFEECA, ModulesFEECC, StavesFEL0, StavesFEL1, StavesFEL2, StavesIBL]
list PP0sEC
list PP0LabelX = [PP0sEC, PP0sEC, StavesL0, StavesL1, StavesL2, StavesIBL, StavesIBL]
list ModulesHead = ["D", "D", "L0", "L1", "L2", "LI"]
list ErrStateLabelsFEI3
list ErrStateLabelsFEI4
list ErrCatRODModLabels
list ErrCatRODModLabelsNorm
list ErrCatLabels
list ErrCatLabelsNorm
list ReadingDataErrLabels
dict layergroups = {}

Protected Member Functions

SG::ReadHandle< InDet::SiDetectorElementStatusgetPixelDetElStatus (const SG::ReadHandleKey< InDet::SiDetectorElementStatus > &key, const EventContext &ctx) const
bool isActive (const InDet::SiDetectorElementStatus *element_status, const IdentifierHash &module_hash) const
bool isGood (const InDet::SiDetectorElementStatus *element_status, const IdentifierHash &module_hash) const
std::tuple< bool, bool > isChipGood (const IdentifierHash &module_hash, unsigned int chip_i) const
std::tuple< bool, bool > isChipGood (const InDet::SiDetectorElementStatus &element_active, const InDet::SiDetectorElementStatus &element_status, const IdentifierHash &module_hash, unsigned int chip_i) const
std::tuple< bool, bool > isChipGood (const InDet::SiDetectorElementStatus *element_active, const InDet::SiDetectorElementStatus *element_status, const IdentifierHash &module_hash, unsigned int chip_i) const
bool isChipActive (const IdentifierHash &module_hash, unsigned int chip_i) const
bool isChipActive (const InDet::SiDetectorElementStatus *element_active, const IdentifierHash &module_hash, unsigned int chip_i) 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.

Protected Attributes

ToolHandle< IInDetConditionsToolm_pixelCondSummaryTool
ServiceHandle< InDetDD::IPixelReadoutManagerm_pixelReadout
const PixelIDm_pixelid {}
std::vector< int > m_modData [PixLayers::NBASELAYERS]
SG::ReadHandleKey< InDet::SiDetectorElementStatusm_pixelDetElStatus {this, "PixelDetElStatus", "", "Key of SiDetectorElementStatus for Pixel"}
 Optional read handle to get status data to test whether a pixel detector element is good.
SG::ReadHandleKey< InDet::SiDetectorElementStatusm_pixelDetElStatusActiveOnly {this, "PixelDetElStatusActiveOnly", "", "Key of SiDetectorElementStatus for Pixel which reflects only whether modules or chips are active rather than delivering good data"}
 Optional read handle to get status data to test whether a pixel detector element is active.
ToolHandleArray< GenericMonitoringToolm_tools {this,"GMTools",{}}
 Array of Generic Monitoring Tools.
PublicToolHandle< Trig::TrigDecisionToolm_trigDecTool
 Tool to tell whether a specific trigger is passed.
ToolHandleArray< IDQFilterToolm_DQFilterTools {this,"FilterTools",{}}
 Array of Data Quality filter tools.
SG::ReadCondHandleKey< LuminosityCondDatam_lumiDataKey {this,"LuminosityCondDataKey","LuminosityCondData","SG Key of LuminosityCondData object"}
SG::ReadCondHandleKey< LBDurationCondDatam_lbDurationDataKey {this,"LBDurationCondDataKey","LBDurationCondData","SG Key of LBDurationCondData object"}
SG::ReadCondHandleKey< TrigLiveFractionCondDatam_trigLiveFractionDataKey {this,"TrigLiveFractionCondDataKey","TrigLiveFractionCondData", "SG Key of TrigLiveFractionCondData object"}
AthMonitorAlgorithm::Environment_t m_environment
 Instance of the Environment_t enum.
AthMonitorAlgorithm::DataType_t m_dataType
 Instance of the DataType_t enum.
Gaudi::Property< std::string > m_environmentStr {this,"Environment","user"}
 Environment string pulled from the job option and converted to enum.
Gaudi::Property< std::string > m_dataTypeStr {this,"DataType","userDefined"}
 DataType string pulled from the job option and converted to enum.
Gaudi::Property< std::string > m_triggerChainString {this,"TriggerChain",""}
 Trigger chain string pulled from the job option and parsed into a vector.
std::vector< std::string > m_vTrigChainNames
 Vector of trigger chain names parsed from trigger chain string.
Gaudi::Property< std::string > m_fileKey {this,"FileKey",""}
 Internal Athena name for file.
Gaudi::Property< bool > m_useLumi {this,"EnableLumi",false}
 Allows use of various luminosity functions.
Gaudi::Property< float > m_defaultLBDuration {this,"DefaultLBDuration",60.}
 Default duration of one lumi block.
Gaudi::Property< int > m_detailLevel {this,"DetailLevel",0}
 Sets the level of detail used in the monitoring.
SG::ReadHandleKey< xAOD::EventInfom_EventInfoKey {this,"EventInfoKey","EventInfo"}
 Key for retrieving EventInfo from StoreGate.

Private Attributes

SG::ReadHandleKey< IDCInDetBSErrContainerm_idcErrContKey {this, "PixelByteStreamErrs", "PixelByteStreamErrs", "PixelByteStreamErrs container key"}
Gaudi::Property< bool > m_useByteStreamFEI4 {this, "UseByteStreamFEI4", false, "Switch of the ByteStream error for FEI4"}
Gaudi::Property< bool > m_useByteStreamFEI3 {this, "UseByteStreamFEI3", false, "Switch of the ByteStream error for FEI3"}
Gaudi::Property< bool > m_useByteStreamRD53 {this, "UseByteStreamRD53", false, "Switch of the ByteStream error for RD53"}
unsigned int m_readoutTechnologyMask {}
bool m_doOnline {}
bool m_doLumiBlock {}
bool m_doLowOccupancy {}
bool m_doHighOccupancy {}
bool m_doHeavyIonMon {}

Detailed Description

Definition at line 141 of file PixelAthErrorMonAlg.h.

Member Enumeration Documentation

◆ DataType_t

enum class AthMonitorAlgorithm::DataType_t
stronginherited

Specifies what type of input data is being monitored.

An enumeration of the different types of data the monitoring application may be running over. This can be used to select which histograms to produce, e.g. to prevent the production of colliding-beam histograms when running on cosmic-ray data. Strings of the same names may be given as jobOptions.

Enumerator
userDefined 
monteCarlo 
collisions 
cosmics 
heavyIonCollisions 

Definition at line 194 of file AthMonitorAlgorithm.h.

194 {
195 userDefined = 0,
196 monteCarlo,
197 collisions,
198 cosmics,
199 heavyIonCollisions,
200 };
AthConfigFlags cosmics(AthConfigFlags flags, str instanceName, str recoMode)

◆ Environment_t

enum class AthMonitorAlgorithm::Environment_t
stronginherited

Specifies the processing environment.

The running environment may be used to select which histograms are produced, and where they are located in the output. For example, the output paths of the histograms are different for the "user", "online" and the various offline flags. Strings of the same names may be given as jobOptions.

Enumerator
user 
online 
tier0 
tier0Raw 
tier0ESD 
AOD 
altprod 

Definition at line 175 of file AthMonitorAlgorithm.h.

175 {
176 user = 0,
177 online,
178 tier0,
179 tier0Raw,
180 tier0ESD,
181 AOD,
182 altprod,
183 };

Constructor & Destructor Documentation

◆ PixelAthErrorMonAlg()

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

Definition at line 12 of file PixelAthErrorMonAlg.cxx.

12 :
13 AthMonitorAlgorithm(name, pSvcLocator)
14{
15 // jo flags
16 declareProperty("doOnline", m_doOnline = false);
17 declareProperty("doLumiBlock", m_doLumiBlock = false);
18 declareProperty("doLowOccupancy", m_doLowOccupancy = false);
19 declareProperty("doHighOccupancy", m_doHighOccupancy = false);
20 declareProperty("doHeavyIonMon", m_doHeavyIonMon = false);
21}
Gaudi::Details::PropertyBase & declareProperty(Gaudi::Property< T, V, H > &t)
AthMonitorAlgorithm(const std::string &name, ISvcLocator *pSvcLocator)
Constructor.

◆ ~PixelAthErrorMonAlg()

PixelAthErrorMonAlg::~PixelAthErrorMonAlg ( )
virtual

Definition at line 23 of file PixelAthErrorMonAlg.cxx.

23{}

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}

◆ dataType()

DataType_t AthMonitorAlgorithm::dataType ( ) const
inlineinherited

Accessor functions for the data type.

Returns
the current value of the class's DataType_t instance.

Definition at line 224 of file AthMonitorAlgorithm.h.

224{ return m_dataType; }
AthMonitorAlgorithm::DataType_t m_dataType
Instance of the DataType_t enum.

◆ dataTypeStringToEnum()

AthMonitorAlgorithm::DataType_t AthMonitorAlgorithm::dataTypeStringToEnum ( const std::string & str) const
inherited

Convert the data type string from the python configuration to an enum object.

Returns
a value in the DataType_t enumeration which matches the input string.

Definition at line 144 of file AthMonitorAlgorithm.cxx.

144 {
145 // convert the string to all lowercase
146 std::string lowerCaseStr = str;
147 std::transform(lowerCaseStr.begin(), lowerCaseStr.end(), lowerCaseStr.begin(), ::tolower);
148
149 // check if it matches one of the enum choices
150 if( lowerCaseStr == "userdefined" ) {
152 } else if( lowerCaseStr == "montecarlo" ) {
154 } else if( lowerCaseStr == "collisions" ) {
156 } else if( lowerCaseStr == "cosmics" ) {
157 return DataType_t::cosmics;
158 } else if( lowerCaseStr == "heavyioncollisions" ) {
160 } else { // otherwise, warn the user and return "userDefined"
161 ATH_MSG_WARNING("AthMonitorAlgorithm::dataTypeStringToEnum(): Unknown data type "
162 <<str<<", returning userDefined.");
164 }
165}
#define ATH_MSG_WARNING(x)
void tolower(std::string &s)

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

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

◆ environment()

Environment_t AthMonitorAlgorithm::environment ( ) const
inlineinherited

Accessor functions for the environment.

Returns
the current value of the class's Environment_t instance.

Definition at line 208 of file AthMonitorAlgorithm.h.

208{ return m_environment; }
AthMonitorAlgorithm::Environment_t m_environment
Instance of the Environment_t enum.

◆ envStringToEnum()

AthMonitorAlgorithm::Environment_t AthMonitorAlgorithm::envStringToEnum ( const std::string & str) const
inherited

Convert the environment string from the python configuration to an enum object.

Returns
a value in the Environment_t enumeration which matches the input string.

Definition at line 116 of file AthMonitorAlgorithm.cxx.

116 {
117 // convert the string to all lowercase
118 std::string lowerCaseStr = str;
119 std::transform(lowerCaseStr.begin(), lowerCaseStr.end(), lowerCaseStr.begin(), ::tolower);
120
121 // check if it matches one of the enum choices
122 if( lowerCaseStr == "user" ) {
123 return Environment_t::user;
124 } else if( lowerCaseStr == "online" ) {
126 } else if( lowerCaseStr == "tier0" ) {
128 } else if( lowerCaseStr == "tier0raw" ) {
130 } else if( lowerCaseStr == "tier0esd" ) {
132 } else if( lowerCaseStr == "aod" ) {
133 return Environment_t::AOD;
134 } else if( lowerCaseStr == "altprod" ) {
136 } else { // otherwise, warn the user and return "user"
137 ATH_MSG_WARNING("AthMonitorAlgorithm::envStringToEnum(): Unknown environment "
138 <<str<<", returning user.");
139 return Environment_t::user;
140 }
141}

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

◆ execute()

StatusCode AthMonitorAlgorithm::execute ( const EventContext & ctx) const
overridevirtualinherited

Applies filters and trigger requirements.

Then, calls fillHistograms().

Parameters
ctxevent context for reentrant Athena call
Returns
StatusCode

Definition at line 77 of file AthMonitorAlgorithm.cxx.

77 {
78
79 // Checks that all of the DQ filters are passed. If any one of the filters
80 // fails, return SUCCESS code and do not fill the histograms with the event.
81 for ( const auto& filterItr : m_DQFilterTools ) {
82 if (!filterItr->accept()) {
83 ATH_MSG_DEBUG("Event rejected due to filter tool.");
84 return StatusCode::SUCCESS;
85 }
86 }
87
88 // Trigger: If there is a decision tool and the chains fail, skip the event.
90 ATH_MSG_DEBUG("Event rejected due to trigger filter.");
91 return StatusCode::SUCCESS;
92 }
93
94 ATH_MSG_DEBUG("Event accepted!");
95 return fillHistograms(ctx);
96}
#define ATH_MSG_DEBUG(x)
virtual StatusCode fillHistograms(const EventContext &ctx) const =0
adds event to the monitoring histograms
bool trigChainsArePassed(const std::vector< std::string > &vTrigNames) const
Check whether triggers are passed.
std::vector< std::string > m_vTrigChainNames
Vector of trigger chain names parsed from trigger chain string.
PublicToolHandle< Trig::TrigDecisionTool > m_trigDecTool
Tool to tell whether a specific trigger is passed.
ToolHandleArray< IDQFilterTool > m_DQFilterTools
Array of Data Quality filter tools.

◆ 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}
An algorithm that can be simultaneously executed in multiple threads.

◆ fill1DModProfAccum()

void PixelAthMonitoringBase::fill1DModProfAccum ( const VecAccumulator2DMap & accumulator,
int lumiblock ) const
inherited

take VecAccumulator2DMap and fill 3D arrays [layer, pm, em] with its values and lumiblock

Definition at line 135 of file PixelAthMonitoringBase.cxx.

135 {
136 auto lb = Monitored::Scalar<int>("pixmvamontool_lb", lumiblock);
137 const int em_offsets[PixLayers::NBASELAYERS] = { 0, 0, 6, 6, 6, 16};
138 // iterate over all actually filled layers
139 //
140 for (const auto& itr : accumulator.m_pm) {
141 int layer = itr.first;
142 auto pm_v = accumulator.m_pm.at(layer);
143 auto em_v = accumulator.m_em.at(layer);
144 auto val_v = accumulator.m_val.at(layer);
145 auto pi = pm_v.begin();
146 auto ei = em_v.begin();
147 auto vi = val_v.begin();
148 while (pi!=pm_v.end() and ei!=em_v.end() and vi!=val_v.end() )
149 {
150 auto pm = *pi++;
151 auto em = em_offsets[layer] + *ei++;
152 pm += em*PixMon::pixPhiSteps[layer];
153 auto val = Monitored::Scalar<float>(accumulator.m_prof2Dname + "_val", *vi++);
154 fill( m_tools[m_modData[layer].at(pm)], lb, val);
155 }
156 }
157}
#define pi
Declare a monitored scalar variable.
int lb
Definition globals.cxx:23
const int pixPhiSteps[PixLayers::NBASELAYERS]
void fill(H5::Group &out_file, size_t iterations)

◆ fill1DProfLumiLayers()

void PixelAthMonitoringBase::fill1DProfLumiLayers ( const std::string & prof1Dname,
int lb,
float * weights,
int nlayers = PixLayers::COUNT ) const
inherited

filling 1DProf per-lumi per-layer histograms ["ECA","ECC","BLayer","Layer1","Layer2","IBL","IBL2D","IBL3D"]

Definition at line 163 of file PixelAthMonitoringBase.cxx.

164 {
165 ATH_MSG_VERBOSE("in fill1DProfLumiLayers()");
166
167 // Define the monitored variables
168 auto lb = Monitored::Scalar<int>(prof1Dname + "_lb", lumiblock);
169 auto val = Monitored::Scalar<float>(prof1Dname + "_val", 1.0);
170
171 int i_start = 0;
172 int i_end = PixLayers::COUNT;
173 if (nlayers == PixLayers::NFEI3LAYERS) i_end = nlayers;
175 for (int i = i_start; i < i_end; i++) {
176 val = values[i];
177 fill(pixLayersLabel[i], lb, val);
178 }
179}
#define ATH_MSG_VERBOSE(x)
const std::string pixLayersLabel[PixLayers::COUNT]

◆ fill2DProfLayerAccum()

void PixelAthMonitoringBase::fill2DProfLayerAccum ( const VecAccumulator2DMap & accumulator) const
inherited

take VecAccumulator2DMap and fill the corresponding group

Definition at line 119 of file PixelAthMonitoringBase.cxx.

119 {
120 // iterate over all actually filled layers
121 for (const auto& itr : accumulator.m_pm) {
122 // Define the monitored variables
123 int layer = itr.first;
124 auto pm = Monitored::Collection(accumulator.m_prof2Dname + "_pm", accumulator.m_pm.at(layer));
125 auto val = Monitored::Collection(accumulator.m_prof2Dname + "_val", accumulator.m_val.at(layer));
126 auto em = Monitored::Collection(accumulator.m_prof2Dname + "_em", accumulator.m_em.at(layer));
127 fill(pixBaseLayersLabel[layer], pm, em, val);
128 }
129}
const std::string pixBaseLayersLabel[PixLayers::NBASELAYERS]
ValuesCollection< T > Collection(std::string name, const T &collection)
Declare a monitored (double-convertible) collection.

◆ fill2DProfLumiLayers()

void PixelAthMonitoringBase::fill2DProfLumiLayers ( const std::string & prof2Dname,
int lb,
float(*) weights[PixLayers::COUNT],
const int * nCategories ) const
inherited

filling 2DProf per-lumi per-layer histograms ["ECA","ECC","BLayer","Layer1","Layer2","IBL2D","IBL3D"]

Definition at line 186 of file PixelAthMonitoringBase.cxx.

187 {
188 ATH_MSG_VERBOSE("in fill2DProfLumiLayers()");
189
190 // Define the monitored variables
191 auto lb = Monitored::Scalar<int>(prof2Dname + "_lb", lumiblock);
192 auto val = Monitored::Scalar<float>(prof2Dname + "_val", 1.0);
193 auto cat = Monitored::Scalar<int>(prof2Dname + "_cat");
194
195 for (int i = 0; i < PixLayers::COUNT; i++) {
196 for (cat = 0; cat < nCategories[i]; cat++) {
197 val = values[cat][i];
198 fill(pixLayersLabel[i], lb, cat, val);
199 }
200 }
201}

◆ fillErrorCatRODmod() [1/3]

void PixelAthErrorMonAlg::fillErrorCatRODmod ( int servicecode,
int payload,
int(&) nerrors_cat_rodmod[ErrorCategoryRODMOD::COUNT][nFEIBL2D],
int ife ) const

Definition at line 501 of file PixelAthErrorMonAlg.cxx.

503 {
504 if (sc == 0) nerrors_cat_rodmod[0][ife] += payload;// synchronization error (SR0:BCID counter)
505 if (sc == 16) nerrors_cat_rodmod[2][ife] += payload;// truncation error (SR16:Truncated event)
506 if (sc == 1 || sc == 2 || // (SR1:Hamming code 0, SR2:Hamming code 1,
507 sc == 3 || sc == 24 || // SR3:Hamming code 2, SR24:Triple redundant CNFGMEM,
508 sc == 28 || sc == 29 || // SR28:Bit flip in CMD, SR29:Triple redundant CMD,
509 sc == 31) // SR31:Triple redundant EFUSE)
510 nerrors_cat_rodmod[5][ife] += payload;// SEU error
511}
static Double_t sc

◆ fillErrorCatRODmod() [2/3]

void PixelAthErrorMonAlg::fillErrorCatRODmod ( uint64_t fe_errorword,
bool is_fei4,
int(&) nerrors_cat_rodmod[ErrorCategoryRODMOD::COUNT][nFEIBL2D],
int ife ) const

Definition at line 475 of file PixelAthErrorMonAlg.cxx.

477 {
478 if (!is_fei4) {
479 if (PixelByteStreamErrors::hasError(errorword,
480 PixelByteStreamErrors::MCCLVL1IDEoECheck)) nerrors_cat_rodmod[0][0]++;// module synchronization
481 if (PixelByteStreamErrors::hasError(errorword, PixelByteStreamErrors::MCCBCIDEoECheck)) nerrors_cat_rodmod[0][0]++; // ---
482 if (PixelByteStreamErrors::hasError(errorword, PixelByteStreamErrors::MCCLVL1IDCheck)) nerrors_cat_rodmod[0][0]++; // ---
483 if (PixelByteStreamErrors::hasError(errorword, PixelByteStreamErrors::MCCEoEOverflow)) nerrors_cat_rodmod[2][0]++;// module truncation
484 if (PixelByteStreamErrors::hasError(errorword, PixelByteStreamErrors::MCCHitOverflow)) nerrors_cat_rodmod[2][0]++; // ---
485 if (PixelByteStreamErrors::hasError(errorword, PixelByteStreamErrors::FEEoCOverflow)) nerrors_cat_rodmod[2][0]++;// ---
486 if (PixelByteStreamErrors::hasError(errorword, PixelByteStreamErrors::FEHitParity)) nerrors_cat_rodmod[5][0]++;// SEU (single event upset)
487 if (PixelByteStreamErrors::hasError(errorword, PixelByteStreamErrors::FERegisterParity)) nerrors_cat_rodmod[5][0]++;
488 // ---
489 if (PixelByteStreamErrors::hasError(errorword, PixelByteStreamErrors::FEHammingCode)) nerrors_cat_rodmod[5][0]++;// ---
490 } else {
491 if (PixelByteStreamErrors::hasError(errorword, PixelByteStreamErrors::TimeOut)) nerrors_cat_rodmod[6][ife]++;// timeout errors
492 if (PixelByteStreamErrors::hasError(errorword, PixelByteStreamErrors::BCID)) nerrors_cat_rodmod[1][ife]++;// ROD synchronization
493 if (PixelByteStreamErrors::hasError(errorword, PixelByteStreamErrors::LVL1ID)) nerrors_cat_rodmod[1][ife]++;// ROD synchronization
494 if (PixelByteStreamErrors::hasError(errorword, PixelByteStreamErrors::Preamble)) nerrors_cat_rodmod[4][ife]++;// optical errors
495 if (PixelByteStreamErrors::hasError(errorword, PixelByteStreamErrors::Trailer)) nerrors_cat_rodmod[6][ife]++;// timeout errors
496 if (PixelByteStreamErrors::hasError(errorword, PixelByteStreamErrors::Invalid)) nerrors_cat_rodmod[3][ife]++;// ROD truncation
497 if (PixelByteStreamErrors::hasError(errorword, PixelByteStreamErrors::Limit)) nerrors_cat_rodmod[3][ife]++;// ROD truncation
498 }
499}

◆ fillErrorCatRODmod() [3/3]

void PixelAthErrorMonAlg::fillErrorCatRODmod ( uint64_t mod_errorword,
int(&) nerrors_cat_rodmod[ErrorCategoryRODMOD::COUNT][nFEIBL2D] ) const

Definition at line 465 of file PixelAthErrorMonAlg.cxx.

466 {
467 if (PixelByteStreamErrors::hasError(errorword, PixelByteStreamErrors::TimeOut)) nerrors_cat_rodmod[6][0]++;// timeout errors
468 if (PixelByteStreamErrors::hasError(errorword, PixelByteStreamErrors::BCID)) nerrors_cat_rodmod[1][0]++;// ROD synchronization
469 if (PixelByteStreamErrors::hasError(errorword, PixelByteStreamErrors::LVL1ID)) nerrors_cat_rodmod[1][0]++;// ROD synchronization
470 if (PixelByteStreamErrors::hasError(errorword, PixelByteStreamErrors::Preamble)) nerrors_cat_rodmod[4][0]++;// optical errors
471 if (PixelByteStreamErrors::hasError(errorword, PixelByteStreamErrors::RODHeaderLimit)) nerrors_cat_rodmod[3][0]++;// ROD truncation
472 if (PixelByteStreamErrors::hasError(errorword, PixelByteStreamErrors::RODDataOVerflow)) nerrors_cat_rodmod[3][0]++;// ROD truncation
473}

◆ fillFromArrays()

void PixelAthMonitoringBase::fillFromArrays ( const std::string & namePP0,
AccumulatorArrays & pixarrays,
const std::string & name2DMap = "" ) const
inherited

filling 1DProfile per-pp0(ROD) histograms for ["ECA","ECC","BLayer","Layer1","Layer2","IBLA","IBLC"]

Definition at line 209 of file PixelAthMonitoringBase.cxx.

210 {
211 ATH_MSG_VERBOSE("in fillFromArrays()");
212
213 const float weightPix = 1.0 / 46080.0;
214 const float weightIBL = 1.0 / 26880.0;
215
216 bool fillPP0only(name2DMap == "");
217 std::string pospp0varx = namePP0 + "_pospp0x";
218 std::string valvarp = namePP0 + "_val";
219 std::string posvarx = name2DMap + "_em";
220 std::string posvary = name2DMap + "_pm";
221 std::string valvarm = name2DMap + "_val";
222
223 for (unsigned int a = 0; a < PixMon::kNumModulesDisk; ++a) {
224 auto posy = Monitored::Scalar<int>(posvary, a);
225 for (unsigned int b = 0; b < PixMon::kNumLayersDisk; ++b) {
226 // to find out (and fill together into one PP0-histogram bin)
227 // array content of the modules belonging to the same sector (or PP0)
228 // the translation (a-1)/6 is used
229 // to show PP0 values from other disks of the same endcap
230 // in the same plot
231 // the shift (b-1)*8 applies per disk counter b
232 // (there are in total 8 sectors/disk)
233 auto pospp0x = Monitored::Scalar<int>(pospp0varx, a / 6 + b * 8);
234 auto posx = Monitored::Scalar<int>(posvarx, b);
235 auto valp = Monitored::Scalar<float>(valvarp, pixarrays.DA[a][b]);
236 auto valm = Monitored::Scalar<float>(valvarm, pixarrays.DA[a][b] * weightPix);
237 if (pixarrays.DA[a][b] > -1) {
238 fill("ECA", pospp0x, valp);
239 if (!fillPP0only) fill("ECA", posx, posy, valm);
240 }
241 valp = pixarrays.DC[a][b];
242 valm = pixarrays.DC[a][b] * weightPix;
243 if (pixarrays.DC[a][b] > -1) {
244 fill("ECC", pospp0x, valp);
245 if (!fillPP0only) fill("ECC", posx, posy, valm);
246 }
247 }
248 }
249
250 for (unsigned int b = 0; b < PixMon::kNumModulesBarrel; ++b) {
251 // translating array index into old Pixel module eta on a stave
252 // i.e. 0..12 into -6..6 so that standard per-layer histograms
253 // declared by define2DProfHist method can be filled
254 auto posx = Monitored::Scalar<int>(posvarx, b - 6);
255
256 for (unsigned int a = 0; a < PixMon::kNumStavesL0; ++a) {
257 auto posy = Monitored::Scalar<int>(posvary, a);
258 auto pospp0x = Monitored::Scalar<int>(pospp0varx, a);
259 auto valp = Monitored::Scalar<float>(valvarp, pixarrays.B0[a][b]);
260 auto valm = Monitored::Scalar<float>(valvarm, pixarrays.B0[a][b] * weightPix);
261 if (pixarrays.B0[a][b] > -1) {
262 fill("BLayer", pospp0x, valp);
263 if (!fillPP0only) fill("BLayer", posx, posy, valm);
264 }
265 }
266 for (unsigned int a = 0; a < PixMon::kNumStavesL1; ++a) {
267 auto posy = Monitored::Scalar<int>(posvary, a);
268 auto pospp0x = Monitored::Scalar<int>(pospp0varx, a);
269 auto valp = Monitored::Scalar<float>(valvarp, pixarrays.B1[a][b]);
270 auto valm = Monitored::Scalar<float>(valvarm, pixarrays.B1[a][b] * weightPix);
271 if (pixarrays.B1[a][b] > -1) {
272 fill("Layer1", pospp0x, valp);
273 if (!fillPP0only) fill("Layer1", posx, posy, valm);
274 }
275 }
276 for (unsigned int a = 0; a < PixMon::kNumStavesL2; ++a) {
277 auto posy = Monitored::Scalar<int>(posvary, a);
278 auto pospp0x = Monitored::Scalar<int>(pospp0varx, a);
279 auto valp = Monitored::Scalar<float>(valvarp, pixarrays.B2[a][b]);
280 auto valm = Monitored::Scalar<float>(valvarm, pixarrays.B2[a][b] * weightPix);
281 if (pixarrays.B2[a][b] > -1) {
282 fill("Layer2", pospp0x, valp);
283 if (!fillPP0only) fill("Layer2", posx, posy, valm);
284 }
285 }
286 }
287 unsigned int nbina = PixMon::kNumStavesIBL;
288 unsigned int nbinb = PixMon::kNumFEsIBL;
289 for (unsigned int a = 0; a < nbina; ++a) {
290 auto posy = Monitored::Scalar<int>(posvary, a);
291 auto pospp0x = Monitored::Scalar<int>(pospp0varx, a);
292 for (unsigned int b = 0; b < nbinb; ++b) {
293 // translating array index into IBL frontend eta on a stave
294 // i.e. 0..31 into -16..15 so that standard per-layer histograms
295 // declared by define2DProfHist method can be filled
296 auto posx = Monitored::Scalar<int>(posvarx, b - 16);
297 auto valp = Monitored::Scalar<float>(valvarp, pixarrays.IBL[a][b]);
298 auto valm = Monitored::Scalar<float>(valvarm, pixarrays.IBL[a][b] * weightIBL);
299 if (pixarrays.IBL[a][b] > -1) {
300 if (b > (0.5 * nbinb - 1)) {
301 fill("IBLA", pospp0x, valp);
302 } else {
303 fill("IBLC", pospp0x, valp);
304 }
305 if (!fillPP0only) fill("IBL", posx, posy, valm);
306 }
307 }
308 }
309}
static Double_t a
const unsigned int kNumStavesL0
const unsigned int kNumStavesL1
const unsigned int kNumFEsIBL
const unsigned int kNumStavesIBL
const unsigned int kNumModulesDisk
const unsigned int kNumStavesL2
const unsigned int kNumLayersDisk
const unsigned int kNumModulesBarrel

◆ fillHistograms()

StatusCode PixelAthErrorMonAlg::fillHistograms ( const EventContext & ctx) const
overridevirtual

adds event to the monitoring histograms

User will overwrite this function. Histogram booking is no longer done in C++. This function is called in execute once the filters are all passed.

Parameters
ctxforwarded from execute
Returns
StatusCode

Implements AthMonitorAlgorithm.

Definition at line 35 of file PixelAthErrorMonAlg.cxx.

35 {
36 using namespace Monitored;
37
38 int lb = GetEventInfo(ctx)->lumiBlock();
39 auto errorGroup = getGroup("Error");
40
41 ATH_MSG_DEBUG("Filling Error Monitoring Histograms");
42
43 unsigned int bcid = GetEventInfo(ctx)->bcid();
44 auto bcidval = Monitored::Scalar<unsigned int>("pixdesyncmontool_bcid", bcid);
45
46 // Generate a vector of error maps for all different error states.
47 std::vector<VecAccumulator2DMap> error_maps_per_state;
48 error_maps_per_state.reserve(kNumErrorStatesFEI3 + kNumErrorStatesFEI4);
49 std::vector<VecAccumulator2DMap> fe_error_maps_per_state;
50 fe_error_maps_per_state.reserve(kNumErrorStatesPerFE);
51 for (const auto& state : error_names_stateFEI3) {
52 error_maps_per_state.emplace_back(*this, state + std::string("Map"));
53 if (isPerFEI3State(state))
54 {
55 fe_error_maps_per_state.emplace_back(*this, state + std::string("FEMap"));
56 }
57 }
58 for (const auto& state : error_names_stateFEI4) {
59 error_maps_per_state.emplace_back(*this, state + std::string("Map"));
60 }
61 if (error_maps_per_state.size()!=(kNumErrorStatesFEI3 + kNumErrorStatesFEI4) ||
62 fe_error_maps_per_state.size()!=kNumErrorStatesPerFE) {
63 ATH_MSG_ERROR("PixelMonitoring: Mismatch in the definition of the number of error states.");
64 return StatusCode::RECOVERABLE;
65 }
66 std::vector<VecAccumulator2DMap> error_maps_per_cat_rodmod;
67 // only first four rodmod histos are unique, others are covered by
68 // the overall, rod/mod-agnostic categories below
69 for (unsigned int cat = 0; cat < ErrorCategoryRODMOD::kTruncROD + 1; ++cat) {
70 error_maps_per_cat_rodmod.emplace_back(*this, error_names_cat_rodmod[cat]);
71 }
72 std::vector<VecAccumulator2DMap> error_maps_per_cat;
73 for (unsigned int cat = 0; cat < ErrorCategory::COUNT; ++cat) {
74 error_maps_per_cat.emplace_back(*this, error_names_cat[cat]);
75 }
76
77 // containers to keep IBL service records info
78 std::vector<int> flagged_ibl_error_bits;
79 std::vector<unsigned int> weights_of_flagged_ibl_error_bits;
80
81 int nActive_layer[PixLayers::COUNT] = {
82 0
83 };
84
85 // Array to count number of errors occurring in all layers.
86 float num_errors[PixLayers::COUNT] = {
87 0
88 };
89 float num_errors_per_state[std::max(kNumErrorStatesFEI3, kNumErrorStatesFEI4)][PixLayers::COUNT] = {{0}};
90
91 // Counters for erroneous modules in a layer, per
92 // error category, w/ and w/o ROD/MOD distinction.
93 float num_errormodules_per_cat[ErrorCategory::COUNT][PixLayers::COUNT] = {{0}};
94 float num_errormodules_per_cat_rodmod[ErrorCategoryRODMOD::COUNT][PixLayers::COUNT] = {{0}};
95
96 // Generate femcc_errwords, ROB error and per LB maps.
97 VecAccumulator2DMap femcc_errwords_maps(*this, "FEMCCErrorwords");
98 VecAccumulator2DMap trunc_rob_errors_maps(*this, "TruncatedROBErrors", true);
99 VecAccumulator2DMap masked_rob_errors_maps(*this, "MaskedROBErrors", true);
100 VecAccumulator2DMap all_errors_maps(*this, "ErrorsLB");
101 VecAccumulator2DMap modsync_errors_maps(*this, "ErrorsModSyncLB");
102 VecAccumulator2DMap rodsync_errors_maps(*this, "ErrorsRODSyncLB");
103
104 //====================================================================================
105 // This is an example how to read the Error informaiton.
106 //
107 // The Error word is defined in
108 // InDetConditions/PixelConditionsData/PixelConditionsData/PixelByteStreamErrors.h
109 //
110 // The IDCInDetBSErrContainer can be accessed through
111 // m_pixelCondSummaryTool->getBSErrorWord(i,ctx)
112 // where
113 // i= [ 0, 2047] : module error
114 // ( [0, 11] - DBMC, [12, 155] - ECC, [156, 435] - IBL,
115 // [436, 721] - B0, [722, 1215] - B1, [1216, 1891] - B2,
116 // [1892, 2035] - ECA, [2036, 2047] - DBMA )
117 //
118 // for PIXEL(FEI3):
119 // = [ 2048, 4095] : FE-0 error
120 // = [ 4096, 6143] : FE-1 error
121 // = [ 6144, 8191] : FE-2 error
122 // ... ... ...
123 // ... ... ...
124 // = [30720, 32767] : FE-14 error
125 // = [32768, 34815] : FE-15 error
126 //
127 // for IBL(FEI4):
128 // = [ 2048, 4095] : FE-0 error
129 // = [ 4096, 6143] : FE-1 error
130 // = [34816, 35375] : Error counter in bit#=0 from ServiceRecords (shift: modHash*nFE+iFE)
131 // = [35376, 35935] : Error counter in bit#=1 from ServiceRecords
132 // ... ... ...
133 // ... ... ...
134 // = [52176, 52735] : Error counter in bit#=31 from ServiceRecords
135 //
136 //====================================================================================
137 //
138
139 const int maxHash = m_pixelid->wafer_hash_max(); // 2048
140
141 SG::ReadHandle<InDet::SiDetectorElementStatus> pixel_active = getPixelDetElStatus(m_pixelDetElStatusActiveOnly, ctx);
142 SG::ReadHandle<IDCInDetBSErrContainer> idcErrCont;
144 idcErrCont =SG::ReadHandle<IDCInDetBSErrContainer> ( m_idcErrContKey, ctx);
145 if (!idcErrCont.isValid()) {
146 ATH_MSG_FATAL("Faled to get BS error container" << m_idcErrContKey.key() );
147 }
148 }
149 // Loop over modules except DBM, s.a.
150 for (int modHash = 12; modHash < maxHash - 12; modHash++) {
151 Identifier waferID = m_pixelid->wafer_id(modHash);
152 int pixlayer = getPixLayersID(m_pixelid->barrel_ec(waferID), m_pixelid->layer_disk(waferID));
153 int nFE(0);
154 bool is_fei4(false); // FEI4 readout architecture (IBL, DBM)
155 int iblsublayer(pixlayer);
156 if (pixlayer == PixLayers::kIBL) {
157 if (m_pixelid->eta_module(waferID) > -7 && m_pixelid->eta_module(waferID) < 6) { // IBL Planar
158 nFE = 2;
159 iblsublayer = PixLayers::kIBL2D;
160 } else { // IBL 3D
161 nFE = 1;
162 iblsublayer = PixLayers::kIBL3D;
163 }
164 is_fei4 = true;
165 } else { // for fei3 Pixel layers
166 nFE = 16;
167 is_fei4 = false;
168 }
169 // flagging/counting categorized errors per module.
170 bool has_err_cat[ErrorCategory::COUNT][nFEIBL2D] = {{false}};
171 int nerrors_cat_rodmod[ErrorCategoryRODMOD::COUNT][nFEIBL2D] = {{0}};
172
173 // count number of words w/ MCC/FE flags per module
174 unsigned int num_femcc_errwords = 0;
175
177 ? InDet::getBSErrorWord( *pixel_active,
178 *idcErrCont,
179 modHash,
180 modHash,
182 : m_pixelCondSummaryTool->getBSErrorWord(modHash, ctx) );
183 VALIDATE_STATUS_ARRAY(!m_pixelDetElStatusActiveOnly.empty() && m_readoutTechnologyMask, InDet::getBSErrorWord( *pixel_active,*idcErrCont,modHash,modHash,m_readoutTechnologyMask) ,m_pixelCondSummaryTool->getBSErrorWord(modHash, ctx) );
184
185 // extracting ROB error information
186 //
187 if (PixelByteStreamErrors::hasError(mod_errorword, PixelByteStreamErrors::TruncatedROB)) {
188 trunc_rob_errors_maps.add(pixlayer, waferID, 1.0);
189 }
190 if (PixelByteStreamErrors::hasError(mod_errorword, PixelByteStreamErrors::MaskedROB)) {
191 masked_rob_errors_maps.add(pixlayer, waferID, 1.0);
192 }
193 // getting module_error information (only fei3 layers)
194 //
195 if (!is_fei4) {
196 std::bitset<kNumErrorStatesFEI3> stateFEI3 = getErrorStateFEI3Mod(mod_errorword);
197 num_errors[pixlayer] += stateFEI3.count();
198 for (unsigned int state = 0; state < stateFEI3.size(); ++state) {
199 if (stateFEI3[state]) {
200 num_errors_per_state[state][pixlayer]++;
201 error_maps_per_state[state].add(pixlayer, waferID, 1.0);
202 }
203 }
204 fillErrorCatRODmod(mod_errorword, nerrors_cat_rodmod);
205 }
206
207 // getting fe_error information (all pixel layers)
208 //
209 for (int iFE = 0; iFE < nFE; iFE++) {
210
211 int offsetFE = (1 + iFE) * maxHash + modHash; // (FE index+1)*2048 + moduleHash
213 ? InDet::getBSErrorWord( *pixel_active,
214 *idcErrCont,
215 modHash,
216 offsetFE,
218 : m_pixelCondSummaryTool->getBSErrorWord(modHash, offsetFE, ctx) );
219 VALIDATE_STATUS_ARRAY(!m_pixelDetElStatusActiveOnly.empty() && m_readoutTechnologyMask, InDet::getBSErrorWord( *pixel_active,*idcErrCont,modHash,offsetFE,m_readoutTechnologyMask) ,m_pixelCondSummaryTool->getBSErrorWord(modHash, offsetFE, ctx) );
220
221
222 fillErrorCatRODmod(fe_errorword, is_fei4, nerrors_cat_rodmod, iFE);
223
224 if (!is_fei4) {
225 std::bitset<kNumErrorStatesFEI3> stateFEI3 = getErrorStateFE(fe_errorword, is_fei4);
226 num_errors[pixlayer] += stateFEI3.count();
227 if (stateFEI3.any()) num_femcc_errwords++;
228 int perFEI3state(-1);
229 for (unsigned int state = 0; state < stateFEI3.size(); ++state) {
230 if (isPerFEI3State(error_names_stateFEI3[state])) perFEI3state++;
231 if (stateFEI3[state]) {
232 num_errors_per_state[state][pixlayer]++;
233 if (perFEI3state>=0 && perFEI3state<kNumErrorStatesPerFE) {
234 fe_error_maps_per_state[perFEI3state].add(pixlayer, waferID, iFE, 1.0);
235 } else {
236 error_maps_per_state[state].add(pixlayer, waferID, 1.0);
237 }
238 }
239 }
240 } else {
241 std::bitset<kNumErrorStatesFEI3> stateFEI4 = getErrorStateFE(fe_errorword, is_fei4);
242 num_errors[iblsublayer] += stateFEI4.count();
243 Identifier pixelIDperFEI4 = m_pixelReadout->getPixelIdfromHash(modHash, iFE, 1, 1);
244 for (unsigned int state = 0; state < stateFEI4.size(); ++state) {
245 if (stateFEI4[state]) {
246 num_errors_per_state[state][iblsublayer]++;
247 error_maps_per_state[state + kNumErrorStatesFEI3].add(pixlayer, pixelIDperFEI4, 1.0);
248 }
249 }
250 }
251 } // FE loop
252 if (!is_fei4) femcc_errwords_maps.add(pixlayer, waferID, num_femcc_errwords);
253
254 // getting error information from service records (only IBL)
255 //
256 int state_offset(8); // serviceCode part starts from state 8 of kNumErrorStatesFEI4
257 const int serviceRecordFieldOffset = 17 * maxHash;
258 if (pixlayer == PixLayers::kIBL) {
259 int moduleOffset = (modHash - 156) * 2;
260 for (int serviceCode = 0; serviceCode < 32; serviceCode++) {
261 // skip irrelevant SR's (as in rel21)
262 if ((serviceCode >= 9 && serviceCode <= 14) || (serviceCode >= 17 && serviceCode <= 23)) {
263 state_offset--;
264 continue;
265 }
266 int serviceCodeOffset = serviceCode * 280 * 2;
267 for (int iFE = 0; iFE < nFE; iFE++) {
268 Identifier pixelIDperFEI4 = m_pixelReadout->getPixelIdfromHash(modHash, iFE, 1, 1);
269 // index = offset + (serviceCode)*(#IBL*nFEmax) + (moduleHash-156)*nFEmax + iFE
270 int serviceCodeCounterIndex = serviceRecordFieldOffset + serviceCodeOffset + moduleOffset + iFE;
271 uint64_t serviceCodeCounter = (!m_pixelDetElStatusActiveOnly.empty() && m_readoutTechnologyMask
272 ? InDet::getBSErrorWord( *pixel_active,
273 *idcErrCont,
274 modHash,
275 serviceCodeCounterIndex,
277 : m_pixelCondSummaryTool->getBSErrorWord(modHash, serviceCodeCounterIndex, ctx) );
278 VALIDATE_STATUS_ARRAY(!m_pixelDetElStatusActiveOnly.empty() && m_readoutTechnologyMask, InDet::getBSErrorWord( *pixel_active,*idcErrCont,modHash,serviceCodeCounterIndex,m_readoutTechnologyMask) ,m_pixelCondSummaryTool->getBSErrorWord(modHash, serviceCodeCounterIndex, ctx) );
279
280 if (serviceCodeCounter > 0) {
281 float payload = serviceCodeCounter; // NB: + 1, as in rel 21, is now added upstream
282 flagged_ibl_error_bits.push_back(serviceCode);
283 weights_of_flagged_ibl_error_bits.push_back(payload);
284
285 int state = serviceCode + state_offset;
286 num_errors[iblsublayer] += payload;
287 num_errors_per_state[state][iblsublayer] += payload;
288 error_maps_per_state[state + kNumErrorStatesFEI3].add(pixlayer, pixelIDperFEI4, payload);
289
290 fillErrorCatRODmod(serviceCode, payload, nerrors_cat_rodmod, iFE);
291 }
292 } // over FE
293 } //over service codes
294 } // IBL modules
295
296 // access categorized error information per module (for IBL - FE)
297 // it is only flagged - the actual number of errors per category is not tracked
298 for (int iFE = 0; iFE < nFE; iFE++) {
299 if (pixlayer != PixLayers::kIBL && iFE > 0) continue;
300 Identifier pixID = waferID;
301 if (pixlayer == PixLayers::kIBL) {
302 pixID = m_pixelReadout->getPixelIdfromHash(modHash, iFE, 1, 1);
303 }
304 if (pixID.is_valid()) {
305 for (int i = 0; i < ErrorCategoryRODMOD::COUNT; i++) {
306 if (nerrors_cat_rodmod[i][iFE]) {
307 if (getErrorCategory(i + 1) != 99) has_err_cat[getErrorCategory(i + 1)][iFE] = true;
308 if (pixlayer == PixLayers::kIBL) num_errormodules_per_cat_rodmod[i][iblsublayer]++;
309 else num_errormodules_per_cat_rodmod[i][pixlayer]++;
310 if (!m_doOnline) {
311 all_errors_maps.add(pixlayer, pixID, nerrors_cat_rodmod[i][iFE]);
312 if (i < ErrorCategoryRODMOD::kTruncROD + 1) {
313 error_maps_per_cat_rodmod[i].add(pixlayer, pixID, 1.0);
314 if (i == 0) modsync_errors_maps.add(pixlayer, pixID, 1.0);
315 if (i == 1) rodsync_errors_maps.add(pixlayer, pixID, 1.0);
316 }
317 }
318 }
319 }
320 for (int i = 0; i < ErrorCategory::COUNT; i++) {
321 if (has_err_cat[i][iFE]) {
322 if (pixlayer == PixLayers::kIBL) num_errormodules_per_cat[i][iblsublayer]++;
323 else num_errormodules_per_cat[i][pixlayer]++;
324 if (!m_doOnline) {
325 error_maps_per_cat[i].add(pixlayer, pixID, 1.0);
326 }
327 }
328 }
329
330 // filling nActive modules per layer for later normalization
331 // for IBL normalization is done by number of FEI4
332 if ((pixlayer != PixLayers::kIBL && isActive(!m_pixelDetElStatusActiveOnly.empty() ? pixel_active.cptr() : nullptr, modHash) == true) ||
333 (pixlayer == PixLayers::kIBL && isChipActive(!m_pixelDetElStatusActiveOnly.empty() ? pixel_active.cptr() : nullptr, modHash, iFE) == true)) {
334 if (pixlayer == PixLayers::kIBL) nActive_layer[iblsublayer]++;
335 else nActive_layer[pixlayer]++;
336 }
337 } else {
338 ATH_MSG_ERROR("PixelMonitoring: got invalid pixID " << pixID);
339 }
340 } // loop over FEs
341 } // loop over modules
342
343 // normalization by active modules (or FE's in IBL case)
344 //
345 for (int i = 0; i < PixLayers::COUNT; i++) {
346 if (nActive_layer[i] > 0) {
347 for (int state = 0; state < numErrorStatesLayer[i]; state++) {
348 num_errors_per_state[state][i] /= nActive_layer[i];
349 }
350 for (int cat = 0; cat < ErrorCategoryRODMOD::COUNT; cat++) {
351 num_errormodules_per_cat_rodmod[cat][i] /= nActive_layer[i];
352 }
353 for (int cat = 0; cat < ErrorCategory::COUNT; cat++) {
354 num_errormodules_per_cat[cat][i] /= nActive_layer[i];
355 }
356 }
357 }
358 int perFEI3state(0);
359 for (unsigned int state = 0; state < kNumErrorStatesFEI3 + kNumErrorStatesFEI4; state++) {
360 if (state < kNumErrorStatesFEI3) {
361 if (isPerFEI3State(error_names_stateFEI3[state]) && perFEI3state<kNumErrorStatesPerFE)
362 fill2DProfLayerAccum(fe_error_maps_per_state[perFEI3state++]);
363 else fill2DProfLayerAccum(error_maps_per_state[state]);
364 fill1DProfLumiLayers(error_names_stateFEI3[state] + std::string(
365 "PerLumi"), lb, num_errors_per_state[state], PixLayers::NFEI3LAYERS);
366 } else {
367 fill2DProfLayerAccum(error_maps_per_state[state]);
369 "PerLumi"), lb, num_errors_per_state[state - kNumErrorStatesFEI3],
371 }
372 }
373 // Fill the accumulated maps
374 fill2DProfLayerAccum(femcc_errwords_maps);
375 fill2DProfLayerAccum(trunc_rob_errors_maps);
376 fill2DProfLayerAccum(masked_rob_errors_maps);
377 fill2DProfLayerAccum(all_errors_maps);
378 fill2DProfLayerAccum(modsync_errors_maps);
379 fill2DProfLayerAccum(rodsync_errors_maps);
380
381 for (int i = 0; i < PixLayers::COUNT; i++) {
382 auto val = Monitored::Scalar<float>("AvgSyncErrPerBCID_val", num_errormodules_per_cat_rodmod[0][i]);
383 fill(pixLayersLabel[i], bcidval, val);
384 }
385
386 if (!m_doOnline) {
387 for (unsigned int cat = 0; cat < ErrorCategoryRODMOD::kTruncROD + 1; ++cat) {
388 fill2DProfLayerAccum(error_maps_per_cat_rodmod[cat]);
389 }
390 for (unsigned int cat = 0; cat < ErrorCategory::COUNT; ++cat) {
391 fill2DProfLayerAccum(error_maps_per_cat[cat]);
392 }
393 }
394 // Fill the luminosity error profiles for all layers.
395 fill1DProfLumiLayers("ErrorsPerLumi", lb, num_errors);
396
397 auto vals = Monitored::Collection("ServiceRecord_val", flagged_ibl_error_bits);
398 auto wgts = Monitored::Collection("ServiceRecord_wgt", weights_of_flagged_ibl_error_bits);
399 fill(errorGroup, vals, wgts);
400
401 // Fill 2D luminosity error profiles per error bit and cat split by ROD/MOD for all layers.
402 fill2DProfLumiLayers("ErrorStatePerLumi", lb, num_errors_per_state, numErrorStatesLayer);
403 fill2DProfLumiLayers("ErrorCatRODModPerLumi", lb, num_errormodules_per_cat_rodmod, numErrorCatRODModsLayer);
404
405 // Fill 1D luminosity error profiles for error catergory for all layers.
406 for (unsigned int cat = 0; cat < error_names_cat_rodmod_norm.size(); ++cat) {
407 fill1DProfLumiLayers(error_names_cat_rodmod_norm[cat], lb, num_errormodules_per_cat_rodmod[cat]);
408 }
409 for (unsigned int cat = 0; cat < ErrorCategory::COUNT; ++cat) {
410 fill1DProfLumiLayers(error_names_cat_norm[cat], lb, num_errormodules_per_cat[cat]);
411 }
412
413 return StatusCode::SUCCESS;
414}
#define ATH_MSG_ERROR(x)
#define ATH_MSG_FATAL(x)
static const int kNumErrorStatesFEI4
static constexpr std::array< const char *, 4 > error_names_cat_rodmod_norm
static constexpr std::array< const char *, kNumErrorStatesFEI4 > error_names_stateFEI4
static constexpr std::array< const char *, ErrorCategory::COUNT > error_names_cat_norm
static constexpr std::array< const char *, ErrorCategoryRODMOD::COUNT > error_names_cat_rodmod
static const int numErrorStatesLayer[PixLayers::COUNT]
static const int numErrorCatRODModsLayer[PixLayers::COUNT]
static const int kNumErrorStatesPerFE
static const int kNumErrorStatesFEI3
static constexpr std::array< const char *, ErrorCategory::COUNT > error_names_cat
static constexpr std::array< const char *, kNumErrorStatesFEI3 > error_names_stateFEI3
static const int nFEIBL2D
#define VALIDATE_STATUS_ARRAY(use_info, info_val, summary_val)
const ToolHandle< GenericMonitoringTool > & getGroup(const std::string &name) const
Get a specific monitoring tool from the tool handle array.
SG::ReadHandle< xAOD::EventInfo > GetEventInfo(const EventContext &) const
Return a ReadHandle for an EventInfo object (get run/event numbers, etc.)
bool is_valid() const
Check if id is in a valid state.
std::bitset< kNumErrorStatesFEI3 > getErrorStateFE(uint64_t errorword, bool isibl) const
bool isPerFEI3State(const std::string &state) const
void fillErrorCatRODmod(uint64_t mod_errorword, int(&nerrors_cat_rodmod)[ErrorCategoryRODMOD::COUNT][nFEIBL2D]) const
SG::ReadHandleKey< IDCInDetBSErrContainer > m_idcErrContKey
int getErrorCategory(int error_cat_rodmod) const
unsigned int m_readoutTechnologyMask
std::bitset< kNumErrorStatesFEI3 > getErrorStateFEI3Mod(uint64_t errorword) const
void fill2DProfLayerAccum(const VecAccumulator2DMap &accumulator) const
take VecAccumulator2DMap and fill the corresponding group
SG::ReadHandleKey< InDet::SiDetectorElementStatus > m_pixelDetElStatusActiveOnly
Optional read handle to get status data to test whether a pixel detector element is active.
bool isChipActive(const IdentifierHash &module_hash, unsigned int chip_i) const
ToolHandle< IInDetConditionsTool > m_pixelCondSummaryTool
void fill2DProfLumiLayers(const std::string &prof2Dname, int lb, float(*weights)[PixLayers::COUNT], const int *nCategories) const
filling 2DProf per-lumi per-layer histograms ["ECA","ECC","BLayer","Layer1","Layer2",...
ServiceHandle< InDetDD::IPixelReadoutManager > m_pixelReadout
void fill1DProfLumiLayers(const std::string &prof1Dname, int lb, float *weights, int nlayers=PixLayers::COUNT) const
filling 1DProf per-lumi per-layer histograms ["ECA","ECC","BLayer","Layer1","Layer2",...
int getPixLayersID(int ec, int ld) const
helper function to get layers ID
bool isActive(const InDet::SiDetectorElementStatus *element_status, const IdentifierHash &module_hash) const
SG::ReadHandle< InDet::SiDetectorElementStatus > getPixelDetElStatus(const SG::ReadHandleKey< InDet::SiDetectorElementStatus > &key, const EventContext &ctx) const
virtual bool isValid() override final
Can the handle be successfully dereferenced?
const_pointer_type cptr()
Dereference the pointer.
void fill(const ToolHandle< GenericMonitoringTool > &groupHandle, std::vector< std::reference_wrapper< Monitored::IMonitoredVariable > > &&variables) const
Fills a vector of variables to a group by reference.
unsigned int getBSErrorWord(const InDet::SiDetectorElementStatus &elementStatus, const IDCInDetBSErrContainer &bsErrorContainer, const IdentifierHash &moduleIdHash, unsigned int index, unsigned int readOutTechnologyMask=(Pixel::makeReadoutTechnologyBit(InDetDD::PixelReadoutTechnology::FEI4)|(Pixel::makeReadoutTechnologyBit(InDetDD::PixelReadoutTechnology::FEI3))))
Retrieve the bytestream error word for the given module if the readout technology of the module is co...
setEventNumber setTimeStamp bcid

◆ 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

◆ findComponentString()

std::string PixelAthErrorMonAlg::findComponentString ( int bec,
int ld ) const

◆ getErrorCategory()

int PixelAthErrorMonAlg::getErrorCategory ( int error_cat_rodmod) const

Definition at line 416 of file PixelAthErrorMonAlg.cxx.

416 {
417 int error_cat = 99;
418
419 if (error_cat_rodmod == 1 || error_cat_rodmod == 2) error_cat = ErrorCategory::kSync;
420 if (error_cat_rodmod == 3 || error_cat_rodmod == 4) error_cat = ErrorCategory::kTrunc;
421 if (error_cat_rodmod == 5) error_cat = ErrorCategory::kOpt;
422 if (error_cat_rodmod == 6) error_cat = ErrorCategory::kSeu;
423 if (error_cat_rodmod == 7) error_cat = ErrorCategory::kTout;
424 return error_cat;
425}

◆ getErrorStateFE()

std::bitset< kNumErrorStatesFEI3 > PixelAthErrorMonAlg::getErrorStateFE ( uint64_t errorword,
bool isibl ) const

Definition at line 439 of file PixelAthErrorMonAlg.cxx.

439 {
440 std::bitset<kNumErrorStatesFEI3> result(0);
441 if (!is_fei4) {
442 if (PixelByteStreamErrors::hasError(errorword, PixelByteStreamErrors::MCCLVL1IDEoECheck)) result |= 1 << 4;
443 if (PixelByteStreamErrors::hasError(errorword, PixelByteStreamErrors::MCCBCIDEoECheck)) result |= 1 << 5;
444 if (PixelByteStreamErrors::hasError(errorword, PixelByteStreamErrors::MCCLVL1IDCheck)) result |= 1 << 6;
445 if (PixelByteStreamErrors::hasError(errorword, PixelByteStreamErrors::MCCEoEOverflow)) result |= 1 << 7;
446 if (PixelByteStreamErrors::hasError(errorword, PixelByteStreamErrors::MCCHitOverflow)) result |= 1 << 8;
447 if (PixelByteStreamErrors::hasError(errorword, PixelByteStreamErrors::FEWarning)) result |= 1 << 9;
448 if (PixelByteStreamErrors::hasError(errorword, PixelByteStreamErrors::FEHitParity)) result |= 1 << 10;
449 if (PixelByteStreamErrors::hasError(errorword, PixelByteStreamErrors::FERegisterParity)) result |= 1 << 11;
450 if (PixelByteStreamErrors::hasError(errorword, PixelByteStreamErrors::FEHammingCode)) result |= 1 << 12;
451 if (PixelByteStreamErrors::hasError(errorword, PixelByteStreamErrors::FEEoCOverflow)) result |= 1 << 13;
452 } else {
453 if (PixelByteStreamErrors::hasError(errorword, PixelByteStreamErrors::TimeOut)) result |= 1;
454 if (PixelByteStreamErrors::hasError(errorword, PixelByteStreamErrors::BCID)) result |= 1 << 1;
455 if (PixelByteStreamErrors::hasError(errorword, PixelByteStreamErrors::LVL1ID)) result |= 1 << 2;
456 if (PixelByteStreamErrors::hasError(errorword, PixelByteStreamErrors::Preamble)) result |= 1 << 3;
457 if (PixelByteStreamErrors::hasError(errorword, PixelByteStreamErrors::Trailer)) result |= 1 << 4;
458 if (PixelByteStreamErrors::hasError(errorword, PixelByteStreamErrors::Invalid)) result |= 1 << 5;
459 if (PixelByteStreamErrors::hasError(errorword, PixelByteStreamErrors::LinkMaskedByPPC)) result |= 1 << 6;
460 if (PixelByteStreamErrors::hasError(errorword, PixelByteStreamErrors::Limit)) result |= 1 << 7;
461 }
462 return result;
463}

◆ getErrorStateFEI3Mod()

std::bitset< kNumErrorStatesFEI3 > PixelAthErrorMonAlg::getErrorStateFEI3Mod ( uint64_t errorword) const

Definition at line 427 of file PixelAthErrorMonAlg.cxx.

427 {
428 std::bitset<kNumErrorStatesFEI3> result(0);
429 if (PixelByteStreamErrors::hasError(errorword, PixelByteStreamErrors::TimeOut)) result |= 1;
430 if (PixelByteStreamErrors::hasError(errorword, PixelByteStreamErrors::BCID)) result |= 1 << 1;
431 if (PixelByteStreamErrors::hasError(errorword, PixelByteStreamErrors::LVL1ID)) result |= 1 << 2;
432 if (PixelByteStreamErrors::hasError(errorword, PixelByteStreamErrors::Preamble)) result |= 1 << 3;
433 if (PixelByteStreamErrors::hasError(errorword, PixelByteStreamErrors::RODTrailerBitError)) result |= 1 << 14;
434 if (PixelByteStreamErrors::hasError(errorword, PixelByteStreamErrors::RODHeaderLimit)) result |= 1 << 15;
435 if (PixelByteStreamErrors::hasError(errorword, PixelByteStreamErrors::RODDataOVerflow)) result |= 1 << 16;
436 return result;
437}

◆ GetEventInfo()

SG::ReadHandle< xAOD::EventInfo > AthMonitorAlgorithm::GetEventInfo ( const EventContext & ctx) const
inherited

Return a ReadHandle for an EventInfo object (get run/event numbers, etc.)

Parameters
ctxEventContext for the event
Returns
a SG::ReadHandle<xAOD::EventInfo>

Definition at line 111 of file AthMonitorAlgorithm.cxx.

111 {
112 return SG::ReadHandle<xAOD::EventInfo>(m_EventInfoKey, ctx);
113}
SG::ReadHandleKey< xAOD::EventInfo > m_EventInfoKey
Key for retrieving EventInfo from StoreGate.

◆ getGroup()

const ToolHandle< GenericMonitoringTool > & AthMonitorAlgorithm::getGroup ( const std::string & name) const
inherited

Get a specific monitoring tool from the tool handle array.

Finds a specific GenericMonitoringTool instance from the list of monitoring tools (a ToolHandleArray). Throws a FATAL warning if the object found is empty.

Parameters
namestring name of the desired tool
Returns
reference to the desired monitoring tool

Definition at line 168 of file AthMonitorAlgorithm.cxx.

168 {
169 // get the pointer to the tool, and check that it exists
170 auto idx = m_toolLookupMap.find(name);
171 if (ATH_LIKELY(idx != m_toolLookupMap.end())) {
172 return m_tools[idx->second];
173 }
174 else {
175 // treat empty tool handle case as in Monitored::Group
176 if (m_toolLookupMap.empty()) {
177 return m_dummy;
178 }
179
180 if (!isInitialized()) {
182 "It seems that the AthMonitorAlgorithm::initialize was not called "
183 "in derived class initialize method");
184 } else {
185 std::string available = std::accumulate(
186 m_toolLookupMap.begin(), m_toolLookupMap.end(), std::string(""),
187 [](const std::string& s, auto h) { return s + "," + h.first; });
188 ATH_MSG_FATAL("The tool " << name << " could not be found in the tool array of the "
189 << "monitoring algorithm " << m_name << ". This probably reflects a discrepancy between "
190 << "your python configuration and c++ filling code. Note: your available groups are {"
191 << available << "}.");
192 }
193 }
194 return m_dummy;
195}
#define ATH_LIKELY(x)
std::unordered_map< std::string, size_t > m_toolLookupMap
const ToolHandle< GenericMonitoringTool > m_dummy
ToolHandleArray< GenericMonitoringTool > m_tools
Array of Generic Monitoring Tools.

◆ getNumberOfFEs()

int PixelAthMonitoringBase::getNumberOfFEs ( int pixlayer,
int etaMod ) const
inherited

helper function to get number of FEs per module

Definition at line 372 of file PixelAthMonitoringBase.cxx.

372 {
373 int nFE(16);
374
375 if (pixlayer == PixLayers::kIBL) {
376 nFE = 1; // IBL 3D
377 if (etaMod > -7 && etaMod < 6) nFE = 2; // IBL Planar
378 }
379 return nFE;
380}

◆ getPhiEtaMod()

void PixelAthMonitoringBase::getPhiEtaMod ( Identifier & id,
int & phiMod,
int & etaMod,
bool & copyFE ) const
inherited

helper function to get eta phi coordinates of per-layer arrays

Definition at line 388 of file PixelAthMonitoringBase.cxx.

389 {
390 phiMod = m_pixelid->phi_module(id);
391
392 int layerDisk = m_pixelid->layer_disk(id);
393 etaMod = layerDisk;
394 copyFE = false;
395 if (m_pixelid->barrel_ec(id) == 0) {
396 etaMod = m_pixelid->eta_module(id);
397 if (layerDisk == 0) {
398 if (etaMod < -6) {
399 etaMod = etaMod - 6;
400 } else if (etaMod > -7 && etaMod < 6) {
401 int feid = 0;
402 if (m_pixelid->eta_index(id) >= 80) feid = 1;
403 etaMod = 2 * etaMod + feid;
404 copyFE = true;
405 } else {
406 etaMod = etaMod + 6;
407 }
408 etaMod = etaMod + 16;
409 } else etaMod = etaMod + 6;
410 }
411}
int eta_index(const Identifier &id) const
Definition PixelID.h:645
int layer_disk(const Identifier &id) const
Definition PixelID.h:607
int barrel_ec(const Identifier &id) const
Values of different levels (failure returns 0)
Definition PixelID.h:600
int eta_module(const Identifier &id) const
Definition PixelID.h:632
int phi_module(const Identifier &id) const
Definition PixelID.h:625

◆ getPixelDetElStatus()

SG::ReadHandle< InDet::SiDetectorElementStatus > PixelAthMonitoringBase::getPixelDetElStatus ( const SG::ReadHandleKey< InDet::SiDetectorElementStatus > & key,
const EventContext & ctx ) const
inlineprotectedinherited

Definition at line 158 of file PixelAthMonitoringBase.h.

158 {
160 if (!key.empty()) {
161 pixelDetElStatus = SG::ReadHandle<InDet::SiDetectorElementStatus>(key, ctx);
162 if (!pixelDetElStatus.isValid()) {
163 std::stringstream msg;
164 msg << "Failed to get " << key.key() << " from StoreGate in " << name();
165 throw std::runtime_error(msg.str());
166 }
167 }
168 return pixelDetElStatus;
169 }
MsgStream & msg
Definition testRead.cxx:32

◆ getPixLayersID()

int PixelAthMonitoringBase::getPixLayersID ( int ec,
int ld ) const
inherited

helper function to get layers ID

Definition at line 317 of file PixelAthMonitoringBase.cxx.

317 {
318 int layer = 99;
319
320 if (ec == 2) {
321 layer = PixLayers::kECA;
322 } else if (ec == -2) {
323 layer = PixLayers::kECC;
324 } else if (ec == 0) {
325 if (ld == 0) layer = PixLayers::kIBL;
326 if (ld == 1) layer = PixLayers::kBLayer;
327 if (ld == 2) layer = PixLayers::kLayer1;
328 if (ld == 3) layer = PixLayers::kLayer2;
329 }
330 return layer;
331}
@ layer
Definition HitInfo.h:79

◆ getTrigDecisionTool()

const ToolHandle< Trig::TrigDecisionTool > & AthMonitorAlgorithm::getTrigDecisionTool ( ) const
inherited

Get the trigger decision tool member.

The trigger decision tool is used to check whether a specific trigger is passed by an event.

Returns
m_trigDecTool

Definition at line 198 of file AthMonitorAlgorithm.cxx.

198 {
199 return m_trigDecTool;
200}

◆ initialize()

StatusCode PixelAthErrorMonAlg::initialize ( )
overridevirtual

initialize

Returns
StatusCode

Reimplemented from PixelAthMonitoringBase.

Definition at line 26 of file PixelAthErrorMonAlg.cxx.

26 {
27 ATH_CHECK( PixelAthMonitoringBase::initialize() );
32 return StatusCode::SUCCESS;
33}
#define ATH_CHECK
Evaluate an expression and check for errors.
Gaudi::Property< bool > m_useByteStreamRD53
Gaudi::Property< bool > m_useByteStreamFEI4
Gaudi::Property< bool > m_useByteStreamFEI3
unsigned int makeReadoutTechnologyBit(InDetDD::PixelReadoutTechnology technology, unsigned int bit_val=1)
Create a word with a bit representing the given readout technology to the given value.

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

◆ isActive()

bool PixelAthMonitoringBase::isActive ( const InDet::SiDetectorElementStatus * element_status,
const IdentifierHash & module_hash ) const
inlineprotectedinherited

Definition at line 170 of file PixelAthMonitoringBase.h.

171 {
172 const EventContext& ctx{Gaudi::Hive::currentContext()};
173 bool ret { element_status ? element_status->isGood(module_hash) : m_pixelCondSummaryTool->isActive(module_hash, ctx) };
174 VALIDATE_STATUS_ARRAY(element_status, element_status->isGood(module_hash), m_pixelCondSummaryTool->isActive(module_hash, ctx) );
175 return ret;
176 }
bool isGood(IdentifierHash hash) const

◆ isChipActive() [1/2]

bool PixelAthMonitoringBase::isChipActive ( const IdentifierHash & module_hash,
unsigned int chip_i ) const
inlineprotectedinherited

Definition at line 198 of file PixelAthMonitoringBase.h.

199 {
200 bool is_active=false;
201 Identifier pixelID = m_pixelReadout->getPixelIdfromHash(module_hash, chip_i, 1, 1);
202 if (pixelID.is_valid()) {
203 const EventContext& ctx{Gaudi::Hive::currentContext()};
204 is_active = m_pixelCondSummaryTool->isActive(module_hash,pixelID, ctx);
205 }
206 return is_active;
207 }

◆ isChipActive() [2/2]

bool PixelAthMonitoringBase::isChipActive ( const InDet::SiDetectorElementStatus * element_active,
const IdentifierHash & module_hash,
unsigned int chip_i ) const
inlineprotectedinherited

Definition at line 229 of file PixelAthMonitoringBase.h.

231 {
232 bool ret( element_active
233 ? element_active->isChipGood(module_hash, chip_i)
234 : isChipActive( module_hash, chip_i) );
235#ifdef DO_VALIDATE_STATUS_ARRAY
236 const EventContext& ctx{Gaudi::Hive::currentContext()};
237 Identifier pixelID = m_pixelReadout->getPixelIdfromHash(module_hash, chip_i, 1, 1);
238 VALIDATE_STATUS_ARRAY(element_active, element_active->isChipGood(module_hash, chip_i), m_pixelCondSummaryTool->isActive(module_hash,pixelID, ctx) );
239#endif
240 return ret;
241 }
bool isChipGood(IdentifierHash hash, unsigned int chip) const

◆ isChipGood() [1/3]

std::tuple< bool, bool > PixelAthMonitoringBase::isChipGood ( const IdentifierHash & module_hash,
unsigned int chip_i ) const
inlineprotectedinherited

Definition at line 184 of file PixelAthMonitoringBase.h.

185 {
186 bool is_active=false;
187 bool is_good=false;
188 Identifier pixelID = m_pixelReadout->getPixelIdfromHash(module_hash, chip_i, 1, 1);
189 if (pixelID.is_valid()) {
190 const EventContext& ctx{Gaudi::Hive::currentContext()};
191 is_active = m_pixelCondSummaryTool->isActive(module_hash,pixelID, ctx);
192 if (is_active) {
193 is_good = m_pixelCondSummaryTool->isGood(module_hash, pixelID, ctx);
194 }
195 }
196 return std::make_tuple(is_active,is_good);
197 }

◆ isChipGood() [2/3]

std::tuple< bool, bool > PixelAthMonitoringBase::isChipGood ( const InDet::SiDetectorElementStatus & element_active,
const InDet::SiDetectorElementStatus & element_status,
const IdentifierHash & module_hash,
unsigned int chip_i ) const
inlineprotectedinherited

Definition at line 208 of file PixelAthMonitoringBase.h.

211 {
212 return std::make_tuple(element_active.isChipGood(module_hash, chip_i), element_status.isChipGood(module_hash, chip_i) );
213 }

◆ isChipGood() [3/3]

std::tuple< bool, bool > PixelAthMonitoringBase::isChipGood ( const InDet::SiDetectorElementStatus * element_active,
const InDet::SiDetectorElementStatus * element_status,
const IdentifierHash & module_hash,
unsigned int chip_i ) const
inlineprotectedinherited

Definition at line 214 of file PixelAthMonitoringBase.h.

217 {
218 std::tuple<bool,bool> ret( element_active && element_status
219 ? isChipGood( *element_active, *element_status, module_hash, chip_i)
220 : isChipGood( module_hash, chip_i) );
221#ifdef DO_VALIDATE_STATUS_ARRAY
222 Identifier pixelID = m_pixelReadout->getPixelIdfromHash(module_hash, chip_i, 1, 1);
223 const EventContext& ctx{Gaudi::Hive::currentContext()};
224 VALIDATE_STATUS_ARRAY(element_active, element_active->isChipGood(module_hash, chip_i), m_pixelCondSummaryTool->isActive(module_hash,pixelID, ctx) );
225 VALIDATE_STATUS_ARRAY(element_status, element_status->isChipGood(module_hash, chip_i), m_pixelCondSummaryTool->isGood(module_hash,pixelID, ctx) );
226#endif
227 return ret;
228 }

◆ isClonable()

◆ isClusterOnTrack() [1/2]

bool PixelAthMonitoringBase::isClusterOnTrack ( Identifier id,
std::vector< std::pair< Identifier, double > > const & ClusterIDs ) const
inherited

checks if cluster is on track

Definition at line 431 of file PixelAthMonitoringBase.cxx.

432 {
433 bool onTrack = false;
434
435 std::pair<Identifier, double> searchVal = std::make_pair(id, -1.0);
436 onTrack = std::binary_search(ClusterIDs.begin(), ClusterIDs.end(), searchVal,
437 [](std::pair<Identifier, double> l, std::pair<Identifier, double> r) -> bool {
438 return l.first < r.first;
439 });
440 return onTrack;
441}
int r
Definition globals.cxx:22

◆ isClusterOnTrack() [2/2]

bool PixelAthMonitoringBase::isClusterOnTrack ( Identifier id,
std::vector< std::pair< Identifier, double > > const & ClusterIDs,
double & cosalpha ) const
inherited

checks if cluster is on track and returns its cosalpha

Definition at line 448 of file PixelAthMonitoringBase.cxx.

450 {
451 bool onTrack(false);
452
453 std::pair<Identifier, double> searchVal = std::make_pair(id, -1.0);
454 auto it = std::lower_bound(ClusterIDs.begin(), ClusterIDs.end(), searchVal,
455 [](std::pair<Identifier, double> l, std::pair<Identifier, double> r) -> bool {
456 return l.first < r.first;
457 });
458
459 if (it != ClusterIDs.end() && !(id < (*it).first)) {
460 onTrack = true;
461 cosalpha = (*it).second;
462 }
463 return onTrack;
464}

◆ isGood()

bool PixelAthMonitoringBase::isGood ( const InDet::SiDetectorElementStatus * element_status,
const IdentifierHash & module_hash ) const
inlineprotectedinherited

Definition at line 177 of file PixelAthMonitoringBase.h.

178 {
179 const EventContext& ctx{Gaudi::Hive::currentContext()};
180 bool ret ( element_status ? element_status->isGood(module_hash) : m_pixelCondSummaryTool->isGood(module_hash, ctx));
181 VALIDATE_STATUS_ARRAY(element_status, element_status->isGood(module_hash), m_pixelCondSummaryTool->isGood(module_hash, ctx) );
182 return ret;
183 }

◆ isHitOnTrack()

bool PixelAthMonitoringBase::isHitOnTrack ( Identifier id,
std::vector< Identifier > const & RDOIDs ) const
inherited

checks if hit is on track

Definition at line 418 of file PixelAthMonitoringBase.cxx.

418 {
419 return binary_search(RDOIDs.begin(), RDOIDs.end(), id);
420
421 ;
422}

◆ isIBL2D()

bool PixelAthMonitoringBase::isIBL2D ( int hashID) const
inherited

helper function to check if module is IBL planar based on pixel hash ID

Definition at line 336 of file PixelAthMonitoringBase.cxx.

336 {
337 bool result(false);
338 if ( hashID>=156 && hashID<=435 ) // IBL
339 {
340 int module = (hashID-156) % 20;
341 if (module>3 && module<16)
342 {
343 result = true;
344 }
345 }
346 return result;
347}

◆ isIBL3D()

bool PixelAthMonitoringBase::isIBL3D ( int hashID) const
inherited

helper function to check if module is IBL 3D based on pixel hash ID

Definition at line 354 of file PixelAthMonitoringBase.cxx.

354 {
355 bool result(false);
356 if ( hashID>=156 && hashID<=435 ) // IBL
357 {
358 int module = (hashID-156) % 20;
359 if (module<4 || module>15)
360 {
361 result = true;
362 }
363 }
364 return result;
365}

◆ isPerFEI3State()

bool PixelAthErrorMonAlg::isPerFEI3State ( const std::string & state) const

Definition at line 513 of file PixelAthErrorMonAlg.cxx.

513 {
514 return (state.find("SEU") != std::string::npos ||
515 state.find("EOC") != std::string::npos ||
516 state.find("Warning") != std::string::npos);
517}

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

◆ parseList()

StatusCode AthMonitorAlgorithm::parseList ( const std::string & line,
std::vector< std::string > & result ) const
virtualinherited

Parse a string into a vector.

The input string is a single long string of all of the trigger names. It parses this string and turns it into a vector, where each element is one trigger or trigger category.

Parameters
lineThe input string.
resultThe parsed output vector of strings.
Returns
StatusCode

Definition at line 345 of file AthMonitorAlgorithm.cxx.

345 {
346 std::string item;
347 std::stringstream ss(line);
348
349 ATH_MSG_DEBUG( "AthMonitorAlgorithm::parseList()" );
350
351 while ( std::getline(ss, item, ',') ) {
352 std::stringstream iss(item); // remove whitespace
353 iss >> item;
354 result.push_back(item);
355 }
356
357 return StatusCode::SUCCESS;
358}
static Double_t ss

◆ 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

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

Reimplemented in HypoBase, and InputMakerBase.

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.

◆ trigChainsArePassed()

bool AthMonitorAlgorithm::trigChainsArePassed ( const std::vector< std::string > & vTrigNames) const
inherited

Check whether triggers are passed.

For the event, use the trigger decision tool to check that at least one of the triggers listed in the supplied vector is passed.

Parameters
vTrigNamesList of trigger names.
Returns
If empty input, default to true. If at least one trigger is specified, returns whether at least one trigger was passed.

Definition at line 203 of file AthMonitorAlgorithm.cxx.

203 {
204
205
206 // If no triggers were given, return true.
207 if (vTrigNames.empty()) return true;
208
209
210 // Trigger: Check if this Algorithm is being run as an Express Stream job.
211 // Events are entering the express stream are chosen randomly, and by chain,
212 // Hence an additional check should be aplied to see if the chain(s)
213 // monitored here are responsible for the event being selected for
214 // the express stream.
215
216 const auto group = m_trigDecTool->getChainGroup(vTrigNames);
218 const auto passedBits = m_trigDecTool->isPassedBits(group);
219 bool expressPass = passedBits & TrigDefs::Express_passed; //bitwise AND
220 if(!expressPass) {
221 return false;
222 }
223 }
224
225 // monitor the event if any of the chains in the chain group passes the event.
226 return group->isPassed();
227
228}
Gaudi::Property< bool > m_enforceExpressTriggers

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

Member Data Documentation

◆ baselayers

list PixelAthMonitoringBase.baselayers = ["ECA","ECC","BLayer","Layer1","Layer2","IBL"]
inherited

Definition at line 25 of file PixelAthMonitoringBase.py.

◆ bcidbinsx

int PixelAthMonitoringBase.bcidbinsx = 3600
inherited

Definition at line 56 of file PixelAthMonitoringBase.py.

◆ btxt

str PixelAthMonitoringBase.btxt = ";eta index of module"
inherited

Definition at line 21 of file PixelAthMonitoringBase.py.

◆ ditxt

str PixelAthMonitoringBase.ditxt = ";disk number"
inherited

Definition at line 23 of file PixelAthMonitoringBase.py.

◆ errbbinsy

list PixelAthMonitoringBase.errbbinsy = [ 17, 17, 17, 17, 17, 27, 27]
inherited

Definition at line 42 of file PixelAthMonitoringBase.py.

◆ errbbsizy

list PixelAthMonitoringBase.errbbsizy = [ 1, 1, 1, 1, 1, 1, 1]
inherited

Definition at line 44 of file PixelAthMonitoringBase.py.

◆ errbminsy

list PixelAthMonitoringBase.errbminsy = [ 0, 0, 0, 0, 0, 0, 0]
inherited

Definition at line 43 of file PixelAthMonitoringBase.py.

◆ ErrCatLabels

list PixelAthMonitoringBase.ErrCatLabels
inherited
Initial value:
= [
("SyncErrors", "Sync Errors (FE/MCC & ROD)"),
("TruncErrors", "Trunc Errors (FE/MCC & ROD)"),
("OpticalErrors", "Preamble/Header Errors"),
("SEUErrors", "SEU Errors"),
("TimeoutErrors", "Timeout Errors")
]

Definition at line 250 of file PixelAthMonitoringBase.py.

◆ ErrCatLabelsNorm

list PixelAthMonitoringBase.ErrCatLabelsNorm
inherited
Initial value:
= [
"SyncErrorsFracPerEvent",
"TruncationErrorsFracPerEvent",
"OpticalErrorsFracPerEvent",
"SEUErrorsFracPerEvent",
"TimeoutErrorsFracPerEvent"
]

Definition at line 258 of file PixelAthMonitoringBase.py.

◆ ErrCatRODModLabels

list PixelAthMonitoringBase.ErrCatRODModLabels
inherited
Initial value:
= [
("SyncErrorsMod", "FE/MCC Sync Errors"),
("SyncErrorsROD", "ROD Sync Errors"),
("TruncErrorsMod", "FE/MCC Trunc Errors"),
("TruncErrorsROD", "ROD Trunc Errors"),
("OpticalErrorsRODMod", "Preamble/Header Errors"),
("SEUErrorsRODMod", "SEU Errors"),
("TimeoutErrorsRODMod", "Timeout Errors")
]

Definition at line 233 of file PixelAthMonitoringBase.py.

◆ ErrCatRODModLabelsNorm

list PixelAthMonitoringBase.ErrCatRODModLabelsNorm
inherited
Initial value:
= [
"SyncErrorsModFracPerEvent",
"SyncErrorsRODFracPerEvent",
"TruncErrorsModFracPerEvent",
"TruncErrorsRODFracPerEvent"
]

Definition at line 243 of file PixelAthMonitoringBase.py.

◆ ErrStateLabelsFEI3

list PixelAthMonitoringBase.ErrStateLabelsFEI3
inherited
Initial value:
= [
("RODTimeout", "ROD Formatter Timeout"),
("RODSyncBCIDErrors", "ROD BCID Sync"),
("RODSyncLVL1IDErrors", "ROD LVL1ID Sync"),
("OpticalErrors", "Preamble/Header"),
("ModSyncLVL1IDErrors", "FE/MCC LVL1ID Sync"),
("ModSyncBCID2Errors", "FE/MCC BCID2 Sync"),
("ModSyncBCID1Errors", "FE/MCC BCID1 Sync"),
("ModTruncEoEOverflowErrors", "FE/MCC EoE Overflow Trunc"),
("ModTruncHitOverflowErrors", "FE/MCC Hit Overflow Trunc"),
("FEWarning", "FE Warning"),
("SEUHitParity", "SEU Hit Parity"),
("SEURegisterParity", "SEU Register Parity"),
("SEUHamming", "SEU Hamming Code"),
("ModTruncEOCErrors", "FE/MCC EoC Trunc"),
("RODTrailerBitErrors", "ROD Trailer Bit"),
("RODTruncHTLimitErrors", "ROD H/T Limit Trunc"),
("RODTruncRODOFErrors", "ROD Overflow Trunc")
]

Definition at line 184 of file PixelAthMonitoringBase.py.

◆ ErrStateLabelsFEI4

list PixelAthMonitoringBase.ErrStateLabelsFEI4
inherited
Initial value:
= [
("RODTimeoutErrors", "ROD Timeout"),
("RODBCIDErrors", "ROD BCID synchronization"),
("RODLVL1IDErrors", "ROD LVL1ID synchronization"),
("RODPreambleErrors", "ROD Preamble"),
("RODTrailerErrors", "ROD Trailer"),
("RODRowColumnErrors", "ROD row-column"),
("RODMaskedLink", "ROD Masked link"),
("RODLimitErrors", "ROD Header Trailer limit"),
("SR0BCIDCounterErrors", "SR0 BCID counter"),
("SR1HammingCode0Errors", "SR1 Hamming code in word 0"),
("SR2HammingCode1Errors", "SR2 Hamming code in word 1"),
("SR3HammingCode2Errors", "SR3 Hamming code in word 2"),
("SR4L1InCounterErrors", "SR4 L1 in counter"),
("SR5L1RequestCounterErrors", "SR5 L1 request counter"),
("SR6L1RegisterErrors", "SR6 L1 register"),
("SR7L1TriggerIDErrors", "SR7 L1 trigger ID"),
("SR8FEReadoutProcessErrors", "SR8 FE readout process"),
("SR15SkipppedTrigCountErrors", "SR15 Skipped trigger counter"),
("SR16TruncatedEventFlagErrors", "SR16 Truncated event"),
("SR24TripleRedundantErrorsCNFGMEM", "SR24 Triple redundant CNFGMEM"),
("SR25WriteRegDataErrors", "SR25 Write register data"),
("SR26AddressErrors", "SR26 Address"),
("SR27OtherCMDDecoderErrors", "SR27 CMD decoder"),
("SR28CMDDecoderBitflipErrors", "SR28 CMD decoder bit flip"),
("SR29TripleRedundantErrorsCMD", "SR29 Triple redundant CMD"),
("SR30DataBusAddressErrors", "SR30 Data bus address"),
("SR31TripleRedundantErrorsEFUSE", "SR31 Triple redundant EFUSE")
]

Definition at line 203 of file PixelAthMonitoringBase.py.

◆ errtbinsy

list PixelAthMonitoringBase.errtbinsy = [ 7, 7, 7, 7, 7, 7, 7]
inherited

Definition at line 45 of file PixelAthMonitoringBase.py.

◆ etatxt

list PixelAthMonitoringBase.etatxt = [ditxt,ditxt,btxt,btxt,btxt,sbtxt]
inherited

Definition at line 29 of file PixelAthMonitoringBase.py.

◆ fei3layers

list PixelAthMonitoringBase.fei3layers = ["ECA","ECC","BLayer","Layer1","Layer2"]
inherited

Definition at line 50 of file PixelAthMonitoringBase.py.

◆ fei4layers

list PixelAthMonitoringBase.fei4layers = ["IBL2D","IBL3D"]
inherited

Definition at line 51 of file PixelAthMonitoringBase.py.

◆ LabelFEX

list PixelAthMonitoringBase.LabelFEX = [LayersDiskFE, LayersDiskFE, ModulesBarrelFE, ModulesBarrelFE, ModulesBarrelFE, ModulesIBL]
inherited

Definition at line 92 of file PixelAthMonitoringBase.py.

◆ LabelFEY

list PixelAthMonitoringBase.LabelFEY = [ModulesFEECA, ModulesFEECC, StavesFEL0, StavesFEL1, StavesFEL2, StavesIBL]
inherited

Definition at line 171 of file PixelAthMonitoringBase.py.

◆ LabelX

list PixelAthMonitoringBase.LabelX = [LayersDisk, LayersDisk, ModulesBarrel, ModulesBarrel, ModulesBarrel, ModulesIBL]
inherited

Definition at line 70 of file PixelAthMonitoringBase.py.

◆ LabelY

list PixelAthMonitoringBase.LabelY = [ModulesECA, ModulesECC, StavesL0, StavesL1, StavesL2, StavesIBL]
inherited

Definition at line 153 of file PixelAthMonitoringBase.py.

◆ layergroups

dict PixelAthMonitoringBase.layergroups = {}
inherited

Definition at line 272 of file PixelAthMonitoringBase.py.

◆ layers

list PixelAthMonitoringBase.layers = ["ECA","ECC","BLayer","Layer1","Layer2","IBL2D","IBL3D"]
inherited

Definition at line 24 of file PixelAthMonitoringBase.py.

◆ LayersDisk

list PixelAthMonitoringBase.LayersDisk = ["Disk 1", "Disk 2", "Disk 3"]
inherited

Definition at line 59 of file PixelAthMonitoringBase.py.

◆ LayersDiskFE

list PixelAthMonitoringBase.LayersDiskFE
inherited
Initial value:
= ["Disk1_FE_8_7","Disk1_FE_9_6","Disk1_FE_10_5","Disk1_FE_11_4","Disk1_FE_12_3","Disk1_FE_13_2","Disk1_FE_14_1","Disk1_FE_15_0",
"Disk2_FE_7_8","Disk2_FE_6_9","Disk2_FE_5_10","Disk2_FE_4_11","Disk2_FE_3_12","Disk2_FE_2_13","Disk2_FE_1_14","Disk2_FE_0_15",
"Disk3_FE_8_7","Disk3_FE_9_6","Disk3_FE_10_5","Disk3_FE_11_4","Disk3_FE_12_3","Disk3_FE_13_2","Disk3_FE_14_1","Disk3_FE_15_0"]

Definition at line 73 of file PixelAthMonitoringBase.py.

◆ lumibinsx

int PixelAthMonitoringBase.lumibinsx = 3000
inherited

Definition at line 54 of file PixelAthMonitoringBase.py.

◆ lumitext

str PixelAthMonitoringBase.lumitext = ";lumi block"
inherited

Definition at line 53 of file PixelAthMonitoringBase.py.

◆ m_dataType

AthMonitorAlgorithm::DataType_t AthMonitorAlgorithm::m_dataType
protectedinherited

Instance of the DataType_t enum.

Definition at line 356 of file AthMonitorAlgorithm.h.

◆ m_dataTypeStr

Gaudi::Property<std::string> AthMonitorAlgorithm::m_dataTypeStr {this,"DataType","userDefined"}
protectedinherited

DataType string pulled from the job option and converted to enum.

Definition at line 358 of file AthMonitorAlgorithm.h.

358{this,"DataType","userDefined"};

◆ m_defaultLBDuration

Gaudi::Property<float> AthMonitorAlgorithm::m_defaultLBDuration {this,"DefaultLBDuration",60.}
protectedinherited

Default duration of one lumi block.

Definition at line 365 of file AthMonitorAlgorithm.h.

365{this,"DefaultLBDuration",60.};

◆ m_detailLevel

Gaudi::Property<int> AthMonitorAlgorithm::m_detailLevel {this,"DetailLevel",0}
protectedinherited

Sets the level of detail used in the monitoring.

Definition at line 366 of file AthMonitorAlgorithm.h.

366{this,"DetailLevel",0};

◆ m_doHeavyIonMon

bool PixelAthErrorMonAlg::m_doHeavyIonMon {}
private

Definition at line 173 of file PixelAthErrorMonAlg.h.

173{};

◆ m_doHighOccupancy

bool PixelAthErrorMonAlg::m_doHighOccupancy {}
private

Definition at line 172 of file PixelAthErrorMonAlg.h.

172{};

◆ m_doLowOccupancy

bool PixelAthErrorMonAlg::m_doLowOccupancy {}
private

Definition at line 171 of file PixelAthErrorMonAlg.h.

171{};

◆ m_doLumiBlock

bool PixelAthErrorMonAlg::m_doLumiBlock {}
private

Definition at line 170 of file PixelAthErrorMonAlg.h.

170{};

◆ m_doOnline

bool PixelAthErrorMonAlg::m_doOnline {}
private

Definition at line 169 of file PixelAthErrorMonAlg.h.

169{};

◆ m_DQFilterTools

ToolHandleArray<IDQFilterTool> AthMonitorAlgorithm::m_DQFilterTools {this,"FilterTools",{}}
protectedinherited

Array of Data Quality filter tools.

Definition at line 346 of file AthMonitorAlgorithm.h.

346{this,"FilterTools",{}};

◆ m_environment

AthMonitorAlgorithm::Environment_t AthMonitorAlgorithm::m_environment
protectedinherited

Instance of the Environment_t enum.

Definition at line 355 of file AthMonitorAlgorithm.h.

◆ m_environmentStr

Gaudi::Property<std::string> AthMonitorAlgorithm::m_environmentStr {this,"Environment","user"}
protectedinherited

Environment string pulled from the job option and converted to enum.

Definition at line 357 of file AthMonitorAlgorithm.h.

357{this,"Environment","user"};

◆ m_EventInfoKey

SG::ReadHandleKey<xAOD::EventInfo> AthMonitorAlgorithm::m_EventInfoKey {this,"EventInfoKey","EventInfo"}
protectedinherited

Key for retrieving EventInfo from StoreGate.

Definition at line 367 of file AthMonitorAlgorithm.h.

367{this,"EventInfoKey","EventInfo"};

◆ m_fileKey

Gaudi::Property<std::string> AthMonitorAlgorithm::m_fileKey {this,"FileKey",""}
protectedinherited

Internal Athena name for file.

Definition at line 363 of file AthMonitorAlgorithm.h.

363{this,"FileKey",""};

◆ m_idcErrContKey

SG::ReadHandleKey<IDCInDetBSErrContainer> PixelAthErrorMonAlg::m_idcErrContKey {this, "PixelByteStreamErrs", "PixelByteStreamErrs", "PixelByteStreamErrs container key"}
private

Definition at line 159 of file PixelAthErrorMonAlg.h.

160{this, "PixelByteStreamErrs", "PixelByteStreamErrs", "PixelByteStreamErrs container key"};

◆ m_lbDurationDataKey

SG::ReadCondHandleKey<LBDurationCondData> AthMonitorAlgorithm::m_lbDurationDataKey {this,"LBDurationCondDataKey","LBDurationCondData","SG Key of LBDurationCondData object"}
protectedinherited

Definition at line 350 of file AthMonitorAlgorithm.h.

351{this,"LBDurationCondDataKey","LBDurationCondData","SG Key of LBDurationCondData object"};

◆ m_lumiDataKey

SG::ReadCondHandleKey<LuminosityCondData> AthMonitorAlgorithm::m_lumiDataKey {this,"LuminosityCondDataKey","LuminosityCondData","SG Key of LuminosityCondData object"}
protectedinherited

Definition at line 348 of file AthMonitorAlgorithm.h.

349{this,"LuminosityCondDataKey","LuminosityCondData","SG Key of LuminosityCondData object"};

◆ m_modData

std::vector<int> PixelAthMonitoringBase::m_modData[PixLayers::NBASELAYERS]
protectedinherited

Definition at line 143 of file PixelAthMonitoringBase.h.

◆ m_pixelCondSummaryTool

ToolHandle<IInDetConditionsTool> PixelAthMonitoringBase::m_pixelCondSummaryTool
protectedinherited
Initial value:
{
this, "PixelConditionsSummaryTool", "PixelConditionsSummaryTool", "Tool to retrieve Pixel Conditions summary"
}

Definition at line 135 of file PixelAthMonitoringBase.h.

135 {
136 this, "PixelConditionsSummaryTool", "PixelConditionsSummaryTool", "Tool to retrieve Pixel Conditions summary"
137 };

◆ m_pixelDetElStatus

SG::ReadHandleKey<InDet::SiDetectorElementStatus> PixelAthMonitoringBase::m_pixelDetElStatus {this, "PixelDetElStatus", "", "Key of SiDetectorElementStatus for Pixel"}
protectedinherited

Optional read handle to get status data to test whether a pixel detector element is good.

If set to e.g. PixelDetectorElementStatus the event data will be used instead of the pixel conditions summary tool.

Definition at line 148 of file PixelAthMonitoringBase.h.

149{this, "PixelDetElStatus", "", "Key of SiDetectorElementStatus for Pixel"};

◆ m_pixelDetElStatusActiveOnly

SG::ReadHandleKey<InDet::SiDetectorElementStatus> PixelAthMonitoringBase::m_pixelDetElStatusActiveOnly {this, "PixelDetElStatusActiveOnly", "", "Key of SiDetectorElementStatus for Pixel which reflects only whether modules or chips are active rather than delivering good data"}
protectedinherited

Optional read handle to get status data to test whether a pixel detector element is active.

The optional event data is used to test whether a pixel detector element is active but not necessarily good. If set to e.g. PixelDetectorElementStatusActiveOnly the event data will be used instead of the pixel conditions summary tool.

Definition at line 155 of file PixelAthMonitoringBase.h.

156{this, "PixelDetElStatusActiveOnly", "", "Key of SiDetectorElementStatus for Pixel which reflects only whether modules or chips are active rather than delivering good data"};

◆ m_pixelid

const PixelID* PixelAthMonitoringBase::m_pixelid {}
protectedinherited

Definition at line 142 of file PixelAthMonitoringBase.h.

142{};

◆ m_pixelReadout

ServiceHandle<InDetDD::IPixelReadoutManager> PixelAthMonitoringBase::m_pixelReadout
protectedinherited
Initial value:
{
this, "PixelReadoutManager", "PixelReadoutManager", "Pixel readout manager"
}

Definition at line 138 of file PixelAthMonitoringBase.h.

139 {
140 this, "PixelReadoutManager", "PixelReadoutManager", "Pixel readout manager"
141 };

◆ m_readoutTechnologyMask

unsigned int PixelAthErrorMonAlg::m_readoutTechnologyMask {}
private

Definition at line 168 of file PixelAthErrorMonAlg.h.

168{};

◆ m_tools

ToolHandleArray<GenericMonitoringTool> AthMonitorAlgorithm::m_tools {this,"GMTools",{}}
protectedinherited

Array of Generic Monitoring Tools.

Definition at line 341 of file AthMonitorAlgorithm.h.

341{this,"GMTools",{}};

◆ m_trigDecTool

PublicToolHandle<Trig::TrigDecisionTool> AthMonitorAlgorithm::m_trigDecTool
protectedinherited

Tool to tell whether a specific trigger is passed.

Definition at line 345 of file AthMonitorAlgorithm.h.

◆ m_triggerChainString

Gaudi::Property<std::string> AthMonitorAlgorithm::m_triggerChainString {this,"TriggerChain",""}
protectedinherited

Trigger chain string pulled from the job option and parsed into a vector.

Definition at line 360 of file AthMonitorAlgorithm.h.

360{this,"TriggerChain",""};

◆ m_trigLiveFractionDataKey

SG::ReadCondHandleKey<TrigLiveFractionCondData> AthMonitorAlgorithm::m_trigLiveFractionDataKey {this,"TrigLiveFractionCondDataKey","TrigLiveFractionCondData", "SG Key of TrigLiveFractionCondData object"}
protectedinherited

Definition at line 352 of file AthMonitorAlgorithm.h.

353{this,"TrigLiveFractionCondDataKey","TrigLiveFractionCondData", "SG Key of TrigLiveFractionCondData object"};

◆ m_useByteStreamFEI3

Gaudi::Property<bool> PixelAthErrorMonAlg::m_useByteStreamFEI3 {this, "UseByteStreamFEI3", false, "Switch of the ByteStream error for FEI3"}
private

Definition at line 163 of file PixelAthErrorMonAlg.h.

164{this, "UseByteStreamFEI3", false, "Switch of the ByteStream error for FEI3"};

◆ m_useByteStreamFEI4

Gaudi::Property<bool> PixelAthErrorMonAlg::m_useByteStreamFEI4 {this, "UseByteStreamFEI4", false, "Switch of the ByteStream error for FEI4"}
private

Definition at line 161 of file PixelAthErrorMonAlg.h.

162{this, "UseByteStreamFEI4", false, "Switch of the ByteStream error for FEI4"};

◆ m_useByteStreamRD53

Gaudi::Property<bool> PixelAthErrorMonAlg::m_useByteStreamRD53 {this, "UseByteStreamRD53", false, "Switch of the ByteStream error for RD53"}
private

Definition at line 165 of file PixelAthErrorMonAlg.h.

166{this, "UseByteStreamRD53", false, "Switch of the ByteStream error for RD53"};

◆ m_useLumi

Gaudi::Property<bool> AthMonitorAlgorithm::m_useLumi {this,"EnableLumi",false}
protectedinherited

Allows use of various luminosity functions.

Definition at line 364 of file AthMonitorAlgorithm.h.

364{this,"EnableLumi",false};

◆ m_vTrigChainNames

std::vector<std::string> AthMonitorAlgorithm::m_vTrigChainNames
protectedinherited

Vector of trigger chain names parsed from trigger chain string.

Definition at line 361 of file AthMonitorAlgorithm.h.

◆ ModulesBarrel

list PixelAthMonitoringBase.ModulesBarrel
inherited
Initial value:
= [
"M6C", "M5C", "M4C", "M3C", "M2C", "M1C", "M0","M1A", "M2A", "M3A", "M4A",
"M5A", "M6A"]

Definition at line 61 of file PixelAthMonitoringBase.py.

◆ ModulesBarrelFE

list PixelAthMonitoringBase.ModulesBarrelFE
inherited
Initial value:
= [
"M6C_FE_8_7","M6C_FE_9_6","M6C_FE_10_5","M6C_FE_11_4","M6C_FE_12_3","M6C_FE_13_2","M6C_FE_14_1","M6C_FE_15_0",
"M5C_FE_8_7","M5C_FE_9_6","M5C_FE_10_5","M5C_FE_11_4","M5C_FE_12_3","M5C_FE_13_2","M5C_FE_14_1","M5C_FE_15_0",
"M4C_FE_8_7","M4C_FE_9_6","M4C_FE_10_5","M4C_FE_11_4","M4C_FE_12_3","M4C_FE_13_2","M4C_FE_14_1","M4C_FE_15_0",
"M3C_FE_8_7","M3C_FE_9_6","M3C_FE_10_5","M3C_FE_11_4","M3C_FE_12_3","M3C_FE_13_2","M3C_FE_14_1","M3C_FE_15_0",
"M2C_FE_8_7","M2C_FE_9_6","M2C_FE_10_5","M2C_FE_11_4","M2C_FE_12_3","M2C_FE_13_2","M2C_FE_14_1","M2C_FE_15_0",
"M1C_FE_8_7","M1C_FE_9_6","M1C_FE_10_5","M1C_FE_11_4","M1C_FE_12_3","M1C_FE_13_2","M1C_FE_14_1","M1C_FE_15_0",
"M0_FE_8_7","M0_FE_9_6","M0_FE_10_5","M0_FE_11_4","M0_FE_12_3","M0_FE_13_2","M0_FE_14_1","M0_FE_15_0",
"M1A_FE_8_7","M1A_FE_9_6","M1A_FE_10_5","M1A_FE_11_4","M1A_FE_12_3","M1A_FE_13_2","M1A_FE_14_1","M1A_FE_15_0",
"M2A_FE_8_7","M2A_FE_9_6","M2A_FE_10_5","M2A_FE_11_4","M2A_FE_12_3","M2A_FE_13_2","M2A_FE_14_1","M2A_FE_15_0",
"M3A_FE_8_7","M3A_FE_9_6","M3A_FE_10_5","M3A_FE_11_4","M3A_FE_12_3","M3A_FE_13_2","M3A_FE_14_1","M3A_FE_15_0",
"M4A_FE_8_7","M4A_FE_9_6","M4A_FE_10_5","M4A_FE_11_4","M4A_FE_12_3","M4A_FE_13_2","M4A_FE_14_1","M4A_FE_15_0",
"M5A_FE_8_7","M5A_FE_9_6","M5A_FE_10_5","M5A_FE_11_4","M5A_FE_12_3","M5A_FE_13_2","M5A_FE_14_1","M5A_FE_15_0",
"M6A_FE_8_7","M6A_FE_9_6","M6A_FE_10_5","M6A_FE_11_4","M6A_FE_12_3","M6A_FE_13_2","M6A_FE_14_1","M6A_FE_15_0"]

Definition at line 77 of file PixelAthMonitoringBase.py.

◆ ModulesECA

list PixelAthMonitoringBase.ModulesECA
inherited
Initial value:
= [
"B01_S2_M1", "B01_S2_M6", "B01_S2_M2", "B01_S2_M5", "B01_S2_M3",
"B01_S2_M4", "B02_S1_M1", "B02_S1_M6", "B02_S1_M2", "B02_S1_M5",
"B02_S1_M3", "B02_S1_M4", "B02_S2_M1", "B02_S2_M6", "B02_S2_M2",
"B02_S2_M5", "B02_S2_M3", "B02_S2_M4", "B03_S1_M1", "B03_S1_M6",
"B03_S1_M2", "B03_S1_M5", "B03_S1_M3", "B03_S1_M4", "B03_S2_M1",
"B03_S2_M6", "B03_S2_M2", "B03_S2_M5", "B03_S2_M3", "B03_S2_M4",
"B04_S1_M1", "B04_S1_M6", "B04_S1_M2", "B04_S1_M5", "B04_S1_M3",
"B04_S1_M4", "B04_S2_M1", "B04_S2_M6", "B04_S2_M2", "B04_S2_M5",
"B04_S2_M3", "B04_S2_M4", "B01_S1_M1", "B01_S1_M6", "B01_S1_M2",
"B01_S1_M5", "B01_S1_M3", "B01_S1_M4"]

Definition at line 94 of file PixelAthMonitoringBase.py.

◆ ModulesECC

list PixelAthMonitoringBase.ModulesECC
inherited
Initial value:
= [
"B01_S2_M4", "B01_S2_M3", "B01_S2_M5", "B01_S2_M2", "B01_S2_M6",
"B01_S2_M1", "B02_S1_M4", "B02_S1_M3", "B02_S1_M5", "B02_S1_M2",
"B02_S1_M6", "B02_S1_M1", "B02_S2_M4", "B02_S2_M3", "B02_S2_M5",
"B02_S2_M2", "B02_S2_M6", "B02_S2_M1", "B03_S1_M4", "B03_S1_M3",
"B03_S1_M5", "B03_S1_M2", "B03_S1_M6", "B03_S1_M1", "B03_S2_M4",
"B03_S2_M3", "B03_S2_M5", "B03_S2_M2", "B03_S2_M6", "B03_S2_M1",
"B04_S1_M4", "B04_S1_M3", "B04_S1_M5", "B04_S1_M2", "B04_S1_M6",
"B04_S1_M1", "B04_S2_M4", "B04_S2_M3", "B04_S2_M5", "B04_S2_M2",
"B04_S2_M6", "B04_S2_M1", "B01_S1_M4", "B01_S1_M3", "B01_S1_M5",
"B01_S1_M2", "B01_S1_M6", "B01_S1_M1"]

Definition at line 105 of file PixelAthMonitoringBase.py.

◆ ModulesFEECA

list PixelAthMonitoringBase.ModulesFEECA = []
inherited

Definition at line 156 of file PixelAthMonitoringBase.py.

◆ ModulesFEECC

list PixelAthMonitoringBase.ModulesFEECC = []
inherited

Definition at line 159 of file PixelAthMonitoringBase.py.

◆ ModulesHead

list PixelAthMonitoringBase.ModulesHead = ["D", "D", "L0", "L1", "L2", "LI"]
inherited

Definition at line 182 of file PixelAthMonitoringBase.py.

◆ ModulesIBL

list PixelAthMonitoringBase.ModulesIBL
inherited
Initial value:
= [
"C8_0", "C8_1", "C7_0", "C7_1", "C6_0", "C6_1", "C5_0", "C5_1", "C4_0", "C4_1", "C3_0", "C3_1", "C2_0", "C2_1",
"C1_0", "C1_1", "A1_0", "A1_1", "A2_0", "A2_1", "A3_0", "A3_1", "A4_0", "A4_1", "A5_0", "A5_1", "A6_0", "A6_1",
"A7_0", "A7_1", "A8_0", "A8_1"]

Definition at line 65 of file PixelAthMonitoringBase.py.

◆ NumLayersDisk

int PixelAthMonitoringBase.NumLayersDisk = 3
inherited

Definition at line 11 of file PixelAthMonitoringBase.py.

◆ NumModulesBarrel

int PixelAthMonitoringBase.NumModulesBarrel = 13
inherited

Definition at line 17 of file PixelAthMonitoringBase.py.

◆ NumModulesDisk

int PixelAthMonitoringBase.NumModulesDisk = 48
inherited

Definition at line 18 of file PixelAthMonitoringBase.py.

◆ NumPP0sEC

int PixelAthMonitoringBase.NumPP0sEC = 24
inherited

Definition at line 19 of file PixelAthMonitoringBase.py.

◆ NumStavesIBL

int PixelAthMonitoringBase.NumStavesIBL = 14
inherited

Definition at line 12 of file PixelAthMonitoringBase.py.

◆ NumStavesL0

int PixelAthMonitoringBase.NumStavesL0 = 22
inherited

Definition at line 13 of file PixelAthMonitoringBase.py.

◆ NumStavesL1

int PixelAthMonitoringBase.NumStavesL1 = 38
inherited

Definition at line 14 of file PixelAthMonitoringBase.py.

◆ NumStavesL2

int PixelAthMonitoringBase.NumStavesL2 = 52
inherited

Definition at line 15 of file PixelAthMonitoringBase.py.

◆ phitext

str PixelAthMonitoringBase.phitext = ";phi index of module"
inherited

Definition at line 30 of file PixelAthMonitoringBase.py.

◆ PP0LabelX

list PixelAthMonitoringBase.PP0LabelX = [PP0sEC, PP0sEC, StavesL0, StavesL1, StavesL2, StavesIBL, StavesIBL]
inherited

Definition at line 179 of file PixelAthMonitoringBase.py.

◆ pp0layers

list PixelAthMonitoringBase.pp0layers = ["ECA","ECC","BLayer","Layer1","Layer2","IBLA","IBLC"]
inherited

Definition at line 47 of file PixelAthMonitoringBase.py.

◆ PP0sEC

list PixelAthMonitoringBase.PP0sEC
inherited
Initial value:
= [
"D1_B01_S2", "D1_B02_S1", "D1_B02_S2", "D1_B03_S1", "D1_B03_S2", "D1_B04_S1", "D1_B04_S2", "D1_B01_S1",
"D2_B01_S2", "D2_B02_S1", "D2_B02_S2", "D2_B03_S1", "D2_B03_S2", "D2_B04_S1", "D2_B04_S2", "D2_B01_S1",
"D3_B01_S2", "D3_B02_S1", "D3_B02_S2", "D3_B03_S1", "D3_B03_S2", "D3_B04_S1", "D3_B04_S2", "D3_B01_S1"]

Definition at line 174 of file PixelAthMonitoringBase.py.

◆ pp0xbins

list PixelAthMonitoringBase.pp0xbins = [ 24, 24, 22, 38, 52, 14, 14]
inherited

Definition at line 48 of file PixelAthMonitoringBase.py.

◆ ReadingDataErrLabels

list PixelAthMonitoringBase.ReadingDataErrLabels
inherited
Initial value:
= [
"Invalid container",
"Invalid collection",
"Container empty"
]

Definition at line 266 of file PixelAthMonitoringBase.py.

◆ runtext

str PixelAthMonitoringBase.runtext = ''
inherited

Definition at line 9 of file PixelAthMonitoringBase.py.

◆ sbtxt

str PixelAthMonitoringBase.sbtxt = ";shifted eta index of module"
inherited

Definition at line 22 of file PixelAthMonitoringBase.py.

◆ StavesFEL0

list PixelAthMonitoringBase.StavesFEL0 = []
inherited

Definition at line 162 of file PixelAthMonitoringBase.py.

◆ StavesFEL1

list PixelAthMonitoringBase.StavesFEL1 = []
inherited

Definition at line 165 of file PixelAthMonitoringBase.py.

◆ StavesFEL2

list PixelAthMonitoringBase.StavesFEL2 = []
inherited

Definition at line 168 of file PixelAthMonitoringBase.py.

◆ StavesIBL

list PixelAthMonitoringBase.StavesIBL
inherited
Initial value:
= [
"S01(0.33)", "S02(0.78)", "S03(1.23)", "S04(1.68)", "S05(2.12)", "S06(2.57)", "S07(3.02)",
"S08(-2.81)", "S09(-2.36)", "S10(-1.91)", "S11(-1.47)", "S12(-1.02)", "S13(-0.57)","S14(-0.12)"]

Definition at line 149 of file PixelAthMonitoringBase.py.

◆ StavesL0

list PixelAthMonitoringBase.StavesL0
inherited
Initial value:
= [
"B11_S2(-0.29)", "B01_S1(0.0)", "B01_S2(0.29)", "B02_S1(0.57)", "B02_S2(0.87)", "B03_S1(1.14)", "B03_S2(1.43)",
"B04_S1(1.71)", "B04_S2(2.0)", "B05_S1(2.28)", "B05_S2(2.57)", "B06_S1(2.86)", "B06_S2(3.14)", "B07_S1(-2.86)",
"B07_S2(-2.57)", "B08_S1(2.28)", "B08_S2(-2.0)", "B09_S1(-1.71)", "B09_S2(-1.43)", "B10_S1(-1.14)",
"B10_S2(-0.86)", "B11_S1(-0.57)"]

Definition at line 125 of file PixelAthMonitoringBase.py.

◆ StavesL00

list PixelAthMonitoringBase.StavesL00
inherited
Initial value:
= [
"B11_S2", "B01_S1", "B01_S2", "B02_S1", "B02_S2", "B03_S1", "B03_S2",
"B04_S1", "B04_S2", "B05_S1", "B05_S2", "B06_S1", "B06_S2", "B07_S1",
"B07_S2", "B08_S1", "B08_S2", "B09_S1", "B09_S2", "B10_S1", "B10_S2",
"B11_S1"]

Definition at line 119 of file PixelAthMonitoringBase.py.

◆ StavesL1

list PixelAthMonitoringBase.StavesL1
inherited
Initial value:
= [
"B01_S1", "B01_S2", "B02_S1", "B02_S2", "B03_S1", "B03_S2", "B04_S1",
"B04_S2", "B05_S1", "B05_S2", "B06_S1", "B06_S2", "B07_S1", "B07_S2",
"B08_S1", "B08_S2", "B09_S1", "B09_S2", "B10_S1", "B10_S2", "B11_S1",
"B11_S2", "B12_S1", "B12_S2", "B13_S1", "B13_S2", "B14_S1", "B14_S2",
"B15_S1", "B15_S2", "B16_S1", "B16_S2", "B17_S1", "B17_S2", "B18_S1",
"B18_S2", "B19_S1", "B19_S2"]

Definition at line 131 of file PixelAthMonitoringBase.py.

◆ StavesL2

list PixelAthMonitoringBase.StavesL2
inherited
Initial value:
= [
"B01_S2", "B02_S1", "B02_S2", "B03_S1", "B03_S2", "B04_S1", "B04_S2",
"B05_S1", "B05_S2", "B06_S1", "B06_S2", "B07_S1", "B07_S2", "B08_S1",
"B08_S2", "B09_S1", "B09_S2", "B10_S1", "B10_S2", "B11_S1", "B11_S2",
"B12_S1", "B12_S2", "B13_S1", "B13_S2", "B14_S1", "B14_S2", "B15_S1",
"B15_S2", "B16_S1", "B16_S2", "B17_S1", "B17_S2", "B18_S1", "B18_S2",
"B19_S1", "B19_S2", "B20_S1", "B20_S2", "B21_S1", "B21_S2", "B22_S1",
"B22_S2", "B23_S1", "B23_S2", "B24_S1", "B24_S2", "B25_S1", "B25_S2",
"B26_S1", "B26_S2", "B01_S1"]

Definition at line 139 of file PixelAthMonitoringBase.py.

◆ totcuts

list PixelAthMonitoringBase.totcuts = [ 15, 15, 15, 15, 15, 4, 4]
inherited

Definition at line 35 of file PixelAthMonitoringBase.py.

◆ xbinsem

list PixelAthMonitoringBase.xbinsem = [ 3, 3, 13, 13, 13, 20]
inherited

Definition at line 36 of file PixelAthMonitoringBase.py.

◆ xbinsfel

list PixelAthMonitoringBase.xbinsfel = [ 24, 24, 104, 104, 104, 32]
inherited

Definition at line 31 of file PixelAthMonitoringBase.py.

◆ xbinsl

list PixelAthMonitoringBase.xbinsl = [ 3, 3, 13, 13, 13, 32]
inherited

Definition at line 26 of file PixelAthMonitoringBase.py.

◆ xbinstotz

list PixelAthMonitoringBase.xbinstotz = [ 3, 3, 13, 13, 13, 20]
inherited

Definition at line 38 of file PixelAthMonitoringBase.py.

◆ xminsem

list PixelAthMonitoringBase.xminsem = [ 0.5, 0.5,-6.5,-6.5,-6.5, -10]
inherited

Definition at line 37 of file PixelAthMonitoringBase.py.

◆ xminsfel

list PixelAthMonitoringBase.xminsfel = [ -0.5, -0.5, -52, -52, -52,-16.5]
inherited

Definition at line 32 of file PixelAthMonitoringBase.py.

◆ xminsl

list PixelAthMonitoringBase.xminsl = [ -0.5, -0.5,-6.5,-6.5,-6.5,-16.5]
inherited

Definition at line 27 of file PixelAthMonitoringBase.py.

◆ xminstotz

list PixelAthMonitoringBase.xminstotz = [ -0.5, -0.5,-0.5,-0.5,-0.5, -0.5]
inherited

Definition at line 39 of file PixelAthMonitoringBase.py.

◆ ybinsfel

list PixelAthMonitoringBase.ybinsfel = [ 96, 96, 44, 76, 104, 14]
inherited

Definition at line 33 of file PixelAthMonitoringBase.py.

◆ ybinsl

list PixelAthMonitoringBase.ybinsl = [ 48, 48, 22, 38, 52, 14]
inherited

Definition at line 28 of file PixelAthMonitoringBase.py.

◆ ztotbinsy

list PixelAthMonitoringBase.ztotbinsy = [ 20, 20, 20, 20, 20, 20, 20]
inherited

Definition at line 40 of file PixelAthMonitoringBase.py.

◆ ztotminsy

list PixelAthMonitoringBase.ztotminsy = [ 19.5, 19.5, 7.5,19.5,19.5, -0.5, -0.5]
inherited

Definition at line 41 of file PixelAthMonitoringBase.py.


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