Skip to content

LDMX File Structure

AminaJLi edited this page Feb 14, 2023 · 4 revisions

All analyses will involve manipulating the information we have stored for simulated events and the ROOT files containing this information can be difficult to navigate. This is an overview of how the (current) files are structured to help get people started. Opening a ROOT file in a TBrowser can also be very helpful to visually see the structure.

Level 0: File

The name of the file should give information about the conditions simulated.
example: 4gev_1e_tskim_pn_ldmx-det-v13_run2967.root

  • 4gev = beam electron energy is 4 GeV
  • 1e = 1 electron on target at a time (no pileup)
  • tskim = trigger skimmed, events only saved if it passes the trigger (energy in first 20 layers of ECal < 1.5 GeV)
  • pn = photonuclear, background events with a photonuclear interaction
  • ldmx-det-v13 = version 13 of the detector geometry
  • run 2967 = run number (which is used for seeding) is 2967

Level 1: Tree

Typically there are two trees in every file, LDMX_Run and LDMX_Events. You will almost certainly only need to access LDMX_Events for informative variables.

Level 2: Branches

The different collections are stored as separate branches, roughly corresponding to different subdetectors. EcalVeto is the most relevant for our work on the ECal, containing the variables that the can be measured to use in vetoing. Note that the exact collection name often has the software version and detector version appended.

Level 3: Leaves

Within the collections are the actual variables. These can be ints, vectors, or custom objects (SimParticle, SimCalorimeterHit, etc) defined in ldmx-sw. Some of the collections and their variables are defined below.

Note: The default energy scale for most variables is currently MeV. If the variable only has values of 0 or 1, it's a "flag" or "tag" type variable. 0 means "no" or "false" and 1 means "yes" or "true" for variables like isNoise and passesVeto.

  • EcalVeto: A collection of EcalVetoResult objects (defined in ldmx-sw/Ecal/[src/include]/Ecal/Event) with variables filled by the EcalVetoProcessor (found in ldmx-sw/Ecal/[src/include]/Ecal/).
  • SimParticles: A map connecting SimParticle objects (defined in ldmx-sw/SimCore/[src/include]/SimCore/Event) to an integer track ID. When reading in the leaves, SimParticles.first represents the track ID and simParticles.second represents the SimParticle object.
  • _____SimHits: A collection of SimCalorimeterHit objects (defined in ldmx-sw/SimCore/[src/include]/SimCore/Event) that represent a simulated hit in the subdetector. These are "truth" level variables and contain information we would not have when actually running, such as the PDG ID for the particles that contribute to the hit.
  • _____RecHits: A processed version of the SimHit collection that replicates what would be seen in the experiment. For the ECal, this collection contains EcalHit objects (defined in ldmx-sw/Ecal/[src/include]/Ecal/Event).
  • _____ScoringPlaneHits: Hits from the scoring planes around each subdetector. The scoring planes are not real physical objects and will not be in the actual experiment. They were implemented to provide truth information about particles moving from one subdetector region to another.

Clone this wiki locally