Warning, /firebird/packages/epic/src/epic-data-catalog.ts is written in an unsupported language. File is not indexed.
0001 /**
0002 * The ePIC datasets of the data selector: presets, physics facets, and the
0003 * geometry and event URL lists of the manual pick. An installation without
0004 * the ePIC pack shows the Manual tab only, or contributes its own
0005 * `withDataCatalog()`.
0006 *
0007 * Event files live under https://seeeic.org/d/ (DEX 1.0, `.v1.firebird.zip`),
0008 * so the catalog works in any app that installs the pack.
0009 *
0010 * Tags come from the file names (`py8dis-nc_10x100_minq2-1000_...`): process,
0011 * beam energies, the minimum Q2 of the generator cut, and whether the file
0012 * holds simulated trajectories, reconstructed tracks, or both.
0013 */
0014
0015 import type { DataCatalog, DataCatalogEntry } from '@dexvis/firebird-core';
0016 import { FirebirdFeature, withDataCatalog } from '@dexvis/firebird-ng';
0017
0018 const TGEO = 'https://seeeic.org/g/epic/artifacts/tgeo';
0019 const DATA = 'https://seeeic.org/d';
0020
0021 const FULL_DETECTOR = `${TGEO}/epic_craterlake.root`;
0022 const TRACKING_ONLY = `${TGEO}/epic_craterlake_tracking_only.root`;
0023
0024 /** Pythia 8 DIS sample with a full-detector geometry. */
0025 function pythiaDis(
0026 process: 'dis-nc' | 'dis-cc',
0027 beam: string,
0028 minQ2: string,
0029 events: string,
0030 data: 'sim' | 'reco' | 'sim+reco' = 'sim',
0031 geometry = FULL_DETECTOR,
0032 ): DataCatalogEntry {
0033 const processLabel = process === 'dis-nc' ? 'DIS NC' : 'DIS CC';
0034 const dataLabel = { sim: 'trajectories', reco: 'reconstructed tracks', 'sim+reco': 'trajectories + tracks' }[data];
0035 return {
0036 name: `${processLabel} ${beam} minQ2=${minQ2} ${dataLabel}`,
0037 description: `Pythia 8 ${processLabel}, e×p beams ${beam} GeV, Q² > ${minQ2} GeV², 5 events, ${dataLabel}.`,
0038 geometry,
0039 events,
0040 tags: { process, beam, minQ2, data },
0041 };
0042 }
0043
0044 export const EPIC_DATA_CATALOG: DataCatalog = {
0045 facets: [
0046 {
0047 key: 'process',
0048 label: 'Process',
0049 values: {
0050 'dis-nc': {
0051 label: 'DIS NC',
0052 description: 'Deep inelastic scattering, neutral current: the electron exchanges a photon or Z with the proton and stays an electron.',
0053 link: 'https://en.wikipedia.org/wiki/Deep_inelastic_scattering',
0054 },
0055 'dis-cc': {
0056 label: 'DIS CC',
0057 description: 'Deep inelastic scattering, charged current: the electron exchanges a W and leaves as a neutrino, so no scattered electron is seen.',
0058 link: 'https://en.wikipedia.org/wiki/Deep_inelastic_scattering',
0059 },
0060 'background': {
0061 label: 'Beam background',
0062 description: 'Electron and hadron beam-gas background events overlaid on a physics frame.',
0063 },
0064 'dirc-optical': {
0065 label: 'DIRC optical photons',
0066 description: 'Cherenkov photons propagated through the DIRC bars, for detector studies.',
0067 },
0068 },
0069 },
0070 {
0071 key: 'beam',
0072 label: 'Beam',
0073 values: {
0074 '5x41': { label: '5 × 41', description: 'Electron 5 GeV on proton 41 GeV.' },
0075 '10x100': { label: '10 × 100', description: 'Electron 10 GeV on proton 100 GeV.' },
0076 '18x275': { label: '18 × 275', description: 'Electron 18 GeV on proton 275 GeV.' },
0077 },
0078 },
0079 {
0080 key: 'minQ2',
0081 label: 'Q² cut',
0082 values: {
0083 '1': { label: 'Q² > 1', description: 'Generator cut Q² > 1 GeV²: mostly low-angle scattering.' },
0084 '100': { label: 'Q² > 100', description: 'Generator cut Q² > 100 GeV².' },
0085 '1000': { label: 'Q² > 1000', description: 'Generator cut Q² > 1000 GeV²: hard scattering, electron and jet at large angles.' },
0086 },
0087 },
0088 {
0089 key: 'data',
0090 label: 'Content',
0091 values: {
0092 'sim': { label: 'Trajectories', description: 'Geant4 trajectories of the simulated particles.' },
0093 'reco': { label: 'Reconstructed tracks', description: 'Tracks from the reconstruction, with the tracking-only geometry.' },
0094 'sim+reco': { label: 'Trajectories + tracks', description: 'Simulated trajectories and reconstructed tracks in one file.' },
0095 },
0096 },
0097 ],
0098 entries: [
0099 {
0100 name: 'Full ePIC detector geometry (no events)',
0101 description: 'The complete ePIC detector, nothing loaded as events.',
0102 geometry: FULL_DETECTOR,
0103 },
0104 pythiaDis('dis-nc', '10x100', '1000', `${DATA}/py8dis-nc_10x100_minq2-1000_minp-250mev_nevt-5.v1.firebird.zip`),
0105 pythiaDis('dis-nc', '10x100', '1', `${DATA}/py8dis-nc_10x100_minq2-1_minp-250mev_nevt-5.v1.firebird.zip`),
0106 pythiaDis('dis-nc', '18x275', '1', `${DATA}/py8dis-nc_18x275_minq2-1_minp-250mev_nevt-5.v1.firebird.zip`),
0107 pythiaDis('dis-nc', '18x275', '1000', `${DATA}/py8dis-nc_18x275_minq2-1000_minp-250mev_nevt-5.v1.firebird.zip`),
0108 pythiaDis('dis-nc', '5x41', '100', `${DATA}/py8dis-nc_5x41_minq2-100_minp-250mev_nevt-5.v1.firebird.zip`),
0109 pythiaDis('dis-nc', '10x100', '1000', `${DATA}/reco_py8dis-nc_10x100_minq2-1000_minp-250mev_nevt-5.v1.firebird.zip`, 'reco', TRACKING_ONLY),
0110 pythiaDis('dis-nc', '10x100', '1000', `${DATA}/comb_py8dis-nc_10x100_minq2-1000_minp-250mev_nevt-5.v1.firebird.zip`, 'sim+reco', TRACKING_ONLY),
0111 pythiaDis('dis-cc', '5x41', '1', `${DATA}/py8_dis-cc_5x41_minq2-1_minp-150mev_vtxcut-5m_nevt-5.v1.firebird.zip`),
0112 pythiaDis('dis-cc', '5x41', '100', `${DATA}/py8_dis-cc_5x41_minq2-100_minp-150mev_vtxcut-5m_nevt-5.v1.firebird.zip`),
0113 pythiaDis('dis-cc', '10x100', '1', `${DATA}/py8_dis-cc_10x100_minq2-1_minp-150mev_vtxcut-5m_nevt-5.v1.firebird.zip`),
0114 pythiaDis('dis-cc', '10x100', '100', `${DATA}/py8_dis-cc_10x100_minq2-100_minp-150mev_vtxcut-5m_nevt-5.v1.firebird.zip`),
0115 pythiaDis('dis-cc', '10x100', '1000', `${DATA}/py8_dis-cc_10x100_minq2-1000_minp-150mev_vtxcut-5m_nevt-5.v1.firebird.zip`),
0116 pythiaDis('dis-cc', '18x275', '1', `${DATA}/py8_dis-cc_18x275_minq2-1_minp-150mev_vtxcut-5m_nevt-5.v1.firebird.zip`),
0117 pythiaDis('dis-cc', '18x275', '100', `${DATA}/py8_dis-cc_18x275_minq2-100_minp-150mev_vtxcut-5m_nevt-5.v1.firebird.zip`),
0118 pythiaDis('dis-cc', '18x275', '1000', `${DATA}/py8_dis-cc_18x275_minq2-1000_minp-150mev_vtxcut-5m_nevt-5.v1.firebird.zip`),
0119 {
0120 name: 'Event + beam background 10x100 (large file)',
0121 description: 'A DIS event with electron and hadron beam-gas background overlaid. Tens of thousands of particles: expect a long load.',
0122 geometry: FULL_DETECTOR,
0123 events: `${DATA}/background_py6_10x100_egas_bgas.v1.firebird.zip`,
0124 tags: { process: 'background', beam: '10x100', data: 'sim' },
0125 },
0126 {
0127 name: 'DIRC optical photons',
0128 description: 'Cherenkov photons inside the DIRC bars.',
0129 geometry: `${TGEO}/epic_dirc_only.root`,
0130 events: `${DATA}/dirc_optical.v1.firebird.zip`,
0131 tags: { process: 'dirc-optical', data: 'sim' },
0132 },
0133 ],
0134 geometrySources: [
0135 'epic_craterlake', 'epic_inner_detector', 'epic_craterlake_tracking_only', 'epic_calorimeters',
0136 'epic_pid_only', 'epic_forward_detectors', 'epic_ip6', 'epic_ip6_extended', 'epic_craterlake_no_bhcal',
0137 'epic_full', 'epic_bhcal', 'epic_dirc_only', 'epic_drich_only', 'epic_forward_detectors_with_inserts',
0138 'epic_imaging_only', 'epic_lfhcal_only', 'epic_lfhcal_with_insert', 'epic_mrich_only', 'epic_pfrich_only',
0139 'epic_tof_endcap_only', 'epic_tof_only', 'epic_vertex_only', 'epic_zdc_lyso_sipm', 'epic_zdc_sipm_on_tile_only',
0140 ].map(name => `${TGEO}/${name}.root`),
0141 eventSources: [
0142 `${DATA}/rec_dis_18x275_fdex-v0.4.edm4eic.v1.firebird.zip`,
0143 ],
0144 };
0145
0146 /** Adds the ePIC datasets to the data selector. */
0147 export function withEpicDataCatalog(): FirebirdFeature {
0148 return withDataCatalog(EPIC_DATA_CATALOG);
0149 }