84 static Bool_t
ExitResidue(
const TString &exit, Int_t z_beam, Int_t a_beam,
101 Double_t e_in, e_out, e_eff, e_eff_lo, e_eff_hi;
102 Double_t n_reac, n_denom;
104 Double_t sub_frac, sub_frac_err;
108 Double_t stat_lo, stat_hi;
109 Double_t ErrLo()
const;
110 Double_t ErrHi()
const;
112 struct ChannelResult {
114 std::vector<TalysCurve> talys;
116 std::vector<TalysCurve> talys_sub;
117 std::vector<Point> points;
120 struct FitComponents {
121 std::vector<TGraph *> graph;
122 std::vector<TString> label;
123 std::vector<TString> tag;
125 Int_t Size()
const {
return Int_t(graph.size()); }
131 std::vector<Double_t> scale;
132 std::vector<Double_t> scale_err;
133 std::vector<Double_t> scale_raw;
134 std::vector<Double_t> scale_raw_err;
135 std::vector<Int_t> free_idx;
136 std::vector<Int_t> pinned;
144 Double_t fx_lo = 1.0e9, fx_hi = -1.0e9, fy_lo = 1.0e9, fy_hi = -1.0e9;
145 Double_t pull_max = 0.0;
150 TCanvas *c =
nullptr;
151 TPad *plot =
nullptr;
152 TPad *side =
nullptr;
154 TPad *bottom =
nullptr;
155 Int_t plot_right_margin_px = 0;
156 Int_t extra_width_px = 0;
157 std::vector<std::pair<TObject *, TString>> entries;
169 const std::vector<TString> &exits,
170 const char *what)
const;
175 const std::vector<TalysCurve> &talys,
176 const std::vector<TalysCurve> &talys_sub, Int_t reac, Point &pt);
177 void CompareReference(
const ChannelResult &r)
const;
180 void Draw(
const std::vector<const ChannelResult *> &rs,
181 const TString &name)
const;
184 void DrawFit(
const ChannelResult &r,
const TString &name)
const;
187 Bool_t CollectFitComponents(
const ChannelResult &r, Int_t m,
188 FitComponents &comp)
const;
191 void FitExitScales(
const ChannelResult &r,
const FitComponents &comp,
193 const std::vector<Double_t> *point_scale =
nullptr)
const;
195 void PrintSubtractionCheck(
const ChannelResult &r,
const FitComponents &comp,
196 const ScaleFit &fs)
const;
200 const FitComponents &comp,
const ScaleFit &fs,
204 Bool_t BuildScaledCurves(
const ChannelResult &r,
const FitComponents &comp,
205 const ScaleFit &fs, TGraph *&sum, TGraph *&fit,
206 TGraphErrors *&band)
const;
209 void BuildMeasuredGraphs(
const ChannelResult &r, TGraph *fit,
210 TGraphAsymmErrors *&measured,
211 TGraphAsymmErrors *&deviation,
212 FitFrame &frame)
const;
216 FitFrame &frame)
const;
220 const FitComponents &comp,
const TString &model_label,
221 Bool_t has_published, TString &scale_text,
222 Double_t &legend_width_px)
const;
227 const TString &scale_text, Double_t legend_width_px,
228 TGraph *sum, TGraph *fit, TGraphErrors *band,
229 const FitComponents &comp, TGraphAsymmErrors *published,
230 TGraphAsymmErrors *measured, FitPanels &pads)
const;
232 void DrawPullPanel(
const FitFrame &frame, TGraphAsymmErrors *deviation,
233 FitPanels &pads)
const;
236 static void StampPreliminary(
const TPad *pad);
238 static Long64_t ReadCount(TFile &f,
const char *name, Bool_t &ok);
239 static TGraph *Clipped(TGraph *g, Double_t e_lo, Double_t e_hi);
240 static Double_t Interpolated(TGraph *g, Double_t e);
241 static Double_t EffectiveEnergy(TGraph *axn, Double_t e_out, Double_t e_in);
242 static TCutG *ScaledCut(TCutG *cut, Double_t scale);
243 static Double_t CountInCut(TH2F *scatter, TCutG *cut, Double_t scale);
244 static Double_t Enclosed(Double_t nsigma);
248 static void PoissonInterval(Double_t count, Double_t &below, Double_t &above);
253 Double_t CutVariation(Int_t reac, Double_t per_count, TString &detail)
const;
255 Double_t GasPressureSys(Double_t sigma)
const;
257 static Double_t SubtractedFraction(
const std::vector<TalysCurve> &talys,
258 const std::vector<TalysCurve> &talys_sub,
259 Double_t e_out, Double_t e_in,
262 static Double_t StripAverage(TGraph *g, Double_t e_out, Double_t e_in,
265 TFile *cache_ =
nullptr;
266 Long64_t n_seen_ = 0, n_beam_ = 0;
267 Double_t n_gas_ = 0.0, areal_ = 0.0;
268 Double_t dE_[18], e_strip0_ = 0.0, cm_frac_ = 0.0, e_mid_[17];
269 std::vector<TString> talys_labels_;
270 std::vector<std::map<std::pair<Int_t, Int_t>, TGraph *>> talys_raw_;