4 #include "KVDataSetAnalyser.h"
5 #include "KVDataRepositoryManager.h"
6 #include "KVDataRepository.h"
7 #include "KVDataSetManager.h"
9 #include "KVDBSystem.h"
28 fChoozDataSet =
kTRUE;
56 fChoozDataSet =
kTRUE;
85 fChoozDataSet =
kTRUE;
113 else if (IsChooseTask())
114 ChooseAnalysisTask();
131 Error(
"CheckTaskVariables",
"By the pricking of my thumb, something wicked this way comes...");
132 Error(
"CheckTaskVariables",
" *** ABORTING THE ANALYSIS ***");
137 if (!GetAnalysisTask()) {
138 ChooseAnalysisTask();
141 if (fRunList.IsEmpty()) {
166 _set_dataset_pointer(
nullptr);
167 if (GetAnalysisTask()) SetAnalysisTask(
nullptr);
169 cout <<
"Available datasets :" << endl << endl;
170 gDataSetManager->
Print(
"available");
171 Int_t n_dataset = -1;
186 while (!IsQuit() && (n_dataset < 1 || n_dataset > n_avail)) {
187 cout << endl <<
"Your choice (1-" << gDataSetManager->
188 GetNavailable() <<
")";
189 if (IsMenus()) cout <<
" [q - quit]";
197 n_dataset = tmp.
Atoi();
226 SetAnalysisTask(
nullptr);
228 fDataSet->Print(
"data");
229 cout << endl <<
"Choose data type [d - change dataset | q - quit] : ";
231 while (!IsQuit() && !IsChooseDataSet() && !IsChooseSystem()) {
234 if (tmp ==
"raw" || tmp ==
"recon" || tmp ==
"ident" || tmp ==
"root") {
235 fChoozSystem =
kTRUE;
273 SetAnalysisTask(
nullptr);
278 cout << endl <<
"Available data analysis tasks :" << endl << endl;
279 fDataSet->Print(
"tasks");
280 Int_t n_tasks = fDataSet->GetNtasks();
282 SetAnalysisTask(fDataSet->GetAnalysisTask(1));
283 fChoozSystem =
kTRUE;
290 while (!IsQuit() && (n_task < 1 || n_task > n_tasks)) {
291 cout << endl <<
"Your choice (1-" << n_tasks <<
294 cout <<
" [d - change dataset | cn - generate new analysis class | q - quit] : \n";
295 cout <<
"\t - to generate analysis class for task '1', enter 'c1'; for task '2', enter 'c2', etc.\n";
303 fChoozDataSet =
kTRUE;
308 std::cout <<
"Enter name for new analysis class : ";
310 fDataSet->MakeAnalysisClass(nt, tmp);
316 SetAnalysisTask(fDataSet->GetAnalysisTask(n_task));
318 fChoozSystem =
kTRUE;
352 if (!fDataSet->GetDataBase()->GetSystems()->GetSize()) {
363 unique_ptr<TList> sys_list(fDataSet->GetListOfAvailableSystems(d_t.
Data()));
364 if (!sys_list.get() || sys_list->GetSize() < 1) {
365 cout <<
"No systems found for dataset: " << fDataSet->
366 GetName() <<
", datatype: " << d_t.
Data() << endl;
371 TIter next_sys(sys_list.get());
374 cout << endl <<
"Available systems : " << endl << endl;
377 cout <<
" " <<
Form(
"%3d.", nsys);
379 cout <<
" (" <<
Form(
"%-3d",
383 if (sys_list->GetSize() == 1) {
396 while (!IsQuit() && !IsChooseTask() && !fChoozRuns && !fChoozDataSet) {
397 cout << endl <<
"Your choice (1-" << nsys <<
")";
399 cout <<
" [r - choose runs | ";
400 if (GetAnalysisTask())
401 cout <<
"t - change task";
403 cout <<
"t - change type";
404 cout <<
" | d - change dataset | q - quit]";
415 fChoozDataSet =
kTRUE;
422 nsys_pick = tmp.
Atoi();
423 if (nsys_pick >= 1 && nsys_pick <= nsys)
428 fSystem = (
KVDBSystem*) sys_list->At(nsys_pick - 1);
474 cout << endl <<
" Chosen system : " << endl;
477 cout << endl << endl <<
" Available runfiles: " << endl << endl;
479 auto all_runs = PrintAvailableRuns(d_t);
481 if (all_runs.IsEmpty()) {
483 fChoozSystem =
kTRUE;
487 cout << endl <<
"Enter list of runfiles:\n\t - run numbers as \"1 2 3\" or \"1-3 4\" etc.: analyse all files for these runs\n\t - use index for individual files e.g. \"1.0 2.1\")";
488 cout << endl <<
"[a - all";
491 if (fSystem) cout <<
"s - change system | ";
492 if (GetAnalysisTask())
493 cout <<
"t - change task";
495 cout <<
"t - change type";
496 cout <<
" | d - change dataset | q - quit";
505 fChoozSystem =
kTRUE;
511 fChoozDataSet =
kTRUE;
518 fRunList.SetListSelection(tmp, all_runs);
519 if (fRunList.IsEmpty()) {
521 "None of the files you chose appear in the list");
529 cout << endl <<
"Chosen runfiles : " << fRunList.GetList() << endl;
559 "Dataset %s is not available for analysis", ds->
GetName());
565 "%ld is address of dataset in repository \"%s\", not of the dataset in the current repository, \"%s\"",
591 Error(
"SetDataSet",
"Unknown dataset %s",
name);
594 set_dataset_pointer(ds);
609 auto all_runs = fDataSet->GetRunList(datatype.
Data(), fSystem);
610 for (
auto& next_file : all_runs) {
611 auto dbrun = fDataSet->GetDataBase()->GetDBRun(next_file.run());
613 auto& runfile = fDataSet->GetDataBase()->GetDBRunFile(next_file);
614 cout <<
" " << next_file <<
" " << runfile.GetFileName();
615 cout <<
Form(
"\t(%9llu events)", runfile.GetEvents());
616 if (dbrun->GetComments())
617 cout <<
"\t" << dbrun->GetComments();
652 Warning(
"SetRuns",
"Data Set not defined... Nothing done");
658 KVDBRun* run = fDataSet->GetDataBase()->GetDBRun(nl.First().run());
665 Info(
"SetRuns",
"Checking runs %s for Data type %s",
668 for (
auto& run_no : nl) {
670 if (!(fDataSet->CheckRunfileAvailable(
GetDataType(), run_no))) {
672 "The run %s is not present for the data type \"%s\" of data set \"%s\".",
673 run_no.as_string().Data(),
GetDataType().Data(), fDataSet->GetName());
676 fRunList.Add(run_no);
678 KVDBRun* run = fDataSet->GetDataBase()->GetDBRun(run_no.run());
687 "The system \"%s\" of run %s differs from the system \"%s\" of the previous runs.",
688 run->
GetSystem()->
GetName(), run_no.as_string().Data(), fSystem->GetName());
692 Info(
"SetRuns",
"Accepted runs : %s", fRunList.AsString().Data());
713 GetBatchInfoFile()->SetValue(
"DataRepository", gDataRepository->
GetName());
714 GetBatchInfoFile()->SetValue(
"DataSet", fDataSet->GetName());
715 GetBatchInfoFile()->SetValue(
"Runs", fRunList.GetList());
716 GetBatchInfoFile()->SetValue(
"FullRunList", fFullRunList.GetList());
717 if (save) GetBatchInfoFile()->SaveLevel(
kEnvUser);
738 TString val = GetBatchInfoFile()->GetValue(
"DataRepository",
"");
743 Error(
"ReadBatchEnvFile",
"Name of data repository not given");
746 val = GetBatchInfoFile()->GetValue(
"DataSet",
"");
749 SetDataSet(gDataSet);
752 Error(
"ReadBatchEnvFile",
"Name of dataset not given");
755 val = GetBatchInfoFile()->GetValue(
"AnalysisTask",
"");
756 SetAnalysisTask(
nullptr);
761 Error(
"ReadBatchEnvFile",
"Name of analysis task not given");
764 if (!GetAnalysisTask()) {
765 Error(
"ReadBatchEnvFile",
"Analysis task \"%s\"not found for dataset %s",
774 val = GetBatchInfoFile()->GetValue(
"Runs",
"");
779 Error(
"ReadBatchEnvFile",
"List of runs not given");
782 val = GetBatchInfoFile()->GetValue(
"FullRunList",
"");
820 if (!fSystem)
return tmp;
821 return fSystem->GetBatchName();
861 if (fSystem)
return fSystem->GetKinematics();
862 Error(
"GetKinematics",
"No system defined for kinematic calculations");
876 arf = GetDataSet()->GetAvailableRunsFile(
GetDataType().Data());
901 jdl->
SetValue(
"DataSet", fDataSet->GetName());
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
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 Pixmap_t Pixmap_t PictureAttributes_t attr const char char ret_data h unsigned char height h Atom_t Int_t ULong_t ULong_t unsigned char prop_list Atom_t Atom_t Atom_t Time_t format
char * Form(const char *fmt,...)
Relativistic binary kinematics calculator.
Handles lists of available runs for different datasets and types of data.
std::optional< run_index_t > IsRunFileName(const Char_t *filename)
Description of an experimental run in database ,,.
KVDBSystem * GetSystem() const
Database class used to store information on different colliding systems studied during an experiment....
Manager class which sets up and runs data analysis tasks.
virtual TString ExpandAutoBatchName(const Char_t *format) const
virtual void PostRunReset()
virtual void AddJobDescriptionList(TList *)
virtual void WriteBatchEnvFile(const TString &, Bool_t sav=kTRUE)
virtual const Char_t * GetRecognisedAutoBatchNameKeywords() const
virtual void set_up_analyser_for_task(KVDataAnalyser *the_analyser)
virtual Bool_t ReadBatchEnvFile(const TString &)
KVDataRepository * GetRepository(const Char_t *name) const
virtual Bool_t IsRemote() const
Returns kTRUE for remote repositories, kFALSE for local repositories.
virtual Bool_t IsConnected()
Always returns kTRUE for local repositories.
virtual const Char_t * GetRootDirectory() const
returns root directory of data repository (fLocalrootdir)
Pilots user analysis of experimental data.
TString ExpandAutoBatchName(const Char_t *format) const override
void SetDataSet(KVDataSet *ds)
Bool_t PreSubmitCheck() override
virtual void ChooseAnalysisTask()
void ChooseRuns(KVDBSystem *system=nullptr, const Char_t *data_type="")
void SetRuns(const run_index_list &nl, Bool_t check=kTRUE)
KVString GetRootDirectoryOfDataToAnalyse() const override
Returns path to data to be analysed.
const KV2Body * GetKinematics() const override
void ChooseSystem(const Char_t *data_type="")
void ChooseWhatToDo() override
void ChooseWhatToAnalyse() override
virtual ~KVDataSetAnalyser()
Destructor.
void set_up_analyser_for_task(KVDataAnalyser *the_analyser) override
Int_t GetRunNumberFromFileName(const Char_t *)
Get the run number from the filename.
void SetSystem(KVDBSystem *syst)
Set the System used in the analysis.
void WriteBatchEnvFile(const TString &jobname, Bool_t save=kTRUE) override
virtual run_index_list PrintAvailableRuns(KVString &datatype)
virtual void set_dataset_name(const Char_t *name)
virtual void set_dataset_pointer(KVDataSet *ds)
Bool_t CheckWhatToAnalyseAndHow() override
const Char_t * GetRecognisedAutoBatchNameKeywords() const override
Bool_t ReadBatchEnvFile(const TString &filename) override
void AddJobDescriptionList(TList *) override
void PostRunReset() override
Called at end of Run() after execution of analysis task.
TString SystemBatchName() const
virtual void Print(Option_t *opt="") const
virtual Int_t GetNavailable() const
KVDataSet * GetDataSet(Int_t) const
Return pointer to DataSet using index in list of all datasets, index>=0.
virtual KVDataSet * GetAvailableDataSet(Int_t) const
Manage an experimental dataset corresponding to a given experiment or campaign.
KVDataRepository * GetRepository() const
Get pointer to data repository in which dataset is stored.
KVDataAnalysisTask * GetAnalysisTask(Int_t) const
virtual Bool_t IsAvailable() const
Handles lists of named parameters with different types, a list of KVNamedParameter objects.
void SetValue(const Char_t *name, value_type value)
Extension of ROOT TString class which allows backwards compatibility with ROOT v3....
const char * GetName() const override
virtual TObject * FindObject(const char *name) const
const char * Data() const
Bool_t BeginsWith(const char *s, ECaseCompare cmp=kExact) 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)
BinData::ErrorType GetDataType(const TGraph *gr, DataOptions &fitOpt)
RooCmdArg BatchMode(std::string const &batchMode)