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  }