|
ATLAS Offline Software
|
Go to the documentation of this file.
14 m_onlineHelper(nullptr),
15 m_nbOfFebBlocksTotal(-1)
27 return StatusCode::FAILURE;
33 return StatusCode::FAILURE;
42 std::vector<std::string>
part;
58 bool eventRejected =
false;
59 std::bitset<13> rejectionBits;
60 std::vector<int> febInErrorTree(0);
61 std::unordered_set<unsigned int> chanids;
65 if(pLArAccDigitContainer.
isValid()){
71 if(pLArAccDigitContainer->
empty())
return StatusCode::SUCCESS;
73 for (
auto itDig: * pLArAccDigitContainer) {
74 unsigned int id = (itDig->hardwareID()).get_identifier32().get_compact();
85 unsigned lumi_block = thisEvent->
lumiBlock();
93 return StatusCode::FAILURE;
96 if (hdrCont->
empty()) {
100 if (!lArFebErrorSummary.
isValid()) {
102 return StatusCode::FAILURE;
105 uint32_t firstEventType = (*hdrCont->
begin())->DetEventType();
109 float larEventSize = 0;
114 for (
auto it: * hdrCont) {
121 unsigned int partitionNb_dE =
returnPartition(barrel_ec,pos_neg,ftmon,slmon);
122 unsigned int subdet = partitionNb_dE / 2;
125 nfeb[partitionNb_dE]++ ;
127 ATH_MSG_WARNING(
"Unknown partition number: "<< partitionNb_dE <<
" not filling !");
130 larEventSize += (
float) (
it->RodRawDataSize() +
it->RodResults1Size() +
it->RodResults2Size());
135 if (eventType == 4 &&
it->RodRawDataSize() != 0) eventType = 14;
146 bool currentFebStatus =
false;
149 if ( feberrorSummary != 0 ){
158 fillErrorsSummary(partitionNb_dE,
ft,slot,feberrorSummary,lar_inerror, rejectionBits, currentFebStatus, eventRejected);
160 ATH_MSG_WARNING(
"Unknown partition number: "<< partitionNb_dE <<
" not filling !");
165 ATH_MSG_WARNING(
"Summarry FEB error: "<< feberrorSummary <<
" The histogram not created !");
174 for(
auto nf: nfeb) nbOfFeb+=nf;
176 bool newHighWaterMarkNFebBlocksTotal =
false;
179 newHighWaterMarkNFebBlocksTotal =
true;
188 unsigned subdet =
i / 2;
197 if (febInErrorTree.size()>=1 || newHighWaterMarkNFebBlocksTotal || nbOfFeb <
m_nbOfFebBlocksTotal ){
198 evtrej=1; evt_yield = 100.;
199 if (febInErrorTree.size()>=4) evtrej=2;
207 return StatusCode::SUCCESS;
215 if ((
ft == 3 ||
ft == 10 ||
ft == 16 ||
ft == 22) && (sl > 2))
part =
be*2+
pn + 2;
225 if (
error & (1<<0) ){
226 unsigned subdet = partitNb_2 / 2;
230 currentFebStatus =
true;
231 rejectionBits.set(0);
236 if (
error & (1<<1) ){
237 unsigned subdet = partitNb_2 / 2;
241 currentFebStatus =
true;
242 rejectionBits.set(1);
247 if (
error & (1<<2) ){
248 unsigned subdet = partitNb_2 / 2;
252 currentFebStatus =
true;
253 rejectionBits.set(2);
258 if (
error & (1<<3) ){
259 unsigned subdet = partitNb_2 / 2;
263 currentFebStatus =
true;
264 rejectionBits.set(3);
269 if (
error & (1<<4) ){
270 unsigned subdet = partitNb_2 / 2;
274 currentFebStatus =
true;
275 rejectionBits.set(4);
280 if (
error & (1<<5) ){
281 unsigned subdet = partitNb_2 / 2;
285 currentFebStatus =
true;
286 rejectionBits.set(5);
291 if (
error & (1<<6) ){
292 unsigned subdet = partitNb_2 / 2;
296 currentFebStatus =
true;
297 rejectionBits.set(6);
302 if (
error & (1<<7) ){
303 unsigned subdet = partitNb_2 / 2;
307 currentFebStatus =
true;
308 rejectionBits.set(7);
313 if (
error & (1<<8) ){
314 unsigned subdet = partitNb_2 / 2;
318 currentFebStatus =
true;
319 rejectionBits.set(8);
324 if (
error & (1<<9) ){
325 unsigned subdet = partitNb_2 / 2;
329 currentFebStatus =
true;
330 rejectionBits.set(9);
336 if (
error & (1<<11) ){
337 unsigned subdet = partitNb_2 / 2;
341 currentFebStatus =
true;
342 rejectionBits.set(10);
347 if (
error & (1<<12) ){
350 unsigned subdet = partitNb_2 / 2;
354 currentFebStatus =
true;
355 rejectionBits.set(11);
361 if (
error & (1<<13) ){
362 unsigned subdet = partitNb_2 / 2;
366 currentFebStatus =
true;
367 rejectionBits.set(12);
373 if (currentFebStatus){
374 unsigned subdet = partitNb_2 / 2;
380 eventRejected =
true;
Environment_t environment() const
Accessor functions for the environment.
const LArOnlineID * m_onlineHelper
Gaudi::Property< std::vector< std::string > > m_SubDetNames
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...
Identifier32 get_identifier32() const
Get the 32-bit version Identifier, will be invalid if >32 bits needed.
id_iterator feb_begin() const
Returns an iterator pointing to a feb identifier collection.
const std::string & key() const
Return the StoreGate ID for the referenced object.
bool empty() const
Test if the key is blank.
int barrel_ec(const HWIdentifier id) const
Return the position barrel or endcap of a hardware cell identifier: barrel_ec = [0,...
@ LAr
The LAr calorimeter.
value_type get_compact() const
Get the compact id.
std::vector< std::map< std::string, int > > m_histoGroups
const ServiceHandle< StoreGateSvc > & detStore() const
The standard StoreGateSvc/DetectorStore Returns (kind of) a pointer to the StoreGateSvc.
@ Error
The sub-detector issued an error.
Base class for Athena Monitoring Algorithms.
uint16_t feb_error(HWIdentifier febid) const
get error for feb
std::atomic< int > m_nbOfFebBlocksTotal
Gaudi::Property< std::vector< std::string > > m_partitions
void fillErrorsSummary(unsigned int partitNb_2, int ft, int slot, uint16_t error, bool lar_inerror, std::bitset< 13 > &rejectionBits, bool ¤tFebStatus, bool &eventRejected) const
Gaudi::Property< std::string > m_MonGroupName
::StatusCode StatusCode
StatusCode definition for legacy code.
LArCalibPedMonAlg(const std::string &name, ISvcLocator *pSvcLocator)
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...
SG::ReadDecorHandleKey< xAOD::EventInfo > m_eventInfoDecorKey
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.)
uint32_t lumiBlock() const
The current event's luminosity block number.
Header file to be included by clients of the Monitored infrastructure.
virtual bool isValid() override final
Can the handle be successfully dereferenced?
id_iterator feb_end() const
ToolHandleArray< GenericMonitoringTool > m_tools
Array of Generic Monitoring Tools.
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< LArAccumulatedDigitContainer > m_accDigitContainerKey
#define ATH_MSG_WARNING(x)
virtual StatusCode fillHistograms(const EventContext &ctx) const override
Called each event.
unsigned int returnPartition(int be, int pn, int ft, int sl) const
virtual StatusCode initialize() override
Overwrite dummy method from AlgTool.
SG::ReadHandleKey< LArFebHeaderContainer > m_hdrContKey
EventFlagErrorState errorState(EventFlagSubDet subDet) const
Get the error state for a particular sub-detector.
Handle class for reading a decoration on an object.
Gaudi::Property< bool > m_ignoreMissingHeaderEMB
Declare a monitored scalar variable.
SG::ReadHandleKey< LArFebErrorSummary > m_lArFebErrorSummaryKey
bool empty() const noexcept
Returns true if the collection is empty.
const_iterator begin() const noexcept
Return a const_iterator pointing at the beginning of the collection.
Gaudi::Property< bool > m_ignoreMissingHeaderPS