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