Back Midas Rome Roody Rootana
  Rome Analyzer Framework, Page 4 of 11  Not logged in ELOG logo
    Reply  29 Oct 2015, Ryu Sawada, Forum, TGraph objects 
Hello,

You can find an example in $ROMESYS/examples/histoGUI
Graphs are defined in histoGUI.xml and the data points are set in src/tasks/HGUITFillHisto.cpp

Best regards,

Ryu

> Does anyone have an example of how to add TGraph objects in ROME? We often use these in our MIDAS analyzers to create plots of quantities vs. event number (i.e. bank size, number of triggers, etc). Thanks!
Entry  29 Aug 2005, Ryu Sawada, Bug Report, TFile creation and TTree 
When the filename base IO was added, it seems that TFile creation was moved from 
ROMEEventLoop::DAQInit to ROMEEventLoop:DAQEndOfRun.

So ROME makes TTrees without outputfile.

This is dangerous when a TTree becomes huge.
It can consume large amount of memory.
    Reply  30 Aug 2005, Matthias Schneebeli, Bug Report, TFile creation and TTree 
> When the filename base IO was added, it seems that TFile creation was moved from 
> ROMEEventLoop::DAQInit to ROMEEventLoop:DAQEndOfRun.
> 
> So ROME makes TTrees without outputfile.
> 
> This is dangerous when a TTree becomes huge.
> It can consume large amount of memory.

Your right. I have changed it back.
Entry  13 Oct 2004, ryu, Suggestion, TBranch compression 
It seems that branchs in TTree which is created by ROME is not compressed. 

So I changed src/framework/XXEventLoop.cpp like

.
.
.
 tree = new TTree("Trigger","Trigger");
 tree->Branch("Info","ROMETreeInfo",&fTreeInfo,32000,99);
 tree->GetBranch("Info")->SetCompressionLevel(1);
 tree->Branch("LPADCData","TClonesArray",gAnalyzer->GetLPADCDataObjectsAddress(),32000,99);
 tree->GetBranch("LPADCData")->SetCompressionLevel(1);
.
.
.

After this change, file size which was 739MB became 235MB.
    Reply  13 Oct 2004, Matthias Schneebeli, Suggestion, TBranch compression 
> It seems that branchs in TTree which is created by ROME is not compressed. 
> 
> So I changed src/framework/XXEventLoop.cpp like
> 
> .
> .
> .
>  tree = new TTree("Trigger","Trigger");
>  tree->Branch("Info","ROMETreeInfo",&fTreeInfo,32000,99);
>  tree->GetBranch("Info")->SetCompressionLevel(1);
>  tree->Branch("LPADCData","TClonesArray",gAnalyzer->GetLPADCDataObjectsAddress(),32000,99);
>  tree->GetBranch("LPADCData")->SetCompressionLevel(1);
> .
> .
> .
> 
> After this change, file size which was 739MB became 235MB.

Yes your right.

I added that.
    Reply  14 Oct 2004, Stefan Ritt, Suggestion, TBranch compression 
> Yes your right.
> 
> I added that.

The compression level should not be "hard-wired" in the builder. Some people might consider not
using compression in favour of higher speed. So maybe an option in the XML File like

<Tree>
  <TreeName>Test</TreeName>
  <TreeTitle>Test Data</TreeTitle>
  <CompressionLevel>1</CompressionLevel>
  ...
</Tree>
    Reply  14 Oct 2004, Matthias Schneebeli, Suggestion, TBranch compression 
> > Yes your right.
> > 
> > I added that.
> 
> The compression level should not be "hard-wired" in the builder. Some people might consider not
> using compression in favour of higher speed. So maybe an option in the XML File like
> 
> <Tree>
>   <TreeName>Test</TreeName>
>   <TreeTitle>Test Data</TreeTitle>
>   <CompressionLevel>1</CompressionLevel>
>   ...
> </Tree>

Ok, that's done.
Entry  11 Oct 2004, Matthias Schneebeli, Info, Schema evolution in root and rome 
For your information:

ROOT has an automatic schema evolution implemented. That means, that all trees 
can be filled into a class from a file, even if the class definition has 
changed (take a look at the input/output section in the root manual).
This works also in the rome environment. All you have to do is to increment the 
version number of a folder, every time you change the folder.

This works for adding, removeing or changing fields. However, if you remove or 
change a field you will have to change your user code, because the Get and Set 
methods will be changed or removed too. So you better think twice about the 
contents of a folder.

Matthias
Entry  03 Sep 2015, Farrukh Azfar, Bug Report, Saving canvas as pdf via a button one vs many pads MIDTBCTab.cppMIDTRCTab.cpp
Dear Colleagues 

we have implemented in one of our tabs a button to call a function which saves a 
canvas to a pdf file with a time date stamp.

1) This works fine when there is only one histogram on the canvas and this code 
is MIDTBCTab.cpp (attached)

2) When the canvas is divided up into a 5x11 pads with 55 histograms and 
we want to save the _whole_ canvas with the whole picture (_not_ any individual 
pads) the code crashes  and no file is generated - the tab code is MIDTRCTab.cpp
and this is also attached 

I am wondering what is going on - is there anything obviously wrong ?

many thanks 

Farrukh
    Reply  07 Sep 2015, Ryu Sawada, Bug Report, Saving canvas as pdf via a button one vs many pads SampleCanvas.20150907.175151.pdf
Dear Farrukh

I tried your code, but the problem was not reproduced.
I can save the canvas as attached without crash.

Only the difference from your code is the histograms.
Since I don't have your task I took and draw 'ADC' histograms from 'FillHistogram' task.
No other changes were made from your code.
I edited .h file of the tab from the automatically generated ones.

Ryu



> Dear Colleagues 
> 
> we have implemented in one of our tabs a button to call a function which saves a 
> canvas to a pdf file with a time date stamp.
> 
> 1) This works fine when there is only one histogram on the canvas and this code 
> is MIDTBCTab.cpp (attached)
> 
> 2) When the canvas is divided up into a 5x11 pads with 55 histograms and 
> we want to save the _whole_ canvas with the whole picture (_not_ any individual 
> pads) the code crashes  and no file is generated - the tab code is MIDTRCTab.cpp
> and this is also attached 
> 
> I am wondering what is going on - is there anything obviously wrong ?
> 
> many thanks 
> 
> Farrukh
    Reply  07 Sep 2015, Farrukh Azfar, Bug Report, Saving canvas as pdf via a button one vs many pads 
Dear Ryu,

thanks very much for trying this out. Perhaps Sudeshna can verify that the problem is still 
there in her code or if its fixed ?

- thanks
Farrukh

> Dear Farrukh
> 
> I tried your code, but the problem was not reproduced.
> I can save the canvas as attached without crash.
> 
> Only the difference from your code is the histograms.
> Since I don't have your task I took and draw 'ADC' histograms from 'FillHistogram' task.
> No other changes were made from your code.
> I edited .h file of the tab from the automatically generated ones.
> 
> Ryu
> 
> 
> 
> > Dear Colleagues 
> > 
> > we have implemented in one of our tabs a button to call a function which saves a 
> > canvas to a pdf file with a time date stamp.
> > 
> > 1) This works fine when there is only one histogram on the canvas and this code 
> > is MIDTBCTab.cpp (attached)
> > 
> > 2) When the canvas is divided up into a 5x11 pads with 55 histograms and 
> > we want to save the _whole_ canvas with the whole picture (_not_ any individual 
> > pads) the code crashes  and no file is generated - the tab code is MIDTRCTab.cpp
> > and this is also attached 
> > 
> > I am wondering what is going on - is there anything obviously wrong ?
> > 
> > many thanks 
> > 
> > Farrukh
Entry  05 Apr 2016, SUDESHNA GANGULY, Bug Report, Running ROME remotely 
Hi Ryu,

After following your instructions to run ROME remotely, using run mode 3 on the
client machine, and mode 0 on the server machine, we can see ARGUS display
appearing on the client machine.
But that does not work if we have the <ARGUS> block for tabbing in the user xml
file. I see a bunch of error messages and then ROME crashes on the client machine.
There might be some conflict with using ARGUS and using run mode 3?

If I take off the <ARGUS> tab block and write my own src/tabs/tab codes, then on
my client machine, using run mode 3 works, the display appears with histograms
without a crash.

Any thought on this issue will be much appreciated.

Thanks,
Sudeshna
    Reply  08 Apr 2016, Ryu Sawada, Bug Report, Running ROME remotely 
Dear Sudeshna

I modified ROME to try to fix problems related <ARGUS> block histograms in run-mode 3.
Could you please pull ROME and use the 'develop' branch ?
(You can switch branches with "git checkout develop' command)

There is an example, examples/argus/histogram.
I tested with the example and it works.

'romeproject' in the directory works as a server.

What you need to use the example for the test is,
0) 'make' in $ROMESYS
1) Build and compile both  examples/argus/histogram and  examples/argus/histogram/romeproject
2) Start analyzer in romeproject with using romeConfig.xml
3) Start monitor with using argusConfig.xml

In the second tab, you must see an <ARGUS> block histogram updated periodically.

Ryu


> Hi Ryu,
> 
> After following your instructions to run ROME remotely, using run mode 3 on the
> client machine, and mode 0 on the server machine, we can see ARGUS display
> appearing on the client machine.
> But that does not work if we have the <ARGUS> block for tabbing in the user xml
> file. I see a bunch of error messages and then ROME crashes on the client machine.
> There might be some conflict with using ARGUS and using run mode 3?
> 
> If I take off the <ARGUS> tab block and write my own src/tabs/tab codes, then on
> my client machine, using run mode 3 works, the display appears with histograms
> without a crash.
> 
> Any thought on this issue will be much appreciated.
> 
> Thanks,
> Sudeshna
Entry  23 Oct 2015, Joe Grange, Forum, Running ROME in online mode Screen_Shot_2015-10-23_at_11.56.12_AM.png
Hi folks,

I've been a happy and successful user of rome in the offline mode for some time,
and now when I try and connect it to a current run the analyzer does not find
the current file.  I attach a screenshot - you can see when I run the analyzer
instead of reporting a successful connection to a midas file it says it starts Run
#-1.  I use a file path specified in romeConfig.xml which is successful when I run
in offline mode but not in online mode, even when I specify the file path with the
run-time argument -pi.  Any ideas what may be the trouble? 

I did verify that my romeConfig.xml file specifies the online mode run configuration. 

Thanks very much,
Joe
    Reply  29 Oct 2015, Ryu Sawada, Forum, Running ROME in online mode 
Dear Joe

In the online mode, the analyzer does not read midas files.
Instead, it connects to a midas experiment over the network or to the local shared memory.

Same as other midas online applications, you may need to specify the hostname of the midas system and the 
experiment name.
You can set the parameters in the <Online> section of your configuration XML file.

Of course, the midas system has to be ready to accept the connection.
You can check it, for example, using 'odbedit' command.

Best regards,

Ryu

> Hi folks,
> 
> I've been a happy and successful user of rome in the offline mode for some time,
> and now when I try and connect it to a current run the analyzer does not find
> the current file.  I attach a screenshot - you can see when I run the analyzer
> instead of reporting a successful connection to a midas file it says it starts Run
> #-1.  I use a file path specified in romeConfig.xml which is successful when I run
> in offline mode but not in online mode, even when I specify the file path with the
> run-time argument -pi.  Any ideas what may be the trouble? 
> 
> I did verify that my romeConfig.xml file specifies the online mode run configuration. 
> 
> Thanks very much,
> Joe
    Reply  05 Nov 2015, Joe Grange, Forum, Running ROME in online mode 
Dear Ryu,

Thanks for your response.  Unfortunately setting these parameters in the XML file does not change the apparent
behavior and I still cannot connect to the experiment in online mode.  I also notice that other colleagues
working with independent experiments successfully run ROME in the online mode without setting the parameters
in the <online> section of the XML file.    

Can you tell me how I can verify the system is ready to accept the connection with the odbedit command?  I can
verify all basic information such as experiment name, run number, are as expected but I wonder if you mean
something more specific.

Thank you,
Joe
    Reply  08 Nov 2015, Ryu Sawada, Forum, Running ROME in online mode 
Dear Joe,

Did you run ROMEBuilder for your application with -midas option ?
With this option, MIDAS library is linked to the application for communicating with MIDAS experiments.

Actual connection is done with using a function implemented in the MIDAS library.
This is the code where a ROME application connects to MIDAS.
(You can see this in $ROMESYS/src/ROMEMidasDAQ.cpp)
cm_connect_experiment is implemented in $MIDASSYS/src/midas.c
//______________________________________________________________________________
Bool_t ROMEMidasDAQ::ConnectExperiment(ROMEMidasDAQ *localThis)
{
   // Connect to the experiment
#if defined( HAVE_MIDAS )
   if (cm_connect_experiment(const_cast<char*>(gROME->GetOnlineHost()),
                             const_cast<char*>(gROME->GetOnlineExperiment()),
                             const_cast<char*>(gROME->GetOnlineAnalyzerName()), 0) != SUCCESS) {
      ROMEPrint::Error("\nCan not connect to experiment\n");
      return kFALSE;
   }

Can you check if this function is called by adding
cout<<"HERE"<<endl;
before the 'if' line and compile your application ?
If you didn't use -midas option when you run ROMEBuilder, HAVE_MIDAS will not be defined and cm_connect_experiment will not be called.

When nothing is written in <online> section of XML, I think the application tries to connect to the localhost with the experiment name defined in /etc/exptab.

I didn't mean anything specific about odbedit.
I guess if you can connect the MIDAS system with odbedit, then the system is ready to accept analyzer too.
But you could ask also MIDAS experts about this issue.

Ryu

> Dear Ryu,
>
> Thanks for your response. Unfortunately setting these parameters in the XML file does not change the apparent
> behavior and I still cannot connect to the experiment in online mode. I also notice that other colleagues
> working with independent experiments successfully run ROME in the online mode without setting the parameters
> in the <online> section of the XML file.
>
> Can you tell me how I can verify the system is ready to accept the connection with the odbedit command? I can
> verify all basic information such as experiment name, run number, are as expected but I wonder if you mean
> something more specific.
>
> Thank you,
> Joe
    Reply  16 Nov 2015, Joe Grange, Forum, Running ROME in online mode 
Dear Ryu,

Thanks very much, indeed it was user error and I did not set -midas option at the compilation stage.

Joe



Ryu Sawada wrote:
Dear Joe,

Did you run ROMEBuilder for your application with -midas option ?
With this option, MIDAS library is linked to the application for communicating with MIDAS experiments.

Actual connection is done with using a function implemented in the MIDAS library.
This is the code where a ROME application connects to MIDAS.
(You can see this in $ROMESYS/src/ROMEMidasDAQ.cpp)
cm_connect_experiment is implemented in $MIDASSYS/src/midas.c
//______________________________________________________________________________
Bool_t ROMEMidasDAQ::ConnectExperiment(ROMEMidasDAQ *localThis)
{
   // Connect to the experiment
#if defined( HAVE_MIDAS )
   if (cm_connect_experiment(const_cast<char*>(gROME->GetOnlineHost()),
                             const_cast<char*>(gROME->GetOnlineExperiment()),
                             const_cast<char*>(gROME->GetOnlineAnalyzerName()), 0) != SUCCESS) {
      ROMEPrint::Error("\nCan not connect to experiment\n");
      return kFALSE;
   }

Can you check if this function is called by adding
cout<<"HERE"<<endl;
before the 'if' line and compile your application ?
If you didn't use -midas option when you run ROMEBuilder, HAVE_MIDAS will not be defined and cm_connect_experiment will not be called.

When nothing is written in <online> section of XML, I think the application tries to connect to the localhost with the experiment name defined in /etc/exptab.

I didn't mean anything specific about odbedit.
I guess if you can connect the MIDAS system with odbedit, then the system is ready to accept analyzer too.
But you could ask also MIDAS experts about this issue.

Ryu

> Dear Ryu,
>
> Thanks for your response. Unfortunately setting these parameters in the XML file does not change the apparent
> behavior and I still cannot connect to the experiment in online mode. I also notice that other colleagues
> working with independent experiments successfully run ROME in the online mode without setting the parameters
> in the <online> section of the XML file.
>
> Can you tell me how I can verify the system is ready to accept the connection with the odbedit command? I can
> verify all basic information such as experiment name, run number, are as expected but I wonder if you mean
> something more specific.
>
> Thank you,
> Joe
Entry  28 Feb 2005, Ryu Sawada, Info, Run number in online mode 
We usually use ROME framework without specifying run number in romeConfig.xml and command line 
in online mode.

Then it warns that "Error in <TArrayI::At>: index 0 out of bounds" when gROME-
>GetRunNumberStringAt(runNumberString,0) is called in ROMEEventLoop::Initialize.
    Reply  21 Mar 2005, Matthias Schneebeli, Info, Run number in online mode 
> We usually use ROME framework without specifying run number in romeConfig.xml and command line 
> in online mode.
> 
> Then it warns that "Error in <TArrayI::At>: index 0 out of bounds" when gROME-
> >GetRunNumberStringAt(runNumberString,0) is called in ROMEEventLoop::Initialize.

done
ELOG V3.1.4-2e1708b5