ROOT logo
/**************************************************************************
 * Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
 *      SigmaEffect_thetadegrees                                                                  *
 * 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 purpeateose. It is      *
 * provided "as is" without express or implied warranty.                  *
 **************************************************************************/

/* $Id$ */

//-----------------------------------------------------------------------------
//This class was prepared by INFN Cagliari, July 2006
//(authors: H.Woehri, A.de Falco)
// 
// Compact information for the generated muon pairs in the MUON arm 
// useful at the last stage of the analysis chain
// Pairs are built with two AliMUONTrackLight objects 
// Using the class AliMUONTrackLight this class combines the decay
// information ("history") of the reconstructed tracks and fills
// a series of flags for the formed reconstructed dimuon:
// fIsCorrelated, fCreationProcess, fIsFeedDown, ...
// for information about the dimuon, use PrintInfo with the appropriate
// printflag
// To be used together with AliMUONTrackLight
//-----------------------------------------------------------------------------


//MUON classes
#include "AliMUONPairLight.h"
//Root classes
#include "TString.h"

ClassImp(AliMUONPairLight) 

//====================================
AliMUONPairLight::AliMUONPairLight() : 
  TObject(), 
  fMu0(),
  fMu1(), 
  fCreationProcess(-999),
  fIsCorrelated(kFALSE), 
  fCauseOfCorrelation (-1),
  fIsFeedDown(kFALSE)
{
  /// default constructor
  ; 
}

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

AliMUONPairLight::AliMUONPairLight(AliMUONPairLight &dimuCopy) 
  : TObject(dimuCopy),
    fMu0(dimuCopy.fMu0),
    fMu1(dimuCopy.fMu1), 
    fCreationProcess(dimuCopy.fCreationProcess),
    fIsCorrelated(dimuCopy.fIsCorrelated), 
    fCauseOfCorrelation (dimuCopy.fCauseOfCorrelation),
    fIsFeedDown(dimuCopy.fIsFeedDown)
{ 
/// copy constructor
///   fMu0 = AliMUONTrackLight(dimuCopy.fMu0); 
///   fMu1 = AliMUONTrackLight(dimuCopy.fMu1); 
///   fIsCorrelated = dimuCopy.fIsCorrelated;
///   fCauseOfCorrelation = dimuCopy.fCauseOfCorrelation;
///   fCreationProcess = dimuCopy.fCreationProcess;
///   fIsFeedDown = dimuCopy.fIsFeedDown;
  ;
}

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

AliMUONPairLight::~AliMUONPairLight(){
  /// destructor
}

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

AliMUONPairLight& AliMUONPairLight::operator=(const AliMUONPairLight& dimuCopy)
{
  // check assignment to self
  if (this == &dimuCopy) return *this;

  // base class assignment
  TObject::operator=(dimuCopy);

  // assignment operator
  fMu0 = dimuCopy.fMu0;
  fMu1 = dimuCopy.fMu1; 
  fCreationProcess = dimuCopy.fCreationProcess;
  fIsCorrelated = dimuCopy.fIsCorrelated; 
  fCauseOfCorrelation  = dimuCopy.fCauseOfCorrelation;
  fIsFeedDown = dimuCopy.fIsFeedDown;

  return *this;
}

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

Bool_t AliMUONPairLight::IsAResonance(){
  /// checks if muon pair comes from a resonance decay  
  if (!fIsCorrelated) return kFALSE;   //if muons not correlated, cannot be a resonance
  //if muons are correlated, check if the PDG of the
  //common mother is a resonance
  Int_t nparents0 = fMu0.GetNParents(); 
  Int_t nparents1 = fMu1.GetNParents(); 

  Int_t minP = TMath::Min(nparents0, nparents1);
  for (Int_t i = 0 ; i < minP; i++) { 
    if (fMu0.IsMotherAResonance(nparents0-1-i) && fMu1.IsMotherAResonance(nparents1-1-i) && 
	fMu0.GetParentPythiaLine(nparents0-1-i)==fMu1.GetParentPythiaLine(nparents1-1-i)) {
      if (nparents0-1-i) SetFeedDown(nparents0-1-i);
      return kTRUE;
    }
  }
  return kFALSE; 
}

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

AliMUONTrackLight* AliMUONPairLight::GetMuon(Int_t index)  { 
  /// return muon 0 or 1
   if (index==0) return &fMu0;
   else if (index==1) return &fMu1; 
   else{ printf ("Index can be either 0 or 1\n"); return 0;}
   //   else return &fMu1; 
}

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

Int_t AliMUONPairLight::GetMuonMotherPDG(Int_t imuon, Int_t mother) { 
  /// return muon mother pdg code
  if (imuon==0) return fMu0.GetParentPDGCode(mother); 
  else if (imuon==1) return fMu1.GetParentPDGCode(mother); 
  else { printf ("Index must be only 0 or 1\n"); return -999; } 
}

//====================================
void AliMUONPairLight::SetProcess(){
  /// finds the process related to the muon pair (open charm/beauty, resonance, 
  /// uncorrelated...) 

  AliMUONTrackLight *mu1 = &fMu0;
  AliMUONTrackLight *mu2 = &fMu1;

  // check if the two muons are correlated
  // first check if they come from the same hadron (resonance or beauty/charm meson)
  Int_t npar1 = mu1->GetNParents(); 
  Int_t npar2 = mu2->GetNParents(); 
  for (Int_t imoth1 = npar1-1; imoth1>=0; imoth1--) { 
    Int_t lineMo1 = mu1->GetParentPythiaLine(imoth1);
    for (Int_t imoth2 = npar2-1; imoth2>=0; imoth2--) { 
      Int_t lineMo2 = mu2->GetParentPythiaLine(imoth2);
      if(lineMo1 == lineMo2) { 
	//reject "diquark" mothers
	if(mu1->IsDiquark(mu1->GetParentPDGCode(imoth1)))return;
// 	if(IsDiquark(mu1->GetParentPDGCode(imoth1))) return;
	this->SetCorrelated(kTRUE); 
	this->SetCauseOfCorrelation(mu1->GetParentPDGCode(imoth1));
	if(!IsAResonance()) fCreationProcess = 3; 
	else fCreationProcess = -1;
	return;
      }
    }
  }

  //now, check if we have a correlated pi/K:
  if(this->IsDimuonFromCorrPiK()){
    this->SetCorrelated(kTRUE); 
    this->SetCauseOfCorrelation(mu1->GetParentPDGCode(0));
    fCreationProcess = -1;
  }

  // if Open Beauty/Charm we can have 3 creation processes 
  // (pair creation [0], gluon splitting [1] or flavour excitation [2])
  // 1.) gluon splitting: gluon (stored with index 2, id=21) must be the same 
  Int_t flavPar1 = mu1->GetParentFlavour(0);
  Int_t flavPar2 = mu2->GetParentFlavour(0);
  for (Int_t imoth1 = 0; imoth1 < 4; imoth1++) { 
    Int_t lineMo1 = mu1->GetQuarkPythiaLine(imoth1);
    for (Int_t imoth2 = 0; imoth2 < 4; imoth2++) { 
      Int_t lineMo2 = mu2->GetQuarkPythiaLine(imoth2);
      if(lineMo1 == lineMo2 && mu1->GetQuarkPDGCode(imoth1) == 21) {
	//now, check also that the string fragmented into two hadrons
	//of the same flavour (string usually splits into many hadrons
	//among which there are mostly soft particles)
	if(flavPar1 == flavPar2){
	  this->SetCorrelated(kTRUE); 
	  if(GetCauseOfCorrelation() == -1)
	    this->SetCauseOfCorrelation(mu1->GetQuarkPDGCode(imoth1));

	  fCreationProcess = 1; 
	  return;
	}
      }
    }
  }

  Int_t line1 = mu1->GetQuarkPythiaLine(2); //[2] ... very first quark
  Int_t line2 = mu2->GetQuarkPythiaLine(2); 

  Int_t line6or7[2] = {-1, -1}; //holds the index of quark in line 6 or 7
  Int_t flavourLine6or7[2] = {-1, -1};
  // 2.) pair creation: if pythia line 6 of one track *and* pythia line 7 of second track
  // are filled with a Q and Qbar
  for (Int_t imoth1 = 3; imoth1>=0; imoth1--) { 
    Int_t lineMo1 = mu1->GetQuarkPythiaLine(imoth1);
    Int_t flavour1 = TMath::Abs(mu1->GetQuarkPDGCode(imoth1));
    if(lineMo1 == 6 || lineMo1 == 7){ //track 0 has a mother in line 6 or 7
      line6or7[0] = imoth1;
      flavourLine6or7[0] = flavour1;
    }
    for (Int_t imoth2 = 3; imoth2>=0; imoth2--) { 
      Int_t lineMo2 = mu2->GetQuarkPythiaLine(imoth2);
      Int_t flavour2 = TMath::Abs(mu2->GetQuarkPDGCode(imoth2));
      if(lineMo2 == 6 || lineMo2 == 7){ //track 1 has a mother in line 6 or 7
	line6or7[1] = imoth2;
	flavourLine6or7[1] = flavour2;
      }
      if((line6or7[0] > 0 && line6or7[1] > 0) && //both tracks must have an entry in line 6 or 7
	 (flavourLine6or7[0] == 4 || flavourLine6or7[0] == 5) && //this entry must be a c or b quark
	 (flavourLine6or7[1] == 4 || flavourLine6or7[1] == 5) && // == " ==
	 (flavPar1 == flavPar2)){ //make sure that the first hadronised parents of the 2 tracks are of the same flavour 
	this->SetCorrelated(kTRUE);
	fCreationProcess = 0; 
	return;
      }
    }
  }

  // 3.)flavour excitation: if pythia line 6 of one track *and* pythia line 7 of second track
  // are filled with a Q and Qbar and if in addition there is another heavy quark in line(s) 4 and/or 5
  Int_t line2or3[2] = {-1, -1}; //holds the index of g/q in line 2 or 3
  Int_t flavourLine2or3[2] = {-1, -1};
  for (Int_t imoth1 = 3; imoth1>=0; imoth1--) { 
    Int_t lineMo1 = mu1->GetQuarkPythiaLine(imoth1);
    Int_t flavour1 = TMath::Abs(mu1->GetQuarkPDGCode(imoth1));
    if(lineMo1 == 2 || lineMo1 == 3){ //track 0 has a mother in line 2 or 3
      line2or3[0] = imoth1;
      flavourLine2or3[0] = flavour1;
    }
    for (Int_t imoth2 = 3; imoth2>=0; imoth2--) { 
      Int_t lineMo2 = mu2->GetQuarkPythiaLine(imoth2);
      Int_t flavour2 = TMath::Abs(mu2->GetQuarkPDGCode(imoth2));
      if(lineMo2 == 2 || lineMo2 == 3){ //track 1 has a mother in line 2 or 3
	line2or3[1] = imoth2;
	flavourLine2or3[1] = flavour2;
      }
      if(((line6or7[0] > 0 && (flavourLine6or7[0] == 4  || flavourLine6or7[0] == 5)) && //first track has Q in line 6 or 7
	  (line2or3[1] > 0 && (flavourLine2or3[1] == 21 || flavourLine2or3[1] < 10))) || //second track has a g/q in line 2 or 3
	 ((line6or7[1] > 0 && (flavourLine6or7[1] == 4 || flavourLine6or7[1] == 5)) &&  //or the same,
	  (line2or3[0] > 0 && (flavourLine2or3[0] == 21 || flavourLine2or3[0] < 10)))){ // swapping the track's indices
	//now, check also that the string fragmented into two hadrons
	//of the same flavour (string usually splits into many hadrons
	//among which there are mostly soft particles)
	if(flavPar1 == flavPar2){
	  this->SetCorrelated(kTRUE);
	  fCreationProcess = 2;
	  return;
	}
      }
    }
  } 

  //now flag (rare) processes in which only the incoming parton in line 2 or 3
  //radiates a gluon which produces a QQbar pair:
  //exclude the light quarks
  if(line1 == line2 && (line1 == 2 || line1 == 3)){
    if((TMath::Abs(mu1->GetQuarkPDGCode(1)) == 4 && TMath::Abs(mu2->GetQuarkPDGCode(1)) == 4) ||
       (TMath::Abs(mu1->GetQuarkPDGCode(1)) == 5 && TMath::Abs(mu2->GetQuarkPDGCode(1)) == 5)){

      //now, check also that the string fragmented into two hadrons
      //of the same flavour (string usually splits into many hadrons
      //among which there are mostly soft particles)
      if(flavPar1 == flavPar2){

	this->SetCorrelated(kTRUE);
	fCreationProcess = 1;
	if(GetCauseOfCorrelation() == -1){
	  this->SetCauseOfCorrelation(mu1->GetQuarkPDGCode(1));
	}
	return;
      }
    }
  }

  //in initial-state-radiation produced QQbar events the "mother quark"
  //is acknowledged as the second quark [1] and sits in line 2 or 3
  //is part of gluon splitting
  line1 = mu1->GetQuarkPythiaLine(1); //[1] ... direct mother quark of outgoing quark in [0]
  line2 = mu2->GetQuarkPythiaLine(1); 
  if(line1 == line2 && (line1 == 2 || line1 == 3)){
    if((TMath::Abs(mu1->GetQuarkPDGCode(0)) == 4 && TMath::Abs(mu2->GetQuarkPDGCode(0)) == 4) ||
       (TMath::Abs(mu1->GetQuarkPDGCode(0)) == 5 && TMath::Abs(mu2->GetQuarkPDGCode(0)) == 5)){

      //now, check also that the string fragmented into two hadrons
      //of the same flavour (string usually splits into many hadrons
      //among which there are mostly soft particles)
      if(flavPar1 == flavPar2){
	
	this->SetCorrelated(kTRUE);
	fCreationProcess = 1;
	if(GetCauseOfCorrelation() == -1){
	  this->SetCauseOfCorrelation(mu1->GetQuarkPDGCode(1)); //should be flagged as initial state radiation?
	}
	return;
      }
    }
  }

  //in final-state-radiation produced QQbar events the "mother quark"
  //is acknowledged as the first quark [1] and sits in line 6 or 7
  //is part of gluon splitting
  line1 = mu1->GetQuarkPythiaLine(1); //[1] ... direct mother quark 
  line2 = mu2->GetQuarkPythiaLine(1); 
  if(line1 == line2 && (line1 == 6 || line1 == 7)){
    if((TMath::Abs(mu1->GetQuarkPDGCode(0)) == 4 && TMath::Abs(mu2->GetQuarkPDGCode(0)) == 4) ||
       (TMath::Abs(mu1->GetQuarkPDGCode(0)) == 5 && TMath::Abs(mu2->GetQuarkPDGCode(0)) == 5)){

      //now, check also that the string fragmented into two hadrons
      //of the same flavour (string usually splits into many hadrons
      //among which there are mostly soft particles)
      if(flavPar1 == flavPar2){
	
	this->SetCorrelated(kTRUE);
	fCreationProcess = 1;
	if(GetCauseOfCorrelation() == -1){
	  this->SetCauseOfCorrelation(mu1->GetQuarkPDGCode(1));
	}
	return;
      }
    }
  }
}

//====================================
void AliMUONPairLight::SetMuons(const AliMUONTrackLight& mu0, const AliMUONTrackLight& mu1){
  /// set the two muons 
  fMu0 = mu0; 
  fMu1 = mu1; 
  this->SetProcess();
} 

//====================================
void AliMUONPairLight::PrintInfo(const Option_t* opt){
  /// print information about muon pairs
  /// Options: 
  /// - "H" single muons' decay histories
  /// - "K" dimuon kinematics
  /// - "F" dimuon flags
  /// - "A" all variables
  TString options(opt);
  options.ToUpper();

  if(options.Contains("H") || options.Contains("A")){//muon decay histories

    AliMUONTrackLight *mu1 = &fMu0;
    AliMUONTrackLight *mu2 = &fMu1;

    printf("========= History =======================\n");
    printf("first muon");
    mu1->PrintInfo("H");
    printf("second muon");
    mu2->PrintInfo("H");
    printf("=========================================\n");
  }
  if(options.Contains("F") || options.Contains("A")){//flags
    printf("the flags set for this muon pair are:\n");
    printf("=====================================\n");
    if(this->IsOneTrackNotAMuon()) printf("(*) one rec. track is not a muon\n");
    fIsCorrelated ? printf("(*) it is a correlated pair\n") : printf("(*) it is not a correlated pair\n");
    if(IsOpenCharm()) printf("(*) correlated open charm: ");
    if(IsOpenBeauty()) printf("(*) correlated open beauty: ");
    if(IsOpenCharm() || IsOpenBeauty()){
      switch(fCreationProcess){
      case 0:
	printf("pair creation");
	break;
      case 1:
	printf("gluon splitting");
	break;
      case 2:
	printf("flavour excitation");
	break;
      case 3:
	printf("both muons come from same fragmented mother");
	break;
      }
      if(this->GetMuon(0)->GetOscillation() || this->GetMuon(1)->GetOscillation()) 
	printf("... where oscillation occured\n");
      else{
	if(IsOpenBeauty())
	  printf(" (no oscillation)\n");
	else
	  printf("\n");
      }
    }
    IsAResonance() ? printf("(*) it is a resonance: %d\n", this->GetMuonMotherPDG(0, fIsFeedDown)) : printf("(*) it is not a resonance\n");
    fIsFeedDown ? printf("(*) mother has feed-down: %d --> %d\n", this->GetMuonMotherPDG(0,fMu0.GetNParents()-2), this->GetMuonMotherPDG(0,fMu0.GetNParents()-1)) : printf("(*) no feed-down\n");
    printf("=====================================\n");
  }
  if(options.Contains("K") || options.Contains("A")){//dimuon kinematics
    Double_t *vtx = this->GetMuon(0)->GetVertex();
    TLorentzVector momRec = this->GetPRec();
    TLorentzVector momGen = this->GetPGen();
    printf("the dimuon charge is %d\n", this->GetCharge());
    printf("primary Vertex: Vx = %1.3f, Vy = %1.3f, Vz = %1.3f\n", vtx[0], vtx[1], vtx[2]);
    printf("Generated:     Px = %1.3f, Py = %1.3f, Pz = %1.3f\n", momGen.Px(), momGen.Py(), momGen.Pz());
    printf("Reconstructed: Px = %1.3f, Py = %1.3f, Pz = %1.3f\n", momRec.Px(), momRec.Py(), momRec.Pz());
    //rapidity, pT, angles, ...
    printf("Rec. variables: mass %1.3f, pT %1.3f, pseudo-rapidity %1.3f, openingAngle %1.3f (%1.3f degree), theta %1.3f (%1.3f degree), phi %1.3f (%1.3f degree)\n", 
	   momRec.M(), momRec.Pt(), momRec.Eta(), 
	   TMath::Pi()/180.*this->GetOpeningAngle(), this->GetOpeningAngle(), 
	   momRec.Theta(), 180./TMath::Pi() * momRec.Theta(), 
	   momRec.Phi(), 180./TMath::Pi() * momRec.Phi());
  }
}

//====================================
Double_t AliMUONPairLight::GetOpeningAngle() { 
  /// opening angle between the two muons in the lab frame (in degrees)
  TLorentzVector pRecMu0 =  fMu0.GetPRec();
  TLorentzVector pRecMu1 =  fMu1.GetPRec();
  TVector3 pRecMu03 = pRecMu0.Vect();
  TVector3 pRecMu13 = pRecMu1.Vect();
  Double_t scalar = pRecMu03.Dot(pRecMu13);
  Double_t modMu0 = pRecMu03.Mag();
  Double_t modMu1 = pRecMu13.Mag();
  Double_t theta = (TMath::ACos(scalar/(modMu0*modMu1)))*(180./TMath::Pi());
  return theta; 
}
//================================================
Bool_t AliMUONPairLight::IsDimuonFromCorrPiK(){
  ///check if we have a correlated pi/K

  AliMUONTrackLight *mu0 = this->GetMuon(0), *mu1 = this->GetMuon(1);
  Bool_t fromSameLine = kFALSE;
  if (mu0->IsParentPionOrKaon() &&
      mu1->IsParentPionOrKaon() &&
      mu1->GetQuarkPythiaLine() == mu0->GetQuarkPythiaLine()
      ) fromSameLine = kTRUE;

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