ATLAS Offline Software
DumpEventDataToJsonAlg.cxx
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2025 CERN for the benefit of the ATLAS collaboration
3 */
4 
6 
7 #include <cmath>
8 #include <fstream>
9 #include <string>
10 #include <algorithm> // std::reverse
11 
12 #include "Acts/EventData/TrackContainer.hpp"
13 #include "Acts/EventData/TrackParameters.hpp"
15 #include "Gaudi/Property.h"
16 #include "GaudiKernel/Algorithm.h"
17 #include "GaudiKernel/MsgStream.h"
27 
28 
29 
31  ISvcLocator *pSvcLocator)
32  : AthAlgorithm(name, pSvcLocator) {}
33 
37  ATH_CHECK(m_jetKeys.initialize(!m_jetKeys.empty()));
38  ATH_CHECK(m_caloClustersKeys.initialize(!m_caloClustersKeys.empty()));
39  ATH_CHECK(m_caloCellKey.initialize(!m_caloCellKey.empty()));
40  ATH_CHECK(m_muonKeys.initialize(!m_muonKeys.empty()));
41  ATH_CHECK(m_tauJetKeys.initialize(!m_tauJetKeys.empty()));
42  ATH_CHECK(m_electronKeys.initialize(!m_electronKeys.empty()));
43  ATH_CHECK(m_photonKeys.initialize(!m_photonKeys.empty()));
45 
46  // ACTS
47  ATH_CHECK(m_trackContainerKeys.initialize());
52  ATH_CHECK(m_mmPrepRawDataKey.initialize(!m_mmPrepRawDataKey.empty()));
57 
58  ATH_CHECK(m_extrapolator.retrieve( DisableTool{m_extrapolator.empty()} ));
59  if (m_extrapolator.empty()) {
60  ATH_MSG_WARNING("No extrapolator found. Will not be able to extrapolate tracks.");
61  } else {
62  ATH_MSG_INFO("Extrapolator found. Will be able to extrapolate tracks.");
63  }
64 
67 
68  return StatusCode::SUCCESS;
69 }
70 
71 nlohmann::json DumpEventDataToJsonAlg::getActsData(const typename ActsTrk::TrackContainer::ConstTrackProxy &track,
72  const Acts::GeometryContext& gctx) {
74 
75  // ACTS units are GeV, whilst ATLAS is MeV. So we need to convert.
76  data["dparams"] = {track.loc0(), track.loc1(), track.phi(), track.theta(), track.qOverP() * 0.001};
77  ATH_MSG_VERBOSE(" Track has dparams"<<data["dparams"][0]<<", "<<data["dparams"][1]<<", "<<data["dparams"][2]<<", "<<data["dparams"][3]<<", "<<data["dparams"][4]);
78  ATH_MSG_VERBOSE(track.referenceSurface().toString(gctx));
79 
80  // Add dparams positions to the output
81  const Acts::BoundTrackParameters trackparams(track.referenceSurface().getSharedPtr(),
82  track.parameters(), std::nullopt, Acts::ParticleHypothesis::pion());
83  auto trackPosition = trackparams.position(gctx);;
84  data["pos"].push_back(trackPosition.x());
85  data["pos"].push_back(trackPosition.y());
86  data["pos"].push_back(trackPosition.z());
87 
88  unsigned int nTrackStates = track.nTrackStates();
89  ATH_MSG_VERBOSE("Track has " << nTrackStates << " states.");
90  // Unfortunately actsTracks are stored in reverse order, so we need to do some gymnastics
91  // (There is certainly a more elegant way to do this, but since this will all be changed soon I don't think it matters)
92  std::vector<typename ActsTrk::TrackContainer::ConstTrackStateProxy> trackStates;
93  trackStates.reserve(nTrackStates);
94  for (auto trackstate : track.trackStatesReversed()) {
95  trackStates.push_back(trackstate);
96  }
97 
98  std::reverse(trackStates.begin(), trackStates.end());
99 
100  unsigned int count = 0;
101  for (auto trackstate : trackStates) {
102  // Currently only converting smoothed states, but we will extend this later.
103  if (trackstate.hasSmoothed() && trackstate.hasReferenceSurface()) {
104  const Acts::BoundTrackParameters params(trackstate.referenceSurface().getSharedPtr(),
105  trackstate.smoothed(),
106  trackstate.smoothedCovariance(),
108  ATH_MSG_VERBOSE("Track parameters: "<<params.parameters());
109 
110  auto pos = params.position(gctx);
111  data["pos"].push_back(pos.x());
112  data["pos"].push_back(pos.y());
113  data["pos"].push_back(pos.z());
114  ATH_MSG_VERBOSE("TrackState "<<count<<" has smoothed state and reference surface. Position is "<<pos.x()<<", "<<pos.y()<<", "<<pos.z());
115  ATH_MSG_VERBOSE(params.referenceSurface().toString(gctx));
116  ATH_MSG_VERBOSE("GeometryId "<<params.referenceSurface().geometryId().value());
117  } else {
118  ATH_MSG_WARNING("TrackState "<<count<<" does not have smoothed state ["<<trackstate.hasSmoothed()<<"] or reference surface ["<<trackstate.hasReferenceSurface()<<"]. Skipping.");
119  }
120  // TODO: Add measurements etc
121  count++;
122  }
123 
124  return data;
125 }
126 
129  if (!eventInfo.isValid()) {
130  ATH_MSG_WARNING("Did not find xAOD::EventInfo at " << m_eventInfoKey);
131  return StatusCode::SUCCESS;
132  }
133 
134  if (m_dumpTestEvent) {
136  m_dumpTestEvent = false;
137  }
138 
139  ATH_MSG_VERBOSE("Run num :" << eventInfo->runNumber()
140  << " Event num: " << eventInfo->eventNumber());
141 
142  nlohmann::json j;
143  j["event number"] = eventInfo->eventNumber();
144  j["run number"] = eventInfo->runNumber();
145 
155 
156  // ACTS
157  if (!m_geometryContextKey.empty()){
158  auto tcHandles = m_trackContainerKeys.makeHandles();
159  SG::ReadHandle gcx(m_geometryContextKey, Gaudi::Hive::currentContext());
160 
161  for ( SG::ReadHandle<ActsTrk::TrackContainer>& tcHandle: tcHandles ) {
162  // Temporary debugging information
163  ATH_MSG_VERBOSE("TrackStateContainer has "<< tcHandle->size() << " elements");
164 
165  ATH_MSG_VERBOSE("Trying to load " << tcHandle.key() << " with " << tcHandle->size() << " tracks");
166  const ActsTrk::TrackContainer* tc = tcHandle.get();
167  for (auto track : *tc) {
168  nlohmann::json tmp = getActsData(track, gcx->context());
169  j["TrackContainers"][tcHandle.key()].push_back(tmp);
170  }
171  }
172  }
173 
174  // hits
183  // ATH_CHECK(getAndFillContainer(j, m_trtPrepRawDataKey, "Hits")); // Need
184  // specialisation. TODO.
185 
186  // For the moment the label is just the event/run number again, but can be
187  // manually overwritten in the output file
188  std::string label = std::to_string(eventInfo->eventNumber()) + "/" +
189  std::to_string(eventInfo->runNumber());
190  m_eventData[label] = j;
191 
192  return StatusCode::SUCCESS;
193 }
194 
196  ATH_MSG_VERBOSE("Prepending a test event.");
197  nlohmann::json j;
198 
199  // FIXME - this
200  auto writeEtaPhiLabel = [](float eta, float phi) {
201  return std::to_string(eta) + "/" + std::to_string(phi);
202  };
203 
204  j["event number"] = 999;
205  j["run number"] = 999;
206 
207  // Here we want to draw some tracks at predefined positons
208  unsigned int maxSteps = 3;
209  Amg::Vector3D trackPos;
210  float phi, eta;
211  for (unsigned int nPhi = 0; nPhi < maxSteps; ++nPhi) {
212  phi = static_cast<float>(nPhi) / static_cast<float>(maxSteps) *
213  M_PI; // Want to range from 0 to M_PI
214  for (unsigned int nEta = 0; nEta < maxSteps; ++nEta) {
215  eta = static_cast<float>(nEta) / static_cast<float>(maxSteps) *
216  3.0; // Want to range from 0 to 3.0
217 
218  // Create a calo cluster at each value
219  nlohmann::json cluster;
220  cluster["phi"] = phi;
221  cluster["eta"] = eta;
222  cluster["energy"] = 999.9;
223  cluster["label"] = writeEtaPhiLabel(eta, phi);
224 
225  j["CaloClusters"]["TestClusters"].push_back(cluster);
226 
227  // create a jet at each value
229  jet["phi"] = phi;
230  jet["eta"] = eta;
231  jet["energy"] = 99999.9;
232  jet["label"] = writeEtaPhiLabel(eta, phi);
233  j["Jets"]["TestJets"].push_back(jet);
234 
236  track["chi2"] = 0.0;
237  track["dof"] = 0.0;
238 
239  double theta = 2 * std::atan(std::exp(-eta));
240  // d0, z0, phi, theta, qOverP
241  track["dparams"] = {0.0, 0.0, phi, theta, 0.0};
242  // Add three positions (less than this might not count as a)
243  for (unsigned int i = 0; i < 4; ++i) {
244  Amg::setRThetaPhi(trackPos, i * 1000., theta, phi);
245  track["pos"].push_back({trackPos.x(), trackPos.y(), trackPos.z()});
246  }
247  track["label"] = writeEtaPhiLabel(eta, phi);
248  j["Tracks"]["TestTracks"].push_back(track);
249  }
250  }
251  m_eventData["Test"] = j;
252 }
253 
254 template <class TYPE>
257  const std::string &jsonType) {
258  for (SG::ReadHandle<TYPE> handle : keys.makeHandles()) {
259  ATH_MSG_VERBOSE("Trying to load " << handle.key());
260  ATH_CHECK(handle.isValid());
261  ATH_MSG_VERBOSE("Got back " << handle->size());
262 
263  for (auto object : *handle) {
264  nlohmann::json tmp = getData(*object);
265  event[jsonType][handle.key()].push_back(tmp);
266  }
267  }
268  return StatusCode::SUCCESS;
269 }
270 
271 // Specialisation for Jets
272 template <>
275  data["phi"] = jet.phi();
276  data["eta"] = jet.eta();
277  data["energy"] = jet.e();
278  return data;
279 }
280 
281 // Specialisation for CaloClusters
282 template <>
285  data["phi"] = clust.phi();
286  data["eta"] = clust.eta();
287  data["energy"] = clust.e();
288  // data["etaSize"] = clust.getClusterEtaSize(); // empty
289  // data["phiSize"] = clust.getClusterPhiSize(); // empty
290  return data;
291 }
292 
293 // Specialisation for CaloCells
294 template <>
297  data["phi"] = cell.phi();
298  data["eta"] = cell.eta();
299  data["energy"] = cell.e();
300  // data["etaSize"] = clust.getClusterEtaSize(); // empty
301  // data["phiSize"] = clust.getClusterPhiSize(); // empty
302  return data;
303 }
304 
305 // Specialisation for TracksParticles
306 template <>
309  data["chi2"] = tp.chiSquared();
310  data["dof"] = tp.numberDoF();
311  data["dparams"] = {tp.d0(), tp.z0(), tp.phi0(), tp.theta(), tp.qOverP()};
312 
313  if (m_physlite) {
314  ATH_MSG_VERBOSE("Physlite mode enabled. Not adding track parameters.");
315  return data;
316  }
317 
318  if (m_extrapolator.empty()) {
319  data["pos"] = {tp.perigeeParameters().position().x(),
320  tp.perigeeParameters().position().y(),
321  tp.perigeeParameters().position().z()};
322  for (unsigned int i = 0; i < tp.numberOfParameters(); ++i) {
323  data["pos"].push_back(tp.parameterX(i));
324  data["pos"].push_back(tp.parameterY(i));
325  data["pos"].push_back(tp.parameterZ(i));
326  }
327  } else {
328  std::vector<Amg::Vector3D> positions;
329  const Trk::Perigee &peri = tp.perigeeParameters();
330  positions.push_back(Amg::Vector3D(peri.position().x(), peri.position().y(),
331  peri.position().z()));
332 
333  Trk::CurvilinearParameters startParameters(peri.position(), peri.momentum(),
334  peri.charge());
339  Trk::ExtrapolationCode eCode = m_extrapolator->extrapolate(ecc);
340  if (eCode.isSuccess()) {
341  // loop over the collected information
342  for (auto &es : ecc.extrapolationSteps) {
343 
344  // continue if we have parameters
345  const Trk::TrackParameters *parameters = es.parameters;
346  if (parameters) {
347  Amg::Vector3D pos = parameters->position();
348  positions.push_back(pos);
349  delete parameters;
350  }
351  }
352  positions.push_back(ecc.endParameters->position());
353 
354  // Now add the positions to the output
355  for (auto pos : positions) {
356  data["pos"].push_back(pos.x());
357  data["pos"].push_back(pos.y());
358  data["pos"].push_back(pos.z());
359  }
360 
361  } else {
363  "Failure in extrapolation for Track with start parameters "
364  << startParameters);
365  }
366  }
367 
368  return data;
369 }
370 
371 // Specialisation for Tracks
372 template <>
375  const Trk::FitQuality *quality = track.fitQuality();
376 
377  data["chi2"] = (quality ? quality->chiSquared() : 0.0);
378  data["dof"] = (quality ? quality->doubleNumberDoF() : 0.0);
379 
380  const Trk::Perigee *peri = track.perigeeParameters();
381  if (peri) {
382  data["dparams"] = {peri->parameters()[Trk::d0], peri->parameters()[Trk::z0],
383  peri->parameters()[Trk::phi0],
384  peri->parameters()[Trk::theta],
385  peri->parameters()[Trk::qOverP]};
386 
387  } else {
388  data["pos"] = {};
389  }
390 
392  track.trackParameters();
393  if (parameters) {
394  for (const Trk::TrackParameters *param : *parameters) {
395  data["pos"].push_back(param->position().x());
396  data["pos"].push_back(param->position().y());
397  data["pos"].push_back(param->position().z());
398  }
399  } else {
400  const DataVector<const Trk::MeasurementBase> *measurements =
401  track.measurementsOnTrack();
402  if (measurements) {
403  for (const Trk::MeasurementBase *meas : *measurements) {
404  data["pos"].push_back(meas->globalPosition().x());
405  data["pos"].push_back(meas->globalPosition().y());
406  data["pos"].push_back(meas->globalPosition().z());
407  }
408  }
409  }
410 
411  return data;
412 }
413 
414 // Specialisation for Muons
415 template <>
418  data["Phi"] = muon.phi();
419  data["Eta"] = muon.eta();
420 
421  std::vector<std::string> quality = {"Tight", "Medium", "Loose", "VeryLoose"};
422  data["Quality"] = quality[static_cast<unsigned int>(muon.quality())];
423  std::vector<std::string> type = {"Combined", "Standalone", "SegmentTagged",
424  "CaloTagged", "SiAssociatedForward"};
425  data["Type"] = type[static_cast<unsigned int>(muon.muonType())];
426 
427  addLink(muon.clusterLink(), data["LinkedClusters"]);
428  addLink(muon.inDetTrackParticleLink(), data["LinkedTracks"]);
429  addLink(muon.muonSpectrometerTrackParticleLink(), data["LinkedTracks"]);
430  addLink(muon.extrapolatedMuonSpectrometerTrackParticleLink(),
431  data["LinkedTracks"]);
432 
433  return data;
434 }
435 
436 // Specialisation for Tau Jets
437 template <>
440  data["phi"] = tauJet.phi();
441  data["eta"] = tauJet.eta();
442  data["energy"] = tauJet.e();
443  return data;
444 }
445 
446 // Specialisation for Electrons
447 template <>
450  data["phi"] = electron.phi();
451  data["eta"] = electron.eta();
452  data["energy"] = electron.e();
453  addLink(electron.caloClusterLink(), data["LinkedClusters"]);
454  addLink(electron.trackParticleLink(), data["LinkedTracks"]);
455 
456  return data;
457 }
458 
459 // Specialisation for Photons
460 template <>
463  data["phi"] = photon.phi();
464  data["eta"] = photon.eta();
465  data["energy"] = photon.e();
466  addLink(photon.caloClusterLink(), data["LinkedClusters"]);
467 
468  return data;
469 }
470 
471 template <class TYPE>
473  if (link.isValid()) {
474  data.push_back(link.dataID() + ":" + std::to_string(link.index()));
475  }
476 }
477 
479  std::ofstream outputFile(m_outputJSON_Name);
480  if (!outputFile.is_open()) {
481  ATH_MSG_WARNING("Unable to open " << m_outputJSON_Name << " for writing.");
482  return StatusCode::FAILURE;
483  }
485  return StatusCode::SUCCESS;
486 }
487 
488 template <class TYPE>
491  const std::string &jsonType) {
492  if (key.empty()) {
493  return StatusCode::SUCCESS;
494  }
495  SG::ReadHandle<TYPE> handle(key);
496 
497  ATH_MSG_VERBOSE("Trying to load " << handle.key());
498  ATH_CHECK(handle.isValid());
499  ATH_MSG_VERBOSE("Which has " << handle->numberOfCollections()
500  << " collections: ");
501 
502  nlohmann::json tmp = getData(*handle);
503  if (!tmp.is_null()) {
504  ATH_MSG_VERBOSE("Writing " << jsonType << " : " << handle.key() << " with"
505  << tmp.size() << " elements:");
506  event[jsonType][handle.key()] = tmp;
507  }
508  return StatusCode::SUCCESS;
509 }
510 
511 // Generic PRD
512 template <class TYPE>
514 
515  nlohmann::json colldata = {};
516  for (const auto &coll : container) {
517  for (const auto &prd : *coll) {
519  data["pos"] = {prd->globalPosition().x(), prd->globalPosition().y(),
520  prd->globalPosition().z()};
521  Identifier id = prd->identify();
522  data["id"] = id.get_compact();
523  colldata.push_back(data);
524  }
525  }
526 
527  return colldata;
528 }
xAOD::CaloCluster_v1::phi
virtual double phi() const
The azimuthal angle ( ) of the particle.
Definition: CaloCluster_v1.cxx:256
DumpEventDataToJsonAlg.h
DumpEventDataToJsonAlg::initialize
virtual StatusCode initialize() override
inherited from Algorithm
Definition: DumpEventDataToJsonAlg.cxx:34
Trk::ExtrapolationMode::CollectPassive
@ CollectPassive
Definition: ExtrapolationCell.h:57
xAOD::muon
@ muon
Definition: TrackingPrimitives.h:196
data
char data[hepevt_bytes_allocation_ATLAS]
Definition: HepEvt.cxx:11
ActsTrk::TrackContainer
Definition: TrackContainer.h:31
Trk::ExtrapolationCell::extrapolationSteps
std::vector< ExtrapolationStep< T > > extrapolationSteps
parameters on sensitive detector elements
Definition: ExtrapolationCell.h:292
TrackStateAuxContainer.h
ReadCellNoiseFromCool.cell
cell
Definition: ReadCellNoiseFromCool.py:53
phi
Scalar phi() const
phi method
Definition: AmgMatrixBasePlugin.h:67
ATH_MSG_INFO
#define ATH_MSG_INFO(x)
Definition: AthMsgStreamMacros.h:31
xAOD::EventInfo_v1::eventNumber
uint64_t eventNumber() const
The current event's event number.
Trk::Track
The ATLAS Track class.
Definition: Tracking/TrkEvent/TrkTrack/TrkTrack/Track.h:73
xAOD::TauJet_v3::eta
virtual double eta() const
The pseudorapidity ( ) of the particle.
json
nlohmann::json json
Definition: HistogramDef.cxx:9
DumpEventDataToJsonAlg::m_extrapolator
ToolHandle< Trk::IExtrapolationEngine > m_extrapolator
Definition: DumpEventDataToJsonAlg.h:115
Trk::ExtrapolationCell::addConfigurationMode
void addConfigurationMode(ExtrapolationMode::eMode em)
add a configuration mode
Definition: ExtrapolationCell.h:345
eta
Scalar eta() const
pseudorapidity method
Definition: AmgMatrixBasePlugin.h:83
Trk::ParametersBase::position
const Amg::Vector3D & position() const
Access method for the position.
SG::ReadHandle
Definition: StoreGate/StoreGate/ReadHandle.h:67
Trk::ParametersT
Dummy class used to allow special convertors to be called for surfaces owned by a detector element.
Definition: EMErrorDetail.h:25
DumpEventDataToJsonAlg::m_geometryContextKey
SG::ReadHandleKey< ActsTrk::GeometryContext > m_geometryContextKey
Definition: DumpEventDataToJsonAlg.h:117
DumpEventDataToJsonAlg::m_stgcPrepRawDataKey
SG::ReadHandleKey< Muon::sTgcPrepDataContainer > m_stgcPrepRawDataKey
Definition: DumpEventDataToJsonAlg.h:110
theta
Scalar theta() const
theta method
Definition: AmgMatrixBasePlugin.h:75
DumpEventDataToJsonAlg::m_trackCollectionKeys
SG::ReadHandleKeyArray< TrackCollection > m_trackCollectionKeys
Definition: DumpEventDataToJsonAlg.h:100
DumpEventDataToJsonAlg::m_pixelPrepRawDataKey
SG::ReadHandleKey< InDet::PixelClusterContainer > m_pixelPrepRawDataKey
Definition: DumpEventDataToJsonAlg.h:111
DumpEventDataToJsonAlg::getAndFillArrayOfContainers
StatusCode getAndFillArrayOfContainers(nlohmann::json &event, const SG::ReadHandleKeyArray< TYPE > &keys, const std::string &jsonType)
Definition: DumpEventDataToJsonAlg.cxx:255
DumpEventDataToJsonAlg::m_rpcPrepRawDataKey
SG::ReadHandleKey< Muon::RpcPrepDataContainer > m_rpcPrepRawDataKey
Definition: DumpEventDataToJsonAlg.h:107
M_PI
#define M_PI
Definition: ActiveFraction.h:11
TrackParametersContainer.h
DumpEventDataToJsonAlg::m_trtPrepRawDataKey
SG::ReadHandleKey< InDet::TRT_DriftCircleContainer > m_trtPrepRawDataKey
Definition: DumpEventDataToJsonAlg.h:113
ParticleTest.tp
tp
Definition: ParticleTest.py:25
xAOD::pion
@ pion
Definition: TrackingPrimitives.h:197
Trk::z0
@ z0
Definition: ParamDefs.h:64
SG::HandleKeyArray
Definition: StoreGate/StoreGate/HandleKeyArray.h:45
ATH_MSG_VERBOSE
#define ATH_MSG_VERBOSE(x)
Definition: AthMsgStreamMacros.h:28
SG::ReadHandleKey
Property holding a SG store/key/clid from which a ReadHandle is made.
Definition: StoreGate/StoreGate/ReadHandleKey.h:39
MuonR4::to_string
std::string to_string(const SectorProjector proj)
Definition: MsTrackSeeder.cxx:74
SG::VarHandleKey::empty
bool empty() const
Test if the key is blank.
Definition: AthToolSupport/AsgDataHandles/Root/VarHandleKey.cxx:150
drawFromPickle.exp
exp
Definition: drawFromPickle.py:36
DumpEventDataToJsonAlg::prependTestEvent
void prependTestEvent()
Dumps a dummy event with some objects at specific eta/phi coordinates for calibration.
Definition: DumpEventDataToJsonAlg.cxx:195
xAOD::TauJet_v3::e
virtual double e() const
The total energy of the particle.
Definition: TauJet_v3.cxx:87
DumpEventDataToJsonAlg::finalize
virtual StatusCode finalize() override
Definition: DumpEventDataToJsonAlg.cxx:478
DumpEventDataToJsonAlg::m_eventInfoKey
SG::ReadHandleKey< xAOD::EventInfo > m_eventInfoKey
Definition: DumpEventDataToJsonAlg.h:82
TrigVSI::AlgConsts::nPhi
constexpr int nPhi
Default bin number of phi for vertex map.
Definition: Trigger/TrigTools/TrigVrtSecInclusive/TrigVrtSecInclusive/Constants.h:27
python.CaloAddPedShiftConfig.type
type
Definition: CaloAddPedShiftConfig.py:42
xAOD::Muon_v1
Class describing a Muon.
Definition: Muon_v1.h:38
xAOD::EventInfo_v1::runNumber
uint32_t runNumber() const
The current event's run number.
DumpEventDataToJsonAlg::m_trackContainerKeys
SG::ReadHandleKeyArray< ActsTrk::TrackContainer > m_trackContainerKeys
Definition: DumpEventDataToJsonAlg.h:103
XMLtoHeader.count
count
Definition: XMLtoHeader.py:84
drawFromPickle.atan
atan
Definition: drawFromPickle.py:36
DeMoUpdate.reverse
reverse
Definition: DeMoUpdate.py:563
DumpEventDataToJsonAlg::m_tgcPrepRawDataKey
SG::ReadHandleKey< Muon::TgcPrepDataContainer > m_tgcPrepRawDataKey
Definition: DumpEventDataToJsonAlg.h:108
compareGeometries.outputFile
string outputFile
Definition: compareGeometries.py:25
TrackStateContainer.h
xAOD::TauJet_v3::phi
virtual double phi() const
The azimuthal angle ( ) of the particle.
DumpEventDataToJsonAlg::m_mmPrepRawDataKey
SG::ReadHandleKey< Muon::MMPrepDataContainer > m_mmPrepRawDataKey
Definition: DumpEventDataToJsonAlg.h:109
DumpEventDataToJsonAlg::m_tauJetKeys
SG::ReadHandleKeyArray< xAOD::TauJetContainer > m_tauJetKeys
Definition: DumpEventDataToJsonAlg.h:90
xAOD::CaloCluster_v1
Description of a calorimeter cluster.
Definition: CaloCluster_v1.h:62
jet
Definition: JetCalibTools_PlotJESFactors.cxx:23
DumpEventDataToJsonAlg::m_dumpTestEvent
Gaudi::Property< bool > m_dumpTestEvent
Definition: DumpEventDataToJsonAlg.h:122
event
POOL::TEvent event(POOL::TEvent::kClassAccess)
xAOD::CaloCluster_v1::eta
virtual double eta() const
The pseudorapidity ( ) of the particle.
Definition: CaloCluster_v1.cxx:251
lumiFormat.i
int i
Definition: lumiFormat.py:85
DumpEventDataToJsonAlg::m_jetKeys
SG::ReadHandleKeyArray< xAOD::JetContainer > m_jetKeys
Definition: DumpEventDataToJsonAlg.h:86
Trk::theta
@ theta
Definition: ParamDefs.h:66
EL::StatusCode
::StatusCode StatusCode
StatusCode definition for legacy code.
Definition: PhysicsAnalysis/D3PDTools/EventLoop/EventLoop/StatusCode.h:22
Trk::ExtrapolationCode::isSuccess
bool isSuccess() const
return success
Definition: ExtrapolationCell.h:153
xAOD::TauJet_v3
Class describing a tau jet.
Definition: TauJet_v3.h:41
Trk::ExtrapolationCode
Definition: ExtrapolationCell.h:105
add-xsec-uncert-quadrature-N.label
label
Definition: add-xsec-uncert-quadrature-N.py:104
Trk::ExtrapolationCell::endParameters
T * endParameters
by pointer - are newly created and can be optionally 0
Definition: ExtrapolationCell.h:238
DumpEventDataToJsonAlg::m_outputJSON_Name
Gaudi::Property< std::string > m_outputJSON_Name
Definition: DumpEventDataToJsonAlg.h:120
DumpEventDataToJsonAlg::m_sctPrepRawDataKey
SG::ReadHandleKey< InDet::SCT_ClusterContainer > m_sctPrepRawDataKey
Definition: DumpEventDataToJsonAlg.h:112
ATH_CHECK
#define ATH_CHECK
Definition: AthCheckMacros.h:40
Trk::ExtrapolationMode::CollectSensitive
@ CollectSensitive
Definition: ExtrapolationCell.h:56
Trk::FitQuality
Class to represent and store fit qualities from track reconstruction in terms of and number of degre...
Definition: FitQuality.h:97
Trk::ParametersBase
Definition: ParametersBase.h:55
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
Trk::CurvilinearParametersT
Definition: CurvilinearParametersT.h:48
DumpEventDataToJsonAlg::m_mdtPrepRawDataKey
SG::ReadHandleKey< Muon::MdtPrepDataContainer > m_mdtPrepRawDataKey
Definition: DumpEventDataToJsonAlg.h:106
DeMoUpdate.tmp
string tmp
Definition: DeMoUpdate.py:1167
DumpEventDataToJsonAlg::m_eventData
nlohmann::json m_eventData
Definition: DumpEventDataToJsonAlg.h:125
DataVector
Derived DataVector<T>.
Definition: DataVector.h:795
AthAlgorithm
Definition: AthAlgorithm.h:47
SG::ReadHandle::isValid
virtual bool isValid() override final
Can the handle be successfully dereferenced?
TrackJacobianContainer.h
Trk::MeasurementBase
Definition: MeasurementBase.h:58
TYPE
#define TYPE(CODE, TYP, IOTYP)
DumpEventDataToJsonAlg::getAndFillContainer
StatusCode getAndFillContainer(nlohmann::json &event, const SG::ReadHandleKey< TYPE > &key, const std::string &jsonType)
Definition: DumpEventDataToJsonAlg.cxx:489
DumpEventDataToJsonAlg::execute
virtual StatusCode execute() override
Definition: DumpEventDataToJsonAlg.cxx:127
DumpEventDataToJsonAlg::getActsData
nlohmann::json getActsData(const typename ActsTrk::TrackContainer::ConstTrackProxy &track, const Acts::GeometryContext &gctx)
Definition: DumpEventDataToJsonAlg.cxx:71
name
std::string name
Definition: Control/AthContainers/Root/debug.cxx:240
DumpEventDataToJsonAlg::addLink
void addLink(const TYPE &link, nlohmann::json &data)
Definition: DumpEventDataToJsonAlg.cxx:472
Trk::d0
@ d0
Definition: ParamDefs.h:63
DumpEventDataToJsonAlg::m_caloClustersKeys
SG::ReadHandleKeyArray< xAOD::CaloClusterContainer > m_caloClustersKeys
Definition: DumpEventDataToJsonAlg.h:96
DumpEventDataToJsonAlg::getData
nlohmann::json getData(const TYPE &object)
Definition: DumpEventDataToJsonAlg.cxx:513
DumpEventDataToJsonAlg::m_cscPrepRawDataKey
SG::ReadHandleKey< Muon::CscPrepDataContainer > m_cscPrepRawDataKey
Definition: DumpEventDataToJsonAlg.h:105
DumpEventDataToJsonAlg::m_physlite
Gaudi::Property< bool > m_physlite
Definition: DumpEventDataToJsonAlg.h:123
DumpEventDataToJsonAlg::DumpEventDataToJsonAlg
DumpEventDataToJsonAlg(const std::string &name, ISvcLocator *pService)
Algorithm constructor.
Definition: DumpEventDataToJsonAlg.cxx:30
Amg::Vector3D
Eigen::Matrix< double, 3, 1 > Vector3D
Definition: GeoPrimitives.h:47
SG::VarHandleBase::key
virtual const std::string & key() const override final
Return the StoreGate ID for the referenced object.
Definition: AthToolSupport/AsgDataHandles/Root/VarHandleBase.cxx:64
xAOD::Electron_v1
Definition: Electron_v1.h:34
TrackMeasurementAuxContainer.h
DumpEventDataToJsonAlg::m_electronKeys
SG::ReadHandleKeyArray< xAOD::ElectronContainer > m_electronKeys
Definition: DumpEventDataToJsonAlg.h:92
python.LumiBlobConversion.pos
pos
Definition: LumiBlobConversion.py:16
MultiTrajectory.h
xAOD::Jet_v1
Class describing a jet.
Definition: Jet_v1.h:57
DumpEventDataToJsonAlg::m_photonKeys
SG::ReadHandleKeyArray< xAOD::PhotonContainer > m_photonKeys
Definition: DumpEventDataToJsonAlg.h:94
Trk::ExtrapolationCell
Definition: ExtrapolationCell.h:231
xAOD::photon
@ photon
Definition: TrackingPrimitives.h:200
CaloCell
Data object for each calorimeter readout cell.
Definition: CaloCell.h:57
xAOD::Photon_v1
Definition: Photon_v1.h:37
ATH_MSG_WARNING
#define ATH_MSG_WARNING(x)
Definition: AthMsgStreamMacros.h:32
GeoPrimitivesHelpers.h
python.TrackLeptonConfig.quality
quality
Definition: TrackLeptonConfig.py:16
Amg::setRThetaPhi
void setRThetaPhi(Amg::Vector3D &v, double r, double theta, double phi)
sets radius, the theta and phi angle of a vector.
Definition: GeoPrimitivesHelpers.h:80
Trk::qOverP
@ qOverP
perigee
Definition: ParamDefs.h:67
xAOD::EgammaParameters::electron
@ electron
Definition: EgammaEnums.h:18
DumpEventDataToJsonAlg::m_caloCellKey
SG::ReadHandleKeyArray< CaloCellContainer > m_caloCellKey
Definition: DumpEventDataToJsonAlg.h:98
physics_parameters.parameters
parameters
Definition: physics_parameters.py:144
python.Bindings.keys
keys
Definition: Control/AthenaPython/python/Bindings.py:801
xAOD::track
@ track
Definition: TrackingPrimitives.h:513
xAOD::TrackParticle_v1
Class describing a TrackParticle.
Definition: TrackParticle_v1.h:44
PowhegControl_ttFCNC_NLO.params
params
Definition: PowhegControl_ttFCNC_NLO.py:226
TrackJacobianAuxContainer.h
TrigVSI::AlgConsts::nEta
constexpr int nEta
Default bin number of eta for vertex map.
Definition: Trigger/TrigTools/TrigVrtSecInclusive/TrigVrtSecInclusive/Constants.h:26
Trk::ExtrapolationMode::StopAtBoundary
@ StopAtBoundary
Definition: ExtrapolationCell.h:55
TrackParametersAuxContainer.h
xAOD::CaloCluster_v1::e
virtual double e() const
The total energy of the particle.
Definition: CaloCluster_v1.cxx:265
Trk::phi0
@ phi0
Definition: ParamDefs.h:65
DumpEventDataToJsonAlg::m_trackParticleKeys
SG::ReadHandleKeyArray< xAOD::TrackParticleContainer > m_trackParticleKeys
Definition: DumpEventDataToJsonAlg.h:84
TrackMeasurementContainer.h
mapkey::key
key
Definition: TElectronEfficiencyCorrectionTool.cxx:37
DumpEventDataToJsonAlg::m_muonKeys
SG::ReadHandleKeyArray< xAOD::MuonContainer > m_muonKeys
Definition: DumpEventDataToJsonAlg.h:88
Identifier
Definition: IdentifierFieldParser.cxx:14