Problem to compile on a worker node of LCG site


I have a root macro I run with
root -b -q run_analysis.C

In this root macro, there are things like
gROOT->ProcessLine(".L $ROOTSYS/lib/ “);
gROOT->ProcessLine(”.L CutManager.C+");
gROOT->ProcessLine(".L Address.C+");
gROOT->ProcessLine(".L MyParticle.C+");
gROOT->ProcessLine(".L RandNumSvc.C+");
gROOT->ProcessLine(".L MCSelector.C+");
gROOT->ProcessLine(".L MyPlots.C+");
gROOT->ProcessLine(".L RemoveTauEvent.C+");

I want to run this root macro on a LCG site (64 bit worker nodes) using
which is installed locally.

If I run interactively the script on a worker node, it works. If it is run thru the grid it fails with :
root -b -q run_analysis.C

  •                                     *
  •    W E L C O M E  to  R O O T       *
  •                                     *
  • Version 5.14/00e 29 March 2007 *
  •                                     *
  • You are welcome to visit our Web site *
  •      [](            *
  •                                     *

Compiled on 29 March 2007 for linuxx8664gcc with thread support.

CINT/ROOT C/C++ Interpreter version 5.16.16, November 24, 2006
Type ? for help. Commands must be C++ statements.
Enclose multiple statements between { }.

Processing run_analysis.C…
Info in TUnixSystem::ACLiC: creating shared library /tmp/wrk/
/tmp/DfNavW_cint.cxx:1:28: Ymxw6XA/root/src: No such file or directory
Error: external preprocessing failed. :0:
Error: rootcint: failed to open /tmp/wrk/
vpXxaaYmxw6XA/ttHbbAnalysisRoot/./filehn3pML.h in ReplaceBundleInDict()
./filehn3pML.cxx:16:24: filehn3pML.h: No such file or directory
In file included from /tmp/wrk/
sImp.h:16:2: #error RtypesImp.h should only be included by ROOT dictionaries.
g++: /tmp/wrk/
Root/./filehn3pML.o: No such file or directory

If I am on the worker node, it is run in /home/atlXXX/test (shorter path).

So can this problem come from the length of the path ?



PS: I have tried it in /tmp/wrk/test and it works too


This is possibly a write permission issue. You might need to call gSystem->SetBuildDir to give root a location it can write to.


PS. For more details on what ACLiC attempts you can set the global variable gDebug to 5 or 7 (to keep the temp files around).