# A side-by side comparison of PLCIO and FCC-EDM
Source for plcio current master (19.07.2019, based on LCIO v02-12): https://stash.desy.de/projects/IL/repos/plcio/browse/config/lcio.yaml
Source for fcc-edm: current master (19.07.2019, latest release 0.5.4) https://github.com/HEP-FCC/fcc-edm/blob/master/edm.yaml
## Overview
A list of the type names in PLCIO and FCC-EDM, sorted into topics
### Components
| PLCIO | FCC-EDM |
| -------- | -------- |
| FloatThree | Point |
| DoubleThree | |
| IntTwo | |
| | LorentzVector |
| TrackState | |
| | BareHit|
| | BareCluster |
|| BareParticle |
| | BareJet |
| ObjectId ||
### Event / Run types
| PLCIO | FCC-EDM |
| -------- | -------- |
| LCRunHeader | |
| LCEventHeader | EventInfo|
### Generic / Catchall types
| PLCIO | FCC-EDM |
| -------- | -------- |
| | FloatValue |
| LCGenericObject | |
| LCFLoatVec ||
| LCIntVec ||
| LCStrVec ||
### Particles
| PLCIO | FCC-EDM |
| -------- | -------- |
| MCParticle | MCParticle |
| | ParticleMCParticleAssociation |
| ReconstructedParticle | Particle |
| | TaggedParticle |
| Particle ID ||
### Vertices
| PLCIO | FCC-EDM |
| -------- | -------- |
|Vertex | Vertex |
| | GenVertex |
### Track Detector Types
| PLCIO | FCC-EDM |
| -------- | -------- |
| TrackerRawData ||
|TrackerData ||
| TrackerPulse ||
|TPCHit ||
|TrackerHit| TrackHit |
|SimTrackerHit| PositionedTrackHit |
| | DigiTrackHitAssociation |
| | TrackCLuster |
|| TrackState |
| Track| Track |
| | WeightedTrack |
### Calorimeter Types
| PLCIO | FCC-EDM |
| -------- | -------- |
| CalorimeterHit | CaloHit |
| CaloHitContribution | |
|SimCalorimeterHit | |
|RawCalorimeterHit ||
|Cluster| CaloCluster |
| | CaloHitMCParticleAssociation |
|| CaloHitAssociation |
### Jets / High level reco objects
| PLCIO | FCC-EDM |
| -------- | -------- |
| | MET |
| | Jet |
| | TaggedJet |
|| ResolvedJet |
|| GenJet |
|| TaggedGenJet |
|| ResolvedGenJet |
### LCIO compatibility?
| PLCIO | FCC-EDM |
| -------- | -------- |
| LCRelation | |
|LCReference | |
## Definitions
Side-by-side comparison of the data model definitions.
Edited to make it comparable (deleted comments, etc.)
refer to the link above for the original
### Preamble
```{.yaml}
--- |---
# LCIO EDM Description |# FCC-EDM
# based on LCIO v02-12 |# July 2019
# Dec 2018 |
|
|
# specify some options for code generation |
options: |options:
getSyntax : True | getSyntax: False
exposePODMembers : False | exposePODMembers: True
|
```
### Components
```{.yaml}
########################################## |# A component is a POD designed
# |# to be embedded in another POD,
# some helper components - |# see the Particle or Jet PODs.
# simple data structs (PODs) |# Components cannot be stored
# |# in a collection.
######################################### |
|
components: |components:
# Vector3D with floats |
plcio::FloatThree : | fcc::Point:
x : float | x : float
y : float | y : float
z : float | z : float
|
# Vector3D with doubles | # VV: the fcc-edm used only
plcio::DoubleThree : | # single precison up to now
x : double |
y : double |
z : double |
ExtraCode : |
... |
|
# Vector2D with ints |
plcio::IntTwo : |
a : int |
b : int |
ExtraCode : |
.... |
|
| fcc::LorentzVector:
| mass : float
| px : float
| py : float
| pz : float
|
# #helper struct for MCP contributions | # really need to expose some function
# #to the SimCalorimterHit | #f(Cellid) -> position
# plcio::CaloHitCont : | fcc::BareHit:
# PDG : int | cellId : unsigned long long
# energy : float | energy : float
# time : float | time : float
# stepPosition : plcio::FloatThree | bits : unsigned
# ExtraCode : |
# ... |
|
| fcc::BareCluster:
| energy : float
| time : float
| position : fcc::Point
| bits : unsigned
|
| fcc::BareParticle:
| pdgId: int
| charge: int
| status: unsigned
| vertex: fcc::Point
| p4: fcc::LorentzVector
| bits: unsigned
|
| fcc::BareJet:
| p4: fcc::LorentzVector
| area: float
| bits: unsigned
|
|# VV: in the fcc-edm, track-state
|# is a full type and appears later.
|# for readability I'll insert a copy
#-------- LCIO TrackState |# :
plcio::TrackState: |# fcc::TrackState:
location : int |# Description: "Track state at a ..."
D0 : float |# Author : "J. Hrdinka"
phi : float |# Members:
omega : float |# - float phi
Z0 : float |# - float theta
tanLambda : float |# - float qOverP
referencePoint : plcio::FloatThree |# - float d0
covMatrix : std::array<float,15>|# - float z0
|# - fcc::Point referencePoint
|# - std::array<float,15> cov
|
#------ ObjectID helper struct |
# for references/relations |
plcio::ObjectID: |
index : int |
collectionID : int |
ExtraCode : |
... |
```
### Event/Run
```{.yaml}
|
########################################## |
# |
# the actual EDM data types |
# |
######################################### |
|
|
|
datatypes : |datatypes :
|# Datatypes are components
|# that can be stored in a Collection
|
#------------- LCIO LCRunHeader |
plcio::LCRunHeader: |
Description: "Interface for ... " |
Author : "F.Gaede, DESY" |
Members: |
- int runNumber |
- std::string detectorName |
- std::string description |
VectorMembers: |
- std::string activeSubdetectors |
ExtraCode : |
... |
|
|
#------------- LCIO EventHeader |
plcio::EventHeader: | fcc::EventInfo :
Description: "Meta information ..." | Description : "Event Info Data"
Author : "F.Gaede" | Author : "C. Bernet, B. Hegner"
Members: | Members :
- int eventNumber | - int number // Event number
- int runNumber | - int currentpileup
- long timeStamp | - float weight // Event weight
- std::string detectorName |
VectorMembers: |
- std::string collectionNames |
- std::string collectionTypes |
ExtraCode : |
... |
|
```
### "Generic / Catchall" types
```{.yaml}
|
#------------- LCIO LCGenericObject | fcc::FloatValue :
# o FIXME: this implementation is | Description : "Contains float"
# rather inefficicent .... | Author : "M. Selvaggi"
plcio::LCGenericObject: | Members :
Description: "LCIO LCGenericObject" | - float value
Author : "F.Gaede, DESY" |
Members: |
- int isFixedSize |
- std::string typeName |
- std::string dataDescription |
VectorMembers: |
- int intVals |
- float floatVals |
- double doubleVals |
ExtraCode : |
... |
|
#------------- LCIO LCFloatVec |
plcio::LCFloatVec: |
Description: "LCIO LCFloatVec" |
Author : "F.Gaede, DESY" |
VectorMembers: |
- float values /// float values |
ExtraCode : |
... |
|
#------------- LCIO LCIntVec |
plcio::LCIntVec: |
Description: "LCIO LCIntVec" |
Author : "F.Gaede, DESY" |
VectorMembers: |
- int values /// int values |
ExtraCode : |
... |
|
#------------- LCIO LCStrVec |
plcio::LCStrVec: |
Description: "LCIO LCStrVec" |
Author : "F.Gaede, DESY" |
VectorMembers: |
- std::string values ///string values|
ExtraCode : |
... |
|
```
### Particles
```
|# fcc::BareParticle:
|# pdgId: int
|# charge: int
|# status: unsigned
|# vertex: fcc::Point
|# p4: fcc::LorentzVector
|# bits: unsigned
|
#------------- LCIO MCParticle |
plcio::MCParticle: | fcc::MCParticle:
Description: "Monte Carlo particle." | Description: "Monte-Carlo Particle "
Author : "F.Gaede, DESY" | Author : "C. Bernet, B. Hegner"
Members: | Members:
- int PDG | - fcc::BareParticle core
- int generatorStatus | OneToOneRelations:
- int simulatorStatus | - fcc::GenVertex startVertex
- float charge | - fcc::GenVertex endVertex
- float time |
- double mass |
- plcio::DoubleThree vertex |
- plcio::DoubleThree endpoint |
- plcio::FloatThree momentum |
- plcio::FloatThree momentumAtEndpoint|
- plcio::FloatThree spin |
- plcio::IntTwo colorFlow |
|
OneToManyRelations: |
- plcio::MCParticle parents |
- plcio::MCParticle daughters |
ExtraCode : |
... |
|
|
| fcc::ParticleMCParticleAssociation:
| Description : "Association ..."
| Author : "C. Bernet, B. Hegner"
| OneToOneRelations :
| - fcc::Particle rec
| - fcc::MCParticle sim
#------- LCIO ReconstructedParticle |
# Changes w.r.t. to original |
# o ParticleIDs are now in external c|
ollection |
plcio::ReconstructedParticle: | fcc::Particle :
Description: "LCIO Reconstructed..." | Description : "Reconstructed particle"
Author : "F.Gaede, DESY" | Author : "C. Bernet, B. Hegner"
Members: | Members :
- int type | - fcc::BareParticle core
- float energy | OneToManyRelations:
- plcio::FloatThree momentum | - fcc::Track tracks
- plcio::FloatThree referencePoint | - fcc::CaloCluster clusters
- float charge |
- float mass |
- float goodnessOfPID |
- std::array<float,10> covMatrix |
OneToOneRelations: |
- plcio::Vertex startVertex |
- plcio::ParticleID particleIDUsed |
OneToManyRelations: |
- plcio::Cluster clusters |
- plcio::Track tracks |
- plcio::ReconstructedParticle particles |
|
- plcio::ParticleID particleIDs |
ExtraCode : |
... |
| fcc::TaggedParticle :
| Description : "Association ..."
| Author : "C. Helsens, J. Lingemann"
| Members:
| - float tag
| OneToOneRelations :
| - fcc::Particle particle
|
#---- LCIO ParticleID |
plcio::ParticleID: |
Description: "LCIO ParticleID ... " |
Author : "F.Gaede, DESY" |
Members: |
- int type |
- int pDG |
- int algorythmType |
- float likelihood |
VectorMembers: |
- float parameters |
ExtraCode : |
... |
```
### Vertices
Note that in FCC-EDM, `BareParticle` has an additional `Point` representing a vertex position
```
#---------- LCIO Vertex |
#FIXME: lcio interface has algorithmType |
# as string but stores int ... |
plcio::Vertex: | fcc::Vertex:
Description: "LCIO vertex" | Description: "Vertex "
Author : "F.Gaede, DESY" | Author : "C. Bernet, B. Hegner"
Members: | Members:
- int primary | - float chi2
- float chi2 | - unsigned ndf
- float probability | - fcc::Point position
- plcio::FloatThree position | - unsigned bits // Stored flags
- std::array<float,6> covMatrix | OneToManyRelations:
- int algorithmType | - fcc::WeightedTrack tracks
VectorMembers: |
- float parameters |
OneToOneRelations: |
- plcio::ReconstructedParticle |
associatedParticle |
ExtraCode : |
|
| fcc::GenVertex:
| Description: "Generated vertex ... "
| Author : "C. Bernet, B. Hegner"
| Members:
| - fcc::Point position
| - float ctau // Time coordinate in cm
|
|
```
### Track Detector types
```
|# fcc::BareHit:
|# cellId : unsigned long long
|# energy : float
|# time : float
|# bits : unsigned
|#
|# fcc::BareCluster:
|# energy : float
|# time : float
|# position : fcc::Point
|# bits : unsigned
|
#------- LCIO TrackerData |
plcio::TrackerData: | fcc::TrackHit:
Description: "LCIO tracker data" | Description : "A tracker hit"
Author : "F.Gaede, DESY" | Author : "C. Bernet, B. Hegner"
Members: | Members:
- int cellID0 | - fcc::BareHit core
- int cellID1 |
- float time |
VectorMembers: |
- float chargeValues |
ExtraCode : |
... |
|
|
#------ LCIO TrackerRawData |
plcio::TrackerRawData: |
Description: "LCIO tracker raw data" |
Author : "F.Gaede, DESY" |
Members: |
- int cellID0 |
- int cellID1 |
- int time |
VectorMembers: |
- short ADCValues |
ExtraCode : |
... |
#------ LCIO TrackerPulse |
plcio::TrackerPulse: |
Description : "LCIO tracker pulse" |
Author : "F. Gaede, DESY" |
Members: |
- int cellID0 |
- int cellID1 |
- int quality |
- float time |
- float charge |
- plcio::FloatThree covMatrix |
OneToOneRelations: |
- plcio::TrackerData trackerData |
ExtraCode : |
... |
#---------- LCIO TPCHit |
plcio::TPCHit: |
Description: "LCIO TPCHit" |
Author : "F.Gaede, DESY" |
Members: |
- int cellID |
- int quality |
- float time |
- float charge |
VectorMembers: |
- int rawDataWords |
ExtraCode : |
... |
|
|
| fcc::PositionedTrackHit:
| Description: "A track hit ..."
| Author: "J. Lingemann, ... "
| Members:
| - fcc::Point position
| - fcc::BareHit core
|
| fcc::DigiTrackHitAssociation:
| Description: "Association ..."
| Author : "V.Volkl"
| Members:
| - fcc::Point postStepPosition
| OneToOneRelations:
| - fcc::PositionedTrackHit hit
|
| fcc::TrackCluster:
| Description : "A track clu..."
| Author : "C. Bernet, ..."
| Members:
| - fcc::BareCluster core
| VectorMembers:
| - unsigned trackIDs
| OneToManyRelations :
| - fcc::TrackHit hits
|
#----------- LCIO SimTrackerHit |
plcio::SimTrackerHit: |
Description: "LCIO simulated ... " |
Author : "F.Gaede, DESY" |
Members: |
- int cellID0 |
- int cellID1 |
- float EDep |
- float time |
- float pathLength |
- int quality |
- plcio::DoubleThree position |
- plcio::FloatThree momentum |
OneToOneRelations: |
- plcio::MCParticle MCParticle |
ExtraCode : |
... |
|
#------------- LCIO TrackerHit |
# o FIXME: no specialisation for |
# the different kind of geometries: |
# TrackerHitPlane, TrackerHitZCylinder |
# o FIXME: should we define a |
# FloatSix for the covMatrix or |
# use the std::array ??? |
plcio::TrackerHit: |
Description : "LCIO tracker hit" |
Author : "F.Gaede, DESY" |
Members : |
- int cellID0 |
- int cellID1 |
- int type |
- int quality |
- float time |
- float eDep |
- float eDepError |
- float edx |
- plcio::DoubleThree position |
- std::array<float,6> covMatrix |
VectorMembers: |
- plcio::ObjectID rawHits |
ExtraCode : |
... |
|
# VV: in plcio, this is a component | fcc::TrackState:
# with almost the same content | Description: "Track state at a ..."
| Author : "J. Hrdinka"
| Members:
| - float phi
| - float theta
| - float qOverP
| - float d0
| - float z0
| - fcc::Point referencePoint
| - std::array<float,15> cov
|
#-------- LCIO Track |
plcio::Track: | fcc::Track:
Description: "LCIO reconstructed track"| Description: "Track ..."
Author : "F.Gaede, DESY" | Author : "C. Bernet, B. Hegner"
Members: | Members:
- int type | - float chi2
- float chi2 | - unsigned ndf
- int ndf | - unsigned bits // Stores flags
- float dEdx | OneToManyRelations :
- float dEdxError | - fcc::PositionedTrackHit hits
- float radiusOfInnermostHit | - fcc::TrackState states
VectorMembers: |
- int subDetectorHitNumbers | fcc::WeightedTrack:
- plcio::TrackState trackStates | Description: "A track as..."
OneToManyRelations: | Author: "J. Lingemann"
- plcio::TrackerHit trackerHits | Members:
- plcio::Track tracks | - float weight
ExtraCode : | OneToOneRelations:
... | - fcc::Track track
|
```
### Calorimeter types
```
#------------- LCIO CalorimeterHit |
plcio::CalorimeterHit: | fcc::CaloHit:
Description: "LCIO calorimeter hit" | Description : "A calorimeter hit"
Author : "F.Gaede, DESY" | Author : "C. Bernet, B. Hegner"
Members: | Members:
- int cellID0 | - fcc::BareHit core
- int cellID1 |
- float energy | fcc::PositionedCaloHit:
- float energyError | Description: "A calorimeter ..."
- float time | Author: "J. Lingemann, B. Hegner"
- plcio::FloatThree position | Members:
- int type | - fcc::Point position
- plcio::ObjectID rawHit | - fcc::BareHit core // The hit
ExtraCode : |
... |
|
#------------- LCIO CaloHitContribution |
plcio::CaloHitContribution: |
Description: "Monte Carlo contri..." |
Author : "F.Gaede, DESY" |
Members: |
- int PDG |
- float energy |
- float time |
- plcio::FloatThree stepPosition |
OneToOneRelations: |
- plcio::MCParticle particle |
|
#------------- LCIO SimCalorimeterHit |
plcio::SimCalorimeterHit: |
Description: "LCIO simulated cal..." |
Author : "F.Gaede, DESY" |
Members: |
- int cellID0 |
- int cellID1 |
- float energy |
- plcio::FloatThree position |
OneToManyRelations: |
- plcio::CaloHitContribution |
contributions |
ExtraCode : |
.... |
|
#------------- LCIO RawCalorimeterHit |
plcio::RawCalorimeterHit: |
Description: "LCIO raw ..." |
Author : "F.Gaede, DESY" |
Members: |
- int cellID0 |
- int cellID1 |
- int amplitude |
- int timeStamp |
ExtraCode : |
... |
#------ LCIO cluster |
# Changes w.r.t. to original |
# o ParticleIDs are now in |
# external collection |
plcio::Cluster: |
Description: "LCIO cluster" | fcc::CaloCluster:
Author : "F.Gaede, DESY" | Description : "A calo cluster..."
Members: | Author : "C. Bernet, B. Hegner"
- int type | Members:
- float energy | - fcc::BareCluster core
- float energyError | OneToManyRelations :
- plcio::FloatThree position | - fcc::CaloHit hits
- std::array<float,6> positionError |
- float iTheta |
- float phi |
- plcio::FloatThree directionError |
VectorMembers: |
- float shape |
- float weight |
- float hitContributions |
- float subdetectorEnergies |
OneToManyRelations: |
- plcio::Cluster clusters |
- plcio::CalorimeterHit hits |
- plcio::ParticleID particleIDs |
ExtraCode : |
... |
| fcc::CaloHitMCParticleAssociation:
| Description: "Association ..."
| Author : "C. Bernet, B. Hegner"
| Members:
| - float fraction
| OneToOneRelations:
| - fcc::CaloHit hit
| - fcc::MCParticle particle
|
| fcc::CaloHitAssociation:
| Description: "Association b..."
| Author : "C. Bernet, B. Hegner"
| OneToOneRelations:
| - fcc::CaloHit rec
| - fcc::CaloHit sim
|
|
```
### Jets / High level reco objects
```
| fcc::MET:
| Description : "Naive MET type"
| Author : "C. Bernet, B. Hegner"
| Members :
| # VV: "position" seems to be an error
| - fcc::Point position
| - float magnitude
| - float phi
| - float scalarSum
|
| fcc::Jet :
| Description : "Reconstructed jet."
| Author : "C. Bernet, B. Hegner"
| Members :
| - fcc::BareJet core
| OneToManyRelations :
| - fcc::Particle particles
|
| fcc::TaggedJet :
| Description : "Association ..."
| Author : "C. Bernet, Z. Drasal..."
| Members :
| - float tag
| OneToOneRelations :
| - fcc::Jet jet
|
| fcc::ResolvedJet :
| Description : "Association ..."
| Author : "M. Selvaggi"
| OneToManyRelations :
| - fcc::Jet subjets
| OneToOneRelations :
| - fcc::Jet jet
|
| fcc::GenJet :
| Description : "Generated jet."
| Author : "C. Bernet, B. Hegner"
| Members :
| - fcc::BareJet core
| OneToManyRelations :
| - fcc::MCParticle particles
|
| fcc::TaggedGenJet :
| Description : "Association ..."
| Author : "C. Bernet, Z. Drasal"
| Members :
| - float tag
| OneToOneRelations :
| - fcc::GenJet jet
|
| fcc::ResolvedGenJet :
| Description : "Assoc..."
| Author : "M. Selvaggi"
| OneToManyRelations :
| - fcc::GenJet subjets
| OneToOneRelations :
| - fcc::GenJet jet
|
```
### LCIO compatibility?
```
#----------- LCIO relations |
plcio::LCRelation: |
Description: "LCIO LCRelation" |
Author : "F.Gaede, DESY" |
Members: |
- plcio::ObjectID from |
- plcio::ObjectID to |
- float weight |
|
|
#----------- LCIO reference (pointer) |
plcio::LCReference: |
Description: "LCIO reference... " |
Author : "F.Gaede, DESY" |
Members: |
- plcio::ObjectID object |
|
```