1 #include "KVGaussFitMassModifier.h"
2 #include "KVMultiGaussIsotopeFit.h"
13 fItvs =
gr->GetIntervalSet(Z);
14 fGfit =
gr->GetMultiGaussFit(Z);
39 std::vector<double> pidlist;
42 while ((intvl = (
interval*)nxt_int())) {
45 pidlist.push_back(intvl->
GetPID());
53 bool fit_limited =
false;
55 if (mass_fit_parameters.
GetBoolValue(
"Limit range of fit")) {
71 pid_dist->
Fit(fGfit,
"NR");
76 pid_dist->
Fit(fGfit,
"NRME");
87 double min_proba = mass_fit_parameters.
GetDoubleValue(
"Minimum probability [%]") / 100.;
88 double delta_pid = 0.001;
89 TList accepted_intervals;
90 for (
double pid = fGfit->
GetPIDmin() ; pid <= fGfit->GetPIDmax(); pid += delta_pid) {
95 if (proba > min_proba) {
97 if (*Amax > most_prob_A) {
101 while (intvl->
GetA() < most_prob_A) {
104 accepted_intervals.
Add(intvl);
111 while (intvl->
GetA() < most_prob_A) {
114 accepted_intervals.
Add(intvl);
118 else if (most_prob_A) {
129 while ((intvl = (
interval*)nxt_int())) {
131 while (vec_alist[ig - 1] < intvl->
GetA()) {
135 remaining_gaussians.
Add(ig);
136 remaining_alist.
Add(intvl->
GetA());
157 for (ig = 1; ig <= alist.
GetNValues(); ++ig) {
char * Form(const char *fmt,...)
Change isotope masses in a multi-gauss fit by fixed offset.
KVGaussFitMassModifier(KVIDZAFromZGrid *gr, int Z)
Prepare mass modification object for the multi-gaussian fit for element in the given grid.
void Modify(int deltaA, TH1 *pid_dist, const KVNameValueList &mass_fit_parameters)
const KVNameValueList * GetParameters() const
Hybrid charge & mass identification grid.
void Initialize() override
double GetPIDvsAfit_a1() const
double GetGaussianWidth(int) const
double GetCentroid(int i) const
void InitializeParameterLimitsForNewFit()
void SetSigmaLimits(double smin, double smax)
void UpdateGaussianCentroidParameters()
Required in case the attribution of masses to the gaussians changes.
void SetFitRange(double min, double max)
Change range of fit.
double GetPIDvsAfit_a2() const
void SetPIDlist(const std::vector< double > pidlist)
void SetAlist(const std::vector< int > alist)
std::optional< int > GetMostProbableA(double PID, double &P) const
double GetBackgroundSlope() const
double GetPIDvsAfit_a0() const
double GetGaussianNorm(int i) const
double GetBackgroundConstant() const
void ReleaseCentroids()
Release the constraint on the positions of the centroids.
Handles lists of named parameters with different types, a list of KVNamedParameter objects.
Double_t GetDoubleValue(const Char_t *name) const
void SetValue(const Char_t *name, value_type value)
Bool_t HasStringParameter(const Char_t *name) const
Bool_t GetBoolValue(const Char_t *name) const
const Char_t * GetStringValue(const Char_t *name) const
Strings used to represent a set of ranges of values.
const Char_t * AsQuotedString() const
const Char_t * AsString(Int_t maxchars=0) const
void Add(Int_t)
Add value 'n' to the list.
void Set(const TString &l)
IntArray GetArray() const
virtual TFitResultPtr Fit(const char *formula, Option_t *option="", Option_t *goption="", Double_t xmin=0, Double_t xmax=0)
void Add(TObject *obj) override
TString & ReplaceAll(const char *s1, const char *s2)
void SetPIDmin(double pidmin)
void SetPIDmax(double pidmax)