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;
267 SetAnalysisTask(
nullptr);
272 cout << endl <<
"Available data analysis tasks :" << endl << endl;
273 fDataSet->Print(
"tasks");
274 Int_t n_tasks = fDataSet->GetNtasks();
276 SetAnalysisTask(fDataSet->GetAnalysisTask(1));
277 fChoozSystem =
kTRUE;
284 while (!IsQuit() && (n_task < 1 || n_task > n_tasks)) {
285 cout << endl <<
"Your choice (1-" << n_tasks <<
287 if (IsMenus()) cout <<
" [d - change dataset | q - quit]";
295 fChoozDataSet =
kTRUE;
302 SetAnalysisTask(fDataSet->GetAnalysisTask(n_task));
304 fChoozSystem =
kTRUE;
338 if (!fDataSet->GetDataBase()->GetSystems()->GetSize()) {
349 unique_ptr<TList> sys_list(fDataSet->GetListOfAvailableSystems(d_t.
Data()));
350 if (!sys_list.get() || sys_list->GetSize() < 1) {
351 cout <<
"No systems found for dataset: " << fDataSet->
352 GetName() <<
", datatype: " << d_t.
Data() << endl;
357 TIter next_sys(sys_list.get());
360 cout << endl <<
"Available systems : " << endl << endl;
363 cout <<
" " <<
Form(
"%3d.", nsys);
365 cout <<
" (" <<
Form(
"%-3d",
369 if (sys_list->GetSize() == 1) {
382 while (!IsQuit() && !IsChooseTask() && !fChoozRuns && !fChoozDataSet) {
383 cout << endl <<
"Your choice (1-" << nsys <<
")";
385 cout <<
" [r - choose runs | ";
386 if (GetAnalysisTask())
387 cout <<
"t - change task";
389 cout <<
"t - change type";
390 cout <<
" | d - change dataset | q - quit]";
401 fChoozDataSet =
kTRUE;
408 nsys_pick = tmp.
Atoi();
409 if (nsys_pick >= 1 && nsys_pick <= nsys)
414 fSystem = (
KVDBSystem*) sys_list->At(nsys_pick - 1);
460 cout << endl <<
" Chosen system : " << endl;
463 cout << endl << endl <<
" Available runs: " << endl << endl;
465 auto all_runs = PrintAvailableRuns(d_t);
467 if (all_runs.IsEmpty()) {
469 fChoozSystem =
kTRUE;
473 cout << endl <<
"Enter list of runs [a - all";
476 if (fSystem) cout <<
"s - change system | ";
477 if (GetAnalysisTask())
478 cout <<
"t - change task";
480 cout <<
"t - change type";
481 cout <<
" | d - change dataset | q - quit";
490 fChoozSystem =
kTRUE;
496 fChoozDataSet =
kTRUE;
504 run_index_list user_list;
505 user_list.SetList(tmp.
Data());
509 for (
auto& user_run : user_list) {
510 if (all_runs.Contains(user_run)) fRunList.Add(user_run);
513 if (fRunList.IsEmpty()) {
515 "None of the runs you chose appear in the list");
523 cout << endl <<
"Chosen runs : " << fRunList.GetList() << endl;
553 "Dataset %s is not available for analysis", ds->
GetName());
559 "%ld is address of dataset in repository \"%s\", not of the dataset in the current repository, \"%s\"",
585 Error(
"SetDataSet",
"Unknown dataset %s",
name);
588 set_dataset_pointer(ds);
603 auto all_runs = fDataSet->GetRunList(datatype.
Data(), fSystem);
604 for (
auto& next_file : all_runs) {
605 auto dbrun = fDataSet->GetDataBase()->GetDBRun(next_file.run());
607 auto& runfile = fDataSet->GetDataBase()->GetDBRunFile(next_file);
608 cout <<
" " << next_file <<
" " << runfile.GetFileName();
609 cout <<
Form(
"\t(%9llu events)", runfile.GetEvents());
610 if (dbrun->GetComments())
611 cout <<
"\t" << dbrun->GetComments();
646 Warning(
"SetRuns",
"Data Set not defined... Nothing done");
652 KVDBRun* run = fDataSet->GetDataBase()->GetDBRun(nl.First().run());
659 Info(
"SetRuns",
"Checking runs %s for Data type %s",
662 for (
auto& run_no : nl) {
664 if (!(fDataSet->CheckRunfileAvailable(
GetDataType(), run_no))) {
666 "The run %s is not present for the data type \"%s\" of data set \"%s\".",
667 run_no.as_string().Data(),
GetDataType().Data(), fDataSet->GetName());
670 fRunList.Add(run_no);
672 KVDBRun* run = fDataSet->GetDataBase()->GetDBRun(run_no.run());
681 "The system \"%s\" of run %s differs from the system \"%s\" of the previous runs.",
682 run->
GetSystem()->
GetName(), run_no.as_string().Data(), fSystem->GetName());
686 Info(
"SetRuns",
"Accepted runs : %s", fRunList.AsString().Data());
707 GetBatchInfoFile()->SetValue(
"DataRepository", gDataRepository->
GetName());
708 GetBatchInfoFile()->SetValue(
"DataSet", fDataSet->GetName());
709 GetBatchInfoFile()->SetValue(
"Runs", fRunList.GetList());
710 GetBatchInfoFile()->SetValue(
"FullRunList", fFullRunList.GetList());
711 if (save) GetBatchInfoFile()->SaveLevel(
kEnvUser);
732 TString val = GetBatchInfoFile()->GetValue(
"DataRepository",
"");
737 Error(
"ReadBatchEnvFile",
"Name of data repository not given");
740 val = GetBatchInfoFile()->GetValue(
"DataSet",
"");
743 SetDataSet(gDataSet);
746 Error(
"ReadBatchEnvFile",
"Name of dataset not given");
749 val = GetBatchInfoFile()->GetValue(
"AnalysisTask",
"");
750 SetAnalysisTask(
nullptr);
755 Error(
"ReadBatchEnvFile",
"Name of analysis task not given");
758 if (!GetAnalysisTask()) {
759 Error(
"ReadBatchEnvFile",
"Analysis task \"%s\"not found for dataset %s",
768 val = GetBatchInfoFile()->GetValue(
"Runs",
"");
773 Error(
"ReadBatchEnvFile",
"List of runs not given");
776 val = GetBatchInfoFile()->GetValue(
"FullRunList",
"");
814 if (!fSystem)
return tmp;
815 return fSystem->GetBatchName();
855 if (fSystem)
return fSystem->GetKinematics();
856 Error(
"GetKinematics",
"No system defined for kinematic calculations");
870 arf = GetDataSet()->GetAvailableRunsFile(
GetDataType().Data());
895 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
Returns kTRUE if this dataset is available for analysis, i.e. if any associated data files are stored...
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 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)