ID |
Date |
Author |
Topic |
Subject |
172
|
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 |
171
|
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 |
170
|
29 Oct 2015 |
Ryu Sawada | Forum | ROME / Argus crashing between runs with MIDAS | Hello,
You can try to set <MidasOnlineCommunicationThread>to be true in your config XML file.
By doing it, the communication with the midas system will be done in a dedicated thread so it runs independently
of analysis tasks.
Ryu
> I'm running ROME+Argus as an online analyzer and display for a MIDAS DAQ system.
> In our set up there is generally a few seconds between MIDAS runs. ROME
> handles the first run just fine, but always crashes when runs are taken in quick
> succession like this. When running in a slower mode, letting ROME finish
> whatever run of end task exist, the online analyzer does not have this problem.
> I've suppressed writing all output files while in the online mode and I don't
> have any end of run operations in any of the tasks. What is happening at the
> end of running that is causing ROME to crash?
>
> Thanks for any help. |
169
|
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 |
168
|
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! |
167
|
26 Oct 2015 |
Konstantin Olchanski | Forum | ROME / Argus crashing between runs with MIDAS | > I'm running ROME+Argus as an online analyzer and display for a MIDAS DAQ system.
> In our set up there is generally a few seconds between MIDAS runs. ROME
> handles the first run just fine, but always crashes when runs are taken in quick
> succession like this. When running in a slower mode, letting ROME finish
> whatever run of end task exist, the online analyzer does not have this problem.
> I've suppressed writing all output files while in the online mode and I don't
> have any end of run operations in any of the tasks. What is happening at the
> end of running that is causing ROME to crash?
>
> Thanks for any help.
You have to provide a stack trace from your crash. RTFM the gdb command "where".
K.O. |
166
|
24 Oct 2015 |
Robert Pattie | Forum | ROME / Argus crashing between runs with MIDAS | I'm running ROME+Argus as an online analyzer and display for a MIDAS DAQ system.
In our set up there is generally a few seconds between MIDAS runs. ROME
handles the first run just fine, but always crashes when runs are taken in quick
succession like this. When running in a slower mode, letting ROME finish
whatever run of end task exist, the online analyzer does not have this problem.
I've suppressed writing all output files while in the online mode and I don't
have any end of run operations in any of the tasks. What is happening at the
end of running that is causing ROME to crash?
Thanks for any help. |
165
|
23 Oct 2015 |
Joe Grange | Forum | Running ROME in online mode | 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 |
164
|
23 Oct 2015 |
Wes Gohn | Forum | TGraph objects | 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! |
163
|
22 Oct 2015 |
Ryu Sawada | Info | Adding Trees and Branches in ROME | Dear Sudeshna Ganguly
It might be my misunderstanding, but do you mean that you want to add a new branch every time when you take one
event ? (namely, the number of branches n equals to the number of events ?)
In ROME, ( and I guess in most of user applications), each entry in the tree (instead of each branch) refers to one
event. Namely, the number of branches n is independent of the number of events; and the number of entries
increases as you take more events.
In the ROME applications, there is a one to one relation between,
- ROME Folder and Branch in Tree
- ROME Field in Folder and Leave in Tree
ROME folder and field are supposed to be defined in an XML file and the implementation (i.e. conversion to C++ code)
is done by ROMEBuilder.
Folders and fileds can be arrays.
I think, in your case, ROME folder could be like one of the followings depending on your data structure and preference,
Since I guess WFD stands for Wave Form Digitizer and guess has many numbers (instead of one), I expect you may use the 2nd or 3rd example,
1) A single variable 'WFD' is in five 'Data' folder instances
<FolderName>Data</FolderName>
<ArraySize>5</ArraySize>
<Field>
<FieldName>WFD</FieldName>
<FieldType>Double_t</FieldType>
<FieldComment>WFD Values</FieldComment>
</Field>
2) A variable-length array 'WFD' is in five 'Data' folder instances <FolderName>Data</FolderName>
<ArraySize>5</ArraySize>
<Field>
<FieldName>WFD</FieldName>
<FieldType>Double_t</FieldType>
<ArraySize>vector</ArraySize>
<FieldComment>WFD Values</FieldComment>
</Field>
3) A fixed-length array 'WFD' is in five 'Data' folder instances <FolderName>Data</FolderName>
<ArraySize>5</ArraySize>
<Field>
<FieldName>WFD</FieldName>
<FieldType>Double_t</FieldType>
<ArraySize>1024</ArraySize>
<FieldComment>WFD Values</FieldComment>
</Field>
4) An array 'WFD' is in one 'Data' folder instance, and the array size of 'WFD' is five. <FolderName>Data</FolderName>
<Field>
<FieldName>WFD</FieldName>
<FieldType>Double_t</FieldType>
<ArraySize>5</ArraySize>
<FieldComment>WFD Values</FieldComment>
</Field>
Once you add a relation between the 'Data' folder and a branch in a tree (as shown <Tree> section of $ROMESYS/examples/midas/midas.xml),
The generated application,
- reads the tree and copies data in to the folder before every event (if the <DAQSystem> in config XML is rome)
- fills the tree with copying data from the folder
So you don't need to write code to read/write tees.
Instead you need to access the folders.
The access method depends on the folder structure. For the example above,
1) Int_t nCh = 5;
for (Int_t iCh = 0; iCh < nCh; iCh++) {
gAnalyzer->GetDataAt(iCh)->SetWFD(some_number);
}
2) Int_t nCh = 5;
for (Int_t iCh = 0; iCh < nCh; iCh++) {
gAnalyzer->GetDataAt(iCh)->SetWFDSize(1024);
Int_t wfdSize = gAnalyzer->GetDataAt(iCh)->GetWFDSize();
for (Int_t i = 0; i < wfdSize; i++) {
gAnalyzer->GetDataAt(iCh)->SetWFDAt(i, some_number);
}
}
3) Int_t nCh = 5;
for (Int_t iCh = 0; iCh < nCh; iCh++) {
for (Int_t i = 0; i < 1024; i++) {
gAnalyzer->GetDataAt(iCh)->SetWFDAt(i, some_number);
}
}
4) Int_t nCh = 5;
for (Int_t iCh = 0; iCh < nCh; iCh++) {
gAnalyzer->GetData()->SetWFDAt(iCh, some_number);
}
You can read the variables by using GetWFD (or GetWFDAt if WFD is an array) function.
You can find more example of the folder structure in $ROMESYS/examples/argus/folders/folderEntries.xml.
Ryu
> Hi,
>
> I need to add a tree, the tree will have n branches. Each branch will refer to
> one event. Now Each branch will have 5 leaves. Each leaf will have data from one
> WFD channel. There are data from total 5 WFD channels per event in our midas bank.
>
> I have seen some examples of trees and branches in ROME, but I don't know how I
> can loop over one channel to another channel and save those data into each leaf.
>
> Any help will be appreciated greatly.
>
> Sudeshna Ganguly |
162
|
21 Oct 2015 |
SUDESHNA GANGULY | Info | Adding Trees and Branches in ROME | Hi,
I need to add a tree, the tree will have n branches. Each branch will refer to
one event. Now Each branch will have 5 leaves. Each leaf will have data from one
WFD channel. There are data from total 5 WFD channels per event in our midas bank.
I have seen some examples of trees and branches in ROME, but I don't know how I
can loop over one channel to another channel and save those data into each leaf.
Any help will be appreciated greatly.
Sudeshna Ganguly |
161
|
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 |
160
|
07 Sep 2015 |
Ryu Sawada | Bug Report | Saving canvas as pdf via a button one vs many pads | 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 |
159
|
07 Sep 2015 |
Ryu Sawada | Forum | ARGUS display with canvas and pads ... | I found rather easy way for the Method 3 (click on pad).
I implemented in the same example,
namely, the third tab in $ROMESYS/examples/argus/menu.
You can add a macro which is executed when an event occurs on each pad with,
fCanvas->GetCanvas()->GetPad(1)->AddExec("ex1", ".x OpenCanvas.C");
Then you can write any function in the macro.
In this example, it opens a copy of canvas and save the clicked pad into a PDF file.
Ryu
> Dear Farrukh
>
> What you want to do is probably possible ( I will write a possible method later.).
> However TPad has already several mouse operations (zoom, right-click menu, select active pad
and so on); so I am not sure it is the best idea to add own mouse operation (which
> could override other pre-implemented operations.)
> I will write three solutions below.
> I wrote an example of the first method.
>
> == Method 1 : Menu ==
> For this solutions, I modified an example in the ROME package.
> The update is done only in the 'develop' branch.
> You can read the example by 'git checkout develop' command after you clone the ROME package.
> The example is in $ROMESYS/examples/argus/menu and the third tab (T3) is one for that.
> In ROME, you can easily add menu items in the menu bar. In the example, menu items to open and
save a specific tab are prepared.
>
> == Method 2 : dedicated buttons ==
> If you prefer buttons instead of menu, you can put dedicated buttons to trigger "OpenPad" function
in the example instead of adding menus. The buttons can be implemented
> either of the following two methods,
> 1) TGTextButton, which can work as the same way as your Save button
> 2) Writing own class derived from TBox or TMarker. A box or maker can be put on each canvas.
>
> I hope the first method is obvious for you. You can make another button similar to your Save button
and call "OpenPad" function.
>
> The second method is a little more complicated; you make your own class and override
"ExecuteEvent" method.
> In the overriding function, you can call any functions when the box or marker is single-clicked,
double-clicked, mouse-over and so on.
> A disadvantage is that the box or marker is always visible, and will be drawn in the output PDF files
too.
>
> == Method 3: click on Pad ==
> You can probably do what you write with making own class derived from TPad; then you override
"ExecuteEvent" function for calling a function to make a separated canvas and
> draw a clone of itself.
> You may also need own TCanvas and TRootEmbeddedCanvas for using the customized classes
instead of regular TPad and TCanvas.
>
> If you are satisfied with the first method, please try the example.
> The second method with TGTextButton must not be very difficult.
>
> If you prefer the second (using TBox or TMarker) and third method, I will investigate if it is actually
possible.
> For the two methods, I think you need to write your own classes.
>
> Best regards,
>
> Ryu
>
> > Dear Colleagues,
> >
> > We are succesfully running a ROME executable both online and offline with an
> > ARGUS display with a canvas that has multiple pads on it. We have also
> > implemented a "Save" button which one can click on and save the _entire_ canvas
> > (containing all the pads) and saves it to pdf.
> >
> > I was wondering how one would go about making the following modification :
> >
> > When a user moves a mouse over to a particular pad and clicks on it - then only
> > the histogram on that pad is displayed on a separate canvas (so the user can
> > examine it closely) and also save just this one histogram - with a save button
> > similar to the one we've already written.
> >
> > many thanks for any insight
> >
> > Farrukh |
158
|
07 Sep 2015 |
Ryu Sawada | Bug Fix | TMTT3.cpp -offset in index of the pads | Thank you.
You are right.
I modified and pushed the code.
Ryu
> Hi Ryu,
>
> I fixed the problem about the offset in the indexing of the pads. It's just in
> the TMTT3.cpp source code,
> Instead of wrtiting:
> case TMWindow::M_T3_Open_Pad1:
> OpenPad(0);
> break;
> one should write:
>
> case TMWindow::M_T3_Open_Pad1:
> OpenPad(1);
> break; |
157
|
04 Sep 2015 |
SUDESHNA GANGULY | Bug Fix | TMTT3.cpp -offset in index of the pads | Hi Ryu,
I fixed the problem about the offset in the indexing of the pads. It's just in
the TMTT3.cpp source code,
Instead of wrtiting:
case TMWindow::M_T3_Open_Pad1:
OpenPad(0);
break;
one should write:
case TMWindow::M_T3_Open_Pad1:
OpenPad(1);
break; |
156
|
04 Sep 2015 |
SUDESHNA GANGULY | Bug Report | TMTT3.cpp -offset in index of the pads | Hi Ryu,
I have been working with your /rome/examples/argus/menu/tab/TMTT3.cpp cpde and
I've run your menu.xml with a dummy midas file run0001.mid in the offline mode,
and in the AREGUS monitor, when I click on "open and save" menu, it shows
options for 4 pads. But if you click on the first pad, it is empty, if you click
on pad 2, it will have hist1, pad3 has hist2, and pad4 is hist3 and there is no
hist4.
So there is an offset of 1.
In case of my 55 histograms I am getting the same error. I am getting only upto
hist54 (my first hist is called hist00).
Could you please help me with this issue? |
155
|
04 Sep 2015 |
Ryu Sawada | Forum | ARGUS display with canvas and pads ... | Dear Farrukh
The menu items are defined in,
examples/argus/menu/menu.xml, in the part for 'T3' tab.
Did you modify the definition XML for your program ?
Ryu
> Dear Ryu,
>
> we've coded up our own example menu based on what you made for us - and thank you very much
for that - we notice however that the resulting menu is nowhere to be seen on the frame.
>
> When we did buttons we had to associate them with a frame - and I note that there seems to be no
association to a frame in the code you wrote for us - so we never see a menu - is
> this what is to be expceted ?
>
> thanks
> Farrukh
>
> > Hi Ryu
> >
> > thanks very much - I will certainly look at this example. In the meantime we are having some
issues with out save buttons - I will post a thread separately
> > -Farrukh
> >
> > > Dear Farrukh
> > >
> > > What you want to do is probably possible ( I will write a possible method later.).
> > > However TPad has already several mouse operations (zoom, right-click menu, select active pad
and so on); so I am not sure it is the best idea to add own mouse operation (which
> > > could override other pre-implemented operations.)
> > > I will write three solutions below.
> > > I wrote an example of the first method.
> > >
> > > == Method 1 : Menu ==
> > > For this solutions, I modified an example in the ROME package.
> > > The update is done only in the 'develop' branch.
> > > You can read the example by 'git checkout develop' command after you clone the ROME
package.
> > > The example is in $ROMESYS/examples/argus/menu and the third tab (T3) is one for that.
> > > In ROME, you can easily add menu items in the menu bar. In the example, menu items to open
and save a specific tab are prepared.
> > >
> > > == Method 2 : dedicated buttons ==
> > > If you prefer buttons instead of menu, you can put dedicated buttons to trigger "OpenPad"
function in the example instead of adding menus. The buttons can be implemented
> > > either of the following two methods,
> > > 1) TButton, which can work as the same way as your Save button
> > > 2) Writing own class derived from TBox or TMarker. A box or maker can be put on each
canvas.
> > >
> > > I hope the first method is obvious for you. You can make another button similar to your Save
button and call "OpenPad" function.
> > >
> > > The second method is a little more complicated; you make your own class and override
"ExecuteEvent" method.
> > > In the overriding function, you can call any functions when the box or marker is single-clicked,
double-clicked, mouse-over and so on.
> > > A disadvantage is that the box or marker is always visible, and will be drawn in the output PDF
files too.
> > >
> > > == Method 3: click on Pad ==
> > > You can probably do what you write with making own class derived from TPad; then you
override "ExecuteEvent" function for calling a function to make a separated canvas and
> > > draw a clone of itself.
> > > You may also need own TCanvas and TRootEmbeddedCanvas for using the customized classes
instead of regular TPad and TCanvas.
> > >
> > > If you are satisfied with the first method, please try the example.
> > > The second method with TButton must not be very difficult.
> > >
> > > If you prefer the second (using TBox or TMarker) and third method, I will investigate if it is
actually possible.
> > > For the two methods, I think you need to write your own classes.
> > >
> > > Best regards,
> > >
> > > Ryu
> > >
> > > > Dear Colleagues,
> > > >
> > > > We are succesfully running a ROME executable both online and offline with an
> > > > ARGUS display with a canvas that has multiple pads on it. We have also
> > > > implemented a "Save" button which one can click on and save the _entire_ canvas
> > > > (containing all the pads) and saves it to pdf.
> > > >
> > > > I was wondering how one would go about making the following modification :
> > > >
> > > > When a user moves a mouse over to a particular pad and clicks on it - then only
> > > > the histogram on that pad is displayed on a separate canvas (so the user can
> > > > examine it closely) and also save just this one histogram - with a save button
> > > > similar to the one we've already written.
> > > >
> > > > many thanks for any insight
> > > >
> > > > Farrukh |
154
|
04 Sep 2015 |
Farrukh Azfar | Forum | ARGUS display with canvas and pads ... | Dear Ryu,
we've coded up our own example menu based on what you made for us - and thank you very much for that - we notice however that the resulting menu is nowhere to be seen on the frame.
When we did buttons we had to associate them with a frame - and I note that there seems to be no association to a frame in the code you wrote for us - so we never see a menu - is
this what is to be expceted ?
thanks
Farrukh
> Hi Ryu
>
> thanks very much - I will certainly look at this example. In the meantime we are having some issues with out save buttons - I will post a thread separately
> -Farrukh
>
> > Dear Farrukh
> >
> > What you want to do is probably possible ( I will write a possible method later.).
> > However TPad has already several mouse operations (zoom, right-click menu, select active pad and so on); so I am not sure it is the best idea to add own mouse operation (which
> > could override other pre-implemented operations.)
> > I will write three solutions below.
> > I wrote an example of the first method.
> >
> > == Method 1 : Menu ==
> > For this solutions, I modified an example in the ROME package.
> > The update is done only in the 'develop' branch.
> > You can read the example by 'git checkout develop' command after you clone the ROME package.
> > The example is in $ROMESYS/examples/argus/menu and the third tab (T3) is one for that.
> > In ROME, you can easily add menu items in the menu bar. In the example, menu items to open and save a specific tab are prepared.
> >
> > == Method 2 : dedicated buttons ==
> > If you prefer buttons instead of menu, you can put dedicated buttons to trigger "OpenPad" function in the example instead of adding menus. The buttons can be implemented
> > either of the following two methods,
> > 1) TButton, which can work as the same way as your Save button
> > 2) Writing own class derived from TBox or TMarker. A box or maker can be put on each canvas.
> >
> > I hope the first method is obvious for you. You can make another button similar to your Save button and call "OpenPad" function.
> >
> > The second method is a little more complicated; you make your own class and override "ExecuteEvent" method.
> > In the overriding function, you can call any functions when the box or marker is single-clicked, double-clicked, mouse-over and so on.
> > A disadvantage is that the box or marker is always visible, and will be drawn in the output PDF files too.
> >
> > == Method 3: click on Pad ==
> > You can probably do what you write with making own class derived from TPad; then you override "ExecuteEvent" function for calling a function to make a separated canvas and
> > draw a clone of itself.
> > You may also need own TCanvas and TRootEmbeddedCanvas for using the customized classes instead of regular TPad and TCanvas.
> >
> > If you are satisfied with the first method, please try the example.
> > The second method with TButton must not be very difficult.
> >
> > If you prefer the second (using TBox or TMarker) and third method, I will investigate if it is actually possible.
> > For the two methods, I think you need to write your own classes.
> >
> > Best regards,
> >
> > Ryu
> >
> > > Dear Colleagues,
> > >
> > > We are succesfully running a ROME executable both online and offline with an
> > > ARGUS display with a canvas that has multiple pads on it. We have also
> > > implemented a "Save" button which one can click on and save the _entire_ canvas
> > > (containing all the pads) and saves it to pdf.
> > >
> > > I was wondering how one would go about making the following modification :
> > >
> > > When a user moves a mouse over to a particular pad and clicks on it - then only
> > > the histogram on that pad is displayed on a separate canvas (so the user can
> > > examine it closely) and also save just this one histogram - with a save button
> > > similar to the one we've already written.
> > >
> > > many thanks for any insight
> > >
> > > Farrukh |
153
|
04 Sep 2015 |
Ryu Sawada | Forum | ARGUS display with canvas and pads ... | Dear Farrukh
It is not necessary to build in 'develop' branch of ROME.
Ryu
> Hi Ryu
>
> thanks ever so much.
>
> We will modify our code as per your example - is it neccesary to build in development as well or is that only where your example is
>
> -Farrukh
>
> > Dear Farrukh
> >
> > What you want to do is probably possible ( I will write a possible method later.).
> > However TPad has already several mouse operations (zoom, right-click menu, select active pad and so on); so I am not sure it is the best idea to add own mouse operation (which
> > could override other pre-implemented operations.)
> > I will write three solutions below.
> > I wrote an example of the first method.
> >
> > == Method 1 : Menu ==
> > For this solutions, I modified an example in the ROME package.
> > The update is done only in the 'develop' branch.
> > You can read the example by 'git checkout develop' command after you clone the ROME package.
> > The example is in $ROMESYS/examples/argus/menu and the third tab (T3) is one for that.
> > In ROME, you can easily add menu items in the menu bar. In the example, menu items to open and save a specific tab are prepared.
> >
> > == Method 2 : dedicated buttons ==
> > If you prefer buttons instead of menu, you can put dedicated buttons to trigger "OpenPad" function in the example instead of adding menus. The buttons can be implemented
> > either of the following two methods,
> > 1) TGTextButton, which can work as the same way as your Save button
> > 2) Writing own class derived from TBox or TMarker. A box or maker can be put on each canvas.
> >
> > I hope the first method is obvious for you. You can make another button similar to your Save button and call "OpenPad" function.
> >
> > The second method is a little more complicated; you make your own class and override "ExecuteEvent" method.
> > In the overriding function, you can call any functions when the box or marker is single-clicked, double-clicked, mouse-over and so on.
> > A disadvantage is that the box or marker is always visible, and will be drawn in the output PDF files too.
> >
> > == Method 3: click on Pad ==
> > You can probably do what you write with making own class derived from TPad; then you override "ExecuteEvent" function for calling a function to make a separated canvas and
> > draw a clone of itself.
> > You may also need own TCanvas and TRootEmbeddedCanvas for using the customized classes instead of regular TPad and TCanvas.
> >
> > If you are satisfied with the first method, please try the example.
> > The second method with TGTextButton must not be very difficult.
> >
> > If you prefer the second (using TBox or TMarker) and third method, I will investigate if it is actually possible.
> > For the two methods, I think you need to write your own classes.
> >
> > Best regards,
> >
> > Ryu
> >
> > > Dear Colleagues,
> > >
> > > We are succesfully running a ROME executable both online and offline with an
> > > ARGUS display with a canvas that has multiple pads on it. We have also
> > > implemented a "Save" button which one can click on and save the _entire_ canvas
> > > (containing all the pads) and saves it to pdf.
> > >
> > > I was wondering how one would go about making the following modification :
> > >
> > > When a user moves a mouse over to a particular pad and clicks on it - then only
> > > the histogram on that pad is displayed on a separate canvas (so the user can
> > > examine it closely) and also save just this one histogram - with a save button
> > > similar to the one we've already written.
> > >
> > > many thanks for any insight
> > >
> > > Farrukh |
|