4#include "KVedaLossRangeFitter.h"
18 0.1, .2, 0.5, 1, 2, 5, 10, 25, 50, 100, 250, 500, -1
30 for (
int i = 4; i >= 0; --i) lr =
e[0] * lr +
a[i];
69 TIter next(mats.get());
70 while ((mat = (
TNamed*)next())) {
79 Info(
"SetMaterial",
"Initial fit parameters will be taken from:");
94 std::vector<Double_t> pars;
97 for (
int i = 0; i < npar; ++i) {
118 r->SetMarkerStyle(24);
119 r->SetTitle(
Form(
"Z = %d", Z));
122 if (energy[i] < 0.)
break;
126 r->SetPoint(ip++, logE,
log(
R));
146 r->SetMarkerStyle(20);
148 r->SetTitle(
Form(
"VEDA Z = %d", Z));
151 if (energy[i] < 0.)
break;
155 r->SetPoint(ip++, logE,
log(
R));
188 ofstream results(output_file.
Data());
191 for (
int Z = Zmin; Z <= Zmax; Z++) {
201 printf(
"Z = %d : fit status ", Z);
202 if (fitStatus == 0) {
206 printf(
"PROBLEM (%d)\n", fitStatus);
221 output << setw(4) << Z <<
"." << setw(4) <<
Aref <<
". ";
224 output << endl <<
" ";
280 else output <<
" 0. 0." << endl;
282 output <<
"Z = 1,2 0.1 < E/A < 400 MeV" << endl <<
"Z = 3,100 0.1 < E/A < 250 MeV" << endl;
Option_t Option_t TPoint TPoint const char GetTextMagnitude GetFillStyle GetLineColor GetLineWidth GetMarkerStyle GetTextAlign GetTextColor GetTextSize void char Point_t Rectangle_t WindowAttributes_t Float_t Float_t g
char * Form(const char *fmt,...)
R__EXTERN TSystem * gSystem
virtual const Char_t * GetType() const
Material for use in energy loss & range calculations.
Double_t GetMoleWt() const
void PrintComposition(std::ostream &) const
Print to stream the composition of this material, in a format compatible with the VEDALOSS parameter ...
Double_t GetDensity() const
void Print(Option_t *="") const
virtual Double_t GetRangeOfIon(Int_t Z, Int_t A, Double_t E, Double_t isoAmat=0.)
KVIonRangeTableMaterial * GetMaterial(const Char_t *material) const
Returns pointer to material of given name or type.
Description of material in the KVedaLoss range table.
virtual Double_t GetRangeOfIon(Int_t Z, Int_t A, Double_t E, Double_t isoAmat=0.)
void GetParameters(Int_t Zion, Int_t &Aion, std::vector< Double_t > &rangepar)
Fit a range table using the VEDALOSS functional.
TGraph * GenerateRangeTable(Int_t Z)
void PrintFitParameters(Int_t, std::ostream &)
KVIonRangeTableMaterial * fMaterial
range table to fit
void SetMaterial(KVIonRangeTableMaterial *m)
Sets range table to fit. Also finds material with closest Z in VEDALOSS library.
KVedaLossRangeFitter()
Default constructor.
void DoFits(TString output_file, Int_t Zmin=1, Int_t Zmax=100)
Perform fits to range tables for elements from Zmin to Zmax.
TGraph * GenerateVEDALOSSRangeTable(Int_t Z)
virtual ~KVedaLossRangeFitter()
Destructor.
void PrintFitHeader(std::ostream &)
KVedaLossMaterial * fClosestVedaMat
closest known VEDALOSS material
void SetInitialParameters(Int_t Z)
Int_t FitRangeTable(TGraph *)
Double_t range(Double_t *, Double_t *)
express logR as a polynomial of log(E/A)
TObjArray * GetListOfMaterials()
virtual Double_t GetParameter(const TString &name) const
virtual Int_t GetNpar() const
virtual void SetParameter(const TString &name, Double_t value)
const char * GetName() const override
virtual void Info(const char *method, const char *msgfmt,...) const
const char * Data() const
virtual void Sleep(UInt_t milliSec)
RVec< PromoteType< T > > log(const RVec< T > &v)