From 1789e842e50af779e4b38f3cd89d9dbbc3515289 Mon Sep 17 00:00:00 2001 From: Gabriele Cosmo <gabriele.cosmo@cern.ch> Date: Thu, 9 Jun 2016 16:11:08 +0200 Subject: [PATCH] Import Geant4 9.2.4 source tree --- ReleaseNotes/Patch4.9.2-4.txt | 43 + .../g4py/source/gdml/pyG4GDMLParser.cc | 2 +- .../source/materials/pyG4ElementVector.cc | 2 +- .../g4py/source/materials/pymodG4materials.cc | 2 +- .../src/BrachyAnalysisManager.cc | 2 +- .../brachytherapy/src/BrachyPhantomSD.cc | 2 +- .../src/BrachyPrimaryGeneratorAction.cc | 2 +- examples/advanced/microbeam/microbeam.out | 2 +- examples/advanced/nanobeam/nanobeam.out | 2 +- .../include/PurgMagAnalysisManager.hh | 2 +- .../analysis/include/RadmonVAnalysisLayout.hh | 2 +- .../include/RadmonVDataAnalysisFactory.hh | 2 +- .../include/RadmonVDataAnalysisFactory.icc | 2 +- .../analysis/src/RadmonAnalysis.cc | 2 +- .../analysis/src/RadmonDataAnalysisLayout.cc | 2 +- .../include/RadmonApplicationMessenger.hh | 2 +- .../application/src/RadmonApplication.cc | 2 +- .../src/RadmonApplicationAnalysisSetup.cc | 2 +- .../src/RadmonApplicationDetectorSetup.cc | 2 +- .../src/RadmonApplicationMessenger.cc | 2 +- .../src/RadmonApplicationPhysicsSetup.cc | 2 +- ...monDetectorCarvedFlatVolumeConstructor.icc | 2 +- .../include/RadmonDetectorConstruction.hh | 2 +- .../RadmonDetectorFlatVolumeComponent.icc | 2 +- .../detector/include/RadmonDetectorLayout.hh | 2 +- .../RadmonTDetectorCarvedVolumesDecorator.icc | 2 +- .../RadmonTDetectorLayerConstructor.icc | 2 +- ...monTDetectorVolumesWithGroundDecorator.icc | 2 +- ...nTDetectorVolumesWithKeyMarksDecorator.icc | 2 +- ...admonTDetectorVolumesWithPadsDecorator.icc | 2 +- ...admonTDetectorVolumesWithPinsDecorator.icc | 2 +- ...monTDetectorVolumesWithTracksDecorator.icc | 2 +- .../src/RadmonDetectorConstruction.cc | 2 +- .../src/RadmonDetectorFlatVolumeComponent.cc | 2 +- ...ctorLabelledEntitiesConstructorsFactory.cc | 2 +- .../src/RadmonDetectorLayerVolumeItem.cc | 2 +- .../detector/src/RadmonDetectorLayout.cc | 2 +- .../detector/src/RadmonDetectorMessenger.cc | 2 +- .../src/RadmonDetectorMultilayerLayout.cc | 2 +- .../RadmonLayoutEntityWithAttributes.hh | 2 +- .../include/RadmonTLabelledCollection.icc | 4 +- .../include/RadmonVLayoutSubject.hh | 2 +- .../generator/include/RadmonGunMessenger.hh | 2 +- .../include/RadmonPrimaryGeneratorAction.hh | 2 +- .../generator/src/RadmonGeneratorLayout.cc | 2 +- .../generator/src/RadmonGunMessenger.cc | 2 +- .../src/RadmonPrimaryGeneratorAction.cc | 2 +- .../physics/include/RadmonPhysicsParticles.hh | 2 +- .../include/RadmonPhysicsParticles.icc | 2 +- .../src/RadmonPhysicsNeutronBertini.cc | 2 +- .../physics/src/RadmonPhysicsNeutronBinary.cc | 2 +- .../physics/src/RadmonPhysicsParticles.cc | 2 +- .../src/RadmonSensitiveDetector.cc | 2 +- .../userActions/src/RadmonEventAction.cc | 2 +- examples/advanced/xray_fluorescence/History | 2 +- .../AnaEx01/src/AnaEx01AnalysisManager.cc | 2 +- examples/extended/biasing/B01/exampleB01.out | 2 +- .../electromagnetic/TestEm0/TestEm0.out | 2 +- .../electromagnetic/TestEm1/TestEm1.out | 6 +- .../electromagnetic/TestEm10/TestEm10.out | 4 +- .../electromagnetic/TestEm11/TestEm11.out | 4 +- .../electromagnetic/TestEm12/TestEm12.out | 4 +- .../electromagnetic/TestEm13/TestEm13.out | 6 +- .../electromagnetic/TestEm14/TestEm14.out | 4 +- .../electromagnetic/TestEm15/TestEm15.out | 2 +- .../electromagnetic/TestEm16/TestEm16.out | 4 +- .../electromagnetic/TestEm17/TestEm17.out | 8 +- .../electromagnetic/TestEm18/TestEm18.out | 4 +- .../electromagnetic/TestEm2/TestEm2.out | 4 +- .../electromagnetic/TestEm3/TestEm3.out | 4 +- .../electromagnetic/TestEm4/TestEm4.out | 4 +- .../electromagnetic/TestEm5/TestEm5.out | 4 +- .../electromagnetic/TestEm6/TestEm6.out | 8 +- .../electromagnetic/TestEm7/TestEm7.out | 12 +- .../electromagnetic/TestEm8/TestEm8.out | 2 +- .../electromagnetic/TestEm9/TestEm9.out | 4 +- examples/extended/field/field01/field01.out | 2 +- examples/extended/field/field02/field02.out | 4 +- examples/extended/field/field03/field03.out | 8 +- examples/extended/field/field04/field04.cc | 2 +- examples/extended/field/field04/field04.out | 2 +- .../extended/g3tog4/clGeometry/clGeometry.out | 639 - examples/extended/g3tog4/cltog4/cltog4.out | 352 - examples/extended/hadronic/Hadr01/hadr01.out | 2 +- .../DicomNestedPhantomParameterisation.hh | 2 +- .../src/DicomNestedPhantomParameterisation.cc | 2 +- .../DICOM/src/G4PSDoseDeposit_RegNav.cc | 2 +- .../medical/GammaTherapy/GammaTherapy.out | 4 +- .../medical/fanoCavity/fanoCavity.out | 4 +- .../medical/fanoCavity2/fanoCavity2.out | 4 +- examples/extended/optical/LXe/LXe.out | 2 +- .../extended/persistency/gdml/G02/geotest.cc | 2 +- .../gdml/G02/src/DetectorConstruction.cc | 2 +- .../extended/polarisation/Pol01/pol01.out | 4 +- examples/novice/N01/exampleN01.out | 2 +- examples/novice/N02/exampleN02.out | 2 +- examples/novice/N03/exampleN03.out | 2 +- examples/novice/N04/exampleN04.out | 4 +- examples/novice/N05/exampleN05.out | 2 +- examples/novice/N06/exampleN06.out | 4 +- examples/novice/N07/exampleN07.out | 66 +- source/GNUmakefile | 6 +- .../detector/include/G4VReadOutGeometry.hh | 2 +- source/digits_hits/scorer/src/G4PSCellFlux.cc | 2 +- .../scorer/src/G4PSCylinderSurfaceCurrent.cc | 2 +- .../scorer/src/G4PSCylinderSurfaceFlux.cc | 2 +- .../digits_hits/scorer/src/G4PSDoseDeposit.cc | 2 +- .../scorer/src/G4PSFlatSurfaceCurrent.cc | 2 +- .../scorer/src/G4PSFlatSurfaceFlux.cc | 2 +- .../scorer/src/G4PSPassageCellFlux.cc | 2 +- .../scorer/src/G4PSSphereSurfaceCurrent.cc | 2 +- .../scorer/src/G4PSSphereSurfaceFlux.cc | 2 +- .../utils/src/G4ScoreLogColorMap.cc | 2 +- .../digits_hits/utils/src/G4VScoreColorMap.cc | 2 +- .../src/G4ErrorMagFieldLimitProcess.cc | 2 +- .../include/G4MagIntegratorStepper.hh | 2 +- .../include/G4MagIntegratorStepper.icc | 2 +- .../magneticfield/src/G4ChordFinder.cc | 2 +- .../magneticfield/src/G4ClassicalRK4.cc | 2 +- .../magneticfield/src/G4EqEMFieldWithSpin.cc | 2 +- .../src/G4MagIntegratorDriver.cc | 2 +- .../magneticfield/src/G4Mag_SpinEqRhs.cc | 2 +- .../magneticfield/src/G4SimpleHeum.cc | 2 +- .../management/include/G4LogicalSurface.hh | 2 +- .../management/include/G4LogicalSurface.icc | 2 +- .../management/include/G4VTouchable.icc | 2 +- .../management/src/G4LogicalVolume.cc | 2 +- .../management/src/G4SmartVoxelHeader.cc | 2 +- .../geometry/management/src/G4VTouchable.cc | 2 +- .../navigation/include/G4Navigator.hh | 2 +- .../include/G4PhantomParameterisation.hh | 2 +- .../navigation/include/G4PropagatorInField.hh | 2 +- .../include/G4PropagatorInField.icc | 2 +- .../include/G4RegularNavigationHelper.hh | 2 +- .../include/G4VIntersectionLocator.hh | 2 +- .../geometry/navigation/src/G4BrentLocator.cc | 2 +- .../navigation/src/G4VIntersectionLocator.cc | 2 +- source/geometry/solids/CSG/src/G4Cons.cc | 2 +- source/geometry/solids/CSG/src/G4Orb.cc | 2 +- source/geometry/solids/CSG/src/G4Sphere.cc | 2 +- source/geometry/solids/CSG/src/G4Torus.cc | 2 +- source/geometry/solids/CSG/src/G4Tubs.cc | 2 +- .../solids/specific/src/G4Ellipsoid.cc | 2 +- .../solids/specific/src/G4Paraboloid.cc | 2 +- .../solids/specific/src/G4PolyconeSide.cc | 2 +- .../solids/specific/src/G4TessellatedSolid.cc | 2 +- .../solids/specific/src/G4TwistTubsSide.cc | 2 +- .../solids/specific/src/G4VCSGfaceted.cc | 2 +- .../volumes/include/G4NavigationHistory.hh | 2 +- .../volumes/include/G4NavigationHistory.icc | 2 +- .../volumes/include/G4TouchableHistory.hh | 2 +- .../volumes/include/G4TouchableHistory.icc | 2 +- .../geometry/volumes/src/G4AssemblyVolume.cc | 2 +- .../volumes/src/G4NavigationHistory.cc | 2 +- .../geometry/volumes/src/G4NavigationLevel.cc | 2 +- .../geometry/volumes/src/G4PVParameterised.cc | 2 +- .../volumes/src/G4TouchableHistory.cc | 2 +- source/global/History | 5 +- source/global/management/include/G4String.hh | 2 +- source/global/management/include/G4String.icc | 2 +- source/global/management/include/G4Version.hh | 12 +- .../include/G4MaterialStoppingICRU73.hh | 2 +- .../include/G4SimpleMaterialStoppingICRU73.hh | 2 +- .../materials/src/G4MaterialStoppingICRU73.cc | 2 +- .../src/G4SimpleMaterialStoppingICRU73.cc | 2 +- source/particles/hadrons/ions/src/G4Alpha.cc | 2 +- source/particles/hadrons/ions/src/G4He3.cc | 2 +- source/particles/hadrons/ions/src/G4Triton.cc | 2 +- source/particles/management/src/G4IonTable.cc | 2 +- .../persistency/gdml/include/G4GDMLParser.hh | 2 +- .../persistency/gdml/include/G4GDMLParser.icc | 2 +- source/persistency/gdml/include/G4GDMLRead.hh | 2 +- .../gdml/include/G4GDMLReadMaterials.hh | 2 +- .../gdml/include/G4GDMLReadParamvol.hh | 2 +- .../gdml/include/G4GDMLReadSetup.hh | 2 +- .../gdml/include/G4GDMLReadSolids.hh | 2 +- .../gdml/include/G4GDMLReadStructure.hh | 2 +- .../persistency/gdml/include/G4GDMLWrite.hh | 2 +- .../gdml/include/G4GDMLWriteDefine.hh | 2 +- .../gdml/include/G4GDMLWriteMaterials.hh | 2 +- .../gdml/include/G4GDMLWriteParamvol.hh | 2 +- .../gdml/include/G4GDMLWriteSetup.hh | 2 +- .../gdml/include/G4GDMLWriteSolids.hh | 2 +- .../gdml/include/G4GDMLWriteStructure.hh | 2 +- source/persistency/gdml/src/G4GDMLParser.cc | 2 +- source/persistency/gdml/src/G4GDMLRead.cc | 2 +- .../persistency/gdml/src/G4GDMLReadDefine.cc | 2 +- .../gdml/src/G4GDMLReadParamvol.cc | 2 +- .../persistency/gdml/src/G4GDMLReadSetup.cc | 2 +- .../persistency/gdml/src/G4GDMLReadSolids.cc | 2 +- .../gdml/src/G4GDMLReadStructure.cc | 2 +- source/persistency/gdml/src/G4GDMLWrite.cc | 2 +- .../persistency/gdml/src/G4GDMLWriteDefine.cc | 2 +- .../gdml/src/G4GDMLWriteMaterials.cc | 2 +- .../gdml/src/G4GDMLWriteParamvol.cc | 2 +- .../persistency/gdml/src/G4GDMLWriteSetup.cc | 2 +- .../persistency/gdml/src/G4GDMLWriteSolids.cc | 2 +- .../gdml/src/G4GDMLWriteStructure.cc | 2 +- .../include/G4BertiniNeutronBuilder.hh | 2 +- .../builders/include/G4BertiniPiKBuilder.hh | 2 +- .../include/G4BertiniProtonBuilder.hh | 2 +- .../include/G4BinaryNeutronBuilder.hh | 2 +- .../builders/include/G4BinaryPiKBuilder.hh | 2 +- .../builders/include/G4BinaryProtonBuilder.hh | 2 +- .../include/G4FTFBinaryNeutronBuilder.hh | 2 +- .../builders/include/G4FTFBinaryPiKBuilder.hh | 2 +- .../include/G4FTFBinaryProtonBuilder.hh | 2 +- .../builders/include/G4FTFCNeutronBuilder.hh | 2 +- .../builders/include/G4FTFCPiKBuilder.hh | 2 +- .../builders/include/G4FTFCProtonBuilder.hh | 2 +- .../builders/include/G4FTFPNeutronBuilder.hh | 2 +- .../builders/include/G4FTFPPiKBuilder.hh | 2 +- .../builders/include/G4FTFPProtonBuilder.hh | 2 +- .../builders/include/G4MiscLHEPBuilder.hh | 2 +- .../builders/include/G4PrecoNeutronBuilder.hh | 2 +- .../builders/include/G4PrecoProtonBuilder.hh | 2 +- .../include/G4QGSBinaryNeutronBuilder.hh | 2 +- .../builders/include/G4QGSBinaryPiKBuilder.hh | 2 +- .../include/G4QGSBinaryProtonBuilder.hh | 2 +- .../include/G4QGSCEflowNeutronBuilder.hh | 2 +- .../builders/include/G4QGSCEflowPiKBuilder.hh | 2 +- .../include/G4QGSCEflowProtonBuilder.hh | 2 +- .../builders/include/G4QGSCNeutronBuilder.hh | 2 +- .../builders/include/G4QGSCPiKBuilder.hh | 2 +- .../builders/include/G4QGSCProtonBuilder.hh | 2 +- .../builders/include/G4QGSPNeutronBuilder.hh | 2 +- .../builders/include/G4QGSPPiKBuilder.hh | 2 +- .../builders/include/G4QGSPProtonBuilder.hh | 2 +- .../builders/include/G4VNeutronBuilder.hh | 2 +- .../builders/include/G4VPiKBuilder.hh | 2 +- .../builders/include/G4VProtonBuilder.hh | 2 +- .../builders/src/G4BertiniNeutronBuilder.cc | 2 +- .../builders/src/G4BertiniPiKBuilder.cc | 2 +- .../builders/src/G4BertiniProtonBuilder.cc | 2 +- .../builders/src/G4BinaryNeutronBuilder.cc | 2 +- .../builders/src/G4BinaryPiKBuilder.cc | 2 +- .../builders/src/G4BinaryProtonBuilder.cc | 2 +- .../builders/src/G4FTFBinaryNeutronBuilder.cc | 2 +- .../builders/src/G4FTFBinaryPiKBuilder.cc | 2 +- .../builders/src/G4FTFBinaryProtonBuilder.cc | 2 +- .../builders/src/G4FTFCNeutronBuilder.cc | 2 +- .../builders/src/G4FTFCPiKBuilder.cc | 2 +- .../builders/src/G4FTFCProtonBuilder.cc | 2 +- .../builders/src/G4FTFPNeutronBuilder.cc | 2 +- .../builders/src/G4FTFPPiKBuilder.cc | 2 +- .../builders/src/G4FTFPProtonBuilder.cc | 2 +- .../builders/src/G4IonBinaryCascadePhysics.cc | 2 +- .../builders/src/G4MiscLHEPBuilder.cc | 2 +- .../builders/src/G4PrecoNeutronBuilder.cc | 2 +- .../builders/src/G4PrecoProtonBuilder.cc | 2 +- .../builders/src/G4QGSBinaryNeutronBuilder.cc | 2 +- .../builders/src/G4QGSBinaryPiKBuilder.cc | 2 +- .../builders/src/G4QGSBinaryProtonBuilder.cc | 2 +- .../builders/src/G4QGSCEflowNeutronBuilder.cc | 2 +- .../builders/src/G4QGSCEflowPiKBuilder.cc | 2 +- .../builders/src/G4QGSCEflowProtonBuilder.cc | 2 +- .../builders/src/G4QGSCNeutronBuilder.cc | 2 +- .../builders/src/G4QGSCPiKBuilder.cc | 2 +- .../builders/src/G4QGSCProtonBuilder.cc | 2 +- .../builders/src/G4QGSPNeutronBuilder.cc | 2 +- .../builders/src/G4QGSPPiKBuilder.cc | 2 +- .../builders/src/G4QGSPProtonBuilder.cc | 2 +- .../builders/src/G4VNeutronBuilder.cc | 2 +- .../builders/src/G4VPiKBuilder.cc | 2 +- .../builders/src/G4VProtonBuilder.cc | 2 +- .../lists/src/G4HadronInelasticQBBC.cc | 2 +- .../lists/src/HadronPhysicsQGSC.cc | 2 +- .../cuts/include/G4ProductionCutsTable.hh | 2 +- .../cuts/include/G4RToEConvForElectron.hh | 2 +- .../cuts/include/G4RToEConvForGamma.hh | 2 +- .../cuts/include/G4RToEConvForPositron.hh | 2 +- .../cuts/include/G4RToEConvForProton.hh | 2 +- .../cuts/include/G4VRangeToEnergyConverter.hh | 2 +- .../cuts/src/G4ProductionCutsTable.cc | 2 +- .../cuts/src/G4RToEConvForElectron.cc | 2 +- .../processes/cuts/src/G4RToEConvForGamma.cc | 2 +- .../cuts/src/G4RToEConvForPositron.cc | 2 +- .../processes/cuts/src/G4RToEConvForProton.cc | 2 +- .../cuts/src/G4VRangeToEnergyConverter.cc | 2 +- .../lowenergy/include/G4DNAProcess.icc | 2 +- .../lowenergy/include/G4FinalStateProduct.hh | 2 +- ...rossSectionExcitationMillerGreenPartial.cc | 2 +- .../G4CrossSectionIonisationBornPartial.cc | 2 +- .../src/G4FinalStateChargeDecrease.cc | 2 +- .../src/G4FinalStateChargeIncrease.cc | 2 +- .../lowenergy/src/G4FinalStateProduct.cc | 2 +- .../lowenergy/src/G4PenelopePhotoElectric.cc | 2 +- .../src/G4PenelopePhotoElectricModel.cc | 2 +- .../lowenergy/src/G4hLowEnergyLoss.cc | 2 +- .../muons/src/G4MuPairProductionModel.cc | 2 +- .../polarisation/src/G4PolarizationHelper.cc | 2 +- .../src/G4PolarizedAnnihilationModel.cc | 2 +- .../polarisation/src/G4StokesVector.cc | 2 +- .../include/G4UniversalFluctuation.hh | 2 +- .../standard/include/G4ionIonisation.hh | 2 +- .../standard/src/G4UniversalFluctuation.cc | 2 +- .../standard/src/G4ionIonisation.cc | 2 +- .../utils/src/G4EmCorrections.cc | 2 +- .../electromagnetic/utils/src/G4VEmProcess.cc | 2 +- .../utils/src/G4VEnergyLossProcess.cc | 2 +- .../utils/src/G4ionEffectiveCharge.cc | 2 +- .../include/G4CrossSectionDataSetRegistry.hh | 2 +- .../include/G4CrossSectionDataStore.hh | 2 +- .../include/G4VCrossSectionDataSet.hh | 2 +- .../src/G4CrossSectionDataSetRegistry.cc | 2 +- .../src/G4CrossSectionDataStore.cc | 2 +- .../src/G4VCrossSectionDataSet.cc | 2 +- .../include/G4HadronicProcessStore.hh | 2 +- .../management/src/G4HadronicProcessStore.cc | 2 +- .../processes/hadronic/models/cascade/History | 7 + .../cascade/cascade/src/G4CascadeInterface.cc | 165 +- .../chiral_inv_phase_space/body/History | 8 + .../body/src/G4QEnvironment.cc | 13468 ++++++++-------- .../chiral_inv_phase_space/interface/History | 7 + .../include/G4ElectroNuclearReaction.hh | 2 +- .../src/G4ChiralInvariantPhaseSpace.cc | 113 +- .../interface/src/G4QCaptureAtRest.cc | 2 +- .../interface/src/G4QElasticCrossSection.cc | 2 +- .../include/G4HadronElastic.hh | 2 +- .../coherent_elastic/src/G4HadronElastic.cc | 2 +- .../fission/src/G4FissionProbability.cc | 2 +- .../G4CameronGilbertPairingCorrections.hh | 2 +- .../G4CameronGilbertShellCorrections.hh | 2 +- .../G4CameronShellPlusPairingCorrections.hh | 2 +- .../G4CameronTruranHilfPairingCorrections.hh | 2 +- .../G4CameronTruranHilfShellCorrections.hh | 2 +- .../G4ConstantLevelDensityParameter.hh | 2 +- .../util/include/G4CookPairingCorrections.hh | 2 +- .../util/include/G4CookShellCorrections.hh | 2 +- .../util/include/G4CoulombBarrier.hh | 2 +- .../util/include/G4DeuteronCoulombBarrier.hh | 2 +- .../G4EvaporationLevelDensityParameter.hh | 2 +- .../util/include/G4He3CoulombBarrier.hh | 2 +- .../util/include/G4NeutronCoulombBarrier.hh | 2 +- .../util/include/G4PairingCorrection.hh | 2 +- .../util/include/G4ProtonCoulombBarrier.hh | 2 +- .../util/include/G4ShellCorrection.hh | 2 +- .../util/include/G4TritonCoulombBarrier.hh | 2 +- .../util/include/G4VCoulombBarrier.hh | 2 +- .../util/include/G4VEmissionProbability.hh | 2 +- .../util/include/G4VLevelDensityParameter.hh | 2 +- .../src/G4CameronGilbertPairingCorrections.cc | 2 +- .../src/G4CameronGilbertShellCorrections.cc | 2 +- .../G4CameronShellPlusPairingCorrections.cc | 2 +- .../G4CameronTruranHilfPairingCorrections.cc | 2 +- .../G4CameronTruranHilfShellCorrections.cc | 2 +- .../util/src/G4CookPairingCorrections.cc | 2 +- .../util/src/G4CookShellCorrections.cc | 2 +- .../util/src/G4CoulombBarrier.cc | 2 +- .../src/G4EvaporationLevelDensityParameter.cc | 2 +- .../util/src/G4PairingCorrection.cc | 2 +- .../util/src/G4ShellCorrection.cc | 2 +- .../util/src/G4VCoulombBarrier.cc | 2 +- .../util/src/G4VEmissionProbability.cc | 2 +- .../util/src/G4VLevelDensityParameter.cc | 2 +- .../include/G4HadronicInteraction.hh | 2 +- .../include/G4HadronicInteractionRegistry.hh | 2 +- .../include/G4InelasticInteraction.hh | 2 +- .../management/src/G4HadronicInteraction.cc | 2 +- .../src/G4HadronicInteractionRegistry.cc | 2 +- .../management/src/G4InelasticInteraction.cc | 2 +- .../include/G4VLongitudinalStringDecay.hh | 2 +- .../hadronization/src/G4HadronBuilder.cc | 2 +- .../src/G4LundStringFragmentation.cc | 2 +- .../src/G4VLongitudinalStringDecay.cc | 2 +- .../src/G4MuNuclearInteraction.cc | 2 +- .../include/G4PreCompoundEmission.icc | 2 +- .../include/G4PreCompoundFragmentVector.hh | 2 +- .../include/G4VPreCompoundFragment.hh | 2 +- .../exciton_model/src/G4PreCompoundAlpha.cc | 2 +- .../src/G4PreCompoundDeuteron.cc | 2 +- .../src/G4PreCompoundEmission.cc | 2 +- .../src/G4PreCompoundFragment.cc | 2 +- .../src/G4PreCompoundFragmentVector.cc | 2 +- .../exciton_model/src/G4PreCompoundHe3.cc | 2 +- .../exciton_model/src/G4PreCompoundIon.cc | 2 +- .../exciton_model/src/G4PreCompoundNeutron.cc | 2 +- .../exciton_model/src/G4PreCompoundNucleon.cc | 2 +- .../exciton_model/src/G4PreCompoundProton.cc | 2 +- .../src/G4PreCompoundTransitions.cc | 2 +- .../exciton_model/src/G4PreCompoundTriton.cc | 2 +- .../src/G4VPreCompoundFragment.cc | 2 +- .../models/rpg/include/G4RPGInelastic.hh | 2 +- .../rpg/include/G4RPGNucleonInelastic.hh | 2 +- .../models/rpg/include/G4RPGPionInelastic.hh | 2 +- .../hadronic/models/rpg/src/G4RPGInelastic.cc | 2 +- .../models/rpg/src/G4RPGNucleonInelastic.cc | 2 +- .../models/rpg/src/G4RPGPionInelastic.cc | 2 +- .../include/G4ElectronNuclearProcess.hh | 2 +- .../include/G4PhotoNuclearProcess.hh | 2 +- .../processes/src/G4ElectronNuclearProcess.cc | 2 +- .../processes/src/G4PhotoNuclearProcess.cc | 2 +- .../processes/src/G4PositronNuclearProcess.cc | 2 +- .../stopping/src/G4MuonMinusCaptureAtRest.cc | 2 +- .../optical/include/G4OpBoundaryProcess.hh | 2 +- source/tracking/History | 2 +- source/tracking/src/G4SteppingManager.cc | 2 +- .../OpenGL/include/G4OpenGLQtViewer.hh | 2 +- .../OpenGL/include/G4OpenGLViewer.hh | 2 +- .../OpenGL/include/G4OpenGLXViewer.hh | 2 +- .../OpenGL/src/G4OpenGLImmediateQt.cc | 2 +- .../OpenGL/src/G4OpenGLImmediateQtViewer.cc | 2 +- .../src/G4OpenGLImmediateWin32Viewer.cc | 2 +- .../OpenGL/src/G4OpenGLImmediateXViewer.cc | 2 +- .../OpenGL/src/G4OpenGLImmediateXmViewer.cc | 2 +- .../OpenGL/src/G4OpenGLQtViewer.cc | 2 +- .../OpenGL/src/G4OpenGLStoredQt.cc | 2 +- .../OpenGL/src/G4OpenGLStoredQtViewer.cc | 2 +- .../OpenGL/src/G4OpenGLStoredWin32Viewer.cc | 2 +- .../OpenGL/src/G4OpenGLStoredXViewer.cc | 2 +- .../OpenGL/src/G4OpenGLStoredXmViewer.cc | 2 +- .../OpenGL/src/G4OpenGLViewer.cc | 2 +- .../OpenGL/src/G4OpenGLWin32Viewer.cc | 2 +- .../OpenGL/src/G4OpenGLXViewer.cc | 2 +- .../OpenGL/src/G4OpenGLXmViewer.cc | 2 +- .../src/G4OpenGLXmWindowHandlingCallbacks.cc | 2 +- .../management/include/G4ViewParameters.hh | 2 +- .../management/include/G4ViewParameters.icc | 2 +- .../management/include/G4VisManager.hh | 2 +- .../management/include/G4VisManager.icc | 2 +- .../visualization/management/src/G4VViewer.cc | 2 +- .../management/src/G4ViewParameters.cc | 2 +- .../management/src/G4VisCommandsViewer.cc | 2 +- .../management/src/G4VisManager.cc | 2 +- 424 files changed, 7558 insertions(+), 8229 deletions(-) create mode 100644 ReleaseNotes/Patch4.9.2-4.txt diff --git a/ReleaseNotes/Patch4.9.2-4.txt b/ReleaseNotes/Patch4.9.2-4.txt new file mode 100644 index 0000000000..888d1642d3 --- /dev/null +++ b/ReleaseNotes/Patch4.9.2-4.txt @@ -0,0 +1,43 @@ + + Geant4 9.2 - patch-04 Release Notes + ----------------------------------- + + 16 September 2010 + +List of fixes included in this public patch since the public release 9.2.p03: + + o Hadronic Processes: + ------------------ + + models/cascade: + o Fix for long-standing problem of energy non conservation in pion-nuclear + reaction on very light nuclei (in particular He) in G4CascadeInterface. + The workaround re-samples the interaction in the rare case when an + unphysical final state with baryon number violation is generated. + + models/CHIPS: + o Fix in G4QEnvironment for a rare problem of anomalous event with high + pT jet observed in ATLAS, identified in a Gamma+A -> X reaction with + gamma energy of 2 GeV, for which at least one of the secondaries was + created with too much kinetic energy (up to 90 GeV). + Addresses problem report #1126 and relates only to 9.2 release series. + o Fix in G4ChiralInvariantPhaseSpace to catch previously un-handled + exceptions produced when a 'chipolino' pseudo-particle is produced by + the model and thrown by Q4QEnvironment::Fragment; handles the case in + which Q4QEnvironment returns a 90000000 fragment, and converts it to + a gamma. Addressing problem report #1138. + + ---------------------------------------------------------------------------- + + Technical Notes + --------------- + + o This is a cumulative patch and can be applied on top of release 9.2, + 9.2.p01, 9.2.p02 or 9.2.p03. + o Technical notes distributed for release 9.2 are also applicable and + valid for this patch. + +The code and rebuilt binary libraries for release 9.2 are available +through our "Download" Web page. + +Please refer to the Geant4 User Documentation: + http://cern.ch/geant4/support/userdocuments.shtml +for further information about using Geant4. diff --git a/environments/g4py/source/gdml/pyG4GDMLParser.cc b/environments/g4py/source/gdml/pyG4GDMLParser.cc index 041f471bd3..34723a7b2d 100644 --- a/environments/g4py/source/gdml/pyG4GDMLParser.cc +++ b/environments/g4py/source/gdml/pyG4GDMLParser.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: pyG4GDMLParser.cc,v 1.2.2.1 2009/08/11 15:48:46 gcosmo Exp $ -// $Name: geant4-09-02-patch-03 $ +// $Name: geant4-09-02-patch-04 $ // ==================================================================== // pyG4GDMLParser.cc // diff --git a/environments/g4py/source/materials/pyG4ElementVector.cc b/environments/g4py/source/materials/pyG4ElementVector.cc index 6595794deb..b5f34e58e9 100644 --- a/environments/g4py/source/materials/pyG4ElementVector.cc +++ b/environments/g4py/source/materials/pyG4ElementVector.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: pyG4ElementVector.cc,v 1.1.2.1 2009/08/11 15:48:46 gcosmo Exp $ -// $Name: geant4-09-02-patch-03 $ +// $Name: geant4-09-02-patch-04 $ // ==================================================================== // pyG4ElementVector.cc // diff --git a/environments/g4py/source/materials/pymodG4materials.cc b/environments/g4py/source/materials/pymodG4materials.cc index 89f5f8c047..22f5f5d087 100644 --- a/environments/g4py/source/materials/pymodG4materials.cc +++ b/environments/g4py/source/materials/pymodG4materials.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: pymodG4materials.cc,v 1.7.2.1 2009/08/11 15:48:46 gcosmo Exp $ -// $Name: geant4-09-02-patch-03 $ +// $Name: geant4-09-02-patch-04 $ // ==================================================================== // pymodG4materials.cc [Geant4Py module] // diff --git a/examples/advanced/brachytherapy/src/BrachyAnalysisManager.cc b/examples/advanced/brachytherapy/src/BrachyAnalysisManager.cc index 6c750d28f0..5cab76c66f 100644 --- a/examples/advanced/brachytherapy/src/BrachyAnalysisManager.cc +++ b/examples/advanced/brachytherapy/src/BrachyAnalysisManager.cc @@ -33,7 +33,7 @@ // ******************************* // // $Id: BrachyAnalysisManager.cc,v 1.20.2.1 2009/03/03 11:54:09 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-02-patch-03 $ +// GEANT4 tag $Name: geant4-09-02-patch-04 $ // #ifdef G4ANALYSIS_USE diff --git a/examples/advanced/brachytherapy/src/BrachyPhantomSD.cc b/examples/advanced/brachytherapy/src/BrachyPhantomSD.cc index eff41348ac..27cdb1cffb 100644 --- a/examples/advanced/brachytherapy/src/BrachyPhantomSD.cc +++ b/examples/advanced/brachytherapy/src/BrachyPhantomSD.cc @@ -34,7 +34,7 @@ // ******************************** // // $Id: BrachyPhantomSD.cc,v 1.13.4.1 2009/03/03 11:54:09 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-02-patch-03 $ +// GEANT4 tag $Name: geant4-09-02-patch-04 $ // #include "BrachyPhantomSD.hh" #ifdef G4ANALYSIS_USE diff --git a/examples/advanced/brachytherapy/src/BrachyPrimaryGeneratorAction.cc b/examples/advanced/brachytherapy/src/BrachyPrimaryGeneratorAction.cc index 38c5488fe0..058b1d087a 100644 --- a/examples/advanced/brachytherapy/src/BrachyPrimaryGeneratorAction.cc +++ b/examples/advanced/brachytherapy/src/BrachyPrimaryGeneratorAction.cc @@ -38,7 +38,7 @@ // ******************************************** // // $Id: BrachyPrimaryGeneratorAction.cc,v 1.18.4.1 2009/03/03 11:54:09 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-02-patch-03 $ +// GEANT4 tag $Name: geant4-09-02-patch-04 $ // #include "globals.hh" #include "BrachyPrimaryGeneratorAction.hh" diff --git a/examples/advanced/microbeam/microbeam.out b/examples/advanced/microbeam/microbeam.out index 7a36e14af2..84d9aea24e 100644 --- a/examples/advanced/microbeam/microbeam.out +++ b/examples/advanced/microbeam/microbeam.out @@ -4,7 +4,7 @@ ############################################ ************************************************************* - Geant4 version Name: geant4-09-02-patch-03-ref (29-January-2010) + Geant4 version Name: geant4-09-02-patch-04-ref (16-September-2010) Copyright : Geant4 Collaboration Reference : NIM A 506 (2003), 250-303 WWW : http://cern.ch/geant4 diff --git a/examples/advanced/nanobeam/nanobeam.out b/examples/advanced/nanobeam/nanobeam.out index 71b98a332a..8258e931a5 100644 --- a/examples/advanced/nanobeam/nanobeam.out +++ b/examples/advanced/nanobeam/nanobeam.out @@ -4,7 +4,7 @@ ############################################ ************************************************************* - Geant4 version Name: geant4-09-02-patch-03-ref (29-January-2010) + Geant4 version Name: geant4-09-02-patch-04-ref (16-September-2010) Copyright : Geant4 Collaboration Reference : NIM A 506 (2003), 250-303 WWW : http://cern.ch/geant4 diff --git a/examples/advanced/purging_magnet/include/PurgMagAnalysisManager.hh b/examples/advanced/purging_magnet/include/PurgMagAnalysisManager.hh index ee80c3ccf1..ef54449cf9 100644 --- a/examples/advanced/purging_magnet/include/PurgMagAnalysisManager.hh +++ b/examples/advanced/purging_magnet/include/PurgMagAnalysisManager.hh @@ -33,7 +33,7 @@ // ************************************ // // $Id: PurgMagAnalysisManager.hh,v 1.3.4.1 2009/08/11 14:22:47 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-02-patch-03 $ +// GEANT4 tag $Name: geant4-09-02-patch-04 $ // #ifdef G4ANALYSIS_USE diff --git a/examples/advanced/radiation_monitor/analysis/include/RadmonVAnalysisLayout.hh b/examples/advanced/radiation_monitor/analysis/include/RadmonVAnalysisLayout.hh index 97b6dabf8c..860acdefdd 100644 --- a/examples/advanced/radiation_monitor/analysis/include/RadmonVAnalysisLayout.hh +++ b/examples/advanced/radiation_monitor/analysis/include/RadmonVAnalysisLayout.hh @@ -29,7 +29,7 @@ // Main author: Riccardo Capra <capra@ge.infn.it> // // Id: $Id: RadmonVAnalysisLayout.hh,v 1.1.2.2.4.1 2009/08/11 14:20:35 gcosmo Exp $ -// Tag: $Name: geant4-09-02-patch-03 $ +// Tag: $Name: geant4-09-02-patch-04 $ // // Description: Abstract class to keep track of the analysis options // diff --git a/examples/advanced/radiation_monitor/analysis/include/RadmonVDataAnalysisFactory.hh b/examples/advanced/radiation_monitor/analysis/include/RadmonVDataAnalysisFactory.hh index e79c8d0c75..6692279116 100644 --- a/examples/advanced/radiation_monitor/analysis/include/RadmonVDataAnalysisFactory.hh +++ b/examples/advanced/radiation_monitor/analysis/include/RadmonVDataAnalysisFactory.hh @@ -29,7 +29,7 @@ // Main author: Riccardo Capra <capra@ge.infn.it> // // Id: $Id: RadmonVDataAnalysisFactory.hh,v 1.1.2.2.4.1 2009/08/11 14:20:35 gcosmo Exp $ -// Tag: $Name: geant4-09-02-patch-03 $ +// Tag: $Name: geant4-09-02-patch-04 $ // // Description: Abstract class of a factory of analysis items // diff --git a/examples/advanced/radiation_monitor/analysis/include/RadmonVDataAnalysisFactory.icc b/examples/advanced/radiation_monitor/analysis/include/RadmonVDataAnalysisFactory.icc index a99d0682d7..27cccec8d9 100644 --- a/examples/advanced/radiation_monitor/analysis/include/RadmonVDataAnalysisFactory.icc +++ b/examples/advanced/radiation_monitor/analysis/include/RadmonVDataAnalysisFactory.icc @@ -29,7 +29,7 @@ // Main author: Riccardo Capra <capra@ge.infn.it> // // Id: $Id: RadmonVDataAnalysisFactory.icc,v 1.1.2.2.4.1 2009/08/11 14:20:35 gcosmo Exp $ -// Tag: $Name: geant4-09-02-patch-03 $ +// Tag: $Name: geant4-09-02-patch-04 $ // #ifndef RADMONVDATAANALYSISFACTORY_HH diff --git a/examples/advanced/radiation_monitor/analysis/src/RadmonAnalysis.cc b/examples/advanced/radiation_monitor/analysis/src/RadmonAnalysis.cc index 83556e3882..39f83dcc81 100644 --- a/examples/advanced/radiation_monitor/analysis/src/RadmonAnalysis.cc +++ b/examples/advanced/radiation_monitor/analysis/src/RadmonAnalysis.cc @@ -29,7 +29,7 @@ // Main author: Riccardo Capra <capra@ge.infn.it> // // Id: $Id: RadmonAnalysis.cc,v 1.2.2.2.4.1 2009/08/11 14:20:35 gcosmo Exp $ -// Tag: $Name: geant4-09-02-patch-03 $ +// Tag: $Name: geant4-09-02-patch-04 $ // // Include files diff --git a/examples/advanced/radiation_monitor/analysis/src/RadmonDataAnalysisLayout.cc b/examples/advanced/radiation_monitor/analysis/src/RadmonDataAnalysisLayout.cc index 511c8589e9..107b4bda05 100644 --- a/examples/advanced/radiation_monitor/analysis/src/RadmonDataAnalysisLayout.cc +++ b/examples/advanced/radiation_monitor/analysis/src/RadmonDataAnalysisLayout.cc @@ -29,7 +29,7 @@ // Main author: Riccardo Capra <capra@ge.infn.it> // // Id: $Id: RadmonDataAnalysisLayout.cc,v 1.1.2.2.4.1 2009/08/11 14:20:35 gcosmo Exp $ -// Tag: $Name: geant4-09-02-patch-03 $ +// Tag: $Name: geant4-09-02-patch-04 $ // // Include files diff --git a/examples/advanced/radiation_monitor/application/include/RadmonApplicationMessenger.hh b/examples/advanced/radiation_monitor/application/include/RadmonApplicationMessenger.hh index 078737a127..e8e1edda71 100644 --- a/examples/advanced/radiation_monitor/application/include/RadmonApplicationMessenger.hh +++ b/examples/advanced/radiation_monitor/application/include/RadmonApplicationMessenger.hh @@ -29,7 +29,7 @@ // Main author: Riccardo Capra <capra@ge.infn.it> // // Id: $Id: RadmonApplicationMessenger.hh,v 1.1.2.2.4.1 2009/08/11 14:20:35 gcosmo Exp $ -// Tag: $Name: geant4-09-02-patch-03 $ +// Tag: $Name: geant4-09-02-patch-04 $ // // Description: UI commands for managing application level options // diff --git a/examples/advanced/radiation_monitor/application/src/RadmonApplication.cc b/examples/advanced/radiation_monitor/application/src/RadmonApplication.cc index 8989059e47..828cc85c8a 100644 --- a/examples/advanced/radiation_monitor/application/src/RadmonApplication.cc +++ b/examples/advanced/radiation_monitor/application/src/RadmonApplication.cc @@ -30,7 +30,7 @@ // Main author: Riccardo Capra <capra@ge.infn.it> // // Id: $Id: RadmonApplication.cc,v 1.12.2.2.4.1 2009/08/11 14:20:35 gcosmo Exp $ -// Tag: $Name: geant4-09-02-patch-03 $ +// Tag: $Name: geant4-09-02-patch-04 $ // // Include files diff --git a/examples/advanced/radiation_monitor/application/src/RadmonApplicationAnalysisSetup.cc b/examples/advanced/radiation_monitor/application/src/RadmonApplicationAnalysisSetup.cc index 92bd0982c3..4cd4cc57a2 100644 --- a/examples/advanced/radiation_monitor/application/src/RadmonApplicationAnalysisSetup.cc +++ b/examples/advanced/radiation_monitor/application/src/RadmonApplicationAnalysisSetup.cc @@ -29,7 +29,7 @@ // Main author: Riccardo Capra <capra@ge.infn.it> // // Id: $Id: RadmonApplicationAnalysisSetup.cc,v 1.3.2.2.4.1 2009/08/11 14:20:35 gcosmo Exp $ -// Tag: $Name: geant4-09-02-patch-03 $ +// Tag: $Name: geant4-09-02-patch-04 $ // // Include files diff --git a/examples/advanced/radiation_monitor/application/src/RadmonApplicationDetectorSetup.cc b/examples/advanced/radiation_monitor/application/src/RadmonApplicationDetectorSetup.cc index 57c0d1ee1c..ae48ad4953 100644 --- a/examples/advanced/radiation_monitor/application/src/RadmonApplicationDetectorSetup.cc +++ b/examples/advanced/radiation_monitor/application/src/RadmonApplicationDetectorSetup.cc @@ -29,7 +29,7 @@ // Main author: Riccardo Capra <capra@ge.infn.it> // // Id: $Id: RadmonApplicationDetectorSetup.cc,v 1.1.2.2.4.1 2009/08/11 14:20:35 gcosmo Exp $ -// Tag: $Name: geant4-09-02-patch-03 $ +// Tag: $Name: geant4-09-02-patch-04 $ // // Include files diff --git a/examples/advanced/radiation_monitor/application/src/RadmonApplicationMessenger.cc b/examples/advanced/radiation_monitor/application/src/RadmonApplicationMessenger.cc index e169372d9e..51d2fe6a23 100644 --- a/examples/advanced/radiation_monitor/application/src/RadmonApplicationMessenger.cc +++ b/examples/advanced/radiation_monitor/application/src/RadmonApplicationMessenger.cc @@ -29,7 +29,7 @@ // Main author: Riccardo Capra <capra@ge.infn.it> // // Id: $Id: RadmonApplicationMessenger.cc,v 1.1.2.2.4.1 2009/08/11 14:20:35 gcosmo Exp $ -// Tag: $Name: geant4-09-02-patch-03 $ +// Tag: $Name: geant4-09-02-patch-04 $ // // Messenger commands path diff --git a/examples/advanced/radiation_monitor/application/src/RadmonApplicationPhysicsSetup.cc b/examples/advanced/radiation_monitor/application/src/RadmonApplicationPhysicsSetup.cc index 8015e0e671..2a5d78b516 100644 --- a/examples/advanced/radiation_monitor/application/src/RadmonApplicationPhysicsSetup.cc +++ b/examples/advanced/radiation_monitor/application/src/RadmonApplicationPhysicsSetup.cc @@ -29,7 +29,7 @@ // Main author: Riccardo Capra <capra@ge.infn.it> // // Id: $Id: RadmonApplicationPhysicsSetup.cc,v 1.4.2.2.4.1 2009/08/11 14:20:35 gcosmo Exp $ -// Tag: $Name: geant4-09-02-patch-03 $ +// Tag: $Name: geant4-09-02-patch-04 $ // // Include files diff --git a/examples/advanced/radiation_monitor/detector/include/RadmonDetectorCarvedFlatVolumeConstructor.icc b/examples/advanced/radiation_monitor/detector/include/RadmonDetectorCarvedFlatVolumeConstructor.icc index 0c04ae7f8b..bd10e367a0 100644 --- a/examples/advanced/radiation_monitor/detector/include/RadmonDetectorCarvedFlatVolumeConstructor.icc +++ b/examples/advanced/radiation_monitor/detector/include/RadmonDetectorCarvedFlatVolumeConstructor.icc @@ -29,7 +29,7 @@ // Main author: Riccardo Capra <capra@ge.infn.it> // // Id: $Id: RadmonDetectorCarvedFlatVolumeConstructor.icc,v 1.1.2.2.4.1 2009/08/11 14:20:35 gcosmo Exp $ -// Tag: $Name: geant4-09-02-patch-03 $ +// Tag: $Name: geant4-09-02-patch-04 $ // #ifndef RADMONDETECTORCARVEDFLATVOLUMECONSTRUCTOR_HH diff --git a/examples/advanced/radiation_monitor/detector/include/RadmonDetectorConstruction.hh b/examples/advanced/radiation_monitor/detector/include/RadmonDetectorConstruction.hh index e190329e00..ac205cd7b9 100644 --- a/examples/advanced/radiation_monitor/detector/include/RadmonDetectorConstruction.hh +++ b/examples/advanced/radiation_monitor/detector/include/RadmonDetectorConstruction.hh @@ -29,7 +29,7 @@ // Main author: Riccardo Capra <capra@ge.infn.it> // // Id: $Id: RadmonDetectorConstruction.hh,v 1.3.2.2.4.1 2009/08/11 14:20:35 gcosmo Exp $ -// Tag: $Name: geant4-09-02-patch-03 $ +// Tag: $Name: geant4-09-02-patch-04 $ // // Description: Implementation of the G4VUserDetectorConstruction // diff --git a/examples/advanced/radiation_monitor/detector/include/RadmonDetectorFlatVolumeComponent.icc b/examples/advanced/radiation_monitor/detector/include/RadmonDetectorFlatVolumeComponent.icc index e937362816..8977544632 100644 --- a/examples/advanced/radiation_monitor/detector/include/RadmonDetectorFlatVolumeComponent.icc +++ b/examples/advanced/radiation_monitor/detector/include/RadmonDetectorFlatVolumeComponent.icc @@ -29,7 +29,7 @@ // Main author: Riccardo Capra <capra@ge.infn.it> // // Id: $Id: RadmonDetectorFlatVolumeComponent.icc,v 1.1.2.2.4.1 2009/08/11 14:20:35 gcosmo Exp $ -// Tag: $Name: geant4-09-02-patch-03 $ +// Tag: $Name: geant4-09-02-patch-04 $ // #ifndef RADMONDETECTORFLATVOLUMECOMPONENT_HH diff --git a/examples/advanced/radiation_monitor/detector/include/RadmonDetectorLayout.hh b/examples/advanced/radiation_monitor/detector/include/RadmonDetectorLayout.hh index 1db4ab42e6..a4d03f2b01 100644 --- a/examples/advanced/radiation_monitor/detector/include/RadmonDetectorLayout.hh +++ b/examples/advanced/radiation_monitor/detector/include/RadmonDetectorLayout.hh @@ -29,7 +29,7 @@ // Main author: Riccardo Capra <capra@ge.infn.it> // // Id: $Id: RadmonDetectorLayout.hh,v 1.4.2.2.4.1 2009/08/11 14:20:35 gcosmo Exp $ -// Tag: $Name: geant4-09-02-patch-03 $ +// Tag: $Name: geant4-09-02-patch-04 $ // // Description: Class to keep track of the configured detector layout // diff --git a/examples/advanced/radiation_monitor/detector/include/RadmonTDetectorCarvedVolumesDecorator.icc b/examples/advanced/radiation_monitor/detector/include/RadmonTDetectorCarvedVolumesDecorator.icc index 93abd3d52b..af91359900 100644 --- a/examples/advanced/radiation_monitor/detector/include/RadmonTDetectorCarvedVolumesDecorator.icc +++ b/examples/advanced/radiation_monitor/detector/include/RadmonTDetectorCarvedVolumesDecorator.icc @@ -29,7 +29,7 @@ // Main author: Riccardo Capra <capra@ge.infn.it> // // Id: $Id: RadmonTDetectorCarvedVolumesDecorator.icc,v 1.2.2.2.4.1 2009/08/11 14:20:35 gcosmo Exp $ -// Tag: $Name: geant4-09-02-patch-03 $ +// Tag: $Name: geant4-09-02-patch-04 $ // #ifndef RADMONTDETECTORCARVEDVOLUMESDECORATOR_HH diff --git a/examples/advanced/radiation_monitor/detector/include/RadmonTDetectorLayerConstructor.icc b/examples/advanced/radiation_monitor/detector/include/RadmonTDetectorLayerConstructor.icc index 0c23211842..6ad70dd0e5 100644 --- a/examples/advanced/radiation_monitor/detector/include/RadmonTDetectorLayerConstructor.icc +++ b/examples/advanced/radiation_monitor/detector/include/RadmonTDetectorLayerConstructor.icc @@ -29,7 +29,7 @@ // Main author: Riccardo Capra <capra@ge.infn.it> // // Id: $Id: RadmonTDetectorLayerConstructor.icc,v 1.2.2.2.4.1 2009/08/11 14:20:35 gcosmo Exp $ -// Tag: $Name: geant4-09-02-patch-03 $ +// Tag: $Name: geant4-09-02-patch-04 $ // #ifndef RADMONTDETECTORLAYERCONSTRUCTOR_HH diff --git a/examples/advanced/radiation_monitor/detector/include/RadmonTDetectorVolumesWithGroundDecorator.icc b/examples/advanced/radiation_monitor/detector/include/RadmonTDetectorVolumesWithGroundDecorator.icc index f8a584b5d1..fbba803c08 100644 --- a/examples/advanced/radiation_monitor/detector/include/RadmonTDetectorVolumesWithGroundDecorator.icc +++ b/examples/advanced/radiation_monitor/detector/include/RadmonTDetectorVolumesWithGroundDecorator.icc @@ -29,7 +29,7 @@ // Main author: Riccardo Capra <capra@ge.infn.it> // // Id: $Id: RadmonTDetectorVolumesWithGroundDecorator.icc,v 1.1.2.2.4.1 2009/08/11 14:20:35 gcosmo Exp $ -// Tag: $Name: geant4-09-02-patch-03 $ +// Tag: $Name: geant4-09-02-patch-04 $ // #ifndef RADMONTDETECTORVOLUMESWITHGROUNDDECORATOR_HH diff --git a/examples/advanced/radiation_monitor/detector/include/RadmonTDetectorVolumesWithKeyMarksDecorator.icc b/examples/advanced/radiation_monitor/detector/include/RadmonTDetectorVolumesWithKeyMarksDecorator.icc index c65f40bfbe..d3c15ed5ac 100644 --- a/examples/advanced/radiation_monitor/detector/include/RadmonTDetectorVolumesWithKeyMarksDecorator.icc +++ b/examples/advanced/radiation_monitor/detector/include/RadmonTDetectorVolumesWithKeyMarksDecorator.icc @@ -29,7 +29,7 @@ // Main author: Riccardo Capra <capra@ge.infn.it> // // Id: $Id: RadmonTDetectorVolumesWithKeyMarksDecorator.icc,v 1.1.2.2.4.1 2009/08/11 14:20:35 gcosmo Exp $ -// Tag: $Name: geant4-09-02-patch-03 $ +// Tag: $Name: geant4-09-02-patch-04 $ // #ifndef RADMONTDETECTORVOLUMESWITHKEYMARKSDECORATOR_HH diff --git a/examples/advanced/radiation_monitor/detector/include/RadmonTDetectorVolumesWithPadsDecorator.icc b/examples/advanced/radiation_monitor/detector/include/RadmonTDetectorVolumesWithPadsDecorator.icc index dab8480719..a8df8edcff 100644 --- a/examples/advanced/radiation_monitor/detector/include/RadmonTDetectorVolumesWithPadsDecorator.icc +++ b/examples/advanced/radiation_monitor/detector/include/RadmonTDetectorVolumesWithPadsDecorator.icc @@ -29,7 +29,7 @@ // Main author: Riccardo Capra <capra@ge.infn.it> // // Id: $Id: RadmonTDetectorVolumesWithPadsDecorator.icc,v 1.1.2.2.4.1 2009/08/11 14:20:35 gcosmo Exp $ -// Tag: $Name: geant4-09-02-patch-03 $ +// Tag: $Name: geant4-09-02-patch-04 $ // #ifndef RADMONTDETECTORVOLUMESWITHPADSDECORATOR_HH diff --git a/examples/advanced/radiation_monitor/detector/include/RadmonTDetectorVolumesWithPinsDecorator.icc b/examples/advanced/radiation_monitor/detector/include/RadmonTDetectorVolumesWithPinsDecorator.icc index 3e3371879d..a698ae9134 100644 --- a/examples/advanced/radiation_monitor/detector/include/RadmonTDetectorVolumesWithPinsDecorator.icc +++ b/examples/advanced/radiation_monitor/detector/include/RadmonTDetectorVolumesWithPinsDecorator.icc @@ -29,7 +29,7 @@ // Main author: Riccardo Capra <capra@ge.infn.it> // // Id: $Id: RadmonTDetectorVolumesWithPinsDecorator.icc,v 1.1.2.2.4.1 2009/08/11 14:20:35 gcosmo Exp $ -// Tag: $Name: geant4-09-02-patch-03 $ +// Tag: $Name: geant4-09-02-patch-04 $ // #ifndef RADMONTDETECTORVOLUMESWITHPINSDECORATOR_HH diff --git a/examples/advanced/radiation_monitor/detector/include/RadmonTDetectorVolumesWithTracksDecorator.icc b/examples/advanced/radiation_monitor/detector/include/RadmonTDetectorVolumesWithTracksDecorator.icc index 8da475390a..fe584feeb3 100644 --- a/examples/advanced/radiation_monitor/detector/include/RadmonTDetectorVolumesWithTracksDecorator.icc +++ b/examples/advanced/radiation_monitor/detector/include/RadmonTDetectorVolumesWithTracksDecorator.icc @@ -29,7 +29,7 @@ // Main author: Riccardo Capra <capra@ge.infn.it> // // Id: $Id: RadmonTDetectorVolumesWithTracksDecorator.icc,v 1.1.2.2.4.1 2009/08/11 14:20:35 gcosmo Exp $ -// Tag: $Name: geant4-09-02-patch-03 $ +// Tag: $Name: geant4-09-02-patch-04 $ // #ifndef RADMONTDETECTORVOLUMESWITHTRACKSDECORATOR_HH diff --git a/examples/advanced/radiation_monitor/detector/src/RadmonDetectorConstruction.cc b/examples/advanced/radiation_monitor/detector/src/RadmonDetectorConstruction.cc index eb6a5deec5..cf42b566e5 100644 --- a/examples/advanced/radiation_monitor/detector/src/RadmonDetectorConstruction.cc +++ b/examples/advanced/radiation_monitor/detector/src/RadmonDetectorConstruction.cc @@ -29,7 +29,7 @@ // Main author: Riccardo Capra <capra@ge.infn.it> // // Id: $Id: RadmonDetectorConstruction.cc,v 1.4.2.2.4.1 2009/08/11 14:20:35 gcosmo Exp $ -// Tag: $Name: geant4-09-02-patch-03 $ +// Tag: $Name: geant4-09-02-patch-04 $ // // Include files diff --git a/examples/advanced/radiation_monitor/detector/src/RadmonDetectorFlatVolumeComponent.cc b/examples/advanced/radiation_monitor/detector/src/RadmonDetectorFlatVolumeComponent.cc index 568b50e095..629dd57d48 100644 --- a/examples/advanced/radiation_monitor/detector/src/RadmonDetectorFlatVolumeComponent.cc +++ b/examples/advanced/radiation_monitor/detector/src/RadmonDetectorFlatVolumeComponent.cc @@ -29,7 +29,7 @@ // Main author: Riccardo Capra <capra@ge.infn.it> // // Id: $Id: RadmonDetectorFlatVolumeComponent.cc,v 1.2.2.2.4.1 2009/08/11 14:20:35 gcosmo Exp $ -// Tag: $Name: geant4-09-02-patch-03 $ +// Tag: $Name: geant4-09-02-patch-04 $ // // Include files diff --git a/examples/advanced/radiation_monitor/detector/src/RadmonDetectorLabelledEntitiesConstructorsFactory.cc b/examples/advanced/radiation_monitor/detector/src/RadmonDetectorLabelledEntitiesConstructorsFactory.cc index 7c80d2fbd2..4f4cc962ac 100644 --- a/examples/advanced/radiation_monitor/detector/src/RadmonDetectorLabelledEntitiesConstructorsFactory.cc +++ b/examples/advanced/radiation_monitor/detector/src/RadmonDetectorLabelledEntitiesConstructorsFactory.cc @@ -29,7 +29,7 @@ // Main author: Riccardo Capra <capra@ge.infn.it> // // Id: $Id: RadmonDetectorLabelledEntitiesConstructorsFactory.cc,v 1.2.2.2.4.1 2009/08/11 14:20:35 gcosmo Exp $ -// Tag: $Name: geant4-09-02-patch-03 $ +// Tag: $Name: geant4-09-02-patch-04 $ // // Include files diff --git a/examples/advanced/radiation_monitor/detector/src/RadmonDetectorLayerVolumeItem.cc b/examples/advanced/radiation_monitor/detector/src/RadmonDetectorLayerVolumeItem.cc index 9459b1d464..fc1b8f1889 100644 --- a/examples/advanced/radiation_monitor/detector/src/RadmonDetectorLayerVolumeItem.cc +++ b/examples/advanced/radiation_monitor/detector/src/RadmonDetectorLayerVolumeItem.cc @@ -29,7 +29,7 @@ // Main author: Riccardo Capra <capra@ge.infn.it> // // Id: $Id: RadmonDetectorLayerVolumeItem.cc,v 1.2.2.2.4.1 2009/08/11 14:20:35 gcosmo Exp $ -// Tag: $Name: geant4-09-02-patch-03 $ +// Tag: $Name: geant4-09-02-patch-04 $ // // Include files diff --git a/examples/advanced/radiation_monitor/detector/src/RadmonDetectorLayout.cc b/examples/advanced/radiation_monitor/detector/src/RadmonDetectorLayout.cc index 9e79651ed0..ec328e4877 100644 --- a/examples/advanced/radiation_monitor/detector/src/RadmonDetectorLayout.cc +++ b/examples/advanced/radiation_monitor/detector/src/RadmonDetectorLayout.cc @@ -29,7 +29,7 @@ // Main author: Riccardo Capra <capra@ge.infn.it> // // Id: $Id: RadmonDetectorLayout.cc,v 1.3.2.2.4.1 2009/08/11 14:20:35 gcosmo Exp $ -// Tag: $Name: geant4-09-02-patch-03 $ +// Tag: $Name: geant4-09-02-patch-04 $ // // Include files diff --git a/examples/advanced/radiation_monitor/detector/src/RadmonDetectorMessenger.cc b/examples/advanced/radiation_monitor/detector/src/RadmonDetectorMessenger.cc index 795b6e2a77..65bc3a6c7b 100644 --- a/examples/advanced/radiation_monitor/detector/src/RadmonDetectorMessenger.cc +++ b/examples/advanced/radiation_monitor/detector/src/RadmonDetectorMessenger.cc @@ -29,7 +29,7 @@ // Main author: Riccardo Capra <capra@ge.infn.it> // // Id: $Id: RadmonDetectorMessenger.cc,v 1.3.2.2.4.1 2009/08/11 14:20:35 gcosmo Exp $ -// Tag: $Name: geant4-09-02-patch-03 $ +// Tag: $Name: geant4-09-02-patch-04 $ // // Messenger commands path diff --git a/examples/advanced/radiation_monitor/detector/src/RadmonDetectorMultilayerLayout.cc b/examples/advanced/radiation_monitor/detector/src/RadmonDetectorMultilayerLayout.cc index b3b21874ad..d573ed7e58 100644 --- a/examples/advanced/radiation_monitor/detector/src/RadmonDetectorMultilayerLayout.cc +++ b/examples/advanced/radiation_monitor/detector/src/RadmonDetectorMultilayerLayout.cc @@ -29,7 +29,7 @@ // Main author: Riccardo Capra <capra@ge.infn.it> // // Id: $Id: RadmonDetectorMultilayerLayout.cc,v 1.6.2.2.4.1 2009/08/11 14:20:35 gcosmo Exp $ -// Tag: $Name: geant4-09-02-patch-03 $ +// Tag: $Name: geant4-09-02-patch-04 $ // // Include files diff --git a/examples/advanced/radiation_monitor/generalPurpose/include/RadmonLayoutEntityWithAttributes.hh b/examples/advanced/radiation_monitor/generalPurpose/include/RadmonLayoutEntityWithAttributes.hh index 25a06033eb..262e06c709 100644 --- a/examples/advanced/radiation_monitor/generalPurpose/include/RadmonLayoutEntityWithAttributes.hh +++ b/examples/advanced/radiation_monitor/generalPurpose/include/RadmonLayoutEntityWithAttributes.hh @@ -29,7 +29,7 @@ // Main author: Riccardo Capra <capra@ge.infn.it> // // Id: $Id: RadmonLayoutEntityWithAttributes.hh,v 1.3.2.2.4.1 2009/08/11 14:20:35 gcosmo Exp $ -// Tag: $Name: geant4-09-02-patch-03 $ +// Tag: $Name: geant4-09-02-patch-04 $ // // Description: Provides attributes to other detector classes // diff --git a/examples/advanced/radiation_monitor/generalPurpose/include/RadmonTLabelledCollection.icc b/examples/advanced/radiation_monitor/generalPurpose/include/RadmonTLabelledCollection.icc index 5a6c248e89..a077f7d070 100644 --- a/examples/advanced/radiation_monitor/generalPurpose/include/RadmonTLabelledCollection.icc +++ b/examples/advanced/radiation_monitor/generalPurpose/include/RadmonTLabelledCollection.icc @@ -29,9 +29,9 @@ // Main author: Riccardo Capra <capra@ge.infn.it> // // Id: $Id: RadmonTLabelledCollection.icc,v 1.6.4.1 2009/08/11 14:20:35 gcosmo Exp $ -// Tag: $Name: geant4-09-02-patch-03 $ +// Tag: $Name: geant4-09-02-patch-04 $ // Id: $Id: RadmonTLabelledCollection.icc,v 1.6.4.1 2009/08/11 14:20:35 gcosmo Exp $ -// Tag: $Name: geant4-09-02-patch-03 $ +// Tag: $Name: geant4-09-02-patch-04 $ // #ifndef RADMONTLABELLEDCOLLECTION_HH diff --git a/examples/advanced/radiation_monitor/generalPurpose/include/RadmonVLayoutSubject.hh b/examples/advanced/radiation_monitor/generalPurpose/include/RadmonVLayoutSubject.hh index d2e84807a9..799c7edf8e 100644 --- a/examples/advanced/radiation_monitor/generalPurpose/include/RadmonVLayoutSubject.hh +++ b/examples/advanced/radiation_monitor/generalPurpose/include/RadmonVLayoutSubject.hh @@ -29,7 +29,7 @@ // Main author: Riccardo Capra <capra@ge.infn.it> // // Id: $Id: RadmonVLayoutSubject.hh,v 1.2.2.2.4.1 2009/08/11 14:20:35 gcosmo Exp $ -// Tag: $Name: geant4-09-02-patch-03 $ +// Tag: $Name: geant4-09-02-patch-04 $ // // Description: Subject class of the observer-subjectmodel for the detector // layout diff --git a/examples/advanced/radiation_monitor/generator/include/RadmonGunMessenger.hh b/examples/advanced/radiation_monitor/generator/include/RadmonGunMessenger.hh index dfd3d70e8a..8bcce3b8c8 100644 --- a/examples/advanced/radiation_monitor/generator/include/RadmonGunMessenger.hh +++ b/examples/advanced/radiation_monitor/generator/include/RadmonGunMessenger.hh @@ -28,7 +28,7 @@ // ************************************************ // // $Id: RadmonGunMessenger.hh,v 1.2.2.2 2009/08/11 14:20:35 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-02-patch-03 $ +// GEANT4 tag $Name: geant4-09-02-patch-04 $ // //Code developed by: S.Guatelli, guatelli@ge.infn.it // diff --git a/examples/advanced/radiation_monitor/generator/include/RadmonPrimaryGeneratorAction.hh b/examples/advanced/radiation_monitor/generator/include/RadmonPrimaryGeneratorAction.hh index ce6f4e6b50..deb676e51f 100644 --- a/examples/advanced/radiation_monitor/generator/include/RadmonPrimaryGeneratorAction.hh +++ b/examples/advanced/radiation_monitor/generator/include/RadmonPrimaryGeneratorAction.hh @@ -29,7 +29,7 @@ // Main author: Riccardo Capra <capra@ge.infn.it> // // Id: $Id: RadmonPrimaryGeneratorAction.hh,v 1.1.2.2.4.1 2009/08/11 14:20:35 gcosmo Exp $ -// Tag: $Name: geant4-09-02-patch-03 $ +// Tag: $Name: geant4-09-02-patch-04 $ // // Description: Primary particles generator user action // diff --git a/examples/advanced/radiation_monitor/generator/src/RadmonGeneratorLayout.cc b/examples/advanced/radiation_monitor/generator/src/RadmonGeneratorLayout.cc index 8018bae236..1082c03477 100644 --- a/examples/advanced/radiation_monitor/generator/src/RadmonGeneratorLayout.cc +++ b/examples/advanced/radiation_monitor/generator/src/RadmonGeneratorLayout.cc @@ -29,7 +29,7 @@ // Main author: Riccardo Capra <capra@ge.infn.it> // // Id: $Id: RadmonGeneratorLayout.cc,v 1.1.2.2.4.1 2009/08/11 14:20:35 gcosmo Exp $ -// Tag: $Name: geant4-09-02-patch-03 $ +// Tag: $Name: geant4-09-02-patch-04 $ // // Include files diff --git a/examples/advanced/radiation_monitor/generator/src/RadmonGunMessenger.cc b/examples/advanced/radiation_monitor/generator/src/RadmonGunMessenger.cc index b7f023d77e..b8a3e72001 100644 --- a/examples/advanced/radiation_monitor/generator/src/RadmonGunMessenger.cc +++ b/examples/advanced/radiation_monitor/generator/src/RadmonGunMessenger.cc @@ -31,7 +31,7 @@ // // // $Id: RadmonGunMessenger.cc,v 1.3.2.2 2009/08/11 14:20:35 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-02-patch-03 $ +// GEANT4 tag $Name: geant4-09-02-patch-04 $ // // diff --git a/examples/advanced/radiation_monitor/generator/src/RadmonPrimaryGeneratorAction.cc b/examples/advanced/radiation_monitor/generator/src/RadmonPrimaryGeneratorAction.cc index 500283a4eb..f8fa12db90 100644 --- a/examples/advanced/radiation_monitor/generator/src/RadmonPrimaryGeneratorAction.cc +++ b/examples/advanced/radiation_monitor/generator/src/RadmonPrimaryGeneratorAction.cc @@ -29,7 +29,7 @@ // Main author: Riccardo Capra <capra@ge.infn.it> // // Id: $Id: RadmonPrimaryGeneratorAction.cc,v 1.2.2.2.4.1 2009/08/11 14:20:35 gcosmo Exp $ -// Tag: $Name: geant4-09-02-patch-03 $ +// Tag: $Name: geant4-09-02-patch-04 $ // // Include files diff --git a/examples/advanced/radiation_monitor/physics/include/RadmonPhysicsParticles.hh b/examples/advanced/radiation_monitor/physics/include/RadmonPhysicsParticles.hh index 43f2d8ad3a..6395a2fc95 100644 --- a/examples/advanced/radiation_monitor/physics/include/RadmonPhysicsParticles.hh +++ b/examples/advanced/radiation_monitor/physics/include/RadmonPhysicsParticles.hh @@ -4,7 +4,7 @@ // Main author: Riccardo Capra <capra@ge.infn.it> // // Id: $Id: RadmonPhysicsParticles.hh,v 1.2.2.2 2009/08/11 14:20:35 gcosmo Exp $ -// Tag: $Name: geant4-09-02-patch-03 $ +// Tag: $Name: geant4-09-02-patch-04 $ // // Description: Particles production cuts // diff --git a/examples/advanced/radiation_monitor/physics/include/RadmonPhysicsParticles.icc b/examples/advanced/radiation_monitor/physics/include/RadmonPhysicsParticles.icc index 7a5d6ee864..9def649dcf 100644 --- a/examples/advanced/radiation_monitor/physics/include/RadmonPhysicsParticles.icc +++ b/examples/advanced/radiation_monitor/physics/include/RadmonPhysicsParticles.icc @@ -4,7 +4,7 @@ // Main author: Riccardo Capra <capra@ge.infn.it> // // Id: $Id: RadmonPhysicsParticles.icc,v 1.2.2.2 2009/08/11 14:20:35 gcosmo Exp $ -// Tag: $Name: geant4-09-02-patch-03 $ +// Tag: $Name: geant4-09-02-patch-04 $ // #ifndef RADMONPHYSICSPARTICLES_HH diff --git a/examples/advanced/radiation_monitor/physics/src/RadmonPhysicsNeutronBertini.cc b/examples/advanced/radiation_monitor/physics/src/RadmonPhysicsNeutronBertini.cc index c56de39a94..4b419e740b 100644 --- a/examples/advanced/radiation_monitor/physics/src/RadmonPhysicsNeutronBertini.cc +++ b/examples/advanced/radiation_monitor/physics/src/RadmonPhysicsNeutronBertini.cc @@ -29,7 +29,7 @@ // Main author: Riccardo Capra <capra@ge.infn.it> // // Id: $Id: RadmonPhysicsNeutronBertini.cc,v 1.1.2.2.4.1 2009/08/11 14:20:35 gcosmo Exp $ -// Tag: $Name: geant4-09-02-patch-03 $ +// Tag: $Name: geant4-09-02-patch-04 $ // #include "RadmonPhysicsNeutronBertini.hh" diff --git a/examples/advanced/radiation_monitor/physics/src/RadmonPhysicsNeutronBinary.cc b/examples/advanced/radiation_monitor/physics/src/RadmonPhysicsNeutronBinary.cc index a42dbb17c8..acd49f0cb3 100644 --- a/examples/advanced/radiation_monitor/physics/src/RadmonPhysicsNeutronBinary.cc +++ b/examples/advanced/radiation_monitor/physics/src/RadmonPhysicsNeutronBinary.cc @@ -29,7 +29,7 @@ // Main author: Riccardo Capra <capra@ge.infn.it> // // Id: $Id: RadmonPhysicsNeutronBinary.cc,v 1.2.2.2.4.1 2009/08/11 14:20:35 gcosmo Exp $ -// Tag: $Name: geant4-09-02-patch-03 $ +// Tag: $Name: geant4-09-02-patch-04 $ // #include "RadmonPhysicsNeutronBinary.hh" diff --git a/examples/advanced/radiation_monitor/physics/src/RadmonPhysicsParticles.cc b/examples/advanced/radiation_monitor/physics/src/RadmonPhysicsParticles.cc index b92b0658eb..6e6e99fc81 100644 --- a/examples/advanced/radiation_monitor/physics/src/RadmonPhysicsParticles.cc +++ b/examples/advanced/radiation_monitor/physics/src/RadmonPhysicsParticles.cc @@ -4,7 +4,7 @@ // Main author: Riccardo Capra <capra@ge.infn.it> // // Id: $Id: RadmonPhysicsParticles.cc,v 1.3.2.2 2009/08/11 14:20:35 gcosmo Exp $ -// Tag: $Name: geant4-09-02-patch-03 $ +// Tag: $Name: geant4-09-02-patch-04 $ // #include "RadmonPhysicsParticles.hh" diff --git a/examples/advanced/radiation_monitor/sensitivity/src/RadmonSensitiveDetector.cc b/examples/advanced/radiation_monitor/sensitivity/src/RadmonSensitiveDetector.cc index f0b17fecb5..96def1bf8d 100644 --- a/examples/advanced/radiation_monitor/sensitivity/src/RadmonSensitiveDetector.cc +++ b/examples/advanced/radiation_monitor/sensitivity/src/RadmonSensitiveDetector.cc @@ -29,7 +29,7 @@ // Main author: Riccardo Capra <capra@ge.infn.it> // // Id: $Id: RadmonSensitiveDetector.cc,v 1.2.2.2.4.1 2009/08/11 14:20:35 gcosmo Exp $ -// Tag: $Name: geant4-09-02-patch-03 $ +// Tag: $Name: geant4-09-02-patch-04 $ // // Include files diff --git a/examples/advanced/radiation_monitor/userActions/src/RadmonEventAction.cc b/examples/advanced/radiation_monitor/userActions/src/RadmonEventAction.cc index c32d338e46..23083f18af 100644 --- a/examples/advanced/radiation_monitor/userActions/src/RadmonEventAction.cc +++ b/examples/advanced/radiation_monitor/userActions/src/RadmonEventAction.cc @@ -29,7 +29,7 @@ // Main author: Riccardo Capra <capra@ge.infn.it> // // Id: $Id: RadmonEventAction.cc,v 1.1.2.2.4.1 2009/08/11 14:20:35 gcosmo Exp $ -// Tag: $Name: geant4-09-02-patch-03 $ +// Tag: $Name: geant4-09-02-patch-04 $ // // Include files diff --git a/examples/advanced/xray_fluorescence/History b/examples/advanced/xray_fluorescence/History index 2e3cd03e0b..6aef2e7ecd 100644 --- a/examples/advanced/xray_fluorescence/History +++ b/examples/advanced/xray_fluorescence/History @@ -1,6 +1,6 @@ # $Id: History,v 1.6.4.1 2009/08/11 14:05:47 gcosmo Exp $ # ------------------------------------------------------------------- -# GEANT4 tag $Name: geant4-09-02-patch-03 $ +# GEANT4 tag $Name: geant4-09-02-patch-04 $ # ------------------------------------------------------------------- ========================================================= diff --git a/examples/extended/analysis/AnaEx01/src/AnaEx01AnalysisManager.cc b/examples/extended/analysis/AnaEx01/src/AnaEx01AnalysisManager.cc index e3bbf673ee..abcda34b98 100644 --- a/examples/extended/analysis/AnaEx01/src/AnaEx01AnalysisManager.cc +++ b/examples/extended/analysis/AnaEx01/src/AnaEx01AnalysisManager.cc @@ -25,7 +25,7 @@ // // // $Id: AnaEx01AnalysisManager.cc,v 1.16.4.1 2009/08/11 09:50:10 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-02-patch-03 $ +// GEANT4 tag $Name: geant4-09-02-patch-04 $ // // // Guy Barrand 14th Septembre 2000. diff --git a/examples/extended/biasing/B01/exampleB01.out b/examples/extended/biasing/B01/exampleB01.out index dff35c7b99..95f45637a8 100644 --- a/examples/extended/biasing/B01/exampleB01.out +++ b/examples/extended/biasing/B01/exampleB01.out @@ -4,7 +4,7 @@ ############################################ ************************************************************* - Geant4 version Name: geant4-09-02-patch-03-ref (29-January-2010) + Geant4 version Name: geant4-09-02-patch-04-ref (16-September-2010) Copyright : Geant4 Collaboration Reference : NIM A 506 (2003), 250-303 WWW : http://cern.ch/geant4 diff --git a/examples/extended/electromagnetic/TestEm0/TestEm0.out b/examples/extended/electromagnetic/TestEm0/TestEm0.out index a693c68da9..1a5dd04f87 100644 --- a/examples/extended/electromagnetic/TestEm0/TestEm0.out +++ b/examples/extended/electromagnetic/TestEm0/TestEm0.out @@ -4,7 +4,7 @@ ############################################ ************************************************************* - Geant4 version Name: geant4-09-02-patch-03-ref (29-January-2010) + Geant4 version Name: geant4-09-02-patch-04-ref (16-September-2010) Copyright : Geant4 Collaboration Reference : NIM A 506 (2003), 250-303 WWW : http://cern.ch/geant4 diff --git a/examples/extended/electromagnetic/TestEm1/TestEm1.out b/examples/extended/electromagnetic/TestEm1/TestEm1.out index 1d68cd1eae..4dc825628f 100644 --- a/examples/extended/electromagnetic/TestEm1/TestEm1.out +++ b/examples/extended/electromagnetic/TestEm1/TestEm1.out @@ -4,7 +4,7 @@ ############################################ ************************************************************* - Geant4 version Name: geant4-09-02-patch-03-ref (29-January-2010) + Geant4 version Name: geant4-09-02-patch-04-ref (16-September-2010) Copyright : Geant4 Collaboration Reference : NIM A 506 (2003), 250-303 WWW : http://cern.ch/geant4 @@ -368,7 +368,7 @@ Start Run processing. Run terminated. Run Summary Number of events processed : 2000 - User=7.6s Real=7.65s Sys=0.05s + User=7.8s Real=7.87s Sys=0.06s ======================== run summary ====================== @@ -436,7 +436,7 @@ Start Run processing. Run terminated. Run Summary Number of events processed : 2000 - User=14.01s Real=14.04s Sys=0.04s + User=14.03s Real=14.07s Sys=0.05s ======================== run summary ====================== diff --git a/examples/extended/electromagnetic/TestEm10/TestEm10.out b/examples/extended/electromagnetic/TestEm10/TestEm10.out index b5a474b48e..8f61d84d94 100644 --- a/examples/extended/electromagnetic/TestEm10/TestEm10.out +++ b/examples/extended/electromagnetic/TestEm10/TestEm10.out @@ -4,7 +4,7 @@ ############################################ ************************************************************* - Geant4 version Name: geant4-09-02-patch-03-ref (29-January-2010) + Geant4 version Name: geant4-09-02-patch-04-ref (16-September-2010) Copyright : Geant4 Collaboration Reference : NIM A 506 (2003), 250-303 WWW : http://cern.ch/geant4 @@ -375,7 +375,7 @@ Start Run processing. Run terminated. Run Summary Number of events processed : 1000 - User=0.97s Real=0.97s Sys=0s + User=0.84s Real=0.84s Sys=0s ================== run summary ===================== end of Run TotNbofEvents = 1000 mean charged track length in absorber=44.1863 +- 0.603438 mm diff --git a/examples/extended/electromagnetic/TestEm11/TestEm11.out b/examples/extended/electromagnetic/TestEm11/TestEm11.out index 97e020959f..d8136564ac 100644 --- a/examples/extended/electromagnetic/TestEm11/TestEm11.out +++ b/examples/extended/electromagnetic/TestEm11/TestEm11.out @@ -4,7 +4,7 @@ ############################################ ************************************************************* - Geant4 version Name: geant4-09-02-patch-03-ref (29-January-2010) + Geant4 version Name: geant4-09-02-patch-04-ref (16-September-2010) Copyright : Geant4 Collaboration Reference : NIM A 506 (2003), 250-303 WWW : http://cern.ch/geant4 @@ -403,7 +403,7 @@ Start Run processing. Run terminated. Run Summary Number of events processed : 20000 - User=12.39s Real=12.85s Sys=0.46s + User=12.61s Real=13.1s Sys=0.47s ======================== run summary ====================== diff --git a/examples/extended/electromagnetic/TestEm12/TestEm12.out b/examples/extended/electromagnetic/TestEm12/TestEm12.out index a8402a4dd9..cf9b1d2494 100644 --- a/examples/extended/electromagnetic/TestEm12/TestEm12.out +++ b/examples/extended/electromagnetic/TestEm12/TestEm12.out @@ -4,7 +4,7 @@ ############################################ ************************************************************* - Geant4 version Name: geant4-09-02-patch-03-ref (29-January-2010) + Geant4 version Name: geant4-09-02-patch-04-ref (16-September-2010) Copyright : Geant4 Collaboration Reference : NIM A 506 (2003), 250-303 WWW : http://cern.ch/geant4 @@ -405,7 +405,7 @@ Start Run processing. Run terminated. Run Summary Number of events processed : 10000 - User=39.87s Real=40.12s Sys=0.25s + User=40.31s Real=40.52s Sys=0.23s ======================== run summary ====================== diff --git a/examples/extended/electromagnetic/TestEm13/TestEm13.out b/examples/extended/electromagnetic/TestEm13/TestEm13.out index 6d6b10bafd..30fb08cf20 100644 --- a/examples/extended/electromagnetic/TestEm13/TestEm13.out +++ b/examples/extended/electromagnetic/TestEm13/TestEm13.out @@ -4,7 +4,7 @@ ############################################ ************************************************************* - Geant4 version Name: geant4-09-02-patch-03-ref (29-January-2010) + Geant4 version Name: geant4-09-02-patch-04-ref (16-September-2010) Copyright : Geant4 Collaboration Reference : NIM A 506 (2003), 250-303 WWW : http://cern.ch/geant4 @@ -291,7 +291,7 @@ Start Run processing. Run terminated. Run Summary Number of events processed : 100000 - User=0.91s Real=0.92s Sys=0s + User=0.94s Real=0.93s Sys=0s The run consists of 100000 gamma of 100 keV through 1 cm of Water (density: 1 g/cm3 ) @@ -360,7 +360,7 @@ Start Run processing. Run terminated. Run Summary Number of events processed : 100000 - User=0.91s Real=0.9s Sys=0s + User=1.02s Real=1.03s Sys=0s The run consists of 100000 e- of 100 MeV through 1 cm of Water (density: 1 g/cm3 ) diff --git a/examples/extended/electromagnetic/TestEm14/TestEm14.out b/examples/extended/electromagnetic/TestEm14/TestEm14.out index 3d34d49a50..851485f93e 100644 --- a/examples/extended/electromagnetic/TestEm14/TestEm14.out +++ b/examples/extended/electromagnetic/TestEm14/TestEm14.out @@ -4,7 +4,7 @@ ############################################ ************************************************************* - Geant4 version Name: geant4-09-02-patch-03-ref (29-January-2010) + Geant4 version Name: geant4-09-02-patch-04-ref (16-September-2010) Copyright : Geant4 Collaboration Reference : NIM A 506 (2003), 250-303 WWW : http://cern.ch/geant4 @@ -363,7 +363,7 @@ Start Run processing. Run terminated. Run Summary Number of events processed : 100000 - User=1.1s Real=1.1s Sys=0s + User=1.2s Real=1.2s Sys=0s The run consists of 100000 e- of 100 MeV through 100 m of Water (density: 1 g/cm3 ) diff --git a/examples/extended/electromagnetic/TestEm15/TestEm15.out b/examples/extended/electromagnetic/TestEm15/TestEm15.out index 30ddd21c77..b76e2bfd22 100644 --- a/examples/extended/electromagnetic/TestEm15/TestEm15.out +++ b/examples/extended/electromagnetic/TestEm15/TestEm15.out @@ -4,7 +4,7 @@ ############################################ ************************************************************* - Geant4 version Name: geant4-09-02-patch-03-ref (29-January-2010) + Geant4 version Name: geant4-09-02-patch-04-ref (16-September-2010) Copyright : Geant4 Collaboration Reference : NIM A 506 (2003), 250-303 WWW : http://cern.ch/geant4 diff --git a/examples/extended/electromagnetic/TestEm16/TestEm16.out b/examples/extended/electromagnetic/TestEm16/TestEm16.out index 11c4451e97..98cde2fcfc 100644 --- a/examples/extended/electromagnetic/TestEm16/TestEm16.out +++ b/examples/extended/electromagnetic/TestEm16/TestEm16.out @@ -4,7 +4,7 @@ ############################################ ************************************************************* - Geant4 version Name: geant4-09-02-patch-03-ref (29-January-2010) + Geant4 version Name: geant4-09-02-patch-04-ref (16-September-2010) Copyright : Geant4 Collaboration Reference : NIM A 506 (2003), 250-303 WWW : http://cern.ch/geant4 @@ -246,7 +246,7 @@ G4SynchrotronRadiation::GetRandomEnergySR : Run terminated. Run Summary Number of events processed : 100 - User=0.58s Real=0.58s Sys=0.01s + User=0.68s Real=0.68s Sys=0s Summary for synchrotron radiation : Number of photons = 64554 Emean = 20.24 +/- 0.1449 keV diff --git a/examples/extended/electromagnetic/TestEm17/TestEm17.out b/examples/extended/electromagnetic/TestEm17/TestEm17.out index e67e598798..101021b9ec 100644 --- a/examples/extended/electromagnetic/TestEm17/TestEm17.out +++ b/examples/extended/electromagnetic/TestEm17/TestEm17.out @@ -4,7 +4,7 @@ ############################################ ************************************************************* - Geant4 version Name: geant4-09-02-patch-03-ref (29-January-2010) + Geant4 version Name: geant4-09-02-patch-04-ref (16-September-2010) Copyright : Geant4 Collaboration Reference : NIM A 506 (2003), 250-303 WWW : http://cern.ch/geant4 @@ -253,7 +253,7 @@ Start Run processing. Run terminated. Run Summary Number of events processed : 10000 - User=4.25s Real=4.49s Sys=0.24s + User=4.51s Real=4.8s Sys=0.28s The run consists of 10000 mu+ of 10 TeV through 1 m of Iron (density: 7.9 g/cm3 ) @@ -317,7 +317,7 @@ Start Run processing. Run terminated. Run Summary Number of events processed : 10000 - User=4.02s Real=4.25s Sys=0.23s + User=4.21s Real=4.45s Sys=0.25s The run consists of 10000 pi+ of 10 TeV through 1 m of Iron (density: 7.9 g/cm3 ) @@ -380,7 +380,7 @@ Start Run processing. Run terminated. Run Summary Number of events processed : 10000 - User=3.63s Real=3.85s Sys=0.22s + User=4.11s Real=4.36s Sys=0.22s The run consists of 10000 proton of 10 TeV through 1 m of Iron (density: 7.9 g/cm3 ) diff --git a/examples/extended/electromagnetic/TestEm18/TestEm18.out b/examples/extended/electromagnetic/TestEm18/TestEm18.out index 2e589b6658..6f67b4efe1 100644 --- a/examples/extended/electromagnetic/TestEm18/TestEm18.out +++ b/examples/extended/electromagnetic/TestEm18/TestEm18.out @@ -4,7 +4,7 @@ ############################################ ************************************************************* - Geant4 version Name: geant4-09-02-patch-03-ref (29-January-2010) + Geant4 version Name: geant4-09-02-patch-04-ref (16-September-2010) Copyright : Geant4 Collaboration Reference : NIM A 506 (2003), 250-303 WWW : http://cern.ch/geant4 @@ -289,7 +289,7 @@ Start Run processing. Run terminated. Run Summary Number of events processed : 100000 - User=1.91s Real=1.92s Sys=0s + User=1.9s Real=1.91s Sys=0s ======================== run summary ====================== diff --git a/examples/extended/electromagnetic/TestEm2/TestEm2.out b/examples/extended/electromagnetic/TestEm2/TestEm2.out index d05293335f..cdf217937d 100644 --- a/examples/extended/electromagnetic/TestEm2/TestEm2.out +++ b/examples/extended/electromagnetic/TestEm2/TestEm2.out @@ -4,7 +4,7 @@ ############################################ ************************************************************* - Geant4 version Name: geant4-09-02-patch-03-ref (29-January-2010) + Geant4 version Name: geant4-09-02-patch-04-ref (16-September-2010) Copyright : Geant4 Collaboration Reference : NIM A 506 (2003), 250-303 WWW : http://cern.ch/geant4 @@ -321,7 +321,7 @@ Start Run processing. Run terminated. Run Summary Number of events processed : 100 - User=6.94s Real=6.94s Sys=0s + User=7.03s Real=7.03s Sys=0.01s SUMMARY diff --git a/examples/extended/electromagnetic/TestEm3/TestEm3.out b/examples/extended/electromagnetic/TestEm3/TestEm3.out index fa1fbd06a4..6ae215228a 100644 --- a/examples/extended/electromagnetic/TestEm3/TestEm3.out +++ b/examples/extended/electromagnetic/TestEm3/TestEm3.out @@ -4,7 +4,7 @@ ############################################ ************************************************************* - Geant4 version Name: geant4-09-02-patch-03-ref (29-January-2010) + Geant4 version Name: geant4-09-02-patch-04-ref (16-September-2010) Copyright : Geant4 Collaboration Reference : NIM A 506 (2003), 250-303 WWW : http://cern.ch/geant4 @@ -352,7 +352,7 @@ Start Run processing. Run terminated. Run Summary Number of events processed : 100 - User=4.96s Real=4.97s Sys=0.01s + User=5.08s Real=5.09s Sys=0s ------------------------------------------------------------ material Edep RMS sqrt(E0(GeV))*rmsE/Emean total tracklen diff --git a/examples/extended/electromagnetic/TestEm4/TestEm4.out b/examples/extended/electromagnetic/TestEm4/TestEm4.out index 8ab72516da..330340adac 100644 --- a/examples/extended/electromagnetic/TestEm4/TestEm4.out +++ b/examples/extended/electromagnetic/TestEm4/TestEm4.out @@ -4,7 +4,7 @@ ############################################ ************************************************************* - Geant4 version Name: geant4-09-02-patch-03-ref (29-January-2010) + Geant4 version Name: geant4-09-02-patch-04-ref (16-September-2010) Copyright : Geant4 Collaboration Reference : NIM A 506 (2003), 250-303 WWW : http://cern.ch/geant4 @@ -125,7 +125,7 @@ Start Run processing. Run terminated. Run Summary Number of events processed : 100000 - User=3.36s Real=5.59s Sys=2.23s + User=3.38s Real=5.59s Sys=2.23s --------- Ranecu engine status --------- Initial seed (index) = 0 diff --git a/examples/extended/electromagnetic/TestEm5/TestEm5.out b/examples/extended/electromagnetic/TestEm5/TestEm5.out index 17e981ad34..d8e69f4132 100644 --- a/examples/extended/electromagnetic/TestEm5/TestEm5.out +++ b/examples/extended/electromagnetic/TestEm5/TestEm5.out @@ -4,7 +4,7 @@ ############################################ ************************************************************* - Geant4 version Name: geant4-09-02-patch-03-ref (29-January-2010) + Geant4 version Name: geant4-09-02-patch-04-ref (16-September-2010) Copyright : Geant4 Collaboration Reference : NIM A 506 (2003), 250-303 WWW : http://cern.ch/geant4 @@ -342,7 +342,7 @@ Start Run processing. Run terminated. Run Summary Number of events processed : 100000 - User=4.22s Real=6.46s Sys=2.23s + User=4.32s Real=6.62s Sys=2.29s ======================== run summary ====================== diff --git a/examples/extended/electromagnetic/TestEm6/TestEm6.out b/examples/extended/electromagnetic/TestEm6/TestEm6.out index 4de0d86fd2..88adee1c34 100644 --- a/examples/extended/electromagnetic/TestEm6/TestEm6.out +++ b/examples/extended/electromagnetic/TestEm6/TestEm6.out @@ -4,7 +4,7 @@ ############################################ ************************************************************* - Geant4 version Name: geant4-09-02-patch-03-ref (29-January-2010) + Geant4 version Name: geant4-09-02-patch-04-ref (16-September-2010) Copyright : Geant4 Collaboration Reference : NIM A 506 (2003), 250-303 WWW : http://cern.ch/geant4 @@ -48915,7 +48915,7 @@ Step# X Y Z KineE dEStep StepLeng TrakLeng Run terminated. Run Summary Number of events processed : 5 - User=0.73s Real=1.55s Sys=0.05s + User=0.74s Real=1.47s Sys=0.05s --------- Ranecu engine status --------- Initial seed (index) = 0 @@ -50030,7 +50030,7 @@ Step# X Y Z KineE dEStep StepLeng TrakLeng Run terminated. Run Summary Number of events processed : 5 - User=0.02s Real=0.05s Sys=0s + User=0.03s Real=0.06s Sys=0s --------- Ranecu engine status --------- Initial seed (index) = 0 @@ -50196,7 +50196,7 @@ Step# X Y Z KineE dEStep StepLeng TrakLeng Run terminated. Run Summary Number of events processed : 2 - User=0.01s Real=0.01s Sys=0s + User=0s Real=0.01s Sys=0s --------- Ranecu engine status --------- Initial seed (index) = 0 diff --git a/examples/extended/electromagnetic/TestEm7/TestEm7.out b/examples/extended/electromagnetic/TestEm7/TestEm7.out index 48b6ab2c80..380f37f165 100644 --- a/examples/extended/electromagnetic/TestEm7/TestEm7.out +++ b/examples/extended/electromagnetic/TestEm7/TestEm7.out @@ -4,7 +4,7 @@ ############################################ ************************************************************* - Geant4 version Name: geant4-09-02-patch-03-ref (29-January-2010) + Geant4 version Name: geant4-09-02-patch-04-ref (16-September-2010) Copyright : Geant4 Collaboration Reference : NIM A 506 (2003), 250-303 WWW : http://cern.ch/geant4 @@ -337,7 +337,7 @@ Start Run processing. Run terminated. Run Summary Number of events processed : 10000 - User=13.98s Real=14.24s Sys=0.24s + User=14.25s Real=14.49s Sys=0.25s The run consists of 10000 proton of 160 MeV through 20 cm of G4_WATER (density: 1 g/cm3 ) @@ -396,7 +396,7 @@ Start Run processing. Run terminated. Run Summary Number of events processed : 1000 - User=4.96s Real=4.99s Sys=0.02s + User=5.06s Real=5.09s Sys=0.02s The run consists of 1000 C12[0.0] of 3.5 GeV through 20 cm of G4_WATER (density: 1 g/cm3 ) @@ -725,7 +725,7 @@ Start Run processing. Run terminated. Run Summary Number of events processed : 1000 - User=17.63s Real=17.64s Sys=0.03s + User=17.65s Real=17.69s Sys=0.05s The run consists of 1000 kaon+ of 100 MeV through 20 cm of G4_Cu (density: 8.96 g/cm3 ) @@ -1059,7 +1059,7 @@ Start Run processing. Run terminated. Run Summary Number of events processed : 100 - User=0.01s Real=0s Sys=0s + User=0s Real=0s Sys=0s The run consists of 100 alpha of 265 eV through 20 cm of TechVacuum (density: 0.01 kg/m3 ) @@ -1393,7 +1393,7 @@ Start Run processing. Run terminated. Run Summary Number of events processed : 100 - User=0.03s Real=0.03s Sys=0s + User=0.02s Real=0.03s Sys=0.01s The run consists of 100 alpha of 100 MeV through 20 cm of G4_WATER (density: 1 g/cm3 ) diff --git a/examples/extended/electromagnetic/TestEm8/TestEm8.out b/examples/extended/electromagnetic/TestEm8/TestEm8.out index d2cd8551e7..6624c94523 100644 --- a/examples/extended/electromagnetic/TestEm8/TestEm8.out +++ b/examples/extended/electromagnetic/TestEm8/TestEm8.out @@ -4,7 +4,7 @@ ############################################ ************************************************************* - Geant4 version Name: geant4-09-02-patch-03-ref (29-January-2010) + Geant4 version Name: geant4-09-02-patch-04-ref (16-September-2010) Copyright : Geant4 Collaboration Reference : NIM A 506 (2003), 250-303 WWW : http://cern.ch/geant4 diff --git a/examples/extended/electromagnetic/TestEm9/TestEm9.out b/examples/extended/electromagnetic/TestEm9/TestEm9.out index fe3eaba01e..8ae6c58482 100644 --- a/examples/extended/electromagnetic/TestEm9/TestEm9.out +++ b/examples/extended/electromagnetic/TestEm9/TestEm9.out @@ -4,7 +4,7 @@ ############################################ ************************************************************* - Geant4 version Name: geant4-09-02-patch-03-ref (29-January-2010) + Geant4 version Name: geant4-09-02-patch-04-ref (16-September-2010) Copyright : Geant4 Collaboration Reference : NIM A 506 (2003), 250-303 WWW : http://cern.ch/geant4 @@ -326,7 +326,7 @@ Start Run processing. Run terminated. Run Summary Number of events processed : 100 - User=2.23s Real=2.23s Sys=0s + User=2.27s Real=2.27s Sys=0s RunAction: End of run actions are started HistoManager: End of run actions are started ================================================================= diff --git a/examples/extended/field/field01/field01.out b/examples/extended/field/field01/field01.out index c3a21c9131..b5e3f6343b 100644 --- a/examples/extended/field/field01/field01.out +++ b/examples/extended/field/field01/field01.out @@ -4,7 +4,7 @@ ############################################ ************************************************************* - Geant4 version Name: geant4-09-02-patch-03-ref (29-January-2010) + Geant4 version Name: geant4-09-02-patch-04-ref (16-September-2010) Copyright : Geant4 Collaboration Reference : NIM A 506 (2003), 250-303 WWW : http://cern.ch/geant4 diff --git a/examples/extended/field/field02/field02.out b/examples/extended/field/field02/field02.out index 9ffadcb317..12f2f6451b 100644 --- a/examples/extended/field/field02/field02.out +++ b/examples/extended/field/field02/field02.out @@ -4,7 +4,7 @@ ############################################ ************************************************************* - Geant4 version Name: geant4-09-02-patch-03-ref (29-January-2010) + Geant4 version Name: geant4-09-02-patch-04-ref (16-September-2010) Copyright : Geant4 Collaboration Reference : NIM A 506 (2003), 250-303 WWW : http://cern.ch/geant4 @@ -8421,7 +8421,7 @@ Step# X Y Z KineE dEStep StepLeng TrakLeng Ne Run terminated. Run Summary Number of events processed : 100 - User=0.11s Real=0.12s Sys=0.01s + User=0.1s Real=0.11s Sys=0.01s ERROR: G4VisCommandsViewerUpdate::SetNewValue: no current viewer. Graphics systems deleted. Visualization Manager deleting... diff --git a/examples/extended/field/field03/field03.out b/examples/extended/field/field03/field03.out index 0aeb2f6390..9a577da8bb 100644 --- a/examples/extended/field/field03/field03.out +++ b/examples/extended/field/field03/field03.out @@ -4,7 +4,7 @@ ############################################ ************************************************************* - Geant4 version Name: geant4-09-02-patch-03-ref (29-January-2010) + Geant4 version Name: geant4-09-02-patch-04-ref (16-September-2010) Copyright : Geant4 Collaboration Reference : NIM A 506 (2003), 250-303 WWW : http://cern.ch/geant4 @@ -294,7 +294,7 @@ Step# X Y Z KineE dEStep StepLeng TrakLeng Run terminated. Run Summary Number of events processed : 1 - User=0s Real=0.01s Sys=0s + User=0s Real=0s Sys=0s ERROR: G4VisCommandsViewerUpdate::SetNewValue: no current viewer. ========= Table of registered couples ============================== @@ -319,7 +319,7 @@ Start Run processing. Run terminated. Run Summary Number of events processed : 100 - User=0.02s Real=0.02s Sys=0s + User=0.03s Real=0.02s Sys=0s ERROR: G4VisCommandsViewerUpdate::SetNewValue: no current viewer. Set field value to (0,0,1000) Gauss @@ -343,7 +343,7 @@ Start Run processing. Run terminated. Run Summary Number of events processed : 10 - User=0s Real=0s Sys=0s + User=0.01s Real=0.01s Sys=0s ERROR: G4VisCommandsViewerUpdate::SetNewValue: no current viewer. Graphics systems deleted. Visualization Manager deleting... diff --git a/examples/extended/field/field04/field04.cc b/examples/extended/field/field04/field04.cc index 275b116b52..2f75949058 100644 --- a/examples/extended/field/field04/field04.cc +++ b/examples/extended/field/field04/field04.cc @@ -25,7 +25,7 @@ // // // $Id: field04.cc,v 1.8.2.1 2009/08/11 09:47:40 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-02-patch-03 $ +// GEANT4 tag $Name: geant4-09-02-patch-04 $ // // // -------------------------------------------------------------- diff --git a/examples/extended/field/field04/field04.out b/examples/extended/field/field04/field04.out index c79914d361..fe53752cfb 100644 --- a/examples/extended/field/field04/field04.out +++ b/examples/extended/field/field04/field04.out @@ -9,7 +9,7 @@ ############################################ ************************************************************* - Geant4 version Name: geant4-09-02-patch-03-ref (29-January-2010) + Geant4 version Name: geant4-09-02-patch-04-ref (16-September-2010) Copyright : Geant4 Collaboration Reference : NIM A 506 (2003), 250-303 WWW : http://cern.ch/geant4 diff --git a/examples/extended/g3tog4/clGeometry/clGeometry.out b/examples/extended/g3tog4/clGeometry/clGeometry.out index 9f49b0c188..e69de29bb2 100644 --- a/examples/extended/g3tog4/clGeometry/clGeometry.out +++ b/examples/extended/g3tog4/clGeometry/clGeometry.out @@ -1,639 +0,0 @@ - - ############################################ - !!! WARNING - FPE detection is activated !!! - ############################################ - -************************************************************* - Geant4 version Name: geant4-09-02-patch-03-ref (29-January-2010) - Copyright : Geant4 Collaboration - Reference : NIM A 506 (2003), 250-303 - WWW : http://cern.ch/geant4 -************************************************************* - -Instantiated G3toG4DetectorConstruction using call list file "../data/testmodel.dat" -G4VUserPhysicsList::SetVerboseLevel : Verbose level is set to 2 -Visualization Manager instantiating... -Visualization Manager initialising... -Registering graphics systems... - -You have successfully registered the following graphics systems. -Current available graphics systems are: - ASCIITree (ATree) - DAWNFILE (DAWNFILE) - G4HepRep (HepRepXML) - G4HepRepFile (HepRepFile) - RayTracer (RayTracer) - VRML1FILE (VRML1FILE) - VRML2FILE (VRML2FILE) - OpenGLImmediateX (OGLIX) - OpenGLStoredX (OGLSX) - -Registering model factories... - -You have successfully registered the following model factories. -Registered model factories: - generic - drawByCharge - drawByParticleID - drawByOriginVolume - drawByAttribute - -Registered filter factories: - chargeFilter - particleFilter - originVolumeFilter - attributeFilter - -/run/verbose 1 -/tracking/verbose 1 -/tracking/storeTrajectory 1 -/run/initialize -Instantiated unit rotation matrix irot=0 -Reading the call List file ../data/testmodel.dat... -G4ggclos: setting top-level VolTableEntry -Dump of VTD - 26 entries: -Instantiated 26 volume table entries - 15 positions. -G3VolTable element 0 name BOX1 has 1 daughters -G3VolTable element 1 name BOX1_1 has 1 daughters -G3VolTable element 2 name BOX1_2 has 1 daughters -G3VolTable element 3 name BOX1_3 has 1 daughters -G3VolTable element 4 name BOX1_4 has 1 daughters -G3VolTable element 5 name BOX2 has 1 daughters -G3VolTable element 6 name BOX2_1 has 1 daughters -G3VolTable element 7 name BOX2_2 has 1 daughters -G3VolTable element 8 name BOX2_3 has 1 daughters -G3VolTable element 9 name BOX2_4 has 1 daughters -G3VolTable element 10 name BOX2_5 has 1 daughters -G3VolTable element 11 name BXD1 has 0 daughters -G3VolTable element 12 name BXD1_1 has 0 daughters -G3VolTable element 13 name BXD1_2 has 0 daughters -G3VolTable element 14 name BXD1_2_ENV has 1 daughters -G3VolTable element 15 name BXD1_3 has 0 daughters -G3VolTable element 16 name BXD1_3_ENV has 1 daughters -G3VolTable element 17 name BXD1_4 has 0 daughters -G3VolTable element 18 name BXD1_4_ENV has 1 daughters -G3VolTable element 19 name BXD1_5 has 0 daughters -G3VolTable element 20 name BXD1_5_ENV has 1 daughters -G3VolTable element 21 name HALL has 6 daughters -G3VolTable element 22 name TBD1 has 0 daughters -G3VolTable element 23 name TBD2 has 0 daughters -G3VolTable element 24 name TUB1 has 1 daughters -G3VolTable element 25 name TUB2 has 1 daughters -Call List file read completed. Build geometry -G3toG4 top level volume is HALL -Top-level G3toG4 logical volume HALL G4VisAttributes: invisible, daughters visible, colour: (1,1,1,1) - linestyle: solid, line width: 1 - drawing style: not forced, auxiliary edge visibility: not forced - line segments per circle: not forced. - time range: (-1.79769e+308,1.79769e+308) - G4AttValue pointer is zero, G4AttDef pointer is zero -Top-level G3toG4 logical volume HALL G4VisAttributes: invisible, daughters visible, colour: (1,1,1,1) - linestyle: solid, line width: 1 - drawing style: not forced, auxiliary edge visibility: not forced - line segments per circle: not forced. - time range: (-1.79769e+308,1.79769e+308) - G4AttValue pointer is zero, G4AttDef pointer is zero -G4VUserPhysicsList::Construct() -Construct processes -G3toG4PhysicsList::SetCuts:CutLength : 2 mm -/control/execute clGeometry.in -/run/verbose 2 -/process/eLoss/verbose 1 -/gun/position 0. -1.5 0. mm -/gun/direction 0. 1. 0. -/gun/energy 1 GeV -/gun/particle mu- -/run/beamOn 1 - -phot: for gamma SubType= 12 - ===== EM models for the G4Region DefaultRegionForTheWorld ====== - PhotoElectric : Emin= 0 eV Emax= 100 TeV - -compt: for gamma SubType= 13 - Lambda tables from 100 eV to 100 TeV in 84 bins, spline: 1 - ===== EM models for the G4Region DefaultRegionForTheWorld ====== - Klein-Nishina : Emin= 0 eV Emax= 100 TeV - -conv: for gamma SubType= 14 - Lambda tables from 1.022 MeV to 100 TeV in 84 bins, spline: 1 - ===== EM models for the G4Region DefaultRegionForTheWorld ====== - Bethe-Heitler : Emin= 0 eV Emax= 100 TeV - -msc: for e- SubType= 10 - Lambda tables from 100 eV to 100 TeV in 84 bins, spline: 1 - RangeFactor= 0.02, step limit type: 1, lateralDisplacement: 1, skin= 3, geomFactor= 2.5 - ===== EM models for the G4Region DefaultRegionForTheWorld ====== - UrbanMscUni : Emin= 0 eV Emax= 100 TeV - -eIoni: for e- SubType= 2 - dE/dx and range tables from 100 eV to 100 TeV in 84 bins - Lambda tables from threshold to 100 TeV in 84 bins, spline: 1 - finalRange(mm)= 1, dRoverRange= 0.2, integral: 1, fluct: 1, linLossLimit= 0.01 - ===== EM models for the G4Region DefaultRegionForTheWorld ====== - MollerBhabha : Emin= 0 eV Emax= 100 TeV - -eBrem: for e- SubType= 3 - dE/dx and range tables from 100 eV to 100 TeV in 84 bins - Lambda tables from threshold to 100 TeV in 84 bins, spline: 1 - LPM flag: 1 for E > 1 GeV - ===== EM models for the G4Region DefaultRegionForTheWorld ====== - eBrem : Emin= 0 eV Emax= 1 GeV - eBremRel : Emin= 1 GeV Emax= 100 TeV - -eIoni: for e+ SubType= 2 - dE/dx and range tables from 100 eV to 100 TeV in 84 bins - Lambda tables from threshold to 100 TeV in 84 bins, spline: 1 - finalRange(mm)= 1, dRoverRange= 0.2, integral: 1, fluct: 1, linLossLimit= 0.01 - ===== EM models for the G4Region DefaultRegionForTheWorld ====== - MollerBhabha : Emin= 0 eV Emax= 100 TeV - -eBrem: for e+ SubType= 3 - dE/dx and range tables from 100 eV to 100 TeV in 84 bins - Lambda tables from threshold to 100 TeV in 84 bins, spline: 1 - LPM flag: 1 for E > 1 GeV - ===== EM models for the G4Region DefaultRegionForTheWorld ====== - eBrem : Emin= 0 eV Emax= 1 GeV - eBremRel : Emin= 1 GeV Emax= 100 TeV - -annihil: for e+ SubType= 5 - Lambda tables from 100 eV to 100 TeV in 84 bins, spline: 1 - ===== EM models for the G4Region DefaultRegionForTheWorld ====== - eplus2gg : Emin= 0 eV Emax= 100 TeV - -msc: for proton SubType= 10 - Lambda tables from 100 eV to 100 TeV in 84 bins, spline: 1 - RangeFactor= 0.02, step limit type: 1, lateralDisplacement: 1, skin= 3, geomFactor= 2.5 - ===== EM models for the G4Region DefaultRegionForTheWorld ====== - UrbanMscUni : Emin= 0 eV Emax= 100 TeV - -hIoni: for proton SubType= 2 - dE/dx and range tables from 100 eV to 100 TeV in 84 bins - Lambda tables from threshold to 100 TeV in 84 bins, spline: 1 - finalRange(mm)= 1, dRoverRange= 0.2, integral: 1, fluct: 1, linLossLimit= 0.01 - NuclearStopping= 1 - ===== EM models for the G4Region DefaultRegionForTheWorld ====== - Bragg : Emin= 0 eV Emax= 2 MeV - BetheBloch : Emin= 2 MeV Emax= 100 TeV - -hIoni: for anti_proton SubType= 2 - dE/dx and range tables from 100 eV to 100 TeV in 84 bins - Lambda tables from threshold to 100 TeV in 84 bins, spline: 1 - finalRange(mm)= 1, dRoverRange= 0.2, integral: 1, fluct: 1, linLossLimit= 0.01 - NuclearStopping= 1 - ===== EM models for the G4Region DefaultRegionForTheWorld ====== - Bragg : Emin= 0 eV Emax= 2 MeV - BetheBloch : Emin= 2 MeV Emax= 100 TeV - -hIoni: for kaon+ SubType= 2 - dE/dx and range tables from 100 eV to 100 TeV in 84 bins - Lambda tables from threshold to 100 TeV in 84 bins, spline: 1 - finalRange(mm)= 1, dRoverRange= 0.2, integral: 1, fluct: 1, linLossLimit= 0.01 - NuclearStopping= 0 - ===== EM models for the G4Region DefaultRegionForTheWorld ====== - Bragg : Emin= 0 eV Emax= 1.05231 MeV - BetheBloch : Emin= 1.05231 MeV Emax= 100 TeV - -hIoni: for kaon- SubType= 2 - dE/dx and range tables from 100 eV to 100 TeV in 84 bins - Lambda tables from threshold to 100 TeV in 84 bins, spline: 1 - finalRange(mm)= 1, dRoverRange= 0.2, integral: 1, fluct: 1, linLossLimit= 0.01 - NuclearStopping= 0 - ===== EM models for the G4Region DefaultRegionForTheWorld ====== - Bragg : Emin= 0 eV Emax= 1.05231 MeV - BetheBloch : Emin= 1.05231 MeV Emax= 100 TeV - -msc: for mu+ SubType= 10 - Lambda tables from 100 eV to 100 TeV in 84 bins, spline: 1 - RangeFactor= 0.02, step limit type: 1, lateralDisplacement: 1, skin= 3, geomFactor= 2.5 - ===== EM models for the G4Region DefaultRegionForTheWorld ====== - UrbanMscUni : Emin= 0 eV Emax= 100 TeV - -muIoni: for mu+ SubType= 2 - dE/dx and range tables from 100 eV to 100 TeV in 84 bins - Lambda tables from threshold to 100 TeV in 84 bins, spline: 1 - finalRange(mm)= 1, dRoverRange= 0.2, integral: 1, fluct: 1, linLossLimit= 0.01 - ===== EM models for the G4Region DefaultRegionForTheWorld ====== - Bragg : Emin= 0 eV Emax= 200 keV - BetheBloch : Emin= 200 keV Emax= 1 GeV - MuBetheBloch : Emin= 1 GeV Emax= 100 TeV - -muBrems: for mu+ SubType= 3 - dE/dx and range tables from 100 eV to 100 TeV in 84 bins - Lambda tables from threshold to 100 TeV in 84 bins, spline: 1 - ===== EM models for the G4Region DefaultRegionForTheWorld ====== - MuBrem : Emin= 0 eV Emax= 100 TeV - -muPairProd: for mu+ SubType= 4 - dE/dx and range tables from 100 eV to 100 TeV in 84 bins - Lambda tables from threshold to 100 TeV in 84 bins, spline: 1 - ===== EM models for the G4Region DefaultRegionForTheWorld ====== - muPairProd : Emin= 0 eV Emax= 100 TeV - -muIoni: for mu- SubType= 2 - dE/dx and range tables from 100 eV to 100 TeV in 84 bins - Lambda tables from threshold to 100 TeV in 84 bins, spline: 1 - finalRange(mm)= 1, dRoverRange= 0.2, integral: 1, fluct: 1, linLossLimit= 0.01 - ===== EM models for the G4Region DefaultRegionForTheWorld ====== - Bragg : Emin= 0 eV Emax= 200 keV - BetheBloch : Emin= 200 keV Emax= 1 GeV - MuBetheBloch : Emin= 1 GeV Emax= 100 TeV - -muBrems: for mu- SubType= 3 - dE/dx and range tables from 100 eV to 100 TeV in 84 bins - Lambda tables from threshold to 100 TeV in 84 bins, spline: 1 - ===== EM models for the G4Region DefaultRegionForTheWorld ====== - MuBrem : Emin= 0 eV Emax= 100 TeV - -muPairProd: for mu- SubType= 4 - dE/dx and range tables from 100 eV to 100 TeV in 84 bins - Lambda tables from threshold to 100 TeV in 84 bins, spline: 1 - ===== EM models for the G4Region DefaultRegionForTheWorld ====== - muPairProd : Emin= 0 eV Emax= 100 TeV - -hIoni: for pi+ SubType= 2 - dE/dx and range tables from 100 eV to 100 TeV in 84 bins - Lambda tables from threshold to 100 TeV in 84 bins, spline: 1 - finalRange(mm)= 1, dRoverRange= 0.2, integral: 1, fluct: 1, linLossLimit= 0.01 - NuclearStopping= 0 - ===== EM models for the G4Region DefaultRegionForTheWorld ====== - Bragg : Emin= 0 eV Emax= 297.504 keV - BetheBloch : Emin= 297.504 keV Emax= 100 TeV - -msc: for pi- SubType= 10 - Lambda tables from 100 eV to 100 TeV in 84 bins, spline: 1 - RangeFactor= 0.02, step limit type: 1, lateralDisplacement: 1, skin= 3, geomFactor= 2.5 - ===== EM models for the G4Region DefaultRegionForTheWorld ====== - UrbanMscUni : Emin= 0 eV Emax= 100 TeV - -hIoni: for pi- SubType= 2 - dE/dx and range tables from 100 eV to 100 TeV in 84 bins - Lambda tables from threshold to 100 TeV in 84 bins, spline: 1 - finalRange(mm)= 1, dRoverRange= 0.2, integral: 1, fluct: 1, linLossLimit= 0.01 - NuclearStopping= 0 - ===== EM models for the G4Region DefaultRegionForTheWorld ====== - Bragg : Emin= 0 eV Emax= 297.504 keV - BetheBloch : Emin= 297.504 keV Emax= 100 TeV - -Region <DefaultRegionForTheWorld> -- appears in <HALL> world volume - Root logical volume(s) : HALL - Pointers : G4VUserRegionInformation[0], G4UserLimits[0], G4FastSimulationManager[0], G4UserSteppingAction[0] - Materials : VACUUM - Production cuts : gamma 2 mm e- 2 mm e+ 2 mm - -========= Table of registered couples ============================== - -Index : 0 used in the geometry : Yes recalculation needed : No - Material : VACUUM - Range cuts : gamma 2 mm e- 2 mm e+ 2 mm - Energy thresholds : gamma 990 eV e- 990 eV e+ 990 eV - Region(s) which use this couple : - DefaultRegionForTheWorld - -==================================================================== - -Start closing geometry. -G4GeometryManager::ReportVoxelStats -- Voxel Statistics - - Total memory consumed for geometry optimisation: 5 kByte - Total CPU time elapsed for geometry optimisation: 0 seconds - - Voxelisation: top CPU users: - Percent Total CPU System CPU Memory Volume - ------- ---------- ---------- -------- ---------- - 0.00 0.00 0.00 1k HALL - 0.00 0.00 0.00 3k TUB1 - 0.00 0.00 0.00 0k TUB2 - 0.00 0.00 0.00 0k BXD1_2_ENV - 0.00 0.00 0.00 0k BXD1_3_ENV - 0.00 0.00 0.00 0k BXD1_4_ENV - 0.00 0.00 0.00 0k BXD1_5_ENV - - Voxelisation: top memory users: - Percent Memory Heads Nodes Pointers Total CPU Volume - ------- -------- ------ ------ -------- ---------- ---------- - 60.85 3k 1 60 60 0.00 TUB1 - 11.91 0k 2 8 18 0.00 HALL - 6.24 0k 1 5 5 0.00 TUB2 - 5.25 0k 1 4 4 0.00 BXD1_2_ENV - 5.25 0k 1 4 4 0.00 BXD1_3_ENV - 5.25 0k 1 4 4 0.00 BXD1_4_ENV - 5.25 0k 1 4 4 0.00 BXD1_5_ENV -### Run 0 start. -/vis~/clear/view -/vis~/draw/current -Start Run processing. ->>>>>>>> Primary direction: (0,1,0) - -********************************************************************************************************* -* G4Track Information: Particle = mu-, Track ID = 1, Parent ID = 0 -********************************************************************************************************* - -Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 0 -1.5 0 1e+03 0 0 0 HALL initStep - 1 0 4e+03 0 1e+03 1.12e-22 4e+03 4e+03 OutOfWorld Transportation ->>> Event 0 - 1 trajectories stored in this event. -G4VisManager: Using G4TrajectoryDrawByCharge as default trajectory model. -See commands in /vis/modeling/trajectories/ for other options. -Trajectory drawing configuration will be based on imode value of 50 -WARNING: G4VisManager::IsValidView(): Attempt to draw when no graphics system - has been instantiated. Use "/vis/open" or "/vis/sceneHandler/create". - Alternatively, to avoid this message, suppress instantiation of vis - manager (G4VisExecutive), possibly by setting G4VIS_NONE, and ensure - drawing code is executed only if G4VVisManager::GetConcreteInstance() - is non-zero. -Run terminated. -Run Summary - Number of events processed : 1 - User=0s Real=0s Sys=0s -/gun/particle mu+ -/run/beamOn 1 - -Region <DefaultRegionForTheWorld> -- appears in <HALL> world volume - Root logical volume(s) : HALL - Pointers : G4VUserRegionInformation[0], G4UserLimits[0], G4FastSimulationManager[0], G4UserSteppingAction[0] - Materials : VACUUM - Production cuts : gamma 2 mm e- 2 mm e+ 2 mm - -========= Table of registered couples ============================== - -Index : 0 used in the geometry : Yes recalculation needed : No - Material : VACUUM - Range cuts : gamma 2 mm e- 2 mm e+ 2 mm - Energy thresholds : gamma 990 eV e- 990 eV e+ 990 eV - Region(s) which use this couple : - DefaultRegionForTheWorld - -==================================================================== - -### Run 1 start. -/vis~/clear/view -/vis~/draw/current -Start Run processing. ->>>>>>>> Primary direction: (0,1,0) - -********************************************************************************************************* -* G4Track Information: Particle = mu+, Track ID = 1, Parent ID = 0 -********************************************************************************************************* - -Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 0 -1.5 0 1e+03 0 0 0 HALL initStep - 1 0 4e+03 0 1e+03 1.12e-22 4e+03 4e+03 OutOfWorld Transportation ->>> Event 0 - 1 trajectories stored in this event. -Run terminated. -Run Summary - Number of events processed : 1 - User=0s Real=0s Sys=0s -/gun/particle e- -/run/beamOn 1 - -Region <DefaultRegionForTheWorld> -- appears in <HALL> world volume - Root logical volume(s) : HALL - Pointers : G4VUserRegionInformation[0], G4UserLimits[0], G4FastSimulationManager[0], G4UserSteppingAction[0] - Materials : VACUUM - Production cuts : gamma 2 mm e- 2 mm e+ 2 mm - -========= Table of registered couples ============================== - -Index : 0 used in the geometry : Yes recalculation needed : No - Material : VACUUM - Range cuts : gamma 2 mm e- 2 mm e+ 2 mm - Energy thresholds : gamma 990 eV e- 990 eV e+ 990 eV - Region(s) which use this couple : - DefaultRegionForTheWorld - -==================================================================== - -### Run 2 start. -/vis~/clear/view -/vis~/draw/current -Start Run processing. ->>>>>>>> Primary direction: (0,1,0) - -********************************************************************************************************* -* G4Track Information: Particle = e-, Track ID = 1, Parent ID = 0 -********************************************************************************************************* - -Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 0 -1.5 0 1e+03 0 0 0 HALL initStep - 1 0 4e+03 0 1e+03 1.75e-22 4e+03 4e+03 OutOfWorld Transportation ->>> Event 0 - 1 trajectories stored in this event. -Run terminated. -Run Summary - Number of events processed : 1 - User=0s Real=0s Sys=0s -/gun/particle e+ -/run/beamOn 1 - -Region <DefaultRegionForTheWorld> -- appears in <HALL> world volume - Root logical volume(s) : HALL - Pointers : G4VUserRegionInformation[0], G4UserLimits[0], G4FastSimulationManager[0], G4UserSteppingAction[0] - Materials : VACUUM - Production cuts : gamma 2 mm e- 2 mm e+ 2 mm - -========= Table of registered couples ============================== - -Index : 0 used in the geometry : Yes recalculation needed : No - Material : VACUUM - Range cuts : gamma 2 mm e- 2 mm e+ 2 mm - Energy thresholds : gamma 990 eV e- 990 eV e+ 990 eV - Region(s) which use this couple : - DefaultRegionForTheWorld - -==================================================================== - -### Run 3 start. -/vis~/clear/view -/vis~/draw/current -Start Run processing. ->>>>>>>> Primary direction: (0,1,0) - -********************************************************************************************************* -* G4Track Information: Particle = e+, Track ID = 1, Parent ID = 0 -********************************************************************************************************* - -Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 0 -1.5 0 1e+03 0 0 0 HALL initStep - 1 0 4e+03 0 1e+03 1.75e-22 4e+03 4e+03 OutOfWorld Transportation ->>> Event 0 - 1 trajectories stored in this event. -Run terminated. -Run Summary - Number of events processed : 1 - User=0s Real=0s Sys=0s -/gun/position 0. 1.5 0. mm -/gun/direction 1. 0. 0. -/gun/energy 1 GeV -/gun/particle mu- -/run/beamOn 1 - -Region <DefaultRegionForTheWorld> -- appears in <HALL> world volume - Root logical volume(s) : HALL - Pointers : G4VUserRegionInformation[0], G4UserLimits[0], G4FastSimulationManager[0], G4UserSteppingAction[0] - Materials : VACUUM - Production cuts : gamma 2 mm e- 2 mm e+ 2 mm - -========= Table of registered couples ============================== - -Index : 0 used in the geometry : Yes recalculation needed : No - Material : VACUUM - Range cuts : gamma 2 mm e- 2 mm e+ 2 mm - Energy thresholds : gamma 990 eV e- 990 eV e+ 990 eV - Region(s) which use this couple : - DefaultRegionForTheWorld - -==================================================================== - -### Run 4 start. -/vis~/clear/view -/vis~/draw/current -Start Run processing. ->>>>>>>> Primary direction: (1,0,0) - -********************************************************************************************************* -* G4Track Information: Particle = mu-, Track ID = 1, Parent ID = 0 -********************************************************************************************************* - -Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 0 1.5 0 1e+03 0 0 0 HALL initStep - 1 4e+03 1.5 0 1e+03 1.12e-22 4e+03 4e+03 OutOfWorld Transportation ->>> Event 0 - 1 trajectories stored in this event. -Run terminated. -Run Summary - Number of events processed : 1 - User=0s Real=0s Sys=0s -/gun/particle mu+ -/run/beamOn 1 - -Region <DefaultRegionForTheWorld> -- appears in <HALL> world volume - Root logical volume(s) : HALL - Pointers : G4VUserRegionInformation[0], G4UserLimits[0], G4FastSimulationManager[0], G4UserSteppingAction[0] - Materials : VACUUM - Production cuts : gamma 2 mm e- 2 mm e+ 2 mm - -========= Table of registered couples ============================== - -Index : 0 used in the geometry : Yes recalculation needed : No - Material : VACUUM - Range cuts : gamma 2 mm e- 2 mm e+ 2 mm - Energy thresholds : gamma 990 eV e- 990 eV e+ 990 eV - Region(s) which use this couple : - DefaultRegionForTheWorld - -==================================================================== - -### Run 5 start. -/vis~/clear/view -/vis~/draw/current -Start Run processing. ->>>>>>>> Primary direction: (1,0,0) - -********************************************************************************************************* -* G4Track Information: Particle = mu+, Track ID = 1, Parent ID = 0 -********************************************************************************************************* - -Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 0 1.5 0 1e+03 0 0 0 HALL initStep - 1 4e+03 1.5 0 1e+03 1.12e-22 4e+03 4e+03 OutOfWorld Transportation ->>> Event 0 - 1 trajectories stored in this event. -Run terminated. -Run Summary - Number of events processed : 1 - User=0s Real=0s Sys=0s -/gun/particle e- -/run/beamOn 1 - -Region <DefaultRegionForTheWorld> -- appears in <HALL> world volume - Root logical volume(s) : HALL - Pointers : G4VUserRegionInformation[0], G4UserLimits[0], G4FastSimulationManager[0], G4UserSteppingAction[0] - Materials : VACUUM - Production cuts : gamma 2 mm e- 2 mm e+ 2 mm - -========= Table of registered couples ============================== - -Index : 0 used in the geometry : Yes recalculation needed : No - Material : VACUUM - Range cuts : gamma 2 mm e- 2 mm e+ 2 mm - Energy thresholds : gamma 990 eV e- 990 eV e+ 990 eV - Region(s) which use this couple : - DefaultRegionForTheWorld - -==================================================================== - -### Run 6 start. -/vis~/clear/view -/vis~/draw/current -Start Run processing. ->>>>>>>> Primary direction: (1,0,0) - -********************************************************************************************************* -* G4Track Information: Particle = e-, Track ID = 1, Parent ID = 0 -********************************************************************************************************* - -Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 0 1.5 0 1e+03 0 0 0 HALL initStep - 1 4e+03 1.5 0 1e+03 1.75e-22 4e+03 4e+03 OutOfWorld Transportation ->>> Event 0 - 1 trajectories stored in this event. -Run terminated. -Run Summary - Number of events processed : 1 - User=0s Real=0s Sys=0s -/gun/particle e+ -/run/beamOn 1 - -Region <DefaultRegionForTheWorld> -- appears in <HALL> world volume - Root logical volume(s) : HALL - Pointers : G4VUserRegionInformation[0], G4UserLimits[0], G4FastSimulationManager[0], G4UserSteppingAction[0] - Materials : VACUUM - Production cuts : gamma 2 mm e- 2 mm e+ 2 mm - -========= Table of registered couples ============================== - -Index : 0 used in the geometry : Yes recalculation needed : No - Material : VACUUM - Range cuts : gamma 2 mm e- 2 mm e+ 2 mm - Energy thresholds : gamma 990 eV e- 990 eV e+ 990 eV - Region(s) which use this couple : - DefaultRegionForTheWorld - -==================================================================== - -### Run 7 start. -/vis~/clear/view -/vis~/draw/current -Start Run processing. ->>>>>>>> Primary direction: (1,0,0) - -********************************************************************************************************* -* G4Track Information: Particle = e+, Track ID = 1, Parent ID = 0 -********************************************************************************************************* - -Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 0 1.5 0 1e+03 0 0 0 HALL initStep - 1 4e+03 1.5 0 1e+03 1.75e-22 4e+03 4e+03 OutOfWorld Transportation ->>> Event 0 - 1 trajectories stored in this event. -Run terminated. -Run Summary - Number of events processed : 1 - User=0s Real=0s Sys=0s -Graphics systems deleted. -Visualization Manager deleting... -UserDetectorConstruction deleted. -UserPhysicsList deleted. -UserRunAction deleted. -UserPrimaryGenerator deleted. -G4 kernel has come to Quit state. -EventManager deleted. -UImanager deleted. -Units table cleared. -StateManager deleted. -RunManagerKernel is deleted. -RunManager is deleting. - diff --git a/examples/extended/g3tog4/cltog4/cltog4.out b/examples/extended/g3tog4/cltog4/cltog4.out index d1b33f1f34..e69de29bb2 100644 --- a/examples/extended/g3tog4/cltog4/cltog4.out +++ b/examples/extended/g3tog4/cltog4/cltog4.out @@ -1,352 +0,0 @@ - - ############################################ - !!! WARNING - FPE detection is activated !!! - ############################################ - -************************************************************* - Geant4 version Name: geant4-09-02-patch-03-ref (29-January-2010) - Copyright : Geant4 Collaboration - Reference : NIM A 506 (2003), 250-303 - WWW : http://cern.ch/geant4 -************************************************************* - -Instantiated G3toG4DetectorConstruction using call list file "../data/testmodel.dat" -/run/verbose 1 -/tracking/verbose 1 -/tracking/storeTrajectory 1 -/run/initialize -Instantiated unit rotation matrix irot=0 -Reading the call List file ../data/testmodel.dat... -G4ggclos: setting top-level VolTableEntry -Dump of VTD - 26 entries: -Instantiated 26 volume table entries - 15 positions. -G3VolTable element 0 name BOX1 has 1 daughters -G3VolTable element 1 name BOX1_1 has 1 daughters -G3VolTable element 2 name BOX1_2 has 1 daughters -G3VolTable element 3 name BOX1_3 has 1 daughters -G3VolTable element 4 name BOX1_4 has 1 daughters -G3VolTable element 5 name BOX2 has 1 daughters -G3VolTable element 6 name BOX2_1 has 1 daughters -G3VolTable element 7 name BOX2_2 has 1 daughters -G3VolTable element 8 name BOX2_3 has 1 daughters -G3VolTable element 9 name BOX2_4 has 1 daughters -G3VolTable element 10 name BOX2_5 has 1 daughters -G3VolTable element 11 name BXD1 has 0 daughters -G3VolTable element 12 name BXD1_1 has 0 daughters -G3VolTable element 13 name BXD1_2 has 0 daughters -G3VolTable element 14 name BXD1_2_ENV has 1 daughters -G3VolTable element 15 name BXD1_3 has 0 daughters -G3VolTable element 16 name BXD1_3_ENV has 1 daughters -G3VolTable element 17 name BXD1_4 has 0 daughters -G3VolTable element 18 name BXD1_4_ENV has 1 daughters -G3VolTable element 19 name BXD1_5 has 0 daughters -G3VolTable element 20 name BXD1_5_ENV has 1 daughters -G3VolTable element 21 name HALL has 6 daughters -G3VolTable element 22 name TBD1 has 0 daughters -G3VolTable element 23 name TBD2 has 0 daughters -G3VolTable element 24 name TUB1 has 1 daughters -G3VolTable element 25 name TUB2 has 1 daughters -Call List file read completed. Build geometry -G3toG4 top level volume is HALL -Top-level G3toG4 logical volume HALL G4VisAttributes: invisible, daughters visible, colour: (1,1,1,1) - linestyle: solid, line width: 1 - drawing style: not forced, auxiliary edge visibility: not forced - line segments per circle: not forced. - time range: (-1.79769e+308,1.79769e+308) - G4AttValue pointer is zero, G4AttDef pointer is zero -Top-level G3toG4 logical volume HALL G4VisAttributes: invisible, daughters visible, colour: (1,1,1,1) - linestyle: solid, line width: 1 - drawing style: not forced, auxiliary edge visibility: not forced - line segments per circle: not forced. - time range: (-1.79769e+308,1.79769e+308) - G4AttValue pointer is zero, G4AttDef pointer is zero -G3toG4PhysicsList::SetCuts:CutLength : 2 mm -/control/execute cltog4.in -/control/verbose 1 -/tracking/verbose 1 -/run/initialize -/gun/position 0. -1.5 0. -/gun/direction 0. 1. 0. -/gun/energy 1 GeV -/gun/particle chargedgeantino -/run/beamOn 10 - -phot: for gamma SubType= 12 - ===== EM models for the G4Region DefaultRegionForTheWorld ====== - PhotoElectric : Emin= 0 eV Emax= 100 TeV - -compt: for gamma SubType= 13 - Lambda tables from 100 eV to 100 TeV in 84 bins, spline: 1 - ===== EM models for the G4Region DefaultRegionForTheWorld ====== - Klein-Nishina : Emin= 0 eV Emax= 100 TeV - -conv: for gamma SubType= 14 - Lambda tables from 1.022 MeV to 100 TeV in 84 bins, spline: 1 - ===== EM models for the G4Region DefaultRegionForTheWorld ====== - Bethe-Heitler : Emin= 0 eV Emax= 100 TeV - -msc: for e- SubType= 10 - Lambda tables from 100 eV to 100 TeV in 84 bins, spline: 1 - RangeFactor= 0.02, step limit type: 1, lateralDisplacement: 1, skin= 3, geomFactor= 2.5 - ===== EM models for the G4Region DefaultRegionForTheWorld ====== - UrbanMscUni : Emin= 0 eV Emax= 100 TeV - -eIoni: for e- SubType= 2 - dE/dx and range tables from 100 eV to 100 TeV in 84 bins - Lambda tables from threshold to 100 TeV in 84 bins, spline: 1 - finalRange(mm)= 1, dRoverRange= 0.2, integral: 1, fluct: 1, linLossLimit= 0.01 - ===== EM models for the G4Region DefaultRegionForTheWorld ====== - MollerBhabha : Emin= 0 eV Emax= 100 TeV - -eBrem: for e- SubType= 3 - dE/dx and range tables from 100 eV to 100 TeV in 84 bins - Lambda tables from threshold to 100 TeV in 84 bins, spline: 1 - LPM flag: 1 for E > 1 GeV - ===== EM models for the G4Region DefaultRegionForTheWorld ====== - eBrem : Emin= 0 eV Emax= 1 GeV - eBremRel : Emin= 1 GeV Emax= 100 TeV - -eIoni: for e+ SubType= 2 - dE/dx and range tables from 100 eV to 100 TeV in 84 bins - Lambda tables from threshold to 100 TeV in 84 bins, spline: 1 - finalRange(mm)= 1, dRoverRange= 0.2, integral: 1, fluct: 1, linLossLimit= 0.01 - ===== EM models for the G4Region DefaultRegionForTheWorld ====== - MollerBhabha : Emin= 0 eV Emax= 100 TeV - -eBrem: for e+ SubType= 3 - dE/dx and range tables from 100 eV to 100 TeV in 84 bins - Lambda tables from threshold to 100 TeV in 84 bins, spline: 1 - LPM flag: 1 for E > 1 GeV - ===== EM models for the G4Region DefaultRegionForTheWorld ====== - eBrem : Emin= 0 eV Emax= 1 GeV - eBremRel : Emin= 1 GeV Emax= 100 TeV - -annihil: for e+ SubType= 5 - Lambda tables from 100 eV to 100 TeV in 84 bins, spline: 1 - ===== EM models for the G4Region DefaultRegionForTheWorld ====== - eplus2gg : Emin= 0 eV Emax= 100 TeV - -msc: for proton SubType= 10 - Lambda tables from 100 eV to 100 TeV in 84 bins, spline: 1 - RangeFactor= 0.02, step limit type: 1, lateralDisplacement: 1, skin= 3, geomFactor= 2.5 - ===== EM models for the G4Region DefaultRegionForTheWorld ====== - UrbanMscUni : Emin= 0 eV Emax= 100 TeV - -hIoni: for proton SubType= 2 - dE/dx and range tables from 100 eV to 100 TeV in 84 bins - Lambda tables from threshold to 100 TeV in 84 bins, spline: 1 - finalRange(mm)= 1, dRoverRange= 0.2, integral: 1, fluct: 1, linLossLimit= 0.01 - NuclearStopping= 1 - ===== EM models for the G4Region DefaultRegionForTheWorld ====== - Bragg : Emin= 0 eV Emax= 2 MeV - BetheBloch : Emin= 2 MeV Emax= 100 TeV - -hIoni: for anti_proton SubType= 2 - dE/dx and range tables from 100 eV to 100 TeV in 84 bins - Lambda tables from threshold to 100 TeV in 84 bins, spline: 1 - finalRange(mm)= 1, dRoverRange= 0.2, integral: 1, fluct: 1, linLossLimit= 0.01 - NuclearStopping= 1 - ===== EM models for the G4Region DefaultRegionForTheWorld ====== - Bragg : Emin= 0 eV Emax= 2 MeV - BetheBloch : Emin= 2 MeV Emax= 100 TeV - -hIoni: for kaon+ SubType= 2 - dE/dx and range tables from 100 eV to 100 TeV in 84 bins - Lambda tables from threshold to 100 TeV in 84 bins, spline: 1 - finalRange(mm)= 1, dRoverRange= 0.2, integral: 1, fluct: 1, linLossLimit= 0.01 - NuclearStopping= 0 - ===== EM models for the G4Region DefaultRegionForTheWorld ====== - Bragg : Emin= 0 eV Emax= 1.05231 MeV - BetheBloch : Emin= 1.05231 MeV Emax= 100 TeV - -hIoni: for kaon- SubType= 2 - dE/dx and range tables from 100 eV to 100 TeV in 84 bins - Lambda tables from threshold to 100 TeV in 84 bins, spline: 1 - finalRange(mm)= 1, dRoverRange= 0.2, integral: 1, fluct: 1, linLossLimit= 0.01 - NuclearStopping= 0 - ===== EM models for the G4Region DefaultRegionForTheWorld ====== - Bragg : Emin= 0 eV Emax= 1.05231 MeV - BetheBloch : Emin= 1.05231 MeV Emax= 100 TeV - -msc: for mu+ SubType= 10 - Lambda tables from 100 eV to 100 TeV in 84 bins, spline: 1 - RangeFactor= 0.02, step limit type: 1, lateralDisplacement: 1, skin= 3, geomFactor= 2.5 - ===== EM models for the G4Region DefaultRegionForTheWorld ====== - UrbanMscUni : Emin= 0 eV Emax= 100 TeV - -muIoni: for mu+ SubType= 2 - dE/dx and range tables from 100 eV to 100 TeV in 84 bins - Lambda tables from threshold to 100 TeV in 84 bins, spline: 1 - finalRange(mm)= 1, dRoverRange= 0.2, integral: 1, fluct: 1, linLossLimit= 0.01 - ===== EM models for the G4Region DefaultRegionForTheWorld ====== - Bragg : Emin= 0 eV Emax= 200 keV - BetheBloch : Emin= 200 keV Emax= 1 GeV - MuBetheBloch : Emin= 1 GeV Emax= 100 TeV - -muBrems: for mu+ SubType= 3 - dE/dx and range tables from 100 eV to 100 TeV in 84 bins - Lambda tables from threshold to 100 TeV in 84 bins, spline: 1 - ===== EM models for the G4Region DefaultRegionForTheWorld ====== - MuBrem : Emin= 0 eV Emax= 100 TeV - -muPairProd: for mu+ SubType= 4 - dE/dx and range tables from 100 eV to 100 TeV in 84 bins - Lambda tables from threshold to 100 TeV in 84 bins, spline: 1 - ===== EM models for the G4Region DefaultRegionForTheWorld ====== - muPairProd : Emin= 0 eV Emax= 100 TeV - -muIoni: for mu- SubType= 2 - dE/dx and range tables from 100 eV to 100 TeV in 84 bins - Lambda tables from threshold to 100 TeV in 84 bins, spline: 1 - finalRange(mm)= 1, dRoverRange= 0.2, integral: 1, fluct: 1, linLossLimit= 0.01 - ===== EM models for the G4Region DefaultRegionForTheWorld ====== - Bragg : Emin= 0 eV Emax= 200 keV - BetheBloch : Emin= 200 keV Emax= 1 GeV - MuBetheBloch : Emin= 1 GeV Emax= 100 TeV - -muBrems: for mu- SubType= 3 - dE/dx and range tables from 100 eV to 100 TeV in 84 bins - Lambda tables from threshold to 100 TeV in 84 bins, spline: 1 - ===== EM models for the G4Region DefaultRegionForTheWorld ====== - MuBrem : Emin= 0 eV Emax= 100 TeV - -muPairProd: for mu- SubType= 4 - dE/dx and range tables from 100 eV to 100 TeV in 84 bins - Lambda tables from threshold to 100 TeV in 84 bins, spline: 1 - ===== EM models for the G4Region DefaultRegionForTheWorld ====== - muPairProd : Emin= 0 eV Emax= 100 TeV - -hIoni: for pi+ SubType= 2 - dE/dx and range tables from 100 eV to 100 TeV in 84 bins - Lambda tables from threshold to 100 TeV in 84 bins, spline: 1 - finalRange(mm)= 1, dRoverRange= 0.2, integral: 1, fluct: 1, linLossLimit= 0.01 - NuclearStopping= 0 - ===== EM models for the G4Region DefaultRegionForTheWorld ====== - Bragg : Emin= 0 eV Emax= 297.504 keV - BetheBloch : Emin= 297.504 keV Emax= 100 TeV - -msc: for pi- SubType= 10 - Lambda tables from 100 eV to 100 TeV in 84 bins, spline: 1 - RangeFactor= 0.02, step limit type: 1, lateralDisplacement: 1, skin= 3, geomFactor= 2.5 - ===== EM models for the G4Region DefaultRegionForTheWorld ====== - UrbanMscUni : Emin= 0 eV Emax= 100 TeV - -hIoni: for pi- SubType= 2 - dE/dx and range tables from 100 eV to 100 TeV in 84 bins - Lambda tables from threshold to 100 TeV in 84 bins, spline: 1 - finalRange(mm)= 1, dRoverRange= 0.2, integral: 1, fluct: 1, linLossLimit= 0.01 - NuclearStopping= 0 - ===== EM models for the G4Region DefaultRegionForTheWorld ====== - Bragg : Emin= 0 eV Emax= 297.504 keV - BetheBloch : Emin= 297.504 keV Emax= 100 TeV - -========= Table of registered couples ============================== - -Index : 0 used in the geometry : Yes recalculation needed : No - Material : VACUUM - Range cuts : gamma 2 mm e- 2 mm e+ 2 mm - Energy thresholds : gamma 990 eV e- 990 eV e+ 990 eV - Region(s) which use this couple : - DefaultRegionForTheWorld - -==================================================================== - -### Run 0 start. -Start Run processing. ->>>>>>>> Primary direction: (0,1,0) - -********************************************************************************************************* -* G4Track Information: Particle = chargedgeantino, Track ID = 1, Parent ID = 0 -********************************************************************************************************* - -Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 0 -15 0 1e+03 0 0 0 HALL initStep - 1 0 4e+03 0 1e+03 0 4.02e+03 4.02e+03 OutOfWorld Transportation ->>>>>>>> Primary direction: (0,1,0) - -********************************************************************************************************* -* G4Track Information: Particle = chargedgeantino, Track ID = 1, Parent ID = 0 -********************************************************************************************************* - -Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 0 -15 0 1e+03 0 0 0 HALL initStep - 1 0 4e+03 0 1e+03 0 4.02e+03 4.02e+03 OutOfWorld Transportation ->>>>>>>> Primary direction: (0,1,0) - -********************************************************************************************************* -* G4Track Information: Particle = chargedgeantino, Track ID = 1, Parent ID = 0 -********************************************************************************************************* - -Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 0 -15 0 1e+03 0 0 0 HALL initStep - 1 0 4e+03 0 1e+03 0 4.02e+03 4.02e+03 OutOfWorld Transportation ->>>>>>>> Primary direction: (0,1,0) - -********************************************************************************************************* -* G4Track Information: Particle = chargedgeantino, Track ID = 1, Parent ID = 0 -********************************************************************************************************* - -Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 0 -15 0 1e+03 0 0 0 HALL initStep - 1 0 4e+03 0 1e+03 0 4.02e+03 4.02e+03 OutOfWorld Transportation ->>>>>>>> Primary direction: (0,1,0) - -********************************************************************************************************* -* G4Track Information: Particle = chargedgeantino, Track ID = 1, Parent ID = 0 -********************************************************************************************************* - -Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 0 -15 0 1e+03 0 0 0 HALL initStep - 1 0 4e+03 0 1e+03 0 4.02e+03 4.02e+03 OutOfWorld Transportation ->>>>>>>> Primary direction: (0,1,0) - -********************************************************************************************************* -* G4Track Information: Particle = chargedgeantino, Track ID = 1, Parent ID = 0 -********************************************************************************************************* - -Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 0 -15 0 1e+03 0 0 0 HALL initStep - 1 0 4e+03 0 1e+03 0 4.02e+03 4.02e+03 OutOfWorld Transportation ->>>>>>>> Primary direction: (0,1,0) - -********************************************************************************************************* -* G4Track Information: Particle = chargedgeantino, Track ID = 1, Parent ID = 0 -********************************************************************************************************* - -Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 0 -15 0 1e+03 0 0 0 HALL initStep - 1 0 4e+03 0 1e+03 0 4.02e+03 4.02e+03 OutOfWorld Transportation ->>>>>>>> Primary direction: (0,1,0) - -********************************************************************************************************* -* G4Track Information: Particle = chargedgeantino, Track ID = 1, Parent ID = 0 -********************************************************************************************************* - -Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 0 -15 0 1e+03 0 0 0 HALL initStep - 1 0 4e+03 0 1e+03 0 4.02e+03 4.02e+03 OutOfWorld Transportation ->>>>>>>> Primary direction: (0,1,0) - -********************************************************************************************************* -* G4Track Information: Particle = chargedgeantino, Track ID = 1, Parent ID = 0 -********************************************************************************************************* - -Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 0 -15 0 1e+03 0 0 0 HALL initStep - 1 0 4e+03 0 1e+03 0 4.02e+03 4.02e+03 OutOfWorld Transportation ->>>>>>>> Primary direction: (0,1,0) - -********************************************************************************************************* -* G4Track Information: Particle = chargedgeantino, Track ID = 1, Parent ID = 0 -********************************************************************************************************* - -Step# X(mm) Y(mm) Z(mm) KinE(MeV) dE(MeV) StepLeng TrackLeng NextVolume ProcName - 0 0 -15 0 1e+03 0 0 0 HALL initStep - 1 0 4e+03 0 1e+03 0 4.02e+03 4.02e+03 OutOfWorld Transportation -Run terminated. -Run Summary - Number of events processed : 10 - User=0s Real=0s Sys=0s -G4 kernel has come to Quit state. - diff --git a/examples/extended/hadronic/Hadr01/hadr01.out b/examples/extended/hadronic/Hadr01/hadr01.out index 0138f5d46a..4a4a2b9cdf 100644 --- a/examples/extended/hadronic/Hadr01/hadr01.out +++ b/examples/extended/hadronic/Hadr01/hadr01.out @@ -4,7 +4,7 @@ ############################################ ************************************************************* - Geant4 version Name: geant4-09-02-patch-03-ref (29-January-2010) + Geant4 version Name: geant4-09-02-patch-04-ref (16-September-2010) Copyright : Geant4 Collaboration Reference : NIM A 506 (2003), 250-303 WWW : http://cern.ch/geant4 diff --git a/examples/extended/medical/DICOM/include/DicomNestedPhantomParameterisation.hh b/examples/extended/medical/DICOM/include/DicomNestedPhantomParameterisation.hh index 218889b38c..9f7c1e6a3e 100644 --- a/examples/extended/medical/DICOM/include/DicomNestedPhantomParameterisation.hh +++ b/examples/extended/medical/DICOM/include/DicomNestedPhantomParameterisation.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: DicomNestedPhantomParameterisation.hh,v 1.2.4.1 2009/03/03 13:43:58 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-02-patch-03 $ +// GEANT4 tag $Name: geant4-09-02-patch-04 $ // // -------------------------------------------------------------------- #ifndef DICOMNESTEDPARAMETERISATION_HH diff --git a/examples/extended/medical/DICOM/src/DicomNestedPhantomParameterisation.cc b/examples/extended/medical/DICOM/src/DicomNestedPhantomParameterisation.cc index 3637a134ac..787d7ee44c 100644 --- a/examples/extended/medical/DICOM/src/DicomNestedPhantomParameterisation.cc +++ b/examples/extended/medical/DICOM/src/DicomNestedPhantomParameterisation.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: DicomNestedPhantomParameterisation.cc,v 1.4.2.1 2009/03/03 13:43:58 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-02-patch-03 $ +// GEANT4 tag $Name: geant4-09-02-patch-04 $ // // -------------------------------------------------------------------- #include "DicomNestedPhantomParameterisation.hh" diff --git a/examples/extended/medical/DICOM/src/G4PSDoseDeposit_RegNav.cc b/examples/extended/medical/DICOM/src/G4PSDoseDeposit_RegNav.cc index a8ad60fbf1..f8c2df3a44 100644 --- a/examples/extended/medical/DICOM/src/G4PSDoseDeposit_RegNav.cc +++ b/examples/extended/medical/DICOM/src/G4PSDoseDeposit_RegNav.cc @@ -25,7 +25,7 @@ // // // $Id: G4PSDoseDeposit_RegNav.cc,v 1.1.2.1 2009/03/03 13:43:58 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-02-patch-03 $ +// GEANT4 tag $Name: geant4-09-02-patch-04 $ // // G4PSDoseDeposit_RegNav #include "G4PSDoseDeposit_RegNav.hh" diff --git a/examples/extended/medical/GammaTherapy/GammaTherapy.out b/examples/extended/medical/GammaTherapy/GammaTherapy.out index 2e42f8212a..c566780ab5 100644 --- a/examples/extended/medical/GammaTherapy/GammaTherapy.out +++ b/examples/extended/medical/GammaTherapy/GammaTherapy.out @@ -4,7 +4,7 @@ ############################################ ************************************************************* - Geant4 version Name: geant4-09-02-patch-03-ref (29-January-2010) + Geant4 version Name: geant4-09-02-patch-04-ref (16-September-2010) Copyright : Geant4 Collaboration Reference : NIM A 506 (2003), 250-303 WWW : http://cern.ch/geant4 @@ -181,7 +181,7 @@ Start Run processing. Run terminated. Run Summary Number of events processed : 10000 - User=8.03s Real=8.03s Sys=0s + User=8.26s Real=8.27s Sys=0s RunAction: End of run actions are started Histo: End of run actions are started ======================================================== diff --git a/examples/extended/medical/fanoCavity/fanoCavity.out b/examples/extended/medical/fanoCavity/fanoCavity.out index 66acfb613f..0827e10346 100644 --- a/examples/extended/medical/fanoCavity/fanoCavity.out +++ b/examples/extended/medical/fanoCavity/fanoCavity.out @@ -4,7 +4,7 @@ ############################################ ************************************************************* - Geant4 version Name: geant4-09-02-patch-03-ref (29-January-2010) + Geant4 version Name: geant4-09-02-patch-04-ref (16-September-2010) Copyright : Geant4 Collaboration Reference : NIM A 506 (2003), 250-303 WWW : http://cern.ch/geant4 @@ -155,7 +155,7 @@ Start Run processing. Run terminated. Run Summary Number of events processed : 4000 - User=29.05s Real=29.05s Sys=0s + User=30.31s Real=30.32s Sys=0s ======================== run summary ====================== diff --git a/examples/extended/medical/fanoCavity2/fanoCavity2.out b/examples/extended/medical/fanoCavity2/fanoCavity2.out index 66739ef294..9cb8988100 100644 --- a/examples/extended/medical/fanoCavity2/fanoCavity2.out +++ b/examples/extended/medical/fanoCavity2/fanoCavity2.out @@ -4,7 +4,7 @@ ############################################ ************************************************************* - Geant4 version Name: geant4-09-02-patch-03-ref (29-January-2010) + Geant4 version Name: geant4-09-02-patch-04-ref (16-September-2010) Copyright : Geant4 Collaboration Reference : NIM A 506 (2003), 250-303 WWW : http://cern.ch/geant4 @@ -166,7 +166,7 @@ Start Run processing. Run terminated. Run Summary Number of events processed : 40000 - User=8.6s Real=8.6s Sys=0s + User=8.5s Real=8.5s Sys=0.01s Process calls frequency ---> msc= 540054 eIoni= 617707 Transportation= 22373 diff --git a/examples/extended/optical/LXe/LXe.out b/examples/extended/optical/LXe/LXe.out index bf6e540d46..a963d842ab 100644 --- a/examples/extended/optical/LXe/LXe.out +++ b/examples/extended/optical/LXe/LXe.out @@ -4,7 +4,7 @@ ############################################ ************************************************************* - Geant4 version Name: geant4-09-02-patch-03-ref (29-January-2010) + Geant4 version Name: geant4-09-02-patch-04-ref (16-September-2010) Copyright : Geant4 Collaboration Reference : NIM A 506 (2003), 250-303 WWW : http://cern.ch/geant4 diff --git a/examples/extended/persistency/gdml/G02/geotest.cc b/examples/extended/persistency/gdml/G02/geotest.cc index 7273ac61c5..9e39f004e1 100644 --- a/examples/extended/persistency/gdml/G02/geotest.cc +++ b/examples/extended/persistency/gdml/G02/geotest.cc @@ -25,7 +25,7 @@ // // // $Id: geotest.cc,v 1.1.2.1 2009/03/03 13:50:54 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-02-patch-03 $ +// GEANT4 tag $Name: geant4-09-02-patch-04 $ // // // -------------------------------------------------------------- diff --git a/examples/extended/persistency/gdml/G02/src/DetectorConstruction.cc b/examples/extended/persistency/gdml/G02/src/DetectorConstruction.cc index 6cf21d05f1..cf12ababc9 100644 --- a/examples/extended/persistency/gdml/G02/src/DetectorConstruction.cc +++ b/examples/extended/persistency/gdml/G02/src/DetectorConstruction.cc @@ -25,7 +25,7 @@ // // // $Id: DetectorConstruction.cc,v 1.4.2.1 2009/03/03 13:50:54 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-02-patch-03 $ +// GEANT4 tag $Name: geant4-09-02-patch-04 $ // // Class DetectorConstruction implementation // diff --git a/examples/extended/polarisation/Pol01/pol01.out b/examples/extended/polarisation/Pol01/pol01.out index 3505080cf8..2c387f513f 100644 --- a/examples/extended/polarisation/Pol01/pol01.out +++ b/examples/extended/polarisation/Pol01/pol01.out @@ -4,7 +4,7 @@ ############################################ ************************************************************* - Geant4 version Name: geant4-09-02-patch-03-ref (29-January-2010) + Geant4 version Name: geant4-09-02-patch-04-ref (16-September-2010) Copyright : Geant4 Collaboration Reference : NIM A 506 (2003), 250-303 WWW : http://cern.ch/geant4 @@ -151,7 +151,7 @@ Start Run processing. Run terminated. Run Summary Number of events processed : 10000 - User=0.23s Real=0.23s Sys=0s + User=0.27s Real=0.26s Sys=0s The run consists of 10000 gamma of 10 MeV through 1.75 mm of G4_Fe (density: 7.874 g/cm3 ) diff --git a/examples/novice/N01/exampleN01.out b/examples/novice/N01/exampleN01.out index 6539c5f014..278e8cfc9c 100644 --- a/examples/novice/N01/exampleN01.out +++ b/examples/novice/N01/exampleN01.out @@ -4,7 +4,7 @@ ############################################ ************************************************************* - Geant4 version Name: geant4-09-02-patch-03-ref (29-January-2010) + Geant4 version Name: geant4-09-02-patch-04-ref (16-September-2010) Copyright : Geant4 Collaboration Reference : NIM A 506 (2003), 250-303 WWW : http://cern.ch/geant4 diff --git a/examples/novice/N02/exampleN02.out b/examples/novice/N02/exampleN02.out index 5b006947dd..71038cce49 100644 --- a/examples/novice/N02/exampleN02.out +++ b/examples/novice/N02/exampleN02.out @@ -4,7 +4,7 @@ ############################################ ************************************************************* - Geant4 version Name: geant4-09-02-patch-03-ref (29-January-2010) + Geant4 version Name: geant4-09-02-patch-04-ref (16-September-2010) Copyright : Geant4 Collaboration Reference : NIM A 506 (2003), 250-303 WWW : http://cern.ch/geant4 diff --git a/examples/novice/N03/exampleN03.out b/examples/novice/N03/exampleN03.out index ca53cd4ae7..558d89273e 100644 --- a/examples/novice/N03/exampleN03.out +++ b/examples/novice/N03/exampleN03.out @@ -4,7 +4,7 @@ ############################################ ************************************************************* - Geant4 version Name: geant4-09-02-patch-03-ref (29-January-2010) + Geant4 version Name: geant4-09-02-patch-04-ref (16-September-2010) Copyright : Geant4 Collaboration Reference : NIM A 506 (2003), 250-303 WWW : http://cern.ch/geant4 diff --git a/examples/novice/N04/exampleN04.out b/examples/novice/N04/exampleN04.out index 323ef065fb..3f4fbeeffd 100644 --- a/examples/novice/N04/exampleN04.out +++ b/examples/novice/N04/exampleN04.out @@ -4,7 +4,7 @@ ############################################ ************************************************************* - Geant4 version Name: geant4-09-02-patch-03-ref (29-January-2010) + Geant4 version Name: geant4-09-02-patch-04-ref (16-September-2010) Copyright : Geant4 Collaboration Reference : NIM A 506 (2003), 250-303 WWW : http://cern.ch/geant4 @@ -366,6 +366,6 @@ Stage 1->2 : 1 isolated muon found. Run terminated. Run Summary Number of events processed : 3 - User=2.57s Real=2.59s Sys=0s + User=2.49s Real=2.5s Sys=0s G4 kernel has come to Quit state. diff --git a/examples/novice/N05/exampleN05.out b/examples/novice/N05/exampleN05.out index e9ad3eb432..5bf9b2f57a 100644 --- a/examples/novice/N05/exampleN05.out +++ b/examples/novice/N05/exampleN05.out @@ -5,7 +5,7 @@ RunManager construction starting.... ############################################ ************************************************************* - Geant4 version Name: geant4-09-02-patch-03-ref (29-January-2010) + Geant4 version Name: geant4-09-02-patch-04-ref (16-September-2010) Copyright : Geant4 Collaboration Reference : NIM A 506 (2003), 250-303 WWW : http://cern.ch/geant4 diff --git a/examples/novice/N06/exampleN06.out b/examples/novice/N06/exampleN06.out index 200f7b2513..b554b39e6f 100644 --- a/examples/novice/N06/exampleN06.out +++ b/examples/novice/N06/exampleN06.out @@ -4,7 +4,7 @@ ############################################ ************************************************************* - Geant4 version Name: geant4-09-02-patch-03-ref (29-January-2010) + Geant4 version Name: geant4-09-02-patch-04-ref (16-September-2010) Copyright : Geant4 Collaboration Reference : NIM A 506 (2003), 250-303 WWW : http://cern.ch/geant4 @@ -1364,7 +1364,7 @@ Step# X Y Z KineE dEStep StepLeng TrakLeng 1 -5 m -2.38 m -4.99 m 511 keV 0 eV 7.46 m 7.46 m Tank Transportation 2 -10 m -4.77 m -9.99 m 511 keV 0 eV 7.46 m 14.9 m OutOfWorld Transportation Number of optical photons produces in this event : 12 -number of event = 1 User=0s Real=0s Sys=0s +number of event = 1 User=0s Real=0.01s Sys=0s Graphics systems deleted. Visualization Manager deleting... diff --git a/examples/novice/N07/exampleN07.out b/examples/novice/N07/exampleN07.out index d57793f99e..f3d63d1bfc 100644 --- a/examples/novice/N07/exampleN07.out +++ b/examples/novice/N07/exampleN07.out @@ -4,7 +4,7 @@ ############################################ ************************************************************* - Geant4 version Name: geant4-09-02-patch-03-ref (29-January-2010) + Geant4 version Name: geant4-09-02-patch-04-ref (16-September-2010) Copyright : Geant4 Collaboration Reference : NIM A 506 (2003), 250-303 WWW : http://cern.ch/geant4 @@ -391,7 +391,7 @@ Start Run processing. Run terminated. Run Summary Number of events processed : 10 - User=3.88s Real=4.16s Sys=0.26s + User=3.77s Real=4.03s Sys=0.26s ############################################################ Run Summary - Number of events : 10 ############################################################ @@ -518,22 +518,22 @@ layer eDep/evt nGamma/evt nElec/evt nPosi/evt stpLen/evt nStep/evt 18 0 0 0 0 0 0 19 0 0 0 0 0 0 ############################################################ -CPU Time spent by each region0x2a98fc0188 +CPU Time spent by each region0x2a98fbf188 Region <DefaultRegionForTheWorld> All particles : User=0 Real=0 Sys=0 e+ / e- : User=0 Real=0 Sys=0 Region <Calor-A> - All particles : User=0.48 Real=0.54 Sys=0.01 - e+ / e- : User=0.37 Real=0.34 Sys=0.02 + All particles : User=0.52 Real=0.52 Sys=0.03 + e+ / e- : User=0.37 Real=0.36 Sys=0 Region <Calor-B> - All particles : User=0.99 Real=1.03 Sys=0.06 - e+ / e- : User=0.65 Real=0.72 Sys=0.05 + All particles : User=0.99 Real=1.1 Sys=0.08 + e+ / e- : User=0.66 Real=0.81 Sys=0.06 Region <Calor-C> - All particles : User=1.45 Real=1.45 Sys=0.07 - e+ / e- : User=1.06 Real=1.08 Sys=0.08 + All particles : User=1.38 Real=1.31 Sys=0.08 + e+ / e- : User=0.93 Real=0.95 Sys=0.02 /run/dumpCouples @@ -849,7 +849,7 @@ Start Run processing. Run terminated. Run Summary Number of events processed : 10 - User=3.8s Real=4.06s Sys=0.27s + User=3.81s Real=4.07s Sys=0.27s ############################################################ Run Summary - Number of events : 10 ############################################################ @@ -976,22 +976,22 @@ layer eDep/evt nGamma/evt nElec/evt nPosi/evt stpLen/evt nStep/evt 18 0 0 0 0 0 0 19 0 0 0 0 0 0 ############################################################ -CPU Time spent by each region0x2a98fc0188 +CPU Time spent by each region0x2a98fbf188 Region <DefaultRegionForTheWorld> All particles : User=0 Real=0 Sys=0 e+ / e- : User=0 Real=0 Sys=0 Region <Calor-A> - All particles : User=0.79 Real=0.91 Sys=0.05 - e+ / e- : User=0.58 Real=0.65 Sys=0.03 + All particles : User=0.87 Real=0.88 Sys=0.03 + e+ / e- : User=0.6 Real=0.63 Sys=0.05 Region <Calor-B> - All particles : User=1.56 Real=1.74 Sys=0.06 - e+ / e- : User=1.13 Real=1.3 Sys=0.05 + All particles : User=1.59 Real=1.7 Sys=0.05 + e+ / e- : User=1.19 Real=1.29 Sys=0.07 Region <Calor-C> - All particles : User=0.39 Real=0.33 Sys=0.04 - e+ / e- : User=0.23 Real=0.22 Sys=0.02 + All particles : User=0.4 Real=0.3 Sys=0.02 + e+ / e- : User=0.3 Real=0.16 Sys=0.01 /run/dumpCouples @@ -1336,7 +1336,7 @@ Start Run processing. Run terminated. Run Summary Number of events processed : 10 - User=0.8s Real=0.86s Sys=0.06s + User=0.81s Real=0.87s Sys=0.05s ############################################################ Run Summary - Number of events : 10 ############################################################ @@ -1463,22 +1463,22 @@ layer eDep/evt nGamma/evt nElec/evt nPosi/evt stpLen/evt nStep/evt 18 0.018885274 0 0.6 0 0.012085263 0.7 19 0.040120888 0 0.7 0 0.027643107 0.8 ############################################################ -CPU Time spent by each region0x2a98fc0188 +CPU Time spent by each region0x2a98fbf188 Region <DefaultRegionForTheWorld> All particles : User=0 Real=0 Sys=0 e+ / e- : User=0 Real=0 Sys=0 Region <Calor-A> - All particles : User=0.29 Real=0.29 Sys=0.02 - e+ / e- : User=0.15 Real=0.16 Sys=0.01 + All particles : User=0.3 Real=0.26 Sys=0 + e+ / e- : User=0.19 Real=0.15 Sys=0 Region <Calor-B> - All particles : User=0.23 Real=0.29 Sys=0.02 - e+ / e- : User=0.14 Real=0.14 Sys=0.01 + All particles : User=0.31 Real=0.29 Sys=0.01 + e+ / e- : User=0.18 Real=0.16 Sys=0.02 Region <Calor-C> - All particles : User=0.1 Real=0.07 Sys=0 - e+ / e- : User=0.04 Real=0.01 Sys=0 + All particles : User=0.06 Real=0.08 Sys=0.01 + e+ / e- : User=0.02 Real=0.02 Sys=0 /run/dumpCouples @@ -1854,7 +1854,7 @@ Start Run processing. Run terminated. Run Summary Number of events processed : 10 - User=1.22s Real=1.3s Sys=0.08s + User=1.21s Real=1.3s Sys=0.08s ############################################################ Run Summary - Number of events : 10 ############################################################ @@ -1981,22 +1981,22 @@ layer eDep/evt nGamma/evt nElec/evt nPosi/evt stpLen/evt nStep/evt 18 0.0030694876 0 0.1 0 0.0017974437 0.2 19 0.0003989646 0 0.1 0 5.1594466e-05 0.1 ############################################################ -CPU Time spent by each region0x2a98fc0188 +CPU Time spent by each region0x2a98fbf188 Region <DefaultRegionForTheWorld> All particles : User=0 Real=0 Sys=0 e+ / e- : User=0 Real=0 Sys=0 Region <Calor-A> - All particles : User=0.54 Real=0.53 Sys=0 - e+ / e- : User=0.29 Real=0.34 Sys=0.01 + All particles : User=0.55 Real=0.6 Sys=0.02 + e+ / e- : User=0.34 Real=0.39 Sys=0.04 Region <Calor-B> - All particles : User=0.21 Real=0.19 Sys=0.02 - e+ / e- : User=0.1 Real=0.08 Sys=0.01 + All particles : User=0.23 Real=0.17 Sys=0 + e+ / e- : User=0.17 Real=0.09 Sys=0 Region <Calor-C> - All particles : User=0.1 Real=0.17 Sys=0.02 - e+ / e- : User=0.04 Real=0.06 Sys=0.02 + All particles : User=0.14 Real=0.14 Sys=0.01 + e+ / e- : User=0.1 Real=0.06 Sys=0.01 /run/dumpCouples diff --git a/source/GNUmakefile b/source/GNUmakefile index b45f679a84..b3a5f8825e 100644 --- a/source/GNUmakefile +++ b/source/GNUmakefile @@ -1,4 +1,4 @@ -# $Id: GNUmakefile,v 1.89.2.1 2009/03/03 11:14:40 gcosmo Exp $ +# $Id: GNUmakefile,v 1.89.2.2 2010/09/23 15:13:33 gcosmo Exp $ # ----------------------------------------------------------------- # "gmake" makes default libraries for each subdomain. # "gmake global" makes global libraries for each subdomain. @@ -149,8 +149,8 @@ endif banner: @$(ECHO) "*************************************************************" - @$(ECHO) " Installation Geant4 version $$Name: geant4-09-02-patch-03 $ " - @$(ECHO) " Copyright (C) 1994-2009 Geant4 Collaboration " + @$(ECHO) " Installation Geant4 version $$Name: geant4-09-02-patch-04 $ " + @$(ECHO) " Copyright (C) 1994-2010 Geant4 Collaboration " @$(ECHO) "*************************************************************" clean_libs:: diff --git a/source/digits_hits/detector/include/G4VReadOutGeometry.hh b/source/digits_hits/detector/include/G4VReadOutGeometry.hh index 4e928aeccd..322504fa5a 100644 --- a/source/digits_hits/detector/include/G4VReadOutGeometry.hh +++ b/source/digits_hits/detector/include/G4VReadOutGeometry.hh @@ -25,7 +25,7 @@ // // // $Id: G4VReadOutGeometry.hh,v 1.2.4.1 2010/01/25 10:14:16 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-02-patch-03 $ +// GEANT4 tag $Name: geant4-09-02-patch-04 $ // // ------------------------------------------------------------ diff --git a/source/digits_hits/scorer/src/G4PSCellFlux.cc b/source/digits_hits/scorer/src/G4PSCellFlux.cc index 31ba157d6b..5846aa4580 100644 --- a/source/digits_hits/scorer/src/G4PSCellFlux.cc +++ b/source/digits_hits/scorer/src/G4PSCellFlux.cc @@ -25,7 +25,7 @@ // // // $Id: G4PSCellFlux.cc,v 1.1.4.1 2009/03/03 14:03:04 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-02-patch-03 $ +// GEANT4 tag $Name: geant4-09-02-patch-04 $ // // G4PSCellFlux #include "G4PSCellFlux.hh" diff --git a/source/digits_hits/scorer/src/G4PSCylinderSurfaceCurrent.cc b/source/digits_hits/scorer/src/G4PSCylinderSurfaceCurrent.cc index 1dae45cbfc..8fdddd1134 100644 --- a/source/digits_hits/scorer/src/G4PSCylinderSurfaceCurrent.cc +++ b/source/digits_hits/scorer/src/G4PSCylinderSurfaceCurrent.cc @@ -25,7 +25,7 @@ // // // $Id: G4PSCylinderSurfaceCurrent.cc,v 1.1.4.2 2010/01/25 10:14:16 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-02-patch-03 $ +// GEANT4 tag $Name: geant4-09-02-patch-04 $ // // G4PSCylinderSurfaceCurrent #include "G4PSCylinderSurfaceCurrent.hh" diff --git a/source/digits_hits/scorer/src/G4PSCylinderSurfaceFlux.cc b/source/digits_hits/scorer/src/G4PSCylinderSurfaceFlux.cc index eddce57644..6d274d44e3 100644 --- a/source/digits_hits/scorer/src/G4PSCylinderSurfaceFlux.cc +++ b/source/digits_hits/scorer/src/G4PSCylinderSurfaceFlux.cc @@ -25,7 +25,7 @@ // // // $Id: G4PSCylinderSurfaceFlux.cc,v 1.2.2.2 2010/01/25 10:14:16 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-02-patch-03 $ +// GEANT4 tag $Name: geant4-09-02-patch-04 $ // // // G4PSCylinderSurfaceFlux #include "G4PSCylinderSurfaceFlux.hh" diff --git a/source/digits_hits/scorer/src/G4PSDoseDeposit.cc b/source/digits_hits/scorer/src/G4PSDoseDeposit.cc index 25bac29c00..250c0be130 100644 --- a/source/digits_hits/scorer/src/G4PSDoseDeposit.cc +++ b/source/digits_hits/scorer/src/G4PSDoseDeposit.cc @@ -25,7 +25,7 @@ // // // $Id: G4PSDoseDeposit.cc,v 1.1.4.1 2009/03/03 14:03:04 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-02-patch-03 $ +// GEANT4 tag $Name: geant4-09-02-patch-04 $ // // G4PSDoseDeposit #include "G4PSDoseDeposit.hh" diff --git a/source/digits_hits/scorer/src/G4PSFlatSurfaceCurrent.cc b/source/digits_hits/scorer/src/G4PSFlatSurfaceCurrent.cc index 627b057c7d..e55900543b 100644 --- a/source/digits_hits/scorer/src/G4PSFlatSurfaceCurrent.cc +++ b/source/digits_hits/scorer/src/G4PSFlatSurfaceCurrent.cc @@ -25,7 +25,7 @@ // // // $Id: G4PSFlatSurfaceCurrent.cc,v 1.2.4.1 2009/03/03 14:03:04 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-02-patch-03 $ +// GEANT4 tag $Name: geant4-09-02-patch-04 $ // // G4PSFlatSurfaceCurrent #include "G4PSFlatSurfaceCurrent.hh" diff --git a/source/digits_hits/scorer/src/G4PSFlatSurfaceFlux.cc b/source/digits_hits/scorer/src/G4PSFlatSurfaceFlux.cc index f2b3913d84..11f384b59f 100644 --- a/source/digits_hits/scorer/src/G4PSFlatSurfaceFlux.cc +++ b/source/digits_hits/scorer/src/G4PSFlatSurfaceFlux.cc @@ -25,7 +25,7 @@ // // // $Id: G4PSFlatSurfaceFlux.cc,v 1.1.4.1 2009/03/03 14:03:04 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-02-patch-03 $ +// GEANT4 tag $Name: geant4-09-02-patch-04 $ // // G4PSFlatSurfaceFlux #include "G4PSFlatSurfaceFlux.hh" diff --git a/source/digits_hits/scorer/src/G4PSPassageCellFlux.cc b/source/digits_hits/scorer/src/G4PSPassageCellFlux.cc index b294211c97..15c53feeb8 100644 --- a/source/digits_hits/scorer/src/G4PSPassageCellFlux.cc +++ b/source/digits_hits/scorer/src/G4PSPassageCellFlux.cc @@ -25,7 +25,7 @@ // // // $Id: G4PSPassageCellFlux.cc,v 1.1.4.1 2009/03/03 14:03:04 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-02-patch-03 $ +// GEANT4 tag $Name: geant4-09-02-patch-04 $ // // G4PSPassageCellFlux #include "G4PSPassageCellFlux.hh" diff --git a/source/digits_hits/scorer/src/G4PSSphereSurfaceCurrent.cc b/source/digits_hits/scorer/src/G4PSSphereSurfaceCurrent.cc index d7963b1e52..6654585236 100644 --- a/source/digits_hits/scorer/src/G4PSSphereSurfaceCurrent.cc +++ b/source/digits_hits/scorer/src/G4PSSphereSurfaceCurrent.cc @@ -25,7 +25,7 @@ // // // $Id: G4PSSphereSurfaceCurrent.cc,v 1.2.4.2 2010/01/25 10:14:16 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-02-patch-03 $ +// GEANT4 tag $Name: geant4-09-02-patch-04 $ // // G4PSSphereSurfaceCurrent #include "G4PSSphereSurfaceCurrent.hh" diff --git a/source/digits_hits/scorer/src/G4PSSphereSurfaceFlux.cc b/source/digits_hits/scorer/src/G4PSSphereSurfaceFlux.cc index 258151ab7a..414d039cf1 100644 --- a/source/digits_hits/scorer/src/G4PSSphereSurfaceFlux.cc +++ b/source/digits_hits/scorer/src/G4PSSphereSurfaceFlux.cc @@ -25,7 +25,7 @@ // // // $Id: G4PSSphereSurfaceFlux.cc,v 1.1.4.2 2010/01/25 10:14:16 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-02-patch-03 $ +// GEANT4 tag $Name: geant4-09-02-patch-04 $ // // G4PSSphereSurfaceFlux #include "G4PSSphereSurfaceFlux.hh" diff --git a/source/digits_hits/utils/src/G4ScoreLogColorMap.cc b/source/digits_hits/utils/src/G4ScoreLogColorMap.cc index f834e1aaf9..37e25f287e 100644 --- a/source/digits_hits/utils/src/G4ScoreLogColorMap.cc +++ b/source/digits_hits/utils/src/G4ScoreLogColorMap.cc @@ -25,7 +25,7 @@ // // // $Id: G4ScoreLogColorMap.cc,v 1.2.2.1 2009/08/11 13:47:53 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-02-patch-03 $ +// GEANT4 tag $Name: geant4-09-02-patch-04 $ // #include "G4ScoreLogColorMap.hh" diff --git a/source/digits_hits/utils/src/G4VScoreColorMap.cc b/source/digits_hits/utils/src/G4VScoreColorMap.cc index 8d1727de81..1f3d03ca59 100644 --- a/source/digits_hits/utils/src/G4VScoreColorMap.cc +++ b/source/digits_hits/utils/src/G4VScoreColorMap.cc @@ -25,7 +25,7 @@ // // // $Id: G4VScoreColorMap.cc,v 1.3.2.1 2009/08/11 13:47:53 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-02-patch-03 $ +// GEANT4 tag $Name: geant4-09-02-patch-04 $ // #include "G4VScoreColorMap.hh" diff --git a/source/error_propagation/src/G4ErrorMagFieldLimitProcess.cc b/source/error_propagation/src/G4ErrorMagFieldLimitProcess.cc index 39b139734b..51158f9b68 100644 --- a/source/error_propagation/src/G4ErrorMagFieldLimitProcess.cc +++ b/source/error_propagation/src/G4ErrorMagFieldLimitProcess.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: G4ErrorMagFieldLimitProcess.cc,v 1.2.4.1 2010/01/25 10:22:27 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-02-patch-03 $ +// GEANT4 tag $Name: geant4-09-02-patch-04 $ // // ------------------------------------------------------------ // GEANT 4 class implementation file diff --git a/source/geometry/magneticfield/include/G4MagIntegratorStepper.hh b/source/geometry/magneticfield/include/G4MagIntegratorStepper.hh index 1799f441e6..d485cdaedf 100644 --- a/source/geometry/magneticfield/include/G4MagIntegratorStepper.hh +++ b/source/geometry/magneticfield/include/G4MagIntegratorStepper.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: G4MagIntegratorStepper.hh,v 1.12.6.1 2009/08/11 13:44:36 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-02-patch-03 $ +// GEANT4 tag $Name: geant4-09-02-patch-04 $ // // // class G4MagIntegratorStepper diff --git a/source/geometry/magneticfield/include/G4MagIntegratorStepper.icc b/source/geometry/magneticfield/include/G4MagIntegratorStepper.icc index 7140366ee4..4087c8cf3d 100644 --- a/source/geometry/magneticfield/include/G4MagIntegratorStepper.icc +++ b/source/geometry/magneticfield/include/G4MagIntegratorStepper.icc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: G4MagIntegratorStepper.icc,v 1.10.6.1 2009/08/11 13:44:36 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-02-patch-03 $ +// GEANT4 tag $Name: geant4-09-02-patch-04 $ // inline diff --git a/source/geometry/magneticfield/src/G4ChordFinder.cc b/source/geometry/magneticfield/src/G4ChordFinder.cc index 0af8fbdb1e..a6447db37b 100644 --- a/source/geometry/magneticfield/src/G4ChordFinder.cc +++ b/source/geometry/magneticfield/src/G4ChordFinder.cc @@ -25,7 +25,7 @@ // // // $Id: G4ChordFinder.cc,v 1.51.2.1 2009/08/11 13:44:36 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-02-patch-03 $ +// GEANT4 tag $Name: geant4-09-02-patch-04 $ // // // 25.02.97 - John Apostolakis - Design and implementation diff --git a/source/geometry/magneticfield/src/G4ClassicalRK4.cc b/source/geometry/magneticfield/src/G4ClassicalRK4.cc index 0ee6762fdb..05d666e28d 100644 --- a/source/geometry/magneticfield/src/G4ClassicalRK4.cc +++ b/source/geometry/magneticfield/src/G4ClassicalRK4.cc @@ -25,7 +25,7 @@ // // // $Id: G4ClassicalRK4.cc,v 1.12.6.1 2009/08/11 13:44:36 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-02-patch-03 $ +// GEANT4 tag $Name: geant4-09-02-patch-04 $ // // ------------------------------------------------------------------- diff --git a/source/geometry/magneticfield/src/G4EqEMFieldWithSpin.cc b/source/geometry/magneticfield/src/G4EqEMFieldWithSpin.cc index 27be56a1ef..694102b23b 100644 --- a/source/geometry/magneticfield/src/G4EqEMFieldWithSpin.cc +++ b/source/geometry/magneticfield/src/G4EqEMFieldWithSpin.cc @@ -25,7 +25,7 @@ // // // $Id: G4EqEMFieldWithSpin.cc,v 1.4.2.2 2010/01/25 11:30:34 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-02-patch-03 $ +// GEANT4 tag $Name: geant4-09-02-patch-04 $ // // // This is the standard right-hand side for equation of motion. diff --git a/source/geometry/magneticfield/src/G4MagIntegratorDriver.cc b/source/geometry/magneticfield/src/G4MagIntegratorDriver.cc index 0f68b404a2..e59a1f5215 100644 --- a/source/geometry/magneticfield/src/G4MagIntegratorDriver.cc +++ b/source/geometry/magneticfield/src/G4MagIntegratorDriver.cc @@ -25,7 +25,7 @@ // // // $Id: G4MagIntegratorDriver.cc,v 1.49.4.1 2009/08/11 13:44:36 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-02-patch-03 $ +// GEANT4 tag $Name: geant4-09-02-patch-04 $ // // // diff --git a/source/geometry/magneticfield/src/G4Mag_SpinEqRhs.cc b/source/geometry/magneticfield/src/G4Mag_SpinEqRhs.cc index 5fca0fdc97..3cbd313244 100644 --- a/source/geometry/magneticfield/src/G4Mag_SpinEqRhs.cc +++ b/source/geometry/magneticfield/src/G4Mag_SpinEqRhs.cc @@ -25,7 +25,7 @@ // // // $Id: G4Mag_SpinEqRhs.cc,v 1.13.2.1 2009/08/11 13:44:36 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-02-patch-03 $ +// GEANT4 tag $Name: geant4-09-02-patch-04 $ // // This is the standard right-hand side for equation of motion. // This version of the right-hand side includes the three components diff --git a/source/geometry/magneticfield/src/G4SimpleHeum.cc b/source/geometry/magneticfield/src/G4SimpleHeum.cc index e4fe641ee8..6958b2e733 100644 --- a/source/geometry/magneticfield/src/G4SimpleHeum.cc +++ b/source/geometry/magneticfield/src/G4SimpleHeum.cc @@ -25,7 +25,7 @@ // // // $Id: G4SimpleHeum.cc,v 1.8.6.1 2009/08/11 13:44:36 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-02-patch-03 $ +// GEANT4 tag $Name: geant4-09-02-patch-04 $ // // Simple Heum: // x_1 = x_0 + h * diff --git a/source/geometry/management/include/G4LogicalSurface.hh b/source/geometry/management/include/G4LogicalSurface.hh index 9ee51d6ed9..ac0c06b362 100644 --- a/source/geometry/management/include/G4LogicalSurface.hh +++ b/source/geometry/management/include/G4LogicalSurface.hh @@ -25,7 +25,7 @@ // // // $Id: G4LogicalSurface.hh,v 1.10.6.1 2009/08/11 13:36:18 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-02-patch-03 $ +// GEANT4 tag $Name: geant4-09-02-patch-04 $ // //////////////////////////////////////////////////////////////////////// // Class G4LogicalSurface diff --git a/source/geometry/management/include/G4LogicalSurface.icc b/source/geometry/management/include/G4LogicalSurface.icc index 693578301b..823f0feda1 100644 --- a/source/geometry/management/include/G4LogicalSurface.icc +++ b/source/geometry/management/include/G4LogicalSurface.icc @@ -25,7 +25,7 @@ // // // $Id: G4LogicalSurface.icc,v 1.9.6.1 2009/08/11 13:36:18 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-02-patch-03 $ +// GEANT4 tag $Name: geant4-09-02-patch-04 $ // //////////////////////////////////////////////////////////////////////// // Surface Class Inline Methods diff --git a/source/geometry/management/include/G4VTouchable.icc b/source/geometry/management/include/G4VTouchable.icc index de3bb5c326..8386879120 100644 --- a/source/geometry/management/include/G4VTouchable.icc +++ b/source/geometry/management/include/G4VTouchable.icc @@ -25,7 +25,7 @@ // // // $Id: G4VTouchable.icc,v 1.9.6.1 2010/01/26 08:19:41 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-02-patch-03 $ +// GEANT4 tag $Name: geant4-09-02-patch-04 $ // // // class G4VTouchable Inline implementation diff --git a/source/geometry/management/src/G4LogicalVolume.cc b/source/geometry/management/src/G4LogicalVolume.cc index 1232d1f5af..b0f3e3a79c 100644 --- a/source/geometry/management/src/G4LogicalVolume.cc +++ b/source/geometry/management/src/G4LogicalVolume.cc @@ -25,7 +25,7 @@ // // // $Id: G4LogicalVolume.cc,v 1.33.2.1 2010/01/26 08:19:41 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-02-patch-03 $ +// GEANT4 tag $Name: geant4-09-02-patch-04 $ // // // class G4LogicalVolume Implementation diff --git a/source/geometry/management/src/G4SmartVoxelHeader.cc b/source/geometry/management/src/G4SmartVoxelHeader.cc index e911971b7f..d5ed9d31fa 100644 --- a/source/geometry/management/src/G4SmartVoxelHeader.cc +++ b/source/geometry/management/src/G4SmartVoxelHeader.cc @@ -25,7 +25,7 @@ // // // $Id: G4SmartVoxelHeader.cc,v 1.31.2.2 2010/01/26 08:19:41 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-02-patch-03 $ +// GEANT4 tag $Name: geant4-09-02-patch-04 $ // // // class G4SmartVoxelHeader diff --git a/source/geometry/management/src/G4VTouchable.cc b/source/geometry/management/src/G4VTouchable.cc index a09b8e494b..a47a3cbd90 100644 --- a/source/geometry/management/src/G4VTouchable.cc +++ b/source/geometry/management/src/G4VTouchable.cc @@ -25,7 +25,7 @@ // // // $Id: G4VTouchable.cc,v 1.1.2.2 2010/01/26 08:19:41 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-02-patch-03 $ +// GEANT4 tag $Name: geant4-09-02-patch-04 $ // // // class G4VTouchable implementation diff --git a/source/geometry/navigation/include/G4Navigator.hh b/source/geometry/navigation/include/G4Navigator.hh index e7f2fa82d2..14e6d20ed1 100644 --- a/source/geometry/navigation/include/G4Navigator.hh +++ b/source/geometry/navigation/include/G4Navigator.hh @@ -25,7 +25,7 @@ // // // $Id: G4Navigator.hh,v 1.27.2.2 2010/01/26 09:10:09 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-02-patch-03 $ +// GEANT4 tag $Name: geant4-09-02-patch-04 $ // // // class G4Navigator diff --git a/source/geometry/navigation/include/G4PhantomParameterisation.hh b/source/geometry/navigation/include/G4PhantomParameterisation.hh index 0528ef7506..ed28ba6b6a 100755 --- a/source/geometry/navigation/include/G4PhantomParameterisation.hh +++ b/source/geometry/navigation/include/G4PhantomParameterisation.hh @@ -25,7 +25,7 @@ // // // $Id: G4PhantomParameterisation.hh,v 1.4.4.1 2009/08/11 13:31:19 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-02-patch-03 $ +// GEANT4 tag $Name: geant4-09-02-patch-04 $ // // // class G4PhantomParameterisation diff --git a/source/geometry/navigation/include/G4PropagatorInField.hh b/source/geometry/navigation/include/G4PropagatorInField.hh index 7f02f35207..63c7318b67 100644 --- a/source/geometry/navigation/include/G4PropagatorInField.hh +++ b/source/geometry/navigation/include/G4PropagatorInField.hh @@ -25,7 +25,7 @@ // // // $Id: G4PropagatorInField.hh,v 1.17.2.1 2010/01/26 09:10:09 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-02-patch-03 $ +// GEANT4 tag $Name: geant4-09-02-patch-04 $ // // // Class G4PropagatorInField diff --git a/source/geometry/navigation/include/G4PropagatorInField.icc b/source/geometry/navigation/include/G4PropagatorInField.icc index ab5de5c8ad..bf307ba0a5 100644 --- a/source/geometry/navigation/include/G4PropagatorInField.icc +++ b/source/geometry/navigation/include/G4PropagatorInField.icc @@ -25,7 +25,7 @@ // // // $Id: G4PropagatorInField.icc,v 1.13.2.2 2010/01/26 09:10:09 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-02-patch-03 $ +// GEANT4 tag $Name: geant4-09-02-patch-04 $ // // // ------------------------------------------------------------------------ diff --git a/source/geometry/navigation/include/G4RegularNavigationHelper.hh b/source/geometry/navigation/include/G4RegularNavigationHelper.hh index 4993549502..9c21b5ee33 100644 --- a/source/geometry/navigation/include/G4RegularNavigationHelper.hh +++ b/source/geometry/navigation/include/G4RegularNavigationHelper.hh @@ -25,7 +25,7 @@ // // // $Id: G4RegularNavigationHelper.hh,v 1.1.2.2 2009/03/03 11:21:17 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-02-patch-03 $ +// GEANT4 tag $Name: geant4-09-02-patch-04 $ // // -------------------------------------------------------------------- // GEANT 4 class header file diff --git a/source/geometry/navigation/include/G4VIntersectionLocator.hh b/source/geometry/navigation/include/G4VIntersectionLocator.hh index 8b5ec437bc..8da93f8efe 100644 --- a/source/geometry/navigation/include/G4VIntersectionLocator.hh +++ b/source/geometry/navigation/include/G4VIntersectionLocator.hh @@ -25,7 +25,7 @@ // // // $Id: G4VIntersectionLocator.hh,v 1.4.2.1 2010/01/26 09:10:09 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-02-patch-03 $ +// GEANT4 tag $Name: geant4-09-02-patch-04 $ // // // Class G4VIntersectionLocator diff --git a/source/geometry/navigation/src/G4BrentLocator.cc b/source/geometry/navigation/src/G4BrentLocator.cc index e1782916c1..d92c538e80 100644 --- a/source/geometry/navigation/src/G4BrentLocator.cc +++ b/source/geometry/navigation/src/G4BrentLocator.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: G4BrentLocator.cc,v 1.5.2.2 2009/08/11 13:31:19 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-02-patch-03 $ +// GEANT4 tag $Name: geant4-09-02-patch-04 $ // // Class G4BrentLocator implementation // diff --git a/source/geometry/navigation/src/G4VIntersectionLocator.cc b/source/geometry/navigation/src/G4VIntersectionLocator.cc index 5fb01954c7..2f3a657ee4 100644 --- a/source/geometry/navigation/src/G4VIntersectionLocator.cc +++ b/source/geometry/navigation/src/G4VIntersectionLocator.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: G4VIntersectionLocator.cc,v 1.4.2.2 2010/01/26 09:10:09 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-02-patch-03 $ +// GEANT4 tag $Name: geant4-09-02-patch-04 $ // // Class G4VIntersectionLocator implementation // diff --git a/source/geometry/solids/CSG/src/G4Cons.cc b/source/geometry/solids/CSG/src/G4Cons.cc index c383844750..46e2e336ea 100644 --- a/source/geometry/solids/CSG/src/G4Cons.cc +++ b/source/geometry/solids/CSG/src/G4Cons.cc @@ -25,7 +25,7 @@ // // // $Id: G4Cons.cc,v 1.60.2.2 2010/01/26 09:31:23 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-02-patch-03 $ +// GEANT4 tag $Name: geant4-09-02-patch-04 $ // // // class G4Cons diff --git a/source/geometry/solids/CSG/src/G4Orb.cc b/source/geometry/solids/CSG/src/G4Orb.cc index 2772b758d0..941ce4396c 100644 --- a/source/geometry/solids/CSG/src/G4Orb.cc +++ b/source/geometry/solids/CSG/src/G4Orb.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: G4Orb.cc,v 1.24.4.3 2010/01/26 16:20:31 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-02-patch-03 $ +// GEANT4 tag $Name: geant4-09-02-patch-04 $ // // class G4Orb // diff --git a/source/geometry/solids/CSG/src/G4Sphere.cc b/source/geometry/solids/CSG/src/G4Sphere.cc index d2939d7a08..d2bde26381 100644 --- a/source/geometry/solids/CSG/src/G4Sphere.cc +++ b/source/geometry/solids/CSG/src/G4Sphere.cc @@ -25,7 +25,7 @@ // // // $Id: G4Sphere.cc,v 1.68.2.1 2009/08/18 15:46:31 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-02-patch-03 $ +// GEANT4 tag $Name: geant4-09-02-patch-04 $ // // class G4Sphere // diff --git a/source/geometry/solids/CSG/src/G4Torus.cc b/source/geometry/solids/CSG/src/G4Torus.cc index 9382f92da1..e14b44a86a 100644 --- a/source/geometry/solids/CSG/src/G4Torus.cc +++ b/source/geometry/solids/CSG/src/G4Torus.cc @@ -25,7 +25,7 @@ // // // $Id: G4Torus.cc,v 1.63.6.1 2010/01/26 09:31:23 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-02-patch-03 $ +// GEANT4 tag $Name: geant4-09-02-patch-04 $ // // // class G4Torus diff --git a/source/geometry/solids/CSG/src/G4Tubs.cc b/source/geometry/solids/CSG/src/G4Tubs.cc index fd16c29493..c86c19ea7a 100644 --- a/source/geometry/solids/CSG/src/G4Tubs.cc +++ b/source/geometry/solids/CSG/src/G4Tubs.cc @@ -25,7 +25,7 @@ // // // $Id: G4Tubs.cc,v 1.74.2.1 2009/08/18 15:46:31 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-02-patch-03 $ +// GEANT4 tag $Name: geant4-09-02-patch-04 $ // // // class G4Tubs diff --git a/source/geometry/solids/specific/src/G4Ellipsoid.cc b/source/geometry/solids/specific/src/G4Ellipsoid.cc index 229bd60ac9..25b387c441 100644 --- a/source/geometry/solids/specific/src/G4Ellipsoid.cc +++ b/source/geometry/solids/specific/src/G4Ellipsoid.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: G4Ellipsoid.cc,v 1.14.8.2 2010/01/26 11:33:53 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-02-patch-03 $ +// GEANT4 tag $Name: geant4-09-02-patch-04 $ // // class G4Ellipsoid // diff --git a/source/geometry/solids/specific/src/G4Paraboloid.cc b/source/geometry/solids/specific/src/G4Paraboloid.cc index 29bed3d4e2..feabf1dbd3 100644 --- a/source/geometry/solids/specific/src/G4Paraboloid.cc +++ b/source/geometry/solids/specific/src/G4Paraboloid.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: G4Paraboloid.cc,v 1.8.2.1 2009/03/03 11:00:50 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-02-patch-03 $ +// GEANT4 tag $Name: geant4-09-02-patch-04 $ // // class G4Paraboloid // diff --git a/source/geometry/solids/specific/src/G4PolyconeSide.cc b/source/geometry/solids/specific/src/G4PolyconeSide.cc index 444fc5c557..6c0c3ff867 100644 --- a/source/geometry/solids/specific/src/G4PolyconeSide.cc +++ b/source/geometry/solids/specific/src/G4PolyconeSide.cc @@ -25,7 +25,7 @@ // // // $Id: G4PolyconeSide.cc,v 1.19.2.2 2010/01/26 11:33:53 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-02-patch-03 $ +// GEANT4 tag $Name: geant4-09-02-patch-04 $ // // // -------------------------------------------------------------------- diff --git a/source/geometry/solids/specific/src/G4TessellatedSolid.cc b/source/geometry/solids/specific/src/G4TessellatedSolid.cc index 615fc08006..ab488fe934 100644 --- a/source/geometry/solids/specific/src/G4TessellatedSolid.cc +++ b/source/geometry/solids/specific/src/G4TessellatedSolid.cc @@ -25,7 +25,7 @@ // ******************************************************************** // // $Id: G4TessellatedSolid.cc,v 1.18.2.1 2009/08/11 09:20:32 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-02-patch-03 $ +// GEANT4 tag $Name: geant4-09-02-patch-04 $ // // %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% // diff --git a/source/geometry/solids/specific/src/G4TwistTubsSide.cc b/source/geometry/solids/specific/src/G4TwistTubsSide.cc index 3f5d746ecf..a32bb91f62 100644 --- a/source/geometry/solids/specific/src/G4TwistTubsSide.cc +++ b/source/geometry/solids/specific/src/G4TwistTubsSide.cc @@ -25,7 +25,7 @@ // // // $Id: G4TwistTubsSide.cc,v 1.5.10.1 2010/01/26 11:33:53 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-02-patch-03 $ +// GEANT4 tag $Name: geant4-09-02-patch-04 $ // // // -------------------------------------------------------------------- diff --git a/source/geometry/solids/specific/src/G4VCSGfaceted.cc b/source/geometry/solids/specific/src/G4VCSGfaceted.cc index e89e76b659..4a62e57ae2 100644 --- a/source/geometry/solids/specific/src/G4VCSGfaceted.cc +++ b/source/geometry/solids/specific/src/G4VCSGfaceted.cc @@ -30,7 +30,7 @@ // and all its terms. // // $Id: G4VCSGfaceted.cc,v 1.25.2.1 2009/08/11 09:20:32 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-02-patch-03 $ +// GEANT4 tag $Name: geant4-09-02-patch-04 $ // // // -------------------------------------------------------------------- diff --git a/source/geometry/volumes/include/G4NavigationHistory.hh b/source/geometry/volumes/include/G4NavigationHistory.hh index 99eb810aad..9fa6d68b9f 100644 --- a/source/geometry/volumes/include/G4NavigationHistory.hh +++ b/source/geometry/volumes/include/G4NavigationHistory.hh @@ -25,7 +25,7 @@ // // // $Id: G4NavigationHistory.hh,v 1.13.4.1 2010/01/26 13:26:52 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-02-patch-03 $ +// GEANT4 tag $Name: geant4-09-02-patch-04 $ // // class G4NavigationHistory // diff --git a/source/geometry/volumes/include/G4NavigationHistory.icc b/source/geometry/volumes/include/G4NavigationHistory.icc index 4766b2435e..c048c93247 100644 --- a/source/geometry/volumes/include/G4NavigationHistory.icc +++ b/source/geometry/volumes/include/G4NavigationHistory.icc @@ -25,7 +25,7 @@ // // // $Id: G4NavigationHistory.icc,v 1.12.4.1 2009/08/11 09:24:31 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-02-patch-03 $ +// GEANT4 tag $Name: geant4-09-02-patch-04 $ // // // class G4NavigationHistory Inline implementation diff --git a/source/geometry/volumes/include/G4TouchableHistory.hh b/source/geometry/volumes/include/G4TouchableHistory.hh index c33f908265..8da2a83f6b 100644 --- a/source/geometry/volumes/include/G4TouchableHistory.hh +++ b/source/geometry/volumes/include/G4TouchableHistory.hh @@ -25,7 +25,7 @@ // // // $Id: G4TouchableHistory.hh,v 1.8.4.1 2010/01/26 13:26:52 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-02-patch-03 $ +// GEANT4 tag $Name: geant4-09-02-patch-04 $ // // // class G4TouchableHistory diff --git a/source/geometry/volumes/include/G4TouchableHistory.icc b/source/geometry/volumes/include/G4TouchableHistory.icc index b1b0aadd73..9897d65875 100644 --- a/source/geometry/volumes/include/G4TouchableHistory.icc +++ b/source/geometry/volumes/include/G4TouchableHistory.icc @@ -25,7 +25,7 @@ // // // $Id: G4TouchableHistory.icc,v 1.10.4.1 2010/01/26 13:26:52 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-02-patch-03 $ +// GEANT4 tag $Name: geant4-09-02-patch-04 $ // // // class G4TouchableHistory inline implementation diff --git a/source/geometry/volumes/src/G4AssemblyVolume.cc b/source/geometry/volumes/src/G4AssemblyVolume.cc index 757574fb98..cef5a7c807 100644 --- a/source/geometry/volumes/src/G4AssemblyVolume.cc +++ b/source/geometry/volumes/src/G4AssemblyVolume.cc @@ -25,7 +25,7 @@ // // // $Id: G4AssemblyVolume.cc,v 1.11.4.1 2010/01/26 13:26:52 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-02-patch-03 $ +// GEANT4 tag $Name: geant4-09-02-patch-04 $ // // // Class G4AssemblyVolume - implementation diff --git a/source/geometry/volumes/src/G4NavigationHistory.cc b/source/geometry/volumes/src/G4NavigationHistory.cc index 994e40e5f6..30786b849e 100644 --- a/source/geometry/volumes/src/G4NavigationHistory.cc +++ b/source/geometry/volumes/src/G4NavigationHistory.cc @@ -25,7 +25,7 @@ // // // $Id: G4NavigationHistory.cc,v 1.10.4.1 2009/08/11 09:24:31 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-02-patch-03 $ +// GEANT4 tag $Name: geant4-09-02-patch-04 $ // // // G4NavigationHistory Implementation diff --git a/source/geometry/volumes/src/G4NavigationLevel.cc b/source/geometry/volumes/src/G4NavigationLevel.cc index ed214b566c..8e13d70cd3 100644 --- a/source/geometry/volumes/src/G4NavigationLevel.cc +++ b/source/geometry/volumes/src/G4NavigationLevel.cc @@ -25,7 +25,7 @@ // // // $Id: G4NavigationLevel.cc,v 1.4.4.1 2009/08/11 09:24:31 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-02-patch-03 $ +// GEANT4 tag $Name: geant4-09-02-patch-04 $ // // 30.09.97 J.Apostolakis Initial version. // diff --git a/source/geometry/volumes/src/G4PVParameterised.cc b/source/geometry/volumes/src/G4PVParameterised.cc index 7eb0a8cf06..fd84a61900 100644 --- a/source/geometry/volumes/src/G4PVParameterised.cc +++ b/source/geometry/volumes/src/G4PVParameterised.cc @@ -25,7 +25,7 @@ // // // $Id: G4PVParameterised.cc,v 1.10.4.1 2010/01/26 13:26:52 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-02-patch-03 $ +// GEANT4 tag $Name: geant4-09-02-patch-04 $ // // // class G4PVParameterised diff --git a/source/geometry/volumes/src/G4TouchableHistory.cc b/source/geometry/volumes/src/G4TouchableHistory.cc index 7d318a1b86..25205772e8 100644 --- a/source/geometry/volumes/src/G4TouchableHistory.cc +++ b/source/geometry/volumes/src/G4TouchableHistory.cc @@ -25,7 +25,7 @@ // // // $Id: G4TouchableHistory.cc,v 1.12.4.1 2010/01/26 13:26:52 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-02-patch-03 $ +// GEANT4 tag $Name: geant4-09-02-patch-04 $ // // // class G4TouchableHistory Implementation diff --git a/source/global/History b/source/global/History index 2446cec223..c3ca70c4e0 100644 --- a/source/global/History +++ b/source/global/History @@ -1,4 +1,4 @@ -$Id: History,v 1.216.2.3 2010/01/26 15:57:14 gcosmo Exp $ +$Id: History,v 1.216.2.4 2010/09/23 15:03:58 gcosmo Exp $ ------------------------------------------------------------------- ========================================================= @@ -17,6 +17,9 @@ committal in the CVS repository ! * Reverse chronological order (last date on top), please * ---------------------------------------------------------- +September 16, 2010 G.Cosmo (global-V09-01-22) +- Changed date for release 9.2.p04. + January 26, 2010 G.Cosmo (global-V09-01-21) - Changed date for release 9.2.p03. diff --git a/source/global/management/include/G4String.hh b/source/global/management/include/G4String.hh index 039c0347e0..5139e9973b 100644 --- a/source/global/management/include/G4String.hh +++ b/source/global/management/include/G4String.hh @@ -25,7 +25,7 @@ // // // $Id: G4String.hh,v 1.10.2.1 2009/08/11 15:41:53 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-02-patch-03 $ +// GEANT4 tag $Name: geant4-09-02-patch-04 $ // // //--------------------------------------------------------------- diff --git a/source/global/management/include/G4String.icc b/source/global/management/include/G4String.icc index 95c217a677..6e0ac0fb90 100644 --- a/source/global/management/include/G4String.icc +++ b/source/global/management/include/G4String.icc @@ -25,7 +25,7 @@ // // // $Id: G4String.icc,v 1.11.2.1 2009/08/11 15:41:53 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-02-patch-03 $ +// GEANT4 tag $Name: geant4-09-02-patch-04 $ // // //--------------------------------------------------------------- diff --git a/source/global/management/include/G4Version.hh b/source/global/management/include/G4Version.hh index 46484df10f..055b7f7fb1 100644 --- a/source/global/management/include/G4Version.hh +++ b/source/global/management/include/G4Version.hh @@ -24,8 +24,8 @@ // ******************************************************************** // // -// $Id: G4Version.hh,v 1.17.2.3 2010/01/26 15:57:14 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-02-patch-03 $ +// $Id: G4Version.hh,v 1.17.2.5 2010/09/23 15:13:33 gcosmo Exp $ +// GEANT4 tag $Name: geant4-09-02-patch-04 $ // // Version information // @@ -46,18 +46,18 @@ // |--> patch number #ifndef G4VERSION_NUMBER -#define G4VERSION_NUMBER 923 +#define G4VERSION_NUMBER 924 #endif #ifndef G4VERSION_TAG -#define G4VERSION_TAG "$Name: geant4-09-02-patch-03 $" +#define G4VERSION_TAG "$Name: geant4-09-02-patch-04 $" #endif // as variables #include "G4String.hh" -static const G4String G4Version = "$Name: geant4-09-02-patch-03 $"; -static const G4String G4Date = "(29-January-2010)"; +static const G4String G4Version = "$Name: geant4-09-02-patch-04 $"; +static const G4String G4Date = "(16-September-2010)"; #endif diff --git a/source/materials/include/G4MaterialStoppingICRU73.hh b/source/materials/include/G4MaterialStoppingICRU73.hh index 114556a94c..ac662876e6 100644 --- a/source/materials/include/G4MaterialStoppingICRU73.hh +++ b/source/materials/include/G4MaterialStoppingICRU73.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: G4MaterialStoppingICRU73.hh,v 1.3.2.1 2009/03/03 13:30:34 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-02-patch-03 $ +// GEANT4 tag $Name: geant4-09-02-patch-04 $ #ifndef G4MaterialStoppingICRU73_h #define G4MaterialStoppingICRU73_h 1 diff --git a/source/materials/include/G4SimpleMaterialStoppingICRU73.hh b/source/materials/include/G4SimpleMaterialStoppingICRU73.hh index 897dd8d68e..662fca7b1b 100644 --- a/source/materials/include/G4SimpleMaterialStoppingICRU73.hh +++ b/source/materials/include/G4SimpleMaterialStoppingICRU73.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: G4SimpleMaterialStoppingICRU73.hh,v 1.3.2.1 2009/03/03 13:30:34 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-02-patch-03 $ +// GEANT4 tag $Name: geant4-09-02-patch-04 $ #ifndef G4SimpleMaterialStoppingICRU73_h #define G4SimpleMaterialStoppingICRU73_h 1 diff --git a/source/materials/src/G4MaterialStoppingICRU73.cc b/source/materials/src/G4MaterialStoppingICRU73.cc index c14cb171cb..df63a5c78a 100644 --- a/source/materials/src/G4MaterialStoppingICRU73.cc +++ b/source/materials/src/G4MaterialStoppingICRU73.cc @@ -25,7 +25,7 @@ // // // $Id: G4MaterialStoppingICRU73.cc,v 1.3.2.1 2009/03/03 13:30:34 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-02-patch-03 $ +// GEANT4 tag $Name: geant4-09-02-patch-04 $ //--------------------------------------------------------------------------- // diff --git a/source/materials/src/G4SimpleMaterialStoppingICRU73.cc b/source/materials/src/G4SimpleMaterialStoppingICRU73.cc index 1ffdfcb77e..e5d6546be8 100644 --- a/source/materials/src/G4SimpleMaterialStoppingICRU73.cc +++ b/source/materials/src/G4SimpleMaterialStoppingICRU73.cc @@ -25,7 +25,7 @@ // // // $Id: G4SimpleMaterialStoppingICRU73.cc,v 1.3.2.1 2009/03/03 13:30:34 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-02-patch-03 $ +// GEANT4 tag $Name: geant4-09-02-patch-04 $ //--------------------------------------------------------------------------- // diff --git a/source/particles/hadrons/ions/src/G4Alpha.cc b/source/particles/hadrons/ions/src/G4Alpha.cc index 082c67e650..71674e06c3 100644 --- a/source/particles/hadrons/ions/src/G4Alpha.cc +++ b/source/particles/hadrons/ions/src/G4Alpha.cc @@ -25,7 +25,7 @@ // // // $Id: G4Alpha.cc,v 1.14.4.1 2009/03/04 15:16:02 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-02-patch-03 $ +// GEANT4 tag $Name: geant4-09-02-patch-04 $ // // // ---------------------------------------------------------------------- diff --git a/source/particles/hadrons/ions/src/G4He3.cc b/source/particles/hadrons/ions/src/G4He3.cc index 01ef5bc00f..5e6bc94db4 100644 --- a/source/particles/hadrons/ions/src/G4He3.cc +++ b/source/particles/hadrons/ions/src/G4He3.cc @@ -25,7 +25,7 @@ // // // $Id: G4He3.cc,v 1.14.4.1 2009/03/04 15:16:02 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-02-patch-03 $ +// GEANT4 tag $Name: geant4-09-02-patch-04 $ // // // ---------------------------------------------------------------------- diff --git a/source/particles/hadrons/ions/src/G4Triton.cc b/source/particles/hadrons/ions/src/G4Triton.cc index c3a2088e5a..eb0a81403a 100644 --- a/source/particles/hadrons/ions/src/G4Triton.cc +++ b/source/particles/hadrons/ions/src/G4Triton.cc @@ -25,7 +25,7 @@ // // // $Id: G4Triton.cc,v 1.14.4.1 2009/03/04 15:16:02 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-02-patch-03 $ +// GEANT4 tag $Name: geant4-09-02-patch-04 $ // // // ---------------------------------------------------------------------- diff --git a/source/particles/management/src/G4IonTable.cc b/source/particles/management/src/G4IonTable.cc index c3b71a79a6..0ff6b8c8d1 100644 --- a/source/particles/management/src/G4IonTable.cc +++ b/source/particles/management/src/G4IonTable.cc @@ -25,7 +25,7 @@ // // // $Id: G4IonTable.cc,v 1.53.2.1 2009/03/03 13:52:43 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-02-patch-03 $ +// GEANT4 tag $Name: geant4-09-02-patch-04 $ // // // -------------------------------------------------------------- diff --git a/source/persistency/gdml/include/G4GDMLParser.hh b/source/persistency/gdml/include/G4GDMLParser.hh index 43205d8064..c760164791 100644 --- a/source/persistency/gdml/include/G4GDMLParser.hh +++ b/source/persistency/gdml/include/G4GDMLParser.hh @@ -25,7 +25,7 @@ // // // $Id: G4GDMLParser.hh,v 1.56.2.2 2009/08/11 08:27:49 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-02-patch-03 $ +// GEANT4 tag $Name: geant4-09-02-patch-04 $ // // // class G4GDMLParser diff --git a/source/persistency/gdml/include/G4GDMLParser.icc b/source/persistency/gdml/include/G4GDMLParser.icc index e312ca59ed..2ecaab6ca0 100644 --- a/source/persistency/gdml/include/G4GDMLParser.icc +++ b/source/persistency/gdml/include/G4GDMLParser.icc @@ -25,7 +25,7 @@ // // // $Id: G4GDMLParser.icc,v 1.7.2.1 2009/03/03 10:55:46 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-02-patch-03 $ +// GEANT4 tag $Name: geant4-09-02-patch-04 $ // // // class G4GDMLParser inline methods diff --git a/source/persistency/gdml/include/G4GDMLRead.hh b/source/persistency/gdml/include/G4GDMLRead.hh index 3ecfefd154..6bae6080b0 100644 --- a/source/persistency/gdml/include/G4GDMLRead.hh +++ b/source/persistency/gdml/include/G4GDMLRead.hh @@ -25,7 +25,7 @@ // // // $Id: G4GDMLRead.hh,v 1.26.2.1 2009/03/03 10:55:46 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-02-patch-03 $ +// GEANT4 tag $Name: geant4-09-02-patch-04 $ // // class G4GDMLRead // diff --git a/source/persistency/gdml/include/G4GDMLReadMaterials.hh b/source/persistency/gdml/include/G4GDMLReadMaterials.hh index 20ecd144c2..c26e8ec54e 100644 --- a/source/persistency/gdml/include/G4GDMLReadMaterials.hh +++ b/source/persistency/gdml/include/G4GDMLReadMaterials.hh @@ -25,7 +25,7 @@ // // // $Id: G4GDMLReadMaterials.hh,v 1.9.2.1 2009/08/11 08:27:49 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-02-patch-03 $ +// GEANT4 tag $Name: geant4-09-02-patch-04 $ // // // class G4GDMLReadMaterials diff --git a/source/persistency/gdml/include/G4GDMLReadParamvol.hh b/source/persistency/gdml/include/G4GDMLReadParamvol.hh index de0ef22056..0a373f2a5c 100644 --- a/source/persistency/gdml/include/G4GDMLReadParamvol.hh +++ b/source/persistency/gdml/include/G4GDMLReadParamvol.hh @@ -25,7 +25,7 @@ // // // $Id: G4GDMLReadParamvol.hh,v 1.6.2.1 2009/08/11 08:27:49 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-02-patch-03 $ +// GEANT4 tag $Name: geant4-09-02-patch-04 $ // // // class G4GDMLReadParamvol diff --git a/source/persistency/gdml/include/G4GDMLReadSetup.hh b/source/persistency/gdml/include/G4GDMLReadSetup.hh index cbac43f597..1f2ea23435 100644 --- a/source/persistency/gdml/include/G4GDMLReadSetup.hh +++ b/source/persistency/gdml/include/G4GDMLReadSetup.hh @@ -25,7 +25,7 @@ // // // $Id: G4GDMLReadSetup.hh,v 1.5.2.1 2009/08/11 08:27:49 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-02-patch-03 $ +// GEANT4 tag $Name: geant4-09-02-patch-04 $ // // // class G4GDMLReadSetup diff --git a/source/persistency/gdml/include/G4GDMLReadSolids.hh b/source/persistency/gdml/include/G4GDMLReadSolids.hh index 8fa2674de6..4725c48bf9 100644 --- a/source/persistency/gdml/include/G4GDMLReadSolids.hh +++ b/source/persistency/gdml/include/G4GDMLReadSolids.hh @@ -25,7 +25,7 @@ // // // $Id: G4GDMLReadSolids.hh,v 1.12.2.1 2009/08/11 08:27:49 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-02-patch-03 $ +// GEANT4 tag $Name: geant4-09-02-patch-04 $ // // // class G4GDMLReadSolids diff --git a/source/persistency/gdml/include/G4GDMLReadStructure.hh b/source/persistency/gdml/include/G4GDMLReadStructure.hh index ecedfafff1..624f4f83f6 100644 --- a/source/persistency/gdml/include/G4GDMLReadStructure.hh +++ b/source/persistency/gdml/include/G4GDMLReadStructure.hh @@ -25,7 +25,7 @@ // // // $Id: G4GDMLReadStructure.hh,v 1.22.2.2 2009/08/11 08:27:49 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-02-patch-03 $ +// GEANT4 tag $Name: geant4-09-02-patch-04 $ // // // class G4GDMLReadStructure diff --git a/source/persistency/gdml/include/G4GDMLWrite.hh b/source/persistency/gdml/include/G4GDMLWrite.hh index d88f64e233..1b7392931d 100644 --- a/source/persistency/gdml/include/G4GDMLWrite.hh +++ b/source/persistency/gdml/include/G4GDMLWrite.hh @@ -25,7 +25,7 @@ // // // $Id: G4GDMLWrite.hh,v 1.37.2.1 2009/08/11 08:27:49 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-02-patch-03 $ +// GEANT4 tag $Name: geant4-09-02-patch-04 $ // // // class G4GDMLWrite diff --git a/source/persistency/gdml/include/G4GDMLWriteDefine.hh b/source/persistency/gdml/include/G4GDMLWriteDefine.hh index fee4a211a2..7a96853b9e 100644 --- a/source/persistency/gdml/include/G4GDMLWriteDefine.hh +++ b/source/persistency/gdml/include/G4GDMLWriteDefine.hh @@ -25,7 +25,7 @@ // // // $Id: G4GDMLWriteDefine.hh,v 1.11.2.1 2009/08/11 08:27:49 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-02-patch-03 $ +// GEANT4 tag $Name: geant4-09-02-patch-04 $ // // // class G4GDMLWriteDefine diff --git a/source/persistency/gdml/include/G4GDMLWriteMaterials.hh b/source/persistency/gdml/include/G4GDMLWriteMaterials.hh index 39c448fae7..6bb4ab4dc4 100644 --- a/source/persistency/gdml/include/G4GDMLWriteMaterials.hh +++ b/source/persistency/gdml/include/G4GDMLWriteMaterials.hh @@ -25,7 +25,7 @@ // // // $Id: G4GDMLWriteMaterials.hh,v 1.12.2.1 2009/08/11 08:27:49 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-02-patch-03 $ +// GEANT4 tag $Name: geant4-09-02-patch-04 $ // // // class G4GDMLWriteMaterials diff --git a/source/persistency/gdml/include/G4GDMLWriteParamvol.hh b/source/persistency/gdml/include/G4GDMLWriteParamvol.hh index b3c4ffaaf8..dab7f60c7a 100644 --- a/source/persistency/gdml/include/G4GDMLWriteParamvol.hh +++ b/source/persistency/gdml/include/G4GDMLWriteParamvol.hh @@ -25,7 +25,7 @@ // // // $Id: G4GDMLWriteParamvol.hh,v 1.10.2.1 2009/08/11 08:27:49 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-02-patch-03 $ +// GEANT4 tag $Name: geant4-09-02-patch-04 $ // // // class G4GDMLWriteParamvol diff --git a/source/persistency/gdml/include/G4GDMLWriteSetup.hh b/source/persistency/gdml/include/G4GDMLWriteSetup.hh index 5c5c0732a4..1e8fa43e57 100644 --- a/source/persistency/gdml/include/G4GDMLWriteSetup.hh +++ b/source/persistency/gdml/include/G4GDMLWriteSetup.hh @@ -25,7 +25,7 @@ // // // $Id: G4GDMLWriteSetup.hh,v 1.7.2.1 2009/08/11 08:27:49 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-02-patch-03 $ +// GEANT4 tag $Name: geant4-09-02-patch-04 $ // // // class G4GDMLWriteSetup diff --git a/source/persistency/gdml/include/G4GDMLWriteSolids.hh b/source/persistency/gdml/include/G4GDMLWriteSolids.hh index 82981de4b0..e99386e06d 100644 --- a/source/persistency/gdml/include/G4GDMLWriteSolids.hh +++ b/source/persistency/gdml/include/G4GDMLWriteSolids.hh @@ -25,7 +25,7 @@ // // // $Id: G4GDMLWriteSolids.hh,v 1.32.2.1 2009/08/11 08:27:49 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-02-patch-03 $ +// GEANT4 tag $Name: geant4-09-02-patch-04 $ // // // class G4GDMLWriteSolids diff --git a/source/persistency/gdml/include/G4GDMLWriteStructure.hh b/source/persistency/gdml/include/G4GDMLWriteStructure.hh index 0536726c34..6cfafc22ce 100644 --- a/source/persistency/gdml/include/G4GDMLWriteStructure.hh +++ b/source/persistency/gdml/include/G4GDMLWriteStructure.hh @@ -25,7 +25,7 @@ // // // $Id: G4GDMLWriteStructure.hh,v 1.34.2.1 2009/08/11 08:27:49 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-02-patch-03 $ +// GEANT4 tag $Name: geant4-09-02-patch-04 $ // // // class G4GDMLWriteStructure diff --git a/source/persistency/gdml/src/G4GDMLParser.cc b/source/persistency/gdml/src/G4GDMLParser.cc index c6d3273764..b41b0c3d03 100644 --- a/source/persistency/gdml/src/G4GDMLParser.cc +++ b/source/persistency/gdml/src/G4GDMLParser.cc @@ -25,7 +25,7 @@ // // // $Id: G4GDMLParser.cc,v 1.13.2.1 2009/08/11 08:27:49 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-02-patch-03 $ +// GEANT4 tag $Name: geant4-09-02-patch-04 $ // // // class G4GDMLParser Implementation diff --git a/source/persistency/gdml/src/G4GDMLRead.cc b/source/persistency/gdml/src/G4GDMLRead.cc index 616f0deb97..94c961b4d3 100644 --- a/source/persistency/gdml/src/G4GDMLRead.cc +++ b/source/persistency/gdml/src/G4GDMLRead.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: G4GDMLRead.cc,v 1.40.2.2 2009/08/11 08:27:49 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-02-patch-03 $ +// GEANT4 tag $Name: geant4-09-02-patch-04 $ // // class G4GDMLRead Implementation // diff --git a/source/persistency/gdml/src/G4GDMLReadDefine.cc b/source/persistency/gdml/src/G4GDMLReadDefine.cc index 148de4c0d3..5a24521510 100644 --- a/source/persistency/gdml/src/G4GDMLReadDefine.cc +++ b/source/persistency/gdml/src/G4GDMLReadDefine.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: G4GDMLReadDefine.cc,v 1.20.2.2 2010/01/26 13:39:58 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-02-patch-03 $ +// GEANT4 tag $Name: geant4-09-02-patch-04 $ // // class G4GDMLReadDefine Implementation // diff --git a/source/persistency/gdml/src/G4GDMLReadParamvol.cc b/source/persistency/gdml/src/G4GDMLReadParamvol.cc index 0cd65a9f93..38938cb9d1 100644 --- a/source/persistency/gdml/src/G4GDMLReadParamvol.cc +++ b/source/persistency/gdml/src/G4GDMLReadParamvol.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: G4GDMLReadParamvol.cc,v 1.10.2.2 2009/08/11 08:27:49 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-02-patch-03 $ +// GEANT4 tag $Name: geant4-09-02-patch-04 $ // // class G4GDMLReadParamvol Implementation // diff --git a/source/persistency/gdml/src/G4GDMLReadSetup.cc b/source/persistency/gdml/src/G4GDMLReadSetup.cc index ae2812511e..a65d87c28e 100644 --- a/source/persistency/gdml/src/G4GDMLReadSetup.cc +++ b/source/persistency/gdml/src/G4GDMLReadSetup.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: G4GDMLReadSetup.cc,v 1.9.2.1 2009/08/11 08:27:49 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-02-patch-03 $ +// GEANT4 tag $Name: geant4-09-02-patch-04 $ // // class G4GDMLReadSetup Implementation // diff --git a/source/persistency/gdml/src/G4GDMLReadSolids.cc b/source/persistency/gdml/src/G4GDMLReadSolids.cc index 67251deb08..04294d8e6f 100644 --- a/source/persistency/gdml/src/G4GDMLReadSolids.cc +++ b/source/persistency/gdml/src/G4GDMLReadSolids.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: G4GDMLReadSolids.cc,v 1.22.2.1 2009/08/11 08:27:49 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-02-patch-03 $ +// GEANT4 tag $Name: geant4-09-02-patch-04 $ // // class G4GDMLReadSolids Implementation // diff --git a/source/persistency/gdml/src/G4GDMLReadStructure.cc b/source/persistency/gdml/src/G4GDMLReadStructure.cc index 434b830947..e86e016ffa 100644 --- a/source/persistency/gdml/src/G4GDMLReadStructure.cc +++ b/source/persistency/gdml/src/G4GDMLReadStructure.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: G4GDMLReadStructure.cc,v 1.52.2.2 2009/08/11 08:27:49 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-02-patch-03 $ +// GEANT4 tag $Name: geant4-09-02-patch-04 $ // // class G4GDMLReadStructure Implementation // diff --git a/source/persistency/gdml/src/G4GDMLWrite.cc b/source/persistency/gdml/src/G4GDMLWrite.cc index f83915c331..fa06a085bc 100644 --- a/source/persistency/gdml/src/G4GDMLWrite.cc +++ b/source/persistency/gdml/src/G4GDMLWrite.cc @@ -25,7 +25,7 @@ // // // $Id: G4GDMLWrite.cc,v 1.50.2.2 2009/08/11 08:27:49 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-02-patch-03 $ +// GEANT4 tag $Name: geant4-09-02-patch-04 $ // // class G4GDMLWrite Implementation // diff --git a/source/persistency/gdml/src/G4GDMLWriteDefine.cc b/source/persistency/gdml/src/G4GDMLWriteDefine.cc index 03aacbe1e7..96a0ef0206 100644 --- a/source/persistency/gdml/src/G4GDMLWriteDefine.cc +++ b/source/persistency/gdml/src/G4GDMLWriteDefine.cc @@ -25,7 +25,7 @@ // // // $Id: G4GDMLWriteDefine.cc,v 1.18.2.1 2009/08/11 08:27:49 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-02-patch-03 $ +// GEANT4 tag $Name: geant4-09-02-patch-04 $ // // class G4GDMLWriteDefine Implementation // diff --git a/source/persistency/gdml/src/G4GDMLWriteMaterials.cc b/source/persistency/gdml/src/G4GDMLWriteMaterials.cc index 9b1318987f..96a0c78598 100644 --- a/source/persistency/gdml/src/G4GDMLWriteMaterials.cc +++ b/source/persistency/gdml/src/G4GDMLWriteMaterials.cc @@ -25,7 +25,7 @@ // // // $Id: G4GDMLWriteMaterials.cc,v 1.20.2.1 2009/08/11 08:27:49 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-02-patch-03 $ +// GEANT4 tag $Name: geant4-09-02-patch-04 $ // // class G4GDMLWriteMaterials Implementation // diff --git a/source/persistency/gdml/src/G4GDMLWriteParamvol.cc b/source/persistency/gdml/src/G4GDMLWriteParamvol.cc index 32835d0a14..2d665b8993 100644 --- a/source/persistency/gdml/src/G4GDMLWriteParamvol.cc +++ b/source/persistency/gdml/src/G4GDMLWriteParamvol.cc @@ -25,7 +25,7 @@ // // // $Id: G4GDMLWriteParamvol.cc,v 1.23.2.1 2009/08/11 08:27:49 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-02-patch-03 $ +// GEANT4 tag $Name: geant4-09-02-patch-04 $ // // class G4GDMLParamVol Implementation // diff --git a/source/persistency/gdml/src/G4GDMLWriteSetup.cc b/source/persistency/gdml/src/G4GDMLWriteSetup.cc index 92c257d698..60bf6c6eed 100644 --- a/source/persistency/gdml/src/G4GDMLWriteSetup.cc +++ b/source/persistency/gdml/src/G4GDMLWriteSetup.cc @@ -25,7 +25,7 @@ // // // $Id: G4GDMLWriteSetup.cc,v 1.11.2.1 2009/08/11 08:27:49 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-02-patch-03 $ +// GEANT4 tag $Name: geant4-09-02-patch-04 $ // // class G4GDMLWriteSetup Implementation // diff --git a/source/persistency/gdml/src/G4GDMLWriteSolids.cc b/source/persistency/gdml/src/G4GDMLWriteSolids.cc index 983095a4b7..c79d98648f 100644 --- a/source/persistency/gdml/src/G4GDMLWriteSolids.cc +++ b/source/persistency/gdml/src/G4GDMLWriteSolids.cc @@ -25,7 +25,7 @@ // // // $Id: G4GDMLWriteSolids.cc,v 1.59.2.1 2009/08/11 08:27:49 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-02-patch-03 $ +// GEANT4 tag $Name: geant4-09-02-patch-04 $ // // class G4GDMLWriteSolids Implementation // diff --git a/source/persistency/gdml/src/G4GDMLWriteStructure.cc b/source/persistency/gdml/src/G4GDMLWriteStructure.cc index 429222f510..1f4a9d05eb 100644 --- a/source/persistency/gdml/src/G4GDMLWriteStructure.cc +++ b/source/persistency/gdml/src/G4GDMLWriteStructure.cc @@ -25,7 +25,7 @@ // // // $Id: G4GDMLWriteStructure.cc,v 1.74.2.1 2009/08/11 08:27:49 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-02-patch-03 $ +// GEANT4 tag $Name: geant4-09-02-patch-04 $ // // class G4GDMLWriteStructure Implementation // diff --git a/source/physics_lists/builders/include/G4BertiniNeutronBuilder.hh b/source/physics_lists/builders/include/G4BertiniNeutronBuilder.hh index 6dad1a2471..138381f18e 100644 --- a/source/physics_lists/builders/include/G4BertiniNeutronBuilder.hh +++ b/source/physics_lists/builders/include/G4BertiniNeutronBuilder.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: G4BertiniNeutronBuilder.hh,v 1.1.6.1 2009/08/11 15:11:24 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-02-patch-03 $ +// GEANT4 tag $Name: geant4-09-02-patch-04 $ // //--------------------------------------------------------------------------- // diff --git a/source/physics_lists/builders/include/G4BertiniPiKBuilder.hh b/source/physics_lists/builders/include/G4BertiniPiKBuilder.hh index 535cb2fa0f..e4aecf9477 100644 --- a/source/physics_lists/builders/include/G4BertiniPiKBuilder.hh +++ b/source/physics_lists/builders/include/G4BertiniPiKBuilder.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: G4BertiniPiKBuilder.hh,v 1.1.6.1 2009/08/11 15:11:24 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-02-patch-03 $ +// GEANT4 tag $Name: geant4-09-02-patch-04 $ // //--------------------------------------------------------------------------- // diff --git a/source/physics_lists/builders/include/G4BertiniProtonBuilder.hh b/source/physics_lists/builders/include/G4BertiniProtonBuilder.hh index 3bfa2e9a2d..ba5fb1cd28 100644 --- a/source/physics_lists/builders/include/G4BertiniProtonBuilder.hh +++ b/source/physics_lists/builders/include/G4BertiniProtonBuilder.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: G4BertiniProtonBuilder.hh,v 1.1.6.1 2009/08/11 15:11:24 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-02-patch-03 $ +// GEANT4 tag $Name: geant4-09-02-patch-04 $ // //--------------------------------------------------------------------------- // diff --git a/source/physics_lists/builders/include/G4BinaryNeutronBuilder.hh b/source/physics_lists/builders/include/G4BinaryNeutronBuilder.hh index 29b70652b2..fcb49a4868 100644 --- a/source/physics_lists/builders/include/G4BinaryNeutronBuilder.hh +++ b/source/physics_lists/builders/include/G4BinaryNeutronBuilder.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: G4BinaryNeutronBuilder.hh,v 1.1.6.1 2009/08/11 15:11:24 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-02-patch-03 $ +// GEANT4 tag $Name: geant4-09-02-patch-04 $ // //--------------------------------------------------------------------------- // diff --git a/source/physics_lists/builders/include/G4BinaryPiKBuilder.hh b/source/physics_lists/builders/include/G4BinaryPiKBuilder.hh index 0620cdb93d..a09566d4a3 100644 --- a/source/physics_lists/builders/include/G4BinaryPiKBuilder.hh +++ b/source/physics_lists/builders/include/G4BinaryPiKBuilder.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: G4BinaryPiKBuilder.hh,v 1.1.6.1 2009/08/11 15:11:24 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-02-patch-03 $ +// GEANT4 tag $Name: geant4-09-02-patch-04 $ // //--------------------------------------------------------------------------- // diff --git a/source/physics_lists/builders/include/G4BinaryProtonBuilder.hh b/source/physics_lists/builders/include/G4BinaryProtonBuilder.hh index 3e03aba8a7..6730bf17cc 100644 --- a/source/physics_lists/builders/include/G4BinaryProtonBuilder.hh +++ b/source/physics_lists/builders/include/G4BinaryProtonBuilder.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: G4BinaryProtonBuilder.hh,v 1.1.6.1 2009/08/11 15:11:24 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-02-patch-03 $ +// GEANT4 tag $Name: geant4-09-02-patch-04 $ // //--------------------------------------------------------------------------- // diff --git a/source/physics_lists/builders/include/G4FTFBinaryNeutronBuilder.hh b/source/physics_lists/builders/include/G4FTFBinaryNeutronBuilder.hh index b60f97e0ba..ac40bfb261 100644 --- a/source/physics_lists/builders/include/G4FTFBinaryNeutronBuilder.hh +++ b/source/physics_lists/builders/include/G4FTFBinaryNeutronBuilder.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: G4FTFBinaryNeutronBuilder.hh,v 1.2.2.1 2009/08/11 15:11:24 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-02-patch-03 $ +// GEANT4 tag $Name: geant4-09-02-patch-04 $ // //--------------------------------------------------------------------------- // diff --git a/source/physics_lists/builders/include/G4FTFBinaryPiKBuilder.hh b/source/physics_lists/builders/include/G4FTFBinaryPiKBuilder.hh index 9e8fe01e43..5accf479c8 100644 --- a/source/physics_lists/builders/include/G4FTFBinaryPiKBuilder.hh +++ b/source/physics_lists/builders/include/G4FTFBinaryPiKBuilder.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: G4FTFBinaryPiKBuilder.hh,v 1.1.4.1 2009/08/11 15:11:24 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-02-patch-03 $ +// GEANT4 tag $Name: geant4-09-02-patch-04 $ // //--------------------------------------------------------------------------- // diff --git a/source/physics_lists/builders/include/G4FTFBinaryProtonBuilder.hh b/source/physics_lists/builders/include/G4FTFBinaryProtonBuilder.hh index 1324209a6d..6d909f511b 100644 --- a/source/physics_lists/builders/include/G4FTFBinaryProtonBuilder.hh +++ b/source/physics_lists/builders/include/G4FTFBinaryProtonBuilder.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: G4FTFBinaryProtonBuilder.hh,v 1.1.4.1 2009/08/11 15:11:24 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-02-patch-03 $ +// GEANT4 tag $Name: geant4-09-02-patch-04 $ // //--------------------------------------------------------------------------- // diff --git a/source/physics_lists/builders/include/G4FTFCNeutronBuilder.hh b/source/physics_lists/builders/include/G4FTFCNeutronBuilder.hh index c029ea107b..3f040fbb21 100644 --- a/source/physics_lists/builders/include/G4FTFCNeutronBuilder.hh +++ b/source/physics_lists/builders/include/G4FTFCNeutronBuilder.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: G4FTFCNeutronBuilder.hh,v 1.2.4.1 2009/08/11 15:11:24 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-02-patch-03 $ +// GEANT4 tag $Name: geant4-09-02-patch-04 $ // //--------------------------------------------------------------------------- // diff --git a/source/physics_lists/builders/include/G4FTFCPiKBuilder.hh b/source/physics_lists/builders/include/G4FTFCPiKBuilder.hh index 338e1805f0..6bb46b3511 100644 --- a/source/physics_lists/builders/include/G4FTFCPiKBuilder.hh +++ b/source/physics_lists/builders/include/G4FTFCPiKBuilder.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: G4FTFCPiKBuilder.hh,v 1.2.4.1 2009/08/11 15:11:24 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-02-patch-03 $ +// GEANT4 tag $Name: geant4-09-02-patch-04 $ // //--------------------------------------------------------------------------- // diff --git a/source/physics_lists/builders/include/G4FTFCProtonBuilder.hh b/source/physics_lists/builders/include/G4FTFCProtonBuilder.hh index 125ed24788..338aaae9dc 100644 --- a/source/physics_lists/builders/include/G4FTFCProtonBuilder.hh +++ b/source/physics_lists/builders/include/G4FTFCProtonBuilder.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: G4FTFCProtonBuilder.hh,v 1.2.4.1 2009/08/11 15:11:24 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-02-patch-03 $ +// GEANT4 tag $Name: geant4-09-02-patch-04 $ // //--------------------------------------------------------------------------- // diff --git a/source/physics_lists/builders/include/G4FTFPNeutronBuilder.hh b/source/physics_lists/builders/include/G4FTFPNeutronBuilder.hh index 43778f0772..6fbfe21a9e 100644 --- a/source/physics_lists/builders/include/G4FTFPNeutronBuilder.hh +++ b/source/physics_lists/builders/include/G4FTFPNeutronBuilder.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: G4FTFPNeutronBuilder.hh,v 1.2.4.1 2009/08/11 15:11:24 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-02-patch-03 $ +// GEANT4 tag $Name: geant4-09-02-patch-04 $ // //--------------------------------------------------------------------------- // diff --git a/source/physics_lists/builders/include/G4FTFPPiKBuilder.hh b/source/physics_lists/builders/include/G4FTFPPiKBuilder.hh index 78feb75f95..86694f2e1d 100644 --- a/source/physics_lists/builders/include/G4FTFPPiKBuilder.hh +++ b/source/physics_lists/builders/include/G4FTFPPiKBuilder.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: G4FTFPPiKBuilder.hh,v 1.2.4.1 2009/08/11 15:11:24 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-02-patch-03 $ +// GEANT4 tag $Name: geant4-09-02-patch-04 $ // //--------------------------------------------------------------------------- // diff --git a/source/physics_lists/builders/include/G4FTFPProtonBuilder.hh b/source/physics_lists/builders/include/G4FTFPProtonBuilder.hh index 460bb48bc1..9c98734195 100644 --- a/source/physics_lists/builders/include/G4FTFPProtonBuilder.hh +++ b/source/physics_lists/builders/include/G4FTFPProtonBuilder.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: G4FTFPProtonBuilder.hh,v 1.2.4.1 2009/08/11 15:11:24 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-02-patch-03 $ +// GEANT4 tag $Name: geant4-09-02-patch-04 $ // //--------------------------------------------------------------------------- // diff --git a/source/physics_lists/builders/include/G4MiscLHEPBuilder.hh b/source/physics_lists/builders/include/G4MiscLHEPBuilder.hh index b7cc362407..c7aec26e3f 100644 --- a/source/physics_lists/builders/include/G4MiscLHEPBuilder.hh +++ b/source/physics_lists/builders/include/G4MiscLHEPBuilder.hh @@ -23,7 +23,7 @@ // * acceptance of all terms of the Geant4 Software license. * // ******************************************************************** // -// GEANT4 tag $Name: geant4-09-02-patch-03 $ +// GEANT4 tag $Name: geant4-09-02-patch-04 $ // //--------------------------------------------------------------------------- // diff --git a/source/physics_lists/builders/include/G4PrecoNeutronBuilder.hh b/source/physics_lists/builders/include/G4PrecoNeutronBuilder.hh index 1c33e51eb9..50fe24e2e8 100644 --- a/source/physics_lists/builders/include/G4PrecoNeutronBuilder.hh +++ b/source/physics_lists/builders/include/G4PrecoNeutronBuilder.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: G4PrecoNeutronBuilder.hh,v 1.1.6.1 2009/08/11 15:11:24 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-02-patch-03 $ +// GEANT4 tag $Name: geant4-09-02-patch-04 $ // //--------------------------------------------------------------------------- // diff --git a/source/physics_lists/builders/include/G4PrecoProtonBuilder.hh b/source/physics_lists/builders/include/G4PrecoProtonBuilder.hh index f14f8e816e..46ad35a0a7 100644 --- a/source/physics_lists/builders/include/G4PrecoProtonBuilder.hh +++ b/source/physics_lists/builders/include/G4PrecoProtonBuilder.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: G4PrecoProtonBuilder.hh,v 1.1.6.1 2009/08/11 15:11:24 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-02-patch-03 $ +// GEANT4 tag $Name: geant4-09-02-patch-04 $ // //--------------------------------------------------------------------------- // diff --git a/source/physics_lists/builders/include/G4QGSBinaryNeutronBuilder.hh b/source/physics_lists/builders/include/G4QGSBinaryNeutronBuilder.hh index 039d513264..d721468476 100644 --- a/source/physics_lists/builders/include/G4QGSBinaryNeutronBuilder.hh +++ b/source/physics_lists/builders/include/G4QGSBinaryNeutronBuilder.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: G4QGSBinaryNeutronBuilder.hh,v 1.1.4.1 2009/08/11 15:11:24 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-02-patch-03 $ +// GEANT4 tag $Name: geant4-09-02-patch-04 $ // //--------------------------------------------------------------------------- // diff --git a/source/physics_lists/builders/include/G4QGSBinaryPiKBuilder.hh b/source/physics_lists/builders/include/G4QGSBinaryPiKBuilder.hh index dd2d53724e..297674c059 100644 --- a/source/physics_lists/builders/include/G4QGSBinaryPiKBuilder.hh +++ b/source/physics_lists/builders/include/G4QGSBinaryPiKBuilder.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: G4QGSBinaryPiKBuilder.hh,v 1.1.4.1 2009/08/11 15:11:24 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-02-patch-03 $ +// GEANT4 tag $Name: geant4-09-02-patch-04 $ // //--------------------------------------------------------------------------- // diff --git a/source/physics_lists/builders/include/G4QGSBinaryProtonBuilder.hh b/source/physics_lists/builders/include/G4QGSBinaryProtonBuilder.hh index c335447e7b..f934607056 100644 --- a/source/physics_lists/builders/include/G4QGSBinaryProtonBuilder.hh +++ b/source/physics_lists/builders/include/G4QGSBinaryProtonBuilder.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: G4QGSBinaryProtonBuilder.hh,v 1.1.4.1 2009/08/11 15:11:24 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-02-patch-03 $ +// GEANT4 tag $Name: geant4-09-02-patch-04 $ // //--------------------------------------------------------------------------- // diff --git a/source/physics_lists/builders/include/G4QGSCEflowNeutronBuilder.hh b/source/physics_lists/builders/include/G4QGSCEflowNeutronBuilder.hh index b88b0f045b..d5c2ad7b8f 100644 --- a/source/physics_lists/builders/include/G4QGSCEflowNeutronBuilder.hh +++ b/source/physics_lists/builders/include/G4QGSCEflowNeutronBuilder.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: G4QGSCEflowNeutronBuilder.hh,v 1.2.6.1 2009/08/11 15:11:24 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-02-patch-03 $ +// GEANT4 tag $Name: geant4-09-02-patch-04 $ // //--------------------------------------------------------------------------- // diff --git a/source/physics_lists/builders/include/G4QGSCEflowPiKBuilder.hh b/source/physics_lists/builders/include/G4QGSCEflowPiKBuilder.hh index bde4871535..52d138e9db 100644 --- a/source/physics_lists/builders/include/G4QGSCEflowPiKBuilder.hh +++ b/source/physics_lists/builders/include/G4QGSCEflowPiKBuilder.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: G4QGSCEflowPiKBuilder.hh,v 1.2.6.1 2009/08/11 15:11:24 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-02-patch-03 $ +// GEANT4 tag $Name: geant4-09-02-patch-04 $ // //--------------------------------------------------------------------------- // diff --git a/source/physics_lists/builders/include/G4QGSCEflowProtonBuilder.hh b/source/physics_lists/builders/include/G4QGSCEflowProtonBuilder.hh index f386fadce3..c4587481c1 100644 --- a/source/physics_lists/builders/include/G4QGSCEflowProtonBuilder.hh +++ b/source/physics_lists/builders/include/G4QGSCEflowProtonBuilder.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: G4QGSCEflowProtonBuilder.hh,v 1.2.6.1 2009/08/11 15:11:24 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-02-patch-03 $ +// GEANT4 tag $Name: geant4-09-02-patch-04 $ // //--------------------------------------------------------------------------- // diff --git a/source/physics_lists/builders/include/G4QGSCNeutronBuilder.hh b/source/physics_lists/builders/include/G4QGSCNeutronBuilder.hh index 35b74b14f8..251f4580de 100644 --- a/source/physics_lists/builders/include/G4QGSCNeutronBuilder.hh +++ b/source/physics_lists/builders/include/G4QGSCNeutronBuilder.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: G4QGSCNeutronBuilder.hh,v 1.3.6.1 2009/08/11 15:11:24 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-02-patch-03 $ +// GEANT4 tag $Name: geant4-09-02-patch-04 $ // //--------------------------------------------------------------------------- // diff --git a/source/physics_lists/builders/include/G4QGSCPiKBuilder.hh b/source/physics_lists/builders/include/G4QGSCPiKBuilder.hh index a57248759a..65a0d19d66 100644 --- a/source/physics_lists/builders/include/G4QGSCPiKBuilder.hh +++ b/source/physics_lists/builders/include/G4QGSCPiKBuilder.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: G4QGSCPiKBuilder.hh,v 1.3.6.1 2009/08/11 15:11:24 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-02-patch-03 $ +// GEANT4 tag $Name: geant4-09-02-patch-04 $ // //--------------------------------------------------------------------------- // diff --git a/source/physics_lists/builders/include/G4QGSCProtonBuilder.hh b/source/physics_lists/builders/include/G4QGSCProtonBuilder.hh index 2b4a4f2381..9150e93322 100644 --- a/source/physics_lists/builders/include/G4QGSCProtonBuilder.hh +++ b/source/physics_lists/builders/include/G4QGSCProtonBuilder.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: G4QGSCProtonBuilder.hh,v 1.3.6.1 2009/08/11 15:11:24 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-02-patch-03 $ +// GEANT4 tag $Name: geant4-09-02-patch-04 $ // //--------------------------------------------------------------------------- // diff --git a/source/physics_lists/builders/include/G4QGSPNeutronBuilder.hh b/source/physics_lists/builders/include/G4QGSPNeutronBuilder.hh index 6d4e0045c6..c5dde7f354 100644 --- a/source/physics_lists/builders/include/G4QGSPNeutronBuilder.hh +++ b/source/physics_lists/builders/include/G4QGSPNeutronBuilder.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: G4QGSPNeutronBuilder.hh,v 1.3.4.1 2009/08/11 15:11:24 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-02-patch-03 $ +// GEANT4 tag $Name: geant4-09-02-patch-04 $ // //--------------------------------------------------------------------------- // diff --git a/source/physics_lists/builders/include/G4QGSPPiKBuilder.hh b/source/physics_lists/builders/include/G4QGSPPiKBuilder.hh index 3a13f2fba0..c25ce74e8d 100644 --- a/source/physics_lists/builders/include/G4QGSPPiKBuilder.hh +++ b/source/physics_lists/builders/include/G4QGSPPiKBuilder.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: G4QGSPPiKBuilder.hh,v 1.3.4.1 2009/08/11 15:11:24 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-02-patch-03 $ +// GEANT4 tag $Name: geant4-09-02-patch-04 $ // //--------------------------------------------------------------------------- // diff --git a/source/physics_lists/builders/include/G4QGSPProtonBuilder.hh b/source/physics_lists/builders/include/G4QGSPProtonBuilder.hh index bd3fa28dcb..3b24a4b453 100644 --- a/source/physics_lists/builders/include/G4QGSPProtonBuilder.hh +++ b/source/physics_lists/builders/include/G4QGSPProtonBuilder.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: G4QGSPProtonBuilder.hh,v 1.4.4.1 2009/08/11 15:11:24 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-02-patch-03 $ +// GEANT4 tag $Name: geant4-09-02-patch-04 $ // //--------------------------------------------------------------------------- // diff --git a/source/physics_lists/builders/include/G4VNeutronBuilder.hh b/source/physics_lists/builders/include/G4VNeutronBuilder.hh index 590d5d3e6a..a03627e095 100644 --- a/source/physics_lists/builders/include/G4VNeutronBuilder.hh +++ b/source/physics_lists/builders/include/G4VNeutronBuilder.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: G4VNeutronBuilder.hh,v 1.1.6.1 2009/08/11 15:11:24 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-02-patch-03 $ +// GEANT4 tag $Name: geant4-09-02-patch-04 $ // //--------------------------------------------------------------------------- // diff --git a/source/physics_lists/builders/include/G4VPiKBuilder.hh b/source/physics_lists/builders/include/G4VPiKBuilder.hh index 31fa4a74eb..7a45a1e0c3 100644 --- a/source/physics_lists/builders/include/G4VPiKBuilder.hh +++ b/source/physics_lists/builders/include/G4VPiKBuilder.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: G4VPiKBuilder.hh,v 1.1.6.1 2009/08/11 15:11:24 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-02-patch-03 $ +// GEANT4 tag $Name: geant4-09-02-patch-04 $ // //--------------------------------------------------------------------------- // diff --git a/source/physics_lists/builders/include/G4VProtonBuilder.hh b/source/physics_lists/builders/include/G4VProtonBuilder.hh index 4012a3404f..e4dbed6982 100644 --- a/source/physics_lists/builders/include/G4VProtonBuilder.hh +++ b/source/physics_lists/builders/include/G4VProtonBuilder.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: G4VProtonBuilder.hh,v 1.1.6.1 2009/08/11 15:11:24 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-02-patch-03 $ +// GEANT4 tag $Name: geant4-09-02-patch-04 $ // //--------------------------------------------------------------------------- // diff --git a/source/physics_lists/builders/src/G4BertiniNeutronBuilder.cc b/source/physics_lists/builders/src/G4BertiniNeutronBuilder.cc index 3e2e3ad7dd..679bc27f25 100644 --- a/source/physics_lists/builders/src/G4BertiniNeutronBuilder.cc +++ b/source/physics_lists/builders/src/G4BertiniNeutronBuilder.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: G4BertiniNeutronBuilder.cc,v 1.1.6.1 2009/08/11 15:11:24 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-02-patch-03 $ +// GEANT4 tag $Name: geant4-09-02-patch-04 $ // //--------------------------------------------------------------------------- // diff --git a/source/physics_lists/builders/src/G4BertiniPiKBuilder.cc b/source/physics_lists/builders/src/G4BertiniPiKBuilder.cc index 6657dc3ac0..ee73b9b5e4 100644 --- a/source/physics_lists/builders/src/G4BertiniPiKBuilder.cc +++ b/source/physics_lists/builders/src/G4BertiniPiKBuilder.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: G4BertiniPiKBuilder.cc,v 1.1.6.1 2009/08/11 15:11:24 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-02-patch-03 $ +// GEANT4 tag $Name: geant4-09-02-patch-04 $ // //--------------------------------------------------------------------------- // diff --git a/source/physics_lists/builders/src/G4BertiniProtonBuilder.cc b/source/physics_lists/builders/src/G4BertiniProtonBuilder.cc index 39665fce33..eb0cb237e0 100644 --- a/source/physics_lists/builders/src/G4BertiniProtonBuilder.cc +++ b/source/physics_lists/builders/src/G4BertiniProtonBuilder.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: G4BertiniProtonBuilder.cc,v 1.1.6.1 2009/08/11 15:11:24 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-02-patch-03 $ +// GEANT4 tag $Name: geant4-09-02-patch-04 $ // //--------------------------------------------------------------------------- // diff --git a/source/physics_lists/builders/src/G4BinaryNeutronBuilder.cc b/source/physics_lists/builders/src/G4BinaryNeutronBuilder.cc index 89e982176e..0153dc7c57 100644 --- a/source/physics_lists/builders/src/G4BinaryNeutronBuilder.cc +++ b/source/physics_lists/builders/src/G4BinaryNeutronBuilder.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: G4BinaryNeutronBuilder.cc,v 1.1.6.1 2009/08/11 15:11:24 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-02-patch-03 $ +// GEANT4 tag $Name: geant4-09-02-patch-04 $ // //--------------------------------------------------------------------------- // diff --git a/source/physics_lists/builders/src/G4BinaryPiKBuilder.cc b/source/physics_lists/builders/src/G4BinaryPiKBuilder.cc index ebbc6ad3e9..045e3d4334 100644 --- a/source/physics_lists/builders/src/G4BinaryPiKBuilder.cc +++ b/source/physics_lists/builders/src/G4BinaryPiKBuilder.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: G4BinaryPiKBuilder.cc,v 1.1.6.1 2009/08/11 15:11:24 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-02-patch-03 $ +// GEANT4 tag $Name: geant4-09-02-patch-04 $ // //--------------------------------------------------------------------------- // diff --git a/source/physics_lists/builders/src/G4BinaryProtonBuilder.cc b/source/physics_lists/builders/src/G4BinaryProtonBuilder.cc index 5143cd88a7..abb72f6418 100644 --- a/source/physics_lists/builders/src/G4BinaryProtonBuilder.cc +++ b/source/physics_lists/builders/src/G4BinaryProtonBuilder.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: G4BinaryProtonBuilder.cc,v 1.1.6.1 2009/08/11 15:11:24 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-02-patch-03 $ +// GEANT4 tag $Name: geant4-09-02-patch-04 $ // //--------------------------------------------------------------------------- // diff --git a/source/physics_lists/builders/src/G4FTFBinaryNeutronBuilder.cc b/source/physics_lists/builders/src/G4FTFBinaryNeutronBuilder.cc index 21630bec8e..07e91d4022 100644 --- a/source/physics_lists/builders/src/G4FTFBinaryNeutronBuilder.cc +++ b/source/physics_lists/builders/src/G4FTFBinaryNeutronBuilder.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: G4FTFBinaryNeutronBuilder.cc,v 1.3.2.1 2009/08/11 15:11:24 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-02-patch-03 $ +// GEANT4 tag $Name: geant4-09-02-patch-04 $ // //--------------------------------------------------------------------------- // diff --git a/source/physics_lists/builders/src/G4FTFBinaryPiKBuilder.cc b/source/physics_lists/builders/src/G4FTFBinaryPiKBuilder.cc index 8631deb686..75b17cdc0b 100644 --- a/source/physics_lists/builders/src/G4FTFBinaryPiKBuilder.cc +++ b/source/physics_lists/builders/src/G4FTFBinaryPiKBuilder.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: G4FTFBinaryPiKBuilder.cc,v 1.2.2.1 2009/08/11 15:11:24 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-02-patch-03 $ +// GEANT4 tag $Name: geant4-09-02-patch-04 $ // //--------------------------------------------------------------------------- // diff --git a/source/physics_lists/builders/src/G4FTFBinaryProtonBuilder.cc b/source/physics_lists/builders/src/G4FTFBinaryProtonBuilder.cc index 2b1c2cbc92..b5cf69855b 100644 --- a/source/physics_lists/builders/src/G4FTFBinaryProtonBuilder.cc +++ b/source/physics_lists/builders/src/G4FTFBinaryProtonBuilder.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: G4FTFBinaryProtonBuilder.cc,v 1.2.2.1 2009/08/11 15:11:24 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-02-patch-03 $ +// GEANT4 tag $Name: geant4-09-02-patch-04 $ // //--------------------------------------------------------------------------- // diff --git a/source/physics_lists/builders/src/G4FTFCNeutronBuilder.cc b/source/physics_lists/builders/src/G4FTFCNeutronBuilder.cc index ed9bff8a91..18844236da 100644 --- a/source/physics_lists/builders/src/G4FTFCNeutronBuilder.cc +++ b/source/physics_lists/builders/src/G4FTFCNeutronBuilder.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: G4FTFCNeutronBuilder.cc,v 1.2.4.1 2009/08/11 15:11:24 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-02-patch-03 $ +// GEANT4 tag $Name: geant4-09-02-patch-04 $ // //--------------------------------------------------------------------------- // diff --git a/source/physics_lists/builders/src/G4FTFCPiKBuilder.cc b/source/physics_lists/builders/src/G4FTFCPiKBuilder.cc index c3409271af..d9847086cb 100644 --- a/source/physics_lists/builders/src/G4FTFCPiKBuilder.cc +++ b/source/physics_lists/builders/src/G4FTFCPiKBuilder.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: G4FTFCPiKBuilder.cc,v 1.2.4.1 2009/08/11 15:11:24 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-02-patch-03 $ +// GEANT4 tag $Name: geant4-09-02-patch-04 $ // //--------------------------------------------------------------------------- // diff --git a/source/physics_lists/builders/src/G4FTFCProtonBuilder.cc b/source/physics_lists/builders/src/G4FTFCProtonBuilder.cc index cdc241d59a..55030196b7 100644 --- a/source/physics_lists/builders/src/G4FTFCProtonBuilder.cc +++ b/source/physics_lists/builders/src/G4FTFCProtonBuilder.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: G4FTFCProtonBuilder.cc,v 1.2.4.1 2009/08/11 15:11:24 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-02-patch-03 $ +// GEANT4 tag $Name: geant4-09-02-patch-04 $ // //--------------------------------------------------------------------------- // diff --git a/source/physics_lists/builders/src/G4FTFPNeutronBuilder.cc b/source/physics_lists/builders/src/G4FTFPNeutronBuilder.cc index 09114603d0..36a0ec4835 100644 --- a/source/physics_lists/builders/src/G4FTFPNeutronBuilder.cc +++ b/source/physics_lists/builders/src/G4FTFPNeutronBuilder.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: G4FTFPNeutronBuilder.cc,v 1.3.2.1 2009/08/11 15:11:24 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-02-patch-03 $ +// GEANT4 tag $Name: geant4-09-02-patch-04 $ // //--------------------------------------------------------------------------- // diff --git a/source/physics_lists/builders/src/G4FTFPPiKBuilder.cc b/source/physics_lists/builders/src/G4FTFPPiKBuilder.cc index b5cbefa034..a1e8034c21 100644 --- a/source/physics_lists/builders/src/G4FTFPPiKBuilder.cc +++ b/source/physics_lists/builders/src/G4FTFPPiKBuilder.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: G4FTFPPiKBuilder.cc,v 1.3.2.1 2009/08/11 15:11:24 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-02-patch-03 $ +// GEANT4 tag $Name: geant4-09-02-patch-04 $ // //--------------------------------------------------------------------------- // diff --git a/source/physics_lists/builders/src/G4FTFPProtonBuilder.cc b/source/physics_lists/builders/src/G4FTFPProtonBuilder.cc index 5e61f28172..2af9ec4d05 100644 --- a/source/physics_lists/builders/src/G4FTFPProtonBuilder.cc +++ b/source/physics_lists/builders/src/G4FTFPProtonBuilder.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: G4FTFPProtonBuilder.cc,v 1.3.2.1 2009/08/11 15:11:24 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-02-patch-03 $ +// GEANT4 tag $Name: geant4-09-02-patch-04 $ // //--------------------------------------------------------------------------- // diff --git a/source/physics_lists/builders/src/G4IonBinaryCascadePhysics.cc b/source/physics_lists/builders/src/G4IonBinaryCascadePhysics.cc index 8fd0b5aa95..f6730cc978 100644 --- a/source/physics_lists/builders/src/G4IonBinaryCascadePhysics.cc +++ b/source/physics_lists/builders/src/G4IonBinaryCascadePhysics.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: G4IonBinaryCascadePhysics.cc,v 1.1.6.2 2009/03/12 10:21:11 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-02-patch-03 $ +// GEANT4 tag $Name: geant4-09-02-patch-04 $ // //--------------------------------------------------------------------------- // diff --git a/source/physics_lists/builders/src/G4MiscLHEPBuilder.cc b/source/physics_lists/builders/src/G4MiscLHEPBuilder.cc index 3c0983c1bf..e0bcea61c1 100644 --- a/source/physics_lists/builders/src/G4MiscLHEPBuilder.cc +++ b/source/physics_lists/builders/src/G4MiscLHEPBuilder.cc @@ -23,7 +23,7 @@ // * acceptance of all terms of the Geant4 Software license. * // ******************************************************************** // -// GEANT4 tag $Name: geant4-09-02-patch-03 $ +// GEANT4 tag $Name: geant4-09-02-patch-04 $ // //--------------------------------------------------------------------------- // diff --git a/source/physics_lists/builders/src/G4PrecoNeutronBuilder.cc b/source/physics_lists/builders/src/G4PrecoNeutronBuilder.cc index 449872514a..74c6c12613 100644 --- a/source/physics_lists/builders/src/G4PrecoNeutronBuilder.cc +++ b/source/physics_lists/builders/src/G4PrecoNeutronBuilder.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: G4PrecoNeutronBuilder.cc,v 1.1.6.1 2009/08/11 15:11:24 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-02-patch-03 $ +// GEANT4 tag $Name: geant4-09-02-patch-04 $ // //--------------------------------------------------------------------------- // diff --git a/source/physics_lists/builders/src/G4PrecoProtonBuilder.cc b/source/physics_lists/builders/src/G4PrecoProtonBuilder.cc index 9ef4cc58a3..2ae38f1851 100644 --- a/source/physics_lists/builders/src/G4PrecoProtonBuilder.cc +++ b/source/physics_lists/builders/src/G4PrecoProtonBuilder.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: G4PrecoProtonBuilder.cc,v 1.1.6.1 2009/08/11 15:11:24 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-02-patch-03 $ +// GEANT4 tag $Name: geant4-09-02-patch-04 $ // //--------------------------------------------------------------------------- // diff --git a/source/physics_lists/builders/src/G4QGSBinaryNeutronBuilder.cc b/source/physics_lists/builders/src/G4QGSBinaryNeutronBuilder.cc index a6217b3547..b3b69b9f4d 100644 --- a/source/physics_lists/builders/src/G4QGSBinaryNeutronBuilder.cc +++ b/source/physics_lists/builders/src/G4QGSBinaryNeutronBuilder.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: G4QGSBinaryNeutronBuilder.cc,v 1.2.2.1 2009/08/11 15:11:24 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-02-patch-03 $ +// GEANT4 tag $Name: geant4-09-02-patch-04 $ // //--------------------------------------------------------------------------- // diff --git a/source/physics_lists/builders/src/G4QGSBinaryPiKBuilder.cc b/source/physics_lists/builders/src/G4QGSBinaryPiKBuilder.cc index 6f39058fe6..908030d835 100644 --- a/source/physics_lists/builders/src/G4QGSBinaryPiKBuilder.cc +++ b/source/physics_lists/builders/src/G4QGSBinaryPiKBuilder.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: G4QGSBinaryPiKBuilder.cc,v 1.2.2.1 2009/08/11 15:11:24 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-02-patch-03 $ +// GEANT4 tag $Name: geant4-09-02-patch-04 $ // //--------------------------------------------------------------------------- // diff --git a/source/physics_lists/builders/src/G4QGSBinaryProtonBuilder.cc b/source/physics_lists/builders/src/G4QGSBinaryProtonBuilder.cc index 34efc0cd39..b280ccf997 100644 --- a/source/physics_lists/builders/src/G4QGSBinaryProtonBuilder.cc +++ b/source/physics_lists/builders/src/G4QGSBinaryProtonBuilder.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: G4QGSBinaryProtonBuilder.cc,v 1.2.2.1 2009/08/11 15:11:24 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-02-patch-03 $ +// GEANT4 tag $Name: geant4-09-02-patch-04 $ // //--------------------------------------------------------------------------- // diff --git a/source/physics_lists/builders/src/G4QGSCEflowNeutronBuilder.cc b/source/physics_lists/builders/src/G4QGSCEflowNeutronBuilder.cc index c815b5c97f..1c83ab16db 100644 --- a/source/physics_lists/builders/src/G4QGSCEflowNeutronBuilder.cc +++ b/source/physics_lists/builders/src/G4QGSCEflowNeutronBuilder.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: G4QGSCEflowNeutronBuilder.cc,v 1.3.2.1 2009/08/11 15:11:24 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-02-patch-03 $ +// GEANT4 tag $Name: geant4-09-02-patch-04 $ // //--------------------------------------------------------------------------- // diff --git a/source/physics_lists/builders/src/G4QGSCEflowPiKBuilder.cc b/source/physics_lists/builders/src/G4QGSCEflowPiKBuilder.cc index 138c5771b3..0cd205894b 100644 --- a/source/physics_lists/builders/src/G4QGSCEflowPiKBuilder.cc +++ b/source/physics_lists/builders/src/G4QGSCEflowPiKBuilder.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: G4QGSCEflowPiKBuilder.cc,v 1.3.2.1 2009/08/11 15:11:24 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-02-patch-03 $ +// GEANT4 tag $Name: geant4-09-02-patch-04 $ // //--------------------------------------------------------------------------- // diff --git a/source/physics_lists/builders/src/G4QGSCEflowProtonBuilder.cc b/source/physics_lists/builders/src/G4QGSCEflowProtonBuilder.cc index 1ee0dd3066..60cbd059ea 100644 --- a/source/physics_lists/builders/src/G4QGSCEflowProtonBuilder.cc +++ b/source/physics_lists/builders/src/G4QGSCEflowProtonBuilder.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: G4QGSCEflowProtonBuilder.cc,v 1.3.2.1 2009/08/11 15:11:24 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-02-patch-03 $ +// GEANT4 tag $Name: geant4-09-02-patch-04 $ // //--------------------------------------------------------------------------- // diff --git a/source/physics_lists/builders/src/G4QGSCNeutronBuilder.cc b/source/physics_lists/builders/src/G4QGSCNeutronBuilder.cc index b323fb92bc..4cdf52c28a 100644 --- a/source/physics_lists/builders/src/G4QGSCNeutronBuilder.cc +++ b/source/physics_lists/builders/src/G4QGSCNeutronBuilder.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: G4QGSCNeutronBuilder.cc,v 1.4.2.1 2009/08/11 15:11:24 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-02-patch-03 $ +// GEANT4 tag $Name: geant4-09-02-patch-04 $ // //--------------------------------------------------------------------------- // diff --git a/source/physics_lists/builders/src/G4QGSCPiKBuilder.cc b/source/physics_lists/builders/src/G4QGSCPiKBuilder.cc index b4f6c5fa4a..782274cd2d 100644 --- a/source/physics_lists/builders/src/G4QGSCPiKBuilder.cc +++ b/source/physics_lists/builders/src/G4QGSCPiKBuilder.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: G4QGSCPiKBuilder.cc,v 1.4.2.1 2009/08/11 15:11:24 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-02-patch-03 $ +// GEANT4 tag $Name: geant4-09-02-patch-04 $ // //--------------------------------------------------------------------------- // diff --git a/source/physics_lists/builders/src/G4QGSCProtonBuilder.cc b/source/physics_lists/builders/src/G4QGSCProtonBuilder.cc index 1c1bbddc0d..72e4eb2932 100644 --- a/source/physics_lists/builders/src/G4QGSCProtonBuilder.cc +++ b/source/physics_lists/builders/src/G4QGSCProtonBuilder.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: G4QGSCProtonBuilder.cc,v 1.4.2.1 2009/08/11 15:11:24 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-02-patch-03 $ +// GEANT4 tag $Name: geant4-09-02-patch-04 $ // //--------------------------------------------------------------------------- // diff --git a/source/physics_lists/builders/src/G4QGSPNeutronBuilder.cc b/source/physics_lists/builders/src/G4QGSPNeutronBuilder.cc index ba57b09f99..50cb08440e 100644 --- a/source/physics_lists/builders/src/G4QGSPNeutronBuilder.cc +++ b/source/physics_lists/builders/src/G4QGSPNeutronBuilder.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: G4QGSPNeutronBuilder.cc,v 1.4.2.1 2009/08/11 15:11:24 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-02-patch-03 $ +// GEANT4 tag $Name: geant4-09-02-patch-04 $ // //--------------------------------------------------------------------------- // diff --git a/source/physics_lists/builders/src/G4QGSPPiKBuilder.cc b/source/physics_lists/builders/src/G4QGSPPiKBuilder.cc index 00b23b5e1b..3a80a7889b 100644 --- a/source/physics_lists/builders/src/G4QGSPPiKBuilder.cc +++ b/source/physics_lists/builders/src/G4QGSPPiKBuilder.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: G4QGSPPiKBuilder.cc,v 1.4.2.1 2009/08/11 15:11:24 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-02-patch-03 $ +// GEANT4 tag $Name: geant4-09-02-patch-04 $ // //--------------------------------------------------------------------------- // diff --git a/source/physics_lists/builders/src/G4QGSPProtonBuilder.cc b/source/physics_lists/builders/src/G4QGSPProtonBuilder.cc index fdaeb648e7..773626cc6e 100644 --- a/source/physics_lists/builders/src/G4QGSPProtonBuilder.cc +++ b/source/physics_lists/builders/src/G4QGSPProtonBuilder.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: G4QGSPProtonBuilder.cc,v 1.4.2.1 2009/08/11 15:11:24 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-02-patch-03 $ +// GEANT4 tag $Name: geant4-09-02-patch-04 $ // //--------------------------------------------------------------------------- // diff --git a/source/physics_lists/builders/src/G4VNeutronBuilder.cc b/source/physics_lists/builders/src/G4VNeutronBuilder.cc index 2a2a4bdad1..a77557a9b5 100644 --- a/source/physics_lists/builders/src/G4VNeutronBuilder.cc +++ b/source/physics_lists/builders/src/G4VNeutronBuilder.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: G4VNeutronBuilder.cc,v 1.1.2.2 2009/08/11 15:11:24 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-02-patch-03 $ +// GEANT4 tag $Name: geant4-09-02-patch-04 $ // //--------------------------------------------------------------------------- // diff --git a/source/physics_lists/builders/src/G4VPiKBuilder.cc b/source/physics_lists/builders/src/G4VPiKBuilder.cc index cf5546a07c..99ab48e694 100644 --- a/source/physics_lists/builders/src/G4VPiKBuilder.cc +++ b/source/physics_lists/builders/src/G4VPiKBuilder.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: G4VPiKBuilder.cc,v 1.1.2.2 2009/08/11 15:11:24 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-02-patch-03 $ +// GEANT4 tag $Name: geant4-09-02-patch-04 $ // //--------------------------------------------------------------------------- // diff --git a/source/physics_lists/builders/src/G4VProtonBuilder.cc b/source/physics_lists/builders/src/G4VProtonBuilder.cc index 510892737b..2ef68c3535 100644 --- a/source/physics_lists/builders/src/G4VProtonBuilder.cc +++ b/source/physics_lists/builders/src/G4VProtonBuilder.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: G4VProtonBuilder.cc,v 1.1.2.2 2009/08/11 15:11:24 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-02-patch-03 $ +// GEANT4 tag $Name: geant4-09-02-patch-04 $ // //--------------------------------------------------------------------------- // diff --git a/source/physics_lists/lists/src/G4HadronInelasticQBBC.cc b/source/physics_lists/lists/src/G4HadronInelasticQBBC.cc index 25da3243a8..72edb474fa 100644 --- a/source/physics_lists/lists/src/G4HadronInelasticQBBC.cc +++ b/source/physics_lists/lists/src/G4HadronInelasticQBBC.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: G4HadronInelasticQBBC.cc,v 1.15.2.1 2009/03/03 13:27:47 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-02-patch-03 $ +// GEANT4 tag $Name: geant4-09-02-patch-04 $ // //--------------------------------------------------------------------------- // diff --git a/source/physics_lists/lists/src/HadronPhysicsQGSC.cc b/source/physics_lists/lists/src/HadronPhysicsQGSC.cc index 2cf70b8463..0b280a06e5 100644 --- a/source/physics_lists/lists/src/HadronPhysicsQGSC.cc +++ b/source/physics_lists/lists/src/HadronPhysicsQGSC.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: HadronPhysicsQGSC.cc,v 1.2.6.1 2009/03/12 13:58:29 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-02-patch-03 $ +// GEANT4 tag $Name: geant4-09-02-patch-04 $ // //--------------------------------------------------------------------------- // diff --git a/source/processes/cuts/include/G4ProductionCutsTable.hh b/source/processes/cuts/include/G4ProductionCutsTable.hh index 027202610f..8460665a0b 100644 --- a/source/processes/cuts/include/G4ProductionCutsTable.hh +++ b/source/processes/cuts/include/G4ProductionCutsTable.hh @@ -25,7 +25,7 @@ // // // $Id: G4ProductionCutsTable.hh,v 1.9.2.1 2010/01/26 13:56:43 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-02-patch-03 $ +// GEANT4 tag $Name: geant4-09-02-patch-04 $ // // // ------------------------------------------------------------ diff --git a/source/processes/cuts/include/G4RToEConvForElectron.hh b/source/processes/cuts/include/G4RToEConvForElectron.hh index d41562ef6c..fe302ff11b 100644 --- a/source/processes/cuts/include/G4RToEConvForElectron.hh +++ b/source/processes/cuts/include/G4RToEConvForElectron.hh @@ -25,7 +25,7 @@ // // // $Id: G4RToEConvForElectron.hh,v 1.2.4.1 2010/01/26 13:56:43 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-02-patch-03 $ +// GEANT4 tag $Name: geant4-09-02-patch-04 $ // // // ------------------------------------------------------------ diff --git a/source/processes/cuts/include/G4RToEConvForGamma.hh b/source/processes/cuts/include/G4RToEConvForGamma.hh index 2a02e83d2f..a3ce4a6996 100644 --- a/source/processes/cuts/include/G4RToEConvForGamma.hh +++ b/source/processes/cuts/include/G4RToEConvForGamma.hh @@ -25,7 +25,7 @@ // // // $Id: G4RToEConvForGamma.hh,v 1.2.4.1 2010/01/26 13:56:43 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-02-patch-03 $ +// GEANT4 tag $Name: geant4-09-02-patch-04 $ // // // ------------------------------------------------------------ diff --git a/source/processes/cuts/include/G4RToEConvForPositron.hh b/source/processes/cuts/include/G4RToEConvForPositron.hh index afd70775f1..e95ef162b7 100644 --- a/source/processes/cuts/include/G4RToEConvForPositron.hh +++ b/source/processes/cuts/include/G4RToEConvForPositron.hh @@ -25,7 +25,7 @@ // // // $Id: G4RToEConvForPositron.hh,v 1.2.4.1 2010/01/26 13:56:43 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-02-patch-03 $ +// GEANT4 tag $Name: geant4-09-02-patch-04 $ // // // ------------------------------------------------------------ diff --git a/source/processes/cuts/include/G4RToEConvForProton.hh b/source/processes/cuts/include/G4RToEConvForProton.hh index 010476069b..0725e9ac41 100644 --- a/source/processes/cuts/include/G4RToEConvForProton.hh +++ b/source/processes/cuts/include/G4RToEConvForProton.hh @@ -25,7 +25,7 @@ // // // $Id: G4RToEConvForProton.hh,v 1.2.4.1 2010/01/26 13:56:43 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-02-patch-03 $ +// GEANT4 tag $Name: geant4-09-02-patch-04 $ // // // ------------------------------------------------------------ diff --git a/source/processes/cuts/include/G4VRangeToEnergyConverter.hh b/source/processes/cuts/include/G4VRangeToEnergyConverter.hh index 4e59e61dda..3c1cf45e1f 100644 --- a/source/processes/cuts/include/G4VRangeToEnergyConverter.hh +++ b/source/processes/cuts/include/G4VRangeToEnergyConverter.hh @@ -25,7 +25,7 @@ // // // $Id: G4VRangeToEnergyConverter.hh,v 1.4.4.2 2010/01/26 13:56:43 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-02-patch-03 $ +// GEANT4 tag $Name: geant4-09-02-patch-04 $ // // // ------------------------------------------------------------ diff --git a/source/processes/cuts/src/G4ProductionCutsTable.cc b/source/processes/cuts/src/G4ProductionCutsTable.cc index a2ebd79771..f49b8aaa3e 100644 --- a/source/processes/cuts/src/G4ProductionCutsTable.cc +++ b/source/processes/cuts/src/G4ProductionCutsTable.cc @@ -25,7 +25,7 @@ // // // $Id: G4ProductionCutsTable.cc,v 1.18.2.2 2010/01/26 13:56:43 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-02-patch-03 $ +// GEANT4 tag $Name: geant4-09-02-patch-04 $ // // // -------------------------------------------------------------- diff --git a/source/processes/cuts/src/G4RToEConvForElectron.cc b/source/processes/cuts/src/G4RToEConvForElectron.cc index e8d3a5ccad..7a5d0bdc2a 100644 --- a/source/processes/cuts/src/G4RToEConvForElectron.cc +++ b/source/processes/cuts/src/G4RToEConvForElectron.cc @@ -25,7 +25,7 @@ // // // $Id: G4RToEConvForElectron.cc,v 1.5.4.2 2010/01/26 13:56:43 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-02-patch-03 $ +// GEANT4 tag $Name: geant4-09-02-patch-04 $ // // // -------------------------------------------------------------- diff --git a/source/processes/cuts/src/G4RToEConvForGamma.cc b/source/processes/cuts/src/G4RToEConvForGamma.cc index b8bd2e625c..ed94e2de7f 100644 --- a/source/processes/cuts/src/G4RToEConvForGamma.cc +++ b/source/processes/cuts/src/G4RToEConvForGamma.cc @@ -25,7 +25,7 @@ // // // $Id: G4RToEConvForGamma.cc,v 1.4.4.1 2010/01/26 13:56:43 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-02-patch-03 $ +// GEANT4 tag $Name: geant4-09-02-patch-04 $ // // // -------------------------------------------------------------- diff --git a/source/processes/cuts/src/G4RToEConvForPositron.cc b/source/processes/cuts/src/G4RToEConvForPositron.cc index a7d07fd0f3..b319a3d265 100644 --- a/source/processes/cuts/src/G4RToEConvForPositron.cc +++ b/source/processes/cuts/src/G4RToEConvForPositron.cc @@ -25,7 +25,7 @@ // // // $Id: G4RToEConvForPositron.cc,v 1.5.4.2 2010/01/26 13:56:43 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-02-patch-03 $ +// GEANT4 tag $Name: geant4-09-02-patch-04 $ // // // -------------------------------------------------------------- diff --git a/source/processes/cuts/src/G4RToEConvForProton.cc b/source/processes/cuts/src/G4RToEConvForProton.cc index ec780ed9e4..d403921b58 100644 --- a/source/processes/cuts/src/G4RToEConvForProton.cc +++ b/source/processes/cuts/src/G4RToEConvForProton.cc @@ -25,7 +25,7 @@ // // // $Id: G4RToEConvForProton.cc,v 1.3.4.1 2010/01/26 13:56:43 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-02-patch-03 $ +// GEANT4 tag $Name: geant4-09-02-patch-04 $ // // // -------------------------------------------------------------- diff --git a/source/processes/cuts/src/G4VRangeToEnergyConverter.cc b/source/processes/cuts/src/G4VRangeToEnergyConverter.cc index 07b143a913..9fd0c84859 100644 --- a/source/processes/cuts/src/G4VRangeToEnergyConverter.cc +++ b/source/processes/cuts/src/G4VRangeToEnergyConverter.cc @@ -25,7 +25,7 @@ // // // $Id: G4VRangeToEnergyConverter.cc,v 1.9.2.2 2010/01/26 13:56:43 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-02-patch-03 $ +// GEANT4 tag $Name: geant4-09-02-patch-04 $ // // // -------------------------------------------------------------- diff --git a/source/processes/electromagnetic/lowenergy/include/G4DNAProcess.icc b/source/processes/electromagnetic/lowenergy/include/G4DNAProcess.icc index ea73c44ab9..97523f1b46 100644 --- a/source/processes/electromagnetic/lowenergy/include/G4DNAProcess.icc +++ b/source/processes/electromagnetic/lowenergy/include/G4DNAProcess.icc @@ -25,7 +25,7 @@ // // // $Id: G4DNAProcess.icc,v 1.11.4.1 2009/03/05 08:50:18 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-02-patch-03 $ +// GEANT4 tag $Name: geant4-09-02-patch-04 $ // // Contact Author: Maria Grazia Pia (Maria.Grazia.Pia@cern.ch) // diff --git a/source/processes/electromagnetic/lowenergy/include/G4FinalStateProduct.hh b/source/processes/electromagnetic/lowenergy/include/G4FinalStateProduct.hh index 4cff37c726..29b733b99f 100644 --- a/source/processes/electromagnetic/lowenergy/include/G4FinalStateProduct.hh +++ b/source/processes/electromagnetic/lowenergy/include/G4FinalStateProduct.hh @@ -25,7 +25,7 @@ // // // $Id: G4FinalStateProduct.hh,v 1.4.4.1 2009/03/05 08:50:19 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-02-patch-03 $ +// GEANT4 tag $Name: geant4-09-02-patch-04 $ // // Contact Author: Maria Grazia Pia (Maria.Grazia.Pia@cern.ch) // diff --git a/source/processes/electromagnetic/lowenergy/src/G4CrossSectionExcitationMillerGreenPartial.cc b/source/processes/electromagnetic/lowenergy/src/G4CrossSectionExcitationMillerGreenPartial.cc index 00d92d2221..6df0b960dd 100755 --- a/source/processes/electromagnetic/lowenergy/src/G4CrossSectionExcitationMillerGreenPartial.cc +++ b/source/processes/electromagnetic/lowenergy/src/G4CrossSectionExcitationMillerGreenPartial.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: G4CrossSectionExcitationMillerGreenPartial.cc,v 1.2.2.1 2009/03/05 08:50:19 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-02-patch-03 $ +// GEANT4 tag $Name: geant4-09-02-patch-04 $ #include "G4CrossSectionExcitationMillerGreenPartial.hh" diff --git a/source/processes/electromagnetic/lowenergy/src/G4CrossSectionIonisationBornPartial.cc b/source/processes/electromagnetic/lowenergy/src/G4CrossSectionIonisationBornPartial.cc index 595815334d..b62739c881 100644 --- a/source/processes/electromagnetic/lowenergy/src/G4CrossSectionIonisationBornPartial.cc +++ b/source/processes/electromagnetic/lowenergy/src/G4CrossSectionIonisationBornPartial.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: G4CrossSectionIonisationBornPartial.cc,v 1.4.2.1 2009/03/05 08:50:19 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-02-patch-03 $ +// GEANT4 tag $Name: geant4-09-02-patch-04 $ #include "G4CrossSectionIonisationBornPartial.hh" diff --git a/source/processes/electromagnetic/lowenergy/src/G4FinalStateChargeDecrease.cc b/source/processes/electromagnetic/lowenergy/src/G4FinalStateChargeDecrease.cc index ad39e804cc..9701eaef18 100755 --- a/source/processes/electromagnetic/lowenergy/src/G4FinalStateChargeDecrease.cc +++ b/source/processes/electromagnetic/lowenergy/src/G4FinalStateChargeDecrease.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: G4FinalStateChargeDecrease.cc,v 1.3.2.1 2009/03/05 08:50:19 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-02-patch-03 $ +// GEANT4 tag $Name: geant4-09-02-patch-04 $ #include "G4FinalStateChargeDecrease.hh" diff --git a/source/processes/electromagnetic/lowenergy/src/G4FinalStateChargeIncrease.cc b/source/processes/electromagnetic/lowenergy/src/G4FinalStateChargeIncrease.cc index dfeda5e056..58c31a594e 100755 --- a/source/processes/electromagnetic/lowenergy/src/G4FinalStateChargeIncrease.cc +++ b/source/processes/electromagnetic/lowenergy/src/G4FinalStateChargeIncrease.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: G4FinalStateChargeIncrease.cc,v 1.3.2.1 2009/03/05 08:50:19 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-02-patch-03 $ +// GEANT4 tag $Name: geant4-09-02-patch-04 $ #include "G4FinalStateChargeIncrease.hh" diff --git a/source/processes/electromagnetic/lowenergy/src/G4FinalStateProduct.cc b/source/processes/electromagnetic/lowenergy/src/G4FinalStateProduct.cc index 56abe7ef4d..1940bbdc18 100644 --- a/source/processes/electromagnetic/lowenergy/src/G4FinalStateProduct.cc +++ b/source/processes/electromagnetic/lowenergy/src/G4FinalStateProduct.cc @@ -25,7 +25,7 @@ // // // $Id: G4FinalStateProduct.cc,v 1.5.4.1 2009/03/05 08:50:19 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-02-patch-03 $ +// GEANT4 tag $Name: geant4-09-02-patch-04 $ // // Contact Author: Maria Grazia Pia (Maria.Grazia.Pia@cern.ch) // diff --git a/source/processes/electromagnetic/lowenergy/src/G4PenelopePhotoElectric.cc b/source/processes/electromagnetic/lowenergy/src/G4PenelopePhotoElectric.cc index c1b43a0323..ffe389e362 100644 --- a/source/processes/electromagnetic/lowenergy/src/G4PenelopePhotoElectric.cc +++ b/source/processes/electromagnetic/lowenergy/src/G4PenelopePhotoElectric.cc @@ -25,7 +25,7 @@ // // // $Id: G4PenelopePhotoElectric.cc,v 1.12.4.1 2009/03/05 08:50:19 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-02-patch-03 $ +// GEANT4 tag $Name: geant4-09-02-patch-04 $ // // Author: L. Pandola // diff --git a/source/processes/electromagnetic/lowenergy/src/G4PenelopePhotoElectricModel.cc b/source/processes/electromagnetic/lowenergy/src/G4PenelopePhotoElectricModel.cc index dc797c3bee..c30dec1339 100644 --- a/source/processes/electromagnetic/lowenergy/src/G4PenelopePhotoElectricModel.cc +++ b/source/processes/electromagnetic/lowenergy/src/G4PenelopePhotoElectricModel.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: G4PenelopePhotoElectricModel.cc,v 1.2.2.1 2009/03/05 08:50:19 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-02-patch-03 $ +// GEANT4 tag $Name: geant4-09-02-patch-04 $ // // Author: Luciano Pandola // diff --git a/source/processes/electromagnetic/lowenergy/src/G4hLowEnergyLoss.cc b/source/processes/electromagnetic/lowenergy/src/G4hLowEnergyLoss.cc index 2b1b382b7c..db9d9b3aaa 100644 --- a/source/processes/electromagnetic/lowenergy/src/G4hLowEnergyLoss.cc +++ b/source/processes/electromagnetic/lowenergy/src/G4hLowEnergyLoss.cc @@ -25,7 +25,7 @@ // // // $Id: G4hLowEnergyLoss.cc,v 1.27.2.1 2009/03/05 08:50:19 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-02-patch-03 $ +// GEANT4 tag $Name: geant4-09-02-patch-04 $ // // ----------------------------------------------------------- // GEANT 4 class implementation file diff --git a/source/processes/electromagnetic/muons/src/G4MuPairProductionModel.cc b/source/processes/electromagnetic/muons/src/G4MuPairProductionModel.cc index c587b60e5a..991703d99a 100644 --- a/source/processes/electromagnetic/muons/src/G4MuPairProductionModel.cc +++ b/source/processes/electromagnetic/muons/src/G4MuPairProductionModel.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: G4MuPairProductionModel.cc,v 1.39.2.1 2009/08/12 07:57:43 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-02-patch-03 $ +// GEANT4 tag $Name: geant4-09-02-patch-04 $ // // ------------------------------------------------------------------- // diff --git a/source/processes/electromagnetic/polarisation/src/G4PolarizationHelper.cc b/source/processes/electromagnetic/polarisation/src/G4PolarizationHelper.cc index 328b1fa917..9e92b82594 100644 --- a/source/processes/electromagnetic/polarisation/src/G4PolarizationHelper.cc +++ b/source/processes/electromagnetic/polarisation/src/G4PolarizationHelper.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: G4PolarizationHelper.cc,v 1.4.4.2 2010/01/26 16:36:05 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-02-patch-03 $ +// GEANT4 tag $Name: geant4-09-02-patch-04 $ // // GEANT4 Class file // diff --git a/source/processes/electromagnetic/polarisation/src/G4PolarizedAnnihilationModel.cc b/source/processes/electromagnetic/polarisation/src/G4PolarizedAnnihilationModel.cc index 9defdfbcea..9d0a79459d 100644 --- a/source/processes/electromagnetic/polarisation/src/G4PolarizedAnnihilationModel.cc +++ b/source/processes/electromagnetic/polarisation/src/G4PolarizedAnnihilationModel.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: G4PolarizedAnnihilationModel.cc,v 1.6.4.2 2010/01/26 16:36:05 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-02-patch-03 $ +// GEANT4 tag $Name: geant4-09-02-patch-04 $ // // ------------------------------------------------------------------- // diff --git a/source/processes/electromagnetic/polarisation/src/G4StokesVector.cc b/source/processes/electromagnetic/polarisation/src/G4StokesVector.cc index 89326c86b7..1139cd2a54 100644 --- a/source/processes/electromagnetic/polarisation/src/G4StokesVector.cc +++ b/source/processes/electromagnetic/polarisation/src/G4StokesVector.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: G4StokesVector.cc,v 1.3.4.2 2010/01/26 16:36:05 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-02-patch-03 $ +// GEANT4 tag $Name: geant4-09-02-patch-04 $ // // GEANT4 Class file // diff --git a/source/processes/electromagnetic/standard/include/G4UniversalFluctuation.hh b/source/processes/electromagnetic/standard/include/G4UniversalFluctuation.hh index 528e8f0805..fbbe6f2a3d 100644 --- a/source/processes/electromagnetic/standard/include/G4UniversalFluctuation.hh +++ b/source/processes/electromagnetic/standard/include/G4UniversalFluctuation.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: G4UniversalFluctuation.hh,v 1.6.2.2 2010/02/01 16:31:17 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-02-patch-03 $ +// GEANT4 tag $Name: geant4-09-02-patch-04 $ // // ------------------------------------------------------------------- // diff --git a/source/processes/electromagnetic/standard/include/G4ionIonisation.hh b/source/processes/electromagnetic/standard/include/G4ionIonisation.hh index ec7a176e9b..32fd2e0881 100644 --- a/source/processes/electromagnetic/standard/include/G4ionIonisation.hh +++ b/source/processes/electromagnetic/standard/include/G4ionIonisation.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: G4ionIonisation.hh,v 1.56.2.2 2010/02/01 16:31:17 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-02-patch-03 $ +// GEANT4 tag $Name: geant4-09-02-patch-04 $ // // ------------------------------------------------------------------- // diff --git a/source/processes/electromagnetic/standard/src/G4UniversalFluctuation.cc b/source/processes/electromagnetic/standard/src/G4UniversalFluctuation.cc index 849dc05a75..a3dd7dd964 100644 --- a/source/processes/electromagnetic/standard/src/G4UniversalFluctuation.cc +++ b/source/processes/electromagnetic/standard/src/G4UniversalFluctuation.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: G4UniversalFluctuation.cc,v 1.16.2.2 2010/02/01 16:31:17 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-02-patch-03 $ +// GEANT4 tag $Name: geant4-09-02-patch-04 $ // // ------------------------------------------------------------------- // diff --git a/source/processes/electromagnetic/standard/src/G4ionIonisation.cc b/source/processes/electromagnetic/standard/src/G4ionIonisation.cc index cde1702e7a..b4a9bb9afa 100644 --- a/source/processes/electromagnetic/standard/src/G4ionIonisation.cc +++ b/source/processes/electromagnetic/standard/src/G4ionIonisation.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: G4ionIonisation.cc,v 1.65.2.2 2010/02/01 16:31:17 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-02-patch-03 $ +// GEANT4 tag $Name: geant4-09-02-patch-04 $ // // ------------------------------------------------------------------- // diff --git a/source/processes/electromagnetic/utils/src/G4EmCorrections.cc b/source/processes/electromagnetic/utils/src/G4EmCorrections.cc index 0749e30cc4..5e01f166da 100644 --- a/source/processes/electromagnetic/utils/src/G4EmCorrections.cc +++ b/source/processes/electromagnetic/utils/src/G4EmCorrections.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: G4EmCorrections.cc,v 1.51.2.1 2010/01/26 14:33:54 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-02-patch-03 $ +// GEANT4 tag $Name: geant4-09-02-patch-04 $ // // ------------------------------------------------------------------- // diff --git a/source/processes/electromagnetic/utils/src/G4VEmProcess.cc b/source/processes/electromagnetic/utils/src/G4VEmProcess.cc index a0d7d1fb27..5a4402820f 100644 --- a/source/processes/electromagnetic/utils/src/G4VEmProcess.cc +++ b/source/processes/electromagnetic/utils/src/G4VEmProcess.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: G4VEmProcess.cc,v 1.60.2.1 2010/01/26 14:33:54 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-02-patch-03 $ +// GEANT4 tag $Name: geant4-09-02-patch-04 $ // // ------------------------------------------------------------------- // diff --git a/source/processes/electromagnetic/utils/src/G4VEnergyLossProcess.cc b/source/processes/electromagnetic/utils/src/G4VEnergyLossProcess.cc index 35ded8c9f7..7013f9e8d6 100644 --- a/source/processes/electromagnetic/utils/src/G4VEnergyLossProcess.cc +++ b/source/processes/electromagnetic/utils/src/G4VEnergyLossProcess.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: G4VEnergyLossProcess.cc,v 1.143.2.1 2010/01/26 14:33:54 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-02-patch-03 $ +// GEANT4 tag $Name: geant4-09-02-patch-04 $ // // ------------------------------------------------------------------- // diff --git a/source/processes/electromagnetic/utils/src/G4ionEffectiveCharge.cc b/source/processes/electromagnetic/utils/src/G4ionEffectiveCharge.cc index 1166412b0e..2ca460630e 100644 --- a/source/processes/electromagnetic/utils/src/G4ionEffectiveCharge.cc +++ b/source/processes/electromagnetic/utils/src/G4ionEffectiveCharge.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: G4ionEffectiveCharge.cc,v 1.24.2.1 2010/01/26 14:33:54 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-02-patch-03 $ +// GEANT4 tag $Name: geant4-09-02-patch-04 $ // // ------------------------------------------------------------------- // diff --git a/source/processes/hadronic/cross_sections/include/G4CrossSectionDataSetRegistry.hh b/source/processes/hadronic/cross_sections/include/G4CrossSectionDataSetRegistry.hh index 8e60927455..3673bba361 100644 --- a/source/processes/hadronic/cross_sections/include/G4CrossSectionDataSetRegistry.hh +++ b/source/processes/hadronic/cross_sections/include/G4CrossSectionDataSetRegistry.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: G4CrossSectionDataSetRegistry.hh,v 1.2.2.3 2009/08/11 15:23:23 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-02-patch-03 $ +// GEANT4 tag $Name: geant4-09-02-patch-04 $ // // ------------------------------------------------------------------- // diff --git a/source/processes/hadronic/cross_sections/include/G4CrossSectionDataStore.hh b/source/processes/hadronic/cross_sections/include/G4CrossSectionDataStore.hh index a7a56ab615..f38128845f 100644 --- a/source/processes/hadronic/cross_sections/include/G4CrossSectionDataStore.hh +++ b/source/processes/hadronic/cross_sections/include/G4CrossSectionDataStore.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: G4CrossSectionDataStore.hh,v 1.13.2.2 2009/08/13 09:16:18 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-02-patch-03 $ +// GEANT4 tag $Name: geant4-09-02-patch-04 $ // // ------------------------------------------------------------------- // diff --git a/source/processes/hadronic/cross_sections/include/G4VCrossSectionDataSet.hh b/source/processes/hadronic/cross_sections/include/G4VCrossSectionDataSet.hh index 5979a224aa..ee8961ddfb 100644 --- a/source/processes/hadronic/cross_sections/include/G4VCrossSectionDataSet.hh +++ b/source/processes/hadronic/cross_sections/include/G4VCrossSectionDataSet.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: G4VCrossSectionDataSet.hh,v 1.12.4.2 2009/08/13 09:16:18 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-02-patch-03 $ +// GEANT4 tag $Name: geant4-09-02-patch-04 $ // // ------------------------------------------------------------------- // diff --git a/source/processes/hadronic/cross_sections/src/G4CrossSectionDataSetRegistry.cc b/source/processes/hadronic/cross_sections/src/G4CrossSectionDataSetRegistry.cc index 49131f9a0c..e299431a44 100644 --- a/source/processes/hadronic/cross_sections/src/G4CrossSectionDataSetRegistry.cc +++ b/source/processes/hadronic/cross_sections/src/G4CrossSectionDataSetRegistry.cc @@ -25,7 +25,7 @@ // // // $Id: G4CrossSectionDataSetRegistry.cc,v 1.3.2.5 2010/01/26 14:50:08 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-02-patch-03 $ +// GEANT4 tag $Name: geant4-09-02-patch-04 $ // // ------------------------------------------------------------------- // diff --git a/source/processes/hadronic/cross_sections/src/G4CrossSectionDataStore.cc b/source/processes/hadronic/cross_sections/src/G4CrossSectionDataStore.cc index fc5d8621f2..f7c2b9a8f8 100644 --- a/source/processes/hadronic/cross_sections/src/G4CrossSectionDataStore.cc +++ b/source/processes/hadronic/cross_sections/src/G4CrossSectionDataStore.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: G4CrossSectionDataStore.cc,v 1.15.2.2 2009/08/13 09:16:18 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-02-patch-03 $ +// GEANT4 tag $Name: geant4-09-02-patch-04 $ // // ------------------------------------------------------------------- // diff --git a/source/processes/hadronic/cross_sections/src/G4VCrossSectionDataSet.cc b/source/processes/hadronic/cross_sections/src/G4VCrossSectionDataSet.cc index 0f8407d4f1..27bcffb482 100644 --- a/source/processes/hadronic/cross_sections/src/G4VCrossSectionDataSet.cc +++ b/source/processes/hadronic/cross_sections/src/G4VCrossSectionDataSet.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: G4VCrossSectionDataSet.cc,v 1.7.4.2 2009/08/13 09:16:18 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-02-patch-03 $ +// GEANT4 tag $Name: geant4-09-02-patch-04 $ // // ------------------------------------------------------------------- // diff --git a/source/processes/hadronic/management/include/G4HadronicProcessStore.hh b/source/processes/hadronic/management/include/G4HadronicProcessStore.hh index 5cbee2e26f..9562052633 100644 --- a/source/processes/hadronic/management/include/G4HadronicProcessStore.hh +++ b/source/processes/hadronic/management/include/G4HadronicProcessStore.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: G4HadronicProcessStore.hh,v 1.3.2.1 2009/03/03 11:45:23 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-02-patch-03 $ +// GEANT4 tag $Name: geant4-09-02-patch-04 $ // // // ------------------------------------------------------------------- diff --git a/source/processes/hadronic/management/src/G4HadronicProcessStore.cc b/source/processes/hadronic/management/src/G4HadronicProcessStore.cc index 7797f4cf4c..50386f7fc3 100644 --- a/source/processes/hadronic/management/src/G4HadronicProcessStore.cc +++ b/source/processes/hadronic/management/src/G4HadronicProcessStore.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: G4HadronicProcessStore.cc,v 1.7.2.2 2010/01/26 14:55:18 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-02-patch-03 $ +// GEANT4 tag $Name: geant4-09-02-patch-04 $ // // ------------------------------------------------------------------- // diff --git a/source/processes/hadronic/models/cascade/History b/source/processes/hadronic/models/cascade/History index 0b3664d52a..cfd169b9ce 100644 --- a/source/processes/hadronic/models/cascade/History +++ b/source/processes/hadronic/models/cascade/History @@ -14,6 +14,13 @@ code and to keep track of all tags. * Please list in reverse chronological order (last date on top) --------------------------------------------------------------- +22 Jun 2010 Andrea Dotti (hadr-casc-V09-01-12) +---------------------------------------------- +- Fix for long-standing problem of energy non conservation in pion-nuclear + reaction on very light nuclei (in particular He) in G4CascadeInterface. + The workaround re-samples the interaction in the rare case when an + unphysical final state with baryon number violation is generated. + 11 Feb 2009 V.Ivanchenko (hadr-casc-V09-01-11) ----------------------------------------------- - set absorption coefficient 1.0 instead of 0.2 inside diff --git a/source/processes/hadronic/models/cascade/cascade/src/G4CascadeInterface.cc b/source/processes/hadronic/models/cascade/cascade/src/G4CascadeInterface.cc index 7ac94317b9..a0a4a7c37f 100644 --- a/source/processes/hadronic/models/cascade/cascade/src/G4CascadeInterface.cc +++ b/source/processes/hadronic/models/cascade/cascade/src/G4CascadeInterface.cc @@ -45,6 +45,9 @@ #include "G4NucleiModel.hh" #include "G4LorentzRotation.hh" +//22 June 2010: A. Dotti (andrea.dotti@cern.ch). Adding additional test on final state +// to avoid baryon number violation. Code changes are enclosed between +// AND-> and AND<- or marked with AND //#define BERTDEV 1 // A flag to activate a development version of Bertini cascade @@ -146,12 +149,12 @@ G4HadFinalState* G4CascadeInterface::ApplyYourself(const G4HadProjectile& aTrack sumEnergy = bullet->getKineticEnergy(); // In GeV - if (bulletType == proton || bulletType == neutron || bulletType == lambda || - bulletType == sigmaPlus || bulletType == sigmaZero || bulletType == sigmaMinus || - bulletType == xiZero || bulletType == xiMinus) { - - sumBaryon += 1; - } + //AND: Baryon number is calculated inside do {} while () loop + //if (bulletType == proton || bulletType == neutron || bulletType == lambda || + // bulletType == sigmaPlus || bulletType == sigmaZero || bulletType == sigmaMinus || + // bulletType == xiZero || bulletType == xiMinus) { + // sumBaryon += 1; + //} // Set target G4InuclNuclei* target = 0; @@ -174,7 +177,7 @@ G4HadFinalState* G4CascadeInterface::ApplyYourself(const G4HadProjectile& aTrack const G4CascadeMomentum& tmom = target->getMomentum(); eInit += std::sqrt(tmom[0] * tmom[0]); - sumBaryon += theNucleusA; + //sumBaryon += theNucleusA;//AND: Baryon number conservation check now done in do {} while () loop if (verboseLevel > 2) { G4cout << "Bullet: " << G4endl; @@ -244,13 +247,36 @@ G4HadFinalState* G4CascadeInterface::ApplyYourself(const G4HadProjectile& aTrack output = collider->collide(bullet, targetH); } - sumBaryon += 1; + //sumBaryon += 1;//AND const G4CascadeMomentum& bmom = bullet->getMomentum(); eInit = std::sqrt(bmom[0] * bmom[0]); const G4CascadeMomentum& tmom = targetH->getMomentum(); eInit += std::sqrt(tmom[0] * tmom[0]); + //AND->: Check baryon number conservation + //Initial state baryon number + sumBaryon = 1;//Target is H(1,1) + if (bulletType == proton || bulletType == neutron || bulletType == lambda || + bulletType == sigmaPlus || bulletType == sigmaZero || bulletType == sigmaMinus || + bulletType == xiZero || bulletType == xiMinus) { + sumBaryon += 1; + } + //Final state baryon number + std::vector<G4InuclElementaryParticle> particles = output.getOutgoingParticles(); + particleIterator itp_end = particles.end(); + for ( particleIterator itp = particles.begin(); itp != itp_end ; ++itp ) { + if ( itp->baryon() ) { + sumBaryon -= 1; + } + } + std::vector<G4InuclNuclei> nucleiFragments = output.getNucleiFragments(); + nucleiIterator itnuc_end = nucleiFragments.end(); + for ( nucleiIterator itnuc = nucleiFragments.begin() ; itnuc != itnuc_end ; ++itnuc ) { + sumBaryon -= G4int(itnuc->getA()); + } + //AND<- + if (verboseLevel > 2) { G4cout << "Target: " << G4endl; targetH->printParticle(); @@ -258,6 +284,8 @@ G4HadFinalState* G4CascadeInterface::ApplyYourself(const G4HadProjectile& aTrack } else { // treat all other targets excepet H(1,1) + G4double initE=0; + G4double finalE=0; do // we try to create inelastic interaction { #ifdef BERTDEV @@ -266,6 +294,11 @@ G4HadFinalState* G4CascadeInterface::ApplyYourself(const G4HadProjectile& aTrack output = collider->collide(bullet, target ); nTries++; + // Temporary check of final state (DHW June 2010) + G4CascadeMomentum momCheck = output.getTotalOutputMomentum(); + finalE = momCheck[0]; + initE = bullet->getEnergy() + target->getMass(); +// G4cout << " finalE = " << finalE << " , initE = " << initE << G4endl; #ifdef BERTDEV G4double coulumbBarrier = 8.7 * MeV; std::vector<G4InuclElementaryParticle> p= output.getOutgoingParticles(); @@ -282,18 +315,118 @@ G4HadFinalState* G4CascadeInterface::ApplyYourself(const G4HadProjectile& aTrack (nTries < maxTries) && // conditions for next try (coulombOK==1) && ((output.getOutgoingParticles().size() + output.getNucleiFragments().size()) > 2.5) && - (output.getOutgoingParticles().size()!=0) + (output.getOutgoingParticles().size()!=0) && ); #else + //AND->: Check baryon number + //Initial state baryon number + sumBaryon = G4int(theNucleusA); + if (bulletType == proton || bulletType == neutron || bulletType == lambda || + bulletType == sigmaPlus || bulletType == sigmaZero || bulletType == sigmaMinus || + bulletType == xiZero || bulletType == xiMinus) { + sumBaryon += 1; + } + //Final state baryon number + std::vector<G4InuclElementaryParticle> particles = output.getOutgoingParticles(); + particleIterator itp_end = particles.end(); + for ( particleIterator itp = particles.begin(); itp != itp_end ; ++itp ) { + if ( itp->baryon() ) { + sumBaryon -= 1; + } + } + std::vector<G4InuclNuclei> nucleiFragments = output.getNucleiFragments(); + nucleiIterator itnuc_end = nucleiFragments.end(); + for ( nucleiIterator itnuc = nucleiFragments.begin() ; itnuc != itnuc_end ; ++itnuc ) { + sumBaryon -= G4int(itnuc->getA()); + } + //AND<- +// G4cout << " ntries = " << nTries << G4endl; +// if (finalE > 1.05*initE) G4cout << " diff = " << finalE - initE << G4endl; - } while( - (nTries < maxTries) && - (output.getOutgoingParticles().size() + output.getNucleiFragments().size() < 2.5) && - (output.getOutgoingParticles().size()!=0) && - (output.getOutgoingParticles().begin()->type()==bullet->type()) - ); + //AND-> Add some printout in case of a re-try of interaction + if (verboseLevel > 0) + { + if ( finalE > 1.05*initE ) + { + G4cout<<"***WARNING*** G4CascadeInterface::ApplyYourself() : final state E="<<finalE/GeV<<" GeV, initial state E=" + <<initE/GeV<<" GeV. Re-trying interaction."<<G4endl; + } + if ( sumBaryon != 0 ) + { + G4cout<<"***WARNING*** G4CascadeInterface::ApplyYourself() : Baryon number non conservation Initial-Final=" + <<sumBaryon<<". Re-trying interaction."<<G4endl; + } + } + //AND<- + } while( + ((nTries < maxTries) && + (output.getOutgoingParticles().size() + output.getNucleiFragments().size() < 2.5) && + (output.getOutgoingParticles().size()!=0) && + (output.getOutgoingParticles().begin()->type()==bullet->type()) ) || + ( (finalE > 1.05*initE) && (nTries < maxTries) ) || //AND: add check on max tries to avoid infinite loopers + ( (sumBaryon!=0) && (nTries < maxTries) )//AND: add check on baryon number conservation + ); + + //AND-> Error handling... + if ((verboseLevel > 0) && ( nTries == maxTries )) + { + G4cout<<"***WARNING*** In G4CascadeInterface::ApplyYourself() : maximum number "<<(maxTries)<<" of re-tries reached"<<G4endl; + } + if ( finalE > 1.05*initE ) + { + G4cerr<<"***ERROR*** G4CascadeInterface::ApplyYourself() : final state E="<<finalE/GeV + <<" GeV, initial state E="<<initE/GeV<<" GeV and maximum re-tries reached. Dumping info on standard output."<<G4endl; + G4cout<<"Bullet info:"<<G4endl; + bullet->printParticle(); + G4cout<<"Target:"<<G4endl; + G4cout<<"A="<<theNucleusA<<" Z="<<theNucleus.GetZ()<<G4endl; + G4cout<<"Dumping list of out-particles:"<<G4endl; + std::vector<G4InuclElementaryParticle>::const_iterator it_end=output.getOutgoingParticles().end(); + std::vector<G4InuclElementaryParticle>::const_iterator it=output.getOutgoingParticles().begin(); + std::vector<G4InuclNuclei>::const_iterator nit_end=output.getNucleiFragments().end(); + std::vector<G4InuclNuclei>::const_iterator nit=output.getNucleiFragments().begin(); + for ( ; it != it_end ; ++it ) + { + G4cout<<" "; + it->printParticle(); + } + G4cout<<"Dumping list of fragments:"<<G4endl; + for ( ; nit != nit_end; ++nit ) + { + G4cout<<" "; + nit->printParticle(); + } + throw G4HadronicException(__FILE__, __LINE__, "G4CascadeInterface::ApplyYourself() - Energy non-conservation. More info in output."); + } + if ( sumBaryon ) + { + G4cerr<<"***ERROR*** G4CascadeInterface::ApplyYourself() : Baryon number non conservation Initial-Final="<<sumBaryon + <<" and maximum re-tries reached. Dumping info on standard output."<<G4endl; + G4cout<<"Bullet info:"<<G4endl; + bullet->printParticle(); + G4cout<<"Target:"<<G4endl; + G4cout<<"A="<<theNucleusA<<" Z="<<theNucleus.GetZ()<<G4endl; + G4cout<<"Dumping list of out-particles:"<<G4endl; + std::vector<G4InuclElementaryParticle>::const_iterator it_end=output.getOutgoingParticles().end(); + std::vector<G4InuclElementaryParticle>::const_iterator it=output.getOutgoingParticles().begin(); + std::vector<G4InuclNuclei>::const_iterator nit_end=output.getNucleiFragments().end(); + std::vector<G4InuclNuclei>::const_iterator nit=output.getNucleiFragments().begin(); + for ( ; it != it_end ; ++it ) + { + G4cout<<" "; + it->printParticle(); + } + G4cout<<"Dumping list of fragments:"<<G4endl; + for ( ; nit != nit_end; ++nit ) + { + G4cout<<" "; + nit->printParticle(); + } + throw G4HadronicException(__FILE__, __LINE__, "G4CascadeInterface::ApplyYourself() - Baryon number non-conservation. More info in output."); + } + //AND<- #endif - } +} if (verboseLevel > 1) { diff --git a/source/processes/hadronic/models/chiral_inv_phase_space/body/History b/source/processes/hadronic/models/chiral_inv_phase_space/body/History index d549452a7b..98c912d625 100644 --- a/source/processes/hadronic/models/chiral_inv_phase_space/body/History +++ b/source/processes/hadronic/models/chiral_inv_phase_space/body/History @@ -12,6 +12,14 @@ code and to keep track of all tags. * Please list in reverse chronological order (last date on top) --------------------------------------------------------------- +16-Jun-2010 Andrea Dotti (hadr-chips-body-V09-01-05) +------------------------------------------------------------------- +- Fix in G4QEnvironment for a rare problem of anomalous event with high pT + jet observed in ATLAS, identified in a Gamma+A -> X reaction with gamma + energy of 2 GeV, for which at least one of the secondaries was created + with too much kinetic energy (up to 90 GeV). + Addresses problem report #1126 and relates only to 9.2 release series. + 31-Mar-2008 Dennis Wright (hadr-chips-body-V09-01-04) ------------------------------------------------------------------- - add more parentheses around && within || to satisfy gcc-4.3 compiler diff --git a/source/processes/hadronic/models/chiral_inv_phase_space/body/src/G4QEnvironment.cc b/source/processes/hadronic/models/chiral_inv_phase_space/body/src/G4QEnvironment.cc index 7b8c75b78f..e3476a1326 100644 --- a/source/processes/hadronic/models/chiral_inv_phase_space/body/src/G4QEnvironment.cc +++ b/source/processes/hadronic/models/chiral_inv_phase_space/body/src/G4QEnvironment.cc @@ -27,14 +27,14 @@ //34567890123456789012345678901234567890123456789012345678901234567890123456789012345678901 // // -// $Id: G4QEnvironment.cc,v 1.137 2008/03/31 20:30:00 dennis Exp $ -// GEANT4 tag $Name: geant4-09-02 $ +// $Id: G4QEnvironment.cc,v 1.137.2.1 2010/09/16 09:07:12 gcosmo Exp $ +// GEANT4 tag $Name: geant4-09-02-patch-04 $ // // ---------------- G4QEnvironment ---------------- // by Mikhail Kossov, August 2000. // class for Multy Quasmon Environment used by the CHIPS Model // ------------------------------------------------------------ - + //#define debug //#define pdebug //#define qdebug @@ -57,550 +57,550 @@ using namespace std; G4QEnvironment::G4QEnvironment(const G4QNucleus theEnv) : theEnvironment(theEnv) { - G4int envPDG=theEnv.GetPDG(); - G4QPDGCode envQPDG(envPDG); - G4int envA=envQPDG.GetBaryNum(); - G4double envM=envQPDG.GetMass(); - totCharge=envQPDG.GetCharge(); - totBaryoN=envA; - tot4Mom=G4LorentzVector(0.,0.,0.,envM); + G4int envPDG=theEnv.GetPDG(); + G4QPDGCode envQPDG(envPDG); + G4int envA=envQPDG.GetBaryNum(); + G4double envM=envQPDG.GetMass(); + totCharge=envQPDG.GetCharge(); + totBaryoN=envA; + tot4Mom=G4LorentzVector(0.,0.,0.,envM); #ifdef debug G4cout<<"G4QEnviron::Const: t4M="<<tot4Mom<<",tC="<<totCharge<<",tB="<<totBaryoN<<G4endl; #endif } G4QEnvironment::G4QEnvironment(const G4QHadronVector& projHadrons, const G4int targPDG) : - theEnvironment(90000000) // User is responsible for projHadrons(Vector) + theEnvironment(90000000) // User is responsible for projHadrons(Vector) { - //static const G4double mNeut= G4QPDGCode(2112).GetMass(); - //static const G4QContent neutQC(2,1,0,0,0,0); - static const G4QPDGCode pimQPDG(-211); - theWorld= G4QCHIPSWorld::Get(); // Get a pointer to the CHIPS World - G4bool fake=false; // At present only fake pi- - theTargetPDG=targPDG; // Remenber it for error message - G4int nHadrons=projHadrons.size(); // A#of hadrons in the input Vector + //static const G4double mNeut= G4QPDGCode(2112).GetMass(); + //static const G4QContent neutQC(2,1,0,0,0,0); + static const G4QPDGCode pimQPDG(-211); + theWorld= G4QCHIPSWorld::Get(); // Get a pointer to the CHIPS World + G4bool fake=false; // At present only fake pi- + theTargetPDG=targPDG; // Remenber it for error message + G4int nHadrons=projHadrons.size(); // A#of hadrons in the input Vector #ifdef debug - G4cout<<">>>>>>G4QE::Const: Called targPDG="<<targPDG<<", nInpHadr="<<nHadrons<<G4endl; + G4cout<<">>>>>>G4QE::Const: Called targPDG="<<targPDG<<", nInpHadr="<<nHadrons<<G4endl; #endif - if(nHadrons<1 || targPDG==90000000) // No projectile Hadrons or no target Nucleus - { - G4cout<<"---Warning---G4QEnv::Const:a#ofINPHadr="<<nHadrons<<",tPDG="<<targPDG<<G4endl; - //throw G4QException("***G4QEnvironment: There is no one projectile or vacuum target"); - if(nHadrons) // The projectiles are copied to the output + if(nHadrons<1 || targPDG==90000000) // No projectile Hadrons or no target Nucleus + { + G4cout<<"---Warning---G4QEnv::Const:a#ofINPHadr="<<nHadrons<<",tPDG="<<targPDG<<G4endl; + //throw G4QException("***G4QEnvironment: There is no one projectile or vacuum target"); + if(nHadrons) // The projectiles are copied to the output { - for(G4int ih=0; ih<nHadrons; ih++) - { - G4QHadron* curQH = new G4QHadron(projHadrons[ih]); + for(G4int ih=0; ih<nHadrons; ih++) + { + G4QHadron* curQH = new G4QHadron(projHadrons[ih]); #ifdef pdebug - G4cout<<"*G4QE::Const:iH#"<<ih<<","<<curQH->GetQC()<<curQH->Get4Momentum()<<G4endl; + G4cout<<"*G4QE::Const:iH#"<<ih<<","<<curQH->GetQC()<<curQH->Get4Momentum()<<G4endl; #endif - theQHadrons.push_back(curQH); // (delete equivalent) - curQH = new G4QHadron(projHadrons[ih]); // ... to remember - theProjectiles.push_back(curQH); // Remenber it for the error message - } + theQHadrons.push_back(curQH); // (delete equivalent) + curQH = new G4QHadron(projHadrons[ih]); // ... to remember + theProjectiles.push_back(curQH); // Remenber it for the error message + } } - else if(targPDG!=90000000) // No projHadrons,fill targetNucleus to output - { - G4QHadron* curQH = new G4QHadron(targPDG); + else if(targPDG!=90000000) // No projHadrons,fill targetNucleus to output + { + G4QHadron* curQH = new G4QHadron(targPDG); #ifdef pdebug - G4cout<<"**G4QE::Const:No iHad,eH="<<curQH->GetQC()<<curQH->Get4Momentum()<<G4endl; + G4cout<<"**G4QE::Const:No iHad,eH="<<curQH->GetQC()<<curQH->Get4Momentum()<<G4endl; #endif - theQHadrons.push_back(curQH); // (delete equivalent) - } - if (nHadrons<0) G4cout<<"**G4QE::Const:NH="<<nHadrons<<" < 0 !"<<G4endl; - return; - } - G4QPDGCode targQPDG(targPDG); + theQHadrons.push_back(curQH); // (delete equivalent) + } + if (nHadrons<0) G4cout<<"**G4QE::Const:NH="<<nHadrons<<" < 0 !"<<G4endl; + return; + } + G4QPDGCode targQPDG(targPDG); #ifdef pdebug - G4cout<<"G4QE::C:targQPDG="<<targQPDG<<G4endl; + G4cout<<"G4QE::C:targQPDG="<<targQPDG<<G4endl; #endif - G4int targA=targQPDG.GetBaryNum(); - G4double targM=targQPDG.GetMass(); - totCharge=targQPDG.GetCharge(); - totBaryoN=targA; - tot4Mom=G4LorentzVector(0.,0.,0.,targM); - // === Print out of the input information at Creation time & tot 4-mom Calculation ====== + G4int targA=targQPDG.GetBaryNum(); + G4double targM=targQPDG.GetMass(); + totCharge=targQPDG.GetCharge(); + totBaryoN=targA; + tot4Mom=G4LorentzVector(0.,0.,0.,targM); + // === Print out of the input information at Creation time & tot 4-mom Calculation ====== #ifdef pdebug - G4cout<<"G4QE::C:PDG="<<targPDG<<",C="<<totCharge<<",M="<<targM<<",n="<<nHadrons<<G4endl; + G4cout<<"G4QE::C:PDG="<<targPDG<<",C="<<totCharge<<",M="<<targM<<",n="<<nHadrons<<G4endl; #endif - for(G4int ipr=0; ipr<nHadrons; ipr++)// LOOP is used for the tot4Mom calc. & for printing - { - G4QHadron* prHadr = projHadrons[ipr]; - G4QHadron* curQH = new G4QHadron(prHadr);// Remenber it for _ - theProjectiles.push_back(curQH); // the error message - G4LorentzVector h4Mom = prHadr->Get4Momentum(); - tot4Mom += h4Mom; - totCharge += prHadr->GetCharge(); - totBaryoN += prHadr->GetBaryonNumber(); + for(G4int ipr=0; ipr<nHadrons; ipr++)// LOOP is used for the tot4Mom calc. & for printing + { + G4QHadron* prHadr = projHadrons[ipr]; + G4QHadron* curQH = new G4QHadron(prHadr);// Remenber it for _ + theProjectiles.push_back(curQH); // the error message + G4LorentzVector h4Mom = prHadr->Get4Momentum(); + tot4Mom += h4Mom; + totCharge += prHadr->GetCharge(); + totBaryoN += prHadr->GetBaryonNumber(); #ifdef pdebug - G4int hPDG = prHadr->GetPDGCode(); - G4int hNFrag= prHadr->GetNFragments(); - G4QContent hQC = prHadr->GetQC(); - G4cout<<"G4QE::C:#"<<ipr<<",PDG="<<hPDG<<hQC<<",4M="<<h4Mom<<",hNFr="<<hNFrag<<G4endl; + G4int hPDG = prHadr->GetPDGCode(); + G4int hNFrag= prHadr->GetNFragments(); + G4QContent hQC = prHadr->GetQC(); + G4cout<<"G4QE::C:#"<<ipr<<",PDG="<<hPDG<<hQC<<",4M="<<h4Mom<<",hNFr="<<hNFrag<<G4endl; #endif - } + } #ifdef pdebug - G4cout<<"G4QEnv::Const:tC="<<totCharge<<",tB="<<totBaryoN<<",tot4M="<<tot4Mom<<G4endl; + G4cout<<"G4QEnv::Const:tC="<<totCharge<<",tB="<<totBaryoN<<",tot4M="<<tot4Mom<<G4endl; #endif #ifdef pdebug - G4cout<<"G4QEnv::Const: ----> tC="<<totCharge<<",tB="<<totBaryoN<<G4endl; + G4cout<<"G4QEnv::Const: ----> tC="<<totCharge<<",tB="<<totBaryoN<<G4endl; #endif - G4int nP=theWorld->GetQPEntries(); // A#of init'ed particles in CHIPS World - G4int nCl=nP-90; // A#of init'ed clusters in CHIPS World + G4int nP=theWorld->GetQPEntries(); // A#of init'ed particles in CHIPS World + G4int nCl=nP-90; // A#of init'ed clusters in CHIPS World #ifdef pdebug - G4cout<<"G4QEnv:Const:Before NCI:n="<<nP<<",F="<<projHadrons[0]->GetNFragments()<<",tC=" - <<totCharge<<",tB="<<totBaryoN<<G4endl; + G4cout<<"G4QEnv:Const:Before NCI:n="<<nP<<",F="<<projHadrons[0]->GetNFragments()<<",tC=" + <<totCharge<<",tB="<<totBaryoN<<G4endl; #endif - InitClustersVector(nCl,targA); // Init Clusters as Particles (to interact) + InitClustersVector(nCl,targA); // Init Clusters as Particles (to interact) #ifdef pdebug - G4cout<<"G4QEnv::Const:NucClust,n="<<nCl<<",F="<<projHadrons[0]->GetNFragments()<<",tC=" - <<totCharge<<",tB="<<totBaryoN<<G4endl; + G4cout<<"G4QEnv::Const:NucClust,n="<<nCl<<",F="<<projHadrons[0]->GetNFragments()<<",tC=" + <<totCharge<<",tB="<<totBaryoN<<G4endl; #endif - if(targPDG>80000000) // ==> Nuclear target (including NUCPDG) - { - theEnvironment.InitByPDG(targPDG); // Create nuclear environment + if(targPDG>80000000) // ==> Nuclear target (including NUCPDG) + { + theEnvironment.InitByPDG(targPDG); // Create nuclear environment #ifdef pdebug - G4cout<<"G4QEnv::Const:nH="<<nHadrons<<",PDG="<<projHadrons[0]->GetPDGCode()<<",tC=" - <<totCharge<<",tB="<<totBaryoN<<G4endl; + G4cout<<"G4QEnv::Const:nH="<<nHadrons<<",PDG="<<projHadrons[0]->GetPDGCode()<<",tC=" + <<totCharge<<",tB="<<totBaryoN<<G4endl; #endif - if(nHadrons==1) + if(nHadrons==1) { - G4QHadron* opHad=projHadrons[0]; - G4int opPDG=opHad->GetPDGCode(); + G4QHadron* opHad=projHadrons[0]; + G4int opPDG=opHad->GetPDGCode(); #ifdef pdebug - G4cout<<"G4QEnviron::Constructor: *** Only one input hadron*** PDG="<<opPDG<<G4endl; + G4cout<<"G4QEnviron::Constructor: *** Only one input hadron*** PDG="<<opPDG<<G4endl; #endif - if(opPDG==22) // *** Check photon's NuclearSplitThreshold + if(opPDG==22) // *** Check photon's NuclearSplitThreshold { - G4double exMass=tot4Mom.m(); + G4double exMass=tot4Mom.m(); #ifdef pdebug - G4cout<<"G4QEnvironment::Const: exM="<<exMass-targM<<" > mPi0 ?"<<G4endl; + G4cout<<"G4QEnvironment::Const: exM="<<exMass-targM<<" > mPi0 ?"<<G4endl; #endif - if(exMass<targM+135.977) // Nucleus is below the pion production threshold + if(exMass<targM+135.977) // Nucleus is below the pion production threshold { - G4QNucleus exEnviron(tot4Mom,targPDG); - // @@ One can put here the pbpt= (M.K.) @@ What about d,t,alpha splitting? - if(targM>999.&&!exEnviron.SplitBaryon())//Nucleus is below SplitFragmentThreshold + G4QNucleus exEnviron(tot4Mom,targPDG); + // @@ One can put here the pbpt= (M.K.) @@ What about d,t,alpha splitting? + if(targM>999.&&!exEnviron.SplitBaryon())//Nucleus is below SplitFragmentThreshold { #ifdef pdebug - G4cout<<"G4QEnv::Const:Photon's added to Output, Env="<<theEnvironment<<G4endl; + G4cout<<"G4QEnv::Const:Photon's added to Output, Env="<<theEnvironment<<G4endl; #endif - G4QHadron* photon = new G4QHadron(opHad); // Fill projPhoton to Output + G4QHadron* photon = new G4QHadron(opHad); // Fill projPhoton to Output #ifdef pdebug - G4cout<<"**G4QE::Const:Phot="<<photon->GetQC()<<photon->Get4Momentum()<<G4endl; + G4cout<<"**G4QE::Const:Phot="<<photon->GetQC()<<photon->Get4Momentum()<<G4endl; #endif - theQHadrons.push_back(photon); // (delete equivalent) - return; + theQHadrons.push_back(photon); // (delete equivalent) + return; } - else if(targM<=999.) // Target is a nucleon + else if(targM<=999.) // Target is a nucleon { - G4LorentzVector prot4m(0.,0.,0.,targM); // Prototype of secondary proton 4mom - G4LorentzVector gam4m(0.,0.,0.,0.); // Prototype for secondary gamma 4mom - if(!G4QHadron(tot4Mom).DecayIn2(prot4m,gam4m)) - { + G4LorentzVector prot4m(0.,0.,0.,targM); // Prototype of secondary proton 4mom + G4LorentzVector gam4m(0.,0.,0.,0.); // Prototype for secondary gamma 4mom + if(!G4QHadron(tot4Mom).DecayIn2(prot4m,gam4m)) + { #ifdef pdebug - G4cout<<"*War*G4QEnv::Const:(P)Photon->Output, Env="<<theEnvironment<<G4endl; + G4cout<<"*War*G4QEnv::Const:(P)Photon->Output, Env="<<theEnvironment<<G4endl; #endif - G4QHadron* photon = new G4QHadron(opHad); // Fill projPhoton to Output + G4QHadron* photon = new G4QHadron(opHad); // Fill projPhoton to Output #ifdef pdebug - G4cout<<"**G4QE::Const:Ph="<<photon->GetQC()<<photon->Get4Momentum()<<G4endl; + G4cout<<"**G4QE::Const:Ph="<<photon->GetQC()<<photon->Get4Momentum()<<G4endl; #endif - theQHadrons.push_back(photon); // (delete equivalent) - return; - } - G4QHadron* proton = new G4QHadron(targPDG,prot4m); // Fill tgProton to Output - theQHadrons.push_back(proton); // (delete equivalent) - G4QHadron* photon = new G4QHadron(22,gam4m); // Fill prPhoton to Output - theQHadrons.push_back(photon); // (delete equivalent) - theEnvironment.InitByPDG(90000000); // Create nuclear environment + theQHadrons.push_back(photon); // (delete equivalent) + return; + } + G4QHadron* proton = new G4QHadron(targPDG,prot4m); // Fill tgProton to Output + theQHadrons.push_back(proton); // (delete equivalent) + G4QHadron* photon = new G4QHadron(22,gam4m); // Fill prPhoton to Output + theQHadrons.push_back(photon); // (delete equivalent) + theEnvironment.InitByPDG(90000000); // Create nuclear environment #ifdef pdebug - G4cout<<"G4QEnv::Const:Fill gamma and N from gam+N"<<targPDG<<prot4m<<G4endl; + G4cout<<"G4QEnv::Const:Fill gamma and N from gam+N"<<targPDG<<prot4m<<G4endl; #endif - return; - } - } - } - else if(opPDG==13 || opPDG==15) + return; + } + } + } + else if(opPDG==13 || opPDG==15) { - G4int nuPDG=14; - if(opPDG==15) nuPDG=16; + G4int nuPDG=14; + if(opPDG==15) nuPDG=16; G4LorentzVector mu4m=opHad->Get4Momentum(); - //G4double qpen=-180.*log(G4UniformRand()); // Energy of target-quark-parton(T=180) - G4double qpen=465.*sqrt(sqrt(G4UniformRand())); // UniformDistr for 3-q nucleon - G4double qpct=2*G4UniformRand()-1.; // Cos(thet) of target-quark-parton - G4double qpst=sqrt(1.-qpct*qpct); // Sin(theta) of target-quark-parton - G4double qppt=qpen*qpst; // PT of target-quark-parton - G4double qphi=twopi*G4UniformRand(); // Phi of target-quark-parton - G4LorentzVector qi4m(qppt*sin(qphi),qppt*cos(qphi),qpen*qpct,qpen); // quark-parton - G4LorentzVector qt4m=mu4m+qi4m; // Total 4mom (iniQP+lepton) - G4LorentzVector nu4m(0.,0.,0.,0.); // Prototype of secondary neutrino 4mom - G4LorentzVector qf4m(0.,0.,0.,0.); // Prototype for secondary quark-parton - G4QContent targQC=targQPDG.GetQuarkContent(); // QC of the target nucleus (local!) - targQC+=G4QContent(1,0,0,0,1,0); // Make iso-shift with fake pi- is added - G4LorentzVector fn4m=G4LorentzVector(0.,0.,0.,0.); // Prototype of the residual 4M - G4QNucleus fnN(targQC,fn4m); // Define the final state nucleus - G4double fnm=fnN.GetMZNS(); // GS Mass of the final state nucleus - //G4QContent resiQC=targQC-neutQC; // QC of resid nucleus (-neutron) - //G4QNucleus rsN(resiQC,fn4m); // Define the final state nucleus - //G4double rsm=rsN.GetMZNS()+mNeut; // GS Mass of residual nucleus w/o neutron - G4double tm=0.; // Prototype of RealMass of the final nucleus - G4LorentzVector tg4m=G4LorentzVector(0.,0.,0.,targM); // 4mom of all target nucleus - G4LorentzVector fd4m=tg4m-qi4m; // 4mom of the residual coloured nuclear sys. -#ifdef pdebug - //G4cout<<">>>G4QEnv::Const:rM="<<rsm<<",fM="<<fnm<<",tM="<<targM<<G4endl; - G4cout<<"G4QEnvironment::Const:mu4M="<<mu4m<<",t4M="<<qt4m<<",tgQP="<<qi4m<<G4endl; + //G4double qpen=-180.*log(G4UniformRand()); // Energy of target-quark-parton(T=180) + G4double qpen=465.*sqrt(sqrt(G4UniformRand())); // UniformDistr for 3-q nucleon + G4double qpct=2*G4UniformRand()-1.; // Cos(thet) of target-quark-parton + G4double qpst=sqrt(1.-qpct*qpct); // Sin(theta) of target-quark-parton + G4double qppt=qpen*qpst; // PT of target-quark-parton + G4double qphi=twopi*G4UniformRand(); // Phi of target-quark-parton + G4LorentzVector qi4m(qppt*sin(qphi),qppt*cos(qphi),qpen*qpct,qpen); // quark-parton + G4LorentzVector qt4m=mu4m+qi4m; // Total 4mom (iniQP+lepton) + G4LorentzVector nu4m(0.,0.,0.,0.); // Prototype of secondary neutrino 4mom + G4LorentzVector qf4m(0.,0.,0.,0.); // Prototype for secondary quark-parton + G4QContent targQC=targQPDG.GetQuarkContent(); // QC of the target nucleus (local!) + targQC+=G4QContent(1,0,0,0,1,0); // Make iso-shift with fake pi- is added + G4LorentzVector fn4m=G4LorentzVector(0.,0.,0.,0.); // Prototype of the residual 4M + G4QNucleus fnN(targQC,fn4m); // Define the final state nucleus + G4double fnm=fnN.GetMZNS(); // GS Mass of the final state nucleus + //G4QContent resiQC=targQC-neutQC; // QC of resid nucleus (-neutron) + //G4QNucleus rsN(resiQC,fn4m); // Define the final state nucleus + //G4double rsm=rsN.GetMZNS()+mNeut; // GS Mass of residual nucleus w/o neutron + G4double tm=0.; // Prototype of RealMass of the final nucleus + G4LorentzVector tg4m=G4LorentzVector(0.,0.,0.,targM); // 4mom of all target nucleus + G4LorentzVector fd4m=tg4m-qi4m; // 4mom of the residual coloured nuclear sys. +#ifdef pdebug + //G4cout<<">>>G4QEnv::Const:rM="<<rsm<<",fM="<<fnm<<",tM="<<targM<<G4endl; + G4cout<<"G4QEnvironment::Const:mu4M="<<mu4m<<",t4M="<<qt4m<<",tgQP="<<qi4m<<G4endl; #endif - while (tm<=fnm) - { - if(!G4QHadron(qt4m).DecayIn2(nu4m,qf4m)) - { - G4cout<<"***G4QE::Constr:Muon error (1) 4M="<<mu4m<<". Fill as it is."<<G4endl; - G4QHadron* lepton = new G4QHadron(opHad); // Fill projMuon to Output - theQHadrons.push_back(lepton); // (delete equivalent) - return; - } + while (tm<=fnm) + { + if(!G4QHadron(qt4m).DecayIn2(nu4m,qf4m)) + { + G4cout<<"***G4QE::Constr:Muon error (1) 4M="<<mu4m<<". Fill as it is."<<G4endl; + G4QHadron* lepton = new G4QHadron(opHad); // Fill projMuon to Output + theQHadrons.push_back(lepton); // (delete equivalent) + return; + } #ifdef mudebug - G4cout<<"G4QEnv::Const:i="<<qi4m<<",t="<<qt4m<<"->n="<<nu4m<<"+q="<<qf4m<<G4endl; + G4cout<<"G4QEnv::Const:i="<<qi4m<<",t="<<qt4m<<"->n="<<nu4m<<"+q="<<qf4m<<G4endl; #endif - fn4m=fd4m+qf4m; - tm=fn4m.m(); // Real mass of the final nucleus + fn4m=fd4m+qf4m; + tm=fn4m.m(); // Real mass of the final nucleus #ifdef mudebug - G4cout<<"--G4QEnv::Const:M="<<tm<<",GSM=="<<fnm<<G4endl; + G4cout<<"--G4QEnv::Const:M="<<tm<<",GSM=="<<fnm<<G4endl; #endif } fnN.Set4Momentum(fn4m); - // (mu,q->nu,q) reaction succeded and Neutrino can be pushed to Output - G4QHadron* neutrino = 0; // NeutrinoPrototype to be filled to Output + // (mu,q->nu,q) reaction succeded and Neutrino can be pushed to Output + G4QHadron* neutrino = 0; // NeutrinoPrototype to be filled to Output #ifdef mudebug - G4cout<<"G4QEnv::Const:fM="<<tm<<fn4m<<",GSM="<<fnm<<G4endl; + G4cout<<"G4QEnv::Const:fM="<<tm<<fn4m<<",GSM="<<fnm<<G4endl; #endif - if(tm<fnm) // Final Nucleus is below the GS threshold + if(tm<fnm) // Final Nucleus is below the GS threshold { - qf4m=G4LorentzVector(0.,0.,0.,fnm); // Final nucleus 4M for the final decay - qt4m=tg4m+mu4m; - if(!G4QHadron(qt4m).DecayIn2(nu4m,qf4m)) // Decay in Nucleus+nu_mu - { - G4cout<<"***G4QE::Constr:Muon error (2) 4M="<<mu4m<<". Fill as it is."<<G4endl; - G4QHadron* muon = new G4QHadron(opHad); // Fill projMuon to Output - theQHadrons.push_back(muon); // (delete equivalent) - return; - } - G4QHadron* fnuc = new G4QHadron(targQC,qf4m); // Fill Final Nucleus to Output - //theQHadrons.push_back(fnuc); // (delete equivalent) - EvaporateResidual(fnuc); // Try to evaporate residual (del. equiv.) - neutrino = new G4QHadron(nuPDG,nu4m);// Fill Neutrino to Output - theEnvironment.InitByPDG(90000000); // Create nuclear environment -#ifdef pdebug - G4cout<<"G4QEnv::Const:Fill neutrino (1) "<<nuPDG<<nu4m<<G4endl; + qf4m=G4LorentzVector(0.,0.,0.,fnm); // Final nucleus 4M for the final decay + qt4m=tg4m+mu4m; + if(!G4QHadron(qt4m).DecayIn2(nu4m,qf4m)) // Decay in Nucleus+nu_mu + { + G4cout<<"***G4QE::Constr:Muon error (2) 4M="<<mu4m<<". Fill as it is."<<G4endl; + G4QHadron* muon = new G4QHadron(opHad); // Fill projMuon to Output + theQHadrons.push_back(muon); // (delete equivalent) + return; + } + G4QHadron* fnuc = new G4QHadron(targQC,qf4m); // Fill Final Nucleus to Output + //theQHadrons.push_back(fnuc); // (delete equivalent) + EvaporateResidual(fnuc); // Try to evaporate residual (del. equiv.) + neutrino = new G4QHadron(nuPDG,nu4m);// Fill Neutrino to Output + theEnvironment.InitByPDG(90000000); // Create nuclear environment +#ifdef pdebug + G4cout<<"G4QEnv::Const:Fill neutrino (1) "<<nuPDG<<nu4m<<G4endl; #endif - theQHadrons.push_back(neutrino); // (delete equivalent) - return; - } - neutrino = new G4QHadron(nuPDG,nu4m); // Fill Neutrino to Output + theQHadrons.push_back(neutrino); // (delete equivalent) + return; + } + neutrino = new G4QHadron(nuPDG,nu4m); // Fill Neutrino to Output #ifdef pdebug - G4cout<<"G4QEnv::Const:Fill neutrino (2) "<<nuPDG<<nu4m<<G4endl; + G4cout<<"G4QEnv::Const:Fill neutrino (2) "<<nuPDG<<nu4m<<G4endl; #endif - theQHadrons.push_back(neutrino); // (delete equivalent) - if(tm<fnm+135.98) // FinalNucleus is below thePionThreshold(HE) + theQHadrons.push_back(neutrino); // (delete equivalent) + if(tm<fnm+135.98) // FinalNucleus is below thePionThreshold(HE) { - if(!fnN.SplitBaryon()) // Final Nucleus is below the splittingFragmentThreshold + if(!fnN.SplitBaryon()) // Final Nucleus is below the splittingFragmentThreshold { #ifdef mudebug - G4cout<<"G4QEnv::Const: impossible to split nucleon after mu->nu"<<G4endl; + G4cout<<"G4QEnv::Const: impossible to split nucleon after mu->nu"<<G4endl; #endif - G4LorentzVector ga4m(0.,0.,0.,0.); - qf4m=G4LorentzVector(0.,0.,0.,fnm);// Final nucleus 4M for the final decay - if(!G4QHadron(fn4m).DecayIn2(ga4m,qf4m)) // Decay in Nucleus+photon - { - G4cout<<"***G4QE::Constr:LepCapError(3),M="<<fn4m.m()<<"<"<<fnm<<G4endl; - G4QHadron* resid = new G4QHadron(targQC,qt4m); // Fill ResidNucleus to Output - theQHadrons.push_back(resid); // (delete equivalent) - theEnvironment.InitByPDG(90000000);// Create nuclear environment - return; - } - G4QHadron* photon = new G4QHadron(22,ga4m); // Fill projPhoton to Output -#ifdef pdebug - G4cout<<"G4QEnv::Const:Fill photon "<<ga4m<<G4endl; + G4LorentzVector ga4m(0.,0.,0.,0.); + qf4m=G4LorentzVector(0.,0.,0.,fnm);// Final nucleus 4M for the final decay + if(!G4QHadron(fn4m).DecayIn2(ga4m,qf4m)) // Decay in Nucleus+photon + { + G4cout<<"***G4QE::Constr:LepCapError(3),M="<<fn4m.m()<<"<"<<fnm<<G4endl; + G4QHadron* resid = new G4QHadron(targQC,qt4m); // Fill ResidNucleus to Output + theQHadrons.push_back(resid); // (delete equivalent) + theEnvironment.InitByPDG(90000000);// Create nuclear environment + return; + } + G4QHadron* photon = new G4QHadron(22,ga4m); // Fill projPhoton to Output +#ifdef pdebug + G4cout<<"G4QEnv::Const:Fill photon "<<ga4m<<G4endl; #endif - theQHadrons.push_back(photon); // (delete equivalent) - G4QHadron* fnuc = new G4QHadron(targQC,qf4m); // Fill Final Nucleus to Output + theQHadrons.push_back(photon); // (delete equivalent) + G4QHadron* fnuc = new G4QHadron(targQC,qf4m); // Fill Final Nucleus to Output #ifdef pdebug - G4cout<<"G4QEnv::Const:Fill target "<<targQC<<qf4m<<" in any form"<<G4endl; + G4cout<<"G4QEnv::Const:Fill target "<<targQC<<qf4m<<" in any form"<<G4endl; #endif - EvaporateResidual(fnuc); // Try to evaporate residual (del. equiv.) - theEnvironment.InitByPDG(90000000);// Create nuclear environment - return; + EvaporateResidual(fnuc); // Try to evaporate residual (del. equiv.) + theEnvironment.InitByPDG(90000000);// Create nuclear environment + return; } } - // At this poin it is possible to convert mu- to pi- - fn4m=qf4m-qi4m; - opHad->SetQPDG(pimQPDG); //Convert (mu-)u->d to (virt pi-)u->d capture - fake=false; // normal pi- for q-muon scattering - //fake=true; // fake pi- for q-muon scattering ***** - //if(G4UniformRand()>.5) fake=false; // normal pi- for q-muon scattering ***** - opHad->Set4Momentum(fn4m); - } - } - for(G4int ih=0; ih<nHadrons; ih++) // ==> The main LOOP over projQHadrons - { - G4QHadron* curHadr=projHadrons[ih]; // Pointer to current projectile Hadron - G4int hNFrag = curHadr->GetNFragments();// #0 means intermediate (skip) - G4LorentzVector ch4M=curHadr->Get4Momentum(); // 4-momenyum of the current projectile -#ifdef pdebug - G4cout<<"G4QE:C:"<<ih<<",F="<<hNFrag<<",0="<<projHadrons[0]->GetNFragments()<<G4endl; -#endif - if(!hNFrag&&ch4M.e()>0.) // => "Final hadron" case + // At this poin it is possible to convert mu- to pi- + fn4m=qf4m-qi4m; + opHad->SetQPDG(pimQPDG); //Convert (mu-)u->d to (virt pi-)u->d capture + fake=false; // normal pi- for q-muon scattering + //fake=true; // fake pi- for q-muon scattering ***** + //if(G4UniformRand()>.5) fake=false; // normal pi- for q-muon scattering ***** + opHad->Set4Momentum(fn4m); + } + } + for(G4int ih=0; ih<nHadrons; ih++) // ==> The main LOOP over projQHadrons + { + G4QHadron* curHadr=projHadrons[ih]; // Pointer to current projectile Hadron + G4int hNFrag = curHadr->GetNFragments();// #0 means intermediate (skip) + G4LorentzVector ch4M=curHadr->Get4Momentum(); // 4-momenyum of the current projectile +#ifdef pdebug + G4cout<<"G4QE:C:"<<ih<<",F="<<hNFrag<<",0="<<projHadrons[0]->GetNFragments()<<G4endl; +#endif + if(!hNFrag&&ch4M.e()>0.) // => "Final hadron" case { - G4int envPDG=theEnvironment.GetPDG(); - if(envPDG==90000000||(theEnvironment.Get4Momentum().m2())<1.) // ==>"Vacuum" - { - G4int hPDG = curHadr->GetPDGCode();// A PDG Code of the projQHadron - //if(!hPDG||hPDG==10) // Check for the validity of the QHadron (@@ 10 OK?) - if(!hPDG) // Check for the validity of the QHadron - { - //G4cerr<<"--Warning--G4QEnvironment::Constructor: wrong PDG("<<ih<<")="<<hPDG - // <<", HQC="<<curHadr->GetQC()<<", HM="<<curHadr->GetMass()<<G4endl; - //throw G4QException("***G4QEnvironment::Constructor: theInputHadron is Chip"); - } - else - { - G4int hQ = curHadr->GetQCode(); // One more check for valid of the QHadron - if(hQ<0) + G4int envPDG=theEnvironment.GetPDG(); + if(envPDG==90000000||(theEnvironment.Get4Momentum().m2())<1.) // ==>"Vacuum" + { + G4int hPDG = curHadr->GetPDGCode();// A PDG Code of the projQHadron + //if(!hPDG||hPDG==10) // Check for the validity of the QHadron (@@ 10 OK?) + if(!hPDG) // Check for the validity of the QHadron + { + //G4cerr<<"--Warning--G4QEnvironment::Constructor: wrong PDG("<<ih<<")="<<hPDG + // <<", HQC="<<curHadr->GetQC()<<", HM="<<curHadr->GetMass()<<G4endl; + //throw G4QException("***G4QEnvironment::Constructor: theInputHadron is Chip"); + } + else + { + G4int hQ = curHadr->GetQCode(); // One more check for valid of the QHadron + if(hQ<0) { - //G4cerr<<"--Warning--G4QEnv::Constructor:Q<0, PDG=("<<ih<<")"<<hPDG<<G4endl; - //throw G4QException("***G4QEnvironment::Constructor:theInputHadron is bad"); + //G4cerr<<"--Warning--G4QEnv::Constructor:Q<0, PDG=("<<ih<<")"<<hPDG<<G4endl; + //throw G4QException("***G4QEnvironment::Constructor:theInputHadron is bad"); } - else - { - G4QHadron* newHadr = new G4QHadron(curHadr); -#ifdef pdebug - G4cout<<"*G4QE::Const:H="<<newHadr->GetQC()<<newHadr->Get4Momentum()<<G4endl; -#endif - theQHadrons.push_back(newHadr); // Fill existing hadron (delete equivalent) -#ifdef pdebug - G4cout<<"G4QEnviron::Constructor: Fill h="<<hPDG<<ch4M<<G4endl; - for(unsigned ipo=0; ipo<theQHadrons.size(); ipo++) // LOOP just for printing - { - G4int hPDG = theQHadrons[ipo]->GetPDGCode(); - G4LorentzVector h4Mom = theQHadrons[ipo]->Get4Momentum(); - G4int hNFrag= theQHadrons[ipo]->GetNFragments(); - G4QContent hQC = theQHadrons[ipo]->GetQC(); - G4cout<<"h#"<<ipo<<": "<<hPDG<<hQC<<",4M="<<h4Mom<<",nFr="<<hNFrag<<G4endl; - } -#endif - } // End of Q-Code check - } // End of proper PDG for i-th Hadron - } - else // Nuclear Environment still exists + else + { + G4QHadron* newHadr = new G4QHadron(curHadr); +#ifdef pdebug + G4cout<<"*G4QE::Const:H="<<newHadr->GetQC()<<newHadr->Get4Momentum()<<G4endl; +#endif + theQHadrons.push_back(newHadr); // Fill existing hadron (delete equivalent) +#ifdef pdebug + G4cout<<"G4QEnviron::Constructor: Fill h="<<hPDG<<ch4M<<G4endl; + for(unsigned ipo=0; ipo<theQHadrons.size(); ipo++) // LOOP just for printing + { + G4int hPDG = theQHadrons[ipo]->GetPDGCode(); + G4LorentzVector h4Mom = theQHadrons[ipo]->Get4Momentum(); + G4int hNFrag= theQHadrons[ipo]->GetNFragments(); + G4QContent hQC = theQHadrons[ipo]->GetQC(); + G4cout<<"h#"<<ipo<<": "<<hPDG<<hQC<<",4M="<<h4Mom<<",nFr="<<hNFrag<<G4endl; + } +#endif + } // End of Q-Code check + } // End of proper PDG for i-th Hadron + } + else // Nuclear Environment still exists { - G4QContent hQC = curHadr->GetQC(); + G4QContent hQC = curHadr->GetQC(); #ifdef pdebug - G4cout<<"G4QE::Const:CreateQuasm, 4M="<<ch4M<<",QC="<<hQC<<",E="<<envPDG<<",tC=" - <<totCharge<<",tB="<<totBaryoN<<G4endl; + G4cout<<"G4QE::Const:CreateQuasm, 4M="<<ch4M<<",QC="<<hQC<<",E="<<envPDG<<",tC=" + <<totCharge<<",tB="<<totBaryoN<<G4endl; #endif - CreateQuasmon(hQC, ch4M,fake); + CreateQuasmon(hQC, ch4M,fake); } // End of Existing Nuclear Environment case } // End of final hadron case - } // End of the LOOP over input hadrons - } // End of nuclear target case (including neutron=90000001 & proton=90001000) - else // => "Unique hadron" case - { - // the nuclEnviron is already init'ed as vacuum + get the first hadron for interaction - G4QHadron* curHadr=projHadrons[0]; // Pointer to the firstProjecHadron (checked) - G4int hPDG = curHadr->GetPDGCode(); // A PDG Code of the projQHadron - if(!hPDG||hPDG==10) // Check for the validity of the QHadron - { - G4cout<<"---Warning---G4QEnvironment::Constructor:Vacuum,1st Hadron wrong PDG="<<hPDG - <<", HQC="<<curHadr->GetQC()<<", HM="<<curHadr->GetMass()<<G4endl; - //throw G4QException("***G4QEnvironment::Constructor: Fiest input Hadron is wrong"); - } - else - { - G4int hQ = curHadr->GetQCode(); // One more check for valid of the QHadron - if(hQ<0) + } // End of the LOOP over input hadrons + } // End of nuclear target case (including neutron=90000001 & proton=90001000) + else // => "Unique hadron" case + { + // the nuclEnviron is already init'ed as vacuum + get the first hadron for interaction + G4QHadron* curHadr=projHadrons[0]; // Pointer to the firstProjecHadron (checked) + G4int hPDG = curHadr->GetPDGCode(); // A PDG Code of the projQHadron + if(!hPDG||hPDG==10) // Check for the validity of the QHadron + { + G4cout<<"---Warning---G4QEnvironment::Constructor:Vacuum,1st Hadron wrong PDG="<<hPDG + <<", HQC="<<curHadr->GetQC()<<", HM="<<curHadr->GetMass()<<G4endl; + //throw G4QException("***G4QEnvironment::Constructor: Fiest input Hadron is wrong"); + } + else + { + G4int hQ = curHadr->GetQCode(); // One more check for valid of the QHadron + if(hQ<0) { - G4cout<<"---Warning---G4QEnviron::Constructor:Vacuum,Q<0, 1st HPDG="<<hPDG<<G4endl; - //throw G4QException("***G4QEnvironment::Constructor:theFirstInputHadron's wrong"); + G4cout<<"---Warning---G4QEnviron::Constructor:Vacuum,Q<0, 1st HPDG="<<hPDG<<G4endl; + //throw G4QException("***G4QEnvironment::Constructor:theFirstInputHadron's wrong"); } - else // Now we can get 4Mom & QC of incedent particle - { - G4LorentzVector h4Mom = curHadr->Get4Momentum(); - G4QContent hQC = curHadr->GetQC(); - if(!targPDG||targPDG==10) G4cout<<"G4QEnv::CreateQ; (1) PDG="<<targPDG<<G4endl; - G4QPDGCode tQPDG(targPDG); - G4int tQ = tQPDG.GetQCode(); - if(tQ<0||targPDG==10) + else // Now we can get 4Mom & QC of incedent particle + { + G4LorentzVector h4Mom = curHadr->Get4Momentum(); + G4QContent hQC = curHadr->GetQC(); + if(!targPDG||targPDG==10) G4cout<<"G4QEnv::CreateQ; (1) PDG="<<targPDG<<G4endl; + G4QPDGCode tQPDG(targPDG); + G4int tQ = tQPDG.GetQCode(); + if(tQ<0||targPDG==10) { - G4cout<<"---Warning---G4QEnv::Constructor:TrgQC<0, Chipo?,PDG="<<targPDG<<G4endl; - //throw G4QException("***G4QEnvironment::Constructor: Target is wrong"); + G4cout<<"---Warning---G4QEnv::Constructor:TrgQC<0, Chipo?,PDG="<<targPDG<<G4endl; + //throw G4QException("***G4QEnvironment::Constructor: Target is wrong"); } - else // Now we can create a unique Quasmon + else // Now we can create a unique Quasmon { - h4Mom+=G4LorentzVector(0.,0.,0.,tQPDG.GetMass()); //Projectile + TargetHadron - hQC+=tQPDG.GetQuarkContent(); + h4Mom+=G4LorentzVector(0.,0.,0.,tQPDG.GetMass()); //Projectile + TargetHadron + hQC+=tQPDG.GetQuarkContent(); #ifdef pdebug - G4cout<<"G4QEnv::Const:VacHadrTarg="<<h4Mom<<hQC<<",E="<<theEnvironment<<G4endl; + G4cout<<"G4QEnv::Const:VacHadrTarg="<<h4Mom<<hQC<<",E="<<theEnvironment<<G4endl; #endif - G4Quasmon* curQuasmon = new G4Quasmon(hQC, h4Mom); - theQuasmons.push_back(curQuasmon); // Insert Quasmon or hadron/gamma (del. eq.) + G4Quasmon* curQuasmon = new G4Quasmon(hQC, h4Mom); + theQuasmons.push_back(curQuasmon); // Insert Quasmon or hadron/gamma (del. eq.) } - } // End of Q-Code check - } // End of proper PDG for i-th Hadron - if(nHadrons>1) for(G4int ih=0; ih<nHadrons; ih++) // fill other Hadrons to Output + } // End of Q-Code check + } // End of proper PDG for i-th Hadron + if(nHadrons>1) for(G4int ih=0; ih<nHadrons; ih++) // fill other Hadrons to Output { - G4QHadron* newHadr = new G4QHadron(curHadr); + G4QHadron* newHadr = new G4QHadron(curHadr); #ifdef pdebug - G4cout<<"*G4QE::Const:#"<<ih<<","<<curHadr->GetQC()<<curHadr->Get4Momentum()<<G4endl; + G4cout<<"*G4QE::Const:#"<<ih<<","<<curHadr->GetQC()<<curHadr->Get4Momentum()<<G4endl; #endif - theQHadrons.push_back(newHadr); // Fill existing hadron (delete equivalent) + theQHadrons.push_back(newHadr); // Fill existing hadron (delete equivalent) } - } // End of Unique Hadron target treatment + } // End of Unique Hadron target treatment #ifdef chdebug - G4int finCharge=theEnvironment.GetCharge(); - G4int finBaryoN=theEnvironment.GetA(); - G4int nHad=theQHadrons.size(); - if(nHad) for(G4int ih=0; ih<nHad; ih++) - { - finCharge+=theQHadrons[ih]->GetCharge(); - finBaryoN+=theQHadrons[ih]->GetBaryonNumber(); - } - G4int nQuas=theQuasmons.size(); - if(nQuas) for(G4int iq=0; iq<nQuas; iq++) - { - finCharge+=theQuasmons[iq]->GetCharge(); - finBaryoN+=theQuasmons[iq]->GetBaryonNumber(); - } - if(finCharge!=totCharge || finBaryoN!=totBaryoN) - { - G4cout<<"***G4QEnv::C:tC="<<totCharge<<",C="<<finCharge<<",tB="<<totBaryoN - <<",B="<<finBaryoN<<",E="<<theEnvironment<<G4endl; - if(nHad) for(G4int h=0; h<nHad; h++) - { - G4QHadron* cH = theQHadrons[h]; - G4cout<<"::G4QE::C:h#"<<h<<",QC="<<cH->GetQC()<<",PDG="<<cH->GetPDGCode()<<G4endl; - } - if(nQuas) for(G4int q=0; q<nQuas; q++) - { - G4Quasmon* cQ = theQuasmons[q]; - G4cout<<"::G4QE::C:q#"<<q<<",C="<<cQ->GetCharge()<<",QuarkCon="<<cQ->GetQC()<<G4endl; - } - } + G4int finCharge=theEnvironment.GetCharge(); + G4int finBaryoN=theEnvironment.GetA(); + G4int nHad=theQHadrons.size(); + if(nHad) for(G4int ih=0; ih<nHad; ih++) + { + finCharge+=theQHadrons[ih]->GetCharge(); + finBaryoN+=theQHadrons[ih]->GetBaryonNumber(); + } + G4int nQuas=theQuasmons.size(); + if(nQuas) for(G4int iq=0; iq<nQuas; iq++) + { + finCharge+=theQuasmons[iq]->GetCharge(); + finBaryoN+=theQuasmons[iq]->GetBaryonNumber(); + } + if(finCharge!=totCharge || finBaryoN!=totBaryoN) + { + G4cout<<"***G4QEnv::C:tC="<<totCharge<<",C="<<finCharge<<",tB="<<totBaryoN + <<",B="<<finBaryoN<<",E="<<theEnvironment<<G4endl; + if(nHad) for(G4int h=0; h<nHad; h++) + { + G4QHadron* cH = theQHadrons[h]; + G4cout<<"::G4QE::C:h#"<<h<<",QC="<<cH->GetQC()<<",PDG="<<cH->GetPDGCode()<<G4endl; + } + if(nQuas) for(G4int q=0; q<nQuas; q++) + { + G4Quasmon* cQ = theQuasmons[q]; + G4cout<<"::G4QE::C:q#"<<q<<",C="<<cQ->GetCharge()<<",QuarkCon="<<cQ->GetQC()<<G4endl; + } + } #endif } // End of the G4QEnvironment constructor G4QEnvironment::G4QEnvironment(const G4QEnvironment &right) { - // theQHadrons (Vector) - G4int nQH = right.theQHadrons.size(); - if(nQH) for(G4int ih=0; ih<nQH; ih++) - { - G4QHadron* curQH = new G4QHadron(right.theQHadrons[ih]); -#ifdef pdebug - G4cout<<"G4QE::CopyByVal:cH#"<<ih<<","<<curQH->GetQC()<<curQH->Get4Momentum()<<G4endl; -#endif - theQHadrons.push_back(curQH); // (delete equivalent) - } - // theProjectiles (Vector) - G4int nP = right.theProjectiles.size(); - if(nP) for(G4int ip=0; ip<nP; ip++) - { - G4QHadron* curP = new G4QHadron(right.theProjectiles[ip]); - theProjectiles.push_back(curP); // (delete equivalent) - } - theTargetPDG = right.theTargetPDG; - theWorld = right.theWorld; - nBarClust = right.nBarClust; - f2all = right.f2all; - tot4Mom = right.tot4Mom; - totCharge = right.totCharge; - totBaryoN = right.totBaryoN; + // theQHadrons (Vector) + G4int nQH = right.theQHadrons.size(); + if(nQH) for(G4int ih=0; ih<nQH; ih++) + { + G4QHadron* curQH = new G4QHadron(right.theQHadrons[ih]); +#ifdef pdebug + G4cout<<"G4QE::CopyByVal:cH#"<<ih<<","<<curQH->GetQC()<<curQH->Get4Momentum()<<G4endl; +#endif + theQHadrons.push_back(curQH); // (delete equivalent) + } + // theProjectiles (Vector) + G4int nP = right.theProjectiles.size(); + if(nP) for(G4int ip=0; ip<nP; ip++) + { + G4QHadron* curP = new G4QHadron(right.theProjectiles[ip]); + theProjectiles.push_back(curP); // (delete equivalent) + } + theTargetPDG = right.theTargetPDG; + theWorld = right.theWorld; + nBarClust = right.nBarClust; + f2all = right.f2all; + tot4Mom = right.tot4Mom; + totCharge = right.totCharge; + totBaryoN = right.totBaryoN; - // theQuasmons (Vector) - G4int nQ = right.theQuasmons.size(); - if(nQ) for(G4int iq=0; iq<nQ; iq++) - { - G4Quasmon* curQ = new G4Quasmon(right.theQuasmons[iq]); - theQuasmons.push_back(curQ); // (delete equivalent) - } + // theQuasmons (Vector) + G4int nQ = right.theQuasmons.size(); + if(nQ) for(G4int iq=0; iq<nQ; iq++) + { + G4Quasmon* curQ = new G4Quasmon(right.theQuasmons[iq]); + theQuasmons.push_back(curQ); // (delete equivalent) + } - // theQCandidates (Vector) - G4int nQC = right.theQCandidates.size(); - if(nQC) for(G4int ic=0; ic<nQC; ic++) - { - G4QCandidate* curQC = new G4QCandidate(right.theQCandidates[ic]); - theQCandidates.push_back(curQC); // (delete equivalent) - } + // theQCandidates (Vector) + G4int nQC = right.theQCandidates.size(); + if(nQC) for(G4int ic=0; ic<nQC; ic++) + { + G4QCandidate* curQC = new G4QCandidate(right.theQCandidates[ic]); + theQCandidates.push_back(curQC); // (delete equivalent) + } - theEnvironment = right.theEnvironment; + theEnvironment = right.theEnvironment; } G4QEnvironment::G4QEnvironment(G4QEnvironment* right) { - // theQHadrons (Vector) - G4int nQH = right->theQHadrons.size(); - if(nQH) for(G4int ih=0; ih<nQH; ih++) - { - G4QHadron* curQH = new G4QHadron(right->theQHadrons[ih]); + // theQHadrons (Vector) + G4int nQH = right->theQHadrons.size(); + if(nQH) for(G4int ih=0; ih<nQH; ih++) + { + G4QHadron* curQH = new G4QHadron(right->theQHadrons[ih]); #ifdef pdebug - G4cout<<"G4QE::CopyByPtr:cH#"<<ih<<","<<curQH->GetQC()<<curQH->Get4Momentum()<<G4endl; + G4cout<<"G4QE::CopyByPtr:cH#"<<ih<<","<<curQH->GetQC()<<curQH->Get4Momentum()<<G4endl; #endif - theQHadrons.push_back(curQH); // (delete equivalent) - } + theQHadrons.push_back(curQH); // (delete equivalent) + } - // theProjectiles (Vector) - G4int nP = right->theProjectiles.size(); - if(nP) for(G4int ip=0; ip<nP; ip++) - { - G4QHadron* curP = new G4QHadron(right->theProjectiles[ip]); - theProjectiles.push_back(curP); // (delete equivalent) - } - theTargetPDG = right->theTargetPDG; - theWorld = right->theWorld; - nBarClust = right->nBarClust; - f2all = right->f2all; - tot4Mom = right->tot4Mom; - totCharge = right->totCharge; - totBaryoN = right->totBaryoN; + // theProjectiles (Vector) + G4int nP = right->theProjectiles.size(); + if(nP) for(G4int ip=0; ip<nP; ip++) + { + G4QHadron* curP = new G4QHadron(right->theProjectiles[ip]); + theProjectiles.push_back(curP); // (delete equivalent) + } + theTargetPDG = right->theTargetPDG; + theWorld = right->theWorld; + nBarClust = right->nBarClust; + f2all = right->f2all; + tot4Mom = right->tot4Mom; + totCharge = right->totCharge; + totBaryoN = right->totBaryoN; - // theQuasmons (Vector) - G4int nQ = right->theQuasmons.size(); - if(nQ) for(G4int iq=0; iq<nQ; iq++) - { - G4Quasmon* curQ = new G4Quasmon(right->theQuasmons[iq]); - theQuasmons.push_back(curQ); // (delete equivalent) - } + // theQuasmons (Vector) + G4int nQ = right->theQuasmons.size(); + if(nQ) for(G4int iq=0; iq<nQ; iq++) + { + G4Quasmon* curQ = new G4Quasmon(right->theQuasmons[iq]); + theQuasmons.push_back(curQ); // (delete equivalent) + } - // theQCandidates (Vector) - G4int nQC = right->theQCandidates.size(); - if(nQC) for(G4int ic=0; ic<nQC; ic++) - { - G4QCandidate* curQC = new G4QCandidate(right->theQCandidates[ic]); - theQCandidates.push_back(curQC); // (delete equivalent) - } + // theQCandidates (Vector) + G4int nQC = right->theQCandidates.size(); + if(nQC) for(G4int ic=0; ic<nQC; ic++) + { + G4QCandidate* curQC = new G4QCandidate(right->theQCandidates[ic]); + theQCandidates.push_back(curQC); // (delete equivalent) + } - theEnvironment = right->theEnvironment; + theEnvironment = right->theEnvironment; } G4QEnvironment::~G4QEnvironment() { #ifdef debug - G4cout<<"~G4QEnvironment: before theQCandidates nC="<<theQCandidates.size()<<G4endl; + G4cout<<"~G4QEnvironment: before theQCandidates nC="<<theQCandidates.size()<<G4endl; #endif - for_each(theQCandidates.begin(), theQCandidates.end(), DeleteQCandidate()); + for_each(theQCandidates.begin(), theQCandidates.end(), DeleteQCandidate()); #ifdef debug - G4cout<<"~G4QEnvironment: before theQuasmons nQ="<<theQuasmons.size()<<G4endl; + G4cout<<"~G4QEnvironment: before theQuasmons nQ="<<theQuasmons.size()<<G4endl; #endif - for_each(theQuasmons.begin(), theQuasmons.end(), DeleteQuasmon()); + for_each(theQuasmons.begin(), theQuasmons.end(), DeleteQuasmon()); #ifdef debug - G4cout<<"~G4QEnvironment: before theQHadrons nH="<<theQHadrons.size()<<G4endl; + G4cout<<"~G4QEnvironment: before theQHadrons nH="<<theQHadrons.size()<<G4endl; #endif - for_each(theQHadrons.begin(), theQHadrons.end(), DeleteQHadron()); + for_each(theQHadrons.begin(), theQHadrons.end(), DeleteQHadron()); #ifdef debug - G4cout<<"~G4QEnvironment: before theProjectiles nP="<<theProjectiles.size()<<G4endl; + G4cout<<"~G4QEnvironment: before theProjectiles nP="<<theProjectiles.size()<<G4endl; #endif - for_each(theProjectiles.begin(), theProjectiles.end(), DeleteQHadron()); + for_each(theProjectiles.begin(), theProjectiles.end(), DeleteQHadron()); #ifdef debug - G4cout<<"~G4QEnvironment: === DONE ==="<<G4endl; + G4cout<<"~G4QEnvironment: === DONE ==="<<G4endl; #endif } @@ -620,255 +620,255 @@ void G4QEnvironment::CloseElectromagneticDecays(){ElMaDecays=false;} // Fill the private static parameters void G4QEnvironment::SetParameters(G4double solAn, G4bool efFlag, G4double piThresh, - G4double mpisq, G4double dinum) + G4double mpisq, G4double dinum) {// ====================================================================================== - EnergyFlux=efFlag; // Flag for Energy Flux use instead of Multy Quasmon - SolidAngle=solAn; // Part of Solid Angle to capture secondaries (@@A-dep) - PiPrThresh=piThresh; // Pion Production Threshold for gammas - M2ShiftVir=mpisq; // Shift for M2=-Q2=m_pi^2 of the virtual gamma - DiNuclMass=dinum; // Double Nucleon Mass for virtual normalization + EnergyFlux=efFlag; // Flag for Energy Flux use instead of Multy Quasmon + SolidAngle=solAn; // Part of Solid Angle to capture secondaries (@@A-dep) + PiPrThresh=piThresh; // Pion Production Threshold for gammas + M2ShiftVir=mpisq; // Shift for M2=-Q2=m_pi^2 of the virtual gamma + DiNuclMass=dinum; // Double Nucleon Mass for virtual normalization } const G4QEnvironment& G4QEnvironment::operator=(const G4QEnvironment &right) {// ======================================================================== - if(this != &right) // Beware of self assignment - { - // theQHadrons (Vector) - G4int iQH = theQHadrons.size(); - if(iQH) for(G4int ii=0; ii<iQH; ii++) delete theQHadrons[ii]; - theQHadrons.clear(); - G4int nQH = right.theQHadrons.size(); - if(nQH) for(G4int ih=0; ih<nQH; ih++) - { - G4QHadron* curQH = new G4QHadron(right.theQHadrons[ih]); -#ifdef pdebug - G4cout<<"G4QE::Operator=:c#"<<ih<<","<<curQH->GetQC()<<curQH->Get4Momentum()<<G4endl; -#endif - theQHadrons.push_back(curQH); // (delete equivalent) - } + if(this != &right) // Beware of self assignment + { + // theQHadrons (Vector) + G4int iQH = theQHadrons.size(); + if(iQH) for(G4int ii=0; ii<iQH; ii++) delete theQHadrons[ii]; + theQHadrons.clear(); + G4int nQH = right.theQHadrons.size(); + if(nQH) for(G4int ih=0; ih<nQH; ih++) + { + G4QHadron* curQH = new G4QHadron(right.theQHadrons[ih]); +#ifdef pdebug + G4cout<<"G4QE::Operator=:c#"<<ih<<","<<curQH->GetQC()<<curQH->Get4Momentum()<<G4endl; +#endif + theQHadrons.push_back(curQH); // (delete equivalent) + } - theWorld = right.theWorld; - nBarClust = right.nBarClust; - f2all = right.f2all; + theWorld = right.theWorld; + nBarClust = right.nBarClust; + f2all = right.f2all; - // theQuasmons (Vector) - G4int iQ = theQuasmons.size(); - if(iQ) for(G4int jq=0; jq<iQ; jq++) delete theQuasmons[jq]; - theQuasmons.clear(); - G4int nQ = right.theQuasmons.size(); - if(nQ) for(G4int iq=0; iq<nQ; iq++) - { - G4Quasmon* curQ = new G4Quasmon(right.theQuasmons[iq]); - theQuasmons.push_back(curQ); // (delete equivalent) - } + // theQuasmons (Vector) + G4int iQ = theQuasmons.size(); + if(iQ) for(G4int jq=0; jq<iQ; jq++) delete theQuasmons[jq]; + theQuasmons.clear(); + G4int nQ = right.theQuasmons.size(); + if(nQ) for(G4int iq=0; iq<nQ; iq++) + { + G4Quasmon* curQ = new G4Quasmon(right.theQuasmons[iq]); + theQuasmons.push_back(curQ); // (delete equivalent) + } - // theQCandidates (Vector) - G4int iQC = theQCandidates.size(); - if(iQC) for(G4int jc=0; jc<iQC; jc++) delete theQCandidates[jc]; - theQCandidates.clear(); - G4int nQC = right.theQCandidates.size(); - if(nQC) for(G4int ic=0; ic<nQC; ic++) - { - G4QCandidate* curQC = new G4QCandidate(right.theQCandidates[ic]); - theQCandidates.push_back(curQC); // (delete equivalent) - } + // theQCandidates (Vector) + G4int iQC = theQCandidates.size(); + if(iQC) for(G4int jc=0; jc<iQC; jc++) delete theQCandidates[jc]; + theQCandidates.clear(); + G4int nQC = right.theQCandidates.size(); + if(nQC) for(G4int ic=0; ic<nQC; ic++) + { + G4QCandidate* curQC = new G4QCandidate(right.theQCandidates[ic]); + theQCandidates.push_back(curQC); // (delete equivalent) + } - theEnvironment = right.theEnvironment; - } - return *this; + theEnvironment = right.theEnvironment; + } + return *this; } // Member function for Quasmon Creation & Environment nucleus modification void G4QEnvironment::CreateQuasmon(const G4QContent& projQC, const G4LorentzVector& pro4M, - G4bool fake) + G4bool fake) {//======================================================================================= - static const G4double third=1./3.; - //static const G4double mNeut= G4QPDGCode(2112).GetMass(); - //static const G4double mProt= G4QPDGCode(2212).GetMass(); - //static const G4double mLamb= G4QPDGCode(3122).GetMass(); - static const G4double mPi = G4QPDGCode(211).GetMass(); - static const G4double mPi2 = mPi*mPi; - //static const G4double mMu = G4QPDGCode(13).GetMass(); - //static const G4double mMu2 = mMu*mMu; - //static const G4QContent gamQC(0,0,0,0,0,0); - //static const G4QContent pimQC(1,0,0,0,1,0); - //static const G4QContent pipQC(0,1,0,1,0,0); - static const G4QContent neutQC(2,1,0,0,0,0); - static const G4QContent protQC(1,2,0,0,0,0); - static const G4QContent deutQC(3,3,0,0,0,0); - static const G4QContent lambQC(1,1,1,0,0,0); - static const G4QNucleus vacuum(90000000); - G4QContent valQ(0,0,0,0,0,0); // Prototype of the Quasmon's Quark Content - G4LorentzVector q4Mom(0.,0.,0.,0.); // Prototype of the Quasmon's 4-momentum - nBarClust = 1; // By default only quasi-free nucleons - G4LorentzVector proj4M=pro4M; // Fake equivalence to avoid & const - G4double projE=proj4M.e(); // energy of the projectile - G4int projPDG=projQC.GetSPDGCode(); // Minimum hadron for the projectile QC - if(projE<0.) - { - G4cout<<"*Warning*G4QEnvironment::CreateQuasmon:Epr="<<projE<<"<0,QC="<<projQC<<G4endl; - projE=0.; - proj4M=G4LorentzVector(0.,0.,0.,0.); - } - G4double projM2=proj4M.m2(); // projectile's squared mass (print & v.gamma) - G4int targPDG=theEnvironment.GetPDG();// PDG Code of the target nucleus - if(targPDG>80000000&&targPDG!=90000000&&(theEnvironment.Get4Momentum().m2())>1.)//Nucleus - { - G4double tgMass=theEnvironment.GetMass();// mass of the target (QEnvironment) nucleus -#ifdef pdebug - G4cout<<"G4QEnvironment::CreateQ:Interact "<<projQC<<proj4M<<"(m2="<<projM2<<") + A=" - <<targPDG<<",M="<<tgMass<<",tC="<<totCharge<<",tB="<<totBaryoN<<G4endl; -#endif - G4int envZ=theEnvironment.GetZ(); // A#of protons in the target nucleus - G4int envN=theEnvironment.GetN(); // A#of neutrons in the target nucleus - G4int envS=theEnvironment.GetS(); // A#of lambdas in the target nucleus - G4int envBN=envZ+envN+envS; // A baryon number of the target nucleus - G4int nP =theWorld->GetQPEntries(); // A#of initialized particles in CHIPS World - G4int nCl =nP-90; // A#of initialized clusters in CHIPS World - if(nCl<0) G4cout<<"---Warning---G4QEnv::CreaQ:nP="<<nP<<" for Targ="<<targPDG<<G4endl; - if (nCl<3) nBarClust=1; // Fix the maximum Baryon Number for clusters - else if(nCl<9) nBarClust=2; - else + static const G4double third=1./3.; + //static const G4double mNeut= G4QPDGCode(2112).GetMass(); + //static const G4double mProt= G4QPDGCode(2212).GetMass(); + //static const G4double mLamb= G4QPDGCode(3122).GetMass(); + static const G4double mPi = G4QPDGCode(211).GetMass(); + static const G4double mPi2 = mPi*mPi; + //static const G4double mMu = G4QPDGCode(13).GetMass(); + //static const G4double mMu2 = mMu*mMu; + //static const G4QContent gamQC(0,0,0,0,0,0); + //static const G4QContent pimQC(1,0,0,0,1,0); + //static const G4QContent pipQC(0,1,0,1,0,0); + static const G4QContent neutQC(2,1,0,0,0,0); + static const G4QContent protQC(1,2,0,0,0,0); + static const G4QContent deutQC(3,3,0,0,0,0); + static const G4QContent lambQC(1,1,1,0,0,0); + static const G4QNucleus vacuum(90000000); + G4QContent valQ(0,0,0,0,0,0); // Prototype of the Quasmon's Quark Content + G4LorentzVector q4Mom(0.,0.,0.,0.); // Prototype of the Quasmon's 4-momentum + nBarClust = 1; // By default only quasi-free nucleons + G4LorentzVector proj4M=pro4M; // Fake equivalence to avoid & const + G4double projE=proj4M.e(); // energy of the projectile + G4int projPDG=projQC.GetSPDGCode(); // Minimum hadron for the projectile QC + if(projE<0.) + { + G4cout<<"*Warning*G4QEnvironment::CreateQuasmon:Epr="<<projE<<"<0,QC="<<projQC<<G4endl; + projE=0.; + proj4M=G4LorentzVector(0.,0.,0.,0.); + } + G4double projM2=proj4M.m2(); // projectile's squared mass (print & v.gamma) + G4int targPDG=theEnvironment.GetPDG();// PDG Code of the target nucleus + if(targPDG>80000000&&targPDG!=90000000&&(theEnvironment.Get4Momentum().m2())>1.)//Nucleus + { + G4double tgMass=theEnvironment.GetMass();// mass of the target (QEnvironment) nucleus +#ifdef pdebug + G4cout<<"G4QEnvironment::CreateQ:Interact "<<projQC<<proj4M<<"(m2="<<projM2<<") + A=" + <<targPDG<<",M="<<tgMass<<",tC="<<totCharge<<",tB="<<totBaryoN<<G4endl; +#endif + G4int envZ=theEnvironment.GetZ(); // A#of protons in the target nucleus + G4int envN=theEnvironment.GetN(); // A#of neutrons in the target nucleus + G4int envS=theEnvironment.GetS(); // A#of lambdas in the target nucleus + G4int envBN=envZ+envN+envS; // A baryon number of the target nucleus + G4int nP =theWorld->GetQPEntries(); // A#of initialized particles in CHIPS World + G4int nCl =nP-90; // A#of initialized clusters in CHIPS World + if(nCl<0) G4cout<<"---Warning---G4QEnv::CreaQ:nP="<<nP<<" for Targ="<<targPDG<<G4endl; + if (nCl<3) nBarClust=1; // Fix the maximum Baryon Number for clusters + else if(nCl<9) nBarClust=2; + else { - G4int v=nCl-9; - G4int d=v/15; - G4int r=v%15; - if(r<7) nBarClust=3+d+d; - else nBarClust=4+d+d; - } + G4int v=nCl-9; + G4int d=v/15; + G4int r=v%15; + if(r<7) nBarClust=3+d+d; + else nBarClust=4+d+d; + } #ifdef pdebug G4cout<<"G4QE::CrQ:TNuc:Z="<<envZ<<",N="<<envN<<",nC="<<nBarClust<<",tC=" - <<totCharge<<", tB="<<totBaryoN<<G4endl; -#endif - G4bool pbpt=projE<PiPrThresh+(M2ShiftVir+projM2)/DiNuclMass;// PhotonBelowPionThreshold - G4bool din=false; - G4bool piF=false; - G4bool gaF=false; - if((projM2-mPi2<.00001||projE-mPi<0.1)&&projPDG==-211&&!fake) piF=true;//PiAtRestCase - //if(pbpt&&projPDG==22) din=true; // InCaseOf GammaBelowPiThresh needs DiNucl (?) - if(pbpt&&projPDG==22) gaF=true; // InCaseOf GammaBelowPiThresh needs DiNucl (?) - theEnvironment.SetMaxClust(nBarClust); - nBarClust=theEnvironment.UpdateClusters(din); // Cluster Probabilities upto maxClust + <<totCharge<<", tB="<<totBaryoN<<G4endl; +#endif + G4bool pbpt=projE<PiPrThresh+(M2ShiftVir+projM2)/DiNuclMass;// PhotonBelowPionThreshold + G4bool din=false; + G4bool piF=false; + G4bool gaF=false; + if((projM2-mPi2<.00001||projE-mPi<0.1)&&projPDG==-211&&!fake) piF=true;//PiAtRestCase + //if(pbpt&&projPDG==22) din=true; // InCaseOf GammaBelowPiThresh needs DiNucl (?) + if(pbpt&&projPDG==22) gaF=true; // InCaseOf GammaBelowPiThresh needs DiNucl (?) + theEnvironment.SetMaxClust(nBarClust); + nBarClust=theEnvironment.UpdateClusters(din); // Cluster Probabilities upto maxClust #ifdef pdebug G4cout<<"G4QEnv::CreateQ: Nucleus("<<targPDG<<") is created ("<<nBarClust<<" clast's)"; - for(G4int ic=0;ic<nBarClust;ic++) - G4cout<<" #"<<ic<<"("<<theEnvironment.GetProbability(ic)<<")"; - G4cout<<G4endl; + for(G4int ic=0;ic<nBarClust;ic++) + G4cout<<" #"<<ic<<"("<<theEnvironment.GetProbability(ic)<<")"; + G4cout<<G4endl; #endif - theEnvironment.PrepareCandidates(theQCandidates,piF,gaF,proj4M);//Calc.Clust's probab's - G4QNucleus memEnviron=theEnvironment; + theEnvironment.PrepareCandidates(theQCandidates,piF,gaF,proj4M);//Calc.Clust's probab's + G4QNucleus memEnviron=theEnvironment; #ifdef pdebug G4cout<<"G4QE::CrQ:ClusterProbabCalculation tC="<<totCharge<<",tB="<<totBaryoN<<G4endl; #endif - G4bool efFlag=false; // EnergyFlowFlag=FALSE (@@=DEFOLT=@@ make par) - // ********** Change if necessary to compare Energy Flux & Multy Quasmon ************** - G4int efCounter=0; // Counter of Energy Flux particles - G4QContent EnFlQC(0,0,0,0,0,0); // Quark Content of Energy Flux - G4LorentzVector ef4Mom(0.,0.,0.,0.); // Summed 4-momentum of Energy Flux - G4double proj3M=proj4M.rho(); - // --- Pbar --- Nbar ------- LAMBDAbar ---- SIGMA-bar --- SIGMA0bar - if((projPDG==-2212||projPDG==-2112||projPDG==-3122||projPDG==-3112||projPDG==-3212|| - projPDG==-3222) && envBN>1 && proj3M<10.) // OnlyForAtRestReactions(@@to Interface) + G4bool efFlag=false; // EnergyFlowFlag=FALSE (@@=DEFOLT=@@ make par) + // ********** Change if necessary to compare Energy Flux & Multy Quasmon ************** + G4int efCounter=0; // Counter of Energy Flux particles + G4QContent EnFlQC(0,0,0,0,0,0); // Quark Content of Energy Flux + G4LorentzVector ef4Mom(0.,0.,0.,0.); // Summed 4-momentum of Energy Flux + G4double proj3M=proj4M.rho(); + // --- Pbar --- Nbar ------- LAMBDAbar ---- SIGMA-bar --- SIGMA0bar + if((projPDG==-2212||projPDG==-2112||projPDG==-3122||projPDG==-3112||projPDG==-3212|| + projPDG==-3222) && envBN>1 && proj3M<10.) // OnlyForAtRestReactions(@@to Interface) // ^^^^^ SIGMA+bar { - // @@ Annihilation on one baryon is implemented (no annihilation on clusters! @@?) @@ -#ifdef pdebug - G4cout<<"G4QE::CreQ:Annihilation on a perif. nucleon, Z="<<envZ<<",N="<<envN<<G4endl; -#endif - G4double zpn=envZ+envN; // a#of nucleons in the nucleus - G4double rnd=zpn*G4UniformRand(); // Random number to find a nucleon - //G4double envD=.1*envZ*envN/zpn; // a#of possible quasifree deuterons (@@Param.) - //G4double rnd=(zpn+envD)*G4UniformRand(); // Random number to find a baryon - //G4double rnd=(zpn+envS)*G4UniformRand(); // Random number to find a baryon - G4int targNPDG = 90000000; // Nucl-Prototype of PDG of Periferal Target - G4QContent targQC(0,0,0,0,0,0); // Quark Content of Periferal Target - if (rnd<envN) // Neutron is a Periferal Target - { - targNPDG = 90000001; - targQC = neutQC; + // @@ Annihilation on one baryon is implemented (no annihilation on clusters! @@?) @@ +#ifdef pdebug + G4cout<<"G4QE::CreQ:Annihilation on a perif. nucleon, Z="<<envZ<<",N="<<envN<<G4endl; +#endif + G4double zpn=envZ+envN; // a#of nucleons in the nucleus + G4double rnd=zpn*G4UniformRand(); // Random number to find a nucleon + //G4double envD=.1*envZ*envN/zpn; // a#of possible quasifree deuterons (@@Param.) + //G4double rnd=(zpn+envD)*G4UniformRand(); // Random number to find a baryon + //G4double rnd=(zpn+envS)*G4UniformRand(); // Random number to find a baryon + G4int targNPDG = 90000000; // Nucl-Prototype of PDG of Periferal Target + G4QContent targQC(0,0,0,0,0,0); // Quark Content of Periferal Target + if (rnd<envN) // Neutron is a Periferal Target + { + targNPDG = 90000001; + targQC = neutQC; } - else + else // if(rnd<=zpn) // Proton is a Periferal Target - { - targNPDG = 90001000; - targQC = protQC; + { + targNPDG = 90001000; + targQC = protQC; } - //else // Deuteron as a Periferal Target - //{ - // targNPDG = 90001001; - // targQC = deutQC; + //else // Deuteron as a Periferal Target + //{ + // targNPDG = 90001001; + // targQC = deutQC; //} - //else // Lambda is a Periferal Target (?) - //{ - // targNPDG = 91000000; - // targQC = lambQC; + //else // Lambda is a Periferal Target (?) + //{ + // targNPDG = 91000000; + // targQC = lambQC; //} - theEnvironment.Reduce(targNPDG); // Subtract periferal baryon from Nucleus + theEnvironment.Reduce(targNPDG); // Subtract periferal baryon from Nucleus #ifdef pdebug - G4cout<<"G4QEnvironment::CQ:"<<targNPDG<<" is selected Env="<<theEnvironment<<G4endl; + G4cout<<"G4QEnvironment::CQ:"<<targNPDG<<" is selected Env="<<theEnvironment<<G4endl; #endif - G4double resMass=theEnvironment.GetGSMass(); // Nuclear mass after baryon subtraction - G4double barMass=tgMass-resMass; // Mass of the bound baryon for annihilation - tgMass=resMass; // New mass of theEnvironment - q4Mom=G4LorentzVector(0,0,0,barMass)+proj4M;// 4-mom of the intermediate B-Bbar Quasm - valQ=targQC+projQC; // Quark Content of intermediate B-Bbar Quasmon - // Remember the Quasmon parameters, defined by user for recovery after annihilation - G4Quasmon fakeQ; // fake Quasmon to get and restore parameters - G4double QTemper=fakeQ.GetTemper(); // Temperature defined by user for Quasmons - G4double QSOverU=fakeQ.GetSOverU(); // S/U defined by user for Quasmons - G4double QEtaSup=fakeQ.GetEtaSup(); // Eta Suppresion defined by user in Quasmons - G4Quasmon::SetParameters(180.,QSOverU,.3); // Parameters for N-barN Annihilation - G4Quasmon::CloseElectromagneticDecays(); // Parameters for N-barN Annihilation - G4Quasmon* pan = new G4Quasmon(valQ,q4Mom);// N-Nbar Quasm creation (del.at 9th line) - G4QNucleus vE(90000000); // Annihilation in vacuum (in NuclMatter?) + G4double resMass=theEnvironment.GetGSMass(); // Nuclear mass after baryon subtraction + G4double barMass=tgMass-resMass; // Mass of the bound baryon for annihilation + tgMass=resMass; // New mass of theEnvironment + q4Mom=G4LorentzVector(0,0,0,barMass)+proj4M;// 4-mom of the intermediate B-Bbar Quasm + valQ=targQC+projQC; // Quark Content of intermediate B-Bbar Quasmon + // Remember the Quasmon parameters, defined by user for recovery after annihilation + G4Quasmon fakeQ; // fake Quasmon to get and restore parameters + G4double QTemper=fakeQ.GetTemper(); // Temperature defined by user for Quasmons + G4double QSOverU=fakeQ.GetSOverU(); // S/U defined by user for Quasmons + G4double QEtaSup=fakeQ.GetEtaSup(); // Eta Suppresion defined by user in Quasmons + G4Quasmon::SetParameters(180.,QSOverU,.3); // Parameters for N-barN Annihilation + G4Quasmon::CloseElectromagneticDecays(); // Parameters for N-barN Annihilation + G4Quasmon* pan = new G4Quasmon(valQ,q4Mom);// N-Nbar Quasm creation (del.at 9th line) + G4QNucleus vE(90000000); // Annihilation in vacuum (in NuclMatter?) #ifdef pdebug - G4cout<<"G4QE::CreQ: before Fragment, vE="<<vE<<",vP="<<vE.GetProbability()<<",QQC=" - <<valQ<<",Q4M="<<q4Mom<<G4endl; + G4cout<<"G4QE::CreQ: before Fragment, vE="<<vE<<",vP="<<vE.GetProbability()<<",QQC=" + <<valQ<<",Q4M="<<q4Mom<<G4endl; #endif - G4QHadronVector* output=pan->Fragment(vE,1);//Output of inVacAnnihilation*DESTROY*<-+ + G4QHadronVector* output=pan->Fragment(vE,1);//Output of inVacAnnihilation*DESTROY*<-+ #ifdef pdebug - G4cout<<"G4QE::CrQ:NucleonAntinucleonAnnihilation's done,N="<<output->size()<<G4endl; + G4cout<<"G4QE::CrQ:NucleonAntinucleonAnnihilation's done,N="<<output->size()<<G4endl; #endif - G4Quasmon::OpenElectromagneticDecays(); // Parameter for multihadronFragmentatation^ + G4Quasmon::OpenElectromagneticDecays(); // Parameter for multihadronFragmentatation^ #ifdef pdebug G4cout<<"G4QE::CrQ:>>AnnihilationIsDone,C="<<totCharge<<",B="<<totBaryoN<<G4endl;// ^ #endif - delete pan; // The N-NbarQuasmon is deleted A.S.A.P. ^ - G4QHadronVector input; // Input for MultyQuasmon **DESTROY**<---+ ^ - //G4int trgPDG = theEnvironment.GetPDG();// New PDG Code for the Residual Nucleus ^ ^ - G4LorentzVector trg4M(0.,0.,0.,resMass); // New 4-momentum for the ResidualNucleus^ ^ - G4int tNH = output->size(); // For the selection LOOP ^ ^ - G4ThreeVector dir = RndmDir(); // For the selection in LOOP (@@ at rest)^ ^ - G4double ra=std::pow(G4double(totBaryoN),third); // ^ ^ + delete pan; // The N-NbarQuasmon is deleted A.S.A.P. ^ + G4QHadronVector input; // Input for MultyQuasmon **DESTROY**<---+ ^ + //G4int trgPDG = theEnvironment.GetPDG();// New PDG Code for the Residual Nucleus ^ ^ + G4LorentzVector trg4M(0.,0.,0.,resMass); // New 4-momentum for the ResidualNucleus^ ^ + G4int tNH = output->size(); // For the selection LOOP ^ ^ + G4ThreeVector dir = RndmDir(); // For the selection in LOOP (@@ at rest)^ ^ + G4double ra=std::pow(G4double(totBaryoN),third); // ^ ^ #ifdef pdebug G4cout<<"G4QE::CQ:N="<<tNH<<",T="<<totCharge<<","<<totBaryoN<<",A="<<ra<<G4endl;//^ ^ #endif - for (G4int ind=0; ind<tNH; ind++) // Loop over annihilation QHadrons ^ ^ - { - //G4QHadron* curHadr = output->operator[](ind); // Pointer to theCurrentHadron ^ ^ - G4QHadron* curHadr = (*output)[ind]; // Pointer to theCurrentHadron ^ ^ - G4int shDFL= curHadr->GetNFragments();// A#of decFragments for proj. ^ ^ - G4LorentzVector sh4m = curHadr->Get4Momentum(); // 4Mom for the projectile ^ ^ - G4ThreeVector shDIR= sh4m.vect().unit(); // unitVector in projMomDirect ^ ^ - G4int shPDG= curHadr->GetPDGCode(); // PDG Code of the projectile ^ ^ - G4int shCHG= curHadr->GetCharge(); // Charge of the projectile ^ ^ - G4double shMOM= sh4m.rho(); // Momentum of the projectile ^ ^ + for (G4int ind=0; ind<tNH; ind++) // Loop over annihilation QHadrons ^ ^ + { + //G4QHadron* curHadr = output->operator[](ind); // Pointer to theCurrentHadron ^ ^ + G4QHadron* curHadr = (*output)[ind]; // Pointer to theCurrentHadron ^ ^ + G4int shDFL= curHadr->GetNFragments();// A#of decFragments for proj. ^ ^ + G4LorentzVector sh4m = curHadr->Get4Momentum(); // 4Mom for the projectile ^ ^ + G4ThreeVector shDIR= sh4m.vect().unit(); // unitVector in projMomDirect ^ ^ + G4int shPDG= curHadr->GetPDGCode(); // PDG Code of the projectile ^ ^ + G4int shCHG= curHadr->GetCharge(); // Charge of the projectile ^ ^ + G4double shMOM= sh4m.rho(); // Momentum of the projectile ^ ^ #ifdef pdebug G4cout<<"G4QE::CrQ:"<<ind<<","<<shDFL<<",PDG="<<shPDG<<",4M="<<sh4m<<G4endl; // ^ ^ #endif - G4double solAnCut=SolidAngle; // Proto ChargeDependantSolAngle^ ^ - if(fabs(ra)<.1) solAnCut=3.; // No Nucleus -> no absorption ^ ^ - else if(shMOM<.1) // Meson at rest ^ ^ - { // ^ ^ - if(shCHG<=0.) solAnCut=-3.; // Always totally absorbed ^ ^ - else solAnCut=3.; // Positive are repelled from A ^ ^ - } // ^ ^ - else solAnCut+=1000*shCHG/shMOM/ra; // ChargeDepSolAngle(Normal) ^ ^ - //G4double solAnCut=SolidAngle+20*shCHG*sqrt(1.*envZ)/shMOM;//ChargeDepSolAngle ^ ^ + G4double solAnCut=SolidAngle; // Proto ChargeDependantSolAngle^ ^ + if(fabs(ra)<.1) solAnCut=3.; // No Nucleus -> no absorption ^ ^ + else if(shMOM<.1) // Meson at rest ^ ^ + { // ^ ^ + if(shCHG<=0.) solAnCut=-3.; // Always totally absorbed ^ ^ + else solAnCut=3.; // Positive are repelled from A ^ ^ + } // ^ ^ + else solAnCut+=1000*shCHG/shMOM/ra; // ChargeDepSolAngle(Normal) ^ ^ + //G4double solAnCut=SolidAngle+20*shCHG*sqrt(1.*envZ)/shMOM;//ChargeDepSolAngle ^ ^ #ifdef pdebug G4cout<<"G4QE::CrQ: PDG="<<shPDG<<", p="<<shMOM<<", r="<<ra<<G4endl; // ^ ^ #endif - if(!shDFL) // Final(notDecayed) hadrons ^ ^ + if(!shDFL) // Final(notDecayed) hadrons ^ ^ { #ifdef pdebug G4cout<<"G4QE::CQ:>H="<<shPDG<<":"<<dir.dot(shDIR)<<">"<<solAnCut<<G4endl; // ^ ^ @@ -880,25 +880,25 @@ void G4QEnvironment::CreateQuasmon(const G4QContent& projQC, const G4LorentzVect G4cout<<"G4QE::CQ:>H="<<shPDG<<":"<<dir.dot(shDIR)<<">"<<solAnCut<<", P="// ^ ^ <<shMOM<<" < 120"<<G4endl; // ^ ^ #endif - if(efFlag) // => Case of "Energy Flux approach" ^ ^ + if(efFlag) // => Case of "Energy Flux approach" ^ ^ { - G4QContent shQC = curHadr->GetQC();// QuarkContent of the Current Hadron ^ ^ - ef4Mom+=sh4m; - EnFlQC+=shQC; - efCounter++; + G4QContent shQC = curHadr->GetQC();// QuarkContent of the Current Hadron ^ ^ + ef4Mom+=sh4m; + EnFlQC+=shQC; + efCounter++; #ifdef pdebug - G4int hPDG=curHadr->GetPDGCode(); // Only for gebug printing ^ ^ - G4LorentzVector h4M = curHadr->Get4Momentum(); // Only for gebug printing^ ^ + G4int hPDG=curHadr->GetPDGCode(); // Only for gebug printing ^ ^ + G4LorentzVector h4M = curHadr->Get4Momentum(); // Only for gebug printing^ ^ G4cout<<"G4QE::CrQ:#"<<efCounter<<", PDG="<<hPDG<<", h4M="<<h4M<<G4endl;//^ ^ #endif } else //=>"MultyQuasFragmentation"(!efFlag)^ ^ { - G4QHadron* mqHadron = new G4QHadron(curHadr); - input.push_back(mqHadron); // Fill hadron-copy (del equiv) <...^ ^ + G4QHadron* mqHadron = new G4QHadron(curHadr); + input.push_back(mqHadron); // Fill hadron-copy (del equiv) <...^ ^ #ifdef pdebug - G4int hPDG=curHadr->GetPDGCode(); // Only for debug printing ^ ^ - G4LorentzVector h4M = curHadr->Get4Momentum(); // Only for gebug printing ^ ^ + G4int hPDG=curHadr->GetPDGCode(); // Only for debug printing ^ ^ + G4LorentzVector h4M = curHadr->Get4Momentum(); // Only for gebug printing ^ ^ G4cout<<"G4QE::CrQ:Absorb#"<<ind<<", PDG="<<hPDG<<", h4M="<<h4M<<G4endl;//^ ^ #endif } // ^ ^ @@ -906,329 +906,329 @@ void G4QEnvironment::CreateQuasmon(const G4QContent& projQC, const G4LorentzVect else // DirectFilling of the output vector^ ^ { // ^ ^ #ifdef pdebug - G4int hPDG=curHadr->GetPDGCode(); // Only for gebug printing ^ ^ - G4LorentzVector h4M = curHadr->Get4Momentum(); // Only for gebug printing ^ ^ + G4int hPDG=curHadr->GetPDGCode(); // Only for gebug printing ^ ^ + G4LorentzVector h4M = curHadr->Get4Momentum(); // Only for gebug printing ^ ^ G4cout<<"G4QE::CrQ: Fill OUT #"<<ind<<",PDG="<<hPDG<<",h4M="<<h4M<<G4endl;//^ ^ #endif - // Just fill a hadron to the output stack (One should make EM decays elsewhere) - G4QHadron* curHadron = new G4QHadron(curHadr); // ^ ^ - theQHadrons.push_back(curHadron); // TheQHadrs are filled as new Hadrs ^ ^ - } + // Just fill a hadron to the output stack (One should make EM decays elsewhere) + G4QHadron* curHadron = new G4QHadron(curHadr); // ^ ^ + theQHadrons.push_back(curHadron); // TheQHadrs are filled as new Hadrs ^ ^ + } } // End of the IF over projectiles ^ ^ } // End of LOOP over "output" of annihilation ^ ^ - for_each(output->begin(), output->end(), DeleteQHadron()); //DESTRUCT output>-^-^ - output->clear(); // ^ ^ - delete output; // ==================================^=^ - if(!efFlag) // =>NotEnergyFlux=MultyQuasmon Case ^ + for_each(output->begin(), output->end(), DeleteQHadron()); //DESTRUCT output>-^-^ + output->clear(); // ^ ^ + delete output; // ==================================^=^ + if(!efFlag) // =>NotEnergyFlux=MultyQuasmon Case ^ { - G4int noh = theQHadrons.size(); // a#oh hadrons in Output UpToNow ^ - if(noh) for(G4int kh=0; kh<noh; kh++) // One can escape it but... ^ + G4int noh = theQHadrons.size(); // a#oh hadrons in Output UpToNow ^ + if(noh) for(G4int kh=0; kh<noh; kh++) // One can escape it but... ^ { // ^ #ifdef pdebug - G4cout<<"G4QE::CreateQ:H#"<<kh<<", QC="<<theQHadrons[kh]->GetQC() // ^ - <<", 4M="<<theQHadrons[kh]->Get4Momentum()<<G4endl; // ^ + G4cout<<"G4QE::CreateQ:H#"<<kh<<", QC="<<theQHadrons[kh]->GetQC() // ^ + <<", 4M="<<theQHadrons[kh]->Get4Momentum()<<G4endl; // ^ #endif - G4QHadronVector* tmpQHadVec=G4Quasmon().DecayQHadron(theQHadrons[kh]);//d.e<^ ^ - G4int tmpS=tmpQHadVec->size(); // ^ ^ - intQHadrons.resize(tmpS+intQHadrons.size()); // Resize theQHadrons length ^ ^ - copy(tmpQHadVec->begin(), tmpQHadVec->end(), intQHadrons.end()-tmpS); // ^ ^ - tmpQHadVec->clear(); // ^ ^ - delete tmpQHadVec; // who calls DecayQHadron must clear & delete ^ ^ + G4QHadronVector* tmpQHadVec=G4Quasmon().DecayQHadron(theQHadrons[kh]);//d.e<^ ^ + G4int tmpS=tmpQHadVec->size(); // ^ ^ + intQHadrons.resize(tmpS+intQHadrons.size()); // Resize theQHadrons length ^ ^ + copy(tmpQHadVec->begin(), tmpQHadVec->end(), intQHadrons.end()-tmpS); // ^ ^ + tmpQHadVec->clear(); // ^ ^ + delete tmpQHadVec; // who calls DecayQHadron must clear & delete ^ ^ } // ^ ^ - theQHadrons.clear(); // deletedWhenDecayed // Now theQHadrons is EmptyVector->^ ^ + theQHadrons.clear(); // deletedWhenDecayed // Now theQHadrons is EmptyVector->^ ^ #ifdef pdebug - G4int nInH=intQHadrons.size(); // Resulting #of hadrons after decay ^ + G4int nInH=intQHadrons.size(); // Resulting #of hadrons after decay ^ G4cout<<"G4QE::CrQ:nH="<<nInH<<",C="<<totCharge<<",B="<<totBaryoN<<G4endl;// ^ #endif - if(!(input.size())) // *RETURN* Without Quasmon creation-^ + if(!(input.size())) // *RETURN* Without Quasmon creation-^ { // ^ #ifdef pdebug G4cout<<"*G4QEnv::CrQ:AnnihStack tC="<<totCharge<<",tB="<<totBaryoN<<G4endl;//^ #endif return; // Do not clear and delete objects --^ - } // ^ + } // ^ #ifdef pdebug G4cout<<"G4QE::CrQ:fakeQ, restPars tC="<<totCharge<<",tB="<<totBaryoN<<G4endl;//^ #endif - G4Quasmon::SetParameters(QTemper,QSOverU,QEtaSup);//RecoverQParam's after anihil^ - G4Quasmon::OpenElectromagneticDecays(); // Parameter for multihadron fragmentat.^ - // From this point the new temporary environment is created (multiQuasmon) ^ - G4QEnvironment* muq = new G4QEnvironment(input,theEnvironment.GetPDG());//<--+ ^ + G4Quasmon::SetParameters(QTemper,QSOverU,QEtaSup);//RecoverQParam's after anihil^ + G4Quasmon::OpenElectromagneticDecays(); // Parameter for multihadron fragmentat.^ + // From this point the new temporary environment is created (multiQuasmon) ^ + G4QEnvironment* muq = new G4QEnvironment(input,theEnvironment.GetPDG());//<--+ ^ #ifdef pdebug G4cout<<"G4QE::CrQ:befCl&Dest tC="<<totCharge<<", tB="<<totBaryoN<<G4endl; //^ ^ #endif - for_each(input.begin(), input.end(), DeleteQHadron()); //DESTROING inp >-^--^ - input.clear(); // =Clearing=>==========>=========^==+ - theEnvironment = muq->GetEnvironment(); // RestoreResidEnv after interact.^ - G4QHadronVector* outH = muq->GetQHadrons();// Copy of QHadrons *DESTROY* <---^-<--+ - G4QuasmonVector* outQ = muq->GetQuasmons();// Copy of Quasmons *DESTROY* <---^--+ ^ - delete muq; //=====>===========>==============^ ^ ^ - noh = outH->size(); // a#of Not Interacting(Q) Hadrons ^ ^ + for_each(input.begin(), input.end(), DeleteQHadron()); //DESTROING inp >-^--^ + input.clear(); // =Clearing=>==========>=========^==+ + theEnvironment = muq->GetEnvironment(); // RestoreResidEnv after interact.^ + G4QHadronVector* outH = muq->GetQHadrons();// Copy of QHadrons *DESTROY* <---^-<--+ + G4QuasmonVector* outQ = muq->GetQuasmons();// Copy of Quasmons *DESTROY* <---^--+ ^ + delete muq; //=====>===========>==============^ ^ ^ + noh = outH->size(); // a#of Not Interacting(Q) Hadrons ^ ^ #ifdef pdebug - G4cout<<"G4QEnv::CreateQ:*** #ofNotInterQH="<<noh<<" is found ***"<<G4endl; // ^ ^ + G4cout<<"G4QEnv::CreateQ:*** #ofNotInterQH="<<noh<<" is found ***"<<G4endl; // ^ ^ #endif - if(noh) for(G4int nh=0; nh<noh; nh++) // One can escape it but... ^ ^ + if(noh) for(G4int nh=0; nh<noh; nh++) // One can escape it but... ^ ^ { // ^ ^ #ifdef pdebug - G4cout<<"G4QE::CreateQ: NotIntQH#"<<nh<<", QC="<<(*outH)[nh]->GetQC() // ^ ^ - <<", 4M="<<(*outH)[nh]->Get4Momentum()<<G4endl; // ^ ^ + G4cout<<"G4QE::CreateQ: NotIntQH#"<<nh<<", QC="<<(*outH)[nh]->GetQC() // ^ ^ + <<", 4M="<<(*outH)[nh]->Get4Momentum()<<G4endl; // ^ ^ #endif - G4QHadronVector* tmpQHadVec=G4Quasmon().DecayQHadron((*outH)[nh]);//del.eq<-+ ^ ^ - G4int tmpS=tmpQHadVec->size(); // ^ ^ ^ - intQHadrons.resize(tmpS+intQHadrons.size()); // Resize theQHadrons length ^ ^ ^ - copy(tmpQHadVec->begin(), tmpQHadVec->end(), intQHadrons.end()-tmpS); // ^ ^ ^ - tmpQHadVec->clear(); // ^ ^ ^ - delete tmpQHadVec; // who calls DecayQHadron must clear & delete->+ ^ ^ + G4QHadronVector* tmpQHadVec=G4Quasmon().DecayQHadron((*outH)[nh]);//del.eq<-+ ^ ^ + G4int tmpS=tmpQHadVec->size(); // ^ ^ ^ + intQHadrons.resize(tmpS+intQHadrons.size()); // Resize theQHadrons length ^ ^ ^ + copy(tmpQHadVec->begin(), tmpQHadVec->end(), intQHadrons.end()-tmpS); // ^ ^ ^ + tmpQHadVec->clear(); // ^ ^ ^ + delete tmpQHadVec; // who calls DecayQHadron must clear & delete->+ ^ ^ } // ^ ^ - outH->clear(); // ^ ^ - delete outH; // >---->---->---->---->---->---->---^-+ + outH->clear(); // ^ ^ + delete outH; // >---->---->---->---->---->---->---^-+ G4int nMQ = outQ->size(); // A#ofQuasmons in MultyQuasmonOutput^ #ifdef pdebug - G4LorentzVector eLorV=theEnvironment.Get4Momentum(); // ^ + G4LorentzVector eLorV=theEnvironment.Get4Momentum(); // ^ G4cout<<"G4QE::CrQ:nMQ="<<nMQ<<",tC="<<totCharge<<", tB="<<totBaryoN<<G4endl;// ^ G4cout<<"G4QE::CrQ:Env4M="<<eLorV<<G4endl; // ^ - G4LorentzVector contr4M=eLorV; // ^ + G4LorentzVector contr4M=eLorV; // ^ #endif - if(nMQ) for(G4int mh=0; mh<nMQ; mh++) // Can escape CreationDistruct but...^ + if(nMQ) for(G4int mh=0; mh<nMQ; mh++) // Can escape CreationDistruct but...^ { // ^ - G4Quasmon* curQ = new G4Quasmon((*outQ)[mh]);// Copy to destroy TMP(?) ^ + G4Quasmon* curQ = new G4Quasmon((*outQ)[mh]);// Copy to destroy TMP(?) ^ #ifdef pdebug - G4LorentzVector qLorV=curQ->Get4Momentum(); // ^ + G4LorentzVector qLorV=curQ->Get4Momentum(); // ^ G4cout<<"G4QE::CrQ:Q#"<<mh<<",4M="<<qLorV<<curQ->GetQC()<<G4endl; // ^ - contr4M+=qLorV; // ^ + contr4M+=qLorV; // ^ #endif - theQuasmons.push_back(curQ); // Fill QuasmonCopies in theQuasmons ^ + theQuasmons.push_back(curQ); // Fill QuasmonCopies in theQuasmons ^ } // ^ - for_each(outQ->begin(), outQ->end(), DeleteQuasmon()); // >---------------------^ - outQ->clear(); // ^ - delete outQ; // >=================================+ + for_each(outQ->begin(), outQ->end(), DeleteQuasmon()); // >---------------------^ + outQ->clear(); // ^ + delete outQ; // >=================================+ #ifdef pdebug - G4int nsHadr = theQHadrons.size(); // Update the value of OUTPUT entries + G4int nsHadr = theQHadrons.size(); // Update the value of OUTPUT entries G4cout<<"G4QEnvironment::CreateQ: before return nH="<<nsHadr<<G4endl; - if(nsHadr) for(G4int jso=0; jso<nsHadr; jso++)// LOOP over output hadrons - { - G4int hsNF = theQHadrons[jso]->GetNFragments(); // A#of secondary fragments - if(!hsNF) // Add only final hadrons + if(nsHadr) for(G4int jso=0; jso<nsHadr; jso++)// LOOP over output hadrons + { + G4int hsNF = theQHadrons[jso]->GetNFragments(); // A#of secondary fragments + if(!hsNF) // Add only final hadrons { - G4LorentzVector hLorV=theQHadrons[jso]->Get4Momentum(); - G4int hPDGC=theQHadrons[jso]->GetPDGCode(); - G4cout<<"G4QE::CrQ: H#"<<jso<<",4M="<<hLorV<<hPDGC<<G4endl; - contr4M+=hLorV; - } - else - G4cout<<"G4Q::CrQ:"<<jso<<"NF=0,4M="<<theQHadrons[jso]->Get4Momentum()<<G4endl; - } + G4LorentzVector hLorV=theQHadrons[jso]->Get4Momentum(); + G4int hPDGC=theQHadrons[jso]->GetPDGCode(); + G4cout<<"G4QE::CrQ: H#"<<jso<<",4M="<<hLorV<<hPDGC<<G4endl; + contr4M+=hLorV; + } + else + G4cout<<"G4Q::CrQ:"<<jso<<"NF=0,4M="<<theQHadrons[jso]->Get4Momentum()<<G4endl; + } G4cout<<"G4QEnvironment::CreateQ: before return tot4M="<<contr4M<<G4endl; #endif - return; // *** RETURN *** - } - else // ==> Energy Flux case + return; // *** RETURN *** + } + else // ==> Energy Flux case { - if (!efCounter) return; // ***RETURN*** Without Quasmon creation + if (!efCounter) return; // ***RETURN*** Without Quasmon creation } } // End of Hyperon annihilation case - else EnFlQC=projQC; // For notAntiBar, don't use EnergyFlux - G4double EnFlP=ef4Mom.rho(); // Mom. of EnergyFlow forClusterCreation - PrepareInteractionProbabilities(EnFlQC,EnFlP); // InteractionProbabilities for clusters - G4int nCandid = theQCandidates.size(); + else EnFlQC=projQC; // For notAntiBar, don't use EnergyFlux + G4double EnFlP=ef4Mom.rho(); // Mom. of EnergyFlow forClusterCreation + PrepareInteractionProbabilities(EnFlQC,EnFlP); // InteractionProbabilities for clusters + G4int nCandid = theQCandidates.size(); #ifdef pdebug G4cout<<"G4QEnvironment::CrQ: InteractionProbabilities are done, nC="<<nCandid<<G4endl; #endif - G4double maxP = theQCandidates[nCandid-1]->GetIntegProbability(); - G4int i=0; - G4QContent curQC; // Quark Content of the selected cluster - if(nCandid<=0) + G4double maxP = theQCandidates[nCandid-1]->GetIntegProbability(); + G4int i=0; + G4QContent curQC; // Quark Content of the selected cluster + if(nCandid<=0) { G4cout<<"---Warning---G4QEnv::CreaQ:nC="<<nCandid<<",maxP="<<maxP<<",E=" - <<theEnvironment<<G4endl; - //throw G4QException("G4QEnvironment::CreateQ: Can not select a cluster"); + <<theEnvironment<<G4endl; + //throw G4QException("G4QEnvironment::CreateQ: Can not select a cluster"); } - if(nCandid==1||maxP==0.) + if(nCandid==1||maxP==0.) { #ifdef pdebug G4cout<<"***G4QEnv::CrQ:MaxP=0||nCand=1: Use all Env., Env="<<theEnvironment<<G4endl; #endif - curQC=theEnvironment.GetQCZNS(); - theEnvironment=vacuum; - } - else - { - G4double totP = maxP * G4UniformRand(); + curQC=theEnvironment.GetQCZNS(); + theEnvironment=vacuum; + } + else + { + G4double totP = maxP * G4UniformRand(); #ifdef pdebug G4cout<<"G4QEnvironment::CrQ:nC="<<nCandid<<", maxP="<<maxP<<", totP="<<totP<<G4endl; #endif - while(theQCandidates[i]->GetIntegProbability()<totP) i++; - G4QCandidate* curCand = theQCandidates[i];// Pointer to selected cluster to interact - curQC = curCand->GetQC(); // Get QuarkContent of the selected cluster - G4QNucleus targClust(curQC.GetP(),curQC.GetN(),curQC.GetL());//Define Clust as a QNuc - G4double clMass=targClust.GetGSMass(); // Mass of residual nuclear environment + while(theQCandidates[i]->GetIntegProbability()<totP) i++; + G4QCandidate* curCand = theQCandidates[i];// Pointer to selected cluster to interact + curQC = curCand->GetQC(); // Get QuarkContent of the selected cluster + G4QNucleus targClust(curQC.GetP(),curQC.GetN(),curQC.GetL());//Define Clust as a QNuc + G4double clMass=targClust.GetGSMass(); // Mass of residual nuclear environment #ifdef cldebug G4cout<<"G4QEnv::CrQ:Cl#"<<i<<"(of "<<nCandid<<"),QC="<<curQC<<",M="<<clMass<<G4endl; #endif - G4LorentzVector pq4M=proj4M+G4LorentzVector(0.,0.,0.,clMass); - if(pq4M.m()>=clMass) + G4LorentzVector pq4M=proj4M+G4LorentzVector(0.,0.,0.,clMass); + if(pq4M.m()>=clMass) { #ifdef pdebug G4cout<<"G4QEnv::CQ:#"<<i<<"("<<targClust<<curQC<<") Env="<<theEnvironment<<G4endl; #endif - theEnvironment.Reduce(targClust.GetPDG());// Subtract selected cluster from Nucleus + theEnvironment.Reduce(targClust.GetPDG());// Subtract selected cluster from Nucleus } - else + else { - G4double teMass=theEnvironment.GetGSMass(); //Mass of theResidualNuclearEnvironment - G4LorentzVector te4M=proj4M+G4LorentzVector(0.,0.,0.,teMass); - if(te4M.m()>=teMass) + G4double teMass=theEnvironment.GetGSMass(); //Mass of theResidualNuclearEnvironment + G4LorentzVector te4M=proj4M+G4LorentzVector(0.,0.,0.,teMass); + if(te4M.m()>=teMass) { #ifdef pdebug G4cout<<"***G4QEnv::CrQ: Deep virtual, use all Env,Env="<<theEnvironment<<G4endl; #endif - curQC=theEnvironment.GetQCZNS(); - theEnvironment=vacuum; - } - else + curQC=theEnvironment.GetQCZNS(); + theEnvironment=vacuum; + } + else { - G4QHadron* projH = new G4QHadron(projQC,proj4M); - theQHadrons.push_back(projH); + G4QHadron* projH = new G4QHadron(projQC,proj4M); + theQHadrons.push_back(projH); G4cout<<"---Warning---G4QE::CrQ:Fill Proj asItIs QC/4m="<<projQC<<proj4M<<G4endl; - return; - } + return; + } } } - G4double envMass=theEnvironment.GetGSMass(); // Mass of residual nuclear environment - if(projPDG==22&&projE<PiPrThresh+(M2ShiftVir+projM2)/DiNuclMass) // Gam+quark Interact - //if(2>3) //@@ TMP:PhotoAbsorbtion by q is closed + G4double envMass=theEnvironment.GetGSMass(); // Mass of residual nuclear environment + if(projPDG==22&&projE<PiPrThresh+(M2ShiftVir+projM2)/DiNuclMass) // Gam+quark Interact + //if(2>3) //@@ TMP:PhotoAbsorbtion by q is closed { - q4Mom=G4LorentzVector(0.,0.,0.,tgMass-envMass);// PhotoInteracts with BoundedCluster - valQ=curQC; + q4Mom=G4LorentzVector(0.,0.,0.,tgMass-envMass);// PhotoInteracts with BoundedCluster + valQ=curQC; #ifdef pdebug - G4cout<<"G4QE::CrQ:Q="<<q4Mom<<valQ<<"+vg="<<proj4M<<",Env="<<theEnvironment<<G4endl; + G4cout<<"G4QE::CrQ:Q="<<q4Mom<<valQ<<"+vg="<<proj4M<<",Env="<<theEnvironment<<G4endl; #endif - G4Quasmon* curQuasmon = new G4Quasmon(valQ, q4Mom, proj4M);//Interaction gam+q inside - theQuasmons.push_back(curQuasmon); // Insert Quasmon without incid. gamma (del.eq.) + G4Quasmon* curQuasmon = new G4Quasmon(valQ, q4Mom, proj4M);//Interaction gam+q inside + theQuasmons.push_back(curQuasmon); // Insert Quasmon without incid. gamma (del.eq.) } - else if((projM2-mPi2<.00001&&projE-mPi<0.1)&&projPDG==-211&&!fake) - //if(2>3) //@@ ***TMP*** PionAbsorbAtRest by q is closed + else if((projM2-mPi2<.00001&&projE-mPi<0.1)&&projPDG==-211&&!fake) + //if(2>3) //@@ ***TMP*** PionAbsorbAtRest by q is closed { - q4Mom=proj4M+G4LorentzVector(0.,0.,0.,tgMass-envMass);// PION + BoundCluster - valQ=EnFlQC+curQC; + q4Mom=proj4M+G4LorentzVector(0.,0.,0.,tgMass-envMass);// PION + BoundCluster + valQ=EnFlQC+curQC; #ifdef pdebug - if(projE<mPi)G4cout<<"*VirtualPiM*G4QE::CrQ:Ener(pi-)="<<projE<<"<mPi="<<mPi<<G4endl; - G4cout<<"G4QEnv::CrQ:Q="<<q4Mom<<valQ<<"+pi="<<proj4M<<",E="<<theEnvironment<<G4endl; + if(projE<mPi)G4cout<<"*VirtualPiM*G4QE::CrQ:Ener(pi-)="<<projE<<"<mPi="<<mPi<<G4endl; + G4cout<<"G4QEnv::CrQ:Q="<<q4Mom<<valQ<<"+pi="<<proj4M<<",E="<<theEnvironment<<G4endl; #endif - G4Quasmon* curQuasmon = new G4Quasmon(valQ, q4Mom, -proj4M);//Interact gam+q inside - theQuasmons.push_back(curQuasmon); // Insert Quasmon without incid. gamma (del.eq.) + G4Quasmon* curQuasmon = new G4Quasmon(valQ, q4Mom, -proj4M);//Interact gam+q inside + theQuasmons.push_back(curQuasmon); // Insert Quasmon without incid. gamma (del.eq.) } - else if(projPDG==2212 && G4UniformRand()>.5) // Bad for ions! Only for baryons ! - //else if(2>3) // free flying proton is closed + else if(projPDG==2212 && G4UniformRand()>.5) // Bad for ions! Only for baryons ! + //else if(2>3) // free flying proton is closed { - q4Mom=proj4M; // 4M: QUASMON=Projectile - valQ=EnFlQC; // qc: QUASMON=Projectile - theEnvironment=memEnviron; + q4Mom=proj4M; // 4M: QUASMON=Projectile + valQ=EnFlQC; // qc: QUASMON=Projectile + theEnvironment=memEnviron; #ifdef pdebug - G4cout<<"G4QEnv::CreQAll: Q="<<q4Mom<<valQ<<", QEnv="<<theEnvironment<<G4endl; + G4cout<<"G4QEnv::CreQAll: Q="<<q4Mom<<valQ<<", QEnv="<<theEnvironment<<G4endl; #endif - G4Quasmon* curQuasmon = new G4Quasmon(valQ, q4Mom); - theQuasmons.push_back(curQuasmon); // Insert Quasmon (even hadron/gamma) (del.eq.) + G4Quasmon* curQuasmon = new G4Quasmon(valQ, q4Mom); + theQuasmons.push_back(curQuasmon); // Insert Quasmon (even hadron/gamma) (del.eq.) } - else + else { - q4Mom=proj4M+G4LorentzVector(0.,0.,0.,tgMass-envMass);//Projectile + BoundCluster - valQ=EnFlQC+curQC; + q4Mom=proj4M+G4LorentzVector(0.,0.,0.,tgMass-envMass);//Projectile + BoundCluster + valQ=EnFlQC+curQC; #ifdef pdebug - G4cout<<"G4QEnv::CreQAll: Q="<<q4Mom<<valQ<<", QEnv="<<theEnvironment<<G4endl; + G4cout<<"G4QEnv::CreQAll: Q="<<q4Mom<<valQ<<", QEnv="<<theEnvironment<<G4endl; #endif - G4Quasmon* curQuasmon = new G4Quasmon(valQ, q4Mom); - theQuasmons.push_back(curQuasmon); // Insert Quasmon (even hadron/gamma) (del.eq.) + G4Quasmon* curQuasmon = new G4Quasmon(valQ, q4Mom); + theQuasmons.push_back(curQuasmon); // Insert Quasmon (even hadron/gamma) (del.eq.) } - } - else - { - G4cout<<"---Warning---G4QEnvironment::CreateQuasmon:Strange targPDG="<<targPDG<<G4endl; - //throw G4QException("***G4QEnvironment::CreateQuasmon: Impossible target"); - } + } + else + { + G4cout<<"---Warning---G4QEnvironment::CreateQuasmon:Strange targPDG="<<targPDG<<G4endl; + //throw G4QException("***G4QEnvironment::CreateQuasmon: Impossible target"); + } } // Calculate a probability to interact with clusters for the givven PDG of the projectile void G4QEnvironment::PrepareInteractionProbabilities(const G4QContent& projQC, G4double AP) // ===========================================================================Proj.3Mom.= { - G4double sum = 0.; // Sum of probabilities of interaction - G4double probab = 0.; // Interaction probability - G4double denseB = 0.; // A#of*prob baryons in dense part - G4double allB = 0.; // A#of*prob baryons in the nucleus - G4int pPDG = projQC.GetSPDGCode(); // PDG code of the projectile particle - if(2>3) {allB=AP; allB=pPDG;} // A trick to use not used AP(3M) & pPDG - for (unsigned index=0; index<theQCandidates.size(); index++) - { - G4QCandidate* curCand=theQCandidates[index]; // Intermediate pointer - G4int cPDG = curCand->GetPDGCode(); // PDG Code of the Candidate - G4int cST = curCand->GetStrangeness(); // Strangeness of the candidate - G4int cBN = curCand->GetBaryonNumber(); // Baryon Number of the candidate - G4int cCH = curCand->GetCharge(); // Charge of the candidate + G4double sum = 0.; // Sum of probabilities of interaction + G4double probab = 0.; // Interaction probability + G4double denseB = 0.; // A#of*prob baryons in dense part + G4double allB = 0.; // A#of*prob baryons in the nucleus + G4int pPDG = projQC.GetSPDGCode(); // PDG code of the projectile particle + if(2>3) {allB=AP; allB=pPDG;} // A trick to use not used AP(3M) & pPDG + for (unsigned index=0; index<theQCandidates.size(); index++) + { + G4QCandidate* curCand=theQCandidates[index]; // Intermediate pointer + G4int cPDG = curCand->GetPDGCode(); // PDG Code of the Candidate + G4int cST = curCand->GetStrangeness(); // Strangeness of the candidate + G4int cBN = curCand->GetBaryonNumber(); // Baryon Number of the candidate + G4int cCH = curCand->GetCharge(); // Charge of the candidate #ifdef sdebug G4cout<<"G4QE::PIP:=====> #"<<index<<", cPDG="<<cPDG<<",S="<<cST<<G4endl; #endif - if(cPDG>80000000&&cPDG!=90000000&&!cST&&cCH>0&&cBN>0&&cCH<=cBN) // ===> Nuclear cluster + if(cPDG>80000000&&cPDG!=90000000&&!cST&&cCH>0&&cBN>0&&cCH<=cBN) // ===> Nuclear cluster { - G4int zc = cCH; // "Z" of the cluster - G4int nc = cBN-cCH; // "N" of the cluster - G4double nOfCl=curCand->GetPreProbability(); // A number of clusters of the type - G4double dOfCl=curCand->GetDenseProbability();// A number of clusters in dense region + G4int zc = cCH; // "Z" of the cluster + G4int nc = cBN-cCH; // "N" of the cluster + G4double nOfCl=curCand->GetPreProbability(); // A number of clusters of the type + G4double dOfCl=curCand->GetDenseProbability();// A number of clusters in dense region #ifdef sdebug G4cout<<"G4QE::PIP:Z="<<zc<<",N="<<nc<<",nC="<<nOfCl<<",dC="<<dOfCl<<G4endl; #endif - if(cPDG==91000000||cPDG==90001000||cPDG==90000001) + if(cPDG==91000000||cPDG==90001000||cPDG==90000001) { - allB+=nOfCl; - denseB+=dOfCl; + allB+=nOfCl; + denseB+=dOfCl; } - G4QContent pQC=curCand->GetQC(); // Quark Content of the candidate - ////////////G4int pC = projQC.GetCharge(); // Charge of the projectile - G4QContent qQC=pQC+projQC; // Total Quark content of the Compound - G4QPDGCode qQPDG(qQC); - G4int qC = qQPDG.GetQCode(); - G4double d = abs(zc-nc); - G4double fact=1./pow(2.,d); - if (qC<-1) probab=0.; - //else if(pPDG==-211&&AP<152.&&cBN<2) probab=0.; // PionCaptureByCluster - //else if(pPDG==22&&AP<152. || pPDG>90000000) - else if(pPDG==22&&AP<152.) - { - if(cBN<2)probab=nOfCl*cBN*fact; //Gamma Under Pi Threshold (QuarkCapture) - else probab=0.; - } - else if(pPDG==2212) - { - //if(cBN<2)probab=nOfCl*cBN*fact; // Moving nucleons hits only nucleons - //else probab=0.; - probab=nOfCl*cBN*fact; // Moving nucleons hits composed clusters - //probab=nOfCl*fact; // Moving nucleons hits compact clusters - } - ////////////////////////else if((pPDG==-211&&AP<10.)&&cBN<2) probab=0;//PiCapAtRst(D) - //else if((pPDG==-211||pPDG==-13)&&AP<27.)probab=dOfCl*cBN*fact;//Pi/Mu-CaptureAtRest - //else if(pPDG==-211&&AP<10.) probab=nOfCl*fact;// special PiCaptureAtRest - //else if(pPDG==-211&&AP<10.) probab=nOfCl*cBN*(cBN-1)*fact; - //else probab=nOfCl*fact; - else probab=nOfCl*cBN*fact; - //else probab=dOfCl*cBN*fact; - //if(cBN>1) probab=0.; // Suppress clusters - //if(cBN>2) probab=0.; // Suppress heavy clusters + G4QContent pQC=curCand->GetQC(); // Quark Content of the candidate + ////////////G4int pC = projQC.GetCharge(); // Charge of the projectile + G4QContent qQC=pQC+projQC; // Total Quark content of the Compound + G4QPDGCode qQPDG(qQC); + G4int qC = qQPDG.GetQCode(); + G4double d = abs(zc-nc); + G4double fact=1./pow(2.,d); + if (qC<-1) probab=0.; + //else if(pPDG==-211&&AP<152.&&cBN<2) probab=0.; // PionCaptureByCluster + //else if(pPDG==22&&AP<152. || pPDG>90000000) + else if(pPDG==22&&AP<152.) + { + if(cBN<2)probab=nOfCl*cBN*fact; //Gamma Under Pi Threshold (QuarkCapture) + else probab=0.; + } + else if(pPDG==2212) + { + //if(cBN<2)probab=nOfCl*cBN*fact; // Moving nucleons hits only nucleons + //else probab=0.; + probab=nOfCl*cBN*fact; // Moving nucleons hits composed clusters + //probab=nOfCl*fact; // Moving nucleons hits compact clusters + } + ////////////////////////else if((pPDG==-211&&AP<10.)&&cBN<2) probab=0;//PiCapAtRst(D) + //else if((pPDG==-211||pPDG==-13)&&AP<27.)probab=dOfCl*cBN*fact;//Pi/Mu-CaptureAtRest + //else if(pPDG==-211&&AP<10.) probab=nOfCl*fact;// special PiCaptureAtRest + //else if(pPDG==-211&&AP<10.) probab=nOfCl*cBN*(cBN-1)*fact; + //else probab=nOfCl*fact; + else probab=nOfCl*cBN*fact; + //else probab=dOfCl*cBN*fact; + //if(cBN>1) probab=0.; // Suppress clusters + //if(cBN>2) probab=0.; // Suppress heavy clusters #ifdef sdebug - G4int pPDG = projQC.GetSPDGCode(); // PDG code of the projectile particle - G4int rPDG = qQC.GetSPDGCode(); - G4double baryn = qQC.GetBaryonNumber(); - G4double charge= qQC.GetCharge(); - G4double dq= abs(baryn-charge-charge); + G4int pPDG = projQC.GetSPDGCode(); // PDG code of the projectile particle + G4int rPDG = qQC.GetSPDGCode(); + G4double baryn = qQC.GetBaryonNumber(); + G4double charge= qQC.GetCharge(); + G4double dq= abs(baryn-charge-charge); G4cout<<"G4QE::PIP:P="<<probab<<",ac="<<cBN<<",dq="<<dq<<",f="<<fact<<",qC=" - <<qC<<",rPDG="<<rPDG<<",pPDG="<<pPDG<<",nCP="<<nOfCl<<",dCP="<<dOfCl<<G4endl; + <<qC<<",rPDG="<<rPDG<<",pPDG="<<pPDG<<",nCP="<<nOfCl<<",dCP="<<dOfCl<<G4endl; #endif } - else probab=0.; - sum+=probab; - curCand->SetIntegProbability(sum); - } - if(allB>0.)f2all=(allB-denseB)/allB; - else f2all=0.; + else probab=0.; + sum+=probab; + curCand->SetIntegProbability(sum); + } + if(allB>0.)f2all=(allB-denseB)/allB; + else f2all=0.; } // End of PrepareInteractionProbabilities //Initialize a Clusters Vector for the Nucleus of the QEnvironment @@ -1236,225 +1236,225 @@ void G4QEnvironment::InitClustersVector(G4int maxClust, G4int maxA) // ============================================================== { #ifdef pdebug - G4cout<<"G4QEnvironment::InitClustersVector called with nC="<<maxClust<<G4endl; + G4cout<<"G4QEnvironment::InitClustersVector called with nC="<<maxClust<<G4endl; #endif - if(maxClust>=0) for (G4int i=0; i<maxClust; i++) - { - G4int clustQCode = i+90; // Q-code of the cluster in the CHIPS World "IsoNuclei" + if(maxClust>=0) for (G4int i=0; i<maxClust; i++) + { + G4int clustQCode = i+90; // Q-code of the cluster in the CHIPS World "IsoNuclei" #ifdef sdebug G4cout<<"G4QEnvironment::InitClustersVector: Before Init Q ="<<clustQCode<<G4endl; #endif - G4QPDGCode clustQPDG(true,clustQCode); - //clustQPDG.InitByQCode(clustQCode); - G4int clusterPDG=clustQPDG.GetPDGCode(); - G4int clustB=clustQPDG.GetBaryNum(); + G4QPDGCode clustQPDG(true,clustQCode); + //clustQPDG.InitByQCode(clustQCode); + G4int clusterPDG=clustQPDG.GetPDGCode(); + G4int clustB=clustQPDG.GetBaryNum(); #ifdef sdebug G4cout<<"G4QEnvironment::InitClustersVector: Before insert ="<<clusterPDG<<G4endl; #endif //theQCandidates.push_back(new G4QCandidate(clusterPDG)); // (delete equivalent) if(clustB<=maxA) theQCandidates.push_back(new G4QCandidate(clusterPDG)); // (del.eq.) #ifdef sdebug - G4cout<<"G4QEnvironment::InitClustersVector: Cluster # "<<i<<" with code = " - <<clusterPDG<<", QC="<<clustQPDG.GetQuarkContent()<<G4endl; + G4cout<<"G4QEnvironment::InitClustersVector: Cluster # "<<i<<" with code = " + <<clusterPDG<<", QC="<<clustQPDG.GetQuarkContent()<<G4endl; #endif - } + } } // End of InitClastersVector // Fragmentation of the QEnvironment with MultyQuasmon (the main internal member function) G4QHadronVector G4QEnvironment::HadronizeQEnvironment() // ================*********************** { - static const G4int NUCPDG = 90000000; - static const G4QNucleus vacuum(NUCPDG); - static const G4QContent PiQC(0,1,0,1,0,0); - static const G4QContent K0QC(1,0,0,0,0,1); - static const G4QContent KpQC(0,1,0,0,0,1); - static const G4QContent SiPQC(0,2,1,0,0,0); - static const G4QContent SiMQC(2,0,1,0,0,0); - //static const G4QContent alQC(6,6,0,0,0,0); - static const G4QPDGCode nQPDG(2112); - static const G4QPDGCode pQPDG(2212); - static const G4QPDGCode lQPDG(3122); - static const G4QPDGCode s0QPDG(3122); - static const G4double mPi0 = G4QPDGCode(111).GetMass(); - static const G4double mPi = G4QPDGCode(211).GetMass(); - static const G4double mK = G4QPDGCode(321).GetMass(); - static const G4double mK0 = G4QPDGCode(311).GetMass(); - static const G4double mNeut= G4QPDGCode(2112).GetMass(); - static const G4double mProt= G4QPDGCode(2212).GetMass(); - static const G4double mLamb= G4QPDGCode(3122).GetMass(); - static const G4double mSigZ= G4QPDGCode(3212).GetMass(); - static const G4double mSigM= G4QPDGCode(3112).GetMass(); - static const G4double mSigP= G4QPDGCode(3222).GetMass(); - //static const G4double mAlph = G4QPDGCode(2112).GetNuclMass(2,2,0); - static const G4double eps=.003; - G4int nQuasmons = theQuasmons.size(); + static const G4int NUCPDG = 90000000; + static const G4QNucleus vacuum(NUCPDG); + static const G4QContent PiQC(0,1,0,1,0,0); + static const G4QContent K0QC(1,0,0,0,0,1); + static const G4QContent KpQC(0,1,0,0,0,1); + static const G4QContent SiPQC(0,2,1,0,0,0); + static const G4QContent SiMQC(2,0,1,0,0,0); + //static const G4QContent alQC(6,6,0,0,0,0); + static const G4QPDGCode nQPDG(2112); + static const G4QPDGCode pQPDG(2212); + static const G4QPDGCode lQPDG(3122); + static const G4QPDGCode s0QPDG(3122); + static const G4double mPi0 = G4QPDGCode(111).GetMass(); + static const G4double mPi = G4QPDGCode(211).GetMass(); + static const G4double mK = G4QPDGCode(321).GetMass(); + static const G4double mK0 = G4QPDGCode(311).GetMass(); + static const G4double mNeut= G4QPDGCode(2112).GetMass(); + static const G4double mProt= G4QPDGCode(2212).GetMass(); + static const G4double mLamb= G4QPDGCode(3122).GetMass(); + static const G4double mSigZ= G4QPDGCode(3212).GetMass(); + static const G4double mSigM= G4QPDGCode(3112).GetMass(); + static const G4double mSigP= G4QPDGCode(3222).GetMass(); + //static const G4double mAlph = G4QPDGCode(2112).GetNuclMass(2,2,0); + static const G4double eps=.003; + G4int nQuasmons = theQuasmons.size(); #ifdef chdebug - G4int finCharge=theEnvironment.GetCharge(); - G4int finBaryoN=theEnvironment.GetA(); - G4int nHad=theQHadrons.size(); - if(nHad) for(G4int ih=0; ih<nHad; ih++) - { - finCharge+=theQHadrons[ih]->GetCharge(); - finBaryoN+=theQHadrons[ih]->GetBaryonNumber(); - } - //G4int nQuas=theQuasmons.size(); - if(nQuasmons)for(G4int iq=0; iq<nQuasmons; iq++) - { - finCharge+=theQuasmons[iq]->GetCharge(); - finBaryoN+=theQuasmons[iq]->GetBaryonNumber(); - } - if(finCharge!=totCharge || finBaryoN!=totBaryoN) - { - G4cout<<"**G4QE::HQ:T(1) tC="<<totCharge<<",C="<<finCharge<<",tB="<<totBaryoN - <<",B="<<finBaryoN<<",E="<<theEnvironment<<G4endl; - if(nHad) for(G4int h=0; h<nHad; h++) - { - G4QHadron* cH = theQHadrons[h]; - G4cout<<":G4QE::HQ:h#"<<h<<",QC="<<cH->GetQC()<<",PDG="<<cH->GetPDGCode()<<G4endl; - } - if(nQuasmons) for(G4int q=0; q<nQuasmons; q++) - { - G4Quasmon* cQ = theQuasmons[q]; - G4cout<<":G4QE::HQ:q#"<<q<<",C="<<cQ->GetCharge()<<",QuarkCon="<<cQ->GetQC()<<G4endl; - } - } -#endif -#ifdef pdebug - G4cout<<"G4QE::HQE:*HADRONIZE Q-ENVIRONMENT="<<theEnvironment<<",nQ="<<nQuasmons<<G4endl; -#endif - if(nQuasmons<1) // "No Quasmons" case -> Fill QEnviron - { - G4int nPDG = theEnvironment.GetPDG(); // PDG code of the residual Nucl.Environ. + G4int finCharge=theEnvironment.GetCharge(); + G4int finBaryoN=theEnvironment.GetA(); + G4int nHad=theQHadrons.size(); + if(nHad) for(G4int ih=0; ih<nHad; ih++) + { + finCharge+=theQHadrons[ih]->GetCharge(); + finBaryoN+=theQHadrons[ih]->GetBaryonNumber(); + } + //G4int nQuas=theQuasmons.size(); + if(nQuasmons)for(G4int iq=0; iq<nQuasmons; iq++) + { + finCharge+=theQuasmons[iq]->GetCharge(); + finBaryoN+=theQuasmons[iq]->GetBaryonNumber(); + } + if(finCharge!=totCharge || finBaryoN!=totBaryoN) + { + G4cout<<"**G4QE::HQ:T(1) tC="<<totCharge<<",C="<<finCharge<<",tB="<<totBaryoN + <<",B="<<finBaryoN<<",E="<<theEnvironment<<G4endl; + if(nHad) for(G4int h=0; h<nHad; h++) + { + G4QHadron* cH = theQHadrons[h]; + G4cout<<":G4QE::HQ:h#"<<h<<",QC="<<cH->GetQC()<<",PDG="<<cH->GetPDGCode()<<G4endl; + } + if(nQuasmons) for(G4int q=0; q<nQuasmons; q++) + { + G4Quasmon* cQ = theQuasmons[q]; + G4cout<<":G4QE::HQ:q#"<<q<<",C="<<cQ->GetCharge()<<",QuarkCon="<<cQ->GetQC()<<G4endl; + } + } +#endif +#ifdef pdebug + G4cout<<"G4QE::HQE:*HADRONIZE Q-ENVIRONMENT="<<theEnvironment<<",nQ="<<nQuasmons<<G4endl; +#endif + if(nQuasmons<1) // "No Quasmons" case -> Fill QEnviron + { + G4int nPDG = theEnvironment.GetPDG(); // PDG code of the residual Nucl.Environ. #ifdef pdebug G4cout<<"G4QE::HQE:***NO QUASMONS***Env="<<nPDG<<theEnvironment.Get4Momentum()<<G4endl; #endif - if(nPDG==90000000) return theQHadrons; - if(nPDG>80000000) + if(nPDG==90000000) return theQHadrons; + if(nPDG>80000000) { - G4QHadron* rNucleus = new G4QHadron(theEnvironment); // Create HadronEnvironment - theQHadrons.push_back(rNucleus); // Fill GS - no further decay (del. equiv.) + G4QHadron* rNucleus = new G4QHadron(theEnvironment); // Create HadronEnvironment + theQHadrons.push_back(rNucleus); // Fill GS - no further decay (del. equiv.) #ifdef fdebug G4cout<<"G4QEnv::HadrQE: >>>> Fill Environment="<<theEnvironment<<G4endl; #endif } - return theQHadrons; - } - if(theEnvironment.GetPDG()==NUCPDG) // ==> "Environment is Vacuum" case - { + return theQHadrons; + } + if(theEnvironment.GetPDG()==NUCPDG) // ==> "Environment is Vacuum" case + { #ifdef rdebug - G4cout<<"G4QEnv::HadrQE: ***Vacuum*** #ofQ="<<nQuasmons<<G4endl; - G4int totInC=0; - G4LorentzVector totIn4M(0.,0.,0.,0.); + G4cout<<"G4QEnv::HadrQE: ***Vacuum*** #ofQ="<<nQuasmons<<G4endl; + G4int totInC=0; + G4LorentzVector totIn4M(0.,0.,0.,0.); for (G4int is=0; is<nQuasmons; is++) // Sum4mom's of Quasmons for the comparison { G4Quasmon* pQ = theQuasmons[is]; - G4LorentzVector Q4M= pQ->Get4Momentum(); - totIn4M += Q4M; - totInC += pQ->GetQC().GetCharge(); + G4LorentzVector Q4M= pQ->Get4Momentum(); + totIn4M += Q4M; + totInC += pQ->GetQC().GetCharge(); } // End of TotInitial4Momentum summation LOOP over Quasmons - G4int nsHadr = theQHadrons.size(); // Update the value of OUTPUT entries - if(nsHadr) for(G4int jso=0; jso<nsHadr; jso++)// LOOP over output hadrons - { - G4int hsNF = theQHadrons[jso]->GetNFragments(); // A#of secondary fragments - if(!hsNF) // Add only final hadrons - { - G4LorentzVector hs4Mom = theQHadrons[jso]->Get4Momentum(); - totIn4M += hs4Mom; - totInC += theQHadrons[jso]->GetCharge(); - } - } -#endif - G4QNucleus vE(90000000); - G4int nlq = 0; // Prototype of a#of Living Quasmons + G4int nsHadr = theQHadrons.size(); // Update the value of OUTPUT entries + if(nsHadr) for(G4int jso=0; jso<nsHadr; jso++)// LOOP over output hadrons + { + G4int hsNF = theQHadrons[jso]->GetNFragments(); // A#of secondary fragments + if(!hsNF) // Add only final hadrons + { + G4LorentzVector hs4Mom = theQHadrons[jso]->Get4Momentum(); + totIn4M += hs4Mom; + totInC += theQHadrons[jso]->GetCharge(); + } + } +#endif + G4QNucleus vE(90000000); + G4int nlq = 0; // Prototype of a#of Living Quasmons if(nQuasmons) for(G4int lq=0; lq<nQuasmons; lq++)if(theQuasmons[lq]->GetStatus())nlq++; if(nQuasmons) for(G4int iq=0; iq<nQuasmons; iq++) { #ifdef chdebug - G4int f1Charge=theEnvironment.GetCharge(); - G4int f1BaryoN=theEnvironment.GetA(); - G4int nHad=theQHadrons.size(); - if(nHad) for(G4int ih=0; ih<nHad; ih++) - { - f1Charge+=theQHadrons[ih]->GetCharge(); - f1BaryoN+=theQHadrons[ih]->GetBaryonNumber(); - } - G4int nQuas=theQuasmons.size(); - if(nQuas)for(G4int iqs=0; iqs<nQuas; iqs++) - { - f1Charge+=theQuasmons[iqs]->GetCharge(); - f1BaryoN+=theQuasmons[iqs]->GetBaryonNumber(); - } - if(f1Charge!=totCharge || f1BaryoN!=totBaryoN) - { - G4cout<<"**G4QE::HQ:q#"<<iq<<",tC="<<totCharge<<",C="<<f1Charge<<",tB="<<totBaryoN - <<",B="<<f1BaryoN<<",E="<<theEnvironment<<G4endl; - if(nHad) for(G4int h=0; h<nHad; h++) - { - G4QHadron* cH = theQHadrons[h]; - G4cout<<"G4QE::HQ:#"<<h<<",QC="<<cH->GetQC()<<",P="<<cH->GetPDGCode()<<G4endl; - } - if(nQuas) for(G4int q=0; q<nQuas; q++) - { - G4Quasmon* cQ = theQuasmons[q]; - G4cout<<"G4QE::HQ:q#"<<q<<",C="<<cQ->GetCharge()<<",QCont="<<cQ->GetQC()<<G4endl; - } - } -#endif - G4int ist=theQuasmons[iq]->GetStatus();// Status of the Quasmon before fragmentation - if(ist) + G4int f1Charge=theEnvironment.GetCharge(); + G4int f1BaryoN=theEnvironment.GetA(); + G4int nHad=theQHadrons.size(); + if(nHad) for(G4int ih=0; ih<nHad; ih++) + { + f1Charge+=theQHadrons[ih]->GetCharge(); + f1BaryoN+=theQHadrons[ih]->GetBaryonNumber(); + } + G4int nQuas=theQuasmons.size(); + if(nQuas)for(G4int iqs=0; iqs<nQuas; iqs++) + { + f1Charge+=theQuasmons[iqs]->GetCharge(); + f1BaryoN+=theQuasmons[iqs]->GetBaryonNumber(); + } + if(f1Charge!=totCharge || f1BaryoN!=totBaryoN) + { + G4cout<<"**G4QE::HQ:q#"<<iq<<",tC="<<totCharge<<",C="<<f1Charge<<",tB="<<totBaryoN + <<",B="<<f1BaryoN<<",E="<<theEnvironment<<G4endl; + if(nHad) for(G4int h=0; h<nHad; h++) + { + G4QHadron* cH = theQHadrons[h]; + G4cout<<"G4QE::HQ:#"<<h<<",QC="<<cH->GetQC()<<",P="<<cH->GetPDGCode()<<G4endl; + } + if(nQuas) for(G4int q=0; q<nQuas; q++) + { + G4Quasmon* cQ = theQuasmons[q]; + G4cout<<"G4QE::HQ:q#"<<q<<",C="<<cQ->GetCharge()<<",QCont="<<cQ->GetQC()<<G4endl; + } + } +#endif + G4int ist=theQuasmons[iq]->GetStatus();// Status of the Quasmon before fragmentation + if(ist) { - G4QHadronVector* output=theQuasmons[iq]->Fragment(vE,1);//!!!DESTROY!!! <---------+ - G4int ast=theQuasmons[iq]->GetStatus(); // Quasmon's Status after fragmentation ^ - if(!ast) nlq--; // Reduce nlq if Quasmon decayed ^ - G4int nHadrons = output->size(); // A#of output Hadrons in the Quasmon ^ + G4QHadronVector* output=theQuasmons[iq]->Fragment(vE,1);//!!!DESTROY!!! <---------+ + G4int ast=theQuasmons[iq]->GetStatus(); // Quasmon's Status after fragmentation ^ + if(!ast) nlq--; // Reduce nlq if Quasmon decayed ^ + G4int nHadrons = output->size(); // A#of output Hadrons in the Quasmon ^ #ifdef pdebug - G4cout<<"G4QEnv::HadrQE: ***Vacuum*** Q#"<<iq<<", nHadr="<<nHadrons<<G4endl; // ^ + G4cout<<"G4QEnv::HadrQE: ***Vacuum*** Q#"<<iq<<", nHadr="<<nHadrons<<G4endl; // ^ #endif - if(nHadrons>0) // Copy QHadrons-Quasmon to Output ^ + if(nHadrons>0) // Copy QHadrons-Quasmon to Output ^ { - for (G4int ih=0; ih<nHadrons; ih++) // LOOP over QHadrons of the Quasmon ^ - { - //G4QHadron* curH=new G4QHadron(output->operator[](ih));// (Del 7 lines below)^ - G4QHadron* curH = new G4QHadron((*output)[ih]); // (Deleted 7 lines below) ^ + for (G4int ih=0; ih<nHadrons; ih++) // LOOP over QHadrons of the Quasmon ^ + { + //G4QHadron* curH=new G4QHadron(output->operator[](ih));// (Del 7 lines below)^ + G4QHadron* curH = new G4QHadron((*output)[ih]); // (Deleted 7 lines below) ^ #ifdef pdebug - G4cout<<"G4QEnv::HadrQE:Vacuum, H#"<<ih<<", QPDG="<<curH->GetQPDG() // ^ - <<",4M="<<curH->Get4Momentum()<<G4endl; // ^ + G4cout<<"G4QEnv::HadrQE:Vacuum, H#"<<ih<<", QPDG="<<curH->GetQPDG() // ^ + <<",4M="<<curH->Get4Momentum()<<G4endl; // ^ #endif - theQHadrons.push_back(curH); // Fill hadron-copy (delete equivalent) ^ - } + theQHadrons.push_back(curH); // Fill hadron-copy (delete equivalent) ^ + } } // ^ - else // => "Quasmon can't decay" case ^ + else // => "Quasmon can't decay" case ^ { // ^ - G4QContent totQC=theQuasmons[iq]->GetQC();// ^ - G4int tQBN=totQC.GetBaryonNumber();// Baryon Number of not decayed Quasmon ^ - G4QNucleus tqN(totQC); // Define the quasmon as a nucleus ^ - G4double gsM=tqN.GetMZNS(); // GS Mass ^ - G4LorentzVector tot4M=theQuasmons[iq]->Get4Momentum(); - G4double totQM=tot4M.m(); // Real Mass of Quasmon ^ - if(tQBN>0&&totQM>gsM) // => "Try Quasmon evaporation" case ^ + G4QContent totQC=theQuasmons[iq]->GetQC();// ^ + G4int tQBN=totQC.GetBaryonNumber();// Baryon Number of not decayed Quasmon ^ + G4QNucleus tqN(totQC); // Define the quasmon as a nucleus ^ + G4double gsM=tqN.GetMZNS(); // GS Mass ^ + G4LorentzVector tot4M=theQuasmons[iq]->Get4Momentum(); + G4double totQM=tot4M.m(); // Real Mass of Quasmon ^ + if(tQBN>0&&totQM>gsM) // => "Try Quasmon evaporation" case ^ { // ^ - G4QHadron* nuclQ = new G4QHadron(totQC,tot4M); // ^ + G4QHadron* nuclQ = new G4QHadron(totQC,tot4M); // ^ #ifdef fdebug - G4cout<<"G4QEnv::HadrQE:Vac,tQC"<<totQC<<",t4M="<<tot4M<<G4endl; // ^ + G4cout<<"G4QEnv::HadrQE:Vac,tQC"<<totQC<<",t4M="<<tot4M<<G4endl; // ^ #endif - EvaporateResidual(nuclQ); // Evaporate ResNuc (del.equiv) ^ - theQuasmons[iq]->KillQuasmon(); // Kill evaporated Quasmon ^ - nlq--; // ^ + EvaporateResidual(nuclQ); // Evaporate ResNuc (del.equiv) ^ + theQuasmons[iq]->KillQuasmon(); // Kill evaporated Quasmon ^ + nlq--; // ^ } - else if(iq+1<nQuasmons&&nlq>1) // => "Try to merge with next" case ^ + else if(iq+1<nQuasmons&&nlq>1) // => "Try to merge with next" case ^ { - G4int s=theQuasmons[iq+1]->GetStatus();//Status of the next Quasmon ^ - theQuasmons[iq+1]->IncreaseBy(theQuasmons[iq]);// Merge with the next Quasmon ^ - theQuasmons[iq]->KillQuasmon(); // Kill the week Quasmon ^ - if(s) nlq--; // Reduce a number of "living Quasmons" ^ + G4int s=theQuasmons[iq+1]->GetStatus();//Status of the next Quasmon ^ + theQuasmons[iq+1]->IncreaseBy(theQuasmons[iq]);// Merge with the next Quasmon ^ + theQuasmons[iq]->KillQuasmon(); // Kill the week Quasmon ^ + if(s) nlq--; // Reduce a number of "living Quasmons" ^ } - else if(iq+1==nQuasmons&&iq&&nlq>1) // => "Quasmon stack is exhosted" case ^ + else if(iq+1==nQuasmons&&iq&&nlq>1) // => "Quasmon stack is exhosted" case ^ { - G4int s=theQuasmons[0]->GetStatus(); // Status of the first Quasmon ^ - theQuasmons[0]->IncreaseBy(theQuasmons[iq]);// Merge with the first Quasmon ^ - theQuasmons[iq]->KillQuasmon(); // Kill the week Quasmon ^ - if(s) nlq--; // Reduce a number of "living Quasmons" ^ + G4int s=theQuasmons[0]->GetStatus(); // Status of the first Quasmon ^ + theQuasmons[0]->IncreaseBy(theQuasmons[iq]);// Merge with the first Quasmon ^ + theQuasmons[iq]->KillQuasmon(); // Kill the week Quasmon ^ + if(s) nlq--; // Reduce a number of "living Quasmons" ^ } else // "Have a chance to recover" case ^ { // ^ @@ -1462,3741 +1462,3739 @@ G4QHadronVector G4QEnvironment::HadronizeQEnvironment() G4cout<<"***G4QE::HQE:"<<iq<<",n="<<nHadrons<<",Tot="<<totQC<<totQM<<G4endl;//^ for (G4int kq=0; kq<nQuasmons; kq++) // LOOP over Quasmons for DEBUG PRINTING ^ G4cout<<kq<<",St/QC="<<theQuasmons[kq]->GetStatus()<<theQuasmons[kq] // ^ - ->GetQC()<<",M="<<theQuasmons[kq]->Get4Momentum().m()<<G4endl; // ^ + ->GetQC()<<",M="<<theQuasmons[kq]->Get4Momentum().m()<<G4endl; // ^ #endif - G4int nOfOUT = theQHadrons.size(); // Total #of QHadrons at this point ^ - G4double dM = totQM-gsM; // Excitation of the Quasmon ^ - G4bool corrf = true; // False when corrected & needs to quit ^ - while(nOfOUT && corrf) // LOOP over all existing QHadrons ^ + G4int nOfOUT = theQHadrons.size(); // Total #of QHadrons at this point ^ + G4double dM = totQM-gsM; // Excitation of the Quasmon ^ + G4bool corrf = true; // False when corrected & needs to quit ^ + while(nOfOUT && corrf) // LOOP over all existing QHadrons ^ { // ^ - G4QHadron* theLast = theQHadrons[nOfOUT-1]; // Remember ^ - G4LorentzVector last4M = theLast->Get4Momentum(); // all ^ - G4QContent lastQC = theLast->GetQC(); // content ^ - G4int lastS = lastQC.GetStrangeness(); // of // Only ^ - G4int totS = totQC.GetStrangeness(); // the // for ^ - G4int nFr = theLast->GetNFragments(); // Last // if() ^ - G4int gam = theLast->GetPDGCode(); // // ^ + G4QHadron* theLast = theQHadrons[nOfOUT-1]; // Remember ^ + G4LorentzVector last4M = theLast->Get4Momentum(); // all ^ + G4QContent lastQC = theLast->GetQC(); // content ^ + G4int lastS = lastQC.GetStrangeness(); // of // Only ^ + G4int totS = totQC.GetStrangeness(); // the // for ^ + G4int nFr = theLast->GetNFragments(); // Last // if() ^ + G4int gam = theLast->GetPDGCode(); // // ^ if(gam!=22&&!nFr&&lastS<0&&lastS+totS<0&&nOfOUT>1)//=> Skip K,gam & decayed ^ - { // ^ - G4QHadron* thePrev = theQHadrons[nOfOUT-2];// Kill Prev & make Last->Prev ^ - theQHadrons.pop_back(); // theLastQHadron is excluded from OUTPUT^ - theQHadrons.pop_back(); // thePrevQHadron is excluded from OUTPUT^ - theQHadrons.push_back(thePrev); // thePrev becomes theLast as an object ^ - delete theLast; // the Last QHadron is destructed ^ - theLast = thePrev; // Update parameters (thePrev*->theLast*)^ - last4M = theLast->Get4Momentum();// 4Mom of the previouse Quasmon ^ - lastQC = theLast->GetQC(); // Quark Content of the previouse Quasmon^ + { // ^ + G4QHadron* thePrev = theQHadrons[nOfOUT-2];// Kill Prev & make Last->Prev ^ + theQHadrons.pop_back(); // theLastQHadron is excluded from OUTPUT^ + theQHadrons.pop_back(); // thePrevQHadron is excluded from OUTPUT^ + theQHadrons.push_back(thePrev); // thePrev becomes theLast as an object ^ + delete theLast; // the Last QHadron is destructed ^ + theLast = thePrev; // Update parameters (thePrev*->theLast*)^ + last4M = theLast->Get4Momentum();// 4Mom of the previouse Quasmon ^ + lastQC = theLast->GetQC(); // Quark Content of the previouse Quasmon^ } // ^ - else // Just Clear and destroy theLast ^ + else // Just Clear and destroy theLast ^ { // ^ - theQHadrons.pop_back(); // theLastQHadron is excluded from OUTPUT^ - delete theLast; // theLastQHadron is deleated as instance^ + theQHadrons.pop_back(); // theLastQHadron is excluded from OUTPUT^ + delete theLast; // theLastQHadron is deleated as instance^ } // ^ - totQC+=lastQC; // Update (increase) the total QC ^ - tot4M+=last4M; // Update (increase) the total 4-momentum^ - totQM=tot4M.m(); // Calculate new real total mass ^ - G4QNucleus nN(totQC); // Define the Quasmon as a nucleus ^ - gsM=nN.GetMZNS(); // Calculate the new GS Mass ^ - dM = totQM-gsM; // Escitation energy for the Quasmon ^ - if(dM>0) // "Mass of Q is big enough" case ^ + totQC+=lastQC; // Update (increase) the total QC ^ + tot4M+=last4M; // Update (increase) the total 4-momentum^ + totQM=tot4M.m(); // Calculate new real total mass ^ + G4QNucleus nN(totQC); // Define the Quasmon as a nucleus ^ + gsM=nN.GetMZNS(); // Calculate the new GS Mass ^ + dM = totQM-gsM; // Escitation energy for the Quasmon ^ + if(dM>0) // "Mass of Q is big enough" case ^ { // ^ - theQuasmons[iq]->InitQuasmon(totQC,tot4M);// Update the week Quasmon ^ - G4QHadronVector* curout=theQuasmons[iq]->Fragment(vE,1);//!DESTROY! <---+ ^ - G4int ast=theQuasmons[iq]->GetStatus(); // Status of the Quasmon ^ ^ - if(!ast) nlq--; // Reduce nlq if Quasmon decayed ^ ^ - G4int nHadrons=curout->size(); // A#of outputQHadrons in theDecayedQ ^ ^ + theQuasmons[iq]->InitQuasmon(totQC,tot4M);// Update the week Quasmon ^ + G4QHadronVector* curout=theQuasmons[iq]->Fragment(vE,1);//!DESTROY! <---+ ^ + G4int ast=theQuasmons[iq]->GetStatus(); // Status of the Quasmon ^ ^ + if(!ast) nlq--; // Reduce nlq if Quasmon decayed ^ ^ + G4int nHadrons=curout->size(); // A#of outputQHadrons in theDecayedQ ^ ^ #ifdef pdebug - G4cout<<"G4QEnv::HadrQE:VacuumRecoverQ#"<<iq<<",n="<<nHadrons<<G4endl;//^ ^ + G4cout<<"G4QEnv::HadrQE:VacuumRecoverQ#"<<iq<<",n="<<nHadrons<<G4endl;//^ ^ #endif - if(nHadrons>0) // => "QHadrons from Quasmon to Output"^ ^ + if(nHadrons>0) // => "QHadrons from Quasmon to Output"^ ^ { // ^ ^ - for (G4int ih=0; ih<nHadrons; ih++) // LOOP over Hadrons of theQuasmon^ ^ + for (G4int ih=0; ih<nHadrons; ih++) // LOOP over Hadrons of theQuasmon^ ^ { // ^ ^ - //G4QHadron* curH = new G4QHadron(curout->operator[](ih)); // ^ ^ - G4QHadron* curH = new G4QHadron((*curout)[ih]); // ^ ^ + //G4QHadron* curH = new G4QHadron(curout->operator[](ih)); // ^ ^ + G4QHadron* curH = new G4QHadron((*curout)[ih]); // ^ ^ #ifdef pdebug - G4cout<<"G4QEnv::HadrQE:Recovered, H#"<<ih<<", QPDG=" // ^ ^ - <<curH->GetQPDG()<<",4M="<<curH->Get4Momentum()<<G4endl; // ^ ^ + G4cout<<"G4QEnv::HadrQE:Recovered, H#"<<ih<<", QPDG=" // ^ ^ + <<curH->GetQPDG()<<",4M="<<curH->Get4Momentum()<<G4endl; // ^ ^ #endif - totQC-=curH->GetQC(); // totQC recalculation ^ ^ + totQC-=curH->GetQC(); // totQC recalculation ^ ^ tot4M-=curH->Get4Momentum(); // tot4M recalculation ^ ^ - theQHadrons.push_back(curH); // Fill hadron-copy (delete equivalent)^ ^ - //delete curout->operator[](ih);//>-Necessary to delete instances*>-^ ^ - delete (*curout)[ih]; // >-*Necessary to delete instances*>--^ ^ - } // End of LOOP over Hadrons of the Quasmon ^ ^ - curout->clear(); // ^ ^ - delete curout; //>*Necessary to delete VectPointers*>=^ ^ - corrf = false; // Corrected: go out of the while loop ^ ^ - //break; // @@ ?? ^ ^ + theQHadrons.push_back(curH); // Fill hadron-copy (delete equivalent)^ ^ + //delete curout->operator[](ih);//>-Necessary to delete instances*>-^ ^ + delete (*curout)[ih]; // >-*Necessary to delete instances*>--^ ^ + } // End of LOOP over Hadrons of the Quasmon ^ ^ + curout->clear(); // ^ ^ + delete curout; //>*Necessary to delete VectPointers*>=^ ^ + corrf = false; // Corrected: go out of the while loop ^ ^ + //break; // @@ ?? ^ ^ } // End of check for existing output Hadrons in the Quasmon ^ ^ - else // ^ ^ + else // ^ ^ { // ^ ^ - for_each(curout->begin(), curout->end(), DeleteQHadron()); // >-------^ ^ - curout->clear(); // ^ ^ - delete curout; //>*Necessary to delete VectPointers>--^ ^ + for_each(curout->begin(), curout->end(), DeleteQHadron()); // >-------^ ^ + curout->clear(); // ^ ^ + delete curout; //>*Necessary to delete VectPointers>--^ ^ } // ^ } // ^ - nOfOUT = theQHadrons.size(); // Update the value of OUTPUT entries ^ + nOfOUT = theQHadrons.size(); // Update the value of OUTPUT entries ^ #ifdef rdebug - G4int tC=totInC; // Vacuum: No ResidualEnvironCharge ^ - G4LorentzVector t4M=totIn4M; // Vacuum: No ResidualEnvironment 4-Mom ^ + G4int tC=totInC; // Vacuum: No ResidualEnvironCharge ^ + G4LorentzVector t4M=totIn4M; // Vacuum: No ResidualEnvironment 4-Mom ^ for (G4int js=0; js<nQuasmons; js++) // Subtract 4mom's of Quasmons from dif^ { // ^ G4Quasmon* pQ = theQuasmons[js]; // ^ - if(pQ->GetStatus()) // Subtract only if Quasmon is alive ^ + if(pQ->GetStatus()) // Subtract only if Quasmon is alive ^ { // ^ - G4LorentzVector Q4M= pQ->Get4Momentum(); // ^ - t4M -= Q4M; // ^ - tC -= pQ->GetQC().GetCharge(); // ^ - } // ^ - else G4cout<<"G4QE::HQ:SUM-4-Mom s("<<js<<")="<<pQ->GetStatus()<<G4endl;//^ + G4LorentzVector Q4M= pQ->Get4Momentum(); // ^ + t4M -= Q4M; // ^ + tC -= pQ->GetQC().GetCharge(); // ^ + } // ^ + else G4cout<<"G4QE::HQ:SUM-4-Mom s("<<js<<")="<<pQ->GetStatus()<<G4endl;//^ } // End of Quasmons4Momentum subtractions ^ - if(nOfOUT) for(G4int jpo=0; jpo<nOfOUT; jpo++)// LOOP over output hadrons ^ + if(nOfOUT) for(G4int jpo=0; jpo<nOfOUT; jpo++)// LOOP over output hadrons ^ { // ^ - G4int hsNF = theQHadrons[jpo]->GetNFragments();//A#of secondary fragments^ - if(!hsNF) // Subtract only final hadrons^ - { - G4LorentzVector hs4Mom = theQHadrons[jpo]->Get4Momentum(); // ^ - t4M -= hs4Mom; // ^ - tC -= theQHadrons[jpo]->GetCharge(); // ^ - } // ^ - } // ^ - G4cout<<"G4QE::HQ:|||Vacuum|||4-MomCHECK|||d4M="<<t4M<<",dC="<<tC<<G4endl;//^ + G4int hsNF = theQHadrons[jpo]->GetNFragments();//A#of secondary fragments^ + if(!hsNF) // Subtract only final hadrons^ + { + G4LorentzVector hs4Mom = theQHadrons[jpo]->Get4Momentum(); // ^ + t4M -= hs4Mom; // ^ + tC -= theQHadrons[jpo]->GetCharge(); // ^ + } // ^ + } // ^ + G4cout<<"G4QE::HQ:|||Vacuum|||4-MomCHECK|||d4M="<<t4M<<",dC="<<tC<<G4endl;//^ #endif } // End of the WHILE LOOP ^ //if(!nOfOUT&&nQuasmons==1) // TRY TO EVAPORATE THE TOTAL SYSTEM ^ if((!nOfOUT&&nQuasmons==1)||theEnvironment.GetPDGCode()==NUCPDG)//EvaporTotal ^ { // ^ - G4int totS=totQC.GetStrangeness(); // Total Strangeness ^ - //G4int totBN=totQC.GetBaryonNumber();// Total Baryon Number ^ - G4int totPDG=totQC.GetZNSPDGCode();// Convert QC to PDGCOde for the nucleus ^ - if(totS) totPDG-=totS*999999; // @@ ?? ^ + G4int totS=totQC.GetStrangeness(); // Total Strangeness ^ + //G4int totBN=totQC.GetBaryonNumber();// Total Baryon Number ^ + G4int totPDG=totQC.GetZNSPDGCode();// Convert QC to PDGCOde for the nucleus ^ + if(totS) totPDG-=totS*999999; // @@ ?? ^ #ifdef fdebug G4cout<<"G4QE::HQE: totPDG="<<totPDG<<",totM="<<totQM<<G4endl; // ^ #endif - G4QHadron* evH = new G4QHadron(totQC,tot4M); // Create a Hadron-ResidualNucl^ - CleanUp(); // ^ - EvaporateResidual(evH); // Evaporate ResNuc (del.equiv) ^ - for_each(output->begin(), output->end(), DeleteQHadron());// >--------------^ - output->clear(); // ^ - delete output; // >=====================================^ - return theQHadrons; // ^ - } // ^ + G4QHadron* evH = new G4QHadron(totQC,tot4M); // Create a Hadron-ResidualNucl^ + CleanUp(); // ^ + EvaporateResidual(evH); // Evaporate ResNuc (del.equiv) ^ + for_each(output->begin(), output->end(), DeleteQHadron());// >--------------^ + output->clear(); // ^ + delete output; // >=====================================^ + return theQHadrons; // ^ + } // ^ else if(!nOfOUT) // Still remain not used Quasmons ^ { // ^ G4cerr<<"***G4QE::HQ:T="<<tot4M<<totQC<<",M="<<totQM<<"< gsM=" // ^ - <<gsM<<",d="<<dM<<",Env="<<theEnvironment<<G4endl; // ^ - throw G4QException("G4QEnvironment::HadronizeQEnv: Can't decay Quasmon");// ^ + <<gsM<<",d="<<dM<<",Env="<<theEnvironment<<G4endl; // ^ + throw G4QException("G4QEnvironment::HadronizeQEnv: Can't decay Quasmon");// ^ } // ^ } // End of PANIC treatment ^ } // End of trouble handling with Quasmon decay in Vacuum ^ - for_each(output->begin(), output->end(), DeleteQHadron()); // >------------------^ - output->clear(); // ^ - delete output; // >=====================================^ + for_each(output->begin(), output->end(), DeleteQHadron()); // >------------------^ + output->clear(); // ^ + delete output; // >=====================================^ } // End of check for the already decayed Quasmon } // End of the LOOP over Quasmons - } - else // ==> "Nuclear environment" case - { + } + else // ==> "Nuclear environment" case + { #ifdef rdebug - G4cout<<"G4QEnv::HadrQE:FRAGMENTATION IN NUCLEAR ENVIRONMENT nQ="<<nQuasmons<<G4endl; - G4int totInC=theEnvironment.GetZ(); - G4LorentzVector totIn4M=theEnvironment.Get4Momentum(); + G4cout<<"G4QEnv::HadrQE:FRAGMENTATION IN NUCLEAR ENVIRONMENT nQ="<<nQuasmons<<G4endl; + G4int totInC=theEnvironment.GetZ(); + G4LorentzVector totIn4M=theEnvironment.Get4Momentum(); for (G4int is=0; is<nQuasmons; is++) // Sum 4mom's of Quasmons for comparison { G4Quasmon* pQ = theQuasmons[is]; - G4LorentzVector Q4M= pQ->Get4Momentum(); - totIn4M += Q4M; - totInC += pQ->GetQC().GetCharge(); + G4LorentzVector Q4M= pQ->Get4Momentum(); + totIn4M += Q4M; + totInC += pQ->GetQC().GetCharge(); } // End of TotInitial4Momentum summation LOOP over Quasmons - G4int nsHadr = theQHadrons.size(); // Update the value of OUTPUT entries - if(nsHadr) for(G4int jso=0; jso<nsHadr; jso++)// LOOP over output hadrons - { - G4int hsNF = theQHadrons[jso]->GetNFragments(); // A#of secondary fragments - if(!hsNF) // Add only final hadrons - { - G4LorentzVector hs4Mom = theQHadrons[jso]->Get4Momentum(); - totIn4M += hs4Mom; - totInC += theQHadrons[jso]->GetCharge(); - } - } -#endif - //G4int c3Max = 27; - //G4int c3Max = 9; // Max#of "no hadrons" steps (reduced below?) - //G4int c3Max = 3; - G4int c3Max = 1; - //G4int premC = 27; - //G4int premC = 3; - G4int premC = 1; - G4int envA=theEnvironment.GetA(); - //if(envA>1&&envA<13) premC = 24/envA; - //if(envA>1&&envA<19) premC = 36/envA; - //if(envA>1&&envA<25) premC = 48/envA; - if(envA>1&&envA<41) premC = 80/envA; - G4int sumstat= 2; // Sum of statuses of all Quasmons - G4bool force = false; // Prototype of the Force Major Flag - G4int cbR =0; // Counter of the "Stoped by Coulomb Barrier" - // - G4int cbRM =1; // MaxCounter of the "StopedByCoulombBarrier" - //G4int cbRM =3; // MaxCounter of the "StopedByCoulombBarrier" - //G4int cbRM =9; // MaxCounter of the "Stoped byCoulombBarrier" - G4int totC = 0; // Counter to break the "infinit" loop - //G4int totCM = 227; // Limit for the "infinit" loop counter - G4int totCM = envA; // Limit for the "infinit" loop counter - //G4int totCM = 27; // Limit for this counter - G4int nCnMax = 1; // MaxCounterOfHadrFolts for shortCutSolutions - //G4int nCnMax = 3; // MaxCounterOfHadrFolts for shortCutSolutions - //G4int nCnMax = 9; // MaxCounterOfHadrFolts for shortCutSolutions - G4bool first=true; // Flag of the first interaction (only NucMedia) - while (sumstat||totC<totCM) // ===***=== The MAIN "FOREVER" LOOP ===***=== + G4int nsHadr = theQHadrons.size(); // Update the value of OUTPUT entries + if(nsHadr) for(G4int jso=0; jso<nsHadr; jso++)// LOOP over output hadrons + { + G4int hsNF = theQHadrons[jso]->GetNFragments(); // A#of secondary fragments + if(!hsNF) // Add only final hadrons + { + G4LorentzVector hs4Mom = theQHadrons[jso]->Get4Momentum(); + totIn4M += hs4Mom; + totInC += theQHadrons[jso]->GetCharge(); + } + } +#endif + //G4int c3Max = 27; + //G4int c3Max = 9; // Max#of "no hadrons" steps (reduced below?) + //G4int c3Max = 3; + G4int c3Max = 1; + //G4int premC = 27; + //G4int premC = 3; + G4int premC = 1; + G4int envA=theEnvironment.GetA(); + //if(envA>1&&envA<13) premC = 24/envA; + //if(envA>1&&envA<19) premC = 36/envA; + //if(envA>1&&envA<25) premC = 48/envA; + if(envA>1&&envA<41) premC = 80/envA; + G4int sumstat= 2; // Sum of statuses of all Quasmons + G4bool force = false; // Prototype of the Force Major Flag + G4int cbR =0; // Counter of the "Stoped by Coulomb Barrier" + // + G4int cbRM =1; // MaxCounter of the "StopedByCoulombBarrier" + //G4int cbRM =3; // MaxCounter of the "StopedByCoulombBarrier" + //G4int cbRM =9; // MaxCounter of the "Stoped byCoulombBarrier" + G4int totC = 0; // Counter to break the "infinit" loop + //G4int totCM = 227; // Limit for the "infinit" loop counter + G4int totCM = envA; // Limit for the "infinit" loop counter + //G4int totCM = 27; // Limit for this counter + G4int nCnMax = 1; // MaxCounterOfHadrFolts for shortCutSolutions + //G4int nCnMax = 3; // MaxCounterOfHadrFolts for shortCutSolutions + //G4int nCnMax = 9; // MaxCounterOfHadrFolts for shortCutSolutions + G4bool first=true; // Flag of the first interaction (only NucMedia) + while (sumstat||totC<totCM) // ===***=== The MAIN "FOREVER" LOOP ===***=== { #ifdef chdebug - G4int f2Charge=0; - G4int f2BaryoN=0; - if(theEnvironment.GetMass()>0.) - { - f2Charge=theEnvironment.GetCharge(); - f2BaryoN=theEnvironment.GetA(); - } - G4int nHad=theQHadrons.size(); - if(nHad) for(G4int ih=0; ih<nHad; ih++) - { - f2Charge+=theQHadrons[ih]->GetCharge(); - f2BaryoN+=theQHadrons[ih]->GetBaryonNumber(); - } - G4int nQuas=theQuasmons.size(); - if(nQuas)for(G4int iqs=0; iqs<nQuas; iqs++) - { - f2Charge+=theQuasmons[iqs]->GetCharge(); - f2BaryoN+=theQuasmons[iqs]->GetBaryonNumber(); - } - if(f2Charge!=totCharge || f2BaryoN!=totBaryoN) - { - G4cout<<"**G4QE::HQ:(NucEnv)i#"<<totC<<",tC="<<totCharge<<",C="<<f2Charge<<",tB=" - <<totBaryoN<<",B="<<f2BaryoN<<",E="<<theEnvironment<<G4endl; - if(nHad) for(G4int h=0; h<nHad; h++) - { - G4QHadron* cH = theQHadrons[h]; - G4cout<<"G4QE::HQ:#"<<h<<",QC="<<cH->GetQC()<<",P="<<cH->GetPDGCode()<<G4endl; - } - if(nQuas) for(G4int q=0; q<nQuas; q++) - { - G4Quasmon* cQ = theQuasmons[q]; - G4cout<<"G4QE::HQ:q#"<<q<<",C="<<cQ->GetCharge()<<",QCont="<<cQ->GetQC()<<G4endl; - } - } -#endif - totC++; - if(nQuasmons==1&&sumstat==3) cbR++; - else cbR=0; - G4QContent envQC=theEnvironment.GetQCZNS();// QuarkCont of current NuclearEnvironment - G4QContent totQC=envQC; // Total QuarkContent in the system - G4double envM =theEnvironment.GetMass(); // mass of NuclEnvironment (@@GetMZNS()) - G4double sumM =envM; // Sum of all residual masses in theSystem - G4LorentzVector env4M=theEnvironment.Get4Momentum(); - G4LorentzVector tot4M=env4M; // 4-momentum of the Total System - sumstat =0; - G4int nCount=0; // Counter of notsuccessful fragmentations - G4int fCount=0; // Counter of successful(notFinal) fragm's + G4int f2Charge=0; + G4int f2BaryoN=0; + if(theEnvironment.GetMass()>0.) + { + f2Charge=theEnvironment.GetCharge(); + f2BaryoN=theEnvironment.GetA(); + } + G4int nHad=theQHadrons.size(); + if(nHad) for(G4int ih=0; ih<nHad; ih++) + { + f2Charge+=theQHadrons[ih]->GetCharge(); + f2BaryoN+=theQHadrons[ih]->GetBaryonNumber(); + } + G4int nQuas=theQuasmons.size(); + if(nQuas)for(G4int iqs=0; iqs<nQuas; iqs++) + { + f2Charge+=theQuasmons[iqs]->GetCharge(); + f2BaryoN+=theQuasmons[iqs]->GetBaryonNumber(); + } + if(f2Charge!=totCharge || f2BaryoN!=totBaryoN) + { + G4cout<<"**G4QE::HQ:(NucEnv)i#"<<totC<<",tC="<<totCharge<<",C="<<f2Charge<<",tB=" + <<totBaryoN<<",B="<<f2BaryoN<<",E="<<theEnvironment<<G4endl; + if(nHad) for(G4int h=0; h<nHad; h++) + { + G4QHadron* cH = theQHadrons[h]; + G4cout<<"G4QE::HQ:#"<<h<<",QC="<<cH->GetQC()<<",P="<<cH->GetPDGCode()<<G4endl; + } + if(nQuas) for(G4int q=0; q<nQuas; q++) + { + G4Quasmon* cQ = theQuasmons[q]; + G4cout<<"G4QE::HQ:q#"<<q<<",C="<<cQ->GetCharge()<<",QCont="<<cQ->GetQC()<<G4endl; + } + } +#endif + totC++; + if(nQuasmons==1&&sumstat==3) cbR++; + else cbR=0; + G4QContent envQC=theEnvironment.GetQCZNS();// QuarkCont of current NuclearEnvironment + G4QContent totQC=envQC; // Total QuarkContent in the system + G4double envM =theEnvironment.GetMass(); // mass of NuclEnvironment (@@GetMZNS()) + G4double sumM =envM; // Sum of all residual masses in theSystem + G4LorentzVector env4M=theEnvironment.Get4Momentum(); + G4LorentzVector tot4M=env4M; // 4-momentum of the Total System + sumstat =0; + G4int nCount=0; // Counter of notsuccessful fragmentations + G4int fCount=0; // Counter of successful(notFinal) fragm's G4int eCount=0; // Counter of not yet decayed Quasmons for (G4int iq=0; iq<nQuasmons; iq++) // Sum up Quasmons for making a decision { G4Quasmon* pQ = theQuasmons[iq]; - G4QContent QQC= pQ->GetQC(); - totQC += QQC; - G4LorentzVector Q4M= pQ->Get4Momentum(); - tot4M += Q4M; - G4double QM = Q4M.m(); - sumM += QM; - G4int Qst= pQ->GetStatus(); - sumstat += Qst; + G4QContent QQC= pQ->GetQC(); + totQC += QQC; + G4LorentzVector Q4M= pQ->Get4Momentum(); + tot4M += Q4M; + G4double QM = Q4M.m(); + sumM += QM; + G4int Qst= pQ->GetStatus(); + sumstat += Qst; #ifdef pdebug G4cout<<"G4QEnv::HadrQE:#"<<iq<<", Qst="<<Qst<<", Q="<<Q4M<<Q4M.m()<<QQC<<", Env=" - <<theEnvironment<<G4endl; -#endif - if(Qst==1||Qst==3||Qst==4) - { - fCount++; // Incr. counterSuccessfulFragmentations - nCount=0; // SetCounterNotSuccessfulFragmentations - } - if(Qst>0) eCount++; // Incr. counter of existing Quasmons + <<theEnvironment<<G4endl; +#endif + if(Qst==1||Qst==3||Qst==4) + { + fCount++; // Incr. counterSuccessfulFragmentations + nCount=0; // SetCounterNotSuccessfulFragmentations + } + if(Qst>0) eCount++; // Incr. counter of existing Quasmons } // End of summation LOOP over Quasmons - G4int totS =totQC.GetStrangeness(); // Total Strangeness of the Total System - G4int totBN =totQC.GetBaryonNumber(); // Total Baryon Number of the Total System - G4int totPDG=0; // Total PDG Code for the Current compound - G4double totM =0.; // min(GroundSt)Mass of theResidualSystem - if(totBN<2) + G4int totS =totQC.GetStrangeness(); // Total Strangeness of the Total System + G4int totBN =totQC.GetBaryonNumber(); // Total Baryon Number of the Total System + G4int totPDG=0; // Total PDG Code for the Current compound + G4double totM =0.; // min(GroundSt)Mass of theResidualSystem + if(totBN<2) { - totPDG=totQC.GetSPDGCode(); // Min totPDGCode for theCurrentCompound - if(totPDG) totM=G4QPDGCode(totPDG).GetMass(); // min Mass of the Residual System - else throw G4QException("G4QEnv::HadrQEnv: Impossible PDG for B=1"); - } - else + totPDG=totQC.GetSPDGCode(); // Min totPDGCode for theCurrentCompound + if(totPDG) totM=G4QPDGCode(totPDG).GetMass(); // min Mass of the Residual System + else throw G4QException("G4QEnv::HadrQEnv: Impossible PDG for B=1"); + } + else { - G4QNucleus totN(totQC,tot4M); // Excited nucleus for theResidualSystem - totM=totN.GetMZNS(); // min(GroundSt)Mass of theResidualSystem - totPDG=totN.GetPDG(); // Total PDG Code for the Current compound + G4QNucleus totN(totQC,tot4M); // Excited nucleus for theResidualSystem + totM=totN.GetMZNS(); // min(GroundSt)Mass of theResidualSystem + totPDG=totN.GetPDG(); // Total PDG Code for the Current compound } #ifdef fdebug G4cout<<"G4QEnv::HadrQE:totC="<<totC<<"<totCM="<<totCM<<",ss="<<sumstat<<G4endl; #endif - if(totC>=totCM||cbR>cbRM) - { - CleanUp(); - G4QHadron* evH = new G4QHadron(totQC,tot4M);// Create a Hadron for ResidualNucl - EvaporateResidual(evH); // Try to evaporate residual (del. equiv.) - return theQHadrons; + if(totC>=totCM||cbR>cbRM) + { + CleanUp(); + G4QHadron* evH = new G4QHadron(totQC,tot4M);// Create a Hadron for ResidualNucl + EvaporateResidual(evH); // Try to evaporate residual (del. equiv.) + return theQHadrons; } - // === Now we should be prepared for evaporation === - G4int totChg=totQC.GetCharge(); // Total Electric Charge of the Total System + // === Now we should be prepared for evaporation === + G4int totChg=totQC.GetCharge(); // Total Electric Charge of the Total System #ifdef pdebug - if(totPDG==90999999||totPDG==90999000||totPDG==90000999||totPDG==89999001) + if(totPDG==90999999||totPDG==90999000||totPDG==90000999||totPDG==89999001) G4cout<<"***G4QEnv::HadrQEnv: Meson (1) PDG="<<totPDG<<", M="<<tot4M.m()<<G4endl; - G4int nOH=theQHadrons.size(); // A#of output hadrons - G4LorentzVector s4M=tot4M; // Total 4-momentum (@@ only for checking) - if(nOH) for(G4int ih=0; ih<nOH; ih++) s4M+=theQHadrons[ih]->Get4Momentum(); + G4int nOH=theQHadrons.size(); // A#of output hadrons + G4LorentzVector s4M=tot4M; // Total 4-momentum (@@ only for checking) + if(nOH) for(G4int ih=0; ih<nOH; ih++) s4M+=theQHadrons[ih]->Get4Momentum(); G4cout<<"G4QEnv::HadrQE:tBN="<<totBN<<",s="<<sumstat<<",fC="<<fCount<<",eC="<<eCount - <<",En="<<theEnvironment<<",nH="<<nOH<<",tLV="<<s4M<<totQC<<nCount<<G4endl; -#endif - if(totBN<2) // => "Baryons or Mesons" case (@@antiBaryon) - { - totPDG =totQC.GetSPDGCode(); - if(totPDG && totPDG!=10 && totPDG!=1114 && totPDG!=2224) - totM=G4QPDGCode(totPDG).GetMass(); - else if(totPDG==1114) totM=mNeut+mPi; - else if(totPDG==2224) totM=mProt+mPi; - else if(totPDG==10) + <<",En="<<theEnvironment<<",nH="<<nOH<<",tLV="<<s4M<<totQC<<nCount<<G4endl; +#endif + if(totBN<2) // => "Baryons or Mesons" case (@@antiBaryon) + { + totPDG =totQC.GetSPDGCode(); + if(totPDG && totPDG!=10 && totPDG!=1114 && totPDG!=2224) + totM=G4QPDGCode(totPDG).GetMass(); + else if(totPDG==1114) totM=mNeut+mPi; + else if(totPDG==2224) totM=mProt+mPi; + else if(totPDG==10) { - G4QChipolino totChip(totQC); // define the residual as a Chipolino - totM =totChip.GetQPDG1().GetMass()+totChip.GetQPDG2().GetMass(); + G4QChipolino totChip(totQC); // define the residual as a Chipolino + totM =totChip.GetQPDG1().GetMass()+totChip.GetQPDG2().GetMass(); } - else + else { - G4cerr<<"***G4QEnv::HadrQE:totPDG="<<totPDG<<", totQC="<<totQC<<G4endl; - throw G4QException("G4QEnvironment::HadronizeQEnvir: ImpossibleHadron in CHIPS"); + G4cerr<<"***G4QEnv::HadrQE:totPDG="<<totPDG<<", totQC="<<totQC<<G4endl; + throw G4QException("G4QEnvironment::HadronizeQEnvir: ImpossibleHadron in CHIPS"); } } - G4double totMass = tot4M.m(); // Total effective Mass - G4bool Premium = eCount&&premC&&envM; // Premium condition - G4int count3 =0; - if(sumstat&&(fCount||Premium)&&!force&&count3<c3Max)//=>"Still try to decay Quasmons" + G4double totMass = tot4M.m(); // Total effective Mass + G4bool Premium = eCount&&premC&&envM; // Premium condition + G4int count3 =0; + if(sumstat&&(fCount||Premium)&&!force&&count3<c3Max)//=>"Still try to decay Quasmons" { - if(!fCount) premC--; // Reduce premium efforts counter + if(!fCount) premC--; // Reduce premium efforts counter if(nQuasmons) for (G4int jq=0; jq<nQuasmons; jq++)//FragmentationLOOP over Quasmons { G4Quasmon* pQ = theQuasmons[jq];// Pointer to the CurrentQuasmon <--<--<--+ - G4int status = pQ->GetStatus();// Old status of the Quasmon ^ + G4int status = pQ->GetStatus();// Old status of the Quasmon ^ #ifdef pdebug G4cout<<"G4QE::HQE:Status of Q#"<<jq<<" (before Fragment)="<<status<<G4endl;//^ #endif - if(status) // Skip dead Quasmons ^ - { // ^ - G4int nQuas=eCount; - if(nQuas==1&&first) nQuas=-nQuas; - G4QHadronVector* output=pQ->Fragment(theEnvironment,nQuas);//<DESTRUCT<--<--^-+ + if(status) // Skip dead Quasmons ^ + { // ^ + G4int nQuas=eCount; + if(nQuas==1&&first) nQuas=-nQuas; + G4QHadronVector* output=pQ->Fragment(theEnvironment,nQuas);//<DESTRUCT<--<--^-+ #ifdef pdebug G4cout<<"G4QE::HQE:Q#"<<jq<<",*afterFragm* Env="<<theEnvironment<<G4endl;// ^ ^ #endif - envM =theEnvironment.GetMass(); // new mass of Nuclear Environment ^ ^ - status = pQ->GetStatus(); // NewStatus after FragmentationAttempt ^ ^ - if(!status) eCount--; // Dec. ExistingQuasmonsCounter for Q=0 ^ ^ - G4int nHadrons = output->size(); // ^ ^ + envM =theEnvironment.GetMass(); // new mass of Nuclear Environment ^ ^ + status = pQ->GetStatus(); // NewStatus after FragmentationAttempt ^ ^ + if(!status) eCount--; // Dec. ExistingQuasmonsCounter for Q=0 ^ ^ + G4int nHadrons = output->size(); // ^ ^ #ifdef rdebug G4cout<<"G4QE::HQE:**AfterFragmAttempt**#"<<jq<<",stat="<<status<<", Q4M="//^ ^ - <<pQ->Get4Momentum()<<", Env="<<theEnvironment<<",nH="<<nHadrons // ^ ^ - <<",c3="<<count3<<" < "<<c3Max<<",eC="<<eCount<<G4endl; // ^ ^ - G4int tC=totInC-theEnvironment.GetZ(); // Subtract theResidualEnvironCharge ^ ^ - G4LorentzVector t4M=totIn4M; // Compare with the total ^ ^ + <<pQ->Get4Momentum()<<", Env="<<theEnvironment<<",nH="<<nHadrons // ^ ^ + <<",c3="<<count3<<" < "<<c3Max<<",eC="<<eCount<<G4endl; // ^ ^ + G4int tC=totInC-theEnvironment.GetZ(); // Subtract theResidualEnvironCharge ^ ^ + G4LorentzVector t4M=totIn4M; // Compare with the total ^ ^ G4LorentzVector theEnv4m=theEnvironment.Get4Momentum(); // Environment 4Mom ^ ^ t4M-=theEnv4m; // Subtract the Environment 4-momentum ^ ^ - G4cout<<"G4QEnv::HadrQE:SUM-4Mom e4M="<<theEnv4m<<theEnvironment<<G4endl;// ^ ^ + G4cout<<"G4QEnv::HadrQE:SUM-4Mom e4M="<<theEnv4m<<theEnvironment<<G4endl;// ^ ^ for (G4int js=0; js<nQuasmons; js++)// Subtract 4mom's of Quasmons (compare)^ ^ - { // ^ ^ + { // ^ ^ G4Quasmon* prQ = theQuasmons[js];// ^ ^ - if(prQ->GetStatus()) // Subtract only if Quasmon is alive ^ ^ - { // ^ ^ - G4LorentzVector Q4M= prQ->Get4Momentum(); // ^ ^ - G4QContent qQC= prQ->GetQC(); // ^ ^ - G4cout<<"G4QE::HQE:SUM-4Mom q("<<js<<")4M="<<Q4M<<",QC="<<qQC<<G4endl;//^ ^ - t4M -= Q4M; // ^ ^ - tC -= prQ->GetQC().GetCharge(); // ^ ^ + if(prQ->GetStatus()) // Subtract only if Quasmon is alive ^ ^ + { // ^ ^ + G4LorentzVector Q4M= prQ->Get4Momentum(); // ^ ^ + G4QContent qQC= prQ->GetQC(); // ^ ^ + G4cout<<"G4QE::HQE:SUM-4Mom q("<<js<<")4M="<<Q4M<<",QC="<<qQC<<G4endl;//^ ^ + t4M -= Q4M; // ^ ^ + tC -= prQ->GetQC().GetCharge(); // ^ ^ } // ^ ^ - else G4cout<<"G4QE::HQE:SUM-4M,st("<<js<<")="<<prQ->GetStatus()<<G4endl;//^ ^ + else G4cout<<"G4QE::HQE:SUM-4M,st("<<js<<")="<<prQ->GetStatus()<<G4endl;//^ ^ } // End of Quasmons4Momentum subtractions ^ ^ - G4int nsbHadr=theQHadrons.size(); // Update the value of OUTPUT entries ^ ^ - if(nsbHadr) for(G4int jpo=0; jpo<nsbHadr; jpo++)// LOOP over output hadrons ^ ^ + G4int nsbHadr=theQHadrons.size(); // Update the value of OUTPUT entries ^ ^ + if(nsbHadr) for(G4int jpo=0; jpo<nsbHadr; jpo++)// LOOP over output hadrons ^ ^ { // ^ ^ - G4int hsNF = theQHadrons[jpo]->GetNFragments();// A#of out fragments ^ ^ - if(!hsNF) // Subtract only final hadrons ^ ^ - { // ^ ^ - G4LorentzVector hs4Mom = theQHadrons[jpo]->Get4Momentum(); // ^ ^ - G4int hPDG = theQHadrons[jpo]->GetPDGCode(); // ^ ^ - G4cout<<"G4QE::HQE:SUM-4-Mom eh("<<jpo<<")4M="<<hs4Mom<<hPDG<<G4endl;// ^ ^ - t4M -= hs4Mom; // ^ ^ - tC -= theQHadrons[jpo]->GetCharge(); // ^ ^ + G4int hsNF = theQHadrons[jpo]->GetNFragments();// A#of out fragments ^ ^ + if(!hsNF) // Subtract only final hadrons ^ ^ + { // ^ ^ + G4LorentzVector hs4Mom = theQHadrons[jpo]->Get4Momentum(); // ^ ^ + G4int hPDG = theQHadrons[jpo]->GetPDGCode(); // ^ ^ + G4cout<<"G4QE::HQE:SUM-4-Mom eh("<<jpo<<")4M="<<hs4Mom<<hPDG<<G4endl;// ^ ^ + t4M -= hs4Mom; // ^ ^ + tC -= theQHadrons[jpo]->GetCharge(); // ^ ^ } // End of the "FinalHadron" IF ^ ^ - } // End of the LOOP over output hadrons ^ ^ - if(nHadrons) for(G4int kpo=0; kpo<nHadrons; kpo++)//LOOP over out QHadrons ^ ^ - { // ^ ^ + } // End of the LOOP over output hadrons ^ ^ + if(nHadrons) for(G4int kpo=0; kpo<nHadrons; kpo++)//LOOP over out QHadrons ^ ^ + { // ^ ^ //G4QHadron* insH =output->operator[](kpo);// Pointer to theOutputQHadron ^ ^ G4QHadron* insH = (*output)[kpo];// Pointer to the Output QHadron ^ ^ - G4int qhsNF = insH->GetNFragments(); // A#of secondary fragments ^ ^ - if(!qhsNF) // Subtract only final hadrons ^ ^ + G4int qhsNF = insH->GetNFragments(); // A#of secondary fragments ^ ^ + if(!qhsNF) // Subtract only final hadrons ^ ^ { // ^ ^ - G4LorentzVector qhs4Mom = insH->Get4Momentum();// 4M of theOutputQHadron^ ^ - G4int hPDG = insH->GetPDGCode(); // PDG Code of the Q-output Hadron ^ ^ - G4cout<<"G4QE::HQE:SUM-4-Mom qh("<<kpo<<")4M="<<qhs4Mom<<hPDG<<G4endl;//^ ^ - t4M -= qhs4Mom; // ^ ^ - tC -= insH->GetCharge(); // ^ ^ + G4LorentzVector qhs4Mom = insH->Get4Momentum();// 4M of theOutputQHadron^ ^ + G4int hPDG = insH->GetPDGCode(); // PDG Code of the Q-output Hadron ^ ^ + G4cout<<"G4QE::HQE:SUM-4-Mom qh("<<kpo<<")4M="<<qhs4Mom<<hPDG<<G4endl;//^ ^ + t4M -= qhs4Mom; // ^ ^ + tC -= insH->GetCharge(); // ^ ^ } // ^ ^ - } // End of the LOOP over output QHadrons ^ ^ - G4cout<<"G4QEnv::HadrQE:|||||4-MomCHECK||||d4M="<<t4M<<",dC="<<tC<<G4endl;//^ ^ -#endif - if(!status||status==1||nHadrons) //OutHadronVector was filled in G4Q::Frag ^ ^ - { // ^ ^ - nCount=0; // Reset the NotSuccessfulFragmCounter ^ ^ - if(nHadrons>0) // Transfer QHadrons from Quasm to Output ^ ^ - { // ^ ^ - for (G4int ih=0; ih<nHadrons; ih++) // LOOP over Q-output QHadrons ^ ^ - { // ^ ^ + } // End of the LOOP over output QHadrons ^ ^ + G4cout<<"G4QEnv::HadrQE:|||||4-MomCHECK||||d4M="<<t4M<<",dC="<<tC<<G4endl;//^ ^ +#endif + if(!status||status==1||nHadrons) //OutHadronVector was filled in G4Q::Frag ^ ^ + { // ^ ^ + nCount=0; // Reset the NotSuccessfulFragmCounter ^ ^ + if(nHadrons>0) // Transfer QHadrons from Quasm to Output ^ ^ + { // ^ ^ + for (G4int ih=0; ih<nHadrons; ih++) // LOOP over Q-output QHadrons ^ ^ + { // ^ ^ //G4QHadron* inpH = output->operator[](ih); // ^ ^ G4QHadron* inpH = (*output)[ih]; // ^ ^ - G4int hC=inpH->GetCharge(); // Charge of the Hadron ^ ^ - G4int hF=inpH->GetNFragments();// Number of fragments ^ ^ - G4double hCB=0.; // Coulomb Barrier ^ ^ - G4double hKE=0.; // Kinetic Energy of the Hadron ^ ^ - G4LorentzVector hLV=inpH->Get4Momentum(); // ^ ^ -#ifdef pdebug - G4cout<<"G4QEnv::HadrQE:H#"<<ih<<", hC="<<hC<<",hF="<<hF<<",4M=" // ^ ^ - <<hLV<<inpH->GetPDGCode()<<G4endl; // ^ ^ -#endif - G4bool can=hC&&!hF; // Charged and not yet decayed hadron ^ ^ - if(can) // ^ ^ - { // ^ ^ - G4int hB=inpH->GetBaryonNumber(); // ^ ^ - hCB=theEnvironment.CoulombBarrier(hC,hB); // ^ ^ - hKE=hLV.e()-hLV.m(); // ^ ^ + G4int hC=inpH->GetCharge(); // Charge of the Hadron ^ ^ + G4int hF=inpH->GetNFragments();// Number of fragments ^ ^ + G4double hCB=0.; // Coulomb Barrier ^ ^ + G4double hKE=0.; // Kinetic Energy of the Hadron ^ ^ + G4LorentzVector hLV=inpH->Get4Momentum(); // ^ ^ +#ifdef pdebug + G4cout<<"G4QEnv::HadrQE:H#"<<ih<<", hC="<<hC<<",hF="<<hF<<",4M=" // ^ ^ + <<hLV<<inpH->GetPDGCode()<<G4endl; // ^ ^ +#endif + G4bool can=hC&&!hF; // Charged and not yet decayed hadron ^ ^ + if(can) // ^ ^ + { // ^ ^ + G4int hB=inpH->GetBaryonNumber(); // ^ ^ + hCB=theEnvironment.CoulombBarrier(hC,hB); // ^ ^ + hKE=hLV.e()-hLV.m(); // ^ ^ } // ^ ^ - if(can&&hKE<hCB) // => "Suck Hadron in Quasm or Env" case ^ ^ + if(can&&hKE<hCB) // => "Suck Hadron in Quasm or Env" case ^ ^ { // ^ ^ - if(status) // => "Suck in the existing Quasmon" case ^ ^ - { // ^ ^ - G4QContent tQC=inpH->GetQC()+pQ->GetQC(); // ^ ^ - G4LorentzVector tLV=hLV+pQ->Get4Momentum();// ^ ^ - pQ->InitQuasmon(tQC,tLV); // Reinitialize the current Quasmon ^ ^ + if(status) // => "Suck in the existing Quasmon" case ^ ^ + { // ^ ^ + G4QContent tQC=inpH->GetQC()+pQ->GetQC(); // ^ ^ + G4LorentzVector tLV=hLV+pQ->Get4Momentum();// ^ ^ + pQ->InitQuasmon(tQC,tLV); // Reinitialize the current Quasmon ^ ^ #ifdef pdebug G4cout<<"G4QE::HQE:Medium, H#"<<ih<<", QPDG="<<inpH->GetQPDG() // ^ ^ - <<",4M="<<inpH->Get4Momentum()<<" is suckedInQ"<<G4endl; // ^ ^ + <<",4M="<<inpH->Get4Momentum()<<" is suckedInQ"<<G4endl; // ^ ^ #endif } // ^ ^ - else // => "Suck in the existing Quasmon" case ^ ^ - { // ^ ^ - G4QContent tQC=inpH->GetQC()+theEnvironment.GetQCZNS();// ^ ^ - G4LorentzVector tLV=hLV+theEnvironment.Get4Momentum(); // ^ ^ - theEnvironment=G4QNucleus(tQC,tLV); // Reinit currentEnvironment ^ ^ + else // => "Suck in the existing Quasmon" case ^ ^ + { // ^ ^ + G4QContent tQC=inpH->GetQC()+theEnvironment.GetQCZNS();// ^ ^ + G4LorentzVector tLV=hLV+theEnvironment.Get4Momentum(); // ^ ^ + theEnvironment=G4QNucleus(tQC,tLV); // Reinit currentEnvironment ^ ^ #ifdef pdebug G4cout<<"G4QE::HQE:Med,H#"<<ih<<",PDG="<<inpH->GetQPDG()<<",4M="//^ ^ - <<inpH->Get4Momentum()<<" is suckedInEnvironment"<<G4endl;//^ ^ + <<inpH->Get4Momentum()<<" is suckedInEnvironment"<<G4endl;//^ ^ #endif } // End of the STATUS IF ^ ^ } // End of the E/Q suck Hdron IF ^ ^ - else if(!hF) // => "Hadron can go out" case ^ ^ - { // ^ ^ - G4QHadron* curH = new G4QHadron(inpH); // ^ ^ -#ifdef pdebug - G4LorentzVector ph4M=curH->Get4Momentum(); // 4-mom of the hadron ^ ^ - G4double phX=ph4M.x(); // p_x of the hadron ^ ^ - G4double phY=ph4M.y(); // p_y of the hadron ^ ^ - G4double phZ=ph4M.z(); // p_x of the hadron ^ ^ - G4double phCost=phZ/sqrt(phX*phX+phY*phY+phZ*phZ);// Hadr cos(theta)^ ^ + else if(!hF) // => "Hadron can go out" case ^ ^ + { // ^ ^ + G4QHadron* curH = new G4QHadron(inpH); // ^ ^ +#ifdef pdebug + G4LorentzVector ph4M=curH->Get4Momentum(); // 4-mom of the hadron ^ ^ + G4double phX=ph4M.x(); // p_x of the hadron ^ ^ + G4double phY=ph4M.y(); // p_y of the hadron ^ ^ + G4double phZ=ph4M.z(); // p_x of the hadron ^ ^ + G4double phCost=phZ/sqrt(phX*phX+phY*phY+phZ*phZ);// Hadr cos(theta)^ ^ G4cout<<"G4QEnv::HadrQE:Medium, H#"<<ih<<",QPDG="<<curH->GetQPDG()//^ ^ - <<", 4M="<<ph4M<<", ct="<<phCost<<G4endl; // ^ ^ + <<", 4M="<<ph4M<<", ct="<<phCost<<G4endl; // ^ ^ #endif - theQHadrons.push_back(curH); // Fill hadron-copy (delete equivalent)^ ^ - totQC-=curH->GetQC(); // ^ ^ - tot4M-=curH->Get4Momentum(); // ^ ^ + theQHadrons.push_back(curH); // Fill hadron-copy (delete equivalent)^ ^ + totQC-=curH->GetQC(); // ^ ^ + tot4M-=curH->Get4Momentum(); // ^ ^ } // ^ ^ } // ==> End of the LOOP over outQHadrons ^ ^ - pQ->ClearOutput(); // Hadrons are filled, Clear Frag-out <-<-^ ^ - count3=0; // Reset counter of empty hadronizations ^ - //c3Max=1; // Reduce repetition Max to accelerate ^ - first=false; // First hadronization is for sure is over ^ + pQ->ClearOutput(); // Hadrons are filled, Clear Frag-out <-<-^ ^ + count3=0; // Reset counter of empty hadronizations ^ + //c3Max=1; // Reduce repetition Max to accelerate ^ + first=false; // First hadronization is for sure is over ^ } // ^ - else count3++; // Increment counter of empty hadronizations^ + else count3++; // Increment counter of empty hadronizations^ } // ^ - else if(status<0||status==2) // => "PANIC or NOTHING was done" case ^ - { // ^ + else if(status<0||status==2) // => "PANIC or NOTHING was done" case ^ + { // ^ #ifdef pdebug G4cout<<"G4QE::HQE:***PANIC***,status="<<status<<",nC="<<nCount<<G4endl; // ^ #endif nCount++; // ^ - if(eCount==1 && status<0 && CheckGroundState(pQ,true))// Correct & Finish ^ - { // ^ - for_each(output->begin(), output->end(), DeleteQHadron()); // ->->->------^ - output->clear(); // ^ - delete output; // >========================================^ - pQ->KillQuasmon(); // If BackFusion succeeded, kill the Quasmon^ - delete pQ; - eCount--; // Reduce the number of the living Quasmons ^ - return theQHadrons; // ^ - } // ^ - else if(status<0&&nHadrons) // This is just a confusion in the status...^ - { // ^ + if(eCount==1 && status<0 && CheckGroundState(pQ,true))// Correct & Finish ^ + { // ^ + for_each(output->begin(), output->end(), DeleteQHadron()); // ->->->------^ + output->clear(); // ^ + delete output; // >========================================^ + pQ->KillQuasmon(); // If BackFusion succeeded, kill the Quasmon^ + delete pQ; + eCount--; // Reduce the number of the living Quasmons ^ + return theQHadrons; // ^ + } // ^ + else if(status<0&&nHadrons) // This is just a confusion in the status...^ + { // ^ G4cerr<<"***G4QEnv::HadrQE: nH="<<nHadrons<<"< status="<<status<<G4endl;//^ - for_each(output->begin(), output->end(), DeleteQHadron()); // -->-->-->---^ - output->clear(); // ^ - delete output; // >========================================^ - throw G4QException("G4QEnvironment::HadronizeQEnvironment:DoNothingEr");//^ + for_each(output->begin(), output->end(), DeleteQHadron()); // -->-->-->---^ + output->clear(); // ^ + delete output; // >========================================^ + throw G4QException("G4QEnvironment::HadronizeQEnvironment:DoNothingEr");//^ } // ^ - else if(status==2&&nCount>nCnMax)// Treat PANIC for stat=2 (NothingWasDone) ^ - { // ^ - G4QContent qQC=pQ->GetQC(); // QuarkContent of the Quasmon ^ - G4int pqC=qQC.GetCharge(); // Charge (nP) of the Current Quasmon ^ - G4int pqS=qQC.GetStrangeness(); // Strangeness (nL) of theCurrQuasmon^ - G4int pqB=qQC.GetBaryonNumber(); // BaryNumber of the CurrentQuasmon ^ - G4LorentzVector cq4M=pQ->Get4Momentum(); // 4Mom of the Current Quasmon ^ - G4double cqMass=cq4M.m(); // Real Mass of the current Quasmon ^ - G4double fqMass=G4QPDGCode(22).GetNuclMass(pqC,pqB-pqC-pqS,pqS);//CQ FreeM^ + else if(status==2&&nCount>nCnMax)// Treat PANIC for stat=2 (NothingWasDone) ^ + { // ^ + G4QContent qQC=pQ->GetQC(); // QuarkContent of the Quasmon ^ + G4int pqC=qQC.GetCharge(); // Charge (nP) of the Current Quasmon ^ + G4int pqS=qQC.GetStrangeness(); // Strangeness (nL) of theCurrQuasmon^ + G4int pqB=qQC.GetBaryonNumber(); // BaryNumber of the CurrentQuasmon ^ + G4LorentzVector cq4M=pQ->Get4Momentum(); // 4Mom of the Current Quasmon ^ + G4double cqMass=cq4M.m(); // Real Mass of the current Quasmon ^ + G4double fqMass=G4QPDGCode(22).GetNuclMass(pqC,pqB-pqC-pqS,pqS);//CQ FreeM^ #ifdef edebug - G4cout<<"G4QEnv::HQE:M="<<cqMass<<">fM="<<fqMass<<",S="<<pqS<<",C="<<pqC//^ - <<",ePDG="<<theEnvironment.GetPDG()<<",qQC="<<qQC<<",eC="<<eCount //^ - <<G4endl; // ^ + G4cout<<"G4QEnv::HQE:M="<<cqMass<<">fM="<<fqMass<<",S="<<pqS<<",C="<<pqC//^ + <<",ePDG="<<theEnvironment.GetPDG()<<",qQC="<<qQC<<",eC="<<eCount //^ + <<G4endl; // ^ #endif - if(pqB>0&&pqS<0&&cqMass>fqMass)// "AntiStrangeNucleus-Chipolino" case ^ + if(pqB>0&&pqS<0&&cqMass>fqMass)// "AntiStrangeNucleus-Chipolino" case ^ { // ^ - G4QHadron* nuclQ = new G4QHadron(qQC,cq4M);// Hadron for AntiStrangeNuc.^ - theEnvironment.DecayAntiStrange(nuclQ,&theQHadrons);// AntiStrange(D.E.)^ - pQ->KillQuasmon(); // If BackFusion succeeded, kill theQuasmon ^ + G4QHadron* nuclQ = new G4QHadron(qQC,cq4M);// Hadron for AntiStrangeNuc.^ + theEnvironment.DecayAntiStrange(nuclQ,&theQHadrons);// AntiStrange(D.E.)^ + pQ->KillQuasmon(); // If BackFusion succeeded, kill theQuasmon ^ #ifdef edebug - G4cout<<"G4QEnv::HQE:Status after kill (#"<<jq<<")="<<pQ->GetStatus()// ^ - <<", nH="<<theQHadrons.size()<<G4endl; // ^ -#endif - tot4M-=cq4M; // Update TotalResidNucleus for hadronizPro.^ - totQC-=qQC; // Update total QC for the HadronizationPro.^ - eCount--; // Reduce the number of the living Quasmons ^ - } // ^ - else if(theEnvironment.GetPDG()!=NUCPDG) // ==> "NuclearEnvironment" case ^ + G4cout<<"G4QEnv::HQE:Status after kill (#"<<jq<<")="<<pQ->GetStatus()// ^ + <<", nH="<<theQHadrons.size()<<G4endl; // ^ +#endif + tot4M-=cq4M; // Update TotalResidNucleus for hadronizPro.^ + totQC-=qQC; // Update total QC for the HadronizationPro.^ + eCount--; // Reduce the number of the living Quasmons ^ + } // ^ + else if(theEnvironment.GetPDG()!=NUCPDG) // ==> "NuclearEnvironment" case ^ { // ^ - if(eCount>1) // ^ + if(eCount>1) // ^ { // ^ #ifdef fdebug G4cout<<"G4QE::HQE:TOTEVAP tPDG="<<totPDG<<",t4M="<<tot4M<<G4endl; // ^ #endif - G4QHadron* evH = new G4QHadron(totQC,tot4M); // Create Hadron-ResidNuc^ - CleanUp(); // ^ - EvaporateResidual(evH); // Evaporate ResNuc (delete equivalemt) ^ - for_each(output->begin(), output->end(), DeleteQHadron());// >--------^ - output->clear(); // ^ - delete output; // >==========>===========>=================^ - return theQHadrons; // ^ - } // ^ - G4LorentzVector t4M=cq4M+theEnvironment.Get4Momentum(); // Q+E tot4Mom ^ - G4double tM=t4M.m(); // Real total (Quasmon+Environment) mass ^ - G4QContent envQC=theEnvironment.GetQCZNS(); // QuarkCont of NucEnviron ^ - G4QContent curQC=envQC+qQC; // Total Quark Content ^ - G4QNucleus curE(curQC); // Pseudo nucleus for the Total System ^ - G4double curM=curE.GetGSMass();// min mass of the Total System ^ + G4QHadron* evH = new G4QHadron(totQC,tot4M); // Create Hadron-ResidNuc^ + CleanUp(); // ^ + EvaporateResidual(evH); // Evaporate ResNuc (delete equivalemt) ^ + for_each(output->begin(), output->end(), DeleteQHadron());// >--------^ + output->clear(); // ^ + delete output; // >==========>===========>=================^ + return theQHadrons; // ^ + } // ^ + G4LorentzVector t4M=cq4M+theEnvironment.Get4Momentum(); // Q+E tot4Mom ^ + G4double tM=t4M.m(); // Real total (Quasmon+Environment) mass ^ + G4QContent envQC=theEnvironment.GetQCZNS(); // QuarkCont of NucEnviron ^ + G4QContent curQC=envQC+qQC; // Total Quark Content ^ + G4QNucleus curE(curQC); // Pseudo nucleus for the Total System ^ + G4double curM=curE.GetGSMass();// min mass of the Total System ^ #ifdef edebug - G4cout<<"G4QEnv::HQE:Q#"<<jq<<",tM="<<tM<<">gsM="<<curM<<curE<<G4endl;//^ + G4cout<<"G4QEnv::HQE:Q#"<<jq<<",tM="<<tM<<">gsM="<<curM<<curE<<G4endl;//^ #endif - if(tM<curM) // ^ - { - G4int qPDG=qQC.GetZNSPDGCode();// PDG Code of the Quasmon ^ - G4double qMass=G4QPDGCode(qPDG).GetMass(); // GroundStM of theQuasmon ^ + if(tM<curM) // ^ + { + G4int qPDG=qQC.GetZNSPDGCode();// PDG Code of the Quasmon ^ + G4double qMass=G4QPDGCode(qPDG).GetMass(); // GroundStM of theQuasmon ^ #ifdef edebug - G4cout<<"G4QE::HQE:nQ="<<nQuasmons<<",eC="<<eCount<<",qPDG="<<qPDG // ^ - <<",qM="<<qMass<<",eM="<<envM<<",tM="<<tM<<",Q+E="<<qMass+envM//^ - <<G4endl; // ^ + G4cout<<"G4QE::HQE:nQ="<<nQuasmons<<",eC="<<eCount<<",qPDG="<<qPDG // ^ + <<",qM="<<qMass<<",eM="<<envM<<",tM="<<tM<<",Q+E="<<qMass+envM//^ + <<G4endl; // ^ #endif - if(eCount==1&&qPDG&&qMass&&tM>qMass+envM)//==> Q+E decay for one Quasm^ + if(eCount==1&&qPDG&&qMass&&tM>qMass+envM)//==> Q+E decay for one Quasm^ //if(nQuasmons==1 && qPDG && qMass && tM>qMass+envM) // ==> Q+E decay ^ - { // ^ - G4int envPDG = theEnvironment.GetPDG(); // PDGCode of the NuclQEnv. ^ + { // ^ + G4int envPDG = theEnvironment.GetPDG(); // PDGCode of the NuclQEnv. ^ #ifdef edebug G4cout<<"G4QEnv::HadrQEnv: Q+E decay, nQ=1, qPDG=="<<qPDG<<G4endl;//^ #endif - // => "Quasmon-Chipolino or Environment-Dibaryon" case ^ - if(qPDG==10 || qPDG==92000000 || qPDG==90002000 || qPDG==90000002)//^ + // => "Quasmon-Chipolino or Environment-Dibaryon" case ^ + if(qPDG==10 || qPDG==92000000 || qPDG==90002000 || qPDG==90000002)//^ { // ^ - G4QPDGCode h1QPDG=nQPDG; // QPDG of the first hadron ^ - G4double h1M =mNeut; // Mass of the first hadron ^ - G4QPDGCode h2QPDG=h1QPDG;// QPDG of the second hadron ^ - G4double h2M =mNeut; // Mass of the second hadron ^ - if(qPDG==10) // CHIPOLINO decay case ^ + G4QPDGCode h1QPDG=nQPDG; // QPDG of the first hadron ^ + G4double h1M =mNeut; // Mass of the first hadron ^ + G4QPDGCode h2QPDG=h1QPDG;// QPDG of the second hadron ^ + G4double h2M =mNeut; // Mass of the second hadron ^ + if(qPDG==10) // CHIPOLINO decay case ^ { // ^ - G4QChipolino QChip(qQC);// define the Quasmon as a Chipolino ^ - h1QPDG=QChip.GetQPDG1();// QPDG of the first hadron ^ - h1M =h1QPDG.GetMass();// Mass of the first hadron ^ - h2QPDG=QChip.GetQPDG2();// QPDG of the second hadron ^ - h2M =h2QPDG.GetMass();// Mass of the second hadron ^ + G4QChipolino QChip(qQC);// define the Quasmon as a Chipolino ^ + h1QPDG=QChip.GetQPDG1();// QPDG of the first hadron ^ + h1M =h1QPDG.GetMass();// Mass of the first hadron ^ + h2QPDG=QChip.GetQPDG2();// QPDG of the second hadron ^ + h2M =h2QPDG.GetMass();// Mass of the second hadron ^ } // ^ else if(qPDG==90002000) // DiProton decay case ^ - { // ^ - h1QPDG=pQPDG; // QPDG of the first hadron ^ - h1M =mProt; // Mass of the first hadron ^ - h2QPDG=h1QPDG; // QPDG of the second hadron ^ - h2M =mProt; // Mass of the second hadron ^ + { // ^ + h1QPDG=pQPDG; // QPDG of the first hadron ^ + h1M =mProt; // Mass of the first hadron ^ + h2QPDG=h1QPDG; // QPDG of the second hadron ^ + h2M =mProt; // Mass of the second hadron ^ } // ^ else if(qPDG==92000000) // Two lambdas case ^ - { // ^ - h1QPDG=lQPDG; // QPDG of the first hadron ^ - h1M =mLamb; // Mass of the first hadron ^ - h2QPDG=h1QPDG; // QPDG of the second hadron ^ - h2M =mLamb; // Mass of the second hadron ^ - G4double ddMass=totMass-envM; // Free CM energy ^ - if(ddMass>mSigZ+mSigZ) // Sigma0+Sigma0 is possible ^ + { // ^ + h1QPDG=lQPDG; // QPDG of the first hadron ^ + h1M =mLamb; // Mass of the first hadron ^ + h2QPDG=h1QPDG; // QPDG of the second hadron ^ + h2M =mLamb; // Mass of the second hadron ^ + G4double ddMass=totMass-envM; // Free CM energy ^ + if(ddMass>mSigZ+mSigZ) // Sigma0+Sigma0 is possible ^ { // @@ Only two particles PS is used ^ - G4double dd2=ddMass*ddMass; // Squared free energy ^ - G4double sma=mLamb+mLamb; // Lambda+Lambda sum ^ - G4double pr1=0.; // Prototype to avoid sqrt(-) ^ - if(ddMass>sma) pr1=sqrt((dd2-sma*sma)*dd2); // Lamb+Lamb PS ^ - sma=mLamb+mSigZ; // Lambda+Sigma0 sum ^ - G4double smi=mSigZ-mLamb; // Sigma0-Lambda difference ^ - G4double pr2=pr1; // Prototype of +L+S0 PS ^ + G4double dd2=ddMass*ddMass; // Squared free energy ^ + G4double sma=mLamb+mLamb; // Lambda+Lambda sum ^ + G4double pr1=0.; // Prototype to avoid sqrt(-) ^ + if(ddMass>sma) pr1=sqrt((dd2-sma*sma)*dd2); // Lamb+Lamb PS ^ + sma=mLamb+mSigZ; // Lambda+Sigma0 sum ^ + G4double smi=mSigZ-mLamb; // Sigma0-Lambda difference ^ + G4double pr2=pr1; // Prototype of +L+S0 PS ^ if(ddMass>sma&&ddMass>smi) // ^ pr2+=sqrt((dd2-sma*sma)*(dd2-smi*smi)); // ^ - sma=mSigZ+mSigZ; // Sigma0+Sigma0 sum ^ - G4double pr3=pr2; // Prototype of +Sigma0+Sigma0 PS ^ - if(ddMass>sma) pr3+=sqrt((dd2-sma*sma)*dd2); // ^ - G4double hhRND=pr3*G4UniformRand(); // Randomize PS ^ - if(hhRND>pr2) // --> "ENnv+Sigma0+Sigma0" case ^ - { // ^ - h1QPDG=s0QPDG; // QPDG of the first hadron ^ - h1M =mSigZ; // Mass of the first hadron ^ - h2QPDG=h1QPDG; // QPDG of the second hadron ^ - h2M =mSigZ; // Mass of the second hadron ^ - } // ^ - else if(hhRND>pr1)// --> "ENnv+Sigma0+Lambda" case ^ - { // ^ - h1QPDG=s0QPDG; // QPDG of the first hadron ^ - h1M =mSigZ; // Mass of the first hadron ^ - } // ^ - } // ^ - else if(ddMass>mSigZ+mLamb) // Lambda+Sigma0 is possible ^ + sma=mSigZ+mSigZ; // Sigma0+Sigma0 sum ^ + G4double pr3=pr2; // Prototype of +Sigma0+Sigma0 PS ^ + if(ddMass>sma) pr3+=sqrt((dd2-sma*sma)*dd2); // ^ + G4double hhRND=pr3*G4UniformRand(); // Randomize PS ^ + if(hhRND>pr2) // --> "ENnv+Sigma0+Sigma0" case ^ + { // ^ + h1QPDG=s0QPDG; // QPDG of the first hadron ^ + h1M =mSigZ; // Mass of the first hadron ^ + h2QPDG=h1QPDG; // QPDG of the second hadron ^ + h2M =mSigZ; // Mass of the second hadron ^ + } // ^ + else if(hhRND>pr1)// --> "ENnv+Sigma0+Lambda" case ^ + { // ^ + h1QPDG=s0QPDG; // QPDG of the first hadron ^ + h1M =mSigZ; // Mass of the first hadron ^ + } // ^ + } // ^ + else if(ddMass>mSigZ+mLamb) // Lambda+Sigma0 is possible ^ { // @@ Only two particles PS is used ^ - G4double dd2=ddMass*ddMass; // Squared free energy ^ - G4double sma=mLamb+mLamb; // Lambda+Lambda sum ^ - G4double pr1=0.; // Prototype to avoid sqrt(-) ^ - if(ddMass>sma) pr1=sqrt((dd2-sma*sma)*dd2); // Lamb+Lamb PS ^ - sma=mLamb+mSigZ; // Lambda+Sigma0 sum ^ - G4double smi=mSigZ-mLamb; // Sigma0-Lambda difference ^ - G4double pr2=pr1; //+L+S0 PS ^ - if(ddMass>sma && ddMass>smi) // ^ + G4double dd2=ddMass*ddMass; // Squared free energy ^ + G4double sma=mLamb+mLamb; // Lambda+Lambda sum ^ + G4double pr1=0.; // Prototype to avoid sqrt(-) ^ + if(ddMass>sma) pr1=sqrt((dd2-sma*sma)*dd2); // Lamb+Lamb PS ^ + sma=mLamb+mSigZ; // Lambda+Sigma0 sum ^ + G4double smi=mSigZ-mLamb; // Sigma0-Lambda difference ^ + G4double pr2=pr1; //+L+S0 PS ^ + if(ddMass>sma && ddMass>smi) // ^ pr2+=sqrt((dd2-sma*sma)*(dd2-smi*smi)); // ^ - if(pr2*G4UniformRand()>pr1) // --> "ENnv+Sigma0+Lambda" case ^ - { // ^ - h1QPDG=s0QPDG; // QPDG of the first hadron ^ - h1M =mSigZ; // Mass of the first hadron ^ - } // ^ - } // ^ + if(pr2*G4UniformRand()>pr1) // --> "ENnv+Sigma0+Lambda" case ^ + { // ^ + h1QPDG=s0QPDG; // QPDG of the first hadron ^ + h1M =mSigZ; // Mass of the first hadron ^ + } // ^ + } // ^ } // ^ - if(h1M+h2M+envM<totMass) // => "Three parts decay" case ^ - { // ^ - G4LorentzVector h14M(0.,0.,0.,h1M); // ^ - G4LorentzVector h24M(0.,0.,0.,h2M); // ^ - G4LorentzVector e4M(0.,0.,0.,envM); // ^ - if(!G4QHadron(tot4M).DecayIn3(h14M,h24M,e4M)) // ^ - { // ^ + if(h1M+h2M+envM<totMass) // => "Three parts decay" case ^ + { // ^ + G4LorentzVector h14M(0.,0.,0.,h1M); // ^ + G4LorentzVector h24M(0.,0.,0.,h2M); // ^ + G4LorentzVector e4M(0.,0.,0.,envM); // ^ + if(!G4QHadron(tot4M).DecayIn3(h14M,h24M,e4M)) // ^ + { // ^ G4cerr<<"***G4QE::HQE:(0)tM="<<tot4M.m()<<"->h1="<<h1QPDG // ^ - <<"("<<h1M<<")+h2="<<h1QPDG<<"("<<h2M<<")+envM="<<envM//^ - <<"=="<<h1M+h2M+envM<<G4endl; // ^ + <<"("<<h1M<<")+h2="<<h1QPDG<<"("<<h2M<<")+envM="<<envM//^ + <<"=="<<h1M+h2M+envM<<G4endl; // ^ throw G4QException("**G4QE::HadrQEnv:QChip+E DecIn3 error");//^ } // ^ - G4QHadron* h1H = new G4QHadron(h1QPDG.GetPDGCode(),h14M); // ^ - theQHadrons.push_back(h1H); // (delete equivalent) ^ + G4QHadron* h1H = new G4QHadron(h1QPDG.GetPDGCode(),h14M); // ^ + theQHadrons.push_back(h1H); // (delete equivalent) ^ #ifdef pdebug G4cout<<"G4QE::HQE:(1) H1="<<h1QPDG<<h14M<<G4endl; // ^ #endif - G4QHadron* h2H = new G4QHadron(h2QPDG.GetPDGCode(),h24M); // ^ - theQHadrons.push_back(h2H); // (delete equivalent) ^ + G4QHadron* h2H = new G4QHadron(h2QPDG.GetPDGCode(),h24M); // ^ + theQHadrons.push_back(h2H); // (delete equivalent) ^ #ifdef pdebug - G4cout<<"G4QE::HQE:(1) H2="<<h2QPDG<<h24M<<G4endl; // ^ + G4cout<<"G4QE::HQE:(1) H2="<<h2QPDG<<h24M<<G4endl; // ^ #endif - G4QHadron* qeH = new G4QHadron(envPDG,e4M); // ^ - theQHadrons.push_back(qeH); // (delete equivalent) ^ + G4QHadron* qeH = new G4QHadron(envPDG,e4M); // ^ + theQHadrons.push_back(qeH); // (delete equivalent) ^ #ifdef pdebug - G4cout<<"G4QE::HQE:(1) QEnv="<<envPDG<<e4M<<G4endl; // ^ + G4cout<<"G4QE::HQE:(1) QEnv="<<envPDG<<e4M<<G4endl; // ^ #endif } // ^ else // Try to recover ^ - { // ^ - //if(eCount==1&&CheckGroundState(pQ,true)) // @@ BackFusion ^ - if(eCount==1&&CheckGroundState(pQ))// BackFusion attempt ^ + { // ^ + //if(eCount==1&&CheckGroundState(pQ,true)) // @@ BackFusion ^ + if(eCount==1&&CheckGroundState(pQ))// BackFusion attempt ^ { // ^ - pQ->KillQuasmon();// ?? ^ - eCount--; // Reduce a#of theLivingQuasmons ^ - for_each(output->begin(),output->end(),DeleteQHadron()); // ^ - output->clear(); // -->-->-->-->-->-->-->-->-->-->-->-->-->--^ - delete output; // >========================================^ - return theQHadrons; // ^ - } // ^ - for_each(output->begin(),output->end(),DeleteQHadron()); //-->--^ - output->clear(); // -->-->-->-->-->-->-->-->-->-->-->-->-->--^ - delete output; // >========================================^ + pQ->KillQuasmon();// ?? ^ + eCount--; // Reduce a#of theLivingQuasmons ^ + for_each(output->begin(),output->end(),DeleteQHadron()); // ^ + output->clear(); // -->-->-->-->-->-->-->-->-->-->-->-->-->--^ + delete output; // >========================================^ + return theQHadrons; // ^ + } // ^ + for_each(output->begin(),output->end(),DeleteQHadron()); //-->--^ + output->clear(); // -->-->-->-->-->-->-->-->-->-->-->-->-->--^ + delete output; // >========================================^ #ifdef fdebug - G4cout<<"--Warning--G4QE::HQE:tM="<<tot4M.m()<<"< h1="<<h1QPDG//^ - <<"(M="<<h1M<<")+h2="<<h1QPDG<<"(M="<<h2M<<")+EM="<<envM//^ - <<"="<<h1M+h2M+envM<<G4endl; // ^ + G4cout<<"--Warning--G4QE::HQE:tM="<<tot4M.m()<<"< h1="<<h1QPDG//^ + <<"(M="<<h1M<<")+h2="<<h1QPDG<<"(M="<<h2M<<")+EM="<<envM//^ + <<"="<<h1M+h2M+envM<<G4endl; // ^ //throw G4QException("G4QEnv::HQE:(0)Chi+Env mass > totMass");//^ #endif - CleanUp(); // ^ - G4QHadron* evH = new G4QHadron(totQC,tot4M);// ResidualNuclHadr ^ - EvaporateResidual(evH); // Evaporate residual (del. equiv.) ^ - return theQHadrons; // ^ + CleanUp(); // ^ + G4QHadron* evH = new G4QHadron(totQC,tot4M);// ResidualNuclHadr ^ + EvaporateResidual(evH); // Evaporate residual (del. equiv.) ^ + return theQHadrons; // ^ } // ^ } // ^ - else // => "Two particles decay" case ^ - { // ^ - G4LorentzVector fq4M(0.,0.,0.,qMass); // ^ - G4LorentzVector qe4M(0.,0.,0.,envM); // ^ - if(!G4QHadron(tot4M).RelDecayIn2(fq4M,qe4M,cq4M,1.,1.))//Q ch.dir.^ - { // ^ - G4cerr<<"***G4QEnv::HadQE:(0)tM="<<tot4M.m()<<"-> qPDG="<<qPDG//^ - <<"(M="<<qMass<<") + envM="<<envM<<")"<<G4endl; //^ - for_each(output->begin(),output->end(),DeleteQHadron()); //->->-^ - output->clear(); // -->-->-->-->-->-->-->-->-->-->-->-->-->--^ - delete output; // >========================================^ + else // => "Two particles decay" case ^ + { // ^ + G4LorentzVector fq4M(0.,0.,0.,qMass); // ^ + G4LorentzVector qe4M(0.,0.,0.,envM); // ^ + if(!G4QHadron(tot4M).RelDecayIn2(fq4M,qe4M,cq4M,1.,1.))//Q ch.dir.^ + { // ^ + G4cerr<<"***G4QEnv::HadQE:(0)tM="<<tot4M.m()<<"-> qPDG="<<qPDG//^ + <<"(M="<<qMass<<") + envM="<<envM<<")"<<G4endl; //^ + for_each(output->begin(),output->end(),DeleteQHadron()); //->->-^ + output->clear(); // -->-->-->-->-->-->-->-->-->-->-->-->-->--^ + delete output; // >========================================^ throw G4QException("***G4QEnv::HadrQEnv: Q+Env DecIn2 error");//^ } // ^ - G4QHadron* qH = new G4QHadron(qPDG,fq4M);// the out going Quasmon ^ - theQHadrons.push_back(qH); // (delete equivalent) ^ + G4QHadron* qH = new G4QHadron(qPDG,fq4M);// the out going Quasmon ^ + theQHadrons.push_back(qH); // (delete equivalent) ^ #ifdef pdebug G4cout<<"G4QE::HQE:QuasmH="<<qPDG<<fq4M<<G4endl; // ^ #endif - G4QHadron* qeH = new G4QHadron(envPDG,qe4M);//theRecoilEnvironment^ + G4QHadron* qeH = new G4QHadron(envPDG,qe4M);//theRecoilEnvironment^ #ifdef pdebug G4cout<<"G4QE::HQE:EnvironH="<<envPDG<<qe4M<<G4endl; // ^ #endif - if(envPDG==92000000||envPDG==90002000||envPDG==90000002) // ^ - theEnvironment.DecayDibaryon(qeH,&theQHadrons); // ^ - else theQHadrons.push_back(qeH);// (del.equiv.) *** this too *** ^ + if(envPDG==92000000||envPDG==90002000||envPDG==90000002) // ^ + theEnvironment.DecayDibaryon(qeH,&theQHadrons); // ^ + else theQHadrons.push_back(qeH);// (del.equiv.) *** this too *** ^ } // ^ - for_each(output->begin(),output->end(),DeleteQHadron());//-->-->-->-^ - output->clear(); // ^ - delete output; // >========================================^ - CleanUp(); // Clean up Environ and Quasmon ^ - return theQHadrons; // Finish the hadronization process ^ - } // ^ - else status=-1; // Q+E && totM below MassShell - PANIC ^ - } // ^ - else if(eCount>1&&(nCount>nCnMax||theEnvironment.GetA()<2))// 2Quasmons ^ + for_each(output->begin(),output->end(),DeleteQHadron());//-->-->-->-^ + output->clear(); // ^ + delete output; // >========================================^ + CleanUp(); // Clean up Environ and Quasmon ^ + return theQHadrons; // Finish the hadronization process ^ + } // ^ + else status=-1; // Q+E && totM below MassShell - PANIC ^ + } // ^ + else if(eCount>1&&(nCount>nCnMax||theEnvironment.GetA()<2))// 2Quasmons ^ { // ^ - theEnvironment.InitByPDG(NUCPDG);// KillEnvironment(@@ Q's? CleanUp)) ^ + theEnvironment.InitByPDG(NUCPDG);// KillEnvironment(@@ Q's? CleanUp)) ^ #ifdef fdebug G4cout<<"G4QEnv::HQE:Evaporate Env+Quasm Env="<<curE<<G4endl;// ^ #endif - G4QHadron* nucQE = new G4QHadron(curQC,t4M);// Hadron for Quasm+Envir.^ - EvaporateResidual(nucQE); // Evaporate residual Quasm+Env(del.equiv.) ^ - pQ->KillQuasmon(); // If BackFusion succeeded, kill theQuasmon ^ + G4QHadron* nucQE = new G4QHadron(curQC,t4M);// Hadron for Quasm+Envir.^ + EvaporateResidual(nucQE); // Evaporate residual Quasm+Env(del.equiv.) ^ + pQ->KillQuasmon(); // If BackFusion succeeded, kill theQuasmon ^ #ifdef edebug - G4cout<<"G4QEnv::HQE:StatusAfterKill (#"<<jq<<")="<<pQ->GetStatus()// ^ - <<", nH="<<theQHadrons.size()<<G4endl; // ^ -#endif - tot4M-=t4M; // Update TotalResidNucleus for hadronizPro.^ - totQC-=curQC; // Update total QC for the HadronizationPro.^ - eCount--; // Reduce the number of the living Quasmons ^ - } // ^ - if(eCount==1 && tM>=curM) //==>for one Quasmon evaporate ResTotN ^ - { // ^ - theEnvironment.InitByPDG(NUCPDG); // Cancele the Environment ^ - G4int ttPDG=totQC.GetSPDGCode(); // Total PDG Code (10 - Chipolino) ^ + G4cout<<"G4QEnv::HQE:StatusAfterKill (#"<<jq<<")="<<pQ->GetStatus()// ^ + <<", nH="<<theQHadrons.size()<<G4endl; // ^ +#endif + tot4M-=t4M; // Update TotalResidNucleus for hadronizPro.^ + totQC-=curQC; // Update total QC for the HadronizationPro.^ + eCount--; // Reduce the number of the living Quasmons ^ + } // ^ + if(eCount==1 && tM>=curM) //==>for one Quasmon evaporate ResTotN ^ + { // ^ + theEnvironment.InitByPDG(NUCPDG); // Cancele the Environment ^ + G4int ttPDG=totQC.GetSPDGCode(); // Total PDG Code (10 - Chipolino) ^ #ifdef pcdebug - G4cout<<"G4QE::HQE:BefEv 4M="<<tot4M<<",QC="<<totQC<<ttPDG<<G4endl;// ^ -#endif - for_each(output->begin(),output->end(),DeleteQHadron()); //-->-->-->--^ - output->clear(); // ^ - delete output; // >========================================^ - CleanUp(); // Clean up the Environ and Quasmons ^ - G4int ttBN=totQC.GetBaryonNumber(); // ^ - if(ttPDG==10&&ttBN<2) // Chipolino case ^ + G4cout<<"G4QE::HQE:BefEv 4M="<<tot4M<<",QC="<<totQC<<ttPDG<<G4endl;// ^ +#endif + for_each(output->begin(),output->end(),DeleteQHadron()); //-->-->-->--^ + output->clear(); // ^ + delete output; // >========================================^ + CleanUp(); // Clean up the Environ and Quasmons ^ + G4int ttBN=totQC.GetBaryonNumber(); // ^ + if(ttPDG==10&&ttBN<2) // Chipolino case ^ { // ^ - G4QChipolino QCh(totQC);// define the TotalResidual as a Chipolino ^ - G4QPDGCode h1QPDG=QCh.GetQPDG1(); // QPDG of the first hadron ^ - G4double h1M =h1QPDG.GetMass();// Mass of the first hadron ^ - G4QPDGCode h2QPDG=QCh.GetQPDG2(); // QPDG of the second hadron ^ - G4double h2M =h2QPDG.GetMass();// Mass of the second hadron ^ - G4double ttM=tot4M.m(); // Mass of the Chipolino ^ - if(h1M+h2M<ttM) // Two particles decay of Chipolino is pos. ^ - { // ^ - G4LorentzVector h14M(0.,0.,0.,h1M); // ^ - G4LorentzVector h24M(0.,0.,0.,h2M); // ^ - if(!G4QHadron(tot4M).DecayIn2(h14M,h24M)) // ^ - { // ^ + G4QChipolino QCh(totQC);// define the TotalResidual as a Chipolino ^ + G4QPDGCode h1QPDG=QCh.GetQPDG1(); // QPDG of the first hadron ^ + G4double h1M =h1QPDG.GetMass();// Mass of the first hadron ^ + G4QPDGCode h2QPDG=QCh.GetQPDG2(); // QPDG of the second hadron ^ + G4double h2M =h2QPDG.GetMass();// Mass of the second hadron ^ + G4double ttM=tot4M.m(); // Mass of the Chipolino ^ + if(h1M+h2M<ttM) // Two particles decay of Chipolino is pos. ^ + { // ^ + G4LorentzVector h14M(0.,0.,0.,h1M); // ^ + G4LorentzVector h24M(0.,0.,0.,h2M); // ^ + if(!G4QHadron(tot4M).DecayIn2(h14M,h24M)) // ^ + { // ^ G4cerr<<"***G4QE::HQE:tM="<<ttM<<"->h1="<<h1QPDG<<"("<<h1M // ^ - <<")+h2="<<h1QPDG<<"("<<h2M<<"="<<h1M+h2M<<G4endl; // ^ + <<")+h2="<<h1QPDG<<"("<<h2M<<"="<<h1M+h2M<<G4endl; // ^ throw G4QException("**G4QE::HadrQEnv:QChip (1) DecIn2 error");//^ } // ^ - G4QHadron* h1H = new G4QHadron(h1QPDG.GetPDGCode(),h14M); // ^ - theQHadrons.push_back(h1H); // (delete equivalent) ^ + G4QHadron* h1H = new G4QHadron(h1QPDG.GetPDGCode(),h14M); // ^ + theQHadrons.push_back(h1H); // (delete equivalent) ^ #ifdef pdebug G4cout<<"G4QE::HQE: QCip-> H1="<<h1QPDG<<h14M<<G4endl; // ^ #endif - G4QHadron* h2H = new G4QHadron(h2QPDG.GetPDGCode(),h24M); // ^ - theQHadrons.push_back(h2H); // (delete equivalent) ^ + G4QHadron* h2H = new G4QHadron(h2QPDG.GetPDGCode(),h24M); // ^ + theQHadrons.push_back(h2H); // (delete equivalent) ^ #ifdef pdebug - G4cout<<"G4QE::HQE: QChip->H2="<<h2QPDG<<h24M<<G4endl; // ^ + G4cout<<"G4QE::HQE: QChip->H2="<<h2QPDG<<h24M<<G4endl; // ^ #endif - } // ^ - else // ^ - { // ^ + } // ^ + else // ^ + { // ^ G4cerr<<"***G4QE::HQE:tM="<<ttM<<totQC<<"->h1="<<h1QPDG<<"(" // ^ - <<h1M<<")+h2="<<h1QPDG<<"("<<h2M<<"="<<h1M+h2M<<G4endl;// ^ + <<h1M<<")+h2="<<h1QPDG<<"("<<h2M<<"="<<h1M+h2M<<G4endl;// ^ throw G4QException("***G4QE::HadrQEnv:QChip (2) DecIn2 error");// ^ } // ^ - } // ^ - else // ^ + } // ^ + else // ^ { // ^ #ifdef edebug - if(ttPDG<80000000&&ttBN<1) // ^ - G4cout<<"---Warning---G4QE::HQE: NotNuc, tPDG="<<ttPDG<<G4endl;// ^ -#endif - G4QHadron* evH = new G4QHadron(totQC,tot4M);// Hadron for ResidNucl ^ - EvaporateResidual(evH); // Evaporate residual (del.equiv.) ^ - } // ^ - return theQHadrons; // ^ - } // ^ - else if(eCount==1 && CheckGroundState(pQ,true)) // Correct and Finish ^ - { // ^ - for_each(output->begin(), output->end(), DeleteQHadron()); // -->-->--^ - output->clear(); // ^ - delete output; // >========================================^ - pQ->KillQuasmon(); // If BackFusion succeeded, kill Quasm ^ - delete pQ; - eCount--; // Reduce a#of the living Quasmons ^ - return theQHadrons; // ^ - } // ^ - } // ^ - else // "Vacuum" case ^ - { // ^ - G4QPDGCode QPDGQ=pQ->GetQPDG(); // QPDG Code for the Quasmon ^ - G4int PDGQ=QPDGQ.GetPDGCode(); // PDG Code of the QUASMON ^ + if(ttPDG<80000000&&ttBN<1) // ^ + G4cout<<"---Warning---G4QE::HQE: NotNuc, tPDG="<<ttPDG<<G4endl;// ^ +#endif + G4QHadron* evH = new G4QHadron(totQC,tot4M);// Hadron for ResidNucl ^ + EvaporateResidual(evH); // Evaporate residual (del.equiv.) ^ + } // ^ + return theQHadrons; // ^ + } // ^ + else if(eCount==1 && CheckGroundState(pQ,true)) // Correct and Finish ^ + { // ^ + for_each(output->begin(), output->end(), DeleteQHadron()); // -->-->--^ + output->clear(); // ^ + delete output; // >========================================^ + pQ->KillQuasmon(); // If BackFusion succeeded, kill Quasm ^ + delete pQ; + eCount--; // Reduce a#of the living Quasmons ^ + return theQHadrons; // ^ + } // ^ + } // ^ + else // "Vacuum" case ^ + { // ^ + G4QPDGCode QPDGQ=pQ->GetQPDG(); // QPDG Code for the Quasmon ^ + G4int PDGQ=QPDGQ.GetPDGCode(); // PDG Code of the QUASMON ^ #ifdef edebug G4cout<<"G4QEnv::HadrQEnv: vacuum PDGQ="<<PDGQ<<G4endl; // ^ #endif - if(!PDGQ) status=-1; // Unknown Quasmon in Vaquum - PANIC ^ - // @@ There still can be a case for 2pSigma+ or 2nSigma- (PDGCode?) ^ - else if(PDGQ==3112||PDGQ==3222||PDGQ==90999001||PDGQ==91000999)// S+/S- ^ - { // ^ + if(!PDGQ) status=-1; // Unknown Quasmon in Vaquum - PANIC ^ + // @@ There still can be a case for 2pSigma+ or 2nSigma- (PDGCode?) ^ + else if(PDGQ==3112||PDGQ==3222||PDGQ==90999001||PDGQ==91000999)// S+/S- ^ + { // ^ #ifdef edebug G4cout<<"G4QEnv::HadrQEnv:Sigma Mass="<<cqMass<<G4endl; // ^ #endif - G4double hyM=mNeut; // Prototype of the hyperon mass ^ - G4int hyPDG=2112; // Prototype of the hyperon PDG Code ^ - G4double pigM=mPi; // Prototype of the gamma/pion mass ^ - G4int pigPDG=-211; // Prototype of the gamma/pion PDG Code ^ - if(PDGQ==3112||PDGQ==90999001) // --> "Sigma-" case ^ + G4double hyM=mNeut; // Prototype of the hyperon mass ^ + G4int hyPDG=2112; // Prototype of the hyperon PDG Code ^ + G4double pigM=mPi; // Prototype of the gamma/pion mass ^ + G4int pigPDG=-211; // Prototype of the gamma/pion PDG Code ^ + if(PDGQ==3112||PDGQ==90999001) // --> "Sigma-" case ^ { // ^ - if(cqMass>mPi+mLamb) // "Lambda + Pi- is possible" case ^ + if(cqMass>mPi+mLamb) // "Lambda + Pi- is possible" case ^ { // ^ - hyM = mLamb; // Lambda mass ^ - hyPDG = 3122; // Lambda PDG Code ^ + hyM = mLamb; // Lambda mass ^ + hyPDG = 3122; // Lambda PDG Code ^ } // ^ - else if(cqMass>mSigM) // "Sigma- gamma decay" case ^ + else if(cqMass>mSigM) // "Sigma- gamma decay" case ^ { // ^ - hyM=mSigM; // Sigma- mass ^ - hyPDG=3112; // Sigma- PDG Code ^ - pigM=0.; // Gamma mass ^ - pigPDG=22; // Gamma PDG Code ^ + hyM=mSigM; // Sigma- mass ^ + hyPDG=3112; // Sigma- PDG Code ^ + pigM=0.; // Gamma mass ^ + pigPDG=22; // Gamma PDG Code ^ } // ^ - } // ^ - else if(PDGQ==3222||PDGQ==91000999) // --> "Sigma+" case ^ + } // ^ + else if(PDGQ==3222||PDGQ==91000999) // --> "Sigma+" case ^ { // ^ - pigPDG= 211; // Pi+ PDG Code ^ - if(cqMass>mPi+mLamb) // --- "Lambda + Pi+ is possible" case ^ + pigPDG= 211; // Pi+ PDG Code ^ + if(cqMass>mPi+mLamb) // --- "Lambda + Pi+ is possible" case ^ { // ^ - hyM = mLamb; // Lambda mass ^ - hyPDG = 3122; // Lambda PDG Code ^ - pigM = mPi; // Pi+ mass ^ - pigPDG= 211; // Pi+ PDG Code ^ - } // ^ - else if(cqMass>mSigP) // "Sigma- gamma decay" case ^ + hyM = mLamb; // Lambda mass ^ + hyPDG = 3122; // Lambda PDG Code ^ + pigM = mPi; // Pi+ mass ^ + pigPDG= 211; // Pi+ PDG Code ^ + } // ^ + else if(cqMass>mSigP) // "Sigma- gamma decay" case ^ { // ^ - hyM=mSigP; // Sigma+ mass ^ - hyPDG=3222; // Sigma+ PDG Code ^ - pigM=0.; // Gamma mass ^ - pigPDG=22; // Gamma PDG Code ^ + hyM=mSigP; // Sigma+ mass ^ + hyPDG=3222; // Sigma+ PDG Code ^ + pigM=0.; // Gamma mass ^ + pigPDG=22; // Gamma PDG Code ^ } // ^ - else if(cqMass>mPi0+mProt&&G4UniformRand()>.5) // "P + Pi0" case ^ + else if(cqMass>mPi0+mProt&&G4UniformRand()>.5) // "P + Pi0" case ^ { // ^ - hyM = mProt; // Proton mass ^ - hyPDG = 2212; // Proton PDG Code ^ - pigM = mPi0; // Pi0 mass ^ - pigPDG= 111; // Pi0 PDG Code ^ + hyM = mProt; // Proton mass ^ + hyPDG = 2212; // Proton PDG Code ^ + pigM = mPi0; // Pi0 mass ^ + pigPDG= 111; // Pi0 PDG Code ^ } // ^ - else if(cqMass<mPi+mNeut)// "P+gamma" case as "N+Pi+" is impossible ^ + else if(cqMass<mPi+mNeut)// "P+gamma" case as "N+Pi+" is impossible ^ { // ^ - hyM = mProt; // Proton mass ^ - hyPDG = 2212; // Proton PDG Code ^ - pigM=0.; // Gamma mass ^ - pigPDG=22; // Gamma PDG Code ^ + hyM = mProt; // Proton mass ^ + hyPDG = 2212; // Proton PDG Code ^ + pigM=0.; // Gamma mass ^ + pigPDG=22; // Gamma PDG Code ^ } // ^ - // othing should be done for "N + P+" case ^ - } // ^ - G4LorentzVector b4Mom(0.,0.,0.,hyM); // Hyperon mass ^ - G4LorentzVector m4Mom(0.,0.,0.,pigM);// pion/gamma mass ^ - if(!G4QHadron(cq4M).DecayIn2(b4Mom, m4Mom)) // "DecayIn2 failed" case ^ + // othing should be done for "N + P+" case ^ + } // ^ + G4LorentzVector b4Mom(0.,0.,0.,hyM); // Hyperon mass ^ + G4LorentzVector m4Mom(0.,0.,0.,pigM);// pion/gamma mass ^ + if(!G4QHadron(cq4M).DecayIn2(b4Mom, m4Mom)) // "DecayIn2 failed" case ^ { // ^ - G4cout<<"---Warning---G4QE::HQE:H="<<hyPDG<<"(m="<<hyM<<")+G/Pi=" //^ + G4cout<<"---Warning---G4QE::HQE:H="<<hyPDG<<"(m="<<hyM<<")+G/Pi=" //^ <<pigPDG<<"(m="<<pigM<<")="<<hyM+pigM<<">"<<cqMass<<G4endl; //^ - G4Quasmon* quasH = new G4Quasmon(totQC,tot4M); // totQC ^ - CleanUp(); // ^ + G4Quasmon* quasH = new G4Quasmon(totQC,tot4M); // totQC ^ + CleanUp(); // ^ if(!CheckGroundState(quasH,true)) // Last posibility to correct ^ { // ^ - G4QHadron* hadr = new G4QHadron(totQC,tot4M); // ^ - theQHadrons.push_back(hadr); // Cor or fill as It Is ^ + G4QHadron* hadr = new G4QHadron(totQC,tot4M); // ^ + theQHadrons.push_back(hadr); // Cor or fill as It Is ^ #ifdef pdebug - G4cout<<"-Warn-G4QE::HQE:Sig,QC="<<totQC<<",4M="<<tot4M<<G4endl;//^ + G4cout<<"-Warn-G4QE::HQE:Sig,QC="<<totQC<<",4M="<<tot4M<<G4endl;//^ #endif - //throw G4QException("G4QEnvironment::HadronizeQEnv:Sig error");//^ - } // ^ - delete quasH; // Delete the temporary fake Quasmon ^ - return theQHadrons; // ^ - } // ^ + //throw G4QException("G4QEnvironment::HadronizeQEnv:Sig error");//^ + } // ^ + delete quasH; // Delete the temporary fake Quasmon ^ + return theQHadrons; // ^ + } // ^ #ifdef pdebug G4cout<<"G4QEnv::HadronizeQEnv: Sigma="<<PDGQ<<cq4M<<" -> Hyperon="// ^ - <<hyPDG<<b4Mom<<" + Gamma/Pi="<<pigPDG<<m4Mom<<G4endl; // ^ -#endif - G4QHadron* curBar = new G4QHadron(hyPDG,b4Mom); // ^ - theQHadrons.push_back(curBar); // Fill the Hyperon (delete equivalent)^ - G4QHadron* curMes = new G4QHadron(pigPDG,m4Mom); // ^ - theQHadrons.push_back(curMes); // Fill the gam/pi (delete equivalent) ^ - pQ->KillQuasmon(); // Make done the current Quasmon ^ - tot4M-=cq4M; // Update theTotalResidNucl of HadrPr. ^ - totQC-=qQC; // Update total residual QC of HadrPr. ^ - eCount--; // Reduce a#of the living Quasmons ^ + <<hyPDG<<b4Mom<<" + Gamma/Pi="<<pigPDG<<m4Mom<<G4endl; // ^ +#endif + G4QHadron* curBar = new G4QHadron(hyPDG,b4Mom); // ^ + theQHadrons.push_back(curBar); // Fill the Hyperon (delete equivalent)^ + G4QHadron* curMes = new G4QHadron(pigPDG,m4Mom); // ^ + theQHadrons.push_back(curMes); // Fill the gam/pi (delete equivalent) ^ + pQ->KillQuasmon(); // Make done the current Quasmon ^ + tot4M-=cq4M; // Update theTotalResidNucl of HadrPr. ^ + totQC-=qQC; // Update total residual QC of HadrPr. ^ + eCount--; // Reduce a#of the living Quasmons ^ } // ^ - else if(PDGQ==90999002||PDGQ==91001999) // pS+/nS- ^ - { // ^ + else if(PDGQ==90999002||PDGQ==91001999) // pS+/nS- ^ + { // ^ #ifdef edebug G4cout<<"G4QEnv::HadrQEnv: Nucleon+Sigma Mass="<<cqMass<<G4endl; // ^ #endif - G4bool dinFlag = false; // Di-nucleon flag ^ - G4double hyM=mSigM; // Prototype of the hyperon mass (n+Sigma-) ^ - G4int hyPDG=3112; // Prototype of the hyperon PDG Code ^ - G4double pigM=mNeut; // Prototype of the nucleon mass ^ - G4int pigPDG=2112; // Prototype of the nucleon PDG Code ^ - if (PDGQ==90999002) // --> "n+Sigma-" case ^ + G4bool dinFlag = false; // Di-nucleon flag ^ + G4double hyM=mSigM; // Prototype of the hyperon mass (n+Sigma-) ^ + G4int hyPDG=3112; // Prototype of the hyperon PDG Code ^ + G4double pigM=mNeut; // Prototype of the nucleon mass ^ + G4int pigPDG=2112; // Prototype of the nucleon PDG Code ^ + if (PDGQ==90999002) // --> "n+Sigma-" case ^ { // ^ - if(cqMass<mNeut+mSigM) // ----> "DiNeutron+Pi-" case ^ + if(cqMass<mNeut+mSigM) // ----> "DiNeutron+Pi-" case ^ { // ^ - dinFlag = true; // For the final decay ^ - hyM=mNeut+mNeut; // Di-neutron ^ - hyPDG=2112; // Neutron PDG Code ^ - pigM=mPi; // Pi- mass ^ - pigPDG=-211; // Pi- PDG Code ^ + dinFlag = true; // For the final decay ^ + hyM=mNeut+mNeut; // Di-neutron ^ + hyPDG=2112; // Neutron PDG Code ^ + pigM=mPi; // Pi- mass ^ + pigPDG=-211; // Pi- PDG Code ^ } // ^ - } // ^ - else if(PDGQ==91001999) // --> "p+Sigma+" case ^ + } // ^ + else if(PDGQ==91001999) // --> "p+Sigma+" case ^ { // ^ - hyM=mSigP; // Sigma+ ^ - hyPDG=3222; // PDG Code of Sigma+ ^ - pigM=mProt; // Proton mass ^ - pigPDG=2212; // PDG Code of proton ^ - if(cqMass<mProt+mSigP) // ----> "Proton+Proton" case ^ + hyM=mSigP; // Sigma+ ^ + hyPDG=3222; // PDG Code of Sigma+ ^ + pigM=mProt; // Proton mass ^ + pigPDG=2212; // PDG Code of proton ^ + if(cqMass<mProt+mSigP) // ----> "Proton+Proton" case ^ { // ^ - hyM=mProt; // Proton mass ^ - hyPDG=2212; // Proton PDG Code ^ - pigM=mProt; // Proton mass ^ - pigPDG=2212; // Proton PDG Code ^ + hyM=mProt; // Proton mass ^ + hyPDG=2212; // Proton PDG Code ^ + pigM=mProt; // Proton mass ^ + pigPDG=2212; // Proton PDG Code ^ } // ^ - } // ^ - G4LorentzVector b4Mom(0.,0.,0.,hyM); // Hyperon (di-nucleon) mass ^ - G4LorentzVector m4Mom(0.,0.,0.,pigM);// Nucleon (pion) mass ^ - if(!G4QHadron(cq4M).DecayIn2(b4Mom, m4Mom)) // "DecayIn2 failed" case ^ + } // ^ + G4LorentzVector b4Mom(0.,0.,0.,hyM); // Hyperon (di-nucleon) mass ^ + G4LorentzVector m4Mom(0.,0.,0.,pigM);// Nucleon (pion) mass ^ + if(!G4QHadron(cq4M).DecayIn2(b4Mom, m4Mom)) // "DecayIn2 failed" case ^ { // ^ - G4cout<<"--Warning--G4QE::HQE:S/D="<<hyPDG<<"(m="<<hyM<<")+N/Pi=" //^ + G4cout<<"--Warning--G4QE::HQE:S/D="<<hyPDG<<"(m="<<hyM<<")+N/Pi=" //^ <<pigPDG<<"(m="<<pigM<<")="<<hyM+pigM<<">"<<cqMass<<G4endl; //^ - G4Quasmon* quasH = new G4Quasmon(totQC,tot4M); // totQC ^ - CleanUp(); // ^ + G4Quasmon* quasH = new G4Quasmon(totQC,tot4M); // totQC ^ + CleanUp(); // ^ if(!CheckGroundState(quasH,true)) // Last posibility to correct ^ { // ^ - G4QHadron* hadr = new G4QHadron(totQC,tot4M); // ^ - theQHadrons.push_back(hadr); // Cor or fill as It Is ^ + G4QHadron* hadr = new G4QHadron(totQC,tot4M); // ^ + theQHadrons.push_back(hadr); // Cor or fill as It Is ^ #ifdef pdebug - G4cout<<"-Warn-G4QE::HQE:Sig,QC="<<totQC<<",4M="<<tot4M<<G4endl;//^ + G4cout<<"-Warn-G4QE::HQE:Sig,QC="<<totQC<<",4M="<<tot4M<<G4endl;//^ #endif - //throw G4QException("G4QEnvironment::HadronizeQEnv:Sig error");//^ - } // ^ - delete quasH; // Delete the temporary fake Quasmon ^ - return theQHadrons; // ^ - } // ^ + //throw G4QException("G4QEnvironment::HadronizeQEnv:Sig error");//^ + } // ^ + delete quasH; // Delete the temporary fake Quasmon ^ + return theQHadrons; // ^ + } // ^ #ifdef pdebug G4cout<<"G4QEnv::HadronizeQEnv: NSigma="<<PDGQ<<cq4M<<"-> Sigma/dN="//^ - <<hyPDG<<b4Mom<<" + N/Pi="<<pigPDG<<m4Mom<<G4endl; // ^ + <<hyPDG<<b4Mom<<" + N/Pi="<<pigPDG<<m4Mom<<G4endl; // ^ #endif - if(dinFlag) b4Mom/=2.; // Split the 4-mom for the dinucleon ^ - G4QHadron* curBar = new G4QHadron(hyPDG,b4Mom); // ^ - theQHadrons.push_back(curBar); // Fill the Hyperon (delete equivalent)^ - if(dinFlag) // ^ + if(dinFlag) b4Mom/=2.; // Split the 4-mom for the dinucleon ^ + G4QHadron* curBar = new G4QHadron(hyPDG,b4Mom); // ^ + theQHadrons.push_back(curBar); // Fill the Hyperon (delete equivalent)^ + if(dinFlag) // ^ { // ^ - G4QHadron* secBar = new G4QHadron(hyPDG,b4Mom);// Cre. 2-nd nucleon ^ - theQHadrons.push_back(secBar);// Fill 2-nd nucleon (delete equiv.) ^ - } // ^ - G4QHadron* curMes = new G4QHadron(pigPDG,m4Mom); // ^ - theQHadrons.push_back(curMes); // Fill the gam/pi (delete equivalent) ^ - pQ->KillQuasmon(); // Make done the current Quasmon ^ - tot4M-=cq4M; // Update theTotalResidNucl of HadrPr. ^ - totQC-=qQC; // Update total residual QC of HadrPr. ^ - eCount--; // Reduce a#of the living Quasmons ^ + G4QHadron* secBar = new G4QHadron(hyPDG,b4Mom);// Cre. 2-nd nucleon ^ + theQHadrons.push_back(secBar);// Fill 2-nd nucleon (delete equiv.) ^ + } // ^ + G4QHadron* curMes = new G4QHadron(pigPDG,m4Mom); // ^ + theQHadrons.push_back(curMes); // Fill the gam/pi (delete equivalent) ^ + pQ->KillQuasmon(); // Make done the current Quasmon ^ + tot4M-=cq4M; // Update theTotalResidNucl of HadrPr. ^ + totQC-=qQC; // Update total residual QC of HadrPr. ^ + eCount--; // Reduce a#of the living Quasmons ^ } // ^ - else if(PDGQ==90999003||PDGQ==91002999) // ppS+/nnS- ^ - { // ^ + else if(PDGQ==90999003||PDGQ==91002999) // ppS+/nnS- ^ + { // ^ #ifdef edebug G4cout<<"G4QEnv::HadrQEnv: DiNucleon+Sigma Mass="<<cqMass<<G4endl; // ^ #endif - G4bool dinFlag = false; // Di-nucleon flag ^ - G4double hyM=mSigM; // Prototype of the hyperon mass (n+Sigma-) ^ - G4int hyPDG=3112; // Prototype of the hyperon PDG Code ^ - G4double pigM=mNeut+mNeut;// Prototype of the di-nucleon mass ^ - G4int pigPDG=2112; // Prototype of the nucleon PDG Code ^ - if (PDGQ==90999003) // --> "n+Sigma-" case ^ + G4bool dinFlag = false; // Di-nucleon flag ^ + G4double hyM=mSigM; // Prototype of the hyperon mass (n+Sigma-) ^ + G4int hyPDG=3112; // Prototype of the hyperon PDG Code ^ + G4double pigM=mNeut+mNeut;// Prototype of the di-nucleon mass ^ + G4int pigPDG=2112; // Prototype of the nucleon PDG Code ^ + if (PDGQ==90999003) // --> "n+Sigma-" case ^ { // ^ - if(cqMass<pigM+mSigM) // ----> "DiNeutron+Pi-" case ^ + if(cqMass<pigM+mSigM) // ----> "DiNeutron+Pi-" case ^ { // ^ - dinFlag = true; // For the final decay ^ - pigM=mNeut+mNeut+mNeut;// Tri-neutron ^ - pigPDG=2112; // Neutron PDG Code ^ - hyM=mPi; // Pi- mass ^ - hyPDG=-211; // Pi- PDG Code ^ + dinFlag = true; // For the final decay ^ + pigM=mNeut+mNeut+mNeut;// Tri-neutron ^ + pigPDG=2112; // Neutron PDG Code ^ + hyM=mPi; // Pi- mass ^ + hyPDG=-211; // Pi- PDG Code ^ } // ^ - } // ^ - else if(PDGQ==91002999) // --> "p+Sigma+" case ^ + } // ^ + else if(PDGQ==91002999) // --> "p+Sigma+" case ^ { // ^ - hyM=mSigP; // Sigma+ ^ - hyPDG=3222; // PDG Code of Sigma+ ^ - pigM=mProt+mProt; // Di-Proton mass ^ - pigPDG=2212; // PDG Code of proton ^ - if(cqMass<pigM+mSigP) // ----> "DiProton+Pi+" case ^ + hyM=mSigP; // Sigma+ ^ + hyPDG=3222; // PDG Code of Sigma+ ^ + pigM=mProt+mProt; // Di-Proton mass ^ + pigPDG=2212; // PDG Code of proton ^ + if(cqMass<pigM+mSigP) // ----> "DiProton+Pi+" case ^ { // ^ - dinFlag = true; // For the final decay ^ - pigM=mProt+mProt+mProt;// Tri-proton ^ - pigPDG=2212; // Neutron PDG Code ^ - hyM=mPi; // Pi+ mass ^ - hyPDG=211; // Pi+ PDG Code ^ + dinFlag = true; // For the final decay ^ + pigM=mProt+mProt+mProt;// Tri-proton ^ + pigPDG=2212; // Neutron PDG Code ^ + hyM=mPi; // Pi+ mass ^ + hyPDG=211; // Pi+ PDG Code ^ } // ^ - } // ^ - G4LorentzVector b4Mom(0.,0.,0.,hyM); // Hyperon (di-nucleon) mass ^ - G4LorentzVector m4Mom(0.,0.,0.,pigM);// Nucleon (pion) mass ^ - if(!G4QHadron(cq4M).DecayIn2(b4Mom, m4Mom)) // "DecayIn2 failed" case ^ + } // ^ + G4LorentzVector b4Mom(0.,0.,0.,hyM); // Hyperon (di-nucleon) mass ^ + G4LorentzVector m4Mom(0.,0.,0.,pigM);// Nucleon (pion) mass ^ + if(!G4QHadron(cq4M).DecayIn2(b4Mom, m4Mom)) // "DecayIn2 failed" case ^ { // ^ - G4cout<<"--Warning--G4QE::HQE:S/Pi="<<hyPDG<<"(m="<<hyM<<")+D/T=" //^ + G4cout<<"--Warning--G4QE::HQE:S/Pi="<<hyPDG<<"(m="<<hyM<<")+D/T=" //^ <<pigPDG<<"(m="<<pigM<<")="<<hyM+pigM<<">"<<cqMass<<G4endl; //^ - G4Quasmon* quasH = new G4Quasmon(totQC,tot4M); // totQC ^ - CleanUp(); // ^ + G4Quasmon* quasH = new G4Quasmon(totQC,tot4M); // totQC ^ + CleanUp(); // ^ if(!CheckGroundState(quasH,true)) // Last posibility to correct ^ { // ^ - G4QHadron* hadr = new G4QHadron(totQC,tot4M); // ^ - theQHadrons.push_back(hadr); // Cor or fill as It Is ^ + G4QHadron* hadr = new G4QHadron(totQC,tot4M); // ^ + theQHadrons.push_back(hadr); // Cor or fill as It Is ^ #ifdef pdebug - G4cout<<"-Warn-G4QE::HQE:Sig,QC="<<totQC<<",4M="<<tot4M<<G4endl;//^ + G4cout<<"-Warn-G4QE::HQE:Sig,QC="<<totQC<<",4M="<<tot4M<<G4endl;//^ #endif - //throw G4QException("G4QEnvironment::HadronizeQEnv:Sig error");//^ - } // ^ - delete quasH; // Delete the temporary fake Quasmon ^ - return theQHadrons; // ^ - } // ^ + //throw G4QException("G4QEnvironment::HadronizeQEnv:Sig error");//^ + } // ^ + delete quasH; // Delete the temporary fake Quasmon ^ + return theQHadrons; // ^ + } // ^ #ifdef pdebug G4cout<<"G4QEnv::HadronizeQEnv:2NSigma="<<PDGQ<<cq4M<<"-> Sigma/Pi="//^ - <<hyPDG<<b4Mom<<" + 2N/3N="<<pigPDG<<m4Mom<<dinFlag<<G4endl; // ^ -#endif - G4QHadron* curBar = new G4QHadron(hyPDG,b4Mom); // ^ - theQHadrons.push_back(curBar); // Fill the Hyperon (delete equivalent)^ - if(dinFlag) m4Mom/=3.; // Split the 4-mom for the dinucleon in 3 ^ - else m4Mom/=2.; // Split the 4-mom for the dinucleon in 2 ^ - G4QHadron* curMes = new G4QHadron(pigPDG,m4Mom); // ^ - theQHadrons.push_back(curMes); // Fill the gam/pi (delete equivalent) ^ - G4QHadron* secBar = new G4QHadron(pigPDG,m4Mom); // ^ - theQHadrons.push_back(secBar); // Fill the gam/pi (delete equivalent) ^ - if(dinFlag) // ^ + <<hyPDG<<b4Mom<<" + 2N/3N="<<pigPDG<<m4Mom<<dinFlag<<G4endl; // ^ +#endif + G4QHadron* curBar = new G4QHadron(hyPDG,b4Mom); // ^ + theQHadrons.push_back(curBar); // Fill the Hyperon (delete equivalent)^ + if(dinFlag) m4Mom/=3.; // Split the 4-mom for the dinucleon in 3 ^ + else m4Mom/=2.; // Split the 4-mom for the dinucleon in 2 ^ + G4QHadron* curMes = new G4QHadron(pigPDG,m4Mom); // ^ + theQHadrons.push_back(curMes); // Fill the gam/pi (delete equivalent) ^ + G4QHadron* secBar = new G4QHadron(pigPDG,m4Mom); // ^ + theQHadrons.push_back(secBar); // Fill the gam/pi (delete equivalent) ^ + if(dinFlag) // ^ { // ^ - G4QHadron* triBar = new G4QHadron(pigPDG,m4Mom);// Cre. 3-d nucleon ^ - theQHadrons.push_back(triBar);// Fill 3-d nucleon (delete equival.) ^ - } // ^ - pQ->KillQuasmon(); // Make done the current Quasmon ^ - tot4M-=cq4M; // Update theTotalResidNucl of HadrPr. ^ - totQC-=qQC; // Update total residual QC of HadrPr. ^ - eCount--; // Reduce a#of the living Quasmons ^ + G4QHadron* triBar = new G4QHadron(pigPDG,m4Mom);// Cre. 3-d nucleon ^ + theQHadrons.push_back(triBar);// Fill 3-d nucleon (delete equival.) ^ + } // ^ + pQ->KillQuasmon(); // Make done the current Quasmon ^ + tot4M-=cq4M; // Update theTotalResidNucl of HadrPr. ^ + totQC-=qQC; // Update total residual QC of HadrPr. ^ + eCount--; // Reduce a#of the living Quasmons ^ } // ^ - else if (PDGQ!=10) // @@ Chipolino can wait @@ ^ - { // ^ - G4double qM =cq4M.m(); // Real mass of the Quasmon ^ - G4double gsM=QPDGQ.GetMass(); // GSmass of the Quasmon ^ + else if (PDGQ!=10) // @@ Chipolino can wait @@ ^ + { // ^ + G4double qM =cq4M.m(); // Real mass of the Quasmon ^ + G4double gsM=QPDGQ.GetMass(); // GSmass of the Quasmon ^ #ifdef edebug - G4cout<<"G4QEnv::HadrQEnv:#"<<jq<<",qM="<<qM<<">gsM="<<gsM<<G4endl;// ^ + G4cout<<"G4QEnv::HadrQEnv:#"<<jq<<",qM="<<qM<<">gsM="<<gsM<<G4endl;// ^ #endif if(fabs(qM-gsM)<0.0001) // "Fill & Kill" Case ^ - { // ^ - G4QHadron* resQ = new G4QHadron(PDGQ,cq4M); // GSM hadron for CurQ ^ + { // ^ + G4QHadron* resQ = new G4QHadron(PDGQ,cq4M); // GSM hadron for CurQ ^ #ifdef pdebug G4cout<<"G4QEnv::HadrQEnv:ResQ="<<PDGQ<<cq4M<<G4endl; // ^ #endif - theQHadrons.push_back(resQ); // @@ Check Dibarions @@ (del.equiv.) ^ - pQ->KillQuasmon(); // Make done the current Quasmon ^ - tot4M-=cq4M; // Update theTotalResidNucl of HadrPr. ^ - totQC-=qQC; // Update total residual QC of HadrPr. ^ - eCount--; // Reduce a#of the living Quasmons ^ + theQHadrons.push_back(resQ); // @@ Check Dibarions @@ (del.equiv.) ^ + pQ->KillQuasmon(); // Make done the current Quasmon ^ + tot4M-=cq4M; // Update theTotalResidNucl of HadrPr. ^ + totQC-=qQC; // Update total residual QC of HadrPr. ^ + eCount--; // Reduce a#of the living Quasmons ^ } // ^ else if(eCount==1 && qM<gsM && CheckGroundState(pQ,true))// Cor.& Fin.^ - { // ^ + { // ^ #ifdef edebug G4cout<<"G4QEnv::HadrQEnv:**>>** CGS Correction **>>**"<<G4endl; // ^ #endif - for_each(output->begin(), output->end(), DeleteQHadron()); //-->-->-^ - output->clear(); // ^ - delete output; // >========================================^ - pQ->KillQuasmon(); // If BackFusion -> kill theQuasmon ^ - eCount--; // Reduce a#of the living Quasmons ^ - return theQHadrons; // ^ - } // ^ + for_each(output->begin(), output->end(), DeleteQHadron()); //-->-->-^ + output->clear(); // ^ + delete output; // >========================================^ + pQ->KillQuasmon(); // If BackFusion -> kill theQuasmon ^ + eCount--; // Reduce a#of the living Quasmons ^ + return theQHadrons; // ^ + } // ^ else if(qM<gsM&&(pQ->GetQC().GetSPDGCode()==1114 // ^ || pQ->GetQC().GetSPDGCode()==2224) // ^ - &&qM>theWorld->GetQParticle(QPDGQ)->MinMassOfFragm())//Del&Kill ^ - { // ^ + &&qM>theWorld->GetQParticle(QPDGQ)->MinMassOfFragm())//Del&Kill ^ + { // ^ #ifdef edebug G4cout<<"G4QEnv::HadrQEnv:**||** Copy&Decay **||**"<<G4endl; // ^ #endif - G4QHadronVector* decHV=pQ->DecayQuasmon();//Dec.Quasm & fill decHV=*^ - CopyAndDeleteHadronVector(decHV);// Copy output to QHadrV of G4Env ^ - tot4M-=pQ->Get4Momentum(); // tot4M recalculation ^ - totQC-=pQ->GetQC(); // totQC recalculation ^ - pQ->KillQuasmon(); // Make done the current Quasmon ^ - eCount--; // Reduce a#of the living Quasmons ^ + G4QHadronVector* decHV=pQ->DecayQuasmon();//Dec.Quasm & fill decHV=*^ + CopyAndDeleteHadronVector(decHV);// Copy output to QHadrV of G4Env ^ + tot4M-=pQ->Get4Momentum(); // tot4M recalculation ^ + totQC-=pQ->GetQC(); // totQC recalculation ^ + pQ->KillQuasmon(); // Make done the current Quasmon ^ + eCount--; // Reduce a#of the living Quasmons ^ } // ^ } // ^ } // End of the Medium/Vacuum IF ^ } // End of the status ELSE IF ^ - else if(status==3) count3++; // ^ - if(status<0) // Panic: Quasmon is below theMassShell ^ - { // ^ - //if(eCount==1 && DecayInEnvQ(pQ)) // ^ - //{ // ^ - // for_each(output->begin(), output->end(), DeleteQHadron());//-->-->-->-^ - // output->clear(); // ^ - // delete output; // >======================================^ - // eCount--; // Reduce a#of the living Quasmons ^ - // pQ->KillQuasmon(); // ^ - // return theQHadrons; // ^ - //} // ^ - G4int ppm=jq; // Initialized by PANIC Quasmon pointer ^ - G4int nRQ=0; // Prot. of a#of additionalRealQuasmons ^ + else if(status==3) count3++; // ^ + if(status<0) // Panic: Quasmon is below theMassShell ^ + { // ^ + //if(eCount==1 && DecayInEnvQ(pQ)) // ^ + //{ // ^ + // for_each(output->begin(), output->end(), DeleteQHadron());//-->-->-->-^ + // output->clear(); // ^ + // delete output; // >======================================^ + // eCount--; // Reduce a#of the living Quasmons ^ + // pQ->KillQuasmon(); // ^ + // return theQHadrons; // ^ + //} // ^ + G4int ppm=jq; // Initialized by PANIC Quasmon pointer ^ + G4int nRQ=0; // Prot. of a#of additionalRealQuasmons ^ #ifdef edebug - G4cout<<"G4QEnv::HadrQEnv: ***PANIC*** for jq="<<jq<<G4endl; // ^ + G4cout<<"G4QEnv::HadrQEnv: ***PANIC*** for jq="<<jq<<G4endl; // ^ #endif - G4ThreeVector vp= pQ->Get4Momentum().vect(); // PANICQuasmon momentum ^ - G4double dpm=1.e+30; // Big number (dot product of momenta) ^ + G4ThreeVector vp= pQ->Get4Momentum().vect(); // PANICQuasmon momentum ^ + G4double dpm=1.e+30; // Big number (dot product of momenta) ^ if(nQuasmons>1) for(G4int ir=0; ir<nQuasmons; ir++)// Search for partner ^ - { // ^ - if(ir!=jq) // Skip the current (PANIC) Quasmon itself^ - { // ^ + { // ^ + if(ir!=jq) // Skip the current (PANIC) Quasmon itself^ + { // ^ G4Quasmon* rQ = theQuasmons[ir]; // ^ - G4int Qst = rQ->GetStatus();// Status of a Quasmon ^ + G4int Qst = rQ->GetStatus();// Status of a Quasmon ^ #ifdef edebug G4cout<<"G4QEnv::HadrQEnv: ir="<<ir<<",Qstatus="<<Qst<<G4endl; // ^ #endif - if(Qst>0) // Skip the dead Quasmon ^ + if(Qst>0) // Skip the dead Quasmon ^ { nRQ++; // Increment real-Quasmon-counter ^ - G4double dp=vp.dot(rQ->Get4Momentum().vect()); // ^ - if(dp<dpm) // Search for the "moving in thesameDir" ^ - { // ^ - ppm=ir; // Remember the index of MinProj Quasmon ^ - dpm=dp; // Remember the value of theMinProjection ^ + G4double dp=vp.dot(rQ->Get4Momentum().vect()); // ^ + if(dp<dpm) // Search for the "moving in thesameDir" ^ + { // ^ + ppm=ir; // Remember the index of MinProj Quasmon ^ + dpm=dp; // Remember the value of theMinProjection ^ } // ^ } // ^ } // End of the Quasmon LOOP - } // End of the partner-search-for-the-PANIC-Quasmon LOOP ^ - if(nRQ) // Merge with theBestPartnerQuasmonCandid ^ - { // ^ + } // End of the partner-search-for-the-PANIC-Quasmon LOOP ^ + if(nRQ) // Merge with theBestPartnerQuasmonCandid ^ + { // ^ G4Quasmon* rQ = theQuasmons[ppm]; // ^ - G4QContent rQC= rQ->GetQC(); // ^ - G4LorentzVector r4M= rQ->Get4Momentum(); // ^ - rQC += pQ->GetQC(); // ^ - r4M += pQ->Get4Momentum(); // ^ - rQ->InitQuasmon(rQC, r4M); // Make new Quasmon ^ + G4QContent rQC= rQ->GetQC(); // ^ + G4LorentzVector r4M= rQ->Get4Momentum(); // ^ + rQC += pQ->GetQC(); // ^ + r4M += pQ->Get4Momentum(); // ^ + rQ->InitQuasmon(rQC, r4M); // Make new Quasmon ^ #ifdef edebug G4cout<<"G4QE::HQE:"<<pQ->GetQC()<<"+"<<rQ->GetQC()<<"="<<rQC<<G4endl;//^ #endif - pQ->KillQuasmon(); // Delete old Quasmon ^ - eCount--; // Decrement counter of living Quasmons ^ + pQ->KillQuasmon(); // Delete old Quasmon ^ + eCount--; // Decrement counter of living Quasmons ^ } // ^ - else // No candidate to resolve PANIC was found ^ - { // ^ + else // No candidate to resolve PANIC was found ^ + { // ^ #ifdef edebug G4cout<<"G4QEnv::HQE: No Q-cand. nRQ="<<nRQ<<",eC="<<eCount<<G4endl; // ^ #endif - //if(eCount==1 && CheckGroundState(pQ,true)) // BackFusion attempt ^ - if(CheckGroundState(pQ,true)) // The only Q: BackFusion attempt ^ - { - for_each(output->begin(), output->end(), DeleteQHadron()); //-->-->---^ - output->clear(); // ^ - delete output; // >======================================^ - pQ->KillQuasmon(); // ^ - eCount--; // Reduce a#of the living Quasmons ^ + //if(eCount==1 && CheckGroundState(pQ,true)) // BackFusion attempt ^ + if(CheckGroundState(pQ,true)) // The only Q: BackFusion attempt ^ + { + for_each(output->begin(), output->end(), DeleteQHadron()); //-->-->---^ + output->clear(); // ^ + delete output; // >======================================^ + pQ->KillQuasmon(); // ^ + eCount--; // Reduce a#of the living Quasmons ^ return theQHadrons; // ^ - } // ^ + } // ^ #ifdef fdebug G4cout<<"G4QEnv::HadrQEnv:NO PANICsolution,t="<<tot4M<<totQC<<G4endl;// ^ #endif - totQC=theEnvironment.GetQC(); // ^ - tot4M=theEnvironment.Get4Momentum(); // ^ + totQC=theEnvironment.GetQC(); // ^ + tot4M=theEnvironment.Get4Momentum(); // ^ if(nQuasmons) for(G4int jr=0; jr<nQuasmons; jr++) // Search for partner ^ - { // ^ + { // ^ G4Quasmon* rQ = theQuasmons[jr]; // Pointer to the Quasmon ^ - G4int Qst = rQ->GetStatus();// Status of a Quasmon ^ - if(jr==jq) // ^ + G4int Qst = rQ->GetStatus();// Status of a Quasmon ^ + if(jr==jq) // ^ { // ^ - totQC+=rQ->GetQC(); // QuarkContent of the Quasmon ^ - tot4M+=rQ->Get4Momentum();// QuarkContent of the Quasmon ^ - } // ^ - else if(Qst) // Skip dead Quasmons ^ - { // ^ - totQC+=rQ->GetQC(); // QuarkContent of the Quasmon ^ - tot4M+=rQ->Get4Momentum();// QuarkContent of the Quasmon ^ + totQC+=rQ->GetQC(); // QuarkContent of the Quasmon ^ + tot4M+=rQ->Get4Momentum();// QuarkContent of the Quasmon ^ + } // ^ + else if(Qst) // Skip dead Quasmons ^ + { // ^ + totQC+=rQ->GetQC(); // QuarkContent of the Quasmon ^ + tot4M+=rQ->Get4Momentum();// QuarkContent of the Quasmon ^ } // ^ - } // End of the "No candidate to resolve PANIC" ELSE ^ - pQ->KillQuasmon(); // Kill the only Quasmon ^ - eCount--; // Reduce a#of the living Quasmons ^ - CleanUp(); // Clean up THIS Quasmon and Environment ^ - G4QHadron* evH = new G4QHadron(totQC,tot4M); // Create ResidNuclHadron ^ - EvaporateResidual(evH); // Try to evaporate residual (del.equiv.) ^ - for_each(output->begin(), output->end(), DeleteQHadron()); //-->-->-->--^ - output->clear(); // ^ - delete output; // >======================================^ - force=true; // Make the force decision ^ - break; // Out of the fragmentation loop >->+ ^ + } // End of the "No candidate to resolve PANIC" ELSE ^ + pQ->KillQuasmon(); // Kill the only Quasmon ^ + eCount--; // Reduce a#of the living Quasmons ^ + CleanUp(); // Clean up THIS Quasmon and Environment ^ + G4QHadron* evH = new G4QHadron(totQC,tot4M); // Create ResidNuclHadron ^ + EvaporateResidual(evH); // Try to evaporate residual (del.equiv.) ^ + for_each(output->begin(), output->end(), DeleteQHadron()); //-->-->-->--^ + output->clear(); // ^ + delete output; // >======================================^ + force=true; // Make the force decision ^ + break; // Out of the fragmentation loop >->+ ^ } // | ^ } // | ^ } // | ^ - for_each(output->begin(), output->end(), DeleteQHadron()); // ->-->-->--|-----^ - output->clear(); // | ^ - delete output; // >================================|=====^ + for_each(output->begin(), output->end(), DeleteQHadron()); // ->-->-->--|-----^ + output->clear(); // | ^ + delete output; // >================================|=====^ } // End of skip of the dead Quasmons | #ifdef pdebug G4cout<<"G4QE::HQE:QStat("<<jq<<"="<<status<<pQ->Get4Momentum()<<G4endl;//| #endif } // End of fragmentation LOOP over Quasmons (jq) <--------<----------<-----+ - } - else if(totMass>totM+.001) // ==> "Try Evaporate or decay" case + } + else if(totMass>totM+.001) // ==> "Try Evaporate or decay" case { #ifdef edebug G4cout<<"G4QEnv::HadrQE: NQ="<<nQuasmons<<",tM="<<totMass<<",tPDG="<<totPDG<<",tB=" - <<totBN<<",GSM="<<totM<<",dM="<<totMass-totM<<",totQC="<<totQC<<G4endl; + <<totBN<<",GSM="<<totM<<",dM="<<totMass-totM<<",totQC="<<totQC<<G4endl; #endif //if(nQuasmons==1) - if(2>3) // ** closed, because doesn't make a diff + if(2>3) // ** closed, because doesn't make a diff { - G4QContent quasQC=totQC-envQC; // Total QuarkContent of the Only Quasmon - G4int resQPDG=quasQC.GetSPDGCode(); // GS mass for the Only Quasmon-hadron - G4int resQB=quasQC.GetBaryonNumber(); // Baryon number of the Only Quasmon - G4int resQCh=quasQC.GetCharge(); // Charge of the Only Quasmon - //G4int resQS=quasQC.GetStrangeness(); // Strangeness of the Only Quasmon - if((resQPDG==0 || resQPDG==10) && resQB>0) resQPDG=quasQC.GetZNSPDGCode(); - G4double resQM=G4QPDGCode(resQPDG).GetMass();// GS Mass of the Only Quasmon - G4double qCB=theEnvironment.CoulombBarrier(resQCh,resQB); // CoulombBarrier - G4double de=totMass-envM-resQM-qCB; + G4QContent quasQC=totQC-envQC; // Total QuarkContent of the Only Quasmon + G4int resQPDG=quasQC.GetSPDGCode(); // GS mass for the Only Quasmon-hadron + G4int resQB=quasQC.GetBaryonNumber(); // Baryon number of the Only Quasmon + G4int resQCh=quasQC.GetCharge(); // Charge of the Only Quasmon + //G4int resQS=quasQC.GetStrangeness(); // Strangeness of the Only Quasmon + if((resQPDG==0 || resQPDG==10) && resQB>0) resQPDG=quasQC.GetZNSPDGCode(); + G4double resQM=G4QPDGCode(resQPDG).GetMass();// GS Mass of the Only Quasmon + G4double qCB=theEnvironment.CoulombBarrier(resQCh,resQB); // CoulombBarrier + G4double de=totMass-envM-resQM-qCB; #ifdef debug G4cout<<"G4QEnv::HadrQE:NQ==1,tM="<<totMass<<",qM="<<resQM<<",eM="<<envM<<",CB=" - <<qCB<<",dE="<<totMass-envM-resQM-qCB<<G4endl; + <<qCB<<",dE="<<totMass-envM-resQM-qCB<<G4endl; #endif - if(de>0.) // Make DecayIn2 conserving Q-direction - { - G4LorentzVector fq4M=G4LorentzVector(0.,0.,0.,resQM); // Prot. for outQuasmon - G4LorentzVector fe4M=env4M; // Prototype for outEnvironment - G4LorentzVector dir4M=tot4M-env4M; // Internall quasmon 4-momentum + if(de>0.) // Make DecayIn2 conserving Q-direction + { + G4LorentzVector fq4M=G4LorentzVector(0.,0.,0.,resQM); // Prot. for outQuasmon + G4LorentzVector fe4M=env4M; // Prototype for outEnvironment + G4LorentzVector dir4M=tot4M-env4M; // Internall quasmon 4-momentum if(!G4QHadron(tot4M).RelDecayIn2(fe4M,fq4M,dir4M,1.,1.)) - { - G4cerr<<"***G4QEnv::HadrQE: Can't decay Q+E, t4M="<<tot4M<<",d="<<de<<G4endl; - throw G4QException("G4QEnvironment::HadronizeQEnvironment: Q+E RelDecayIn2"); - } - G4QHadron* hQua = new G4QHadron(resQPDG,fq4M); - theQHadrons.push_back(hQua); // Fill the hadron-quasmon (delete equiv.) - G4int envPDG=theEnvironment.GetPDGCode(); - G4QHadron* hEnv = new G4QHadron(envPDG,fe4M); - theQHadrons.push_back(hEnv); // Fill the hadron-environ (delete equiv.) + { + G4cerr<<"***G4QEnv::HadrQE: Can't decay Q+E, t4M="<<tot4M<<",d="<<de<<G4endl; + throw G4QException("G4QEnvironment::HadronizeQEnvironment: Q+E RelDecayIn2"); + } + G4QHadron* hQua = new G4QHadron(resQPDG,fq4M); + theQHadrons.push_back(hQua); // Fill the hadron-quasmon (delete equiv.) + G4int envPDG=theEnvironment.GetPDGCode(); + G4QHadron* hEnv = new G4QHadron(envPDG,fe4M); + theQHadrons.push_back(hEnv); // Fill the hadron-environ (delete equiv.) #ifdef debug G4cout<<"G4QEnv::HadrQEnv:fQ="<<resQPDG<<fq4M<<", fE="<<envPDG<<fe4M<<G4endl; #endif - return theQHadrons; - } - } + return theQHadrons; + } + } #ifdef debug G4cout<<"G4QEnv::HadrQE: M="<<totMass<<",PDG="<<totPDG<<",B="<<totBN<<",GSM="<<totM - <<",dM="<<totMass-totM<<",totQC="<<totQC<<G4endl; + <<",dM="<<totMass-totM<<",totQC="<<totQC<<G4endl; #endif - if(totBN<2) // ==> "Baryon/Meson residual Quasmon" case + if(totBN<2) // ==> "Baryon/Meson residual Quasmon" case { - if(totPDG==90999999||totPDG==90999000||totPDG==90000999||totPDG==89999001)//"M"ca + if(totPDG==90999999||totPDG==90999000||totPDG==90000999||totPDG==89999001)//"M"ca { G4cout<<"---Warning---G4QE::HQE:Meson(2) PDG="<<totPDG<<",M="<<totMass<<G4endl; } - else if(totPDG==1114||totPDG==2224) //==> "DELTA- or DELTA++" case (?antiDELTA) + else if(totPDG==1114||totPDG==2224) //==> "DELTA- or DELTA++" case (?antiDELTA) { - G4double mBar=mProt; + G4double mBar=mProt; G4int bPDG=2212; - G4double mMes=mPi; + G4double mMes=mPi; G4int mPDG=211; - if(totPDG==1114) // "DELTA-" case + if(totPDG==1114) // "DELTA-" case { - mBar=mNeut; - bPDG=2112; - mPDG=-211; + mBar=mNeut; + bPDG=2112; + mPDG=-211; } - if(totMass<mBar+mMes) + if(totMass<mBar+mMes) { G4cout<<"--Warning--G4QE::HQE:tM="<<totMass<<"<GSM+mPi0="<<totM+mPi0<<G4endl; - G4Quasmon* quasH = new G4Quasmon(totQC,tot4M); // totQC not tQC! - CleanUp(); + G4Quasmon* quasH = new G4Quasmon(totQC,tot4M); // totQC not tQC! + CleanUp(); if(!CheckGroundState(quasH,true)) - { - G4QHadron* hadr = new G4QHadron(totQC,tot4M); // totQC not tQC! - theQHadrons.push_back(hadr); // Cor or fill as It Is + { + G4QHadron* hadr = new G4QHadron(totQC,tot4M); // totQC not tQC! + theQHadrons.push_back(hadr); // Cor or fill as It Is #ifdef pdebug - G4cout<<"***G4QE::HQE:FillAsIs(-4),QC="<<totQC<<",4M="<<tot4M<<G4endl; + G4cout<<"***G4QE::HQE:FillAsIs(-4),QC="<<totQC<<",4M="<<tot4M<<G4endl; #endif - //throw G4QException("G4QEnvironment::HadronizeQEnvironment:(1)DecayQEnv"); - } - delete quasH; - return theQHadrons; + //throw G4QException("G4QEnvironment::HadronizeQEnvironment:(1)DecayQEnv"); + } + delete quasH; + return theQHadrons; } - else + else { - //G4QHadron* delta = new G4QHadron(totQC,tot4M); - //delta->SetNFragments(2); // Put a#of Fragments=2 - //theQHadrons.push_back(delta); // Fill the residual DELTA (del.Eq.) - // Instead - //delete delta; - // - G4LorentzVector b4Mom(0.,0.,0.,mBar); - G4LorentzVector m4Mom(0.,0.,0.,mMes); - if(!G4QHadron(tot4M).DecayIn2(b4Mom, m4Mom)) - { - G4cout<<"---Warning---G4QEnv::HadronizeQE:B="<<bPDG<<"(m="<<mBar<<") + M=" + //G4QHadron* delta = new G4QHadron(totQC,tot4M); + //delta->SetNFragments(2); // Put a#of Fragments=2 + //theQHadrons.push_back(delta); // Fill the residual DELTA (del.Eq.) + // Instead + //delete delta; + // + G4LorentzVector b4Mom(0.,0.,0.,mBar); + G4LorentzVector m4Mom(0.,0.,0.,mMes); + if(!G4QHadron(tot4M).DecayIn2(b4Mom, m4Mom)) + { + G4cout<<"---Warning---G4QEnv::HadronizeQE:B="<<bPDG<<"(m="<<mBar<<") + M=" <<mPDG<<"(m="<<mMes<<")="<<mBar+mMes<<" > mDel="<<totMass<<G4endl; - G4Quasmon* quasH = new G4Quasmon(totQC,tot4M); // totQC not tQC! - CleanUp(); + G4Quasmon* quasH = new G4Quasmon(totQC,tot4M); // totQC not tQC! + CleanUp(); if(!CheckGroundState(quasH,true)) - { - G4QHadron* hadr = new G4QHadron(totQC,tot4M); // totQC not tQC! - theQHadrons.push_back(hadr); // Cor or fill as It Is + { + G4QHadron* hadr = new G4QHadron(totQC,tot4M); // totQC not tQC! + theQHadrons.push_back(hadr); // Cor or fill as It Is #ifdef pdebug - G4cout<<"***G4QE::HQE:FillAsIs(-3),QC="<<totQC<<",4M="<<tot4M<<G4endl; + G4cout<<"***G4QE::HQE:FillAsIs(-3),QC="<<totQC<<",4M="<<tot4M<<G4endl; #endif - //throw G4QException("G4QEnvironment::HadronizeQEnv:Del->Bar+Mes error"); - } - delete quasH; - return theQHadrons; - } + //throw G4QException("G4QEnvironment::HadronizeQEnv:Del->Bar+Mes error"); + } + delete quasH; + return theQHadrons; + } #ifdef pdebug G4cout<<"G4QEnv::HadronizeQEnv: DELTA="<<totPDG<<tot4M<<" -> Bar=" - <<bPDG<<b4Mom<<" + Mes="<<mPDG<<m4Mom<<G4endl; + <<bPDG<<b4Mom<<" + Mes="<<mPDG<<m4Mom<<G4endl; #endif - G4QHadron* curBar = new G4QHadron(bPDG,b4Mom); - theQHadrons.push_back(curBar); // Fill the baryon (delete equivalent) + G4QHadron* curBar = new G4QHadron(bPDG,b4Mom); + theQHadrons.push_back(curBar); // Fill the baryon (delete equivalent) #ifdef edebug G4cout<<"G4QEnv::HadrQEnv:BaryonH="<<bPDG<<b4Mom<<G4endl; #endif - G4QHadron* curMes = new G4QHadron(mPDG,m4Mom); - theQHadrons.push_back(curMes); // Fill the meson (delete equivalent) + G4QHadron* curMes = new G4QHadron(mPDG,m4Mom); + theQHadrons.push_back(curMes); // Fill the meson (delete equivalent) #ifdef edebug G4cout<<"G4QEnv::HadrQEnv:MesonH="<<mPDG<<m4Mom<<G4endl; #endif - return theQHadrons; + return theQHadrons; } } - else if(totPDG==10) // ==> "Chipolino" case + else if(totPDG==10) // ==> "Chipolino" case { - G4QChipolino resChip(totQC); // define Residual as Chipolino - G4QPDGCode h1QPDG=resChip.GetQPDG1();// QPDG of the first hadron - G4int h1PDG=h1QPDG.GetPDGCode();// PDG code of the first hadron - G4double h1M =h1QPDG.GetMass(); // Mass of the first hadron - G4QPDGCode h2QPDG=resChip.GetQPDG2();// QPDG of the second hadron - G4int h2PDG=h2QPDG.GetPDGCode();// PDG code of the second hadron - G4double h2M =h2QPDG.GetMass(); // Mass of the second hadron - G4LorentzVector h14Mom(0.,0.,0.,h1M); - G4LorentzVector h24Mom(0.,0.,0.,h2M); - if(!G4QHadron(tot4M).DecayIn2(h14Mom, h24Mom)) - { - G4cout<<"---Warning---G4QEnv::HadronizeQE:h1="<<h1PDG<<"(m="<<h1M<<") + h2=" + G4QChipolino resChip(totQC); // define Residual as Chipolino + G4QPDGCode h1QPDG=resChip.GetQPDG1();// QPDG of the first hadron + G4int h1PDG=h1QPDG.GetPDGCode();// PDG code of the first hadron + G4double h1M =h1QPDG.GetMass(); // Mass of the first hadron + G4QPDGCode h2QPDG=resChip.GetQPDG2();// QPDG of the second hadron + G4int h2PDG=h2QPDG.GetPDGCode();// PDG code of the second hadron + G4double h2M =h2QPDG.GetMass(); // Mass of the second hadron + G4LorentzVector h14Mom(0.,0.,0.,h1M); + G4LorentzVector h24Mom(0.,0.,0.,h2M); + if(!G4QHadron(tot4M).DecayIn2(h14Mom, h24Mom)) + { + G4cout<<"---Warning---G4QEnv::HadronizeQE:h1="<<h1PDG<<"(m="<<h1M<<") + h2=" <<h2PDG<<"(m="<<h2M<<")="<<h1M+h2M<<" > mChipo="<<totMass<<G4endl; - G4Quasmon* quasH = new G4Quasmon(totQC,tot4M); // totQC not tQC! - CleanUp(); + G4Quasmon* quasH = new G4Quasmon(totQC,tot4M); // totQC not tQC! + CleanUp(); if(!CheckGroundState(quasH,true)) - { - G4QHadron* hadr = new G4QHadron(totQC,tot4M); // totQC not tQC! - theQHadrons.push_back(hadr); // Cor or fill as It Is + { + G4QHadron* hadr = new G4QHadron(totQC,tot4M); // totQC not tQC! + theQHadrons.push_back(hadr); // Cor or fill as It Is #ifdef pdebug - G4cout<<"***G4QE::HQE:FillAsIs(-2),QC="<<totQC<<",4M="<<tot4M<<G4endl; + G4cout<<"***G4QE::HQE:FillAsIs(-2),QC="<<totQC<<",4M="<<tot4M<<G4endl; #endif - //throw G4QException("G4QEnvironment::HadrQEnv: Chipo->1+2 decay failed"); - } - delete quasH; - return theQHadrons; - } + //throw G4QException("G4QEnvironment::HadrQEnv: Chipo->1+2 decay failed"); + } + delete quasH; + return theQHadrons; + } #ifdef pdebug G4cout<<"G4QEnv::HadronizeQEnv: Chipo="<<tot4M<<" -> h1=" - <<h1PDG<<h14Mom<<" + Mes="<<h2PDG<<h24Mom<<G4endl; + <<h1PDG<<h14Mom<<" + Mes="<<h2PDG<<h24Mom<<G4endl; #endif - G4QHadron* curH1 = new G4QHadron(h1PDG,h14Mom); - theQHadrons.push_back(curH1); // Fill the curH1 (delete equivalent) + G4QHadron* curH1 = new G4QHadron(h1PDG,h14Mom); + theQHadrons.push_back(curH1); // Fill the curH1 (delete equivalent) #ifdef edebug G4cout<<"G4QEnv::HadrQEnv:HadronH="<<h1PDG<<h14Mom<<G4endl; #endif - G4QHadron* curH2 = new G4QHadron(h2PDG,h24Mom); - theQHadrons.push_back(curH2); // Fill the curH2 (delete equivalent) + G4QHadron* curH2 = new G4QHadron(h2PDG,h24Mom); + theQHadrons.push_back(curH2); // Fill the curH2 (delete equivalent) #ifdef edebug G4cout<<"G4QEnv::HadrQEnv:MesAsHadrPartnerH="<<h2PDG<<h24Mom<<G4endl; #endif - return theQHadrons; + return theQHadrons; } - else if(totBN<2&&totPDG&&totMass<totM+mPi0+.001)// ==> "Meson/Baryon+gamma" case + else if(totBN<2&&totPDG&&totMass<totM+mPi0+.001)// ==> "Meson/Baryon+gamma" case { - G4LorentzVector h4Mom(0.,0.,0.,totM); - G4LorentzVector g4Mom(0.,0.,0.,0.); - if(!G4QHadron(tot4M).DecayIn2(h4Mom, g4Mom)) - { - G4cout<<"---Warning---G4QEnv::HadronizeQEnv: h="<<totPDG<<"(m="<<totM - <<") + gamma > mTot="<<totMass<<G4endl; - G4Quasmon* quasH = new G4Quasmon(totQC,tot4M); // totQC not tQC! - CleanUp(); + G4LorentzVector h4Mom(0.,0.,0.,totM); + G4LorentzVector g4Mom(0.,0.,0.,0.); + if(!G4QHadron(tot4M).DecayIn2(h4Mom, g4Mom)) + { + G4cout<<"---Warning---G4QEnv::HadronizeQEnv: h="<<totPDG<<"(m="<<totM + <<") + gamma > mTot="<<totMass<<G4endl; + G4Quasmon* quasH = new G4Quasmon(totQC,tot4M); // totQC not tQC! + CleanUp(); if(!CheckGroundState(quasH,true)) - { - G4QHadron* hadr = new G4QHadron(totQC,tot4M); // totQC not tQC! - theQHadrons.push_back(hadr); // Cor or fill as It Is + { + G4QHadron* hadr = new G4QHadron(totQC,tot4M); // totQC not tQC! + theQHadrons.push_back(hadr); // Cor or fill as It Is #ifdef pdebug - G4cout<<"***G4QE::HQE:FillAsIs(-1),QC="<<totQC<<",4M="<<tot4M<<G4endl; + G4cout<<"***G4QE::HQE:FillAsIs(-1),QC="<<totQC<<",4M="<<tot4M<<G4endl; #endif - //throw G4QException("G4QEnvironment::HadronizeQEnv:Gamma Decay failed"); - } - delete quasH; - return theQHadrons; - } + //throw G4QException("G4QEnvironment::HadronizeQEnv:Gamma Decay failed"); + } + delete quasH; + return theQHadrons; + } #ifdef pdebug G4cout<<"G4QE::HQE:"<<tot4M<<"->h="<<totPDG<<h4Mom<<" + gamma="<<g4Mom<<G4endl; #endif - G4QHadron* curG = new G4QHadron(22,g4Mom); - theQHadrons.push_back(curG); // Fill the gamma (delete equivalent) + G4QHadron* curG = new G4QHadron(22,g4Mom); + theQHadrons.push_back(curG); // Fill the gamma (delete equivalent) #ifdef edebug G4cout<<"G4QEnv::HadrQEnv:PhotonH="<<g4Mom<<G4endl; #endif - G4QHadron* curH = new G4QHadron(totPDG,h4Mom); + G4QHadron* curH = new G4QHadron(totPDG,h4Mom); #ifdef edebug G4cout<<"G4QEnv::HadrQEnv:GamPartnerH="<<totPDG<<h4Mom<<G4endl; #endif - if(totPDG==92000000||totPDG==90002000||totPDG==90000002) - theEnvironment.DecayDibaryon(curH,&theQHadrons); - else theQHadrons.push_back(curH); // Fill the baryon (delete equivalent) - return theQHadrons; + if(totPDG==92000000||totPDG==90002000||totPDG==90000002) + theEnvironment.DecayDibaryon(curH,&theQHadrons); + else theQHadrons.push_back(curH); // Fill the baryon (delete equivalent) + return theQHadrons; } - else if(totBN<2&&totPDG) // ==> "Meson/Baryon+pi" case + else if(totBN<2&&totPDG) // ==> "Meson/Baryon+pi" case { - G4int piPDG=111; - G4double mpi=mPi0; - G4int mbPDG=totPDG; - G4double mbm=totM; - if(totPDG==1114) + G4int piPDG=111; + G4double mpi=mPi0; + G4int mbPDG=totPDG; + G4double mbm=totM; + if(totPDG==1114) { piPDG=-211; - mpi=mPi; - mbPDG=2112; - mbm=mNeut; - } - else if(totPDG==2224) + mpi=mPi; + mbPDG=2112; + mbm=mNeut; + } + else if(totPDG==2224) { piPDG=211; - mpi=mPi; - mbPDG=2212; - mbm=mProt; - } - else if(totPDG==113) + mpi=mPi; + mbPDG=2212; + mbm=mProt; + } + else if(totPDG==113) { piPDG=-211; - mpi=mPi; - mbPDG=211; - mbm=mPi; - } - G4LorentzVector h4Mom(0.,0.,0.,mbm); - G4LorentzVector g4Mom(0.,0.,0.,mpi); - if(!G4QHadron(tot4M).DecayIn2(h4Mom, g4Mom)) - { - G4cout<<"---Warning---G4QEnv::HadronizeQEnv: h="<<mbPDG<<"(m="<<mbm - <<") + pi(m="<<mpi<<")="<<mbm+mpi<<" > mTot="<<totMass<<G4endl; - G4Quasmon* quasH = new G4Quasmon(totQC,tot4M); // totQC not tQC! - CleanUp(); + mpi=mPi; + mbPDG=211; + mbm=mPi; + } + G4LorentzVector h4Mom(0.,0.,0.,mbm); + G4LorentzVector g4Mom(0.,0.,0.,mpi); + if(!G4QHadron(tot4M).DecayIn2(h4Mom, g4Mom)) + { + G4cout<<"---Warning---G4QEnv::HadronizeQEnv: h="<<mbPDG<<"(m="<<mbm + <<") + pi(m="<<mpi<<")="<<mbm+mpi<<" > mTot="<<totMass<<G4endl; + G4Quasmon* quasH = new G4Quasmon(totQC,tot4M); // totQC not tQC! + CleanUp(); if(!CheckGroundState(quasH,true)) - { - G4QHadron* hadr = new G4QHadron(totQC,tot4M); // totQC not tQC! - theQHadrons.push_back(hadr); // Cor or fill as It Is + { + G4QHadron* hadr = new G4QHadron(totQC,tot4M); // totQC not tQC! + theQHadrons.push_back(hadr); // Cor or fill as It Is #ifdef pdebug - G4cout<<"***G4QE::HQE:FillAsIs(0),QC="<<totQC<<",4M="<<tot4M<<G4endl; + G4cout<<"***G4QE::HQE:FillAsIs(0),QC="<<totQC<<",4M="<<tot4M<<G4endl; #endif - //throw G4QException("G4QEnvironment::HadronizeQE: DecIn2 mB+nPi failed"); - } - delete quasH; - return theQHadrons; - } + //throw G4QException("G4QEnvironment::HadronizeQE: DecIn2 mB+nPi failed"); + } + delete quasH; + return theQHadrons; + } #ifdef pdebug G4cout<<"G4QE::HQE:"<<tot4M<<"->h="<<mbPDG<<h4Mom<<"+p="<<piPDG<<g4Mom<<G4endl; #endif - G4QHadron* curH = new G4QHadron(mbPDG,h4Mom); - if(totPDG==92000000||totPDG==90002000||totPDG==90000002) - theEnvironment.DecayDibaryon(curH,&theQHadrons); - else theQHadrons.push_back(curH); // Fill the baryon (delete equivalent) - G4QHadron* curG = new G4QHadron(piPDG,g4Mom); + G4QHadron* curH = new G4QHadron(mbPDG,h4Mom); + if(totPDG==92000000||totPDG==90002000||totPDG==90000002) + theEnvironment.DecayDibaryon(curH,&theQHadrons); + else theQHadrons.push_back(curH); // Fill the baryon (delete equivalent) + G4QHadron* curG = new G4QHadron(piPDG,g4Mom); #ifdef edebug G4cout<<"G4QEnv::HadrQEnv:Gamma/Pi0H="<<piPDG<<g4Mom<<G4endl; #endif - theQHadrons.push_back(curG); // Fill the pi0 (delete equivalent) - return theQHadrons; + theQHadrons.push_back(curG); // Fill the pi0 (delete equivalent) + return theQHadrons; } - else // ==> "|B|<2 new Quasmon" case + else // ==> "|B|<2 new Quasmon" case { - G4Quasmon* resid = new G4Quasmon(totQC,tot4M); // delete is 3 lines below <-+ - G4QNucleus vacuum(90000000); // ^ - G4QHadronVector* curout=resid->Fragment(vacuum,1);//**!!DESTROY!!** <-<-+ ^ - G4int rest = resid->GetStatus(); // New status after fragm attempt ^ ^ - if(!rest) eCount--; // Dec ExistingQuasmonsCounter ^ ^ - delete resid; //_________________________________^___^ - G4int nHadrons = curout->size(); // a#of Hadrons in the outHV ^ - if(nHadrons>0) // Transfer QHadrons to Output ^ + G4Quasmon* resid = new G4Quasmon(totQC,tot4M); // delete is 3 lines below <-+ + G4QNucleus vacuum(90000000); // ^ + G4QHadronVector* curout=resid->Fragment(vacuum,1);//**!!DESTROY!!** <-<-+ ^ + G4int rest = resid->GetStatus(); // New status after fragm attempt ^ ^ + if(!rest) eCount--; // Dec ExistingQuasmonsCounter ^ ^ + delete resid; //_________________________________^___^ + G4int nHadrons = curout->size(); // a#of Hadrons in the outHV ^ + if(nHadrons>0) // Transfer QHadrons to Output ^ { - for (G4int ih=0; ih<nHadrons; ih++)// LOOP over output QHadrons ^ + for (G4int ih=0; ih<nHadrons; ih++)// LOOP over output QHadrons ^ { // ^ #ifdef pdebug G4cout<<"G4QEnv::HadrQE:NewB<2, H#"<<ih // ^ - <<", QPDG="<<(*curout)[ih]->GetQPDG() // ^ - <<", 4M="<<(*curout)[ih]->Get4Momentum()<<G4endl; // ^ + <<", QPDG="<<(*curout)[ih]->GetQPDG() // ^ + <<", 4M="<<(*curout)[ih]->Get4Momentum()<<G4endl; // ^ #endif - //theQHadrons.push_back(curout->operator[](ih));//(delete equ.) <-<-^ - theQHadrons.push_back((*curout)[ih]); // (delete equ.) <-<-^ + //theQHadrons.push_back(curout->operator[](ih));//(delete equ.) <-<-^ + theQHadrons.push_back((*curout)[ih]); // (delete equ.) <-<-^ } // ^ } // ^ else // ^ { // ^ - G4cerr<<"***G4QEnv::HadrQEnv:MQ="<<tot4M.m()<<",QC="<<totQC<<G4endl;//^ + G4cerr<<"***G4QEnv::HadrQEnv:MQ="<<tot4M.m()<<",QC="<<totQC<<G4endl;//^ throw G4QException("G4QEnvironment::HadronizeQEnv: Quasmon decay?");//^ } // *** Do not destroy instances ***^ - curout->clear(); // The instances are filled above ^ - delete curout; // >===============================^ - return theQHadrons; + curout->clear(); // The instances are filled above ^ + delete curout; // >===============================^ + return theQHadrons; } } - else + else { - G4QContent tQC =totQC; // Not subtracted copy for error prints - G4int NSi =0; // a#of additional Sigma - G4int SiPDG =0; // PDG of additional Sigma - G4double MSi =0.; // TotalMass of additional Sigma - G4int NaK =0; // a#of additional Kaons/anti-Kaons - G4int aKPDG =0; // PDG of additional Kaons/anti-Kaons - G4double MaK =0.; // TotalMass of additionalKaons/anti-Kaons - G4int NPi =0; // a#of additional pions - G4int PiPDG =0; // PDG of additional pions - G4double MPi =0.; // Total Mass of additional pions - if (totBN>0&&totS<0&&totChg+totChg>=totBN)// => "additional K+" case + G4QContent tQC =totQC; // Not subtracted copy for error prints + G4int NSi =0; // a#of additional Sigma + G4int SiPDG =0; // PDG of additional Sigma + G4double MSi =0.; // TotalMass of additional Sigma + G4int NaK =0; // a#of additional Kaons/anti-Kaons + G4int aKPDG =0; // PDG of additional Kaons/anti-Kaons + G4double MaK =0.; // TotalMass of additionalKaons/anti-Kaons + G4int NPi =0; // a#of additional pions + G4int PiPDG =0; // PDG of additional pions + G4double MPi =0.; // Total Mass of additional pions + if (totBN>0&&totS<0&&totChg+totChg>=totBN)// => "additional K+" case { - aKPDG=321; - NaK=-totS; - MaK=mK*NaK; - tQC+=totS*KpQC; - totChg+=totS; // Charge reduction (totS<0!) - totS=0; // Anti-strangness goes to anti-Kaons + aKPDG=321; + NaK=-totS; + MaK=mK*NaK; + tQC+=totS*KpQC; + totChg+=totS; // Charge reduction (totS<0!) + totS=0; // Anti-strangness goes to anti-Kaons } - else if (totBN>0&&totS<0) // => "additional aK0" case + else if (totBN>0&&totS<0) // => "additional aK0" case { - aKPDG=311; - NaK=-totS; - MaK=mK0*NaK; - tQC+=totS*K0QC; - totS=0; // Anti-strangness goes to anti-Kaons + aKPDG=311; + NaK=-totS; + MaK=mK0*NaK; + tQC+=totS*K0QC; + totS=0; // Anti-strangness goes to anti-Kaons } - else if (totBN>1&&totS>0&&(totChg<0||totChg>totBN-totS))//=>"additional Sigma" + else if (totBN>1&&totS>0&&(totChg<0||totChg>totBN-totS))//=>"additional Sigma" { - NSi=totS; // Prototype of a#of Sigmas - if(totChg<0) // Negative Sigmas + NSi=totS; // Prototype of a#of Sigmas + if(totChg<0) // Negative Sigmas { - SiPDG=3112; - if(-totChg<NSi) NSi=-totChg; // A#of Sigma- is restricted by charge - MSi=mSigM*NSi; // Total mass of Sigma-'s - tQC-=NSi*SiMQC; // Subtract QC of Sigma-'s from totQC - totChg+=NSi; // Increase the TotalResidualCharge - } - else + SiPDG=3112; + if(-totChg<NSi) NSi=-totChg; // A#of Sigma- is restricted by charge + MSi=mSigM*NSi; // Total mass of Sigma-'s + tQC-=NSi*SiMQC; // Subtract QC of Sigma-'s from totQC + totChg+=NSi; // Increase the TotalResidualCharge + } + else { - SiPDG=3222; // Positive Sigmas - G4int exChg=totChg-totBN+totS; // Excesive positive charge - if(exChg<NSi) NSi=exChg; // A#of Sigma+ is restricted by charge - MSi=mSigP*NSi; // Total mass of Sigma+'s - tQC-=NSi*SiPQC; // Subtract QC of Sigma-'s from totQC - totChg-=NSi; // Reduce the TotalResidualCharge - } - totS-=NSi; // Reduce the TotalResidualStrangeness - totBN-=NSi; // A#of excessive pions is added below + SiPDG=3222; // Positive Sigmas + G4int exChg=totChg-totBN+totS; // Excesive positive charge + if(exChg<NSi) NSi=exChg; // A#of Sigma+ is restricted by charge + MSi=mSigP*NSi; // Total mass of Sigma+'s + tQC-=NSi*SiPQC; // Subtract QC of Sigma-'s from totQC + totChg-=NSi; // Reduce the TotalResidualCharge + } + totS-=NSi; // Reduce the TotalResidualStrangeness + totBN-=NSi; // A#of excessive pions is added below } - else if (totBN>0&&totS>totBN&&totBN<totS+totChg)// => "additional K0" case + else if (totBN>0&&totS>totBN&&totBN<totS+totChg)// => "additional K0" case {// @@ Here Ksi0 check should be added totS=2>totBN=1&&totBN=1<totS=2+totChg=0 - aKPDG=-311; - NaK=totS-totBN; - MaK=mK0*NaK; - tQC+=NaK*K0QC; - totS-=NaK; // Reduce residualstrangeness + aKPDG=-311; + NaK=totS-totBN; + MaK=mK0*NaK; + tQC+=NaK*K0QC; + totS-=NaK; // Reduce residualstrangeness } - else if (totBN>0&&totS>totBN&&totChg<0)// => "additional K-" case + else if (totBN>0&&totS>totBN&&totChg<0)// => "additional K-" case {// @@ Here Ksi- check should be added totS=2>totBN=1&&totChg=-1<0 - aKPDG=-321; - NaK=totS-totBN; - MaK=mK0*NaK; - tQC+=NaK*KpQC; - totChg+=NaK; // Increase residual charge - totS-=NaK; // Reduce residual strangeness + aKPDG=-321; + NaK=totS-totBN; + MaK=mK0*NaK; + tQC+=NaK*KpQC; + totChg+=NaK; // Increase residual charge + totS-=NaK; // Reduce residual strangeness } - // === Now residual DELTAS should be subtracted === - if (totBN>0&&totChg>totBN-totS) // => "additional PI+" case + // === Now residual DELTAS should be subtracted === + if (totBN>0&&totChg>totBN-totS) // => "additional PI+" case {// @@ Here Sigma+ check should be added totChg=1>totBn=1-totS=1 - PiPDG=211; - NPi=totChg-totBN+totS; - MPi=mPi*NPi; - tQC-=NPi*PiQC; - totChg-=NPi; + PiPDG=211; + NPi=totChg-totBN+totS; + MPi=mPi*NPi; + tQC-=NPi*PiQC; + totChg-=NPi; } - else if (totBN>0&&totChg<0) // => "additional PI-" case + else if (totBN>0&&totChg<0) // => "additional PI-" case {// @@ Here Sigma- check should be added totChg<0 - PiPDG=-211; - NPi=-totChg; - MPi=mPi*NPi; - tQC+=NPi*PiQC; // Now anti-Pions must be subtracted - totChg+=NPi; + PiPDG=-211; + NPi=-totChg; + MPi=mPi*NPi; + tQC+=NPi*PiQC; // Now anti-Pions must be subtracted + totChg+=NPi; } - else if (!totBN&&totChg>1-totS) // => "additional PI+" case + else if (!totBN&&totChg>1-totS) // => "additional PI+" case {// @@ Here Sigma+ check should be added totChg=1>totBn=1-totS=1 - PiPDG=211; - NPi=totChg+totS-1; - MPi=mPi*NPi; - tQC-=NPi*PiQC; - totChg-=NPi; + PiPDG=211; + NPi=totChg+totS-1; + MPi=mPi*NPi; + tQC-=NPi*PiQC; + totChg-=NPi; } - else if (!totBN&&totChg<-1-totS) // => "additional PI-" case + else if (!totBN&&totChg<-1-totS) // => "additional PI-" case {// @@ Here Sigma- check should be added totChg<0 - PiPDG=-211; - NPi-=totChg+totS+1; - MPi=mPi*NPi; - tQC+=NPi*PiQC; // Now anti-Pions must be subtracted - totChg+=NPi; + PiPDG=-211; + NPi-=totChg+totS+1; + MPi=mPi*NPi; + tQC+=NPi*PiQC; // Now anti-Pions must be subtracted + totChg+=NPi; } - G4double totRM=0.; // min (GS) Mass of the Residual System - if(totBN<2) // Calculate totPDG & totRM + G4double totRM=0.; // min (GS) Mass of the Residual System + if(totBN<2) // Calculate totPDG & totRM { - totPDG=tQC.GetSPDGCode(); // MinPDGCode for the Residual compound - if(totPDG==10&&tQC.GetBaryonNumber()>0) totPDG=tQC.GetZNSPDGCode(); - if(totPDG) totRM=G4QPDGCode(totPDG).GetMass(); // minMass of theResidualSystem - else - { - G4cerr<<"***G4QEnvironment::HadronizeQEnv: totPDG=0"<<G4endl; - throw G4QException("G4QEnv::HadrQEnv: Impossible PDG for B=1"); - } - } - else + totPDG=tQC.GetSPDGCode(); // MinPDGCode for the Residual compound + if(totPDG==10&&tQC.GetBaryonNumber()>0) totPDG=tQC.GetZNSPDGCode(); + if(totPDG) totRM=G4QPDGCode(totPDG).GetMass(); // minMass of theResidualSystem + else + { + G4cerr<<"***G4QEnvironment::HadronizeQEnv: totPDG=0"<<G4endl; + throw G4QException("G4QEnv::HadrQEnv: Impossible PDG for B=1"); + } + } + else { - G4QNucleus totN(tQC,tot4M); // Excited nucleus for the Residual System - totRM=totN.GetMZNS(); // min (GS) Mass of the Residual System - totPDG=totN.GetPDG(); // Total PDG Code for the Current compound + G4QNucleus totN(tQC,tot4M); // Excited nucleus for the Residual System + totRM=totN.GetMZNS(); // min (GS) Mass of the Residual System + totPDG=totN.GetPDG(); // Total PDG Code for the Current compound } - if(NaK) // ==> "Decay in K0 or K+ + NPi" case + if(NaK) // ==> "Decay in K0 or K+ + NPi" case {//@@ Can (must) be moved to EvaporateResidual ?? - if(!NPi) // ==> "Only anti-strange K" case + if(!NPi) // ==> "Only anti-strange K" case { - G4LorentzVector m4Mom(0.,0.,0.,MaK); - G4LorentzVector n4Mom(0.,0.,0.,totRM); - G4double sum=MaK+totRM; - if(fabs(totMass-sum)<eps) + G4LorentzVector m4Mom(0.,0.,0.,MaK); + G4LorentzVector n4Mom(0.,0.,0.,totRM); + G4double sum=MaK+totRM; + if(fabs(totMass-sum)<eps) { - m4Mom=tot4M*(MaK/sum); - n4Mom=tot4M*(totRM/sum); - } - else if(totMass<sum || !G4QHadron(tot4M).DecayIn2(m4Mom, n4Mom)) - { + m4Mom=tot4M*(MaK/sum); + n4Mom=tot4M*(totRM/sum); + } + else if(totMass<sum || !G4QHadron(tot4M).DecayIn2(m4Mom, n4Mom)) + { #ifdef edebug - G4cout<<"***G4QE::HadronizeQE:M="<<aKPDG<<"(m="<<MaK<<")+N="<<totPDG<<"(m=" - <<totRM<<")="<<sum<<" > mSN="<<totMass<<",d="<<sum-totMass<<G4endl; + G4cout<<"***G4QE::HadronizeQE:M="<<aKPDG<<"(m="<<MaK<<")+N="<<totPDG<<"(m=" + <<totRM<<")="<<sum<<" > mSN="<<totMass<<",d="<<sum-totMass<<G4endl; #endif - G4Quasmon* quasH = new G4Quasmon(totQC,tot4M); // totQC not tQC! - CleanUp(); + G4Quasmon* quasH = new G4Quasmon(totQC,tot4M); // totQC not tQC! + CleanUp(); if(!CheckGroundState(quasH,true)) - { - G4QHadron* hadr = new G4QHadron(totQC,tot4M); // totQC not tQC! - theQHadrons.push_back(hadr); // Cor or fill as It Is + { + G4QHadron* hadr = new G4QHadron(totQC,tot4M); // totQC not tQC! + theQHadrons.push_back(hadr); // Cor or fill as It Is #ifdef pdebug - G4cout<<"***G4QEnv::HQE:FillAsItIs(1),QC="<<totQC<<",4M="<<tot4M<<G4endl; + G4cout<<"***G4QEnv::HQE:FillAsItIs(1),QC="<<totQC<<",4M="<<tot4M<<G4endl; #endif - //throw G4QException("G4QEnvironment::HadronizeQEnv:AntiS-Nuc error"); - } - delete quasH; - return theQHadrons; - } + //throw G4QException("G4QEnvironment::HadronizeQEnv:AntiS-Nuc error"); + } + delete quasH; + return theQHadrons; + } #ifdef pdebug G4cout<<"G4QEnv::HadronizeQEnv: SN="<<tot4M<<" -> M=" - <<aKPDG<<m4Mom<<" + N="<<totPDG<<n4Mom<<totQC<<G4endl; + <<aKPDG<<m4Mom<<" + N="<<totPDG<<n4Mom<<totQC<<G4endl; #endif - G4LorentzVector oneK=m4Mom; // 4-mom of only kaon - if(NaK>1) oneK = m4Mom/NaK; // 4-mom of one kaon - for (G4int jp=0; jp<NaK; jp++) + G4LorentzVector oneK=m4Mom; // 4-mom of only kaon + if(NaK>1) oneK = m4Mom/NaK; // 4-mom of one kaon + for (G4int jp=0; jp<NaK; jp++) { - G4QHadron* curK = new G4QHadron(aKPDG,oneK); - theQHadrons.push_back(curK); // Fill the curK (delete equivalent) - } - G4QHadron* curN = new G4QHadron(totPDG,n4Mom); // @@ Use DecayDib then Evap - EvaporateResidual(curN); // Try to evaporate residual (del.eq.) + G4QHadron* curK = new G4QHadron(aKPDG,oneK); + theQHadrons.push_back(curK); // Fill the curK (delete equivalent) + } + G4QHadron* curN = new G4QHadron(totPDG,n4Mom); // @@ Use DecayDib then Evap + EvaporateResidual(curN); // Try to evaporate residual (del.eq.) } - else // ==> "Anti-strange K's + DELTA's" case + else // ==> "Anti-strange K's + DELTA's" case { - G4LorentzVector m4Mom(0.,0.,0.,MPi); - G4LorentzVector k4Mom(0.,0.,0.,MaK); - G4LorentzVector n4Mom(0.,0.,0.,totRM); - if(!G4QHadron(tot4M).DecayIn3(m4Mom, k4Mom, n4Mom)) - { - G4cout<<"---Warning---G4QE::HadronQE:K="<<aKPDG<<"(m="<<MaK<<")+PI="<<PiPDG - <<"(m="<<MPi<<")+N="<<totPDG<<"(m="<<totRM<<")>tM="<<totMass<<G4endl; - G4Quasmon* quasH = new G4Quasmon(totQC,tot4M); // totQC not tQC! - CleanUp(); + G4LorentzVector m4Mom(0.,0.,0.,MPi); + G4LorentzVector k4Mom(0.,0.,0.,MaK); + G4LorentzVector n4Mom(0.,0.,0.,totRM); + if(!G4QHadron(tot4M).DecayIn3(m4Mom, k4Mom, n4Mom)) + { + G4cout<<"---Warning---G4QE::HadronQE:K="<<aKPDG<<"(m="<<MaK<<")+PI="<<PiPDG + <<"(m="<<MPi<<")+N="<<totPDG<<"(m="<<totRM<<")>tM="<<totMass<<G4endl; + G4Quasmon* quasH = new G4Quasmon(totQC,tot4M); // totQC not tQC! + CleanUp(); if(!CheckGroundState(quasH,true)) - { - G4QHadron* hadr = new G4QHadron(totQC,tot4M); // totQC not tQC! - theQHadrons.push_back(hadr); // Cor or fill as It Is + { + G4QHadron* hadr = new G4QHadron(totQC,tot4M); // totQC not tQC! + theQHadrons.push_back(hadr); // Cor or fill as It Is #ifdef pdebug - G4cout<<"***G4QEnv::HQE:FillAsItIs(2),QC="<<totQC<<",4M="<<tot4M<<G4endl; + G4cout<<"***G4QEnv::HQE:FillAsItIs(2),QC="<<totQC<<",4M="<<tot4M<<G4endl; #endif - //throw G4QException("G4QEnvironment::HadronizeQE:2AntiS-Nucl(1) error"); - } - delete quasH; - return theQHadrons; - } + //throw G4QException("G4QEnvironment::HadronizeQE:2AntiS-Nucl(1) error"); + } + delete quasH; + return theQHadrons; + } #ifdef fdebug G4cout<<"G4QEnv::HadronizeQEnv: SN="<<tot4M<<" -> nK="<<aKPDG<<k4Mom - <<" + nPi="<<PiPDG<<m4Mom<<" + N="<<totPDG<<n4Mom<<G4endl; + <<" + nPi="<<PiPDG<<m4Mom<<" + N="<<totPDG<<n4Mom<<G4endl; #endif - G4LorentzVector onePi=m4Mom; // 4-mom of only pion - if(NPi>1) onePi = m4Mom/NPi; // 4-mom of one pion - for (G4int ip=0; ip<NPi; ip++) + G4LorentzVector onePi=m4Mom; // 4-mom of only pion + if(NPi>1) onePi = m4Mom/NPi; // 4-mom of one pion + for (G4int ip=0; ip<NPi; ip++) { - G4QHadron* curP = new G4QHadron(PiPDG,onePi); + G4QHadron* curP = new G4QHadron(PiPDG,onePi); #ifdef pdebug G4cout<<"G4QEnv::HadrQEnv:SPion#"<<ip<<",H="<<PiPDG<<onePi<<G4endl; #endif - theQHadrons.push_back(curP); // Fill the curM (delete equivalent) + theQHadrons.push_back(curP); // Fill the curM (delete equivalent) } - G4LorentzVector oneK=k4Mom; // 4-mom of one kaon - if(NaK>1) oneK = k4Mom/NaK; // 4-mom of one kaon - for (G4int jp=0; jp<NaK; jp++) + G4LorentzVector oneK=k4Mom; // 4-mom of one kaon + if(NaK>1) oneK = k4Mom/NaK; // 4-mom of one kaon + for (G4int jp=0; jp<NaK; jp++) { - G4QHadron* curP = new G4QHadron(aKPDG,oneK); + G4QHadron* curP = new G4QHadron(aKPDG,oneK); #ifdef pdebug G4cout<<"G4QEnv::HadrQEnv:Kaon#"<<jp<<",H="<<aKPDG<<oneK<<G4endl; #endif - theQHadrons.push_back(curP); // Fill the curM (delete equivalent) + theQHadrons.push_back(curP); // Fill the curM (delete equivalent) } - G4QHadron* curN = new G4QHadron(totPDG,n4Mom); - EvaporateResidual(curN); // Try to evaporate residual (del.equiv.) + G4QHadron* curN = new G4QHadron(totPDG,n4Mom); + EvaporateResidual(curN); // Try to evaporate residual (del.equiv.) } - return theQHadrons; - } - else if(NSi) // ==> "Decay in Sig+ or Sig- + NPi" case + return theQHadrons; + } + else if(NSi) // ==> "Decay in Sig+ or Sig- + NPi" case {//@@ Can (must) be moved to EvaporateResidual ?? - if(!NPi) // ==> "Only Sigma's" case + if(!NPi) // ==> "Only Sigma's" case { - G4LorentzVector m4Mom(0.,0.,0.,MSi); - G4LorentzVector n4Mom(0.,0.,0.,totRM); - G4double sum=MSi+totRM; - if(fabs(totMass-sum)<eps) + G4LorentzVector m4Mom(0.,0.,0.,MSi); + G4LorentzVector n4Mom(0.,0.,0.,totRM); + G4double sum=MSi+totRM; + if(fabs(totMass-sum)<eps) { - m4Mom=tot4M*(MSi/sum); - n4Mom=tot4M*(totRM/sum); - } - else if(totMass<sum || !G4QHadron(tot4M).DecayIn2(m4Mom, n4Mom)) - { + m4Mom=tot4M*(MSi/sum); + n4Mom=tot4M*(totRM/sum); + } + else if(totMass<sum || !G4QHadron(tot4M).DecayIn2(m4Mom, n4Mom)) + { #ifdef edebug - G4cout<<"***G4QE::HadronizeQE:M="<<aKPDG<<"(s="<<MSi<<")+N="<<totPDG<<"(m=" - <<totRM<<")="<<sum<<" > mSN="<<totMass<<",d="<<sum-totMass<<G4endl; + G4cout<<"***G4QE::HadronizeQE:M="<<aKPDG<<"(s="<<MSi<<")+N="<<totPDG<<"(m=" + <<totRM<<")="<<sum<<" > mSN="<<totMass<<",d="<<sum-totMass<<G4endl; #endif - G4Quasmon* quasH = new G4Quasmon(totQC,tot4M); // totQC not tQC! - CleanUp(); + G4Quasmon* quasH = new G4Quasmon(totQC,tot4M); // totQC not tQC! + CleanUp(); if(!CheckGroundState(quasH,true)) - { - G4QHadron* hadr = new G4QHadron(totQC,tot4M); // totQC not tQC! - theQHadrons.push_back(hadr); // Cor or fill as It Is + { + G4QHadron* hadr = new G4QHadron(totQC,tot4M); // totQC not tQC! + theQHadrons.push_back(hadr); // Cor or fill as It Is #ifdef pdebug - G4cout<<"***G4QEnv::HQE:FillAsItIs(2),QC="<<totQC<<",4M="<<tot4M<<G4endl; + G4cout<<"***G4QEnv::HQE:FillAsItIs(2),QC="<<totQC<<",4M="<<tot4M<<G4endl; #endif - //throw G4QException("G4QEnvironment::HadronizeQEnv:Sigma-Nuc error"); - } - delete quasH; - return theQHadrons; - } + //throw G4QException("G4QEnvironment::HadronizeQEnv:Sigma-Nuc error"); + } + delete quasH; + return theQHadrons; + } #ifdef pdebug G4cout<<"G4QEnv::HadronizeQEnv: SN="<<tot4M<<" -> Sig=" - <<SiPDG<<m4Mom<<" + N="<<totPDG<<n4Mom<<totQC<<G4endl; + <<SiPDG<<m4Mom<<" + N="<<totPDG<<n4Mom<<totQC<<G4endl; #endif - G4LorentzVector oneS=m4Mom; // 4-mom of the only sigma - if(NSi>1) oneS = m4Mom/NSi; // 4-mom of one sigma - for (G4int jp=0; jp<NSi; jp++) + G4LorentzVector oneS=m4Mom; // 4-mom of the only sigma + if(NSi>1) oneS = m4Mom/NSi; // 4-mom of one sigma + for (G4int jp=0; jp<NSi; jp++) { - G4QHadron* curS = new G4QHadron(SiPDG,oneS); - theQHadrons.push_back(curS); // Fill the curS (delete equivalent) - } - G4QHadron* curN = new G4QHadron(totPDG,n4Mom); // @@ Use DecayDib then Evap - EvaporateResidual(curN); // Try to evaporate residual (del.eq.) + G4QHadron* curS = new G4QHadron(SiPDG,oneS); + theQHadrons.push_back(curS); // Fill the curS (delete equivalent) + } + G4QHadron* curN = new G4QHadron(totPDG,n4Mom); // @@ Use DecayDib then Evap + EvaporateResidual(curN); // Try to evaporate residual (del.eq.) } - else // ==> "Sigma's + DELTA's" case + else // ==> "Sigma's + DELTA's" case { - G4LorentzVector m4Mom(0.,0.,0.,MPi); - G4LorentzVector k4Mom(0.,0.,0.,MSi); - G4LorentzVector n4Mom(0.,0.,0.,totRM); - if(!G4QHadron(tot4M).DecayIn3(m4Mom, k4Mom, n4Mom)) - { - G4cout<<"---Warning---G4QE::HadronQE:S="<<SiPDG<<"(m="<<MSi<<")+PI="<<PiPDG - <<"(m="<<MPi<<")+N="<<totPDG<<"(m="<<totRM<<")>tM="<<totMass<<G4endl; - G4Quasmon* quasH = new G4Quasmon(totQC,tot4M); // totQC not tQC! - CleanUp(); + G4LorentzVector m4Mom(0.,0.,0.,MPi); + G4LorentzVector k4Mom(0.,0.,0.,MSi); + G4LorentzVector n4Mom(0.,0.,0.,totRM); + if(!G4QHadron(tot4M).DecayIn3(m4Mom, k4Mom, n4Mom)) + { + G4cout<<"---Warning---G4QE::HadronQE:S="<<SiPDG<<"(m="<<MSi<<")+PI="<<PiPDG + <<"(m="<<MPi<<")+N="<<totPDG<<"(m="<<totRM<<")>tM="<<totMass<<G4endl; + G4Quasmon* quasH = new G4Quasmon(totQC,tot4M); // totQC not tQC! + CleanUp(); if(!CheckGroundState(quasH,true)) - { - G4QHadron* hadr = new G4QHadron(totQC,tot4M); // totQC not tQC! - theQHadrons.push_back(hadr); // Cor or fill as It Is + { + G4QHadron* hadr = new G4QHadron(totQC,tot4M); // totQC not tQC! + theQHadrons.push_back(hadr); // Cor or fill as It Is #ifdef pdebug - G4cout<<"***G4QEnv::HQE:FillAsItIs(3),QC="<<totQC<<",4M="<<tot4M<<G4endl; + G4cout<<"***G4QEnv::HQE:FillAsItIs(3),QC="<<totQC<<",4M="<<tot4M<<G4endl; #endif - //throw G4QException("G4QEnvironment::HadronizeQE:2Sigma-Nucl(1) error"); - } - delete quasH; - return theQHadrons; - } + //throw G4QException("G4QEnvironment::HadronizeQE:2Sigma-Nucl(1) error"); + } + delete quasH; + return theQHadrons; + } #ifdef fdebug G4cout<<"G4QEnv::HadronizeQEnv: SN="<<tot4M<<" -> nS="<<SiPDG<<k4Mom - <<" + nPi="<<PiPDG<<m4Mom<<" + N="<<totPDG<<n4Mom<<G4endl; + <<" + nPi="<<PiPDG<<m4Mom<<" + N="<<totPDG<<n4Mom<<G4endl; #endif - G4LorentzVector onePi=m4Mom; // 4-mom of the only pion - if(NPi>1) onePi = m4Mom/NPi; // 4-mom of one pion - for (G4int ip=0; ip<NPi; ip++) + G4LorentzVector onePi=m4Mom; // 4-mom of the only pion + if(NPi>1) onePi = m4Mom/NPi; // 4-mom of one pion + for (G4int ip=0; ip<NPi; ip++) { - G4QHadron* curP = new G4QHadron(PiPDG,onePi); + G4QHadron* curP = new G4QHadron(PiPDG,onePi); #ifdef pdebug G4cout<<"G4QEnv::HadrQEnv:SPion#"<<ip<<",H="<<PiPDG<<onePi<<G4endl; #endif - theQHadrons.push_back(curP); // Fill the curM (delete equivalent) + theQHadrons.push_back(curP); // Fill the curM (delete equivalent) } - G4LorentzVector oneS=k4Mom; // 4-mom of the only kaon - if(NSi>1) oneS = k4Mom/NSi; // 4-mom of one kaon - for (G4int jp=0; jp<NSi; jp++) + G4LorentzVector oneS=k4Mom; // 4-mom of the only kaon + if(NSi>1) oneS = k4Mom/NSi; // 4-mom of one kaon + for (G4int jp=0; jp<NSi; jp++) { - G4QHadron* curP = new G4QHadron(SiPDG,oneS); + G4QHadron* curP = new G4QHadron(SiPDG,oneS); #ifdef pdebug G4cout<<"G4QEnv::HadrQEnv:Sigma#"<<jp<<",H="<<SiPDG<<oneS<<G4endl; #endif - theQHadrons.push_back(curP); // Fill the curM (delete equivalent) + theQHadrons.push_back(curP); // Fill the curM (delete equivalent) } - G4QHadron* curN = new G4QHadron(totPDG,n4Mom); - EvaporateResidual(curN); // Try to evaporate residual (del.equiv.) + G4QHadron* curN = new G4QHadron(totPDG,n4Mom); + EvaporateResidual(curN); // Try to evaporate residual (del.equiv.) } - return theQHadrons; + return theQHadrons; } - else if(NPi) // ==> "Decay in Pi+ or Pi-" case + else if(NPi) // ==> "Decay in Pi+ or Pi-" case { - if(NPi==1) // ==> "One isobar" case + if(NPi==1) // ==> "One isobar" case { - G4LorentzVector m4Mom(0.,0.,0.,MPi); - G4LorentzVector n4Mom(0.,0.,0.,totRM); - if(!G4QHadron(tot4M).DecayIn2(m4Mom, n4Mom)) - { - G4cout<<"---Warning---G4QEnv::HadronizeQEnv:M="<<PiPDG<<"(m="<<MPi<<")+N=" + G4LorentzVector m4Mom(0.,0.,0.,MPi); + G4LorentzVector n4Mom(0.,0.,0.,totRM); + if(!G4QHadron(tot4M).DecayIn2(m4Mom, n4Mom)) + { + G4cout<<"---Warning---G4QEnv::HadronizeQEnv:M="<<PiPDG<<"(m="<<MPi<<")+N=" <<totPDG<<"(m="<<totRM<<")="<<MPi+totRM<<" > mSN="<<totMass<<G4endl; - G4Quasmon* quasH = new G4Quasmon(totQC,tot4M); // totQC not tQC! - CleanUp(); + G4Quasmon* quasH = new G4Quasmon(totQC,tot4M); // totQC not tQC! + CleanUp(); if(!CheckGroundState(quasH,true)) - { - G4QHadron* hadr = new G4QHadron(totQC,tot4M); // totQC not tQC! - theQHadrons.push_back(hadr); // Cor or fill as It Is + { + G4QHadron* hadr = new G4QHadron(totQC,tot4M); // totQC not tQC! + theQHadrons.push_back(hadr); // Cor or fill as It Is #ifdef pdebug - G4cout<<"***G4QEnv::HQE:FillAsItIs(5),QC="<<totQC<<",4M="<<tot4M<<G4endl; + G4cout<<"***G4QEnv::HQE:FillAsItIs(5),QC="<<totQC<<",4M="<<tot4M<<G4endl; #endif - //throw G4QException("G4QEnvironment::HadronizeQEnv:Iso-Nucleus error"); - } - delete quasH; - return theQHadrons; - } + //throw G4QException("G4QEnvironment::HadronizeQEnv:Iso-Nucleus error"); + } + delete quasH; + return theQHadrons; + } #ifdef pdebug G4cout<<"G4QEnv::HadronizeQEnv: SN="<<tot4M<<" -> M="<<PiPDG<<m4Mom<<" + N=" - <<totPDG<<n4Mom<<totQC<<G4endl; + <<totPDG<<n4Mom<<totQC<<G4endl; #endif - G4QHadron* curK = new G4QHadron(PiPDG,m4Mom); - theQHadrons.push_back(curK); // Fill the curK (delete equivalent) - G4QHadron* curN = new G4QHadron(totPDG,n4Mom); - EvaporateResidual(curN); // Evaporate residual (delete equivalent) + G4QHadron* curK = new G4QHadron(PiPDG,m4Mom); + theQHadrons.push_back(curK); // Fill the curK (delete equivalent) + G4QHadron* curN = new G4QHadron(totPDG,n4Mom); + EvaporateResidual(curN); // Evaporate residual (delete equivalent) } else // ==> "Many Isobars" case { - G4int N1Pi = NPi/2; // First pion cluster - G4int N2Pi = NPi-N1Pi; // Second pion cluster - G4double mM = MPi/NPi; // Mass of Pi - G4double m1M = mM*N1Pi; // Mass of the first Pi-cluster - G4double m2M = mM*N2Pi; // Mass of the second Pi-cluster - G4LorentzVector m4Mom(0.,0.,0.,m1M); - G4LorentzVector k4Mom(0.,0.,0.,m2M); - G4LorentzVector n4Mom(0.,0.,0.,totRM); - if(!G4QHadron(tot4M).DecayIn3(m4Mom, k4Mom, n4Mom)) - { - G4cout<<"---Warning---G4QEnv::HadronizeQE:N*Pi="<<PiPDG<<"(m="<<mM<<")+N=" - <<totPDG<<"(m="<<totRM<<") >(?)SN="<<totMass<<G4endl; - G4Quasmon* quasH = new G4Quasmon(totQC,tot4M); // totQC not tQC! - CleanUp(); + G4int N1Pi = NPi/2; // First pion cluster + G4int N2Pi = NPi-N1Pi; // Second pion cluster + G4double mM = MPi/NPi; // Mass of Pi + G4double m1M = mM*N1Pi; // Mass of the first Pi-cluster + G4double m2M = mM*N2Pi; // Mass of the second Pi-cluster + G4LorentzVector m4Mom(0.,0.,0.,m1M); + G4LorentzVector k4Mom(0.,0.,0.,m2M); + G4LorentzVector n4Mom(0.,0.,0.,totRM); + if(!G4QHadron(tot4M).DecayIn3(m4Mom, k4Mom, n4Mom)) + { + G4cout<<"---Warning---G4QEnv::HadronizeQE:N*Pi="<<PiPDG<<"(m="<<mM<<")+N=" + <<totPDG<<"(m="<<totRM<<") >(?)SN="<<totMass<<G4endl; + G4Quasmon* quasH = new G4Quasmon(totQC,tot4M); // totQC not tQC! + CleanUp(); if(!CheckGroundState(quasH,true)) - { - G4QHadron* hadr = new G4QHadron(totQC,tot4M); // totQC not tQC! - theQHadrons.push_back(hadr); // Cor or fill as It Is + { + G4QHadron* hadr = new G4QHadron(totQC,tot4M); // totQC not tQC! + theQHadrons.push_back(hadr); // Cor or fill as It Is #ifdef pdebug - G4cout<<"***G4QEnv::HQE:FillAsItIs(5),QC="<<totQC<<",4M="<<tot4M<<G4endl; + G4cout<<"***G4QEnv::HQE:FillAsItIs(5),QC="<<totQC<<",4M="<<tot4M<<G4endl; #endif - //throw G4QException("G4QEnvironment::HadronizeQE:ManyIsoNucleus error"); - } - delete quasH; - return theQHadrons; - } + //throw G4QException("G4QEnvironment::HadronizeQE:ManyIsoNucleus error"); + } + delete quasH; + return theQHadrons; + } #ifdef pdebug G4cout<<"G4QEnv::HadronizeQEnv: SN="<<tot4M<<" -> N*PI="<<PiPDG - <<" (4M1="<<m4Mom<<" + 4M2="<<k4Mom<<") + N="<<totPDG<<n4Mom<<G4endl; + <<" (4M1="<<m4Mom<<" + 4M2="<<k4Mom<<") + N="<<totPDG<<n4Mom<<G4endl; #endif - G4LorentzVector one1=m4Mom; // 4-mom of the 1st cluster only pion - if(N1Pi>1) one1=m4Mom/N1Pi; // 4-mom of the 1st cluster one pion - for (G4int ip=0; ip<N1Pi; ip++) + G4LorentzVector one1=m4Mom; // 4-mom of the 1st cluster only pion + if(N1Pi>1) one1=m4Mom/N1Pi; // 4-mom of the 1st cluster one pion + for (G4int ip=0; ip<N1Pi; ip++) { - G4QHadron* curP = new G4QHadron(PiPDG,one1); - theQHadrons.push_back(curP); // Fill the curP (delete equivalent) + G4QHadron* curP = new G4QHadron(PiPDG,one1); + theQHadrons.push_back(curP); // Fill the curP (delete equivalent) } - G4LorentzVector one2=k4Mom; // 4-mom of the 2nd cluster only pion - if(N2Pi>1) one2=k4Mom/N2Pi; // 4-mom of the 2nd cluster one pion - for (G4int jp=0; jp<N2Pi; jp++) + G4LorentzVector one2=k4Mom; // 4-mom of the 2nd cluster only pion + if(N2Pi>1) one2=k4Mom/N2Pi; // 4-mom of the 2nd cluster one pion + for (G4int jp=0; jp<N2Pi; jp++) { - G4QHadron* curP = new G4QHadron(PiPDG,one2); - theQHadrons.push_back(curP); // Fill the curP (delete equivalent) + G4QHadron* curP = new G4QHadron(PiPDG,one2); + theQHadrons.push_back(curP); // Fill the curP (delete equivalent) } - G4QHadron* curN = new G4QHadron(totPDG,n4Mom); - EvaporateResidual(curN); // Try to evaporate residual (del.equiv.) + G4QHadron* curN = new G4QHadron(totPDG,n4Mom); + EvaporateResidual(curN); // Try to evaporate residual (del.equiv.) } - return theQHadrons; + return theQHadrons; } } #ifdef fdebug G4cout<<"G4QE::HadrQEnv: Try FinalEvaporation t4M="<<tot4M<<",tQC="<<totQC<<G4endl; #endif - CleanUp(); - G4QHadron* evH = new G4QHadron(totQC,tot4M); // Create a Hadron for theResidualNucl - EvaporateResidual(evH); // Try to evaporate residual (del.equiv.) - return theQHadrons; + CleanUp(); + G4QHadron* evH = new G4QHadron(totQC,tot4M); // Create a Hadron for theResidualNucl + EvaporateResidual(evH); // Try to evaporate residual (del.equiv.) + return theQHadrons; } - else // ==> "Only GSEnvironment exists" case - { - if(totPDG==90000000 || fabs(totMass)<0.000001) + else // ==> "Only GSEnvironment exists" case + { + if(totPDG==90000000 || fabs(totMass)<0.000001) { - CleanUp(); - return theQHadrons; + CleanUp(); + return theQHadrons; } - G4double dM=totMass-totM; + G4double dM=totMass-totM; #ifdef pdebug G4cout<<"G4QEnv::HadrQEnv:GroundState tM-GSM="<<dM<<",GSM="<<totM<<",tPDG="<<totPDG - <<",nQ="<<nQuasmons<<G4endl; + <<",nQ="<<nQuasmons<<G4endl; #endif G4Quasmon* pQ = theQuasmons[0]; // Pointer to the first Quasmon - G4QPDGCode QQPDG = pQ->GetQPDG(); // QPDG of the Quasmon - G4int QPDG = QQPDG.GetPDGCode(); - G4QNucleus totRN(totQC,tot4M); // Nucleus for theTotalResidualNuclearComp - G4int spbRN=totRN.SplitBaryon();// PossibilityToSplit baryon from Residual - if(dM>-0.001) + G4QPDGCode QQPDG = pQ->GetQPDG(); // QPDG of the Quasmon + G4int QPDG = QQPDG.GetPDGCode(); + G4QNucleus totRN(totQC,tot4M); // Nucleus for theTotalResidualNuclearComp + G4int spbRN=totRN.SplitBaryon();// PossibilityToSplit baryon from Residual + if(dM>-0.001) { #ifdef fdebug G4cout<<"G4QE::HadrQE:ExcitedNucleus, dM="<<dM<<">0,tBN="<<totBN<<",nQ="<<G4endl; #endif - CleanUp(); - G4QHadron* evH = new G4QHadron(totQC,tot4M);// Create a Hadron for ResidualNucl - EvaporateResidual(evH); // Try to evaporate residual (del. equiv.) + CleanUp(); + G4QHadron* evH = new G4QHadron(totQC,tot4M);// Create a Hadron for ResidualNucl + EvaporateResidual(evH); // Try to evaporate residual (del. equiv.) } - else if(nQuasmons==1&&QPDG!=22&&QPDG!=111)// => "Decay Quasmon or Q+Environ" case + else if(nQuasmons==1&&QPDG!=22&&QPDG!=111)// => "Decay Quasmon or Q+Environ" case { - G4int envPDG = theEnvironment.GetPDG();// PDGCode of the NuclQEnvironment + G4int envPDG = theEnvironment.GetPDG();// PDGCode of the NuclQEnvironment #ifdef pdebug G4cout<<"G4QEnv::HadrQEnv: nQ=1, QPDG=="<<QPDG<<G4endl; #endif - if(!QPDG) + if(!QPDG) { G4cerr<<"***G4QEnv::HadrQE: Quasmon is an unknown QHadron: PDG="<<QPDG<<G4endl; throw G4QException("G4QEnvironment::HadronizeQEnvironment:(2)Cann'tDecayQEnv"); } - // => "Quasmon-Chipolino or Environment-Dibaryon" case - else if(QPDG==10||QPDG==92000000||QPDG==90002000||QPDG==90000002) + // => "Quasmon-Chipolino or Environment-Dibaryon" case + else if(QPDG==10||QPDG==92000000||QPDG==90002000||QPDG==90000002) { - G4QContent QQC = pQ->GetQC(); // Quark Content of the Quasmon - G4QPDGCode h1QPDG=nQPDG; // QPDG of the first hadron - G4double h1M =mNeut; // Mass of the first hadron - G4QPDGCode h2QPDG=h1QPDG; // QPDG of the second hadron - G4double h2M =mNeut; // Mass of the second hadron - if(QPDG==10) - { - G4QChipolino QChip(QQC); // define the Quasmon as a Chipolino - h1QPDG=QChip.GetQPDG1(); // QPDG of the first hadron - h1M =h1QPDG.GetMass(); // Mass of the first hadron - h2QPDG=QChip.GetQPDG2(); // QPDG of the second hadron - h2M =h2QPDG.GetMass(); // Mass of the second hadron + G4QContent QQC = pQ->GetQC(); // Quark Content of the Quasmon + G4QPDGCode h1QPDG=nQPDG; // QPDG of the first hadron + G4double h1M =mNeut; // Mass of the first hadron + G4QPDGCode h2QPDG=h1QPDG; // QPDG of the second hadron + G4double h2M =mNeut; // Mass of the second hadron + if(QPDG==10) + { + G4QChipolino QChip(QQC); // define the Quasmon as a Chipolino + h1QPDG=QChip.GetQPDG1(); // QPDG of the first hadron + h1M =h1QPDG.GetMass(); // Mass of the first hadron + h2QPDG=QChip.GetQPDG2(); // QPDG of the second hadron + h2M =h2QPDG.GetMass(); // Mass of the second hadron } else if(QPDG==90002000) { - h1QPDG=pQPDG; // QPDG of the first hadron - h1M =mProt; // Mass of the first hadron - h2QPDG=h1QPDG; // QPDG of the second hadron - h2M =mProt; // Mass of the second hadron + h1QPDG=pQPDG; // QPDG of the first hadron + h1M =mProt; // Mass of the first hadron + h2QPDG=h1QPDG; // QPDG of the second hadron + h2M =mProt; // Mass of the second hadron } else if(QPDG==92000000) { - h1QPDG=lQPDG; // QPDG of the first hadron - h1M =mLamb; // Mass of the first hadron - h2QPDG=h1QPDG; // QPDG of the second hadron - h2M =mLamb; // Mass of the second hadron - G4double ddMass=totMass-envM; // Free CM energy - if(ddMass>mSigZ+mSigZ) // Sigma0+Sigma0 is possible + h1QPDG=lQPDG; // QPDG of the first hadron + h1M =mLamb; // Mass of the first hadron + h2QPDG=h1QPDG; // QPDG of the second hadron + h2M =mLamb; // Mass of the second hadron + G4double ddMass=totMass-envM; // Free CM energy + if(ddMass>mSigZ+mSigZ) // Sigma0+Sigma0 is possible { // @@ Only two particles PS is used - G4double dd2=ddMass*ddMass; // Squared free energy - G4double sma=mLamb+mLamb; // Lambda+Lambda sum - G4double pr1=0.; // Prototype to avoid sqrt(-) - if(ddMass>sma) pr1=sqrt((dd2-sma*sma)*dd2); // Lamb+Lamb PS - sma=mLamb+mSigZ; // Lambda+Sigma0 sum - G4double smi=mSigZ-mLamb; // Sigma0-Lambda difference - G4double pr2=pr1; // Prototype of +L+S0 PS - if(ddMass>sma && ddMass>smi) pr2+=sqrt((dd2-sma*sma)*(dd2-smi*smi)); - sma=mSigZ+mSigZ; // Sigma0+Sigma0 sum - G4double pr3=pr2; // Prototype of +Sigma0+Sigma0 PS - if(ddMass>sma) pr3+=sqrt((dd2-sma*sma)*dd2); - G4double hhRND=pr3*G4UniformRand(); // Randomize PS - if(hhRND>pr2) // --> "ENnv+Sigma0+Sigma0" case - { // - h1QPDG=s0QPDG; // QPDG of the first hadron - h1M =mSigZ; // Mass of the first hadron - h2QPDG=h1QPDG; // QPDG of the second hadron - h2M =mSigZ; // Mass of the second hadron - } // - else if(hhRND>pr1) // --> "ENnv+Sigma0+Lambda" case - { // - h1QPDG=s0QPDG; // QPDG of the first hadron - h1M =mSigZ; // Mass of the first hadron - } // - } // - else if(ddMass>mSigZ+mLamb) // Lambda+Sigma0 is possible + G4double dd2=ddMass*ddMass; // Squared free energy + G4double sma=mLamb+mLamb; // Lambda+Lambda sum + G4double pr1=0.; // Prototype to avoid sqrt(-) + if(ddMass>sma) pr1=sqrt((dd2-sma*sma)*dd2); // Lamb+Lamb PS + sma=mLamb+mSigZ; // Lambda+Sigma0 sum + G4double smi=mSigZ-mLamb; // Sigma0-Lambda difference + G4double pr2=pr1; // Prototype of +L+S0 PS + if(ddMass>sma && ddMass>smi) pr2+=sqrt((dd2-sma*sma)*(dd2-smi*smi)); + sma=mSigZ+mSigZ; // Sigma0+Sigma0 sum + G4double pr3=pr2; // Prototype of +Sigma0+Sigma0 PS + if(ddMass>sma) pr3+=sqrt((dd2-sma*sma)*dd2); + G4double hhRND=pr3*G4UniformRand(); // Randomize PS + if(hhRND>pr2) // --> "ENnv+Sigma0+Sigma0" case + { // + h1QPDG=s0QPDG; // QPDG of the first hadron + h1M =mSigZ; // Mass of the first hadron + h2QPDG=h1QPDG; // QPDG of the second hadron + h2M =mSigZ; // Mass of the second hadron + } // + else if(hhRND>pr1) // --> "ENnv+Sigma0+Lambda" case + { // + h1QPDG=s0QPDG; // QPDG of the first hadron + h1M =mSigZ; // Mass of the first hadron + } // + } // + else if(ddMass>mSigZ+mLamb) // Lambda+Sigma0 is possible { // @@ Only two particles PS is used - G4double dd2=ddMass*ddMass; // Squared free energy - G4double sma=mLamb+mLamb; // Lambda+Lambda sum - G4double pr1=0.; // Prototype to avoid sqrt(-) - if(ddMass>sma) pr1=sqrt((dd2-sma*sma)*dd2); // Lamb+Lamb PS - sma=mLamb+mSigZ; // Lambda+Sigma0 sum - G4double smi=mSigZ-mLamb; // Sigma0-Lambda difference - G4double pr2=pr1; // Prototype of +L+S0 PS - if(ddMass>sma && ddMass>smi) pr2+=sqrt((dd2-sma*sma)*(dd2-smi*smi)); - if(pr2*G4UniformRand()>pr1) // --> "ENnv+Sigma0+Lambda" case - { // - h1QPDG=s0QPDG; // QPDG of the first hadron - h1M =mSigZ; // Mass of the first hadron - } // - } // + G4double dd2=ddMass*ddMass; // Squared free energy + G4double sma=mLamb+mLamb; // Lambda+Lambda sum + G4double pr1=0.; // Prototype to avoid sqrt(-) + if(ddMass>sma) pr1=sqrt((dd2-sma*sma)*dd2); // Lamb+Lamb PS + sma=mLamb+mSigZ; // Lambda+Sigma0 sum + G4double smi=mSigZ-mLamb; // Sigma0-Lambda difference + G4double pr2=pr1; // Prototype of +L+S0 PS + if(ddMass>sma && ddMass>smi) pr2+=sqrt((dd2-sma*sma)*(dd2-smi*smi)); + if(pr2*G4UniformRand()>pr1) // --> "ENnv+Sigma0+Lambda" case + { // + h1QPDG=s0QPDG; // QPDG of the first hadron + h1M =mSigZ; // Mass of the first hadron + } // + } // } // - if(h1M+h2M+envM<totMass) // => "Three parts decay" case + if(h1M+h2M+envM<totMass) // => "Three parts decay" case { - G4LorentzVector h14M(0.,0.,0.,h1M); - G4LorentzVector h24M(0.,0.,0.,h2M); - G4LorentzVector e4M(0.,0.,0.,envM); - if(!G4QHadron(tot4M).DecayIn3(h14M,h24M,e4M)) + G4LorentzVector h14M(0.,0.,0.,h1M); + G4LorentzVector h24M(0.,0.,0.,h2M); + G4LorentzVector e4M(0.,0.,0.,envM); + if(!G4QHadron(tot4M).DecayIn3(h14M,h24M,e4M)) { G4cout<<"Warning->G4QE::HQE:M="<<tot4M.m()<<","<<totMass<<"->"<<h1QPDG<<"(" <<h1M<<")+"<<h1QPDG<<"("<<h2M<<")+"<<envM<<"="<<h1M+h2M+envM<<G4endl; - G4Quasmon* quasH = new G4Quasmon(totQC,tot4M); // totQC not tQC! - CleanUp(); + G4Quasmon* quasH = new G4Quasmon(totQC,tot4M); // totQC not tQC! + CleanUp(); if(!CheckGroundState(quasH,true)) - { - G4QHadron* hadr = new G4QHadron(totQC,tot4M); // totQC not tQC! - theQHadrons.push_back(hadr); // Cor or fill as It Is + { + G4QHadron* hadr = new G4QHadron(totQC,tot4M); // totQC not tQC! + theQHadrons.push_back(hadr); // Cor or fill as It Is #ifdef pdebug - G4cout<<"***G4QEnv::HQE:FillAsItIs(6),QC="<<totQC<<",4M="<<tot4M<<G4endl; + G4cout<<"***G4QEnv::HQE:FillAsItIs(6),QC="<<totQC<<",4M="<<tot4M<<G4endl; #endif //throw G4QException("G4QEnv::HadrQEnv:QChipo+Environment DecIn3 Error"); - } - delete quasH; - return theQHadrons; + } + delete quasH; + return theQHadrons; } - G4QHadron* h1H = new G4QHadron(h1QPDG.GetPDGCode(),h14M); - theQHadrons.push_back(h1H); // (delete equivalent) + G4QHadron* h1H = new G4QHadron(h1QPDG.GetPDGCode(),h14M); + theQHadrons.push_back(h1H); // (delete equivalent) #ifdef pdebug G4cout<<"G4QE::HQE:(2) H1="<<h1QPDG<<h14M<<G4endl; #endif - G4QHadron* h2H = new G4QHadron(h2QPDG.GetPDGCode(),h24M); - theQHadrons.push_back(h2H); // (delete equivalent) + G4QHadron* h2H = new G4QHadron(h2QPDG.GetPDGCode(),h24M); + theQHadrons.push_back(h2H); // (delete equivalent) #ifdef pdebug - G4cout<<"G4QE::HQE:(2) H2-"<<h2QPDG<<h24M<<G4endl; + G4cout<<"G4QE::HQE:(2) H2-"<<h2QPDG<<h24M<<G4endl; #endif - G4QHadron* qeH = new G4QHadron(envPDG,e4M); - theQHadrons.push_back(qeH); // (delete equivalent) + G4QHadron* qeH = new G4QHadron(envPDG,e4M); + theQHadrons.push_back(qeH); // (delete equivalent) #ifdef pdebug - G4cout<<"G4QE::HQE:(2) QEenv="<<envPDG<<e4M<<G4endl; + G4cout<<"G4QE::HQE:(2) QEenv="<<envPDG<<e4M<<G4endl; #endif } #ifdef fdebug - G4cout<<"***G4QEnv::HadQEnv:tM="<<tot4M.m()<<totQC<<"< h1="<<h1QPDG<<"(M="<<h1M - <<")+h2="<<h1QPDG<<"(M="<<h2M<<")+eM="<<envM<<"="<<h1M+h2M+envM<<G4endl; + G4cout<<"***G4QEnv::HadQEnv:tM="<<tot4M.m()<<totQC<<"< h1="<<h1QPDG<<"(M="<<h1M + <<")+h2="<<h1QPDG<<"(M="<<h2M<<")+eM="<<envM<<"="<<h1M+h2M+envM<<G4endl; //throw G4QException("G4QEnv::HadrQEnv:QChipo+Env mass > than decaying mass"); #endif - CleanUp(); - G4QHadron* evH = new G4QHadron(totQC,tot4M);// Create a Hadron for ResidualNucl - EvaporateResidual(evH); // Try to evaporate residual (del. equiv.) - return theQHadrons; + CleanUp(); + G4QHadron* evH = new G4QHadron(totQC,tot4M);// Create a Hadron for ResidualNucl + EvaporateResidual(evH); // Try to evaporate residual (del. equiv.) + return theQHadrons; } - } - else if(spbRN)// => "Join all quasmons to the residual compound and evaporate" case + } + else if(spbRN)// => "Join all quasmons to the residual compound and evaporate" case { #ifdef fdebug - G4cout<<"***G4QEnv::HadQEnv: Evaporate the total residual tRN="<<totRN<<G4endl; + G4cout<<"***G4QEnv::HadQEnv: Evaporate the total residual tRN="<<totRN<<G4endl; #endif - CleanUp(); - G4QHadron* evH = new G4QHadron(totQC,tot4M);// Create Hadron for theResidNucleus - EvaporateResidual(evH); // Try to evaporate residual (del.equiv.) - return theQHadrons; + CleanUp(); + G4QHadron* evH = new G4QHadron(totQC,tot4M);// Create Hadron for theResidNucleus + EvaporateResidual(evH); // Try to evaporate residual (del.equiv.) + return theQHadrons; } - //else if(nQuasmons<3||theQHadrons.size()<12)//"Try to correct" case (change cond) - else if(2>3) // "Try to correct" case (change condition) + //else if(nQuasmons<3||theQHadrons.size()<12)//"Try to correct" case (change cond) + else if(2>3) // "Try to correct" case (change condition) { #ifdef pdebug G4cout<<"***G4QEnv::HadrQE: M="<<totMass<<",dM="<<dM<<",nQ="<<nQuasmons<<G4endl; #endif - G4int nOfOUT = theQHadrons.size(); - while(nOfOUT) - { - G4QHadron* theLast = theQHadrons[nOfOUT-1]; - G4LorentzVector last4M = theLast->Get4Momentum(); - G4QContent lastQC = theLast->GetQC(); - G4int lastS = lastQC.GetStrangeness(); - G4int totS = totQC.GetStrangeness(); - G4int nFr = theLast->GetNFragments(); - G4int gam = theLast->GetPDGCode(); + G4int nOfOUT = theQHadrons.size(); + while(nOfOUT) + { + G4QHadron* theLast = theQHadrons[nOfOUT-1]; + G4LorentzVector last4M = theLast->Get4Momentum(); + G4QContent lastQC = theLast->GetQC(); + G4int lastS = lastQC.GetStrangeness(); + G4int totS = totQC.GetStrangeness(); + G4int nFr = theLast->GetNFragments(); + G4int gam = theLast->GetPDGCode(); if(gam!=22&&!nFr&&lastS<0&&lastS+totS<0&&nOfOUT>1) // => "Skip K,gam & decayed" { - G4QHadron* thePrev = theQHadrons[nOfOUT-2]; - theQHadrons.pop_back(); // the last QHadron is excluded from OUTPUT - theQHadrons.pop_back(); // the prev QHadron is excluded from OUTPUT - theQHadrons.push_back(thePrev); // thePast becomes theLast as an instance - delete theLast; // theLast QHadron is deleated as an instance - theLast = thePrev; // Update parameters(thePrev becomes theLast) - last4M = theLast->Get4Momentum(); - lastQC = theLast->GetQC(); + G4QHadron* thePrev = theQHadrons[nOfOUT-2]; + theQHadrons.pop_back(); // the last QHadron is excluded from OUTPUT + theQHadrons.pop_back(); // the prev QHadron is excluded from OUTPUT + theQHadrons.push_back(thePrev); // thePast becomes theLast as an instance + delete theLast; // theLast QHadron is deleated as an instance + theLast = thePrev; // Update parameters(thePrev becomes theLast) + last4M = theLast->Get4Momentum(); + lastQC = theLast->GetQC(); } - else - { - theQHadrons.pop_back(); // the last QHadron is excluded from OUTPUT - delete theLast; // theLastQHadron is deleated as an instance - } - totQC+=lastQC; // Update (increase) the total QC - tot4M+=last4M; // Update (increase) the total 4-momentum - totMass=tot4M.m(); // Calculate new real total mass - G4int bn=totQC.GetBaryonNumber(); // The BaryNum after addition - totPDG=totQC.GetSPDGCode(); - if(totPDG==10&&totQC.GetBaryonNumber()>0) totPDG=totQC.GetZNSPDGCode(); - if(bn>1) + else + { + theQHadrons.pop_back(); // the last QHadron is excluded from OUTPUT + delete theLast; // theLastQHadron is deleated as an instance + } + totQC+=lastQC; // Update (increase) the total QC + tot4M+=last4M; // Update (increase) the total 4-momentum + totMass=tot4M.m(); // Calculate new real total mass + G4int bn=totQC.GetBaryonNumber(); // The BaryNum after addition + totPDG=totQC.GetSPDGCode(); + if(totPDG==10&&totQC.GetBaryonNumber()>0) totPDG=totQC.GetZNSPDGCode(); + if(bn>1) { - totS =totQC.GetStrangeness(); // Total Strangeness of this System - if(totS>=0) // => "This is a normal nucleus" case + totS =totQC.GetStrangeness(); // Total Strangeness of this System + if(totS>=0) // => "This is a normal nucleus" case { - G4QNucleus newN(totQC,tot4M); - totPDG=newN.GetPDG(); - totM =newN.GetMZNS(); // Calculate new minimum (GS) mass + G4QNucleus newN(totQC,tot4M); + totPDG=newN.GetPDG(); + totM =newN.GetMZNS(); // Calculate new minimum (GS) mass } - else if(totS==-1) // => "Try to decay in K+/aK0 and finish" + else if(totS==-1) // => "Try to decay in K+/aK0 and finish" { - G4double m1=mK; - G4int PDG1=321; - G4QNucleus newNp(totQC-KpQC); - G4int PDG2=newNp.GetPDG(); - G4double m2=newNp.GetMZNS(); - G4QNucleus newN0(totQC-K0QC); - G4double m3=newN0.GetMZNS(); - if (m3+mK0<m2+mK) // => "aK0+ResA is better" case + G4double m1=mK; + G4int PDG1=321; + G4QNucleus newNp(totQC-KpQC); + G4int PDG2=newNp.GetPDG(); + G4double m2=newNp.GetMZNS(); + G4QNucleus newN0(totQC-K0QC); + G4double m3=newN0.GetMZNS(); + if (m3+mK0<m2+mK) // => "aK0+ResA is better" case { - m1 =mK0; - PDG1=311; - m2 =m3; - PDG2=newN0.GetPDG(); + m1 =mK0; + PDG1=311; + m2 =m3; + PDG2=newN0.GetPDG(); } - if(totMass>m1+m2) // => "can decay" case - { - G4LorentzVector fq4M(0.,0.,0.,m1); - G4LorentzVector qe4M(0.,0.,0.,m2); - if(!G4QHadron(tot4M).DecayIn2(fq4M,qe4M)) + if(totMass>m1+m2) // => "can decay" case + { + G4LorentzVector fq4M(0.,0.,0.,m1); + G4LorentzVector qe4M(0.,0.,0.,m2); + if(!G4QHadron(tot4M).DecayIn2(fq4M,qe4M)) { - G4cout<<"---Warning---G4QE::HadQE:tM="<<tot4M.m()<<"->aK="<<PDG1<<"(M=" - <<m1<<")+ResA="<<PDG2<<"(M="<<m2<<")="<<m1+m2<<G4endl; - G4Quasmon* quasH = new G4Quasmon(totQC,tot4M); // totQC not tQC! - CleanUp(); + G4cout<<"---Warning---G4QE::HadQE:tM="<<tot4M.m()<<"->aK="<<PDG1<<"(M=" + <<m1<<")+ResA="<<PDG2<<"(M="<<m2<<")="<<m1+m2<<G4endl; + G4Quasmon* quasH = new G4Quasmon(totQC,tot4M); // totQC not tQC! + CleanUp(); if(!CheckGroundState(quasH,true)) - { - G4QHadron* hadr = new G4QHadron(totQC,tot4M); // totQC not tQC! - theQHadrons.push_back(hadr); // Cor or fill as It Is + { + G4QHadron* hadr = new G4QHadron(totQC,tot4M); // totQC not tQC! + theQHadrons.push_back(hadr); // Cor or fill as It Is #ifdef pdebug - G4cout<<"***G4QE::HQE:FillAsIs(7),QC="<<totQC<<",4M="<<tot4M<<G4endl; + G4cout<<"***G4QE::HQE:FillAsIs(7),QC="<<totQC<<",4M="<<tot4M<<G4endl; #endif //throw G4QException("G4QEnv::HadrQEnv: aK+ResA DecayIn2 error"); - } - delete quasH; - return theQHadrons; + } + delete quasH; + return theQHadrons; } - G4QHadron* H1 = new G4QHadron(PDG1,fq4M); + G4QHadron* H1 = new G4QHadron(PDG1,fq4M); #ifdef pdebug - G4cout<<"G4QE::HQE:Kaon(Env)="<<PDG1<<fq4M<<G4endl; + G4cout<<"G4QE::HQE:Kaon(Env)="<<PDG1<<fq4M<<G4endl; #endif - theQHadrons.push_back(H1); // (delete equivalent) - G4QHadron* H2 = new G4QHadron(PDG2,qe4M); + theQHadrons.push_back(H1); // (delete equivalent) + G4QHadron* H2 = new G4QHadron(PDG2,qe4M); #ifdef pdebug - G4cout<<"G4QE::HQE:ResidEnv="<<PDG2<<qe4M<<G4endl; + G4cout<<"G4QE::HQE:ResidEnv="<<PDG2<<qe4M<<G4endl; #endif - theQHadrons.push_back(H2); // (delete equivalent) - break; + theQHadrons.push_back(H2); // (delete equivalent) + break; } - else totM=250000.; // => "Continue reversion" case + else totM=250000.; // => "Continue reversion" case } - else if(totS==-2) //=>"Try to decay in 2(K+/aK0) and finish" + else if(totS==-2) //=>"Try to decay in 2(K+/aK0) and finish" { - G4double m1=mK; - G4int PDG1=321; - G4double m2=mK0; - G4int PDG2=311; - G4QNucleus newNp0(totQC-KpQC-K0QC); - G4int PDG3=newNp0.GetPDG(); - G4double m3=newNp0.GetMZNS(); // M-K^0-K^+ - G4QNucleus newN00(totQC-K0QC-K0QC); - G4double m4=newN00.GetMZNS(); // M-2*K^0 - G4QNucleus newNpp(totQC-KpQC-KpQC); - G4double m5=newNpp.GetMZNS(); // M-2*K^+ - if (m4+mK0+mK0<m3+mK+mK0 && m4+mK0+mK0<=m5+mK+mK) //=>"2K0+ResA is theBest" + G4double m1=mK; + G4int PDG1=321; + G4double m2=mK0; + G4int PDG2=311; + G4QNucleus newNp0(totQC-KpQC-K0QC); + G4int PDG3=newNp0.GetPDG(); + G4double m3=newNp0.GetMZNS(); // M-K^0-K^+ + G4QNucleus newN00(totQC-K0QC-K0QC); + G4double m4=newN00.GetMZNS(); // M-2*K^0 + G4QNucleus newNpp(totQC-KpQC-KpQC); + G4double m5=newNpp.GetMZNS(); // M-2*K^+ + if (m4+mK0+mK0<m3+mK+mK0 && m4+mK0+mK0<=m5+mK+mK) //=>"2K0+ResA is theBest" { - m1 =mK0; - PDG1=311; - m3 =m4; - PDG3=newN00.GetPDG(); + m1 =mK0; + PDG1=311; + m3 =m4; + PDG3=newN00.GetPDG(); } - else if(m5+mK+mK<m3+mK+mK0 && m5+mK+mK<=m4+mK0+mK0)//=>"2Kp+ResA isTheBest" + else if(m5+mK+mK<m3+mK+mK0 && m5+mK+mK<=m4+mK0+mK0)//=>"2Kp+ResA isTheBest" { - m2 =mK; - PDG1=321; - m3 =m5; - PDG3=newNpp.GetPDG(); + m2 =mK; + PDG1=321; + m3 =m5; + PDG3=newNpp.GetPDG(); } - if(totMass>m1+m2+m3) // => "can decay" case - { - G4LorentzVector k14M(0.,0.,0.,m1); - G4LorentzVector k24M(0.,0.,0.,m2); - G4LorentzVector ra4M(0.,0.,0.,m3); - if(!G4QHadron(tot4M).DecayIn3(k14M,k24M,ra4M)) + if(totMass>m1+m2+m3) // => "can decay" case + { + G4LorentzVector k14M(0.,0.,0.,m1); + G4LorentzVector k24M(0.,0.,0.,m2); + G4LorentzVector ra4M(0.,0.,0.,m3); + if(!G4QHadron(tot4M).DecayIn3(k14M,k24M,ra4M)) { - G4cout<<"--Warning--G4QE::HQE:tM="<<tot4M.m()<<"->aK="<<PDG1<<"(M="<<m1 - <<")+K2="<<PDG2<<"(M="<<m2<<")+A="<<PDG3<<"(M="<<m3<<")"<<G4endl; - G4Quasmon* quasH = new G4Quasmon(totQC,tot4M); // totQC not tQC! - CleanUp(); + G4cout<<"--Warning--G4QE::HQE:tM="<<tot4M.m()<<"->aK="<<PDG1<<"(M="<<m1 + <<")+K2="<<PDG2<<"(M="<<m2<<")+A="<<PDG3<<"(M="<<m3<<")"<<G4endl; + G4Quasmon* quasH = new G4Quasmon(totQC,tot4M); // totQC not tQC! + CleanUp(); if(!CheckGroundState(quasH,true)) - { - G4QHadron* hadr = new G4QHadron(totQC,tot4M); // totQC not tQC! - theQHadrons.push_back(hadr); // Cor or fill as It Is + { + G4QHadron* hadr = new G4QHadron(totQC,tot4M); // totQC not tQC! + theQHadrons.push_back(hadr); // Cor or fill as It Is #ifdef pdebug - G4cout<<"***G4QE::HQE:FillAsIs(8),QC="<<totQC<<",4M="<<tot4M<<G4endl; + G4cout<<"***G4QE::HQE:FillAsIs(8),QC="<<totQC<<",4M="<<tot4M<<G4endl; #endif //throw G4QException("G4QEnv::HadrQE:2K+ResidNucleus DecIn3 Error"); - } - delete quasH; - return theQHadrons; + } + delete quasH; + return theQHadrons; } - G4QHadron* H1 = new G4QHadron(PDG1,k14M); - theQHadrons.push_back(H1); // (delete equivalent) + G4QHadron* H1 = new G4QHadron(PDG1,k14M); + theQHadrons.push_back(H1); // (delete equivalent) #ifdef pdebug - G4cout<<"G4QE::HQE:K1(Env)="<<PDG1<<k14M<<G4endl; + G4cout<<"G4QE::HQE:K1(Env)="<<PDG1<<k14M<<G4endl; #endif - G4QHadron* H2 = new G4QHadron(PDG2,k24M); - theQHadrons.push_back(H2); // (delete equivalent) + G4QHadron* H2 = new G4QHadron(PDG2,k24M); + theQHadrons.push_back(H2); // (delete equivalent) #ifdef pdebug - G4cout<<"G4QE::HQE:K2(Env)="<<PDG2<<k24M<<G4endl; + G4cout<<"G4QE::HQE:K2(Env)="<<PDG2<<k24M<<G4endl; #endif - G4QHadron* H3 = new G4QHadron(PDG3,ra4M); - theQHadrons.push_back(H3); // (delete equivalent) + G4QHadron* H3 = new G4QHadron(PDG3,ra4M); + theQHadrons.push_back(H3); // (delete equivalent) #ifdef pdebug - G4cout<<"G4QE::HQE:ResKKEnv="<<PDG3<<ra4M<<G4endl; + G4cout<<"G4QE::HQE:ResKKEnv="<<PDG3<<ra4M<<G4endl; #endif - break; + break; } - else totM=270000.; // => "Continue reversion" case + else totM=270000.; // => "Continue reversion" case } - else totM=300000.; // => "Continue reversion" case + else totM=300000.; // => "Continue reversion" case } - else + else { - if (totPDG==1114||totPDG==2224||totPDG==10) // Decay right now and finish + if (totPDG==1114||totPDG==2224||totPDG==10) // Decay right now and finish { - G4double m1=mNeut; - G4int PDG1=2112; - G4double m2=mPi; - G4int PDG2=-211; + G4double m1=mNeut; + G4int PDG1=2112; + G4double m2=mPi; + G4int PDG2=-211; if(totPDG==2224) { - m1=mProt; - PDG1=2212; - m2=mPi; - PDG2=211; + m1=mProt; + PDG1=2212; + m2=mPi; + PDG2=211; } - else if(totPDG==10) // "Chipolino" case + else if(totPDG==10) // "Chipolino" case { - G4QChipolino resChip(totQC); // define the residual as a Chipolino - G4QPDGCode h1=resChip.GetQPDG1(); - PDG1=h1.GetPDGCode(); // PDG code of the first hadron - m1 =h1.GetMass(); // Mass of the first hadron - G4QPDGCode h2=resChip.GetQPDG2(); - PDG2=h2.GetPDGCode(); // PDG code of the second hadron - m2 =h2.GetMass(); // Mass of the second hadron + G4QChipolino resChip(totQC); // define the residual as a Chipolino + G4QPDGCode h1=resChip.GetQPDG1(); + PDG1=h1.GetPDGCode(); // PDG code of the first hadron + m1 =h1.GetMass(); // Mass of the first hadron + G4QPDGCode h2=resChip.GetQPDG2(); + PDG2=h2.GetPDGCode(); // PDG code of the second hadron + m2 =h2.GetMass(); // Mass of the second hadron } - if(totMass>m1+m2) + if(totMass>m1+m2) { - G4LorentzVector fq4M(0.,0.,0.,m1); - G4LorentzVector qe4M(0.,0.,0.,m2); - if(!G4QHadron(tot4M).DecayIn2(fq4M,qe4M)) + G4LorentzVector fq4M(0.,0.,0.,m1); + G4LorentzVector qe4M(0.,0.,0.,m2); + if(!G4QHadron(tot4M).DecayIn2(fq4M,qe4M)) { - G4cout<<"---Warning---G4QE::HaQE:tM="<<tot4M.m()<<"-> h1="<<PDG1<<"(M=" + G4cout<<"---Warning---G4QE::HaQE:tM="<<tot4M.m()<<"-> h1="<<PDG1<<"(M=" <<m1<<") + h2="<<PDG2<<"(M="<<m2<<")="<<m1+m2<<G4endl; - G4Quasmon* quasH = new G4Quasmon(totQC,tot4M); // totQC not tQC! - CleanUp(); + G4Quasmon* quasH = new G4Quasmon(totQC,tot4M); // totQC not tQC! + CleanUp(); if(!CheckGroundState(quasH,true)) - { - G4QHadron* hadr = new G4QHadron(totQC,tot4M); // totQC not tQC! - theQHadrons.push_back(hadr); // Cor or fill as It Is + { + G4QHadron* hadr = new G4QHadron(totQC,tot4M); // totQC not tQC! + theQHadrons.push_back(hadr); // Cor or fill as It Is #ifdef pdebug - G4cout<<"***G4QE::HQE:FillAsIs(9),QC="<<totQC<<",4M="<<tot4M<<G4endl; + G4cout<<"***G4QE::HQE:FillAsIs(9),QC="<<totQC<<",4M="<<tot4M<<G4endl; #endif //throw G4QException("G4QEnv::HadrQEnv: h1+h2 DecayIn2 Error"); - } - delete quasH; - return theQHadrons; + } + delete quasH; + return theQHadrons; } - G4QHadron* H1 = new G4QHadron(PDG1,fq4M); - theQHadrons.push_back(H1); // (delete equivalent) + G4QHadron* H1 = new G4QHadron(PDG1,fq4M); + theQHadrons.push_back(H1); // (delete equivalent) #ifdef pdebug - G4cout<<"G4QE::HQE:h1="<<PDG1<<fq4M<<G4endl; + G4cout<<"G4QE::HQE:h1="<<PDG1<<fq4M<<G4endl; #endif - G4QHadron* H2 = new G4QHadron(PDG2,qe4M); + G4QHadron* H2 = new G4QHadron(PDG2,qe4M); #ifdef pdebug - G4cout<<"G4QE::HQE:h2="<<PDG2<<qe4M<<G4endl; + G4cout<<"G4QE::HQE:h2="<<PDG2<<qe4M<<G4endl; #endif - theQHadrons.push_back(H2); // (delete equivalent) - break; + theQHadrons.push_back(H2); // (delete equivalent) + break; } - else totM=350000.; + else totM=350000.; } else if(totPDG) totM=G4QPDGCode(totPDG).GetMass(); - else totM=400000.; + else totM=400000.; } - totBN=totQC.GetBaryonNumber(); // The BaryNum after addition - totS=totQC.GetStrangeness(); // The Strangeness after addition - G4double dM=totMass-totM; + totBN=totQC.GetBaryonNumber(); // The BaryNum after addition + totS=totQC.GetStrangeness(); // The Strangeness after addition + G4double dM=totMass-totM; #ifdef fdebug G4cout<<"G4QEnv::HadrQE: Add H="<<last4M<<lastQC<<",tM="<<tot4M<<totM<<totQC - <<",dM="<<dM<<", tB="<<totBN<<", tS="<<totS<<G4endl; + <<",dM="<<dM<<", tB="<<totBN<<", tS="<<totS<<G4endl; #endif - if(dM>-0.001&&totPDG) + if(dM>-0.001&&totPDG) { - CleanUp(); - G4QHadron* evH = new G4QHadron(totPDG,tot4M);//Create Hadron for ResidNucleus - EvaporateResidual(evH); // Evaporate ResNuc (del.equiv) - break; + CleanUp(); + G4QHadron* evH = new G4QHadron(totPDG,tot4M);//Create Hadron for ResidNucleus + EvaporateResidual(evH); // Evaporate ResNuc (del.equiv) + break; } - nOfOUT = theQHadrons.size(); // Update the value of OUTPUT entries + nOfOUT = theQHadrons.size(); // Update the value of OUTPUT entries } // End of WHILE(nOfOUT) - nOfOUT = theQHadrons.size(); // Update the value of OUTPUT entries + nOfOUT = theQHadrons.size(); // Update the value of OUTPUT entries if(!nOfOUT) { G4cout<<"---Warning---G4QEnv::HadrQE:M="<<totMass<<"<gsM="<<totM<<",dM="<<dM - <<", tPDG="<<totPDG<<", t4M="<<tot4M<<G4endl; + <<", tPDG="<<totPDG<<", t4M="<<tot4M<<G4endl; // throw G4QException("G4QEnvironment::HadronizeQEnv:Can't decayExhostedQEnv"); - CleanUp(); - G4QHadron* evH = new G4QHadron(totPDG,tot4M);// Create Hadron for ResidNucleus - EvaporateResidual(evH); // Evaporate ResidNucl (del.equiv) + CleanUp(); + G4QHadron* evH = new G4QHadron(totPDG,tot4M);// Create Hadron for ResidNucleus + EvaporateResidual(evH); // Evaporate ResidNucl (del.equiv) } } - else // "Last decay was fatal" case @@ buggy ?MK + else // "Last decay was fatal" case @@ buggy ?MK { #ifdef pdebug G4cout<<"***G4QEnv::HadrQE: M="<<totMass<<",dM="<<dM<<",nQ="<<nQuasmons<<G4endl; #endif - G4Quasmon* quasH = new G4Quasmon(totQC,tot4M); - CleanUp(); + G4Quasmon* quasH = new G4Quasmon(totQC,tot4M); + CleanUp(); if(!CheckGroundState(quasH,true)) - { - G4QHadron* hadr = new G4QHadron(totQC,tot4M); + { + G4QHadron* hadr = new G4QHadron(totQC,tot4M); #ifdef pdebug - G4cout<<"G4QE::HQE:CheckGS failed H="<<totQC<<tot4M<<G4endl; + G4cout<<"G4QE::HQE:CheckGS failed H="<<totQC<<tot4M<<G4endl; #endif - theQHadrons.push_back(hadr); // Cor or fill asItIs - } - delete quasH; - } - CleanUp(); + theQHadrons.push_back(hadr); // Cor or fill asItIs + } + delete quasH; + } + CleanUp(); } } // End of "infinit" WHILE LOOP - } // End of the "Nuclear Environment" case - return theQHadrons; + } // End of the "Nuclear Environment" case + return theQHadrons; } // End of the main member function HadronizeQEnvironment // Clean up the QEnvironment to Zero void G4QEnvironment::CleanUp() // ========================= { - static const G4QNucleus vacuum(90000000); - theEnvironment=vacuum; - G4int nQuasmons = theQuasmons.size(); - if (nQuasmons) for (G4int iq=0; iq<nQuasmons; iq++)theQuasmons[iq]->KillQuasmon(); + static const G4QNucleus vacuum(90000000); + theEnvironment=vacuum; + G4int nQuasmons = theQuasmons.size(); + if (nQuasmons) for (G4int iq=0; iq<nQuasmons; iq++)theQuasmons[iq]->KillQuasmon(); } // End of CleanUp //Evaporate Residual Nucleus void G4QEnvironment::EvaporateResidual(G4QHadron* qH) {// ================================================ - static const G4double mAlph = G4QPDGCode(2112).GetNuclMass(2,2,0); - static const G4double mDeut = G4QPDGCode(2112).GetNuclMass(1,1,0); - static const G4double mNeut = G4QPDGCode(2112).GetMass(); - static const G4double mProt = G4QPDGCode(2212).GetMass(); - static const G4double mAlPr = mAlph+mProt; - static const G4double mAlNt = mAlph+mNeut; - static const G4double dProt = mProt+mProt; - static const G4double dNeut = mNeut+mNeut; - static const G4double dAlph = mAlph+mAlph; - static const G4double eps=.003; - G4int thePDG = qH->GetPDGCode(); // Get PDG code of the Residual Nucleus - G4int theBN = qH->GetBaryonNumber(); // A (Baryon number of the nucleus) -#ifdef pdebug - G4cout<<"G4QE::EvaporateRes:Called for PDG="<<thePDG<<",4M="<<qH->Get4Momentum()<<G4endl; -#endif - if(theBN==1) - { -#ifdef pdebug - G4cout<<"G4QE::EvaporateRes: Baryon="<<thePDG<<qH->Get4Momentum()<<G4endl; -#endif - DecayBaryon(qH); // (delete equivalent) + static const G4double mAlph = G4QPDGCode(2112).GetNuclMass(2,2,0); + static const G4double mDeut = G4QPDGCode(2112).GetNuclMass(1,1,0); + static const G4double mNeut = G4QPDGCode(2112).GetMass(); + static const G4double mProt = G4QPDGCode(2212).GetMass(); + static const G4double mAlPr = mAlph+mProt; + static const G4double mAlNt = mAlph+mNeut; + static const G4double dProt = mProt+mProt; + static const G4double dNeut = mNeut+mNeut; + static const G4double dAlph = mAlph+mAlph; + static const G4double eps=.003; + G4int thePDG = qH->GetPDGCode(); // Get PDG code of the Residual Nucleus + G4int theBN = qH->GetBaryonNumber(); // A (Baryon number of the nucleus) +#ifdef pdebug + G4cout<<"G4QE::EvaporateRes:Called for PDG="<<thePDG<<",4M="<<qH->Get4Momentum()<<G4endl; +#endif + if(theBN==1) + { +#ifdef pdebug + G4cout<<"G4QE::EvaporateRes: Baryon="<<thePDG<<qH->Get4Momentum()<<G4endl; +#endif + DecayBaryon(qH); // (delete equivalent) #ifdef qdebug - qH=0; + qH=0; #endif - return; - } - else if(!theBN) // @@ In future it is usefull to add the MesonExcitationDecay (?!) - { + return; + } + else if(!theBN) // @@ In future it is usefull to add the MesonExcitationDecay (?!) + { #ifdef pdebug - G4LorentzVector mesLV=qH->Get4Momentum(); - G4cout<<"G4QE::EvaporateRes:(!)Meson(!) PDG="<<thePDG<<",4M="<<mesLV<<mesLV.m() - <<",QC="<<qH->GetQC()<<",MPDG="<<G4QPDGCode(thePDG).GetMass()<<G4endl; + G4LorentzVector mesLV=qH->Get4Momentum(); + G4cout<<"G4QE::EvaporateRes:(!)Meson(!) PDG="<<thePDG<<",4M="<<mesLV<<mesLV.m() + <<",QC="<<qH->GetQC()<<",MPDG="<<G4QPDGCode(thePDG).GetMass()<<G4endl; #endif - //DecayMeson(qH); // @@ - theQHadrons.push_back(qH); + //DecayMeson(qH); // @@ + theQHadrons.push_back(qH); #ifdef qdebug - qH=0; -#endif - return; - } - G4QContent theQC = qH->GetQC(); // Quark Content of the hadron - G4int theC=theQC.GetCharge(); // P - G4int theS=theQC.GetStrangeness(); // S - if(!thePDG) thePDG = theQC.GetSPDGCode(); // If there is no PDG code, get it from QC - if(thePDG==10&&theQC.GetBaryonNumber()>0) thePDG=theQC.GetZNSPDGCode(); - if(theS>0) thePDG-=theS*999999; // @@ May hide hypernuclear problems (G4) - G4double totGSM = G4QNucleus(thePDG).GetGSMass();// TheGroundStMass of theTotalResNucleus - if(theBN==2) - { - if(!theC) totGSM=dNeut; // nn, nL, LL - else if(theC==2) totGSM=dProt; // pp - else totGSM=mDeut; // np, Lp - } - else if(theBN==5) - { - if (theC==3) totGSM=mAlPr; // effective "Alph+p" - else if(theC==2) totGSM=mAlNt; // effective "Alph+n" - } - else if(theBN==8) totGSM=dAlph; // effective "Be8" - // @@ Should be more (else if) for bigger A=theBN - G4LorentzVector q4M = qH->Get4Momentum(); // Get 4-momentum of theTotalResidNucleus - G4double totMass = q4M.m(); // Get theRealMass of theTotalResidNucleus - if(fabs(totMass-totGSM)<eps) - { - theQHadrons.push_back(qH); // fill As It Is + qH=0; +#endif + return; + } + G4QContent theQC = qH->GetQC(); // Quark Content of the hadron + G4int theC=theQC.GetCharge(); // P + G4int theS=theQC.GetStrangeness(); // S + if(!thePDG) thePDG = theQC.GetSPDGCode(); // If there is no PDG code, get it from QC + if(thePDG==10&&theQC.GetBaryonNumber()>0) thePDG=theQC.GetZNSPDGCode(); + if(theS>0) thePDG-=theS*999999; // @@ May hide hypernuclear problems (G4) + G4double totGSM = G4QNucleus(thePDG).GetGSMass();// TheGroundStMass of theTotalResNucleus + if(theBN==2) + { + if(!theC) totGSM=dNeut; // nn, nL, LL + else if(theC==2) totGSM=dProt; // pp + else totGSM=mDeut; // np, Lp + } + else if(theBN==5) + { + if (theC==3) totGSM=mAlPr; // effective "Alph+p" + else if(theC==2) totGSM=mAlNt; // effective "Alph+n" + } + else if(theBN==8) totGSM=dAlph; // effective "Be8" + // @@ Should be more (else if) for bigger A=theBN + G4LorentzVector q4M = qH->Get4Momentum(); // Get 4-momentum of theTotalResidNucleus + G4double totMass = q4M.m(); // Get theRealMass of theTotalResidNucleus + if(fabs(totMass-totGSM)<eps) + { + theQHadrons.push_back(qH); // fill As It Is #ifdef qdebug - qH=0; + qH=0; #endif - } - else if(totMass>totGSM) - { - theEnvironment.EvaporateNucleus(qH,&theQHadrons); + } + else if(totMass>totGSM) + { + theEnvironment.EvaporateNucleus(qH,&theQHadrons); #ifdef qdebug - qH=0; + qH=0; #endif - } - else // Correction must be done - { + } + else // Correction must be done + { #ifdef pdebug - G4cout<<"G4QE::EvaRes: *Correct* "<<theQC<<q4M<<totMass<<"<"<<totGSM<<G4endl; + G4cout<<"G4QE::EvaRes: *Correct* "<<theQC<<q4M<<totMass<<"<"<<totGSM<<G4endl; #endif - G4Quasmon* quasH = new G4Quasmon(theQC,q4M); - if(!CheckGroundState(quasH,true)) - { + G4Quasmon* quasH = new G4Quasmon(theQC,q4M); + if(!CheckGroundState(quasH,true)) + { #ifdef pdebug - G4cout<<"***G4QE::EvaporResid:GSCorFailed.FillAsItIs,n="<<theQHadrons.size()<<G4endl; + G4cout<<"***G4QE::EvaporResid:GSCorFailed.FillAsItIs,n="<<theQHadrons.size()<<G4endl; #endif - theQHadrons.push_back(qH); // Correction failed: fill as it is + theQHadrons.push_back(qH); // Correction failed: fill as it is #ifdef qdebug - qH=0; + qH=0; #endif - } - else - { - delete qH; + } + else + { + delete qH; #ifdef qdebug - qH=0; + qH=0; #endif - } - delete quasH; - } + } + delete quasH; + } #ifdef qdebug - if (qH) - { - G4cout<<"G4QEnvironment::EvaporateResidual: deleted at end, PDG=" - <<qH->GetPDGCode()<<G4endl; - delete qH; - } -#endif - return; + if (qH) + { + G4cout<<"G4QEnvironment::EvaporateResidual: deleted at end, PDG=" + <<qH->GetPDGCode()<<G4endl; + delete qH; + } +#endif + return; } // End of EvaporateResidual //The public Hadronisation function with the Exception treatment (del respons. of User !) G4QHadronVector* G4QEnvironment::Fragment() {// ========================== #ifdef chdebug - G4int fCharge=theEnvironment.GetCharge(); - G4int fBaryoN=theEnvironment.GetA(); - G4int nHad=theQHadrons.size(); - if(nHad) for(G4int ih=0; ih<nHad; ih++) - { - fCharge+=theQHadrons[ih]->GetCharge(); - fBaryoN+=theQHadrons[ih]->GetBaryonNumber(); - } - G4int nQuas=theQuasmons.size(); - if(nQuas)for(G4int iqs=0; iqs<nQuas; iqs++) - { - fCharge+=theQuasmons[iqs]->GetCharge(); - fBaryoN+=theQuasmons[iqs]->GetBaryonNumber(); - } - if(fCharge!=totCharge || fBaryoN!=totBaryoN) - { - G4cout<<"***G4QE::Frag:tC="<<totCharge<<",C="<<fCharge<<",tB="<<totBaryoN - <<",B="<<fBaryoN<<",E="<<theEnvironment<<G4endl; - if(nHad) for(G4int h=0; h<nHad; h++) - { - G4QHadron* cH = theQHadrons[h]; - G4cout<<">G4QE::HQ:h#"<<h<<",QC="<<cH->GetQC()<<",PDG="<<cH->GetPDGCode()<<G4endl; - } - if(nQuas) for(G4int q=0; q<nQuas; q++) - { - G4Quasmon* cQ = theQuasmons[q]; - G4cout<<">G4QE::HQ:q#"<<q<<",C="<<cQ->GetCharge()<<",QCont="<<cQ->GetQC()<<G4endl; - } - } -#endif - G4QHadronVector dummy; // Prototype of the output G4QHadronVector to avoid warnings - G4QHadronVector* theFragments = &dummy; // Prototype of the output G4QHadronVector - G4int ExCount =0; // Counter of the repetitions - G4int MaxExCnt=1; // A#of of repetitions + 1 (1 for no repetitions) - G4bool RepFlag=true; // To come inside the while - // For the purpose of the recalculation the Quasmons, Hadrons, Environment must be stored - G4QuasmonVector* reQuasmons = new G4QuasmonVector; // deleted after the "while LOOP" - G4int nQ = theQuasmons.size(); - if(nQ) - { - for(G4int iq=0; iq<nQ; iq++) - { - G4Quasmon* curQ = new G4Quasmon(theQuasmons[iq]); - reQuasmons->push_back(curQ); // deleted after the "while LOOP" - } - } - G4QHadronVector* reQHadrons = new G4QHadronVector; // deleted after the "while LOOP" - G4int nH = theQHadrons.size(); - if(nH) - { - for(G4int ih=0; ih<nH; ih++) - { - G4QHadron* curH = new G4QHadron(theQHadrons[ih]); - reQHadrons->push_back(curH); // deleted after the "while LOOP" - } - } - G4QNucleus reEnvironment=theEnvironment; - G4LorentzVector rem4M=tot4Mom; - while (RepFlag && ExCount<MaxExCnt) - { - try - { - RepFlag=false; // If OK - go out of the while - theFragments = FSInteraction(); //InterClass creation. User must delet QHadrons. - } - catch (G4QException& error) - { - G4cout<<"***G4QEnvironment::Fragment: Exception is catched"<<G4endl; - RepFlag=true; // For the Exception - repete - ExCount++; // Increment the repetition counter - G4cout<<"***G4QEnv::Fragment:Exception #"<<ExCount<<": "<<error.GetMessage()<<G4endl; - G4LorentzVector dif=rem4M-theEnvironment.Get4Momentum(); // CHECK difference - G4int nHp=theQHadrons.size(); - G4int nQp = theQuasmons.size(); - G4cout<<"***G4QEnvir::Fragment:nH="<<nHp<<",nQ="<<nQp<<",E="<<theEnvironment<<G4endl; - for(G4int ph=0; ph<nHp; ph++) - { - G4QHadron* cH = theQHadrons[ph]; - dif-=cH->Get4Momentum(); + G4int fCharge=theEnvironment.GetCharge(); + G4int fBaryoN=theEnvironment.GetA(); + G4int nHad=theQHadrons.size(); + if(nHad) for(G4int ih=0; ih<nHad; ih++) + { + fCharge+=theQHadrons[ih]->GetCharge(); + fBaryoN+=theQHadrons[ih]->GetBaryonNumber(); + } + G4int nQuas=theQuasmons.size(); + if(nQuas)for(G4int iqs=0; iqs<nQuas; iqs++) + { + fCharge+=theQuasmons[iqs]->GetCharge(); + fBaryoN+=theQuasmons[iqs]->GetBaryonNumber(); + } + if(fCharge!=totCharge || fBaryoN!=totBaryoN) + { + G4cout<<"***G4QE::Frag:tC="<<totCharge<<",C="<<fCharge<<",tB="<<totBaryoN + <<",B="<<fBaryoN<<",E="<<theEnvironment<<G4endl; + if(nHad) for(G4int h=0; h<nHad; h++) + { + G4QHadron* cH = theQHadrons[h]; + G4cout<<">G4QE::HQ:h#"<<h<<",QC="<<cH->GetQC()<<",PDG="<<cH->GetPDGCode()<<G4endl; + } + if(nQuas) for(G4int q=0; q<nQuas; q++) + { + G4Quasmon* cQ = theQuasmons[q]; + G4cout<<">G4QE::HQ:q#"<<q<<",C="<<cQ->GetCharge()<<",QCont="<<cQ->GetQC()<<G4endl; + } + } +#endif + G4QHadronVector dummy; // Prototype of the output G4QHadronVector to avoid warnings + G4QHadronVector* theFragments = &dummy; // Prototype of the output G4QHadronVector + G4int ExCount =0; // Counter of the repetitions + G4int MaxExCnt=1; // A#of of repetitions + 1 (1 for no repetitions) + G4bool RepFlag=true; // To come inside the while + // For the purpose of the recalculation the Quasmons, Hadrons, Environment must be stored + G4QuasmonVector* reQuasmons = new G4QuasmonVector; // deleted after the "while LOOP" + G4int nQ = theQuasmons.size(); + if(nQ) + { + for(G4int iq=0; iq<nQ; iq++) + { + G4Quasmon* curQ = new G4Quasmon(theQuasmons[iq]); + reQuasmons->push_back(curQ); // deleted after the "while LOOP" + } + } + G4QHadronVector* reQHadrons = new G4QHadronVector; // deleted after the "while LOOP" + G4int nH = theQHadrons.size(); + if(nH) + { + for(G4int ih=0; ih<nH; ih++) + { + G4QHadron* curH = new G4QHadron(theQHadrons[ih]); + reQHadrons->push_back(curH); // deleted after the "while LOOP" + } + } + G4QNucleus reEnvironment=theEnvironment; + G4LorentzVector rem4M=tot4Mom; + while (RepFlag && ExCount<MaxExCnt) + { + try + { + RepFlag=false; // If OK - go out of the while + theFragments = FSInteraction(); //InterClass creation. User must delet QHadrons. + } + catch (G4QException& error) + { + G4cout<<"***G4QEnvironment::Fragment: Exception is catched"<<G4endl; + RepFlag=true; // For the Exception - repete + ExCount++; // Increment the repetition counter + G4cout<<"***G4QEnv::Fragment:Exception #"<<ExCount<<": "<<error.GetMessage()<<G4endl; + G4LorentzVector dif=rem4M-theEnvironment.Get4Momentum(); // CHECK difference + G4int nHp=theQHadrons.size(); + G4int nQp = theQuasmons.size(); + G4cout<<"***G4QEnvir::Fragment:nH="<<nHp<<",nQ="<<nQp<<",E="<<theEnvironment<<G4endl; + for(G4int ph=0; ph<nHp; ph++) + { + G4QHadron* cH = theQHadrons[ph]; + dif-=cH->Get4Momentum(); G4cout<<"***G4QEnvir::Fr:H"<<ph<<"="<<cH->Get4Momentum()<<cH->GetPDGCode()<<G4endl; - } - for(G4int pq=0; pq<nQp; pq++) - { - G4Quasmon* cQ = theQuasmons[pq]; - dif-=cQ->Get4Momentum(); - G4cout<<"***G4QEnvir::Fr:Quasm#"<<pq<<"="<<cQ->Get4Momentum()<<cQ->GetQC()<<G4endl; - } - // *** Cleaning Up of all old output instances for the recalculation purposes *** - for_each(theFragments->begin(), theFragments->end(), DeleteQHadron()); // old Hadrons - theFragments->clear(); - for_each(theQHadrons.begin(), theQHadrons.end(), DeleteQHadron()); //internal Hadrons - theQHadrons.clear(); - for_each(theQuasmons.begin(), theQuasmons.end(), DeleteQuasmon()); // old Quasmons - theQuasmons.clear(); - G4cout<<"***G4QEnv::Fragment: ----------- End of CleaningUp: 4Mdif="<<dif<<G4endl; - // **************** Recover all conditions for the recalculation ******************** - theEnvironment=reEnvironment; // Recover the nuclear environment - tot4Mom=rem4M; // Recover the total 4Momentum of the React - G4cout<<"***G4QEnv::Fragment:*Recover*Env="<<theEnvironment<<",4M="<<tot4Mom<<G4endl; - G4int mQ = reQuasmons->size(); // Recover the memorizedQuasmons with print - for(G4int jq=0; jq<mQ; jq++) - { - //G4Quasmon* curQ = new G4Quasmon(reQuasmons->operator[](jq)); - G4Quasmon* curQ = new G4Quasmon((*reQuasmons)[jq]); - G4cout<<"***G4QE::Fragm:Q("<<jq<<")="<<curQ->Get4Momentum()<<curQ->GetQC()<<G4endl; - theQuasmons.push_back(curQ); // (delete equivalent) - } - G4int mH = reQHadrons->size(); // Recover the memorizedQHadrons with print - for(G4int jh=0; jh<mH; jh++) - { - //G4QHadron* curH = new G4QHadron(reQHadrons->operator[](jh)); - G4QHadron* curH = new G4QHadron((*reQHadrons)[jh]); - G4cout<<"***G4QE::Fragm:H("<<jh<<")="<<curH->Get4Momentum()<<curH->GetQC()<<G4endl; - theQHadrons.push_back(curH); // (delete equivalent) - } - } - } - if(reQuasmons->size()) // If something is still in memory then clean it up - { - for_each(reQuasmons->begin(),reQuasmons->end(),DeleteQuasmon()); // CleanUp oldQuasmons - reQuasmons->clear(); - } - delete reQuasmons; // All temporary Quasmons memory is wiped out - if(reQHadrons->size()) // If something is still in memory then clean it up - { - for_each(reQHadrons->begin(),reQHadrons->end(),DeleteQHadron()); //CleanUp old QHadrons - reQHadrons->clear(); - } - delete reQHadrons; // All temporary QHadrons memory is wiped out - if(ExCount>=MaxExCnt) - { - G4cerr<<"*G4QEnv::Fragment:Exception.Target="<<theTargetPDG<<". Projectiles:"<<G4endl; - G4int nProj=theProjectiles.size(); - if(nProj) for(G4int ipr=0; ipr<nProj; ipr++) + } + for(G4int pq=0; pq<nQp; pq++) + { + G4Quasmon* cQ = theQuasmons[pq]; + dif-=cQ->Get4Momentum(); + G4cout<<"***G4QEnvir::Fr:Quasm#"<<pq<<"="<<cQ->Get4Momentum()<<cQ->GetQC()<<G4endl; + } + // *** Cleaning Up of all old output instances for the recalculation purposes *** + for_each(theFragments->begin(), theFragments->end(), DeleteQHadron()); // old Hadrons + theFragments->clear(); + for_each(theQHadrons.begin(), theQHadrons.end(), DeleteQHadron()); //internal Hadrons + theQHadrons.clear(); + for_each(theQuasmons.begin(), theQuasmons.end(), DeleteQuasmon()); // old Quasmons + theQuasmons.clear(); + G4cout<<"***G4QEnv::Fragment: ----------- End of CleaningUp: 4Mdif="<<dif<<G4endl; + // **************** Recover all conditions for the recalculation ******************** + theEnvironment=reEnvironment; // Recover the nuclear environment + tot4Mom=rem4M; // Recover the total 4Momentum of the React + G4cout<<"***G4QEnv::Fragment:*Recover*Env="<<theEnvironment<<",4M="<<tot4Mom<<G4endl; + G4int mQ = reQuasmons->size(); // Recover the memorizedQuasmons with print + for(G4int jq=0; jq<mQ; jq++) + { + //G4Quasmon* curQ = new G4Quasmon(reQuasmons->operator[](jq)); + G4Quasmon* curQ = new G4Quasmon((*reQuasmons)[jq]); + G4cout<<"***G4QE::Fragm:Q("<<jq<<")="<<curQ->Get4Momentum()<<curQ->GetQC()<<G4endl; + theQuasmons.push_back(curQ); // (delete equivalent) + } + G4int mH = reQHadrons->size(); // Recover the memorizedQHadrons with print + for(G4int jh=0; jh<mH; jh++) + { + //G4QHadron* curH = new G4QHadron(reQHadrons->operator[](jh)); + G4QHadron* curH = new G4QHadron((*reQHadrons)[jh]); + G4cout<<"***G4QE::Fragm:H("<<jh<<")="<<curH->Get4Momentum()<<curH->GetQC()<<G4endl; + theQHadrons.push_back(curH); // (delete equivalent) + } + } + } + if(reQuasmons->size()) // If something is still in memory then clean it up + { + for_each(reQuasmons->begin(),reQuasmons->end(),DeleteQuasmon()); // CleanUp oldQuasmons + reQuasmons->clear(); + } + delete reQuasmons; // All temporary Quasmons memory is wiped out + if(reQHadrons->size()) // If something is still in memory then clean it up + { + for_each(reQHadrons->begin(),reQHadrons->end(),DeleteQHadron()); //CleanUp old QHadrons + reQHadrons->clear(); + } + delete reQHadrons; // All temporary QHadrons memory is wiped out + if(ExCount>=MaxExCnt) + { + G4cerr<<"*G4QEnv::Fragment:Exception.Target="<<theTargetPDG<<". Projectiles:"<<G4endl; + G4int nProj=theProjectiles.size(); + if(nProj) for(G4int ipr=0; ipr<nProj; ipr++) { - G4QHadron* prH = theProjectiles[ipr]; - G4cerr<<"G4QE::F:#"<<ipr<<",PDG/4M="<<prH->GetPDGCode()<<prH->Get4Momentum()<<G4endl; - } + G4QHadron* prH = theProjectiles[ipr]; + G4cerr<<"G4QE::F:#"<<ipr<<",PDG/4M="<<prH->GetPDGCode()<<prH->Get4Momentum()<<G4endl; + } throw G4QException("G4QEnvironment::Fragment:This reaction caused the CHIPSException"); - //G4Exception("G4QEnvironment::Fragment","027",FatalException,"GeneralCHIPSException"); - } - // Put the postponed hadrons in the begining of theFragments and clean them up - G4int tmpS=intQHadrons.size(); - if(tmpS) - { - tmpS=theFragments->size(); - intQHadrons.resize(tmpS+intQHadrons.size()); // Resize intQHadrons - copy(theFragments->begin(), theFragments->end(), intQHadrons.end()-tmpS); - tmpS=intQHadrons.size(); - theFragments->resize(tmpS); // Resize theFragments - copy(intQHadrons.begin(), intQHadrons.end(), theFragments->begin()); - intQHadrons.clear(); - } - return theFragments; + //G4Exception("G4QEnvironment::Fragment","027",FatalException,"GeneralCHIPSException"); + } + // Put the postponed hadrons in the begining of theFragments and clean them up + G4int tmpS=intQHadrons.size(); + if(tmpS) + { + tmpS=theFragments->size(); + intQHadrons.resize(tmpS+intQHadrons.size()); // Resize intQHadrons + copy(theFragments->begin(), theFragments->end(), intQHadrons.end()-tmpS); + tmpS=intQHadrons.size(); + theFragments->resize(tmpS); // Resize theFragments + copy(intQHadrons.begin(), intQHadrons.end(), theFragments->begin()); + intQHadrons.clear(); + } + return theFragments; } // End of the Fragmentation member function //The Final State Interaction Filter for the resulting output of ::HadronizeQEnvironment() G4QHadronVector* G4QEnvironment::FSInteraction() {// =============================== - static const G4QPDGCode gQPDG(22); - static const G4QPDGCode pizQPDG(111); - static const G4QPDGCode pipQPDG(211); - static const G4QPDGCode pimQPDG(-211); - static const G4QPDGCode nQPDG(2112); - static const G4QPDGCode pQPDG(2212); - static const G4QPDGCode lQPDG(3122); - static const G4QPDGCode s0QPDG(3212); - //static const G4QPDGCode dQPDG(90001001); - static const G4QPDGCode tQPDG(90001002); - static const G4QPDGCode he3QPDG(90002001); - static const G4QPDGCode aQPDG(90002002); - static const G4QPDGCode a6QPDG(90002004); - static const G4QPDGCode be6QPDG(90004002); - //static const G4QPDGCode b7QPDG(90005002); - //static const G4QPDGCode he7QPDG(90002005); - static const G4QPDGCode c8QPDG(90006002); - static const G4QPDGCode a8QPDG(90002006); - static const G4QPDGCode c10QPDG(90006004); - static const G4QPDGCode o14QPDG(90008006); - static const G4QPDGCode o15QPDG(90008007); - static const G4QContent K0QC(1,0,0,0,0,1); - static const G4QContent KpQC(0,1,0,0,0,1); - static const G4double mPi = G4QPDGCode(211).GetMass(); - static const G4double mPi0 = G4QPDGCode(111).GetMass(); - static const G4double mK = G4QPDGCode(321).GetMass(); - static const G4double mK0 = G4QPDGCode(311).GetMass(); - static const G4double mNeut= G4QPDGCode(2112).GetMass(); - static const G4double mProt= G4QPDGCode(2212).GetMass(); - static const G4double mLamb= G4QPDGCode(3122).GetMass(); - static const G4double mSigZ= G4QPDGCode(3212).GetMass(); - static const G4double mSigM= G4QPDGCode(3112).GetMass(); - static const G4double mSigP= G4QPDGCode(3222).GetMass(); -#ifdef pdebug - static const G4double mDeut= G4QPDGCode(2112).GetNuclMass(1,1,0); -#endif - static const G4double mTrit= G4QPDGCode(2112).GetNuclMass(1,2,0); - static const G4double mHe3 = G4QPDGCode(2112).GetNuclMass(2,1,0); - static const G4double mAlph= G4QPDGCode(2112).GetNuclMass(2,2,0); - static const G4double mHe6 = G4QPDGCode(2112).GetNuclMass(2,4,0); - static const G4double mBe6 = G4QPDGCode(2112).GetNuclMass(4,2,0); - //static const G4double mHe7 = G4QPDGCode(2112).GetNuclMass(2,5,0); - //static const G4double mB7 = G4QPDGCode(2112).GetNuclMass(5,2,0); - static const G4double mHe8 = G4QPDGCode(2112).GetNuclMass(2,6,0); - static const G4double mC8 = G4QPDGCode(2112).GetNuclMass(6,2,0); - static const G4double mC10 = G4QPDGCode(2112).GetNuclMass(6,4,0); - static const G4double mO14 = G4QPDGCode(2112).GetNuclMass(8,6,0); - static const G4double mO15 = G4QPDGCode(2112).GetNuclMass(8,7,0); - static const G4double mKmP = mK+mProt; - static const G4double mKmN = mK+mNeut; - static const G4double mK0mP = mK0+mProt; - static const G4double mK0mN = mK0+mNeut; - static const G4QNucleus vacuum(90000000); - static const G4double eps=0.005; - ///////////////static const G4double third=1./3.; - ///////////////static const G4double nPDG=90000001; - G4int envA=theEnvironment.GetBaryonNumber(); - ///////////////G4int envC=theEnvironment.GetCharge(); + static const G4QPDGCode gQPDG(22); + static const G4QPDGCode pizQPDG(111); + static const G4QPDGCode pipQPDG(211); + static const G4QPDGCode pimQPDG(-211); + static const G4QPDGCode nQPDG(2112); + static const G4QPDGCode pQPDG(2212); + static const G4QPDGCode lQPDG(3122); + static const G4QPDGCode s0QPDG(3212); + //static const G4QPDGCode dQPDG(90001001); + static const G4QPDGCode tQPDG(90001002); + static const G4QPDGCode he3QPDG(90002001); + static const G4QPDGCode aQPDG(90002002); + static const G4QPDGCode a6QPDG(90002004); + static const G4QPDGCode be6QPDG(90004002); + //static const G4QPDGCode b7QPDG(90005002); + //static const G4QPDGCode he7QPDG(90002005); + static const G4QPDGCode c8QPDG(90006002); + static const G4QPDGCode a8QPDG(90002006); + static const G4QPDGCode c10QPDG(90006004); + static const G4QPDGCode o14QPDG(90008006); + static const G4QPDGCode o15QPDG(90008007); + static const G4QContent K0QC(1,0,0,0,0,1); + static const G4QContent KpQC(0,1,0,0,0,1); + static const G4double mPi = G4QPDGCode(211).GetMass(); + static const G4double mPi0 = G4QPDGCode(111).GetMass(); + static const G4double mK = G4QPDGCode(321).GetMass(); + static const G4double mK0 = G4QPDGCode(311).GetMass(); + static const G4double mNeut= G4QPDGCode(2112).GetMass(); + static const G4double mProt= G4QPDGCode(2212).GetMass(); + static const G4double mLamb= G4QPDGCode(3122).GetMass(); + static const G4double mSigZ= G4QPDGCode(3212).GetMass(); + static const G4double mSigM= G4QPDGCode(3112).GetMass(); + static const G4double mSigP= G4QPDGCode(3222).GetMass(); + static const G4double mDeut= G4QPDGCode(2112).GetNuclMass(1,1,0); + static const G4double mTrit= G4QPDGCode(2112).GetNuclMass(1,2,0); + static const G4double mHe3 = G4QPDGCode(2112).GetNuclMass(2,1,0); + static const G4double mAlph= G4QPDGCode(2112).GetNuclMass(2,2,0); + static const G4double mHe6 = G4QPDGCode(2112).GetNuclMass(2,4,0); + static const G4double mBe6 = G4QPDGCode(2112).GetNuclMass(4,2,0); + //static const G4double mHe7 = G4QPDGCode(2112).GetNuclMass(2,5,0); + //static const G4double mB7 = G4QPDGCode(2112).GetNuclMass(5,2,0); + static const G4double mHe8 = G4QPDGCode(2112).GetNuclMass(2,6,0); + static const G4double mC8 = G4QPDGCode(2112).GetNuclMass(6,2,0); + static const G4double mC10 = G4QPDGCode(2112).GetNuclMass(6,4,0); + static const G4double mO14 = G4QPDGCode(2112).GetNuclMass(8,6,0); + static const G4double mO15 = G4QPDGCode(2112).GetNuclMass(8,7,0); + static const G4double mKmP = mK+mProt; + static const G4double mKmN = mK+mNeut; + static const G4double mK0mP = mK0+mProt; + static const G4double mK0mN = mK0+mNeut; + static const G4QNucleus vacuum(90000000); + static const G4double eps=0.005; + ///////////////static const G4double third=1./3.; + ///////////////static const G4double nPDG=90000001; + G4int envA=theEnvironment.GetBaryonNumber(); + ///////////////G4int envC=theEnvironment.GetCharge(); #ifdef rdebug - G4int totInC=theEnvironment.GetZ(); - G4LorentzVector totIn4M=theEnvironment.Get4Momentum(); - G4cout<<"G4QEnvironment(G4QE)::FSInter(FSI): ***called*** envA="<<envA<<totIn4M<<G4endl; - G4int nQuasmons=theQuasmons.size(); - for (G4int is=0; is<nQuasmons; is++) // Sum 4mom's of Quasmons for comparison - { + G4int totInC=theEnvironment.GetZ(); + G4LorentzVector totIn4M=theEnvironment.Get4Momentum(); + G4cout<<"G4QEnvironment(G4QE)::FSInter(FSI): ***called*** envA="<<envA<<totIn4M<<G4endl; + G4int nQuasmons=theQuasmons.size(); + for (G4int is=0; is<nQuasmons; is++) // Sum 4mom's of Quasmons for comparison + { G4Quasmon* pQ = theQuasmons[is]; - G4LorentzVector Q4M= pQ->Get4Momentum(); - G4cout<<"G4QE::FSI: Quasmon ("<<is<<") is added, 4M="<<Q4M<<G4endl; - totIn4M += Q4M; - totInC += pQ->GetQC().GetCharge(); - } // End of TotInitial4Momentum summation LOOP over Quasmons - G4int nsHadr = theQHadrons.size(); // Update the value of OUTPUT entries - if(nsHadr) for(G4int jso=0; jso<nsHadr; jso++)// LOOP over output hadrons - { - G4int hsNF = theQHadrons[jso]->GetNFragments(); // A#of secondary fragments - if(!hsNF) // Add only final hadrons - { - G4LorentzVector hs4Mom = theQHadrons[jso]->Get4Momentum(); - G4cout<<"G4QE::FSI: Hadron ("<<jso<<") is added, 4M="<<hs4Mom<<G4endl; - totIn4M += hs4Mom; - totInC += theQHadrons[jso]->GetCharge(); - } - } - G4cout<<"G4QE::FSI: The resulting 4Momentum="<<totIn4M<<G4endl; + G4LorentzVector Q4M= pQ->Get4Momentum(); + G4cout<<"G4QE::FSI: Quasmon ("<<is<<") is added, 4M="<<Q4M<<G4endl; + totIn4M += Q4M; + totInC += pQ->GetQC().GetCharge(); + } // End of TotInitial4Momentum summation LOOP over Quasmons + G4int nsHadr = theQHadrons.size(); // Update the value of OUTPUT entries + if(nsHadr) for(G4int jso=0; jso<nsHadr; jso++)// LOOP over output hadrons + { + G4int hsNF = theQHadrons[jso]->GetNFragments(); // A#of secondary fragments + if(!hsNF) // Add only final hadrons + { + G4LorentzVector hs4Mom = theQHadrons[jso]->Get4Momentum(); + G4cout<<"G4QE::FSI: Hadron ("<<jso<<") is added, 4M="<<hs4Mom<<G4endl; + totIn4M += hs4Mom; + totInC += theQHadrons[jso]->GetCharge(); + } + } + G4cout<<"G4QE::FSI: The resulting 4Momentum="<<totIn4M<<G4endl; #endif #ifdef chdebug - G4int fCharge=theEnvironment.GetCharge(); - G4int fBaryoN=theEnvironment.GetA(); - G4int nHad=theQHadrons.size(); - if(nHad) for(G4int ih=0; ih<nHad; ih++) - { - fCharge+=theQHadrons[ih]->GetCharge(); - fBaryoN+=theQHadrons[ih]->GetBaryonNumber(); - } - G4int nQuas=theQuasmons.size(); - if(nQuas)for(G4int iqs=0; iqs<nQuas; iqs++) - { - fCharge+=theQuasmons[iqs]->GetCharge(); - fBaryoN+=theQuasmons[iqs]->GetBaryonNumber(); - } - if(fCharge!=totCharge || fBaryoN!=totBaryoN) - { - G4cout<<"***G4QE::FSI:tC="<<totCharge<<",C="<<fCharge<<",tB="<<totBaryoN - <<",B="<<fBaryoN<<",E="<<theEnvironment<<G4endl; - if(nHad) for(G4int h=0; h<nHad; h++) - { - G4QHadron* cH = theQHadrons[h]; - G4cout<<":G4QE::HQ:h#"<<h<<",QC="<<cH->GetQC()<<",PDG="<<cH->GetPDGCode()<<G4endl; - } - if(nQuas) for(G4int q=0; q<nQuas; q++) - { - G4Quasmon* cQ = theQuasmons[q]; - G4cout<<":G4QE::HQ:q#"<<q<<",C="<<cQ->GetCharge()<<",QCont="<<cQ->GetQC()<<G4endl; - } - } -#endif - G4QHadronVector* theFragments = new G4QHadronVector;//Internal creation. User must delete - HadronizeQEnvironment(); // >>>>>>>>> Call the main fragmentation function + G4int fCharge=theEnvironment.GetCharge(); + G4int fBaryoN=theEnvironment.GetA(); + G4int nHad=theQHadrons.size(); + if(nHad) for(G4int ih=0; ih<nHad; ih++) + { + fCharge+=theQHadrons[ih]->GetCharge(); + fBaryoN+=theQHadrons[ih]->GetBaryonNumber(); + } + G4int nQuas=theQuasmons.size(); + if(nQuas)for(G4int iqs=0; iqs<nQuas; iqs++) + { + fCharge+=theQuasmons[iqs]->GetCharge(); + fBaryoN+=theQuasmons[iqs]->GetBaryonNumber(); + } + if(fCharge!=totCharge || fBaryoN!=totBaryoN) + { + G4cout<<"***G4QE::FSI:tC="<<totCharge<<",C="<<fCharge<<",tB="<<totBaryoN + <<",B="<<fBaryoN<<",E="<<theEnvironment<<G4endl; + if(nHad) for(G4int h=0; h<nHad; h++) + { + G4QHadron* cH = theQHadrons[h]; + G4cout<<":G4QE::HQ:h#"<<h<<",QC="<<cH->GetQC()<<",PDG="<<cH->GetPDGCode()<<G4endl; + } + if(nQuas) for(G4int q=0; q<nQuas; q++) + { + G4Quasmon* cQ = theQuasmons[q]; + G4cout<<":G4QE::HQ:q#"<<q<<",C="<<cQ->GetCharge()<<",QCont="<<cQ->GetQC()<<G4endl; + } + } +#endif + G4QHadronVector* theFragments = new G4QHadronVector;//Internal creation. User must delete + HadronizeQEnvironment(); // >>>>>>>>> Call the main fragmentation function #ifdef rdebug - G4int tC=totInC-theEnvironment.GetZ(); // Subtract theResidualEnvironCharge - G4LorentzVector t4M=totIn4M; // Compare with the total - G4cout<<"G4QEnv::FSI: Initial tot4M="<<t4M<<" to be subtracted"<<G4endl; - G4LorentzVector theEnv4m=theEnvironment.Get4Momentum(); // Environment 4Mom - t4M-=theEnv4m; // Subtract the Environment 4-momentum - G4cout<<"G4QEnv::FSI: Subtract Environ="<<theEnv4m<<theEnvironment<<G4endl; - for (G4int js=0; js<nQuasmons; js++) // Subtract 4mom's of Quasmons (compare) - { // + G4int tC=totInC-theEnvironment.GetZ(); // Subtract theResidualEnvironCharge + G4LorentzVector t4M=totIn4M; // Compare with the total + G4cout<<"G4QEnv::FSI: Initial tot4M="<<t4M<<" to be subtracted"<<G4endl; + G4LorentzVector theEnv4m=theEnvironment.Get4Momentum(); // Environment 4Mom + t4M-=theEnv4m; // Subtract the Environment 4-momentum + G4cout<<"G4QEnv::FSI: Subtract Environ="<<theEnv4m<<theEnvironment<<G4endl; + for (G4int js=0; js<nQuasmons; js++) // Subtract 4mom's of Quasmons (compare) + { // G4Quasmon* prQ = theQuasmons[js];// - if(prQ->GetStatus()) // Subtract only if Quasmon is alive - { // - G4LorentzVector Q4M= prQ->Get4Momentum(); // 4-momentum of the Quasmon - G4QContent qQC= prQ->GetQC(); // - G4cout<<"G4QE::FSI: Subtract Quasmon("<<js<<"),4M="<<Q4M<<",QC="<<qQC<<G4endl; - t4M -= Q4M; // Subtract 4-momentum of the Quasmon - tC -= prQ->GetQC().GetCharge(); // + if(prQ->GetStatus()) // Subtract only if Quasmon is alive + { // + G4LorentzVector Q4M= prQ->Get4Momentum(); // 4-momentum of the Quasmon + G4QContent qQC= prQ->GetQC(); // + G4cout<<"G4QE::FSI: Subtract Quasmon("<<js<<"),4M="<<Q4M<<",QC="<<qQC<<G4endl; + t4M -= Q4M; // Subtract 4-momentum of the Quasmon + tC -= prQ->GetQC().GetCharge(); // } // - else G4cout<<"G4QE::FSI:Dead Quasmon("<<js<<")="<<prQ->GetStatus()<<G4endl; - } // End of Quasmons4Momentum subtractions - G4int nsbHadr=theQHadrons.size(); // Update the value of OUTPUT entries - if(nsbHadr) for(G4int jpo=0; jpo<nsbHadr; jpo++)// LOOP over output hadrons - { - G4int hsNF = theQHadrons[jpo]->GetNFragments();// A#of out fragments - if(!hsNF) // Subtract only final hadrons - { // - G4LorentzVector hs4Mom = theQHadrons[jpo]->Get4Momentum(); // Output hadron - G4int hPDG = theQHadrons[jpo]->GetPDGCode(); // PDG of the Output Hadron - G4cout<<"G4QE::FSI: Subtract Hadron("<<jpo<<"), 4M="<<hs4Mom<<hPDG<<G4endl; - t4M -= hs4Mom; // - tC -= theQHadrons[jpo]->GetCharge(); // Subtract charge of the OutHadron + else G4cout<<"G4QE::FSI:Dead Quasmon("<<js<<")="<<prQ->GetStatus()<<G4endl; + } // End of Quasmons4Momentum subtractions + G4int nsbHadr=theQHadrons.size(); // Update the value of OUTPUT entries + if(nsbHadr) for(G4int jpo=0; jpo<nsbHadr; jpo++)// LOOP over output hadrons + { + G4int hsNF = theQHadrons[jpo]->GetNFragments();// A#of out fragments + if(!hsNF) // Subtract only final hadrons + { // + G4LorentzVector hs4Mom = theQHadrons[jpo]->Get4Momentum(); // Output hadron + G4int hPDG = theQHadrons[jpo]->GetPDGCode(); // PDG of the Output Hadron + G4cout<<"G4QE::FSI: Subtract Hadron("<<jpo<<"), 4M="<<hs4Mom<<hPDG<<G4endl; + t4M -= hs4Mom; // + tC -= theQHadrons[jpo]->GetCharge(); // Subtract charge of the OutHadron } // End of the "FinalHadron" IF - } // End of the LOOP over output hadrons - G4cout<<"G4QEnv::FSI:|||||4-MomCHECK||||d4M="<<t4M<<",dCharge="<<tC<<G4endl; -#endif - unsigned nHadr=theQHadrons.size(); - if(nHadr<=0) - { - G4cout<<"---Warning---G4QEnvironment::FSInteraction: nHadrons="<<nHadr<<G4endl; - //throw G4QException("G4QEnvironment::FSInteraction: No hadrons in the output"); - return theFragments; - } - G4int lHadr=theQHadrons[nHadr-1]->GetBaryonNumber(); -#ifdef pdebug - G4cout<<"G4QE::FSI:after HQE,nH="<<nHadr<<",lHBN="<<lHadr<<",E="<<theEnvironment<<G4endl; -#endif - if(lHadr>1) // TheLastHadron is nucleus:try to decay/evap/cor it - { - G4QHadron* theLast = theQHadrons[nHadr-1]; - G4QHadron* curHadr = new G4QHadron(theLast); - G4LorentzVector lh4M=curHadr->Get4Momentum(); // Actual mass of the last fragment - G4double lhM=lh4M.m(); // Actual mass of the last fragment - G4int lhPDG=curHadr->GetPDGCode(); // PDG code of the last fragment - G4double lhGSM=G4QPDGCode(lhPDG).GetMass(); // GroundStateMass of the last fragment -#ifdef pdebug - G4cout<<"G4QE::FSI:lastHadr 4M/M="<<lh4M<<lhM<<",GSM="<<lhGSM<<",PDG="<<lhPDG<<G4endl; -#endif - if(lhM>lhGSM+eps) // ==> Try to evaporate the residual nucleus - { - theQHadrons.pop_back(); // the last QHadron-Nucleus is excluded from OUTPUT - delete theLast;//*!!When kill,DON'T forget to delete theLastQHadron as an instance!* - EvaporateResidual(curHadr); // Try to evaporate Hadr-Nucl (@@DecDib)(delete eq.) - nHadr=theQHadrons.size(); -#ifdef pdebug - G4cout<<"G4QE::FSI:After nH="<<nHadr<<",PDG="<<curHadr->GetPDGCode()<<G4endl; -#endif - } - else if(lhM<lhGSM-eps) // ==> Try to make the HadronicSteck FSI correction - { - theQHadrons.pop_back(); //exclude LastHadronPointer from OUTPUT - delete theLast; //*!! When killing, DON'T forget to delete the last QHadron !!* - G4Quasmon* quasH = new G4Quasmon(curHadr->GetQC(),lh4M); // Fake Quasmon ctreation - if(!CheckGroundState(quasH,true))// Try to correct with other hadrons - { - G4cout<<"---Warning---G4QEnv::FSI:Correction error LeaveAsItIs h4m="<<lh4M<<G4endl; - theQHadrons.push_back(curHadr);// Fill theResidualNucleus asItIs(delete equivalent) + } // End of the LOOP over output hadrons + G4cout<<"G4QEnv::FSI:|||||4-MomCHECK||||d4M="<<t4M<<",dCharge="<<tC<<G4endl; +#endif + unsigned nHadr=theQHadrons.size(); + if(nHadr<=0) + { + G4cout<<"---Warning---G4QEnvironment::FSInteraction: nHadrons="<<nHadr<<G4endl; + //throw G4QException("G4QEnvironment::FSInteraction: No hadrons in the output"); + return theFragments; + } + G4int lHadr=theQHadrons[nHadr-1]->GetBaryonNumber(); +#ifdef pdebug + G4cout<<"G4QE::FSI:after HQE,nH="<<nHadr<<",lHBN="<<lHadr<<",E="<<theEnvironment<<G4endl; +#endif + if(lHadr>1) // TheLastHadron is nucleus:try to decay/evap/cor it + { + G4QHadron* theLast = theQHadrons[nHadr-1]; + G4QHadron* curHadr = new G4QHadron(theLast); + G4LorentzVector lh4M=curHadr->Get4Momentum(); // Actual mass of the last fragment + G4double lhM=lh4M.m(); // Actual mass of the last fragment + G4int lhPDG=curHadr->GetPDGCode(); // PDG code of the last fragment + G4double lhGSM=G4QPDGCode(lhPDG).GetMass(); // GroundStateMass of the last fragment +#ifdef pdebug + G4cout<<"G4QE::FSI:lastHadr 4M/M="<<lh4M<<lhM<<",GSM="<<lhGSM<<",PDG="<<lhPDG<<G4endl; +#endif + if(lhM>lhGSM+eps) // ==> Try to evaporate the residual nucleus + { + theQHadrons.pop_back(); // the last QHadron-Nucleus is excluded from OUTPUT + delete theLast;//*!!When kill,DON'T forget to delete theLastQHadron as an instance!* + EvaporateResidual(curHadr); // Try to evaporate Hadr-Nucl (@@DecDib)(delete eq.) + nHadr=theQHadrons.size(); +#ifdef pdebug + G4cout<<"G4QE::FSI:After nH="<<nHadr<<",PDG="<<curHadr->GetPDGCode()<<G4endl; +#endif + } + else if(lhM<lhGSM-eps) // ==> Try to make the HadronicSteck FSI correction + { + theQHadrons.pop_back(); //exclude LastHadronPointer from OUTPUT + delete theLast; //*!! When killing, DON'T forget to delete the last QHadron !!* + G4Quasmon* quasH = new G4Quasmon(curHadr->GetQC(),lh4M); // Fake Quasmon ctreation + if(!CheckGroundState(quasH,true))// Try to correct with other hadrons + { + G4cout<<"---Warning---G4QEnv::FSI:Correction error LeaveAsItIs h4m="<<lh4M<<G4endl; + theQHadrons.push_back(curHadr);// Fill theResidualNucleus asItIs(delete equivalent) //throw G4QException("G4QEnv::FSI: STOP at Correction Error"); - } - else - { - delete curHadr; // The intermediate curHadr isn't necessary any more - nHadr=theQHadrons.size(); // Update nHadr after successful correction - } - delete quasH; // Delete the temporary fake Quasmon - } - else delete curHadr; // ==> Leave the nucleus as it is (close to the GSM) - } -#ifdef pdebug - G4LorentzVector ccs4M(0.,0.,0.,0.); // CurrentControlSum of outgoing Hadrons -#endif - // *** Initial Charge Control Sum Calculation *** - G4int chContSum=0; // ChargeControlSum to keepTrack FSI transformations - G4int bnContSum=0; // BaryoNControlSum to keepTrack FSI transformations - if(nHadr)for(unsigned ich=0; ich<nHadr; ich++) if(!(theQHadrons[ich]->GetNFragments())) - { - chContSum+=theQHadrons[ich]->GetCharge(); - bnContSum+=theQHadrons[ich]->GetBaryonNumber(); - } + } + else + { + delete curHadr; // The intermediate curHadr isn't necessary any more + nHadr=theQHadrons.size(); // Update nHadr after successful correction + } + delete quasH; // Delete the temporary fake Quasmon + } + else delete curHadr; // ==> Leave the nucleus as it is (close to the GSM) + } +#ifdef pdebug + G4LorentzVector ccs4M(0.,0.,0.,0.); // CurrentControlSum of outgoing Hadrons +#endif + // *** Initial Charge Control Sum Calculation *** + G4int chContSum=0; // ChargeControlSum to keepTrack FSI transformations + G4int bnContSum=0; // BaryoNControlSum to keepTrack FSI transformations + if(nHadr)for(unsigned ich=0; ich<nHadr; ich++) if(!(theQHadrons[ich]->GetNFragments())) + { + chContSum+=theQHadrons[ich]->GetCharge(); + bnContSum+=theQHadrons[ich]->GetBaryonNumber(); + } #ifdef chdebug - if(chContSum!=totCharge || bnContSum!=totBaryoN) - { - G4cout<<"***G4QE::Fr:(1)tC="<<totCharge<<",C="<<fCharge<<",tB="<<totBaryoN - <<",B="<<bnContSum<<",E="<<theEnvironment<<G4endl; - if(nHadr) for(unsigned h=0; h<nHadr; h++) - { - G4QHadron* cH = theQHadrons[h]; - G4cout<<":G4QE::HQ:h#"<<h<<",QC="<<cH->GetQC()<<",PDG="<<cH->GetPDGCode()<<G4endl; - } - if(nQuas) for(G4int q=0; q<nQuas; q++) - { - G4Quasmon* cQ = theQuasmons[q]; - G4cout<<":G4QE::HQ:q#"<<q<<",C="<<cQ->GetCharge()<<",QCont="<<cQ->GetQC()<<G4endl; - } - } -#endif - // *** - if(nHadr)for(unsigned ipo=0; ipo<theQHadrons.size(); ipo++)//FindBigestNuclFragm & DecayA - { - unsigned jpo=ipo; - nHadr=theQHadrons.size(); - lHadr=theQHadrons[nHadr-1]->GetBaryonNumber(); - G4QHadron* theCurr = theQHadrons[ipo]; // Pointer to the Current Hadron - G4int hBN = theCurr->GetBaryonNumber(); - G4int sBN = theCurr->GetStrangeness(); - G4int cBN = theCurr->GetCharge(); - G4int hPDG = theCurr->GetPDGCode(); - G4LorentzVector h4Mom = theCurr->Get4Momentum(); -#ifdef pdebug - G4int hNF = theCurr->GetNFragments(); - G4cout<<"G4QE::FSI:h#"<<ipo<<",PDG="<<hPDG<<h4Mom<<",mGS="<<G4QPDGCode(hPDG).GetMass() - <<",F="<<hNF<<",nH="<<theQHadrons.size()<<G4endl; -#endif - if(hBN>lHadr) // Current Hadron is the Biggest fragment -> Swap with theLast Hadron + if(chContSum!=totCharge || bnContSum!=totBaryoN) + { + G4cout<<"***G4QE::Fr:(1)tC="<<totCharge<<",C="<<fCharge<<",tB="<<totBaryoN + <<",B="<<bnContSum<<",E="<<theEnvironment<<G4endl; + if(nHadr) for(unsigned h=0; h<nHadr; h++) + { + G4QHadron* cH = theQHadrons[h]; + G4cout<<":G4QE::HQ:h#"<<h<<",QC="<<cH->GetQC()<<",PDG="<<cH->GetPDGCode()<<G4endl; + } + if(nQuas) for(G4int q=0; q<nQuas; q++) + { + G4Quasmon* cQ = theQuasmons[q]; + G4cout<<":G4QE::HQ:q#"<<q<<",C="<<cQ->GetCharge()<<",QCont="<<cQ->GetQC()<<G4endl; + } + } +#endif + // *** + if(nHadr)for(unsigned ipo=0; ipo<theQHadrons.size(); ipo++)//FindBigestNuclFragm & DecayA + { + unsigned jpo=ipo; + nHadr=theQHadrons.size(); + lHadr=theQHadrons[nHadr-1]->GetBaryonNumber(); + G4QHadron* theCurr = theQHadrons[ipo]; // Pointer to the Current Hadron + G4int hBN = theCurr->GetBaryonNumber(); + G4int sBN = theCurr->GetStrangeness(); + G4int cBN = theCurr->GetCharge(); + G4int hPDG = theCurr->GetPDGCode(); + G4LorentzVector h4Mom = theCurr->Get4Momentum(); +#ifdef pdebug + G4int hNF = theCurr->GetNFragments(); + G4cout<<"G4QE::FSI:h#"<<ipo<<",PDG="<<hPDG<<h4Mom<<",mGS="<<G4QPDGCode(hPDG).GetMass() + <<",F="<<hNF<<",nH="<<theQHadrons.size()<<G4endl; +#endif + if(hBN>lHadr) // Current Hadron is the Biggest fragment -> Swap with theLast Hadron { - G4QHadron* theLast = theCurr; // Prototype of the pointer to the Last Hadron - G4QHadron* curHadr = new G4QHadron(theCurr);// Remember CurrentHadron for evaporation - if(ipo+1<theQHadrons.size()) // If ipo<Last, swap theCurHadr and theLastHadr - { - theLast = theQHadrons[theQHadrons.size()-1];// Pointer to theLastHadron (ipo<Last) - G4QPDGCode lQP=theLast->GetQPDG(); // The QPDG of the last - if(lQP.GetPDGCode()!=10) theCurr->SetQPDG(lQP); //CurHadr instead of LastHadr - else theCurr->SetQC(theLast->GetQC());// CurHadrPDG instead of LastHadrPDG - theCurr->Set4Momentum(theLast->Get4Momentum()); // ... continue substitution - } - theQHadrons.pop_back(); // pointer to theLastHadron is excluded from OUTPUT - delete theLast; //*!!When kill,DON'T forget to delete theLastQHadron asAnInstance !!* - theQHadrons.push_back(curHadr); - nHadr=theQHadrons.size(); - h4Mom = theCurr->Get4Momentum(); - hBN = theCurr->GetBaryonNumber(); - cBN = theCurr->GetCharge(); - sBN = theCurr->GetStrangeness(); - hPDG = theCurr->GetPDGCode(); + G4QHadron* theLast = theCurr; // Prototype of the pointer to the Last Hadron + G4QHadron* curHadr = new G4QHadron(theCurr);// Remember CurrentHadron for evaporation + if(ipo+1<theQHadrons.size()) // If ipo<Last, swap theCurHadr and theLastHadr + { + theLast = theQHadrons[theQHadrons.size()-1];// Pointer to theLastHadron (ipo<Last) + G4QPDGCode lQP=theLast->GetQPDG(); // The QPDG of the last + if(lQP.GetPDGCode()!=10) theCurr->SetQPDG(lQP); //CurHadr instead of LastHadr + else theCurr->SetQC(theLast->GetQC());// CurHadrPDG instead of LastHadrPDG + theCurr->Set4Momentum(theLast->Get4Momentum()); // ... continue substitution + } + theQHadrons.pop_back(); // pointer to theLastHadron is excluded from OUTPUT + delete theLast; //*!!When kill,DON'T forget to delete theLastQHadron asAnInstance !!* + theQHadrons.push_back(curHadr); + nHadr=theQHadrons.size(); + h4Mom = theCurr->Get4Momentum(); + hBN = theCurr->GetBaryonNumber(); + cBN = theCurr->GetCharge(); + sBN = theCurr->GetStrangeness(); + hPDG = theCurr->GetPDGCode(); } - if(hPDG==89002000||hPDG==89001001||hPDG==89000002)// 2pt dec. of anti-strange (3pt dec) - { -#ifdef pdebug - G4cout<<"G4QE::FSI:***ANTISTRANGE*** i="<<ipo<<",PDG="<<hPDG<<",BaryN="<<hBN<<G4endl; -#endif - G4double hM=h4Mom.m(); // 89002000 - G4double hMi=hM+eps; - G4QPDGCode fQPDG = pQPDG; - G4double fM = mProt; - G4int sPDG = 321; - G4double sM = mK; - G4int tPDG = 0; - G4double tM = 0.; - if(hPDG==89002000) // Use the prototypes above + if(hPDG==89002000||hPDG==89001001||hPDG==89000002)// 2pt dec. of anti-strange (3pt dec) + { +#ifdef pdebug + G4cout<<"G4QE::FSI:***ANTISTRANGE*** i="<<ipo<<",PDG="<<hPDG<<",BaryN="<<hBN<<G4endl; +#endif + G4double hM=h4Mom.m(); // 89002000 + G4double hMi=hM+eps; + G4QPDGCode fQPDG = pQPDG; + G4double fM = mProt; + G4int sPDG = 321; + G4double sM = mK; + G4int tPDG = 0; + G4double tM = 0.; + if(hPDG==89002000) // Use the prototypes above { - if(hMi<mKmP) + if(hMi<mKmP) { - if(hMi>mProt+mPi+mPi0) + if(hMi>mProt+mPi+mPi0) { - sPDG=211; - sM =mPi; - tPDG=111; - tM =mPi0; - } - else if(hMi>mProt+mPi) // @@ Does not conserve strangeness (Week decay) + sPDG=211; + sM =mPi; + tPDG=111; + tM =mPi0; + } + else if(hMi>mProt+mPi) // @@ Does not conserve strangeness (Week decay) { #ifdef pdebug - G4cout<<"**G4QE::FSI:ANTISTRANGE*++*STRANGENESS,PDG="<<hPDG<<",M="<<hM<<G4endl; + G4cout<<"**G4QE::FSI:ANTISTRANGE*++*STRANGENESS,PDG="<<hPDG<<",M="<<hM<<G4endl; #endif - sPDG=211; - sM =mPi; - } - else sPDG=0; - } - } + sPDG=211; + sM =mPi; + } + else sPDG=0; + } + } else if(hPDG==89001001) { - fQPDG= nQPDG; - fM = mNeut; - sPDG = 321; - sM = mK; - if(hMi>mK0mP&&G4UniformRand()>.5) - { - fQPDG= pQPDG; - fM = mProt; - sPDG = 311; - sM = mK0; - } + fQPDG= nQPDG; + fM = mNeut; + sPDG = 321; + sM = mK; + if(hMi>mK0mP&&G4UniformRand()>.5) + { + fQPDG= pQPDG; + fM = mProt; + sPDG = 311; + sM = mK0; + } else if(hMi<mKmN) { - if(hMi>mProt+mPi0+mPi0) + if(hMi>mProt+mPi0+mPi0) { - fQPDG= pQPDG; - fM = mProt; - sPDG = 111; - sM = mPi0; - tPDG = 111; - tM = mPi0; - if(hMi>mNeut+mPi+mPi0&&G4UniformRand()>.67) + fQPDG= pQPDG; + fM = mProt; + sPDG = 111; + sM = mPi0; + tPDG = 111; + tM = mPi0; + if(hMi>mNeut+mPi+mPi0&&G4UniformRand()>.67) { - fQPDG= nQPDG; - fM = mNeut; - tPDG = 211; - tM = mPi; - } - if(hMi>mProt+mPi+mPi&&G4UniformRand()>.5) + fQPDG= nQPDG; + fM = mNeut; + tPDG = 211; + tM = mPi; + } + if(hMi>mProt+mPi+mPi&&G4UniformRand()>.5) { - sPDG = 211; - sM = mPi; - tPDG =-211; - tM = mPi; - } - } - else if(hMi>mProt+mPi0) // @@ Does not conserve strangeness (Week decay) + sPDG = 211; + sM = mPi; + tPDG =-211; + tM = mPi; + } + } + else if(hMi>mProt+mPi0) // @@ Does not conserve strangeness (Week decay) { #ifdef pdebug - G4cout<<"**G4QE::FSI:*ANTISTRANGE*+*STRANGENESS*PDG="<<hPDG<<",M="<<hM<<G4endl; + G4cout<<"**G4QE::FSI:*ANTISTRANGE*+*STRANGENESS*PDG="<<hPDG<<",M="<<hM<<G4endl; #endif - fQPDG= pQPDG; - fM = mProt; - sPDG = 111; - sM = mPi0; - } - else sPDG=0; // @@ Still can try to decay in gamma+neutron (electromagnetic) - } - } + fQPDG= pQPDG; + fM = mProt; + sPDG = 111; + sM = mPi0; + } + else sPDG=0; // @@ Still can try to decay in gamma+neutron (electromagnetic) + } + } else if(hPDG==89000002) { - fQPDG= nQPDG; - fM = mNeut; - sPDG = 311; - sM = mK0; - if(hMi<mK0mN) + fQPDG= nQPDG; + fM = mNeut; + sPDG = 311; + sM = mK0; + if(hMi<mK0mN) { - if(hMi>mNeut+mPi+mPi) + if(hMi>mNeut+mPi+mPi) { - sPDG = 211; - sM = mPi; - tPDG =-211; - tM = mPi; - } - if(hMi>mProt+mPi+mPi0) + sPDG = 211; + sM = mPi; + tPDG =-211; + tM = mPi; + } + if(hMi>mProt+mPi+mPi0) { - fQPDG= pQPDG; - fM = mProt; - sPDG = 111; - sM = mPi0; - tPDG =-211; - tM = mPi; - } - else if(hMi>mProt+mPi) // @@ Does not conserve strangeness (Week decay) + fQPDG= pQPDG; + fM = mProt; + sPDG = 111; + sM = mPi0; + tPDG =-211; + tM = mPi; + } + else if(hMi>mProt+mPi) // @@ Does not conserve strangeness (Week decay) { #ifdef pdebug - G4cout<<"**G4QE::FSI:**ANTISTRANGE*0*STRANGENE**PDG="<<hPDG<<",M="<<hM<<G4endl; + G4cout<<"**G4QE::FSI:**ANTISTRANGE*0*STRANGENE**PDG="<<hPDG<<",M="<<hM<<G4endl; #endif - fQPDG= pQPDG; - fM = mProt; - sPDG =-211; - sM = mPi; - } - else sPDG=0; // @@ Still can try to decay in gamma+neutron (electromagnetic) - } + fQPDG= pQPDG; + fM = mProt; + sPDG =-211; + sM = mPi; + } + else sPDG=0; // @@ Still can try to decay in gamma+neutron (electromagnetic) + } } - if(!sPDG) + if(!sPDG) { #ifdef pdebug - G4cout<<"***G4QE::FSI:***ANTISTRANGE***CANN'T DECAY,PDG="<<hPDG<<",M="<<hM<<G4endl; + G4cout<<"***G4QE::FSI:***ANTISTRANGE***CANN'T DECAY,PDG="<<hPDG<<",M="<<hM<<G4endl; #endif - } - else if(!tPDG) // 2 particle decay - { - G4bool fOK=true; - G4LorentzVector f4M(0.,0.,0.,fM); - G4LorentzVector s4M(0.,0.,0.,sM); - G4double sum=fM+sM; - if(fabs(hM-sum)<=eps) + } + else if(!tPDG) // 2 particle decay + { + G4bool fOK=true; + G4LorentzVector f4M(0.,0.,0.,fM); + G4LorentzVector s4M(0.,0.,0.,sM); + G4double sum=fM+sM; + if(fabs(hM-sum)<=eps) { - f4M=h4Mom*(fM/sum); - s4M=h4Mom*(sM/sum); + f4M=h4Mom*(fM/sum); + s4M=h4Mom*(sM/sum); } - else if(hM<sum || !G4QHadron(h4Mom).DecayIn2(f4M,s4M)) + else if(hM<sum || !G4QHadron(h4Mom).DecayIn2(f4M,s4M)) { - G4cout<<"---Warning---G4QE::FSI: Still try(2),M="<<hM<<"->"<<fM<<"("<<fQPDG<<")+" - <<sM<<"("<<sPDG<<")="<<sum<<G4endl; - // Tipical scenario of recovery: - // 1. Check that the Environment is vacuum (must be), - //if(theEnvironment==vacuum) - if(!theEnvironment.GetA()) - { - // 2. Extract and put in qH, substitute by the Last and make quasH, - G4QHadron* theLast = theCurr; // Prototype of thePointer to theLastHadron - G4QHadron* qH = new G4QHadron(theCurr); // Copy of the Current Hadron - if(ipo+1<theQHadrons.size()) // If ipo<Last, swap CurHadr & LastHadr - { - theLast = theQHadrons[theQHadrons.size()-1];//PointerTo theLastHadr(ipo<Last) - G4QPDGCode lQP=theLast->GetQPDG(); // The QPDG of the last - if(lQP.GetPDGCode()!=10) theCurr->SetQPDG(lQP); //CurHadr instead of LastHadr - else theCurr->SetQC(theLast->GetQC());// CurHadrPDG instead of LastHadrPDG - theCurr->Set4Momentum(theLast->Get4Momentum()); // ... 4Momentum substitution - } //ELSE: it's already theLast -> no swap - theQHadrons.pop_back(); //exclude LastHadronPointer from OUTPUT - delete theLast; //*!! When killing, DON'T forget to delete the last QHadron !!* - G4Quasmon* quasH = new G4Quasmon(qH->GetQC(),qH->Get4Momentum());//Fake Quasmon - // 3. Try to use other hadrons to recover this one (under Mass Shell) - if(!CheckGroundState(quasH,true)) // Try to correct with other hadrons - { - G4cout<<"---Warning---G4QEnv::FSI:Failed (2) LeaveAsItIs 4m="<<h4Mom<<G4endl; - theQHadrons.push_back(qH); // Fill as it is (delete equivalent) - } - else - { - delete qH; - // 4. Decrement jpo index (copy of ipo) to find theBiggestNuclearFrag - jpo--; - // 5. Recheck the probuct, which replaced the Last and check others - nHadr=theQHadrons.size(); - } - // 6. Delete the intermediate quasmon - delete quasH; - // 7. Forbid the decay - fOK=false; + G4cout<<"---Warning---G4QE::FSI: Still try(2),M="<<hM<<"->"<<fM<<"("<<fQPDG<<")+" + <<sM<<"("<<sPDG<<")="<<sum<<G4endl; + // Tipical scenario of recovery: + // 1. Check that the Environment is vacuum (must be), + //if(theEnvironment==vacuum) + if(!theEnvironment.GetA()) + { + // 2. Extract and put in qH, substitute by the Last and make quasH, + G4QHadron* theLast = theCurr; // Prototype of thePointer to theLastHadron + G4QHadron* qH = new G4QHadron(theCurr); // Copy of the Current Hadron + if(ipo+1<theQHadrons.size()) // If ipo<Last, swap CurHadr & LastHadr + { + theLast = theQHadrons[theQHadrons.size()-1];//PointerTo theLastHadr(ipo<Last) + G4QPDGCode lQP=theLast->GetQPDG(); // The QPDG of the last + if(lQP.GetPDGCode()!=10) theCurr->SetQPDG(lQP); //CurHadr instead of LastHadr + else theCurr->SetQC(theLast->GetQC());// CurHadrPDG instead of LastHadrPDG + theCurr->Set4Momentum(theLast->Get4Momentum()); // ... 4Momentum substitution + } //ELSE: it's already theLast -> no swap + theQHadrons.pop_back(); //exclude LastHadronPointer from OUTPUT + delete theLast; //*!! When killing, DON'T forget to delete the last QHadron !!* + G4Quasmon* quasH = new G4Quasmon(qH->GetQC(),qH->Get4Momentum());//Fake Quasmon + // 3. Try to use other hadrons to recover this one (under Mass Shell) + if(!CheckGroundState(quasH,true)) // Try to correct with other hadrons + { + G4cout<<"---Warning---G4QEnv::FSI:Failed (2) LeaveAsItIs 4m="<<h4Mom<<G4endl; + theQHadrons.push_back(qH); // Fill as it is (delete equivalent) + } + else + { + delete qH; + // 4. Decrement jpo index (copy of ipo) to find theBiggestNuclearFrag + jpo--; + // 5. Recheck the probuct, which replaced the Last and check others + nHadr=theQHadrons.size(); + } + // 6. Delete the intermediate quasmon + delete quasH; + // 7. Forbid the decay + fOK=false; } - else - { - G4cerr<<"***G4QEnv::FSI: No recovery (1) Env="<<theEnvironment<<G4endl; + else + { + G4cerr<<"***G4QEnv::FSI: No recovery (1) Env="<<theEnvironment<<G4endl; throw G4QException("G4QEnv::FSI:ANTISTRANGE DecayIn2 did not succeed"); - } + } } - if(fOK) - { - theQHadrons[ipo]->SetQPDG(fQPDG); - theQHadrons[ipo]->Set4Momentum(f4M); - G4QHadron* sH = new G4QHadron(sPDG,s4M); - theQHadrons.push_back(sH); // (delete equivalent) - } + if(fOK) + { + theQHadrons[ipo]->SetQPDG(fQPDG); + theQHadrons[ipo]->Set4Momentum(f4M); + G4QHadron* sH = new G4QHadron(sPDG,s4M); + theQHadrons.push_back(sH); // (delete equivalent) + } } - else - { - G4bool fOK=true; - G4LorentzVector f4M(0.,0.,0.,fM); - G4LorentzVector s4M(0.,0.,0.,sM); - G4LorentzVector t4M(0.,0.,0.,tM); - G4double sum=fM+sM+tM; - if(fabs(hM-sum)<=eps) + else + { + G4bool fOK=true; + G4LorentzVector f4M(0.,0.,0.,fM); + G4LorentzVector s4M(0.,0.,0.,sM); + G4LorentzVector t4M(0.,0.,0.,tM); + G4double sum=fM+sM+tM; + if(fabs(hM-sum)<=eps) { - f4M=h4Mom*(fM/sum); - s4M=h4Mom*(sM/sum); - t4M=h4Mom*(tM/sum); + f4M=h4Mom*(fM/sum); + s4M=h4Mom*(sM/sum); + t4M=h4Mom*(tM/sum); } - else if(hM<sum || !G4QHadron(h4Mom).DecayIn3(f4M,s4M,t4M)) + else if(hM<sum || !G4QHadron(h4Mom).DecayIn3(f4M,s4M,t4M)) { - G4cout<<"---Warning---G4QE::FSI: Still try(3), M"<<hM<<"->"<<fM<<"("<<fQPDG<<")+" - <<sM<<"("<<sPDG<<")+"<<tM<<"("<<tPDG<<")="<<sum<<G4endl; - //if(theEnvironment==vacuum) - if(!theEnvironment.GetA()) - { - G4QHadron* theLast = theCurr; // Prototype of the pointer to the Last Hadron - G4QHadron* qH = new G4QHadron(theCurr); // Copy of the Current Hadron - if(ipo+1<theQHadrons.size()) // If ipo<Last, swap CurHadr and theLastHadr - { - theLast = theQHadrons[theQHadrons.size()-1];//Pointer to LastHadron(ipo<Last) - G4QPDGCode lQP=theLast->GetQPDG(); // The QPDG of the last - if(lQP.GetPDGCode()!=10) theCurr->SetQPDG(lQP); //CurHadr instead of LastHadr - else theCurr->SetQC(theLast->GetQC());// CurHadrPDG instead of LastHadrPDG - theCurr->Set4Momentum(theLast->Get4Momentum()); // ... 4Momentum substitution - } - theQHadrons.pop_back(); // exclude theLastHadron pointer from the OUTPUT - delete theLast; //*!! When killing, DON'T forget to delete the last QHadron !!* - G4Quasmon* quasH = new G4Quasmon(qH->GetQC(),qH->Get4Momentum());//Fake Quasmon - if(!CheckGroundState(quasH,true)) // Try to correct by other hadrons - { - G4cout<<"---Warning---G4QEnv::FSI:Failed (3) LeaveAsItIs,4M="<<h4Mom<<G4endl; - theQHadrons.push_back(qH); // Fill as it is (delete equivalent) - } - else - { - delete qH; - jpo--; - nHadr=theQHadrons.size(); - } - delete quasH; - fOK=false; + G4cout<<"---Warning---G4QE::FSI: Still try(3), M"<<hM<<"->"<<fM<<"("<<fQPDG<<")+" + <<sM<<"("<<sPDG<<")+"<<tM<<"("<<tPDG<<")="<<sum<<G4endl; + //if(theEnvironment==vacuum) + if(!theEnvironment.GetA()) + { + G4QHadron* theLast = theCurr; // Prototype of the pointer to the Last Hadron + G4QHadron* qH = new G4QHadron(theCurr); // Copy of the Current Hadron + if(ipo+1<theQHadrons.size()) // If ipo<Last, swap CurHadr and theLastHadr + { + theLast = theQHadrons[theQHadrons.size()-1];//Pointer to LastHadron(ipo<Last) + G4QPDGCode lQP=theLast->GetQPDG(); // The QPDG of the last + if(lQP.GetPDGCode()!=10) theCurr->SetQPDG(lQP); //CurHadr instead of LastHadr + else theCurr->SetQC(theLast->GetQC());// CurHadrPDG instead of LastHadrPDG + theCurr->Set4Momentum(theLast->Get4Momentum()); // ... 4Momentum substitution + } + theQHadrons.pop_back(); // exclude theLastHadron pointer from the OUTPUT + delete theLast; //*!! When killing, DON'T forget to delete the last QHadron !!* + G4Quasmon* quasH = new G4Quasmon(qH->GetQC(),qH->Get4Momentum());//Fake Quasmon + if(!CheckGroundState(quasH,true)) // Try to correct by other hadrons + { + G4cout<<"---Warning---G4QEnv::FSI:Failed (3) LeaveAsItIs,4M="<<h4Mom<<G4endl; + theQHadrons.push_back(qH); // Fill as it is (delete equivalent) + } + else + { + delete qH; + jpo--; + nHadr=theQHadrons.size(); + } + delete quasH; + fOK=false; } - else - { - G4cout<<"***G4QEnv::FSI: No recovery (2) Env="<<theEnvironment<<G4endl; + else + { + G4cout<<"***G4QEnv::FSI: No recovery (2) Env="<<theEnvironment<<G4endl; throw G4QException("G4QEnv::FSI:ANTISTRANGE DecayIn3 did not succeed"); - } + } } - if(fOK) - { - theQHadrons[ipo]->SetQPDG(fQPDG); - theQHadrons[ipo]->Set4Momentum(f4M); - G4QHadron* sH = new G4QHadron(sPDG,s4M); - theQHadrons.push_back(sH); // (delete equivalent) - G4QHadron* tH = new G4QHadron(tPDG,t4M); - theQHadrons.push_back(tH); // (delete equivalent) - } + if(fOK) + { + theQHadrons[ipo]->SetQPDG(fQPDG); + theQHadrons[ipo]->Set4Momentum(f4M); + G4QHadron* sH = new G4QHadron(sPDG,s4M); + theQHadrons.push_back(sH); // (delete equivalent) + G4QHadron* tH = new G4QHadron(tPDG,t4M); + theQHadrons.push_back(tH); // (delete equivalent) + } } - nHadr=theQHadrons.size(); + nHadr=theQHadrons.size(); } - else if(hPDG==89999003||hPDG==90002999||hPDG==90000003||hPDG==90003000|| - hPDG==90999002||hPDG==91001999) // "3-particles decays of dibaryons and 3N" - { -#ifdef pdebug - G4cout<<"G4QE::FSI:***nD-/pD++/nnn/ppp***i="<<ipo<<",PDG="<<hPDG<<",A="<<hBN<<G4endl; -#endif - G4double hM=h4Mom.m(); - G4QPDGCode nuQPDG=nQPDG; // n,n,pi- - G4double nucM = mNeut; - G4int barPDG = 2112; - G4double barM = mNeut; - G4int tPDG = -211; - G4double tM = mPi; - if(hPDG==90002999) // p,p,pi+ + else if(hPDG==89999003||hPDG==90002999||hPDG==90000003||hPDG==90003000|| + hPDG==90999002||hPDG==91001999) // "3-particles decays of dibaryons and 3N" + { +#ifdef pdebug + G4cout<<"G4QE::FSI:***nD-/pD++/nnn/ppp***i="<<ipo<<",PDG="<<hPDG<<",A="<<hBN<<G4endl; +#endif + G4double hM=h4Mom.m(); + G4QPDGCode nuQPDG=nQPDG; // n,n,pi- + G4double nucM = mNeut; + G4int barPDG = 2112; + G4double barM = mNeut; + G4int tPDG = -211; + G4double tM = mPi; + if(hPDG==90002999) // p,p,pi+ { - nuQPDG = pQPDG; // Substitute p for the first n - nucM = mProt; - barPDG = 2212; // Substitute p for the second n - barM = mProt; - tPDG = 211; // Substitute pi+ for the first pi- + nuQPDG = pQPDG; // Substitute p for the first n + nucM = mProt; + barPDG = 2212; // Substitute p for the second n + barM = mProt; + tPDG = 211; // Substitute pi+ for the first pi- } - else if(hPDG==90003000) // 3p + else if(hPDG==90003000) // 3p { - nuQPDG = pQPDG; // Substitute p for the first n - nucM = mProt; - barPDG = 2212; // Substitute p for the second n - barM = mProt; - tPDG = 2212; // Substitute p for pi- - tM = mProt; + nuQPDG = pQPDG; // Substitute p for the first n + nucM = mProt; + barPDG = 2212; // Substitute p for the second n + barM = mProt; + tPDG = 2212; // Substitute p for pi- + tM = mProt; } - else if(hPDG==90999002) // n,Lambda,pi-/n,Sigma0,pi-/n,Sigma-,gamma(@@) + else if(hPDG==90999002) // n,Lambda,pi-/n,Sigma0,pi-/n,Sigma-,gamma(@@) { - if(hM>mSigZ+mNeut+mPi) + if(hM>mSigZ+mNeut+mPi) { - G4double ddMass=hM-mPi; // Free CM energy - G4double dd2=ddMass*ddMass; // Squared free energy - G4double sma=mLamb+mNeut; // Neutron+Lambda sum - G4double pr1=0.; // Prototype to avoid sqrt(-) - if(ddMass>sma) pr1=sqrt((dd2-sma*sma)*dd2); // Neut+Lamb PS - sma=mNeut+mSigZ; // Neutron+Sigma0 sum - G4double smi=mSigZ-mNeut; // Sigma0-Neutron difference - G4double pr2=pr1; // Prototype of +N+S0 PS - if(ddMass>sma && ddMass>smi) pr2+=sqrt((dd2-sma*sma)*(dd2-smi*smi)); - if(pr2*G4UniformRand()>pr1) // --> "ENnv+Sigma0+Lambda" case - { - barPDG = 3212; // Substitute Sigma0 for the second n - barM = mSigZ; - } - else - { - barPDG = 3122; // Substitute Lambda for the second n - barM = mLamb; + G4double ddMass=hM-mPi; // Free CM energy + G4double dd2=ddMass*ddMass; // Squared free energy + G4double sma=mLamb+mNeut; // Neutron+Lambda sum + G4double pr1=0.; // Prototype to avoid sqrt(-) + if(ddMass>sma) pr1=sqrt((dd2-sma*sma)*dd2); // Neut+Lamb PS + sma=mNeut+mSigZ; // Neutron+Sigma0 sum + G4double smi=mSigZ-mNeut; // Sigma0-Neutron difference + G4double pr2=pr1; // Prototype of +N+S0 PS + if(ddMass>sma && ddMass>smi) pr2+=sqrt((dd2-sma*sma)*(dd2-smi*smi)); + if(pr2*G4UniformRand()>pr1) // --> "ENnv+Sigma0+Lambda" case + { + barPDG = 3212; // Substitute Sigma0 for the second n + barM = mSigZ; + } + else + { + barPDG = 3122; // Substitute Lambda for the second n + barM = mLamb; } - } - else if(hM>mLamb+mNeut+mPi) - { - barPDG = 3122; // Substitute Lambda for the second n - barM = mLamb; - } - else if(hM>mSigM+mNeut)// @@ Decay in 2 - { - barPDG = 3112; // Substitute Sigma- for the second n - barM = mSigM; - tPDG = 22; - tM = 0; - } + } + else if(hM>mLamb+mNeut+mPi) + { + barPDG = 3122; // Substitute Lambda for the second n + barM = mLamb; + } + else if(hM>mSigM+mNeut)// @@ Decay in 2 + { + barPDG = 3112; // Substitute Sigma- for the second n + barM = mSigM; + tPDG = 22; + tM = 0; + } } - else if(hPDG==91001999) // p,Lambda,pi+/p,Sigma0,pi+/p,Sigma+,gamma(@@) + else if(hPDG==91001999) // p,Lambda,pi+/p,Sigma0,pi+/p,Sigma+,gamma(@@) { - nuQPDG = pQPDG; // Substitute p for the first n - nucM = mProt; - tPDG = 211; // Substitute pi+ for the first pi- - if(hM>mSigZ+mProt+mPi) + nuQPDG = pQPDG; // Substitute p for the first n + nucM = mProt; + tPDG = 211; // Substitute pi+ for the first pi- + if(hM>mSigZ+mProt+mPi) { - G4double ddMass=hM-mPi; // Free CM energy - G4double dd2=ddMass*ddMass; // Squared free energy - G4double sma=mLamb+mProt; // Lambda+Proton sum - G4double pr1=0.; // Prototype to avoid sqrt(-) - if(ddMass>sma) pr1=sqrt((dd2-sma*sma)*dd2); // Lamb+Prot PS - sma=mProt+mSigZ; // Proton+Sigma0 sum - G4double smi=mSigZ-mProt; // Sigma0-Proton difference - G4double pr2=pr1; // Prototype of +P+S0 PS - if(ddMass>sma && ddMass>smi) pr2+=sqrt((dd2-sma*sma)*(dd2-smi*smi)); - if(pr2*G4UniformRand()>pr1) // --> "ENnv+Sigma0+Lambda" case - { - barPDG = 3212; // Substitute Sigma0 for the second n - barM = mSigZ; - } - else - { - barPDG = 3122; // Substitute Lambda for the second n - barM = mLamb; + G4double ddMass=hM-mPi; // Free CM energy + G4double dd2=ddMass*ddMass; // Squared free energy + G4double sma=mLamb+mProt; // Lambda+Proton sum + G4double pr1=0.; // Prototype to avoid sqrt(-) + if(ddMass>sma) pr1=sqrt((dd2-sma*sma)*dd2); // Lamb+Prot PS + sma=mProt+mSigZ; // Proton+Sigma0 sum + G4double smi=mSigZ-mProt; // Sigma0-Proton difference + G4double pr2=pr1; // Prototype of +P+S0 PS + if(ddMass>sma && ddMass>smi) pr2+=sqrt((dd2-sma*sma)*(dd2-smi*smi)); + if(pr2*G4UniformRand()>pr1) // --> "ENnv+Sigma0+Lambda" case + { + barPDG = 3212; // Substitute Sigma0 for the second n + barM = mSigZ; + } + else + { + barPDG = 3122; // Substitute Lambda for the second n + barM = mLamb; } - } - if(hM>mLamb+mProt+mPi) - { - barPDG = 3122; // Substitute Lambda for the second n - barM = mLamb; - } - else if(hM>mSigP+mProt) // @@ Decay in 2 - { - barPDG = 3222; // Substitute Sigma- for the second n - barM = mSigP; - tPDG = 22; - tM = 0; - } + } + if(hM>mLamb+mProt+mPi) + { + barPDG = 3122; // Substitute Lambda for the second n + barM = mLamb; + } + else if(hM>mSigP+mProt) // @@ Decay in 2 + { + barPDG = 3222; // Substitute Sigma- for the second n + barM = mSigP; + tPDG = 22; + tM = 0; + } } - else if(hPDG==90000003) // 3n + else if(hPDG==90000003) // 3n { - tPDG = 2112; // Substitute n for pi- - tM = mNeut; + tPDG = 2112; // Substitute n for pi- + tM = mNeut; } - G4bool fOK=true; - G4LorentzVector nu4M(0.,0.,0.,nucM); - G4LorentzVector ba4M(0.,0.,0.,barM); - G4LorentzVector pi4M(0.,0.,0.,tM); - G4double sum=nucM+barM+tM; - if(fabs(hM-sum)<=eps) + G4bool fOK=true; + G4LorentzVector nu4M(0.,0.,0.,nucM); + G4LorentzVector ba4M(0.,0.,0.,barM); + G4LorentzVector pi4M(0.,0.,0.,tM); + G4double sum=nucM+barM+tM; + if(fabs(hM-sum)<=eps) { - nu4M=h4Mom*(nucM/sum); - ba4M=h4Mom*(barM/sum); - pi4M=h4Mom*(tM/sum); + nu4M=h4Mom*(nucM/sum); + ba4M=h4Mom*(barM/sum); + pi4M=h4Mom*(tM/sum); } - if(hM<sum || !G4QHadron(h4Mom).DecayIn3(nu4M,ba4M,pi4M)) + if(hM<sum || !G4QHadron(h4Mom).DecayIn3(nu4M,ba4M,pi4M)) { #ifdef pdebug - G4int eA=theEnvironment.GetA(); - G4cout<<"***G4QEnv::FSI:T="<<hPDG<<"("<<hM<<")-> N="<<nuQPDG<<"(M="<<nucM<<") + B=" - <<barPDG<<"("<<barM<<")+N/pi="<<tPDG<<"("<<tM<<")="<<sum<<", A="<<eA<<G4endl; + G4int eA=theEnvironment.GetA(); + G4cout<<"***G4QEnv::FSI:T="<<hPDG<<"("<<hM<<")-> N="<<nuQPDG<<"(M="<<nucM<<") + B=" + <<barPDG<<"("<<barM<<")+N/pi="<<tPDG<<"("<<tM<<")="<<sum<<", A="<<eA<<G4endl; #endif - //if(!eA) - //{ - G4QHadron* theLast = theCurr; // Prototype of the pointer to theLastHadron - G4QHadron* qH = new G4QHadron(theCurr); // Copy of the Current Hadron + //if(!eA) + //{ + G4QHadron* theLast = theCurr; // Prototype of the pointer to theLastHadron + G4QHadron* qH = new G4QHadron(theCurr); // Copy of the Current Hadron #ifdef pdebug - G4cout<<"***G4QE::FSI:#"<<ipo<<",4MQC="<<qH->Get4Momentum()<<qH->GetQC()<<G4endl; + G4cout<<"***G4QE::FSI:#"<<ipo<<",4MQC="<<qH->Get4Momentum()<<qH->GetQC()<<G4endl; #endif - if(ipo+1<theQHadrons.size()) // If ipo<Last, swap CurHadr and theLastHadr - { - G4int nhd1=theQHadrons.size()-1; - theLast = theQHadrons[nhd1];// Pointer to theLastHadron (ipo<L) - G4LorentzVector l4M=theLast->Get4Momentum(); - G4QPDGCode lQP=theLast->GetQPDG(); // The QPDG of the last - if(lQP.GetPDGCode()!=10) theCurr->SetQPDG(lQP); //CurHadr instead of LastHadr - else theCurr->SetQC(theLast->GetQC());// CurHadrPDG instead of LastHadrPDG + if(ipo+1<theQHadrons.size()) // If ipo<Last, swap CurHadr and theLastHadr + { + G4int nhd1=theQHadrons.size()-1; + theLast = theQHadrons[nhd1];// Pointer to theLastHadron (ipo<L) + G4LorentzVector l4M=theLast->Get4Momentum(); + G4QPDGCode lQP=theLast->GetQPDG(); // The QPDG of the last + if(lQP.GetPDGCode()!=10) theCurr->SetQPDG(lQP); //CurHadr instead of LastHadr + else theCurr->SetQC(theLast->GetQC());// CurHadrPDG instead of LastHadrPDG #ifdef pdebug G4cout<<"---Warning---G4QE::FSI:l#"<<nhd1<<",4M="<<l4M<<",PDG="<<lQP<<G4endl; #endif - theCurr->Set4Momentum(theLast->Get4Momentum()); // ... 4Momentum substitution - } - theQHadrons.pop_back(); // exclude theLastHadron pointer from OUTPUT - delete theLast; //*!! When killing, DON'T forget to delete the last QHadron !!* - G4QContent cqQC=qH->GetQC(); - G4LorentzVector tqLV=qH->Get4Momentum(); - G4Quasmon* quasH = new G4Quasmon(cqQC,tqLV);//Create fakeQuasm - if(!CheckGroundState(quasH,true)) // Try to correct by other hadrons - { + theCurr->Set4Momentum(theLast->Get4Momentum()); // ... 4Momentum substitution + } + theQHadrons.pop_back(); // exclude theLastHadron pointer from OUTPUT + delete theLast; //*!! When killing, DON'T forget to delete the last QHadron !!* + G4QContent cqQC=qH->GetQC(); + G4LorentzVector tqLV=qH->Get4Momentum(); + G4Quasmon* quasH = new G4Quasmon(cqQC,tqLV);//Create fakeQuasm + if(!CheckGroundState(quasH,true)) // Try to correct by other hadrons + { #ifdef chdebug - G4cout<<"-W-G4QE::FSI:E="<<theEnvironment<<",Q="<<cqQC<<tqLV<<tqLV.m()<<G4endl; -#endif - theQHadrons.push_back(qH); // Fill as it is (delete equivalent) - } - else - { - delete qH; - jpo--; - nHadr=theQHadrons.size(); - } - delete quasH; - fOK=false; + G4cout<<"-W-G4QE::FSI:E="<<theEnvironment<<",Q="<<cqQC<<tqLV<<tqLV.m()<<G4endl; +#endif + theQHadrons.push_back(qH); // Fill as it is (delete equivalent) + } + else + { + delete qH; + jpo--; + nHadr=theQHadrons.size(); + } + delete quasH; + fOK=false; //} //else //{ - // G4cerr<<"***G4QEnv::FSI:NoRec(3)E="<<theEnvironment<<eA<<",PDG="<<hPDG<<G4endl; + // G4cerr<<"***G4QEnv::FSI:NoRec(3)E="<<theEnvironment<<eA<<",PDG="<<hPDG<<G4endl; // throw G4QException("G4QEnv::FSI:ISO-dibaryon or 3n/3p DecayIn3 error"); //} } - if(fOK) - { - theQHadrons[ipo]->SetQPDG(nuQPDG); - theQHadrons[ipo]->Set4Momentum(nu4M); - G4QHadron* baH = new G4QHadron(barPDG,ba4M); - theQHadrons.push_back(baH); // (delete equivalent) - G4QHadron* piH = new G4QHadron(tPDG,pi4M); - theQHadrons.push_back(piH); // (delete equivalent) - nHadr=theQHadrons.size(); - } + if(fOK) + { + theQHadrons[ipo]->SetQPDG(nuQPDG); + theQHadrons[ipo]->Set4Momentum(nu4M); + G4QHadron* baH = new G4QHadron(barPDG,ba4M); + theQHadrons.push_back(baH); // (delete equivalent) + G4QHadron* piH = new G4QHadron(tPDG,pi4M); + theQHadrons.push_back(piH); // (delete equivalent) + nHadr=theQHadrons.size(); + } } - else if(hBN>1 && !sBN && (cBN<0 || cBN>hBN)) // "nN+mD- or nP+mD++ decay" - { -#ifdef pdebug - G4cout<<"G4QE::FSI:nNmD-/nPmD++ #"<<ipo<<",P="<<hPDG<<",B="<<hBN<<",C="<<cBN<<G4endl; -#endif - G4double hM=h4Mom.m(); - G4QPDGCode nuQPDG=nQPDG; // "(n+m)*N,m*pi-" case === Default - G4double nucM = mNeut; - G4int barPDG = 2112; - G4double barM = mNeut; - G4int nN = hBN-1; // a#of baryons - 1 - G4int tPDG = -211; - G4double tM = mPi; - G4int nPi = -cBN; // a#of Pi-'s - if( cBN>hBN) // reinitialization for the "(n+m)*P,m*pi+" case + else if(hBN>1 && !sBN && (cBN<0 || cBN>hBN)) // "nN+mD- or nP+mD++ decay" + { +#ifdef pdebug + G4cout<<"G4QE::FSI:nNmD-/nPmD++ #"<<ipo<<",P="<<hPDG<<",B="<<hBN<<",C="<<cBN<<G4endl; +#endif + G4double hM=h4Mom.m(); + G4QPDGCode nuQPDG=nQPDG; // "(n+m)*N,m*pi-" case === Default + G4double nucM = mNeut; + G4int barPDG = 2112; + G4double barM = mNeut; + G4int nN = hBN-1; // a#of baryons - 1 + G4int tPDG = -211; + G4double tM = mPi; + G4int nPi = -cBN; // a#of Pi-'s + if( cBN>hBN) // reinitialization for the "(n+m)*P,m*pi+" case { - nuQPDG = pQPDG; // Substitute p for the first n - nucM = mProt; - barPDG = 2212; // Substitute p for the second n - barM = mProt; - tPDG = 211; // Substitute pi+ for the first pi- - nPi = cBN-hBN; // a#0f Pi+'s - } - if(nPi>1) tM*=nPi; - if(nN >1) barM*=nN; - G4bool fOK=true; - G4LorentzVector nu4M(0.,0.,0.,nucM); - G4LorentzVector ba4M(0.,0.,0.,barM); - G4LorentzVector pi4M(0.,0.,0.,tM); - G4double sum=nucM+barM+tM; - if(fabs(hM-sum)<=eps) + nuQPDG = pQPDG; // Substitute p for the first n + nucM = mProt; + barPDG = 2212; // Substitute p for the second n + barM = mProt; + tPDG = 211; // Substitute pi+ for the first pi- + nPi = cBN-hBN; // a#0f Pi+'s + } + if(nPi>1) tM*=nPi; + if(nN >1) barM*=nN; + G4bool fOK=true; + G4LorentzVector nu4M(0.,0.,0.,nucM); + G4LorentzVector ba4M(0.,0.,0.,barM); + G4LorentzVector pi4M(0.,0.,0.,tM); + G4double sum=nucM+barM+tM; + if(fabs(hM-sum)<=eps) { - nu4M=h4Mom*(nucM/sum); - ba4M=h4Mom*(barM/sum); - pi4M=h4Mom*(tM/sum); + nu4M=h4Mom*(nucM/sum); + ba4M=h4Mom*(barM/sum); + pi4M=h4Mom*(tM/sum); } - if(hM<sum || !G4QHadron(h4Mom).DecayIn3(nu4M,ba4M,pi4M)) + if(hM<sum || !G4QHadron(h4Mom).DecayIn3(nu4M,ba4M,pi4M)) { #ifdef pdebug - G4cout<<"***G4QEnv::FSI:IsN M="<<hM<<","<<hPDG<<"->N="<<nuQPDG<<"(M="<<nucM<<")+" - <<nN<<"*B="<<barPDG<<"(M="<<barM<<")+"<<nPi<<"*pi="<<tPDG<<"(M="<<tM<<")=" - <<nucM+barM+tM<<G4endl; - G4cout<<"***G4QEnv::FSI:IsN BaryN="<<hBN<<",Charge="<<cBN<<",Stran="<<sBN<<G4endl; -#endif - if(!theEnvironment.GetA()) // Emergency recovery - { - G4QHadron* theLast = theCurr; // Prototype of the pointer to the Last Hadron - G4QHadron* qH = new G4QHadron(theCurr); // Copy of the Current Hadron - if(ipo+1<theQHadrons.size()) // If ipo<Last, swap CurHadr and theLastHadr - { - theLast = theQHadrons[theQHadrons.size()-1];// Ptr to theLastHadron (ipo<Last) - G4QPDGCode lQP=theLast->GetQPDG(); // The QPDG of the last - if(lQP.GetPDGCode()!=10) theCurr->SetQPDG(lQP); //CurHadr instead of LastHadr - else theCurr->SetQC(theLast->GetQC());// CurHadrPDG instead of LastHadrPDG - theCurr->Set4Momentum(theLast->Get4Momentum()); // ... 4Momentum substitution - } - theQHadrons.pop_back(); // exclude theLastHadron pointer from OUTPUT - delete theLast;//*!! When killing, DON'T forget to delete the last QHadron !!* - G4QContent cqQC=qH->GetQC(); - G4LorentzVector cq4M=qH->Get4Momentum(); - G4Quasmon* quasH = new G4Quasmon(cqQC,cq4M);// Create fakeQuasmon for the Last - if(!CheckGroundState(quasH,true)) // Try to correct by other hadrons - { - G4cout<<"---Warning---G4QEnv::FSI:IN Failed, FillAsItIs: "<<cqQC<<cq4M<<G4endl; - theQHadrons.push_back(qH); // Fill as it is (delete equivalent) - } - else - { - delete qH; - jpo--; - nHadr=theQHadrons.size(); - } - delete quasH; - fOK=false; + G4cout<<"***G4QEnv::FSI:IsN M="<<hM<<","<<hPDG<<"->N="<<nuQPDG<<"(M="<<nucM<<")+" + <<nN<<"*B="<<barPDG<<"(M="<<barM<<")+"<<nPi<<"*pi="<<tPDG<<"(M="<<tM<<")=" + <<nucM+barM+tM<<G4endl; + G4cout<<"***G4QEnv::FSI:IsN BaryN="<<hBN<<",Charge="<<cBN<<",Stran="<<sBN<<G4endl; +#endif + if(!theEnvironment.GetA()) // Emergency recovery + { + G4QHadron* theLast = theCurr; // Prototype of the pointer to the Last Hadron + G4QHadron* qH = new G4QHadron(theCurr); // Copy of the Current Hadron + if(ipo+1<theQHadrons.size()) // If ipo<Last, swap CurHadr and theLastHadr + { + theLast = theQHadrons[theQHadrons.size()-1];// Ptr to theLastHadron (ipo<Last) + G4QPDGCode lQP=theLast->GetQPDG(); // The QPDG of the last + if(lQP.GetPDGCode()!=10) theCurr->SetQPDG(lQP); //CurHadr instead of LastHadr + else theCurr->SetQC(theLast->GetQC());// CurHadrPDG instead of LastHadrPDG + theCurr->Set4Momentum(theLast->Get4Momentum()); // ... 4Momentum substitution + } + theQHadrons.pop_back(); // exclude theLastHadron pointer from OUTPUT + delete theLast;//*!! When killing, DON'T forget to delete the last QHadron !!* + G4QContent cqQC=qH->GetQC(); + G4LorentzVector cq4M=qH->Get4Momentum(); + G4Quasmon* quasH = new G4Quasmon(cqQC,cq4M);// Create fakeQuasmon for the Last + if(!CheckGroundState(quasH,true)) // Try to correct by other hadrons + { + G4cout<<"---Warning---G4QEnv::FSI:IN Failed, FillAsItIs: "<<cqQC<<cq4M<<G4endl; + theQHadrons.push_back(qH); // Fill as it is (delete equivalent) + } + else + { + delete qH; + jpo--; + nHadr=theQHadrons.size(); + } + delete quasH; + fOK=false; } - else - { - G4cout<<"***G4QEnv::FSI:IN,NoRec(4) Env="<<theEnvironment<<",PDG="<<hPDG<<G4endl; + else + { + G4cout<<"***G4QEnv::FSI:IN,NoRec(4) Env="<<theEnvironment<<",PDG="<<hPDG<<G4endl; throw G4QException("G4QEnv::FSI:IN Multy ISO-dibaryon DecayIn3 did not succeed"); - } + } } - if(fOK) - { - theQHadrons[ipo]->SetQPDG(nuQPDG); - theQHadrons[ipo]->Set4Momentum(nu4M); - if(nN>1) ba4M=ba4M/nN; - for(G4int ib=0; ib<nN; ib++) - { - G4QHadron* baH = new G4QHadron(barPDG,ba4M); - theQHadrons.push_back(baH); // (delete equivalent) - } - if(nPi>1) pi4M=pi4M/nPi; - for(G4int im=0; im<nPi; im++) - { - G4QHadron* piH = new G4QHadron(tPDG,pi4M); - theQHadrons.push_back(piH); // (delete equivalent) - } - nHadr=theQHadrons.size(); - } - } -#ifdef pdebug - G4int hNFrag= theQHadrons[ipo]->GetNFragments(); //Recover after swapping - G4QContent hQC = theQHadrons[ipo]->GetQC(); // ... - hPDG = theQHadrons[ipo]->GetPDGCode(); // ... - h4Mom = theQHadrons[ipo]->Get4Momentum(); // ... - ccs4M+=h4Mom; // Calculate CurSum of Hadrs - G4cout<<"G4QE::FSI:#"<<ipo<<": h="<<hPDG<<hQC<<",h4M="<<h4Mom<<h4Mom.m()<<",hNF=" - <<hNFrag<<G4endl; -#endif - ipo=jpo; // Take into account the roll back in case of the Last substitution - } -#ifdef pdebug - G4cout<<"G4QE::FSI: >>>CurrentControlSumOf4MomOfHadrons="<<ccs4M<<G4endl; -#endif - nHadr=theQHadrons.size(); + if(fOK) + { + theQHadrons[ipo]->SetQPDG(nuQPDG); + theQHadrons[ipo]->Set4Momentum(nu4M); + if(nN>1) ba4M=ba4M/nN; + for(G4int ib=0; ib<nN; ib++) + { + G4QHadron* baH = new G4QHadron(barPDG,ba4M); + theQHadrons.push_back(baH); // (delete equivalent) + } + if(nPi>1) pi4M=pi4M/nPi; + for(G4int im=0; im<nPi; im++) + { + G4QHadron* piH = new G4QHadron(tPDG,pi4M); + theQHadrons.push_back(piH); // (delete equivalent) + } + nHadr=theQHadrons.size(); + } + } +#ifdef pdebug + G4int hNFrag= theQHadrons[ipo]->GetNFragments(); //Recover after swapping + G4QContent hQC = theQHadrons[ipo]->GetQC(); // ... + hPDG = theQHadrons[ipo]->GetPDGCode(); // ... + h4Mom = theQHadrons[ipo]->Get4Momentum(); // ... + ccs4M+=h4Mom; // Calculate CurSum of Hadrs + G4cout<<"G4QE::FSI:#"<<ipo<<": h="<<hPDG<<hQC<<",h4M="<<h4Mom<<h4Mom.m()<<",hNF=" + <<hNFrag<<G4endl; +#endif + ipo=jpo; // Take into account the roll back in case of the Last substitution + } +#ifdef pdebug + G4cout<<"G4QE::FSI: >>>CurrentControlSumOf4MomOfHadrons="<<ccs4M<<G4endl; +#endif + nHadr=theQHadrons.size(); #ifdef chdebug - // *** (1) Charge Control Sum Calculation for the Charge Conservation Check *** - G4int ccContSum=0; // Intermediate ChargeControlSum - G4int cbContSum=0; // Intermediate BaryonNumberControlSum - if(nHadr)for(unsigned ic1=0; ic1<nHadr; ic1++) if(!(theQHadrons[ic1]->GetNFragments())) - { - ccContSum+=theQHadrons[ic1]->GetCharge(); - cbContSum+=theQHadrons[ic1]->GetBaryonNumber(); - } - if(ccContSum-chContSum || cbContSum-bnContSum) - { - G4cout<<"*G4QE::FSI:(1) dC="<<ccContSum-chContSum<<",dB="<<cbContSum-bnContSum<<G4endl; - //throw G4QException("G4QEnvironment::FSInteract: (1) Charge is not conserved"); - } - // *** -#endif - G4double p2cut=250000.; // 250000=(2*p_Ferm)**2 - if(envA>0) p2cut/=envA*envA; - //G4double p2cut2=0.; //cut for the alpha creation - // - G4int bfCountM=3; - if(envA>10) bfCountM*=(envA-1)/3; - G4bool bfAct = true; - G4int bfCount= 0; - G4LorentzVector tmp4Mom=tot4Mom; - G4LorentzVector postp4M(0.,0.,0.,0.); - G4int nPost=intQHadrons.size(); - if(nPost) for(G4int psp=0; psp<nPost; psp++) - if(!(intQHadrons[psp]->GetNFragments())) postp4M+=intQHadrons[psp]->Get4Momentum(); - while(bfAct&&bfCount<bfCountM) // "Infinite" LOOP of the ThermoNuclearBackFusion - { - tot4Mom=tmp4Mom-postp4M; // Prepare tot4Mom for the "En/Mom conservation" reduction - bfAct=false; - bfCount++; - nHadr=theQHadrons.size(); - if(nHadr) for(unsigned hadron=0; hadron<theQHadrons.size(); hadron++)// BackFusion LOOP - { - G4QHadron* curHadr = theQHadrons[hadron]; // Get a pointer to the current Hadron - G4int hPDG = curHadr->GetPDGCode(); - G4QPDGCode hQPDG(hPDG); - G4double hGSM = hQPDG.GetMass(); // Ground State Mass of the first fragment -#ifdef pdebug - G4cout<<"G4QE::FSI:LOOP START,h#"<<hadron<<curHadr->Get4Momentum()<<hPDG<<G4endl; -#endif - if(hPDG==89999003||hPDG==90002999) - { - G4cout<<"---WARNING---G4QE::FSI:**nD-/pD++**(3),PDG="<<hPDG<<" CORRECTION"<<G4endl; - G4LorentzVector h4Mom=curHadr->Get4Momentum(); - G4double hM=h4Mom.m(); - G4QPDGCode fQPDG=nQPDG; - G4double fM =mNeut; - G4int sPDG =2112; - G4double sM =mNeut; - G4int tPDG =-211; - G4double tM =mPi; - if(hPDG==90002999) + // *** (1) Charge Control Sum Calculation for the Charge Conservation Check *** + G4int ccContSum=0; // Intermediate ChargeControlSum + G4int cbContSum=0; // Intermediate BaryonNumberControlSum + if(nHadr)for(unsigned ic1=0; ic1<nHadr; ic1++) if(!(theQHadrons[ic1]->GetNFragments())) + { + ccContSum+=theQHadrons[ic1]->GetCharge(); + cbContSum+=theQHadrons[ic1]->GetBaryonNumber(); + } + if(ccContSum-chContSum || cbContSum-bnContSum) + { + G4cout<<"*G4QE::FSI:(1) dC="<<ccContSum-chContSum<<",dB="<<cbContSum-bnContSum<<G4endl; + //throw G4QException("G4QEnvironment::FSInteract: (1) Charge is not conserved"); + } + // *** +#endif + G4double p2cut=250000.; // 250000=(2*p_Ferm)**2 + if(envA>0) p2cut/=envA*envA; + //G4double p2cut2=0.; //cut for the alpha creation + // + G4int bfCountM=3; + if(envA>10) bfCountM*=(envA-1)/3; + G4bool bfAct = true; + G4int bfCount= 0; + G4LorentzVector tmp4Mom=tot4Mom; + G4LorentzVector postp4M(0.,0.,0.,0.); + G4int nPost=intQHadrons.size(); + if(nPost) for(G4int psp=0; psp<nPost; psp++) + if(!(intQHadrons[psp]->GetNFragments())) postp4M+=intQHadrons[psp]->Get4Momentum(); + while(bfAct&&bfCount<bfCountM) // "Infinite" LOOP of the ThermoNuclearBackFusion + { + tot4Mom=tmp4Mom-postp4M; // Prepare tot4Mom for the "En/Mom conservation" reduction + bfAct=false; + bfCount++; + nHadr=theQHadrons.size(); + if(nHadr) for(unsigned hadron=0; hadron<theQHadrons.size(); hadron++)// BackFusion LOOP + { + G4QHadron* curHadr = theQHadrons[hadron]; // Get a pointer to the current Hadron + G4int hPDG = curHadr->GetPDGCode(); + G4QPDGCode hQPDG(hPDG); + G4double hGSM = hQPDG.GetMass(); // Ground State Mass of the first fragment +#ifdef pdebug + G4cout<<"G4QE::FSI:LOOP START,h#"<<hadron<<curHadr->Get4Momentum()<<hPDG<<G4endl; +#endif + if(hPDG==89999003||hPDG==90002999) + { + G4cout<<"---WARNING---G4QE::FSI:**nD-/pD++**(3),PDG="<<hPDG<<" CORRECTION"<<G4endl; + G4LorentzVector h4Mom=curHadr->Get4Momentum(); + G4double hM=h4Mom.m(); + G4QPDGCode fQPDG=nQPDG; + G4double fM =mNeut; + G4int sPDG =2112; + G4double sM =mNeut; + G4int tPDG =-211; + G4double tM =mPi; + if(hPDG==90002999) { - fQPDG=pQPDG; - fM =mProt; - sPDG =2212; - sM =mProt; - tPDG =211; - } - G4bool fOK=true; - G4LorentzVector f4M(0.,0.,0.,fM); - G4LorentzVector s4M(0.,0.,0.,sM); - G4LorentzVector t4M(0.,0.,0.,tM); - G4double sum=fM+sM+tM; - if(fabs(hM-sum)<=eps) + fQPDG=pQPDG; + fM =mProt; + sPDG =2212; + sM =mProt; + tPDG =211; + } + G4bool fOK=true; + G4LorentzVector f4M(0.,0.,0.,fM); + G4LorentzVector s4M(0.,0.,0.,sM); + G4LorentzVector t4M(0.,0.,0.,tM); + G4double sum=fM+sM+tM; + if(fabs(hM-sum)<=eps) { - f4M=h4Mom*(fM/sum); - s4M=h4Mom*(sM/sum); - t4M=h4Mom*(tM/sum); + f4M=h4Mom*(fM/sum); + s4M=h4Mom*(sM/sum); + t4M=h4Mom*(tM/sum); } - else if(hM<sum || !G4QHadron(h4Mom).DecayIn3(f4M,s4M,t4M)) + else if(hM<sum || !G4QHadron(h4Mom).DecayIn3(f4M,s4M,t4M)) { - G4cout<<"---WARNING---G4QE::FSI: Still trying, NDM="<<hM<<"->"<<fM<<"("<<fQPDG - <<")+"<<sM<<"("<<sPDG<<")+"<<tM<<"("<<tPDG<<")="<<sum<<G4endl; - if(!theEnvironment.GetA()) - { - G4QHadron* theLast = curHadr; // Prototype of Pointer to theLastHadron - G4QHadron* qH = new G4QHadron(curHadr);// Copy of the Current Hadron - if(hadron+1<theQHadrons.size()) // If hadr<Last,swap CurHadr & LastHadr - { - theLast = theQHadrons[theQHadrons.size()-1]; // Pointer to LastHadr (nh<Last) - G4QPDGCode lQP=theLast->GetQPDG(); // The QPDG of the last - if(lQP.GetPDGCode()!=10) curHadr->SetQPDG(lQP); //CurHadr instead of LastHadr - else curHadr->SetQC(theLast->GetQC());// CurHadrPDG instead of LastHadrPDG - curHadr->Set4Momentum(theLast->Get4Momentum()); // ... 4Momentum substitution - } - theQHadrons.pop_back(); // exclude theLastHadron pointer from the OUTPUT - delete theLast; //*!! When killing, DON'T forget to delete the last QHadron !!* - G4Quasmon* quasH = new G4Quasmon(qH->GetQC(),qH->Get4Momentum());//Fake Quasmon - if(!CheckGroundState(quasH,true)) // Try to correct by other hadrons - { - G4cout<<"---Warning---G4QE::FSI:NDel Failed LeaveAsItIs, 4m="<<h4Mom<<G4endl; - theQHadrons.push_back(qH); // Leave as it is (delete equivalent) - } - else - { - delete qH; - nHadr=theQHadrons.size(); - } - delete quasH; - fOK=false; + G4cout<<"---WARNING---G4QE::FSI: Still trying, NDM="<<hM<<"->"<<fM<<"("<<fQPDG + <<")+"<<sM<<"("<<sPDG<<")+"<<tM<<"("<<tPDG<<")="<<sum<<G4endl; + if(!theEnvironment.GetA()) + { + G4QHadron* theLast = curHadr; // Prototype of Pointer to theLastHadron + G4QHadron* qH = new G4QHadron(curHadr);// Copy of the Current Hadron + if(hadron+1<theQHadrons.size()) // If hadr<Last,swap CurHadr & LastHadr + { + theLast = theQHadrons[theQHadrons.size()-1]; // Pointer to LastHadr (nh<Last) + G4QPDGCode lQP=theLast->GetQPDG(); // The QPDG of the last + if(lQP.GetPDGCode()!=10) curHadr->SetQPDG(lQP); //CurHadr instead of LastHadr + else curHadr->SetQC(theLast->GetQC());// CurHadrPDG instead of LastHadrPDG + curHadr->Set4Momentum(theLast->Get4Momentum()); // ... 4Momentum substitution + } + theQHadrons.pop_back(); // exclude theLastHadron pointer from the OUTPUT + delete theLast; //*!! When killing, DON'T forget to delete the last QHadron !!* + G4Quasmon* quasH = new G4Quasmon(qH->GetQC(),qH->Get4Momentum());//Fake Quasmon + if(!CheckGroundState(quasH,true)) // Try to correct by other hadrons + { + G4cout<<"---Warning---G4QE::FSI:NDel Failed LeaveAsItIs, 4m="<<h4Mom<<G4endl; + theQHadrons.push_back(qH); // Leave as it is (delete equivalent) + } + else + { + delete qH; + nHadr=theQHadrons.size(); + } + delete quasH; + fOK=false; } - else - { - G4cout<<"***G4QEnv::FSI: No ND recovery Env="<<theEnvironment<<G4endl; + else + { + G4cout<<"***G4QEnv::FSI: No ND recovery Env="<<theEnvironment<<G4endl; throw G4QException("G4QEnv::FSI:ND DecayIn3 did not succeed"); - } + } } - if(fOK) - { - curHadr->SetQPDG(fQPDG); - curHadr->Set4Momentum(f4M); - G4QHadron* sH = new G4QHadron(sPDG,s4M); - theQHadrons.push_back(sH); // (delete equivalent) - G4QHadron* tH = new G4QHadron(tPDG,t4M); - theQHadrons.push_back(tH); // (delete equivalent) - } - hPDG = curHadr->GetPDGCode(); // Change PDG Code of theFirstFragment - hQPDG= G4QPDGCode(hPDG); - hGSM = hQPDG.GetMass(); // Change GroundStateMass of theFirstFragm + if(fOK) + { + curHadr->SetQPDG(fQPDG); + curHadr->Set4Momentum(f4M); + G4QHadron* sH = new G4QHadron(sPDG,s4M); + theQHadrons.push_back(sH); // (delete equivalent) + G4QHadron* tH = new G4QHadron(tPDG,t4M); + theQHadrons.push_back(tH); // (delete equivalent) + } + hPDG = curHadr->GetPDGCode(); // Change PDG Code of theFirstFragment + hQPDG= G4QPDGCode(hPDG); + hGSM = hQPDG.GetMass(); // Change GroundStateMass of theFirstFragm } - nHadr=theQHadrons.size(); - if(hPDG==89001001||hPDG==89002000||hPDG==89000002) - { - G4cout<<"---WARNING---G4QE::FSI:***(K+N)*** (2),PDG="<<hPDG<<" CORRECTION"<<G4endl; - G4LorentzVector h4Mom=curHadr->Get4Momentum(); - G4double hM=h4Mom.m(); - G4QPDGCode fQPDG=nQPDG; - G4double fM =mNeut; - G4int sPDG =311; - G4double sM =mK0; - if(hPDG==89000002) + nHadr=theQHadrons.size(); + if(hPDG==89001001||hPDG==89002000||hPDG==89000002) + { + G4cout<<"---WARNING---G4QE::FSI:***(K+N)*** (2),PDG="<<hPDG<<" CORRECTION"<<G4endl; + G4LorentzVector h4Mom=curHadr->Get4Momentum(); + G4double hM=h4Mom.m(); + G4QPDGCode fQPDG=nQPDG; + G4double fM =mNeut; + G4int sPDG =311; + G4double sM =mK0; + if(hPDG==89000002) { - fQPDG=pQPDG; - fM =mProt; - sPDG =321; - sM =mK; - } - if(hPDG==89001001) + fQPDG=pQPDG; + fM =mProt; + sPDG =321; + sM =mK; + } + if(hPDG==89001001) { - if(hM<mK0+mProt || G4UniformRand()>.5) - { - sPDG =321; - sM =mK; - } - else - { - fQPDG=pQPDG; - fM =mProt; - } - } - G4bool fOK=true; - G4LorentzVector f4M(0.,0.,0.,fM); - G4LorentzVector s4M(0.,0.,0.,sM); - G4double sum=fM+sM; - if(fabs(hM-sum)<=eps) + if(hM<mK0+mProt || G4UniformRand()>.5) + { + sPDG =321; + sM =mK; + } + else + { + fQPDG=pQPDG; + fM =mProt; + } + } + G4bool fOK=true; + G4LorentzVector f4M(0.,0.,0.,fM); + G4LorentzVector s4M(0.,0.,0.,sM); + G4double sum=fM+sM; + if(fabs(hM-sum)<=eps) { - f4M=h4Mom*(fM/sum); - s4M=h4Mom*(sM/sum); + f4M=h4Mom*(fM/sum); + s4M=h4Mom*(sM/sum); } - else if(hM<sum || !G4QHadron(h4Mom).DecayIn2(f4M,s4M)) + else if(hM<sum || !G4QHadron(h4Mom).DecayIn2(f4M,s4M)) { - G4cout<<"---WARNING---G4QE::FSI: Still trying (2),NDM="<<hM<<"->"<<fM<<"("<<fQPDG - <<")+"<<sM<<"("<<sPDG<<")="<<sum<<G4endl; - if(!theEnvironment.GetA()) - { - G4QHadron* theLast = curHadr; // Prototype of Pointer to theLastHadron - G4QHadron* qH = new G4QHadron(curHadr);// Copy of the Current Hadron - if(hadron+1<theQHadrons.size()) // If hadr<Last, swap CurHadr & LastHadr - { - theLast = theQHadrons[theQHadrons.size()-1]; // Pointer to LastHadr (nh<Last) - G4QPDGCode lQP=theLast->GetQPDG(); // The QPDG of the last - if(lQP.GetPDGCode()!=10) curHadr->SetQPDG(lQP); //CurHadr instead of LastHadr - else curHadr->SetQC(theLast->GetQC());// CurHadrPDG instead of LastHadrPDG - curHadr->Set4Momentum(theLast->Get4Momentum()); // ... 4Momentum substitution - } - theQHadrons.pop_back(); // exclude theLastHadron pointer from the OUTPUT - delete theLast; //*!! When killing, DON'T forget to delete the last QHadron !!* - G4Quasmon* quasH = new G4Quasmon(qH->GetQC(),qH->Get4Momentum());//Fake Quasmon - if(!CheckGroundState(quasH,true)) // Try to correct by other hadrons - { - G4cout<<"---Warning---G4QE::FSI:KN Failed LeaveAsItIs 4m="<<h4Mom<<G4endl; - theQHadrons.push_back(qH); // Leave as it is (delete equivalent) - } - else - { - delete qH; - nHadr=theQHadrons.size(); - } - delete quasH; - fOK=false; + G4cout<<"---WARNING---G4QE::FSI: Still trying (2),NDM="<<hM<<"->"<<fM<<"("<<fQPDG + <<")+"<<sM<<"("<<sPDG<<")="<<sum<<G4endl; + if(!theEnvironment.GetA()) + { + G4QHadron* theLast = curHadr; // Prototype of Pointer to theLastHadron + G4QHadron* qH = new G4QHadron(curHadr);// Copy of the Current Hadron + if(hadron+1<theQHadrons.size()) // If hadr<Last, swap CurHadr & LastHadr + { + theLast = theQHadrons[theQHadrons.size()-1]; // Pointer to LastHadr (nh<Last) + G4QPDGCode lQP=theLast->GetQPDG(); // The QPDG of the last + if(lQP.GetPDGCode()!=10) curHadr->SetQPDG(lQP); //CurHadr instead of LastHadr + else curHadr->SetQC(theLast->GetQC());// CurHadrPDG instead of LastHadrPDG + curHadr->Set4Momentum(theLast->Get4Momentum()); // ... 4Momentum substitution + } + theQHadrons.pop_back(); // exclude theLastHadron pointer from the OUTPUT + delete theLast; //*!! When killing, DON'T forget to delete the last QHadron !!* + G4Quasmon* quasH = new G4Quasmon(qH->GetQC(),qH->Get4Momentum());//Fake Quasmon + if(!CheckGroundState(quasH,true)) // Try to correct by other hadrons + { + G4cout<<"---Warning---G4QE::FSI:KN Failed LeaveAsItIs 4m="<<h4Mom<<G4endl; + theQHadrons.push_back(qH); // Leave as it is (delete equivalent) + } + else + { + delete qH; + nHadr=theQHadrons.size(); + } + delete quasH; + fOK=false; } - else - { - G4cerr<<"***G4QEnv::FSI: No KN recovery Env="<<theEnvironment<<G4endl; + else + { + G4cerr<<"***G4QEnv::FSI: No KN recovery Env="<<theEnvironment<<G4endl; throw G4QException("G4QEnv::FSI:KN DecayIn2 did not succeed"); - } + } } - if(fOK) - { - curHadr->SetQPDG(fQPDG); - curHadr->Set4Momentum(f4M); - G4QHadron* sH = new G4QHadron(sPDG,s4M); - theQHadrons.push_back(sH); // (delete equivalent) - } - hPDG = curHadr->GetPDGCode(); // Change PDG Code of theFirstFragment - hQPDG= G4QPDGCode(hPDG); - hGSM = hQPDG.GetMass(); // Change GroundStateMass of theFirstFragm + if(fOK) + { + curHadr->SetQPDG(fQPDG); + curHadr->Set4Momentum(f4M); + G4QHadron* sH = new G4QHadron(sPDG,s4M); + theQHadrons.push_back(sH); // (delete equivalent) + } + hPDG = curHadr->GetPDGCode(); // Change PDG Code of theFirstFragment + hQPDG= G4QPDGCode(hPDG); + hGSM = hQPDG.GetMass(); // Change GroundStateMass of theFirstFragm } - nHadr=theQHadrons.size(); - G4int hS = curHadr->GetStrangeness(); - G4int hF = curHadr->GetNFragments(); - G4LorentzVector h4m= curHadr->Get4Momentum(); - G4double hM = h4m.m(); // Real Mass of the first fragment - G4int hB = curHadr->GetBaryonNumber(); - //////////////////////G4int hC = curHadr->GetCharge(); + nHadr=theQHadrons.size(); + G4int hS = curHadr->GetStrangeness(); + G4int hF = curHadr->GetNFragments(); + G4LorentzVector h4m= curHadr->Get4Momentum(); + G4double hM = h4m.m(); // Real Mass of the first fragment + G4int hB = curHadr->GetBaryonNumber(); + //////////////////////G4int hC = curHadr->GetCharge(); #ifdef pdebug - if(!hF&&(hPDG>80000000&&hPDG<90000000||hPDG==90000000|| - hPDG>90000000&&(hPDG%1000000>200000||hPDG%1000>300))) - G4cout<<"**G4QEnv::FSInteraction: PDG("<<hadron<<")="<<hPDG<<", M="<<hM<<G4endl; + if(!hF&&(hPDG>80000000&&hPDG<90000000||hPDG==90000000|| + hPDG>90000000&&(hPDG%1000000>200000||hPDG%1000>300))) + G4cout<<"**G4QEnv::FSInteraction: PDG("<<hadron<<")="<<hPDG<<", M="<<hM<<G4endl; #endif #ifdef pdebug - G4cout<<"G4QE::FSI:h="<<hPDG<<",S="<<hS<<",B="<<hB<<",#"<<hadron<<"<"<<nHadr<<G4endl; + G4cout<<"G4QE::FSI:h="<<hPDG<<",S="<<hS<<",B="<<hB<<",#"<<hadron<<"<"<<nHadr<<G4endl; #endif //if(hadron&&!hF&&hB>0&&!hS&&(nHadr>3||hB<2)) // ThermoBackFus (VIMP for gamA TotCS) //if(hadron&&!hF&&hB>0&&!hS&&(nHadr>2||hB<4)) // ThermoBackFus (VIMP for gamA TotCS) @@ -5204,3354 +5202,3402 @@ G4QHadronVector* G4QEnvironment::FSInteraction() //if(hadron&&!hF&&hB>0&&hB<4&&!hS) // ThermoBackFusion cond. (VIMP for gamA TotCS) //if(hadron&&!hF&&hB>0&&!hS&&nHadr>2)//ThermoBackFusion MAX condition (VIMP for gamA) //if(2>3) // Close the ThermoBackFusion (VIMP for gamA TotCS) - { + { #ifdef pdebug - //if(nHadr==3) - G4cout<<"G4QE::FSI: h="<<hPDG<<",B="<<hB<<",h#"<<hadron<<" < nH="<<nHadr<<G4endl; + //if(nHadr==3) + G4cout<<"G4QE::FSI: h="<<hPDG<<",B="<<hB<<",h#"<<hadron<<" < nH="<<nHadr<<G4endl; #endif - G4QContent hQC = curHadr->GetQC(); - if(hadron&&!hF&&hB>0) for(unsigned pt=0; pt<hadron; pt++) + G4QContent hQC = curHadr->GetQC(); + if(hadron&&!hF&&hB>0) for(unsigned pt=0; pt<hadron; pt++) { - G4QHadron* backH = theQHadrons[pt]; // Get pointer to one of thePreviousHadrons - G4int bF = backH->GetNFragments(); - G4LorentzVector b4m= backH->Get4Momentum(); - G4double bM= b4m.m(); // Real Mass of the second fragment - G4QContent bQC = backH->GetQC(); - G4int bPDG=bQC.GetZNSPDGCode(); - G4QPDGCode bQPDG(bPDG); - G4double bGSM=bQPDG.GetMass(); // Ground State Mass of the second fragment - G4int bB = backH->GetBaryonNumber(); + G4QHadron* backH = theQHadrons[pt]; // Get pointer to one of thePreviousHadrons + G4int bF = backH->GetNFragments(); + G4LorentzVector b4m= backH->Get4Momentum(); + G4double bM= b4m.m(); // Real Mass of the second fragment + G4QContent bQC = backH->GetQC(); + G4int bPDG=bQC.GetZNSPDGCode(); + G4QPDGCode bQPDG(bPDG); + G4double bGSM=bQPDG.GetMass(); // Ground State Mass of the second fragment + G4int bB = backH->GetBaryonNumber(); - //////////////////G4int bC = backH->GetCharge(); - G4QContent sQC=bQC+hQC; - G4int sPDG=sQC.GetZNSPDGCode(); - G4QPDGCode sQPDG(sPDG); - G4double tM=sQPDG.GetMass(); - G4LorentzVector s4M=h4m+b4m; - G4double sM2=s4M.m2(); - G4double sM=sqrt(sM2); - G4double dsM2=sM2+sM2; - G4double rm=bM-hM; - G4double sm=bM+hM; - G4double pCM2=(sM2-rm*rm)*(sM2-sm*sm)/(dsM2+dsM2); - G4int bS = backH->GetStrangeness(); -#ifdef pdebug - //if(nHadr==3) + //////////////////G4int bC = backH->GetCharge(); + G4QContent sQC=bQC+hQC; + G4int sPDG=sQC.GetZNSPDGCode(); + G4QPDGCode sQPDG(sPDG); + G4double tM=sQPDG.GetMass(); + G4LorentzVector s4M=h4m+b4m; + G4double sM2=s4M.m2(); + G4double sM=sqrt(sM2); + G4double dsM2=sM2+sM2; + G4double rm=bM-hM; + G4double sm=bM+hM; + G4double pCM2=(sM2-rm*rm)*(sM2-sm*sm)/(dsM2+dsM2); + G4int bS = backH->GetStrangeness(); +#ifdef pdebug + //if(nHadr==3) G4cout<<"G4QE::FSI:"<<pt<<",B="<<bB<<",S="<<bS<<",p="<<pCM2<<"<"<<p2cut<<",hB=" - <<hB<<",bM+hM="<<bM+hM<<">tM="<<tM<<",tQC="<<sQC<<G4endl; + <<hB<<",bM+hM="<<bM+hM<<">tM="<<tM<<",tQC="<<sQC<<G4endl; #endif - //if(!bF&&(bB==1||hB==1)&&bM+hM>tM+.001&&pCM2<p2cut) // Only baryons == pcut + //if(!bF&&(bB==1||hB==1)&&bM+hM>tM+.001&&pCM2<p2cut) // Only baryons == pcut //if(!bF&&!bS&&(bB==1&&hB>0||hB==1&&bB>0)&&bM+hM>tM+.00001 - // && (pCM2<p2cut&&nHadr>3||pCM2<p2cut2&&nHadr==3)) + // && (pCM2<p2cut&&nHadr>3||pCM2<p2cut2&&nHadr==3)) //if(!bF&&(bB==1||hB==1)&&bM+hM>tM+.001&&(pCM2<p2cut&&nHadr>3 || // pCM2<p2cut2&&nHadr==3&&bPDG>90000000)) - //if(!bF&&bB<4&&bM+hM>tM+.001&&pCM2<p2cut) - if(!bF&&!bS&&bB>0&&bM+hM>tM+.001&&pCM2<p2cut) - //if(!bF&&bB<4&&bM+hM>tM+.001&&(pCM2<p2cut || bB+hB==4&&pCM2<p2cut2)) + //if(!bF&&bB<4&&bM+hM>tM+.001&&pCM2<p2cut) + if(!bF&&!bS&&bB>0&&bM+hM>tM+.001&&pCM2<p2cut) + //if(!bF&&bB<4&&bM+hM>tM+.001&&(pCM2<p2cut || bB+hB==4&&pCM2<p2cut2)) //if(!bF&&(bB==1||hB==1)&&(nHadr>3||bPDG>90000000)&&bM+hM>tM+.001&&pCM2<p2cut) //if(!bF&&(bB==1&&!bC||hB==1&&!hC)&&bM+hM>tM+.001&&pCM2<p2cut)// Only n == pcut //if(!bF&&(bB==1||hB==1)&&bM+hM>tM+.001&&sM-bM-hM<cut) // Only baryons == ecut //if(!bF&&bB&&bB<fL&&bM+hM>tM+.001&&sM-bM-hM<cut) // Light fragments == ecut { #ifdef fdebug - G4int bPDG = backH->GetPDGCode(); + G4int bPDG = backH->GetPDGCode(); if(sPDG==89999003||sPDG==90002999||sPDG==89999002||sPDG==90001999) - G4cout<<"G4QE::FSI:**nD-/pD++**,h="<<hPDG<<",hB="<<hB<<",b="<<bPDG<<",bB=" - <<bB<<G4endl; - //if(nHadr==3) + G4cout<<"G4QE::FSI:**nD-/pD++**,h="<<hPDG<<",hB="<<hB<<",b="<<bPDG<<",bB=" + <<bB<<G4endl; + //if(nHadr==3) G4cout<<"G4QE::FSI:*FUSION*#"<<hadron<<"["<<hPDG<<"]"<<hM<<"+#"<<pt<<"["<<bPDG - <<"]"<<bM<<"="<<bM+hM<<", sM="<<sM<<">["<<sPDG<<"]"<<tM<<",p2="<<pCM2 - <<"<"<<p2cut<<G4endl; -#endif - bfAct=true; - //@@Temporary decay in gamma - G4bool three=false; - G4QPDGCode fQPDG=sQPDG; - G4QPDGCode rQPDG=gQPDG; - G4QPDGCode hQPDG=gQPDG; - G4LorentzVector f4Mom(0.,0.,0.,tM); - G4LorentzVector g4Mom(0.,0.,0.,0.); - G4LorentzVector t4Mom(0.,0.,0.,0.); - if(sPDG==89999002) // A=1 + <<"]"<<bM<<"="<<bM+hM<<", sM="<<sM<<">["<<sPDG<<"]"<<tM<<",p2="<<pCM2 + <<"<"<<p2cut<<G4endl; +#endif + bfAct=true; + //@@Temporary decay in gamma + G4bool three=false; + G4QPDGCode fQPDG=sQPDG; + G4QPDGCode rQPDG=gQPDG; + G4QPDGCode hQPDG=gQPDG; + G4LorentzVector f4Mom(0.,0.,0.,tM); + G4LorentzVector g4Mom(0.,0.,0.,0.); + G4LorentzVector t4Mom(0.,0.,0.,0.); + if(sPDG==89999002) // A=1 { - fQPDG=nQPDG; - rQPDG=pimQPDG; - f4Mom=G4LorentzVector(0.,0.,0.,mNeut); - g4Mom=G4LorentzVector(0.,0.,0.,mPi); + fQPDG=nQPDG; + rQPDG=pimQPDG; + f4Mom=G4LorentzVector(0.,0.,0.,mNeut); + g4Mom=G4LorentzVector(0.,0.,0.,mPi); } - else if(sPDG==90001999) + else if(sPDG==90001999) { - fQPDG=pQPDG; - rQPDG=pipQPDG; - f4Mom=G4LorentzVector(0.,0.,0.,mProt); - g4Mom=G4LorentzVector(0.,0.,0.,mPi); + fQPDG=pQPDG; + rQPDG=pipQPDG; + f4Mom=G4LorentzVector(0.,0.,0.,mProt); + g4Mom=G4LorentzVector(0.,0.,0.,mPi); } - else if(sPDG==90000002) // A=2 + else if(sPDG==90000002) // A=2 { - fQPDG=nQPDG; - rQPDG=nQPDG; - f4Mom=G4LorentzVector(0.,0.,0.,mNeut); - g4Mom=f4Mom; + fQPDG=nQPDG; + rQPDG=nQPDG; + f4Mom=G4LorentzVector(0.,0.,0.,mNeut); + g4Mom=f4Mom; } - else if(sPDG==90002000) + else if(sPDG==90002000) { - fQPDG=pQPDG; - rQPDG=pQPDG; - f4Mom=G4LorentzVector(0.,0.,0.,mProt); - g4Mom=f4Mom; + fQPDG=pQPDG; + rQPDG=pQPDG; + f4Mom=G4LorentzVector(0.,0.,0.,mProt); + g4Mom=f4Mom; } - else if(sPDG==92000000) + else if(sPDG==92000000) { - fQPDG=lQPDG; - rQPDG=lQPDG; - f4Mom=G4LorentzVector(0.,0.,0.,mLamb); - g4Mom=f4Mom; - if(sM>mSigZ+mSigZ) // Sigma0+Sigma0 is possible + fQPDG=lQPDG; + rQPDG=lQPDG; + f4Mom=G4LorentzVector(0.,0.,0.,mLamb); + g4Mom=f4Mom; + if(sM>mSigZ+mSigZ) // Sigma0+Sigma0 is possible { // @@ Only two particles PS is used - G4double sma=mLamb+mLamb; // Lambda+Lambda sum - G4double pr1=0.; // Prototype to avoid sqrt(-) - if(sM>sma) pr1=sqrt((sM2-sma*sma)*sM2); // Lamb+Lamb PS - sma=mLamb+mSigZ; // Lambda+Sigma0 sum - G4double smi=mSigZ-mLamb; // Sigma0-Lambda difference - G4double pr2=pr1; // Prototype of +L +S0 PS - if(sM>sma && sM>smi) pr2+=sqrt((sM2-sma*sma)*(sM2-smi*smi)); - sma=mSigZ+mSigZ; // Sigma0+Sigma0 sum - G4double pr3=pr2; // Prototype of +Sigma0+Sigma0 PS - if(sM>sma) pr3+=sqrt((sM2-sma*sma)*sM2); - G4double hhRND=pr3*G4UniformRand(); // Randomize PS - if(hhRND>pr2) // --> "ENnv+Sigma0+Sigma0" case - { // - fQPDG=s0QPDG; - f4Mom=G4LorentzVector(0.,0.,0.,mSigZ); - rQPDG=s0QPDG; - g4Mom=f4Mom; - } // - else if(hhRND>pr1) // --> "ENnv+Sigma0+Lambda" case - { // - fQPDG=s0QPDG; - f4Mom=G4LorentzVector(0.,0.,0.,mSigZ); - } // - } - else if(sM>mSigZ+mLamb) // Lambda+Sigma0 is possible + G4double sma=mLamb+mLamb; // Lambda+Lambda sum + G4double pr1=0.; // Prototype to avoid sqrt(-) + if(sM>sma) pr1=sqrt((sM2-sma*sma)*sM2); // Lamb+Lamb PS + sma=mLamb+mSigZ; // Lambda+Sigma0 sum + G4double smi=mSigZ-mLamb; // Sigma0-Lambda difference + G4double pr2=pr1; // Prototype of +L +S0 PS + if(sM>sma && sM>smi) pr2+=sqrt((sM2-sma*sma)*(sM2-smi*smi)); + sma=mSigZ+mSigZ; // Sigma0+Sigma0 sum + G4double pr3=pr2; // Prototype of +Sigma0+Sigma0 PS + if(sM>sma) pr3+=sqrt((sM2-sma*sma)*sM2); + G4double hhRND=pr3*G4UniformRand(); // Randomize PS + if(hhRND>pr2) // --> "ENnv+Sigma0+Sigma0" case + { // + fQPDG=s0QPDG; + f4Mom=G4LorentzVector(0.,0.,0.,mSigZ); + rQPDG=s0QPDG; + g4Mom=f4Mom; + } // + else if(hhRND>pr1) // --> "ENnv+Sigma0+Lambda" case + { // + fQPDG=s0QPDG; + f4Mom=G4LorentzVector(0.,0.,0.,mSigZ); + } // + } + else if(sM>mSigZ+mLamb) // Lambda+Sigma0 is possible { // @@ Only two particles PS is used - G4double sma=mLamb+mLamb; // Lambda+Lambda sum - G4double pr1=0.; // Prototype to avoid sqrt(-) - if(sM>sma) pr1=sqrt((sM2-sma*sma)*sM2); // Lamb+Lamb PS - sma=mLamb+mSigZ; // Lambda+Sigma0 sum - G4double smi=mSigZ-mLamb; // Sigma0-Lambda difference - G4double pr2=pr1; // Prototype of +L +S0 PS - if(sM>sma && sM>smi) pr2+=sqrt((sM2-sma*sma)*(sM2-smi*smi)); - if(pr2*G4UniformRand()>pr1) // --> "ENnv+Sigma0+Lambda" case - { // - fQPDG=s0QPDG; - f4Mom=G4LorentzVector(0.,0.,0.,mSigZ); - } // - } // + G4double sma=mLamb+mLamb; // Lambda+Lambda sum + G4double pr1=0.; // Prototype to avoid sqrt(-) + if(sM>sma) pr1=sqrt((sM2-sma*sma)*sM2); // Lamb+Lamb PS + sma=mLamb+mSigZ; // Lambda+Sigma0 sum + G4double smi=mSigZ-mLamb; // Sigma0-Lambda difference + G4double pr2=pr1; // Prototype of +L +S0 PS + if(sM>sma && sM>smi) pr2+=sqrt((sM2-sma*sma)*(sM2-smi*smi)); + if(pr2*G4UniformRand()>pr1) // --> "ENnv+Sigma0+Lambda" case + { // + fQPDG=s0QPDG; + f4Mom=G4LorentzVector(0.,0.,0.,mSigZ); + } // + } // } - else if(sPDG==89999003) // A=2 + else if(sPDG==89999003) // A=2 { - hQPDG=nQPDG; - rQPDG=nQPDG; - fQPDG=pimQPDG; - t4Mom=G4LorentzVector(0.,0.,0.,mNeut); - g4Mom=G4LorentzVector(0.,0.,0.,mNeut); - f4Mom=G4LorentzVector(0.,0.,0.,mPi); - three=true; + hQPDG=nQPDG; + rQPDG=nQPDG; + fQPDG=pimQPDG; + t4Mom=G4LorentzVector(0.,0.,0.,mNeut); + g4Mom=G4LorentzVector(0.,0.,0.,mNeut); + f4Mom=G4LorentzVector(0.,0.,0.,mPi); + three=true; } - else if(sPDG==90002999) + else if(sPDG==90002999) { - hQPDG=pQPDG; - rQPDG=pQPDG; - fQPDG=pipQPDG; - t4Mom=G4LorentzVector(0.,0.,0.,mProt); - g4Mom=G4LorentzVector(0.,0.,0.,mProt); - f4Mom=G4LorentzVector(0.,0.,0.,mPi); - three=true; + hQPDG=pQPDG; + rQPDG=pQPDG; + fQPDG=pipQPDG; + t4Mom=G4LorentzVector(0.,0.,0.,mProt); + g4Mom=G4LorentzVector(0.,0.,0.,mProt); + f4Mom=G4LorentzVector(0.,0.,0.,mPi); + three=true; } - else if(sPDG==90000003) // A=3 + else if(sPDG==90000003) // A=3 { - hQPDG=nQPDG; - rQPDG=nQPDG; - fQPDG=nQPDG; - t4Mom=G4LorentzVector(0.,0.,0.,mNeut); - g4Mom=G4LorentzVector(0.,0.,0.,mNeut); - f4Mom=G4LorentzVector(0.,0.,0.,mNeut); - three=true; + hQPDG=nQPDG; + rQPDG=nQPDG; + fQPDG=nQPDG; + t4Mom=G4LorentzVector(0.,0.,0.,mNeut); + g4Mom=G4LorentzVector(0.,0.,0.,mNeut); + f4Mom=G4LorentzVector(0.,0.,0.,mNeut); + three=true; } - else if(sPDG==90003000) + else if(sPDG==90003000) { - hQPDG=pQPDG; - rQPDG=pQPDG; - fQPDG=pQPDG; - t4Mom=G4LorentzVector(0.,0.,0.,mProt); - g4Mom=G4LorentzVector(0.,0.,0.,mProt); - f4Mom=G4LorentzVector(0.,0.,0.,mProt); - three=true; + hQPDG=pQPDG; + rQPDG=pQPDG; + fQPDG=pQPDG; + t4Mom=G4LorentzVector(0.,0.,0.,mProt); + g4Mom=G4LorentzVector(0.,0.,0.,mProt); + f4Mom=G4LorentzVector(0.,0.,0.,mProt); + three=true; } - else if(sPDG==90001003) // A=4 + else if(sPDG==90001003) // A=4 { - rQPDG=nQPDG; - fQPDG=tQPDG; - g4Mom=G4LorentzVector(0.,0.,0.,mNeut); - f4Mom=G4LorentzVector(0.,0.,0.,mTrit); + rQPDG=nQPDG; + fQPDG=tQPDG; + g4Mom=G4LorentzVector(0.,0.,0.,mNeut); + f4Mom=G4LorentzVector(0.,0.,0.,mTrit); } - else if(sPDG==90003001) + else if(sPDG==90003001) { - rQPDG=pQPDG; - fQPDG=he3QPDG; - g4Mom=G4LorentzVector(0.,0.,0.,mProt); - f4Mom=G4LorentzVector(0.,0.,0.,mHe3); + rQPDG=pQPDG; + fQPDG=he3QPDG; + g4Mom=G4LorentzVector(0.,0.,0.,mProt); + f4Mom=G4LorentzVector(0.,0.,0.,mHe3); } - else if(sPDG==90002003) // A=5 + else if(sPDG==90002003) // A=5 { - rQPDG=nQPDG; - fQPDG=aQPDG; - g4Mom=G4LorentzVector(0.,0.,0.,mNeut); - f4Mom=G4LorentzVector(0.,0.,0.,mAlph); + rQPDG=nQPDG; + fQPDG=aQPDG; + g4Mom=G4LorentzVector(0.,0.,0.,mNeut); + f4Mom=G4LorentzVector(0.,0.,0.,mAlph); } - else if(sPDG==90003002) + else if(sPDG==90003002) { - rQPDG=pQPDG; - fQPDG=aQPDG; - g4Mom=G4LorentzVector(0.,0.,0.,mProt); - f4Mom=G4LorentzVector(0.,0.,0.,mAlph); + rQPDG=pQPDG; + fQPDG=aQPDG; + g4Mom=G4LorentzVector(0.,0.,0.,mProt); + f4Mom=G4LorentzVector(0.,0.,0.,mAlph); } - else if(sPDG==90004002) // A=6 + else if(sPDG==90004002) // A=6 { - hQPDG=pQPDG; - rQPDG=pQPDG; - fQPDG=aQPDG; - t4Mom=G4LorentzVector(0.,0.,0.,mProt); - g4Mom=G4LorentzVector(0.,0.,0.,mProt); - f4Mom=G4LorentzVector(0.,0.,0.,mAlph); - three=true; + hQPDG=pQPDG; + rQPDG=pQPDG; + fQPDG=aQPDG; + t4Mom=G4LorentzVector(0.,0.,0.,mProt); + g4Mom=G4LorentzVector(0.,0.,0.,mProt); + f4Mom=G4LorentzVector(0.,0.,0.,mAlph); + three=true; } - else if(sPDG==90002005) // A=7 + else if(sPDG==90002005) // A=7 { - rQPDG=nQPDG; - fQPDG=a6QPDG; - g4Mom=G4LorentzVector(0.,0.,0.,mNeut); - f4Mom=G4LorentzVector(0.,0.,0.,mHe6); + rQPDG=nQPDG; + fQPDG=a6QPDG; + g4Mom=G4LorentzVector(0.,0.,0.,mNeut); + f4Mom=G4LorentzVector(0.,0.,0.,mHe6); } - else if(sPDG==90005002) + else if(sPDG==90005002) { - rQPDG=pQPDG; - fQPDG=be6QPDG; - g4Mom=G4LorentzVector(0.,0.,0.,mProt); - f4Mom=G4LorentzVector(0.,0.,0.,mBe6); + rQPDG=pQPDG; + fQPDG=be6QPDG; + g4Mom=G4LorentzVector(0.,0.,0.,mProt); + f4Mom=G4LorentzVector(0.,0.,0.,mBe6); } - else if(sPDG==90004004) // A=8 + else if(sPDG==90004004) // A=8 { - fQPDG=aQPDG; - rQPDG=aQPDG; - f4Mom=G4LorentzVector(0.,0.,0.,mAlph); - g4Mom=f4Mom; + fQPDG=aQPDG; + rQPDG=aQPDG; + f4Mom=G4LorentzVector(0.,0.,0.,mAlph); + g4Mom=f4Mom; } - //else if(sPDG==90006002) + //else if(sPDG==90006002) //{ - // hQPDG=pQPDG; - // rQPDG=pQPDG; - // fQPDG=be6QPDG; - // t4Mom=G4LorentzVector(0.,0.,0.,mProt); - // g4Mom=G4LorentzVector(0.,0.,0.,mProt); - // f4Mom=G4LorentzVector(0.,0.,0.,mBe6); - // three=true; + // hQPDG=pQPDG; + // rQPDG=pQPDG; + // fQPDG=be6QPDG; + // t4Mom=G4LorentzVector(0.,0.,0.,mProt); + // g4Mom=G4LorentzVector(0.,0.,0.,mProt); + // f4Mom=G4LorentzVector(0.,0.,0.,mBe6); + // three=true; //} - //else if(sPDG==90002006) + //else if(sPDG==90002006) //{ - // hQPDG=nQPDG; - // rQPDG=nQPDG; - // fQPDG=a6QPDG; - // t4Mom=G4LorentzVector(0.,0.,0.,mNeut); - // g4Mom=G4LorentzVector(0.,0.,0.,mNeut); - // f4Mom=G4LorentzVector(0.,0.,0.,mHe6); - // three=true; + // hQPDG=nQPDG; + // rQPDG=nQPDG; + // fQPDG=a6QPDG; + // t4Mom=G4LorentzVector(0.,0.,0.,mNeut); + // g4Mom=G4LorentzVector(0.,0.,0.,mNeut); + // f4Mom=G4LorentzVector(0.,0.,0.,mHe6); + // three=true; //} - else if(sPDG==90002007) // A=9 + else if(sPDG==90002007) // A=9 { - rQPDG=nQPDG; - fQPDG=a8QPDG; - g4Mom=G4LorentzVector(0.,0.,0.,mNeut); - f4Mom=G4LorentzVector(0.,0.,0.,mHe8); + rQPDG=nQPDG; + fQPDG=a8QPDG; + g4Mom=G4LorentzVector(0.,0.,0.,mNeut); + f4Mom=G4LorentzVector(0.,0.,0.,mHe8); } - else if(sPDG==90005004) // A=9 + else if(sPDG==90005004) // A=9 { - rQPDG=pQPDG; - fQPDG=aQPDG; - hQPDG=aQPDG; - g4Mom=G4LorentzVector(0.,0.,0.,mProt); - f4Mom=G4LorentzVector(0.,0.,0.,mAlph); - t4Mom=G4LorentzVector(0.,0.,0.,mAlph); - three=true; + rQPDG=pQPDG; + fQPDG=aQPDG; + hQPDG=aQPDG; + g4Mom=G4LorentzVector(0.,0.,0.,mProt); + f4Mom=G4LorentzVector(0.,0.,0.,mAlph); + t4Mom=G4LorentzVector(0.,0.,0.,mAlph); + three=true; } - else if(sPDG==90007002) // A=9 + else if(sPDG==90007002) // A=9 { - rQPDG=pQPDG; - fQPDG=c8QPDG; - g4Mom=G4LorentzVector(0.,0.,0.,mProt); - f4Mom=G4LorentzVector(0.,0.,0.,mC8); + rQPDG=pQPDG; + fQPDG=c8QPDG; + g4Mom=G4LorentzVector(0.,0.,0.,mProt); + f4Mom=G4LorentzVector(0.,0.,0.,mC8); } - else if(sPDG==90008004) // A=12 + else if(sPDG==90008004) // A=12 { - hQPDG=pQPDG; - rQPDG=pQPDG; - fQPDG=c10QPDG; - t4Mom=G4LorentzVector(0.,0.,0.,mProt); - g4Mom=G4LorentzVector(0.,0.,0.,mProt); - f4Mom=G4LorentzVector(0.,0.,0.,mC10); - three=true; + hQPDG=pQPDG; + rQPDG=pQPDG; + fQPDG=c10QPDG; + t4Mom=G4LorentzVector(0.,0.,0.,mProt); + g4Mom=G4LorentzVector(0.,0.,0.,mProt); + f4Mom=G4LorentzVector(0.,0.,0.,mC10); + three=true; } - else if(sPDG==90009006) // A=15 + else if(sPDG==90009006) // A=15 { - rQPDG=pQPDG; - fQPDG=o14QPDG; - g4Mom=G4LorentzVector(0.,0.,0.,mProt); - f4Mom=G4LorentzVector(0.,0.,0.,mO14); + rQPDG=pQPDG; + fQPDG=o14QPDG; + g4Mom=G4LorentzVector(0.,0.,0.,mProt); + f4Mom=G4LorentzVector(0.,0.,0.,mO14); } - else if(sPDG==90009007) // A=16 + else if(sPDG==90009007) // A=16 { - rQPDG=pQPDG; - fQPDG=o15QPDG; - g4Mom=G4LorentzVector(0.,0.,0.,mProt); - f4Mom=G4LorentzVector(0.,0.,0.,mO15); + rQPDG=pQPDG; + fQPDG=o15QPDG; + g4Mom=G4LorentzVector(0.,0.,0.,mProt); + f4Mom=G4LorentzVector(0.,0.,0.,mO15); } - else if(sPDG==90010006) // A=16 + else if(sPDG==90010006) // A=16 { - hQPDG=pQPDG; - rQPDG=pQPDG; - fQPDG=o14QPDG; - t4Mom=G4LorentzVector(0.,0.,0.,mProt); - g4Mom=G4LorentzVector(0.,0.,0.,mProt); - f4Mom=G4LorentzVector(0.,0.,0.,mO14); - three=true; + hQPDG=pQPDG; + rQPDG=pQPDG; + fQPDG=o14QPDG; + t4Mom=G4LorentzVector(0.,0.,0.,mProt); + g4Mom=G4LorentzVector(0.,0.,0.,mProt); + f4Mom=G4LorentzVector(0.,0.,0.,mO14); + three=true; } #ifdef pdebug - G4cout<<"G4QE::FSI: "<<three<<",r="<<rQPDG<<",f="<<fQPDG<<",t="<<hQPDG<<G4endl; -#endif - if(!three) - { - if(!G4QHadron(s4M).DecayIn2(f4Mom,g4Mom)) - { - G4cerr<<"***G4QE::FSI:(2)*FUSION*,tM["<<sPDG<<"]="<<tM<<">sM="<<sM<<" of " - <<h4m<<hM<<hQC<<hGSM<<" & "<<b4m<<bM<<bQC<<bGSM<<G4endl; - throw G4QException("***G4QEnvironment::FSInter:Fusion (1) DecIn2 error"); - } - else + G4cout<<"G4QE::FSI: "<<three<<",r="<<rQPDG<<",f="<<fQPDG<<",t="<<hQPDG<<G4endl; +#endif + if(!three) + { + if(!G4QHadron(s4M).DecayIn2(f4Mom,g4Mom)) + { + G4cerr<<"***G4QE::FSI:(2)*FUSION*,tM["<<sPDG<<"]="<<tM<<">sM="<<sM<<" of " + <<h4m<<hM<<hQC<<hGSM<<" & "<<b4m<<bM<<bQC<<bGSM<<G4endl; + throw G4QException("***G4QEnvironment::FSInter:Fusion (1) DecIn2 error"); + } + else { #ifdef pdebug - G4cout<<"G4QE::FSI:*FUSION IS DONE*,fPDG="<<sPDG<<",PDG1="<<hPDG<<",PDG2=" - <<bPDG<<G4endl; + G4cout<<"G4QE::FSI:*FUSION IS DONE*,fPDG="<<sPDG<<",PDG1="<<hPDG<<",PDG2=" + <<bPDG<<G4endl; #endif - curHadr->SetQPDG(fQPDG); - curHadr->Set4Momentum(f4Mom); - backH->SetQPDG(rQPDG); - backH->Set4Momentum(g4Mom); + curHadr->SetQPDG(fQPDG); + curHadr->Set4Momentum(f4Mom); + backH->SetQPDG(rQPDG); + backH->Set4Momentum(g4Mom); #ifdef pdebug - G4cout<<"G4QE::FSI:h="<<h4m<<",b="<<b4m<<",s="<<s4M<<G4endl; - G4cout<<"G4QE::FSI:f="<<f4Mom<<",g="<<g4Mom<<",s="<<f4Mom+g4Mom<<G4endl; + G4cout<<"G4QE::FSI:h="<<h4m<<",b="<<b4m<<",s="<<s4M<<G4endl; + G4cout<<"G4QE::FSI:f="<<f4Mom<<",g="<<g4Mom<<",s="<<f4Mom+g4Mom<<G4endl; #endif - } + } } - else - { - if(!G4QHadron(s4M).DecayIn3(f4Mom,g4Mom,t4Mom)) - { - G4cerr<<"***G4QE::FSI:(3)*FUSION*,tM["<<sPDG<<"]="<<tM<<">sM="<<sM<<" of " - <<h4m<<hM<<hQC<<hGSM<<" & "<<b4m<<bM<<bQC<<bGSM<<G4endl; - throw G4QException("G4QEnvironment::FSInteract:Fusion(2) DecayIn3 error"); - } - else + else + { + if(!G4QHadron(s4M).DecayIn3(f4Mom,g4Mom,t4Mom)) + { + G4cerr<<"***G4QE::FSI:(3)*FUSION*,tM["<<sPDG<<"]="<<tM<<">sM="<<sM<<" of " + <<h4m<<hM<<hQC<<hGSM<<" & "<<b4m<<bM<<bQC<<bGSM<<G4endl; + throw G4QException("G4QEnvironment::FSInteract:Fusion(2) DecayIn3 error"); + } + else { #ifdef pdebug - G4cout<<"G4QE::FSI:DONE,n="<<nHadr<<",PDG="<<sPDG<<",1="<<hPDG<<",2="<<bPDG - <<G4endl; + G4cout<<"G4QE::FSI:DONE,n="<<nHadr<<",PDG="<<sPDG<<",1="<<hPDG<<",2="<<bPDG + <<G4endl; +#endif + curHadr->SetQPDG(fQPDG); + curHadr->Set4Momentum(f4Mom); + backH->SetQPDG(rQPDG); + backH->Set4Momentum(g4Mom); + G4QHadron* newH = new G4QHadron(hQPDG.GetPDGCode(),t4Mom); + theQHadrons.push_back(newH); // (delete equivalent for newH) + nHadr=theQHadrons.size(); +#ifdef pdebug + G4cout<<"G4QE::FSI:h="<<h4m<<",b="<<b4m<<G4endl; + G4cout<<"G4QE::FSI:s="<<s4M<<" = Sum"<<f4Mom+g4Mom+t4Mom<<G4endl; + G4cout<<"G4QE::FSI:*Products*,nH="<<nHadr<<",f="<<fQPDG<<f4Mom<<",b=" + <<rQPDG<<g4Mom<<",new="<<hQPDG<<t4Mom<<",nH="<<nHadr<<",nD=" + <<theQHadrons.size()<<G4endl; +#endif + } + } + tot4Mom+=b4m; // Instead of the fused hadron + tot4Mom-=g4Mom; // subtract from the total the new hadron + /////////////////////////////break; // Make fusion only for one (?) + // Instead the curHadr parameters should be updated ______ + hQPDG=fQPDG; + hPDG=hQPDG.GetPDGCode(); + hQC=fQPDG.GetQuarkContent(); + hS=hQC.GetStrangeness(); + hB=hQC.GetBaryonNumber(); + hGSM = hQPDG.GetMass(); + h4m=f4Mom; + hM=h4m.m(); + // End of Instead ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +#ifdef pdebug + G4cout<<"G4QE::FSI:cH4M="<<curHadr->Get4Momentum()<<G4endl; #endif - curHadr->SetQPDG(fQPDG); - curHadr->Set4Momentum(f4Mom); - backH->SetQPDG(rQPDG); - backH->Set4Momentum(g4Mom); - G4QHadron* newH = new G4QHadron(hQPDG.GetPDGCode(),t4Mom); - theQHadrons.push_back(newH); // (delete equivalent for newH) - nHadr=theQHadrons.size(); + } // End of the fusion check + } // End of the LOOP over previous hadrons + } // End of the FUSION check +#ifdef chdebug + // *** (2) Charge Control Sum Calculation for the Charge Conservation Check *** + ccContSum=0; // Intermediate ChargeControlSum + cbContSum=0; // Intermediate BaryonNumberControlSum + if(nHadr)for(unsigned ic2=0;ic2<nHadr;ic2++) if(!(theQHadrons[ic2]->GetNFragments())) + { + ccContSum+=theQHadrons[ic2]->GetCharge(); + cbContSum+=theQHadrons[ic2]->GetBaryonNumber(); + } + unsigned pHadr=intQHadrons.size(); + if(pHadr)for(unsigned ic3=0;ic3<pHadr;ic3++) if(!(intQHadrons[ic3]->GetNFragments())) + { + ccContSum+=intQHadrons[ic3]->GetCharge(); + cbContSum+=intQHadrons[ic3]->GetBaryonNumber(); + } + if(ccContSum-chContSum || cbContSum-bnContSum) + { + G4cout<<"*G4QE::FSI:(2) dC="<<ccContSum-chContSum<<",dB="<<cbContSum-bnContSum + <<G4endl; + //throw G4QException("G4QEnvironment::FSInteract: (2) Charge is not conserved"); + } + // *** +#endif + G4LorentzVector cH4Mom = curHadr->Get4Momentum(); // 4-mom of the current hadron + tot4Mom-=cH4Mom; // Reduce theTotal 4mom by theCurrent 4mom + totCharge-=curHadr->GetCharge(); // @!@ + totBaryoN-=curHadr->GetBaryonNumber(); // @!@ +#ifdef pdebug + G4cout<<"G4QE::FSI:Cur4M="<<tot4Mom<<",tC="<<totCharge<<",tB="<<totBaryoN<<G4endl; +#endif + if(hadron+1==nHadr) // The Last Hadron in the set + { +#ifdef pdebug + G4cout<<"G4QE::FSI:Last4M="<<tot4Mom<<",tC="<<totCharge<<",tB="<<totBaryoN<<G4endl; +#endif + G4double misM=0.; // @!@ + G4int mPDG=0; // @!@ + if(totCharge>=0 && totBaryoN > 0) // @!@ + { // @!@ + mPDG=90000000+999*totCharge+totBaryoN;// @!@ + misM=G4QPDGCode(mPDG).GetMass(); // @!@ + } // @!@ + G4double re =tot4Mom.e(); + G4double rpx=tot4Mom.px(); + G4double rpy=tot4Mom.py(); + G4double rpz=tot4Mom.pz(); + G4double re2=re*re; // @!@ + G4double dmo=rpx*rpx+rpy*rpy+rpz*rpz; + G4double dem=re2+dmo; // @!@ + G4double dm2=re2-dmo; // @!@ + G4double sdm=0.; // @!@ + if(dm2>0.) sdm=std::sqrt(dm2); // @!@ +#ifdef pdebug + G4cout<<"G4QE::FSI: Is En&Mom conserved? t4M="<<tot4Mom<<",dM="<<sdm<<", mM="<<misM + <<",mPDG="<<mPDG<<G4endl; +#endif + G4LorentzVector cor4M(0.,0.,0.,0.); // Prototype for the neutron + if(dem>0.1) // Energy or momentum is not conserved + { #ifdef pdebug - G4cout<<"G4QE::FSI:h="<<h4m<<",b="<<b4m<<G4endl; - G4cout<<"G4QE::FSI:s="<<s4M<<" = Sum"<<f4Mom+g4Mom+t4Mom<<G4endl; - G4cout<<"G4QE::FSI:*Products*,nH="<<nHadr<<",f="<<fQPDG<<f4Mom<<",b=" - <<rQPDG<<g4Mom<<",new="<<hQPDG<<t4Mom<<",nH="<<nHadr<<",nD=" - <<theQHadrons.size()<<G4endl; + G4cout<<"--Warning--G4QE::FSI:dE/Mc4M="<<tot4Mom<<sdm<<". Correct it!"<<G4endl; #endif - } - } - tot4Mom+=b4m; // Instead of the fused hadron - tot4Mom-=g4Mom; // subtract from the total the new hadron - /////////////////////////////break; // Make fusion only for one (?) - // Instead the curHadr parameters should be updated ______ - hQPDG=fQPDG; - hPDG=hQPDG.GetPDGCode(); - hQC=fQPDG.GetQuarkContent(); - hS=hQC.GetStrangeness(); - hB=hQC.GetBaryonNumber(); - hGSM = hQPDG.GetMass(); - h4m=f4Mom; - hM=h4m.m(); - // End of Instead ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + if(sdm < 0.1 || (re2 > 0. && !totCharge && !totBaryoN && sdm/re2 < .0001)) // @!@ + { #ifdef pdebug - G4cout<<"G4QE::FSI:cH4M="<<curHadr->Get4Momentum()<<G4endl; + G4cout<<"...G4QE::FSI:E/M conservation is corrected by a photon"<<G4endl; #endif - } // End of the fusion check - } // End of the LOOP over previous hadrons - } // End of the FUSION check -#ifdef chdebug - // *** (2) Charge Control Sum Calculation for the Charge Conservation Check *** - ccContSum=0; // Intermediate ChargeControlSum - cbContSum=0; // Intermediate BaryonNumberControlSum - if(nHadr)for(unsigned ic2=0;ic2<nHadr;ic2++) if(!(theQHadrons[ic2]->GetNFragments())) - { - ccContSum+=theQHadrons[ic2]->GetCharge(); - cbContSum+=theQHadrons[ic2]->GetBaryonNumber(); - } - unsigned pHadr=intQHadrons.size(); - if(pHadr)for(unsigned ic3=0;ic3<pHadr;ic3++) if(!(intQHadrons[ic3]->GetNFragments())) - { - ccContSum+=intQHadrons[ic3]->GetCharge(); - cbContSum+=intQHadrons[ic3]->GetBaryonNumber(); - } - if(ccContSum-chContSum || cbContSum-bnContSum) - { - G4cout<<"*G4QE::FSI:(2) dC="<<ccContSum-chContSum<<",dB="<<cbContSum-bnContSum - <<G4endl; - //throw G4QException("G4QEnvironment::FSInteract: (2) Charge is not conserved"); - } - // *** -#endif - G4LorentzVector cH4Mom = curHadr->Get4Momentum(); // 4-mom of the current hadron - tot4Mom-=cH4Mom; // Reduce theTotal 4mom by theCurrent 4mom - if(hadron+1==nHadr) // The Last Hadron in the set - { - G4double re =tot4Mom.e(); - G4double rpx=tot4Mom.px(); - G4double rpy=tot4Mom.py(); - G4double rpz=tot4Mom.pz(); - G4double dmo=rpx*rpx+rpy*rpy+rpz*rpz; - G4double dem=re*re+dmo; + cor4M=tot4Mom; // Complete correction + G4QHadron* theH = new G4QHadron(22,tot4Mom); + theQHadrons.push_back(theH); // (delete equivalent for the proton) + } + else // @!@ + { + if(dmo<0.0001 && re>900.) // MomentumIsConserved - recoverMissing + { + if(fabs(re-mNeut)<.01) + { #ifdef pdebug - G4cout<<"G4QE::FSI: Is Energy&Mom conserved? t4M="<<tot4Mom<<",d2="<<dem<<G4endl; + G4cout<<"...G4QE::FSI:E/M conservation is corrected by neutron"<<G4endl; #endif - //if(2>3) //@@En/Mom conservation check is closed - if(dem>0.0001) // Energy or momentum is not conserved - { + cor4M=G4LorentzVector(0.,0.,0.,mNeut); // Made as a prototype + G4QHadron* theH = new G4QHadron(90000001,G4LorentzVector(0.,0.,0.,mNeut)); + theQHadrons.push_back(theH); // (delete equivalent for the proton) + } + else if(fabs(re-mProt)<.01) + { #ifdef pdebug - if(dem>.1) - { - G4cout<<"---Warning---G4QE::FSI:E/Mcons4M="<<tot4Mom<<dem<<".Correct!"<<G4endl; - G4LorentzVector cor4M(0.,0.,0.,mNeut); // Prototype for the neutron - if(dmo<0.0001 && re>900.) // MomentumIsConserved - recoverMissing - { - if(fabs(re-mNeut)<.01) - { - G4cout<<"...G4QE::FSI:E/M conservation is corrected by neutron"<<G4endl; - //cor4M=G4LorentzVector(0.,0.,0.,mNeut); // Made as a prototype - G4QHadron* theH = new G4QHadron(90000001,G4LorentzVector(0.,0.,0.,mNeut)); - theQHadrons.push_back(theH); // (delete equivalent for the proton) - } - else if(fabs(re-mProt)<.01) - { - G4cout<<"...G4QE::FSI:E/M conservation is corrected by proton"<<G4endl; - cor4M=G4LorentzVector(0.,0.,0.,mProt); - G4QHadron* theH = new G4QHadron(90001000,G4LorentzVector(0.,0.,0.,mProt)); - theQHadrons.push_back(theH); // (delete equivalent for the proton) - } - else if(fabs(re-mDeut)<.01) - { - G4cout<<"...G4QE::FSI:E/M conservation is corrected by deuteron"<<G4endl; - cor4M=G4LorentzVector(0.,0.,0.,mDeut); - G4QHadron* theH = new G4QHadron(90001001,G4LorentzVector(0.,0.,0.,mDeut)); - theQHadrons.push_back(theH); // (delete equivalent for the proton) - } - else if(fabs(re-mTrit)<.01) - { - G4cout<<"...G4QE::FSI:E/M conservation is corrected by tritium"<<G4endl; - cor4M=G4LorentzVector(0.,0.,0.,mTrit); - G4QHadron* theH = new G4QHadron(90001002,G4LorentzVector(0.,0.,0.,mTrit)); - theQHadrons.push_back(theH); // (delete equivalent for the proton) - } - else if(fabs(re-mHe3)<.01) - { - G4cout<<"...G4QE::FSI:E/M conservation is corrected by He3"<<G4endl; - cor4M=G4LorentzVector(0.,0.,0.,mHe3); - G4QHadron* theH = new G4QHadron(90002001,G4LorentzVector(0.,0.,0.,mHe3)); - theQHadrons.push_back(theH); // (delete equivalent for the proton) - } - else if(fabs(re-mAlph)<.01) - { - G4cout<<"...G4QE::FSI:E/M conservation is corrected by alpha"<<G4endl; - cor4M=G4LorentzVector(0.,0.,0.,mAlph); - G4QHadron* theH = new G4QHadron(90002002,G4LorentzVector(0.,0.,0.,mAlph)); - theQHadrons.push_back(theH); // (delete equivalent for the proton) - } - else if(fabs(re-mNeut-mNeut)<.01) - { - cor4M=G4LorentzVector(0.,0.,0.,mNeut+mNeut); - G4cout<<"...G4QE::FSI:E/M conservation is corrected by 2 neutrons"<<G4endl; - G4QHadron* theH1 = new G4QHadron(90000001,G4LorentzVector(0.,0.,0.,mNeut)); - theQHadrons.push_back(theH1); // (delete equivalent for the proton) - G4QHadron* theH2 = new G4QHadron(90000001,G4LorentzVector(0.,0.,0.,mNeut)); - theQHadrons.push_back(theH2); // (delete equivalent for the proton) - } - else if(fabs(re-mProt-mProt)<.01) - { - G4cout<<"...G4QE::FSI:E/M conservation is corrected by 2 protons"<<G4endl; - cor4M=G4LorentzVector(0.,0.,0.,mProt+mProt); - G4QHadron* theH1 = new G4QHadron(90001000,G4LorentzVector(0.,0.,0.,mProt)); - theQHadrons.push_back(theH1); // (delete equivalent for the proton) - G4QHadron* theH2 = new G4QHadron(90001000,G4LorentzVector(0.,0.,0.,mProt)); - theQHadrons.push_back(theH2); // (delete equivalent for the proton) - } - else throw G4QException("***G4QEnv::FSInteract: Increase theCorrectionEps"); - } - else - { - // @@ Temporary very bad correction: just to pass through @@ - curHadr->Set4Momentum(cH4Mom+tot4Mom); // modify 4-mom of the Last hadron - G4cout<<"*!* G4QE::FSI:E/M dif is added to theLast="<<tot4Mom+cH4Mom<<G4endl; - if(curHadr->GetBaryonNumber()>1) - { - G4QHadron* theNew = new G4QHadron(curHadr); // Make NewHadr of theLastHadr - theQHadrons.pop_back(); // theLastQHadron is excluded from theOUTPUT - delete curHadr;//!!When kill,DON'T forget to delete theLastQH as an inst.!! - EvaporateResidual(theNew); // Try to evaporate Residual - } - //throw G4QException("***G4QEnv::FSInteract: Energy/Momentum conservation"); - } - tot4Mom=tot4Mom-cor4M; - G4cout<<"---Warning---G4QE::FSI:En/MomCons.Error is corrected:"<<cor4M<<G4endl; - } -#endif - G4QHadron* prevHadr = theQHadrons[nHadr-2]; // GetPointer to Hadr prev to theLast - G4LorentzVector pH4Mom = prevHadr->Get4Momentum(); // 4-mom of thePreviousHadron - G4double cHM = curHadr->GetMass(); // Mass of the current hadron - G4double pHM = prevHadr->GetMass(); // Mass of the current hadron - tot4Mom+=cH4Mom+pH4Mom; - G4double totRM=tot4Mom.m(); - if(cHM+pHM<=totRM) // *** Make the final correction *** - { - if(!G4QHadron(tot4Mom).DecayIn2(pH4Mom,cH4Mom)) - { - G4cout<<"***G4QE::FSI:**Correction**tot4M="<<tot4Mom<<totRM<<">sM="<<cHM+cHM - <<G4endl; + G4cout<<"...G4QE::FSI:E/M conservation is corrected by proton"<<G4endl; +#endif + cor4M=G4LorentzVector(0.,0.,0.,mProt); + G4QHadron* theH = new G4QHadron(90001000,G4LorentzVector(0.,0.,0.,mProt)); + theQHadrons.push_back(theH); // (delete equivalent for the proton) + } + else if(fabs(re-mDeut)<.01) + { +#ifdef pdebug + G4cout<<"...G4QE::FSI:E/M conservation is corrected by deuteron"<<G4endl; +#endif + cor4M=G4LorentzVector(0.,0.,0.,mDeut); + G4QHadron* theH = new G4QHadron(90001001,G4LorentzVector(0.,0.,0.,mDeut)); + theQHadrons.push_back(theH); // (delete equivalent for the proton) + } + else if(fabs(re-mTrit)<.01) + { +#ifdef pdebug + G4cout<<"...G4QE::FSI:E/M conservation is corrected by tritium"<<G4endl; +#endif + cor4M=G4LorentzVector(0.,0.,0.,mTrit); + G4QHadron* theH = new G4QHadron(90001002,G4LorentzVector(0.,0.,0.,mTrit)); + theQHadrons.push_back(theH); // (delete equivalent for the proton) + } + else if(fabs(re-mHe3)<.01) + { +#ifdef pdebug + G4cout<<"...G4QE::FSI:E/M conservation is corrected by He3"<<G4endl; +#endif + cor4M=G4LorentzVector(0.,0.,0.,mHe3); + G4QHadron* theH = new G4QHadron(90002001,G4LorentzVector(0.,0.,0.,mHe3)); + theQHadrons.push_back(theH); // (delete equivalent for the proton) + } + else if(fabs(re-mAlph)<.01) + { +#ifdef pdebug + G4cout<<"...G4QE::FSI:E/M conservation is corrected by alpha"<<G4endl; +#endif + cor4M=G4LorentzVector(0.,0.,0.,mAlph); + G4QHadron* theH = new G4QHadron(90002002,G4LorentzVector(0.,0.,0.,mAlph)); + theQHadrons.push_back(theH); // (delete equivalent for the proton) + } + else if(fabs(re-mNeut-mNeut)<.01) + { #ifdef pdebug - throw G4QException("***G4QEnvironment::FSInteract:CORRECTION DecIn2 error"); + cor4M=G4LorentzVector(0.,0.,0.,mNeut+mNeut); #endif - } + G4cout<<"...G4QE::FSI:E/M conservation is corrected by 2 neutrons"<<G4endl; + G4QHadron* theH1 = new G4QHadron(90000001,G4LorentzVector(0.,0.,0.,mNeut)); + theQHadrons.push_back(theH1); // (delete equivalent for the proton) + G4QHadron* theH2 = new G4QHadron(90000001,G4LorentzVector(0.,0.,0.,mNeut)); + theQHadrons.push_back(theH2); // (delete equivalent for the proton) + } + else if(fabs(re-mProt-mProt)<.01) + { +#ifdef pdebug + G4cout<<"...G4QE::FSI:E/M conservation is corrected by 2 protons"<<G4endl; +#endif + cor4M=G4LorentzVector(0.,0.,0.,mProt+mProt); + G4QHadron* theH1 = new G4QHadron(90001000,G4LorentzVector(0.,0.,0.,mProt)); + theQHadrons.push_back(theH1); // (delete equivalent for the proton) + G4QHadron* theH2 = new G4QHadron(90001000,G4LorentzVector(0.,0.,0.,mProt)); + theQHadrons.push_back(theH2); // (delete equivalent for the proton) + } + else throw G4QException("***G4QEnv::FSInteract: Try heavier nuclei at rest"); + } + else if(sdm-misM >= -0.01) // on flight correction @!@ + { +#ifdef pdebug + G4cout<<"...G4QE::FSI:E/M conservation is corrected by ResidualNucl"<<G4endl; +#endif + G4QHadron* theH = new G4QHadron(mPDG,tot4Mom); // Create Residual Nucleus + cor4M=tot4Mom; // Complete correction + if(std::fabs(sdm-misM) <= 0.01) theQHadrons.push_back(theH); // As is + else EvaporateResidual(theH); // Evaporate Residual Nucleus + } + else + { + G4QHadron* prevHadr = theQHadrons[nHadr-2]; // GetPointer to Prev to theLast + G4LorentzVector pH4Mom = prevHadr->Get4Momentum(); // 4mom of thePrevHadron + G4double cHM = curHadr->GetMass(); // Mass of the current hadron + G4double pHM = prevHadr->GetMass(); // Mass of the previous hadron + tot4Mom+=cH4Mom+pH4Mom; + G4double totRM=tot4Mom.m(); + if(cHM+pHM<=totRM) // *** Make the final correction *** + { + if(!G4QHadron(tot4Mom).DecayIn2(pH4Mom,cH4Mom)) + { + G4cout<<"***G4QE::FSI:**Correction**tot4M="<<tot4Mom<<totRM<<">sM=" + <<cHM+cHM<<G4endl; +#ifdef pdebug + throw G4QException("***G4QEnvironment::FSInteract:CORRECT DecIn2 error"); +#endif + } #ifdef chdebug - G4cout<<"---Warning---G4QE::FSI:***CORRECTION IS DONE*** d="<<dem<<G4endl; -#endif - curHadr->Set4Momentum(cH4Mom); - prevHadr->Set4Momentum(pH4Mom); - } - else - { - G4cerr<<"*!*G4QE::FSI:NoCor "<<cHM<<"+"<<pHM<<"="<<cHM+pHM<<">"<<totRM<<G4endl; -#ifdef pdebug - throw G4QException("***G4QEnvironment::FSInteraction: TEMPORARY EXCEPTION"); -#endif - } - } -#ifdef pdebug - else G4cout<<"G4QE::FSI: Yes, it is. d="<<dem<<" for "<<nHadr<<" hadrons."<<G4endl; -#endif - } - } // End of the Back fusion LOOP - // >| 2 | 2 | 2 | 2 | 2 | 2 - old | 1. If gamma: add to sum4Mom - // |>0->sum| 3 | 3 | 3 | 3 | 3 - old | 2. Compare BN with the Last - // | 5 |>5 | 4 | 4 | 4 | 4 - old | 3. Swap if larger, del theLast - // | 0 | 0 |>0->sum| 5<-sum| 5->evap| 2 - new | 4. If the Last: add the sum - // | 4 | 4 | 5 | ex | |(0 - gamma?)| 5. Decay/Eporate the Last - // | 3 | ex | | 3 - new + G4cout<<"---Warning---G4QE::FSI:***CORRECTION IS DONE*** d="<<dem<<G4endl; +#endif + curHadr->Set4Momentum(cH4Mom); + prevHadr->Set4Momentum(pH4Mom); + } + else + { + G4cerr<<"*!*G4QE::FSI: "<<cHM<<"+"<<pHM<<"="<<cHM+pHM<<">"<<totRM<<G4endl; +#ifdef pdebug + throw G4QException("***G4QEnvironment::FSInteraction:TEMPORARY EXCEPTION"); +#endif + } + } + tot4Mom=tot4Mom-cor4M; +#ifdef pdebug + G4cout<<"+++Warning+++G4QE::FSI:En/MomCons.Error is corrected:"<<cor4M<<G4endl; +#endif + } + } +#ifdef pdebug + else G4cout<<"...G4QE::FSI:E/M conservation is good enough"<<G4endl; + G4cout<<"G4QE::FSI:EMCorrection by "<<theQHadrons.size()-nHadr<<" hadrons"<<G4endl; +#endif + break; + } // End of the last hadron E/M check + } // End of the Back fusion LOOP + // >| 2 | 2 | 2 | 2 | 2 | 2 - old | 1. If gamma: add to sum4Mom + // |>0->sum| 3 | 3 | 3 | 3 | 3 - old | 2. Compare BN with the Last + // | 5 |>5 | 4 | 4 | 4 | 4 - old | 3. Swap if larger, del theLast + // | 0 | 0 |>0->sum| 5<-sum| 5->evap| 2 - new | 4. If the Last: add the sum + // | 4 | 4 | 5 | ex | |(0 - gamma?)| 5. Decay/Eporate the Last + // | 3 | ex | | 3 - new #ifdef chdebug - // *** (3) Charge Control Sum Calculation for the Charge Conservation Check *** - ccContSum=0; // Intermediate ChargeControlSum - cbContSum=0; // Intermediate BaryonNumberControlSum - if(nHadr)for(unsigned ic3=0; ic3<nHadr; ic3++) if(!(theQHadrons[ic3]->GetNFragments())) - { - ccContSum+=theQHadrons[ic3]->GetCharge(); - cbContSum+=theQHadrons[ic3]->GetBaryonNumber(); - } - if(ccContSum-chContSum || cbContSum-bnContSum) - { - G4cout<<"*G4QE::FSI:(3) dC="<<ccContSum-chContSum<<",dB="<<cbContSum-bnContSum - <<G4endl; - //throw G4QException("G4QEnvironment::FSInteract: (3) Charge is not conserved"); - } - // *** -#endif - G4LorentzVector sum(0.,0.,0.,0.); - G4int gamCount=0; - nHadr=theQHadrons.size(); - G4bool frag=false; - if(nHadr>2)for(unsigned f=0; f<theQHadrons.size(); f++) //Check that there's a fragment - { - G4int fBN=theQHadrons[f]->GetBaryonNumber(); // Baryon number of the fragment -#ifdef pdebug - G4cout<<"G4QE::FSI:"<<f<<",PDG="<<theQHadrons[f]->GetPDGCode()<<",fBN="<<fBN<<G4endl; -#endif - if(fBN>1) frag=true; // The fragment with A>1 is found - } -#ifdef pdebug - G4cout<<"G4QE::FSI:===Before Gamma Compression===, nH="<<nHadr<<",frag="<<frag<<G4endl; + // *** (3) Charge Control Sum Calculation for the Charge Conservation Check *** + ccContSum=0; // Intermediate ChargeControlSum + cbContSum=0; // Intermediate BaryonNumberControlSum + if(nHadr)for(unsigned ic3=0; ic3<nHadr; ic3++) if(!(theQHadrons[ic3]->GetNFragments())) + { + ccContSum+=theQHadrons[ic3]->GetCharge(); + cbContSum+=theQHadrons[ic3]->GetBaryonNumber(); + } + if(ccContSum-chContSum || cbContSum-bnContSum) + { + G4cout<<"*G4QE::FSI:(3) dC="<<ccContSum-chContSum<<",dB="<<cbContSum-bnContSum + <<G4endl; + //throw G4QException("G4QEnvironment::FSInteract: (3) Charge is not conserved"); + } + // *** +#endif + G4LorentzVector sum(0.,0.,0.,0.); + G4int gamCount=0; + nHadr=theQHadrons.size(); + G4bool frag=false; + if(nHadr>2)for(unsigned f=0; f<theQHadrons.size(); f++) //Check that there's a fragment + { + G4int fBN=theQHadrons[f]->GetBaryonNumber(); // Baryon number of the fragment +#ifdef pdebug + G4cout<<"G4QE::FSI:"<<f<<",PDG="<<theQHadrons[f]->GetPDGCode()<<",fBN="<<fBN<<G4endl; +#endif + if(fBN>1) frag=true; // The fragment with A>1 is found + } +#ifdef pdebug + G4cout<<"G4QE::FSI:===Before Gamma Compression===, nH="<<nHadr<<",frag="<<frag<<G4endl; #endif if(nHadr>2 && frag) for(G4int h=nHadr-1; h>=0; h--)//Collect gammas & kill DecayedHadrs - { - G4QHadron* curHadr = theQHadrons[h]; // Get a pointer to the current Hadron - G4int hF = curHadr->GetNFragments(); - G4int hPDG = curHadr->GetPDGCode(); - if(hPDG==89999003||hPDG==90002999) - G4cout<<"---Warning---G4QEnv::FSI:nD-/pD++(1)="<<hPDG<<G4endl; + { + G4QHadron* curHadr = theQHadrons[h]; // Get a pointer to the current Hadron + G4int hF = curHadr->GetNFragments(); + G4int hPDG = curHadr->GetPDGCode(); + if(hPDG==89999003||hPDG==90002999) + G4cout<<"---Warning---G4QEnv::FSI:nD-/pD++(1)="<<hPDG<<G4endl; #ifdef pdebug G4cout<<"G4QE::FSI: h#"<<h<<", hPDG="<<hPDG<<", hNFrag="<<hF<<G4endl; #endif if(hF||hPDG==22) // It should be compressed { - G4QHadron* theLast = theQHadrons[theQHadrons.size()-1];//Get Ptr to the Last Hadron - if(hPDG==22) - { - sum+=curHadr->Get4Momentum(); // Add 4Mom of gamma to the "sum" - gamCount++; - } - if(h<static_cast<G4int>(theQHadrons.size())-1) // Need swap with the Last + G4QHadron* theLast = theQHadrons[theQHadrons.size()-1];//Get Ptr to the Last Hadron + if(hPDG==22) + { + sum+=curHadr->Get4Momentum(); // Add 4Mom of gamma to the "sum" + gamCount++; + } + if(h<static_cast<G4int>(theQHadrons.size())-1) // Need swap with the Last { - curHadr->SetNFragments(0); - curHadr->Set4Momentum(theLast->Get4Momentum()); - G4QPDGCode lQP=theLast->GetQPDG(); // The QPDG of the last - if(lQP.GetPDGCode()!=10) curHadr->SetQPDG(lQP); //CurHadr instead of LastHadr - else curHadr->SetQC(theLast->GetQC());// CurHadrPDG instead of LastHadrPDG + curHadr->SetNFragments(0); + curHadr->Set4Momentum(theLast->Get4Momentum()); + G4QPDGCode lQP=theLast->GetQPDG(); // The QPDG of the last + if(lQP.GetPDGCode()!=10) curHadr->SetQPDG(lQP); //CurHadr instead of LastHadr + else curHadr->SetQC(theLast->GetQC());// CurHadrPDG instead of LastHadrPDG #ifdef pdebug G4cout<<"G4QE::FSI: Exchange with the last is done"<<G4endl; #endif } - theQHadrons.pop_back(); // theLastQHadron is excluded from QHadrons - delete theLast;//!!When kill,DON'T forget to delete theLastQHadron as an instance!! - nHadr--; + theQHadrons.pop_back(); // theLastQHadron is excluded from QHadrons + delete theLast;//!!When kill,DON'T forget to delete theLastQHadron as an instance!! + nHadr--; #ifdef pdebug G4cout<<"G4QE::FSI: The last is compessed"<<G4endl; #endif - } - } + } + } #ifdef pdebug - G4cout<<"G4QE::FSI: nH="<<nHadr<<"="<<theQHadrons.size()<<", sum="<<sum<<G4endl; + G4cout<<"G4QE::FSI: nH="<<nHadr<<"="<<theQHadrons.size()<<", sum="<<sum<<G4endl; #endif #ifdef chdebug - // *** (4) Charge Control Sum Calculation for the Charge Conservation Check *** - ccContSum=0; // Intermediate ChargeControlSum - cbContSum=0; // Intermediate BaryonNumberControlSum - if(nHadr)for(unsigned ic4=0; ic4<nHadr; ic4++) if(!(theQHadrons[ic4]->GetNFragments())) - { - ccContSum+=theQHadrons[ic4]->GetCharge(); - cbContSum+=theQHadrons[ic4]->GetBaryonNumber(); + // *** (4) Charge Control Sum Calculation for the Charge Conservation Check *** + ccContSum=0; // Intermediate ChargeControlSum + cbContSum=0; // Intermediate BaryonNumberControlSum + if(nHadr)for(unsigned ic4=0; ic4<nHadr; ic4++) if(!(theQHadrons[ic4]->GetNFragments())) + { + ccContSum+=theQHadrons[ic4]->GetCharge(); + cbContSum+=theQHadrons[ic4]->GetBaryonNumber(); } - if(ccContSum-chContSum || cbContSum-bnContSum) - { - G4cout<<"*G4QE::FSI:(4) dC="<<ccContSum-chContSum<<",dB="<<cbContSum-bnContSum - <<G4endl; - //throw G4QException("G4QEnvironment::FSInteract: (4) Charge is not conserved"); - } - // *** + if(ccContSum-chContSum || cbContSum-bnContSum) + { + G4cout<<"*G4QE::FSI:(4) dC="<<ccContSum-chContSum<<",dB="<<cbContSum-bnContSum + <<G4endl; + //throw G4QException("G4QEnvironment::FSInteract: (4) Charge is not conserved"); + } + // *** #endif - if(nHadr>1)for(unsigned hdr=0; hdr<theQHadrons.size()-1; hdr++)//Ord:theBigestIstheLast - { + if(nHadr>1)for(unsigned hdr=0; hdr<theQHadrons.size()-1; hdr++)//Ord:theBigestIstheLast + { #ifdef pdebug - G4cout<<"G4QE::FSI:ORD,h="<<hdr<<"<"<<nHadr<<",hPDG="<<theQHadrons[hdr]->GetPDGCode() - <<G4endl; + G4cout<<"G4QE::FSI:ORD,h="<<hdr<<"<"<<nHadr<<",hPDG="<<theQHadrons[hdr]->GetPDGCode() + <<G4endl; #endif - G4QHadron* curHadr = theQHadrons[hdr]; // Get a pointer to the current Hadron - G4QHadron* theLast = theQHadrons[theQHadrons.size()-1]; //Get Ptr to the Last Hadron - G4int hB = curHadr->GetBaryonNumber(); - G4int lB = theLast->GetBaryonNumber(); + G4QHadron* curHadr = theQHadrons[hdr]; // Get a pointer to the current Hadron + G4QHadron* theLast = theQHadrons[theQHadrons.size()-1]; //Get Ptr to the Last Hadron + G4int hB = curHadr->GetBaryonNumber(); + G4int lB = theLast->GetBaryonNumber(); #ifdef pdebug - G4cout<<"G4QE::FSI:hBN="<<hB<<"<lBN="<<lB<<",lstPDG="<<theLast->GetPDGCode()<<G4endl; + G4cout<<"G4QE::FSI:hBN="<<hB<<"<lBN="<<lB<<",lstPDG="<<theLast->GetPDGCode()<<G4endl; #endif - if(lB<hB) // Must be swapped + if(lB<hB) // Must be swapped { - G4QPDGCode hQPDG = curHadr->GetQPDG(); - G4LorentzVector h4m= curHadr->Get4Momentum(); - curHadr->Set4Momentum(theLast->Get4Momentum()); - G4QPDGCode lQP=theLast->GetQPDG(); // The QPDG of the last - if(lQP.GetPDGCode()!=10) curHadr->SetQPDG(lQP); //CurHadr instead of LastHadr - else curHadr->SetQC(theLast->GetQC());// CurHadrPDG instead of LastHadrPDG - theLast->Set4Momentum(h4m); - theLast->SetQPDG(hQPDG); + G4QPDGCode hQPDG = curHadr->GetQPDG(); + G4LorentzVector h4m= curHadr->Get4Momentum(); + curHadr->Set4Momentum(theLast->Get4Momentum()); + G4QPDGCode lQP=theLast->GetQPDG(); // The QPDG of the last + if(lQP.GetPDGCode()!=10) curHadr->SetQPDG(lQP); //CurHadr instead of LastHadr + else curHadr->SetQC(theLast->GetQC());// CurHadrPDG instead of LastHadrPDG + theLast->Set4Momentum(h4m); + theLast->SetQPDG(hQPDG); } - } - nHadr=theQHadrons.size(); + } + nHadr=theQHadrons.size(); #ifdef chdebug - // *** (5) Charge Control Sum Calculation for the Charge Conservation Check *** - ccContSum=0; // Intermediate ChargeControlSum - cbContSum=0; // Intermediate BaryonNumberControlSum - if(nHadr)for(unsigned ic5=0; ic5<nHadr; ic5++) if(!(theQHadrons[ic5]->GetNFragments())) - { - ccContSum+=theQHadrons[ic5]->GetCharge(); - cbContSum+=theQHadrons[ic5]->GetBaryonNumber(); - } - if(ccContSum-chContSum || cbContSum-bnContSum) - { - G4cout<<"*G4QE::FSI:(5) dC="<<ccContSum-chContSum<<",dB="<<cbContSum-bnContSum - <<G4endl; - //throw G4QException("G4QEnvironment::FSInteract: (5) Charge is not conserved"); - } - // *** -#endif - if(gamCount) - { - G4QHadron* theLast = theQHadrons[nHadr-1];// Get a pointer to the Last Hadron - if(theLast->GetBaryonNumber()>1) // "Absorb photons & evaporate/decay" case - { - G4QHadron* theNew = new G4QHadron(theLast); // Make New Hadron of the Last Hadron + // *** (5) Charge Control Sum Calculation for the Charge Conservation Check *** + ccContSum=0; // Intermediate ChargeControlSum + cbContSum=0; // Intermediate BaryonNumberControlSum + if(nHadr)for(unsigned ic5=0; ic5<nHadr; ic5++) if(!(theQHadrons[ic5]->GetNFragments())) + { + ccContSum+=theQHadrons[ic5]->GetCharge(); + cbContSum+=theQHadrons[ic5]->GetBaryonNumber(); + } + if(ccContSum-chContSum || cbContSum-bnContSum) + { + G4cout<<"*G4QE::FSI:(5) dC="<<ccContSum-chContSum<<",dB="<<cbContSum-bnContSum + <<G4endl; + //throw G4QException("G4QEnvironment::FSInteract: (5) Charge is not conserved"); + } + // *** +#endif + if(gamCount) + { + G4QHadron* theLast = theQHadrons[nHadr-1];// Get a pointer to the Last Hadron + if(theLast->GetBaryonNumber()>1) // "Absorb photons & evaporate/decay" case + { + G4QHadron* theNew = new G4QHadron(theLast); // Make New Hadron of the Last Hadron #ifdef ffdebug - G4cout<<"G4QE::FSI:BeforeLastSub,n="<<nHadr<<",PDG="<<theNew->GetPDGCode()<<G4endl; + G4cout<<"G4QE::FSI:BeforeLastSub,n="<<nHadr<<",PDG="<<theNew->GetPDGCode()<<G4endl; #endif - theQHadrons.pop_back(); // the last QHadron is excluded from OUTPUT - delete theLast;//*!When kill,DON'T forget to delete theLastQHadron as an instance!* - nHadr--; // TheLastHadron is only virtually exists now - G4int newPDG=theNew->GetPDGCode(); - G4LorentzVector new4M=theNew->Get4Momentum(); // 4-mom of the fragment + theQHadrons.pop_back(); // the last QHadron is excluded from OUTPUT + delete theLast;//*!When kill,DON'T forget to delete theLastQHadron as an instance!* + nHadr--; // TheLastHadron is only virtually exists now + G4int newPDG=theNew->GetPDGCode(); + G4LorentzVector new4M=theNew->Get4Momentum(); // 4-mom of the fragment #ifdef pdebug - G4cout<<"G4QE::FSI:gSum4M="<<sum<<" is added to "<<new4M<<", PDG="<<newPDG<<G4endl; + G4cout<<"G4QE::FSI:gSum4M="<<sum<<" is added to "<<new4M<<", PDG="<<newPDG<<G4endl; #endif - G4LorentzVector exRes4M=new4M+sum; //Icrease 4Mom of theLast by "sum of gammas" - G4QNucleus exResidN(exRes4M,newPDG); - //G4double mGamEva=2700.; // @@Threshold for the evaporation - G4double mGamEva=1700.; // @@Threshold for the evaporation + G4LorentzVector exRes4M=new4M+sum; //Icrease 4Mom of theLast by "sum of gammas" + G4QNucleus exResidN(exRes4M,newPDG); + //G4double mGamEva=2700.; // @@Threshold for the evaporation + G4double mGamEva=1700.; // @@Threshold for the evaporation if(exResidN.SplitBaryon()) //if(2>3) //CloseTheFirstPriorityResN+gamSumEvaporation { - theNew->Set4Momentum(exRes4M); // Icrease 4Mom of theLast by "sum" to Evapor + theNew->Set4Momentum(exRes4M); // Icrease 4Mom of theLast by "sum" to Evapor #ifdef ffdebug - G4cout<<"G4QE::FSI:BeforeE(1),n="<<nHadr<<",nPDG="<<theNew->GetPDGCode()<<G4endl; + G4cout<<"G4QE::FSI:BeforeE(1),n="<<nHadr<<",nPDG="<<theNew->GetPDGCode()<<G4endl; #endif - EvaporateResidual(theNew); // Try to evaporate the Nucl.(@@DecDib)(d.e.) - } - else if(theNew->GetPDGCode()==90002002&&exRes4M.m()>mHe3+mNeut&&G4UniformRand()>.5) + EvaporateResidual(theNew); // Try to evaporate the Nucl.(@@DecDib)(d.e.) + } + else if(theNew->GetPDGCode()==90002002&&exRes4M.m()>mHe3+mNeut&&G4UniformRand()>.5) { - theNew->Set4Momentum(exRes4M); // Icrease 4Mom of theLast by "sum" to Evapor - G4LorentzVector n4M(0.,0.,0.,mNeut); - G4LorentzVector h4M(0.,0.,0.,mHe3); - if(!theNew->DecayIn2(n4M,h4M)) - { - G4cerr<<"***G4QE::FSI:GamSup, tM="<<exRes4M.m()<<"<n+He3="<<mNeut+mHe3<<G4endl; - throw G4QException("***G4QEnvironment::FSInter:GamSUPPRES DecIn2(n+He3)error"); - } + theNew->Set4Momentum(exRes4M); // Icrease 4Mom of theLast by "sum" to Evapor + G4LorentzVector n4M(0.,0.,0.,mNeut); + G4LorentzVector h4M(0.,0.,0.,mHe3); + if(!theNew->DecayIn2(n4M,h4M)) + { + G4cerr<<"***G4QE::FSI:GamSup, tM="<<exRes4M.m()<<"<n+He3="<<mNeut+mHe3<<G4endl; + throw G4QException("***G4QEnvironment::FSInter:GamSUPPRES DecIn2(n+He3)error"); + } #ifdef ffdebug - G4cout<<"G4QE::FSI:Gamma Suppression succided, n="<<n4M<<", He3="<<h4M<<G4endl; -#endif - theNew->Set4Momentum(n4M); - theNew->SetQPDG(nQPDG); // convert the alpha to the neutron - theQHadrons.push_back(theNew); // (delete equivalent for theHad=neutron) - G4QHadron* theHe3 = new G4QHadron(90002001,h4M);// Make a New Hadr for the He3 - theQHadrons.push_back(theHe3); // (delete equivalent for the proton) - } + G4cout<<"G4QE::FSI:Gamma Suppression succided, n="<<n4M<<", He3="<<h4M<<G4endl; +#endif + theNew->Set4Momentum(n4M); + theNew->SetQPDG(nQPDG); // convert the alpha to the neutron + theQHadrons.push_back(theNew); // (delete equivalent for theHad=neutron) + G4QHadron* theHe3 = new G4QHadron(90002001,h4M);// Make a New Hadr for the He3 + theQHadrons.push_back(theHe3); // (delete equivalent for the proton) + } else if(nHadr) // Get LastHadrBefResNuc, absorb gam & decay //else if(2>3) // Close the pair absorbtion of gamma { - if(nHadr>1)for(unsigned sh=0; sh<theQHadrons.size()-1; sh++)//Ord:MinE is TheLast - { - G4QHadron* curHadr = theQHadrons[sh];// Get a pointer to the current Hadron - G4QHadron* thePrev = theQHadrons[theQHadrons.size()-1]; //GetPtr to theLastHadr - G4LorentzVector h4M= curHadr->Get4Momentum(); - G4LorentzVector l4M= thePrev->Get4Momentum(); + if(nHadr>1)for(unsigned sh=0; sh<theQHadrons.size()-1; sh++)//Ord:MinE is TheLast + { + G4QHadron* curHadr = theQHadrons[sh];// Get a pointer to the current Hadron + G4QHadron* thePrev = theQHadrons[theQHadrons.size()-1]; //GetPtr to theLastHadr + G4LorentzVector h4M= curHadr->Get4Momentum(); + G4LorentzVector l4M= thePrev->Get4Momentum(); #ifdef ffdebug - G4cout<<"G4QE::FSI:SO,h="<<sh<<"<"<<nHadr<<",PDG/LV="<<curHadr->GetPDGCode() - <<h4M<<G4endl; + G4cout<<"G4QE::FSI:SO,h="<<sh<<"<"<<nHadr<<",PDG/LV="<<curHadr->GetPDGCode() + <<h4M<<G4endl; #endif - G4double hM=h4M.m(); - G4double hT=h4M.e()-hM; - G4double lT=l4M.e()-l4M.m(); + G4double hM=h4M.m(); + G4double hT=h4M.e()-hM; + G4double lT=l4M.e()-l4M.m(); #ifdef ffdebug - G4cout<<"G4QE::FSI:hT="<<hT<<"<T="<<lT<<".PDG="<<thePrev->GetPDGCode()<<G4endl; + G4cout<<"G4QE::FSI:hT="<<hT<<"<T="<<lT<<".PDG="<<thePrev->GetPDGCode()<<G4endl; #endif - if(hM>mGamEva&&lT>hT) // Must be swapped as the current is smaller + if(hM>mGamEva&&lT>hT) // Must be swapped as the current is smaller { - G4QPDGCode hQPDG = curHadr->GetQPDG(); - curHadr->Set4Momentum(l4M); - G4QPDGCode lQP=thePrev->GetQPDG(); // The QPDG of the previous - if(lQP.GetPDGCode()!=10) curHadr->SetQPDG(lQP); //CurHadr instead of PrevHadr - else curHadr->SetQC(thePrev->GetQC());// CurHadrPDG instead of PrevHadrPDG - thePrev->Set4Momentum(h4M); - thePrev->SetQPDG(hQPDG); + G4QPDGCode hQPDG = curHadr->GetQPDG(); + curHadr->Set4Momentum(l4M); + G4QPDGCode lQP=thePrev->GetQPDG(); // The QPDG of the previous + if(lQP.GetPDGCode()!=10) curHadr->SetQPDG(lQP); //CurHadr instead of PrevHadr + else curHadr->SetQC(thePrev->GetQC());// CurHadrPDG instead of PrevHadrPDG + thePrev->Set4Momentum(h4M); + thePrev->SetQPDG(hQPDG); } - } - nHadr=theQHadrons.size(); - G4QHadron* thePrev = theQHadrons[nHadr-1]; // GetPtr to the BeforeResidNuclHadron - if(thePrev->Get4Momentum().m()>mGamEva) - { - G4QHadron* theHad = new G4QHadron(thePrev);// MakeNewHadr of theBeforeResNuclH + } + nHadr=theQHadrons.size(); + G4QHadron* thePrev = theQHadrons[nHadr-1]; // GetPtr to the BeforeResidNuclHadron + if(thePrev->Get4Momentum().m()>mGamEva) + { + G4QHadron* theHad = new G4QHadron(thePrev);// MakeNewHadr of theBeforeResNuclH #ifdef ffdebug - G4cout<<"G4QE::FSI:BeforeResidNucHadr nH="<<nHadr<<",hPDG=" - <<theHad->GetPDGCode()<<G4endl; -#endif - theQHadrons.pop_back(); // theLastQHadron excluded from OUTPUT - delete thePrev;//*!When kill,DON'T forget to delete theLastQHadr asAnInstance!* - G4LorentzVector n4M=theNew->Get4Momentum();// 4Mom of theLast (biggest nucleus) - G4LorentzVector h4M=theHad->Get4Momentum();// 4Mom of the previous Hadron in HV - G4LorentzVector dh4M=exRes4M+h4M; // 4Mom of LH+PH+sum(gam) for theDecay - G4double dhM=dh4M.m(); // M of LH+PH+sum(gammas) for theDecay - if(theHad->GetPDGCode()==90001001&&dhM>n4M.m()+mProt+mNeut&&G4UniformRand()>.5) + G4cout<<"G4QE::FSI:BeforeResidNucHadr nH="<<nHadr<<",hPDG=" + <<theHad->GetPDGCode()<<G4endl; +#endif + theQHadrons.pop_back(); // theLastQHadron excluded from OUTPUT + delete thePrev;//*!When kill,DON'T forget to delete theLastQHadr asAnInstance!* + G4LorentzVector n4M=theNew->Get4Momentum();// 4Mom of theLast (biggest nucleus) + G4LorentzVector h4M=theHad->Get4Momentum();// 4Mom of the previous Hadron in HV + G4LorentzVector dh4M=exRes4M+h4M; // 4Mom of LH+PH+sum(gam) for theDecay + G4double dhM=dh4M.m(); // M of LH+PH+sum(gammas) for theDecay + if(theHad->GetPDGCode()==90001001&&dhM>n4M.m()+mProt+mNeut&&G4UniformRand()>.5) //if(2>3) // Close Possibility toSplitDeuteron - { - G4double nuM=n4M.m(); - h4M=G4LorentzVector(0.,0.,0.,mNeut); - G4LorentzVector p4M(0.,0.,0.,mProt); - G4double sum=nuM+mNeut+mProt; - if(fabs(dhM-sum)<eps) - { - n4M=dh4M*(nuM/sum); - h4M=dh4M*(mNeut/sum); - p4M=dh4M*(mProt/sum); - } - else if(dhM<sum || !G4QHadron(dh4M).DecayIn3(n4M,h4M,p4M)) - { - G4cerr<<"***G4QE::FSI:GamSupByD,M="<<dhM<<"<A+p+n="<<sum<<G4endl; - throw G4QException("G4QEnviron::FSInt:Gamma SUPPRESSION by D DecIn3error"); - } + { + G4double nuM=n4M.m(); + h4M=G4LorentzVector(0.,0.,0.,mNeut); + G4LorentzVector p4M(0.,0.,0.,mProt); + G4double sum=nuM+mNeut+mProt; + if(fabs(dhM-sum)<eps) + { + n4M=dh4M*(nuM/sum); + h4M=dh4M*(mNeut/sum); + p4M=dh4M*(mProt/sum); + } + else if(dhM<sum || !G4QHadron(dh4M).DecayIn3(n4M,h4M,p4M)) + { + G4cerr<<"***G4QE::FSI:GamSupByD,M="<<dhM<<"<A+p+n="<<sum<<G4endl; + throw G4QException("G4QEnviron::FSInt:Gamma SUPPRESSION by D DecIn3error"); + } #ifdef ffdebug - G4cout<<"G4QE::FSI:GamSuppression by d succided,h="<<h4M<<",A="<<n4M<<G4endl; -#endif - theHad->Set4Momentum(h4M); - theHad->SetQPDG(nQPDG); // convert the deuteron to the neutron - theQHadrons.push_back(theHad); // (delete equivalent for theHad=neutron) - G4QHadron* theProt = new G4QHadron(90001000,p4M);// Make NewHadr for Proton - theQHadrons.push_back(theProt); // (delete equivalent for the proton) - theNew->Set4Momentum(n4M); - EvaporateResidual(theNew); // TryToEvaporate theResNuc onceMore(del.eq.) - } - else - { - if(!G4QHadron(dh4M).DecayIn2(n4M,h4M)) - { - G4cerr<<"*G4QE::FSI:GamSup,M="<<dh4M.m()<<"<A+h="<<n4M.m()+h4M.m()<<G4endl; - throw G4QException("G4QEnviron::FSInt:GamSUPPRESSION (3) DecIn2 error"); - } + G4cout<<"G4QE::FSI:GamSuppression by d succided,h="<<h4M<<",A="<<n4M<<G4endl; +#endif + theHad->Set4Momentum(h4M); + theHad->SetQPDG(nQPDG); // convert the deuteron to the neutron + theQHadrons.push_back(theHad); // (delete equivalent for theHad=neutron) + G4QHadron* theProt = new G4QHadron(90001000,p4M);// Make NewHadr for Proton + theQHadrons.push_back(theProt); // (delete equivalent for the proton) + theNew->Set4Momentum(n4M); + EvaporateResidual(theNew); // TryToEvaporate theResNuc onceMore(del.eq.) + } + else + { + if(!G4QHadron(dh4M).DecayIn2(n4M,h4M)) + { + G4cerr<<"*G4QE::FSI:GamSup,M="<<dh4M.m()<<"<A+h="<<n4M.m()+h4M.m()<<G4endl; + throw G4QException("G4QEnviron::FSInt:GamSUPPRESSION (3) DecIn2 error"); + } #ifdef ffdebug - G4cout<<"G4QE::FSI:Gamma Suppression succided, h="<<h4M<<", A="<<n4M<<G4endl; + G4cout<<"G4QE::FSI:Gamma Suppression succided, h="<<h4M<<", A="<<n4M<<G4endl; #endif - theHad->Set4Momentum(h4M); - theQHadrons.push_back(theHad); // (delete equivalent for theHad) - theNew->Set4Momentum(n4M); - EvaporateResidual(theNew); // Try to evaporate theResNuc (del.eq.) - } + theHad->Set4Momentum(h4M); + theQHadrons.push_back(theHad); // (delete equivalent for theHad) + theNew->Set4Momentum(n4M); + EvaporateResidual(theNew); // Try to evaporate theResNuc (del.eq.) + } } - else + else { - theNew->Set4Momentum(exRes4M); // Icrease 4MomOfTheLast by "sum" for Evapor + theNew->Set4Momentum(exRes4M); // Icrease 4MomOfTheLast by "sum" for Evapor #ifdef ffdebug - G4cout<<"G4QE::FSI:BeforE(2),n="<<nHadr<<",PDG="<<theNew->GetPDGCode()<<G4endl; + G4cout<<"G4QE::FSI:BeforE(2),n="<<nHadr<<",PDG="<<theNew->GetPDGCode()<<G4endl; #endif - EvaporateResidual(theNew); // Try to evaporate the Nucl.(@@DecDib)(delete eq.) - } - } + EvaporateResidual(theNew); // Try to evaporate the Nucl.(@@DecDib)(delete eq.) + } + } else // Absorb gammas to theResidNucleus and evaporateIt { - theNew->Set4Momentum(exRes4M);// Icrease 4Mom of the Last by the "sum" for Evap - EvaporateResidual(theNew); // Try to evaporate the Nucl.(@@DecDib)(delete eq.) + theNew->Set4Momentum(exRes4M);// Icrease 4Mom of the Last by the "sum" for Evap + EvaporateResidual(theNew); // Try to evaporate the Nucl.(@@DecDib)(delete eq.) #ifdef ffdebug - G4cout<<"G4QE::FSI:Bef.E(3),n="<<nHadr<<",PDG="<<newPDG<<",4M="<<exRes4M<<G4endl; - unsigned nHN=theQHadrons.size(); - G4cout<<"G4QE::FSI:AfterEvaporation: nNew="<<nHN<<G4endl; - if(nHN>nHadr)for(unsigned idp=nHadr; idp<nHN; idp++) + G4cout<<"G4QE::FSI:Bef.E(3),n="<<nHadr<<",PDG="<<newPDG<<",4M="<<exRes4M<<G4endl; + unsigned nHN=theQHadrons.size(); + G4cout<<"G4QE::FSI:AfterEvaporation: nNew="<<nHN<<G4endl; + if(nHN>nHadr)for(unsigned idp=nHadr; idp<nHN; idp++) G4cout<<"G4QE::FSI: h#"<<idp<<", PDG="<<theQHadrons[idp]->GetPDGCode()<<G4endl; #endif - } - //G4int onH=nHadr; - nHadr=theQHadrons.size(); - //if(nHadr>onH) bfAct=true; - } // End of "the last is the nucleus" case - } // End of "There are gammas to assimilate" - } // End of the While-LOOOP for the Back Fusion - tot4Mom=tmp4Mom; // Recover tot4Mom after the "En/Mom conservation" reduction - // Final attempt to alpha-decay the residual nucleus, suppressing the gamma =========== - G4int gamcnt=0; // Counter of the residual gammas at this level - nHadr=theQHadrons.size(); - unsigned maxB=nHadr-1; + } + //G4int onH=nHadr; + nHadr=theQHadrons.size(); + //if(nHadr>onH) bfAct=true; + } // End of "the last is the nucleus" case + } // End of "There are gammas to assimilate" + } // End of the While-LOOOP for the Back Fusion + tot4Mom=tmp4Mom; // Recover tot4Mom after the "En/Mom conservation" reduction + // Final attempt to alpha-decay the residual nucleus, suppressing the gamma =========== + G4int gamcnt=0; // Counter of the residual gammas at this level + nHadr=theQHadrons.size(); + unsigned maxB=nHadr-1; #ifdef chdebug - // *** (6) Charge Control Sum Calculation for the Charge Conservation Check *** - ccContSum=0; // Intermediate ChargeControlSum - cbContSum=0; // Intermediate BaryonNumberControlSum - if(nHadr)for(unsigned ic6=0; ic6<nHadr; ic6++) if(!(theQHadrons[ic6]->GetNFragments())) - { - ccContSum+=theQHadrons[ic6]->GetCharge(); - cbContSum+=theQHadrons[ic6]->GetBaryonNumber(); - } - if(ccContSum-chContSum || cbContSum-bnContSum) - { - G4cout<<"*G4QE::FSI:(6) dC="<<ccContSum-chContSum<<",dB="<<cbContSum-bnContSum - <<G4endl; - //throw G4QException("G4QEnvironment::FSInteract: (6) Charge is not conserved"); - } - // *** -#endif - lHadr=theQHadrons[maxB]->GetBaryonNumber(); - G4int tHadr=lHadr; // Total Baryon number - if(nHadr>1)for(unsigned ipo=0; ipo<theQHadrons.size()-1; ipo++) // Find BiggestNuclFragm - { - G4int hPDG = theQHadrons[ipo]->GetPDGCode(); - if(hPDG==22) gamcnt++; - else - { - G4int hBN = theQHadrons[ipo]->GetBaryonNumber(); - tHadr+=hBN; -#ifdef pdebug - G4cout<<"G4QE::FSI:h#"<<ipo<<":hPDG="<<hPDG<<",hBN="<<hBN<<",nH="<<theQHadrons.size() - <<G4endl; -#endif - if(hBN>lHadr) - { - lHadr=hBN; - maxB=ipo; - } // the current biggest nuclear fragment + // *** (6) Charge Control Sum Calculation for the Charge Conservation Check *** + ccContSum=0; // Intermediate ChargeControlSum + cbContSum=0; // Intermediate BaryonNumberControlSum + if(nHadr)for(unsigned ic6=0; ic6<nHadr; ic6++) if(!(theQHadrons[ic6]->GetNFragments())) + { + ccContSum+=theQHadrons[ic6]->GetCharge(); + cbContSum+=theQHadrons[ic6]->GetBaryonNumber(); + } + if(ccContSum-chContSum || cbContSum-bnContSum) + { + G4cout<<"*G4QE::FSI:(6) dC="<<ccContSum-chContSum<<",dB="<<cbContSum-bnContSum + <<G4endl; + //throw G4QException("G4QEnvironment::FSInteract: (6) Charge is not conserved"); + } + // *** +#endif + lHadr=theQHadrons[maxB]->GetBaryonNumber(); + G4int tHadr=lHadr; // Total Baryon number + if(nHadr>1)for(unsigned ipo=0; ipo<theQHadrons.size()-1; ipo++) // Find BiggestNuclFragm + { + G4int hPDG = theQHadrons[ipo]->GetPDGCode(); + if(hPDG==22) gamcnt++; + else + { + G4int hBN = theQHadrons[ipo]->GetBaryonNumber(); + tHadr+=hBN; +#ifdef pdebug + G4cout<<"G4QE::FSI:h#"<<ipo<<":hPDG="<<hPDG<<",hBN="<<hBN<<",nH="<<theQHadrons.size() + <<G4endl; +#endif + if(hBN>lHadr) + { + lHadr=hBN; + maxB=ipo; + } // the current biggest nuclear fragment } - } + } #ifdef pdebug - G4cout<<"G4QE::FSI:max#"<<maxB<<",lB="<<lHadr<<",tBN="<<tHadr<<",gam="<<gamcnt<<G4endl; + G4cout<<"G4QE::FSI:max#"<<maxB<<",lB="<<lHadr<<",tBN="<<tHadr<<",gam="<<gamcnt<<G4endl; #endif - nHadr=theQHadrons.size(); + nHadr=theQHadrons.size(); #ifdef chdebug - // *** (7) Charge Control Sum Calculation for the Charge Conservation Check *** - ccContSum=0; // Intermediate ChargeControlSum - cbContSum=0; // Intermediate BaryonNumberControlSum - if(nHadr)for(unsigned ic7=0; ic7<nHadr; ic7++) if(!(theQHadrons[ic7]->GetNFragments())) - { - ccContSum+=theQHadrons[ic7]->GetCharge(); - cbContSum+=theQHadrons[ic7]->GetBaryonNumber(); - } - if(ccContSum-chContSum || cbContSum-bnContSum) - { - G4cout<<"*G4QE::FSI:(7) dC="<<ccContSum-chContSum<<",dB="<<cbContSum-bnContSum - <<G4endl; - //throw G4QException("G4QEnvironment::FSInteract: (7) Charge is not conserved"); - } - // *** -#endif - if(gamcnt&&tHadr>1) // Only if there are gammas one should act - { - if(maxB+1<nHadr) // If maxB<Last, swap theCurH and theLastH - { - G4QHadron* theCurr = theQHadrons[maxB]; // Pointer to the Current Hadron - G4QHadron* theLast = theQHadrons[nHadr-1];// Pointer to the Last Hadron - G4QHadron* curHadr = new G4QHadron(theCurr);//Remember theCurrentHadron to put on top - G4QPDGCode lQP=theLast->GetQPDG(); // The QPDG of the last - if(lQP.GetPDGCode()!=10) theCurr->SetQPDG(lQP); //CurHadr instead of PrevHadr - else theCurr->SetQC(theLast->GetQC()); // CurHadrPDG instead of LastHadrPDG - theCurr->Set4Momentum(theLast->Get4Momentum()); // ... continue substitution - theQHadrons.pop_back(); // Rnt to theLastHadron is excluded from HV - delete theLast;//*!!When kill,DON'T forget to delete the last QHadron as an inst. !!* - theQHadrons.push_back(curHadr); // The current Hadron, which is the Biggest - } - nHadr=theQHadrons.size(); // Must be the same - // Now it is necessary to absorb the photon (photons) and try to radiate alpha or evap. - G4LorentzVector gamSum(0.,0.,0.,0.); - if(nHadr>1)for(unsigned gp=0; gp<nHadr-1; gp++)// Find Gumma, remember and kill - { - G4QHadron* theCurr = theQHadrons[gp]; // Pointer to the Current Hadron - G4int hPDG=theCurr->GetPDGCode(); -#ifdef pdebug - G4cout<<"G4QE::FSI:gp#"<<gp<<", PDG="<<hPDG<<", is found"<<G4endl; -#endif - if(hPDG==22) // Photon is foun on the "gp" position + // *** (7) Charge Control Sum Calculation for the Charge Conservation Check *** + ccContSum=0; // Intermediate ChargeControlSum + cbContSum=0; // Intermediate BaryonNumberControlSum + if(nHadr)for(unsigned ic7=0; ic7<nHadr; ic7++) if(!(theQHadrons[ic7]->GetNFragments())) + { + ccContSum+=theQHadrons[ic7]->GetCharge(); + cbContSum+=theQHadrons[ic7]->GetBaryonNumber(); + } + if(ccContSum-chContSum || cbContSum-bnContSum) + { + G4cout<<"*G4QE::FSI:(7) dC="<<ccContSum-chContSum<<",dB="<<cbContSum-bnContSum + <<G4endl; + //throw G4QException("G4QEnvironment::FSInteract: (7) Charge is not conserved"); + } + // *** +#endif + if(gamcnt&&tHadr>1) // Only if there are gammas one should act + { + if(maxB+1<nHadr) // If maxB<Last, swap theCurH and theLastH + { + G4QHadron* theCurr = theQHadrons[maxB]; // Pointer to the Current Hadron + G4QHadron* theLast = theQHadrons[nHadr-1];// Pointer to the Last Hadron + G4QHadron* curHadr = new G4QHadron(theCurr);//Remember theCurrentHadron to put on top + G4QPDGCode lQP=theLast->GetQPDG(); // The QPDG of the last + if(lQP.GetPDGCode()!=10) theCurr->SetQPDG(lQP); //CurHadr instead of PrevHadr + else theCurr->SetQC(theLast->GetQC()); // CurHadrPDG instead of LastHadrPDG + theCurr->Set4Momentum(theLast->Get4Momentum()); // ... continue substitution + theQHadrons.pop_back(); // Rnt to theLastHadron is excluded from HV + delete theLast;//*!!When kill,DON'T forget to delete the last QHadron as an inst. !!* + theQHadrons.push_back(curHadr); // The current Hadron, which is the Biggest + } + nHadr=theQHadrons.size(); // Must be the same + // Now it is necessary to absorb the photon (photons) and try to radiate alpha or evap. + G4LorentzVector gamSum(0.,0.,0.,0.); + if(nHadr>1)for(unsigned gp=0; gp<nHadr-1; gp++)// Find Gumma, remember and kill + { + G4QHadron* theCurr = theQHadrons[gp]; // Pointer to the Current Hadron + G4int hPDG=theCurr->GetPDGCode(); +#ifdef pdebug + G4cout<<"G4QE::FSI:gp#"<<gp<<", PDG="<<hPDG<<", is found"<<G4endl; +#endif + if(hPDG==22) // Photon is foun on the "gp" position { - gamSum=gamSum+theCurr->Get4Momentum(); // Accumulate the 4Momenta of the photon - unsigned nLast=nHadr-1; // position of theLastHadron (gp<nHadr-1) - G4QHadron* theLast = theQHadrons[nLast]; // Pointer to the Last Hadron - while(nLast>gp && theLast->GetPDGCode()==22) // "TheLast is a photon too" LOOP + gamSum=gamSum+theCurr->Get4Momentum(); // Accumulate the 4Momenta of the photon + unsigned nLast=nHadr-1; // position of theLastHadron (gp<nHadr-1) + G4QHadron* theLast = theQHadrons[nLast]; // Pointer to the Last Hadron + while(nLast>gp && theLast->GetPDGCode()==22) // "TheLast is a photon too" LOOP { - gamSum=gamSum+theLast->Get4Momentum(); // Accumulate 4-momentum of theLastPhoton - theQHadrons.pop_back(); // Pnt to theLastHadr.is excluded from HV - delete theLast;//*!!When kill,DON'T forget to delete theLastQHadron as an inst!!* - nHadr=theQHadrons.size(); - nLast=nHadr-1; - theLast = theQHadrons[nLast]; - } - if(nLast>gp) - { - G4QPDGCode lQP=theLast->GetQPDG(); // The QPDG of the last - if(lQP.GetPDGCode()!=10) theCurr->SetQPDG(lQP); //CurHadr instead of PrevHadr - else theCurr->SetQC(theLast->GetQC()); // CurHadrPDG instead of LastHadrPDG - theCurr->Set4Momentum(theLast->Get4Momentum()); // ... continue substitution - theQHadrons.pop_back(); // Pnt to theLastHadr.is excluded from HV - delete theLast;//*!|When kill,DON'T forget to delete theLastQHadron as an inst!!* - nHadr=theQHadrons.size(); -#ifdef pdebug - G4cout<<"G4QE::FSI:RepBy lPDG="<<lQP<<",nH="<<nHadr<<",gS="<<gamSum<<G4endl; -#endif - } + gamSum=gamSum+theLast->Get4Momentum(); // Accumulate 4-momentum of theLastPhoton + theQHadrons.pop_back(); // Pnt to theLastHadr.is excluded from HV + delete theLast;//*!!When kill,DON'T forget to delete theLastQHadron as an inst!!* + nHadr=theQHadrons.size(); + nLast=nHadr-1; + theLast = theQHadrons[nLast]; + } + if(nLast>gp) + { + G4QPDGCode lQP=theLast->GetQPDG(); // The QPDG of the last + if(lQP.GetPDGCode()!=10) theCurr->SetQPDG(lQP); //CurHadr instead of PrevHadr + else theCurr->SetQC(theLast->GetQC()); // CurHadrPDG instead of LastHadrPDG + theCurr->Set4Momentum(theLast->Get4Momentum()); // ... continue substitution + theQHadrons.pop_back(); // Pnt to theLastHadr.is excluded from HV + delete theLast;//*!|When kill,DON'T forget to delete theLastQHadron as an inst!!* + nHadr=theQHadrons.size(); +#ifdef pdebug + G4cout<<"G4QE::FSI:RepBy lPDG="<<lQP<<",nH="<<nHadr<<",gS="<<gamSum<<G4endl; +#endif + } } - } - // @@ Now it is necessary to try to emit alpha or evaporate the residual nucleus - G4QHadron* theLast = theQHadrons[nHadr-1]; // Pointer to the Last Hadron - if(theLast->GetPDGCode()==22) + } + // @@ Now it is necessary to try to emit alpha or evaporate the residual nucleus + G4QHadron* theLast = theQHadrons[nHadr-1]; // Pointer to the Last Hadron + if(theLast->GetPDGCode()==22) { - gamSum=gamSum+theLast->Get4Momentum(); // Accumulate 4-momentum of the LastPhoton - theQHadrons.pop_back(); // Pnt to theLastHadr.is excluded from HV - delete theLast; //**!!When kill,DON'T forget to delete theLastQHadron as an inst.!!** - nHadr=theQHadrons.size(); + gamSum=gamSum+theLast->Get4Momentum(); // Accumulate 4-momentum of the LastPhoton + theQHadrons.pop_back(); // Pnt to theLastHadr.is excluded from HV + delete theLast; //**!!When kill,DON'T forget to delete theLastQHadron as an inst.!!** + nHadr=theQHadrons.size(); #ifdef pdebug - G4cout<<"G4QE::FSI: The last photon is killed, nH="<<nHadr<<",gS="<<gamSum<<G4endl; + G4cout<<"G4QE::FSI: The last photon is killed, nH="<<nHadr<<",gS="<<gamSum<<G4endl; #endif - theLast = theQHadrons[nHadr-1]; + theLast = theQHadrons[nHadr-1]; } - G4int nEx=nHadr-2; // position to be exchanged with theLast - while(theLast->GetBaryonNumber()<1 && nEx>=0)// theLastHadron must be a nucleus (A>0) + G4int nEx=nHadr-2; // position to be exchanged with theLast + while(theLast->GetBaryonNumber()<1 && nEx>=0)// theLastHadron must be a nucleus (A>0) { - G4QHadron* theEx=theQHadrons[nEx]; // A hadron to be exchanged with theLast - G4LorentzVector ex4Mom=theEx->Get4Momentum(); - G4QPDGCode exQPDG=theEx->GetQPDG(); - G4QContent exQC=theEx->GetQC(); - G4QPDGCode lQP=theLast->GetQPDG(); // The QPDG of the last - if(lQP.GetPDGCode()!=10) theEx->SetQPDG(lQP); //CurHadr instead of PrevHadr - else theEx->SetQC(theLast->GetQC()); // CurHadrPDG instead of LastHadrPDG - theEx->Set4Momentum(theLast->Get4Momentum()); - if(exQPDG.GetPDGCode()!=10) theLast->SetQPDG(exQPDG); - else theLast->SetQC(exQC); // CurHadrPDG instead of LastHadrPDG - theLast->Set4Momentum(ex4Mom); - nEx--; - } - G4QHadron* curHadr = new G4QHadron(theLast); // Pnt to theCurrentHadron is theLastCopy - theQHadrons.pop_back(); // Pnt to theLastHadron is excluded from OUTPUT - delete theLast;//*!! When kill,DON'T forget to delete theLas QHadron as an instance !!* - G4int theLB= curHadr->GetBaryonNumber(); - G4LorentzVector tR4M=curHadr->Get4Momentum()+gamSum; - G4double tRM=tR4M.m(); // TotMass of theResidualNucleus to decay - if(theLB>4) + G4QHadron* theEx=theQHadrons[nEx]; // A hadron to be exchanged with theLast + G4LorentzVector ex4Mom=theEx->Get4Momentum(); + G4QPDGCode exQPDG=theEx->GetQPDG(); + G4QContent exQC=theEx->GetQC(); + G4QPDGCode lQP=theLast->GetQPDG(); // The QPDG of the last + if(lQP.GetPDGCode()!=10) theEx->SetQPDG(lQP); //CurHadr instead of PrevHadr + else theEx->SetQC(theLast->GetQC()); // CurHadrPDG instead of LastHadrPDG + theEx->Set4Momentum(theLast->Get4Momentum()); + if(exQPDG.GetPDGCode()!=10) theLast->SetQPDG(exQPDG); + else theLast->SetQC(exQC); // CurHadrPDG instead of LastHadrPDG + theLast->Set4Momentum(ex4Mom); + nEx--; + } + G4QHadron* curHadr = new G4QHadron(theLast); // Pnt to theCurrentHadron is theLastCopy + theQHadrons.pop_back(); // Pnt to theLastHadron is excluded from OUTPUT + delete theLast;//*!! When kill,DON'T forget to delete theLas QHadron as an instance !!* + G4int theLB= curHadr->GetBaryonNumber(); + G4LorentzVector tR4M=curHadr->Get4Momentum()+gamSum; + G4double tRM=tR4M.m(); // TotMass of theResidualNucleus to decay + if(theLB>4) { G4QContent lrQC=curHadr->GetQC()-G4QContent(6,6,0,0,0,0); - G4QNucleus lrN(lrQC); - G4double lrM=lrN.GetMZNS(); - if(tRM>lrM+mAlph) + G4QNucleus lrN(lrQC); + G4double lrM=lrN.GetMZNS(); + if(tRM>lrM+mAlph) { - G4LorentzVector lr4M(0.,0.,0.,lrM); - G4LorentzVector al4M(0.,0.,0.,mAlph); - if(!G4QHadron(tR4M).DecayIn2(lr4M,al4M)) - { - curHadr->Set4Momentum(tR4M); - EvaporateResidual(curHadr); // delete equivalent + G4LorentzVector lr4M(0.,0.,0.,lrM); + G4LorentzVector al4M(0.,0.,0.,mAlph); + if(!G4QHadron(tR4M).DecayIn2(lr4M,al4M)) + { + curHadr->Set4Momentum(tR4M); + EvaporateResidual(curHadr); // delete equivalent #ifdef fdebug - G4cout<<"G4QE::FSI: After Evap (1) nH="<<theQHadrons.size()<<G4endl; + G4cout<<"G4QE::FSI: After Evap (1) nH="<<theQHadrons.size()<<G4endl; #endif } - else - { + else + { delete curHadr; - G4int APDG=lrN.GetPDG(); -#ifdef pdebug - G4cout<<"G4QE::FSI: Final A+alpha, A="<<APDG<<lr4M<<", a="<<al4M<<G4endl; -#endif - G4QHadron* lrH = new G4QHadron(APDG,lr4M); - theQHadrons.push_back(lrH); // (delete equivalent for lrH) - G4QHadron* alH = new G4QHadron(90002002,al4M); - theQHadrons.push_back(alH); // (delete equivalent for alH) - } - } - else - { - curHadr->Set4Momentum(tR4M); - EvaporateResidual(curHadr); // delete equivalent + G4int APDG=lrN.GetPDG(); +#ifdef pdebug + G4cout<<"G4QE::FSI: Final A+alpha, A="<<APDG<<lr4M<<", a="<<al4M<<G4endl; +#endif + G4QHadron* lrH = new G4QHadron(APDG,lr4M); + theQHadrons.push_back(lrH); // (delete equivalent for lrH) + G4QHadron* alH = new G4QHadron(90002002,al4M); + theQHadrons.push_back(alH); // (delete equivalent for alH) + } + } + else + { + curHadr->Set4Momentum(tR4M); + EvaporateResidual(curHadr); // delete equivalent #ifdef fdebug - G4cout<<"G4QE::FSI: After Evap (2) nH="<<theQHadrons.size()<<G4endl; + G4cout<<"G4QE::FSI: After Evap (2) nH="<<theQHadrons.size()<<G4endl; #endif } - } - else - { - curHadr->Set4Momentum(tR4M); - EvaporateResidual(curHadr); // delete equivalent + } + else + { + curHadr->Set4Momentum(tR4M); + EvaporateResidual(curHadr); // delete equivalent #ifdef fdebug - G4cout<<"G4QE::FSI: After Evap (5) nH="<<theQHadrons.size()<<G4endl; + G4cout<<"G4QE::FSI: After Evap (5) nH="<<theQHadrons.size()<<G4endl; #endif } - } - //Now just fill the output theFravment vector (User is responsible to ClearAndDestroy it) - nHadr=theQHadrons.size(); + } + //Now just fill the output theFravment vector (User is responsible to ClearAndDestroy it) + nHadr=theQHadrons.size(); #ifdef chdebug - // *** (8) Charge Control Sum Calculation for the Charge Conservation Check *** - ccContSum=0; // Intermediate ChargeControlSum - cbContSum=0; // Intermediate BaryonNumberControlSum - if(nHadr)for(unsigned ic8=0; ic8<nHadr; ic8++) if(!(theQHadrons[ic8]->GetNFragments())) - { - ccContSum+=theQHadrons[ic8]->GetCharge(); - cbContSum+=theQHadrons[ic8]->GetBaryonNumber(); - } - if(ccContSum-chContSum || cbContSum-bnContSum) - { - G4cout<<"*G4QE::FSI:(8) dC="<<ccContSum-chContSum<<",dB="<<cbContSum-bnContSum - <<G4endl; - //throw G4QException("G4QEnvironment::FSInteract: (8) Charge is not conserved"); - } - // *** -#endif - if(nHadr) for(unsigned hd=0; hd<theQHadrons.size(); hd++) - { - //G4QHadron* curHadr = new G4QHadron(theQHadrons[hd]); - G4QHadron* curHadr = theQHadrons[hd]; - G4int hPDG=curHadr->GetPDGCode(); - if(hPDG==22 && fabs(curHadr->Get4Momentum().e())<.00001) // E=0, gamma in the OUTPUT - { - unsigned lin=theQHadrons.size()-1; - G4QHadron* theLast = theQHadrons[lin];// Pointer to theLastHadron in theQHadrVector - if(lin>hd) - { - G4QPDGCode lQP=theLast->GetQPDG(); // The QPDG of the last - if(lQP.GetPDGCode()!=10) curHadr->SetQPDG(lQP); //CurHadr instead of PrevHadr - else curHadr->SetQC(theLast->GetQC()); // CurHadrPDG instead of LastHadrPDG - curHadr->Set4Momentum(theLast->Get4Momentum()); // ... continue substitution (4Mom) - } - //else break; // It's not necessary to delete: not copy to theFragments is enough - delete theLast;//*!!When kill, DON'T forget to delete theLastQHadron asAnInstance!! - theQHadrons.pop_back(); //pointer to theLastHadron is excluded from HV - hPDG=curHadr->GetPDGCode(); // Redefine thePDGCode of theCurrentHadron - if(lin==hd) break; - } + // *** (8) Charge Control Sum Calculation for the Charge Conservation Check *** + ccContSum=0; // Intermediate ChargeControlSum + cbContSum=0; // Intermediate BaryonNumberControlSum + if(nHadr)for(unsigned ic8=0; ic8<nHadr; ic8++) if(!(theQHadrons[ic8]->GetNFragments())) + { + ccContSum+=theQHadrons[ic8]->GetCharge(); + cbContSum+=theQHadrons[ic8]->GetBaryonNumber(); + } + if(ccContSum-chContSum || cbContSum-bnContSum) + { + G4cout<<"*G4QE::FSI:(8) dC="<<ccContSum-chContSum<<",dB="<<cbContSum-bnContSum + <<G4endl; + //throw G4QException("G4QEnvironment::FSInteract: (8) Charge is not conserved"); + } + // *** +#endif + if(nHadr) for(unsigned hd=0; hd<theQHadrons.size(); hd++) + { + //G4QHadron* curHadr = new G4QHadron(theQHadrons[hd]); + G4QHadron* curHadr = theQHadrons[hd]; + G4int hPDG=curHadr->GetPDGCode(); + if(hPDG==22 && fabs(curHadr->Get4Momentum().e())<.00001) // E=0, gamma in the OUTPUT + { + unsigned lin=theQHadrons.size()-1; + G4QHadron* theLast = theQHadrons[lin];// Pointer to theLastHadron in theQHadrVector + if(lin>hd) + { + G4QPDGCode lQP=theLast->GetQPDG(); // The QPDG of the last + if(lQP.GetPDGCode()!=10) curHadr->SetQPDG(lQP); //CurHadr instead of PrevHadr + else curHadr->SetQC(theLast->GetQC()); // CurHadrPDG instead of LastHadrPDG + curHadr->Set4Momentum(theLast->Get4Momentum()); // ... continue substitution (4Mom) + } + //else break; // It's not necessary to delete: not copy to theFragments is enough + delete theLast;//*!!When kill, DON'T forget to delete theLastQHadron asAnInstance!! + theQHadrons.pop_back(); //pointer to theLastHadron is excluded from HV + hPDG=curHadr->GetPDGCode(); // Redefine thePDGCode of theCurrentHadron + if(lin==hd) break; + } #ifdef fdebug - G4cout<<"G4QE::FSI: LOOP starts nH="<<nHadr<<", h#"<<hd<<", PDG="<<hPDG<<G4endl; + G4cout<<"G4QE::FSI: LOOP starts nH="<<nHadr<<", h#"<<hd<<", PDG="<<hPDG<<G4endl; #endif - if(hPDG==89999003||hPDG==90002999) G4cout<<"G4QEnv::FSI:nD-/pD++(0)="<<hPDG<<G4endl; - if(hPDG==89999004||hPDG==90003999) G4cout<<"G4QEnv::FSI:nnD-/ppD++(0)="<<hPDG<<G4endl; - //if(hPDG==89998003||hPDG==90002998)G4cout<<"G4QE::FSI:D-Pi-/D++Pi+PDG="<<hPDG<<G4endl; - if(hPDG>100000000) G4cout<<"***G4QE::FSI: h#"<<hd<<", wrong PDGCode="<<hPDG<<G4endl; + if(hPDG==89999003||hPDG==90002999) G4cout<<"G4QEnv::FSI:nD-/pD++(0)="<<hPDG<<G4endl; + if(hPDG==89999004||hPDG==90003999) G4cout<<"G4QEnv::FSI:nnD-/ppD++(0)="<<hPDG<<G4endl; + //if(hPDG==89998003||hPDG==90002998)G4cout<<"G4QE::FSI:D-Pi-/D++Pi+PDG="<<hPDG<<G4endl; + if(hPDG>100000000) G4cout<<"***G4QE::FSI: h#"<<hd<<", wrong PDGCode="<<hPDG<<G4endl; #ifdef fdebug - G4cout<<"G4QE::FSI:Copy is made with PDG="<<hPDG<<G4endl;//To compare with Original -#endif - G4int hBN=curHadr->GetBaryonNumber(); - G4int hCG=curHadr->GetCharge(); - G4int hST=curHadr->GetStrangeness(); - G4int hNF=curHadr->GetNFragments(); - G4bool fOK=true; - if(hNF==-1) curHadr->SetNFragments(0); - else if(hPDG==91000000) curHadr->SetQPDG(G4QPDGCode(3122));// Move to theNextLoop - else if(hPDG==90998003||hPDG==91002998) // n,pi-,Sigma- OR p,pi+,Sigma+ (StrangeIso) - { // @@ can be converted here to B>2 + G4cout<<"G4QE::FSI:Copy is made with PDG="<<hPDG<<G4endl;//To compare with Original +#endif + G4int hBN=curHadr->GetBaryonNumber(); + G4int hCG=curHadr->GetCharge(); + G4int hST=curHadr->GetStrangeness(); + G4int hNF=curHadr->GetNFragments(); + G4bool fOK=true; + if(hNF==-1) curHadr->SetNFragments(0); + else if(hPDG==91000000) curHadr->SetQPDG(G4QPDGCode(3122));// Move to theNextLoop + else if(hPDG==90998003||hPDG==91002998) // n,pi-,Sigma- OR p,pi+,Sigma+ (StrangeIso) + { // @@ can be converted here to B>2 #ifdef fdebug - G4cout<<"G4QE::FSI: Pi+Nuc+Sigma state decay is found PDG="<<hPDG<<G4endl; -#endif - G4LorentzVector r4M=curHadr->Get4Momentum(); // Real 4-mom of theIsoNucleus - G4double reM=r4M.m(); // Real mass of the IsoNucleus - G4bool dub=false; - G4int PDGnu=2112; - G4double mNucl=mNeut; - G4int PDGpi=-211; - G4double mPion=mPi; - G4int PDGsi=3112; - G4double mSi=mSigM; - G4double sum=mNucl+mPion+mSi; - if(hPDG==90998003&&reM<sum) // Default -- values + G4cout<<"G4QE::FSI: Pi+Nuc+Sigma state decay is found PDG="<<hPDG<<G4endl; +#endif + G4LorentzVector r4M=curHadr->Get4Momentum(); // Real 4-mom of theIsoNucleus + G4double reM=r4M.m(); // Real mass of the IsoNucleus + G4bool dub=false; + G4int PDGnu=2112; + G4double mNucl=mNeut; + G4int PDGpi=-211; + G4double mPion=mPi; + G4int PDGsi=3112; + G4double mSi=mSigM; + G4double sum=mNucl+mPion+mSi; + if(hPDG==90998003&&reM<sum) // Default -- values { - PDGsi=2112; - mSi=mNeut; - mPion=mPi+mPi; - sum=mNucl+mPion+mSi; - dub=true; - } - if(hPDG==91002998) // Change -- default values to +++ values + PDGsi=2112; + mSi=mNeut; + mPion=mPi+mPi; + sum=mNucl+mPion+mSi; + dub=true; + } + if(hPDG==91002998) // Change -- default values to +++ values { - mNucl=mProt; - PDGnu=2212; - PDGpi=211; - PDGsi=3222; - mSi =mSigP; - sum=mNucl+mPion+mSi; - if(reM<sum) + mNucl=mProt; + PDGnu=2212; + PDGpi=211; + PDGsi=3222; + mSi =mSigP; + sum=mNucl+mPion+mSi; + if(reM<sum) { - PDGsi=2212; - mSi=mProt; - sum=mNucl+mPion+mSi; - } - } - G4LorentzVector n4M(0.,0.,0.,mNucl); - G4LorentzVector p4M(0.,0.,0.,mPion); - G4LorentzVector k4M(0.,0.,0.,mSi); - if(fabs(reM-sum)<eps) + PDGsi=2212; + mSi=mProt; + sum=mNucl+mPion+mSi; + } + } + G4LorentzVector n4M(0.,0.,0.,mNucl); + G4LorentzVector p4M(0.,0.,0.,mPion); + G4LorentzVector k4M(0.,0.,0.,mSi); + if(fabs(reM-sum)<eps) { - //G4cout<<"G4QE::FSI:*TMP* PiDelta split PDG="<<hPDG<<G4endl;//To find out why? - n4M=r4M*(mNucl/sum); - p4M=r4M*(mPion/sum); - k4M=r4M*(mSi/sum); - } - else if(reM<sum || !G4QHadron(r4M).DecayIn3(n4M,p4M,k4M)) - { - G4cout<<"---Warning---G4QE::FSI:Pi+N+Sigma recovery INPDG="<<hPDG<<","<<reM<<" < " - <<mNucl<<"(PDG="<<PDGnu<<")+Pi="<<mPion<<")+Sigma="<<mSi<<"="<<sum<<G4endl; - if(!theEnvironment.GetA()) - { - G4QHadron* theLast = curHadr; // Prototype of Pointer to theLastHadron - G4QHadron* qH = new G4QHadron(curHadr);// Copy of the Current Hadron - if(hd+1<theQHadrons.size()) // If ipo<Last, swap CurHadr & LastHadr - { - theLast = theQHadrons[theQHadrons.size()-1]; // Pointer to LastHadr(ipo<Last) - G4QPDGCode lQP=theLast->GetQPDG(); // The QPDG of the last - if(lQP.GetPDGCode()!=10) curHadr->SetQPDG(lQP); //CurHadr instead of PrevHadr - else curHadr->SetQC(theLast->GetQC()); // CurHadrPDG instead of LastHadrPDG - curHadr->Set4Momentum(theLast->Get4Momentum()); // ... 4Momentum substitution - } - theQHadrons.pop_back(); // exclude theLastHadron pointer from the OUTPUT - delete theLast; //*!! When killing, DON'T forget to delete the last QHadron !!* - G4Quasmon* quasH = new G4Quasmon(qH->GetQC(),qH->Get4Momentum());//Fake Quasmon - if(!CheckGroundState(quasH,true)) // Try to correct by other hadrons - { - qH->SetNFragments(-1); //@@ To avoid looping - G4cout<<"---Warning---G4QE::FSI:PiNSig Failed, LeaveAsItIs 4m="<<r4M<<G4endl; - theQHadrons.push_back(qH); // Leave as it is (delete equivalent) - } - else - { + //G4cout<<"G4QE::FSI:*TMP* PiDelta split PDG="<<hPDG<<G4endl;//To find out why? + n4M=r4M*(mNucl/sum); + p4M=r4M*(mPion/sum); + k4M=r4M*(mSi/sum); + } + else if(reM<sum || !G4QHadron(r4M).DecayIn3(n4M,p4M,k4M)) + { + G4cout<<"---Warning---G4QE::FSI:Pi+N+Sigma recovery INPDG="<<hPDG<<","<<reM<<" < " + <<mNucl<<"(PDG="<<PDGnu<<")+Pi="<<mPion<<")+Sigma="<<mSi<<"="<<sum<<G4endl; + if(!theEnvironment.GetA()) + { + G4QHadron* theLast = curHadr; // Prototype of Pointer to theLastHadron + G4QHadron* qH = new G4QHadron(curHadr);// Copy of the Current Hadron + if(hd+1<theQHadrons.size()) // If ipo<Last, swap CurHadr & LastHadr + { + theLast = theQHadrons[theQHadrons.size()-1]; // Pointer to LastHadr(ipo<Last) + G4QPDGCode lQP=theLast->GetQPDG(); // The QPDG of the last + if(lQP.GetPDGCode()!=10) curHadr->SetQPDG(lQP); //CurHadr instead of PrevHadr + else curHadr->SetQC(theLast->GetQC()); // CurHadrPDG instead of LastHadrPDG + curHadr->Set4Momentum(theLast->Get4Momentum()); // ... 4Momentum substitution + } + theQHadrons.pop_back(); // exclude theLastHadron pointer from the OUTPUT + delete theLast; //*!! When killing, DON'T forget to delete the last QHadron !!* + G4Quasmon* quasH = new G4Quasmon(qH->GetQC(),qH->Get4Momentum());//Fake Quasmon + if(!CheckGroundState(quasH,true)) // Try to correct by other hadrons + { + qH->SetNFragments(-1); //@@ To avoid looping + G4cout<<"---Warning---G4QE::FSI:PiNSig Failed, LeaveAsItIs 4m="<<r4M<<G4endl; + theQHadrons.push_back(qH); // Leave as it is (delete equivalent) + } + else + { #ifdef fdebug - for(unsigned hp=0; hp<theQHadrons.size(); hp++) - { - G4QHadron* cpHadr = new G4QHadron(theQHadrons[hp]); - G4int hpPDG=cpHadr->GetPDGCode(); - G4LorentzVector hpLV=cpHadr->Get4Momentum(); + for(unsigned hp=0; hp<theQHadrons.size(); hp++) + { + G4QHadron* cpHadr = new G4QHadron(theQHadrons[hp]); + G4int hpPDG=cpHadr->GetPDGCode(); + G4LorentzVector hpLV=cpHadr->Get4Momentum(); G4cout<<"G4QE::FSI:h#"<<hp<<": hPDG="<<hpPDG<<", h4M="<<hpLV<<G4endl; - } + } #endif - delete qH; - nHadr=theQHadrons.size(); - } - delete quasH; - fOK=false; + delete qH; + nHadr=theQHadrons.size(); + } + delete quasH; + fOK=false; } - else - { - G4cerr<<"**G4QEnv::FSI: No Final PiNSig recovery, Env="<<theEnvironment<<G4endl; - throw G4QException("***G4QEnvironment::FSInter:PiNucSigma Final Decay Error"); - } + else + { + G4cerr<<"**G4QEnv::FSI: No Final PiNSig recovery, Env="<<theEnvironment<<G4endl; + throw G4QException("***G4QEnvironment::FSInter:PiNucSigma Final Decay Error"); + } #ifdef fdebug - G4cout<<"G4QEnv::FSI: PiNSi recover #"<<hd<<",PDG="<<curHadr->GetPDGCode()<<G4endl; + G4cout<<"G4QEnv::FSI: PiNSi recover #"<<hd<<",PDG="<<curHadr->GetPDGCode()<<G4endl; #endif - } - if(fOK) - { + } + if(fOK) + { #ifdef fdebug - G4cout<<"G4QE::FSI:PiNSigma==>"<<r4M<<"->N="<<PDGnu<<n4M<<"+Pi="<<PDGpi<<p4M - <<"+ Sigma="<<PDGsi<<k4M<<G4endl; + G4cout<<"G4QE::FSI:PiNSigma==>"<<r4M<<"->N="<<PDGnu<<n4M<<"+Pi="<<PDGpi<<p4M + <<"+ Sigma="<<PDGsi<<k4M<<G4endl; #endif - curHadr->Set4Momentum(n4M); - curHadr->SetQPDG(G4QPDGCode(PDGnu));// At least one nucleun always exists - if(dub) + curHadr->Set4Momentum(n4M); + curHadr->SetQPDG(G4QPDGCode(PDGnu));// At least one nucleun always exists + if(dub) { - p4M/=2.; - G4QHadron* Pid = new G4QHadron(PDGpi,p4M); // Create a Hadron for the pion - theQHadrons.push_back(Pid); // Fill pion (delete equivalent) - } - G4QHadron* Pi = new G4QHadron(PDGpi,p4M); // Create a Hadron for the pion - theQHadrons.push_back(Pi); // Fill pion (delete equivalent) - G4QHadron* Si = new G4QHadron(PDGsi,k4M); // Create a Hadron for the Sigma - theQHadrons.push_back(Si); // Fill Sigma (delete equivalent) - } + p4M/=2.; + G4QHadron* Pid = new G4QHadron(PDGpi,p4M); // Create a Hadron for the pion + theQHadrons.push_back(Pid); // Fill pion (delete equivalent) + } + G4QHadron* Pi = new G4QHadron(PDGpi,p4M); // Create a Hadron for the pion + theQHadrons.push_back(Pi); // Fill pion (delete equivalent) + G4QHadron* Si = new G4QHadron(PDGsi,k4M); // Create a Hadron for the Sigma + theQHadrons.push_back(Si); // Fill Sigma (delete equivalent) + } #ifdef fdebug - G4cout<<"G4QE::FSI:*TMP* PiNSigma end up PDG="<<hPDG<<G4endl;//To find out why? + G4cout<<"G4QE::FSI:*TMP* PiNSigma end up PDG="<<hPDG<<G4endl;//To find out why? #endif - } - else if(hPDG==89998003||hPDG==90002998) // Isonucleus (pi- + DEL- or pi+ + DEL++) + } + else if(hPDG==89998003||hPDG==90002998) // Isonucleus (pi- + DEL- or pi+ + DEL++) { // @@ can be converted here to B>1 - //G4cout<<"G4QE::FSI:*TMP* PiDelta decay PDG="<<hPDG<<G4endl;//To find out why? - G4double mNucl=mNeut; - G4int PDGnu=2112; - G4int PDGpi=-211; - if(hPDG==90002998) // Change DEL- default values to DEL++ values + //G4cout<<"G4QE::FSI:*TMP* PiDelta decay PDG="<<hPDG<<G4endl;//To find out why? + G4double mNucl=mNeut; + G4int PDGnu=2112; + G4int PDGpi=-211; + if(hPDG==90002998) // Change DEL- default values to DEL++ values { - mNucl=mProt; - PDGnu=2212; - PDGpi=211; - } - //G4double nucM=mNucl*hBN; - G4LorentzVector r4M=curHadr->Get4Momentum(); // Real 4-mom of theIsoNucleus - G4double reM=r4M.m(); // Real mass of the IsoNucleus - G4LorentzVector n4M(0.,0.,0.,mNucl); - G4LorentzVector p4M(0.,0.,0.,mPi); - G4LorentzVector k4M(0.,0.,0.,mPi); - G4double sum=mNucl+mPi+mPi; - if(fabs(reM-sum)<eps) + mNucl=mProt; + PDGnu=2212; + PDGpi=211; + } + //G4double nucM=mNucl*hBN; + G4LorentzVector r4M=curHadr->Get4Momentum(); // Real 4-mom of theIsoNucleus + G4double reM=r4M.m(); // Real mass of the IsoNucleus + G4LorentzVector n4M(0.,0.,0.,mNucl); + G4LorentzVector p4M(0.,0.,0.,mPi); + G4LorentzVector k4M(0.,0.,0.,mPi); + G4double sum=mNucl+mPi+mPi; + if(fabs(reM-sum)<eps) { - //G4cout<<"G4QE::FSI:*TMP* PiDelta split PDG="<<hPDG<<G4endl;//To find out why? - n4M=r4M*(mNucl/sum); - p4M=r4M*(mPi/sum); - k4M=r4M*(mPi/sum); - } - else if(reM<sum || !G4QHadron(r4M).DecayIn3(n4M,p4M,k4M)) - { - G4cout<<"---Warning---G4QE::FSI: Isonuc+Pi recovery INPDG="<<hPDG<<","<<reM<<" < " - <<mNucl<<"(PDG="<<PDGnu<<") + 2*"<<mPi<<"="<<sum<<G4endl; - if(!theEnvironment.GetA()) - { - G4QHadron* theLast = curHadr; // Prototype of Pointer to theLastHadron - G4QHadron* qH = new G4QHadron(curHadr);// Copy of the Current Hadron - if(hd+1<theQHadrons.size()) // If ipo<Last, swap CurHadr & LastHadr - { - theLast = theQHadrons[theQHadrons.size()-1]; // Pointer to LastHadr(ipo<Last) - G4QPDGCode lQP=theLast->GetQPDG(); // The QPDG of the last - if(lQP.GetPDGCode()!=10) curHadr->SetQPDG(lQP); //CurHadr instead of PrevHadr - else curHadr->SetQC(theLast->GetQC()); // CurHadrPDG instead of LastHadrPDG - curHadr->Set4Momentum(theLast->Get4Momentum()); // ... 4Momentum substitution - } - theQHadrons.pop_back(); // exclude theLastHadron pointer from the OUTPUT - delete theLast; //*!! When killing, DON'T forget to delete the last QHadron !!* - G4Quasmon* quasH = new G4Quasmon(qH->GetQC(),qH->Get4Momentum());//Fake Quasmon - if(!CheckGroundState(quasH,true)) // Try to correct by other hadrons - { - qH->SetNFragments(-1); //@@ To avoid looping - G4cout<<"---Warning---G4QE::FSI:IsoN+Pi Failed, LeaveAsItIs 4m="<<r4M<<G4endl; - theQHadrons.push_back(qH); // Leave as it is (delete equivalent) - } - else - { - delete qH; - nHadr=theQHadrons.size(); - } - delete quasH; - fOK=false; + //G4cout<<"G4QE::FSI:*TMP* PiDelta split PDG="<<hPDG<<G4endl;//To find out why? + n4M=r4M*(mNucl/sum); + p4M=r4M*(mPi/sum); + k4M=r4M*(mPi/sum); + } + else if(reM<sum || !G4QHadron(r4M).DecayIn3(n4M,p4M,k4M)) + { + G4cout<<"---Warning---G4QE::FSI: Isonuc+Pi recovery INPDG="<<hPDG<<","<<reM<<" < " + <<mNucl<<"(PDG="<<PDGnu<<") + 2*"<<mPi<<"="<<sum<<G4endl; + if(!theEnvironment.GetA()) + { + G4QHadron* theLast = curHadr; // Prototype of Pointer to theLastHadron + G4QHadron* qH = new G4QHadron(curHadr);// Copy of the Current Hadron + if(hd+1<theQHadrons.size()) // If ipo<Last, swap CurHadr & LastHadr + { + theLast = theQHadrons[theQHadrons.size()-1]; // Pointer to LastHadr(ipo<Last) + G4QPDGCode lQP=theLast->GetQPDG(); // The QPDG of the last + if(lQP.GetPDGCode()!=10) curHadr->SetQPDG(lQP); //CurHadr instead of PrevHadr + else curHadr->SetQC(theLast->GetQC()); // CurHadrPDG instead of LastHadrPDG + curHadr->Set4Momentum(theLast->Get4Momentum()); // ... 4Momentum substitution + } + theQHadrons.pop_back(); // exclude theLastHadron pointer from the OUTPUT + delete theLast; //*!! When killing, DON'T forget to delete the last QHadron !!* + G4Quasmon* quasH = new G4Quasmon(qH->GetQC(),qH->Get4Momentum());//Fake Quasmon + if(!CheckGroundState(quasH,true)) // Try to correct by other hadrons + { + qH->SetNFragments(-1); //@@ To avoid looping + G4cout<<"---Warning---G4QE::FSI:IsoN+Pi Failed, LeaveAsItIs 4m="<<r4M<<G4endl; + theQHadrons.push_back(qH); // Leave as it is (delete equivalent) + } + else + { + delete qH; + nHadr=theQHadrons.size(); + } + delete quasH; + fOK=false; } - else - { - G4cerr<<"**G4QEnv::FSI: No Final IsoN+Pi recovery, Env="<<theEnvironment<<G4endl; - throw G4QException("***G4QEnvironment::FSInter:IsoNucl+Pi FinalDecayError"); - } + else + { + G4cerr<<"**G4QEnv::FSI: No Final IsoN+Pi recovery, Env="<<theEnvironment<<G4endl; + throw G4QException("***G4QEnvironment::FSInter:IsoNucl+Pi FinalDecayError"); + } #ifdef fdebug - G4cout<<"G4QEnv::FSI: PiDel recover #"<<hd<<",PDG="<<curHadr->GetPDGCode()<<G4endl; + G4cout<<"G4QEnv::FSI: PiDel recover #"<<hd<<",PDG="<<curHadr->GetPDGCode()<<G4endl; #endif - } - if(fOK) - { + } + if(fOK) + { #ifdef fdebug - G4cout<<"G4QE::FSI:IsoNuc+Pi==>"<<r4M<<"->N="<<PDGnu<<n4M<<"+Pi="<<PDGpi<<p4M - <<"+ Pi="<<PDGpi<<k4M<<G4endl; -#endif - curHadr->Set4Momentum(n4M); - curHadr->SetQPDG(G4QPDGCode(PDGnu)); // At least one nucleun always exists - G4QHadron* Pi1 = new G4QHadron(PDGpi,p4M); // Create a Hadron for the pion - theQHadrons.push_back(Pi1); // Fill pion (delete equivalent) - G4QHadron* Pi2 = new G4QHadron(PDGpi,k4M); // Create a Hadron for the pion - theQHadrons.push_back(Pi2); // Fill pion (delete equivalent) - } + G4cout<<"G4QE::FSI:IsoNuc+Pi==>"<<r4M<<"->N="<<PDGnu<<n4M<<"+Pi="<<PDGpi<<p4M + <<"+ Pi="<<PDGpi<<k4M<<G4endl; +#endif + curHadr->Set4Momentum(n4M); + curHadr->SetQPDG(G4QPDGCode(PDGnu)); // At least one nucleun always exists + G4QHadron* Pi1 = new G4QHadron(PDGpi,p4M); // Create a Hadron for the pion + theQHadrons.push_back(Pi1); // Fill pion (delete equivalent) + G4QHadron* Pi2 = new G4QHadron(PDGpi,k4M); // Create a Hadron for the pion + theQHadrons.push_back(Pi2); // Fill pion (delete equivalent) + } #ifdef fdebug - G4cout<<"G4QE::FSI:*TMP* PiDelta end up PDG="<<hPDG<<G4endl;//To find out why? + G4cout<<"G4QE::FSI:*TMP* PiDelta end up PDG="<<hPDG<<G4endl;//To find out why? #endif - } - else if(hBN>0 && !hST && (hCG<0||hCG>hBN)) // Isonucleus (n*N+k*DEL- or n*P+k*DEL++) + } + else if(hBN>0 && !hST && (hCG<0||hCG>hBN)) // Isonucleus (n*N+k*DEL- or n*P+k*DEL++) { - G4double mNucl=mNeut; - G4int PDGnu=2112; - G4int PDGpi=-211; - G4int nPi=-hCG; // Prototype of the minimum number of pions - if(hCG>0) // Change DEL- default values to DEL++ values + G4double mNucl=mNeut; + G4int PDGnu=2112; + G4int PDGpi=-211; + G4int nPi=-hCG; // Prototype of the minimum number of pions + if(hCG>0) // Change DEL- default values to DEL++ values { - mNucl=mProt; - PDGnu=2212; - PDGpi=211; - nPi=hCG-hBN; - } - G4double nucM=mNucl*hBN; - G4double pioM=mPi*nPi; - G4LorentzVector r4M=curHadr->Get4Momentum(); // Real 4-mom of theIsoNucleus - G4double reM=r4M.m(); // Real mass of the IsoNucleus - G4LorentzVector n4M(0.,0.,0.,nucM); - G4LorentzVector k4M(0.,0.,0.,pioM); - G4double sum=nucM+pioM; - if(fabs(reM-sum)<eps) + mNucl=mProt; + PDGnu=2212; + PDGpi=211; + nPi=hCG-hBN; + } + G4double nucM=mNucl*hBN; + G4double pioM=mPi*nPi; + G4LorentzVector r4M=curHadr->Get4Momentum(); // Real 4-mom of theIsoNucleus + G4double reM=r4M.m(); // Real mass of the IsoNucleus + G4LorentzVector n4M(0.,0.,0.,nucM); + G4LorentzVector k4M(0.,0.,0.,pioM); + G4double sum=nucM+pioM; + if(fabs(reM-sum)<eps) { - n4M=r4M*(nucM/sum); - k4M=r4M*(pioM/sum); - } - else if(reM<sum || !G4QHadron(r4M).DecayIn2(n4M,k4M)) - { + n4M=r4M*(nucM/sum); + k4M=r4M*(pioM/sum); + } + else if(reM<sum || !G4QHadron(r4M).DecayIn2(n4M,k4M)) + { #ifdef fdebug - G4cout<<"---Warning---G4QE::FSI: Isonucleus recovery INPDG="<<hPDG<<", M="<<reM - <<" < "<<nucM<<"+"<<pioM<<"="<<sum<<G4endl; -#endif - if(!theEnvironment.GetA()) - { - G4QHadron* theLast = curHadr; // Prototype of Pointer to theLastHadron - G4QHadron* qH = new G4QHadron(curHadr);// Copy of the Current Hadron - G4QContent tQC=qH->GetQC(); // Quark content of the hadron - G4LorentzVector t4M=qH->Get4Momentum();// 4Momentum of the hadron - if(hd+1<theQHadrons.size()) // If ipo<Last, swap CurHadr & LastHadr - { - theLast = theQHadrons[theQHadrons.size()-1]; // Pointer to LastHadr(ipo<Last) - G4QPDGCode lQP=theLast->GetQPDG(); // The QPDG of the last - if(lQP.GetPDGCode()!=10) curHadr->SetQPDG(lQP); //CurHadr instead of PrevHadr - else curHadr->SetQC(theLast->GetQC()); // CurHadrPDG instead of LastHadrPDG - curHadr->Set4Momentum(theLast->Get4Momentum()); // ... 4Momentum substitution - } - theQHadrons.pop_back(); // exclude theLastHadron pointer from the OUTPUT - delete theLast; //*!! When killing, DON'T forget to delete the last QHadron !!* - G4Quasmon* quasH = new G4Quasmon(tQC,t4M); // Fake Quasmon for the Recovery - if(!CheckGroundState(quasH,true)) // Try to correct by other hadrons - { - G4int tPDG=qH->GetPDGCode(); - qH->SetNFragments(-1); // @@ To avoid looping - G4cout<<"---Warning---G4QE::FSI:IsoN="<<tPDG<<tQC<<" FAsIs 4m="<<t4M<<G4endl; - theQHadrons.push_back(qH); // Leave as it is (delete equivalent) - } - else - { + G4cout<<"---Warning---G4QE::FSI: Isonucleus recovery INPDG="<<hPDG<<", M="<<reM + <<" < "<<nucM<<"+"<<pioM<<"="<<sum<<G4endl; +#endif + if(!theEnvironment.GetA()) + { + G4QHadron* theLast = curHadr; // Prototype of Pointer to theLastHadron + G4QHadron* qH = new G4QHadron(curHadr);// Copy of the Current Hadron + G4QContent tQC=qH->GetQC(); // Quark content of the hadron + G4LorentzVector t4M=qH->Get4Momentum();// 4Momentum of the hadron + if(hd+1<theQHadrons.size()) // If ipo<Last, swap CurHadr & LastHadr + { + theLast = theQHadrons[theQHadrons.size()-1]; // Pointer to LastHadr(ipo<Last) + G4QPDGCode lQP=theLast->GetQPDG(); // The QPDG of the last + if(lQP.GetPDGCode()!=10) curHadr->SetQPDG(lQP); //CurHadr instead of PrevHadr + else curHadr->SetQC(theLast->GetQC()); // CurHadrPDG instead of LastHadrPDG + curHadr->Set4Momentum(theLast->Get4Momentum()); // ... 4Momentum substitution + } + theQHadrons.pop_back(); // exclude theLastHadron pointer from the OUTPUT + delete theLast; //*!! When killing, DON'T forget to delete the last QHadron !!* + G4Quasmon* quasH = new G4Quasmon(tQC,t4M); // Fake Quasmon for the Recovery + if(!CheckGroundState(quasH,true)) // Try to correct by other hadrons + { + G4int tPDG=qH->GetPDGCode(); + qH->SetNFragments(-1); // @@ To avoid looping + G4cout<<"---Warning---G4QE::FSI:IsoN="<<tPDG<<tQC<<" FAsIs 4m="<<t4M<<G4endl; + theQHadrons.push_back(qH); // Leave as it is (delete equivalent) + } + else + { #ifdef fdebug - for(unsigned hp=0; hp<theQHadrons.size(); hp++) - { - G4QHadron* cpHadr = new G4QHadron(theQHadrons[hp]); - G4int hpPDG=cpHadr->GetPDGCode(); - G4LorentzVector hpLV=cpHadr->Get4Momentum(); + for(unsigned hp=0; hp<theQHadrons.size(); hp++) + { + G4QHadron* cpHadr = new G4QHadron(theQHadrons[hp]); + G4int hpPDG=cpHadr->GetPDGCode(); + G4LorentzVector hpLV=cpHadr->Get4Momentum(); G4cout<<"G4QE::FSI:h#"<<hp<<": hPDG="<<hpPDG<<", h4M="<<hpLV<<G4endl; - } + } #endif - delete qH; // Temporary Hadron is used for recovery - nHadr=theQHadrons.size(); - } - delete quasH; // TemporaryQuasmon is used for recovery - fOK=false; + delete qH; // Temporary Hadron is used for recovery + nHadr=theQHadrons.size(); + } + delete quasH; // TemporaryQuasmon is used for recovery + fOK=false; } - else - { - G4cerr<<"***G4QEnv::FSI: No FinalIsoNucRecovery, Env="<<theEnvironment<<G4endl; - throw G4QException("***G4QEnvironment::FSInter:IsoNucleus FinalDecayError"); - } + else + { + G4cerr<<"***G4QEnv::FSI: No FinalIsoNucRecovery, Env="<<theEnvironment<<G4endl; + throw G4QException("***G4QEnvironment::FSInter:IsoNucleus FinalDecayError"); + } #ifdef fdebug - G4cout<<"G4QEnv::FSI: Isonucleus recovery outPDG="<<curHadr->GetPDGCode()<<G4endl; + G4cout<<"G4QEnv::FSI: Isonucleus recovery outPDG="<<curHadr->GetPDGCode()<<G4endl; #endif - } - if(fOK) - { + } + if(fOK) + { #ifdef fdebug - G4cout<<"G4QE::FSI:IsoN==>"<<r4M<<"->N="<<PDGnu<<n4M<<"+Pi="<<PDGpi<<k4M<<G4endl; + G4cout<<"G4QE::FSI:IsoN==>"<<r4M<<"->N="<<PDGnu<<n4M<<"+Pi="<<PDGpi<<k4M<<G4endl; #endif if(hBN>1) n4M/=hBN; // Calculate the 4mom per one nucleon - curHadr->Set4Momentum(n4M); - curHadr->SetQPDG(G4QPDGCode(PDGnu)); // At least one nucleun always exists - if(hBN>1) for(G4int ih=1; ih<hBN; ih++) - { - G4QHadron* Hi = new G4QHadron(PDGnu,n4M); // Create a Hadron for the baryon - theQHadrons.push_back(Hi); // (del.eq.- user is responsible for del) - //theFragments->push_back(Hi); // Fill nucleons (delete equivalent) - } - if(nPi>1) k4M/=nPi; - for(G4int ip=0; ip<nPi; ip++) - { - G4QHadron* Hj = new G4QHadron(PDGpi,k4M); // Create a Hadron for the pion - theQHadrons.push_back(Hj); // Fill pion (delete equivalent) - } - } + curHadr->Set4Momentum(n4M); + curHadr->SetQPDG(G4QPDGCode(PDGnu)); // At least one nucleun always exists + if(hBN>1) for(G4int ih=1; ih<hBN; ih++) + { + G4QHadron* Hi = new G4QHadron(PDGnu,n4M); // Create a Hadron for the baryon + theQHadrons.push_back(Hi); // (del.eq.- user is responsible for del) + //theFragments->push_back(Hi); // Fill nucleons (delete equivalent) + } + if(nPi>1) k4M/=nPi; + for(G4int ip=0; ip<nPi; ip++) + { + G4QHadron* Hj = new G4QHadron(PDGpi,k4M); // Create a Hadron for the pion + theQHadrons.push_back(Hj); // Fill pion (delete equivalent) + } + } #ifdef fdebug - G4cout<<"G4QEnv::FSI: Isonucleus decay result h#="<<hd<<", outPDG="<<hPDG<<G4endl; -#endif - } - else if ( hBN > 1 && - ( (hBN == hCG && !hST) || - (!hCG && !hST) || - (!hCG && hST==hBN) ) ) //(n*P, n*N, or n*L) - { - // *** Temporary Correction *** (To find out where is the error) - if(hPDG==90000003 && fabs(curHadr->Get4Momentum().m()-mNeut-mNeut)<.1) { - hPDG=90000002; - hBN=2; - G4cout<<"--Warning--G4QEnv::FSI:3->2 neutrons conversion (***Check it***)"<<G4endl; - } - // End of the Temporary Correction - if (!hCG&&!hST) hPDG=90000001; - else if(hBN==hCG&&!hST) hPDG=90001000; - else if(!hCG&&hST==hBN) hPDG=91000000; - else throw G4QException("***G4QEnvironment::FSInteract: MultyDibaryon cant be here"); - G4LorentzVector newLV=(curHadr->Get4Momentum())/hBN; - curHadr->Set4Momentum(newLV); - curHadr->SetQPDG(G4QPDGCode(hPDG)); - for(G4int bd=1; bd<hBN; bd++) - { - G4QHadron* secHadr = new G4QHadron(curHadr); - theQHadrons.push_back(secHadr); // (del.eq.- user is responsible for del) - //theFragments->push_back(secHadr);// (del.equiv. - user is responsible for that) - } - } - else if(hST<0 && hBN>0) // AntistrangeNucleus (@@ see above, already done) + G4cout<<"G4QEnv::FSI: Isonucleus decay result h#="<<hd<<", outPDG="<<hPDG<<G4endl; +#endif + } + else if ( hBN > 1 && + ( (hBN == hCG && !hST) || + (!hCG && !hST) || + (!hCG && hST==hBN) ) ) //(n*P, n*N, or n*L) + { + // *** Temporary Correction *** (To find out where is the error) + if(hPDG==90000003 && fabs(curHadr->Get4Momentum().m()-mNeut-mNeut)<.1) { + hPDG=90000002; + hBN=2; + G4cout<<"--Warning--G4QEnv::FSI:3->2 neutrons conversion (***Check it***)"<<G4endl; + } + // End of the Temporary Correction + if (!hCG&&!hST) hPDG=90000001; + else if(hBN==hCG&&!hST) hPDG=90001000; + else if(!hCG&&hST==hBN) hPDG=91000000; + else throw G4QException("***G4QEnvironment::FSInteract: MultyDibaryon cant be here"); + G4LorentzVector newLV=(curHadr->Get4Momentum())/hBN; + curHadr->Set4Momentum(newLV); + curHadr->SetQPDG(G4QPDGCode(hPDG)); + for(G4int bd=1; bd<hBN; bd++) + { + G4QHadron* secHadr = new G4QHadron(curHadr); + theQHadrons.push_back(secHadr); // (del.eq.- user is responsible for del) + //theFragments->push_back(secHadr);// (del.equiv. - user is responsible for that) + } + } + else if(hST<0 && hBN>0) // AntistrangeNucleus (@@ see above, already done) { - G4LorentzVector r4M=curHadr->Get4Momentum(); // Real 4-mom of theAntiStrangeNucleus - G4double reM=r4M.m(); // Real mass of the antiStrange nucleus - G4QContent nQC=curHadr->GetQC(); // QCont of the Antistrange nucleus - G4QNucleus newN0(nQC-K0QC); - G4int RPDG=newN0.GetPDG(); - G4double mR=newN0.GetMZNS(); // Residual mass for K0 - G4double mKaon=mK0; // Prototype is mass of K0 - G4int kPDG =311; // Prototype is PDG of K0 - G4QNucleus newNp(nQC-KpQC); - G4double mp=newNp.GetMZNS(); // Residual mass for K+ - if(mp+mK<mR+mK0) // Select K+ as the minimum mass of products - { - mR=mp; - RPDG=newNp.GetPDG(); - mKaon=mK; - kPDG=321; - } - G4double sum=mR+mKaon; - if(sum>reM) // for GEANT4 (Can not decay in kaon and residual) + G4LorentzVector r4M=curHadr->Get4Momentum(); // Real 4-mom of theAntiStrangeNucleus + G4double reM=r4M.m(); // Real mass of the antiStrange nucleus + G4QContent nQC=curHadr->GetQC(); // QCont of the Antistrange nucleus + G4QNucleus newN0(nQC-K0QC); + G4int RPDG=newN0.GetPDG(); + G4double mR=newN0.GetMZNS(); // Residual mass for K0 + G4double mKaon=mK0; // Prototype is mass of K0 + G4int kPDG =311; // Prototype is PDG of K0 + G4QNucleus newNp(nQC-KpQC); + G4double mp=newNp.GetMZNS(); // Residual mass for K+ + if(mp+mK<mR+mK0) // Select K+ as the minimum mass of products + { + mR=mp; + RPDG=newNp.GetPDG(); + mKaon=mK; + kPDG=321; + } + G4double sum=mR+mKaon; + if(sum>reM) // for GEANT4 (Can not decay in kaon and residual) { - if(kPDG==321) // *** Very seldom *** "K+->pi+ conversion" + if(kPDG==321) // *** Very seldom *** "K+->pi+ conversion" { - kPDG=211; - mKaon=mPi; + kPDG=211; + mKaon=mPi; } - else // *** Very seldom *** "K0(S=-1)->pi- conversion" + else // *** Very seldom *** "K0(S=-1)->pi- conversion" { - kPDG=111; - mKaon=mPi0; + kPDG=111; + mKaon=mPi0; } - sum=mR+mKaon; - } - G4LorentzVector n4M(0.,0.,0.,mR); - G4LorentzVector k4M(0.,0.,0.,mKaon); - if(fabs(reM-sum)<eps) + sum=mR+mKaon; + } + G4LorentzVector n4M(0.,0.,0.,mR); + G4LorentzVector k4M(0.,0.,0.,mKaon); + if(fabs(reM-sum)<eps) { - n4M=r4M*(mR/sum); - k4M=r4M*(mKaon/sum); - } - else if(reM<sum || !G4QHadron(r4M).DecayIn2(n4M,k4M)) - { - G4cout<<"---Warning---G4QE::FSI: Try to recover ASN="<<hPDG<<","<<reM<<"<"<<mR<<"+" - <<mKaon<<"="<<sum<<G4endl; - if(!theEnvironment.GetA()) - { - G4QHadron* theLast = curHadr; // Prototype of Pointer to theLastHadron - G4QHadron* qH = new G4QHadron(curHadr);// Copy of the Current Hadron - if(hd+1<theQHadrons.size()) // If ipo<Last, swap CurHadr & LastHadr - { - theLast = theQHadrons[theQHadrons.size()-1]; // Pointer to LastHadr(ipo<Last) - G4QPDGCode lQP=theLast->GetQPDG(); // The QPDG of the last - if(lQP.GetPDGCode()!=10) curHadr->SetQPDG(lQP); //CurHadr instead of PrevHadr - else curHadr->SetQC(theLast->GetQC()); // CurHadrPDG instead of LastHadrPDG - curHadr->Set4Momentum(theLast->Get4Momentum()); // ... 4Momentum substitution - } - theQHadrons.pop_back(); // exclude theLastHadron pointer from the OUTPUT - delete theLast; //*!! When killing, DON'T forget to delete the last QHadron !!* - G4Quasmon* quasH = new G4Quasmon(qH->GetQC(),qH->Get4Momentum());//Fake Quasmon - if(!CheckGroundState(quasH,true)) // Try to correct by other hadrons - { - qH->SetNFragments(-1); //@@ To avoid looping - G4cout<<"---Warning---G4QE::FSI:AntiStraN Failed LeaveAsItIs 4m="<<r4M<<G4endl; - theQHadrons.push_back(qH); // Leave as it is (delete equivalent) - } - else - { - delete qH; - nHadr=theQHadrons.size(); - } - delete quasH; - fOK=false; + n4M=r4M*(mR/sum); + k4M=r4M*(mKaon/sum); + } + else if(reM<sum || !G4QHadron(r4M).DecayIn2(n4M,k4M)) + { + G4cout<<"---Warning---G4QE::FSI: Try to recover ASN="<<hPDG<<","<<reM<<"<"<<mR<<"+" + <<mKaon<<"="<<sum<<G4endl; + if(!theEnvironment.GetA()) + { + G4QHadron* theLast = curHadr; // Prototype of Pointer to theLastHadron + G4QHadron* qH = new G4QHadron(curHadr);// Copy of the Current Hadron + if(hd+1<theQHadrons.size()) // If ipo<Last, swap CurHadr & LastHadr + { + theLast = theQHadrons[theQHadrons.size()-1]; // Pointer to LastHadr(ipo<Last) + G4QPDGCode lQP=theLast->GetQPDG(); // The QPDG of the last + if(lQP.GetPDGCode()!=10) curHadr->SetQPDG(lQP); //CurHadr instead of PrevHadr + else curHadr->SetQC(theLast->GetQC()); // CurHadrPDG instead of LastHadrPDG + curHadr->Set4Momentum(theLast->Get4Momentum()); // ... 4Momentum substitution + } + theQHadrons.pop_back(); // exclude theLastHadron pointer from the OUTPUT + delete theLast; //*!! When killing, DON'T forget to delete the last QHadron !!* + G4Quasmon* quasH = new G4Quasmon(qH->GetQC(),qH->Get4Momentum());//Fake Quasmon + if(!CheckGroundState(quasH,true)) // Try to correct by other hadrons + { + qH->SetNFragments(-1); //@@ To avoid looping + G4cout<<"---Warning---G4QE::FSI:AntiStraN Failed LeaveAsItIs 4m="<<r4M<<G4endl; + theQHadrons.push_back(qH); // Leave as it is (delete equivalent) + } + else + { + delete qH; + nHadr=theQHadrons.size(); + } + delete quasH; + fOK=false; } - else - { - G4cerr<<"***G4QEnv::FSI: No Final AntiSN recovery, E="<<theEnvironment<<G4endl; - throw G4QException("***G4QEnvironment::FSInter:AntistrangeNucleus decayError"); - } - } - if(fOK) - { + else + { + G4cerr<<"***G4QEnv::FSI: No Final AntiSN recovery, E="<<theEnvironment<<G4endl; + throw G4QException("***G4QEnvironment::FSInter:AntistrangeNucleus decayError"); + } + } + if(fOK) + { #ifdef fdebug - G4cout<<"G4QE::FSI:AntiSN==>"<<r4M<<"->A="<<RPDG<<n4M<<"+K="<<kPDG<<k4M<<G4endl; -#endif - curHadr->Set4Momentum(k4M); // Kaon - curHadr->SetQPDG(G4QPDGCode(kPDG)); - G4QHadron* theRes = new G4QHadron(RPDG,n4M);// Make a New Hadr for the residual - EvaporateResidual(theRes); // Try to evaporate theResNuc (del.eq.) - } - } - else if(hPDG>90500000&&hPDG!=91000000&&hPDG!=91000999&&hPDG!=90999001) // Only for G4 + G4cout<<"G4QE::FSI:AntiSN==>"<<r4M<<"->A="<<RPDG<<n4M<<"+K="<<kPDG<<k4M<<G4endl; +#endif + curHadr->Set4Momentum(k4M); // Kaon + curHadr->SetQPDG(G4QPDGCode(kPDG)); + G4QHadron* theRes = new G4QHadron(RPDG,n4M);// Make a New Hadr for the residual + EvaporateResidual(theRes); // Try to evaporate theResNuc (del.eq.) + } + } + else if(hPDG>90500000&&hPDG!=91000000&&hPDG!=91000999&&hPDG!=90999001) // Only for G4 // @@ Xi & Omega- can be added here ^^^, if show up below { #ifdef pdebug - G4cout<<"***G4QEnvironment::FSI:*G4* Hypernucleus PDG="<<hPDG<<" must decay"<<G4endl; + G4cout<<"***G4QEnvironment::FSI:*G4* Hypernucleus PDG="<<hPDG<<" must decay"<<G4endl; #endif - G4int nL=curHadr->GetStrangeness(); // A number of Lambdas in the Hypernucleus - G4int nB=curHadr->GetBaryonNumber(); // Total Baryon Number of the Hypernucleus - G4int nC=curHadr->GetCharge(); // Charge of the Hypernucleus - G4int nSM=0; // A#0f unavoidable Sigma- - G4int nSP=0; // A#0f unavoidable Sigma+ - if(nC<0) // Negative hypernucleus + G4int nL=curHadr->GetStrangeness(); // A number of Lambdas in the Hypernucleus + G4int nB=curHadr->GetBaryonNumber(); // Total Baryon Number of the Hypernucleus + G4int nC=curHadr->GetCharge(); // Charge of the Hypernucleus + G4int nSM=0; // A#0f unavoidable Sigma- + G4int nSP=0; // A#0f unavoidable Sigma+ + if(nC<0) // Negative hypernucleus { - if(-nC<=nL) + if(-nC<=nL) { - nSM=-nC; // Can be compensated by Sigma- - nL+=nC; // Reduce the residual strangeness - } - else + nSM=-nC; // Can be compensated by Sigma- + nL+=nC; // Reduce the residual strangeness + } + else { - nSM=nL; // The maximum number of Sigma- - nL=0; // Kill the residual strangeness - } - } - else if(nC>nB-nL) // Extra positive hypernucleus + nSM=nL; // The maximum number of Sigma- + nL=0; // Kill the residual strangeness + } + } + else if(nC>nB-nL) // Extra positive hypernucleus { - if(nC<=nB) + if(nC<=nB) { - G4int dH=nB-nC; - nSP=nL-dH; // Can be compensated by Sigma+ - nL=dH; // Reduce the residual strangeness - } - else + G4int dH=nB-nC; + nSP=nL-dH; // Can be compensated by Sigma+ + nL=dH; // Reduce the residual strangeness + } + else { - nSP=nL; // The maximum number of Sigma+ - nL=0; // Kill the residual strangeness - } - } - G4LorentzVector r4M=curHadr->Get4Momentum(); // Real 4-momentum of the hypernucleus - G4double reM=r4M.m(); // Real mass of the hypernucleus - G4int rlPDG = hPDG-nL*1000000-nSP*1000999-nSM*999001;// Subtract Lamb/Sig from Nucl - G4int sPDG=3122; // Prototype for the Hyperon PDG (Lambda) - G4double MLa=mLamb; // Prototype for one Hyperon decay -#ifdef pdebug - G4cout<<"G4QEnvironment::FSI:*G4* nS+="<<nSP<<", nS-="<<nSM<<", nL="<<nL<<G4endl; -#endif - if(nSP||nSM) + nSP=nL; // The maximum number of Sigma+ + nL=0; // Kill the residual strangeness + } + } + G4LorentzVector r4M=curHadr->Get4Momentum(); // Real 4-momentum of the hypernucleus + G4double reM=r4M.m(); // Real mass of the hypernucleus + G4int rlPDG = hPDG-nL*1000000-nSP*1000999-nSM*999001;// Subtract Lamb/Sig from Nucl + G4int sPDG=3122; // Prototype for the Hyperon PDG (Lambda) + G4double MLa=mLamb; // Prototype for one Hyperon decay +#ifdef pdebug + G4cout<<"G4QEnvironment::FSI:*G4* nS+="<<nSP<<", nS-="<<nSM<<", nL="<<nL<<G4endl; +#endif + if(nSP||nSM) { - if(nL) - { - G4cout<<"***G4QE::FSI: HypNPDG="<<hPDG<<": both Sigm&Lamb -> Improve it"<<G4endl; - //throw G4QException("*G4QEnvironment::FSInter: Both Lambda&Sigma in Hypernucl"); - // @@ Correction, which does not conserv the charge !! (-> add decay in 3) - if(nSP) nL+=nSP; - else nL+=nSM; - } - if(nSP) + if(nL) + { + G4cout<<"***G4QE::FSI: HypNPDG="<<hPDG<<": both Sigm&Lamb -> Improve it"<<G4endl; + //throw G4QException("*G4QEnvironment::FSInter: Both Lambda&Sigma in Hypernucl"); + // @@ Correction, which does not conserv the charge !! (-> add decay in 3) + if(nSP) nL+=nSP; + else nL+=nSM; + } + if(nSP) { - nL=nSP; - sPDG=3222; - MLa=mSigP; - } - else + nL=nSP; + sPDG=3222; + MLa=mSigP; + } + else { - nL=nSM; - sPDG=3112; - MLa=mSigM; - } - } + nL=nSM; + sPDG=3112; + MLa=mSigM; + } + } #ifdef pdebug - G4cout<<"G4QEnvironment::FSI:*G4* mS="<<MLa<<", sPDG="<<sPDG<<", nL="<<nL<<G4endl; + G4cout<<"G4QEnvironment::FSI:*G4* mS="<<MLa<<", sPDG="<<sPDG<<", nL="<<nL<<G4endl; #endif - if(nL>1) MLa*=nL; - G4double rlM=G4QNucleus(rlPDG).GetMZNS();// Mass of the new residualNonstrangeNucleus - if(!nSP&&!nSM&&nL==1&&reM>rlM+mSigZ&&G4UniformRand()>.5) // Sigma0 @@ AddToHadroniz.? + if(nL>1) MLa*=nL; + G4double rlM=G4QNucleus(rlPDG).GetMZNS();// Mass of the new residualNonstrangeNucleus + if(!nSP&&!nSM&&nL==1&&reM>rlM+mSigZ&&G4UniformRand()>.5) // Sigma0 @@ AddToHadroniz.? { - sPDG=3212; - MLa=mSigZ; - } - G4int rnPDG = hPDG-nL*999999; // Convert Lambdas to neutrons (for convInN) - G4QNucleus rnN(rnPDG); // New nonstrange nucleus - G4double rnM=rnN.GetMZNS(); // Mass of the new nonstrange nucleus - // @@ Take into account that there can be Iso-Hypernucleus (Add PI+,R & Pi-,R decays) - if(rlPDG==90000000) // Multy Hyperon (HyperNuc of only hyperons) + sPDG=3212; + MLa=mSigZ; + } + G4int rnPDG = hPDG-nL*999999; // Convert Lambdas to neutrons (for convInN) + G4QNucleus rnN(rnPDG); // New nonstrange nucleus + G4double rnM=rnN.GetMZNS(); // Mass of the new nonstrange nucleus + // @@ Take into account that there can be Iso-Hypernucleus (Add PI+,R & Pi-,R decays) + if(rlPDG==90000000) // Multy Hyperon (HyperNuc of only hyperons) { - if(nL>1) r4M=r4M/nL; // split the 4-mom for the MultyLambda - for(G4int il=0; il<nL; il++) // loop over Lambdas - { - G4QHadron* theLam = new G4QHadron(sPDG,r4M);// Make a New Hadr for the Hyperon - theQHadrons.push_back(theLam); // (del.eq.- user is responsible for del) - } - } + if(nL>1) r4M=r4M/nL; // split the 4-mom for the MultyLambda + for(G4int il=0; il<nL; il++) // loop over Lambdas + { + G4QHadron* theLam = new G4QHadron(sPDG,r4M);// Make a New Hadr for the Hyperon + theQHadrons.push_back(theLam); // (del.eq.- user is responsible for del) + } + } else if(reM>rlM+MLa-eps) // Lambda(or Sigma) can be split { - G4LorentzVector n4M(0.,0.,0.,rlM); - G4LorentzVector h4M(0.,0.,0.,MLa); - G4double sum=rlM+MLa; - if(fabs(reM-sum)<eps) + G4LorentzVector n4M(0.,0.,0.,rlM); + G4LorentzVector h4M(0.,0.,0.,MLa); + G4double sum=rlM+MLa; + if(fabs(reM-sum)<eps) { - n4M=r4M*(rlM/sum); - h4M=r4M*(MLa/sum); - } - else if(reM<sum || !G4QHadron(r4M).DecayIn2(n4M,h4M)) - { - G4cerr<<"***G4QE::FSI:Hypern, M="<<reM<<"<A+n*L="<<sum<<",d="<<sum-reM<<G4endl; - throw G4QException("***G4QEnvironment::FSInter: Hypernuclear L-decay error"); - } -#ifdef pdebug - G4cout<<"*G4QE::FSI:HypN "<<r4M<<"->A="<<rlPDG<<n4M<<", n*Lamb="<<nL<<h4M<<G4endl; -#endif - curHadr->Set4Momentum(n4M); - curHadr->SetQPDG(G4QPDGCode(rlPDG)); // converted hypernucleus - if(rlPDG==90000002) // Additional action with curHadr change + n4M=r4M*(rlM/sum); + h4M=r4M*(MLa/sum); + } + else if(reM<sum || !G4QHadron(r4M).DecayIn2(n4M,h4M)) + { + G4cerr<<"***G4QE::FSI:Hypern, M="<<reM<<"<A+n*L="<<sum<<",d="<<sum-reM<<G4endl; + throw G4QException("***G4QEnvironment::FSInter: Hypernuclear L-decay error"); + } +#ifdef pdebug + G4cout<<"*G4QE::FSI:HypN "<<r4M<<"->A="<<rlPDG<<n4M<<", n*Lamb="<<nL<<h4M<<G4endl; +#endif + curHadr->Set4Momentum(n4M); + curHadr->SetQPDG(G4QPDGCode(rlPDG)); // converted hypernucleus + if(rlPDG==90000002) // Additional action with curHadr change { - G4LorentzVector newLV=n4M/2.; - curHadr->Set4Momentum(newLV); - curHadr->SetQPDG(G4QPDGCode(90000001)); - G4QHadron* secHadr = new G4QHadron(curHadr); - theQHadrons.push_back(secHadr); // (del.eq.- user is responsible for del) - } - else if(rlPDG==90002000) // Additional action with curHadr change + G4LorentzVector newLV=n4M/2.; + curHadr->Set4Momentum(newLV); + curHadr->SetQPDG(G4QPDGCode(90000001)); + G4QHadron* secHadr = new G4QHadron(curHadr); + theQHadrons.push_back(secHadr); // (del.eq.- user is responsible for del) + } + else if(rlPDG==90002000) // Additional action with curHadr change { - G4LorentzVector newLV=n4M/2.; - curHadr->Set4Momentum(newLV); - curHadr->SetQPDG(G4QPDGCode(90001000)); - G4QHadron* secHadr = new G4QHadron(curHadr); - theQHadrons.push_back(secHadr); // (del.eq.- user is responsible for del) - } - // @@(?) Add multybaryon decays if necessary (Now it anyhow is made later) + G4LorentzVector newLV=n4M/2.; + curHadr->Set4Momentum(newLV); + curHadr->SetQPDG(G4QPDGCode(90001000)); + G4QHadron* secHadr = new G4QHadron(curHadr); + theQHadrons.push_back(secHadr); // (del.eq.- user is responsible for del) + } + // @@(?) Add multybaryon decays if necessary (Now it anyhow is made later) #ifdef fdebug - G4cout<<"*G4QE::FSI: resNucPDG="<<curHadr->GetPDGCode()<<G4endl; -#endif - if(nL>1) h4M=h4M/nL; // split the lambda's 4-mom if necessary - for(G4int il=0; il<nL; il++) // loop over excessive - { - G4QHadron* theLamb = new G4QHadron(sPDG,h4M);// Make a New Hadr for the Hyperon - theQHadrons.push_back(theLamb); // (del.eq.- user is responsible for del) - } - } + G4cout<<"*G4QE::FSI: resNucPDG="<<curHadr->GetPDGCode()<<G4endl; +#endif + if(nL>1) h4M=h4M/nL; // split the lambda's 4-mom if necessary + for(G4int il=0; il<nL; il++) // loop over excessive + { + G4QHadron* theLamb = new G4QHadron(sPDG,h4M);// Make a New Hadr for the Hyperon + theQHadrons.push_back(theLamb); // (del.eq.- user is responsible for del) + } + } else if(reM>rnM+mPi0-eps&&!nSP&&!nSM) // Lambda->N only if Sigmas are absent { - G4int nPi=static_cast<G4int>((reM-rnM)/mPi0); - if (nPi>nL) nPi=nL; - G4double npiM=nPi*mPi0; - G4LorentzVector n4M(0.,0.,0.,rnM); - G4LorentzVector h4M(0.,0.,0.,npiM); - G4double sum=rnM+npiM; - if(fabs(reM-sum)<eps) + G4int nPi=static_cast<G4int>((reM-rnM)/mPi0); + if (nPi>nL) nPi=nL; + G4double npiM=nPi*mPi0; + G4LorentzVector n4M(0.,0.,0.,rnM); + G4LorentzVector h4M(0.,0.,0.,npiM); + G4double sum=rnM+npiM; + if(fabs(reM-sum)<eps) { - n4M=r4M*(rnM/sum); - h4M=r4M*(npiM/sum); - } - else if(reM<sum || !G4QHadron(r4M).DecayIn2(n4M,h4M)) - { - G4cerr<<"***G4QE::FSI:Hypern, M="<<reM<<"<A+n*Pi0="<<sum<<",d="<<sum-reM<<G4endl; - throw G4QException("***G4QEnvironment::FSInter: Hypernuclear decay error"); - } - curHadr->Set4Momentum(n4M); - curHadr->SetQPDG(G4QPDGCode(rnPDG)); // converted hypernucleus + n4M=r4M*(rnM/sum); + h4M=r4M*(npiM/sum); + } + else if(reM<sum || !G4QHadron(r4M).DecayIn2(n4M,h4M)) + { + G4cerr<<"***G4QE::FSI:Hypern, M="<<reM<<"<A+n*Pi0="<<sum<<",d="<<sum-reM<<G4endl; + throw G4QException("***G4QEnvironment::FSInter: Hypernuclear decay error"); + } + curHadr->Set4Momentum(n4M); + curHadr->SetQPDG(G4QPDGCode(rnPDG)); // converted hypernucleus #ifdef fdebug - G4cout<<"*G4QE::FSI:HypN "<<r4M<<"->A="<<rnPDG<<n4M<<",n*Pi0="<<nPi<<h4M<<G4endl; -#endif - if(nPi>1) h4M=h4M/nPi; // split the 4-mom if necessary - for(G4int ihn=0; ihn<nPi; ihn++) // loop over additional pions - { - G4QHadron* thePion = new G4QHadron(111,h4M);// Make a New Hadr for the pion - theQHadrons.push_back(thePion); // (del.eq.- user is responsible for del) - //theFragments->push_back(thePion); // (delete equivalent for the pion) - } - if(rnPDG==90000002) // Additional action with curHadr change + G4cout<<"*G4QE::FSI:HypN "<<r4M<<"->A="<<rnPDG<<n4M<<",n*Pi0="<<nPi<<h4M<<G4endl; +#endif + if(nPi>1) h4M=h4M/nPi; // split the 4-mom if necessary + for(G4int ihn=0; ihn<nPi; ihn++) // loop over additional pions + { + G4QHadron* thePion = new G4QHadron(111,h4M);// Make a New Hadr for the pion + theQHadrons.push_back(thePion); // (del.eq.- user is responsible for del) + //theFragments->push_back(thePion); // (delete equivalent for the pion) + } + if(rnPDG==90000002) // Additional action with curHadr change { - G4LorentzVector newLV=n4M/2.; - curHadr->Set4Momentum(newLV); - curHadr->SetQPDG(G4QPDGCode(90000001)); - G4QHadron* secHadr = new G4QHadron(curHadr); - theQHadrons.push_back(secHadr); // (del.eq.- user is responsible for del) - //theFragments->push_back(secHadr); // (del.eq.- user is responsible for del) - } - else if(rnPDG==90002000) // Additional action with curHadr change + G4LorentzVector newLV=n4M/2.; + curHadr->Set4Momentum(newLV); + curHadr->SetQPDG(G4QPDGCode(90000001)); + G4QHadron* secHadr = new G4QHadron(curHadr); + theQHadrons.push_back(secHadr); // (del.eq.- user is responsible for del) + //theFragments->push_back(secHadr); // (del.eq.- user is responsible for del) + } + else if(rnPDG==90002000) // Additional action with curHadr change { - G4LorentzVector newLV=n4M/2.; - curHadr->Set4Momentum(newLV); - curHadr->SetQPDG(G4QPDGCode(90001000)); - G4QHadron* secHadr = new G4QHadron(curHadr); - theQHadrons.push_back(secHadr); // (del.eq.- user is responsible for del) - //theFragments->push_back(secHadr); // (del.eq.- user is responsible for del) - } - // @@ Add multybaryon decays if necessary - } - else // If this Excepton shows up (lowProbable appearance) => include gamma decay + G4LorentzVector newLV=n4M/2.; + curHadr->Set4Momentum(newLV); + curHadr->SetQPDG(G4QPDGCode(90001000)); + G4QHadron* secHadr = new G4QHadron(curHadr); + theQHadrons.push_back(secHadr); // (del.eq.- user is responsible for del) + //theFragments->push_back(secHadr); // (del.eq.- user is responsible for del) + } + // @@ Add multybaryon decays if necessary + } + else // If this Excepton shows up (lowProbable appearance) => include gamma decay { - G4double d=rlM+MLa-reM; + G4double d=rlM+MLa-reM; G4cerr<<"G4QE::FSI:R="<<rlM<<",S+="<<nSP<<",S-="<<nSM<<",L="<<nL<<",d="<<d<<G4endl; - d=rnM+mPi0-reM; + d=rnM+mPi0-reM; G4cerr<<"***G4QE::FSI: HypN="<<hPDG<<", M="<<reM<<"<"<<rnM+mPi0<<",d="<<d<<G4endl; - throw G4QException("G4QEnvironment::FSInteract: Hypernuclear conversion"); - } - } - //unsigned nHd=theQHadrons.size()-1; - //if(hd==nHd && !fOK) + throw G4QException("G4QEnvironment::FSInteract: Hypernuclear conversion"); + } + } + //unsigned nHd=theQHadrons.size()-1; + //if(hd==nHd && !fOK) //{ - // G4cout<<"---Warning---G4QE::FSI: The Last #"<<hd<<" hadron must be filled"<<G4endl; + // G4cout<<"---Warning---G4QE::FSI: The Last #"<<hd<<" hadron must be filled"<<G4endl; // fOK=true; - // curHadr = new G4QHadron(theQHadrons[hd]); - //} - //if(fOK) theFragments->push_back(curHadr); //(del eq. - user is responsible for del) - //else hd--; - if(!fOK) hd--; - } // + // curHadr = new G4QHadron(theQHadrons[hd]); + //} + //if(fOK) theFragments->push_back(curHadr); //(del eq. - user is responsible for del) + //else hd--; + if(!fOK) hd--; + } // #ifdef fdebug - G4cout<<"G4QE::FSI:==>OUT,nH="<<theQHadrons.size()<<",nF="<<theFragments->size()<<G4endl; -#endif - // *** (Final) Charge Control Sum Calculation for the Charge Conservation Check *** - //nHadr=theFragments->size(); - nHadr=theQHadrons.size(); - G4int cfContSum=0; // Final ChargeControlSum - G4int bfContSum=0; // Final BaryonNumberControlSum - if(nHadr)for(unsigned f=0; f<nHadr; f++) - { - G4QHadron* curHadr = new G4QHadron(theQHadrons[f]); -#ifdef pdebug - G4cout<<"G4QE::FSI:#"<<f<<curHadr->Get4Momentum()<<curHadr->GetPDGCode()<<G4endl; -#endif - if(!(curHadr->GetNFragments())) - { - G4int chg=curHadr->GetCharge(); - cfContSum+=chg; - G4int brn=curHadr->GetBaryonNumber(); - bfContSum+=brn; - G4int str=curHadr->GetStrangeness(); - if ( brn > 1 && - ( (!str && (chg == brn || !chg)) || - (!chg && str == brn) ) ) // Check for multibaryon(split) - { - G4int bPDG=90000001; // Prototype: multineutron - if (chg==brn) bPDG=90001000; // Multyproton - else if(str==brn) bPDG=91000000; // Multilambda - G4LorentzVector sp4m=curHadr->Get4Momentum()/brn; // Split 4-mom of the Multibaryon - curHadr->Set4Momentum(sp4m); - curHadr->SetQPDG(G4QPDGCode(bPDG)); // Substitute Multibaryon by a baryon - for (G4int ib=1; ib<brn; ib++) + G4cout<<"G4QE::FSI:==>OUT,nH="<<theQHadrons.size()<<",nF="<<theFragments->size()<<G4endl; +#endif + // *** (Final) Charge Control Sum Calculation for the Charge Conservation Check *** + //nHadr=theFragments->size(); + nHadr=theQHadrons.size(); + G4int cfContSum=0; // Final ChargeControlSum + G4int bfContSum=0; // Final BaryonNumberControlSum + if(nHadr)for(unsigned f=0; f<nHadr; f++) + { + G4QHadron* curHadr = new G4QHadron(theQHadrons[f]); +#ifdef pdebug + G4cout<<"G4QE::FSI:#"<<f<<curHadr->Get4Momentum()<<curHadr->GetPDGCode()<<G4endl; +#endif + if(!(curHadr->GetNFragments())) + { + G4int chg=curHadr->GetCharge(); + cfContSum+=chg; + G4int brn=curHadr->GetBaryonNumber(); + bfContSum+=brn; + G4int str=curHadr->GetStrangeness(); + if ( brn > 1 && + ( (!str && (chg == brn || !chg)) || + (!chg && str == brn) ) ) // Check for multibaryon(split) + { + G4int bPDG=90000001; // Prototype: multineutron + if (chg==brn) bPDG=90001000; // Multyproton + else if(str==brn) bPDG=91000000; // Multilambda + G4LorentzVector sp4m=curHadr->Get4Momentum()/brn; // Split 4-mom of the Multibaryon + curHadr->Set4Momentum(sp4m); + curHadr->SetQPDG(G4QPDGCode(bPDG)); // Substitute Multibaryon by a baryon + for (G4int ib=1; ib<brn; ib++) { - G4QHadron* bH = new G4QHadron(bPDG, sp4m); - theFragments->push_back(bH); //(del eq. - user is responsible for deleting) - } - } - theFragments->push_back(curHadr); //(del eq. - user is responsible for deleting) - } - } - if(cfContSum-chContSum || bfContSum-bnContSum) - { - G4cerr<<"*G4QE::FSI:(9) Ch="<<cfContSum-chContSum<<",Bn="<<bfContSum-bnContSum<<G4endl; + G4QHadron* bH = new G4QHadron(bPDG, sp4m); + theFragments->push_back(bH); //(del eq. - user is responsible for deleting) + } + } + theFragments->push_back(curHadr); //(del eq. - user is responsible for deleting) + } + } #ifdef chdebug - throw G4QException("G4QEnvironment::FSInteract: (9) Charge is not conserved"); + if(cfContSum-chContSum || bfContSum-bnContSum) // @@ TIA Residual Nucleus correction! + { + G4cerr<<"*G4QE::FSI:(9) Ch="<<cfContSum-chContSum<<",Bn="<<bfContSum-bnContSum<<G4endl; + + throw G4QException("G4QEnvironment::FSInteract: (9) Charge is not conserved"); + } #endif - } - // *** - return theFragments; + // *** + return theFragments; } // End of "FSInteraction" //The public Quasmons duplication with delete responsibility of User (!) G4QuasmonVector* G4QEnvironment::GetQuasmons() {// ============================= - G4int nQ=theQuasmons.size(); + G4int nQ=theQuasmons.size(); #ifdef pdebug - G4cout<<"G4QEnvironment::GetQuasmons is called nQ="<<nQ<<G4endl; + G4cout<<"G4QEnvironment::GetQuasmons is called nQ="<<nQ<<G4endl; #endif - G4QuasmonVector* quasmons = new G4QuasmonVector; // !! User is responsible to delet it - if(nQ) for(G4int iq=0; iq<nQ; iq++) - { + G4QuasmonVector* quasmons = new G4QuasmonVector; // !! User is responsible to delet it + if(nQ) for(G4int iq=0; iq<nQ; iq++) + { #ifdef pdebug - G4cout<<"G4QEnv::GetQuasm:Q#"<<iq<<",QQPDG="<<theQuasmons[iq]->GetQPDG()<<",QQC=" - <<theQuasmons[iq]->GetQC()<<",M="<<theQuasmons[iq]->Get4Momentum().m()<<G4endl; + G4cout<<"G4QEnv::GetQuasm:Q#"<<iq<<",QQPDG="<<theQuasmons[iq]->GetQPDG()<<",QQC=" + <<theQuasmons[iq]->GetQC()<<",M="<<theQuasmons[iq]->Get4Momentum().m()<<G4endl; #endif - G4Quasmon* curQ = new G4Quasmon(theQuasmons[iq]); - quasmons->push_back(curQ); // (delete equivalent - user is responsible) - } + G4Quasmon* curQ = new G4Quasmon(theQuasmons[iq]); + quasmons->push_back(curQ); // (delete equivalent - user is responsible) + } #ifdef pdebug - G4cout<<"G4QEnvironment::GetQuasmons ===OUT==="<<G4endl; + G4cout<<"G4QEnvironment::GetQuasmons ===OUT==="<<G4endl; #endif - return quasmons; + return quasmons; } // End of GetQuasmons //The public QHadrons duplication with delete responsibility of User (!) G4QHadronVector* G4QEnvironment::GetQHadrons() {// ============================= - G4int nH=theQHadrons.size(); + G4int nH=theQHadrons.size(); #ifdef pdebug - G4cout<<"G4QEnvironment::GetQHadrons is called nH="<<nH<<G4endl; + G4cout<<"G4QEnvironment::GetQHadrons is called nH="<<nH<<G4endl; #endif - G4QHadronVector* hadrons = new G4QHadronVector; // !! User is responsible to delet it - if(nH) for(G4int ih=0; ih<nH; ih++) - { + G4QHadronVector* hadrons = new G4QHadronVector; // !! User is responsible to delet it + if(nH) for(G4int ih=0; ih<nH; ih++) + { #ifdef pdebug - G4cout<<"G4QEnv::GetQHadrons:H#"<<ih<<",HQPDG="<<theQHadrons[ih]->GetQPDG()<<",HQC=" - <<theQHadrons[ih]->GetQC()<<",HM="<<theQHadrons[ih]->GetMass()<<G4endl; + G4cout<<"G4QEnv::GetQHadrons:H#"<<ih<<",HQPDG="<<theQHadrons[ih]->GetQPDG()<<",HQC=" + <<theQHadrons[ih]->GetQC()<<",HM="<<theQHadrons[ih]->GetMass()<<G4endl; #endif - G4QHadron* curH = new G4QHadron(theQHadrons[ih]); - hadrons->push_back(curH); // (del. equiv. - user is responsibile) - } + G4QHadron* curH = new G4QHadron(theQHadrons[ih]); + hadrons->push_back(curH); // (del. equiv. - user is responsibile) + } #ifdef pdebug - G4cout<<"G4QEnvironment::GetQHadrons ===OUT=== Copied nQH="<<hadrons->size()<<G4endl; + G4cout<<"G4QEnvironment::GetQHadrons ===OUT=== Copied nQH="<<hadrons->size()<<G4endl; #endif - return hadrons; + return hadrons; } // End of GetQHadrons //Public QHadrons cleaning up after extraction (GetQHadrons) between Construct and Fragment void G4QEnvironment::CleanUpQHadrons() {// ================================= - for_each(theQHadrons.begin(), theQHadrons.end(), DeleteQHadron()); - theQHadrons.clear(); + for_each(theQHadrons.begin(), theQHadrons.end(), DeleteQHadron()); + theQHadrons.clear(); } // End of CleanUpQHadrons //The public FillQHadrons filling. It must be used only internally in CHIPS void G4QEnvironment::FillQHadrons(G4QHadronVector* input) {// ==================================== - G4int nH=input->size(); + G4int nH=input->size(); #ifdef pdebug - G4cout<<"G4QEnvironment::FillQHadrons is called nH="<<nH<<G4endl; + G4cout<<"G4QEnvironment::FillQHadrons is called nH="<<nH<<G4endl; #endif - if(nH) for(G4int ih=0; ih<nH; ih++) - { + if(nH) for(G4int ih=0; ih<nH; ih++) + { #ifdef pdebug - G4cout<<"G4QEnv::FillQHadrons:H#"<<ih<<",HQPDG="<<(*input)[ih]->GetQPDG()<<",HQC=" - <<(*input)[ih]->GetQC()<<",HM="<<(*input)[ih]->GetMass()<<G4endl; + G4cout<<"G4QEnv::FillQHadrons:H#"<<ih<<",HQPDG="<<(*input)[ih]->GetQPDG()<<",HQC=" + <<(*input)[ih]->GetQC()<<",HM="<<(*input)[ih]->GetMass()<<G4endl; #endif - G4QHadron* curH = new G4QHadron((*input)[ih]); - theQHadrons.push_back(curH); // (del. equiv. - } + G4QHadron* curH = new G4QHadron((*input)[ih]); + theQHadrons.push_back(curH); // (del. equiv. + } #ifdef pdebug - G4cout<<"G4QEnvironment::FillQHadrons ===OUT=== Filled nQH="<<theQHadrons.size()<<G4endl; + G4cout<<"G4QEnvironment::FillQHadrons ===OUT=== Filled nQH="<<theQHadrons.size()<<G4endl; #endif } // End of FillQHadrons //Decay of the excited Baryon in baryon & meson (gamma) void G4QEnvironment::DecayBaryon(G4QHadron* qH) {// ============================================ - static const G4QPDGCode gQPDG(22); - static const G4QPDGCode pizQPDG(111); - static const G4QPDGCode pipQPDG(211); - static const G4QPDGCode pimQPDG(-211); - static const G4QPDGCode kmQPDG(-321); - static const G4QPDGCode kzQPDG(-311); - static const G4QPDGCode nQPDG(2112); - static const G4QPDGCode pQPDG(2212); - static const G4QPDGCode lQPDG(3122); - static const G4QPDGCode laQPDG(3122); - static const G4QPDGCode smQPDG(3112); - static const G4QPDGCode szQPDG(3212); - static const G4QPDGCode spQPDG(3222); - static const G4QPDGCode kszQPDG(3322); - static const G4QPDGCode ksmQPDG(3312); - static const G4double mPi = G4QPDGCode(211).GetMass(); - static const G4double mPi0 = G4QPDGCode(111).GetMass(); - static const G4double mK = G4QPDGCode(321).GetMass(); - static const G4double mK0 = G4QPDGCode(311).GetMass(); - static const G4double mNeut= G4QPDGCode(2112).GetMass(); - static const G4double mProt= G4QPDGCode(2212).GetMass(); - static const G4double mSigM= G4QPDGCode(3112).GetMass(); - static const G4double mLamb= G4QPDGCode(3122).GetMass(); - static const G4double mSigZ= G4QPDGCode(3212).GetMass(); - static const G4double mSigP= G4QPDGCode(3222).GetMass(); - //static const G4double mKsiM= G4QPDGCode(3312).GetMass(); - //static const G4double mKsi0= G4QPDGCode(3322).GetMass(); - //static const G4double mOmeg= G4QPDGCode(3334).GetMass(); - static const G4double mNPi0 = mPi0+ mNeut; - static const G4double mNPi = mPi + mNeut; - static const G4double mPPi0 = mPi0+ mProt; - static const G4double mPPi = mPi + mProt; - static const G4double mLPi0 = mPi0+ mLamb; - static const G4double mLPi = mPi + mLamb; - static const G4double mSpPi = mPi + mSigP; - static const G4double mSmPi = mPi + mSigP; - static const G4double mPK = mK + mProt; - static const G4double mPKZ = mK0 + mProt; - static const G4double mNKZ = mK0 + mNeut; - static const G4double mSpPi0= mPi0+ mSigP; - static const G4double mSzPi0= mPi0+ mSigZ; - static const G4double mSzPi = mPi + mSigZ; - static const G4double eps = 0.003; - //static const G4QNucleus vacuum(90000000); - G4int theLB= qH->GetBaryonNumber(); // Baryon number of the Baryon - if(theLB!=1) - { - G4cerr<<"***G4QEnvironment::DecayBaryon: A!=1 -> fill as it is"<<G4endl; + static const G4QPDGCode gQPDG(22); + static const G4QPDGCode pizQPDG(111); + static const G4QPDGCode pipQPDG(211); + static const G4QPDGCode pimQPDG(-211); + static const G4QPDGCode kmQPDG(-321); + static const G4QPDGCode kzQPDG(-311); + static const G4QPDGCode nQPDG(2112); + static const G4QPDGCode pQPDG(2212); + static const G4QPDGCode lQPDG(3122); + static const G4QPDGCode laQPDG(3122); + static const G4QPDGCode smQPDG(3112); + static const G4QPDGCode szQPDG(3212); + static const G4QPDGCode spQPDG(3222); + static const G4QPDGCode kszQPDG(3322); + static const G4QPDGCode ksmQPDG(3312); + static const G4double mPi = G4QPDGCode(211).GetMass(); + static const G4double mPi0 = G4QPDGCode(111).GetMass(); + static const G4double mK = G4QPDGCode(321).GetMass(); + static const G4double mK0 = G4QPDGCode(311).GetMass(); + static const G4double mNeut= G4QPDGCode(2112).GetMass(); + static const G4double mProt= G4QPDGCode(2212).GetMass(); + static const G4double mSigM= G4QPDGCode(3112).GetMass(); + static const G4double mLamb= G4QPDGCode(3122).GetMass(); + static const G4double mSigZ= G4QPDGCode(3212).GetMass(); + static const G4double mSigP= G4QPDGCode(3222).GetMass(); + //static const G4double mKsiM= G4QPDGCode(3312).GetMass(); + //static const G4double mKsi0= G4QPDGCode(3322).GetMass(); + //static const G4double mOmeg= G4QPDGCode(3334).GetMass(); + static const G4double mNPi0 = mPi0+ mNeut; + static const G4double mNPi = mPi + mNeut; + static const G4double mPPi0 = mPi0+ mProt; + static const G4double mPPi = mPi + mProt; + static const G4double mLPi0 = mPi0+ mLamb; + static const G4double mLPi = mPi + mLamb; + static const G4double mSpPi = mPi + mSigP; + static const G4double mSmPi = mPi + mSigP; + static const G4double mPK = mK + mProt; + static const G4double mPKZ = mK0 + mProt; + static const G4double mNKZ = mK0 + mNeut; + static const G4double mSpPi0= mPi0+ mSigP; + static const G4double mSzPi0= mPi0+ mSigZ; + static const G4double mSzPi = mPi + mSigZ; + static const G4double eps = 0.003; + //static const G4QNucleus vacuum(90000000); + G4int theLB= qH->GetBaryonNumber(); // Baryon number of the Baryon + if(theLB!=1) + { + G4cerr<<"***G4QEnvironment::DecayBaryon: A!=1 -> fill as it is"<<G4endl; #ifdef ppdebug - throw G4QException("G4QEnv::DecayBaryon: Unknown Baryon with A!=1"); -#endif - theQHadrons.push_back(qH); // Fill AsIs (delete equivalent) - return; - } - G4int theLC= qH->GetCharge(); // Chsrge of the Baryon - G4int theLS= qH->GetStrangeness(); // Strangness of the Baryon - //G4int qPDG = qH->GetPDGCode(); // PDG Code of the decaying baryon - G4LorentzVector q4M = qH->Get4Momentum(); // Get 4-momentum of the Baryon - G4double qM = q4M.m(); // Mass of the Baryon -#ifdef pdebug - G4cout<<"G4QEnv::DecayBaryon: *Called* S="<<theLS<<",C="<<theLC<<",4M="<<q4M<<qM<<G4endl; -#endif - // Select a chanel of the baryon decay - G4QPDGCode fQPDG = pQPDG; // Prototype for Proton - G4double fMass= mProt; - G4QPDGCode sQPDG = pizQPDG; // Prototype for Pi0 - G4double sMass= mPi0; - if(!theLS) // This is only for not strange baryons - { - if(!theLC) // Neutron like: n+gam, n+Pi0, p+Pi- are possible + throw G4QException("G4QEnv::DecayBaryon: Unknown Baryon with A!=1"); +#endif + theQHadrons.push_back(qH); // Fill AsIs (delete equivalent) + return; + } + G4int theLC= qH->GetCharge(); // Chsrge of the Baryon + G4int theLS= qH->GetStrangeness(); // Strangness of the Baryon + //G4int qPDG = qH->GetPDGCode(); // PDG Code of the decaying baryon + G4LorentzVector q4M = qH->Get4Momentum(); // Get 4-momentum of the Baryon + G4double qM = q4M.m(); // Mass of the Baryon +#ifdef pdebug + G4cout<<"G4QEnv::DecayBaryon: *Called* S="<<theLS<<",C="<<theLC<<",4M="<<q4M<<qM<<G4endl; +#endif + // Select a chanel of the baryon decay + G4QPDGCode fQPDG = pQPDG; // Prototype for Proton + G4double fMass= mProt; + G4QPDGCode sQPDG = pizQPDG; // Prototype for Pi0 + G4double sMass= mPi0; + if(!theLS) // This is only for not strange baryons + { + if(!theLC) // Neutron like: n+gam, n+Pi0, p+Pi- are possible { - if(qM<mNPi0) // Only n+gamma decay is possible + if(qM<mNPi0) // Only n+gamma decay is possible { - if(fabs(qM-mNeut)<eps) + if(fabs(qM-mNeut)<eps) { #ifdef pdebug - G4cout<<"G4QEnv::DecayBaryon: Fill Neutron AsIs"<<G4endl; -#endif - theQHadrons.push_back(qH); // Fill AsIs (delete equivalent) - return; - } - fQPDG=nQPDG; // Baryon is neutron - fMass=mNeut; - sQPDG=gQPDG; // Meson is gamma - sMass=0.; - } - else if(qM>mPPi) // Both n+pi0 (p=2/3) & p+Pi- (p=1/3) are possible + G4cout<<"G4QEnv::DecayBaryon: Fill Neutron AsIs"<<G4endl; +#endif + theQHadrons.push_back(qH); // Fill AsIs (delete equivalent) + return; + } + fQPDG=nQPDG; // Baryon is neutron + fMass=mNeut; + sQPDG=gQPDG; // Meson is gamma + sMass=0.; + } + else if(qM>mPPi) // Both n+pi0 (p=2/3) & p+Pi- (p=1/3) are possible { - if(G4UniformRand()>.333333333) // Clebsh value for the Isobar decay - { - fQPDG=nQPDG; // Baryon is neutron (meson is Pi0) - fMass=mNeut; - } - else - { - sQPDG=pimQPDG; // Meson is Pi- (baryon is proton) - sMass=mPi; - } - } + if(G4UniformRand()>.333333333) // Clebsh value for the Isobar decay + { + fQPDG=nQPDG; // Baryon is neutron (meson is Pi0) + fMass=mNeut; + } + else + { + sQPDG=pimQPDG; // Meson is Pi- (baryon is proton) + sMass=mPi; + } + } else // Only n+Pi0 decay is possible - { - fQPDG=nQPDG; // Baryon is neutron - fMass=mNeut; - } - } - else if(theLC==1) // Proton like: p+gam, p+Pi0, n+Pi+ are possible + { + fQPDG=nQPDG; // Baryon is neutron + fMass=mNeut; + } + } + else if(theLC==1) // Proton like: p+gam, p+Pi0, n+Pi+ are possible { - if(qM<mPPi0) // Only p+gamma decay is possible + if(qM<mPPi0) // Only p+gamma decay is possible { - if(fabs(qM-mProt)<eps) + if(fabs(qM-mProt)<eps) { #ifdef pdebug - G4cout<<"G4QEnv::DecayBaryon: Fill Proton AsIs"<<G4endl; + G4cout<<"G4QEnv::DecayBaryon: Fill Proton AsIs"<<G4endl; #endif - theQHadrons.push_back(qH); // Fill AsIs (delete equivalent) - return; - } - sQPDG=gQPDG; // Meson is gamma (baryon is proton) - sMass=0.; - } - else if(qM>mNPi) // Both p+pi0 (p=2/3) & n+Pi+ (p=1/3) are possible + theQHadrons.push_back(qH); // Fill AsIs (delete equivalent) + return; + } + sQPDG=gQPDG; // Meson is gamma (baryon is proton) + sMass=0.; + } + else if(qM>mNPi) // Both p+pi0 (p=2/3) & n+Pi+ (p=1/3) are possible { - if(G4UniformRand()<.333333333) // Clebsh value for the Isobar decay - { - fQPDG=nQPDG; // Baryon is neutron - fMass=mNeut; - sQPDG=pipQPDG; // Meson is Pi+ - sMass=mPi; - } - // p+Pi0 is a default case - } - // p+Pi0 is a default case - } - else if(theLC==2) // Delta++ like: only p+PiP is possible + if(G4UniformRand()<.333333333) // Clebsh value for the Isobar decay + { + fQPDG=nQPDG; // Baryon is neutron + fMass=mNeut; + sQPDG=pipQPDG; // Meson is Pi+ + sMass=mPi; + } + // p+Pi0 is a default case + } + // p+Pi0 is a default case + } + else if(theLC==2) // Delta++ like: only p+PiP is possible { - if(qM>mPPi) // Only p+gamma decay is possible + if(qM>mPPi) // Only p+gamma decay is possible { - sQPDG=pipQPDG; // Meson is Pi+ (baryon is proton) - sMass=mPi; - } - else // @@ Can be aReason to search for anError in Fragmentation + sQPDG=pipQPDG; // Meson is Pi+ (baryon is proton) + sMass=mPi; + } + else // @@ Can be aReason to search for anError in Fragmentation { #ifdef pdebug - G4cout<<"-Warning-G4QE::DecBary:*AsIs* DEL++ M="<<qM<<"<"<<mPPi<<G4endl; + G4cout<<"-Warning-G4QE::DecBary:*AsIs* DEL++ M="<<qM<<"<"<<mPPi<<G4endl; #endif - theQHadrons.push_back(qH); // Fill AsIs (delete equivalent) - return; - } - } - else if(theLC==-1) // Delta- like: only n+PiM is possible + theQHadrons.push_back(qH); // Fill AsIs (delete equivalent) + return; + } + } + else if(theLC==-1) // Delta- like: only n+PiM is possible { - if(qM+eps>mNPi) // Only p+gamma decay is possible + if(qM+eps>mNPi) // Only p+gamma decay is possible { - fQPDG=nQPDG; // Baryon is neutron - fMass=mNeut; - sQPDG=pimQPDG; // Meson is Pi- - sMass=mPi; - } - else // @@ Can be aReason to search for anError in Fragmentation + fQPDG=nQPDG; // Baryon is neutron + fMass=mNeut; + sQPDG=pimQPDG; // Meson is Pi- + sMass=mPi; + } + else // @@ Can be aReason to search for anError in Fragmentation { #ifdef pdebug - G4cout<<"-Warning-G4QE::DecBary:*AsIs* DEL++ M="<<qM<<"<"<<mNPi<<G4endl; + G4cout<<"-Warning-G4QE::DecBary:*AsIs* DEL++ M="<<qM<<"<"<<mNPi<<G4endl; #endif - theQHadrons.push_back(qH); // Fill AsIs (delete equivalent) - return; - } - } - else - { + theQHadrons.push_back(qH); // Fill AsIs (delete equivalent) + return; + } + } + else + { #ifdef pdebug - G4cout<<"-Warning-G4QE::DecBary:*AsIs* UnknBaryon (S=0) QC="<<qH->GetQC()<<G4endl; + G4cout<<"-Warning-G4QE::DecBary:*AsIs* UnknBaryon (S=0) QC="<<qH->GetQC()<<G4endl; #endif - theQHadrons.push_back(qH); // Fill AsIs (delete equivalent) - return; - } - } - else if(theLS==1) // ======>>>> S=1 <<<<========== - { - if(!theLC) // -->> Lambda/Sz: L+g,L+Pi0,Sz+Pi0,Sm+Pip,Sp+Pim,p+Km,n+Kz + theQHadrons.push_back(qH); // Fill AsIs (delete equivalent) + return; + } + } + else if(theLS==1) // ======>>>> S=1 <<<<========== + { + if(!theLC) // -->> Lambda/Sz: L+g,L+Pi0,Sz+Pi0,Sm+Pip,Sp+Pim,p+Km,n+Kz { - if(qM<mLPi0) // Only Lambda+gamma decay is possible + if(qM<mLPi0) // Only Lambda+gamma decay is possible { - if(fabs(qM-mLamb)<eps) + if(fabs(qM-mLamb)<eps) { #ifdef pdebug - G4cout<<"G4QEnv::DecayBaryon: Fill Lambda AsIs"<<G4endl; -#endif - theQHadrons.push_back(qH); // Fill AsIs (delete equivalent) - return; - } - fQPDG=lQPDG; // Baryon is Lambda - fMass=mLamb; - sQPDG=gQPDG; // Meson is gamma - sMass=0.; - } - else if(qM<mSzPi0) // Only Lambda+Pi0 is possible + G4cout<<"G4QEnv::DecayBaryon: Fill Lambda AsIs"<<G4endl; +#endif + theQHadrons.push_back(qH); // Fill AsIs (delete equivalent) + return; + } + fQPDG=lQPDG; // Baryon is Lambda + fMass=mLamb; + sQPDG=gQPDG; // Meson is gamma + sMass=0.; + } + else if(qM<mSzPi0) // Only Lambda+Pi0 is possible { - fQPDG=lQPDG; // Baryon is Lambda - fMass=mLamb; - } - else if(qM<mSpPi) // Both Lambda+Pi0 & Sigma0+Pi0 are possible + fQPDG=lQPDG; // Baryon is Lambda + fMass=mLamb; + } + else if(qM<mSpPi) // Both Lambda+Pi0 & Sigma0+Pi0 are possible { - if(G4UniformRand()>.6) // @@ Relative probability (take into account Phase Space) - { - fQPDG=szQPDG; // Baryon is Sigma0 - fMass=mSigZ; - } - else - { - fQPDG=lQPDG; // Baryon is Lambda - fMass=mLamb; - } - } - else if(qM<mSmPi) // Lambda+Pi0, Sigma0+Pi0, & SigmaP+PiM are possible + if(G4UniformRand()>.6) // @@ Relative probability (take into account Phase Space) + { + fQPDG=szQPDG; // Baryon is Sigma0 + fMass=mSigZ; + } + else + { + fQPDG=lQPDG; // Baryon is Lambda + fMass=mLamb; + } + } + else if(qM<mSmPi) // Lambda+Pi0, Sigma0+Pi0, & SigmaP+PiM are possible { - G4double ra=G4UniformRand(); - if(ra<.4) // @@ Rel. probab. (take into account Phase Space) - { - fQPDG=lQPDG; // Baryon is Lambda - fMass=mLamb; - } - else if(ra<.7) // @@ Rel. probab. (take into account Phase Space) - { - fQPDG=szQPDG; // Baryon is Sigma0 - fMass=mSigZ; - } - else - { - fQPDG=spQPDG; // Baryon is SigmaP - fMass=mSigP; - sQPDG=pimQPDG; // Meson is Pi- - sMass=mPi; - } - } - else if(qM<mPK) // Lambda+Pi0, Sig0+Pi0, SigP+PiM, SigM+PiP are possible + G4double ra=G4UniformRand(); + if(ra<.4) // @@ Rel. probab. (take into account Phase Space) + { + fQPDG=lQPDG; // Baryon is Lambda + fMass=mLamb; + } + else if(ra<.7) // @@ Rel. probab. (take into account Phase Space) + { + fQPDG=szQPDG; // Baryon is Sigma0 + fMass=mSigZ; + } + else + { + fQPDG=spQPDG; // Baryon is SigmaP + fMass=mSigP; + sQPDG=pimQPDG; // Meson is Pi- + sMass=mPi; + } + } + else if(qM<mPK) // Lambda+Pi0, Sig0+Pi0, SigP+PiM, SigM+PiP are possible { - G4double ra=G4UniformRand(); - if(ra<.35) // @@ Rel. probab. (take into account Phase Space) - { - fQPDG=lQPDG; // Baryon is Lambda - fMass=mLamb; - } - else if(ra<.6) // @@ Rel. probab. (take into account Phase Space) - { - fQPDG=szQPDG; // Baryon is Sigma0 - fMass=mSigZ; - } - else if(ra<.8) // @@ Rel. probab. (take into account Phase Space) - { - fQPDG=smQPDG; // Baryon is SigmaM - fMass=mSigM; - sQPDG=pipQPDG; // Meson is Pi+ - sMass=mPi; - } - else - { - fQPDG=spQPDG; // Baryon is SigmaP - fMass=mSigP; - sQPDG=pimQPDG; // Meson is Pi- - sMass=mPi; - } - } - else if(qM<mNKZ) // Lambda+Pi0, Sig0+Pi0, SigP+PiM, SigM+PiP are possible + G4double ra=G4UniformRand(); + if(ra<.35) // @@ Rel. probab. (take into account Phase Space) + { + fQPDG=lQPDG; // Baryon is Lambda + fMass=mLamb; + } + else if(ra<.6) // @@ Rel. probab. (take into account Phase Space) + { + fQPDG=szQPDG; // Baryon is Sigma0 + fMass=mSigZ; + } + else if(ra<.8) // @@ Rel. probab. (take into account Phase Space) + { + fQPDG=smQPDG; // Baryon is SigmaM + fMass=mSigM; + sQPDG=pipQPDG; // Meson is Pi+ + sMass=mPi; + } + else + { + fQPDG=spQPDG; // Baryon is SigmaP + fMass=mSigP; + sQPDG=pimQPDG; // Meson is Pi- + sMass=mPi; + } + } + else if(qM<mNKZ) // Lambda+Pi0, Sig0+Pi0, SigP+PiM, SigM+PiP are possible { - G4double ra=G4UniformRand(); - if(ra<.3) // @@ Rel. probab. (take into account Phase Space) - { - fQPDG=lQPDG; // Baryon is Lambda - fMass=mLamb; - } - else if(ra<.5) // @@ Rel. probab. (take into account Phase Space) - { - fQPDG=szQPDG; // Baryon is Sigma0 - fMass=mSigZ; - } - else if(ra<.7) // @@ Rel. probab. (take into account Phase Space) - { - fQPDG=smQPDG; // Baryon is SigmaM - fMass=mSigM; - sQPDG=pipQPDG; // Meson is Pi+ - sMass=mPi; - } - else if(ra<.9) // @@ Rel. probab. (take into account Phase Space) - { - fQPDG=spQPDG; // Baryon is SigmaP - fMass=mSigP; - sQPDG=pimQPDG; // Meson is Pi- - sMass=mPi; - } - else - { - fQPDG=pQPDG; // Baryon is Proton - fMass=mProt; - sQPDG=kmQPDG; // Meson is K- - sMass=mK; - } - } + G4double ra=G4UniformRand(); + if(ra<.3) // @@ Rel. probab. (take into account Phase Space) + { + fQPDG=lQPDG; // Baryon is Lambda + fMass=mLamb; + } + else if(ra<.5) // @@ Rel. probab. (take into account Phase Space) + { + fQPDG=szQPDG; // Baryon is Sigma0 + fMass=mSigZ; + } + else if(ra<.7) // @@ Rel. probab. (take into account Phase Space) + { + fQPDG=smQPDG; // Baryon is SigmaM + fMass=mSigM; + sQPDG=pipQPDG; // Meson is Pi+ + sMass=mPi; + } + else if(ra<.9) // @@ Rel. probab. (take into account Phase Space) + { + fQPDG=spQPDG; // Baryon is SigmaP + fMass=mSigP; + sQPDG=pimQPDG; // Meson is Pi- + sMass=mPi; + } + else + { + fQPDG=pQPDG; // Baryon is Proton + fMass=mProt; + sQPDG=kmQPDG; // Meson is K- + sMass=mK; + } + } else // Only n+Pi0 decay is possible - { - G4double ra=G4UniformRand(); - if(ra<.3) // @@ Rel. probab. (take into account Phase Space) - { - fQPDG=lQPDG; // Baryon is Lambda - fMass=mLamb; - } - else if(ra<.5) // @@ Rel. probab. (take into account Phase Space) - { - fQPDG=szQPDG; // Baryon is Sigma0 - fMass=mSigZ; - } - else if(ra<.65) // @@ Rel. probab. (take into account Phase Space) - { - fQPDG=smQPDG; // Baryon is SigmaM - fMass=mSigM; - sQPDG=pipQPDG; // Meson is Pi+ - sMass=mPi; - } - else if(ra<.8) // @@ Rel. probab. (take into account Phase Space) - { - fQPDG=spQPDG; // Baryon is SigmaP - fMass=mSigP; - sQPDG=pimQPDG; // Meson is Pi- - sMass=mPi; - } - else if(ra<.9) // @@ Rel. probab. (take into account Phase Space) - { - fQPDG=pQPDG; // Baryon is Proton - fMass=mProt; - sQPDG=kmQPDG; // Meson is K- - sMass=mK; - } - else - { - fQPDG=nQPDG; // Baryon is Neutron - fMass=mNeut; - sQPDG=kzQPDG; // Meson is K0 - sMass=mK0; - } - } - } - else if(theLC==1) // SigmaP: SigP+gam,SigP+Pi0,Sp+PiP,L+Pi0,p+K0 are possible + { + G4double ra=G4UniformRand(); + if(ra<.3) // @@ Rel. probab. (take into account Phase Space) + { + fQPDG=lQPDG; // Baryon is Lambda + fMass=mLamb; + } + else if(ra<.5) // @@ Rel. probab. (take into account Phase Space) + { + fQPDG=szQPDG; // Baryon is Sigma0 + fMass=mSigZ; + } + else if(ra<.65) // @@ Rel. probab. (take into account Phase Space) + { + fQPDG=smQPDG; // Baryon is SigmaM + fMass=mSigM; + sQPDG=pipQPDG; // Meson is Pi+ + sMass=mPi; + } + else if(ra<.8) // @@ Rel. probab. (take into account Phase Space) + { + fQPDG=spQPDG; // Baryon is SigmaP + fMass=mSigP; + sQPDG=pimQPDG; // Meson is Pi- + sMass=mPi; + } + else if(ra<.9) // @@ Rel. probab. (take into account Phase Space) + { + fQPDG=pQPDG; // Baryon is Proton + fMass=mProt; + sQPDG=kmQPDG; // Meson is K- + sMass=mK; + } + else + { + fQPDG=nQPDG; // Baryon is Neutron + fMass=mNeut; + sQPDG=kzQPDG; // Meson is K0 + sMass=mK0; + } + } + } + else if(theLC==1) // SigmaP: SigP+gam,SigP+Pi0,Sp+PiP,L+Pi0,p+K0 are possible { - if(qM<mLPi) // Only SigmaPlus+gamma decay is possible + if(qM<mLPi) // Only SigmaPlus+gamma decay is possible { - if(fabs(qM-mSigP)<eps) + if(fabs(qM-mSigP)<eps) { #ifdef pdebug - G4cout<<"G4QEnv::DecayBaryon: Fill SigmaPlus AsIs"<<G4endl; -#endif - theQHadrons.push_back(qH); // Fill AsIs (delete equivalent) - return; - } - fQPDG=spQPDG; // Baryon is SigmaP - fMass=mSigP; - sQPDG=gQPDG; // Meson is gamma - sMass=0.; - } - else if(qM<mSpPi0) // Only Lambda+PiP is possible + G4cout<<"G4QEnv::DecayBaryon: Fill SigmaPlus AsIs"<<G4endl; +#endif + theQHadrons.push_back(qH); // Fill AsIs (delete equivalent) + return; + } + fQPDG=spQPDG; // Baryon is SigmaP + fMass=mSigP; + sQPDG=gQPDG; // Meson is gamma + sMass=0.; + } + else if(qM<mSpPi0) // Only Lambda+PiP is possible { - fQPDG=lQPDG; // Baryon is Lambda - fMass=mLamb; - sQPDG=pipQPDG; // Meson is Pi+ - sMass=mPi; - } - else if(qM<mSzPi) // Both Lambda+PiP & Sigma0+Pi0 are possible + fQPDG=lQPDG; // Baryon is Lambda + fMass=mLamb; + sQPDG=pipQPDG; // Meson is Pi+ + sMass=mPi; + } + else if(qM<mSzPi) // Both Lambda+PiP & Sigma0+Pi0 are possible { - if(G4UniformRand()<.6) // @@ Relative probability (take into account Phase Space) - { - fQPDG=lQPDG; // Baryon is Lambda - fMass=mLamb; - sQPDG=pipQPDG; // Meson is Pi+ - sMass=mPi; - } - else - { - fQPDG=spQPDG; // Baryon is SigmaP - fMass=mSigP; - } - } - else if(qM<mPKZ) // Lambda+PiP, SigmaP+Pi0, & Sigma0+PiP are possible + if(G4UniformRand()<.6) // @@ Relative probability (take into account Phase Space) + { + fQPDG=lQPDG; // Baryon is Lambda + fMass=mLamb; + sQPDG=pipQPDG; // Meson is Pi+ + sMass=mPi; + } + else + { + fQPDG=spQPDG; // Baryon is SigmaP + fMass=mSigP; + } + } + else if(qM<mPKZ) // Lambda+PiP, SigmaP+Pi0, & Sigma0+PiP are possible { - G4double ra=G4UniformRand(); - if(ra<.4) // @@ Rel. probab. (take into account Phase Space) - { - fQPDG=lQPDG; // Baryon is Lambda - fMass=mLamb; - sQPDG=pipQPDG; // Meson is Pi+ - sMass=mPi; - } - else if(ra<.7) // @@ Rel. probab. (take into account Phase Space) - { - fQPDG=spQPDG; // Baryon is SigmaP - fMass=mSigP; - } - else - { - fQPDG=szQPDG; // Baryon is SigmaZ - fMass=mSigZ; - sQPDG=pipQPDG; // Meson is Pi+ - sMass=mPi; - } - } - else // Lambda+PiP, SigmaP+Pi0, Sigma0+PiP, p+K0 are possible + G4double ra=G4UniformRand(); + if(ra<.4) // @@ Rel. probab. (take into account Phase Space) + { + fQPDG=lQPDG; // Baryon is Lambda + fMass=mLamb; + sQPDG=pipQPDG; // Meson is Pi+ + sMass=mPi; + } + else if(ra<.7) // @@ Rel. probab. (take into account Phase Space) + { + fQPDG=spQPDG; // Baryon is SigmaP + fMass=mSigP; + } + else + { + fQPDG=szQPDG; // Baryon is SigmaZ + fMass=mSigZ; + sQPDG=pipQPDG; // Meson is Pi+ + sMass=mPi; + } + } + else // Lambda+PiP, SigmaP+Pi0, Sigma0+PiP, p+K0 are possible { - G4double ra=G4UniformRand(); - if(ra<.35) // @@ Rel. probab. (take into account Phase Space) - { - fQPDG=lQPDG; // Baryon is Lambda - fMass=mLamb; - sQPDG=pipQPDG; // Meson is Pi+ - sMass=mPi; - } - else if(ra<.6) // @@ Rel. probab. (take into account Phase Space) - { - fQPDG=spQPDG; // Baryon is SigmaP - fMass=mSigP; - } - else if(ra<.8) // @@ Rel. probab. (take into account Phase Space) - { - fQPDG=szQPDG; // Baryon is SigmaZ - fMass=mSigZ; - sQPDG=pipQPDG; // Meson is Pi+ - sMass=mPi; - } - else - { - fQPDG=pQPDG; // Baryon is Proton - fMass=mProt; - sQPDG=kzQPDG; // Meson is K0 - sMass=mK0; - } - } - } - else if(theLC==-1) // SigmaM: SigM+gam,SigM+Pi0,S0+PiM,L+Pi-,n+KM are possible + G4double ra=G4UniformRand(); + if(ra<.35) // @@ Rel. probab. (take into account Phase Space) + { + fQPDG=lQPDG; // Baryon is Lambda + fMass=mLamb; + sQPDG=pipQPDG; // Meson is Pi+ + sMass=mPi; + } + else if(ra<.6) // @@ Rel. probab. (take into account Phase Space) + { + fQPDG=spQPDG; // Baryon is SigmaP + fMass=mSigP; + } + else if(ra<.8) // @@ Rel. probab. (take into account Phase Space) + { + fQPDG=szQPDG; // Baryon is SigmaZ + fMass=mSigZ; + sQPDG=pipQPDG; // Meson is Pi+ + sMass=mPi; + } + else + { + fQPDG=pQPDG; // Baryon is Proton + fMass=mProt; + sQPDG=kzQPDG; // Meson is K0 + sMass=mK0; + } + } + } + else if(theLC==-1) // SigmaM: SigM+gam,SigM+Pi0,S0+PiM,L+Pi-,n+KM are possible { - if(qM<mLPi) // Only SigmaMinus + gamma decay is possible + if(qM<mLPi) // Only SigmaMinus + gamma decay is possible { - if(fabs(qM-mSigM)<eps) + if(fabs(qM-mSigM)<eps) { #ifdef pdebug - G4cout<<"G4QEnv::DecayBaryon: Fill SigmaMinus AsIs"<<G4endl; -#endif - theQHadrons.push_back(qH); // Fill AsIs (delete equivalent) - return; - } - fQPDG=smQPDG; // Baryon is SigmaP - fMass=mSigM; - sQPDG=gQPDG; // Meson is gamma - sMass=0.; - } - else if(qM<mSzPi) // Only Lambda+PiM is possible + G4cout<<"G4QEnv::DecayBaryon: Fill SigmaMinus AsIs"<<G4endl; +#endif + theQHadrons.push_back(qH); // Fill AsIs (delete equivalent) + return; + } + fQPDG=smQPDG; // Baryon is SigmaP + fMass=mSigM; + sQPDG=gQPDG; // Meson is gamma + sMass=0.; + } + else if(qM<mSzPi) // Only Lambda+PiM is possible { - fQPDG=lQPDG; // Baryon is Lambda - fMass=mLamb; - sQPDG=pimQPDG; // Meson is Pi- - sMass=mPi; - } - else if(qM<mSzPi) // Both Lambda+PiM & Sigma0+PiM are possible + fQPDG=lQPDG; // Baryon is Lambda + fMass=mLamb; + sQPDG=pimQPDG; // Meson is Pi- + sMass=mPi; + } + else if(qM<mSzPi) // Both Lambda+PiM & Sigma0+PiM are possible { - if(G4UniformRand()<.6) // @@ Relative probability (take into account Phase Space) - { - fQPDG=lQPDG; // Baryon is Lambda - fMass=mLamb; - sQPDG=pimQPDG; // Meson is Pi- - sMass=mPi; - } - else - { - fQPDG=szQPDG; // Baryon is Sigma0 - fMass=mSigZ; - sQPDG=pimQPDG; // Meson is Pi- - sMass=mPi; - } - } - else if(qM<mPKZ) // Lambda+PiM, Sigma0+PiM, & SigmaM+Pi0 are possible + if(G4UniformRand()<.6) // @@ Relative probability (take into account Phase Space) + { + fQPDG=lQPDG; // Baryon is Lambda + fMass=mLamb; + sQPDG=pimQPDG; // Meson is Pi- + sMass=mPi; + } + else + { + fQPDG=szQPDG; // Baryon is Sigma0 + fMass=mSigZ; + sQPDG=pimQPDG; // Meson is Pi- + sMass=mPi; + } + } + else if(qM<mPKZ) // Lambda+PiM, Sigma0+PiM, & SigmaM+Pi0 are possible { - G4double ra=G4UniformRand(); - if(ra<.4) // @@ Rel. probab. (take into account Phase Space) - { - fQPDG=lQPDG; // Baryon is Lambda - fMass=mLamb; - sQPDG=pimQPDG; // Meson is Pi- - sMass=mPi; - } - else if(ra<.7) // @@ Rel. probab. (take into account Phase Space) - { - fQPDG=szQPDG; // Baryon is Sigma0 - fMass=mSigZ; - sQPDG=pimQPDG; // Meson is Pi- - sMass=mPi; - } - else - { - fQPDG=smQPDG; // Baryon is SigmaM - fMass=mSigM; - } - } - else // Lambda+PiM, Sig0+PiM, SigM+Pi0, n+KM are possible + G4double ra=G4UniformRand(); + if(ra<.4) // @@ Rel. probab. (take into account Phase Space) + { + fQPDG=lQPDG; // Baryon is Lambda + fMass=mLamb; + sQPDG=pimQPDG; // Meson is Pi- + sMass=mPi; + } + else if(ra<.7) // @@ Rel. probab. (take into account Phase Space) + { + fQPDG=szQPDG; // Baryon is Sigma0 + fMass=mSigZ; + sQPDG=pimQPDG; // Meson is Pi- + sMass=mPi; + } + else + { + fQPDG=smQPDG; // Baryon is SigmaM + fMass=mSigM; + } + } + else // Lambda+PiM, Sig0+PiM, SigM+Pi0, n+KM are possible { - G4double ra=G4UniformRand(); - if(ra<.35) // @@ Rel. probab. (take into account Phase Space) - { - fQPDG=lQPDG; // Baryon is Lambda - fMass=mLamb; - sQPDG=pimQPDG; // Meson is Pi- - sMass=mPi; - } - else if(ra<.6) // @@ Rel. probab. (take into account Phase Space) - { - fQPDG=szQPDG; // Baryon is Sigma0 - fMass=mSigZ; - sQPDG=pimQPDG; // Meson is Pi- - sMass=mPi; - } - else if(ra<.8) // @@ Rel. probab. (take into account Phase Space) - { - fQPDG=smQPDG; // Baryon is SigmaM - fMass=mSigM; - } - else - { - fQPDG=nQPDG; // Baryon is Proton - fMass=mNeut; - sQPDG=kmQPDG; // Meson is K- - sMass=mK; - } - } - } - else - { - //KsiM: KsiM+Pi0=1456.29, Ksi0+Pi=1454.4, L+K=1609.36, Sig0+K=1686.32, SigM+K0=1695.1 - //KsiZ: Ksi0+Pi0=1449.81, KsiM+Pi=1460.9, L+K0=1613.3, Sig0+K0=1690.3, SigP+K=1683.05 - //Omeg: Omeg+Pi0=1807.43, Ksi0+K=1808.5, KsiM+K0=1818.96 - G4cout<<"-Warning-G4QE::DecBary:*AsIs* UnknownBaryon(S>1)QC="<<qH->GetQC()<<G4endl; - theQHadrons.push_back(qH); // Fill AsIs (delete equivalent) - return; - } - } - else - { -#ifdef pdebug - G4cout<<"---Warning---G4QE::DecBary:*AsIso* UnknBaryon(AntiS) QC="<<qH->GetQC()<<G4endl; -#endif - theQHadrons.push_back(qH); // Fill AsIs (delete equivalent) - return; - } - G4LorentzVector f4Mom(0.,0.,0.,fMass); - G4LorentzVector s4Mom(0.,0.,0.,sMass); - G4double sum=fMass+sMass; - if(fabs(qM-sum)<eps) + G4double ra=G4UniformRand(); + if(ra<.35) // @@ Rel. probab. (take into account Phase Space) + { + fQPDG=lQPDG; // Baryon is Lambda + fMass=mLamb; + sQPDG=pimQPDG; // Meson is Pi- + sMass=mPi; + } + else if(ra<.6) // @@ Rel. probab. (take into account Phase Space) + { + fQPDG=szQPDG; // Baryon is Sigma0 + fMass=mSigZ; + sQPDG=pimQPDG; // Meson is Pi- + sMass=mPi; + } + else if(ra<.8) // @@ Rel. probab. (take into account Phase Space) + { + fQPDG=smQPDG; // Baryon is SigmaM + fMass=mSigM; + } + else + { + fQPDG=nQPDG; // Baryon is Proton + fMass=mNeut; + sQPDG=kmQPDG; // Meson is K- + sMass=mK; + } + } + } + else + { + //KsiM: KsiM+Pi0=1456.29, Ksi0+Pi=1454.4, L+K=1609.36, Sig0+K=1686.32, SigM+K0=1695.1 + //KsiZ: Ksi0+Pi0=1449.81, KsiM+Pi=1460.9, L+K0=1613.3, Sig0+K0=1690.3, SigP+K=1683.05 + //Omeg: Omeg+Pi0=1807.43, Ksi0+K=1808.5, KsiM+K0=1818.96 + G4cout<<"-Warning-G4QE::DecBary:*AsIs* UnknownBaryon(S>1)QC="<<qH->GetQC()<<G4endl; + theQHadrons.push_back(qH); // Fill AsIs (delete equivalent) + return; + } + } + else + { +#ifdef pdebug + G4cout<<"---Warning---G4QE::DecBary:*AsIso* UnknBaryon(AntiS) QC="<<qH->GetQC()<<G4endl; +#endif + theQHadrons.push_back(qH); // Fill AsIs (delete equivalent) + return; + } + G4LorentzVector f4Mom(0.,0.,0.,fMass); + G4LorentzVector s4Mom(0.,0.,0.,sMass); + G4double sum=fMass+sMass; + if(fabs(qM-sum)<eps) { - f4Mom=q4M*(fMass/sum); - s4Mom=q4M*(sMass/sum); - } - else if(qM<sum || !G4QHadron(q4M).DecayIn2(f4Mom, s4Mom)) - { -#ifdef pdebug - G4cout<<"---Warning---G4QE::DecBar:fPDG="<<fQPDG<<"(M="<<fMass<<")+sPDG="<<sQPDG<<"(M=" - <<sMass<<") > TotM="<<q4M.m()<<G4endl; -#endif - if(!theEnvironment.GetA()) - { - G4Quasmon* quasH = new G4Quasmon(qH->GetQC(),qH->Get4Momentum()); + f4Mom=q4M*(fMass/sum); + s4Mom=q4M*(sMass/sum); + } + else if(qM<sum || !G4QHadron(q4M).DecayIn2(f4Mom, s4Mom)) + { +#ifdef pdebug + G4cout<<"---Warning---G4QE::DecBar:fPDG="<<fQPDG<<"(M="<<fMass<<")+sPDG="<<sQPDG<<"(M=" + <<sMass<<") > TotM="<<q4M.m()<<G4endl; +#endif + if(!theEnvironment.GetA()) + { + G4Quasmon* quasH = new G4Quasmon(qH->GetQC(),qH->Get4Momentum()); if(!CheckGroundState(quasH,true)) theQHadrons.push_back(qH); // Cor or fill asItIs - else delete qH; - delete quasH; - return; - } - else - { - delete qH; - G4cerr<<"***G4QEnv::DecayBaryon: Can't Correct, *EmptyEnv*="<<theEnvironment<<G4endl; - throw G4QException("G4QEnv::DecayBaryon: Baryon DecayIn2 error"); - } - } -#ifdef pdebug - G4cout<<"G4QEnv::DecayBaryon: *DONE* f4M="<<f4Mom<<",fPDG="<<fQPDG<<", s4M="<<s4Mom - <<",sPDG="<<sQPDG<<G4endl; -#endif - delete qH; - // - G4QHadron* H1 = new G4QHadron(fQPDG,f4Mom); // Create a Hadron for the 1-st baryon - theQHadrons.push_back(H1); // Fill "H1" (delete equivalent) - G4QHadron* H2 = new G4QHadron(sQPDG,s4Mom); // Create a Hadron for the 2-nd baryon - theQHadrons.push_back(H2); // Fill "H2" (delete equivalent) + else delete qH; + delete quasH; + return; + } + else + { + delete qH; + G4cerr<<"***G4QEnv::DecayBaryon: Can't Correct, *EmptyEnv*="<<theEnvironment<<G4endl; + throw G4QException("G4QEnv::DecayBaryon: Baryon DecayIn2 error"); + } + } +#ifdef pdebug + G4cout<<"G4QEnv::DecayBaryon: *DONE* f4M="<<f4Mom<<",fPDG="<<fQPDG<<", s4M="<<s4Mom + <<",sPDG="<<sQPDG<<G4endl; +#endif + delete qH; + // + G4QHadron* H1 = new G4QHadron(fQPDG,f4Mom); // Create a Hadron for the 1-st baryon + theQHadrons.push_back(H1); // Fill "H1" (delete equivalent) + G4QHadron* H2 = new G4QHadron(sQPDG,s4Mom); // Create a Hadron for the 2-nd baryon + theQHadrons.push_back(H2); // Fill "H2" (delete equivalent) } // End of DecayBaryon // Check that it's possible to decay the TotalResidualNucleus in Quasmon+Environ & correct // In case of correction the "quasm" is never deleted! If corFlag==true - correction. G4bool G4QEnvironment::CheckGroundState(G4Quasmon* quasm, G4bool corFlag) { // ================================================================== - static const G4QPDGCode gamQPDG(22); - static const G4QContent neutQC(2,1,0,0,0,0); - static const G4QContent protQC(1,2,0,0,0,0); - static const G4QContent lambQC(1,1,1,0,0,0); - static const G4QContent pimQC(1,0,0,0,1,0); - static const G4QContent pipQC(0,1,0,1,0,0); - static const G4double mNeut= G4QPDGCode(2112).GetMass(); - static const G4double mProt= G4QPDGCode(2212).GetMass(); - static const G4double mLamb= G4QPDGCode(3122).GetMass(); - static const G4double mPi = G4QPDGCode(211).GetMass(); - //static const G4double dmPi = mPi+mPi; - ///@@@/// - ///////////////corFlag=true; - ///@@@/// - G4QContent valQ=quasm->GetQC(); // Quark content of the Quasmon - G4int resQPDG=valQ.GetSPDGCode(); // Reachable in a member function - G4int resB=valQ.GetBaryonNumber(); // Baryon number of the Quasmon - G4int resC=valQ.GetCharge(); // Charge of the Quasmon - G4int resS=valQ.GetStrangeness(); // Strangeness of the Quasmon - if(resQPDG==10 && resB>0) resQPDG=valQ.GetZNSPDGCode(); - G4double resQMa=G4QPDGCode(resQPDG).GetMass();// GS Mass of the Residual Quasmon - G4double resEMa=0.; // GS Mass of the EmptyResidualEnvironment - G4bool bsCond=false; // FragSeparatCondition for QuasmonInVacuum - G4LorentzVector enva4M=G4LorentzVector(0.,0.,0.,0.); // Prototype of the environment Mass - G4QContent reTQC=valQ; // Prototype QuarkContent of the ResidNucl - G4LorentzVector reTLV=quasm->Get4Momentum(); // Prototyoe 4-Mom of the Residual Nucleus - G4double reTM=reTLV.m(); // Real mass of the Quasmon - G4int envPDG=theEnvironment.GetPDG(); + static const G4QPDGCode gamQPDG(22); + static const G4QContent neutQC(2,1,0,0,0,0); + static const G4QContent protQC(1,2,0,0,0,0); + static const G4QContent lambQC(1,1,1,0,0,0); + static const G4QContent pimQC(1,0,0,0,1,0); + static const G4QContent pipQC(0,1,0,1,0,0); + static const G4double mNeut= G4QPDGCode(2112).GetMass(); + static const G4double mProt= G4QPDGCode(2212).GetMass(); + static const G4double mLamb= G4QPDGCode(3122).GetMass(); + static const G4double mPi = G4QPDGCode(211).GetMass(); + //static const G4double dmPi = mPi+mPi; + ///@@@/// + ///////////////corFlag=true; + ///@@@/// + G4QContent valQ=quasm->GetQC(); // Quark content of the Quasmon + G4int resQPDG=valQ.GetSPDGCode(); // Reachable in a member function + G4int resB=valQ.GetBaryonNumber(); // Baryon number of the Quasmon + G4int resC=valQ.GetCharge(); // Charge of the Quasmon + G4int resS=valQ.GetStrangeness(); // Strangeness of the Quasmon + if(resQPDG==10 && resB>0) resQPDG=valQ.GetZNSPDGCode(); + G4double resQMa=G4QPDGCode(resQPDG).GetMass();// GS Mass of the Residual Quasmon + G4double resEMa=0.; // GS Mass of the EmptyResidualEnvironment + G4bool bsCond=false; // FragSeparatCondition for QuasmonInVacuum + G4LorentzVector enva4M=G4LorentzVector(0.,0.,0.,0.); // Prototype of the environment Mass + G4QContent reTQC=valQ; // Prototype QuarkContent of the ResidNucl + G4LorentzVector reTLV=quasm->Get4Momentum(); // Prototyoe 4-Mom of the Residual Nucleus + G4double reTM=reTLV.m(); // Real mass of the Quasmon + G4int envPDG=theEnvironment.GetPDG(); - if ( resB > 1 && - ( (!resS && ((resC == resB && reTM > resC*mProt) || (!resC && reTM > resB*mNeut) ) ) || - (resS == resB && reTM > resS*mLamb) ) ) // Immediate Split(@@Decay) MultiBaryon - { + if ( resB > 1 && + ( (!resS && ((resC == resB && reTM > resC*mProt) || (!resC && reTM > resB*mNeut) ) ) || + (resS == resB && reTM > resS*mLamb) ) ) // Immediate Split(@@Decay) MultiBaryon + { #ifdef chdebug - G4cout<<"G4QE::CGS:*MultyBar*E="<<envPDG<<",B="<<resB<<",C="<<resC<<",S"<<resS<<G4endl; -#endif - if(envPDG!=90000000) - { - resEMa=theEnvironment.GetMZNS(); // GSMass of the Residual Environment - enva4M=theEnvironment.Get4Momentum(); // 4-Mom of the Residual Environment - G4LorentzVector toLV=reTLV+enva4M; // Total 4-mom for decay - enva4M=G4LorentzVector(0.,0.,0.,resEMa); // GSM of the Environment - reTLV=G4LorentzVector(0.,0.,0.,resQMa); // GSM of the Quasmon - if(G4QHadron(toLV).DecayIn2(reTLV,enva4M)) + G4cout<<"G4QE::CGS:*MultyBar*E="<<envPDG<<",B="<<resB<<",C="<<resC<<",S"<<resS<<G4endl; +#endif + if(envPDG!=90000000) + { + resEMa=theEnvironment.GetMZNS(); // GSMass of the Residual Environment + enva4M=theEnvironment.Get4Momentum(); // 4-Mom of the Residual Environment + G4LorentzVector toLV=reTLV+enva4M; // Total 4-mom for decay + enva4M=G4LorentzVector(0.,0.,0.,resEMa); // GSM of the Environment + reTLV=G4LorentzVector(0.,0.,0.,resQMa); // GSM of the Quasmon + if(G4QHadron(toLV).DecayIn2(reTLV,enva4M)) { #ifdef pdebug - G4cout<<"G4QE::CGS: fill EnvPDG="<<envPDG<<",4M="<<enva4M<<" and continue"<<G4endl; + G4cout<<"G4QE::CGS: fill EnvPDG="<<envPDG<<",4M="<<enva4M<<" and continue"<<G4endl; #endif - theQHadrons.push_back(new G4QHadron(envPDG,enva4M)); // (delete equivalent) - theEnvironment=G4QNucleus(G4QContent(0,0,0,0,0,0), G4LorentzVector(0.,0.,0.,0.)); - } - else G4cout<<"*G4QE::CGS:tM="<<toLV.m()<<toLV<<"<q="<<resQMa<<"+EM="<<resEMa<<G4endl; - } - G4int baPDG=3122; // Prototype for MultiLambda - if(!resS) baPDG = (!resC) ? 2112 : 2212; // MultiNeutron or MultiProton + theQHadrons.push_back(new G4QHadron(envPDG,enva4M)); // (delete equivalent) + theEnvironment=G4QNucleus(G4QContent(0,0,0,0,0,0), G4LorentzVector(0.,0.,0.,0.)); + } + else G4cout<<"*G4QE::CGS:tM="<<toLV.m()<<toLV<<"<q="<<resQMa<<"+EM="<<resEMa<<G4endl; + } + G4int baPDG=3122; // Prototype for MultiLambda + if(!resS) baPDG = (!resC) ? 2112 : 2212; // MultiNeutron or MultiProton #ifdef pdebug - G4cout<<"G4QE::CGS: fill "<<resB<<" of "<<baPDG<<" with t4M="<<reTLV<<G4endl; + G4cout<<"G4QE::CGS: fill "<<resB<<" of "<<baPDG<<" with t4M="<<reTLV<<G4endl; #endif - reTLV/=resB; // Recalculate! Anyway go out... - for(G4int ib=0; ib<resB; ib++) theQHadrons.push_back(new G4QHadron(baPDG,reTLV)); - return true; - } + reTLV/=resB; // Recalculate! Anyway go out... + for(G4int ib=0; ib<resB; ib++) theQHadrons.push_back(new G4QHadron(baPDG,reTLV)); + return true; + } #ifdef cdebug - if(resQPDG==89998005) - G4cout<<"G4QE::CGS:Q="<<valQ<<resQPDG<<",GM="<<resQMa<<",4M="<<reTLV<<reTLV.m()<<G4endl; -#endif - G4double resSMa=resQMa; // Prototype MinimalSplitMass of ResidNucl - enva4M=theEnvironment.Get4Momentum(); // 4-Mom of the Residual Environment - if(envPDG!=90000000 && fabs(enva4M.m2())>1.) // => "Environment is not vacuum" case - { // @@@@@@@@@@@@@@@@@@@ CALL SUBROUTINE ? @@@@@@@@@ - resEMa=theEnvironment.GetMZNS(); // GSMass of the Residual Environment + if(resQPDG==89998005) + G4cout<<"G4QE::CGS:Q="<<valQ<<resQPDG<<",GM="<<resQMa<<",4M="<<reTLV<<reTLV.m()<<G4endl; +#endif + G4double resSMa=resQMa; // Prototype MinimalSplitMass of ResidNucl + enva4M=theEnvironment.Get4Momentum(); // 4-Mom of the Residual Environment + if(envPDG!=90000000 && fabs(enva4M.m2())>1.) // => "Environment is not vacuum" case + { // @@@@@@@@@@@@@@@@@@@ CALL SUBROUTINE ? @@@@@@@@@ + resEMa=theEnvironment.GetMZNS(); // GSMass of the Residual Environment #ifdef cdebug G4cout<<"G4QE::CGS:EnvironmentExists,gsM="<<resEMa<<",4M="<<enva4M<<enva4M.m()<<G4endl; #endif - reTQC+=theEnvironment.GetQCZNS(); // Quark content of the Residual Nucleus - reTLV+=enva4M; // 4-Mom of Residual Nucleus - //resSMa+=resEMa; // Minimal Split Mass of Residual Nucleus - resSMa=G4QPDGCode(reTQC).GetMass(); // GS Mass of the Residual Quasmon+Environ - } - else // Calculate BaryonSeparatCond for vacQuasm - { - G4double resQM=reTLV.m(); // CM Mass of the Residual vacQuasmon - G4int baryn=valQ.GetBaryonNumber(); // Baryon Number of the Residual vacQuasmon - if(baryn>1) // => "Can split baryon?" + reTQC+=theEnvironment.GetQCZNS(); // Quark content of the Residual Nucleus + reTLV+=enva4M; // 4-Mom of Residual Nucleus + //resSMa+=resEMa; // Minimal Split Mass of Residual Nucleus + resSMa=G4QPDGCode(reTQC).GetMass(); // GS Mass of the Residual Quasmon+Environ + } + else // Calculate BaryonSeparatCond for vacQuasm + { + G4double resQM=reTLV.m(); // CM Mass of the Residual vacQuasmon + G4int baryn=valQ.GetBaryonNumber(); // Baryon Number of the Residual vacQuasmon + if(baryn>1) // => "Can split baryon?" { - if(valQ.GetN()) // ===> "Can split neutron?" + if(valQ.GetN()) // ===> "Can split neutron?" { - G4QContent resQC=valQ-neutQC; // QC of Residual for the Neutron - G4int resPDG=resQC.GetSPDGCode(); // PDG of Residual for the Neutron - if(resPDG==10&&resQC.GetBaryonNumber()>0) resPDG=resQC.GetZNSPDGCode(); - G4double resMas=G4QPDGCode(resPDG).GetMass(); // GS Mass of the Residual - if(resMas+mNeut<resQM) bsCond=true; + G4QContent resQC=valQ-neutQC; // QC of Residual for the Neutron + G4int resPDG=resQC.GetSPDGCode(); // PDG of Residual for the Neutron + if(resPDG==10&&resQC.GetBaryonNumber()>0) resPDG=resQC.GetZNSPDGCode(); + G4double resMas=G4QPDGCode(resPDG).GetMass(); // GS Mass of the Residual + if(resMas+mNeut<resQM) bsCond=true; } - else if(valQ.GetP()) // ===> "Can split proton?" + else if(valQ.GetP()) // ===> "Can split proton?" { - G4QContent resQC=valQ-protQC; // QC of Residual for the Proton - G4int resPDG=resQC.GetSPDGCode(); // PDG of Residual for the Proton - if(resPDG==10&&resQC.GetBaryonNumber()>0) resPDG=resQC.GetZNSPDGCode(); - G4double resMas=G4QPDGCode(resPDG).GetMass(); // GS Mass of the Residual - if(resMas+mProt<resQM) bsCond=true; + G4QContent resQC=valQ-protQC; // QC of Residual for the Proton + G4int resPDG=resQC.GetSPDGCode(); // PDG of Residual for the Proton + if(resPDG==10&&resQC.GetBaryonNumber()>0) resPDG=resQC.GetZNSPDGCode(); + G4double resMas=G4QPDGCode(resPDG).GetMass(); // GS Mass of the Residual + if(resMas+mProt<resQM) bsCond=true; } - else if(valQ.GetL()) // ===> "Can split Lambda?" + else if(valQ.GetL()) // ===> "Can split Lambda?" { - G4QContent resQC=valQ-lambQC; // QC of Residual for the Lambda - G4int resPDG=resQC.GetSPDGCode(); // PDG of Residual for the Lambda - if(resPDG==10&&resQC.GetBaryonNumber()>0) resPDG=resQC.GetZNSPDGCode(); - G4double resMas=G4QPDGCode(resPDG).GetMass(); // GS Mass of the Residual - if(resMas+mLamb<resQM) bsCond=true; + G4QContent resQC=valQ-lambQC; // QC of Residual for the Lambda + G4int resPDG=resQC.GetSPDGCode(); // PDG of Residual for the Lambda + if(resPDG==10&&resQC.GetBaryonNumber()>0) resPDG=resQC.GetZNSPDGCode(); + G4double resMas=G4QPDGCode(resPDG).GetMass(); // GS Mass of the Residual + if(resMas+mLamb<resQM) bsCond=true; } } - } - G4double resTMa=reTLV.m(); // CM Mass of the ResidualNucleus (Q+Env) - //if(resTMa>resSMa && (resEMa || bsCond)) return true;// Why not ?? @@ (See G4Q the same) - G4int nOfOUT = theQHadrons.size(); // Total #of QHadrons at this point + } + G4double resTMa=reTLV.m(); // CM Mass of the ResidualNucleus (Q+Env) + //if(resTMa>resSMa && (resEMa || bsCond)) return true;// Why not ?? @@ (See G4Q the same) + G4int nOfOUT = theQHadrons.size(); // Total #of QHadrons at this point #ifdef cdebug - G4int reTPDG=reTQC.GetSPDGCode(); - if(reTPDG==10&&reTQC.GetBaryonNumber()>0) reTPDG=reTQC.GetZNSPDGCode(); - G4cout<<"G4QEnv::CheckGS:(tM="<<resTMa<<"<rQM+rEM="<<resSMa<<",d="<<resSMa-resTMa - <<" || rEM="<<resEMa<<"=0 & "<<!bsCond<<"=1) & n="<<nOfOUT<<">0 & F="<<corFlag - <<" then the correction must be done for PDG="<<reTPDG<<G4endl; -#endif - if ( (resTMa < resSMa || (!resEMa && !bsCond) ) && nOfOUT > 0 && corFlag) // *** CORRECTION *** - { - G4QHadron* theLast = theQHadrons[nOfOUT-1]; - G4int cNf=theLast->GetNFragments(); - G4int crPDG=theLast->GetPDGCode(); + G4int reTPDG=reTQC.GetSPDGCode(); + if(reTPDG==10&&reTQC.GetBaryonNumber()>0) reTPDG=reTQC.GetZNSPDGCode(); + G4cout<<"G4QEnv::CheckGS:(tM="<<resTMa<<"<rQM+rEM="<<resSMa<<",d="<<resSMa-resTMa + <<" || rEM="<<resEMa<<"=0 & "<<!bsCond<<"=1) & n="<<nOfOUT<<">0 & F="<<corFlag + <<" then the correction must be done for PDG="<<reTPDG<<G4endl; +#endif + if ( (resTMa < resSMa || (!resEMa && !bsCond) ) && nOfOUT > 0 && corFlag) // *** CORRECTION *** + { + G4QHadron* theLast = theQHadrons[nOfOUT-1]; + G4int cNf=theLast->GetNFragments(); + G4int crPDG=theLast->GetPDGCode(); #ifdef cdebug G4cout<<"G4QE::CGS: **Correction** lNF="<<cNf<<",lPDG="<<crPDG<<",Q4M="<<reTLV<<G4endl; #endif - G4LorentzVector hadr4M = theLast->Get4Momentum(); - G4double hadrMa=hadr4M.m(); - G4LorentzVector tmpTLV=reTLV+hadr4M; // Tot (ResidNucl+LastHadron) 4-Mom + G4LorentzVector hadr4M = theLast->Get4Momentum(); + G4double hadrMa=hadr4M.m(); + G4LorentzVector tmpTLV=reTLV+hadr4M; // Tot (ResidNucl+LastHadron) 4-Mom #ifdef cdebug G4cout<<"G4QE::CGS:YES, s4M/M="<<tmpTLV<<tmpTLV.m()<<">rSM+hM="<<resSMa+hadrMa<<G4endl; #endif - G4double tmpTM=tmpTLV.m(); - if(tmpTM>resSMa+hadrMa &&!cNf && crPDG!=22) // Q(E)L contain QM(+EM)+lM ***Last CORR*** - { - if(resEMa) // => "NonVacuumEnvironment exists" case - { - G4LorentzVector quas4M = G4LorentzVector(0.,0.,0.,resQMa); // GS Mass of Quasmon - G4LorentzVector enva4M = G4LorentzVector(0.,0.,0.,resEMa); // GS Mass of ResidEnvir - if(tmpTM>=resQMa+resEMa+hadrMa && G4QHadron(tmpTLV).DecayIn3(hadr4M,quas4M,enva4M)) - { - //@@CHECK CoulBar (only for ResQuasmon in respect to ResEnv) and may be evaporate + G4double tmpTM=tmpTLV.m(); + if(tmpTM>resSMa+hadrMa &&!cNf && crPDG!=22) // Q(E)L contain QM(+EM)+lM ***Last CORR*** + { + if(resEMa) // => "NonVacuumEnvironment exists" case + { + G4LorentzVector quas4M = G4LorentzVector(0.,0.,0.,resQMa); // GS Mass of Quasmon + G4LorentzVector enva4M = G4LorentzVector(0.,0.,0.,resEMa); // GS Mass of ResidEnvir + if(tmpTM>=resQMa+resEMa+hadrMa && G4QHadron(tmpTLV).DecayIn3(hadr4M,quas4M,enva4M)) + { + //@@CHECK CoulBar (only for ResQuasmon in respect to ResEnv) and may be evaporate #ifdef pdebug - G4cout<<"G4QE::CGS: Modify the Last 4-momentum to "<<hadr4M<<G4endl; + G4cout<<"G4QE::CGS: Modify the Last 4-momentum to "<<hadr4M<<G4endl; #endif - theLast->Set4Momentum(hadr4M); - G4QHadron* quasH = new G4QHadron(valQ, quas4M); - G4QContent theEQC=theEnvironment.GetQCZNS(); - G4QHadron* envaH = new G4QHadron(theEQC,enva4M); + theLast->Set4Momentum(hadr4M); + G4QHadron* quasH = new G4QHadron(valQ, quas4M); + G4QContent theEQC=theEnvironment.GetQCZNS(); + G4QHadron* envaH = new G4QHadron(theEQC,enva4M); #ifdef pdebug - G4cout<<"G4QE::CGS: Fill Quasm "<<valQ<<quas4M<<" in any form"<<G4endl; + G4cout<<"G4QE::CGS: Fill Quasm "<<valQ<<quas4M<<" in any form"<<G4endl; #endif - EvaporateResidual(quasH); // Try to evaporate residual (del.eq.) + EvaporateResidual(quasH); // Try to evaporate residual (del.eq.) #ifdef pdebug - G4cout<<"G4QE::CGS: Fill envir "<<theEQC<<enva4M<<" in any form"<<G4endl; + G4cout<<"G4QE::CGS: Fill envir "<<theEQC<<enva4M<<" in any form"<<G4endl; #endif - // @@ Substitute by EvaporateResidual (if it is not used in the evaporateResid) - envaH->Set4Momentum(enva4M); - EvaporateResidual(envaH); // Try to evaporate residual (del.eq.) - // Kill environment as it is already included in the decay - theEnvironment=G4QNucleus(G4QContent(0,0,0,0,0,0), G4LorentzVector(0.,0.,0.,0.)); + // @@ Substitute by EvaporateResidual (if it is not used in the evaporateResid) + envaH->Set4Momentum(enva4M); + EvaporateResidual(envaH); // Try to evaporate residual (del.eq.) + // Kill environment as it is already included in the decay + theEnvironment=G4QNucleus(G4QContent(0,0,0,0,0,0), G4LorentzVector(0.,0.,0.,0.)); } - else - { + else + { #ifdef cdebug - G4cout<<"***G4QEnv::CheckGroundState: Decay in Frag+ResQ+ResE error"<<G4endl; + G4cout<<"***G4QEnv::CheckGroundState: Decay in Frag+ResQ+ResE error"<<G4endl; #endif - return false; - } + return false; + } } - else // => "Environ is vacuum" case (DecayIn2) - { - G4LorentzVector quas4M = G4LorentzVector(0.,0.,0.,resQMa); // GS Mass of Quasmon - G4QHadron* quasH = new G4QHadron(valQ, quas4M); - if(tmpTM>=resQMa+hadrMa && G4QHadron(tmpTLV).DecayIn2(hadr4M,quas4M))//DeIn2(noEnv) - { - //@@CHECK CoulBar (only for ResQuasmon in respect to ResEnv) & may be evaporate - theLast->Set4Momentum(hadr4M); + else // => "Environ is vacuum" case (DecayIn2) + { + G4LorentzVector quas4M = G4LorentzVector(0.,0.,0.,resQMa); // GS Mass of Quasmon + G4QHadron* quasH = new G4QHadron(valQ, quas4M); + if(tmpTM>=resQMa+hadrMa && G4QHadron(tmpTLV).DecayIn2(hadr4M,quas4M))//DeIn2(noEnv) + { + //@@CHECK CoulBar (only for ResQuasmon in respect to ResEnv) & may be evaporate + theLast->Set4Momentum(hadr4M); #ifdef pdebug - G4cout<<"G4QE::CGS: modify theLast 4M="<<hadr4M<<hadr4M.m()<<G4endl; + G4cout<<"G4QE::CGS: modify theLast 4M="<<hadr4M<<hadr4M.m()<<G4endl; #endif - quasH->Set4Momentum(quas4M); + quasH->Set4Momentum(quas4M); #ifdef pdebug - G4cout<<"G4QE::CGS: fill newQH "<<valQ<<quas4M<<quas4M.m()<<" inAnyForm"<<G4endl; + G4cout<<"G4QE::CGS: fill newQH "<<valQ<<quas4M<<quas4M.m()<<" inAnyForm"<<G4endl; #endif - EvaporateResidual(quasH); // Try to evaporate residual (del.eq.) + EvaporateResidual(quasH); // Try to evaporate residual (del.eq.) } - else - { - delete quasH; // Delete "Quasmon Hadron" + else + { + delete quasH; // Delete "Quasmon Hadron" #ifdef cdebug - G4cout<<"***G4QEnv::CheckGS: Decay in Fragm+ResQ did not succeeded"<<G4endl; + G4cout<<"***G4QEnv::CheckGS: Decay in Fragm+ResQ did not succeeded"<<G4endl; #endif - return false; - } + return false; + } } - } - else // *** Try Last+Previous CORRECTION *** - { + } + else // *** Try Last+Previous CORRECTION *** + { #ifdef cdebug G4cout<<"G4QEnv::CheckGS: the Last did not help, nH="<<nOfOUT<<G4endl; #endif - if(nOfOUT>1) // Cor with Last&Previous can be tryed + if(nOfOUT>1) // Cor with Last&Previous can be tryed { - G4QHadron* thePrev = theQHadrons[nOfOUT-2]; // Get pointer to Prev before Last - if(thePrev->GetNFragments()||thePrev->GetNFragments()) return false;// Dec H/g - G4LorentzVector prev4M = thePrev->Get4Momentum(); - G4double prevMa=prev4M.m(); // Mass of previous hadron - tmpTLV+=prev4M; // Increase Total 4-Mom of TotalResidNucl - G4int totPDG=reTQC.GetSPDGCode(); // PDG Code of Total Residual Nucleus - if(totPDG==10&&reTQC.GetBaryonNumber()>0) totPDG=reTQC.GetZNSPDGCode(); - G4double tQMa=G4QPDGCode(totPDG).GetMass(); // GS Mass of the Residual Nucleus + G4QHadron* thePrev = theQHadrons[nOfOUT-2]; // Get pointer to Prev before Last + if(thePrev->GetNFragments()||thePrev->GetNFragments()) return false;// Dec H/g + G4LorentzVector prev4M = thePrev->Get4Momentum(); + G4double prevMa=prev4M.m(); // Mass of previous hadron + tmpTLV+=prev4M; // Increase Total 4-Mom of TotalResidNucl + G4int totPDG=reTQC.GetSPDGCode(); // PDG Code of Total Residual Nucleus + if(totPDG==10&&reTQC.GetBaryonNumber()>0) totPDG=reTQC.GetZNSPDGCode(); + G4double tQMa=G4QPDGCode(totPDG).GetMass(); // GS Mass of the Residual Nucleus #ifdef cdebug G4cout<<"G4QE::CGS:T3="<<tmpTLV<<tmpTLV.m()<<">t+h+p="<<tQMa+hadrMa+prevMa<<G4endl; #endif - if(tmpTLV.m()>tQMa+hadrMa+prevMa) - { - G4LorentzVector nuc4M = G4LorentzVector(0.,0.,0.,tQMa);// 4-Mom of ResidNucAtRest - G4QHadron* nucH = new G4QHadron(reTQC, nuc4M); - if(!G4QHadron(tmpTLV).DecayIn3(hadr4M,prev4M,nuc4M)) - { - delete nucH; // Delete "Residual Nucleus Hadron" - G4cout<<"---Warning---G4QE::CGS:DecayIn ResNuc+LastH+PrevH Error"<<G4endl; - return false; - } - else - { - theLast->Set4Momentum(hadr4M); - thePrev->Set4Momentum(prev4M); - nucH->Set4Momentum(nuc4M); + if(tmpTLV.m()>tQMa+hadrMa+prevMa) + { + G4LorentzVector nuc4M = G4LorentzVector(0.,0.,0.,tQMa);// 4-Mom of ResidNucAtRest + G4QHadron* nucH = new G4QHadron(reTQC, nuc4M); + if(!G4QHadron(tmpTLV).DecayIn3(hadr4M,prev4M,nuc4M)) + { + delete nucH; // Delete "Residual Nucleus Hadron" + G4cout<<"---Warning---G4QE::CGS:DecayIn ResNuc+LastH+PrevH Error"<<G4endl; + return false; + } + else + { + theLast->Set4Momentum(hadr4M); + thePrev->Set4Momentum(prev4M); + nucH->Set4Momentum(nuc4M); #ifdef cdebug G4cout<<"G4QE::CGS:*SUCCESS**>CHECK, D4M="<<tmpTLV-hadr4M-prev4M-nuc4M<<G4endl; #endif #ifdef pdebug - G4cout<<"G4QE::CGS: Fill nucleus "<<reTQC<<nuc4M<<" in any form"<<G4endl; + G4cout<<"G4QE::CGS: Fill nucleus "<<reTQC<<nuc4M<<" in any form"<<G4endl; #endif - EvaporateResidual(nucH); // Try to evaporate residual (del.eq.) + EvaporateResidual(nucH); // Try to evaporate residual (del.eq.) } } - else // ===> Try to use any hadron from the output - { + else // ===> Try to use any hadron from the output + { #ifdef cdebug G4cout<<"G4QE::CGS:Prev&Last didn't help,nH="<<nOfOUT<<">2, MQ="<<resQMa<<G4endl; #endif G4int nphot=-1; // #of photons - G4int npip=-1; // #of Pi+ - G4int npiz=-1; // #of Pi0 - G4int npim=-1; // #of Pi- - G4double emaz=0.; // The maximum energy for pi0 (to sel high E) - for(G4int id=nOfOUT-1; id>=0; id--) // Search for photons and pi+, and pi- - { - G4QHadron* curHadr = theQHadrons[id]; - G4int hPDG=curHadr->GetPDGCode(); - if(hPDG == 22) nphot=id; // Get the earliest gamma - else if(hPDG==211 && npip<1) npip=id; // Get the latest Pi+ - else if(hPDG==111) - { + G4int npip=-1; // #of Pi+ + G4int npiz=-1; // #of Pi0 + G4int npim=-1; // #of Pi- + G4double emaz=0.; // The maximum energy for pi0 (to sel high E) + for(G4int id=nOfOUT-1; id>=0; id--) // Search for photons and pi+, and pi- + { + G4QHadron* curHadr = theQHadrons[id]; + G4int hPDG=curHadr->GetPDGCode(); + if(hPDG == 22) nphot=id; // Get the earliest gamma + else if(hPDG==211 && npip<1) npip=id; // Get the latest Pi+ + else if(hPDG==111) + { G4double piE=curHadr->Get4Momentum().e(); #ifdef chdebug - G4cout<<"G4QE::CheckGroundState:"<<id<<",Epi0="<<piE<<">"<<emaz<<G4endl; -#endif - if(piE>emaz) - { - npiz=id; - emaz=piE; - } - } - else if(hPDG==-211 && npim<1) npim=id; // Get the latest Pi- - } - if(nphot>=0) // Photon is found, try to use it to resolve PANIC + G4cout<<"G4QE::CheckGroundState:"<<id<<",Epi0="<<piE<<">"<<emaz<<G4endl; +#endif + if(piE>emaz) + { + npiz=id; + emaz=piE; + } + } + else if(hPDG==-211 && npim<1) npim=id; // Get the latest Pi- + } + if(nphot>=0) // Photon is found, try to use it to resolve PANIC { - G4QHadron* curHadr = theQHadrons[nphot]; // Pointer to the photon - G4LorentzVector ch4M=curHadr->Get4Momentum(); // 4-Mom of the Photon - G4LorentzVector tt4M=ch4M+reTLV;// (resQMa=GSMass of the ResidQuasmon(+Env.)) - G4double ttM=tt4M.m(); // Mass of the Phot+ResidQm compaund system - if(resQMa<ttM) // PANIC can be resolved with this Photon + G4QHadron* curHadr = theQHadrons[nphot]; // Pointer to the photon + G4LorentzVector ch4M=curHadr->Get4Momentum(); // 4-Mom of the Photon + G4LorentzVector tt4M=ch4M+reTLV;// (resQMa=GSMass of the ResidQuasmon(+Env.)) + G4double ttM=tt4M.m(); // Mass of the Phot+ResidQm compaund system + if(resQMa<ttM) // PANIC can be resolved with this Photon { - G4LorentzVector quas4M = G4LorentzVector(0.,0.,0.,resSMa);//GSMass of Quasm - G4QHadron* rqH = new G4QHadron(reTQC,quas4M); // Prototype of outputResidQ - if(!G4QHadron(tt4M).DecayIn2(ch4M,quas4M)) - { - delete rqH; // Delete tmp "Residual Quasmon Hadron" + G4LorentzVector quas4M = G4LorentzVector(0.,0.,0.,resSMa);//GSMass of Quasm + G4QHadron* rqH = new G4QHadron(reTQC,quas4M); // Prototype of outputResidQ + if(!G4QHadron(tt4M).DecayIn2(ch4M,quas4M)) + { + delete rqH; // Delete tmp "Residual Quasmon Hadron" #ifdef cdebug - G4cout<<"***G4QEnv::CheckGS: Decay in Photon+ResQ tM="<<ttM<<G4endl; + G4cout<<"***G4QEnv::CheckGS: Decay in Photon+ResQ tM="<<ttM<<G4endl; #endif - } - else - { - curHadr->Set4Momentum(ch4M);// Change 4M of Photon (reduced by decay) - rqH->Set4Momentum(quas4M); // Fill 4M of the GS Residual Quasmon + } + else + { + curHadr->Set4Momentum(ch4M);// Change 4M of Photon (reduced by decay) + rqH->Set4Momentum(quas4M); // Fill 4M of the GS Residual Quasmon #ifdef cdebug - G4cout<<"G4QE::CGS:nPhot="<<nphot<<",ph4M="<<ch4M<<"+r4M="<<quas4M<<G4endl; + G4cout<<"G4QE::CGS:nPhot="<<nphot<<",ph4M="<<ch4M<<"+r4M="<<quas4M<<G4endl; #endif #ifdef pdebug - G4cout<<"G4QE::CGS: Fill Resid "<<reTQC<<quas4M<<" in any form"<<G4endl; + G4cout<<"G4QE::CGS: Fill Resid "<<reTQC<<quas4M<<" in any form"<<G4endl; #endif - EvaporateResidual(rqH); // Try to evaporate residual (del.eq.) - if(envPDG!=90000000) theEnvironment=G4QNucleus(G4QContent(0,0,0,0,0,0), - G4LorentzVector(0.,0.,0.,0.)); - return true; + EvaporateResidual(rqH); // Try to evaporate residual (del.eq.) + if(envPDG!=90000000) theEnvironment=G4QNucleus(G4QContent(0,0,0,0,0,0), + G4LorentzVector(0.,0.,0.,0.)); + return true; } - } // End of the KINEMATIC CHECK FOR THE PHOTON if - } // End of nphot IF + } // End of the KINEMATIC CHECK FOR THE PHOTON if + } // End of nphot IF #ifdef chdebug - if(resQPDG==89998004)G4cout<<"G4QE::CGS:S="<<resS<<",B="<<resB<<",C="<<resC - <<",+#"<<npip<<",-#"<<npim<<",0#"<<npiz<<",E="<<envPDG<<G4endl; + if(resQPDG==89998004)G4cout<<"G4QE::CGS:S="<<resS<<",B="<<resB<<",C="<<resC + <<",+#"<<npip<<",-#"<<npim<<",0#"<<npiz<<",E="<<envPDG<<G4endl; #endif - //if(npip>=0&&resQPDG==89998004 || npim>=0&&resQPDG==90003998)// D+D+pi->N+N+pi - if (envPDG == 90000000 && !resS && resB > 1 && - ((npip >= 0 && resC == -2) || (npim >= 0 && resC-resB == 2)) ) + //if(npip>=0&&resQPDG==89998004 || npim>=0&&resQPDG==90003998)// D+D+pi->N+N+pi + if (envPDG == 90000000 && !resS && resB > 1 && + ((npip >= 0 && resC == -2) || (npim >= 0 && resC-resB == 2)) ) { - G4int npi=npip; // (Delta-)+(Delta-)+k*n+(pi+)->(k+2)*n+(pi-) - G4int piPD=-211; - G4int nuPD=2112; - G4double nuM=mNeut; - if(resC!=-2) // (Delta++)+(Delta++)+k*p+(pi-)->(k+2)*p+(pi-) - { - npi=npim; - piPD=211; - nuPD=2212; - nuM=mProt; - } - G4QPDGCode piQPDG(piPD); - G4int rB=resB-1; - G4double suB=rB*nuM; - G4double suM=suB+nuM+mPi; - G4QHadron* curHadr = theQHadrons[npi]; // Pointer to the pion of oposit sign - G4LorentzVector ch4M=curHadr->Get4Momentum(); // 4-Mom of the Pion - G4LorentzVector tt4M=ch4M+reTLV;// (resQMa=GSMass of the ResidQuasmon(+Env.)) - G4double ttM=tt4M.m(); // Mass of the Pion+ResidQm compaund system + G4int npi=npip; // (Delta-)+(Delta-)+k*n+(pi+)->(k+2)*n+(pi-) + G4int piPD=-211; + G4int nuPD=2112; + G4double nuM=mNeut; + if(resC!=-2) // (Delta++)+(Delta++)+k*p+(pi-)->(k+2)*p+(pi-) + { + npi=npim; + piPD=211; + nuPD=2212; + nuM=mProt; + } + G4QPDGCode piQPDG(piPD); + G4int rB=resB-1; + G4double suB=rB*nuM; + G4double suM=suB+nuM+mPi; + G4QHadron* curHadr = theQHadrons[npi]; // Pointer to the pion of oposit sign + G4LorentzVector ch4M=curHadr->Get4Momentum(); // 4-Mom of the Pion + G4LorentzVector tt4M=ch4M+reTLV;// (resQMa=GSMass of the ResidQuasmon(+Env.)) + G4double ttM=tt4M.m(); // Mass of the Pion+ResidQm compaund system #ifdef cdebug - if(resQPDG==89998005) - G4cout<<"G4QE::CGS:Sm="<<suM<<"<Tot="<<ttM<<tt4M - <<",pi="<<ch4M<<",Q="<<reTLV.m()<<reTLV<<G4endl; + if(resQPDG==89998005) + G4cout<<"G4QE::CGS:Sm="<<suM<<"<Tot="<<ttM<<tt4M + <<",pi="<<ch4M<<",Q="<<reTLV.m()<<reTLV<<G4endl; #endif - if(suM<ttM) // PANIC can be resolved with this Pion + if(suM<ttM) // PANIC can be resolved with this Pion { - G4LorentzVector fn4M = G4LorentzVector(0.,0.,0.,suB);//First nucleon(s) - G4LorentzVector sn4M = G4LorentzVector(0.,0.,0.,nuM);//Second nucleon - G4LorentzVector pi4M = G4LorentzVector(0.,0.,0.,mPi);//Pion - if(!G4QHadron(tt4M).DecayIn3(fn4M,sn4M,pi4M)) - { + G4LorentzVector fn4M = G4LorentzVector(0.,0.,0.,suB);//First nucleon(s) + G4LorentzVector sn4M = G4LorentzVector(0.,0.,0.,nuM);//Second nucleon + G4LorentzVector pi4M = G4LorentzVector(0.,0.,0.,mPi);//Pion + if(!G4QHadron(tt4M).DecayIn3(fn4M,sn4M,pi4M)) + { #ifdef cdebug - if(resQPDG==89998005) - G4cout<<"***G4QEnv::CheckGS:DecayIn3 2N+Pi,tM="<<ttM<<","<<suM<<G4endl; + if(resQPDG==89998005) + G4cout<<"***G4QEnv::CheckGS:DecayIn3 2N+Pi,tM="<<ttM<<","<<suM<<G4endl; #endif - } - else - { - if(rB>1) fn4M/=rB; - for(G4int ib=0; ib<rB; ib++) - { - G4QHadron* fnH = new G4QHadron(nuPD,fn4M);// First Nucleon(s) + } + else + { + if(rB>1) fn4M/=rB; + for(G4int ib=0; ib<rB; ib++) + { + G4QHadron* fnH = new G4QHadron(nuPD,fn4M);// First Nucleon(s) #ifdef pdebug - G4cout<<"G4QE::CGS: fill Nucleon #"<<ib<<", "<<nuPD<<fn4M<<G4endl; + G4cout<<"G4QE::CGS: fill Nucleon #"<<ib<<", "<<nuPD<<fn4M<<G4endl; #endif - theQHadrons.push_back(fnH); // Fill First Nucleon(s) (del. equivalent) - } - G4QHadron* snH = new G4QHadron(nuPD,sn4M);// Second Nucleon + theQHadrons.push_back(fnH); // Fill First Nucleon(s) (del. equivalent) + } + G4QHadron* snH = new G4QHadron(nuPD,sn4M);// Second Nucleon #ifdef pdebug - G4cout<<"G4QE::CGS: fill the Last Nucleon, "<<nuPD<<sn4M<<G4endl; + G4cout<<"G4QE::CGS: fill the Last Nucleon, "<<nuPD<<sn4M<<G4endl; #endif - theQHadrons.push_back(snH); // Fill Second Nucleon (delete equivalent) - curHadr->Set4Momentum(pi4M);// Change 4M of the Pion (reduced by decay) - curHadr->SetQPDG(piQPDG); // Change Charge of thePion + theQHadrons.push_back(snH); // Fill Second Nucleon (delete equivalent) + curHadr->Set4Momentum(pi4M);// Change 4M of the Pion (reduced by decay) + curHadr->SetQPDG(piQPDG); // Change Charge of thePion #ifdef cdebug - if(resQPDG==89998005) - G4cout<<"G4QE::CGS:1="<<nuPD<<fn4M<<rB<<",2="<<sn4M<<",p="<<pi4M<<G4endl; + if(resQPDG==89998005) + G4cout<<"G4QE::CGS:1="<<nuPD<<fn4M<<rB<<",2="<<sn4M<<",p="<<pi4M<<G4endl; #endif - return true; + return true; } - } // End of the KINEMATIC CHECK FOR THE PI+/PI- if - } // End of npip/pin Isonucleus IF - if(envPDG==90000000&&!resS&&resB>1&&npiz>=0&&(resC<-1||resC-resB>1)) + } // End of the KINEMATIC CHECK FOR THE PI+/PI- if + } // End of npip/pin Isonucleus IF + if(envPDG==90000000&&!resS&&resB>1&&npiz>=0&&(resC<-1||resC-resB>1)) { #ifdef chdebug - G4cout<<"***G4QE::CGS:Pi0, rPDG="<<resQPDG<<",rC="<<resC<<",rB="<<resB<<G4endl; -#endif - G4int npi=-resC; // k*(Delta-)+m*n+pi0->(k+m)*k+(pi-) - G4int piPD=-211; - G4int nuPD=2112; - G4double nuM=mNeut; - if(resC!=-2) // k*(Delta++)+m*p+pi0->(k+m)*p+k*(pi+) - { - npi=resC-resB; - piPD=211; - nuPD=2212; - nuM=mProt; - } - G4QPDGCode piQPDG(piPD); - G4double suB=resB*nuM; // Total mass of nucleons - G4double suM=npi*mPi; // Total mass of pions - G4double sum=suB+suM; // Total mass of secondaries - G4QHadron* curHadr = theQHadrons[npiz]; // Pointer to pi0 - G4LorentzVector ch4M=curHadr->Get4Momentum(); // 4-Mom of the Pion - G4LorentzVector tt4M=ch4M+reTLV;// (resQMa=GSMass of the ResidQuasmon(+Env.)) - G4double ttM=tt4M.m(); // Mass of the Pion+ResidQm compaund system + G4cout<<"***G4QE::CGS:Pi0, rPDG="<<resQPDG<<",rC="<<resC<<",rB="<<resB<<G4endl; +#endif + G4int npi=-resC; // k*(Delta-)+m*n+pi0->(k+m)*k+(pi-) + G4int piPD=-211; + G4int nuPD=2112; + G4double nuM=mNeut; + if(resC!=-2) // k*(Delta++)+m*p+pi0->(k+m)*p+k*(pi+) + { + npi=resC-resB; + piPD=211; + nuPD=2212; + nuM=mProt; + } + G4QPDGCode piQPDG(piPD); + G4double suB=resB*nuM; // Total mass of nucleons + G4double suM=npi*mPi; // Total mass of pions + G4double sum=suB+suM; // Total mass of secondaries + G4QHadron* curHadr = theQHadrons[npiz]; // Pointer to pi0 + G4LorentzVector ch4M=curHadr->Get4Momentum(); // 4-Mom of the Pion + G4LorentzVector tt4M=ch4M+reTLV;// (resQMa=GSMass of the ResidQuasmon(+Env.)) + G4double ttM=tt4M.m(); // Mass of the Pion+ResidQm compaund system #ifdef chdebug - G4cout<<"G4QE::CGS:sum="<<sum<<"<"<<ttM<<tt4M<<",pi0="<<ch4M<<",Q="<<reTLV.m() - <<reTLV<<G4endl; + G4cout<<"G4QE::CGS:sum="<<sum<<"<"<<ttM<<tt4M<<",pi0="<<ch4M<<",Q="<<reTLV.m() + <<reTLV<<G4endl; #endif - if(sum<ttM) // PANIC can be resolved with this Pi0 + if(sum<ttM) // PANIC can be resolved with this Pi0 { - G4LorentzVector fn4M = G4LorentzVector(0.,0.,0.,suB); // Nucleon(s) - G4LorentzVector pi4M = G4LorentzVector(0.,0.,0.,suM); // Pion(s) - if(G4QHadron(tt4M).DecayIn2(fn4M,pi4M)) - { - if(npi>1) pi4M/=npi; - curHadr->Set4Momentum(pi4M);// Change 4M of the Pion (reduced by decay) - curHadr->SetQPDG(piQPDG); // Change Charge of thePion - if(npi>1) for(G4int ip=1; ip<npi; ip++) - { - G4QHadron* piH = new G4QHadron(piPD,pi4M);// Pion(s) -#ifdef pdebug - G4cout<<"G4QE::CGS: fill Pion #"<<ip<<", "<<piPD<<pi4M<<G4endl; -#endif - theQHadrons.push_back(piH); // Fill Pion(s) (delete equivalent) - } - if(resB>1) fn4M/=resB; - for(G4int ib=0; ib<resB; ib++) - { - G4QHadron* fnH = new G4QHadron(nuPD,fn4M);// Nucleon(s) -#ifdef pdebug - G4cout<<"G4QE::CGS: fill IsoNucleon #"<<ib<<", "<<nuPD<<fn4M<<G4endl; -#endif - theQHadrons.push_back(fnH); // Fill Nucleon(s) (delete equivalent) - } + G4LorentzVector fn4M = G4LorentzVector(0.,0.,0.,suB); // Nucleon(s) + G4LorentzVector pi4M = G4LorentzVector(0.,0.,0.,suM); // Pion(s) + if(G4QHadron(tt4M).DecayIn2(fn4M,pi4M)) + { + if(npi>1) pi4M/=npi; + curHadr->Set4Momentum(pi4M);// Change 4M of the Pion (reduced by decay) + curHadr->SetQPDG(piQPDG); // Change Charge of thePion + if(npi>1) for(G4int ip=1; ip<npi; ip++) + { + G4QHadron* piH = new G4QHadron(piPD,pi4M);// Pion(s) +#ifdef pdebug + G4cout<<"G4QE::CGS: fill Pion #"<<ip<<", "<<piPD<<pi4M<<G4endl; +#endif + theQHadrons.push_back(piH); // Fill Pion(s) (delete equivalent) + } + if(resB>1) fn4M/=resB; + for(G4int ib=0; ib<resB; ib++) + { + G4QHadron* fnH = new G4QHadron(nuPD,fn4M);// Nucleon(s) +#ifdef pdebug + G4cout<<"G4QE::CGS: fill IsoNucleon #"<<ib<<", "<<nuPD<<fn4M<<G4endl; +#endif + theQHadrons.push_back(fnH); // Fill Nucleon(s) (delete equivalent) + } #ifdef chdebug G4cout<<"G4QE::CGS: nucl="<<nuPD<<fn4M<<resB<<", pion="<<pi4M<<npi<<G4endl; #endif - return true; + return true; } #ifdef chdebug - else G4cout<<"***G4QEnv::CheckGS:DecayIn3:*Pi0* tM="<<ttM<<","<<sum<<G4endl; + else G4cout<<"***G4QEnv::CheckGS:DecayIn3:*Pi0* tM="<<ttM<<","<<sum<<G4endl; #endif - } // End of the KINEMATIC CHECK FOR THE PI0 if + } // End of the KINEMATIC CHECK FOR THE PI0 if } // End of npiz Isonucleus IF #ifdef cdebug G4cout<<"G4QE::CGS: Photons can't help nP="<<nphot<<". TryChangeCharge."<<G4endl; #endif - // > Photons did not help, try to find an appropriate partner to join and decay - G4int reTBN=reTQC.GetBaryonNumber(); // Baryon number of theHadronicState - G4int reTCH=reTQC.GetCharge(); // Charge of theHadronicState - G4bool isoN = reTCH-reTBN>0 || reTCH<0; // UnavoidableIsonucleus (Delta cond.) - G4bool norN = reTCH<=reTBN || reTCH>=0; // "Regular nucleus" condition - G4double nnM=resSMa; // Fake prototype of the NormalNucleusMass - G4QContent ipiQC=pipQC; // Prototype of QCont for the Residual Pion+ - G4QContent nnQC=reTQC+pimQC; // Prototype of theIsoReduceNucleus(Delta++) - G4int nnPDG=nnQC.GetSPDGCode(); // Prot. PDGCode of the ResidNormalNucleus - if((!nnPDG||nnPDG==10)&&nnQC.GetBaryonNumber()>0) nnPDG=nnQC.GetZNSPDGCode(); + // > Photons did not help, try to find an appropriate partner to join and decay + G4int reTBN=reTQC.GetBaryonNumber(); // Baryon number of theHadronicState + G4int reTCH=reTQC.GetCharge(); // Charge of theHadronicState + G4bool isoN = reTCH-reTBN>0 || reTCH<0; // UnavoidableIsonucleus (Delta cond.) + G4bool norN = reTCH<=reTBN || reTCH>=0; // "Regular nucleus" condition + G4double nnM=resSMa; // Fake prototype of the NormalNucleusMass + G4QContent ipiQC=pipQC; // Prototype of QCont for the Residual Pion+ + G4QContent nnQC=reTQC+pimQC; // Prototype of theIsoReduceNucleus(Delta++) + G4int nnPDG=nnQC.GetSPDGCode(); // Prot. PDGCode of the ResidNormalNucleus + if((!nnPDG||nnPDG==10)&&nnQC.GetBaryonNumber()>0) nnPDG=nnQC.GetZNSPDGCode(); #ifdef cdebug G4cout<<"G4QE::CGS: nnPDR="<<nnPDG<<". TryChangeCharge nOUT="<<nOfOUT<<",Iso=" - <<isoN<<",Nor="<<norN<<",C="<<reTCH<<",B="<<reTBN<<G4endl; + <<isoN<<",Nor="<<norN<<",C="<<reTCH<<",B="<<reTBN<<G4endl; #endif - if(isoN) // Calculations for the Isonuclear Residual + if(isoN) // Calculations for the Isonuclear Residual { - if(reTCH<0) // "at least one Delta-" isostate (chngPort) - { - ipiQC=pimQC; // Change QCont for the Residual Pion- - nnQC=reTQC+pipQC; // Change QCont for theNormalNucleus(Delta-) - nnPDG=nnQC.GetSPDGCode(); // Change PDGCode of theResidNormalNucleus - if(nnPDG==10&&nnQC.GetBaryonNumber()>0) nnPDG=nnQC.GetZNSPDGCode(); + if(reTCH<0) // "at least one Delta-" isostate (chngPort) + { + ipiQC=pimQC; // Change QCont for the Residual Pion- + nnQC=reTQC+pipQC; // Change QCont for theNormalNucleus(Delta-) + nnPDG=nnQC.GetSPDGCode(); // Change PDGCode of theResidNormalNucleus + if(nnPDG==10&&nnQC.GetBaryonNumber()>0) nnPDG=nnQC.GetZNSPDGCode(); } - G4QPDGCode nnQPDG(nnPDG); // Now can even have Q-code ! - if(nnPDG<80000000) nnM=nnQPDG.GetMass(); // Mass for the Fundamental Hadron - else nnM=nnQPDG.GetNuclMass(nnPDG); // Mass for the Nucleus - } - G4bool chx2g=true; - G4bool force=false; // Force-flag to initiate gamma decays (ChEx=>"Pi0"->2gamma) - while(chx2g) - { - if(force) chx2g=false; - for(G4int hd=nOfOUT-1; hd>=0; hd--)// Try to use any hadron to resolve PANIC - { - G4QHadron* curHadr = theQHadrons[hd]; - G4int chNF=curHadr->GetNFragments(); - G4int chCH=curHadr->GetCharge(); - G4int chBN=curHadr->GetBaryonNumber(); - //G4int chS=curHadr->GetStrangeness(); - G4LorentzVector ch4M=curHadr->Get4Momentum(); // 4Mom of the Current Hadron + G4QPDGCode nnQPDG(nnPDG); // Now can even have Q-code ! + if(nnPDG<80000000) nnM=nnQPDG.GetMass(); // Mass for the Fundamental Hadron + else nnM=nnQPDG.GetNuclMass(nnPDG); // Mass for the Nucleus + } + G4bool chx2g=true; + G4bool force=false; // Force-flag to initiate gamma decays (ChEx=>"Pi0"->2gamma) + while(chx2g) + { + if(force) chx2g=false; + for(G4int hd=nOfOUT-1; hd>=0; hd--)// Try to use any hadron to resolve PANIC + { + G4QHadron* curHadr = theQHadrons[hd]; + G4int chNF=curHadr->GetNFragments(); + G4int chCH=curHadr->GetCharge(); + G4int chBN=curHadr->GetBaryonNumber(); + //G4int chS=curHadr->GetStrangeness(); + G4LorentzVector ch4M=curHadr->Get4Momentum(); // 4Mom of the Current Hadron #ifdef cdebug G4cout<<"G4QE::CGS:#"<<hd<<",ch="<<chCH<<",b="<<chBN<<",4M="<<ch4M<<G4endl; #endif - if(!chNF) - { - G4LorentzVector tt4M=ch4M+reTLV;// resSMa=GSMass of the ResidQuasmon(+Env) - G4double chM=ch4M.m(); // Mass of the CurrentHadron from theOUTPUT - G4double ttM=tt4M.m(); // TotalMass of CurHadr+Residual compaund - if(isoN) // "1 Delta Isonucleus" case + if(!chNF) + { + G4LorentzVector tt4M=ch4M+reTLV;// resSMa=GSMass of the ResidQuasmon(+Env) + G4double chM=ch4M.m(); // Mass of the CurrentHadron from theOUTPUT + G4double ttM=tt4M.m(); // TotalMass of CurHadr+Residual compaund + if(isoN) // "1 Delta Isonucleus" case { - if(nnM+mPi+chM<ttM) // PANIC can be resolved with thisCurHadron + if(nnM+mPi+chM<ttM) // PANIC can be resolved with thisCurHadron { #ifdef cdebug - G4cout<<"G4QE::CGS:CurH+ResQ+Pion t="<<tt4M<<ttM<<",cM="<<chM<<",rM=" - <<nnM<<", d="<<ttM-chM-nnM-mPi<<G4endl; + G4cout<<"G4QE::CGS:CurH+ResQ+Pion t="<<tt4M<<ttM<<",cM="<<chM<<",rM=" + <<nnM<<", d="<<ttM-chM-nnM-mPi<<G4endl; #endif - ch4M = G4LorentzVector(0.,0.,0.,chM); // Mass of current Hadron - G4LorentzVector quas4M = G4LorentzVector(0.,0.,0.,nnM); // GSMass of RQ - G4LorentzVector ipi4M = G4LorentzVector(0.,0.,0.,mPi);// GSMass of Pion - if(G4QHadron(tt4M).DecayIn3(ch4M,ipi4M,quas4M)) - { - curHadr->Set4Momentum(ch4M);// Change 4M of the Current Hadron - G4QHadron* rpH = new G4QHadron(ipiQC,ipi4M);// Prototype of ResidPion + ch4M = G4LorentzVector(0.,0.,0.,chM); // Mass of current Hadron + G4LorentzVector quas4M = G4LorentzVector(0.,0.,0.,nnM); // GSMass of RQ + G4LorentzVector ipi4M = G4LorentzVector(0.,0.,0.,mPi);// GSMass of Pion + if(G4QHadron(tt4M).DecayIn3(ch4M,ipi4M,quas4M)) + { + curHadr->Set4Momentum(ch4M);// Change 4M of the Current Hadron + G4QHadron* rpH = new G4QHadron(ipiQC,ipi4M);// Prototype of ResidPion #ifdef pdebug - G4cout<<"G4QE::CGS: fill Pion "<<ipiQC<<ipi4M<<G4endl; + G4cout<<"G4QE::CGS: fill Pion "<<ipiQC<<ipi4M<<G4endl; #endif - theQHadrons.push_back(rpH); // Fill Resid Pion (delete equivalent) - G4QHadron* rqH = new G4QHadron(nnQC,quas4M);// Prototype of OutResidQ + theQHadrons.push_back(rpH); // Fill Resid Pion (delete equivalent) + G4QHadron* rqH = new G4QHadron(nnQC,quas4M);// Prototype of OutResidQ #ifdef pdebug - G4cout<<"G4QE::CGS:Fill isoRes "<<nnQC<<quas4M<<" inAnyForm"<<G4endl; + G4cout<<"G4QE::CGS:Fill isoRes "<<nnQC<<quas4M<<" inAnyForm"<<G4endl; #endif #ifdef cdebug - //if(resQPDG==89998004) - G4cout<<"G4QE::CGS:#"<<hd<<"is h="<<curHadr->GetPDGCode()<<ch4M - <<curHadr->Get4Momentum()<<" + rq="<<nnPDG<<quas4M<<" + pi=" - <<ipiQC<<ipi4M<<G4endl; -#endif - EvaporateResidual(rqH); // Try to evaporate residual (del.eq.) - if(envPDG!=90000000)theEnvironment=G4QNucleus(G4QContent(0,0,0,0,0,0) - ,G4LorentzVector(0.,0.,0.,0.)); - return true; + //if(resQPDG==89998004) + G4cout<<"G4QE::CGS:#"<<hd<<"is h="<<curHadr->GetPDGCode()<<ch4M + <<curHadr->Get4Momentum()<<" + rq="<<nnPDG<<quas4M<<" + pi=" + <<ipiQC<<ipi4M<<G4endl; +#endif + EvaporateResidual(rqH); // Try to evaporate residual (del.eq.) + if(envPDG!=90000000)theEnvironment=G4QNucleus(G4QContent(0,0,0,0,0,0) + ,G4LorentzVector(0.,0.,0.,0.)); + return true; } #ifdef cdebug else G4cout<<"***G4QE::CGS:DecIn3 CurH+ResQ+Pion dM="<<ttM-chM<<G4endl; #endif - } - if ( (reTCH < 0 && chCH > 0) || (reTCH > reTBN && chCH < chBN) ) // Isoexchange can help + } + if ( (reTCH < 0 && chCH > 0) || (reTCH > reTBN && chCH < chBN) ) // Isoexchange can help { - G4QContent chQC=curHadr->GetQC(); // QuarkCont of the CurrentHadron - if(reTCH<0)chQC+=pimQC; // Add the negativPion QC to CurHadr - else chQC+=pipQC; // Add the positivePion QC to CurHadr - G4QPDGCode nnQPDG=G4QPDGCode(nnPDG);// New QPDG of the Residual - nnM=nnQPDG.GetMass(); // New Mass of the Residual - G4QPDGCode chQPDG=G4QPDGCode(chQC.GetSPDGCode());// New QPDG of CurHadr - chM=chQPDG.GetMass(); // New Mass of the CurHadron - if(force && nnPDG==111) nnM=0.; // Decay of Pi0->2 gammas is possible + G4QContent chQC=curHadr->GetQC(); // QuarkCont of the CurrentHadron + if(reTCH<0)chQC+=pimQC; // Add the negativPion QC to CurHadr + else chQC+=pipQC; // Add the positivePion QC to CurHadr + G4QPDGCode nnQPDG=G4QPDGCode(nnPDG);// New QPDG of the Residual + nnM=nnQPDG.GetMass(); // New Mass of the Residual + G4QPDGCode chQPDG=G4QPDGCode(chQC.GetSPDGCode());// New QPDG of CurHadr + chM=chQPDG.GetMass(); // New Mass of the CurHadron + if(force && nnPDG==111) nnM=0.; // Decay of Pi0->2 gammas is possible #ifdef cdebug - G4cout<<"G4QE::CGS:ChargeExchange,cx="<<chx2g<<",rC="<<reTCH<<",rB=" - <<reTBN<<",rM="<<nnM<<",hC="<<chCH<<",hB="<<chBN<<",hM="<<chM - <<",rM+hB="<<nnM+chM<<" < "<<ttM<<G4endl; -#endif - if(nnM+chM<ttM) - { - G4LorentzVector quas4M = G4LorentzVector(0.,0.,0.,nnM);//GSMass of RQ - G4LorentzVector gam4M = G4LorentzVector(0.,0.,0.,0.);//4Mom of gamma1 - ch4M = G4LorentzVector(0.,0.,0.,chM);//GSMass of ChrgExchanged Hadron - G4QHadron* rqH = new G4QHadron(nnQPDG,quas4M);//ChrgExResidualQuasmon - if(!nnM) // Decay ResidualVirtualQ: Pi0->2 gamma - { - if(!G4QHadron(tt4M).DecayIn3(ch4M,quas4M,gam4M)) - { - delete rqH; // Delete tmp "Residual Quasmon Hadron" + G4cout<<"G4QE::CGS:ChargeExchange,cx="<<chx2g<<",rC="<<reTCH<<",rB=" + <<reTBN<<",rM="<<nnM<<",hC="<<chCH<<",hB="<<chBN<<",hM="<<chM + <<",rM+hB="<<nnM+chM<<" < "<<ttM<<G4endl; +#endif + if(nnM+chM<ttM) + { + G4LorentzVector quas4M = G4LorentzVector(0.,0.,0.,nnM);//GSMass of RQ + G4LorentzVector gam4M = G4LorentzVector(0.,0.,0.,0.);//4Mom of gamma1 + ch4M = G4LorentzVector(0.,0.,0.,chM);//GSMass of ChrgExchanged Hadron + G4QHadron* rqH = new G4QHadron(nnQPDG,quas4M);//ChrgExResidualQuasmon + if(!nnM) // Decay ResidualVirtualQ: Pi0->2 gamma + { + if(!G4QHadron(tt4M).DecayIn3(ch4M,quas4M,gam4M)) + { + delete rqH; // Delete tmp "Residual Quasmon Hadron" #ifdef cdebug - G4cout<<"***G4QE::CGS:DecayIn3 CurH+2Gammas,d="<<ttM-chM<<G4endl; + G4cout<<"***G4QE::CGS:DecayIn3 CurH+2Gammas,d="<<ttM-chM<<G4endl; #endif - } - else - { - if(chCH+reTCH-chQC.GetCharge()-nnQC.GetCharge()) + } + else + { + if(chCH+reTCH-chQC.GetCharge()-nnQC.GetCharge()) G4cout<<"**G4QE::CGS:ChEx CH+2G i="<<reTCH<<"+h="<<chCH<<", f=" - <<nnQC.GetCharge()<<"+o="<<chQC.GetCharge()<<G4endl; - curHadr->Set4Momentum(ch4M);// Change 4M of the Current Hadron - curHadr->SetQPDG(chQPDG); // Change QPDG of the Current Hadron + <<nnQC.GetCharge()<<"+o="<<chQC.GetCharge()<<G4endl; + curHadr->Set4Momentum(ch4M);// Change 4M of the Current Hadron + curHadr->SetQPDG(chQPDG); // Change QPDG of the Current Hadron #ifdef cdebug - G4cout<<"G4QE::CGS:SubstituteH#"<<hd<<"->"<<chQPDG<<ch4M<<G4endl; + G4cout<<"G4QE::CGS:SubstituteH#"<<hd<<"->"<<chQPDG<<ch4M<<G4endl; #endif - rqH->Set4Momentum(quas4M); // Fill 4M of the GS Residual Quasmon - rqH->SetQPDG(gamQPDG); // Change QPDG of the ResidualQuasmon - theQHadrons.push_back(rqH); // Fill Gamma 1 as QHadron (del. eq.) + rqH->Set4Momentum(quas4M); // Fill 4M of the GS Residual Quasmon + rqH->SetQPDG(gamQPDG); // Change QPDG of the ResidualQuasmon + theQHadrons.push_back(rqH); // Fill Gamma 1 as QHadron (del. eq.) #ifdef pdebug - G4cout<<"G4QE::CGS:Fill (SubRQ) Gamma 1,(22)4M="<<quas4M<<G4endl; + G4cout<<"G4QE::CGS:Fill (SubRQ) Gamma 1,(22)4M="<<quas4M<<G4endl; #endif - G4QHadron* gamH = new G4QHadron(gamQPDG, gam4M); - theQHadrons.push_back(gamH);// Fill Gamma 2 as QHadron (del. eq.) + G4QHadron* gamH = new G4QHadron(gamQPDG, gam4M); + theQHadrons.push_back(gamH);// Fill Gamma 2 as QHadron (del. eq.) #ifdef pdebug - G4cout<<"G4QE::CGS:Fill newMadeGamma 2, (22) 4M="<<gam4M<<G4endl; + G4cout<<"G4QE::CGS:Fill newMadeGamma 2, (22) 4M="<<gam4M<<G4endl; #endif - if(envPDG!=90000000) theEnvironment= - G4QNucleus(G4QContent(0,0,0,0,0,0),G4LorentzVector(0.,0.,0.,0.)); - return true; + if(envPDG!=90000000) theEnvironment= + G4QNucleus(G4QContent(0,0,0,0,0,0),G4LorentzVector(0.,0.,0.,0.)); + return true; } - } // End of "the Normal decay without 2 gammas" - else // Normal decay (without "Pi0"->2 gammas) - { - if(!G4QHadron(tt4M).DecayIn2(ch4M,quas4M)) - { - delete rqH; // Delete tmp "Residual Quasmon Hadron" + } // End of "the Normal decay without 2 gammas" + else // Normal decay (without "Pi0"->2 gammas) + { + if(!G4QHadron(tt4M).DecayIn2(ch4M,quas4M)) + { + delete rqH; // Delete tmp "Residual Quasmon Hadron" #ifdef cdebug - G4cout<<"**G4QE::CGS:DecayIn2 CurH+ResQ d="<<ttM-chM-nnM<<G4endl; + G4cout<<"**G4QE::CGS:DecayIn2 CurH+ResQ d="<<ttM-chM-nnM<<G4endl; #endif - } - else - { - if(chCH+reTCH-chQC.GetCharge()-nnQC.GetCharge()) + } + else + { + if(chCH+reTCH-chQC.GetCharge()-nnQC.GetCharge()) G4cout<<"**G4QE::CGS:ChEx CH+RQ i="<<reTCH<<"+h="<<chCH<<", f=" - <<nnQC.GetCharge()<<"+o="<<chQC.GetCharge()<<G4endl; - curHadr->Set4Momentum(ch4M);// Change 4M of the Current Hadron - curHadr->SetQPDG(chQPDG); // Change QPDG of the Current Hadron - rqH->Set4Momentum(quas4M); // Fill 4M of the GS Residual Quasmon + <<nnQC.GetCharge()<<"+o="<<chQC.GetCharge()<<G4endl; + curHadr->Set4Momentum(ch4M);// Change 4M of the Current Hadron + curHadr->SetQPDG(chQPDG); // Change QPDG of the Current Hadron + rqH->Set4Momentum(quas4M); // Fill 4M of the GS Residual Quasmon #ifdef cdebug - G4cout<<"G4QE::CGS:#"<<hd<<",h="<<ch4M<<"+rq="<<quas4M<<G4endl; + G4cout<<"G4QE::CGS:#"<<hd<<",h="<<ch4M<<"+rq="<<quas4M<<G4endl; #endif #ifdef pdebug - G4cout<<"G4QE::CGS:FilFr "<<nnQPDG<<quas4M<<" inAnyForm"<<G4endl; + G4cout<<"G4QE::CGS:FilFr "<<nnQPDG<<quas4M<<" inAnyForm"<<G4endl; #endif - EvaporateResidual(rqH); // Try to evaporate residual (del.eq.) - if(envPDG!=90000000) theEnvironment= - G4QNucleus(G4QContent(0,0,0,0,0,0),G4LorentzVector(0.,0.,0.,0.)); - return true; + EvaporateResidual(rqH); // Try to evaporate residual (del.eq.) + if(envPDG!=90000000) theEnvironment= + G4QNucleus(G4QContent(0,0,0,0,0,0),G4LorentzVector(0.,0.,0.,0.)); + return true; } - } // End of "the Normal decay without 2 gammas" - } - else + } // End of "the Normal decay without 2 gammas" + } + else { #ifdef cdebug - G4cout<<"**G4QE::CGS:rM+hB="<<nnM+chM<<">"<<ttM<<",B="<<chBN<<G4endl; -#endif - if(chBN>1) - { - G4QContent tcQC=chQC+nnQC; //QuarkCont for theTotalCompound nucleus - G4QPDGCode tcQPDG(tcQC); // QPDG for the Total Compound - G4double tcM=tcQPDG.GetMass(); // GS Mass of the TotalCompound - G4QHadron* tcH = new G4QHadron(tcQPDG,tt4M);// Hadron=TotalCompound - G4int tcS=tcQC.GetStrangeness(); // Total Strangeness - G4int tcC=tcQC.GetCharge(); // Total Charge - G4int tcBN=tcQC.GetBaryonNumber(); // Total Baryon Number - if ( tcBN == 2 || (!tcS && !tcC) || tcS == tcBN || tcC == tcBN ) //dec DiBar or MulBar - { - if(tcBN==2) theEnvironment.DecayDibaryon(tcH,&theQHadrons); // DB - else theEnvironment.DecayMultyBaryon(tcH,&theQHadrons); // MB - G4QHadron* theLast = theQHadrons[theQHadrons.size()-1]; - curHadr->Set4Momentum(theLast->Get4Momentum());//4-Mom of CurHadr - G4QPDGCode lQP=theLast->GetQPDG(); - if(lQP.GetPDGCode()!=10) curHadr->SetQPDG(lQP); - else curHadr->SetQC(theLast->GetQC()); - theQHadrons.pop_back(); // theLastQHadron is excluded from OUTPUT - delete theLast;//*!!When kill, delete theLastQHadr asAnInstance!* - } - else if(tcM<ttM)// @@ Can't evaporate here, can only radiate gamma + G4cout<<"**G4QE::CGS:rM+hB="<<nnM+chM<<">"<<ttM<<",B="<<chBN<<G4endl; +#endif + if(chBN>1) + { + G4QContent tcQC=chQC+nnQC; //QuarkCont for theTotalCompound nucleus + G4QPDGCode tcQPDG(tcQC); // QPDG for the Total Compound + G4double tcM=tcQPDG.GetMass(); // GS Mass of the TotalCompound + G4QHadron* tcH = new G4QHadron(tcQPDG,tt4M);// Hadron=TotalCompound + G4int tcS=tcQC.GetStrangeness(); // Total Strangeness + G4int tcC=tcQC.GetCharge(); // Total Charge + G4int tcBN=tcQC.GetBaryonNumber(); // Total Baryon Number + if ( tcBN == 2 || (!tcS && !tcC) || tcS == tcBN || tcC == tcBN ) //dec DiBar or MulBar + { + if(tcBN==2) theEnvironment.DecayDibaryon(tcH,&theQHadrons); // DB + else theEnvironment.DecayMultyBaryon(tcH,&theQHadrons); // MB + G4QHadron* theLast = theQHadrons[theQHadrons.size()-1]; + curHadr->Set4Momentum(theLast->Get4Momentum());//4-Mom of CurHadr + G4QPDGCode lQP=theLast->GetQPDG(); + if(lQP.GetPDGCode()!=10) curHadr->SetQPDG(lQP); + else curHadr->SetQC(theLast->GetQC()); + theQHadrons.pop_back(); // theLastQHadron is excluded from OUTPUT + delete theLast;//*!!When kill, delete theLastQHadr asAnInstance!* + } + else if(tcM<ttM)// @@ Can't evaporate here, can only radiate gamma { - G4LorentzVector tc4M=G4LorentzVector(0.,0.,0.,tcM);//4M of TotCom - G4LorentzVector gc4M=G4LorentzVector(0.,0.,0.,0.); //4M of gamma - if(!G4QHadron(tt4M).DecayIn2(tc4M,gc4M)) - { - delete tcH; // Delete tmp TotalCompoundHadron - curHadr->Set4Momentum(tt4M);// Change 4M of the Current Hadron - curHadr->SetQPDG(tcQPDG); // Change QPDG of theCurrentHadron + G4LorentzVector tc4M=G4LorentzVector(0.,0.,0.,tcM);//4M of TotCom + G4LorentzVector gc4M=G4LorentzVector(0.,0.,0.,0.); //4M of gamma + if(!G4QHadron(tt4M).DecayIn2(tc4M,gc4M)) + { + delete tcH; // Delete tmp TotalCompoundHadron + curHadr->Set4Momentum(tt4M);// Change 4M of the Current Hadron + curHadr->SetQPDG(tcQPDG); // Change QPDG of theCurrentHadron #ifdef cdebug - G4cout<<"**G4QE::CGS:DecayIn2 TotComp+gam d="<<ttM-tcM<<G4endl; -#endif - } - else - { - curHadr->Set4Momentum(gc4M);//Change 4Mom of the Current Hadron - curHadr->SetQPDG(gamQPDG);//Change PDG of theCurHadron to gamma - tcH->Set4Momentum(tc4M); // Fill 4-Mom of the GS Total Compound + G4cout<<"**G4QE::CGS:DecayIn2 TotComp+gam d="<<ttM-tcM<<G4endl; +#endif + } + else + { + curHadr->Set4Momentum(gc4M);//Change 4Mom of the Current Hadron + curHadr->SetQPDG(gamQPDG);//Change PDG of theCurHadron to gamma + tcH->Set4Momentum(tc4M); // Fill 4-Mom of the GS Total Compound #ifdef cdebug - G4cout<<"G4QE::CGS:#"<<hd<<",ch="<<ch4M<<"+t4M="<<tc4M<<G4endl; + G4cout<<"G4QE::CGS:#"<<hd<<",ch="<<ch4M<<"+t4M="<<tc4M<<G4endl; #endif #ifdef pdebug - G4cout<<"G4QE::CGS:FilTC "<<tcQPDG<<tc4M<<" inAnyForm"<<G4endl; + G4cout<<"G4QE::CGS:FilTC "<<tcQPDG<<tc4M<<" inAnyForm"<<G4endl; #endif - EvaporateResidual(tcH); // Try to evaporate(d.e.) + EvaporateResidual(tcH); // Try to evaporate(d.e.) } - } + } else // @@ Fill the TotalCompound instead of the CurrentHadron @@ { #ifdef cdebug - G4cout<<"G4QE::CGS:**CEF,M="<<tcM<<">"<<ttM<<",B="<<chBN<<G4endl; -#endif - delete tcH; // Delete tmp "TotalCompound" - curHadr->Set4Momentum(tt4M); // Change 4Mom of the Current Hadron - curHadr->SetQPDG(tcQPDG); // Change QPDG of the Current Hadron - } - return true; - } // Check that the residual is a nucleus, not just a nucleon - } // Check if pion can still be radiated or must be absorbed - } // Check that the iso-exchange could help - } // End of the IF: KINEMATIC CHECK FOR THE CURRENT HADRON(Isonuclear Case) - else if(norN) + G4cout<<"G4QE::CGS:**CEF,M="<<tcM<<">"<<ttM<<",B="<<chBN<<G4endl; +#endif + delete tcH; // Delete tmp "TotalCompound" + curHadr->Set4Momentum(tt4M); // Change 4Mom of the Current Hadron + curHadr->SetQPDG(tcQPDG); // Change QPDG of the Current Hadron + } + return true; + } // Check that the residual is a nucleus, not just a nucleon + } // Check if pion can still be radiated or must be absorbed + } // Check that the iso-exchange could help + } // End of the IF: KINEMATIC CHECK FOR THE CURRENT HADRON(Isonuclear Case) + else if(norN) { - if(resSMa+chM<ttM) // PANIC can be resolved with this CurHadron + if(resSMa+chM<ttM) // PANIC can be resolved with this CurHadron { - G4LorentzVector quas4M = G4LorentzVector(0.,0.,0.,resSMa);// GSMass ofQ - G4QHadron* rqH = new G4QHadron(reTQC,quas4M);// Prototype OutputResidQ - if(!G4QHadron(tt4M).DecayIn2(ch4M,quas4M)) - { - delete rqH; // Delete tmp "Residual Quasmon Hadron" + G4LorentzVector quas4M = G4LorentzVector(0.,0.,0.,resSMa);// GSMass ofQ + G4QHadron* rqH = new G4QHadron(reTQC,quas4M);// Prototype OutputResidQ + if(!G4QHadron(tt4M).DecayIn2(ch4M,quas4M)) + { + delete rqH; // Delete tmp "Residual Quasmon Hadron" #ifdef cdebug - G4cout<<"***G4QE::CheckGS:Decay in CurH+ResQ dM="<<ttM-chM<<G4endl; + G4cout<<"***G4QE::CheckGS:Decay in CurH+ResQ dM="<<ttM-chM<<G4endl; #endif - } - else - { - curHadr->Set4Momentum(ch4M); // Change 4M of the Current Hadron - rqH->Set4Momentum(quas4M); // Fill 4M of the GS Residual Quasmon + } + else + { + curHadr->Set4Momentum(ch4M); // Change 4M of the Current Hadron + rqH->Set4Momentum(quas4M); // Fill 4M of the GS Residual Quasmon #ifdef cdebug - G4cout<<"G4QEnv::CheckGS:#"<<hd<<",ch4M="<<curHadr->GetPDGCode() - <<ch4M<<" + ResQ4M="<<totPDG<<quas4M<<G4endl; + G4cout<<"G4QEnv::CheckGS:#"<<hd<<",ch4M="<<curHadr->GetPDGCode() + <<ch4M<<" + ResQ4M="<<totPDG<<quas4M<<G4endl; #endif #ifdef pdebug - G4cout<<"G4QE::CGS:Fill GSRes "<<reTQC<<quas4M<<" inAnyForm"<<G4endl; + G4cout<<"G4QE::CGS:Fill GSRes "<<reTQC<<quas4M<<" inAnyForm"<<G4endl; #endif - EvaporateResidual(rqH); // Try to evaporate(d.e.) - if(envPDG!=90000000)theEnvironment=G4QNucleus(G4QContent(0,0,0,0,0,0) - ,G4LorentzVector(0.,0.,0.,0.)); - return true; + EvaporateResidual(rqH); // Try to evaporate(d.e.) + if(envPDG!=90000000)theEnvironment=G4QNucleus(G4QContent(0,0,0,0,0,0) + ,G4LorentzVector(0.,0.,0.,0.)); + return true; } - } // End of the KINEMATIC CHECK FOR THE CURRENT HADRON if (NormNuclCase) - } // End of IsoNucleus/NormalNucleus choice - } // End of the NumberOfFragments=0 (NOT DECAYED PARTICLE) if + } // End of the KINEMATIC CHECK FOR THE CURRENT HADRON if (NormNuclCase) + } // End of IsoNucleus/NormalNucleus choice + } // End of the NumberOfFragments=0 (NOT DECAYED PARTICLE) if } // End of the LOOP over hadrons and all attempts to resolve PANIC #ifdef cdebug - G4cout<<"G4QEnv::CheckGS:***Any hadron from the OUTPUT did not help"<<G4endl; -#endif - force=true; - } // End of while for chx2g - if(resB>1) - { - G4int hind=-1; - if(npiz>-1) hind=npiz; - else + G4cout<<"G4QEnv::CheckGS:***Any hadron from the OUTPUT did not help"<<G4endl; +#endif + force=true; + } // End of while for chx2g + if(resB>1) + { + G4int hind=-1; + if(npiz>-1) hind=npiz; + else { - if(resC+resC>resB && npim>-1) hind=npim; - else hind=npip; - } - if(hind>-1) + if(resC+resC>resB && npim>-1) hind=npim; + else hind=npip; + } + if(hind>-1) { - G4QHadron* curHadr = theQHadrons[hind]; - G4int chNF=curHadr->GetNFragments(); - if(!chNF) - { - G4LorentzVector ch4M=curHadr->Get4Momentum(); // 4Mom of the Current Hadron - G4LorentzVector tt4M=ch4M+reTLV; // resSMa=GSMass of the ResidQuasmon(+Env) - G4double ttM=tt4M.m(); // TotalMass of CurHadr+Residual compaund - G4QContent ttQC=valQ+curHadr->GetQC(); // total Quark Content - G4int ttPDG=ttQC.GetZNSPDGCode(); - G4QPDGCode ttQPDG(ttPDG); - G4double ttGSM=ttQPDG.GetMass(); - if(ttM>ttGSM && ttQC.GetStrangeness()>0)//Hypernucleus can be L->N degraded - { - ttPDG-=ttQC.GetStrangeness()*999999; // S Neutrons instead of S Lambdas - ttQPDG=G4QPDGCode(ttPDG); // Update QPDGcode defining fragment - ttGSM=ttQPDG.GetMass(); // Update the degraded mass value -#ifdef pdebug - G4cout<<"G4QEnv::CheckGS:Hypernucleus degraded to QPDG="<<ttQPDG<<G4endl; -#endif - } - if(ttM>ttGSM) // Decay of Pi0 in 2 gammas with the residual nucleus - { + G4QHadron* curHadr = theQHadrons[hind]; + G4int chNF=curHadr->GetNFragments(); + if(!chNF) + { + G4LorentzVector ch4M=curHadr->Get4Momentum(); // 4Mom of the Current Hadron + G4LorentzVector tt4M=ch4M+reTLV; // resSMa=GSMass of the ResidQuasmon(+Env) + G4double ttM=tt4M.m(); // TotalMass of CurHadr+Residual compaund + G4QContent ttQC=valQ+curHadr->GetQC(); // total Quark Content + G4int ttPDG=ttQC.GetZNSPDGCode(); + G4QPDGCode ttQPDG(ttPDG); + G4double ttGSM=ttQPDG.GetMass(); + if(ttM>ttGSM && ttQC.GetStrangeness()>0)//Hypernucleus can be L->N degraded + { + ttPDG-=ttQC.GetStrangeness()*999999; // S Neutrons instead of S Lambdas + ttQPDG=G4QPDGCode(ttPDG); // Update QPDGcode defining fragment + ttGSM=ttQPDG.GetMass(); // Update the degraded mass value +#ifdef pdebug + G4cout<<"G4QEnv::CheckGS:Hypernucleus degraded to QPDG="<<ttQPDG<<G4endl; +#endif + } + if(ttM>ttGSM) // Decay of Pi0 in 2 gammas with the residual nucleus + { #ifdef cdebug - G4cout<<"G4QEnv::CheckGS: Decay in ResQ="<<ttQPDG<<" & 2 gammas"<<G4endl; + G4cout<<"G4QEnv::CheckGS: Decay in ResQ="<<ttQPDG<<" & 2 gammas"<<G4endl; #endif - G4LorentzVector quas4M = G4LorentzVector(0.,0.,0.,ttGSM); // GSMass of RQ - G4LorentzVector fgam4M = G4LorentzVector(0.,0.,0.,0.); // 4Mom of gamma 1 - G4LorentzVector sgam4M = G4LorentzVector(0.,0.,0.,0.); // 4Mom of gamma 2 - if(!G4QHadron(tt4M).DecayIn3(quas4M,fgam4M,sgam4M))G4cout<<"*3*"<<G4endl; - else + G4LorentzVector quas4M = G4LorentzVector(0.,0.,0.,ttGSM); // GSMass of RQ + G4LorentzVector fgam4M = G4LorentzVector(0.,0.,0.,0.); // 4Mom of gamma 1 + G4LorentzVector sgam4M = G4LorentzVector(0.,0.,0.,0.); // 4Mom of gamma 2 + if(!G4QHadron(tt4M).DecayIn3(quas4M,fgam4M,sgam4M))G4cout<<"*3*"<<G4endl; + else { - curHadr->Set4Momentum(fgam4M); // Change 4M of the Pion to Gamma - curHadr->SetQPDG(gamQPDG); // Change QPDG of the Pion to Gamma - G4QHadron* sgH = new G4QHadron(gamQPDG,sgam4M); // Gamma 2 - theQHadrons.push_back(sgH); // Fill Gamma 2 as QHadron (del. eq.) - G4QHadron* rqH = new G4QHadron(ttQPDG,quas4M); // GSResidualQuasmon - theQHadrons.push_back(rqH); // Fill GSResidQuasmon as QHadron (del.eq.) - return true; - } - } - else G4cout<<"**G4QEnv::CheckGS:M="<<ttM<<" < GSM="<<ttGSM<<ttQPDG<<G4endl; - } - } - } - return false; - } // End of the KINEMATIC LIMIT FOR THE L&P CORRECTION if/else (try any hadron) + curHadr->Set4Momentum(fgam4M); // Change 4M of the Pion to Gamma + curHadr->SetQPDG(gamQPDG); // Change QPDG of the Pion to Gamma + G4QHadron* sgH = new G4QHadron(gamQPDG,sgam4M); // Gamma 2 + theQHadrons.push_back(sgH); // Fill Gamma 2 as QHadron (del. eq.) + G4QHadron* rqH = new G4QHadron(ttQPDG,quas4M); // GSResidualQuasmon + theQHadrons.push_back(rqH); // Fill GSResidQuasmon as QHadron (del.eq.) + return true; + } + } + else G4cout<<"**G4QEnv::CheckGS:M="<<ttM<<" < GSM="<<ttGSM<<ttQPDG<<G4endl; + } + } + } + return false; + } // End of the KINEMATIC LIMIT FOR THE L&P CORRECTION if/else (try any hadron) } // End of the POSSIBILITY OF PREV+LAST (OR MORE) CORRECTION if - else return false; - } // End of the CORRECTION WITH THE LAST if/else - } // End of the CORRECTION IS POSSIBLE if - else return false; // Correction can not be done - return true; // If correction was done successfully + else return false; + } // End of the CORRECTION WITH THE LAST if/else + } // End of the CORRECTION IS POSSIBLE if + else return false; // Correction can not be done + return true; // If correction was done successfully } // End of "CheckGroundState" // Try to decay the Total Residual Nucleus in Environ+Quasmon void G4QEnvironment::CopyAndDeleteHadronVector(G4QHadronVector* HV) { // ============================================================== - G4int nHadrons = HV->size(); - if(nHadrons) - { - for(G4int ih=0; ih<nHadrons; ih++) // LOOP over output QHadrons - { - //G4QHadron* inH = HV->operator[](ih); // Pointer to the i-th QHadron - G4QHadron* inH = (*HV)[ih]; // Pointer to the i-th QHadron - G4int hNF = inH->GetNFragments(); // A#of secondary fragments - if(!hNF) // Fill only final hadrons - { + G4int nHadrons = HV->size(); + if(nHadrons) + { + for(G4int ih=0; ih<nHadrons; ih++) // LOOP over output QHadrons + { + //G4QHadron* inH = HV->operator[](ih); // Pointer to the i-th QHadron + G4QHadron* inH = (*HV)[ih]; // Pointer to the i-th QHadron + G4int hNF = inH->GetNFragments(); // A#of secondary fragments + if(!hNF) // Fill only final hadrons + { #ifdef pdebug G4cout<<"G4QEnv::Copy&DeleteHV:#"<<ih<<", hPDG="<<inH->GetPDGCode()<<G4endl; #endif - G4QHadron* curH = new G4QHadron(inH); // will be deleted with allQHadronVector - theQHadrons.push_back(curH); // Fill hadron-copy (delete equivalent) - } - } - for_each(HV->begin(), HV->end(), DeleteQHadron()); // Delete instances - HV->clear(); // Delete pointers - } + G4QHadron* curH = new G4QHadron(inH); // will be deleted with allQHadronVector + theQHadrons.push_back(curH); // Fill hadron-copy (delete equivalent) + } + } + for_each(HV->begin(), HV->end(), DeleteQHadron()); // Delete instances + HV->clear(); // Delete pointers + } #ifdef pdebug - else G4cout<<"***G4QEnv::Kopy&DelHV: No hadrons in the QHadronVector"<<G4endl; + else G4cout<<"***G4QEnv::Kopy&DelHV: No hadrons in the QHadronVector"<<G4endl; #endif - delete HV; // Delete the inputQHadronVector + delete HV; // Delete the inputQHadronVector } // End of "CopyAndDeleteHadronVector" // Try to decay the Total Residual Nucleus in Environ+Quasmon G4bool G4QEnvironment::DecayInEnvQ(G4Quasmon* quasm) { // ============================================= - G4QContent valQ=quasm->GetQC(); // Quark content of the Quasmon - G4int resQPDG=valQ.GetSPDGCode(); // Reachable in a member function - if(resQPDG==10&&valQ.GetBaryonNumber()>0) resQPDG=valQ.GetZNSPDGCode(); - G4double resQMa=G4QPDGCode(resQPDG).GetMass(); // GS Mass of the Residual Quasmon - G4LorentzVector enva4M=G4LorentzVector(0.,0.,0.,0.); - G4LorentzVector reTLV=quasm->Get4Momentum(); // Prototyoe of the 4-Mom of the ResidNuc - G4double resSMa=resQMa; // Prototype of MinSplitMass of ResidNucl - G4int envPDG=theEnvironment.GetPDG(); // PDG Code of the Environment - if(envPDG!=90000000) // => "Environment is not vacuum" case - { - G4double resEMa=theEnvironment.GetMZNS(); // GSMass of the Residual Environment - enva4M=G4LorentzVector(0.,0.,0.,resEMa); // 4-Mom of the Residual Environment - reTLV+=enva4M; // 4-Mom of Residual Nucleus - resSMa+=resEMa; // Minimal Split Mass of Residual Nucleus - G4double resTMa=reTLV.m(); // CM Mass of theResidNucleus (Quasm+Env) + G4QContent valQ=quasm->GetQC(); // Quark content of the Quasmon + G4int resQPDG=valQ.GetSPDGCode(); // Reachable in a member function + if(resQPDG==10&&valQ.GetBaryonNumber()>0) resQPDG=valQ.GetZNSPDGCode(); + G4double resQMa=G4QPDGCode(resQPDG).GetMass(); // GS Mass of the Residual Quasmon + G4LorentzVector enva4M=G4LorentzVector(0.,0.,0.,0.); + G4LorentzVector reTLV=quasm->Get4Momentum(); // Prototyoe of the 4-Mom of the ResidNuc + G4double resSMa=resQMa; // Prototype of MinSplitMass of ResidNucl + G4int envPDG=theEnvironment.GetPDG(); // PDG Code of the Environment + if(envPDG!=90000000) // => "Environment is not vacuum" case + { + G4double resEMa=theEnvironment.GetMZNS(); // GSMass of the Residual Environment + enva4M=G4LorentzVector(0.,0.,0.,resEMa); // 4-Mom of the Residual Environment + reTLV+=enva4M; // 4-Mom of Residual Nucleus + resSMa+=resEMa; // Minimal Split Mass of Residual Nucleus + G4double resTMa=reTLV.m(); // CM Mass of theResidNucleus (Quasm+Env) //#ifdef pdebug - G4cout<<"G4QEnv::DecayInEnvQ: totM="<<reTLV<<resTMa<<" > rQM+rEM="<<resSMa<<G4endl; + G4cout<<"G4QEnv::DecayInEnvQ: totM="<<reTLV<<resTMa<<" > rQM+rEM="<<resSMa<<G4endl; //#endif - if(resTMa>resSMa) - { - G4LorentzVector quas4M = G4LorentzVector(0.,0.,0.,resQMa); // GS Mass of Quasmon - G4QHadron* quasH = new G4QHadron(valQ, quas4M); - G4QHadron* envaH = new G4QHadron(envPDG, enva4M); - if(!G4QHadron(reTLV).DecayIn2(enva4M,quas4M)) - { - delete quasH; // Delete "Quasmon Hadron" - delete envaH; // Delete "Environment Hadron" - G4cout<<"---Warning---G4Q::DecInEnvQ:Decay in Environment+ResidualQuasmon"<<G4endl; - return false; - } - else - { - quasH->Set4Momentum(quas4M); - EvaporateResidual(quasH); // Try to evaporate quasmon (del. equiv.) - envaH->Set4Momentum(enva4M); - EvaporateResidual(envaH); // Try to evaporate residual (del. equiv.) + if(resTMa>resSMa) + { + G4LorentzVector quas4M = G4LorentzVector(0.,0.,0.,resQMa); // GS Mass of Quasmon + G4QHadron* quasH = new G4QHadron(valQ, quas4M); + G4QHadron* envaH = new G4QHadron(envPDG, enva4M); + if(!G4QHadron(reTLV).DecayIn2(enva4M,quas4M)) + { + delete quasH; // Delete "Quasmon Hadron" + delete envaH; // Delete "Environment Hadron" + G4cout<<"---Warning---G4Q::DecInEnvQ:Decay in Environment+ResidualQuasmon"<<G4endl; + return false; + } + else + { + quasH->Set4Momentum(quas4M); + EvaporateResidual(quasH); // Try to evaporate quasmon (del. equiv.) + envaH->Set4Momentum(enva4M); + EvaporateResidual(envaH); // Try to evaporate residual (del. equiv.) } - } - else return false; - } - else return false; // => "Environment is vacuum" case - return true; + } + else return false; + } + else return false; // => "Environment is vacuum" case + return true; } // End of "DecayInEnvQ" // Add a Quasmon to the Environment void G4QEnvironment::AddQuasmon(G4Quasmon* Q) { // ======================================== - theQuasmons.push_back(Q); - totCharge+=Q->GetCharge(); - totBaryoN+=Q->GetBaryonNumber(); - tot4Mom +=Q->Get4Momentum(); + theQuasmons.push_back(Q); + totCharge+=Q->GetCharge(); + totBaryoN+=Q->GetBaryonNumber(); + tot4Mom +=Q->Get4Momentum(); #ifdef debug G4cout<<"G4QEnv::AddQuasmon:t4M="<<tot4Mom<<",tC="<<totCharge<<",tB="<<totBaryoN<<G4endl; #endif @@ -8559,35 +8605,35 @@ void G4QEnvironment::AddQuasmon(G4Quasmon* Q) //General function makes Random Unit 3D-Vector G4ThreeVector RndmDir() {// -------- ========= - G4double x = G4UniformRand(), y = G4UniformRand(), z = G4UniformRand(); - G4double r2= x*x+y*y+z*z; - while(r2>1.||r2<.000001) - { - x = G4UniformRand(); y = G4UniformRand(); z = G4UniformRand(); - r2=x*x+y*y+z*z; - } - G4double r=sqrt(r2), quad=G4UniformRand(); - if(quad>0.5) - { - if(quad>0.75) - { - if(quad>0.875) return G4ThreeVector(-x/r,-y/r,-z/r); - else return G4ThreeVector(-x/r,-y/r, z/r); + G4double x = G4UniformRand(), y = G4UniformRand(), z = G4UniformRand(); + G4double r2= x*x+y*y+z*z; + while(r2>1.||r2<.000001) + { + x = G4UniformRand(); y = G4UniformRand(); z = G4UniformRand(); + r2=x*x+y*y+z*z; + } + G4double r=sqrt(r2), quad=G4UniformRand(); + if(quad>0.5) + { + if(quad>0.75) + { + if(quad>0.875) return G4ThreeVector(-x/r,-y/r,-z/r); + else return G4ThreeVector(-x/r,-y/r, z/r); } - else - { - if(quad>0.625) return G4ThreeVector(-x/r, y/r,-z/r); - else return G4ThreeVector(-x/r, y/r, z/r); + else + { + if(quad>0.625) return G4ThreeVector(-x/r, y/r,-z/r); + else return G4ThreeVector(-x/r, y/r, z/r); } - } - else - { - if(quad>0.25) - { - if(quad>0.375) return G4ThreeVector( x/r,-y/r,-z/r); - else return G4ThreeVector( x/r,-y/r, z/r); + } + else + { + if(quad>0.25) + { + if(quad>0.375) return G4ThreeVector( x/r,-y/r,-z/r); + else return G4ThreeVector( x/r,-y/r, z/r); } - else if(quad>0.125) return G4ThreeVector( x/r, y/r,-z/r); - } - return G4ThreeVector( x/r, y/r, z/r); + else if(quad>0.125) return G4ThreeVector( x/r, y/r,-z/r); + } + return G4ThreeVector( x/r, y/r, z/r); } // End of RndmDir diff --git a/source/processes/hadronic/models/chiral_inv_phase_space/interface/History b/source/processes/hadronic/models/chiral_inv_phase_space/interface/History index aa13d83eaf..c584a0decf 100644 --- a/source/processes/hadronic/models/chiral_inv_phase_space/interface/History +++ b/source/processes/hadronic/models/chiral_inv_phase_space/interface/History @@ -12,6 +12,13 @@ code and to keep track of all tags. * Please list in reverse chronological order (last date on top) --------------------------------------------------------------- +13-Sep-2010 A.Dotti (hadr-chips-inter-V09-01-12) +----------------------------------------------------------------------- +- Fix in G4ChiralInvariantPhaseSpace to catch previously un-handled exceptions + produced when a 'chipolino' pseudo-particle is produced by the model and + thrown by Q4QEnvironment::Fragment; handles the case in which Q4QEnvironment + returns a 90000000 fragment, and converts it to a gamma. + Addressing problem report #1138. 06-Oct-2009 G.Cosmo (hadr-chips-inter-V09-01-11) ------------------------------------------------ diff --git a/source/processes/hadronic/models/chiral_inv_phase_space/interface/include/G4ElectroNuclearReaction.hh b/source/processes/hadronic/models/chiral_inv_phase_space/interface/include/G4ElectroNuclearReaction.hh index 34448fb0b0..433f4d32c0 100644 --- a/source/processes/hadronic/models/chiral_inv_phase_space/interface/include/G4ElectroNuclearReaction.hh +++ b/source/processes/hadronic/models/chiral_inv_phase_space/interface/include/G4ElectroNuclearReaction.hh @@ -26,7 +26,7 @@ // // // $Id: G4ElectroNuclearReaction.hh,v 1.25.2.1 2009/03/03 13:32:37 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-02-patch-03 $ +// GEANT4 tag $Name: geant4-09-02-patch-04 $ // // // GEANT4 physics class: G4ElectroNuclearReaction -- header file diff --git a/source/processes/hadronic/models/chiral_inv_phase_space/interface/src/G4ChiralInvariantPhaseSpace.cc b/source/processes/hadronic/models/chiral_inv_phase_space/interface/src/G4ChiralInvariantPhaseSpace.cc index a31e72404f..d792d19a2d 100644 --- a/source/processes/hadronic/models/chiral_inv_phase_space/interface/src/G4ChiralInvariantPhaseSpace.cc +++ b/source/processes/hadronic/models/chiral_inv_phase_space/interface/src/G4ChiralInvariantPhaseSpace.cc @@ -24,7 +24,12 @@ // ******************************************************************** // -// +// Modified: +// 24.08.10 A. Dotti (andrea.dotti@cern.ch) handle exceptions +// thrown by Q4QEnvironment::Fragment retying interaction +// 17.06.10 A. Dotti (andrea.dotti@cern.ch) handle case in which +// Q4QEnvironment returns a 90000000 fragment (see code comments) + // Created: // 16.01.08 V.Ivanchenko use initialization similar to other CHIPS models // @@ -35,6 +40,7 @@ #include "G4DynamicParticle.hh" #include "G4IonTable.hh" #include "G4Neutron.hh" +#include "G4Gamma.hh" G4ChiralInvariantPhaseSpace::G4ChiralInvariantPhaseSpace() {} @@ -103,28 +109,48 @@ G4HadFinalState * G4ChiralInvariantPhaseSpace::ApplyYourself( G4QHadronVector projHV; G4QHadron* iH = new G4QHadron(projectilePDGCode, 1./MeV*proj4Mom); projHV.push_back(iH); - G4QEnvironment* pan= new G4QEnvironment(projHV, targetPDGCode); - //G4Quasmon* pan= new G4Quasmon(projectilePDGCode, targetPDGCode, 1./MeV*proj4Mom, 1./MeV*targ4Mom, nop); + + //AND + //A. Dotti 24 Aug. : Trying to handle situation when G4QEnvironment::Fragment throws an exception + // Seen by ATLAS for gamma+Nuclear interaction for Gamma@2.4GeV on Al + // The poor-man solution here is to re-try interaction if a G4QException is catched + // Warning: G4QExcpetion does NOT inherit from base class G4HadException G4QHadronVector* output=0; - try - { - output = pan->Fragment(); - } - catch(G4HadronicException & aR) - { - G4cerr << "Exception thrown passing through G4ChiralInvariantPhaseSpace "<<G4endl; - G4cerr << " targetPDGCode = "<< targetPDGCode <<G4endl; - G4cerr << " Dumping the information in the pojectile list"<<G4endl; - for(size_t i=0; i< projHV.size(); i++) + + bool retry=true; + int retryes=0; + int maxretries=10; + + while ( retry && retryes < maxretries ) { - G4cerr <<" Incoming 4-momentum and PDG code of "<<i<<"'th hadron: " - <<" "<< projHV[i]->Get4Momentum()<<" "<<projHV[i]->GetPDGCode()<<G4endl; + G4QEnvironment* pan= new G4QEnvironment(projHV, targetPDGCode); + + try + { + ++retryes; + output = pan->Fragment(); + retry=false;//If here, Fragment did not throw! (AND) + } + catch( ... ) + { + G4cerr << "***WARNING*** Exception thrown passing through G4ChiralInvariantPhaseSpace "<<G4endl; + G4cerr << " targetPDGCode = "<< targetPDGCode <<G4endl; + G4cerr << " Dumping the information in the pojectile list"<<G4endl; + for(size_t i=0; i< projHV.size(); i++) + { + G4cerr <<" Incoming 4-momentum and PDG code of "<<i<<"'th hadron: " + <<" "<< projHV[i]->Get4Momentum()<<" "<<projHV[i]->GetPDGCode()<<G4endl; + } + G4cerr << "Retrying interaction "<<G4endl; //AND + //throw; //AND + } + delete pan; + } //AND + if ( retryes >= maxretries ) //AND + { + G4cerr << "***ERROR*** Maximum number of retries ("<<maxretries<<") reached for G4QEnvironment::Fragment(), exception is being thrown" << G4endl; + throw G4HadronicException(__FILE__,__LINE__,"G4ChiralInvariantPhaseSpace::ApplyYourself(...) - Maximum number of re-tries reached, abandon interaction"); } - throw; - } - std::for_each(projHV.begin(), projHV.end(), DeleteQHadron()); - projHV.clear(); - delete pan; // Fill the particle change. G4DynamicParticle * theSec; @@ -132,6 +158,8 @@ G4HadFinalState * G4ChiralInvariantPhaseSpace::ApplyYourself( G4cout << "G4ChiralInvariantPhaseSpace: NEW EVENT #ofHadrons=" <<output->size()<<G4endl; #endif + + unsigned int particle; for( particle = 0; particle < output->size(); particle++) { @@ -159,17 +187,62 @@ G4HadFinalState * G4ChiralInvariantPhaseSpace::ApplyYourself( theDefinition = G4ParticleTable::GetParticleTable()->FindIon(aZ,anN+aZ,0,aZ); if(aZ == 0 && anN == 1) theDefinition = G4Neutron::Neutron(); } + //AND + else if ( pdgCode == 90000000 && output->operator[](particle)->Get4Momentum().m()<1*MeV ) + { + //A. Dotti: + //We cure the case the model returns a (A,Z)=0,0 G4QHadron with a very small mass + //We convert this to a gamma. According to the author of the model this is the + //correct thing to do and it is done also in other parts of the CHIPS package + theDefinition = G4Gamma::Gamma(); + } + //AND else { theDefinition = G4ParticleTable::GetParticleTable() ->FindParticle(output->operator[](particle)->GetPDGCode()); } + + //AND + //A. Dotti: Handle problematic cases in which one of the products has not been recognized + // This should never happen but we want to add an extra-protection + if ( theDefinition == NULL ) + { + //If we arrived here something bad really happened. We do not know how to handle the products of the interaction, we give up, resetting the + //result and keeping the primary alive. + G4cerr<<"**WARNING*** G4ChiralInvariantPhaseSpace::ApplyYourself(...) : G4QEnvironment::Fragment() returns an invalid fragment\n with fourMom(MeV)="; + G4cerr<<output->operator[](particle)->Get4Momentum()<<" and mass(MeV)="<<output->operator[](particle)->Get4Momentum().m(); + G4cerr<<". Offending PDG is:"<<pdgCode<<" abandon interaction. \n Taget PDG was:"<<targetPDGCode<<" \n Dumping the information in the projectile list:\n"; + for(size_t i=0; i< projHV.size(); i++) + { + G4cerr <<" Incoming 4-momentum and PDG code of "<<i<<"'th hadron: " + <<" "<< projHV[i]->Get4Momentum()<<" "<<projHV[i]->GetPDGCode()<<"\n"; + } + G4cerr<<"\n Please report as bug \n***END OF MESSAGE***"<<G4endl; + + for ( unsigned int cparticle=0 ; cparticle<output->size();++cparticle) + delete output->operator[](cparticle); + delete output; + std::for_each(projHV.begin(), projHV.end(), DeleteQHadron()); + projHV.clear(); + + aResult->Clear(); + aResult->SetStatusChange(isAlive); + aResult->SetEnergyChange(aTrack.GetKineticEnergy()); + aResult->SetMomentumChange(aTrack.Get4Momentum().vect().unit()); + return aResult; + } + //AND + + theSec->SetDefinition(theDefinition); theSec->SetMomentum(output->operator[](particle)->Get4Momentum().vect()); aResult->AddSecondary(theSec); delete output->operator[](particle); } delete output; + std::for_each(projHV.begin(), projHV.end(), DeleteQHadron()); + projHV.clear(); return aResult; } diff --git a/source/processes/hadronic/models/chiral_inv_phase_space/interface/src/G4QCaptureAtRest.cc b/source/processes/hadronic/models/chiral_inv_phase_space/interface/src/G4QCaptureAtRest.cc index 49fca29f73..1f4fe7ffae 100644 --- a/source/processes/hadronic/models/chiral_inv_phase_space/interface/src/G4QCaptureAtRest.cc +++ b/source/processes/hadronic/models/chiral_inv_phase_space/interface/src/G4QCaptureAtRest.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: G4QCaptureAtRest.cc,v 1.18.2.1 2009/03/03 13:32:37 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-02-patch-03 $ +// GEANT4 tag $Name: geant4-09-02-patch-04 $ // // ---------------- G4QCaptureAtRest class ----------------- // by Mikhail Kossov, December 2003. diff --git a/source/processes/hadronic/models/chiral_inv_phase_space/interface/src/G4QElasticCrossSection.cc b/source/processes/hadronic/models/chiral_inv_phase_space/interface/src/G4QElasticCrossSection.cc index 016ca81f8e..8c5025538f 100644 --- a/source/processes/hadronic/models/chiral_inv_phase_space/interface/src/G4QElasticCrossSection.cc +++ b/source/processes/hadronic/models/chiral_inv_phase_space/interface/src/G4QElasticCrossSection.cc @@ -25,7 +25,7 @@ // // // $Id: G4QElasticCrossSection.cc,v 1.36.2.1 2010/01/26 15:26:52 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-02-patch-03 $ +// GEANT4 tag $Name: geant4-09-02-patch-04 $ // // // G4 Physics class: G4QElasticCrossSection for N+A elastic cross sections diff --git a/source/processes/hadronic/models/coherent_elastic/include/G4HadronElastic.hh b/source/processes/hadronic/models/coherent_elastic/include/G4HadronElastic.hh index f2fd56105a..dc9f6ec595 100644 --- a/source/processes/hadronic/models/coherent_elastic/include/G4HadronElastic.hh +++ b/source/processes/hadronic/models/coherent_elastic/include/G4HadronElastic.hh @@ -25,7 +25,7 @@ // // // $Id: G4HadronElastic.hh,v 1.27.2.1 2010/01/26 15:03:49 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-02-patch-03 $ +// GEANT4 tag $Name: geant4-09-02-patch-04 $ // // // G4 Model: Low energy elastic scattering with 4-momentum balance diff --git a/source/processes/hadronic/models/coherent_elastic/src/G4HadronElastic.cc b/source/processes/hadronic/models/coherent_elastic/src/G4HadronElastic.cc index 7be27542db..fb091ddf17 100644 --- a/source/processes/hadronic/models/coherent_elastic/src/G4HadronElastic.cc +++ b/source/processes/hadronic/models/coherent_elastic/src/G4HadronElastic.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: G4HadronElastic.cc,v 1.61.2.1 2010/01/26 15:03:49 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-02-patch-03 $ +// GEANT4 tag $Name: geant4-09-02-patch-04 $ // // // Physics model class G4HadronElastic (derived from G4LElastic) diff --git a/source/processes/hadronic/models/de_excitation/fission/src/G4FissionProbability.cc b/source/processes/hadronic/models/de_excitation/fission/src/G4FissionProbability.cc index d64a61982f..80f3672603 100644 --- a/source/processes/hadronic/models/de_excitation/fission/src/G4FissionProbability.cc +++ b/source/processes/hadronic/models/de_excitation/fission/src/G4FissionProbability.cc @@ -25,7 +25,7 @@ // // // $Id: G4FissionProbability.cc,v 1.8.4.1 2009/03/03 13:22:52 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-02-patch-03 $ +// GEANT4 tag $Name: geant4-09-02-patch-04 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara (Oct 1998) diff --git a/source/processes/hadronic/models/de_excitation/util/include/G4CameronGilbertPairingCorrections.hh b/source/processes/hadronic/models/de_excitation/util/include/G4CameronGilbertPairingCorrections.hh index 4768ea31d7..2f11147851 100644 --- a/source/processes/hadronic/models/de_excitation/util/include/G4CameronGilbertPairingCorrections.hh +++ b/source/processes/hadronic/models/de_excitation/util/include/G4CameronGilbertPairingCorrections.hh @@ -25,7 +25,7 @@ // // // $Id: G4CameronGilbertPairingCorrections.hh,v 1.4.2.1 2009/03/04 14:56:06 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-02-patch-03 $ +// GEANT4 tag $Name: geant4-09-02-patch-04 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara diff --git a/source/processes/hadronic/models/de_excitation/util/include/G4CameronGilbertShellCorrections.hh b/source/processes/hadronic/models/de_excitation/util/include/G4CameronGilbertShellCorrections.hh index 8a72126a55..cea307668a 100644 --- a/source/processes/hadronic/models/de_excitation/util/include/G4CameronGilbertShellCorrections.hh +++ b/source/processes/hadronic/models/de_excitation/util/include/G4CameronGilbertShellCorrections.hh @@ -25,7 +25,7 @@ // // // $Id: G4CameronGilbertShellCorrections.hh,v 1.4.2.1 2009/03/04 14:56:06 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-02-patch-03 $ +// GEANT4 tag $Name: geant4-09-02-patch-04 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara diff --git a/source/processes/hadronic/models/de_excitation/util/include/G4CameronShellPlusPairingCorrections.hh b/source/processes/hadronic/models/de_excitation/util/include/G4CameronShellPlusPairingCorrections.hh index 91d7251454..684aa455a8 100644 --- a/source/processes/hadronic/models/de_excitation/util/include/G4CameronShellPlusPairingCorrections.hh +++ b/source/processes/hadronic/models/de_excitation/util/include/G4CameronShellPlusPairingCorrections.hh @@ -25,7 +25,7 @@ // // // $Id: G4CameronShellPlusPairingCorrections.hh,v 1.4.2.1 2009/03/04 14:56:06 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-02-patch-03 $ +// GEANT4 tag $Name: geant4-09-02-patch-04 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara diff --git a/source/processes/hadronic/models/de_excitation/util/include/G4CameronTruranHilfPairingCorrections.hh b/source/processes/hadronic/models/de_excitation/util/include/G4CameronTruranHilfPairingCorrections.hh index cdd10a892f..b11681803d 100644 --- a/source/processes/hadronic/models/de_excitation/util/include/G4CameronTruranHilfPairingCorrections.hh +++ b/source/processes/hadronic/models/de_excitation/util/include/G4CameronTruranHilfPairingCorrections.hh @@ -25,7 +25,7 @@ // // // $Id: G4CameronTruranHilfPairingCorrections.hh,v 1.4.2.1 2009/03/04 14:56:06 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-02-patch-03 $ +// GEANT4 tag $Name: geant4-09-02-patch-04 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara diff --git a/source/processes/hadronic/models/de_excitation/util/include/G4CameronTruranHilfShellCorrections.hh b/source/processes/hadronic/models/de_excitation/util/include/G4CameronTruranHilfShellCorrections.hh index b445de8e7e..5143b8d9c3 100644 --- a/source/processes/hadronic/models/de_excitation/util/include/G4CameronTruranHilfShellCorrections.hh +++ b/source/processes/hadronic/models/de_excitation/util/include/G4CameronTruranHilfShellCorrections.hh @@ -25,7 +25,7 @@ // // // $Id: G4CameronTruranHilfShellCorrections.hh,v 1.4.2.1 2009/03/04 14:56:06 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-02-patch-03 $ +// GEANT4 tag $Name: geant4-09-02-patch-04 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara diff --git a/source/processes/hadronic/models/de_excitation/util/include/G4ConstantLevelDensityParameter.hh b/source/processes/hadronic/models/de_excitation/util/include/G4ConstantLevelDensityParameter.hh index 1d5e6498de..789c12eb1c 100644 --- a/source/processes/hadronic/models/de_excitation/util/include/G4ConstantLevelDensityParameter.hh +++ b/source/processes/hadronic/models/de_excitation/util/include/G4ConstantLevelDensityParameter.hh @@ -25,7 +25,7 @@ // // // $Id: G4ConstantLevelDensityParameter.hh,v 1.4.2.1 2009/03/04 14:56:06 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-02-patch-03 $ +// GEANT4 tag $Name: geant4-09-02-patch-04 $ // // Hadronic Process: Nuclear De-excitations (photon evaporation) // by C. Dallapiccola (Nov 1998) diff --git a/source/processes/hadronic/models/de_excitation/util/include/G4CookPairingCorrections.hh b/source/processes/hadronic/models/de_excitation/util/include/G4CookPairingCorrections.hh index ea164e841e..2657e4ec16 100644 --- a/source/processes/hadronic/models/de_excitation/util/include/G4CookPairingCorrections.hh +++ b/source/processes/hadronic/models/de_excitation/util/include/G4CookPairingCorrections.hh @@ -25,7 +25,7 @@ // // // $Id: G4CookPairingCorrections.hh,v 1.4.2.1 2009/03/04 14:56:06 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-02-patch-03 $ +// GEANT4 tag $Name: geant4-09-02-patch-04 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara diff --git a/source/processes/hadronic/models/de_excitation/util/include/G4CookShellCorrections.hh b/source/processes/hadronic/models/de_excitation/util/include/G4CookShellCorrections.hh index 8dec293071..1086270d0b 100644 --- a/source/processes/hadronic/models/de_excitation/util/include/G4CookShellCorrections.hh +++ b/source/processes/hadronic/models/de_excitation/util/include/G4CookShellCorrections.hh @@ -25,7 +25,7 @@ // // // $Id: G4CookShellCorrections.hh,v 1.4.2.1 2009/03/04 14:56:06 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-02-patch-03 $ +// GEANT4 tag $Name: geant4-09-02-patch-04 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara diff --git a/source/processes/hadronic/models/de_excitation/util/include/G4CoulombBarrier.hh b/source/processes/hadronic/models/de_excitation/util/include/G4CoulombBarrier.hh index ec2876ce67..3f8503c40b 100644 --- a/source/processes/hadronic/models/de_excitation/util/include/G4CoulombBarrier.hh +++ b/source/processes/hadronic/models/de_excitation/util/include/G4CoulombBarrier.hh @@ -25,7 +25,7 @@ // // // $Id: G4CoulombBarrier.hh,v 1.5.2.1 2009/03/04 14:56:06 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-02-patch-03 $ +// GEANT4 tag $Name: geant4-09-02-patch-04 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara (Dec 1999) diff --git a/source/processes/hadronic/models/de_excitation/util/include/G4DeuteronCoulombBarrier.hh b/source/processes/hadronic/models/de_excitation/util/include/G4DeuteronCoulombBarrier.hh index 7358db2512..ae35e61fba 100644 --- a/source/processes/hadronic/models/de_excitation/util/include/G4DeuteronCoulombBarrier.hh +++ b/source/processes/hadronic/models/de_excitation/util/include/G4DeuteronCoulombBarrier.hh @@ -25,7 +25,7 @@ // // // $Id: G4DeuteronCoulombBarrier.hh,v 1.4.2.1 2009/03/04 14:56:06 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-02-patch-03 $ +// GEANT4 tag $Name: geant4-09-02-patch-04 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara (Dec 1999) diff --git a/source/processes/hadronic/models/de_excitation/util/include/G4EvaporationLevelDensityParameter.hh b/source/processes/hadronic/models/de_excitation/util/include/G4EvaporationLevelDensityParameter.hh index ed57e1fccd..e53dd92c04 100644 --- a/source/processes/hadronic/models/de_excitation/util/include/G4EvaporationLevelDensityParameter.hh +++ b/source/processes/hadronic/models/de_excitation/util/include/G4EvaporationLevelDensityParameter.hh @@ -25,7 +25,7 @@ // // // $Id: G4EvaporationLevelDensityParameter.hh,v 1.4.2.1 2009/03/04 14:56:06 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-02-patch-03 $ +// GEANT4 tag $Name: geant4-09-02-patch-04 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara (Oct 1998) diff --git a/source/processes/hadronic/models/de_excitation/util/include/G4He3CoulombBarrier.hh b/source/processes/hadronic/models/de_excitation/util/include/G4He3CoulombBarrier.hh index f70f4f9562..0c3aeb849a 100644 --- a/source/processes/hadronic/models/de_excitation/util/include/G4He3CoulombBarrier.hh +++ b/source/processes/hadronic/models/de_excitation/util/include/G4He3CoulombBarrier.hh @@ -25,7 +25,7 @@ // // // $Id: G4He3CoulombBarrier.hh,v 1.4.2.1 2009/03/04 14:56:06 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-02-patch-03 $ +// GEANT4 tag $Name: geant4-09-02-patch-04 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara (Dec 1999) diff --git a/source/processes/hadronic/models/de_excitation/util/include/G4NeutronCoulombBarrier.hh b/source/processes/hadronic/models/de_excitation/util/include/G4NeutronCoulombBarrier.hh index e0fe8bd9f4..c4ff659203 100644 --- a/source/processes/hadronic/models/de_excitation/util/include/G4NeutronCoulombBarrier.hh +++ b/source/processes/hadronic/models/de_excitation/util/include/G4NeutronCoulombBarrier.hh @@ -25,7 +25,7 @@ // // // $Id: G4NeutronCoulombBarrier.hh,v 1.4.2.1 2009/03/04 14:56:06 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-02-patch-03 $ +// GEANT4 tag $Name: geant4-09-02-patch-04 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara (Dec 1999) diff --git a/source/processes/hadronic/models/de_excitation/util/include/G4PairingCorrection.hh b/source/processes/hadronic/models/de_excitation/util/include/G4PairingCorrection.hh index 21f068591c..82b03c52b3 100644 --- a/source/processes/hadronic/models/de_excitation/util/include/G4PairingCorrection.hh +++ b/source/processes/hadronic/models/de_excitation/util/include/G4PairingCorrection.hh @@ -25,7 +25,7 @@ // // // $Id: G4PairingCorrection.hh,v 1.5.2.1 2009/03/04 14:56:06 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-02-patch-03 $ +// GEANT4 tag $Name: geant4-09-02-patch-04 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara diff --git a/source/processes/hadronic/models/de_excitation/util/include/G4ProtonCoulombBarrier.hh b/source/processes/hadronic/models/de_excitation/util/include/G4ProtonCoulombBarrier.hh index aebb429f50..d788a142d5 100644 --- a/source/processes/hadronic/models/de_excitation/util/include/G4ProtonCoulombBarrier.hh +++ b/source/processes/hadronic/models/de_excitation/util/include/G4ProtonCoulombBarrier.hh @@ -25,7 +25,7 @@ // // // $Id: G4ProtonCoulombBarrier.hh,v 1.4.2.1 2009/03/04 14:56:06 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-02-patch-03 $ +// GEANT4 tag $Name: geant4-09-02-patch-04 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara (Dec 1999) diff --git a/source/processes/hadronic/models/de_excitation/util/include/G4ShellCorrection.hh b/source/processes/hadronic/models/de_excitation/util/include/G4ShellCorrection.hh index 1c10e97580..668d13bbfb 100644 --- a/source/processes/hadronic/models/de_excitation/util/include/G4ShellCorrection.hh +++ b/source/processes/hadronic/models/de_excitation/util/include/G4ShellCorrection.hh @@ -25,7 +25,7 @@ // // // $Id: G4ShellCorrection.hh,v 1.4.2.1 2009/03/04 14:56:06 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-02-patch-03 $ +// GEANT4 tag $Name: geant4-09-02-patch-04 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara diff --git a/source/processes/hadronic/models/de_excitation/util/include/G4TritonCoulombBarrier.hh b/source/processes/hadronic/models/de_excitation/util/include/G4TritonCoulombBarrier.hh index d4311b96cd..4abe8e75b0 100644 --- a/source/processes/hadronic/models/de_excitation/util/include/G4TritonCoulombBarrier.hh +++ b/source/processes/hadronic/models/de_excitation/util/include/G4TritonCoulombBarrier.hh @@ -25,7 +25,7 @@ // // // $Id: G4TritonCoulombBarrier.hh,v 1.4.2.1 2009/03/04 14:56:06 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-02-patch-03 $ +// GEANT4 tag $Name: geant4-09-02-patch-04 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara (Dec 1999) diff --git a/source/processes/hadronic/models/de_excitation/util/include/G4VCoulombBarrier.hh b/source/processes/hadronic/models/de_excitation/util/include/G4VCoulombBarrier.hh index 0302bcaee2..eb36dc5620 100644 --- a/source/processes/hadronic/models/de_excitation/util/include/G4VCoulombBarrier.hh +++ b/source/processes/hadronic/models/de_excitation/util/include/G4VCoulombBarrier.hh @@ -25,7 +25,7 @@ // // // $Id: G4VCoulombBarrier.hh,v 1.4.2.1 2009/03/04 14:56:06 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-02-patch-03 $ +// GEANT4 tag $Name: geant4-09-02-patch-04 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara (Nov 1999) diff --git a/source/processes/hadronic/models/de_excitation/util/include/G4VEmissionProbability.hh b/source/processes/hadronic/models/de_excitation/util/include/G4VEmissionProbability.hh index 6cee535c94..785e7dd892 100644 --- a/source/processes/hadronic/models/de_excitation/util/include/G4VEmissionProbability.hh +++ b/source/processes/hadronic/models/de_excitation/util/include/G4VEmissionProbability.hh @@ -25,7 +25,7 @@ // // // $Id: G4VEmissionProbability.hh,v 1.4.2.1 2009/03/04 14:56:06 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-02-patch-03 $ +// GEANT4 tag $Name: geant4-09-02-patch-04 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara (Oct 1998) diff --git a/source/processes/hadronic/models/de_excitation/util/include/G4VLevelDensityParameter.hh b/source/processes/hadronic/models/de_excitation/util/include/G4VLevelDensityParameter.hh index 9164b9722e..4f60a21160 100644 --- a/source/processes/hadronic/models/de_excitation/util/include/G4VLevelDensityParameter.hh +++ b/source/processes/hadronic/models/de_excitation/util/include/G4VLevelDensityParameter.hh @@ -25,7 +25,7 @@ // // // $Id: G4VLevelDensityParameter.hh,v 1.5.2.1 2009/03/04 14:56:06 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-02-patch-03 $ +// GEANT4 tag $Name: geant4-09-02-patch-04 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara (Oct 1998) diff --git a/source/processes/hadronic/models/de_excitation/util/src/G4CameronGilbertPairingCorrections.cc b/source/processes/hadronic/models/de_excitation/util/src/G4CameronGilbertPairingCorrections.cc index ad170a1663..1d9ad5c078 100644 --- a/source/processes/hadronic/models/de_excitation/util/src/G4CameronGilbertPairingCorrections.cc +++ b/source/processes/hadronic/models/de_excitation/util/src/G4CameronGilbertPairingCorrections.cc @@ -25,7 +25,7 @@ // // // $Id: G4CameronGilbertPairingCorrections.cc,v 1.4.2.1 2009/03/04 14:56:06 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-02-patch-03 $ +// GEANT4 tag $Name: geant4-09-02-patch-04 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara diff --git a/source/processes/hadronic/models/de_excitation/util/src/G4CameronGilbertShellCorrections.cc b/source/processes/hadronic/models/de_excitation/util/src/G4CameronGilbertShellCorrections.cc index 902a5eceb4..727d9f6e0f 100644 --- a/source/processes/hadronic/models/de_excitation/util/src/G4CameronGilbertShellCorrections.cc +++ b/source/processes/hadronic/models/de_excitation/util/src/G4CameronGilbertShellCorrections.cc @@ -25,7 +25,7 @@ // // // $Id: G4CameronGilbertShellCorrections.cc,v 1.4.2.1 2009/03/04 14:56:06 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-02-patch-03 $ +// GEANT4 tag $Name: geant4-09-02-patch-04 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara diff --git a/source/processes/hadronic/models/de_excitation/util/src/G4CameronShellPlusPairingCorrections.cc b/source/processes/hadronic/models/de_excitation/util/src/G4CameronShellPlusPairingCorrections.cc index 9ecbff27ca..105371236b 100644 --- a/source/processes/hadronic/models/de_excitation/util/src/G4CameronShellPlusPairingCorrections.cc +++ b/source/processes/hadronic/models/de_excitation/util/src/G4CameronShellPlusPairingCorrections.cc @@ -25,7 +25,7 @@ // // // $Id: G4CameronShellPlusPairingCorrections.cc,v 1.4.2.1 2009/03/04 14:56:06 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-02-patch-03 $ +// GEANT4 tag $Name: geant4-09-02-patch-04 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara diff --git a/source/processes/hadronic/models/de_excitation/util/src/G4CameronTruranHilfPairingCorrections.cc b/source/processes/hadronic/models/de_excitation/util/src/G4CameronTruranHilfPairingCorrections.cc index 370303d59f..1132d59e6d 100644 --- a/source/processes/hadronic/models/de_excitation/util/src/G4CameronTruranHilfPairingCorrections.cc +++ b/source/processes/hadronic/models/de_excitation/util/src/G4CameronTruranHilfPairingCorrections.cc @@ -25,7 +25,7 @@ // // // $Id: G4CameronTruranHilfPairingCorrections.cc,v 1.4.2.1 2009/03/04 14:56:06 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-02-patch-03 $ +// GEANT4 tag $Name: geant4-09-02-patch-04 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara diff --git a/source/processes/hadronic/models/de_excitation/util/src/G4CameronTruranHilfShellCorrections.cc b/source/processes/hadronic/models/de_excitation/util/src/G4CameronTruranHilfShellCorrections.cc index fd6677fc04..56ff9dea7f 100644 --- a/source/processes/hadronic/models/de_excitation/util/src/G4CameronTruranHilfShellCorrections.cc +++ b/source/processes/hadronic/models/de_excitation/util/src/G4CameronTruranHilfShellCorrections.cc @@ -25,7 +25,7 @@ // // // $Id: G4CameronTruranHilfShellCorrections.cc,v 1.4.2.1 2009/03/04 14:56:06 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-02-patch-03 $ +// GEANT4 tag $Name: geant4-09-02-patch-04 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara diff --git a/source/processes/hadronic/models/de_excitation/util/src/G4CookPairingCorrections.cc b/source/processes/hadronic/models/de_excitation/util/src/G4CookPairingCorrections.cc index 195cb88d3b..506c6c6104 100644 --- a/source/processes/hadronic/models/de_excitation/util/src/G4CookPairingCorrections.cc +++ b/source/processes/hadronic/models/de_excitation/util/src/G4CookPairingCorrections.cc @@ -25,7 +25,7 @@ // // // $Id: G4CookPairingCorrections.cc,v 1.4.2.1 2009/03/04 14:56:06 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-02-patch-03 $ +// GEANT4 tag $Name: geant4-09-02-patch-04 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara diff --git a/source/processes/hadronic/models/de_excitation/util/src/G4CookShellCorrections.cc b/source/processes/hadronic/models/de_excitation/util/src/G4CookShellCorrections.cc index 640db7e3a3..51b32945f2 100644 --- a/source/processes/hadronic/models/de_excitation/util/src/G4CookShellCorrections.cc +++ b/source/processes/hadronic/models/de_excitation/util/src/G4CookShellCorrections.cc @@ -25,7 +25,7 @@ // // // $Id: G4CookShellCorrections.cc,v 1.4.2.1 2009/03/04 14:56:06 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-02-patch-03 $ +// GEANT4 tag $Name: geant4-09-02-patch-04 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara diff --git a/source/processes/hadronic/models/de_excitation/util/src/G4CoulombBarrier.cc b/source/processes/hadronic/models/de_excitation/util/src/G4CoulombBarrier.cc index c46475aa8d..516dea68a4 100644 --- a/source/processes/hadronic/models/de_excitation/util/src/G4CoulombBarrier.cc +++ b/source/processes/hadronic/models/de_excitation/util/src/G4CoulombBarrier.cc @@ -25,7 +25,7 @@ // // // $Id: G4CoulombBarrier.cc,v 1.8.2.1 2009/03/04 14:56:06 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-02-patch-03 $ +// GEANT4 tag $Name: geant4-09-02-patch-04 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara (Dec 1999) diff --git a/source/processes/hadronic/models/de_excitation/util/src/G4EvaporationLevelDensityParameter.cc b/source/processes/hadronic/models/de_excitation/util/src/G4EvaporationLevelDensityParameter.cc index 4fd75999d9..7a47b9c877 100644 --- a/source/processes/hadronic/models/de_excitation/util/src/G4EvaporationLevelDensityParameter.cc +++ b/source/processes/hadronic/models/de_excitation/util/src/G4EvaporationLevelDensityParameter.cc @@ -25,7 +25,7 @@ // // // $Id: G4EvaporationLevelDensityParameter.cc,v 1.8.2.1 2009/03/04 14:56:06 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-02-patch-03 $ +// GEANT4 tag $Name: geant4-09-02-patch-04 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara (Oct 1998) diff --git a/source/processes/hadronic/models/de_excitation/util/src/G4PairingCorrection.cc b/source/processes/hadronic/models/de_excitation/util/src/G4PairingCorrection.cc index ac2f2382d4..9d9e190f74 100644 --- a/source/processes/hadronic/models/de_excitation/util/src/G4PairingCorrection.cc +++ b/source/processes/hadronic/models/de_excitation/util/src/G4PairingCorrection.cc @@ -25,7 +25,7 @@ // // // $Id: G4PairingCorrection.cc,v 1.4.2.1 2009/03/04 14:56:06 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-02-patch-03 $ +// GEANT4 tag $Name: geant4-09-02-patch-04 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara diff --git a/source/processes/hadronic/models/de_excitation/util/src/G4ShellCorrection.cc b/source/processes/hadronic/models/de_excitation/util/src/G4ShellCorrection.cc index 537b002f7a..5d2f249392 100644 --- a/source/processes/hadronic/models/de_excitation/util/src/G4ShellCorrection.cc +++ b/source/processes/hadronic/models/de_excitation/util/src/G4ShellCorrection.cc @@ -25,7 +25,7 @@ // // // $Id: G4ShellCorrection.cc,v 1.4.2.1 2009/03/04 14:56:06 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-02-patch-03 $ +// GEANT4 tag $Name: geant4-09-02-patch-04 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara diff --git a/source/processes/hadronic/models/de_excitation/util/src/G4VCoulombBarrier.cc b/source/processes/hadronic/models/de_excitation/util/src/G4VCoulombBarrier.cc index a3088aee93..6eed5b3a1e 100644 --- a/source/processes/hadronic/models/de_excitation/util/src/G4VCoulombBarrier.cc +++ b/source/processes/hadronic/models/de_excitation/util/src/G4VCoulombBarrier.cc @@ -25,7 +25,7 @@ // // // $Id: G4VCoulombBarrier.cc,v 1.6.2.1 2009/03/04 14:56:06 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-02-patch-03 $ +// GEANT4 tag $Name: geant4-09-02-patch-04 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara (Dec 1999) diff --git a/source/processes/hadronic/models/de_excitation/util/src/G4VEmissionProbability.cc b/source/processes/hadronic/models/de_excitation/util/src/G4VEmissionProbability.cc index b88f4be178..360cfb829d 100644 --- a/source/processes/hadronic/models/de_excitation/util/src/G4VEmissionProbability.cc +++ b/source/processes/hadronic/models/de_excitation/util/src/G4VEmissionProbability.cc @@ -25,7 +25,7 @@ // // // $Id: G4VEmissionProbability.cc,v 1.6.2.1 2009/03/04 14:56:06 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-02-patch-03 $ +// GEANT4 tag $Name: geant4-09-02-patch-04 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara (Oct 1998) diff --git a/source/processes/hadronic/models/de_excitation/util/src/G4VLevelDensityParameter.cc b/source/processes/hadronic/models/de_excitation/util/src/G4VLevelDensityParameter.cc index cca367c536..0fe1678ede 100644 --- a/source/processes/hadronic/models/de_excitation/util/src/G4VLevelDensityParameter.cc +++ b/source/processes/hadronic/models/de_excitation/util/src/G4VLevelDensityParameter.cc @@ -25,7 +25,7 @@ // // // $Id: G4VLevelDensityParameter.cc,v 1.5.2.1 2009/03/04 14:56:06 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-02-patch-03 $ +// GEANT4 tag $Name: geant4-09-02-patch-04 $ // // Hadronic Process: Nuclear De-excitations // by V. Lara (Oct 1998) diff --git a/source/processes/hadronic/models/management/include/G4HadronicInteraction.hh b/source/processes/hadronic/models/management/include/G4HadronicInteraction.hh index 8bc7ceb098..70f5a1d1e9 100644 --- a/source/processes/hadronic/models/management/include/G4HadronicInteraction.hh +++ b/source/processes/hadronic/models/management/include/G4HadronicInteraction.hh @@ -25,7 +25,7 @@ // // // $Id: G4HadronicInteraction.hh,v 1.8.4.1 2009/03/03 11:26:45 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-02-patch-03 $ +// GEANT4 tag $Name: geant4-09-02-patch-04 $ // // Hadronic Interaction abstract base class // This class is the base class for the model classes. diff --git a/source/processes/hadronic/models/management/include/G4HadronicInteractionRegistry.hh b/source/processes/hadronic/models/management/include/G4HadronicInteractionRegistry.hh index 6b73f9cfb8..5d9dc47516 100644 --- a/source/processes/hadronic/models/management/include/G4HadronicInteractionRegistry.hh +++ b/source/processes/hadronic/models/management/include/G4HadronicInteractionRegistry.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: G4HadronicInteractionRegistry.hh,v 1.2.4.2 2010/01/26 15:37:10 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-02-patch-03 $ +// GEANT4 tag $Name: geant4-09-02-patch-04 $ // // 23-Jan-2009 V.Ivanchenko make the class to be a singleton diff --git a/source/processes/hadronic/models/management/include/G4InelasticInteraction.hh b/source/processes/hadronic/models/management/include/G4InelasticInteraction.hh index feca7819a7..53fe8477a0 100644 --- a/source/processes/hadronic/models/management/include/G4InelasticInteraction.hh +++ b/source/processes/hadronic/models/management/include/G4InelasticInteraction.hh @@ -25,7 +25,7 @@ // // // $Id: G4InelasticInteraction.hh,v 1.5.4.1 2009/03/03 11:26:45 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-02-patch-03 $ +// GEANT4 tag $Name: geant4-09-02-patch-04 $ // // Hadronic Process: Inelastic Interaction // This class is an abstract base class, since the pure virtual diff --git a/source/processes/hadronic/models/management/src/G4HadronicInteraction.cc b/source/processes/hadronic/models/management/src/G4HadronicInteraction.cc index 77e6bf87bd..e390f98b2f 100644 --- a/source/processes/hadronic/models/management/src/G4HadronicInteraction.cc +++ b/source/processes/hadronic/models/management/src/G4HadronicInteraction.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: G4HadronicInteraction.cc,v 1.3.4.1 2009/03/03 11:26:45 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-02-patch-03 $ +// GEANT4 tag $Name: geant4-09-02-patch-04 $ // // Hadronic Interaction base class // original by H.P. Wellisch diff --git a/source/processes/hadronic/models/management/src/G4HadronicInteractionRegistry.cc b/source/processes/hadronic/models/management/src/G4HadronicInteractionRegistry.cc index 713706e867..1677d89d48 100644 --- a/source/processes/hadronic/models/management/src/G4HadronicInteractionRegistry.cc +++ b/source/processes/hadronic/models/management/src/G4HadronicInteractionRegistry.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: G4HadronicInteractionRegistry.cc,v 1.3.2.2 2010/01/26 15:37:10 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-02-patch-03 $ +// GEANT4 tag $Name: geant4-09-02-patch-04 $ // // 23-Jan-2009 V.Ivanchenko make the class to be a singleton diff --git a/source/processes/hadronic/models/management/src/G4InelasticInteraction.cc b/source/processes/hadronic/models/management/src/G4InelasticInteraction.cc index 6d070a11f7..5b3d464c4c 100644 --- a/source/processes/hadronic/models/management/src/G4InelasticInteraction.cc +++ b/source/processes/hadronic/models/management/src/G4InelasticInteraction.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: G4InelasticInteraction.cc,v 1.11.2.1 2009/03/03 11:26:45 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-02-patch-03 $ +// GEANT4 tag $Name: geant4-09-02-patch-04 $ // // Hadronic Process: Inelastic Interaction // original by H.P. Wellisch diff --git a/source/processes/hadronic/models/parton_string/hadronization/include/G4VLongitudinalStringDecay.hh b/source/processes/hadronic/models/parton_string/hadronization/include/G4VLongitudinalStringDecay.hh index 517d016ea2..a7f01878ee 100644 --- a/source/processes/hadronic/models/parton_string/hadronization/include/G4VLongitudinalStringDecay.hh +++ b/source/processes/hadronic/models/parton_string/hadronization/include/G4VLongitudinalStringDecay.hh @@ -25,7 +25,7 @@ // // // $Id: G4VLongitudinalStringDecay.hh,v 1.6.2.1 2009/08/11 13:05:47 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-02-patch-03 $ +// GEANT4 tag $Name: geant4-09-02-patch-04 $ // Maxim Komogorov // // ----------------------------------------------------------------------------- diff --git a/source/processes/hadronic/models/parton_string/hadronization/src/G4HadronBuilder.cc b/source/processes/hadronic/models/parton_string/hadronization/src/G4HadronBuilder.cc index 2617f9cdf7..d84635835d 100644 --- a/source/processes/hadronic/models/parton_string/hadronization/src/G4HadronBuilder.cc +++ b/source/processes/hadronic/models/parton_string/hadronization/src/G4HadronBuilder.cc @@ -25,7 +25,7 @@ // // // $Id: G4HadronBuilder.cc,v 1.7.2.1 2009/08/11 13:05:47 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-02-patch-03 $ +// GEANT4 tag $Name: geant4-09-02-patch-04 $ // // ----------------------------------------------------------------------------- // GEANT 4 class implementation file diff --git a/source/processes/hadronic/models/parton_string/hadronization/src/G4LundStringFragmentation.cc b/source/processes/hadronic/models/parton_string/hadronization/src/G4LundStringFragmentation.cc index 8999704679..552951279b 100644 --- a/source/processes/hadronic/models/parton_string/hadronization/src/G4LundStringFragmentation.cc +++ b/source/processes/hadronic/models/parton_string/hadronization/src/G4LundStringFragmentation.cc @@ -25,7 +25,7 @@ // // // $Id: G4LundStringFragmentation.cc,v 1.13.2.1 2009/08/11 13:05:47 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-02-patch-03 $ 1.8 +// GEANT4 tag $Name: geant4-09-02-patch-04 $ 1.8 // // ----------------------------------------------------------------------------- // GEANT 4 class implementation file diff --git a/source/processes/hadronic/models/parton_string/hadronization/src/G4VLongitudinalStringDecay.cc b/source/processes/hadronic/models/parton_string/hadronization/src/G4VLongitudinalStringDecay.cc index 0d81c0bbec..917f77874b 100644 --- a/source/processes/hadronic/models/parton_string/hadronization/src/G4VLongitudinalStringDecay.cc +++ b/source/processes/hadronic/models/parton_string/hadronization/src/G4VLongitudinalStringDecay.cc @@ -25,7 +25,7 @@ // // // $Id: G4VLongitudinalStringDecay.cc,v 1.13.2.1 2009/08/11 13:05:47 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-02-patch-03 $ +// GEANT4 tag $Name: geant4-09-02-patch-04 $ // // ----------------------------------------------------------------------------- // GEANT 4 class implementation file diff --git a/source/processes/hadronic/models/photolepton_hadron/muon_nuclear/src/G4MuNuclearInteraction.cc b/source/processes/hadronic/models/photolepton_hadron/muon_nuclear/src/G4MuNuclearInteraction.cc index 0f08c6e5fd..c00c1f10d4 100644 --- a/source/processes/hadronic/models/photolepton_hadron/muon_nuclear/src/G4MuNuclearInteraction.cc +++ b/source/processes/hadronic/models/photolepton_hadron/muon_nuclear/src/G4MuNuclearInteraction.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: G4MuNuclearInteraction.cc,v 1.11.2.1 2009/03/03 13:34:24 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-02-patch-03 $ +// GEANT4 tag $Name: geant4-09-02-patch-04 $ // // $Id: // -------------------------------------------------------------- diff --git a/source/processes/hadronic/models/pre_equilibrium/exciton_model/include/G4PreCompoundEmission.icc b/source/processes/hadronic/models/pre_equilibrium/exciton_model/include/G4PreCompoundEmission.icc index cfcbeed280..95fb0b67df 100644 --- a/source/processes/hadronic/models/pre_equilibrium/exciton_model/include/G4PreCompoundEmission.icc +++ b/source/processes/hadronic/models/pre_equilibrium/exciton_model/include/G4PreCompoundEmission.icc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: G4PreCompoundEmission.icc,v 1.3.2.1 2009/03/03 13:17:04 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-02-patch-03 $ +// GEANT4 tag $Name: geant4-09-02-patch-04 $ // // // Author: V.Lara diff --git a/source/processes/hadronic/models/pre_equilibrium/exciton_model/include/G4PreCompoundFragmentVector.hh b/source/processes/hadronic/models/pre_equilibrium/exciton_model/include/G4PreCompoundFragmentVector.hh index d594e031b6..7ab2f08214 100644 --- a/source/processes/hadronic/models/pre_equilibrium/exciton_model/include/G4PreCompoundFragmentVector.hh +++ b/source/processes/hadronic/models/pre_equilibrium/exciton_model/include/G4PreCompoundFragmentVector.hh @@ -25,7 +25,7 @@ // // // $Id: G4PreCompoundFragmentVector.hh,v 1.4.2.1 2009/03/03 13:17:04 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-02-patch-03 $ +// GEANT4 tag $Name: geant4-09-02-patch-04 $ // // Hadronic Process: Nuclear Preequilibrium // by V. Lara diff --git a/source/processes/hadronic/models/pre_equilibrium/exciton_model/include/G4VPreCompoundFragment.hh b/source/processes/hadronic/models/pre_equilibrium/exciton_model/include/G4VPreCompoundFragment.hh index 07f69fef1a..9e67cb93b9 100644 --- a/source/processes/hadronic/models/pre_equilibrium/exciton_model/include/G4VPreCompoundFragment.hh +++ b/source/processes/hadronic/models/pre_equilibrium/exciton_model/include/G4VPreCompoundFragment.hh @@ -25,7 +25,7 @@ // // // $Id: G4VPreCompoundFragment.hh,v 1.8.2.1 2009/03/03 13:17:04 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-02-patch-03 $ +// GEANT4 tag $Name: geant4-09-02-patch-04 $ // // J. M. Quesada (August 2008). // Based on previous work by V. Lara diff --git a/source/processes/hadronic/models/pre_equilibrium/exciton_model/src/G4PreCompoundAlpha.cc b/source/processes/hadronic/models/pre_equilibrium/exciton_model/src/G4PreCompoundAlpha.cc index ab61724af6..9210e07be0 100644 --- a/source/processes/hadronic/models/pre_equilibrium/exciton_model/src/G4PreCompoundAlpha.cc +++ b/source/processes/hadronic/models/pre_equilibrium/exciton_model/src/G4PreCompoundAlpha.cc @@ -25,7 +25,7 @@ // // // $Id: G4PreCompoundAlpha.cc,v 1.1.2.1 2009/03/03 13:17:04 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-02-patch-03 $ +// GEANT4 tag $Name: geant4-09-02-patch-04 $ // // ------------------------------------------------------------------- // diff --git a/source/processes/hadronic/models/pre_equilibrium/exciton_model/src/G4PreCompoundDeuteron.cc b/source/processes/hadronic/models/pre_equilibrium/exciton_model/src/G4PreCompoundDeuteron.cc index 6bf33daee2..565ec623be 100644 --- a/source/processes/hadronic/models/pre_equilibrium/exciton_model/src/G4PreCompoundDeuteron.cc +++ b/source/processes/hadronic/models/pre_equilibrium/exciton_model/src/G4PreCompoundDeuteron.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: G4PreCompoundDeuteron.cc,v 1.1.2.1 2009/03/03 13:17:04 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-02-patch-03 $ +// GEANT4 tag $Name: geant4-09-02-patch-04 $ // // ------------------------------------------------------------------- // diff --git a/source/processes/hadronic/models/pre_equilibrium/exciton_model/src/G4PreCompoundEmission.cc b/source/processes/hadronic/models/pre_equilibrium/exciton_model/src/G4PreCompoundEmission.cc index 04f026da98..d21c7b2cee 100644 --- a/source/processes/hadronic/models/pre_equilibrium/exciton_model/src/G4PreCompoundEmission.cc +++ b/source/processes/hadronic/models/pre_equilibrium/exciton_model/src/G4PreCompoundEmission.cc @@ -25,7 +25,7 @@ // // // $Id: G4PreCompoundEmission.cc,v 1.16.2.1 2009/03/03 13:17:04 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-02-patch-03 $ +// GEANT4 tag $Name: geant4-09-02-patch-04 $ // // ------------------------------------------------------------------- // diff --git a/source/processes/hadronic/models/pre_equilibrium/exciton_model/src/G4PreCompoundFragment.cc b/source/processes/hadronic/models/pre_equilibrium/exciton_model/src/G4PreCompoundFragment.cc index a9b7990a83..92953587e0 100644 --- a/source/processes/hadronic/models/pre_equilibrium/exciton_model/src/G4PreCompoundFragment.cc +++ b/source/processes/hadronic/models/pre_equilibrium/exciton_model/src/G4PreCompoundFragment.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: G4PreCompoundFragment.cc,v 1.6.2.1 2009/03/03 13:17:04 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-02-patch-03 $ +// GEANT4 tag $Name: geant4-09-02-patch-04 $ // // J. M. Quesada (August 2008). // Based on previous work by V. Lara diff --git a/source/processes/hadronic/models/pre_equilibrium/exciton_model/src/G4PreCompoundFragmentVector.cc b/source/processes/hadronic/models/pre_equilibrium/exciton_model/src/G4PreCompoundFragmentVector.cc index 93fed70282..7cf5c6c887 100644 --- a/source/processes/hadronic/models/pre_equilibrium/exciton_model/src/G4PreCompoundFragmentVector.cc +++ b/source/processes/hadronic/models/pre_equilibrium/exciton_model/src/G4PreCompoundFragmentVector.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: G4PreCompoundFragmentVector.cc,v 1.7.2.1 2009/03/03 13:17:04 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-02-patch-03 $ +// GEANT4 tag $Name: geant4-09-02-patch-04 $ // // Hadronic Process: Nuclear Preequilibrium // by V. Lara diff --git a/source/processes/hadronic/models/pre_equilibrium/exciton_model/src/G4PreCompoundHe3.cc b/source/processes/hadronic/models/pre_equilibrium/exciton_model/src/G4PreCompoundHe3.cc index 4fdd4ae3da..db01d3f71a 100644 --- a/source/processes/hadronic/models/pre_equilibrium/exciton_model/src/G4PreCompoundHe3.cc +++ b/source/processes/hadronic/models/pre_equilibrium/exciton_model/src/G4PreCompoundHe3.cc @@ -25,7 +25,7 @@ // // // $Id: G4PreCompoundHe3.cc,v 1.1.2.1 2009/03/03 13:17:04 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-02-patch-03 $ +// GEANT4 tag $Name: geant4-09-02-patch-04 $ // // ------------------------------------------------------------------- // diff --git a/source/processes/hadronic/models/pre_equilibrium/exciton_model/src/G4PreCompoundIon.cc b/source/processes/hadronic/models/pre_equilibrium/exciton_model/src/G4PreCompoundIon.cc index 7ecc46aa5f..70207a0c8e 100644 --- a/source/processes/hadronic/models/pre_equilibrium/exciton_model/src/G4PreCompoundIon.cc +++ b/source/processes/hadronic/models/pre_equilibrium/exciton_model/src/G4PreCompoundIon.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: G4PreCompoundIon.cc,v 1.13.2.1 2009/03/03 13:17:04 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-02-patch-03 $ +// GEANT4 tag $Name: geant4-09-02-patch-04 $ // // ------------------------------------------------------------------- // diff --git a/source/processes/hadronic/models/pre_equilibrium/exciton_model/src/G4PreCompoundNeutron.cc b/source/processes/hadronic/models/pre_equilibrium/exciton_model/src/G4PreCompoundNeutron.cc index dfc1c5fd5b..eb0e9c4d54 100644 --- a/source/processes/hadronic/models/pre_equilibrium/exciton_model/src/G4PreCompoundNeutron.cc +++ b/source/processes/hadronic/models/pre_equilibrium/exciton_model/src/G4PreCompoundNeutron.cc @@ -25,7 +25,7 @@ // // // $Id: G4PreCompoundNeutron.cc,v 1.2.2.1 2009/03/03 13:17:04 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-02-patch-03 $ +// GEANT4 tag $Name: geant4-09-02-patch-04 $ // // ------------------------------------------------------------------- // diff --git a/source/processes/hadronic/models/pre_equilibrium/exciton_model/src/G4PreCompoundNucleon.cc b/source/processes/hadronic/models/pre_equilibrium/exciton_model/src/G4PreCompoundNucleon.cc index 21a479cbf3..62f5bfecea 100644 --- a/source/processes/hadronic/models/pre_equilibrium/exciton_model/src/G4PreCompoundNucleon.cc +++ b/source/processes/hadronic/models/pre_equilibrium/exciton_model/src/G4PreCompoundNucleon.cc @@ -25,7 +25,7 @@ // // // $Id: G4PreCompoundNucleon.cc,v 1.10.2.1 2009/03/03 13:17:04 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-02-patch-03 $ +// GEANT4 tag $Name: geant4-09-02-patch-04 $ // // ------------------------------------------------------------------- // diff --git a/source/processes/hadronic/models/pre_equilibrium/exciton_model/src/G4PreCompoundProton.cc b/source/processes/hadronic/models/pre_equilibrium/exciton_model/src/G4PreCompoundProton.cc index 578f6b3afa..98560e8492 100644 --- a/source/processes/hadronic/models/pre_equilibrium/exciton_model/src/G4PreCompoundProton.cc +++ b/source/processes/hadronic/models/pre_equilibrium/exciton_model/src/G4PreCompoundProton.cc @@ -25,7 +25,7 @@ // // // $Id: G4PreCompoundProton.cc,v 1.2.2.1 2009/03/03 13:17:04 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-02-patch-03 $ +// GEANT4 tag $Name: geant4-09-02-patch-04 $ // // ------------------------------------------------------------------- // diff --git a/source/processes/hadronic/models/pre_equilibrium/exciton_model/src/G4PreCompoundTransitions.cc b/source/processes/hadronic/models/pre_equilibrium/exciton_model/src/G4PreCompoundTransitions.cc index a5b79268d2..fd2f030224 100644 --- a/source/processes/hadronic/models/pre_equilibrium/exciton_model/src/G4PreCompoundTransitions.cc +++ b/source/processes/hadronic/models/pre_equilibrium/exciton_model/src/G4PreCompoundTransitions.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: G4PreCompoundTransitions.cc,v 1.19.2.1 2009/03/03 13:17:04 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-02-patch-03 $ +// GEANT4 tag $Name: geant4-09-02-patch-04 $ // // ------------------------------------------------------------------- // diff --git a/source/processes/hadronic/models/pre_equilibrium/exciton_model/src/G4PreCompoundTriton.cc b/source/processes/hadronic/models/pre_equilibrium/exciton_model/src/G4PreCompoundTriton.cc index ceab990438..6c713439e7 100644 --- a/source/processes/hadronic/models/pre_equilibrium/exciton_model/src/G4PreCompoundTriton.cc +++ b/source/processes/hadronic/models/pre_equilibrium/exciton_model/src/G4PreCompoundTriton.cc @@ -25,7 +25,7 @@ // // // $Id: G4PreCompoundTriton.cc,v 1.1.2.1 2009/03/03 13:17:04 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-02-patch-03 $ +// GEANT4 tag $Name: geant4-09-02-patch-04 $ // // ------------------------------------------------------------------- // diff --git a/source/processes/hadronic/models/pre_equilibrium/exciton_model/src/G4VPreCompoundFragment.cc b/source/processes/hadronic/models/pre_equilibrium/exciton_model/src/G4VPreCompoundFragment.cc index 30e5d01fc3..6014584218 100644 --- a/source/processes/hadronic/models/pre_equilibrium/exciton_model/src/G4VPreCompoundFragment.cc +++ b/source/processes/hadronic/models/pre_equilibrium/exciton_model/src/G4VPreCompoundFragment.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: G4VPreCompoundFragment.cc,v 1.10.2.1 2009/03/03 13:17:04 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-02-patch-03 $ +// GEANT4 tag $Name: geant4-09-02-patch-04 $ // // J. M. Quesada (August 2008). // Based on previous work by V. Lara diff --git a/source/processes/hadronic/models/rpg/include/G4RPGInelastic.hh b/source/processes/hadronic/models/rpg/include/G4RPGInelastic.hh index d29c310c4c..dea91191c2 100644 --- a/source/processes/hadronic/models/rpg/include/G4RPGInelastic.hh +++ b/source/processes/hadronic/models/rpg/include/G4RPGInelastic.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: G4RPGInelastic.hh,v 1.3.2.1 2009/08/11 12:57:01 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-02-patch-03 $ +// GEANT4 tag $Name: geant4-09-02-patch-04 $ // // Author: D. H. Wright // Date: 26 May 2007 diff --git a/source/processes/hadronic/models/rpg/include/G4RPGNucleonInelastic.hh b/source/processes/hadronic/models/rpg/include/G4RPGNucleonInelastic.hh index d5ce0f8e86..7d7b457dda 100644 --- a/source/processes/hadronic/models/rpg/include/G4RPGNucleonInelastic.hh +++ b/source/processes/hadronic/models/rpg/include/G4RPGNucleonInelastic.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: G4RPGNucleonInelastic.hh,v 1.1.2.1 2009/08/11 12:57:01 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-02-patch-03 $ +// GEANT4 tag $Name: geant4-09-02-patch-04 $ // // Author: D. H. Wright // Date: 19 December 2007 diff --git a/source/processes/hadronic/models/rpg/include/G4RPGPionInelastic.hh b/source/processes/hadronic/models/rpg/include/G4RPGPionInelastic.hh index a2335e7299..c79043fae8 100644 --- a/source/processes/hadronic/models/rpg/include/G4RPGPionInelastic.hh +++ b/source/processes/hadronic/models/rpg/include/G4RPGPionInelastic.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: G4RPGPionInelastic.hh,v 1.1.2.1 2009/08/11 12:57:01 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-02-patch-03 $ +// GEANT4 tag $Name: geant4-09-02-patch-04 $ // // Author: D. H. Wright // Date: 15 August 2007 diff --git a/source/processes/hadronic/models/rpg/src/G4RPGInelastic.cc b/source/processes/hadronic/models/rpg/src/G4RPGInelastic.cc index b88d149e09..28fc3e077f 100644 --- a/source/processes/hadronic/models/rpg/src/G4RPGInelastic.cc +++ b/source/processes/hadronic/models/rpg/src/G4RPGInelastic.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: G4RPGInelastic.cc,v 1.6.2.1 2009/08/11 12:57:01 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-02-patch-03 $ +// GEANT4 tag $Name: geant4-09-02-patch-04 $ // #include "G4RPGInelastic.hh" diff --git a/source/processes/hadronic/models/rpg/src/G4RPGNucleonInelastic.cc b/source/processes/hadronic/models/rpg/src/G4RPGNucleonInelastic.cc index e17d399a98..e3bfbf9806 100644 --- a/source/processes/hadronic/models/rpg/src/G4RPGNucleonInelastic.cc +++ b/source/processes/hadronic/models/rpg/src/G4RPGNucleonInelastic.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: G4RPGNucleonInelastic.cc,v 1.1.2.1 2009/08/11 12:57:01 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-02-patch-03 $ +// GEANT4 tag $Name: geant4-09-02-patch-04 $ // #include "G4RPGNucleonInelastic.hh" diff --git a/source/processes/hadronic/models/rpg/src/G4RPGPionInelastic.cc b/source/processes/hadronic/models/rpg/src/G4RPGPionInelastic.cc index 17d95313a0..01816f378e 100644 --- a/source/processes/hadronic/models/rpg/src/G4RPGPionInelastic.cc +++ b/source/processes/hadronic/models/rpg/src/G4RPGPionInelastic.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: G4RPGPionInelastic.cc,v 1.1.2.1 2009/08/11 12:57:01 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-02-patch-03 $ +// GEANT4 tag $Name: geant4-09-02-patch-04 $ // #include "G4RPGPionInelastic.hh" diff --git a/source/processes/hadronic/processes/include/G4ElectronNuclearProcess.hh b/source/processes/hadronic/processes/include/G4ElectronNuclearProcess.hh index 9a71fbde04..3a160ff74e 100644 --- a/source/processes/hadronic/processes/include/G4ElectronNuclearProcess.hh +++ b/source/processes/hadronic/processes/include/G4ElectronNuclearProcess.hh @@ -25,7 +25,7 @@ // // // $Id: G4ElectronNuclearProcess.hh,v 1.5.4.1 2009/08/11 14:36:30 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-02-patch-03 $ +// GEANT4 tag $Name: geant4-09-02-patch-04 $ // // Class Description: // diff --git a/source/processes/hadronic/processes/include/G4PhotoNuclearProcess.hh b/source/processes/hadronic/processes/include/G4PhotoNuclearProcess.hh index 2ca8931700..f66d0748a0 100644 --- a/source/processes/hadronic/processes/include/G4PhotoNuclearProcess.hh +++ b/source/processes/hadronic/processes/include/G4PhotoNuclearProcess.hh @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: G4PhotoNuclearProcess.hh,v 1.8.4.1 2009/08/11 14:36:30 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-02-patch-03 $ +// GEANT4 tag $Name: geant4-09-02-patch-04 $ // // Class Description // Process for photon nuclear inelastic scattering; diff --git a/source/processes/hadronic/processes/src/G4ElectronNuclearProcess.cc b/source/processes/hadronic/processes/src/G4ElectronNuclearProcess.cc index 0fb6abd3b8..4bcdcbd01f 100644 --- a/source/processes/hadronic/processes/src/G4ElectronNuclearProcess.cc +++ b/source/processes/hadronic/processes/src/G4ElectronNuclearProcess.cc @@ -25,7 +25,7 @@ // // // $Id: G4ElectronNuclearProcess.cc,v 1.2.4.1 2009/08/11 14:36:30 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-02-patch-03 $ +// GEANT4 tag $Name: geant4-09-02-patch-04 $ // #include "G4ElectronNuclearProcess.hh" diff --git a/source/processes/hadronic/processes/src/G4PhotoNuclearProcess.cc b/source/processes/hadronic/processes/src/G4PhotoNuclearProcess.cc index 8833ab1146..b6b7118dbf 100644 --- a/source/processes/hadronic/processes/src/G4PhotoNuclearProcess.cc +++ b/source/processes/hadronic/processes/src/G4PhotoNuclearProcess.cc @@ -26,7 +26,7 @@ // // // $Id: G4PhotoNuclearProcess.cc,v 1.2.4.1 2009/08/11 14:36:30 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-02-patch-03 $ +// GEANT4 tag $Name: geant4-09-02-patch-04 $ // #include "G4PhotoNuclearProcess.hh" diff --git a/source/processes/hadronic/processes/src/G4PositronNuclearProcess.cc b/source/processes/hadronic/processes/src/G4PositronNuclearProcess.cc index 82eff1ca78..822d81943e 100644 --- a/source/processes/hadronic/processes/src/G4PositronNuclearProcess.cc +++ b/source/processes/hadronic/processes/src/G4PositronNuclearProcess.cc @@ -25,7 +25,7 @@ // // // $Id: G4PositronNuclearProcess.cc,v 1.1.2.2 2009/08/11 14:36:30 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-02-patch-03 $ +// GEANT4 tag $Name: geant4-09-02-patch-04 $ // #include "G4PositronNuclearProcess.hh" diff --git a/source/processes/hadronic/stopping/src/G4MuonMinusCaptureAtRest.cc b/source/processes/hadronic/stopping/src/G4MuonMinusCaptureAtRest.cc index 60a0ad92a4..bd25ade49f 100644 --- a/source/processes/hadronic/stopping/src/G4MuonMinusCaptureAtRest.cc +++ b/source/processes/hadronic/stopping/src/G4MuonMinusCaptureAtRest.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: G4MuonMinusCaptureAtRest.cc,v 1.53.2.1 2009/03/03 13:36:32 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-02-patch-03 $ +// GEANT4 tag $Name: geant4-09-02-patch-04 $ // // G4MuonMinusCaptureAtRest physics process // Larry Felawka (TRIUMF) and Art Olin (TRIUMF) diff --git a/source/processes/optical/include/G4OpBoundaryProcess.hh b/source/processes/optical/include/G4OpBoundaryProcess.hh index 21a1078613..42bea533d5 100644 --- a/source/processes/optical/include/G4OpBoundaryProcess.hh +++ b/source/processes/optical/include/G4OpBoundaryProcess.hh @@ -25,7 +25,7 @@ // // // $Id: G4OpBoundaryProcess.hh,v 1.18.2.1 2009/08/11 12:53:17 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-02-patch-03 $ +// GEANT4 tag $Name: geant4-09-02-patch-04 $ // // //////////////////////////////////////////////////////////////////////// diff --git a/source/tracking/History b/source/tracking/History index 31042ef60c..81480a1e25 100644 --- a/source/tracking/History +++ b/source/tracking/History @@ -1,5 +1,5 @@ $Id: History,v 1.126.2.1 2009/03/03 11:08:38 gcosmo Exp $ -$Name: geant4-09-02-patch-03 $ +$Name: geant4-09-02-patch-04 $ ------------------------------------------------------------------- ========================================================= diff --git a/source/tracking/src/G4SteppingManager.cc b/source/tracking/src/G4SteppingManager.cc index 4d0a325d5c..dd2f4a1e1e 100644 --- a/source/tracking/src/G4SteppingManager.cc +++ b/source/tracking/src/G4SteppingManager.cc @@ -25,7 +25,7 @@ // // // $Id: G4SteppingManager.cc,v 1.49.2.1 2009/03/03 11:08:38 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-02-patch-03 $ +// GEANT4 tag $Name: geant4-09-02-patch-04 $ // //--------------------------------------------------------------- // diff --git a/source/visualization/OpenGL/include/G4OpenGLQtViewer.hh b/source/visualization/OpenGL/include/G4OpenGLQtViewer.hh index 3ba9d13a9e..38cf077aa4 100644 --- a/source/visualization/OpenGL/include/G4OpenGLQtViewer.hh +++ b/source/visualization/OpenGL/include/G4OpenGLQtViewer.hh @@ -25,7 +25,7 @@ // // // $Id: G4OpenGLQtViewer.hh,v 1.13.2.1 2009/03/13 09:02:57 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-02-patch-03 $ +// GEANT4 tag $Name: geant4-09-02-patch-04 $ // // // G4OpenGLQtViewer : Class to provide WindowsNT specific diff --git a/source/visualization/OpenGL/include/G4OpenGLViewer.hh b/source/visualization/OpenGL/include/G4OpenGLViewer.hh index 9c262796c0..498172620e 100644 --- a/source/visualization/OpenGL/include/G4OpenGLViewer.hh +++ b/source/visualization/OpenGL/include/G4OpenGLViewer.hh @@ -25,7 +25,7 @@ // // // $Id: G4OpenGLViewer.hh,v 1.23.2.1 2009/03/13 09:02:57 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-02-patch-03 $ +// GEANT4 tag $Name: geant4-09-02-patch-04 $ // // // Andrew Walkden 27th March 1996 diff --git a/source/visualization/OpenGL/include/G4OpenGLXViewer.hh b/source/visualization/OpenGL/include/G4OpenGLXViewer.hh index 1e2e8d0e40..477781c459 100644 --- a/source/visualization/OpenGL/include/G4OpenGLXViewer.hh +++ b/source/visualization/OpenGL/include/G4OpenGLXViewer.hh @@ -25,7 +25,7 @@ // // // $Id: G4OpenGLXViewer.hh,v 1.28.6.1 2009/03/13 09:02:57 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-02-patch-03 $ +// GEANT4 tag $Name: geant4-09-02-patch-04 $ // // // Andrew Walkden 7th February 1997 diff --git a/source/visualization/OpenGL/src/G4OpenGLImmediateQt.cc b/source/visualization/OpenGL/src/G4OpenGLImmediateQt.cc index b9c7573ac1..8f28efb852 100644 --- a/source/visualization/OpenGL/src/G4OpenGLImmediateQt.cc +++ b/source/visualization/OpenGL/src/G4OpenGLImmediateQt.cc @@ -25,7 +25,7 @@ // // // $Id: G4OpenGLImmediateQt.cc,v 1.4.2.1 2009/03/13 09:02:57 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-02-patch-03 $ +// GEANT4 tag $Name: geant4-09-02-patch-04 $ // // // OpenGLImmediateQt graphics system factory. diff --git a/source/visualization/OpenGL/src/G4OpenGLImmediateQtViewer.cc b/source/visualization/OpenGL/src/G4OpenGLImmediateQtViewer.cc index 6cda7e6cde..3de3367ed0 100644 --- a/source/visualization/OpenGL/src/G4OpenGLImmediateQtViewer.cc +++ b/source/visualization/OpenGL/src/G4OpenGLImmediateQtViewer.cc @@ -25,7 +25,7 @@ // // // $Id: G4OpenGLImmediateQtViewer.cc,v 1.7.2.1 2009/03/13 09:02:57 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-02-patch-03 $ +// GEANT4 tag $Name: geant4-09-02-patch-04 $ // // // Class G4OpenGLImmediateQtViewer : a class derived from G4OpenGLQtViewer and diff --git a/source/visualization/OpenGL/src/G4OpenGLImmediateWin32Viewer.cc b/source/visualization/OpenGL/src/G4OpenGLImmediateWin32Viewer.cc index d91cd61569..9d7d527838 100644 --- a/source/visualization/OpenGL/src/G4OpenGLImmediateWin32Viewer.cc +++ b/source/visualization/OpenGL/src/G4OpenGLImmediateWin32Viewer.cc @@ -25,7 +25,7 @@ // // // $Id: G4OpenGLImmediateWin32Viewer.cc,v 1.16.6.1 2009/03/13 09:02:57 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-02-patch-03 $ +// GEANT4 tag $Name: geant4-09-02-patch-04 $ // // // Class G4OpenGLImmediateWin32Viewer : a class derived from G4OpenGLWin32Viewer and diff --git a/source/visualization/OpenGL/src/G4OpenGLImmediateXViewer.cc b/source/visualization/OpenGL/src/G4OpenGLImmediateXViewer.cc index 832c874301..218aef6353 100644 --- a/source/visualization/OpenGL/src/G4OpenGLImmediateXViewer.cc +++ b/source/visualization/OpenGL/src/G4OpenGLImmediateXViewer.cc @@ -25,7 +25,7 @@ // // // $Id: G4OpenGLImmediateXViewer.cc,v 1.16.6.1 2009/03/13 09:02:57 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-02-patch-03 $ +// GEANT4 tag $Name: geant4-09-02-patch-04 $ // // // Andrew Walkden 7th February 1997 diff --git a/source/visualization/OpenGL/src/G4OpenGLImmediateXmViewer.cc b/source/visualization/OpenGL/src/G4OpenGLImmediateXmViewer.cc index bcb7af69cd..16ed53244b 100644 --- a/source/visualization/OpenGL/src/G4OpenGLImmediateXmViewer.cc +++ b/source/visualization/OpenGL/src/G4OpenGLImmediateXmViewer.cc @@ -25,7 +25,7 @@ // // // $Id: G4OpenGLImmediateXmViewer.cc,v 1.17.6.1 2009/03/13 09:02:57 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-02-patch-03 $ +// GEANT4 tag $Name: geant4-09-02-patch-04 $ // // // Andrew Walkden 10th February 1997 diff --git a/source/visualization/OpenGL/src/G4OpenGLQtViewer.cc b/source/visualization/OpenGL/src/G4OpenGLQtViewer.cc index 63e6039252..e00a7efaea 100644 --- a/source/visualization/OpenGL/src/G4OpenGLQtViewer.cc +++ b/source/visualization/OpenGL/src/G4OpenGLQtViewer.cc @@ -25,7 +25,7 @@ // // // $Id: G4OpenGLQtViewer.cc,v 1.30.2.1 2009/03/13 09:02:57 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-02-patch-03 $ +// GEANT4 tag $Name: geant4-09-02-patch-04 $ // // // G4OpenGLQtViewer : Class to provide Qt specific diff --git a/source/visualization/OpenGL/src/G4OpenGLStoredQt.cc b/source/visualization/OpenGL/src/G4OpenGLStoredQt.cc index 47fa754d33..ef7c472026 100644 --- a/source/visualization/OpenGL/src/G4OpenGLStoredQt.cc +++ b/source/visualization/OpenGL/src/G4OpenGLStoredQt.cc @@ -25,7 +25,7 @@ // // // $Id: G4OpenGLStoredQt.cc,v 1.9.2.1 2009/03/13 09:02:57 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-02-patch-03 $ +// GEANT4 tag $Name: geant4-09-02-patch-04 $ // // // OpenGLStoredQt graphics system factory. diff --git a/source/visualization/OpenGL/src/G4OpenGLStoredQtViewer.cc b/source/visualization/OpenGL/src/G4OpenGLStoredQtViewer.cc index d785bf37cd..ac7d205416 100644 --- a/source/visualization/OpenGL/src/G4OpenGLStoredQtViewer.cc +++ b/source/visualization/OpenGL/src/G4OpenGLStoredQtViewer.cc @@ -25,7 +25,7 @@ // // // $Id: G4OpenGLStoredQtViewer.cc,v 1.20.2.1 2009/03/13 09:02:57 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-02-patch-03 $ +// GEANT4 tag $Name: geant4-09-02-patch-04 $ // // // Class G4OpenGLStoredQtViewer : a class derived from G4OpenGLQtViewer and diff --git a/source/visualization/OpenGL/src/G4OpenGLStoredWin32Viewer.cc b/source/visualization/OpenGL/src/G4OpenGLStoredWin32Viewer.cc index 3ccbb40e5b..04938195d3 100644 --- a/source/visualization/OpenGL/src/G4OpenGLStoredWin32Viewer.cc +++ b/source/visualization/OpenGL/src/G4OpenGLStoredWin32Viewer.cc @@ -25,7 +25,7 @@ // // // $Id: G4OpenGLStoredWin32Viewer.cc,v 1.19.6.1 2009/03/13 09:02:57 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-02-patch-03 $ +// GEANT4 tag $Name: geant4-09-02-patch-04 $ // // // Class G4OpenGLStoredWin32Viewer : a class derived from G4OpenGLWin32Viewer and diff --git a/source/visualization/OpenGL/src/G4OpenGLStoredXViewer.cc b/source/visualization/OpenGL/src/G4OpenGLStoredXViewer.cc index 315f6dadb0..4c19142b11 100644 --- a/source/visualization/OpenGL/src/G4OpenGLStoredXViewer.cc +++ b/source/visualization/OpenGL/src/G4OpenGLStoredXViewer.cc @@ -25,7 +25,7 @@ // // // $Id: G4OpenGLStoredXViewer.cc,v 1.22.6.1 2009/03/13 09:02:57 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-02-patch-03 $ +// GEANT4 tag $Name: geant4-09-02-patch-04 $ // // // Andrew Walkden 7th February 1997 diff --git a/source/visualization/OpenGL/src/G4OpenGLStoredXmViewer.cc b/source/visualization/OpenGL/src/G4OpenGLStoredXmViewer.cc index 9d807a4564..3fcb0596db 100644 --- a/source/visualization/OpenGL/src/G4OpenGLStoredXmViewer.cc +++ b/source/visualization/OpenGL/src/G4OpenGLStoredXmViewer.cc @@ -25,7 +25,7 @@ // // // $Id: G4OpenGLStoredXmViewer.cc,v 1.22.6.1 2009/03/13 09:02:57 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-02-patch-03 $ +// GEANT4 tag $Name: geant4-09-02-patch-04 $ // // // Andrew Walkden 10th February 1997 diff --git a/source/visualization/OpenGL/src/G4OpenGLViewer.cc b/source/visualization/OpenGL/src/G4OpenGLViewer.cc index 1a6c62263e..8a4dbb0324 100644 --- a/source/visualization/OpenGL/src/G4OpenGLViewer.cc +++ b/source/visualization/OpenGL/src/G4OpenGLViewer.cc @@ -25,7 +25,7 @@ // // // $Id: G4OpenGLViewer.cc,v 1.41.2.1 2009/03/13 09:02:57 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-02-patch-03 $ +// GEANT4 tag $Name: geant4-09-02-patch-04 $ // // // Andrew Walkden 27th March 1996 diff --git a/source/visualization/OpenGL/src/G4OpenGLWin32Viewer.cc b/source/visualization/OpenGL/src/G4OpenGLWin32Viewer.cc index 5aa42877b5..143e018330 100644 --- a/source/visualization/OpenGL/src/G4OpenGLWin32Viewer.cc +++ b/source/visualization/OpenGL/src/G4OpenGLWin32Viewer.cc @@ -25,7 +25,7 @@ // // // $Id: G4OpenGLWin32Viewer.cc,v 1.17.6.1 2009/03/13 09:02:57 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-02-patch-03 $ +// GEANT4 tag $Name: geant4-09-02-patch-04 $ // // // G4OpenGLWin32Viewer : Class to provide WindowsNT specific diff --git a/source/visualization/OpenGL/src/G4OpenGLXViewer.cc b/source/visualization/OpenGL/src/G4OpenGLXViewer.cc index a8093078c2..8240fe6ce5 100644 --- a/source/visualization/OpenGL/src/G4OpenGLXViewer.cc +++ b/source/visualization/OpenGL/src/G4OpenGLXViewer.cc @@ -25,7 +25,7 @@ // // // $Id: G4OpenGLXViewer.cc,v 1.42.6.1 2009/03/13 09:02:57 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-02-patch-03 $ +// GEANT4 tag $Name: geant4-09-02-patch-04 $ // // // Andrew Walkden 7th February 1997 diff --git a/source/visualization/OpenGL/src/G4OpenGLXmViewer.cc b/source/visualization/OpenGL/src/G4OpenGLXmViewer.cc index 4963369379..a9bed61008 100644 --- a/source/visualization/OpenGL/src/G4OpenGLXmViewer.cc +++ b/source/visualization/OpenGL/src/G4OpenGLXmViewer.cc @@ -25,7 +25,7 @@ // // // $Id: G4OpenGLXmViewer.cc,v 1.24.6.1 2009/03/13 09:02:57 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-02-patch-03 $ +// GEANT4 tag $Name: geant4-09-02-patch-04 $ // // // Andrew Walkden 10th February 1997 diff --git a/source/visualization/OpenGL/src/G4OpenGLXmWindowHandlingCallbacks.cc b/source/visualization/OpenGL/src/G4OpenGLXmWindowHandlingCallbacks.cc index 904349cb36..96f26445ee 100644 --- a/source/visualization/OpenGL/src/G4OpenGLXmWindowHandlingCallbacks.cc +++ b/source/visualization/OpenGL/src/G4OpenGLXmWindowHandlingCallbacks.cc @@ -25,7 +25,7 @@ // // // $Id: G4OpenGLXmWindowHandlingCallbacks.cc,v 1.6.6.1 2009/03/13 09:02:57 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-02-patch-03 $ +// GEANT4 tag $Name: geant4-09-02-patch-04 $ // // // Andrew Walkden 16th June 1997 diff --git a/source/visualization/management/include/G4ViewParameters.hh b/source/visualization/management/include/G4ViewParameters.hh index 6141a3b94b..4e6af598b1 100644 --- a/source/visualization/management/include/G4ViewParameters.hh +++ b/source/visualization/management/include/G4ViewParameters.hh @@ -25,7 +25,7 @@ // // // $Id: G4ViewParameters.hh,v 1.28.2.1 2009/03/13 09:02:57 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-02-patch-03 $ +// GEANT4 tag $Name: geant4-09-02-patch-04 $ // // // John Allison 19th July 1996 diff --git a/source/visualization/management/include/G4ViewParameters.icc b/source/visualization/management/include/G4ViewParameters.icc index 2ecd860b6b..181b0c88bd 100644 --- a/source/visualization/management/include/G4ViewParameters.icc +++ b/source/visualization/management/include/G4ViewParameters.icc @@ -25,7 +25,7 @@ // // // $Id: G4ViewParameters.icc,v 1.16.6.1 2009/03/13 09:02:57 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-02-patch-03 $ +// GEANT4 tag $Name: geant4-09-02-patch-04 $ // // // John Allison 20th October 1996 diff --git a/source/visualization/management/include/G4VisManager.hh b/source/visualization/management/include/G4VisManager.hh index 3d6f6e830f..876256e538 100644 --- a/source/visualization/management/include/G4VisManager.hh +++ b/source/visualization/management/include/G4VisManager.hh @@ -25,7 +25,7 @@ // // // $Id: G4VisManager.hh,v 1.68.2.1 2009/03/13 09:02:57 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-02-patch-03 $ +// GEANT4 tag $Name: geant4-09-02-patch-04 $ // // diff --git a/source/visualization/management/include/G4VisManager.icc b/source/visualization/management/include/G4VisManager.icc index 9e6c15a85b..53eb65d7bf 100644 --- a/source/visualization/management/include/G4VisManager.icc +++ b/source/visualization/management/include/G4VisManager.icc @@ -25,7 +25,7 @@ // // // $Id: G4VisManager.icc,v 1.20.6.1 2009/03/13 09:02:57 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-02-patch-03 $ +// GEANT4 tag $Name: geant4-09-02-patch-04 $ // // // GEANT4 Visualization Manager - John Allison 02/Jan/1996. diff --git a/source/visualization/management/src/G4VViewer.cc b/source/visualization/management/src/G4VViewer.cc index be7a96b984..10fdde6d22 100644 --- a/source/visualization/management/src/G4VViewer.cc +++ b/source/visualization/management/src/G4VViewer.cc @@ -25,7 +25,7 @@ // // // $Id: G4VViewer.cc,v 1.24.6.1 2009/03/13 09:02:57 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-02-patch-03 $ +// GEANT4 tag $Name: geant4-09-02-patch-04 $ // // // John Allison 27th March 1996 diff --git a/source/visualization/management/src/G4ViewParameters.cc b/source/visualization/management/src/G4ViewParameters.cc index e7728d96c4..800157ad36 100644 --- a/source/visualization/management/src/G4ViewParameters.cc +++ b/source/visualization/management/src/G4ViewParameters.cc @@ -25,7 +25,7 @@ // // // $Id: G4ViewParameters.cc,v 1.31.2.1 2009/03/13 09:02:57 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-02-patch-03 $ +// GEANT4 tag $Name: geant4-09-02-patch-04 $ // // // John Allison 19th July 1996 diff --git a/source/visualization/management/src/G4VisCommandsViewer.cc b/source/visualization/management/src/G4VisCommandsViewer.cc index aa1c446586..835db4ab96 100644 --- a/source/visualization/management/src/G4VisCommandsViewer.cc +++ b/source/visualization/management/src/G4VisCommandsViewer.cc @@ -25,7 +25,7 @@ // // // $Id: G4VisCommandsViewer.cc,v 1.70.2.1 2009/03/13 09:02:57 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-02-patch-03 $ +// GEANT4 tag $Name: geant4-09-02-patch-04 $ // /vis/viewer commands - John Allison 25th October 1998 diff --git a/source/visualization/management/src/G4VisManager.cc b/source/visualization/management/src/G4VisManager.cc index d4d8c0d2ca..fc6a28b6c1 100644 --- a/source/visualization/management/src/G4VisManager.cc +++ b/source/visualization/management/src/G4VisManager.cc @@ -24,7 +24,7 @@ // ******************************************************************** // // $Id: G4VisManager.cc,v 1.115.2.1 2009/03/13 09:02:57 gcosmo Exp $ -// GEANT4 tag $Name: geant4-09-02-patch-03 $ +// GEANT4 tag $Name: geant4-09-02-patch-04 $ // // // GEANT4 Visualization Manager - John Allison 02/Jan/1996. -- GitLab