diff --git a/CMakeLists.txt b/CMakeLists.txt index 3efcbd8..af46014 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,111 +1,121 @@ # Top level CMakeLists.txt for EvtGen # Enforce an out-of-source build. # Should be the first action in the top level CMakeLists.txt if(${CMAKE_SOURCE_DIR} STREQUAL ${CMAKE_BINARY_DIR}) message(STATUS "EvtGen requires an out-of-source build.") message(STATUS "Please remove the following files from ${CMAKE_BINARY_DIR}:") message(STATUS " CMakeCache.txt") message(STATUS " CMakeFiles") message(STATUS "Once these files are removed, create a separate directory") message(STATUS "and run CMake from there, pointing it to:") message(STATUS " ${CMAKE_SOURCE_DIR}") message(FATAL_ERROR "in-source build detected") endif() # Also require a minimum version of CMake cmake_minimum_required(VERSION 3.11.0) # Project setup if(${CMAKE_VERSION} VERSION_LESS 3.12.0) project(EvtGen VERSION 2.0.0 DESCRIPTION "Monte Carlo generator of particle decays, in particular the weak decays of heavy flavour particles such as B mesons." ) else() project(EvtGen VERSION 2.0.0 DESCRIPTION "Monte Carlo generator of particle decays, in particular the weak decays of heavy flavour particles such as B mesons." HOMEPAGE_URL "https://evtgen.hepforge.org" ) endif() # Prepend this project's custom module path(s) to CMAKE_MODULE_PATH set(CMAKE_MODULE_PATH ${PROJECT_SOURCE_DIR}/cmake/Modules ${CMAKE_MODULE_PATH}) # Include needed modules to perform any custom setup # Install paths include(GNUInstallDirs) # Compilation/linking flags and related settings include(CompilerFlags) # EvtGen external dependencies option(EVTGEN_PYTHIA "Enable/disable linking with Pythia8" OFF) option(EVTGEN_PHOTOS "Enable/disable linking with Photos++" OFF) option(EVTGEN_TAUOLA "Enable/disable linking with Tauola++" OFF) option(EVTGEN_HEPMC3 "Enable/disable linking with HepMC3" ON) if (EVTGEN_HEPMC3) message(STATUS "EvtGen: Linking with HepMC3") else() message(STATUS "EvtGen: Linking with HepMC2") endif() message(STATUS "EvtGen: Optional linking with Pythia8 EVTGEN_PYTHIA ${EVTGEN_PYTHIA}") message(STATUS "EvtGen: Optional linking with Photos++ EVTGEN_PHOTOS ${EVTGEN_PHOTOS}") message(STATUS "EvtGen: Optional linking with Tauola++ EVTGEN_TAUOLA ${EVTGEN_TAUOLA}") message(STATUS "EvtGen: Optional linking with HepMC3 EVTGEN_HEPMC3 ${EVTGEN_HEPMC3}") include(ExternalDependencies) # Now build the library add_subdirectory(src) # Copy the particle property and decay tables configure_file(DECAY.DEC ${CMAKE_CURRENT_BINARY_DIR}/DECAY.DEC COPYONLY) configure_file(DECAY.XML ${CMAKE_CURRENT_BINARY_DIR}/DECAY.XML COPYONLY) configure_file(evt.pdl ${CMAKE_CURRENT_BINARY_DIR}/evt.pdl COPYONLY) +# Copy the older particle property and decay tables +configure_file(DECAY_2009.DEC ${CMAKE_CURRENT_BINARY_DIR}/DECAY_2009.DEC COPYONLY) +configure_file(DECAY_2009.XML ${CMAKE_CURRENT_BINARY_DIR}/DECAY_2009.XML COPYONLY) +configure_file(DECAY_2010.DEC ${CMAKE_CURRENT_BINARY_DIR}/DECAY_2010.DEC COPYONLY) +configure_file(DECAY_2010.XML ${CMAKE_CURRENT_BINARY_DIR}/DECAY_2010.XML COPYONLY) # Build the executables in the test and validation directories +option(EVTGEN_BUILD_DOC "Enable/disable building of documentation in 'doc' directory" OFF) option(EVTGEN_BUILD_TESTS "Enable/disable building of executables in 'test' directory" OFF) option(EVTGEN_BUILD_VALIDATIONS "Enable/disable building of executables in 'validation' directory" OFF) +message(STATUS "EvtGen: Building of documentation in 'doc' directory EVTGEN_BUILD_DOC ${EVTGEN_BUILD_DOC}") message(STATUS "EvtGen: Building of executables in 'test' directory EVTGEN_BUILD_TESTS ${EVTGEN_BUILD_TESTS}") message(STATUS "EvtGen: Building of executables in 'validation' directory EVTGEN_BUILD_VALIDATIONS ${EVTGEN_BUILD_VALIDATIONS}") +if(${EVTGEN_BUILD_DOC}) + add_subdirectory(doc) +endif() if(${EVTGEN_BUILD_TESTS}) add_subdirectory(test) endif() if(${EVTGEN_BUILD_VALIDATIONS}) add_subdirectory(validation) endif() # Install the include directories install(DIRECTORY EvtGen DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}) install(DIRECTORY EvtGenBase DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}) install(DIRECTORY EvtGenExternal DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}) install(DIRECTORY EvtGenModels DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}) # Install the particle properties and decay tables -install(FILES DECAY.DEC DECAY.XML evt.pdl DESTINATION ${CMAKE_INSTALL_DATADIR}/EvtGen) +install(FILES DECAY.DEC DECAY.XML evt.pdl DECAY_2010.XML DECAY_2010.DEC DECAY_2009.XML DECAY_2009.DEC DESTINATION ${CMAKE_INSTALL_DATADIR}/EvtGen) # Generate CMake config files, which can be used by other projects include(CMakePackageConfigHelpers) set(INCLUDE_INSTALL_DIR ${CMAKE_INSTALL_INCLUDEDIR}) set(LIB_INSTALL_DIR ${CMAKE_INSTALL_LIBDIR}) configure_package_config_file(cmake/Templates/EvtGenConfig.cmake.in ${CMAKE_CURRENT_BINARY_DIR}/EvtGenConfig.cmake INSTALL_DESTINATION cmake PATH_VARS INCLUDE_INSTALL_DIR LIB_INSTALL_DIR ) write_basic_package_version_file(${CMAKE_CURRENT_BINARY_DIR}/EvtGenConfigVersion.cmake COMPATIBILITY AnyNewerVersion ) install(FILES ${CMAKE_CURRENT_BINARY_DIR}/EvtGenConfig.cmake ${CMAKE_CURRENT_BINARY_DIR}/EvtGenConfigVersion.cmake DESTINATION ${CMAKE_INSTALL_DATADIR}/EvtGen/cmake ) install( EXPORT "EvtGenTargets" NAMESPACE "EvtGen::" DESTINATION ${CMAKE_INSTALL_DATADIR}/EvtGen/cmake ) diff --git a/README b/README index 42bdf15..d0b6837 100644 --- a/README +++ b/README @@ -1,198 +1,206 @@ RELEASE NOTES ============= Please see History.txt for a detailed list of changes to this package. The major points comparing this version with the 2009 release are the following: 1. This version requires HepMC (version 2.04 and above) for storing event structures of particle decays, and can also use Pythia 8 (version 8.180 and above is required) and the C++ interfaced packages Photos (version 3.5.2 and above) and Tauola (version 1.0.7 and above). These external generators are included via engine classes in the new sub-directory EvtGenExternal. Two libraries can be created for EvtGen: i) libEvtGen.so contains the EvtGenBase and EvtGenModel core code/decay models, ii) libEvtGenExternal.so contains _only_ the code within EvtGenExternal. This means that the external generator interface can be ignored by not loading/creating the 2nd library libEvtGenExternal.so. In the installation instructions below, it is possible to select which external generators you want to use. Note, however, that the generic "DECAY.DEC" file contains Pythia decays, and if Pythia is not included in the build, these decays are not generated (in fact, they would need a new decay model specified). Likewise, if Photos is not included, there will be no radiative corrections done for particle decays. To use the external generators, use the following code: #include "EvtGenExternal/EvtExternalGenList.hh" #include "EvtGenBase/EvtAbsRadCorr.hh" #include "EvtGenBase/EvtDecayBase.hh" // Set up the default external generator list: Photos, Pythia and/or Tauola EvtExternalGenList genList; EvtAbsRadCorr* radCorrEngine = genList.getPhotosModel(); std::list extraModels = genList.getListOfModels(); // Create the EvtGen generator object EvtGen myGenerator("decayFile.dec", "evt.pdl", randomEnginePointer, radCorrEngine, &extraModels); //If you don't want to use external generators, use the following: //EvtGen myGenerator("decayFile.dec", "evt.pdl", randomEnginePointer); The files Pythia8_README.txt and Tauola_README.txt have more details about using the new Pythia 8 and Tauola generators (called via the PYTHIA and TAUOLA "decay.dec" model names). The new Photos generator is still called via the PHOTOS "decay.dec" model name. It is now possible to use alias particle decays for the Pythia 8 model. Two Pythia 8 instances are used in EvtPythiaEngine for normal and aliased decays. Since the underlying code for Photos and Tauola is still Fortran, it is only possible to have one (unique) instance of each of these external generators. This can only be fixed if these packages are converted to pure C++ code. 2. This version of EvtGen is effectively a merger of the latest LHCb and BaBar EvtGenBase and EvtGenModels code. Various decay models have been added, and there have been a range of bug fixes. 3. There is also a new Dalitz decay class model "GENERIC_DALITZ" (EvtGenModels/EvtGenericDalitz.cpp), that should be used instead of EvtDDalitz. The generic Dalitz model uses xml files to configure the resonance amplitude parameters (instead of being hardcoded in EvtDDalitz): Decay D+ 1.0 K- pi+ pi+ GENERIC_DALITZ MyDalitzParameters.xml; Enddecay Examples of xml Dalitz parameter files are given in the sub-directory validation/DalitzFiles, e.g. see DalitzDecays.xml. 4. It is possible to use decay files in xml format. Use the python script convertDecayFile.py for converting decay files to the new format. The src/EvtGen.cpp constructor has an additional boolean argument useXml that needs to be set to true if xml decay files are to be used (default is useXml=false). For example, DECAY_2010.XML is the xml version of DECAY_2010.DEC. 5. Bug fixes for Bs mixing decay/CP violation amplitudes. Added the capability to use either coherent or incoherent mixing in EvtCPUtil. One or the other can be chosen as the mixing method for the B system by choosing 0 (coherent) or 1 (incoherent) for the last integer argument in the EvtGen() constructor. BUILDING THE CODE ================= To build the EvtGen code, first make sure that there is a valid (C++) version of HepMC avilable: HepMC http://hepmc.web.cern.ch//hepmc/ HepMC is used to store particle information. Optionally, it is possible to use other external generators, such as Pythia8 (for Pythia decays in the DECAY.DEC file, for example), Photos (for radiative corrections) and Tauola (for tau decays): Pythia8 http://home.thep.lu.se/~torbjorn/Pythia.html Photos http://photospp.web.cern.ch/photospp/ Tauola http://tauolapp.web.cern.ch/tauolapp/ All of these packages have instructions for building them. Once these packages are available, build the EvtGen release by creating a build directory alongside the EvtGen source directory (assumed here to be called evtgen.git) and running: cmake ../evtgen.git within the EvtGen build directory, using the following options: -DCMAKE_INSTALL_PREFIX= : Location in which to install EvtGen (highly recommended) -DHEPMC2_ROOT_DIR= : Location of HepMC install directory - While linking with HepMC is mandatory, depending on - your environment the installation may be detected + Depending on your environment the installation may be detected automatically. Failing this, you can specify the location via this option. + -DEVTGEN_HEPMC3=OFF : Link with HepMC3 instead of HepMC2 + -DHEPMC3_ROOT_DIR= : Location of HepMC3 install directory + Depending on your environment the installation may be detected + automatically. Failing this, you can specify the + location via this option, or to instruct cmake to look for the instllation + using -DCMAKE_PREFIX_PATH= or -DHepMC3_DIR=/share/HepMC3/cmake/ + + -DEVTGEN_PYTHIA=ON : Enable linking with Pythia 8 -DPYTHIA8_ROOT_DIR= : Location of Pythia8 install directory As with HepMC this may be automatically detected depending on your build environment, otherwise the location can be specified via this option. -DEVTGEN_PHOTOS=ON : Enable linking with Photos++ -DPHOTOSPP_ROOT_DIR= : Location of Photos++ install directory As with HepMC this may be automatically detected depending on your build environment, otherwise the location can be specified via this option. -DEVTGEN_TAUOLA=ON : Enable linking with Tauola++ -DTAUOLAPP_ROOT_DIR= : Location of Tauola++ install directory As with HepMC this may be automatically detected depending on your build environment, otherwise the location can be specified via this option. + -DEVTGEN_BUILD_DOC=OFF : Enable building of documentation in 'test' directory -DEVTGEN_BUILD_TESTS=ON : Enable building executables in 'test' directory -DEVTGEN_BUILD_VALIDATIONS=ON : Enable building executables in 'validation' directory Then compile and (optionally, although highly recommended) install the EvtGen code using make make install This should create the libraries lib/libEvtGen.so and lib/libEvtGenExternal.so, as well as the archives lib/archive/libEvtGen.a and lib/archive/libEvtGenExternal.a (the "EvtGenExternal" library/archive will not be created if linking is not enabled for any of the external generators). A series of validation and test executables are also created (discussed below). The CMakeLists.txt file in these two directories can be used as a template for building any user executables. The build/install will also create CMake config files that allow the library targets to be easily imported into other projects. To use Pythia 8, the environment variable PYTHIA8DATA needs to be set to the location of the corresponding xml documentation directory, which also contains the default values for particle decays and models: /xmldoc Code validation =============== The validation sub-directory contains code validation test cases for Pythia, Tauola and B mixing models. Note that these executables also depend on ROOT, which is only used to create ntuples and plots for the validation examples. The script genAllDecayExamples.sh runs other scripts that generate a range of decay modes using the genExampleRootFiles.cc program. The script compareAllDecays.sh runs a range of scripts that creates comparison plots using the compareRootFiles.cc program. For now, the comparisons use the same plots, but each of the "compare.sh" files can be edited to compare any two versions of ROOT data created by the genExampleRootFiles.cc program. The testCPVDecays.cc program runs a test for the B mixing decay model. Examples ======== Some examples are provided in the test sub-directory. Note that these executables also depend on ROOT, which is only used to create ntuples and plots for the validation examples. Running the script "./do_tests" will run a series of EvtGen examples. Example decay files are in the test/exampleFiles sub-directory. diff --git a/cmake/Modules/ExternalDependencies.cmake b/cmake/Modules/ExternalDependencies.cmake index 64c7ab2..e17037f 100644 --- a/cmake/Modules/ExternalDependencies.cmake +++ b/cmake/Modules/ExternalDependencies.cmake @@ -1,38 +1,38 @@ set(HEPMC2_ROOT_DIR "${CMAKE_CURRENT_SOURCE_DIR}/../external/HepMC" CACHE PATH "Location of HepMC 2 installation") set(HEPMC3_ROOT_DIR "${CMAKE_CURRENT_SOURCE_DIR}/../external/HepMC3" CACHE PATH "Location of HepMC 3 installation") if(DEFINED ENV{PYTHIAVER}) set(PYTHIA8_ROOT_DIR "${CMAKE_CURRENT_SOURCE_DIR}/../external/pythia$ENV{PYTHIAVER}" CACHE PATH "Location of Pythia8 installation") else() set(PYTHIA8_ROOT_DIR "${CMAKE_CURRENT_SOURCE_DIR}/../external/pythia8230" CACHE PATH "Location of Pythia8 installation") endif() set(Photos++_ROOT_DIR "${CMAKE_CURRENT_SOURCE_DIR}/../external/PHOTOS" CACHE PATH "Location of Photos++ installation") set(Tauola++_ROOT_DIR "${CMAKE_CURRENT_SOURCE_DIR}/../external/TAUOLA" CACHE PATH "Location of Tauola++ installation") set(PHOTOSPP_ROOT_DIR "${CMAKE_CURRENT_SOURCE_DIR}/../external/PHOTOS" CACHE PATH "Location of Photos++ installation/alternative spelling") set(TAUOLAPP_ROOT_DIR "${CMAKE_CURRENT_SOURCE_DIR}/../external/TAUOLA" CACHE PATH "Location of Tauola++ installation/alternative spelling") #Here we are looking for HepMC interfaces. Note that the OPTIONAL_COMPONENTS includes the libraries that appear only in the new TAUOLA/PHOTOS if (EVTGEN_HEPMC3) -find_package(HepMC3 REQUIRED) +find_package(HepMC3 REQUIRED HINTS ${HEPMC3_ROOT_DIR}) if(${EVTGEN_PYTHIA}) find_package(Pythia8 REQUIRED) endif() if(${EVTGEN_PHOTOS}) find_package(Photos++ REQUIRED COMPONENTS pp ppHepMC3) endif() if(${EVTGEN_TAUOLA}) find_package(Tauola++ REQUIRED COMPONENTS Fortran CxxInterface HepMC3) endif() else() find_package(HepMC2 REQUIRED) if(${EVTGEN_PYTHIA}) find_package(Pythia8 REQUIRED) endif() if(${EVTGEN_PHOTOS}) find_package(Photos++ REQUIRED OPTIONAL_COMPONENTS pp ppHepMC CxxInterface Fortran) endif() if(${EVTGEN_TAUOLA}) find_package(Tauola++ REQUIRED COMPONENTS Fortran CxxInterface OPTIONAL_COMPONENTS HepMC) endif() endif() diff --git a/cmake/Templates/EvtGenConfig.cmake.in b/cmake/Templates/EvtGenConfig.cmake.in index 623935b..5d5094f 100644 --- a/cmake/Templates/EvtGenConfig.cmake.in +++ b/cmake/Templates/EvtGenConfig.cmake.in @@ -1,8 +1,9 @@ @PACKAGE_INIT@ include("${CMAKE_CURRENT_LIST_DIR}/EvtGenTargets.cmake") set_and_check(EVTGEN_INCLUDE_DIR "@PACKAGE_INCLUDE_INSTALL_DIR@") set_and_check(EVTGEN_LIB_DIR "@PACKAGE_LIB_INSTALL_DIR@") +set_and_check(EVTGEN_DATA_DIR "@PACKAGE_DATA_INSTALL_DIR@") check_required_components("@PROJECT_NAME@") diff --git a/doc/guide.bib b/doc/guide.bib index 45d5e3f..90b4a62 100644 --- a/doc/guide.bib +++ b/doc/guide.bib @@ -1,299 +1,295 @@ @misc{Ryd97a,note={ A. Ryd, "Form Factor Measurements in B and D Decays", in Proceedings of the 2nd International Conference on B Physics and CP Violation, Honolulu, 1997. }} @misc{Ryd97b,note={ A. Ryd, "Form Factors in B and D Decays", Contributed to the 7th International Symposium on Heavy Flavor Physics, Santa Barbara, 1997. }} @misc{Ryd98a,note={ A. Ryd and D. Lange, "The EvtGen package for simulating particle decays", Contributed to the International Conference on Computing in High Energy Physics (CHEP'98), Chicago, 1998. }} @misc{Goity95a,note={ J.L. Goity and W. Roberts, Phys. Rev. {\bf D51} 3459-3477 (1995) }} @misc{Adler87,note={ J.Adler {\it et al.},(MARK III),Phys. Lett. {\bf B196}, 107 (1987).}} - -@misc{Adler87,note={ -J.Adler {\it et al.},(MARK III),Phys. Lett. {\bf B196}, 107 (1987).}} - @misc{Akers95,note={ R. Akers {\it et al.}, (OPAL), ``A study of Charm Meson Production in Semileptonic B Decays'', CERN Preprint No. CERN-PPE/95-02 (1995) (unpublished).}} @misc{Albrecht89,note={ H. Albrecht {\it et al.}, (ARGUS), Nucl. Inst. Meth. {\bf A275}, 1 (1989).}} @misc{Albrecht93,note={ H. Albrecht {\it et al.}, (ARGUS), Z. Phys. {\bf C57}, 533 (1993).}} @misc{Altarelli82,note={ G. Altarrelli {\it et al.}, Nucl. Phys. {\bf B208}, 365 (1982).}} @misc{Anjos90,note={ J.C. Anjos {\it et al.}, (E691), Phys. Rev. Lett. {\bf 65}, 2630 (1990).}} @misc{Anjos93,note={ J.C. Anjos {\it et al.}, (E691), Phys. Rev. {\bf D48}, 56 (1993).}} @misc{Avery94,note={ P. Avery {\it et al.}, (CLEO), Phys. Lett. {\bf B331}, 236 (1994).}} @misc{Barish95,note={ B. Barish {\it et al.}, (CLEO), Phys. Rev. {\bf D51}, 1014 (1995).}} @misc{Barish96,note={ B. Barish {\it et al.}, (CLEO), Phys. Rev. Lett. {\bf 76}, 1570 (1996).}} @misc{Bonn71,note={ I have lost this reference... }} @misc{Booth94,note={ S.P.~Booth, {{\it et al.}}\ (UKQCD), Phys.~Rev.~Lett.~{\bf 72}, 462 (1994); C.~Bernard, Y.~Shen, and A.~Soni, Phys.~Lett.~B {\bf 317}, 164 (1993); B.~Blok and M.~Shifman, Phys.~Rev.~D {\bf 47}, 2949 (1993); other predictions are summarized in Ref.~\cite{Richman95}.}} @misc{Buskulic95,note={ D. Buskulic {\it et al.}, (ALEPH), Phys. Lett. {\bf B345}, 103 (1995).}} @misc{Close94,note={ F.E. Close and A. Wambach, Nucl. Phys. {\bf B412}, 169 (1994).}} @misc{Duni91,note={ I. Dunietz, H. Quinn, A. Snyder, W Toki, and H.J. Lipkin, Phys. Rev. {\bf D43}, 2193 (1991).}} @misc{Dubo96,note={ J.E. Duboscq {\it et al.}, (CLEO) Phys. Rev. LEtt. {\bf 76}, 3898 (1996).}} @misc{Cap98,note={ I. Caprini {\it et al.}, Nucl.~Phys.~B~{\bf 530}, 153 (1998).}} @misc{Abe02,note={ K. Abe {\it et al.}, (Belle) Phys.~Lett.~B~{\bf 526}, 247 (2002).}} @misc{Aliev97,note={ T.M. Aliev, M. Savci and A. Ozpineci, Phys. Rev. {\bf D56}, 4260 (1997).}} @misc{Colangelo96,note={ P.Colangelo, F. De Fazio, P. Santorelli and E. Scrimieri Phys. Rev. {\bf D53}, 3672 (1996).}} @misc{Eadi88,note={ See W.T. Eadie {\it et al.}, {\it Statistical Methods in Experimental Physics}, Elsevier, New York (1988).}} @misc{Fox78,note={ G.C. Fox and S. Wolfram, Phys. Rev. Lett. {\bf 41}, 1581 (1978).}} @misc{Gilman90,note={ F.J. Gilman and R.L. Singleton, Phys. Rev. {\bf D41}, 142 (1990).}} @misc{Gangof4,note={ Gangof4. }} @misc{AlephRho,note={ The ALEPH collaboration, {\bf CERN-PPE/97013}}} @misc{3piNote,note={ S. Versill\'e, F. Le Diberder, {CP-Fitting of $B \rightarrow 3\pi$ events (BaBar Note in preparation)}}} @misc{3piBook,note={ $3\pi$ section of the BaBar Book}} @misc{AliGreub,note={ A.Ali and C.Greub, Phys.~Lett.~B~{\bf 361}, 146 (1995).}} @misc{KaganNeubert,note={ A.Kagan and M.Neubert, Euro.~Phys.~Jour~{\bf 7}, 5 1999.}} @misc{Isgur89a,note={ N. Isgur, D. Scora, B. Grinstein, and M.B. Wise, Phys. Rev. {\bf D39}, 799 (1989).}} @misc{Isgur89b,note={ N. Isgur and M.B. Wise, Phys. Lett. {\bf B232}, 113 (1989).}} @misc{Isgur90,note={ N. Isgur and M.B. Wise, Phys. Lett. {\bf B237}, 527 (1990).}} @misc{Jack64,note={ J. D. Jackson, in {\it Les Houches Lectures in High Energy Physics}, 1965 C. DeWitt and M. Jacob, eds. (Goordon and Breach, New York), 1966.}} @misc{Jaco59,note={ M. Jacob and G. C. Wick, Ann. Phys. {\bf 7}, 404 (1959).}} @misc{Korner88,note={ J.G. K\"orner and G.A. Schuler, Z. Phys. {\bf C38}, 511 (1988).}} @misc{Kubota92,note={ Y. Kubota {\it et al.}, (CLEO), Nucl. Instr. and Meth. {\bf A320}, 66 (1992).}} @misc{Lange96,note={ D. Lange and A. Ryd, CLEO Internal Note, CBX 96-6 CSN 95-345 (1996) (unpublished).}} @misc{Luke90,note={ M.E. Luke, Phys. Lett. {\bf B252}, 447 (1990).}} @misc{Menary92,note={ S. Menary, CLEO Internal Note, CBX 92-103 (1992) (unpublished).}} @misc{Neubert91,note={ M. Neubert, Phys. Lett. {\bf B264}, 455 (1991).}} @misc{Neubert92,note={ M. Neubert and V. Rieckert, Nucl. Phys. {\bf B382}, 97 (1992).}} @misc{Neubert93,note={ M. Neubert, Phys. Rep. {\bf 245}, 259 (1993).}} @misc{Renton90,note={ See P. Renton, {\it Electroweak Interactions}, Cambridge University, New York (1990).}} @misc{Rich84,note={ J.D. Richman, Cal. Tech. Preprint CALT-68-1148, (1984) (unpublished).}} @misc{Richman95,note={ J.D. Richman and P. Burchat, Rev. Mod. Phys. {\bf 67}, 893 (1995).}} @misc{Sanghera93,note={ S. Sanghera {\it et al.}, (CLEO), Phys. Rev. {\bf D47}, 791 (1993).}} @misc{Schmidt92,note={ D.M. Schmidt, ``Measurement of Charm Semileptonic Form Factors'', Ph. D. Thesis, University of California Santa Barbara (1992) (unpublished).}} @misc{Sakurai,notes={ J. J. Sakurai, {\it Modern Quantum Mechanics}, (Addison-Wesley Publishing Company, Inc.), (1985).}} @misc{Schmidt93,note={ D.M. Schmidt, R.M. Morrison, and M. Witherell, Nucl. Instr. and Meth. {\bf A328}, 547 (1993).}} @misc{Scora95,note={ D. Scora and N. Isgur, Phys. Rev. {\bf D52}, 2783 (1995).}} @misc{Voloshin92,note={ M.B. Voloshin, Phys. Rev. {\bf D46}, 3062 (1992).}} @misc{Wirbel85,note={ M. Wirbel {\it et al.}, Z. Phys. {\bf C29}, 637 (1985).}} @misc{Was92,note={ E. Richter-Was, Phys. Lett. {\bf B303}, 163, (1993). }} @misc{trksim,note={ TRKSIM is a fast Monte Carlo that uses measured efficiencies and resolutions to generate parametrized detector response for events.}} @misc{hadronic,note={ Hadronic events are identified as having atleast three charged tracks and 0.15 $E_{\rm cm}$ energy deposited in the calorimeter.}} @misc{CKM,note={ N. Cabibbo, Phys. Rev. Lett. {\bf 10}, 531 (1963); M. Kobayashi and T. Maskawa, Prog. Theor. Phys. {\bf 49}, 652 (1973).}} @misc{bdlnu,note={ CLEO Collaboration, CLEO-CONF-95-10, EPS0166 (1995).}} @misc{pdg,note={ Phys. Rev. D 50, 1253 (1994).}} @misc{pdgckm,note={ Phys. Rev. D 50, 1315 (1994) and references therein.}} @misc{Kutschke94,note={ R. Kutschke, CLEO Internal Note, CSN 94-334 (1992) (unpublished).}} @misc{Kutschke96a,note={ R. Kutschke and A. Ryd, CLEO Internal Note, CBX 96-XYZ (1996) (unpublished).}} @misc{geane,note={ Reference to the GEANE package.}} @misc{geant,note={ GEANT Detector Description and Simulation Tool, Version 3.15, CERN Program Library W5103, CERN (1993) (unpublished).}} @misc{Kutschke96b,note={ R. Kutschke and A.Ryd, CLEO Internal Note, CBX 96-20 (1996) (unpublished).}} @misc{Avery91,note={ P. Avery, CLEO Internal Note, CBX 91-74 (1991) (unpublished).}} @misc{Fruhwirth88,note={ R. Fruhwirth, HEPHY-PUB-516/88, ``Application of Filter Methods to the Reconstruction of Tracks and Vertices in Events of Experimental High Energy Physics'', Ph. D. Thesis (1988) (unpublished).}} @misc{Billoir83,note={ P. Billoir, Nucl. Instr. Meth. {\bf 225}, 352 (1983).}} @misc{Billoir90,note={ P. Billoir and S. Qian, Nucl. Instr. Meth. {\bf A225}, 219 (1990).}} @misc{Kalman61,note={ R.E. Kalman, J. Basic Eng. {\bf 82}, 34 (1961); R.E. Kalman and R.S. Bucy, ibid., 95 (1961).}} @misc{Avery92,note={ P. Avery, CLEO Internal Note, CBX 92-40 (1992) (unpublished).}} @misc{Jones96,note={ S.L. Jones, ``Semileptonic B Meson to Excited Charm Meson Decay'', Ph. D. Thesis, Cornell University (1996) (unpublished).}} @misc{Korchemsky00,note={ G.P.\ Korchemsky, D.\ Pirjol, and T. \ Yan, {\em Phys. Rev.\/} {\bf D61}, 114510 (2000).}} @misc{jetset,note={ T. Sj\"ostrand, Computer Physics Commun. {\bf 82} 74 (1994).}} @misc{qq,note={ See http://www.lns.cornell.edu/public/CLEO/soft/QQ. }} @misc{clhep,note={ What can be referenced for CLHEP? }} @misc{root,note={ http://root.cern.ch/ }} diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index e78aaec..058eedc 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -1,181 +1,181 @@ # Use glob to find the sources for the main and external libraries file(GLOB EVTGEN_SOURCES ${CMAKE_CURRENT_SOURCE_DIR}/*.cpp ${CMAKE_CURRENT_SOURCE_DIR}/EvtGenBase/*.cpp ${CMAKE_CURRENT_SOURCE_DIR}/EvtGenModels/*.cpp ) file(GLOB EVTGEN_EXTERNAL_SOURCES ${CMAKE_CURRENT_SOURCE_DIR}/EvtGenExternal/*.cpp ) # Add the main EvtGen library... add_library(objlib OBJECT ${EVTGEN_SOURCES}) set_target_properties(objlib PROPERTIES POSITION_INDEPENDENT_CODE 1) target_include_directories(objlib PRIVATE ${CMAKE_SOURCE_DIR}) target_compile_definitions(objlib PRIVATE EVTGEN_CPP11) if (EVTGEN_HEPMC3) target_compile_definitions(objlib PRIVATE EVTGEN_HEPMC3) target_include_directories(objlib PRIVATE ${HEPMC3_INCLUDE_DIR}) else() target_include_directories(objlib PRIVATE ${HEPMC2_INCLUDE_DIR}) endif() add_library(EvtGen SHARED $) set_target_properties(EvtGen PROPERTIES OUTPUT_NAME EvtGen) set_target_properties(EvtGen PROPERTIES VERSION ${PROJECT_VERSION} SOVERSION ${PROJECT_VERSION_MAJOR} ) set_target_properties(EvtGen PROPERTIES LIBRARY_OUTPUT_DIRECTORY ${PROJECT_BINARY_DIR}/${CMAKE_INSTALL_LIBDIR}) target_include_directories(EvtGen PUBLIC $ $) if (EVTGEN_HEPMC3) target_include_directories(EvtGen PUBLIC ${HEPMC3_INCLUDE_DIR}) target_link_libraries(EvtGen ${HEPMC3_LIB} ${HEPMC3_SEARCH_LIB} ) else() target_include_directories(EvtGen PUBLIC ${HEPMC2_INCLUDE_DIR}) target_link_libraries(EvtGen ${HEPMC2_LIBRARIES}) endif() target_compile_definitions(EvtGen PUBLIC EVTGEN_CPP11) add_library(EvtGenStatic STATIC $) set_target_properties(EvtGenStatic PROPERTIES OUTPUT_NAME EvtGen) set_target_properties(EvtGenStatic PROPERTIES ARCHIVE_OUTPUT_DIRECTORY ${PROJECT_BINARY_DIR}/${CMAKE_INSTALL_LIBDIR}/archive) target_include_directories(EvtGenStatic PUBLIC $ $) if (EVTGEN_HEPMC3) target_include_directories(EvtGenStatic PUBLIC ${HEPMC3_INCLUDE_DIR}) target_link_libraries(EvtGenStatic ${HEPMC3_LIB} ${HEPMC3_SEARCH_LIB} ) else() target_include_directories(EvtGenStatic PUBLIC ${HEPMC2_INCLUDE_DIR}) target_link_libraries(EvtGenStatic ${HEPMC2_LIBRARIES}) endif() target_compile_definitions(EvtGenStatic PUBLIC EVTGEN_CPP11) # Add the EvtGenExternal library... if( ${EVTGEN_PYTHIA} OR ${EVTGEN_PHOTOS} OR ${EVTGEN_TAUOLA} ) add_library(objlib_ext OBJECT ${EVTGEN_EXTERNAL_SOURCES}) set_target_properties(objlib_ext PROPERTIES POSITION_INDEPENDENT_CODE 1) target_include_directories(objlib_ext PRIVATE ${CMAKE_SOURCE_DIR}) if (EVTGEN_HEPMC3) target_include_directories(objlib_ext PUBLIC ${HEPMC3_INCLUDE_DIR}) target_compile_definitions(objlib_ext PRIVATE EVTGEN_HEPMC3) else() target_include_directories(objlib_ext PUBLIC ${HEPMC2_INCLUDE_DIR}) endif() target_compile_definitions(objlib_ext PRIVATE EVTGEN_CPP11) if(${EVTGEN_PYTHIA}) target_include_directories(objlib_ext PRIVATE ${PYTHIA8_INCLUDE_DIRS}) target_compile_definitions(objlib_ext PRIVATE EVTGEN_PYTHIA) endif() if(${EVTGEN_PHOTOS}) target_include_directories(objlib_ext PRIVATE ${Photos++_INCLUDE_DIRS}) target_compile_definitions(objlib_ext PRIVATE EVTGEN_PHOTOS) endif() if(${EVTGEN_TAUOLA}) target_include_directories(objlib_ext PRIVATE ${Tauola++_INCLUDE_DIRS}) target_compile_definitions(objlib_ext PRIVATE EVTGEN_TAUOLA) endif() add_library(EvtGenExternal SHARED $) set_target_properties(EvtGenExternal PROPERTIES OUTPUT_NAME EvtGenExternal) set_target_properties(EvtGenExternal PROPERTIES VERSION ${PROJECT_VERSION} SOVERSION ${PROJECT_VERSION_MAJOR} ) set_target_properties(EvtGenExternal PROPERTIES LIBRARY_OUTPUT_DIRECTORY ${PROJECT_BINARY_DIR}/${CMAKE_INSTALL_LIBDIR}) if(${EVTGEN_PYTHIA}) target_link_libraries(EvtGenExternal ${PYTHIA8_LIBRARIES}) endif() if (EVTGEN_HEPMC3) target_link_libraries(EvtGenExternal ${HEPMC3_LIB} ${HEPMC3_SEARCH_LIB} ) if(${EVTGEN_PHOTOS}) target_link_libraries(EvtGenExternal ${Photos++_pp_LIBRARY} ${Photos++_ppHepMC3_LIBRARY} ) endif() if(${EVTGEN_TAUOLA}) target_link_libraries(EvtGenExternal ${Tauola++_CxxInterface_LIBRARY} ${Tauola++_Fortran_LIBRARY} ${Tauola++_HepMC3_LIBRARY}) endif() else() target_link_libraries(EvtGenExternal ${HEPMC2_LIBRARIES}) if(${EVTGEN_PHOTOS}) #Photos should always have ppHepMC for compilation with HepMC2 if (Photos++_pp_FOUND AND Photos++_ppHepMC_FOUND ) message(STATUS "EvtGen: PHOTOS has pp and ppHepMC components") target_link_libraries(EvtGenExternal ${Photos++_pp_LIBRARY} ${Photos++_ppHepMC_LIBRARY}) else() if(Photos++_CxxInterface_FOUND AND Photos++_Fortran_FOUND ) message(STATUS "EvtGen: PHOTOS has CxxInterface and Fortran components") target_link_libraries(EvtGenExternal ${Photos++_CxxInterface_LIBRARY} ${Photos++_Fortran_LIBRARY}) else() message(ERROR "EvtGen: PHOTOS lacks pp+ppHepMC or CxxInterface+Fortran components") endif() endif() endif() if(${EVTGEN_TAUOLA}) target_link_libraries(EvtGenExternal ${Tauola++_CxxInterface_LIBRARY} ${Tauola++_Fortran_LIBRARY}) #The old versions of Tauola don't have HepMC, the HepMC2 interface is in CxxInterface if (Tauola++_HepMC_FOUND) target_link_libraries(EvtGenExternal ${Tauola++_HepMC_LIBRARY}) endif() endif() endif() add_library(EvtGenExternalStatic STATIC $) set_target_properties(EvtGenExternalStatic PROPERTIES OUTPUT_NAME EvtGenExternal) set_target_properties(EvtGenExternalStatic PROPERTIES ARCHIVE_OUTPUT_DIRECTORY ${PROJECT_BINARY_DIR}/${CMAKE_INSTALL_LIBDIR}/archive) if(${EVTGEN_PYTHIA}) target_link_libraries(EvtGenExternalStatic ${PYTHIA8_LIBRARIES}) endif() if (EVTGEN_HEPMC3) target_link_libraries(EvtGenExternalStatic ${HEPMC3_LIB} ${HEPMC3_SEARCH_LIB} ) if(${EVTGEN_PHOTOS}) target_link_libraries(EvtGenExternalStatic ${Photos++_pp_LIBRARY} ${Photos++_ppHepMC3_LIBRARY}) endif() if(${EVTGEN_TAUOLA}) target_link_libraries(EvtGenExternalStatic ${Tauola++_CxxInterface_LIBRARY} ${Tauola++_Fortran_LIBRARY} ${Tauola++_HepMC3_LIBRARY}) endif() else() if(${EVTGEN_PHOTOS}) if (Photos++_pp_FOUND AND Photos++_ppHepMC_FOUND ) message(STATUS "EvtGen: PHOTOS has pp and ppHepMC components") target_link_libraries(EvtGenExternal ${Photos++_pp_LIBRARY} ${Photos++_ppHepMC_LIBRARY}) else() if(Photos++_CxxInterface_FOUND AND Photos++_Fortran_FOUND ) message(STATUS "EvtGen: PHOTOS has CxxInterface and Fortran components") target_link_libraries(EvtGenExternal ${Photos++_CxxInterface_LIBRARY} ${Photos++_Fortran_LIBRARY}) else() message(ERROR "EvtGen: PHOTOS lacks pp+ppHepMC or CxxInterface+Fortran components") endif() endif() endif() if(${EVTGEN_TAUOLA}) target_link_libraries(EvtGenExternalStatic ${Tauola++_CxxInterface_LIBRARY} ${Tauola++_Fortran_LIBRARY}) if (Tauola++_HepMC_FOUND) target_link_libraries(EvtGenExternalStatic ${Tauola++_HepMC_LIBRARY} ) endif() endif() target_link_libraries(EvtGenExternalStatic ${HEPMC2_LIBRARIES}) endif() endif() # Install the libraries install( TARGETS EvtGen EvtGenStatic EXPORT "EvtGenTargets" LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} - ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}/archive + ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} ) if( ${EVTGEN_PYTHIA} OR ${EVTGEN_PHOTOS} OR ${EVTGEN_TAUOLA} ) install( TARGETS EvtGenExternal EvtGenExternalStatic EXPORT "EvtGenTargets" LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} - ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}/archive + ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} ) endif()