Esempio n. 1
0
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)
Esempio n. 2
0
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)
Esempio n. 3
0
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)
Esempio n. 4
0
                                 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.')
Esempio n. 5
0
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,
Esempio n. 6
0
                    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 )