Back to home page

EIC code displayed by LXR

 
 

    


File indexing completed on 2025-01-18 09:55:45

0001 
0002 // This file automatically generated by the make_datamodel.py script
0003 #pragma once
0004 
0005 #include <stdexcept>
0006 #include <podio/podioVersion.h>
0007 #include <podio/CollectionBase.h>
0008 
0009 
0010 template <typename T> struct PodioTypeMap {
0011 #if podio_VERSION >= PODIO_VERSION(0, 17, 0)
0012     using collection_t = typename T::collection_type;
0013     using mutable_t = typename T::mutable_type;
0014 #endif
0015 };
0016 
0017 namespace edm4hep {
0018     class TrackerHitPlane;
0019     class TrackerHitPlaneCollection;
0020     class MutableTrackerHitPlane;
0021 };
0022 #if podio_VERSION < PODIO_VERSION(0, 17, 0)
0023 template <> struct PodioTypeMap<edm4hep::TrackerHitPlane> {
0024     using collection_t = edm4hep::TrackerHitPlaneCollection;
0025     using mutable_t = edm4hep::MutableTrackerHitPlane;
0026 };
0027 #endif
0028 namespace edm4hep {
0029     class MCRecoTrackerHitPlaneAssociation;
0030     class MCRecoTrackerHitPlaneAssociationCollection;
0031     class MutableMCRecoTrackerHitPlaneAssociation;
0032 };
0033 #if podio_VERSION < PODIO_VERSION(0, 17, 0)
0034 template <> struct PodioTypeMap<edm4hep::MCRecoTrackerHitPlaneAssociation> {
0035     using collection_t = edm4hep::MCRecoTrackerHitPlaneAssociationCollection;
0036     using mutable_t = edm4hep::MutableMCRecoTrackerHitPlaneAssociation;
0037 };
0038 #endif
0039 namespace edm4hep {
0040     class CaloHitContribution;
0041     class CaloHitContributionCollection;
0042     class MutableCaloHitContribution;
0043 };
0044 #if podio_VERSION < PODIO_VERSION(0, 17, 0)
0045 template <> struct PodioTypeMap<edm4hep::CaloHitContribution> {
0046     using collection_t = edm4hep::CaloHitContributionCollection;
0047     using mutable_t = edm4hep::MutableCaloHitContribution;
0048 };
0049 #endif
0050 namespace edm4hep {
0051     class RecoParticleVertexAssociation;
0052     class RecoParticleVertexAssociationCollection;
0053     class MutableRecoParticleVertexAssociation;
0054 };
0055 #if podio_VERSION < PODIO_VERSION(0, 17, 0)
0056 template <> struct PodioTypeMap<edm4hep::RecoParticleVertexAssociation> {
0057     using collection_t = edm4hep::RecoParticleVertexAssociationCollection;
0058     using mutable_t = edm4hep::MutableRecoParticleVertexAssociation;
0059 };
0060 #endif
0061 namespace edm4hep {
0062     class MCRecoCaloAssociation;
0063     class MCRecoCaloAssociationCollection;
0064     class MutableMCRecoCaloAssociation;
0065 };
0066 #if podio_VERSION < PODIO_VERSION(0, 17, 0)
0067 template <> struct PodioTypeMap<edm4hep::MCRecoCaloAssociation> {
0068     using collection_t = edm4hep::MCRecoCaloAssociationCollection;
0069     using mutable_t = edm4hep::MutableMCRecoCaloAssociation;
0070 };
0071 #endif
0072 namespace edm4hep {
0073     class Cluster;
0074     class ClusterCollection;
0075     class MutableCluster;
0076 };
0077 #if podio_VERSION < PODIO_VERSION(0, 17, 0)
0078 template <> struct PodioTypeMap<edm4hep::Cluster> {
0079     using collection_t = edm4hep::ClusterCollection;
0080     using mutable_t = edm4hep::MutableCluster;
0081 };
0082 #endif
0083 namespace edm4hep {
0084     class SimCalorimeterHit;
0085     class SimCalorimeterHitCollection;
0086     class MutableSimCalorimeterHit;
0087 };
0088 #if podio_VERSION < PODIO_VERSION(0, 17, 0)
0089 template <> struct PodioTypeMap<edm4hep::SimCalorimeterHit> {
0090     using collection_t = edm4hep::SimCalorimeterHitCollection;
0091     using mutable_t = edm4hep::MutableSimCalorimeterHit;
0092 };
0093 #endif
0094 namespace edm4hep {
0095     class MCRecoTrackerAssociation;
0096     class MCRecoTrackerAssociationCollection;
0097     class MutableMCRecoTrackerAssociation;
0098 };
0099 #if podio_VERSION < PODIO_VERSION(0, 17, 0)
0100 template <> struct PodioTypeMap<edm4hep::MCRecoTrackerAssociation> {
0101     using collection_t = edm4hep::MCRecoTrackerAssociationCollection;
0102     using mutable_t = edm4hep::MutableMCRecoTrackerAssociation;
0103 };
0104 #endif
0105 namespace edm4hep {
0106     class ParticleID;
0107     class ParticleIDCollection;
0108     class MutableParticleID;
0109 };
0110 #if podio_VERSION < PODIO_VERSION(0, 17, 0)
0111 template <> struct PodioTypeMap<edm4hep::ParticleID> {
0112     using collection_t = edm4hep::ParticleIDCollection;
0113     using mutable_t = edm4hep::MutableParticleID;
0114 };
0115 #endif
0116 namespace edm4hep {
0117     class Vertex;
0118     class VertexCollection;
0119     class MutableVertex;
0120 };
0121 #if podio_VERSION < PODIO_VERSION(0, 17, 0)
0122 template <> struct PodioTypeMap<edm4hep::Vertex> {
0123     using collection_t = edm4hep::VertexCollection;
0124     using mutable_t = edm4hep::MutableVertex;
0125 };
0126 #endif
0127 namespace edm4hep {
0128     class RecDqdx;
0129     class RecDqdxCollection;
0130     class MutableRecDqdx;
0131 };
0132 #if podio_VERSION < PODIO_VERSION(0, 17, 0)
0133 template <> struct PodioTypeMap<edm4hep::RecDqdx> {
0134     using collection_t = edm4hep::RecDqdxCollection;
0135     using mutable_t = edm4hep::MutableRecDqdx;
0136 };
0137 #endif
0138 namespace edm4hep {
0139     class SimPrimaryIonizationCluster;
0140     class SimPrimaryIonizationClusterCollection;
0141     class MutableSimPrimaryIonizationCluster;
0142 };
0143 #if podio_VERSION < PODIO_VERSION(0, 17, 0)
0144 template <> struct PodioTypeMap<edm4hep::SimPrimaryIonizationCluster> {
0145     using collection_t = edm4hep::SimPrimaryIonizationClusterCollection;
0146     using mutable_t = edm4hep::MutableSimPrimaryIonizationCluster;
0147 };
0148 #endif
0149 namespace edm4hep {
0150     class RawTimeSeries;
0151     class RawTimeSeriesCollection;
0152     class MutableRawTimeSeries;
0153 };
0154 #if podio_VERSION < PODIO_VERSION(0, 17, 0)
0155 template <> struct PodioTypeMap<edm4hep::RawTimeSeries> {
0156     using collection_t = edm4hep::RawTimeSeriesCollection;
0157     using mutable_t = edm4hep::MutableRawTimeSeries;
0158 };
0159 #endif
0160 namespace edm4hep {
0161     class MCRecoTrackParticleAssociation;
0162     class MCRecoTrackParticleAssociationCollection;
0163     class MutableMCRecoTrackParticleAssociation;
0164 };
0165 #if podio_VERSION < PODIO_VERSION(0, 17, 0)
0166 template <> struct PodioTypeMap<edm4hep::MCRecoTrackParticleAssociation> {
0167     using collection_t = edm4hep::MCRecoTrackParticleAssociationCollection;
0168     using mutable_t = edm4hep::MutableMCRecoTrackParticleAssociation;
0169 };
0170 #endif
0171 namespace edm4hep {
0172     class RecIonizationCluster;
0173     class RecIonizationClusterCollection;
0174     class MutableRecIonizationCluster;
0175 };
0176 #if podio_VERSION < PODIO_VERSION(0, 17, 0)
0177 template <> struct PodioTypeMap<edm4hep::RecIonizationCluster> {
0178     using collection_t = edm4hep::RecIonizationClusterCollection;
0179     using mutable_t = edm4hep::MutableRecIonizationCluster;
0180 };
0181 #endif
0182 namespace edm4hep {
0183     class RawCalorimeterHit;
0184     class RawCalorimeterHitCollection;
0185     class MutableRawCalorimeterHit;
0186 };
0187 #if podio_VERSION < PODIO_VERSION(0, 17, 0)
0188 template <> struct PodioTypeMap<edm4hep::RawCalorimeterHit> {
0189     using collection_t = edm4hep::RawCalorimeterHitCollection;
0190     using mutable_t = edm4hep::MutableRawCalorimeterHit;
0191 };
0192 #endif
0193 namespace edm4hep {
0194     class CalorimeterHit;
0195     class CalorimeterHitCollection;
0196     class MutableCalorimeterHit;
0197 };
0198 #if podio_VERSION < PODIO_VERSION(0, 17, 0)
0199 template <> struct PodioTypeMap<edm4hep::CalorimeterHit> {
0200     using collection_t = edm4hep::CalorimeterHitCollection;
0201     using mutable_t = edm4hep::MutableCalorimeterHit;
0202 };
0203 #endif
0204 namespace edm4hep {
0205     class Track;
0206     class TrackCollection;
0207     class MutableTrack;
0208 };
0209 #if podio_VERSION < PODIO_VERSION(0, 17, 0)
0210 template <> struct PodioTypeMap<edm4hep::Track> {
0211     using collection_t = edm4hep::TrackCollection;
0212     using mutable_t = edm4hep::MutableTrack;
0213 };
0214 #endif
0215 namespace edm4hep {
0216     class EventHeader;
0217     class EventHeaderCollection;
0218     class MutableEventHeader;
0219 };
0220 #if podio_VERSION < PODIO_VERSION(0, 17, 0)
0221 template <> struct PodioTypeMap<edm4hep::EventHeader> {
0222     using collection_t = edm4hep::EventHeaderCollection;
0223     using mutable_t = edm4hep::MutableEventHeader;
0224 };
0225 #endif
0226 namespace edm4hep {
0227     class MCParticle;
0228     class MCParticleCollection;
0229     class MutableMCParticle;
0230 };
0231 #if podio_VERSION < PODIO_VERSION(0, 17, 0)
0232 template <> struct PodioTypeMap<edm4hep::MCParticle> {
0233     using collection_t = edm4hep::MCParticleCollection;
0234     using mutable_t = edm4hep::MutableMCParticle;
0235 };
0236 #endif
0237 namespace edm4hep {
0238     class ReconstructedParticle;
0239     class ReconstructedParticleCollection;
0240     class MutableReconstructedParticle;
0241 };
0242 #if podio_VERSION < PODIO_VERSION(0, 17, 0)
0243 template <> struct PodioTypeMap<edm4hep::ReconstructedParticle> {
0244     using collection_t = edm4hep::ReconstructedParticleCollection;
0245     using mutable_t = edm4hep::MutableReconstructedParticle;
0246 };
0247 #endif
0248 namespace edm4hep {
0249     class MCRecoParticleAssociation;
0250     class MCRecoParticleAssociationCollection;
0251     class MutableMCRecoParticleAssociation;
0252 };
0253 #if podio_VERSION < PODIO_VERSION(0, 17, 0)
0254 template <> struct PodioTypeMap<edm4hep::MCRecoParticleAssociation> {
0255     using collection_t = edm4hep::MCRecoParticleAssociationCollection;
0256     using mutable_t = edm4hep::MutableMCRecoParticleAssociation;
0257 };
0258 #endif
0259 namespace edm4hep {
0260     class MCRecoClusterParticleAssociation;
0261     class MCRecoClusterParticleAssociationCollection;
0262     class MutableMCRecoClusterParticleAssociation;
0263 };
0264 #if podio_VERSION < PODIO_VERSION(0, 17, 0)
0265 template <> struct PodioTypeMap<edm4hep::MCRecoClusterParticleAssociation> {
0266     using collection_t = edm4hep::MCRecoClusterParticleAssociationCollection;
0267     using mutable_t = edm4hep::MutableMCRecoClusterParticleAssociation;
0268 };
0269 #endif
0270 namespace edm4hep {
0271     class SimTrackerHit;
0272     class SimTrackerHitCollection;
0273     class MutableSimTrackerHit;
0274 };
0275 #if podio_VERSION < PODIO_VERSION(0, 17, 0)
0276 template <> struct PodioTypeMap<edm4hep::SimTrackerHit> {
0277     using collection_t = edm4hep::SimTrackerHitCollection;
0278     using mutable_t = edm4hep::MutableSimTrackerHit;
0279 };
0280 #endif
0281 namespace edm4hep {
0282     class TrackerPulse;
0283     class TrackerPulseCollection;
0284     class MutableTrackerPulse;
0285 };
0286 #if podio_VERSION < PODIO_VERSION(0, 17, 0)
0287 template <> struct PodioTypeMap<edm4hep::TrackerPulse> {
0288     using collection_t = edm4hep::TrackerPulseCollection;
0289     using mutable_t = edm4hep::MutableTrackerPulse;
0290 };
0291 #endif
0292 namespace edm4hep {
0293     class TimeSeries;
0294     class TimeSeriesCollection;
0295     class MutableTimeSeries;
0296 };
0297 #if podio_VERSION < PODIO_VERSION(0, 17, 0)
0298 template <> struct PodioTypeMap<edm4hep::TimeSeries> {
0299     using collection_t = edm4hep::TimeSeriesCollection;
0300     using mutable_t = edm4hep::MutableTimeSeries;
0301 };
0302 #endif
0303 namespace edm4hep {
0304     class MCRecoCaloParticleAssociation;
0305     class MCRecoCaloParticleAssociationCollection;
0306     class MutableMCRecoCaloParticleAssociation;
0307 };
0308 #if podio_VERSION < PODIO_VERSION(0, 17, 0)
0309 template <> struct PodioTypeMap<edm4hep::MCRecoCaloParticleAssociation> {
0310     using collection_t = edm4hep::MCRecoCaloParticleAssociationCollection;
0311     using mutable_t = edm4hep::MutableMCRecoCaloParticleAssociation;
0312 };
0313 #endif
0314 namespace edm4hep {
0315     class TrackerHit;
0316     class TrackerHitCollection;
0317     class MutableTrackerHit;
0318 };
0319 #if podio_VERSION < PODIO_VERSION(0, 17, 0)
0320 template <> struct PodioTypeMap<edm4hep::TrackerHit> {
0321     using collection_t = edm4hep::TrackerHitCollection;
0322     using mutable_t = edm4hep::MutableTrackerHit;
0323 };
0324 #endif
0325 namespace edm4eic {
0326     class CherenkovParticleID;
0327     class CherenkovParticleIDCollection;
0328     class MutableCherenkovParticleID;
0329 };
0330 #if podio_VERSION < PODIO_VERSION(0, 17, 0)
0331 template <> struct PodioTypeMap<edm4eic::CherenkovParticleID> {
0332     using collection_t = edm4eic::CherenkovParticleIDCollection;
0333     using mutable_t = edm4eic::MutableCherenkovParticleID;
0334 };
0335 #endif
0336 namespace edm4eic {
0337     class Tensor;
0338     class TensorCollection;
0339     class MutableTensor;
0340 };
0341 #if podio_VERSION < PODIO_VERSION(0, 17, 0)
0342 template <> struct PodioTypeMap<edm4eic::Tensor> {
0343     using collection_t = edm4eic::TensorCollection;
0344     using mutable_t = edm4eic::MutableTensor;
0345 };
0346 #endif
0347 namespace edm4eic {
0348     class MCRecoVertexParticleAssociation;
0349     class MCRecoVertexParticleAssociationCollection;
0350     class MutableMCRecoVertexParticleAssociation;
0351 };
0352 #if podio_VERSION < PODIO_VERSION(0, 17, 0)
0353 template <> struct PodioTypeMap<edm4eic::MCRecoVertexParticleAssociation> {
0354     using collection_t = edm4eic::MCRecoVertexParticleAssociationCollection;
0355     using mutable_t = edm4eic::MutableMCRecoVertexParticleAssociation;
0356 };
0357 #endif
0358 namespace edm4eic {
0359     class ProtoCluster;
0360     class ProtoClusterCollection;
0361     class MutableProtoCluster;
0362 };
0363 #if podio_VERSION < PODIO_VERSION(0, 17, 0)
0364 template <> struct PodioTypeMap<edm4eic::ProtoCluster> {
0365     using collection_t = edm4eic::ProtoClusterCollection;
0366     using mutable_t = edm4eic::MutableProtoCluster;
0367 };
0368 #endif
0369 namespace edm4eic {
0370     class TrackSegment;
0371     class TrackSegmentCollection;
0372     class MutableTrackSegment;
0373 };
0374 #if podio_VERSION < PODIO_VERSION(0, 17, 0)
0375 template <> struct PodioTypeMap<edm4eic::TrackSegment> {
0376     using collection_t = edm4eic::TrackSegmentCollection;
0377     using mutable_t = edm4eic::MutableTrackSegment;
0378 };
0379 #endif
0380 namespace edm4eic {
0381     class Cluster;
0382     class ClusterCollection;
0383     class MutableCluster;
0384 };
0385 #if podio_VERSION < PODIO_VERSION(0, 17, 0)
0386 template <> struct PodioTypeMap<edm4eic::Cluster> {
0387     using collection_t = edm4eic::ClusterCollection;
0388     using mutable_t = edm4eic::MutableCluster;
0389 };
0390 #endif
0391 namespace edm4eic {
0392     class Measurement2D;
0393     class Measurement2DCollection;
0394     class MutableMeasurement2D;
0395 };
0396 #if podio_VERSION < PODIO_VERSION(0, 17, 0)
0397 template <> struct PodioTypeMap<edm4eic::Measurement2D> {
0398     using collection_t = edm4eic::Measurement2DCollection;
0399     using mutable_t = edm4eic::MutableMeasurement2D;
0400 };
0401 #endif
0402 namespace edm4eic {
0403     class Vertex;
0404     class VertexCollection;
0405     class MutableVertex;
0406 };
0407 #if podio_VERSION < PODIO_VERSION(0, 17, 0)
0408 template <> struct PodioTypeMap<edm4eic::Vertex> {
0409     using collection_t = edm4eic::VertexCollection;
0410     using mutable_t = edm4eic::MutableVertex;
0411 };
0412 #endif
0413 namespace edm4eic {
0414     class MCRecoTrackParticleAssociation;
0415     class MCRecoTrackParticleAssociationCollection;
0416     class MutableMCRecoTrackParticleAssociation;
0417 };
0418 #if podio_VERSION < PODIO_VERSION(0, 17, 0)
0419 template <> struct PodioTypeMap<edm4eic::MCRecoTrackParticleAssociation> {
0420     using collection_t = edm4eic::MCRecoTrackParticleAssociationCollection;
0421     using mutable_t = edm4eic::MutableMCRecoTrackParticleAssociation;
0422 };
0423 #endif
0424 namespace edm4eic {
0425     class RawTrackerHit;
0426     class RawTrackerHitCollection;
0427     class MutableRawTrackerHit;
0428 };
0429 #if podio_VERSION < PODIO_VERSION(0, 17, 0)
0430 template <> struct PodioTypeMap<edm4eic::RawTrackerHit> {
0431     using collection_t = edm4eic::RawTrackerHitCollection;
0432     using mutable_t = edm4eic::MutableRawTrackerHit;
0433 };
0434 #endif
0435 namespace edm4eic {
0436     class TrackParameters;
0437     class TrackParametersCollection;
0438     class MutableTrackParameters;
0439 };
0440 #if podio_VERSION < PODIO_VERSION(0, 17, 0)
0441 template <> struct PodioTypeMap<edm4eic::TrackParameters> {
0442     using collection_t = edm4eic::TrackParametersCollection;
0443     using mutable_t = edm4eic::MutableTrackParameters;
0444 };
0445 #endif
0446 namespace edm4eic {
0447     class Trajectory;
0448     class TrajectoryCollection;
0449     class MutableTrajectory;
0450 };
0451 #if podio_VERSION < PODIO_VERSION(0, 17, 0)
0452 template <> struct PodioTypeMap<edm4eic::Trajectory> {
0453     using collection_t = edm4eic::TrajectoryCollection;
0454     using mutable_t = edm4eic::MutableTrajectory;
0455 };
0456 #endif
0457 namespace edm4eic {
0458     class MCRecoCalorimeterHitAssociation;
0459     class MCRecoCalorimeterHitAssociationCollection;
0460     class MutableMCRecoCalorimeterHitAssociation;
0461 };
0462 #if podio_VERSION < PODIO_VERSION(0, 17, 0)
0463 template <> struct PodioTypeMap<edm4eic::MCRecoCalorimeterHitAssociation> {
0464     using collection_t = edm4eic::MCRecoCalorimeterHitAssociationCollection;
0465     using mutable_t = edm4eic::MutableMCRecoCalorimeterHitAssociation;
0466 };
0467 #endif
0468 namespace edm4eic {
0469     class PMTHit;
0470     class PMTHitCollection;
0471     class MutablePMTHit;
0472 };
0473 #if podio_VERSION < PODIO_VERSION(0, 17, 0)
0474 template <> struct PodioTypeMap<edm4eic::PMTHit> {
0475     using collection_t = edm4eic::PMTHitCollection;
0476     using mutable_t = edm4eic::MutablePMTHit;
0477 };
0478 #endif
0479 namespace edm4eic {
0480     class CalorimeterHit;
0481     class CalorimeterHitCollection;
0482     class MutableCalorimeterHit;
0483 };
0484 #if podio_VERSION < PODIO_VERSION(0, 17, 0)
0485 template <> struct PodioTypeMap<edm4eic::CalorimeterHit> {
0486     using collection_t = edm4eic::CalorimeterHitCollection;
0487     using mutable_t = edm4eic::MutableCalorimeterHit;
0488 };
0489 #endif
0490 namespace edm4eic {
0491     class Track;
0492     class TrackCollection;
0493     class MutableTrack;
0494 };
0495 #if podio_VERSION < PODIO_VERSION(0, 17, 0)
0496 template <> struct PodioTypeMap<edm4eic::Track> {
0497     using collection_t = edm4eic::TrackCollection;
0498     using mutable_t = edm4eic::MutableTrack;
0499 };
0500 #endif
0501 namespace edm4eic {
0502     class ReconstructedParticle;
0503     class ReconstructedParticleCollection;
0504     class MutableReconstructedParticle;
0505 };
0506 #if podio_VERSION < PODIO_VERSION(0, 17, 0)
0507 template <> struct PodioTypeMap<edm4eic::ReconstructedParticle> {
0508     using collection_t = edm4eic::ReconstructedParticleCollection;
0509     using mutable_t = edm4eic::MutableReconstructedParticle;
0510 };
0511 #endif
0512 namespace edm4eic {
0513     class MCRecoTrackerHitAssociation;
0514     class MCRecoTrackerHitAssociationCollection;
0515     class MutableMCRecoTrackerHitAssociation;
0516 };
0517 #if podio_VERSION < PODIO_VERSION(0, 17, 0)
0518 template <> struct PodioTypeMap<edm4eic::MCRecoTrackerHitAssociation> {
0519     using collection_t = edm4eic::MCRecoTrackerHitAssociationCollection;
0520     using mutable_t = edm4eic::MutableMCRecoTrackerHitAssociation;
0521 };
0522 #endif
0523 namespace edm4eic {
0524     class HadronicFinalState;
0525     class HadronicFinalStateCollection;
0526     class MutableHadronicFinalState;
0527 };
0528 #if podio_VERSION < PODIO_VERSION(0, 17, 0)
0529 template <> struct PodioTypeMap<edm4eic::HadronicFinalState> {
0530     using collection_t = edm4eic::HadronicFinalStateCollection;
0531     using mutable_t = edm4eic::MutableHadronicFinalState;
0532 };
0533 #endif
0534 namespace edm4eic {
0535     class TrackClusterMatch;
0536     class TrackClusterMatchCollection;
0537     class MutableTrackClusterMatch;
0538 };
0539 #if podio_VERSION < PODIO_VERSION(0, 17, 0)
0540 template <> struct PodioTypeMap<edm4eic::TrackClusterMatch> {
0541     using collection_t = edm4eic::TrackClusterMatchCollection;
0542     using mutable_t = edm4eic::MutableTrackClusterMatch;
0543 };
0544 #endif
0545 namespace edm4eic {
0546     class MCRecoParticleAssociation;
0547     class MCRecoParticleAssociationCollection;
0548     class MutableMCRecoParticleAssociation;
0549 };
0550 #if podio_VERSION < PODIO_VERSION(0, 17, 0)
0551 template <> struct PodioTypeMap<edm4eic::MCRecoParticleAssociation> {
0552     using collection_t = edm4eic::MCRecoParticleAssociationCollection;
0553     using mutable_t = edm4eic::MutableMCRecoParticleAssociation;
0554 };
0555 #endif
0556 namespace edm4eic {
0557     class MCRecoClusterParticleAssociation;
0558     class MCRecoClusterParticleAssociationCollection;
0559     class MutableMCRecoClusterParticleAssociation;
0560 };
0561 #if podio_VERSION < PODIO_VERSION(0, 17, 0)
0562 template <> struct PodioTypeMap<edm4eic::MCRecoClusterParticleAssociation> {
0563     using collection_t = edm4eic::MCRecoClusterParticleAssociationCollection;
0564     using mutable_t = edm4eic::MutableMCRecoClusterParticleAssociation;
0565 };
0566 #endif
0567 namespace edm4eic {
0568     class RingImage;
0569     class RingImageCollection;
0570     class MutableRingImage;
0571 };
0572 #if podio_VERSION < PODIO_VERSION(0, 17, 0)
0573 template <> struct PodioTypeMap<edm4eic::RingImage> {
0574     using collection_t = edm4eic::RingImageCollection;
0575     using mutable_t = edm4eic::MutableRingImage;
0576 };
0577 #endif
0578 namespace edm4eic {
0579     class InclusiveKinematics;
0580     class InclusiveKinematicsCollection;
0581     class MutableInclusiveKinematics;
0582 };
0583 #if podio_VERSION < PODIO_VERSION(0, 17, 0)
0584 template <> struct PodioTypeMap<edm4eic::InclusiveKinematics> {
0585     using collection_t = edm4eic::InclusiveKinematicsCollection;
0586     using mutable_t = edm4eic::MutableInclusiveKinematics;
0587 };
0588 #endif
0589 namespace edm4eic {
0590     class TrackSeed;
0591     class TrackSeedCollection;
0592     class MutableTrackSeed;
0593 };
0594 #if podio_VERSION < PODIO_VERSION(0, 17, 0)
0595 template <> struct PodioTypeMap<edm4eic::TrackSeed> {
0596     using collection_t = edm4eic::TrackSeedCollection;
0597     using mutable_t = edm4eic::MutableTrackSeed;
0598 };
0599 #endif
0600 namespace edm4eic {
0601     class TrackerHit;
0602     class TrackerHitCollection;
0603     class MutableTrackerHit;
0604 };
0605 #if podio_VERSION < PODIO_VERSION(0, 17, 0)
0606 template <> struct PodioTypeMap<edm4eic::TrackerHit> {
0607     using collection_t = edm4eic::TrackerHitCollection;
0608     using mutable_t = edm4eic::MutableTrackerHit;
0609 };
0610 #endif
0611 
0612 template <typename Visitor> struct VisitPodioCollection {
0613     void operator()(Visitor& visitor, const podio::CollectionBase& collection) {
0614         auto podio_typename = collection.getTypeName();
0615         if (podio_typename == "edm4hep::TrackerHitPlaneCollection") {
0616             return visitor(*reinterpret_cast<const edm4hep::TrackerHitPlaneCollection*>(&collection));
0617         }
0618         if (podio_typename == "edm4hep::MCRecoTrackerHitPlaneAssociationCollection") {
0619             return visitor(*reinterpret_cast<const edm4hep::MCRecoTrackerHitPlaneAssociationCollection*>(&collection));
0620         }
0621         if (podio_typename == "edm4hep::CaloHitContributionCollection") {
0622             return visitor(*reinterpret_cast<const edm4hep::CaloHitContributionCollection*>(&collection));
0623         }
0624         if (podio_typename == "edm4hep::RecoParticleVertexAssociationCollection") {
0625             return visitor(*reinterpret_cast<const edm4hep::RecoParticleVertexAssociationCollection*>(&collection));
0626         }
0627         if (podio_typename == "edm4hep::MCRecoCaloAssociationCollection") {
0628             return visitor(*reinterpret_cast<const edm4hep::MCRecoCaloAssociationCollection*>(&collection));
0629         }
0630         if (podio_typename == "edm4hep::ClusterCollection") {
0631             return visitor(*reinterpret_cast<const edm4hep::ClusterCollection*>(&collection));
0632         }
0633         if (podio_typename == "edm4hep::SimCalorimeterHitCollection") {
0634             return visitor(*reinterpret_cast<const edm4hep::SimCalorimeterHitCollection*>(&collection));
0635         }
0636         if (podio_typename == "edm4hep::MCRecoTrackerAssociationCollection") {
0637             return visitor(*reinterpret_cast<const edm4hep::MCRecoTrackerAssociationCollection*>(&collection));
0638         }
0639         if (podio_typename == "edm4hep::ParticleIDCollection") {
0640             return visitor(*reinterpret_cast<const edm4hep::ParticleIDCollection*>(&collection));
0641         }
0642         if (podio_typename == "edm4hep::VertexCollection") {
0643             return visitor(*reinterpret_cast<const edm4hep::VertexCollection*>(&collection));
0644         }
0645         if (podio_typename == "edm4hep::RecDqdxCollection") {
0646             return visitor(*reinterpret_cast<const edm4hep::RecDqdxCollection*>(&collection));
0647         }
0648         if (podio_typename == "edm4hep::SimPrimaryIonizationClusterCollection") {
0649             return visitor(*reinterpret_cast<const edm4hep::SimPrimaryIonizationClusterCollection*>(&collection));
0650         }
0651         if (podio_typename == "edm4hep::RawTimeSeriesCollection") {
0652             return visitor(*reinterpret_cast<const edm4hep::RawTimeSeriesCollection*>(&collection));
0653         }
0654         if (podio_typename == "edm4hep::MCRecoTrackParticleAssociationCollection") {
0655             return visitor(*reinterpret_cast<const edm4hep::MCRecoTrackParticleAssociationCollection*>(&collection));
0656         }
0657         if (podio_typename == "edm4hep::RecIonizationClusterCollection") {
0658             return visitor(*reinterpret_cast<const edm4hep::RecIonizationClusterCollection*>(&collection));
0659         }
0660         if (podio_typename == "edm4hep::RawCalorimeterHitCollection") {
0661             return visitor(*reinterpret_cast<const edm4hep::RawCalorimeterHitCollection*>(&collection));
0662         }
0663         if (podio_typename == "edm4hep::CalorimeterHitCollection") {
0664             return visitor(*reinterpret_cast<const edm4hep::CalorimeterHitCollection*>(&collection));
0665         }
0666         if (podio_typename == "edm4hep::TrackCollection") {
0667             return visitor(*reinterpret_cast<const edm4hep::TrackCollection*>(&collection));
0668         }
0669         if (podio_typename == "edm4hep::EventHeaderCollection") {
0670             return visitor(*reinterpret_cast<const edm4hep::EventHeaderCollection*>(&collection));
0671         }
0672         if (podio_typename == "edm4hep::MCParticleCollection") {
0673             return visitor(*reinterpret_cast<const edm4hep::MCParticleCollection*>(&collection));
0674         }
0675         if (podio_typename == "edm4hep::ReconstructedParticleCollection") {
0676             return visitor(*reinterpret_cast<const edm4hep::ReconstructedParticleCollection*>(&collection));
0677         }
0678         if (podio_typename == "edm4hep::MCRecoParticleAssociationCollection") {
0679             return visitor(*reinterpret_cast<const edm4hep::MCRecoParticleAssociationCollection*>(&collection));
0680         }
0681         if (podio_typename == "edm4hep::MCRecoClusterParticleAssociationCollection") {
0682             return visitor(*reinterpret_cast<const edm4hep::MCRecoClusterParticleAssociationCollection*>(&collection));
0683         }
0684         if (podio_typename == "edm4hep::SimTrackerHitCollection") {
0685             return visitor(*reinterpret_cast<const edm4hep::SimTrackerHitCollection*>(&collection));
0686         }
0687         if (podio_typename == "edm4hep::TrackerPulseCollection") {
0688             return visitor(*reinterpret_cast<const edm4hep::TrackerPulseCollection*>(&collection));
0689         }
0690         if (podio_typename == "edm4hep::TimeSeriesCollection") {
0691             return visitor(*reinterpret_cast<const edm4hep::TimeSeriesCollection*>(&collection));
0692         }
0693         if (podio_typename == "edm4hep::MCRecoCaloParticleAssociationCollection") {
0694             return visitor(*reinterpret_cast<const edm4hep::MCRecoCaloParticleAssociationCollection*>(&collection));
0695         }
0696         if (podio_typename == "edm4hep::TrackerHitCollection") {
0697             return visitor(*reinterpret_cast<const edm4hep::TrackerHitCollection*>(&collection));
0698         }
0699         if (podio_typename == "edm4eic::CherenkovParticleIDCollection") {
0700             return visitor(*reinterpret_cast<const edm4eic::CherenkovParticleIDCollection*>(&collection));
0701         }
0702         if (podio_typename == "edm4eic::TensorCollection") {
0703             return visitor(*reinterpret_cast<const edm4eic::TensorCollection*>(&collection));
0704         }
0705         if (podio_typename == "edm4eic::MCRecoVertexParticleAssociationCollection") {
0706             return visitor(*reinterpret_cast<const edm4eic::MCRecoVertexParticleAssociationCollection*>(&collection));
0707         }
0708         if (podio_typename == "edm4eic::ProtoClusterCollection") {
0709             return visitor(*reinterpret_cast<const edm4eic::ProtoClusterCollection*>(&collection));
0710         }
0711         if (podio_typename == "edm4eic::TrackSegmentCollection") {
0712             return visitor(*reinterpret_cast<const edm4eic::TrackSegmentCollection*>(&collection));
0713         }
0714         if (podio_typename == "edm4eic::ClusterCollection") {
0715             return visitor(*reinterpret_cast<const edm4eic::ClusterCollection*>(&collection));
0716         }
0717         if (podio_typename == "edm4eic::Measurement2DCollection") {
0718             return visitor(*reinterpret_cast<const edm4eic::Measurement2DCollection*>(&collection));
0719         }
0720         if (podio_typename == "edm4eic::VertexCollection") {
0721             return visitor(*reinterpret_cast<const edm4eic::VertexCollection*>(&collection));
0722         }
0723         if (podio_typename == "edm4eic::MCRecoTrackParticleAssociationCollection") {
0724             return visitor(*reinterpret_cast<const edm4eic::MCRecoTrackParticleAssociationCollection*>(&collection));
0725         }
0726         if (podio_typename == "edm4eic::RawTrackerHitCollection") {
0727             return visitor(*reinterpret_cast<const edm4eic::RawTrackerHitCollection*>(&collection));
0728         }
0729         if (podio_typename == "edm4eic::TrackParametersCollection") {
0730             return visitor(*reinterpret_cast<const edm4eic::TrackParametersCollection*>(&collection));
0731         }
0732         if (podio_typename == "edm4eic::TrajectoryCollection") {
0733             return visitor(*reinterpret_cast<const edm4eic::TrajectoryCollection*>(&collection));
0734         }
0735         if (podio_typename == "edm4eic::MCRecoCalorimeterHitAssociationCollection") {
0736             return visitor(*reinterpret_cast<const edm4eic::MCRecoCalorimeterHitAssociationCollection*>(&collection));
0737         }
0738         if (podio_typename == "edm4eic::PMTHitCollection") {
0739             return visitor(*reinterpret_cast<const edm4eic::PMTHitCollection*>(&collection));
0740         }
0741         if (podio_typename == "edm4eic::CalorimeterHitCollection") {
0742             return visitor(*reinterpret_cast<const edm4eic::CalorimeterHitCollection*>(&collection));
0743         }
0744         if (podio_typename == "edm4eic::TrackCollection") {
0745             return visitor(*reinterpret_cast<const edm4eic::TrackCollection*>(&collection));
0746         }
0747         if (podio_typename == "edm4eic::ReconstructedParticleCollection") {
0748             return visitor(*reinterpret_cast<const edm4eic::ReconstructedParticleCollection*>(&collection));
0749         }
0750         if (podio_typename == "edm4eic::MCRecoTrackerHitAssociationCollection") {
0751             return visitor(*reinterpret_cast<const edm4eic::MCRecoTrackerHitAssociationCollection*>(&collection));
0752         }
0753         if (podio_typename == "edm4eic::HadronicFinalStateCollection") {
0754             return visitor(*reinterpret_cast<const edm4eic::HadronicFinalStateCollection*>(&collection));
0755         }
0756         if (podio_typename == "edm4eic::TrackClusterMatchCollection") {
0757             return visitor(*reinterpret_cast<const edm4eic::TrackClusterMatchCollection*>(&collection));
0758         }
0759         if (podio_typename == "edm4eic::MCRecoParticleAssociationCollection") {
0760             return visitor(*reinterpret_cast<const edm4eic::MCRecoParticleAssociationCollection*>(&collection));
0761         }
0762         if (podio_typename == "edm4eic::MCRecoClusterParticleAssociationCollection") {
0763             return visitor(*reinterpret_cast<const edm4eic::MCRecoClusterParticleAssociationCollection*>(&collection));
0764         }
0765         if (podio_typename == "edm4eic::RingImageCollection") {
0766             return visitor(*reinterpret_cast<const edm4eic::RingImageCollection*>(&collection));
0767         }
0768         if (podio_typename == "edm4eic::InclusiveKinematicsCollection") {
0769             return visitor(*reinterpret_cast<const edm4eic::InclusiveKinematicsCollection*>(&collection));
0770         }
0771         if (podio_typename == "edm4eic::TrackSeedCollection") {
0772             return visitor(*reinterpret_cast<const edm4eic::TrackSeedCollection*>(&collection));
0773         }
0774         if (podio_typename == "edm4eic::TrackerHitCollection") {
0775             return visitor(*reinterpret_cast<const edm4eic::TrackerHitCollection*>(&collection));
0776         }
0777         throw std::runtime_error("Unrecognized podio typename!");
0778     }
0779 };