Back to home page

EIC code displayed by LXR

 
 

    


File indexing completed on 2026-05-27 07:24:00

0001 // This file is part of the ACTS project.
0002 //
0003 // Copyright (C) 2016 CERN for the benefit of the ACTS project
0004 //
0005 // This Source Code Form is subject to the terms of the Mozilla Public
0006 // License, v. 2.0. If a copy of the MPL was not distributed with this
0007 // file, You can obtain one at https://mozilla.org/MPL/2.0/.
0008 
0009 #pragma once
0010 
0011 // Project include(s)
0012 #include "detray/definitions/algebra.hpp"
0013 #include "detray/definitions/units.hpp"
0014 #include "detray/material/material.hpp"
0015 
0016 // System include(s)
0017 #include <limits>
0018 
0019 namespace detray {
0020 
0021 /**
0022  * Elements Declaration
0023  * @note: Values from
0024  * https://pdg.lbl.gov/2020/AtomicNuclearProperties/index.html (Last revised 04
0025  * June 2020)
0026  *
0027  * @NOTE: For diatomic molecules (e.g. H₂ and N₂), the atomic mass (A) and
0028  * charge number (Z) are doubled
0029  */
0030 // Vacuum
0031 DETRAY_DECLARE_MATERIAL(vacuum, std::numeric_limits<scalar_t>::max(),
0032                         std::numeric_limits<scalar_t>::max(), 0.f, 0.f, 0.f,
0033                         material_state::e_unknown);
0034 
0035 // H₂ (1): Hydrogen Gas
0036 DETRAY_DECLARE_MATERIAL(hydrogen_gas, 7.526E3f * unit<scalar_t>::m,
0037                         6.209E3f * unit<scalar_t>::m, 2.f * 1.008f, 2.f * 1.f,
0038                         static_cast<scalar_t>(8.376E-5 * unit<double>::g /
0039                                               unit<double>::cm3),
0040                         material_state::e_gas);
0041 
0042 // H₂ (1): Hydrogen Liquid
0043 DETRAY_DECLARE_MATERIAL(hydrogen_liquid, 8.904f * unit<scalar_t>::m,
0044                         7.346f * unit<scalar_t>::m, 2.f * 1.008f, 2.f * 1.f,
0045                         static_cast<scalar_t>(0.07080f * unit<double>::g /
0046                                               unit<double>::cm3),
0047                         material_state::e_liquid);
0048 
0049 // He (2): Helium Gas
0050 DETRAY_DECLARE_MATERIAL(helium_gas, 5.671E3f * unit<scalar_t>::m,
0051                         4.269E3f * unit<scalar_t>::m, 4.003f, 2.f,
0052                         static_cast<scalar_t>(1.663E-4 * unit<double>::g /
0053                                               unit<double>::cm3),
0054                         material_state::e_gas);
0055 
0056 // Be (4)
0057 DETRAY_DECLARE_MATERIAL(beryllium, 352.8f * unit<scalar_t>::mm,
0058                         421.0f * unit<scalar_t>::mm, 9.012f, 4.f,
0059                         static_cast<scalar_t>(1.848 * unit<double>::g /
0060                                               unit<double>::cm3),
0061                         material_state::e_solid);
0062 
0063 // C (6): Carbon (amorphous)
0064 DETRAY_DECLARE_MATERIAL(carbon_gas, 213.5f * unit<scalar_t>::mm,
0065                         429.0f * unit<scalar_t>::mm, 12.01f, 6.f,
0066                         static_cast<scalar_t>(2.0 * unit<double>::g /
0067                                               unit<double>::cm3),
0068                         material_state::e_gas);
0069 
0070 // N₂ (7): Nitrogen Gas
0071 DETRAY_DECLARE_MATERIAL(nitrogen_gas, 3.260E+02f * unit<scalar_t>::m,
0072                         7.696E+02f * unit<scalar_t>::m, 2.f * 14.007f,
0073                         2.f * 7.f,
0074                         static_cast<scalar_t>(1.165E-03 * unit<double>::g /
0075                                               unit<double>::cm3),
0076                         material_state::e_gas);
0077 
0078 // O₂ (8): Oxygen Gas
0079 DETRAY_DECLARE_MATERIAL(oxygen_gas, 2.571E+02f * unit<scalar_t>::m,
0080                         6.772E+02f * unit<scalar_t>::m, 2.f * 15.999f,
0081                         2.f * 8.f,
0082                         static_cast<scalar_t>(1.332E-3 * unit<double>::g /
0083                                               unit<double>::cm3),
0084                         material_state::e_gas);
0085 
0086 // O₂ (8): Oxygen liquid
0087 DETRAY_DECLARE_MATERIAL(oxygen_liquid, 300.1f * unit<scalar_t>::mm,
0088                         790.3f * unit<scalar_t>::mm, 2.f * 15.999f, 2.f * 8.f,
0089                         static_cast<scalar_t>(1.141 * unit<double>::g /
0090                                               unit<double>::cm3),
0091                         material_state::e_liquid);
0092 
0093 // Al (13)
0094 DETRAY_DECLARE_MATERIAL(aluminium, 88.97f * unit<scalar_t>::mm,
0095                         397.0f * unit<scalar_t>::mm, 26.98f, 13.f,
0096                         static_cast<scalar_t>(2.699 * unit<double>::g /
0097                                               unit<double>::cm3),
0098                         material_state::e_solid);
0099 
0100 // Si (14)
0101 DETRAY_DECLARE_MATERIAL(silicon, 93.7f * unit<scalar_t>::mm,
0102                         465.2f * unit<scalar_t>::mm, 28.0855f, 14.f,
0103                         static_cast<scalar_t>(2.329 * unit<double>::g /
0104                                               unit<double>::cm3),
0105                         material_state::e_solid);
0106 
0107 // Si (14) with density effect data
0108 DETRAY_DECLARE_MATERIAL_WITH_DED(silicon_with_ded, 93.7f * unit<scalar_t>::mm,
0109                                  465.2f * unit<scalar_t>::mm, 28.0855f, 14.f,
0110                                  static_cast<scalar_t>(2.329 * unit<double>::g /
0111                                                        unit<double>::cm3),
0112                                  material_state::e_solid, 0.1492f, 3.2546f,
0113                                  0.2015f, 2.8716f, 173.0f, 4.4355f, 0.14f);
0114 
0115 // Ar (18): Argon gas
0116 DETRAY_DECLARE_MATERIAL(argon_gas, 1.176E+02f * unit<scalar_t>::m,
0117                         7.204E+02f * unit<scalar_t>::m, 39.948f, 18.f,
0118                         static_cast<scalar_t>(1.662E-03 * unit<double>::g /
0119                                               unit<double>::cm3),
0120                         material_state::e_gas);
0121 
0122 // Ar (18): Argon liquid
0123 DETRAY_DECLARE_MATERIAL(argon_liquid, 14.f * unit<scalar_t>::cm,
0124                         85.77f * unit<scalar_t>::cm, 39.948f, 18.f,
0125                         static_cast<scalar_t>(1.396 * unit<double>::g /
0126                                               unit<double>::cm3),
0127                         material_state::e_liquid);
0128 
0129 // Fe (26)
0130 DETRAY_DECLARE_MATERIAL(iron, 1.757f * unit<scalar_t>::cm,
0131                         16.77f * unit<scalar_t>::cm, 55.845f, 26.f,
0132                         static_cast<scalar_t>(7.874 * unit<double>::g /
0133                                               unit<double>::cm3),
0134                         material_state::e_solid);
0135 
0136 // Fe (26) with density effect data
0137 DETRAY_DECLARE_MATERIAL_WITH_DED(iron_with_ded, 1.757f * unit<scalar_t>::cm,
0138                                  16.77f * unit<scalar_t>::cm, 55.845f, 26.f,
0139                                  static_cast<scalar_t>(7.874 * unit<double>::g /
0140                                                        unit<double>::cm3),
0141                                  material_state::e_solid, 0.14680f, 2.9632f,
0142                                  -0.0012f, 3.1531f, 286.0f, 4.2911f, 0.12f);
0143 
0144 // Copper (29)
0145 DETRAY_DECLARE_MATERIAL(copper, 1.436f * unit<scalar_t>::cm,
0146                         15.32f * unit<scalar_t>::cm, 63.546f, 29.f,
0147                         static_cast<scalar_t>(8.960 * unit<double>::g /
0148                                               unit<double>::cm3),
0149                         material_state::e_solid);
0150 
0151 // Copper (29) with density effect data
0152 DETRAY_DECLARE_MATERIAL_WITH_DED(copper_with_ded, 1.436f * unit<scalar_t>::cm,
0153                                  15.32f * unit<scalar_t>::cm, 63.546f, 29.f,
0154                                  static_cast<scalar_t>(8.960 * unit<double>::g /
0155                                                        unit<double>::cm3),
0156                                  material_state::e_solid, 0.14339f, 2.9044f,
0157                                  -0.0254f, 3.2792f, 322.0f, 4.4190f, 0.08f);
0158 
0159 // W (74)
0160 DETRAY_DECLARE_MATERIAL(tungsten, 3.504f * unit<scalar_t>::mm,
0161                         99.46f * unit<scalar_t>::mm, 183.84f, 74.f,
0162                         static_cast<scalar_t>(19.3 * unit<double>::g /
0163                                               unit<double>::cm3),
0164                         material_state::e_solid);
0165 
0166 // Au (79)
0167 DETRAY_DECLARE_MATERIAL(gold, 3.344f * unit<scalar_t>::mm,
0168                         101.6f * unit<scalar_t>::mm, 196.97f, 79.f,
0169                         static_cast<scalar_t>(19.32 * unit<double>::g /
0170                                               unit<double>::cm3),
0171                         material_state::e_solid);
0172 
0173 /**
0174  * Elements Declaration for ACTS Generic detector
0175  * @note: Values taken from BuildGenericDetector.hpp in ACTS
0176  */
0177 
0178 // Be (4)
0179 DETRAY_DECLARE_MATERIAL(beryllium_tml, 352.8f * unit<scalar_t>::mm,
0180                         407.f * unit<scalar_t>::mm, 9.012f, 4.f,
0181                         static_cast<scalar_t>(1.848 * unit<double>::g /
0182                                               unit<double>::cm3),
0183                         material_state::e_solid);
0184 
0185 // Si (14)
0186 DETRAY_DECLARE_MATERIAL(silicon_tml, 95.7f * unit<scalar_t>::mm,
0187                         465.2f * unit<scalar_t>::mm, 28.03f, 14.f,
0188                         static_cast<scalar_t>(2.32 * unit<double>::g /
0189                                               unit<double>::cm3),
0190                         material_state::e_solid);
0191 
0192 /**
0193  * Mixtures or Compounds
0194  */
0195 
0196 // Air (dry, 1 atm)
0197 // @note:
0198 // https://pdg.lbl.gov/2020/AtomicNuclearProperties/HTML/air_dry_1_atm.html
0199 // @note: Ar from Wikipedia (https://en.wikipedia.org/wiki/Molar_mass)
0200 DETRAY_DECLARE_MATERIAL(air, 3.039E+02f * unit<scalar_t>::m,
0201                         7.477E+02f * unit<scalar_t>::m, 28.97f, 14.46f,
0202                         static_cast<scalar_t>(1.205E-03 * unit<double>::g /
0203                                               unit<double>::cm3),
0204                         material_state::e_gas);
0205 
0206 // (CH3)2CHCH3 Gas
0207 // @note: (X0, L0, mass_rho) from https://pdg.lbl.gov/2005/reviews/atomicrpp.pdf
0208 // @note: Ar from Wikipedia (https://en.wikipedia.org/wiki/Isobutane)
0209 // @note: Z was calculated by simply summing the number of atoms. Surprisingly
0210 // it seems the right value because Z/A is 0.58496, which is the same with <Z/A>
0211 // in the pdg reference
0212 DETRAY_DECLARE_MATERIAL(isobutane, 1693E+02f * unit<scalar_t>::mm,
0213                         288.3f * unit<scalar_t>::mm, 58.124f, 34.f,
0214                         static_cast<scalar_t>(2.67 * unit<double>::g /
0215                                               unit<double>::cm3),
0216                         material_state::e_gas);
0217 
0218 // C3H8 Gas
0219 // @note: (X0, L0, mass_rho) from
0220 // https://pdg.lbl.gov/2020/AtomicNuclearProperties/HTML/propane.html
0221 // @note: Ar from Wikipedia (https://en.wikipedia.org/wiki/Propane)
0222 DETRAY_DECLARE_MATERIAL(propane, 2.429E+02f * unit<scalar_t>::m,
0223                         4.106E+02f * unit<scalar_t>::m, 44.097f, 26.f,
0224                         static_cast<scalar_t>(1.868E-03 * unit<double>::g /
0225                                               unit<double>::cm3),
0226                         material_state::e_gas);
0227 
0228 // Cesium Iodide (CsI)
0229 // https://pdg.lbl.gov/2023/AtomicNuclearProperties/HTML/cesium_iodide_CsI.html
0230 DETRAY_DECLARE_MATERIAL(cesium_iodide, 1.86f * unit<scalar_t>::cm,
0231                         38.04f * unit<scalar_t>::cm, 259.81f, 108.f,
0232                         static_cast<scalar_t>(4.510f * unit<double>::g /
0233                                               unit<double>::cm3),
0234                         material_state::e_solid);
0235 
0236 DETRAY_DECLARE_MATERIAL_WITH_DED(
0237     cesium_iodide_with_ded, 1.86f * unit<scalar_t>::cm,
0238     38.04f * unit<scalar_t>::cm, 259.81f, 108.f,
0239     static_cast<scalar_t>(4.510f * unit<double>::g / unit<double>::cm3),
0240     material_state::e_solid, 0.25381f, 2.6657f, 0.0395f, 3.3353f, 553.1f,
0241     6.2807f, 0.00f);
0242 
0243 }  // namespace detray