|
ATLAS Offline Software
|
#include <LArNoisyROTool.h>
|
| LArNoisyROTool ()=delete |
|
| LArNoisyROTool (const std::string &type, const std::string &name, const IInterface *parent) |
| Constructor with parameters: More...
|
|
virtual | ~LArNoisyROTool ()=default |
| Destructor: More...
|
|
virtual StatusCode | initialize () |
|
virtual std::unique_ptr< LArNoisyROSummary > | process (const EventContext &, const CaloCellContainer *, const std::set< unsigned int > *, const std::vector< HWIdentifier > *, const LArHVNMap *, const CaloDetDescrManager *, const LArHVIdMapping *) const |
|
ServiceHandle< StoreGateSvc > & | evtStore () |
| The standard StoreGateSvc (event store) Returns (kind of) a pointer to the StoreGateSvc . More...
|
|
const ServiceHandle< StoreGateSvc > & | evtStore () const |
| The standard StoreGateSvc (event store) Returns (kind of) a pointer to the StoreGateSvc . More...
|
|
const ServiceHandle< StoreGateSvc > & | detStore () const |
| The standard StoreGateSvc/DetectorStore Returns (kind of) a pointer to the StoreGateSvc . More...
|
|
virtual StatusCode | sysInitialize () override |
| Perform system initialization for an algorithm. More...
|
|
virtual StatusCode | sysStart () override |
| Handle START transition. More...
|
|
virtual std::vector< Gaudi::DataHandle * > | inputHandles () const override |
| Return this algorithm's input handles. More...
|
|
virtual std::vector< Gaudi::DataHandle * > | outputHandles () const override |
| Return this algorithm's output handles. More...
|
|
Gaudi::Details::PropertyBase & | declareProperty (Gaudi::Property< T > &t) |
|
Gaudi::Details::PropertyBase * | declareProperty (const std::string &name, SG::VarHandleKey &hndl, const std::string &doc, const SG::VarHandleKeyType &) |
| Declare a new Gaudi property. More...
|
|
Gaudi::Details::PropertyBase * | declareProperty (const std::string &name, SG::VarHandleBase &hndl, const std::string &doc, const SG::VarHandleType &) |
| Declare a new Gaudi property. More...
|
|
Gaudi::Details::PropertyBase * | declareProperty (const std::string &name, SG::VarHandleKeyArray &hndArr, const std::string &doc, const SG::VarHandleKeyArrayType &) |
|
Gaudi::Details::PropertyBase * | declareProperty (const std::string &name, T &property, const std::string &doc, const SG::NotHandleType &) |
| Declare a new Gaudi property. More...
|
|
Gaudi::Details::PropertyBase * | declareProperty (const std::string &name, T &property, const std::string &doc="none") |
| Declare a new Gaudi property. More...
|
|
void | updateVHKA (Gaudi::Details::PropertyBase &) |
|
MsgStream & | msg () const |
|
MsgStream & | msg (const MSG::Level lvl) const |
|
bool | msgLvl (const MSG::Level lvl) const |
|
Definition at line 42 of file LArNoisyROTool.h.
◆ FEBEvtStatMap
◆ FEBEvtStatMapCstIt
◆ FEBEvtStatMapIt
◆ HVlinesStatMap
◆ StoreGateSvc_t
◆ LArNoisyROTool() [1/2]
LArNoisyROTool::LArNoisyROTool |
( |
| ) |
|
|
delete |
◆ LArNoisyROTool() [2/2]
LArNoisyROTool::LArNoisyROTool |
( |
const std::string & |
type, |
|
|
const std::string & |
name, |
|
|
const IInterface * |
parent |
|
) |
| |
Constructor with parameters:
Definition at line 21 of file LArNoisyROTool.cxx.
28 declareInterface<ILArNoisyROTool >(
this);
◆ ~LArNoisyROTool()
virtual LArNoisyROTool::~LArNoisyROTool |
( |
| ) |
|
|
virtualdefault |
◆ declareGaudiProperty() [1/4]
specialization for handling Gaudi::Property<SG::VarHandleKeyArray>
Definition at line 170 of file AthCommonDataStore.h.
175 hndl.documentation());
◆ declareGaudiProperty() [2/4]
specialization for handling Gaudi::Property<SG::VarHandleKey>
Definition at line 156 of file AthCommonDataStore.h.
161 hndl.documentation());
◆ declareGaudiProperty() [3/4]
specialization for handling Gaudi::Property<SG::VarHandleBase>
Definition at line 184 of file AthCommonDataStore.h.
189 hndl.documentation());
◆ declareGaudiProperty() [4/4]
◆ declareProperty() [1/6]
Declare a new Gaudi property.
- Parameters
-
name | Name of the property. |
hndl | Object holding the property value. |
doc | Documentation string for the property. |
This is the version for types that derive from SG::VarHandleBase
. The property value object is put on the input and output lists as appropriate; then we forward to the base class.
Definition at line 245 of file AthCommonDataStore.h.
250 this->declare(hndl.
vhKey());
251 hndl.
vhKey().setOwner(
this);
253 return PBASE::declareProperty(
name,hndl,
doc);
◆ declareProperty() [2/6]
Declare a new Gaudi property.
- Parameters
-
name | Name of the property. |
hndl | Object holding the property value. |
doc | Documentation string for the property. |
This is the version for types that derive from SG::VarHandleKey
. The property value object is put on the input and output lists as appropriate; then we forward to the base class.
Definition at line 221 of file AthCommonDataStore.h.
229 return PBASE::declareProperty(
name,hndl,
doc);
◆ declareProperty() [3/6]
◆ declareProperty() [4/6]
Declare a new Gaudi property.
- Parameters
-
name | Name of the property. |
property | Object holding the property value. |
doc | Documentation string for the property. |
This is the generic version, for types that do not derive from SG::VarHandleKey
. It just forwards to the base class version of declareProperty
.
Definition at line 333 of file AthCommonDataStore.h.
338 return PBASE::declareProperty(
name, property,
doc);
◆ declareProperty() [5/6]
Declare a new Gaudi property.
- Parameters
-
name | Name of the property. |
property | Object holding the property value. |
doc | Documentation string for the property. |
This dispatches to either the generic declareProperty
or the one for VarHandle/Key/KeyArray.
Definition at line 352 of file AthCommonDataStore.h.
◆ declareProperty() [6/6]
◆ detStore()
◆ evtStore() [1/2]
◆ evtStore() [2/2]
◆ extraDeps_update_handler()
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
◆ initialize()
StatusCode LArNoisyROTool::initialize |
( |
| ) |
|
|
virtual |
Definition at line 51 of file LArNoisyROTool.cxx.
54 ATH_MSG_FATAL(
"Configuration problem: LArNoisyROTool assumes that the QFactor cut to declare a channel noisy is softer than the QFactor cut to declare the quality saturated !" );
55 return StatusCode::FAILURE;
59 ATH_MSG_FATAL(
"Configuration problem: LArNoisyROTool assumes that MNBLooseCut is smaller than MNBTightCut" );
60 return StatusCode::FAILURE;
85 return StatusCode::SUCCESS;
◆ inputHandles()
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.
◆ interfaceID()
static const InterfaceID& LArNoisyROTool::interfaceID |
( |
| ) |
|
|
static |
◆ msg() [1/2]
◆ msg() [2/2]
◆ msgLvl()
◆ outputHandles()
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.
◆ partitionNumber()
◆ process()
Implements ILArNoisyROTool.
Definition at line 89 of file LArNoisyROTool.cxx.
93 if(doHVline && ( !nCellsperLine || !cddm || !hvid)) {
94 ATH_MSG_ERROR(
"HV line flagging asked, but missing ingrediences, switching off !!");
100 if(!cellContainer)
return noisyRO;
108 unsigned int NsaturatedTightCutBarrelA = 0;
109 unsigned int NsaturatedTightCutBarrelC = 0;
110 unsigned int NsaturatedTightCutEMECA = 0;
111 unsigned int NsaturatedTightCutEMECC = 0;
116 for ( ; cellItr != cellItrEnd; ++cellItr )
138 if (
sideA ) { NsaturatedTightCutBarrelA++; }
139 else { NsaturatedTightCutBarrelC++; }
143 if (
sideA ) { NsaturatedTightCutEMECA++; }
144 else { NsaturatedTightCutEMECC++; }
157 FEBStats[FEBindex].addBadChannel(
channel);
162 std::vector<HWIdentifier> hvlines;
164 for(
unsigned int i=0;
i<hvlines.size(); ++
i) {
165 if(HVStats.contains(hvlines[
i])) HVStats[hvlines[
i]] += 1;
else HVStats[hvlines[
i]]=1;
172 uint8_t SatTightPartitions = 0;
177 bool badSaturatedTightCut = (SatTightPartitions != 0);
178 if ( badSaturatedTightCut ) noisyRO-> SetSatTightFlaggedPartitions(SatTightPartitions);
183 ATH_MSG_VERBOSE(
" candidate FEB " <<
it->first <<
" with " <<
it->second.badChannels() <<
" bad channels");
194 unsigned int associatedPSFEB =
m_mapPSFEB.find(
it->first)->second;
195 if (associatedPSFEB != 0){
196 if (FEBStats.count(associatedPSFEB) == 0) noisyRO->add_MNBTight_PsVeto_feb(
HWIdentifier(
it->first));
223 unsigned int NBadFEBEMECA = 0;
unsigned int NBadFEBEMECA_W = 0;
224 unsigned int NBadFEBEMECC = 0;
unsigned int NBadFEBEMECC_W = 0;
225 unsigned int NBadFEBEMBA = 0;
unsigned int NBadFEBEMBA_W = 0;
226 unsigned int NBadFEBEMBC = 0;
unsigned int NBadFEBEMBC_W = 0;
228 const std::vector<HWIdentifier>& badfebs = noisyRO->get_noisy_febs();
242 if (knownBadFEBs->find(int_id)!=knownBadFEBs->end())
weight=2;
247 NBadFEBEMBA_W = NBadFEBEMBA_W +
weight;
251 NBadFEBEMBC_W = NBadFEBEMBC_W +
weight;
258 NBadFEBEMECA_W = NBadFEBEMECA_W +
weight;
262 NBadFEBEMECC_W = NBadFEBEMECC_W +
weight;
273 if ( BadFEBPartitions != 0 ) noisyRO-> SetBadFEBFlaggedPartitions(BadFEBPartitions);
275 uint8_t BadFEBPartitions_W = 0;
280 if ( BadFEBPartitions_W != 0 ) noisyRO-> SetBadFEB_WFlaggedPartitions(BadFEBPartitions_W);
286 uint8_t MNBTight_PsVetoPartition=0;
289 std::array<unsigned,5> nTightMNBFEBSperPartition{};
290 std::array<unsigned,5> nTight_PsVetoMNBFEBSperPartition{};
291 std::array<unsigned,5> nLooseMNBFEBSperPartition{};
294 if (statIt!=FEBStats.end()) {
301 if (
unsigned int associatedPSFEB =
found->second; associatedPSFEB != 0){
302 if (FEBStats.count(associatedPSFEB) == 0) (nTight_PsVetoMNBFEBSperPartition[
partitionNumber(febid)])++;
315 for (
unsigned iP=0;iP<4;++iP) {
316 ATH_MSG_DEBUG(
"Partition " << iP <<
": Found " << nLooseMNBFEBSperPartition[iP] <<
" MNB FEBs with more than " <<
m_MNBLooseCut <<
" bad-Q channels" );
317 ATH_MSG_DEBUG(
"Partition " << iP <<
": Found " << nTightMNBFEBSperPartition[iP] <<
" MNB FEBs with more than " <<
m_MNBTightCut <<
" bad-Q channels" );
318 if (nLooseMNBFEBSperPartition[iP]>0) MNBLoosePartition |=
m_partitionMask[iP];
319 if (nTightMNBFEBSperPartition[iP]>0) MNBTightPartition |=
m_partitionMask[iP];
320 if (nTight_PsVetoMNBFEBSperPartition[iP]>0) MNBTight_PsVetoPartition |=
m_partitionMask[iP];
324 noisyRO->SetMNBTightFlaggedPartitions(MNBTightPartition);
325 noisyRO->SetMNBTight_PsVetoFlaggedPartitions(MNBTight_PsVetoPartition);
326 noisyRO->SetMNBLooseFlaggedPartitions(MNBLoosePartition);
328 if(!hvid || !nCellsperLine )
return noisyRO;
331 unsigned int NBadHVEMECA = 0;
332 unsigned int NBadHVEMECC = 0;
333 unsigned int NBadHVEMBA = 0;
334 unsigned int NBadHVEMBC = 0;
335 unsigned int NBadHVHECA = 0;
336 unsigned int NBadHVHECC = 0;
337 unsigned int NBadHVFCALA = 0;
338 unsigned int NBadHVFCALC = 0;
341 for ( HVlinesStatMap::const_iterator
it = HVStats.begin();
it != HVStats.end(); ++
it ) {
342 ATH_MSG_DEBUG(ctx.eventID().event_number()<<
" candidate HVline " <<
it->first <<
" with " <<
it->second <<
" bad channels, out of "<<nCellsperLine->
HVNcell(
HWIdentifier(
it->first))<<
" channels");
345 noisyRO->add_noisy_hvline(hwd);
352 case 0:
case 1:{NBadHVEMBC += 1;
break;}
353 case 2:
case 3:{NBadHVEMECC += 1;
break;}
354 case 4: {NBadHVHECC += 1;
break;}
355 case 5: {NBadHVFCALC += 1;
break;}
360 case 0: {
switch(
part){
361 case 0:
case 1:{NBadHVEMBA += 1;
break;}
362 case 2:
case 3:{NBadHVEMECA += 1;
break;}
363 case 4: {NBadHVHECA += 1;
break;}
364 case 5: {NBadHVFCALA += 1;
break;}
383 if ( BadHVPartitions != 0 ) noisyRO-> SetBadHVlinesPartitions(BadHVPartitions);
◆ renounce()
◆ renounceArray()
◆ sysInitialize()
◆ sysStart()
Handle START transition.
We override this in order to make sure that conditions handle keys can cache a pointer to the conditions container.
◆ updateVHKA()
◆ m_BadChanFracPerHVline
float LArNoisyROTool::m_BadChanFracPerHVline {} |
|
private |
◆ m_BadChanPerFEB
unsigned int LArNoisyROTool::m_BadChanPerFEB {} |
|
private |
◆ m_BadChanPerPA
unsigned int LArNoisyROTool::m_BadChanPerPA = 0U |
|
private |
◆ m_cablingKey
◆ m_calo_id
◆ m_CellQualityCut
unsigned int LArNoisyROTool::m_CellQualityCut {} |
|
private |
◆ m_detStore
◆ m_doHVline
bool LArNoisyROTool::m_doHVline {} |
|
private |
◆ m_elecID
◆ m_evtStore
◆ m_hvMapTool
◆ m_ignore_front_innerwheel_cells
bool LArNoisyROTool::m_ignore_front_innerwheel_cells {} |
|
private |
◆ m_ignore_masked_cells
bool LArNoisyROTool::m_ignore_masked_cells {} |
|
private |
◆ m_mapPSFEB
std::unordered_map<unsigned int,unsigned int> LArNoisyROTool::m_mapPSFEB |
|
private |
◆ m_MinBadFEB
unsigned int LArNoisyROTool::m_MinBadFEB {} |
|
private |
◆ m_MinBadHV
unsigned int LArNoisyROTool::m_MinBadHV {} |
|
private |
◆ m_MNBLooseCut
unsigned int LArNoisyROTool::m_MNBLooseCut {} |
|
private |
◆ m_MNBTight_PsVetoCut
std::vector<unsigned int> LArNoisyROTool::m_MNBTight_PsVetoCut |
|
private |
◆ m_MNBTightCut
unsigned int LArNoisyROTool::m_MNBTightCut {} |
|
private |
◆ m_onlineID
◆ m_partitionMask
std::array<uint8_t,4> LArNoisyROTool::m_partitionMask {} |
|
private |
◆ m_SaturatedCellEnergyTightCut
float LArNoisyROTool::m_SaturatedCellEnergyTightCut {} |
|
private |
◆ m_SaturatedCellQualityCut
unsigned int LArNoisyROTool::m_SaturatedCellQualityCut {} |
|
private |
◆ m_SaturatedCellTightCut
unsigned int LArNoisyROTool::m_SaturatedCellTightCut {} |
|
private |
◆ m_SaturatedCellTightCutEvents
unsigned int LArNoisyROTool::m_SaturatedCellTightCutEvents = 0U |
|
private |
◆ m_varHandleArraysDeclared
◆ m_vhka
The documentation for this class was generated from the following files:
def retrieve(aClass, aKey=None)
Const iterator class for DataVector/DataList.
Gaudi::Details::PropertyBase & declareProperty(Gaudi::Property< T > &t)
bool is_em_endcap(const Identifier id) const
test if the id belongs to the EM Endcap
StoreGateSvc_t m_evtStore
Pointer to StoreGate (event store by default)
Identifier32 get_identifier32() const
Get the 32-bit version Identifier, will be invalid if >32 bits needed.
std::vector< SG::VarHandleKeyArray * > m_vhka
id_iterator feb_begin() const
Returns an iterator pointing to a feb identifier collection.
#define ATH_MSG_VERBOSE(x)
int barrel_ec(const HWIdentifier id) const
Return the position barrel or endcap of a hardware cell identifier: barrel_ec = [0,...
value_type get_compact() const
Get the compact id.
const ServiceHandle< StoreGateSvc > & detStore() const
The standard StoreGateSvc/DetectorStore Returns (kind of) a pointer to the StoreGateSvc.
virtual void setOwner(IDataHandleHolder *o)=0
bool is_em(const Identifier id) const
test if the id belongs to LArEM
int channel(const HWIdentifier id) const
Return the channel number of a hardware cell identifier channel = [0,127] in all FEB.
bool isEMECchannel(const HWIdentifier id) const override final
int sampling(const Identifier id) const
LAr field values (NOT_VALID == invalid request)
int zside(const HWIdentifier id) const
Return an integer corresponding to the side of an hardware electrode identifier.
HWIdentifier channel_Id(int barrel_ec, int pos_neg, int feedthrough, int slot, int channel) const
create channel identifier from fields
bool is_em_endcap_inner(const Identifier id) const
test if the id belongs to the EM Endcap inner wheel
int pos_neg(const HWIdentifier id) const
Return the side of a hardware cell identifier pos_neg = [0,1] positive-side or negative-side Barrel...
StoreGateSvc_t m_detStore
Pointer to StoreGate (detector store by default)
int detector(const HWIdentifier id) const
Return an integer corresponding to the detector of an hardware electrode identifier.
HWIdentifier feb_Id(int barrel_ec, int pos_neg, int feedthrough, int slot) const
Create feb_Id from fields.
unsigned constexpr int sideA
virtual void renounce()=0
std::conditional< std::is_base_of< SG::VarHandleKeyArray, T >::value, VarHandleKeyArrayType, type2 >::type type
id_iterator feb_end() const
bool is_em_barrel(const Identifier id) const
test if the id belongs to the EM barrel
StatusCode initialize(bool used=true)
bool isEMBchannel(const HWIdentifier id) const
const_iterator end() const noexcept
Return a const_iterator pointing past the end of the collection.
int feedthrough(const HWIdentifier id) const
Return the feedthrough of a hardware cell identifier : feedthrough = [0,31] Barrel - A/C side or H/...
Data object for each calorimeter readout cell.
#define ATH_MSG_WARNING(x)
short HVNcell(const HWIdentifier &chid) const
SG::VarHandleKey & vhKey()
Return a non-const reference to the HandleKey.
std::string channel_name(const HWIdentifier id) const
Return a string corresponding to a feedthrough name given an identifier.
Gaudi::Details::PropertyBase & declareGaudiProperty(Gaudi::Property< T > &hndl, const SG::VarHandleKeyType &)
specialization for handling Gaudi::Property<SG::VarHandleKey>
const std::vector< HWIdentifier > & getLArElectrodeIDvec(HWIdentifier &hvlineId) const
Return a vector of LArElectrodeID corresponding to a given LArHVLineID.
const_iterator begin() const noexcept
Return a const_iterator pointing at the beginning of the collection.
Summary information for noisy LAr preamp / FEBs.