//////////////////////////////////////////////////////////////////////// /// \class RAT::VertexGen_DecayChain /// /// \brief This file is a modified copy of DecayChain_Gen.hh and is used to /// generate decay chains in a vertex. /// /// \author Eric Vazquez-Jauregui -- contact person /// \author Logan Sibley /// /// REVISION HISTORY:\n /// 01 Jan 2010 : Eric Vazquez-Jauregui /// 26 Jul 2010 : Logan Sibley - Changes to accommodate the screening /// correction in DecayChain_Gen. \n /// 12 Aug 2010 : Logan Sibley - Enable the handing of positron emission/ /// electron capture. \n /// 28 Sep 2010 : Logan Sibley - Enable proper handling of gamma decay \n /// 03 Jan 2013 : Logan Sibley - Now adds parent info into DS /// 04 Aug 2015 : Matt Mottram - Use G4IonTable to get ions /// /// \details Generates a decay chain to be added in a vertex similar to the /// decay chain top-level generator. It may be used with combo or /// coincidence top-level generators with the same commands, but in a /// vertex: /// /generator/vtx/set ISOTOPE /// /// The ISOTOPE parameter may be any chain or element found in the file /// beta_decays.dat (see decay chain top-level generator). To start a /// chain from an isotope use: /// /generator/vtx/set ISOTOPE:midchain /// If you require the ISOTOPE to alpha decay, use: /// /generator/vtx/set ISOTOPE:alpha /// If you require the ISOTOPE to gamma decay, use: /// /generator/vtx/set ISOTOPE:gamma /// /// To apply a screening correction to the beta energy spectrum use: /// /generator/vtx/set ISOTOPE::screen /// If SCREEN is not specified, or is set to 'none', the screening /// correction will not be used. You may also specify midchain, if /// required. /// //////////////////////////////////////////////////////////////////////// #ifndef __RAT_VertexGen_DecayChain__ #define __RAT_VertexGen_DecayChain__ #include #include #include #include /** \class VertexGen_DecayChain for decay chain in a vertex */ namespace RAT { class VertexGen_DecayChain : public GLG4VertexGen { public: VertexGen_DecayChain(const char *arg_dbname="vertexchain"); virtual ~VertexGen_DecayChain(); virtual void GeneratePrimaryVertex(G4Event *argEvent, G4ThreeVector &dx, G4double dt); virtual void SetState(G4String newValues); virtual G4String GetState(); // returns current state formatted as above private: // Generator initialization, specified by the user. G4String fStateStr; // The decay chain for the isotope selected by the user. DecayChain* fDecayChain; bool fInMiddle; // to start chain from the isotope; bool fInAlphaDecay; // to have only alpha decay bool fInGammaDecay; // to have only gamma decay bool fScreenCorr; // to use a screening correction in the beta decay }; } // namespace RAT #endif