示例#1
0
print "P[GeV/c] = ", P

b.addParticle(0., 0., 0., 0., 0., P)
b.compress()

# radius estimation
R = P * 1.0e9 / (c_light * b.charge() * 1.0)
print "R[m] = ", R
n_step = 1000
time_step = (2 * 3.1415926 * R / (c_light * P / E)) / n_step

fS = FieldSource()
extEff = ExternalEffects()
print "ExternalEffects name=", extEff.name()

tracker = RungeKuttaTracker(10000.0)
print "Entrance plane (a,b,c,d)=", tracker.entrancePlane()
print "Exit     plane (a,b,c,d)=", tracker.exitPlane()
print "Length[m]=", tracker.length()

print "Start tracking."
print "================================================"
print "Step_Index    x     y   z "
tracker.track(b, time_step * n_step, time_step, fS, extEff)
print "================================================"
print "Stop tracking."

print "time step=", tracker.timeStep()
print "Stop."

sys.exit(1)
b1 = Bunch()
b.copyBunchTo(b1)

twiss_analysis = BunchTwissAnalysis()

twiss_analysis.analyzeBunch(b)
print "============before=================="
print "X Twiss =", twiss_analysis.getTwiss(0)
print "Y Twiss =", twiss_analysis.getTwiss(1)
print "Z Twiss =", twiss_analysis.getTwiss(2)
#b.dumpBunch()

G = 30.0  # [T/m]
length = 0.1  # [m]
fieldSource = FieldSource(G)
tracker = RungeKuttaTracker(length)
print "Tracker Entrance plane (a,b,c,d)=", tracker.entrancePlane()
print "Tracker Exit     plane (a,b,c,d)=", tracker.exitPlane()
# the spatial eps is useless because we have quad field = 0 on axis for the syncPart
#tracker.spatialEps(0.00000000001)
# we have to specify the number of time steps
tracker.stepsNumber(40)
tracker.trackBunch(b, fieldSource)

twiss_analysis.analyzeBunch(b)
print "============after RK4 quad tracker==========="
print "Runge-Kutta N steps=", tracker.stepsNumber()
print "X Twiss =", twiss_analysis.getTwiss(0)
print "Y Twiss =", twiss_analysis.getTwiss(1)
print "Z Twiss =", twiss_analysis.getTwiss(2)
#b.dumpBunch()
示例#3
0
print "Start."

b = Bunch()
b.addParticle(0., 0., 0., 0., 0., 0.)
b.compress()

syncPart = b.getSyncParticle()
syncPart.kinEnergy(1.0)
print "synch. part. m=", syncPart.mass()
print "synch. part. p=", syncPart.momentum()

fS = FieldSource()
extEff = ExternalEffects()
print "ExternalEffects name=", extEff.name()

tracker = RungeKuttaTracker(2.0)
print "Entrance plane (a,b,c,d)=", tracker.entrancePlane()
print "Exit     plane (a,b,c,d)=", tracker.exitPlane()
print "Spatial Eps[m]=", tracker.spatialEps(0.0001)
print "Length[m]=", tracker.length()
print "steps number=", tracker.stepsNumber()
print "tracker.isOutside(0,0,2)=", tracker.isOutside(0, 0, 2)
print "tracker.isAfterEntrance(0,0,2)=", tracker.isAfterEntrance(0, 0, 2)
print "tracker.isBeforeExit(0,0,2)=", tracker.isBeforeExit(0, 0, 2)

print "Start tracking."
tracker.trackBunch(b, fS, extEff)
print "Stop tracking."

print "time step=", tracker.timeStep()
print "steps number=", tracker.stepsNumber()