go-hep.org/x/hep@v0.38.1/lcio/types.go (about) 1 // Copyright ©2017 The go-hep Authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style 3 // license that can be found in the LICENSE file. 4 5 package lcio 6 7 import ( 8 "fmt" 9 "strings" 10 ) 11 12 func typeFrom(name string) any { 13 switch name { 14 case "MCParticle": 15 return new(McParticleContainer) 16 case "SimTrackerHit": 17 return new(SimTrackerHitContainer) 18 case "SimCalorimeterHit": 19 return new(SimCalorimeterHitContainer) 20 case "LCFloatVec": 21 return new(FloatVec) 22 case "LCIntVec": 23 return new(IntVec) 24 case "LCStrVec": 25 return new(StrVec) 26 case "RawCalorimeterHit": 27 return new(RawCalorimeterHitContainer) 28 case "CalorimeterHit": 29 return new(CalorimeterHitContainer) 30 case "TrackerData": 31 return new(TrackerDataContainer) 32 case "TrackerHit": 33 return new(TrackerHitContainer) 34 case "TrackerHitPlane": 35 return new(TrackerHitPlaneContainer) 36 case "TrackerHitZCylinder": 37 return new(TrackerHitZCylinderContainer) 38 case "TrackerPulse": 39 return new(TrackerPulseContainer) 40 case "TrackerRawData": 41 return new(TrackerRawDataContainer) 42 case "Track": 43 return new(TrackContainer) 44 case "Cluster": 45 return new(ClusterContainer) 46 case "Vertex": 47 return new(VertexContainer) 48 case "ReconstructedParticle": 49 return new(RecParticleContainer) 50 51 case "LCGenericObject": 52 return new(GenericObject) 53 case "LCRelation": 54 return new(RelationContainer) 55 } 56 if strings.HasSuffix(name, "_References") { 57 return new(References) 58 } 59 panic(fmt.Errorf("unhandled type %q", name)) 60 } 61 62 func typeName(t any) string { 63 switch t.(type) { 64 case *McParticleContainer: 65 return "MCParticle" 66 case *SimTrackerHitContainer: 67 return "SimTrackerHit" 68 case *SimCalorimeterHitContainer: 69 return "SimCalorimeterHit" 70 case *FloatVec: 71 return "LCFloatVec" 72 case *IntVec: 73 return "LCIntVec" 74 case *StrVec: 75 return "LCStrVec" 76 case *RawCalorimeterHitContainer: 77 return "RawCalorimeterHit" 78 case *CalorimeterHitContainer: 79 return "CalorimeterHit" 80 case *TrackerDataContainer: 81 return "TrackerData" 82 case *TrackerHitContainer: 83 return "TrackerHit" 84 case *TrackerHitPlaneContainer: 85 return "TrackerHitPlane" 86 case *TrackerHitZCylinderContainer: 87 return "TrackerHitZCylinder" 88 case *TrackerPulseContainer: 89 return "TrackerPulse" 90 case *TrackerRawDataContainer: 91 return "TrackerRawData" 92 case *TrackContainer: 93 return "Track" 94 case *ClusterContainer: 95 return "Cluster" 96 case *VertexContainer: 97 return "Vertex" 98 case *RecParticleContainer: 99 return "ReconstructedParticle" 100 101 case *GenericObject: 102 return "LCGenericObject" 103 case *RelationContainer: 104 return "LCRelation" 105 } 106 panic(fmt.Errorf("lcio: unhandled type %T", t)) 107 }