Back to home page

EIC code displayed by LXR

 
 

    


File indexing completed on 2025-01-18 09:28:05

0001 // AUTOMATICALLY GENERATED FILE - DO NOT EDIT
0002 
0003 #include "podio/DatamodelRegistry.h"
0004 #include "podio/SchemaEvolution.h"
0005 
0006 namespace ActsPodioEdm::meta {
0007 /**
0008  * The complete definition of the datamodel at generation time in JSON format.
0009  */
0010 static constexpr auto ActsPodioEdm__JSONDefinition =
0011     R"DATAMODELDEF({"options": {"getSyntax": true, "exposePODMembers": false, "includeSubfolder": "ActsPodioEdm/"}, "schema_version": 1, "components": {"ActsPodioEdm::Vector3f": {"Members": ["float x", "float y", "float z"], "ExtraCode": {"declaration": " constexpr Vector3f() : x(0),y(0),z(0) {}\n constexpr Vector3f(float xx, float yy, float zz) : x(xx),y(yy),z(zz) {}\n constexpr Vector3f(const float* v) : x(v[0]),y(v[1]),z(v[2]) {}\n constexpr bool operator==(const Vector3f& v) const { return (x==v.x&&y==v.y&&z==v.z) ; }\n constexpr float operator[](unsigned i) const { return *( &x + i ) ; }\n "}}, "ActsPodioEdm::Surface": {"Members": ["int surfaceType", "int boundsType", "std::uint64_t geometryId", "std::uint64_t identifier", "std::array<double, 10> boundValues", "std::uint32_t boundValuesSize", "std::array<double, 16> transform"]}, "ActsPodioEdm::TrackInfo": {"Members": ["std::array<double, 6> parameters", "std::array<double, 36> covariance // local covariance", "std::uint32_t tipIndex // index of the outermost track state", "std::uint32_t stemIndex // index of the innermost track state", "unsigned int nMeasurements // number of measurements", "unsigned int nHoles // number of holes", "float chi2 // chi squared of the track", "unsigned int ndf // number of degrees of freedom", "unsigned int nOutliers // number of outliers", "unsigned int nSharedHits // number of shared hits"]}, "ActsPodioEdm::TrackStateInfo": {"Members": ["std::uint32_t previous", "std::uint32_t next", "std::uint32_t ipredicted", "std::uint32_t ifiltered", "std::uint32_t ismoothed", "std::array<double, 6> measurement", "std::array<double, 36> measurementCovariance", "std::uint32_t measdim", "std::uint32_t ijacobian", "std::uint64_t projector", "bool hasProjector", "float chi2", "double pathLength", "std::uint64_t typeFlags", "std::uint64_t uncalibratedIdentifier"]}, "ActsPodioEdm::BoundParametersInfo": {"Members": ["std::array<double, 6> values", "std::array<double, 36> covariance"]}, "ActsPodioEdm::JacobianInfo": {"Members": ["std::array<double, 36> values"]}, "ActsPodioEdm::ParticleHypothesis": {"Members": ["std::uint32_t absPdg", "float mass", "float absQ"]}}, "datatypes": {"ActsPodioEdm::Track": {"Description": "Reconstructed track", "Author": "Paul Gessinger, CERN", "Members": ["ActsPodioEdm::TrackInfo data // local parameters and covariance", "ActsPodioEdm::Surface referenceSurface // reference surface", "ActsPodioEdm::ParticleHypothesis particleHypothesis // particle hypothesis"], "VectorMembers": [], "OneToOneRelations": [], "OneToManyRelations": [], "ExtraCode": {}, "MutableExtraCode": {}}, "ActsPodioEdm::TrackState": {"Description": "Local state on a track", "Author": "Paul Gessinger, CERN", "Members": ["ActsPodioEdm::TrackStateInfo data // local information", "ActsPodioEdm::Surface referenceSurface // reference surface"], "VectorMembers": [], "OneToOneRelations": [], "OneToManyRelations": [], "ExtraCode": {}, "MutableExtraCode": {}}, "ActsPodioEdm::BoundParameters": {"Description": "Local track parameters", "Author": "Paul Gessinger, CERN", "Members": ["ActsPodioEdm::BoundParametersInfo data // parameter information"], "VectorMembers": [], "OneToOneRelations": [], "OneToManyRelations": [], "ExtraCode": {}, "MutableExtraCode": {}}, "ActsPodioEdm::Jacobian": {"Description": "Jacobian matrix from the previous track state to the current one", "Author": "Paul Gessinger, CERN", "Members": ["ActsPodioEdm::JacobianInfo data // the jacobian data"], "VectorMembers": [], "OneToOneRelations": [], "OneToManyRelations": [], "ExtraCode": {}, "MutableExtraCode": {}}}, "interfaces": {}})DATAMODELDEF";
0012 
0013 /**
0014  * The names of all relations and vector members for all datatypes
0015  */
0016 inline podio::RelationNameMapping ActsPodioEdm__getRelationNames() {
0017   using namespace std::string_view_literals;
0018   return {
0019       {
0020           "ActsPodioEdm::Track"sv,
0021           {},
0022           {},
0023       },
0024       {
0025           "ActsPodioEdm::TrackState"sv,
0026           {},
0027           {},
0028       },
0029       {
0030           "ActsPodioEdm::BoundParameters"sv,
0031           {},
0032           {},
0033       },
0034       {
0035           "ActsPodioEdm::Jacobian"sv,
0036           {},
0037           {},
0038       },
0039   };
0040 }
0041 
0042 /**
0043  * The schema version at generation time
0044  */
0045 static constexpr podio::SchemaVersionT schemaVersion = 1;
0046 
0047 /**
0048  * The helper class that takes care of registering the datamodel definition to
0049  * the DatamodelRegistry and to provide the index in that registry.
0050  *
0051  * Implemented as a singleton mainly to ensure only a single registration of
0052  * each datamodel, during the constructor
0053  */
0054 class DatamodelRegistryIndex {
0055  public:
0056   static size_t value() {
0057     static const auto relationNames = ActsPodioEdm__getRelationNames();
0058     static auto index = DatamodelRegistryIndex(
0059         podio::DatamodelRegistry::mutInstance().registerDatamodel(
0060             "ActsPodioEdm", ActsPodioEdm__JSONDefinition, relationNames));
0061     return index.m_value;
0062   }
0063 
0064  private:
0065   DatamodelRegistryIndex(size_t v) : m_value(v) {}
0066   size_t m_value{podio::DatamodelRegistry::NoDefinitionAvailable};
0067 };
0068 
0069 namespace static_registration {
0070 // The usual trick via an IIFE and a const variable that we assign to, to
0071 // ensure that we populate this before everything starts
0072 inline bool ensureRegistration() {
0073   const static auto reg = []() {
0074     return ActsPodioEdm::meta::DatamodelRegistryIndex::value() !=
0075            podio::DatamodelRegistry::NoDefinitionAvailable;
0076   }();
0077   return reg;
0078 }
0079 
0080 const auto registrationEnsured = ensureRegistration();
0081 }  // namespace static_registration
0082 
0083 }  // namespace ActsPodioEdm::meta