ROOT logo
 /*
  gROOT->Macro("~/rootlogon.C")
  gSystem->AddIncludePath("-I$ALICE_ROOT/STAT")
  gSystem->AddIncludePath("-I$ALICE_ROOT/TPC")
  gSystem->AddIncludePath("-I$ALICE_ROOT/TPC/macros")
  gSystem->Load("libANALYSIS");
  gSystem->Load("libTPCcalib");
 
  .L $ALICE_ROOT/TPC/CalibMacros/MakeGlobalFit.C+
  MakeGlobalFit();
 
  rm matching.ps
  aliroot -b -q $ALICE_ROOT/TPC/CalibMacros/MakeGlobalFit.C | tee globalFit.log
  
*/

#if !defined(__CINT__) || defined(__MAKECINT__)
#include "THnSparse.h"
#include "TLatex.h"
#include "TCanvas.h"
#include "TLegend.h"
#include "TSystem.h"
#include "TFile.h"
#include "TChain.h"
#include "TCut.h"
#include "TH3.h"
#include "TH2F.h"
#include "TProfile3D.h"
#include "TMath.h" 
#include "TVectorD.h"
#include "TMatrixD.h"
#include "TStatToolkit.h"
#include "TTreeStream.h"
#include "AliExternalTrackParam.h"
#include "AliESDfriend.h"
#include "AliTPCcalibTime.h"
#include "TROOT.h"
#include "AliXRDPROOFtoolkit.h"
#include "AliTPCCorrection.h"
#include "AliTPCExBTwist.h"
#include "AliTPCGGVoltError.h"
#include "AliTPCComposedCorrection.h"
#include "AliTPCExBConical.h"
#include "TPostScript.h"
#include "TStyle.h"
#include "AliTrackerBase.h"
#include "AliTPCCalibGlobalMisalignment.h"
#include "AliTPCExBEffective.h"
#include "TEntryList.h"
#include "AliCDBMetaData.h"
#include "AliCDBId.h"
#include "AliCDBManager.h" 
#include "AliCDBStorage.h"
#include "AliTPCcalibDB.h"
#endif

const char* chDetName[5]={"ITS","TRD", "Vertex", "TOF","Laser"};
const char* chParName[5]={"rphi","z", "snp", "tan","1/pt"};
const char* chSideName[2]={"A side","C side"};
Bool_t enableDet[5]={1,1,1,0,1};      // detector  for fit  ITS=0, TRD=1, Vertex=2, Laser=4
Bool_t enableParam[5]={1,0,1,0,1};    //
Bool_t enableSign=kFALSE;  
Bool_t useEff0=kFALSE;
Bool_t useEffD=kFALSE;
Bool_t useEffR=kFALSE;
//
TChain *chain    = 0;
TChain *chainRef = 0;
Bool_t printMatrix=kFALSE;
TString *fitString=0;
//
// cuts
//
TCut cut="1";
TCut cutD="1";

void MakeChain();
void MakeAliases();
void MakeCuts();
void MakeFit(TCut cutCustom);
void MakeOCDBEntry(Int_t refRun);
TCanvas* DrawFitITS(const char *name);
TCanvas* DrawFitVertex(const char *name);
TCanvas*  DrawFitLaser(const char *cname);
TCanvas* DrawCorrdY();
TCanvas* DrawCorrdSnp();
TCanvas * DrawFitdY(const char *name);
TCanvas * DrawFitdSnp(const char *name);
void PrintMatch();
TCanvas * MakeComposedCorrection(const char * name);

void MakeAliases(){
  chain->SetAlias("isITS","(dtype==0||dtype==2)");
  chain->SetAlias("isTRD","(dtype==1)");
  chain->SetAlias("isLaser","(dtype==4)");
  chain->SetAlias("r","sqrt(gx*gx+gy*gy)");
  chain->SetAlias("r250","(sqrt(gx*gx+gy*gy)/250.)");
  chain->SetAlias("weight","((dtype==4)*rms*10+rms)");  // downscale laser
  chain->SetAlias("side","(1+(theta>0)*2)");
  chain->SetAlias("mdelta","(mean-R.mean-isLaser*((dRrec-R.dRrec)*tan(asin(snp))))");
  chain->SetAlias("drift","(1-abs(gz/250))");
  chain->SetAlias("r0","(r-160)/80");
  chain->SetAlias("delta","(0*gx)");
}


void MakeGlobalFit(){
  //
  //
  //
  gROOT->Macro("~/rootlogon.C");
  //gROOT->Macro("NimStyle.C");
  gSystem->AddIncludePath("-I$ALICE_ROOT/STAT");
  gSystem->AddIncludePath("-I$ALICE_ROOT/TPC");
  gSystem->AddIncludePath("-I$ALICE_ROOT/TPC/macros");
  gSystem->Load("libANALYSIS");
  gSystem->Load("libTPCcalib");

  MakeChain();  
  gStyle->SetOptTitle(1);
  gStyle->SetOptStat(0);
  TPostScript *ps = new TPostScript("exbFit.eps", 112); 
  ps->NewPage();
  TCanvas *c=0;
  useEff0=kFALSE; useEffD=kFALSE; useEffR=kFALSE; 
  ps->NewPage();
  MakeFit("1");  
  //
  ps->NewPage();
  c=DrawFitdY("dY-Physical"); 
  c->Update();
  ps->NewPage();
  c->Update();

  ps->NewPage();
  c=DrawFitdSnp("dSnp-Physical");
  c->Update();
  
  ps->NewPage();
  c=DrawFitITS("ITS Physical");
  c->Update();
  
  ps->NewPage();
  c=DrawFitVertex("Vertex Physical");
  c->Update();
  
  ps->NewPage();
  c=DrawFitLaser("Laser Physical");
  c->Update();
  
  ps->NewPage();
  c=MakeComposedCorrection("Correction physical");
  c->Update();  

  //
  //
  //
  //
  useEff0=kTRUE; useEffD=kTRUE; useEffR=kTRUE; enableSign=kFALSE;
  ps->NewPage();
  MakeFit("1");
  ps->NewPage();
  c=DrawFitdY("dY-Physical+Effective ");
  c->Update();  
  
  ps->NewPage();
  c=DrawFitdSnp("dSnp-Physical+Effective ");
  c->Update();  

  ps->NewPage();
  c=DrawFitITS("ITS Physical+Effective");
  c->Update();  

  ps->NewPage();
  c=DrawFitVertex("Vertex Physical+Effective");
  c->Update();  

  ps->NewPage();
  c=DrawFitLaser("Laser Physical +Effective ");
  c->Update();  

  ps->NewPage();
  c=MakeComposedCorrection("Correction physical+Effective");
  c->Update();  
  //
  useEff0=kTRUE; useEffD=kTRUE; useEffR=kTRUE; enableSign=kTRUE; 
  ps->NewPage();
  MakeFit("1");
  //
  ps->NewPage();
  c=DrawFitdY("dY-Physical+Effective Sign");
  c->Update();  

  ps->NewPage();
  c=DrawFitdSnp("dSnp-Physical+Effective Sign");
  c->Update();  

  ps->NewPage();
  c=DrawFitITS("ITS Physical+Effective Sign");
  c->Update();  

  ps->NewPage();
  c=DrawFitVertex("Vertex Physical+Effective Sign");
  c->Update();  
  
  ps->NewPage();
  c=DrawFitLaser("Laser Physical +Effective Sign");
  c->Update();  
 
  ps->NewPage();
  c=MakeComposedCorrection("Correction physical+Effective Sign");
  c->Update();  
  
  ps->Close();
  delete ps;

  //
}

void MakeChain(){
  //
  //
  TH1::AddDirectory(0);
  TFile * f0 =0;      // file 0 field
  TFile * fp =0;      // file plus
  TFile * fm =0;      // file minus
  TTree * tree0=0;
  TTree * treeP=0;
  TTree * treeM=0;
  //
  chain    = new TChain("fit","fit");
  chainRef = new TChain("fit","fit");
  //
  //
  //
  for (Int_t idet=0; idet<5; idet++){
    for (Int_t ipar=0; ipar<5; ipar++){
      f0= TFile::Open(Form("../mergeField0/distortion%d_%d.root",idet,ipar));
      fp= TFile::Open(Form("../mergePlus/distortion%d_%d.root",idet,ipar));
      fm= TFile::Open(Form("../mergeMinus/distortion%d_%d.root",idet,ipar));
      tree0 = (f0) ? (TTree*)f0->Get("fit"):0;
      treeP = (fp) ? (TTree*)fp->Get("fit"):0;
      treeM = (fm) ? (TTree*)fm->Get("fit"):0;
      //
      if ( ipar==0 || ipar==2){
	if (tree0 && treeP){
	  chain->Add(Form("../mergePlus/distortion%d_%d.root",idet,ipar));
	  chainRef->Add(Form("../mergeField0/distortion%d_%d.root",idet,ipar));	
	}
	if (tree0 && treeM){
	  chain->Add(Form("../mergeMinus/distortion%d_%d.root",idet,ipar));
	  chainRef->Add(Form("../mergeField0/distortion%d_%d.root",idet,ipar));	
	}
      }
      if ( ipar==1 || ipar==3 || ipar==4){
	if (treeP && treeM){
	  chain->Add(Form("../mergePlus/distortion%d_%d.root",idet,ipar));
	  chainRef->Add(Form("../mergeMinus/distortion%d_%d.root",idet,ipar));	
	}
      }
    }
  }  
  chain->AddFriend(chainRef,"R");
  MakeAliases();
  MakeCuts();
}


void MakeCuts(){
  //
  //
  //
  TCut cutS="((rms>0&&R.rms>0&&entries>0&&R.entries>0))";         // statistic cuts
  TCut cutType="((dtype==R.dtype)&&(ptype==R.ptype))";            // corresponding types
  TCut cutOut="(ptype==0)*abs(mdelta)<(0.3+rms)||(ptype==0&&abs(mdelta*85)<(0.3+rms*85))";            // corresponding types
  //
  
  chain->Draw(">>outList",cutS+cutType+cutOut+"abs(snp)<0.5","entryList");
  TEntryList *elistOut = (TEntryList*)gDirectory->Get("outList");
  chain->SetEntryList(elistOut);
 
  
}


TMatrixD * MakeCorrelation(TMatrixD &matrix){
  //
  //
  //
  Int_t nrows = matrix.GetNrows();
  TMatrixD * mat = new TMatrixD(nrows,nrows);
  for (Int_t irow=0; irow<nrows; irow++)
    for (Int_t icol=0; icol<nrows; icol++){
      (*mat)(irow,icol)= matrix(irow,icol)/TMath::Sqrt(matrix(irow,irow)*matrix(icol,icol));
    }
  return mat;
}

void MakeDetCut(){  
  cutD=Form("((dtype==%d)||(dtype==%d)||(dtype==%d)||(dtype==%d)||(dtype==%d))",enableDet[0]?0:0,enableDet[1]?1:0,enableDet[2]?2:0,enableDet[3]?3:0,enableDet[4]?4:0);
  cutD+=Form("((ptype==%d)||(ptype==%d)||(ptype==%d)||(ptype==%d)||(ptype==%d))",enableParam[0]?0:0,enableParam[1]?1:0,enableParam[2]?2:0,enableParam[3]?3:0,enableParam[4]?4:0);
}

void MakeFit(TCut cutCustom){
  MakeDetCut();
  Int_t  npointsMax=30000000;
  TStatToolkit toolkit;
  Double_t chi2=0;
  Int_t    npoints=0;
  TVectorD param;
  TMatrixD covar;
  //
  TString  fstring="";                       // magnetic part
  fstring+="(tX1-R.tX1)++";                  // twist X
  fstring+="(tY1-R.tY1)++";                   // twist Y
  fstring+="(sign(bz)*(tX1-R.tX1))++";       // twist X
  fstring+="(sign(bz)*(tY1-R.tY1))++";       // twist Y

  {if (enableDet[0]){
    fstring+="(isITS*shiftX)++";             // shift X - ITS
    fstring+="(isITS*shiftY)++";             // shift Y - ITS
    fstring+="(isITS*sign(bz)*shiftX)++";    // shift X - ITS
    fstring+="(isITS*sign(bz)*shiftY)++";    // shift Y - ITS
    }}
  {if (enableDet[1]){
    fstring+="(isTRD*shiftX)++";             // shift X - TRD
    fstring+="(isTRD*shiftY)++";             // shift Y - TRD
    fstring+="(isTRD*sign(bz)*shiftX)++";    // shift X - TRD
    fstring+="(isTRD*sign(bz)*shiftY)++";    // shift Y - TRD
    }}
  //
  if (enableDet[4]){
  }
  TString fstringCustom="";
  if (useEff0){
    fstring+="(exbT1-exb11-(R.exbT1-R.exb11))++";                // T1 adjustment
    fstring+="(exbT2-exb11-(R.exbT2-R.exb11))++";                // T2 adjustment
    fstringCustom+="(eff0_0_0-R.eff0_0_0)++";                  // effective correction constant part 
    fstringCustom+="(eff1_0_0-R.eff1_0_0)++";                  // 
  }
  if (useEffD){
    fstringCustom+="(eff0_0_1-R.eff0_0_1)++";                  // effective correction drift part
    fstringCustom+="(eff1_0_1-R.eff1_0_1)++";                  // 
    fstringCustom+="(eff0_0_2-R.eff0_0_2)++";                  // effective correction drift part 
    fstringCustom+="(eff1_0_2-R.eff1_0_2)++";                  // 
  }
  if (useEffR){
    fstringCustom+="(eff0_1_0-R.eff0_1_0)++";                  // effective correction radial part
    fstringCustom+="(eff1_1_0-R.eff1_1_0)++";                  // 
    fstringCustom+="(eff0_1_1-R.eff0_1_1)++";                  // effective correction radial part
    fstringCustom+="(eff1_1_1-R.eff1_1_1)++";                  // 
    fstringCustom+="(eff0_1_2-R.eff0_1_2)++";                  // effective correction radial part
    fstringCustom+="(eff1_1_2-R.eff1_1_2)++";                  // 
    fstringCustom+="(eff0_2_0-R.eff0_2_0)++";                  // effective correction radial part
    fstringCustom+="(eff1_2_0-R.eff1_2_0)++";                  // 
    fstringCustom+="(eff0_2_1-R.eff0_2_1)++";                  // effective correction radial part
    fstringCustom+="(eff1_2_1-R.eff1_2_1)++";                  // 
    fstringCustom+="(eff0_2_2-R.eff0_2_2)++";                  // effective correction radial part
    fstringCustom+="(eff1_2_2-R.eff1_2_2)++";                  // 
  }
  if (enableSign){
    if (useEff0){
      fstringCustom+="sign(bz)*(eff0_0_0-R.eff0_0_0)++";                  // effective correction constant part 
      fstringCustom+="sign(bz)*(eff1_0_0-R.eff1_0_0)++";                  // 
    }
    if (useEffD){
      fstringCustom+="sign(bz)*(eff0_0_1-R.eff0_0_1)++";                  // effective correction drift part
      fstringCustom+="sign(bz)*(eff1_0_1-R.eff1_0_1)++";                  // 
      fstringCustom+="sign(bz)*(eff0_0_2-R.eff0_0_2)++";                  // effective correction drift part 
      fstringCustom+="sign(bz)*(eff1_0_2-R.eff1_0_2)++";                  // 
    } 
    if (useEffR){
      fstringCustom+="sign(bz)*(eff0_1_0-R.eff0_1_0)++";                  // effective correction radial part
      fstringCustom+="sign(bz)*(eff1_1_0-R.eff1_1_0)++";                  // 
      fstringCustom+="sign(bz)*(eff0_1_1-R.eff0_1_1)++";                  // effective correction radial part
      fstringCustom+="sign(bz)*(eff1_1_1-R.eff1_1_1)++";                  // 
      fstringCustom+="sign(bz)*(eff0_1_2-R.eff0_1_2)++";                  // effective correction radial part
      fstringCustom+="sign(bz)*(eff1_1_2-R.eff1_1_2)++";                  // 
      fstringCustom+="sign(bz)*(eff0_2_0-R.eff0_2_0)++";                  // effective correction radial part
      fstringCustom+="sign(bz)*(eff1_2_0-R.eff1_2_0)++";                  // 
      fstringCustom+="sign(bz)*(eff0_2_1-R.eff0_2_1)++";                  // effective correction radial part
      fstringCustom+="sign(bz)*(eff1_2_1-R.eff1_2_1)++";                  // 
      fstringCustom+="sign(bz)*(eff0_2_2-R.eff0_2_2)++";                  // effective correction radial part
      fstringCustom+="sign(bz)*(eff1_2_2-R.eff1_2_2)++";                  // 
    }
  }
  //
  fstring+=fstringCustom;
  //
  TString *strDelta = TStatToolkit::FitPlane(chain,"mdelta:weight", fstring.Data(),cut+cutD+cutCustom, chi2,npoints,param,covar,-1,0, npointsMax, kTRUE);
  if (printMatrix) MakeCorrelation(covar)->Print();
  chain->SetAlias("delta",strDelta->Data());
  strDelta->Tokenize("++")->Print();
  fitString = strDelta;
  PrintMatch();
}





void PrintMatch(){
  //
  // Print detector matching info
  //
  for (Int_t ipar=0; ipar<5; ipar++){      
    for (Int_t idet=0; idet<5; idet++){
      Double_t mean0,rms0,mean1,rms1;
      Int_t entries = chain->Draw("delta-mdelta>>rhis",cut+Form("dtype==%d&&ptype==%d",idet,ipar),"goff");
      if (entries==0) continue;
      TH1 * his = (TH1*)(chain->GetHistogram()->Clone());
      mean1=his->GetMean();
      rms1 =his->GetRMS();
      delete his;
      //
      entries = chain->Draw("mdelta>>rhis",cut+Form("dtype==%d&&ptype==%d",idet,ipar),"goff");
      if (entries==0) continue;
      his = (TH1*)(chain->GetHistogram()->Clone());
      //
      mean0=his->GetMean();
      rms0 =his->GetRMS();
      
      printf("ptype==%s\tdtype==%s\tMean=%f -> %f\tRMS=%f -> %f\n",chParName[ipar],chDetName[idet], mean0,mean1,rms0,rms1);
      delete his;
    }
  }
}




TCanvas* DrawFitITS(const char *name){
  //
  //
  //
  TLegend *legend=0;
  TCanvas *canvas = new TCanvas(name,name,800,800);
  canvas->Divide(1,2);
  Int_t entries=0;
  const char * grname[10]={"A side (B=0.5T)","A side (B=-0.5T)", "C side (B=0.5T)", "C side (B=-0.5T)",0};

  TGraph *graphsdyITS[10];
  TGraph *graphsdyITSc[10];
  entries=chain->Draw("mdelta:phi",cut+"ptype==0&&dtype==0&&bz>0&&theta>0","goff");
  graphsdyITS[0]=new TGraph(entries,chain->GetV2(), chain->GetV1());
  entries=chain->Draw("mdelta:phi",cut+cut+"ptype==0&&dtype==0&&bz<0&&theta>0","goff");
  graphsdyITS[1]=new TGraph(entries,chain->GetV2(), chain->GetV1());
  entries=chain->Draw("mdelta:phi",cut+cut+"ptype==0&&dtype==0&&bz>0&&theta<0","goff");
  graphsdyITS[2]=new TGraph(entries,chain->GetV2(), chain->GetV1());
  entries=chain->Draw("mdelta:phi",cut+cut+"ptype==0&&dtype==0&&bz<0&&theta<0","goff");
  graphsdyITS[3]=new TGraph(entries,chain->GetV2(), chain->GetV1());
  //
  entries=chain->Draw("mdelta-delta:phi",cut+cut+"ptype==0&&dtype==0&&bz>0&&theta>0","goff");
  graphsdyITSc[0]=new TGraph(entries,chain->GetV2(), chain->GetV1());
  entries=chain->Draw("mdelta-delta:phi",cut+cut+"ptype==0&&dtype==0&&bz<0&&theta>0","goff");
  graphsdyITSc[1]=new TGraph(entries,chain->GetV2(), chain->GetV1());
  entries=chain->Draw("mdelta-delta:phi",cut+cut+"ptype==0&&dtype==0&&bz>0&&theta<0","goff");
  graphsdyITSc[2]=new TGraph(entries,chain->GetV2(), chain->GetV1());
  entries=chain->Draw("mdelta-delta:phi",cut+cut+"ptype==0&&dtype==0&&bz<0&&theta<0","goff");
  graphsdyITSc[3]=new TGraph(entries,chain->GetV2(), chain->GetV1());
  
  canvas->cd(1);
  legend = new TLegend(0.6,0.6,1.0,1.0,"#Delta R#phi TPC-ITS");
  for (Int_t i=0; i<4; i++){
    graphsdyITS[i]->SetMaximum(0.5);
    graphsdyITS[i]->SetMinimum(-0.5);
    graphsdyITS[i]->SetMarkerColor(i+1);
    graphsdyITS[i]->SetMarkerStyle(25+i);
    //    graphsdyITS[i]->SetName(grname[i]);
    graphsdyITS[i]->GetXaxis()->SetTitle("#phi");
    graphsdyITS[i]->GetYaxis()->SetTitle("#Delta R#Phi (cm)");
    if (i==0) graphsdyITS[i]->Draw("ap");
    graphsdyITS[i]->Draw("p");
    legend->AddEntry(graphsdyITS[i],grname[i]);
  }
  legend->Draw();
  canvas->cd(2);
  legend = new TLegend(0.6,0.6,1.0,1.0,"#Delta R#phi TPC-ITS corrected");
  for (Int_t i=0; i<4; i++){
    graphsdyITSc[i]->SetMaximum(0.5);
    graphsdyITSc[i]->SetMinimum(-0.5);
    graphsdyITSc[i]->SetMarkerColor(i+1);
    graphsdyITSc[i]->SetMarkerStyle(25+i);
    //    graphsdyITS[i]->SetName(grname[i]);
    graphsdyITSc[i]->GetXaxis()->SetTitle("#phi");
    graphsdyITSc[i]->GetYaxis()->SetTitle("#Delta R#Phi (cm)");
    if (i==0) graphsdyITS[i]->Draw("ap");
    graphsdyITSc[i]->Draw("p");
    legend->AddEntry(graphsdyITSc[i],grname[i]);
  }
  legend->Draw();
  return canvas;
}


TCanvas*  DrawFitLaser(const char *cname){
  //
  //
  //
  TH1::AddDirectory(0);
  TCut cutLaser=cut+"isLaser&&bz<0";
  TCanvas *canvas= new TCanvas(cname, cname,800,800);
  canvas->Divide(2,2);
  canvas->Draw();
  TLegend*legend=0;
  //
  TH1 *his[16]={0};
  {for (Int_t icorr=0; icorr<2; icorr++){
    for (Int_t iside=0; iside<2; iside++){
      canvas->cd(iside+1);
      for (Int_t ib=0; ib<4; ib++){    
	TCut cutB="1";
	if (iside==0) cutB=Form("(id==%d&&gz>0)",ib);
	if (iside==1) cutB=Form("(id==%d&&gz<0)",ib);
	//cutB.Print();
	if (icorr==0) chain->Draw("10*mdelta:r",cutLaser+cutB,"prof");
	if (icorr==1) chain->Draw("10*(mdelta-delta):r",cutLaser+cutB,"prof");
	his[icorr*8+iside*4+ib] = (TH1*)(chain->GetHistogram()->Clone());
	his[icorr*8+iside*4+ib]->SetName(Form("B%d%d%d",icorr,iside,ib));
	his[icorr*8+iside*4+ib]->SetTitle(Form("Bundle %d",ib));
	his[icorr*8+iside*4+ib]->SetMarkerColor(ib+1);
	his[icorr*8+iside*4+ib]->SetMarkerStyle(ib+25);
	his[icorr*8+iside*4+ib]->SetMarkerSize(0.4);
	his[icorr*8+iside*4+ib]->SetMaximum(3);
	his[icorr*8+iside*4+ib]->SetMinimum(-3);
	his[icorr*8+iside*4+ib]->GetXaxis()->SetTitle("r (cm)");
	his[icorr*8+iside*4+ib]->GetYaxis()->SetTitle("#Delta r#phi (mm)");
      }
    }
    }}
    //
  for (Int_t icorr=0; icorr<2; icorr++){
    for (Int_t iside=0; iside<2; iside++){
      canvas->cd(icorr*2+iside+1);
      legend = new TLegend(0.6,0.6,1.0,1.0,Form("#Delta R#phi Laser-%s",chSideName[iside]));
      for (Int_t ib=0; ib<4; ib++){    
	if (ib==0) his[icorr*2+iside*4+ib]->Draw();
	his[icorr*8+iside*4+ib]->Draw("same");
	legend->AddEntry(his[icorr*8+iside*4+ib]);
      }
      legend->Draw();
    }
  }
  return canvas;
}











TCanvas* DrawFitVertex(const char *name){
  //
  //
  //
  TLegend *legend=0;
  TCanvas *canvas = new TCanvas(name,name,800,800);
  canvas->Divide(1,2);
  Int_t entries=0;
  const char * grname[10]={"A side (B=0.5T)","A side (B=-0.5T)", "C side (B=0.5T)", "C side (B=-0.5T)",0};

  TGraph *graphsdyVertex[10];
  TGraph *graphsdyVertexc[10];
  entries=chain->Draw("mdelta:phi",cut+cut+"ptype==0&&dtype==2&&bz>0&&theta>0","goff");
  graphsdyVertex[0]=new TGraph(entries,chain->GetV2(), chain->GetV1());
  entries=chain->Draw("mdelta:phi",cut+cut+"ptype==0&&dtype==2&&bz<0&&theta>0","goff");
  graphsdyVertex[1]=new TGraph(entries,chain->GetV2(), chain->GetV1());
  entries=chain->Draw("mdelta:phi",cut+cut+"ptype==0&&dtype==2&&bz>0&&theta<0","goff");
  graphsdyVertex[2]=new TGraph(entries,chain->GetV2(), chain->GetV1());
  entries=chain->Draw("mdelta:phi",cut+cut+"ptype==0&&dtype==2&&bz<0&&theta<0","goff");
  graphsdyVertex[3]=new TGraph(entries,chain->GetV2(), chain->GetV1());
  //
  entries=chain->Draw("mdelta-delta:phi",cut+cut+"ptype==0&&dtype==2&&bz>0&&theta>0","goff");
  graphsdyVertexc[0]=new TGraph(entries,chain->GetV2(), chain->GetV1());
  entries=chain->Draw("mdelta-delta:phi",cut+cut+"ptype==0&&dtype==2&&bz<0&&theta>0","goff");
  graphsdyVertexc[1]=new TGraph(entries,chain->GetV2(), chain->GetV1());
  entries=chain->Draw("mdelta-delta:phi",cut+cut+"ptype==0&&dtype==2&&bz>0&&theta<0","goff");
  graphsdyVertexc[2]=new TGraph(entries,chain->GetV2(), chain->GetV1());
  entries=chain->Draw("mdelta-delta:phi",cut+cut+"ptype==0&&dtype==2&&bz<0&&theta<0","goff");
  graphsdyVertexc[3]=new TGraph(entries,chain->GetV2(), chain->GetV1());
  
  canvas->cd(1);
  legend = new TLegend(0.6,0.6,1.0,1.0,"#Delta R#phi TPC-Vertex");
  for (Int_t i=0; i<4; i++){
    graphsdyVertex[i]->SetMaximum(1);
    graphsdyVertex[i]->SetMinimum(-1);
    graphsdyVertex[i]->SetMarkerColor(i+1);
    graphsdyVertex[i]->SetMarkerStyle(25+i);
    //    graphsdyVertex[i]->SetName(grname[i]);
    graphsdyVertex[i]->GetXaxis()->SetTitle("#phi");
    graphsdyVertex[i]->GetYaxis()->SetTitle("#Delta R#Phi (cm)");
    if (i==0) graphsdyVertex[i]->Draw("ap");
    graphsdyVertex[i]->Draw("p");
    legend->AddEntry(graphsdyVertex[i],grname[i]);
  }
  legend->Draw();
  canvas->cd(2);
  legend = new TLegend(0.6,0.6,1.0,1.0,"#Delta R#phi TPC-Vertex corrected");
  for (Int_t i=0; i<4; i++){
    graphsdyVertexc[i]->SetMaximum(1);
    graphsdyVertexc[i]->SetMinimum(-1);
    graphsdyVertexc[i]->SetMarkerColor(i+1);
    graphsdyVertexc[i]->SetMarkerStyle(25+i);
    //    graphsdyVertex[i]->SetName(grname[i]);
    graphsdyVertexc[i]->GetXaxis()->SetTitle("#phi");
    graphsdyVertexc[i]->GetYaxis()->SetTitle("#Delta R#Phi (cm)");
    if (i==0) graphsdyVertex[i]->Draw("ap");
    graphsdyVertexc[i]->Draw("p");
    legend->AddEntry(graphsdyVertexc[i],grname[i]);
  }
  legend->Draw();
  return canvas;
}






TCanvas* DrawCorrdY(){
  
  TLegend *legend=0;
  TCanvas *canvas = new TCanvas("Corrections","Corrections",800,800);
  canvas->Divide(1,3);

  TGraph *graphsITS[10];
  TGraph *graphsTRD[10];
  TGraph *graphsVertex[10];
  Int_t entries=0;
  const char * grname[10]={"X twist (1 mrad)","Y twist (1 mrad)", "X shift (1 mm)", "Y shift (1 mm)", "drPhi (1 mm)"};
  //
  entries=chain->Draw("tX1:phi",cut+cut+"ptype==0&&dtype==0&&bz>0","goff");
  graphsITS[0]=new TGraph(entries,chain->GetV2(), chain->GetV1());
  entries=chain->Draw("tY1:phi",cut+cut+"ptype==0&&dtype==0&&bz>0","goff");
  graphsITS[1]=new TGraph(entries,chain->GetV2(), chain->GetV1());
  entries=chain->Draw("shiftX:phi",cut+cut+"ptype==0&&dtype==0&&bz>0","goff");
  graphsITS[2]=new TGraph(entries,chain->GetV2(), chain->GetV1());
  entries=chain->Draw("shiftY:phi",cut+cut+"ptype==0&&dtype==0&&bz>0","goff");
  graphsITS[3]=new TGraph(entries,chain->GetV2(), chain->GetV1());
  entries=chain->Draw("drPhiA+drPhiC:phi",cut+cut+"ptype==0&&dtype==0&&bz>0","goff");
  graphsITS[4]=new TGraph(entries,chain->GetV2(), chain->GetV1());
  //  
  entries=chain->Draw("tX1:phi",cut+cut+"ptype==0&&dtype==1&&bz>0","goff");
  graphsTRD[0]=new TGraph(entries,chain->GetV2(), chain->GetV1());
  entries=chain->Draw("tY1:phi",cut+cut+"ptype==0&&dtype==1&&bz>0","goff");
  graphsTRD[1]=new TGraph(entries,chain->GetV2(), chain->GetV1());
  entries=chain->Draw("shiftX:phi",cut+cut+"ptype==0&&dtype==1&&bz>0","goff");
  graphsTRD[2]=new TGraph(entries,chain->GetV2(), chain->GetV1());
  entries=chain->Draw("shiftY:phi",cut+cut+"ptype==0&&dtype==1&&bz>0","goff");
  graphsTRD[3]=new TGraph(entries,chain->GetV2(), chain->GetV1());
  entries=chain->Draw("drPhiA+drPhiC:phi",cut+cut+"ptype==0&&dtype==1&&bz>0","goff");
  graphsTRD[4]=new TGraph(entries,chain->GetV2(), chain->GetV1());
  //
  entries=chain->Draw("tX1:phi",cut+cut+"ptype==0&&dtype==2&&bz>0","goff");
  graphsVertex[0]=new TGraph(entries,chain->GetV2(), chain->GetV1());
  entries=chain->Draw("tY1:phi",cut+cut+"ptype==0&&dtype==2&&bz>0","goff");
  graphsVertex[1]=new TGraph(entries,chain->GetV2(), chain->GetV1());
  entries=chain->Draw("shiftX:phi",cut+cut+"ptype==0&&dtype==2&&bz>0","goff");
  graphsVertex[2]=new TGraph(entries,chain->GetV2(), chain->GetV1());
  entries=chain->Draw("shiftY:phi",cut+cut+"ptype==0&&dtype==2&&bz>0","goff");
  graphsVertex[3]=new TGraph(entries,chain->GetV2(), chain->GetV1());
  entries=chain->Draw("drPhiA+drPhiC:phi",cut+cut+"ptype==0&&dtype==2&&bz>0","goff");
  graphsVertex[4]=new TGraph(entries,chain->GetV2(), chain->GetV1());

  canvas->cd(1);
  //
  legend = new TLegend(0.6,0.6,1.0,1.0,"#Delta R#Phi TPC-Vertex");
  for (Int_t i=0; i<5; i++){
    graphsVertex[i]->SetMaximum(0.2);
    graphsVertex[i]->SetMinimum(-0.2);
    graphsVertex[i]->SetMarkerColor(i+1);
    graphsVertex[i]->SetMarkerStyle(25+i);
    graphsVertex[i]->SetName(grname[i]);
    graphsVertex[i]->GetXaxis()->SetTitle("#phi");
    graphsVertex[i]->GetYaxis()->SetTitle("#DeltaR#Phi (cm)");
    if (i==0) graphsVertex[i]->Draw("ap");
    graphsVertex[i]->Draw("p");
    legend->AddEntry(graphsITS[i],grname[i]);
  }
  legend->Draw();

  canvas->cd(2);
  legend = new TLegend(0.6,0.6,1.0,1.0,"#Delta R#Phi ITS-TPC");
  for (Int_t i=0; i<5; i++){
    graphsITS[i]->SetMaximum(0.2);
    graphsITS[i]->SetMinimum(-0.2);
    graphsITS[i]->SetMarkerColor(i+1);
    graphsITS[i]->SetMarkerStyle(25+i);
    graphsITS[i]->SetName(grname[i]);
    graphsITS[i]->GetXaxis()->SetTitle("#phi");
    graphsITS[i]->GetYaxis()->SetTitle("#Delta R#Phi (cm)");
    if (i==0) graphsITS[i]->Draw("ap");
    graphsITS[i]->Draw("p");
    legend->AddEntry(graphsITS[i],grname[i]);
  }  
  legend->Draw();
  //
  canvas->cd(3);
  legend = new TLegend(0.6,0.6,1.0,1.0,"#Delta R#Phi TPC-TRD");
  for (Int_t i=0; i<5; i++){
    graphsTRD[i]->SetMaximum(0.2);
    graphsTRD[i]->SetMinimum(-0.2);
    graphsTRD[i]->SetMarkerColor(i+1);
    graphsTRD[i]->SetMarkerStyle(25+i);
    graphsTRD[i]->SetName(grname[i]);
    graphsTRD[i]->GetXaxis()->SetTitle("#phi");
    graphsTRD[i]->GetYaxis()->SetTitle("#DeltaR#Phi (cm)");
    if (i==0) graphsTRD[i]->Draw("ap");
    graphsTRD[i]->Draw("p");
    legend->AddEntry(graphsITS[i],grname[i]);
  }
  legend->Draw();
  return canvas;
}


TCanvas * DrawCorrdSnp(){
  
  TLegend *legend=0;
  TCanvas *canvas = new TCanvas("Corrections dSnp","Corrections dSnp",800,800);
  canvas->Divide(1,3);

  TGraph *graphsITS[10];
  TGraph *graphsTRD[10];
  TGraph *graphsVertex[10];
  Int_t entries=0;
  const char * grname[10]={"X twist (1 mrad)","Y twist (1 mrad)", "X shift (1 mm)", "Y shift (1 mm)",0};
  //
  entries=chain->Draw("1000*tX1:phi",cut+cut+"ptype==2&&dtype==0&&bz>0","goff");
  graphsITS[0]=new TGraph(entries,chain->GetV2(), chain->GetV1());
  entries=chain->Draw("1000*tY1:phi",cut+cut+"ptype==2&&dtype==0&&bz>0","goff");
  graphsITS[1]=new TGraph(entries,chain->GetV2(), chain->GetV1());
  entries=chain->Draw("1000*shiftX:phi",cut+cut+"ptype==2&&dtype==0&&bz>0","goff");
  graphsITS[2]=new TGraph(entries,chain->GetV2(), chain->GetV1());
  entries=chain->Draw("1000*shiftY:phi",cut+cut+"ptype==2&&dtype==0&&bz>0","goff");
  graphsITS[3]=new TGraph(entries,chain->GetV2(), chain->GetV1());
  //  
  entries=chain->Draw("1000*tX1:phi",cut+cut+"ptype==2&&dtype==1&&bz>0","goff");
  graphsTRD[0]=new TGraph(entries,chain->GetV2(), chain->GetV1());
  entries=chain->Draw("1000*tY1:phi",cut+cut+"ptype==2&&dtype==1&&bz>0","goff");
  graphsTRD[1]=new TGraph(entries,chain->GetV2(), chain->GetV1());
  entries=chain->Draw("1000*shiftX:phi",cut+cut+"ptype==2&&dtype==1&&bz>0","goff");
  graphsTRD[2]=new TGraph(entries,chain->GetV2(), chain->GetV1());
  entries=chain->Draw("1000*shiftY:phi",cut+cut+"ptype==2&&dtype==1&&bz>0","goff");
  graphsTRD[3]=new TGraph(entries,chain->GetV2(), chain->GetV1());
  //
  entries=chain->Draw("1000*tX1:phi",cut+cut+"ptype==2&&dtype==2&&bz>0","goff");
  graphsVertex[0]=new TGraph(entries,chain->GetV2(), chain->GetV1());
  entries=chain->Draw("1000*tY1:phi",cut+cut+"ptype==2&&dtype==2&&bz>0","goff");
  graphsVertex[1]=new TGraph(entries,chain->GetV2(), chain->GetV1());
  entries=chain->Draw("1000*shiftX:phi",cut+cut+"ptype==2&&dtype==2&&bz>0","goff");
  graphsVertex[2]=new TGraph(entries,chain->GetV2(), chain->GetV1());
  entries=chain->Draw("1000*shiftY:phi",cut+cut+"ptype==2&&dtype==2&&bz>0","goff");
  graphsVertex[3]=new TGraph(entries,chain->GetV2(), chain->GetV1());

  canvas->cd(1);
  //
  legend = new TLegend(0.6,0.6,1.0,1.0,"#Delta sin(#phi) TPC-Vertex");
  for (Int_t i=0; i<4; i++){
    graphsVertex[i]->SetMaximum(2);
    graphsVertex[i]->SetMinimum(2);
    graphsVertex[i]->SetMarkerColor(i+1);
    graphsVertex[i]->SetMarkerStyle(25+i);
    graphsVertex[i]->SetName(grname[i]);
    graphsVertex[i]->GetXaxis()->SetTitle("#phi");
    graphsVertex[i]->GetYaxis()->SetTitle("#Deltasin(#phi) (mrad)");
    if (i==0) graphsVertex[i]->Draw("ap");
    graphsVertex[i]->Draw("p");
    legend->AddEntry(graphsITS[i],grname[i]);
  }
  legend->Draw();

  canvas->cd(2);
  legend = new TLegend(0.6,0.6,1.0,1.0,"#Delta sin(#phi) ITS-TPC");
  for (Int_t i=0; i<4; i++){
    graphsITS[i]->SetMaximum(1);
    graphsITS[i]->SetMinimum(-1);
    graphsITS[i]->SetMarkerColor(i+1);
    graphsITS[i]->SetMarkerStyle(25+i);
    graphsITS[i]->SetName(grname[i]);
    graphsITS[i]->GetXaxis()->SetTitle("#phi");
    graphsITS[i]->GetYaxis()->SetTitle("#Delta sin(#phi) (mrad)");
    if (i==0) graphsITS[i]->Draw("ap");
    graphsITS[i]->Draw("p");
    legend->AddEntry(graphsITS[i],grname[i]);
  }  
  legend->Draw();
  //
  canvas->cd(3);
  legend = new TLegend(0.6,0.6,1.0,1.0,"#Delta sin(#phi) TPC-TRD");
  for (Int_t i=0; i<4; i++){
    graphsTRD[i]->SetMaximum(1);
    graphsTRD[i]->SetMinimum(-1);
    graphsTRD[i]->SetMarkerColor(i+1);
    graphsTRD[i]->SetMarkerStyle(25+i);
    graphsTRD[i]->SetName(grname[i]);
    graphsTRD[i]->GetXaxis()->SetTitle("#phi");
    graphsTRD[i]->GetYaxis()->SetTitle("#Deltasin(#phi) (mrad)");
    if (i==0) graphsTRD[i]->Draw("ap");
    graphsTRD[i]->Draw("p");
    legend->AddEntry(graphsITS[i],grname[i]);
  }
  legend->Draw();
  return canvas;
 }

 
TCanvas * DrawFitdY(const char *name){
  //
  //
  //
  TH1::AddDirectory(0);
  TCanvas *canvas = new TCanvas(name,name,800,800);
  canvas->Divide(3,5);
  for (Int_t idet=0; idet<5; idet++){
    chain->SetMarkerColor(4);
    chain->SetMarkerStyle(25);
    chain->SetMarkerSize(0.3);
    chain->SetLineColor(2);
    //
    canvas->cd(idet*3+1);
    chain->Draw("mdelta:delta",cut+Form("ptype==0&&dtype==%d",idet),"");
    //
    canvas->cd(idet*3+2);
    chain->SetLineColor(2);
    chain->Draw("mdelta-delta",cut+Form("ptype==0&&dtype==%d",idet),"");
    chain->SetLineColor(1);
    chain->Draw("mdelta",cut+Form("ptype==0&&dtype==%d",idet),"same");
    //
    canvas->cd(idet*3+3);
    chain->SetMarkerColor(1);
    chain->Draw("mdelta:phi",cut+Form("ptype==0&&dtype==%d&&theta>0&&bz>0",idet),"");
    chain->SetMarkerColor(2);
    chain->Draw("mdelta-delta:phi",cut+Form("ptype==0&&dtype==%d&&theta>0&&bz>0",idet),"same");

  }
  return canvas;
}

TCanvas * DrawFitdSnp(const char *name){
  //
  //
  //
  TH1::AddDirectory(0);
  TCanvas *canvas = new TCanvas(name,name,800,800);
  canvas->Divide(3,5);
  {for (Int_t idet=0; idet<5; idet++){
    chain->SetMarkerColor(4);
    chain->SetMarkerStyle(25);
    chain->SetMarkerSize(0.3);
    chain->SetLineColor(2);
    //
    canvas->cd(idet*3+1);
    chain->Draw("1000*mdelta:1000*delta",cut+Form("ptype==2&&dtype==%d",idet),"");
    //
    canvas->cd(idet*3+2);
    chain->SetLineColor(2);
    chain->Draw("1000*(mdelta-delta)",cut+Form("ptype==2&&dtype==%d",idet),"");
    chain->SetLineColor(1);
    chain->Draw("1000*mdelta",cut+Form("ptype==2&&dtype==%d",idet),"same");
    //
    canvas->cd(idet*3+3);    
    chain->SetMarkerColor(1);
    chain->Draw("1000*(mdelta):phi",cut+Form("ptype==2&&dtype==%d&&theta>0&&bz>0",idet),"");
    chain->SetMarkerColor(2);
    chain->Draw("1000*(mdelta-delta):phi",cut+Form("ptype==2&&dtype==%d&&theta>0&&bz>0",idet),"same");
    }}
  return canvas;
}






TCanvas * MakeComposedCorrection(const char *name){
  
  TString  fit = chain->GetAlias("delta");
  TObjArray * array = fit.Tokenize("++");
  Int_t nfun=array->GetEntries();
  Double_t wt = 0.3 ; 
  Double_t T1 = 1.0;
  Double_t T2 = 1.0;
  //
  // sign independent correction
  //
  AliTPCExBEffective            *eff      = new  AliTPCExBEffective;
  AliTPCCalibGlobalMisalignment *shiftITS = new  AliTPCCalibGlobalMisalignment;
  AliTPCExBTwist                *twist    = new  AliTPCExBTwist;
  //
  // sign dependent correction
  //
  AliTPCExBEffective            *effS      = new  AliTPCExBEffective;
  AliTPCCalibGlobalMisalignment *shiftITSS = new  AliTPCCalibGlobalMisalignment;
  AliTPCExBTwist                *twistS    = new  AliTPCExBTwist;
  
  TMatrixD polA(100,4);
  TMatrixD polC(100,4);
  TMatrixD valA(100,1);
  TMatrixD valC(100,1);
  TMatrixD valAS(100,1);
  TMatrixD valCS(100,1);
  Int_t counterA=0;
  Int_t counterC=0;
  Int_t counterAS=0;
  Int_t counterCS=0;

  {
    for (Int_t i=1; i<nfun;i++){
      TObjString fitName=array->At(i)->GetName();
      TObjString fitVal= &(fitName.String()[1+fitName.String().Last('(')]);
      Double_t value= fitVal.String().Atof();
      if (fitName.String().Contains("sign")) continue;
      if (fitName.String().Contains("tX1")){
	twist->SetXTwist(value*0.001);
      }
      if (fitName.String().Contains("tY1")){
	twist->SetYTwist(value*0.001);
      }
      
      if (fitName.String().Contains("shiftX")&&fitName.String().Contains("isITS")){
	shiftITS->SetXShift(value*0.1);
      }
      if (fitName.String().Contains("shiftY")&&fitName.String().Contains("isITS")){
	shiftITS->SetYShift(value*0.1);
      }
      
      if (fitName.String().Contains("eff")){
	Int_t index=fitName.String().First("_")-1;
	Int_t side=atoi(&(fitName.String()[index]));
	Int_t px  =atoi(&(fitName.String()[index+2]));
	Int_t pd  =atoi(&(fitName.String()[index+4]));
	Int_t pp  =0;
	//printf("%s\t%d\t%d\t%d\t%d\t%f\n",fitName.GetName(),side,px,pd,pp, value);
	if (side==0){
	  polA(counterA,0)=0;
	  polA(counterA,1)=px;
	  polA(counterA,2)=pd;
	  polA(counterA,3)=pp;
	  valA(counterA,0)=value*0.1;
	  counterA++;
	}
	if (side==1){
	  polC(counterC,0)=0;
	  polC(counterC,1)=px;
	  polC(counterC,2)=pd;
	  polC(counterC,3)=pp;
	  valC(counterC,0)=value*0.1;
	  counterC++;
	}
      }
    }
  }
  polA.ResizeTo(counterA,4);
  polC.ResizeTo(counterC,4);
  valA.ResizeTo(counterA,1);
  valC.ResizeTo(counterC,1);
  eff->SetPolynoms(&polA,&polC);
  eff->SetCoeficients(&valA,&valC);
  eff->SetOmegaTauT1T2(wt,T1,T2);
  shiftITS->SetOmegaTauT1T2(wt,T1,T2);
  twist->SetOmegaTauT1T2(wt,T1,T2);
  //
  //
  //
  {
    counterAS=0;
    counterCS=0;
    for (Int_t i=1; i<nfun;i++){
      TObjString fitName=array->At(i)->GetName();
      TObjString fitVal= &(fitName.String()[1+fitName.String().Last('(')]);
      if (!fitName.String().Contains("sign")) continue;
      Double_t value= fitVal.String().Atof();
      if (fitName.String().Contains("tX1")){
	twistS->SetXTwist(value*0.001);
      }
      if (fitName.String().Contains("tY1")){
	twistS->SetYTwist(value*0.001);
      }
      
      if (fitName.String().Contains("shiftX")&&fitName.String().Contains("isITS")){
	shiftITSS->SetXShift(value*0.1);
      }
      if (fitName.String().Contains("shiftY")&&fitName.String().Contains("isITS")){
	shiftITSS->SetYShift(value*0.1);
      }
      
      if (fitName.String().Contains("eff")){
	Int_t index=fitName.String().First("_")-1;
	Int_t side=atoi(&(fitName.String()[index]));
	Int_t px  =atoi(&(fitName.String()[index+2]));
	Int_t pd  =atoi(&(fitName.String()[index+4]));
	Int_t pp  =0;
	//printf("%s\t%d\t%d\t%d\t%d\t%f\n",fitName.GetName(),side,px,pd,pp, value);
	if (side==0){
	  polA(counterAS,0)=0;
	  polA(counterAS,1)=px;
	  polA(counterAS,2)=pd;
	  polA(counterAS,3)=pp;
	  valAS(counterAS,0)=value*0.1;
	  counterAS++;
	}
	if (side==1){
	  polC(counterCS,0)=0;
	  polC(counterCS,1)=px;
	  polC(counterCS,2)=pd;
	  polC(counterCS,3)=pp;
	  valCS(counterCS,0)=value*0.1;
	  counterCS++;
	}
      }
    }
  }
  polA.ResizeTo(counterA,4);
  polC.ResizeTo(counterC,4);
  valA.ResizeTo(counterA,1);
  valC.ResizeTo(counterC,1);
  effS->SetPolynoms(&polA,&polC);
  effS->SetCoeficients(&valAS,&valCS);
  effS->SetOmegaTauT1T2(wt,T1,T2);
  shiftITSS->SetOmegaTauT1T2(wt,T1,T2);
  twistS->SetOmegaTauT1T2(wt,T1,T2);
  //
  // Make combined correction
  //

  TObjArray * corr0 = new TObjArray;
  TObjArray * corrP = new TObjArray;
  TObjArray * corrM = new TObjArray;
  AliTPCExBEffective            *eff0      = new  AliTPCExBEffective;
  AliTPCCalibGlobalMisalignment *shiftITSP = new  AliTPCCalibGlobalMisalignment;
  AliTPCExBTwist                *twistP    = new  AliTPCExBTwist;
  AliTPCExBEffective            *effP      = new  AliTPCExBEffective;
  AliTPCCalibGlobalMisalignment *shiftITSM = new  AliTPCCalibGlobalMisalignment;
  AliTPCExBTwist                *twistM    = new  AliTPCExBTwist;
  AliTPCExBEffective            *effM      = new  AliTPCExBEffective;
  //
  shiftITSP->SetXShift(shiftITS->GetXShift()+shiftITSS->GetXShift());    // shift due to the B field
  shiftITSP->SetYShift(shiftITS->GetXShift()+shiftITSS->GetYShift());                  
  shiftITSM->SetXShift(shiftITS->GetXShift()-shiftITSS->GetXShift());
  shiftITSM->SetYShift(shiftITS->GetXShift()-shiftITSS->GetYShift());
  //
  twistP->SetXTwist(twist->GetXTwist()+twistS->GetXTwist());     // twist between field  - both used
  twistP->SetYTwist(twist->GetYTwist()+twistS->GetYTwist());     //
  twistM->SetXTwist(twist->GetXTwist()-twistS->GetXTwist());
  twistM->SetYTwist(twist->GetYTwist()-twistS->GetYTwist());
  //
  effP->SetPolynoms(&polA,&polC);                                // effective correction
  effP->SetCoeficients(&valA,&valC);
  effM->SetPolynoms(&polA,&polC);
  effM->SetCoeficients(&valA,&valC);
  //
  eff0->SetPolynoms((TMatrixD*)&polA,(TMatrixD*)&polC);
  eff0->SetCoeficients((TMatrixD*)&valA,(TMatrixD*)&valC);
  //
  //
  //
  
  //
  corrP->AddLast(shiftITSP);
  corrP->AddLast(twistP);
  corrP->AddLast(effP);
  corrM->AddLast(shiftITSM);
  corrM->AddLast(twistM);
  corrM->AddLast(effM);
  corr0->AddLast(eff0);
  //

  AliTPCComposedCorrection *comp0= new AliTPCComposedCorrection ;
  AliTPCComposedCorrection *compP= new AliTPCComposedCorrection ;
  AliTPCComposedCorrection *compM= new AliTPCComposedCorrection ;
  comp0->SetCorrections((TObjArray*)(corr0));
  compP->SetCorrections((TObjArray*)(corrP));
  compM->SetCorrections((TObjArray*)(corrM));
  //
  comp0->SetOmegaTauT1T2(0*wt,T1,T2);
  compP->SetOmegaTauT1T2(wt,T1,T2);
  compM->SetOmegaTauT1T2(-wt,T1,T2);

  TFile f("correctionsExB.root","update");
  f.mkdir(name);
  f.cd(name);  
  printf("\nDump correction B=+0.5T:\n");
  compP->Print("da");
  printf("\nDump correction B=-0.5T:\n");
  compM->Print("da");
  //
  comp0->Write("ExB-Field0");  
  compP->Write("ExB-Bplus");
  compM->Write("ExB-Bminus");
  //
  //
  TCanvas *c = new TCanvas(name,name,800,800);
  c->Divide(4,2);
  c->cd(1);
  shiftITS->CreateHistoDRPhiinXY()->Draw("surf2");
  c->cd(2);
  twist->CreateHistoDRPhiinXY()->Draw("surf2");
  c->cd(3);
  eff->CreateHistoDRPhiinZR()->Draw("surf2");
  c->cd(5);
  shiftITSS->CreateHistoDRPhiinXY()->Draw("surf2");
  c->cd(6);
  twistS->CreateHistoDRPhiinXY()->Draw("surf2");
  c->cd(7);
  effS->CreateHistoDRPhiinZR()->Draw("surf2");
  //
  c->cd(4);
  compP->CreateHistoDRPhiinZR()->Draw("surf2");
  c->cd(8);
  compM->CreateHistoDRPhiinZR()->Draw("surf2");


  return c;
}


void MakeOCDBEntry(Int_t refRun){
  //
  // make a Correction OCDB entry
  // take the fit values writen in config file
  //
  //
  // 1. Read previous value used in calibration
  //    OCDB has to be initialized before
  
  gROOT->Macro(Form("ConfigCalibTrain.C(%d)",refRun));  // configuring calib db
  gROOT->LoadMacro("AddTaskTPCCalib.C");
  gROOT->ProcessLine(Form("ConfigOCDB(%d);",refRun));
  AliTPCCorrection *corr  = AliTPCcalibDB::Instance()->GetTPCComposedCorrection();
  //
  TFile f("correctionsExB.root");
  AliTPCComposedCorrection * corrP0=(AliTPCComposedCorrection *)f.Get("/Correction physical/ExB-Field0");
  AliTPCComposedCorrection * corrPP=(AliTPCComposedCorrection *)f.Get("/Correction physical/ExB-Bplus");
  AliTPCComposedCorrection * corrPM=(AliTPCComposedCorrection *)f.Get("/Correction physical/ExB-Bminus");
  //
  AliTPCComposedCorrection * corrPE0=(AliTPCComposedCorrection *)f.Get("/Correction physical+Effective/ExB-Field0");
  AliTPCComposedCorrection * corrPEP=(AliTPCComposedCorrection *)f.Get("/Correction physical+Effective/ExB-Bplus");
  AliTPCComposedCorrection * corrPEM=(AliTPCComposedCorrection *)f.Get("/Correction physical+Effective/ExB-Bminus");
  //
  corrP0->SetName("Field0 correction");
  corrPP->SetName("FieldP correction");
  corrPM->SetName("FieldM correction");
  corrPE0->SetName("Field0 correction");
  corrPEP->SetName("FieldP correction");
  corrPEM->SetName("FieldM correction");

  TObjArray corrPhysical;
  TObjArray corrPhysicalEffective;
  //
  // add the base correction
  corrP0->GetCorrections()->Add(corr);
  corrPP->GetCorrections()->Add(corr);
  corrPM->GetCorrections()->Add(corr);
  corrPE0->GetCorrections()->Add(corr);
  corrPEP->GetCorrections()->Add(corr);
  corrPEM->GetCorrections()->Add(corr);
  //
  corrPhysical.AddLast(corrP0);  corrPhysical.AddLast(corrPP);  corrPhysical.AddLast(corrPM); 
  corrPhysicalEffective.AddLast(corrPE0);  corrPhysicalEffective.AddLast(corrPEP);  corrPhysicalEffective.AddLast(corrPEM); 
  //
  // make OCDB entries
  TString userName=gSystem->GetFromPipe("echo $USER");
  TString date=gSystem->GetFromPipe("date");
  TString ocdbStorage="local:////";
  ocdbStorage+=gSystem->GetFromPipe("pwd")+"/OCDB";
  //
  AliCDBMetaData *metaData= new AliCDBMetaData();
  metaData->SetObjectClassName("TObjArray");
  metaData->SetResponsible("Marian Ivanov");
  metaData->SetBeamPeriod(1);
  metaData->SetAliRootVersion("05-25-01"); //root version
  metaData->SetComment(Form("Correction calibration. User: %s\n Data%s",userName.Data(),date.Data()));
  AliCDBId* id1=NULL;
  id1=new AliCDBId("TPC/Calib/Correction", 0, AliCDBRunRange::Infinity());
  AliCDBStorage* gStorage = 0;

  gStorage=AliCDBManager::Instance()->GetStorage((ocdbStorage+"Physical").Data());
  gStorage->Put(&corrPhysical, (*id1), metaData);  
  gStorage = AliCDBManager::Instance()->GetStorage((ocdbStorage+"PhysicalEffective").Data());
  gStorage->Put(&corrPhysicalEffective, (*id1), metaData);  
}

 MakeGlobalFit.C:1
 MakeGlobalFit.C:2
 MakeGlobalFit.C:3
 MakeGlobalFit.C:4
 MakeGlobalFit.C:5
 MakeGlobalFit.C:6
 MakeGlobalFit.C:7
 MakeGlobalFit.C:8
 MakeGlobalFit.C:9
 MakeGlobalFit.C:10
 MakeGlobalFit.C:11
 MakeGlobalFit.C:12
 MakeGlobalFit.C:13
 MakeGlobalFit.C:14
 MakeGlobalFit.C:15
 MakeGlobalFit.C:16
 MakeGlobalFit.C:17
 MakeGlobalFit.C:18
 MakeGlobalFit.C:19
 MakeGlobalFit.C:20
 MakeGlobalFit.C:21
 MakeGlobalFit.C:22
 MakeGlobalFit.C:23
 MakeGlobalFit.C:24
 MakeGlobalFit.C:25
 MakeGlobalFit.C:26
 MakeGlobalFit.C:27
 MakeGlobalFit.C:28
 MakeGlobalFit.C:29
 MakeGlobalFit.C:30
 MakeGlobalFit.C:31
 MakeGlobalFit.C:32
 MakeGlobalFit.C:33
 MakeGlobalFit.C:34
 MakeGlobalFit.C:35
 MakeGlobalFit.C:36
 MakeGlobalFit.C:37
 MakeGlobalFit.C:38
 MakeGlobalFit.C:39
 MakeGlobalFit.C:40
 MakeGlobalFit.C:41
 MakeGlobalFit.C:42
 MakeGlobalFit.C:43
 MakeGlobalFit.C:44
 MakeGlobalFit.C:45
 MakeGlobalFit.C:46
 MakeGlobalFit.C:47
 MakeGlobalFit.C:48
 MakeGlobalFit.C:49
 MakeGlobalFit.C:50
 MakeGlobalFit.C:51
 MakeGlobalFit.C:52
 MakeGlobalFit.C:53
 MakeGlobalFit.C:54
 MakeGlobalFit.C:55
 MakeGlobalFit.C:56
 MakeGlobalFit.C:57
 MakeGlobalFit.C:58
 MakeGlobalFit.C:59
 MakeGlobalFit.C:60
 MakeGlobalFit.C:61
 MakeGlobalFit.C:62
 MakeGlobalFit.C:63
 MakeGlobalFit.C:64
 MakeGlobalFit.C:65
 MakeGlobalFit.C:66
 MakeGlobalFit.C:67
 MakeGlobalFit.C:68
 MakeGlobalFit.C:69
 MakeGlobalFit.C:70
 MakeGlobalFit.C:71
 MakeGlobalFit.C:72
 MakeGlobalFit.C:73
 MakeGlobalFit.C:74
 MakeGlobalFit.C:75
 MakeGlobalFit.C:76
 MakeGlobalFit.C:77
 MakeGlobalFit.C:78
 MakeGlobalFit.C:79
 MakeGlobalFit.C:80
 MakeGlobalFit.C:81
 MakeGlobalFit.C:82
 MakeGlobalFit.C:83
 MakeGlobalFit.C:84
 MakeGlobalFit.C:85
 MakeGlobalFit.C:86
 MakeGlobalFit.C:87
 MakeGlobalFit.C:88
 MakeGlobalFit.C:89
 MakeGlobalFit.C:90
 MakeGlobalFit.C:91
 MakeGlobalFit.C:92
 MakeGlobalFit.C:93
 MakeGlobalFit.C:94
 MakeGlobalFit.C:95
 MakeGlobalFit.C:96
 MakeGlobalFit.C:97
 MakeGlobalFit.C:98
 MakeGlobalFit.C:99
 MakeGlobalFit.C:100
 MakeGlobalFit.C:101
 MakeGlobalFit.C:102
 MakeGlobalFit.C:103
 MakeGlobalFit.C:104
 MakeGlobalFit.C:105
 MakeGlobalFit.C:106
 MakeGlobalFit.C:107
 MakeGlobalFit.C:108
 MakeGlobalFit.C:109
 MakeGlobalFit.C:110
 MakeGlobalFit.C:111
 MakeGlobalFit.C:112
 MakeGlobalFit.C:113
 MakeGlobalFit.C:114
 MakeGlobalFit.C:115
 MakeGlobalFit.C:116
 MakeGlobalFit.C:117
 MakeGlobalFit.C:118
 MakeGlobalFit.C:119
 MakeGlobalFit.C:120
 MakeGlobalFit.C:121
 MakeGlobalFit.C:122
 MakeGlobalFit.C:123
 MakeGlobalFit.C:124
 MakeGlobalFit.C:125
 MakeGlobalFit.C:126
 MakeGlobalFit.C:127
 MakeGlobalFit.C:128
 MakeGlobalFit.C:129
 MakeGlobalFit.C:130
 MakeGlobalFit.C:131
 MakeGlobalFit.C:132
 MakeGlobalFit.C:133
 MakeGlobalFit.C:134
 MakeGlobalFit.C:135
 MakeGlobalFit.C:136
 MakeGlobalFit.C:137
 MakeGlobalFit.C:138
 MakeGlobalFit.C:139
 MakeGlobalFit.C:140
 MakeGlobalFit.C:141
 MakeGlobalFit.C:142
 MakeGlobalFit.C:143
 MakeGlobalFit.C:144
 MakeGlobalFit.C:145
 MakeGlobalFit.C:146
 MakeGlobalFit.C:147
 MakeGlobalFit.C:148
 MakeGlobalFit.C:149
 MakeGlobalFit.C:150
 MakeGlobalFit.C:151
 MakeGlobalFit.C:152
 MakeGlobalFit.C:153
 MakeGlobalFit.C:154
 MakeGlobalFit.C:155
 MakeGlobalFit.C:156
 MakeGlobalFit.C:157
 MakeGlobalFit.C:158
 MakeGlobalFit.C:159
 MakeGlobalFit.C:160
 MakeGlobalFit.C:161
 MakeGlobalFit.C:162
 MakeGlobalFit.C:163
 MakeGlobalFit.C:164
 MakeGlobalFit.C:165
 MakeGlobalFit.C:166
 MakeGlobalFit.C:167
 MakeGlobalFit.C:168
 MakeGlobalFit.C:169
 MakeGlobalFit.C:170
 MakeGlobalFit.C:171
 MakeGlobalFit.C:172
 MakeGlobalFit.C:173
 MakeGlobalFit.C:174
 MakeGlobalFit.C:175
 MakeGlobalFit.C:176
 MakeGlobalFit.C:177
 MakeGlobalFit.C:178
 MakeGlobalFit.C:179
 MakeGlobalFit.C:180
 MakeGlobalFit.C:181
 MakeGlobalFit.C:182
 MakeGlobalFit.C:183
 MakeGlobalFit.C:184
 MakeGlobalFit.C:185
 MakeGlobalFit.C:186
 MakeGlobalFit.C:187
 MakeGlobalFit.C:188
 MakeGlobalFit.C:189
 MakeGlobalFit.C:190
 MakeGlobalFit.C:191
 MakeGlobalFit.C:192
 MakeGlobalFit.C:193
 MakeGlobalFit.C:194
 MakeGlobalFit.C:195
 MakeGlobalFit.C:196
 MakeGlobalFit.C:197
 MakeGlobalFit.C:198
 MakeGlobalFit.C:199
 MakeGlobalFit.C:200
 MakeGlobalFit.C:201
 MakeGlobalFit.C:202
 MakeGlobalFit.C:203
 MakeGlobalFit.C:204
 MakeGlobalFit.C:205
 MakeGlobalFit.C:206
 MakeGlobalFit.C:207
 MakeGlobalFit.C:208
 MakeGlobalFit.C:209
 MakeGlobalFit.C:210
 MakeGlobalFit.C:211
 MakeGlobalFit.C:212
 MakeGlobalFit.C:213
 MakeGlobalFit.C:214
 MakeGlobalFit.C:215
 MakeGlobalFit.C:216
 MakeGlobalFit.C:217
 MakeGlobalFit.C:218
 MakeGlobalFit.C:219
 MakeGlobalFit.C:220
 MakeGlobalFit.C:221
 MakeGlobalFit.C:222
 MakeGlobalFit.C:223
 MakeGlobalFit.C:224
 MakeGlobalFit.C:225
 MakeGlobalFit.C:226
 MakeGlobalFit.C:227
 MakeGlobalFit.C:228
 MakeGlobalFit.C:229
 MakeGlobalFit.C:230
 MakeGlobalFit.C:231
 MakeGlobalFit.C:232
 MakeGlobalFit.C:233
 MakeGlobalFit.C:234
 MakeGlobalFit.C:235
 MakeGlobalFit.C:236
 MakeGlobalFit.C:237
 MakeGlobalFit.C:238
 MakeGlobalFit.C:239
 MakeGlobalFit.C:240
 MakeGlobalFit.C:241
 MakeGlobalFit.C:242
 MakeGlobalFit.C:243
 MakeGlobalFit.C:244
 MakeGlobalFit.C:245
 MakeGlobalFit.C:246
 MakeGlobalFit.C:247
 MakeGlobalFit.C:248
 MakeGlobalFit.C:249
 MakeGlobalFit.C:250
 MakeGlobalFit.C:251
 MakeGlobalFit.C:252
 MakeGlobalFit.C:253
 MakeGlobalFit.C:254
 MakeGlobalFit.C:255
 MakeGlobalFit.C:256
 MakeGlobalFit.C:257
 MakeGlobalFit.C:258
 MakeGlobalFit.C:259
 MakeGlobalFit.C:260
 MakeGlobalFit.C:261
 MakeGlobalFit.C:262
 MakeGlobalFit.C:263
 MakeGlobalFit.C:264
 MakeGlobalFit.C:265
 MakeGlobalFit.C:266
 MakeGlobalFit.C:267
 MakeGlobalFit.C:268
 MakeGlobalFit.C:269
 MakeGlobalFit.C:270
 MakeGlobalFit.C:271
 MakeGlobalFit.C:272
 MakeGlobalFit.C:273
 MakeGlobalFit.C:274
 MakeGlobalFit.C:275
 MakeGlobalFit.C:276
 MakeGlobalFit.C:277
 MakeGlobalFit.C:278
 MakeGlobalFit.C:279
 MakeGlobalFit.C:280
 MakeGlobalFit.C:281
 MakeGlobalFit.C:282
 MakeGlobalFit.C:283
 MakeGlobalFit.C:284
 MakeGlobalFit.C:285
 MakeGlobalFit.C:286
 MakeGlobalFit.C:287
 MakeGlobalFit.C:288
 MakeGlobalFit.C:289
 MakeGlobalFit.C:290
 MakeGlobalFit.C:291
 MakeGlobalFit.C:292
 MakeGlobalFit.C:293
 MakeGlobalFit.C:294
 MakeGlobalFit.C:295
 MakeGlobalFit.C:296
 MakeGlobalFit.C:297
 MakeGlobalFit.C:298
 MakeGlobalFit.C:299
 MakeGlobalFit.C:300
 MakeGlobalFit.C:301
 MakeGlobalFit.C:302
 MakeGlobalFit.C:303
 MakeGlobalFit.C:304
 MakeGlobalFit.C:305
 MakeGlobalFit.C:306
 MakeGlobalFit.C:307
 MakeGlobalFit.C:308
 MakeGlobalFit.C:309
 MakeGlobalFit.C:310
 MakeGlobalFit.C:311
 MakeGlobalFit.C:312
 MakeGlobalFit.C:313
 MakeGlobalFit.C:314
 MakeGlobalFit.C:315
 MakeGlobalFit.C:316
 MakeGlobalFit.C:317
 MakeGlobalFit.C:318
 MakeGlobalFit.C:319
 MakeGlobalFit.C:320
 MakeGlobalFit.C:321
 MakeGlobalFit.C:322
 MakeGlobalFit.C:323
 MakeGlobalFit.C:324
 MakeGlobalFit.C:325
 MakeGlobalFit.C:326
 MakeGlobalFit.C:327
 MakeGlobalFit.C:328
 MakeGlobalFit.C:329
 MakeGlobalFit.C:330
 MakeGlobalFit.C:331
 MakeGlobalFit.C:332
 MakeGlobalFit.C:333
 MakeGlobalFit.C:334
 MakeGlobalFit.C:335
 MakeGlobalFit.C:336
 MakeGlobalFit.C:337
 MakeGlobalFit.C:338
 MakeGlobalFit.C:339
 MakeGlobalFit.C:340
 MakeGlobalFit.C:341
 MakeGlobalFit.C:342
 MakeGlobalFit.C:343
 MakeGlobalFit.C:344
 MakeGlobalFit.C:345
 MakeGlobalFit.C:346
 MakeGlobalFit.C:347
 MakeGlobalFit.C:348
 MakeGlobalFit.C:349
 MakeGlobalFit.C:350
 MakeGlobalFit.C:351
 MakeGlobalFit.C:352
 MakeGlobalFit.C:353
 MakeGlobalFit.C:354
 MakeGlobalFit.C:355
 MakeGlobalFit.C:356
 MakeGlobalFit.C:357
 MakeGlobalFit.C:358
 MakeGlobalFit.C:359
 MakeGlobalFit.C:360
 MakeGlobalFit.C:361
 MakeGlobalFit.C:362
 MakeGlobalFit.C:363
 MakeGlobalFit.C:364
 MakeGlobalFit.C:365
 MakeGlobalFit.C:366
 MakeGlobalFit.C:367
 MakeGlobalFit.C:368
 MakeGlobalFit.C:369
 MakeGlobalFit.C:370
 MakeGlobalFit.C:371
 MakeGlobalFit.C:372
 MakeGlobalFit.C:373
 MakeGlobalFit.C:374
 MakeGlobalFit.C:375
 MakeGlobalFit.C:376
 MakeGlobalFit.C:377
 MakeGlobalFit.C:378
 MakeGlobalFit.C:379
 MakeGlobalFit.C:380
 MakeGlobalFit.C:381
 MakeGlobalFit.C:382
 MakeGlobalFit.C:383
 MakeGlobalFit.C:384
 MakeGlobalFit.C:385
 MakeGlobalFit.C:386
 MakeGlobalFit.C:387
 MakeGlobalFit.C:388
 MakeGlobalFit.C:389
 MakeGlobalFit.C:390
 MakeGlobalFit.C:391
 MakeGlobalFit.C:392
 MakeGlobalFit.C:393
 MakeGlobalFit.C:394
 MakeGlobalFit.C:395
 MakeGlobalFit.C:396
 MakeGlobalFit.C:397
 MakeGlobalFit.C:398
 MakeGlobalFit.C:399
 MakeGlobalFit.C:400
 MakeGlobalFit.C:401
 MakeGlobalFit.C:402
 MakeGlobalFit.C:403
 MakeGlobalFit.C:404
 MakeGlobalFit.C:405
 MakeGlobalFit.C:406
 MakeGlobalFit.C:407
 MakeGlobalFit.C:408
 MakeGlobalFit.C:409
 MakeGlobalFit.C:410
 MakeGlobalFit.C:411
 MakeGlobalFit.C:412
 MakeGlobalFit.C:413
 MakeGlobalFit.C:414
 MakeGlobalFit.C:415
 MakeGlobalFit.C:416
 MakeGlobalFit.C:417
 MakeGlobalFit.C:418
 MakeGlobalFit.C:419
 MakeGlobalFit.C:420
 MakeGlobalFit.C:421
 MakeGlobalFit.C:422
 MakeGlobalFit.C:423
 MakeGlobalFit.C:424
 MakeGlobalFit.C:425
 MakeGlobalFit.C:426
 MakeGlobalFit.C:427
 MakeGlobalFit.C:428
 MakeGlobalFit.C:429
 MakeGlobalFit.C:430
 MakeGlobalFit.C:431
 MakeGlobalFit.C:432
 MakeGlobalFit.C:433
 MakeGlobalFit.C:434
 MakeGlobalFit.C:435
 MakeGlobalFit.C:436
 MakeGlobalFit.C:437
 MakeGlobalFit.C:438
 MakeGlobalFit.C:439
 MakeGlobalFit.C:440
 MakeGlobalFit.C:441
 MakeGlobalFit.C:442
 MakeGlobalFit.C:443
 MakeGlobalFit.C:444
 MakeGlobalFit.C:445
 MakeGlobalFit.C:446
 MakeGlobalFit.C:447
 MakeGlobalFit.C:448
 MakeGlobalFit.C:449
 MakeGlobalFit.C:450
 MakeGlobalFit.C:451
 MakeGlobalFit.C:452
 MakeGlobalFit.C:453
 MakeGlobalFit.C:454
 MakeGlobalFit.C:455
 MakeGlobalFit.C:456
 MakeGlobalFit.C:457
 MakeGlobalFit.C:458
 MakeGlobalFit.C:459
 MakeGlobalFit.C:460
 MakeGlobalFit.C:461
 MakeGlobalFit.C:462
 MakeGlobalFit.C:463
 MakeGlobalFit.C:464
 MakeGlobalFit.C:465
 MakeGlobalFit.C:466
 MakeGlobalFit.C:467
 MakeGlobalFit.C:468
 MakeGlobalFit.C:469
 MakeGlobalFit.C:470
 MakeGlobalFit.C:471
 MakeGlobalFit.C:472
 MakeGlobalFit.C:473
 MakeGlobalFit.C:474
 MakeGlobalFit.C:475
 MakeGlobalFit.C:476
 MakeGlobalFit.C:477
 MakeGlobalFit.C:478
 MakeGlobalFit.C:479
 MakeGlobalFit.C:480
 MakeGlobalFit.C:481
 MakeGlobalFit.C:482
 MakeGlobalFit.C:483
 MakeGlobalFit.C:484
 MakeGlobalFit.C:485
 MakeGlobalFit.C:486
 MakeGlobalFit.C:487
 MakeGlobalFit.C:488
 MakeGlobalFit.C:489
 MakeGlobalFit.C:490
 MakeGlobalFit.C:491
 MakeGlobalFit.C:492
 MakeGlobalFit.C:493
 MakeGlobalFit.C:494
 MakeGlobalFit.C:495
 MakeGlobalFit.C:496
 MakeGlobalFit.C:497
 MakeGlobalFit.C:498
 MakeGlobalFit.C:499
 MakeGlobalFit.C:500
 MakeGlobalFit.C:501
 MakeGlobalFit.C:502
 MakeGlobalFit.C:503
 MakeGlobalFit.C:504
 MakeGlobalFit.C:505
 MakeGlobalFit.C:506
 MakeGlobalFit.C:507
 MakeGlobalFit.C:508
 MakeGlobalFit.C:509
 MakeGlobalFit.C:510
 MakeGlobalFit.C:511
 MakeGlobalFit.C:512
 MakeGlobalFit.C:513
 MakeGlobalFit.C:514
 MakeGlobalFit.C:515
 MakeGlobalFit.C:516
 MakeGlobalFit.C:517
 MakeGlobalFit.C:518
 MakeGlobalFit.C:519
 MakeGlobalFit.C:520
 MakeGlobalFit.C:521
 MakeGlobalFit.C:522
 MakeGlobalFit.C:523
 MakeGlobalFit.C:524
 MakeGlobalFit.C:525
 MakeGlobalFit.C:526
 MakeGlobalFit.C:527
 MakeGlobalFit.C:528
 MakeGlobalFit.C:529
 MakeGlobalFit.C:530
 MakeGlobalFit.C:531
 MakeGlobalFit.C:532
 MakeGlobalFit.C:533
 MakeGlobalFit.C:534
 MakeGlobalFit.C:535
 MakeGlobalFit.C:536
 MakeGlobalFit.C:537
 MakeGlobalFit.C:538
 MakeGlobalFit.C:539
 MakeGlobalFit.C:540
 MakeGlobalFit.C:541
 MakeGlobalFit.C:542
 MakeGlobalFit.C:543
 MakeGlobalFit.C:544
 MakeGlobalFit.C:545
 MakeGlobalFit.C:546
 MakeGlobalFit.C:547
 MakeGlobalFit.C:548
 MakeGlobalFit.C:549
 MakeGlobalFit.C:550
 MakeGlobalFit.C:551
 MakeGlobalFit.C:552
 MakeGlobalFit.C:553
 MakeGlobalFit.C:554
 MakeGlobalFit.C:555
 MakeGlobalFit.C:556
 MakeGlobalFit.C:557
 MakeGlobalFit.C:558
 MakeGlobalFit.C:559
 MakeGlobalFit.C:560
 MakeGlobalFit.C:561
 MakeGlobalFit.C:562
 MakeGlobalFit.C:563
 MakeGlobalFit.C:564
 MakeGlobalFit.C:565
 MakeGlobalFit.C:566
 MakeGlobalFit.C:567
 MakeGlobalFit.C:568
 MakeGlobalFit.C:569
 MakeGlobalFit.C:570
 MakeGlobalFit.C:571
 MakeGlobalFit.C:572
 MakeGlobalFit.C:573
 MakeGlobalFit.C:574
 MakeGlobalFit.C:575
 MakeGlobalFit.C:576
 MakeGlobalFit.C:577
 MakeGlobalFit.C:578
 MakeGlobalFit.C:579
 MakeGlobalFit.C:580
 MakeGlobalFit.C:581
 MakeGlobalFit.C:582
 MakeGlobalFit.C:583
 MakeGlobalFit.C:584
 MakeGlobalFit.C:585
 MakeGlobalFit.C:586
 MakeGlobalFit.C:587
 MakeGlobalFit.C:588
 MakeGlobalFit.C:589
 MakeGlobalFit.C:590
 MakeGlobalFit.C:591
 MakeGlobalFit.C:592
 MakeGlobalFit.C:593
 MakeGlobalFit.C:594
 MakeGlobalFit.C:595
 MakeGlobalFit.C:596
 MakeGlobalFit.C:597
 MakeGlobalFit.C:598
 MakeGlobalFit.C:599
 MakeGlobalFit.C:600
 MakeGlobalFit.C:601
 MakeGlobalFit.C:602
 MakeGlobalFit.C:603
 MakeGlobalFit.C:604
 MakeGlobalFit.C:605
 MakeGlobalFit.C:606
 MakeGlobalFit.C:607
 MakeGlobalFit.C:608
 MakeGlobalFit.C:609
 MakeGlobalFit.C:610
 MakeGlobalFit.C:611
 MakeGlobalFit.C:612
 MakeGlobalFit.C:613
 MakeGlobalFit.C:614
 MakeGlobalFit.C:615
 MakeGlobalFit.C:616
 MakeGlobalFit.C:617
 MakeGlobalFit.C:618
 MakeGlobalFit.C:619
 MakeGlobalFit.C:620
 MakeGlobalFit.C:621
 MakeGlobalFit.C:622
 MakeGlobalFit.C:623
 MakeGlobalFit.C:624
 MakeGlobalFit.C:625
 MakeGlobalFit.C:626
 MakeGlobalFit.C:627
 MakeGlobalFit.C:628
 MakeGlobalFit.C:629
 MakeGlobalFit.C:630
 MakeGlobalFit.C:631
 MakeGlobalFit.C:632
 MakeGlobalFit.C:633
 MakeGlobalFit.C:634
 MakeGlobalFit.C:635
 MakeGlobalFit.C:636
 MakeGlobalFit.C:637
 MakeGlobalFit.C:638
 MakeGlobalFit.C:639
 MakeGlobalFit.C:640
 MakeGlobalFit.C:641
 MakeGlobalFit.C:642
 MakeGlobalFit.C:643
 MakeGlobalFit.C:644
 MakeGlobalFit.C:645
 MakeGlobalFit.C:646
 MakeGlobalFit.C:647
 MakeGlobalFit.C:648
 MakeGlobalFit.C:649
 MakeGlobalFit.C:650
 MakeGlobalFit.C:651
 MakeGlobalFit.C:652
 MakeGlobalFit.C:653
 MakeGlobalFit.C:654
 MakeGlobalFit.C:655
 MakeGlobalFit.C:656
 MakeGlobalFit.C:657
 MakeGlobalFit.C:658
 MakeGlobalFit.C:659
 MakeGlobalFit.C:660
 MakeGlobalFit.C:661
 MakeGlobalFit.C:662
 MakeGlobalFit.C:663
 MakeGlobalFit.C:664
 MakeGlobalFit.C:665
 MakeGlobalFit.C:666
 MakeGlobalFit.C:667
 MakeGlobalFit.C:668
 MakeGlobalFit.C:669
 MakeGlobalFit.C:670
 MakeGlobalFit.C:671
 MakeGlobalFit.C:672
 MakeGlobalFit.C:673
 MakeGlobalFit.C:674
 MakeGlobalFit.C:675
 MakeGlobalFit.C:676
 MakeGlobalFit.C:677
 MakeGlobalFit.C:678
 MakeGlobalFit.C:679
 MakeGlobalFit.C:680
 MakeGlobalFit.C:681
 MakeGlobalFit.C:682
 MakeGlobalFit.C:683
 MakeGlobalFit.C:684
 MakeGlobalFit.C:685
 MakeGlobalFit.C:686
 MakeGlobalFit.C:687
 MakeGlobalFit.C:688
 MakeGlobalFit.C:689
 MakeGlobalFit.C:690
 MakeGlobalFit.C:691
 MakeGlobalFit.C:692
 MakeGlobalFit.C:693
 MakeGlobalFit.C:694
 MakeGlobalFit.C:695
 MakeGlobalFit.C:696
 MakeGlobalFit.C:697
 MakeGlobalFit.C:698
 MakeGlobalFit.C:699
 MakeGlobalFit.C:700
 MakeGlobalFit.C:701
 MakeGlobalFit.C:702
 MakeGlobalFit.C:703
 MakeGlobalFit.C:704
 MakeGlobalFit.C:705
 MakeGlobalFit.C:706
 MakeGlobalFit.C:707
 MakeGlobalFit.C:708
 MakeGlobalFit.C:709
 MakeGlobalFit.C:710
 MakeGlobalFit.C:711
 MakeGlobalFit.C:712
 MakeGlobalFit.C:713
 MakeGlobalFit.C:714
 MakeGlobalFit.C:715
 MakeGlobalFit.C:716
 MakeGlobalFit.C:717
 MakeGlobalFit.C:718
 MakeGlobalFit.C:719
 MakeGlobalFit.C:720
 MakeGlobalFit.C:721
 MakeGlobalFit.C:722
 MakeGlobalFit.C:723
 MakeGlobalFit.C:724
 MakeGlobalFit.C:725
 MakeGlobalFit.C:726
 MakeGlobalFit.C:727
 MakeGlobalFit.C:728
 MakeGlobalFit.C:729
 MakeGlobalFit.C:730
 MakeGlobalFit.C:731
 MakeGlobalFit.C:732
 MakeGlobalFit.C:733
 MakeGlobalFit.C:734
 MakeGlobalFit.C:735
 MakeGlobalFit.C:736
 MakeGlobalFit.C:737
 MakeGlobalFit.C:738
 MakeGlobalFit.C:739
 MakeGlobalFit.C:740
 MakeGlobalFit.C:741
 MakeGlobalFit.C:742
 MakeGlobalFit.C:743
 MakeGlobalFit.C:744
 MakeGlobalFit.C:745
 MakeGlobalFit.C:746
 MakeGlobalFit.C:747
 MakeGlobalFit.C:748
 MakeGlobalFit.C:749
 MakeGlobalFit.C:750
 MakeGlobalFit.C:751
 MakeGlobalFit.C:752
 MakeGlobalFit.C:753
 MakeGlobalFit.C:754
 MakeGlobalFit.C:755
 MakeGlobalFit.C:756
 MakeGlobalFit.C:757
 MakeGlobalFit.C:758
 MakeGlobalFit.C:759
 MakeGlobalFit.C:760
 MakeGlobalFit.C:761
 MakeGlobalFit.C:762
 MakeGlobalFit.C:763
 MakeGlobalFit.C:764
 MakeGlobalFit.C:765
 MakeGlobalFit.C:766
 MakeGlobalFit.C:767
 MakeGlobalFit.C:768
 MakeGlobalFit.C:769
 MakeGlobalFit.C:770
 MakeGlobalFit.C:771
 MakeGlobalFit.C:772
 MakeGlobalFit.C:773
 MakeGlobalFit.C:774
 MakeGlobalFit.C:775
 MakeGlobalFit.C:776
 MakeGlobalFit.C:777
 MakeGlobalFit.C:778
 MakeGlobalFit.C:779
 MakeGlobalFit.C:780
 MakeGlobalFit.C:781
 MakeGlobalFit.C:782
 MakeGlobalFit.C:783
 MakeGlobalFit.C:784
 MakeGlobalFit.C:785
 MakeGlobalFit.C:786
 MakeGlobalFit.C:787
 MakeGlobalFit.C:788
 MakeGlobalFit.C:789
 MakeGlobalFit.C:790
 MakeGlobalFit.C:791
 MakeGlobalFit.C:792
 MakeGlobalFit.C:793
 MakeGlobalFit.C:794
 MakeGlobalFit.C:795
 MakeGlobalFit.C:796
 MakeGlobalFit.C:797
 MakeGlobalFit.C:798
 MakeGlobalFit.C:799
 MakeGlobalFit.C:800
 MakeGlobalFit.C:801
 MakeGlobalFit.C:802
 MakeGlobalFit.C:803
 MakeGlobalFit.C:804
 MakeGlobalFit.C:805
 MakeGlobalFit.C:806
 MakeGlobalFit.C:807
 MakeGlobalFit.C:808
 MakeGlobalFit.C:809
 MakeGlobalFit.C:810
 MakeGlobalFit.C:811
 MakeGlobalFit.C:812
 MakeGlobalFit.C:813
 MakeGlobalFit.C:814
 MakeGlobalFit.C:815
 MakeGlobalFit.C:816
 MakeGlobalFit.C:817
 MakeGlobalFit.C:818
 MakeGlobalFit.C:819
 MakeGlobalFit.C:820
 MakeGlobalFit.C:821
 MakeGlobalFit.C:822
 MakeGlobalFit.C:823
 MakeGlobalFit.C:824
 MakeGlobalFit.C:825
 MakeGlobalFit.C:826
 MakeGlobalFit.C:827
 MakeGlobalFit.C:828
 MakeGlobalFit.C:829
 MakeGlobalFit.C:830
 MakeGlobalFit.C:831
 MakeGlobalFit.C:832
 MakeGlobalFit.C:833
 MakeGlobalFit.C:834
 MakeGlobalFit.C:835
 MakeGlobalFit.C:836
 MakeGlobalFit.C:837
 MakeGlobalFit.C:838
 MakeGlobalFit.C:839
 MakeGlobalFit.C:840
 MakeGlobalFit.C:841
 MakeGlobalFit.C:842
 MakeGlobalFit.C:843
 MakeGlobalFit.C:844
 MakeGlobalFit.C:845
 MakeGlobalFit.C:846
 MakeGlobalFit.C:847
 MakeGlobalFit.C:848
 MakeGlobalFit.C:849
 MakeGlobalFit.C:850
 MakeGlobalFit.C:851
 MakeGlobalFit.C:852
 MakeGlobalFit.C:853
 MakeGlobalFit.C:854
 MakeGlobalFit.C:855
 MakeGlobalFit.C:856
 MakeGlobalFit.C:857
 MakeGlobalFit.C:858
 MakeGlobalFit.C:859
 MakeGlobalFit.C:860
 MakeGlobalFit.C:861
 MakeGlobalFit.C:862
 MakeGlobalFit.C:863
 MakeGlobalFit.C:864
 MakeGlobalFit.C:865
 MakeGlobalFit.C:866
 MakeGlobalFit.C:867
 MakeGlobalFit.C:868
 MakeGlobalFit.C:869
 MakeGlobalFit.C:870
 MakeGlobalFit.C:871
 MakeGlobalFit.C:872
 MakeGlobalFit.C:873
 MakeGlobalFit.C:874
 MakeGlobalFit.C:875
 MakeGlobalFit.C:876
 MakeGlobalFit.C:877
 MakeGlobalFit.C:878
 MakeGlobalFit.C:879
 MakeGlobalFit.C:880
 MakeGlobalFit.C:881
 MakeGlobalFit.C:882
 MakeGlobalFit.C:883
 MakeGlobalFit.C:884
 MakeGlobalFit.C:885
 MakeGlobalFit.C:886
 MakeGlobalFit.C:887
 MakeGlobalFit.C:888
 MakeGlobalFit.C:889
 MakeGlobalFit.C:890
 MakeGlobalFit.C:891
 MakeGlobalFit.C:892
 MakeGlobalFit.C:893
 MakeGlobalFit.C:894
 MakeGlobalFit.C:895
 MakeGlobalFit.C:896
 MakeGlobalFit.C:897
 MakeGlobalFit.C:898
 MakeGlobalFit.C:899
 MakeGlobalFit.C:900
 MakeGlobalFit.C:901
 MakeGlobalFit.C:902
 MakeGlobalFit.C:903
 MakeGlobalFit.C:904
 MakeGlobalFit.C:905
 MakeGlobalFit.C:906
 MakeGlobalFit.C:907
 MakeGlobalFit.C:908
 MakeGlobalFit.C:909
 MakeGlobalFit.C:910
 MakeGlobalFit.C:911
 MakeGlobalFit.C:912
 MakeGlobalFit.C:913
 MakeGlobalFit.C:914
 MakeGlobalFit.C:915
 MakeGlobalFit.C:916
 MakeGlobalFit.C:917
 MakeGlobalFit.C:918
 MakeGlobalFit.C:919
 MakeGlobalFit.C:920
 MakeGlobalFit.C:921
 MakeGlobalFit.C:922
 MakeGlobalFit.C:923
 MakeGlobalFit.C:924
 MakeGlobalFit.C:925
 MakeGlobalFit.C:926
 MakeGlobalFit.C:927
 MakeGlobalFit.C:928
 MakeGlobalFit.C:929
 MakeGlobalFit.C:930
 MakeGlobalFit.C:931
 MakeGlobalFit.C:932
 MakeGlobalFit.C:933
 MakeGlobalFit.C:934
 MakeGlobalFit.C:935
 MakeGlobalFit.C:936
 MakeGlobalFit.C:937
 MakeGlobalFit.C:938
 MakeGlobalFit.C:939
 MakeGlobalFit.C:940
 MakeGlobalFit.C:941
 MakeGlobalFit.C:942
 MakeGlobalFit.C:943
 MakeGlobalFit.C:944
 MakeGlobalFit.C:945
 MakeGlobalFit.C:946
 MakeGlobalFit.C:947
 MakeGlobalFit.C:948
 MakeGlobalFit.C:949
 MakeGlobalFit.C:950
 MakeGlobalFit.C:951
 MakeGlobalFit.C:952
 MakeGlobalFit.C:953
 MakeGlobalFit.C:954
 MakeGlobalFit.C:955
 MakeGlobalFit.C:956
 MakeGlobalFit.C:957
 MakeGlobalFit.C:958
 MakeGlobalFit.C:959
 MakeGlobalFit.C:960
 MakeGlobalFit.C:961
 MakeGlobalFit.C:962
 MakeGlobalFit.C:963
 MakeGlobalFit.C:964
 MakeGlobalFit.C:965
 MakeGlobalFit.C:966
 MakeGlobalFit.C:967
 MakeGlobalFit.C:968
 MakeGlobalFit.C:969
 MakeGlobalFit.C:970
 MakeGlobalFit.C:971
 MakeGlobalFit.C:972
 MakeGlobalFit.C:973
 MakeGlobalFit.C:974
 MakeGlobalFit.C:975
 MakeGlobalFit.C:976
 MakeGlobalFit.C:977
 MakeGlobalFit.C:978
 MakeGlobalFit.C:979
 MakeGlobalFit.C:980
 MakeGlobalFit.C:981
 MakeGlobalFit.C:982
 MakeGlobalFit.C:983
 MakeGlobalFit.C:984
 MakeGlobalFit.C:985
 MakeGlobalFit.C:986
 MakeGlobalFit.C:987
 MakeGlobalFit.C:988
 MakeGlobalFit.C:989
 MakeGlobalFit.C:990
 MakeGlobalFit.C:991
 MakeGlobalFit.C:992
 MakeGlobalFit.C:993
 MakeGlobalFit.C:994
 MakeGlobalFit.C:995
 MakeGlobalFit.C:996
 MakeGlobalFit.C:997
 MakeGlobalFit.C:998
 MakeGlobalFit.C:999
 MakeGlobalFit.C:1000
 MakeGlobalFit.C:1001
 MakeGlobalFit.C:1002
 MakeGlobalFit.C:1003
 MakeGlobalFit.C:1004
 MakeGlobalFit.C:1005
 MakeGlobalFit.C:1006
 MakeGlobalFit.C:1007
 MakeGlobalFit.C:1008
 MakeGlobalFit.C:1009
 MakeGlobalFit.C:1010
 MakeGlobalFit.C:1011
 MakeGlobalFit.C:1012
 MakeGlobalFit.C:1013
 MakeGlobalFit.C:1014
 MakeGlobalFit.C:1015
 MakeGlobalFit.C:1016
 MakeGlobalFit.C:1017
 MakeGlobalFit.C:1018
 MakeGlobalFit.C:1019
 MakeGlobalFit.C:1020
 MakeGlobalFit.C:1021
 MakeGlobalFit.C:1022
 MakeGlobalFit.C:1023
 MakeGlobalFit.C:1024
 MakeGlobalFit.C:1025
 MakeGlobalFit.C:1026
 MakeGlobalFit.C:1027
 MakeGlobalFit.C:1028
 MakeGlobalFit.C:1029
 MakeGlobalFit.C:1030
 MakeGlobalFit.C:1031
 MakeGlobalFit.C:1032
 MakeGlobalFit.C:1033
 MakeGlobalFit.C:1034
 MakeGlobalFit.C:1035
 MakeGlobalFit.C:1036
 MakeGlobalFit.C:1037
 MakeGlobalFit.C:1038
 MakeGlobalFit.C:1039
 MakeGlobalFit.C:1040
 MakeGlobalFit.C:1041
 MakeGlobalFit.C:1042
 MakeGlobalFit.C:1043
 MakeGlobalFit.C:1044
 MakeGlobalFit.C:1045
 MakeGlobalFit.C:1046
 MakeGlobalFit.C:1047
 MakeGlobalFit.C:1048
 MakeGlobalFit.C:1049
 MakeGlobalFit.C:1050
 MakeGlobalFit.C:1051
 MakeGlobalFit.C:1052
 MakeGlobalFit.C:1053
 MakeGlobalFit.C:1054
 MakeGlobalFit.C:1055
 MakeGlobalFit.C:1056
 MakeGlobalFit.C:1057
 MakeGlobalFit.C:1058
 MakeGlobalFit.C:1059
 MakeGlobalFit.C:1060
 MakeGlobalFit.C:1061
 MakeGlobalFit.C:1062
 MakeGlobalFit.C:1063
 MakeGlobalFit.C:1064
 MakeGlobalFit.C:1065
 MakeGlobalFit.C:1066
 MakeGlobalFit.C:1067
 MakeGlobalFit.C:1068
 MakeGlobalFit.C:1069
 MakeGlobalFit.C:1070
 MakeGlobalFit.C:1071
 MakeGlobalFit.C:1072
 MakeGlobalFit.C:1073
 MakeGlobalFit.C:1074
 MakeGlobalFit.C:1075
 MakeGlobalFit.C:1076
 MakeGlobalFit.C:1077
 MakeGlobalFit.C:1078
 MakeGlobalFit.C:1079
 MakeGlobalFit.C:1080
 MakeGlobalFit.C:1081
 MakeGlobalFit.C:1082
 MakeGlobalFit.C:1083
 MakeGlobalFit.C:1084
 MakeGlobalFit.C:1085
 MakeGlobalFit.C:1086
 MakeGlobalFit.C:1087
 MakeGlobalFit.C:1088
 MakeGlobalFit.C:1089
 MakeGlobalFit.C:1090
 MakeGlobalFit.C:1091
 MakeGlobalFit.C:1092
 MakeGlobalFit.C:1093
 MakeGlobalFit.C:1094
 MakeGlobalFit.C:1095
 MakeGlobalFit.C:1096
 MakeGlobalFit.C:1097
 MakeGlobalFit.C:1098
 MakeGlobalFit.C:1099
 MakeGlobalFit.C:1100
 MakeGlobalFit.C:1101
 MakeGlobalFit.C:1102
 MakeGlobalFit.C:1103
 MakeGlobalFit.C:1104
 MakeGlobalFit.C:1105
 MakeGlobalFit.C:1106
 MakeGlobalFit.C:1107
 MakeGlobalFit.C:1108
 MakeGlobalFit.C:1109
 MakeGlobalFit.C:1110
 MakeGlobalFit.C:1111
 MakeGlobalFit.C:1112
 MakeGlobalFit.C:1113
 MakeGlobalFit.C:1114
 MakeGlobalFit.C:1115
 MakeGlobalFit.C:1116
 MakeGlobalFit.C:1117
 MakeGlobalFit.C:1118
 MakeGlobalFit.C:1119
 MakeGlobalFit.C:1120
 MakeGlobalFit.C:1121
 MakeGlobalFit.C:1122
 MakeGlobalFit.C:1123
 MakeGlobalFit.C:1124
 MakeGlobalFit.C:1125
 MakeGlobalFit.C:1126
 MakeGlobalFit.C:1127
 MakeGlobalFit.C:1128
 MakeGlobalFit.C:1129
 MakeGlobalFit.C:1130
 MakeGlobalFit.C:1131
 MakeGlobalFit.C:1132
 MakeGlobalFit.C:1133
 MakeGlobalFit.C:1134
 MakeGlobalFit.C:1135
 MakeGlobalFit.C:1136
 MakeGlobalFit.C:1137
 MakeGlobalFit.C:1138
 MakeGlobalFit.C:1139
 MakeGlobalFit.C:1140
 MakeGlobalFit.C:1141
 MakeGlobalFit.C:1142
 MakeGlobalFit.C:1143
 MakeGlobalFit.C:1144
 MakeGlobalFit.C:1145
 MakeGlobalFit.C:1146
 MakeGlobalFit.C:1147
 MakeGlobalFit.C:1148
 MakeGlobalFit.C:1149
 MakeGlobalFit.C:1150
 MakeGlobalFit.C:1151
 MakeGlobalFit.C:1152
 MakeGlobalFit.C:1153
 MakeGlobalFit.C:1154
 MakeGlobalFit.C:1155
 MakeGlobalFit.C:1156
 MakeGlobalFit.C:1157
 MakeGlobalFit.C:1158
 MakeGlobalFit.C:1159
 MakeGlobalFit.C:1160
 MakeGlobalFit.C:1161
 MakeGlobalFit.C:1162
 MakeGlobalFit.C:1163
 MakeGlobalFit.C:1164
 MakeGlobalFit.C:1165
 MakeGlobalFit.C:1166
 MakeGlobalFit.C:1167
 MakeGlobalFit.C:1168
 MakeGlobalFit.C:1169
 MakeGlobalFit.C:1170
 MakeGlobalFit.C:1171
 MakeGlobalFit.C:1172
 MakeGlobalFit.C:1173
 MakeGlobalFit.C:1174
 MakeGlobalFit.C:1175
 MakeGlobalFit.C:1176
 MakeGlobalFit.C:1177
 MakeGlobalFit.C:1178
 MakeGlobalFit.C:1179
 MakeGlobalFit.C:1180
 MakeGlobalFit.C:1181
 MakeGlobalFit.C:1182
 MakeGlobalFit.C:1183
 MakeGlobalFit.C:1184
 MakeGlobalFit.C:1185
 MakeGlobalFit.C:1186
 MakeGlobalFit.C:1187
 MakeGlobalFit.C:1188
 MakeGlobalFit.C:1189