- trackParamAtCluster2 = (AliMUONTrackParam*) track->fTrackParamAtCluster->After(trackParamAtCluster2);
- } // trackParamAtCluster2
- trackParamAtCluster1 = (AliMUONTrackParam*) this->fTrackParamAtCluster->After(trackParamAtCluster1);
- } // trackParamAtCluster1
+ }
+ }
+ return clustersInCommon;
+}
+
+ //__________________________________________________________________________
+Int_t AliMUONTrack::ClustersInCommonInSt345(AliMUONTrack* track) const
+{
+ /// Returns the number of clusters in common on stations 3, 4 and 5
+ /// between the current track ("this") and the track pointed to by "track".
+ if (!fTrackParamAtCluster || !this->fTrackParamAtCluster) return 0;
+ Int_t nCluster1 = this->GetNClusters();
+ Int_t nCluster2 = track->GetNClusters();
+ Int_t clustersInCommon = 0;
+ AliMUONTrackParam *trackParamAtCluster1, *trackParamAtCluster2;
+ // Loop over clusters of first track
+ for(Int_t iCluster1 = 0; iCluster1 < nCluster1; iCluster1++) {
+ trackParamAtCluster1 = (AliMUONTrackParam*) this->fTrackParamAtCluster->UncheckedAt(iCluster1);
+ if (trackParamAtCluster1->GetClusterPtr()->GetChamberId() < 4) continue;
+ // Loop over clusters of second track
+ for(Int_t iCluster2 = 0; iCluster2 < nCluster2; iCluster2++) {
+ trackParamAtCluster2 = (AliMUONTrackParam*) track->fTrackParamAtCluster->UncheckedAt(iCluster2);
+ if (trackParamAtCluster2->GetClusterPtr()->GetChamberId() < 4) continue;
+ // Increment "clustersInCommon" if both trackParamAtCluster1 & 2 point to the same cluster
+ if ((trackParamAtCluster1->GetClusterPtr()) == (trackParamAtCluster2->GetClusterPtr())) {
+ clustersInCommon++;
+ break;
+ }
+ }
+ }