ATLAS Offline Software
L1CaloPMTScoresMon.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 // ********************************************************************
6 //
7 // NAME: L1CaloPMTScoresMon.cxx
8 // PACKAGE: TrigT1Monitoring
9 //
10 // AUTHOR: Peter Faulkner
11 //
12 // ********************************************************************
13 
14 #include <cmath>
15 
16 #include "GaudiKernel/MsgStream.h"
17 #include "GaudiKernel/StatusCode.h"
19 
20 #include "LWHists/TH2F_LW.h"
21 
23 
24 #include "CaloEvent/CaloCell.h"
26 #include "CaloDetDescr/CaloDetDescrElement.h"
28 
29 #include "TileEvent/TileCell.h"
33 
34 #include "Identifier/Identifier.h"
37 
41 
43 
48 
49 #include "L1CaloPMTScoresMon.h"
50 // ============================================================================
51 namespace LVL1 {
52 // ============================================================================
54 
55 /*---------------------------------------------------------*/
57  const std::string & name,
58  const IInterface* parent)
60  m_ttTool("LVL1::L1TriggerTowerTool/L1TriggerTowerTool"),
61  m_errorTool("LVL1::TrigT1CaloMonErrorTool/TrigT1CaloMonErrorTool"),
62  m_histTool("LVL1::TrigT1CaloLWHistogramTool/TrigT1CaloLWHistogramTool"),
63  m_ttIdTools("LVL1::L1CaloTTIdTools/L1CaloTTIdTools"),
64  m_tileBadChanTool("TileBadChanTool"),
65  m_tileHWID(0),
66  m_events(0),
67  m_histBooked(false),
68  m_h_hadPMTScore(0),
69  m_h_hadDisabled(0)
70 /*---------------------------------------------------*/
71 {
72  declareProperty("TileBadChanTool", m_tileBadChanTool);
73  declareProperty("CaloCellContainer", m_caloCellContainerName = "AllCalo");
74  declareProperty("xAODTriggerTowerContainer",
76  declareProperty("PathInRootFile",
77  m_PathInRootFile = "LVL1_Interfaces/Calorimeter") ;
78 
79 }
80 
81 /*---------------------------------------------------------*/
83 /*---------------------------------------------------------*/
84 {
85 }
86 
87 /*---------------------------------------------------------*/
89 /*---------------------------------------------------------*/
90 {
91  msg(MSG::INFO) << "Initializing " << name() << endmsg;
92 
93  ATH_CHECK( m_cellMatch.retrieve() );
94 
95  StatusCode sc;
96 
98  if (sc.isFailure()) return sc;
99 
100  sc = m_ttIdTools.retrieve();
101  if (sc.isFailure()) {
102  msg(MSG::ERROR) << "Unable to locate tool L1CaloTTIdTools" << endmsg;
103  return sc;
104  }
105 
106  sc = m_ttTool.retrieve();
107  if (sc.isFailure()) {
108  msg(MSG::ERROR) << "Unable to locate tool L1TriggerTowerTool" << endmsg;
109  return sc;
110  }
111 
112  sc = m_errorTool.retrieve();
113  if( sc.isFailure() ) {
114  msg(MSG::ERROR) << "Unable to locate Tool TrigT1CaloMonErrorTool"
115  << endmsg;
116  return sc;
117  }
118 
119  sc = m_histTool.retrieve();
120  if (sc.isFailure()) {
121  msg(MSG::ERROR) << "Unable to locate Tool TrigT1CaloLWHistogramTool"
122  << endmsg;
123  return sc;
124  }
125 
126  sc = detStore()->retrieve(m_tileHWID);
127  if (sc.isFailure()) {
128  msg(MSG::ERROR) << "Unable to retrieve TileHWID helper from DetectorStore" << endmsg;
129  return sc;
130  }
131  sc = m_tileBadChanTool.retrieve();
132  if (sc.isFailure()) {
133  msg(MSG::ERROR) << "Could not access tileBadChanTool" << endmsg;
134  return sc;
135  }
136 
138 
139  return StatusCode::SUCCESS;
140 
141 }
142 
143 /*---------------------------------------------------------*/
145 /*---------------------------------------------------------*/
146 {
147  return StatusCode::SUCCESS;
148 }
149 
150 /*---------------------------------------------------------*/
152 /*---------------------------------------------------------*/
153 {
154 
155  msg(MSG::DEBUG) << "in L1CaloPMTScoresMon::bookHistograms" << endmsg;
156 
158  // book histograms that are only made in the online environment...
159  }
160 
162  // book histograms that are only relevant for cosmics data...
163  }
164 
165  //if ( newLumiBlockFlag()) { }
166 
167  if ( newRunFlag() ) {
168 
170  MonGroup Calo_PMTScore( this, m_PathInRootFile+"/PMTGainScores",
171  run, attr, "", "lowerLB" );
172  MonGroup Calo_PMTScoreNow( this, m_PathInRootFile+"/PMTGainScores/PMTCurrent",
173  run, attr, "", "lowerLB" );
174 
175  m_histTool->setMonGroup(&Calo_PMTScoreNow);
176 
177  TH2F_LW* hist = 0;
178  m_h_hadPMTScore = m_histTool->bookPPMHadEtaVsPhi(
179  "had_PMTScore", "Tile PMT Gain Score");
181  m_v_hadPMTScores[0] = m_histTool->bookPPMHadEtaVsPhi(
182  "had_PMTScore_a", "Tile PMT Gain Score A Layer");
183  m_v_hadPMTScores[1] = m_histTool->bookPPMHadEtaVsPhi(
184  "had_PMTScore_bc", "Tile PMT Gain Score BC Layers");
185  m_v_hadPMTScores[2] = m_histTool->bookPPMHadEtaVsPhi(
186  "had_PMTScore_d", "Tile PMT Gain Score D Layer");
187 
188  m_histTool->setMonGroup(&Calo_PMTScore);
189 
190  m_h_hadDisabled = m_histTool->bookPPMHadEtaVsPhi(
191  "had_disabled", "Tile Disabled Towers");
192 
193  m_histTool->unsetMonGroup();
194  m_histBooked = true;
195  m_events = 0;
196 
197  StatusCode sc = m_ttTool->retrieveConditions();
198  if(!sc.isSuccess()) {
199  msg(MSG::WARNING) << "Conditions not retrieved " << endmsg;
200  }
201  }
202 
203  return StatusCode::SUCCESS;
204 
205 }
206 
207 /*---------------------------------------------------------*/
209 /*---------------------------------------------------------*/
210 {
211  if (m_events > 0) return StatusCode::SUCCESS;
212 
214 
215  const bool debug = msgLvl(MSG::DEBUG);
216  if (debug) msg(MSG::DEBUG) << "in fillHistograms()" << endmsg;
217 
218  if (!m_histBooked) {
219  if (debug) msg(MSG::DEBUG) << "Histogram(s) not booked" << endmsg;
220  return StatusCode::SUCCESS;
221  }
222 
223  // Skip events believed to be corrupt
224 
225  if (m_errorTool->corrupt()) {
226  if (debug) msg(MSG::DEBUG) << "Skipping corrupt event" << endmsg;
227  return StatusCode::SUCCESS;
228  }
229 
230  StatusCode sc;
231 
232  //Retreive Calo Cell collection from SG
233 
234  const CaloCellContainer* caloCellContainer = 0;
235  sc = evtStore()->retrieve(caloCellContainer, m_caloCellContainerName);
236  if(!sc.isSuccess() || !caloCellContainer) {
237  msg(MSG::WARNING) << "No CaloCellContainer found at AllCalo" << endmsg;
238  return StatusCode::SUCCESS;
239  }
240 
241  ++m_events;
242 
243  // =========================================================================
244  // ================= CaloCells ============================================
245  // =========================================================================
246 
247  // KW CHECK IF THIS IS OK!!!!
248 
249  CaloCellContainer::const_iterator CaloCellIterator = caloCellContainer->begin();
250  CaloCellContainer::const_iterator CaloCellIteratorEnd = caloCellContainer->end();
251 
252  for (; CaloCellIterator != CaloCellIteratorEnd; ++CaloCellIterator) {
253 
254  const CaloCell* caloCell(*CaloCellIterator);
255  const CaloDetDescrElement* caloDDE = caloCell->caloDDE();
256  if (!caloDDE->is_tile()) continue;
257 
258  //const Identifier cellId(caloCell->ID());
259  const Identifier invalidId(0);
260  Identifier ttId1(0);
261  Identifier ttId2(0);
262 
263  m_cellMatch->matchCell2Tower(**cabling, caloCell, ttId1, ttId2);
264 
265  if (ttId1 != invalidId) {
266  const double eta = m_ttIdTools->IDeta(ttId1);
267  const double phi = m_ttIdTools->IDphi(ttId1);
268  CaloCell_ID::CaloSample sampling = caloDDE->getSampling();
269  int sample = sampling;
271  if (sampling == CaloCell_ID::TileGap1 || sampling == CaloCell_ID::TileGap2 ||
272  sampling == CaloCell_ID::TileGap3) sample++;
273  const double pmtScore = tileNonNominal(caloCell);
274  m_histTool->fillPPMHadEtaVsPhi(m_h_hadPMTScore, eta, phi, pmtScore);
275  if (sample < s_numPMTPlots) {
276  m_histTool->fillPPMHadEtaVsPhi(m_v_hadPMTScores[sample], eta, phi, pmtScore);
277  }
278  if (ttId2 != invalidId) {
279  const double eta2 = m_ttIdTools->IDeta(ttId2);
280  const double phi2 = m_ttIdTools->IDphi(ttId2);
281  m_histTool->fillPPMHadEtaVsPhi(m_h_hadPMTScore, eta2, phi2, pmtScore);
282  if (sample < s_numPMTPlots) {
283  m_histTool->fillPPMHadEtaVsPhi(m_v_hadPMTScores[sample], eta2, phi2, pmtScore);
284  }
285  }
286  }
287  }
288 
289  // =========================================================================
290  // =================== TriggerTowers =======================================
291  // =========================================================================
292 
293  //Retrieve xAODTriggerTowers from SG
294  const xAOD::TriggerTowerContainer* triggerTowerTES = 0;
295  sc = evtStore()->retrieve(triggerTowerTES, m_xAODTriggerTowerContainerName);
296  if(sc==StatusCode::FAILURE || !triggerTowerTES) {
297  msg(MSG::INFO) << "No xAODTriggerTower found in TES at "
299  return StatusCode::SUCCESS;
300  }
301 
303  triggerTowerTES->begin();
305  triggerTowerTES->end();
306 
307  L1CaloCoolChannelId had_coolId;
308 
309  for (; ttIterator != ttIteratorEnd; ++ttIterator) {
310 
311  double eta = (*ttIterator)->eta();
312  if (fabs(eta) > 1.5) continue;
313  double phi = (*ttIterator)->phi();
314 
315  had_coolId = m_ttTool->channelID(eta, phi, 1);
316  bool had_disabled = m_ttTool->disabledChannel(had_coolId);
317  if (had_disabled) m_histTool->fillPPMHadEtaVsPhi(m_h_hadDisabled, eta, phi, 1.);
318  }
319 
320  return StatusCode::SUCCESS;
321 }
322 /*---------------------------------------------------------*/
324 /*---------------------------------------------------------*/
325 {
326  //if ( endOfLumiBlockFlag() ) { }
327 
328  //if ( endOfRunFlag() ) { }
329 
330  return StatusCode::SUCCESS;
331 }
332 
333 // Return Tile PMT Gain score. Copied from L1CaloOfflineTriggerTowerTools.
334 
336 {
337  // There are either 1 or 2 PMTs per Calo Cell
338  // A PMT may have Half Gain L1 or No Gain L1
339  //
340  // Assign a score as follows.
341  //
342  // Case (a) : 2 PMTs in the Cell
343  // Half gain counts as 0.25
344  // No gain counts as 0.5
345  // So if a cells has no gain in PMT1 and half gain in PMT2 it's score is 0.75
346  //
347  // Case (b) : 1 PMT in the Cell
348  // Half gain counts as 0.5
349  // No Gain counts as 1.0
350 
351  // Cast the CaloCell as a TileCell
352  const TileCell *tileCell = dynamic_cast<const TileCell*>(cell);
353  if (!tileCell) return 0.0;
354 
355  // Get IdentifierHash for both PMTs
356  const CaloDetDescrElement * caloDDE = tileCell->caloDDE();
357  IdentifierHash hash1 = caloDDE->onl1();
358  IdentifierHash hash2 = caloDDE->onl2();
359 
360  // Values for PMT 1 and 2
361  int gain1(-9),gain2(-9);
362  float score(0.0),multiplier(1.0);
363  bool adc1_noGainL1(false),adc1_halfGainL1(false);
364  bool pmt2Valid(false),adc2_noGainL1(false),adc2_halfGainL1(false);
365 
366  // PMT 1
367  gain1 = tileCell->gain1();
368  HWIdentifier adc_id1 = m_tileHWID->adc_id(hash1,(gain1<0)?1:gain1);
369  const TileBchStatus& badChan1(m_tileBadChanTool->getAdcStatus(adc_id1));
370  adc1_noGainL1 = badChan1.isNoGainL1();
371  adc1_halfGainL1 = badChan1.isHalfGainL1();
372 
373  // gap/crack scintillators only have one PMT per cell
374  // PMT 2, if valid
375  if(hash2 != TileHWID::NOT_VALID_HASH){
376  pmt2Valid = true;
377  gain2 = tileCell->gain2();
378  HWIdentifier adc_id2 = m_tileHWID->adc_id(hash2,(gain2<0)?1:gain2);
379  const TileBchStatus& badChan2(m_tileBadChanTool->getAdcStatus(adc_id2));
380  adc2_noGainL1 = badChan2.isNoGainL1();
381  adc2_halfGainL1 = badChan2.isHalfGainL1();
382  }
383 
384  // Calculate the TileCell score
385 
386  // Check that a PMT can't contribute more than 0.5
387  // Should not be the case, but assumptions cause bugs.....
388  if(adc1_noGainL1 == true && adc1_halfGainL1 == true){adc1_halfGainL1 = false;}
389  if(adc2_noGainL1 == true && adc2_halfGainL1 == true){adc2_halfGainL1 = false;}
390 
391  if(pmt2Valid == false){multiplier = 2.0;}
392  if(adc1_halfGainL1 == true){score += 0.25;}
393  if(adc1_noGainL1 == true){score += 0.5;}
394  if(adc2_halfGainL1 == true){score += 0.25;}
395  if(adc2_noGainL1 == true){score += 0.5;}
396 
397  return score * multiplier;
398 }
399 // ============================================================================
400 } // end namespace
L1CaloCoolChannelId.h
TileCell
Definition: TileCell.h:57
LVL1::L1CaloPMTScoresMon::procHistograms
virtual StatusCode procHistograms()
An inheriting class should either override this function or finalHists().
Definition: L1CaloPMTScoresMon.cxx:323
CaloDetDescrElement::onl2
IdentifierHash onl2() const
cell online identifier 2
Definition: Calorimeter/CaloDetDescr/CaloDetDescr/CaloDetDescrElement.h:408
IL1CaloTTIdTools.h
TH2F_LW.h
DataModel_detail::const_iterator
Const iterator class for DataVector/DataList.
Definition: DVLIterator.h:82
LVL1::L1CaloPMTScoresMon::m_cellMatch
ToolHandle< LVL1::IL1CaloMatchCell2Tower > m_cellMatch
CaloCell to TriggerTower matching tool.
Definition: L1CaloPMTScoresMon.h:144
LVL1::L1CaloPMTScoresMon::~L1CaloPMTScoresMon
virtual ~L1CaloPMTScoresMon()
Definition: L1CaloPMTScoresMon.cxx:82
ReadCellNoiseFromCool.cell
cell
Definition: ReadCellNoiseFromCool.py:53
ParticleGun_SamplingFraction.eta2
eta2
Definition: ParticleGun_SamplingFraction.py:96
phi
Scalar phi() const
phi method
Definition: AmgMatrixBasePlugin.h:64
SG::ReadCondHandle
Definition: ReadCondHandle.h:44
ManagedMonitorToolBase::MgmtAttr_t
MgmtAttr_t
An enumeration describing how the class handles the histogram.
Definition: ManagedMonitorToolBase.h:131
ManagedMonitorToolBase
Provides functionality for users to implement and save histograms, ntuples, and summary data,...
Definition: ManagedMonitorToolBase.h:74
eta
Scalar eta() const
pseudorapidity method
Definition: AmgMatrixBasePlugin.h:79
LVL1::L1CaloPMTScoresMon::m_tileBadChanTool
ToolHandle< ITileBadChanTool > m_tileBadChanTool
Tool for PMT gain status.
Definition: L1CaloPMTScoresMon.h:148
AthCommonDataStore< AthCommonMsg< AlgTool > >::declareProperty
Gaudi::Details::PropertyBase & declareProperty(Gaudi::Property< T > &t)
Definition: AthCommonDataStore.h:145
plotmaker.hist
hist
Definition: plotmaker.py:148
LVL1::L1CaloPMTScoresMon::m_h_hadDisabled
TH2F_LW * m_h_hadDisabled
Tile Disabled Towers.
Definition: L1CaloPMTScoresMon.h:170
AthenaMonManager::cosmics
@ cosmics
Definition: AthenaMonManager.h:58
CaloDetDescrElement
This class groups all DetDescr information related to a CaloCell. Provides a generic interface for al...
Definition: Calorimeter/CaloDetDescr/CaloDetDescr/CaloDetDescrElement.h:66
ReadCellNoiseFromCool.cabling
cabling
Definition: ReadCellNoiseFromCool.py:154
TriggerTowerContainer.h
TileBchStatus
Class holding bad channel problems.
Definition: TileBchStatus.h:20
CaloTime_fillDB.gain2
gain2
Definition: CaloTime_fillDB.py:357
IL1CaloCells2TriggerTowers.h
LVL1::L1CaloPMTScoresMon::initialize
virtual StatusCode initialize()
Definition: L1CaloPMTScoresMon.cxx:88
CaloCell.h
AthCommonMsg< AlgTool >::msgLvl
bool msgLvl(const MSG::Level lvl) const
Definition: AthCommonMsg.h:30
ManagedMonitorToolBase::m_dataType
AthenaMonManager::DataType_t m_dataType
Definition: ManagedMonitorToolBase.h:901
ITrigT1CaloMonErrorTool.h
LVL1::L1CaloPMTScoresMon::m_ttIdTools
ToolHandle< LVL1::IL1CaloTTIdTools > m_ttIdTools
Tool for Identifier to eta/phi mappings.
Definition: L1CaloPMTScoresMon.h:146
TrigT1CaloLWHistogramTool.h
LVL1::L1CaloPMTScoresMon::L1CaloPMTScoresMon
L1CaloPMTScoresMon(const std::string &type, const std::string &name, const IInterface *parent)
Definition: L1CaloPMTScoresMon.cxx:56
HWIdentifier
Definition: HWIdentifier.h:13
LVL1
eFexTowerBuilder creates xAOD::eFexTowerContainer from supercells (LATOME) and triggerTowers (TREX) i...
Definition: ICMMCPHitsCnvTool.h:18
CaloCell_ID_FCS::TileGap3
@ TileGap3
Definition: FastCaloSim_CaloCell_ID.h:36
ReadCondHandle.h
AthenaPoolTestRead.sc
sc
Definition: AthenaPoolTestRead.py:27
CaloCell_ID.h
AthCommonDataStore< AthCommonMsg< AlgTool > >::detStore
const ServiceHandle< StoreGateSvc > & detStore() const
The standard StoreGateSvc/DetectorStore Returns (kind of) a pointer to the StoreGateSvc.
Definition: AthCommonDataStore.h:95
LVL1::L1CaloPMTScoresMon::m_caloCellContainerName
std::string m_caloCellContainerName
CaloCellContainer StoreGate key.
Definition: L1CaloPMTScoresMon.h:153
TileBchStatus::isNoGainL1
bool isNoGainL1() const
Definition: TileBchStatus.h:177
CaloDetDescrElement::onl1
IdentifierHash onl1() const
cell online identifier 1
Definition: Calorimeter/CaloDetDescr/CaloDetDescr/CaloDetDescrElement.h:404
AthCommonDataStore< AthCommonMsg< AlgTool > >::evtStore
ServiceHandle< StoreGateSvc > & evtStore()
The standard StoreGateSvc (event store) Returns (kind of) a pointer to the StoreGateSvc.
Definition: AthCommonDataStore.h:85
ManagedMonitorToolBase::MonGroup
A container of information describing a monitoring object.
Definition: ManagedMonitorToolBase.h:138
LVL1::L1CaloPMTScoresMon::m_PathInRootFile
std::string m_PathInRootFile
Root histograms directory.
Definition: L1CaloPMTScoresMon.h:158
TileHWID.h
ManagedMonitorToolBase::initialize
virtual StatusCode initialize()
Definition: ManagedMonitorToolBase.cxx:669
FullCPAlgorithmsTest_eljob.sample
sample
Definition: FullCPAlgorithmsTest_eljob.py:100
CaloSampling::CaloSample
CaloSample
Definition: Calorimeter/CaloGeoHelpers/CaloGeoHelpers/CaloSampling.h:22
LVL1::L1CaloPMTScoresMon::m_xAODTriggerTowerContainerName
std::string m_xAODTriggerTowerContainerName
xAODTriggerTower collection StoreGate key
Definition: L1CaloPMTScoresMon.h:155
CaloCell_ID_FCS::TileBar0
@ TileBar0
Definition: FastCaloSim_CaloCell_ID.h:31
Identifier
Definition: DetectorDescription/Identifier/Identifier/Identifier.h:32
endmsg
#define endmsg
Definition: AnalysisConfig_Ntuple.cxx:63
EL::StatusCode
::StatusCode StatusCode
StatusCode definition for legacy code.
Definition: PhysicsAnalysis/D3PDTools/EventLoop/EventLoop/StatusCode.h:22
AthenaMonManager::online
@ online
Definition: AthenaMonManager.h:49
CaloCell_ID_FCS::TileGap2
@ TileGap2
Definition: FastCaloSim_CaloCell_ID.h:35
CaloCell::caloDDE
const CaloDetDescrElement * caloDDE() const
get pointer to CaloDetDescrElement (data member)
Definition: CaloCell.h:305
LVL1::L1CaloPMTScoresMon::m_ttTool
ToolHandle< LVL1::IL1TriggerTowerTool > m_ttTool
Tool for identifiers and disabled channels.
Definition: L1CaloPMTScoresMon.h:137
LVL1::L1CaloPMTScoresMon::m_histBooked
bool m_histBooked
Histograms booked flag.
Definition: L1CaloPMTScoresMon.h:166
LVL1::L1CaloPMTScoresMon::m_tileHWID
const TileHWID * m_tileHWID
Tile identifier helper.
Definition: L1CaloPMTScoresMon.h:150
LVL1::L1CaloPMTScoresMon::m_cablingKey
SG::ReadCondHandleKey< LArOnOffIdMapping > m_cablingKey
Definition: L1CaloPMTScoresMon.h:161
TileCell.h
ManagedMonitorToolBase::ATTRIB_UNMANAGED
@ ATTRIB_UNMANAGED
Definition: ManagedMonitorToolBase.h:131
test_pyathena.parent
parent
Definition: test_pyathena.py:15
AthenaMonManager.h
ATH_CHECK
#define ATH_CHECK
Definition: AthCheckMacros.h:40
run
Definition: run.py:1
TileBchStatus.h
DataVector
Derived DataVector<T>.
Definition: DataVector.h:581
TileCell::gain1
int gain1(void) const
get gain of first PMT
Definition: TileCell.cxx:182
CaloCell_ID_FCS::TileGap1
@ TileGap1
Definition: FastCaloSim_CaloCell_ID.h:34
ManagedMonitorToolBase::m_environment
AthenaMonManager::Environment_t m_environment
Definition: ManagedMonitorToolBase.h:902
TrigConf::name
Definition: HLTChainList.h:35
L1CaloPMTScoresMon.h
CaloDetDescrElement::is_tile
bool is_tile() const
cell belongs to Tile
Definition: Calorimeter/CaloDetDescr/CaloDetDescr/CaloDetDescrElement.h:442
CaloTime_fillDB.gain1
gain1
Definition: CaloTime_fillDB.py:356
HWIdentifier.h
name
std::string name
Definition: Control/AthContainers/Root/debug.cxx:195
debug
const bool debug
Definition: MakeUncertaintyPlots.cxx:53
IdentifierHash.h
LVL1::L1CaloPMTScoresMon::m_v_hadPMTScores
std::vector< TH2F_LW * > m_v_hadPMTScores
Tile PMT Gain Scores by layer.
Definition: L1CaloPMTScoresMon.h:169
SG::CondHandleKey::initialize
StatusCode initialize(bool used=true)
LVL1::L1CaloPMTScoresMon::s_numPMTPlots
static const int s_numPMTPlots
Number of layers.
Definition: L1CaloPMTScoresMon.h:172
CaloCellContainer.h
CaloCellContainer
Container class for CaloCell.
Definition: CaloCellContainer.h:55
LVL1::TrigT1CaloDefs::xAODTriggerTowerLocation
static const std::string xAODTriggerTowerLocation
Definition: TrigT1CaloDefs.h:36
TrigT1CaloDefs.h
TileBchStatus::isHalfGainL1
bool isHalfGainL1() const
Definition: TileBchStatus.h:185
xAOD::score
@ score
Definition: TrackingPrimitives.h:513
LVL1::L1CaloPMTScoresMon::bookHistogramsRecurrent
virtual StatusCode bookHistogramsRecurrent()
An inheriting class should either override this function, bookHists() or bookHistograms().
Definition: L1CaloPMTScoresMon.cxx:151
DataVector::end
const_iterator end() const noexcept
Return a const_iterator pointing past the end of the collection.
TileHWID::adc_id
HWIdentifier adc_id(int ros, int drawer, int channel, int adc) const
adc HWIdentifer
Definition: TileHWID.cxx:228
IL1TriggerTowerTool.h
L1CaloCoolChannelId
Definition: L1CaloCoolChannelId.h:10
LVL1::L1CaloPMTScoresMon::fillHistograms
virtual StatusCode fillHistograms()
An inheriting class should either override this function or fillHists().
Definition: L1CaloPMTScoresMon.cxx:208
TileCell::gain2
int gain2(void) const
get gain of second PMT
Definition: TileCell.cxx:189
TileHWID::NOT_VALID_HASH
@ NOT_VALID_HASH
Definition: TileHWID.h:314
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
python.CaloScaleNoiseConfig.type
type
Definition: CaloScaleNoiseConfig.py:78
LVL1::L1CaloPMTScoresMon::tileNonNominal
double tileNonNominal(const CaloCell *cell)
Return Tile PMT Gain score for a cell.
Definition: L1CaloPMTScoresMon.cxx:335
DEBUG
#define DEBUG
Definition: page_access.h:11
AthCommonMsg< AlgTool >::msg
MsgStream & msg() const
Definition: AthCommonMsg.h:24
LVL1::L1CaloPMTScoresMon::m_histTool
ToolHandle< TrigT1CaloLWHistogramTool > m_histTool
Histogram helper tool.
Definition: L1CaloPMTScoresMon.h:141
LVL1::L1CaloPMTScoresMon::m_events
int m_events
Event counter.
Definition: L1CaloPMTScoresMon.h:164
TH2F_LW
Definition: TH2F_LW.h:23
LVL1::L1CaloPMTScoresMon::m_h_hadPMTScore
TH2F_LW * m_h_hadPMTScore
Tile PMT Gain Scores.
Definition: L1CaloPMTScoresMon.h:168
IdentifierHash
Definition: IdentifierHash.h:38
LVL1::L1CaloPMTScoresMon::finalize
virtual StatusCode finalize()
Definition: L1CaloPMTScoresMon.cxx:144
ITileBadChanTool.h
LVL1::L1CaloPMTScoresMon::m_errorTool
ToolHandle< ITrigT1CaloMonErrorTool > m_errorTool
Event veto tool.
Definition: L1CaloPMTScoresMon.h:139
DataVector::begin
const_iterator begin() const noexcept
Return a const_iterator pointing at the beginning of the collection.
ManagedMonitorToolBase::newRunFlag
bool newRunFlag() const
Definition: ManagedMonitorToolBase.h:854