ROOT logo
/**
 *
 * \file MuonTrackingEfficiency.C
 * \author Philippe Pillot, Antoine Lardeux, Lizardo Valencia Palomo, Javier Martin Blanco
 * \brief Compute trk efficiency at DE, chamber, station and spectro levels vs various variables from the output of the efficiency task
 *
 * 1) efficiency estimator and error calculation at chamber and DE level:
 *  2 options:
 *    - using bayesian method with uniform prior
 *    - using Clopper-Pearson or other frequentist method
 *  if n ≠ 0: use above methods
 *  if n = 0: eff = -1 ± 0
 *
 * 2) efficiency and error propagation at station and spectrometer level:
 *  if eff = -1 for one or several ch/DE:
 *    - assume eff_ch = 1 ± 0 to compute eff_up and err_up with std error propagation at nth order
 *    - assume eff_ch = 0 ± 0 to compute eff_low and err_low with std error propagation at nth order
 *    - eff_spectro = eff_up + err_up - (eff_up-eff_low + err_low)
 *  otherwise: std efficiency and error propagation at nth order
 *
 * 3) efficiency and error integration over runs
 *  - performed from efficiency plots versus run
 *  - compute weighted average and apply standard error propagation to err_up and err_low
 *  - do it for both extreme cases above (with eff_up ± err–up and eff_low ± err_low)
 *  - int_eff = int_eff_up + int_err_up - (int_eff_up-int_eff_low + int_err_low)
 *
 */

#include <TROOT.h>
#include <TH1.h>
#include <TH2.h>
#include <THnSparse.h>
#include <TAxis.h>
#include <TString.h>
#include <TObjString.h>
#include <Riostream.h>
#include <TFile.h>
#include <TList.h>
#include <TCanvas.h>
#include <TGraphAsymmErrors.h>
#include <TMath.h>
#include <TArrayD.h>
#include <TStyle.h>
#include <THashList.h>
#include <TParameter.h>

//const Char_t *effErrMode = "cp"; // Clopper-Pearson
const Char_t *effErrMode = "b(1,1)mode"; // Bayesian with uniform prior

Double_t centMin = -999.;
Double_t centMax = 999.;
Double_t ptMin = 0.;
Double_t ptMax = -1.;
Int_t charge = 0; // 0 selects + and -, -1 and +1 selects - or + muons respectively

Bool_t moreTrackCandidates = kFALSE;

THashList *runWeights = 0x0;


void PlotMuonEfficiencyVsX(TString var, TString fileNameData, TString fileNameSave, Bool_t saveEdges, Bool_t print, Bool_t draw);
void PlotIntegratedMuonEfficiencyVsX(TString var, TString runList, TString fileNameWeights,
                                     TString fileNameData, TString fileNameSave, Bool_t print, Bool_t draw);

void PlotMuonEfficiencyVsXY(TString xVar, TString yVar, TString fileNameData, TString fileNameSave, Bool_t draw, Bool_t rap = kFALSE);

void PlotMuonEfficiency(TString fileNameData, TString fileNameSave, Bool_t saveEdges, Bool_t print, Bool_t draw);
void PlotMuonEfficiencyVsRun(TString runList, TString fileNameData, TString fileNameSave, Bool_t print, Bool_t draw);
void PlotIntegratedMuonEfficiency(TString fileNameWeights, TString fileNameSave, Bool_t print, Bool_t draw);

void PlotMuonEfficiencyPerDE(TString fileNameData, TString fileNameSave, Bool_t saveEdges);
void PlotMuonEfficiencyPerDEVsRun(TString runList, TString fileNameData, TString fileNameSave);
void PlotIntegratedMuonEfficiencyPerDE(TString fileNameWeights, TString fileNameSave);

Bool_t GetChamberEfficiency(THnSparse &TT, THnSparse &TD, TArrayD &chEff, TArrayD chEffErr[2], Bool_t printError = kFALSE);
void GetDEEfficiency(THnSparse &TT, THnSparse &TD, TGraphAsymmErrors &effVsDE);
void ComputeStationEfficiency(TArrayD &chEff, TArrayD chEffErr[2], Int_t iSt, Double_t &stEff, Double_t stEffErr[2]);
void GetStationEfficiency(TArrayD &chEff, TArrayD chEffErr[2], Int_t iSt, TGraphAsymmErrors *effVsX[3], Int_t ip, Double_t xp);
void ComputeStation45Efficiency(TArrayD &chEff, TArrayD chEffErr[2], Double_t &st45Eff, Double_t st45EffErr[2]);
void GetStation45Efficiency(TArrayD &chEff, TArrayD chEffErr[2], TGraphAsymmErrors *effVsX[3], Int_t ip, Double_t xp);
void ComputeTrackingEfficiency(Double_t stEff[6], Double_t stEffErr[6][2], Double_t &spectroEff, Double_t spectroEffErr[2]);
void GetTrackingEfficiency(TArrayD &chEff, TArrayD chEffErr[2], TGraphAsymmErrors *effVsSt[3],
                           TGraphAsymmErrors *effVsX[3], Int_t ip, Double_t xp, Bool_t print = kFALSE);
void IntegrateMuonEfficiency(TGraphAsymmErrors &effVsRunLow, TGraphAsymmErrors &effVsRunUp,
                             TGraphAsymmErrors &effVsX, Int_t ip, Double_t xp);

void LoadRunWeights(TString fileName);
void SetCentPtCh(THnSparse& SparseData);
TGraphAsymmErrors* CreateGraph(const char* name, const char* title, int value=-1);
void BeautifyGraph(TGraphAsymmErrors &g, const char* xAxisName, const char* yAxisName);
void BeautifyGraphs(TObjArray& array, const char* xAxisName, const char* yAxisName);
void SetRunLabel(TGraphAsymmErrors &g, Int_t irun, const TList& runs);
void SetRunLabel(TObjArray& array, Int_t irun, const TList& runs);


//---------------------------------------------------------------------------
void MuonTrackingEfficiency(TString runList = "runList.txt",
                            TString fileNameWeights = "",
                            TString fileNameData ="AnalysisResults.root",
                            TString fileNameSave = "efficiency_new.root")
{
  /// main function to compute, print and plot efficiencies
  
  PlotMuonEfficiencyVsX("centrality", fileNameData, fileNameSave, kFALSE, kFALSE, kTRUE);
  PlotMuonEfficiencyVsX("pt", fileNameData, fileNameSave, kFALSE, kFALSE, kTRUE);
  PlotMuonEfficiencyVsX("y", fileNameData, fileNameSave, kFALSE, kFALSE, kTRUE);
  PlotMuonEfficiencyVsX("phi", fileNameData, fileNameSave, kFALSE, kFALSE, kTRUE);
  PlotMuonEfficiencyVsX("charge", fileNameData, fileNameSave, kFALSE, kFALSE, kTRUE);
  
  PlotIntegratedMuonEfficiencyVsX("centrality", runList, fileNameWeights, fileNameData, fileNameSave, kFALSE, kTRUE);
  PlotIntegratedMuonEfficiencyVsX("pt", runList, fileNameWeights, fileNameData, fileNameSave, kFALSE, kTRUE);
  PlotIntegratedMuonEfficiencyVsX("y", runList, fileNameWeights, fileNameData, fileNameSave, kFALSE, kTRUE);
  PlotIntegratedMuonEfficiencyVsX("phi", runList, fileNameWeights, fileNameData, fileNameSave, kFALSE, kTRUE);
  PlotIntegratedMuonEfficiencyVsX("charge", runList, fileNameWeights, fileNameData, fileNameSave, kFALSE, kTRUE);
  
  PlotMuonEfficiencyVsXY("pt", "centrality", fileNameData, fileNameSave, kTRUE);
  PlotMuonEfficiencyVsXY("y", "centrality", fileNameData, fileNameSave, kTRUE);
  PlotMuonEfficiencyVsXY("pt", "y", fileNameData, fileNameSave, kTRUE);
  PlotMuonEfficiencyVsXY("phi", "y", fileNameData, fileNameSave, kTRUE, kTRUE);
  
  PlotMuonEfficiency(fileNameData, fileNameSave, kFALSE, kTRUE, kTRUE);
  PlotMuonEfficiencyVsRun(runList, fileNameData, fileNameSave, kFALSE, kTRUE);
  PlotIntegratedMuonEfficiency(fileNameWeights, fileNameSave, kTRUE, kTRUE);
  
  PlotMuonEfficiencyPerDE(fileNameData, fileNameSave, kFALSE);
  PlotMuonEfficiencyPerDEVsRun(runList, fileNameData, fileNameSave);
  PlotIntegratedMuonEfficiencyPerDE(fileNameWeights, fileNameSave);
  
}


//---------------------------------------------------------------------------
void PlotMuonEfficiencyVsX(TString var, TString fileNameData, TString fileNameSave, Bool_t saveEdges, Bool_t print, Bool_t draw)
{
  /// plot the tracking efficiency versus X
  
  printf("plotting efficiency versus %s...\n", var.Data());
  
  Int_t xDim = -1;
  if (var == "centrality") xDim = 1;
  else if (var == "pt") xDim = 2;
  else if (var == "y") xDim = 3;
  else if (var == "phi") xDim = 4;
  else if (var == "charge") xDim = 5;
  else {
    printf("incorrect variable. Choices are centrality, pt, y, phi and charge.\n");
    return;
  }
  
  // get input hists
  TFile *file = new TFile(fileNameData.Data(), "read");
  if (!file || !file->IsOpen()) {
    printf("cannot open file %s \n",fileNameData.Data());
    return;
  }
  TList *listTT = static_cast<TList*>(file->FindObjectAny("TotalTracksPerChamber"));
  TList *listTD = static_cast<TList*>(file->FindObjectAny("TracksDetectedPerChamber"));
  THnSparse *TT = static_cast<THnSparse*>(listTT->At(10));
  THnSparse *TD = static_cast<THnSparse*>(listTD->At(10));
  
  // output graph
  TGraphAsymmErrors *effVsX[3] = {0x0, 0x0, 0x0};
  TString nameAdd[3] = {"", "Low", "Up"};
  TString titleAdd[3] = {"", " - lower limit", " - upper limit"};
  for (Int_t i = 0; i < 1 || (saveEdges && i < 3); ++i) {
    effVsX[i] = CreateGraph(Form("trackingEffVs%s%s",var.Data(),nameAdd[i].Data()),
                            Form("Measured tracking efficiency versus %s%s",var.Data(),titleAdd[i].Data()));
  }
  
  // set the centrality and pT range for integration
  SetCentPtCh(*TT);
  SetCentPtCh(*TD);
  
  // loop over X bins
  TArrayD chEff(11);
  TArrayD chEffErr[2];
  chEffErr[0].Set(11);
  chEffErr[1].Set(11);
  for (Int_t ix = 1; ix <= TT->GetAxis(xDim)->GetNbins(); ix++) {
    
    if (print) cout << var.Data() << " " << TT->GetAxis(xDim)->GetBinLowEdge(ix) << "-" << TT->GetAxis(xDim)->GetBinUpEdge(ix) << ":" << endl;
    
    // set the var range to the current bin
    TT->GetAxis(xDim)->SetRange(ix, ix);
    TD->GetAxis(xDim)->SetRange(ix, ix);
    
    // compute chamber efficency and errors
    if (GetChamberEfficiency(*TT, *TD, chEff, chEffErr, print)) {
      
      // compute the overall tracking efficiency
      TGraphAsymmErrors *dummy[3] = {0x0, 0x0, 0x0};
      GetTrackingEfficiency(chEff, chEffErr, dummy, effVsX, ix-1, TT->GetAxis(xDim)->GetBinCenter(ix), print);
      
    } else {
      
      // fill graph with 1 +0 -1
      effVsX[0]->SetPoint(ix-1,TT->GetAxis(xDim)->GetBinCenter(ix),1.);
      effVsX[0]->SetPointError(ix-1,0.,0.,1.,0.);
      
      if (saveEdges) {
        
        // lower = 0 ± 0
        effVsX[1]->SetPoint(ix-1,TT->GetAxis(xDim)->GetBinCenter(ix),0.);
        effVsX[1]->SetPointError(ix-1,0.,0.,0.,0.);
        
        // upper = 1 ± 0
        effVsX[2]->SetPoint(ix-1,TT->GetAxis(xDim)->GetBinCenter(ix),1.);
        effVsX[2]->SetPointError(ix-1,0.,0.,0.,0.);
        
      }
      
    }
    
  }
  
  // close input file
  file->Close();
  
  // display
  for (Int_t i = 0; i < 1 || (saveEdges && i < 3); ++i) BeautifyGraph(*effVsX[i], var.Data(), "efficiency");
  
  if (draw) {
    new TCanvas(Form("cTrackingEffVs%s",var.Data()), Form("Measured tracking efficiency versus %s",var.Data()),1000,400);
    effVsX[0]->DrawClone("ap");
  }
  
  // save output
  file = new TFile(fileNameSave.Data(),"update");
  for (Int_t i = 0; i < 1 || (saveEdges && i < 3); ++i) effVsX[i]->Write(0x0, TObject::kOverwrite);
  file->Close();
  
  // clean memory
  for (Int_t i = 0; i < 1 || (saveEdges && i < 3); ++i) delete effVsX[i];
  
}


//---------------------------------------------------------------------------
void PlotIntegratedMuonEfficiencyVsX(TString var, TString runList, TString fileNameWeights,
                                     TString fileNameData, TString fileNameSave, Bool_t print, Bool_t draw)
{
  /// plot the tracking efficiency versus X for each run and integrated
  
  printf("plotting integrated efficiency versus %s...\n", var.Data());
  
  // load run weights
  if (!fileNameWeights.IsNull()) LoadRunWeights(fileNameWeights);
  if (!runWeights) {
    printf("Cannot compute integrated efficiency without run-by-run weights\n");
    return;
  }
  
  // open run list
  ifstream inFile(runList.Data());
  if (!inFile.is_open()) {
    printf("cannot open file %s\n",runList.Data());
    return;
  }
  
  // output graph
  TGraphAsymmErrors *intEffVsX = CreateGraph(Form("integratedTrackingEffVs%s",var.Data()),
                                             Form("Integrated tracking efficiency versus %s",var.Data()));
  
  Int_t n = -1;
  TArrayD x;
  TArrayD rec[2];
  Double_t gen = 0.;
  TArrayD effErr[2];
  
  // loop over runs
  while (!inFile.eof()) {
    
    // get current run number
    TString currRun;
    currRun.ReadLine(inFile,kTRUE);
    if(currRun.IsNull() || !currRun.IsDec()) continue;
    Int_t run = currRun.Atoi();
    
    printf("run %d: ", run);
    
    // compute efficiency vs var
    TString dataFile = Form("runs/%d/%s", run, fileNameData.Data());
    TString outFile = Form("runs/%d/%s", run, fileNameSave.Data());
    PlotMuonEfficiencyVsX(var, dataFile, outFile, kTRUE, print, kFALSE);
    
    // get run weight
    TParameter<Double_t> *weight = static_cast<TParameter<Double_t>*>(runWeights->FindObject(currRun.Data()));
    if (!weight) {
      printf("weight not found for run %s\n", currRun.Data());
      continue;
    }
    Double_t w = weight->GetVal();
    Double_t w2 = w*w;
    
    // get result
    TFile *file = new TFile(outFile.Data(), "read");
    if (!file || !file->IsOpen()) {
      printf("cannot open file\n");
      continue;
    }
    TGraphAsymmErrors *effVsX[2];
    effVsX[0] = static_cast<TGraphAsymmErrors*>(file->FindObjectAny(Form("trackingEffVs%sLow",var.Data())));
    effVsX[1] = static_cast<TGraphAsymmErrors*>(file->FindObjectAny(Form("trackingEffVs%sUp",var.Data())));
    if (!effVsX[0] || !effVsX[1]) {
      printf("trackingEffVs%sLow(Up) object not found\n", var.Data());
      continue;
    }
    
    // prepare the arrays if not already done
    if (n < 0) {
      n = effVsX[0]->GetN();
      x.Set(n, effVsX[0]->GetX());
      for (Int_t i = 0; i < 2; ++i) {
        rec[i].Set(n);
        effErr[i].Set(n);
      }
    } else if (n != effVsX[0]->GetN()) {
      printf("number of points in graph trackingEffVs%sLow(Up) for run %d is different than from previous runs\n", var.Data(), run);
      continue;
    }
    
    // integrate for all bins
    gen += w;
    for (Int_t ix = 0; ix < n; ++ix) {
      Double_t ieffErr[2] = {effVsX[0]->GetErrorYlow(ix), effVsX[1]->GetErrorYhigh(ix)};
      for (Int_t i = 0; i < 2; ++i) {
        rec[i][ix] += w*effVsX[i]->GetY()[ix];
        effErr[i][ix] += w2*ieffErr[i]*ieffErr[i];
      }
    }
    
    // close input file
    file->Close();
    
  }
  
  inFile.close();
  
  // fill output graph
  if (gen > 0.) {
    
    for (Int_t ix = 0; ix < n; ++ix) {
      
      intEffVsX->SetPoint(ix, x[ix], rec[1][ix]/gen);
      intEffVsX->SetPointError(ix, 0., 0., (rec[1][ix]-rec[0][ix]+TMath::Sqrt(effErr[0][ix]))/gen, TMath::Sqrt(effErr[1][ix])/gen);
      
    }
    
  } else {
    
    for (Int_t ix = 0; ix < n; ++ix) {
      
      printf("impossible to integrate, all weights = 0 or unknown ?!?\n");
      
      intEffVsX->SetPoint(ix, x[ix], -1.);
      intEffVsX->SetPointError(ix, 0., 0., 0., 0.);
      
    }
    
  }
  
  // display
  BeautifyGraph(*intEffVsX, var.Data(), "efficiency");
  
  if (draw) {
    new TCanvas(Form("cIntegratedTrackingEffVs%s",var.Data()), Form("Integrated tracking efficiency versus %s",var.Data()),1000,400);
    intEffVsX->DrawClone("ap");
  }
  
  // save output
  TFile *file = new TFile(fileNameSave.Data(),"update");
  intEffVsX->Write(0x0, TObject::kOverwrite);
  file->Close();
  
  // clean memory
  delete intEffVsX;
  
}


//---------------------------------------------------------------------------
void PlotMuonEfficiencyVsXY(TString xVar, TString yVar, TString fileNameData, TString fileNameSave, Bool_t draw, Bool_t rap)
{
  /// plot the tracking efficiency versus X,Y
  
  printf("plotting efficiency versus %s/%s...\n", xVar.Data(), yVar.Data());
  
  Int_t xDim = -1;
  if (xVar == "centrality") xDim = 1;
  else if (xVar == "pt") xDim = 2;
  else if (xVar == "y") xDim = 3;
  else if (xVar == "phi") xDim = 4;
  else if (xVar == "charge") xDim = 5;
  else {
    printf("incorrect variable. Choices are centrality, pt, y, phi and charge.\n");
    return;
  }
  Int_t yDim = -1;
  if (yVar == "centrality") yDim = 1;
  else if (yVar == "pt") yDim = 2;
  else if (yVar == "y") yDim = 3;
  else if (yVar == "phi") yDim = 4;
  else if (yVar == "charge") yDim = 5;
  else {
    printf("incorrect variable. Choices are centrality, pt, y, phi and charge.\n");
    return;
  }
  
  // get input hists
  TFile *file = new TFile(fileNameData.Data(), "read");
  if (!file || !file->IsOpen()) {
    printf("cannot open file %s\n",fileNameData.Data());
    return;
  }
  TList *listTT = static_cast<TList*>(file->FindObjectAny("TotalTracksPerChamber"));
  TList *listTD = static_cast<TList*>(file->FindObjectAny("TracksDetectedPerChamber"));
  THnSparse *TT = static_cast<THnSparse*>(listTT->At(10));
  THnSparse *TD = static_cast<THnSparse*>(listTD->At(10));
  
  // output map
  Int_t nxBins = TT->GetAxis(xDim)->GetNbins();
  Int_t nyBins = TT->GetAxis(yDim)->GetNbins();
  TH2F *effVsXY = new TH2F(Form("trackingEffVs%s-%s",xVar.Data(),yVar.Data()),
			   Form("Measured tracking efficiency versus %s and %s",xVar.Data(),yVar.Data()),
			   nxBins, TT->GetAxis(xDim)->GetBinLowEdge(1), TT->GetAxis(xDim)->GetBinUpEdge(nxBins),
			   nyBins, TT->GetAxis(yDim)->GetBinLowEdge(1), TT->GetAxis(yDim)->GetBinUpEdge(nyBins));
  effVsXY->SetDirectory(0);
  
  // set the centrality and pT range for integration
  SetCentPtCh(*TT);
  SetCentPtCh(*TD);
  
  // loop over X/Y bins
  TArrayD chEff(11);
  TArrayD chEffErr[2];
  chEffErr[0].Set(11);
  chEffErr[1].Set(11);
  for (Int_t ix = 1; ix <= nxBins; ++ix) {
    
    // set x range
    TT->GetAxis(xDim)->SetRange(ix, ix);
    TD->GetAxis(xDim)->SetRange(ix, ix);
    
    for (Int_t iy = 1; iy <= nyBins; ++iy) {
      
      // set y range
      TT->GetAxis(yDim)->SetRange(iy, iy);
      TD->GetAxis(yDim)->SetRange(iy, iy);
      
      // compute chamber efficency and errors
      if (GetChamberEfficiency(*TT, *TD, chEff, chEffErr, kFALSE)) {
        
        // compute the overall tracking efficiency
        TGraphAsymmErrors *dummy[3] = {0x0, 0x0, 0x0};
        GetTrackingEfficiency(chEff, chEffErr, dummy, dummy, 0, 0.);
        
        // fill histo
        effVsXY->Fill(TT->GetAxis(xDim)->GetBinCenter(ix),TT->GetAxis(yDim)->GetBinCenter(iy),chEff[0]);
        effVsXY->SetBinError(ix,iy,TMath::Max(chEffErr[0][0], chEffErr[1][0]));
        
      } else {
        
        // fill histo with 0 ± 1
	effVsXY->Fill(TT->GetAxis(xDim)->GetBinCenter(ix),TT->GetAxis(yDim)->GetBinCenter(iy),0.);
	effVsXY->SetBinError(ix,iy,1.);
        
      }
      
    }
    
  }
  
  // close input file
  file->Close();
  
  // display
  effVsXY->GetXaxis()->SetTitle(xVar.Data());
  effVsXY->GetXaxis()->CenterTitle(kTRUE);
  effVsXY->GetXaxis()->SetLabelFont(22);
  effVsXY->GetXaxis()->SetTitleFont(22);
  effVsXY->GetYaxis()->SetTitle(yVar.Data());
  effVsXY->GetYaxis()->CenterTitle(kTRUE);
  effVsXY->GetYaxis()->SetLabelFont(22);
  effVsXY->GetYaxis()->SetTitleFont(22);
  effVsXY->GetZaxis()->SetTitle("efficiency");
  effVsXY->GetZaxis()->SetLabelFont(22);
  effVsXY->GetZaxis()->SetTitleFont(22);
  
  if (draw) {
    new TCanvas(Form("cTrackingEffVs%s-%s",xVar.Data(),yVar.Data()), Form("Measured tracking efficiency versus %s and %s",xVar.Data(),yVar.Data()),700,600);
    effVsXY->DrawClone("surf1");
  }
  
  // save output
  file = new TFile(fileNameSave.Data(),"update");
  effVsXY->Write(0x0, TObject::kOverwrite);
  
  // add an histo with variable size rapidity bins
  if (yDim == 3 && rap) {
    
    TH2F* effVsXYrap = new TH2F();
    TString rapName = Form("trackingEffVs%s-%sRapBins", xVar.Data(), yVar.Data());
    TString rapTitle = Form("Measured tracking efficiency versus %s and %s", xVar.Data(), yVar.Data());
    effVsXYrap->SetTitle(rapTitle.Data());
    effVsXYrap->SetName(rapName.Data());
    
    Double_t xBinEdge[nxBins+1];
    for (Int_t xbin = 0; xbin <= nxBins; ++xbin)
      xBinEdge[xbin] = effVsXY->GetXaxis()->GetBinLowEdge(xbin+1);
    
    Double_t yBinEdge[nyBins+1];
    for (Int_t ybin = 0; ybin <= nyBins; ++ybin)
      yBinEdge[ybin] = 2*TMath::ATan(TMath::Exp((effVsXY->GetYaxis()->GetBinLowEdge(ybin+1))));
    
    effVsXYrap->SetBins(nxBins, xBinEdge, nyBins, yBinEdge);
    
    for (Int_t xbin = 1; xbin <= nxBins; ++xbin)
      for (Int_t ybin = 1; ybin <= nyBins; ++ybin)
        effVsXYrap->SetBinContent(xbin, ybin, effVsXY->GetBinContent(xbin,ybin));
    
    effVsXYrap->Write(0x0, TObject::kOverwrite);
    
    delete effVsXYrap;

  }
  
  file->Close();
  
  // clean memory
  delete effVsXY;
  
}


//---------------------------------------------------------------------------
void PlotMuonEfficiency(TString fileNameData, TString fileNameSave, Bool_t saveEdges, Bool_t print, Bool_t draw)
{
  /// plot chamber, station and overall tracking efficiency
  
  printf("plotting efficiency...\n");
  
  // get input hists
  TFile *file = new TFile(fileNameData.Data(), "read");
  if (!file || !file->IsOpen()) {
    printf("cannot open file %s \n",fileNameData.Data());
    return;
  }
  TList *listTT = static_cast<TList*>(file->FindObjectAny("TotalTracksPerChamber"));
  TList *listTD = static_cast<TList*>(file->FindObjectAny("TracksDetectedPerChamber"));
  THnSparse *TT = static_cast<THnSparse*>(listTT->At(10));
  THnSparse *TD = static_cast<THnSparse*>(listTD->At(10));
  
  // output graphs
  TGraphAsymmErrors *effVsCh[3] = {0x0, 0x0, 0x0};
  TGraphAsymmErrors *effVsSt[3] = {0x0, 0x0, 0x0};
  TString nameAdd[3] = {"", "Low", "Up"};
  TString titleAdd[3] = {"", " - lower limit", " - upper limit"};
  for (Int_t i = 0; i < 1 || (saveEdges && i < 3); ++i) {
    effVsCh[i] = CreateGraph(Form("chamberEff%s",nameAdd[i].Data()),
                             Form("Measured efficiency per chamber (0 = spectro)%s",titleAdd[i].Data()));
    effVsSt[i] = CreateGraph(Form("stationEff%s",nameAdd[i].Data()),
                             Form("Measured efficiency per station (6 = st4&5)%s",titleAdd[i].Data()));
  }
  
  // set the centrality and pT ranges for integration
  SetCentPtCh(*TT);
  SetCentPtCh(*TD);
  
  TArrayD chEff(11);
  TArrayD chEffErr[2];
  chEffErr[0].Set(11);
  chEffErr[1].Set(11);
  
  // compute chamber efficency and errors
  if (GetChamberEfficiency(*TT, *TD, chEff, chEffErr, print)) {
    
    // compute the overall tracking efficiency
    GetTrackingEfficiency(chEff, chEffErr, effVsSt, effVsCh, 0, 0., print);
    
  } else {
    
    // set tracking efficiency to 1 +0 -1
    effVsCh[0]->SetPoint(0,0.,1.);
    effVsCh[0]->SetPointError(0,0.,0.,1.,0.);
    
    if (saveEdges) {
      
      // lower = 0 ± 0
      effVsCh[1]->SetPoint(0,0.,0.);
      effVsCh[1]->SetPointError(0,0.,0.,0.,0.);
      
      // upper = 1 ± 0
      effVsCh[2]->SetPoint(0,0.,1.);
      effVsCh[2]->SetPointError(0,0.,0.,0.,0.);
      
    }
    
  }
  
  // fill graph vs chamber
  for (Int_t iCh = 1; iCh < 11; iCh++) {
    for (Int_t i = 0; i < 1 || (saveEdges && i < 3); ++i) {
      effVsCh[i]->SetPoint(iCh,iCh,chEff[iCh]);
      effVsCh[i]->SetPointError(iCh,0.,0.,chEffErr[0][iCh],chEffErr[1][iCh]);
    }
  }
  
  // close input file
  file->Close();
  
  // display
  for (Int_t i = 0; i < 1 || (saveEdges && i < 3); ++i) {
    effVsCh[i]->GetXaxis()->Set(12, -0.5, 10.5);
    effVsCh[i]->GetXaxis()->SetNdivisions(11);
    BeautifyGraph(*effVsCh[i], "chamber", "efficiency");
    effVsSt[i]->GetXaxis()->Set(7, 0.5, 6.5);
    effVsSt[i]->GetXaxis()->SetNdivisions(6);
    BeautifyGraph(*effVsSt[i], "station", "efficiency");
  }
  
  if (draw) {
    TCanvas *c = new TCanvas("cEfficiency", "Measured tracking efficiency" , 1000, 400);
    c->Divide(2,1);
    gROOT->SetSelectedPad(c->cd(1));
    effVsCh[0]->DrawClone("ap");
    gROOT->SetSelectedPad(c->cd(2));
    effVsSt[0]->DrawClone("ap");
  }
  
  // save output
  file = new TFile(fileNameSave.Data(),"update");
  for (Int_t i = 0; i < 1 || (saveEdges && i < 3); ++i) effVsCh[i]->Write(0x0, TObject::kOverwrite);
  for (Int_t i = 0; i < 1 || (saveEdges && i < 3); ++i) effVsSt[i]->Write(0x0, TObject::kOverwrite);
  file->Close();
  
  // clean memory
  for (Int_t i = 0; i < 1 || (saveEdges && i < 3); ++i) {
    delete effVsCh[i];
    delete effVsSt[i];
  }
  
}


//---------------------------------------------------------------------------
void PlotMuonEfficiencyVsRun(TString runList, TString fileNameData, TString fileNameSave, Bool_t print, Bool_t draw)
{
  /// plot chamber, station and overall tracking efficiency versus run
  
  printf("plotting efficiency versus run...\n");
  
  // open run list
  ifstream inFile(runList.Data());
  if (!inFile.is_open()) {
    printf("cannot open file %s\n",runList.Data());
    return;
  }
  
  // output graphs
  TObjArray chamberVsRunGraphs; // 10 graphs: 1 for each chamber
  chamberVsRunGraphs.SetOwner(kTRUE);
  for ( Int_t iCh = 1; iCh < 11; ++iCh)
    chamberVsRunGraphs.Add(CreateGraph("effCh%dVsRun", "Measured efficiency for chamber %d versus run",iCh));
  
  TObjArray stationVsRunGraphs[3]; // 6 graphs: 1 for each station, and 1 for station 4&5
  TGraphAsymmErrors *trkVsRun[3];
  TString nameAdd[3] = {"", "Low", "Up"};
  TString titleAdd[3] = {"", " - lower limit", " - upper limit"};
  for (Int_t i = 0; i < 3; ++i) {
    
    stationVsRunGraphs[i].SetOwner(kTRUE);
    for ( Int_t iSt = 1; iSt < 6; ++iSt)
      stationVsRunGraphs[i].Add(CreateGraph(Form("effSt%%dVsRun%s",nameAdd[i].Data()),
                                            Form("Measured efficiency for station %%d versus run%s",titleAdd[i].Data()),iSt));
    stationVsRunGraphs[i].Add(CreateGraph(Form("effSt4&5VsRun%s",nameAdd[i].Data()),
                                          Form("Measured efficiency for station 4&5 versus run%s",titleAdd[i].Data())));
    
    trkVsRun[i] = CreateGraph(Form("trackingEffVsRun%s",nameAdd[i].Data()),
                              Form("Measured tracking efficiency versus run%s", titleAdd[i].Data()));
    
  }
  
  Int_t irun = -1;
  TList runs;
  runs.SetOwner();
  
  // loop over runs
  while (!inFile.eof()) {
    
    // get current run number
    TString currRun;
    currRun.ReadLine(inFile,kTRUE);
    if(currRun.IsNull()) continue;
    runs.AddLast(new TObjString(currRun));
    irun++;
    
    Int_t run = currRun.Atoi();
    
    printf("run %d: ", run);
    
    // compute efficiencies for this run
    TString dataFile = Form("runs/%d/%s", run, fileNameData.Data());
    TString outFile = Form("runs/%d/%s", run, fileNameSave.Data());
    PlotMuonEfficiency(dataFile, outFile, kTRUE, print, kFALSE);
    
    TFile *file = new TFile(outFile.Data(), "read");
    if (!file || !file->IsOpen()) {
      printf("cannot open file\n");
      continue;
    }
    
    // loop over central value and edges
    for (Int_t i = 0; i < 3; ++i) {
      
      // get results
      TGraphAsymmErrors *effVsCh;
      TGraphAsymmErrors *effVsSt;
      effVsCh = static_cast<TGraphAsymmErrors*>(file->FindObjectAny(Form("chamberEff%s",nameAdd[i].Data())));
      effVsSt = static_cast<TGraphAsymmErrors*>(file->FindObjectAny(Form("stationEff%s",nameAdd[i].Data())));
      if (!effVsCh || !effVsSt) {
        printf("efficiency graph not found\n");
        continue;
      }
      
      // fill chamber efficiency
      if (i == 0) for ( Int_t iCh = 0; iCh < 10; ++iCh) {
        TGraphAsymmErrors *g = static_cast<TGraphAsymmErrors*>(chamberVsRunGraphs.UncheckedAt(iCh));
        g->SetPoint(irun,irun,effVsCh->GetY()[iCh+1]);
        g->SetPointError(irun,0.,0.,effVsCh->GetErrorYlow(iCh+1),effVsCh->GetErrorYhigh(iCh+1));
      }
      
      // fill station efficiency
      for ( Int_t iSt = 0; iSt < 6; ++iSt) {
        TGraphAsymmErrors *g = static_cast<TGraphAsymmErrors*>(stationVsRunGraphs[i].UncheckedAt(iSt));
        g->SetPoint(irun,irun,effVsSt->GetY()[iSt]);
        g->SetPointError(irun,0.,0.,effVsSt->GetErrorYlow(iSt),effVsSt->GetErrorYhigh(iSt));
      }
      
      // fill spectrometer efficiency
      trkVsRun[i]->SetPoint(irun,irun,effVsCh->GetY()[0]);
      trkVsRun[i]->SetPointError(irun,0.,0.,effVsCh->GetErrorYlow(0),effVsCh->GetErrorYhigh(0));
      
    }
    
    file->Close();
    
  }
  
  inFile.close();
  
  // display
  BeautifyGraphs(chamberVsRunGraphs,"run number","efficiency");
  SetRunLabel(chamberVsRunGraphs,irun,runs);
  for (Int_t i = 0; i < 3; ++i) {
    BeautifyGraph(*trkVsRun[i],"run number","efficiency");
    SetRunLabel(*trkVsRun[i],irun,runs);
    BeautifyGraphs(stationVsRunGraphs[i],"run number","efficiency");
    SetRunLabel(stationVsRunGraphs[i],irun,runs);
  }
  
  if (draw) {
    new TCanvas("cTrackingEffVsRun", "Tracking efficiency versus run",1000,400);
    trkVsRun[0]->DrawClone("ap");
  }
  
  // save output
  TFile* file = new TFile(fileNameSave.Data(),"update");
  chamberVsRunGraphs.Write("ChamberEffVsRun", TObject::kOverwrite | TObject::kSingleKey);
  for (Int_t i = 0; i < 3; ++i)
    stationVsRunGraphs[i].Write(Form("StationEffVsRun%s",nameAdd[i].Data()), TObject::kOverwrite | TObject::kSingleKey);
  for (Int_t i = 0; i < 3; ++i) trkVsRun[i]->Write(0x0, TObject::kOverwrite);
  file->Close();
  
  // clean memory
  for (Int_t i = 0; i < 3; ++i) delete trkVsRun[i];
  
}


//---------------------------------------------------------------------------
void PlotIntegratedMuonEfficiency(TString fileNameWeights, TString fileNameSave, Bool_t print, Bool_t draw)
{
  /// plot chamber, station and overall tracking efficiency integrated over runs
  
  printf("plotting integrated efficiency...\n");
  
  // load run weights
  if (!fileNameWeights.IsNull()) LoadRunWeights(fileNameWeights);
  if (!runWeights) {
    printf("Cannot compute integrated efficiency without run-by-run weights\n");
    return;
  }
  
  // get input hists
  TFile *file = new TFile(fileNameSave.Data(), "update");
  if (!file || !file->IsOpen()) {
    printf("cannot open file\n");
    return;
  }
  TObjArray *chamberVsRunGraphs = static_cast<TObjArray*>(file->FindObjectAny("ChamberEffVsRun"));
  TObjArray *stationVsRunGraphs[2];
  stationVsRunGraphs[0] = static_cast<TObjArray*>(file->FindObjectAny("StationEffVsRunLow"));
  stationVsRunGraphs[1] = static_cast<TObjArray*>(file->FindObjectAny("StationEffVsRunUp"));
  TGraphAsymmErrors *trkVsRun[2];
  trkVsRun[0] = static_cast<TGraphAsymmErrors*>(file->FindObjectAny("trackingEffVsRunLow"));
  trkVsRun[1] = static_cast<TGraphAsymmErrors*>(file->FindObjectAny("trackingEffVsRunUp"));
  if (!chamberVsRunGraphs || !stationVsRunGraphs[0] || !stationVsRunGraphs[1] || !trkVsRun[0] || !trkVsRun[1]) {
    printf("object not found --> you must first plot the efficiency versus run\n");
    return;
  }
  
  // output graphs
  TGraphAsymmErrors *effVsCh = CreateGraph("integratedChamberEff", "Integrated efficiency per chamber (0 = spectro)");
  TGraphAsymmErrors *effVsSt = CreateGraph("integratedStationEff", "Integrated efficiency per station (6 = st4&5)");
  
  // integrate spectrometer efficiency
  IntegrateMuonEfficiency(*trkVsRun[0], *trkVsRun[1], *effVsCh, 0, 0.);
  
  // integrate chamber efficiency
  for ( Int_t iCh = 0; iCh < 10; ++iCh) {
    TGraphAsymmErrors *g = static_cast<TGraphAsymmErrors*>(chamberVsRunGraphs->UncheckedAt(iCh));
    IntegrateMuonEfficiency(*g, *g, *effVsCh, iCh+1, iCh+1);
  }
  
  // integrate station efficiency
  for ( Int_t iSt = 0; iSt < 6; ++iSt) {
    TGraphAsymmErrors *gLow = static_cast<TGraphAsymmErrors*>(stationVsRunGraphs[0]->UncheckedAt(iSt));
    TGraphAsymmErrors *gUp = static_cast<TGraphAsymmErrors*>(stationVsRunGraphs[1]->UncheckedAt(iSt));
    IntegrateMuonEfficiency(*gLow, *gUp, *effVsSt, iSt, iSt+1);
  }
  
  // print results
  if (print) {
    for (Int_t iCh = 1; iCh < 11; ++iCh) {
      cout << "Efficiency chamber " << iCh << " : ";
      cout << effVsCh->GetY()[iCh] << " + " << effVsCh->GetErrorYhigh(iCh) << " - " << effVsCh->GetErrorYlow(iCh) << endl;
    }
    for (Int_t iSt = 0; iSt < 6; ++iSt) {
      if (iSt < 5) cout << "Station " << iSt+1 << " = ";
      else cout << "Station 45 = ";
      cout << effVsSt->GetY()[iSt] << " + " << effVsSt->GetErrorYhigh(iSt) << " - " << effVsSt->GetErrorYlow(iSt) << endl;
    }
    cout << "Total tracking efficiency : ";
    cout << effVsCh->GetY()[0] << " + " << effVsCh->GetErrorYhigh(0) << " - " << effVsCh->GetErrorYlow(0) << endl << endl;
  }
  
  // display
  effVsCh->GetXaxis()->Set(12, -0.5, 10.5);
  effVsCh->GetXaxis()->SetNdivisions(11);
  BeautifyGraph(*effVsCh, "chamber", "efficiency");
  effVsSt->GetXaxis()->Set(7, 0.5, 6.5);
  effVsSt->GetXaxis()->SetNdivisions(6);
  BeautifyGraph(*effVsSt, "station", "efficiency");
  
  if (draw) {
    TCanvas *c = new TCanvas("cIntegratedEfficiency", "Integrated tracking efficiency" , 1000, 400);
    c->Divide(2,1);
    gROOT->SetSelectedPad(c->cd(1));
    effVsCh->DrawClone("ap");
    gROOT->SetSelectedPad(c->cd(2));
    effVsSt->DrawClone("ap");
  }
  
  // save output
  effVsCh->Write(0x0, TObject::kOverwrite);
  effVsSt->Write(0x0, TObject::kOverwrite);
  file->Close();
  
  // clean memory
  delete effVsCh;
  delete effVsSt;
  
}


//---------------------------------------------------------------------------
void PlotMuonEfficiencyPerDE(TString fileNameData, TString fileNameSave, Bool_t saveEdges)
{
  /// plot chamber and station efficiency per DE
  
  printf("plotting efficiency per DE...\n");
  
  // get input hists
  TFile *file = new TFile(fileNameData.Data(), "read");
  if (!file || !file->IsOpen()) {
    printf("cannot open file %s \n",fileNameData.Data());
    return;
  }
  TList *listTT = static_cast<TList*>(file->FindObjectAny("TotalTracksPerChamber"));
  TList *listTD = static_cast<TList*>(file->FindObjectAny("TracksDetectedPerChamber"));
  
  // output graph arrays
  TObjArray chamberVsDEGraphs; // 10 graphs: 1 for each chamber
  chamberVsDEGraphs.SetOwner(kTRUE);
  TGraphAsymmErrors *gCh[10]; // shortcut
  
  TObjArray stationVsDEGraphs[3]; // 6 graphs: 1 for each station, and 1 for station 4&5
  TString nameAdd[3] = {"", "Low", "Up"};
  TString titleAdd[3] = {"", " - lower limit", " - upper limit"};
  for (Int_t i = 0; i < 3; ++i) stationVsDEGraphs[i].SetOwner(kTRUE);
  TGraphAsymmErrors *gSt[6][3]; // shortcut
  for (Int_t iSt = 0; iSt < 6; ++iSt) for (Int_t i = 0; i < 3; ++i) gSt[iSt][i] = 0x0;
  
  // loop over chambers
  for (Int_t iCh = 0; iCh < 10; ++iCh) {
    
    // output graphs
    chamberVsDEGraphs.Add(CreateGraph("effCh%dVsDE","Measured efficiency for chamber %d per DE",iCh+1));
    gCh[iCh] = static_cast<TGraphAsymmErrors*>(chamberVsDEGraphs.UncheckedAt(iCh));
    
    // get input hists
    THnSparse *TT = static_cast<THnSparse*>(listTT->At(iCh));
    THnSparse *TD = static_cast<THnSparse*>(listTD->At(iCh));
    
    // set the centrality and pT range for integration
    SetCentPtCh(*TT);
    SetCentPtCh(*TD);
    
    // compute DE efficency and errors
    GetDEEfficiency(*TT, *TD, *gCh[iCh]);
    
  }
  
  // close input file
  file->Close();
  
  TArrayD chEff(11);
  TArrayD chEffErr[2];
  chEffErr[0].Set(11);
  chEffErr[1].Set(11);
  
  // loop over the first 3 stations
  for (Int_t iSt = 0; iSt < 3; ++iSt) {
    
    // output graphs
    for (Int_t i = 0; i < 1 || (saveEdges && i < 3); ++i) {
      stationVsDEGraphs[i].Add(CreateGraph(Form("effSt%%dVsDE%s",nameAdd[i].Data()),
                                           Form("Measured efficiency for station %%d per DE%s",titleAdd[i].Data()),iSt+1));
      gSt[iSt][i] = static_cast<TGraphAsymmErrors*>(stationVsDEGraphs[i].UncheckedAt(iSt));
    }
    
    // loop over DE
    Int_t nDE = gCh[2*iSt]->GetN();
    for (Int_t iDE = 0; iDE < nDE; ++iDE) {
      
      // copy efficiency
      for (Int_t iCh = 0; iCh < 2; ++iCh) {
        chEff[2*iSt+iCh+1] = gCh[2*iSt+iCh]->GetY()[iDE];
        chEffErr[0][2*iSt+iCh+1] = gCh[2*iSt+iCh]->GetErrorYlow(iDE);
        chEffErr[1][2*iSt+iCh+1] = gCh[2*iSt+iCh]->GetErrorYhigh(iDE);
      }
      
      // compute station efficiency
      GetStationEfficiency(chEff, chEffErr, iSt, gSt[iSt], iDE, iDE);
      
    }
    
  }
  
  // output graphs for last 2 stations
  for (Int_t i = 0; i < 1 || (saveEdges && i < 3); ++i) {
    for (Int_t iSt = 3; iSt < 5; ++iSt) {
      stationVsDEGraphs[i].Add(CreateGraph(Form("effSt%%dVsDE%s",nameAdd[i].Data()),
                                           Form("Measured efficiency for station %%d per DE%s",titleAdd[i].Data()),iSt+1));
      gSt[iSt][i] = static_cast<TGraphAsymmErrors*>(stationVsDEGraphs[i].UncheckedAt(iSt));
    }
    stationVsDEGraphs[i].Add(CreateGraph(Form("effSt4&5VsDE%s",nameAdd[i].Data()),
                                         Form("Measured efficiency for station 4&5 per DE%s",titleAdd[i].Data())));
    gSt[5][i] = static_cast<TGraphAsymmErrors*>(stationVsDEGraphs[i].UncheckedAt(5));
  }
  
  // loop over DE
  Int_t nDE = gCh[6]->GetN();
  for (Int_t iDE = 0; iDE < nDE; ++iDE) {
    
    // copy efficiency
    for (Int_t iCh = 6; iCh < 10; ++iCh) {
      chEff[iCh+1] = gCh[iCh]->GetY()[iDE];
      chEffErr[0][iCh+1] = gCh[iCh]->GetErrorYlow(iDE);
      chEffErr[1][iCh+1] = gCh[iCh]->GetErrorYhigh(iDE);
    }
    
    // compute station 4&5 efficiency individually
    for (Int_t iSt = 3; iSt < 5; ++iSt) GetStationEfficiency(chEff, chEffErr, iSt, gSt[iSt], iDE, iDE);
    
    // compute station 4&5 efficiency together
    GetStation45Efficiency(chEff, chEffErr, gSt[5], iDE, iDE);
    
  }
  
  // display
  for (Int_t iCh = 0; iCh < 10; ++iCh) {
    Int_t nDE = gCh[iCh]->GetN();
    gCh[iCh]->GetXaxis()->Set(nDE+1, -0.5, nDE-0.5);
    gCh[iCh]->GetXaxis()->SetNdivisions(nDE);
  }
  BeautifyGraphs(chamberVsDEGraphs,"Detection Element","efficiency");
  for (Int_t i = 0; i < 1 || (saveEdges && i < 3); ++i) {
    for (Int_t iSt = 0; iSt < 6; ++iSt) {
      Int_t nDE = gSt[iSt][i]->GetN();
      gSt[iSt][i]->GetXaxis()->Set(nDE+1, -0.5, nDE-0.5);
      gSt[iSt][i]->GetXaxis()->SetNdivisions(nDE);
    }
    BeautifyGraphs(stationVsDEGraphs[i],"Detection Element","efficiency");
    
  }
  
  // save Output
  file = new TFile(fileNameSave.Data(),"update");
  chamberVsDEGraphs.Write("ChamberEffVsDE", TObject::kOverwrite | TObject::kSingleKey);
  for (Int_t i = 0; i < 1 || (saveEdges && i < 3); ++i)
    stationVsDEGraphs[i].Write(Form("StationEffVsDE%s",nameAdd[i].Data()), TObject::kOverwrite | TObject::kSingleKey);
  file->Close();
  
}


//---------------------------------------------------------------------------
void PlotMuonEfficiencyPerDEVsRun(TString runList, TString fileNameData, TString fileNameSave)
{
  /// plot chamber and station efficiency per DE versus run
  
  printf("plotting efficiency per DE versus run...\n");
  
  // open run list
  ifstream inFile(runList.Data());
  if (!inFile.is_open()) {
    printf("cannot open file %s\n",runList.Data());
    return;
  }
  
  // output graphs
  TObjArray deVsRunGraphs; // 1 graph per DE
  deVsRunGraphs.SetOwner(kTRUE);
  TObjArray stDEVsRunGraphs[3]; // 1 graph per pair (quartet) of DE in individual stations (stations 4&5)
  TString nameAdd[3] = {"", "Low", "Up"};
  TString titleAdd[3] = {"", " - lower limit", " - upper limit"};
  for (Int_t i = 0; i < 3; ++i) stDEVsRunGraphs[i].SetOwner(kTRUE);
  Bool_t createGraph = kTRUE;
  
  Int_t irun = -1;
  TList runs;
  runs.SetOwner();
  
  // loop over runs
  while (!inFile.eof()) {
    
    // get current run number
    TString currRun;
    currRun.ReadLine(inFile,kTRUE);
    if(currRun.IsNull()) continue;
    runs.AddLast(new TObjString(currRun));
    irun++;
    
    Int_t run = currRun.Atoi();
    
    printf("run %d: ", run);
    
    // compute efficiencies for this run
    TString dataFile = Form("runs/%d/%s", run, fileNameData.Data());
    TString outFile = Form("runs/%d/%s", run, fileNameSave.Data());
    PlotMuonEfficiencyPerDE(dataFile, outFile, kTRUE);
    
    TFile *file = new TFile(outFile.Data(), "read");
    if (!file || !file->IsOpen()) {
      printf("cannot open file\n");
      continue;
    }
    
    // get results
    TObjArray *chamberVsDEGraphs = static_cast<TObjArray*>(file->FindObjectAny("ChamberEffVsDE"));
    if (!chamberVsDEGraphs) {
      printf("efficiency graph not found\n");
      continue;
    }
    
    Int_t currentDE = 0;
    
    // loop over chambers
    for ( Int_t iCh = 0; iCh < 10; ++iCh) {
      
      // input graph
      TGraphAsymmErrors *g = static_cast<TGraphAsymmErrors*>(chamberVsDEGraphs->UncheckedAt(iCh));
      Int_t nDE = g->GetN();
      
      // loop over DE
      for (Int_t iDE = 0; iDE < nDE; ++iDE) {
        
        // output graph
        if (createGraph) deVsRunGraphs.Add(CreateGraph("effDE%dVsRun","Measured efficiency for DE %d versus run",100*(iCh+1)+iDE));
        TGraphAsymmErrors *gDE= static_cast<TGraphAsymmErrors*>(deVsRunGraphs.UncheckedAt(currentDE++));
        
        // fill DE efficiency
        gDE->SetPoint(irun,irun,g->GetY()[iDE]);
        gDE->SetPointError(irun,0.,0.,g->GetErrorYlow(iDE),g->GetErrorYhigh(iDE));
        
      }
      
    }
    
    // loop over central value and edges
    for (Int_t i = 0; i < 3; ++i) {
      
      // get results
      TObjArray *stationVsDEGraphs = static_cast<TObjArray*>(file->FindObjectAny(Form("StationEffVsDE%s",nameAdd[i].Data())));
      if (!stationVsDEGraphs) {
        printf("efficiency graph not found\n");
        continue;
      }
      
      Int_t currentStDE = 0;
      
      // loop over stations
      for ( Int_t iSt = 0; iSt < 6; ++iSt) {
        
        // input graph
        TGraphAsymmErrors *g = static_cast<TGraphAsymmErrors*>(stationVsDEGraphs->UncheckedAt(iSt));
        Int_t nDE = g->GetN();
        
        // loop over DE
        for (Int_t iDE = 0; iDE < nDE; ++iDE) {
          
          // output graph
          if (createGraph) {
            TString sSt = (iSt<5) ? Form("%d",iSt+1) : "4&5";
            stDEVsRunGraphs[i].Add(CreateGraph(Form("effSt%sDE%%dVsRun%s",sSt.Data(),nameAdd[i].Data()),
                                               Form("Measured efficiency for DE %%d in station %s versus run%s",sSt.Data(),titleAdd[i].Data()),iDE));
          }
          TGraphAsymmErrors *gDE= static_cast<TGraphAsymmErrors*>(stDEVsRunGraphs[i].UncheckedAt(currentStDE++));
          
          // fill DE efficiency
          gDE->SetPoint(irun,irun,g->GetY()[iDE]);
          gDE->SetPointError(irun,0.,0.,g->GetErrorYlow(iDE),g->GetErrorYhigh(iDE));
          
        }
        
      }
      
    }
      
    file->Close();
    
    createGraph = kFALSE;
    
  }
  
  inFile.close();
  
  // display
  BeautifyGraphs(deVsRunGraphs,"run number","efficiency");
  SetRunLabel(deVsRunGraphs,irun,runs);
  for (Int_t i = 0; i < 3; ++i) {
    BeautifyGraphs(stDEVsRunGraphs[i],"run number","efficiency");
    SetRunLabel(stDEVsRunGraphs[i],irun,runs);
  }
  
  // save output
  TFile* file = new TFile(fileNameSave.Data(),"update");
  deVsRunGraphs.Write("DEEffVsRun", TObject::kOverwrite | TObject::kSingleKey);
  for (Int_t i = 0; i < 3; ++i)
    stDEVsRunGraphs[i].Write(Form("DEEffPerStationVsRun%s",nameAdd[i].Data()), TObject::kOverwrite | TObject::kSingleKey);
  file->Close();
  
}


//---------------------------------------------------------------------------
void PlotIntegratedMuonEfficiencyPerDE(TString fileNameWeights, TString fileNameSave)
{
  /// plot chamber and station efficiency per DE integrated over runs
  
  printf("plotting integrated efficiency per DE...\n");
  
  // load run weights
  if (!fileNameWeights.IsNull()) LoadRunWeights(fileNameWeights);
  if (!runWeights) {
    printf("Cannot compute integrated efficiency without run-by-run weights\n");
    return;
  }
  
  // get input hists
  TFile *file = new TFile(fileNameSave.Data(), "update");
  if (!file || !file->IsOpen()) {
    printf("cannot open file\n");
    return;
  }
  TObjArray *deVsRunGraphs = static_cast<TObjArray*>(file->FindObjectAny("DEEffVsRun"));
  TObjArray *stDEVsRunGraphs[2];
  stDEVsRunGraphs[0] = static_cast<TObjArray*>(file->FindObjectAny("DEEffPerStationVsRunLow"));
  stDEVsRunGraphs[1] = static_cast<TObjArray*>(file->FindObjectAny("DEEffPerStationVsRunUp"));
  if (!deVsRunGraphs || !stDEVsRunGraphs[0] || !stDEVsRunGraphs[1]) {
    printf("object not found --> you must first plot the efficiency versus run\n");
    return;
  }
  
  // output graph arrays
  TObjArray chamberVsDEGraphs; // 10 graphs: 1 for each chamber
  chamberVsDEGraphs.SetOwner(kTRUE);
  for ( Int_t iCh = 0; iCh < 10; ++iCh)
    chamberVsDEGraphs.Add(CreateGraph("integratedEffCh%dVsDE","Integrated efficiency for chamber %d per DE",iCh+1));
  
  TObjArray stationVsDEGraphs; // 6 graphs: 1 for each station, and 1 for station 4&5
  stationVsDEGraphs.SetOwner(kTRUE);
  for ( Int_t iSt = 0; iSt < 5; ++iSt)
    stationVsDEGraphs.Add(CreateGraph("integratedEffSt%dVsDE","Integrated efficiency for station %d per DE",iSt+1));
  stationVsDEGraphs.Add(CreateGraph("integratedEffSt4&5VsDE","Integrated efficiency for station 4&5 per DE"));
  
  // Loop over DE
  TIter nextDE(deVsRunGraphs);
  TGraphAsymmErrors *gDE = 0x0;
  while ((gDE = static_cast<TGraphAsymmErrors*>(nextDE()))) {
    
    // get chamber and DE indices
    Int_t deId;
    sscanf(gDE->GetName(), "effDE%dVsRun", &deId);
    Int_t iCh = deId/100-1;
    Int_t iDE = deId%100;
    
    // integrate DE efficiency
    TGraphAsymmErrors *g = static_cast<TGraphAsymmErrors*>(chamberVsDEGraphs.UncheckedAt(iCh));
    IntegrateMuonEfficiency(*gDE, *gDE, *g, iDE, iDE);
    
  }
  
  // Loop over DE per station
  Int_t ng = stDEVsRunGraphs[0]->GetEntries();
  for (Int_t ig = 0; ig < ng; ++ig) {
    
    TGraphAsymmErrors *gDELow = static_cast<TGraphAsymmErrors*>(stDEVsRunGraphs[0]->UncheckedAt(ig));
    TGraphAsymmErrors *gDEUp = static_cast<TGraphAsymmErrors*>(stDEVsRunGraphs[1]->UncheckedAt(ig));
    
    // get station and DE indices
    Int_t iSt, iDE;
    if (strstr(gDELow->GetName(), "4&5")) {
      iSt = 5;
      sscanf(gDELow->GetName(), "effSt4&5DE%dVsRunLow", &iDE);
    } else {
      sscanf(gDELow->GetName(), "effSt%dDE%dVsRunLow", &iSt, &iDE);
      iSt--;
    }
    
    // Integrate DE efficiency per station
    TGraphAsymmErrors *g = static_cast<TGraphAsymmErrors*>(stationVsDEGraphs.UncheckedAt(iSt));
    IntegrateMuonEfficiency(*gDELow, *gDEUp, *g, iDE, iDE);
    
  }
  
  // display
  for ( Int_t iCh = 0; iCh < 10; ++iCh) {
    TGraphAsymmErrors *g = static_cast<TGraphAsymmErrors*>(chamberVsDEGraphs.UncheckedAt(iCh));
    Int_t nDE = g->GetN();
    g->GetXaxis()->Set(nDE+1, -0.5, nDE-0.5);
    g->GetXaxis()->SetNdivisions(nDE);
  }
  BeautifyGraphs(chamberVsDEGraphs,"Detection Element","efficiency");
  for ( Int_t iSt = 0; iSt < 6; ++iSt) {
    TGraphAsymmErrors *g = static_cast<TGraphAsymmErrors*>(stationVsDEGraphs.UncheckedAt(iSt));
    Int_t nDE = g->GetN();
    g->GetXaxis()->Set(nDE+1, -0.5, nDE-0.5);
    g->GetXaxis()->SetNdivisions(nDE);
  }
  BeautifyGraphs(stationVsDEGraphs,"Detection Element","efficiency");

  // save Output
  chamberVsDEGraphs.Write("IntegratedChamberEffVsDE", TObject::kOverwrite | TObject::kSingleKey);
  stationVsDEGraphs.Write("IntegratedStationEffVsDE", TObject::kOverwrite | TObject::kSingleKey);
  file->Close();
  
}


//---------------------------------------------------------------------------
Bool_t GetChamberEfficiency(THnSparse &TT, THnSparse &TD, TArrayD &chEff, TArrayD chEffErr[2], Bool_t printError)
{
  /// compute chamber efficiency and errors
  /// return kFALSE if efficiency unknown for all chambers
  
  // project track hists over the chamber axis
  TH1D *TTdraw = TT.Projection(0,"e");
  TH1D *TDdraw = TD.Projection(0,"e");
  
  // compute chamber efficiency and errors
  TGraphAsymmErrors *efficiency = (TTdraw->GetEntries() > 0) ? new TGraphAsymmErrors(TDdraw, TTdraw,Form("%se0",effErrMode)) : 0x0;
  Bool_t ok = (efficiency);
  
  // fill arrays
  if (ok) {
    
    Bool_t missingEff = kFALSE;
    
    for (Int_t i = 0; i < 10; i++) {
      
      if (TTdraw->GetBinContent(i+1) > 0) {
        
        chEff[i+1] = efficiency->GetY()[i];
        chEffErr[0][i+1] = efficiency->GetErrorYlow(i);
        chEffErr[1][i+1] = efficiency->GetErrorYhigh(i);
        
      } else {
        
        chEff[i+1] = -1.;
        chEffErr[0][i+1] = 0.;
        chEffErr[1][i+1] = 0.;
        
        missingEff = kTRUE;
        
      }
      
    }
    
    if (missingEff && printError) cout << "efficiency partially unknown" << endl;
    
  } else {
    
    for (Int_t i = 0; i < 10; i++) {
      
      chEff[i+1] = -1.;
      chEffErr[0][i+1] = 0.;
      chEffErr[1][i+1] = 0.;
      
    }
    
    if (printError) cout << "efficiency unknown" << endl << endl;
    
  }
  
  // clean memory
  delete TTdraw;
  delete TDdraw;
  delete efficiency;
  
  return ok;
  
}


//---------------------------------------------------------------------------
void GetDEEfficiency(THnSparse &TT, THnSparse &TD, TGraphAsymmErrors &effVsDE)
{
  /// compute DE efficiency and errors
  
  // project track hists over the chamber axis
  TH1D *TTdraw = TT.Projection(0,"e");
  TH1D *TDdraw = TD.Projection(0,"e");
  
  // compute DE efficiency and errors
  TGraphAsymmErrors *efficiency = (TTdraw->GetEntries() > 0) ? new TGraphAsymmErrors(TDdraw, TTdraw,Form("%se0",effErrMode)) : 0x0;
  Int_t nDE = TTdraw->GetNbinsX();
  
  if (efficiency) {
    
    for (Int_t iDE = 0; iDE < nDE; ++iDE) {
      
      if (TTdraw->GetBinContent(iDE+1) > 0) {
        
        effVsDE.SetPoint(iDE,iDE,efficiency->GetY()[iDE]);
        effVsDE.SetPointError(iDE,0,0,efficiency->GetErrorYlow(iDE),efficiency->GetErrorYhigh(iDE));
        
      } else {
        
        effVsDE.SetPoint(iDE,iDE,-1);
        effVsDE.SetPointError(iDE,0,0,0,0);
        
      }
      
    }
    
  } else {
    
    for (Int_t iDE = 0; iDE < nDE; ++iDE) {
      
      effVsDE.SetPoint(iDE,iDE,-1);
      effVsDE.SetPointError(iDE,0,0,0,0);
      
    }
    
  }
  
  // clean memory
  delete TTdraw;
  delete TDdraw;
  delete efficiency;
  
}


//---------------------------------------------------------------------------
void ComputeStationEfficiency(TArrayD &chEff, TArrayD chEffErr[2], Int_t iSt, Double_t &stEff, Double_t stEffErr[2])
{
  /// compute the station iSt (0...4) efficiency and errors from the individual chamber efficiencies and errors
  
  stEff = 1.-(1.-chEff[2*iSt+1])*(1.-chEff[2*iSt+2]);
  
  Double_t d1 = (1. - chEff[2*iSt+2]); d1 *= d1;
  Double_t d2 = (1. - chEff[2*iSt+1]); d2 *= d2;
  
  for (Int_t i = 0; i < 2; ++i) {
    Double_t s1 = chEffErr[i][2*iSt+1] * chEffErr[i][2*iSt+1];
    Double_t s2 = chEffErr[i][2*iSt+2] * chEffErr[i][2*iSt+2];
    stEffErr[i] = TMath::Sqrt(d1*s1 + d2*s2 + s1*s2);
  }
  
  stEffErr[0] = TMath::Min(stEff, stEffErr[0]);
  stEffErr[1] = TMath::Min(1.-stEff, stEffErr[1]);
  
}


//---------------------------------------------------------------------------
void GetStationEfficiency(TArrayD &chEff, TArrayD chEffErr[2], Int_t iSt, TGraphAsymmErrors *effVsX[3], Int_t ip, Double_t xp)
{
  /// compute the station iSt (0...4) efficiency and errors from the individual chamber efficiencies and errors
  
  if (chEff[2*iSt+1] >= 0 && chEff[2*iSt+2] >= 0) {
    
    // compute station efficiency from known chamber efficiency
    Double_t stEff, stEffErr[2];
    ComputeStationEfficiency(chEff, chEffErr, iSt, stEff, stEffErr);
    
    // fill graphs if required
    for (Int_t i = 0; i < 3; ++i) {
      if (effVsX[i]) {
        effVsX[i]->SetPoint(ip,xp,stEff);
        effVsX[i]->SetPointError(ip,0.,0.,stEffErr[0],stEffErr[1]);
      }
    }
    
  } else {
    
    Double_t edge[2] = {0., 1.};
    TArrayD chEffEdge[2];
    Double_t stEffEdge[2];
    Double_t stEffEdgeErr[2][2];
    
    for (Int_t i = 0; i < 2; ++i) {
      
      // set lower(upper) limit of chamber efficiency
      chEffEdge[i].Set(11);
      for (Int_t iCh = 1; iCh < 3; ++iCh) chEffEdge[i][2*iSt+iCh] = (chEff[2*iSt+iCh] < 0) ? edge[i] : chEff[2*iSt+iCh];
      
      // compute station efficiency
      ComputeStationEfficiency(chEffEdge[i], chEffErr, iSt, stEffEdge[i], stEffEdgeErr[i]);
      
      // fill graph if required
      if (effVsX[i+1]) {
        effVsX[i+1]->SetPoint(ip,xp,stEffEdge[i]);
        effVsX[i+1]->SetPointError(ip,0.,0.,stEffEdgeErr[i][0],stEffEdgeErr[i][1]);
      }
      
    }
    
    // combine extreme cases to get station efficiency and fill graph if required
    if (effVsX[0]) {
      effVsX[0]->SetPoint(ip,xp,stEffEdge[1]);
      effVsX[0]->SetPointError(ip,0.,0.,stEffEdge[1]-stEffEdge[0]+stEffEdgeErr[0][0],stEffEdgeErr[1][1]);
    }
    
  }
  
}


//---------------------------------------------------------------------------
void ComputeStation45Efficiency(TArrayD &chEff, TArrayD chEffErr[2], Double_t &st45Eff, Double_t st45EffErr[2])
{
  /// compute the station 4-5 efficiency and errors from chamber efficiencies and errors
  
  st45Eff = chEff[7]*chEff[8]*chEff[9] + chEff[7]*chEff[8]*chEff[10] + chEff[7]*chEff[9]*chEff[10] + chEff[8]*chEff[9]*chEff[10] - 3.*chEff[7]*chEff[8]*chEff[9]*chEff[10];
  
  Double_t d1 = chEff[8]*chEff[9] + chEff[8]*chEff[10] + chEff[9]*chEff[10] - 3.*chEff[8]*chEff[9]*chEff[10]; d1 *= d1;
  Double_t d2 = chEff[7]*chEff[9] + chEff[7]*chEff[10] + chEff[9]*chEff[10] - 3.*chEff[7]*chEff[9]*chEff[10]; d2 *= d2;
  Double_t d3 = chEff[7]*chEff[8] + chEff[7]*chEff[10] + chEff[8]*chEff[10] - 3.*chEff[7]*chEff[8]*chEff[10]; d3 *= d3;
  Double_t d4 = chEff[7]*chEff[8] + chEff[7]*chEff[9] + chEff[8]*chEff[9] - 3.*chEff[7]*chEff[8]*chEff[9]; d4 *= d4;
  Double_t d12 = chEff[9] + chEff[10] - 3.*chEff[9]*chEff[10]; d12 *= d12;
  Double_t d13 = chEff[8] + chEff[10] - 3.*chEff[8]*chEff[10]; d13 *= d13;
  Double_t d14 = chEff[8] + chEff[9] - 3.*chEff[8]*chEff[9]; d14 *= d14;
  Double_t d23 = chEff[7] + chEff[10] - 3.*chEff[7]*chEff[10]; d23 *= d23;
  Double_t d24 = chEff[7] + chEff[9] - 3.*chEff[7]*chEff[9]; d24 *= d24;
  Double_t d34 = chEff[7] + chEff[8] - 3.*chEff[7]*chEff[8]; d34 *= d34;
  Double_t d123 = 1. - 3.*chEff[10]; d123 *= d123;
  Double_t d124 = 1. - 3.*chEff[9]; d124 *= d124;
  Double_t d134 = 1. - 3.*chEff[8]; d134 *= d134;
  Double_t d234 = 1. - 3.*chEff[7]; d234 *= d234;
  Double_t d1234 = - 3.; d1234 *= d1234;
  
  for (Int_t i = 0; i < 2; ++i) {
    Double_t s1 = chEffErr[i][7] * chEffErr[i][7];
    Double_t s2 = chEffErr[i][8] * chEffErr[i][8];
    Double_t s3 = chEffErr[i][9] * chEffErr[i][9];
    Double_t s4 = chEffErr[i][10] * chEffErr[i][10];
    st45EffErr[i] = TMath::Sqrt(d1*s1 + d2*s2 + d3*s3 + d4*s4 + d12*s1*s2 + d13*s1*s3 + d14*s1*s4 + d23*s2*s3 + d24*s2*s4 + d34*s3*s4 + d123*s1*s2*s3 + d124*s1*s2*s4 + d134*s1*s3*s4 + d234*s2*s3*s4 + d1234*s1*s2*s3*s4);
  }
  
  st45EffErr[0] = TMath::Min(st45Eff, st45EffErr[0]);
  st45EffErr[1] = TMath::Min(1.-st45Eff, st45EffErr[1]);
  
}


//---------------------------------------------------------------------------
void GetStation45Efficiency(TArrayD &chEff, TArrayD chEffErr[2], TGraphAsymmErrors *effVsX[3], Int_t ip, Double_t xp)
{
  /// compute the station 4-5 efficiency and errors from chamber efficiencies and errors
  
  if (chEff[7] >= 0 && chEff[8] >= 0 && chEff[9] >= 0 && chEff[10] >= 0) {
    
    // compute station efficiency from known chamber efficiency
    Double_t stEff, stEffErr[2];
    ComputeStation45Efficiency(chEff, chEffErr, stEff, stEffErr);
    
    // fill graphs if required
    for (Int_t i = 0; i < 3; ++i) {
      if (effVsX[i]) {
        effVsX[i]->SetPoint(ip,xp,stEff);
        effVsX[i]->SetPointError(ip,0.,0.,stEffErr[0],stEffErr[1]);
      }
    }
    
  } else {
    
    Double_t edge[2] = {0., 1.};
    TArrayD chEffEdge[2];
    Double_t stEffEdge[2];
    Double_t stEffEdgeErr[2][2];
    
    for (Int_t i = 0; i < 2; ++i) {
      
      // set lower(upper) limit of chamber efficiency
      chEffEdge[i].Set(11);
      for (Int_t iCh = 7; iCh < 11; ++iCh) chEffEdge[i][iCh] = (chEff[iCh] < 0) ? edge[i] : chEff[iCh];
      
      // compute station efficiency
      ComputeStation45Efficiency(chEffEdge[i], chEffErr, stEffEdge[i], stEffEdgeErr[i]);
      
      // fill graph if required
      if (effVsX[i+1]) {
        effVsX[i+1]->SetPoint(ip,xp,stEffEdge[i]);
        effVsX[i+1]->SetPointError(ip,0.,0.,stEffEdgeErr[i][0],stEffEdgeErr[i][1]);
      }
      
    }
    
    // combine extreme cases to get station efficiency and fill graph if required
    if (effVsX[0]) {
      effVsX[0]->SetPoint(ip,xp,stEffEdge[1]);
      effVsX[0]->SetPointError(ip,0.,0.,stEffEdge[1]-stEffEdge[0]+stEffEdgeErr[0][0],stEffEdgeErr[1][1]);
    }
    
  }
  
}


//---------------------------------------------------------------------------
void ComputeTrackingEfficiency(Double_t stEff[6], Double_t stEffErr[6][2], Double_t &spectroEff, Double_t spectroEffErr[2])
{
  /// compute the spectrometer efficiency and errors from the station efficiencies and errors
  
  Double_t de[6][2];
  for (Int_t iSt = 0; iSt < 6; iSt++) de[iSt][0] = stEff[iSt]*stEff[iSt];
  
  if (moreTrackCandidates) {
    
    spectroEff = stEff[0] * stEff[1] * stEff[2] * stEff[3] * stEff[4];
    
    for (Int_t i = 0; i < 2; i++) {
      
      for (Int_t iSt = 0; iSt < 6; iSt++) de[iSt][1] = stEffErr[iSt][i]*stEffErr[iSt][i];
      
      spectroEffErr[i] = 0.;
      for (Int_t j = 1; j < 32; j++) {
	Double_t sigmaAdd = 1.;
	for (Int_t iSt = 0; iSt < 5; iSt++) sigmaAdd *= de[iSt][TESTBIT(j,iSt)];
	spectroEffErr[i] += sigmaAdd;
      }
      spectroEffErr[i] = TMath::Sqrt(spectroEffErr[i]);
      
    }
    
  } else {
    
    spectroEff = stEff[0] * stEff[1] * stEff[2] * stEff[5];
    
    for (Int_t i = 0; i < 2; i++) {
      
      for (Int_t iSt = 0; iSt < 6; iSt++) de[iSt][1] = stEffErr[iSt][i]*stEffErr[iSt][i];
      
      spectroEffErr[i] = 0.;
      for (Int_t j = 1; j < 16; j++) {
	Double_t sigmaAdd = de[5][TESTBIT(j,3)];
	for (Int_t iSt = 0; iSt < 3; iSt++) sigmaAdd *= de[iSt][TESTBIT(j,iSt)];
	spectroEffErr[i] += sigmaAdd;
      }
      spectroEffErr[i] = TMath::Sqrt(spectroEffErr[i]);
      
    }
    
  }
  
  spectroEffErr[0] = TMath::Min(spectroEff, spectroEffErr[0]);
  spectroEffErr[1] = TMath::Min(1.-spectroEff, spectroEffErr[1]);
  
}


//---------------------------------------------------------------------------
void GetTrackingEfficiency(TArrayD &chEff, TArrayD chEffErr[2], TGraphAsymmErrors *effVsSt[3],
                           TGraphAsymmErrors *effVsX[3], Int_t ip, Double_t xp, Bool_t print)
{
  /// compute the tracking efficiency from the individual chamber efficiencies
  
  Double_t stEff[6];
  Double_t stEffErr[6][2];
  
  // check if unknown chamber efficiency
  Bool_t allEffKnown = kTRUE;
  for (Int_t iCh = 1; iCh < 11 && allEffKnown; ++iCh) if (chEff[iCh] < 0) allEffKnown = kFALSE;
  
  if (allEffKnown) {
    
    // compute station efficiency
    for (Int_t iSt = 0; iSt < 5; ++iSt) ComputeStationEfficiency(chEff, chEffErr, iSt, stEff[iSt], stEffErr[iSt]);
    ComputeStation45Efficiency(chEff, chEffErr, stEff[5], stEffErr[5]);
    
    // compute spectrometer efficiency
    Double_t spectroEff, spectroEffErr[2];
    ComputeTrackingEfficiency(stEff, stEffErr, spectroEff, spectroEffErr);
    chEff[0] = spectroEff;
    chEffErr[0][0] = spectroEffErr[0];
    chEffErr[1][0] = spectroEffErr[1];
    
    // fill graphs if required
    for (Int_t i = 0; i < 3; ++i) {
      if (effVsX[i]) {
        effVsX[i]->SetPoint(ip,xp,chEff[0]);
        effVsX[i]->SetPointError(ip,0.,0.,chEffErr[0][0],chEffErr[1][0]);
      }
      if (effVsSt[i]) for (Int_t iSt = 0; iSt < 6; ++iSt) {
        effVsSt[i]->SetPoint(iSt,iSt+1,stEff[iSt]);
        effVsSt[i]->SetPointError(iSt,0.,0.,stEffErr[iSt][0],stEffErr[iSt][1]);
      }
    }
    
  } else {
    
    Double_t edge[2] = {0., 1.};
    TArrayD chEffEdge[2];
    Double_t stEffEdge[2][6];
    Double_t stEffEdgeErr[2][6][2];
    Double_t spectroEffEdge[2], spectroEffEdgeErr[2][2];
    
    for (Int_t i = 0; i < 2; ++i) {
      
      // set lower(upper) limit of chamber efficiency
      chEffEdge[i].Set(11);
      for (Int_t iCh = 1; iCh < 11; ++iCh) chEffEdge[i][iCh] = (chEff[iCh] < 0) ? edge[i] : chEff[iCh];
      
      // compute station efficiency
      for (Int_t iSt = 0; iSt < 5; ++iSt) ComputeStationEfficiency(chEffEdge[i], chEffErr, iSt, stEffEdge[i][iSt], stEffEdgeErr[i][iSt]);
      ComputeStation45Efficiency(chEffEdge[i], chEffErr, stEffEdge[i][5], stEffEdgeErr[i][5]);
      
      // compute spectrometer efficiency
      ComputeTrackingEfficiency(stEffEdge[i], stEffEdgeErr[i], spectroEffEdge[i], spectroEffEdgeErr[i]);
      
      // fill graph if required
      if (effVsX[i+1]) {
        effVsX[i+1]->SetPoint(ip,xp,spectroEffEdge[i]);
        effVsX[i+1]->SetPointError(ip,0.,0.,spectroEffEdgeErr[i][0],spectroEffEdgeErr[i][1]);
      }
      if (effVsSt[i+1]) for (Int_t iSt = 0; iSt < 6; ++iSt) {
        effVsSt[i+1]->SetPoint(iSt,iSt+1,stEffEdge[i][iSt]);
        effVsSt[i+1]->SetPointError(iSt,0.,0.,stEffEdgeErr[i][iSt][0],stEffEdgeErr[i][iSt][1]);
      }
      
    }
    
    // combine extreme cases to get station efficiency
    for (Int_t iSt = 0; iSt < 6; ++iSt) {
      stEff[iSt] = stEffEdge[1][iSt];
      stEffErr[iSt][0] = stEffEdge[1][iSt] - stEffEdge[0][iSt] + stEffEdgeErr[0][iSt][0];
      stEffErr[iSt][1] = stEffEdgeErr[1][iSt][1];
    }
    
    // combine extreme cases to get spectrometer efficiency
    chEff[0] = spectroEffEdge[1];
    chEffErr[0][0] = spectroEffEdge[1] - spectroEffEdge[0] + spectroEffEdgeErr[0][0];
    chEffErr[1][0] = spectroEffEdgeErr[1][1];
    
    // fill graph if required
    if (effVsX[0]) {
      effVsX[0]->SetPoint(ip,xp,chEff[0]);
      effVsX[0]->SetPointError(ip,0.,0.,chEffErr[0][0],chEffErr[1][0]);
    }
    if (effVsSt[0]) for (Int_t iSt = 0; iSt < 6; ++iSt) {
      effVsSt[0]->SetPoint(iSt,iSt+1,stEff[iSt]);
      effVsSt[0]->SetPointError(iSt,0.,0.,stEffErr[iSt][0],stEffErr[iSt][1]);
    }
    
  }
  
  // print results
  if (print) {
    for (Int_t iCh = 1; iCh < 11; ++iCh) {
      cout << "Efficiency chamber " << iCh << " : ";
      cout << chEff[iCh] << " + " << chEffErr[1][iCh] << " - " << chEffErr[0][iCh] << endl;
    }
    for (Int_t iSt = 0; iSt < 6; ++iSt) {
      if (iSt < 5) cout << "Station " << iSt+1 << " = ";
      else cout << "Station 45 = ";
      cout << stEff[iSt] << " + " << stEffErr[iSt][1] << " - " << stEffErr[iSt][0] << endl;
    }
    cout << "Total tracking efficiency : ";
    cout << chEff[0] << " + " << chEffErr[1][0] << " - " << chEffErr[0][0] << endl << endl;
  }
  
}


//---------------------------------------------------------------------------
void IntegrateMuonEfficiency(TGraphAsymmErrors &effVsRunLow, TGraphAsymmErrors &effVsRunUp,
                             TGraphAsymmErrors &effVsX, Int_t ip, Double_t xp)
{
  /// integrate efficiency over runs
  /// return kFALSE if efficiency unknown in all runs
  
  if (!runWeights) {
    effVsX.SetPoint(ip,xp,-1.);
    effVsX.SetPointError(ip,0.,0.,0.,0.);
    return;
  }
  
  // initialize
  Double_t rec[2] = {0., 0.};
  Double_t gen = 0.;
  Double_t intEffErr[2] = {0., 0.};
  Bool_t ok = kFALSE;
  
  // loop over runs
  Int_t nRuns = effVsRunLow.GetN();
  for (Int_t iRun = 0; iRun < nRuns; ++iRun) {
    
    // get run weight
    TString sRun = effVsRunLow.GetXaxis()->GetBinLabel(iRun+1);
    TParameter<Double_t> *weight = static_cast<TParameter<Double_t>*>(runWeights->FindObject(sRun.Data()));
    if (!weight) {
      printf("weight not found for run %s\n", sRun.Data());
      continue;
    }
    Double_t w = weight->GetVal();
    Double_t w2 = w*w;
    
    // get efficiency and error
    Double_t eff[2] = {effVsRunLow.GetY()[iRun], effVsRunUp.GetY()[iRun]};
    Double_t effErr[2] = {effVsRunLow.GetErrorYlow(iRun), effVsRunUp.GetErrorYhigh(iRun)};
    if (eff[0] < 0. || eff[1] < 0.) {
      printf("no efficiency measurement --> use 0(1) ± 0 as lower(upper) limit\n");
      eff[0] = 0.;
      eff[1] = 1.;
      effErr[0] = 0.;
      effErr[1] = 0.;
    } else ok = kTRUE;
    
    // integrate
    gen += w;
    for (Int_t i = 0; i < 2; ++i) {
      rec[i] += w*eff[i];
      intEffErr[i] += w2*effErr[i]*effErr[i];
    }
    
  }
  
  // compute efficiency
  if (gen > 0. && ok) {
    
    effVsX.SetPoint(ip,xp,rec[1]/gen);
    effVsX.SetPointError(ip,0.,0.,(rec[1]-rec[0]+TMath::Sqrt(intEffErr[0]))/gen,TMath::Sqrt(intEffErr[1])/gen);
    
  } else {
    
    if (gen <= 0.) printf("impossible to integrate, all weights = 0 or unknown ?!?\n");
    else printf("efficiency never measured --> return -1 ± 0\n");
    
    effVsX.SetPoint(ip,xp,-1.);
    effVsX.SetPointError(ip,0.,0.,0.,0.);
    
  }
  
}


//---------------------------------------------------------------------------
void LoadRunWeights(TString fileName)
{
  /// Set the number of interested events per run
  /// (used to weight the acc*eff correction integrated
  /// over run for any pt/y/centrality bins)
  
  if (runWeights) return;
  
  ifstream inFile(fileName.Data());
  if (!inFile.is_open()) {
    printf("cannot open file %s", fileName.Data());
    return;
  }
  
  runWeights = new THashList(1000);
  runWeights->SetOwner();
  
  TString line;
  while (! inFile.eof() ) {
    
    line.ReadLine(inFile,kTRUE);
    if(line.IsNull()) continue;
    
    TObjArray *param = line.Tokenize(" ");
    if (param->GetEntries() != 2) {
      printf("bad input line %s", line.Data());
      continue;
    }
    
    Int_t run = ((TObjString*)param->UncheckedAt(0))->String().Atoi();
    if (run < 0) {
      printf("invalid run number: %d", run);
      continue;
    }
    
    Float_t weight = ((TObjString*)param->UncheckedAt(1))->String().Atof();
    if (weight <= 0.) {
      printf("invalid weight: %g", weight);
      continue;
    }
    
    runWeights->Add(new TParameter<Double_t>(Form("%d",run), weight));
    
    delete param;
  }
  
  inFile.close();
  
}


//---------------------------------------------------------------------------
void SetCentPtCh(THnSparse& SparseData)
{
  /// Sets the centrality and pT range and the charge for integration
  /// If maxPt = -1, it sets maxPt as the maximum Pt value on the THnSparse
  
  if (ptMax >= 0 && ptMax < ptMin) {
    printf("Wrong Pt range, ptMax must be higher than ptMin\n");
    exit(-1);
  }
  
  if (charge < -1 || charge > 1) {
    printf("Selected charge must be 0, 1 or -1\n");
    exit(-1);
  }
  
  // adjust centrality range
  centMax = TMath::Max(centMax-1.e-12, centMin);
  
  // set the centrality range for integration
  Int_t lowBin = SparseData.GetAxis(1)->FindBin(centMin);
  Int_t upBin = SparseData.GetAxis(1)->FindBin(centMax);
  SparseData.GetAxis(1)->SetRange(lowBin, upBin);
  
  // set the pt range for integration
  lowBin = SparseData.GetAxis(2)->FindBin(ptMin);
  if (ptMax == -1) { upBin = SparseData.GetAxis(2)->GetNbins()+1; }
  else { upBin = SparseData.GetAxis(2)->FindBin(ptMax);}
  SparseData.GetAxis(2)->SetRange(lowBin, upBin);
  
  // set the charge range
  if (charge != 0) {
    lowBin = SparseData.GetAxis(5)->FindBin(charge);
    SparseData.GetAxis(5)->SetRange(lowBin, lowBin);
  }
  
}


//---------------------------------------------------------------------------
TGraphAsymmErrors* CreateGraph(const char* name, const char* title, int value)
{
  /// create a graph of a given name and title
  
  TGraphAsymmErrors* g = new TGraphAsymmErrors();
  
  if ( value >= 0 ) {
    
    g->SetName(Form(name,value));
    g->SetTitle(Form(title,value));
    
  } else {
    
    g->SetName(name);
    g->SetTitle(title);
    
    
  }
  
  return g;
  
}


//---------------------------------------------------------------------------
void BeautifyGraph(TGraphAsymmErrors &g, const char* xAxisName, const char* yAxisName)
{
  /// beautify this graph
  
  g.SetLineStyle(1);
  g.SetLineColor(1);
  g.SetMarkerStyle(20);
  g.SetMarkerSize(0.7);
  g.SetMarkerColor(2);
  
  g.GetXaxis()->SetTitle(xAxisName);
  g.GetXaxis()->CenterTitle(kTRUE);
  g.GetXaxis()->SetLabelFont(22);
  g.GetXaxis()->SetTitleFont(22);
  
  g.GetYaxis()->SetTitle(yAxisName);
  g.GetYaxis()->CenterTitle(kTRUE);
  g.GetYaxis()->SetLabelFont(22);
  g.GetYaxis()->SetTitleFont(22);
  
}


//---------------------------------------------------------------------------
void BeautifyGraphs(TObjArray& array, const char* xAxisName, const char* yAxisName)
{
  /// beautify all the graphs in this array
  
  for ( Int_t i = 0; i <= array.GetLast(); ++i)
    BeautifyGraph(*static_cast<TGraphAsymmErrors*>(array.UncheckedAt(i)), xAxisName, yAxisName);
  
}


//---------------------------------------------------------------------------
void SetRunLabel(TGraphAsymmErrors &g, Int_t irun, const TList& runs)
{
  /// set the run label for all the graphs
  
  g.GetXaxis()->Set(irun+1, -0.5, irun+0.5);
  
  TIter nextRun(&runs);
  TObjString *srun = 0x0;
  Int_t iirun = 1;
  while ((srun = static_cast<TObjString*>(nextRun()))) {
    g.GetXaxis()->SetBinLabel(iirun, srun->GetName());
    iirun++;
  }
  
}


//---------------------------------------------------------------------------
void SetRunLabel(TObjArray& array, Int_t irun, const TList& runs)
{
  /// set the run label for all the graphs
  
  for (Int_t i = 0; i <= array.GetLast(); ++i)
    SetRunLabel(*static_cast<TGraphAsymmErrors*>(array.UncheckedAt(i)), irun, runs);
  
}


 MuonTrackingEfficiency.C:1
 MuonTrackingEfficiency.C:2
 MuonTrackingEfficiency.C:3
 MuonTrackingEfficiency.C:4
 MuonTrackingEfficiency.C:5
 MuonTrackingEfficiency.C:6
 MuonTrackingEfficiency.C:7
 MuonTrackingEfficiency.C:8
 MuonTrackingEfficiency.C:9
 MuonTrackingEfficiency.C:10
 MuonTrackingEfficiency.C:11
 MuonTrackingEfficiency.C:12
 MuonTrackingEfficiency.C:13
 MuonTrackingEfficiency.C:14
 MuonTrackingEfficiency.C:15
 MuonTrackingEfficiency.C:16
 MuonTrackingEfficiency.C:17
 MuonTrackingEfficiency.C:18
 MuonTrackingEfficiency.C:19
 MuonTrackingEfficiency.C:20
 MuonTrackingEfficiency.C:21
 MuonTrackingEfficiency.C:22
 MuonTrackingEfficiency.C:23
 MuonTrackingEfficiency.C:24
 MuonTrackingEfficiency.C:25
 MuonTrackingEfficiency.C:26
 MuonTrackingEfficiency.C:27
 MuonTrackingEfficiency.C:28
 MuonTrackingEfficiency.C:29
 MuonTrackingEfficiency.C:30
 MuonTrackingEfficiency.C:31
 MuonTrackingEfficiency.C:32
 MuonTrackingEfficiency.C:33
 MuonTrackingEfficiency.C:34
 MuonTrackingEfficiency.C:35
 MuonTrackingEfficiency.C:36
 MuonTrackingEfficiency.C:37
 MuonTrackingEfficiency.C:38
 MuonTrackingEfficiency.C:39
 MuonTrackingEfficiency.C:40
 MuonTrackingEfficiency.C:41
 MuonTrackingEfficiency.C:42
 MuonTrackingEfficiency.C:43
 MuonTrackingEfficiency.C:44
 MuonTrackingEfficiency.C:45
 MuonTrackingEfficiency.C:46
 MuonTrackingEfficiency.C:47
 MuonTrackingEfficiency.C:48
 MuonTrackingEfficiency.C:49
 MuonTrackingEfficiency.C:50
 MuonTrackingEfficiency.C:51
 MuonTrackingEfficiency.C:52
 MuonTrackingEfficiency.C:53
 MuonTrackingEfficiency.C:54
 MuonTrackingEfficiency.C:55
 MuonTrackingEfficiency.C:56
 MuonTrackingEfficiency.C:57
 MuonTrackingEfficiency.C:58
 MuonTrackingEfficiency.C:59
 MuonTrackingEfficiency.C:60
 MuonTrackingEfficiency.C:61
 MuonTrackingEfficiency.C:62
 MuonTrackingEfficiency.C:63
 MuonTrackingEfficiency.C:64
 MuonTrackingEfficiency.C:65
 MuonTrackingEfficiency.C:66
 MuonTrackingEfficiency.C:67
 MuonTrackingEfficiency.C:68
 MuonTrackingEfficiency.C:69
 MuonTrackingEfficiency.C:70
 MuonTrackingEfficiency.C:71
 MuonTrackingEfficiency.C:72
 MuonTrackingEfficiency.C:73
 MuonTrackingEfficiency.C:74
 MuonTrackingEfficiency.C:75
 MuonTrackingEfficiency.C:76
 MuonTrackingEfficiency.C:77
 MuonTrackingEfficiency.C:78
 MuonTrackingEfficiency.C:79
 MuonTrackingEfficiency.C:80
 MuonTrackingEfficiency.C:81
 MuonTrackingEfficiency.C:82
 MuonTrackingEfficiency.C:83
 MuonTrackingEfficiency.C:84
 MuonTrackingEfficiency.C:85
 MuonTrackingEfficiency.C:86
 MuonTrackingEfficiency.C:87
 MuonTrackingEfficiency.C:88
 MuonTrackingEfficiency.C:89
 MuonTrackingEfficiency.C:90
 MuonTrackingEfficiency.C:91
 MuonTrackingEfficiency.C:92
 MuonTrackingEfficiency.C:93
 MuonTrackingEfficiency.C:94
 MuonTrackingEfficiency.C:95
 MuonTrackingEfficiency.C:96
 MuonTrackingEfficiency.C:97
 MuonTrackingEfficiency.C:98
 MuonTrackingEfficiency.C:99
 MuonTrackingEfficiency.C:100
 MuonTrackingEfficiency.C:101
 MuonTrackingEfficiency.C:102
 MuonTrackingEfficiency.C:103
 MuonTrackingEfficiency.C:104
 MuonTrackingEfficiency.C:105
 MuonTrackingEfficiency.C:106
 MuonTrackingEfficiency.C:107
 MuonTrackingEfficiency.C:108
 MuonTrackingEfficiency.C:109
 MuonTrackingEfficiency.C:110
 MuonTrackingEfficiency.C:111
 MuonTrackingEfficiency.C:112
 MuonTrackingEfficiency.C:113
 MuonTrackingEfficiency.C:114
 MuonTrackingEfficiency.C:115
 MuonTrackingEfficiency.C:116
 MuonTrackingEfficiency.C:117
 MuonTrackingEfficiency.C:118
 MuonTrackingEfficiency.C:119
 MuonTrackingEfficiency.C:120
 MuonTrackingEfficiency.C:121
 MuonTrackingEfficiency.C:122
 MuonTrackingEfficiency.C:123
 MuonTrackingEfficiency.C:124
 MuonTrackingEfficiency.C:125
 MuonTrackingEfficiency.C:126
 MuonTrackingEfficiency.C:127
 MuonTrackingEfficiency.C:128
 MuonTrackingEfficiency.C:129
 MuonTrackingEfficiency.C:130
 MuonTrackingEfficiency.C:131
 MuonTrackingEfficiency.C:132
 MuonTrackingEfficiency.C:133
 MuonTrackingEfficiency.C:134
 MuonTrackingEfficiency.C:135
 MuonTrackingEfficiency.C:136
 MuonTrackingEfficiency.C:137
 MuonTrackingEfficiency.C:138
 MuonTrackingEfficiency.C:139
 MuonTrackingEfficiency.C:140
 MuonTrackingEfficiency.C:141
 MuonTrackingEfficiency.C:142
 MuonTrackingEfficiency.C:143
 MuonTrackingEfficiency.C:144
 MuonTrackingEfficiency.C:145
 MuonTrackingEfficiency.C:146
 MuonTrackingEfficiency.C:147
 MuonTrackingEfficiency.C:148
 MuonTrackingEfficiency.C:149
 MuonTrackingEfficiency.C:150
 MuonTrackingEfficiency.C:151
 MuonTrackingEfficiency.C:152
 MuonTrackingEfficiency.C:153
 MuonTrackingEfficiency.C:154
 MuonTrackingEfficiency.C:155
 MuonTrackingEfficiency.C:156
 MuonTrackingEfficiency.C:157
 MuonTrackingEfficiency.C:158
 MuonTrackingEfficiency.C:159
 MuonTrackingEfficiency.C:160
 MuonTrackingEfficiency.C:161
 MuonTrackingEfficiency.C:162
 MuonTrackingEfficiency.C:163
 MuonTrackingEfficiency.C:164
 MuonTrackingEfficiency.C:165
 MuonTrackingEfficiency.C:166
 MuonTrackingEfficiency.C:167
 MuonTrackingEfficiency.C:168
 MuonTrackingEfficiency.C:169
 MuonTrackingEfficiency.C:170
 MuonTrackingEfficiency.C:171
 MuonTrackingEfficiency.C:172
 MuonTrackingEfficiency.C:173
 MuonTrackingEfficiency.C:174
 MuonTrackingEfficiency.C:175
 MuonTrackingEfficiency.C:176
 MuonTrackingEfficiency.C:177
 MuonTrackingEfficiency.C:178
 MuonTrackingEfficiency.C:179
 MuonTrackingEfficiency.C:180
 MuonTrackingEfficiency.C:181
 MuonTrackingEfficiency.C:182
 MuonTrackingEfficiency.C:183
 MuonTrackingEfficiency.C:184
 MuonTrackingEfficiency.C:185
 MuonTrackingEfficiency.C:186
 MuonTrackingEfficiency.C:187
 MuonTrackingEfficiency.C:188
 MuonTrackingEfficiency.C:189
 MuonTrackingEfficiency.C:190
 MuonTrackingEfficiency.C:191
 MuonTrackingEfficiency.C:192
 MuonTrackingEfficiency.C:193
 MuonTrackingEfficiency.C:194
 MuonTrackingEfficiency.C:195
 MuonTrackingEfficiency.C:196
 MuonTrackingEfficiency.C:197
 MuonTrackingEfficiency.C:198
 MuonTrackingEfficiency.C:199
 MuonTrackingEfficiency.C:200
 MuonTrackingEfficiency.C:201
 MuonTrackingEfficiency.C:202
 MuonTrackingEfficiency.C:203
 MuonTrackingEfficiency.C:204
 MuonTrackingEfficiency.C:205
 MuonTrackingEfficiency.C:206
 MuonTrackingEfficiency.C:207
 MuonTrackingEfficiency.C:208
 MuonTrackingEfficiency.C:209
 MuonTrackingEfficiency.C:210
 MuonTrackingEfficiency.C:211
 MuonTrackingEfficiency.C:212
 MuonTrackingEfficiency.C:213
 MuonTrackingEfficiency.C:214
 MuonTrackingEfficiency.C:215
 MuonTrackingEfficiency.C:216
 MuonTrackingEfficiency.C:217
 MuonTrackingEfficiency.C:218
 MuonTrackingEfficiency.C:219
 MuonTrackingEfficiency.C:220
 MuonTrackingEfficiency.C:221
 MuonTrackingEfficiency.C:222
 MuonTrackingEfficiency.C:223
 MuonTrackingEfficiency.C:224
 MuonTrackingEfficiency.C:225
 MuonTrackingEfficiency.C:226
 MuonTrackingEfficiency.C:227
 MuonTrackingEfficiency.C:228
 MuonTrackingEfficiency.C:229
 MuonTrackingEfficiency.C:230
 MuonTrackingEfficiency.C:231
 MuonTrackingEfficiency.C:232
 MuonTrackingEfficiency.C:233
 MuonTrackingEfficiency.C:234
 MuonTrackingEfficiency.C:235
 MuonTrackingEfficiency.C:236
 MuonTrackingEfficiency.C:237
 MuonTrackingEfficiency.C:238
 MuonTrackingEfficiency.C:239
 MuonTrackingEfficiency.C:240
 MuonTrackingEfficiency.C:241
 MuonTrackingEfficiency.C:242
 MuonTrackingEfficiency.C:243
 MuonTrackingEfficiency.C:244
 MuonTrackingEfficiency.C:245
 MuonTrackingEfficiency.C:246
 MuonTrackingEfficiency.C:247
 MuonTrackingEfficiency.C:248
 MuonTrackingEfficiency.C:249
 MuonTrackingEfficiency.C:250
 MuonTrackingEfficiency.C:251
 MuonTrackingEfficiency.C:252
 MuonTrackingEfficiency.C:253
 MuonTrackingEfficiency.C:254
 MuonTrackingEfficiency.C:255
 MuonTrackingEfficiency.C:256
 MuonTrackingEfficiency.C:257
 MuonTrackingEfficiency.C:258
 MuonTrackingEfficiency.C:259
 MuonTrackingEfficiency.C:260
 MuonTrackingEfficiency.C:261
 MuonTrackingEfficiency.C:262
 MuonTrackingEfficiency.C:263
 MuonTrackingEfficiency.C:264
 MuonTrackingEfficiency.C:265
 MuonTrackingEfficiency.C:266
 MuonTrackingEfficiency.C:267
 MuonTrackingEfficiency.C:268
 MuonTrackingEfficiency.C:269
 MuonTrackingEfficiency.C:270
 MuonTrackingEfficiency.C:271
 MuonTrackingEfficiency.C:272
 MuonTrackingEfficiency.C:273
 MuonTrackingEfficiency.C:274
 MuonTrackingEfficiency.C:275
 MuonTrackingEfficiency.C:276
 MuonTrackingEfficiency.C:277
 MuonTrackingEfficiency.C:278
 MuonTrackingEfficiency.C:279
 MuonTrackingEfficiency.C:280
 MuonTrackingEfficiency.C:281
 MuonTrackingEfficiency.C:282
 MuonTrackingEfficiency.C:283
 MuonTrackingEfficiency.C:284
 MuonTrackingEfficiency.C:285
 MuonTrackingEfficiency.C:286
 MuonTrackingEfficiency.C:287
 MuonTrackingEfficiency.C:288
 MuonTrackingEfficiency.C:289
 MuonTrackingEfficiency.C:290
 MuonTrackingEfficiency.C:291
 MuonTrackingEfficiency.C:292
 MuonTrackingEfficiency.C:293
 MuonTrackingEfficiency.C:294
 MuonTrackingEfficiency.C:295
 MuonTrackingEfficiency.C:296
 MuonTrackingEfficiency.C:297
 MuonTrackingEfficiency.C:298
 MuonTrackingEfficiency.C:299
 MuonTrackingEfficiency.C:300
 MuonTrackingEfficiency.C:301
 MuonTrackingEfficiency.C:302
 MuonTrackingEfficiency.C:303
 MuonTrackingEfficiency.C:304
 MuonTrackingEfficiency.C:305
 MuonTrackingEfficiency.C:306
 MuonTrackingEfficiency.C:307
 MuonTrackingEfficiency.C:308
 MuonTrackingEfficiency.C:309
 MuonTrackingEfficiency.C:310
 MuonTrackingEfficiency.C:311
 MuonTrackingEfficiency.C:312
 MuonTrackingEfficiency.C:313
 MuonTrackingEfficiency.C:314
 MuonTrackingEfficiency.C:315
 MuonTrackingEfficiency.C:316
 MuonTrackingEfficiency.C:317
 MuonTrackingEfficiency.C:318
 MuonTrackingEfficiency.C:319
 MuonTrackingEfficiency.C:320
 MuonTrackingEfficiency.C:321
 MuonTrackingEfficiency.C:322
 MuonTrackingEfficiency.C:323
 MuonTrackingEfficiency.C:324
 MuonTrackingEfficiency.C:325
 MuonTrackingEfficiency.C:326
 MuonTrackingEfficiency.C:327
 MuonTrackingEfficiency.C:328
 MuonTrackingEfficiency.C:329
 MuonTrackingEfficiency.C:330
 MuonTrackingEfficiency.C:331
 MuonTrackingEfficiency.C:332
 MuonTrackingEfficiency.C:333
 MuonTrackingEfficiency.C:334
 MuonTrackingEfficiency.C:335
 MuonTrackingEfficiency.C:336
 MuonTrackingEfficiency.C:337
 MuonTrackingEfficiency.C:338
 MuonTrackingEfficiency.C:339
 MuonTrackingEfficiency.C:340
 MuonTrackingEfficiency.C:341
 MuonTrackingEfficiency.C:342
 MuonTrackingEfficiency.C:343
 MuonTrackingEfficiency.C:344
 MuonTrackingEfficiency.C:345
 MuonTrackingEfficiency.C:346
 MuonTrackingEfficiency.C:347
 MuonTrackingEfficiency.C:348
 MuonTrackingEfficiency.C:349
 MuonTrackingEfficiency.C:350
 MuonTrackingEfficiency.C:351
 MuonTrackingEfficiency.C:352
 MuonTrackingEfficiency.C:353
 MuonTrackingEfficiency.C:354
 MuonTrackingEfficiency.C:355
 MuonTrackingEfficiency.C:356
 MuonTrackingEfficiency.C:357
 MuonTrackingEfficiency.C:358
 MuonTrackingEfficiency.C:359
 MuonTrackingEfficiency.C:360
 MuonTrackingEfficiency.C:361
 MuonTrackingEfficiency.C:362
 MuonTrackingEfficiency.C:363
 MuonTrackingEfficiency.C:364
 MuonTrackingEfficiency.C:365
 MuonTrackingEfficiency.C:366
 MuonTrackingEfficiency.C:367
 MuonTrackingEfficiency.C:368
 MuonTrackingEfficiency.C:369
 MuonTrackingEfficiency.C:370
 MuonTrackingEfficiency.C:371
 MuonTrackingEfficiency.C:372
 MuonTrackingEfficiency.C:373
 MuonTrackingEfficiency.C:374
 MuonTrackingEfficiency.C:375
 MuonTrackingEfficiency.C:376
 MuonTrackingEfficiency.C:377
 MuonTrackingEfficiency.C:378
 MuonTrackingEfficiency.C:379
 MuonTrackingEfficiency.C:380
 MuonTrackingEfficiency.C:381
 MuonTrackingEfficiency.C:382
 MuonTrackingEfficiency.C:383
 MuonTrackingEfficiency.C:384
 MuonTrackingEfficiency.C:385
 MuonTrackingEfficiency.C:386
 MuonTrackingEfficiency.C:387
 MuonTrackingEfficiency.C:388
 MuonTrackingEfficiency.C:389
 MuonTrackingEfficiency.C:390
 MuonTrackingEfficiency.C:391
 MuonTrackingEfficiency.C:392
 MuonTrackingEfficiency.C:393
 MuonTrackingEfficiency.C:394
 MuonTrackingEfficiency.C:395
 MuonTrackingEfficiency.C:396
 MuonTrackingEfficiency.C:397
 MuonTrackingEfficiency.C:398
 MuonTrackingEfficiency.C:399
 MuonTrackingEfficiency.C:400
 MuonTrackingEfficiency.C:401
 MuonTrackingEfficiency.C:402
 MuonTrackingEfficiency.C:403
 MuonTrackingEfficiency.C:404
 MuonTrackingEfficiency.C:405
 MuonTrackingEfficiency.C:406
 MuonTrackingEfficiency.C:407
 MuonTrackingEfficiency.C:408
 MuonTrackingEfficiency.C:409
 MuonTrackingEfficiency.C:410
 MuonTrackingEfficiency.C:411
 MuonTrackingEfficiency.C:412
 MuonTrackingEfficiency.C:413
 MuonTrackingEfficiency.C:414
 MuonTrackingEfficiency.C:415
 MuonTrackingEfficiency.C:416
 MuonTrackingEfficiency.C:417
 MuonTrackingEfficiency.C:418
 MuonTrackingEfficiency.C:419
 MuonTrackingEfficiency.C:420
 MuonTrackingEfficiency.C:421
 MuonTrackingEfficiency.C:422
 MuonTrackingEfficiency.C:423
 MuonTrackingEfficiency.C:424
 MuonTrackingEfficiency.C:425
 MuonTrackingEfficiency.C:426
 MuonTrackingEfficiency.C:427
 MuonTrackingEfficiency.C:428
 MuonTrackingEfficiency.C:429
 MuonTrackingEfficiency.C:430
 MuonTrackingEfficiency.C:431
 MuonTrackingEfficiency.C:432
 MuonTrackingEfficiency.C:433
 MuonTrackingEfficiency.C:434
 MuonTrackingEfficiency.C:435
 MuonTrackingEfficiency.C:436
 MuonTrackingEfficiency.C:437
 MuonTrackingEfficiency.C:438
 MuonTrackingEfficiency.C:439
 MuonTrackingEfficiency.C:440
 MuonTrackingEfficiency.C:441
 MuonTrackingEfficiency.C:442
 MuonTrackingEfficiency.C:443
 MuonTrackingEfficiency.C:444
 MuonTrackingEfficiency.C:445
 MuonTrackingEfficiency.C:446
 MuonTrackingEfficiency.C:447
 MuonTrackingEfficiency.C:448
 MuonTrackingEfficiency.C:449
 MuonTrackingEfficiency.C:450
 MuonTrackingEfficiency.C:451
 MuonTrackingEfficiency.C:452
 MuonTrackingEfficiency.C:453
 MuonTrackingEfficiency.C:454
 MuonTrackingEfficiency.C:455
 MuonTrackingEfficiency.C:456
 MuonTrackingEfficiency.C:457
 MuonTrackingEfficiency.C:458
 MuonTrackingEfficiency.C:459
 MuonTrackingEfficiency.C:460
 MuonTrackingEfficiency.C:461
 MuonTrackingEfficiency.C:462
 MuonTrackingEfficiency.C:463
 MuonTrackingEfficiency.C:464
 MuonTrackingEfficiency.C:465
 MuonTrackingEfficiency.C:466
 MuonTrackingEfficiency.C:467
 MuonTrackingEfficiency.C:468
 MuonTrackingEfficiency.C:469
 MuonTrackingEfficiency.C:470
 MuonTrackingEfficiency.C:471
 MuonTrackingEfficiency.C:472
 MuonTrackingEfficiency.C:473
 MuonTrackingEfficiency.C:474
 MuonTrackingEfficiency.C:475
 MuonTrackingEfficiency.C:476
 MuonTrackingEfficiency.C:477
 MuonTrackingEfficiency.C:478
 MuonTrackingEfficiency.C:479
 MuonTrackingEfficiency.C:480
 MuonTrackingEfficiency.C:481
 MuonTrackingEfficiency.C:482
 MuonTrackingEfficiency.C:483
 MuonTrackingEfficiency.C:484
 MuonTrackingEfficiency.C:485
 MuonTrackingEfficiency.C:486
 MuonTrackingEfficiency.C:487
 MuonTrackingEfficiency.C:488
 MuonTrackingEfficiency.C:489
 MuonTrackingEfficiency.C:490
 MuonTrackingEfficiency.C:491
 MuonTrackingEfficiency.C:492
 MuonTrackingEfficiency.C:493
 MuonTrackingEfficiency.C:494
 MuonTrackingEfficiency.C:495
 MuonTrackingEfficiency.C:496
 MuonTrackingEfficiency.C:497
 MuonTrackingEfficiency.C:498
 MuonTrackingEfficiency.C:499
 MuonTrackingEfficiency.C:500
 MuonTrackingEfficiency.C:501
 MuonTrackingEfficiency.C:502
 MuonTrackingEfficiency.C:503
 MuonTrackingEfficiency.C:504
 MuonTrackingEfficiency.C:505
 MuonTrackingEfficiency.C:506
 MuonTrackingEfficiency.C:507
 MuonTrackingEfficiency.C:508
 MuonTrackingEfficiency.C:509
 MuonTrackingEfficiency.C:510
 MuonTrackingEfficiency.C:511
 MuonTrackingEfficiency.C:512
 MuonTrackingEfficiency.C:513
 MuonTrackingEfficiency.C:514
 MuonTrackingEfficiency.C:515
 MuonTrackingEfficiency.C:516
 MuonTrackingEfficiency.C:517
 MuonTrackingEfficiency.C:518
 MuonTrackingEfficiency.C:519
 MuonTrackingEfficiency.C:520
 MuonTrackingEfficiency.C:521
 MuonTrackingEfficiency.C:522
 MuonTrackingEfficiency.C:523
 MuonTrackingEfficiency.C:524
 MuonTrackingEfficiency.C:525
 MuonTrackingEfficiency.C:526
 MuonTrackingEfficiency.C:527
 MuonTrackingEfficiency.C:528
 MuonTrackingEfficiency.C:529
 MuonTrackingEfficiency.C:530
 MuonTrackingEfficiency.C:531
 MuonTrackingEfficiency.C:532
 MuonTrackingEfficiency.C:533
 MuonTrackingEfficiency.C:534
 MuonTrackingEfficiency.C:535
 MuonTrackingEfficiency.C:536
 MuonTrackingEfficiency.C:537
 MuonTrackingEfficiency.C:538
 MuonTrackingEfficiency.C:539
 MuonTrackingEfficiency.C:540
 MuonTrackingEfficiency.C:541
 MuonTrackingEfficiency.C:542
 MuonTrackingEfficiency.C:543
 MuonTrackingEfficiency.C:544
 MuonTrackingEfficiency.C:545
 MuonTrackingEfficiency.C:546
 MuonTrackingEfficiency.C:547
 MuonTrackingEfficiency.C:548
 MuonTrackingEfficiency.C:549
 MuonTrackingEfficiency.C:550
 MuonTrackingEfficiency.C:551
 MuonTrackingEfficiency.C:552
 MuonTrackingEfficiency.C:553
 MuonTrackingEfficiency.C:554
 MuonTrackingEfficiency.C:555
 MuonTrackingEfficiency.C:556
 MuonTrackingEfficiency.C:557
 MuonTrackingEfficiency.C:558
 MuonTrackingEfficiency.C:559
 MuonTrackingEfficiency.C:560
 MuonTrackingEfficiency.C:561
 MuonTrackingEfficiency.C:562
 MuonTrackingEfficiency.C:563
 MuonTrackingEfficiency.C:564
 MuonTrackingEfficiency.C:565
 MuonTrackingEfficiency.C:566
 MuonTrackingEfficiency.C:567
 MuonTrackingEfficiency.C:568
 MuonTrackingEfficiency.C:569
 MuonTrackingEfficiency.C:570
 MuonTrackingEfficiency.C:571
 MuonTrackingEfficiency.C:572
 MuonTrackingEfficiency.C:573
 MuonTrackingEfficiency.C:574
 MuonTrackingEfficiency.C:575
 MuonTrackingEfficiency.C:576
 MuonTrackingEfficiency.C:577
 MuonTrackingEfficiency.C:578
 MuonTrackingEfficiency.C:579
 MuonTrackingEfficiency.C:580
 MuonTrackingEfficiency.C:581
 MuonTrackingEfficiency.C:582
 MuonTrackingEfficiency.C:583
 MuonTrackingEfficiency.C:584
 MuonTrackingEfficiency.C:585
 MuonTrackingEfficiency.C:586
 MuonTrackingEfficiency.C:587
 MuonTrackingEfficiency.C:588
 MuonTrackingEfficiency.C:589
 MuonTrackingEfficiency.C:590
 MuonTrackingEfficiency.C:591
 MuonTrackingEfficiency.C:592
 MuonTrackingEfficiency.C:593
 MuonTrackingEfficiency.C:594
 MuonTrackingEfficiency.C:595
 MuonTrackingEfficiency.C:596
 MuonTrackingEfficiency.C:597
 MuonTrackingEfficiency.C:598
 MuonTrackingEfficiency.C:599
 MuonTrackingEfficiency.C:600
 MuonTrackingEfficiency.C:601
 MuonTrackingEfficiency.C:602
 MuonTrackingEfficiency.C:603
 MuonTrackingEfficiency.C:604
 MuonTrackingEfficiency.C:605
 MuonTrackingEfficiency.C:606
 MuonTrackingEfficiency.C:607
 MuonTrackingEfficiency.C:608
 MuonTrackingEfficiency.C:609
 MuonTrackingEfficiency.C:610
 MuonTrackingEfficiency.C:611
 MuonTrackingEfficiency.C:612
 MuonTrackingEfficiency.C:613
 MuonTrackingEfficiency.C:614
 MuonTrackingEfficiency.C:615
 MuonTrackingEfficiency.C:616
 MuonTrackingEfficiency.C:617
 MuonTrackingEfficiency.C:618
 MuonTrackingEfficiency.C:619
 MuonTrackingEfficiency.C:620
 MuonTrackingEfficiency.C:621
 MuonTrackingEfficiency.C:622
 MuonTrackingEfficiency.C:623
 MuonTrackingEfficiency.C:624
 MuonTrackingEfficiency.C:625
 MuonTrackingEfficiency.C:626
 MuonTrackingEfficiency.C:627
 MuonTrackingEfficiency.C:628
 MuonTrackingEfficiency.C:629
 MuonTrackingEfficiency.C:630
 MuonTrackingEfficiency.C:631
 MuonTrackingEfficiency.C:632
 MuonTrackingEfficiency.C:633
 MuonTrackingEfficiency.C:634
 MuonTrackingEfficiency.C:635
 MuonTrackingEfficiency.C:636
 MuonTrackingEfficiency.C:637
 MuonTrackingEfficiency.C:638
 MuonTrackingEfficiency.C:639
 MuonTrackingEfficiency.C:640
 MuonTrackingEfficiency.C:641
 MuonTrackingEfficiency.C:642
 MuonTrackingEfficiency.C:643
 MuonTrackingEfficiency.C:644
 MuonTrackingEfficiency.C:645
 MuonTrackingEfficiency.C:646
 MuonTrackingEfficiency.C:647
 MuonTrackingEfficiency.C:648
 MuonTrackingEfficiency.C:649
 MuonTrackingEfficiency.C:650
 MuonTrackingEfficiency.C:651
 MuonTrackingEfficiency.C:652
 MuonTrackingEfficiency.C:653
 MuonTrackingEfficiency.C:654
 MuonTrackingEfficiency.C:655
 MuonTrackingEfficiency.C:656
 MuonTrackingEfficiency.C:657
 MuonTrackingEfficiency.C:658
 MuonTrackingEfficiency.C:659
 MuonTrackingEfficiency.C:660
 MuonTrackingEfficiency.C:661
 MuonTrackingEfficiency.C:662
 MuonTrackingEfficiency.C:663
 MuonTrackingEfficiency.C:664
 MuonTrackingEfficiency.C:665
 MuonTrackingEfficiency.C:666
 MuonTrackingEfficiency.C:667
 MuonTrackingEfficiency.C:668
 MuonTrackingEfficiency.C:669
 MuonTrackingEfficiency.C:670
 MuonTrackingEfficiency.C:671
 MuonTrackingEfficiency.C:672
 MuonTrackingEfficiency.C:673
 MuonTrackingEfficiency.C:674
 MuonTrackingEfficiency.C:675
 MuonTrackingEfficiency.C:676
 MuonTrackingEfficiency.C:677
 MuonTrackingEfficiency.C:678
 MuonTrackingEfficiency.C:679
 MuonTrackingEfficiency.C:680
 MuonTrackingEfficiency.C:681
 MuonTrackingEfficiency.C:682
 MuonTrackingEfficiency.C:683
 MuonTrackingEfficiency.C:684
 MuonTrackingEfficiency.C:685
 MuonTrackingEfficiency.C:686
 MuonTrackingEfficiency.C:687
 MuonTrackingEfficiency.C:688
 MuonTrackingEfficiency.C:689
 MuonTrackingEfficiency.C:690
 MuonTrackingEfficiency.C:691
 MuonTrackingEfficiency.C:692
 MuonTrackingEfficiency.C:693
 MuonTrackingEfficiency.C:694
 MuonTrackingEfficiency.C:695
 MuonTrackingEfficiency.C:696
 MuonTrackingEfficiency.C:697
 MuonTrackingEfficiency.C:698
 MuonTrackingEfficiency.C:699
 MuonTrackingEfficiency.C:700
 MuonTrackingEfficiency.C:701
 MuonTrackingEfficiency.C:702
 MuonTrackingEfficiency.C:703
 MuonTrackingEfficiency.C:704
 MuonTrackingEfficiency.C:705
 MuonTrackingEfficiency.C:706
 MuonTrackingEfficiency.C:707
 MuonTrackingEfficiency.C:708
 MuonTrackingEfficiency.C:709
 MuonTrackingEfficiency.C:710
 MuonTrackingEfficiency.C:711
 MuonTrackingEfficiency.C:712
 MuonTrackingEfficiency.C:713
 MuonTrackingEfficiency.C:714
 MuonTrackingEfficiency.C:715
 MuonTrackingEfficiency.C:716
 MuonTrackingEfficiency.C:717
 MuonTrackingEfficiency.C:718
 MuonTrackingEfficiency.C:719
 MuonTrackingEfficiency.C:720
 MuonTrackingEfficiency.C:721
 MuonTrackingEfficiency.C:722
 MuonTrackingEfficiency.C:723
 MuonTrackingEfficiency.C:724
 MuonTrackingEfficiency.C:725
 MuonTrackingEfficiency.C:726
 MuonTrackingEfficiency.C:727
 MuonTrackingEfficiency.C:728
 MuonTrackingEfficiency.C:729
 MuonTrackingEfficiency.C:730
 MuonTrackingEfficiency.C:731
 MuonTrackingEfficiency.C:732
 MuonTrackingEfficiency.C:733
 MuonTrackingEfficiency.C:734
 MuonTrackingEfficiency.C:735
 MuonTrackingEfficiency.C:736
 MuonTrackingEfficiency.C:737
 MuonTrackingEfficiency.C:738
 MuonTrackingEfficiency.C:739
 MuonTrackingEfficiency.C:740
 MuonTrackingEfficiency.C:741
 MuonTrackingEfficiency.C:742
 MuonTrackingEfficiency.C:743
 MuonTrackingEfficiency.C:744
 MuonTrackingEfficiency.C:745
 MuonTrackingEfficiency.C:746
 MuonTrackingEfficiency.C:747
 MuonTrackingEfficiency.C:748
 MuonTrackingEfficiency.C:749
 MuonTrackingEfficiency.C:750
 MuonTrackingEfficiency.C:751
 MuonTrackingEfficiency.C:752
 MuonTrackingEfficiency.C:753
 MuonTrackingEfficiency.C:754
 MuonTrackingEfficiency.C:755
 MuonTrackingEfficiency.C:756
 MuonTrackingEfficiency.C:757
 MuonTrackingEfficiency.C:758
 MuonTrackingEfficiency.C:759
 MuonTrackingEfficiency.C:760
 MuonTrackingEfficiency.C:761
 MuonTrackingEfficiency.C:762
 MuonTrackingEfficiency.C:763
 MuonTrackingEfficiency.C:764
 MuonTrackingEfficiency.C:765
 MuonTrackingEfficiency.C:766
 MuonTrackingEfficiency.C:767
 MuonTrackingEfficiency.C:768
 MuonTrackingEfficiency.C:769
 MuonTrackingEfficiency.C:770
 MuonTrackingEfficiency.C:771
 MuonTrackingEfficiency.C:772
 MuonTrackingEfficiency.C:773
 MuonTrackingEfficiency.C:774
 MuonTrackingEfficiency.C:775
 MuonTrackingEfficiency.C:776
 MuonTrackingEfficiency.C:777
 MuonTrackingEfficiency.C:778
 MuonTrackingEfficiency.C:779
 MuonTrackingEfficiency.C:780
 MuonTrackingEfficiency.C:781
 MuonTrackingEfficiency.C:782
 MuonTrackingEfficiency.C:783
 MuonTrackingEfficiency.C:784
 MuonTrackingEfficiency.C:785
 MuonTrackingEfficiency.C:786
 MuonTrackingEfficiency.C:787
 MuonTrackingEfficiency.C:788
 MuonTrackingEfficiency.C:789
 MuonTrackingEfficiency.C:790
 MuonTrackingEfficiency.C:791
 MuonTrackingEfficiency.C:792
 MuonTrackingEfficiency.C:793
 MuonTrackingEfficiency.C:794
 MuonTrackingEfficiency.C:795
 MuonTrackingEfficiency.C:796
 MuonTrackingEfficiency.C:797
 MuonTrackingEfficiency.C:798
 MuonTrackingEfficiency.C:799
 MuonTrackingEfficiency.C:800
 MuonTrackingEfficiency.C:801
 MuonTrackingEfficiency.C:802
 MuonTrackingEfficiency.C:803
 MuonTrackingEfficiency.C:804
 MuonTrackingEfficiency.C:805
 MuonTrackingEfficiency.C:806
 MuonTrackingEfficiency.C:807
 MuonTrackingEfficiency.C:808
 MuonTrackingEfficiency.C:809
 MuonTrackingEfficiency.C:810
 MuonTrackingEfficiency.C:811
 MuonTrackingEfficiency.C:812
 MuonTrackingEfficiency.C:813
 MuonTrackingEfficiency.C:814
 MuonTrackingEfficiency.C:815
 MuonTrackingEfficiency.C:816
 MuonTrackingEfficiency.C:817
 MuonTrackingEfficiency.C:818
 MuonTrackingEfficiency.C:819
 MuonTrackingEfficiency.C:820
 MuonTrackingEfficiency.C:821
 MuonTrackingEfficiency.C:822
 MuonTrackingEfficiency.C:823
 MuonTrackingEfficiency.C:824
 MuonTrackingEfficiency.C:825
 MuonTrackingEfficiency.C:826
 MuonTrackingEfficiency.C:827
 MuonTrackingEfficiency.C:828
 MuonTrackingEfficiency.C:829
 MuonTrackingEfficiency.C:830
 MuonTrackingEfficiency.C:831
 MuonTrackingEfficiency.C:832
 MuonTrackingEfficiency.C:833
 MuonTrackingEfficiency.C:834
 MuonTrackingEfficiency.C:835
 MuonTrackingEfficiency.C:836
 MuonTrackingEfficiency.C:837
 MuonTrackingEfficiency.C:838
 MuonTrackingEfficiency.C:839
 MuonTrackingEfficiency.C:840
 MuonTrackingEfficiency.C:841
 MuonTrackingEfficiency.C:842
 MuonTrackingEfficiency.C:843
 MuonTrackingEfficiency.C:844
 MuonTrackingEfficiency.C:845
 MuonTrackingEfficiency.C:846
 MuonTrackingEfficiency.C:847
 MuonTrackingEfficiency.C:848
 MuonTrackingEfficiency.C:849
 MuonTrackingEfficiency.C:850
 MuonTrackingEfficiency.C:851
 MuonTrackingEfficiency.C:852
 MuonTrackingEfficiency.C:853
 MuonTrackingEfficiency.C:854
 MuonTrackingEfficiency.C:855
 MuonTrackingEfficiency.C:856
 MuonTrackingEfficiency.C:857
 MuonTrackingEfficiency.C:858
 MuonTrackingEfficiency.C:859
 MuonTrackingEfficiency.C:860
 MuonTrackingEfficiency.C:861
 MuonTrackingEfficiency.C:862
 MuonTrackingEfficiency.C:863
 MuonTrackingEfficiency.C:864
 MuonTrackingEfficiency.C:865
 MuonTrackingEfficiency.C:866
 MuonTrackingEfficiency.C:867
 MuonTrackingEfficiency.C:868
 MuonTrackingEfficiency.C:869
 MuonTrackingEfficiency.C:870
 MuonTrackingEfficiency.C:871
 MuonTrackingEfficiency.C:872
 MuonTrackingEfficiency.C:873
 MuonTrackingEfficiency.C:874
 MuonTrackingEfficiency.C:875
 MuonTrackingEfficiency.C:876
 MuonTrackingEfficiency.C:877
 MuonTrackingEfficiency.C:878
 MuonTrackingEfficiency.C:879
 MuonTrackingEfficiency.C:880
 MuonTrackingEfficiency.C:881
 MuonTrackingEfficiency.C:882
 MuonTrackingEfficiency.C:883
 MuonTrackingEfficiency.C:884
 MuonTrackingEfficiency.C:885
 MuonTrackingEfficiency.C:886
 MuonTrackingEfficiency.C:887
 MuonTrackingEfficiency.C:888
 MuonTrackingEfficiency.C:889
 MuonTrackingEfficiency.C:890
 MuonTrackingEfficiency.C:891
 MuonTrackingEfficiency.C:892
 MuonTrackingEfficiency.C:893
 MuonTrackingEfficiency.C:894
 MuonTrackingEfficiency.C:895
 MuonTrackingEfficiency.C:896
 MuonTrackingEfficiency.C:897
 MuonTrackingEfficiency.C:898
 MuonTrackingEfficiency.C:899
 MuonTrackingEfficiency.C:900
 MuonTrackingEfficiency.C:901
 MuonTrackingEfficiency.C:902
 MuonTrackingEfficiency.C:903
 MuonTrackingEfficiency.C:904
 MuonTrackingEfficiency.C:905
 MuonTrackingEfficiency.C:906
 MuonTrackingEfficiency.C:907
 MuonTrackingEfficiency.C:908
 MuonTrackingEfficiency.C:909
 MuonTrackingEfficiency.C:910
 MuonTrackingEfficiency.C:911
 MuonTrackingEfficiency.C:912
 MuonTrackingEfficiency.C:913
 MuonTrackingEfficiency.C:914
 MuonTrackingEfficiency.C:915
 MuonTrackingEfficiency.C:916
 MuonTrackingEfficiency.C:917
 MuonTrackingEfficiency.C:918
 MuonTrackingEfficiency.C:919
 MuonTrackingEfficiency.C:920
 MuonTrackingEfficiency.C:921
 MuonTrackingEfficiency.C:922
 MuonTrackingEfficiency.C:923
 MuonTrackingEfficiency.C:924
 MuonTrackingEfficiency.C:925
 MuonTrackingEfficiency.C:926
 MuonTrackingEfficiency.C:927
 MuonTrackingEfficiency.C:928
 MuonTrackingEfficiency.C:929
 MuonTrackingEfficiency.C:930
 MuonTrackingEfficiency.C:931
 MuonTrackingEfficiency.C:932
 MuonTrackingEfficiency.C:933
 MuonTrackingEfficiency.C:934
 MuonTrackingEfficiency.C:935
 MuonTrackingEfficiency.C:936
 MuonTrackingEfficiency.C:937
 MuonTrackingEfficiency.C:938
 MuonTrackingEfficiency.C:939
 MuonTrackingEfficiency.C:940
 MuonTrackingEfficiency.C:941
 MuonTrackingEfficiency.C:942
 MuonTrackingEfficiency.C:943
 MuonTrackingEfficiency.C:944
 MuonTrackingEfficiency.C:945
 MuonTrackingEfficiency.C:946
 MuonTrackingEfficiency.C:947
 MuonTrackingEfficiency.C:948
 MuonTrackingEfficiency.C:949
 MuonTrackingEfficiency.C:950
 MuonTrackingEfficiency.C:951
 MuonTrackingEfficiency.C:952
 MuonTrackingEfficiency.C:953
 MuonTrackingEfficiency.C:954
 MuonTrackingEfficiency.C:955
 MuonTrackingEfficiency.C:956
 MuonTrackingEfficiency.C:957
 MuonTrackingEfficiency.C:958
 MuonTrackingEfficiency.C:959
 MuonTrackingEfficiency.C:960
 MuonTrackingEfficiency.C:961
 MuonTrackingEfficiency.C:962
 MuonTrackingEfficiency.C:963
 MuonTrackingEfficiency.C:964
 MuonTrackingEfficiency.C:965
 MuonTrackingEfficiency.C:966
 MuonTrackingEfficiency.C:967
 MuonTrackingEfficiency.C:968
 MuonTrackingEfficiency.C:969
 MuonTrackingEfficiency.C:970
 MuonTrackingEfficiency.C:971
 MuonTrackingEfficiency.C:972
 MuonTrackingEfficiency.C:973
 MuonTrackingEfficiency.C:974
 MuonTrackingEfficiency.C:975
 MuonTrackingEfficiency.C:976
 MuonTrackingEfficiency.C:977
 MuonTrackingEfficiency.C:978
 MuonTrackingEfficiency.C:979
 MuonTrackingEfficiency.C:980
 MuonTrackingEfficiency.C:981
 MuonTrackingEfficiency.C:982
 MuonTrackingEfficiency.C:983
 MuonTrackingEfficiency.C:984
 MuonTrackingEfficiency.C:985
 MuonTrackingEfficiency.C:986
 MuonTrackingEfficiency.C:987
 MuonTrackingEfficiency.C:988
 MuonTrackingEfficiency.C:989
 MuonTrackingEfficiency.C:990
 MuonTrackingEfficiency.C:991
 MuonTrackingEfficiency.C:992
 MuonTrackingEfficiency.C:993
 MuonTrackingEfficiency.C:994
 MuonTrackingEfficiency.C:995
 MuonTrackingEfficiency.C:996
 MuonTrackingEfficiency.C:997
 MuonTrackingEfficiency.C:998
 MuonTrackingEfficiency.C:999
 MuonTrackingEfficiency.C:1000
 MuonTrackingEfficiency.C:1001
 MuonTrackingEfficiency.C:1002
 MuonTrackingEfficiency.C:1003
 MuonTrackingEfficiency.C:1004
 MuonTrackingEfficiency.C:1005
 MuonTrackingEfficiency.C:1006
 MuonTrackingEfficiency.C:1007
 MuonTrackingEfficiency.C:1008
 MuonTrackingEfficiency.C:1009
 MuonTrackingEfficiency.C:1010
 MuonTrackingEfficiency.C:1011
 MuonTrackingEfficiency.C:1012
 MuonTrackingEfficiency.C:1013
 MuonTrackingEfficiency.C:1014
 MuonTrackingEfficiency.C:1015
 MuonTrackingEfficiency.C:1016
 MuonTrackingEfficiency.C:1017
 MuonTrackingEfficiency.C:1018
 MuonTrackingEfficiency.C:1019
 MuonTrackingEfficiency.C:1020
 MuonTrackingEfficiency.C:1021
 MuonTrackingEfficiency.C:1022
 MuonTrackingEfficiency.C:1023
 MuonTrackingEfficiency.C:1024
 MuonTrackingEfficiency.C:1025
 MuonTrackingEfficiency.C:1026
 MuonTrackingEfficiency.C:1027
 MuonTrackingEfficiency.C:1028
 MuonTrackingEfficiency.C:1029
 MuonTrackingEfficiency.C:1030
 MuonTrackingEfficiency.C:1031
 MuonTrackingEfficiency.C:1032
 MuonTrackingEfficiency.C:1033
 MuonTrackingEfficiency.C:1034
 MuonTrackingEfficiency.C:1035
 MuonTrackingEfficiency.C:1036
 MuonTrackingEfficiency.C:1037
 MuonTrackingEfficiency.C:1038
 MuonTrackingEfficiency.C:1039
 MuonTrackingEfficiency.C:1040
 MuonTrackingEfficiency.C:1041
 MuonTrackingEfficiency.C:1042
 MuonTrackingEfficiency.C:1043
 MuonTrackingEfficiency.C:1044
 MuonTrackingEfficiency.C:1045
 MuonTrackingEfficiency.C:1046
 MuonTrackingEfficiency.C:1047
 MuonTrackingEfficiency.C:1048
 MuonTrackingEfficiency.C:1049
 MuonTrackingEfficiency.C:1050
 MuonTrackingEfficiency.C:1051
 MuonTrackingEfficiency.C:1052
 MuonTrackingEfficiency.C:1053
 MuonTrackingEfficiency.C:1054
 MuonTrackingEfficiency.C:1055
 MuonTrackingEfficiency.C:1056
 MuonTrackingEfficiency.C:1057
 MuonTrackingEfficiency.C:1058
 MuonTrackingEfficiency.C:1059
 MuonTrackingEfficiency.C:1060
 MuonTrackingEfficiency.C:1061
 MuonTrackingEfficiency.C:1062
 MuonTrackingEfficiency.C:1063
 MuonTrackingEfficiency.C:1064
 MuonTrackingEfficiency.C:1065
 MuonTrackingEfficiency.C:1066
 MuonTrackingEfficiency.C:1067
 MuonTrackingEfficiency.C:1068
 MuonTrackingEfficiency.C:1069
 MuonTrackingEfficiency.C:1070
 MuonTrackingEfficiency.C:1071
 MuonTrackingEfficiency.C:1072
 MuonTrackingEfficiency.C:1073
 MuonTrackingEfficiency.C:1074
 MuonTrackingEfficiency.C:1075
 MuonTrackingEfficiency.C:1076
 MuonTrackingEfficiency.C:1077
 MuonTrackingEfficiency.C:1078
 MuonTrackingEfficiency.C:1079
 MuonTrackingEfficiency.C:1080
 MuonTrackingEfficiency.C:1081
 MuonTrackingEfficiency.C:1082
 MuonTrackingEfficiency.C:1083
 MuonTrackingEfficiency.C:1084
 MuonTrackingEfficiency.C:1085
 MuonTrackingEfficiency.C:1086
 MuonTrackingEfficiency.C:1087
 MuonTrackingEfficiency.C:1088
 MuonTrackingEfficiency.C:1089
 MuonTrackingEfficiency.C:1090
 MuonTrackingEfficiency.C:1091
 MuonTrackingEfficiency.C:1092
 MuonTrackingEfficiency.C:1093
 MuonTrackingEfficiency.C:1094
 MuonTrackingEfficiency.C:1095
 MuonTrackingEfficiency.C:1096
 MuonTrackingEfficiency.C:1097
 MuonTrackingEfficiency.C:1098
 MuonTrackingEfficiency.C:1099
 MuonTrackingEfficiency.C:1100
 MuonTrackingEfficiency.C:1101
 MuonTrackingEfficiency.C:1102
 MuonTrackingEfficiency.C:1103
 MuonTrackingEfficiency.C:1104
 MuonTrackingEfficiency.C:1105
 MuonTrackingEfficiency.C:1106
 MuonTrackingEfficiency.C:1107
 MuonTrackingEfficiency.C:1108
 MuonTrackingEfficiency.C:1109
 MuonTrackingEfficiency.C:1110
 MuonTrackingEfficiency.C:1111
 MuonTrackingEfficiency.C:1112
 MuonTrackingEfficiency.C:1113
 MuonTrackingEfficiency.C:1114
 MuonTrackingEfficiency.C:1115
 MuonTrackingEfficiency.C:1116
 MuonTrackingEfficiency.C:1117
 MuonTrackingEfficiency.C:1118
 MuonTrackingEfficiency.C:1119
 MuonTrackingEfficiency.C:1120
 MuonTrackingEfficiency.C:1121
 MuonTrackingEfficiency.C:1122
 MuonTrackingEfficiency.C:1123
 MuonTrackingEfficiency.C:1124
 MuonTrackingEfficiency.C:1125
 MuonTrackingEfficiency.C:1126
 MuonTrackingEfficiency.C:1127
 MuonTrackingEfficiency.C:1128
 MuonTrackingEfficiency.C:1129
 MuonTrackingEfficiency.C:1130
 MuonTrackingEfficiency.C:1131
 MuonTrackingEfficiency.C:1132
 MuonTrackingEfficiency.C:1133
 MuonTrackingEfficiency.C:1134
 MuonTrackingEfficiency.C:1135
 MuonTrackingEfficiency.C:1136
 MuonTrackingEfficiency.C:1137
 MuonTrackingEfficiency.C:1138
 MuonTrackingEfficiency.C:1139
 MuonTrackingEfficiency.C:1140
 MuonTrackingEfficiency.C:1141
 MuonTrackingEfficiency.C:1142
 MuonTrackingEfficiency.C:1143
 MuonTrackingEfficiency.C:1144
 MuonTrackingEfficiency.C:1145
 MuonTrackingEfficiency.C:1146
 MuonTrackingEfficiency.C:1147
 MuonTrackingEfficiency.C:1148
 MuonTrackingEfficiency.C:1149
 MuonTrackingEfficiency.C:1150
 MuonTrackingEfficiency.C:1151
 MuonTrackingEfficiency.C:1152
 MuonTrackingEfficiency.C:1153
 MuonTrackingEfficiency.C:1154
 MuonTrackingEfficiency.C:1155
 MuonTrackingEfficiency.C:1156
 MuonTrackingEfficiency.C:1157
 MuonTrackingEfficiency.C:1158
 MuonTrackingEfficiency.C:1159
 MuonTrackingEfficiency.C:1160
 MuonTrackingEfficiency.C:1161
 MuonTrackingEfficiency.C:1162
 MuonTrackingEfficiency.C:1163
 MuonTrackingEfficiency.C:1164
 MuonTrackingEfficiency.C:1165
 MuonTrackingEfficiency.C:1166
 MuonTrackingEfficiency.C:1167
 MuonTrackingEfficiency.C:1168
 MuonTrackingEfficiency.C:1169
 MuonTrackingEfficiency.C:1170
 MuonTrackingEfficiency.C:1171
 MuonTrackingEfficiency.C:1172
 MuonTrackingEfficiency.C:1173
 MuonTrackingEfficiency.C:1174
 MuonTrackingEfficiency.C:1175
 MuonTrackingEfficiency.C:1176
 MuonTrackingEfficiency.C:1177
 MuonTrackingEfficiency.C:1178
 MuonTrackingEfficiency.C:1179
 MuonTrackingEfficiency.C:1180
 MuonTrackingEfficiency.C:1181
 MuonTrackingEfficiency.C:1182
 MuonTrackingEfficiency.C:1183
 MuonTrackingEfficiency.C:1184
 MuonTrackingEfficiency.C:1185
 MuonTrackingEfficiency.C:1186
 MuonTrackingEfficiency.C:1187
 MuonTrackingEfficiency.C:1188
 MuonTrackingEfficiency.C:1189
 MuonTrackingEfficiency.C:1190
 MuonTrackingEfficiency.C:1191
 MuonTrackingEfficiency.C:1192
 MuonTrackingEfficiency.C:1193
 MuonTrackingEfficiency.C:1194
 MuonTrackingEfficiency.C:1195
 MuonTrackingEfficiency.C:1196
 MuonTrackingEfficiency.C:1197
 MuonTrackingEfficiency.C:1198
 MuonTrackingEfficiency.C:1199
 MuonTrackingEfficiency.C:1200
 MuonTrackingEfficiency.C:1201
 MuonTrackingEfficiency.C:1202
 MuonTrackingEfficiency.C:1203
 MuonTrackingEfficiency.C:1204
 MuonTrackingEfficiency.C:1205
 MuonTrackingEfficiency.C:1206
 MuonTrackingEfficiency.C:1207
 MuonTrackingEfficiency.C:1208
 MuonTrackingEfficiency.C:1209
 MuonTrackingEfficiency.C:1210
 MuonTrackingEfficiency.C:1211
 MuonTrackingEfficiency.C:1212
 MuonTrackingEfficiency.C:1213
 MuonTrackingEfficiency.C:1214
 MuonTrackingEfficiency.C:1215
 MuonTrackingEfficiency.C:1216
 MuonTrackingEfficiency.C:1217
 MuonTrackingEfficiency.C:1218
 MuonTrackingEfficiency.C:1219
 MuonTrackingEfficiency.C:1220
 MuonTrackingEfficiency.C:1221
 MuonTrackingEfficiency.C:1222
 MuonTrackingEfficiency.C:1223
 MuonTrackingEfficiency.C:1224
 MuonTrackingEfficiency.C:1225
 MuonTrackingEfficiency.C:1226
 MuonTrackingEfficiency.C:1227
 MuonTrackingEfficiency.C:1228
 MuonTrackingEfficiency.C:1229
 MuonTrackingEfficiency.C:1230
 MuonTrackingEfficiency.C:1231
 MuonTrackingEfficiency.C:1232
 MuonTrackingEfficiency.C:1233
 MuonTrackingEfficiency.C:1234
 MuonTrackingEfficiency.C:1235
 MuonTrackingEfficiency.C:1236
 MuonTrackingEfficiency.C:1237
 MuonTrackingEfficiency.C:1238
 MuonTrackingEfficiency.C:1239
 MuonTrackingEfficiency.C:1240
 MuonTrackingEfficiency.C:1241
 MuonTrackingEfficiency.C:1242
 MuonTrackingEfficiency.C:1243
 MuonTrackingEfficiency.C:1244
 MuonTrackingEfficiency.C:1245
 MuonTrackingEfficiency.C:1246
 MuonTrackingEfficiency.C:1247
 MuonTrackingEfficiency.C:1248
 MuonTrackingEfficiency.C:1249
 MuonTrackingEfficiency.C:1250
 MuonTrackingEfficiency.C:1251
 MuonTrackingEfficiency.C:1252
 MuonTrackingEfficiency.C:1253
 MuonTrackingEfficiency.C:1254
 MuonTrackingEfficiency.C:1255
 MuonTrackingEfficiency.C:1256
 MuonTrackingEfficiency.C:1257
 MuonTrackingEfficiency.C:1258
 MuonTrackingEfficiency.C:1259
 MuonTrackingEfficiency.C:1260
 MuonTrackingEfficiency.C:1261
 MuonTrackingEfficiency.C:1262
 MuonTrackingEfficiency.C:1263
 MuonTrackingEfficiency.C:1264
 MuonTrackingEfficiency.C:1265
 MuonTrackingEfficiency.C:1266
 MuonTrackingEfficiency.C:1267
 MuonTrackingEfficiency.C:1268
 MuonTrackingEfficiency.C:1269
 MuonTrackingEfficiency.C:1270
 MuonTrackingEfficiency.C:1271
 MuonTrackingEfficiency.C:1272
 MuonTrackingEfficiency.C:1273
 MuonTrackingEfficiency.C:1274
 MuonTrackingEfficiency.C:1275
 MuonTrackingEfficiency.C:1276
 MuonTrackingEfficiency.C:1277
 MuonTrackingEfficiency.C:1278
 MuonTrackingEfficiency.C:1279
 MuonTrackingEfficiency.C:1280
 MuonTrackingEfficiency.C:1281
 MuonTrackingEfficiency.C:1282
 MuonTrackingEfficiency.C:1283
 MuonTrackingEfficiency.C:1284
 MuonTrackingEfficiency.C:1285
 MuonTrackingEfficiency.C:1286
 MuonTrackingEfficiency.C:1287
 MuonTrackingEfficiency.C:1288
 MuonTrackingEfficiency.C:1289
 MuonTrackingEfficiency.C:1290
 MuonTrackingEfficiency.C:1291
 MuonTrackingEfficiency.C:1292
 MuonTrackingEfficiency.C:1293
 MuonTrackingEfficiency.C:1294
 MuonTrackingEfficiency.C:1295
 MuonTrackingEfficiency.C:1296
 MuonTrackingEfficiency.C:1297
 MuonTrackingEfficiency.C:1298
 MuonTrackingEfficiency.C:1299
 MuonTrackingEfficiency.C:1300
 MuonTrackingEfficiency.C:1301
 MuonTrackingEfficiency.C:1302
 MuonTrackingEfficiency.C:1303
 MuonTrackingEfficiency.C:1304
 MuonTrackingEfficiency.C:1305
 MuonTrackingEfficiency.C:1306
 MuonTrackingEfficiency.C:1307
 MuonTrackingEfficiency.C:1308
 MuonTrackingEfficiency.C:1309
 MuonTrackingEfficiency.C:1310
 MuonTrackingEfficiency.C:1311
 MuonTrackingEfficiency.C:1312
 MuonTrackingEfficiency.C:1313
 MuonTrackingEfficiency.C:1314
 MuonTrackingEfficiency.C:1315
 MuonTrackingEfficiency.C:1316
 MuonTrackingEfficiency.C:1317
 MuonTrackingEfficiency.C:1318
 MuonTrackingEfficiency.C:1319
 MuonTrackingEfficiency.C:1320
 MuonTrackingEfficiency.C:1321
 MuonTrackingEfficiency.C:1322
 MuonTrackingEfficiency.C:1323
 MuonTrackingEfficiency.C:1324
 MuonTrackingEfficiency.C:1325
 MuonTrackingEfficiency.C:1326
 MuonTrackingEfficiency.C:1327
 MuonTrackingEfficiency.C:1328
 MuonTrackingEfficiency.C:1329
 MuonTrackingEfficiency.C:1330
 MuonTrackingEfficiency.C:1331
 MuonTrackingEfficiency.C:1332
 MuonTrackingEfficiency.C:1333
 MuonTrackingEfficiency.C:1334
 MuonTrackingEfficiency.C:1335
 MuonTrackingEfficiency.C:1336
 MuonTrackingEfficiency.C:1337
 MuonTrackingEfficiency.C:1338
 MuonTrackingEfficiency.C:1339
 MuonTrackingEfficiency.C:1340
 MuonTrackingEfficiency.C:1341
 MuonTrackingEfficiency.C:1342
 MuonTrackingEfficiency.C:1343
 MuonTrackingEfficiency.C:1344
 MuonTrackingEfficiency.C:1345
 MuonTrackingEfficiency.C:1346
 MuonTrackingEfficiency.C:1347
 MuonTrackingEfficiency.C:1348
 MuonTrackingEfficiency.C:1349
 MuonTrackingEfficiency.C:1350
 MuonTrackingEfficiency.C:1351
 MuonTrackingEfficiency.C:1352
 MuonTrackingEfficiency.C:1353
 MuonTrackingEfficiency.C:1354
 MuonTrackingEfficiency.C:1355
 MuonTrackingEfficiency.C:1356
 MuonTrackingEfficiency.C:1357
 MuonTrackingEfficiency.C:1358
 MuonTrackingEfficiency.C:1359
 MuonTrackingEfficiency.C:1360
 MuonTrackingEfficiency.C:1361
 MuonTrackingEfficiency.C:1362
 MuonTrackingEfficiency.C:1363
 MuonTrackingEfficiency.C:1364
 MuonTrackingEfficiency.C:1365
 MuonTrackingEfficiency.C:1366
 MuonTrackingEfficiency.C:1367
 MuonTrackingEfficiency.C:1368
 MuonTrackingEfficiency.C:1369
 MuonTrackingEfficiency.C:1370
 MuonTrackingEfficiency.C:1371
 MuonTrackingEfficiency.C:1372
 MuonTrackingEfficiency.C:1373
 MuonTrackingEfficiency.C:1374
 MuonTrackingEfficiency.C:1375
 MuonTrackingEfficiency.C:1376
 MuonTrackingEfficiency.C:1377
 MuonTrackingEfficiency.C:1378
 MuonTrackingEfficiency.C:1379
 MuonTrackingEfficiency.C:1380
 MuonTrackingEfficiency.C:1381
 MuonTrackingEfficiency.C:1382
 MuonTrackingEfficiency.C:1383
 MuonTrackingEfficiency.C:1384
 MuonTrackingEfficiency.C:1385
 MuonTrackingEfficiency.C:1386
 MuonTrackingEfficiency.C:1387
 MuonTrackingEfficiency.C:1388
 MuonTrackingEfficiency.C:1389
 MuonTrackingEfficiency.C:1390
 MuonTrackingEfficiency.C:1391
 MuonTrackingEfficiency.C:1392
 MuonTrackingEfficiency.C:1393
 MuonTrackingEfficiency.C:1394
 MuonTrackingEfficiency.C:1395
 MuonTrackingEfficiency.C:1396
 MuonTrackingEfficiency.C:1397
 MuonTrackingEfficiency.C:1398
 MuonTrackingEfficiency.C:1399
 MuonTrackingEfficiency.C:1400
 MuonTrackingEfficiency.C:1401
 MuonTrackingEfficiency.C:1402
 MuonTrackingEfficiency.C:1403
 MuonTrackingEfficiency.C:1404
 MuonTrackingEfficiency.C:1405
 MuonTrackingEfficiency.C:1406
 MuonTrackingEfficiency.C:1407
 MuonTrackingEfficiency.C:1408
 MuonTrackingEfficiency.C:1409
 MuonTrackingEfficiency.C:1410
 MuonTrackingEfficiency.C:1411
 MuonTrackingEfficiency.C:1412
 MuonTrackingEfficiency.C:1413
 MuonTrackingEfficiency.C:1414
 MuonTrackingEfficiency.C:1415
 MuonTrackingEfficiency.C:1416
 MuonTrackingEfficiency.C:1417
 MuonTrackingEfficiency.C:1418
 MuonTrackingEfficiency.C:1419
 MuonTrackingEfficiency.C:1420
 MuonTrackingEfficiency.C:1421
 MuonTrackingEfficiency.C:1422
 MuonTrackingEfficiency.C:1423
 MuonTrackingEfficiency.C:1424
 MuonTrackingEfficiency.C:1425
 MuonTrackingEfficiency.C:1426
 MuonTrackingEfficiency.C:1427
 MuonTrackingEfficiency.C:1428
 MuonTrackingEfficiency.C:1429
 MuonTrackingEfficiency.C:1430
 MuonTrackingEfficiency.C:1431
 MuonTrackingEfficiency.C:1432
 MuonTrackingEfficiency.C:1433
 MuonTrackingEfficiency.C:1434
 MuonTrackingEfficiency.C:1435
 MuonTrackingEfficiency.C:1436
 MuonTrackingEfficiency.C:1437
 MuonTrackingEfficiency.C:1438
 MuonTrackingEfficiency.C:1439
 MuonTrackingEfficiency.C:1440
 MuonTrackingEfficiency.C:1441
 MuonTrackingEfficiency.C:1442
 MuonTrackingEfficiency.C:1443
 MuonTrackingEfficiency.C:1444
 MuonTrackingEfficiency.C:1445
 MuonTrackingEfficiency.C:1446
 MuonTrackingEfficiency.C:1447
 MuonTrackingEfficiency.C:1448
 MuonTrackingEfficiency.C:1449
 MuonTrackingEfficiency.C:1450
 MuonTrackingEfficiency.C:1451
 MuonTrackingEfficiency.C:1452
 MuonTrackingEfficiency.C:1453
 MuonTrackingEfficiency.C:1454
 MuonTrackingEfficiency.C:1455
 MuonTrackingEfficiency.C:1456
 MuonTrackingEfficiency.C:1457
 MuonTrackingEfficiency.C:1458
 MuonTrackingEfficiency.C:1459
 MuonTrackingEfficiency.C:1460
 MuonTrackingEfficiency.C:1461
 MuonTrackingEfficiency.C:1462
 MuonTrackingEfficiency.C:1463
 MuonTrackingEfficiency.C:1464
 MuonTrackingEfficiency.C:1465
 MuonTrackingEfficiency.C:1466
 MuonTrackingEfficiency.C:1467
 MuonTrackingEfficiency.C:1468
 MuonTrackingEfficiency.C:1469
 MuonTrackingEfficiency.C:1470
 MuonTrackingEfficiency.C:1471
 MuonTrackingEfficiency.C:1472
 MuonTrackingEfficiency.C:1473
 MuonTrackingEfficiency.C:1474
 MuonTrackingEfficiency.C:1475
 MuonTrackingEfficiency.C:1476
 MuonTrackingEfficiency.C:1477
 MuonTrackingEfficiency.C:1478
 MuonTrackingEfficiency.C:1479
 MuonTrackingEfficiency.C:1480
 MuonTrackingEfficiency.C:1481
 MuonTrackingEfficiency.C:1482
 MuonTrackingEfficiency.C:1483
 MuonTrackingEfficiency.C:1484
 MuonTrackingEfficiency.C:1485
 MuonTrackingEfficiency.C:1486
 MuonTrackingEfficiency.C:1487
 MuonTrackingEfficiency.C:1488
 MuonTrackingEfficiency.C:1489
 MuonTrackingEfficiency.C:1490
 MuonTrackingEfficiency.C:1491
 MuonTrackingEfficiency.C:1492
 MuonTrackingEfficiency.C:1493
 MuonTrackingEfficiency.C:1494
 MuonTrackingEfficiency.C:1495
 MuonTrackingEfficiency.C:1496
 MuonTrackingEfficiency.C:1497
 MuonTrackingEfficiency.C:1498
 MuonTrackingEfficiency.C:1499
 MuonTrackingEfficiency.C:1500
 MuonTrackingEfficiency.C:1501
 MuonTrackingEfficiency.C:1502
 MuonTrackingEfficiency.C:1503
 MuonTrackingEfficiency.C:1504
 MuonTrackingEfficiency.C:1505
 MuonTrackingEfficiency.C:1506
 MuonTrackingEfficiency.C:1507
 MuonTrackingEfficiency.C:1508
 MuonTrackingEfficiency.C:1509
 MuonTrackingEfficiency.C:1510
 MuonTrackingEfficiency.C:1511
 MuonTrackingEfficiency.C:1512
 MuonTrackingEfficiency.C:1513
 MuonTrackingEfficiency.C:1514
 MuonTrackingEfficiency.C:1515
 MuonTrackingEfficiency.C:1516
 MuonTrackingEfficiency.C:1517
 MuonTrackingEfficiency.C:1518
 MuonTrackingEfficiency.C:1519
 MuonTrackingEfficiency.C:1520
 MuonTrackingEfficiency.C:1521
 MuonTrackingEfficiency.C:1522
 MuonTrackingEfficiency.C:1523
 MuonTrackingEfficiency.C:1524
 MuonTrackingEfficiency.C:1525
 MuonTrackingEfficiency.C:1526
 MuonTrackingEfficiency.C:1527
 MuonTrackingEfficiency.C:1528
 MuonTrackingEfficiency.C:1529
 MuonTrackingEfficiency.C:1530
 MuonTrackingEfficiency.C:1531
 MuonTrackingEfficiency.C:1532
 MuonTrackingEfficiency.C:1533
 MuonTrackingEfficiency.C:1534
 MuonTrackingEfficiency.C:1535
 MuonTrackingEfficiency.C:1536
 MuonTrackingEfficiency.C:1537
 MuonTrackingEfficiency.C:1538
 MuonTrackingEfficiency.C:1539
 MuonTrackingEfficiency.C:1540
 MuonTrackingEfficiency.C:1541
 MuonTrackingEfficiency.C:1542
 MuonTrackingEfficiency.C:1543
 MuonTrackingEfficiency.C:1544
 MuonTrackingEfficiency.C:1545
 MuonTrackingEfficiency.C:1546
 MuonTrackingEfficiency.C:1547
 MuonTrackingEfficiency.C:1548
 MuonTrackingEfficiency.C:1549
 MuonTrackingEfficiency.C:1550
 MuonTrackingEfficiency.C:1551
 MuonTrackingEfficiency.C:1552
 MuonTrackingEfficiency.C:1553
 MuonTrackingEfficiency.C:1554
 MuonTrackingEfficiency.C:1555
 MuonTrackingEfficiency.C:1556
 MuonTrackingEfficiency.C:1557
 MuonTrackingEfficiency.C:1558
 MuonTrackingEfficiency.C:1559
 MuonTrackingEfficiency.C:1560
 MuonTrackingEfficiency.C:1561
 MuonTrackingEfficiency.C:1562
 MuonTrackingEfficiency.C:1563
 MuonTrackingEfficiency.C:1564
 MuonTrackingEfficiency.C:1565
 MuonTrackingEfficiency.C:1566
 MuonTrackingEfficiency.C:1567
 MuonTrackingEfficiency.C:1568
 MuonTrackingEfficiency.C:1569
 MuonTrackingEfficiency.C:1570
 MuonTrackingEfficiency.C:1571
 MuonTrackingEfficiency.C:1572
 MuonTrackingEfficiency.C:1573
 MuonTrackingEfficiency.C:1574
 MuonTrackingEfficiency.C:1575
 MuonTrackingEfficiency.C:1576
 MuonTrackingEfficiency.C:1577
 MuonTrackingEfficiency.C:1578
 MuonTrackingEfficiency.C:1579
 MuonTrackingEfficiency.C:1580
 MuonTrackingEfficiency.C:1581
 MuonTrackingEfficiency.C:1582
 MuonTrackingEfficiency.C:1583
 MuonTrackingEfficiency.C:1584
 MuonTrackingEfficiency.C:1585
 MuonTrackingEfficiency.C:1586
 MuonTrackingEfficiency.C:1587
 MuonTrackingEfficiency.C:1588
 MuonTrackingEfficiency.C:1589
 MuonTrackingEfficiency.C:1590
 MuonTrackingEfficiency.C:1591
 MuonTrackingEfficiency.C:1592
 MuonTrackingEfficiency.C:1593
 MuonTrackingEfficiency.C:1594
 MuonTrackingEfficiency.C:1595
 MuonTrackingEfficiency.C:1596
 MuonTrackingEfficiency.C:1597
 MuonTrackingEfficiency.C:1598
 MuonTrackingEfficiency.C:1599
 MuonTrackingEfficiency.C:1600
 MuonTrackingEfficiency.C:1601
 MuonTrackingEfficiency.C:1602
 MuonTrackingEfficiency.C:1603
 MuonTrackingEfficiency.C:1604
 MuonTrackingEfficiency.C:1605
 MuonTrackingEfficiency.C:1606
 MuonTrackingEfficiency.C:1607
 MuonTrackingEfficiency.C:1608
 MuonTrackingEfficiency.C:1609
 MuonTrackingEfficiency.C:1610
 MuonTrackingEfficiency.C:1611
 MuonTrackingEfficiency.C:1612
 MuonTrackingEfficiency.C:1613
 MuonTrackingEfficiency.C:1614
 MuonTrackingEfficiency.C:1615
 MuonTrackingEfficiency.C:1616
 MuonTrackingEfficiency.C:1617
 MuonTrackingEfficiency.C:1618
 MuonTrackingEfficiency.C:1619
 MuonTrackingEfficiency.C:1620
 MuonTrackingEfficiency.C:1621
 MuonTrackingEfficiency.C:1622
 MuonTrackingEfficiency.C:1623
 MuonTrackingEfficiency.C:1624
 MuonTrackingEfficiency.C:1625
 MuonTrackingEfficiency.C:1626
 MuonTrackingEfficiency.C:1627
 MuonTrackingEfficiency.C:1628
 MuonTrackingEfficiency.C:1629
 MuonTrackingEfficiency.C:1630
 MuonTrackingEfficiency.C:1631
 MuonTrackingEfficiency.C:1632
 MuonTrackingEfficiency.C:1633
 MuonTrackingEfficiency.C:1634
 MuonTrackingEfficiency.C:1635
 MuonTrackingEfficiency.C:1636
 MuonTrackingEfficiency.C:1637
 MuonTrackingEfficiency.C:1638
 MuonTrackingEfficiency.C:1639
 MuonTrackingEfficiency.C:1640
 MuonTrackingEfficiency.C:1641
 MuonTrackingEfficiency.C:1642
 MuonTrackingEfficiency.C:1643
 MuonTrackingEfficiency.C:1644
 MuonTrackingEfficiency.C:1645
 MuonTrackingEfficiency.C:1646
 MuonTrackingEfficiency.C:1647
 MuonTrackingEfficiency.C:1648
 MuonTrackingEfficiency.C:1649
 MuonTrackingEfficiency.C:1650
 MuonTrackingEfficiency.C:1651
 MuonTrackingEfficiency.C:1652
 MuonTrackingEfficiency.C:1653
 MuonTrackingEfficiency.C:1654
 MuonTrackingEfficiency.C:1655
 MuonTrackingEfficiency.C:1656
 MuonTrackingEfficiency.C:1657
 MuonTrackingEfficiency.C:1658
 MuonTrackingEfficiency.C:1659
 MuonTrackingEfficiency.C:1660
 MuonTrackingEfficiency.C:1661
 MuonTrackingEfficiency.C:1662
 MuonTrackingEfficiency.C:1663
 MuonTrackingEfficiency.C:1664
 MuonTrackingEfficiency.C:1665
 MuonTrackingEfficiency.C:1666
 MuonTrackingEfficiency.C:1667
 MuonTrackingEfficiency.C:1668
 MuonTrackingEfficiency.C:1669
 MuonTrackingEfficiency.C:1670
 MuonTrackingEfficiency.C:1671
 MuonTrackingEfficiency.C:1672
 MuonTrackingEfficiency.C:1673
 MuonTrackingEfficiency.C:1674
 MuonTrackingEfficiency.C:1675
 MuonTrackingEfficiency.C:1676
 MuonTrackingEfficiency.C:1677
 MuonTrackingEfficiency.C:1678
 MuonTrackingEfficiency.C:1679
 MuonTrackingEfficiency.C:1680
 MuonTrackingEfficiency.C:1681
 MuonTrackingEfficiency.C:1682
 MuonTrackingEfficiency.C:1683
 MuonTrackingEfficiency.C:1684
 MuonTrackingEfficiency.C:1685
 MuonTrackingEfficiency.C:1686
 MuonTrackingEfficiency.C:1687
 MuonTrackingEfficiency.C:1688
 MuonTrackingEfficiency.C:1689
 MuonTrackingEfficiency.C:1690
 MuonTrackingEfficiency.C:1691
 MuonTrackingEfficiency.C:1692
 MuonTrackingEfficiency.C:1693
 MuonTrackingEfficiency.C:1694
 MuonTrackingEfficiency.C:1695
 MuonTrackingEfficiency.C:1696
 MuonTrackingEfficiency.C:1697
 MuonTrackingEfficiency.C:1698
 MuonTrackingEfficiency.C:1699
 MuonTrackingEfficiency.C:1700
 MuonTrackingEfficiency.C:1701
 MuonTrackingEfficiency.C:1702
 MuonTrackingEfficiency.C:1703
 MuonTrackingEfficiency.C:1704
 MuonTrackingEfficiency.C:1705
 MuonTrackingEfficiency.C:1706
 MuonTrackingEfficiency.C:1707
 MuonTrackingEfficiency.C:1708
 MuonTrackingEfficiency.C:1709
 MuonTrackingEfficiency.C:1710
 MuonTrackingEfficiency.C:1711
 MuonTrackingEfficiency.C:1712
 MuonTrackingEfficiency.C:1713
 MuonTrackingEfficiency.C:1714
 MuonTrackingEfficiency.C:1715
 MuonTrackingEfficiency.C:1716
 MuonTrackingEfficiency.C:1717
 MuonTrackingEfficiency.C:1718
 MuonTrackingEfficiency.C:1719
 MuonTrackingEfficiency.C:1720
 MuonTrackingEfficiency.C:1721
 MuonTrackingEfficiency.C:1722
 MuonTrackingEfficiency.C:1723
 MuonTrackingEfficiency.C:1724
 MuonTrackingEfficiency.C:1725
 MuonTrackingEfficiency.C:1726
 MuonTrackingEfficiency.C:1727
 MuonTrackingEfficiency.C:1728
 MuonTrackingEfficiency.C:1729
 MuonTrackingEfficiency.C:1730
 MuonTrackingEfficiency.C:1731
 MuonTrackingEfficiency.C:1732
 MuonTrackingEfficiency.C:1733
 MuonTrackingEfficiency.C:1734
 MuonTrackingEfficiency.C:1735
 MuonTrackingEfficiency.C:1736
 MuonTrackingEfficiency.C:1737
 MuonTrackingEfficiency.C:1738
 MuonTrackingEfficiency.C:1739
 MuonTrackingEfficiency.C:1740
 MuonTrackingEfficiency.C:1741
 MuonTrackingEfficiency.C:1742
 MuonTrackingEfficiency.C:1743
 MuonTrackingEfficiency.C:1744
 MuonTrackingEfficiency.C:1745
 MuonTrackingEfficiency.C:1746
 MuonTrackingEfficiency.C:1747
 MuonTrackingEfficiency.C:1748
 MuonTrackingEfficiency.C:1749
 MuonTrackingEfficiency.C:1750
 MuonTrackingEfficiency.C:1751
 MuonTrackingEfficiency.C:1752
 MuonTrackingEfficiency.C:1753
 MuonTrackingEfficiency.C:1754
 MuonTrackingEfficiency.C:1755
 MuonTrackingEfficiency.C:1756
 MuonTrackingEfficiency.C:1757
 MuonTrackingEfficiency.C:1758
 MuonTrackingEfficiency.C:1759
 MuonTrackingEfficiency.C:1760
 MuonTrackingEfficiency.C:1761
 MuonTrackingEfficiency.C:1762
 MuonTrackingEfficiency.C:1763
 MuonTrackingEfficiency.C:1764
 MuonTrackingEfficiency.C:1765
 MuonTrackingEfficiency.C:1766
 MuonTrackingEfficiency.C:1767
 MuonTrackingEfficiency.C:1768
 MuonTrackingEfficiency.C:1769
 MuonTrackingEfficiency.C:1770
 MuonTrackingEfficiency.C:1771
 MuonTrackingEfficiency.C:1772
 MuonTrackingEfficiency.C:1773
 MuonTrackingEfficiency.C:1774
 MuonTrackingEfficiency.C:1775
 MuonTrackingEfficiency.C:1776
 MuonTrackingEfficiency.C:1777
 MuonTrackingEfficiency.C:1778
 MuonTrackingEfficiency.C:1779
 MuonTrackingEfficiency.C:1780
 MuonTrackingEfficiency.C:1781
 MuonTrackingEfficiency.C:1782
 MuonTrackingEfficiency.C:1783
 MuonTrackingEfficiency.C:1784
 MuonTrackingEfficiency.C:1785
 MuonTrackingEfficiency.C:1786
 MuonTrackingEfficiency.C:1787
 MuonTrackingEfficiency.C:1788
 MuonTrackingEfficiency.C:1789
 MuonTrackingEfficiency.C:1790
 MuonTrackingEfficiency.C:1791
 MuonTrackingEfficiency.C:1792
 MuonTrackingEfficiency.C:1793
 MuonTrackingEfficiency.C:1794
 MuonTrackingEfficiency.C:1795
 MuonTrackingEfficiency.C:1796
 MuonTrackingEfficiency.C:1797
 MuonTrackingEfficiency.C:1798
 MuonTrackingEfficiency.C:1799
 MuonTrackingEfficiency.C:1800
 MuonTrackingEfficiency.C:1801
 MuonTrackingEfficiency.C:1802
 MuonTrackingEfficiency.C:1803
 MuonTrackingEfficiency.C:1804
 MuonTrackingEfficiency.C:1805
 MuonTrackingEfficiency.C:1806
 MuonTrackingEfficiency.C:1807
 MuonTrackingEfficiency.C:1808
 MuonTrackingEfficiency.C:1809
 MuonTrackingEfficiency.C:1810
 MuonTrackingEfficiency.C:1811
 MuonTrackingEfficiency.C:1812
 MuonTrackingEfficiency.C:1813
 MuonTrackingEfficiency.C:1814
 MuonTrackingEfficiency.C:1815
 MuonTrackingEfficiency.C:1816
 MuonTrackingEfficiency.C:1817
 MuonTrackingEfficiency.C:1818
 MuonTrackingEfficiency.C:1819
 MuonTrackingEfficiency.C:1820
 MuonTrackingEfficiency.C:1821
 MuonTrackingEfficiency.C:1822
 MuonTrackingEfficiency.C:1823
 MuonTrackingEfficiency.C:1824
 MuonTrackingEfficiency.C:1825
 MuonTrackingEfficiency.C:1826
 MuonTrackingEfficiency.C:1827
 MuonTrackingEfficiency.C:1828
 MuonTrackingEfficiency.C:1829
 MuonTrackingEfficiency.C:1830
 MuonTrackingEfficiency.C:1831
 MuonTrackingEfficiency.C:1832
 MuonTrackingEfficiency.C:1833
 MuonTrackingEfficiency.C:1834
 MuonTrackingEfficiency.C:1835
 MuonTrackingEfficiency.C:1836
 MuonTrackingEfficiency.C:1837
 MuonTrackingEfficiency.C:1838
 MuonTrackingEfficiency.C:1839
 MuonTrackingEfficiency.C:1840
 MuonTrackingEfficiency.C:1841
 MuonTrackingEfficiency.C:1842
 MuonTrackingEfficiency.C:1843
 MuonTrackingEfficiency.C:1844
 MuonTrackingEfficiency.C:1845
 MuonTrackingEfficiency.C:1846
 MuonTrackingEfficiency.C:1847
 MuonTrackingEfficiency.C:1848
 MuonTrackingEfficiency.C:1849
 MuonTrackingEfficiency.C:1850
 MuonTrackingEfficiency.C:1851
 MuonTrackingEfficiency.C:1852
 MuonTrackingEfficiency.C:1853
 MuonTrackingEfficiency.C:1854
 MuonTrackingEfficiency.C:1855
 MuonTrackingEfficiency.C:1856
 MuonTrackingEfficiency.C:1857
 MuonTrackingEfficiency.C:1858
 MuonTrackingEfficiency.C:1859
 MuonTrackingEfficiency.C:1860
 MuonTrackingEfficiency.C:1861
 MuonTrackingEfficiency.C:1862
 MuonTrackingEfficiency.C:1863
 MuonTrackingEfficiency.C:1864
 MuonTrackingEfficiency.C:1865
 MuonTrackingEfficiency.C:1866
 MuonTrackingEfficiency.C:1867
 MuonTrackingEfficiency.C:1868
 MuonTrackingEfficiency.C:1869
 MuonTrackingEfficiency.C:1870
 MuonTrackingEfficiency.C:1871
 MuonTrackingEfficiency.C:1872
 MuonTrackingEfficiency.C:1873
 MuonTrackingEfficiency.C:1874
 MuonTrackingEfficiency.C:1875
 MuonTrackingEfficiency.C:1876
 MuonTrackingEfficiency.C:1877
 MuonTrackingEfficiency.C:1878
 MuonTrackingEfficiency.C:1879
 MuonTrackingEfficiency.C:1880
 MuonTrackingEfficiency.C:1881
 MuonTrackingEfficiency.C:1882
 MuonTrackingEfficiency.C:1883
 MuonTrackingEfficiency.C:1884
 MuonTrackingEfficiency.C:1885
 MuonTrackingEfficiency.C:1886
 MuonTrackingEfficiency.C:1887
 MuonTrackingEfficiency.C:1888
 MuonTrackingEfficiency.C:1889
 MuonTrackingEfficiency.C:1890
 MuonTrackingEfficiency.C:1891
 MuonTrackingEfficiency.C:1892
 MuonTrackingEfficiency.C:1893
 MuonTrackingEfficiency.C:1894
 MuonTrackingEfficiency.C:1895
 MuonTrackingEfficiency.C:1896
 MuonTrackingEfficiency.C:1897
 MuonTrackingEfficiency.C:1898
 MuonTrackingEfficiency.C:1899
 MuonTrackingEfficiency.C:1900
 MuonTrackingEfficiency.C:1901
 MuonTrackingEfficiency.C:1902
 MuonTrackingEfficiency.C:1903
 MuonTrackingEfficiency.C:1904
 MuonTrackingEfficiency.C:1905
 MuonTrackingEfficiency.C:1906
 MuonTrackingEfficiency.C:1907
 MuonTrackingEfficiency.C:1908
 MuonTrackingEfficiency.C:1909
 MuonTrackingEfficiency.C:1910
 MuonTrackingEfficiency.C:1911
 MuonTrackingEfficiency.C:1912
 MuonTrackingEfficiency.C:1913
 MuonTrackingEfficiency.C:1914
 MuonTrackingEfficiency.C:1915
 MuonTrackingEfficiency.C:1916
 MuonTrackingEfficiency.C:1917
 MuonTrackingEfficiency.C:1918
 MuonTrackingEfficiency.C:1919
 MuonTrackingEfficiency.C:1920
 MuonTrackingEfficiency.C:1921
 MuonTrackingEfficiency.C:1922
 MuonTrackingEfficiency.C:1923
 MuonTrackingEfficiency.C:1924
 MuonTrackingEfficiency.C:1925
 MuonTrackingEfficiency.C:1926
 MuonTrackingEfficiency.C:1927
 MuonTrackingEfficiency.C:1928
 MuonTrackingEfficiency.C:1929
 MuonTrackingEfficiency.C:1930
 MuonTrackingEfficiency.C:1931
 MuonTrackingEfficiency.C:1932
 MuonTrackingEfficiency.C:1933
 MuonTrackingEfficiency.C:1934
 MuonTrackingEfficiency.C:1935
 MuonTrackingEfficiency.C:1936
 MuonTrackingEfficiency.C:1937
 MuonTrackingEfficiency.C:1938
 MuonTrackingEfficiency.C:1939
 MuonTrackingEfficiency.C:1940
 MuonTrackingEfficiency.C:1941
 MuonTrackingEfficiency.C:1942
 MuonTrackingEfficiency.C:1943
 MuonTrackingEfficiency.C:1944
 MuonTrackingEfficiency.C:1945
 MuonTrackingEfficiency.C:1946
 MuonTrackingEfficiency.C:1947
 MuonTrackingEfficiency.C:1948
 MuonTrackingEfficiency.C:1949
 MuonTrackingEfficiency.C:1950
 MuonTrackingEfficiency.C:1951
 MuonTrackingEfficiency.C:1952
 MuonTrackingEfficiency.C:1953
 MuonTrackingEfficiency.C:1954
 MuonTrackingEfficiency.C:1955
 MuonTrackingEfficiency.C:1956
 MuonTrackingEfficiency.C:1957
 MuonTrackingEfficiency.C:1958
 MuonTrackingEfficiency.C:1959
 MuonTrackingEfficiency.C:1960
 MuonTrackingEfficiency.C:1961
 MuonTrackingEfficiency.C:1962
 MuonTrackingEfficiency.C:1963
 MuonTrackingEfficiency.C:1964
 MuonTrackingEfficiency.C:1965
 MuonTrackingEfficiency.C:1966
 MuonTrackingEfficiency.C:1967
 MuonTrackingEfficiency.C:1968
 MuonTrackingEfficiency.C:1969
 MuonTrackingEfficiency.C:1970
 MuonTrackingEfficiency.C:1971