import xtrack as xt

def get_line():
    line = xt.Line.from_json('sample_cycle.json')
    ip_list = ['ipa.1','ipd.1','ipg.1','ipj.1']
    for ii in ip_list:
        line[f'beambeam_{ii}'].scale_strength = 0.0
    line.config.XTRACK_USE_EXACT_DRIFTS = True
    line.configure_radiation(model='mean',model_beamstrahlung='mean')
    return line
new_first_element_name = 'ca1.1'
######################################
line = get_line()
tw_init = line.twiss(eneloss_and_damping=True)
init_first_element_name = tw_init.name[0]
twiss_row = tw_init.rows[new_first_element_name]
co_guess = {'x':twiss_row.x[0],
            'px':twiss_row.px[0],
            'y':twiss_row.y[0],
            'py':twiss_row.py[0],
            'zeta':twiss_row.zeta[0],
            'delta':twiss_row.delta[0]}
line.cycle(name_first_element=new_first_element_name, inplace=True)
tw_ok = line.twiss(eneloss_and_damping=True,co_guess=co_guess)
#####################################
line = get_line()
tw_init = line.twiss(eneloss_and_damping=True)
init_first_element_name = tw_init.name[0]
line.cycle(name_first_element=new_first_element_name, inplace=True)
tw_notOK = line.twiss(eneloss_and_damping=True,co_search_at=init_first_element_name)
################################
