Contributions to JETSCAPE (new module, feature, bug fix, etc.) are welcome. To contribute, read through the instructions below and open a Pull Request with your changes, or an Issue describing what you intend to do.
To develop a new JETSCAPE module, you should inherit from the relevant base class (InitialState, JetEnergyLoss, etc.) and implement the relevant initialization and execution functions, described in detail in The JETSCAPE framework Section 3.3.
Additionally, you must register your module with the framework with the following steps:
- Add the following to your module .h:
private: // Allows the registration of the module so that it is available to be used by the Jetscape framework. static RegisterJetScapeModule<MyClass> reg;
- Add the following to your module .cc:
// Register the module with the base class RegisterJetScapeModule<MyClass> MyClass::reg("CustomModuleBlahBlah");
where MyClass
is the name of your class, and "CustomModuleBlahBlah" is the name that should be added to the XML configuration.
You can see any of the established modules, e.g. Matter
, as an example.
Important Note: In the case of custom modules, you must start your module name with "CustomModule..." in order for it to be recognized by the framework (for custom writers, you must start the name with "CustomWriter").
New modules should not use multiple inheritance, if avoidable.
Once these steps are done, one can just add the module name to the XML, and it will be automatically available to run in JETSCAPE.
Tips for git management are found on the corresponding wiki page.
An overview of the code structure and functionality can be obtained by browsing the HTML doxygen documentation. Functions and variables in header files should ideally be documented with doxygen's special code comments. Run
doxygen JetScapeDoxy.conf
in the JETSCAPE directory to build the HTML documentation. Open the index.html
file in the newly-created html
directory in your favorite browser to see the documentation.