Skip to content

Commit 0cf03e7

Browse files
sly2jveprblruse-travelersimonge
authored
Add SimPulse data type for storing simulated pulses pre-digitization (#106)
### Briefly, what does this PR introduce? This PR adds a new data type, `edm4eic::SimPulse`, to represent simulated pulses before digitization. The new structure is modeled consistently with the edmhep simulated hit types and aligns with existing waveform structures such as `edm4hep::RawTimeSeries` (generic digitization output) and `edm4hep::TimeSeries` (generic measured time series). `SimPulse` defines four one-to-many relations relations: - **`SimCalorimeterHit`**: Pulses can be constructed from contributions of one or more simulated calorimeter hits. - **`SimTrackerHit`**: Pulses can be constructed from one or more simulated tracker hits. - **`SimPulse`**: Pulses can be constructed out of other pulses. - **`MCParticle`**: Each pulse can be attributed to a single MCParticle (primary pulse), multiple MCParticles (overlayed pulses), or zero MCParticles (noise pulse). Storing pulses at the simulation level ensures conceptual clarity and consistency within our data model. The simulated pulse data to be stored in this structure have no equivalent in real detector output, and are therefore not digitization output. By using a Simulation structure, we gain direct `Relation` support with other simulation entities, enabling efficient backward navigation through the simulation chain. While Associations are used to link digitization and reconstruction structures to simulation, Relations are preferred for internal connections within the same domain (e.g. within Simulation or within Reconstruction). This design avoids introducing redundant Association types and keeps the data model consistent, clean and efficient. ### What kind of change does this PR introduce? - [ ] Bug fix (issue #__) - [X] New feature (issue #__) - [ ] Documentation update - [ ] Other: __ ### Please check if this PR fulfills the following: - [ ] Tests for the changes have been added - [X] Documentation has been added / updated - [X] Changes have been communicated to collaborators ### Does this PR introduce breaking changes? What changes might users need to make to their code? No ### Does this PR change default behavior? No --------- Co-authored-by: Dmitry Kalinkin <dmitry.kalinkin@gmail.com> Co-authored-by: Derek M Anderson <derek.murphy.anderson@protonmail.com> Co-authored-by: Simon Gardner <simon.gardner@glasgow.ac.uk>
1 parent f0805ab commit 0cf03e7

File tree

2 files changed

+24
-3
lines changed

2 files changed

+24
-3
lines changed

CMakeLists.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ project(EDM4EIC
77
LANGUAGES CXX)
88

99
SET( ${PROJECT_NAME}_VERSION_MAJOR 8 )
10-
SET( ${PROJECT_NAME}_VERSION_MINOR 0 )
10+
SET( ${PROJECT_NAME}_VERSION_MINOR 1 )
1111
SET( ${PROJECT_NAME}_VERSION_PATCH 0 )
1212
SET( ${PROJECT_NAME}_VERSION "${${PROJECT_NAME}_VERSION_MAJOR}.${${PROJECT_NAME}_VERSION_MINOR}.${${PROJECT_NAME}_VERSION_PATCH}" )
1313

edm4eic.yaml

Lines changed: 23 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,9 +7,9 @@
77
## Patch level changes are required to be schema invariant.
88
##
99
## If there are schema version changes that can be evolved, see the podio documentation
10-
## for an example: https://github.com/hegner/podio/blob/master/tests/schema_evolution.yaml
10+
## for an example: https://github.com/AIDASoft/podio/tree/master/tests/schema_evolution
1111
##
12-
schema_version: 800
12+
schema_version: 801
1313

1414
options :
1515
# should getters / setters be prefixed with get / set?
@@ -203,6 +203,27 @@ datatypes:
203203
- float floatData // Iff elementType==1, values are stored here
204204
- int64_t int64Data // Iff elementType==7, values are stored here
205205

206+
## ==========================================================================
207+
## Simulation info
208+
## ==========================================================================
209+
210+
edm4eic::SimPulse:
211+
Description: "Simulated pulse prior to digitization."
212+
Author: "D. Anderson, S. Gardner, S. Joosten., D. Kalinkin"
213+
Members:
214+
- uint64_t cellID // ID of the readout cell for this pulse.
215+
- float integral // Total pulse integral in relevant units.
216+
- edm4hep::Vector3f position // Position the pulse is evaluated in world coordinates [mm].
217+
- float time // Start time for the pulse in [ns].
218+
- float interval // Time interval between amplitude values [ns].
219+
VectorMembers:
220+
- float amplitude // Pulse amplitude in relevant units, sum of amplitude values equals integral
221+
OneToManyRelations:
222+
- edm4hep::SimCalorimeterHit calorimeterHits // SimCalorimeterHits used to create this pulse
223+
- edm4hep::SimTrackerHit trackerHits // SimTrackerHits used to create this pulse
224+
- edm4eic::SimPulse pulses // SimPulses used to create this pulse
225+
- edm4hep::MCParticle particles // MCParticle that caused the pulse
226+
206227
## ==========================================================================
207228
## Particle info
208229
## ==========================================================================

0 commit comments

Comments
 (0)