Back to home page

EIC code displayed by LXR

 
 

    


File indexing completed on 2025-11-18 09:41:52

0001 
0002 // This file automatically generated by the make_datamodel.py script
0003 #pragma once
0004 
0005 #include <stdexcept>
0006 #include <podio/CollectionBase.h>
0007 
0008 
0009 template <typename T> struct PodioTypeMap {
0010     using collection_t = typename T::collection_type;
0011     using mutable_t = typename T::mutable_type;
0012 };
0013 
0014 namespace edm4hep {
0015     class TrackerHitSimTrackerHitLink;
0016     class TrackerHitSimTrackerHitLinkCollection;
0017     class MutableTrackerHitSimTrackerHitLink;
0018 };
0019 namespace edm4hep {
0020     class TrackerHitPlane;
0021     class TrackerHitPlaneCollection;
0022     class MutableTrackerHitPlane;
0023 };
0024 namespace edm4hep {
0025     class CaloHitContribution;
0026     class CaloHitContributionCollection;
0027     class MutableCaloHitContribution;
0028 };
0029 namespace edm4hep {
0030     class TrackMCParticleLink;
0031     class TrackMCParticleLinkCollection;
0032     class MutableTrackMCParticleLink;
0033 };
0034 namespace edm4hep {
0035     class RecoMCParticleLink;
0036     class RecoMCParticleLinkCollection;
0037     class MutableRecoMCParticleLink;
0038 };
0039 namespace edm4hep {
0040     class Cluster;
0041     class ClusterCollection;
0042     class MutableCluster;
0043 };
0044 namespace edm4hep {
0045     class SimCalorimeterHit;
0046     class SimCalorimeterHitCollection;
0047     class MutableSimCalorimeterHit;
0048 };
0049 namespace edm4hep {
0050     class ParticleID;
0051     class ParticleIDCollection;
0052     class MutableParticleID;
0053 };
0054 namespace edm4hep {
0055     class Vertex;
0056     class VertexCollection;
0057     class MutableVertex;
0058 };
0059 namespace edm4hep {
0060     class RecDqdx;
0061     class RecDqdxCollection;
0062     class MutableRecDqdx;
0063 };
0064 namespace edm4hep {
0065     class RawTimeSeries;
0066     class RawTimeSeriesCollection;
0067     class MutableRawTimeSeries;
0068 };
0069 namespace edm4hep {
0070     class GeneratorEventParameters;
0071     class GeneratorEventParametersCollection;
0072     class MutableGeneratorEventParameters;
0073 };
0074 namespace edm4hep {
0075     class RawCalorimeterHit;
0076     class RawCalorimeterHitCollection;
0077     class MutableRawCalorimeterHit;
0078 };
0079 namespace edm4hep {
0080     class ClusterMCParticleLink;
0081     class ClusterMCParticleLinkCollection;
0082     class MutableClusterMCParticleLink;
0083 };
0084 namespace edm4hep {
0085     class CalorimeterHit;
0086     class CalorimeterHitCollection;
0087     class MutableCalorimeterHit;
0088 };
0089 namespace edm4hep {
0090     class Track;
0091     class TrackCollection;
0092     class MutableTrack;
0093 };
0094 namespace edm4hep {
0095     class EventHeader;
0096     class EventHeaderCollection;
0097     class MutableEventHeader;
0098 };
0099 namespace edm4hep {
0100     class GeneratorPdfInfo;
0101     class GeneratorPdfInfoCollection;
0102     class MutableGeneratorPdfInfo;
0103 };
0104 namespace edm4hep {
0105     class MCParticle;
0106     class MCParticleCollection;
0107     class MutableMCParticle;
0108 };
0109 namespace edm4hep {
0110     class ReconstructedParticle;
0111     class ReconstructedParticleCollection;
0112     class MutableReconstructedParticle;
0113 };
0114 namespace edm4hep {
0115     class CaloHitMCParticleLink;
0116     class CaloHitMCParticleLinkCollection;
0117     class MutableCaloHitMCParticleLink;
0118 };
0119 namespace edm4hep {
0120     class SimTrackerHit;
0121     class SimTrackerHitCollection;
0122     class MutableSimTrackerHit;
0123 };
0124 namespace edm4hep {
0125     class TrackerHit3D;
0126     class TrackerHit3DCollection;
0127     class MutableTrackerHit3D;
0128 };
0129 namespace edm4hep {
0130     class TimeSeries;
0131     class TimeSeriesCollection;
0132     class MutableTimeSeries;
0133 };
0134 namespace edm4hep {
0135     class VertexRecoParticleLink;
0136     class VertexRecoParticleLinkCollection;
0137     class MutableVertexRecoParticleLink;
0138 };
0139 namespace edm4hep {
0140     class CaloHitSimCaloHitLink;
0141     class CaloHitSimCaloHitLinkCollection;
0142     class MutableCaloHitSimCaloHitLink;
0143 };
0144 namespace edm4eic {
0145     class TrackProtoClusterMatch;
0146     class TrackProtoClusterMatchCollection;
0147     class MutableTrackProtoClusterMatch;
0148 };
0149 namespace edm4eic {
0150     class CherenkovParticleID;
0151     class CherenkovParticleIDCollection;
0152     class MutableCherenkovParticleID;
0153 };
0154 namespace edm4eic {
0155     class Tensor;
0156     class TensorCollection;
0157     class MutableTensor;
0158 };
0159 namespace edm4eic {
0160     class SimPulse;
0161     class SimPulseCollection;
0162     class MutableSimPulse;
0163 };
0164 namespace edm4eic {
0165     class MCRecoVertexParticleAssociation;
0166     class MCRecoVertexParticleAssociationCollection;
0167     class MutableMCRecoVertexParticleAssociation;
0168 };
0169 namespace edm4eic {
0170     class ProtoCluster;
0171     class ProtoClusterCollection;
0172     class MutableProtoCluster;
0173 };
0174 namespace edm4eic {
0175     class TrackSegment;
0176     class TrackSegmentCollection;
0177     class MutableTrackSegment;
0178 };
0179 namespace edm4eic {
0180     class Cluster;
0181     class ClusterCollection;
0182     class MutableCluster;
0183 };
0184 namespace edm4eic {
0185     class Measurement2D;
0186     class Measurement2DCollection;
0187     class MutableMeasurement2D;
0188 };
0189 namespace edm4eic {
0190     class Vertex;
0191     class VertexCollection;
0192     class MutableVertex;
0193 };
0194 namespace edm4eic {
0195     class MCRecoTrackParticleAssociation;
0196     class MCRecoTrackParticleAssociationCollection;
0197     class MutableMCRecoTrackParticleAssociation;
0198 };
0199 namespace edm4eic {
0200     class RawTrackerHit;
0201     class RawTrackerHitCollection;
0202     class MutableRawTrackerHit;
0203 };
0204 namespace edm4eic {
0205     class TrackParameters;
0206     class TrackParametersCollection;
0207     class MutableTrackParameters;
0208 };
0209 namespace edm4eic {
0210     class Trajectory;
0211     class TrajectoryCollection;
0212     class MutableTrajectory;
0213 };
0214 namespace edm4eic {
0215     class MCRecoCalorimeterHitAssociation;
0216     class MCRecoCalorimeterHitAssociationCollection;
0217     class MutableMCRecoCalorimeterHitAssociation;
0218 };
0219 namespace edm4eic {
0220     class PMTHit;
0221     class PMTHitCollection;
0222     class MutablePMTHit;
0223 };
0224 namespace edm4eic {
0225     class CalorimeterHit;
0226     class CalorimeterHitCollection;
0227     class MutableCalorimeterHit;
0228 };
0229 namespace edm4eic {
0230     class Track;
0231     class TrackCollection;
0232     class MutableTrack;
0233 };
0234 namespace edm4eic {
0235     class ReconstructedParticle;
0236     class ReconstructedParticleCollection;
0237     class MutableReconstructedParticle;
0238 };
0239 namespace edm4eic {
0240     class MCRecoTrackerHitAssociation;
0241     class MCRecoTrackerHitAssociationCollection;
0242     class MutableMCRecoTrackerHitAssociation;
0243 };
0244 namespace edm4eic {
0245     class HadronicFinalState;
0246     class HadronicFinalStateCollection;
0247     class MutableHadronicFinalState;
0248 };
0249 namespace edm4eic {
0250     class TrackClusterMatch;
0251     class TrackClusterMatchCollection;
0252     class MutableTrackClusterMatch;
0253 };
0254 namespace edm4eic {
0255     class MCRecoParticleAssociation;
0256     class MCRecoParticleAssociationCollection;
0257     class MutableMCRecoParticleAssociation;
0258 };
0259 namespace edm4eic {
0260     class MCRecoClusterParticleAssociation;
0261     class MCRecoClusterParticleAssociationCollection;
0262     class MutableMCRecoClusterParticleAssociation;
0263 };
0264 namespace edm4eic {
0265     class RingImage;
0266     class RingImageCollection;
0267     class MutableRingImage;
0268 };
0269 namespace edm4eic {
0270     class InclusiveKinematics;
0271     class InclusiveKinematicsCollection;
0272     class MutableInclusiveKinematics;
0273 };
0274 namespace edm4eic {
0275     class TrackSeed;
0276     class TrackSeedCollection;
0277     class MutableTrackSeed;
0278 };
0279 namespace edm4eic {
0280     class RawHGCROCHit;
0281     class RawHGCROCHitCollection;
0282     class MutableRawHGCROCHit;
0283 };
0284 namespace edm4eic {
0285     class TrackerHit;
0286     class TrackerHitCollection;
0287     class MutableTrackerHit;
0288 };
0289 
0290 template <typename Visitor> struct VisitPodioCollection {
0291     void operator()(Visitor& visitor, const podio::CollectionBase& collection) {
0292         auto podio_typename = collection.getTypeName();
0293         if (podio_typename == "edm4hep::TrackerHitSimTrackerHitLinkCollection") {
0294             return visitor(*reinterpret_cast<const edm4hep::TrackerHitSimTrackerHitLinkCollection*>(&collection));
0295         }
0296         if (podio_typename == "edm4hep::TrackerHitPlaneCollection") {
0297             return visitor(*reinterpret_cast<const edm4hep::TrackerHitPlaneCollection*>(&collection));
0298         }
0299         if (podio_typename == "edm4hep::CaloHitContributionCollection") {
0300             return visitor(*reinterpret_cast<const edm4hep::CaloHitContributionCollection*>(&collection));
0301         }
0302         if (podio_typename == "edm4hep::TrackMCParticleLinkCollection") {
0303             return visitor(*reinterpret_cast<const edm4hep::TrackMCParticleLinkCollection*>(&collection));
0304         }
0305         if (podio_typename == "edm4hep::RecoMCParticleLinkCollection") {
0306             return visitor(*reinterpret_cast<const edm4hep::RecoMCParticleLinkCollection*>(&collection));
0307         }
0308         if (podio_typename == "edm4hep::ClusterCollection") {
0309             return visitor(*reinterpret_cast<const edm4hep::ClusterCollection*>(&collection));
0310         }
0311         if (podio_typename == "edm4hep::SimCalorimeterHitCollection") {
0312             return visitor(*reinterpret_cast<const edm4hep::SimCalorimeterHitCollection*>(&collection));
0313         }
0314         if (podio_typename == "edm4hep::ParticleIDCollection") {
0315             return visitor(*reinterpret_cast<const edm4hep::ParticleIDCollection*>(&collection));
0316         }
0317         if (podio_typename == "edm4hep::VertexCollection") {
0318             return visitor(*reinterpret_cast<const edm4hep::VertexCollection*>(&collection));
0319         }
0320         if (podio_typename == "edm4hep::RecDqdxCollection") {
0321             return visitor(*reinterpret_cast<const edm4hep::RecDqdxCollection*>(&collection));
0322         }
0323         if (podio_typename == "edm4hep::RawTimeSeriesCollection") {
0324             return visitor(*reinterpret_cast<const edm4hep::RawTimeSeriesCollection*>(&collection));
0325         }
0326         if (podio_typename == "edm4hep::GeneratorEventParametersCollection") {
0327             return visitor(*reinterpret_cast<const edm4hep::GeneratorEventParametersCollection*>(&collection));
0328         }
0329         if (podio_typename == "edm4hep::RawCalorimeterHitCollection") {
0330             return visitor(*reinterpret_cast<const edm4hep::RawCalorimeterHitCollection*>(&collection));
0331         }
0332         if (podio_typename == "edm4hep::ClusterMCParticleLinkCollection") {
0333             return visitor(*reinterpret_cast<const edm4hep::ClusterMCParticleLinkCollection*>(&collection));
0334         }
0335         if (podio_typename == "edm4hep::CalorimeterHitCollection") {
0336             return visitor(*reinterpret_cast<const edm4hep::CalorimeterHitCollection*>(&collection));
0337         }
0338         if (podio_typename == "edm4hep::TrackCollection") {
0339             return visitor(*reinterpret_cast<const edm4hep::TrackCollection*>(&collection));
0340         }
0341         if (podio_typename == "edm4hep::EventHeaderCollection") {
0342             return visitor(*reinterpret_cast<const edm4hep::EventHeaderCollection*>(&collection));
0343         }
0344         if (podio_typename == "edm4hep::GeneratorPdfInfoCollection") {
0345             return visitor(*reinterpret_cast<const edm4hep::GeneratorPdfInfoCollection*>(&collection));
0346         }
0347         if (podio_typename == "edm4hep::MCParticleCollection") {
0348             return visitor(*reinterpret_cast<const edm4hep::MCParticleCollection*>(&collection));
0349         }
0350         if (podio_typename == "edm4hep::ReconstructedParticleCollection") {
0351             return visitor(*reinterpret_cast<const edm4hep::ReconstructedParticleCollection*>(&collection));
0352         }
0353         if (podio_typename == "edm4hep::CaloHitMCParticleLinkCollection") {
0354             return visitor(*reinterpret_cast<const edm4hep::CaloHitMCParticleLinkCollection*>(&collection));
0355         }
0356         if (podio_typename == "edm4hep::SimTrackerHitCollection") {
0357             return visitor(*reinterpret_cast<const edm4hep::SimTrackerHitCollection*>(&collection));
0358         }
0359         if (podio_typename == "edm4hep::TrackerHit3DCollection") {
0360             return visitor(*reinterpret_cast<const edm4hep::TrackerHit3DCollection*>(&collection));
0361         }
0362         if (podio_typename == "edm4hep::TimeSeriesCollection") {
0363             return visitor(*reinterpret_cast<const edm4hep::TimeSeriesCollection*>(&collection));
0364         }
0365         if (podio_typename == "edm4hep::VertexRecoParticleLinkCollection") {
0366             return visitor(*reinterpret_cast<const edm4hep::VertexRecoParticleLinkCollection*>(&collection));
0367         }
0368         if (podio_typename == "edm4hep::CaloHitSimCaloHitLinkCollection") {
0369             return visitor(*reinterpret_cast<const edm4hep::CaloHitSimCaloHitLinkCollection*>(&collection));
0370         }
0371         if (podio_typename == "edm4eic::TrackProtoClusterMatchCollection") {
0372             return visitor(*reinterpret_cast<const edm4eic::TrackProtoClusterMatchCollection*>(&collection));
0373         }
0374         if (podio_typename == "edm4eic::CherenkovParticleIDCollection") {
0375             return visitor(*reinterpret_cast<const edm4eic::CherenkovParticleIDCollection*>(&collection));
0376         }
0377         if (podio_typename == "edm4eic::TensorCollection") {
0378             return visitor(*reinterpret_cast<const edm4eic::TensorCollection*>(&collection));
0379         }
0380         if (podio_typename == "edm4eic::SimPulseCollection") {
0381             return visitor(*reinterpret_cast<const edm4eic::SimPulseCollection*>(&collection));
0382         }
0383         if (podio_typename == "edm4eic::MCRecoVertexParticleAssociationCollection") {
0384             return visitor(*reinterpret_cast<const edm4eic::MCRecoVertexParticleAssociationCollection*>(&collection));
0385         }
0386         if (podio_typename == "edm4eic::ProtoClusterCollection") {
0387             return visitor(*reinterpret_cast<const edm4eic::ProtoClusterCollection*>(&collection));
0388         }
0389         if (podio_typename == "edm4eic::TrackSegmentCollection") {
0390             return visitor(*reinterpret_cast<const edm4eic::TrackSegmentCollection*>(&collection));
0391         }
0392         if (podio_typename == "edm4eic::ClusterCollection") {
0393             return visitor(*reinterpret_cast<const edm4eic::ClusterCollection*>(&collection));
0394         }
0395         if (podio_typename == "edm4eic::Measurement2DCollection") {
0396             return visitor(*reinterpret_cast<const edm4eic::Measurement2DCollection*>(&collection));
0397         }
0398         if (podio_typename == "edm4eic::VertexCollection") {
0399             return visitor(*reinterpret_cast<const edm4eic::VertexCollection*>(&collection));
0400         }
0401         if (podio_typename == "edm4eic::MCRecoTrackParticleAssociationCollection") {
0402             return visitor(*reinterpret_cast<const edm4eic::MCRecoTrackParticleAssociationCollection*>(&collection));
0403         }
0404         if (podio_typename == "edm4eic::RawTrackerHitCollection") {
0405             return visitor(*reinterpret_cast<const edm4eic::RawTrackerHitCollection*>(&collection));
0406         }
0407         if (podio_typename == "edm4eic::TrackParametersCollection") {
0408             return visitor(*reinterpret_cast<const edm4eic::TrackParametersCollection*>(&collection));
0409         }
0410         if (podio_typename == "edm4eic::TrajectoryCollection") {
0411             return visitor(*reinterpret_cast<const edm4eic::TrajectoryCollection*>(&collection));
0412         }
0413         if (podio_typename == "edm4eic::MCRecoCalorimeterHitAssociationCollection") {
0414             return visitor(*reinterpret_cast<const edm4eic::MCRecoCalorimeterHitAssociationCollection*>(&collection));
0415         }
0416         if (podio_typename == "edm4eic::PMTHitCollection") {
0417             return visitor(*reinterpret_cast<const edm4eic::PMTHitCollection*>(&collection));
0418         }
0419         if (podio_typename == "edm4eic::CalorimeterHitCollection") {
0420             return visitor(*reinterpret_cast<const edm4eic::CalorimeterHitCollection*>(&collection));
0421         }
0422         if (podio_typename == "edm4eic::TrackCollection") {
0423             return visitor(*reinterpret_cast<const edm4eic::TrackCollection*>(&collection));
0424         }
0425         if (podio_typename == "edm4eic::ReconstructedParticleCollection") {
0426             return visitor(*reinterpret_cast<const edm4eic::ReconstructedParticleCollection*>(&collection));
0427         }
0428         if (podio_typename == "edm4eic::MCRecoTrackerHitAssociationCollection") {
0429             return visitor(*reinterpret_cast<const edm4eic::MCRecoTrackerHitAssociationCollection*>(&collection));
0430         }
0431         if (podio_typename == "edm4eic::HadronicFinalStateCollection") {
0432             return visitor(*reinterpret_cast<const edm4eic::HadronicFinalStateCollection*>(&collection));
0433         }
0434         if (podio_typename == "edm4eic::TrackClusterMatchCollection") {
0435             return visitor(*reinterpret_cast<const edm4eic::TrackClusterMatchCollection*>(&collection));
0436         }
0437         if (podio_typename == "edm4eic::MCRecoParticleAssociationCollection") {
0438             return visitor(*reinterpret_cast<const edm4eic::MCRecoParticleAssociationCollection*>(&collection));
0439         }
0440         if (podio_typename == "edm4eic::MCRecoClusterParticleAssociationCollection") {
0441             return visitor(*reinterpret_cast<const edm4eic::MCRecoClusterParticleAssociationCollection*>(&collection));
0442         }
0443         if (podio_typename == "edm4eic::RingImageCollection") {
0444             return visitor(*reinterpret_cast<const edm4eic::RingImageCollection*>(&collection));
0445         }
0446         if (podio_typename == "edm4eic::InclusiveKinematicsCollection") {
0447             return visitor(*reinterpret_cast<const edm4eic::InclusiveKinematicsCollection*>(&collection));
0448         }
0449         if (podio_typename == "edm4eic::TrackSeedCollection") {
0450             return visitor(*reinterpret_cast<const edm4eic::TrackSeedCollection*>(&collection));
0451         }
0452         if (podio_typename == "edm4eic::RawHGCROCHitCollection") {
0453             return visitor(*reinterpret_cast<const edm4eic::RawHGCROCHitCollection*>(&collection));
0454         }
0455         if (podio_typename == "edm4eic::TrackerHitCollection") {
0456             return visitor(*reinterpret_cast<const edm4eic::TrackerHitCollection*>(&collection));
0457         }
0458         throw std::runtime_error("Unrecognized podio typename!");
0459     }
0460 };