From de028211526b06605cfe3be576ff99bfb701d20c Mon Sep 17 00:00:00 2001 From: "Documenter.jl" Date: Tue, 5 Nov 2024 19:46:22 +0000 Subject: [PATCH] build based on 59d3337 --- dev/.documenter-siteinfo.json | 2 +- dev/api/index.html | 2 +- dev/index.html | 6 +++--- dev/release_notes/index.html | 2 +- dev/search_index.js | 2 +- 5 files changed, 7 insertions(+), 7 deletions(-) diff --git a/dev/.documenter-siteinfo.json b/dev/.documenter-siteinfo.json index 64f38ec..0318c17 100644 --- a/dev/.documenter-siteinfo.json +++ b/dev/.documenter-siteinfo.json @@ -1 +1 @@ -{"documenter":{"julia_version":"1.11.1","generation_timestamp":"2024-11-04T15:47:09","documenter_version":"1.7.0"}} \ No newline at end of file +{"documenter":{"julia_version":"1.11.1","generation_timestamp":"2024-11-05T19:46:15","documenter_version":"1.7.0"}} \ No newline at end of file diff --git a/dev/api/index.html b/dev/api/index.html index e13351f..f540bc3 100644 --- a/dev/api/index.html +++ b/dev/api/index.html @@ -1,2 +1,2 @@ -Public APIs · EDM4hep.jl

Public Documentation

Documentation for EDM4hep.jl public interface.

Index - Types

Index - Functions

Modules

EDM4hep.EDM4hepModule

Main module for EDM4hep.jl – Key4hep Event Data Model for Julia.

All data model types are exported from this module for public use

Exports

source
EDM4hep.RootIOModule

ROOT I/O module for EDM4hep.jl

It supports both formats: TTree and RNTuple

source
EDM4hep.AnalysisModule

Analysis module for EDM4hep.jl

A number of data structures and functions to support analysis of EDM4hep data in multithreaded mode.

source

Types

This is the list of all types defined for EDM4hep using the PODIO yaml file.

EDM4hep.CaloHitContributionType

Monte Carlo contribution to SimCalorimeterHit

  • Author: F.Gaede, DESY

Fields

  • PDG::Int32: PDG code of the shower particle that caused this contribution.
  • energy::Float32: energy in [GeV] of the this contribution
  • time::Float32: time in [ns] of this contribution
  • stepPosition::Vector3f: position of this energy deposition (step) [mm]

Relations

  • particle::MCParticle: primary MCParticle that caused the shower responsible for this contribution to the hit.
source
EDM4hep.CalorimeterHitType

Calorimeter hit

  • Author: F.Gaede, DESY

Fields

  • cellID::UInt64: detector specific (geometrical) cell id.
  • energy::Float32: energy of the hit in [GeV].
  • energyError::Float32: error of the hit energy in [GeV].
  • time::Float32: time of the hit in [ns].
  • position::Vector3f: position of the hit in world coordinates in [mm].
  • type::Int32: type of hit. Mapping of integer types to names via collection parameters "CalorimeterHitTypeNames" and "CalorimeterHitTypeValues".
source
EDM4hep.ClusterType

Calorimeter Hit Cluster

  • Author: F.Gaede, DESY

Fields

  • type::Int32: flagword that defines the type of cluster. Bits 16-31 are used internally.
  • energy::Float32: energy of the cluster [GeV]
  • energyError::Float32: error on the energy
  • position::Vector3f: position of the cluster [mm]
  • positionError::SVector{6,Float32}: covariance matrix of the position (6 Parameters)
  • iTheta::Float32: intrinsic direction of cluster at position Theta. Not to be confused with direction cluster is seen from IP.
  • phi::Float32: intrinsic direction of cluster at position - Phi. Not to be confused with direction cluster is seen from IP.
  • directionError::Vector3f: covariance matrix of the direction (3 Parameters) [mm^2]
  • shapeParameters::PVector{Float32}: shape parameters - check/set collection parameter ClusterShapeParameters for size and names of parameters.
  • subdetectorEnergies::PVector{Float32}: energy observed in a particular subdetector. Check/set collection parameter ClusterSubdetectorNames for decoding the indices of the array.

Relations

  • clusters::Cluster: clusters that have been combined to this cluster.
  • hits::CalorimeterHit: hits that have been combined to this cluster.
  • particleIDs::ParticleID: particle IDs (sorted by their likelihood)

Methods

  • setShapeParameters(object::Cluster, v::AbstractVector{Float32}): assign a set of values to the shapeParameters vector member
  • setSubdetectorEnergies(object::Cluster, v::AbstractVector{Float32}): assign a set of values to the subdetectorEnergies vector member
  • pushToClusters(obj::Cluster, robj::Cluster): push related object to the clusters relation
  • popFromClusters(obj::Cluster): pop last related object from clusters relation
  • pushToHits(obj::Cluster, robj::CalorimeterHit): push related object to the hits relation
  • popFromHits(obj::Cluster): pop last related object from hits relation
  • pushToParticleIDs(obj::Cluster, robj::ParticleID): push related object to the particleIDs relation
  • popFromParticleIDs(obj::Cluster): pop last related object from particleIDs relation
source
EDM4hep.EventHeaderType

Event Header. Additional parameters are assumed to go into the metadata tree.

  • Author: F.Gaede

Fields

  • eventNumber::Int32: event number
  • runNumber::Int32: run number
  • timeStamp::UInt64: time stamp
  • weight::Float32: event weight
source
EDM4hep.HitLevelDataType

HitLevelData

Fields

  • cellID::UInt64: cell id
  • N::UInt32: number of reconstructed ionization cluster.
  • eDep::Float32: reconstructed energy deposit [GeV].
  • pathLength::Float32: track path length [mm].
source
EDM4hep.HypothesisType

Hypothesis

Fields

  • chi2::Float32: chi2
  • expected::Float32: expected value
  • sigma::Float32: sigma value
source
EDM4hep.MCParticleType

The Monte Carlo particle - based on the lcio::MCParticle.

  • Author: F.Gaede, DESY

Fields

  • PDG::Int32: PDG code of the particle
  • generatorStatus::Int32: status of the particle as defined by the generator
  • simulatorStatus::Int32: status of the particle from the simulation program - use BIT constants below
  • charge::Float32: particle charge
  • time::Float32: creation time of the particle in [ns] wrt. the event, e.g. for preassigned decays or decays in flight from the simulator.
  • mass::Float64: mass of the particle in [GeV]
  • vertex::Vector3d: production vertex of the particle in [mm].
  • endpoint::Vector3d: endpoint of the particle in [mm]
  • momentum::Vector3d: particle 3-momentum at the production vertex in [GeV]
  • momentumAtEndpoint::Vector3d: particle 3-momentum at the endpoint in [GeV]
  • spin::Vector3f: spin (helicity) vector of the particle.
  • colorFlow::Vector2i: color flow as defined by the generator

Relations

  • parents::MCParticle: The parents of this particle.
  • daughters::MCParticle: The daughters this particle.

Methods

  • pushToParents(obj::MCParticle, robj::MCParticle): push related object to the parents relation
  • popFromParents(obj::MCParticle): pop last related object from parents relation
  • pushToDaughters(obj::MCParticle, robj::MCParticle): push related object to the daughters relation
  • popFromDaughters(obj::MCParticle): pop last related object from daughters relation
source
EDM4hep.MCRecoCaloAssociationType

Association between a CaloHit and the corresponding simulated CaloHit

  • Author: C. Bernet, B. Hegner

Fields

  • weight::Float32: weight of this association

Relations

  • rec::CalorimeterHit: reference to the reconstructed hit
  • sim::SimCalorimeterHit: reference to the simulated hit
source
EDM4hep.MCRecoCaloParticleAssociationType

Association between a CalorimeterHit and a MCParticle

  • Author: Placido Fernandez Declara

Fields

  • weight::Float32: weight of this association

Relations

  • rec::CalorimeterHit: reference to the reconstructed hit
  • sim::MCParticle: reference to the Monte-Carlo particle
source
EDM4hep.MCRecoClusterParticleAssociationType

Association between a Cluster and a MCParticle

  • Author: Placido Fernandez Declara

Fields

  • weight::Float32: weight of this association

Relations

  • rec::Cluster: reference to the cluster
  • sim::MCParticle: reference to the Monte-Carlo particle
source
EDM4hep.MCRecoParticleAssociationType

Used to keep track of the correspondence between MC and reconstructed particles

  • Author: C. Bernet, B. Hegner

Fields

  • weight::Float32: weight of this association

Relations

  • rec::ReconstructedParticle: reference to the reconstructed particle
  • sim::MCParticle: reference to the Monte-Carlo particle
source
EDM4hep.MCRecoTrackParticleAssociationType

Association between a Track and a MCParticle

  • Author: Placido Fernandez Declara

Fields

  • weight::Float32: weight of this association

Relations

  • rec::Track: reference to the track
  • sim::MCParticle: reference to the Monte-Carlo particle
source
EDM4hep.MCRecoTrackerAssociationType

Association between a TrackerHit and the corresponding simulated TrackerHit

  • Author: C. Bernet, B. Hegner

Fields

  • weight::Float32: weight of this association

Relations

  • rec::TrackerHit: reference to the reconstructed hit
  • sim::SimTrackerHit: reference to the simulated hit
source
EDM4hep.MCRecoTrackerHitPlaneAssociationType

Association between a TrackerHitPlane and the corresponding simulated TrackerHit

  • Author: Placido Fernandez Declara

Fields

  • weight::Float32: weight of this association

Relations

  • rec::TrackerHitPlane: reference to the reconstructed hit
  • sim::SimTrackerHit: reference to the simulated hit
source
EDM4hep.ParticleIDType

ParticleID

  • Author: F.Gaede, DESY

Fields

  • type::Int32: userdefined type
  • PDG::Int32: PDG code of this id - ( 999999 ) if unknown.
  • algorithmType::Int32: type of the algorithm/module that created this hypothesis
  • likelihood::Float32: likelihood of this hypothesis - in a user defined normalization.
  • parameters::PVector{Float32}: parameters associated with this hypothesis. Check/set collection parameters ParameterNames_PIDAlgorithmTypeName for decoding the indices.

Methods

  • setParameters(object::ParticleID, v::AbstractVector{Float32}): assign a set of values to the parameters vector member
source
EDM4hep.QuantityType

Quantity

Fields

  • type::Int16: flag identifying how to interpret the quantity
  • value::Float32: value of the quantity
  • error::Float32: error on the value of the quantity
source
EDM4hep.RawCalorimeterHitType

Raw calorimeter hit

  • Author: F.Gaede, DESY

Fields

  • cellID::UInt64: detector specific (geometrical) cell id.
  • amplitude::Int32: amplitude of the hit in ADC counts.
  • timeStamp::Int32: time stamp for the hit.
source
EDM4hep.RawTimeSeriesType

Raw data of a detector readout

  • Author: F.Gaede, DESY

Fields

  • cellID::UInt64: detector specific cell id.
  • quality::Int32: quality flag for the hit.
  • time::Float32: time of the hit [ns].
  • charge::Float32: integrated charge of the hit [fC].
  • interval::Float32: interval of each sampling [ns].
  • adcCounts::PVector{Int32}: raw data (32-bit) word at i.

Methods

  • setAdcCounts(object::RawTimeSeries, v::AbstractVector{Int32}): assign a set of values to the adcCounts vector member
source
EDM4hep.RecDqdxType

dN/dx or dE/dx info of Track.

  • Author: Wenxing Fang, IHEP

Fields

  • dQdx::Quantity: the reconstructed dEdx or dNdx and its error
  • particleType::Int16: particle type, e(0),mu(1),pi(2),K(3),p(4).
  • type::Int16: type.
  • hypotheses::SVector{5,Hypothesis}: 5 particle hypothesis
  • hitData::PVector{HitLevelData}: hit level data

Relations

  • track::Track: the corresponding track.

Methods

  • setHitData(object::RecDqdx, v::AbstractVector{HitLevelData}): assign a set of values to the hitData vector member
source
EDM4hep.RecIonizationClusterType

Reconstructed Ionization Cluster

  • Author: Wenxing Fang, IHEP

Fields

  • cellID::UInt64: cell id.
  • significance::Float32: significance.
  • type::Int16: type.

Relations

  • trackerPulse::TrackerPulse: the TrackerPulse used to create the ionization cluster.

Methods

  • pushToTrackerPulse(obj::RecIonizationCluster, robj::TrackerPulse): push related object to the trackerPulse relation
  • popFromTrackerPulse(obj::RecIonizationCluster): pop last related object from trackerPulse relation
source
EDM4hep.RecoParticleVertexAssociationType

Association between a Reconstructed Particle and a Vertex

  • Author: Placido Fernandez Declara

Fields

  • weight::Float32: weight of this association

Relations

  • rec::ReconstructedParticle: reference to the reconstructed particle
  • vertex::Vertex: reference to the vertex
source
EDM4hep.ReconstructedParticleType

Reconstructed Particle

  • Author: F.Gaede, DESY

Fields

  • type::Int32: type of reconstructed particle. Check/set collection parameters ReconstructedParticleTypeNames and ReconstructedParticleTypeValues.
  • energy::Float32: [GeV] energy of the reconstructed particle. Four momentum state is not kept consistent internally.
  • momentum::Vector3f: [GeV] particle momentum. Four momentum state is not kept consistent internally.
  • referencePoint::Vector3f: [mm] reference, i.e. where the particle has been measured
  • charge::Float32: charge of the reconstructed particle.
  • mass::Float32: [GeV] mass of the reconstructed particle, set independently from four vector. Four momentum state is not kept consistent internally.
  • goodnessOfPID::Float32: overall goodness of the PID on a scale of [0;1]
  • covMatrix::SVector{10,Float32}: cvariance matrix of the reconstructed particle 4vector (10 parameters). Stored as lower triangle matrix of the four momentum (px,py,pz,E), i.e. cov(px,px), cov(py,##

Relations

  • startVertex::Vertex: start vertex associated to this particle
  • particleIDUsed::ParticleID: particle Id used for the kinematics of this particle
  • clusters::Cluster: clusters that have been used for this particle.
  • tracks::Track: tracks that have been used for this particle.
  • particles::ReconstructedParticle: reconstructed particles that have been combined to this particle.
  • particleIDs::ParticleID: particle Ids (not sorted by their likelihood)

Methods

  • pushToClusters(obj::ReconstructedParticle, robj::Cluster): push related object to the clusters relation
  • popFromClusters(obj::ReconstructedParticle): pop last related object from clusters relation
  • pushToTracks(obj::ReconstructedParticle, robj::Track): push related object to the tracks relation
  • popFromTracks(obj::ReconstructedParticle): pop last related object from tracks relation
  • pushToParticles(obj::ReconstructedParticle, robj::ReconstructedParticle): push related object to the particles relation
  • popFromParticles(obj::ReconstructedParticle): pop last related object from particles relation
  • pushToParticleIDs(obj::ReconstructedParticle, robj::ParticleID): push related object to the particleIDs relation
  • popFromParticleIDs(obj::ReconstructedParticle): pop last related object from particleIDs relation
source
EDM4hep.SimCalorimeterHitType

Simulated calorimeter hit

  • Author: F.Gaede, DESY

Fields

  • cellID::UInt64: ID of the sensor that created this hit
  • energy::Float32: energy of the hit in [GeV].
  • position::Vector3f: position of the hit in world coordinates in [mm].

Relations

  • contributions::CaloHitContribution: Monte Carlo step contribution - parallel to particle

Methods

  • pushToContributions(obj::SimCalorimeterHit, robj::CaloHitContribution): push related object to the contributions relation
  • popFromContributions(obj::SimCalorimeterHit): pop last related object from contributions relation
source
EDM4hep.SimPrimaryIonizationClusterType

Simulated Primary Ionization

  • Author: Wenxing Fang, IHEP

Fields

  • cellID::UInt64: cell id.
  • time::Float32: the primary ionization's time in the lab frame [ns].
  • position::Vector3d: the primary ionization's position [mm].
  • type::Int16: type.
  • electronCellID::PVector{UInt64}: cell id.
  • electronTime::PVector{Float32}: the time in the lab frame [ns].
  • electronPosition::PVector{Vector3d}: the position in the lab frame [mm].
  • pulseTime::PVector{Float32}: the pulse's time in the lab frame [ns].
  • pulseAmplitude::PVector{Float32}: the pulse's amplitude [fC].

Relations

  • mcparticle::MCParticle: the particle that caused the ionizing collisions.

Methods

  • setElectronCellID(object::SimPrimaryIonizationCluster, v::AbstractVector{UInt64}): assign a set of values to the electronCellID vector member
  • setElectronTime(object::SimPrimaryIonizationCluster, v::AbstractVector{Float32}): assign a set of values to the electronTime vector member
  • setElectronPosition(object::SimPrimaryIonizationCluster, v::AbstractVector{Vector3d}): assign a set of values to the electronPosition vector member
  • setPulseTime(object::SimPrimaryIonizationCluster, v::AbstractVector{Float32}): assign a set of values to the pulseTime vector member
  • setPulseAmplitude(object::SimPrimaryIonizationCluster, v::AbstractVector{Float32}): assign a set of values to the pulseAmplitude vector member
source
EDM4hep.SimTrackerHitType

Simulated tracker hit

  • Author: F.Gaede, DESY

Fields

  • cellID::UInt64: ID of the sensor that created this hit
  • EDep::Float32: energy deposited in the hit [GeV].
  • time::Float32: proper time of the hit in the lab frame in [ns].
  • pathLength::Float32: path length of the particle in the sensitive material that resulted in this hit.
  • quality::Int32: quality bit flag.
  • position::Vector3d: the hit position in [mm].
  • momentum::Vector3f: the 3-momentum of the particle at the hits position in [GeV]

Relations

  • mcparticle::MCParticle: MCParticle that caused the hit.
source
EDM4hep.TimeSeriesType

Calibrated Detector Data

  • Author: Wenxing Fang, IHEP

Fields

  • cellID::UInt64: cell id.
  • time::Float32: begin time [ns].
  • interval::Float32: interval of each sampling [ns].
  • amplitude::PVector{Float32}: calibrated detector data.

Methods

  • setAmplitude(object::TimeSeries, v::AbstractVector{Float32}): assign a set of values to the amplitude vector member
source
EDM4hep.TrackType

Reconstructed track

  • Author: F.Gaede, DESY

Fields

  • type::Int32: flagword that defines the type of track.Bits 16-31 are used internally
  • chi2::Float32: Chi^2 of the track fit
  • ndf::Int32: number of degrees of freedom of the track fit
  • dEdx::Float32: dEdx of the track.
  • dEdxError::Float32: error of dEdx.
  • radiusOfInnermostHit::Float32: radius of the innermost hit that has been used in the track fit
  • subdetectorHitNumbers::PVector{Int32}: number of hits in particular subdetectors.Check/set collection variable TrackSubdetectorNames for decoding the indices
  • trackStates::PVector{TrackState}: track states
  • dxQuantities::PVector{Quantity}: different measurements of dx quantities

Relations

  • trackerHits::TrackerHit: hits that have been used to create this track
  • tracks::Track: tracks (segments) that have been combined to create this track

Methods

  • setSubdetectorHitNumbers(object::Track, v::AbstractVector{Int32}): assign a set of values to the subdetectorHitNumbers vector member
  • setTrackStates(object::Track, v::AbstractVector{TrackState}): assign a set of values to the trackStates vector member
  • setDxQuantities(object::Track, v::AbstractVector{Quantity}): assign a set of values to the dxQuantities vector member
  • pushToTrackerHits(obj::Track, robj::TrackerHit): push related object to the trackerHits relation
  • popFromTrackerHits(obj::Track): pop last related object from trackerHits relation
  • pushToTracks(obj::Track, robj::Track): push related object to the tracks relation
  • popFromTracks(obj::Track): pop last related object from tracks relation
source
EDM4hep.TrackStateType

TrackState

Fields

  • location::Int32: for use with At{Other|IP|FirstHit|LastHit|Calorimeter|Vertex}|LastLocation
  • D0::Float32: transverse impact parameter
  • phi::Float32: azimuthal angle
  • omega::Float32: is the signed curvature of the track in [1/mm].
  • Z0::Float32: longitudinal impact parameter
  • tanLambda::Float32: lambda is the dip angle of the track in r-z
  • time::Float32: time of the track at this trackstate
  • referencePoint::Vector3f: Reference point of the track parameters, e.g. the origin at the IP, or the position of the first/last hits or the entry point into the calorimeter. [mm]
  • covMatrix::SVector{21,Float32}: lower triangular covariance matrix of the track parameters. the order of parameters is d0, phi, omega, z0, tan(lambda), time. the array is a row-major flattening of the matrix.
source
EDM4hep.TrackerHitType

Tracker hit

  • Author: F.Gaede, DESY

Fields

  • cellID::UInt64: ID of the sensor that created this hit
  • type::Int32: type of raw data hit, either one of edm4hep::RawTimeSeries, edm4hep::SIMTRACKERHIT - see collection parameters "TrackerHitTypeNames" and "TrackerHitTypeValues".
  • quality::Int32: quality bit flag of the hit.
  • time::Float32: time of the hit [ns].
  • eDep::Float32: energy deposited on the hit [GeV].
  • eDepError::Float32: error measured on EDep [GeV].
  • position::Vector3d: hit position in [mm].
  • covMatrix::SVector{6,Float32}: covariance of the position (x,y,z), stored as lower triangle matrix. i.e. cov(x,x) , cov(y,x) , cov(y,y) , cov(z,x) , cov(z,y) , cov(z,z)
  • rawHits::PVector{ObjectID}: raw data hits. Check getType to get actual data type.

Methods

  • setRawHits(object::TrackerHit, v::AbstractVector{ObjectID}): assign a set of values to the rawHits vector member
source
EDM4hep.TrackerHitPlaneType

Tracker hit plane

  • Author: Placido Fernandez Declara, CERN

Fields

  • cellID::UInt64: ID of the sensor that created this hit
  • type::Int32: type of raw data hit, either one of edm4hep::RawTimeSeries, edm4hep::SIMTRACKERHIT - see collection parameters "TrackerHitTypeNames" and "TrackerHitTypeValues".
  • quality::Int32: quality bit flag of the hit.
  • time::Float32: time of the hit [ns].
  • eDep::Float32: energy deposited on the hit [GeV].
  • eDepError::Float32: error measured on EDep [GeV].
  • u::Vector2f: measurement direction vector, u lies in the x-y plane
  • v::Vector2f: measurement direction vector, v is along z
  • du::Float32: measurement error along the direction
  • dv::Float32: measurement error along the direction
  • position::Vector3d: hit position in [mm].
  • covMatrix::SVector{6,Float32}: covariance of the position (x,y,z), stored as lower triangle matrix. i.e. cov(x,x) , cov(y,x) , cov(y,y) , cov(z,x) , cov(z,y) , cov(z,z)
  • rawHits::PVector{ObjectID}: raw data hits. Check getType to get actual data type.

Methods

  • setRawHits(object::TrackerHitPlane, v::AbstractVector{ObjectID}): assign a set of values to the rawHits vector member
source
EDM4hep.TrackerPulseType

Reconstructed Tracker Pulse

  • Author: Wenxing Fang, IHEP

Fields

  • cellID::UInt64: cell id.
  • time::Float32: time [ns].
  • charge::Float32: charge [fC].
  • quality::Int16: quality.
  • covMatrix::SVector{3,Float32}: lower triangle covariance matrix of the charge(c) and time(t) measurements.

Relations

  • timeSeries::TimeSeries: Optionally, the timeSeries that has been used to create the pulse can be stored with the pulse.
source
EDM4hep.Vector4fType

Generic vector for storing classical 4D coordinates in memory. Four momentum helper functions are in edm4hep::utils

Fields

  • x::Float32:
  • y::Float32:
  • z::Float32:
  • t::Float32:
source
EDM4hep.VertexType

Vertex

  • Author: F.Gaede, DESY

Fields

  • primary::Int32: boolean flag, if vertex is the primary vertex of the event
  • chi2::Float32: chi-squared of the vertex fit
  • probability::Float32: probability of the vertex fit
  • position::Vector3f: [mm] position of the vertex.
  • covMatrix::SVector{6,Float32}: covariance matrix of the position (stored as lower triangle matrix, i.e. cov(xx),cov(y,x),cov(z,x),cov(y,y),... )
  • algorithmType::Int32: type code for the algorithm that has been used to create the vertex - check/set the collection parameters AlgorithmName and AlgorithmType.
  • parameters::PVector{Float32}: additional parameters related to this vertex - check/set the collection parameter "VertexParameterNames" for the parameters meaning.

Relations

  • associatedParticle::POD: reconstructed particle associated to this vertex.

Methods

  • setParameters(object::Vertex, v::AbstractVector{Float32}): assign a set of values to the parameters vector member
source
EDM4hep.RootIO.ReaderType

The Reader structure keeps a reference to the UnROOT LazyTree and caches already built 'layouts' of the EDM4hep types. The layouts maps a set of columns in the LazyTree into an object.

source
EDM4hep.Histograms.H1DType

H1D(title::String, nbins::Int, min::Float, max::Float, unit::Symbol) Create a 1-dimentional histgram carrying the title and units

source
EDM4hep.Histograms.H2DType

H2D(title::String, xbins::Int, xmin::Float, xmax::Float, ybins::Int, ymin::Float, ymax::Float, unit::Tuple{Symbol,Symbol}) Create a 2-dimentional histgram carrying the title and units

source
EDM4hep.Histograms.H3DType

H3D(title::String, xbins::Int, xmin::Float, xmax::Float, ybins::Int, ymin::Float, ymax::Float, zbins::Int, zmin::Float, zmax::Float, unit::Tuple{Symbol,Symbol,Symbol}) Create a 2-dimentional histgram carrying the title and units

source

Functions

EDM4hep.getEDStoreMethod
getEDStore(::Type{ED}, collid::UInt32=0x00000000)

Get the store corresponding to the collid. If it is not specified then obtain a collid frm the data type ED

source
EDM4hep.RootIO.create_getterMethod

create_getter(reader::Reader, bname::String; selection=nothing)

This function creates a getter function for a given branch name. The getter function is a function that takes an event and returns a StructArray with the data of the branch. The getter function is created as a function with the name get_<branchname>. The optional parameter selection is a list of field names to be selected from the branch. If selection is not provided, all fields are selected. The user can use a list of strings, symbols or regular expressions to select the fields.

source
EDM4hep.RootIO.getMethod

get(reader::Reader, treename::String)

Opens a 'TTree' or 'RNTuple' in the ROOT file (typically the events tree). It returns a 'LazyTree' that allows the user to iterate over events.

source
EDM4hep.RootIO.getMethod

get(reader::Reader, evt::UnROOT.LazyEvent, bname::String; btype::Type=Any, register=true)

Gets an object collection by its name, with the possibility to overwrite the mapping Julia type or use the type known in the ROOT file (C++ class name). The optonal key parameter register indicates is the collection needs to be registered to the EDStore.

source
Base.append!Method
Base.append!(d1::AbstractAnalysisData, d2::AbstractAnalysisData)

Default function to reset the user analysis data structure in case is not provided explicitely.

source
Base.empty!Method
Base.empty!(data::AbstractAnalysisData)

Default function to reset the user analysis data structure in case is not provided explicitely.

source
EDM4hep.Analysis.do_analysis!Method

doanalysis!(data::AbstractAnalysisData, analysis, reader, events; mt::Bool=false, tasksper_thread::Int=4)

Perform an analysis on all events by executing the analysis function. The iteration will be chunked and distributed to diffrent tasks running on different threads if the option argument mt is set to true. The results in data for all the cbhunks will be merged at the end of the analysis.

source
+Public APIs · EDM4hep.jl

Public Documentation

Documentation for EDM4hep.jl public interface.

Index - Types

Index - Functions

Modules

EDM4hep.EDM4hepModule

Main module for EDM4hep.jl – Key4hep Event Data Model for Julia.

All data model types are exported from this module for public use

Exports

source
EDM4hep.RootIOModule

ROOT I/O module for EDM4hep.jl

It supports both formats: TTree and RNTuple

source
EDM4hep.AnalysisModule

Analysis module for EDM4hep.jl

A number of data structures and functions to support analysis of EDM4hep data in multithreaded mode.

source

Types

This is the list of all types defined for EDM4hep using the PODIO yaml file.

EDM4hep.CaloHitContributionType

Monte Carlo contribution to SimCalorimeterHit

  • Author: F.Gaede, DESY

Fields

  • PDG::Int32: PDG code of the shower particle that caused this contribution.
  • energy::Float32: energy in [GeV] of the this contribution
  • time::Float32: time in [ns] of this contribution
  • stepPosition::Vector3f: position of this energy deposition (step) [mm]

Relations

  • particle::MCParticle: primary MCParticle that caused the shower responsible for this contribution to the hit.
source
EDM4hep.CalorimeterHitType

Calorimeter hit

  • Author: F.Gaede, DESY

Fields

  • cellID::UInt64: detector specific (geometrical) cell id.
  • energy::Float32: energy of the hit in [GeV].
  • energyError::Float32: error of the hit energy in [GeV].
  • time::Float32: time of the hit in [ns].
  • position::Vector3f: position of the hit in world coordinates in [mm].
  • type::Int32: type of hit. Mapping of integer types to names via collection parameters "CalorimeterHitTypeNames" and "CalorimeterHitTypeValues".
source
EDM4hep.ClusterType

Calorimeter Hit Cluster

  • Author: F.Gaede, DESY

Fields

  • type::Int32: flagword that defines the type of cluster. Bits 16-31 are used internally.
  • energy::Float32: energy of the cluster [GeV]
  • energyError::Float32: error on the energy
  • position::Vector3f: position of the cluster [mm]
  • positionError::SVector{6,Float32}: covariance matrix of the position (6 Parameters)
  • iTheta::Float32: intrinsic direction of cluster at position Theta. Not to be confused with direction cluster is seen from IP.
  • phi::Float32: intrinsic direction of cluster at position - Phi. Not to be confused with direction cluster is seen from IP.
  • directionError::Vector3f: covariance matrix of the direction (3 Parameters) [mm^2]
  • shapeParameters::PVector{Float32}: shape parameters - check/set collection parameter ClusterShapeParameters for size and names of parameters.
  • subdetectorEnergies::PVector{Float32}: energy observed in a particular subdetector. Check/set collection parameter ClusterSubdetectorNames for decoding the indices of the array.

Relations

  • clusters::Cluster: clusters that have been combined to this cluster.
  • hits::CalorimeterHit: hits that have been combined to this cluster.
  • particleIDs::ParticleID: particle IDs (sorted by their likelihood)

Methods

  • setShapeParameters(object::Cluster, v::AbstractVector{Float32}): assign a set of values to the shapeParameters vector member
  • setSubdetectorEnergies(object::Cluster, v::AbstractVector{Float32}): assign a set of values to the subdetectorEnergies vector member
  • pushToClusters(obj::Cluster, robj::Cluster): push related object to the clusters relation
  • popFromClusters(obj::Cluster): pop last related object from clusters relation
  • pushToHits(obj::Cluster, robj::CalorimeterHit): push related object to the hits relation
  • popFromHits(obj::Cluster): pop last related object from hits relation
  • pushToParticleIDs(obj::Cluster, robj::ParticleID): push related object to the particleIDs relation
  • popFromParticleIDs(obj::Cluster): pop last related object from particleIDs relation
source
EDM4hep.EventHeaderType

Event Header. Additional parameters are assumed to go into the metadata tree.

  • Author: F.Gaede

Fields

  • eventNumber::Int32: event number
  • runNumber::Int32: run number
  • timeStamp::UInt64: time stamp
  • weight::Float32: event weight
source
EDM4hep.HitLevelDataType

HitLevelData

Fields

  • cellID::UInt64: cell id
  • N::UInt32: number of reconstructed ionization cluster.
  • eDep::Float32: reconstructed energy deposit [GeV].
  • pathLength::Float32: track path length [mm].
source
EDM4hep.HypothesisType

Hypothesis

Fields

  • chi2::Float32: chi2
  • expected::Float32: expected value
  • sigma::Float32: sigma value
source
EDM4hep.MCParticleType

The Monte Carlo particle - based on the lcio::MCParticle.

  • Author: F.Gaede, DESY

Fields

  • PDG::Int32: PDG code of the particle
  • generatorStatus::Int32: status of the particle as defined by the generator
  • simulatorStatus::Int32: status of the particle from the simulation program - use BIT constants below
  • charge::Float32: particle charge
  • time::Float32: creation time of the particle in [ns] wrt. the event, e.g. for preassigned decays or decays in flight from the simulator.
  • mass::Float64: mass of the particle in [GeV]
  • vertex::Vector3d: production vertex of the particle in [mm].
  • endpoint::Vector3d: endpoint of the particle in [mm]
  • momentum::Vector3d: particle 3-momentum at the production vertex in [GeV]
  • momentumAtEndpoint::Vector3d: particle 3-momentum at the endpoint in [GeV]
  • spin::Vector3f: spin (helicity) vector of the particle.
  • colorFlow::Vector2i: color flow as defined by the generator

Relations

  • parents::MCParticle: The parents of this particle.
  • daughters::MCParticle: The daughters this particle.

Methods

  • pushToParents(obj::MCParticle, robj::MCParticle): push related object to the parents relation
  • popFromParents(obj::MCParticle): pop last related object from parents relation
  • pushToDaughters(obj::MCParticle, robj::MCParticle): push related object to the daughters relation
  • popFromDaughters(obj::MCParticle): pop last related object from daughters relation
source
EDM4hep.MCRecoCaloAssociationType

Association between a CaloHit and the corresponding simulated CaloHit

  • Author: C. Bernet, B. Hegner

Fields

  • weight::Float32: weight of this association

Relations

  • rec::CalorimeterHit: reference to the reconstructed hit
  • sim::SimCalorimeterHit: reference to the simulated hit
source
EDM4hep.MCRecoCaloParticleAssociationType

Association between a CalorimeterHit and a MCParticle

  • Author: Placido Fernandez Declara

Fields

  • weight::Float32: weight of this association

Relations

  • rec::CalorimeterHit: reference to the reconstructed hit
  • sim::MCParticle: reference to the Monte-Carlo particle
source
EDM4hep.MCRecoClusterParticleAssociationType

Association between a Cluster and a MCParticle

  • Author: Placido Fernandez Declara

Fields

  • weight::Float32: weight of this association

Relations

  • rec::Cluster: reference to the cluster
  • sim::MCParticle: reference to the Monte-Carlo particle
source
EDM4hep.MCRecoParticleAssociationType

Used to keep track of the correspondence between MC and reconstructed particles

  • Author: C. Bernet, B. Hegner

Fields

  • weight::Float32: weight of this association

Relations

  • rec::ReconstructedParticle: reference to the reconstructed particle
  • sim::MCParticle: reference to the Monte-Carlo particle
source
EDM4hep.MCRecoTrackParticleAssociationType

Association between a Track and a MCParticle

  • Author: Placido Fernandez Declara

Fields

  • weight::Float32: weight of this association

Relations

  • rec::Track: reference to the track
  • sim::MCParticle: reference to the Monte-Carlo particle
source
EDM4hep.MCRecoTrackerAssociationType

Association between a TrackerHit and the corresponding simulated TrackerHit

  • Author: C. Bernet, B. Hegner

Fields

  • weight::Float32: weight of this association

Relations

  • rec::TrackerHit: reference to the reconstructed hit
  • sim::SimTrackerHit: reference to the simulated hit
source
EDM4hep.MCRecoTrackerHitPlaneAssociationType

Association between a TrackerHitPlane and the corresponding simulated TrackerHit

  • Author: Placido Fernandez Declara

Fields

  • weight::Float32: weight of this association

Relations

  • rec::TrackerHitPlane: reference to the reconstructed hit
  • sim::SimTrackerHit: reference to the simulated hit
source
EDM4hep.ParticleIDType

ParticleID

  • Author: F.Gaede, DESY

Fields

  • type::Int32: userdefined type
  • PDG::Int32: PDG code of this id - ( 999999 ) if unknown.
  • algorithmType::Int32: type of the algorithm/module that created this hypothesis
  • likelihood::Float32: likelihood of this hypothesis - in a user defined normalization.
  • parameters::PVector{Float32}: parameters associated with this hypothesis. Check/set collection parameters ParameterNames_PIDAlgorithmTypeName for decoding the indices.

Methods

  • setParameters(object::ParticleID, v::AbstractVector{Float32}): assign a set of values to the parameters vector member
source
EDM4hep.QuantityType

Quantity

Fields

  • type::Int16: flag identifying how to interpret the quantity
  • value::Float32: value of the quantity
  • error::Float32: error on the value of the quantity
source
EDM4hep.RawCalorimeterHitType

Raw calorimeter hit

  • Author: F.Gaede, DESY

Fields

  • cellID::UInt64: detector specific (geometrical) cell id.
  • amplitude::Int32: amplitude of the hit in ADC counts.
  • timeStamp::Int32: time stamp for the hit.
source
EDM4hep.RawTimeSeriesType

Raw data of a detector readout

  • Author: F.Gaede, DESY

Fields

  • cellID::UInt64: detector specific cell id.
  • quality::Int32: quality flag for the hit.
  • time::Float32: time of the hit [ns].
  • charge::Float32: integrated charge of the hit [fC].
  • interval::Float32: interval of each sampling [ns].
  • adcCounts::PVector{Int32}: raw data (32-bit) word at i.

Methods

  • setAdcCounts(object::RawTimeSeries, v::AbstractVector{Int32}): assign a set of values to the adcCounts vector member
source
EDM4hep.RecDqdxType

dN/dx or dE/dx info of Track.

  • Author: Wenxing Fang, IHEP

Fields

  • dQdx::Quantity: the reconstructed dEdx or dNdx and its error
  • particleType::Int16: particle type, e(0),mu(1),pi(2),K(3),p(4).
  • type::Int16: type.
  • hypotheses::SVector{5,Hypothesis}: 5 particle hypothesis
  • hitData::PVector{HitLevelData}: hit level data

Relations

  • track::Track: the corresponding track.

Methods

  • setHitData(object::RecDqdx, v::AbstractVector{HitLevelData}): assign a set of values to the hitData vector member
source
EDM4hep.RecIonizationClusterType

Reconstructed Ionization Cluster

  • Author: Wenxing Fang, IHEP

Fields

  • cellID::UInt64: cell id.
  • significance::Float32: significance.
  • type::Int16: type.

Relations

  • trackerPulse::TrackerPulse: the TrackerPulse used to create the ionization cluster.

Methods

  • pushToTrackerPulse(obj::RecIonizationCluster, robj::TrackerPulse): push related object to the trackerPulse relation
  • popFromTrackerPulse(obj::RecIonizationCluster): pop last related object from trackerPulse relation
source
EDM4hep.RecoParticleVertexAssociationType

Association between a Reconstructed Particle and a Vertex

  • Author: Placido Fernandez Declara

Fields

  • weight::Float32: weight of this association

Relations

  • rec::ReconstructedParticle: reference to the reconstructed particle
  • vertex::Vertex: reference to the vertex
source
EDM4hep.ReconstructedParticleType

Reconstructed Particle

  • Author: F.Gaede, DESY

Fields

  • type::Int32: type of reconstructed particle. Check/set collection parameters ReconstructedParticleTypeNames and ReconstructedParticleTypeValues.
  • energy::Float32: [GeV] energy of the reconstructed particle. Four momentum state is not kept consistent internally.
  • momentum::Vector3f: [GeV] particle momentum. Four momentum state is not kept consistent internally.
  • referencePoint::Vector3f: [mm] reference, i.e. where the particle has been measured
  • charge::Float32: charge of the reconstructed particle.
  • mass::Float32: [GeV] mass of the reconstructed particle, set independently from four vector. Four momentum state is not kept consistent internally.
  • goodnessOfPID::Float32: overall goodness of the PID on a scale of [0;1]
  • covMatrix::SVector{10,Float32}: cvariance matrix of the reconstructed particle 4vector (10 parameters). Stored as lower triangle matrix of the four momentum (px,py,pz,E), i.e. cov(px,px), cov(py,##

Relations

  • startVertex::Vertex: start vertex associated to this particle
  • particleIDUsed::ParticleID: particle Id used for the kinematics of this particle
  • clusters::Cluster: clusters that have been used for this particle.
  • tracks::Track: tracks that have been used for this particle.
  • particles::ReconstructedParticle: reconstructed particles that have been combined to this particle.
  • particleIDs::ParticleID: particle Ids (not sorted by their likelihood)

Methods

  • pushToClusters(obj::ReconstructedParticle, robj::Cluster): push related object to the clusters relation
  • popFromClusters(obj::ReconstructedParticle): pop last related object from clusters relation
  • pushToTracks(obj::ReconstructedParticle, robj::Track): push related object to the tracks relation
  • popFromTracks(obj::ReconstructedParticle): pop last related object from tracks relation
  • pushToParticles(obj::ReconstructedParticle, robj::ReconstructedParticle): push related object to the particles relation
  • popFromParticles(obj::ReconstructedParticle): pop last related object from particles relation
  • pushToParticleIDs(obj::ReconstructedParticle, robj::ParticleID): push related object to the particleIDs relation
  • popFromParticleIDs(obj::ReconstructedParticle): pop last related object from particleIDs relation
source
EDM4hep.SimCalorimeterHitType

Simulated calorimeter hit

  • Author: F.Gaede, DESY

Fields

  • cellID::UInt64: ID of the sensor that created this hit
  • energy::Float32: energy of the hit in [GeV].
  • position::Vector3f: position of the hit in world coordinates in [mm].

Relations

  • contributions::CaloHitContribution: Monte Carlo step contribution - parallel to particle

Methods

  • pushToContributions(obj::SimCalorimeterHit, robj::CaloHitContribution): push related object to the contributions relation
  • popFromContributions(obj::SimCalorimeterHit): pop last related object from contributions relation
source
EDM4hep.SimPrimaryIonizationClusterType

Simulated Primary Ionization

  • Author: Wenxing Fang, IHEP

Fields

  • cellID::UInt64: cell id.
  • time::Float32: the primary ionization's time in the lab frame [ns].
  • position::Vector3d: the primary ionization's position [mm].
  • type::Int16: type.
  • electronCellID::PVector{UInt64}: cell id.
  • electronTime::PVector{Float32}: the time in the lab frame [ns].
  • electronPosition::PVector{Vector3d}: the position in the lab frame [mm].
  • pulseTime::PVector{Float32}: the pulse's time in the lab frame [ns].
  • pulseAmplitude::PVector{Float32}: the pulse's amplitude [fC].

Relations

  • mcparticle::MCParticle: the particle that caused the ionizing collisions.

Methods

  • setElectronCellID(object::SimPrimaryIonizationCluster, v::AbstractVector{UInt64}): assign a set of values to the electronCellID vector member
  • setElectronTime(object::SimPrimaryIonizationCluster, v::AbstractVector{Float32}): assign a set of values to the electronTime vector member
  • setElectronPosition(object::SimPrimaryIonizationCluster, v::AbstractVector{Vector3d}): assign a set of values to the electronPosition vector member
  • setPulseTime(object::SimPrimaryIonizationCluster, v::AbstractVector{Float32}): assign a set of values to the pulseTime vector member
  • setPulseAmplitude(object::SimPrimaryIonizationCluster, v::AbstractVector{Float32}): assign a set of values to the pulseAmplitude vector member
source
EDM4hep.SimTrackerHitType

Simulated tracker hit

  • Author: F.Gaede, DESY

Fields

  • cellID::UInt64: ID of the sensor that created this hit
  • EDep::Float32: energy deposited in the hit [GeV].
  • time::Float32: proper time of the hit in the lab frame in [ns].
  • pathLength::Float32: path length of the particle in the sensitive material that resulted in this hit.
  • quality::Int32: quality bit flag.
  • position::Vector3d: the hit position in [mm].
  • momentum::Vector3f: the 3-momentum of the particle at the hits position in [GeV]

Relations

  • mcparticle::MCParticle: MCParticle that caused the hit.
source
EDM4hep.TimeSeriesType

Calibrated Detector Data

  • Author: Wenxing Fang, IHEP

Fields

  • cellID::UInt64: cell id.
  • time::Float32: begin time [ns].
  • interval::Float32: interval of each sampling [ns].
  • amplitude::PVector{Float32}: calibrated detector data.

Methods

  • setAmplitude(object::TimeSeries, v::AbstractVector{Float32}): assign a set of values to the amplitude vector member
source
EDM4hep.TrackType

Reconstructed track

  • Author: F.Gaede, DESY

Fields

  • type::Int32: flagword that defines the type of track.Bits 16-31 are used internally
  • chi2::Float32: Chi^2 of the track fit
  • ndf::Int32: number of degrees of freedom of the track fit
  • dEdx::Float32: dEdx of the track.
  • dEdxError::Float32: error of dEdx.
  • radiusOfInnermostHit::Float32: radius of the innermost hit that has been used in the track fit
  • subdetectorHitNumbers::PVector{Int32}: number of hits in particular subdetectors.Check/set collection variable TrackSubdetectorNames for decoding the indices
  • trackStates::PVector{TrackState}: track states
  • dxQuantities::PVector{Quantity}: different measurements of dx quantities

Relations

  • trackerHits::TrackerHit: hits that have been used to create this track
  • tracks::Track: tracks (segments) that have been combined to create this track

Methods

  • setSubdetectorHitNumbers(object::Track, v::AbstractVector{Int32}): assign a set of values to the subdetectorHitNumbers vector member
  • setTrackStates(object::Track, v::AbstractVector{TrackState}): assign a set of values to the trackStates vector member
  • setDxQuantities(object::Track, v::AbstractVector{Quantity}): assign a set of values to the dxQuantities vector member
  • pushToTrackerHits(obj::Track, robj::TrackerHit): push related object to the trackerHits relation
  • popFromTrackerHits(obj::Track): pop last related object from trackerHits relation
  • pushToTracks(obj::Track, robj::Track): push related object to the tracks relation
  • popFromTracks(obj::Track): pop last related object from tracks relation
source
EDM4hep.TrackStateType

TrackState

Fields

  • location::Int32: for use with At{Other|IP|FirstHit|LastHit|Calorimeter|Vertex}|LastLocation
  • D0::Float32: transverse impact parameter
  • phi::Float32: azimuthal angle
  • omega::Float32: is the signed curvature of the track in [1/mm].
  • Z0::Float32: longitudinal impact parameter
  • tanLambda::Float32: lambda is the dip angle of the track in r-z
  • time::Float32: time of the track at this trackstate
  • referencePoint::Vector3f: Reference point of the track parameters, e.g. the origin at the IP, or the position of the first/last hits or the entry point into the calorimeter. [mm]
  • covMatrix::SVector{21,Float32}: lower triangular covariance matrix of the track parameters. the order of parameters is d0, phi, omega, z0, tan(lambda), time. the array is a row-major flattening of the matrix.
source
EDM4hep.TrackerHitType

Tracker hit

  • Author: F.Gaede, DESY

Fields

  • cellID::UInt64: ID of the sensor that created this hit
  • type::Int32: type of raw data hit, either one of edm4hep::RawTimeSeries, edm4hep::SIMTRACKERHIT - see collection parameters "TrackerHitTypeNames" and "TrackerHitTypeValues".
  • quality::Int32: quality bit flag of the hit.
  • time::Float32: time of the hit [ns].
  • eDep::Float32: energy deposited on the hit [GeV].
  • eDepError::Float32: error measured on EDep [GeV].
  • position::Vector3d: hit position in [mm].
  • covMatrix::SVector{6,Float32}: covariance of the position (x,y,z), stored as lower triangle matrix. i.e. cov(x,x) , cov(y,x) , cov(y,y) , cov(z,x) , cov(z,y) , cov(z,z)
  • rawHits::PVector{ObjectID}: raw data hits. Check getType to get actual data type.

Methods

  • setRawHits(object::TrackerHit, v::AbstractVector{ObjectID}): assign a set of values to the rawHits vector member
source
EDM4hep.TrackerHitPlaneType

Tracker hit plane

  • Author: Placido Fernandez Declara, CERN

Fields

  • cellID::UInt64: ID of the sensor that created this hit
  • type::Int32: type of raw data hit, either one of edm4hep::RawTimeSeries, edm4hep::SIMTRACKERHIT - see collection parameters "TrackerHitTypeNames" and "TrackerHitTypeValues".
  • quality::Int32: quality bit flag of the hit.
  • time::Float32: time of the hit [ns].
  • eDep::Float32: energy deposited on the hit [GeV].
  • eDepError::Float32: error measured on EDep [GeV].
  • u::Vector2f: measurement direction vector, u lies in the x-y plane
  • v::Vector2f: measurement direction vector, v is along z
  • du::Float32: measurement error along the direction
  • dv::Float32: measurement error along the direction
  • position::Vector3d: hit position in [mm].
  • covMatrix::SVector{6,Float32}: covariance of the position (x,y,z), stored as lower triangle matrix. i.e. cov(x,x) , cov(y,x) , cov(y,y) , cov(z,x) , cov(z,y) , cov(z,z)
  • rawHits::PVector{ObjectID}: raw data hits. Check getType to get actual data type.

Methods

  • setRawHits(object::TrackerHitPlane, v::AbstractVector{ObjectID}): assign a set of values to the rawHits vector member
source
EDM4hep.TrackerPulseType

Reconstructed Tracker Pulse

  • Author: Wenxing Fang, IHEP

Fields

  • cellID::UInt64: cell id.
  • time::Float32: time [ns].
  • charge::Float32: charge [fC].
  • quality::Int16: quality.
  • covMatrix::SVector{3,Float32}: lower triangle covariance matrix of the charge(c) and time(t) measurements.

Relations

  • timeSeries::TimeSeries: Optionally, the timeSeries that has been used to create the pulse can be stored with the pulse.
source
EDM4hep.Vector4fType

Generic vector for storing classical 4D coordinates in memory. Four momentum helper functions are in edm4hep::utils

Fields

  • x::Float32:
  • y::Float32:
  • z::Float32:
  • t::Float32:
source
EDM4hep.VertexType

Vertex

  • Author: F.Gaede, DESY

Fields

  • primary::Int32: boolean flag, if vertex is the primary vertex of the event
  • chi2::Float32: chi-squared of the vertex fit
  • probability::Float32: probability of the vertex fit
  • position::Vector3f: [mm] position of the vertex.
  • covMatrix::SVector{6,Float32}: covariance matrix of the position (stored as lower triangle matrix, i.e. cov(xx),cov(y,x),cov(z,x),cov(y,y),... )
  • algorithmType::Int32: type code for the algorithm that has been used to create the vertex - check/set the collection parameters AlgorithmName and AlgorithmType.
  • parameters::PVector{Float32}: additional parameters related to this vertex - check/set the collection parameter "VertexParameterNames" for the parameters meaning.

Relations

  • associatedParticle::POD: reconstructed particle associated to this vertex.

Methods

  • setParameters(object::Vertex, v::AbstractVector{Float32}): assign a set of values to the parameters vector member
source
EDM4hep.RootIO.ReaderType

The Reader structure keeps a reference to the UnROOT LazyTree and caches already built 'layouts' of the EDM4hep types. The layouts maps a set of columns in the LazyTree into an object.

source
EDM4hep.Histograms.H1DType

H1D(title::String, nbins::Int, min::Float, max::Float, unit::Symbol) Create a 1-dimensional histogram carrying the title and units.

source
EDM4hep.Histograms.H2DType

H2D(title::String, xbins::Int, xmin::Float, xmax::Float, ybins::Int, ymin::Float, ymax::Float, unit::Tuple{Symbol,Symbol}) Create a 2-dimensional histogram carrying the title and units.

source
EDM4hep.Histograms.H3DType

H3D(title::String, xbins::Int, xmin::Float, xmax::Float, ybins::Int, ymin::Float, ymax::Float, zbins::Int, zmin::Float, zmax::Float, unit::Tuple{Symbol,Symbol,Symbol}) Create a 2-dimensional histogram carrying the title and units.

source

Functions

EDM4hep.getEDStoreMethod
getEDStore(::Type{ED}, collid::UInt32=0x00000000)

Get the store corresponding to the collid. If it is not specified then obtain a collid from the data type ED.

source
EDM4hep.RootIO.create_getterMethod

create_getter(reader::Reader, bname::String; selection=nothing)

This function creates a getter function for a given branch name. The getter function is a function that takes an event and returns a StructArray with the data of the branch. The getter function is created as a function with the name get_<branchname>. The optional parameter selection is a list of field names to be selected from the branch. If selection is not provided, all fields are selected. The user can use a list of strings, symbols or regular expressions to select the fields.

source
EDM4hep.RootIO.getMethod

get(reader::Reader, treename::String)

Opens a 'TTree' or 'RNTuple' in the ROOT file (typically the events tree). It returns a 'LazyTree' that allows the user to iterate over events.

source
EDM4hep.RootIO.getMethod

get(reader::Reader, evt::UnROOT.LazyEvent, bname::String; btype::Type=Any, register=true)

Gets an object collection by its name, with the possibility to overwrite the mapping Julia type or use the type known in the ROOT file (C++ class name). The optional key parameter register indicates if the collection needs to be registered to the EDStore.

source
Base.append!Method
Base.append!(d1::AbstractAnalysisData, d2::AbstractAnalysisData)

Default function to reset the user analysis data structure in case it is not provided explicitly.

source
Base.empty!Method
Base.empty!(data::AbstractAnalysisData)

Default function to reset the user analysis data structure in case it is not provided explicitly.

source
EDM4hep.Analysis.do_analysis!Method

doanalysis!(data::AbstractAnalysisData, analysis, reader, events; mt::Bool=false, tasksper_thread::Int=4)

Perform an analysis on all events by executing the analysis function. The iteration will be chunked and distributed to different tasks running on different threads if the option argument mt is set to true. The results in data for all the chunks will be merged at the end of the analysis.

source
diff --git a/dev/index.html b/dev/index.html index ac4544e..f7f909e 100644 --- a/dev/index.html +++ b/dev/index.html @@ -1,5 +1,5 @@ -Introduction · EDM4hep.jl

EDM4hep in Julia

Prototype of the EDM4hep (generic Event Data Model for HEP experiments part of Key4hep) for Julia with the goal to have very simple structures (isbits) with the purpose to evaluate its ergonomic design and implementation performance.

PODIO generation

The Julia POD structs should be generated from the the edm4hep.yaml yaml file using PODIO scripts.

For the time being, for this evaluation, the Julia structs are generated by a local Julia script in ./podio/generate.jl. The files genComponents/jl and genDatatypes.jl are fully generated.

Main design features

  • All EDM4hep entities are immutable structs and containing basic types and structs. Including the relationships (one-to-one and one-to-many) and vector members. Objects attributes cannot be changed. This makes the objects with the isbits(obj) == true.

  • Objects are created by default not being registered, they are free floating. The user can register them with register(obj).

  • Note that operations like register, setting relationships (add_daughter,...), etc. will automatically create a new instance. The typical pattern is to overwrite the user variable with the new instance, e.g.:

    p1 = MCParticle(...)
    +Introduction · EDM4hep.jl

    EDM4hep in Julia

    Prototype of the EDM4hep (generic Event Data Model for HEP experiments part of Key4hep) for Julia with the goal to have very simple structures (isbits) with the purpose to evaluate its ergonomic design and implementation performance.

    PODIO generation

    The Julia POD structs should be generated from the edm4hep.yaml yaml file using PODIO scripts.

    For the time being, for this evaluation, the Julia structs are generated by a local Julia script in ./podio/generate.jl. The files genComponents/jl and genDatatypes.jl are fully generated.

    Main design features

    • All EDM4hep entities are immutable structs and containing basic types and structs. Including the relationships (one-to-one and one-to-many) and vector members. Objects attributes cannot be changed. This makes the objects with the isbits(obj) == true.

    • Objects are created by default not being registered, they are free floating. The user can register them with register(obj).

    • Note that operations like register, setting relationships (add_daughter,...), etc. will automatically create a new instance. The typical pattern is to overwrite the user variable with the new instance, e.g.:

      p1 = MCParticle(...)
       p1 = register(p1)
       p1, d1 = add_daughter(p1, MCParticle(...))
    • The main goal for reading EDM4hep containers from a ROOT file is to obtain as result a StructArray(see StructArrays.jl documentation). This provides a very efficient access by column and the same time provide a convenient views as object instances. For example if you want to sum the momentum of a range of MCParticles the user should be able to write:

      julia> mcparticles = get(reader,...)
       julia> mcparticles[5:8].momentum
      @@ -10,7 +10,7 @@
         (0.014539731,0.05663412,-0.32755017)
       
       julia> sum(mcparticles[5:8].momentum)
      -  (1.7487122,0.0,-0.11407688)

    Roadmap

    There are a number of issues and problems still to be resolved. We keep track of them in this list:

    • Need to generate and support VectorMembers. For the time being are ignored. - DONE
    • Handle cyclic datatype dependencies. In EDM4hep there is one case that is not yet resolved. Vertex depends on ReconstructedParticle in a one-to-one relation and ReconstructedParticle relates to Vertex. Using the abstract class POD in this case works well to break the cycle. - DONE
    • Better handle collectionID in one-to-many relations - DONE
    • Be able to read RNTuple files in addition to TTree files - DONE
    • Generate doc string with member information - DONE
    • Generate accessors for one-to-many relations, vector members - DONE
    • Support latest version (RC2) of RNTuple format - DONE
    • Support for multi-threading (i.e. be able to add @threads in the event loop) - DONE

    Tests

    Unit tests can be run with julia --project=. test/runtests.jl

    Examples

    examples/mcparticle_tree.jl

    Creates a collection of MCParticles and a collection of SimTrackerHits in memory, constructing the relations between particle parents and daughters, as well as, the the one-to-one relation between the simulation hit to the originator MCParticle.

    examples/read_example.jl

    An example of reading from a ROOT file created by the C++ implementation of EDM4hep. This is the full code:

    using EDM4hep
    +  (1.7487122,0.0,-0.11407688)

Roadmap

There are a number of issues and problems still to be resolved. We keep track of them in this list:

  • Need to generate and support VectorMembers. For the time being are ignored. - DONE
  • Handle cyclic datatype dependencies. In EDM4hep there is one case that is not yet resolved. Vertex depends on ReconstructedParticle in a one-to-one relation and ReconstructedParticle relates to Vertex. Using the abstract class POD in this case works well to break the cycle. - DONE
  • Better handle collectionID in one-to-many relations - DONE
  • Be able to read RNTuple files in addition to TTree files - DONE
  • Generate doc string with member information - DONE
  • Generate accessors for one-to-many relations, vector members - DONE
  • Support latest version (RC2) of RNTuple format - DONE
  • Support for multi-threading (i.e. be able to add @threads in the event loop) - DONE

Tests

Unit tests can be run with julia --project=. test/runtests.jl

Examples

examples/mcparticle_tree.jl

Creates a collection of MCParticles and a collection of SimTrackerHits in memory, constructing the relations between particle parents and daughters, as well as, the one-to-one relation between each simulation hit and its originating MCParticle.

examples/read_example.jl

An example of reading from a ROOT file created by the C++ implementation of EDM4hep. This is the full code:

using EDM4hep
 using EDM4hep.RootIO
 
 cd(@__DIR__)
@@ -36,4 +36,4 @@
             println("      ---> $(m.index) $(m.name)")
         end 
     end
-end

examples/FCC/analysis_mH-recoil.jl

This is basically the example higgs/mH-recoil/mumu from FCCAnalyses. It shows in a realistic manner how to develop analysis functions using the Data Types from EDM4hep to created high-level analysis functions. The Jupyter notebook analysis_mH-recoil.ipynb shows the same example in form of a notebook.

examples/FCC/analysis_MT.jl

This is basically the example higgs/mH-recoil/mumu from FCCAnalyses in a multi-threaded mode. The Jupyter notebook analysis_mH-recoil.ipynb shows the same example in form of a notebook.

EDM4hep Data Model

This is the diagram for the EDM4hep datamodel including relationships.

Figure

+end

examples/FCC/analysis_mH-recoil.jl

This is basically the example higgs/mH-recoil/mumu from FCCAnalyses. It shows in a realistic manner how to develop analysis functions using the Data Types from EDM4hep to created high-level analysis functions. The Jupyter notebook analysis_mH-recoil.ipynb shows the same example in form of a notebook.

examples/FCC/analysis_MT.jl

This is basically the example higgs/mH-recoil/mumu from FCCAnalyses in a multi-threaded mode. The Jupyter notebook analysis_mH-recoil.ipynb shows the same example in form of a notebook.

EDM4hep Data Model

This is the diagram for the EDM4hep datamodel including relationships.

Figure

diff --git a/dev/release_notes/index.html b/dev/release_notes/index.html index 7a27ab5..b9c87fe 100644 --- a/dev/release_notes/index.html +++ b/dev/release_notes/index.html @@ -1,2 +1,2 @@ -Release Notes · EDM4hep.jl

Release Notes

0.4.2

  • Moved to JuliaHEP organization
  • Update to FHist 0.11 series (#9)

0.4.1

  • Use StructArrays also for EDStore when building the model directly in memory.

0.4.0

New Functionality

  • Added function RootIO.create_getter(reader::Reader, bname::String; selection=nothing) to create a getter function for a specific branch. The optional argument allows to select leaves to be read.
  • The overall performance is highly improved (factor 3 with respect previous version)

0.3.1

Bug Fixes

  • Legacy podio test fixed

0.3.0

New Functionality

  • Optimisations by explicitly generation of StructArrays
  • Support for multi-files
  • Support for multi-threading
  • Support for RNTuple RC2
  • Added analysis module ROOT.Analysis (mini-framework for MT analysis)

0.2.0

New Functionality

  • Added support for older versions of PODIO file formats
  • Added analysis example for FCCAnalysis

0.1.0

  • First release. It provides the basic functionality to create in memory an event model and be able to read from a ROOT file (supporting both TTree and RNTuple formats).
+Release Notes · EDM4hep.jl

Release Notes

0.4.2

  • Moved to JuliaHEP organization
  • Update to FHist 0.11 series (#9)

0.4.1

  • Use StructArrays also for EDStore when building the model directly in memory.

0.4.0

New Functionality

  • Added function RootIO.create_getter(reader::Reader, bname::String; selection=nothing) to create a getter function for a specific branch. The optional argument allows to select leaves to be read.
  • The overall performance is highly improved (factor 3 with respect previous version)

0.3.1

Bug Fixes

  • Legacy podio test fixed

0.3.0

New Functionality

  • Optimisations by explicitly generation of StructArrays
  • Support for multi-files
  • Support for multi-threading
  • Support for RNTuple RC2
  • Added analysis module ROOT.Analysis (mini-framework for MT analysis)

0.2.0

New Functionality

  • Added support for older versions of PODIO file formats
  • Added analysis example for FCCAnalysis

0.1.0

  • First release. It provides the basic functionality to create in memory an event model and be able to read from a ROOT file (supporting both TTree and RNTuple formats).
diff --git a/dev/search_index.js b/dev/search_index.js index c7b42c3..3360dd5 100644 --- a/dev/search_index.js +++ b/dev/search_index.js @@ -1,3 +1,3 @@ var documenterSearchIndex = {"docs": -[{"location":"release_notes/#Release-Notes","page":"Release Notes","title":"Release Notes","text":"","category":"section"},{"location":"release_notes/#0.4.2","page":"Release Notes","title":"0.4.2","text":"","category":"section"},{"location":"release_notes/","page":"Release Notes","title":"Release Notes","text":"Moved to JuliaHEP organization\nUpdate to FHist 0.11 series (#9)","category":"page"},{"location":"release_notes/#0.4.1","page":"Release Notes","title":"0.4.1","text":"","category":"section"},{"location":"release_notes/","page":"Release Notes","title":"Release Notes","text":"Use StructArrays also for EDStore when building the model directly in memory.","category":"page"},{"location":"release_notes/#0.4.0","page":"Release Notes","title":"0.4.0","text":"","category":"section"},{"location":"release_notes/#New-Functionality","page":"Release Notes","title":"New Functionality","text":"","category":"section"},{"location":"release_notes/","page":"Release Notes","title":"Release Notes","text":"Added function RootIO.create_getter(reader::Reader, bname::String; selection=nothing) to create a getter function for a specific branch. The optional argument allows to select leaves to be read.\nThe overall performance is highly improved (factor 3 with respect previous version)","category":"page"},{"location":"release_notes/#0.3.1","page":"Release Notes","title":"0.3.1","text":"","category":"section"},{"location":"release_notes/#Bug-Fixes","page":"Release Notes","title":"Bug Fixes","text":"","category":"section"},{"location":"release_notes/","page":"Release Notes","title":"Release Notes","text":"Legacy podio test fixed","category":"page"},{"location":"release_notes/#0.3.0","page":"Release Notes","title":"0.3.0","text":"","category":"section"},{"location":"release_notes/#New-Functionality-2","page":"Release Notes","title":"New Functionality","text":"","category":"section"},{"location":"release_notes/","page":"Release Notes","title":"Release Notes","text":"Optimisations by explicitly generation of StructArrays\nSupport for multi-files\nSupport for multi-threading\nSupport for RNTuple RC2\nAdded analysis module ROOT.Analysis (mini-framework for MT analysis)","category":"page"},{"location":"release_notes/#0.2.0","page":"Release Notes","title":"0.2.0","text":"","category":"section"},{"location":"release_notes/#New-Functionality-3","page":"Release Notes","title":"New Functionality","text":"","category":"section"},{"location":"release_notes/","page":"Release Notes","title":"Release Notes","text":"Added support for older versions of PODIO file formats\nAdded analysis example for FCCAnalysis","category":"page"},{"location":"release_notes/#0.1.0","page":"Release Notes","title":"0.1.0","text":"","category":"section"},{"location":"release_notes/","page":"Release Notes","title":"Release Notes","text":"First release. It provides the basic functionality to create in memory an event model and be able to read from a ROOT file (supporting both TTree and RNTuple formats).","category":"page"},{"location":"api/#Public-Documentation","page":"Public APIs","title":"Public Documentation","text":"","category":"section"},{"location":"api/","page":"Public APIs","title":"Public APIs","text":"Documentation for EDM4hep.jl public interface.","category":"page"},{"location":"api/#Index-Types","page":"Public APIs","title":"Index - Types","text":"","category":"section"},{"location":"api/","page":"Public APIs","title":"Public APIs","text":"Pages = [\"api.md\"]\nModules = [EDM4hep, EDM4hep.RootIO, EDM4hep.Histograms, EDM4hep.Analysis]\nOrder = [:type]","category":"page"},{"location":"api/#Index-Functions","page":"Public APIs","title":"Index - Functions","text":"","category":"section"},{"location":"api/","page":"Public APIs","title":"Public APIs","text":"Pages = [\"api.md\"]\nModules = [EDM4hep, EDM4hep.RootIO, EDM4hep.Histograms, EDM4hep.Analysis]\nOrder = [:function]","category":"page"},{"location":"api/#Modules","page":"Public APIs","title":"Modules","text":"","category":"section"},{"location":"api/","page":"Public APIs","title":"Public APIs","text":"Modules = [EDM4hep, EDM4hep.RootIO, EDM4hep.Analysis]\nOrder = [:module]","category":"page"},{"location":"api/#EDM4hep.EDM4hep","page":"Public APIs","title":"EDM4hep.EDM4hep","text":"Main module for EDM4hep.jl – Key4hep Event Data Model for Julia.\n\nAll data model types are exported from this module for public use\n\nExports\n\n\n\n\n\n","category":"module"},{"location":"api/#EDM4hep.RootIO","page":"Public APIs","title":"EDM4hep.RootIO","text":"ROOT I/O module for EDM4hep.jl\n\nIt supports both formats: TTree and RNTuple\n\n\n\n\n\n","category":"module"},{"location":"api/#EDM4hep.Analysis","page":"Public APIs","title":"EDM4hep.Analysis","text":"Analysis module for EDM4hep.jl\n\nA number of data structures and functions to support analysis of EDM4hep data in multithreaded mode.\n\n\n\n\n\n","category":"module"},{"location":"api/#Types","page":"Public APIs","title":"Types","text":"","category":"section"},{"location":"api/","page":"Public APIs","title":"Public APIs","text":"This is the list of all types defined for EDM4hep using the PODIO yaml file.","category":"page"},{"location":"api/","page":"Public APIs","title":"Public APIs","text":"Modules = [EDM4hep, EDM4hep.RootIO, EDM4hep.Histograms, EDM4hep.Analysis]\nOrder = [:type]","category":"page"},{"location":"api/#EDM4hep.CaloHitContribution","page":"Public APIs","title":"EDM4hep.CaloHitContribution","text":"Monte Carlo contribution to SimCalorimeterHit\n\nAuthor: F.Gaede, DESY\n\nFields\n\nPDG::Int32: PDG code of the shower particle that caused this contribution.\nenergy::Float32: energy in [GeV] of the this contribution\ntime::Float32: time in [ns] of this contribution\nstepPosition::Vector3f: position of this energy deposition (step) [mm]\n\nRelations\n\nparticle::MCParticle: primary MCParticle that caused the shower responsible for this contribution to the hit.\n\n\n\n\n\n","category":"type"},{"location":"api/#EDM4hep.CalorimeterHit","page":"Public APIs","title":"EDM4hep.CalorimeterHit","text":"Calorimeter hit\n\nAuthor: F.Gaede, DESY\n\nFields\n\ncellID::UInt64: detector specific (geometrical) cell id.\nenergy::Float32: energy of the hit in [GeV].\nenergyError::Float32: error of the hit energy in [GeV].\ntime::Float32: time of the hit in [ns].\nposition::Vector3f: position of the hit in world coordinates in [mm].\ntype::Int32: type of hit. Mapping of integer types to names via collection parameters \"CalorimeterHitTypeNames\" and \"CalorimeterHitTypeValues\".\n\n\n\n\n\n","category":"type"},{"location":"api/#EDM4hep.Cluster","page":"Public APIs","title":"EDM4hep.Cluster","text":"Calorimeter Hit Cluster\n\nAuthor: F.Gaede, DESY\n\nFields\n\ntype::Int32: flagword that defines the type of cluster. Bits 16-31 are used internally.\nenergy::Float32: energy of the cluster [GeV]\nenergyError::Float32: error on the energy\nposition::Vector3f: position of the cluster [mm]\npositionError::SVector{6,Float32}: covariance matrix of the position (6 Parameters)\niTheta::Float32: intrinsic direction of cluster at position Theta. Not to be confused with direction cluster is seen from IP.\nphi::Float32: intrinsic direction of cluster at position - Phi. Not to be confused with direction cluster is seen from IP.\ndirectionError::Vector3f: covariance matrix of the direction (3 Parameters) [mm^2]\nshapeParameters::PVector{Float32}: shape parameters - check/set collection parameter ClusterShapeParameters for size and names of parameters.\nsubdetectorEnergies::PVector{Float32}: energy observed in a particular subdetector. Check/set collection parameter ClusterSubdetectorNames for decoding the indices of the array.\n\nRelations\n\nclusters::Cluster: clusters that have been combined to this cluster.\nhits::CalorimeterHit: hits that have been combined to this cluster.\nparticleIDs::ParticleID: particle IDs (sorted by their likelihood)\n\nMethods\n\nsetShapeParameters(object::Cluster, v::AbstractVector{Float32}): assign a set of values to the shapeParameters vector member\nsetSubdetectorEnergies(object::Cluster, v::AbstractVector{Float32}): assign a set of values to the subdetectorEnergies vector member\npushToClusters(obj::Cluster, robj::Cluster): push related object to the clusters relation\npopFromClusters(obj::Cluster): pop last related object from clusters relation\npushToHits(obj::Cluster, robj::CalorimeterHit): push related object to the hits relation\npopFromHits(obj::Cluster): pop last related object from hits relation\npushToParticleIDs(obj::Cluster, robj::ParticleID): push related object to the particleIDs relation\npopFromParticleIDs(obj::Cluster): pop last related object from particleIDs relation\n\n\n\n\n\n","category":"type"},{"location":"api/#EDM4hep.EventHeader","page":"Public APIs","title":"EDM4hep.EventHeader","text":"Event Header. Additional parameters are assumed to go into the metadata tree.\n\nAuthor: F.Gaede\n\nFields\n\neventNumber::Int32: event number\nrunNumber::Int32: run number\ntimeStamp::UInt64: time stamp\nweight::Float32: event weight\n\n\n\n\n\n","category":"type"},{"location":"api/#EDM4hep.HitLevelData","page":"Public APIs","title":"EDM4hep.HitLevelData","text":"HitLevelData\n\nFields\n\ncellID::UInt64: cell id\nN::UInt32: number of reconstructed ionization cluster.\neDep::Float32: reconstructed energy deposit [GeV].\npathLength::Float32: track path length [mm].\n\n\n\n\n\n","category":"type"},{"location":"api/#EDM4hep.Hypothesis","page":"Public APIs","title":"EDM4hep.Hypothesis","text":"Hypothesis\n\nFields\n\nchi2::Float32: chi2\nexpected::Float32: expected value\nsigma::Float32: sigma value\n\n\n\n\n\n","category":"type"},{"location":"api/#EDM4hep.MCParticle","page":"Public APIs","title":"EDM4hep.MCParticle","text":"The Monte Carlo particle - based on the lcio::MCParticle.\n\nAuthor: F.Gaede, DESY\n\nFields\n\nPDG::Int32: PDG code of the particle\ngeneratorStatus::Int32: status of the particle as defined by the generator\nsimulatorStatus::Int32: status of the particle from the simulation program - use BIT constants below\ncharge::Float32: particle charge\ntime::Float32: creation time of the particle in [ns] wrt. the event, e.g. for preassigned decays or decays in flight from the simulator.\nmass::Float64: mass of the particle in [GeV]\nvertex::Vector3d: production vertex of the particle in [mm].\nendpoint::Vector3d: endpoint of the particle in [mm]\nmomentum::Vector3d: particle 3-momentum at the production vertex in [GeV]\nmomentumAtEndpoint::Vector3d: particle 3-momentum at the endpoint in [GeV]\nspin::Vector3f: spin (helicity) vector of the particle.\ncolorFlow::Vector2i: color flow as defined by the generator\n\nRelations\n\nparents::MCParticle: The parents of this particle.\ndaughters::MCParticle: The daughters this particle.\n\nMethods\n\npushToParents(obj::MCParticle, robj::MCParticle): push related object to the parents relation\npopFromParents(obj::MCParticle): pop last related object from parents relation\npushToDaughters(obj::MCParticle, robj::MCParticle): push related object to the daughters relation\npopFromDaughters(obj::MCParticle): pop last related object from daughters relation\n\n\n\n\n\n","category":"type"},{"location":"api/#EDM4hep.MCRecoCaloAssociation","page":"Public APIs","title":"EDM4hep.MCRecoCaloAssociation","text":"Association between a CaloHit and the corresponding simulated CaloHit\n\nAuthor: C. Bernet, B. Hegner\n\nFields\n\nweight::Float32: weight of this association\n\nRelations\n\nrec::CalorimeterHit: reference to the reconstructed hit\nsim::SimCalorimeterHit: reference to the simulated hit\n\n\n\n\n\n","category":"type"},{"location":"api/#EDM4hep.MCRecoCaloParticleAssociation","page":"Public APIs","title":"EDM4hep.MCRecoCaloParticleAssociation","text":"Association between a CalorimeterHit and a MCParticle\n\nAuthor: Placido Fernandez Declara\n\nFields\n\nweight::Float32: weight of this association\n\nRelations\n\nrec::CalorimeterHit: reference to the reconstructed hit\nsim::MCParticle: reference to the Monte-Carlo particle\n\n\n\n\n\n","category":"type"},{"location":"api/#EDM4hep.MCRecoClusterParticleAssociation","page":"Public APIs","title":"EDM4hep.MCRecoClusterParticleAssociation","text":"Association between a Cluster and a MCParticle\n\nAuthor: Placido Fernandez Declara\n\nFields\n\nweight::Float32: weight of this association\n\nRelations\n\nrec::Cluster: reference to the cluster\nsim::MCParticle: reference to the Monte-Carlo particle\n\n\n\n\n\n","category":"type"},{"location":"api/#EDM4hep.MCRecoParticleAssociation","page":"Public APIs","title":"EDM4hep.MCRecoParticleAssociation","text":"Used to keep track of the correspondence between MC and reconstructed particles\n\nAuthor: C. Bernet, B. Hegner\n\nFields\n\nweight::Float32: weight of this association\n\nRelations\n\nrec::ReconstructedParticle: reference to the reconstructed particle\nsim::MCParticle: reference to the Monte-Carlo particle\n\n\n\n\n\n","category":"type"},{"location":"api/#EDM4hep.MCRecoTrackParticleAssociation","page":"Public APIs","title":"EDM4hep.MCRecoTrackParticleAssociation","text":"Association between a Track and a MCParticle\n\nAuthor: Placido Fernandez Declara\n\nFields\n\nweight::Float32: weight of this association\n\nRelations\n\nrec::Track: reference to the track\nsim::MCParticle: reference to the Monte-Carlo particle\n\n\n\n\n\n","category":"type"},{"location":"api/#EDM4hep.MCRecoTrackerAssociation","page":"Public APIs","title":"EDM4hep.MCRecoTrackerAssociation","text":"Association between a TrackerHit and the corresponding simulated TrackerHit\n\nAuthor: C. Bernet, B. Hegner\n\nFields\n\nweight::Float32: weight of this association\n\nRelations\n\nrec::TrackerHit: reference to the reconstructed hit\nsim::SimTrackerHit: reference to the simulated hit\n\n\n\n\n\n","category":"type"},{"location":"api/#EDM4hep.MCRecoTrackerHitPlaneAssociation","page":"Public APIs","title":"EDM4hep.MCRecoTrackerHitPlaneAssociation","text":"Association between a TrackerHitPlane and the corresponding simulated TrackerHit\n\nAuthor: Placido Fernandez Declara\n\nFields\n\nweight::Float32: weight of this association\n\nRelations\n\nrec::TrackerHitPlane: reference to the reconstructed hit\nsim::SimTrackerHit: reference to the simulated hit\n\n\n\n\n\n","category":"type"},{"location":"api/#EDM4hep.ParticleID","page":"Public APIs","title":"EDM4hep.ParticleID","text":"ParticleID\n\nAuthor: F.Gaede, DESY\n\nFields\n\ntype::Int32: userdefined type\nPDG::Int32: PDG code of this id - ( 999999 ) if unknown.\nalgorithmType::Int32: type of the algorithm/module that created this hypothesis\nlikelihood::Float32: likelihood of this hypothesis - in a user defined normalization.\nparameters::PVector{Float32}: parameters associated with this hypothesis. Check/set collection parameters ParameterNames_PIDAlgorithmTypeName for decoding the indices.\n\nMethods\n\nsetParameters(object::ParticleID, v::AbstractVector{Float32}): assign a set of values to the parameters vector member\n\n\n\n\n\n","category":"type"},{"location":"api/#EDM4hep.Quantity","page":"Public APIs","title":"EDM4hep.Quantity","text":"Quantity\n\nFields\n\ntype::Int16: flag identifying how to interpret the quantity\nvalue::Float32: value of the quantity\nerror::Float32: error on the value of the quantity\n\n\n\n\n\n","category":"type"},{"location":"api/#EDM4hep.RawCalorimeterHit","page":"Public APIs","title":"EDM4hep.RawCalorimeterHit","text":"Raw calorimeter hit\n\nAuthor: F.Gaede, DESY\n\nFields\n\ncellID::UInt64: detector specific (geometrical) cell id.\namplitude::Int32: amplitude of the hit in ADC counts.\ntimeStamp::Int32: time stamp for the hit.\n\n\n\n\n\n","category":"type"},{"location":"api/#EDM4hep.RawTimeSeries","page":"Public APIs","title":"EDM4hep.RawTimeSeries","text":"Raw data of a detector readout\n\nAuthor: F.Gaede, DESY\n\nFields\n\ncellID::UInt64: detector specific cell id.\nquality::Int32: quality flag for the hit.\ntime::Float32: time of the hit [ns].\ncharge::Float32: integrated charge of the hit [fC].\ninterval::Float32: interval of each sampling [ns].\nadcCounts::PVector{Int32}: raw data (32-bit) word at i.\n\nMethods\n\nsetAdcCounts(object::RawTimeSeries, v::AbstractVector{Int32}): assign a set of values to the adcCounts vector member\n\n\n\n\n\n","category":"type"},{"location":"api/#EDM4hep.RecDqdx","page":"Public APIs","title":"EDM4hep.RecDqdx","text":"dN/dx or dE/dx info of Track.\n\nAuthor: Wenxing Fang, IHEP\n\nFields\n\ndQdx::Quantity: the reconstructed dEdx or dNdx and its error\nparticleType::Int16: particle type, e(0),mu(1),pi(2),K(3),p(4).\ntype::Int16: type.\nhypotheses::SVector{5,Hypothesis}: 5 particle hypothesis\nhitData::PVector{HitLevelData}: hit level data\n\nRelations\n\ntrack::Track: the corresponding track.\n\nMethods\n\nsetHitData(object::RecDqdx, v::AbstractVector{HitLevelData}): assign a set of values to the hitData vector member\n\n\n\n\n\n","category":"type"},{"location":"api/#EDM4hep.RecIonizationCluster","page":"Public APIs","title":"EDM4hep.RecIonizationCluster","text":"Reconstructed Ionization Cluster\n\nAuthor: Wenxing Fang, IHEP\n\nFields\n\ncellID::UInt64: cell id.\nsignificance::Float32: significance.\ntype::Int16: type.\n\nRelations\n\ntrackerPulse::TrackerPulse: the TrackerPulse used to create the ionization cluster.\n\nMethods\n\npushToTrackerPulse(obj::RecIonizationCluster, robj::TrackerPulse): push related object to the trackerPulse relation\npopFromTrackerPulse(obj::RecIonizationCluster): pop last related object from trackerPulse relation\n\n\n\n\n\n","category":"type"},{"location":"api/#EDM4hep.RecoParticleVertexAssociation","page":"Public APIs","title":"EDM4hep.RecoParticleVertexAssociation","text":"Association between a Reconstructed Particle and a Vertex\n\nAuthor: Placido Fernandez Declara\n\nFields\n\nweight::Float32: weight of this association\n\nRelations\n\nrec::ReconstructedParticle: reference to the reconstructed particle\nvertex::Vertex: reference to the vertex\n\n\n\n\n\n","category":"type"},{"location":"api/#EDM4hep.ReconstructedParticle","page":"Public APIs","title":"EDM4hep.ReconstructedParticle","text":"Reconstructed Particle\n\nAuthor: F.Gaede, DESY\n\nFields\n\ntype::Int32: type of reconstructed particle. Check/set collection parameters ReconstructedParticleTypeNames and ReconstructedParticleTypeValues.\nenergy::Float32: [GeV] energy of the reconstructed particle. Four momentum state is not kept consistent internally.\nmomentum::Vector3f: [GeV] particle momentum. Four momentum state is not kept consistent internally.\nreferencePoint::Vector3f: [mm] reference, i.e. where the particle has been measured\ncharge::Float32: charge of the reconstructed particle.\nmass::Float32: [GeV] mass of the reconstructed particle, set independently from four vector. Four momentum state is not kept consistent internally.\ngoodnessOfPID::Float32: overall goodness of the PID on a scale of [0;1]\ncovMatrix::SVector{10,Float32}: cvariance matrix of the reconstructed particle 4vector (10 parameters). Stored as lower triangle matrix of the four momentum (px,py,pz,E), i.e. cov(px,px), cov(py,##\n\nRelations\n\nstartVertex::Vertex: start vertex associated to this particle\nparticleIDUsed::ParticleID: particle Id used for the kinematics of this particle\nclusters::Cluster: clusters that have been used for this particle.\ntracks::Track: tracks that have been used for this particle.\nparticles::ReconstructedParticle: reconstructed particles that have been combined to this particle.\nparticleIDs::ParticleID: particle Ids (not sorted by their likelihood)\n\nMethods\n\npushToClusters(obj::ReconstructedParticle, robj::Cluster): push related object to the clusters relation\npopFromClusters(obj::ReconstructedParticle): pop last related object from clusters relation\npushToTracks(obj::ReconstructedParticle, robj::Track): push related object to the tracks relation\npopFromTracks(obj::ReconstructedParticle): pop last related object from tracks relation\npushToParticles(obj::ReconstructedParticle, robj::ReconstructedParticle): push related object to the particles relation\npopFromParticles(obj::ReconstructedParticle): pop last related object from particles relation\npushToParticleIDs(obj::ReconstructedParticle, robj::ParticleID): push related object to the particleIDs relation\npopFromParticleIDs(obj::ReconstructedParticle): pop last related object from particleIDs relation\n\n\n\n\n\n","category":"type"},{"location":"api/#EDM4hep.SimCalorimeterHit","page":"Public APIs","title":"EDM4hep.SimCalorimeterHit","text":"Simulated calorimeter hit\n\nAuthor: F.Gaede, DESY\n\nFields\n\ncellID::UInt64: ID of the sensor that created this hit\nenergy::Float32: energy of the hit in [GeV].\nposition::Vector3f: position of the hit in world coordinates in [mm].\n\nRelations\n\ncontributions::CaloHitContribution: Monte Carlo step contribution - parallel to particle\n\nMethods\n\npushToContributions(obj::SimCalorimeterHit, robj::CaloHitContribution): push related object to the contributions relation\npopFromContributions(obj::SimCalorimeterHit): pop last related object from contributions relation\n\n\n\n\n\n","category":"type"},{"location":"api/#EDM4hep.SimPrimaryIonizationCluster","page":"Public APIs","title":"EDM4hep.SimPrimaryIonizationCluster","text":"Simulated Primary Ionization\n\nAuthor: Wenxing Fang, IHEP\n\nFields\n\ncellID::UInt64: cell id.\ntime::Float32: the primary ionization's time in the lab frame [ns].\nposition::Vector3d: the primary ionization's position [mm].\ntype::Int16: type.\nelectronCellID::PVector{UInt64}: cell id.\nelectronTime::PVector{Float32}: the time in the lab frame [ns].\nelectronPosition::PVector{Vector3d}: the position in the lab frame [mm].\npulseTime::PVector{Float32}: the pulse's time in the lab frame [ns].\npulseAmplitude::PVector{Float32}: the pulse's amplitude [fC].\n\nRelations\n\nmcparticle::MCParticle: the particle that caused the ionizing collisions.\n\nMethods\n\nsetElectronCellID(object::SimPrimaryIonizationCluster, v::AbstractVector{UInt64}): assign a set of values to the electronCellID vector member\nsetElectronTime(object::SimPrimaryIonizationCluster, v::AbstractVector{Float32}): assign a set of values to the electronTime vector member\nsetElectronPosition(object::SimPrimaryIonizationCluster, v::AbstractVector{Vector3d}): assign a set of values to the electronPosition vector member\nsetPulseTime(object::SimPrimaryIonizationCluster, v::AbstractVector{Float32}): assign a set of values to the pulseTime vector member\nsetPulseAmplitude(object::SimPrimaryIonizationCluster, v::AbstractVector{Float32}): assign a set of values to the pulseAmplitude vector member\n\n\n\n\n\n","category":"type"},{"location":"api/#EDM4hep.SimTrackerHit","page":"Public APIs","title":"EDM4hep.SimTrackerHit","text":"Simulated tracker hit\n\nAuthor: F.Gaede, DESY\n\nFields\n\ncellID::UInt64: ID of the sensor that created this hit\nEDep::Float32: energy deposited in the hit [GeV].\ntime::Float32: proper time of the hit in the lab frame in [ns].\npathLength::Float32: path length of the particle in the sensitive material that resulted in this hit.\nquality::Int32: quality bit flag.\nposition::Vector3d: the hit position in [mm].\nmomentum::Vector3f: the 3-momentum of the particle at the hits position in [GeV]\n\nRelations\n\nmcparticle::MCParticle: MCParticle that caused the hit.\n\n\n\n\n\n","category":"type"},{"location":"api/#EDM4hep.TimeSeries","page":"Public APIs","title":"EDM4hep.TimeSeries","text":"Calibrated Detector Data\n\nAuthor: Wenxing Fang, IHEP\n\nFields\n\ncellID::UInt64: cell id.\ntime::Float32: begin time [ns].\ninterval::Float32: interval of each sampling [ns].\namplitude::PVector{Float32}: calibrated detector data.\n\nMethods\n\nsetAmplitude(object::TimeSeries, v::AbstractVector{Float32}): assign a set of values to the amplitude vector member\n\n\n\n\n\n","category":"type"},{"location":"api/#EDM4hep.Track","page":"Public APIs","title":"EDM4hep.Track","text":"Reconstructed track\n\nAuthor: F.Gaede, DESY\n\nFields\n\ntype::Int32: flagword that defines the type of track.Bits 16-31 are used internally\nchi2::Float32: Chi^2 of the track fit\nndf::Int32: number of degrees of freedom of the track fit\ndEdx::Float32: dEdx of the track.\ndEdxError::Float32: error of dEdx.\nradiusOfInnermostHit::Float32: radius of the innermost hit that has been used in the track fit\nsubdetectorHitNumbers::PVector{Int32}: number of hits in particular subdetectors.Check/set collection variable TrackSubdetectorNames for decoding the indices\ntrackStates::PVector{TrackState}: track states\ndxQuantities::PVector{Quantity}: different measurements of dx quantities\n\nRelations\n\ntrackerHits::TrackerHit: hits that have been used to create this track\ntracks::Track: tracks (segments) that have been combined to create this track\n\nMethods\n\nsetSubdetectorHitNumbers(object::Track, v::AbstractVector{Int32}): assign a set of values to the subdetectorHitNumbers vector member\nsetTrackStates(object::Track, v::AbstractVector{TrackState}): assign a set of values to the trackStates vector member\nsetDxQuantities(object::Track, v::AbstractVector{Quantity}): assign a set of values to the dxQuantities vector member\npushToTrackerHits(obj::Track, robj::TrackerHit): push related object to the trackerHits relation\npopFromTrackerHits(obj::Track): pop last related object from trackerHits relation\npushToTracks(obj::Track, robj::Track): push related object to the tracks relation\npopFromTracks(obj::Track): pop last related object from tracks relation\n\n\n\n\n\n","category":"type"},{"location":"api/#EDM4hep.TrackState","page":"Public APIs","title":"EDM4hep.TrackState","text":"TrackState\n\nFields\n\nlocation::Int32: for use with At{Other|IP|FirstHit|LastHit|Calorimeter|Vertex}|LastLocation\nD0::Float32: transverse impact parameter\nphi::Float32: azimuthal angle\nomega::Float32: is the signed curvature of the track in [1/mm].\nZ0::Float32: longitudinal impact parameter\ntanLambda::Float32: lambda is the dip angle of the track in r-z\ntime::Float32: time of the track at this trackstate\nreferencePoint::Vector3f: Reference point of the track parameters, e.g. the origin at the IP, or the position of the first/last hits or the entry point into the calorimeter. [mm]\ncovMatrix::SVector{21,Float32}: lower triangular covariance matrix of the track parameters. the order of parameters is d0, phi, omega, z0, tan(lambda), time. the array is a row-major flattening of the matrix.\n\n\n\n\n\n","category":"type"},{"location":"api/#EDM4hep.TrackerHit","page":"Public APIs","title":"EDM4hep.TrackerHit","text":"Tracker hit\n\nAuthor: F.Gaede, DESY\n\nFields\n\ncellID::UInt64: ID of the sensor that created this hit\ntype::Int32: type of raw data hit, either one of edm4hep::RawTimeSeries, edm4hep::SIMTRACKERHIT - see collection parameters \"TrackerHitTypeNames\" and \"TrackerHitTypeValues\".\nquality::Int32: quality bit flag of the hit.\ntime::Float32: time of the hit [ns].\neDep::Float32: energy deposited on the hit [GeV].\neDepError::Float32: error measured on EDep [GeV].\nposition::Vector3d: hit position in [mm].\ncovMatrix::SVector{6,Float32}: covariance of the position (x,y,z), stored as lower triangle matrix. i.e. cov(x,x) , cov(y,x) , cov(y,y) , cov(z,x) , cov(z,y) , cov(z,z)\nrawHits::PVector{ObjectID}: raw data hits. Check getType to get actual data type.\n\nMethods\n\nsetRawHits(object::TrackerHit, v::AbstractVector{ObjectID}): assign a set of values to the rawHits vector member\n\n\n\n\n\n","category":"type"},{"location":"api/#EDM4hep.TrackerHitPlane","page":"Public APIs","title":"EDM4hep.TrackerHitPlane","text":"Tracker hit plane\n\nAuthor: Placido Fernandez Declara, CERN\n\nFields\n\ncellID::UInt64: ID of the sensor that created this hit\ntype::Int32: type of raw data hit, either one of edm4hep::RawTimeSeries, edm4hep::SIMTRACKERHIT - see collection parameters \"TrackerHitTypeNames\" and \"TrackerHitTypeValues\".\nquality::Int32: quality bit flag of the hit.\ntime::Float32: time of the hit [ns].\neDep::Float32: energy deposited on the hit [GeV].\neDepError::Float32: error measured on EDep [GeV].\nu::Vector2f: measurement direction vector, u lies in the x-y plane\nv::Vector2f: measurement direction vector, v is along z\ndu::Float32: measurement error along the direction\ndv::Float32: measurement error along the direction\nposition::Vector3d: hit position in [mm].\ncovMatrix::SVector{6,Float32}: covariance of the position (x,y,z), stored as lower triangle matrix. i.e. cov(x,x) , cov(y,x) , cov(y,y) , cov(z,x) , cov(z,y) , cov(z,z)\nrawHits::PVector{ObjectID}: raw data hits. Check getType to get actual data type.\n\nMethods\n\nsetRawHits(object::TrackerHitPlane, v::AbstractVector{ObjectID}): assign a set of values to the rawHits vector member\n\n\n\n\n\n","category":"type"},{"location":"api/#EDM4hep.TrackerPulse","page":"Public APIs","title":"EDM4hep.TrackerPulse","text":"Reconstructed Tracker Pulse\n\nAuthor: Wenxing Fang, IHEP\n\nFields\n\ncellID::UInt64: cell id.\ntime::Float32: time [ns].\ncharge::Float32: charge [fC].\nquality::Int16: quality.\ncovMatrix::SVector{3,Float32}: lower triangle covariance matrix of the charge(c) and time(t) measurements.\n\nRelations\n\ntimeSeries::TimeSeries: Optionally, the timeSeries that has been used to create the pulse can be stored with the pulse.\n\n\n\n\n\n","category":"type"},{"location":"api/#EDM4hep.Vector2f","page":"Public APIs","title":"EDM4hep.Vector2f","text":"Vector2f\n\nFields\n\na::Float32: \nb::Float32: \n\n\n\n\n\n","category":"type"},{"location":"api/#EDM4hep.Vector2i","page":"Public APIs","title":"EDM4hep.Vector2i","text":"Vector2i\n\nFields\n\na::Int32: \nb::Int32: \n\n\n\n\n\n","category":"type"},{"location":"api/#EDM4hep.Vector3d","page":"Public APIs","title":"EDM4hep.Vector3d","text":"Vector3d\n\nFields\n\nx::Float64: \ny::Float64: \nz::Float64: \n\n\n\n\n\n","category":"type"},{"location":"api/#EDM4hep.Vector3f","page":"Public APIs","title":"EDM4hep.Vector3f","text":"Vector3f\n\nFields\n\nx::Float32: \ny::Float32: \nz::Float32: \n\n\n\n\n\n","category":"type"},{"location":"api/#EDM4hep.Vector4f","page":"Public APIs","title":"EDM4hep.Vector4f","text":"Generic vector for storing classical 4D coordinates in memory. Four momentum helper functions are in edm4hep::utils\n\nFields\n\nx::Float32: \ny::Float32: \nz::Float32: \nt::Float32: \n\n\n\n\n\n","category":"type"},{"location":"api/#EDM4hep.Vertex","page":"Public APIs","title":"EDM4hep.Vertex","text":"Vertex\n\nAuthor: F.Gaede, DESY\n\nFields\n\nprimary::Int32: boolean flag, if vertex is the primary vertex of the event\nchi2::Float32: chi-squared of the vertex fit\nprobability::Float32: probability of the vertex fit\nposition::Vector3f: [mm] position of the vertex.\ncovMatrix::SVector{6,Float32}: covariance matrix of the position (stored as lower triangle matrix, i.e. cov(xx),cov(y,x),cov(z,x),cov(y,y),... )\nalgorithmType::Int32: type code for the algorithm that has been used to create the vertex - check/set the collection parameters AlgorithmName and AlgorithmType.\nparameters::PVector{Float32}: additional parameters related to this vertex - check/set the collection parameter \"VertexParameterNames\" for the parameters meaning.\n\nRelations\n\nassociatedParticle::POD: reconstructed particle associated to this vertex.\n\nMethods\n\nsetParameters(object::Vertex, v::AbstractVector{Float32}): assign a set of values to the parameters vector member\n\n\n\n\n\n","category":"type"},{"location":"api/#EDM4hep.RootIO.Reader","page":"Public APIs","title":"EDM4hep.RootIO.Reader","text":"The Reader structure keeps a reference to the UnROOT LazyTree and caches already built 'layouts' of the EDM4hep types. The layouts maps a set of columns in the LazyTree into an object.\n\n\n\n\n\n","category":"type"},{"location":"api/#EDM4hep.Histograms.H1D","page":"Public APIs","title":"EDM4hep.Histograms.H1D","text":"H1D(title::String, nbins::Int, min::Float, max::Float, unit::Symbol) Create a 1-dimentional histgram carrying the title and units\n\n\n\n\n\n","category":"type"},{"location":"api/#EDM4hep.Histograms.H2D","page":"Public APIs","title":"EDM4hep.Histograms.H2D","text":"H2D(title::String, xbins::Int, xmin::Float, xmax::Float, ybins::Int, ymin::Float, ymax::Float, unit::Tuple{Symbol,Symbol}) Create a 2-dimentional histgram carrying the title and units\n\n\n\n\n\n","category":"type"},{"location":"api/#EDM4hep.Histograms.H3D","page":"Public APIs","title":"EDM4hep.Histograms.H3D","text":"H3D(title::String, xbins::Int, xmin::Float, xmax::Float, ybins::Int, ymin::Float, ymax::Float, zbins::Int, zmin::Float, zmax::Float, unit::Tuple{Symbol,Symbol,Symbol}) Create a 2-dimentional histgram carrying the title and units\n\n\n\n\n\n","category":"type"},{"location":"api/#Functions","page":"Public APIs","title":"Functions","text":"","category":"section"},{"location":"api/","page":"Public APIs","title":"Public APIs","text":"Modules = [EDM4hep, EDM4hep.RootIO, EDM4hep.Histograms, EDM4hep.Analysis]\nOrder = [:function]","category":"page"},{"location":"api/#EDM4hep.emptyEDStore-Tuple{}","page":"Public APIs","title":"EDM4hep.emptyEDStore","text":"emptyEDStore()\n\nEmpty tyhe whole sortres\n\n\n\n\n\n","category":"method"},{"location":"api/#EDM4hep.getEDStore-Union{Tuple{Type{ED}}, Tuple{ED}, Tuple{Type{ED}, UInt32}} where ED","page":"Public APIs","title":"EDM4hep.getEDStore","text":"getEDStore(::Type{ED}, collid::UInt32=0x00000000)\n\nGet the store corresponding to the collid. If it is not specified then obtain a collid frm the data type ED\n\n\n\n\n\n","category":"method"},{"location":"api/#EDM4hep.hasEDStore-Tuple{UInt32}","page":"Public APIs","title":"EDM4hep.hasEDStore","text":"hasEDStore(collid::UInt32)\n\nFind out if the store with collid is there.\n\n\n\n\n\n","category":"method"},{"location":"api/#EDM4hep.initEDStore-Union{Tuple{Type{ED}}, Tuple{ED}} where ED","page":"Public APIs","title":"EDM4hep.initEDStore","text":"initEDStore(::Type{ED}) where ED\n\nUnintialize the store corresponding to type ED\n\n\n\n\n\n","category":"method"},{"location":"api/#EDM4hep.RootIO.create_getter-Tuple{EDM4hep.RootIO.Reader, String}","page":"Public APIs","title":"EDM4hep.RootIO.create_getter","text":"create_getter(reader::Reader, bname::String; selection=nothing)\n\nThis function creates a getter function for a given branch name. The getter function is a function that takes an event and returns a StructArray with the data of the branch. The getter function is created as a function with the name get_. The optional parameter selection is a list of field names to be selected from the branch. If selection is not provided, all fields are selected. The user can use a list of strings, symbols or regular expressions to select the fields.\n\n\n\n\n\n","category":"method"},{"location":"api/#EDM4hep.RootIO.get-Tuple{EDM4hep.RootIO.Reader, String}","page":"Public APIs","title":"EDM4hep.RootIO.get","text":"get(reader::Reader, treename::String)\n\nOpens a 'TTree' or 'RNTuple' in the ROOT file (typically the events tree). It returns a 'LazyTree' that allows the user to iterate over events. \n\n\n\n\n\n","category":"method"},{"location":"api/#EDM4hep.RootIO.get-Tuple{EDM4hep.RootIO.Reader, UnROOT.LazyEvent, String}","page":"Public APIs","title":"EDM4hep.RootIO.get","text":"get(reader::Reader, evt::UnROOT.LazyEvent, bname::String; btype::Type=Any, register=true)\n\nGets an object collection by its name, with the possibility to overwrite the mapping Julia type or use the type known in the ROOT file (C++ class name). The optonal key parameter register indicates is the collection needs to be registered to the EDStore.\n\n\n\n\n\n","category":"method"},{"location":"api/#Base.append!-Tuple{EDM4hep.Analysis.AbstractAnalysisData, EDM4hep.Analysis.AbstractAnalysisData}","page":"Public APIs","title":"Base.append!","text":"Base.append!(d1::AbstractAnalysisData, d2::AbstractAnalysisData)\n\nDefault function to reset the user analysis data structure in case is not provided explicitely.\n\n\n\n\n\n","category":"method"},{"location":"api/#Base.empty!-Tuple{EDM4hep.Analysis.AbstractAnalysisData}","page":"Public APIs","title":"Base.empty!","text":"Base.empty!(data::AbstractAnalysisData)\n\nDefault function to reset the user analysis data structure in case is not provided explicitely.\n\n\n\n\n\n","category":"method"},{"location":"api/#EDM4hep.Analysis.do_analysis!-Tuple{EDM4hep.Analysis.AbstractAnalysisData, Any, Any, Any}","page":"Public APIs","title":"EDM4hep.Analysis.do_analysis!","text":"doanalysis!(data::AbstractAnalysisData, analysis, reader, events; mt::Bool=false, tasksper_thread::Int=4)\n\nPerform an analysis on all events by executing the analysis function. The iteration will be chunked and distributed to diffrent tasks running on different threads if the option argument mt is set to true. The results in data for all the cbhunks will be merged at the end of the analysis. \n\n\n\n\n\n","category":"method"},{"location":"#EDM4hep-in-Julia","page":"Introduction","title":"EDM4hep in Julia","text":"","category":"section"},{"location":"","page":"Introduction","title":"Introduction","text":"Prototype of the EDM4hep (generic Event Data Model for HEP experiments part of Key4hep) for Julia with the goal to have very simple structures (isbits) with the purpose to evaluate its ergonomic design and implementation performance.","category":"page"},{"location":"#PODIO-generation","page":"Introduction","title":"PODIO generation","text":"","category":"section"},{"location":"","page":"Introduction","title":"Introduction","text":"The Julia POD structs should be generated from the the edm4hep.yaml yaml file using PODIO scripts.","category":"page"},{"location":"","page":"Introduction","title":"Introduction","text":"For the time being, for this evaluation, the Julia structs are generated by a local Julia script in ./podio/generate.jl. The files genComponents/jl and genDatatypes.jl are fully generated. ","category":"page"},{"location":"#Main-design-features","page":"Introduction","title":"Main design features","text":"","category":"section"},{"location":"","page":"Introduction","title":"Introduction","text":"All EDM4hep entities are immutable structs and containing basic types and structs. Including the relationships (one-to-one and one-to-many) and vector members. Objects attributes cannot be changed. This makes the objects with the isbits(obj) == true.\nObjects are created by default not being registered, they are free floating. The user can register them with register(obj).\nNote that operations like register, setting relationships (add_daughter,...), etc. will automatically create a new instance. The typical pattern is to overwrite the user variable with the new instance, e.g.:\np1 = MCParticle(...)\np1 = register(p1)\np1, d1 = add_daughter(p1, MCParticle(...))\nThe main goal for reading EDM4hep containers from a ROOT file is to obtain as result a StructArray(see StructArrays.jl documentation). This provides a very efficient access by column and the same time provide a convenient views as object instances. For example if you want to sum the momentum of a range of MCParticles the user should be able to write:\njulia> mcparticles = get(reader,...)\njulia> mcparticles[5:8].momentum\n4-element StructArray(::Vector{Float32}, ::Vector{Float32}, ::Vector{Float32}) with eltype Vector3f:\n (0.8740664,-0.002116337,124.84335)\n (0.8602309,-0.056633994,-124.632545)\n (-0.00012483617,0.0021162117,0.0026654897)\n (0.014539731,0.05663412,-0.32755017)\n\njulia> sum(mcparticles[5:8].momentum)\n (1.7487122,0.0,-0.11407688)","category":"page"},{"location":"#Roadmap","page":"Introduction","title":"Roadmap","text":"","category":"section"},{"location":"","page":"Introduction","title":"Introduction","text":"There are a number of issues and problems still to be resolved. We keep track of them in this list:","category":"page"},{"location":"","page":"Introduction","title":"Introduction","text":"Need to generate and support VectorMembers. For the time being are ignored. - DONE\nHandle cyclic datatype dependencies. In EDM4hep there is one case that is not yet resolved. Vertex depends on ReconstructedParticle in a one-to-one relation and ReconstructedParticle relates to Vertex. Using the abstract class POD in this case works well to break the cycle. - DONE \nBetter handle collectionID in one-to-many relations - DONE\nBe able to read RNTuple files in addition to TTree files - DONE\nGenerate doc string with member information - DONE\nGenerate accessors for one-to-many relations, vector members - DONE \nSupport latest version (RC2) of RNTuple format - DONE\nSupport for multi-threading (i.e. be able to add @threads in the event loop) - DONE","category":"page"},{"location":"#Tests","page":"Introduction","title":"Tests","text":"","category":"section"},{"location":"","page":"Introduction","title":"Introduction","text":"Unit tests can be run with julia --project=. test/runtests.jl","category":"page"},{"location":"#Examples","page":"Introduction","title":"Examples","text":"","category":"section"},{"location":"#examples/mcparticle_tree.jl","page":"Introduction","title":"examples/mcparticle_tree.jl","text":"","category":"section"},{"location":"","page":"Introduction","title":"Introduction","text":"Creates a collection of MCParticles and a collection of SimTrackerHits in memory, constructing the relations between particle parents and daughters, as well as, the the one-to-one relation between the simulation hit to the originator MCParticle.","category":"page"},{"location":"#examples/read_example.jl","page":"Introduction","title":"examples/read_example.jl","text":"","category":"section"},{"location":"","page":"Introduction","title":"Introduction","text":"An example of reading from a ROOT file created by the C++ implementation of EDM4hep. This is the full code:","category":"page"},{"location":"","page":"Introduction","title":"Introduction","text":"using EDM4hep\nusing EDM4hep.RootIO\n\ncd(@__DIR__)\nf = \"ttbar_edm4hep_digi.root\"\n\nreader = RootIO.Reader(f)\nevents = RootIO.get(reader, \"events\")\n\nevt = events[1];\n\nhits = RootIO.get(reader, evt, \"InnerTrackerBarrelCollection\")\nmcps = RootIO.get(reader, evt, \"MCParticle\")\n\nfor hit in hits\n println(\"Hit $(hit.index) is related to MCParticle $(hit.mcparticle.index) with name $(hit.mcparticle.name)\")\nend\n\nfor p in mcps\n println(\"MCParticle $(p.index) $(p.name) with momentum $(p.momentum) and energy $(p.energy) has $(length(p.daughters)) daughters\")\n for d in p.daughters\n println(\" ---> $(d.index) $(d.name) and momentum $(d.momentum) has $(length(d.parents)) parents\")\n for m in d.parents\n println(\" ---> $(m.index) $(m.name)\")\n end \n end\nend","category":"page"},{"location":"#examples/FCC/analysis_mH-recoil.jl","page":"Introduction","title":"examples/FCC/analysis_mH-recoil.jl","text":"","category":"section"},{"location":"","page":"Introduction","title":"Introduction","text":"This is basically the example higgs/mH-recoil/mumu from FCCAnalyses. It shows in a realistic manner how to develop analysis functions using the Data Types from EDM4hep to created high-level analysis functions. The Jupyter notebook analysis_mH-recoil.ipynb shows the same example in form of a notebook. ","category":"page"},{"location":"#examples/FCC/analysis_MT.jl","page":"Introduction","title":"examples/FCC/analysis_MT.jl","text":"","category":"section"},{"location":"","page":"Introduction","title":"Introduction","text":"This is basically the example higgs/mH-recoil/mumu from FCCAnalyses in a multi-threaded mode. The Jupyter notebook analysis_mH-recoil.ipynb shows the same example in form of a notebook. ","category":"page"},{"location":"#EDM4hep-Data-Model","page":"Introduction","title":"EDM4hep Data Model","text":"","category":"section"},{"location":"","page":"Introduction","title":"Introduction","text":"This is the diagram for the EDM4hep datamodel including relationships. ","category":"page"},{"location":"","page":"Introduction","title":"Introduction","text":"(Image: Figure)","category":"page"}] +[{"location":"release_notes/#Release-Notes","page":"Release Notes","title":"Release Notes","text":"","category":"section"},{"location":"release_notes/#0.4.2","page":"Release Notes","title":"0.4.2","text":"","category":"section"},{"location":"release_notes/","page":"Release Notes","title":"Release Notes","text":"Moved to JuliaHEP organization\nUpdate to FHist 0.11 series (#9)","category":"page"},{"location":"release_notes/#0.4.1","page":"Release Notes","title":"0.4.1","text":"","category":"section"},{"location":"release_notes/","page":"Release Notes","title":"Release Notes","text":"Use StructArrays also for EDStore when building the model directly in memory.","category":"page"},{"location":"release_notes/#0.4.0","page":"Release Notes","title":"0.4.0","text":"","category":"section"},{"location":"release_notes/#New-Functionality","page":"Release Notes","title":"New Functionality","text":"","category":"section"},{"location":"release_notes/","page":"Release Notes","title":"Release Notes","text":"Added function RootIO.create_getter(reader::Reader, bname::String; selection=nothing) to create a getter function for a specific branch. The optional argument allows to select leaves to be read.\nThe overall performance is highly improved (factor 3 with respect previous version)","category":"page"},{"location":"release_notes/#0.3.1","page":"Release Notes","title":"0.3.1","text":"","category":"section"},{"location":"release_notes/#Bug-Fixes","page":"Release Notes","title":"Bug Fixes","text":"","category":"section"},{"location":"release_notes/","page":"Release Notes","title":"Release Notes","text":"Legacy podio test fixed","category":"page"},{"location":"release_notes/#0.3.0","page":"Release Notes","title":"0.3.0","text":"","category":"section"},{"location":"release_notes/#New-Functionality-2","page":"Release Notes","title":"New Functionality","text":"","category":"section"},{"location":"release_notes/","page":"Release Notes","title":"Release Notes","text":"Optimisations by explicitly generation of StructArrays\nSupport for multi-files\nSupport for multi-threading\nSupport for RNTuple RC2\nAdded analysis module ROOT.Analysis (mini-framework for MT analysis)","category":"page"},{"location":"release_notes/#0.2.0","page":"Release Notes","title":"0.2.0","text":"","category":"section"},{"location":"release_notes/#New-Functionality-3","page":"Release Notes","title":"New Functionality","text":"","category":"section"},{"location":"release_notes/","page":"Release Notes","title":"Release Notes","text":"Added support for older versions of PODIO file formats\nAdded analysis example for FCCAnalysis","category":"page"},{"location":"release_notes/#0.1.0","page":"Release Notes","title":"0.1.0","text":"","category":"section"},{"location":"release_notes/","page":"Release Notes","title":"Release Notes","text":"First release. It provides the basic functionality to create in memory an event model and be able to read from a ROOT file (supporting both TTree and RNTuple formats).","category":"page"},{"location":"api/#Public-Documentation","page":"Public APIs","title":"Public Documentation","text":"","category":"section"},{"location":"api/","page":"Public APIs","title":"Public APIs","text":"Documentation for EDM4hep.jl public interface.","category":"page"},{"location":"api/#Index-Types","page":"Public APIs","title":"Index - Types","text":"","category":"section"},{"location":"api/","page":"Public APIs","title":"Public APIs","text":"Pages = [\"api.md\"]\nModules = [EDM4hep, EDM4hep.RootIO, EDM4hep.Histograms, EDM4hep.Analysis]\nOrder = [:type]","category":"page"},{"location":"api/#Index-Functions","page":"Public APIs","title":"Index - Functions","text":"","category":"section"},{"location":"api/","page":"Public APIs","title":"Public APIs","text":"Pages = [\"api.md\"]\nModules = [EDM4hep, EDM4hep.RootIO, EDM4hep.Histograms, EDM4hep.Analysis]\nOrder = [:function]","category":"page"},{"location":"api/#Modules","page":"Public APIs","title":"Modules","text":"","category":"section"},{"location":"api/","page":"Public APIs","title":"Public APIs","text":"Modules = [EDM4hep, EDM4hep.RootIO, EDM4hep.Analysis]\nOrder = [:module]","category":"page"},{"location":"api/#EDM4hep.EDM4hep","page":"Public APIs","title":"EDM4hep.EDM4hep","text":"Main module for EDM4hep.jl – Key4hep Event Data Model for Julia.\n\nAll data model types are exported from this module for public use\n\nExports\n\n\n\n\n\n","category":"module"},{"location":"api/#EDM4hep.RootIO","page":"Public APIs","title":"EDM4hep.RootIO","text":"ROOT I/O module for EDM4hep.jl\n\nIt supports both formats: TTree and RNTuple\n\n\n\n\n\n","category":"module"},{"location":"api/#EDM4hep.Analysis","page":"Public APIs","title":"EDM4hep.Analysis","text":"Analysis module for EDM4hep.jl\n\nA number of data structures and functions to support analysis of EDM4hep data in multithreaded mode.\n\n\n\n\n\n","category":"module"},{"location":"api/#Types","page":"Public APIs","title":"Types","text":"","category":"section"},{"location":"api/","page":"Public APIs","title":"Public APIs","text":"This is the list of all types defined for EDM4hep using the PODIO yaml file.","category":"page"},{"location":"api/","page":"Public APIs","title":"Public APIs","text":"Modules = [EDM4hep, EDM4hep.RootIO, EDM4hep.Histograms, EDM4hep.Analysis]\nOrder = [:type]","category":"page"},{"location":"api/#EDM4hep.CaloHitContribution","page":"Public APIs","title":"EDM4hep.CaloHitContribution","text":"Monte Carlo contribution to SimCalorimeterHit\n\nAuthor: F.Gaede, DESY\n\nFields\n\nPDG::Int32: PDG code of the shower particle that caused this contribution.\nenergy::Float32: energy in [GeV] of the this contribution\ntime::Float32: time in [ns] of this contribution\nstepPosition::Vector3f: position of this energy deposition (step) [mm]\n\nRelations\n\nparticle::MCParticle: primary MCParticle that caused the shower responsible for this contribution to the hit.\n\n\n\n\n\n","category":"type"},{"location":"api/#EDM4hep.CalorimeterHit","page":"Public APIs","title":"EDM4hep.CalorimeterHit","text":"Calorimeter hit\n\nAuthor: F.Gaede, DESY\n\nFields\n\ncellID::UInt64: detector specific (geometrical) cell id.\nenergy::Float32: energy of the hit in [GeV].\nenergyError::Float32: error of the hit energy in [GeV].\ntime::Float32: time of the hit in [ns].\nposition::Vector3f: position of the hit in world coordinates in [mm].\ntype::Int32: type of hit. Mapping of integer types to names via collection parameters \"CalorimeterHitTypeNames\" and \"CalorimeterHitTypeValues\".\n\n\n\n\n\n","category":"type"},{"location":"api/#EDM4hep.Cluster","page":"Public APIs","title":"EDM4hep.Cluster","text":"Calorimeter Hit Cluster\n\nAuthor: F.Gaede, DESY\n\nFields\n\ntype::Int32: flagword that defines the type of cluster. Bits 16-31 are used internally.\nenergy::Float32: energy of the cluster [GeV]\nenergyError::Float32: error on the energy\nposition::Vector3f: position of the cluster [mm]\npositionError::SVector{6,Float32}: covariance matrix of the position (6 Parameters)\niTheta::Float32: intrinsic direction of cluster at position Theta. Not to be confused with direction cluster is seen from IP.\nphi::Float32: intrinsic direction of cluster at position - Phi. Not to be confused with direction cluster is seen from IP.\ndirectionError::Vector3f: covariance matrix of the direction (3 Parameters) [mm^2]\nshapeParameters::PVector{Float32}: shape parameters - check/set collection parameter ClusterShapeParameters for size and names of parameters.\nsubdetectorEnergies::PVector{Float32}: energy observed in a particular subdetector. Check/set collection parameter ClusterSubdetectorNames for decoding the indices of the array.\n\nRelations\n\nclusters::Cluster: clusters that have been combined to this cluster.\nhits::CalorimeterHit: hits that have been combined to this cluster.\nparticleIDs::ParticleID: particle IDs (sorted by their likelihood)\n\nMethods\n\nsetShapeParameters(object::Cluster, v::AbstractVector{Float32}): assign a set of values to the shapeParameters vector member\nsetSubdetectorEnergies(object::Cluster, v::AbstractVector{Float32}): assign a set of values to the subdetectorEnergies vector member\npushToClusters(obj::Cluster, robj::Cluster): push related object to the clusters relation\npopFromClusters(obj::Cluster): pop last related object from clusters relation\npushToHits(obj::Cluster, robj::CalorimeterHit): push related object to the hits relation\npopFromHits(obj::Cluster): pop last related object from hits relation\npushToParticleIDs(obj::Cluster, robj::ParticleID): push related object to the particleIDs relation\npopFromParticleIDs(obj::Cluster): pop last related object from particleIDs relation\n\n\n\n\n\n","category":"type"},{"location":"api/#EDM4hep.EventHeader","page":"Public APIs","title":"EDM4hep.EventHeader","text":"Event Header. Additional parameters are assumed to go into the metadata tree.\n\nAuthor: F.Gaede\n\nFields\n\neventNumber::Int32: event number\nrunNumber::Int32: run number\ntimeStamp::UInt64: time stamp\nweight::Float32: event weight\n\n\n\n\n\n","category":"type"},{"location":"api/#EDM4hep.HitLevelData","page":"Public APIs","title":"EDM4hep.HitLevelData","text":"HitLevelData\n\nFields\n\ncellID::UInt64: cell id\nN::UInt32: number of reconstructed ionization cluster.\neDep::Float32: reconstructed energy deposit [GeV].\npathLength::Float32: track path length [mm].\n\n\n\n\n\n","category":"type"},{"location":"api/#EDM4hep.Hypothesis","page":"Public APIs","title":"EDM4hep.Hypothesis","text":"Hypothesis\n\nFields\n\nchi2::Float32: chi2\nexpected::Float32: expected value\nsigma::Float32: sigma value\n\n\n\n\n\n","category":"type"},{"location":"api/#EDM4hep.MCParticle","page":"Public APIs","title":"EDM4hep.MCParticle","text":"The Monte Carlo particle - based on the lcio::MCParticle.\n\nAuthor: F.Gaede, DESY\n\nFields\n\nPDG::Int32: PDG code of the particle\ngeneratorStatus::Int32: status of the particle as defined by the generator\nsimulatorStatus::Int32: status of the particle from the simulation program - use BIT constants below\ncharge::Float32: particle charge\ntime::Float32: creation time of the particle in [ns] wrt. the event, e.g. for preassigned decays or decays in flight from the simulator.\nmass::Float64: mass of the particle in [GeV]\nvertex::Vector3d: production vertex of the particle in [mm].\nendpoint::Vector3d: endpoint of the particle in [mm]\nmomentum::Vector3d: particle 3-momentum at the production vertex in [GeV]\nmomentumAtEndpoint::Vector3d: particle 3-momentum at the endpoint in [GeV]\nspin::Vector3f: spin (helicity) vector of the particle.\ncolorFlow::Vector2i: color flow as defined by the generator\n\nRelations\n\nparents::MCParticle: The parents of this particle.\ndaughters::MCParticle: The daughters this particle.\n\nMethods\n\npushToParents(obj::MCParticle, robj::MCParticle): push related object to the parents relation\npopFromParents(obj::MCParticle): pop last related object from parents relation\npushToDaughters(obj::MCParticle, robj::MCParticle): push related object to the daughters relation\npopFromDaughters(obj::MCParticle): pop last related object from daughters relation\n\n\n\n\n\n","category":"type"},{"location":"api/#EDM4hep.MCRecoCaloAssociation","page":"Public APIs","title":"EDM4hep.MCRecoCaloAssociation","text":"Association between a CaloHit and the corresponding simulated CaloHit\n\nAuthor: C. Bernet, B. Hegner\n\nFields\n\nweight::Float32: weight of this association\n\nRelations\n\nrec::CalorimeterHit: reference to the reconstructed hit\nsim::SimCalorimeterHit: reference to the simulated hit\n\n\n\n\n\n","category":"type"},{"location":"api/#EDM4hep.MCRecoCaloParticleAssociation","page":"Public APIs","title":"EDM4hep.MCRecoCaloParticleAssociation","text":"Association between a CalorimeterHit and a MCParticle\n\nAuthor: Placido Fernandez Declara\n\nFields\n\nweight::Float32: weight of this association\n\nRelations\n\nrec::CalorimeterHit: reference to the reconstructed hit\nsim::MCParticle: reference to the Monte-Carlo particle\n\n\n\n\n\n","category":"type"},{"location":"api/#EDM4hep.MCRecoClusterParticleAssociation","page":"Public APIs","title":"EDM4hep.MCRecoClusterParticleAssociation","text":"Association between a Cluster and a MCParticle\n\nAuthor: Placido Fernandez Declara\n\nFields\n\nweight::Float32: weight of this association\n\nRelations\n\nrec::Cluster: reference to the cluster\nsim::MCParticle: reference to the Monte-Carlo particle\n\n\n\n\n\n","category":"type"},{"location":"api/#EDM4hep.MCRecoParticleAssociation","page":"Public APIs","title":"EDM4hep.MCRecoParticleAssociation","text":"Used to keep track of the correspondence between MC and reconstructed particles\n\nAuthor: C. Bernet, B. Hegner\n\nFields\n\nweight::Float32: weight of this association\n\nRelations\n\nrec::ReconstructedParticle: reference to the reconstructed particle\nsim::MCParticle: reference to the Monte-Carlo particle\n\n\n\n\n\n","category":"type"},{"location":"api/#EDM4hep.MCRecoTrackParticleAssociation","page":"Public APIs","title":"EDM4hep.MCRecoTrackParticleAssociation","text":"Association between a Track and a MCParticle\n\nAuthor: Placido Fernandez Declara\n\nFields\n\nweight::Float32: weight of this association\n\nRelations\n\nrec::Track: reference to the track\nsim::MCParticle: reference to the Monte-Carlo particle\n\n\n\n\n\n","category":"type"},{"location":"api/#EDM4hep.MCRecoTrackerAssociation","page":"Public APIs","title":"EDM4hep.MCRecoTrackerAssociation","text":"Association between a TrackerHit and the corresponding simulated TrackerHit\n\nAuthor: C. Bernet, B. Hegner\n\nFields\n\nweight::Float32: weight of this association\n\nRelations\n\nrec::TrackerHit: reference to the reconstructed hit\nsim::SimTrackerHit: reference to the simulated hit\n\n\n\n\n\n","category":"type"},{"location":"api/#EDM4hep.MCRecoTrackerHitPlaneAssociation","page":"Public APIs","title":"EDM4hep.MCRecoTrackerHitPlaneAssociation","text":"Association between a TrackerHitPlane and the corresponding simulated TrackerHit\n\nAuthor: Placido Fernandez Declara\n\nFields\n\nweight::Float32: weight of this association\n\nRelations\n\nrec::TrackerHitPlane: reference to the reconstructed hit\nsim::SimTrackerHit: reference to the simulated hit\n\n\n\n\n\n","category":"type"},{"location":"api/#EDM4hep.ParticleID","page":"Public APIs","title":"EDM4hep.ParticleID","text":"ParticleID\n\nAuthor: F.Gaede, DESY\n\nFields\n\ntype::Int32: userdefined type\nPDG::Int32: PDG code of this id - ( 999999 ) if unknown.\nalgorithmType::Int32: type of the algorithm/module that created this hypothesis\nlikelihood::Float32: likelihood of this hypothesis - in a user defined normalization.\nparameters::PVector{Float32}: parameters associated with this hypothesis. Check/set collection parameters ParameterNames_PIDAlgorithmTypeName for decoding the indices.\n\nMethods\n\nsetParameters(object::ParticleID, v::AbstractVector{Float32}): assign a set of values to the parameters vector member\n\n\n\n\n\n","category":"type"},{"location":"api/#EDM4hep.Quantity","page":"Public APIs","title":"EDM4hep.Quantity","text":"Quantity\n\nFields\n\ntype::Int16: flag identifying how to interpret the quantity\nvalue::Float32: value of the quantity\nerror::Float32: error on the value of the quantity\n\n\n\n\n\n","category":"type"},{"location":"api/#EDM4hep.RawCalorimeterHit","page":"Public APIs","title":"EDM4hep.RawCalorimeterHit","text":"Raw calorimeter hit\n\nAuthor: F.Gaede, DESY\n\nFields\n\ncellID::UInt64: detector specific (geometrical) cell id.\namplitude::Int32: amplitude of the hit in ADC counts.\ntimeStamp::Int32: time stamp for the hit.\n\n\n\n\n\n","category":"type"},{"location":"api/#EDM4hep.RawTimeSeries","page":"Public APIs","title":"EDM4hep.RawTimeSeries","text":"Raw data of a detector readout\n\nAuthor: F.Gaede, DESY\n\nFields\n\ncellID::UInt64: detector specific cell id.\nquality::Int32: quality flag for the hit.\ntime::Float32: time of the hit [ns].\ncharge::Float32: integrated charge of the hit [fC].\ninterval::Float32: interval of each sampling [ns].\nadcCounts::PVector{Int32}: raw data (32-bit) word at i.\n\nMethods\n\nsetAdcCounts(object::RawTimeSeries, v::AbstractVector{Int32}): assign a set of values to the adcCounts vector member\n\n\n\n\n\n","category":"type"},{"location":"api/#EDM4hep.RecDqdx","page":"Public APIs","title":"EDM4hep.RecDqdx","text":"dN/dx or dE/dx info of Track.\n\nAuthor: Wenxing Fang, IHEP\n\nFields\n\ndQdx::Quantity: the reconstructed dEdx or dNdx and its error\nparticleType::Int16: particle type, e(0),mu(1),pi(2),K(3),p(4).\ntype::Int16: type.\nhypotheses::SVector{5,Hypothesis}: 5 particle hypothesis\nhitData::PVector{HitLevelData}: hit level data\n\nRelations\n\ntrack::Track: the corresponding track.\n\nMethods\n\nsetHitData(object::RecDqdx, v::AbstractVector{HitLevelData}): assign a set of values to the hitData vector member\n\n\n\n\n\n","category":"type"},{"location":"api/#EDM4hep.RecIonizationCluster","page":"Public APIs","title":"EDM4hep.RecIonizationCluster","text":"Reconstructed Ionization Cluster\n\nAuthor: Wenxing Fang, IHEP\n\nFields\n\ncellID::UInt64: cell id.\nsignificance::Float32: significance.\ntype::Int16: type.\n\nRelations\n\ntrackerPulse::TrackerPulse: the TrackerPulse used to create the ionization cluster.\n\nMethods\n\npushToTrackerPulse(obj::RecIonizationCluster, robj::TrackerPulse): push related object to the trackerPulse relation\npopFromTrackerPulse(obj::RecIonizationCluster): pop last related object from trackerPulse relation\n\n\n\n\n\n","category":"type"},{"location":"api/#EDM4hep.RecoParticleVertexAssociation","page":"Public APIs","title":"EDM4hep.RecoParticleVertexAssociation","text":"Association between a Reconstructed Particle and a Vertex\n\nAuthor: Placido Fernandez Declara\n\nFields\n\nweight::Float32: weight of this association\n\nRelations\n\nrec::ReconstructedParticle: reference to the reconstructed particle\nvertex::Vertex: reference to the vertex\n\n\n\n\n\n","category":"type"},{"location":"api/#EDM4hep.ReconstructedParticle","page":"Public APIs","title":"EDM4hep.ReconstructedParticle","text":"Reconstructed Particle\n\nAuthor: F.Gaede, DESY\n\nFields\n\ntype::Int32: type of reconstructed particle. Check/set collection parameters ReconstructedParticleTypeNames and ReconstructedParticleTypeValues.\nenergy::Float32: [GeV] energy of the reconstructed particle. Four momentum state is not kept consistent internally.\nmomentum::Vector3f: [GeV] particle momentum. Four momentum state is not kept consistent internally.\nreferencePoint::Vector3f: [mm] reference, i.e. where the particle has been measured\ncharge::Float32: charge of the reconstructed particle.\nmass::Float32: [GeV] mass of the reconstructed particle, set independently from four vector. Four momentum state is not kept consistent internally.\ngoodnessOfPID::Float32: overall goodness of the PID on a scale of [0;1]\ncovMatrix::SVector{10,Float32}: cvariance matrix of the reconstructed particle 4vector (10 parameters). Stored as lower triangle matrix of the four momentum (px,py,pz,E), i.e. cov(px,px), cov(py,##\n\nRelations\n\nstartVertex::Vertex: start vertex associated to this particle\nparticleIDUsed::ParticleID: particle Id used for the kinematics of this particle\nclusters::Cluster: clusters that have been used for this particle.\ntracks::Track: tracks that have been used for this particle.\nparticles::ReconstructedParticle: reconstructed particles that have been combined to this particle.\nparticleIDs::ParticleID: particle Ids (not sorted by their likelihood)\n\nMethods\n\npushToClusters(obj::ReconstructedParticle, robj::Cluster): push related object to the clusters relation\npopFromClusters(obj::ReconstructedParticle): pop last related object from clusters relation\npushToTracks(obj::ReconstructedParticle, robj::Track): push related object to the tracks relation\npopFromTracks(obj::ReconstructedParticle): pop last related object from tracks relation\npushToParticles(obj::ReconstructedParticle, robj::ReconstructedParticle): push related object to the particles relation\npopFromParticles(obj::ReconstructedParticle): pop last related object from particles relation\npushToParticleIDs(obj::ReconstructedParticle, robj::ParticleID): push related object to the particleIDs relation\npopFromParticleIDs(obj::ReconstructedParticle): pop last related object from particleIDs relation\n\n\n\n\n\n","category":"type"},{"location":"api/#EDM4hep.SimCalorimeterHit","page":"Public APIs","title":"EDM4hep.SimCalorimeterHit","text":"Simulated calorimeter hit\n\nAuthor: F.Gaede, DESY\n\nFields\n\ncellID::UInt64: ID of the sensor that created this hit\nenergy::Float32: energy of the hit in [GeV].\nposition::Vector3f: position of the hit in world coordinates in [mm].\n\nRelations\n\ncontributions::CaloHitContribution: Monte Carlo step contribution - parallel to particle\n\nMethods\n\npushToContributions(obj::SimCalorimeterHit, robj::CaloHitContribution): push related object to the contributions relation\npopFromContributions(obj::SimCalorimeterHit): pop last related object from contributions relation\n\n\n\n\n\n","category":"type"},{"location":"api/#EDM4hep.SimPrimaryIonizationCluster","page":"Public APIs","title":"EDM4hep.SimPrimaryIonizationCluster","text":"Simulated Primary Ionization\n\nAuthor: Wenxing Fang, IHEP\n\nFields\n\ncellID::UInt64: cell id.\ntime::Float32: the primary ionization's time in the lab frame [ns].\nposition::Vector3d: the primary ionization's position [mm].\ntype::Int16: type.\nelectronCellID::PVector{UInt64}: cell id.\nelectronTime::PVector{Float32}: the time in the lab frame [ns].\nelectronPosition::PVector{Vector3d}: the position in the lab frame [mm].\npulseTime::PVector{Float32}: the pulse's time in the lab frame [ns].\npulseAmplitude::PVector{Float32}: the pulse's amplitude [fC].\n\nRelations\n\nmcparticle::MCParticle: the particle that caused the ionizing collisions.\n\nMethods\n\nsetElectronCellID(object::SimPrimaryIonizationCluster, v::AbstractVector{UInt64}): assign a set of values to the electronCellID vector member\nsetElectronTime(object::SimPrimaryIonizationCluster, v::AbstractVector{Float32}): assign a set of values to the electronTime vector member\nsetElectronPosition(object::SimPrimaryIonizationCluster, v::AbstractVector{Vector3d}): assign a set of values to the electronPosition vector member\nsetPulseTime(object::SimPrimaryIonizationCluster, v::AbstractVector{Float32}): assign a set of values to the pulseTime vector member\nsetPulseAmplitude(object::SimPrimaryIonizationCluster, v::AbstractVector{Float32}): assign a set of values to the pulseAmplitude vector member\n\n\n\n\n\n","category":"type"},{"location":"api/#EDM4hep.SimTrackerHit","page":"Public APIs","title":"EDM4hep.SimTrackerHit","text":"Simulated tracker hit\n\nAuthor: F.Gaede, DESY\n\nFields\n\ncellID::UInt64: ID of the sensor that created this hit\nEDep::Float32: energy deposited in the hit [GeV].\ntime::Float32: proper time of the hit in the lab frame in [ns].\npathLength::Float32: path length of the particle in the sensitive material that resulted in this hit.\nquality::Int32: quality bit flag.\nposition::Vector3d: the hit position in [mm].\nmomentum::Vector3f: the 3-momentum of the particle at the hits position in [GeV]\n\nRelations\n\nmcparticle::MCParticle: MCParticle that caused the hit.\n\n\n\n\n\n","category":"type"},{"location":"api/#EDM4hep.TimeSeries","page":"Public APIs","title":"EDM4hep.TimeSeries","text":"Calibrated Detector Data\n\nAuthor: Wenxing Fang, IHEP\n\nFields\n\ncellID::UInt64: cell id.\ntime::Float32: begin time [ns].\ninterval::Float32: interval of each sampling [ns].\namplitude::PVector{Float32}: calibrated detector data.\n\nMethods\n\nsetAmplitude(object::TimeSeries, v::AbstractVector{Float32}): assign a set of values to the amplitude vector member\n\n\n\n\n\n","category":"type"},{"location":"api/#EDM4hep.Track","page":"Public APIs","title":"EDM4hep.Track","text":"Reconstructed track\n\nAuthor: F.Gaede, DESY\n\nFields\n\ntype::Int32: flagword that defines the type of track.Bits 16-31 are used internally\nchi2::Float32: Chi^2 of the track fit\nndf::Int32: number of degrees of freedom of the track fit\ndEdx::Float32: dEdx of the track.\ndEdxError::Float32: error of dEdx.\nradiusOfInnermostHit::Float32: radius of the innermost hit that has been used in the track fit\nsubdetectorHitNumbers::PVector{Int32}: number of hits in particular subdetectors.Check/set collection variable TrackSubdetectorNames for decoding the indices\ntrackStates::PVector{TrackState}: track states\ndxQuantities::PVector{Quantity}: different measurements of dx quantities\n\nRelations\n\ntrackerHits::TrackerHit: hits that have been used to create this track\ntracks::Track: tracks (segments) that have been combined to create this track\n\nMethods\n\nsetSubdetectorHitNumbers(object::Track, v::AbstractVector{Int32}): assign a set of values to the subdetectorHitNumbers vector member\nsetTrackStates(object::Track, v::AbstractVector{TrackState}): assign a set of values to the trackStates vector member\nsetDxQuantities(object::Track, v::AbstractVector{Quantity}): assign a set of values to the dxQuantities vector member\npushToTrackerHits(obj::Track, robj::TrackerHit): push related object to the trackerHits relation\npopFromTrackerHits(obj::Track): pop last related object from trackerHits relation\npushToTracks(obj::Track, robj::Track): push related object to the tracks relation\npopFromTracks(obj::Track): pop last related object from tracks relation\n\n\n\n\n\n","category":"type"},{"location":"api/#EDM4hep.TrackState","page":"Public APIs","title":"EDM4hep.TrackState","text":"TrackState\n\nFields\n\nlocation::Int32: for use with At{Other|IP|FirstHit|LastHit|Calorimeter|Vertex}|LastLocation\nD0::Float32: transverse impact parameter\nphi::Float32: azimuthal angle\nomega::Float32: is the signed curvature of the track in [1/mm].\nZ0::Float32: longitudinal impact parameter\ntanLambda::Float32: lambda is the dip angle of the track in r-z\ntime::Float32: time of the track at this trackstate\nreferencePoint::Vector3f: Reference point of the track parameters, e.g. the origin at the IP, or the position of the first/last hits or the entry point into the calorimeter. [mm]\ncovMatrix::SVector{21,Float32}: lower triangular covariance matrix of the track parameters. the order of parameters is d0, phi, omega, z0, tan(lambda), time. the array is a row-major flattening of the matrix.\n\n\n\n\n\n","category":"type"},{"location":"api/#EDM4hep.TrackerHit","page":"Public APIs","title":"EDM4hep.TrackerHit","text":"Tracker hit\n\nAuthor: F.Gaede, DESY\n\nFields\n\ncellID::UInt64: ID of the sensor that created this hit\ntype::Int32: type of raw data hit, either one of edm4hep::RawTimeSeries, edm4hep::SIMTRACKERHIT - see collection parameters \"TrackerHitTypeNames\" and \"TrackerHitTypeValues\".\nquality::Int32: quality bit flag of the hit.\ntime::Float32: time of the hit [ns].\neDep::Float32: energy deposited on the hit [GeV].\neDepError::Float32: error measured on EDep [GeV].\nposition::Vector3d: hit position in [mm].\ncovMatrix::SVector{6,Float32}: covariance of the position (x,y,z), stored as lower triangle matrix. i.e. cov(x,x) , cov(y,x) , cov(y,y) , cov(z,x) , cov(z,y) , cov(z,z)\nrawHits::PVector{ObjectID}: raw data hits. Check getType to get actual data type.\n\nMethods\n\nsetRawHits(object::TrackerHit, v::AbstractVector{ObjectID}): assign a set of values to the rawHits vector member\n\n\n\n\n\n","category":"type"},{"location":"api/#EDM4hep.TrackerHitPlane","page":"Public APIs","title":"EDM4hep.TrackerHitPlane","text":"Tracker hit plane\n\nAuthor: Placido Fernandez Declara, CERN\n\nFields\n\ncellID::UInt64: ID of the sensor that created this hit\ntype::Int32: type of raw data hit, either one of edm4hep::RawTimeSeries, edm4hep::SIMTRACKERHIT - see collection parameters \"TrackerHitTypeNames\" and \"TrackerHitTypeValues\".\nquality::Int32: quality bit flag of the hit.\ntime::Float32: time of the hit [ns].\neDep::Float32: energy deposited on the hit [GeV].\neDepError::Float32: error measured on EDep [GeV].\nu::Vector2f: measurement direction vector, u lies in the x-y plane\nv::Vector2f: measurement direction vector, v is along z\ndu::Float32: measurement error along the direction\ndv::Float32: measurement error along the direction\nposition::Vector3d: hit position in [mm].\ncovMatrix::SVector{6,Float32}: covariance of the position (x,y,z), stored as lower triangle matrix. i.e. cov(x,x) , cov(y,x) , cov(y,y) , cov(z,x) , cov(z,y) , cov(z,z)\nrawHits::PVector{ObjectID}: raw data hits. Check getType to get actual data type.\n\nMethods\n\nsetRawHits(object::TrackerHitPlane, v::AbstractVector{ObjectID}): assign a set of values to the rawHits vector member\n\n\n\n\n\n","category":"type"},{"location":"api/#EDM4hep.TrackerPulse","page":"Public APIs","title":"EDM4hep.TrackerPulse","text":"Reconstructed Tracker Pulse\n\nAuthor: Wenxing Fang, IHEP\n\nFields\n\ncellID::UInt64: cell id.\ntime::Float32: time [ns].\ncharge::Float32: charge [fC].\nquality::Int16: quality.\ncovMatrix::SVector{3,Float32}: lower triangle covariance matrix of the charge(c) and time(t) measurements.\n\nRelations\n\ntimeSeries::TimeSeries: Optionally, the timeSeries that has been used to create the pulse can be stored with the pulse.\n\n\n\n\n\n","category":"type"},{"location":"api/#EDM4hep.Vector2f","page":"Public APIs","title":"EDM4hep.Vector2f","text":"Vector2f\n\nFields\n\na::Float32: \nb::Float32: \n\n\n\n\n\n","category":"type"},{"location":"api/#EDM4hep.Vector2i","page":"Public APIs","title":"EDM4hep.Vector2i","text":"Vector2i\n\nFields\n\na::Int32: \nb::Int32: \n\n\n\n\n\n","category":"type"},{"location":"api/#EDM4hep.Vector3d","page":"Public APIs","title":"EDM4hep.Vector3d","text":"Vector3d\n\nFields\n\nx::Float64: \ny::Float64: \nz::Float64: \n\n\n\n\n\n","category":"type"},{"location":"api/#EDM4hep.Vector3f","page":"Public APIs","title":"EDM4hep.Vector3f","text":"Vector3f\n\nFields\n\nx::Float32: \ny::Float32: \nz::Float32: \n\n\n\n\n\n","category":"type"},{"location":"api/#EDM4hep.Vector4f","page":"Public APIs","title":"EDM4hep.Vector4f","text":"Generic vector for storing classical 4D coordinates in memory. Four momentum helper functions are in edm4hep::utils\n\nFields\n\nx::Float32: \ny::Float32: \nz::Float32: \nt::Float32: \n\n\n\n\n\n","category":"type"},{"location":"api/#EDM4hep.Vertex","page":"Public APIs","title":"EDM4hep.Vertex","text":"Vertex\n\nAuthor: F.Gaede, DESY\n\nFields\n\nprimary::Int32: boolean flag, if vertex is the primary vertex of the event\nchi2::Float32: chi-squared of the vertex fit\nprobability::Float32: probability of the vertex fit\nposition::Vector3f: [mm] position of the vertex.\ncovMatrix::SVector{6,Float32}: covariance matrix of the position (stored as lower triangle matrix, i.e. cov(xx),cov(y,x),cov(z,x),cov(y,y),... )\nalgorithmType::Int32: type code for the algorithm that has been used to create the vertex - check/set the collection parameters AlgorithmName and AlgorithmType.\nparameters::PVector{Float32}: additional parameters related to this vertex - check/set the collection parameter \"VertexParameterNames\" for the parameters meaning.\n\nRelations\n\nassociatedParticle::POD: reconstructed particle associated to this vertex.\n\nMethods\n\nsetParameters(object::Vertex, v::AbstractVector{Float32}): assign a set of values to the parameters vector member\n\n\n\n\n\n","category":"type"},{"location":"api/#EDM4hep.RootIO.Reader","page":"Public APIs","title":"EDM4hep.RootIO.Reader","text":"The Reader structure keeps a reference to the UnROOT LazyTree and caches already built 'layouts' of the EDM4hep types. The layouts maps a set of columns in the LazyTree into an object.\n\n\n\n\n\n","category":"type"},{"location":"api/#EDM4hep.Histograms.H1D","page":"Public APIs","title":"EDM4hep.Histograms.H1D","text":"H1D(title::String, nbins::Int, min::Float, max::Float, unit::Symbol) Create a 1-dimensional histogram carrying the title and units.\n\n\n\n\n\n","category":"type"},{"location":"api/#EDM4hep.Histograms.H2D","page":"Public APIs","title":"EDM4hep.Histograms.H2D","text":"H2D(title::String, xbins::Int, xmin::Float, xmax::Float, ybins::Int, ymin::Float, ymax::Float, unit::Tuple{Symbol,Symbol}) Create a 2-dimensional histogram carrying the title and units.\n\n\n\n\n\n","category":"type"},{"location":"api/#EDM4hep.Histograms.H3D","page":"Public APIs","title":"EDM4hep.Histograms.H3D","text":"H3D(title::String, xbins::Int, xmin::Float, xmax::Float, ybins::Int, ymin::Float, ymax::Float, zbins::Int, zmin::Float, zmax::Float, unit::Tuple{Symbol,Symbol,Symbol}) Create a 2-dimensional histogram carrying the title and units.\n\n\n\n\n\n","category":"type"},{"location":"api/#Functions","page":"Public APIs","title":"Functions","text":"","category":"section"},{"location":"api/","page":"Public APIs","title":"Public APIs","text":"Modules = [EDM4hep, EDM4hep.RootIO, EDM4hep.Histograms, EDM4hep.Analysis]\nOrder = [:function]","category":"page"},{"location":"api/#EDM4hep.emptyEDStore-Tuple{}","page":"Public APIs","title":"EDM4hep.emptyEDStore","text":"emptyEDStore()\n\nEmpty the whole store.\n\n\n\n\n\n","category":"method"},{"location":"api/#EDM4hep.getEDStore-Union{Tuple{Type{ED}}, Tuple{ED}, Tuple{Type{ED}, UInt32}} where ED","page":"Public APIs","title":"EDM4hep.getEDStore","text":"getEDStore(::Type{ED}, collid::UInt32=0x00000000)\n\nGet the store corresponding to the collid. If it is not specified then obtain a collid from the data type ED.\n\n\n\n\n\n","category":"method"},{"location":"api/#EDM4hep.hasEDStore-Tuple{UInt32}","page":"Public APIs","title":"EDM4hep.hasEDStore","text":"hasEDStore(collid::UInt32)\n\nFind out if the store with collid is there.\n\n\n\n\n\n","category":"method"},{"location":"api/#EDM4hep.initEDStore-Union{Tuple{Type{ED}}, Tuple{ED}} where ED","page":"Public APIs","title":"EDM4hep.initEDStore","text":"initEDStore(::Type{ED}) where ED\n\nInitialize the store corresponding to type ED.\n\n\n\n\n\n","category":"method"},{"location":"api/#EDM4hep.RootIO.create_getter-Tuple{EDM4hep.RootIO.Reader, String}","page":"Public APIs","title":"EDM4hep.RootIO.create_getter","text":"create_getter(reader::Reader, bname::String; selection=nothing)\n\nThis function creates a getter function for a given branch name. The getter function is a function that takes an event and returns a StructArray with the data of the branch. The getter function is created as a function with the name get_. The optional parameter selection is a list of field names to be selected from the branch. If selection is not provided, all fields are selected. The user can use a list of strings, symbols or regular expressions to select the fields.\n\n\n\n\n\n","category":"method"},{"location":"api/#EDM4hep.RootIO.get-Tuple{EDM4hep.RootIO.Reader, String}","page":"Public APIs","title":"EDM4hep.RootIO.get","text":"get(reader::Reader, treename::String)\n\nOpens a 'TTree' or 'RNTuple' in the ROOT file (typically the events tree). It returns a 'LazyTree' that allows the user to iterate over events. \n\n\n\n\n\n","category":"method"},{"location":"api/#EDM4hep.RootIO.get-Tuple{EDM4hep.RootIO.Reader, UnROOT.LazyEvent, String}","page":"Public APIs","title":"EDM4hep.RootIO.get","text":"get(reader::Reader, evt::UnROOT.LazyEvent, bname::String; btype::Type=Any, register=true)\n\nGets an object collection by its name, with the possibility to overwrite the mapping Julia type or use the type known in the ROOT file (C++ class name). The optional key parameter register indicates if the collection needs to be registered to the EDStore.\n\n\n\n\n\n","category":"method"},{"location":"api/#Base.append!-Tuple{EDM4hep.Analysis.AbstractAnalysisData, EDM4hep.Analysis.AbstractAnalysisData}","page":"Public APIs","title":"Base.append!","text":"Base.append!(d1::AbstractAnalysisData, d2::AbstractAnalysisData)\n\nDefault function to reset the user analysis data structure in case it is not provided explicitly.\n\n\n\n\n\n","category":"method"},{"location":"api/#Base.empty!-Tuple{EDM4hep.Analysis.AbstractAnalysisData}","page":"Public APIs","title":"Base.empty!","text":"Base.empty!(data::AbstractAnalysisData)\n\nDefault function to reset the user analysis data structure in case it is not provided explicitly.\n\n\n\n\n\n","category":"method"},{"location":"api/#EDM4hep.Analysis.do_analysis!-Tuple{EDM4hep.Analysis.AbstractAnalysisData, Any, Any, Any}","page":"Public APIs","title":"EDM4hep.Analysis.do_analysis!","text":"doanalysis!(data::AbstractAnalysisData, analysis, reader, events; mt::Bool=false, tasksper_thread::Int=4)\n\nPerform an analysis on all events by executing the analysis function. The iteration will be chunked and distributed to different tasks running on different threads if the option argument mt is set to true. The results in data for all the chunks will be merged at the end of the analysis. \n\n\n\n\n\n","category":"method"},{"location":"#EDM4hep-in-Julia","page":"Introduction","title":"EDM4hep in Julia","text":"","category":"section"},{"location":"","page":"Introduction","title":"Introduction","text":"Prototype of the EDM4hep (generic Event Data Model for HEP experiments part of Key4hep) for Julia with the goal to have very simple structures (isbits) with the purpose to evaluate its ergonomic design and implementation performance.","category":"page"},{"location":"#PODIO-generation","page":"Introduction","title":"PODIO generation","text":"","category":"section"},{"location":"","page":"Introduction","title":"Introduction","text":"The Julia POD structs should be generated from the edm4hep.yaml yaml file using PODIO scripts.","category":"page"},{"location":"","page":"Introduction","title":"Introduction","text":"For the time being, for this evaluation, the Julia structs are generated by a local Julia script in ./podio/generate.jl. The files genComponents/jl and genDatatypes.jl are fully generated. ","category":"page"},{"location":"#Main-design-features","page":"Introduction","title":"Main design features","text":"","category":"section"},{"location":"","page":"Introduction","title":"Introduction","text":"All EDM4hep entities are immutable structs and containing basic types and structs. Including the relationships (one-to-one and one-to-many) and vector members. Objects attributes cannot be changed. This makes the objects with the isbits(obj) == true.\nObjects are created by default not being registered, they are free floating. The user can register them with register(obj).\nNote that operations like register, setting relationships (add_daughter,...), etc. will automatically create a new instance. The typical pattern is to overwrite the user variable with the new instance, e.g.:\np1 = MCParticle(...)\np1 = register(p1)\np1, d1 = add_daughter(p1, MCParticle(...))\nThe main goal for reading EDM4hep containers from a ROOT file is to obtain as result a StructArray(see StructArrays.jl documentation). This provides a very efficient access by column and the same time provide a convenient views as object instances. For example if you want to sum the momentum of a range of MCParticles the user should be able to write:\njulia> mcparticles = get(reader,...)\njulia> mcparticles[5:8].momentum\n4-element StructArray(::Vector{Float32}, ::Vector{Float32}, ::Vector{Float32}) with eltype Vector3f:\n (0.8740664,-0.002116337,124.84335)\n (0.8602309,-0.056633994,-124.632545)\n (-0.00012483617,0.0021162117,0.0026654897)\n (0.014539731,0.05663412,-0.32755017)\n\njulia> sum(mcparticles[5:8].momentum)\n (1.7487122,0.0,-0.11407688)","category":"page"},{"location":"#Roadmap","page":"Introduction","title":"Roadmap","text":"","category":"section"},{"location":"","page":"Introduction","title":"Introduction","text":"There are a number of issues and problems still to be resolved. We keep track of them in this list:","category":"page"},{"location":"","page":"Introduction","title":"Introduction","text":"Need to generate and support VectorMembers. For the time being are ignored. - DONE\nHandle cyclic datatype dependencies. In EDM4hep there is one case that is not yet resolved. Vertex depends on ReconstructedParticle in a one-to-one relation and ReconstructedParticle relates to Vertex. Using the abstract class POD in this case works well to break the cycle. - DONE \nBetter handle collectionID in one-to-many relations - DONE\nBe able to read RNTuple files in addition to TTree files - DONE\nGenerate doc string with member information - DONE\nGenerate accessors for one-to-many relations, vector members - DONE \nSupport latest version (RC2) of RNTuple format - DONE\nSupport for multi-threading (i.e. be able to add @threads in the event loop) - DONE","category":"page"},{"location":"#Tests","page":"Introduction","title":"Tests","text":"","category":"section"},{"location":"","page":"Introduction","title":"Introduction","text":"Unit tests can be run with julia --project=. test/runtests.jl","category":"page"},{"location":"#Examples","page":"Introduction","title":"Examples","text":"","category":"section"},{"location":"#examples/mcparticle_tree.jl","page":"Introduction","title":"examples/mcparticle_tree.jl","text":"","category":"section"},{"location":"","page":"Introduction","title":"Introduction","text":"Creates a collection of MCParticles and a collection of SimTrackerHits in memory, constructing the relations between particle parents and daughters, as well as, the one-to-one relation between each simulation hit and its originating MCParticle.","category":"page"},{"location":"#examples/read_example.jl","page":"Introduction","title":"examples/read_example.jl","text":"","category":"section"},{"location":"","page":"Introduction","title":"Introduction","text":"An example of reading from a ROOT file created by the C++ implementation of EDM4hep. This is the full code:","category":"page"},{"location":"","page":"Introduction","title":"Introduction","text":"using EDM4hep\nusing EDM4hep.RootIO\n\ncd(@__DIR__)\nf = \"ttbar_edm4hep_digi.root\"\n\nreader = RootIO.Reader(f)\nevents = RootIO.get(reader, \"events\")\n\nevt = events[1];\n\nhits = RootIO.get(reader, evt, \"InnerTrackerBarrelCollection\")\nmcps = RootIO.get(reader, evt, \"MCParticle\")\n\nfor hit in hits\n println(\"Hit $(hit.index) is related to MCParticle $(hit.mcparticle.index) with name $(hit.mcparticle.name)\")\nend\n\nfor p in mcps\n println(\"MCParticle $(p.index) $(p.name) with momentum $(p.momentum) and energy $(p.energy) has $(length(p.daughters)) daughters\")\n for d in p.daughters\n println(\" ---> $(d.index) $(d.name) and momentum $(d.momentum) has $(length(d.parents)) parents\")\n for m in d.parents\n println(\" ---> $(m.index) $(m.name)\")\n end \n end\nend","category":"page"},{"location":"#examples/FCC/analysis_mH-recoil.jl","page":"Introduction","title":"examples/FCC/analysis_mH-recoil.jl","text":"","category":"section"},{"location":"","page":"Introduction","title":"Introduction","text":"This is basically the example higgs/mH-recoil/mumu from FCCAnalyses. It shows in a realistic manner how to develop analysis functions using the Data Types from EDM4hep to created high-level analysis functions. The Jupyter notebook analysis_mH-recoil.ipynb shows the same example in form of a notebook. ","category":"page"},{"location":"#examples/FCC/analysis_MT.jl","page":"Introduction","title":"examples/FCC/analysis_MT.jl","text":"","category":"section"},{"location":"","page":"Introduction","title":"Introduction","text":"This is basically the example higgs/mH-recoil/mumu from FCCAnalyses in a multi-threaded mode. The Jupyter notebook analysis_mH-recoil.ipynb shows the same example in form of a notebook. ","category":"page"},{"location":"#EDM4hep-Data-Model","page":"Introduction","title":"EDM4hep Data Model","text":"","category":"section"},{"location":"","page":"Introduction","title":"Introduction","text":"This is the diagram for the EDM4hep datamodel including relationships. ","category":"page"},{"location":"","page":"Introduction","title":"Introduction","text":"(Image: Figure)","category":"page"}] }