Storing Pythia8 Events In A TTree

Hi,

I’m using Pythia8 to generate some events and then I would like to use ROOT to analyze them. For this reason, I’m trying to get the Pythia8 plugin inside ROOT working. I looked at the pythia8.C tutorial, and I can not generate events without any problems. However I would also like to store them inside a TTree for future use. What is the recommended way to do this?

I’ve looked at the pythiaExample.C tutorial, which does this for Pythia6. I thought that the core lines were:

  // Make a tree in that file ...
  TTree* tree = new TTree(TREENAME, "Pythia 6 tree");

  // ... and register a the cache of pythia on a branch (It's a
  // TClonesArray of TMCParticle objects. )
  TClonesArray* particles = (TClonesArray*)pythia->GetListOfParticles();
  tree->Branch(BRANCHNAME, &particles);

That is, create a branch on the internal list of particles. However when I modify this example to use Pythia8 (code attached, I basically just changed TPythia7 to TPythia8 and fixed up the initialization code), I get the following warning when making the branch:

Warning in <TTree::Bronch>: Using split mode on a class: TParticle with a custom Streamer

And when I try to fill the tree with an event, I get the following crash:

Event # 0

 *** Break *** segmentation violation



===========================================================
There was a crash (#7 0x003798bb in SigHandler(ESignals) () from /home/kkrizka/HEP/root-svn/lib/libCore.so).
This is the entire stack trace of all threads:
===========================================================
#0  0x00d14416 in __kernel_vsyscall ()
#1  0x00a4e023 in waitpid () from /lib/i386-linux-gnu/libc.so.6
#2  0x009ef6e3 in ?? () from /lib/i386-linux-gnu/libc.so.6
#3  0x009a6ebb in system () from /lib/i386-linux-gnu/libpthread.so.0
#4  0x0037279b in TUnixSystem::Exec(char const*) () from /home/kkrizka/HEP/root-svn/lib/libCore.so
#5  0x00376c80 in TUnixSystem::StackTrace() () from /home/kkrizka/HEP/root-svn/lib/libCore.so
#6  0x003797a7 in TUnixSystem::DispatchSignals(ESignals) () from /home/kkrizka/HEP/root-svn/lib/libCore.so
#7  0x003798bb in SigHandler(ESignals) () from /home/kkrizka/HEP/root-svn/lib/libCore.so
#8  0x003709d2 in sighandler(int) () from /home/kkrizka/HEP/root-svn/lib/libCore.so
#9  0x003a3c35 in textinput::TerminalConfigUnix::HandleSignal(int) () from /home/kkrizka/HEP/root-svn/lib/libCore.so
#10 0x003a3c74 in (anonymous namespace)::TerminalConfigUnix__handleSignal(int) () from /home/kkrizka/HEP/root-svn/lib/libCore.so
#11 <signal handler called>
#12 0x0657d839 in int TStreamerInfo::WriteBufferAux<char**>(TBuffer&, char** const&, int, int, int, int) () from /home/kkrizka/HEP/root-svn/lib/libRIO.so
#13 0x064cffba in TStreamerInfoActions::GenericVectorPtrWriteAction(TBuffer&, void*, void const*, TStreamerInfoActions::TConfiguration const*) () from /home/kkrizka/HEP/root-svn/lib/libRIO.so
#14 0x0648aab9 in TBufferFile::ApplySequenceVecPtr(TStreamerInfoActions::TActionSequence const&, void*, void*) () from /home/kkrizka/HEP/root-svn/lib/libRIO.so
#15 0x033059cf in TBranchElement::FillLeavesClonesMember(TBuffer&) () from /home/kkrizka/HEP/root-svn/lib/libTree.so
#16 0x03303823 in TBranch::Fill() () from /home/kkrizka/HEP/root-svn/lib/libTree.so
#17 0x03304d88 in TBranchElement::Fill() () from /home/kkrizka/HEP/root-svn/lib/libTree.so
#18 0x03304b11 in TBranchElement::Fill() () from /home/kkrizka/HEP/root-svn/lib/libTree.so
#19 0x033510a4 in TTree::Fill() () from /home/kkrizka/HEP/root-svn/lib/libTree.so
#20 0x0338425c in G__G__Tree_119_0_54(G__value*, char const*, G__param*, int) () from /home/kkrizka/HEP/root-svn/lib/libTree.so
#21 0x00f204ec in Cint::G__ExceptionWrapper(int (*)(G__value*, char const*, G__param*, int), G__value*, char*, G__param*, int) () from /home/kkrizka/HEP/root-svn/lib/libCint.so
#22 0x00fd09b9 in G__execute_call () from /home/kkrizka/HEP/root-svn/lib/libCint.so
#23 0x00fd0d44 in G__call_cppfunc () from /home/kkrizka/HEP/root-svn/lib/libCint.so
#24 0x00fada4f in G__interpret_func () from /home/kkrizka/HEP/root-svn/lib/libCint.so
#25 0x00f9b882 in G__getfunction () from /home/kkrizka/HEP/root-svn/lib/libCint.so
#26 0x01092f16 in G__getstructmem(int, G__FastAllocString&, char*, int, char*, int*, G__var_array*, int) () from /home/kkrizka/HEP/root-svn/lib/libCint.so
#27 0x0108a98b in G__getvariable () from /home/kkrizka/HEP/root-svn/lib/libCint.so
#28 0x00f72117 in G__getitem () from /home/kkrizka/HEP/root-svn/lib/libCint.so
#29 0x00f79390 in G__getexpr () from /home/kkrizka/HEP/root-svn/lib/libCint.so
#30 0x0100581c in G__exec_statement () from /home/kkrizka/HEP/root-svn/lib/libCint.so
#31 0x0100e03a in G__exec_loop () from /home/kkrizka/HEP/root-svn/lib/libCint.so
#32 0x0100cb06 in G__exec_statement () from /home/kkrizka/HEP/root-svn/lib/libCint.so
#33 0x00faeee9 in G__interpret_func () from /home/kkrizka/HEP/root-svn/lib/libCint.so
#34 0x00f9b8f8 in G__getfunction () from /home/kkrizka/HEP/root-svn/lib/libCint.so
#35 0x00f728a5 in G__getitem () from /home/kkrizka/HEP/root-svn/lib/libCint.so
#36 0x00f79390 in G__getexpr () from /home/kkrizka/HEP/root-svn/lib/libCint.so
#37 0x0100581c in G__exec_statement () from /home/kkrizka/HEP/root-svn/lib/libCint.so
#38 0x00faeee9 in G__interpret_func () from /home/kkrizka/HEP/root-svn/lib/libCint.so
#39 0x00f9b8f8 in G__getfunction () from /home/kkrizka/HEP/root-svn/lib/libCint.so
#40 0x00f728a5 in G__getitem () from /home/kkrizka/HEP/root-svn/lib/libCint.so
#41 0x00f79390 in G__getexpr () from /home/kkrizka/HEP/root-svn/lib/libCint.so
#42 0x00f8530b in G__calc_internal () from /home/kkrizka/HEP/root-svn/lib/libCint.so
#43 0x0101523e in G__process_cmd () from /home/kkrizka/HEP/root-svn/lib/libCint.so
#44 0x0033dc4a in TCint::ProcessLine(char const*, TInterpreter::EErrorCode*) () from /home/kkrizka/HEP/root-svn/lib/libCore.so
#45 0x0033357f in TCint::ProcessLineSynch(char const*, TInterpreter::EErrorCode*) () from /home/kkrizka/HEP/root-svn/lib/libCore.so
#46 0x00294897 in TApplication::ExecuteFile(char const*, int*, bool) () from /home/kkrizka/HEP/root-svn/lib/libCore.so
#47 0x00294c6c in TApplication::ProcessFile(char const*, int*, bool) () from /home/kkrizka/HEP/root-svn/lib/libCore.so
#48 0x002933ff in TApplication::ProcessLine(char const*, bool, int*) () from /home/kkrizka/HEP/root-svn/lib/libCore.so
#49 0x0011dacf in TRint::Run(bool) () from /home/kkrizka/HEP/root-svn/lib/libRint.so
#50 0x08048c8f in main ()
===========================================================


The lines below might hint at the cause of the crash.
If they do not help you then please submit a bug report at
http://root.cern.ch/bugs. Please post the ENTIRE stack trace
from above as an attachment in addition to anything else
that might help us fixing this issue.
===========================================================
#12 0x0657d839 in int TStreamerInfo::WriteBufferAux<char**>(TBuffer&, char** const&, int, int, int, int) () from /home/kkrizka/HEP/root-svn/lib/libRIO.so
#13 0x064cffba in TStreamerInfoActions::GenericVectorPtrWriteAction(TBuffer&, void*, void const*, TStreamerInfoActions::TConfiguration const*) () from /home/kkrizka/HEP/root-svn/lib/libRIO.so
#14 0x0648aab9 in TBufferFile::ApplySequenceVecPtr(TStreamerInfoActions::TActionSequence const&, void*, void*) () from /home/kkrizka/HEP/root-svn/lib/libRIO.so
#15 0x033059cf in TBranchElement::FillLeavesClonesMember(TBuffer&) () from /home/kkrizka/HEP/root-svn/lib/libTree.so
#16 0x03303823 in TBranch::Fill() () from /home/kkrizka/HEP/root-svn/lib/libTree.so
#17 0x03304d88 in TBranchElement::Fill() () from /home/kkrizka/HEP/root-svn/lib/libTree.so
#18 0x03304b11 in TBranchElement::Fill() () from /home/kkrizka/HEP/root-svn/lib/libTree.so
#19 0x033510a4 in TTree::Fill() () from /home/kkrizka/HEP/root-svn/lib/libTree.so
===========================================================


Root > Function makeEventSample() busy flag cleared
Function pythiaExample() busy flag cleared

What am I doing wrong? Is this the recommended way to fill a tree in Pythia8 too?

I’ve looked at the ROOT examples that came with Pythia8 (rootexamples directory), and they fill a TTree using the Pythia8::Event class. Should I do that instead?
pythiaExample.C (7.3 KB)

see the standard example now provided in the distribution of pythia8 (for pythia8 > 8153)
in the directory rootexamples. There is a test program tree.cc(posted below) and a Makefile.

Rene

// File: tree.cc
// This is a simple test program.
// Modified by Rene Brun and Axcel Naumann to put the Pythia::event 
// into a TTree.
// Copyright C 2011 Torbjorn Sjostrand

// Header file to access Pythia 8 program elements.
#include "Pythia.h"

// ROOT, for saving Pythia events as trees in a file.
#include "TTree.h"
#include "TFile.h"

using namespace Pythia8;

int main() {

  // Create Pythia instance and set it up to generate hard QCD processes
  // above pTHat = 20 GeV for pp collisions at 14 TeV.
  Pythia pythia;
  pythia.readString("HardQCD:all = on");
  pythia.readString("PhaseSpace:pTHatMin = 20.");
  pythia.init( 2212, 2212, 14000.);

  // Set up the ROOT TFile and TTree.
  TFile *file = TFile::Open("pytree.root","recreate");
  Event *event = &pythia.event;
  TTree *T = new TTree("T","ev1 Tree");
  T->Branch("event",&event);

 // Begin event loop. Generate event; skip if generation aborted.
  for (int iEvent = 0; iEvent < 100; ++iEvent) {
    if (!pythia.next()) continue;

    // Optionally list first event.
    //if (iEvent < 1) {pythia.info.list(); pythia.event.list();}

    // Fill the pythia event into the TTree.  
    // Warning: the files will rapidly become large if all events 
    // are saved. In some cases it may be convenient to do some 
    // processing of events and only save those that appear 
    // interesting for future analyses.
    T->Fill();

  // End event loop.
  }

  // Statistics on event generation.
  pythia.statistics();

  //  Write tree.
  T->Print();
  T->Write();
  delete file;

  // Done.
  return 0;
}

Hi,

Sorry for hijacking this thread. I am having difficulties loading events from the tree pytree.root generated by the example tree.cc in the Pythia8 rootexamples. In the example, 100 events are generated and for each event the whole event history is stored in the tree. Using the Scan function in TreeViewer on the branch entry.pSave.xx produces the following:

]***********************************
*    Row   * Instance * entry.pSa *
***********************************
*        0 *        0 *         0 *
*        0 *        1 *         0 *
*        0 *        2 *         0 *
*        0 *        3 *         0 *
*        0 *        4 *         0 *
*        0 *        5 * -21.00263 *
*        0 *        6 * 21.002633 *
*        0 *        7 * -4.44e-15 *
*        0 *        8 * 1.776e-15 *
*        0 *        9 * -18.89526 *

I.e., every event is stored separately in a different “Row” and for each Row there are several instances, one for every particle in the event history.

I would like to loop through all events (every Row) and retrieve the values of entry.pSave.xx for each particle (Instance), but I can’t figure out how. Alternatively, if possible, it would be even better if for every row I could loop through an event in the Pythia way:

for (int i = 0; i < pythia.event.size(); ++i) {}

There are many examples on the web when each Row only has one Instance, or value, but nothing quite like this, so I would be grateful for any pointers.

Hi!

I was following this thread and I came across a different problem. I have posted it here
[root-forum.cern.ch/t/problem-in-storing-pythia-events-in-ttree/18649/1
I hope its okay to post the link on this thread as well, since it pertains to the same topic. I have not been able to figure out the solution yet, any help will be great!

Thanks
Aman

Hi,

I am trying to run tree.cc using the pythia8219.

make tree

output:

tree.cc:7:20: fatal error: Pythia.h: No such file or directory
compilation terminated.
<builtin>: recipe for target 'tree' failed
make: *** [tree] Error 1

bashrc:

export PYTHIA8=/home/andre/Documents/pythia_root/pythia8
export PYTHIA8DATA=$PYTHIA8/xmldoc

Somebody can help me?

Thanks!

Try to modify your “Makefile” (assuming it’s “Axel Naumann, 2011-03-03”): DICTCXXFLAGS := -I$(PYTHIA8) -I$(PYTHIA8)/include -I$(PYTHIA8)/Pythia8

Hello, Wile.

Thanks for the quick answer!

the makefile:

# Makefile is a part of the PYTHIA event generator.
# Copyright (C) 2016 Torbjorn Sjostrand.
# PYTHIA is licenced under the GNU GPL version 2, see COPYING for details.
# Please respect the MCnet Guidelines, see GUIDELINES for details.
# Author: Philip Ilten, September 2014.
#
# This is is the Makefile used to build PYTHIA examples on POSIX systems.
# Example usage is:
#     make main01
# For help using the make command please consult the local system documentation,
# i.e. "man make" or "make --help".

################################################################################
# VARIABLES: Definition of the relevant variables from the configuration script.
################################################################################

# Include the configuration.
-include Makefile.inc

# Handle GZIP support.
ifeq ($(GZIP_USE),true)
  CXX_COMMON+= -DGZIPSUPPORT -I$(GZIP_INCLUDE)
  CXX_COMMON+= -L$(GZIP_LIB) -Wl,-rpath,$(GZIP_LIB) -lz
endif

# Check distribution (use local version first, then installed version).
ifneq ("$(wildcard ../lib/libpythia8.a)","")
  PREFIX_LIB=../lib
  PREFIX_INCLUDE=../include
endif
CXX_COMMON:=-I$(PREFIX_INCLUDE) $(CXX_COMMON) -Wl,-rpath,$(PREFIX_LIB) -ldl

################################################################################
# RULES: Definition of the rules used to build the PYTHIA examples.
################################################################################

# Rules without physical targets (secondary expansion for specific rules).
.SECONDEXPANSION:
.PHONY: all clean

# All targets (no default behavior).
all:
	@echo "Usage: make mainXX"

# The Makefile configuration.
Makefile.inc:
	$(error Error: PYTHIA must be configured, please run "./configure"\
                in the top PYTHIA directory)

# PYTHIA libraries.
$(PREFIX_LIB)/libpythia8.a :
	$(error Error: PYTHIA must be built, please run "make"\
                in the top PYTHIA directory)

# Examples without external dependencies.
main% : main%.cc $(PREFIX_LIB)/libpythia8.a
	$(CXX) $^ -o $@ $(CXX_COMMON)

# GZIP (required).
main34: $$@.cc $(PREFIX_LIB)/libpythia8.a
ifeq ($(GZIP_USE),true)
	$(CXX) $^ -o $@ $(CXX_COMMON)
else
	@echo "Error: $@ requires GZIP"
endif

# HEPMC2.
main41 main42 main43 main85 main86 main87 main88 main89: $$@.cc\
	$(PREFIX_LIB)/libpythia8.a
ifeq ($(HEPMC2_USE),true)
	$(CXX) $^ -o $@ -I$(HEPMC2_INCLUDE) $(CXX_COMMON)\
	 -L$(HEPMC2_LIB) -Wl,-rpath,$(HEPMC2_LIB) -lHepMC
else
	@echo "Error: $@ requires HEPMC2"
endif

# PROMC.
main46: $$@.cc $(PREFIX_LIB)/libpythia8.a
ifeq ($(PROMC_USE),true)
	$(CXX) $^ -o $@ -I$(PROMC_INCLUDE)/src -I$(PROMC_INCLUDE)/include\
	 $(CXX_COMMON) -DPROMC=\"$(PROMC_INCLUDE)\" -Wno-long-long\
	 -L$(PROMC_LIB) -Wl,-rpath,$(PROMC_LIB) -lpromc -lprotoc -lprotobuf\
	 -lprotobuf-lite -lcbook
else
	@echo "Error: $@ requires PROMC"
endif

# EVTGEN (and HEPMC2).
main48: $$@.cc $(PREFIX_LIB)/libpythia8.so
ifeq ($(EVTGEN_USE)$(HEPMC2_USE),truetrue)
	$(CXX) $< -o $@ -I$(EVTGEN_INCLUDE) $(CXX_COMMON)\
	 -DEVTGEN_PYTHIA -DEVTGEN_EXTERNAL -Wl,-rpath,$(HEPMC2_LIB)\
	 -L$(PREFIX_LIB) -Wl,-rpath,$(PREFIX_LIB) -lpythia8\
	 -L$(EVTGEN_LIB) -Wl,-rpath,$(EVTGEN_LIB) -lEvtGenExternal -lEvtGen
else
	@echo "Error: $@ requires EVTGEN and HEPMC2"
endif

# FASTJET3.
main71 main72: $$@.cc $(PREFIX_LIB)/libpythia8.a
ifeq ($(FASTJET3_USE),true)
	$(CXX) $^ -o $@ -I$(FASTJET3_INCLUDE) $(CXX_COMMON)\
	 -L$(FASTJET3_LIB) -Wl,-rpath,$(FASTJET3_LIB) -lfastjet
else
	@echo "Error: $@ requires FASTJET3"
endif

# FASTJET3 and HEPMC2.
main81 main82 main83 main84: $$@.cc $(PREFIX_LIB)/libpythia8.a
ifeq ($(FASTJET3_USE)$(HEPMC2_USE),truetrue)
	$(CXX) $^ -o $@ -I$(FASTJET3_INCLUDE) -I$(HEPMC2_INCLUDE) $(CXX_COMMON)\
	 -L$(HEPMC2_LIB) -Wl,-rpath,$(HEPMC2_LIB) -lHepMC\
	 -L$(FASTJET3_LIB) -Wl,-rpath,$(FASTJET3_LIB) -lfastjet
else
	@echo "Error: $@ requires FASTJET3 and HEPMC2"
endif

# ROOT (turn off all warnings for readability).
main91: $$@.cc $(PREFIX_LIB)/libpythia8.a
ifeq ($(ROOT_USE),true)
	$(CXX) $^ -o $@ -w -I$(ROOT_INCLUDE) $(CXX_COMMON)\
	 -Wl,-rpath,$(ROOT_LIB) `$(ROOT_BIN)root-config --glibs`
else
	@echo "Error: $@ requires ROOT"
endif
main92: $$@.cc $$@.h $$@LinkDef.h $(PREFIX_LIB)/libpythia8.a
ifeq ($(ROOT_USE),true)
	export LD_LIBRARY_PATH=$$LD_LIBRARY_PATH:$(ROOT_LIB);\
	 $(ROOT_BIN)rootcint -f $@Dct.cc -c -I$(PREFIX_INCLUDE) $@.h $@LinkDef.h
	$(CXX) $@Dct.cc $^ -o $@ -w -I$(ROOT_INCLUDE) $(CXX_COMMON)\
	 -Wl,-rpath,$(ROOT_LIB) `$(ROOT_BIN)root-config --glibs`
else
	@echo "Error: $@ requires ROOT"
endif

# User-written examples for tutorials, without external dependencies.
mymain% : mymain%.cc $(PREFIX_LIB)/libpythia8.a
	$(CXX) $^ -o $@ $(CXX_COMMON)

# Internally used tests, without external dependencies.
test% : test%.cc $(PREFIX_LIB)/libpythia8.a
	$(CXX) $^ -o $@ $(CXX_COMMON)

# Clean.
clean:
	@rm -f main[0-9][0-9]; rm -f out[0-9][0-9];\
	rm -f mymain[0-9][0-9]; rm -f myout[0-9][0-9];\
	rm -f test[0-9][0-9][0-9]; rm -f out[0-9][0-9][0-9];\
	rm -f weakbosons.lhe; rm -f Pythia8.promc; rm -f hist.root;\
	rm -f *~; rm -f \#*; rm -f core*; rm -f *Dct.*

where I should change in the makefile?

Thanks!

And where is the “tree” target?

tree.cc

// File: tree.cc
// This is a simple test program.
// Modified by Rene Brun and Axcel Naumann to put the Pythia::event 
// into a TTree.
// Copyright (C) 2013 Torbjorn Sjostrand

// Header file to access Pythia 8 program elements.
#include "Pythia.h"

// ROOT, for saving Pythia events as trees in a file.
#include "TTree.h"
#include "TFile.h"

using namespace Pythia8;

int main() {

  // Create Pythia instance and set it up to generate hard QCD processes
  // above pTHat = 20 GeV for pp collisions at 14 TeV.
  Pythia pythia;
  pythia.readString("HardQCD:all = on");
  pythia.readString("PhaseSpace:pTHatMin = 20.");
  pythia.readString("Beams:eCM = 14000.");
  pythia.init();

  // Set up the ROOT TFile and TTree.
  TFile *file = TFile::Open("pytree.root","recreate");
  Event *event = &pythia.event;
  TTree *T = new TTree("T","ev1 Tree");
  T->Branch("event",&event);

 // Begin event loop. Generate event; skip if generation aborted.
  for (int iEvent = 0; iEvent < 100; ++iEvent) {
    if (!pythia.next()) continue;

    // Fill the pythia event into the TTree.  
    // Warning: the files will rapidly become large if all events 
    // are saved. In some cases it may be convenient to do some 
    // processing of events and only save those that appear 
    // interesting for future analyses.
    T->Fill();

  // End event loop.
  }

  // Statistics on event generation.
  pythia.stat();

  //  Write tree.
  T->Print();
  T->Write();
  delete file;

  // Done.
  return 0;
}

That was not my question. In the “Makefile” that you copied here, there is no “tree” target, so this is NOT the “Makefile” which deals with “tree.cc”.

Hi, Wile

yes, now I understand the problem and using the “Makefile” from pythia8175 (https://github.com/mortenpi/pythia8/tree/master/rootexamples).

But, still not working!

rootcint -f treeDict.cc -c -I../include  pythiaROOT.h pythiaLinkdef.h
Error: Symbol Dl_info is not defined in current scope  /usr/include/dlfcn.h:94:
Error: Missing whitespace at or after line 189.
Error: Unexpected end of file (G__fgetspace():2) /usr/include/dlfcn.h:191:
Report: Unrecognized string '__END_DECLS' ignored /usr/include/dlfcn.h:192:
Warning: Error occurred during reading source files
Warning: Error occurred during dictionary source generation
!!!Removing treeDict.cc treeDict.h !!!
Error: rootcint: error loading headers...
makefile:39: recipe for target 'tree' failed
make: *** [tree] Error 1

I think that in the pythia82XX the file for run “tree” was remove

Thanks for the help!

Andre

Try to modify your “Makefile” (assuming it’s “Axel Naumann, 2011-03-03”): rootcint -f treeDict.cc -c -p $(DICTCXXFLAGS) pythiaROOT.h pythiaLinkdef.h

Error:

rootcint -f treeDict.cc -c -p -I../include  pythiaROOT.h pythiaLinkdef.h
g++ -I../include  -pthread -m64 -I/usr/include/root treeDict.cc tree.cc -o tree.exe -m64 -L/usr/lib/x86_64-linux-gnu -lGui -lCore -lCint -lRIO -lNet -lHist -lGraf -lGraf3d -lGpad -lTree -lRint -lPostscript -lMatrix -lPhysics -lMathCore -lThread -pthread -lm -ldl -rdynamic -L../lib/ -lpythia8 -llhapdfdummy 
/usr/bin/ld: cannot find -llhapdfdummy
collect2: error: ld returned 1 exit status
makefile:39: recipe for target 'tree' failed
make: *** [tree] Error 1

I think that llhapdfdummy not was generated in the
make the pythia82XX

Thanks!