124 const std::string& datatype,
130 const EventContext& ctx = Gaudi::Hive::currentContext();
144 DataVect channel; channel.reserve(cellContainer->
size());
145 DataVect feedThrough; feedThrough.reserve(cellContainer->
size());
146 DataVect slotVec; slotVec.reserve(cellContainer->
size());
148 DataVect cellTimeVec; cellTimeVec.reserve(cellContainer->
size());
149 DataVect cellGain; cellGain.reserve(cellContainer->
size());
150 DataVect cellPedestal; cellPedestal.reserve(cellContainer->
size());
151 DataVect adc2Mev; adc2Mev.reserve(cellContainer->
size());
156 DataVect LArSampleIndexVec; LArSampleIndexVec.reserve(cellContainer->
size());
158 std::string LArSampleIndexStr=
"adcCounts multiple=\"0\"";
163 if (LArDigitCnt_raw_handle.
isValid()) {
164 LArDigitCnt = &(*LArDigitCnt_raw_handle);
166 else if (LArDigitCnt_esd_handle.
isValid()) {
167 LArDigitCnt = &(*LArDigitCnt_esd_handle);
176 ATH_MSG_ERROR(
"in getLArDigitData(), Could not retrieve LAr Pedestal" );
181 ATH_MSG_ERROR(
"in getLArDigitData(),Could not get LArOnlineID!" );
200 auto pCellIndex = std::make_unique<std::array<int, 200000>>();
206 double energyGeV,cellTime;
208 for (
const LArDigit* digit : *LArDigitCnt) {
210 LArHardwareId = digit->hardwareID();
211 if (!cabling->isOnlineConnected(LArHardwareId))
continue;
213 LArId = cabling->cnvToIdentifier(LArHardwareId);
220 nLArSamples = digit->nsamples();
221 std::vector<short>
LArSamples = digit->samples();
222 int largain = digit->gain();
224 int slot = onlineId->
slot(LArHardwareId);
225 int larchan = onlineId->
channel(LArHardwareId);
226 float pedestal=larPedestal->
pedestal(LArHardwareId,largain);
240 bool maskChannel =
false;
247 if (maskChannel)
continue;
255 energyGeV = (*cellContainer)[
Index]->energy() * (1./
GeV);
257 idVec.push_back(
DataType((*cellContainer)[
Index]->
ID().get_compact() ));
261 cellTime = (*cellContainer)[
Index]->time();
263 cellPedestal.push_back(
DataType(pedvalue));
264 cellGain.push_back(
DataType(largain));
265 channel.push_back(
DataType(larchan));
266 feedThrough.push_back(
DataType(FT));
268 if (polynom_adc2mev.size()==0){
271 adc2Mev.push_back(
DataType(polynom_adc2mev[1]));
274 LArSampleIndexStr=
"adcCounts multiple=\""+
DataType(nLArSamples).toString()+
"\"";
275 for(
int i=0; i<nLArSamples; i++) LArSampleIndexVec.push_back(
DataType(
LArSamples[i]));
282 energyGeV = (*cellContainer)[
Index]->energy() * (1./
GeV);
284 idVec.push_back(
DataType((*cellContainer)[
Index]->
ID().get_compact() ));
289 cellTime = (*cellContainer)[
Index]->time();
291 cellPedestal.push_back(
DataType(pedvalue));
292 cellGain.push_back(
DataType(largain));
293 channel.push_back(
DataType(larchan));
294 feedThrough.push_back(
DataType(FT));
296 if (polynom_adc2mev.size()==0)
299 adc2Mev.push_back(
DataType(polynom_adc2mev[1]));
301 LArSampleIndexStr=
"adcCounts multiple=\""+
DataType(nLArSamples).toString()+
"\"";
302 for(
int i=0; i<nLArSamples; i++) LArSampleIndexVec.push_back(
DataType(
LArSamples[i]));
306 else if(datatype ==
"FCAL" &&
m_calocell_id->is_fcal(LArId)) {
308 energyGeV = (*cellContainer)[
Index]->energy() * (1./
GeV);
310 idVec.push_back(
DataType((*cellContainer)[
Index]->
ID().get_compact() ));
323 cellTime = (*cellContainer)[
Index]->time();
325 cellPedestal.push_back(
DataType(pedvalue));
326 cellGain.push_back(
DataType(largain));
327 channel.push_back(
DataType(larchan));
328 feedThrough.push_back(
DataType(FT));
330 if (polynom_adc2mev.size()==0)
333 adc2Mev.push_back(
DataType(polynom_adc2mev[1]));
335 LArSampleIndexStr=
"adcCounts multiple=\""+
DataType(nLArSamples).toString()+
"\"";
336 for(
int i=0; i<nLArSamples; i++) LArSampleIndexVec.push_back(
DataType(
LArSamples[i]));
352 for (;it1!=it2;++it1) {
364 HWIdentifier LArhwid = cabling->createSignalChannelIDFromHash((*it1)->caloDDE()->calo_hash());
371 bool maskChannel =
false;
378 if (maskChannel)
continue;
381 energyGeV = (*it1)->energy()*(1./
GeV);
383 idVec.push_back(
DataType((*it1)->ID().get_compact() ));
388 cellTime = (*it1)->time();
390 cellGain.push_back(
DataType((*it1)->gain()));
391 int largain = (*it1)->gain();
393 float pedestal=larPedestal->
pedestal(LArhwid,largain);
396 cellPedestal.push_back(
DataType(pedvalue));
398 LArVectorProxy polynom_adc2mev = adc2mev->ADC2MEV(cellid,largain);
399 if (polynom_adc2mev.size()==0){
402 adc2Mev.push_back(
DataType(polynom_adc2mev[1]));
406 if (datatype ==
"LAr") {
411 LArSampleIndexStr=
"adcCounts multiple=\""+
DataType(nLArSamples).toString()+
"\"";
412 for(
int i=0; i<nLArSamples; i++) LArSampleIndexVec.push_back(
DataType(0)); }
415 else if (datatype ==
"HEC") {
420 LArSampleIndexStr=
"adcCounts multiple=\""+
DataType(nLArSamples).toString()+
"\"";
421 for(
int i=0; i<nLArSamples; i++) LArSampleIndexVec.push_back(
DataType(0)); }
424 else if (datatype ==
"FCAL") {
426 x.push_back(
DataType( (*it1)->x()*0.1 ));
427 y.push_back(
DataType( (*it1)->y()*0.1 ));
436 LArSampleIndexStr=
"adcCounts multiple=\""+
DataType(nLArSamples).toString()+
"\"";
437 for(
int i=0; i<nLArSamples; i++) LArSampleIndexVec.push_back(
DataType(0));
448 const auto nEntries =
phi.size();
449 if(!(datatype==
"FCAL")){
459 DataMap[
"energy"] = std::move(energy);
460 DataMap[
"id"] = std::move(idVec);
461 DataMap[
"channel"] = std::move(channel);
462 DataMap[
"feedThrough"] = std::move(feedThrough);
463 DataMap[
"slot"] = std::move(slotVec);
466 DataMap[
"cellTime"] = std::move(cellTimeVec);
467 DataMap[
"cellGain"] = std::move(cellGain);
468 DataMap[
"cellPedestal"] = std::move(cellPedestal);
469 DataMap[
"adc2Mev"] = std::move(adc2Mev);
471 DataMap[LArSampleIndexStr] = std::move(LArSampleIndexVec);