#include "AliMUONTrackHitPattern.h"
#include "AliMUONConstants.h"
#include "AliMUONVDigit.h"
#include "AliMUONVDigitStore.h"
#include "AliMUONGeometryTransformer.h"
#include "AliMUONLocalTrigger.h"
#include "AliMUONRecoParam.h"
#include "AliMUONTrack.h"
#include "AliMUONTrackExtrap.h"
#include "AliMUONTrackParam.h"
#include "AliMUONVTrackStore.h"
#include "AliMUONVTriggerStore.h"
#include "AliMUONTriggerTrack.h"
#include "AliMUONVTriggerTrackStore.h"
#include "AliMUONTriggerUtilities.h"
#include "AliMpPad.h"
#include "AliMpSegmentation.h"
#include "AliMpVSegmentation.h"
#include "AliMpDEManager.h"
#include "AliMpArea.h"
#include "AliMpConstants.h"
#include "AliLog.h"
#include "AliESDMuonTrack.h"
#include "AliCodeTimer.h"
#include <Riostream.h>
#include <TArrayI.h>
#include <TMath.h>
#include <TMatrixD.h>
#include <TVector3.h>
#include <TArrayF.h>
#include <TRandom.h>
ClassImp(AliMUONTrackHitPattern)
AliMUONTrackHitPattern::AliMUONTrackHitPattern(const AliMUONRecoParam* recoParam,
const AliMUONGeometryTransformer& transformer,
const AliMUONVDigitStore& digitStore,
const AliMUONTriggerUtilities* triggerUtilities)
: TObject(),
fkRecoParam(recoParam),
fkTransformer(transformer),
fkDigitStore(digitStore),
fkTriggerUtilities(triggerUtilities),
fkMaxDistance(99999.)
{
AliMUONTrackExtrap::SetField();
}
AliMUONTrackHitPattern::~AliMUONTrackHitPattern(void)
{
}
void
AliMUONTrackHitPattern::ApplyMCSCorrections(AliMUONTrackParam& trackParam) const
{
const Float_t kZFilterOut = AliMUONConstants::MuonFilterZEnd();
const Float_t kFilterThickness = kZFilterOut-AliMUONConstants::MuonFilterZBeg();
AliMUONTrackExtrap::ExtrapToZCov(&trackParam, kZFilterOut);
AliMUONTrackExtrap::AddMCSEffect(&trackParam, kFilterThickness, AliMUONConstants::MuonFilterX0());
return;
}
void AliMUONTrackHitPattern::ExecuteValidation(const AliMUONVTrackStore& trackStore,
const AliMUONVTriggerTrackStore& triggerTrackStore,
const AliMUONVTriggerStore& triggerStore) const
{
AliMUONTriggerTrack* triggerTrack;
TIter itTriggerTrack(triggerTrackStore.CreateIterator());
while ( ( triggerTrack = static_cast<AliMUONTriggerTrack*>(itTriggerTrack() ) ) ){
AliMUONTrackParam trackParam;
trackParam.SetNonBendingCoor(triggerTrack->GetX11());
trackParam.SetBendingCoor(triggerTrack->GetY11());
trackParam.SetZ(triggerTrack->GetZ11());
trackParam.SetNonBendingSlope(triggerTrack->GetSlopeX());
trackParam.SetBendingSlope(triggerTrack->GetSlopeY());
trackParam.SetInverseBendingMomentum(1.);
UInt_t pattern = GetHitPattern(trackParam, kTRUE);
triggerTrack->SetHitsPatternInTrigCh((UShort_t)(pattern & 0x7FFF));
AliDebug(1, Form("Hit pattern (MTR): hits 0x%x slat %2i board %3i effFlag %i",
pattern & 0xFF, AliESDMuonTrack::GetSlatOrInfo(pattern),triggerTrack->GetLoTrgNum(), AliESDMuonTrack::GetEffFlag(pattern)));
}
TIter itTrack(trackStore.CreateIterator());
AliMUONTrack* track;
const Int_t kFirstTrigCh = AliMUONConstants::NTrackingCh();
while ( ( track = static_cast<AliMUONTrack*>(itTrack()) ) )
{
AliMUONTrackParam trackParam(*((AliMUONTrackParam*) (track->GetTrackParamAtCluster()->Last())));
ApplyMCSCorrections(trackParam);
AliMUONTrackExtrap::ExtrapToZCov(&trackParam, AliMUONConstants::DefaultChamberZ(kFirstTrigCh));
AliMUONTriggerTrack *matchedTriggerTrack = MatchTriggerTrack(track, trackParam, triggerTrackStore, triggerStore);
if ( matchedTriggerTrack ) track->SetHitsPatternInTrigCh(matchedTriggerTrack->GetHitsPatternInTrigCh());
UInt_t pattern = GetHitPattern(trackParam, kFALSE);
track->SetHitsPatternInTrigChTrk(pattern);
AliDebug(1, Form("Hit pattern (MTK): hits 0x%x slat %2i board %3i effFlag %i",
pattern & 0xFF, AliESDMuonTrack::GetSlatOrInfo(pattern), AliESDMuonTrack::GetCrossedBoard(pattern), AliESDMuonTrack::GetEffFlag(pattern)));
}
}
Bool_t AliMUONTrackHitPattern::FindMatchingPads(const AliMUONTrackParam* trackParam,
TArrayI& matchedDetElemId, TObjArray& pads,
const AliMUONVDigitStore& digitStore,
Bool_t isTriggerTrack) const
{
enum {kBending, kNonBending};
Double_t minMatchDist[2];
Int_t padsInCheckArea[2];
AliMUONTrackParam trackParamAtPadZ(*trackParam);
Int_t inputDetElemId = matchedDetElemId[0];
for(Int_t cath=0; cath<2; cath++){
minMatchDist[cath] = 99999.;
padsInCheckArea[cath] = 0;
}
Int_t iChamber = AliMpDEManager::GetChamberId(inputDetElemId);
Int_t iSlat = inputDetElemId%100;
TIter next(digitStore.CreateTriggerIterator());
AliMUONVDigit* mDigit;
Double_t xPad = 0., yPad = 0., zPad = 0.;
Double_t sigmaX = 0., sigmaY = 0.;
Double_t nSigmas = ( isTriggerTrack ) ? GetRecoParam()->GetStripCutForTrigger() : GetRecoParam()->GetSigmaCutForTrigger();
Bool_t goodForEff = kTRUE;
while ( ( mDigit = static_cast<AliMUONVDigit*>(next()) ) )
{
Int_t currDetElemId = mDigit->DetElemId();
Int_t currCh = AliMpDEManager::GetChamberId(currDetElemId);
if ( currCh != iChamber ) continue;
Int_t currSlat = currDetElemId%100;
Int_t slatDiff = TMath::Abs(currSlat-iSlat);
if ( slatDiff>1 && slatDiff<17 ) continue;
Int_t cathode = mDigit->Cathode();
Int_t ix = mDigit->PadX();
Int_t iy = mDigit->PadY();
const AliMpVSegmentation* seg = AliMpSegmentation::Instance()
->GetMpSegmentation(currDetElemId,AliMp::GetCathodType(cathode));
AliMpPad pad = seg->PadByIndices(ix,iy,kTRUE);
Double_t xPadLocal = pad.GetPositionX();
Double_t yPadLocal = pad.GetPositionY();
Double_t dpx = pad.GetDimensionX();
Double_t dpy = pad.GetDimensionY();
Double_t xWidth = 2. * dpx;
Double_t yWidth = 2. * dpy;
fkTransformer.Local2Global(currDetElemId, xPadLocal, yPadLocal, 0., xPad, yPad, zPad);
if ( trackParamAtPadZ.CovariancesExist() ) AliMUONTrackExtrap::LinearExtrapToZCov(&trackParamAtPadZ, zPad);
else AliMUONTrackExtrap::LinearExtrapToZ(&trackParamAtPadZ, zPad);
Double_t deltaX = TMath::Abs(xPad-trackParamAtPadZ.GetNonBendingCoor()) - dpx;
Double_t deltaY = TMath::Abs(yPad-trackParamAtPadZ.GetBendingCoor()) - dpy;
if ( isTriggerTrack ) {
Double_t checkWidth = TMath::Min(xWidth, yWidth);
Double_t maxCheckArea = GetRecoParam()->GetMaxStripAreaForTrigger() * checkWidth;
Double_t sigma = TMath::Max(checkWidth, 2.);
sigmaX = sigma;
sigmaY = sigma;
if ( deltaX <= maxCheckArea && deltaY <= maxCheckArea ) {
padsInCheckArea[cathode]++;
if ( padsInCheckArea[cathode] > 2 ) {
goodForEff = kFALSE;
AliDebug(2, Form("padsInCheckArea[%i] = %i\n",cathode,padsInCheckArea[cathode]));
}
}
}
else {
const TMatrixD& kCovParam = trackParamAtPadZ.GetCovariances();
sigmaX = TMath::Sqrt(kCovParam(0,0));
sigmaY = TMath::Sqrt(kCovParam(2,2));
}
AliDebug(2, Form("\nDetElemId %i Cath %i Dim = (%.2f,%.2f) Pad (%i,%i) = (%.2f,%.2f) Track = (%.2f,%.2f) Delta (%.2f,%.2f) Sigma (%.2f,%.2f) p %g\n",
currDetElemId,cathode,dpx,dpy,ix,iy,xPad,yPad,trackParamAtPadZ.GetNonBendingCoor(),trackParamAtPadZ.GetBendingCoor(),deltaX,deltaY,sigmaX,sigmaY,trackParamAtPadZ.P()));
if ( deltaX > nSigmas * sigmaX || deltaY > nSigmas * sigmaY ) continue;
Double_t matchDist = TMath::Max(deltaX, deltaY);
if ( matchDist > minMatchDist[cathode] ) continue;
if ( pads.At(cathode) ) delete pads.RemoveAt(cathode);
pads.AddAt((AliMpPad*)pad.Clone(),cathode);
minMatchDist[cathode] = matchDist;
matchedDetElemId[cathode] = currDetElemId;
}
return goodForEff;
}
UInt_t AliMUONTrackHitPattern::GetHitPattern(const AliMUONTrackParam& trackParam, Bool_t isTriggerTrack) const
{
AliCodeTimerAuto("",0);
TArrayI digitPerTrack(2);
digitPerTrack.Reset();
UInt_t pattern = 0;
TObjArray trackParamList, matchedPads(2), maskedPads(2), padsFromPos(4), validPads(2);
trackParamList.SetOwner(); matchedPads.SetOwner(); maskedPads.SetOwner(); padsFromPos.SetOwner();
Int_t firstSlat = -1, firstBoard = -1;
AliESDMuonTrack::EAliTriggerChPatternFlag goodForEff = AliESDMuonTrack::kBoardEff;
TArrayI matchedDetElemId(2), maskedDetElemId(2), detElemIdFromTrack(2), validDetElemId(2);
for(Int_t ich=0; ich<AliMUONConstants::NTriggerCh(); ich++) {
trackParamList.Delete(); matchedPads.Delete(); maskedPads.Delete(); padsFromPos.Delete(); validPads.Clear();
Int_t nFound = GetTrackParamAtChamber(trackParam, 11+ich, trackParamList, detElemIdFromTrack, padsFromPos);
if ( nFound == 0 ) {
AliESDMuonTrack::AddEffInfo(pattern, AliESDMuonTrack::kTrackOutsideGeometry);
goodForEff = AliESDMuonTrack::kNoEff;
AliDebug(2, "Warning: trigger track outside trigger chamber\n");
continue;
}
maskedDetElemId.Reset(detElemIdFromTrack[0]);
FindMatchingPads((AliMUONTrackParam*)trackParamList.At(0), maskedDetElemId, maskedPads, *(fkTriggerUtilities->GetMaskedDigits()), isTriggerTrack);
if ( maskedPads.GetEntries() > 0 ) {
AliESDMuonTrack::AddEffInfo(pattern,AliESDMuonTrack::kTrackMatchesMasks);
goodForEff = AliESDMuonTrack::kNoEff;
for ( Int_t icath=0; icath<2; icath++ ) {
AliMpPad* currPad = (AliMpPad*)maskedPads.UncheckedAt(icath);
if ( ! currPad ) continue;
AliDebug(2,Form("DetElemId %i cath %i board %i strip %i is masked: effFlag 0", matchedDetElemId[icath], icath, currPad->GetLocalBoardId(0), currPad->GetLocalBoardChannel(0)));
}
}
matchedDetElemId.Reset(detElemIdFromTrack[0]);
if ( ! FindMatchingPads((AliMUONTrackParam*)trackParamList.At(0), matchedDetElemId, matchedPads, fkDigitStore, isTriggerTrack) ) {
AliESDMuonTrack::AddEffInfo(pattern, AliESDMuonTrack::kTrackMatchesManyPads);
goodForEff = AliESDMuonTrack::kNoEff;
AliDebug(2, Form("Warning: track in %i matches many pads. Rejected!\n", matchedDetElemId[0]));
}
Int_t nMatched = 0;
Int_t mostProbDEmatched = detElemIdFromTrack[0];
for ( Int_t icath=0; icath<2; icath++ ) {
if ( matchedPads.UncheckedAt(icath) ) {
nMatched++;
AliESDMuonTrack::SetFiredChamber(pattern, icath, ich);
digitPerTrack[icath]++;
mostProbDEmatched = matchedDetElemId[icath];
}
}
Int_t mostProbDEindex = 0;
for ( Int_t ifound=0; ifound<nFound; ifound++ ) {
if ( detElemIdFromTrack[ifound] == mostProbDEmatched ) {
mostProbDEindex = ifound;
break;
}
}
if ( goodForEff == AliESDMuonTrack::kNoEff ) continue;
for ( Int_t icath=0; icath<2; icath++ ) {
if ( matchedPads.UncheckedAt(icath) ) {
validPads.AddAt(matchedPads.UncheckedAt(icath),icath);
validDetElemId[icath] = matchedDetElemId[icath];
}
else {
validPads.AddAt(padsFromPos.UncheckedAt(2*mostProbDEindex + icath),icath);
validDetElemId[icath] = detElemIdFromTrack[mostProbDEindex];
}
}
Int_t currSlat = mostProbDEmatched%100;
if ( firstSlat < 0 ) firstSlat = currSlat;
if ( currSlat != firstSlat || validDetElemId[0] != validDetElemId[1] ) {
goodForEff = AliESDMuonTrack::kChEff;
firstSlat = AliESDMuonTrack::kCrossDifferentSlats;
}
if ( firstBoard < 0 ) firstBoard = ((AliMpPad*)validPads.UncheckedAt(0))->GetLocalBoardId(0);
for ( Int_t icath=0; icath<2; icath++ ){
if ( goodForEff == AliESDMuonTrack::kBoardEff) {
Bool_t atLeastOneLoc = kFALSE;
AliMpPad* currPad = (AliMpPad*)validPads.UncheckedAt(icath);
for ( Int_t iloc=0; iloc<currPad->GetNofLocations(); iloc++) {
if ( currPad->GetLocalBoardId(iloc) == firstBoard ) {
atLeastOneLoc = kTRUE;
break;
}
}
if ( ! atLeastOneLoc ) goodForEff = AliESDMuonTrack::kSlatEff;
}
}
}
if ( goodForEff == AliESDMuonTrack::kNoEff ) return pattern;
for(Int_t cath=0; cath<2; cath++){
if(digitPerTrack[cath]<3) {
AliESDMuonTrack::AddEffInfo(pattern, AliESDMuonTrack::kTrackMatchesFewPads);
goodForEff = AliESDMuonTrack::kNoEff;
AliDebug(2, Form("Warning: found %i digits for trigger track cathode %i.\nRejecting event\n", digitPerTrack[cath],cath));
}
}
if ( goodForEff == AliESDMuonTrack::kNoEff ) return pattern;
AliESDMuonTrack::AddEffInfo(pattern, firstSlat, firstBoard, goodForEff);
return pattern;
}
Int_t AliMUONTrackHitPattern::GetTrackParamAtChamber(const AliMUONTrackParam& inputTrackParam, Int_t chamber,
TObjArray& trackParamList, TArrayI& foundDetElemId,
TObjArray& padsFromPos) const
{
Int_t nFound = 0;
foundDetElemId[0] = foundDetElemId[1] = 0;
AliMUONTrackParam trackParamCopy(inputTrackParam);
TVector3 globalPoint1(trackParamCopy.GetNonBendingCoor(), trackParamCopy.GetBendingCoor(), trackParamCopy.GetZ());
AliMUONTrackExtrap::LinearExtrapToZ(&trackParamCopy, trackParamCopy.GetZ() + 20.);
TVector3 globalPoint2(trackParamCopy.GetNonBendingCoor(), trackParamCopy.GetBendingCoor(), trackParamCopy.GetZ());
TVector3 localCoor;
AliMpDEIterator it;
Double_t xGlobal, yGlobal, zGlobal;
for ( it.First(chamber-1); ! it.IsDone(); it.Next() ){
Int_t detElemId = it.CurrentDEId();
PosInDetElemIdLocal(localCoor, globalPoint1, globalPoint2, detElemId);
fkTransformer.Local2Global(detElemId, localCoor.X(), localCoor.Y(), localCoor.Z(), xGlobal, yGlobal, zGlobal);
AliMpArea pointArea(xGlobal, yGlobal, 2.*AliMpConstants::LengthTolerance(), 2.*AliMpConstants::LengthTolerance());
AliMpArea* deArea = fkTransformer.GetDEArea(detElemId);
if ( deArea->Contains(pointArea) ) {
Int_t validPads = 0;
for ( Int_t icath=0; icath<2; icath++ ) {
const AliMpVSegmentation* seg =
AliMpSegmentation::Instance()
->GetMpSegmentation(detElemId,AliMp::GetCathodType(icath));
AliMpPad pad = seg->PadByPosition(localCoor.X(),localCoor.Y(),kFALSE);
if ( pad.IsValid() ) {
padsFromPos.AddAt(pad.Clone(), 2*nFound + icath);
validPads++;
}
}
if ( validPads < 2 ) continue;
AliMUONTrackParam* extrapTrackParam = new AliMUONTrackParam(inputTrackParam);
if ( extrapTrackParam->CovariancesExist() ) AliMUONTrackExtrap::LinearExtrapToZCov(extrapTrackParam, zGlobal);
else AliMUONTrackExtrap::LinearExtrapToZ(extrapTrackParam, zGlobal);
trackParamList.AddAt(extrapTrackParam,nFound);
foundDetElemId[nFound] = detElemId;
nFound++;
if ( nFound == 2 ) break;
}
else if ( nFound > 0 ) break;
}
return nFound;
}
AliMUONTriggerTrack *
AliMUONTrackHitPattern::MatchTriggerTrack(AliMUONTrack* track,
AliMUONTrackParam& trackParam,
const AliMUONVTriggerTrackStore& triggerTrackStore,
const AliMUONVTriggerStore& triggerStore) const
{
Int_t matchTrigger = 0;
Int_t loTrgNum(-1);
TMatrixD paramDiff(3,1);
Double_t chi2;
Double_t chi2MatchTrigger = 0., minChi2MatchTrigger = 999.;
Int_t doubleMatch = -1;
Double_t doubleChi2 = -1.;
AliMUONTriggerTrack* doubleTriggerTrack = 0x0;
AliMUONTriggerTrack* matchedTriggerTrack = 0x0;
TMatrixD trackCov(3,3);
AliMUONTriggerTrack *triggerTrack;
TIter itTriggerTrack(triggerTrackStore.CreateIterator());
while ( ( triggerTrack = static_cast<AliMUONTriggerTrack*>(itTriggerTrack() ) ) )
{
AliMUONTrackExtrap::LinearExtrapToZCov(&trackParam, triggerTrack->GetZ11());
const TMatrixD& kParamCov = trackParam.GetCovariances();
Double_t xTrack = trackParam.GetNonBendingCoor();
Double_t yTrack = trackParam.GetBendingCoor();
Double_t ySlopeTrack = trackParam.GetBendingSlope();
paramDiff(0,0) = triggerTrack->GetX11() - xTrack;
paramDiff(1,0) = triggerTrack->GetY11() - yTrack;
paramDiff(2,0) = triggerTrack->GetSlopeY() - ySlopeTrack;
trackCov.Zero();
trackCov(0,0) = kParamCov(0,0);
trackCov(1,1) = kParamCov(2,2);
trackCov(2,2) = kParamCov(3,3);
trackCov(1,2) = kParamCov(2,3);
trackCov(2,1) = kParamCov(3,2);
TMatrixD trigCov(triggerTrack->GetCovariances());
TMatrixD sumCov(trackCov,TMatrixD::kPlus,trigCov);
if (sumCov.Determinant() != 0) {
sumCov.Invert();
TMatrixD tmp(sumCov,TMatrixD::kMult,paramDiff);
TMatrixD chi2M(paramDiff,TMatrixD::kTransposeMult,tmp);
chi2 = chi2M(0,0);
} else {
AliWarning(" Determinant = 0");
Double_t sigma2 = 0.;
chi2 = 0.;
for (Int_t iVar = 0; iVar < 3; iVar++) {
sigma2 = trackCov(iVar,iVar) + trigCov(iVar,iVar);
chi2 += paramDiff(iVar,0) * paramDiff(iVar,0) / sigma2;
}
}
chi2 /= 3.;
if (chi2 < GetRecoParam()->GetMaxNormChi2MatchTrigger())
{
Bool_t isDoubleTrack = (TMath::Abs(chi2 - minChi2MatchTrigger)<1.);
if (chi2 < minChi2MatchTrigger && chi2 < GetRecoParam()->GetMaxNormChi2MatchTrigger())
{
if(isDoubleTrack)
{
doubleMatch = loTrgNum;
doubleChi2 = chi2MatchTrigger;
doubleTriggerTrack = matchedTriggerTrack;
}
minChi2MatchTrigger = chi2;
chi2MatchTrigger = chi2;
loTrgNum = triggerTrack->GetLoTrgNum();
matchedTriggerTrack = triggerTrack;
AliMUONLocalTrigger* locTrg = triggerStore.FindLocal(loTrgNum);
matchTrigger = 1;
if(locTrg->LoLpt()>0) matchTrigger = 2;
if(locTrg->LoHpt()>0) matchTrigger = 3;
}
else if(isDoubleTrack)
{
doubleMatch = triggerTrack->GetLoTrgNum();
doubleChi2 = chi2;
}
}
}
if(doubleMatch>=0)
{
AliDebug(1, Form("Two candidates found: %i and %i",loTrgNum,doubleMatch));
AliMUONLocalTrigger* locTrg1 = triggerStore.FindLocal(doubleMatch);
if((locTrg1->LoLpt()>0 && matchTrigger<2) || (locTrg1->LoHpt() && matchTrigger<3))
{
if(locTrg1->LoHpt()>0) matchTrigger=3;
else matchTrigger = 2;
loTrgNum = doubleMatch;
chi2MatchTrigger = doubleChi2;
matchedTriggerTrack = doubleTriggerTrack;
}
}
track->SetMatchTrigger(matchTrigger);
track->SetChi2MatchTrigger(chi2MatchTrigger);
AliMUONLocalTrigger* locTrg = static_cast<AliMUONLocalTrigger*>(triggerStore.FindLocal(loTrgNum));
if (locTrg)
{
track->SetLocalTrigger(locTrg->LoCircuit(),
locTrg->LoStripX(),
locTrg->LoStripY(),
locTrg->GetDeviation(),
locTrg->LoLpt(),
locTrg->LoHpt(),
locTrg->GetTriggerWithoutChamber());
}
return matchedTriggerTrack;
}
Bool_t AliMUONTrackHitPattern::PosInDetElemIdLocal(TVector3& localCoor, const TVector3& globalPoint1,
const TVector3& globalPoint2, Int_t detElemId) const
{
Double_t xloc, yloc, zloc;
fkTransformer.Global2Local(detElemId, globalPoint1.X(), globalPoint1.Y(), globalPoint1.Z(), xloc, yloc, zloc);
TVector3 localPoint1(xloc, yloc, zloc);
fkTransformer.Global2Local(detElemId, globalPoint2.X(), globalPoint2.Y(), globalPoint2.Z(), xloc, yloc, zloc);
TVector3 localPoint2(xloc, yloc, zloc);
localCoor = localPoint1 - ( localPoint1.Z() / ( localPoint2.Z() - localPoint1.Z() ) ) * ( localPoint2 - localPoint1 );
return kTRUE;
}
UInt_t AliMUONTrackHitPattern::GetHitPattern(const AliMUONTriggerTrack* matchedTriggerTrack) const
{
UInt_t pattern = 0;
PerformTrigTrackMatch(pattern, matchedTriggerTrack);
return pattern;
}
UInt_t AliMUONTrackHitPattern::GetHitPattern(AliMUONTrackParam* trackParam) const
{
UInt_t pattern = 0;
Bool_t isMatch[2];
const Int_t kNTrackingCh = AliMUONConstants::NTrackingCh();
for(Int_t ch=0; ch<4; ++ch)
{
Int_t iChamber = kNTrackingCh+ch;
AliMUONTrackExtrap::ExtrapToZCov(trackParam, AliMUONConstants::DefaultChamberZ(iChamber));
FindPadMatchingTrack(*trackParam, isMatch, iChamber);
for(Int_t cath=0; cath<2; ++cath)
{
if(isMatch[cath]) AliESDMuonTrack::SetFiredChamber(pattern, cath, ch);
}
}
AliESDMuonTrack::AddEffInfo(pattern, AliESDMuonTrack::kTrackerTrackPattern);
return pattern;
}
void
AliMUONTrackHitPattern::FindPadMatchingTrack(const AliMUONTrackParam& trackParam,
Bool_t isMatch[2], Int_t iChamber) const
{
Float_t minMatchDist[2];
for(Int_t cath=0; cath<2; ++cath)
{
isMatch[cath]=kFALSE;
minMatchDist[cath]=fkMaxDistance/10.;
}
TIter next(fkDigitStore.CreateTriggerIterator());
AliMUONVDigit* mDigit;
while ( ( mDigit = static_cast<AliMUONVDigit*>(next()) ) )
{
Int_t currDetElemId = mDigit->DetElemId();
Int_t currCh = AliMpDEManager::GetChamberId(currDetElemId);
if(currCh!=iChamber) continue;
Int_t cathode = mDigit->Cathode();
Int_t ix = mDigit->PadX();
Int_t iy = mDigit->PadY();
Float_t xpad, ypad, zpad;
const AliMpVSegmentation* seg = AliMpSegmentation::Instance()
->GetMpSegmentation(currDetElemId,AliMp::GetCathodType(cathode));
AliMpPad pad = seg->PadByIndices(ix,iy,kTRUE);
Float_t xlocal1 = pad.GetPositionX();
Float_t ylocal1 = pad.GetPositionY();
Float_t dpx = pad.GetDimensionX();
Float_t dpy = pad.GetDimensionY();
fkTransformer.Local2Global(currDetElemId, xlocal1, ylocal1, 0, xpad, ypad, zpad);
Float_t matchDist = MinDistanceFromPad(xpad, ypad, zpad, dpx, dpy, trackParam);
if(matchDist>minMatchDist[cathode])continue;
isMatch[cathode] = kTRUE;
if(isMatch[0] && isMatch[1]) break;
minMatchDist[cathode] = matchDist;
}
}
Float_t
AliMUONTrackHitPattern::MinDistanceFromPad(Float_t xPad, Float_t yPad, Float_t zPad,
Float_t dpx, Float_t dpy,
const AliMUONTrackParam& trackParam) const
{
AliMUONTrackParam trackParamAtPadZ(trackParam);
AliMUONTrackExtrap::LinearExtrapToZCov(&trackParamAtPadZ, zPad);
Float_t xTrackAtPad = trackParamAtPadZ.GetNonBendingCoor();
Float_t yTrackAtPad = trackParamAtPadZ.GetBendingCoor();
const Float_t kNSigma = GetRecoParam()->GetSigmaCutForTrigger();
const TMatrixD& kCovParam = trackParamAtPadZ.GetCovariances();
Float_t sigmaX = TMath::Sqrt(kCovParam(0,0));
Float_t sigmaY = TMath::Sqrt(kCovParam(2,2));
Float_t maxDistX = kNSigma * sigmaX;
Float_t maxDistY = kNSigma * sigmaY;
Float_t deltaX = TMath::Abs(xPad-xTrackAtPad)-dpx;
Float_t deltaY = TMath::Abs(yPad-yTrackAtPad)-dpy;
Float_t matchDist = fkMaxDistance;
if(deltaX<=maxDistX && deltaY<=maxDistY) matchDist = TMath::Max(deltaX, deltaY);
return matchDist;
}
Bool_t AliMUONTrackHitPattern::FindPadMatchingTrig(const TVector3& vec11, const TVector3& vec21,
Int_t matchedDetElemId[2], TObjArray& pads) const
{
enum {kBending, kNonBending};
Float_t minMatchDist[2];
Int_t padsInCheckArea[2];
Int_t inputDetElemId = matchedDetElemId[0];
for(Int_t cath=0; cath<2; cath++){
minMatchDist[cath] = fkMaxDistance/10.;
padsInCheckArea[cath] = 0;
}
Int_t iChamber = AliMpDEManager::GetChamberId(inputDetElemId);
Int_t iSlat = inputDetElemId%100;
TIter next(fkDigitStore.CreateTriggerIterator());
AliMUONVDigit* mDigit;
TVector3 localExtrap;
Int_t previousDetElemId = -1;
while ( ( mDigit = static_cast<AliMUONVDigit*>(next()) ) )
{
Int_t currDetElemId = mDigit->DetElemId();
Int_t currCh = AliMpDEManager::GetChamberId(currDetElemId);
if ( currCh != iChamber ) continue;
Int_t currSlat = currDetElemId%100;
Int_t slatDiff = TMath::Abs(currSlat-iSlat);
if ( slatDiff>1 && slatDiff<17 ) continue;
Int_t cathode = mDigit->Cathode();
Int_t ix = mDigit->PadX();
Int_t iy = mDigit->PadY();
const AliMpVSegmentation* seg = AliMpSegmentation::Instance()
->GetMpSegmentation(currDetElemId,AliMp::GetCathodType(cathode));
AliMpPad pad = seg->PadByIndices(ix,iy,kTRUE);
if ( currDetElemId != previousDetElemId ) {
PosInDetElemIdLocal(localExtrap, vec11, vec21, currDetElemId);
previousDetElemId = currDetElemId;
}
AliDebug(11, Form("\nDetElemId = %i Cathode = %i Pad = (%i,%i) = (%.2f,%.2f) Dim = (%.2f,%.2f) Track = (%.2f,%.2f)\n",
currDetElemId,cathode,ix,iy,pad.GetPositionX(),pad.GetPositionY(),pad.GetDimensionX(),pad.GetDimensionY(),localExtrap.X(),localExtrap.Y()));
Float_t matchDist = PadMatchTrack(pad, localExtrap);
if ( matchDist < fkMaxDistance/2. ) padsInCheckArea[cathode]++;
if ( matchDist > minMatchDist[cathode] ) continue;
if ( pads.At(cathode) ) delete pads.RemoveAt(cathode);
pads.AddAt((AliMpPad*)pad.Clone(),cathode);
minMatchDist[cathode] = matchDist;
matchedDetElemId[cathode] = currDetElemId;
}
for ( Int_t cath=0; cath<2; cath++ ){
if ( padsInCheckArea[cath] > 2 ) {
AliDebug(10, Form("padsInCheckArea[%i] = %i\n",cath,padsInCheckArea[cath]));
return kFALSE;
}
}
return kTRUE;
}
Float_t AliMUONTrackHitPattern::PadMatchTrack(const AliMpPad& pad, const TVector3& trackPosAtPad) const
{
Float_t xPad = pad.GetPositionX();
Float_t yPad = pad.GetPositionY();
Float_t dpx = pad.GetDimensionX();
Float_t dpy = pad.GetDimensionY();
Float_t maxDist = GetRecoParam()->GetStripCutForTrigger() * 2. * TMath::Min(dpx,dpy);
if ( maxDist<2. ) maxDist = 2.;
Float_t maxDistCheckArea = GetRecoParam()->GetMaxStripAreaForTrigger() * 2. * TMath::Min(dpx,dpy);
Float_t matchDist = fkMaxDistance;
Float_t deltaX = TMath::Abs(xPad-trackPosAtPad.X())-dpx;
Float_t deltaY = TMath::Abs(yPad-trackPosAtPad.Y())-dpy;
Float_t maxDistX = maxDist;
Float_t maxDistY = maxDist;
if(deltaX<=maxDistX && deltaY<=maxDistY) matchDist = TMath::Max(deltaX, deltaY);
else if(deltaX<=maxDistCheckArea && deltaY<=maxDistCheckArea) matchDist = fkMaxDistance/5.;
return matchDist;
}
Int_t AliMUONTrackHitPattern::DetElemIdFromPos(Float_t x, Float_t y,
Int_t chamber, Int_t foundDetElemId[2]) const
{
Int_t nFound = 0;
foundDetElemId[0] = foundDetElemId[1] = 0;
AliMpArea pointArea(x, y, 2.*AliMpConstants::LengthTolerance(), 2.*AliMpConstants::LengthTolerance());
AliMpDEIterator it;
for ( it.First(chamber-1); ! it.IsDone(); it.Next() ){
Int_t detElemId = it.CurrentDEId();
AliMpArea* deArea = fkTransformer.GetDEArea(detElemId);
if ( deArea->Contains(pointArea) ) {
foundDetElemId[nFound++] = detElemId;
if ( nFound == 2 ) break;
}
else if ( nFound > 0 ) break;
}
return nFound;
}
Bool_t AliMUONTrackHitPattern::PadsFromPos(const TVector3& vec11, const TVector3& vec21,
Int_t detElemId, TObjArray& pads) const
{
pads.Delete();
TVector3 localCoor;
PosInDetElemIdLocal(localCoor, vec11, vec21, detElemId);
for ( Int_t icath=0; icath<2; icath++ ) {
const AliMpVSegmentation* seg =
AliMpSegmentation::Instance()
->GetMpSegmentation(detElemId,AliMp::GetCathodType(icath));
AliMpPad pad = seg->PadByPosition(localCoor.X(),localCoor.Y(),kFALSE);
if ( pad.IsValid() ) {
pads.AddAt(pad.Clone(), icath);
}
}
return pads.GetEntries();
}
Bool_t AliMUONTrackHitPattern::IsCloseToAccEdge(TObjArray& pads, Int_t detElemId, Float_t coor[2]) const
{
AliMpArea* deArea = fkTransformer.GetDEArea(detElemId);
Float_t dpx = ((AliMpPad*)pads.At(1))->GetDimensionX();
Float_t dpy = ((AliMpPad*)pads.At(0))->GetDimensionY();
Float_t resolution[2] = { static_cast<Float_t>(0.75*dpx), static_cast<Float_t>(0.75*dpy) };
Float_t sign[3] = {0., 1., -1.};
for ( Int_t ineighx=0; ineighx<3; ineighx++ ) {
for ( Int_t ineighy=0; ineighy<3; ineighy++ ) {
AliMpArea pointArea(coor[0]+sign[ineighx]*resolution[0],
coor[1]+sign[ineighy]*resolution[1],
2.*AliMpConstants::LengthTolerance(),
2.*AliMpConstants::LengthTolerance());
if ( ! deArea->Contains(pointArea) ) return kTRUE;
}
}
return kFALSE;
}
Bool_t AliMUONTrackHitPattern::IsMasked(const AliMpPad& pad, Int_t detElemId, Int_t cathode, const TVector3& vec11, const TVector3& vec21) const
{
Int_t nMasked = 0;
if ( fkTriggerUtilities->IsMasked(pad, detElemId, cathode) ) ++nMasked;
TVector3 localCoor;
PosInDetElemIdLocal(localCoor, vec11, vec21, detElemId);
Float_t padPos[2] = { static_cast<Float_t>(pad.GetPositionX()), static_cast<Float_t>(pad.GetPositionY())};
Float_t padDim[2] = { static_cast<Float_t>(pad.GetDimensionX()), static_cast<Float_t>(pad.GetDimensionY())};
Float_t inpactPos[2] = { static_cast<Float_t>(localCoor.X()), static_cast<Float_t>(localCoor.Y())};
Float_t sign[2] = {-1., 1.};
Int_t icoor = 1-cathode;
Int_t addSlatSign[3] = {0,1,-1};
Int_t inputCh = AliMpDEManager::GetChamberId(detElemId)+1;
Int_t inputSlat = detElemId%100;
Float_t newPos[2];
for ( Int_t ineigh=0; ineigh<2; ineigh++ ) {
newPos[1-icoor] = inpactPos[1-icoor];
newPos[icoor] = inpactPos[icoor] + 1.05 * sign[ineigh] * padDim[icoor];
if ( TMath::Abs(newPos[icoor] - padPos[icoor]) < padDim[icoor] ) continue;
const AliMpVSegmentation* seg =
AliMpSegmentation::Instance()->GetMpSegmentation(detElemId,AliMp::GetCathodType(cathode));
AliMpPad neighPad = seg->PadByPosition(newPos[0],newPos[1],kFALSE);
if ( neighPad.IsValid() ) {
if ( fkTriggerUtilities->IsMasked(neighPad, detElemId, cathode) ) ++nMasked;
}
else {
TVector3 deltaVec(newPos[0]-inpactPos[0],newPos[1]-inpactPos[1],0.);
TVector3 transVec11 = vec11+deltaVec;
TVector3 transVec21 = vec21+deltaVec;
TObjArray padsFromPos;
padsFromPos.SetOwner();
for ( Int_t iAddSlat=0; iAddSlat<2; iAddSlat++ ) {
Int_t currSlat = (inputSlat + addSlatSign[iAddSlat])%18;
Int_t currDetElemId = 100 * inputCh + currSlat;
PadsFromPos(transVec11,transVec21,currDetElemId,padsFromPos);
AliMpPad* currPad = (AliMpPad*)padsFromPos.UncheckedAt(cathode);
Bool_t isMasked = ( currPad ) ? fkTriggerUtilities->IsMasked(*currPad, currDetElemId, cathode) : kFALSE;
padsFromPos.Delete();
if ( isMasked ) ++nMasked;
}
}
}
Double_t maskedProb = ((Double_t)nMasked)/3.;
if ( gRandom->Rndm() < maskedProb ) return kTRUE;
return kFALSE;
}
Bool_t AliMUONTrackHitPattern::PerformTrigTrackMatch(UInt_t &pattern,
const AliMUONTriggerTrack* matchedTrigTrack) const
{
AliCodeTimerAuto("",0);
enum {kBending, kNonBending};
TArrayF zMeanChamber(AliMUONConstants::NTriggerCh());
zMeanChamber[0] = matchedTrigTrack->GetZ11();
zMeanChamber[1] = matchedTrigTrack->GetZ11() + AliMUONConstants::DefaultChamberZ(11) - AliMUONConstants::DefaultChamberZ(10);
zMeanChamber[2] = matchedTrigTrack->GetZ21();
zMeanChamber[3] = matchedTrigTrack->GetZ21() + AliMUONConstants::DefaultChamberZ(13) - AliMUONConstants::DefaultChamberZ(12);
TArrayI digitPerTrack(2);
digitPerTrack.Reset();
Float_t trackIntersectCh[2];
Float_t slopeX = matchedTrigTrack->GetSlopeX();
Float_t slopeY = matchedTrigTrack->GetSlopeY();
Float_t z11 = matchedTrigTrack->GetZ11();
Float_t x11 = slopeX * z11;
Float_t y11 = matchedTrigTrack->GetY11();
Float_t z21 = matchedTrigTrack->GetZ21();
Float_t x21 = slopeX * z21;
Float_t y21 = y11 + slopeY * (z21-z11);
TVector3 vec11(x11, y11, z11), vec21(x21, y21, z21);
Int_t firstSlat = -1, firstBoard = -1;
AliESDMuonTrack::EAliTriggerChPatternFlag goodForEff = AliESDMuonTrack::kBoardEff;
TObjArray matchedPads(2), padsFromPos(2), validPads(2);
matchedPads.SetOwner(); padsFromPos.SetOwner();
Int_t matchedDetElemId[2], detElemIdFromTrack[2];
for(Int_t ich=0; ich<AliMUONConstants::NTriggerCh(); ich++) {
Float_t deltaZ = zMeanChamber[ich] - zMeanChamber[0];
trackIntersectCh[0] = zMeanChamber[ich] * slopeX;
trackIntersectCh[1] = y11 + deltaZ * slopeY;
Int_t nFound = DetElemIdFromPos(trackIntersectCh[0], trackIntersectCh[1], 11+ich, detElemIdFromTrack);
if ( nFound == 0 ) {
AliESDMuonTrack::AddEffInfo(pattern, AliESDMuonTrack::kTrackOutsideGeometry);
goodForEff = AliESDMuonTrack::kNoEff;
AliDebug(10, "Warning: trigger track outside trigger chamber\n");
continue;
}
matchedDetElemId[0] = matchedDetElemId[1] = detElemIdFromTrack[0];
if ( ! FindPadMatchingTrig(vec11, vec21, matchedDetElemId, matchedPads) ) {
AliESDMuonTrack::AddEffInfo(pattern, AliESDMuonTrack::kTrackMatchesManyPads);
goodForEff = AliESDMuonTrack::kNoEff;
AliDebug(10, Form("Warning: track = %p (%i) matches many pads. Rejected!\n",(void *)matchedTrigTrack, matchedDetElemId[0]));
}
Int_t nMatched = 0;
Int_t mostProbDEmatched = detElemIdFromTrack[0];
for ( Int_t icath=0; icath<2; icath++ ) {
if ( matchedPads.UncheckedAt(icath) ) {
nMatched++;
AliESDMuonTrack::SetFiredChamber(pattern, icath, ich);
digitPerTrack[icath]++;
mostProbDEmatched = matchedDetElemId[icath];
}
}
Int_t mostProbDEfromTrack = detElemIdFromTrack[0];
for ( Int_t ifound=0; ifound<nFound; ifound++ ) {
if ( detElemIdFromTrack[ifound] == mostProbDEmatched ) {
mostProbDEfromTrack = mostProbDEmatched;
break;
}
}
if ( goodForEff == AliESDMuonTrack::kNoEff ) continue;
if ( nMatched < 2 ) PadsFromPos(vec11, vec21, mostProbDEfromTrack, padsFromPos);
for ( Int_t cath=0; cath<2; cath++ ) {
if ( matchedPads.UncheckedAt(cath) ) validPads.AddAt(matchedPads.UncheckedAt(cath),cath);
else if ( padsFromPos.UncheckedAt(cath) ) {
AliMpPad* currPad = (AliMpPad*)padsFromPos.UncheckedAt(cath);
validPads.AddAt(currPad,cath);
if ( IsMasked(*currPad, mostProbDEfromTrack, cath, vec11, vec21) ) {
AliESDMuonTrack::AddEffInfo(pattern,AliESDMuonTrack::kTrackMatchesMasks);
AliDebug(10,Form("DetElemId %i cath %i board %i strip %i is masked: effFlag 0", mostProbDEfromTrack, cath, currPad->GetLocalBoardId(0), currPad->GetLocalBoardChannel(0)));
goodForEff = AliESDMuonTrack::kNoEff;
}
}
else goodForEff = AliESDMuonTrack::kNoEff;
}
if ( goodForEff != AliESDMuonTrack::kNoEff ) {
if ( nMatched == 0 && IsCloseToAccEdge(padsFromPos, mostProbDEfromTrack, trackIntersectCh) ) {
AliESDMuonTrack::AddEffInfo(pattern, AliESDMuonTrack::kTrackOutsideGeometry);
goodForEff = AliESDMuonTrack::kNoEff;
AliDebug(10, "Warning: trigger track at the edge of the chamber\n");
}
Int_t currSlat = mostProbDEmatched%100;
if ( firstSlat < 0 ) firstSlat = currSlat;
else if ( currSlat != firstSlat ) {
goodForEff = AliESDMuonTrack::kChEff;
firstSlat = AliESDMuonTrack::kCrossDifferentSlats;
}
if ( firstBoard < 0 ) firstBoard = ((AliMpPad*)validPads[kBending])->GetLocalBoardId(0);
for ( Int_t cath=0; cath<2; cath++ ){
if ( goodForEff == AliESDMuonTrack::kBoardEff) {
Bool_t atLeastOneLoc = kFALSE;
AliMpPad* currPad = (AliMpPad*)validPads.UncheckedAt(cath);
for ( Int_t iloc=0; iloc<currPad->GetNofLocations(); iloc++) {
if ( currPad->GetLocalBoardId(iloc) == firstBoard ) {
atLeastOneLoc = kTRUE;
break;
}
}
if ( ! atLeastOneLoc ) goodForEff = AliESDMuonTrack::kSlatEff;
}
}
}
matchedPads.Delete();
padsFromPos.Delete();
}
if ( goodForEff == AliESDMuonTrack::kNoEff ) return kFALSE;
for(Int_t cath=0; cath<2; cath++){
if(digitPerTrack[cath]<3) {
AliESDMuonTrack::AddEffInfo(pattern, AliESDMuonTrack::kTrackMatchesFewPads);
goodForEff = AliESDMuonTrack::kNoEff;
AliDebug(10, Form("Warning: found %i digits for trigger track cathode %i.\nRejecting event\n", digitPerTrack[cath],cath));
}
}
if ( goodForEff == AliESDMuonTrack::kNoEff ) return kFALSE;
AliESDMuonTrack::AddEffInfo(pattern, firstSlat, firstBoard, goodForEff);
return kTRUE;
}
AliMUONTrackHitPattern.cxx:1 AliMUONTrackHitPattern.cxx:2 AliMUONTrackHitPattern.cxx:3 AliMUONTrackHitPattern.cxx:4 AliMUONTrackHitPattern.cxx:5 AliMUONTrackHitPattern.cxx:6 AliMUONTrackHitPattern.cxx:7 AliMUONTrackHitPattern.cxx:8 AliMUONTrackHitPattern.cxx:9 AliMUONTrackHitPattern.cxx:10 AliMUONTrackHitPattern.cxx:11 AliMUONTrackHitPattern.cxx:12 AliMUONTrackHitPattern.cxx:13 AliMUONTrackHitPattern.cxx:14 AliMUONTrackHitPattern.cxx:15 AliMUONTrackHitPattern.cxx:16 AliMUONTrackHitPattern.cxx:17 AliMUONTrackHitPattern.cxx:18 AliMUONTrackHitPattern.cxx:19 AliMUONTrackHitPattern.cxx:20 AliMUONTrackHitPattern.cxx:21 AliMUONTrackHitPattern.cxx:22 AliMUONTrackHitPattern.cxx:23 AliMUONTrackHitPattern.cxx:24 AliMUONTrackHitPattern.cxx:25 AliMUONTrackHitPattern.cxx:26 AliMUONTrackHitPattern.cxx:27 AliMUONTrackHitPattern.cxx:28 AliMUONTrackHitPattern.cxx:29 AliMUONTrackHitPattern.cxx:30 AliMUONTrackHitPattern.cxx:31 AliMUONTrackHitPattern.cxx:32 AliMUONTrackHitPattern.cxx:33 AliMUONTrackHitPattern.cxx:34 AliMUONTrackHitPattern.cxx:35 AliMUONTrackHitPattern.cxx:36 AliMUONTrackHitPattern.cxx:37 AliMUONTrackHitPattern.cxx:38 AliMUONTrackHitPattern.cxx:39 AliMUONTrackHitPattern.cxx:40 AliMUONTrackHitPattern.cxx:41 AliMUONTrackHitPattern.cxx:42 AliMUONTrackHitPattern.cxx:43 AliMUONTrackHitPattern.cxx:44 AliMUONTrackHitPattern.cxx:45 AliMUONTrackHitPattern.cxx:46 AliMUONTrackHitPattern.cxx:47 AliMUONTrackHitPattern.cxx:48 AliMUONTrackHitPattern.cxx:49 AliMUONTrackHitPattern.cxx:50 AliMUONTrackHitPattern.cxx:51 AliMUONTrackHitPattern.cxx:52 AliMUONTrackHitPattern.cxx:53 AliMUONTrackHitPattern.cxx:54 AliMUONTrackHitPattern.cxx:55 AliMUONTrackHitPattern.cxx:56 AliMUONTrackHitPattern.cxx:57 AliMUONTrackHitPattern.cxx:58 AliMUONTrackHitPattern.cxx:59 AliMUONTrackHitPattern.cxx:60 AliMUONTrackHitPattern.cxx:61 AliMUONTrackHitPattern.cxx:62 AliMUONTrackHitPattern.cxx:63 AliMUONTrackHitPattern.cxx:64 AliMUONTrackHitPattern.cxx:65 AliMUONTrackHitPattern.cxx:66 AliMUONTrackHitPattern.cxx:67 AliMUONTrackHitPattern.cxx:68 AliMUONTrackHitPattern.cxx:69 AliMUONTrackHitPattern.cxx:70 AliMUONTrackHitPattern.cxx:71 AliMUONTrackHitPattern.cxx:72 AliMUONTrackHitPattern.cxx:73 AliMUONTrackHitPattern.cxx:74 AliMUONTrackHitPattern.cxx:75 AliMUONTrackHitPattern.cxx:76 AliMUONTrackHitPattern.cxx:77 AliMUONTrackHitPattern.cxx:78 AliMUONTrackHitPattern.cxx:79 AliMUONTrackHitPattern.cxx:80 AliMUONTrackHitPattern.cxx:81 AliMUONTrackHitPattern.cxx:82 AliMUONTrackHitPattern.cxx:83 AliMUONTrackHitPattern.cxx:84 AliMUONTrackHitPattern.cxx:85 AliMUONTrackHitPattern.cxx:86 AliMUONTrackHitPattern.cxx:87 AliMUONTrackHitPattern.cxx:88 AliMUONTrackHitPattern.cxx:89 AliMUONTrackHitPattern.cxx:90 AliMUONTrackHitPattern.cxx:91 AliMUONTrackHitPattern.cxx:92 AliMUONTrackHitPattern.cxx:93 AliMUONTrackHitPattern.cxx:94 AliMUONTrackHitPattern.cxx:95 AliMUONTrackHitPattern.cxx:96 AliMUONTrackHitPattern.cxx:97 AliMUONTrackHitPattern.cxx:98 AliMUONTrackHitPattern.cxx:99 AliMUONTrackHitPattern.cxx:100 AliMUONTrackHitPattern.cxx:101 AliMUONTrackHitPattern.cxx:102 AliMUONTrackHitPattern.cxx:103 AliMUONTrackHitPattern.cxx:104 AliMUONTrackHitPattern.cxx:105 AliMUONTrackHitPattern.cxx:106 AliMUONTrackHitPattern.cxx:107 AliMUONTrackHitPattern.cxx:108 AliMUONTrackHitPattern.cxx:109 AliMUONTrackHitPattern.cxx:110 AliMUONTrackHitPattern.cxx:111 AliMUONTrackHitPattern.cxx:112 AliMUONTrackHitPattern.cxx:113 AliMUONTrackHitPattern.cxx:114 AliMUONTrackHitPattern.cxx:115 AliMUONTrackHitPattern.cxx:116 AliMUONTrackHitPattern.cxx:117 AliMUONTrackHitPattern.cxx:118 AliMUONTrackHitPattern.cxx:119 AliMUONTrackHitPattern.cxx:120 AliMUONTrackHitPattern.cxx:121 AliMUONTrackHitPattern.cxx:122 AliMUONTrackHitPattern.cxx:123 AliMUONTrackHitPattern.cxx:124 AliMUONTrackHitPattern.cxx:125 AliMUONTrackHitPattern.cxx:126 AliMUONTrackHitPattern.cxx:127 AliMUONTrackHitPattern.cxx:128 AliMUONTrackHitPattern.cxx:129 AliMUONTrackHitPattern.cxx:130 AliMUONTrackHitPattern.cxx:131 AliMUONTrackHitPattern.cxx:132 AliMUONTrackHitPattern.cxx:133 AliMUONTrackHitPattern.cxx:134 AliMUONTrackHitPattern.cxx:135 AliMUONTrackHitPattern.cxx:136 AliMUONTrackHitPattern.cxx:137 AliMUONTrackHitPattern.cxx:138 AliMUONTrackHitPattern.cxx:139 AliMUONTrackHitPattern.cxx:140 AliMUONTrackHitPattern.cxx:141 AliMUONTrackHitPattern.cxx:142 AliMUONTrackHitPattern.cxx:143 AliMUONTrackHitPattern.cxx:144 AliMUONTrackHitPattern.cxx:145 AliMUONTrackHitPattern.cxx:146 AliMUONTrackHitPattern.cxx:147 AliMUONTrackHitPattern.cxx:148 AliMUONTrackHitPattern.cxx:149 AliMUONTrackHitPattern.cxx:150 AliMUONTrackHitPattern.cxx:151 AliMUONTrackHitPattern.cxx:152 AliMUONTrackHitPattern.cxx:153 AliMUONTrackHitPattern.cxx:154 AliMUONTrackHitPattern.cxx:155 AliMUONTrackHitPattern.cxx:156 AliMUONTrackHitPattern.cxx:157 AliMUONTrackHitPattern.cxx:158 AliMUONTrackHitPattern.cxx:159 AliMUONTrackHitPattern.cxx:160 AliMUONTrackHitPattern.cxx:161 AliMUONTrackHitPattern.cxx:162 AliMUONTrackHitPattern.cxx:163 AliMUONTrackHitPattern.cxx:164 AliMUONTrackHitPattern.cxx:165 AliMUONTrackHitPattern.cxx:166 AliMUONTrackHitPattern.cxx:167 AliMUONTrackHitPattern.cxx:168 AliMUONTrackHitPattern.cxx:169 AliMUONTrackHitPattern.cxx:170 AliMUONTrackHitPattern.cxx:171 AliMUONTrackHitPattern.cxx:172 AliMUONTrackHitPattern.cxx:173 AliMUONTrackHitPattern.cxx:174 AliMUONTrackHitPattern.cxx:175 AliMUONTrackHitPattern.cxx:176 AliMUONTrackHitPattern.cxx:177 AliMUONTrackHitPattern.cxx:178 AliMUONTrackHitPattern.cxx:179 AliMUONTrackHitPattern.cxx:180 AliMUONTrackHitPattern.cxx:181 AliMUONTrackHitPattern.cxx:182 AliMUONTrackHitPattern.cxx:183 AliMUONTrackHitPattern.cxx:184 AliMUONTrackHitPattern.cxx:185 AliMUONTrackHitPattern.cxx:186 AliMUONTrackHitPattern.cxx:187 AliMUONTrackHitPattern.cxx:188 AliMUONTrackHitPattern.cxx:189 AliMUONTrackHitPattern.cxx:190 AliMUONTrackHitPattern.cxx:191 AliMUONTrackHitPattern.cxx:192 AliMUONTrackHitPattern.cxx:193 AliMUONTrackHitPattern.cxx:194 AliMUONTrackHitPattern.cxx:195 AliMUONTrackHitPattern.cxx:196 AliMUONTrackHitPattern.cxx:197 AliMUONTrackHitPattern.cxx:198 AliMUONTrackHitPattern.cxx:199 AliMUONTrackHitPattern.cxx:200 AliMUONTrackHitPattern.cxx:201 AliMUONTrackHitPattern.cxx:202 AliMUONTrackHitPattern.cxx:203 AliMUONTrackHitPattern.cxx:204 AliMUONTrackHitPattern.cxx:205 AliMUONTrackHitPattern.cxx:206 AliMUONTrackHitPattern.cxx:207 AliMUONTrackHitPattern.cxx:208 AliMUONTrackHitPattern.cxx:209 AliMUONTrackHitPattern.cxx:210 AliMUONTrackHitPattern.cxx:211 AliMUONTrackHitPattern.cxx:212 AliMUONTrackHitPattern.cxx:213 AliMUONTrackHitPattern.cxx:214 AliMUONTrackHitPattern.cxx:215 AliMUONTrackHitPattern.cxx:216 AliMUONTrackHitPattern.cxx:217 AliMUONTrackHitPattern.cxx:218 AliMUONTrackHitPattern.cxx:219 AliMUONTrackHitPattern.cxx:220 AliMUONTrackHitPattern.cxx:221 AliMUONTrackHitPattern.cxx:222 AliMUONTrackHitPattern.cxx:223 AliMUONTrackHitPattern.cxx:224 AliMUONTrackHitPattern.cxx:225 AliMUONTrackHitPattern.cxx:226 AliMUONTrackHitPattern.cxx:227 AliMUONTrackHitPattern.cxx:228 AliMUONTrackHitPattern.cxx:229 AliMUONTrackHitPattern.cxx:230 AliMUONTrackHitPattern.cxx:231 AliMUONTrackHitPattern.cxx:232 AliMUONTrackHitPattern.cxx:233 AliMUONTrackHitPattern.cxx:234 AliMUONTrackHitPattern.cxx:235 AliMUONTrackHitPattern.cxx:236 AliMUONTrackHitPattern.cxx:237 AliMUONTrackHitPattern.cxx:238 AliMUONTrackHitPattern.cxx:239 AliMUONTrackHitPattern.cxx:240 AliMUONTrackHitPattern.cxx:241 AliMUONTrackHitPattern.cxx:242 AliMUONTrackHitPattern.cxx:243 AliMUONTrackHitPattern.cxx:244 AliMUONTrackHitPattern.cxx:245 AliMUONTrackHitPattern.cxx:246 AliMUONTrackHitPattern.cxx:247 AliMUONTrackHitPattern.cxx:248 AliMUONTrackHitPattern.cxx:249 AliMUONTrackHitPattern.cxx:250 AliMUONTrackHitPattern.cxx:251 AliMUONTrackHitPattern.cxx:252 AliMUONTrackHitPattern.cxx:253 AliMUONTrackHitPattern.cxx:254 AliMUONTrackHitPattern.cxx:255 AliMUONTrackHitPattern.cxx:256 AliMUONTrackHitPattern.cxx:257 AliMUONTrackHitPattern.cxx:258 AliMUONTrackHitPattern.cxx:259 AliMUONTrackHitPattern.cxx:260 AliMUONTrackHitPattern.cxx:261 AliMUONTrackHitPattern.cxx:262 AliMUONTrackHitPattern.cxx:263 AliMUONTrackHitPattern.cxx:264 AliMUONTrackHitPattern.cxx:265 AliMUONTrackHitPattern.cxx:266 AliMUONTrackHitPattern.cxx:267 AliMUONTrackHitPattern.cxx:268 AliMUONTrackHitPattern.cxx:269 AliMUONTrackHitPattern.cxx:270 AliMUONTrackHitPattern.cxx:271 AliMUONTrackHitPattern.cxx:272 AliMUONTrackHitPattern.cxx:273 AliMUONTrackHitPattern.cxx:274 AliMUONTrackHitPattern.cxx:275 AliMUONTrackHitPattern.cxx:276 AliMUONTrackHitPattern.cxx:277 AliMUONTrackHitPattern.cxx:278 AliMUONTrackHitPattern.cxx:279 AliMUONTrackHitPattern.cxx:280 AliMUONTrackHitPattern.cxx:281 AliMUONTrackHitPattern.cxx:282 AliMUONTrackHitPattern.cxx:283 AliMUONTrackHitPattern.cxx:284 AliMUONTrackHitPattern.cxx:285 AliMUONTrackHitPattern.cxx:286 AliMUONTrackHitPattern.cxx:287 AliMUONTrackHitPattern.cxx:288 AliMUONTrackHitPattern.cxx:289 AliMUONTrackHitPattern.cxx:290 AliMUONTrackHitPattern.cxx:291 AliMUONTrackHitPattern.cxx:292 AliMUONTrackHitPattern.cxx:293 AliMUONTrackHitPattern.cxx:294 AliMUONTrackHitPattern.cxx:295 AliMUONTrackHitPattern.cxx:296 AliMUONTrackHitPattern.cxx:297 AliMUONTrackHitPattern.cxx:298 AliMUONTrackHitPattern.cxx:299 AliMUONTrackHitPattern.cxx:300 AliMUONTrackHitPattern.cxx:301 AliMUONTrackHitPattern.cxx:302 AliMUONTrackHitPattern.cxx:303 AliMUONTrackHitPattern.cxx:304 AliMUONTrackHitPattern.cxx:305 AliMUONTrackHitPattern.cxx:306 AliMUONTrackHitPattern.cxx:307 AliMUONTrackHitPattern.cxx:308 AliMUONTrackHitPattern.cxx:309 AliMUONTrackHitPattern.cxx:310 AliMUONTrackHitPattern.cxx:311 AliMUONTrackHitPattern.cxx:312 AliMUONTrackHitPattern.cxx:313 AliMUONTrackHitPattern.cxx:314 AliMUONTrackHitPattern.cxx:315 AliMUONTrackHitPattern.cxx:316 AliMUONTrackHitPattern.cxx:317 AliMUONTrackHitPattern.cxx:318 AliMUONTrackHitPattern.cxx:319 AliMUONTrackHitPattern.cxx:320 AliMUONTrackHitPattern.cxx:321 AliMUONTrackHitPattern.cxx:322 AliMUONTrackHitPattern.cxx:323 AliMUONTrackHitPattern.cxx:324 AliMUONTrackHitPattern.cxx:325 AliMUONTrackHitPattern.cxx:326 AliMUONTrackHitPattern.cxx:327 AliMUONTrackHitPattern.cxx:328 AliMUONTrackHitPattern.cxx:329 AliMUONTrackHitPattern.cxx:330 AliMUONTrackHitPattern.cxx:331 AliMUONTrackHitPattern.cxx:332 AliMUONTrackHitPattern.cxx:333 AliMUONTrackHitPattern.cxx:334 AliMUONTrackHitPattern.cxx:335 AliMUONTrackHitPattern.cxx:336 AliMUONTrackHitPattern.cxx:337 AliMUONTrackHitPattern.cxx:338 AliMUONTrackHitPattern.cxx:339 AliMUONTrackHitPattern.cxx:340 AliMUONTrackHitPattern.cxx:341 AliMUONTrackHitPattern.cxx:342 AliMUONTrackHitPattern.cxx:343 AliMUONTrackHitPattern.cxx:344 AliMUONTrackHitPattern.cxx:345 AliMUONTrackHitPattern.cxx:346 AliMUONTrackHitPattern.cxx:347 AliMUONTrackHitPattern.cxx:348 AliMUONTrackHitPattern.cxx:349 AliMUONTrackHitPattern.cxx:350 AliMUONTrackHitPattern.cxx:351 AliMUONTrackHitPattern.cxx:352 AliMUONTrackHitPattern.cxx:353 AliMUONTrackHitPattern.cxx:354 AliMUONTrackHitPattern.cxx:355 AliMUONTrackHitPattern.cxx:356 AliMUONTrackHitPattern.cxx:357 AliMUONTrackHitPattern.cxx:358 AliMUONTrackHitPattern.cxx:359 AliMUONTrackHitPattern.cxx:360 AliMUONTrackHitPattern.cxx:361 AliMUONTrackHitPattern.cxx:362 AliMUONTrackHitPattern.cxx:363 AliMUONTrackHitPattern.cxx:364 AliMUONTrackHitPattern.cxx:365 AliMUONTrackHitPattern.cxx:366 AliMUONTrackHitPattern.cxx:367 AliMUONTrackHitPattern.cxx:368 AliMUONTrackHitPattern.cxx:369 AliMUONTrackHitPattern.cxx:370 AliMUONTrackHitPattern.cxx:371 AliMUONTrackHitPattern.cxx:372 AliMUONTrackHitPattern.cxx:373 AliMUONTrackHitPattern.cxx:374 AliMUONTrackHitPattern.cxx:375 AliMUONTrackHitPattern.cxx:376 AliMUONTrackHitPattern.cxx:377 AliMUONTrackHitPattern.cxx:378 AliMUONTrackHitPattern.cxx:379 AliMUONTrackHitPattern.cxx:380 AliMUONTrackHitPattern.cxx:381 AliMUONTrackHitPattern.cxx:382 AliMUONTrackHitPattern.cxx:383 AliMUONTrackHitPattern.cxx:384 AliMUONTrackHitPattern.cxx:385 AliMUONTrackHitPattern.cxx:386 AliMUONTrackHitPattern.cxx:387 AliMUONTrackHitPattern.cxx:388 AliMUONTrackHitPattern.cxx:389 AliMUONTrackHitPattern.cxx:390 AliMUONTrackHitPattern.cxx:391 AliMUONTrackHitPattern.cxx:392 AliMUONTrackHitPattern.cxx:393 AliMUONTrackHitPattern.cxx:394 AliMUONTrackHitPattern.cxx:395 AliMUONTrackHitPattern.cxx:396 AliMUONTrackHitPattern.cxx:397 AliMUONTrackHitPattern.cxx:398 AliMUONTrackHitPattern.cxx:399 AliMUONTrackHitPattern.cxx:400 AliMUONTrackHitPattern.cxx:401 AliMUONTrackHitPattern.cxx:402 AliMUONTrackHitPattern.cxx:403 AliMUONTrackHitPattern.cxx:404 AliMUONTrackHitPattern.cxx:405 AliMUONTrackHitPattern.cxx:406 AliMUONTrackHitPattern.cxx:407 AliMUONTrackHitPattern.cxx:408 AliMUONTrackHitPattern.cxx:409 AliMUONTrackHitPattern.cxx:410 AliMUONTrackHitPattern.cxx:411 AliMUONTrackHitPattern.cxx:412 AliMUONTrackHitPattern.cxx:413 AliMUONTrackHitPattern.cxx:414 AliMUONTrackHitPattern.cxx:415 AliMUONTrackHitPattern.cxx:416 AliMUONTrackHitPattern.cxx:417 AliMUONTrackHitPattern.cxx:418 AliMUONTrackHitPattern.cxx:419 AliMUONTrackHitPattern.cxx:420 AliMUONTrackHitPattern.cxx:421 AliMUONTrackHitPattern.cxx:422 AliMUONTrackHitPattern.cxx:423 AliMUONTrackHitPattern.cxx:424 AliMUONTrackHitPattern.cxx:425 AliMUONTrackHitPattern.cxx:426 AliMUONTrackHitPattern.cxx:427 AliMUONTrackHitPattern.cxx:428 AliMUONTrackHitPattern.cxx:429 AliMUONTrackHitPattern.cxx:430 AliMUONTrackHitPattern.cxx:431 AliMUONTrackHitPattern.cxx:432 AliMUONTrackHitPattern.cxx:433 AliMUONTrackHitPattern.cxx:434 AliMUONTrackHitPattern.cxx:435 AliMUONTrackHitPattern.cxx:436 AliMUONTrackHitPattern.cxx:437 AliMUONTrackHitPattern.cxx:438 AliMUONTrackHitPattern.cxx:439 AliMUONTrackHitPattern.cxx:440 AliMUONTrackHitPattern.cxx:441 AliMUONTrackHitPattern.cxx:442 AliMUONTrackHitPattern.cxx:443 AliMUONTrackHitPattern.cxx:444 AliMUONTrackHitPattern.cxx:445 AliMUONTrackHitPattern.cxx:446 AliMUONTrackHitPattern.cxx:447 AliMUONTrackHitPattern.cxx:448 AliMUONTrackHitPattern.cxx:449 AliMUONTrackHitPattern.cxx:450 AliMUONTrackHitPattern.cxx:451 AliMUONTrackHitPattern.cxx:452 AliMUONTrackHitPattern.cxx:453 AliMUONTrackHitPattern.cxx:454 AliMUONTrackHitPattern.cxx:455 AliMUONTrackHitPattern.cxx:456 AliMUONTrackHitPattern.cxx:457 AliMUONTrackHitPattern.cxx:458 AliMUONTrackHitPattern.cxx:459 AliMUONTrackHitPattern.cxx:460 AliMUONTrackHitPattern.cxx:461 AliMUONTrackHitPattern.cxx:462 AliMUONTrackHitPattern.cxx:463 AliMUONTrackHitPattern.cxx:464 AliMUONTrackHitPattern.cxx:465 AliMUONTrackHitPattern.cxx:466 AliMUONTrackHitPattern.cxx:467 AliMUONTrackHitPattern.cxx:468 AliMUONTrackHitPattern.cxx:469 AliMUONTrackHitPattern.cxx:470 AliMUONTrackHitPattern.cxx:471 AliMUONTrackHitPattern.cxx:472 AliMUONTrackHitPattern.cxx:473 AliMUONTrackHitPattern.cxx:474 AliMUONTrackHitPattern.cxx:475 AliMUONTrackHitPattern.cxx:476 AliMUONTrackHitPattern.cxx:477 AliMUONTrackHitPattern.cxx:478 AliMUONTrackHitPattern.cxx:479 AliMUONTrackHitPattern.cxx:480 AliMUONTrackHitPattern.cxx:481 AliMUONTrackHitPattern.cxx:482 AliMUONTrackHitPattern.cxx:483 AliMUONTrackHitPattern.cxx:484 AliMUONTrackHitPattern.cxx:485 AliMUONTrackHitPattern.cxx:486 AliMUONTrackHitPattern.cxx:487 AliMUONTrackHitPattern.cxx:488 AliMUONTrackHitPattern.cxx:489 AliMUONTrackHitPattern.cxx:490 AliMUONTrackHitPattern.cxx:491 AliMUONTrackHitPattern.cxx:492 AliMUONTrackHitPattern.cxx:493 AliMUONTrackHitPattern.cxx:494 AliMUONTrackHitPattern.cxx:495 AliMUONTrackHitPattern.cxx:496 AliMUONTrackHitPattern.cxx:497 AliMUONTrackHitPattern.cxx:498 AliMUONTrackHitPattern.cxx:499 AliMUONTrackHitPattern.cxx:500 AliMUONTrackHitPattern.cxx:501 AliMUONTrackHitPattern.cxx:502 AliMUONTrackHitPattern.cxx:503 AliMUONTrackHitPattern.cxx:504 AliMUONTrackHitPattern.cxx:505 AliMUONTrackHitPattern.cxx:506 AliMUONTrackHitPattern.cxx:507 AliMUONTrackHitPattern.cxx:508 AliMUONTrackHitPattern.cxx:509 AliMUONTrackHitPattern.cxx:510 AliMUONTrackHitPattern.cxx:511 AliMUONTrackHitPattern.cxx:512 AliMUONTrackHitPattern.cxx:513 AliMUONTrackHitPattern.cxx:514 AliMUONTrackHitPattern.cxx:515 AliMUONTrackHitPattern.cxx:516 AliMUONTrackHitPattern.cxx:517 AliMUONTrackHitPattern.cxx:518 AliMUONTrackHitPattern.cxx:519 AliMUONTrackHitPattern.cxx:520 AliMUONTrackHitPattern.cxx:521 AliMUONTrackHitPattern.cxx:522 AliMUONTrackHitPattern.cxx:523 AliMUONTrackHitPattern.cxx:524 AliMUONTrackHitPattern.cxx:525 AliMUONTrackHitPattern.cxx:526 AliMUONTrackHitPattern.cxx:527 AliMUONTrackHitPattern.cxx:528 AliMUONTrackHitPattern.cxx:529 AliMUONTrackHitPattern.cxx:530 AliMUONTrackHitPattern.cxx:531 AliMUONTrackHitPattern.cxx:532 AliMUONTrackHitPattern.cxx:533 AliMUONTrackHitPattern.cxx:534 AliMUONTrackHitPattern.cxx:535 AliMUONTrackHitPattern.cxx:536 AliMUONTrackHitPattern.cxx:537 AliMUONTrackHitPattern.cxx:538 AliMUONTrackHitPattern.cxx:539 AliMUONTrackHitPattern.cxx:540 AliMUONTrackHitPattern.cxx:541 AliMUONTrackHitPattern.cxx:542 AliMUONTrackHitPattern.cxx:543 AliMUONTrackHitPattern.cxx:544 AliMUONTrackHitPattern.cxx:545 AliMUONTrackHitPattern.cxx:546 AliMUONTrackHitPattern.cxx:547 AliMUONTrackHitPattern.cxx:548 AliMUONTrackHitPattern.cxx:549 AliMUONTrackHitPattern.cxx:550 AliMUONTrackHitPattern.cxx:551 AliMUONTrackHitPattern.cxx:552 AliMUONTrackHitPattern.cxx:553 AliMUONTrackHitPattern.cxx:554 AliMUONTrackHitPattern.cxx:555 AliMUONTrackHitPattern.cxx:556 AliMUONTrackHitPattern.cxx:557 AliMUONTrackHitPattern.cxx:558 AliMUONTrackHitPattern.cxx:559 AliMUONTrackHitPattern.cxx:560 AliMUONTrackHitPattern.cxx:561 AliMUONTrackHitPattern.cxx:562 AliMUONTrackHitPattern.cxx:563 AliMUONTrackHitPattern.cxx:564 AliMUONTrackHitPattern.cxx:565 AliMUONTrackHitPattern.cxx:566 AliMUONTrackHitPattern.cxx:567 AliMUONTrackHitPattern.cxx:568 AliMUONTrackHitPattern.cxx:569 AliMUONTrackHitPattern.cxx:570 AliMUONTrackHitPattern.cxx:571 AliMUONTrackHitPattern.cxx:572 AliMUONTrackHitPattern.cxx:573 AliMUONTrackHitPattern.cxx:574 AliMUONTrackHitPattern.cxx:575 AliMUONTrackHitPattern.cxx:576 AliMUONTrackHitPattern.cxx:577 AliMUONTrackHitPattern.cxx:578 AliMUONTrackHitPattern.cxx:579 AliMUONTrackHitPattern.cxx:580 AliMUONTrackHitPattern.cxx:581 AliMUONTrackHitPattern.cxx:582 AliMUONTrackHitPattern.cxx:583 AliMUONTrackHitPattern.cxx:584 AliMUONTrackHitPattern.cxx:585 AliMUONTrackHitPattern.cxx:586 AliMUONTrackHitPattern.cxx:587 AliMUONTrackHitPattern.cxx:588 AliMUONTrackHitPattern.cxx:589 AliMUONTrackHitPattern.cxx:590 AliMUONTrackHitPattern.cxx:591 AliMUONTrackHitPattern.cxx:592 AliMUONTrackHitPattern.cxx:593 AliMUONTrackHitPattern.cxx:594 AliMUONTrackHitPattern.cxx:595 AliMUONTrackHitPattern.cxx:596 AliMUONTrackHitPattern.cxx:597 AliMUONTrackHitPattern.cxx:598 AliMUONTrackHitPattern.cxx:599 AliMUONTrackHitPattern.cxx:600 AliMUONTrackHitPattern.cxx:601 AliMUONTrackHitPattern.cxx:602 AliMUONTrackHitPattern.cxx:603 AliMUONTrackHitPattern.cxx:604 AliMUONTrackHitPattern.cxx:605 AliMUONTrackHitPattern.cxx:606 AliMUONTrackHitPattern.cxx:607 AliMUONTrackHitPattern.cxx:608 AliMUONTrackHitPattern.cxx:609 AliMUONTrackHitPattern.cxx:610 AliMUONTrackHitPattern.cxx:611 AliMUONTrackHitPattern.cxx:612 AliMUONTrackHitPattern.cxx:613 AliMUONTrackHitPattern.cxx:614 AliMUONTrackHitPattern.cxx:615 AliMUONTrackHitPattern.cxx:616 AliMUONTrackHitPattern.cxx:617 AliMUONTrackHitPattern.cxx:618 AliMUONTrackHitPattern.cxx:619 AliMUONTrackHitPattern.cxx:620 AliMUONTrackHitPattern.cxx:621 AliMUONTrackHitPattern.cxx:622 AliMUONTrackHitPattern.cxx:623 AliMUONTrackHitPattern.cxx:624 AliMUONTrackHitPattern.cxx:625 AliMUONTrackHitPattern.cxx:626 AliMUONTrackHitPattern.cxx:627 AliMUONTrackHitPattern.cxx:628 AliMUONTrackHitPattern.cxx:629 AliMUONTrackHitPattern.cxx:630 AliMUONTrackHitPattern.cxx:631 AliMUONTrackHitPattern.cxx:632 AliMUONTrackHitPattern.cxx:633 AliMUONTrackHitPattern.cxx:634 AliMUONTrackHitPattern.cxx:635 AliMUONTrackHitPattern.cxx:636 AliMUONTrackHitPattern.cxx:637 AliMUONTrackHitPattern.cxx:638 AliMUONTrackHitPattern.cxx:639 AliMUONTrackHitPattern.cxx:640 AliMUONTrackHitPattern.cxx:641 AliMUONTrackHitPattern.cxx:642 AliMUONTrackHitPattern.cxx:643 AliMUONTrackHitPattern.cxx:644 AliMUONTrackHitPattern.cxx:645 AliMUONTrackHitPattern.cxx:646 AliMUONTrackHitPattern.cxx:647 AliMUONTrackHitPattern.cxx:648 AliMUONTrackHitPattern.cxx:649 AliMUONTrackHitPattern.cxx:650 AliMUONTrackHitPattern.cxx:651 AliMUONTrackHitPattern.cxx:652 AliMUONTrackHitPattern.cxx:653 AliMUONTrackHitPattern.cxx:654 AliMUONTrackHitPattern.cxx:655 AliMUONTrackHitPattern.cxx:656 AliMUONTrackHitPattern.cxx:657 AliMUONTrackHitPattern.cxx:658 AliMUONTrackHitPattern.cxx:659 AliMUONTrackHitPattern.cxx:660 AliMUONTrackHitPattern.cxx:661 AliMUONTrackHitPattern.cxx:662 AliMUONTrackHitPattern.cxx:663 AliMUONTrackHitPattern.cxx:664 AliMUONTrackHitPattern.cxx:665 AliMUONTrackHitPattern.cxx:666 AliMUONTrackHitPattern.cxx:667 AliMUONTrackHitPattern.cxx:668 AliMUONTrackHitPattern.cxx:669 AliMUONTrackHitPattern.cxx:670 AliMUONTrackHitPattern.cxx:671 AliMUONTrackHitPattern.cxx:672 AliMUONTrackHitPattern.cxx:673 AliMUONTrackHitPattern.cxx:674 AliMUONTrackHitPattern.cxx:675 AliMUONTrackHitPattern.cxx:676 AliMUONTrackHitPattern.cxx:677 AliMUONTrackHitPattern.cxx:678 AliMUONTrackHitPattern.cxx:679 AliMUONTrackHitPattern.cxx:680 AliMUONTrackHitPattern.cxx:681 AliMUONTrackHitPattern.cxx:682 AliMUONTrackHitPattern.cxx:683 AliMUONTrackHitPattern.cxx:684 AliMUONTrackHitPattern.cxx:685 AliMUONTrackHitPattern.cxx:686 AliMUONTrackHitPattern.cxx:687 AliMUONTrackHitPattern.cxx:688 AliMUONTrackHitPattern.cxx:689 AliMUONTrackHitPattern.cxx:690 AliMUONTrackHitPattern.cxx:691 AliMUONTrackHitPattern.cxx:692 AliMUONTrackHitPattern.cxx:693 AliMUONTrackHitPattern.cxx:694 AliMUONTrackHitPattern.cxx:695 AliMUONTrackHitPattern.cxx:696 AliMUONTrackHitPattern.cxx:697 AliMUONTrackHitPattern.cxx:698 AliMUONTrackHitPattern.cxx:699 AliMUONTrackHitPattern.cxx:700 AliMUONTrackHitPattern.cxx:701 AliMUONTrackHitPattern.cxx:702 AliMUONTrackHitPattern.cxx:703 AliMUONTrackHitPattern.cxx:704 AliMUONTrackHitPattern.cxx:705 AliMUONTrackHitPattern.cxx:706 AliMUONTrackHitPattern.cxx:707 AliMUONTrackHitPattern.cxx:708 AliMUONTrackHitPattern.cxx:709 AliMUONTrackHitPattern.cxx:710 AliMUONTrackHitPattern.cxx:711 AliMUONTrackHitPattern.cxx:712 AliMUONTrackHitPattern.cxx:713 AliMUONTrackHitPattern.cxx:714 AliMUONTrackHitPattern.cxx:715 AliMUONTrackHitPattern.cxx:716 AliMUONTrackHitPattern.cxx:717 AliMUONTrackHitPattern.cxx:718 AliMUONTrackHitPattern.cxx:719 AliMUONTrackHitPattern.cxx:720 AliMUONTrackHitPattern.cxx:721 AliMUONTrackHitPattern.cxx:722 AliMUONTrackHitPattern.cxx:723 AliMUONTrackHitPattern.cxx:724 AliMUONTrackHitPattern.cxx:725 AliMUONTrackHitPattern.cxx:726 AliMUONTrackHitPattern.cxx:727 AliMUONTrackHitPattern.cxx:728 AliMUONTrackHitPattern.cxx:729 AliMUONTrackHitPattern.cxx:730 AliMUONTrackHitPattern.cxx:731 AliMUONTrackHitPattern.cxx:732 AliMUONTrackHitPattern.cxx:733 AliMUONTrackHitPattern.cxx:734 AliMUONTrackHitPattern.cxx:735 AliMUONTrackHitPattern.cxx:736 AliMUONTrackHitPattern.cxx:737 AliMUONTrackHitPattern.cxx:738 AliMUONTrackHitPattern.cxx:739 AliMUONTrackHitPattern.cxx:740 AliMUONTrackHitPattern.cxx:741 AliMUONTrackHitPattern.cxx:742 AliMUONTrackHitPattern.cxx:743 AliMUONTrackHitPattern.cxx:744 AliMUONTrackHitPattern.cxx:745 AliMUONTrackHitPattern.cxx:746 AliMUONTrackHitPattern.cxx:747 AliMUONTrackHitPattern.cxx:748 AliMUONTrackHitPattern.cxx:749 AliMUONTrackHitPattern.cxx:750 AliMUONTrackHitPattern.cxx:751 AliMUONTrackHitPattern.cxx:752 AliMUONTrackHitPattern.cxx:753 AliMUONTrackHitPattern.cxx:754 AliMUONTrackHitPattern.cxx:755 AliMUONTrackHitPattern.cxx:756 AliMUONTrackHitPattern.cxx:757 AliMUONTrackHitPattern.cxx:758 AliMUONTrackHitPattern.cxx:759 AliMUONTrackHitPattern.cxx:760 AliMUONTrackHitPattern.cxx:761 AliMUONTrackHitPattern.cxx:762 AliMUONTrackHitPattern.cxx:763 AliMUONTrackHitPattern.cxx:764 AliMUONTrackHitPattern.cxx:765 AliMUONTrackHitPattern.cxx:766 AliMUONTrackHitPattern.cxx:767 AliMUONTrackHitPattern.cxx:768 AliMUONTrackHitPattern.cxx:769 AliMUONTrackHitPattern.cxx:770 AliMUONTrackHitPattern.cxx:771 AliMUONTrackHitPattern.cxx:772 AliMUONTrackHitPattern.cxx:773 AliMUONTrackHitPattern.cxx:774 AliMUONTrackHitPattern.cxx:775 AliMUONTrackHitPattern.cxx:776 AliMUONTrackHitPattern.cxx:777 AliMUONTrackHitPattern.cxx:778 AliMUONTrackHitPattern.cxx:779 AliMUONTrackHitPattern.cxx:780 AliMUONTrackHitPattern.cxx:781 AliMUONTrackHitPattern.cxx:782 AliMUONTrackHitPattern.cxx:783 AliMUONTrackHitPattern.cxx:784 AliMUONTrackHitPattern.cxx:785 AliMUONTrackHitPattern.cxx:786 AliMUONTrackHitPattern.cxx:787 AliMUONTrackHitPattern.cxx:788 AliMUONTrackHitPattern.cxx:789 AliMUONTrackHitPattern.cxx:790 AliMUONTrackHitPattern.cxx:791 AliMUONTrackHitPattern.cxx:792 AliMUONTrackHitPattern.cxx:793 AliMUONTrackHitPattern.cxx:794 AliMUONTrackHitPattern.cxx:795 AliMUONTrackHitPattern.cxx:796 AliMUONTrackHitPattern.cxx:797 AliMUONTrackHitPattern.cxx:798 AliMUONTrackHitPattern.cxx:799 AliMUONTrackHitPattern.cxx:800 AliMUONTrackHitPattern.cxx:801 AliMUONTrackHitPattern.cxx:802 AliMUONTrackHitPattern.cxx:803 AliMUONTrackHitPattern.cxx:804 AliMUONTrackHitPattern.cxx:805 AliMUONTrackHitPattern.cxx:806 AliMUONTrackHitPattern.cxx:807 AliMUONTrackHitPattern.cxx:808 AliMUONTrackHitPattern.cxx:809 AliMUONTrackHitPattern.cxx:810 AliMUONTrackHitPattern.cxx:811 AliMUONTrackHitPattern.cxx:812 AliMUONTrackHitPattern.cxx:813 AliMUONTrackHitPattern.cxx:814 AliMUONTrackHitPattern.cxx:815 AliMUONTrackHitPattern.cxx:816 AliMUONTrackHitPattern.cxx:817 AliMUONTrackHitPattern.cxx:818 AliMUONTrackHitPattern.cxx:819 AliMUONTrackHitPattern.cxx:820 AliMUONTrackHitPattern.cxx:821 AliMUONTrackHitPattern.cxx:822 AliMUONTrackHitPattern.cxx:823 AliMUONTrackHitPattern.cxx:824 AliMUONTrackHitPattern.cxx:825 AliMUONTrackHitPattern.cxx:826 AliMUONTrackHitPattern.cxx:827 AliMUONTrackHitPattern.cxx:828 AliMUONTrackHitPattern.cxx:829 AliMUONTrackHitPattern.cxx:830 AliMUONTrackHitPattern.cxx:831 AliMUONTrackHitPattern.cxx:832 AliMUONTrackHitPattern.cxx:833 AliMUONTrackHitPattern.cxx:834 AliMUONTrackHitPattern.cxx:835 AliMUONTrackHitPattern.cxx:836 AliMUONTrackHitPattern.cxx:837 AliMUONTrackHitPattern.cxx:838 AliMUONTrackHitPattern.cxx:839 AliMUONTrackHitPattern.cxx:840 AliMUONTrackHitPattern.cxx:841 AliMUONTrackHitPattern.cxx:842 AliMUONTrackHitPattern.cxx:843 AliMUONTrackHitPattern.cxx:844 AliMUONTrackHitPattern.cxx:845 AliMUONTrackHitPattern.cxx:846 AliMUONTrackHitPattern.cxx:847 AliMUONTrackHitPattern.cxx:848 AliMUONTrackHitPattern.cxx:849 AliMUONTrackHitPattern.cxx:850 AliMUONTrackHitPattern.cxx:851 AliMUONTrackHitPattern.cxx:852 AliMUONTrackHitPattern.cxx:853 AliMUONTrackHitPattern.cxx:854 AliMUONTrackHitPattern.cxx:855 AliMUONTrackHitPattern.cxx:856 AliMUONTrackHitPattern.cxx:857 AliMUONTrackHitPattern.cxx:858 AliMUONTrackHitPattern.cxx:859 AliMUONTrackHitPattern.cxx:860 AliMUONTrackHitPattern.cxx:861 AliMUONTrackHitPattern.cxx:862 AliMUONTrackHitPattern.cxx:863 AliMUONTrackHitPattern.cxx:864 AliMUONTrackHitPattern.cxx:865 AliMUONTrackHitPattern.cxx:866 AliMUONTrackHitPattern.cxx:867 AliMUONTrackHitPattern.cxx:868 AliMUONTrackHitPattern.cxx:869 AliMUONTrackHitPattern.cxx:870 AliMUONTrackHitPattern.cxx:871 AliMUONTrackHitPattern.cxx:872 AliMUONTrackHitPattern.cxx:873 AliMUONTrackHitPattern.cxx:874 AliMUONTrackHitPattern.cxx:875 AliMUONTrackHitPattern.cxx:876 AliMUONTrackHitPattern.cxx:877 AliMUONTrackHitPattern.cxx:878 AliMUONTrackHitPattern.cxx:879 AliMUONTrackHitPattern.cxx:880 AliMUONTrackHitPattern.cxx:881 AliMUONTrackHitPattern.cxx:882 AliMUONTrackHitPattern.cxx:883 AliMUONTrackHitPattern.cxx:884 AliMUONTrackHitPattern.cxx:885 AliMUONTrackHitPattern.cxx:886 AliMUONTrackHitPattern.cxx:887 AliMUONTrackHitPattern.cxx:888 AliMUONTrackHitPattern.cxx:889 AliMUONTrackHitPattern.cxx:890 AliMUONTrackHitPattern.cxx:891 AliMUONTrackHitPattern.cxx:892 AliMUONTrackHitPattern.cxx:893 AliMUONTrackHitPattern.cxx:894 AliMUONTrackHitPattern.cxx:895 AliMUONTrackHitPattern.cxx:896 AliMUONTrackHitPattern.cxx:897 AliMUONTrackHitPattern.cxx:898 AliMUONTrackHitPattern.cxx:899 AliMUONTrackHitPattern.cxx:900 AliMUONTrackHitPattern.cxx:901 AliMUONTrackHitPattern.cxx:902 AliMUONTrackHitPattern.cxx:903 AliMUONTrackHitPattern.cxx:904 AliMUONTrackHitPattern.cxx:905 AliMUONTrackHitPattern.cxx:906 AliMUONTrackHitPattern.cxx:907 AliMUONTrackHitPattern.cxx:908 AliMUONTrackHitPattern.cxx:909 AliMUONTrackHitPattern.cxx:910 AliMUONTrackHitPattern.cxx:911 AliMUONTrackHitPattern.cxx:912 AliMUONTrackHitPattern.cxx:913 AliMUONTrackHitPattern.cxx:914 AliMUONTrackHitPattern.cxx:915 AliMUONTrackHitPattern.cxx:916 AliMUONTrackHitPattern.cxx:917 AliMUONTrackHitPattern.cxx:918 AliMUONTrackHitPattern.cxx:919 AliMUONTrackHitPattern.cxx:920 AliMUONTrackHitPattern.cxx:921 AliMUONTrackHitPattern.cxx:922 AliMUONTrackHitPattern.cxx:923 AliMUONTrackHitPattern.cxx:924 AliMUONTrackHitPattern.cxx:925 AliMUONTrackHitPattern.cxx:926 AliMUONTrackHitPattern.cxx:927 AliMUONTrackHitPattern.cxx:928 AliMUONTrackHitPattern.cxx:929 AliMUONTrackHitPattern.cxx:930 AliMUONTrackHitPattern.cxx:931 AliMUONTrackHitPattern.cxx:932 AliMUONTrackHitPattern.cxx:933 AliMUONTrackHitPattern.cxx:934 AliMUONTrackHitPattern.cxx:935 AliMUONTrackHitPattern.cxx:936 AliMUONTrackHitPattern.cxx:937 AliMUONTrackHitPattern.cxx:938 AliMUONTrackHitPattern.cxx:939 AliMUONTrackHitPattern.cxx:940 AliMUONTrackHitPattern.cxx:941 AliMUONTrackHitPattern.cxx:942 AliMUONTrackHitPattern.cxx:943 AliMUONTrackHitPattern.cxx:944 AliMUONTrackHitPattern.cxx:945 AliMUONTrackHitPattern.cxx:946 AliMUONTrackHitPattern.cxx:947 AliMUONTrackHitPattern.cxx:948 AliMUONTrackHitPattern.cxx:949 AliMUONTrackHitPattern.cxx:950 AliMUONTrackHitPattern.cxx:951 AliMUONTrackHitPattern.cxx:952 AliMUONTrackHitPattern.cxx:953 AliMUONTrackHitPattern.cxx:954 AliMUONTrackHitPattern.cxx:955 AliMUONTrackHitPattern.cxx:956 AliMUONTrackHitPattern.cxx:957 AliMUONTrackHitPattern.cxx:958 AliMUONTrackHitPattern.cxx:959 AliMUONTrackHitPattern.cxx:960 AliMUONTrackHitPattern.cxx:961 AliMUONTrackHitPattern.cxx:962 AliMUONTrackHitPattern.cxx:963 AliMUONTrackHitPattern.cxx:964 AliMUONTrackHitPattern.cxx:965 AliMUONTrackHitPattern.cxx:966 AliMUONTrackHitPattern.cxx:967 AliMUONTrackHitPattern.cxx:968 AliMUONTrackHitPattern.cxx:969 AliMUONTrackHitPattern.cxx:970 AliMUONTrackHitPattern.cxx:971 AliMUONTrackHitPattern.cxx:972 AliMUONTrackHitPattern.cxx:973 AliMUONTrackHitPattern.cxx:974 AliMUONTrackHitPattern.cxx:975 AliMUONTrackHitPattern.cxx:976 AliMUONTrackHitPattern.cxx:977 AliMUONTrackHitPattern.cxx:978 AliMUONTrackHitPattern.cxx:979 AliMUONTrackHitPattern.cxx:980 AliMUONTrackHitPattern.cxx:981 AliMUONTrackHitPattern.cxx:982 AliMUONTrackHitPattern.cxx:983 AliMUONTrackHitPattern.cxx:984 AliMUONTrackHitPattern.cxx:985 AliMUONTrackHitPattern.cxx:986 AliMUONTrackHitPattern.cxx:987 AliMUONTrackHitPattern.cxx:988 AliMUONTrackHitPattern.cxx:989 AliMUONTrackHitPattern.cxx:990 AliMUONTrackHitPattern.cxx:991 AliMUONTrackHitPattern.cxx:992 AliMUONTrackHitPattern.cxx:993 AliMUONTrackHitPattern.cxx:994 AliMUONTrackHitPattern.cxx:995 AliMUONTrackHitPattern.cxx:996 AliMUONTrackHitPattern.cxx:997 AliMUONTrackHitPattern.cxx:998 AliMUONTrackHitPattern.cxx:999 AliMUONTrackHitPattern.cxx:1000 AliMUONTrackHitPattern.cxx:1001 AliMUONTrackHitPattern.cxx:1002 AliMUONTrackHitPattern.cxx:1003 AliMUONTrackHitPattern.cxx:1004 AliMUONTrackHitPattern.cxx:1005 AliMUONTrackHitPattern.cxx:1006 AliMUONTrackHitPattern.cxx:1007 AliMUONTrackHitPattern.cxx:1008 AliMUONTrackHitPattern.cxx:1009 AliMUONTrackHitPattern.cxx:1010 AliMUONTrackHitPattern.cxx:1011 AliMUONTrackHitPattern.cxx:1012 AliMUONTrackHitPattern.cxx:1013 AliMUONTrackHitPattern.cxx:1014 AliMUONTrackHitPattern.cxx:1015 AliMUONTrackHitPattern.cxx:1016 AliMUONTrackHitPattern.cxx:1017 AliMUONTrackHitPattern.cxx:1018 AliMUONTrackHitPattern.cxx:1019 AliMUONTrackHitPattern.cxx:1020 AliMUONTrackHitPattern.cxx:1021 AliMUONTrackHitPattern.cxx:1022 AliMUONTrackHitPattern.cxx:1023 AliMUONTrackHitPattern.cxx:1024 AliMUONTrackHitPattern.cxx:1025 AliMUONTrackHitPattern.cxx:1026 AliMUONTrackHitPattern.cxx:1027 AliMUONTrackHitPattern.cxx:1028 AliMUONTrackHitPattern.cxx:1029 AliMUONTrackHitPattern.cxx:1030 AliMUONTrackHitPattern.cxx:1031 AliMUONTrackHitPattern.cxx:1032 AliMUONTrackHitPattern.cxx:1033 AliMUONTrackHitPattern.cxx:1034 AliMUONTrackHitPattern.cxx:1035 AliMUONTrackHitPattern.cxx:1036 AliMUONTrackHitPattern.cxx:1037 AliMUONTrackHitPattern.cxx:1038 AliMUONTrackHitPattern.cxx:1039 AliMUONTrackHitPattern.cxx:1040 AliMUONTrackHitPattern.cxx:1041 AliMUONTrackHitPattern.cxx:1042 AliMUONTrackHitPattern.cxx:1043 AliMUONTrackHitPattern.cxx:1044 AliMUONTrackHitPattern.cxx:1045 AliMUONTrackHitPattern.cxx:1046 AliMUONTrackHitPattern.cxx:1047 AliMUONTrackHitPattern.cxx:1048 AliMUONTrackHitPattern.cxx:1049 AliMUONTrackHitPattern.cxx:1050 AliMUONTrackHitPattern.cxx:1051 AliMUONTrackHitPattern.cxx:1052 AliMUONTrackHitPattern.cxx:1053 AliMUONTrackHitPattern.cxx:1054 AliMUONTrackHitPattern.cxx:1055 AliMUONTrackHitPattern.cxx:1056 AliMUONTrackHitPattern.cxx:1057 AliMUONTrackHitPattern.cxx:1058 AliMUONTrackHitPattern.cxx:1059 AliMUONTrackHitPattern.cxx:1060 AliMUONTrackHitPattern.cxx:1061 AliMUONTrackHitPattern.cxx:1062 AliMUONTrackHitPattern.cxx:1063 AliMUONTrackHitPattern.cxx:1064 AliMUONTrackHitPattern.cxx:1065 AliMUONTrackHitPattern.cxx:1066 AliMUONTrackHitPattern.cxx:1067 AliMUONTrackHitPattern.cxx:1068 AliMUONTrackHitPattern.cxx:1069 AliMUONTrackHitPattern.cxx:1070 AliMUONTrackHitPattern.cxx:1071 AliMUONTrackHitPattern.cxx:1072 AliMUONTrackHitPattern.cxx:1073 AliMUONTrackHitPattern.cxx:1074 AliMUONTrackHitPattern.cxx:1075 AliMUONTrackHitPattern.cxx:1076 AliMUONTrackHitPattern.cxx:1077 AliMUONTrackHitPattern.cxx:1078 AliMUONTrackHitPattern.cxx:1079 AliMUONTrackHitPattern.cxx:1080 AliMUONTrackHitPattern.cxx:1081 AliMUONTrackHitPattern.cxx:1082 AliMUONTrackHitPattern.cxx:1083 AliMUONTrackHitPattern.cxx:1084 AliMUONTrackHitPattern.cxx:1085 AliMUONTrackHitPattern.cxx:1086 AliMUONTrackHitPattern.cxx:1087 AliMUONTrackHitPattern.cxx:1088 AliMUONTrackHitPattern.cxx:1089 AliMUONTrackHitPattern.cxx:1090 AliMUONTrackHitPattern.cxx:1091 AliMUONTrackHitPattern.cxx:1092 AliMUONTrackHitPattern.cxx:1093 AliMUONTrackHitPattern.cxx:1094 AliMUONTrackHitPattern.cxx:1095 AliMUONTrackHitPattern.cxx:1096 AliMUONTrackHitPattern.cxx:1097 AliMUONTrackHitPattern.cxx:1098 AliMUONTrackHitPattern.cxx:1099 AliMUONTrackHitPattern.cxx:1100 AliMUONTrackHitPattern.cxx:1101 AliMUONTrackHitPattern.cxx:1102 AliMUONTrackHitPattern.cxx:1103 AliMUONTrackHitPattern.cxx:1104 AliMUONTrackHitPattern.cxx:1105 AliMUONTrackHitPattern.cxx:1106 AliMUONTrackHitPattern.cxx:1107 AliMUONTrackHitPattern.cxx:1108 AliMUONTrackHitPattern.cxx:1109 AliMUONTrackHitPattern.cxx:1110 AliMUONTrackHitPattern.cxx:1111 AliMUONTrackHitPattern.cxx:1112 AliMUONTrackHitPattern.cxx:1113 AliMUONTrackHitPattern.cxx:1114 AliMUONTrackHitPattern.cxx:1115 AliMUONTrackHitPattern.cxx:1116 AliMUONTrackHitPattern.cxx:1117 AliMUONTrackHitPattern.cxx:1118 AliMUONTrackHitPattern.cxx:1119 AliMUONTrackHitPattern.cxx:1120 AliMUONTrackHitPattern.cxx:1121 AliMUONTrackHitPattern.cxx:1122 AliMUONTrackHitPattern.cxx:1123 AliMUONTrackHitPattern.cxx:1124 AliMUONTrackHitPattern.cxx:1125 AliMUONTrackHitPattern.cxx:1126 AliMUONTrackHitPattern.cxx:1127 AliMUONTrackHitPattern.cxx:1128 AliMUONTrackHitPattern.cxx:1129 AliMUONTrackHitPattern.cxx:1130 AliMUONTrackHitPattern.cxx:1131 AliMUONTrackHitPattern.cxx:1132 AliMUONTrackHitPattern.cxx:1133 AliMUONTrackHitPattern.cxx:1134 AliMUONTrackHitPattern.cxx:1135 AliMUONTrackHitPattern.cxx:1136 AliMUONTrackHitPattern.cxx:1137 AliMUONTrackHitPattern.cxx:1138 AliMUONTrackHitPattern.cxx:1139 AliMUONTrackHitPattern.cxx:1140 AliMUONTrackHitPattern.cxx:1141 AliMUONTrackHitPattern.cxx:1142 AliMUONTrackHitPattern.cxx:1143 AliMUONTrackHitPattern.cxx:1144 AliMUONTrackHitPattern.cxx:1145 AliMUONTrackHitPattern.cxx:1146 AliMUONTrackHitPattern.cxx:1147 AliMUONTrackHitPattern.cxx:1148 AliMUONTrackHitPattern.cxx:1149 AliMUONTrackHitPattern.cxx:1150 AliMUONTrackHitPattern.cxx:1151 AliMUONTrackHitPattern.cxx:1152 AliMUONTrackHitPattern.cxx:1153 AliMUONTrackHitPattern.cxx:1154 AliMUONTrackHitPattern.cxx:1155 AliMUONTrackHitPattern.cxx:1156 AliMUONTrackHitPattern.cxx:1157 AliMUONTrackHitPattern.cxx:1158 AliMUONTrackHitPattern.cxx:1159 AliMUONTrackHitPattern.cxx:1160 AliMUONTrackHitPattern.cxx:1161 AliMUONTrackHitPattern.cxx:1162 AliMUONTrackHitPattern.cxx:1163 AliMUONTrackHitPattern.cxx:1164 AliMUONTrackHitPattern.cxx:1165 AliMUONTrackHitPattern.cxx:1166 AliMUONTrackHitPattern.cxx:1167 AliMUONTrackHitPattern.cxx:1168