Geant4 Cross Reference |
1 // 1 // 2 // ******************************************* 2 // ******************************************************************** 3 // * License and Disclaimer << 3 // * DISCLAIMER * 4 // * 4 // * * 5 // * The Geant4 software is copyright of th << 5 // * The following disclaimer summarizes all the specific disclaimers * 6 // * the Geant4 Collaboration. It is provided << 6 // * of contributors to this software. The specific disclaimers,which * 7 // * conditions of the Geant4 Software License << 7 // * govern, are listed with their locations in: * 8 // * LICENSE and available at http://cern.ch/ << 8 // * http://cern.ch/geant4/license * 9 // * include a list of copyright holders. << 10 // * 9 // * * 11 // * Neither the authors of this software syst 10 // * Neither the authors of this software system, nor their employing * 12 // * institutes,nor the agencies providing fin 11 // * institutes,nor the agencies providing financial support for this * 13 // * work make any representation or warran 12 // * work make any representation or warranty, express or implied, * 14 // * regarding this software system or assum 13 // * regarding this software system or assume any liability for its * 15 // * use. Please see the license in the file << 14 // * use. * 16 // * for the full disclaimer and the limitatio << 17 // * 15 // * * 18 // * This code implementation is the result << 16 // * This code implementation is the intellectual property of the * 19 // * technical work of the GEANT4 collaboratio << 17 // * GEANT4 collaboration. * 20 // * By using, copying, modifying or distri << 18 // * By copying, distributing or modifying the Program (or any work * 21 // * any work based on the software) you ag << 19 // * based on the Program) you indicate your acceptance of this * 22 // * use in resulting scientific publicati << 20 // * statement, and all its terms. * 23 // * acceptance of all terms of the Geant4 Sof << 24 // ******************************************* 21 // ******************************************************************** 25 // 22 // >> 23 // $Id: G4eeToHadrons.hh,v 1.4 2005/05/18 10:12:32 vnivanch Exp $ >> 24 // GEANT4 tag $Name: geant4-07-01 $ 26 // 25 // 27 // ------------------------------------------- 26 // ------------------------------------------------------------------- 28 // 27 // 29 // GEANT4 Class header file 28 // GEANT4 Class header file 30 // 29 // 31 // 30 // 32 // File name: G4eeToHadrons 31 // File name: G4eeToHadrons 33 // 32 // 34 // Author: Vladimir Ivanchenko 33 // Author: Vladimir Ivanchenko 35 // 34 // 36 // Creation date: 12.08.2004 35 // Creation date: 12.08.2004 37 // 36 // 38 // Modifications: 37 // Modifications: 39 // 08-11-04 Migration to new interface of Stor 38 // 08-11-04 Migration to new interface of Store/Retrieve tables (V.Ivantchenko) 40 // 08-04-05 Major optimisation of internal int 39 // 08-04-05 Major optimisation of internal interfaces (V.Ivantchenko) 41 // 40 // 42 // 41 // 43 // Class Description: 42 // Class Description: 44 // 43 // 45 // This class manages the process of e+ annihi 44 // This class manages the process of e+ annihilation into hadrons 46 // 45 // 47 46 48 // ------------------------------------------- 47 // ------------------------------------------------------------------- 49 // 48 // 50 49 51 #ifndef G4eeToHadrons_h 50 #ifndef G4eeToHadrons_h 52 #define G4eeToHadrons_h 1 51 #define G4eeToHadrons_h 1 53 52 54 #include "G4VEmProcess.hh" 53 #include "G4VEmProcess.hh" 55 #include "G4Positron.hh" 54 #include "G4Positron.hh" 56 #include "G4eeToHadronsMultiModel.hh" 55 #include "G4eeToHadronsMultiModel.hh" 57 56 58 class G4eeToHadrons : public G4VEmProcess 57 class G4eeToHadrons : public G4VEmProcess 59 { 58 { 60 59 61 public: 60 public: 62 61 63 explicit G4eeToHadrons(const G4String& name << 62 G4eeToHadrons(const G4String& name = "ee2hadr"); 64 63 65 ~G4eeToHadrons() override; << 64 virtual ~G4eeToHadrons(); 66 65 67 G4bool IsApplicable(const G4ParticleDefiniti << 66 virtual G4bool IsApplicable(const G4ParticleDefinition& p); >> 67 >> 68 // Print out of the class parameters >> 69 void PrintInfo(); 68 70 69 // Set the factor to artificially increase t 71 // Set the factor to artificially increase the crossSection (default 1) 70 void SetCrossSecFactor(G4double fac); 72 void SetCrossSecFactor(G4double fac); 71 73 72 // print description in html << 73 void ProcessDescription(std::ostream&) const << 74 << 75 // hide assignment operator << 76 G4eeToHadrons & operator=(const G4eeToHadron << 77 G4eeToHadrons(const G4eeToHadrons&) = delete << 78 << 79 protected: 74 protected: 80 75 81 // Print out of the class parameters << 76 void InitialiseProcess(const G4ParticleDefinition*); 82 void StreamProcessInfo(std::ostream& outFile << 83 77 84 void InitialiseProcess(const G4ParticleDefin << 78 std::vector<G4DynamicParticle*>* SecondariesPostStep( >> 79 G4VEmModel*, >> 80 const G4MaterialCutsCouple*, >> 81 const G4DynamicParticle*); 85 82 86 private: 83 private: 87 84 88 G4eeToHadronsMultiModel* multimodel = nullp << 85 std::vector<G4DynamicParticle*>* GenerateSecondaries(const G4DynamicParticle*); 89 G4double csFactor = 1.0; << 86 90 G4bool isInitialised = fa << 87 // hide assignment operator >> 88 G4eeToHadrons & operator=(const G4eeToHadrons &right); >> 89 G4eeToHadrons(const G4eeToHadrons&); >> 90 >> 91 G4eeToHadronsMultiModel* multimodel; >> 92 G4bool isInitialised; 91 }; 93 }; >> 94 >> 95 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... >> 96 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... >> 97 >> 98 inline G4bool G4eeToHadrons::IsApplicable(const G4ParticleDefinition& p) >> 99 { >> 100 return (&p == G4Positron::Positron()); >> 101 } >> 102 >> 103 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo.... >> 104 >> 105 inline std::vector<G4DynamicParticle*>* G4eeToHadrons::SecondariesPostStep( >> 106 G4VEmModel*, >> 107 const G4MaterialCutsCouple* couple, >> 108 const G4DynamicParticle* dp) >> 109 { >> 110 std::vector<G4DynamicParticle*>* newp = multimodel->SampleSecondaries(couple, dp); >> 111 if(newp) fParticleChange.ProposeTrackStatus(fStopAndKill); >> 112 return newp; >> 113 } 92 114 93 //....oooOO0OOooo........oooOO0OOooo........oo 115 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... 94 116 95 #endif 117 #endif 96 118