ROOT logo
/*
Draw result of perfomance test:

aliroot -b -q  $ALICE_ROOT/TPC/scripts/loadTPCcalib.C $ALICE_ROOT/TPC/CalibMacros/CalibCosmic.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");
  .L $ALICE_ROOT/TPC/CalibMacros/CalibCosmic.C
  // init
  Init();
  SetDefaultCut();  // check defualt cut 
  //
  MakeDefaultPlots();

  gROOT->Macro("~/NimStyle.C");
  TFile f("cosmicPlots.root");
  TBrowser b
  b.Add(CosmicPlots,"CosmicPlot");

*/  

#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 "TTreeStream.h"
#include "AliExternalTrackParam.h"
#include "AliESDfriend.h"
#include "AliTPCcalibCosmic.h"
#include "TROOT.h"
#include "TPostScript.h"
#include "TStyle.h"
#include "AliTrackerBase.h"
#include "AliTPCExBEffective.h"
#include "TEntryList.h"
#include "TLegend.h"
#endif


class AliTPCcalibCosmic;
AliTPCcalibCosmic * cosmicScan =0;
TObjArray fitArr;
Int_t colors[3]={1,2,4};
TObjArray *picArray = new TObjArray();
const char * chsign[3]={"all", "Positive","Negative"};
void Init();
void SetRangeAll(Int_t axis, Float_t xmin, Float_t xmax);
void SetDefaultCut();
void  MakeDefaultPlots();



void CalibCosmic(){
  // init
  Init();
  SetDefaultCut(); 
  //
  MakeDefaultPlots();
}

void Init(){
  //
  //
  TH1::AddDirectory(0);
  TFile fcalib("TPCCosmicObjects.root");
  cosmicScan = ( AliTPCcalibCosmic *)fcalib.Get("cosmicTPC");
  TString axisName[9];
  axisName[0]  ="#Delta"; axisName[1]  ="N_{cl}";
  axisName[2]  ="DCA_{r}(cm)";
  axisName[3]  ="z (cm)"; axisName[4]  ="sin(#phi)";
  axisName[5]  ="tan(#theta)"; axisName[6]  ="1/p_{t} (1/GeV)";
  axisName[7]  ="p_{t} (GeV)"; axisName[8]  ="alpha";

  {
  for (Int_t ivar=0;ivar<6;ivar++){
    for (Int_t ivar2=0;ivar2<9;ivar2++){      
      cosmicScan->fHistoDelta[ivar]->GetAxis(ivar2)->SetName(axisName[ivar2].Data());
      cosmicScan->fHistoDelta[ivar]->GetAxis(ivar2)->SetTitle(axisName[ivar2].Data());
      cosmicScan->fHistoPull[ivar]->GetAxis(ivar2)->SetName(axisName[ivar2].Data());
      cosmicScan->fHistoPull[ivar]->GetAxis(ivar2)->SetTitle(axisName[ivar2].Data());
    }
  }
  }
}

void SetRangeAll(Int_t axis, Float_t xmin, Float_t xmax){

  for (Int_t i=0;i<6;i++){
    //
    cosmicScan->fHistoDelta[i]->GetAxis(axis)->SetRangeUser(xmin,xmax);
    cosmicScan->fHistoPull[i]->GetAxis(axis)->SetRangeUser(xmin,xmax);
  }
}


void SetDefaultCut(){
  for (Int_t i=0;i<6;i++){
    //
    //cut on number of clusters
    cosmicScan->fHistoDelta[i]->GetAxis(1)->SetRangeUser(130,200);
    cosmicScan->fHistoPull[i]->GetAxis(1)->SetRangeUser(130,200);
    //cut on DCA r
    cosmicScan->fHistoDelta[i]->GetAxis(2)->SetRangeUser(0,15);
    cosmicScan->fHistoPull[i]->GetAxis(2)->SetRangeUser(0,15);
    //cut on z at
    cosmicScan->fHistoDelta[i]->GetAxis(3)->SetRangeUser(-20,20);
    cosmicScan->fHistoPull[i]->GetAxis(3)->SetRangeUser(-20,20);
  }
  cosmicScan->fHistoDelta[0]->GetAxis(0)->SetRangeUser(-1,1);
  cosmicScan->fHistoDelta[1]->GetAxis(0)->SetRangeUser(-1,1);
  cosmicScan->fHistoDelta[4]->GetAxis(0)->SetRangeUser(-0.1,0.1);
}

TH2 * GetDelta2D(Int_t type, Int_t var){
  TH2 * his = cosmicScan->fHistoDelta[type]->Projection(0,var);
  his->SetXTitle(cosmicScan->fHistoDelta[type]->GetAxis(var)->GetName());
  his->SetYTitle(cosmicScan->fHistoDelta[type]->GetAxis(0)->GetName());
  return his;
}


TH1* GetFit2D(Int_t type, Int_t var, Bool_t resol){
  
  TH2 * his = cosmicScan->fHistoDelta[type]->Projection(0,var);
  his->SetXTitle(cosmicScan->fHistoDelta[type]->GetAxis(var)->GetName());
  his->SetYTitle(cosmicScan->fHistoDelta[type]->GetAxis(0)->GetName());
  his->FitSlicesY(0,0,-1,0,"QNR",&fitArr);
  TH1 * hres = 0;
  if (resol) hres = (TH1*)(fitArr.At(2)->Clone());
  if (!resol) hres = (TH1*)(fitArr.At(1)->Clone());
  hres->SetMarkerStyle(20);
  hres->SetMarkerColor(2);
  hres->GetYaxis()->SetTitleOffset(1.8);
  hres->GetYaxis()->SetDecimals(kTRUE);
  return hres;
}


TH1 * GetDelta(Int_t type){
  TH1 * his = cosmicScan->fHistoDelta[type]->Projection(0);
  his->SetXTitle(cosmicScan->fHistoDelta[type]->GetAxis(0)->GetName());
  return his;
}

TH2 * GetPull2D(Int_t type, Int_t var){
  TH2 * his = cosmicScan->fHistoPull[type]->Projection(0,var);
  his->SetXTitle(cosmicScan->fHistoPull[type]->GetAxis(var)->GetName());
  his->SetYTitle(cosmicScan->fHistoPull[type]->GetAxis(0)->GetName());
  return his;
}

TH1* GetPull2DSigma(Int_t type, Int_t var){
  
  TH2 * his = cosmicScan->fHistoPull[type]->Projection(0,var);
  his->SetXTitle(cosmicScan->fHistoPull[type]->GetAxis(var)->GetName());
  his->SetYTitle(cosmicScan->fHistoPull[type]->GetAxis(0)->GetName());
  his->FitSlicesY(0,0,-1,0,"QNR",&fitArr);
  TH1 * hres = (TH1*)(fitArr.At(2)->Clone());
  return hres;
}



TH1 * GetPull(Int_t type){
  TH1 * his = cosmicScan->fHistoPull[type]->Projection(0);
  his->SetXTitle(cosmicScan->fHistoPull[type]->GetAxis(0)->GetName());
  return his;
}


void DrawResoldEdx(){
  //
  //
  //
  Int_t kmicolors[10]={1,2,3,6,7,8,9,10,11,12};
  Int_t kmimarkers[10]={21,22,23,24,25,26,27,28,29,30};
  TH2 *htemp;
  TObjArray arr;
  TH1 * hResolMax[4];
  TH1 * hResolTot[4];
  //  
  for (Int_t ipad=0;ipad<4;ipad++){
    cosmicScan->fHistodEdxTot[ipad]->GetAxis(4)->SetRangeUser(-0.6,0.6);
    cosmicScan->fHistodEdxMax[ipad]->GetAxis(4)->SetRangeUser(-0.6,0.6);
  }
  cosmicScan->fHistodEdxTot[0]->GetAxis(1)->SetRangeUser(30,62);
  cosmicScan->fHistodEdxTot[1]->GetAxis(1)->SetRangeUser(30,62);
  cosmicScan->fHistodEdxTot[2]->GetAxis(1)->SetRangeUser(10,35);
  cosmicScan->fHistodEdxTot[3]->GetAxis(1)->SetRangeUser(10,150);
  cosmicScan->fHistodEdxMax[0]->GetAxis(1)->SetRangeUser(30,62);
  cosmicScan->fHistodEdxMax[1]->GetAxis(1)->SetRangeUser(30,62);
  cosmicScan->fHistodEdxMax[2]->GetAxis(1)->SetRangeUser(10,35);
  cosmicScan->fHistodEdxMax[3]->GetAxis(1)->SetRangeUser(10,150);
  //

  for (Int_t ipad=0;ipad<4;ipad++){
    htemp = cosmicScan->fHistodEdxTot[ipad]->Projection(0,1);
    htemp->FitSlicesY(0,0,-1,0,"QNR",&arr);
    hResolTot[ipad] = (TH1*)(arr.At(2)->Clone());
    delete htemp;
    arr.SetOwner(kTRUE);
    arr.Delete();
    hResolTot[ipad]->Scale(1./TMath::Sqrt(2.));
    //
    htemp = cosmicScan->fHistodEdxMax[ipad]->Projection(0,1);
    htemp->FitSlicesY(0,0,-1,0,"QNR",&arr);
    hResolMax[ipad] = (TH1*)(arr.At(2)->Clone());
    delete htemp;
    arr.SetOwner(kTRUE);
    arr.Delete();
    hResolMax[ipad]->Scale(1./TMath::Sqrt(2.));    
  }
  hResolTot[3]->GetXaxis()->SetRangeUser(0,160);
  hResolTot[3]->SetXTitle("N_{cl}");
  hResolTot[3]->SetYTitle("#sigma(dEdx/dEdx_{d})/#sqrt{2.}");
  hResolTot[3]->SetTitle("Relative dEdx resolution");
  for (Int_t ipad=3;ipad>=0;ipad--){
    hResolTot[ipad]->SetMaximum(0.1);
    hResolTot[ipad]->SetMinimum(0.);
    hResolTot[ipad]->SetMarkerColor(kmicolors[ipad]+0);
    hResolTot[ipad]->SetMarkerStyle(kmimarkers[ipad]+1);
    if (ipad==3)    hResolTot[ipad]->Draw();
    hResolTot[ipad]->Draw("same");
    //
    hResolMax[ipad]->SetMaximum(0.1);
    hResolMax[ipad]->SetMinimum(0.);
    hResolMax[ipad]->SetMarkerColor(kmicolors[ipad]+0);
    hResolMax[ipad]->SetMarkerStyle(kmimarkers[ipad]+4);
    hResolMax[ipad]->Draw("same");
  }
  
}

void DrawStat(Int_t coord, TObjArray *array=0){
  //
  //
  //
  TCanvas *cStat = new TCanvas(Form("Cosmic stat%d",coord), Form("CosmicStat%d",coord),1000,800);
  Float_t mx0=0.2, mx1=0.05, my0=0.15, my1=0.1;
  cStat->SetMargin(mx0,mx1,my0,my1);
  cStat->Divide(3,3);
  for (Int_t i=1; i<8; i++){
    cStat->cd(i+1);
    cosmicScan->fHistoDelta[0]->Projection(i)->Draw();
  }
  if (array) array->AddLast(cStat);
}

void SetStylePad(TVirtualPad *pad){
  Float_t mx0=0.2, mx1=0.05, my0=0.15, my1=0.1;
  pad->SetMargin(mx0,mx1,my0,my1);
  pad->SetTicks(1,1);
  pad->SetGrid(1,1); 
  
}

void MakePlotPt(TObjArray * array){
  //
  //
  TCanvas *cptRes = new TCanvas("TPCPtResol","TPCPtResol",900,600);
  cptRes->Divide(2,1);
  SetStylePad(cptRes->cd(1));
  SetStylePad(cptRes->cd(2)); 
  cptRes->cd(1);
  TLegend *legend = new TLegend(0.2,0.7,0.6,0.9,"");

  //
  TH1 * hisRes=0;
  TH1 * hisMean=0;
  for (Int_t i=0; i<3; i++){
    if (i==0) cosmicScan->fHistoDelta[5]->GetAxis(6)->SetRangeUser(-1,1);  
    if (i==1) cosmicScan->fHistoDelta[5]->GetAxis(6)->SetRangeUser(0.001,1);
    if (i==2) cosmicScan->fHistoDelta[5]->GetAxis(6)->SetRangeUser(-1,-0.001);
    hisRes  = (TH1*)GetFit2D(5,7,kTRUE)->Clone();
    hisMean = (TH1*)GetFit2D(5,7,kFALSE)->Clone();
    hisMean->SetName(Form("#Deltap_{t}/p_{t} %s",chsign[i]));
    hisRes->SetName(Form("#sigma_{p_{t}}/p_{t} %s",chsign[i]));
    hisMean->SetTitle(Form("#Delta_{p_{t}}/p_{t} %s",chsign[i]));
    hisRes->SetTitle(Form("#sigma_{p_{t}}/p_{t} %s",chsign[i]));

    hisRes->SetMarkerStyle(20);
    hisMean->SetMarkerStyle(20);
    hisRes->SetMarkerColor(colors[i]);
    hisMean->SetMarkerColor(colors[i]);
    hisRes->Scale(100);
    hisMean->Scale(100);
    hisRes->SetMaximum(30);
    hisRes->SetMinimum(0);
    hisMean->SetMaximum(20);
    hisMean->SetMinimum(-20);
    hisRes->SetYTitle("#sigma_{p_{t}}/p_{t} (%)");
    hisMean->SetYTitle("#Delta_{p_{t}}/p_{t} (%)");
    hisRes->GetXaxis()->SetRangeUser(0,50);
    hisMean->GetXaxis()->SetRangeUser(0,50);  
    cptRes->cd(2); 
    hisRes->Draw("same");
    if (i==0) hisRes->Draw("");
    cptRes->cd(1);
    hisMean->Draw("same");
    if (i==0) hisMean->Draw("");
    legend->AddEntry(hisMean);
  }
  legend->Draw();
  if (array) array->AddLast(cptRes);
}


void MakePlotP4(TObjArray * array){
  //
  //
  TCanvas *cptRes = new TCanvas("TPCP4Resol","TPCP4Resol",900,600);
  cptRes->Divide(2,1);
  SetStylePad(cptRes->cd(1));
  SetStylePad(cptRes->cd(2));
  cptRes->cd(1);
  TLegend *legend = new TLegend(0.2,0.7,0.6,0.9,"");

  //
  TH1 * hisRes  =0;
  TH1 * hisMean=0;

  for (Int_t i=0; i<3; i++){
    if (i==0) cosmicScan->fHistoDelta[4]->GetAxis(6)->SetRangeUser(-1,1);
    if (i==1) cosmicScan->fHistoDelta[4]->GetAxis(6)->SetRangeUser(0.001,1);
    if (i==2) cosmicScan->fHistoDelta[4]->GetAxis(6)->SetRangeUser(-1,-0.001);
    hisRes  = (TH1*)GetFit2D(4,7,kTRUE)->Clone();
    hisMean = (TH1*)GetFit2D(4,7,kFALSE)->Clone();
    hisMean->SetName(Form("#Delta_{1/p_{t}} %s",chsign[i]));
    hisRes->SetName(Form("#sigma_{1/p_{t}} %s",chsign[i]));
    hisMean->SetTitle(Form("#Delta_{1/p_{t}} %s",chsign[i]));
    hisRes->SetTitle(Form("#sigma_{1/p_{t}} %s",chsign[i]));

    hisRes->SetMarkerStyle(20+i);
    hisMean->SetMarkerStyle(20+i);
    hisMean->SetMarkerColor(colors[i]);
    hisRes->SetMarkerColor(colors[i]);
    hisRes->SetMaximum(0.02);
    hisRes->SetMinimum(-0.0);
    hisMean->SetMaximum(0.02);
    hisMean->SetMinimum(-0.02);
    hisRes->SetYTitle("#sigma_{1/pt} (1/GeV)");
    hisMean->SetYTitle("#Delta_{1/pt} (1/GeV)");
    hisMean->SetXTitle("p_{t} (GeV)");
    hisRes->SetXTitle("p_{t} (GeV)");
    hisRes->GetXaxis()->SetRangeUser(0,50);
    hisMean->GetXaxis()->SetRangeUser(0,50);      
    cptRes->cd(2); 
    hisRes->Draw("same");
    if (i==0) hisRes->Draw("");
    cptRes->cd(1);
    hisMean->Draw("same");
    if (i==0) hisMean->Draw("");
    legend->AddEntry(hisMean);
  }
  legend->Draw();
  if (array) array->AddLast(cptRes);
}






void MakePlotPosY(TObjArray * array){
  //
  //
  TCanvas *cptRes = new TCanvas("TPCPosResolY","TPCPosResolY",900,600);
  cptRes->Divide(2,1);
  SetStylePad(cptRes->cd(1));
  SetStylePad(cptRes->cd(2));
  cptRes->cd(1);
  TLegend *legend = new TLegend(0.2,0.7,0.6,0.9,"");

  //
  TH1 * hisRes=0;
  TH1 * hisMean=0;
  for (Int_t i=0; i<3; i++){
    if (i==1) cosmicScan->fHistoDelta[0]->GetAxis(6)->SetRangeUser(0.0001,1);
    if (i==2) cosmicScan->fHistoDelta[0]->GetAxis(6)->SetRangeUser(-1,-0.0001);
    if (i==0) cosmicScan->fHistoDelta[0]->GetAxis(6)->SetRangeUser(-1,1);
    hisRes  = (TH1*)GetFit2D(0,7,kTRUE)->Clone();
    hisMean = (TH1*)GetFit2D(0,7,kFALSE)->Clone();
    hisMean->SetName(Form("#Delta_{r#phi} %s",chsign[i]));
    hisRes->SetName(Form("#sigma_{r#phi} %s",chsign[i]));
    hisMean->SetTitle(Form("#Delta_{r#phi} %s",chsign[i]));
    hisRes->SetTitle(Form("#sigma_{r#phi} %s",chsign[i]));

    hisRes->SetMarkerStyle(20+i);
    hisMean->SetMarkerStyle(20+i);
    hisMean->SetMarkerColor(colors[i]);
    hisRes->SetMarkerColor(colors[i]);
    
    //
    hisRes->SetMaximum(0.4);
    hisRes->SetMinimum(0.0);
    hisMean->SetMaximum(0.4);
    hisMean->SetMinimum(-0.4);
    hisRes->SetName("Y resol");
    hisRes->SetName("Y resolution");
    hisRes->SetYTitle("#sigma_{y} (cm)");
    hisMean->SetYTitle("#Delta_{y} (cm)");
    hisRes->GetXaxis()->SetRangeUser(0,50);
    hisMean->GetXaxis()->SetRangeUser(0,50);  
    cptRes->cd(2); 
    hisRes->Draw("same");
    if (i==0) hisRes->Draw("");
    cptRes->cd(1);
    hisMean->Draw("same");
    if (i==0) hisMean->Draw("");
    legend->AddEntry(hisMean);   
  }
  legend->Draw();
  if (array) array->AddLast(cptRes);
}

void MakePlotSnp(TObjArray * array){
  //
  //
  TCanvas *cptRes = new TCanvas("TPCSnp","TPCSnp",900,600);
  cptRes->Divide(2,1);
  SetStylePad(cptRes->cd(1));
  SetStylePad(cptRes->cd(2));
  cptRes->cd(1);
  TLegend *legend = new TLegend(0.2,0.7,0.6,0.9,"");

  //
  TH1 * hisRes=0;
  TH1 * hisMean=0;
  for (Int_t i=0; i<3; i++){
    if (i==1) cosmicScan->fHistoDelta[2]->GetAxis(6)->SetRangeUser(0.0001,1);
    if (i==2) cosmicScan->fHistoDelta[2]->GetAxis(6)->SetRangeUser(-1,-0.0001);
    if (i==0) cosmicScan->fHistoDelta[2]->GetAxis(6)->SetRangeUser(-1,1);
    hisRes  = (TH1*)GetFit2D(2,7,kTRUE)->Clone();
    hisMean = (TH1*)GetFit2D(2,7,kFALSE)->Clone();
    hisMean->SetName(Form("#Delta_{#phi} %s",chsign[i]));
    hisRes->SetName(Form("#sigma_{#phi} %s",chsign[i]));
    hisMean->SetTitle(Form("#Delta_{#phi} %s",chsign[i]));
    hisRes->SetTitle(Form("#sigma_{#phi} %s",chsign[i]));

    hisRes->SetMarkerStyle(20+i);
    hisMean->SetMarkerStyle(20+i);
    hisMean->SetMarkerColor(colors[i]);
    hisRes->SetMarkerColor(colors[i]);
    
    //
    hisRes->SetMaximum(4);
    hisRes->SetMinimum(4);
    hisMean->SetMaximum(4);
    hisMean->SetMinimum(-4);
    hisRes->SetYTitle("#sigma_{#phi} (mrad)");
    hisMean->SetYTitle("#Delta_{#phi} (mrad)");
    hisRes->GetXaxis()->SetRangeUser(0,50);
    hisMean->GetXaxis()->SetRangeUser(0,50);  
    cptRes->cd(2); 
    hisRes->Draw("same");
    if (i==0) hisRes->Draw("");
    cptRes->cd(1);
    hisMean->Draw("same");
    if (i==0) hisMean->Draw("");
    legend->AddEntry(hisMean);   
  }
  legend->Draw();
  if (array) array->AddLast(cptRes);
}
void MakePlotTgl(TObjArray * array){
  //
  //
  TCanvas *cptRes = new TCanvas("TPCtgl","TPCtgl",900,600);
  cptRes->Divide(2,1);
  SetStylePad(cptRes->cd(1));
  SetStylePad(cptRes->cd(2));
  cptRes->cd(1);
  TLegend *legend = new TLegend(0.2,0.7,0.6,0.9,"");

  //
  TH1 * hisRes=0;
  TH1 * hisMean=0;
  for (Int_t i=0; i<3; i++){
    if (i==1) cosmicScan->fHistoDelta[3]->GetAxis(6)->SetRangeUser(0.0001,1);
    if (i==2) cosmicScan->fHistoDelta[3]->GetAxis(6)->SetRangeUser(-1,-0.0001);
    if (i==0) cosmicScan->fHistoDelta[3]->GetAxis(6)->SetRangeUser(-1,1);
    hisRes  = (TH1*)GetFit2D(3,7,kTRUE)->Clone();
    hisMean = (TH1*)GetFit2D(3,7,kFALSE)->Clone();
    hisMean->SetName(Form("#Delta_{#theta} %s",chsign[i]));
    hisRes->SetName(Form("#sigma_{#theta} %s",chsign[i]));
    hisMean->SetTitle(Form("#Delta_{#theta} %s",chsign[i]));
    hisRes->SetTitle(Form("#sigma_{#theta} %s",chsign[i]));

    hisRes->SetMarkerStyle(20+i);
    hisMean->SetMarkerStyle(20+i);
    hisMean->SetMarkerColor(colors[i]);
    hisRes->SetMarkerColor(colors[i]);
    
    //
    hisRes->SetMaximum(4);
    hisRes->SetMinimum(4);
    hisMean->SetMaximum(4);
    hisMean->SetMinimum(-4);
    hisRes->SetYTitle("#sigma_{#theta} (mrad)");
    hisMean->SetYTitle("#Delta_{#theta} (mrad)");
    hisRes->GetXaxis()->SetRangeUser(0,50);
    hisMean->GetXaxis()->SetRangeUser(0,50);  
    cptRes->cd(2); 
    hisRes->Draw("same");
    if (i==0) hisRes->Draw("");
    cptRes->cd(1);
    hisMean->Draw("same");
    if (i==0) hisMean->Draw("");
    legend->AddEntry(hisMean);   
  }
  legend->Draw();
  if (array) array->AddLast(cptRes);
}

void MakePlotPosZ(TObjArray * array){
  //
  //
  TCanvas *cptRes = new TCanvas("TPCPosResolZ","TPCPosResolZ",900,600);
  cptRes->Divide(2,1);
  SetStylePad(cptRes->cd(1));
  SetStylePad(cptRes->cd(2));
  cptRes->cd(1);
  TLegend *legend = new TLegend(0.2,0.7,0.6,0.9,"");

  //
  TH1 * hisRes=0;
  TH1 * hisMean=0;
  for (Int_t i=0; i<3; i++){
    if (i==1) cosmicScan->fHistoDelta[1]->GetAxis(6)->SetRangeUser(0.001,1.);
    if (i==2) cosmicScan->fHistoDelta[1]->GetAxis(6)->SetRangeUser(-1,-0.001);
    if (i==0) cosmicScan->fHistoDelta[1]->GetAxis(6)->SetRangeUser(-1,1);
    
    hisRes  = (TH1*)GetFit2D(1,7,kTRUE)->Clone();
    hisMean = (TH1*)GetFit2D(1,7,kFALSE)->Clone();   
    hisMean->SetName(Form("#Delta_{z} %s",chsign[i]));
    hisRes->SetName(Form("#sigma_{z} %s",chsign[i]));
    hisMean->SetTitle(Form("#Delta_{z} %s",chsign[i]));
    hisRes->SetTitle(Form("#sigma_{z} %s",chsign[i]));


    hisRes->SetMaximum(0.4);
    hisRes->SetMinimum(0.0);
    hisMean->SetMaximum(0.2);
    hisMean->SetMinimum(-0.2); 
    hisRes->SetMarkerStyle(20);
    hisMean->SetMarkerStyle(20);
    hisRes->SetMarkerColor(colors[i]);
    hisMean->SetMarkerColor(colors[i]);
 
    hisRes->SetName("Z resol");
    hisRes->SetName("Z resolution");
    hisRes->SetYTitle("#sigma_{z} (cm)");
    hisMean->SetYTitle("#Delta_{z} (cm)");
    hisRes->GetXaxis()->SetRangeUser(0,50);
    hisMean->GetXaxis()->SetRangeUser(0,50);  
    cptRes->cd(2); 
    hisRes->Draw("same");
    if (i==0) hisRes->Draw();
    cptRes->cd(1);
    hisMean->Draw("same");
    if (i==0) hisMean->Draw();
    legend->AddEntry(hisMean);
  }
  legend->Draw();
  if (array) array->AddLast(cptRes);
}


void  MakeDefaultPlots(){
  //
  //
  //
  gStyle->SetOptStat(1100);
  DrawStat(0,picArray);
  gStyle->SetOptStat(0);
  MakePlotPosY(picArray);
  MakePlotPosZ(picArray);
  MakePlotSnp(picArray);
  MakePlotTgl(picArray);
  MakePlotP4(picArray);
  MakePlotPt(picArray);
  //

  TFile f("cosmicPlots.root","recreate");
  picArray->Write("CosmicPlots",TObject::kSingleKey);
  f.Close();
  TPostScript *ps=new TPostScript("cosmicPerformance.ps", 112);
  ps->NewPage();
  for (Int_t ipad=0;ipad<picArray->GetEntries();ipad++){
    TCanvas *c =dynamic_cast<TCanvas*> (picArray->At(ipad));
    if (c) {
      c->Draw();
      c->Update();
      ps->NewPage();
    }
  } 
  ps->Close();
  delete ps;
}
 CalibCosmic.C:1
 CalibCosmic.C:2
 CalibCosmic.C:3
 CalibCosmic.C:4
 CalibCosmic.C:5
 CalibCosmic.C:6
 CalibCosmic.C:7
 CalibCosmic.C:8
 CalibCosmic.C:9
 CalibCosmic.C:10
 CalibCosmic.C:11
 CalibCosmic.C:12
 CalibCosmic.C:13
 CalibCosmic.C:14
 CalibCosmic.C:15
 CalibCosmic.C:16
 CalibCosmic.C:17
 CalibCosmic.C:18
 CalibCosmic.C:19
 CalibCosmic.C:20
 CalibCosmic.C:21
 CalibCosmic.C:22
 CalibCosmic.C:23
 CalibCosmic.C:24
 CalibCosmic.C:25
 CalibCosmic.C:26
 CalibCosmic.C:27
 CalibCosmic.C:28
 CalibCosmic.C:29
 CalibCosmic.C:30
 CalibCosmic.C:31
 CalibCosmic.C:32
 CalibCosmic.C:33
 CalibCosmic.C:34
 CalibCosmic.C:35
 CalibCosmic.C:36
 CalibCosmic.C:37
 CalibCosmic.C:38
 CalibCosmic.C:39
 CalibCosmic.C:40
 CalibCosmic.C:41
 CalibCosmic.C:42
 CalibCosmic.C:43
 CalibCosmic.C:44
 CalibCosmic.C:45
 CalibCosmic.C:46
 CalibCosmic.C:47
 CalibCosmic.C:48
 CalibCosmic.C:49
 CalibCosmic.C:50
 CalibCosmic.C:51
 CalibCosmic.C:52
 CalibCosmic.C:53
 CalibCosmic.C:54
 CalibCosmic.C:55
 CalibCosmic.C:56
 CalibCosmic.C:57
 CalibCosmic.C:58
 CalibCosmic.C:59
 CalibCosmic.C:60
 CalibCosmic.C:61
 CalibCosmic.C:62
 CalibCosmic.C:63
 CalibCosmic.C:64
 CalibCosmic.C:65
 CalibCosmic.C:66
 CalibCosmic.C:67
 CalibCosmic.C:68
 CalibCosmic.C:69
 CalibCosmic.C:70
 CalibCosmic.C:71
 CalibCosmic.C:72
 CalibCosmic.C:73
 CalibCosmic.C:74
 CalibCosmic.C:75
 CalibCosmic.C:76
 CalibCosmic.C:77
 CalibCosmic.C:78
 CalibCosmic.C:79
 CalibCosmic.C:80
 CalibCosmic.C:81
 CalibCosmic.C:82
 CalibCosmic.C:83
 CalibCosmic.C:84
 CalibCosmic.C:85
 CalibCosmic.C:86
 CalibCosmic.C:87
 CalibCosmic.C:88
 CalibCosmic.C:89
 CalibCosmic.C:90
 CalibCosmic.C:91
 CalibCosmic.C:92
 CalibCosmic.C:93
 CalibCosmic.C:94
 CalibCosmic.C:95
 CalibCosmic.C:96
 CalibCosmic.C:97
 CalibCosmic.C:98
 CalibCosmic.C:99
 CalibCosmic.C:100
 CalibCosmic.C:101
 CalibCosmic.C:102
 CalibCosmic.C:103
 CalibCosmic.C:104
 CalibCosmic.C:105
 CalibCosmic.C:106
 CalibCosmic.C:107
 CalibCosmic.C:108
 CalibCosmic.C:109
 CalibCosmic.C:110
 CalibCosmic.C:111
 CalibCosmic.C:112
 CalibCosmic.C:113
 CalibCosmic.C:114
 CalibCosmic.C:115
 CalibCosmic.C:116
 CalibCosmic.C:117
 CalibCosmic.C:118
 CalibCosmic.C:119
 CalibCosmic.C:120
 CalibCosmic.C:121
 CalibCosmic.C:122
 CalibCosmic.C:123
 CalibCosmic.C:124
 CalibCosmic.C:125
 CalibCosmic.C:126
 CalibCosmic.C:127
 CalibCosmic.C:128
 CalibCosmic.C:129
 CalibCosmic.C:130
 CalibCosmic.C:131
 CalibCosmic.C:132
 CalibCosmic.C:133
 CalibCosmic.C:134
 CalibCosmic.C:135
 CalibCosmic.C:136
 CalibCosmic.C:137
 CalibCosmic.C:138
 CalibCosmic.C:139
 CalibCosmic.C:140
 CalibCosmic.C:141
 CalibCosmic.C:142
 CalibCosmic.C:143
 CalibCosmic.C:144
 CalibCosmic.C:145
 CalibCosmic.C:146
 CalibCosmic.C:147
 CalibCosmic.C:148
 CalibCosmic.C:149
 CalibCosmic.C:150
 CalibCosmic.C:151
 CalibCosmic.C:152
 CalibCosmic.C:153
 CalibCosmic.C:154
 CalibCosmic.C:155
 CalibCosmic.C:156
 CalibCosmic.C:157
 CalibCosmic.C:158
 CalibCosmic.C:159
 CalibCosmic.C:160
 CalibCosmic.C:161
 CalibCosmic.C:162
 CalibCosmic.C:163
 CalibCosmic.C:164
 CalibCosmic.C:165
 CalibCosmic.C:166
 CalibCosmic.C:167
 CalibCosmic.C:168
 CalibCosmic.C:169
 CalibCosmic.C:170
 CalibCosmic.C:171
 CalibCosmic.C:172
 CalibCosmic.C:173
 CalibCosmic.C:174
 CalibCosmic.C:175
 CalibCosmic.C:176
 CalibCosmic.C:177
 CalibCosmic.C:178
 CalibCosmic.C:179
 CalibCosmic.C:180
 CalibCosmic.C:181
 CalibCosmic.C:182
 CalibCosmic.C:183
 CalibCosmic.C:184
 CalibCosmic.C:185
 CalibCosmic.C:186
 CalibCosmic.C:187
 CalibCosmic.C:188
 CalibCosmic.C:189
 CalibCosmic.C:190
 CalibCosmic.C:191
 CalibCosmic.C:192
 CalibCosmic.C:193
 CalibCosmic.C:194
 CalibCosmic.C:195
 CalibCosmic.C:196
 CalibCosmic.C:197
 CalibCosmic.C:198
 CalibCosmic.C:199
 CalibCosmic.C:200
 CalibCosmic.C:201
 CalibCosmic.C:202
 CalibCosmic.C:203
 CalibCosmic.C:204
 CalibCosmic.C:205
 CalibCosmic.C:206
 CalibCosmic.C:207
 CalibCosmic.C:208
 CalibCosmic.C:209
 CalibCosmic.C:210
 CalibCosmic.C:211
 CalibCosmic.C:212
 CalibCosmic.C:213
 CalibCosmic.C:214
 CalibCosmic.C:215
 CalibCosmic.C:216
 CalibCosmic.C:217
 CalibCosmic.C:218
 CalibCosmic.C:219
 CalibCosmic.C:220
 CalibCosmic.C:221
 CalibCosmic.C:222
 CalibCosmic.C:223
 CalibCosmic.C:224
 CalibCosmic.C:225
 CalibCosmic.C:226
 CalibCosmic.C:227
 CalibCosmic.C:228
 CalibCosmic.C:229
 CalibCosmic.C:230
 CalibCosmic.C:231
 CalibCosmic.C:232
 CalibCosmic.C:233
 CalibCosmic.C:234
 CalibCosmic.C:235
 CalibCosmic.C:236
 CalibCosmic.C:237
 CalibCosmic.C:238
 CalibCosmic.C:239
 CalibCosmic.C:240
 CalibCosmic.C:241
 CalibCosmic.C:242
 CalibCosmic.C:243
 CalibCosmic.C:244
 CalibCosmic.C:245
 CalibCosmic.C:246
 CalibCosmic.C:247
 CalibCosmic.C:248
 CalibCosmic.C:249
 CalibCosmic.C:250
 CalibCosmic.C:251
 CalibCosmic.C:252
 CalibCosmic.C:253
 CalibCosmic.C:254
 CalibCosmic.C:255
 CalibCosmic.C:256
 CalibCosmic.C:257
 CalibCosmic.C:258
 CalibCosmic.C:259
 CalibCosmic.C:260
 CalibCosmic.C:261
 CalibCosmic.C:262
 CalibCosmic.C:263
 CalibCosmic.C:264
 CalibCosmic.C:265
 CalibCosmic.C:266
 CalibCosmic.C:267
 CalibCosmic.C:268
 CalibCosmic.C:269
 CalibCosmic.C:270
 CalibCosmic.C:271
 CalibCosmic.C:272
 CalibCosmic.C:273
 CalibCosmic.C:274
 CalibCosmic.C:275
 CalibCosmic.C:276
 CalibCosmic.C:277
 CalibCosmic.C:278
 CalibCosmic.C:279
 CalibCosmic.C:280
 CalibCosmic.C:281
 CalibCosmic.C:282
 CalibCosmic.C:283
 CalibCosmic.C:284
 CalibCosmic.C:285
 CalibCosmic.C:286
 CalibCosmic.C:287
 CalibCosmic.C:288
 CalibCosmic.C:289
 CalibCosmic.C:290
 CalibCosmic.C:291
 CalibCosmic.C:292
 CalibCosmic.C:293
 CalibCosmic.C:294
 CalibCosmic.C:295
 CalibCosmic.C:296
 CalibCosmic.C:297
 CalibCosmic.C:298
 CalibCosmic.C:299
 CalibCosmic.C:300
 CalibCosmic.C:301
 CalibCosmic.C:302
 CalibCosmic.C:303
 CalibCosmic.C:304
 CalibCosmic.C:305
 CalibCosmic.C:306
 CalibCosmic.C:307
 CalibCosmic.C:308
 CalibCosmic.C:309
 CalibCosmic.C:310
 CalibCosmic.C:311
 CalibCosmic.C:312
 CalibCosmic.C:313
 CalibCosmic.C:314
 CalibCosmic.C:315
 CalibCosmic.C:316
 CalibCosmic.C:317
 CalibCosmic.C:318
 CalibCosmic.C:319
 CalibCosmic.C:320
 CalibCosmic.C:321
 CalibCosmic.C:322
 CalibCosmic.C:323
 CalibCosmic.C:324
 CalibCosmic.C:325
 CalibCosmic.C:326
 CalibCosmic.C:327
 CalibCosmic.C:328
 CalibCosmic.C:329
 CalibCosmic.C:330
 CalibCosmic.C:331
 CalibCosmic.C:332
 CalibCosmic.C:333
 CalibCosmic.C:334
 CalibCosmic.C:335
 CalibCosmic.C:336
 CalibCosmic.C:337
 CalibCosmic.C:338
 CalibCosmic.C:339
 CalibCosmic.C:340
 CalibCosmic.C:341
 CalibCosmic.C:342
 CalibCosmic.C:343
 CalibCosmic.C:344
 CalibCosmic.C:345
 CalibCosmic.C:346
 CalibCosmic.C:347
 CalibCosmic.C:348
 CalibCosmic.C:349
 CalibCosmic.C:350
 CalibCosmic.C:351
 CalibCosmic.C:352
 CalibCosmic.C:353
 CalibCosmic.C:354
 CalibCosmic.C:355
 CalibCosmic.C:356
 CalibCosmic.C:357
 CalibCosmic.C:358
 CalibCosmic.C:359
 CalibCosmic.C:360
 CalibCosmic.C:361
 CalibCosmic.C:362
 CalibCosmic.C:363
 CalibCosmic.C:364
 CalibCosmic.C:365
 CalibCosmic.C:366
 CalibCosmic.C:367
 CalibCosmic.C:368
 CalibCosmic.C:369
 CalibCosmic.C:370
 CalibCosmic.C:371
 CalibCosmic.C:372
 CalibCosmic.C:373
 CalibCosmic.C:374
 CalibCosmic.C:375
 CalibCosmic.C:376
 CalibCosmic.C:377
 CalibCosmic.C:378
 CalibCosmic.C:379
 CalibCosmic.C:380
 CalibCosmic.C:381
 CalibCosmic.C:382
 CalibCosmic.C:383
 CalibCosmic.C:384
 CalibCosmic.C:385
 CalibCosmic.C:386
 CalibCosmic.C:387
 CalibCosmic.C:388
 CalibCosmic.C:389
 CalibCosmic.C:390
 CalibCosmic.C:391
 CalibCosmic.C:392
 CalibCosmic.C:393
 CalibCosmic.C:394
 CalibCosmic.C:395
 CalibCosmic.C:396
 CalibCosmic.C:397
 CalibCosmic.C:398
 CalibCosmic.C:399
 CalibCosmic.C:400
 CalibCosmic.C:401
 CalibCosmic.C:402
 CalibCosmic.C:403
 CalibCosmic.C:404
 CalibCosmic.C:405
 CalibCosmic.C:406
 CalibCosmic.C:407
 CalibCosmic.C:408
 CalibCosmic.C:409
 CalibCosmic.C:410
 CalibCosmic.C:411
 CalibCosmic.C:412
 CalibCosmic.C:413
 CalibCosmic.C:414
 CalibCosmic.C:415
 CalibCosmic.C:416
 CalibCosmic.C:417
 CalibCosmic.C:418
 CalibCosmic.C:419
 CalibCosmic.C:420
 CalibCosmic.C:421
 CalibCosmic.C:422
 CalibCosmic.C:423
 CalibCosmic.C:424
 CalibCosmic.C:425
 CalibCosmic.C:426
 CalibCosmic.C:427
 CalibCosmic.C:428
 CalibCosmic.C:429
 CalibCosmic.C:430
 CalibCosmic.C:431
 CalibCosmic.C:432
 CalibCosmic.C:433
 CalibCosmic.C:434
 CalibCosmic.C:435
 CalibCosmic.C:436
 CalibCosmic.C:437
 CalibCosmic.C:438
 CalibCosmic.C:439
 CalibCosmic.C:440
 CalibCosmic.C:441
 CalibCosmic.C:442
 CalibCosmic.C:443
 CalibCosmic.C:444
 CalibCosmic.C:445
 CalibCosmic.C:446
 CalibCosmic.C:447
 CalibCosmic.C:448
 CalibCosmic.C:449
 CalibCosmic.C:450
 CalibCosmic.C:451
 CalibCosmic.C:452
 CalibCosmic.C:453
 CalibCosmic.C:454
 CalibCosmic.C:455
 CalibCosmic.C:456
 CalibCosmic.C:457
 CalibCosmic.C:458
 CalibCosmic.C:459
 CalibCosmic.C:460
 CalibCosmic.C:461
 CalibCosmic.C:462
 CalibCosmic.C:463
 CalibCosmic.C:464
 CalibCosmic.C:465
 CalibCosmic.C:466
 CalibCosmic.C:467
 CalibCosmic.C:468
 CalibCosmic.C:469
 CalibCosmic.C:470
 CalibCosmic.C:471
 CalibCosmic.C:472
 CalibCosmic.C:473
 CalibCosmic.C:474
 CalibCosmic.C:475
 CalibCosmic.C:476
 CalibCosmic.C:477
 CalibCosmic.C:478
 CalibCosmic.C:479
 CalibCosmic.C:480
 CalibCosmic.C:481
 CalibCosmic.C:482
 CalibCosmic.C:483
 CalibCosmic.C:484
 CalibCosmic.C:485
 CalibCosmic.C:486
 CalibCosmic.C:487
 CalibCosmic.C:488
 CalibCosmic.C:489
 CalibCosmic.C:490
 CalibCosmic.C:491
 CalibCosmic.C:492
 CalibCosmic.C:493
 CalibCosmic.C:494
 CalibCosmic.C:495
 CalibCosmic.C:496
 CalibCosmic.C:497
 CalibCosmic.C:498
 CalibCosmic.C:499
 CalibCosmic.C:500
 CalibCosmic.C:501
 CalibCosmic.C:502
 CalibCosmic.C:503
 CalibCosmic.C:504
 CalibCosmic.C:505
 CalibCosmic.C:506
 CalibCosmic.C:507
 CalibCosmic.C:508
 CalibCosmic.C:509
 CalibCosmic.C:510
 CalibCosmic.C:511
 CalibCosmic.C:512
 CalibCosmic.C:513
 CalibCosmic.C:514
 CalibCosmic.C:515
 CalibCosmic.C:516
 CalibCosmic.C:517
 CalibCosmic.C:518
 CalibCosmic.C:519
 CalibCosmic.C:520
 CalibCosmic.C:521
 CalibCosmic.C:522
 CalibCosmic.C:523
 CalibCosmic.C:524
 CalibCosmic.C:525
 CalibCosmic.C:526
 CalibCosmic.C:527
 CalibCosmic.C:528
 CalibCosmic.C:529
 CalibCosmic.C:530
 CalibCosmic.C:531
 CalibCosmic.C:532
 CalibCosmic.C:533
 CalibCosmic.C:534
 CalibCosmic.C:535
 CalibCosmic.C:536
 CalibCosmic.C:537
 CalibCosmic.C:538
 CalibCosmic.C:539
 CalibCosmic.C:540
 CalibCosmic.C:541
 CalibCosmic.C:542
 CalibCosmic.C:543
 CalibCosmic.C:544
 CalibCosmic.C:545
 CalibCosmic.C:546
 CalibCosmic.C:547
 CalibCosmic.C:548
 CalibCosmic.C:549
 CalibCosmic.C:550
 CalibCosmic.C:551
 CalibCosmic.C:552
 CalibCosmic.C:553
 CalibCosmic.C:554
 CalibCosmic.C:555
 CalibCosmic.C:556
 CalibCosmic.C:557
 CalibCosmic.C:558
 CalibCosmic.C:559
 CalibCosmic.C:560
 CalibCosmic.C:561
 CalibCosmic.C:562
 CalibCosmic.C:563
 CalibCosmic.C:564
 CalibCosmic.C:565
 CalibCosmic.C:566
 CalibCosmic.C:567
 CalibCosmic.C:568
 CalibCosmic.C:569
 CalibCosmic.C:570
 CalibCosmic.C:571
 CalibCosmic.C:572
 CalibCosmic.C:573
 CalibCosmic.C:574
 CalibCosmic.C:575
 CalibCosmic.C:576
 CalibCosmic.C:577
 CalibCosmic.C:578
 CalibCosmic.C:579
 CalibCosmic.C:580
 CalibCosmic.C:581
 CalibCosmic.C:582
 CalibCosmic.C:583
 CalibCosmic.C:584
 CalibCosmic.C:585
 CalibCosmic.C:586
 CalibCosmic.C:587
 CalibCosmic.C:588
 CalibCosmic.C:589
 CalibCosmic.C:590
 CalibCosmic.C:591
 CalibCosmic.C:592
 CalibCosmic.C:593
 CalibCosmic.C:594
 CalibCosmic.C:595
 CalibCosmic.C:596
 CalibCosmic.C:597
 CalibCosmic.C:598
 CalibCosmic.C:599
 CalibCosmic.C:600
 CalibCosmic.C:601
 CalibCosmic.C:602
 CalibCosmic.C:603
 CalibCosmic.C:604
 CalibCosmic.C:605
 CalibCosmic.C:606
 CalibCosmic.C:607
 CalibCosmic.C:608
 CalibCosmic.C:609
 CalibCosmic.C:610
 CalibCosmic.C:611
 CalibCosmic.C:612
 CalibCosmic.C:613
 CalibCosmic.C:614
 CalibCosmic.C:615
 CalibCosmic.C:616