Loading [MathJax]/extensions/tex2jax.js
ATLAS Offline Software
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Modules Pages
LArSuperCellMonAlg.cxx
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration
3 */
4 
5 // NAME: LArSuperCellMonAlg.cxx
6 // based on LArCellMonAlg:
7 // L. Morvaj, P.Strizenec, D. Oliveira Damazio - develop for Digital Trigger monitoring (2021)
8 // ********************************************************************
9 #include "LArSuperCellMonAlg.h"
10 
11 
12 #include "CaloDetDescr/CaloDetDescrElement.h"
14 #include "Identifier/Identifier.h"
18 
19 //#include "AthenaMonitoring/DQBadLBFilterTool.h"
20 //#include "AthenaMonitoring/DQAtlasReadyFilterTool.h"
21 
23 #include "AthenaKernel/Units.h"
24 
26 
27 #include <cassert>
28 #include <algorithm>
29 
31 LArSuperCellMonAlg::LArSuperCellMonAlg(const std::string& name, ISvcLocator* pSvcLocator)
32  :AthMonitorAlgorithm(name, pSvcLocator),
33  // m_badChannelMask("BadLArRawChannelMask",this),
34  m_calo_id(nullptr)
35 {
36 }
37 
38 
39 
41 }
42 
45 
46  ATH_MSG_DEBUG("LArSuperCellMonAlg::initialize() start");
47 
48 
49  //Identfier-helpers
51 
56 
59 
60  ATH_MSG_DEBUG("LArSuperCellMonAlg::initialize() is done!");
61 
63 }
64 
65 
66 
68 
69  return StatusCode::SUCCESS;
70 }
71 
72 
74 StatusCode LArSuperCellMonAlg::fillHistograms(const EventContext& ctx) const{
75 
76  ATH_MSG_DEBUG("LArSuperCellMonAlg::fillHistograms() starts");
77 
79  const CaloCellContainer* superCellCont = superCellHdl.cptr();
80  if(!superCellCont){
81  ATH_MSG_ERROR("The requested SC container key " << m_superCellContainerKey.key() << " could not be retrieved. !!!");
82  return StatusCode::SUCCESS;
83  }
84 
86  const CaloCellContainer* superCellRefCont = superCellRefHdl.cptr();
87  if(!superCellRefCont){
88  ATH_MSG_ERROR("The requested SC ref container key " << m_superCellContainerRefKey.key() << " could not be retrieved. !!!");
89  return StatusCode::SUCCESS;
90  }
91 
92  const CaloCellContainer *superCellRecoCont = nullptr;
93  if(m_doSCReco){
95  if (!hSCetRecoContainer.isValid()) {
96  ATH_MSG_ERROR("The requested SC ET reco container key could not be retrieved. !!!");
97  }else{
98  superCellRecoCont = hSCetRecoContainer.cptr();
99  ATH_MSG_DEBUG("SCetRecoContainer.size() " << hSCetRecoContainer->size());
100  }
101  }
102 
103  if (ctx.evt()==0) {
105  const CaloNoise *noisep = *noiseHdl;
106  ATH_CHECK(createPerJobHistograms(superCellCont, noisep));
107  }
108 
109  //get LB
110  auto lumiBlock = Monitored::Scalar<unsigned int>("lumiBlock",0);
111  lumiBlock = ctx.eventID().lumi_block();
112  auto bcid = Monitored::Scalar<unsigned int>("bcid",0);
113  bcid = ctx.eventID().bunch_crossing_id();
114  int bcidFFB = bcid;
115  if (!m_bcDataKey.empty()){
118  }
119 
120  // create local variables to speed up things
121  // per layer
122  std::vector<std::vector<std::string> > nameHistos;
123  for ( auto& layerName : m_layerNames){
124  std::vector<std::string> vec;
125  vec.push_back("superCellEt_"+layerName);
126  vec.push_back("superCelltime_"+layerName);
127  vec.push_back("superCellprovenance_"+layerName);
128  vec.push_back("superCellEta_"+layerName);
129  vec.push_back("superCellPhi_"+layerName);
130  vec.push_back("resolution_"+layerName);
131  vec.push_back("resolutionPass_"+layerName);
132  vec.push_back("resolutionHET_"+layerName);
133  vec.push_back("superCellEtRef_"+layerName);
134  vec.push_back("superCelltimeRef_"+layerName);
135  vec.push_back("superCellprovenanceRef_"+layerName);
136  vec.push_back("superCellEtDiff_"+layerName);
137  nameHistos.push_back(vec);
138  }
139 
140 
141 
143 
144  CaloCellContainer::const_iterator SCit = superCellCont->begin();
145  CaloCellContainer::const_iterator SCit_e = superCellCont->end();
146 
147  std::vector<std::reference_wrapper<Monitored::IMonitoredVariable>> variables;
148 
149  for ( ; SCit!=SCit_e;++SCit) {
150 
151  const CaloCell* superCell = *SCit;
152  variables.clear();
153  // Discard masked cells from monitoring
154  int SCprov = superCell->provenance()&0xFFF;
155  if (m_removeMasked && ((SCprov&0x80)==0x80)) continue;
156  float SCet = superCell->et();
157  const CaloDetDescrElement* SCcaloDDE = superCell->caloDDE();
158  float SCeta,SCphi;
159  unsigned iLyr, iLyrNS;
160  float SCt = superCell->time();
161 
162  getHistoCoordinates(SCcaloDDE, SCeta, SCphi, iLyr, iLyrNS);
163 
164 
165  bool SCpassTime = LArProv::test(SCprov,LArProv::SCTIMEPASS);//SCprov & 0x200;
166  bool SCpassPF = LArProv::test(SCprov,LArProv::SCPASSBCIDMAX);// SCprov & 0x40;
167 
168  const CaloCell* superCellRef = superCellRefCont->findCell( SCcaloDDE->identifyHash() );
169  float SCetRef = superCellRef->et();
170  float SCetDiff = SCet - SCetRef;
171  float resolution = -1000;
172  float resolutionPass = -1000;
173  float resolutionHET = -1000;
174  if ( SCetRef > m_thresholdsForResolution) resolution = 100.0*(SCet-SCetRef)/SCetRef;
175  if ( SCpassTime || SCpassPF ) resolutionPass = resolution;
176  if ( SCet > 4e3 ) resolutionHET=resolution;
177 
178  // real monitoring business
179  auto MSCet = Monitored::Scalar<float>("superCellEt",SCet);
180  auto MSCt = Monitored::Scalar<float>("superCelltime",SCt);
181  auto MSCprov = Monitored::Scalar<int>("superCellprovenance",SCprov);
182  auto MSCeta = Monitored::Scalar<float>("superCellEta",SCeta);
183  auto MSCphi = Monitored::Scalar<float>("superCellPhi",SCphi);
184  auto MSCres = Monitored::Scalar<float>("resolution",resolution);
185  auto MSCresPass = Monitored::Scalar<float>("resolutionPass",resolutionPass);
186  auto MSCresHET = Monitored::Scalar<float>("resolutionHET",resolutionHET);
187  auto MSCetRef = Monitored::Scalar<float>("superCellEtRef",SCetRef);
188  auto MSCtRef = Monitored::Scalar<float>("superCelltimeRef",superCellRef->time());
189  auto MSCprovRef = Monitored::Scalar<int>("superCellprovenanceRef",(superCellRef->provenance()&0xFFF));
190  auto MSCetDiff = Monitored::Scalar<float>("superCellEtDiff",SCetDiff);
191  variables.push_back(MSCet);
192  variables.push_back(MSCt);
193  variables.push_back(MSCprov);
194  variables.push_back(MSCeta);
195  if ( SCetRef > m_thresholdsForResolution ) variables.push_back(MSCres);
196  if ( (SCetRef > m_thresholdsForResolution ) && (SCpassTime || SCpassPF ) ) variables.push_back(MSCresPass);
197  if ( (SCetRef > m_thresholdsForResolution ) && (SCet > 4e3 ) ) variables.push_back(MSCresHET);
198  variables.push_back(MSCphi);
199  variables.push_back(MSCetRef);
200  // let us put conditional to force building the linearity plot
201  // only when the new signal passes BCID
202  variables.push_back(MSCtRef);
203  variables.push_back(MSCprovRef);
204  variables.push_back(MSCetDiff);
205 
206  // per layer
207  auto layerName=m_layerNames[iLyr];
208  auto LMSCet = Monitored::Scalar<float>(nameHistos[iLyr][0],SCet);
209  auto LMSCt = Monitored::Scalar<float>(nameHistos[iLyr][1],SCt);
210  auto LMSCprov = Monitored::Scalar<int>(nameHistos[iLyr][2],SCprov);
211  auto LMSCeta = Monitored::Scalar<float>(nameHistos[iLyr][3],SCeta);
212  auto LMSCphi = Monitored::Scalar<float>(nameHistos[iLyr][4],SCphi);
213  auto LMSCres = Monitored::Scalar<float>(nameHistos[iLyr][5],resolution);
214  auto LMSCresPass = Monitored::Scalar<float>(nameHistos[iLyr][6],resolutionPass);
215  auto LMSCresHET = Monitored::Scalar<float>(nameHistos[iLyr][7],resolutionHET);
216  auto LMSCetRef = Monitored::Scalar<float>(nameHistos[iLyr][8],SCetRef);
217  auto LMSCtRef = Monitored::Scalar<float>(nameHistos[iLyr][9],superCellRef->time());
218  auto LMSCprovRef = Monitored::Scalar<int>(nameHistos[iLyr][10],(superCellRef->provenance()&0xFFF));
219 
220  auto MBCIDFFB = Monitored::Scalar<int>("BCID",bcidFFB);
221  auto LMSCetDiff = Monitored::Scalar<float>(nameHistos[iLyr][11],SCetDiff);
222  variables.push_back(LMSCet);
223  variables.push_back(LMSCt);
224  variables.push_back(LMSCprov);
225  variables.push_back(LMSCeta);
226  if ( SCetRef > m_thresholdsForResolution ) variables.push_back(LMSCres);
227  if ( (SCetRef > m_thresholdsForResolution ) && (SCpassTime || SCpassPF ) ) variables.push_back(LMSCresPass);
228  if ( (SCetRef > m_thresholdsForResolution ) && (SCet > 4e3 ) ) variables.push_back(LMSCresHET);
229  variables.push_back(LMSCphi);
230  variables.push_back(LMSCetRef);
231  if ( SCpassTime || SCpassPF ) variables.push_back(LMSCtRef);
232  variables.push_back(LMSCprovRef);
233  variables.push_back(MBCIDFFB);
234  variables.push_back(LMSCetDiff);
235 
236  if(m_doSCReco){
237  auto MSCtReco = Monitored::Scalar<float>("superCelltimeReco",0.);
238  auto MSCetReco = Monitored::Scalar<float>("superCellEtReco",0.);
239  auto LMSCtReco = Monitored::Scalar<float>("superCelltimeReco_"+layerName,0.);
240  const CaloCell* superCellReco = superCellRecoCont->findCell( SCcaloDDE->identifyHash() );
241  if(superCellReco) {
242  float SCetReco = superCellReco->et();
243  float SCtimeReco = superCellReco->time();
244  MSCtReco = SCtimeReco;
245  MSCetReco = SCetReco;
246  LMSCtReco = SCtimeReco;
247  variables.push_back(MSCtReco);
248  variables.push_back(LMSCtReco);
249  variables.push_back(MSCetReco);
250  }
251  }
253 
254  } // end loop over SC
255 
256 
257 
258 
259  ATH_MSG_DEBUG("LArSuperCellMonAlg::fillLarHists() is done");
260  return StatusCode::SUCCESS;
261 }
262 
263 
265 
266  ATH_MSG_INFO("Creating the once-per-job histograms");
267 
268  if(!noisep){
269  ATH_MSG_ERROR("Do not have DB noise, doing nothing !!!");
270  return StatusCode::SUCCESS;
271  }
272 
273  //The following histograms can be considered constants for one job
274  //(in fact, they are constant for an entire run or even run-periode)
275  //ActiveCells in eta/phi (to normalize 1D occupancy plots)
276  //BadChannel word
277  //Database noise
278 
279  auto doDatabaseNoisePlot = Monitored::Scalar<bool>("doDatabaseNoisePlot",m_doDatabaseNoiseVsEtaPhi);
280 
281  // if(!doDatabaseNoisePlot && !doCellsActiveEtaPlot && !doCellsActivePhiPlot) {
282  if(!doDatabaseNoisePlot) {
283  ATH_MSG_INFO("No once-per-job histogram requested");
284  return StatusCode::SUCCESS;
285  }
286 
287 
288  //filling:
289 
291  CaloCellContainer::const_iterator it_e = cellCont->end();
292  for ( ; it!=it_e;++it) {
293  const CaloCell* cell = *it;
294  Identifier id = cell->ID();
295  bool is_lar=m_calo_id->is_lar(id);
296  if(!is_lar) continue;
297  const CaloDetDescrElement* caloDDEl=cell->caloDDE();
298  float celleta, cellphi;
299  unsigned iLyr, iLyrNS;
300 
301 
302  getHistoCoordinates(caloDDEl, celleta, cellphi, iLyr, iLyrNS);
303 
304  auto mon_eta = Monitored::Scalar<float>("celleta_"+m_layerNames[iLyr],celleta);
305  auto mon_phi = Monitored::Scalar<float>("cellphi_"+m_layerNames[iLyr],cellphi);
306  auto cellnoisedb = Monitored::Scalar<float>("cellnoisedb_"+m_layerNames[iLyr],noisep->getNoise(id,cell->gain()));
307 
308  fill(m_MonGroupName,cellnoisedb,mon_eta,mon_phi);
309 
310 
311  }//end loop over cells
312 
313  return StatusCode::SUCCESS;
314 }
315 
316 
317 
318 std::string LArSuperCellMonAlg::strToLower(const std::string& input) const {
319  std::string output;
320  for (const auto& c : input) {
321  output.push_back(std::tolower(c));
322  }
323  return output;
324 }
325 
326 
327 
328 void LArSuperCellMonAlg::getHistoCoordinates(const CaloDetDescrElement* dde, float& celleta, float& cellphi, unsigned& iLyr, unsigned& iLyrNS) const {
329 
330  celleta=dde->eta_raw();
331  cellphi=dde->phi_raw();
332 
333  int calosample=dde->getSampling();
334  if (dde->is_lar_em_endcap_inner()) calosample-=1; //Here, we consider the two layers of the EMEC IW as EME1 and EME2 instad of layer 2 and 3
335  iLyrNS=m_caloSamplingToLyrNS.at(calosample); //will throw if out of bounds
336  if ((iLyrNS==EMB1NS || iLyrNS==EMB2NS) && m_calo_id->region(dde->identify())==1) {
337  //We are in the awkward region 1 of the EM Barrel
338  //Looking at the image at http://atlas.web.cern.ch/Atlas/GROUPS/LIQARGEXT/TDR/figures6/figure6-17.eps
339  //may be useful to understand what's going on here.
340 
341  //In brief: Region 1, layer 1 is closer related ot the middle compartment (aka layer 2)
342  // and region 1, layer 2 closer related to the back compartment (aka layer 3)
343  iLyrNS+=1;
344 
345  //Layer 2: 0<eta<1.4 + 1.4<eta<1.475, deta = 0.025. 3 rows of cells from region 1
346  //Layer 3: 0<eta<1.35 (deta=0.050) + 1.4<eta<1.475 (deta = 0.075). 1 row of cell from region 1 with different dEta
347  }
348 
349  const unsigned side=(celleta>0) ? 0 : 1; //Value >0 means A-side
350  iLyr=iLyrNS*2+side; //Getting LayerEnum value. This logic works because of the way the enums LayerEnum and LayerEnumNoSides are set up.
351  return;
352 }
353 
354 
python.PyKernel.retrieve
def retrieve(aClass, aKey=None)
Definition: PyKernel.py:110
CaloDetDescrElement::is_lar_em_endcap_inner
bool is_lar_em_endcap_inner() const
cell belongs to the inner wheel of EM end cap
Definition: CaloDetDescrElement.cxx:113
DataModel_detail::const_iterator
Const iterator class for DataVector/DataList.
Definition: DVLIterator.h:82
LArSuperCellMonAlg::m_superCellContainerRefKey
SG::ReadHandleKey< CaloCellContainer > m_superCellContainerRefKey
Definition: LArSuperCellMonAlg.h:55
CaloCell_Base_ID::region
int region(const Identifier id) const
LAr field values (NOT_VALID == invalid request)
ReadCellNoiseFromCool.cell
cell
Definition: ReadCellNoiseFromCool.py:53
checkCoolLatestUpdate.variables
variables
Definition: checkCoolLatestUpdate.py:13
SG::ReadCondHandle
Definition: ReadCondHandle.h:44
ATH_MSG_INFO
#define ATH_MSG_INFO(x)
Definition: AthMsgStreamMacros.h:31
LArSuperCellMonAlg.h
AtlasDetectorID::is_lar
bool is_lar(Identifier id) const
Definition: AtlasDetectorID.h:689
LArProv::SCPASSBCIDMAX
@ SCPASSBCIDMAX
Definition: LArProvenance.h:25
SG::ReadHandle
Definition: StoreGate/StoreGate/ReadHandle.h:67
CaloDetDescrElement
This class groups all DetDescr information related to a CaloCell. Provides a generic interface for al...
Definition: Calorimeter/CaloDetDescr/CaloDetDescr/CaloDetDescrElement.h:66
LArSuperCellMonAlg::m_doSCReco
BooleanProperty m_doSCReco
Definition: LArSuperCellMonAlg.h:96
skel.it
it
Definition: skel.GENtoEVGEN.py:407
LArSuperCellMonAlg::m_doDatabaseNoiseVsEtaPhi
BooleanProperty m_doDatabaseNoiseVsEtaPhi
Definition: LArSuperCellMonAlg.h:94
vec
std::vector< size_t > vec
Definition: CombinationsGeneratorTest.cxx:9
SG::VarHandleKey::key
const std::string & key() const
Return the StoreGate ID for the referenced object.
Definition: AthToolSupport/AsgDataHandles/Root/VarHandleKey.cxx:141
LArSuperCellMonAlg::m_thresholdsForResolution
FloatProperty m_thresholdsForResolution
Definition: LArSuperCellMonAlg.h:110
CaloCell::provenance
uint16_t provenance() const
get provenance (data member)
Definition: CaloCell.h:338
LArSuperCellMonAlg::m_calo_id
const CaloCell_ID * m_calo_id
Definition: LArSuperCellMonAlg.h:143
SG::VarHandleKey::empty
bool empty() const
Test if the key is blank.
Definition: AthToolSupport/AsgDataHandles/Root/VarHandleKey.cxx:150
LArSuperCellMonAlg::m_layerNames
StringArrayProperty m_layerNames
Definition: LArSuperCellMonAlg.h:83
CaloCell::time
float time() const
get time (data member)
Definition: CaloCell.h:352
CaloNoise::getNoise
float getNoise(const IdentifierHash h, const int gain) const
Accessor by IdentifierHash and gain.
Definition: CaloNoise.h:34
Dedxcorrection::resolution
double resolution[nGasTypes][nParametersResolution]
Definition: TRT_ToT_Corrections.h:46
LArSuperCellMonAlg::m_superCellContainerKey
SG::ReadHandleKey< CaloCellContainer > m_superCellContainerKey
Definition: LArSuperCellMonAlg.h:54
CaloDetDescrManager.h
Definition of CaloDetDescrManager.
CaloDetDescrElement::eta_raw
float eta_raw() const
cell eta_raw
Definition: Calorimeter/CaloDetDescr/CaloDetDescr/CaloDetDescrElement.h:350
CaloCell_ID.h
AthCommonDataStore< AthCommonMsg< Gaudi::Algorithm > >::detStore
const ServiceHandle< StoreGateSvc > & detStore() const
The standard StoreGateSvc/DetectorStore Returns (kind of) a pointer to the StoreGateSvc.
Definition: AthCommonDataStore.h:95
TRT::Hit::side
@ side
Definition: HitInfo.h:83
AthMonitorAlgorithm
Base class for Athena Monitoring Algorithms.
Definition: AthMonitorAlgorithm.h:36
CxxUtils::vec
typename vecDetail::vec_typedef< T, N >::type vec
Define a nice alias for the vectorized type.
Definition: vec.h:207
LArSuperCellMonAlg::m_bcDataKey
SG::ReadCondHandleKey< BunchCrossingCondData > m_bcDataKey
Property: Bunch crossing data (MC only) (conditions input).
Definition: LArSuperCellMonAlg.h:60
CaloDetDescrElement::identify
Identifier identify() const override final
cell identifier
Definition: CaloDetDescrElement.cxx:63
LArSuperCellMonAlg::m_MonGroupName
Gaudi::Property< std::string > m_MonGroupName
Definition: LArSuperCellMonAlg.h:62
ATH_MSG_ERROR
#define ATH_MSG_ERROR(x)
Definition: AthMsgStreamMacros.h:33
CheckAppliedSFs.e3
e3
Definition: CheckAppliedSFs.py:264
LArSuperCellMonAlg::LArSuperCellMonAlg
LArSuperCellMonAlg(const std::string &name, ISvcLocator *pSvcLocator)
Definition: LArSuperCellMonAlg.cxx:31
LArSuperCellMonAlg::~LArSuperCellMonAlg
~LArSuperCellMonAlg()
Definition: LArSuperCellMonAlg.cxx:40
EL::StatusCode
::StatusCode StatusCode
StatusCode definition for legacy code.
Definition: PhysicsAnalysis/D3PDTools/EventLoop/EventLoop/StatusCode.h:22
LArSuperCellMonAlg::fillHistograms
virtual StatusCode fillHistograms(const EventContext &ctx) const override final
adds event to the monitoring histograms
Definition: LArSuperCellMonAlg.cxx:74
ATH_MSG_DEBUG
#define ATH_MSG_DEBUG(x)
Definition: AthMsgStreamMacros.h:29
CaloCell::caloDDE
const CaloDetDescrElement * caloDDE() const
get pointer to CaloDetDescrElement (data member)
Definition: CaloCell.h:305
tolower
void tolower(std::string &s)
Definition: AthenaSummarySvc.cxx:111
PlotPulseshapeFromCool.input
input
Definition: PlotPulseshapeFromCool.py:106
BunchCrossingCondData::BunchCrossings
@ BunchCrossings
Distance in units of 25 nanoseconds.
Definition: BunchCrossingCondData.h:132
CaloCell::et
virtual double et() const override final
get et
Definition: CaloCell.h:407
ATH_CHECK
#define ATH_CHECK
Definition: AthCheckMacros.h:40
AthMonitorAlgorithm::fill
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.
SG::VarHandleKey::initialize
StatusCode initialize(bool used=true)
If this object is used as a property, then this should be called during the initialize phase.
Definition: AthToolSupport/AsgDataHandles/Root/VarHandleKey.cxx:103
LArProv::SCTIMEPASS
@ SCTIMEPASS
Definition: LArProvenance.h:30
LArSuperCellMonAlg::EMB1NS
@ EMB1NS
Definition: LArSuperCellMonAlg.h:106
LArSuperCellMonAlg::strToLower
std::string strToLower(const std::string &input) const
Definition: LArSuperCellMonAlg.cxx:318
BunchCrossingCondData::distanceFromFront
int distanceFromFront(const bcid_type bcid, const BunchDistanceType type=NanoSec) const
The distance of the specific bunch crossing from the front of the train.
Definition: BunchCrossingCondData.cxx:38
CaloCellContainer::findCell
const CaloCell * findCell(const IdentifierHash theHash) const
fast find method given identifier hash.
Definition: CaloCellContainer.cxx:345
CaloNoise
Definition: CaloNoise.h:16
LArSuperCellMonAlg::initThresh
StatusCode initThresh()
Definition: LArSuperCellMonAlg.cxx:67
HWIdentifier.h
name
std::string name
Definition: Control/AthContainers/Root/debug.cxx:240
LArProv::test
bool test(const uint16_t prov, const LArProvenance check)
Definition: LArProvenance.h:38
CaloDetDescrElement::identifyHash
IdentifierHash identifyHash() const override final
cell subcalo hash same as subcalo_hash(), but kept for backward compatibility
Definition: Calorimeter/CaloDetDescr/CaloDetDescr/CaloDetDescrElement.h:424
SG::CondHandleKey::initialize
StatusCode initialize(bool used=true)
xAOD::bcid
setEventNumber setTimeStamp bcid
Definition: EventInfo_v1.cxx:133
Units.h
Wrapper to avoid constant divisions when using units.
CaloCellContainer.h
CaloCellContainer
Container class for CaloCell.
Definition: CaloCellContainer.h:55
AthMonitorAlgorithm::initialize
virtual StatusCode initialize() override
initialize
Definition: AthMonitorAlgorithm.cxx:18
DataVector::end
const_iterator end() const noexcept
Return a const_iterator pointing past the end of the collection.
CaloCell
Data object for each calorimeter readout cell.
Definition: CaloCell.h:57
CaloDetDescrElement::getSampling
CaloCell_ID::CaloSample getSampling() const
cell sampling
Definition: Calorimeter/CaloDetDescr/CaloDetDescr/CaloDetDescrElement.h:395
LArSuperCellMonAlg::initialize
virtual StatusCode initialize() override final
initialize
Definition: LArSuperCellMonAlg.cxx:44
LArSuperCellMonAlg::m_superCellContainerRecoKey
SG::ReadHandleKey< CaloCellContainer > m_superCellContainerRecoKey
Definition: LArSuperCellMonAlg.h:56
LArSuperCellMonAlg::m_noiseCDOKey
SG::ReadCondHandleKey< CaloNoise > m_noiseCDOKey
Definition: LArSuperCellMonAlg.h:69
LArProvenance.h
LArSuperCellMonAlg::m_removeMasked
BooleanProperty m_removeMasked
Definition: LArSuperCellMonAlg.h:111
LArSuperCellMonAlg::m_caloSamplingToLyrNS
const std::map< unsigned, LayerEnumNoSides > m_caloSamplingToLyrNS
Definition: LArSuperCellMonAlg.h:119
Monitored::Scalar
Declare a monitored scalar variable.
Definition: MonitoredScalar.h:34
xAOD::lumiBlock
setTeId lumiBlock
Definition: L2StandAloneMuon_v1.cxx:327
CaloGain.h
SG::AllowEmpty
@ AllowEmpty
Definition: StoreGate/StoreGate/VarHandleKey.h:30
LArSuperCellMonAlg::getHistoCoordinates
void getHistoCoordinates(const CaloDetDescrElement *dde, float &celleta, float &cellphi, unsigned &iLyr, unsigned &iLyrNS) const
Definition: LArSuperCellMonAlg.cxx:328
LArSuperCellMonAlg::EMB2NS
@ EMB2NS
Definition: LArSuperCellMonAlg.h:106
python.compressB64.c
def c
Definition: compressB64.py:93
DataVector::begin
const_iterator begin() const noexcept
Return a const_iterator pointing at the beginning of the collection.
CaloDetDescrElement::phi_raw
float phi_raw() const
cell phi_raw
Definition: Calorimeter/CaloDetDescr/CaloDetDescr/CaloDetDescrElement.h:352
LArSuperCellMonAlg::createPerJobHistograms
StatusCode createPerJobHistograms(const CaloCellContainer *cellcont, const CaloNoise *noisep) const
Definition: LArSuperCellMonAlg.cxx:264
Identifier
Definition: IdentifierFieldParser.cxx:14