![Logo](../../ATLAS-Logo-Square-Blue-RGB.png) |
ATLAS Offline Software
|
Go to the documentation of this file.
16 m_LArOnlineIDHelper(nullptr) {
31 std::vector<std::string>
part;
47 if( !
isMC && badCont->size()==0) {
69 if( !
isMC && mnbCont->size()==0) {
101 if (!noisyRO.isValid())
104 return StatusCode::SUCCESS;
107 unsigned int LBN = eventInfo->
lumiBlock();
110 const std::vector<HWIdentifier>& mnbtightFEB = noisyRO->get_MNBTight_febs();
111 const std::vector<HWIdentifier>& mnbtight_PsVetoFEB = noisyRO->get_MNBTight_PsVeto_febs();
112 const std::vector<HWIdentifier>& mnblooseFEB = noisyRO->get_MNBLoose_febs();
115 std::vector<int> v_candidate_MNBTightFEB;
116 std::vector<int> v_candidate_MNBTight_PsVetoFEB;
117 std::vector<int> v_candidate_MNBLooseFEB;
119 for(
unsigned int iFeb=0; iFeb<mnbtightFEB.size(); iFeb++)
120 v_candidate_MNBTightFEB.push_back(mnbtightFEB.at(iFeb).get_identifier32().get_compact());
122 for(
unsigned int iFeb=0; iFeb<mnbtight_PsVetoFEB.size(); iFeb++)
123 v_candidate_MNBTight_PsVetoFEB.push_back(mnbtight_PsVetoFEB.at(iFeb).get_identifier32().get_compact());
126 for(
unsigned int iFeb=0; iFeb<mnblooseFEB.size(); iFeb++)
127 v_candidate_MNBLooseFEB.push_back(mnblooseFEB.at(iFeb).get_identifier32().get_compact());
130 if(v_candidate_MNBLooseFEB.size() > 0 || v_candidate_MNBTightFEB.size() > 0) {
137 auto mon_candidate_MNBTightFEB =
Monitored::Collection(
"v_candidate_MNBTightFEB", v_candidate_MNBTightFEB);
138 auto mon_candidate_MNBTight_PsVetoFEB =
Monitored::Collection(
"v_candidate_MNBTight_PsVetoFEB", v_candidate_MNBTight_PsVetoFEB);
139 auto mon_candidate_MNBLooseFEB =
Monitored::Collection(
"v_candidate_MNBLooseFEB", v_candidate_MNBLooseFEB);
143 fill(
m_MonGroupName,candidate_MNB_time,candidate_MNB_time_ns,n_candidate_MNBTight_FEB,n_candidate_MNBTight_PsVeto_FEB,n_candidate_MNBLoose_FEB,mon_candidate_MNBTightFEB,mon_candidate_MNBTight_PsVetoFEB,mon_candidate_MNBLooseFEB);
176 if ( burstveto ) algo |= 0x4;
184 unsigned long trigbits = 0;
185 unsigned long L1trigbits = 0;
193 ATH_MSG_DEBUG(
"Trigger words: " << std::hex << trigbits <<
" " << L1trigbits << std::dec);
195 if(!
m_doHisto)
return StatusCode::SUCCESS;
198 const std::vector<HWIdentifier>& noisyFEB = noisyRO->get_noisy_febs();
202 unsigned int NbNoisyFEB = 0;
209 for (
size_t i = 0;
i<noisyFEB.size();
i++) {
230 ATH_MSG_DEBUG(
"MNBTight FEB vector size " << mnbtightFEB.size());
235 for (
size_t i = 0;
i<mnbtightFEB.size();
i++) {
246 if((noisyRO->MNBTightFlaggedPartitions() & partMask[
partition]) != 0){
261 ATH_MSG_DEBUG(
"MNBTight_PsVeto FEB vector size " << mnbtight_PsVetoFEB.size());
262 for (
size_t i = 0;
i<mnbtight_PsVetoFEB.size();
i++) {
273 if((noisyRO->MNBTight_PsVetoFlaggedPartitions() & partMask[
partition]) != 0){
274 slot_PsVetoTight =
unsigned(slot_PsVetoTightCan);
275 FT_PsVetoTight =
unsigned(FT_PsVetoTightCan);
288 ATH_MSG_DEBUG(
"MNBLoose FEB vector size " << mnblooseFEB.size());
289 for (
size_t i = 0;
i<mnblooseFEB.size();
i++) {
300 if((noisyRO->MNBLooseFlaggedPartitions() & partMask[
partition]) != 0){
311 uint8_t BadFEBPartitions = noisyRO->BadFEBFlaggedPartitions();
312 if ( BadFEBPartitions != 0) {
316 if ( (BadFEBPartitions & partMask[
i]) != 0 ) {
329 uint8_t SatTightPartitions = noisyRO->SatTightFlaggedPartitions();
334 if ( (SatTightPartitions & partMask[
i]) != 0 ) {
345 uint8_t MNBTightPartitions = noisyRO->MNBTightFlaggedPartitions();
346 if ( MNBTightPartitions != 0) {
350 if ( (MNBTightPartitions & partMask[
i]) != 0 ) {
360 uint8_t MNBTight_PsVetoPartitions = noisyRO->MNBTight_PsVetoFlaggedPartitions();
361 if ( MNBTight_PsVetoPartitions != 0) {
365 if ( (MNBTight_PsVetoPartitions & partMask[
i]) != 0 ) {
375 uint8_t MNBLoosePartitions = noisyRO->MNBLooseFlaggedPartitions();
376 if ( MNBLoosePartitions != 0) {
380 if ( (MNBLoosePartitions & partMask[
i]) != 0 ) {
389 return StatusCode::SUCCESS;
393 unsigned long triggerbits,
unsigned long L1triggerbits)
const{
396 if ( triggerbits ==0 ) {
401 if ( triggerbits & (0
x1 <<
i) ) {
409 if ( L1triggerbits ==0 ) {
414 if ( L1triggerbits & (0
x1 <<
i) ) {
def retrieve(aClass, aKey=None)
void fillHistogramsOnce(const EventContext &ctx, const bool isMC) const
LArNoisyROMonAlg(const std::string &name, ISvcLocator *pSvcLocator)
PublicToolHandle< Trig::TrigDecisionTool > m_trigDecTool
Tool to tell whether a specific trigger is passed.
Conditions-Data class holding LAr Bad Channel or Bad Feb information.
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...
virtual StatusCode fillHistograms(const EventContext &ctx) const override final
adds event to the monitoring histograms
size_t partitionNumber(const HWIdentifier) const
uint32_t timeStampNSOffset() const
Nanosecond time offset wrt. the time stamp.
@ IS_SIMULATION
true: simulation, false: data
@ LAr
The LAr calorimeter.
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.
Base class for Athena Monitoring Algorithms.
SG::ReadCondHandleKey< LArBadFebCont > m_badFebKey
@ MININOISEBURSTTIGHT_PSVETO
::StatusCode StatusCode
StatusCode definition for legacy code.
Gaudi::Property< std::string > m_MonGroupName
SG::ReadDecorHandleKey< xAOD::EventInfo > m_eventInfoDecorKey
Gaudi::Property< std::vector< std::string > > m_EF_NoiseBurst_Triggers
Gaudi::Property< bool > m_doHisto
HWIdentifier channel_Id(int barrel_ec, int pos_neg, int feedthrough, int slot, int channel) const
create channel identifier from fields
Gaudi::Property< std::vector< std::string > > m_L1_NoiseBurst_Triggers
Gaudi::Property< std::vector< std::string > > m_partitions
BadChanVec::const_iterator const_iterator
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.
SG::ReadHandle< xAOD::EventInfo > GetEventInfo(const EventContext &) const
Return a ReadHandle for an EventInfo object (get run/event numbers, etc.)
SG::ReadCondHandleKey< LArBadFebCont > m_MNBFebKey
uint32_t lumiBlock() const
The current event's luminosity block number.
virtual bool isValid() override final
Can the handle be successfully dereferenced?
ToolHandleArray< GenericMonitoringTool > m_tools
Array of Generic Monitoring Tools.
SG::ReadHandleKey< LArNoisyROSummary > m_inputKey
virtual StatusCode initialize() override final
initialize
virtual StatusCode initialize() override
initialize
std::vector< std::map< std::string, int > > m_histoGroups
int feedthrough(const HWIdentifier id) const
Return the feedthrough of a hardware cell identifier : feedthrough = [0,31] Barrel - A/C side or H/...
def time(flags, cells_name, *args, **kw)
#define ATH_MSG_WARNING(x)
uint32_t timeStamp() const
POSIX time in seconds from 1970. January 1st.
bool isEventFlagBitSet(EventFlagSubDet subDet, size_t bit) const
Check one particular bit of one particular sub-detector.
Gaudi::Property< std::vector< std::string > > m_SubDetNames
Declare a monitored scalar variable.
Gaudi::Property< bool > m_storeLooseMNBFEBs
Gaudi::Property< bool > m_doTrigger
const LArOnlineID * m_LArOnlineIDHelper
bool eventType(EventType type) const
Check for one particular bitmask value.
void fillTriggerHisto(size_t partition, unsigned long triggerbits, unsigned long L1triggerbits) const