Back to home page

EIC code displayed by LXR

 
 

    


File indexing completed on 2026-04-09 07:48:56

0001 #pragma once
0002 /**
0003 CSGGenstep.h : Creator of CenterExtent "CE" Gensteps used by CSGOptiXSimtraceTest
0004 ==================================================================================
0005 
0006 Center extent gensteps (maybe rename as FrameGensteps for simplicity without CE jargon) 
0007 can generate for example photons in the local frame of part of the geometry in order 
0008 to create 2D cross-sections from the intersects.  
0009 
0010 Sensitive to envvars:
0011 
0012 CEGS
0013    center-extent-genstep
0014    expect 4 or 7 ints delimited by colon nx:ny:nz:num_pho OR nx:px:ny:py:nz:py:num_pho 
0015 
0016 TODO: compare with SCenterExtentGenstep.hh 
0017 
0018 TODO: relocate 
0019    this is misplaced up in CSG, most of it should be down in SysRap/SEvent 
0020    to make ce-gensteps follow the pattern of other gensteps  
0021    perhaps using new "SLocation/SComposition/SFrame" struct (that is persistable)
0022    for holding transforms and ce that is provided by a CSGFoundry method
0023    and which is passed down to SysRap/SEvent to generate the gensteps 
0024 
0025 For example::
0026 
0027     SEvent::MakeTorchGensteps()
0028     SEvent::MakeCarrierGensteps()
0029 
0030     SEvent::MakeFrameGensteps(const SFrame& fr)
0031 
0032 **/
0033 
0034 #include <vector>
0035 #include "plog/Severity.h"
0036 
0037 struct float4 ; 
0038 struct qat4 ; 
0039 template <typename T> struct Tran ;  
0040 
0041 #include "CSG_API_EXPORT.hh"
0042 
0043 
0044 struct NP ; 
0045 
0046 struct CSG_API CSGGenstep
0047 {
0048     CSGGenstep( const CSGFoundry* foundry );  
0049 
0050     NP* create();  // MOI, ...
0051 
0052     void create(const char* moi, bool ce_offset, bool ce_scale );
0053     void generate_photons_cpu();
0054     void save(const char* basedir) const ; 
0055 
0056     // below are "private"
0057 
0058     static const plog::Severity LEVEL ; 
0059     void init(); 
0060     void locate(const char* moi); 
0061     void override_locate() ; 
0062     void configure_grid() ; 
0063 
0064     const CSGFoundry* foundry ; 
0065     float gridscale ;  
0066     const char* moi ; 
0067     int midx ; 
0068     int mord ; 
0069     int iidx ; 
0070     float4 ce ;
0071     qat4*  m2w ;              // 4x4 float
0072     qat4*  w2m ;              // 4x4 float 
0073 
0074     Tran<double>* geotran ;   // internally holds 3*glm::tmat4x4<double>
0075     // derived from m2w w2m using Tran<double>::FromPair 
0076 
0077     std::vector<int> cegs ; 
0078 
0079     NP* gs ; 
0080     NP* pp ; 
0081 
0082 
0083 };