//////////////////////////////////////////////////////////////////// /// RAT::VertexGen_Decay0 /// \brief Vertex Generator - events consist of particle types, times and momenta /// /// \author Aleksandra Bialek -- contact person /// /// REVISION HISTORY: /// - 30 Jun 2010 A.Bialek - /// This class is used by the vertex generator to calculate /// momenta and time of initial particles. /// At the moment only the double beta decays are included. /// All information of isotopes included in the Decay0.ratdb. /// - 10 Oct 2010 A.Bialek - /// First 24 isotopes for simulation of the background&source events /// Database file: Decay0Backg.ratdb /// - 28 Oct 2010 A.Bialek - /// Additional 10 isotopes in the list. /// - 09 Nov 2010 A.Bialek - /// Next 10 isotopes in the list. /// - 03 Dec 2010 A.Bialek - /// Last 14 isotopes /// - 28 Nov 2014: Matt Strait - /// Doxygen fixes /// - 04 Aug 2015: Matt Mottram - /// Use G4IonTable to get ions /// - 11 Oct 2016: Nuno Barros = /// Added time cut option for coincidence backgrounds /// Introduced the possibility to suppress the Bi alpha decay from BiPo decays /// - 13 Feb 2017: Nuno Barros - /// Fixed bug in debug code (activated by preprocessor macro) /// /// /// \details List of the isotopes included in the generator: \n /// Ac228 Ar39 Ar42 As79 Bi207 Bi208 Bi210 Bi212 Bi214 C14 \n /// Ca48 Cd113 Co60 Cs136 Cs137 Eu147 Eu152 Eu154 Gd146 Hf182 \n /// I126 I133 I134 I135 K40 K42 Kr81 Kr85 Mn54 Na22 \n /// P32 Pa234m Pb210 Pb211 Pb212 Pb214 Po214 Ra228 Rb87 Rh106 \n /// Sb125 Sb126 Sb133 Sr90 Ta182 Te133 Te133m Te134 Th234 Tl207 \n /// Tl208 Xe129m Xe131m Xe133 Xe135 Y88 Y90 Zn65 Zr96 /// /// To use generator, define in the macro: \n /// /generator/add combo decay0:[POSITION] #POSITION generator: point,fill,.. /// /// to simulate the double beta events: \n /// /generator/vtx/set 2beta [ISOTOPE] [LEVEL] [MODE] [LoELim] [HiELim] \n /// OR to simulate background events \n /// /generator/vtx/set backg [ISOTOPE] /// ///For detail information go to User Manual, DocDB (SNO+-doc-592) //////////////////////////////////////////////////////////////////// #ifndef __RAT_VertexGen_Decay0__ #define __RAT_VertexGen_Decay0__ #include #include "RAT/DB.hh" #include #include #include #include #include #include namespace RAT { class VertexGen_Decay0 : public GLG4VertexGen { public: VertexGen_Decay0(const char *arg_dbname="decay0"); virtual ~VertexGen_Decay0(); virtual void GeneratePrimaryVertex(G4Event *argEvent, G4ThreeVector &dx, G4double dt); virtual void SetState(G4String newValues ); virtual G4String GetState(); virtual void GetParentAZ(G4int &A1, G4int &Z1, G4int &A2, G4int &Z2); private: G4String fCodeToName(G4int code); void StripIsotopeSuffix(); G4String fType; // defines or double beta decay "2beta" or // background and source study "backg" G4String fIsotope; // parent isotope after stripping suffixes G4String fIsotopeRawIn; // parent isotope as passed in the macro bool fHasTimeCutoff; bool fHasAlphaCut; G4int fLevel; // daughter energy level G4int fMode; // decay mode G4float fLoE, fHiE; // limit for energy spectrum DBLinkPtr fLdecay; protected: Decay0 *fDecay0; }; } // namespace RAT #endif