Retrieve HEC cell location and details.
95 {
96
98 const EventContext& ctx = Gaudi::Hive::currentContext();
99
101
107 DataVect feedThrough; feedThrough.reserve(cellContainer->
size());
109
110 DataVect cellTimeVec; cellTimeVec.reserve(cellContainer->
size());
112 DataVect cellPedestal; cellPedestal.reserve(cellContainer->
size());
113 DataVect adc2Mev; adc2Mev.reserve(cellContainer->
size());
114 DataVect BadCell; BadCell.reserve(cellContainer->
size());
115
116 char rndStr[30];
117
120
121
122 SG::ReadCondHandle<LArOnOffIdMapping> cablingHdl{
m_cablingKey, ctx};
123 const LArOnOffIdMapping*
cabling{*cablingHdl};
124 if(!cabling) {
127 }
128
129 const ILArPedestal* larPedestal = nullptr;
132 ATH_MSG_ERROR(
"in getHECData(), Could not retrieve LAr Pedestal" );
133 }
134 }
135
136 const LArOnlineID* onlineId = nullptr;
138 ATH_MSG_ERROR(
"in getHECData(),Could not get LArOnlineID!" );
139 }
140
141 const LArADC2MeV* adc2mev = nullptr;
143 SG::ReadCondHandle<LArADC2MeV> adc2mevH (
m_adc2mevKey, ctx);
144 adc2mev = *adc2mevH;
145 }
146
147 double energyGeV{},cellTime{};
148 double energyAllLArHEC = 0.;
149
150 for(;it1!=it2;++it1){
152
153 if((*it1)->badcell()){ BadCell.push_back(1); }
154 else{ BadCell.push_back(-1); }
155
157 Identifier cellid = (*it1)->ID();
158
159 HWIdentifier LArhwid =
cabling->createSignalChannelIDFromHash((*it1)->caloDDE()->calo_hash());
160
161
163 bool maskChannel = false;
166 maskChannel = true;
167 break;
168 }
169 }
170 if (maskChannel) continue;
171 }
172
173 energyGeV = (*it1)->energy()*(1./
GeV);
175 energyAllLArHEC += energyGeV;
176
177 idVec.emplace_back((Identifier::value_type)(*it1)->ID().get_compact() );
178 phi.emplace_back((*it1)->phi());
179 eta.emplace_back((*it1)->eta());
181 feedThrough.emplace_back(onlineId->
feedthrough(LArhwid));
182 slot.emplace_back(onlineId->
slot(LArhwid));
183
185 cellTime = (*it1)->time();
186 cellTimeVec.emplace_back( gcvt( cellTime,
m_cellTimePrec, rndStr) );
187 cellGain.emplace_back( (*it1)->gain() );
188
189 int hecgain = (*it1)->gain();
190 float pedestal=larPedestal->
pedestal(LArhwid,hecgain);
191 float pedvalue=0;
193 else pedvalue = 0;
194 cellPedestal.emplace_back(pedvalue);
195
196 LArVectorProxy polynom_adc2mev = adc2mev->
ADC2MEV(cellid,hecgain);
197 if (polynom_adc2mev.size()==0){ adc2Mev.emplace_back(-1); }
198 else{ adc2Mev.emplace_back(polynom_adc2mev[1]); }
199 }
200 }
201
202 ATH_MSG_DEBUG(
" Total energy in HEC (LAr) in GeV : " << energyAllLArHEC );
203
204
208 dataMap[
"energy"] = std::move(energy);
209 dataMap[
"id"] = std::move(idVec);
210 dataMap[
"channel"] = std::move(channel);
211 dataMap[
"feedThrough"] = std::move(feedThrough);
212 dataMap[
"slot"] = std::move(slot);
213
215 dataMap[
"BadCell"] = std::move(BadCell);
216 }
217
219 dataMap[
"cellTime"] = std::move(cellTimeVec);
220 dataMap[
"cellGain"] = std::move(cellGain);
221 dataMap[
"cellPedestal"] = std::move(cellPedestal);
222 dataMap[
"adc2Mev"] = std::move(adc2Mev);
223 }
224
226 << " retrieved with " << nEntries << " entries" );
227
228
229
231
232 }
Scalar eta() const
pseudorapidity method
Scalar phi() const
phi method
const ServiceHandle< StoreGateSvc > & detStore() const
CaloCellContainer::const_iterator beginConstCalo(CaloCell_ID::SUBCALO caloNum) const
get const iterators on cell of just one calo
CaloCellContainer::const_iterator endConstCalo(CaloCell_ID::SUBCALO caloNum) const
DataModel_detail::const_iterator< DataVector > const_iterator
size_type size() const noexcept
Returns the number of elements in the collection.
virtual float pedestal(const HWIdentifier &id, int gain) const =0
virtual std::string dataTypeName() const
Return the name of the data type.
SG::ReadCondHandleKey< LArADC2MeV > m_adc2mevKey
virtual StatusCode retrieve(ToolHandle< IFormatTool > &FormatTool)
Retrieve all the data.
SG::ReadCondHandleKey< LArOnOffIdMapping > m_cablingKey
const LArVectorProxy ADC2MEV(const HWIdentifier &id, int gain) const
int feedthrough(const HWIdentifier id) const
Return the feedthrough of a hardware cell identifier : feedthrough = [0,31] Barrel - A/C side or H/...
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...
int channel(const HWIdentifier id) const
Return the channel number of a hardware cell identifier channel = [0,127] in all FEB.
std::map< std::string, DataVect > DataMap
std::vector< DataType > DataVect
Defines a map with a key and a vector of DataType objects e.g.