Retrieve FCal cell location and details.
95 {
96
98 const EventContext& ctx = Gaudi::Hive::currentContext();
99
101
108
112 DataVect feedThrough; feedThrough.reserve(cellContainer->
size());
115
116 DataVect cellTimeVec; cellTimeVec.reserve(cellContainer->
size());
118 DataVect cellPedestal; cellPedestal.reserve(cellContainer->
size());
119 DataVect adc2Mev; adc2Mev.reserve(cellContainer->
size());
120 DataVect BadCell; BadCell.reserve(cellContainer->
size());
121
122 char rndStr[30];
123
126
127 SG::ReadCondHandle<LArOnOffIdMapping> cablingHdl{
m_cablingKey};
128 const LArOnOffIdMapping*
cabling{*cablingHdl};
129
130 if(!cabling) {
133 }
134
135 const ILArPedestal* larPedestal = nullptr;
138 ATH_MSG_ERROR(
"in getFCalData(), Could not retrieve LAr Pedestal" );
139 }
140 }
141
142 const LArOnlineID* onlineId;
144 ATH_MSG_ERROR(
"in getFCalData(),Could not get LArOnlineID!" );
145 }
146
147 const LArADC2MeV* adc2mev = nullptr;
149 SG::ReadCondHandle<LArADC2MeV> adc2mevH (
m_adc2mevKey, ctx);
150 adc2mev = *adc2mevH;
151 }
152
153 double energyGeV, xmm, ymm, zmm, dxmm, dymm, dzmm, cellTime;
154 double energyAllLArFcal = 0.;
155
156 for(;it1!=it2;++it1){
157
158 if((*it1)->badcell()) BadCell.push_back(1);
160 else BadCell.push_back(-1);
161
163 Identifier cellid = (*it1)->ID();
164
165 HWIdentifier LArhwid =
cabling->createSignalChannelIDFromHash((*it1)->caloDDE()->calo_hash());
166
167
169 bool maskChannel = false;
172 maskChannel = true;
173 break;
174 }
175 }
176 if (maskChannel) continue;
177 }
178
179 energyGeV = (*it1)->energy()*(1./
GeV);
181 energyAllLArFcal += energyGeV;
182 idVec.emplace_back((Identifier::value_type)(*it1)->ID().get_compact() );
183
184 xmm = (*it1)->x()*0.1;
185 ymm = (*it1)->y()*0.1;
186 zmm = (*it1)->z()*0.1;
187 x.emplace_back( gcvt( xmm, 4, rndStr) );
188 y.emplace_back( gcvt( ymm, 4, rndStr) );
189 z.emplace_back( gcvt( zmm, 4, rndStr) );
190
192 feedThrough.emplace_back(onlineId->
feedthrough(LArhwid));
193 slot.emplace_back(onlineId->
slot(LArhwid));
194
196 cellTime = (*it1)->time();
197 cellTimeVec.emplace_back( gcvt( cellTime,
m_cellTimePrec, rndStr) );
198 cellGain.emplace_back( (*it1)->gain() );
199
200 int fcalgain = (*it1)->gain();
201 float pedestal=larPedestal->
pedestal(LArhwid,fcalgain);
202 float pedvalue=0;
204 else pedvalue = 0;
205 cellPedestal.emplace_back(pedvalue);
206
207 LArVectorProxy polynom_adc2mev = adc2mev->
ADC2MEV(cellid,fcalgain);
208 if (polynom_adc2mev.size()==0){ adc2Mev.emplace_back(-1); }
209 else{ adc2Mev.emplace_back(polynom_adc2mev[1]); }
210 }
211
212 const CaloDetDescrElement* elt = (*it1)->caloDDE();
213
214 dxmm = elt->
dx()*0.1;
215 dymm = elt->
dy()*0.1;
216 dzmm = elt->
dz()*0.1;
217 dx.emplace_back( gcvt( dxmm, 4, rndStr) );
218 dy.emplace_back( gcvt( dymm, 4, rndStr) );
219 dz.emplace_back( gcvt( dzmm, 4, rndStr) );
220
222 sub.emplace_back(1);
223 else
224 sub.emplace_back(0);
225 }
226
227 ATH_MSG_DEBUG(
" Total energy in FCAL (LAr) in GeV : " << energyAllLArFcal );
228
229
237 DataMap[
"energy"] = std::move(energy);
238 DataMap[
"id"] = std::move(idVec);
239 DataMap[
"channel"] = std::move(channel);
240 DataMap[
"feedThrough"] = std::move(feedThrough);
241 DataMap[
"slot"] = std::move(slot);
242
244 DataMap[
"BadCell"] = std::move(BadCell);
245 }
DataMap[
"sub"] = std::move(sub);
246
247
249 DataMap[
"cellTime"] = std::move(cellTimeVec);
250 DataMap[
"cellGain"] = std::move(cellGain);
251 DataMap[
"cellPedestal"] = std::move(cellPedestal);
252 DataMap[
"adc2Mev"] = std::move(adc2Mev);
253 }
254
256
257
259
260 }
#define ATH_MSG_WARNING(x)
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
SG::ReadCondHandleKey< LArADC2MeV > m_adc2mevKey
SG::ReadCondHandleKey< LArOnOffIdMapping > m_cablingKey
virtual StatusCode retrieve(ToolHandle< IFormatTool > &FormatTool)
Retrieve all the data.
virtual std::string dataTypeName() const
Return the name of the data type.
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.