예제 #1
0
calc2p5d = SpaceChargeForceCalc2p5D(sizeX, sizeY, sizeZ)
scLatticeModifications.setSC2p5DAccNodes(lattice, sc_path_length_min, calc2p5d)

print "SC nodes appied to the lattice"

#--------------------------------Tracking-----------------------------------------

print("tracking")
x_space0 = [(b.x(i), b.px(i)) for i in range(n_particles)]

bunchtwissanalysis = BunchTwissAnalysis()

bunchtwissanalysis.analyzeBunch(b)
Ex = bunchtwissanalysis.getEmittance(0)
Ey = bunchtwissanalysis.getEmittance(1)
x = bunchtwissanalysis.getCorrelation(0, 0)
y = bunchtwissanalysis.getCorrelation(2, 2)

emitX, emitY, xMean, yMean, turn = [Ex], [Ey], [x], [y], [0]
n_turns = 250
for i in range(n_turns):
    lattice.trackBunch(b, trackDict)
    #	if (i+1)%10==0 or i<9:
    bunchtwissanalysis.analyzeBunch(b)
    Ex = bunchtwissanalysis.getEmittance(0)
    Ey = bunchtwissanalysis.getEmittance(1)
    x = bunchtwissanalysis.getCorrelation(0, 0)
    y = bunchtwissanalysis.getCorrelation(2, 2)
    emitX.append(Ex)
    emitY.append(Ey)
    xMean.append(x)
예제 #2
0
                               lambda: bunchtwissanalysis.getAverage(2))
output_dictionary.addParameter('mean_yp',
                               lambda: bunchtwissanalysis.getAverage(3))
output_dictionary.addParameter('mean_z',
                               lambda: bunchtwissanalysis.getAverage(4))
output_dictionary.addParameter('mean_dE',
                               lambda: bunchtwissanalysis.getAverage(5))
output_dictionary.addParameter(
    'epsn_x', lambda: bunchtwissanalysis.getEmittanceNormalized(0))
output_dictionary.addParameter(
    'epsn_y', lambda: bunchtwissanalysis.getEmittanceNormalized(1))
output_dictionary.addParameter(
    'eps_z', lambda: bunchtwissanalysis.getEmittance(2) /
    (speed_of_light * bunch.getSyncParticle().beta()) * 1e9 * 4 * pi)
output_dictionary.addParameter(
    'bunchlength', lambda: np.sqrt(bunchtwissanalysis.getCorrelation(4, 4)) /
    (speed_of_light * bunch.getSyncParticle().beta()) * 4)
output_dictionary.addParameter(
    'dpp_rms', lambda: np.sqrt(bunchtwissanalysis.getCorrelation(5, 5)) /
    (bunch.getSyncParticle().gamma() * bunch.mass() * bunch.getSyncParticle().
     beta()**2))

# save initial distribution
mainbunch_file = 'output/mainbunch_start.dat'
bunch.dumpBunch(mainbunch_file)

#----------------------------------------------------
# Do some turns and dump particle information
#----------------------------------------------------

bunchtwissanalysis = BunchTwissAnalysis(