starting on a simple example using gex. This will include the development of build configurations for gex.
added CMakeLists.txt and the beginnings of an example to main.cc. Still need to port Geant4Simulation from old repo, but don't know where it should go.
working on simulation example. Added sim::Geant4Simulation and dummy classes.
updated documentation for sim::mock namespace classes
working on simple example MyUserActionInitialization
Finished simple example MyUserActionInitialization and added convenience method for callback creation
Working on convenience method ua::create to clean up some code in examples.
Added gex::util::str and moved create out of UserActionManager header and to gex::create. Still working on examples.
Working on examples and creating helper functions in gex to remove boilerplate. Added data::make_readout and sd::make_sensitive. Also updated LifeTimeExtension to just use the template parameter to do storage as the underlying type is not really important to its operation. Updated UserActionManager to reflect this (needed decltype). Also finally compiled gex::create and updated it to fix compile errors, at least in the UserAction case.
Made simple example MyDetector.
Simple example builds. Fixed CMakeLists definition of GEX_INCLUDE_DIR which was messing up file paths for automatic root dictionary generation. There is a crash at the very end of the simple simulation saying memory is freed that was not allocated. Not sure what that is yet, but probably something given to the G4RunManager.
IMPORTANT: changed UserActionManager from unique_ptr thread_local theInstance to raw pointer. Was experiencing strange error about freeing memory that was not allocated when the unique_ptr default_delete was invoked. Destruction is not important in this case, even though I think it is ugly not to delete the instance. Note that this means the destructor for UserActionManager can't do anything useful. Anyway simple example is COMPLETE and runs without crashing. I need to verify that the data is written successfully. Then I will merge.
added FindRoot.cmake to example directory.
not sure what I changed. Probably still trying to get UserActionManager to work.
finally fixed UserActionManager. Tried a bunch of dumb stuff but ended up deciding to have the RunActionGroup destructor delete the thread_local instance of the UserActionManager. This is almost ideal. The only thing that dies later than this is the PrimaryGeneratorAction. However, I should probably find a way to move this destruction to a later point. I could at least add a warning, though...
UserActionManager::GetUserActionManager() now throws a somewhat helpful error if the user tries to call it after the destruction of the UserActionManager instance.
added a cast to unpack to suppress unused variable warning in gex::util::str
example is now working.
fixed a possible bug with the include directory for gex types by changing from a compile time variable to a dynamically loaded environment variable in RootDictionaryBuilder. Need to make a method to add an include directory for users, though.