ROOT logo
/**************************************************************************
 * Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
 *                                                                        *
 * Author: The ALICE Off-line Project.                                    *
 * Contributors are mentioned in the code where appropriate.              *
 *                                                                        *
 * Permission to use, copy, modify and distribute this software and its   *
 * documentation strictly for non-commercial purposes is hereby granted   *
 * without fee, provided that the above copyright notice appears in all   *
 * copies and that both the copyright notice and this permission notice   *
 * appear in the supporting documentation. The authors make no claims     *
 * about the suitability of this software for any purpose. It is          *
 * provided "as is" without express or implied warranty.                  *
 **************************************************************************/

//====================================================================================================================================================
//
//      Description of an ALICE muon forward track pair, i.e. a pair of AliMuonForwardTrack objects
//
//      Contact author: antonio.uras@cern.ch
//
//====================================================================================================================================================

#include "AliLog.h"
#include "AliMUONTrackParam.h"
#include "TParticle.h"
#include "AliMuonForwardTrack.h"
#include "AliMUONTrackExtrap.h"
#include "TClonesArray.h"
#include "TDatabasePDG.h"
#include "TLorentzVector.h"
#include "TRandom.h"
#include "AliMuonForwardTrackPair.h"

ClassImp(AliMuonForwardTrackPair)

//====================================================================================================================================================

AliMuonForwardTrackPair::AliMuonForwardTrackPair():
  TObject(),
  fMuonForwardTracks(0),
  fKinemMC(0,0,0,0),
  fKinem(0,0,0,0),
  fIsKinemSet(kFALSE),
  fXPointOfClosestApproach(9999),
  fYPointOfClosestApproach(9999),
  fZPointOfClosestApproach(9999)
{

  // default constructor

  fMuonForwardTracks = new TClonesArray("AliMuonForwardTrack", 2);
  fMuonForwardTracks -> SetOwner(kTRUE);
  
}

//====================================================================================================================================================

AliMuonForwardTrackPair::AliMuonForwardTrackPair(AliMuonForwardTrack *track0, AliMuonForwardTrack *track1):
  TObject(),
  fMuonForwardTracks(0),
  fKinemMC(0,0,0,0),
  fKinem(0,0,0,0),
  fIsKinemSet(kFALSE),
  fXPointOfClosestApproach(9999),
  fYPointOfClosestApproach(9999),
  fZPointOfClosestApproach(9999)
{

  fMuonForwardTracks = new TClonesArray("AliMuonForwardTrack", 2);
  fMuonForwardTracks->SetOwner(kTRUE);
  new ((*fMuonForwardTracks)[0]) AliMuonForwardTrack(*track0);
  new ((*fMuonForwardTracks)[1]) AliMuonForwardTrack(*track1);

  SetKinemMC();
  SetPointOfClosestApproach();

}

//====================================================================================================================================================

AliMuonForwardTrackPair::AliMuonForwardTrackPair(const AliMuonForwardTrackPair& trackPair): 
  TObject(trackPair),
  fMuonForwardTracks(NULL),
  fKinemMC(trackPair.fKinemMC),
  fKinem(trackPair.fKinem),
  fIsKinemSet(trackPair.fIsKinemSet),
  fXPointOfClosestApproach(trackPair.fXPointOfClosestApproach),
  fYPointOfClosestApproach(trackPair.fYPointOfClosestApproach),
  fZPointOfClosestApproach(trackPair.fZPointOfClosestApproach)
{

  // copy constructor
  fMuonForwardTracks = new TClonesArray(*(trackPair.fMuonForwardTracks));
  fMuonForwardTracks -> SetOwner(kTRUE);

}

//====================================================================================================================================================

AliMuonForwardTrackPair& AliMuonForwardTrackPair::operator=(const AliMuonForwardTrackPair& trackPair) {

  // Asignment operator

  // check assignement to self
  if (this == &trackPair) return *this;

  // base class assignement
  AliMuonForwardTrackPair::operator=(trackPair);
  
  // clear memory
  Clear("");
  
  fMuonForwardTracks      = new TClonesArray(*(trackPair.fMuonForwardTracks));
  fMuonForwardTracks->SetOwner(kTRUE);
  
  fKinemMC = trackPair.fKinemMC;
  fKinem = trackPair.fKinem;
  fIsKinemSet = trackPair.fIsKinemSet;
  fXPointOfClosestApproach = trackPair.fXPointOfClosestApproach;
  fYPointOfClosestApproach = trackPair.fYPointOfClosestApproach;
  fZPointOfClosestApproach = trackPair.fZPointOfClosestApproach;

  return *this;

}

//====================================================================================================================================================

Double_t AliMuonForwardTrackPair::GetWeightedOffset(Double_t x, Double_t y, Double_t z) {

  Double_t weightedOffset[2]={0};

  weightedOffset[0] = GetTrack(0)->GetWeightedOffset(x, y, z);
  weightedOffset[1] = GetTrack(1)->GetWeightedOffset(x, y, z);

  Double_t weightedOffsetDimuon = TMath::Sqrt(0.5 * (weightedOffset[0]*weightedOffset[0] + weightedOffset[1]*weightedOffset[1]));

  return weightedOffsetDimuon;

}

//====================================================================================================================================================

Double_t AliMuonForwardTrackPair::GetWeightedOffsetAtPCA() {

  return GetWeightedOffset(fXPointOfClosestApproach, fYPointOfClosestApproach, fZPointOfClosestApproach);

}

//====================================================================================================================================================

Double_t AliMuonForwardTrackPair::GetPCAQuality() {

  Double_t wOffset_1 = GetTrack(0)->GetWeightedOffset(fXPointOfClosestApproach, fYPointOfClosestApproach, fZPointOfClosestApproach);
  Double_t wOffset_2 = GetTrack(1)->GetWeightedOffset(fXPointOfClosestApproach, fYPointOfClosestApproach, fZPointOfClosestApproach);
  
  Double_t f1 = TMath::Exp(-0.5 * wOffset_1);
  Double_t f2 = TMath::Exp(-0.5 * wOffset_2);

  if (f1+f2 > 0.) return (2.*f1*f2)/(f1+f2); 
  else return 0.;
  
}

//====================================================================================================================================================

Double_t AliMuonForwardTrackPair::GetMassWithoutMFT(Double_t x, Double_t y, Double_t z, Int_t nClusters) {

  Int_t idCluster[2] = {0};
  if (nClusters>0) {
    idCluster[0] = GetTrack(0)->GetNMUONClusters() - nClusters;
    idCluster[1] = GetTrack(1)->GetNMUONClusters() - nClusters;
  }
  if (idCluster[0]<0) idCluster[0] = 0;
  if (idCluster[1]<0) idCluster[1] = 0;

  AliMUONTrackParam *param0 = GetTrack(0)->GetTrackParamAtMUONCluster(idCluster[0]);
  AliMUONTrackParam *param1 = GetTrack(1)->GetTrackParamAtMUONCluster(idCluster[1]);

  AliDebug(2, Form("MUON before extrap: 1st muon = (%f, %f, %f) 2nd muon = (%f, %f, %f)", 
		   param0->Px(), param0->Py(), param0->Pz(), param1->Px(), param1->Py(), param1->Pz()));

  AliDebug(2, Form("Extrapolating 1st muon from z = %f to z = %f", param0->GetZ(), z));
  AliMUONTrackExtrap::ExtrapToVertex(param0, x, y, z, 0., 0.);   // this should reproduce what is done in AliMUONESDInterface::MUONToESD(...) 
  AliDebug(2, Form("Extrapolating 2nd muon from z = %f to z = %f", param1->GetZ(), z));
  AliMUONTrackExtrap::ExtrapToVertex(param1, x, y, z, 0., 0.);   // this should reproduce what is done in AliMUONESDInterface::MUONToESD(...) 

  AliDebug(2, Form("MUON after extrap: 1st muon = (%f, %f, %f) 2nd muon = (%f, %f, %f)", 
		   param0->Px(), param0->Py(), param0->Pz(), param1->Px(), param1->Py(), param1->Pz()));

  Double_t momentum[2] = {0}; 

  momentum[0] = param0->P();
  momentum[1] = param1->P();

  Double_t mMu = TDatabasePDG::Instance()->GetParticle("mu-")->Mass();

  TLorentzVector dimu;

  dimu.SetE(TMath::Sqrt(mMu*mMu + momentum[0]*momentum[0]) + TMath::Sqrt(mMu*mMu + momentum[1]*momentum[1]));

  dimu.SetPx(param0->Px() + param1->Px());
  dimu.SetPy(param0->Py() + param1->Py());
  dimu.SetPz(param0->Pz() + param1->Pz());

  return dimu.M();

}

//====================================================================================================================================================

void AliMuonForwardTrackPair::SetKinemMC() {

  if ( !(GetTrack(0)->GetMCTrackRef()) || !(GetTrack(1)->GetMCTrackRef()) ) return;

  AliDebug(2, Form("MC: 1st muon = (%f, %f, %f) 2nd muon = (%f, %f, %f)", 
		   GetTrack(0)->GetMCTrackRef()->Px(), GetTrack(0)->GetMCTrackRef()->Py(), GetTrack(0)->GetMCTrackRef()->Pz(),
		   GetTrack(1)->GetMCTrackRef()->Px(), GetTrack(1)->GetMCTrackRef()->Py(), GetTrack(1)->GetMCTrackRef()->Pz()));

  fKinemMC.SetE(GetTrack(0)->GetMCTrackRef()->Energy() + GetTrack(1)->GetMCTrackRef()->Energy());
  
  fKinemMC.SetPx(GetTrack(0)->GetMCTrackRef()->Px() + GetTrack(1)->GetMCTrackRef()->Px());
  fKinemMC.SetPy(GetTrack(0)->GetMCTrackRef()->Py() + GetTrack(1)->GetMCTrackRef()->Py());
  fKinemMC.SetPz(GetTrack(0)->GetMCTrackRef()->Pz() + GetTrack(1)->GetMCTrackRef()->Pz());

}

//====================================================================================================================================================

void AliMuonForwardTrackPair::SetKinem(Double_t z, Int_t nClusters) {

//   if (!fMuonForwardTracks) return kFALSE;
//   if (!fMuonForwardTracks->At(0) || !fMuonForwardTracks->At(1)) return kFALSE;

  Int_t idCluster[2] = {0};
  if (nClusters>0) {
    idCluster[0] = GetTrack(0)->GetNMFTClusters() - nClusters;
    idCluster[1] = GetTrack(1)->GetNMFTClusters() - nClusters;
  }
  if (idCluster[0]<0) idCluster[0] = 0;
  if (idCluster[1]<0) idCluster[1] = 0;

  Double_t momentum[2] = {0};
  
  AliMUONTrackParam *param0 = GetTrack(0)->GetTrackParamAtMFTCluster(idCluster[0]);
  AliMUONTrackParam *param1 = GetTrack(1)->GetTrackParamAtMFTCluster(idCluster[1]);

  AliDebug(2, Form("MFT before extrap: 1st muon = (%f, %f, %f) 2nd muon = (%f, %f, %f)", 
		   param0->Px(), param0->Py(), param0->Pz(), param1->Px(), param1->Py(), param1->Pz()));

  if (TMath::Abs(z)<1e6) {
    AliDebug(2, Form("Extrapolating 1st muon from z = %f to z = %f", param0->GetZ(), z));
    AliMUONTrackExtrap::ExtrapToZCov(param0, z);
    AliDebug(2, Form("Extrapolating 2nd muon from z = %f to z = %f", param1->GetZ(), z));
    AliMUONTrackExtrap::ExtrapToZCov(param1, z);
  }

  AliDebug(2, Form("MFT after extrap: 1st muon = (%f, %f, %f) 2nd muon = (%f, %f, %f)", 
		   param0->Px(), param0->Py(), param0->Pz(), param1->Px(), param1->Py(), param1->Pz()));

  momentum[0] = (param0->P());
  momentum[1] = (param1->P());

  Double_t mMu = TDatabasePDG::Instance()->GetParticle("mu-")->Mass();

  fKinem.SetE(TMath::Sqrt(mMu*mMu + momentum[0]*momentum[0]) + TMath::Sqrt(mMu*mMu + momentum[1]*momentum[1]));
  fKinem.SetPx(param0->Px() + param1->Px());
  fKinem.SetPy(param0->Py() + param1->Py());
  fKinem.SetPz(param0->Pz() + param1->Pz());

  fIsKinemSet = kTRUE;

}

//====================================================================================================================================================

void AliMuonForwardTrackPair::SetPointOfClosestApproach() {
  
  AliMUONTrackParam *param0 = GetTrack(0)->GetTrackParamAtMFTCluster(0);
  AliMUONTrackParam *param1 = GetTrack(1)->GetTrackParamAtMFTCluster(0);
  
  Double_t step = 1.;  // in cm
  Double_t startPoint = 0.;

  Double_t r[3]={0}, z[3]={startPoint, startPoint+step, startPoint+2*step};
  
  for (Int_t i=0; i<3; i++) {
    AliMUONTrackExtrap::ExtrapToZCov(param0, z[i]);
    AliMUONTrackExtrap::ExtrapToZCov(param1, z[i]);
    Double_t dX = param0->GetNonBendingCoor() - param1->GetNonBendingCoor();
    Double_t dY = param0->GetBendingCoor()    - param1->GetBendingCoor();
    r[i] = TMath::Sqrt(dX*dX + dY*dY);
  }
  
  Double_t researchDirection=0.;
  
  if      (r[0]>r[1] && r[1]>r[2]) researchDirection = +1.;   // towards z positive
  else if (r[0]<r[1] && r[1]<r[2]) researchDirection = -1.;   // towards z negative
  else if (r[0]<r[1] && r[1]>r[2]) { 
    AliError("Point of closest approach cannot be found for dimuon (no minima)");
    return;
  }
  
  while (TMath::Abs(researchDirection)>0.5) {
    if (researchDirection>0.) {
      z[0] = z[1];
      z[1] = z[2];
      z[2] = z[1]+researchDirection*step;
    }
    else {
      z[2] = z[1];
      z[1] = z[0];
      z[0] = z[1]+researchDirection*step;
    }
    if (TMath::Abs(z[0])>900.) {
      AliError("Point of closest approach cannot be found for dimuon (no minima)");
      return;
    }
    for (Int_t i=0; i<3; i++) {
      AliMUONTrackExtrap::ExtrapToZCov(param0, z[i]);
      AliMUONTrackExtrap::ExtrapToZCov(param1, z[i]);
      Double_t dX = param0->GetNonBendingCoor() - param1->GetNonBendingCoor();
      Double_t dY = param0->GetBendingCoor()    - param1->GetBendingCoor();
      r[i] = TMath::Sqrt(dX*dX + dY*dY);
    }
    researchDirection=0.;
    if      (r[0]>r[1] && r[1]>r[2]) researchDirection = +1.;   // towards z positive
    else if (r[0]<r[1] && r[1]<r[2]) researchDirection = -1.;   // towards z negative
  }
  
  AliDebug(2,"Minimum region has been found");
  
  step *= 0.5;
  while (step>AliMFTConstants::fPrecisionPointOfClosestApproach) {
    z[0] = z[1]-step;
    z[2] = z[1]+step;
    for (Int_t i=0; i<3; i++) {
      AliMUONTrackExtrap::ExtrapToZCov(param0, z[i]);
      AliMUONTrackExtrap::ExtrapToZCov(param1, z[i]);
      Double_t dX = param0->GetNonBendingCoor() - param1->GetNonBendingCoor();
      Double_t dY = param0->GetBendingCoor()    - param1->GetBendingCoor();
      r[i] = TMath::Sqrt(dX*dX + dY*dY);
    }
    if      (r[0]<r[1]) z[1] = z[0];
    else if (r[2]<r[1]) z[1] = z[2];
    else step *= 0.5;
  }
  
  fZPointOfClosestApproach = z[1];
  AliMUONTrackExtrap::ExtrapToZCov(param0, fZPointOfClosestApproach);
  AliMUONTrackExtrap::ExtrapToZCov(param1, fZPointOfClosestApproach);  
  fXPointOfClosestApproach = 0.5*(param0->GetNonBendingCoor() + param1->GetNonBendingCoor());
  fYPointOfClosestApproach = 0.5*(param0->GetBendingCoor()    + param1->GetBendingCoor());
  
  AliDebug(2,Form("Point of Closest Approach: (%f, %f, %f)",fXPointOfClosestApproach,fYPointOfClosestApproach,fZPointOfClosestApproach));
  
}

//====================================================================================================================================================

Bool_t AliMuonForwardTrackPair::IsResonance() {

  Bool_t result = kFALSE;

  Int_t labelMC[2] = {0};
  Int_t codePDG[2] = {0};
  
  for (Int_t iTrack=0; iTrack<2; iTrack++) {
    labelMC[iTrack] = GetTrack(iTrack)->GetParentMCLabel(0);
    codePDG[iTrack] = GetTrack(iTrack)->GetParentPDGCode(0);
  }

  AliDebug(1, Form("Muons' mothers: (%d, %d)", labelMC[0], labelMC[1]));

  if (labelMC[0]==labelMC[1] && codePDG[0]==codePDG[1] && (codePDG[0]==   113 ||
							   codePDG[0]==   221 ||
							   codePDG[0]==   223 ||
							   codePDG[0]==   331 ||
							   codePDG[0]==   333 ||
							   codePDG[0]==   443 ||
							   codePDG[0]==100443 ||
							   codePDG[0]==   553 ||
							   codePDG[0]==100553 ) ) result = kTRUE;

  if (result) AliDebug(1, Form("Pair is a resonance %d", codePDG[0]));

  return result; 

}

//====================================================================================================================================================

 AliMuonForwardTrackPair.cxx:1
 AliMuonForwardTrackPair.cxx:2
 AliMuonForwardTrackPair.cxx:3
 AliMuonForwardTrackPair.cxx:4
 AliMuonForwardTrackPair.cxx:5
 AliMuonForwardTrackPair.cxx:6
 AliMuonForwardTrackPair.cxx:7
 AliMuonForwardTrackPair.cxx:8
 AliMuonForwardTrackPair.cxx:9
 AliMuonForwardTrackPair.cxx:10
 AliMuonForwardTrackPair.cxx:11
 AliMuonForwardTrackPair.cxx:12
 AliMuonForwardTrackPair.cxx:13
 AliMuonForwardTrackPair.cxx:14
 AliMuonForwardTrackPair.cxx:15
 AliMuonForwardTrackPair.cxx:16
 AliMuonForwardTrackPair.cxx:17
 AliMuonForwardTrackPair.cxx:18
 AliMuonForwardTrackPair.cxx:19
 AliMuonForwardTrackPair.cxx:20
 AliMuonForwardTrackPair.cxx:21
 AliMuonForwardTrackPair.cxx:22
 AliMuonForwardTrackPair.cxx:23
 AliMuonForwardTrackPair.cxx:24
 AliMuonForwardTrackPair.cxx:25
 AliMuonForwardTrackPair.cxx:26
 AliMuonForwardTrackPair.cxx:27
 AliMuonForwardTrackPair.cxx:28
 AliMuonForwardTrackPair.cxx:29
 AliMuonForwardTrackPair.cxx:30
 AliMuonForwardTrackPair.cxx:31
 AliMuonForwardTrackPair.cxx:32
 AliMuonForwardTrackPair.cxx:33
 AliMuonForwardTrackPair.cxx:34
 AliMuonForwardTrackPair.cxx:35
 AliMuonForwardTrackPair.cxx:36
 AliMuonForwardTrackPair.cxx:37
 AliMuonForwardTrackPair.cxx:38
 AliMuonForwardTrackPair.cxx:39
 AliMuonForwardTrackPair.cxx:40
 AliMuonForwardTrackPair.cxx:41
 AliMuonForwardTrackPair.cxx:42
 AliMuonForwardTrackPair.cxx:43
 AliMuonForwardTrackPair.cxx:44
 AliMuonForwardTrackPair.cxx:45
 AliMuonForwardTrackPair.cxx:46
 AliMuonForwardTrackPair.cxx:47
 AliMuonForwardTrackPair.cxx:48
 AliMuonForwardTrackPair.cxx:49
 AliMuonForwardTrackPair.cxx:50
 AliMuonForwardTrackPair.cxx:51
 AliMuonForwardTrackPair.cxx:52
 AliMuonForwardTrackPair.cxx:53
 AliMuonForwardTrackPair.cxx:54
 AliMuonForwardTrackPair.cxx:55
 AliMuonForwardTrackPair.cxx:56
 AliMuonForwardTrackPair.cxx:57
 AliMuonForwardTrackPair.cxx:58
 AliMuonForwardTrackPair.cxx:59
 AliMuonForwardTrackPair.cxx:60
 AliMuonForwardTrackPair.cxx:61
 AliMuonForwardTrackPair.cxx:62
 AliMuonForwardTrackPair.cxx:63
 AliMuonForwardTrackPair.cxx:64
 AliMuonForwardTrackPair.cxx:65
 AliMuonForwardTrackPair.cxx:66
 AliMuonForwardTrackPair.cxx:67
 AliMuonForwardTrackPair.cxx:68
 AliMuonForwardTrackPair.cxx:69
 AliMuonForwardTrackPair.cxx:70
 AliMuonForwardTrackPair.cxx:71
 AliMuonForwardTrackPair.cxx:72
 AliMuonForwardTrackPair.cxx:73
 AliMuonForwardTrackPair.cxx:74
 AliMuonForwardTrackPair.cxx:75
 AliMuonForwardTrackPair.cxx:76
 AliMuonForwardTrackPair.cxx:77
 AliMuonForwardTrackPair.cxx:78
 AliMuonForwardTrackPair.cxx:79
 AliMuonForwardTrackPair.cxx:80
 AliMuonForwardTrackPair.cxx:81
 AliMuonForwardTrackPair.cxx:82
 AliMuonForwardTrackPair.cxx:83
 AliMuonForwardTrackPair.cxx:84
 AliMuonForwardTrackPair.cxx:85
 AliMuonForwardTrackPair.cxx:86
 AliMuonForwardTrackPair.cxx:87
 AliMuonForwardTrackPair.cxx:88
 AliMuonForwardTrackPair.cxx:89
 AliMuonForwardTrackPair.cxx:90
 AliMuonForwardTrackPair.cxx:91
 AliMuonForwardTrackPair.cxx:92
 AliMuonForwardTrackPair.cxx:93
 AliMuonForwardTrackPair.cxx:94
 AliMuonForwardTrackPair.cxx:95
 AliMuonForwardTrackPair.cxx:96
 AliMuonForwardTrackPair.cxx:97
 AliMuonForwardTrackPair.cxx:98
 AliMuonForwardTrackPair.cxx:99
 AliMuonForwardTrackPair.cxx:100
 AliMuonForwardTrackPair.cxx:101
 AliMuonForwardTrackPair.cxx:102
 AliMuonForwardTrackPair.cxx:103
 AliMuonForwardTrackPair.cxx:104
 AliMuonForwardTrackPair.cxx:105
 AliMuonForwardTrackPair.cxx:106
 AliMuonForwardTrackPair.cxx:107
 AliMuonForwardTrackPair.cxx:108
 AliMuonForwardTrackPair.cxx:109
 AliMuonForwardTrackPair.cxx:110
 AliMuonForwardTrackPair.cxx:111
 AliMuonForwardTrackPair.cxx:112
 AliMuonForwardTrackPair.cxx:113
 AliMuonForwardTrackPair.cxx:114
 AliMuonForwardTrackPair.cxx:115
 AliMuonForwardTrackPair.cxx:116
 AliMuonForwardTrackPair.cxx:117
 AliMuonForwardTrackPair.cxx:118
 AliMuonForwardTrackPair.cxx:119
 AliMuonForwardTrackPair.cxx:120
 AliMuonForwardTrackPair.cxx:121
 AliMuonForwardTrackPair.cxx:122
 AliMuonForwardTrackPair.cxx:123
 AliMuonForwardTrackPair.cxx:124
 AliMuonForwardTrackPair.cxx:125
 AliMuonForwardTrackPair.cxx:126
 AliMuonForwardTrackPair.cxx:127
 AliMuonForwardTrackPair.cxx:128
 AliMuonForwardTrackPair.cxx:129
 AliMuonForwardTrackPair.cxx:130
 AliMuonForwardTrackPair.cxx:131
 AliMuonForwardTrackPair.cxx:132
 AliMuonForwardTrackPair.cxx:133
 AliMuonForwardTrackPair.cxx:134
 AliMuonForwardTrackPair.cxx:135
 AliMuonForwardTrackPair.cxx:136
 AliMuonForwardTrackPair.cxx:137
 AliMuonForwardTrackPair.cxx:138
 AliMuonForwardTrackPair.cxx:139
 AliMuonForwardTrackPair.cxx:140
 AliMuonForwardTrackPair.cxx:141
 AliMuonForwardTrackPair.cxx:142
 AliMuonForwardTrackPair.cxx:143
 AliMuonForwardTrackPair.cxx:144
 AliMuonForwardTrackPair.cxx:145
 AliMuonForwardTrackPair.cxx:146
 AliMuonForwardTrackPair.cxx:147
 AliMuonForwardTrackPair.cxx:148
 AliMuonForwardTrackPair.cxx:149
 AliMuonForwardTrackPair.cxx:150
 AliMuonForwardTrackPair.cxx:151
 AliMuonForwardTrackPair.cxx:152
 AliMuonForwardTrackPair.cxx:153
 AliMuonForwardTrackPair.cxx:154
 AliMuonForwardTrackPair.cxx:155
 AliMuonForwardTrackPair.cxx:156
 AliMuonForwardTrackPair.cxx:157
 AliMuonForwardTrackPair.cxx:158
 AliMuonForwardTrackPair.cxx:159
 AliMuonForwardTrackPair.cxx:160
 AliMuonForwardTrackPair.cxx:161
 AliMuonForwardTrackPair.cxx:162
 AliMuonForwardTrackPair.cxx:163
 AliMuonForwardTrackPair.cxx:164
 AliMuonForwardTrackPair.cxx:165
 AliMuonForwardTrackPair.cxx:166
 AliMuonForwardTrackPair.cxx:167
 AliMuonForwardTrackPair.cxx:168
 AliMuonForwardTrackPair.cxx:169
 AliMuonForwardTrackPair.cxx:170
 AliMuonForwardTrackPair.cxx:171
 AliMuonForwardTrackPair.cxx:172
 AliMuonForwardTrackPair.cxx:173
 AliMuonForwardTrackPair.cxx:174
 AliMuonForwardTrackPair.cxx:175
 AliMuonForwardTrackPair.cxx:176
 AliMuonForwardTrackPair.cxx:177
 AliMuonForwardTrackPair.cxx:178
 AliMuonForwardTrackPair.cxx:179
 AliMuonForwardTrackPair.cxx:180
 AliMuonForwardTrackPair.cxx:181
 AliMuonForwardTrackPair.cxx:182
 AliMuonForwardTrackPair.cxx:183
 AliMuonForwardTrackPair.cxx:184
 AliMuonForwardTrackPair.cxx:185
 AliMuonForwardTrackPair.cxx:186
 AliMuonForwardTrackPair.cxx:187
 AliMuonForwardTrackPair.cxx:188
 AliMuonForwardTrackPair.cxx:189
 AliMuonForwardTrackPair.cxx:190
 AliMuonForwardTrackPair.cxx:191
 AliMuonForwardTrackPair.cxx:192
 AliMuonForwardTrackPair.cxx:193
 AliMuonForwardTrackPair.cxx:194
 AliMuonForwardTrackPair.cxx:195
 AliMuonForwardTrackPair.cxx:196
 AliMuonForwardTrackPair.cxx:197
 AliMuonForwardTrackPair.cxx:198
 AliMuonForwardTrackPair.cxx:199
 AliMuonForwardTrackPair.cxx:200
 AliMuonForwardTrackPair.cxx:201
 AliMuonForwardTrackPair.cxx:202
 AliMuonForwardTrackPair.cxx:203
 AliMuonForwardTrackPair.cxx:204
 AliMuonForwardTrackPair.cxx:205
 AliMuonForwardTrackPair.cxx:206
 AliMuonForwardTrackPair.cxx:207
 AliMuonForwardTrackPair.cxx:208
 AliMuonForwardTrackPair.cxx:209
 AliMuonForwardTrackPair.cxx:210
 AliMuonForwardTrackPair.cxx:211
 AliMuonForwardTrackPair.cxx:212
 AliMuonForwardTrackPair.cxx:213
 AliMuonForwardTrackPair.cxx:214
 AliMuonForwardTrackPair.cxx:215
 AliMuonForwardTrackPair.cxx:216
 AliMuonForwardTrackPair.cxx:217
 AliMuonForwardTrackPair.cxx:218
 AliMuonForwardTrackPair.cxx:219
 AliMuonForwardTrackPair.cxx:220
 AliMuonForwardTrackPair.cxx:221
 AliMuonForwardTrackPair.cxx:222
 AliMuonForwardTrackPair.cxx:223
 AliMuonForwardTrackPair.cxx:224
 AliMuonForwardTrackPair.cxx:225
 AliMuonForwardTrackPair.cxx:226
 AliMuonForwardTrackPair.cxx:227
 AliMuonForwardTrackPair.cxx:228
 AliMuonForwardTrackPair.cxx:229
 AliMuonForwardTrackPair.cxx:230
 AliMuonForwardTrackPair.cxx:231
 AliMuonForwardTrackPair.cxx:232
 AliMuonForwardTrackPair.cxx:233
 AliMuonForwardTrackPair.cxx:234
 AliMuonForwardTrackPair.cxx:235
 AliMuonForwardTrackPair.cxx:236
 AliMuonForwardTrackPair.cxx:237
 AliMuonForwardTrackPair.cxx:238
 AliMuonForwardTrackPair.cxx:239
 AliMuonForwardTrackPair.cxx:240
 AliMuonForwardTrackPair.cxx:241
 AliMuonForwardTrackPair.cxx:242
 AliMuonForwardTrackPair.cxx:243
 AliMuonForwardTrackPair.cxx:244
 AliMuonForwardTrackPair.cxx:245
 AliMuonForwardTrackPair.cxx:246
 AliMuonForwardTrackPair.cxx:247
 AliMuonForwardTrackPair.cxx:248
 AliMuonForwardTrackPair.cxx:249
 AliMuonForwardTrackPair.cxx:250
 AliMuonForwardTrackPair.cxx:251
 AliMuonForwardTrackPair.cxx:252
 AliMuonForwardTrackPair.cxx:253
 AliMuonForwardTrackPair.cxx:254
 AliMuonForwardTrackPair.cxx:255
 AliMuonForwardTrackPair.cxx:256
 AliMuonForwardTrackPair.cxx:257
 AliMuonForwardTrackPair.cxx:258
 AliMuonForwardTrackPair.cxx:259
 AliMuonForwardTrackPair.cxx:260
 AliMuonForwardTrackPair.cxx:261
 AliMuonForwardTrackPair.cxx:262
 AliMuonForwardTrackPair.cxx:263
 AliMuonForwardTrackPair.cxx:264
 AliMuonForwardTrackPair.cxx:265
 AliMuonForwardTrackPair.cxx:266
 AliMuonForwardTrackPair.cxx:267
 AliMuonForwardTrackPair.cxx:268
 AliMuonForwardTrackPair.cxx:269
 AliMuonForwardTrackPair.cxx:270
 AliMuonForwardTrackPair.cxx:271
 AliMuonForwardTrackPair.cxx:272
 AliMuonForwardTrackPair.cxx:273
 AliMuonForwardTrackPair.cxx:274
 AliMuonForwardTrackPair.cxx:275
 AliMuonForwardTrackPair.cxx:276
 AliMuonForwardTrackPair.cxx:277
 AliMuonForwardTrackPair.cxx:278
 AliMuonForwardTrackPair.cxx:279
 AliMuonForwardTrackPair.cxx:280
 AliMuonForwardTrackPair.cxx:281
 AliMuonForwardTrackPair.cxx:282
 AliMuonForwardTrackPair.cxx:283
 AliMuonForwardTrackPair.cxx:284
 AliMuonForwardTrackPair.cxx:285
 AliMuonForwardTrackPair.cxx:286
 AliMuonForwardTrackPair.cxx:287
 AliMuonForwardTrackPair.cxx:288
 AliMuonForwardTrackPair.cxx:289
 AliMuonForwardTrackPair.cxx:290
 AliMuonForwardTrackPair.cxx:291
 AliMuonForwardTrackPair.cxx:292
 AliMuonForwardTrackPair.cxx:293
 AliMuonForwardTrackPair.cxx:294
 AliMuonForwardTrackPair.cxx:295
 AliMuonForwardTrackPair.cxx:296
 AliMuonForwardTrackPair.cxx:297
 AliMuonForwardTrackPair.cxx:298
 AliMuonForwardTrackPair.cxx:299
 AliMuonForwardTrackPair.cxx:300
 AliMuonForwardTrackPair.cxx:301
 AliMuonForwardTrackPair.cxx:302
 AliMuonForwardTrackPair.cxx:303
 AliMuonForwardTrackPair.cxx:304
 AliMuonForwardTrackPair.cxx:305
 AliMuonForwardTrackPair.cxx:306
 AliMuonForwardTrackPair.cxx:307
 AliMuonForwardTrackPair.cxx:308
 AliMuonForwardTrackPair.cxx:309
 AliMuonForwardTrackPair.cxx:310
 AliMuonForwardTrackPair.cxx:311
 AliMuonForwardTrackPair.cxx:312
 AliMuonForwardTrackPair.cxx:313
 AliMuonForwardTrackPair.cxx:314
 AliMuonForwardTrackPair.cxx:315
 AliMuonForwardTrackPair.cxx:316
 AliMuonForwardTrackPair.cxx:317
 AliMuonForwardTrackPair.cxx:318
 AliMuonForwardTrackPair.cxx:319
 AliMuonForwardTrackPair.cxx:320
 AliMuonForwardTrackPair.cxx:321
 AliMuonForwardTrackPair.cxx:322
 AliMuonForwardTrackPair.cxx:323
 AliMuonForwardTrackPair.cxx:324
 AliMuonForwardTrackPair.cxx:325
 AliMuonForwardTrackPair.cxx:326
 AliMuonForwardTrackPair.cxx:327
 AliMuonForwardTrackPair.cxx:328
 AliMuonForwardTrackPair.cxx:329
 AliMuonForwardTrackPair.cxx:330
 AliMuonForwardTrackPair.cxx:331
 AliMuonForwardTrackPair.cxx:332
 AliMuonForwardTrackPair.cxx:333
 AliMuonForwardTrackPair.cxx:334
 AliMuonForwardTrackPair.cxx:335
 AliMuonForwardTrackPair.cxx:336
 AliMuonForwardTrackPair.cxx:337
 AliMuonForwardTrackPair.cxx:338
 AliMuonForwardTrackPair.cxx:339
 AliMuonForwardTrackPair.cxx:340
 AliMuonForwardTrackPair.cxx:341
 AliMuonForwardTrackPair.cxx:342
 AliMuonForwardTrackPair.cxx:343
 AliMuonForwardTrackPair.cxx:344
 AliMuonForwardTrackPair.cxx:345
 AliMuonForwardTrackPair.cxx:346
 AliMuonForwardTrackPair.cxx:347
 AliMuonForwardTrackPair.cxx:348
 AliMuonForwardTrackPair.cxx:349
 AliMuonForwardTrackPair.cxx:350
 AliMuonForwardTrackPair.cxx:351
 AliMuonForwardTrackPair.cxx:352
 AliMuonForwardTrackPair.cxx:353
 AliMuonForwardTrackPair.cxx:354
 AliMuonForwardTrackPair.cxx:355
 AliMuonForwardTrackPair.cxx:356
 AliMuonForwardTrackPair.cxx:357
 AliMuonForwardTrackPair.cxx:358
 AliMuonForwardTrackPair.cxx:359
 AliMuonForwardTrackPair.cxx:360
 AliMuonForwardTrackPair.cxx:361
 AliMuonForwardTrackPair.cxx:362
 AliMuonForwardTrackPair.cxx:363
 AliMuonForwardTrackPair.cxx:364
 AliMuonForwardTrackPair.cxx:365
 AliMuonForwardTrackPair.cxx:366
 AliMuonForwardTrackPair.cxx:367
 AliMuonForwardTrackPair.cxx:368
 AliMuonForwardTrackPair.cxx:369
 AliMuonForwardTrackPair.cxx:370
 AliMuonForwardTrackPair.cxx:371
 AliMuonForwardTrackPair.cxx:372
 AliMuonForwardTrackPair.cxx:373
 AliMuonForwardTrackPair.cxx:374
 AliMuonForwardTrackPair.cxx:375
 AliMuonForwardTrackPair.cxx:376
 AliMuonForwardTrackPair.cxx:377
 AliMuonForwardTrackPair.cxx:378
 AliMuonForwardTrackPair.cxx:379
 AliMuonForwardTrackPair.cxx:380
 AliMuonForwardTrackPair.cxx:381
 AliMuonForwardTrackPair.cxx:382
 AliMuonForwardTrackPair.cxx:383
 AliMuonForwardTrackPair.cxx:384
 AliMuonForwardTrackPair.cxx:385
 AliMuonForwardTrackPair.cxx:386
 AliMuonForwardTrackPair.cxx:387
 AliMuonForwardTrackPair.cxx:388
 AliMuonForwardTrackPair.cxx:389
 AliMuonForwardTrackPair.cxx:390
 AliMuonForwardTrackPair.cxx:391
 AliMuonForwardTrackPair.cxx:392
 AliMuonForwardTrackPair.cxx:393