diff --git a/dd4hep.yaml b/dd4hep.yaml deleted file mode 100644 index 18f6a1f345d4d5de8ea688697fe05d053a84b3dc..0000000000000000000000000000000000000000 --- a/dd4hep.yaml +++ /dev/null @@ -1,137 +0,0 @@ ---- -options : - # should getters / setters be prefixed with get / set? - getSyntax: False - # should POD members be exposed with getters/setters in classes that have them as members? - exposePODMembers: False - includeSubfolder: True - -components: - - dd4pod::VectorXYZ: - Members: - - double x // [mm] or [GeV] - - double y // - - double z // - ExtraCode: - includes: "#include <cmath>\n#include<tuple>" - declaration: " - VectorXYZ() : x{0}, y{0}, z{0} {}\n - VectorXYZ(double xx, double yy, double zz) : x{xx}, y{yy}, z{zz} {}\n - double& operator[](unsigned i) {return *(&x + i);}\n - const double& operator[](unsigned i) const {return *(&x + i);}\n - double mag() const {return std::hypot(x, y, z);}\n - double r() const {return mag();}\n - double theta() const {return acos(z/mag());}\n - double phi() const {return atan2(y,x);}\n - double eta() const {return -log(tan(0.5*theta()));}\n - operator std::tuple<double, double, double>() {return {x, y, z};}\n - double dot(const VectorXYZ& rhs) const {return x*rhs.x + y*rhs.y + z*rhs.z;}\n - VectorXYZ add(const VectorXYZ& rhs) const {return {x+rhs.x, y+rhs.y, z+rhs.z};}\n - VectorXYZ subtract(const VectorXYZ& rhs) const {return {x-rhs.x, y-rhs.y, z-rhs.z};}\n - VectorXYZ scale(double f) const {return {f*x, f*y, f*z};}\n - " - - dd4pod::MonteCarloContrib: - Members: - - int32_t trackID // track id, -1 if none/invalid. Maps to Geant4Particle::ID. - - int32_t pdgID // PDG Particle ID code - - double deposit // energy deposit [GeV] - - double time // time [ns] - - double length // length [mm] - - float x // x position [mm] - - float y // y position [mm] - - float z // z position [mm] - ExtraCode: - includes: "#include <cmath>" - declaration: " - MonteCarloContrib() : trackID{-1}, pdgID{0}, deposit{0}, time{0}, x{0}, y{0}, z{0} {}\n - MonteCarloContrib(int32_t id, int32_t pdg, double e, double t,\n - double l, double xx, double yy, double zz)\n - : trackID{id}, pdgID{pdg}, deposit{e}, time{t}, length{l}\n - , x{static_cast<float>(xx)}, y{static_cast<float>(yy)}, z{static_cast<float>(zz)} {}\n - double mag() const {return std::hypot(x, y, z);}\n - double r() const {return mag();}\n - double theta() const {return acos(z/mag());}\n - double phi() const {return atan2(y,x);}\n - double eta() const {return -log(tan(0.5*theta()));} - bool valid() const {return trackID >= 0;}\n - bool empty() const {return trackID < 0;}\n - " - -datatypes: - - dd4pod::Geant4Particle: - Description: "Podio implementation of dd4hep's dd4hep::sim::Geant4Particle class" - Author : "W. Armstrong, S. Joosten" - Members: - - int32_t ID // unique identifier for this particle - - int32_t g4Parent // g4 parent particle - - int32_t reason // TODO document - - int32_t mask // TODO document - - int32_t steps // TODO document - - int32_t secondaries // TODO document - - int32_t pdgID // TODO document - - int32_t status // TODO document - - std::array<int,2> colorFlow // TODO document - - int32_t genStatus // Generator status code - - int32_t charge // Particle charge - - int32_t _spare // extra int to have doubles properly aligned at 8 bytes - - std::array<float,3> spin // Particle spin state - - dd4pod::VectorXYZ vs // Start vertex [mm] - - dd4pod::VectorXYZ ve // End vertex [mm] - - dd4pod::VectorXYZ ps // 3-momentum at start vertex [GeV] - - dd4pod::VectorXYZ pe // 3-momentum at end vertex [GeV] - - double mass // particle mass [GeV] - - double time // start vertex time [ns] - - double properTime // proper time - VectorMembers: - - int32_t parents // parent IDs - - int32_t daughters // daughter IDs - ConstExtraCode : - declaration: " - double px() const {return ps().x;}\n - double py() const {return ps().y;}\n - double pz() const {return ps().z;}\n - double energy() const {return std::hypot(ps().mag(), mass());} - " - - dd4pod::PhotoMultiplierHit: - Description: "Podio implementation of a pmt hit " - Author : "W. Armstrong, S. Joosten" - Members: - - int64_t cellID // cellID - - int32_t flag // User flag to classify hits - - int32_t g4ID // Original Geant4 track identifier of the creating track (for debugging) - - dd4pod::VectorXYZ position // hit position [mm] - - dd4pod::VectorXYZ momentum // 3-momentum [GeV] - - double length // length [mm] - - dd4pod::MonteCarloContrib truth // truth info - - double energy // photon energy [GeV] - - dd4pod::TrackerHit: - Description: "Podio implementation of dd4hep's dd4hep::sim::Geant4Tracker::Hit class" - Author : "W. Armstrong, S. Joosten" - Members: - - int64_t cellID // cellID - - int32_t flag // User flag to classify hits - - int32_t g4ID // Original Geant4 track identifier of the creating track (debugging) - - dd4pod::VectorXYZ position // position [mm] - - dd4pod::VectorXYZ momentum // 3-momentum [GeV] - - double length // length [mm] - - dd4pod::MonteCarloContrib truth // truth info - - double energyDeposit // energy deposit [GeV] - - dd4pod::CalorimeterHit: - Description: "Podio implementation of dd4hep's dd4hep::sim::Geant4Calorimeter::Hit class" - Author : "W. Armstrong, S. Joosten" - Members: - - int64_t cellID // cellID - - int32_t flag // User flag to classify hits - - int32_t g4ID // Original Geant4 track identifier of the creating track (debugging) - - dd4pod::VectorXYZ position // position [mm] - - dd4pod::MonteCarloContrib truth // truth-info of one of the contributing hits - - double energyDeposit // energy deposit [GeV] - VectorMembers: - - dd4pod::MonteCarloContrib contributions // All contributing hits. Not filled by default. - diff --git a/eic_data.yaml b/eic_data.yaml index 3d64601e6146b74adc32941f2ecb34405aa703ac..507daa149d41825566472f62224ccc7721cf6044 100644 --- a/eic_data.yaml +++ b/eic_data.yaml @@ -20,31 +20,6 @@ options : ## such as int32_t etc) components: - - ## Unique field identifier. Has 2 components: source and ID where - ## source identifies the originating collection (or algorithm) and ID - ## the ID of the entry within this collection. - ## Defaults to -1 for an unset index. - eic::Index: - Members: - - int32_t value - - int32_t source - ExtraCode: - declaration: " - Index() : source{0}, value{-1} {}\n - Index(int32_t id) : value{id}, source{0} {}\n - Index(int32_t id, int32_t src) : value{id}, source{src} {}\n - Index(Index rhs, int32_t new_src) : Index(rhs.value, new_src) {} \n - bool empty() const {return value < 0;}\n - bool valid() const {return value >= 0 && source != 0;}\n - bool equals(const eic::Index& rhs) const {return rhs.source == source && rhs.value == value;}\n - bool operator==(const eic::Index& rhs) const {return equals(rhs);}\n - bool operator!=(const eic::Index& rhs) const {return !equals(rhs);}\n - bool operator<(const eic::Index& rhs) const {return long_form() < rhs.long_form();}\n - uint64_t long_form() const {int64_t l = static_cast<int64_t>(source) << 32 | value; return l;}\n - explicit operator bool() const {return valid();} - " - # Copy from EDM4hep with conversion operators added # TODO: uncomment Vector2f conversions when we migrate to new EDM4hep version eicd::Vector2f : @@ -133,16 +108,10 @@ components: }\n // off-diagonal\n // we have as options (0, 1), and (1, 0)\n - // note that, starting from xy, we find the correct element at (i+j-1)\n - return *(&xy + i + j - 1);\n + // note that, starting from xy, we find the correct element at (i+j+1)/2)\n + return *(&xy + (i + j + 1) / 2);\n }\n " - ## ProtoCluster hit relation - eic::ProtoClusterHit: - Members: - - eic::Index ID // ID of the hit - - uint32_t index // Raw index of the hit in the relevant array - - float weight // weight of the hit eicd::Cov3f: Members: @@ -172,8 +141,49 @@ components: }\n " + eicd::Cov4f: + Members: + - float xx + - float yy + - float zz + - float tt + - float xy + - float xz + - float xt + - float yz + - float yt + - float zt + ExtraCode: + declaration: " + Cov4f() : xx{0}, yy{0}, zz{0}, xy{0}, xz{0}, xt{0}, yz{0}, yt{0}, zt{0} {}\n + Cov4f(double vx, double vy, double vz, double vxy, double vxz, double vxt, double vyz, double vyt, double vzt)\n + : xx{static_cast<float>(vx)}, yy{static_cast<float>(vy)}, zz{static_cast<float>(vz)},\n + xy{static_cast<float>(vxy)}, xz{static_cast<float>(vxz)}, xt{static_cast<float>(vxt)}, + yz{static_cast<float>(vyz)}, yt{static_cast<float>(vyt)}, zt{static_cast<float>(vzt)} {}\n + Cov4f(double vx, double vy, double vz, double vt)\n + : Cov4f(vx, vy, vz, vt, 0, 0, 0, 0, 0) {} \n + float operator()(unsigned i, unsigned j) const {\n + // diagonal\n + if (i == j) {\n + return *(&xx + i);\n + // off-diagonal, can probably be done with less if statements \n + } else {\n + if (i > j) { \n + std::swap(i,j); \n + } \n + if (i == 0) { \n + return *(&xy + j - 1); \n + } else if (i == 1) { \n + return *(&yz + j - 2); \n + } else { \n + return zt; \n + } \n + } \n + }\n + " + ## A point along a track - eic::TrackPoint: + eicd::TrackPoint: Members: - eicd::Vector3f position // Position of the trajectory point [mm] - eicd::Cov3f positionError // Error on the position @@ -193,72 +203,82 @@ datatypes: ## Event info ## ========================================================================== - eic::EventInfo: - Description: "Event Info" - Author: "W. Armstrong, S. Joosten" - Members: - - uint64_t run // Run number. - - uint64_t number // Event number. - - int32_t type // Event type identifier (TBD). - - int32_t proc // Process identifier (TBD). - - int32_t source // Source/identifier (TBD) - - float weight // Optional event weight (useful for MC) + ## Event info --> use edm4hep::EventHeader + + ## ========================================================================== + ## Simulation info + ## ========================================================================== + + ## MCParticles --> Use edm4hep::MCParticle + ## Simulated tracker hit --> Use edm4hep::SimTrackerHit + ## Simulated calorimeter hit --> Use edm4hep::SimCalorimeterHit ## ========================================================================== ## Particle info ## ========================================================================== - eic::BasicParticle: + eicd::BasicParticle: + #DEPRECATED Description: "Basic particle used internally to communicate basic particle properties." Author: "W. Armstrong, S. Joosten" Members: - - eic::Index ID // Unique particle index - - eicd::Vector3f p // Momentum [GeV] - - eicd::Vector3d v // Vertex [mm] + - eicd::Vector3f p // Momentum [GeV] + - eicd::Vector3d v // Vertex [mm] - float time // Time in [ns] - int32_t pid // Particle PDG code - int16_t status // Status code - int16_t charge // Particle charge (or sign) - float weight // Particle weight, e.g. from PID algorithm [0-1] - eic::ReconstructedParticle: + eicd::ReconstructedParticle: Description: "EIC Reconstructed Particle" - Author: "W. Armstrong, S. Joosten" + Author: "W. Armstrong, S. Joosten, F. Gaede" Members: - - eic::Index ID // Unique particle index - - eicd::Vector3f p // Momentum vector [GeV] - - eicd::Vector3d v // Vertex [mm] - - float time // Time in [ns] - - int32_t pid // PID of reconstructed particle. - - int16_t status // Status code - - int16_t charge // Particle charge (or sign) - - float weight // Particle weight, e.g. from PID algorithm [0-1] - - float theta // Polar angle of this particle [rad] - - float phi // Azimuthal angle of this particle [rad] - - float momentum // particle 3-momentum magnitude [GeV] - - float energy // Particle energy, consistent with PID assigment [GeV] - - float mass // The mass of the particle in [GeV] - - eic::Index vertexID // Start vertex for this particle - - eic::Index trackID // Index of the associated track, if any - - eic::Index ecalID // Index of associated pos/barrel/neg ECAL cluster, if any - - eic::Index hcalID // Index of associated pos/barrel/neg HCAL cluster, if any - - eic::Index cherID // Index of associated pos/barrel/neg Cherenkov info, if any - - eic::Index tofID // Index of the associated TOF info, if any - - eic::Index mcID // Index of the associated MC particle, if any + - int32_t type // type of reconstructed particle. Check/set collection parameters ReconstructedParticleTypeNames and ReconstructedParticleTypeValues. + - float energy // [GeV] energy of the reconstructed particle. Four momentum state is not kept consistent internally. + - eicd::Vector3f momentum // [GeV] particle momentum. Four momentum state is not kept consistent internally. + - eicd::Vector3f referencePoint // [mm] reference, i.e. where the particle has been measured + - float charge // charge of the reconstructed particle. + - float mass // [GeV] mass of the reconstructed particle, set independently from four vector. Four momentum state is not kept consistent internally. + - float goodnessOfPID // overall goodness of the PID on a scale of [0;1] + - eicd::Cov4f covMatrix // cvariance matrix of the reconstructed particle 4vector (10 parameters). + ##@TODO: deviation from EDM4hep: store explicit PDG ID here. Needs to be discussed how we + ## move forward as this could easiliy become unwieldy without this information here. + ## The only acceptable alternative would be to store reconstructed identified + ## particles in separate collections for the different particle types (which would + ## require some algorithmic changes but might work. Doing both might even make + ## sense. Needs some discussion, note that PID is more emphasized in NP than + ## HEP). + - int32_t PDG // PDG code for this particle + OneToOneRelations: + - eicd::Vertex startVertex // Start vertex associated to this particle + - eicd::ParticleID particleIDUsed // particle ID used for the kinematics of this particle + OneToManyRelations: + - eicd::Cluster clusters // Clusters used for this particle + - eicd::Track tracks // Tracks used for this particle + - eicd::ReconstructedParticle particles // Reconstructed particles that have been combined to this particle + - eicd::ParticleID particleIDs // All associated particle IDs for this particle (not sorted by likelihood) + ConstExtraCode: + declaration: " + bool isCompound() const {return particles_size() > 0;}\n + " ## ========================================================================== ## Calorimetry ## ========================================================================== - eic::RawCalorimeterHit: + eicd::RawCalorimeterHit: Description: "Raw (digitized) calorimeter hit" Author: "W. Armstrong, S. Joosten" Members: - uint64_t cellID // The detector specific (geometrical) cell id. - - uint64_t amplitude // The amplitude of the hit in ADC counts. + - uint64_t amplitude // The magnitude of the hit in ADC counts. + ## @TODO: should we also add integral and time-over-threshold (ToT) here? Or should + ## those all be different raw sensor types? Amplitude is + ## really not what most calorimetry sensors will give us AFAIK... - uint64_t timeStamp // Timing in TDC - eic::CalorimeterHit: + eicd::CalorimeterHit: Description: "Calorimeter hit" Author: "W. Armstrong, S. Joosten" Members: @@ -277,15 +297,15 @@ datatypes: ## Clustering ## ========================================================================== - eic::ProtoCluster: + eicd::ProtoCluster: Description: "Collection of hits identified by the clustering algorithm to belong together" Author: "S. Joosten" OneToManyRelations: - - eic::CalorimeterHit hits // Hits associated with this cluster + - eicd::CalorimeterHit hits // Hits associated with this cluster VectorMembers: - - float weights // Weight for each of the hits, mirrors hits array + - float weights // Weight for each of the hits, mirrors hits array - eic::Cluster: + eicd::Cluster: Description: "EIC hit cluster, reworked to more closely resemble EDM4hep" Author: "W. Armstrong, S. Joosten, C.Peng" Members: @@ -306,41 +326,43 @@ datatypes: - float hitContributions // Energy contributions of the hits. Runs parallel to ::hits() - float subdetectorEnergies // Energies observed in each subdetector used for this cluster. OneToManyRelations: - - eic::Cluster clusters // Clusters that have been combined to form this cluster - - eic::CalorimeterHit hits // Hits that have been combined to form this cluster - #- eic::ParticleID particleIDs // Particle IDs sorted by likelihood, TODO + - eicd::Cluster clusters // Clusters that have been combined to form this cluster + - eicd::CalorimeterHit hits // Hits that have been combined to form this cluster + - eicd::ParticleID particleIDs // Particle IDs sorted by likelihood ## ========================================================================== - ## RICH/Cherenkov data structures + ## RICH/Cherenkov and PID ## ========================================================================== - eic::RawPMTHit: + eicd::RawPMTHit: Description: "EIC Raw PMT hit" Author: "S. Joosten, C. Peng" Members: - - eic::Index ID // Unique hit ID. For MC, the value equals the Geant4 hit index. - uint64_t cellID // The detector specific (geometrical) cell id. - - uint32_t amplitude // PMT signal amplitude [ADC] - - uint32_t time // PMT signal time [TDC] + - uint32_t integral // PMT signal integral [ADC] + ## @TODO: same question as posed by RawCalorimeterHits, needs revisiting + ## when we increase realism + - uint32_t timeStamp // PMT signal time [TDC] - eic::PMTHit: + eicd::PMTHit: Description: "EIC PMT hit" Author: "S. Joosten, C. Peng" Members: - - eic::Index ID // Unique hit ID, same as one of the involved raw hits. - uint64_t cellID // The detector specific (geometrical) cell id. - float npe // Estimated number of photo-electrons [#] + # @TODO do we need an uncertainty on NPE? - float time // Time [ns] - float timeError // Error on the time [ns] - eicd::Vector3f position // PMT hit position [mm] - - eicd::Vector3f local // The local position of the hit in detector coordinates [mm] - eicd::Vector3f dimension // The dimension information of the pixel [mm]. + - int32_t sector // The sector this hit occured in + - eicd::Vector3f local // The local position of the hit in detector coordinates (relative to the sector) [mm] - eic::RingImage: + eicd::RingImage: + ##@TODO: RICH reconstruction still needs an overhaul Description: "EIC Ring Image Cluster" Author: "S. Joosten, C. Peng" Members: - - eic::Index ID // Unique cluster ID - float npe // Number of photo-electrons [#] - eicd::Vector3f position // Global position of the cluster [mm] - eicd::Vector3f positionError // Error on the position @@ -349,24 +371,34 @@ datatypes: - float radius // Radius of the best fit ring [mm] - float radiusError // Estimated error from the fit [mm] + eicd::ParticleID: + Description: "Particle identification information" + Author: "S. Joosten, based off EDM4hep" + Members: + - int32_t type // User defined type info + - int32_t PDG // PDG Code of this ID (999999 if unknown) + - int32_t algorithmType // Type of algorithm/module that created this hypothesis + - float likelihood // likelihood of this hypothesis - in a user defined normalization + VectorMembers: + - float parameters // parameters associated with this hypothesis. Check/set collection ParameterNames_PIDAlgorithmTypeName for decoding. + ## ========================================================================== ## Tracking ## ========================================================================== - eic::RawTrackerHit: + eicd::RawTrackerHit: Description: "Raw (digitized) tracker hit" Author: "W. Armstrong, S. Joosten" Members: - - eic::Index ID // Unique hit ID. For MC, the value equals the Geant4 hit index. - uint64_t cellID // The detector specific (geometrical) cell id. - - int32_t time // TDC value. - int32_t charge // ADC value + ## @TODO: is charge appropriate here? Needs revisiting. + - int32_t timeStamp // TDC value. - eic::TrackerHit: + eicd::TrackerHit: Description: "Tracker hit (reconstructed from Raw)" Author: "W. Armstrong, S. Joosten" Members: - - eic::Index ID // Unique hit ID, same as one of the involved raw hits. - uint64_t cellID // The detector specific (geometrical) cell id. - eicd::Vector3f position // Hit (cell) position and time [mm, ns] - eicd::CovDiag3f positionError // Covariance Matrix @@ -375,20 +407,7 @@ datatypes: - float edep // Energy deposit in this hit [GeV] - float edepError // Error on the energy deposit [GeV] - ## Here's a stub for a prototrack setup. If this is all we use we should - ## probably just use protocluster instead, but I assume there will be other - ## members we'll need to communicate - ## eic::ProtoTrack: - ## Description: "Proto track info" - ## Author: "W. Armstrong, S. Joosten" - ## Members: - ## eic::Index ID // Unique identifier - ## eic::Index seedID // Index of corresponding initial track parameters - ## float weight // prototrack weight, in case we share pixels [0-1] - ## VectorMembers: - ## int32_t hits // tracker hit indicies - - eic::Trajectory: + eicd::Trajectory: Description: "Raw trajectory from the tracking algorithm" Author: "S. Joosten, S. Li" Members: @@ -403,11 +422,13 @@ datatypes: VectorMembers: - float measurementChi2 // Chi2 for each of the measurements - float outlierChi2 // Chi2 for each of the outliers + OneToOneRelations: + - eicd::TrackParameters trackParameters // Associated track parameters, if any OneToManyRelations: - - eic::TrackerHit measurementHits // Measurement hits used in this trajectory - - eic::TrackerHit outlierHits // Outlier hits not used in this trajectory + - eicd::TrackerHit measurementHits // Measurement hits used in this trajectory + - eicd::TrackerHit outlierHits // Outlier hits not used in this trajectory - eic::TrackParameters: + eicd::TrackParameters: Description: "ACTS Bound Track parameters" Author: "W. Armstrong, S. Joosten" Members: @@ -422,9 +443,9 @@ datatypes: - float timeError // Error on the time - float charge // Particle charge OneToOneRelations: - - eic::Trajectory trajectory // Trajectory associated with these track parameters + - eicd::Trajectory trajectory // Trajectory associated with these track parameters - eic::Track: + eicd::Track: Description: "Track information at the vertex" Author: "S. Joosten" Members: @@ -437,41 +458,49 @@ datatypes: - float timeError // Error on the track vertex time - float charge // Particle charge OneToManyRelations: - - eic::TrackParameters parameters // Track fit parameters, the first entry (if present) is evaluated at the track head - - eic::TrackerHit trackerHits // Hits that were used for this track - - eic::Track tracks // Tracks (segments) that have been combined to create this track + - eicd::TrackParameters parameters // Track fit parameters, the first entry (if present) is evaluated at the track head + - eicd::TrackerHit trackerHits // Hits that were used for this track + - eicd::Track tracks // Tracks (segments) that have been combined to create this track - eic::TrackSegment: + eicd::TrackSegment: Description: "A track segment defined by one or more points along a track." Author: "S. Joosten" Members: - float length // Pathlength from the first to the last point - float lengthError // Error on the segment length OneToOneRelations: - - eic::Track track // Track used for this projection + - eicd::Track track // Track used for this projection VectorMembers: - - eic::TrackPoint points // Points where the track parameters were evaluated + - eicd::TrackPoint points // Points where the track parameters were evaluated ## ========================================================================== ## Vertexing ## ========================================================================== - eic::Vertex: + eicd::Vertex: Description: "EIC vertex" - Author: "W. Armstrong, S. Joosten" + Author: "W. Armstrong, S. Joosten, based off EDM4hep" Members: - - eic::Index ID // Unique vertex ID - - eicd::Vector3f position // Postion of vertex [mm] - - float time // Time of vertex [ns] - - float chi2 // Chi squared of the vertex fit. - - float probability // Probability of the vertex fit - - bool primary // Whether it is the primary vertex of the event + - int32_t primary // Boolean flag, if vertex is the primary vertex of the event + - float chi2 // Chi-squared of the vertex fit + - float probability // Probability of the vertex fit + - eicd::Vector3f position // [mm] position of the vertex. + ## this is named "covMatrix" in EDM4hep, renamed for consistency with the rest of EICD + - eicd::Cov3f positionError // Covariance matrix of the position + - int32_t algorithmType // Type code for the algorithm that has been used to create the vertex - check/set the collection parameters AlgorithmName and AlgorithmType. + ## Additional parameter not in EDM4hep: vertex time + - float time // Vertex time + VectorMembers: + - float parameters // Additional parameters related to this vertex - check/set the collection parameter "VertexParameterNames" for the parameters meaning. + OneToOneRelations: + ## @TODO: why one and not multiple particles? + - eicd::ReconstructedParticle associatedParticle // reconstructed particle associated to this vertex. ## ========================================================================== ## Kinematic reconstruction ## ========================================================================== - eic::InclusiveKinematics: + eicd::InclusiveKinematics: Description: "Kinematic variables for DIS events" Author: "S. Joosten, W. Deconinck" Members: @@ -480,6 +509,57 @@ datatypes: - float W // Invariant mass of final state [GeV] - float y // Inelasticity (P.q/P.k) - float nu // Energy transfer P.q/M [GeV] - ## Spin state? - ## phi_S? - - eic::Index scatID // Associated scattered electron (if identified) + OneToOneRelations: + - eicd::ReconstructedParticle scat // Associated scattered electron (if identified) + ## @TODO: Spin state? + ## - phi_S? + + ## ========================================================================== + ## Data-Montecarlo relations + ## ========================================================================== + + ## This is similar to the EDM4hep association, except that we can't + ## explicitly refer to MCParticles (as it's not part of EICD...). + ## To work around this, we can just store the index in MCParticles. + eicd::MCRecoParticleAssociation: + Description: "Used to keep track of the correspondence between MC and reconstructed particles" + Author: "S. Joosten" + Members: + - int32_t simID // Index of corresponding MCParticle (position in MCParticles array) + - float weight // weight of this association + OneToOneRelations : + - eicd::ReconstructedParticle rec // reference to the reconstructed particle + #- edm4hep::MCParticle sim // reference to the Monte-Carlo particle + # --> not possible as not in EICD + + eicd::MCRecoClusterParticleAssociation: + Description: "Association between a Cluster and a MCParticle" + Author : "S. Joosten" + Members: + - int32_t simID // Index of corresponding MCParticle (position in MCParticles array) + - float weight // weight of this association + OneToOneRelations: + - eicd::Cluster rec // reference to the cluster + #- edm4hep::MCParticle sim // reference to the Monte-Carlo particle + # --> not possible as not in EICD + eicd::MCRecoTrackParticleAssociation: + Description: "Association between a Track and a MCParticle" + Author : "S. Joosten" + Members: + - int32_t simID // Index of corresponding MCParticle (position in MCParticles array) + - float weight // weight of this association + OneToOneRelations: + - eicd::Track rec // reference to the track + #- edm4hep::MCParticle sim // reference to the Monte-Carlo particle + # --> not possible as not in EICD + # --> not possible as not in EICD + eicd::MCRecoVertexParticleAssociation: + Description: "Association between a Vertex and a MCParticle" + Author : "S. Joosten" + Members: + - int32_t simID // Index of corresponding MCParticle (position in MCParticles array) + - float weight // weight of this association + OneToOneRelations: + - eicd::Vertex rec // reference to the vertex + #- edm4hep::MCParticle sim // reference to the Monte-Carlo particle + # --> not possible as not in EICD diff --git a/utils/include/eicd/analysis_utils.h b/utils/include/eicd/analysis_utils.h index 8a55a27cbe2d58c951be5194ebdbaaf83ebfc7f2..c518f378036c652bcc38fd29b79459a8e14a5f5e 100644 --- a/utils/include/eicd/analysis_utils.h +++ b/utils/include/eicd/analysis_utils.h @@ -21,7 +21,7 @@ namespace eicd { * provided particle mass assumption. */ inline auto -momenta_from_tracking(const std::vector<eic::TrackParametersData>& tracks, +momenta_from_tracking(const std::vector<eicd::TrackParametersData>& tracks, const double mass) { std::vector<ROOT::Math::PxPyPzMVector> momenta{tracks.size()}; // transform our raw tracker info into proper 4-momenta diff --git a/utils/include/eicd/vector_utils_legacy.h b/utils/include/eicd/vector_utils_legacy.h index 674ad85b7de4f009d15f18a4dc8cff1b4d62bc87..c0b341f43fda5caefb7d4c0e7caf1d201bdd2e54 100644 --- a/utils/include/eicd/vector_utils_legacy.h +++ b/utils/include/eicd/vector_utils_legacy.h @@ -8,10 +8,8 @@ #else #include <cmath> -#include <edm4hep/Vector3d.h> #include <edm4hep/Vector3f.h> #include <eicd/Vector2f.h> -#include <eicd/Vector3d.h> #include <eicd/Vector3f.h> namespace eicd {