StFtpcConfMapper


class description - source file - inheritance tree

class StFtpcConfMapper : public StFtpcTracker

    private:
void SetEtaScope(Int_t f) void SetEtaScope(Int_t f, Int_t g) void SetEtaScope(Int_t f, Bool_t vertex_constraint) void SetMaxAngleTrack(Double_t f) void SetMaxAngleTrack(Double_t f, Double_t g) void SetMaxAngleTrack(Double_t f, Bool_t vertex_constraint) void SetMaxAngleTracklet(Double_t f) void SetMaxAngleTracklet(Double_t f, Double_t g) void SetMaxAngleTracklet(Double_t f, Bool_t vertex_constraint) void SetMaxCircleDistTrack(Double_t f) void SetMaxCircleDistTrack(Double_t f, Double_t g) void SetMaxCircleDistTrack(Double_t f, Bool_t vertex_constraint) void SetMaxLengthDistTrack(Double_t f) void SetMaxLengthDistTrack(Double_t f, Double_t g) void SetMaxLengthDistTrack(Double_t f, Bool_t vertex_constraint) void SetMinPoints(Int_t f) void SetMinPoints(Int_t f, Int_t g) void SetMinPoints(Int_t f, Bool_t vertex_constraint) void SetPhiScope(Int_t f) void SetPhiScope(Int_t f, Int_t g) void SetPhiScope(Int_t f, Bool_t vertex_constraint) void SetRowScopeTrack(Int_t f) void SetRowScopeTrack(Int_t f, Int_t g) void SetRowScopeTrack(Int_t f, Bool_t vertex_constraint) void SetRowScopeTracklet(Int_t f) void SetRowScopeTracklet(Int_t f, Int_t g) void SetRowScopeTracklet(Int_t f, Bool_t vertex_constraint) void SetTrackletLength(Int_t f) void SetTrackletLength(Int_t f, Int_t g) void SetTrackletLength(Int_t f, Bool_t vertex_constraint) public:
StFtpcConfMapper StFtpcConfMapper() StFtpcConfMapper StFtpcConfMapper(St_fcl_fppoint* fcl_fppoint, Double_t* vertexPos = NULL, Bool_t bench = (Bool_t)false, Int_t phi_segments = 100, Int_t eta_segments = 200) StFtpcConfMapper StFtpcConfMapper(StFtpcConfMapper&) virtual void ~StFtpcConfMapper() void CalcChiSquared(StFtpcTrack* track, StFtpcConfMapPoint* point, Double_t* chi2) const Double_t CalcDistance(const StFtpcConfMapPoint* hit1, const StFtpcConfMapPoint* hit2) const const Double_t CalcDistance(const StFtpcConfMapPoint* hit, Double_t* coeff) const static TClass* Class() void ClusterLoop() void Cout(Int_t width, Int_t figure) void Cout(Int_t width, Double_t figure) void CreateTrack(StFtpcConfMapPoint* hit) void CutInfo() Bool_t ExtendTrack(StFtpcTrack* track) void FreeTracking() const Double_t GetClusterDistance(const StFtpcConfMapPoint* hit1, const StFtpcConfMapPoint* hit2) const const Double_t GetDistanceFromFit(const StFtpcConfMapPoint* hit) const const Double_t GetEtaDiff(const StFtpcConfMapPoint* hit1, const StFtpcConfMapPoint* hit2) const Int_t GetEtaSegm(StFtpcConfMapPoint* hit) Int_t GetEtaSegm(Int_t segm) StFtpcConfMapPoint* GetNextNeighbor(StFtpcConfMapPoint* start_hit, Double_t* coeff) Int_t GetNumClustersUnused() Int_t GetNumDiffHits() Int_t GetNumLengthFitNaN() Int_t GetNumMainVertexTracks() Int_t GetNumMergedSplits() Int_t GetNumMergedTracklets() Int_t GetNumMergedTracks() const Double_t GetPhiDiff(const StFtpcConfMapPoint* hit1, const StFtpcConfMapPoint* hit2) const Int_t GetPhiSegm(StFtpcConfMapPoint* hit) Int_t GetPhiSegm(Int_t segm) Int_t GetRowSegm(StFtpcConfMapPoint* hit) Int_t GetRowSegm(Int_t segm) Int_t GetSegm(Int_t row_segm, Int_t phi_segm, Int_t eta_segm) void HandleSplitTracks(Double_t max_dist, Double_t ratio_min, Double_t ratio_max) virtual TClass* IsA() const void MainVertexSettings(Int_t trackletlength, Int_t tracklength, Int_t rowscopetracklet, Int_t rowscopetrack, Int_t phiscope, Int_t etascope) void MainVertexTracking() void MergeSplitTracks(StFtpcTrack* t1, StFtpcTrack* t2) void NonVertexSettings(Int_t trackletlength, Int_t tracklength, Int_t rowscopetracklet, Int_t rowscopetrack, Int_t phiscope, Int_t etascope) void SetCuts(Double_t maxangletracklet1, Double_t maxangletracklet2, Double_t maxangletrack1, Double_t maxangletrack2, Double_t maxcircletrack1, Double_t maxcircletrack2, Double_t maxlengthtrack1, Double_t maxlengthtrack2) void SetCuts(Double_t maxangletracklet, Double_t maxangletrack, Double_t maxcircletrack, Double_t maxlengthtrack) void SettingInfo() void Settings(Int_t trackletlength1, Int_t trackletlength2, Int_t tracklength1, Int_t tracklength2, Int_t rowscopetracklet1, Int_t rowscopetracklet2, Int_t rowscopetrack1, Int_t rowscopetrack2, Int_t phiscope1, Int_t phiscope2, Int_t etascope1, Int_t etascope2) void Settings(Int_t trackletlength, Int_t tracklength, Int_t rowscopetracklet, Int_t rowscopetrack, Int_t phiscope, Int_t etascope) void SetTrackCuts(Double_t maxangle, Double_t maxcircle, Double_t maxlength, Bool_t vertex_constraint) void SetTrackletCuts(Double_t maxangle, Bool_t vertex_constraint) void SetVertexConstraint(Bool_t f) virtual void ShowMembers(TMemberInspector& insp, char* parent) void StraightLineFit(StFtpcTrack* track, Double_t* a, Int_t n = 0) virtual void Streamer(TBuffer& b) const Double_t TrackAngle(const StFtpcPoint* lasthitoftrack, const StFtpcPoint* hit) const void TrackingInfo() const Double_t TrackletAngle(StFtpcTrack* track, Int_t n = 3) const void TrackLoop() void TwoCycleTracking() const Bool_t VerifyCuts(const StFtpcConfMapPoint* lasttrackhithit, const StFtpcConfMapPoint* newhit) const

Data Members

private:
TBenchmark* mBench benchmark object (just for run-time measurements) TObjArray* mVolume array of volume (pad, phi, eta) elements TObjArray* mSegment array of StFtpcConfMapPoints (all hits of/in one mVolume cell) Int_t mNumRowSegment this is (and has to be at most) the number of padrows Int_t mNumPhiSegment number of phi segments Int_t mNumEtaSegment number of eta segments Int_t mBounds array size Char_t mMaxFtpcRow number of rows in one Ftpc Char_t mFtpc current Ftpc number (either 1 ore 2) Bool_t mVertexConstraint vertex constraint (true or false) Int_t mTrackletLength[2] minimal length of tracks (up to here different search algorithm) Int_t mRowScopeTracklet[2] number of row segments to look for the next point of a tracklet Int_t mRowScopeTrack[2] number of row segments to look for the next point of a track Int_t mPhiScope[2] number of phi segments to look for the next point Int_t mEtaScope[2] number of eta segments to look for the next point Int_t mMinPoints[2] minimum number of points on one track Double_t mMaxAngleTracklet[2] limit of angle between to pieces of a tracklet Double_t mMaxAngleTrack[2] limit of angle between to pieces of a track Double_t mMaxCircleDist[2] limit of angle phi between to subsequent clusters of one track Double_t mMaxLengthDist[2] limit of pseudorapidity eta between to subsequent clusters of one track Int_t mMainVertexTracks number of tracks coming from the main vertex Int_t mMergedTracks cluster on a track missing, but tracker was able to merge the pieces Int_t mMergedTracklets cluster on a tracklet missing, but tracker was able to merge the pieces Int_t mMergedSplits number of merged split tracks Int_t mDiffHits circle fit and length fit returned differnet hits Int_t mDiffHitsStill different hits from fits could not be resolved Int_t mLengthFitNaN argument of arcsin was higher than +1 (lower than -1) Int_t mClustersUnused number of unused clusters

Class Description

                                                                                
 StFtpcConfMapper class - tracking class to do tracking with conformal mapping. 
                                                                                


StFtpcConfMapper()
 Default constructor.

StFtpcConfMapper(St_fcl_fppoint *const fcl_fppoint, Double_t vertexPos[3], Bool_t bench, Int_t phi_segments, Int_t eta_segments) : StFtpcTracker(fcl_fppoint, vertexPos)
 Constructor.

~StFtpcConfMapper()
 Destructor.

void MainVertexTracking()
 Tracking with vertex constraint.

void FreeTracking()
 Tracking without vertex constraint.

void TwoCycleTracking()
 Tracking in 2 cycles:
 1st cycle: tracking with vertex constraint
 2nd cycle: without vertex constraint (of remaining clusters)

void Settings(Int_t trackletlength1, Int_t trackletlength2, Int_t tracklength1, Int_t tracklength2, Int_t rowscopetracklet1, Int_t rowscopetracklet2, Int_t rowscopetrack1, Int_t rowscopetrack2, Int_t phiscope1, Int_t phiscope2, Int_t etascope1, Int_t etascope2)
 Sets all settings of the tracker.

 This is the order of settings given to this function:

   - number of points to perform 'tracklet' search for main vertex tracks
   - number of points to perform 'tracklet' search for non vertex tracks
     These two mean no fitting but just looking for the nearest point
     in the direction to the main vertex (also for non vertex tracks!).

   - minimum number of points on a main vertex track
   - minimum number of points on a non vertex track
     These remove tracks and release points again already during the tracking
     if the tracker hasn't found enough hits on the track.

   - number of row segments to look on both sides for main vertex tracklets
   - number of row segments to look on both sides for non vertex tracklets
   - number of row segments to look on both sides for main vertex tracks
   - number of row segments to look on both sides for non vertex tracks
     These should be set to 1 for tracklets and to a value not less than 1 for track.
     Otherwise (if the value is set to 0) the tracker looks for the next point
     only in the same row. It should be set to a value higher than 1 if you
     want to be able to miss a cluster (because it is not there) but still
     to extend the track. This is (may be) not a good idea for tracklets.
     The tracker will extend the search in the next to the following padrow only
     if it has not found a cluster in the following row.

   - number of phi segments to look on both sides for main vertex tracks
   - number of phi segments to look on both sides for non vertex tracks
     These values have the same meaning as the values above for the row segemnts
     but now for the azimuth angle phi.
     The diffences are that the search is performed in any case over all ofthese
     segemnts (not only if in the nearest segments nothing was found) and that the
     reason to be able to set these values differential for main and non vertex tracks
     is the fact that non vertex tracks may be bent more than the high momentum
     main vertex tracks.

   - number of eta segments to look on both sides for main vertex tracks
   - number of eta segments to look on both sides for non vertex tracks
     Same as for the phi segments (above but now in eta (pseudorapidity) space).

void Settings(Int_t trackletlength, Int_t tracklength, Int_t rowscopetracklet, Int_t rowscopetrack, Int_t phiscope, Int_t etascope)
 Sets settings for the given vertex constraint.
 See above for details on the settings.

void MainVertexSettings(Int_t trackletlength, Int_t tracklength, Int_t rowscopetracklet, Int_t rowscopetrack, Int_t phiscope, Int_t etascope)
 Sets settings for vertex constraint on.
 See above for details on the settings.

void NonVertexSettings(Int_t trackletlength, Int_t tracklength, Int_t rowscopetracklet, Int_t rowscopetrack, Int_t phiscope, Int_t etascope)
 Sets settings for vertex constraint off.
 
 See above for details on the settings.

void SetCuts(Double_t maxangletracklet1, Double_t maxangletracklet2, Double_t maxangletrack1, Double_t maxangletrack2, Double_t maxcircletrack1, Double_t maxcircletrack2, Double_t maxlengthtrack1, Double_t maxlengthtrack2)
 Sets all cuts for the tracking.

 This is the order of settings given to this function:

   - maximum angle of main vertex tracklets
   - maximum angle of non vertex tracklets
   - maximum angle of main vertex tracks
   - maximum angle of non vertex tracks
   - maximal distance from circle fit for main vertex tracks
   - maximal distance from circle fit for non vertex tracks
   - maximal distance from length fit for main vertex tracks
   - maximal distance from length fit for non vertex tracks

void SetCuts(Double_t maxangletracklet, Double_t maxangletrack, Double_t maxcircletrack, Double_t maxlengthtrack)
 Sets cuts for vertex constraint on or off.
 See above for details on the cuts.

void SetTrackCuts(Double_t maxangle, Double_t maxcircletrack, Double_t maxlengthtrack, Bool_t vertex_constraint)
 Sets cuts of tracks for the given vertex constraint.
 See above for details on the cuts.

void SetTrackletCuts(Double_t maxangle, Bool_t vertex_constraint)
 Sets cuts of tracklets for the given vertex constraint.
 See above for details on the cuts.

Int_t GetRowSegm(StFtpcConfMapPoint *hit)
 Returns number of pad segment of a specific hit.

Int_t GetPhiSegm(StFtpcConfMapPoint *hit)
 Returns number of phi segment of a specific hit.

Int_t GetEtaSegm(StFtpcConfMapPoint *hit)
 Returns number of eta segment of a specific hit.

Int_t GetSegm(Int_t row_segm, Int_t phi_segm, Int_t eta_segm)
 Calculates the volume segment number from the segmented volumes (segm = segm(pad,phi,eta)).

Int_t GetRowSegm(Int_t segm)
 Returns number of pad segment of a specifiv segment.

Int_t GetPhiSegm(Int_t segm)
 Returns number of phi segment of a specifiv segment.

Int_t GetEtaSegm(Int_t segm)
 Returns number of eta segment of a specifiv segment.

void CalcChiSquared(StFtpcTrack *track, StFtpcConfMapPoint *point, Double_t *chi2)
 Calculates the chi squared for the circle and the length fit for a given point
 as an extension for the also given track.

void StraightLineFit(StFtpcTrack *track, Double_t *a, Int_t n)
 Calculates two straight line fits with the given clusters

 The first calculation is performed in the conformal mapping space (Xprime, Yprime):
 Yprime(Xprime) = a[0]*Xprime + a[1].
 The second calculates the fit for length s vs. z:
 s(z) = a[2]*z +a[3].
 a[4] is the chi squared per degrees of freedom for the circle fit.
 a[5] is the chi squared per degrees of freedom for the length fit.

void HandleSplitTracks(Double_t max_dist, Double_t ratio_min, Double_t ratio_max)
 Looks for split tracks and passes them to the track merger.

void MergeSplitTracks(StFtpcTrack *t1, StFtpcTrack *t2)
 Merges two tracks which are split.

void ClusterLoop()
 This function loops over all clusters to do the tracking.
 These clusters act as starting points for new tracks.

void CreateTrack(StFtpcConfMapPoint *hit)
 This function takes as input a point in the Ftpc which acts as starting point for a new track.
 It forms tracklets then extends them to tracks.

StFtpcConfMapPoint* GetNextNeighbor(StFtpcConfMapPoint *start_hit, Double_t *coeff = NULL)
 Returns the nearest cluster to a given start_hit.

void TrackLoop()
 Loops over all found tracks and passes them to the part of the program where each track is tried to be extended.

Bool_t ExtendTrack(StFtpcTrack *track)
 Trys to extend a given track.

void Cout(Int_t width, Int_t figure)
 Prints the integer figure in a field with width.

void Cout(Int_t width, Double_t figure)
 Prints the double precission figure in a field with width.

void TrackingInfo()
 Information about the tracking process.

void CutInfo()
 Information about cuts.

void SettingInfo()
 Information about settings.



Inline Functions


                    void SetTrackletLength(Int_t f)
                    void SetRowScopeTrack(Int_t f)
                    void SetRowScopeTracklet(Int_t f)
                    void SetPhiScope(Int_t f)
                    void SetEtaScope(Int_t f)
                    void SetMinPoints(Int_t f)
                    void SetMaxAngleTrack(Double_t f)
                    void SetMaxAngleTracklet(Double_t f)
                    void SetMaxCircleDistTrack(Double_t f)
                    void SetMaxLengthDistTrack(Double_t f)
                    void SetTrackletLength(Int_t f, Int_t g)
                    void SetRowScopeTrack(Int_t f, Int_t g)
                    void SetRowScopeTracklet(Int_t f, Int_t g)
                    void SetPhiScope(Int_t f, Int_t g)
                    void SetEtaScope(Int_t f, Int_t g)
                    void SetMinPoints(Int_t f, Int_t g)
                    void SetMaxAngleTrack(Double_t f, Double_t g)
                    void SetMaxAngleTracklet(Double_t f, Double_t g)
                    void SetMaxCircleDistTrack(Double_t f, Double_t g)
                    void SetMaxLengthDistTrack(Double_t f, Double_t g)
                    void SetTrackletLength(Int_t f, Bool_t vertex_constraint)
                    void SetRowScopeTrack(Int_t f, Bool_t vertex_constraint)
                    void SetRowScopeTracklet(Int_t f, Bool_t vertex_constraint)
                    void SetPhiScope(Int_t f, Bool_t vertex_constraint)
                    void SetEtaScope(Int_t f, Bool_t vertex_constraint)
                    void SetMinPoints(Int_t f, Bool_t vertex_constraint)
                    void SetMaxAngleTrack(Double_t f, Bool_t vertex_constraint)
                    void SetMaxAngleTracklet(Double_t f, Bool_t vertex_constraint)
                    void SetMaxCircleDistTrack(Double_t f, Bool_t vertex_constraint)
                    void SetMaxLengthDistTrack(Double_t f, Bool_t vertex_constraint)
                    void SetVertexConstraint(Bool_t f)
                   Int_t GetNumMainVertexTracks()
                   Int_t GetNumMergedTracks()
                   Int_t GetNumMergedTracklets()
                   Int_t GetNumMergedSplits()
                   Int_t GetNumDiffHits()
                   Int_t GetNumLengthFitNaN()
                   Int_t GetNumClustersUnused()
          const Double_t GetPhiDiff(const StFtpcConfMapPoint* hit1, const StFtpcConfMapPoint* hit2) const
          const Double_t GetEtaDiff(const StFtpcConfMapPoint* hit1, const StFtpcConfMapPoint* hit2) const
          const Double_t GetClusterDistance(const StFtpcConfMapPoint* hit1, const StFtpcConfMapPoint* hit2) const
          const Double_t GetDistanceFromFit(const StFtpcConfMapPoint* hit) const
          const Double_t TrackAngle(const StFtpcPoint* lasthitoftrack, const StFtpcPoint* hit) const
          const Double_t TrackletAngle(StFtpcTrack* track, Int_t n = 3) const
          const Double_t CalcDistance(const StFtpcConfMapPoint* hit1, const StFtpcConfMapPoint* hit2) const
          const Double_t CalcDistance(const StFtpcConfMapPoint* hit, Double_t* coeff) const
            const Bool_t VerifyCuts(const StFtpcConfMapPoint* lasttrackhithit, const StFtpcConfMapPoint* newhit) const
                 TClass* Class()
                 TClass* IsA() const
                    void ShowMembers(TMemberInspector& insp, char* parent)
                    void Streamer(TBuffer& b)
        StFtpcConfMapper StFtpcConfMapper(StFtpcConfMapper&)


Author: Markus D. Oldenburg
Last update: 07.06.2000
Copyright © MDO Production 1999


ROOT page - Home page - Class index - Top of the page

This page has been automatically generated. If you have any comments or suggestions about the page layout send a mail to ROOT support, or contact the developers with any questions or problems regarding ROOT.