Warning, /EDM4eic/edm4eic.yaml is written in an unsupported language. File is not indexed.
0001 # SPDX-License-Identifier: LGPL-3.0-or-later
0002 # Copyright (C) 2023 Sylvester Joosten, Whitney Armstrong, Wouter Deconinck, Christopher Dilks
0003 # Some datatypes based on EDM4hep. EDM4hep license applies to those sections.
0004 ---
0005 ## Schema versioning
0006 ## This is required to be an integer, and defined as 100*major+minor.
0007 ## Patch level changes are required to be schema invariant.
0008 ##
0009 ## If there are schema version changes that can be evolved, see the podio documentation
0010 ## for an example: https://github.com/AIDASoft/podio/tree/master/tests/schema_evolution
0011 ##
0012 schema_version: 830
0013
0014 options :
0015 # should getters / setters be prefixed with get / set?
0016 getSyntax: True
0017 # should POD members be exposed with getters/setters in classes that have them as members?
0018 exposePODMembers: False
0019 includeSubfolder: True
0020
0021 ## Some guidance:
0022 ## - Ensure data products usable without library dependencies (favor PODness where
0023 ## possible).
0024 ## - Move towards EDM4hep compatibility (to allow a transition to mainly use EDM4hep).
0025 ## - migrate away from custom indices in favor of podio relations
0026 ## - Use float most of the time except for 4-vectors where ppm precision is important.
0027 ## - Data alignment:
0028 ## - data should be aligned with a 64-bit structure where possible.
0029 ## - when using 32 bit values, use them in pairs (or after all 64-bit variables are defined).
0030 ## - same goes for 16-bit values (keep them aligned with the largest following component)
0031 ## - Explicitly specify the integer length (use the typedefs from <cstdint>,
0032 ## such as int32_t etc)
0033
0034 components:
0035
0036 edm4eic::CovDiag3f:
0037 Members:
0038 - float xx
0039 - float yy
0040 - float zz
0041 ExtraCode:
0042 declaration: "
0043 CovDiag3f() : xx{0}, yy{0}, zz{0} {}\n
0044 CovDiag3f(double x, double y, double z)\n
0045 : xx{static_cast<float>(x)}, yy{static_cast<float>(y)}, zz{static_cast<float>(z)} {}\n
0046 float operator()(unsigned i, unsigned j) const {return (i == j) ? *(&xx + i) : 0.;}\n
0047 "
0048
0049 edm4eic::Cov2f:
0050 Members:
0051 - float xx
0052 - float yy
0053 - float xy
0054 ExtraCode:
0055 declaration: "
0056 Cov2f() : xx{0}, yy{0}, xy{0} {}\n
0057 Cov2f(double vx, double vy, double vxy = 0)\n
0058 : xx{static_cast<float>(vx)}, yy{static_cast<float>(vy)}, xy{static_cast<float>(vxy)} {}\n
0059 float operator()(unsigned i, unsigned j) const {\n
0060 // diagonal\n
0061 if (i == j) {\n
0062 return *(&xx + i);\n
0063 }\n
0064 // off-diagonal\n
0065 // we have as options (0, 1), and (1, 0)\n
0066 // note that, starting from xy, we find the correct element at (i+j+1)/2)\n
0067 return *(&xy + (i + j + 1) / 2);\n
0068 }\n
0069 "
0070
0071 edm4eic::Cov3f:
0072 Members:
0073 - float xx
0074 - float yy
0075 - float zz
0076 - float xy
0077 - float xz
0078 - float yz
0079 ExtraCode:
0080 declaration: "
0081 Cov3f() : xx{0}, yy{0}, zz{0}, xy{0}, xz{0}, yz{0} {}\n
0082 Cov3f(double vx, double vy, double vz, double vxy = 0, double vxz = 0, double vyz = 0)\n
0083 : xx{static_cast<float>(vx)}, yy{static_cast<float>(vy)}, zz{static_cast<float>(vz)},\n
0084 xy{static_cast<float>(vxy)}, xz{static_cast<float>(vxz)}, yz{static_cast<float>(vyz)} {}\n
0085 float operator()(unsigned i, unsigned j) const {\n
0086 // diagonal\n
0087 if (i == j) {\n
0088 return *(&xx + i);\n
0089 }\n
0090 // off-diagonal\n
0091 // we have as options (0, 1), (0, 2) and (1, 2) (and mirrored)\n
0092 // note that, starting from xy, we find the correct element at (i+j-1)\n
0093 return *(&xy + i + j - 1);\n
0094 }\n
0095 "
0096
0097 edm4eic::Cov4f:
0098 Members:
0099 - float xx
0100 - float yy
0101 - float zz
0102 - float tt
0103 - float xy
0104 - float xz
0105 - float xt
0106 - float yz
0107 - float yt
0108 - float zt
0109 ExtraCode:
0110 declaration: "
0111 Cov4f() : xx{0}, yy{0}, zz{0}, tt{0}, xy{0}, xz{0}, xt{0}, yz{0}, yt{0}, zt{0} {}\n
0112 Cov4f(double vx, double vy, double vz, double vt,\n
0113 double vxy = 0, double vxz = 0, double vxt = 0,\n
0114 double vyz = 0, double vyt = 0, double vzt = 0)\n
0115 : xx{static_cast<float>(vx)}, yy{static_cast<float>(vy)}, zz{static_cast<float>(vz)}, tt{static_cast<float>(vt)},\n
0116 xy{static_cast<float>(vxy)}, xz{static_cast<float>(vxz)}, xt{static_cast<float>(vxt)},\n
0117 yz{static_cast<float>(vyz)}, yt{static_cast<float>(vyt)}, zt{static_cast<float>(vzt)} {}\n
0118 float operator()(unsigned i, unsigned j) const {\n
0119 // diagonal\n
0120 if (i == j) {\n
0121 return *(&xx + i);\n
0122 // off-diagonal, can probably be done with less if statements \n
0123 } else {\n
0124 if (i > j) { \n
0125 std::swap(i,j); \n
0126 } \n
0127 if (i == 0) { \n
0128 return *(&xy + j - 1); \n
0129 } else if (i == 1) { \n
0130 return *(&yz + j - 2); \n
0131 } else { \n
0132 return zt; \n
0133 } \n
0134 } \n
0135 }\n
0136 "
0137
0138 edm4eic::Cov6f:
0139 Members:
0140 - std::array<float, 21> covariance // 6d triangular packed covariance matrix
0141 ExtraCode:
0142 declaration: "
0143 Cov6f() : covariance{} {}\n
0144 Cov6f(std::array<float, 21> vcov) : covariance{vcov}{}\n
0145 float operator()(unsigned i, unsigned j) const {\n
0146 if(i > j) {\n
0147 std::swap(i, j);\n
0148 }\n
0149 return covariance[i + 1 + (j + 1) * (j) / 2 - 1];\n
0150 }\n
0151 float& operator()(unsigned i, unsigned j) {\n
0152 if(i > j) {\n
0153 std::swap(i, j);\n
0154 }\n
0155 return covariance[i + 1 + (j + 1) * (j) / 2 - 1];\n
0156 }\n
0157 "
0158
0159 ## A point along a track
0160 edm4eic::TrackPoint:
0161 Members:
0162 - uint64_t surface // Surface track was propagated to (possibly multiple per detector)
0163 - uint32_t system // Detector system track was propagated to
0164 - edm4hep::Vector3f position // Position of the trajectory point [mm]
0165 - edm4eic::Cov3f positionError // Error on the position
0166 - edm4hep::Vector3f momentum // 3-momentum at the point [GeV]
0167 - edm4eic::Cov3f momentumError // Error on the 3-momentum
0168 - float time // Time at this point [ns]
0169 - float timeError // Error on the time at this point
0170 - float theta // polar direction of the track at the surface [rad]
0171 - float phi // azimuthal direction of the track at the surface [rad]
0172 - edm4eic::Cov2f directionError // Error on the polar and azimuthal angles
0173 - float pathlength // Pathlength from the origin to this point
0174 - float pathlengthError // Error on the pathlength
0175
0176 ## PID hypothesis from Cherenkov detectors
0177 edm4eic::CherenkovParticleIDHypothesis:
0178 Members:
0179 - int32_t PDG // PDG code
0180 - float npe // Overall photoelectron count
0181 - float weight // Weight of this hypothesis, such as likelihood, moment, etc.
0182
0183 ## Representation of surfaces, including dynamic perigee surfaces (identical to ActsPodioEdm::Surface)
0184 edm4eic::Surface:
0185 Members:
0186 - int surfaceType // Cone = 0, Cylinder = 1, Disc = 2, Perigee = 3, Plane = 4, Straw = 5, Curvilinear = 6, Other = 7
0187 - int boundsType // eCone = 0, eCylinder = 1, eDiamond = 2, eDisc = 3, eEllipse = 4, eLine = 5, eRectangle = 6, eTrapezoid = 7, eTriangle = 8, eDiscTrapezoid = 9, eConvexPolygon = 10, eAnnulus = 11, eBoundless = 12, eOther = 13
0188 - uint64_t geometryId // bit pattern volume:8,boundary:8,layer:12,approach:8,sensitive:20,extra:8
0189 - uint64_t identifier // identifier of associated detector element, if available
0190 - std::array<double,10> boundValues // bound values, e.g. for RectangleBounds, BoundValues are eMinX = 0, eMinY = 1, eMaxX = 2, eMaxY = 3, eSize = 4
0191 - uint32_t boundValuesSize // size of bound values
0192 - std::array<double,16> transform // row-wise 4x4 affine transform [R T; 0 1] with 3x3 rotation matrix R and translation column 3-vector T
0193
0194 ## An individual sample output by an HGCROC chip
0195 edm4eic::HGCROCSample:
0196 Members:
0197 - uint16_t ADC // [ADC Counts], amplitude of signal during sample, valid IFF TOTInProgress is false
0198 - uint16_t timeOfArrival // Time of arrival (TOA) [TDC counts], nonzero IFF ADC crossed threshold upwards during sample
0199 - uint16_t timeOverThreshold // Time over threshold (TOT) [TDC counts], nonzero IFF ADC crossed threshold downwards during sample AND if TOA fired in a previous sample
0200 - bool TOTInProgress // Flag which indicates if TOT calculation is ongoing, ADC value may be corrupted if this is true
0201 - bool TOTComplete // Flag which indicates if a TOT calculation is complete and TOT value is valid
0202
0203 datatypes:
0204
0205 edm4eic::Tensor:
0206 Description: "Tensor type for use in training in inference of ML models"
0207 Author: "D. Kalinkin"
0208 Members:
0209 - int32_t elementType // Data type in the same encoding as "ONNXTensorElementDataType", 1 - float, 7 - int64
0210 VectorMembers:
0211 - int64_t shape // Vector of tensor lengths along its axes
0212 - float floatData // Iff elementType==1, values are stored here
0213 - int64_t int64Data // Iff elementType==7, values are stored here
0214
0215 ## ==========================================================================
0216 ## Simulation info
0217 ## ==========================================================================
0218
0219 edm4eic::SimPulse:
0220 Description: "Simulated pulse prior to digitization."
0221 Author: "D. Anderson, S. Gardner, S. Joosten., D. Kalinkin"
0222 Members:
0223 - uint64_t cellID // ID of the readout cell for this pulse.
0224 - float integral // Total pulse integral in relevant units.
0225 - edm4hep::Vector3f position // Position the pulse is evaluated in world coordinates [mm].
0226 - float time // Start time for the pulse in [ns].
0227 - float interval // Time interval between amplitude values [ns].
0228 VectorMembers:
0229 - float amplitude // Pulse amplitude in relevant units, sum of amplitude values equals integral
0230 OneToManyRelations:
0231 - edm4hep::SimCalorimeterHit calorimeterHits // SimCalorimeterHits used to create this pulse
0232 - edm4hep::SimTrackerHit trackerHits // SimTrackerHits used to create this pulse
0233 - edm4eic::SimPulse pulses // SimPulses used to create this pulse
0234 - edm4hep::MCParticle particles // MCParticle that caused the pulse
0235
0236 ## ==========================================================================
0237 ## Particle info
0238 ## ==========================================================================
0239
0240 edm4eic::ReconstructedParticle:
0241 Description: "EIC Reconstructed Particle"
0242 Author: "W. Armstrong, S. Joosten, F. Gaede"
0243 Members:
0244 - int32_t type // type of reconstructed particle. Check/set collection parameters ReconstructedParticleTypeNames and ReconstructedParticleTypeValues.
0245 - float energy // [GeV] energy of the reconstructed particle. Four momentum state is not kept consistent internally.
0246 - edm4hep::Vector3f momentum // [GeV] particle momentum. Four momentum state is not kept consistent internally.
0247 - edm4hep::Vector3f referencePoint // [mm] reference, i.e. where the particle has been measured
0248 - float charge // charge of the reconstructed particle.
0249 - float mass // [GeV] mass of the reconstructed particle, set independently from four vector. Four momentum state is not kept consistent internally.
0250 - float goodnessOfPID // overall goodness of the PID on a scale of [0;1]
0251 - edm4eic::Cov4f covMatrix // covariance matrix of the reconstructed particle 4vector (10 parameters).
0252 - int32_t PDG // PDG code for this particle
0253 ## @TODO: Do we need timing info? Or do we rely on the start vertex time?
0254 OneToOneRelations:
0255 - edm4eic::Vertex startVertex // Start vertex associated to this particle
0256 - edm4hep::ParticleID particleIDUsed // particle ID used for the kinematics of this particle
0257 OneToManyRelations:
0258 - edm4eic::Cluster clusters // Clusters used for this particle
0259 - edm4eic::Track tracks // Tracks used for this particle
0260 - edm4eic::ReconstructedParticle particles // Reconstructed particles that have been combined to this particle
0261 - edm4hep::ParticleID particleIDs // All associated particle IDs for this particle (not sorted by likelihood)
0262 ExtraCode:
0263 declaration: "
0264 bool isCompound() const {return particles_size() > 0;}\n
0265 "
0266
0267 ## ==========================================================================
0268 ## Calorimetry
0269 ## ==========================================================================
0270
0271 edm4eic::RawHGCROCHit:
0272 Description: "Raw hit from an HGCROC chip"
0273 Author: "D. Anderson, S. Joosten, T. Protzman, N. Novitzky, D. Kalinkin"
0274 Members:
0275 - uint64_t cellID // Detector specific (geometrical) cell id
0276 - int32_t samplePhase // Phase of samples in [# samples], for synchronizing across chips
0277 - int32_t timeStamp // [TDC counts]
0278 VectorMembers:
0279 - edm4eic::HGCROCSample samples // ADC, Time of Arrival (TOA), and Time over Threshold (TOT) values for each sample read out
0280
0281 edm4eic::CalorimeterHit:
0282 Description: "Calorimeter hit"
0283 Author: "W. Armstrong, S. Joosten"
0284 Members:
0285 - uint64_t cellID // The detector specific (geometrical) cell id.
0286 - float energy // The energy for this hit in [GeV].
0287 - float energyError // Error on energy [GeV].
0288 - float time // The time of the hit in [ns].
0289 - float timeError // Error on the time
0290 - edm4hep::Vector3f position // The global position of the hit in world coordinates [mm].
0291 - edm4hep::Vector3f dimension // The dimension information of the cell [mm].
0292 - int32_t sector // Sector that this hit occurred in
0293 - int32_t layer // Layer that the hit occurred in
0294 - edm4hep::Vector3f local // The local coordinates of the hit in the detector segment [mm].
0295 OneToOneRelations:
0296 - edm4hep::RawCalorimeterHit rawHit // Related raw calorimeter hit
0297
0298 ## ==========================================================================
0299 ## Clustering
0300 ## ==========================================================================
0301
0302 edm4eic::ProtoCluster:
0303 Description: "Collection of hits identified by the clustering algorithm to belong together"
0304 Author: "S. Joosten"
0305 OneToManyRelations:
0306 - edm4eic::CalorimeterHit hits // Hits associated with this cluster
0307 VectorMembers:
0308 - float weights // Weight for each of the hits, mirrors hits array
0309
0310 edm4eic::Cluster:
0311 Description: "EIC hit cluster, reworked to more closely resemble EDM4hep"
0312 Author: "W. Armstrong, S. Joosten, C.Peng"
0313 Members:
0314 # main variables
0315 - int32_t type // Flag-word that defines the type of the cluster
0316 - float energy // Reconstructed energy of the cluster [GeV].
0317 - float energyError // Error on the cluster energy [GeV]
0318 - float time // [ns]
0319 - float timeError // Error on the cluster time
0320 - uint32_t nhits // Number of hits in the cluster.
0321 - edm4hep::Vector3f position // Global position of the cluster [mm].
0322 - edm4eic::Cov3f positionError // Covariance matrix of the position (6 Parameters).
0323 - float intrinsicTheta // Intrinsic cluster propagation direction polar angle [rad]
0324 - float intrinsicPhi // Intrinsic cluster propagation direction azimuthal angle [rad]
0325 - edm4eic::Cov2f intrinsicDirectionError // Error on the intrinsic cluster propagation direction
0326 VectorMembers:
0327 - float shapeParameters // Should be set in metadata, for now it's a list of -- radius [mm], dispersion [mm], 2 entries for theta-phi widths [rad], 3 entries for x-y-z widths [mm].
0328 - float hitContributions // Energy contributions of the hits. Runs parallel to ::hits()
0329 - float subdetectorEnergies // Energies observed in each subdetector used for this cluster.
0330 OneToManyRelations:
0331 - edm4eic::Cluster clusters // Clusters that have been combined to form this cluster
0332 - edm4eic::CalorimeterHit hits // Hits that have been combined to form this cluster
0333 - edm4hep::ParticleID particleIDs // Particle IDs sorted by likelihood
0334
0335 ## ==========================================================================
0336 ## RICH/Cherenkov and PID
0337 ## ==========================================================================
0338
0339 edm4eic::PMTHit:
0340 Description: "EIC PMT hit"
0341 Author: "S. Joosten, C. Peng"
0342 Members:
0343 - uint64_t cellID // The detector specific (geometrical) cell id.
0344 - float npe // Estimated number of photo-electrons [#]
0345 # @TODO do we need an uncertainty on NPE?
0346 - float time // Time [ns]
0347 - float timeError // Error on the time [ns]
0348 - edm4hep::Vector3f position // PMT hit position [mm]
0349 - edm4hep::Vector3f dimension // The dimension information of the pixel [mm].
0350 - int32_t sector // The sector this hit occurred in
0351 - edm4hep::Vector3f local // The local position of the hit in detector coordinates (relative to the sector) [mm]
0352
0353 edm4eic::CherenkovParticleID:
0354 Description: "Cherenkov detector PID"
0355 Author: "A. Kiselev, C. Chatterjee, C. Dilks"
0356 Members:
0357 - float npe // Overall photoelectron count
0358 - float refractiveIndex // Average refractive index at the Cherenkov photons' vertices
0359 - float photonEnergy // Average energy for these Cherenkov photons [GeV]
0360 VectorMembers:
0361 - edm4eic::CherenkovParticleIDHypothesis hypotheses // Evaluated PDG hypotheses
0362 - edm4hep::Vector2f thetaPhiPhotons // estimated (theta,phi) for each Cherenkov photon
0363 OneToOneRelations:
0364 - edm4eic::TrackSegment chargedParticle // reconstructed charged particle
0365 OneToManyRelations:
0366 - edm4eic::MCRecoTrackerHitAssociation rawHitAssociations // raw sensor hits, associated with MC hits
0367
0368 edm4eic::RingImage:
0369 ##@TODO: Juggler support; not used in EICrecon
0370 Description: "EIC Ring Image Cluster"
0371 Author: "S. Joosten, C. Peng"
0372 Members:
0373 - float npe // Number of photo-electrons [#]
0374 - edm4hep::Vector3f position // Global position of the cluster [mm]
0375 - edm4hep::Vector3f positionError // Error on the position
0376 - float theta // Opening angle of the ring [rad, 0->pi]
0377 - float thetaError // Error on the opening angle
0378 - float radius // Radius of the best fit ring [mm]
0379 - float radiusError // Estimated error from the fit [mm]
0380
0381 ## ==========================================================================
0382 ## Tracking
0383 ## ==========================================================================
0384
0385 edm4eic::RawTrackerHit:
0386 Description: "Raw (digitized) tracker hit"
0387 Author: "W. Armstrong, S. Joosten"
0388 Members:
0389 - uint64_t cellID // The detector specific (geometrical) cell id.
0390 - int32_t charge // ADC value
0391 ## @TODO: is charge appropriate here? Needs revisiting.
0392 - int32_t timeStamp // TDC value.
0393
0394 edm4eic::TrackerHit:
0395 Description: "Tracker hit (reconstructed from Raw)"
0396 Author: "W. Armstrong, S. Joosten"
0397 Members:
0398 - uint64_t cellID // The detector specific (geometrical) cell id.
0399 - edm4hep::Vector3f position // Hit (cell) position [mm]
0400 - edm4eic::CovDiag3f positionError // Covariance Matrix
0401 - float time // Hit time [ns]
0402 - float timeError // Error on the time
0403 - float edep // Energy deposit in this hit [GeV]
0404 - float edepError // Error on the energy deposit [GeV]
0405 OneToOneRelations:
0406 - edm4eic::RawTrackerHit rawHit // Related raw tracker hit
0407
0408 edm4eic::Measurement2D:
0409 Description: "2D measurement (on an arbitrary surface)"
0410 Author: "W. Deconinck"
0411 Members:
0412 - uint64_t surface // Surface for bound coordinates (geometryID)
0413 - edm4hep::Vector2f loc // 2D location on surface
0414 - float time // Measurement time
0415 - edm4eic::Cov3f covariance // Covariance on location and time
0416 VectorMembers:
0417 - float weights // Weight for each of the hits, mirrors hits array
0418 OneToManyRelations:
0419 - edm4eic::TrackerHit hits // Hits in this measurement (single or clustered)
0420
0421 edm4eic::TrackSeed:
0422 Description: "Seed info from the realistic seed finder"
0423 Author: "S. Li, B. Schmookler, J. Osborn"
0424 Members:
0425 - edm4hep::Vector3f perigee // Vector for the perigee (line surface)
0426 OneToManyRelations:
0427 - edm4eic::TrackerHit hits // Tracker hits triplet for seeding
0428 OneToOneRelations:
0429 - edm4eic::TrackParameters params // Initial track parameters
0430
0431 edm4eic::Trajectory:
0432 Description: "Raw trajectory from the tracking algorithm. What is called hit here is 2d measurement indeed."
0433 Author: "S. Joosten, S. Li"
0434 Members:
0435 - uint32_t type // 0 (does not have good track fit), 1 (has good track fit)
0436 - uint32_t nStates // Number of tracking steps
0437 - uint32_t nMeasurements // Number of hits used
0438 - uint32_t nOutliers // Number of hits not considered
0439 - uint32_t nHoles // Number of missing hits
0440 - uint32_t nSharedHits // Number of shared hits with other trajectories
0441 VectorMembers:
0442 - float measurementChi2 // Chi2 for each of the measurements
0443 - float outlierChi2 // Chi2 for each of the outliers
0444 OneToManyRelations:
0445 - edm4eic::TrackParameters trackParameters // Associated track parameters, if any
0446 - edm4eic::Measurement2D measurements_deprecated // Measurements that were used for this track. Will move this to the edm4eic::Track
0447 - edm4eic::Measurement2D outliers_deprecated // Measurements that were not used for this track. Will move this to the edm4eic::Track
0448 OneToOneRelations:
0449 - edm4eic::TrackSeed seed // Corresponding track seed
0450
0451 edm4eic::TrackParameters:
0452 Description: "ACTS Bound Track parameters"
0453 Author: "W. Armstrong, S. Joosten, J. Osborn"
0454 Members:
0455 - int32_t type // Type of track parameters (-1/seed, 0/head, ...)
0456 - uint64_t surface // Surface for bound parameters (geometryID)
0457 - edm4hep::Vector2f loc // 2D location on surface
0458 - float theta // Track polar angle [rad]
0459 - float phi // Track azimuthal angle [rad]
0460 - float qOverP // [e/GeV]
0461 - float time // Track time [ns]
0462 - int32_t pdg // pdg pid for these parameters
0463 - edm4eic::Cov6f covariance // Full covariance in basis [l0,l1,theta,phi,q/p,t]
0464
0465
0466 edm4eic::Track:
0467 Description: "Track information at the vertex"
0468 Author: "S. Joosten, J. Osborn"
0469 Members:
0470 - int32_t type // Flag that defines the type of track
0471 - edm4hep::Vector3f position // Track 3-position at the vertex
0472 - edm4hep::Vector3f momentum // Track 3-momentum at the vertex [GeV]
0473 - edm4eic::Cov6f positionMomentumCovariance // Covariance matrix in basis [x,y,z,px,py,pz]
0474 - float time // Track time at the vertex [ns]
0475 - float timeError // Error on the track vertex time
0476 - float charge // Particle charge
0477 - float chi2 // Total chi2
0478 - uint32_t ndf // Number of degrees of freedom
0479 - int32_t pdg // PDG particle ID hypothesis
0480 OneToOneRelations:
0481 - edm4eic::Trajectory trajectory // Trajectory of this track
0482 OneToManyRelations:
0483 - edm4eic::Measurement2D measurements // Measurements that were used for this track
0484 - edm4eic::Track tracks // Tracks (segments) that have been combined to create this track
0485
0486 edm4eic::TrackSegment:
0487 Description: "A track segment defined by one or more points along a track."
0488 Author: "S. Joosten"
0489 Members:
0490 - float length // Pathlength from the first to the last point
0491 - float lengthError // Error on the segment length
0492 OneToOneRelations:
0493 - edm4eic::Track track // Track used for this projection
0494 VectorMembers:
0495 - edm4eic::TrackPoint points // Points where the track parameters were evaluated
0496
0497 ## ==========================================================================
0498 ## Vertexing
0499 ## ==========================================================================
0500
0501 edm4eic::Vertex:
0502 Description: "EIC vertex"
0503 Author: "J. Osborn"
0504 Members:
0505 - int32_t type // Type flag, to identify what type of vertex it is (e.g. primary, secondary, generated, etc.)
0506 - float chi2 // Chi-squared of the vertex fit
0507 - int ndf // NDF of the vertex fit
0508 - edm4hep::Vector4f position // position [mm] + time t0 [ns] of the vertex. Time is 4th component in vector
0509 ## this is named "covMatrix" in EDM4hep, renamed for consistency with the rest of edm4eic
0510 - edm4eic::Cov4f positionError // Covariance matrix of the position+time. Time is 4th component, similarly to 4vector
0511 OneToManyRelations:
0512 - edm4eic::ReconstructedParticle associatedParticles // particles associated to this vertex.
0513
0514 ## ==========================================================================
0515 ## Kinematic reconstruction
0516 ## ==========================================================================
0517
0518 edm4eic::InclusiveKinematics:
0519 Description: "Kinematic variables for DIS events"
0520 Author: "S. Joosten, W. Deconinck"
0521 Members:
0522 - float x // Bjorken x (Q2/2P.q)
0523 - float Q2 // Four-momentum transfer squared [GeV^2]
0524 - float W // Invariant mass of final state [GeV]
0525 - float y // Inelasticity (P.q/P.k)
0526 - float nu // Energy transfer P.q/M [GeV]
0527 OneToOneRelations:
0528 - edm4eic::ReconstructedParticle scat // Associated scattered electron (if identified)
0529 ## @TODO: Spin state?
0530 ## - phi_S?
0531
0532 edm4eic::HadronicFinalState:
0533 Description: "Summed quantities of the hadronic final state"
0534 Author: "T. Kutz"
0535 Members:
0536 - float sigma // Longitudinal energy-momentum balance (aka E - pz)
0537 - float pT // Transverse momentum
0538 - float gamma // Hadronic angle
0539 OneToManyRelations:
0540 - edm4eic::ReconstructedParticle hadrons // Reconstructed hadrons used in calculation
0541
0542 ## ==========================================================================
0543 ## Data-Montecarlo relations
0544 ## ==========================================================================
0545
0546 edm4eic::MCRecoParticleAssociation:
0547 Description: "Used to keep track of the correspondence between MC and reconstructed particles"
0548 Author: "S. Joosten"
0549 Members:
0550 - uint32_t simID // Index of corresponding MCParticle (position in MCParticles array)
0551 - uint32_t recID // Index of corresponding ReconstructedParticle (position in ReconstructedParticles array)
0552 - float weight // weight of this association
0553 OneToOneRelations :
0554 - edm4eic::ReconstructedParticle rec // reference to the reconstructed particle
0555 - edm4hep::MCParticle sim // reference to the Monte-Carlo particle
0556
0557 edm4eic::MCRecoClusterParticleAssociation:
0558 Description: "Association between a Cluster and a MCParticle"
0559 Author : "S. Joosten"
0560 Members:
0561 - uint32_t simID // Index of corresponding MCParticle (position in MCParticles array)
0562 - uint32_t recID // Index of corresponding Cluster (position in Clusters array)
0563 - float weight // weight of this association
0564 OneToOneRelations:
0565 - edm4eic::Cluster rec // reference to the cluster
0566 - edm4hep::MCParticle sim // reference to the Monte-Carlo particle
0567
0568 edm4eic::MCRecoTrackParticleAssociation:
0569 Description: "Association between a Track and a MCParticle"
0570 Author : "S. Joosten"
0571 Members:
0572 - uint32_t simID // Index of corresponding MCParticle (position in MCParticles array)
0573 - uint32_t recID // Index of corresponding Track (position in Tracks array)
0574 - float weight // weight of this association
0575 OneToOneRelations:
0576 - edm4eic::Track rec // reference to the track
0577 - edm4hep::MCParticle sim // reference to the Monte-Carlo particle
0578
0579 edm4eic::MCRecoVertexParticleAssociation:
0580 Description: "Association between a Vertex and a MCParticle"
0581 Author : "S. Joosten"
0582 Members:
0583 - uint32_t simID // Index of corresponding MCParticle (position in MCParticles array)
0584 - uint32_t recID // Index of corresponding Vertex (position in Vertices array)
0585 - float weight // weight of this association
0586 OneToOneRelations:
0587 - edm4eic::Vertex rec // reference to the vertex
0588 - edm4hep::MCParticle sim // reference to the Monte-Carlo particle
0589
0590 edm4eic::MCRecoTrackerHitAssociation:
0591 Description: "Association between a RawTrackerHit and a SimTrackerHit"
0592 Author: "C. Dilks, W. Deconinck"
0593 Members:
0594 - float weight // weight of this association
0595 OneToOneRelations:
0596 - edm4eic::RawTrackerHit rawHit // reference to the digitized hit
0597 - edm4hep::SimTrackerHit simHit // reference to the simulated hit
0598
0599 edm4eic::MCRecoCalorimeterHitAssociation:
0600 Description: "Association between a RawCalorimeterHit and a SimCalorimeterHit"
0601 Author: "S. Rahman"
0602 Members:
0603 - float weight // weight of this association
0604 OneToOneRelations:
0605 - edm4hep::RawCalorimeterHit rawHit // reference to the digitized calorimeter hit
0606 - edm4hep::SimCalorimeterHit simHit // reference to the simulated calorimeter hit
0607
0608 edm4eic::TrackClusterMatch:
0609 Description: "Match between a Cluster and a Track"
0610 Author: "D. Anderson, D. Brandenburg, D. Kalinkin, S. Joosten"
0611 Members:
0612 - float weight // weight of this association
0613 OneToOneRelations:
0614 - edm4eic::Cluster cluster // reference to the cluster
0615 - edm4eic::Track track // reference to the track
0616
0617 links:
0618 edm4eic::TrackProtoClusterLink:
0619 Description: "Link between a ProtoCluster and a Track"
0620 Author: "D. Anderson, D. Kalinkin"
0621 From: edm4eic::Track
0622 To: edm4eic::ProtoCluster