Versions Compared

Key

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

CAVEAT:  Basically, I'm just using these pages as a notepad.   The idea is to make the doxygen generated commets reflect the stuff here eventually

 Overiew

  This is just a list of the order & nesting the various functions are called in.

   AcdReconAlg::reconstruct( const Event::AcdDigiCol& digiCol )

...

     Is the main function.  It takes the collection of AcdDigis from the event as input.

...

 

     This function:
        1) builds the set of AcdHits (AcdPha2MipTool::makeAcdHits() )
        2) calculates all the geometrical quantities for each track  ( 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

     it calls 

...

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

 

 

Which converts             Converts all the digis to calibrated AcdHits. 

        AcdReconAlg::trackDistances(...)

            Which does Does all the geometrical computations in this order:

  

           
 

        And then stores all of the cached AcdReconstruction data on the TDS
 

 

for each track.

            Those calculations are:

                1)  finding the point where the track exits the nominal ACD in both directions (AcdTrkIntersectTool::exitsLAT() )
                2)  find the docas to the various hit Acd tiles and ribbons ( AcdPocaTool::tileDistances(),  AcdPocaTool::ribbonDistances())

                        AcdPocaTool::tileDistances(...)

             This gets the various types of doca & active distance calculations for tiles

                     AcdRecon::pointPoca()                    -> doca to center of tile
                     AcdRecon::tilePlane()                     -> point that track crosses tile plane & 2D active distance
                       AcdRecon::tileEdgePoca() or              -> doca to closest edge (track inside tile)
                       AcdRecon::tileEdgeCornerPoca()        -> doca to closest edge or corner ( track outside tile )

                        AcdPocaTool::ribbonDistances(...)

               This get the various types of doca & active distance calculations for ribbons  

                     AcdRecon::ribbonPlane()                  -> point that track crosses ribbon plane
                     AcdRecon::ribbonPoca()                   -> doca to ray defined by ribbon

                  AcdReconAlg::doca(...)

                 Latches the best (smallest) values of doca to tile center for all tracks 

                  AcdReconAlg::hitTileDist(...)

                 Latches the best (largest) values of 2D active distance to tiles for all tracks

                  AcdReconAlg::tileActDist(...)

                 Latches the best (largest) values of "tileActiveDistance" (2D inside tile, 3D outside tile) for all tracks

                  AcdReconAlg::hitRibbonDist(...)

                 Latches the best (largest) value of 2D active distance to ribbons for all tracks  

                  AcdReconAlg::extrapolateTrack(...) 

                 Uses GEANT propagator to take track parameters out tointersection and POCAs.   Calls:

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

 

                   AcdTkrIntersectTool::makeIntersections()

                    Uses GEANT propagator to caluclate intersection w/ ACD elements.   If the struck element has not been hit, does the POCA calculations

                        AcdRecon::ribbonPlane() and AcdRecon::ribbonPoca() or
                        AcdRecon::tilePlane() and AcdRecon::tileEdgePoca()

                        AcdRecon::projectToPlane() 

                    Gets the poca to the tile holes ( holePoca() ) 

                    Decides where closest gap is, then calls

                            gapPocaRibbon( )      -> if the track actually hits a ribbon that isn't in an overlap area
                            gapPocaTile( )          -> if the track hits a tile
                            fallbackToNominal()  -> if the track doesn't hit any GEANT element
 

                  AcdReconAlg:: calcCornerDoca(...)

                  Calculates the DOCA to the Rays defined by the side edges of the ACD.  Signed to reflect the directionality of the gaps.
  

Geometrical Functions

 These functions are defined in AcdRecon/AcdReconFuncs.h and implemented in src/AcdReconFuncs.cxx 

...

    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