ROOT logo
const Double_t kMean=0.135 ; //Approximate peak position to facilitate error estimate

//-----------------------------------------------------------------------------
void MakeMmixPi0(const Int_t centrality=0,
		 const char* cModule="")
{
  //---------------------------------------------------------------------------
  // This macro processes PWGPP QA output of the analysis task PHOSPbPbQA
  // (see analysis code in the class AliAnalysisTaskPHOSPbPbQA).
  // It fits Real/Mixed ratio, normalize Mixed and subtract it from Real
  // Arguments:
  // centrality: 0 or 1 for centralities 0-20% or 20-100%
  // cModule: string with the PHOS module to analyze: "", "SM1", "SM2" or "SM3"
  //-
  // Yuri Kharlov. 19.11.2011
  //---------------------------------------------------------------------------
/* $Id$ */

  TFile * f = new TFile("PHOSPbPb_all.root") ;
  TList *histESD = (TList*) f->Get("PHOSPbPbQAResults");
  char key[125] ;

  const char* pid="All";
  const char* txtCent[] = {"0-20%","20-100%"};
  TH2F * hCentrality  = (TH2F*)f->Get("hCenPHOS") ;
  TH1D * hCentrality1 = hCentrality->ProjectionX();
  TString inputKey;
  TString outputKey = Form("%s10_cent%d",pid,centrality);

  TH2F *h , *hAdd;
  TH2F *hm, *hmAdd;
  if (centrality == 0 || centrality == 1) {// centrality 0-20%, 20-100%
    inputKey = Form("hPi0%s%s_cen%d"  ,pid,cModule,centrality);
    TH2F *h = (TH2F*)f->Get(inputKey) ;
    inputKey = Form("hMiPi0%s%s_cen%d",pid,cModule,centrality);
    TH2F *hm= (TH2F*)f->Get(inputKey) ;
    if (h==0) {
      printf("Missing histogram %s\n",inputKey);
      return;
    }
  }
  else {
    printf("Wrong centrality %d. Allowed values are 0,1,2,3,10.\n",centrality);
    return;
  }

  // Int_t nPadX=2,nPadY=2;
  // Int_t nbin=4 ;
  // Double_t xa[]={0.8, 2.0, 3.5, 6.0, 20.} ;

  Int_t nPadX=1,nPadY=1;
  Int_t nbin=1 ;
  Double_t xa[]={2.0, 20.} ;

  PPRstyle();
  gStyle->SetOptFit(111);
  gStyle->SetPadLeftMargin(0.14);
  gStyle->SetPadRightMargin(0.01);
  gStyle->SetPadTopMargin(0.05);
  gStyle->SetPadBottomMargin(0.08);

  TString txtModule;
  if      (strcmp(cModule,"")   ==0) txtModule="All PHOS modules";
  else if (strcmp(cModule,"SM1")==0) txtModule="PHOS module 4";
  else if (strcmp(cModule,"SM2")==0) txtModule="PHOS module 3";
  else if (strcmp(cModule,"SM3")==0) txtModule="PHOS module 2";

  TPaveText *label = new TPaveText(0.15,0.80,0.40,0.90,"NDC");
  label->SetFillColor(kWhite);
  label->SetBorderSize(1);
  label->AddText(Form("Centrality %s" ,txtCent[centrality]));
  label->AddText(Form("%s",txtModule.Data()));

  //Fit real only 
  //Linear Bg
  char kkey[55];
  sprintf(kkey,outputKey.Data()) ;
  char key2[155];
  sprintf(key,"Mix%s",kkey) ;
  sprintf(key2,"%s_mr1",key) ;
  TH1D * mr1 = new TH1D(key2,"Mass",nbin,xa) ;
  sprintf(key2,"%s_sr1",key) ;
  TH1D * sr1 = new TH1D(key2,"Width",nbin,xa) ;
  sprintf(key2,"%s_ar1",key) ;
  TH1D * ar1 = new TH1D(key2,"a",nbin,xa) ;
  sprintf(key2,"%s_br1",key) ;
  TH1D * br1 = new TH1D(key2,"a",nbin,xa) ;
  sprintf(key2,"%s_yr1",key) ;
  TH1D * nr1 = new TH1D(key2,"Raw yield",nbin,xa) ;
  sprintf(key2,"%s_yr1int",key) ;
  TH1D * nr1int = new TH1D(key2,"Raw yield, integrated",nbin,xa) ;

  //Quadratic Bg
  sprintf(key2,"%s_mr2",key) ;
  TH1D * mr2 = new TH1D(key2,"Mass",nbin,xa) ;
  sprintf(key2,"%s_sr2",key) ;
  TH1D * sr2 = new TH1D(key2,"Width",nbin,xa) ;
  sprintf(key2,"%s_ar2",key) ;
  TH1D * ar2 = new TH1D(key2,"a",nbin,xa) ;
  sprintf(key2,"%s_br2",key) ;
  TH1D * br2 = new TH1D(key2,"a",nbin,xa) ;
  sprintf(key2,"%s_cr2",key) ;
  TH1D * cr2 = new TH1D(key2,"a",nbin,xa) ;
  sprintf(key2,"%s_yr2",key) ;
  TH1D * nr2 = new TH1D(key2,"Raw yield",nbin,xa) ;
  sprintf(key2,"%s_yr2int",key) ;
  TH1D * nr2int = new TH1D(key2,"Raw yield, integrated",nbin,xa) ;

  TF1 * fit1 = new TF1("fit",CB,0.,1.,6) ;
  fit1->SetParName(0,"A") ;
  fit1->SetParName(1,"m_{0}") ;
  fit1->SetParName(2,"#sigma") ;
  fit1->SetParName(3,"a_{0}") ;
  fit1->SetParName(4,"a_{1}") ;
  fit1->SetParName(5,"a_{2}") ;
  fit1->SetLineWidth(2) ;
  fit1->SetLineColor(2) ;
  TF1 * fgs = new TF1("gs",CBs,0.,1.,3) ;
  fgs->SetParName(0,"A") ;
  fgs->SetParName(1,"m_{0}") ;
  fgs->SetParName(2,"#sigma") ;
  fgs->SetLineColor(2) ;
  fgs->SetLineWidth(2) ;

  TF1 * fit2 = new TF1("fit2",CB2,0.,1.,7) ;
  fit2->SetParName(0,"A") ;
  fit2->SetParName(1,"m_{0}") ;
  fit2->SetParName(2,"#sigma") ;
  fit2->SetParName(3,"a_{0}") ;
  fit2->SetParName(4,"a_{1}") ;
  fit2->SetParName(5,"a_{2}") ;
  fit2->SetParName(6,"a_{3}") ;
  fit2->SetLineWidth(2) ;
  fit2->SetLineColor(4) ;
  fit2->SetLineStyle(2) ;

  TF1 * fbg1 = new TF1("bg1",BG1,0.,1.,3) ;
  TF1 * fbg2 = new TF1("bg2",BG2,0.,1.,4) ;

  TCanvas * c3 = new TCanvas("mggFit1_Signal","mggFitCB",10,10,1200,800) ;
  c3->Divide(nPadX,nPadY) ;

  TCanvas * c1 = new TCanvas("mggFit1","mggFit1",10,10,1200,800) ;
  c1->Divide(nPadX,nPadY) ;
  c1->cd(0) ;

  TCanvas *c4, *c2;
  TAxis * pta=h->GetYaxis() ;
  TAxis * ma=h->GetXaxis() ;
  for(Int_t i=1;i<=nbin;i++){
    if(i<=15)
       c1->cd(i) ;
    else{
      if(c2==0){
	c2 = new TCanvas("mggFit2","mggFit2",10,10,1200,800) ;   
	c2->Divide(nPadX,nPadY) ;
      }
      c2->cd(i-16) ;
    }
    printf("\t%.1f<pt<%.1f GeV/c\n",xa[i-1],xa[i]);
    Int_t imin=pta->FindBin(xa[i-1]+0.0001);
    Int_t imax=pta->FindBin(xa[i]-0.0001) ;
    Double_t pt=(xa[i]+xa[i-1])/2. ;
    TH1D * hp = h->ProjectionX("re",imin,imax) ;
    hp->Sumw2() ;
    TH1D * hpm= hm->ProjectionX("mi",imin,imax) ;
    hpm->Sumw2() ;
    // if(i<=11){
    if(i<=10){
      hp ->Rebin(4) ;
      hpm->Rebin(4) ;
    }
    else{
      hp ->Rebin(5) ;
      hpm->Rebin(5) ;
    }
    for(Int_t ib=1; ib<=hp->GetNbinsX();ib++){if(hp ->GetBinContent(ib)==0)hp ->SetBinError(ib,1.);}
    for(Int_t ib=1; ib<=hp->GetNbinsX();ib++){if(hpm->GetBinContent(ib)==0)hpm->SetBinError(ib,1.);}
    TH1D * hpm2   = (TH1D*)hpm->Clone("Bg1") ;
    TH1D * hpcopy = (TH1D*)hp ->Clone("hpcopy") ;
    TH1D * hp2    = (TH1D*)hp ->Clone("hp2") ;
    hpcopy->SetXTitle("M_{#gamma#gamma} (GeV/c^{2})");
    hp2   ->SetXTitle("M_{#gamma#gamma} (GeV/c^{2})");
    hpcopy->Divide(hpm) ;
    sprintf(key,"%3.1f<p_{T}<%3.1f GeV/c",xa[i-1],xa[i]) ;
    hpcopy->SetTitle(key) ;
    hpcopy->SetMarkerStyle(20) ;
    hpcopy->SetMarkerSize(0.7) ;
    
    fit1->SetParameters(0.001,0.136,0.005,0.0002,-0.002,0.0) ;
    fit1->SetParLimits(0,0.000,1.000) ;
    fit1->SetParLimits(1,0.125,0.145) ;
    fit1->SetParLimits(2,0.002,0.015) ;

    Double_t rangeMin=0.06;
    Double_t rangeMax=0.26;

    hpcopy->Fit(fit1,"Q" ,"",rangeMin,rangeMax) ;
    hpcopy->Fit(fit1,"MQ","",rangeMin,rangeMax) ;

    ar1->SetBinContent(i,fit1->GetParameter(3)) ;
    ar1->SetBinError  (i,fit1->GetParError(3)) ;
    br1->SetBinContent(i,fit1->GetParameter(4)) ;
    br1->SetBinError  (i,fit1->GetParError(4)) ;

    fit2->SetParameters(fit1->GetParameters()) ;
    fit2->SetParLimits(0,0.000,1.000) ;
    fit2->SetParLimits(1,0.125,0.145) ;
    fit2->SetParLimits(2,0.002,0.015) ;

    hpcopy->Fit(fit2,"+NQ","",rangeMin,rangeMax) ;
    hpcopy->Fit(fit2,"+MQ","",rangeMin,rangeMax) ;

    ar2->SetBinContent(i,fit2->GetParameter(3)) ;
    ar2->SetBinError  (i,fit2->GetParError(3)) ;
    br2->SetBinContent(i,fit2->GetParameter(4)) ;
    br2->SetBinError  (i,fit2->GetParError(4)) ;
    cr2->SetBinContent(i,fit2->GetParameter(5)) ;
    cr2->SetBinError  (i,fit2->GetParError(5)) ;
    hpcopy->SetAxisRange(0.04,0.3,"X") ;
    hpcopy->Draw() ;
    label ->Draw();
    if(c2)
      c2->Update() ;
    else
      c1->Update() ;
//    if(getchar()=='q')return ;

    fbg1->SetParameters(fit1->GetParameter(3),fit1->GetParameter(4),fit1->GetParameter(5)); 
    fbg2->SetParameters(fit2->GetParameter(3),fit2->GetParameter(4),fit2->GetParameter(5),
			fit2->GetParameter(6)); 

    Double_t intRangeMin = PeakPosition(pt,centrality)-3.*PeakWidth(pt,centrality) ;
    Double_t intRangeMax = PeakPosition(pt,centrality)+3.*PeakWidth(pt,centrality) ;
    // printf("pt=%f, %f < M < %f\n",pt,intRangeMin,intRangeMax);
    Int_t    intBinMin   = hp->GetXaxis()->FindBin(intRangeMin) ;
    Int_t    intBinMax   = hp->GetXaxis()->FindBin(intRangeMax) ;
    Double_t errStat     = hpm->Integral(intBinMin,intBinMax); 

    hpm ->Multiply(fbg1) ;
    hpm2->Multiply(fbg2) ;
    hp  ->Add(hpm ,-1.) ;
    hp2 ->Add(hpm2,-1.) ;

    if(i<=15)
       c3->cd(i) ;
    else{
      if(c4==0){
	c4 = new TCanvas("mggFit2_Signal","mggFit2",10,10,1200,800) ;   
	c4->Divide(nPadX,nPadY) ;
      }
      c4->cd(i-15) ;
    }

    Int_t binPi0 = hp->FindBin(kMean);
    fgs->SetParameters(hp->Integral(binPi0-1,binPi0+1)/3.,fit1->GetParameter(1),fit1->GetParameter(2)) ;
    fgs->SetParLimits(0,0.000,1.e+5) ;
    fgs->SetParLimits(1,0.120,0.145) ;
    fgs->SetParLimits(2,0.002,0.015) ;
    hp->Fit(fgs,"Q","",rangeMin,rangeMax) ;   
    hp->SetMaximum(hp2->GetMaximum()*1.4) ;
    hp->SetMinimum(hp2->GetMinimum()*1.1) ;
    hp->SetMarkerStyle(20) ;
    hp->SetMarkerSize(0.7) ;
    mr1->SetBinContent(i,fgs->GetParameter(1)) ;
    mr1->SetBinError  (i,fgs->GetParError(1) ) ;
    sr1->SetBinContent(i,TMath::Abs(fgs->GetParameter(2))) ;
    sr1->SetBinError  (i,fgs->GetParError(2) ) ;

    Double_t y=fgs->Integral(intRangeMin,intRangeMax)/hp->GetXaxis()->GetBinWidth(1) ;
    nr1->SetBinContent(i,y) ;
    Double_t ey=0 ;
    if(fgs->GetParameter(0)!=0. && fgs->GetParameter(2)!=0.){
      Double_t en=fgs->GetParError(0)/fgs->GetParameter(0) ;
      Double_t es=fgs->GetParError(2)/fgs->GetParameter(2) ;
      ey=y*TMath::Sqrt(en*en+es*es) ;
    }
    nr1->SetBinError(i,ey) ;

    Double_t npiInt = hp->Integral(intBinMin,intBinMax) ;
    Double_t norm   = fbg1->GetParameter(0) ;
    Double_t normErr= fbg1->GetParError(0) ;
    if(npiInt>0.){
      nr1int->SetBinContent(i,npiInt) ;
      nr1int->SetBinError(i,TMath::Sqrt(npiInt + norm*errStat + normErr*normErr*errStat*errStat + norm*norm*errStat)) ;
    }
    hp2->SetAxisRange(0.04,0.3,"X") ;
    hp2->SetMaximum(hp2->GetMaximum()*1.4) ;
    hp2->SetMinimum(hp2->GetMinimum()*1.1) ;
    hp2->SetMarkerStyle(20) ;
    hp2->SetMarkerSize(0.7) ;
    hp2->Fit(fgs,"Q","",rangeMin,rangeMax) ;
    mr2->SetBinContent(i,fgs->GetParameter(1)) ;
    mr2->SetBinError  (i,fgs->GetParError(1)) ;
    sr2->SetBinContent(i,TMath::Abs(fgs->GetParameter(2))) ;
    sr2->SetBinError  (i,fgs->GetParError(2)) ;
    y=fgs->Integral(intRangeMin,intRangeMax)/hp->GetXaxis()->GetBinWidth(1) ;
    nr2->SetBinContent(i,y) ;
    ey=0 ;
    if(fgs->GetParameter(0)!=0. && fgs->GetParameter(2)!=0.){
      Double_t en=fgs->GetParError(0)/fgs->GetParameter(0) ;
      Double_t es=fgs->GetParError(2)/fgs->GetParameter(2) ;
      ey=y*TMath::Sqrt(en*en+es*es) ;
    }
    nr2->SetBinError(i,ey) ;
    npiInt=hp2->Integral(intBinMin,intBinMax) ;
    norm=fbg2->GetParameter(0) ;
    normErr=fbg2->GetParError(0) ;
    if(npiInt>0.){
      nr2int->SetBinContent(i,npiInt) ;
      nr2int->SetBinError(i,TMath::Sqrt(npiInt + norm*errStat + normErr*normErr*errStat*errStat + norm*norm*errStat)) ;
    } 
    hp2->SetTitle(key) ;
    hp2->Draw() ;
    label ->Draw();
    if(c4)
      c4->Update() ;
    else
      c3->Update() ;

    delete hp ;
//    delete hp2 ;
//    delete hpcopy ;
    delete hpm ;
    delete hpm2 ;
  }
  char name[55] ;

  sprintf(name,"Pi0_ratio_cent%d%s.eps" ,centrality,cModule) ;
  c1->Print(name) ;
  sprintf(name,"Pi0_signal_cent%d%s.eps",centrality,cModule) ;
  c3->Print(name) ;

  //Normalize by the number of events
  Int_t cMin,cMax;
  if      (centrality == 0) {
    cMin=1;
    cMax=20;
  }
  else if (centrality == 1) {
    cMin=21;
    cMax=80;
  }
  Double_t nevents = hCentrality1->Integral(cMin,cMax);
  nr1   ->Scale(1./nevents) ;
  nr1int->Scale(1./nevents) ;
  nr2   ->Scale(1./nevents) ;
  nr2int->Scale(1./nevents) ;

  printf("\t==============================\n");
  printf("\t|       N events = %i8    |\n",nevents);
  printf("\t==============================\n");

  TFile fout("LHC10h_Pi0_FitResult.root","update");
  mr1->Write(0,TObject::kOverwrite) ;
  sr1->Write(0,TObject::kOverwrite) ;
  ar1->Write(0,TObject::kOverwrite) ;
  br1->Write(0,TObject::kOverwrite) ;
  nr1->Write(0,TObject::kOverwrite) ;
  nr1int->Write(0,TObject::kOverwrite) ;
  ar2->Write(0,TObject::kOverwrite) ;
  br2->Write(0,TObject::kOverwrite) ;
  cr2->Write(0,TObject::kOverwrite) ;
  mr2->Write(0,TObject::kOverwrite) ;
  sr2->Write(0,TObject::kOverwrite) ;
  nr2->Write(0,TObject::kOverwrite) ;
  nr2int->Write(0,TObject::kOverwrite) ;
  fout.Close() ;

}

//-----------------------------------------------------------------------------
Double_t PeakPosition(Double_t pt, Int_t centrality = 0){
  //Fit to the measured peak position
  Double_t pi0Peak = 0.135;
  if      (centrality == 0) pi0Peak=0.1413;
  else if (centrality == 1) pi0Peak=0.1380;
  else if (centrality == 2) pi0Peak=0.1367;
  else if (centrality == 3) pi0Peak=0.1359;
  return pi0Peak;
  // return 4.99292e-003*exp(-pt*9.32300e-001)+1.34944e-001 ;
}
//-----------------------------------------------------------------------------
Double_t PeakWidth(Double_t pt, Int_t centrality = 0){
  //fit to the measured peak width
  Double_t pi0Sigma = 0.07;
  if      (centrality == 0) pi0Sigma=0.0084;
  else if (centrality == 1) pi0Sigma=0.0071;
  else if (centrality == 2) pi0Sigma=0.0068;
  else if (centrality == 3) pi0Sigma=0.0064;
  return pi0Sigma;

  // Double_t a=0.0068 ;
  // Double_t b=0.0025 ;
  // Double_t c=0.000319 ;
  // return TMath::Sqrt(a*a+b*b/pt/pt+c*c*pt*pt) ;
}
 
//-----------------------------------------------------------------------------
Double_t CB(Double_t * x, Double_t * par){
  //Parameterization of Real/Mixed ratio
  Double_t m=par[1] ;
  Double_t s=par[2] ;
  Double_t dx=(x[0]-m)/s ;
  Double_t dMpi0 = x[0]-kMean;
  Double_t peak = par[0] * TMath::Exp(-dx*dx/2.);
  Double_t bg   = par[3] + par[4]*dMpi0 + par[5]*dMpi0*dMpi0;
  return peak+bg ;
}

//-----------------------------------------------------------------------------
Double_t CB2(Double_t * x, Double_t * par){
  //Another parameterization of Real/Mixed ratio7TeV/README
  Double_t m=par[1] ;
  Double_t s=par[2] ;
  Double_t dx=(x[0]-m)/s ;
  Double_t dMpi0 = x[0]-kMean;
  Double_t peak = par[0] * TMath::Exp(-dx*dx/2.);
  Double_t bg   = par[3] + par[4]*dMpi0 + par[5]*dMpi0*dMpi0 + par[6]*dMpi0*dMpi0*dMpi0;
  return peak+bg ;
}
//-----------------------------------------------------------------------------
Double_t CBs(Double_t * x, Double_t * par){
  //Parameterizatin of signal
  Double_t m=par[1] ;
  Double_t s=par[2] ;
  Double_t dx=(x[0]-m)/s ;
  Double_t peak = par[0] * TMath::Exp(-dx*dx/2.);
  return peak ;
}
//-----------------------------------------------------------------------------
Double_t BG1(Double_t * x, Double_t * par){
  //Normalizatino of Mixed
  return par[0]+par[1]*(x[0]-kMean)+par[2]*(x[0]-kMean)*(x[0]-kMean) ;
}
//-----------------------------------------------------------------------------
Double_t BG2(Double_t * x, Double_t * par){
  //Another normalization of  Mixed
  return par[0]+par[1]*(x[0]-kMean)+par[2]*(x[0]-kMean)*(x[0]-kMean)+par[3]*(x[0]-kMean)*(x[0]-kMean)*(x[0]-kMean) ;
}


//-----------------------------------------------------------------------------
PPRstyle()
{

  //////////////////////////////////////////////////////////////////////
  //
  // ROOT style macro for the TRD TDR
  //
  //////////////////////////////////////////////////////////////////////

  gStyle->SetPalette(1);
  gStyle->SetCanvasBorderMode(-1);
  gStyle->SetCanvasBorderSize(1);
  gStyle->SetCanvasColor(10);

  gStyle->SetFrameFillColor(10);
  gStyle->SetFrameBorderSize(1);
  gStyle->SetFrameBorderMode(-1);
  gStyle->SetFrameLineWidth(1.2);
  gStyle->SetFrameLineColor(1);

  gStyle->SetHistFillColor(0);
  gStyle->SetHistLineWidth(1);
  gStyle->SetHistLineColor(1);

  gStyle->SetPadColor(10);
  gStyle->SetPadBorderSize(1);
  gStyle->SetPadBorderMode(-1);

  gStyle->SetStatColor(10);
  gStyle->SetTitleColor(kBlack,"X");
  gStyle->SetTitleColor(kBlack,"Y");

  gStyle->SetLabelSize(0.04,"X");
  gStyle->SetLabelSize(0.04,"Y");
  gStyle->SetLabelSize(0.04,"Z");
  gStyle->SetTitleSize(0.04,"X");
  gStyle->SetTitleSize(0.04,"Y");
  gStyle->SetTitleSize(0.04,"Z");
  gStyle->SetTitleFont(42,"X");
  gStyle->SetTitleFont(42,"Y");
  gStyle->SetTitleFont(42,"X");
  gStyle->SetLabelFont(42,"X");
  gStyle->SetLabelFont(42,"Y");
  gStyle->SetLabelFont(42,"Z");
  gStyle->SetStatFont(42);

  gStyle->SetTitleOffset(1.0,"X");
  gStyle->SetTitleOffset(1.4,"Y");

  gStyle->SetFillColor(kWhite);
  gStyle->SetTitleFillColor(kWhite);

  gStyle->SetOptDate(0);
  gStyle->SetOptTitle(1);
  gStyle->SetOptStat(0);
  gStyle->SetOptFit(0);

}

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