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 10000*major+100*minor+patch
0007 ## (two digits per component, so each component may range from 0 to 99).
0008 ## Patch level changes are required to be schema invariant.
0009 ##
0010 ## If there are schema version changes that can be evolved, see the podio documentation
0011 ## for an example: https://github.com/AIDASoft/podio/tree/master/tests/schema_evolution
0012 ##
0013 schema_version: 81000
0014
0015 options :
0016 # should getters / setters be prefixed with get / set?
0017 getSyntax: True
0018 # should POD members be exposed with getters/setters in classes that have them as members?
0019 exposePODMembers: False
0020 includeSubfolder: True
0021
0022 ## Some guidance:
0023 ## - Ensure data products usable without library dependencies (favor PODness where
0024 ## possible).
0025 ## - Move towards EDM4hep compatibility (to allow a transition to mainly use EDM4hep).
0026 ## - migrate away from custom indices in favor of podio relations
0027 ## - Use float most of the time except for 4-vectors where ppm precision is important.
0028 ## - Data alignment:
0029 ## - data should be aligned with a 64-bit structure where possible.
0030 ## - when using 32 bit values, use them in pairs (or after all 64-bit variables are defined).
0031 ## - same goes for 16-bit values (keep them aligned with the largest following component)
0032 ## - Explicitly specify the integer length (use the typedefs from <cstdint>,
0033 ## such as int32_t etc)
0034
0035 components:
0036
0037 edm4eic::CovDiag3f:
0038 Members:
0039 - float xx
0040 - float yy
0041 - float zz
0042 ExtraCode:
0043 declaration: "
0044 CovDiag3f() : xx{0}, yy{0}, zz{0} {}\n
0045 CovDiag3f(double x, double y, double z)\n
0046 : xx{static_cast<float>(x)}, yy{static_cast<float>(y)}, zz{static_cast<float>(z)} {}\n
0047 float operator()(unsigned i, unsigned j) const {return (i == j) ? *(&xx + i) : 0.;}\n
0048 "
0049
0050 edm4eic::Cov2f:
0051 Members:
0052 - float xx
0053 - float yy
0054 - float xy
0055 ExtraCode:
0056 declaration: "
0057 Cov2f() : xx{0}, yy{0}, xy{0} {}\n
0058 Cov2f(double vx, double vy, double vxy = 0)\n
0059 : xx{static_cast<float>(vx)}, yy{static_cast<float>(vy)}, xy{static_cast<float>(vxy)} {}\n
0060 float operator()(unsigned i, unsigned j) const {\n
0061 // diagonal\n
0062 if (i == j) {\n
0063 return *(&xx + i);\n
0064 }\n
0065 // off-diagonal\n
0066 // we have as options (0, 1), and (1, 0)\n
0067 // note that, starting from xy, we find the correct element at (i+j+1)/2)\n
0068 return *(&xy + (i + j + 1) / 2);\n
0069 }\n
0070 "
0071
0072 edm4eic::Cov3f:
0073 Members:
0074 - float xx
0075 - float yy
0076 - float zz
0077 - float xy
0078 - float xz
0079 - float yz
0080 ExtraCode:
0081 declaration: "
0082 Cov3f() : xx{0}, yy{0}, zz{0}, xy{0}, xz{0}, yz{0} {}\n
0083 Cov3f(double vx, double vy, double vz, double vxy = 0, double vxz = 0, double vyz = 0)\n
0084 : xx{static_cast<float>(vx)}, yy{static_cast<float>(vy)}, zz{static_cast<float>(vz)},\n
0085 xy{static_cast<float>(vxy)}, xz{static_cast<float>(vxz)}, yz{static_cast<float>(vyz)} {}\n
0086 float operator()(unsigned i, unsigned j) const {\n
0087 // diagonal\n
0088 if (i == j) {\n
0089 return *(&xx + i);\n
0090 }\n
0091 // off-diagonal\n
0092 // we have as options (0, 1), (0, 2) and (1, 2) (and mirrored)\n
0093 // note that, starting from xy, we find the correct element at (i+j-1)\n
0094 return *(&xy + i + j - 1);\n
0095 }\n
0096 "
0097
0098 edm4eic::Cov4f:
0099 Members:
0100 - float xx
0101 - float yy
0102 - float zz
0103 - float tt
0104 - float xy
0105 - float xz
0106 - float xt
0107 - float yz
0108 - float yt
0109 - float zt
0110 ExtraCode:
0111 declaration: "
0112 Cov4f() : xx{0}, yy{0}, zz{0}, tt{0}, xy{0}, xz{0}, xt{0}, yz{0}, yt{0}, zt{0} {}\n
0113 Cov4f(double vx, double vy, double vz, double vt,\n
0114 double vxy = 0, double vxz = 0, double vxt = 0,\n
0115 double vyz = 0, double vyt = 0, double vzt = 0)\n
0116 : xx{static_cast<float>(vx)}, yy{static_cast<float>(vy)}, zz{static_cast<float>(vz)}, tt{static_cast<float>(vt)},\n
0117 xy{static_cast<float>(vxy)}, xz{static_cast<float>(vxz)}, xt{static_cast<float>(vxt)},\n
0118 yz{static_cast<float>(vyz)}, yt{static_cast<float>(vyt)}, zt{static_cast<float>(vzt)} {}\n
0119 float operator()(unsigned i, unsigned j) const {\n
0120 // diagonal\n
0121 if (i == j) {\n
0122 return *(&xx + i);\n
0123 // off-diagonal, can probably be done with less if statements \n
0124 } else {\n
0125 if (i > j) { \n
0126 std::swap(i,j); \n
0127 } \n
0128 if (i == 0) { \n
0129 return *(&xy + j - 1); \n
0130 } else if (i == 1) { \n
0131 return *(&yz + j - 2); \n
0132 } else { \n
0133 return zt; \n
0134 } \n
0135 } \n
0136 }\n
0137 "
0138
0139 edm4eic::Cov6f:
0140 Members:
0141 - std::array<float, 21> covariance // 6d triangular packed covariance matrix
0142 ExtraCode:
0143 declaration: "
0144 Cov6f() : covariance{} {}\n
0145 Cov6f(std::array<float, 21> vcov) : covariance{vcov}{}\n
0146 float operator()(unsigned i, unsigned j) const {\n
0147 if(i > j) {\n
0148 std::swap(i, j);\n
0149 }\n
0150 return covariance[i + 1 + (j + 1) * (j) / 2 - 1];\n
0151 }\n
0152 float& operator()(unsigned i, unsigned j) {\n
0153 if(i > j) {\n
0154 std::swap(i, j);\n
0155 }\n
0156 return covariance[i + 1 + (j + 1) * (j) / 2 - 1];\n
0157 }\n
0158 "
0159
0160 ## A point along a track
0161 edm4eic::TrackPoint:
0162 Members:
0163 - uint64_t surface // Surface track was propagated to (possibly multiple per detector)
0164 - uint32_t system // Detector system track was propagated to
0165 - edm4hep::Vector3f position // Position of the trajectory point [mm]
0166 - edm4eic::Cov3f positionError // Error on the position
0167 - edm4hep::Vector3f momentum // 3-momentum at the point [GeV]
0168 - edm4eic::Cov3f momentumError // Error on the 3-momentum
0169 - float time // Time at this point [ns]
0170 - float timeError // Error on the time at this point
0171 - float theta // polar direction of the track at the surface [rad]
0172 - float phi // azimuthal direction of the track at the surface [rad]
0173 - edm4eic::Cov2f directionError // Error on the polar and azimuthal angles
0174 - float pathlength // Pathlength from the origin to this point
0175 - float pathlengthError // Error on the pathlength
0176
0177 ## PID hypothesis from Cherenkov detectors
0178 edm4eic::CherenkovParticleIDHypothesis:
0179 Members:
0180 - int32_t PDG // PDG code
0181 - float npe // Overall photoelectron count
0182 - float weight // Weight of this hypothesis, such as likelihood, moment, etc.
0183
0184 ## Representation of surfaces, including dynamic perigee surfaces (identical to ActsPodioEdm::Surface)
0185 edm4eic::Surface:
0186 Members:
0187 - int surfaceType // Cone = 0, Cylinder = 1, Disc = 2, Perigee = 3, Plane = 4, Straw = 5, Curvilinear = 6, Other = 7
0188 - 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
0189 - uint64_t geometryId // bit pattern volume:8,boundary:8,layer:12,approach:8,sensitive:20,extra:8
0190 - uint64_t identifier // identifier of associated detector element, if available
0191 - std::array<double,10> boundValues // bound values, e.g. for RectangleBounds, BoundValues are eMinX = 0, eMinY = 1, eMaxX = 2, eMaxY = 3, eSize = 4
0192 - uint32_t boundValuesSize // size of bound values
0193 - 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
0194
0195 ## An individual sample output by a CALOROC1A chip
0196 edm4eic::CALOROC1ASample:
0197 Members:
0198 - uint16_t ADC // [ADC Counts], amplitude of signal during sample, valid IFF TOTInProgress is false
0199 - uint16_t timeOfArrival // Time of arrival (TOA) [TDC counts], nonzero IFF ADC crossed threshold upwards during sample
0200 - 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
0201
0202 ## An individual sample output by a CALOROC1B chip
0203 edm4eic::CALOROC1BSample:
0204 Members:
0205 - uint16_t lowGainADC // [ADC Counts], amplitude of signal during sample in the low gain mode
0206 - uint16_t highGainADC // [ADC Counts], amplitude of signal during sample in the high gain mode
0207 - uint16_t timeOfArrival // Time of arrival (TOA) [TDC counts]
0208
0209 ## Event-level truthiness information
0210 edm4eic::TruthinessContribution:
0211 Members:
0212 - float pid // Contribution of PID matching to truthiness
0213 - float energy // Contribution of energy matching to truthiness
0214 - float momentum // Contribution of momentum matching to truthiness
0215
0216 datatypes:
0217
0218 edm4eic::Tensor:
0219 Description: "Tensor type for use in training in inference of ML models"
0220 Author: "D. Kalinkin"
0221 Members:
0222 - int32_t elementType // Data type in the same encoding as "ONNXTensorElementDataType", 1 - float, 7 - int64
0223 VectorMembers:
0224 - int64_t shape // Vector of tensor lengths along its axes
0225 - float floatData // Iff elementType==1, values are stored here
0226 - int64_t int64Data // Iff elementType==7, values are stored here
0227
0228 ## ==========================================================================
0229 ## Simulation info
0230 ## ==========================================================================
0231
0232 edm4eic::SimPulse:
0233 Description: "Simulated pulse prior to digitization."
0234 Author: "D. Anderson, S. Gardner, S. Joosten., D. Kalinkin"
0235 Members:
0236 - uint64_t cellID // ID of the readout cell for this pulse.
0237 - float integral // Total pulse integral in relevant units.
0238 - edm4hep::Vector3f position // Position the pulse is evaluated in world coordinates [mm].
0239 - float time // Start time for the pulse in [ns].
0240 - float interval // Time interval between amplitude values [ns].
0241 VectorMembers:
0242 - float amplitude // Pulse amplitude in relevant units, sum of amplitude values equals integral
0243 OneToManyRelations:
0244 - edm4hep::SimCalorimeterHit calorimeterHits // SimCalorimeterHits used to create this pulse
0245 - edm4hep::SimTrackerHit trackerHits // SimTrackerHits used to create this pulse
0246 - edm4eic::SimPulse pulses // SimPulses used to create this pulse
0247 - edm4hep::MCParticle particles // MCParticle that caused the pulse
0248
0249 ## ==========================================================================
0250 ## Particle info
0251 ## ==========================================================================
0252
0253 edm4eic::ReconstructedParticle:
0254 Description: "EIC Reconstructed Particle"
0255 Author: "W. Armstrong, S. Joosten, F. Gaede"
0256 Members:
0257 - int32_t type // type of reconstructed particle. Check/set collection parameters ReconstructedParticleTypeNames and ReconstructedParticleTypeValues.
0258 - float energy // [GeV] energy of the reconstructed particle. Four momentum state is not kept consistent internally.
0259 - edm4hep::Vector3f momentum // [GeV] particle momentum. Four momentum state is not kept consistent internally.
0260 - edm4hep::Vector3f referencePoint // [mm] reference, i.e. where the particle has been measured
0261 - float charge // charge of the reconstructed particle.
0262 - float mass // [GeV] mass of the reconstructed particle, set independently from four vector. Four momentum state is not kept consistent internally.
0263 - float goodnessOfPID // overall goodness of the PID on a scale of [0;1]
0264 - edm4eic::Cov4f covMatrix // covariance matrix of the reconstructed particle 4vector (10 parameters).
0265 - int32_t PDG // PDG code for this particle
0266 ## @TODO: Do we need timing info? Or do we rely on the start vertex time?
0267 OneToOneRelations:
0268 - edm4eic::Vertex startVertex // Start vertex associated to this particle
0269 - edm4hep::ParticleID particleIDUsed // particle ID used for the kinematics of this particle
0270 OneToManyRelations:
0271 - edm4eic::Cluster clusters // Clusters used for this particle
0272 - edm4eic::Track tracks // Tracks used for this particle
0273 - edm4eic::ReconstructedParticle particles // Reconstructed particles that have been combined to this particle
0274 - edm4hep::ParticleID particleIDs // All associated particle IDs for this particle (not sorted by likelihood)
0275 ExtraCode:
0276 declaration: "
0277 bool isCompound() const {return particles_size() > 0;}\n
0278 "
0279
0280 ## ==========================================================================
0281 ## Calorimetry
0282 ## ==========================================================================
0283
0284 edm4eic::RawCALOROCHit:
0285 Description: "Raw hit from a CALOROC1A/B chip"
0286 Author: "D. Anderson, S. Joosten, T. Protzman, N. Novitzky, D. Kalinkin, M. Zurek, M. H. Kim"
0287 Members:
0288 - uint64_t cellID // Detector specific (geometrical) cell id
0289 - int32_t samplePhase // Phase of samples in [# samples], for synchronizing across chips
0290 - int32_t timeStamp // [TDC counts]
0291 VectorMembers:
0292 - edm4eic::CALOROC1ASample aSamples // ADC, Time of Arrival (TOA), and Time over Threshold (TOT) values for each sample read out
0293 - edm4eic::CALOROC1BSample bSamples // Low- and high-gain ADC and Time of Arrival (TOA) values for each sample read out
0294
0295 edm4eic::CalorimeterHit:
0296 Description: "Calorimeter hit"
0297 Author: "W. Armstrong, S. Joosten"
0298 Members:
0299 - uint64_t cellID // The detector specific (geometrical) cell id.
0300 - float energy // The energy for this hit in [GeV].
0301 - float energyError // Error on energy [GeV].
0302 - float time // The time of the hit in [ns].
0303 - float timeError // Error on the time
0304 - edm4hep::Vector3f position // The global position of the hit in world coordinates [mm].
0305 - edm4hep::Vector3f dimension // The dimension information of the cell [mm].
0306 - int32_t sector // Sector that this hit occurred in
0307 - int32_t layer // Layer that the hit occurred in
0308 - edm4hep::Vector3f local // The local coordinates of the hit in the detector segment [mm].
0309 OneToOneRelations:
0310 - edm4hep::RawCalorimeterHit rawHit // Related raw calorimeter hit
0311
0312 ## ==========================================================================
0313 ## Clustering
0314 ## ==========================================================================
0315
0316 edm4eic::ProtoCluster:
0317 Description: "Collection of hits identified by the clustering algorithm to belong together"
0318 Author: "S. Joosten"
0319 OneToManyRelations:
0320 - edm4eic::CalorimeterHit hits // Hits associated with this cluster
0321 VectorMembers:
0322 - float weights // Weight for each of the hits, mirrors hits array
0323
0324 edm4eic::Cluster:
0325 Description: "EIC hit cluster, reworked to more closely resemble EDM4hep"
0326 Author: "W. Armstrong, S. Joosten, C.Peng"
0327 Members:
0328 - int32_t type // Flag-word that defines the type of the cluster
0329 - float energy // Reconstructed energy of the cluster [GeV].
0330 - float energyError // Error on the cluster energy [GeV]
0331 - float time // [ns]
0332 - float timeError // Error on the cluster time
0333 - uint32_t nhits // Number of hits in the cluster.
0334 - edm4hep::Vector3f position // Global position of the cluster [mm].
0335 - edm4eic::Cov3f positionError // Covariance matrix of the position (6 Parameters).
0336 - float radius // Cluster radius [mm].
0337 - float dispersion // Cluster dispersion [mm].
0338 - std::array<float, 3> principalAxesLengthsXYZ // Lengths along the cluster's principal axes [mm], sorted in descending order (equivalent to sqrt of eigenvalues of the position covariance). For an XY planar detector one can expect this to be [sigma_max, sigma_min, 0].
0339 - std::array<float, 2> principalAxesLengthsThetaPhi // Lengths along the cluster's principal axes [rad], sorted in descending order.
0340 - float intrinsicTheta // Intrinsic cluster propagation direction polar angle [rad].
0341 - float intrinsicPhi // Intrinsic cluster propagation direction azimuthal angle [rad]. For an XY planar detector one can expect this to be the tilt of "sigma_max" axis.
0342 - edm4eic::Cov2f intrinsicDirectionError // Error on the intrinsic cluster propagation direction
0343 VectorMembers:
0344 - float shapeParameters // [DEPRECATED] use radius, dispersion, principalAxesLengthsXYZ/ThetaPhi instead.
0345 - float hitContributions // Energy contributions of the hits. Runs parallel to ::hits()
0346 - float subdetectorEnergies // Energies observed in each subdetector used for this cluster.
0347 OneToManyRelations:
0348 - edm4eic::Cluster clusters // Clusters that have been combined to form this cluster
0349 - edm4eic::CalorimeterHit hits // Hits that have been combined to form this cluster
0350 - edm4hep::ParticleID particleIDs // Particle IDs sorted by likelihood
0351
0352 ## ==========================================================================
0353 ## RICH/Cherenkov and PID
0354 ## ==========================================================================
0355
0356 edm4eic::PMTHit:
0357 Description: "EIC PMT hit"
0358 Author: "S. Joosten, C. Peng"
0359 Members:
0360 - uint64_t cellID // The detector specific (geometrical) cell id.
0361 - float npe // Estimated number of photo-electrons [#]
0362 # @TODO do we need an uncertainty on NPE?
0363 - float time // Time [ns]
0364 - float timeError // Error on the time [ns]
0365 - edm4hep::Vector3f position // PMT hit position [mm]
0366 - edm4hep::Vector3f dimension // The dimension information of the pixel [mm].
0367 - int32_t sector // The sector this hit occurred in
0368 - edm4hep::Vector3f local // The local position of the hit in detector coordinates (relative to the sector) [mm]
0369
0370 edm4eic::CherenkovParticleID:
0371 Description: "Cherenkov detector PID"
0372 Author: "A. Kiselev, C. Chatterjee, C. Dilks"
0373 Members:
0374 - float npe // Overall photoelectron count
0375 - float refractiveIndex // Average refractive index at the Cherenkov photons' vertices
0376 - float photonEnergy // Average energy for these Cherenkov photons [GeV]
0377 VectorMembers:
0378 - edm4eic::CherenkovParticleIDHypothesis hypotheses // Evaluated PDG hypotheses
0379 - edm4hep::Vector2f thetaPhiPhotons // estimated (theta,phi) for each Cherenkov photon
0380 OneToOneRelations:
0381 - edm4eic::TrackSegment chargedParticle // reconstructed charged particle
0382 OneToManyRelations:
0383 - edm4eic::MCRecoTrackerHitAssociation rawHitAssociations // raw sensor hits, associated with MC hits
0384
0385 edm4eic::IrtRadiatorInfo:
0386 Description: "IRT 2.1 output (radiator level)"
0387 Author: "A. Kiselev"
0388 Members:
0389 - uint16_t npe // Detected photoelectron count
0390 - uint16_t nhits // Hit count associated with this radiator by IRT engine
0391 - float angle // Reconstructed Cherenkov angle
0392
0393 edm4eic::IrtParticle:
0394 Description: "IRT 2.1 output (track level)"
0395 Author: "A. Kiselev"
0396 Members:
0397 - int32_t PDG // Reconstructed most probable PDG code
0398 - uint16_t npe // Detected photoelectron count
0399 - uint16_t nhits // Hit count associated with this particle by IRT engine
0400 OneToOneRelations:
0401 - edm4eic::Track track // charged particle track
0402 OneToManyRelations:
0403 - edm4eic::IrtRadiatorInfo radiators // radiator-related information
0404
0405 edm4eic::RingImage:
0406 ##@TODO: Juggler support; not used in EICrecon
0407 Description: "EIC Ring Image Cluster"
0408 Author: "S. Joosten, C. Peng"
0409 Members:
0410 - float npe // Number of photo-electrons [#]
0411 - edm4hep::Vector3f position // Global position of the cluster [mm]
0412 - edm4hep::Vector3f positionError // Error on the position
0413 - float theta // Opening angle of the ring [rad, 0->pi]
0414 - float thetaError // Error on the opening angle
0415 - float radius // Radius of the best fit ring [mm]
0416 - float radiusError // Estimated error from the fit [mm]
0417
0418 ## ==========================================================================
0419 ## Tracking
0420 ## ==========================================================================
0421
0422 edm4eic::RawTrackerHit:
0423 Description: "Raw (digitized) tracker hit"
0424 Author: "W. Armstrong, S. Joosten"
0425 Members:
0426 - uint64_t cellID // The detector specific (geometrical) cell id.
0427 - int32_t charge // ADC value
0428 ## @TODO: is charge appropriate here? Needs revisiting.
0429 - int32_t timeStamp // TDC value.
0430
0431 edm4eic::TrackerHit:
0432 Description: "Tracker hit (reconstructed from Raw)"
0433 Author: "W. Armstrong, S. Joosten"
0434 Members:
0435 - uint64_t cellID // The detector specific (geometrical) cell id.
0436 - edm4hep::Vector3f position // Hit (cell) position [mm]
0437 - edm4eic::CovDiag3f positionError // Covariance Matrix
0438 - float time // Hit time [ns]
0439 - float timeError // Error on the time
0440 - float edep // Energy deposit in this hit [GeV]
0441 - float edepError // Error on the energy deposit [GeV]
0442 OneToOneRelations:
0443 - edm4eic::RawTrackerHit rawHit // Related raw tracker hit
0444
0445 edm4eic::Measurement2D:
0446 Description: "2D measurement (on an arbitrary surface)"
0447 Author: "W. Deconinck"
0448 Members:
0449 - uint64_t surface // Surface for bound coordinates (geometryID)
0450 - edm4hep::Vector2f loc // 2D location on surface
0451 - float time // Measurement time
0452 - edm4eic::Cov3f covariance // Covariance on location and time
0453 VectorMembers:
0454 - float weights // Weight for each of the hits, mirrors hits array
0455 OneToManyRelations:
0456 - edm4eic::TrackerHit hits // Hits in this measurement (single or clustered)
0457
0458 edm4eic::TrackSeed:
0459 Description: "Seed info from the realistic seed finder"
0460 Author: "S. Li, B. Schmookler, J. Osborn"
0461 Members:
0462 - edm4hep::Vector3f perigee // Vector for the perigee (line surface)
0463 - float quality // Seed quality reported by finder
0464 OneToManyRelations:
0465 - edm4eic::TrackerHit hits // Tracker hits triplet for seeding
0466 OneToOneRelations:
0467 - edm4eic::TrackParameters params // Initial track parameters
0468
0469 edm4eic::Trajectory:
0470 Description: "Raw trajectory from the tracking algorithm. What is called hit here is 2d measurement indeed."
0471 Author: "S. Joosten, S. Li"
0472 Members:
0473 - uint32_t type // 0 (does not have good track fit), 1 (has good track fit)
0474 - uint32_t nStates // Number of tracking steps
0475 - uint32_t nMeasurements // Number of hits used
0476 - uint32_t nOutliers // Number of hits not considered
0477 - uint32_t nHoles // Number of missing hits
0478 - uint32_t nSharedHits // Number of shared hits with other trajectories
0479 VectorMembers:
0480 - float measurementChi2 // Chi2 for each of the measurements
0481 - float outlierChi2 // Chi2 for each of the outliers
0482 OneToManyRelations:
0483 - edm4eic::TrackParameters trackParameters // Associated track parameters, if any
0484 - edm4eic::Measurement2D measurements_deprecated // Measurements that were used for this track. Will move this to the edm4eic::Track
0485 - edm4eic::Measurement2D outliers_deprecated // Measurements that were not used for this track. Will move this to the edm4eic::Track
0486 OneToOneRelations:
0487 - edm4eic::TrackSeed seed // Corresponding track seed
0488
0489 edm4eic::TrackParameters:
0490 Description: "ACTS Bound Track parameters"
0491 Author: "W. Armstrong, S. Joosten, J. Osborn"
0492 Members:
0493 - int32_t type // Type of track parameters (-1/seed, 0/head, ...)
0494 - uint64_t surface // Surface for bound parameters (geometryID)
0495 - edm4hep::Vector2f loc // 2D location on surface
0496 - float phi // Track azimuthal angle [rad]
0497 - float theta // Track polar angle [rad]
0498 - float qOverP // [e/GeV]
0499 - float time // Track time [ns]
0500 - int32_t pdg // pdg pid for these parameters
0501 - edm4eic::Cov6f covariance // Full covariance in basis following ACTS convention [l0,l1,phi,theta,q/p,t]
0502
0503
0504 edm4eic::Track:
0505 Description: "Track information at the vertex"
0506 Author: "S. Joosten, J. Osborn"
0507 Members:
0508 - int32_t type // Flag that defines the type of track
0509 - edm4hep::Vector3f position // Track 3-position at the vertex
0510 - edm4hep::Vector3f momentum // Track 3-momentum at the vertex [GeV]
0511 - edm4eic::Cov6f positionMomentumCovariance // Covariance matrix in basis [x,y,z,px,py,pz]
0512 - float time // Track time at the vertex [ns]
0513 - float timeError // Error on the track vertex time
0514 - float charge // Particle charge
0515 - float chi2 // Total chi2
0516 - uint32_t ndf // Number of degrees of freedom
0517 - int32_t pdg // PDG particle ID hypothesis
0518 OneToOneRelations:
0519 - edm4eic::Trajectory trajectory // Trajectory of this track
0520 OneToManyRelations:
0521 - edm4eic::Measurement2D measurements // Measurements that were used for this track
0522 - edm4eic::Track tracks // Tracks (segments) that have been combined to create this track
0523
0524 edm4eic::TrackSegment:
0525 Description: "A track segment defined by one or more points along a track."
0526 Author: "S. Joosten"
0527 Members:
0528 - float length // Pathlength from the first to the last point
0529 - float lengthError // Error on the segment length
0530 OneToOneRelations:
0531 - edm4eic::Track track // Track used for this projection
0532 VectorMembers:
0533 - edm4eic::TrackPoint points // Points where the track parameters were evaluated
0534
0535 ## ==========================================================================
0536 ## Vertexing
0537 ## ==========================================================================
0538
0539 edm4eic::Vertex:
0540 Description: "EIC vertex"
0541 Author: "J. Osborn"
0542 Members:
0543 - int32_t type // Type flag, to identify what type of vertex it is (e.g. primary, secondary, generated, etc.)
0544 - float chi2 // Chi-squared of the vertex fit
0545 - int ndf // NDF of the vertex fit
0546 - edm4hep::Vector4f position // position [mm] + time t0 [ns] of the vertex. Time is 4th component in vector
0547 ## this is named "covMatrix" in EDM4hep, renamed for consistency with the rest of edm4eic
0548 - edm4eic::Cov4f positionError // Covariance matrix of the position+time. Time is 4th component, similarly to 4vector
0549 OneToManyRelations:
0550 - edm4eic::ReconstructedParticle associatedParticles // particles associated to this vertex.
0551
0552 ## ==========================================================================
0553 ## Kinematic reconstruction
0554 ## ==========================================================================
0555
0556 edm4eic::InclusiveKinematics:
0557 Description: "Kinematic variables for DIS events"
0558 Author: "S. Joosten, W. Deconinck"
0559 Members:
0560 - float x // Bjorken x (Q2/2P.q)
0561 - float Q2 // Four-momentum transfer squared [GeV^2]
0562 - float W // Invariant mass of final state [GeV]
0563 - float y // Inelasticity (P.q/P.k)
0564 - float nu // Energy transfer P.q/M [GeV]
0565 OneToOneRelations:
0566 - edm4eic::ReconstructedParticle scat // Associated scattered electron (if identified)
0567 ## @TODO: Spin state?
0568 ## - phi_S?
0569
0570 edm4eic::HadronicFinalState:
0571 Description: "Summed quantities of the hadronic final state"
0572 Author: "T. Kutz"
0573 Members:
0574 - float sigma // Longitudinal energy-momentum balance (aka E - pz)
0575 - float pT // Transverse momentum
0576 - float gamma // Hadronic angle
0577 OneToManyRelations:
0578 - edm4eic::ReconstructedParticle hadrons // Reconstructed hadrons used in calculation
0579
0580 edm4eic::Jet:
0581 Description: "A reconstructed jet, inspired by the FastJet PseudoJet"
0582 Author: "D. Anderson"
0583 Members:
0584 - uint32_t type // Jet type as enumerated in fastjet::JetAlgorithm
0585 - float area // Jet area
0586 - float energy // Jet energy [GeV]
0587 - float backgroundEnergyDensity // Background energy density [GeV/area]
0588 - edm4hep::Vector3f momentum // Jet 3-momentum [GeV]
0589 OneToManyRelations:
0590 - edm4eic::ReconstructedParticle constituents // Constituents of this jet
0591 ExtraCode:
0592 declaration: "
0593 /// Compute the background energy in [GeV]\n
0594 float getBackgroundEnergy() const { return getArea() * getBackgroundEnergyDensity(); }\n
0595 "
0596
0597 ## ==========================================================================
0598 ## Data-Monte Carlo relations
0599 ## ==========================================================================
0600
0601 edm4eic::MCRecoParticleAssociation:
0602 Description: "Used to keep track of the correspondence between MC and reconstructed particles"
0603 Author: "S. Joosten"
0604 Members:
0605 - float weight // weight of this association
0606 OneToOneRelations :
0607 - edm4eic::ReconstructedParticle rec // reference to the reconstructed particle
0608 - edm4hep::MCParticle sim // reference to the Monte-Carlo particle
0609 ExtraCode:
0610 includes: "
0611 #include <edm4eic/ReconstructedParticle.h>\n
0612 #include <edm4hep/MCParticle.h>\n
0613 "
0614 declaration: "
0615 [[deprecated(\"use getSim().getObjectID().index instead\")]]
0616 int getSimID() const { return getSim().getObjectID().index; }\n
0617 [[deprecated(\"use getRec().getObjectID().index instead\")]]
0618 int getRecID() const { return getRec().getObjectID().index; }\n
0619 "
0620 MutableExtraCode:
0621 includes: "
0622 #include <edm4eic/ReconstructedParticle.h>\n
0623 #include <edm4hep/MCParticle.h>\n
0624 "
0625 declaration: "
0626 [[deprecated(\"use setSim() instead; this function does nothing\")]]
0627 void setSimID(int) { }\n
0628 [[deprecated(\"use setRec() instead; this function does nothing\")]]
0629 void setRecID(int) { }\n
0630 "
0631
0632 edm4eic::MCRecoClusterParticleAssociation:
0633 Description: "Association between a Cluster and a MCParticle"
0634 Author : "S. Joosten"
0635 Members:
0636 - float weight // weight of this association
0637 OneToOneRelations:
0638 - edm4eic::Cluster rec // reference to the cluster
0639 - edm4hep::MCParticle sim // reference to the Monte-Carlo particle
0640 ExtraCode:
0641 includes: "
0642 #include <edm4eic/Cluster.h>\n
0643 #include <edm4hep/MCParticle.h>\n
0644 "
0645 declaration: "
0646 [[deprecated(\"use getSim().getObjectID().index instead\")]]
0647 int getSimID() const { return getSim().getObjectID().index; }\n
0648 [[deprecated(\"use getRec().getObjectID().index instead\")]]
0649 int getRecID() const { return getRec().getObjectID().index; }\n
0650 "
0651 MutableExtraCode:
0652 includes: "
0653 #include <edm4eic/Cluster.h>\n
0654 #include <edm4hep/MCParticle.h>\n
0655 "
0656 declaration: "
0657 [[deprecated(\"use setSim() instead; this function does nothing\")]]
0658 void setSimID(int) { }\n
0659 [[deprecated(\"use setRec() instead; this function does nothing\")]]
0660 void setRecID(int) { }\n
0661 "
0662
0663 edm4eic::MCRecoTrackParticleAssociation:
0664 Description: "Association between a Track and a MCParticle"
0665 Author : "S. Joosten"
0666 Members:
0667 - float weight // weight of this association
0668 OneToOneRelations:
0669 - edm4eic::Track rec // reference to the track
0670 - edm4hep::MCParticle sim // reference to the Monte-Carlo particle
0671 ExtraCode:
0672 includes: "
0673 #include <edm4eic/Track.h>\n
0674 #include <edm4hep/MCParticle.h>\n
0675 "
0676 declaration: "
0677 [[deprecated(\"use getSim().getObjectID().index instead\")]]
0678 int getSimID() const { return getSim().getObjectID().index; }\n
0679 [[deprecated(\"use getRec().getObjectID().index instead\")]]
0680 int getRecID() const { return getRec().getObjectID().index; }\n
0681 "
0682 MutableExtraCode:
0683 includes: "
0684 #include <edm4eic/Track.h>\n
0685 #include <edm4hep/MCParticle.h>\n
0686 "
0687 declaration: "
0688 [[deprecated(\"use setSim() instead; this function does nothing\")]]
0689 void setSimID(int) { }\n
0690 [[deprecated(\"use setRec() instead; this function does nothing\")]]
0691 void setRecID(int) { }\n
0692 "
0693
0694 edm4eic::MCRecoVertexParticleAssociation:
0695 Description: "Association between a Vertex and a MCParticle"
0696 Author : "S. Joosten"
0697 Members:
0698 - float weight // weight of this association
0699 OneToOneRelations:
0700 - edm4eic::Vertex rec // reference to the vertex
0701 - edm4hep::MCParticle sim // reference to the Monte-Carlo particle
0702 ExtraCode:
0703 includes: "
0704 #include <edm4eic/Vertex.h>\n
0705 #include <edm4hep/MCParticle.h>\n
0706 "
0707 declaration: "
0708 [[deprecated(\"use getSim().getObjectID().index instead\")]]
0709 int getSimID() const { return getSim().getObjectID().index; }\n
0710 [[deprecated(\"use getRec().getObjectID().index instead\")]]
0711 int getRecID() const { return getRec().getObjectID().index; }\n
0712 "
0713 MutableExtraCode:
0714 includes: "
0715 #include <edm4eic/Vertex.h>\n
0716 #include <edm4hep/MCParticle.h>\n
0717 "
0718 declaration: "
0719 [[deprecated(\"use setSim() instead; this function does nothing\")]]
0720 void setSimID(int) { }\n
0721 [[deprecated(\"use setRec() instead; this function does nothing\")]]
0722 void setRecID(int) { }\n
0723 "
0724
0725 edm4eic::MCRecoTrackerHitAssociation:
0726 Description: "Association between a RawTrackerHit and a SimTrackerHit"
0727 Author: "C. Dilks, W. Deconinck"
0728 Members:
0729 - float weight // weight of this association
0730 OneToOneRelations:
0731 - edm4eic::RawTrackerHit rawHit // reference to the digitized hit
0732 - edm4hep::SimTrackerHit simHit // reference to the simulated hit
0733
0734 edm4eic::MCRecoCalorimeterHitAssociation:
0735 Description: "Association between a RawCalorimeterHit and a SimCalorimeterHit"
0736 Author: "S. Rahman"
0737 Members:
0738 - float weight // weight of this association
0739 OneToOneRelations:
0740 - edm4hep::RawCalorimeterHit rawHit // reference to the digitized calorimeter hit
0741 - edm4hep::SimCalorimeterHit simHit // reference to the simulated calorimeter hit
0742
0743 edm4eic::TrackClusterMatch:
0744 Description: "Match between a Cluster and a Track"
0745 Author: "D. Anderson, D. Brandenburg, D. Kalinkin, S. Joosten"
0746 Members:
0747 - float weight // weight of this association
0748 OneToOneRelations:
0749 - edm4eic::Cluster cluster // reference to the cluster
0750 - edm4eic::Track track // reference to the track
0751
0752 edm4eic::TrackProtoClusterMatch:
0753 Description: "Match between a ProtoCluster and a Track"
0754 Author: "D. Anderson, D. Kalinkin"
0755 Members:
0756 - float weight // weight of this association
0757 OneToOneRelations:
0758 - edm4eic::Track from // reference to the track
0759 - edm4eic::ProtoCluster to // reference to the protocluster
0760
0761 ## ==========================================================================
0762 ## Data-Monte Carlo comparisons
0763 ## ==========================================================================
0764
0765 edm4eic::Truthiness:
0766 Description: "Positive-definite convex norm of how confidently wrong the reconstruction is,
0767 with non-negative contributions from various aspects of the reconstruction,
0768 where a zero value indicates a perfect reconstruction."
0769 Author: "W. Deconinck, S. Colbert"
0770 Members:
0771 - float truthiness // Overall truthiness of the entire event
0772 - edm4eic::TruthinessContribution associationContribution // Contribution from all associated particles
0773 - float unassociatedMCParticlesContribution // Contribution from unassociated MC particles
0774 - float unassociatedRecoParticlesContribution // Contribution from unassociated reconstructed particles
0775 VectorMembers:
0776 - edm4eic::TruthinessContribution associationContributions // Contribution from associated particles
0777 OneToManyRelations:
0778 - edm4eic::MCRecoParticleAssociation associations // Reference to the associated particles
0779 - edm4hep::MCParticle unassociatedMCParticles // Reference to the unassociated MC particles
0780 - edm4eic::ReconstructedParticle unassociatedRecoParticles // Reference to the unassociated reconstructed particles
0781
0782 links:
0783
0784 edm4eic::MCRecoParticleLink:
0785 Description: "Used to keep track of the correspondence between MC and reconstructed particles"
0786 Author: "S. Joosten"
0787 From: edm4eic::ReconstructedParticle
0788 To: edm4hep::MCParticle
0789
0790 edm4eic::MCRecoClusterParticleLink:
0791 Description: "Association between a Cluster and a MCParticle"
0792 Author : "S. Joosten"
0793 From: edm4eic::Cluster
0794 To: edm4hep::MCParticle
0795
0796 edm4eic::MCRecoTrackParticleLink:
0797 Description: "Association between a Track and a MCParticle"
0798 Author : "S. Joosten"
0799 From: edm4eic::Track
0800 To: edm4hep::MCParticle
0801
0802 edm4eic::MCRecoVertexParticleLink:
0803 Description: "Association between a Vertex and a MCParticle"
0804 Author : "S. Joosten"
0805 From: edm4eic::Vertex
0806 To: edm4hep::MCParticle
0807
0808 edm4eic::MCRecoTrackerHitLink:
0809 Description: "Association between a RawTrackerHit and a SimTrackerHit"
0810 Author: "C. Dilks, W. Deconinck"
0811 From: edm4eic::RawTrackerHit
0812 To: edm4hep::SimTrackerHit
0813
0814 edm4eic::MCRecoCalorimeterHitLink:
0815 Description: "Association between a RawCalorimeterHit and a SimCalorimeterHit"
0816 Author: "S. Rahman"
0817 From: edm4hep::RawCalorimeterHit
0818 To: edm4hep::SimCalorimeterHit
0819
0820 edm4eic::TrackClusterLink:
0821 Description: "Match between a Cluster and a Track"
0822 Author: "D. Anderson, D. Brandenburg, D. Kalinkin, S. Joosten"
0823 From: edm4eic::Cluster
0824 To: edm4eic::Track
0825
0826 edm4eic::TrackProtoClusterLink:
0827 Description: "Link between a ProtoCluster and a Track"
0828 Author: "D. Anderson, D. Kalinkin"
0829 From: edm4eic::Track
0830 To: edm4eic::ProtoCluster