19 #include "KVINDRADB.h"
20 #include "KVINDRADBRun.h"
21 #include "KVDBSystem.h"
22 #include "KVDBAlphaPeak.h"
23 #include "KVDBElasticPeak.h"
24 #include "KVDBChIoPressures.h"
25 #include "KVDBParameterSet.h"
26 #include "KVRunListLine.h"
32 #include "KVDataSet.h"
33 #include "KVDataSetManager.h"
36 #include "KVNumberList.h"
53 fChIoPressures = AddTable(
"ChIo Pressures",
"Pressures of ChIo");
54 fTapes = AddTable(
"Tapes",
"List of data storage tapes");
55 fCsILumCorr = AddTable(
"CsIGainCorr",
"CsI gain corrections for total light output");
56 fPedestals = AddTable(
"Pedestals",
"List of pedestal files");
58 AddTable(
"Channel-Volt",
59 "Calibration parameters for Channel-Volts conversion");
61 AddTable(
"Volt-Energy ChIo-Si",
62 "Calibration parameters for ChIo-Si Volts-Energy conversion");
64 AddTable(
"Light-Energy CsI Z=1",
65 "Calibration parameters for CsI detectors");
67 AddTable(
"Light-Energy CsI Z>1",
68 "Calibration parameters for CsI detectors");
85 "INDRA experiment parameter database")
96 "INDRA experiment parameter database")
117 KVINDRADB::~KVINDRADB()
121 if (gIndraDB ==
this)
177 Error(
"GetCalibrationPeaks",
178 "No KVINDRA object found. You need to build INDRA before using this method.");
184 Error(
"GetCalibrationPeaks",
185 "Calibration peak file not defined or not found");
198 Int_t frun = 0, lrun = 0;
204 Int_t cour, modu, sign, typ2,
first, last, entries;
213 if (sscanf(sline.
Data(),
"Run Range : %d %d", &frun, &lrun) != 2) {
215 "Bad format in line :\n%s\nUnable to read run range values",
220 ok_for_this_run =
kTRUE;
226 else if (!sline.
BeginsWith(
"#") && ok_for_this_run) {
230 if (sscanf(sline.
Data(),
"%d %d %d %d %f %f %f %d %f %d %d",
231 &cour, &modu, &sign, &typ2, &mean, &error, &
sigma,
232 &entries, &constante, &
first, &last) != 11) {
233 Warning(
"GetCalibrationPeaks()",
234 "Bad format in line :\n%s\nUnable to read peak parameters",
248 if (detector && detector != pic_det)
252 if (peak_type > 0 && peak_type != typ2)
256 if (signal_type && signal_type != sign)
306 if (peak && peak_energy > 0) {
307 if (typ2 == kElastic) {
339 peak_list->
Add(peak);
352 FindObjectByName(pic_det->
GetName());
394 Error(
"OpenCalibrationPeakFile",
"File already open");
429 fMeanGDir =
new TF1(
"INDRA_MeanGDIR", formula, 1, 10000);
444 Error(
"ReadGainList()",
"Could not open file %s",
448 Info(
"ReadGainList()",
"Reading gains ...");
455 UInt_t frun = 0, lrun = 0;
456 UInt_t run_ranges[MAX_NUM_RUN_RANGES][2];
482 if (sscanf(sline.
Data(),
"Run Range : %u %u", &frun, &lrun) != 2) {
484 "Bad format in line :\n%s\nUnable to read run range values",
486 cout <<
"sscanf=" << sscanf(sline.
Data(),
"Run Range : %u %u",
487 &frun, &lrun) << endl;
491 run_ranges[rr_number][0] = frun;
492 run_ranges[rr_number][1] = lrun;
494 if (rr_number == MAX_NUM_RUN_RANGES) {
495 Error(
"ReadGainList",
"Too many run ranges (>%d)",
502 if (sscanf(sline.
Data(),
"%7s %f", det_name, &gain) != 2) {
504 "Bad format in line :\n%s\nUnable to read",
512 par_list->
Add(parset);
556 Error(
"ReadChIoPressures()",
"Could not open file %s",
560 Info(
"ReadChIoPressures()",
"Reading ChIo pressures parameters...");
563 UInt_t frun = 0, lrun = 0;
564 UInt_t run_ranges[MAX_NUM_RUN_RANGES][2];
573 Float_t pressure[5] = { 0, 0, 0, 0, 0 };
585 par_list->
Add(parset);
588 for (
int zz = 0; zz < 5; zz++) pressure[zz] = 0.;
594 if (sscanf(sline.
Data(),
"Run Range : %u %u", &frun, &lrun) != 2) {
596 "Bad format in line :\n%s\nUnable to read run range values",
601 run_ranges[rr_number][0] = frun;
602 run_ranges[rr_number][1] = lrun;
604 if (rr_number == MAX_NUM_RUN_RANGES) {
605 Error(
"ReadChIoPressures",
"Too many run ranges (>%d)",
616 par_list->
Add(parset);
619 for (
int zz = 0; zz < 5; zz++) pressure[zz] = 0.;
636 read_pressure =
kTRUE;
638 if (chio ==
"2_3") pressure[0] = press.
Atof();
639 else if (chio ==
"4_5") pressure[1] = press.
Atof();
640 else if (chio ==
"6_7") pressure[2] = press.
Atof();
641 else if (chio ==
"8_12") pressure[3] = press.
Atof();
642 else if (chio ==
"13_17") pressure[4] = press.
Atof();
643 else read_pressure =
kFALSE;
705 Error(
"GetEventCrossSection",
"No target for run %d", run1);
709 for (
int run = run1; run <= run2; run++) {
737 for (
int run = run1; run <= run2; run++) {
768 Error(
"GetEventCrossSection",
769 "System %s unknown. Check list of systems (gIndraDB->GetSystems()->ls()).",
775 Error(
"GetEventCrossSection",
"No target defined for system %s",
781 for(
auto _run : system->
GetRuns())
784 if (run->GetTrigger() != mult_trig)
788 Coul_par_top) * (1. - run->GetTempsMort());
814 Error(
"GetTotalCrossSection",
815 "System %s unknown. Check list of systems (gIndraDB->GetSystems()->ls()).",
821 for(
auto _run : system->
GetRuns())
825 if (run->GetTrigger() != mult_trig)
827 sum += run->GetEvents();
848 Info(
"GetTotalCrossSection",
"Calculating cross-section for q=%f", Q_apres_cible);
851 for (
int i = 1; i <= events_histo->
GetNbinsX(); i++) {
853 if (events == 0)
continue;
861 cout <<
"Run#" << run_num <<
" Events : " << events
905 if (!strcmp(
GetDBEnv(
"Runlist.Separator"),
"<TAB>"))
956 Error(
"ReadNewRunList()",
"Could not open file %s",
961 Info(
"ReadNewRunList()",
"Reading run parameters ...");
966 while (fin.good() && !fin.eof()) {
969 if (
line.Length() > 1 && !
line.BeginsWith(
"#") && !
line.BeginsWith(
"Version")) {
1108 key =
GetDBEnv(
"Runlist.PlastAll");
1132 key =
GetDBEnv(
"Runlist.Comments");
1141 Error(
"GoodRunLine",
"Run %d already exists", run_n);
1184 if (g_dir_frq == 0) {
1185 Error(
"GetRunLengthFromGeneDirect",
"Mean frequency of G_DIR unknown for this dataset");
1190 Error(
"GetRunLengthFromGeneDirect",
"Run %d not in database", run);
1195 Error(
"GetRunLengthFromGeneDirect",
"Gene DIRECT total not known for run");
1198 return g_dir / g_dir_frq;
1265 Info(
"ReadCsITotalLightGainCorrections",
1266 "Reading corrections...");
1272 Error(
"ReadCsITotalLightGainCorrections",
"INDRADB.CsILumCorr is not defined. Check .kvrootrc files.");
1276 if (!gain_cor.
IsOK()) {
1277 Info(
"ReadCsITotalLightGainCorrections",
"No corrections found");
1282 filefmt =
GetDBEnv(
"CsILumCorr.FileName");
1283 if (filefmt ==
"") {
1284 Error(
"ReadCsITotalLightGainCorrections",
"INDRADB.CsILumCorr.FileName is not defined. Check .kvrootrc files.");
1294 filepath.
Form(filefmt.
Data(), run_num);
1297 ifstream filereader;
1301 line.ReadLine(filereader);
1302 while (filereader.good()) {
1306 line.ReadLine(filereader);
1311 line.ReadLine(filereader);
1315 line.ReadLine(filereader);
1321 "CsI Total Light Gain Correction", 1);
1326 line.ReadLine(filereader);
1331 Warning(
"ReadCsITotalLightGainCorrections",
"Run %d: no correction", run_num);
1355 Error(
"ReadChannelVolt()",
"Could not open file %s",
1359 Info(
"ReadChannelVolt()",
1360 "Reading electronic calibration for ChIo and Si...");
1364 UInt_t frun = 0, lrun = 0;
1365 UInt_t run_ranges[MAX_NUM_RUN_RANGES][2];
1370 Float_t a0, a1, a2, dum1, dum2;
1378 while (fin.good()) {
1392 if (sscanf(sline.
Data(),
"Run Range : %u %u", &frun, &lrun) != 2) {
1394 "Bad format in line :\n%s\nUnable to read run range values",
1399 run_ranges[rr_number][0] = frun;
1400 run_ranges[rr_number][1] = lrun;
1402 if (rr_number == MAX_NUM_RUN_RANGES) {
1403 Error(
"ReadChannelVolt",
"Too many run ranges (>%d)",
1410 if (sscanf(sline.
Data(),
"%u %u %u %f %f %f %f %f",
1411 &cour, &modu, &sign, &a0, &a1, &a2, &dum1,
1414 "Bad format in line :\n%s\nUnable to read",
1421 sprintf(det_name,
"CI_%02u%02u_GG", cour, modu);
1422 strcpy(cal_type,
"Channel-Volt GG");
1425 sprintf(det_name,
"CI_%02u%02u_PG", cour, modu);
1426 strcpy(cal_type,
"Channel-Volt PG");
1429 sprintf(det_name,
"SI_%02u%02u_GG", cour, modu);
1430 strcpy(cal_type,
"Channel-Volt GG");
1433 sprintf(det_name,
"SI_%02u%02u_PG", cour, modu);
1434 strcpy(cal_type,
"Channel-Volt PG");
1441 par_list->
Add(parset);
1451 if (!
OpenCalibFile(
"ElectronicCalibration.Etalons", fin2)) {
1452 Error(
"ReadChannelVolt()",
"Could not open file %s",
1456 Info(
"ReadChannelVolt()",
1457 "Reading electronic calibration for Si75 and SiLi...");
1461 par_list =
new TList;
1463 while (fin2.good()) {
1479 if (sscanf(sline.
Data(),
"Run Range : %u %u", &frun, &lrun) != 2) {
1481 "Bad format in line :\n%s\nUnable to read run range values",
1486 run_ranges[rr_number][0] = frun;
1487 run_ranges[rr_number][1] = lrun;
1489 if (rr_number == MAX_NUM_RUN_RANGES) {
1490 Error(
"ReadChannelVolt",
"Too many run ranges (>%d)",
1497 if (sscanf(sline.
Data(),
"%s %f %f %f",
1498 det_name, &a0, &a1, &a2) != 4) {
1500 "Bad format in line :\n%s\nUnable to read",
1505 gain.
Form(
"%s", det_name);
1508 scal_type.
Form(
"Channel-Volt %s", ((
TObjString*)toks->
At(2))->GetString().Data());
1514 par_list->
Add(parset);
1537 Error(
"ReadVoltEnergyChIoSi()",
"Could not open file %s",
1541 Info(
"ReadVoltEnergyChIoSi()",
1542 "Reading ChIo/Si calibration parameters...");
1546 UInt_t frun = 0, lrun = 0;
1547 UInt_t run_ranges[MAX_NUM_RUN_RANGES][2];
1557 while (fin.good()) {
1573 if (sscanf(sline.
Data(),
"Run Range : %u %u", &frun, &lrun) != 2) {
1574 Warning(
"ReadVoltEnergyAlpha()",
1575 "Bad format in line :\n%s\nUnable to read run range values",
1580 run_ranges[rr_number][0] = frun;
1581 run_ranges[rr_number][1] = lrun;
1583 if (rr_number == MAX_NUM_RUN_RANGES) {
1584 Error(
"ReadVoltEnergyAlpha",
"Too many run ranges (>%d)",
1591 if (sscanf(sline.
Data(),
"%7s %f %f %f", det_name, &a0, &a1, &chi)
1593 Warning(
"ReadVoltEnergyAlpha()",
1594 "Bad format in line :\n%s\nUnable to read parameters",
1602 par_list->
Add(parset);
1626 Error(
"ReadPedestalList()",
"Could not open file %s",
1630 Info(
"ReadPedestalList()",
"Reading pedestal file list...");
1633 Char_t filename_chio[80], filename_csi[80];
1636 while (fin.good()) {
1642 if (
line.BeginsWith(
'+')) {
1647 (
line.Data(),
"Run Range : %u %u", &runlist[0][0],
1648 &runlist[0][1]) != 2) {
1649 Warning(
"ReadPedestalList()",
"Format problem in line \n%s",
1655 sscanf(
line.Data(),
"%s", filename_chio);
1659 sscanf(
line.Data(),
"%s", filename_csi);
1664 new KVDBRecord(filename_chio,
"ChIo/Si/Etalons pedestals");
1665 dummy->
AddKey(
"Runs",
"Runs for which to use this pedestal file");
1668 dummy =
new KVDBRecord(filename_csi,
"CsI pedestals");
1669 dummy->
AddKey(
"Runs",
"Runs for which to use this pedestal file");
1676 cout <<
"Pedestals Read" << endl;
1715 filename.Form(
"CalibCsI.%s", zrange);
1717 Error(
"ReadLightEnergyCsI()",
"Could not open file %s",
1721 Info(
"ReadLightEnergyCsI()",
1722 "Reading Light-Energy CsI calibration parameters (%s)...", zrange);
1740 while (fin.good()) {
1745 (sline.
Data(),
"%d %d %f %f %f %f", &ring, &mod, &a1,
1746 &a2, &a3, &a4) != 6) {
1747 Warning(
"ReadLightEnergyCsI()",
1748 "Bad format in line :\n%s\nUnable to read parameters",
1756 Warning(
"ReadLightEnergyCsI()",
"Read calibration for non-existent detector CSI_%02d%02d",
1765 par_list->
Add(parset);
1801 Error(
"GetEventCrossSection",
"No target for run %d", run1);
1806 while (!runs.
End()) {
1808 int run = runs.
Next();
1837 while (!runs.
End()) {
1838 int run = runs.
Next();
1861 Error(
"ReadAbsentDetectors",
"Fichier %s, inconnu au bataillon",
GetCalibFileName(
"AbsentDet").Data());
1864 Info(
"ReadAbsentDetectors()",
"Lecture des detecteurs absents...");
1876 cout <<
rec->GetValue() << endl;
1879 while (!srec.
End()) {
1881 dbrec->
AddKey(
"Runs",
"List of Runs");
1888 dbrec->
AddKey(
"Runs",
"List of Runs");
1912 Info(
"ReadOoODetectors()",
"Lecture des detecteurs hors service ...");
1913 fOoODet =
AddTable(
"OoO Detectors",
"Name of out of order detectors");
1924 cout <<
rec->GetValue() << endl;
1927 while (!srec.
End()) {
1929 dbrec->
AddKey(
"Runs",
"List of Runs");
1936 dbrec->
AddKey(
"Runs",
"List of Runs");
1957 Error(
"ReadNotWorkingACQParams",
"Fichier %s, inconnu au bataillon",
GetCalibFileName(
"OoOACQPar").Data());
1960 Info(
"ReadNotWorkingACQParams()",
"Lecture des parametres d acq hors service ...");
1975 while (!srec.
End()) {
1977 dbrec->
AddKey(
"Runs",
"List of Runs");
1984 dbrec->
AddKey(
"Runs",
"List of Runs");
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 Float_t Int_t Int_t UInt_t UInt_t Rectangle_t Int_t Int_t Window_t TString Int_t GCValues_t GetPrimarySelectionOwner GetDisplay GetScreen GetColormap GetNativeEvent const char const char dpyName wid window const char font_name cursor keysym reg const char only_if_exist regb h Point_t winding char text const char depth char const char Int_t count const char ColorStruct_t color const char filename
char * Form(const char *fmt,...)
static ValType GetDataSetEnv(const KVString &dataset, const KVString &type, const ValType &defval)
static Bool_t SearchKVFile(const Char_t *name, TString &fullpath, const Char_t *kvsubdir="")
static Bool_t SearchAndOpenKVFile(const Char_t *name, KVSQLite::database &dbfile, const Char_t *kvsubdir="")
CsI(Tl) scintillation detectors of the INDRA multidetector array.
Wrapper for KVDBPeak describing alpha (thoron) peaks for calibration.
CHIO pressure parameters.
Wrapper for KVDBPeak describing elastic peaks for calibration.
To store calibration parameters in a database ,.
void SetParameters(const std::vector< Double_t > &pars)
Double_t GetParameter(UShort_t i=0) const
void SetParamName(UShort_t i, const TString &name)
void SetParameter(UShort_t i, Double_t val)
Calibration peak in database.
void SetSigType(const Char_t *sig)
void SetGain(Float_t gain)
Float_t GetEnergy() const
void SetRing(UChar_t ring)
void SetModule(UChar_t mod)
void SetEnergy(Float_t e)
void SetGas(Bool_t avec=kTRUE)
Record folder for the database.
virtual Bool_t AddKey(KVDBKey *key, Bool_t check=kTRUE)
virtual Bool_t AddLink(const Char_t *key_name, KVDBRecord *rec, Bool_t linkback=kTRUE)
virtual KVRList * GetLinks(const Char_t *key) const
Returns the list of records linked to this record in table "key".
virtual Int_t GetNumber() const
Description of an experimental run in database ,,.
ULong64_t GetEvents() const
KVTarget * GetTarget() const
Return target used for this run (actually target of KVDBSystem associated to run)
void SetComments(const KVString &comments)
KVDBSystem * GetSystem() const
void SetTrigger(Int_t trig)
virtual void ReadRunListLine(const KVString &)
virtual Int_t GetScaler(const Char_t *name) const
virtual void SetScaler(const Char_t *name, Int_t val)
Database class used to store information on different colliding systems studied during an experiment....
KVTarget * GetTarget() const
KVUnownedList GetRuns() const
Returns a sorted list of all the runs associated with this system.
virtual Bool_t AddRecord(KVDBRecord *add)
Database entry describing a data storage tape used to store raw data.
void AddRun(KVDBRun *run)
add run to list of runs stored on this tape
virtual KVDBTable * GetTable(const Char_t *table) const
virtual Bool_t AddTable(KVDBTable *table)
Base class for detector geometry description, interface to energy-loss calculations.
Base class to describe database of an experiment ,,.
virtual KVDBSystem * GetSystem(const Char_t *system) const
virtual void ReadSystemList()
virtual KVSeqCollection * GetRuns() const
TString GetCalibFileName(const Char_t *type) const
virtual void LinkListToRunRanges(TList *list, UInt_t rr_number, UInt_t run_ranges[][2])
Link the records contained in the list to the set of runs (see LinkRecordToRunRanges).
const KVNumberList & GetRunList() const
virtual void LinkListToRunRange(TList *list, const KVNumberList &nl)
Link the records contained in the list to the set of runs (see LinkRecordToRunRanges).
const Char_t * GetDataSetDir() const
virtual void LinkRecordToRunRange(KVDBRecord *rec, UInt_t first_run, UInt_t last_run)
virtual TString GetDBEnv(const Char_t *) const
Bool_t OpenCalibFile(const Char_t *type, std::ifstream &fs) const
TString fDataSet
the name of the dataset to which this database is associated
Database entry for each run of an INDRA experiment.
Double_t GetNIncidentIons(Double_t Q_apres_cible, Double_t Coul_par_top=1.e-10) const
void SetEndDate(const KVString &d)
Double_t GetTempsMort() const
Double_t GetEventCrossSection(Double_t Q_apres_cible, Double_t Coul_par_top=1.e-10) const
void SetLogbook(const Char_t *log)
void SetStartDate(const KVString &date)
Double_t GetTotalCrossSection(Double_t Q_apres_cible, Double_t Coul_par_top=1.e-10) const
void SetTMpercent(Float_t tmp)
void SetTime(Double_t time)
void SetEvents(ULong64_t evt_number)
DataBase of parameters for an INDRA campaign.
KVDBTable * fOoODet
(optional) Liste les detecteurs hors service
void CloseCalibrationPeakFile()
Close file containing database of calibration peaks.
void GoodRunLine() override
void AddTape(KVDBTape *r)
KVDBTable * fChanVolt
ChIo/Si channel-volt calibration parameters.
Double_t GetEventCrossSection(Int_t run, Double_t Q_apres_cible, Double_t Coul_par_top=1.e-10) const
std::ifstream __ifpeaks
ifstream for calibration peaks file
KVDBTable * fLitEnerCsI
CsI light-energy calibration for Z>1.
virtual void ReadOoOACQParams()
Double_t GetTotalCrossSection(Int_t run, Double_t Q_apres_cible, Double_t Coul_par_top=1.e-10) const
void _init_MeanGDir_func() const
virtual void ReadChannelVolt()
KVINDRAPulserDataTree * GetPulserData()
KVDBTable * fAbsentDet
(optional) Liste les detecteurs absents
void ReadNewRunList()
Read new-style runlist (written using KVDBRun v.10 or later)
std::ifstream & GetPeakFileStream()
Float_t GetMeanPulser(const Char_t *, int)
Bool_t OpenCalibrationPeakFile()
calibration peaks database
void ReadObjects(TFile *) override
Read associated objects (i.e. KVINDRAPulserDataTree's TTree) from file.
virtual void ReadPedestalList()
virtual void ReadGainList()
Read the file listing any detectors whose gain value changes during exeriment.
KVDBTable * fCsILumCorr
table of CsI gain corrections for total light output
KVDBTable * fOoOACQPar
(optional) Liste des parametres d acquisition ne marchant pas
KVINDRAPulserDataTree * fPulserData
mean values of pulsers for all detectors & runs
virtual void ReadVoltEnergyChIoSi()
virtual void ReadOoODetectors()
void WriteObjects(TFile *) override
Write associated objects (i.e. KVINDRAPulserDataTree's TTree) in file.
KVList * GetCalibrationPeaks(Int_t run, KVDetector *detector=0, Int_t peak_type=-1, Int_t signal_type=0, Double_t peak_energy=-1.0)
virtual KVDBTape * GetTape(Int_t tape) const
TF1 * fMeanGDir
mean frequency of GENE_DIRECT vs. run number
virtual void ReadCsITotalLightGainCorrections()
void Build(bool=false) override
KVDBTable * fPedestals
table of pedestal files
KVDBTable * fVoltMeVChIoSi
ChIo/Si volt-energy calibration.
KVDBTable * fGains
(optional) table of detector gains, in case they change from run to run
virtual void ReadLightEnergyCsI(const Char_t *, KVDBTable *)
virtual void ReadAbsentDetectors()
virtual void ReadChIoPressures()
virtual Double_t GetRunLengthFromGeneDirect(int run) const
Double_t GetMeanGDirFreq(Int_t run) const
KVINDRADBRun * GetRun(Int_t run) const
virtual void ReadCalibCsI()
KVDBTable * fLitEnerCsIZ1
CsI light-energy calibration for Z=1.
KVINDRADetector * GetChIo() const
Handles TTree with mean pulser data for every run.
Float_t GetMean(const Char_t *, Int_t)
void ReadTree(TFile *)
Read pulser data tree from file.
Bool_t IsNewRunList() const
Int_t GetRLLineNumber() const
void SetRLCommentChar(Char_t c)
KVRunListLine * GetLineReader() const
void ReadRunList(const Char_t *name="")
Int_t GetRunListTrigger(const Char_t *field, const Char_t *fmt)
void SetRLSeparatorChar(Char_t c)
void Build(Int_t run=-1) override
Correspondance between CsI detectors and pin lasers is set up if known.
static Char_t SignalTypes[16][3]
Use this static array to translate EBaseIndra_type signal type to a string giving the signal type.
virtual KVINDRADetector * GetDetectorByType(UInt_t cou, UInt_t mod, UInt_t type) const
Extended TList class which owns its objects by default.
static KVMultiDetArray * MakeMultiDetector(const Char_t *dataset_name, Int_t run=-1, TString classname="KVMultiDetArray", KVExpDB *db=nullptr)
virtual Bool_t IsBuilt() const
Strings used to represent a set of ranges of values.
Wrapper for TRefArray adding some functionality.
Base class for reading runlists for experiments ,.
Bool_t HasFieldValue(const Char_t *) const
Float_t GetFloatField(const Char_t *)
virtual void Print() const
Bool_t HasField(const Char_t *) const
INLINES_______________________________________________________________________________.
Int_t GetIntField(const Char_t *)
virtual const Char_t * GetField(const Char_t *) const
void Add(TObject *obj) override
Extension of ROOT TString class which allows backwards compatibility with ROOT v3....
void Begin(TString delim) const
KVString Next(Bool_t strip_whitespace=kFALSE) const
Handles directories stored in .tgz archive files.
Calculation/correction of energy losses of particles through an experimental target.
Double_t GetAtomsPerCM2() const
virtual UInt_t GetUnits() const;
virtual Int_t GetSize() const
THashList * GetTable() const
virtual Int_t ReadFile(const char *fname, EEnvLevel level)
virtual Double_t Eval(Double_t x, Double_t y=0, Double_t z=0, Double_t t=0) const
virtual Double_t GetBinCenter(Int_t bin) const
virtual Int_t GetNbinsX() const
virtual Double_t GetBinContent(Int_t bin) const
void Clear(Option_t *option="") override
void Add(TObject *obj) override
const char * GetName() const override
TObject * At(Int_t idx) const override
virtual void Warning(const char *method, const char *msgfmt,...) const
virtual void Error(const char *method, const char *msgfmt,...) const
virtual void Info(const char *method, const char *msgfmt,...) const
TSubString Strip(EStripType s=kTrailing, char c=' ') const
const char * Data() const
TObjArray * Tokenize(const TString &delim) const
Bool_t BeginsWith(const char *s, ECaseCompare cmp=kExact) const
TString & Prepend(char c, Ssiz_t rep=1)
virtual Int_t Sizeof() const
void Form(const char *fmt,...)
TString & Remove(EStripType s, char c)
Bool_t Contains(const char *pat, ECaseCompare cmp=kExact) const
std::istream & ReadLine(std::istream &str, Bool_t skipWhite=kTRUE)
Double_t Range(Double_t lb, Double_t ub, Double_t x)