Geant4 Cross Reference |
1 // 1 // 2 // ******************************************* 2 // ******************************************************************** 3 // * License and Disclaimer 3 // * License and Disclaimer * 4 // * 4 // * * 5 // * The Geant4 software is copyright of th 5 // * The Geant4 software is copyright of the Copyright Holders of * 6 // * the Geant4 Collaboration. It is provided 6 // * the Geant4 Collaboration. It is provided under the terms and * 7 // * conditions of the Geant4 Software License 7 // * conditions of the Geant4 Software License, included in the file * 8 // * LICENSE and available at http://cern.ch/ 8 // * LICENSE and available at http://cern.ch/geant4/license . These * 9 // * include a list of copyright holders. 9 // * include a list of copyright holders. * 10 // * 10 // * * 11 // * Neither the authors of this software syst 11 // * Neither the authors of this software system, nor their employing * 12 // * institutes,nor the agencies providing fin 12 // * institutes,nor the agencies providing financial support for this * 13 // * work make any representation or warran 13 // * work make any representation or warranty, express or implied, * 14 // * regarding this software system or assum 14 // * regarding this software system or assume any liability for its * 15 // * use. Please see the license in the file 15 // * use. Please see the license in the file LICENSE and URL above * 16 // * for the full disclaimer and the limitatio 16 // * for the full disclaimer and the limitation of liability. * 17 // * 17 // * * 18 // * This code implementation is the result 18 // * This code implementation is the result of the scientific and * 19 // * technical work of the GEANT4 collaboratio 19 // * technical work of the GEANT4 collaboration. * 20 // * By using, copying, modifying or distri 20 // * By using, copying, modifying or distributing the software (or * 21 // * any work based on the software) you ag 21 // * any work based on the software) you agree to acknowledge its * 22 // * use in resulting scientific publicati 22 // * use in resulting scientific publications, and indicate your * 23 // * acceptance of all terms of the Geant4 Sof 23 // * acceptance of all terms of the Geant4 Software license. * 24 // ******************************************* 24 // ******************************************************************** 25 // 25 // 26 /// \file exoticphysics/dmparticle/src/G4LDMPh 26 /// \file exoticphysics/dmparticle/src/G4LDMPhoton.cc 27 /// \brief Implementation of the G4LDMPhoton c 27 /// \brief Implementation of the G4LDMPhoton class 28 // 28 // 29 // 29 // 30 //-------------------------------------------- 30 //--------------------------------------------------------------------------- 31 // 31 // 32 // ClassName: G4LDMPhoton 32 // ClassName: G4LDMPhoton 33 // << 33 // 34 // Description: << 34 // Description: 35 // 35 // 36 // 15.03.17 V. Grichine based on G4Monopole 36 // 15.03.17 V. Grichine based on G4Monopole 37 // 37 // 38 // Modified: 38 // Modified: 39 // 39 // 40 40 41 //....oooOO0OOooo........oooOO0OOooo........oo 41 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... 42 42 43 #include "G4LDMPhoton.hh" 43 #include "G4LDMPhoton.hh" 44 << 45 #include "G4DecayTable.hh" << 46 #include "G4ParticleTable.hh" 44 #include "G4ParticleTable.hh" 47 #include "G4PhaseSpaceDecayChannel.hh" << 48 #include "G4PhysicalConstants.hh" 45 #include "G4PhysicalConstants.hh" 49 #include "G4SystemOfUnits.hh" 46 #include "G4SystemOfUnits.hh" >> 47 #include "G4DecayTable.hh" 50 #include "G4VDecayChannel.hh" 48 #include "G4VDecayChannel.hh" >> 49 #include "G4PhaseSpaceDecayChannel.hh" 51 50 52 G4LDMPhoton* G4LDMPhoton::theLDMPhoton = nullp 51 G4LDMPhoton* G4LDMPhoton::theLDMPhoton = nullptr; 53 52 54 //....oooOO0OOooo........oooOO0OOooo........oo 53 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... 55 54 56 G4LDMPhoton::G4LDMPhoton(const G4String& aName << 55 G4LDMPhoton::G4LDMPhoton( 57 G4int iSpin, G4int iP << 56 const G4String& aName, G4double mass, 58 G4int iIsospin3, G4in << 57 G4double width, G4double charge, 59 G4int baryon, G4int e << 58 G4int iSpin, G4int iParity, 60 G4DecayTable* decayta << 59 G4int iConjugation, G4int iIsospin, 61 : G4ParticleDefinition(aName, mass, width, c << 60 G4int iIsospin3, G4int gParity, 62 iIsospin3, gParity, p << 61 const G4String& pType, G4int lepton, 63 decaytable) << 62 G4int baryon, G4int encoding, >> 63 G4bool stable, G4double lifetime, >> 64 G4DecayTable *decaytable) >> 65 : G4ParticleDefinition( aName, mass, width, charge, iSpin, iParity, >> 66 iConjugation, iIsospin, iIsospin3, gParity, pType, >> 67 lepton, baryon, encoding, stable, lifetime, decaytable ) 64 {} 68 {} 65 69 66 //....oooOO0OOooo........oooOO0OOooo........oo 70 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... 67 71 68 G4LDMPhoton::~G4LDMPhoton() {} << 72 G4LDMPhoton::~G4LDMPhoton() >> 73 {} 69 74 70 //....oooOO0OOooo........oooOO0OOooo........oo 75 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... 71 // << 76 // 72 // Arguments for constructor are as follows 77 // Arguments for constructor are as follows 73 // name mass 78 // name mass width charge 74 // 2*spin parity C-conj 79 // 2*spin parity C-conjugation 75 // 2*Isospin 2*Isospin3 G 80 // 2*Isospin 2*Isospin3 G-parity 76 // type lepton number baryon 81 // type lepton number baryon number PDG encoding 77 // stable lifetime deca << 82 // stable lifetime decay table 78 // 83 // 79 // 84 // 80 85 81 G4LDMPhoton* G4LDMPhoton::LDMPhotonDefinition( 86 G4LDMPhoton* G4LDMPhoton::LDMPhotonDefinition(G4double mass) 82 { << 87 { 83 if (!theLDMPhoton) { << 88 if(!theLDMPhoton) 84 theLDMPhoton = new G4LDMPhoton("ldmphoton" << 89 { 85 "boson", 0, << 90 theLDMPhoton = new G4LDMPhoton( 86 << 91 "ldmphoton", mass, 5.317e-14*MeV, 0, 87 // create Decay Table << 92 2, -1, -1, >> 93 0, 0, 0, >> 94 "boson", 0, 0, 50, >> 95 true, 12.380*ns, NULL); >> 96 >> 97 //create Decay Table 88 G4DecayTable* table = new G4DecayTable(); 98 G4DecayTable* table = new G4DecayTable(); 89 99 90 // create decay channels 100 // create decay channels 91 G4VDecayChannel** mode = new G4VDecayChann 101 G4VDecayChannel** mode = new G4VDecayChannel*[3]; 92 // << 102 // 93 mode[0] = new G4PhaseSpaceDecayChannel("ld << 103 mode[0] = 94 // << 104 new G4PhaseSpaceDecayChannel("ldmphoton",0.999,2,"ldmhi","ldmhibar"); 95 mode[1] = new G4PhaseSpaceDecayChannel("ld << 105 // 96 // << 106 mode[1] = new G4PhaseSpaceDecayChannel("ldmphoton",0.0005,2,"mu+","mu-"); 97 mode[2] = new G4PhaseSpaceDecayChannel("ld << 107 // >> 108 mode[2] = new G4PhaseSpaceDecayChannel("ldmphoton",0.0005,3,"pi+","pi-"); 98 109 99 for (G4int index = 0; index < 3; index++) << 110 for (G4int index=0; index <3; index++ ) table->Insert(mode[index]); 100 table->Insert(mode[index]); << 101 111 102 delete[] mode; << 112 delete [] mode; 103 113 104 theLDMPhoton->SetDecayTable(table); 114 theLDMPhoton->SetDecayTable(table); 105 << 115 106 G4cout << "LDMPhoton is created: m(GeV)= " << 116 G4cout << "LDMPhoton is created: m(GeV)= " >> 117 << theLDMPhoton->GetPDGMass()/GeV << G4endl; 107 } 118 } 108 return theLDMPhoton; 119 return theLDMPhoton; 109 } 120 } 110 121 111 //....oooOO0OOooo........oooOO0OOooo........oo 122 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... 112 123 113 G4LDMPhoton* G4LDMPhoton::LDMPhoton() 124 G4LDMPhoton* G4LDMPhoton::LDMPhoton() 114 { << 125 { 115 return theLDMPhoton; 126 return theLDMPhoton; 116 } << 127 } 117 128 118 //....oooOO0OOooo........oooOO0OOooo........oo 129 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... >> 130 >> 131 >> 132 119 133