00001 00002 // 00003 // $Id: StraightTrackAlignment.h,v 1.12 2002/09/10 17:11:18 rhatcher Exp $ 00004 // 00005 // StraightTrackAlignment 00006 // 00007 // Package: Alignment 00008 // 00009 // An alignment engine which uses straight tracks to align on a per 00010 // module basis 00011 // 00012 // Contact: bv@bnl.gov 00013 // 00014 // Created on: Mon Jun 24 12:40:05 2002 00015 // 00017 00018 #ifndef STRAIGHTTRACKALIGNMENT_H 00019 #define STRAIGHTTRACKALIGNMENT_H 00020 00021 #include "UgliGeometry/UgliGeomHandle.h" 00022 00023 #include <list> 00024 #include <map> 00025 00026 class CandTrackHandle; 00027 class ScintModule; 00028 class AlignHists; 00029 00030 class StraightTrackAlignment 00031 { 00032 00033 public: 00034 00035 typedef std::list<UgliStripHandle> StraightTrack; 00036 00037 StraightTrackAlignment(); 00038 ~StraightTrackAlignment(); 00039 00040 00041 void Init (UgliGeomHandle& geom_handle, const char* histname=0); 00042 void AddTrack (const CandTrackHandle& track_handle); 00043 00044 // accum stats for the given track, return average residual 00045 double ApplyTrack(StraightTrack st, PlaneView::PlaneView_t view); 00046 00047 // Call ApplyTrack on all tracks for the particular view (or both 00048 // views for no args), return average of average residuals 00049 double ApplyAllTracks(); 00050 double ApplyAllTracks(PlaneView::PlaneView_t the_view); 00051 void ApplyAllOffsets(void); 00052 00053 private: 00054 00055 // copy constructor, assignment: 00056 StraightTrackAlignment(const StraightTrackAlignment& rhs); // copy constructor 00057 StraightTrackAlignment& operator=(const StraightTrackAlignment& rhs); // assignment 00058 00059 00060 ScintModule* LookupScintModule(UgliStripHandle ush); 00061 double FitTrackLessOne(StraightTrack::iterator lit, 00062 StraightTrack::iterator end, 00063 StraightTrack::iterator skip); 00064 00065 std::list<StraightTrack> fTracks[2]; // tracks in alignment data set 00066 00067 // Lookup from encoded Plane/Module number to the ScintModule 00068 typedef std::map<PlexScintMdlId, ScintModule*> ScintModuleLookup; 00069 ScintModuleLookup fSMLookup; 00070 AlignHists* fHister; 00071 int fMinPlanes; // min number of hit planes to use a track 00072 int fNplanes; 00073 int fNmdlperplane; 00074 const char* fHistName; 00075 }; // end of class StraightTrackAlignment 00076 00077 #endif // STRAIGHTTRACKALIGNMENT_H
1.3.9.1