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(); }
//------------------------------------------------------------------------------ // 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"); }
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()); }
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); }