Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

     This function:
        1) builds the set of AcdHits (AcdPha2MipTool::makeAcdHits() )
        2) calculates all the geometrical quantities for each track  ( track and the event vertex ( trackDistances(), vertexDistances(),
              AcdTrkIntersectTool::exitsLAT(), AcdPocaTool::tileDistances(),   AcdPocaTool::ribbonDistances() )
        3) latches best values for storage to Merit Tuple ( doca(), hitTileDist(), tileAcdDist(),  hitRibbonDist() ) 
        4) extrapolates track to the ACD ( extrapolateTrack() )
        5) puts output on the TDS

        AcdPha2MipTool::makeAcdHits(const Event::AcdDigiCol& digiCol, Event::AcdHitCol& hits, AcdRecon::AcdHitMap& hitMap )

            Converts all the digis to calibrated AcdHits. 

)

            Converts all the digis to calibrated AcdHits. 

            Normally all digis are converted to hits. 

            Depending on if the hit was read out in the high range or the low range different conversions are applied.
            The low range uses a linear conversion:

                   mips =   ( PHA - pedestal ) / mip_peak_PHA

            The high range uses a form that is linear for low values, but saturates for high values:

                   mips =   ( ( PHA - pedetsal ) *  saturation * slope ) /  (   saturation + ( ( PHA - pedestal )  * slope  ) )

                   if  ( (PHA - pedestal) * slope  << saturation ) this goes to:
                       mips = ( PHA - pedetsal ) *  slope

                   if  ( (PHA - pedestal) * slope  >> saturation ) this goes to:
                       mip = saturation

               Both of the conversion functions live in the AcdUtil/AcdCalibFuncs.   They are
                     mipEquivalent_lowRange
                     mipEquivalent_highRange                   
 

        AcdReconAlg::trackDistances(...)

...

                    AcdTkrIntersecttTool:makeIntersections()  -> uses GEANT propagator to caluclate intersection w/ ACD elements
                    AcdRecon::projectErrorAtPoca()                -> propagates error matrix to POCA

 

                   AcdTkrIntersectTool::makeIntersections()

...

 Outputs:
    arcLength -> distance along the track where the poca occurs  =>  poca = track.m_point + arcLength * track.m_dir
    doca         -> distance of clostest approach  == | point - poca |
    poca         -> the point of closest approach

 

 crossesPlane(const Track& track, const Point& plane, int face, arcLength, localX,localY, Point& hitPoint)

...

 Outputs:
    arcLength -> distance along the track where the plane is crossed occurs  =>  hitPoint = track.m_point + arcLength * track.m_dir
    localX       -> position of the crossing point relative to the plane center
    localY       
    hitPoint     -> the point where the track projection crosses the plane  

  tilePlane(const Track& track, const Tile& tile, arcLength, localX, localY,activeX, activeY, active2D, Point& hitPoint)

...

 Outputs:
    arcLength -> distance along the track where the plane is crossed occurs  =>  hitPoint = track.m_point + arcLength * track.m_dir
    dist     ->  the distance of closest approach between the track and the tile edge (in 3D)
    poca   -> the point of closest approach along the track to the tile edge
    vector  -> the vector from the poca to the closest point on the tile edge
    region  -> a code to show which edge of the tile was considered (y,+x,+y,-x edges, ++, +, --, -+ corners)

 

ribbonPlane(const Track& track, const Ribbon& ribbon, arcLength, dist, Point& hitPoint)

...

 Outputs:
    arcLength -> distance along the track where the plane is crossed occurs  =>  hitPoint = track.m_point + arcLength * track.m_dir
    dist     -> the distance of closest approach between the track and the ribbon
    hitPoint     -> the point where the track projection crosses the plane  

ribbonPoca(const Track& track, const Ribbon& ribbon, arcLength, dist, Point& poca, Vector& vector, int& region)

...

 Outputs:
    arcLength -> distance along the track where the plane is crossed occurs  =>  hitPoint = track.m_point + arcLength * track.m_dir
    dist     -> the distance of closest approach between the track and the ribbon
    poca   -> the point of closest approach along the track to the ribbon
    vector  -> the vector from the poca to the closest point on the ribbon
    region  -> a code to show which edge of the ribbon was considered (+,- in local coords) 

Track Projection Functions

...

    // stuff about where the POCA occurs relative to the tile or ribbon
    int m_region;                   // One of the enums in "??"

 

TrackData

    HepPoint3D   m_point;          // the start (or end) point of the track
    HepVector3D m_dir;            // the direction of the track
    double          m_energy;      // the energy of the track at the start point
    int                m_index;        // the index number of this track
    bool              m_upward;      // which side of track 

 ExitData

    int    m_face;              // 0:top 1:-X 2:-Y 3:+X 4:+Y 5:bottom
    double m_arcLength;   // Length along the track to the m_x
    Point  m_x;                 // Intersection Point