def addParticleData(particle, info, massValue, spinValue, parityValue, chargeValue, halflifeValue): if (massValue is not None): mass = massModule.double(info.PoPsLabel, massValue, quantityModule.stringToPhysicalUnit('amu')) particle.mass.add(mass) if (spinValue is not None): spin = spinModule.fraction(info.PoPsLabel, fractions.Fraction(spinValue), spinModule.baseUnit) particle.spin.add(spin) if (parityValue is not None): parity = parityModule.integer(info.PoPsLabel, parityValue, parityModule.baseUnit) particle.parity.add(parity) if (chargeValue is not None): charge = chargeModule.integer(info.PoPsLabel, chargeValue, chargeModule.baseUnit) particle.charge.add(charge) if (halflifeValue is not None): if (isinstance(halflifeValue, str)): halflife = halflifeModule.string(info.PoPsLabel, halflifeValue, halflifeModule.baseUnit) else: halflife = halflifeModule.double(info.PoPsLabel, halflifeValue, halflifeModule.baseUnit) particle.halflife.add(halflife)
def nuclides(Z, A, data): symbol = chemicalElementMiscModule.symbolFromZ[Z] isotopeID = chemicalElementMiscModule.isotopeSymbolFromChemicalElementIDAndA( symbol, A) keys = random.sample([key for key in data], len(data)) for index in keys: name = chemicalElementMiscModule.nuclideIDFromIsotopeSymbolAndIndex( isotopeID, index) nameLower = name[:1].lower() + name[1:] level = nuclideModule.particle(name) nucleus = level.nucleus atomicMass, nuclearMass, energy, charge, halflife, spin, parity = data[ index] energy = nuclearEnergyLevelModule.double( 'base', energy, quantityModule.stringToPhysicalUnit('keV')) level.energy.add(energy) if (atomicMass is not None): mass = massModule.double( 'base', atomicMass, quantityModule.stringToPhysicalUnit('amu')) level.mass.add(mass) if (nuclearMass is not None): mass = massModule.double( 'base', nuclearMass, quantityModule.stringToPhysicalUnit('amu')) nucleus.mass.add(mass) if (charge is not None): charge = chargeModule.integer( 'base', charge, quantityModule.stringToPhysicalUnit('e')) nucleus.charge.add(charge) if (halflife is not None): if (halflife == 'stable'): halflife = halflifeModule.string( 'base', halflife, quantityModule.stringToPhysicalUnit('s')) else: time, unit = halflife.split() halflife = halflifeModule.double( 'base', float(time), quantityModule.stringToPhysicalUnit(unit)) nucleus.halflife.add(halflife) if (spin is not None): spin = spinModule.fraction( 'base', spinModule.fraction.toValueType(spin), quantityModule.stringToPhysicalUnit('hbar')) nucleus.spin.add(spin) if (parity is not None): parity = parityModule.integer( 'base', parity, quantityModule.stringToPhysicalUnit('')) nucleus.parity.add(parity) database.add(level)
def nuclearLevel(Z, A, data): symbol = chemicalElementModule.symbolFromZ[Z] isotopeID = isotopeModule.isotopeIDFromElementIDAndA(symbol, A) keys = random.sample([key for key in data], len(data)) for index in keys: mass, energy, charge, halflife, spin, parity = data[index] name = nucleusModule.nucleusNameFromNucleusNameAndIndex( isotopeID, index) nucleus = nucleusModule.particle(name, index) energy = nuclearEnergyLevelModule.double( 'base', energy, quantityModule.stringToPhysicalUnit('keV')) nucleus.energy.add(energy) name = nucleusModule.levelNameFromIsotopeNameAndIndex(isotopeID, index) level = nuclearLevelModule.particle(name, nucleus) if (mass is not None): mass = massModule.double( 'base', mass, quantityModule.stringToPhysicalUnit('amu')) level.mass.add(mass) if (charge is not None): charge = chargeModule.integer( 'base', charge, quantityModule.stringToPhysicalUnit('e')) level.charge.add(charge) if (halflife is not None): time, unit = halflife.split() halflife = halflifeModule.double( 'base', float(time), quantityModule.stringToPhysicalUnit(unit)) level.halflife.add(halflife) if (spin is not None): spin = spinModule.fraction( 'base', spinModule.fraction.toValueType(spin), quantityModule.stringToPhysicalUnit('hbar')) level.spin.add(spin) if (parity is not None): parity = parityModule.integer( 'base', parity, quantityModule.stringToPhysicalUnit('')) level.parity.add(parity) database.add(level)
quantityModule.stringToPhysicalUnit('amu')) level.mass.add(mass) if (charge is not None): charge = chargeModule.integer('base', charge, quantityModule.stringToPhysicalUnit('e')) level.charge.add(charge) if (halflife is not None): halflife = halflifeModule.double( 'base', halflife, quantityModule.stringToPhysicalUnit('s')) level.halflife.add(halflife) if (spin is not None): spin = spinModule.fraction('base', spinModule.fraction.toValueType(spin), quantityModule.stringToPhysicalUnit('hbar')) level.spin.add(spin) if (parity is not None): parity = parityModule.integer('base', parity, quantityModule.stringToPhysicalUnit('')) level.parity.add(parity) isotope.add(level) xmli1 = isotope.toXML() print xmli1 isotope2 = isotopeModule.suite.parseXMLStringAsClass(xmli1) if (xmli1 != isotope2.toXML()): raise Exception('Fix me.')
print suite[0].pqu('s') print suite[0].pqu().getValueAs('s') print suite = halflifeModule.suite() h2 = halflifeModule.string('nucleus', 'stable', quantityModule.stringToPhysicalUnit('s')) suite.add(h2) print suite.toXML() suite2 = suite.parseXMLStringAsClass(suite.toXML()) if (suite2.toXML() != suite.toXML()): raise Exception('Fix me') print '\n============== SPIN ==============' fraction = quantityModule.fraction.toValueType("5/2") s1 = spinModule.fraction('nucleus', fraction, quantityModule.stringToPhysicalUnit('hbar')) xmls1 = s1.toXML() print xmls1 s2 = s1.parseXMLStringAsClass(xmls1) if (xmls1 != s2.toXML()): raise Exception('Fix me.') print suite = spinModule.suite() suite.add(s1) print suite.toXML() suite2 = suite.parseXMLStringAsClass(suite.toXML()) if (suite2.toXML() != suite.toXML()): raise Exception('Fix me') print '\n============== PARITY ==============' p1 = parityModule.integer('nucleus', -1,
except Exception, err : raise warningList.append( 'raise somewhere in "for MF12 in MF12_LO2" loop: MT%d, %s' % ( MT, str( err ) ) ) info.doRaise.append( warningList[-1] ) else : raise Exception( "Could not determine base MT for MF=12's MT=%s" % MTLO2 ) sys.stdout.flush( ) for warning in warningList : info.logs.write( " WARNING: %s\n" % warning, stderrWriting = True ) ignoreID = None for particleID, spinParity in info.particleSpins.items( ) : if( particleID == 'target' ) : ignoreID = reactionSuite.PoPs[reactionSuite.target].id for particleID, spinParity in info.particleSpins.items( ) : if( ignoreID == particleID ) : continue spin = spinModule.fraction( info.PoPsLabel, fractions.Fraction( spinParity[0] ), spinModule.baseUnit ) if( particleID == 'target' ) : particle = reactionSuite.PoPs[reactionSuite.target] else : particle = reactionSuite.PoPs[particleID] if isinstance(particle, (isotopeModule.suite, nuclearLevelModule.particle)): particle = particle.nucleus if( len( particle.spin ) == 0 ) : particle.spin.add( spin ) if( spinParity[1] ) : parity = spinParity[1].value particle.parity.add( parityModule.integer( info.PoPsLabel, parity, parityModule.baseUnit ) ) if( reconstructResonances and reactionSuite.resonances is not None and reactionSuite.resonances.reconstructCrossSection ): info.logs.write( ' Reconstructing resonances\n' ) reactionSuite.reconstructResonances( style=info.reconstructedStyle, accuracy=info.reconstructedAccuracy, verbose = verbose, thin=True )