StFtpcConfMapper
class description - source file - inheritance tree
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
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
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.