33 #define MAX_LENGTH_SELECTED_RUNS 40
57 lbFileList =
new TGListBox(
this, LB_Files);
58 lbFileList->SetMultipleSelections(
kTRUE);
59 lbFileList->Resize(350, 96);
60 this->AddFrame(lbFileList, eXeY);
64 this->AddFrame(teFileName, eX);
69 boutAdd->SetToolTipText(
"Add a file to the list",
TTDELAY);
70 boutAdd->Connect(
"Clicked()",
77 boutRem->SetToolTipText(
"Remove the selected file from the list",
TTDELAY);
78 boutRem->Connect(
"Clicked()",
85 boutAllRem->SetToolTipText(
"Remove all files from the list",
TTDELAY);
86 boutAllRem->Connect(
"Clicked()",
92 this->AddFrame(cf, eX);
100 this->AddFrame(bout, eX);
104 Resize(GetDefaultSize());
105 SetWindowName(title);
108 fileListString = &fileList;
127 Init(fileList, title);
196 this->CanAdd(fileName.
Data())) {
246 (*fileListString) =
"";
250 (*fileListString) +=
e->GetText()->GetString();
265 const char* filTypes[] = {
"Shared Object Files",
"*.so",
291 "File does not exist",
292 Form(
"The file \"%s\" does not exist. Nothing added.",
301 "Not a share object",
302 Form(
"The file \"%s\" is not a shared object. Nothing added.",
324 boutAdd->SetText(
"Add Directory");
325 boutAdd->SetToolTipText(
"Add a directory to the list.",
TTDELAY);
328 boutRem->SetText(
"Remove Directory");
329 boutRem->SetToolTipText(
"Remove the selected directories from the list.",
TTDELAY);
332 boutAllRem->SetText(
"Remove All Directories");
333 boutAllRem->SetToolTipText(
"Remove all directories from the list.",
TTDELAY);
334 boutAllRem->Layout();
350 Init(fileList, title);
377 const char* filTypes[] = {
"Include Files",
"*.[h,H]*",
406 "Directory does not exist",
407 Form(
"The directory \"%s\" does not exist. Nothing added.",
416 Form(
"The path \"%s\" is not a directory. Nothing added.",
446 GUIenv =
new TEnv(
".KVDataAnalysisGUIrc");
448 ResourceNames =
new TList;
449 ResourceNames->
Add(
new TNamed(
"Repository",
""));
450 ResourceNames->Add(
new TNamed(
"DataSet",
""));
451 ResourceNames->Add(
new TNamed(
"Task",
""));
452 ResourceNames->Add(
new TNamed(
"System",
""));
453 ResourceNames->Add(
new TNamed(
"Trigger",
""));
454 NbResNames = ResourceNames->GetEntries();
457 UserClassNames =
new TList;
485 fMainGuiWidth =
gEnv->
GetValue(
"KaliVedaGUI.MainGUIWidth", 400);
486 fMainGuiHeight =
gEnv->
GetValue(
"KaliVedaGUI.MainGUIHeight", 600);
499 cbRepository =
new TGComboBox(cf, CB_DataRepository);
500 cbRepository->Select(-1);
501 cbRepository->Resize(150, 20);
502 cbRepository->Connect(
"Selected(char*)",
503 "KVDataAnalysisLauncher",
505 "SetDataSetList(char*)");
506 cf->
AddFrame(cbRepository, LHtopleft);
509 lab =
new TGLabel(cf,
"DATASET : ");
516 cbDataSet->Select(-1);
517 cbDataSet->Resize(150, 20);
518 cbDataSet->Connect(
"Selected(char*)",
519 "KVDataAnalysisLauncher",
521 "SetTaskList(char*)");
527 lab =
new TGLabel(cf,
"ANALYSIS TASK : ");
535 cbTask->Resize(350, 20);
536 cbTask->Connect(
"Selected(int)",
537 "KVDataAnalysisLauncher",
539 "SetSystemList(int)");
547 lvSystems =
new KVListView(KVDBSystem::Class(),
this, fMainGuiWidth, 250);
548 lvSystems->SetDataColumns(5);
549 lvSystems->SetMaxColumnSize(
gEnv->
GetValue(
"KaliVedaGUI.MaxColWidth", 200));
550 lvSystems->SetDataColumn(1,
"Zproj");
551 lvSystems->SetDataColumn(2,
"Ztarget");
552 lvSystems->SetDataColumn(3,
"Ebeam");
553 lvSystems->GetDataColumn(3)->SetDataFormat(
"%4.1lf");
554 lvSystems->SetDataColumn(4,
"#Runs",
"GetNumberRuns");
555 lvSystems->SetDataColumn(0,
"System",
"GetName");
556 lvSystems->ActivateSortButtons();
558 lvSystems->AllowBrowse(
kFALSE);
559 lvSystems->AllowContextMenu(
kFALSE);
560 lvSystems->AllowMultipleSelection(
kFALSE);
561 lvSystems->Connect(
"SelectionChanged()",
"KVDataAnalysisLauncher",
this,
"SystemSelectionChanged()");
568 lvRuns =
new KVListView(KVRunFile::Class(), cfRuns, fMainGuiWidth, 300);
569 lvRuns->SetDataColumns(8);
570 lvRuns->SetMaxColumnSize(
gEnv->
GetValue(
"KaliVedaGUI.MaxColWidth", 200));
572 lvRuns->SetDataColumn(iicc++,
"Run",
"GetRunNumber");
573 lvRuns->SetDataColumn(iicc++,
"Trigger",
"");
574 lvRuns->SetDataColumn(iicc++,
"Events",
"",
kTextRight);
575 lvRuns->SetDataColumn(iicc++,
"File",
"GetName");
576 lvRuns->SetDataColumn(iicc++,
"Date",
"GetFileWritten");
577 lvRuns->SetDataColumn(iicc++,
"Comments",
"",
kTextLeft);
578 lvRuns->SetDataColumn(iicc++,
"Version");
579 lvRuns->SetDataColumn(iicc++,
"User");
580 lvRuns->ActivateSortButtons();
582 lvRuns->AllowBrowse(
kFALSE);
583 lvRuns->AllowContextMenu(
kFALSE);
584 lvRuns->Connect(
"SelectionChanged()",
"KVDataAnalysisLauncher",
this,
"UpdateListOfSelectedRuns()");
594 "KVDataAnalysisLauncher",
601 "KVDataAnalysisLauncher",
608 "KVDataAnalysisLauncher",
615 selectedRuns =
new TGLabel(runs_and_nbevents,
"Selected Runs :");
621 #ifdef __WITHOUT_TGNUMBERENTRY_SETNUMSTYLE
626 #ifdef __WITHOUT_TGNUMBERENTRY_SETNUMATTR
631 teNbToRead->GetNumberEntry()->SetToolTipText(
"Number of events to read [0 => all events]",
TTDELAY);
632 teNbToRead->Resize(150, 20);
635 cfRuns->
AddFrame(runs_and_nbevents, eX);
637 AddFrame(cfRuns, eXeY);
643 fUserClassLabel =
new TGLabel(cf,
"User Class");
646 lab =
new TGLabel(cf,
"User class options");
649 cfAnalysis->AddFrame(cf, eX);
653 cbUserClass->Select(-1);
654 cbUserClass->Resize(150, 20);
656 cbUserClass->Connect(
"Selected(char*)",
"KVDataAnalysisLauncher",
this,
657 "UserClassSelected(char*)");
659 btEditClass->SetEnabled(
kFALSE);
660 btEditClass->Connect(
"Clicked()",
"KVDataAnalysisLauncher",
this,
"EditUserClassFiles()");
665 teUserOptions->SetToolTipText(
"Comma-separated list of options for user analysis class: PAR1=VAL1,PAR2=VAL2,etc.",
TTDELAY);
668 cfAnalysis->AddFrame(cf, eX);
670 AddFrame(cfAnalysis, eX);
674 bout =
new TGTextButton(cf,
"User's libraries", B_Libs);
676 "KVDataAnalysisLauncher",
678 "SetUserLibraries()");
683 "KVDataAnalysisLauncher",
685 "SetUserIncludes()");
688 this->AddFrame(cf, eX);
692 cout <<
"Creation Process/Quit" << endl;
697 withBatch->AllowStayDown(
kTRUE);
698 withBatch->Connect(
"Clicked()",
"KVDataAnalysisLauncher",
this,
"SetBatch()");
700 doBatchParams =
new TGTextButton(cfProcess,
"Batch Parameters");
701 doBatchParams->SetToolTipText(
"Set parameters of batch jobs");
702 doBatchParams->Connect(
"Clicked()",
"KVDataAnalysisLauncher",
this,
"SetBatchParameters()");
703 cfProcess->
AddFrame(doBatchParams, eX);
705 bout =
new TGTextButton(cfProcess,
"&Process", B_Process);
707 bout->
Connect(
"Clicked()",
"KVDataAnalysisLauncher",
this,
"Process()");
713 bout->
Connect(
"Clicked()",
"KVDataAnalysisLauncher",
this,
"Exit()");
717 this->AddFrame(cfProcess, eX);
721 Resize(GetDefaultSize());
727 SetWMSize(fMainGuiWidth, fMainGuiHeight);
731 FillListOfUserClasses();
734 checkCompilation =
kFALSE;
737 TString tmp(GetResource(
"Repository",
""));
738 SetRepository(tmp.
Data());
740 if (GUIenv->GetValue(
"KVDataAnalysisLauncher.Batch",
kFALSE))
746 fUserLibraries = GUIenv->GetValue(
"KVDataAnalysisLauncher.UserLibraries",
"");
747 fUserIncludes = GUIenv->GetValue(
"KVDataAnalysisLauncher.UserIncludes",
"");
773 #ifdef __WITHOUT_TGCOMBOBOX_REMOVEALL
782 while ((o = next())) {
803 #ifdef __WITHOUT_TGCOMBOBOX_REMOVEALL
843 #ifdef __WITHOUT_TGCOMBOBOX_REMOVEALL
850 cout <<
"DataSet : [" << dataset <<
"]" << endl;
1049 cout <<
"Checking connection to remote repository." << endl;
1051 cout <<
"Connection to server refused" << endl;
1052 cout <<
"Process aborted." << endl;
1053 WarningBox(
"Connection refused",
"Connection to server refused\nProcess aborted.");
1060 bool online_analysis = !strcmp(task->
GetPrereq(),
"*");
1071 else if (!online_analysis) {
1072 WarningBox(
"Empty Run List",
"The list of runs to process is empty.");
1105 WarningBox(
"No User Class",
"Please enter the user analysis class name.");
1115 if (
IsBatch() && nbEventRead) {
1116 if (!
WarningBox(
"Read all events in batch mode?",
1117 "This will submit batch jobs which will not read all events.\nAre you sure that is what you want?",
1158 return e->GetText()->GetString();
1172 return e->GetText()->GetString();
1186 return e->GetText()->GetString();
1226 #ifdef __WITHOUT_TGCOMBOBOX_SELECT_BOOL_T
1244 if (!strcmp(
r,
"")) {
1246 #ifdef __WITHOUT_TGCOMBOBOX_REMOVEALL
1259 #ifdef __WITHOUT_TGCOMBOBOX_SELECT_BOOL_T
1278 if (!strcmp(
r,
"")) {
1280 #ifdef __WITHOUT_TGCOMBOBOX_REMOVEALL
1293 #ifdef __WITHOUT_TGCOMBOBOX_SELECT_BOOL_T
1312 if (!strcmp(
r,
"")) {
1346 if (!strcmp(
r,
"")) {
1463 reply = (ret_code &
kMBYes);
1470 #ifdef __WITHOUT_TGCOMBOBOX_REMOVEALL
1479 Int_t n =
box->GetListBox()->GetNumberOfEntries();
1480 if (n)
box->RemoveEntries(0, n - 1);
1481 if (
box->GetSelectedEntry()) {
1486 box->GetTextEntry()->SetTitle(
"");
1500 if (n)
box->RemoveEntries(0, n - 1);
1501 if (
box->GetSelectedEntry()) {
1602 res.
Prepend(
"KVDataAnalysisLauncher.");
1753 cur_res.
Prepend(
"KVDataAnalysisLauncher.");
1775 saved_res = cur_res;
1780 while ((resource = next_res()) && (i++ < index)) {
1795 else if (!strcmp(resource->
GetName(),
"System")) {
1799 else if (!strcmp(resource->
GetName(),
"Trigger")) {
1811 if (!strcmp(name,
"UserClassOptions")) {
1816 if (!ok) saved_res =
"";
1841 if (!lf.get())
return;
1844 TIter next(lf.get());
1882 #ifdef __WITHOUT_TGCOMBOBOX_REMOVEALL
1892 while (i < nbcl + 1) {
1911 if (!strcmp(class_name,
"[NEW]")) {
1921 if (strcmp(
"", class_name)) {
1948 new KVInputDialog(
this,
"Enter name of new analysis class", &classname, &ok,
"Enter name of new analysis class");
1952 ok = ok &&
WarningBox(
"Replacing existing class",
1953 Form(
"%s is the name of an existing class defined in [%s,%s].\nDo you want to overwrite this class?\n(All existing code will be lost)",
1986 #ifdef __WITHOUT_TGCOMBOBOX_SELECT_BOOL_T
2020 return e->GetText()->GetString();
2037 #ifdef __WITHOUT_TGCOMBOBOX_REMOVEALL
2082 if (editor ==
"")
return;
2084 if (uclass ==
"")
return;
2130 TIter nxt(novolist);
KVBatchSystemManager * gBatchSystemManager
KVBatchSystem * gBatchSystem
KVDataAnalyser * gDataAnalyser
#define MAX_LENGTH_SELECTED_RUNS
KVDataRepositoryManager * gDataRepositoryManager
KVDataRepository * gDataRepository
KVDataSetManager * gDataSetManager
ClassImp(KVPartitionList) void KVPartitionList
Initialisation.
char * Form(const char *fmt,...)
char * StrDup(const char *str)
R__EXTERN TSystem * gSystem
static Bool_t FindClassSourceFiles(const Char_t *class_name, KVString &imp_file, KVString &dec_file, const Char_t *dir_name=".")
const Char_t * GetType() const
KVBatchSystem * GetDefaultBatchSystem() const
Utility GUI used for setting batch system parameters.
void cd()
Make this the default batch system.
virtual void SetBatchSystemParameters(const KVNameValueList &)
Use the parameters in the list to set all relevant parameters for batch system.
virtual void GetBatchSystemParameterList(KVNameValueList &)
virtual void Clear(Option_t *opt="")
Database class used to store information on different colliding systems studied during an experiment.
virtual void Run()
Check all task variables, then run analyser.
void SetBatchSystem(KVBatchSystem *bs)
void SetUserClassOptions(const Char_t *o="")
void SetUserLibraries(const Char_t *libs=0)
void SetUserClass(const Char_t *kvs, Bool_t check=kTRUE)
void SetAnalysisTask(KVDataAnalysisTask *at)
static KVDataAnalyser * GetAnalyser(const Char_t *plugin)
void SetUserIncludes(const Char_t *incDirs=0)
Bool_t IsUserClassValid() const
void SetNbEventToRead(Long64_t nb=0)
GUI for running data analysis tasks.
virtual const Char_t * GetDataSet(void)
virtual const Char_t * GetRepository(void)
TList * UserClassNames
list of user classes present in working directory
void SetUserClassList()
Sets the list of all available user classes in the drop down list.
const Char_t * GetSavedResource(const Char_t *name, const Char_t *defaultvalue="")
virtual void SetRepositoryList(void)
Sets the list of all possible repositories in the repository combo box.
virtual void DeselectAll(void)
Deselect all runs currently in the displayed list of runs.
void SystemSelectionChanged()
virtual void Process(void)
Run the analysis task.
void SetUserClass(const Char_t *)
TGCompositeFrame * cfAnalysis
Int_t NbResNames
number of names in list
TGPictureButton * btEditClass
KVNumberList listOfSystemRuns
void DisableUserClassList()
Remove all entries from user class combo box & disable text entry.
TList * ResourceNames
used by Get/SetResource
virtual void SetUserIncludes(void)
Set the User's includes.
Bool_t SetBatchParameters()
KVDBSystem * lastSelectedSystem
void UserClassSelected(char *)
TGComboBox * cbRepository
TString SystemBatchName()
Get the system name for the batch name.
virtual void SetRepository(const Char_t *r="")
unique_ptr< TList > list_of_runs
void EnableUserClassList()
virtual void SetRuns(const Char_t *s="")
virtual void SetRunsList()
Sets the list of all available runs in the runs list box.
const Char_t * GetResource(const Char_t *name, const Char_t *defaultvalue="")
void ClearListOfSelectedRuns()
Empty displayed list of selected runs.
virtual void SetSystemList(Int_t s)
virtual void EnterRunlist(void)
void SetResource(const Char_t *name, const Char_t *value)
void EditUserClassFiles()
virtual Bool_t WarningBox(const char *title="Warning", const char *msg="Warning", Bool_t confirm=kFALSE)
TGTextButton * doBatchParams
void FillListOfUserClasses()
virtual void SelectAll(void)
Select all runs currently in the displayed list of runs.
virtual const Char_t * GetRuns(void)
void BuildResourceName(const Char_t *name, TString &, TString &)
KVDataSetAnalyser * GetDataAnalyser(KVDataAnalysisTask *task=0)
virtual const Char_t * GetTask(void)
virtual Bool_t IsBatch(void)
const Char_t * GetUserClass()
Returns currently selected user class name.
virtual void SetDataSet(const Char_t *ds="")
virtual void SetUserLibraries(void)
Set the User's libraries.
TEnv * GUIenv
Declaration des boutons de la fenetre principale.
TGTextEntry * teUserOptions
TGNumberEntry * teNbToRead
virtual const Char_t * GetSystem(void)
void UpdateListOfSelectedRuns()
void GenerateNewUserClass()
virtual void SetSystem(const Char_t *s="")
KVNameValueList fBatchParameters
virtual void SetDataSetList(Char_t *s)
Sets the list of all available data sets in the data sets combo box.
virtual void SetTaskList(Char_t *s)
~KVDataAnalysisLauncher()
Destructeur.
virtual void SetTask(const Char_t *t="")
Define and manage data analysis tasks.
virtual Bool_t WithUserClass() const
virtual const Char_t * GetDataAnalyser() const
virtual const Char_t * GetUserBaseClass() const
virtual const Char_t * GetPrereq() const
Manages access to one or more data repositories.
KVDataRepository * GetRepository(const Char_t *name) const
const TList * GetListOfRepositories() 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.
Pilots user analysis of experimental data.
void SetFullRunList(const KVNumberList &nl)
void SetDataSet(KVDataSet *ds)
void SetRuns(const KVNumberList &nl, Bool_t check=kTRUE)
void SetSystem(KVDBSystem *syst)
Set the System used in the analysis.
TString SystemBatchName() 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
virtual TList * GetListOfAvailableSystems(const Char_t *datatype, KVDBSystem *systol=0)
virtual KVDataAnalysisTask * GetAnalysisTask(Int_t) const
virtual Int_t GetNtasks() const
KVNumberList GetRunList(const Char_t *data_type, const KVDBSystem *sys=0) const
virtual void MakeAnalysisClass(const Char_t *task, const Char_t *classname)
virtual KVSeqCollection * GetSystems() const
Directory dialogue box for KVDataAnalysisLauncher.
virtual void Init(TString &fileList, const Char_t *title)
init window
virtual Char_t * GetFileFromDialog(void)
Gets the file name from a TGFileDialog.
virtual Bool_t CanAdd(const Char_t *s)
tells whether the file in ths string fn can be added to the list box
KVGDirectoryList(TString &st, const Char_t *titre="File list", const TGWindow *p=0, const TGWindow *main=0, Bool_t ok=kTRUE)
Createur.
~KVGDirectoryList()
Destructeur.
File dialogue box for KVDataAnalysisLauncher.
virtual void Done(void)
build the file list string from the content of the TGListBox
~KVGFileList()
Destructeur.
virtual Bool_t CanAdd(const Char_t *s)
tells whether the file in ths string fn can be added to the list box
virtual void AddFile(void)
virtual void Init(TString &fileList, const Char_t *title)
Init window.
virtual Char_t * GetFileFromDialog(void)
Gets the file name from a TGFileDialog.
TGTextButton * boutAllRem
virtual void RemoveFiles(void)
Remove all the selected files from the TGListBox.
KVGFileList(TString &st, const Char_t *titre="File list", const TGWindow *p=0, const TGWindow *main=0, Bool_t ok=kTRUE)
Createur.
virtual void RemoveAllFiles(void)
Remove all the files from the TGListBox.
virtual void InitFileList()
Enhanced version of ROOT TGListView widget.
virtual void UnSelectAll()
virtual void Display(const TCollection *l)
TObject * GetLastSelectedObject() const
void ActivateItemsWithColumnData(const Char_t *colname, KVNumberList data, Bool_t activate=kTRUE)
void ActivateItemWithColumnData(const Char_t *colname, const Char_t *data, Bool_t activate=kTRUE)
TList * GetSelectedObjects() const
void SetFromEnv(TEnv *tenv, const TString &prefix="")
Int_t GetNpar() const
return the number of stored parameters
Bool_t HasBoolParameter(const Char_t *name) const
Bool_t GetBoolValue(const Char_t *name) const
void WriteToEnv(TEnv *tenv, const TString &prefix="")
Strings used to represent a set of ranges of values.
void Inter(const KVNumberList &list)
const Char_t * AsString(Int_t maxchars=0) const
void SetList(const TString &)
void Add(Int_t)
Add value 'n' to the list.
void Clear(Option_t *="")
Empty number list, reset it to initial state.
Description of an individual run file in an experimental dataset.
virtual Int_t GetSize() const
Extension of ROOT TString class which allows backwards compatibility with ROOT v3....
virtual Int_t GetEntries() const
virtual void SetOwner(Bool_t enable=kTRUE)
virtual const char * GetValue(const char *name, const char *dflt) const
virtual void SetValue(const char *name, const char *value, EEnvLevel level=kEnvChange, const char *type=nullptr)
virtual void SaveLevel(EEnvLevel level)
void WaitFor(TGWindow *w)
void NeedRedraw(TGWindow *w, Bool_t force=kFALSE)
virtual Int_t GetSelected() const
virtual void Select(Int_t id, Bool_t emit=kTRUE)
virtual TGLBEntry * GetSelectedEntry() const
virtual void SetEnabled(Bool_t on=kTRUE)
virtual TGLBEntry * FindEntry(const char *s) const
virtual void AddEntry(const char *s, Int_t id)
virtual void AddFrame(TGFrame *f, TGLayoutHints *l=0)
virtual void MapSubwindows()
virtual void Resize(TGDimension size)
void SetTextJustify(Int_t tmode)
void SetText(const char *newText)
virtual void RemoveEntry(Int_t id=-1)
virtual void AddEntry(const char *s, Int_t id)
virtual TGLBEntry * GetEntry(Int_t id) const
virtual void GetSelectedEntries(TList *selected)
virtual void RemoveEntries(Int_t from_ID, Int_t to_ID)
virtual TGLBEntry * FindEntry(const char *s) const
virtual void CloseWindow()
virtual void SetIntNumber(Long_t val)
virtual Long_t GetIntNumber() const
virtual Double_t GetNumber() const
virtual void SetText(const TString &new_label)
const char * GetText() const
void SetEnabled(Bool_t flag=kTRUE)
virtual void SetText(const char *text, Bool_t emit=kTRUE)
virtual void Add(TObject *obj)
TObject * Remove(const TObjLinkPtr_t &lnk)
virtual TObject * FindObject(const char *name) const
virtual TObject * At(Int_t idx) const
virtual void Clear(Option_t *option="")
virtual const char * GetName() const
virtual const char * GetTitle() const
const TString & GetString() const
virtual const char * GetName() const
Bool_t Connect(const char *signal, const char *receiver_class, void *receiver, const char *slot)
virtual Int_t IndexOf(const TObject *obj) const
int CompareTo(const char *cs, ECaseCompare cmp=kExact) const
Bool_t EndsWith(const char *pat, ECaseCompare cmp=kExact) const
TObjArray * Tokenize(const TString &delim) const
const char * Data() const
TString & Prepend(char c, Ssiz_t rep=1)
void Form(const char *fmt,...)
TString & Remove(EStripType s, char c)
TString & ReplaceAll(const char *s1, const char *s2)
Ssiz_t Index(const char *pat, Ssiz_t i=0, ECaseCompare cmp=kExact) const
virtual TList * GetListOfFiles() const
virtual void Unload(const char *module)
virtual const char * Getenv(const char *env)
virtual const char * GetIncludePath()
virtual Int_t Exec(const char *shellcmd)
virtual void SetIncludePath(const char *includePath)
virtual int GetPathInfo(const char *path, FileStat_t &buf)
virtual const char * HostName()
virtual char * ExpandPathName(const char *path)
void box(Int_t pat, Double_t x1, Double_t y1, Double_t x2, Double_t y2)
int main(int argc, char **argv)