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)
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(