#---- transform to pyORBIT emittance[GeV*m] emittZ = emittZ*gamma**3*beta**2*mass betaZ = betaZ/(gamma**3*beta**2*mass) print " ========= PyORBIT Twiss ===========" print " aplha beta emitt[mm*mrad] X= %6.4f %6.4f %6.4f "%(alphaX,betaX,emittX*1.0e+6) print " aplha beta emitt[mm*mrad] Y= %6.4f %6.4f %6.4f "%(alphaY,betaY,emittY*1.0e+6) print " aplha beta emitt[mm*MeV] Z= %6.4f %6.4f %6.4f "%(alphaZ,betaZ,emittZ*1.0e+6) twissX = TwissContainer(alphaX,betaX,emittX) twissY = TwissContainer(alphaY,betaY,emittY) twissZ = TwissContainer(alphaZ,betaZ,emittZ) print "Start Bunch Generation." bunch_gen = SNS_Linac_BunchGenerator(twissX,twissY,twissZ) #set the initial kinetic energy in GeV bunch_gen.setKinEnergy(e_kin_ini) #set the beam peak current in mA bunch_gen.setBeamCurrent(50.0) #bunch_in = bunch_gen.getBunch(nParticles = 20000, distributorClass = WaterBagDist3D) bunch_in = bunch_gen.getBunch(nParticles = 20000, distributorClass = GaussDist3D) #bunch_in = bunch_gen.getBunch(nParticles = 20000, distributorClass = KVDist3D) print "Bunch Generation completed." #set up design accLattice.trackDesignBunch(bunch_in)
betaZ = betaZ / (gamma**3 * beta**2 * mass) print " ========= PyORBIT Twiss ===========" print " aplha beta emitt[mm*mrad] X= %6.4f %6.4f %6.4f " % (alphaX, betaX, emittX * 1.0e+6) print " aplha beta emitt[mm*mrad] Y= %6.4f %6.4f %6.4f " % (alphaY, betaY, emittY * 1.0e+6) print " aplha beta emitt[mm*MeV] Z= %6.4f %6.4f %6.4f " % (alphaZ, betaZ, emittZ * 1.0e+6) twissX = TwissContainer(alphaX, betaX, emittX) twissY = TwissContainer(alphaY, betaY, emittY) twissZ = TwissContainer(alphaZ, betaZ, emittZ) print "Start Bunch Generation." bunch_gen = SNS_Linac_BunchGenerator(twissX, twissY, twissZ) #set the initial kinetic energy in GeV bunch_gen.setKinEnergy(e_kin_ini) #set the beam peak current in mA bunch_gen.setBeamCurrent(38.0) bunch_in = bunch_gen.getBunch(nParticles=100000, distributorClass=WaterBagDist3D) #bunch_in = bunch_gen.getBunch(nParticles = 100000, distributorClass = GaussDist3D) #bunch_in = bunch_gen.getBunch(nParticles = 10000, distributorClass = KVDist3D) print "Bunch Generation completed." #set up design
print " aplha beta emitt X=", alphaX, betaX, emittX print " aplha beta emitt Y=", alphaY, betaY, emittY print " aplha beta emitt Z=", alphaZ, betaZ, emittZ twissX = TwissContainer(alphaX, betaX, emittX) twissY = TwissContainer(alphaY, betaY, emittY) twissZ = TwissContainer(alphaZ, betaZ, emittZ) xal_emittZ = emittZ / (gamma**3 * beta**2 * mass) xal_betaZ = betaZ * (gamma**3 * beta**2 * mass) print "XAL Twiss Longitudinal parameters alpha=", alphaZ, " beta=", xal_betaZ, " emittZ =", xal_emittZ print "===============================================" print "Start Bunch Generation." bunch_gen = SNS_Linac_BunchGenerator(twissX, twissY, twissZ) #set the beam peak current in mA bunch_gen.setBeamCurrent(38.0) bunch_in = bunch_gen.getBunch(nParticles=200000, distributorClass=WaterBagDist3D) bunch_gen.dumpParmilaFile(bunch_in, phase_init=-45.0, fileName="parmila_bunch.txt") print "Bunch Generation completed." #set up design accLattice.trackDesignBunch(bunch_in) print "Design tracking completed."