#ifndef ReactionGenerator_h #define ReactionGenerator_h 1 #include "G4ThreeVector.hh" enum class ReactionChannel { Proton, Alpha }; struct ReactionOutput { ReactionChannel channel; double kineticEnergy; double px; double py; double pz; }; class ReactionGenerator { public: ReactionGenerator(); ~ReactionGenerator(); ReactionOutput SampleEvent(double beamKineticEnergy, const G4ThreeVector& beamDirection); double GetEffectiveCrossSection() const; private: class Impl; Impl* fImpl; double fEffectiveSigma; }; #endif