KaliVeda
Toolkit for HIC analysis
|
Base class for all detector calibrations.
You can define a basic calibrator object with a mathematical formula string (TFormula) and a type name:
The formula will be used by a TF1, so you can retrieve e.g. the number of parameters with:
Setting and retrieving parameter values are handled by:
Before associating it with a detector to calibrate, you need to define the input 'signal' (see KVDetectorSignal class) which must be provided by the detector, and the name of the output 'signal' resulting from this calibration which will be added to the detector's list:
The input 'signal' is of course the quantity that will be used in place of x
in the formula given to the constructor.
> N.B. if the specified input signal is not defined for the detector the calibrator is associated with, > no new output signal will be generated for the detector and the calibrator will be unused.
Associating the calibrator with a detector:
> N.B. the calibrator object is 'adopted' by the detector and will be deleted by the detector. > Do not try to use the same calibrator object with more than one detector!
Adding to the detector will set the name of the calibrator object:
In order to add calibrations to a dataset, it needs to have a file [array_name].CalibrationFiles.dat
which contains the names of files containing different calibrations for different detectors and different runs.
Each of these files should have the same basic structure:
This file defines how to transform the PG
signal of the listed detectors into a new Volts
signal.
See the chapter in the User's Guide for more details.
Definition at line 99 of file KVCalibrator.h.
#include <KVCalibrator.h>
Public Member Functions | |
KVCalibrator () | |
KVCalibrator (const TString &formula, const TString &type) | |
virtual | ~KVCalibrator () |
virtual Double_t | Compute (Double_t x, const KVNameValueList &) const |
KVDetector * | GetDetector () const |
TGraph * | GetGraphOfCalibration (int npts, KVValueRange< double > input_range, const KVNameValueList &par="") |
TString | GetInputSignalType () const |
Int_t | GetNumberParams () const |
TString | GetOutputSignalType () const |
Double_t | GetParameter (int i) const |
Bool_t | GetStatus () const |
Bool_t | InversionFailure () const |
virtual Double_t | Invert (Double_t x, const KVNameValueList &) const |
virtual Bool_t | IsAvailableFor (const KVNameValueList &) const |
Bool_t | IsUseInverseFunction () const |
Double_t | operator() (Double_t x, const KVNameValueList &par="") |
virtual void | Print (Option_t *opt="") const |
Print a description of the calibration object, including a list of its parameters. | |
virtual void | Reset () |
void | SetDetector (KVDetector *d) |
void | SetInputSignalType (const TString &type) |
virtual void | SetOptions (const KVNameValueList &) |
void | SetOutputSignalType (const TString &type) |
void | SetParameter (int i, Double_t par_val) const |
void | SetStatus (Bool_t ready) |
void | SetUseInverseFunction (Bool_t yes=kTRUE) |
Public Member Functions inherited from KVBase | |
KVBase () | |
Default constructor. | |
KVBase (const Char_t *name, const Char_t *title="") | |
Ctor for object with given name and type. | |
KVBase (const KVBase &) | |
copy ctor | |
virtual | ~KVBase () |
virtual void | Clear (Option_t *opt="") |
Clear object properties : name, type/title, number, label. | |
virtual void | Copy (TObject &) const |
Make a copy of this object. | |
const Char_t * | GetLabel () const |
UInt_t | GetNumber () const |
UInt_t | GetNumberOfObjects () const |
virtual TObject * | GetObject () const |
virtual const Char_t * | GetType () const |
Bool_t | HasLabel () const |
virtual Bool_t | IsCalled (const Char_t *name) const |
Bool_t | IsLabelled (const Char_t *l) const |
virtual Bool_t | IsType (const Char_t *typ) const |
virtual void | List () |
KVBase & | operator= (const KVBase &) |
copy assignment operator | |
Double_t | ProtectedGetX (const TF1 *func, Double_t val, int &status, Double_t xmin=0.0, Double_t xmax=0.0) const |
void | SetLabel (const Char_t *lab) |
virtual void | SetNumber (UInt_t num) |
virtual void | SetType (const Char_t *str) |
Public Member Functions inherited from TNamed | |
TNamed () | |
TNamed (const char *name, const char *title) | |
TNamed (const TNamed &named) | |
TNamed (const TString &name, const TString &title) | |
virtual | ~TNamed () |
void | Clear (Option_t *option="") override |
TObject * | Clone (const char *newname="") const override |
Int_t | Compare (const TObject *obj) const override |
void | Copy (TObject &named) const override |
virtual void | FillBuffer (char *&buffer) |
const char * | GetName () const override |
const char * | GetTitle () const override |
ULong_t | Hash () const override |
TClass * | IsA () const override |
Bool_t | IsSortable () const override |
void | ls (Option_t *option="") const override |
TNamed & | operator= (const TNamed &rhs) |
void | Print (Option_t *option="") const override |
virtual void | SetName (const char *name) |
virtual void | SetNameTitle (const char *name, const char *title) |
virtual void | SetTitle (const char *title="") |
virtual Int_t | Sizeof () const |
void | Streamer (TBuffer &) override |
void | StreamerNVirtual (TBuffer &ClassDef_StreamerNVirtual_b) |
Public Member Functions inherited from TObject | |
TObject () | |
TObject (const TObject &object) | |
virtual | ~TObject () |
void | AbstractMethod (const char *method) const |
virtual void | AppendPad (Option_t *option="") |
virtual void | Browse (TBrowser *b) |
ULong_t | CheckedHash () |
virtual const char * | ClassName () const |
virtual void | Delete (Option_t *option="") |
virtual Int_t | DistancetoPrimitive (Int_t px, Int_t py) |
virtual void | Draw (Option_t *option="") |
virtual void | DrawClass () const |
virtual TObject * | DrawClone (Option_t *option="") const |
virtual void | Dump () const |
virtual void | Error (const char *method, const char *msgfmt,...) const |
virtual void | Execute (const char *method, const char *params, Int_t *error=nullptr) |
virtual void | Execute (TMethod *method, TObjArray *params, Int_t *error=nullptr) |
virtual void | ExecuteEvent (Int_t event, Int_t px, Int_t py) |
virtual void | Fatal (const char *method, const char *msgfmt,...) const |
virtual TObject * | FindObject (const char *name) const |
virtual TObject * | FindObject (const TObject *obj) const |
virtual Option_t * | GetDrawOption () const |
virtual const char * | GetIconName () const |
virtual char * | GetObjectInfo (Int_t px, Int_t py) const |
virtual Option_t * | GetOption () const |
virtual UInt_t | GetUniqueID () const |
virtual Bool_t | HandleTimer (TTimer *timer) |
Bool_t | HasInconsistentHash () const |
virtual void | Info (const char *method, const char *msgfmt,...) const |
virtual Bool_t | InheritsFrom (const char *classname) const |
virtual Bool_t | InheritsFrom (const TClass *cl) const |
virtual void | Inspect () const |
void | InvertBit (UInt_t f) |
Bool_t | IsDestructed () const |
virtual Bool_t | IsEqual (const TObject *obj) const |
virtual Bool_t | IsFolder () const |
R__ALWAYS_INLINE Bool_t | IsOnHeap () const |
R__ALWAYS_INLINE Bool_t | IsZombie () const |
void | MayNotUse (const char *method) const |
virtual Bool_t | Notify () |
void | Obsolete (const char *method, const char *asOfVers, const char *removedFromVers) const |
void | operator delete (void *ptr) |
void | operator delete (void *ptr, void *vp) |
void | operator delete[] (void *ptr) |
void | operator delete[] (void *ptr, void *vp) |
void * | operator new (size_t sz) |
void * | operator new (size_t sz, void *vp) |
void * | operator new[] (size_t sz) |
void * | operator new[] (size_t sz, void *vp) |
TObject & | operator= (const TObject &rhs) |
virtual void | Paint (Option_t *option="") |
virtual void | Pop () |
virtual Int_t | Read (const char *name) |
virtual void | RecursiveRemove (TObject *obj) |
void | ResetBit (UInt_t f) |
virtual void | SaveAs (const char *filename="", Option_t *option="") const |
virtual void | SavePrimitive (std::ostream &out, Option_t *option="") |
void | SetBit (UInt_t f) |
void | SetBit (UInt_t f, Bool_t set) |
virtual void | SetDrawOption (Option_t *option="") |
virtual void | SetUniqueID (UInt_t uid) |
void | StreamerNVirtual (TBuffer &ClassDef_StreamerNVirtual_b) |
virtual void | SysError (const char *method, const char *msgfmt,...) const |
R__ALWAYS_INLINE Bool_t | TestBit (UInt_t f) const |
Int_t | TestBits (UInt_t f) const |
virtual void | UseCurrentStyle () |
virtual void | Warning (const char *method, const char *msgfmt,...) const |
virtual Int_t | Write (const char *name=nullptr, Int_t option=0, Int_t bufsize=0) |
virtual Int_t | Write (const char *name=nullptr, Int_t option=0, Int_t bufsize=0) const |
Static Public Member Functions | |
static KVCalibrator * | MakeCalibrator (const Char_t *type) |
Static Public Member Functions inherited from KVBase | |
static Bool_t | AreEqual (Double_t x, Double_t y, Long64_t maxdif=1) |
Comparison between two 64-bit floating-point values. | |
static void | BackupFileWithDate (const Char_t *path) |
static void | CombineFiles (const Char_t *file1, const Char_t *file2, const Char_t *newfilename, Bool_t keep=kTRUE) |
static void | Deprecated (const char *method, const char *advice) |
static Bool_t | FindClassSourceFiles (const Char_t *class_name, KVString &imp_file, KVString &dec_file, const Char_t *dir_name=".") |
static Bool_t | FindExecutable (TString &exec, const Char_t *path="$(PATH)") |
static const Char_t * | FindFile (const Char_t *search, TString &wfil) |
static const Char_t * | GetBINDIRFilePath (const Char_t *namefile="") |
static const Char_t * | GetDATABASEFilePath () |
static const Char_t * | GetDATADIRFilePath (const Char_t *namefile="") |
static Bool_t | GetDataSetEnv (const Char_t *dataset, const Char_t *type, Bool_t defval) |
static const Char_t * | GetDataSetEnv (const Char_t *dataset, const Char_t *type, const Char_t *defval) |
static Double_t | GetDataSetEnv (const Char_t *dataset, const Char_t *type, Double_t defval) |
static const Char_t * | GetETCDIRFilePath (const Char_t *namefile="") |
static const Char_t * | GetExampleFilePath (const Char_t *library, const Char_t *namefile) |
Return full path to example file for given library (="KVMultiDet", "BackTrack", etc.) | |
static const Char_t * | GetINCDIRFilePath (const Char_t *namefile="") |
static const Char_t * | GetKVBuildDate () |
Returns KaliVeda build date. | |
static const Char_t * | GetKVBuildDir () |
Returns top-level directory used for build. | |
static const Char_t * | GetKVBuildTime () |
Returns KaliVeda build time. | |
static const Char_t * | GetKVBuildType () |
Returns KaliVeda build type (cmake build: Release, Debug, RelWithDebInfo, ...) | |
static const Char_t * | GetKVBuildUser () |
Returns username of person who performed build. | |
static const Char_t * | GetKVSourceDir () |
Returns top-level directory of source tree used for build. | |
static const Char_t * | GetKVVersion () |
Returns KaliVeda version string. | |
static const Char_t * | GetLIBDIRFilePath (const Char_t *namefile="") |
static const Char_t * | GetListOfPlugins (const Char_t *base) |
static const Char_t * | GetListOfPluginURIs (const Char_t *base) |
static const Char_t * | GetPluginURI (const Char_t *base, const Char_t *plugin) |
static void | GetTempFileName (TString &base) |
static const Char_t * | GetTEMPLATEDIRFilePath (const Char_t *namefile="") |
static const Char_t * | GetWORKDIRFilePath (const Char_t *namefile="") |
static const Char_t * | gitBranch () |
Returns git branch of sources. | |
static const Char_t * | gitCommit () |
Returns last git commit of sources. | |
static void | InitEnvironment () |
static bool | is_gnuinstall () |
static Bool_t | IsThisAPlugin (const TString &uri, TString &base) |
static TPluginHandler * | LoadPlugin (const Char_t *base, const Char_t *uri="0") |
static Bool_t | OpenContextMenu (const char *method, TObject *obj, const char *alt_method_name="") |
static void | OpenTempFile (TString &base, std::ofstream &fp) |
static void | PrintSplashScreen () |
Prints welcome message and infos on version etc. | |
static Bool_t | SearchAndOpenKVFile (const Char_t *name, KVSQLite::database &dbfile, const Char_t *kvsubdir="") |
static Bool_t | SearchAndOpenKVFile (const Char_t *name, std::ifstream &file, const Char_t *kvsubdir="", KVLockfile *locks=0) |
static Bool_t | SearchAndOpenKVFile (const Char_t *name, std::ofstream &file, const Char_t *kvsubdir="", KVLockfile *locks=0) |
static Bool_t | SearchKVFile (const Char_t *name, TString &fullpath, const Char_t *kvsubdir="") |
static const Char_t * | WorkingDirectory () |
Static Public Member Functions inherited from TNamed | |
static TClass * | Class () |
static const char * | Class_Name () |
static constexpr Version_t | Class_Version () |
static const char * | DeclFileName () |
Static Public Member Functions inherited from TObject | |
static TClass * | Class () |
static const char * | Class_Name () |
static constexpr Version_t | Class_Version () |
static const char * | DeclFileName () |
static Longptr_t | GetDtorOnly () |
static Bool_t | GetObjectStat () |
static void | SetDtorOnly (void *obj) |
static void | SetObjectStat (Bool_t stat) |
Private Member Functions | |
void | adjust_range_of_inverse_calibration () |
Double_t | do_inversion (Double_t x) const |
TF1 * | GetCalibFunction () const |
bool | in_range (double X, double Xmin, double Xmax) |
void | SetCalibFunction (TF1 *f) |
Private Attributes | |
TF1 * | fCalibFunc |
calibration function | |
KVDetector * | fDetector |
associated detector | |
Double_t | fInputMax |
required maximum input signal for inverse calibration | |
Double_t | fInputMin |
required minimum input signal for inverse calibration | |
TString | fInputSignal |
type of signal used as input | |
Bool_t | fInversionFail |
problem inverting calibration function | |
TString | fOutputSignal |
type of output calibrated signal | |
Bool_t | fReady |
= kTRUE if calibration formula & parameters have been set up | |
Bool_t | fUseInverseFunction |
true if inverse i.e. TF1::GetX should be used for Compute() | |
Additional Inherited Members | |
Public Types inherited from KVBase | |
enum | EKaliVedaBits { kIsKaliVedaObject = BIT(23) } |
Public Types inherited from TObject | |
enum | EDeprecatedStatusBits |
enum | EStatusBits |
Public Attributes inherited from TObject | |
kBitMask | |
kCanDelete | |
kCannotPick | |
kHasUUID | |
kInconsistent | |
kInvalidObject | |
kIsOnHeap | |
kIsReferenced | |
kMustCleanup | |
kNoContextMenu | |
kNotDeleted | |
kObjInCanvas | |
kOverwrite | |
kSingleKey | |
kWriteDelete | |
kZombie | |
Protected Member Functions inherited from TObject | |
virtual void | DoError (int level, const char *location, const char *fmt, va_list va) const |
void | MakeZombie () |
Protected Attributes inherited from TNamed | |
TString | fName |
TString | fTitle |
Protected Attributes inherited from TObject | |
kOnlyPrepStep | |
|
inline |
Definition at line 141 of file KVCalibrator.h.
Set up calibrator using mathematical formula
Definition at line 143 of file KVCalibrator.h.
|
inlinevirtual |
Definition at line 148 of file KVCalibrator.h.
|
private |
For an inverse calibration, the limits [min,max] given in the options concern the Y-values, i.e. the values Y=f(X) of the function which correspond to the input signal. We need to find the corresponding values of X in order to fix the range of the function, and avoid use of TF1::GetX() leading to many error messages.
Definition at line 16 of file KVCalibrator.cpp.
|
inlinevirtual |
Compute calibrated value from input x
Reimplemented in KVLightEnergyCsI, KVPulseHeightDefect, and KVRecombination.
Definition at line 185 of file KVCalibrator.h.
Invert calibration function to find input value corresponding to output value x.
In case of problems with the inversion (x not included in the range of values of the function) InversionFail() will return kTRUE.
Definition at line 122 of file KVCalibrator.h.
|
inlineprivate |
Definition at line 118 of file KVCalibrator.h.
|
inline |
Definition at line 236 of file KVCalibrator.h.
TGraph * KVCalibrator::GetGraphOfCalibration | ( | int | npts, |
KVValueRange< double > | input_range, | ||
const KVNameValueList & | par = "" |
||
) |
Make graph of calibration function in given range with given number of points. Any extra required parameters should be given in the KVNameValueList argument.
Definition at line 269 of file KVCalibrator.cpp.
|
inline |
Definition at line 224 of file KVCalibrator.h.
|
inline |
return number of parameters in formula
Definition at line 153 of file KVCalibrator.h.
|
inline |
Definition at line 228 of file KVCalibrator.h.
|
inline |
Definition at line 162 of file KVCalibrator.h.
|
inline |
Definition at line 173 of file KVCalibrator.h.
|
inlineprivate |
return true if X is within the given range
Definition at line 134 of file KVCalibrator.h.
|
inline |
Returns kTRUE after a failed attempt to invert the calibration function Value returned by calibrator should not be used in this case
Definition at line 253 of file KVCalibrator.h.
|
inlinevirtual |
Compute value of input for given output value (inverted calibration)
Reimplemented in KVPulseHeightDefect, KVRecombination, and KVLightEnergyCsI.
Definition at line 191 of file KVCalibrator.h.
|
inlinevirtual |
Used by KVCalibratedSignal to determine whether calibrated signals which depend on extra parameters (in the KVNameValueList) are effectively available for a given set of those extra parameters.
To be overridden as necessary in child classes.
Reimplemented in KVLightEnergyCsI.
Definition at line 202 of file KVCalibrator.h.
|
inline |
Returns true if the calibration function is actually the inverse i.e. if TF1::GetX(x) should be called in Compute() instead of TF1::Eval(x)
Definition at line 247 of file KVCalibrator.h.
|
static |
Create a new KVCalibrator object with class given by the plugin of given type
If type=="" or type is unknown, returns a new base calibrator KVCalibrator
Definition at line 177 of file KVCalibrator.cpp.
|
inline |
Same as Compute(x,par)
Definition at line 197 of file KVCalibrator.h.
Print a description of the calibration object, including a list of its parameters.
Reimplemented from KVBase.
Reimplemented in KVLightEnergyCsIFull.
Definition at line 152 of file KVCalibrator.cpp.
|
inlinevirtual |
Definition at line 178 of file KVCalibrator.h.
Set function for calibration. Delete any previous function.
Definition at line 112 of file KVCalibrator.h.
|
inline |
Definition at line 232 of file KVCalibrator.h.
Definition at line 216 of file KVCalibrator.h.
|
virtual |
Used to set up a function calibrator from infos in a calibration parameter file. Use an option string like this:
This is the standard case where the calibration function is fitted to output signal vs. input signal. In this case [min,max]
are the expected (allowed) range of input values.
If the calibration function is fitted to input signal vs. output signal then we have what we call an 'inverse calibration function' and in this case you should use options like:
In this case we need to calculate the range of output values we can give to the inverse function in order to have the expected (allowed) range of input values given by [min,max]
. In order to do this, it is necessary to give a reasonable range for the expected output values, [out_min,out_max]
. If these parameters are not given, the calibrator will not be valid.
Throws a std::invalid_argument exception if any of the required options are missing
Reimplemented in KVLightEnergyCsIFull.
Definition at line 220 of file KVCalibrator.cpp.
Definition at line 220 of file KVCalibrator.h.
Definition at line 158 of file KVCalibrator.h.
Definition at line 166 of file KVCalibrator.h.
Set true if the calibration function is actually the inverse i.e. if TF1::GetX(x) should be called in Compute() instead of TF1::Eval(x)
Definition at line 241 of file KVCalibrator.h.
|
private |
calibration function
Definition at line 102 of file KVCalibrator.h.
|
private |
associated detector
Definition at line 101 of file KVCalibrator.h.
|
private |
required maximum input signal for inverse calibration
Definition at line 108 of file KVCalibrator.h.
|
private |
required minimum input signal for inverse calibration
Definition at line 107 of file KVCalibrator.h.
|
private |
type of signal used as input
Definition at line 104 of file KVCalibrator.h.
|
mutableprivate |
problem inverting calibration function
Definition at line 109 of file KVCalibrator.h.
|
private |
type of output calibrated signal
Definition at line 105 of file KVCalibrator.h.
|
private |
= kTRUE if calibration formula & parameters have been set up
Definition at line 103 of file KVCalibrator.h.
|
private |
true if inverse i.e. TF1::GetX should be used for Compute()
Definition at line 106 of file KVCalibrator.h.