modified: scratch/make_prettyplots.C set z min

This commit is contained in:
Vignesh Sitaraman 2026-06-05 08:48:42 -04:00
parent 88cf59bce3
commit 66fd758554

View File

@ -27,7 +27,8 @@
// --------------------------------------------------------------------------- // ---------------------------------------------------------------------------
// Style — called once before anything is drawn // Style — called once before anything is drawn
// --------------------------------------------------------------------------- // ---------------------------------------------------------------------------
void SetStyle() { void SetStyle()
{
gROOT->SetStyle("Plain"); gROOT->SetStyle("Plain");
gStyle->SetOptStat(0); gStyle->SetOptStat(0);
gStyle->SetOptTitle(0); gStyle->SetOptTitle(0);
@ -62,35 +63,40 @@ void SetStyle() {
gStyle->SetNumberContours(255); gStyle->SetNumberContours(255);
} }
void make_prettyplots(const char* rootFile, void make_prettyplots(const char *rootFile,
const char* histName, const char *histName,
const char* xlabel = "", const char *xlabel = "",
const char* ylabel = "") { const char *ylabel = "",
double minZ = -9999.0)
{
SetStyle(); SetStyle();
// --- Open file ---------------------------------------------------------- // --- Open file ----------------------------------------------------------
TFile* f = TFile::Open(rootFile, "READ"); TFile *f = TFile::Open(rootFile, "READ");
if (!f || f->IsZombie()) { if (!f || f->IsZombie())
{
std::cerr << "ERROR: Cannot open " << rootFile << "\n"; std::cerr << "ERROR: Cannot open " << rootFile << "\n";
return; return;
} }
TObject* obj = f->Get(histName); TObject *obj = f->Get(histName);
if (!obj) { if (!obj)
{
std::cerr << "ERROR: '" << histName << "' not found in " << rootFile << "\n"; std::cerr << "ERROR: '" << histName << "' not found in " << rootFile << "\n";
f->Close(); f->Close();
return; return;
} }
TObject* clone = obj->Clone(Form("%s_clone", histName)); TObject *clone = obj->Clone(Form("%s_clone", histName));
if (!clone) { if (!clone)
{
std::cerr << "ERROR: Clone failed for '" << histName << "'\n"; std::cerr << "ERROR: Clone failed for '" << histName << "'\n";
f->Close(); f->Close();
return; return;
} }
if (clone->InheritsFrom(TH1::Class())) if (clone->InheritsFrom(TH1::Class()))
((TH1*)clone)->SetDirectory(0); // detach — survives file close ((TH1 *)clone)->SetDirectory(0); // detach — survives file close
f->Close(); f->Close();
// --- Detect dimension --------------------------------------------------- // --- Detect dimension ---------------------------------------------------
@ -98,17 +104,26 @@ void make_prettyplots(const char* rootFile,
// --- Canvas: 2100 px wide = 7 in at 300 DPI ----------------------------- // --- Canvas: 2100 px wide = 7 in at 300 DPI -----------------------------
int canvasW = 2100; int canvasW = 2100;
int canvasH = is2D ? 1800 : 1575; // square-ish for 2D, 4:3 for 1D int canvasH = is2D ? 1800 : 1575; // square-ish for 2D, 4:3 for 1D
TCanvas c("c", "", 0, 0, canvasW, canvasH); TCanvas c("c", "", 0, 0, canvasW, canvasH);
c.cd(); c.cd();
// Widen right margin for the colz palette bar // Widen right margin for the colz palette bar
if (is2D) gPad->SetRightMargin(0.13); if (is2D)
gPad->SetRightMargin(0.13);
if (is2D) {
TH2* h = (TH2*)clone; if (is2D)
{
TH2 *h = (TH2 *)clone;
h->SetStats(0); h->SetStats(0);
// --- Apply Minimum Z if provided ---
if (minZ != -9999.0)
{
h->SetMinimum(minZ);
}
h->GetXaxis()->SetTitle(xlabel); h->GetXaxis()->SetTitle(xlabel);
h->GetYaxis()->SetTitle(ylabel); h->GetYaxis()->SetTitle(ylabel);
h->GetXaxis()->SetTitleOffset(1); h->GetXaxis()->SetTitleOffset(1);
@ -116,10 +131,12 @@ void make_prettyplots(const char* rootFile,
h->GetXaxis()->CenterTitle(true); h->GetXaxis()->CenterTitle(true);
h->GetYaxis()->CenterTitle(true); h->GetYaxis()->CenterTitle(true);
h->Draw("colz"); h->Draw("colz");
} else { }
TH1* h = (TH1*)clone; else
{
TH1 *h = (TH1 *)clone;
h->SetStats(0); h->SetStats(0);
h->SetLineColor(kAzure-5); h->SetLineColor(kAzure - 5);
h->SetLineWidth(3); h->SetLineWidth(3);
h->GetXaxis()->SetTitle(xlabel); h->GetXaxis()->SetTitle(xlabel);
h->GetYaxis()->SetTitle(ylabel); h->GetYaxis()->SetTitle(ylabel);
@ -134,12 +151,14 @@ void make_prettyplots(const char* rootFile,
// Build output path: same directory as input file, named after the histogram // Build output path: same directory as input file, named after the histogram
std::string inPath(rootFile); std::string inPath(rootFile);
std::string dir = inPath.substr(0, inPath.find_last_of("/\\")); std::string dir = inPath.substr(0, inPath.find_last_of("/\\"));
if (dir == inPath) dir = "."; // no directory component — use cwd if (dir == inPath)
dir = "."; // no directory component — use cwd
std::string outPath = dir + "/" + std::string(histName) + ".png"; std::string outPath = dir + "/" + std::string(histName) + ".png";
// Replace any "/" inside histName (e.g. "folder/hist") with "_" // Replace any "/" inside histName (e.g. "folder/hist") with "_"
for (char& ch : outPath) for (char &ch : outPath)
if (ch == '/') ch = '_'; if (ch == '/')
ch = '_';
c.Modified(); c.Modified();
c.Update(); c.Update();