diff --git a/GaudiExamples/src/PartProp/PartPropExa.h b/GaudiExamples/src/PartProp/PartPropExa.h
index fa337283a3af5b96d68ae883f314635e8905fd88..18fbd9b6877706342c924f6f0811f2f74b8c5778 100644
--- a/GaudiExamples/src/PartProp/PartPropExa.h
+++ b/GaudiExamples/src/PartProp/PartPropExa.h
@@ -12,7 +12,15 @@
 #define GAUDIEXAMPLES_PARTPROPEXA_H 1
 
 #include "GaudiKernel/Algorithm.h"
-#include "HepPDT/CommonParticleData.hh"
+#if HEPPDT_VERSION_MAJOR == 2
+#  include "HepPDT/CommonParticleData.hh"
+#endif
+#if HEPPDT_VERSION_MAJOR == 3
+#  include "HepPDT/ParticleData.hh"
+namespace HepPDT {
+  using CommonParticleData = ParticleData;
+}
+#endif
 #include "HepPDT/ProcessUnknownID.hh"
 
 class IPartPropSvc;
diff --git a/cmake/modules/FindHepPDT.cmake b/cmake/modules/FindHepPDT.cmake
index 90e54f520247b0423625dabd84d7c790e14b5632..8f9f69e27110c31b1e8ab09ac1584f910bb7b149 100644
--- a/cmake/modules/FindHepPDT.cmake
+++ b/cmake/modules/FindHepPDT.cmake
@@ -31,10 +31,20 @@ endif()
 
 find_path(HEPPDT_INCLUDE_DIR HepPDT/ParticleData.hh
           HINTS $ENV{HEPPDT_ROOT_DIR}/include ${HEPPDT_ROOT_DIR}/include)
+set(HEPPDT_VERSION 0.0.0)
+if (HEPPDT_INCLUDE_DIR)
+  if (EXISTS ${HEPPDT_INCLUDE_DIR}/HepPDT/defs.h)
+    file(STRINGS ${HEPPDT_INCLUDE_DIR}/HepPDT/defs.h HEPPDT_VERSION_STRING_CONTENT REGEX "^#define[ ]+PACKAGE_VERSION[ ]+\"" )
+    if (HEPPDT_VERSION_STRING_CONTENT)
+      string(REGEX MATCH "[1234567890\.]+[a-zA-Z]*" HEPPDT_VERSION ${HEPPDT_VERSION_STRING_CONTENT})
+    endif()
+  endif()
+endif()
+
 find_library(HEPPDT_PDT_LIBRARY NAMES HepPDT
-          HINTS $ENV{HEPPDT_ROOT_DIR}/lib ${HEPPDT_ROOT_DIR}/lib)
+          HINTS $ENV{HEPPDT_ROOT_DIR}/lib HINTS $ENV{HEPPDT_ROOT_DIR}/lib64 ${HEPPDT_ROOT_DIR}/lib ${HEPPDT_ROOT_DIR}/lib64)
 find_library(HEPPDT_PID_LIBRARY NAMES HepPID
-          HINTS $ENV{HEPPDT_ROOT_DIR}/lib ${HEPPDT_ROOT_DIR}/lib)
+          HINTS $ENV{HEPPDT_ROOT_DIR}/lib $ENV{HEPPDT_ROOT_DIR}/lib64 ${HEPPDT_ROOT_DIR}/lib ${HEPPDT_ROOT_DIR}/lib64)
 
 set(HEPPDT_LIBRARIES ${HEPPDT_PDT_LIBRARY} ${HEPPDT_PID_LIBRARY})
 
@@ -43,10 +53,11 @@ set(HEPPDT_INCLUDE_DIRS ${HEPPDT_INCLUDE_DIR})
 # handle the QUIETLY and REQUIRED arguments and set HEPPDT_FOUND to TRUE if
 # all listed variables are TRUE
 INCLUDE(FindPackageHandleStandardArgs)
-FIND_PACKAGE_HANDLE_STANDARD_ARGS(HepPDT DEFAULT_MSG HEPPDT_INCLUDE_DIR HEPPDT_LIBRARIES)
+FIND_PACKAGE_HANDLE_STANDARD_ARGS(HepPDT REQUIRED_VARS HEPPDT_INCLUDE_DIR HEPPDT_LIBRARIES 
+                                  VERSION_VAR HEPPDT_VERSION)
 
 mark_as_advanced(HEPPDT_FOUND HEPPDT_INCLUDE_DIR HEPPDT_LIBRARIES
-                 HEPPDT_PDT_LIBRARY HEPPDT_PID_LIBRARY)
+                 HEPPDT_PDT_LIBRARY HEPPDT_PID_LIBRARY HEPPDT_VERSION)
 
 # Modernisation: create an interface target to link against
 if(TARGET HepPDT::heppdt)
@@ -56,6 +67,11 @@ if(HEPPDT_FOUND)
   add_library(HepPDT::heppdt IMPORTED INTERFACE)
   target_include_directories(HepPDT::heppdt SYSTEM INTERFACE "${HEPPDT_INCLUDE_DIRS}")
   target_link_libraries(HepPDT::heppdt INTERFACE "${HEPPDT_LIBRARIES}")
+  if (${HEPPDT_VERSION} VERSION_GREATER_EQUAL "3")
+    set_property(TARGET HepPDT::heppdt APPEND PROPERTY INTERFACE_COMPILE_DEFINITIONS HEPPDT_VERSION_MAJOR=3)
+  else()
+    set_property(TARGET HepPDT::heppdt APPEND PROPERTY INTERFACE_COMPILE_DEFINITIONS HEPPDT_VERSION_MAJOR=2)
+  endif()
   # Display the imported target for the user to know
   if(NOT ${CMAKE_FIND_PACKAGE_NAME}_FIND_QUIETLY)
     message(STATUS "  Import target: HepPDT::heppdt")