ID |
Date |
Author |
Topic |
Subject |
82
|
07 May 2005 |
Ryu Sawada | Bug Report | Mismatch of [Set/Append]Formatted | In ROMEBuilder.cpp, there are some mismatchs of formart and argument of ROMEString::Set or
AppendFormatted.
1000 format.SetFormatted(" void Set%%s%%%ds(%%-%ds %%s%%%ds) { f%%s%%%ds = %%s; };
\n",lb,typeLen,lb,lb,lb);
3980 format.SetFormatted(" %%s%%s*%%%ds Get%%sAt(int index)%%%ds\n",typeLen-
folderName[i].Length()-scl,0+nameLen-folderName[i].Length(),lt);
5875 buffer.AppendFormatted(" bool CheckConfiguration(int runNumber);\n",shortCut.Data());
6487 buffer.AppendFormatted("#include <TBranchElement.h>\n",shortCut.Data());
7231 buffer.AppendFormatted(" return buffer;\n",stringBuffer.Data());
7271 buffer.AppendFormatted(" if (!this->GetDataBase(name.Data())->Read
(values,path,gAnalyzer->GetCurrentRunNumber())) {\n",folderName[i].Data(),valueName[i][j].Data());
7358 buffer.AppendFormatted("%s xml->WriteElement(\"HistArrayStartIndex\",\"0\");
\n",blank.Data(),pointerI.Data(),histoName[taskHierarchyClassIndex[i]][j].Data());
8771 buffer.AppendFormatted(" obj/%sAnalyzer.obj obj/%sEventLoop.obj obj/%sConfig.obj obj/
main.obj",shortCut.Data(),shortCut.Data(),shortCut.Data(),shortCut.Data(),shortCut.Data());
8815 buffer.AppendFormatted(" g++ $(Flags) -o $@ $(objects) $(Libraries)\n\n",shortCut.Data
(),mainProgName.Data());
8872 buffer.AppendFormatted("obj/%sFAnalyzer.obj: src/framework/%sFAnalyzer.f src/framework/%
sAnalyzer.cpp include/framework/%sAnalyzer.h\n",shortCut.Data(),shortCut.Data(),shortCut.Data());
9341 htmlFile.SetFormatted("%s%sUserHTML.html",outDir.Data(),shortCut.Data(),mainProgName.Data
()); |
84
|
13 May 2005 |
Ryu Sawada | Bug Report | Mismatch of [Set/Append]Formatted | done.
> In ROMEBuilder.cpp, there are some mismatchs of formart and argument of ROMEString::Set or
> AppendFormatted.
>
> 1000 format.SetFormatted(" void Set%%s%%%ds(%%-%ds %%s%%%ds) { f%%s%%%ds = %%s; };
> \n",lb,typeLen,lb,lb,lb);
>
> 3980 format.SetFormatted(" %%s%%s*%%%ds Get%%sAt(int index)%%%ds\n",typeLen-
> folderName[i].Length()-scl,0+nameLen-folderName[i].Length(),lt);
>
> 5875 buffer.AppendFormatted(" bool CheckConfiguration(int runNumber);\n",shortCut.Data());
>
> 6487 buffer.AppendFormatted("#include <TBranchElement.h>\n",shortCut.Data());
>
> 7231 buffer.AppendFormatted(" return buffer;\n",stringBuffer.Data());
>
> 7271 buffer.AppendFormatted(" if (!this->GetDataBase(name.Data())->Read
> (values,path,gAnalyzer->GetCurrentRunNumber())) {\n",folderName[i].Data(),valueName[i][j].Data());
>
> 7358 buffer.AppendFormatted("%s xml->WriteElement(\"HistArrayStartIndex\",\"0\");
> \n",blank.Data(),pointerI.Data(),histoName[taskHierarchyClassIndex[i]][j].Data());
>
> 8771 buffer.AppendFormatted(" obj/%sAnalyzer.obj obj/%sEventLoop.obj obj/%sConfig.obj obj/
> main.obj",shortCut.Data(),shortCut.Data(),shortCut.Data(),shortCut.Data(),shortCut.Data());
>
> 8815 buffer.AppendFormatted(" g++ $(Flags) -o $@ $(objects) $(Libraries)\n\n",shortCut.Data
> (),mainProgName.Data());
>
> 8872 buffer.AppendFormatted("obj/%sFAnalyzer.obj: src/framework/%sFAnalyzer.f src/framework/%
> sAnalyzer.cpp include/framework/%sAnalyzer.h\n",shortCut.Data(),shortCut.Data(),shortCut.Data());
>
> 9341 htmlFile.SetFormatted("%s%sUserHTML.html",outDir.Data(),shortCut.Data(),mainProgName.Data
> ()); |
103
|
17 Oct 2005 |
Matthias Schneebeli | Info | Moved ROME from cvs to subversion | ROME moved from the cvs repository to a subversion repository.
Subversion repositories are much easier to maintain.
For the user almost nothing changes.
'cvs checkout' translates to 'svn checkout' and so on.
Subversion can be downloaded from http://subversion.tigris.org/project_packages.html
I hope this will not cause much inconvenience.
Matthias |
29
|
01 Jan 2005 |
Ryu Sawada | Bug Report | Multiple TTree writing | When I make two TTree's write flag true. Both TTrees is written in one file. And the other file is empty.
I added some lines to fix it in ROMEEventLoop.cpp
-------
This is other topic.
Probably, to close TFile after each run is good.
Because, when program runs for several run,
even if program aborts after some runs, files of former runs are safe.
-------
941 // Write non accumulative output tree files
942 ROMEString filename;
943 ROMETree *romeTree;
944 TTree *tree;
945 TFile *fTreeFile;
946 ROMEString runNumberString;
947 gROME->GetCurrentRunNumberString(runNumberString);
948 for (int j=0;j<gROME->GetTreeObjectEntries();j++) {
949 romeTree = gROME->GetTreeObjectAt(j);
950 fTreeFile = fTreeFiles[j];
951 if (romeTree->isWrite() && !gROME->isTreeAccumulation()) {
952 tree = romeTree->GetTree();
953 cout << "Writing Root-File " << tree->GetName() << runNumberString.Data() << ".root"
<< endl;
954 fTreeFile->cd();
955 tree->Write("",TObject::kOverwrite);
956 }
957 }
958 cout << endl; |
30
|
04 Jan 2005 |
Matthias Schneebeli | Bug Report | Multiple TTree writing | > When I make two TTree's write flag true. Both TTrees is written in one file. And the other file is empty.
>
> I added some lines to fix it in ROMEEventLoop.cpp
>
> -------
> This is other topic.
> Probably, to close TFile after each run is good.
> Because, when program runs for several run,
> even if program aborts after some runs, files of former runs are safe.
>
>
>
> -------
> 941 // Write non accumulative output tree files
> 942 ROMEString filename;
> 943 ROMETree *romeTree;
> 944 TTree *tree;
> 945 TFile *fTreeFile;
> 946 ROMEString runNumberString;
> 947 gROME->GetCurrentRunNumberString(runNumberString);
> 948 for (int j=0;j<gROME->GetTreeObjectEntries();j++) {
> 949 romeTree = gROME->GetTreeObjectAt(j);
> 950 fTreeFile = fTreeFiles[j];
> 951 if (romeTree->isWrite() && !gROME->isTreeAccumulation()) {
> 952 tree = romeTree->GetTree();
> 953 cout << "Writing Root-File " << tree->GetName() << runNumberString.Data() << ".root"
> << endl;
> 954 fTreeFile->cd();
> 955 tree->Write("",TObject::kOverwrite);
> 956 }
> 957 }
> 958 cout << endl;
Thanks |
87
|
26 Jun 2005 |
Yasuko HISAMATSU | Bug Report | Need to include stdarg.h in file ROMEString.h | Hello,
It seems some compliers have a problem with making ROME, sending error message
saying,
In file included from builder/src/ROMEBuilder.cpp:574:
/home/pekochan/rome/20050626/rome/include/ROMEString.h:41: type spec ifier
omitted for parameter `va_list'
...etc
This problem can be fixed in file "ROMEString.h" by adding the following
either line;
#include <stdarg.h>
or
#include <Varargs.h> |
88
|
27 Jun 2005 |
Matthias Schneebeli | Bug Report | Need to include stdarg.h in file ROMEString.h | > Hello,
>
> It seems some compliers have a problem with making ROME, sending error message
> saying,
>
> In file included from builder/src/ROMEBuilder.cpp:574:
> /home/pekochan/rome/20050626/rome/include/ROMEString.h:41: type spec ifier
> omitted for parameter `va_list'
> ...etc
>
>
> This problem can be fixed in file "ROMEString.h" by adding the following
> either line;
>
> #include <stdarg.h>
>
> or
>
> #include <Varargs.h>
Thanks for reporting that problem.
#include <stdarg.h>
is added now in the cvs. |
91
|
28 Jun 2005 |
Ryu Sawada | Bug Report | Need to include stdarg.h in file ROMEString.h | > > Hello,
> >
> > It seems some compliers have a problem with making ROME, sending error message
> > saying,
> >
> > In file included from builder/src/ROMEBuilder.cpp:574:
> > /home/pekochan/rome/20050626/rome/include/ROMEString.h:41: type spec ifier
> > omitted for parameter `va_list'
> > ...etc
> >
> >
> > This problem can be fixed in file "ROMEString.h" by adding the following
> > either line;
> >
> > #include <stdarg.h>
> >
> > or
> >
> > #include <Varargs.h>
>
>
> Thanks for reporting that problem.
>
> #include <stdarg.h>
> is added now in the cvs.
replaced with #include <Varargs.h> |
180
|
18 Feb 2016 |
Joe Grange | Forum | Online mode issue | Hello all,
I'm having an issue with getting rome to run in online mode in some cases only.
That is, when I run the analyzer that accesses the INPT bank (standard for PSI
slow control buses) the online mode works just fine. But when I access other
banks, when I run in online mode only blank canvases are updated and no data
appears.
I can run all of these analyzers in offline mode and they all work as expected
so this eliminates many common user bugs. Any ideas how I might debug further?
I also tried printing the data in the various tasks and indeed in online mode
no data is being accessed.
Thanks,
Joe |
183
|
02 Mar 2016 |
Ryu Sawada | Forum | Online mode issue | Dear Joe
There is a working example for the online access to midas.
Please see,
https://bitbucket.org/muegamma/rome3/wiki/Midas
The example is $ROMESYS/examples/midas.
There is a README file in the directory.
The example works with an example experiment in MIDAS package so you can try.
If you look at ADC2 tab, the histograms should be updated when DAQ is running.
The "Trigger" events are polled in the MIDAS frontend, and "Scaler" data are taken periodically.
So I guess the "Scaler" corresponds to your INPT and "Trigger" corresponds to your other event types.
You may compare the examples and your analyzer/frontend for finding the cause of your problem.
Ryu
> Hello all,
>
> I'm having an issue with getting rome to run in online mode in some cases only.
> That is, when I run the analyzer that accesses the INPT bank (standard for PSI
> slow control buses) the online mode works just fine. But when I access other
> banks, when I run in online mode only blank canvases are updated and no data
> appears.
>
> I can run all of these analyzers in offline mode and they all work as expected
> so this eliminates many common user bugs. Any ideas how I might debug further?
> I also tried printing the data in the various tasks and indeed in online mode
> no data is being accessed.
>
> Thanks,
> Joe |
185
|
10 Mar 2016 |
Farrukh Azfar | Forum | Option to analyse every Nth event | Dear Colleagues
I was wondering if there was an option to analyse only ever N events in ROME. If
this is doable via an xml switch I am guessing this would be the best and most
convenient solution.
Else any advice on how to do this in code would be great as well -
many thanks
Farrukh |
187
|
13 Mar 2016 |
Ryu Sawada | Forum | Option to analyse every Nth event | I added a new parameter <EventStep> to configuration XML file.
The default is 1.
If you change it to, for example 2, every second events are analyzed.
For using it, you need to
- update ROME
- compile ROME
- re-build and make your project
Once you use an existing config XML file, a new parameter will be automatically added to it.
Ryu
> Dear Colleagues
>
> I was wondering if there was an option to analyse only ever N events in ROME. If
> this is doable via an xml switch I am guessing this would be the best and most
> convenient solution.
>
> Else any advice on how to do this in code would be great as well -
>
> many thanks
> Farrukh |
184
|
07 Mar 2016 |
SUDESHNA GANGULY | Suggestion | Problem in adding two TGraphs in the same pad using <Argus> block in tabbing | I wanted to add two different TGraphs (Corresponding to two calorimeters) into
the same pad.
So in the xml file I did:
<Graph>
<GraphName>MyGraph</GraphName>
<GraphFolderName>mygraphs</GraphFolderName>
<GraphType>TGraph</GraphType>
<GraphArraySize>2</GraphArraySize>
<GraphXLabel>Event no.</GraphXLabel>
<GraphYLabel>Island no.</GraphYLabel>
<GraphXmin>0</GraphXmin>
<GraphXmax>10000</GraphXmax>
<GraphYmin>0</GraphYmin>
<GraphYmax>100000</GraphYmax>
<Argus>
<Tab>
<TabName>SummaryFCBank</TabName>
<ObjectArrayIndex>0-1</ObjectArrayIndex>
<Index>1</Index>
<DrawSamePad>true</DrawSamePad>
</Tab>
</Argus>
</Graph>
And in src/tasks:
in the HGUITFillHisto.cpp code I did:
for(int icalo=1; icalo<3; icalo++) [For each calorimeter there is one bank, and one n_islands value from that
bank per event.]
{
GetMyGraphAt(icalo-1)->SetPoint(gAnalyzer->GetCurrentEventNumber(),gAnalyzer->GetCurrentEventNumber(),n_islands);
GetMyGraphAt(0)->SetMarkerColor(2);
GetMyGraphAt(1)->SetMarkerColor(3);
ArgusHistoDisplay::SetLimits(GetMyGraphAt(icalo-1));
}
But then I get an empty pad in the tab.
It works when I create the TGraph for only one calorimeter, using GetMyGraph().
Any help would be much appreciated.
Thanks!
Sudeshna |
186
|
13 Mar 2016 |
Ryu Sawada | Suggestion | Problem in adding two TGraphs in the same pad using <Argus> block in tabbing | I tried to reproduce the problem with using histoGUI example.
However I couldn't reproduce it; namely two graphs are shown.
I attached a modification for the example, which I applied for the test.
If you attach something similar which can reproduce the problem, it will be easier for me to find the reason.
Ryu
diff --git a/examples/histoGUI/histoGUI.xml b/examples/histoGUI/histoGUI.xml
index 3043dec..489052a 100644
--- a/examples/histoGUI/histoGUI.xml
+++ b/examples/histoGUI/histoGUI.xml
@@ -34,6 +34,7 @@
<GraphName>MyGraph</GraphName>
<GraphFolderName>mygraphs</GraphFolderName>
<GraphType>TGraph</GraphType>
+ <GraphArraySize>2</GraphArraySize>
<GraphXLabel>X</GraphXLabel>
<GraphYLabel>Y</GraphYLabel>
<GraphXmin>0</GraphXmin>
@@ -43,7 +44,9 @@
<Argus>
<Tab>
<TabName>GeneratedHisto</TabName>
+ <ObjectArrayIndex>0-1</ObjectArrayIndex>
<Index>4</Index>
+ <DrawSamePad>true</DrawSamePad>
</Tab>
</Argus>
</Graph>
diff --git a/examples/histoGUI/src/tasks/HGUITFillHisto.cpp b/examples/histoGUI/src/tasks/HGUITFillHisto.cpp
index 6ada840..c4dd95f 100644
--- a/examples/histoGUI/src/tasks/HGUITFillHisto.cpp
+++ b/examples/histoGUI/src/tasks/HGUITFillHisto.cpp
@@ -51,7 +51,10 @@ ClassImp(HGUITFillHisto)
void HGUITFillHisto::Init()
{
- GetMyGraph()->SetMarkerStyle(31);
+ GetMyGraphAt(0)->SetMarkerStyle(31);
+ GetMyGraphAt(1)->SetMarkerStyle(31);
+ GetMyGraphAt(0)->SetMarkerColor(2);
+ GetMyGraphAt(1)->SetMarkerColor(4);
GetMyGraphError()->SetMarkerStyle(8);
GetMyGraphError()->SetMarkerColor(4);
}
@@ -69,17 +72,23 @@ void HGUITFillHisto::Event()
GetMyHistoAt(2)->SetLineColor(2);
GetMyHistoAt(3)->SetLineColor(4);
GetMyOtherHisto()->Fill(gRandom->Gaus(0,40));
- GetMyGraph()->SetPoint(0,0,gRandom->Rndm());
- GetMyGraph()->SetPoint(1,1,gRandom->Rndm());
- GetMyGraph()->SetPoint(2,2,gRandom->Rndm());
- GetMyGraph()->SetPoint(3,3,gRandom->Rndm());
- GetMyGraph()->SetPoint(4,4,gRandom->Rndm());
+ GetMyGraphAt(0)->SetPoint(0,0,gRandom->Rndm());
+ GetMyGraphAt(0)->SetPoint(1,1,gRandom->Rndm());
+ GetMyGraphAt(0)->SetPoint(2,2,gRandom->Rndm());
+ GetMyGraphAt(0)->SetPoint(3,3,gRandom->Rndm());
+ GetMyGraphAt(0)->SetPoint(4,4,gRandom->Rndm());
+ GetMyGraphAt(1)->SetPoint(0,0,gRandom->Rndm());
+ GetMyGraphAt(1)->SetPoint(1,1,gRandom->Rndm());
+ GetMyGraphAt(1)->SetPoint(2,2,gRandom->Rndm());
+ GetMyGraphAt(1)->SetPoint(3,3,gRandom->Rndm());
+ GetMyGraphAt(1)->SetPoint(4,4,gRandom->Rndm());
GetMyGraphError()->SetPoint(0,0,gRandom->Rndm());
GetMyGraphError()->SetPoint(1,1,gRandom->Rndm());
GetMyGraphError()->SetPoint(2,2,gRandom->Rndm());
GetMyGraphError()->SetPoint(3,3,gRandom->Rndm());
GetMyGraphError()->SetPoint(4,4,gRandom->Rndm());
- ArgusHistoDisplay::SetLimits(GetMyGraph());
+ ArgusHistoDisplay::SetLimits(GetMyGraphAt(0));
+ ArgusHistoDisplay::SetLimits(GetMyGraphAt(1));
ArgusHistoDisplay::SetLimits(GetMyGraphError());
}
> I wanted to add two different TGraphs (Corresponding to two calorimeters) into
> the same pad.
> So in the xml file I did:
> <Graph>
> <GraphName>MyGraph</GraphName>
> <GraphFolderName>mygraphs</GraphFolderName>
> <GraphType>TGraph</GraphType>
> <GraphArraySize>2</GraphArraySize>
> <GraphXLabel>Event no.</GraphXLabel>
> <GraphYLabel>Island no.</GraphYLabel>
> <GraphXmin>0</GraphXmin>
> <GraphXmax>10000</GraphXmax>
> <GraphYmin>0</GraphYmin>
> <GraphYmax>100000</GraphYmax>
> <Argus>
> <Tab>
> <TabName>SummaryFCBank</TabName>
> <ObjectArrayIndex>0-1</ObjectArrayIndex>
> <Index>1</Index>
> <DrawSamePad>true</DrawSamePad>
> </Tab>
> </Argus>
> </Graph>
>
>
> And in src/tasks:
> in the HGUITFillHisto.cpp code I did:
> for(int icalo=1; icalo<3; icalo++) [For each calorimeter there is one bank, and one n_islands value from that
> bank per event.]
> {
> GetMyGraphAt(icalo-1)->SetPoint(gAnalyzer->GetCurrentEventNumber(),gAnalyzer->GetCurrentEventNumber(),n_islands);
>
> GetMyGraphAt(0)->SetMarkerColor(2);
>
> GetMyGraphAt(1)->SetMarkerColor(3);
>
> ArgusHistoDisplay::SetLimits(GetMyGraphAt(icalo-1));
>
> }
>
> But then I get an empty pad in the tab.
> It works when I create the TGraph for only one calorimeter, using GetMyGraph().
>
> Any help would be much appreciated.
>
> Thanks!
> Sudeshna |
Attachment 1: screen.jpg
|
|
139
|
09 Jun 2015 |
Farrukh Azfar | Bug Report | Problems with programming tabs when using TGraph | Dear Colleagues,
I have been using the ROME framework and have succesfully implemented a program
to run on MIDAS input and plot histograms.
Not satisfied with the default settings of the Canvas, pads and text sizes etc I
consulted Ryu who kindly showed me how to implement the event and init and update
methods in the Tabs to bring the display closer to what I needed.
This has worked fine with histograms. However not with TGraphs:
I noticed that if I implemented the plotting of the TGraphs in the tab class then
after setting points in the TGraph in the Fill tasks the Tab classes plot was
empty -> is there something peculiar about TGraph ? Any tips would be great !
many thanks
Farrukh Azfar |
141
|
11 Jun 2015 |
Ryu Sawada | Bug Report | Problems with programming tabs when using TGraph | Dear Farrukh
I presume you implemented your tab which draws the graph.
Which option do you use for Draw function of the graph ?
I am afraid you might forget to add 'A' in the option.
For example, you need to use 'A' like,
graph->Draw("APL");
Best regards,
Ryu
> Dear Colleagues,
>
> I have been using the ROME framework and have succesfully implemented a program
> to run on MIDAS input and plot histograms.
>
> Not satisfied with the default settings of the Canvas, pads and text sizes etc I
> consulted Ryu who kindly showed me how to implement the event and init and update
> methods in the Tabs to bring the display closer to what I needed.
>
> This has worked fine with histograms. However not with TGraphs:
>
> I noticed that if I implemented the plotting of the TGraphs in the tab class then
> after setting points in the TGraph in the Fill tasks the Tab classes plot was
> empty -> is there something peculiar about TGraph ? Any tips would be great !
>
> many thanks
> Farrukh Azfar |
Draft
|
13 Jun 2015 |
Farrukh Azfar | Bug Report | Problems with programming tabs when using TGraph | Hi Ryu,
thanks for your reply. yes I am(was) using it.
Ryu Sawada wrote: | Dear Farrukh
I presume you implemented your tab which draws the graph.
Which option do you use for Draw function of the graph ?
I am afraid you might forget to add 'A' in the option.
For example, you need to use 'A' like,
graph->Draw("APL");
Best regards,
Ryu
> Dear Colleagues,
>
> I have been using the ROME framework and have succesfully implemented a program
> to run on MIDAS input and plot histograms.
>
> Not satisfied with the default settings of the Canvas, pads and text sizes etc I
> consulted Ryu who kindly showed me how to implement the event and init and update
> methods in the Tabs to bring the display closer to what I needed.
>
> This has worked fine with histograms. However not with TGraphs:
>
> I noticed that if I implemented the plotting of the TGraphs in the tab class then
> after setting points in the TGraph in the Fill tasks the Tab classes plot was
> empty -> is there something peculiar about TGraph ? Any tips would be great !
>
> many thanks
> Farrukh Azfar |
|
147
|
15 Jun 2015 |
Ryu Sawada | Bug Report | Problems with programming tabs when using TGraph | Dear Farrukh
If you attach your code related to the problem, I can investigate the problem.
Best regards,
Ryu
Farrukh Azfar wrote: | Hi Ryu,
thanks for your reply. yes I am(was) using it.
Ryu Sawada wrote: | Dear Farrukh
I presume you implemented your tab which draws the graph.
Which option do you use for Draw function of the graph ?
I am afraid you might forget to add 'A' in the option.
For example, you need to use 'A' like,
graph->Draw("APL");
Best regards,
Ryu
> Dear Colleagues,
>
> I have been using the ROME framework and have succesfully implemented a program
> to run on MIDAS input and plot histograms.
>
> Not satisfied with the default settings of the Canvas, pads and text sizes etc I
> consulted Ryu who kindly showed me how to implement the event and init and update
> methods in the Tabs to bring the display closer to what I needed.
>
> This has worked fine with histograms. However not with TGraphs:
>
> I noticed that if I implemented the plotting of the TGraphs in the tab class then
> after setting points in the TGraph in the Fill tasks the Tab classes plot was
> empty -> is there something peculiar about TGraph ? Any tips would be great !
>
> many thanks
> Farrukh Azfar |
|
|
105
|
07 Dec 2005 |
Ryu Sawada | Suggestion | Proposal reorganiztion directory structure | *) Currently, builder makes many files in the top directory.
XXXFolderDict.cpp
XXXFrameworkDict.cpp
XXXROMEDict.cpp
XXXTaskDict.cpp
XXXUserDict.cpp
XXXFolderDict.h
XXXFrameworkDict.h
XXXROMEDict.h
XXXTaskDict.h
XXXUserDict.h
xxxproject.exe
XXXProject.html
XXXUserHTML.html
libXXXProject.so
(romeConfig.xml)
Makefile
Makefile.usr
But I think it makes hard to find important files. And I'm afraid people feel ROME difficult.
Really important files are romeConfig.xml, Makefile and xxxproject.exe. So I propose followings
1) make "dict" directory and put all dictionary related files in it.
2) I have proposed to make XXXUserHTML.html before. But I started to feel this feature is not necessary any more.
3) remove libXXXProject.so from "all:" in Makefile. Users need to type "make so" to create shared library.
Makefile will look like
.
.
all: obj blank.d xxxproject.exe
.
.
so: libxxxproject.so
libxxxproject.so: $(objects)
g++ $(Flags) $(soflags) -o libxxxproject.so $(objects) $(Libraries)
*) There are still some complains that it is not easy to know which files are overwritten by builder
For instance, there is no warning messages in the header of XXXProject.html and Makefile.
And some files under "framework" directory are persistent. For instance user defined DAQ, user defined
database and folders with "editable class" flag are persistent. So I propose to separate them
at the first level instead of separating "framework" and "task". It will look like
top
|-- framework
`-- user
|-- daqs
|-- databases
|-- folders
`-- tasks
daqs, databases and folders may appear only when necessary.
All files which will be overwritten are put in framework. And others go under user.
When a task does not have "editable class" flag. the .cpp will go to user/tasks/ and
the .h file will go to framework/
This change is more like matter of favor.
And there are disadvantages.
.h will be various places, and it becomes difficult to find a .h file to know the class structure.
And the file with the same name can be in different places.
For instance, normally .h file of folder will be put in framework, but if it has "editable class" flag it will be put in user/folders/.
And if one changes "editable class" flag meanwhile, there can be two files with the same name. It may cause problem
With this change all ROME users need to move their files, so we have to think carefully.
( Anoter possibility is preparing nice document on ROME homepage instead of changing directory structure. )
P.S.
This is a very small point and is not related to directory structure.
Normally people associate online data taking with the word "DAQ". But in ROME, DAQSystem is something like input data format. ROME and database are not clearly DAQ.
When we have chanse, it may be good to rename nicer. |
110
|
09 Jan 2006 |
Ryu Sawada | Suggestion | Quit mode | Sometimes I hear that going to interactive session after end of analysis is uncomfortable. In fact it is possible to quit program immediately with -b option.
But -b is not only for that, It suppresses print. So I propose to make QuidMode in which program exit without going interactive session.
-q option is good, because ROOT has same option which means quit program just after macro is executed. |
|