diff --git a/ess/lib_tw.py b/ess/lib_tw.py index 24cfd77f1a1b36606ad73ea891819c9215462c21..96d176ef99c2cdf57608ab6f789337dfa4b55d2a 100644 --- a/ess/lib_tw.py +++ b/ess/lib_tw.py @@ -309,9 +309,15 @@ class PROJECT: class PARTRAN: ''' + Note: + - The list not complete. Add parameters as needed. - - 2016.01.18 + + History: + + - 2016.02.17: Changed how to identify the line of indices. + - 2016.02.17: Added a logic to avoid #/0 for LEBT. + ''' def __init__(self,file_name): @@ -324,7 +330,7 @@ class PARTRAN: with open(file_name) as file: for lin in file.readlines(): lin=lin.split() - if lin[0]=='####': + if '##' in lin[0]: idx_s =lin.index("z(m)" ); idx_gamma=lin.index("gama-1" ) idx_x =lin.index("x0" ); idx_y =lin.index("y0" ); idx_phs =lin.index("p0" ) idx_sigx =lin.index("SizeX" ); idx_sigy =lin.index("SizeY" ); idx_sigz=lin.index("SizeZ"); idx_sigp=lin.index("SizeP") @@ -340,7 +346,7 @@ class PARTRAN: for lin in file.readlines(): lin=lin.split() if flag ==1 : data.append(map(float,lin)) - if lin[0]=='####': flag=1 + if '##' in lin[0]: flag=1 data=array(data).transpose() # Instances @@ -351,6 +357,11 @@ class PARTRAN: self.halx =data[idx_halx ]; self.haly=data[idx_haly]; self.halz=data[idx_halp]; self.halp=data[idx_halp] self.Nptcl=data[idx_Nptcl]; self.loss=data[idx_loss] + # To avoid #/0 for LEBT + for i in range(len(self.s)): + if self.epsz[i]==0.0: self.epsz[i]=inf + if self.epsp[i]==0.0: self.epsp[i]=inf + # Additional instances self.gamma= data[idx_gamma]+1.0 self.beta = sqrt(1.0-1.0/self.gamma**2) @@ -364,6 +375,11 @@ class PARTRAN: self.alfz =-data[idx_alfz]/self.epsz*self.beta*self.gamma**3 self.alfp =-self.alfz + # Set epsz/epsp back to 0 + for i in range(len(self.s)): + if self.epsz[i]==inf: self.epsz[i]=0.0 + if self.epsp[i]==inf: self.epsp[i]=0.0 + # Convert to list (not necessary?) self.s =self.s.tolist() ; self.gamma=self.gamma.tolist(); self.beta=self.beta.tolist() self.x =self.x.tolist() ; self.y =self.y.tolist() ; self.z =self.z.tolist() ; self.phs =self.phs.tolist()