Class MPGDTrapezoidStripFactory

java.lang.Object
org.jlab.detector.geant4.v2.MPGD.trapezoid.MPGDTrapezoidStripFactory
Direct Known Subclasses:
MUVTStripFactory, URWTStripFactory

public abstract class MPGDTrapezoidStripFactory extends Object
Base class implementing strip/surface/plane geometry for trapezoidal MPGD detectors.
  • Field Details

  • Constructor Details

  • Method Details

    • getVolumeByName

      protected abstract Geant4Basic getVolumeByName(String name)
      Detector-specific hook: Must return the volume object given its name.Typically implemented by indexing geo.getAllVolumes() into a Mapinvalid input: '<'String,Geant4Basic>.
      Parameters:
      name -
      Returns:
    • is2DReadout

      protected boolean is2DReadout()
      If true: readout is 2D => same zReadoutLocal for both layers.Override in detector.
      Returns:
    • baseLayerForCCDB

      protected int baseLayerForCCDB(int layer)
    • defaultPitchCm

      protected double defaultPitchCm()
      Pitch in cm (CCDB stored in mm). Override if detector is different.
    • defaultWidthCm

      protected double defaultWidthCm()
      Width in cm (CCDB stored in mm). Override if detector is different.
    • defaultStereoAngleRad

      protected double defaultStereoAngleRad()
      Stereo angle in rad (CCDB stored in deg). Override if detector is layer-dependent.
    • getSensitiveMatComponentId

      protected int getSensitiveMatComponentId(int layer)
      Return the CCDB "Component" index (matC) whose Sensitivity==1 for a given layer.
      Parameters:
      layer -
      Returns:
    • getSensitiveHalfThicknessCm

      protected double getSensitiveHalfThicknessCm(int layer)
      Compute the sensitive half thickness (cm) from CCDB (Sensitivity==1).
      Parameters:
      layer -
      Returns:
    • findReadoutZLocal

      protected double findReadoutZLocal(int layer)
      Readout plane z in sensitive-local.Convention: - 1D: even layerInRegion => +zHalf, odd => -zHalf - 2D: always +zHalf
      Parameters:
      layer -
      Returns:
    • getSensitiveVolumeName

      protected String getSensitiveVolumeName(int region, int sector, int layer)
      Build expected sensitive-volume name using the naming convention from AbstractMPGDTrapezoidGeant4Factory.populateSectorWithDetectorStructure(): rg{region}_s{sector}_l{layerGlobal0Based}_matC{matC} where: - region is 1-based in the name - sector is 1-based in the name - matC is the CCDB material "Component" id for Sensitivity==1
      Parameters:
      region -
      sector -
      layer -
      Returns:
    • toGlobalSensitive

      protected Vector3d toGlobalSensitive(int region, int sector, int layer, Vector3d local)
      Transform a point from sensitive-local -> global using the sensitive volume transform.
      Parameters:
      region -
      sector -
      layer -
      local -
      Returns:
    • buildStripConstants

      protected MPGDTrapezoidStripFactory.StripConstants buildStripConstants(int region, int layer)
      Build StripConstants using: - XY trapezoid from geo.getSectorDimensionsPhysical(region) (NOT enlarged) - zReadoutLocal from CCDB sensitive thickness (findReadoutZLocal) - pitch/width/stereo from CCDB
      Parameters:
      region -
      layer -
      Returns:
    • toStripFrameXY

      protected static double[] toStripFrameXY(double x, double y, MPGDTrapezoidStripFactory.StripConstants c)
    • intersectEdgeWithLineNormal

      protected static boolean intersectEdgeWithLineNormal(Vector3d A, Vector3d B, Vector3d nXY, double rhs, Vector3d out)
    • buildStripSegment

      protected static boolean buildStripSegment(int internalIndex, MPGDTrapezoidStripFactory.StripConstants c, Vector3d out1, Vector3d out2)
    • buildStripCache

      Build full strip list (LOCAL) and assign CLAS12 component IDs by sorting on local X midpoint.
      Parameters:
      c -
      Returns:
    • toTilted

      protected Line3D toTilted(int sector, Line3D global)
      Parameters:
      sector -
      global -
      Returns:
    • createSurface

      protected Trap3D createSurface(int sector, int layer)
      Parameters:
      sector -
      layer -
      Returns:
    • createPlane

      protected Plane3D createPlane(int sector, int layer)
      Parameters:
      sector -
      layer -
      Returns:
    • buildAll

      public final void buildAll()
    • clearCaches

      protected void clearCaches()
    • fillStripLists

      protected void fillStripLists()
    • fillSurfaceLists

      protected void fillSurfaceLists()
    • fillPlaneLists

      protected void fillPlaneLists()
    • getStrip

      public Line3D getStrip(int sector, int layer, int component)
      Global strip line in CLAS12 frame.
      Parameters:
      sector -
      layer -
      component -
      Returns:
    • getStripLocal

      public Line3D getStripLocal(int sector, int layer, int component)
      Strip line in sensitive-volume local frame.
      Parameters:
      sector -
      layer -
      component -
      Returns:
    • getStripTilted

      public Line3D getStripTilted(int sector, int layer, int component)
      Strip line in legacy tilted frame (debug/plot).
      Parameters:
      sector -
      layer -
      component -
      Returns:
    • getPlane

      public Plane3D getPlane(int sector, int layer)
      Readout plane in global frame.
      Parameters:
      sector -
      layer -
      Returns:
    • getSurface

      public Trap3D getSurface(int sector, int layer)
      Readout trapezoid surface in global frame.
      Parameters:
      sector -
      layer -
      Returns:
    • getNComponents

      public int getNComponents(int sector, int layer)
      Number of components (strips) for this (sector, layer).
      Parameters:
      sector -
      layer -
      Returns: