File indexing completed on 2025-01-18 09:55:45
0001
0002
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 };