Georg Troska | 20 Oct 15:35 2014

SaveAs with different layers?


I'm thinking about using the SaveAs function of TCanvas to show some
Charts as gifs in the web.
Do you think it would be possible to use imageformats that support layers
to activate or deactivate some content.

For example, if I am showing in a TGraph ten different trendlines, the
whole chart will be a lot overloaded, if I could put the axis in one layer
and each trendline in an own layer I would have the possibility to select
different layers of the Image. I could show axis+trends1,2,3 and so on.

Of course I Need to find a way to select the layers i wont to show in
Firefox as well :-)

Is there a way?


Dag Gillberg | 18 Oct 11:11 2014

Issue compiling latest root

Hello root experts,

I'm trying to compile root v6-02-01 on my laptop, and it doesn't go far until:

*** Building interpreter/llvm/inst/lib/libclangSema.a...
make[1]: *** No rule to make target `/Users/dag/root6/root-v6-02-01/interpreter/llvm/src/Users/Dag/root6/root-v6-02-01/interpreter/llvm/obj/Makefile', needed by `Makefile'.  Stop.
make: *** [interpreter/llvm/inst/lib/libclangSema.a] Error 2

So it seems that somewhere in the makefile jungle a space has gone missing between

I configured it simply by:
./configure --all --disable-fink

Any ideas how to fix this?


PS: I just upgraded to MacOS Yosemite

Manoj Kumar Jha | 18 Oct 03:32 2014

vtable undefined reference

    I am getting error like "vtable undefined reference".  I defined all 
the constructor, destructor and virtual functions.   I am using root 
version 5.34/18.  The files are in my public area on lxplus. Please see 
below on  how to reproduce it.

[jha <at> lxbrb2710 StandAlone2014]$ pwd
[jha <at> lxbrb2710 StandAlone2014]$ which root
[jha <at> lxbrb2710 StandAlone2014]$ ./


Info in <TUnixSystem::ACLiC>: creating shared library 
dlopen error: 
undefined symbol: _ZTVN6purdue3JetE
Load Error: Failed to load Dynamic link library 
/usr/lib/../lib64/crt1.o: In function `_start':
(.text+0x20): undefined reference to `main'
In function `purdue::Muon::Muon()':


Thanks  for your help.



Manoj Kumar Jha                    Department of Physics
jha2 <at>                    Purdue University
(765) 494-5987                     W. Lafayette, IN 47907-2036, USA

Adrian Sevcenco | 17 Oct 11:29 2014

persistence of a histogram across macros

Hi! I try to do the following:
read some histograms from some root files in a macro
and then in the main macro that plot the histograms in various way
to access them ...

something like (logical structure):

void setup_histos()
//get histos from files
histo1 Get from file



void analysis ()
LoadMacro setup_histos.C


the thing is that even if the pointers are available
the pointed info is not .. how can access the histograms
that were setup in the first macro?

Thanks a lot!

Attachment (smime.p7s): application/pkcs7-signature, 3074 bytes
Axel Naumann | 16 Oct 20:28 2014
Picon is down

Hi, is down. It is likely due to a series of power outages in CERN's computing center. Several machines are affected, the relevant services are informed.

Cheers, Axel

Corey Reed | 16 Oct 05:20 2014

crash inside G__memfunc_setup


I am seeing a very strange crash when I try to instantiate particular 
objects in CINT. These objects inherit from abstract base classes.

The issue is reproducible within my full software. However, I tried to 
build a simple example by copying the relevant source code to a smaller 
package -- but the small example does not show the problem!

The small, working example with the exact same source code files is at:

cd calibTest
root [0] .L
root [1] TSnDualGainCalibSet a("x",4)
root [2]

With my full software, I instead see the error below.

Any help is greatly appreciated! I am not sure how to proceed. It seems 
to me like CINT is trying to access G__struct.memfunc[-1] and crashing.

root [0] .L lib/
root [1] TSnDualGainCalibSet a("x",4)

Program received signal SIGSEGV, Segmentation fault.
0x00007ffff5e1cf38 in G__memfunc_setup (funcname=0x7ffff4699031 
"~TSnDualGainCalibSet", hash=1951, funcp=0x7ffff46649cf 
<G__G__sigprocdat_193_0_27(G__value*, char const*, G__param*, int)>,
     type=121, tagnum=-1, typenum=-1, reftype=0, para_nu=0, ansi=1, 
accessin=1, isconst=0, paras=0x7ffff4697098 "", comment=0x0, 
truep2f=0x0, isvirtual=1) at cint/cint/src/newlink.cxx:11229
11229	  if('~'==funcname[0] && 
0==G__struct.memfunc[G__p_ifunc->tagnum]->hash[0]) {
(gdb) p funcname
$1 = 0x7ffff4699031 "~TSnDualGainCalibSet"
(gdb) p G__p_ifunc->tagnum
$2 = -1
(gdb) p G__struct.memfunc
$3 = {0x651ad0, 0x651f80, 0x65a680, 0x65ab60, 0x65aff0, 0x66dbb0, 
0x66dfc0, 0x66f680, 0x670a70, 0x670970, 0x672280, 0x672180, 0x673a90, 
0x673990, 0x683bc0, 0x6840a0, 0x6845c0, 0x684a80,
   0x684f40, 0x6853d0, 0x685850, 0x685d30, 0x6861c0, 0x686620, 0x686a80, 
0x686f90, 0x687410, 0x687b00, 0x687ef0, 0x688370, 0x688b50, 0x689040, 
0x6893a0, 0x689760, 0x689be0, 0x68a070,
   0x68a500, 0x68a960, 0x68adf0, 0x68b250, 0x68b6e0, 0x68bba0, 0x68c030, 
0x68c4c0, 0x68c920, 0x68ce00, 0x68d520, 0x68daf0, 0x68de50, 0x68e1b0, 
0x68e510, 0x68e870, 0x68ebd0, 0x68f0a0,
   0x68f550, 0x68fa00, 0x68fe80, 0x690310, 0x690820, 0x690cc0, 0x691170, 
0x691620, 0x691ab0, 0x691fa0, 0x692400, 0x692890, 0x692d20, 0x693180, 
0x693640, 0x693ad0, 0x693f90, 0x6943f0,
   0x6948b0, 0x694d30, 0x695200, 0x6956d0, 0x695ba0, 0x696050, 0x696500, 
0x6969b0, 0x696e90, 0x697330, 0x6977e0, 0x697c90, 0x698140, 0x6985f0, 
0x698ac0, 0x698f10, 0x6993d0, 0x699850,
   0x699cd0, 0x69a160, 0x69a650, 0x69aad0, 0x69afb0, 0x69b460, 0x69b8e0, 
0x69bf30, 0x69c600, 0x69c9e0, 0x69ce60, 0x69d2e0, 0x69d900, 0x69dd20, 
0x69e1c0, 0x69e640, 0x69eaa0, 0x69ef20,
   0x69f3c0, 0x69f840, 0x69fca0, 0x6a0130, 0x6a0590, 0x6a0a70, 0x6a0fb0, 
0x6a1530, 0x6a1a10, 0x6a1e70, 0x6a22d0, 0x6a2730, 0x6a2be0, 0x6a3060, 
0x6a3540, 0x6a39e0, 0x6a3eb0, 0x6a4360,
   0x6a4880, 0x6a51a0, 0x6a55a0, 0x6a5a00, 0x6a5ea0, 0x6a64d0, 0x6a6860, 
0x6a6ce0, 0x6a70a0, 0x6a74c0, 0x6a7940, 0x6a7dc0, 0x6a8240, 0x6a86a0, 
0x6a8b00, 0x6a8fc0, 0x6a9470, 0x6a9910,
   0x6a9df0, 0x6aa280, 0x6aa740, 0x6aabc0, 0x6ab090, 0x6ab560, 0x6aba10, 
0x6abea0, 0x6ac350, 0x6ac7f0, 0x6acd20, 0x6ad1a0, 0x6ad600, 0x6ada90, 
0x6adf20, 0x6ae4a0, 0x6aeaa0, 0x6ae7d0,
   0x6af1a0, 0x6af500, 0x6af860, 0x6afc50, 0x6b00d0, 0x6b0560, 0x6b09d0, 
0x6b0e50, 0x6b1280, 0x6c7a50, 0x6c7f30, 0x6c83e0, 0x6c88e0, 0x6c8d60, 
0x6c9310, 0x6c9790, 0x6c9c30, 0x6ca050,
   0x6ca530, 0x6ca9b0, 0x6cae90, 0x6cb370, 0x6cb7e0, 0x6cbcc0, 0x6cc120, 
0x6cc580, 0x6ccaa0, 0x6cd030, 0x6cd4b0, 0x6cd970, 0x6cde00, 0x6ce2b0, 
0x6ce730, 0x6cec40, 0x6cf110, 0x6cf470,
   0x6cf880, 0x6cfd50...}
(gdb) up
#1  0x00007ffff467d9d2 in G__setup_memfuncTSnDualGainCalibSet () at 
7934	   G__memfunc_setup("~TSnDualGainCalibSet", 1951, 
G__G__sigprocdat_193_0_27, (int) ('y'), -1, -1, 0, 0, 1, 1, 0, "", 
(char*) NULL, (void*) NULL, 1);
#2  0x00007ffff5e234b2 in G__incsetup_memfunc (tagnum=582) at 
13147	        if (*iter) (*iter)();
#3  0x00007ffff5db3fd6 in G__getfunction (item=0x65f360 
"TSnDualGainCalibSet(\"x\",4)", known3=0x7fffffffa0a4, memfunc_flag=3) 
at cint/cint/src/func.cxx:2653
2653	            G__incsetup_memfunc(G__tagnum);
#4  0x00007ffff5d7d7a8 in G__define_var (tagnum=582, typenum=-1) at 
2232	               reg = G__getfunction(temp1, &known, G__CALLCONSTRUCTOR);
#5  0x00007ffff5e3e379 in G__defined_type (type_name=..., len=19) at 
4652	   G__define_var(G__tagnum, G__typenum);
#6  0x00007ffff5e44dc2 in G__exec_statement (mparen=0x7fffffffaaf0) at 
6672	                     int processed = G__defined_type(statement, iout);
#7  0x00007ffff5d72e54 in G__exec_tempfile_core (file=0x0, fp=0xf605d0) 
at cint/cint/src/debug.cxx:266
266	      buf = G__exec_statement(&brace_level);
#8  0x00007ffff5d748c6 in G__exec_tempfile_fp (fp=0xf605d0) at 
807	   return G__exec_tempfile_core(0, fp);
#9  0x00007ffff5e568cf in G__process_cmd (line=0xf25930 
"TSnDualGainCalibSet a(\"x\",4)", prompt=0x625f98 "", more=0x625f90, 
err=0x7fffffffbdcc, rslt=0x7fffffffbe00)
     at cint/cint/src/pause.cxx:3343
3343	               buf = G__exec_tempfile_fp(ftemp.fp);
#10 0x00007ffff763ca5a in TCint::ProcessLine (this=0x625f50, 
line=0xf25930 "TSnDualGainCalibSet a(\"x\",4)", error=0x0) at 
545	            ret = G__process_cmd((char *)line, fPrompt, &fMore, 
&local_error, &local_res);
#11 0x00007ffff75a4cd6 in TApplication::ProcessLine(char const*, bool, 
int*) () from /opt/root_v5.34.21/lib/
#12 0x00007ffff71e7229 in TRint::HandleTermInput() () from 
#13 0x00007ffff767fa15 in TUnixSystem::CheckDescriptors() () from 
#14 0x00007ffff768053a in TUnixSystem::DispatchOneEvent(bool) () from 
#15 0x00007ffff7600131 in TSystem::InnerLoop (this=0x61fea0) at 
410	   DispatchOneEvent();
#16 0x00007ffff75ffecc in TSystem::Run (this=0x61fea0) at 
360	            InnerLoop();
#17 0x00007ffff75a335f in TApplication::Run(bool) () from 
#18 0x00007ffff71e845e in TRint::Run(bool) () from 
#19 0x0000000000400fdc in main ()

- Corey

perfetto | 15 Oct 18:33 2014

Import branch after a MakeClass()

Hi All,

I have the following problem:
If I run MakeClass() on a rootfile containing a tree with some branches I
can import in a new tree in .C file generated by MakeClass() all variables
I want (I have verified this for exercise) but when I try to import the
one, the only one (test_h3), I need this don't done.

In .C file I done:

#define analisi_2_cxx
#include "analisi_2.h"
#include <TH2.h>
#include <TH3.h>
#include <TStyle.h>
#include <TCanvas.h>

void analisi_2::Loop()

  if (fChain == 0) return;

  Long64_t nentries = fChain->GetEntriesFast();

  Long64_t nbytes = 0, nb = 0;

  TFile *f1 = new TFile("/home/perfetto/testolo.root","RECREATE","file
with tree");

  Int_t npixels;

  TTree *testtree = new TTree("testtree","tree di prova");

   // This I import only for testing the all work fine (it's ll ok)
  testtree->Branch("clkb", &clkb_pcknumber,
  testtree->Branch("cpu", &cpu_header,
  testtree->Branch("ccb", &ccb_messagetype,

  testtree->Branch("test_h3", "TH3C", &test_h3);

  tree->Branch("npixels", &npixels, "npixels/I");

  TH3C *test_h3 = 0;
  testtree->SetBranchAddress("test_h3", &test_h3);

  for (Long64_t jentry = 0; jentry < nentries; jentry++) {
    Long64_t ientry = LoadTree(jentry);
    if (ientry < 0) break;
    nb = fChain->GetEntry(jentry);   nbytes += nb;
    cout << "jentry = " << jentry << " nb = " << nb << endl;
    // if (Cut(ientry) < 0) continue;

   npixels = (Int_t)test_h3->Project3D("yx")->GetEntries();


And this is from my .h file
// Header file for the classes stored in the TTree if any.
#include <TH3.h>

// Fixed size dimensions of array or collections stored in the TTree if any.

class analisi_2 {
 public :
   TTree          *fChain;   //!pointer to the analyzed TTree or TChain
   Int_t           fCurrent; //!current Tree number in a TChain

   // Declaration of leaf types
   UInt_t          clkb_pcknumber;
   UInt_t          clkb_evnt;
   UInt_t          clkb_gtime;
   UInt_t          clkb_ltime;
   UInt_t          clkb_dtime;
   UInt_t          clkb_status;
   UInt_t          clkb_crccheck;
   Float_t         clkb_ltimems;
   Float_t         clkb_dtimems;
   UInt_t          clkb_satsee;
   UInt_t          clkb_sattrack;
   UInt_t          clkb_month;
   UInt_t          clkb_day;
   UInt_t          clkb_year;
   UInt_t          clkb_hour;
   UInt_t          clkb_min;
   UInt_t          clkb_sec;
   UInt_t          clkb_timestamp;
   Float_t         clkb_gps_alt;
   Float_t         clkb_gps_lat;
   Float_t         clkb_gps_lon;
   UInt_t          cpu_header;
   UInt_t          cpu_evnt;
   UInt_t          cpu_time;
   UInt_t          cpu_pcktype;
   UInt_t          cpu_dlenght;
   UInt_t          cpu_crccheck;
   UInt_t          ccb_messagetype;
   UInt_t          ccb_deviceid;
   UInt_t          ccb_triggertime;
   UInt_t          ccb_l2count;
   UInt_t          ccb_crccheck;
   TH3C            *test_h3; <<<<------- This is the variable I need

   // List of branches
   TBranch        *b_clkb;   //!
   TBranch        *b_cpu;   //!
   TBranch        *b_ccb;   //!
   TBranch        *b_test_h3;   //!

   analisi_2(TTree *tree=0);
   virtual ~analisi_2();
   virtual Int_t    Cut(Long64_t entry);
   virtual Int_t    GetEntry(Long64_t entry);
   virtual Long64_t LoadTree(Long64_t entry);
   virtual void     Init(TTree *tree);
   virtual void     Loop();
   virtual Bool_t   Notify();
   virtual void     Show(Long64_t entry = -1);

Thanks in advance for your help.


Barbara Storaci | 13 Oct 11:19 2014

Calling Mathematica functions from ROOT

Dear ROOT-Experts,

I discovered the possibility of calling Mathematica functions from ROOT at this 
This sounds exactly what I need. On the other hand the documentation in this 
page looked obsolete. Is there any more recent documentation? Does this work 
with the recent Mathematica versions (i.e. 9) or only with the old 5.1?

In my case what I would like to do is to write a new root/roofit class (in fact a new pdf 
in root that derives from the usual RooAbsPdf) and call some mathematica function 
in this class. Normally I'm compiling this new class with ".L RooAbsBNQ.cp++" 
command inside the interpreter. How can I can integrate Mathematica calls in 
this context? 

Thanks a lot in advance,


Barbara Storaci
Universität Zürich

CERN, office 13-1-034
CH-1211 Geneve
Postbox: F26110

Tel: +41 (0) 227679942

Christopher Jones | 11 Oct 16:03 2014

ROOT 5.34.22 fails to build with C++11 support enabled


I am trying to build the new ROOT 5.34.22 release, on OSX 10.9. I am using the configuration

 > ./configure macosx64 --enable-c++11
 > make -j 8

and this leads to a compilation failure.

/Users/chris/Projects/root/core/meta/src/TCint.cxx:2430:4: error: thread-local storage is
unsupported for the current target
   thread_local static TString stldir;

Full configuration and build logs attached.

The problem seems to be with the --enable-c++11 option, as removing this seems to work. 

There were no such problems with the last release, 5.34.21.

cheers Chris

Attachment (build.log.bz2): application/x-bzip2, 22 KiB
Attachment (configure.log.bz2): application/x-bzip2, 2805 bytes
Attachment (smime.p7s): application/pkcs7-signature, 2744 bytes
Salvador Marti | 8 Oct 15:01 2014

arrays in pyroot


i've just started using pyroot.  I can define, fill and plot histograms. So far so good.

However I found a difficulty and I need help.

I need to plot a TPolyLine with 5 points and I do the following:

 xmod = [0., 0., 0., 0., 0.]
 ymod = [0., 0., 0., 0., 0.]
# in between I compute the values
 mypoly = TPolyLine(5, xmod, ymod)

And I got this error message:

TypeError: none of the 5 overloaded methods succeeded. Full details:
  TPolyLine::TPolyLine() =>
    takes at most 0 arguments (3 given)
  TPolyLine::TPolyLine(Int_t n, Option_t* option = "") =>
    takes at most 2 arguments (3 given)
  TPolyLine::TPolyLine(const TPolyLine& polyline) =>
    takes at most 1 arguments (3 given)
  TPolyLine::TPolyLine(Int_t n, Float_t* x, Float_t* y, Option_t* option = "") =>
    could not convert argument 3
  TPolyLine::TPolyLine(Int_t n, Double_t* x, Double_t* y, Option_t* option = "") =>
    could not convert argument 2

It looks like this is not the way to pass an array. What's the right way?

Maarten Ballintijn | 1 Oct 20:06 2014


Dear ROOT Team,

Would it be possible to push rootjs.git to github as well?


Sent from my iPad