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