ATLAS Offline Software
EventReaderAlg.cxx
Go to the documentation of this file.
1 // Copyright (C) 2002-2024 CERN for the benefit of the ATLAS collaboration
2 
4 
8 
9 #include "Identifier/Identifier.h"
11 
12 #include "CaloGeoHelpers/CaloSampling.h"
13 
16 
18 
19 #include <bitset>
20 
21 EventReaderAlg::EventReaderAlg( const std::string& name, ISvcLocator* pSvcLocator ) :
22  EventReaderBaseAlg(name, pSvcLocator)
23  , m_ntsvc("THistSvc/THistSvc", name)
24  {}
25 
27  ATH_MSG_INFO ("Initializing " << name() << "...");
28  ATH_MSG_INFO ("(EventReader) Initializing conditions...");
29 
30  // Conditions
33  ATH_CHECK(m_noiseCDOKey.initialize()); //---- retrieve the noise CDO
42  ATH_MSG_DEBUG(" (EventReader) Condition Keys initialized!");
43 
44  // Containers
46  ATH_CHECK(m_primVertSgKey.initialize());
51  ATH_CHECK(m_truthEventCntSgKey.initialize());
56  ATH_MSG_DEBUG(" (EventReader) Container Keys initialized!");
57 
58  // -- Retrieve ID Helpers --
59  ATH_CHECK( detStore()->retrieve(m_onlineLArID, "LArOnlineID") ); // get online ID info from LAr (online)
60  ATH_CHECK( detStore()->retrieve (m_calocell_id, "CaloCell_ID") );
62 
63  StatusCode sc = detStore()->retrieve(m_caloIdMgr);
64  if (sc.isFailure()) {
65  ATH_MSG_ERROR(" Unable to retrieve CaloIdManager from DetectoreStore");
66  return StatusCode::FAILURE;
67  }
68  else{
72  }
73  // -------------------------
74 
75  // Book the variables to save in the *.root
76  m_Tree = new TTree("dumpedData", "dumpedData");
77  m_secondTree = new TTree("lumiblockData", "lumiblockData");
78 
79  ATH_MSG_DEBUG("Booking branches...");
80  bookBranches(m_Tree); // book TTree with branches
82 
83  if (!m_ntsvc->regTree("/rec/tree1", m_Tree).isSuccess()) {
84  ATH_MSG_ERROR("could not register tree [dumpedData]");
85  return StatusCode::FAILURE;
86  }
87  if (!m_ntsvc->regTree("/rec/tree2", m_secondTree).isSuccess()) {
88  ATH_MSG_ERROR("could not register tree [database]");
89  return StatusCode::FAILURE;
90  }
91 
92  if (m_doTagAndProbe && m_doElecSelectByTrackOnly) ATH_MSG_INFO("Entering single_e mode...");
93  else if (m_doTagAndProbe && !m_doElecSelectByTrackOnly) ATH_MSG_INFO("Entering Zee T&P mode...");
94  else {
95  ATH_MSG_ERROR("No valid electron chain selected!");
96  return StatusCode::FAILURE;
97  }
98 
99  return StatusCode::SUCCESS;
100 }
101 
103  ATH_MSG_DEBUG ("Executing " << name() << "...");
104  ATH_MSG_DEBUG("Cleanning of event variables...");
105  const EventContext& ctx = getContext();
106  clear(); // clear all variables selected to dump to the output NTuple.
107 
108  // Conditions
109  if (!m_isMC){
110 
111  if (!m_EneRescalerFldr.empty()){
113  const coral::Blob& blob = (**EneRescalerHdl)["CaloCondBlob16M"].data<coral::Blob>();
114  if (blob.size()<3) ATH_MSG_WARNING("Found empty blob, no correction needed");
115  m_EneRescaler = CaloCondBlobFlt::getInstance(blob); // offline egamma cell correction (due from 5 to 4 downsampling rate)
116  ATH_MSG_DEBUG("offlineEnergyRescaler is set!");
117  }
118 
119  if (!m_run2DSPThresholdsKey.empty()) {
121  m_run2DSPThresh = std::unique_ptr<LArDSPThresholdsFlat>(new LArDSPThresholdsFlat(*dspThrshAttrHdl));
122  ATH_MSG_DEBUG("DSPThreshold has set!");
123  }
124 
125  if (!m_lumiDataKey.empty()){
127  m_lumis =*lumiHdl;
128  ATH_MSG_DEBUG("LuminosityCondData is set!");
129  }
130 
133  m_oflHVCorr =*oflHVCorrHdl;
134  ATH_MSG_DEBUG("OfflineHVCorrection is set!");
135  }
136  }
137  else{
138  if (!m_fSamplKey.empty()){ // MC
140  m_fSampl = *fSamplHdl;
141  ATH_MSG_DEBUG("SamplingFraction is set!");
142  }
143  }
144 
152 
153  m_larCabling = *larCablingHdl;
154  m_noiseCDO = *noiseHdl;
155  m_peds = *pedHdl;
156  m_adc2MeVs = *adc2mevHdl;
157  m_ofcs = *ofcHdl;
158  m_shapes = *shapeHdl;
159  m_minBiasAvgs = *minBiasAvgHdl;
160 
162  if (!ei.isValid()) ATH_MSG_ERROR(" EventInfo container is not valid!");
163 
165  ATH_MSG_WARNING("Event not passing LAr! Skipping event.");
166  return StatusCode::SUCCESS;
167  }
168 
170  if (!primVertexCnt.isValid()) ATH_MSG_ERROR(" Primary Vertex container is not valid!");
171 
172  // *** Lumiblock data ***
173  // Verify if ei->lumiBlock() was dumped into lb_lumiblock. if not, add it.
174  // Each LB entry should be dumped just once, since their content doesnt change per event.
175  if (std::count(m_lb_lumiblock->begin(), m_lb_lumiblock->end(), ei->lumiBlock()) == 0){
176  if(!dumpLumiblockInfo(ei)) ATH_MSG_INFO("Lumiblock information cannot be collected!");
177  }
178 
179  // EventInfo
180  if(!dumpEventInfo(ei)) ATH_MSG_INFO("Event information cannot be collected!");
181 
182  // Clusters
183  if (m_doClusterDump){
184 
186 
187  if(!cls.isValid()){
188  ATH_MSG_ERROR("CaloCluster container is not valid!");
189  return StatusCode::FAILURE;
190  }
191 
192  for (const xAOD::CaloCluster *cl : *cls){
193  ATH_MSG_DEBUG ("Cluster "<< m_c_clusterIndexCounter << ", Total size: " << cl->numberCells() << "/ "<< cl->clusterSize() << ", etaBE: " << cl->etaBE(2) << ", numberCellsInSampling: " << cl->numberCellsInSampling(CaloSampling::EMB2) <<", eta size: " << cl->etasize(CaloSampling::EMB2) << ", phi size: " << cl->phisize(CaloSampling::EMB2) );
194 
195  if (! dumpClusterCells(cl, m_c_clusterIndexCounter , ctx) ) ATH_MSG_WARNING ("CaloCluster Cells cannot be dumped for Zee.");
196 
198  }
199  }
200 
201  // Apply the Zee cut
203 
204  if(!dumpZeeCut(ei,primVertexCnt, ctx)) ATH_MSG_DEBUG("Zee cut algorithm cannot be executed!");
205 
206  std::string eSelectionText = "";
207  SG::ReadHandle<xAOD::ElectronContainer> myElectronsSelection;
208 
209  if (m_doElecSelectByTrackOnly) eSelectionText = "Number of myElectronsSelection single electrons: ";
210  else eSelectionText = "Number of myElectronsSelection tagAndProbe Zee candidates: ";
211 
212  myElectronsSelection = SG::makeHandle(m_myElecSelectionSgKey,ctx);
213  // Optional: Skip empty events.
214  if (m_skipEmptyEvents && (myElectronsSelection->size() == 0)){
215  ATH_MSG_INFO("This event has no selected electrons! Cleanning event variables and skipping writing to NTuple...");
216  clear(); // clear all variables selected to dump to the output NTuple.
217  return StatusCode::SUCCESS;
218  }
219 
220  if(!FillNTupleWithSelectedElectrons(ei, primVertexCnt, myElectronsSelection, eSelectionText, ctx)) ATH_MSG_DEBUG("FillNTupleWithElectrons cannot be executed!");
221 
222  if (m_isMC){
223  // Particle Truth
224  if (m_doTruthPartDump){
226  if (!truthParticleCnt.isValid()) ATH_MSG_ERROR("TruthParticleContainer is not valid!");
227 
228  if(!dumpTruthParticle(myElectronsSelection, truthParticleCnt)) ATH_MSG_DEBUG("Truth Particle information cannot be collected!");
229  }
230  }
231  } // end if-start TagAndProbe chain
232 
233  m_Tree->Fill();
234 
235  return StatusCode::SUCCESS;
236 }
237 
239 
240  ATH_MSG_INFO(eSelectionText << elContainer->size() );
241 
242  int electronIndex = 0;
243  for (const xAOD::Electron *elec : *elContainer){
244 
245  const auto& clusLinks = elec->caloClusterLinks(); // get the cluster links for the electron
246 
247  // loop over clusters and dump cells
248  for (const auto& clusLink : clusLinks){
249 
250  // get associated topoclusters from superclusters
252  auto assocCls = xAOD::EgammaHelpers::getAssociatedTopoClusters( (*clusLink) );
253 
254  for ( auto assocCl : assocCls){
255  ATH_MSG_DEBUG ("AssociatedTopoCluster " << m_c_clusterIndexCounter << ": e: "<< assocCl->e() << ", eta: " << assocCl->eta() << ", phi: " << assocCl->phi() <<". Total size: " << assocCl->numberCells() << "/ "<< assocCl->clusterSize() << ", etaBE: " << assocCl->etaBE(2) << ", numberCellsInSampling: " << assocCl->numberCellsInSampling(CaloSampling::EMB2) <<", eta size: " << assocCl->etasize(CaloSampling::EMB2) << ", phi size: " << assocCl->phisize(CaloSampling::EMB2) );
256  if (! dumpClusterCells(assocCl, m_c_clusterIndexCounter, ctx ) ) ATH_MSG_WARNING ("CaloCluster Cells cannot be dumped for Zee.");
257 
259  }
260  }
261  else{ // dump only the superclusters
262  if (! dumpClusterCells((*clusLink), m_c_clusterIndexCounter, ctx ) ) ATH_MSG_WARNING ("CaloCluster Cells cannot be dumped for Zee.");
264  }
265  m_c_electronIndex_clusterLvl->push_back(electronIndex); // electron indexes for each cluster
266  } //end-for loop in clusLinks
267 
268  // dump tag and probe electrons
269  if (!dumpElectrons(elec)) ATH_MSG_WARNING ("Cannot dump ordinary electrons...");
270  if (!dumpOfflineSS(elec)) ATH_MSG_WARNING ("Cannot dump offline shower shapes for electrons...");
271  if (!dumpPrimVertexAssocToElectron(elec, primVertexCnt, ei)) ATH_MSG_WARNING ("Cannot dump primary vertexes info associated to electrons...");
272  m_el_index->push_back(electronIndex);
273 
274  electronIndex++;
275 
276  } // end-for loop in m_electronsSelectedByTrack electrons
277 
278  return StatusCode::SUCCESS;
279 }
280 
282  m_el_f1->push_back(electron->showerShapeValue(xAOD::EgammaParameters::f1));
283  m_el_f3->push_back(electron->showerShapeValue(xAOD::EgammaParameters::f3));
284  m_el_eratio->push_back(electron->showerShapeValue(xAOD::EgammaParameters::Eratio));
285  m_el_weta1->push_back(electron->showerShapeValue(xAOD::EgammaParameters::weta1));
286  m_el_weta2->push_back(electron->showerShapeValue(xAOD::EgammaParameters::weta2));
287  m_el_fracs1->push_back(electron->showerShapeValue(xAOD::EgammaParameters::fracs1));
288  m_el_wtots1->push_back(electron->showerShapeValue(xAOD::EgammaParameters::wtots1));
289  m_el_e277->push_back(electron->showerShapeValue(xAOD::EgammaParameters::e277));
290  m_el_reta->push_back(electron->showerShapeValue(xAOD::EgammaParameters::Reta));
291  m_el_rphi->push_back(electron->showerShapeValue(xAOD::EgammaParameters::Rphi));
292  m_el_deltae->push_back(electron->showerShapeValue(xAOD::EgammaParameters::DeltaE));
293  m_el_rhad->push_back(electron->showerShapeValue(xAOD::EgammaParameters::Rhad));
294  m_el_rhad1->push_back(electron->showerShapeValue(xAOD::EgammaParameters::Rhad1));
295 
296  return StatusCode::SUCCESS;
297 }
298 
300  float electronEt = electron->e()/(cosh(electron->trackParticle()->eta()));
301  float track_p = (electron->trackParticle())->pt()*std::cosh((electron->trackParticle())->eta());
302  float eoverp = (electron->caloCluster())->e()/track_p;
303  m_el_eoverp->push_back(eoverp);
304  m_el_Pt->push_back(electron->pt());
305  m_el_et->push_back(electronEt);
306  m_el_Eta->push_back(electron->eta());
307  m_el_Phi->push_back(electron->phi());
308  m_el_m->push_back(electron->m());
309 
310  return StatusCode::SUCCESS;
311 }
312 
314 
315  const xAOD::TrackParticle *trackElectron = el->trackParticle();
316 
317  // check for primary vertex in the event
318  // *************** Primary vertex check ***************
319  //loop over vertices and look for good primary vertex
320  float bestDeltaZ0Sin = 9999.0, bestZfromVertex = 9999.0, bestXFromVertex = 9999.0, bestYFromVertex = 9999.0, bestDeltaZ0 = 9999.0;
321  double bestD0Sig = 9999.0;
322  int vtxCounter = 0;//, bestVtxCounter = 0;
323  bool isAnyClosestVtx = false;
324  for (const xAOD::Vertex *vxIter : *primVertexCnt) {
325 
326  // Select good primary vertex
327  float zFromVertex = vxIter->z();
328  float delta_z0 = fabs(trackElectron->z0() + trackElectron->vz() - zFromVertex); //where trk.vz() represents the point of reference for the z0 calculation (in this case, the beamspot position along the z axis).
329  float delta_z0_sin = delta_z0 * sin(trackElectron->theta()); //where sin(trk.theta()) parameterises the uncertainty of the z0 measurement.
330  double d0sig = xAOD::TrackingHelpers::d0significance( trackElectron, evtInfo->beamPosSigmaX(), evtInfo->beamPosSigmaY(), evtInfo->beamPosSigmaXY() );
331 
332 
333  if ((vxIter->vertexType() == xAOD::VxType::PriVtx) && ( fabs(delta_z0_sin) < m_z0Tag) && (fabs(d0sig) < m_d0TagSig) ){ //is this vertex passed into d0sig and dz0Sin conditions?
334  isAnyClosestVtx = true;
335 
336  ATH_MSG_DEBUG ("(dumpPrimVertexAssocToElectron) Vertex "<< vtxCounter << ": This is a primary vertex. |delta_z0_sin| < 0.5 mm ("<< delta_z0_sin << "). |d0sig| < 5 (" << d0sig << ")");
337  if ( (fabs(delta_z0_sin) < fabs(bestDeltaZ0Sin) ) && (fabs(d0sig) < fabs(bestD0Sig)) ) // is this vertex the closest one to that electron track?
338  {
339  // assign all variables to dump:
340  ATH_MSG_DEBUG ("(dumpPrimVertexAssocToElectron) New best associated Vertex. Vertex "<< vtxCounter << ": |delta_z0_sin| < 0.5 mm ("<< delta_z0_sin << "). |d0sig| < 5 (" << d0sig << ")");
341 
342  bestDeltaZ0Sin = delta_z0_sin;
343  bestD0Sig = d0sig;
344 
345  bestXFromVertex = vxIter->x();
346  bestYFromVertex = vxIter->y();
347  bestZfromVertex = zFromVertex;
348  bestDeltaZ0 = delta_z0;
349  }
350  }
351  vtxCounter++;
352  }
353  // --------- Dump here: ---------
354  if (isAnyClosestVtx){
355  m_vtx_x->push_back(bestXFromVertex);
356  m_vtx_y->push_back(bestYFromVertex);
357  m_vtx_z->push_back(bestZfromVertex);
358  m_vtx_deltaZ0->push_back(bestDeltaZ0);
359  m_vtx_delta_z0_sin->push_back(bestDeltaZ0Sin);
360  m_vtx_d0sig->push_back(bestD0Sig);
361  }
362  else{
363  ATH_MSG_ERROR("A pre-selected electron track has no closest vertex to dump! (weird?)");
364  }
365  // -------------------------------
366 
367 
368  return StatusCode::SUCCESS;
369 }
370 
372 
373  if (!m_isMC){
375  ATH_MSG_INFO ("LB_data: lbLuminosityPerBCIDVector stored into ntuple." );
376  }
377  m_lb_lumiblock->push_back( ei->lumiBlock() );
378  ATH_MSG_INFO ("LB_data: Lumiblock "<< ei->lumiBlock() << " stored into ntuple." );
379 
380  return StatusCode::SUCCESS;
381 }
382 
384  m_e_runNumber = ei->runNumber();
386  m_e_bcid = ei->bcid();
387  m_e_lumiBlock = ei->lumiBlock();
390 
391  ATH_MSG_INFO ("in execute, runNumber = " << m_e_runNumber << ", eventNumber = " << m_e_eventNumber << ", bcid: " << m_e_bcid );
392 
393  return StatusCode::SUCCESS;
394 }
395 
397  ATH_MSG_INFO("Dumping Zee cut region...");
398 
399  auto electronSelectionCnt = std::make_unique<ConstDataVector<xAOD::ElectronContainer>> (SG::VIEW_ELEMENTS);
400  auto TagAndProbeElectronSelectionCnt = std::make_unique<ConstDataVector<xAOD::ElectronContainer>> (SG::VIEW_ELEMENTS);
401 
403 
404  if (!electronsCnt.isValid()) {
405  ATH_MSG_ERROR("Electron container is not valid!");
406  return StatusCode::FAILURE;
407  }
408 
409  // Pre-selection of electrons
410  for (auto el : *electronsCnt){
411  if (std::abs(el->eta()) > m_elecEtaCut){ // apply electron |eta| cut
412  continue;
413  }
414  if (trackSelectionElectrons(el, primVertexCnt, ei) == true){
415  if (eOverPElectron(el) == true){ // if 0.7 < E/p < 1.4
416  electronSelectionCnt->push_back( el );
417  }
418  }
419  else continue;
420  }
421 
422  if (m_doElecSelectByTrackOnly){ // do not proceed to T&P
423  ATH_CHECK (evtStore()->record( electronSelectionCnt.release(), "MySelectedElectrons"));
424  return StatusCode::SUCCESS;
425  }
426 
427  if (electronSelectionCnt->size() < 2){
428  ATH_MSG_DEBUG("(TagAndProbe) Not enough Electrons for T&P (nElectrons="<<electronSelectionCnt->size() << "). Storing "<<electronSelectionCnt->size()<<" electron on MyTagAndProbeElectrons container. This will not be dumped!");
429  ATH_CHECK (evtStore()->record( TagAndProbeElectronSelectionCnt.release(), "MyTagAndProbeElectrons"));
430  return StatusCode::SUCCESS;
431  }
432 
433  // ## Loop over electron container in search of Zee pairs ##
434  for (const xAOD::Electron *elTag : *electronSelectionCnt){
435 
436  if (! isTagElectron(elTag)) continue;
437  ATH_MSG_DEBUG("(TagAndProbe) Electron is a Tag!");
438 
439  for (const xAOD::Electron *elProbe : *electronSelectionCnt){
440  if (elTag==elProbe) continue;
441 
442  //check for charge (opposite charges for Zee)
443  if ( elTag->charge() == elProbe->charge() ) continue;
444  ATH_MSG_DEBUG ("(TagAndProbe) Electron Pair Charges are opposite! Good.");
445 
446  //check for Zee mass
447  TLorentzVector el1;
448  TLorentzVector el2;
449  el1.SetPtEtaPhiE(elTag->pt(), elTag->trackParticle()->eta(), elTag->trackParticle()->phi(), elTag->e());
450  el2.SetPtEtaPhiE(elProbe->pt(), elProbe->trackParticle()->eta(), elProbe->trackParticle()->phi(), elProbe->e());
451 
452  float tpPairMass = (el1 + el2).M(); // mass of the electron pair
453  ATH_MSG_DEBUG ("(TagAndProbe) Electron Pair mass: " << tpPairMass << ". Min: "<< m_minZeeMassTP*GeV << ". Max: " << m_maxZeeMassTP*GeV);
454  if (!((tpPairMass > m_minZeeMassTP*GeV) && (tpPairMass < m_maxZeeMassTP*GeV))){
455  ATH_MSG_DEBUG ("(TagAndProbe) Electron pair not in Z mass window.");
456  continue;
457  }
458  else{
459  ATH_MSG_INFO ("(TagAndProbe) Electron-positron pair are in Z mass window.");
460  // test for goodProbeElectron
461  if (!isGoodProbeElectron(elProbe)){
462  ATH_MSG_DEBUG (" Probe electron not passed in Goodnes of Probe test.");
463  continue;
464  }
465  ATH_MSG_INFO("(TagAndProbe) Electron is a good probe.");
466  ATH_MSG_INFO ("Tag and probe pair found.");
467 
468  ATH_MSG_INFO ("TAG: pt="<< elTag->pt() << " e="<< elTag->e());
469  ATH_MSG_INFO ("PRO: pt="<< elProbe->pt() << " e="<< elProbe->e());
470  ATH_MSG_INFO ("Zee: M="<< tpPairMass << " E="<< (el1 + el2).E());
471  m_zee_M->push_back((el1 + el2).M());
472  m_zee_E->push_back((el1 + el2).E());
473  m_zee_pt->push_back((el1 + el2).Pt());
474  m_zee_px->push_back((el1 + el2).Px());
475  m_zee_py->push_back((el1 + el2).Py());
476  m_zee_pz->push_back((el1 + el2).Pz());
477  m_zee_T->push_back((el1 + el2).T());
478  m_zee_deltaR->push_back(el1.DeltaR(el2));
479 
480  // ****************************************************************
481  // store electrons in a container to dump their clusters and cells.
482  TagAndProbeElectronSelectionCnt->push_back( (elTag) );
483  // ****************************************************************
484  }
485  } //end-loop probe electrons
486  } //end-loop tag electrons
487 
488  ATH_CHECK (evtStore()->record( TagAndProbeElectronSelectionCnt.release(), "MyTagAndProbeElectrons"));
489  return StatusCode::SUCCESS;
490 }
491 
493  ATH_MSG_INFO("Dumping Truth Particle...");
494 
495  auto elecCandidates = std::make_unique<ConstDataVector<xAOD::TruthParticleContainer>> (SG::VIEW_ELEMENTS);
496 
497  if (truthParticleCnt->size() == 0) ATH_MSG_INFO("truthParticleCnt is empty!");
498  else{
499  for (const xAOD::Electron *recElectron : *electronSelectionCnt){
500 
501  const xAOD::TruthParticle *truth = xAOD::TruthHelpers::getTruthParticle(*recElectron);
502  elecCandidates->push_back( truth );
503 
504  ATH_MSG_INFO("(TruthParticle) Reco pt="<< recElectron->pt()<<" , Truth pt= "<< truth->pt());
505  }
506  }
507 
508  if (elecCandidates->size() > 0) ATH_MSG_INFO("(TruthParticle) Size of elecCandidates is "<< elecCandidates->size()<<" !");
509 
510  for (const xAOD::TruthParticle *elecSelected : *elecCandidates){
511  const xAOD::TruthVertex* vertex = elecSelected->prodVtx();
512 
513  TLorentzVector elecCandidateLorentz;
514  elecCandidateLorentz.SetPtEtaPhiE(elecSelected->pt(),elecSelected->eta(),elecSelected->phi(),elecSelected->e());
515 
516  m_mc_vert_x->push_back(vertex->x()); // vertex displacement
517  m_mc_vert_y->push_back(vertex->y()); // vertex displacement
518  m_mc_vert_z->push_back(vertex->z()); // vertex displacement in beam direction
519  m_mc_vert_time->push_back(vertex->t()); // vertex time
520  m_mc_vert_perp->push_back(vertex->perp()); // Vertex transverse distance from the beam line
521  m_mc_vert_eta->push_back(vertex->eta()); // Vertex pseudorapidity
522  m_mc_vert_phi->push_back(vertex->phi()); // Vertex azimuthal angle
523  m_mc_vert_barcode->push_back(HepMC::barcode(vertex)); // FIXME barcode-based
525 
526  m_mc_part_energy->push_back(elecSelected->e());
527  m_mc_part_pt->push_back(elecSelected->pt());
528  m_mc_part_pdgId->push_back(elecSelected->pdgId());
529  m_mc_part_m->push_back(elecSelected->m());
530  m_mc_part_phi->push_back(elecSelected->phi());
531  m_mc_part_eta->push_back(elecSelected->eta());
532  }
533  ATH_CHECK (evtStore()->record( elecCandidates.release(), "MyMatchedTruthElectrons"));
534  return StatusCode::SUCCESS;
535 
536 }
537 
538 StatusCode EventReaderAlg::dumpClusterCells(const xAOD::CaloCluster *cl, int clusIndex, const EventContext& ctx){
539 
541  if(!LarDigCnt.isValid()) ATH_MSG_ERROR("LArDigitContainer is not a valid container!");
543  if(!LArRawCnt.isValid()) ATH_MSG_ERROR("LArRawChannelContainer is not a valid container!");
544 
545  // calorimeter level
546  std::bitset<200000> larClusteredDigits;
547  std::vector<size_t> caloHashMap;
548  std::vector<HWIdentifier> channelHwidInClusterMap; //unique for any readout in the ATLAS
549  std::vector<int> cellIndexMap;
550  std::vector<float> channelIndexMap;
551  std::vector<int> cellLayerMap;
552  // cell level
553  std::vector<double> clusCellEtaMap;//unused
554  std::vector<double> clusCellPhiMap; //unused
555  // channel level
556  std::vector<double> channelEnergyInClusterMap;
557  std::vector<double> channelTimeInClusterMap;
558  std::vector<double> channelEtaInClusterMap;
559  std::vector<double> channelPhiInClusterMap;
560  std::vector<float> channelEffectiveSigmaClusterMap;
561  std::vector<float> channelNoiseClusterMap;
562 
563  std::vector<int> channelCaloRegionMap;
564  std::vector<bool> badChannelMap;
565 
566  // cluster
567  double clusEta = cl->eta();
568  double clusPhi = cl->phi();
569  double clusEt = cl->et();
570  double clusPt = cl->pt();
571  double clusTime = cl->time();
572 
573  ATH_MSG_DEBUG (" (Cluster) Cluster: "<< clusIndex <<", numberCells: " << cl->numberCells() << ", e = " << cl->e() << ", time = "<< clusTime << ", pt = " << cl->pt() << " , eta = " << cl->eta() << " , phi = " << cl->phi());
574 
575  // loop over cells in cluster
576  auto itrCellsBegin = cl->cell_begin();
577  auto itrCellsEnd = cl->cell_end();
578  int cellNum = 0; //cell number just for printing out
579 
580  for (auto itCells=itrCellsBegin; itCells != itrCellsEnd; ++itCells){
581  const CaloCell* cell = (*itCells); //get the caloCells
582  if (cell){ // check for empty clusters
583  Identifier cellId = cell->ID();
584 
585  int caloRegionIndex = getCaloRegionIndex(cell); // custom caloRegionIndex based on caloDDE
586 
587  double eneCell = cell->energy();
588  double timeCell = cell->time();
589  double etaCell = cell->eta();
590  double phiCell = cell->phi();
591  int gainCell = cell->gain(); // CaloGain type
592  int layerCell = m_calocell_id->calo_sample(cell->ID());
593  bool badCell = cell->badcell(); // applied to LAR channels. For Tile, we use TileCell* tCell->badch1() or 2.
594  bool isTile = cell->caloDDE()->is_tile();
595  bool isLAr = cell->caloDDE()->is_lar_em();
596  bool isLArFwd = cell->caloDDE()->is_lar_fcal();
597  bool isLArHEC = cell->caloDDE()->is_lar_hec();
598  double detaCell = cell->caloDDE()->deta(); //delta eta - granularity
599  double dphiCell = cell->caloDDE()->dphi(); //delta phi - granularity
600  float effSigma = m_noiseCDO->getEffectiveSigma(cell->ID(), cell->gain(), cell->energy()); // effective sigma of cell related to its noise.
601  float cellNoise = m_noiseCDO->getNoise(cell->ID(), cell->gain()); // cell noise value
602 
603  IdentifierHash chidHash;
604  HWIdentifier chhwid;
605  size_t index;
606 
607  // ========= TileCal ==========
608  if (isTile) continue;
609 
610  // ========= LAr ==========
611  else if ((isLAr) || (isLArFwd) || (isLArHEC)) { //LAr
612  chhwid = m_larCabling->createSignalChannelID(cellId);
613  chidHash = m_onlineLArID->channel_Hash(chhwid);
614  index = (size_t) (chidHash);
615 
616  if (larClusteredDigits.test(index)) {
617  ATH_MSG_ERROR (" ##### (Cluster) Error LAr: Conflict index position in Channel map. Position was already filled in this event. Skipping the cell of index: " << index << " and hwid: " << chhwid << ". Cell_E/t="<<cell->energy() << "/"<< cell->time() << ". Eta/Phi: "<< cell->eta() << "/" << cell->phi());
618  continue;
619  }
620  if (badCell && m_noBadCells){
621  ATH_MSG_INFO (" (Cluster)(LAr) Cell "<< cellNum <<" in cluster is a bad LAr channel! Skipping the cell.");
622  continue;
623  }
624  larClusteredDigits.set(index);
625  caloHashMap.push_back(index);
626  cellIndexMap.push_back(m_c_cellIndexCounter);
627  clusCellEtaMap.push_back(etaCell);
628  clusCellPhiMap.push_back(phiCell);
629  cellLayerMap.push_back(layerCell);
630  channelIndexMap.push_back( m_c_cellIndexCounter );
631  channelHwidInClusterMap.push_back(chhwid);
632  channelTimeInClusterMap.push_back(timeCell);
633  channelEnergyInClusterMap.push_back(eneCell);
634  channelCaloRegionMap.push_back(caloRegionIndex);
635  channelEffectiveSigmaClusterMap.push_back(effSigma);
636  channelNoiseClusterMap.push_back(cellNoise);
637  if (!m_noBadCells) badChannelMap.push_back(badCell);
638 
639  if (m_printCellsClus){ //optional to help debugging
640  ATH_MSG_INFO (" (Cluster) in IsLAr: Cell (layer) "<< cellNum << " (" << layerCell <<") ID: " << cellId << "). HwId (B_EC/P_N/FeedTr/slot/ch) " << chhwid << " (" << m_onlineLArID->barrel_ec(chhwid) << "/" << m_onlineLArID->pos_neg(chhwid) << "/"<< m_onlineLArID->feedthrough(chhwid) << "/" << m_onlineLArID->slot(chhwid) << "/" << m_onlineLArID->channel(chhwid) << ") . Index: " << index << ". ene " << eneCell << ". time " << timeCell << ". D_eta: " << detaCell << ". D_phi: " << dphiCell << " ):" << ". Eta/Phi: "<< cell->eta() << "/" << cell->phi());
641  }
642  } //end else LAr
643 
644  else {
645  ATH_MSG_ERROR (" ####### (Cluster) ERROR ! No CaloCell region was found!");
646  continue;
647  }
648 
649  // ##############################
650  // CELL INFO DUMP (CLUSTER)
651  // ##############################
652  const double clusterDphiRaw = clusPhi - phiCell;
653  double cluster_dphi = 0.;
654 
655  if (clusterDphiRaw < -pi) {
656  cluster_dphi = twopi + clusterDphiRaw;
657  }
658  else if (clusterDphiRaw > pi) {
659  cluster_dphi = clusterDphiRaw - twopi;
660  }
661  else {
662  cluster_dphi = clusterDphiRaw;
663  }
664 
665  m_c_clusterIndex_cellLvl->push_back(clusIndex);
667  m_c_cellGain->push_back(gainCell);
668  m_c_cellLayer->push_back(layerCell);
669  m_c_cellEnergy->push_back(eneCell);
670  m_c_cellTime->push_back(timeCell);
671  m_c_cellEta->push_back(etaCell);
672  m_c_cellPhi->push_back(phiCell);
673  m_c_cellDEta->push_back(detaCell);
674  m_c_cellDPhi->push_back(dphiCell);
675  m_c_cellToClusterDEta->push_back(clusEta - etaCell);
676  m_c_cellToClusterDPhi->push_back(cluster_dphi);
677  m_c_cellRegion->push_back(caloRegionIndex);
678 
680  cellNum++;
681  } // end if-cell is empty verification
682  } // end loop at cells inside cluster
683 
684  // ##############################
685  // CLUSTER INFO DUMP (CLUSTER)
686  // // ##############################
687  m_c_clusterIndex->push_back(clusIndex);
688  m_c_clusterEnergy->push_back(clusEt);
689  m_c_clusterTime->push_back(clusTime);
690  m_c_clusterEta->push_back(clusEta);
691  m_c_clusterPhi->push_back(clusPhi);
692  m_c_clusterPt->push_back(clusPt);
693 
694  // ##############################
695  // DIGITS CHANNEL INFO DUMP (CLUSTER)
696  // ##############################
697  // Loop over ALL channels in LAr Digit Container.
698  // Dump only the channels inside the previous clusters
699 
700  // ========= LAr ==========
701  if (larClusteredDigits.any()){
702  // -- LAr_Hits --
703  if (m_isMC && m_doLArEMBHitsDump){
704  ATH_MSG_DEBUG (" (Cluster-HITS) Dumping LAr EMB Hits...");
705 
707 
709  if(!larHitCnt.isValid()) ATH_MSG_ERROR("LAr EMB Hit container is not valid!");
710 
711  for (unsigned int k=0 ; k < channelHwidInClusterMap.size() ; k++){
712  double cell_total_ene = 0.0;
713  double cell_total_eneCalib = 0.0;
714  double cell_hit_tof = -999.0;
715  double hit_ene = 0.;
716  double hit_time = 0.;
717  float hit_fSampCalib = 1.;
718  int hit_sampling = 0;
719  size_t hit_index1 = 0;
720  bool thereIsOneHitToDump = false;
721  std::vector<double> hitEnergiesFromMap;
722  std::vector<double> hitTimesFromMap ;
723 
724  for (const LArHit* hit : *larHitCnt){
725  Identifier hit_cellID = hit->cellID();
726  HWIdentifier hit_hwid = m_larCabling->createSignalChannelID(hit_cellID);
727  IdentifierHash hit_idHash = m_onlineLArID->channel_Hash(hit_hwid);
728  hit_index1 = (size_t) (hit_idHash);//(m_calocell_id->calo_cell_hash(hit_cellID));
729 
730  if (larClusteredDigits.test(hit_index1)){
731  if (channelHwidInClusterMap[k]==hit_hwid){
732 
733  hit_ene = hit->energy();
734  hit_time = hit->time();
735  hit_sampling = m_calocell_id->calo_sample(hit_cellID);
736 
737  if (hit_index1 < m_ncell && fabs(hit_time) < 25.){ // time < 25 ns (current BC)
738  hitEnergiesFromMap.push_back(hit_ene);
739  hitTimesFromMap.push_back(hit_time);
740  hit_fSampCalib = m_fSampl->FSAMPL(hit_cellID);
741  thereIsOneHitToDump = true;
742 
743  ATH_MSG_DEBUG ("(HITS) Match in "<< k <<"/"<< channelHwidInClusterMap.size() <<"! Sampling "<< hit_sampling << ", Cell (clus): "<< channelIndexMap[k] <<" ("<< clusIndex <<"), ID (mapHwid / hwid / hash ): "<< hit_cellID << " ("<< channelHwidInClusterMap[k] << " / "<< hit_hwid << " / "<< hit_index1 <<"), hitEne: "<< hit_ene <<", hitTime: "<< hit_time << ", m_fSampl: "<< hit_fSampCalib <<". eta="<< clusCellEtaMap[k]<< ", phi="<<clusCellPhiMap[k]<<".");
744 
745  }// end-if caloHashMap matches
746  }// end-if cluster map has this hit_index
747  }// end-if current bc test
748  }// end-if current bc test
749 
750  if (thereIsOneHitToDump){
751  for (auto hitE : hitEnergiesFromMap){
752  cell_total_ene += hitE;
753  cell_total_eneCalib += hitE / hit_fSampCalib; //calib energy from hits
754  }
755  cell_hit_tof = *std::min_element(hitTimesFromMap.begin(), hitTimesFromMap.end());
756 
757  m_hits_energy->push_back(cell_total_ene);
758  m_hits_time->push_back(cell_hit_tof);
759  m_hits_sampling->push_back(hit_sampling);
760  m_hits_clusterIndex_chLvl->push_back(clusIndex);
761  m_hits_clusterChannelIndex->push_back(channelIndexMap[k]);
762  m_hits_hash->push_back(hit_index1);
763  m_hits_sampFrac->push_back(hit_fSampCalib);
764  m_hits_energyConv->push_back(cell_total_eneCalib);
765  m_hits_cellEta->push_back(clusCellEtaMap[k]);
766  m_hits_cellPhi->push_back(clusCellPhiMap[k]);
767  }
768  else{
769  ATH_MSG_DEBUG("(HITS) Hit from cell "<< k <<"/"<< channelHwidInClusterMap.size() <<" not found! Sampling "<< hit_sampling << ", Cell (clus): "<< channelIndexMap[k] <<" ("<< clusIndex <<"), mapHwid: "<< channelHwidInClusterMap[k]<<". eta="<< clusCellEtaMap[k]<< ", phi="<<clusCellPhiMap[k]<<".");
770  }
771  hitEnergiesFromMap.clear();
772  hitTimesFromMap.clear();
773 
774  }// end for loop over caloHashMaps
775  }// end-if isMC and dumpHits
776 
777 
778  // -- LAr_Digits --
779  ATH_MSG_DEBUG (" (Cluster) Dumping LAr Digits...");
780 
781  for (const LArDigit* dig : *LarDigCnt) {
782  HWIdentifier channelID = dig->channelID();
783  IdentifierHash idHash = m_onlineLArID->channel_Hash(channelID);
784  size_t index = (size_t) (idHash);
785 
786  if (larClusteredDigits.test(index)) {
787  for (unsigned int k=0 ; k < channelHwidInClusterMap.size() ; k++){
788  if (channelHwidInClusterMap[k]==channelID){
789 
790  // digits
791  std::vector<short> larDigitShort = dig->samples();
792  std::vector<float> larDigit( larDigitShort.begin(), larDigitShort.end() ); // get vector conversion from 'short int' to 'float'
793  m_c_channelDigits->push_back(larDigit);
794 
795  const HWIdentifier digId = dig->hardwareID();
796  const int digGain = dig->gain();
797  auto ofc_a = m_ofcs->OFC_a(digId, digGain);
798  auto ofc_b = m_ofcs->OFC_b(digId, digGain);
799 
800  std::vector<double> ofca, ofcb, shape, shapeDer;
801  const IdentifierHash& dig_cell_hashId = m_onlineLArID->channel_Hash(channelID);
802  for (size_t k=0; k < ofc_a.size(); k++) ofca.push_back((double) ofc_a[k]);
803  for (size_t k=0; k < ofc_b.size(); k++) ofcb.push_back((double) ofc_b[k]);
804 
805  const auto& adc2mev = m_adc2MeVs->ADC2MEV(digId, digGain);
806  const float pedLAr = m_peds->pedestal(digId, digGain);
807  const auto& minBiasLAr = m_minBiasAvgs->minBiasAverage(digId);
808 
809  // Remark: Looks like the EC does not have this rescale in DB (?)
810  if (!m_isMC){
811  auto sig_shape = m_shapes->Shape(digId, digGain);
812  auto sig_shapeDer = m_shapes->ShapeDer(digId, digGain);
813  for (size_t k=0; k < sig_shape.size(); k++) shape.push_back((double) sig_shape[k]);
814  for (size_t k=0; k < sig_shapeDer.size(); k++) shapeDer.push_back((double) sig_shapeDer[k]);
815 
816  float offl_EneRescaler = 1.0; // if the channel is outside of hash_id limits from DB, set scale to 1.0 (energy remains unchanged).
817  const auto& offl_hv = m_oflHVCorr->HVScaleCorr(digId);
818  if (dig_cell_hashId < m_EneRescaler->getNChans()){ // if the channel is INSIDE the hash_id limit, get the data from DB.
819  offl_EneRescaler = m_EneRescaler->getData(dig_cell_hashId,0,0); // IMPORTANT REMARK: There was an update in Athena v23, compared to v22. There is a new <T> for getData() instance, which no longer needs the 2nd and 3rd accessor (adc, gain).
820  }
821  m_c_channelDSPThreshold->push_back(m_run2DSPThresh->tQThr(digId));
822  m_c_channelOfflEneRescaler->push_back(offl_EneRescaler);
823  m_c_channelOfflHVScale->push_back(offl_hv);
824  m_c_channelShape->push_back(shape);
825  m_c_channelShapeDer->push_back(shapeDer);
826  }
827  // Cell / readout data
828  m_c_channelEnergy->push_back(channelEnergyInClusterMap[k]);
829  m_c_channelTime->push_back(channelTimeInClusterMap[k]);
830  m_c_channelLayer->push_back(cellLayerMap[k]);
831  m_c_channelEffectiveSigma->push_back(channelEffectiveSigmaClusterMap[k]);
832  m_c_channelNoise->push_back(channelNoiseClusterMap[k]);
833  if (!m_noBadCells) m_c_channelBad->push_back(badChannelMap[k]);
834  // Calibration constants
835  m_c_channelOFCa->push_back(ofca);
836  m_c_channelOFCb->push_back(ofcb);
837  m_c_channelOFCTimeOffset->push_back(m_ofcs->timeOffset(digId,digGain));
838  m_c_channelADC2MEV0->push_back(adc2mev[0]);
839  m_c_channelADC2MEV1->push_back(adc2mev[1]);
840  m_c_channelPed->push_back(pedLAr);
841  m_c_channelMinBiasAvg->push_back(minBiasLAr);
842 
843  // Channel info
844  int barrelEc = m_onlineLArID->barrel_ec(channelID);
845  int posNeg = m_onlineLArID->pos_neg(channelID);
846  int feedThr = m_onlineLArID->feedthrough(channelID); // feedthrough - cabling interface from cold and hot side. in barrel, there are 2 feedThr for each crate.
847  int slot = m_onlineLArID->slot(channelID);
848  int chn = m_onlineLArID->channel(channelID);
849  std::vector<int> chInfo {barrelEc, posNeg, feedThr, slot, chn } ; //unite info
850  m_c_channelChInfo->push_back(chInfo); //add to the list of cell info (both calo)
851 
852  // important indexes
853  m_c_clusterChannelIndex->push_back(channelIndexMap[k]);//each LAr cell is an individual read out.
854  m_c_clusterIndex_chLvl->push_back(clusIndex); // what roi this cell belongs at the actual event: 0, 1, 2 ...
855  m_c_channelHashMap->push_back(index); // online id hash for channel
856  m_c_channelChannelIdMap->push_back(channelID.get_identifier32().get_compact());
857 
858 
859  if (m_printCellsClus){
860 
861  ATH_MSG_INFO ("(Cluster) In DumpLAr Digits: ReadOutIndex "<< channelIndexMap[k] << ". HwId " << channelID);
862  ATH_MSG_INFO ("(Cluster) In DumpLAr Digits: ReadOutIndex "<< channelIndexMap[k] << " HwId.get_compact() " << channelID.get_compact());
863  ATH_MSG_INFO ("(Cluster) In DumpLAr Digits: ReadOutIndex "<< channelIndexMap[k] << " HwId.get_identifier32().get_compact() " << channelID.get_identifier32().get_compact());
864 
865  ATH_MSG_INFO("(Cluster) LAr OFC timeOffset: "<< m_ofcs->timeOffset(digId, digGain) <<", dig->hardwareID: " << digId << ", dig->channelID: "<< channelID);
866  ATH_MSG_INFO("\tOFCa ("<< ofca.size()<<"): ["<< ofca[0] <<", " << ofca[1] <<", " << ofca[2]<<", " << ofca[3] <<"]");
867  ATH_MSG_INFO("\tOFCb ("<< ofcb.size()<<"): ["<< ofcb[0] <<", " << ofcb[1] <<", " << ofcb[2]<<", " << ofcb[3] <<"]");
868 
869  ATH_MSG_DEBUG ("(Cluster) In DumpLAr Digits: ReadOutIndex "<< channelIndexMap[k] << ". HwId (B_EC/P_N/FeedTr/slot/ch) " << channelID << " (" << barrelEc << "/" << posNeg << "/"<< feedThr << "/" << slot << "/" << chn << ". Dig (float): " << larDigit);
870 
871  }
872  } //end-if caloHashMap matches
873  } //end for loop over caloHashMaps
874  } // end-if clustBits Test
875  } //end loop over LAr digits container
876  } //end-if larClustBits is not empty
877 
878  // ##############################
879  // RAW CHANNEL INFO DUMP (CLUSTER)
880  // ##############################
881 
882  // ========= LAr ==========
883  if (larClusteredDigits.any()) {
884  ATH_MSG_INFO ("(Cluster) Dumping LAr Raw Channel...");
885 
886  for (const LArRawChannel& LArChannel : *LArRawCnt){
887 
888  HWIdentifier channelID = LArChannel.channelID();
889  IdentifierHash chHwidHash = m_onlineLArID->channel_Hash(channelID);
890 
891  size_t index = static_cast<size_t>(chHwidHash);
892 
893  if (larClusteredDigits.test(index)){ //if this channel index is inside
894  for (unsigned int k=0 ; k < channelHwidInClusterMap.size() ; k++){ //loop over the vector of hashIndex, and verify if the cell index match.
895  if (channelHwidInClusterMap[k] == channelID){
896 
897  //RawCh info
898  int rawEnergy = LArChannel.energy(); // energy in MeV (rounded to integer)
899  int rawTime = LArChannel.time(); // time in ps (rounded to integer)
900  uint16_t rawQuality = LArChannel.quality(); // quality from pulse reconstruction
901  int provenance = static_cast<int>(LArChannel.provenance()); // its uint16_t
902  float rawEnergyConv = static_cast<float>(rawEnergy);
903  float rawTimeConv = static_cast<float>(rawTime);
904  float rawQualityConv = static_cast<float>(rawQuality);
905 
906  // Channel info
907  int barrelEc = m_onlineLArID->barrel_ec(channelID);
908  int posNeg = m_onlineLArID->pos_neg(channelID);
909  int feedThr = m_onlineLArID->feedthrough(channelID); // feedthrough - cabling interface from cold and hot side. in barrel, there are 2 feedThr for each crate.
910  int slot = m_onlineLArID->slot(channelID);
911  int chn = m_onlineLArID->channel(channelID);
912  std::vector<int> chInfo {barrelEc, posNeg, feedThr, slot, chn } ; //unite info
913  m_c_rawChannelChInfo->push_back(chInfo); //add to the list of cell info (both calo)
914 
915  if ( (rawEnergy != rawEnergyConv) || (rawTime != rawTimeConv) || (rawQuality != rawQualityConv) ){
916  ATH_MSG_ERROR (" ###### (Cluster) LAR RAW CHANNEL: Value conversion from int to float of amplitude, time or quality (uint16_t) had changed its actual value !!!");
917  }
918  m_c_rawChannelAmplitude->push_back(rawEnergyConv);
919  m_c_rawChannelTime->push_back(rawTimeConv);
920  m_c_rawChannelLayer->push_back(cellLayerMap[k]);
921  m_c_rawChannelQuality->push_back(rawQualityConv);
922  m_c_rawChannelProv->push_back(provenance);
923  m_c_rawChannelPed->push_back(-8888); // masked LAr
924  if (!m_isMC){
925  m_c_rawChannelDSPThreshold->push_back(m_run2DSPThresh->tQThr(channelID));
926  }
927 
928  // important indexes
929  m_c_clusterRawChannelIndex->push_back(channelIndexMap[k]);
930  m_c_clusterIndex_rawChLvl->push_back(clusIndex); // what roi this ch belongs
931  m_c_rawChannelIdMap->push_back(channelID.get_identifier32().get_compact());
932 
933  if (m_printCellsClus){ //optional to help debugging
934 
935  HWIdentifier hardwareID = LArChannel.hardwareID();
936 
937  if (!m_isMC){
938  ATH_MSG_INFO ("(Cluster) In DumpLAr Raw "<< channelIndexMap[k] <<": hardwareID (B_EC/P_N/feedThr/slot/chn): " << hardwareID << "(" << barrelEc << "/" << posNeg << "/" << feedThr << "/" << slot << "/" << chn << ")" << ". Energy: " << rawEnergyConv << ". Time: " << rawTimeConv << ". Provenance: " << provenance << ". Quality: " << rawQualityConv <<" ecut (DSPThr) = " << m_run2DSPThresh->tQThr(channelID));
939  }
940  else{
941  ATH_MSG_INFO ("(Cluster) In DumpLAr Raw "<< channelIndexMap[k] <<": hardwareID (B_EC/P_N/feedThr/slot/chn): " << hardwareID << "(" << barrelEc << "/" << posNeg << "/" << feedThr << "/" << slot << "/" << chn << ")" << ". Energy: " << rawEnergyConv << ". Time: " << rawTimeConv << ". Provenance: " << provenance << ". Quality: " << rawQualityConv);
942  }
943 
944  } // end-if optional cell print
945  } // end-if hwid match rawChID
946  } // end loop over HWIDClusterMap
947  } // end-if clust.test
948  } //end loop LArRawChannelContainer
949  } // end-if clustBits have Cells
950 
951  larClusteredDigits.reset();
952 
953  caloHashMap.clear();
954 
955  channelHwidInClusterMap.clear();
956  cellIndexMap.clear();
957  cellLayerMap.clear();
958  clusCellEtaMap.clear();
959  clusCellPhiMap.clear();
960  channelIndexMap.clear();
961  channelEnergyInClusterMap.clear();
962  channelTimeInClusterMap.clear();
963  channelEtaInClusterMap.clear();
964  channelPhiInClusterMap.clear();
965  channelEffectiveSigmaClusterMap.clear();
966  channelNoiseClusterMap.clear();
967  channelCaloRegionMap.clear();
968  if (!m_noBadCells) badChannelMap.clear();
969 
970  ATH_MSG_INFO (" (Cluster) RawChannel: "<< m_c_rawChannelAmplitude->size() <<" channels dumped, from " << m_c_cellEta->size() <<" cluster cells. ");
971  ATH_MSG_INFO (" (Cluster) Digits: "<< m_c_channelDigits->size() <<" channels dumped, out of " << m_c_rawChannelAmplitude->size() <<" raw channel cluster channels. ");
972  if (m_c_channelDigits->size() == m_c_rawChannelAmplitude->size()){
973  ATH_MSG_INFO (" (Cluster) ALL Digits from the cluster were dumped successfully!");}
974  else{
975  ATH_MSG_INFO (" (Cluster) The digits from "<< (m_c_rawChannelAmplitude->size() - m_c_channelDigits->size()) <<" channels are missing!");}
976 
977 
978  return StatusCode::SUCCESS;
979 }
980 
981 
983  ATH_MSG_DEBUG ("Finalizing " << name() << "...");
984  m_secondTree->Fill();
985 
986  return StatusCode::SUCCESS;
987 }
python.PyKernel.retrieve
def retrieve(aClass, aKey=None)
Definition: PyKernel.py:110
EventReaderBaseAlg::m_isMC
Gaudi::Property< bool > m_isMC
Definition: EventReaderBaseAlg.h:75
EventReaderBaseAlg::m_zee_E
std::vector< double > * m_zee_E
Definition: EventReaderBaseAlg.h:315
EventReaderBaseAlg::m_el_Phi
std::vector< float > * m_el_Phi
Definition: EventReaderBaseAlg.h:285
EventReaderBaseAlg::m_el_deltae
std::vector< float > * m_el_deltae
Definition: EventReaderBaseAlg.h:299
ILArPedestal::pedestal
virtual float pedestal(const HWIdentifier &id, int gain) const =0
EventReaderAlg::dumpOfflineSS
virtual StatusCode dumpOfflineSS(const xAOD::Electron *electron)
Definition: EventReaderAlg.cxx:281
EventReaderBaseAlg::m_el_eoverp
std::vector< float > * m_el_eoverp
Definition: EventReaderBaseAlg.h:287
LuminosityCondData::lbLuminosityPerBCIDVector
const std::vector< float > & lbLuminosityPerBCIDVector() const
Definition: LuminosityCondData.cxx:46
EventReaderBaseAlg::m_noBadCells
Gaudi::Property< bool > m_noBadCells
Definition: EventReaderBaseAlg.h:77
EventReaderBaseAlg::m_zee_pz
std::vector< double > * m_zee_pz
Definition: EventReaderBaseAlg.h:319
EventReaderBaseAlg::m_c_channelShapeDer
std::vector< std::vector< double > > * m_c_channelShapeDer
Definition: EventReaderBaseAlg.h:144
LArADC2MeV::ADC2MEV
const LArVectorProxy ADC2MEV(const HWIdentifier &id, int gain) const
Definition: LArADC2MeV.h:32
CaloCondBlobDat::getData
T getData(const unsigned int channel, const unsigned int adc, const unsigned int idx) const
Returns a single T belonging to a channel/gain.
Definition: CaloCondBlobDat.h:134
EventReaderBaseAlg::bookBranches
void bookBranches(TTree *tree)
Definition: EventReaderBaseAlg.cxx:244
EventReaderAlg::m_pedestalKey
SG::ReadCondHandleKey< ILArPedestal > m_pedestalKey
Definition: EventReaderAlg.h:84
EventReaderBaseAlg::clear
void clear()
Definition: EventReaderBaseAlg.cxx:483
EventReaderAlg::m_truthParticleCntSgKey
SG::ReadHandleKey< xAOD::TruthParticleContainer > m_truthParticleCntSgKey
Definition: EventReaderAlg.h:97
EventReaderBaseAlg::m_c_clusterPhi
std::vector< double > * m_c_clusterPhi
Definition: EventReaderBaseAlg.h:110
LArOnlineID_Base::channel_Hash
IdentifierHash channel_Hash(HWIdentifier channelId) const
Create channel_hash from channel_Id.
Definition: LArOnlineID_Base.cxx:1636
CaloNoise::getEffectiveSigma
float getEffectiveSigma(const Identifier id, const int gain, const float energy) const
Definition: CaloNoise.h:55
EventReaderAlg::m_larDigitCntSgKey
SG::ReadHandleKey< LArDigitContainer > m_larDigitCntSgKey
Definition: EventReaderAlg.h:101
xAOD::EgammaHelpers::getAssociatedTopoClusters
std::vector< const xAOD::CaloCluster * > getAssociatedTopoClusters(const xAOD::CaloCluster *cluster)
Return a vector of all the topo clusters associated with the egamma cluster.
Definition: EgammaxAODHelpers.cxx:65
ReadCellNoiseFromCool.cell
cell
Definition: ReadCellNoiseFromCool.py:53
EventReaderBaseAlg::m_c_cellRegion
std::vector< int > * m_c_cellRegion
Definition: EventReaderBaseAlg.h:118
TrackParticlexAODHelpers.h
CaloCompactCellContainer.h
EventReaderAlg::execute
virtual StatusCode execute() override
Definition: EventReaderAlg.cxx:102
EventReaderBaseAlg::trackSelectionElectrons
bool trackSelectionElectrons(const xAOD::Electron *electron, SG::ReadHandle< xAOD::VertexContainer > &primVertexCnt, SG::ReadHandle< xAOD::EventInfo > &ei)
Definition: EventReaderBaseAlg.cxx:43
SG::ReadCondHandle
Definition: ReadCondHandle.h:44
ATH_MSG_INFO
#define ATH_MSG_INFO(x)
Definition: AthMsgStreamMacros.h:31
EventReaderBaseAlg::m_mc_part_m
std::vector< float > * m_mc_part_m
Definition: EventReaderBaseAlg.h:247
EventReaderBaseAlg::m_c_clusterIndex_chLvl
std::vector< int > * m_c_clusterIndex_chLvl
Definition: EventReaderBaseAlg.h:128
xAOD::EventInfo_v1::eventNumber
uint64_t eventNumber() const
The current event's event number.
EventReaderBaseAlg::m_mc_part_energy
std::vector< float > * m_mc_part_energy
Definition: EventReaderBaseAlg.h:245
EventReaderAlg::m_larem_id
const LArEM_ID * m_larem_id
Definition: EventReaderAlg.h:122
xAOD::EgammaParameters::Reta
@ Reta
e237/e277
Definition: EgammaEnums.h:154
EventReaderBaseAlg::m_c_rawChannelAmplitude
std::vector< float > * m_c_rawChannelAmplitude
Definition: EventReaderBaseAlg.h:156
EventReaderBaseAlg::m_hits_hash
std::vector< unsigned int > * m_hits_hash
Definition: EventReaderBaseAlg.h:172
EventReaderBaseAlg::m_c_channelPed
std::vector< float > * m_c_channelPed
Definition: EventReaderBaseAlg.h:148
EventReaderBaseAlg::m_mc_vert_z
std::vector< float > * m_mc_vert_z
Definition: EventReaderBaseAlg.h:257
SG::VIEW_ELEMENTS
@ VIEW_ELEMENTS
this data object is a view, it does not own its elmts
Definition: OwnershipPolicy.h:18
EventReaderAlg::m_ntsvc
ServiceHandle< ITHistSvc > m_ntsvc
Definition: EventReaderAlg.h:77
EventReaderBaseAlg::m_c_rawChannelProv
std::vector< float > * m_c_rawChannelProv
Definition: EventReaderBaseAlg.h:160
SG::ReadHandle
Definition: StoreGate/StoreGate/ReadHandle.h:70
index
Definition: index.py:1
EventReaderAlg::m_eventInfoSgKey
SG::ReadHandleKey< xAOD::EventInfo > m_eventInfoSgKey
Definition: EventReaderAlg.h:93
EventReaderAlg::m_printCellsClus
Gaudi::Property< bool > m_printCellsClus
Definition: EventReaderAlg.h:66
EventReaderBaseAlg::m_c_channelChInfo
std::vector< std::vector< int > > * m_c_channelChInfo
Definition: EventReaderBaseAlg.h:130
EventReaderAlg::initialize
virtual StatusCode initialize() override
Definition: EventReaderAlg.cxx:26
EventReaderBaseAlg::m_c_channelBad
std::vector< bool > * m_c_channelBad
Definition: EventReaderBaseAlg.h:135
EventReaderBaseAlg::m_el_fracs1
std::vector< float > * m_el_fracs1
Definition: EventReaderBaseAlg.h:294
EventReaderBaseAlg::m_c_channelMinBiasAvg
std::vector< float > * m_c_channelMinBiasAvg
Definition: EventReaderBaseAlg.h:149
xAOD::TrackParticle_v1::vz
float vz() const
The z origin for the parameters.
EventReaderAlg::m_adc2MeVKey
SG::ReadCondHandleKey< LArADC2MeV > m_adc2MeVKey
Definition: EventReaderAlg.h:85
EventReaderBaseAlg::m_doLArEMBHitsDump
Gaudi::Property< bool > m_doLArEMBHitsDump
Definition: EventReaderBaseAlg.h:74
CaloIdManager::getEM_ID
const LArEM_ID * getEM_ID(void) const
Definition: CaloIdManager.cxx:80
ILArOFC::OFC_b
virtual OFCRef_t OFC_b(const HWIdentifier &id, int gain, int tbin=0) const =0
xAOD::TrackingHelpers::d0significance
double d0significance(const xAOD::TrackParticle *tp, double d0_uncert_beam_spot_2)
Definition: TrackParticlexAODHelpers.cxx:42
EventReaderBaseAlg::m_c_channelOfflHVScale
std::vector< float > * m_c_channelOfflHVScale
Definition: EventReaderBaseAlg.h:150
ILArShape::ShapeDer
virtual ShapeRef_t ShapeDer(const HWIdentifier &id, int gain, int tbin=0, int mode=0) const =0
EventReaderBaseAlg::m_c_cellToClusterDPhi
std::vector< double > * m_c_cellToClusterDPhi
Definition: EventReaderBaseAlg.h:125
EventReaderBaseAlg::m_c_channelOFCa
std::vector< std::vector< double > > * m_c_channelOFCa
Definition: EventReaderBaseAlg.h:141
EventReaderAlg::m_adc2MeVs
const LArADC2MeV * m_adc2MeVs
Definition: EventReaderAlg.h:110
EventReaderAlg::m_peds
const ILArPedestal * m_peds
Definition: EventReaderAlg.h:109
test_pyathena.pt
pt
Definition: test_pyathena.py:11
LArOnlineID_Base::slot
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...
Definition: LArOnlineID_Base.cxx:1961
EventReaderBaseAlg::m_hits_cellPhi
std::vector< double > * m_hits_cellPhi
Definition: EventReaderBaseAlg.h:178
xAOD::TrackParticle_v1::z0
float z0() const
Returns the parameter.
EventReaderAlg::dumpClusterCells
virtual StatusCode dumpClusterCells(const xAOD::CaloCluster *cl, int clusIndex, const EventContext &ctx)
Definition: EventReaderAlg.cxx:538
CaloClusterListBadChannel.cls
cls
Definition: CaloClusterListBadChannel.py:8
EventReaderBaseAlg::m_c_clusterIndexCounter
int m_c_clusterIndexCounter
Definition: EventReaderBaseAlg.h:104
xAOD::EventInfo_v1::beamPosSigmaX
float beamPosSigmaX() const
The width of the beam spot in the X direction.
python.subdetectors.tile.Blob
Blob
Definition: tile.py:17
EventReaderAlg::m_minBiasAvgs
const ILArMinBiasAverage * m_minBiasAvgs
Definition: EventReaderAlg.h:113
EventReaderBaseAlg::m_ncell
size_t m_ncell
Definition: EventReaderBaseAlg.h:167
EventReaderBaseAlg::m_mc_vert_status
std::vector< int > * m_mc_vert_status
Definition: EventReaderBaseAlg.h:263
xAOD::EgammaParameters::Rphi
@ Rphi
e233/e237
Definition: EgammaEnums.h:156
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
EventReaderBaseAlg::m_c_electronIndex_clusterLvl
std::vector< int > * m_c_electronIndex_clusterLvl
Definition: EventReaderBaseAlg.h:106
LArDSPThresholdsFlat
Definition: LArDSPThresholdsFlat.h:17
EventReaderBaseAlg::m_e_lumiBlock
int m_e_lumiBlock
Definition: EventReaderBaseAlg.h:99
EventReaderAlg::m_maxZeeMassTP
Gaudi::Property< float > m_maxZeeMassTP
Definition: EventReaderAlg.h:71
EventReaderBaseAlg::m_el_weta2
std::vector< float > * m_el_weta2
Definition: EventReaderBaseAlg.h:293
SG::VarHandleKey::empty
bool empty() const
Test if the key is blank.
Definition: AthToolSupport/AsgDataHandles/Root/VarHandleKey.cxx:150
EventReaderBaseAlg::m_c_cellPhi
std::vector< double > * m_c_cellPhi
Definition: EventReaderBaseAlg.h:122
EventReaderBaseAlg::m_doTruthPartDump
Gaudi::Property< bool > m_doTruthPartDump
Definition: EventReaderBaseAlg.h:73
HWIdentifier
Definition: HWIdentifier.h:13
CaloNoise::getNoise
float getNoise(const IdentifierHash h, const int gain) const
Accessor by IdentifierHash and gain.
Definition: CaloNoise.h:34
LArOnlineID_Base::barrel_ec
int barrel_ec(const HWIdentifier id) const
Return the position barrel or endcap of a hardware cell identifier: barrel_ec = [0,...
Definition: LArOnlineID_Base.cxx:1942
xAODTruthHelpers.h
EventReaderBaseAlg::m_c_channelTime
std::vector< double > * m_c_channelTime
Definition: EventReaderBaseAlg.h:133
EventReaderBaseAlg::m_hits_clusterChannelIndex
std::vector< int > * m_hits_clusterChannelIndex
Definition: EventReaderBaseAlg.h:171
EventReaderBaseAlg::m_c_clusterPt
std::vector< double > * m_c_clusterPt
Definition: EventReaderBaseAlg.h:111
EventReaderAlg::m_larCabling
const LArOnOffIdMapping * m_larCabling
Definition: EventReaderAlg.h:120
EventReaderBaseAlg::m_c_cellEta
std::vector< double > * m_c_cellEta
Definition: EventReaderBaseAlg.h:121
xAOD::EventInfo_v1::LAr
@ LAr
The LAr calorimeter.
Definition: EventInfo_v1.h:335
EventReaderBaseAlg::m_el_m
std::vector< float > * m_el_m
Definition: EventReaderBaseAlg.h:286
EventReaderBaseAlg::m_mc_vert_phi
std::vector< float > * m_mc_vert_phi
Definition: EventReaderBaseAlg.h:261
xAOD::EgammaParameters::wtots1
@ wtots1
shower width is determined in a window detaxdphi = 0,0625 ×~0,2, corresponding typically to 20 strips...
Definition: EgammaEnums.h:140
EventReaderBaseAlg::m_hits_clusterIndex_chLvl
std::vector< int > * m_hits_clusterIndex_chLvl
Definition: EventReaderBaseAlg.h:170
EventReaderBaseAlg::m_el_f3
std::vector< float > * m_el_f3
Definition: EventReaderBaseAlg.h:290
xAOD::EventInfo_v1::runNumber
uint32_t runNumber() const
The current event's run number.
XMLtoHeader.count
count
Definition: XMLtoHeader.py:85
pi
#define pi
Definition: TileMuonFitter.cxx:65
EventReaderAlg::m_primVertSgKey
SG::ReadHandleKey< xAOD::VertexContainer > m_primVertSgKey
Definition: EventReaderAlg.h:94
AthenaPoolTestRead.sc
sc
Definition: AthenaPoolTestRead.py:27
EventReaderBaseAlg::m_e_outOfTimePileUp
float m_e_outOfTimePileUp
Definition: EventReaderBaseAlg.h:101
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
xAOD::EventInfo_v1::Error
@ Error
The sub-detector issued an error.
Definition: EventInfo_v1.h:349
EventReaderAlg::m_doClusterDump
Gaudi::Property< bool > m_doClusterDump
Definition: EventReaderAlg.h:67
EventReaderBaseAlg::m_c_channelDSPThreshold
std::vector< float > * m_c_channelDSPThreshold
Definition: EventReaderBaseAlg.h:140
SG::makeHandle
SG::ReadCondHandle< T > makeHandle(const SG::ReadCondHandleKey< T > &key, const EventContext &ctx=Gaudi::Hive::currentContext())
Definition: ReadCondHandle.h:270
EventReaderBaseAlg::m_c_cellEnergy
std::vector< double > * m_c_cellEnergy
Definition: EventReaderBaseAlg.h:119
EventReaderBaseAlg::m_hits_sampFrac
std::vector< float > * m_hits_sampFrac
Definition: EventReaderBaseAlg.h:175
EventReaderBaseAlg::m_hits_time
std::vector< double > * m_hits_time
Definition: EventReaderBaseAlg.h:174
EventReaderBaseAlg::m_mc_part_eta
std::vector< float > * m_mc_part_eta
Definition: EventReaderBaseAlg.h:248
xAOD::EgammaParameters::f3
@ f3
fraction of energy reconstructed in 3rd sampling
Definition: EgammaEnums.h:54
EventReaderAlg::m_larfcal_id
const LArFCAL_ID * m_larfcal_id
Definition: EventReaderAlg.h:124
EventReaderAlg::dumpZeeCut
virtual StatusCode dumpZeeCut(SG::ReadHandle< xAOD::EventInfo > &ei, SG::ReadHandle< xAOD::VertexContainer > &primVertexCnt, const EventContext &ctx)
Definition: EventReaderAlg.cxx:396
EventReaderBaseAlg::m_c_cellIndexCounter
int m_c_cellIndexCounter
Definition: EventReaderBaseAlg.h:113
EventReaderBaseAlg::eOverPElectron
bool eOverPElectron(const xAOD::Electron *electron)
Definition: EventReaderBaseAlg.cxx:22
AthCommonDataStore< AthCommonMsg< Algorithm > >::evtStore
ServiceHandle< StoreGateSvc > & evtStore()
The standard StoreGateSvc (event store) Returns (kind of) a pointer to the StoreGateSvc.
Definition: AthCommonDataStore.h:85
xAOD::CaloCluster_v1
Description of a calorimeter cluster.
Definition: CaloCluster_v1.h:59
ILArOFC::timeOffset
virtual float timeOffset(const HWIdentifier &CellID, int gain) const =0
EventReaderAlg::m_lumiDataKey
SG::ReadCondHandleKey< LuminosityCondData > m_lumiDataKey
Definition: EventReaderAlg.h:83
LArOnlineID_Base::channel
int channel(const HWIdentifier id) const
Return the channel number of a hardware cell identifier channel = [0,127] in all FEB.
Definition: LArOnlineID_Base.cxx:1967
EventReaderAlg::m_skipEmptyEvents
Gaudi::Property< bool > m_skipEmptyEvents
Definition: EventReaderAlg.h:69
EventReaderBaseAlg::m_c_channelADC2MEV0
std::vector< float > * m_c_channelADC2MEV0
Definition: EventReaderBaseAlg.h:146
EventReaderBaseAlg::m_c_channelLayer
std::vector< int > * m_c_channelLayer
Definition: EventReaderBaseAlg.h:134
EventReaderBaseAlg::m_el_eratio
std::vector< float > * m_el_eratio
Definition: EventReaderBaseAlg.h:291
EventReaderBaseAlg::m_el_reta
std::vector< float > * m_el_reta
Definition: EventReaderBaseAlg.h:297
CaloIdManager::getHEC_ID
const LArHEC_ID * getHEC_ID(void) const
Definition: CaloIdManager.cxx:95
EventReaderBaseAlg::m_c_rawChannelLayer
std::vector< int > * m_c_rawChannelLayer
Definition: EventReaderBaseAlg.h:158
ATH_MSG_ERROR
#define ATH_MSG_ERROR(x)
Definition: AthMsgStreamMacros.h:33
EventReaderBaseAlg::m_el_f1
std::vector< float > * m_el_f1
Definition: EventReaderBaseAlg.h:289
EventReaderBaseAlg::m_c_cellDPhi
std::vector< double > * m_c_cellDPhi
Definition: EventReaderBaseAlg.h:124
EventReaderAlg::dumpLumiblockInfo
virtual StatusCode dumpLumiblockInfo(SG::ReadHandle< xAOD::EventInfo > &ei)
Definition: EventReaderAlg.cxx:371
EventReaderBaseAlg::m_el_weta1
std::vector< float > * m_el_weta1
Definition: EventReaderBaseAlg.h:292
EventReaderAlg::m_oflHVCorr
const LArHVCorr * m_oflHVCorr
Definition: EventReaderAlg.h:114
constants.EMB2
int EMB2
Definition: Calorimeter/CaloClusterCorrection/python/constants.py:54
xAOD::EgammaParameters::f1
@ f1
E1/E = fraction of energy reconstructed in the first sampling, where E1 is energy in all strips belon...
Definition: EgammaEnums.h:52
Identifier32::get_compact
value_type get_compact(void) const
Get the compact id.
Definition: Identifier32.h:171
xAOD::uint16_t
setWord1 uint16_t
Definition: eFexEMRoI_v1.cxx:88
EventReaderBaseAlg::m_hits_sampling
std::vector< int > * m_hits_sampling
Definition: EventReaderBaseAlg.h:169
EventReaderBaseAlg::m_c_clusterEnergy
std::vector< double > * m_c_clusterEnergy
Definition: EventReaderBaseAlg.h:107
EventReaderBaseAlg::m_mc_vert_time
std::vector< float > * m_mc_vert_time
Definition: EventReaderBaseAlg.h:258
EventReaderAlg::dumpTruthParticle
virtual StatusCode dumpTruthParticle(SG::ReadHandle< xAOD::ElectronContainer > &electronSelectionCnt, SG::ReadHandle< xAOD::TruthParticleContainer > &truthParticleCnt)
Definition: EventReaderAlg.cxx:492
LArDigit
Liquid Argon digit base class.
Definition: LArDigit.h:25
EventReaderBaseAlg::m_vtx_delta_z0_sin
std::vector< float > * m_vtx_delta_z0_sin
Definition: EventReaderBaseAlg.h:270
EventReaderBaseAlg::m_c_channelChannelIdMap
std::vector< unsigned int > * m_c_channelChannelIdMap
Definition: EventReaderBaseAlg.h:137
LArRawChannel
Liquid Argon ROD output object base class.
Definition: LArRawChannel.h:40
ILArMinBiasAverage::minBiasAverage
virtual const float & minBiasAverage(const HWIdentifier &id) const =0
access to average of E in minimum bias events index by Identifier
Identifier
Definition: DetectorDescription/Identifier/Identifier/Identifier.h:32
EventReaderBaseAlg::m_vtx_d0sig
std::vector< double > * m_vtx_d0sig
Definition: EventReaderBaseAlg.h:271
EL::StatusCode
::StatusCode StatusCode
StatusCode definition for legacy code.
Definition: PhysicsAnalysis/D3PDTools/EventLoop/EventLoop/StatusCode.h:22
EventReaderAlg::m_offlineHVScaleCorrKey
SG::ReadCondHandleKey< LArHVCorr > m_offlineHVScaleCorrKey
Definition: EventReaderAlg.h:89
EventReaderBaseAlg::m_c_cellToClusterDEta
std::vector< double > * m_c_cellToClusterDEta
Definition: EventReaderBaseAlg.h:126
ATH_MSG_DEBUG
#define ATH_MSG_DEBUG(x)
Definition: AthMsgStreamMacros.h:29
EventReaderAlg::dumpElectrons
virtual StatusCode dumpElectrons(const xAOD::Electron *electron)
Definition: EventReaderAlg.cxx:299
EventReaderBaseAlg::m_doTagAndProbe
Gaudi::Property< bool > m_doTagAndProbe
Definition: EventReaderBaseAlg.h:70
ILArfSampl::FSAMPL
virtual const float & FSAMPL(const HWIdentifier &id) const =0
EventReaderAlg::m_myElecSelectionSgKey
SG::ReadHandleKey< xAOD::ElectronContainer > m_myElecSelectionSgKey
Definition: EventReaderAlg.h:96
EventReaderBaseAlg::m_c_channelHashMap
std::vector< unsigned int > * m_c_channelHashMap
Definition: EventReaderBaseAlg.h:136
HepMC::barcode
int barcode(const T *p)
Definition: Barcode.h:16
xAOD::TruthParticle_v1
Class describing a truth particle in the MC record.
Definition: TruthParticle_v1.h:41
EventReaderBaseAlg::m_c_channelNoise
std::vector< float > * m_c_channelNoise
Definition: EventReaderBaseAlg.h:139
CaloIdManager::getFCAL_ID
const LArFCAL_ID * getFCAL_ID(void) const
Definition: CaloIdManager.cxx:85
EventReaderBaseAlg::m_c_cellTime
std::vector< double > * m_c_cellTime
Definition: EventReaderBaseAlg.h:120
EventReaderAlg::m_larhec_id
const LArHEC_ID * m_larhec_id
Definition: EventReaderAlg.h:123
EventReaderBaseAlg::m_c_rawChannelTime
std::vector< float > * m_c_rawChannelTime
Definition: EventReaderBaseAlg.h:157
xAOD::VxType::PriVtx
@ PriVtx
Primary vertex.
Definition: TrackingPrimitives.h:571
EventReaderBaseAlg::m_c_rawChannelIdMap
std::vector< unsigned int > * m_c_rawChannelIdMap
Definition: EventReaderBaseAlg.h:155
EventReaderBaseAlg::m_hits_energy
std::vector< double > * m_hits_energy
Definition: EventReaderBaseAlg.h:173
EventReaderBaseAlg::m_el_rphi
std::vector< float > * m_el_rphi
Definition: EventReaderBaseAlg.h:298
EventReaderBaseAlg::m_mc_vert_perp
std::vector< float > * m_mc_vert_perp
Definition: EventReaderBaseAlg.h:259
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:1954
plotIsoValidation.el
el
Definition: plotIsoValidation.py:197
EventReaderBaseAlg::m_c_channelEnergy
std::vector< double > * m_c_channelEnergy
Definition: EventReaderBaseAlg.h:132
ATH_CHECK
#define ATH_CHECK
Definition: AthCheckMacros.h:40
EventReaderAlg::m_noiseCDO
const CaloNoise * m_noiseCDO
Definition: EventReaderAlg.h:107
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::EventInfo_v1::lumiBlock
uint32_t lumiBlock() const
The current event's luminosity block number.
LArOnOffIdMapping::createSignalChannelID
HWIdentifier createSignalChannelID(const Identifier &id) const
create a HWIdentifier from an Identifier (not inline)
Definition: LArOnOffIdMapping.h:126
EventReaderBaseAlg::m_mc_vert_y
std::vector< float > * m_mc_vert_y
Definition: EventReaderBaseAlg.h:256
EventReaderBaseAlg::m_elecEtaCut
Gaudi::Property< float > m_elecEtaCut
Definition: EventReaderBaseAlg.h:62
SG::ReadHandle::isValid
virtual bool isValid() override final
Can the handle be successfully dereferenced?
xAOD::EgammaParameters::Rhad1
@ Rhad1
ethad1/et
Definition: EgammaEnums.h:162
EventReaderBaseAlg::m_mc_vert_x
std::vector< float > * m_mc_vert_x
Definition: EventReaderBaseAlg.h:255
EventReaderAlg::m_allCaloCellCntSgKey
SG::ReadHandleKey< CaloCellContainer > m_allCaloCellCntSgKey
Definition: EventReaderAlg.h:103
xAOD::EventInfo_v1::beamPosSigmaY
float beamPosSigmaY() const
The width of the beam spot in the Y direction.
EventReaderAlg::m_onlineLArID
const LArOnlineID * m_onlineLArID
Definition: EventReaderAlg.h:119
EventReaderAlg.h
xAOD::EventInfo_v1::averageInteractionsPerCrossing
float averageInteractionsPerCrossing() const
Average interactions per crossing for all BCIDs - for out-of-time pile-up.
Definition: EventInfo_v1.cxx:397
EventReaderAlg::dumpEventInfo
virtual StatusCode dumpEventInfo(SG::ReadHandle< xAOD::EventInfo > &ei)
Definition: EventReaderAlg.cxx:383
twopi
constexpr double twopi
Definition: VertexPointEstimator.cxx:16
xAOD::TruthVertex_v1
Class describing a truth vertex in the MC record.
Definition: TruthVertex_v1.h:41
EventReaderBaseAlg::bookDatabaseBranches
void bookDatabaseBranches(TTree *tree)
Definition: EventReaderBaseAlg.cxx:228
EventReaderBaseAlg::m_zee_T
std::vector< double > * m_zee_T
Definition: EventReaderBaseAlg.h:320
EventReaderAlg::m_calocell_id
const CaloCell_ID * m_calocell_id
Definition: EventReaderAlg.h:125
EventReaderBaseAlg::m_c_cellLayer
std::vector< int > * m_c_cellLayer
Definition: EventReaderBaseAlg.h:117
EventReaderBaseAlg::m_c_rawChannelChInfo
std::vector< std::vector< int > > * m_c_rawChannelChInfo
Definition: EventReaderBaseAlg.h:154
EventReaderBaseAlg::m_c_clusterIndex_cellLvl
std::vector< int > * m_c_clusterIndex_cellLvl
Definition: EventReaderBaseAlg.h:114
EventReaderBaseAlg::m_mc_vert_barcode
std::vector< int > * m_mc_vert_barcode
Definition: EventReaderBaseAlg.h:262
EventReaderBaseAlg::m_e_inTimePileup
float m_e_inTimePileup
Definition: EventReaderBaseAlg.h:100
HWIdentifier.h
Py
Definition: PyDataStore.h:24
EventReaderBaseAlg::m_mc_vert_eta
std::vector< float > * m_mc_vert_eta
Definition: EventReaderBaseAlg.h:260
EventReaderBaseAlg::m_e_runNumber
unsigned int m_e_runNumber
Definition: EventReaderBaseAlg.h:96
EventReaderAlg::m_run2DSPThresh
std::unique_ptr< LArDSPThresholdsFlat > m_run2DSPThresh
Definition: EventReaderAlg.h:105
name
std::string name
Definition: Control/AthContainers/Root/debug.cxx:195
MagicNumbers.h
VP1PartSpect::E
@ E
Definition: VP1PartSpectFlags.h:21
EventReaderBaseAlg::m_c_rawChannelDSPThreshold
std::vector< float > * m_c_rawChannelDSPThreshold
Definition: EventReaderBaseAlg.h:164
EventReaderBaseAlg::m_mc_part_phi
std::vector< float > * m_mc_part_phi
Definition: EventReaderBaseAlg.h:249
xAOD::TruthHelpers::getTruthParticle
const xAOD::TruthParticle * getTruthParticle(const xAOD::IParticle &p)
Return the truthParticle associated to the given IParticle (if any)
Definition: xAODTruthHelpers.cxx:25
EventReaderBaseAlg::m_c_channelShape
std::vector< std::vector< double > > * m_c_channelShape
Definition: EventReaderBaseAlg.h:143
EventReaderBaseAlg::m_c_channelOFCTimeOffset
std::vector< double > * m_c_channelOFCTimeOffset
Definition: EventReaderBaseAlg.h:145
EventReaderBaseAlg::m_c_cellDEta
std::vector< double > * m_c_cellDEta
Definition: EventReaderBaseAlg.h:123
SG::CondHandleKey::initialize
StatusCode initialize(bool used=true)
EventReaderBaseAlg::isTagElectron
bool isTagElectron(const xAOD::Electron *electron)
Definition: EventReaderBaseAlg.cxx:107
EventReaderBaseAlg::m_d0TagSig
Gaudi::Property< float > m_d0TagSig
Definition: EventReaderBaseAlg.h:67
EventReaderBaseAlg::m_zee_M
std::vector< double > * m_zee_M
Definition: EventReaderBaseAlg.h:314
EventReaderBaseAlg::m_el_wtots1
std::vector< float > * m_el_wtots1
Definition: EventReaderBaseAlg.h:295
LArHit
Class to store hit energy and time in LAr cell from G4 simulation.
Definition: LArHit.h:25
EventReaderAlg::m_shapes
const ILArShape * m_shapes
Definition: EventReaderAlg.h:112
EventReaderAlg::m_ofcKey
SG::ReadCondHandleKey< ILArOFC > m_ofcKey
Definition: EventReaderAlg.h:86
CaloCellContainer.h
xAOD::Electron_v1
Definition: Electron_v1.h:34
EventReaderAlg::m_minZeeMassTP
Gaudi::Property< float > m_minZeeMassTP
Definition: EventReaderAlg.h:70
EventReaderAlg::m_fSamplKey
SG::ReadCondHandleKey< ILArfSampl > m_fSamplKey
Definition: EventReaderAlg.h:90
EventReaderBaseAlg::m_vtx_z
std::vector< float > * m_vtx_z
Definition: EventReaderBaseAlg.h:268
EventReaderAlg::m_minBiasAvgKey
SG::ReadCondHandleKey< ILArMinBiasAverage > m_minBiasAvgKey
Definition: EventReaderAlg.h:88
EventReaderAlg::dumpPrimVertexAssocToElectron
virtual StatusCode dumpPrimVertexAssocToElectron(const xAOD::Electron *el, SG::ReadHandle< xAOD::VertexContainer > &primVertexCnt, SG::ReadHandle< xAOD::EventInfo > &evtInfo)
Definition: EventReaderAlg.cxx:313
EventReaderBaseAlg::m_secondTree
TTree * m_secondTree
Definition: EventReaderBaseAlg.h:85
EventReaderBaseAlg::m_el_et
std::vector< float > * m_el_et
Definition: EventReaderBaseAlg.h:283
EventReaderBaseAlg::m_zee_pt
std::vector< double > * m_zee_pt
Definition: EventReaderBaseAlg.h:316
EventReaderAlg::m_larEMBHitCntSgKey
SG::ReadHandleKey< LArHitContainer > m_larEMBHitCntSgKey
Definition: EventReaderAlg.h:100
EventReaderBaseAlg::m_c_channelOfflEneRescaler
std::vector< float > * m_c_channelOfflEneRescaler
Definition: EventReaderBaseAlg.h:151
EventReaderAlg::FillNTupleWithSelectedElectrons
virtual StatusCode FillNTupleWithSelectedElectrons(SG::ReadHandle< xAOD::EventInfo > &ei, SG::ReadHandle< xAOD::VertexContainer > &primVertexCnt, SG::ReadHandle< xAOD::ElectronContainer > &electronSelectionCnt, std::string &eSelectionText, const EventContext &ctx)
Definition: EventReaderAlg.cxx:238
EventReaderAlg::m_EneRescalerFldr
SG::ReadCondHandleKey< AthenaAttributeList > m_EneRescalerFldr
Definition: EventReaderAlg.h:82
EventReaderAlg::m_lumis
const LuminosityCondData * m_lumis
Definition: EventReaderAlg.h:108
Trk::vertex
@ vertex
Definition: MeasurementType.h:21
DeMoScan.index
string index
Definition: DeMoScan.py:362
LArOnlineID_Base::feedthrough
int feedthrough(const HWIdentifier id) const
Return the feedthrough of a hardware cell identifier : feedthrough = [0,31] Barrel - A/C side or H/...
Definition: LArOnlineID_Base.cxx:1948
EventReaderAlg::m_larCablingKey
SG::ReadCondHandleKey< LArOnOffIdMapping > m_larCablingKey
Definition: EventReaderAlg.h:91
EventReaderBaseAlg::m_z0Tag
Gaudi::Property< float > m_z0Tag
Definition: EventReaderBaseAlg.h:68
Prompt::Def::Pt
@ Pt
Definition: VarHolder.h:76
DiTauMassTools::MaxHistStrategyV2::e
e
Definition: PhysicsAnalysis/TauID/DiTauMassTools/DiTauMassTools/HelperFunctions.h:26
EventReaderAlg::m_caloIdMgr
const CaloIdManager * m_caloIdMgr
Definition: EventReaderAlg.h:121
xAOD::EventInfo_v1::beamPosSigmaXY
float beamPosSigmaXY() const
The beam spot shape's X-Y correlation.
EventReaderBaseAlg::m_el_Pt
std::vector< float > * m_el_Pt
Definition: EventReaderBaseAlg.h:282
EventReaderBaseAlg::m_c_cellGain
std::vector< int > * m_c_cellGain
Definition: EventReaderBaseAlg.h:116
Identifier::get_compact
value_type get_compact(void) const
Get the compact id.
xAOD::Vertex_v1
Class describing a Vertex.
Definition: Vertex_v1.h:42
CaloCell
Data object for each calorimeter readout cell.
Definition: CaloCell.h:57
EventReaderBaseAlg::isGoodProbeElectron
bool isGoodProbeElectron(const xAOD::Electron *el)
Definition: EventReaderBaseAlg.cxx:148
EventReaderBaseAlg::m_c_rawChannelQuality
std::vector< float > * m_c_rawChannelQuality
Definition: EventReaderBaseAlg.h:161
CaloCondBlobFlt::getInstance
static CaloCondBlobFlt * getInstance(coral::Blob &blob)
Returns a pointer to a non-const CaloCondBlobFlt.
Definition: CaloCondBlobFlt.cxx:12
EventReaderBaseAlg::m_c_clusterChannelIndex
std::vector< int > * m_c_clusterChannelIndex
Definition: EventReaderBaseAlg.h:129
ATH_MSG_WARNING
#define ATH_MSG_WARNING(x)
Definition: AthMsgStreamMacros.h:32
EventReaderBaseAlg::m_c_clusterTime
std::vector< double > * m_c_clusterTime
Definition: EventReaderBaseAlg.h:108
EventReaderBaseAlg::m_el_index
std::vector< int > * m_el_index
Definition: EventReaderBaseAlg.h:281
EventReaderAlg::m_ofcs
const ILArOFC * m_ofcs
Definition: EventReaderAlg.h:111
EventReaderBaseAlg::m_c_clusterIndex
std::vector< int > * m_c_clusterIndex
Definition: EventReaderBaseAlg.h:105
EventReaderBaseAlg::m_el_e277
std::vector< float > * m_el_e277
Definition: EventReaderBaseAlg.h:296
EventReaderAlg::m_EneRescaler
const CaloCondBlobFlt * m_EneRescaler
Definition: EventReaderAlg.h:115
EventReaderBaseAlg::m_vtx_y
std::vector< float > * m_vtx_y
Definition: EventReaderBaseAlg.h:267
EventReaderBaseAlg::m_mc_part_pdgId
std::vector< int > * m_mc_part_pdgId
Definition: EventReaderBaseAlg.h:250
xAOD::EgammaParameters::electron
@ electron
Definition: EgammaEnums.h:18
EventReaderBaseAlg::m_doElecSelectByTrackOnly
Gaudi::Property< bool > m_doElecSelectByTrackOnly
Definition: EventReaderBaseAlg.h:69
xAOD::EventInfo_v1::errorState
EventFlagErrorState errorState(EventFlagSubDet subDet) const
Get the error state for a particular sub-detector.
Definition: EventInfo_v1.cxx:817
ILArOFC::OFC_a
virtual OFCRef_t OFC_a(const HWIdentifier &id, int gain, int tbin=0) const =0
access to OFCs by online ID, gain, and tbin (!=0 for testbeam)
xAOD::TruthParticle_v1::pt
virtual double pt() const override final
The transverse momentum ( ) of the particle.
Definition: TruthParticle_v1.cxx:166
xAOD::EgammaParameters::e277
@ e277
uncalibrated energy (sum of cells) of the middle sampling in a rectangle of size 7x7
Definition: EgammaEnums.h:80
EventReaderBaseAlg::m_vtx_x
std::vector< float > * m_vtx_x
Definition: EventReaderBaseAlg.h:266
EventReaderBaseAlg::m_c_clusterIndex_rawChLvl
std::vector< int > * m_c_clusterIndex_rawChLvl
Definition: EventReaderBaseAlg.h:163
EventReaderBaseAlg::m_Tree
TTree * m_Tree
Definition: EventReaderBaseAlg.h:84
EventReaderBaseAlg::m_lb_lumiblock
std::vector< int > * m_lb_lumiblock
Definition: EventReaderBaseAlg.h:93
EventReaderBaseAlg::m_el_rhad1
std::vector< float > * m_el_rhad1
Definition: EventReaderBaseAlg.h:301
EventReaderAlg::m_larRawChCntSgKey
SG::ReadHandleKey< LArRawChannelContainer > m_larRawChCntSgKey
Definition: EventReaderAlg.h:102
EventReaderBaseAlg::m_c_channelDigits
std::vector< std::vector< float > > * m_c_channelDigits
Definition: EventReaderBaseAlg.h:131
xAOD::EgammaParameters::weta1
@ weta1
shower width using +/-3 strips around the one with the maximal energy deposit: w3 strips = sqrt{sum(E...
Definition: EgammaEnums.h:97
EventReaderBaseAlg::m_el_Eta
std::vector< float > * m_el_Eta
Definition: EventReaderBaseAlg.h:284
EventReaderBaseAlg::m_vtx_deltaZ0
std::vector< float > * m_vtx_deltaZ0
Definition: EventReaderBaseAlg.h:269
xAOD::EgammaParameters::Eratio
@ Eratio
(emaxs1-e2tsts1)/(emaxs1+e2tsts1)
Definition: EgammaEnums.h:158
EventReaderBaseAlg::m_c_clusterRawChannelIndex
std::vector< float > * m_c_clusterRawChannelIndex
Definition: EventReaderBaseAlg.h:162
EventReaderBaseAlg::getCaloRegionIndex
int getCaloRegionIndex(const CaloCell *cell)
Definition: EventReaderBaseAlg.cxx:196
xAOD::TrackParticle_v1
Class describing a TrackParticle.
Definition: TrackParticle_v1.h:43
EventReaderBaseAlg::m_e_eventNumber
unsigned long long m_e_eventNumber
Definition: EventReaderBaseAlg.h:98
EventReaderAlg::m_fSampl
const ILArfSampl * m_fSampl
Definition: EventReaderAlg.h:116
EventReaderBaseAlg::m_hits_cellEta
std::vector< double > * m_hits_cellEta
Definition: EventReaderBaseAlg.h:177
EventReaderBaseAlg::m_c_clusterEta
std::vector< double > * m_c_clusterEta
Definition: EventReaderBaseAlg.h:109
drawFromPickle.sin
sin
Definition: drawFromPickle.py:36
IdentifierHash
Definition: IdentifierHash.h:38
Identifier::get_identifier32
Identifier32 get_identifier32(void) const
Get the 32-bit version Identifier, will be invalid if >32 bits needed.
HepMC::status
int status(const T &p)
Definition: MagicNumbers.h:130
EventReaderAlg::EventReaderAlg
EventReaderAlg(const std::string &name, ISvcLocator *pSvcLocator)
Definition: EventReaderAlg.cxx:21
xAOD::EgammaParameters::Rhad
@ Rhad
ethad/et
Definition: EgammaEnums.h:160
xAOD::EventInfo_v1::bcid
uint32_t bcid() const
The bunch crossing ID of the event.
xAOD::EgammaParameters::DeltaE
@ DeltaE
e2tsts1-emins1
Definition: EgammaEnums.h:164
EventReaderBaseAlg::m_el_rhad
std::vector< float > * m_el_rhad
Definition: EventReaderBaseAlg.h:300
EventReaderBaseAlg::m_mc_part_pt
std::vector< float > * m_mc_part_pt
Definition: EventReaderBaseAlg.h:246
EventReaderBaseAlg::m_c_channelEffectiveSigma
std::vector< float > * m_c_channelEffectiveSigma
Definition: EventReaderBaseAlg.h:138
GeV
#define GeV
Definition: CaloTransverseBalanceVecMon.cxx:30
EventReaderBaseAlg
Definition: EventReaderBaseAlg.h:32
xAOD::TrackParticle_v1::theta
float theta() const
Returns the parameter, which has range 0 to .
dq_make_web_display.cl
cl
print [x.__class__ for x in toList(dqregion.getSubRegions()) ]
Definition: dq_make_web_display.py:26
EventReaderBaseAlg::m_c_rawChannelPed
std::vector< float > * m_c_rawChannelPed
Definition: EventReaderBaseAlg.h:159
DataVector::size
size_type size() const noexcept
Returns the number of elements in the collection.
EventReaderBaseAlg::m_zee_px
std::vector< double > * m_zee_px
Definition: EventReaderBaseAlg.h:317
EventReaderAlg::m_truthEventCntSgKey
SG::ReadHandleKey< xAOD::TruthEventContainer > m_truthEventCntSgKey
Definition: EventReaderAlg.h:99
EventReaderAlg::m_getAssociatedTopoCluster
Gaudi::Property< bool > m_getAssociatedTopoCluster
Definition: EventReaderAlg.h:68
EventReaderBaseAlg::m_e_bcid
unsigned int m_e_bcid
Definition: EventReaderBaseAlg.h:97
EventReaderBaseAlg::m_c_channelOFCb
std::vector< std::vector< double > > * m_c_channelOFCb
Definition: EventReaderBaseAlg.h:142
EventReaderAlg::m_electronCntSgKey
SG::ReadHandleKey< xAOD::ElectronContainer > m_electronCntSgKey
Definition: EventReaderAlg.h:98
EventReaderAlg::m_caloClusSgKey
SG::ReadHandleKey< xAOD::CaloClusterContainer > m_caloClusSgKey
Definition: EventReaderAlg.h:95
EventReaderAlg::m_shapeKey
SG::ReadCondHandleKey< ILArShape > m_shapeKey
Definition: EventReaderAlg.h:87
EventReaderBaseAlg::m_lb_bcidLuminosity
std::vector< std::vector< float > > * m_lb_bcidLuminosity
Definition: EventReaderBaseAlg.h:92
EventReaderBaseAlg::m_hits_energyConv
std::vector< double > * m_hits_energyConv
Definition: EventReaderBaseAlg.h:176
EventReaderAlg::m_noiseCDOKey
SG::ReadCondHandleKey< CaloNoise > m_noiseCDOKey
Definition: EventReaderAlg.h:80
TSU::T
unsigned long long T
Definition: L1TopoDataTypes.h:35
xAOD::EgammaParameters::fracs1
@ fracs1
shower shape in the shower core : [E(+/-3)-E(+/-1)]/E(+/-1), where E(+/-n) is the energy in ± n strip...
Definition: EgammaEnums.h:111
CaloCondBlobAlgs_fillNoiseFromASCII.blob
blob
Definition: CaloCondBlobAlgs_fillNoiseFromASCII.py:96
EventReaderBaseAlg::m_zee_py
std::vector< double > * m_zee_py
Definition: EventReaderBaseAlg.h:318
fitman.k
k
Definition: fitman.py:528
LArHVCorr::HVScaleCorr
virtual const float & HVScaleCorr(const HWIdentifier &chid) const override final
Definition: LArHVCorr.cxx:19
xAOD::EventInfo_v1::actualInteractionsPerCrossing
float actualInteractionsPerCrossing() const
Average interactions per crossing for the current BCID - for in-time pile-up.
Definition: EventInfo_v1.cxx:380
EventReaderAlg::finalize
virtual StatusCode finalize() override
Definition: EventReaderAlg.cxx:982
EventReaderBaseAlg::m_c_channelADC2MEV1
std::vector< float > * m_c_channelADC2MEV1
Definition: EventReaderBaseAlg.h:147
xAOD::EgammaParameters::weta2
@ weta2
the lateral width is calculated with a window of 3x5 cells using the energy weighted sum over all cel...
Definition: EgammaEnums.h:103
CaloCell_Base_ID::calo_cell_hash_max
size_type calo_cell_hash_max(void) const
cell 'global' hash table max size
EventReaderAlg::m_run2DSPThresholdsKey
SG::ReadCondHandleKey< AthenaAttributeList > m_run2DSPThresholdsKey
Definition: EventReaderAlg.h:81
ILArShape::Shape
virtual ShapeRef_t Shape(const HWIdentifier &id, int gain, int tbin=0, int mode=0) const =0
python.LArCondContChannels.posNeg
posNeg
Definition: LArCondContChannels.py:659
EventReaderBaseAlg::m_zee_deltaR
std::vector< double > * m_zee_deltaR
Definition: EventReaderBaseAlg.h:321
EventReaderBaseAlg::m_c_clusterCellIndex
std::vector< int > * m_c_clusterCellIndex
Definition: EventReaderBaseAlg.h:115