|
ATLAS Offline Software
|
Go to the documentation of this file.
89 if (febSet.find(
fName)!=febSet.end()) {
94 return StatusCode::SUCCESS;
103 ATH_MSG_DEBUG(
"Plotting switched off, either we are online and custom FEB list is empty, OR something went wrong with the custom list of FEBs passed");
104 return StatusCode::SUCCESS;
113 constexpr
unsigned int ABORT_GAP_START = 3446;
114 constexpr
unsigned int ABORT_GAP_END = 3563;
115 const unsigned int bcid=ctx.eventID().bunch_crossing_id();
118 return StatusCode::SUCCESS;
127 return StatusCode::FAILURE;
149 for (
const LArDigit* pDig : *pLArDigitContainer) {
152 auto febDat=febMap.find(fid);
153 if (febDat!=febMap.end()) {
157 febDat->second.m_digitsAndPed.emplace_back(std::make_pair(pDig,
ped));
164 for (
auto& [febid,febdat] : febMap) {
166 auto chanMean =
Monitored::Collection(
"chanMean",febdat.m_meanSum,[](
const std::pair<int,double>
ch){return ch.second;});
167 auto chanMeanX =
Monitored::Collection(
"chanMeanX",febdat.m_meanSum,[](
const std::pair<int,double>
ch){return ch.first;});
168 auto chanPartSum =
Monitored::Collection(
"chanPartSum",febdat.m_partSum,[](
const std::pair<std::pair<int,int>,
double>
ch){return ch.second;});
169 auto chanPartSumX =
Monitored::Collection(
"chanPartSumX",febdat.m_partSum,[](
const std::pair<std::pair<int,int>,
double>
ch){return std::min(ch.first.first,ch.first.second);});
170 auto chanPartSumY =
Monitored::Collection(
"chanPartSumY",febdat.m_partSum,[](
const std::pair<std::pair<int,int>,
double>
ch){return std::max(ch.first.first,ch.first.second);});
178 return StatusCode::SUCCESS;
208 for (
size_t i1=0;i1<
S;++i1) {
210 const int ch1 = lArOnlineIDHelper->
channel(pDig1->channelID());
212 for (
const short adc : pDig1->samples()) {
216 for (
size_t i2=i1;i2<
S;++i2) {
218 const int ch2 = lArOnlineIDHelper->
channel(pDig2->channelID());
220 const unsigned nADC=
std::min(pDig1->nsamples(),pDig2->nsamples());
221 for (
unsigned i=0;
i<nADC;++
i) {
222 sumSquare+=((pDig1->samples().at(
i)-pedestal1)*(pDig2->samples().at(
i)-pedestal2));
224 m_partSum.emplace_back(std::make_pair(std::make_pair(ch1,ch2),sumSquare));
def retrieve(aClass, aKey=None)
void sumSamples(const LArOnlineID *lArOnlineIDHelper)
virtual float pedestal(const HWIdentifier &id, int gain) const =0
bool isGoodChannel(const HWIdentifier id, const float ped, const LArOnOffIdMapping *cabling, const LArBadChannelCont *bc) const
check if channel is ok for monitoring
Gaudi::Property< std::vector< std::string > > m_problemsToMask
LArBadChannelMask m_bcMask
Handle to bad-channel mask.
SG::ReadCondHandleKey< ILArPedestal > m_keyPedestal
Handle to pedestal.
std::vector< Identifier > ID
PublicToolHandle< Trig::TrigDecisionTool > m_trigDecTool
Tool to tell whether a specific trigger is passed.
std::string find(const std::string &s)
return a remapped string
SG::ReadCondHandleKey< LArBadChannelCont > m_bcContKey
Conditions-Data class holding LAr Bad Channel or Bad Feb information.
std::vector< std::string > m_vTrigChainNames
Vector of trigger chain names parsed from trigger chain string.
int slot(const HWIdentifier id) const
Return the slot number of a hardware cell identifier: slot = [1,15] Slot-ID in top part of the crat...
StatusCode buildBitMask(const std::vector< std::string > &problemsToMask, MsgStream &msg)
Helper class to manipulate strings for LArOnlineID names.
const std::string & key() const
Return the StoreGate ID for the referenced object.
bool cellShouldBeMasked(const LArBadChannelCont *bcCont, const HWIdentifier &hardwareId) const
Gaudi::Property< bool > m_plotsOFF
virtual StatusCode fillHistograms(const EventContext &ctx) const override
adds event to the monitoring histograms
const ServiceHandle< StoreGateSvc > & detStore() const
The standard StoreGateSvc/DetectorStore Returns (kind of) a pointer to the StoreGateSvc.
ValuesCollection< T > Collection(std::string name, const T &collection)
Declare a monitored (double-convertible) collection.
Gaudi::Property< std::string > m_noiseCorrGroupName
the group array
virtual StatusCode initialize() override
initialize
SG::ReadCondHandleKey< LArOnOffIdMapping > m_cablingKey
Handle to cabling.
int channel(const HWIdentifier id) const
Return the channel number of a hardware cell identifier channel = [0,127] in all FEB.
id_range feb_range() const
Liquid Argon digit base class.
std::map< HWIdentifier, perFeb_t > m_febMapModel
::StatusCode StatusCode
StatusCode definition for legacy code.
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...
std::vector< std::pair< const LArDigit *, double > > m_digitsAndPed
Gaudi::Property< std::vector< std::string > > m_FEBlist
list of FEBs to monitor.
std::vector< std::pair< int, double > > m_meanSum
std::vector< std::pair< std::pair< int, int >, double > > m_partSum
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.
StatusCode initialize(bool used=true)
If this object is used as a property, then this should be called during the initialize phase.
virtual ~LArNoiseCorrelationMonAlg()
Default destructor.
HWIdentifier feb_Id(int barrel_ec, int pos_neg, int feedthrough, int slot) const
Create feb_Id from fields.
std::map< std::string, int > m_noiseCorrGroups
Gaudi::Property< bool > m_ignoreKnownBadChannels
bool use to mask the bad channels
ToolHandleArray< GenericMonitoringTool > m_tools
Array of Generic Monitoring Tools.
Internally used data structure.
StatusCode initialize(bool used=true)
setEventNumber setTimeStamp bcid
bool isEMBchannel(const HWIdentifier id) const
virtual StatusCode initialize() override
initialize
int feedthrough(const HWIdentifier id) const
Return the feedthrough of a hardware cell identifier : feedthrough = [0,31] Barrel - A/C side or H/...
SG::ReadHandleKey< LArDigitContainer > m_LArDigitContainerKey
Handle to digits.
const std::string m_abortGapTrig
const LArOnlineID * m_LArOnlineIDHelper
services