Back to home page

sPhenix code displayed by LXR

 
 

    


File indexing completed on 2025-08-06 08:14:12

0001 // David Stewart, Dec 1 2022
0002 // A way to format plots
0003 
0004 #ifndef noi_fmt__h
0005 #define noi_fmt__h
0006 #include "noiDict.h"
0007 
0008 noiDict _tu_fmt__hg_dict() {
0009     return {{
0010         "MarkerStyle", kFullCircle,
0011         "MarkerColor", kBlack,
0012         "MarkerAlpha", 1.,
0013         "MarkerSize",  1.,
0014 
0015         "LineWidth",   1 ,
0016         "LineStyle",   1 ,
0017 
0018         /* "FillStyle", 4000, */
0019         /* {"LineColor",   kBlack }, */
0020         /* {"LineAlpha",   1. }, */
0021 
0022         "xAxisTitleFont",     43,
0023         "xAxisTitleSize",     22,
0024         "xAxisTitleOffset", 1.6 ,
0025 
0026         "xAxisLabelFont",      43,
0027         "xAxisLabelSize",      18,
0028         "xAxisLabelOffset",  0.02,
0029 
0030         "yAxisTitleFont",     43,
0031         "yAxisTitleSize",     22,
0032         "yAxisTitleOffset", 1.85,
0033 
0034         "yAxisLabelFont",     43,
0035         "yAxisLabelSize",     18,
0036         "yAxisLabelOffset",  0.02,
0037 
0038         "zAxisTitleFont", 43,
0039         "zAxisTitleSize", 22,
0040         "zAxisTitleOffset", 2.4 ,
0041 
0042         "zAxisLabelFont", 43,
0043         "zAxisLabelSize", 18,
0044         "zAxisLabelOffset", 0.02 ,
0045 
0046         "SetStats", 0
0047     }};
0048 };
0049 
0050 TH1* noi_fmt (TH1* hg, noiDict _override={{}}, noiDict dict=_tu_fmt__hg_dict()) {
0051     // if don't want defaults, add {} to override value
0052     dict += _override;
0053 
0054     /* if (dict["noTitle"])      hg->SetTitle(""); */
0055     if (dict["Name"])     hg->SetName(dict("Name"));
0056 
0057     if (dict["SetStats"])     hg->SetStats((int)dict("SetStats"));
0058 
0059     if (dict["no_errors"]) for (int i=1; i<=hg->GetNbinsX(); ++i) hg->SetBinError(i,0.);
0060 
0061 
0062     if (dict["MarkerStyle"]) hg->SetMarkerStyle(dict("MarkerStyle"));
0063 
0064     if (dict["MarkerColor"])   hg->SetMarkerColor(dict("MarkerColor"));
0065     if (dict["MarkerColorAlpha"]) hg->SetMarkerColorAlpha(dict("MarkerColorAlpha",1),dict("MarkerColorAlpha",2));
0066 
0067 
0068     if (dict["MarkerSize"]) hg->SetMarkerSize(dict("MarkerSize"));
0069 
0070     if (dict["LineWidth"]) hg->SetLineWidth(dict("LineWidth"));
0071     if (dict["LineStyle"]) hg->SetLineStyle(dict("LineStyle"));
0072 
0073     if (dict["LineColor"]) hg->SetLineColor(dict("LineColor"));
0074     if (dict["LineColorAlpha"]) hg->SetLineColorAlpha(dict("LineColorAlpha",1),dict("LineColorAlpha",2));
0075 
0076     if (!dict["LineColor"] && !dict["LineColorAlpha"] && (dict["MarkerColor"] || dict["MarkerColorAlpha"])) {
0077         if (dict["MarkerColor"]) hg->SetLineColor(dict("MarkerColor"));
0078         if (dict["MarkerColorAlpha"]) hg->SetLineColorAlpha(dict("MarkerColorAlpha",1),dict("MarkerColorAlpha",2));
0079     }
0080     /* else if (dict["MarkerColor"]) */
0081         /* hg->SetLineColorAlpha(dict("MarkerColor"), dict("LineAlpha",dict("MarkerAlpha",1.))); */
0082     if (dict["FillColor"]) hg->SetFillColor(dict("FillColor"));
0083     if (dict["FillColorAlpha"]) hg->SetFillColorAlpha(dict("FillColorAlpha",1),dict("FillColorAlpha",2));
0084 
0085     if (dict["FillStyle"]) hg->SetFillStyle(dict("FillStyle"));
0086 
0087     // Set titles
0088     if (dict["Title"]) hg->SetTitle(dict("Title"));
0089     if (dict["xAxisTitle"]) hg->GetXaxis()->SetTitle(dict("xAxisTitle"));
0090     if (dict["yAxisTitle"]) hg->GetYaxis()->SetTitle(dict("yAxisTitle"));
0091 
0092     // Set axes styles
0093 
0094     if (dict["TitleSize"]) hg->SetTitleSize(dict("TitleSize"));
0095     if (dict["TitleFont"]) hg->SetTitleFont(dict("TitleFont"));
0096     // x Axis
0097     if (dict["xAxisTitleFont"])
0098         hg->GetXaxis()->SetTitleFont(dict("xAxisTitleFont"));
0099     if (dict["xAxisTitleSize"])
0100         hg->GetXaxis()->SetTitleSize(dict("xAxisTitleSize"));
0101     /* cout << " beta " << endl; */
0102     /* if (dict["xAxisTitleOffset"]) cout << " Setting xaxistitleoffset " <<  dict("xAxisTitleOffset") << endl; */
0103     if (dict["xAxisTitleOffset"])
0104         hg->GetXaxis()->SetTitleOffset(dict("xAxisTitleOffset"));
0105     if (dict["xAxisLabelFont"])
0106         hg->GetXaxis()->SetLabelFont(dict("xAxisLabelFont"));
0107     if (dict["xAxisLabelSize"])
0108         hg->GetXaxis()->SetLabelSize(dict("xAxisLabelSize"));
0109     if (dict["xAxisLabelOffset"])
0110         hg->GetXaxis()->SetLabelOffset(dict("xAxisLabelOffset"));
0111 
0112     // y Axis
0113     if (dict["yAxisTitleFont"])
0114         hg->GetYaxis()->SetTitleFont(dict("yAxisTitleFont"));
0115     if (dict["yAxisTitleSize"])
0116         hg->GetYaxis()->SetTitleSize(dict("yAxisTitleSize"));
0117     if (dict["yAxisTitleOffset"])
0118         hg->GetYaxis()->SetTitleOffset(dict("yAxisTitleOffset"));
0119     if (dict["yAxisLabelFont"])
0120         hg->GetYaxis()->SetLabelFont(dict("yAxisLabelFont"));
0121     if (dict["yAxisLabelSize"])
0122         hg->GetYaxis()->SetLabelSize(dict("yAxisLabelSize"));
0123     if (dict["yAxisLabelOffset"])
0124         hg->GetYaxis()->SetLabelOffset(dict("yAxisLabelOffset"));
0125 
0126 
0127     // z Axis
0128     if (dict["zAxisTitleFont"])
0129         hg->GetZaxis()->SetTitleFont(dict("zAxisTitleFont"));
0130     if (dict["zAxisTitleSize"])
0131         hg->GetZaxis()->SetTitleSize(dict("zAxisTitleSize"));
0132     if (dict["zAxisTitleOffset"])
0133         hg->GetZaxis()->SetTitleOffset(dict("zAxisTitleOffset"));
0134     if (dict["zAxisLabelFont"])
0135         hg->GetZaxis()->SetLabelFont(dict("zAxisLabelFont"));
0136     if (dict["zAxisLabelSize"])
0137         hg->GetZaxis()->SetLabelSize(dict("zAxisLabelSize"));
0138     if (dict["zAxisLabelOffset"])
0139         hg->GetZaxis()->SetLabelOffset(dict("zAxisLabelOffset"));
0140     
0141     if (dict["xAxisRange"]) hg->GetXaxis()->SetRangeUser(dict("xAxisRange",1),dict("xAxisRange",2));
0142     // Set Axis ranges with {x||y||z}AxisRange{Lo||Hi}
0143     if (dict["xAxisRangeLo"] || dict["xAxisRangeHi"]) {
0144         if (!dict["xAxisRangeLo"] || !dict["xAxisRangeHi"]) {
0145             cout << " Warning in noi_fmt: has xAxisRange{lo||hi} but not both. Needs both."<<endl;
0146             cout << " -> Not setting xAxisRange." << endl;
0147         } else {
0148             hg->GetXaxis()->SetRangeUser(dict("xAxisRangeLo"), dict("xAxisRangeHi"));
0149         }
0150     }
0151 
0152     if (dict["yAxisRange"]) hg->GetYaxis()->SetRangeUser(dict("yAxisRange",1),dict("yAxisRange",2));
0153     if (dict["yAxisRangeLo"] || dict["yAxisRangeHi"]) {
0154         if (!dict["yAxisRangeLo"] || !dict["yAxisRangeHi"]) {
0155             cout << " Warning in noi_fmt: has yAxisRange{Lo||Hi} but not both. Needs both."<<endl;
0156             cout << " -> Not setting yAxisRange." << endl;
0157         } else {
0158             hg->GetYaxis()->SetRangeUser(dict("yAxisRangeLo"), dict("yAxisRangeHi"));
0159         }
0160     }
0161     if (dict["zAxisRangeLo"] || dict["zAxisRangeHi"]) {
0162         if (!dict["zAxisRangeLo"] || !dict["zAxisRangeHi"]) {
0163             cout << " Warning in noi_fmt: has zAxisRange{lo||hi} but not both. Needs both."<<endl;
0164             cout << " -> Not setting zAxisRange." << endl;
0165         } else {
0166             hg->GetZaxis()->SetRangeUser(dict("zAxisRangeLo"), dict("zAxisRangeHi"));
0167         }
0168     }
0169     // Set Ndivisions
0170     if (dict["xAxisNdivisions"]) hg->GetXaxis()->SetNdivisions(dict("xAxisNdivisions"));
0171     if (dict["yAxisNdivisions"]) hg->GetYaxis()->SetNdivisions(dict("yAxisNdivisions"));
0172     if (dict["zAxisNdivisions"]) hg->GetZaxis()->SetNdivisions(dict("zAxisNdivisions"));
0173     return hg;
0174 };
0175 
0176 TLine* noi_fmt(TLine* line, noiDict options={{}}, noiDict dict={{
0177         "LineColor",kBlack, "LineColorAlpha",kBlack, 1., "LineStyle",1,
0178         "LineWidth",1 }}) 
0179 {
0180     dict += options;
0181     line->SetLineColorAlpha(dict("LineColorAlpha",1),dict("LineColorAlpha",2));
0182     line->SetLineStyle(dict("LineStyle"));
0183     line->SetLineWidth(dict("LineWidth"));
0184     return line;
0185 }
0186 
0187 TLegend* noi_fmt (TLegend* leg, noiDict _override={{}}, 
0188         // default values:
0189         noiDict dict={{ "LineColor", kWhite, "LineColorAlpha",0., "FillColorAlpha",kWhite, 0. }}
0190 ) {
0191     dict += _override;
0192     if (dict["LineColor"]) 
0193         leg->SetLineColorAlpha(dict("LineColor"),dict("LineColorAlpha",0.));
0194     if (dict["FillColor"]) 
0195         leg->SetLineColorAlpha(dict("FillColor"),dict("FillColorAlpha",0.));
0196     if (dict["FillStyle"])
0197         leg->SetFillStyle(dict("FillStyle"));
0198     if (dict["TextSize"]) leg->SetTextSize(dict("TextSize"));
0199     return leg;
0200 };
0201 
0202 TGraph* noi_fmt (TGraph* hg, noiDict _override={{}}, noiDict dict=_tu_fmt__hg_dict()) {
0203     // if don't want defaults, add {} to override value
0204     dict += _override;
0205 
0206     if (dict["MarkerStyle"]) hg->SetMarkerStyle(dict("MarkerStyle"));
0207     if (dict["MarkerColor"])   hg->SetMarkerColor(dict("MarkerColor"));
0208     if (dict["MarkerColorAlpha"]) hg->SetMarkerColorAlpha(dict("MarkerColorAlpha",1),dict("MarkerColorAlpha",2));
0209 
0210     if (dict["MarkerSize"]) hg->SetMarkerSize(dict("MarkerSize"));
0211     if (dict["LineWidth"]) hg->SetLineWidth(dict("LineWidth"));
0212     if (dict["LineStyle"]) hg->SetLineStyle(dict("LineStyle"));
0213 
0214     if (dict["LineColor"]) hg->SetLineColor(dict("LineColor"));
0215     if (dict["LineColorAlpha"]) hg->SetLineColorAlpha(dict("LineColorAlpha",1),dict("LineColorAlpha",2));
0216 
0217     if (!dict["LineColor"] && !dict["LineColorAlpha"] && (dict["MarkerColor"] || dict["MarkerColorAlpha"])) {
0218         if (dict["MarkerColor"]) hg->SetLineColor(dict("MarkerColor"));
0219         if (dict["MarkerColorAlpha"]) hg->SetLineColorAlpha(dict("MarkerColorAlpha",1),dict("MarkerColorAlpha",2));
0220     }
0221     /* else if (dict["MarkerColor"]) */
0222         /* hg->SetLineColorAlpha(dict("MarkerColor"), dict("LineAlpha",dict("MarkerAlpha",1.))); */
0223     if (dict["FillColor"]) hg->SetFillColor(dict("FillColor"));
0224     if (dict["FillColorAlpha"]) hg->SetFillColorAlpha(dict("FillColorAlpha",1),dict("FillColorAlpha",2));
0225 
0226     if (dict["FillStyle"]) hg->SetFillStyle(dict("FillStyle"));
0227 
0228     // Set titles
0229     if (dict["Title"]) hg->SetTitle(dict("Title"));
0230     if (dict["xAxisTitle"]) hg->GetXaxis()->SetTitle(dict("xAxisTitle"));
0231     if (dict["yAxisTitle"]) hg->GetYaxis()->SetTitle(dict("yAxisTitle"));
0232 
0233     // Set axes styles
0234 
0235     // x Axis
0236     if (dict["xAxisTitleFont"])
0237         hg->GetXaxis()->SetTitleFont(dict("xAxisTitleFont"));
0238     if (dict["xAxisTitleSize"])
0239         hg->GetXaxis()->SetTitleSize(dict("xAxisTitleSize"));
0240     /* cout << " beta " << endl; */
0241     /* if (dict["xAxisTitleOffset"]) cout << " Setting xaxistitleoffset " <<  dict("xAxisTitleOffset") << endl; */
0242     if (dict["xAxisTitleOffset"])
0243         hg->GetXaxis()->SetTitleOffset(dict("xAxisTitleOffset"));
0244     if (dict["xAxisLabelFont"])
0245         hg->GetXaxis()->SetLabelFont(dict("xAxisLabelFont"));
0246     if (dict["xAxisLabelSize"])
0247         hg->GetXaxis()->SetLabelSize(dict("xAxisLabelSize"));
0248     if (dict["xAxisLabelOffset"])
0249         hg->GetXaxis()->SetLabelOffset(dict("xAxisLabelOffset"));
0250 
0251     // y Axis
0252     if (dict["yAxisTitleFont"])
0253         hg->GetYaxis()->SetTitleFont(dict("yAxisTitleFont"));
0254     if (dict["yAxisTitleSize"])
0255         hg->GetYaxis()->SetTitleSize(dict("yAxisTitleSize"));
0256     if (dict["yAxisTitleOffset"])
0257         hg->GetYaxis()->SetTitleOffset(dict("yAxisTitleOffset"));
0258     if (dict["yAxisLabelFont"])
0259         hg->GetYaxis()->SetLabelFont(dict("yAxisLabelFont"));
0260     if (dict["yAxisLabelSize"])
0261         hg->GetYaxis()->SetLabelSize(dict("yAxisLabelSize"));
0262     if (dict["yAxisLabelOffset"])
0263         hg->GetYaxis()->SetLabelOffset(dict("yAxisLabelOffset"));
0264 
0265     if (dict["xAxisRange"]) hg->GetXaxis()->SetRangeUser(dict("xAxisRange",1),dict("xAxisRange",2));
0266     // Set Axis ranges with {x||y||z}AxisRange{Lo||Hi}
0267     if (dict["xAxisRangeLo"] || dict["xAxisRangeHi"]) {
0268         if (!dict["xAxisRangeLo"] || !dict["xAxisRangeHi"]) {
0269             cout << " Warning in noi_fmt: has xAxisRange{lo||hi} but not both. Needs both."<<endl;
0270             cout << " -> Not setting xAxisRange." << endl;
0271         } else {
0272             hg->GetXaxis()->SetRangeUser(dict("xAxisRangeLo"), dict("xAxisRangeHi"));
0273         }
0274     }
0275 
0276     if (dict["yAxisRange"]) hg->GetYaxis()->SetRangeUser(dict("yAxisRange",1),dict("yAxisRange",2));
0277     if (dict["yAxisRangeLo"] || dict["yAxisRangeHi"]) {
0278         if (!dict["yAxisRangeLo"] || !dict["yAxisRangeHi"]) {
0279             cout << " Warning in noi_fmt: has yAxisRange{Lo||Hi} but not both. Needs both."<<endl;
0280             cout << " -> Not setting yAxisRange." << endl;
0281         } else {
0282             hg->GetYaxis()->SetRangeUser(dict("yAxisRangeLo"), dict("yAxisRangeHi"));
0283         }
0284     }
0285     // Set Ndivisions
0286     if (dict["xAxisNdivisions"]) hg->GetXaxis()->SetNdivisions(dict("xAxisNdivisions"));
0287     if (dict["yAxisNdivisions"]) hg->GetYaxis()->SetNdivisions(dict("yAxisNdivisions"));
0288     return hg;
0289 };
0290     
0291 #endif