def get_chi_terms(MADTwiss,filesF,plane,name,ListOfZeroDPPX,ListOfZeroDPPY): # bmps files = filesF[0] dbpms = utils.bpm.intersect(files) dbpms = utils.bpm.model_intersect(dbpms, MADTwiss) # initiliasing variables XIT=[] XITi=[] XITr=[] XIrmsT=[] XI_phase_T=[] XI_phaseRMS_T=[] POS1=[] POS2=[] POS3=[] XITMODEL=[] XITMODELi=[] XITMODELr=[] XITMODEL_phase=[] BPMS=[] invarianceJx=[] invarianceJy=[] for i in range(0,len(dbpms)): # ask rogelio bn1=str.upper(dbpms[i][1]) BPMS.append(bn1) #### invariance for j in range(0,len(ListOfZeroDPPX)): # Since betax,rmsbbx,bpms(return_value[0:3]) are not used, slice the return value([3]) (vimaier) invariantJX = ( beta.beta_from_amplitude(MADTwiss,ListOfZeroDPPX,'H') )[3] # Since betay,rmsbby,bpms(return_value[0:3]) are not used, slice the return value([3]) (vimaier) invariantJY= ( beta.beta_from_amplitude(MADTwiss,ListOfZeroDPPY,'V') )[3] invarianceJx.append(invariantJX[0]) invarianceJy.append(invariantJY[0]) if DEBUG: print "invarianceJX:",invarianceJx #### model chi MADTwiss.chiterms(BPMS) if name=='chi3000': MODEL=MADTwiss.chi elif name=='chi4000': MODEL=MADTwiss.chi4000 for i in range(0,len(MODEL)): MODEL[i]=MODEL[i] amp=abs(MODEL[i]) ampi=MODEL[i].imag ampr=MODEL[i].real if(MODEL[i].real==0. ): phase=0 else: phase=np.arctan2(MODEL[i].imag,MODEL[i].real)%1 XITMODEL.append(amp) XITMODELi.append(ampi) XITMODELr.append(ampr) XITMODEL_phase.append(phase) XIMODEl=[XITMODEL,XITMODELi,XITMODELr,XITMODEL_phase] for i in range(0,len(dbpms)-2): XI=[] XIi=[] XIr=[] XIrms=[] XI_phase=[] XI_phaseRMS=[] bn1=str.upper(dbpms[i][1]) bn2=str.upper(dbpms[i+1][1]) bn3=str.upper(dbpms[i+2][1]) filej=ListOfZeroDPPX[0] pos1=filej.S[filej.indx[bn1]] pos2=filej.S[filej.indx[bn2]] pos3=filej.S[filej.indx[bn3]] POS1.append(pos1) POS2.append(pos2) POS3.append(pos3) imaM=XITMODELi[i] realM=XITMODELr[i] for j in range(0,len(files)): jx=files[j] # for chi3000 if name=='chi3000': phase1=jx.PHASE_20[jx.indx[bn1]] phase2=jx.PHASE_20[jx.indx[bn2]] phase3=jx.PHASE_20[jx.indx[bn3]] phase_SL=[phase1,phase2,phase3] terms=[3,0,0,0] amp1=jx.AMP_20[jx.indx[bn1]] amp2=jx.AMP_20[jx.indx[bn2]] amp3=jx.AMP_20[jx.indx[bn3]] amp=[amp1,amp2,amp3] # for chi4000 elif name=='chi4000': phase1=jx.PHASE_30[jx.indx[bn1]] phase2=jx.PHASE_30[jx.indx[bn2]] phase3=jx.PHASE_30[jx.indx[bn3]] phase_SL=[phase1,phase2,phase3] terms=[4,0,0,0] amp1=jx.AMP_30[jx.indx[bn1]] amp2=jx.AMP_30[jx.indx[bn2]] amp3=jx.AMP_30[jx.indx[bn3]] amp=[amp1,amp2,amp3] phase11=jx.MUX[jx.indx[bn1]] phase12=jx.MUX[jx.indx[bn2]] phase13=jx.MUX[jx.indx[bn3]] phase=[phase11,phase12,phase13] J=[ invarianceJx[j],invarianceJy[j]] chi = _compute_chi_terms(amp,phase_SL,phase,terms,J,'H',imaM,realM) XI.append(chi[0]) XIi.append(chi[1]) XIr.append(chi[2]) XI_phase.append(chi[3]) XI=np.array(XI) XIi=np.array(XIi) XIr=np.array(XIr) try: XIrms=math.sqrt(np.average(XI*XI)-np.average(XI)**2+2.2e-16) except: XIrms=0 XI_phase=np.array(XI_phase) try: XI_phaseRMS=math.sqrt(np.average(XI_phase*XI_phase)-np.average(XI_phase)**2+2.2e-16) except: XI_phaseRMS=0 XIT.append(np.average(XI)) XITi.append(np.average(XIi)) XITr.append(np.average(XIr)) XIrmsT.append(XIrms) XI_phase_T.append(np.average(XI_phase)) XI_phaseRMS_T.append(XI_phaseRMS) POS=[POS1,POS2,POS3] XItot=[XIT,XITi,XITr,XIrmsT,XI_phase_T,XI_phaseRMS_T] return [dbpms,POS,XItot,XIMODEl]
def Getoctopole(MADTwiss, plane, twiss_files, phaseI, Q, fname, fM, NAMES): """ for finding secondary lines of the octuple (@ Glenn Vanbavinckhove) """ # intersects BPMs dbpms = Utilities.bpm.intersect(twiss_files[0]) dbpms = Utilities.bpm.model_intersect(dbpms, MADTwiss) # value definition hMODELT = [] hMODELTi = [] hMODELTr = [] h_phase_MODELT = [] AT = [] A_RMST = [] phaseT = [] phase_RMST = [] hT = [] hTi = [] hTr = [] h_RMST = [] h_phaseT = [] h_phase_RMST = [] invarianceJx = [] invarianceJy = [] # finding the invariances for j in range(0, len(twiss_files[0])): singleFilex = [twiss_files[0][j]] singleFiley = [twiss_files[1][j]] # Since beta,rmsbb,bpms(return_value[0:3]) are not used, slice return value([3])(vimaier) invariantJx = (beta.beta_from_amplitude(MADTwiss, singleFilex, "H"))[3] # Since beta,rmsbb,bpms(return_value[0:3]) are not used, slice return value([3])(vimaier) invariantJy = (beta.beta_from_amplitude(MADTwiss, singleFiley, "V"))[3] invarianceJx.append(invariantJx) invarianceJy.append(invariantJy) # for the model for i in range(0, len(dbpms)): bpm = str.upper(dbpms[i][1]) # TODO: think about the thing with bpm_name_according_to_tw_file = tw.NAME[tw.indx[bpm_name]] # Maybe change name in twiss ctor to upper. bpmC = MADTwiss.NAME[MADTwiss.indx[bpm]] for j in range(0, len(NAMES)): try: name = NAMES[j] if name == bpmC: amp = abs(fM[j]) ampr = fM[i].real ampi = fM[j].imag phase = np.arctan2(ampi, ampr) % 1 hMODELT.append(amp) hMODELTr.append(ampr) hMODELTi.append(ampi) h_phase_MODELT.append(phase) except: print "name " + str(NAMES[j]) + " is not found in dictionary" hMODEL = [hMODELT, hMODELTi, hMODELTr, h_phase_MODELT] # calculation of f,q,h,qh for i in range(0, len(dbpms) - 1): bn1 = str.upper(dbpms[i][1]) bn2 = str.upper(dbpms[i + 1][1]) dell = phaseI[bn1][0] - 0.25 # internal value definition AS = [] A_SRMS = [] phaseS = [] phase_RMSS = [] hS = [] hSi = [] hSr = [] h_RMSS = [] h_phaseS = [] h_phase_RMSS = [] for j in range(0, len(twiss_files[0])): single_twiss = twiss_files[0][j] # for f4000 if fname == "f4000": [A, phi] = ComplexSecondaryLine( dell, single_twiss.AMP_30[single_twiss.indx[bn1]], single_twiss.AMP_30[single_twiss.indx[bn2]], single_twiss.PHASE_30[single_twiss.indx[bn1]], single_twiss.PHASE_30[single_twiss.indx[bn2]], ) factor = float(8 * invarianceJx[j][0] ** 1.5) # 1 to fit with model term = float(4 * Q[0]) termj = 4 M2M = 0.5 # ------ converting h = _convert_f_term_to_h_term(A, phi, termj, factor, term, M2M) # ----- adding the terms AS.append(A) phaseS.append(phi) hSi.append(h[0]) hSr.append(h[1]) hS.append(h[2]) h_phaseS.append(h[3]) # array and taking average for all the input files for one BPM AS = np.array(AS) A_SRMS = math.sqrt(np.average(AS * AS) - (np.average(AS)) ** 2 + 2.2e-16) phaseS = np.array(phaseS) try: phase_RMSS = math.sqrt(np.average(phaseS * phaseS) - (np.average(phaseS)) ** 2 + 2.2e-16) except: phase_RMSS = 0 hS = np.array(hS) hSi = np.array(hSi) hSr = np.array(hSr) try: h_RMSS = math.sqrt(np.average(hS * hS) - (np.average(hS)) ** 2 + 2.2e-16) except: h_RMSS = 0 h_phaseS = np.array(h_phaseS) try: phase_rms = np.average(h_phaseS * h_phaseS) - (np.average(h_phaseS)) ** 2 + 2.2e-16 except: phase_rms = 0 h_phase_RMSS = math.sqrt(phase_rms) # real output AT.append(np.average(AS)) A_RMST.append(A_SRMS) phaseT.append(np.average(phaseS)) phase_RMST.append(phase_RMSS) hT.append(np.average(hS)) hTi.append(np.average(hSi)) hTr.append(np.average(hSr)) h_RMST.append(h_RMSS) h_phaseT.append(np.average(h_phaseS)) h_phase_RMST.append(h_phase_RMSS) A = [AT, A_RMST, phaseT, phase_RMST] h = [hT, hTi, hTr, h_RMST, h_phaseT, h_phase_RMST] return [A, h, hMODEL, dbpms]
def Getsextupole(MADTwiss, amp20list, phase, tune, j, k): """ function written to calculate resonance driving terms """ # constructing complex amplitude and phase using two BPM method bpms = Utilities.bpm.intersect(amp20list) bpms = Utilities.bpm.model_intersect(bpms, MADTwiss) # Since beta,rmsbb(return_value[0:2]) are not used, slice return value([2:4])(vimaier) [bpms, invariantJx] = (beta.beta_from_amplitude(MADTwiss, amp20list, "H"))[2:4] sqrt2jx = invariantJx[0] Q = tune + float(str(MADTwiss.Q1).split(".")[0]) afactor = 1 - cos(2 * (j - k) * np.pi * Q) # (2*sin(np.pi*(j-k)*Q)) # print (2*sin(np.pi*(j-k)*Q)),(1-cos(6*np.pi*Q)) # sys.exit() pfactor = np.pi * (j - k) * Q htot = {} for i in range(len(bpms)): if i < (len(bpms) - 1): bpm = bpms[i][1] bpm1 = bpms[i + 1][1] s = bpms[i][0] else: bpm = bpms[i][1] bpm1 = bpms[0][1] s = bpms[i][0] amp_i_list = [] phase_i_list = [] hlist = [] hplist = [] flist = [] fplist = [] for fileamp in amp20list: amp_201 = fileamp.AMP_20[fileamp.indx[bpm]] * fileamp.AMPX[fileamp.indx[bpm]] amp_202 = fileamp.AMP_20[fileamp.indx[bpm1]] * fileamp.AMPX[fileamp.indx[bpm1]] phase_201 = fileamp.PHASE_20[fileamp.indx[bpm]] phase_202 = fileamp.PHASE_20[fileamp.indx[bpm1]] delta = phase[bpm.upper()][0] - 0.25 edelta = phase[bpm.upper()][1] # computing complex line # Since eampi,ephasei(return_value[2:4]) are not used, slice return value([0:1])(vimaier) ampi, phasei = (ComplexSecondaryLineExtended(delta, edelta, amp_201, amp_202, phase_201, phase_202))[0:2] if ampi != 0.0: amp_i_list.append(ampi) phase_i_list.append(phasei) if j == 3 and k == 0: factor = math.sqrt(2) ### factor fterm = ampi / (factor * 2 * j * sqrt2jx ** 2) pterm = (phasei - phase[bpm.upper()][0] + 0.25) % 1 hterm = fterm / afactor hpterm = (pterm - pfactor) % 1 elif j == 2 and k == 1: factor = math.sqrt(2) ### factor fterm = ampi / (factor * 2 * j * sqrt2jx ** 2) pterm = (phasei - phase[bpm][0] + 0.25) % 1 hterm = fterm / afactor hpterm = (pterm - pfactor) % 1 flist.append(fterm) fplist.append(pterm) hlist.append(hterm) hplist.append(hpterm) if len(amp_i_list) != 0.0: al = np.mean(amp_i_list) alstd = np.std(amp_i_list) pl = np.mean(phase_i_list) plstd = np.mean(phasei) fl = np.mean(flist) fstd = np.std(flist) fpl = np.mean(fplist) fpstd = np.std(fplist) hl = np.mean(hlist) hstd = np.std(hlist) hpl = np.mean(hplist) hpstd = np.std(hplist) htot[bpm] = [bpm, s, al, alstd, pl, plstd, fl, fstd, fpl, fpstd, hl, hstd, hpl, hpstd] return htot, afactor, pfactor
def get_chi_terms(MADTwiss,filesF,plane,name,ListOfZeroDPPX,ListOfZeroDPPY): # bmps files = filesF[0] dbpms = utils.bpm.intersect(files) dbpms = utils.bpm.model_intersect(dbpms, MADTwiss) # initiliasing variables XIT=[] XITi=[] XITr=[] XIrmsT=[] XI_phase_T=[] XI_phaseRMS_T=[] POS1=[] POS2=[] POS3=[] XITMODEL=[] XITMODELi=[] XITMODELr=[] XITMODEL_phase=[] BPMS=[] invarianceJx=[] invarianceJy=[] for i in range(0,len(dbpms)): # ask rogelio bn1=str.upper(dbpms[i][1]) BPMS.append(bn1) #### invariance for j in range(0,len(ListOfZeroDPPX)): # Since betax,rmsbbx,bpms(return_value[0:3]) are not used, slice the return value([3]) (vimaier) invariantJX = ( beta.beta_from_amplitude(MADTwiss,ListOfZeroDPPX,'H') )[3] # Since betay,rmsbby,bpms(return_value[0:3]) are not used, slice the return value([3]) (vimaier) invariantJY= ( beta.beta_from_amplitude(MADTwiss,ListOfZeroDPPY,'V') )[3] invarianceJx.append(invariantJX[0]) invarianceJy.append(invariantJY[0]) LOGGER.debug("invarianceJX: {}".format(invarianceJx)) #### model chi MADTwiss.chiterms(BPMS) if name=='chi3000': MODEL=MADTwiss.chi elif name=='chi4000': MODEL=MADTwiss.chi4000 for i in range(0,len(MODEL)): MODEL[i]=MODEL[i] amp=abs(MODEL[i]) ampi=MODEL[i].imag ampr=MODEL[i].real if(MODEL[i].real==0. ): phase=0 else: phase=np.arctan2(MODEL[i].imag,MODEL[i].real)%1 XITMODEL.append(amp) XITMODELi.append(ampi) XITMODELr.append(ampr) XITMODEL_phase.append(phase) XIMODEl=[XITMODEL,XITMODELi,XITMODELr,XITMODEL_phase] for i in range(0,len(dbpms)-2): XI=[] XIi=[] XIr=[] XIrms=[] XI_phase=[] XI_phaseRMS=[] bn1=str.upper(dbpms[i][1]) bn2=str.upper(dbpms[i+1][1]) bn3=str.upper(dbpms[i+2][1]) filej=ListOfZeroDPPX[0] pos1=filej.S[filej.indx[bn1]] pos2=filej.S[filej.indx[bn2]] pos3=filej.S[filej.indx[bn3]] POS1.append(pos1) POS2.append(pos2) POS3.append(pos3) imaM=XITMODELi[i] realM=XITMODELr[i] for j in range(0,len(files)): jx=files[j] # for chi3000 if name=='chi3000': phase1=jx.PHASE_20[jx.indx[bn1]] phase2=jx.PHASE_20[jx.indx[bn2]] phase3=jx.PHASE_20[jx.indx[bn3]] phase_SL=[phase1,phase2,phase3] terms=[3,0,0,0] amp1=jx.AMP_20[jx.indx[bn1]] amp2=jx.AMP_20[jx.indx[bn2]] amp3=jx.AMP_20[jx.indx[bn3]] amp=[amp1,amp2,amp3] # for chi4000 elif name=='chi4000': phase1=jx.PHASE_30[jx.indx[bn1]] phase2=jx.PHASE_30[jx.indx[bn2]] phase3=jx.PHASE_30[jx.indx[bn3]] phase_SL=[phase1,phase2,phase3] terms=[4,0,0,0] amp1=jx.AMP_30[jx.indx[bn1]] amp2=jx.AMP_30[jx.indx[bn2]] amp3=jx.AMP_30[jx.indx[bn3]] amp=[amp1,amp2,amp3] phase11=jx.MUX[jx.indx[bn1]] phase12=jx.MUX[jx.indx[bn2]] phase13=jx.MUX[jx.indx[bn3]] phase=[phase11,phase12,phase13] J=[ invarianceJx[j],invarianceJy[j]] chi = _compute_chi_terms(amp,phase_SL,phase,terms,J,'H',imaM,realM) XI.append(chi[0]) XIi.append(chi[1]) XIr.append(chi[2]) XI_phase.append(chi[3]) XI=np.array(XI) XIi=np.array(XIi) XIr=np.array(XIr) try: XIrms=math.sqrt(np.average(XI*XI)-np.average(XI)**2+2.2e-16) except: XIrms=0 XI_phase=np.array(XI_phase) try: XI_phaseRMS=math.sqrt(np.average(XI_phase*XI_phase)-np.average(XI_phase)**2+2.2e-16) except: XI_phaseRMS=0 XIT.append(np.average(XI)) XITi.append(np.average(XIi)) XITr.append(np.average(XIr)) XIrmsT.append(XIrms) XI_phase_T.append(np.average(XI_phase)) XI_phaseRMS_T.append(XI_phaseRMS) POS=[POS1,POS2,POS3] XItot=[XIT,XITi,XITr,XIrmsT,XI_phase_T,XI_phaseRMS_T] return [dbpms,POS,XItot,XIMODEl]
def Getoctopole(MADTwiss, plane, twiss_files, phaseI, Q, fname, fM, NAMES): ''' for finding secondary lines of the octuple (@ Glenn Vanbavinckhove) ''' # intersects BPMs dbpms = utils.bpm.intersect(twiss_files[0]) dbpms = utils.bpm.model_intersect(dbpms, MADTwiss) # value definition hMODELT = [] hMODELTi = [] hMODELTr = [] h_phase_MODELT = [] AT = [] A_RMST = [] phaseT = [] phase_RMST = [] hT = [] hTi = [] hTr = [] h_RMST = [] h_phaseT = [] h_phase_RMST = [] invarianceJx = [] invarianceJy = [] # finding the invariances for j in range(0, len(twiss_files[0])): singleFilex = [twiss_files[0][j]] singleFiley = [twiss_files[1][j]] # Since beta,rmsbb,bpms(return_value[0:3]) are not used, slice return value([3])(vimaier) invariantJx = (beta.beta_from_amplitude(MADTwiss, singleFilex, 'H'))[3] # Since beta,rmsbb,bpms(return_value[0:3]) are not used, slice return value([3])(vimaier) invariantJy = (beta.beta_from_amplitude(MADTwiss, singleFiley, 'V'))[3] invarianceJx.append(invariantJx) invarianceJy.append(invariantJy) # for the model for i in range(0, len(dbpms)): bpm = str.upper(dbpms[i][1]) #TODO: think about the thing with bpm_name_according_to_tw_file = tw.NAME[tw.indx[bpm_name]] #Maybe change name in twiss ctor to upper. bpmC = MADTwiss.NAME[MADTwiss.indx[bpm]] for j in range(0, len(NAMES)): try: name = NAMES[j] if name == bpmC: amp = abs(fM[j]) ampr = fM[i].real ampi = fM[j].imag phase = np.arctan2(ampi, ampr) % 1 hMODELT.append(amp) hMODELTr.append(ampr) hMODELTi.append(ampi) h_phase_MODELT.append(phase) except: print 'name ' + str(NAMES[j]) + ' is not found in dictionary' hMODEL = [hMODELT, hMODELTi, hMODELTr, h_phase_MODELT] #calculation of f,q,h,qh for i in range(0, len(dbpms) - 1): bn1 = str.upper(dbpms[i][1]) bn2 = str.upper(dbpms[i + 1][1]) dell = phaseI[bn1][0] - 0.25 # internal value definition AS = [] A_SRMS = [] phaseS = [] phase_RMSS = [] hS = [] hSi = [] hSr = [] h_RMSS = [] h_phaseS = [] h_phase_RMSS = [] for j in range(0, len(twiss_files[0])): single_twiss = twiss_files[0][j] # for f4000 if fname == 'f4000': [A, phi] = ComplexSecondaryLine( dell, single_twiss.AMP_30[single_twiss.indx[bn1]], single_twiss.AMP_30[single_twiss.indx[bn2]], single_twiss.PHASE_30[single_twiss.indx[bn1]], single_twiss.PHASE_30[single_twiss.indx[bn2]]) factor = float(8 * invarianceJx[j][0]**1.5) # 1 to fit with model term = float(4 * Q[0]) termj = 4 M2M = 0.5 #------ converting h = _convert_f_term_to_h_term(A, phi, termj, factor, term, M2M) #----- adding the terms AS.append(A) phaseS.append(phi) hSi.append(h[0]) hSr.append(h[1]) hS.append(h[2]) h_phaseS.append(h[3]) # array and taking average for all the input files for one BPM AS = np.array(AS) A_SRMS = math.sqrt(np.average(AS * AS) - (np.average(AS))**2 + 2.2e-16) phaseS = np.array(phaseS) try: phase_RMSS = math.sqrt( np.average(phaseS * phaseS) - (np.average(phaseS))**2 + 2.2e-16) except: phase_RMSS = 0 hS = np.array(hS) hSi = np.array(hSi) hSr = np.array(hSr) try: h_RMSS = math.sqrt( np.average(hS * hS) - (np.average(hS))**2 + 2.2e-16) except: h_RMSS = 0 h_phaseS = np.array(h_phaseS) try: phase_rms = np.average( h_phaseS * h_phaseS) - (np.average(h_phaseS))**2 + 2.2e-16 except: phase_rms = 0 h_phase_RMSS = math.sqrt(phase_rms) # real output AT.append(np.average(AS)) A_RMST.append(A_SRMS) phaseT.append(np.average(phaseS)) phase_RMST.append(phase_RMSS) hT.append(np.average(hS)) hTi.append(np.average(hSi)) hTr.append(np.average(hSr)) h_RMST.append(h_RMSS) h_phaseT.append(np.average(h_phaseS)) h_phase_RMST.append(h_phase_RMSS) A = [AT, A_RMST, phaseT, phase_RMST] h = [hT, hTi, hTr, h_RMST, h_phaseT, h_phase_RMST] return [A, h, hMODEL, dbpms]
def Getsextupole(MADTwiss, amp20list, phase, tune, j, k): ''' function written to calculate resonance driving terms ''' # constructing complex amplitude and phase using two BPM method bpms = utils.bpm.intersect(amp20list) bpms = utils.bpm.model_intersect(bpms, MADTwiss) # Since beta,rmsbb(return_value[0:2]) are not used, slice return value([2:4])(vimaier) [bpms, invariantJx] = (beta.beta_from_amplitude(MADTwiss, amp20list, 'H'))[2:4] sqrt2jx = invariantJx[0] Q = tune + float(str(MADTwiss.Q1).split(".")[0]) afactor = (1 - cos(2 * (j - k) * np.pi * Q)) pfactor = (np.pi * (j - k) * Q) htot = {} for i in range(len(bpms)): if i < (len(bpms) - 1): bpm = bpms[i][1] bpm1 = bpms[i + 1][1] s = bpms[i][0] else: bpm = bpms[i][1] bpm1 = bpms[0][1] s = bpms[i][0] amp_i_list = [] phase_i_list = [] hlist = [] hplist = [] flist = [] fplist = [] for fileamp in amp20list: amp_201 = fileamp.AMP_20[fileamp.indx[bpm]] * fileamp.AMPX[ fileamp.indx[bpm]] amp_202 = fileamp.AMP_20[fileamp.indx[bpm1]] * fileamp.AMPX[ fileamp.indx[bpm1]] phase_201 = fileamp.PHASE_20[fileamp.indx[bpm]] phase_202 = fileamp.PHASE_20[fileamp.indx[bpm1]] delta = phase[bpm.upper()][0] - 0.25 edelta = phase[bpm.upper()][1] #computing complex line # Since eampi,ephasei(return_value[2:4]) are not used, slice return value([0:1])(vimaier) ampi, phasei = (ComplexSecondaryLineExtended( delta, edelta, amp_201, amp_202, phase_201, phase_202))[0:2] if ampi != 0.0: amp_i_list.append(ampi) phase_i_list.append(phasei) if (j == 3 and k == 0): factor = math.sqrt(2) ### factor fterm = ampi / (factor * 2 * j * sqrt2jx**2) pterm = (phasei - phase[bpm.upper()][0] + 0.25) % 1 hterm = fterm / afactor hpterm = (pterm - pfactor) % 1 elif (j == 2 and k == 1): factor = math.sqrt(2) ### factor fterm = ampi / (factor * 2 * j * sqrt2jx**2) pterm = (phasei - phase[bpm][0] + 0.25) % 1 hterm = fterm / afactor hpterm = (pterm - pfactor) % 1 flist.append(fterm) fplist.append(pterm) hlist.append(hterm) hplist.append(hpterm) if len(amp_i_list) != 0.0: al = np.mean(amp_i_list) alstd = np.std(amp_i_list) pl = np.mean(phase_i_list) plstd = np.mean(phasei) fl = np.mean(flist) fstd = np.std(flist) fpl = np.mean(fplist) fpstd = np.std(fplist) hl = np.mean(hlist) hstd = np.std(hlist) hpl = np.mean(hplist) hpstd = np.std(hplist) htot[bpm] = [ bpm, s, al, alstd, pl, plstd, fl, fstd, fpl, fpstd, hl, hstd, hpl, hpstd ] return htot, afactor, pfactor