Opened 11 years ago
Last modified 10 years ago
#288 new Bug
Delphes 3.1.2 with Pythia8
Reported by: | Matthew Low | Owned by: | |
---|---|---|---|
Priority: | minor | Milestone: | |
Component: | Delphes code | Version: | Delphes 3 |
Keywords: | Cc: |
Description
Dear Delphes team,
I have a question about running Delphes 3.1 with Pythia8. I think this has been brought up in previous tickets that running make while Pythia8 environment variables are set tends to not work. The work-around of unsetting these variables works fine for me. I am wondering if I actually want to use the Pythia8 functionality with it, how to fix it.
If I run make I get the following error:
modules/PileUpMergerPythia8.cc:25:20: error: Pythia.h: No such file or directory
modules/PileUpMergerPythia8.cc: In member function ‘virtual void PileUpMergerPythia8::Init()’:
modules/PileUpMergerPythia8.cc:67: error: invalid use of incomplete type ‘struct Pythia8::Pythia’
./modules/PileUpMergerPythia8.h:23: error: forward declaration of ‘struct Pythia8::Pythia’
...
I can fix this by changing "#include "Pythia.h"" to "#include "Pythia8/Pythia.h" (this seems to be how Pythia.h is included in the Pythia8 example) in modules/PileUpMergerPythia8.cc. Compiling again I get this error:
Building libDelphes.so
/usr/bin/ld: cannot find -lpythia8
collect2: ld returned 1 exit status
make: * [libDelphes.so] Error 1
For this case, I don't know what the fix is since comparable Makefiles I use with Pythia8 reference -lpythia8 in a similar way.
Thanks for your help,
Matthew
Change History (5)
comment:1 by , 10 years ago
comment:2 by , 10 years ago
Dear Pavel,
Thanks for the reply. With your prompts I've gotten this to compile, but it required a few modifications. As far as I know, my compilation/installation of Pythia8 was using all defaults. The changes I made were:
- In the pythia8 directory I changed "SHAREDLIBS = no" to "SHAREDLIBS = yes" in config.mk and then compiled pythia (the pythia README says there was a way to get "SHAREDLIBS = yes" using environment variables and using configure to generate config.mk, but after a few failed tries I gave up on this way). This created the libpythia8.so I was missing.
- By default I guess pythia8 does not install LHAPDF, but has a placeholder lhapdfdummy. So in the Delphes makefile I replaced "-lLHAPDF" with "-llhapdfdummy".
- I changed "#include "Pythia.h"" to "#include "Pythia8/Pythia.h"" in readers/DelphesPythia8.cpp
After these modifications Delphes compiled with Pythia8 and I was able to run DelphesPythia8 and generate events.
Best,
Matthew
comment:3 by , 10 years ago
Hi Matthew and Pavel,
I got some problems same as you Matthew, and I follow your instruction (3 points above) and I can configure it. I did "make" and it works. But when I stated it with command "./DelphesHepMC" I got this
- ./DelphesHepMC: error while loading shared libraries: libpythia8.so: cannot open shared object file: No such file or directory
and I have libpythia8.so in my pythia8,
- locate -b '\libpythia8.so'
- /home/ami/pythia_root/pythia8/lib/libpythia8.so
could you help me?. Where should the libpythia8.so should be exist?
Best regards,
Fahmi
comment:4 by , 10 years ago
Hi Fahmi,
Could you check your LD_LIBRARY_PATH variable to see if it contains '/home/ami/pythia_root/pythia8/lib'?
If it does not, you can append the path to libpythia8.so to LD_LIBRARY_PATH with the following command:
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$PYTHIA8/lib
Regards,
Pavel
comment:5 by , 10 years ago
Hi Pavel,
Thanks for replying. Yes, I checked it. And it works. I edited my .bashrc file, following the command :
- export LD_LIBRARY_PATH=$PYTHIA8/lib:$LD_LIBRARY_PATH
and I have done "make" it.
Thank you,
Best regards,
Fahmi.
Dear Matthew,
Thanks for the suggestion about
#include "Pythia8/Pythia.h"
, we'll include this fix in the next Delphes release.What is the location of libpythia8.so or libpythia8.dylib on your system? One of the following commands could be useful to find this file:
In Makefile its location is specified as
$PYTHIA8/lib
.Regards,
Pavel