9 double x2 = (x[0] -
p[3]) * (x[0] -
p[3]);
12 double below =
p[0] * std::exp(
p[2] * x[0]) +
p[1] * std::exp(
p[2] * x[0] * x[0]);
13 double transition = 0.5 * (std::erf((x[0] -
p[3]) /
p[4]) + 1.);
21 f->SetParameter(0, 1.e-10);
22 f->SetParameter(1, 1.e-10);
23 f->SetParameter(2, -1.e-10);
25 f->SetParameter(4, 0.1);
26 f->SetParameter(5, 1.e-10);
27 f->SetParameter(6, 1.e-10);
28 f->SetParameter(7, 1.e-10);
34 TVirtualFitter::SetMaxIterations(
kMaxInt);
41 for (
int i = 3;
i <
fbelow->GetNpar(); ++
i)
46 for (
int i = 0;
i < 3; ++
i)
49 fabove->FixParameter(4, 0.1);
52 for (
int i = 0;
i < 3; ++
i)
54 for (
int i = 3;
i <
fbelow->GetNpar(); ++
i)
57 fall->FixParameter(4, 0.1);
59 fall->ReleaseParameter(3);
60 fall->ReleaseParameter(4);
68 std::cout <<
fall->GetParameter(3) <<
" +- " <<
fall->GetParError(3) << std::endl;
70 if (std::fabs(
fall->GetParameter(3) -
vstart) < 0.005)
81 TVirtualFitter::SetMaxIterations(
kMaxUInt);
83 std::cout <<
" --- IV FIT : " <<
g << std::endl;
88 auto f =
new TF1(
"fSURF",
"expo(0) + pol0(2) + (x > [3]) * ( [4] * pow(abs(x - [3]), [5]) + [6] * pow(abs(x - [3]), [7]) )", 0., 100.);
94 for (
int i = 0;
i <
f->GetNpar(); ++
i)
95 f->FixParameter(
i, 0.);
96 f->ReleaseParameter(0);
97 f->ReleaseParameter(1);
98 f->SetParLimits(1, -1.e6, 0.);
102 for (
int i = 0;
i <
f->GetNpar(); ++
i)
103 f->ReleaseParameter(
i);
104 f->FixParameter(0,
f->GetParameter(0));
105 f->FixParameter(1,
f->GetParameter(1));
106 f->SetParameter(2, 1.e-12);
107 f->SetParLimits(2, 0., 1.e-10);
110 f->SetParameter(4, 1.e-12);
111 f->SetParLimits(4, 0., 1.e-6);
112 f->FixParameter(5, 2.);
114 f->SetParameter(6, 1.e-12);
116 f->FixParameter(7, 4.);
121 for (
int i = 0;
i <
f->GetNpar(); ++
i)
122 f->ReleaseParameter(
i);
123 f->SetParLimits(1, -1.e3, 0.);
124 f->SetParLimits(2, 0., 1.e-10);
126 f->SetParLimits(4, 0., 1.e-6);
127 f->FixParameter(5, 2.);
130 f->FixParameter(7, 4.);
132 g->Fit(
f,
"0",
"", 0.,
vstart + 3.);
133 f->ReleaseParameter(5);
134 f->ReleaseParameter(7);
136 std::cout <<
" --->>> " <<
res << std::endl;
148 std::cout <<
"vdb = " <<
f->GetParameter(3) <<
" +- " <<
f->GetParError(3) << std::endl;
170 for (
int i = 0;
i <
g->GetN(); ++
i)
184 std::vector<std::string>
rows,
185 std::vector<std::string>
cols,
199 c =
new TCanvas(
"c",
"c", 800, 800);
200 c->DrawFrame(
vmin, 1.e-13,
vmax, 1.e-3,
";bias voltage (V);current (A)");
207 auto hbreak =
new TH1F(
"hbreak",
"", 1000., 0., 100.);
229 fSURF->SetParameter(4, 0.);
230 fSURF->SetRange(0., 100.);
231 for (
int i = 0;
i <
g->GetN(); ++
i)
239 gg->SetName(
g->GetName());
243 for (
int i = 0;
i <
g->GetN(); ++
i)
248 gg->SetPoint(n,
g->GetX()[
i],
g->GetY()[
i]);
249 gg->SetPointError(n,
g->GetEX()[
i],
g->GetEY()[
i]);
TH2_Type * build_fine_tune_raw_histogram(std::vector< TString > kInputFileNames, TString kRunTag, TString kOutputFileName, bool kRecalculate)
Functions -------------------------------------------------------------------------------------------...
Definition fine_analysis.h:80
double iv_fit_function(double *x, double *p)
Definition make_iv_scan.C:7
TGraphErrors * make_iv_scan(std::string filename, std::string filenameOPEN="", std::string filenameZERO="", float vbreak=-1.)
Definition make_iv_scan.C:154
TF1 * iv_fit_better(TGraphErrors *g, float vstart, int ntry=100)
Definition make_iv_scan.C:32
TF1 * get_iv_fit_function(double vbreak)
Definition make_iv_scan.C:18
bool iv_fit_oneshot
Definition make_iv_scan.C:5
TF1 * iv_fit(TGraphErrors *g, float vstart, bool oneshot=true)
Definition make_iv_scan.C:79
TCanvas * draw_iv_scan(std::string dirname, std::string tagname, std::vector< std::string > rows, std::vector< std::string > cols, std::vector< std::string > outliers, TCanvas *c=nullptr, int marker=20, int color=kAzure - 3, float vmin=0., float vmax=100., float vcut=100., bool subtractopen=true, float subtractsurface=-1.)
Definition make_iv_scan.C:182
Definition transition.py:1
TGraphErrors * makeiv(const std::string fnivscan, const std::string fnzero, bool invertX=true, bool invertY=true, bool write=true)
Definition makeiv.C:6