ATLAS Offline Software
L1CaloRampMaker.cxx
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2022 CERN for the benefit of the ATLAS collaboration
3 */
4 
6 
7 #include <fstream>
8 #include <utility> // make_pair
9 
11 
15 
18 #include "CaloEvent/CaloCell.h"
19 
23 
27 
28 
29 // temporary includes to work around limitations in L1CaloxAODOfflineTriggerTowerTools
34 
35 
36 // define Accessors
37 namespace {
38  const xAOD::TriggerTower::ConstAccessor<float> ttCellsEnergy("CaloCellEnergy");
39  const xAOD::TriggerTower::ConstAccessor<float> ttCellsET("CaloCellET");
40 }
41 
42 L1CaloRampMaker::L1CaloRampMaker(const std::string& name, ISvcLocator* pSvcLocator)
43  : AthAlgorithm(name, pSvcLocator),
44  m_triggerTowerContainerName(LVL1::TrigT1CaloDefs::xAODTriggerTowerLocation),
45  m_outputFolderName("/L1CaloRampMaker/L1CaloRampDataContainer"),
46  m_gainStrategyFolder("/TRIGGER/Receivers/Conditions/Strategy"),
47  m_doLAr(false),
48  m_doTile(false),
49  m_isGain1(true),
50  m_isOvEmb(false),
51  m_isOvEmec(false),
52  m_isFcalLowEta(false),
53  m_isFcalHighEta(false),
54  m_checkProvenance(false),
55  m_nEventsPerStep(200),
56  m_nSteps(9),
57  m_fadcSaturationCut(963),
58  m_tileSaturationCut(150.),
59  m_ttTool("LVL1::L1TriggerTowerToolRun3/L1TriggerTowerToolRun3"),
60  m_xAODTTTools("LVL1::L1CaloxAODOfflineTriggerTowerTools/L1CaloxAODOfflineTriggerTowerTools", this),
61  m_jmTools("LVL1::L1CaloOfflineTriggerTowerTools/L1CaloOfflineTriggerTowerTools", this),
62  m_nEvent(1),
63  m_firstEvent(true),
64  m_lvl1Helper(nullptr),
65  m_rampDataContainer(nullptr)
66 
67 {
68  declareProperty("TriggerTowerCollectionName", m_triggerTowerContainerName);
69  declareProperty("OutputFolderName", m_outputFolderName);
70  declareProperty("GainStrategyFolder", m_gainStrategyFolder);
71  declareProperty("DoLAr", m_doLAr);
72  declareProperty("DoTile", m_doTile);
73  declareProperty("IsGain1", m_isGain1);
74  declareProperty("IsOvEmb", m_isOvEmb);
75  declareProperty("IsOvEmec", m_isOvEmec);
76  declareProperty("IsFcalLowEta", m_isFcalLowEta);
77  declareProperty("IsFcalHighEta", m_isFcalHighEta);
78  declareProperty("CheckProvenance", m_checkProvenance);
79  declareProperty("EventsPerEnergyStep", m_nEventsPerStep);
80  declareProperty("NumberOfEnergySteps", m_nSteps);
81  declareProperty("FADCSaturationCut", m_fadcSaturationCut);
82  declareProperty("TileSaturationCut", m_tileSaturationCut);
83  declareProperty("L1TriggerTowerToolRun3", m_ttTool);
84  declareProperty("SpecialChannelRange", m_specialChannelRange);
85 }
86 
88 {
89 }
90 
92 {
93 
95 
96  const CaloIdManager *caloMgr = nullptr;
97  CHECK(detStore()->retrieve(caloMgr));
98  m_lvl1Helper = caloMgr->getLVL1_ID();
99  if(!m_lvl1Helper) {
100  ATH_MSG_FATAL( "Cannot access CaloLVL1_ID helper." );
101  return StatusCode::FAILURE;
102  }
103 
105  ATH_CHECK(m_ttTool.retrieve());
106  ATH_CHECK(m_xAODTTTools.retrieve());
107  ATH_CHECK(m_jmTools.retrieve());
108 
112 
113  return StatusCode::SUCCESS;
114 }
115 
117 {
118  // Skip spurious events
119  unsigned int wantedEvents = m_nEventsPerStep*m_nSteps;
120  if (m_nEvent > wantedEvents) {
121  if (m_nEvent == wantedEvents+1) {
122  ATH_MSG_INFO( "Processed " << wantedEvents
123  << " events, skipping the rest" );
124  }
125  ++m_nEvent;
126  return StatusCode::SUCCESS;
127  }
128 
129  const xAOD::EventInfo* eventInfo = nullptr;
130  CHECK(evtStore()->retrieve(eventInfo));
131  if (eventInfo->eventNumber() == 0 && m_nEvent > 1) {
132  // Only allow event 0 as first event
133  ATH_MSG_WARNING( "Skipping spurious event number 0" );
134  return StatusCode::SUCCESS;
135  }
136 
137  const xAOD::TriggerTowerContainer *tts = nullptr;
138  auto sc = evtStore()->retrieve(tts, m_triggerTowerContainerName);
139  if(!sc.isSuccess()) {
140  ATH_MSG_ERROR( "Cannot retrieve TriggerTowerCollection '"
141  << m_triggerTowerContainerName << "' from StoreGate." );
142  return StatusCode::RECOVERABLE;
143  }
144 
145 
146  const EventContext& ctx = getContext();
147 
149 
150  const unsigned evt=ctx.eventID().event_number();
151  ATH_MSG_DEBUG("Event " << evt << " contains " << cells->size() << " CaloCells" );
152  const CaloCellContainer* cellCont = cells.get();
153 
154 
155 
156  m_jmTools->caloCells(cellCont);
157 
158  // init trigger tower to cell mapping
159  CHECK(m_xAODTTTools->initCaloCells());
160  ATH_MSG_DEBUG("GAIN STRATEGY " << m_strategy);
161 
162 
163 
164  if(m_firstEvent) {
165  unsigned int runNumber = eventInfo->runNumber();
166  std::string gainStrategy("");
167  const CondAttrListCollection* gainStrategyColl = 0;
168  sc = detStore()->retrieve(gainStrategyColl, m_gainStrategyFolder);
169  if(sc.isSuccess()) {
170  CondAttrListCollection::const_iterator itr = gainStrategyColl->begin();
171  CondAttrListCollection::const_iterator itrE = gainStrategyColl->end();
172  bool consistent(true);
173  for (; itr != itrE; ++itr) {
174  const unsigned int channel = itr->first;
175  if (channel != 1 && channel != 2) continue;
176  const coral::AttributeList& attrList = itr->second;
177  const std::string strategy(attrList["name"].data<std::string>());
178  const std::string status(attrList["status"].data<std::string>());
179  ATH_MSG_INFO( "Gain Strategy: channel = " << channel
180  << ", name = " << strategy
181  << ", status = " << status );
182  if (gainStrategy == "") gainStrategy = strategy;
183  else if (gainStrategy != strategy) consistent = false;
184  }
185  std::string newStrategy("");
186  if (runNumber == 219978) newStrategy = "GainOneOvEmecFcalLowEta";
187  if (runNumber == 219979) newStrategy = "GainOneOvEmbFcalHighEta";
188  if (runNumber == 219980) newStrategy = "CalibGainsEt";
189  if (runNumber == 220013) newStrategy = "GainOneOvEmecFcalLowEta";
190  if (runNumber == 220014) newStrategy = "GainOneOvEmbFcalHighEta";
191  if (runNumber == 220015) newStrategy = "CalibGainsEt";
192  if (runNumber == 222871) newStrategy = "GainOne";
193  if (runNumber == 222872) newStrategy = "GainOne";
194  if (runNumber == 222873) newStrategy = "GainOne";
195  if (runNumber == 223073) newStrategy = "GainOne";
196  if (runNumber == 223074) newStrategy = "GainOne";
197  if (runNumber == 223075) newStrategy = "GainOne";
198  if (newStrategy != "") {
199  ATH_MSG_INFO( "Changing Gain Strategy to " << newStrategy);
200  gainStrategy = newStrategy;
201  }
202  if (gainStrategy != "" && consistent) {
203  m_isGain1 = (gainStrategy.find("GainOne") != std::string::npos);
204  m_isOvEmb = (gainStrategy.find("OvEmb") != std::string::npos);
205  m_isOvEmec = (gainStrategy.find("OvEmec") != std::string::npos);
206  m_isFcalLowEta = (gainStrategy.find("FcalLowEta") != std::string::npos);
207  m_isFcalHighEta = (gainStrategy.find("FcalHighEta") != std::string::npos);
208  } else if (gainStrategy == "") {
209  ATH_MSG_WARNING( "Gain Strategy collection empty" );
210  } else {
211  ATH_MSG_WARNING( "Inconsistent Gain Strategies" );
212  }
213  } else {
214  ATH_MSG_WARNING( "No Gain Strategy collection found" );
215  }
216  ATH_MSG_INFO( "isGain1 = " << m_isGain1
217  << ", isOvEmb = " << m_isOvEmb
218  << ", isOvEmec = " << m_isOvEmec
219  << ", isFcalLowEta = " << m_isFcalLowEta
220  << ", isFcalHighEta = " << m_isFcalHighEta );
221 
223  m_rampDataContainer->setRunNumber(runNumber);
224  m_rampDataContainer->setGainStrategy(gainStrategy);
225  m_firstEvent = false;
226  }
227 
228 
229 
230 
231  // Reading L1Calo conditions
234 
235 
236 
237  auto specialChannelRangeEnd = m_specialChannelRange.end();
238  bool nextStep = (m_nEvent % m_nEventsPerStep == 0);
239  for(auto *tt : *tts) {
240  // skip saturated towers
241  if(tt->isJepSaturated()) continue;
242 
243  // isSaturated flag is not enough to check - test FADC for saturation, too
244  auto max = std::max_element(tt->adc().begin(), tt->adc().end());
245  if(*max >= m_fadcSaturationCut) continue;
246 
247 
248 
249  // skip disabled channels
250  if(m_ttTool->disabledChannel(tt->coolId())) continue;
251 
252 
253 
254  bool isTile = m_xAODTTTools->isTile(*tt);
255 
256  if((m_doLAr && !isTile) || (m_doTile && isTile)) {
258  double level1Energy = getTriggerTowerEnergy(tt,pprChanCalib);
259  double caloEnergy = getCaloEnergy(tt);
260 
261  // cut on 150 GeV ADC for Tile, lots of saturating calibration signals
262  if(isTile && level1Energy > m_tileSaturationCut) continue;
263 
264  // see if we have a special channel and cut on level1 energy
265  auto specialChannelIt = m_specialChannelRange.find(tt->coolId());
266  if(specialChannelIt == specialChannelRangeEnd || level1Energy < specialChannelIt->second) {
267  ATH_MSG_DEBUG("Adding Energy for " << tt->coolId() << ":" << caloEnergy << " vs. " << level1Energy);
268  m_rampDataContainer->rampData(tt->coolId())->addData(caloEnergy, level1Energy);
269  } else {
270  // make sure we don't accidently miss the threshold again
271  specialChannelIt->second = -1000;
272  }
273  if(nextStep) m_rampDataContainer->rampData(tt->coolId())->nextStep();
274  }
275  }
276 
277  ++m_nEvent;
278 
279  return StatusCode::SUCCESS;
280 }
281 
282 
283 
284 
285 
287 {
289 
290  L1CaloRampData rd;
291  for(auto* tt: *tts) {
292  bool isTile = m_xAODTTTools->isTile(*tt);
293  if((m_doLAr && !isTile) || (m_doTile && isTile)) {
294  m_rampDataContainer->addRampData(tt->coolId(), rd);
295  }
296  }
297 }
298 
299 // return E_T of cells comprising the trigger tower @c tt
301 {
302  double et(0.);
303  auto id = m_ttTool->identifier(tt->eta(), tt->phi(), tt->sampling());
304 
305  if(m_lvl1Helper->is_fcal(id)) {
306  if(tt->sampling() == 0) { // fcal em - use decorated value
307  et = ttCellsET(*tt);
308  } else { // had
309  LVL1::TriggerTowerKey K(tt->phi(), tt->eta());
310  LVL1::TriggerTower T(tt->phi(), tt->eta(), K.ttKey(tt->phi(), tt->eta()));
311  std::vector<float> etRec = m_jmTools->hadTTCellsEtByReceiver(&T);
312  if (etRec.size() == 2) {
313  if (m_isFcalLowEta) et = etRec[1];//FCAL high and low eta receivers swapped here due to LAr baseplane misrouting
314  else if (m_isFcalHighEta) et = etRec[0];
315  else et = etRec[0] + etRec[1];
316  } else if (etRec.size() == 1) et = etRec[0];
317  }
318  } else {
320  LVL1::TriggerTowerKey K(tt->phi(), tt->eta());
321  LVL1::TriggerTower T(tt->phi(), tt->eta(), K.ttKey(tt->phi(), tt->eta()));
322  std::vector<float> energyRec = m_jmTools->emTTCellsEnergyByReceiver(&T);
323  if (energyRec.size() == 2) {
324  double energy(0.);
325  if (m_isOvEmec) energy = energyRec[0];
326  else energy = energyRec[1];
327  et = energy / std::cosh(tt->eta());
328  } else et = energyRec[0] / std::cosh(tt->eta());
329  } else {
330  et = ttCellsEnergy(*tt) / std::cosh(tt->eta());
331  }
332  }
333  return et;
334 }
335 
336 // calculate trigger tower E_T from adc values
337 // if run is with gain 1 loaded, need special treatment of E_T for HEC and TILE
339  // calibration is against ADC energy "(adc peak value - pedestal) / 4"
340  auto max = std::max_element(tt->adc().begin(), tt->adc().end());
341 
342  if(!pprChanCalib->pprChanCalib(tt->coolId())) {
343  ATH_MSG_WARNING("Empty PPrChanCalib for 0x "
344  << std::hex << tt->coolId() << std::dec << "!");
345  return 0.;
346  }
347 
348  double energy = (*max - int( pprChanCalib->pprChanCalib(tt->coolId())->pedValue())) * 0.25;
349  ATH_MSG_DEBUG("PedValue " << tt->coolId() << ":" << int( pprChanCalib->pprChanCalib(tt->coolId())->pedValue()) );
350 
351 
352  if (energy < 0.) energy = 0.;
353 
354  // no corrections if gain is set correctly
355  if(!m_isGain1) return energy;
356 
357  // correct hec and tile if gain 1
358  auto id = m_ttTool->identifier(tt->eta(), tt->phi(), tt->sampling());
359  if(m_lvl1Helper->is_hec(id)) {
360  energy /= std::cosh(tt->eta());
361  if(fabs(tt->eta()) > 2.5) {
362  energy *= 10.;
363  } else if(fabs(tt->eta()) > 1.9) {
364  energy *= 5.;
365  } else {
366  energy *= 3.125;
367  }
368  } else if(m_lvl1Helper->is_tile(id)) {
369  energy /= std::cosh(tt->eta());
370  }
371 
372  return energy;
373 }
374 
375 // function fills a map of cooldid -> (number of cells failing quality, avg. cell timing)
376 // used for fcal debugging
378  const std::vector<const CaloCell*>& cells(m_xAODTTTools->getCaloCells(*tt));
379  double oneOverNCells = 1./double(cells.size());
380  for(const auto *cell : cells) {
381  auto it = m_mapBadOFCIteration.find(tt->coolId());
382  if(it == m_mapBadOFCIteration.end()) {
383  m_mapBadOFCIteration.insert(std::make_pair(tt->coolId(), std::make_pair(!(cell->provenance() & 0x100),
384  (cell->time()*oneOverNCells))));
385  continue;
386  }
387  if(!(cell->provenance() & 0x100)) {
388  it->second.first += 1;
389  }
390  it->second.second += (cell->time()*oneOverNCells);
391  }
392 }
393 
395 {
396  CHECK(detStore()->record(std::move(m_rampDataContainer), m_outputFolderName));
397 
398  if(m_checkProvenance) {
399  std::ofstream bad_ofciter("bad-ofciter.txt");
400  std::map<unsigned int, std::pair<unsigned int, double> >::const_iterator it(m_mapBadOFCIteration.begin()), itE(m_mapBadOFCIteration.end());
401  for(;it != itE; ++it) {
402  bad_ofciter << "0x" << std::hex << it->first << " "
403  << std::dec << double(it->second.first) / double(m_nEvent)
404  << " " << it->second.second / double(m_nEvent) << std::endl;
405  }
406  bad_ofciter.close();
407  }
408 
409  return StatusCode::SUCCESS;
410 }
411 
python.PyKernel.retrieve
def retrieve(aClass, aKey=None)
Definition: PyKernel.py:110
xAOD::strategy
strategy
Definition: L2CombinedMuon_v1.cxx:107
RunTileCalibRec.cells
cells
Definition: RunTileCalibRec.py:271
python.SystemOfUnits.second
int second
Definition: SystemOfUnits.py:120
CondAttrListCollection::end
const_iterator end() const
Definition: CondAttrListCollection.h:315
et
Extra patterns decribing particle interation process.
ATH_MSG_FATAL
#define ATH_MSG_FATAL(x)
Definition: AthMsgStreamMacros.h:34
L1CaloRampMaker::m_strategy
SG::ReadCondHandleKey< CondAttrListCollection > m_strategy
Definition: L1CaloRampMaker.h:98
ReadCellNoiseFromCool.cell
cell
Definition: ReadCellNoiseFromCool.py:53
max
#define max(a, b)
Definition: cfImp.cxx:41
L1CaloRampMaker::m_isOvEmb
bool m_isOvEmb
Definition: L1CaloRampMaker.h:66
plotting.yearwise_efficiency.channel
channel
Definition: yearwise_efficiency.py:28
CondAttrListCollection.h
This file defines the class for a collection of AttributeLists where each one is associated with a ch...
SG::ReadCondHandle
Definition: ReadCondHandle.h:44
ATH_MSG_INFO
#define ATH_MSG_INFO(x)
Definition: AthMsgStreamMacros.h:31
xAOD::EventInfo_v1::eventNumber
uint64_t eventNumber() const
The current event's event number.
CaloCellPos2Ntuple.int
int
Definition: CaloCellPos2Ntuple.py:24
CaloLVL1_ID::is_fcal
bool is_fcal(const Identifier id) const
Test wether given tower or layer is part of the FCAL.
Definition: CaloLVL1_ID.h:710
L1CaloRampMaker::m_lvl1Helper
const CaloLVL1_ID * m_lvl1Helper
Definition: L1CaloRampMaker.h:85
xAOD::et
et
Definition: TrigEMCluster_v1.cxx:25
SG::ReadHandle
Definition: StoreGate/StoreGate/ReadHandle.h:70
AthCommonDataStore< AthCommonMsg< Algorithm > >::declareProperty
Gaudi::Details::PropertyBase & declareProperty(Gaudi::Property< T > &t)
Definition: AthCommonDataStore.h:145
L1CaloRampMaker::m_doTile
bool m_doTile
Definition: L1CaloRampMaker.h:64
IL1CaloOfflineTriggerTowerTools.h
TriggerTowerKey.h
skel.it
it
Definition: skel.GENtoEVGEN.py:423
L1CaloRampData.h
L1CaloRampMaker::finalize
StatusCode finalize()
Definition: L1CaloRampMaker.cxx:394
CaloCell.h
CondAttrListCollection::begin
const_iterator begin() const
Access to Chan/AttributeList pairs via iterators.
Definition: CondAttrListCollection.h:309
L1CaloRampMaker::~L1CaloRampMaker
virtual ~L1CaloRampMaker()
Definition: L1CaloRampMaker.cxx:87
L1CaloRampMaker::m_doLAr
bool m_doLAr
Definition: L1CaloRampMaker.h:63
CaloLVL1_ID::is_barrel_end
bool is_barrel_end(const Identifier id) const
Test wether given tower or layer is part of the EM barrel END.
Definition: CaloLVL1_ID.h:690
LArG4FSStartPointFilter.evt
evt
Definition: LArG4FSStartPointFilter.py:42
SG::ConstAccessor
Helper class to provide constant type-safe access to aux data.
Definition: ConstAccessor.h:54
python.PyKernel.AttributeList
AttributeList
Definition: PyKernel.py:36
L1CaloRampMaker::m_mapBadOFCIteration
std::map< unsigned int, std::pair< unsigned int, double > > m_mapBadOFCIteration
Definition: L1CaloRampMaker.h:96
CondAttrListCollection
This class is a collection of AttributeLists where each one is associated with a channel number....
Definition: CondAttrListCollection.h:52
LVL1
eFexTowerBuilder creates xAOD::eFexTowerContainer from supercells (LATOME) and triggerTowers (TREX) i...
Definition: ICMMCPHitsCnvTool.h:18
AthenaAttributeList.h
xAOD::EventInfo_v1::runNumber
uint32_t runNumber() const
The current event's run number.
TruthTest.itE
itE
Definition: TruthTest.py:25
AthenaPoolTestRead.sc
sc
Definition: AthenaPoolTestRead.py:27
AthCommonDataStore< AthCommonMsg< Algorithm > >::detStore
const ServiceHandle< StoreGateSvc > & detStore() const
The standard StoreGateSvc/DetectorStore Returns (kind of) a pointer to the StoreGateSvc.
Definition: AthCommonDataStore.h:95
CaloLVL1_ID::is_hec
bool is_hec(const Identifier id) const
Test wether given tower or layer is part of the HEC.
Definition: CaloLVL1_ID.h:703
L1CaloRampMaker::checkProvenance
void checkProvenance(const xAOD::TriggerTower *tt)
Definition: L1CaloRampMaker.cxx:377
L1CaloRampMaker::m_nEvent
unsigned int m_nEvent
Definition: L1CaloRampMaker.h:82
L1CaloRampMaker::m_specialChannelRange
std::map< int, int > m_specialChannelRange
Definition: L1CaloRampMaker.h:62
AthCommonDataStore< AthCommonMsg< Algorithm > >::evtStore
ServiceHandle< StoreGateSvc > & evtStore()
The standard StoreGateSvc (event store) Returns (kind of) a pointer to the StoreGateSvc.
Definition: AthCommonDataStore.h:85
L1CaloRampMaker::m_pprDisabledChannelContainer
SG::ReadCondHandleKey< L1CaloPprDisabledChannelContainerRun2 > m_pprDisabledChannelContainer
Definition: L1CaloRampMaker.h:101
ATH_MSG_ERROR
#define ATH_MSG_ERROR(x)
Definition: AthMsgStreamMacros.h:33
ParticleGun_FastCalo_ChargeFlip_Config.energy
energy
Definition: ParticleGun_FastCalo_ChargeFlip_Config.py:78
CaloIdManager
This class initializes the Calo (LAr and Tile) offline identifiers.
Definition: CaloIdManager.h:45
L1CaloRampMaker::m_caloCellsKey
SG::ReadHandleKey< CaloCellContainer > m_caloCellsKey
Definition: L1CaloRampMaker.h:105
L1CaloRampMaker::m_tileSaturationCut
double m_tileSaturationCut
Definition: L1CaloRampMaker.h:74
IL1CaloxAODOfflineTriggerTowerTools.h
L1CaloRampDataContainer.h
EL::StatusCode
::StatusCode StatusCode
StatusCode definition for legacy code.
Definition: PhysicsAnalysis/D3PDTools/EventLoop/EventLoop/StatusCode.h:22
ATH_MSG_DEBUG
#define ATH_MSG_DEBUG(x)
Definition: AthMsgStreamMacros.h:29
L1CaloRampMaker::m_nSteps
unsigned int m_nSteps
Definition: L1CaloRampMaker.h:72
L1CaloRampMaker::m_isGain1
bool m_isGain1
Definition: L1CaloRampMaker.h:65
L1CaloRampMaker::L1CaloRampMaker
L1CaloRampMaker(const std::string &name, ISvcLocator *pSvcLocator)
Definition: L1CaloRampMaker.cxx:42
xAOD::TriggerTower_v2
Description of TriggerTower_v2.
Definition: TriggerTower_v2.h:49
CaloIdManager::getLVL1_ID
const CaloLVL1_ID * getLVL1_ID(void) const
Definition: CaloIdManager.cxx:75
ATH_CHECK
#define ATH_CHECK
Definition: AthCheckMacros.h:40
CHECK
#define CHECK(...)
Evaluate an expression and check for errors.
Definition: Control/AthenaKernel/AthenaKernel/errorcheck.h:422
L1CaloRampMaker::m_fadcSaturationCut
int m_fadcSaturationCut
Definition: L1CaloRampMaker.h:73
IL1TriggerTowerToolRun3.h
L1CaloRampDataContainer
Container of L1CaloRampData objects.
Definition: L1CaloRampDataContainer.h:23
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
xAOD::double
double
Definition: CompositeParticle_v1.cxx:159
L1CaloRampMaker::getTriggerTowerEnergy
double getTriggerTowerEnergy(const xAOD::TriggerTower *tt, SG::ReadCondHandle< L1CaloPprChanCalibContainer > pprCond)
Definition: L1CaloRampMaker.cxx:338
L1CaloRampMaker::m_ttTool
ToolHandle< LVL1::IL1TriggerTowerToolRun3 > m_ttTool
Definition: L1CaloRampMaker.h:75
DataVector
Derived DataVector<T>.
Definition: DataVector.h:581
L1CaloRampMaker::m_isFcalHighEta
bool m_isFcalHighEta
Definition: L1CaloRampMaker.h:69
AthAlgorithm
Definition: AthAlgorithm.h:47
L1CaloRampMaker::m_pprChanCalibContainer
SG::ReadCondHandleKey< L1CaloPprChanCalibContainer > m_pprChanCalibContainer
Definition: L1CaloRampMaker.h:100
LVL1::TriggerTower
Trigger towers are the inputs to all other parts of the calorimeter trigger.
Definition: Trigger/TrigT1/TrigT1CaloEvent/TrigT1CaloEvent/TriggerTower.h:45
L1CaloRampMaker::initialize
StatusCode initialize()
Definition: L1CaloRampMaker.cxx:91
L1CaloRampMaker::m_firstEvent
bool m_firstEvent
Definition: L1CaloRampMaker.h:83
name
std::string name
Definition: Control/AthContainers/Root/debug.cxx:195
errorcheck.h
Helpers for checking error return status codes and reporting errors.
L1CaloRampMaker::m_checkProvenance
bool m_checkProvenance
Definition: L1CaloRampMaker.h:70
SG::CondHandleKey::initialize
StatusCode initialize(bool used=true)
L1CaloRampMaker::m_outputFolderName
std::string m_outputFolderName
Definition: L1CaloRampMaker.h:60
CaloCellContainer
Container class for CaloCell.
Definition: CaloCellContainer.h:55
L1CaloRampMaker::m_gainStrategyFolder
std::string m_gainStrategyFolder
Definition: L1CaloRampMaker.h:61
TrigT1CaloDefs.h
EventInfo.h
xAOD::EventInfo_v1
Class describing the basic event information.
Definition: EventInfo_v1.h:43
L1CaloRampMaker.h
L1CaloPprChanCalibContainer::pprChanCalib
const L1CaloPprChanCalib * pprChanCalib(unsigned int channelId) const
Definition: L1CaloPprChanCalibContainer.cxx:170
DeMoAtlasDataLoss.runNumber
string runNumber
Definition: DeMoAtlasDataLoss.py:64
L1CaloRampMaker::setupRampDataContainer
void setupRampDataContainer(const xAOD::TriggerTowerContainer *triggerTowerContainer)
Definition: L1CaloRampMaker.cxx:286
L1CaloRampMaker::execute
StatusCode execute()
Definition: L1CaloRampMaker.cxx:116
L1CaloRampMaker::m_rampDataContainer
std::unique_ptr< L1CaloRampDataContainer > m_rampDataContainer
Definition: L1CaloRampMaker.h:87
CaloLVL1_ID.h
ATH_MSG_WARNING
#define ATH_MSG_WARNING(x)
Definition: AthMsgStreamMacros.h:32
CondAttrListCollection::const_iterator
ChanAttrListMap::const_iterator const_iterator
Definition: CondAttrListCollection.h:63
TriggerTower.h
L1CaloPprChanCalib::pedValue
unsigned int pedValue() const
Definition: L1CaloPprChanCalib.h:25
L1CaloRampMaker::m_isFcalLowEta
bool m_isFcalLowEta
Definition: L1CaloRampMaker.h:68
L1CaloRampMaker::m_cablingKey
SG::ReadCondHandleKey< LArOnOffIdMapping > m_cablingKey
Definition: L1CaloRampMaker.h:104
L1CaloRampMaker::m_isOvEmec
bool m_isOvEmec
Definition: L1CaloRampMaker.h:67
CaloIdManager.h
merge.status
status
Definition: merge.py:17
L1CaloRampMaker::m_xAODTTTools
ToolHandle< LVL1::IL1CaloxAODOfflineTriggerTowerTools > m_xAODTTTools
Definition: L1CaloRampMaker.h:78
LVL1::TriggerTowerKey::ttKey
virtual unsigned int ttKey(const TriggerTower &tower)
returns the key of the passed tower
Definition: TriggerTowerKey.cxx:143
L1CaloRampMaker::m_nEventsPerStep
unsigned int m_nEventsPerStep
Definition: L1CaloRampMaker.h:71
CaloLVL1_ID::is_tile
bool is_tile(const Identifier id) const
Test wether given tower or layer is part of the Tile Calorimeter.
Definition: CaloLVL1_ID.h:672
TileDCSDataPlotter.tt
tt
Definition: TileDCSDataPlotter.py:874
TriggerTower.h
L1CaloRampMaker::m_jmTools
ToolHandle< LVL1::IL1CaloOfflineTriggerTowerTools > m_jmTools
Definition: L1CaloRampMaker.h:79
L1CaloRampMaker::getCaloEnergy
double getCaloEnergy(const xAOD::TriggerTower *tt)
Definition: L1CaloRampMaker.cxx:300
L1CaloRampData
Transient class to store the RampData calculated from calibration runs.
Definition: L1CaloRampData.h:42
LVL1::TriggerTowerKey
The TriggerTowerKey object provides the key for each trigger tower depending on its eta-phi coords.
Definition: TriggerTowerKey.h:56
L1CaloRampMaker::m_triggerTowerContainerName
std::string m_triggerTowerContainerName
Definition: L1CaloRampMaker.h:59
L1CaloPprConditionsRun2.h