KaliVeda  1.12/06
Heavy-Ion Analysis Toolkit
KVINDRADB_e613.cpp
Go to the documentation of this file.
1 //Created by KVClassFactory on Mon Oct 24 14:38:16 2011
2 //Author: bonnet
3 
4 #include "KVINDRADB_e613.h"
5 #include "KVINDRA.h"
6 #include "KVFileReader.h"
7 #include "TObjArray.h"
8 #include "KVDBParameterSet.h"
9 #include "KVDBChIoPressures.h"
10 
11 using namespace std;
12 
14 
15 
16 
20 {
21  // Default constructor
22 }
23 
24 
25 
27 
29 {
30  Info("KVINDRADB_e613", "Hi coquine, tu es sur la manip e613 ...");
31 }
32 
33 
34 
37 
39 {
40  // Destructor
41 }
42 
43 
44 
48 
50 {
51  //Use KVINDRARunListReader utility subclass to read complete runlist
52 
53  //get full path to runlist file, using environment variables for the current dataset
54  TString runlist_fullpath;
55  KVBase::SearchKVFile(GetDBEnv("Runlist"), runlist_fullpath, fDataSet.Data());
56 
57  //set comment character for current dataset runlist
58  SetRLCommentChar(GetDBEnv("Runlist.Comment")[0]);
59 
60  //set field separator character for current dataset runlist
61  if (!strcmp(GetDBEnv("Runlist.Separator"), "<TAB>"))
62  SetRLSeparatorChar('\t');
63  else
64  SetRLSeparatorChar(GetDBEnv("Runlist.Separator")[0]);
65 
66  //by default we set two keys for both recognising the 'header' lines and deciding
67  //if we have a good run line: the "Run" and "Events" fields must be present
68  GetLineReader()->SetFieldKeys(2, GetDBEnv("Runlist.Run"),
69  GetDBEnv("Runlist.Events"));
70  GetLineReader()->SetRunKeys(2, GetDBEnv("Runlist.Run"),
71  GetDBEnv("Runlist.Events"));
72 
73  ReadRunList(runlist_fullpath.Data());
74  //new style runlist
75  if (IsNewRunList()) {
77  };
78 
81  ReadGainList();
85  ReadCalibCsI();
89 
90 
91  // read all available mean pulser data and store in tree
94  fPulserData->Build();
95 
97 }
98 
99 
100 
115 
117 {
118  //Read ChIo pressures for different run ranges and enter into database.
119  //Format of file is:
120  //
121  //# some comments
122  //#which start with '#'
123  //RunRange 6001 6018
124  //2_3 50.0
125  //4_5 50.0
126  //6_7 50.0
127  //8_12 30.0
128  //13_17 30.0
129  //
130  //Pressures (of C3F8) are given in mbar).
131 
132  ifstream fin;
133  if (!OpenCalibFile("Pressures", fin)) {
134  Error("ReadChIoPressures()", "Could not open file %s",
135  GetCalibFileName("Pressures"));
136  return;
137  }
138  Info("ReadChIoPressures()", "Reading ChIo pressures parameters...");
139 
140  TString sline;
141 
142  Bool_t prev_rr = kFALSE; //was the previous line a run range indication ?
143  Bool_t read_pressure = kFALSE; // have we read any pressures recently ?
144  KVNumberList nl;
145  KVDBChIoPressures* parset = 0;
146  TList* par_list = new TList();
147  TObjArray* toks = 0;
148  //any ChIo not in list is assumed absent (pressure = 0)
149 
150  Float_t pressure[5] = { 0, 0, 0, 0, 0 };
151 
152  while (fin.good()) { // parcours du fichier
153 
154  sline.ReadLine(fin);
155  if (sline.BeginsWith("#")) {
156 
157  }
158  else if (sline.BeginsWith("RunRange")) { // run range found
159  if (!prev_rr) { // New set of run ranges to read
160 
161  //have we just finished reading some pressures ?
162  if (read_pressure) {
163  parset = new KVDBChIoPressures(pressure);
164  GetTable("ChIo Pressures")->AddRecord(parset);
165  par_list->Add(parset);
166  LinkListToRunRange(par_list, nl);
167  par_list->Clear();
168  for (int zz = 0; zz < 5; zz++) pressure[zz] = 0.;
169  read_pressure = kFALSE;
170  }
171  }
172  toks = sline.Tokenize("\t");
173 
174  if (toks->GetEntries() != 2) {
175  Error("ReadChIoPressures", "Pb de format, il faut RunRange\tRun1-Run2 ... ");
176  return;
177  }
178 
179  prev_rr = kTRUE;
180  nl.SetList(((TObjString*)toks->At(1))->GetString().Data());
181  delete toks;
182  } // Run Range found
183  else if (fin.eof()) { //fin du fichier
184  //have we just finished reading some pressures ?
185  if (read_pressure) {
186  parset = new KVDBChIoPressures(pressure);
187  GetTable("ChIo Pressures")->AddRecord(parset);
188  par_list->Add(parset);
189  LinkListToRunRange(par_list, nl);
190  par_list->Clear();
191  for (int zz = 0; zz < 5; zz++) pressure[zz] = 0.;
192  read_pressure = kFALSE;
193  }
194  }
195  else {
196  prev_rr = kFALSE;
197 
198  toks = sline.Tokenize("\t");
199  if (toks->GetEntries() != 2) {
200  Error("ReadChIoPressures", "Pb de format, il faut numero de la chio (ex 2_3)\tpression");
201  return;
202  }
203 
204  TString chio = ((TObjString*)toks->At(0))->String();
205  TString press = ((TObjString*)toks->At(1))->String();
206 
207  printf("%s %lf\n", chio.Data(), press.Atof());
208  delete toks;
209 
210  read_pressure = kTRUE;
211 
212  if (chio == "2_3") pressure[0] = press.Atof();
213  else if (chio == "4_5") pressure[1] = press.Atof();
214  else if (chio == "6_7") pressure[2] = press.Atof();
215  else if (chio == "8_12") pressure[3] = press.Atof();
216  else if (chio == "13_17") pressure[4] = press.Atof();
217  else {
218  printf("#%s# ne correspond a rien\n", chio.Data());
219  read_pressure = kFALSE;
220  }
221  } //line with ChIo pressure data
222  } //parcours du fichier
223  delete par_list;
224  fin.close();
225 }
226 
227 
228 
235 
237 {
238  // Read the file listing any detectors whose gain value changes during experiment
239  // need description of INDRA geometry
240  // information are in [dataset name].INDRADB.Gains: ...
241  //
242 
243  //need description of INDRA geometry
244  if (!gIndra) {
246  }
247  //gIndra exists, but has it been built ?
248  if (!gIndra->IsBuilt())
249  gIndra->Build();
250 
251  KVFileReader flist;
252  TString fp;
253  if (!KVBase::SearchKVFile(GetCalibFileName("Gains"), fp, fDataSet.Data())) {
254  Error("ReadGainList", "Fichier %s, inconnu au bataillon", GetCalibFileName("Gains"));
255  return;
256  }
257 
258  if (!flist.OpenFileToRead(fp.Data())) {
259  //Error("ReadGainList","Error opening file named %s",fp.Data());
260  return;
261  }
262  Info("ReadGainList()", "Reading gains ...");
263  //Add table for gains
264  fGains = AddTable("Gains", "Gains of detectors during runs");
265 
266  while (flist.IsOK()) {
267 
268  flist.ReadLine(".");
269  if (! flist.GetCurrentLine().IsNull()) {
270  unique_ptr<TObjArray> toks(flist.GetReadPar(0).Tokenize("_"));
271  Int_t nt = toks->GetEntries();
272  Int_t ring = -1;
273  unique_ptr<KVSeqCollection> sl;
274  TString det_type = "";
275  if (nt <= 1) {
276  Warning("ReadGainList", "format non gere");
277  }
278  else {
279  //format : Gain_[det_type]_R[RingNumber].dat
280  //exemple : Gain_SI_R07.dat
281  det_type = ((TObjString*)toks->At(1))->GetString();
282  //on recupere les detecteurs par type
283  sl.reset(gIndra->GetDetectors()->GetSubListWithType(det_type.Data()));
284  if (nt == 2) {
285  ring = 0;
286  }
287  else if (nt == 3) {
288  sscanf(((TObjString*)toks->At(2))->GetString().Data(), "R%d", &ring);
289  }
290  else {
291  Warning("ReadGainList", "format non gere");
292  }
293  if (ring != 0)
294  sl.reset(sl->GetSubListWithMethod(Form("%d", ring), "GetRingNumber"));
295  }
296 
297  if (sl.get()) {
298  KVDBParameterSet* par(nullptr);
299  TIter it(sl.get());
300  TObject* obj(nullptr);
301  KVNumberList nl;
302  KVFileReader ffile;
303  if (KVBase::SearchKVFile(flist.GetCurrentLine().Data(), fp, fDataSet.Data())) {
304  ffile.OpenFileToRead(fp.Data());
305  //Info("ReadGainList","Lecture de %s",fp.Data());
306  while (ffile.IsOK()) {
307  ffile.ReadLine(":");
308  if (! ffile.GetCurrentLine().IsNull()) {
309 
310  toks.reset(ffile.GetReadPar(0).Tokenize("."));
311  //liste des runs ...
312  nl.SetList(((TObjString*)toks->At(1))->GetString());
313  // ... associee a la valeur de gain
314  Double_t gain = ffile.GetDoubleReadPar(1);
315 
316  printf("%s Ring %d -> Runs=%s Gain=%1.3lf\n", det_type.Data(), ring, nl.AsString(), gain);
317 
318  it.Reset();
319  while ((obj = it.Next())) {
320  par = new KVDBParameterSet(obj->GetName(), "Gains", 1);
321  par->SetParameter(gain);
322  fGains->AddRecord(par);
323  LinkRecordToRunRange(par, nl);
324  }
325  }
326  }
327  }
328  ffile.CloseFile();
329  }
330  }
331  }
332 
333  flist.CloseFile();
334 
335 }
336 
337 
344 
346 {
347  //Read the names of pedestal files to use for each run range, found
348  //in file with name defined by the environment variable:
349  // [dataset name].INDRADB.Pedestals: ...
350  //Actuellement lecture d un seul run de piedestal
351  //et donc valeur unique pour l ensemble des runs
352 
353  KVFileReader flist;
354  TString fp;
355  if (!KVBase::SearchKVFile(gDataSet->GetDataSetEnv("INDRADB.Pedestals", ""), fp, gDataSet->GetName())) {
356  Error("ReadPedestalList", "Fichier %s, inconnu au bataillon", gDataSet->GetDataSetEnv("INDRADB.Pedestals", ""));
357  return;
358  }
359  fPedestals->SetTitle("Values of pedestals");
360  if (!flist.OpenFileToRead(fp.Data())) {
361  return;
362  }
363  TEnv* env = 0;
364  TEnvRec* rec = 0;
365  KVDBParameterSet* par = 0;
366 
367  KVNumberList default_run_list = GetRunList();
368  Info("ReadPedestalList", "liste des runs par defaut %s", default_run_list.AsString());
369 
370  while (flist.IsOK()) {
371  flist.ReadLine(NULL);
372  KVString file = flist.GetCurrentLine();
373  KVNumberList nl;
374  if (file != "" && !file.BeginsWith('#')) {
375  if (KVBase::SearchKVFile(file.Data(), fp, gDataSet->GetName())) {
376  Info("ReadPedestalList", "Lecture de %s", fp.Data());
377  env = new TEnv();
378  env->ReadFile(fp.Data(), kEnvAll);
379  TIter it(env->GetTable());
380  while ((rec = (TEnvRec*)it.Next())) {
381  if (!strcmp(rec->GetName(), "RunRange")) {
382  nl.SetList(rec->GetValue());
383  }
384  else {
385  par = new KVDBParameterSet(rec->GetName(), "Piedestal", 1);
386  par->SetParameter(env->GetValue(rec->GetName(), 0.0));
387  fPedestals->AddRecord(par);
388  LinkRecordToRunRange(par, default_run_list);
389  }
390  }
391  delete env;
392 
393  }
394  }
395  }
396  Info("ReadPedestalList", "End of reading");
397 }
398 
399 
400 
406 
408 {
409  //Read the names of pedestal files to use for each run range, found
410  //in file with name defined by the environment variable:
411  // [dataset name].INDRADB.Pedestals: ...
412 
413  //need description of INDRA geometry
414  if (!gIndra) {
416  }
417  //gIndra exists, but has it been built ?
418  if (!gIndra->IsBuilt())
419  gIndra->Build();
420 
421  KVNumberList default_run_list = GetRunList();
422  Info("ReadChannelVolt", "liste des runs par defaut %s", default_run_list.AsString());
423 
424  KVFileReader flist;
425  TString fp;
426  if (!KVBase::SearchKVFile(gDataSet->GetDataSetEnv("INDRADB.ElectronicCalibration", ""), fp, gDataSet->GetName())) {
427  Error("ReadChannelVolt", "Fichier %s, inconnu au bataillon", gDataSet->GetDataSetEnv("INDRADB.ElectronicCalibration", ""));
428  return;
429  }
430 
431  if (!flist.OpenFileToRead(fp.Data())) {
432  return;
433  }
434 
435  TEnv* env = 0;
436  TEnvRec* rec = 0;
437  KVDBParameterSet* par = 0;
438  KVDBParameterSet* par_pied = 0;
439  TObjArray* toks = 0;
440  Double_t a0, a1, a2; //parametre du polynome d ordre 2
441  Double_t gain = 0; //valeur du gain de reference
442  Double_t dum2 = -2;
443  Double_t pied = 0; //valeur du piedestal
444 
445  KVINDRADBRun* dbrun = 0;
446  KVINDRADBRun* dbpied = 0;
447  KVNameValueList ring_run;
448  while (flist.IsOK()) {
449  flist.ReadLine(NULL);
450  KVString file = flist.GetCurrentLine();
451  KVNumberList nl;
452  if (file != "" && !file.BeginsWith('#')) {
453  if (KVBase::SearchKVFile(file.Data(), fp, gDataSet->GetName())) {
454  Info("ReadChannelVolt", "Lecture de %s", fp.Data());
455  TString cal_type;
456  TString sgain = "GG";
457  if (fp.Contains("PGtoVolt")) sgain = "PG";
458  cal_type = "Channel-Volt " + sgain;
459 
460  env = new TEnv();
461  env->ReadFile(fp.Data(), kEnvAll);
462  TIter it(env->GetTable());
463  while ((rec = (TEnvRec*)it.Next())) {
464  KVNumberList nring;
465  TString srec(rec->GetName());
466  //On recupere le run reference pour lequel a ete fait la calibration
467  if (srec.BeginsWith("Ring.")) {
468  srec.ReplaceAll("Ring.", "");
469  nring.SetList(srec);
470  nring.Begin();
471  while (!nring.End()) {
472  Int_t rr = nring.Next();
473  ring_run.SetValue(Form("%d", rr), TString(rec->GetValue()).Atoi());
474  Info("ReadChannelVolt", "Couronne %d, run associee %d", rr, TString(rec->GetValue()).Atoi());
475  }
476  }
477  else if (srec.BeginsWith("Pedestal")) {
478  srec.ReplaceAll("Pedestal.", "");
479  dbpied = GetRun(TString(rec->GetValue()).Atoi());
480  }
481  else {
482 
483  TString spar(rec->GetValue());
484  toks = spar.Tokenize(",");
485  if (toks->GetEntries() >= 3) {
486  a0 = ((TObjString*)toks->At(1))->GetString().Atof();
487  a1 = ((TObjString*)toks->At(2))->GetString().Atof();
488  a2 = ((TObjString*)toks->At(3))->GetString().Atof();
489  par_pied = ((KVDBParameterSet*)dbpied->GetLink("Pedestals", Form("%s_%s", rec->GetName(), sgain.Data())));
490  if (par_pied)
491  pied = par_pied->GetParameter();
492  //Fit Canal-Volt realise avec soustraction piedestal
493  //chgmt de variable pour passer de (Canal-piedestal) a Canal brut
494  a0 = a0 - pied * a1 + pied * pied * a2;
495  a1 = a1 - 2 * pied * a2;
496  //a2 inchange
497  //On recupere le run de ref, pour avoir le gain associe a chaque detecteur
499  if (det) {
500 
501  Int_t runref = ring_run.GetIntValue(Form("%d", det->GetRingNumber()));
502  if (!dbrun) {
503  dbrun = GetRun(runref);
504  }
505  else if (dbrun->GetNumber() != runref) {
506  dbrun = GetRun(runref);
507  }
508  if (!dbrun) {
509  Warning("ReadChannelVolt", "Pas de run reference numero %d", runref);
510  }
511  //le gain est mis comme troisieme parametre
512  KVDBParameterSet* pargain = ((KVDBParameterSet*) dbrun->GetLink("Gains", rec->GetName()));
513  if (pargain) {
514  gain = pargain->GetParameter(0);
515  }
516  else {
517  Info("ReadChannelVolt", "pas de gain defini pour le run %d et le detecteur %s", runref, rec->GetName());
518  }
519 
520  //Si tout est dispo on enregistre la calibration pour ce detecteur
521  //
522  par = new KVDBParameterSet(Form("%s_%s", rec->GetName(), sgain.Data()), cal_type, 5);
523  par->SetParameters(a0, a1, a2, gain, dum2);
524 
525  fChanVolt->AddRecord(par);
526  LinkRecordToRunRange(par, default_run_list);
527  }
528  }
529  else {
530  a0 = a1 = a2 = gain = 0;
531  Warning("ReadChannelVolt", "Pb de format %s", rec->GetValue());
532  }
533  delete toks;
534  }
535  }
536  delete env;
537 
538  }
539  }
540  }
541  Info("ReadChannelVolt", "End of reading");
542 
543 }
544 
545 
546 
551 
553 {
554  //Read Volt-Energy(MeV) calibrations for ChIo and Si detectors.
555  //The parameter filename is taken from the environment variable
556  // [dataset name].INDRADB.ChIoSiVoltMeVCalib:
557 
558  KVFileReader flist;
559  TString fp;
560  if (!KVBase::SearchKVFile(gDataSet->GetDataSetEnv("INDRADB.ChIoSiVoltMeVCalib", ""), fp, gDataSet->GetName())) {
561  Error("ReadVoltEnergyChIoSi", "Fichier %s, inconnu au bataillon", gDataSet->GetDataSetEnv("INDRADB.ChIoSiVoltMeVCalib", ""));
562  return;
563  }
564 
565  if (!flist.OpenFileToRead(fp.Data())) {
566  return;
567  }
568  TEnv* env = 0;
569  TEnvRec* rec = 0;
570  KVDBParameterSet* par = 0;
571  TObjArray* toks = 0;
572 
573  KVNumberList default_run_list = GetRunList();
574  Info("ReadVoltEnergyChIoSi", "liste des runs par defaut %s", default_run_list.AsString());
575 
576  while (flist.IsOK()) {
577  flist.ReadLine(NULL);
578  KVString file = flist.GetCurrentLine();
579  KVNumberList nl;
580  if (file != "" && !file.BeginsWith('#')) {
581  if (KVBase::SearchKVFile(file.Data(), fp, gDataSet->GetName())) {
582  Info("ReadPedestalList", "Lecture de %s", fp.Data());
583  env = new TEnv();
584  env->ReadFile(fp.Data(), kEnvAll);
585  TIter it(env->GetTable());
586  while ((rec = (TEnvRec*)it.Next())) {
587 
588  Double_t a0 = 0, a1 = 1, chi = 1;
589  TString spar(rec->GetValue());
590  toks = spar.Tokenize(",");
591  if (toks->GetEntries() >= 2) {
592  a0 = ((TObjString*)toks->At(1))->GetString().Atof();
593  a1 = ((TObjString*)toks->At(2))->GetString().Atof();
594  }
595  delete toks;
596 
597  par = new KVDBParameterSet(rec->GetName(), "Volt-Energy", 3);
598  par->SetParameters(a0, a1, chi);
600  LinkRecordToRunRange(par, default_run_list);
601 
602  }
603  delete env;
604  }
605  }
606  }
607  Info("ReadVoltEnergyChIoSi", "End of reading");
608 
609 }
610 
611 
int Int_t
KVDataSet * gDataSet
Definition: KVDataSet.cpp:30
KVINDRA * gIndra
Definition: KVINDRA.cpp:78
ClassImp(KVPartitionList) void KVPartitionList
Initialisation.
char Char_t
const Bool_t kFALSE
bool Bool_t
double Double_t
float Float_t
const Bool_t kTRUE
kEnvAll
char * Form(const char *fmt,...)
static Bool_t SearchKVFile(const Char_t *name, TString &fullpath, const Char_t *kvsubdir="")
Definition: KVBase.cpp:541
CHIO pressure parameters.
To store calibration parameters in a database ,.
Double_t GetParameter(UShort_t i=0) const
void SetParameters(Double_t val,...)
void SetParameter(UShort_t i, Double_t val)
virtual KVDBRecord * GetLink(const Char_t *key, const Char_t *link) const
Returns the record named "link" in the table named "key".
Definition: KVDBRecord.cpp:186
virtual Int_t GetNumber() const
Definition: KVDBRecord.h:72
virtual Bool_t AddRecord(KVDBRecord *add)
Definition: KVDBTable.cpp:74
virtual KVDBTable * GetTable(const Char_t *table) const
Definition: KVDataBase.h:158
virtual Bool_t AddTable(KVDBTable *table)
Definition: KVDataBase.cpp:84
const Char_t * GetDataSetEnv(const Char_t *type, const Char_t *defval="") const
Definition: KVDataSet.cpp:757
virtual void ReadSystemList()
Definition: KVExpDB.cpp:248
virtual KVSeqCollection * GetRuns() const
Definition: KVExpDB.h:70
TString GetCalibFileName(const Char_t *type) const
Definition: KVExpDB.h:107
const KVNumberList & GetRunList() const
Definition: KVExpDB.h:78
virtual void LinkListToRunRange(TList *list, const KVNumberList &nl)
Link the records contained in the list to the set of runs (see LinkRecordToRunRanges).
Definition: KVExpDB.cpp:199
virtual void LinkRecordToRunRange(KVDBRecord *rec, UInt_t first_run, UInt_t last_run)
Definition: KVExpDB.cpp:86
virtual TString GetDBEnv(const Char_t *) const
Definition: KVExpDB.cpp:650
Bool_t OpenCalibFile(const Char_t *type, std::ifstream &fs) const
Definition: KVExpDB.cpp:432
TString fDataSet
the name of the dataset to which this database is associated
Definition: KVExpDB.h:21
Handle reading text files.
Definition: KVFileReader.h:19
KVString GetCurrentLine()
Definition: KVFileReader.h:131
TString GetReadPar(Int_t pos)
Definition: KVFileReader.h:167
void CloseFile()
Definition: KVFileReader.h:79
Bool_t OpenFileToRead(KVString filename)
Definition: KVFileReader.h:59
void ReadLine(const Char_t *pattern)
Definition: KVFileReader.h:84
Double_t GetDoubleReadPar(Int_t pos)
Definition: KVFileReader.h:159
Bool_t IsOK()
Definition: KVFileReader.h:74
KVDetector * GetDetector(const Char_t *name) const
Return detector in this structure with given name.
const KVSeqCollection * GetDetectors() const
Database entry for each run of an INDRA experiment.
Definition: KVINDRADBRun.h:29
Database for E613 experiment (2011)
virtual void ReadChIoPressures()
virtual void ReadVoltEnergyChIoSi()
virtual void ReadGainList()
virtual void ReadPedestalList()
virtual void ReadChannelVolt()
virtual ~KVINDRADB_e613()
Destructor.
KVINDRADB_e613()
Default constructor.
virtual void Build()
DataBase of parameters for an INDRA campaign.
Definition: KVINDRADB.h:58
KVDBTable * fChanVolt
ChIo/Si channel-volt calibration parameters.
Definition: KVINDRADB.h:73
virtual void ReadOoOACQParams()
Definition: KVINDRADB.cpp:1947
void ReadNewRunList()
Read new-style runlist (written using KVDBRun v.10 or later)
Definition: KVINDRADB.cpp:947
KVINDRAPulserDataTree * fPulserData
mean values of pulsers for all detectors & runs
Definition: KVINDRADB.h:81
virtual void ReadOoODetectors()
Definition: KVINDRADB.cpp:1899
virtual void ReadCsITotalLightGainCorrections()
Definition: KVINDRADB.cpp:1231
KVDBTable * fPedestals
table of pedestal files
Definition: KVINDRADB.h:72
KVDBTable * fVoltMeVChIoSi
ChIo/Si volt-energy calibration.
Definition: KVINDRADB.h:74
KVDBTable * fGains
(optional) table of detector gains, in case they change from run to run
Definition: KVINDRADB.h:69
virtual void ReadAbsentDetectors()
Definition: KVINDRADB.cpp:1852
KVINDRADBRun * GetRun(Int_t run) const
Definition: KVINDRADB.h:132
virtual void ReadCalibCsI()
Definition: KVINDRADB.cpp:1686
Base class for detectors of INDRA array.
UInt_t GetRingNumber() const
Handles TTree with mean pulser data for every run.
void SetRunList(KVSeqCollection *runs)
void SetRLCommentChar(Char_t c)
KVRunListLine * GetLineReader() const
void ReadRunList(const Char_t *name="")
void SetRLSeparatorChar(Char_t c)
virtual void Build(Int_t run=-1)
Definition: KVINDRA.cpp:380
virtual Bool_t IsBuilt() const
static KVMultiDetArray * MakeMultiDetector(const Char_t *dataset_name, Int_t run=-1, TString classname="KVMultiDetArray")
Handles lists of named parameters with different types, a list of KVNamedParameter objects.
Int_t GetIntValue(const Char_t *name) const
void SetValue(const Char_t *name, value_type value)
Strings used to represent a set of ranges of values.
Definition: KVNumberList.h:83
const Char_t * AsString(Int_t maxchars=0) const
Bool_t End(void) const
Definition: KVNumberList.h:196
void Begin(void) const
void SetList(const TString &)
Int_t Next(void) const
void SetRunKeys()
Definition: KVRunListLine.h:43
void SetFieldKeys()
Definition: KVRunListLine.h:39
KVSeqCollection * GetSubListWithType(const Char_t *retvalue) const
Extension of ROOT TString class which allows backwards compatibility with ROOT v3....
Definition: KVString.h:72
const char * GetName() const
const char * GetValue() const
virtual const char * GetValue(const char *name, const char *dflt) const
virtual Int_t ReadFile(const char *fname, EEnvLevel level)
THashList * GetTable() const
TObject * Next()
void Reset()
virtual void Add(TObject *obj)
virtual void Clear(Option_t *option="")
virtual const char * GetName() const
virtual void SetTitle(const char *title="")
Int_t GetEntries() const
TObject * At(Int_t idx) const
virtual const char * GetName() const
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
Double_t Atof() const
TObjArray * Tokenize(const TString &delim) const
Bool_t BeginsWith(const char *s, ECaseCompare cmp=kExact) const
const char * Data() const
Bool_t IsNull() const
Bool_t Contains(const char *pat, ECaseCompare cmp=kExact) const
TString & ReplaceAll(const char *s1, const char *s2)
std::istream & ReadLine(std::istream &str, Bool_t skipWhite=kTRUE)
const char * String