Hi Ed,
Let's take the example we have in $ROOTSYS/tutorials/h1analysis.h,C
This is a simple example of a TSelector.
We had the following declration in h1analyis.h, eg
#include <TChain.h>
#include <TFile.h>
#include <TSelector.h>
R__EXTERN Float_t R2; //we add this line
class h1analysis : public TSelector {
then in h1analysis.C, we declare a default value for R2, eg:
TH1F *hdmd;
TH2F *h2;
Float_t R2=123.456; //we add this line, that' all
Now run the following session
root > .L h1analysis.C++
root > h1analysis h1; //this will set the default value for R2=123.456
root > R2 = 44.33; //we set a new value via the interpreter
root > .x h1chain.C this creates a TChain with 4 files (see h1analysis
comments)
root > chain.Process(&h1);
at this point the TSelector will execute with the new value of R2.
Rene Brun
On Wed, 21 Aug 2002, Edward Chen wrote:
> Hi Rene - I don't explicitly call gROOT-Reset() in my selector. It's
> pretty much the standard selector generated from TChain::MakeSelector(),
> with a couple modifications that I don't think call gROOT->Reset().
>
> However, when I do .g at the command line, I see (for example):
>
> (compiled) 0x2ae4d680 const Int_t kMaxInt=2147483647
>
> vs.
>
> 11 0x8733ca0 Float_t R2=0.607421
>
> so my R2 variable doesn't have this (compiled) status. And I can print
> out the value of kMaxInt from my selector. R2 is declared at the command
> line (or via unnamed macro) - how do I get it into compiled status?
>
> Thanks.
>
> -Ed
>
> On Wed, 21 Aug 2002, Rene Brun wrote:
>
> > Hi Ed,
> >
> > If you define a global variable with CINT (eg float R2), this variable
> > must be visible in any interpreted function.
> > My guess is that you are calling "gROOT->Reset()" somewhere
> > in your selector.
> >
> > A CINT global variable cannot be seen from the compiled code
> > if it is not declared to CINT as well (like we do for globals
> > like gFile, gDirectory,etc).
> >
> > Rene Brun
> >
> > On Tue, 20 Aug 2002, Edward Chen wrote:
> >
> > > Hi - I have a global variable which shows up when I do .g:
> > >
> > >
> > > 11 0x8733bf0 Float_t R2=0
> > >
> > >
> > > I want to access the value of R2 in TSelector::ProcessCut(). Is that
> > > possible? I'm getting the following error message:
> > >
> > >
> > > /data1/babar/edward/root/temp.C:67: `R2' undeclared (first use this
> > > function)
> > >
> > > Thanks. (I'm using ROOT 3.03/06)
> > >
> > > -Ed
> > >
> >
> >
>
This archive was generated by hypermail 2b29 : Sat Jan 04 2003 - 23:51:05 MET