Back to home page

EIC code displayed by LXR

 
 

    


Warning, file /eic-opticks/u4/U4Genstep.h was not indexed or was modified since last indexation (in which case cross-reference links may be missing, inaccurate or erroneous).

0001 #pragma once
0002 
0003 #include <array>
0004 #include <cstddef>
0005 
0006 #include "G4StepStatus.hh"
0007 #include "G4Types.hh"
0008 
0009 #include "U4_API_EXPORT.hh"
0010 
0011 class G4MaterialPropertiesTable;
0012 class G4ProcessVector;
0013 class G4Scintillation;
0014 class G4SteppingManager;
0015 class G4Track;
0016 
0017 /**
0018  * Shared helpers for reconstructing gensteps from official Geant4 optical processes.
0019  */
0020 struct U4_API U4Genstep
0021 {
0022     struct ProcessRange
0023     {
0024         G4ProcessVector* processes{nullptr};
0025         std::size_t      count{0};
0026     };
0027 
0028     struct ScintillationPlan
0029     {
0030         G4int                   num_components{0};
0031         G4double                yield_sum{0.};
0032         std::array<G4int, 3>    counts{};
0033         std::array<G4double, 3> times{};
0034 
0035         G4int photonCount() const
0036         {
0037             return counts[0] + counts[1] + counts[2];
0038         }
0039     };
0040 
0041     static ProcessRange Processes(G4SteppingManager* stepping_manager);
0042     static ProcessRange Processes(
0043         G4StepStatus     status,
0044         G4ProcessVector* at_rest,
0045         G4ProcessVector* post_step);
0046 
0047     static ScintillationPlan Scintillation(
0048         const G4Track*                   track,
0049         const G4Scintillation*           scintillation,
0050         const G4MaterialPropertiesTable* properties,
0051         G4int                            total_photons);
0052 
0053     static bool ValidateScintillation(
0054         const G4Scintillation* scintillation,
0055         const char*            origin);
0056 };