diff --git a/CMakeLists.txt b/CMakeLists.txt
new file mode 100644
index 0000000000000000000000000000000000000000..cd376566333469f4995c145f78ec30ccfd60985a
--- /dev/null
+++ b/CMakeLists.txt
@@ -0,0 +1,47 @@
+# Reference:
+#   - https://github.com/eic/EDM4eic/blob/main/CMakeLists.txt
+
+cmake_minimum_required(VERSION 3.23)
+
+##############################################################################
+# Project metadata
+##############################################################################
+project(EDM4cepc)
+
+SET( ${PROJECT_NAME}_VERSION_MAJOR 0 )
+SET( ${PROJECT_NAME}_VERSION_MINOR 1 )
+SET( ${PROJECT_NAME}_VERSION_PATCH 0 )
+SET( ${PROJECT_NAME}_VERSION  "${${PROJECT_NAME}_VERSION_MAJOR}.${${PROJECT_NAME}_VERSION_MINOR}.${${PROJECT_NAME}_VERSION_PATCH}" )
+
+# C++ standard
+set(CMAKE_CXX_STANDARD 17 CACHE STRING "Set the C++ standard to be used")
+if(NOT CMAKE_CXX_STANDARD MATCHES "17|20")
+  message(FATAL_ERROR "Unsupported C++ standard: ${CMAKE_CXX_STANDARD}")
+endif()
+set(CMAKE_CXX_STANDARD_REQUIRED ON)
+set(CMAKE_CXX_EXTENSIONS OFF)
+
+include(GNUInstallDirs)
+
+
+##############################################################################
+# Dependencies
+##############################################################################
+
+find_package(podio REQUIRED)
+include_directories(${podio_INCLUDE_DIR})
+
+find_package(EDM4HEP REQUIRED)
+
+find_package(ROOT 6 REQUIRED COMPONENTS Core RIO Tree)
+include(${ROOT_USE_FILE})
+
+##############################################################################
+# Generate code
+##############################################################################
+
+PODIO_GENERATE_DATAMODEL(
+  edm4cepc edm4cepc.yaml headers sources 
+  UPSTREAM_EDM edm4hep:${EDM4HEP_DATA_DIR}/edm4hep.yaml
+  IO_BACKEND_HANDLERS ${PODIO_IO_HANDLERS}
+)
diff --git a/edm4cepc.yaml b/edm4cepc.yaml
new file mode 100644
index 0000000000000000000000000000000000000000..050a2ac4f3e153a72f6ec0a1040d07ea28e0bb33
--- /dev/null
+++ b/edm4cepc.yaml
@@ -0,0 +1,22 @@
+---
+schema_version: 1
+
+options:
+  getSyntax: True
+  exposePODMembers: False
+  includeSubfolder: True
+
+datatypes:
+
+  #-------------  RecTof
+  edm4hep::RecTof:
+    Description: "Reconstructed TOF (time of flight) info."
+    Author: "EDM4hep authors"
+    Members:
+      - float time [ns]                      // time measurement
+      - std::array<float, 5> timeExp [ns]    // expected time for e(0),mu(1),pi(2),K(3),p(4)
+      - float sigma                          // time resolution
+      - std::array<float, 5> pathLength [mm] // length of flight for e(0),mu(1),pi(2),K(3),p(4)
+      - edm4hep::Vector3d position [mm]      // extrapolated hit position
+    OneToOneRelations:
+      - edm4hep::Track track                 // the corresponding track