Hi Stefano,
Your program "merge" does not define a TApplication.
For some operations, like building the dictionary for a class,
a TApplication is necessary. If no TApplication exists, ROOT will
automatically create one. The application will be by default
assuming an interactive session with graphics.
You can make a batch application in two ways
way1: add the following line at the beginning of your program.
you can replace the useless call to the TROOT constructor by
gROOT->SetBatch();
way2: you create yoursel a TApplication object. See examples
in $ROOTSYS/test programs. You can use the option "-b"
to run your application in batch mode.
The first option is the simplest one in your case.
Rene Brun
On Mon, 15 Jul 2002, Stefano Lacaprara wrote:
> Hi Rene,
> the version I'm using is
> Version 3.01/06 10 July 2001,
> (CINT/ROOT C/C++ Interpreter version 5.15.06, June 30 2001)
> on: Linux 2.2.19-6.2.1.1smp #1 SMP Tue Apr 17 20:00:04 CEST 2001 i686 unknown
>
> Running your example I have no problem, neither X connection.
>
> It seems that this funny behavior depends on the type of trees I try to
> merge: I've put a full example on
>
> /afs/cern.ch/user/s/slacapra/public/for_Rene/TreeMerge.tgz
>
> with merge.cpp, the Makefile I use and one of the trees I'm trying to merge.
> When I try to execute
> ~>./merge lista
> I'm asked (by mxconns) to accept an incoming connection, and, if I say ok,
> the merging is successful. If I deny the permission, the jobs crashes:
> ...
> Xlib: connection to "lxcmspc3.pd.infn.it:64.0" refused by server
> Xlib: Client is not authorized to connect to Server
> Error in <TGClient::TGClient>: can't open display "lxcmspc3.pd.infn.it:64.", bombing...
> ...
>
> Cheers,
> Stefano
>
> * On Sat, Jul 13, 2002 at 12:43:46PM +0200, Rene Brun wrote:
> > Hi Stefano,
> >
> > I cannot reproduce this problem. Which version are you using?
> > Could you do the following
> >
> > cd $ROOTSYS/tutorials
> > root -b -q hsimple.C
> > g++ -o cmerge cmerge.cxx `root-config --cflags --libs`
> > cmerge
> >
> > where cmerge.cxx is the file below
> >
> > Rene Brun
> >
> > //file cmerge.cxx
> > #include "TChain.h"
> >
> > int main(int argc, char **argv)
> > {
> > TChain dataset("ntuple");
> > dataset.Add("hsimple.root");
> > dataset.Add("hsimple.root");
> >
> > dataset.Merge("dataset.root");
> > dataset.Print();
> > }
> >
> >
> > On Fri, 12 Jul 2002, Stefano Lacaprara wrote:
> >
> > > Hi,
> > > I've written a simple program which takes a list of Trees and merge them in
> > > a TChain object
> > >
> > > int main(int argc, char **argv)
> > > {
> > > TROOT loop("loop","Loop on events");
> > >
> > > char* datasetname="";
> > > if(argc>=2) datasetname = argv[1];
> > >
> > > //Reset ROOT and connect tree file
> > > TChain dataset("MuonRecoTree");
> > >
> > > FILE *filelist = fopen(datasetname,"r");
> > > char line[80];
> > >
> > > while(fscanf(filelist,"%s",&line)>0)
> > > dataset.Add(line);
> > >
> > > fclose(filelist);
> > > dataset.Merge("dataset.root");
> > > dataset.Print();
> > > }
> > > where the first argument is the name of a file which contains the list of
> > > trees to be merged.
> > >
> > > Running it on a remote host behind a firewall, I've noticed that the issue
> > > of TChain::Merge tries to open a X connection to my machine: this fails and
> > > the process aborts. If the socket can be opened, then the merging is ok.
> > >
> > > Why (and who -) it tries to open a X connection? Does it make sense?
> > >
> > > Cheers,
> > > Stefano Lacaprara
> > >
> > > --
> > > Stefano Lacaprara Ph.D Lacaprara@pd.infn.it \\\|///
> > > I.N.F.N. & Universita' di Padova \\ - - //
> > > http://www.pd.infn.it/~lacaprar ( 0 0 )
> > > PHONE +39-049-8277100 FAX +39-049-8756233 -oOOo-(_)-oOOo-
> > >
>
> --
> Stefano Lacaprara Ph.D Lacaprara@pd.infn.it \\\|///
> I.N.F.N. & Universita' di Padova \\ - - //
> http://www.pd.infn.it/~lacaprar ( 0 0 )
> PHONE +39-049-8277100 FAX +39-049-8756233 -oOOo-(_)-oOOo-
>
This archive was generated by hypermail 2b29 : Sat Jan 04 2003 - 23:50:59 MET