ROOT logo
AliRoot » MUON » AliMUONVTrackReconstructor

class AliMUONVTrackReconstructor: public TObject

 \class AliMUONVTrackReconstructor
 Virtual MUON track reconstructor in ALICE (class renamed from AliMUONEventReconstructor)

 This class contains as data a pointer to the array of reconstructed tracks

 It contains as methods, among others:
 * EventReconstruct to build the muon tracks
 * EventReconstructTrigger to build the trigger tracks
 * ValidateTracksWithTrigger to match tracker/trigger tracks

 Several options and adjustable parameters are available for both KALMAN and ORIGINAL
 tracking algorithms. They can be changed through the AliMUONRecoParam object
 set in the reconstruction macro or read from the CDB
 (see methods in AliMUONRecoParam.h file for details)

 Main parameters and options are:
 - *fgkSigmaToCutForTracking* : quality cut used to select new clusters to be
   attached to the track candidate and to select good tracks.
 - *fgkMakeTrackCandidatesFast* : if this flag is set to 'true', the track candidates
   are made assuming linear propagation between stations 4 and 5.
 - *fgkTrackAllTracks* : according to the value of this flag, in case that several
   new clusters pass the quality cut, either we consider all the possibilities
   (duplicating tracks) or we attach only the best cluster.
 - *fgkRecoverTracks* : if this flag is set to 'true', we try to recover the tracks
   lost during the tracking by removing the worst of the 2 clusters attached in the
   previous station.
 - *fgkImproveTracks* : if this flag is set to 'true', we try to improve the quality
   of the tracks at the end of the tracking by removing clusters that do not pass
   new quality cut (the track is removed is it does not contain enough cluster anymore).
 - *fgkComplementTracks* : if this flag is set to 'true', we try to improve the quality
   of the tracks at the end of the tracking by adding potentially missing clusters
   (we may have 2 clusters in the same chamber because of the overlapping of detection
   elements, which is not handle by the tracking algorithm).
 - *fgkSigmaToCutForImprovement* : quality cut used when we try to improve the
   quality of the tracks.

  \author Philippe Pillot

Function Members (Methods)

 
    This is an abstract class, constructors will not be documented.
    Look at the header to check for available constructors.

public:
virtual~AliMUONVTrackReconstructor()
voidTObject::AbstractMethod(const char* method) const
virtual voidTObject::AppendPad(Option_t* option = "")
virtual voidTObject::Browse(TBrowser* b)
static TClass*Class()
virtual const char*TObject::ClassName() const
virtual voidTObject::Clear(Option_t* = "")
virtual TObject*TObject::Clone(const char* newname = "") const
virtual Int_tTObject::Compare(const TObject* obj) const
virtual voidTObject::Copy(TObject& object) const
virtual voidTObject::Delete(Option_t* option = "")MENU
virtual Int_tTObject::DistancetoPrimitive(Int_t px, Int_t py)
virtual voidTObject::Draw(Option_t* option = "")
virtual voidTObject::DrawClass() constMENU
virtual TObject*TObject::DrawClone(Option_t* option = "") constMENU
virtual voidTObject::Dump() constMENU
virtual voidTObject::Error(const char* method, const char* msgfmt) const
voidEventReconstruct(AliMUONVClusterStore& clusterStore, AliMUONVTrackStore& trackStore)
voidEventReconstructTrigger(const AliMUONTriggerCircuit& triggerCircuit, const AliMUONVTriggerStore& triggerStore, AliMUONVTriggerTrackStore& triggerTrackStore)
virtual voidTObject::Execute(const char* method, const char* params, Int_t* error = 0)
virtual voidTObject::Execute(TMethod* method, TObjArray* params, Int_t* error = 0)
virtual voidTObject::ExecuteEvent(Int_t event, Int_t px, Int_t py)
virtual voidTObject::Fatal(const char* method, const char* msgfmt) const
virtual TObject*TObject::FindObject(const char* name) const
virtual TObject*TObject::FindObject(const TObject* obj) const
virtual Option_t*TObject::GetDrawOption() const
static Long_tTObject::GetDtorOnly()
virtual const char*TObject::GetIconName() const
virtual const char*TObject::GetName() const
virtual char*TObject::GetObjectInfo(Int_t px, Int_t py) const
static Bool_tTObject::GetObjectStat()
virtual Option_t*TObject::GetOption() const
const AliMUONRecoParam*GetRecoParam() const
virtual const char*TObject::GetTitle() const
virtual UInt_tTObject::GetUniqueID() const
virtual Bool_tTObject::HandleTimer(TTimer* timer)
virtual ULong_tTObject::Hash() const
virtual voidTObject::Info(const char* method, const char* msgfmt) const
virtual Bool_tTObject::InheritsFrom(const char* classname) const
virtual Bool_tTObject::InheritsFrom(const TClass* cl) const
virtual voidTObject::Inspect() constMENU
voidTObject::InvertBit(UInt_t f)
virtual TClass*IsA() const
virtual Bool_tTObject::IsEqual(const TObject* obj) const
virtual Bool_tTObject::IsFolder() const
Bool_tTObject::IsOnHeap() const
virtual Bool_tTObject::IsSortable() const
Bool_tTObject::IsZombie() const
virtual voidTObject::ls(Option_t* option = "") const
voidTObject::MayNotUse(const char* method) const
virtual Bool_tTObject::Notify()
voidTObject::Obsolete(const char* method, const char* asOfVers, const char* removedFromVers) const
static voidTObject::operator delete(void* ptr)
static voidTObject::operator delete(void* ptr, void* vp)
static voidTObject::operator delete[](void* ptr)
static voidTObject::operator delete[](void* ptr, void* vp)
void*TObject::operator new(size_t sz)
void*TObject::operator new(size_t sz, void* vp)
void*TObject::operator new[](size_t sz)
void*TObject::operator new[](size_t sz, void* vp)
virtual voidTObject::Paint(Option_t* option = "")
virtual voidTObject::Pop()
virtual voidTObject::Print(Option_t* option = "") const
virtual Int_tTObject::Read(const char* name)
virtual voidTObject::RecursiveRemove(TObject* obj)
virtual Bool_tRefitTrack(AliMUONTrack& track, Bool_t enableImprovement = kTRUE)
voidTObject::ResetBit(UInt_t f)
virtual voidTObject::SaveAs(const char* filename = "", Option_t* option = "") constMENU
virtual voidTObject::SavePrimitive(basic_ostream<char,char_traits<char> >& out, Option_t* option = "")
voidTObject::SetBit(UInt_t f)
voidTObject::SetBit(UInt_t f, Bool_t set)
virtual voidTObject::SetDrawOption(Option_t* option = "")MENU
static voidTObject::SetDtorOnly(void* obj)
static voidTObject::SetObjectStat(Bool_t stat)
virtual voidTObject::SetUniqueID(UInt_t uid)
virtual voidShowMembers(TMemberInspector&)
virtual voidStreamer(TBuffer&)
voidStreamerNVirtual(TBuffer& ClassDef_StreamerNVirtual_b)
virtual voidTObject::SysError(const char* method, const char* msgfmt) const
Bool_tTObject::TestBit(UInt_t f) const
Int_tTObject::TestBits(UInt_t f) const
Bool_tTriggerToTrack(const AliMUONTriggerCircuit& circuit, const AliMUONLocalTrigger& locTrg, AliMUONTriggerTrack& triggerTrack, UChar_t globalTriggerPattern = 0)
virtual voidTObject::UseCurrentStyle()
voidValidateTracksWithTrigger(AliMUONVTrackStore& trackStore, const AliMUONVTriggerTrackStore& triggerTrackStore, const AliMUONVTriggerStore& triggerStore, const AliMUONTrackHitPattern& trackHitPattern)
virtual voidTObject::Warning(const char* method, const char* msgfmt) const
virtual Int_tTObject::Write(const char* name = 0, Int_t option = 0, Int_t bufsize = 0)
virtual Int_tTObject::Write(const char* name = 0, Int_t option = 0, Int_t bufsize = 0) const
protected:
voidAskForNewClustersInChamber(const AliMUONTrackParam& trackParam, AliMUONVClusterStore& clusterStore, Int_t chamber)
voidAskForNewClustersInStation(const AliMUONTrackParam& trackParam, AliMUONVClusterStore& clusterStore, Int_t station)
voidChangeMonoCathodClusterRes(AliMUONTrack& track)
virtual Bool_tComplementTracks(const AliMUONVClusterStore& clusterStore)
voidDiscardMonoCathodClusters()
virtual voidTObject::DoError(int level, const char* location, const char* fmt, va_list va) const
voidFinalize()
virtual Bool_tFinalizeTrack(AliMUONTrack& track)
Bool_tFollowLinearTrackInChamber(AliMUONTrack& trackCandidate, const AliMUONVClusterStore& clusterStore, Int_t nextChamber)
Bool_tFollowLinearTrackInStation(AliMUONTrack& trackCandidate, const AliMUONVClusterStore& clusterStore, Int_t nextStation)
virtual Bool_tFollowTracks(AliMUONVClusterStore& clusterStore)
virtual voidImproveTrack(AliMUONTrack& track)
voidImproveTracks()
Bool_tIsAcceptable(AliMUONTrackParam& trackParam)
virtual Bool_tMakeMoreTrackCandidates(AliMUONVClusterStore& clusterStore)
TClonesArray*MakeSegmentsBetweenChambers(const AliMUONVClusterStore& clusterStore, Int_t ch1, Int_t ch2)
virtual Bool_tMakeTrackCandidates(AliMUONVClusterStore& clusterStore)
voidTObject::MakeZombie()
AliMUONVTrackReconstructor&operator=(const AliMUONVTrackReconstructor& rhs)
voidRemoveBadTracks()
voidRemoveConnectedTracks(Int_t stMin, Int_t stMax, Bool_t all)
voidRemoveDoubleTracks()
voidRemoveIdenticalTracks()
voidRemoveUsedSegments(TClonesArray& segments)
voidTagConnectedTracks(Int_t stMin, Int_t stMax, Bool_t all)
Double_tTryOneCluster(const AliMUONTrackParam& trackParam, AliMUONVCluster* cluster, AliMUONTrackParam& trackParamAtCluster, Bool_t updatePropagator = kFALSE)
Bool_tTryOneClusterFast(const AliMUONTrackParam& trackParam, const AliMUONVCluster* cluster)
Double_tTryTwoClustersFast(const AliMUONTrackParam& trackParamAtCluster1, AliMUONVCluster* cluster2, AliMUONTrackParam& trackParamAtCluster2)
private:
voidResetTracks()

Data Members

protected:
AliMUONVClusterServer*fClusterServer/< reference to our cluster server
Double_t*fMaxMCSAngle2/< maximum angle dispersion due to MCS
Int_tfNRecTracks/< number of reconstructed tracks
TClonesArray*fRecTracksPtr/< pointer to array of reconstructed tracks
const AliMUONRecoParam*fkRecoParam/< reference to reco parameters
const AliMUONGeometryTransformer*fkTransformer!< geometry transformer (not owner)

Class Charts

Inheritance Chart:
TObject
AliMUONVTrackReconstructor
AliMUONTrackReconstructor
AliMUONTrackReconstructorK

Function documentation

~AliMUONVTrackReconstructor()
 Destructor for class AliMUONVTrackReconstructor
void ResetTracks()
 To reset the TClonesArray of reconstructed tracks
void EventReconstruct(AliMUONVClusterStore& clusterStore, AliMUONVTrackStore& trackStore)
 To reconstruct one event
Bool_t IsAcceptable(AliMUONTrackParam& trackParam)
 Return kTRUE if the track is within given limits on momentum/angle/origin
TClonesArray* MakeSegmentsBetweenChambers(const AliMUONVClusterStore& clusterStore, Int_t ch1, Int_t ch2)
 To make the list of segments from the list of clusters in the 2 given chambers.
 Return a TClonesArray of new segments (segments made in a previous call of this function are removed).
void RemoveUsedSegments(TClonesArray& segments)
 To remove pairs of clusters already attached to a track
void RemoveIdenticalTracks()
 To remove identical tracks:
 Tracks are considered identical if they have all their clusters in common.
 One keeps the track with the larger number of clusters if need be
void RemoveDoubleTracks()
 To remove double tracks:
 Tracks are considered identical if more than half of the clusters of the track
 which has the smaller number of clusters are in common with the other track.
 Among two identical tracks, one keeps the track with the larger number of clusters
 or, if these numbers are equal, the track with the minimum chi2.
void RemoveBadTracks()
 Remove tracks for which a problem occured somewhere during the tracking
void RemoveConnectedTracks(Int_t stMin, Int_t stMax, Bool_t all)
 Find and remove tracks sharing 1 cluster or more in station(s) [stMin, stMax].
 For each couple of connected tracks, one removes the one with the smallest
 number of clusters or with the highest chi2 value in case of equality.
 If all=kTRUE: both tracks are removed.
void TagConnectedTracks(Int_t stMin, Int_t stMax, Bool_t all)
 Find and tag tracks sharing 1 cluster or more in station(s) [stMin, stMax].
 For each couple of connected tracks, one tags the one with the smallest
 number of clusters or with the highest chi2 value in case of equality.
 If all=kTRUE: both tracks are tagged.
void AskForNewClustersInChamber(const AliMUONTrackParam& trackParam, AliMUONVClusterStore& clusterStore, Int_t chamber)
 Ask the clustering to reconstruct new clusters around the track candidate position
void AskForNewClustersInStation(const AliMUONTrackParam& trackParam, AliMUONVClusterStore& clusterStore, Int_t station)
 Ask the clustering to reconstruct new clusters around the track candidate position
 in the 2 chambers of the given station
Double_t TryOneCluster(const AliMUONTrackParam& trackParam, AliMUONVCluster* cluster, AliMUONTrackParam& trackParamAtCluster, Bool_t updatePropagator = kFALSE)
 Test the compatibility between the track and the cluster (using trackParam's covariance matrix):
 return the corresponding Chi2
 return trackParamAtCluster
Bool_t TryOneClusterFast(const AliMUONTrackParam& trackParam, const AliMUONVCluster* cluster)
 Test the compatibility between the track and the cluster
 given the track and cluster resolutions + the maximum-distance-to-track value
 and assuming linear propagation of the track:
 return kTRUE if they are compatibles
Double_t TryTwoClustersFast(const AliMUONTrackParam& trackParamAtCluster1, AliMUONVCluster* cluster2, AliMUONTrackParam& trackParamAtCluster2)
 Test the compatibility between the track and the 2 clusters together (using trackParam's covariance matrix)
 assuming linear propagation between the two clusters:
 return the corresponding Chi2 accounting for covariances between the 2 clusters
 return trackParamAtCluster2
Bool_t FollowLinearTrackInChamber(AliMUONTrack& trackCandidate, const AliMUONVClusterStore& clusterStore, Int_t nextChamber)
 Follow trackCandidate in chamber(0..) nextChamber assuming linear propagation, and search for compatible cluster(s)
 Keep all possibilities or only the best one(s) according to the flag fgkTrackAllTracks:
 kTRUE:  duplicate "trackCandidate" if there are several possibilities and add the new tracks at the end of
         fRecTracksPtr to avoid conficts with other track candidates at this current stage of the tracking procedure.
         Remove the obsolete "trackCandidate" at the end.
 kFALSE: add only the best cluster(s) to the "trackCandidate". Try to add a couple of clusters in priority.
 return kTRUE if new cluster(s) have been found (otherwise return kFALSE)
Bool_t FollowLinearTrackInStation(AliMUONTrack& trackCandidate, const AliMUONVClusterStore& clusterStore, Int_t nextStation)
 Follow trackCandidate in station(0..) nextStation assuming linear propagation, and search for compatible cluster(s)
 Keep all possibilities or only the best one(s) according to the flag fgkTrackAllTracks:
 kTRUE:  duplicate "trackCandidate" if there are several possibilities and add the new tracks at the end of
         fRecTracksPtr to avoid conficts with other track candidates at this current stage of the tracking procedure.
         Remove the obsolete "trackCandidate" at the end.
 kFALSE: add only the best cluster(s) to the "trackCandidate". Try to add a couple of clusters in priority.
 return kTRUE if new cluster(s) have been found (otherwise return kFALSE)
void ImproveTracks()
 Improve tracks by removing clusters with local chi2 highter than the defined cut
 Recompute track parameters and covariances at the remaining clusters
void Finalize()
 Recompute track parameters and covariances at each attached cluster
 Set the label pointing to the corresponding MC track
 Remove the track if finalization failed
void DiscardMonoCathodClusters()
 Assign a different resolution to the mono-cathod clusters
 in the direction of the missing plane and refit the track
 Remove the track in case of failure
void ChangeMonoCathodClusterRes(AliMUONTrack& track)
 Assign a different resolution to the mono-cathod clusters
 in the direction of the missing plane and refit the track
void ValidateTracksWithTrigger(AliMUONVTrackStore& trackStore, const AliMUONVTriggerTrackStore& triggerTrackStore, const AliMUONVTriggerStore& triggerStore, const AliMUONTrackHitPattern& trackHitPattern)
 Try to match track from tracking system with trigger track
void EventReconstructTrigger(const AliMUONTriggerCircuit& triggerCircuit, const AliMUONVTriggerStore& triggerStore, AliMUONVTriggerTrackStore& triggerTrackStore)
 Fill trigger track store from local trigger
Bool_t TriggerToTrack(const AliMUONTriggerCircuit& circuit, const AliMUONLocalTrigger& locTrg, AliMUONTriggerTrack& triggerTrack, UChar_t globalTriggerPattern = 0)
 To make the trigger tracks from Local Trigger
const AliMUONRecoParam* GetRecoParam() const
 Return reco parameters
{ return fkRecoParam; }
Bool_t RefitTrack(AliMUONTrack& track, Bool_t enableImprovement = kTRUE)
 Re-fit the given track
AliMUONVTrackReconstructor& operator=(const AliMUONVTrackReconstructor& rhs)
Bool_t MakeTrackCandidates(AliMUONVClusterStore& clusterStore)
 Make track candidates from clusters in stations(1..) 4 and 5
Bool_t MakeMoreTrackCandidates(AliMUONVClusterStore& clusterStore)
 Make extra track candidates from clusters in stations(1..) 4 and 5
Bool_t FollowTracks(AliMUONVClusterStore& clusterStore)
 Follow tracks in stations(1..) 3, 2 and 1
Bool_t ComplementTracks(const AliMUONVClusterStore& clusterStore)
 Complement the reconstructed tracks
void ImproveTrack(AliMUONTrack& track)
 Improve the given reconstructed track
Bool_t FinalizeTrack(AliMUONTrack& track)
 Finalize the given track