Geant4 Cross Reference |
1 // 1 2 // ******************************************* 3 // * License and Disclaimer 4 // * 5 // * The Geant4 software is copyright of th 6 // * the Geant4 Collaboration. It is provided 7 // * conditions of the Geant4 Software License 8 // * LICENSE and available at http://cern.ch/ 9 // * include a list of copyright holders. 10 // * 11 // * Neither the authors of this software syst 12 // * institutes,nor the agencies providing fin 13 // * work make any representation or warran 14 // * regarding this software system or assum 15 // * use. Please see the license in the file 16 // * for the full disclaimer and the limitatio 17 // * 18 // * This code implementation is the result 19 // * technical work of the GEANT4 collaboratio 20 // * By using, copying, modifying or distri 21 // * any work based on the software) you ag 22 // * use in resulting scientific publicati 23 // * acceptance of all terms of the Geant4 Sof 24 // ******************************************* 25 // 26 // 27 //....oooOO0OOooo........oooOO0OOooo........oo 28 //....oooOO0OOooo........oooOO0OOooo........oo 29 30 #include "TransitionRadiationPhysics.hh" 31 32 #include "DetectorConstruction.hh" 33 #include "XTRTransparentRegRadModel.hh" 34 35 #include "G4Electron.hh" 36 #include "G4GammaXTRadiator.hh" 37 #include "G4Positron.hh" 38 #include "G4ProcessManager.hh" 39 #include "G4RegularXTRadiator.hh" 40 #include "G4StrawTubeXTRadiator.hh" 41 #include "G4TransparentRegXTRadiator.hh" 42 #include "G4VXTRenergyLoss.hh" 43 #include "G4XTRGammaRadModel.hh" 44 #include "G4XTRRegularRadModel.hh" 45 #include "G4XTRTransparentRegRadModel.hh" 46 47 G4ThreadLocal G4VXTRenergyLoss* TransitionRadi 48 49 //....oooOO0OOooo........oooOO0OOooo........oo 50 51 TransitionRadiationPhysics::TransitionRadiatio 52 : G4VPhysicsConstructor("XTR"), fDetector(pt 53 {} 54 55 //....oooOO0OOooo........oooOO0OOooo........oo 56 57 TransitionRadiationPhysics::~TransitionRadiati 58 59 //....oooOO0OOooo........oooOO0OOooo........oo 60 61 void TransitionRadiationPhysics::ConstructProc 62 { 63 if ("dummy" == fXTRModel) { 64 return; 65 } 66 if (0 < fVerbose) { 67 G4cout << "TransitionRadiationPhysics: XTR 68 } 69 RadiatorDescription* rDescription = fDetecto 70 71 if (fXTRModel == "gammaR") { 72 fXTRProcess = new G4GammaXTRadiator(rDescr 73 rDescr 74 rDescr 75 rDescr 76 } 77 else if (fXTRModel == "gammaM") { 78 fXTRProcess = new G4XTRGammaRadModel(rDesc 79 rDesc 80 rDesc 81 rDesc 82 } 83 else if (fXTRModel == "strawR") { 84 fXTRProcess = new G4StrawTubeXTRadiator( 85 rDescription->fLogicalVolume, rDescripti 86 3.14159, fDetector->GetAbsorberMaterial( 87 } 88 else if (fXTRModel == "regR") { 89 fXTRProcess = new G4RegularXTRadiator(rDes 90 rDes 91 rDes 92 "Reg 93 } 94 else if (fXTRModel == "transpR") { 95 // G4TransparentRegXTRadiator* 96 fXTRProcess = new G4TransparentRegXTRadiat 97 rDescription->fLogicalVolume, rDescripti 98 rDescription->fFoilThickness, rDescripti 99 "RegularXTRadiator"); 100 } 101 else if (fXTRModel == "regM") { 102 fXTRProcess = new G4XTRRegularRadModel( 103 rDescription->fLogicalVolume, rDescripti 104 rDescription->fFoilThickness, rDescripti 105 "RegularXTRadiator"); 106 } 107 else if (fXTRModel == "transpM") { 108 fXTRProcess = new XTRTransparentRegRadMode 109 rDescription->fLogicalVolume, rDescripti 110 rDescription->fFoilThickness, rDescripti 111 "RegularXTRadiator"); 112 } 113 if (!fXTRProcess) { 114 if (0 < fVerbose) { 115 G4cout << "TransitionRadiationPhysics: X 116 << "> is not known - no XTR proce 117 } 118 return; 119 } 120 121 fXTRProcess->SetVerboseLevel(fVerbose); 122 123 G4Electron* elec = G4Electron::Electron(); 124 G4ProcessManager* manager = elec->GetProcess 125 manager->AddDiscreteProcess(fXTRProcess); 126 127 G4Positron* posi = G4Positron::Positron(); 128 manager = posi->GetProcessManager(); 129 manager->AddDiscreteProcess(fXTRProcess); 130 } 131 132 //....oooOO0OOooo........oooOO0OOooo........oo 133