ROOT logo
AliRoot » MUON » AliMUONTrack

class AliMUONTrack: public TObject

 Class AliMUONTrack

 Reconstructed track in ALICE dimuon spectrometer

Function Members (Methods)

public:
AliMUONTrack()
AliMUONTrack(const AliMUONTrack& track)
AliMUONTrack(AliMUONObjectPair* segment, Double_t bendingVertexDispersion)
virtual~AliMUONTrack()
voidTObject::AbstractMethod(const char* method) const
voidAddTrackParamAtCluster(const AliMUONTrackParam& trackParam, AliMUONVCluster& cluster, Bool_t copy = kFALSE)
virtual voidTObject::AppendPad(Option_t* option = "")
virtual voidTObject::Browse(TBrowser* b)
static TClass*Class()
virtual const char*TObject::ClassName() const
virtual voidClear(Option_t* opt = "")
virtual TObject*TObject::Clone(const char* newname = "") const
Int_tClustersInCommon(AliMUONTrack* track, Int_t stMin = 0, Int_t stMax = 4) const
virtual Int_tTObject::Compare(const TObject* obj) const
Bool_tComputeClusterWeights(TMatrixD* mcsCovariances = 0)
Double_tComputeGlobalChi2(Bool_t accountForMCS)
Bool_tComputeLocalChi2(Bool_t accountForMCS)
voidConnected(Bool_t flag = kTRUE)
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
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
Int_tFindCompatibleClusters(const AliMUONTrack& track, Double_t sigma2Cut, Bool_t* compatibleCluster) const
voidFindMCLabel()
virtual TObject*TObject::FindObject(const char* name) const
virtual TObject*TObject::FindObject(const TObject* obj) const
Bool_tFitWithMCS() const
voidFitWithMCS(Bool_t fitWithMCS)
Bool_tFitWithVertex() const
voidFitWithVertex(Bool_t fitWithVertex)
Double_tGetChi2MatchTrigger() const
virtual Option_t*TObject::GetDrawOption() const
static Long_tTObject::GetDtorOnly()
Double_tGetGlobalChi2() const
UShort_tGetHitsPatternInTrigCh() const
UInt_tGetHitsPatternInTrigChTrk() const
virtual const char*TObject::GetIconName() const
Int_tGetLocalTrigger() const
Int_tGetLoTrgNum() const
Int_tGetMatchTrigger() const
Int_tGetMCLabel() const
virtual const char*TObject::GetName() const
Int_tGetNClusters() const
Int_tGetNDF() const
Double_tGetNormalizedChi2() const
virtual char*TObject::GetObjectInfo(Int_t px, Int_t py) const
static Bool_tTObject::GetObjectStat()
virtual Option_t*TObject::GetOption() const
virtual const char*TObject::GetTitle() const
TObjArray*GetTrackParamAtCluster() const
AliMUONTrackParam*GetTrackParamAtVertex() const
Int_tGetTriggerWithoutChamber() const
virtual UInt_tTObject::GetUniqueID() const
voidGetVertexErrXY2(Double_t& nonBendingErr2, Double_t& bendingErr2) 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
Bool_tIsConnected() const
virtual Bool_tTObject::IsEqual(const TObject* obj) const
virtual Bool_tTObject::IsFolder() const
Bool_tIsImproved() const
Bool_tTObject::IsOnHeap() const
virtual Bool_tTObject::IsSortable() const
Bool_tIsValid(UInt_t requestedStationMask, Bool_t request2ChInSameSt45 = kFALSE)
Bool_tTObject::IsZombie() const
Int_tLoCircuit() const
Int_tLoDev() const
Int_tLoHpt() const
Int_tLoLpt() const
Int_tLoStripX() const
Int_tLoStripY() const
virtual voidTObject::ls(Option_t* option = "") const
Bool_tMatch(AliMUONTrack& track, Double_t sigma2Cut, Int_t& nMatchClusters) const
static Double_tMaxChi2()
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)
AliMUONTrack&operator=(const AliMUONTrack& track)
virtual voidTObject::Paint(Option_t* option = "")
virtual voidTObject::Pop()
virtual voidPrint(Option_t* opt = "") const
virtual Int_tTObject::Read(const char* name)
voidRecursiveDump() const
virtual voidTObject::RecursiveRemove(TObject* obj)
voidRemoveTrackParamAtCluster(AliMUONTrackParam* trackParam)
voidReset()
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)
voidSetChi2MatchTrigger(Double_t chi2MatchTrigger)
virtual voidTObject::SetDrawOption(Option_t* option = "")MENU
static voidTObject::SetDtorOnly(void* obj)
voidSetGlobalChi2(Double_t chi2)
voidSetHitsPatternInTrigCh(UShort_t hitsPatternInTrigCh)
voidSetHitsPatternInTrigChTrk(UInt_t hitsPatternInTrigChTrk)
voidSetImproved(Bool_t improved)
voidSetLocalTrigger(Int_t loCirc, Int_t loStripX, Int_t loStripY, Int_t loDev, Int_t loLpt, Int_t loHpt, UChar_t respWithoutChamber = 0)
voidSetMatchTrigger(Int_t matchTrigger)
voidSetMCLabel(Int_t label)
static voidTObject::SetObjectStat(Bool_t stat)
voidSetTrackParamAtVertex(const AliMUONTrackParam* trackParam)
virtual voidTObject::SetUniqueID(UInt_t uid)
voidSetVertexErrXY2(Double_t nonBendingErr2, Double_t bendingErr2)
virtual voidShowMembers(TMemberInspector&)
virtual voidStreamer(TBuffer&)
voidStreamerNVirtual(TBuffer& ClassDef_StreamerNVirtual_b)
virtual voidTObject::SysError(const char* method, const char* msgfmt) const
voidTagRemovableClusters(UInt_t requestedStationMask)
Bool_tTObject::TestBit(UInt_t f) const
Int_tTObject::TestBits(UInt_t f) const
Bool_tTriggerFiredWithoutChamber(Int_t ich) const
Bool_tUpdateCovTrackParamAtCluster()
Bool_tUpdateTrackParamAtCluster()
virtual voidTObject::UseCurrentStyle()
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:
virtual voidTObject::DoError(int level, const char* location, const char* fmt, va_list va) const
voidTObject::MakeZombie()
private:
Bool_tComputeClusterWeights(TMatrixD& clusterWeightsNB, TMatrixD& clusterWeightsB, TMatrixD* mcsCovariances = 0, const AliMUONVCluster* discardedCluster = 0) const
voidComputeMCSCovariances(TMatrixD& mcsCovariances) const

Data Members

private:
Double_tfChi2MatchTrigger/< chi2 of trigger/track matching
TMatrixD*fClusterWeightsBending!< weights matrix, in bending direction, of clusters attached to the track
TMatrixD*fClusterWeightsNonBending!< weights matrix, in non bending direction, of clusters attached to the track
Bool_tfConnected/< kTRUE if that track shares cluster(s) with another
Bool_tfFitWithMCS!< kTRUE if accounting for multiple scattering in the fit, kFALSE if not
Bool_tfFitWithVertex!< kTRUE if using the vertex to constrain the fit, kFALSE if not
Double_tfGlobalChi2/< Global chi2 of the track
UShort_tfHitsPatternInTrigCh/< Word containing info on the hits left in trigger chambers
UInt_tfHitsPatternInTrigChTrk/< Word containing info on the hits left in trigger chambers (calculated from extrapolated tracker track)
Bool_tfImproved!< kTRUE if the track has been improved
Int_tfLocalTrigger/< packed local trigger information
Int_tfMatchTrigger/< 0 track does not match trigger
Int_tfTrackID/< Point to the corresponding MC track
TObjArray*fTrackParamAtCluster/< Track parameters at cluster
AliMUONTrackParam*fTrackParamAtVertex!< Track parameters at vertex
Double_tfVertexErrXY2[2]!< Vertex resolution square used during the tracking procedure if required
static const Double_tfgkMaxChi2/< maximum chi2 above which the track can be considered as abnormal

Class Charts

Inheritance Chart:
TObject
AliMUONTrack
AliMuonForwardTrack

Function documentation

AliMUONTrack()
 Default constructor
AliMUONTrack(AliMUONObjectPair* segment, Double_t bendingVertexDispersion)
 Constructor from two clusters
AliMUONTrack(const AliMUONTrack& track)
copy constructor
AliMUONTrack & operator=(const AliMUONTrack& track)
 Asignment operator
 check assignement to self
~AliMUONTrack()
 Destructor
void Clear(Option_t* opt = "")
 Clear arrays
void Reset()
 Reset to default values
TObjArray* GetTrackParamAtCluster() const
 return array of track parameters at cluster (create it if needed)
void AddTrackParamAtCluster(const AliMUONTrackParam& trackParam, AliMUONVCluster& cluster, Bool_t copy = kFALSE)
 Copy given track parameters into a new TrackParamAtCluster
 Link parameters with the associated cluster
 If copy=kTRUE: the cluster is copied then passed the trackParam which become its owner
     otherwise: make sure to do not delete the cluster until it is used by the track
void RemoveTrackParamAtCluster(AliMUONTrackParam* trackParam)
 Remove trackParam from the array of TrackParamAtCluster and delete it since the array is owner
Bool_t UpdateTrackParamAtCluster()
 Update track parameters at each attached cluster
 Return kFALSE in case of failure (i.e. extrapolation problem)
Bool_t UpdateCovTrackParamAtCluster()
 Update track parameters and their covariances at each attached cluster
 Include effects of multiple scattering in chambers
 Return kFALSE in case of failure (i.e. extrapolation problem)
Bool_t IsValid(UInt_t requestedStationMask, Bool_t request2ChInSameSt45 = kFALSE)
 check the validity of the current track:
 at least one cluster per requested station
 and at least 2 chambers in stations 4 & 5 that contain cluster(s)
 + if request2ChInSameSt45 = kTRUE: 2 chambers hit in the same station (4 or 5)
void TagRemovableClusters(UInt_t requestedStationMask)
 Identify clusters that can be removed from the track,
 with the only requirements to have at least 1 cluster per requested station
 and at least 2 chambers over 4 in stations 4 & 5 that contain cluster(s)
Bool_t ComputeLocalChi2(Bool_t accountForMCS)
 Compute each cluster contribution to the chi2 of the track
 accounting for multiple scattering or not according to the flag
 - Also recompute the weight matrices of the attached clusters if accountForMCS=kTRUE
 - Assume that track parameters at each cluster are corrects
 - Return kFALSE if computation failed
Double_t ComputeGlobalChi2(Bool_t accountForMCS)
 Compute the chi2 of the track accounting for multiple scattering or not according to the flag
 - Assume that track parameters at each cluster are corrects
 - Assume the cluster weights matrices are corrects
 - Return a value of chi2 higher than the maximum allowed if computation failed
Bool_t ComputeClusterWeights(TMatrixD* mcsCovariances = 0)
 Compute the weight matrices of the attached clusters, in non bending and bending direction,
 accounting for multiple scattering correlations and cluster resolution
 - Use the provided MCS covariance matrix if any (otherwise build it temporarily)
 - Assume that track parameters at each cluster are corrects
 - Return kFALSE if computation failed
Bool_t ComputeClusterWeights(TMatrixD& clusterWeightsNB, TMatrixD& clusterWeightsB, TMatrixD* mcsCovariances = 0, const AliMUONVCluster* discardedCluster = 0) const
 Compute the weight matrices, in non bending and bending direction,
 of the other attached clusters assuming the discarded one does not exist
 accounting for multiple scattering correlations and cluster resolution
 - Use the provided MCS covariance matrix if any (otherwise build it temporarily)
 - Return kFALSE if computation failed
void ComputeMCSCovariances(TMatrixD& mcsCovariances) const
 Compute the multiple scattering covariance matrix
 (assume that track parameters at each cluster are corrects)
Int_t ClustersInCommon(AliMUONTrack* track, Int_t stMin = 0, Int_t stMax = 4) const
 Returns the number of clusters in common in stations [stMin, stMax]
 between the current track ("this") and the track pointed to by "track".
Int_t GetNDF() const
 return the number of degrees of freedom
Double_t GetNormalizedChi2() const
 return the chi2 value divided by the number of degrees of freedom (or FLT_MAX if ndf <= 0)
Int_t FindCompatibleClusters(const AliMUONTrack& track, Double_t sigma2Cut, Bool_t* compatibleCluster) const
 Try to match clusters from this track with clusters from the given track within the provided sigma cut:
 - Fill the array compatibleCluster[iCh] with kTRUE if a compatible cluster has been found in chamber iCh.
 - Return the number of clusters of "this" track matched with one cluster of the given track.
Bool_t Match(AliMUONTrack& track, Double_t sigma2Cut, Int_t& nMatchClusters) const
 Try to match this track with the given track. Matching conditions:
 - more than 50% of clusters from this track matched with clusters from the given track
 - at least 1 cluster matched before and 1 cluster matched after the dipole
void SetTrackParamAtVertex(const AliMUONTrackParam* trackParam)
 set track parameters at vertex
void RecursiveDump() const
 Recursive dump of AliMUONTrack, i.e. with dump of trackParamAtCluster and attached clusters
void Print(Option_t* opt = "") const
 Printing Track information
void SetLocalTrigger(Int_t loCirc, Int_t loStripX, Int_t loStripY, Int_t loDev, Int_t loLpt, Int_t loHpt, UChar_t respWithoutChamber = 0)
 pack the local trigger information and store
void FindMCLabel()
 Determine the MC label from the label of the attached clusters and fill fMCLabel data member:
 More than 50% of clusters, including 1 before and 1 after the dipole, must share the same label
Int_t GetNClusters() const
 return the number of clusters attached to the track
{return fTrackParamAtCluster ? fTrackParamAtCluster->GetEntriesFast() : 0;}
Bool_t FitWithVertex() const
 return kTrue if the vertex must be used to constrain the fit, kFalse if not
{return fFitWithVertex;}
void FitWithVertex(Bool_t fitWithVertex)
 set the flag telling whether the vertex must be used to constrain the fit or not
{ fFitWithVertex = fitWithVertex; }
void GetVertexErrXY2(Double_t& nonBendingErr2, Double_t& bendingErr2) const
 return the vertex resolution square used during the tracking procedure
{ nonBendingErr2 = fVertexErrXY2[0]; bendingErr2 = fVertexErrXY2[1]; }
void SetVertexErrXY2(Double_t nonBendingErr2, Double_t bendingErr2)
 set the vertex resolution square used during the tracking procedure
{ fVertexErrXY2[0] = nonBendingErr2; fVertexErrXY2[1] = bendingErr2; }
Bool_t FitWithMCS() const
 return kTrue if the multiple scattering must be accounted for in the fit, kFalse if not
{return fFitWithMCS;}
void FitWithMCS(Bool_t fitWithMCS)
 set the flag telling whether the multiple scattering must be accounted for in the fit or not
{fFitWithMCS = fitWithMCS;}
Double_t GetGlobalChi2() const
 return the minimum value of the function minimized by the fit
{return fGlobalChi2;}
void SetGlobalChi2(Double_t chi2)
 set the minimum value of the function minimized by the fit
{ fGlobalChi2 = chi2;}
Bool_t IsImproved() const
 return kTRUE if the track has been improved
{return fImproved;}
void SetImproved(Bool_t improved)
 set the flag telling whether the track has been improved or not
{ fImproved = improved;}
Int_t GetMatchTrigger(void)
 return 1,2,3 if track matches with trigger track, 0 if not
{return fMatchTrigger;}
Int_t GetLoTrgNum(void)
 returns the local trigger number corresponding to the trigger track (obsolete)
{return LoCircuit();}
void SetMatchTrigger(Int_t matchTrigger)
 set the flag telling whether track matches with trigger track or not
{fMatchTrigger = matchTrigger;}
Double_t GetChi2MatchTrigger(void)
 return the chi2 of trigger/track matching
void SetChi2MatchTrigger(Double_t chi2MatchTrigger)
 set the chi2 of trigger/track matching
{fChi2MatchTrigger = chi2MatchTrigger;}
AliMUONTrackParam* GetTrackParamAtVertex() const
 return pointer to track parameters at vertex (can be 0x0)
UShort_t GetHitsPatternInTrigCh() const
 set word telling which trigger chambers where hit by track
void SetHitsPatternInTrigCh(UShort_t hitsPatternInTrigCh)
 set word telling which trigger chambers where hit by track
{fHitsPatternInTrigCh = hitsPatternInTrigCh;}
UInt_t GetHitsPatternInTrigChTrk() const
 set word telling which trigger chambers where hit by track (from tracker track extrapolation)
void SetHitsPatternInTrigChTrk(UInt_t hitsPatternInTrigChTrk)
 set word telling which trigger chambers where hit by track (from tracker track extrapolation)
{fHitsPatternInTrigChTrk = hitsPatternInTrigChTrk;}
Int_t GetLocalTrigger(void)
 return local trigger information for the matched trigger track
{ return fLocalTrigger; }
Int_t LoCircuit(void)
 number of triggering circuit
{ return fLocalTrigger & 0xFF; }
Int_t LoStripX(void)
 x-strip local trigger
{ return fLocalTrigger >> 8 & 0x1F; }
Int_t LoStripY(void)
 y-strip local trigger
{ return fLocalTrigger >> 13 & 0x0F; }
Int_t LoDev(void)
 deviation local trigger
{ return fLocalTrigger >> 17 & 0x1F; }
Int_t LoLpt(void)
 low pt decision local trigger
{ return fLocalTrigger >> 22 & 0x03; }
Int_t LoHpt(void)
 high pt decision local trigger
{ return fLocalTrigger >> 24 & 0x03; }
Int_t GetTriggerWithoutChamber(void)
 Word stating if trigger would be fired without one chamber
{ return fLocalTrigger >> 26 & 0xF; }
Bool_t TriggerFiredWithoutChamber(Int_t ich) const
 Check if trigger would be fired without chamber (ich [0,3])
{ return GetTriggerWithoutChamber() >> (3 - ich) & 0x1; }
void SetMCLabel(Int_t label)
 set the corresponding MC track number
{fTrackID = label;}
Int_t GetMCLabel() const
 return the corresponding MC track number
{return fTrackID;}
Double_t MaxChi2()
 return the maximum chi2 above which the track can be considered as abnormal (due to extrapolation failure, ...)
{return fgkMaxChi2;}
void Connected(Bool_t flag = kTRUE)
 set the flag which is kTRUE if that track shares cluster(s) with another
{fConnected = flag;}
Bool_t IsConnected() const
 return the flag which is kTRUE if that track shares cluster(s) with another
{return fConnected;}