Re: [ROOT] .rootrc files

From: Fons Rademakers (Fons.Rademakers@cern.ch)
Date: Thu Apr 06 2000 - 11:44:33 MEST


Hi Dmitri,

  I've fixed the case of negative numbers. Now
e->GetValue("TLegoDisplay.Phi",0);
will return -417.

However, a workaround exists, do:
e->GetValue("TLegoDisplay.Phi","0");
and this will return the string "-417", now just do atoi and its ok:
phi = atoi(e->GetValue("TLegoDisplay.Phi","0"));

Also to get floats you have to use the above method since there is
no other way to get floats out of TEnv. Example:

minpi: -3.141589

double minpi = atof(e->GetValue("minpi","0"));

In the new version you can override the needed methods to customize
TEnv to read .rc files from specific locations (and skip the $ROOTSYS
one).


Cheers, Fons.





Dmitri Litvintsev wrote:
> 
> Sorry, I wasn't specific enough - I don't have trouble saving values.
> I have problem with reading values:
> 
> root [0] TEnv* e = new TEnv(".evdrc");
> root [1] e->Print()
> TCotDisplay.TrackColor:   1                              [User]
> TCotDisplay.WindowWidth:  536                            [User]
> TCotDisplay.WindowHeight: 649                            [User]
> TCotDisplay.WindowXPosition: 26                             [User]
> TCotDisplay.WindowYPosition: 25                             [User]
> TCotDisplay.ViewPadColor: 0                              [User]
> TLegoDisplay.WindowWidth: 536                            [User]
> TLegoDisplay.WindowHeight: 649                            [User]
> TLegoDisplay.WindowXPosition: 973                            [User]
> TLegoDisplay.WindowYPosition: 193                            [User]
> TLegoDisplay.ViewPadColor: 1                              [User]
> TLegoDisplay.Phi:         -417                           [User]
> TLegoDisplay.Theta:       38                             [User]
> TLegoDisplay.Psi:         0                              [User]
> root [2] Int_t phi = e->GetValue("TLegoDisplay.Phi",0);
> root [3] cout << phi << endl;
> 0
> root [4] e->SetValue("TLegoDisplay.Phi","417");
> root [5] e->Save()
> root [6] phi = e->GetValue("TLegoDisplay.Phi",0);
> root [7] cout << phi << endl;
> 417
> 
> as you see positive value of phi has been read out in contrast to negative
> 
> show me where I'm wrong here
> 
> >
> > Cheers, Fons.
> >
> >
> >
> > Dmitri Litvintsev wrote:
> > >
> > > Dear Rooters,
> > >
> > > I've been developing ROOT application and want read/save
> > > application specific resources from/to a file which is not
> > > located in $(ROOTSYS) and called differently.
> > >
> > > e.g.
> > >
> > >   default file for all users to fetch at start up:
> > >     ${OUR_PROJECT}/${MY_APPLICATION}/.myenvrc
> > >
> > > if user modified and saved some applicaion specific resources
> > > it should go to his ${HOME}/.myenvrc
> > >
> > > I see that there is a class TEnv which probably does this for the
> > > ROOT.
> > >
> > > I thought of using TEnv class.
> > >
> > > And overide a couple of relevant methods. The trouble is
> > > that:
> > >          Save()
> > >          SaveLevel()
> > >          SetValue()
> > >
> > > are not virtual. May I ask to make all methods of this class
> > > virtual?
> > >
> > > regards,
> > > Dmitri Litvintsev
> > >
> > > /----------------------------------------------------------\
> > > | Tel:       (630) 840 5005                                |
> > > | FAX:       (630) 840 2968                                |
> > > | office:    169-E CDF Trailers                            |
> > > | E-mail:    litvinse@fnal.gov                             |
> > > \----------------------------------------------------------/
> >
> > --
> > Org:    CERN, European Laboratory for Particle Physics.
> > Mail:   1211 Geneve 23, Switzerland
> > E-Mail: Fons.Rademakers@cern.ch              Phone: +41 22 7679248
> > WWW:    http://root.cern.ch/~rdm/            Fax:   +41 22 7677910
> >

-- 
Org:    CERN, European Laboratory for Particle Physics.
Mail:   1211 Geneve 23, Switzerland
E-Mail: Fons.Rademakers@cern.ch              Phone: +41 22 7679248
WWW:    http://root.cern.ch/~rdm/            Fax:   +41 22 7677910



This archive was generated by hypermail 2b29 : Tue Jan 02 2001 - 11:50:22 MET