Пример #1
0
void repositionStatbox(std::string name)
{
    // Reposition and resize statbox
    TH2F *h = (TH2F*)gDirectory->GetList()->FindObject(name.c_str());
    TPaveStats *st = (TPaveStats*)h->GetListOfFunctions()->FindObject("stats");
    st->SetX1NDC(0.63);
    st->SetY1NDC(0.72);
    st->SetX2NDC(0.99);
    st->SetY2NDC(0.99);
    st->Draw();
}
Пример #2
0
//------------------------------------------------------------------------------
// DrawIt
//------------------------------------------------------------------------------
void DrawIt(TString filename,
	    TString hname,
	    TString cname,
	    TString title)
{
  TFile* inputfile = TFile::Open("../AuxiliaryFilesWZXS8TeV/" + filename + ".root");

  TH2F* h = (TH2F*)inputfile->Get(hname)->Clone(cname);

  h->SetDirectory(0);

  inputfile->Close();

  TString name = h->GetName();

  TCanvas* canvas = new TCanvas(name, name, 600, 600);

  if (name.Contains("PR")) canvas->SetLogx();
  if (name.Contains("SF")) canvas->SetLogx();

  canvas->SetLeftMargin (0.9 * canvas->GetLeftMargin());
  canvas->SetRightMargin(3.5 * canvas->GetRightMargin());
  canvas->SetTopMargin  (1.2 * canvas->GetTopMargin());

  TH2FAxisFonts(h, "x", "p_{T} [GeV]");
  TH2FAxisFonts(h, "y", "#eta");

  h->Draw("colz");

  h->SetTitle("");

  DrawTLatex(42, 0.940, 0.976, _bigLabelSize, 33, title);

  if (!title.Contains("trigger")) {

    Double_t hmin = h->GetMinimum();
    Double_t hmax = h->GetMaximum();

    for (Int_t i=1; i<=h->GetNbinsX(); i++) {
      for (Int_t j=1; j<=h->GetNbinsY(); j++) {

	Double_t value = h->GetBinContent(i,j);

	Double_t ypos = h->GetYaxis()->GetBinCenter(j);
	Double_t xpos = h->GetXaxis()->GetBinCenter(i);
      
	if (gPad->GetLogx()) xpos = h->GetXaxis()->GetBinCenterLog(i);

	TLatex* latex = new TLatex(xpos, ypos, Form("%.2f", value));

	latex->SetTextAlign(   22);
	latex->SetTextFont (   42);
	latex->SetTextSize (0.027);

	if (value < hmin + 0.3*(hmax - hmin)) latex->SetTextColor(kWhite);
	
	latex->Draw();
      }
    }
  }


  // Set the palette font
  //----------------------------------------------------------------------------
  canvas->Update();

  TPaletteAxis* palette = (TPaletteAxis*)h->GetListOfFunctions()->FindObject("palette");

  palette->SetLabelFont(42);


  // Save the plot
  //----------------------------------------------------------------------------
  canvas->Update();
  
  canvas->Modified();

  canvas->GetFrame()->DrawClone();

  canvas->SaveAs("pdf/scale_factors/" + name + ".pdf");
  canvas->SaveAs("png/scale_factors/" + name + ".png");
}
Пример #3
0
void drawICmap(const string& wwwPath = "",
	       const string& eosPath = "", 
	       const string& dirName = "", 
	       const string& iterNumber = "", 
	       const string& tagName = "") {

  gStyle->SetPalette(1, 0);  // raibow palette                                                
  gStyle->SetNumberContours(50); // default is 20 

  string filename = "root://eoscms//eos/cms" + eosPath + dirName + "/" + iterNumber + "/" + tagName + "calibMap.root";

  TFile* f = TFile::Open(filename.c_str(),"READ");
  if (!f || !f->IsOpen()) {
    cout<<"*******************************"<<endl;
    cout<<"Error opening file \""<<filename<<"\".\nApplication will be terminated."<<endl;
    cout<<"*******************************"<<endl;
    exit(EXIT_FAILURE);
  }

  TH2F *mapEB = (TH2F*) f->Get("calibMap_EB");
  TH2F *h = NULL;
  h = (TH2F*) f->Get("calibMap_EEp");
  TH2F *mapEEp = (TH2F*) h->Clone();
  h = (TH2F*) f->Get("calibMap_EEm");
  TH2F *mapEEm = (TH2F*) h->Clone();

  if (!mapEB || !mapEEp || !mapEEm) {
    cout << "Error: could not get one or more histograms. End of programme" << endl;
    exit(EXIT_FAILURE);
  }

  TH2F *mapEB_new = new TH2F("mapEB_new","EB calib coefficients", 360, 0.5, 360.5, 171,-85.5,85.5 );

  // profile along ieta. ieta goea from -85 to 85, exluding 0, for a total of 170 non empty bins (they are 171 including ieta = 0 which is actually empty)
  // in the profile, ieta = 30 is the bin with x from 29.5 to 30.5
  // simila logic for profile along iphi
  TProfile * EB_ieta_profile = new TProfile("EB_ieta_profile","EB calib coefficients - i#eta profile",171,-85.5,85.5);
  TProfile * EB_iphi_profile = new TProfile("EB_iphi_profile","EB calib coefficients - i#phi profile",360,0.5,360.5);


  Int_t nbinsX = mapEB->GetNbinsX(); // ieta
  Int_t nbinsY = mapEB->GetNbinsY(); // iphi

  for (Int_t i = 1; i <= nbinsX; i++) {

      for (Int_t j = 1; j <= nbinsY; j++) {
	
	mapEB_new->Fill(j,(i-86.0),mapEB->GetBinContent(i,j));
	EB_ieta_profile->Fill((i-86.0),mapEB->GetBinContent(i,j));
	EB_iphi_profile->Fill(j,mapEB->GetBinContent(i,j));

      }

  }

  string wwwAllPath = wwwPath + dirName + "/" + iterNumber + "/2DMaps/";
  string name = "";
  TPaletteAxis *palette = NULL;

  //EB
  TCanvas *cEB = new TCanvas("cEB","IC map EB");
  mapEB_new->Draw("COLZ");
  mapEB_new->GetXaxis()->SetTitle("i #phi");
  mapEB_new->GetXaxis()->SetTitleSize(0.06);
  mapEB_new->GetXaxis()->SetTitleOffset(0.7);
  mapEB_new->GetYaxis()->SetTitle("i #eta");
  mapEB_new->GetYaxis()->SetTitleSize(0.06);
  mapEB_new->GetYaxis()->SetTitleOffset(0.8);
  mapEB_new->GetZaxis()->SetRangeUser(0.9,1.1);
  mapEB_new->SetStats(0);
  gPad->Update();
  palette = (TPaletteAxis*)mapEB_new->GetListOfFunctions()->FindObject("palette");
  // the following lines move the palette. Choose the values you need for the position.                                                                              
  palette->SetX1NDC(0.91);
  palette->SetX2NDC(0.94);
  gPad->Modified();
  gPad->Update();
  // end of palette fixes                                                                                                                                             
  name = wwwAllPath + "Barrel/IC_calibMapEB";
  cEB->SaveAs((name + ".pdf").c_str());
  cEB->SaveAs((name + ".png").c_str());

  TCanvas *cEB_ietaProfile = new TCanvas("cEB_ietaProfile","IC map EB - i#eta profile");
  EB_ieta_profile->Draw("HIST");
  EB_ieta_profile->GetXaxis()->SetTitle("i #eta");
  EB_ieta_profile->GetXaxis()->SetTitleSize(0.06);
  EB_ieta_profile->GetXaxis()->SetTitleOffset(0.7);
  EB_ieta_profile->GetYaxis()->SetTitle("IC");
  EB_ieta_profile->GetYaxis()->SetTitleSize(0.06);
  EB_ieta_profile->GetYaxis()->SetTitleOffset(0.8);
  // Double_t maxY = EB_ieta_profile->GetBinContent(EB_ieta_profile->GetMaximumBin());
  // Double_t scale_factor = 1.1;
  // Double_t minY = 999.9; // minimum would be 0, corresponding to ieta = 0; look for minimum excluding ieta = 0
  // for (Int_t ieta = -85; ieta<= 85; ieta++) {
  //   if (ieta == 0) continue;
  //   minY = (EB_ieta_profile->GetBinContent(ieta+86) < minY) ? EB_ieta_profile->GetBinContent(ieta+86) : minY;
  // }
  // Double_t offset = scale_factor * (maxY -minY); 
  // EB_ieta_profile->GetYaxis()->SetRangeUser(minY - offset, maxY + offset);
  EB_ieta_profile->GetYaxis()->SetRangeUser(0.89,0.99);
  EB_ieta_profile->SetStats(0);
  gPad->Update();
  name = wwwAllPath + "Barrel/IC_calibMapEB_ietaProfile";
  cEB_ietaProfile->SaveAs((name + ".pdf").c_str());
  cEB_ietaProfile->SaveAs((name + ".png").c_str());


  TCanvas *cEB_iphiProfile = new TCanvas("cEB_iphiProfile","IC map EB - i#phi profile");
  EB_iphi_profile->Draw("HIST");
  EB_iphi_profile->GetXaxis()->SetTitle("i #phi");
  EB_iphi_profile->GetXaxis()->SetTitleSize(0.06);
  EB_iphi_profile->GetXaxis()->SetTitleOffset(0.7);
  EB_iphi_profile->GetYaxis()->SetTitle("IC");
  EB_iphi_profile->GetYaxis()->SetTitleSize(0.06);
  EB_iphi_profile->GetYaxis()->SetTitleOffset(0.8);
  // maxY = EB_iphi_profile->GetBinContent(EB_iphi_profile->GetMaximumBin());
  // minY = EB_iphi_profile->GetBinContent(EB_iphi_profile->GetMinimumBin()); 
  // offset = scale_factor * (maxY -minY); 
  // EB_iphi_profile->GetYaxis()->SetRangeUser(minY - offset, maxY + offset);
  EB_iphi_profile->GetYaxis()->SetRangeUser(0.91,0.97);
  EB_iphi_profile->SetStats(0);
  gPad->Update();
  name = wwwAllPath + "Barrel/IC_calibMapEB_iphiProfile";
  cEB_iphiProfile->SaveAs((name + ".pdf").c_str());
  cEB_iphiProfile->SaveAs((name + ".png").c_str());


  //EE+
  TCanvas *cEEp = new TCanvas("cEEp","IC map EE+");
  mapEEp->Draw("COLZ");
  mapEEp->GetXaxis()->SetTitle("iX");
  mapEEp->GetXaxis()->SetTitleSize(0.06);
  mapEEp->GetXaxis()->SetTitleOffset(0.7);
  mapEEp->GetYaxis()->SetTitle("iY");
  mapEEp->GetYaxis()->SetTitleSize(0.06);
  mapEEp->GetYaxis()->SetTitleOffset(0.8);
  mapEEp->GetZaxis()->SetRangeUser(0.75,1.25);
  mapEEp->SetStats(0);
  gPad->Update();
  palette = (TPaletteAxis*)mapEEp->GetListOfFunctions()->FindObject("palette");
  // the following lines move the palette. Choose the values you need for the position.                    
  palette->SetX1NDC(0.91);
  palette->SetX2NDC(0.94);
  gPad->Modified();
  gPad->Update();
  // end of palette fixes                                    
  name = wwwAllPath + "Endcap/EEp/IC_calibMapEEp";
  cEEp->SaveAs((name + ".pdf").c_str());
  cEEp->SaveAs((name + ".png").c_str());

  //EE-
  TCanvas *cEEm = new TCanvas("cEEm","IC map EE-");
  mapEEm->Draw("COLZ");
  mapEEm->GetXaxis()->SetTitle("iX");
  mapEEm->GetXaxis()->SetTitleSize(0.06);
  mapEEm->GetXaxis()->SetTitleOffset(0.7);
  mapEEm->GetYaxis()->SetTitle("iY");
  mapEEm->GetYaxis()->SetTitleSize(0.06);
  mapEEm->GetYaxis()->SetTitleOffset(0.8);
  mapEEm->GetZaxis()->SetRangeUser(0.75,1.25);
  mapEEm->SetStats(0);
  gPad->Update();
  palette = (TPaletteAxis*)mapEEm->GetListOfFunctions()->FindObject("palette");
  // the following lines move the palette. Choose the values you need for the position.                    
  palette->SetX1NDC(0.91);
  palette->SetX2NDC(0.94);
  gPad->Modified();
  gPad->Update();
  // end of palette fixes                                    
  name = wwwAllPath + "Endcap/EEm/IC_calibMapEEm";
  cEEm->SaveAs((name + ".pdf").c_str());
  cEEm->SaveAs((name + ".png").c_str());

  


}
Пример #4
0
void PlotEvolutionsWIII(const TString &sim, UInt_t mask = 3, const TString &options="png") { 
  
#ifdef __CINT__  
  gSystem->Load("libptools.so");
#endif

  string imask = DecToBin(mask);
  cout << Form("\n Plotting Evolultion with mask: %s",imask.c_str()) << endl; 

  PGlobals::Initialize();
  
  // Palettes!
  gROOT->Macro("PPalettes.C");

  TString opt = options;
  
  // More makeup            
  Float_t margins[4] = {0.15,0.15,0.20,0.10};
  gStyle->SetPadLeftMargin(margins[0]);  // Margin left axis  
  gStyle->SetPadRightMargin(margins[2]);
  gStyle->SetPadTopMargin(margins[3]);  // Margin left axis  
  gStyle->SetPadBottomMargin(margins[1]);

  gStyle->SetPadTickX(0);
  gStyle->SetPadTickY(0);


  if(opt.Contains("grid")) {
    gStyle->SetPadGridX(1);
    gStyle->SetPadGridY(1);
  }

  // Load first simulation data (for instance)
  PData *pData = PData::Get(sim.Data());
  Double_t E0 = pData->GetPlasmaE0();
  
  Float_t maxEcross = -999.;
  Float_t minEcross = 999.;
  Float_t maxEextr  = -999.;
  Float_t minEextr  = 999.;
  Float_t maxEdephas  = -999.;
  Float_t minEdephas  = 999.;
 
  const Int_t Nfields = 2; // E_z, E_x 
  TH2F   *hEvsTime[Nfields];
  Int_t NCross[Nfields];
  TGraph **gEcross[Nfields]; 
  TGraph **gEextr[Nfields]; 
  TGraph **gEdephas[Nfields]; 
  TGraph *gTRatio;

  TH2F   *hFvsTime;
  TGraph **gFcross = NULL;
  TGraph **gFextr = NULL;

  TH2F   *hETvsTime;
  TGraph **gETcross = NULL;
  TGraph **gETextr = NULL;

  TH2F   *hVvsTime;
  TGraph **gVcross = NULL;
  TGraph **gVextr = NULL;

  const Int_t NAtoms = 3;
  char atNames[NAtoms][4] = {"H","He","He2"};
  TH2F   *hIonProbvsTime[NAtoms]; // For H, He and He+. 
  TGraph *gIonProb10[NAtoms];
  TGraph *gIonProb100[NAtoms];
  Float_t IonTh[NAtoms] = {33.8,92.75,234.96} ;  // GV/m
  // if(!opt.Contains("units")) 
  //   for(Int_t i=0;i<NAtoms;i++) IonTh[i]  /= ( E0 / (PUnits::GV/PUnits::m));

  char hName[24];
  char gName[24];
  
  TString filename;
  filename = Form("./%s/Plots/Evolutions/Evolutions-%s.root",sim.Data(),sim.Data());
  
  TFile  *ifile = (TFile*) gROOT->GetListOfFiles()->FindObject(filename.Data());
  if (!ifile) ifile = new TFile(filename,"READ");

  TH2F *hDen1DvsTime = NULL;
  sprintf(hName,"hDenvsTime_1"); 
  hDen1DvsTime = (TH2F*) ifile->Get(hName);

  TH2F *hRmsvsTime = NULL;
  sprintf(hName,"hRmsvsTime_1"); 
  hRmsvsTime = (TH2F*) ifile->Get(hName);
    
  for(Int_t i=0;i<Nfields;i++) {
    
    sprintf(hName,"hEvsTime_%i",i); 
    hEvsTime[i] = (TH2F*) ifile->Get(hName);
    if(!hEvsTime[i]) continue;
    
    cout << Form("ANALYZING FIELD %i ...",i) << endl;

    Int_t NTBins = hEvsTime[i]->GetNbinsX();
    for(Int_t it=NTBins;it>0;it--) {
      
      // 1D field at certain timestep "it".
      TH1F *hE1D = (TH1F*) hEvsTime[i]->ProjectionY("_py",it,it);
      
      Int_t MAXCROSS = 2;
      Float_t *Cross = new Float_t[MAXCROSS];
      Float_t *Extr = new Float_t[MAXCROSS];
      memset(Cross,0,sizeof(Float_t)*MAXCROSS);
      memset(Extr,0,sizeof(Float_t)*MAXCROSS);

      Int_t auxNcross = PGlobals::HCrossings(hE1D,Cross,Extr,MAXCROSS,0.,0.);
      // cout << Form("  -> Number of crossings for histogram \"%s\" : %i ",hE1D->GetName(),auxNcross) << endl;
      // for(Int_t ic=0;ic<auxNcross;ic++) {
      // 	cout << Form(" %2i:  cross = %6.4f  extreme = %6.4f", ic, Cross[ic], Extr[ic]) << endl; 
      // }
      
      if(it==NTBins) {
	NCross[i] = auxNcross;
	
	gEcross[i] = new TGraph*[NCross[i]];
	gEextr[i] = new TGraph*[NCross[i]];

	for(Int_t ic = 0;ic<NCross[i];ic++) {
	  gEcross[i][ic] = new TGraph(NTBins);
	  sprintf(gName,"gEcross_%i_%i",i,ic); 
	  gEcross[i][ic]->SetName(gName);
	  
	  gEextr[i][ic] = new TGraph(NTBins);
	  sprintf(gName,"gEextr_%i_%i",i,ic); 
	  gEextr[i][ic]->SetName(gName);
	}

      }

      Float_t time = hEvsTime[i]->GetXaxis()->GetBinCenter(it);
      // cout << Form("Time step %i (%.2f): %i crossings",it,time,NCross[i]) << endl;
     
      for(Int_t ic=0;ic<NCross[i];ic++) {
	// cout << Form("  - Adding %i crossing: cross = %6.4f extreme = %6.4f",ic,Cross[ic],Extr[ic]) << endl;
	
	gEcross[i][ic]->SetPoint(it-1,time,Cross[ic]);
	gEextr[i][ic]->SetPoint(it-1,time,Extr[ic]);
      }
      
    }

    
    // Calculate the max and min of every crossing.
    // Also calculates dephasing:
    gEdephas[i] = new TGraph*[NCross[i]];
    for(Int_t ic = 0;ic<NCross[i];ic++) {

      Int_t Npoints = gEcross[i][ic]->GetN();
      Double_t *yEcross = gEcross[i][ic]->GetY();
      Double_t *yEextr  = gEextr[i][ic]->GetY();
      Double_t *xEextr  = gEextr[i][ic]->GetX();
      
      Double_t *yEdephas = new Double_t[Npoints];
      for(Int_t j=0;j<Npoints;j++) {
	yEdephas[j] = yEcross[j] - yEcross[0];
      }
      gEdephas[i][ic] = new TGraph(Npoints,xEextr,yEdephas);
      sprintf(gName,"gEdephas_%i_%i",i,ic); 
      gEdephas[i][ic]->SetName(gName);
      
      for(Int_t j=0;j<Npoints;j++) {
	if(yEcross[j]>maxEcross)
	  maxEcross = yEcross[j];
	if(yEcross[j]<minEcross)
	  minEcross = yEcross[j];
	
	if(yEextr[j]>maxEextr)
	  maxEextr = yEextr[j];
	if(yEextr[j]<minEextr)
	  minEextr = yEextr[j];
      
	// Only takes into account the minimums of the accelerating field:
	if(ic%2 || i!=0) continue;
	if(yEdephas[j]>maxEdephas)
	  maxEdephas = yEdephas[j];
	if(yEdephas[j]<minEdephas)
	  minEdephas = yEdephas[j];
	
      }
    
    }
  }

  // Transformer ratio vs time:
  // Take the ratio of the minimum over the maximum of the first oscillation of the Ez.
  {
    Int_t Npoints = gEextr[0][1]->GetN();
    Double_t *TR = new Double_t[Npoints];
    Double_t *yExtrPrev = gEextr[0][0]->GetY();
    Double_t *yExtr = gEextr[0][1]->GetY();
    Double_t *xExtr = gEextr[0][1]->GetX();
    for(Int_t j=0;j<Npoints;j++) {
      TR[j] = TMath::Abs(yExtr[j]/yExtrPrev[j]);	
    }
    
    gTRatio = new TGraph(Npoints,xExtr,TR);
    sprintf(gName,"gTRatio"); 
    gTRatio->SetName(gName);
  }
  

  sprintf(hName,"hVvsTime"); 
  hVvsTime = (TH2F*) ifile->Get(hName);
  Int_t NVCross = 0;
  cout << Form("ANALYZING POTENTIAL") << endl;

  Int_t NTBins = hVvsTime->GetNbinsX();
  for(Int_t it=NTBins;it>0;it--) {
      
    // 1D field at certain timestep "it".
    TH1F *hV1D = (TH1F*) hVvsTime->ProjectionY("_py",it,it);
      
    Int_t MAXCROSS = 2;
    Float_t *Cross = new Float_t[MAXCROSS];
    Float_t *Extr = new Float_t[MAXCROSS];
    memset(Cross,0,sizeof(Float_t)*MAXCROSS);
    memset(Extr,0,sizeof(Float_t)*MAXCROSS);
    
    Int_t auxNcross = PGlobals::HCrossings(hV1D,Cross,Extr,MAXCROSS,0.,20.);
    // cout << Form("  -> Number of crossings for histogram \"%s\" : %i ",hV1D->GetName(),auxNcross) << endl;
    // for(Int_t ic=0;ic<auxNcross;ic++) {
    // 	cout << Form(" %2i:  cross = %6.4f  extreme = %6.4f", ic, Cross[ic], Extr[ic]) << endl; 
    // }
    
    if(it==NTBins) {
      NVCross = auxNcross;
	
      gVcross = new TGraph*[NVCross];
      gVextr = new TGraph*[NVCross];

      for(Int_t ic = 0;ic<NVCross;ic++) {
	gVcross[ic] = new TGraph(NTBins);
	sprintf(gName,"gVcross_%i",ic); 
	gVcross[ic]->SetName(gName);
	  
	gVextr[ic] = new TGraph(NTBins);
	sprintf(gName,"gVextr_%i",ic); 
	gVextr[ic]->SetName(gName);
      }

    }

    Float_t time = hVvsTime->GetXaxis()->GetBinCenter(it);
    // cout << Form("Time step %i (%.2f): %i crossings",it,time,NVCross) << endl;
     
    for(Int_t ic=0;ic<NVCross;ic++) {
      // cout << Form("  - Adding %i crossing: cross = %6.4f extreme = %6.4f",ic,Cross[ic],Extr[ic]) << endl;
	
      gVcross[ic]->SetPoint(it-1,time,Cross[ic]);
      gVextr[ic]->SetPoint(it-1,time,Extr[ic]);
    }
      
  }


  sprintf(hName,"hETotalvsTime"); 
  hETvsTime = (TH2F*) ifile->Get(hName);
  Int_t NETCross = 0;
  cout << Form("ANALYZING TOTAL ELECTRIC FIELD") << endl;

  NTBins = hETvsTime->GetNbinsX();
  for(Int_t it=NTBins;it>0;it--) {
      
    // 1D field at certain timestep "it".
    TH1F *hET1D = (TH1F*) hETvsTime->ProjectionY("_py",it,it);
      
    Int_t MAXCROSS = 2;
    Float_t *Cross = new Float_t[MAXCROSS];
    Float_t *Extr = new Float_t[MAXCROSS];
    memset(Cross,0,sizeof(Float_t)*MAXCROSS);
    memset(Extr,0,sizeof(Float_t)*MAXCROSS);

    Float_t baseline = 0.5;
    if(opt.Contains("units"))
      baseline *= E0 / (PUnits::GV/PUnits::m);
    
    Int_t auxNcross = PGlobals::HCrossings(hET1D,Cross,Extr,MAXCROSS,baseline,-999,-999,"cum");
    // cout << Form("  -> Number of crossings for histogram \"%s\" : %i ",hET1D->GetName(),auxNcross) << endl;
    // for(Int_t ic=0;ic<auxNcross;ic++) {
    // 	cout << Form(" %2i:  cross = %6.4f  extreme = %6.4f", ic, Cross[ic], Extr[ic]) << endl; 
    // }
    
    if(it==NTBins) {
      NETCross = auxNcross;
	
      gETcross = new TGraph*[NETCross];
      gETextr = new TGraph*[NETCross];

      for(Int_t ic = 0;ic<NETCross;ic++) {
	gETcross[ic] = new TGraph(NTBins);
	sprintf(gName,"gETcross_%i",ic); 
	gETcross[ic]->SetName(gName);
	  
	gETextr[ic] = new TGraph(NTBins);
	sprintf(gName,"gETextr_%i",ic); 
	gETextr[ic]->SetName(gName);
      }

    }

    Float_t time = hETvsTime->GetXaxis()->GetBinCenter(it);
    // if(it==1)
    //   cout << Form("Time step %i (%.2f): %i crossings",it,time,NETCross) << endl;
     
    for(Int_t ic=0;ic<NETCross;ic++) {
      //if(it==1)
      //	cout << Form("  - Adding %i crossing: cross = %6.4f extreme = %6.4f",ic,Cross[ic],Extr[ic]) << endl;
	
      gETcross[ic]->SetPoint(it-1,time,Cross[ic]);
      gETextr[ic]->SetPoint(it-1,time,Extr[ic]);
      

    }
    
  }

  sprintf(hName,"hFocusvsTime"); 
  hFvsTime = (TH2F*) ifile->Get(hName);
  Int_t NFCross = 0;
  cout << Form("ANALYZING FOCUSING") << endl;

  NTBins = hFvsTime->GetNbinsX();
  for(Int_t it=NTBins;it>0;it--) {
      
    // 1D field at certain timestep "it".
    TH1F *hF1D = (TH1F*) hFvsTime->ProjectionY("_py",it,it);
      
    Int_t MAXCROSS = 2;
    Float_t *Cross = new Float_t[MAXCROSS];
    Float_t *Extr = new Float_t[MAXCROSS];
    memset(Cross,0,sizeof(Float_t)*MAXCROSS);
    memset(Extr,0,sizeof(Float_t)*MAXCROSS);

    Int_t auxNcross = PGlobals::HCrossings(hF1D,Cross,Extr,MAXCROSS,0.,0.);
    // cout << Form("  -> Number of crossings for histogram \"%s\" : %i ",hF1D->GetName(),auxNcross) << endl;
    // for(Int_t ic=0;ic<auxNcross;ic++) {
    // 	cout << Form(" %2i:  cross = %6.4f  extreme = %6.4f", ic, Cross[ic], Extr[ic]) << endl; 
    // }
    
    if(it==NTBins) {
      NFCross = auxNcross;
	
      gFcross = new TGraph*[NFCross];
      gFextr = new TGraph*[NFCross];

      for(Int_t ic = 0;ic<NFCross;ic++) {
	gFcross[ic] = new TGraph(NTBins);
	sprintf(gName,"gFcross_%i",ic); 
	gFcross[ic]->SetName(gName);
	  
	gFextr[ic] = new TGraph(NTBins);
	sprintf(gName,"gFextr_%i",ic); 
	gFextr[ic]->SetName(gName);
      }

    }

    Float_t time = hFvsTime->GetXaxis()->GetBinCenter(it);
    // cout << Form("Time step %i (%.2f): %i crossings",it,time,NFCross) << endl;
     
    for(Int_t ic=0;ic<NFCross;ic++) {
      // cout << Form("  - Adding %i crossing: cross = %6.4f extreme = %6.4f",ic,Cross[ic],Extr[ic]) << endl;
	
      gFcross[ic]->SetPoint(it-1,time,Cross[ic]);
      gFextr[ic]->SetPoint(it-1,time,Extr[ic]);
      

    }
    
  }
  

  for(Int_t i=0;i<NAtoms;i++) {
    sprintf(hName,"hIonProbvsTime_%s",atNames[i]); 
    hIonProbvsTime[i] = (TH2F*) ifile->Get(hName);
    if(!hIonProbvsTime[i]) continue;
    
    cout << Form("ANALYZING Ionization probability %i ...",i) << endl;

    Int_t NTBins = hIonProbvsTime[i]->GetNbinsX();
    for(Int_t it=NTBins;it>0;it--) {
      
      // 1D field at certain timestep "it".
      TH1F *hIonProb1D = (TH1F*) hIonProbvsTime[i]->ProjectionY("_py",it,it);
      
      Int_t MAXCROSS = 2;
      Float_t *Cross = new Float_t[MAXCROSS];
      Float_t *Extr = new Float_t[MAXCROSS];
      memset(Cross,0,sizeof(Float_t)*MAXCROSS);
      memset(Extr,0,sizeof(Float_t)*MAXCROSS);
      
      Int_t auxNcross = PGlobals::HCrossings(hIonProb1D,Cross,Extr,MAXCROSS,10.0);

      if(it==NTBins) {
	gIonProb10[i] = new TGraph(NTBins);
	sprintf(gName,"gIonProb10_%i",i); 
	gIonProb10[i]->SetName(gName);
      }

      Float_t time = hIonProbvsTime[i]->GetXaxis()->GetBinCenter(it);
      gIonProb10[i]->SetPoint(it-1,time,Cross[0]);
     
      memset(Cross,0,sizeof(Float_t)*MAXCROSS);
      memset(Extr,0,sizeof(Float_t)*MAXCROSS);
      auxNcross = PGlobals::HCrossings(hIonProb1D,Cross,Extr,MAXCROSS,99.0);
      
      if(it==NTBins) {
	gIonProb100[i] = new TGraph(NTBins);
	sprintf(gName,"gIonProb100_%i",i); 
	gIonProb100[i]->SetName(gName);
      }
      
      gIonProb100[i]->SetPoint(it-1,time,Cross[0]);
    }
  }

  // Set the color of the different evolutions according to a palette
  // UInt_t np = 50;
  // PPalette * colorPalette = (PPalette*) gROOT->FindObject("colorPalette");
  // if(!colorPalette) {
  //   const UInt_t Number = 3;
  //   Double_t Red[Number] = { 1.00, 0.00, 0.00};
  //   Double_t Green[Number]  = { 0.00, 1.00, 0.00};
  //   Double_t Blue[Number]   = { 1.00, 0.00, 1.00};
  //   Double_t Length[Number] = { 0.00, 0.50, 1.00 };
  //   colorPalette = new PPalette("colorPalette");
  //   colorPalette->CreateGradientColorTable(Number,Length,Red,Green,Blue,np);
  // }
  
  // for(Int_t i=0;i<Nfields;i++) { 
  //   for(Int_t ic=0;ic<Ncross;ic++) {
  //     Float_t step = (np/Nosc);
  //     Int_t icolor = TMath::Nint( ((ic+1)/2) * step - 1 );
  //     gEextr[i][ic]->SetLineColor(colorPalette->GetColor(icolor));
  //     gEextr[i][ic]->SetLineWidth(2);
  //     gEdephas[i][ic]->SetLineColor(colorPalette->GetColor(icolor));
  //     gEdephas[i][ic]->SetLineWidth(2);
  //   }
  // }
  // --------------------------------------------------------------------------

  // Manual coloring:
  const Int_t NCOLORS = 5;
  //  Int_t colors[NCOLORS] = {kMagenta+2,kRed,kBlue,kYellow+2,kCyan+2};
  Int_t colors[NCOLORS] = {kGray+3,kGray+2,kGray+1,kGray};
  for(Int_t i=0;i<Nfields;i++) { 
    for(Int_t ic=0;ic<NCross[i];ic++) {

      if( !gEcross[i][ic] || !gEextr[i][ic] ) continue;
            
      Int_t index = ic/2;
      if(index>=NCOLORS) index = NCOLORS-1;
      gEcross[i][ic]->SetLineColor(colors[index]);
      gEextr[i][ic]->SetLineColor(colors[index]);
      gEextr[i][ic]->SetLineWidth(1);
      gEdephas[i][ic]->SetLineColor(colors[index]);
      gEdephas[i][ic]->SetLineWidth(1);

      // cout << "EEEOOO" << endl;
      // if(ic%2) { 
      // 	gEcross[i][ic]->SetLineStyle(2);
      // 	gEextr[i][ic]->SetLineStyle(2);
      // 	gEdephas[i][ic]->SetLineStyle(2);
      // } else {
      // 	gEcross[i][ic]->SetLineStyle(1);
      // 	gEextr[i][ic]->SetLineStyle(1);
      // 	gEdephas[i][ic]->SetLineStyle(1);
      // }
      
      
    }
  }


  for(Int_t ic = 0;ic<NFCross;ic++) {
    // Graph's attributes
    Int_t index = ic/2;
    if(index>=NCOLORS) index = NCOLORS-1;
    gFcross[ic]->SetLineColor(colors[index]);
    if(ic%2-1) { 
      gFcross[ic]->SetLineStyle(2);
      gFextr[ic]->SetLineStyle(2);
      
    } else {
      gFcross[ic]->SetLineStyle(1);
      gFextr[ic]->SetLineStyle(1);
    }
  }

  for(Int_t ic = 0;ic<NVCross;ic++) {
    // Graph's attributes
    Int_t index = ic/2;
    if(index>=NCOLORS) index = NCOLORS-1;
    gVcross[ic]->SetLineColor(colors[index]);
    gVcross[ic]->SetLineStyle(3);
    gVextr[ic]->SetLineStyle(1);
  }
  
  for(Int_t ic = 0;ic<NETCross;ic++) {
    // Graph's attributes
    Int_t index = ic/2;
    if(index>=NCOLORS) index = NCOLORS-1;
    gETcross[ic]->SetLineColor(colors[index]);
    if(ic%2-1) { 
      gETcross[ic]->SetLineStyle(2);
      gETextr[ic]->SetLineStyle(2);
      
    } else {
      gETcross[ic]->SetLineStyle(1);
      gETextr[ic]->SetLineStyle(1);
    }
  }
  
  for(Int_t i=0;i<NAtoms;i++) {
    gIonProb10[i]->SetLineStyle(2);
    gIonProb10[i]->SetLineColor(kGray+2);

    gIonProb100[i]->SetLineStyle(1);
    gIonProb100[i]->SetLineColor(kGray+2);
  }
  

  // Plotting
  // ------------------------------------------------------------
  
  // Canvas setup
  UInt_t NPad = BitCounter(mask);
  if(NPad==0) NPad = 1;
  Float_t ypadsize = 250;
  Float_t ymarginsize = 200;
  if(NPad==1) ypadsize = 300;
  Float_t ysize = ypadsize * NPad + ymarginsize; 
  Float_t boom = 1.2;
  if(opt.Contains("boom"))
    ysize *= boom;
  TCanvas *C = new TCanvas("C","Snapshot",1050,ysize);
  C->SetFillStyle(4000);

  UInt_t lineColor = kOrange+10;
  //UInt_t lineColor =  TColor::GetColor(196,30,78);
  
  // Setup Pad layout:
  TPad **pad = new TPad*[NPad];
  TH2F **hFrame = new TH2F*[NPad];
  Float_t bMargin = 0.12 * (950/ysize);
  Float_t tMargin = 0.04 * (950/ysize);
  Float_t lMargin = 0.14;
  Float_t rMargin = 0.18;
  Float_t mMargin = 0.015 * (950/ysize);
  Float_t pfactor = 1.0;
  if(opt.Contains("nomar"))
    bMargin = tMargin = lMargin = rMargin = mMargin = 0.0;
  if(NPad==1)
    PGlobals::CanvasPartition(C,NPad,lMargin,rMargin,bMargin,tMargin,mMargin);
  else
    PGlobals::CanvasAsymPartition(C,NPad,lMargin,rMargin,bMargin,tMargin,pfactor,mMargin);
 
  // Define the frames for plotting
  Int_t fonttype = 43;
  Int_t fontsize = 32;
  Int_t tfontsize = 38;
  Int_t txsize = tfontsize+6;
  Int_t lxsize = fontsize;
  Int_t tysize = tfontsize;
  Int_t lysize = fontsize-2;
  Int_t tzsize = tfontsize-4;
  Int_t lzsize = fontsize-2;
  Float_t txoffset = (250/ypadsize) * 2.4 / (950/ysize);
  Float_t lxoffset = 0.015;
  Float_t tyoffset = 1.2 / (950/ysize);
  Float_t lyoffset = 0.01;
  Float_t tzoffset = 1.4 / (950/ysize);
  Float_t lzoffset = 0.01;
  Float_t tylength = 0.015;
  Float_t txlength = 0.04;
  for(Int_t i=NPad-1;i>=0;i--) {
    char name[16];
    sprintf(name,"pad_%i",i);
    pad[i] = (TPad*) gROOT->FindObject(name);
    pad[i]->SetFrameLineWidth(2);  
    pad[i]->SetTickx(1);
    pad[i]->SetTicky(1);
    if(opt.Contains("trans"))
      pad[i]->SetFillStyle(4000);
    pad[i]->SetFrameFillStyle(4000);

    sprintf(name,"hFrame_%i",i);
    hFrame[i] = (TH2F*) gROOT->FindObject(name);
    if(hFrame[i]) delete hFrame[i];
    hFrame[i] = (TH2F*) hEvsTime[0]->Clone(name);
    hFrame[i]->Reset();
    
    Float_t xFactor = pad[NPad-1]->GetAbsWNDC()/pad[i]->GetAbsWNDC();
    Float_t yFactor = pad[NPad-1]->GetAbsHNDC()/pad[i]->GetAbsHNDC();

    // Format for y axis
    hFrame[i]->GetYaxis()->SetLabelFont(fonttype);
    hFrame[i]->GetYaxis()->SetLabelSize(lysize);
    hFrame[i]->GetYaxis()->SetLabelOffset(lyoffset);
    hFrame[i]->GetYaxis()->SetTitleFont(fonttype);
    hFrame[i]->GetYaxis()->SetTitleSize(tysize);
    hFrame[i]->GetYaxis()->SetTitleOffset(tyoffset);

    hFrame[i]->GetYaxis()->SetTickLength(xFactor*tylength/yFactor);

    // Format for x axis
    hFrame[i]->GetXaxis()->SetLabelFont(fonttype);
    hFrame[i]->GetXaxis()->SetLabelSize(lxsize);
    hFrame[i]->GetXaxis()->SetLabelOffset(lxoffset);
    hFrame[i]->GetXaxis()->SetTitleFont(fonttype);
    hFrame[i]->GetXaxis()->SetTitleSize(txsize);
    hFrame[i]->GetXaxis()->SetTitleOffset(txoffset);
    
    hFrame[i]->GetXaxis()->SetTickLength(yFactor*txlength/xFactor);      

    if(i>0) { // skip x axis labels except for the lowest one
      hFrame[i]->GetXaxis()->SetLabelSize(0.0);
      hFrame[i]->GetXaxis()->SetTitleSize(0.0);
    }

    if(opt.Contains("nomar")) {
      hFrame[i]->GetYaxis()->SetTickLength(0.0);
      hFrame[i]->GetXaxis()->SetTickLength(0.0);      
    }

    // Labels for the frames

  }

  // Access to color Palettes 
  TExec *exPlasma = new TExec("exPlasma","plasmaPalette->cd();");
  TExec *exElec   = new TExec("exElec","electron0Palette->cd();");
  TExec *exHot    = new TExec("exHot","hotPalette->cd();");
  TExec *exField  = new TExec("exField","rbowwhitePalette->cd();");
  TExec *exFieldT = new TExec("exFieldT","red0Palette->cd();");
  TExec *exIonP   = new TExec("exIonP","redelectron0Palette->cd();");
  TExec *exPot    = new TExec("exPot","rbowinvPalette->cd();");

  

  // Actual Plotting!
  // ------------------------------------------------------------

  C->cd(0);

  Float_t x1,x2,y1,y2;
  Float_t gap = 0.01;
  TPaletteAxis *palette = NULL;
  UInt_t ip = NPad-1;

  if(mask & 0x1) {

    pad[ip]->Draw();
    pad[ip]->cd(); 
    if(opt.Contains("logz")) {
      pad[ip]->SetLogz(1);
    } else {
      pad[ip]->SetLogz(0);
    }

    hFrame[ip]->Draw("col");

    //  hDen1DvsTime->GetZaxis()->SetNdivisions(503);
    hDen1DvsTime->GetZaxis()->SetTitleFont(fonttype);
    Float_t xFactor = pad[0]->GetAbsWNDC()/pad[ip]->GetAbsWNDC();
    Float_t yFactor = pad[0]->GetAbsHNDC()/pad[ip]->GetAbsHNDC();
    hDen1DvsTime->GetZaxis()->SetTickLength(xFactor*tylength/yFactor);
    
    exElec->Draw();
    hDen1DvsTime->Draw("colz same");

    pad[ip]->Update();
  
    y1 = pad[ip]->GetBottomMargin();
    y2 = 1 - pad[ip]->GetTopMargin();
    x1 = pad[ip]->GetLeftMargin();
    x2 = 1 - pad[ip]->GetRightMargin();
  
    palette = (TPaletteAxis*) hDen1DvsTime->GetListOfFunctions()->FindObject("palette");  
    if(palette) {
      palette->SetY2NDC(y2 - gap);
      palette->SetY1NDC(y1 + gap);
      palette->SetX1NDC(x2 + 0.005);
      palette->SetX2NDC(x2 + 0.03);
      palette->SetTitleOffset(tzoffset);
      palette->SetTitleSize(tzsize);
      palette->SetLabelFont(fonttype);
      palette->SetLabelSize(lzsize);
      palette->SetLabelOffset(lyoffset);
      palette->SetBorderSize(2);
      palette->SetLineColor(1);
    }
   
    pad[ip]->RedrawAxis(); 

    ip--;
    C->cd(0);
    
  }

  if(mask & 0x2) {

    pad[ip]->Draw();
    pad[ip]->cd(); 
    if(opt.Contains("logz")) {
      pad[ip]->SetLogz(1);
    } else {
      pad[ip]->SetLogz(0);
    }

    hFrame[ip]->Draw("col");

    //  hRmsvsTime->GetZaxis()->SetNdivisions(503);
    hRmsvsTime->GetZaxis()->SetTitleFont(fonttype);
    Float_t xFactor = pad[0]->GetAbsWNDC()/pad[ip]->GetAbsWNDC();
    Float_t yFactor = pad[0]->GetAbsHNDC()/pad[ip]->GetAbsHNDC();
    hRmsvsTime->GetZaxis()->SetTickLength(xFactor*tylength/yFactor);
    
    exElec->Draw();
    hRmsvsTime->Draw("colz same");

    pad[ip]->Update();
  
    y1 = pad[ip]->GetBottomMargin();
    y2 = 1 - pad[ip]->GetTopMargin();
    x1 = pad[ip]->GetLeftMargin();
    x2 = 1 - pad[ip]->GetRightMargin();
  
    palette = (TPaletteAxis*) hRmsvsTime->GetListOfFunctions()->FindObject("palette");  
    if(palette) {
      palette->SetY2NDC(y2 - gap);
      palette->SetY1NDC(y1 + gap);
      palette->SetX1NDC(x2 + 0.005);
      palette->SetX2NDC(x2 + 0.03);
      palette->SetTitleOffset(tzoffset);
      palette->SetTitleSize(tzsize);
      palette->SetLabelFont(fonttype);
      palette->SetLabelSize(lzsize);
      palette->SetLabelOffset(lyoffset);
      palette->SetBorderSize(2);
      palette->SetLineColor(1);
    }
   
    pad[ip]->RedrawAxis(); 

    ip--;
    C->cd(0);
    
  }

  if(mask & 0x4) {

    pad[ip]->Draw();
    pad[ip]->cd(); 
    if(opt.Contains("logz")) {
      pad[ip]->SetLogz(1);
    } else {
      pad[ip]->SetLogz(0);
    }

    hFrame[ip]->Draw("col");

    //  hEvsTime[0]->GetZaxis()->SetNdivisions(503);
    hEvsTime[0]->GetZaxis()->SetTitleFont(fonttype);
    Float_t xFactor = pad[0]->GetAbsWNDC()/pad[ip]->GetAbsWNDC();
    Float_t yFactor = pad[0]->GetAbsHNDC()/pad[ip]->GetAbsHNDC();
    hEvsTime[0]->GetZaxis()->SetTickLength(xFactor*tylength/yFactor);
    
    exField->Draw();
    hEvsTime[0]->Draw("colz same");

    pad[ip]->Update();
  
    y1 = pad[ip]->GetBottomMargin();
    y2 = 1 - pad[ip]->GetTopMargin();
    x1 = pad[ip]->GetLeftMargin();
    x2 = 1 - pad[ip]->GetRightMargin();
  
    palette = (TPaletteAxis*) hEvsTime[0]->GetListOfFunctions()->FindObject("palette");  
    if(palette) {
      palette->SetY2NDC(y2 - gap);
      palette->SetY1NDC(y1 + gap);
      palette->SetX1NDC(x2 + 0.005);
      palette->SetX2NDC(x2 + 0.03);
      palette->SetTitleOffset(tzoffset);
      palette->SetTitleSize(tzsize);
      palette->SetLabelFont(fonttype);
      palette->SetLabelSize(lzsize);
      palette->SetLabelOffset(lyoffset);
      palette->SetBorderSize(2);
      palette->SetLineColor(1);
    }

    if(!opt.Contains("nocross")) {
    
      for(Int_t ic=0;ic<NVCross;ic++) {
	if( gVcross[ic] )
	  gVcross[ic]->Draw("L");
      }

      if(gEcross[1][0]) {
	gEcross[1][0]->SetLineStyle(4);
	gEcross[1][0]->Draw("L");
      }
    }

    pad[ip]->RedrawAxis(); 

    ip--;
    C->cd(0);
    
  }

  if(mask & 0x8) {

    pad[ip]->Draw();
    pad[ip]->cd(); 
    if(opt.Contains("logz")) {
      pad[ip]->SetLogz(1);
    } else {
      pad[ip]->SetLogz(0);
    }

    hFrame[ip]->Draw("col");

    //  hEvsTime[1]->GetZaxis()->SetNdivisions(503);
    hEvsTime[1]->GetZaxis()->SetTitleFont(fonttype);
    Float_t xFactor = pad[0]->GetAbsWNDC()/pad[ip]->GetAbsWNDC();
    Float_t yFactor = pad[0]->GetAbsHNDC()/pad[ip]->GetAbsHNDC();
    hEvsTime[1]->GetZaxis()->SetTickLength(xFactor*tylength/yFactor);
    
    exField->Draw();
    hEvsTime[1]->Draw("colz same");

    pad[ip]->Update();
  
    y1 = pad[ip]->GetBottomMargin();
    y2 = 1 - pad[ip]->GetTopMargin();
    x1 = pad[ip]->GetLeftMargin();
    x2 = 1 - pad[ip]->GetRightMargin();
  
    palette = (TPaletteAxis*) hEvsTime[1]->GetListOfFunctions()->FindObject("palette");  
    if(palette) {
      palette->SetY2NDC(y2 - gap);
      palette->SetY1NDC(y1 + gap);
      palette->SetX1NDC(x2 + 0.005);
      palette->SetX2NDC(x2 + 0.03);
      palette->SetTitleOffset(tzoffset);
      palette->SetTitleSize(tzsize);
      palette->SetLabelFont(fonttype);
      palette->SetLabelSize(lzsize);
      palette->SetLabelOffset(lyoffset);
      palette->SetBorderSize(2);
      palette->SetLineColor(1);
    }
   
    pad[ip]->RedrawAxis(); 

    ip--;
    C->cd(0);
    
  }

  if(mask & 0x10) {

    pad[ip]->Draw();
    pad[ip]->cd(); 
    if(opt.Contains("logz")) {
      pad[ip]->SetLogz(1);
    } else {
      pad[ip]->SetLogz(0);
    }

    hFrame[ip]->Draw("col");

    //  hETvsTime->GetZaxis()->SetNdivisions(503);
    hETvsTime->GetZaxis()->SetTitleFont(fonttype);
    Float_t xFactor = pad[0]->GetAbsWNDC()/pad[ip]->GetAbsWNDC();
    Float_t yFactor = pad[0]->GetAbsHNDC()/pad[ip]->GetAbsHNDC();
    hETvsTime->GetZaxis()->SetTickLength(xFactor*tylength/yFactor);
    
    exFieldT->Draw();
    hETvsTime->Draw("colz same");

    pad[ip]->Update();
  
    y1 = pad[ip]->GetBottomMargin();
    y2 = 1 - pad[ip]->GetTopMargin();
    x1 = pad[ip]->GetLeftMargin();
    x2 = 1 - pad[ip]->GetRightMargin();
  
    palette = (TPaletteAxis*) hETvsTime->GetListOfFunctions()->FindObject("palette");  
    if(palette) {
      palette->SetY2NDC(y2 - gap);
      palette->SetY1NDC(y1 + gap);
      palette->SetX1NDC(x2 + 0.005);
      palette->SetX2NDC(x2 + 0.03);
      palette->SetTitleOffset(tzoffset);
      palette->SetTitleSize(tzsize);
      palette->SetLabelFont(fonttype);
      palette->SetLabelSize(lzsize);
      palette->SetLabelOffset(lyoffset);
      palette->SetBorderSize(2);
      palette->SetLineColor(1);
    }

    if(!opt.Contains("nocross")) {
    
      for(Int_t ic=0;ic<NVCross;ic++) {
	if( gVcross[ic] )
	  gVcross[ic]->Draw("L");
      }

      if(gEcross[1][0]) {
	gEcross[1][0]->SetLineStyle(4);
	gEcross[1][0]->Draw("L");
      }
    }
     
    pad[ip]->RedrawAxis(); 

    ip--;
    C->cd(0);
    
  }

  if(mask & 0x20) {

    pad[ip]->Draw();
    pad[ip]->cd(); 
    if(opt.Contains("logz")) {
      pad[ip]->SetLogz(1);
    } else {
      pad[ip]->SetLogz(0);
    }

    hFrame[ip]->Draw("col");

    //  hVvsTime->GetZaxis()->SetNdivisions(503);
    hVvsTime->GetZaxis()->SetTitleFont(fonttype);
    Float_t xFactor = pad[0]->GetAbsWNDC()/pad[ip]->GetAbsWNDC();
    Float_t yFactor = pad[0]->GetAbsHNDC()/pad[ip]->GetAbsHNDC();
    hVvsTime->GetZaxis()->SetTickLength(xFactor*tylength/yFactor);
    
    exPot->Draw();
    hVvsTime->Draw("colz same");

    pad[ip]->Update();
  
    y1 = pad[ip]->GetBottomMargin();
    y2 = 1 - pad[ip]->GetTopMargin();
    x1 = pad[ip]->GetLeftMargin();
    x2 = 1 - pad[ip]->GetRightMargin();
  
    palette = (TPaletteAxis*) hVvsTime->GetListOfFunctions()->FindObject("palette");  
    if(palette) {
      palette->SetY2NDC(y2 - gap);
      palette->SetY1NDC(y1 + gap);
      palette->SetX1NDC(x2 + 0.005);
      palette->SetX2NDC(x2 + 0.03);
      palette->SetTitleOffset(tzoffset);
      palette->SetTitleSize(tzsize);
      palette->SetLabelFont(fonttype);
      palette->SetLabelSize(lzsize);
      palette->SetLabelOffset(lyoffset);
      palette->SetBorderSize(2);
      palette->SetLineColor(1);
    }
   
    pad[ip]->RedrawAxis(); 

    ip--;
    C->cd(0);
    
  }
  

  if(mask & 0x40) {

    pad[ip]->Draw();
    pad[ip]->cd(); 
    if(opt.Contains("logz")) {
      pad[ip]->SetLogz(1);
    } else {
      pad[ip]->SetLogz(0);
    }

    hFrame[ip]->Draw("col");

    hIonProbvsTime[1]->GetZaxis()->SetNdivisions(503);
    hIonProbvsTime[1]->GetZaxis()->SetTitleFont(fonttype);
    Float_t xFactor = pad[0]->GetAbsWNDC()/pad[ip]->GetAbsWNDC();
    Float_t yFactor = pad[0]->GetAbsHNDC()/pad[ip]->GetAbsHNDC();
    hIonProbvsTime[1]->GetZaxis()->SetTickLength(xFactor*tylength/yFactor);
    hIonProbvsTime[1]->GetZaxis()->SetRangeUser(0.,0.12);
    
    // exFieldT->Draw();
    // exPlasma->Draw();
    exIonP->Draw();
    hIonProbvsTime[1]->Draw("colz same");

    pad[ip]->Update();
  
    y1 = pad[ip]->GetBottomMargin();
    y2 = 1 - pad[ip]->GetTopMargin();
    x1 = pad[ip]->GetLeftMargin();
    x2 = 1 - pad[ip]->GetRightMargin();
  
    palette = (TPaletteAxis*) hIonProbvsTime[1]->GetListOfFunctions()->FindObject("palette");  
    if(palette) {
      palette->SetY2NDC(y2 - gap);
      palette->SetY1NDC(y1 + gap);
      palette->SetX1NDC(x2 + 0.005);
      palette->SetX2NDC(x2 + 0.03);
      palette->SetTitleOffset(tzoffset);
      palette->SetTitleSize(tzsize);
      palette->SetLabelFont(fonttype);
      palette->SetLabelSize(lzsize);
      palette->SetLabelOffset(lyoffset);
      palette->SetBorderSize(2);
      palette->SetLineColor(1);
    }

    if(!opt.Contains("nocross")) {
      
      for(Int_t ic=0;ic<NVCross;ic++) {
	if( gVcross[ic] )
	  gVcross[ic]->Draw("L");
      }
      
      if(gEcross[1][0]) {
	gEcross[1][0]->SetLineStyle(4);
	gEcross[1][0]->Draw("L");
      }
    }
     
    pad[ip]->RedrawAxis(); 

    ip--;
    C->cd(0);
    
  }
  
  // Print to a file
  // Output file
  TString fOutName = Form("./%s/Plots/Evolutions/Evolutions%s-WII-%s",sim.Data(),imask.c_str(),sim.Data());
  PGlobals::imgconv(C,fOutName,opt);
  // ---------------------------------------------------------

  
  ifile->Close();
  cout << endl;
}
void BinCovarianceHggRazor()
{
//=========Macro generated from canvas: c1/c1
//=========  (Thu Mar 16 13:20:44 2017) by ROOT version6.08/00
   TCanvas *c1 = new TCanvas("c1", "c1",624,156,1045,740);
   c1->Range(-2.904762,-4.218216,21.92857,21.55977);
   c1->SetFillColor(0);
   c1->SetBorderMode(0);
   c1->SetBorderSize(2);
   c1->SetLeftMargin(0.1169703);
   c1->SetRightMargin(0.117929);
   c1->SetBottomMargin(0.1636364);
   c1->SetFrameBorderMode(0);
   c1->SetFrameBorderMode(0);
   
   TH2F *corr = new TH2F("corr","Background Covariance Matrix",19,0,19,19,0,19);
   corr->SetBinContent(22,7.200001);
   corr->SetBinContent(23,0.2672915);
   corr->SetBinContent(24,0.001625223);
   corr->SetBinContent(25,3.449828);
   corr->SetBinContent(26,2.003306);
   corr->SetBinContent(27,-0.1299037);
   corr->SetBinContent(28,1.094266);
   corr->SetBinContent(29,0.6026603);
   corr->SetBinContent(30,0.3772124);
   corr->SetBinContent(31,4.398799);
   corr->SetBinContent(32,0.5182461);
   corr->SetBinContent(33,0.4639761);
   corr->SetBinContent(34,-1.045344);
   corr->SetBinContent(35,-0.1582571);
   corr->SetBinContent(36,3.917425);
   corr->SetBinContent(37,0.3293888);
   corr->SetBinContent(38,0.5363065);
   corr->SetBinContent(39,0.112652);
   corr->SetBinContent(40,-0.4577291);
   corr->SetBinContent(43,0.2672915);
   corr->SetBinContent(44,7.06);
   corr->SetBinContent(45,0.02738067);
   corr->SetBinContent(46,10.20474);
   corr->SetBinContent(47,1.258074);
   corr->SetBinContent(48,0.2655874);
   corr->SetBinContent(49,0.05856049);
   corr->SetBinContent(50,0.1689017);
   corr->SetBinContent(51,-0.203687);
   corr->SetBinContent(52,-1.356623);
   corr->SetBinContent(53,-0.1403674);
   corr->SetBinContent(54,0.1150756);
   corr->SetBinContent(55,-1.715165);
   corr->SetBinContent(56,0.3716204);
   corr->SetBinContent(57,1.576942);
   corr->SetBinContent(58,0.4120814);
   corr->SetBinContent(59,-0.5644981);
   corr->SetBinContent(60,2.312829);
   corr->SetBinContent(61,-0.1745173);
   corr->SetBinContent(64,0.001625223);
   corr->SetBinContent(65,0.02738067);
   corr->SetBinContent(66,6.85);
   corr->SetBinContent(67,2.261283);
   corr->SetBinContent(68,1.963802);
   corr->SetBinContent(69,0.0992774);
   corr->SetBinContent(70,0.2134901);
   corr->SetBinContent(71,0.4936861);
   corr->SetBinContent(72,0.09001485);
   corr->SetBinContent(73,3.081846);
   corr->SetBinContent(74,-0.03320625);
   corr->SetBinContent(75,0.02650541);
   corr->SetBinContent(76,0.5989376);
   corr->SetBinContent(77,0.2271089);
   corr->SetBinContent(78,1.603218);
   corr->SetBinContent(79,0.2573114);
   corr->SetBinContent(80,-0.2396841);
   corr->SetBinContent(81,-0.8127553);
   corr->SetBinContent(82,0.8586979);
   corr->SetBinContent(85,3.456811);
   corr->SetBinContent(86,10.22542);
   corr->SetBinContent(87,2.265859);
   corr->SetBinContent(88,1809.14);
   corr->SetBinContent(89,-1.012275);
   corr->SetBinContent(90,6.697715);
   corr->SetBinContent(91,9.605417);
   corr->SetBinContent(92,-0.8592414);
   corr->SetBinContent(93,4.409427);
   corr->SetBinContent(94,54.40217);
   corr->SetBinContent(95,-1.380551);
   corr->SetBinContent(96,1.818917);
   corr->SetBinContent(97,40.60707);
   corr->SetBinContent(98,-3.56902);
   corr->SetBinContent(99,106.0525);
   corr->SetBinContent(100,-2.953686);
   corr->SetBinContent(101,2.048589);
   corr->SetBinContent(102,-36.2908);
   corr->SetBinContent(103,4.93098);
   corr->SetBinContent(106,2.007359);
   corr->SetBinContent(107,1.260622);
   corr->SetBinContent(108,1.967779);
   corr->SetBinContent(109,-1.012275);
   corr->SetBinContent(110,256.49);
   corr->SetBinContent(111,1.281127);
   corr->SetBinContent(112,2.073658);
   corr->SetBinContent(113,2.264486);
   corr->SetBinContent(114,-1.336645);
   corr->SetBinContent(115,38.93255);
   corr->SetBinContent(116,1.86029);
   corr->SetBinContent(117,0.04544767);
   corr->SetBinContent(118,28.44881);
   corr->SetBinContent(119,-2.154541);
   corr->SetBinContent(120,39.41811);
   corr->SetBinContent(121,0.8762429);
   corr->SetBinContent(122,5.192766);
   corr->SetBinContent(123,6.060677);
   corr->SetBinContent(124,2.462171);
   corr->SetBinContent(127,-0.1299037);
   corr->SetBinContent(128,0.2655874);
   corr->SetBinContent(129,0.0992774);
   corr->SetBinContent(130,6.68419);
   corr->SetBinContent(131,1.278538);
   corr->SetBinContent(132,7.25);
   corr->SetBinContent(133,1.210454);
   corr->SetBinContent(134,-0.2097035);
   corr->SetBinContent(135,-8.765232e-05);
   corr->SetBinContent(136,3.902545);
   corr->SetBinContent(137,-0.3170787);
   corr->SetBinContent(138,-0.5794553);
   corr->SetBinContent(139,4.478106);
   corr->SetBinContent(140,-0.4768105);
   corr->SetBinContent(141,1.30636);
   corr->SetBinContent(142,0.3664042);
   corr->SetBinContent(143,-0.3664501);
   corr->SetBinContent(144,1.077817);
   corr->SetBinContent(145,-0.4731456);
   corr->SetBinContent(148,1.073224);
   corr->SetBinContent(149,0.05743426);
   corr->SetBinContent(150,0.2093844);
   corr->SetBinContent(151,9.40167);
   corr->SetBinContent(152,2.029672);
   corr->SetBinContent(153,1.187176);
   corr->SetBinContent(154,24.93);
   corr->SetBinContent(155,0.9106724);
   corr->SetBinContent(156,0.005313865);
   corr->SetBinContent(157,3.027986);
   corr->SetBinContent(158,0.08652855);
   corr->SetBinContent(159,0.1306128);
   corr->SetBinContent(160,5.661592);
   corr->SetBinContent(161,0.4646386);
   corr->SetBinContent(162,-5.217519);
   corr->SetBinContent(163,0.1571939);
   corr->SetBinContent(164,1.094535);
   corr->SetBinContent(165,2.11375);
   corr->SetBinContent(166,0.776071);
   corr->SetBinContent(169,0.6026603);
   corr->SetBinContent(170,0.1689017);
   corr->SetBinContent(171,0.4936861);
   corr->SetBinContent(172,-0.8575042);
   corr->SetBinContent(173,2.259912);
   corr->SetBinContent(174,-0.2097035);
   corr->SetBinContent(175,0.9285287);
   corr->SetBinContent(176,12.01);
   corr->SetBinContent(177,-0.4210026);
   corr->SetBinContent(178,-7.775839);
   corr->SetBinContent(179,-0.4606768);
   corr->SetBinContent(180,0.2147063);
   corr->SetBinContent(181,-1.253046);
   corr->SetBinContent(182,0.3347198);
   corr->SetBinContent(183,1.034227);
   corr->SetBinContent(184,0.01147097);
   corr->SetBinContent(185,0.09434997);
   corr->SetBinContent(186,-0.4641604);
   corr->SetBinContent(187,1.080481);
   corr->SetBinContent(190,0.3772124);
   corr->SetBinContent(191,-0.203687);
   corr->SetBinContent(192,0.09001485);
   corr->SetBinContent(193,4.40052);
   corr->SetBinContent(194,-1.333945);
   corr->SetBinContent(195,-8.765232e-05);
   corr->SetBinContent(196,0.005417521);
   corr->SetBinContent(197,-0.4210026);
   corr->SetBinContent(198,9.769999);
   corr->SetBinContent(199,-6.455331);
   corr->SetBinContent(200,0.05779311);
   corr->SetBinContent(201,-0.1471536);
   corr->SetBinContent(202,-0.3639791);
   corr->SetBinContent(203,-0.06047838);
   corr->SetBinContent(204,-3.252086);
   corr->SetBinContent(205,0.1885649);
   corr->SetBinContent(206,0.6627039);
   corr->SetBinContent(207,0.2928204);
   corr->SetBinContent(208,-1.060261);
   corr->SetBinContent(211,4.407704);
   corr->SetBinContent(212,-1.35937);
   corr->SetBinContent(213,3.088085);
   corr->SetBinContent(214,54.40217);
   corr->SetBinContent(215,38.93255);
   corr->SetBinContent(216,3.910446);
   corr->SetBinContent(217,3.093611);
   corr->SetBinContent(218,-7.791583);
   corr->SetBinContent(219,-6.468398);
   corr->SetBinContent(220,857.89);
   corr->SetBinContent(221,-0.5174752);
   corr->SetBinContent(222,5.507917);
   corr->SetBinContent(223,42.01412);
   corr->SetBinContent(224,4.45688);
   corr->SetBinContent(225,44.79397);
   corr->SetBinContent(226,-4.060115);
   corr->SetBinContent(227,-13.04204);
   corr->SetBinContent(228,-29.73159);
   corr->SetBinContent(229,-2.903305);
   corr->SetBinContent(232,0.5182461);
   corr->SetBinContent(233,-0.1403674);
   corr->SetBinContent(234,-0.03320625);
   corr->SetBinContent(235,-1.377762);
   corr->SetBinContent(236,1.856531);
   corr->SetBinContent(237,-0.3170787);
   corr->SetBinContent(238,0.08822516);
   corr->SetBinContent(239,-0.4606768);
   corr->SetBinContent(240,0.05779311);
   corr->SetBinContent(241,-0.5164298);
   corr->SetBinContent(242,7.650001);
   corr->SetBinContent(243,-0.1925722);
   corr->SetBinContent(244,0.5093402);
   corr->SetBinContent(245,-0.2442501);
   corr->SetBinContent(246,-1.347253);
   corr->SetBinContent(247,0.1364561);
   corr->SetBinContent(248,-0.875925);
   corr->SetBinContent(249,-2.778971);
   corr->SetBinContent(250,-0.1065624);
   corr->SetBinContent(253,0.4639761);
   corr->SetBinContent(254,0.1150756);
   corr->SetBinContent(255,0.02650541);
   corr->SetBinContent(256,1.815242);
   corr->SetBinContent(257,0.04535576);
   corr->SetBinContent(258,-0.5794553);
   corr->SetBinContent(259,0.1331737);
   corr->SetBinContent(260,0.2147063);
   corr->SetBinContent(261,-0.1471536);
   corr->SetBinContent(262,5.496789);
   corr->SetBinContent(263,-0.1925722);
   corr->SetBinContent(264,21.32);
   corr->SetBinContent(265,2.282518);
   corr->SetBinContent(266,2.157221);
   corr->SetBinContent(267,4.829895);
   corr->SetBinContent(268,1.112747);
   corr->SetBinContent(269,0.2784669);
   corr->SetBinContent(270,3.753212);
   corr->SetBinContent(271,1.591138);
   corr->SetBinContent(274,-1.047459);
   corr->SetBinContent(275,-1.718638);
   corr->SetBinContent(276,0.6001508);
   corr->SetBinContent(277,40.60707);
   corr->SetBinContent(278,28.44881);
   corr->SetBinContent(279,4.48717);
   corr->SetBinContent(280,5.784283);
   corr->SetBinContent(281,-1.255583);
   corr->SetBinContent(282,-0.3647164);
   corr->SetBinContent(283,42.01412);
   corr->SetBinContent(284,0.510371);
   corr->SetBinContent(285,2.287134);
   corr->SetBinContent(286,641.45);
   corr->SetBinContent(287,15.21948);
   corr->SetBinContent(288,21.97221);
   corr->SetBinContent(289,-1.498767);
   corr->SetBinContent(290,-0.6768517);
   corr->SetBinContent(291,20.97092);
   corr->SetBinContent(292,-0.8102957);
   corr->SetBinContent(295,-0.1582571);
   corr->SetBinContent(296,0.3716204);
   corr->SetBinContent(297,0.2271089);
   corr->SetBinContent(298,-3.561811);
   corr->SetBinContent(299,-2.150187);
   corr->SetBinContent(300,-0.4768105);
   corr->SetBinContent(301,0.473749);
   corr->SetBinContent(302,0.3347198);
   corr->SetBinContent(303,-0.06047838);
   corr->SetBinContent(304,4.447877);
   corr->SetBinContent(305,-0.2442501);
   corr->SetBinContent(306,2.157221);
   corr->SetBinContent(307,15.18873);
   corr->SetBinContent(308,30.77);
   corr->SetBinContent(309,2.766883);
   corr->SetBinContent(310,-0.04555257);
   corr->SetBinContent(311,-2.424916);
   corr->SetBinContent(312,-3.012514);
   corr->SetBinContent(313,2.505161);
   corr->SetBinContent(316,3.925359);
   corr->SetBinContent(317,1.580133);
   corr->SetBinContent(318,1.606464);
   corr->SetBinContent(319,106.0525);
   corr->SetBinContent(320,39.41811);
   corr->SetBinContent(321,1.309003);
   corr->SetBinContent(322,-5.330599);
   corr->SetBinContent(323,1.036319);
   corr->SetBinContent(324,-3.25867);
   corr->SetBinContent(325,44.79397);
   corr->SetBinContent(326,-1.34998);
   corr->SetBinContent(327,4.839672);
   corr->SetBinContent(328,21.97221);
   corr->SetBinContent(329,2.772484);
   corr->SetBinContent(330,1073.14);
   corr->SetBinContent(331,3.813272);
   corr->SetBinContent(332,-6.864117);
   corr->SetBinContent(333,25.17929);
   corr->SetBinContent(334,8.678784);
   corr->SetBinContent(337,0.3293888);
   corr->SetBinContent(338,0.4120814);
   corr->SetBinContent(339,0.2573114);
   corr->SetBinContent(340,-2.947719);
   corr->SetBinContent(341,0.8744726);
   corr->SetBinContent(342,0.3664042);
   corr->SetBinContent(343,0.1602762);
   corr->SetBinContent(344,0.01147097);
   corr->SetBinContent(345,0.1885649);
   corr->SetBinContent(346,-4.051914);
   corr->SetBinContent(347,0.1364561);
   corr->SetBinContent(348,1.112747);
   corr->SetBinContent(349,-1.495737);
   corr->SetBinContent(350,-0.04555257);
   corr->SetBinContent(351,3.805569);
   corr->SetBinContent(352,9.09);
   corr->SetBinContent(353,0.1903553);
   corr->SetBinContent(354,0.5499064);
   corr->SetBinContent(355,0.5727072);
   corr->SetBinContent(358,0.5373924);
   corr->SetBinContent(359,-0.5656406);
   corr->SetBinContent(360,-0.2401691);
   corr->SetBinContent(361,2.048589);
   corr->SetBinContent(362,5.192766);
   corr->SetBinContent(363,-0.367192);
   corr->SetBinContent(364,1.118255);
   corr->SetBinContent(365,0.09454096);
   corr->SetBinContent(366,0.6640464);
   corr->SetBinContent(367,-13.04204);
   corr->SetBinContent(368,-0.8776976);
   corr->SetBinContent(369,0.27903);
   corr->SetBinContent(370,-0.6768517);
   corr->SetBinContent(371,-2.429823);
   corr->SetBinContent(372,-6.864117);
   corr->SetBinContent(373,0.1907412);
   corr->SetBinContent(374,109.6);
   corr->SetBinContent(375,7.16569);
   corr->SetBinContent(376,-1.180023);
   corr->SetBinContent(379,0.1128808);
   corr->SetBinContent(380,2.31751);
   corr->SetBinContent(381,-0.814401);
   corr->SetBinContent(382,-36.2908);
   corr->SetBinContent(383,6.060677);
   corr->SetBinContent(384,1.079998);
   corr->SetBinContent(385,2.159559);
   corr->SetBinContent(386,-0.4650993);
   corr->SetBinContent(387,0.2934131);
   corr->SetBinContent(388,-29.73159);
   corr->SetBinContent(389,-2.784595);
   corr->SetBinContent(390,3.760808);
   corr->SetBinContent(391,20.97092);
   corr->SetBinContent(392,-3.018612);
   corr->SetBinContent(393,25.17929);
   corr->SetBinContent(394,0.5510197);
   corr->SetBinContent(395,7.16569);
   corr->SetBinContent(396,254.5);
   corr->SetBinContent(397,-1.087226);
   corr->SetBinContent(400,-0.4577291);
   corr->SetBinContent(401,-0.1745173);
   corr->SetBinContent(402,0.8586979);
   corr->SetBinContent(403,4.921021);
   corr->SetBinContent(404,2.457195);
   corr->SetBinContent(405,-0.4731456);
   corr->SetBinContent(406,0.7912881);
   corr->SetBinContent(407,1.080481);
   corr->SetBinContent(408,-1.060261);
   corr->SetBinContent(409,-2.89744);
   corr->SetBinContent(410,-0.1065624);
   corr->SetBinContent(411,1.591138);
   corr->SetBinContent(412,-0.8086588);
   corr->SetBinContent(413,2.505161);
   corr->SetBinContent(414,8.661255);
   corr->SetBinContent(415,0.5727072);
   corr->SetBinContent(416,-1.17764);
   corr->SetBinContent(417,-1.085029);
   corr->SetBinContent(418,30.42);
   corr->SetMinimum(-4000);
   corr->SetMaximum(4000);
   corr->SetEntries(361);
   corr->SetStats(0);
   corr->SetContour(20);
   corr->SetContourLevel(0,-4000);
   corr->SetContourLevel(1,-3600);
   corr->SetContourLevel(2,-3200);
   corr->SetContourLevel(3,-2800);
   corr->SetContourLevel(4,-2400);
   corr->SetContourLevel(5,-2000);
   corr->SetContourLevel(6,-1600);
   corr->SetContourLevel(7,-1200);
   corr->SetContourLevel(8,-800);
   corr->SetContourLevel(9,-400);
   corr->SetContourLevel(10,0);
   corr->SetContourLevel(11,400);
   corr->SetContourLevel(12,800);
   corr->SetContourLevel(13,1200);
   corr->SetContourLevel(14,1600);
   corr->SetContourLevel(15,2000);
   corr->SetContourLevel(16,2400);
   corr->SetContourLevel(17,2800);
   corr->SetContourLevel(18,3200);
   corr->SetContourLevel(19,3600);
   
   TPaletteAxis *palette = new TPaletteAxis(19.11905,-0.7931685,20.2619,19.82922,corr);
palette->SetLabelColor(1);
palette->SetLabelFont(42);
palette->SetLabelOffset(0.005);
palette->SetLabelSize(0.035);
palette->SetTitleOffset(1);
palette->SetTitleSize(0.035);

   Int_t ci;      // for color index setting
   TColor *color; // for color definition with alpha
   ci = TColor::GetColor("#f9f90e");
   palette->SetFillColor(ci);
   palette->SetFillStyle(1001);
   corr->GetListOfFunctions()->Add(palette,"br");

   ci = TColor::GetColor("#000099");
   corr->SetLineColor(ci);
   corr->GetXaxis()->SetBinLabel(1,"Bin 0");
   corr->GetXaxis()->SetBinLabel(2,"Bin 1");
   corr->GetXaxis()->SetBinLabel(3,"Bin 2");
   corr->GetXaxis()->SetBinLabel(4,"Bin 3");
   corr->GetXaxis()->SetBinLabel(5,"Bin 4");
   corr->GetXaxis()->SetBinLabel(6,"Bin 5");
   corr->GetXaxis()->SetBinLabel(7,"Bin 6");
   corr->GetXaxis()->SetBinLabel(8,"Bin 7");
   corr->GetXaxis()->SetBinLabel(9,"Bin 8");
   corr->GetXaxis()->SetBinLabel(10,"Bin 9 HighRes");
   corr->GetXaxis()->SetBinLabel(11,"Bin 10 HighRes");
   corr->GetXaxis()->SetBinLabel(12,"Bin 11 HighRes");
   corr->GetXaxis()->SetBinLabel(13,"Bin 12 HighRes");
   corr->GetXaxis()->SetBinLabel(14,"Bin 13 HighRes");
   corr->GetXaxis()->SetBinLabel(15,"Bin 9 LowRes");
   corr->GetXaxis()->SetBinLabel(16,"Bin 10 LowRes");
   corr->GetXaxis()->SetBinLabel(17,"Bin 11 LowRes");
   corr->GetXaxis()->SetBinLabel(18,"Bin 12 LowRes");
   corr->GetXaxis()->SetBinLabel(19,"Bin 13 LowRes");
   corr->GetXaxis()->SetBit(TAxis::kLabelsVert);
   corr->GetXaxis()->SetLabelFont(42);
   corr->GetXaxis()->SetLabelSize(0.035);
   corr->GetXaxis()->SetTitleSize(0.035);
   corr->GetXaxis()->SetTitleFont(42);
   corr->GetYaxis()->SetBinLabel(1,"Bin 0");
   corr->GetYaxis()->SetBinLabel(2,"Bin 1");
   corr->GetYaxis()->SetBinLabel(3,"Bin 2");
   corr->GetYaxis()->SetBinLabel(4,"Bin 3");
   corr->GetYaxis()->SetBinLabel(5,"Bin 4");
   corr->GetYaxis()->SetBinLabel(6,"Bin 5");
   corr->GetYaxis()->SetBinLabel(7,"Bin 6");
   corr->GetYaxis()->SetBinLabel(8,"Bin 7");
   corr->GetYaxis()->SetBinLabel(9,"Bin 8");
   corr->GetYaxis()->SetBinLabel(10,"Bin 9 HighRes");
   corr->GetYaxis()->SetBinLabel(11,"Bin 10 HighRes");
   corr->GetYaxis()->SetBinLabel(12,"Bin 11 HighRes");
   corr->GetYaxis()->SetBinLabel(13,"Bin 12 HighRes");
   corr->GetYaxis()->SetBinLabel(14,"Bin 13 HighRes");
   corr->GetYaxis()->SetBinLabel(15,"Bin 9 LowRes");
   corr->GetYaxis()->SetBinLabel(16,"Bin 10 LowRes");
   corr->GetYaxis()->SetBinLabel(17,"Bin 11 LowRes");
   corr->GetYaxis()->SetBinLabel(18,"Bin 12 LowRes");
   corr->GetYaxis()->SetBinLabel(19,"Bin 13 LowRes");
   corr->GetYaxis()->SetLabelFont(42);
   corr->GetYaxis()->SetLabelSize(0.035);
   corr->GetYaxis()->SetTitleSize(0.035);
   corr->GetYaxis()->SetTitleFont(42);
   corr->GetZaxis()->SetLabelFont(42);
   corr->GetZaxis()->SetLabelSize(0.035);
   corr->GetZaxis()->SetTitleSize(0.035);
   corr->GetZaxis()->SetTitleFont(42);
   corr->Draw("colz+text");
   
   TPaveText *pt = new TPaveText(0.2371347,0.9343684,0.7628653,0.995,"blNDC");
   pt->SetName("title");
   pt->SetBorderSize(0);
   pt->SetFillColor(0);
   pt->SetFillStyle(0);
   pt->SetTextFont(42);
   TText *AText = pt->AddText("Background Covariance Matrix");
   pt->Draw();
   c1->Modified();
   c1->cd();
   c1->SetSelected(c1);
}