ATLAS Offline Software
LArSCvsRawChannelMonAlg.cxx
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2024 CERN for the benefit of the ATLAS collaboration
3 */
4 
6 
9 
11 
16  ATH_CHECK(m_badChanKey.initialize());
17  ATH_CHECK(m_badSCKey.initialize());
19  ATH_CHECK(detStore()->retrieve(m_onlineID, "LArOnlineID"));
20  ATH_CHECK(detStore()->retrieve(m_calo_id, "CaloCell_ID"));
21  ATH_CHECK(m_scidtool.retrieve());
24 
25  ATH_MSG_INFO("Building tool map");
26  m_toolmapPerLayer = Monitored::buildToolMap<int>( m_tools, "LArSCvsRawChannelMon", m_layerNames);
27 
29 }
30 
31 struct MonValues {
32  float raw_eta;
33  float raw_phi;
34  float scEne;
35  float eneSum;
36  float eneFrac;
37 };
38 
39 
40 StatusCode LArSCvsRawChannelMonAlg::fillHistograms(const EventContext& ctx) const {
41 
43  if (!cablingHdl.isValid()) {
44  ATH_MSG_ERROR("Do not have Onl-Ofl cabling map !!!!");
45  return StatusCode::FAILURE;
46  }
47 
49  if (!cablingSCHdl.isValid()) {
50  ATH_MSG_ERROR("Do not have Onl-Ofl cabling map for SuperCells !!!!");
51  return StatusCode::FAILURE;
52  }
53 
55  if (!scDetMgr.isValid()) {
56  ATH_MSG_ERROR("Do not have CaloSuperCellDetDescrManager !!!!");
57  return StatusCode::FAILURE;
58  }
59 
61  if (!bcHdl.isValid()) {
62  ATH_MSG_ERROR("Do not have BadChannelContainer !!!!");
63  return StatusCode::FAILURE;
64  }
65  const LArBadChannelCont* bcCont = *bcHdl;
66 
68  if (!bcSCHdl.isValid()) {
69  ATH_MSG_ERROR("Do not have BadSCContainer !!!!");
70  return StatusCode::FAILURE;
71  }
72  const LArBadChannelCont* bcSCCont = *bcSCHdl;
73 
74  // get SuperCellContainer
76  if (!scHdl.isValid()) {
77  ATH_MSG_WARNING("Do not have LArRawSCContainer container with key" << m_SCKey.key());
78  return StatusCode::SUCCESS;
79  } else {
80  ATH_MSG_DEBUG("Reading SuperCell container with key " << m_SCKey.key() << ", size=" << scHdl->size());
81  }
82 
83  // get regular LArRawChannel container
85  if (!scHdl.isValid()) {
86  ATH_MSG_WARNING("Do not have LArRawChannel container with key" << m_RCKey.key());
87  return StatusCode::SUCCESS;
88  } else {
89  ATH_MSG_DEBUG("Reading LArRawChannel container with key " << m_RCKey.key() << ", size=" << rcHdl->size());
90  }
91 
92  const CaloBCIDAverage* bcidavgshift = nullptr;
93  if (!(m_caloBCIDAvg.key().empty())) {
94  SG::ReadHandle<CaloBCIDAverage> bcidavgshiftHdl(m_caloBCIDAvg, ctx);
95  bcidavgshift = bcidavgshiftHdl.cptr();
96  }
97 
98  const unsigned int bcid = ctx.eventID().bunch_crossing_id();
99 
100  std::vector<std::pair<Monitored::Scalar<float>, Monitored::Scalar<float> > > monVars;
101  for (int p = 0; p < MAXPARTITIONS; ++p) {
102  monVars.emplace_back(Monitored::Scalar<float>("scEne_" + m_partitionNames.value()[p], 0.0),
103  Monitored::Scalar<float>("eneSum_" + m_partitionNames.value()[p], 0.0));
104  }
105 
106  std::vector<std::vector<MonValues>> MonValueVec(m_layerNames.size());
107 
108  for (const LArRawSC* rawSC : *scHdl) {
109  const std::vector<unsigned short>& bcids = rawSC->bcids();
110  const std::vector<int>& energies = rawSC->energies();
111  const std::vector<bool>& satur = rawSC->satur();
112 
113  // Look for bcid:
114  float scEne = 0;
115 
116  const size_t nBCIDs = bcids.size();
117  size_t i = 0;
118  for (i = 0; i < nBCIDs && bcids[i] != bcid; i++)
119  ;
120  if (satur[i])
121  continue;
122 
123  if (!bcSCCont->status(rawSC->hardwareID()).good())
124  continue;
125 
126  scEne = energies[i];
127  if (scEne < m_scEneCut)
128  continue;
129  Identifier off_id = cablingSCHdl->cnvToIdentifier(rawSC->hardwareID());
130 
131 
132  const int iPart = getPartition(off_id);
133  if (iPart < 0) {
134  ATH_MSG_ERROR("Got unkonwn partition number " << iPart);
135  return StatusCode::FAILURE;
136  }
137  const std::vector<Identifier>& regularIDs = m_scidtool->superCellToOfflineID(off_id);
138  std::set<HWIdentifier> hwids;
139  for (const Identifier& id : regularIDs) {
140  hwids.insert(cablingHdl->createSignalChannelID(id));
141  }
142  // Loop over regular RawChannelContainer to find the relevant cells:
143  float eneSum = 0;
144  const size_t nChans = rcHdl->size();
145  bool hasBadChan = false;
146  for (size_t i = 0; i < nChans && !hwids.empty(); ++i) {
147  const LArRawChannel& rc = rcHdl->at(i);
148  if (hwids.contains(rc.hardwareID())) {
149  if (m_bcMask.cellShouldBeMasked(bcCont, rc.hardwareID())) {
150  hasBadChan = true;
151  break;
152  }
153 
154  bcHdl->status(rc.hardwareID()).deadReadout();
155  eneSum += rc.energy();
156  if (bcidavgshift)
157  eneSum -= bcidavgshift->average(rc.hardwareID());
158  hwids.erase(rc.hardwareID());
159  }
160  } // end loop over regular raw channels
161 
162  if (hasBadChan) {
163  ATH_MSG_DEBUG("SuperCell with id 0x" << std::hex << off_id.get_identifier32().get_compact() << std::dec << " E[" << i << "]=" << scEne
164  << " is connected to at least one bad channel. Ignoring SC.");
165  continue;
166  }
167  if (!hwids.empty()) {
168  ATH_MSG_ERROR("SuperCell with id 0x" << std::hex << off_id.get_identifier32().get_compact() << std::dec << ": " << hwids.size()
169  << " attached regular RawChannels not found");
170  continue; // Ignore this supercell
171  }
172  const CaloDetDescrElement* scDDE = scDetMgr->get_element(off_id);
173  scEne *= 12.5 / scDDE->sinTh();
174  ATH_MSG_VERBOSE("SuperCell with id 0x" << std::hex << off_id.get_identifier32().get_compact() << std::dec << ", eta=" << scDDE->eta() << " E[" << i
175  << "]=" << scEne << " Sum of RC energies=" << eneSum << ", Ratio=" << (eneSum != 0 ? scEne / eneSum : 0.0));
176 
177  if (m_warnOffenders && scEne > 15000 && eneSum < 5000) {
178  ATH_MSG_WARNING("SuperCell with id 0x" << std::hex << off_id.get_identifier32().get_compact() << std::dec << ", eta=" << scDDE->eta() << " E[" << i
179  << "]=" << scEne << " Sum of RC energies=" << eneSum);
180  }
181 
182  float eneFrac = 0;
183  if ( eneSum != 0 and scEne != 0 ){
184  eneFrac = scEne / eneSum;
185  }
186 
187 
188  const float eta = scDDE->eta_raw();
189  const float phi = scDDE->phi_raw();
190  const int calosample=scDDE->getSampling();
191  const unsigned iLyrNS=m_caloSamplingToLyrNS[calosample];
192  const int side = m_onlineID->pos_neg(rawSC->hardwareID());
193  const unsigned iLyr=iLyrNS*2+side;
194 
195  auto& lvaluemap = MonValueVec[iLyr];
196 
197  ATH_MSG_DEBUG("Chan "<<rawSC->hardwareID()<<" "<<rawSC->SourceId()<<" "<<m_onlineID->channel_name(rawSC->hardwareID())<<" iPart "<<iPart<<" iLyrNS "<<iLyrNS<<" side "<<side<<" iLyr "<<iLyr<<" "<<m_layerNames[iLyr]<<" MAXP "<<MAXPARTITIONS<<" MAXL "<<MAXLYRNS);
198 
199 
200  auto& monPair = monVars[iPart];
201  monPair.first = scEne;
202  monPair.second = eneSum;
203 
204 
205  lvaluemap.emplace_back(eta, phi, scEne, eneSum, eneFrac);
206 
207 
208  fill(m_MonGroupName, monPair.first, monPair.second); //, monPairLyr.first, monPairLyr.second);
209  }
210 
211 
212  for (size_t ilayer = 0; ilayer < MonValueVec.size(); ++ilayer) {
213  const auto& tool = MonValueVec[ilayer];
214  auto part_eta = Monitored::Collection("part_eta",tool,[](const auto& v){return v.raw_eta;});
215  auto part_phi = Monitored::Collection("part_phi",tool,[](const auto& v){return v.raw_phi;});
216  auto part_scEne = Monitored::Collection("part_scEne",tool,[](const auto& v){return v.scEne;});
217  auto part_eneSum = Monitored::Collection("part_eneSum",tool,[](const auto& v){return v.eneSum;});
218  auto part_eneFrac = Monitored::Collection("part_eneFrac",tool,[](const auto& v){return v.eneFrac;});
219 
221  part_eta, part_phi, part_scEne, part_eneSum, part_eneFrac);
222 
223  }
224 
225 
226  return StatusCode::SUCCESS;
227 }
228 
230  const int s = m_calo_id->calo_sample(id);
231 
232  // PreSamplerB=0, EMB1, EMB2, EMB3, PreSamplerE, EME1, EME2, EME3, HEC0, HEC1,
233  // HEC2, HEC3, TileBar0, TileBar1, TileBar2,TileGap1, TileGap2, TileGap3,
234  // TileExt0, TileExt1, TileExt2, FCAL0, FCAL1, FCAL2, MINIFCAL0, MINIFCAL1,
235  // MINIFCAL2, MINIFCAL3,
236  constexpr std::array<int, CaloSampling::getNumberOfSamplings()> samplingToPartitonMap{
237  0, 0, 0, 0, // Barrel BS to EMB3
238  2, 2, 2, 2, // EMEC PS to EME3
239  4, 4, 4, 4, // HEC0 to HEC3
240  -1, -1, -1, // TileBar0 - 2 (ignored)
241  -1, -1, -1, // Tile Gap 0 -2 (ignored)
242  -1, -1, -1, // TIleExt0 0-2 (ignored)
243  6, 6, 6, // FCAL 0-2
244  -1, -1, -1, -1 // MiniFCAL0-3 (ignored)
245  };
246 
247  const int pNoSide = samplingToPartitonMap[s];
248  if (ATH_UNLIKELY(pNoSide < 0)) {
249  return MAXPARTITIONS;
250  }
251 
252  return (m_calo_id->pos_neg(id) < 0) ? pNoSide + 1 : pNoSide;
253 }
python.PyKernel.retrieve
def retrieve(aClass, aKey=None)
Definition: PyKernel.py:110
LArRawSC
Liquid Argon SuperCell raw data.
Definition: LArRawSC.h:19
python.SystemOfUnits.s
int s
Definition: SystemOfUnits.py:131
LArSCvsRawChannelMonAlg::m_scEneCut
Gaudi::Property< int > m_scEneCut
Definition: LArSCvsRawChannelMonAlg.h:46
LArSCvsRawChannelMonAlg::m_MonGroupName
Gaudi::Property< std::string > m_MonGroupName
Definition: LArSCvsRawChannelMonAlg.h:48
phi
Scalar phi() const
phi method
Definition: AmgMatrixBasePlugin.h:67
SG::ReadCondHandle
Definition: ReadCondHandle.h:44
ATH_MSG_INFO
#define ATH_MSG_INFO(x)
Definition: AthMsgStreamMacros.h:31
SG::ReadHandle::cptr
const_pointer_type cptr()
Dereference the pointer.
LArSCvsRawChannelMonAlg::getPartition
int getPartition(const Identifier &scid) const
Definition: LArSCvsRawChannelMonAlg.cxx:229
CaloCellPos2Ntuple.int
int
Definition: CaloCellPos2Ntuple.py:24
eta
Scalar eta() const
pseudorapidity method
Definition: AmgMatrixBasePlugin.h:83
SG::ReadHandle
Definition: StoreGate/StoreGate/ReadHandle.h:70
LArSCvsRawChannelMonAlg::m_onlineID
const LArOnlineID * m_onlineID
Definition: LArSCvsRawChannelMonAlg.h:96
LArBadXCont
Conditions-Data class holding LAr Bad Channel or Bad Feb information.
Definition: LArBadChannelCont.h:28
CaloCell_Base_ID::pos_neg
int pos_neg(const Identifier id) const
LAr field values (NOT_VALID == invalid request)
CaloDetDescrElement
This class groups all DetDescr information related to a CaloCell. Provides a generic interface for al...
Definition: Calorimeter/CaloDetDescr/CaloDetDescr/CaloDetDescrElement.h:66
CaloDetDescrManager_Base::get_element
const CaloDetDescrElement * get_element(const Identifier &cellId) const
get element by its identifier
Definition: CaloDetDescrManager.cxx:159
SG::ReadCondHandle::isValid
bool isValid()
Definition: ReadCondHandle.h:206
Identifier::get_identifier32
Identifier32 get_identifier32() const
Get the 32-bit version Identifier, will be invalid if >32 bits needed.
LArBadChannelMask::buildBitMask
StatusCode buildBitMask(const std::vector< std::string > &problemsToMask, MsgStream &msg)
Definition: LArBadChannelMask.cxx:10
ATH_UNLIKELY
#define ATH_UNLIKELY(x)
Definition: AthUnlikelyMacros.h:17
CaloCell_Base_ID::calo_sample
int calo_sample(const Identifier id) const
returns an int taken from Sampling enum and describing the subCalo to which the Id belongs.
Definition: CaloCell_Base_ID.cxx:141
ATH_MSG_VERBOSE
#define ATH_MSG_VERBOSE(x)
Definition: AthMsgStreamMacros.h:28
SG::VarHandleKey::key
const std::string & key() const
Return the StoreGate ID for the referenced object.
Definition: AthToolSupport/AsgDataHandles/Root/VarHandleKey.cxx:141
LArBadChannelMask::cellShouldBeMasked
bool cellShouldBeMasked(const LArBadChannelCont *bcCont, const HWIdentifier &hardwareId) const
Definition: LArBadChannelMask.h:42
LArSCvsRawChannelMonAlg::m_scidtool
ToolHandle< ICaloSuperCellIDTool > m_scidtool
Definition: LArSCvsRawChannelMonAlg.h:98
LArBadXCont::status
LArBC_t status(const HWIdentifier channel) const
Query the status of a particular channel or FEB This is the main client access method.
Identifier32::get_compact
value_type get_compact() const
Get the compact id.
Definition: Identifier32.h:44
MonValues::scEne
float scEne
Definition: LArSCvsRawChannelMonAlg.cxx:34
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
Monitored::Collection
ValuesCollection< T > Collection(std::string name, const T &collection)
Declare a monitored (double-convertible) collection.
Definition: MonitoredCollection.h:38
LArSCvsRawChannelMonAlg::m_badChanKey
SG::ReadCondHandleKey< LArBadChannelCont > m_badChanKey
Definition: LArSCvsRawChannelMonAlg.h:41
TRT::Hit::side
@ side
Definition: HitInfo.h:83
LArSCvsRawChannelMonAlg::m_problemsToMask
Gaudi::Property< std::vector< std::string > > m_problemsToMask
Definition: LArSCvsRawChannelMonAlg.h:49
LArSCvsRawChannelMonAlg::m_caloSuperCellMgrKey
SG::ReadCondHandleKey< CaloSuperCellDetDescrManager > m_caloSuperCellMgrKey
Definition: LArSCvsRawChannelMonAlg.h:40
LArSCvsRawChannelMonAlg::m_cablingSCKey
SG::ReadCondHandleKey< LArOnOffIdMapping > m_cablingSCKey
Definition: LArSCvsRawChannelMonAlg.h:39
LArSCvsRawChannelMonAlg::m_toolmapPerLayer
std::map< std::string, int > m_toolmapPerLayer
Definition: LArSCvsRawChannelMonAlg.h:94
python.utils.AtlRunQueryDQUtils.p
p
Definition: AtlRunQueryDQUtils.py:210
ATH_MSG_ERROR
#define ATH_MSG_ERROR(x)
Definition: AthMsgStreamMacros.h:33
LArSCvsRawChannelMonAlg::m_SCKey
SG::ReadHandleKey< LArRawSCContainer > m_SCKey
Definition: LArSCvsRawChannelMonAlg.h:36
lumiFormat.i
int i
Definition: lumiFormat.py:85
LArRawChannel
Liquid Argon ROD output object base class.
Definition: LArRawChannel.h:40
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
LArSCvsRawChannelMonAlg::fillHistograms
virtual StatusCode fillHistograms(const EventContext &ctx) const override
adds event to the monitoring histograms
Definition: LArSCvsRawChannelMonAlg.cxx:40
LArSCvsRawChannelMonAlg.h
MonValues::raw_eta
float raw_eta
Definition: LArSCvsRawChannelMonAlg.cxx:32
LArOnlineID_Base::pos_neg
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...
Definition: LArOnlineID_Base.cxx:1950
LArSCvsRawChannelMonAlg::m_bcMask
LArBadChannelMask m_bcMask
Definition: LArSCvsRawChannelMonAlg.h:100
ATH_CHECK
#define ATH_CHECK
Definition: AthCheckMacros.h:40
CaloBCIDAverage
Definition: CaloBCIDAverage.h:16
MonValues
Definition: LArSCvsRawChannelMonAlg.cxx:31
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
LArSCvsRawChannelMonAlg::m_RCKey
SG::ReadHandleKey< LArRawChannelContainer > m_RCKey
Definition: LArSCvsRawChannelMonAlg.h:37
LArOnOffIdMapping::createSignalChannelID
HWIdentifier createSignalChannelID(const Identifier &id) const
create a HWIdentifier from an Identifier (not inline)
Definition: LArOnOffIdMapping.h:126
SG::ReadHandle::isValid
virtual bool isValid() override final
Can the handle be successfully dereferenced?
LArSCvsRawChannelMonAlg::m_partitionNames
StringArrayProperty m_partitionNames
Definition: LArSCvsRawChannelMonAlg.h:52
LArSCvsRawChannelMonAlg::m_caloSamplingToLyrNS
const std::array< unsigned, CaloSampling::Unknown > m_caloSamplingToLyrNS
Definition: LArSCvsRawChannelMonAlg.h:63
lumiFormat.array
array
Definition: lumiFormat.py:91
AthMonitorAlgorithm::m_tools
ToolHandleArray< GenericMonitoringTool > m_tools
Array of Generic Monitoring Tools.
Definition: AthMonitorAlgorithm.h:338
LArSCvsRawChannelMonAlg::m_cablingKey
SG::ReadCondHandleKey< LArOnOffIdMapping > m_cablingKey
Definition: LArSCvsRawChannelMonAlg.h:38
MonValues::raw_phi
float raw_phi
Definition: LArSCvsRawChannelMonAlg.cxx:33
AtlCoolConsole.tool
tool
Definition: AtlCoolConsole.py:453
SG::CondHandleKey::initialize
StatusCode initialize(bool used=true)
xAOD::bcid
setEventNumber setTimeStamp bcid
Definition: EventInfo_v1.cxx:133
CaloSampling::getNumberOfSamplings
static constexpr unsigned int getNumberOfSamplings()
Get number of available samplings.
Definition: Calorimeter/CaloGeoHelpers/CaloGeoHelpers/CaloSampling.h:30
LArSCvsRawChannelMonAlg::initialize
virtual StatusCode initialize() override final
initialize
Definition: LArSCvsRawChannelMonAlg.cxx:10
AthMonitorAlgorithm::initialize
virtual StatusCode initialize() override
initialize
Definition: AthMonitorAlgorithm.cxx:18
CaloBCIDAverage::average
float average(const Identifier &id) const
Definition: CaloBCIDAverage.h:27
LArSCvsRawChannelMonAlg::MAXPARTITIONS
@ MAXPARTITIONS
Definition: LArSCvsRawChannelMonAlg.h:53
python.PyAthena.v
v
Definition: PyAthena.py:154
CaloDetDescrElement::getSampling
CaloCell_ID::CaloSample getSampling() const
cell sampling
Definition: Calorimeter/CaloDetDescr/CaloDetDescr/CaloDetDescrElement.h:395
MonValues::eneFrac
float eneFrac
Definition: LArSCvsRawChannelMonAlg.cxx:36
LArOnOffIdMapping::cnvToIdentifier
Identifier cnvToIdentifier(const HWIdentifier &sid) const
create an Identifier from a HWIdentifier (inline)
Definition: LArOnOffIdMapping.h:116
ATH_MSG_WARNING
#define ATH_MSG_WARNING(x)
Definition: AthMsgStreamMacros.h:32
MonValues::eneSum
float eneSum
Definition: LArSCvsRawChannelMonAlg.cxx:35
LArSCvsRawChannelMonAlg::m_caloBCIDAvg
SG::ReadHandleKey< CaloBCIDAverage > m_caloBCIDAvg
Definition: LArSCvsRawChannelMonAlg.h:44
AthCommonMsg< Gaudi::Algorithm >::msg
MsgStream & msg() const
Definition: AthCommonMsg.h:24
LArSCvsRawChannelMonAlg::m_badSCKey
SG::ReadCondHandleKey< LArBadChannelCont > m_badSCKey
Definition: LArSCvsRawChannelMonAlg.h:42
LArSCvsRawChannelMonAlg::m_calo_id
const CaloCell_ID * m_calo_id
Definition: LArSCvsRawChannelMonAlg.h:97
CaloDetDescrElement::eta
float eta() const
cell eta
Definition: Calorimeter/CaloDetDescr/CaloDetDescr/CaloDetDescrElement.h:344
LArSCvsRawChannelMonAlg::MAXLYRNS
@ MAXLYRNS
Definition: LArSCvsRawChannelMonAlg.h:59
CaloDetDescrElement::sinTh
float sinTh() const
for algorithm working in transverse Energy
Definition: Calorimeter/CaloDetDescr/CaloDetDescr/CaloDetDescrElement.h:383
Monitored::Scalar
Declare a monitored scalar variable.
Definition: MonitoredScalar.h:34
LArSCvsRawChannelMonAlg::m_warnOffenders
Gaudi::Property< bool > m_warnOffenders
Definition: LArSCvsRawChannelMonAlg.h:47
LArOnlineID_Base::channel_name
std::string channel_name(const HWIdentifier id) const
Return a string corresponding to a feedthrough name given an identifier.
Definition: LArOnlineID_Base.cxx:219
SG::AllowEmpty
@ AllowEmpty
Definition: StoreGate/StoreGate/VarHandleKey.h:30
DataVector::size
size_type size() const noexcept
Returns the number of elements in the collection.
LArSCvsRawChannelMonAlg::m_layerNames
StringArrayProperty m_layerNames
Definition: LArSCvsRawChannelMonAlg.h:55
LArOnlineID.h
CaloDetDescrElement::phi_raw
float phi_raw() const
cell phi_raw
Definition: Calorimeter/CaloDetDescr/CaloDetDescr/CaloDetDescrElement.h:352
Identifier
Definition: IdentifierFieldParser.cxx:14