#---------------------------------------------------- bunch_tmp = Bunch() bunch.copyEmptyBunchTo(bunch_tmp) bunch_tmp.addPartAttr('ParticlePhaseAttributes') #---------------------------------------------------- # Define twiss analysis and output dictionary #---------------------------------------------------- bunchtwissanalysis = BunchTwissAnalysis() #Prepare the analysis class that will look at emittances, etc. get_dpp = lambda b, bta: np.sqrt(bta.getCorrelation(5,5)) / (b.getSyncParticle().gamma()*b.mass()*b.getSyncParticle().beta()**2) get_bunch_length = lambda b, bta: 4 * np.sqrt(bta.getCorrelation(4,4)) / (speed_of_light*b.getSyncParticle().beta()) get_eps_z = lambda b, bta: 1e9 * 4 * pi * bta.getEmittance(2) / (speed_of_light*b.getSyncParticle().beta()) output = Output_dictionary() output.addParameter('turn', lambda: turn) output.addParameter('intensity', lambda: bunchtwissanalysis.getGlobalMacrosize()) output.addParameter('n_mp', lambda: bunchtwissanalysis.getGlobalCount()) output.addParameter('gamma', lambda: bunch.getSyncParticle().gamma()) output.addParameter('mean_x', lambda: bunchtwissanalysis.getAverage(0)) output.addParameter('mean_xp', lambda: bunchtwissanalysis.getAverage(1)) output.addParameter('mean_y', lambda: bunchtwissanalysis.getAverage(2)) output.addParameter('mean_yp', lambda: bunchtwissanalysis.getAverage(3)) output.addParameter('mean_z', lambda: bunchtwissanalysis.getAverage(4)) output.addParameter('mean_dE', lambda: bunchtwissanalysis.getAverage(5)) output.addParameter('epsn_x', lambda: bunchtwissanalysis.getEmittanceNormalized(0)) output.addParameter('epsn_y', lambda: bunchtwissanalysis.getEmittanceNormalized(1)) output.addParameter('eps_z', lambda: get_eps_z(bunch, bunchtwissanalysis)) output.addParameter('bunchlength', lambda: get_bunch_length(bunch, bunchtwissanalysis)) output.addParameter('dpp_rms', lambda: get_dpp(bunch, bunchtwissanalysis)) if frozen or slicebyslice:
# Define twiss analysis and output dictionary #---------------------------------------------------- bunchtwissanalysis = BunchTwissAnalysis( ) #Prepare the analysis class that will look at emittances, etc. get_dpp = lambda b, bta: np.sqrt(bta.getCorrelation(5, 5)) / ( b.getSyncParticle().gamma() * b.mass() * b.getSyncParticle().beta()**2) get_bunch_length = lambda b, bta: 4 * np.sqrt(bta.getCorrelation(4, 4)) / ( speed_of_light * b.getSyncParticle().beta()) get_eps_z = lambda b, bta: 1e9 * 4 * pi * bta.getEmittance(2) / ( speed_of_light * b.getSyncParticle().beta()) output_file = 'Output/output.dat' output = Output_dictionary() output.addParameter('turn', lambda: turn) output.addParameter('intensity', lambda: bunchtwissanalysis.getGlobalMacrosize()) output.addParameter('n_mp', lambda: bunchtwissanalysis.getGlobalCount()) output.addParameter('gamma', lambda: bunch.getSyncParticle().gamma()) output.addParameter('mean_x', lambda: bunchtwissanalysis.getAverage(0)) output.addParameter('mean_xp', lambda: bunchtwissanalysis.getAverage(1)) output.addParameter('mean_y', lambda: bunchtwissanalysis.getAverage(2)) output.addParameter('mean_yp', lambda: bunchtwissanalysis.getAverage(3)) output.addParameter('mean_z', lambda: bunchtwissanalysis.getAverage(4)) output.addParameter('mean_dE', lambda: bunchtwissanalysis.getAverage(5)) output.addParameter('epsn_x', lambda: bunchtwissanalysis.getEmittanceNormalized(0)) output.addParameter('epsn_y', lambda: bunchtwissanalysis.getEmittanceNormalized(1)) output.addParameter('eps_z', lambda: get_eps_z(bunch, bunchtwissanalysis)) output.addParameter('bunchlength', lambda: get_bunch_length(bunch, bunchtwissanalysis))