Skip to content
Projects
Groups
Snippets
Help
Loading...
Sign in
Toggle navigation
W
White Rabbit Calibration
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
1
Issues
1
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
Wiki
Wiki
image/svg+xml
Discourse
Discourse
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Commits
Issue Boards
Open sidebar
Projects
White Rabbit Calibration
Commits
8260a545
Commit
8260a545
authored
Aug 25, 2017
by
Peter Jansweijer
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
added results for alpha, based on linear tangent (to compare with 5-term sellmeier result)
added linear alpha to dispersion plot
parent
cc0f0e65
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
30 additions
and
37 deletions
+30
-37
analyze_sellmeier.py
sw/insitu_alpha/analyze_sellmeier.py
+30
-37
No files found.
sw/insitu_alpha/analyze_sellmeier.py
View file @
8260a545
...
...
@@ -190,29 +190,29 @@ def spec_alpha(alpha):
############################################################################
def
calc_alpha_l1
(
lambda_1
,
lambda_2
,
crtt_lambda_1
,
crtt_lambda_2
,
fixed_lambda
):
"""
calc_alpha_l1 calculates the alpha factor for wavelength lambda l1.
For this caluculation we need two cable round trip times that were measured
using lamdba l1 and lambda l2 while both used a common fixed_lambda for the
return channel.
lambda_1, lambda_2, fixed_lambda -- <float> lambda's in [m]
crtt_l1, crtt_l2 -- <float> cable round trip times measured
at lambda_1 and lambda_2
returns:
alpha_lambda_1 -- <float>
"""
delta_lambda_1
=
lambda_1
-
fixed_lambda
delta_lambda_2
=
lambda_2
-
fixed_lambda
crtt_diff
=
crtt_lambda_1
-
crtt_lambda_2
lambda_diff
=
lambda_1
-
lambda_2
alpha_lambda_1
=
(
2
*
delta_lambda_1
*
crtt_diff
)
/
((
crtt_lambda_1
*
lambda_diff
)
-
(
crtt_diff
*
delta_lambda_1
))
return
(
alpha_lambda_1
)
#
def calc_alpha_l1(lambda_1, lambda_2, crtt_lambda_1, crtt_lambda_2, fixed_lambda):
#
"""
#
calc_alpha_l1 calculates the alpha factor for wavelength lambda l1.
#
For this caluculation we need two cable round trip times that were measured
#
using lamdba l1 and lambda l2 while both used a common fixed_lambda for the
#
return channel.
#
#
lambda_1, lambda_2, fixed_lambda -- <float> lambda's in [m]
#
crtt_l1, crtt_l2 -- <float> cable round trip times measured
#
at lambda_1 and lambda_2
#
#
returns:
#
alpha_lambda_1 -- <float>
#
#
"""
#
#
delta_lambda_1 = lambda_1 - fixed_lambda
#
delta_lambda_2 = lambda_2 - fixed_lambda
#
crtt_diff = crtt_lambda_1 - crtt_lambda_2
#
lambda_diff = lambda_1 - lambda_2
#
#
alpha_lambda_1 = (2 * delta_lambda_1 * crtt_diff)/((crtt_lambda_1 * lambda_diff) - (crtt_diff * delta_lambda_1))
#
return (alpha_lambda_1)
############################################################################
...
...
@@ -226,7 +226,7 @@ def calc_alpha(l, crtt_l, tangent, fixed_lambda):
l -- <float> lambda [m]
crtt_l -- <int> cable round trip time measured at lambda l
using fixed_lambda on the return channel [ps]
tangent
-- <float> [ps/nm]
tangent -- <float> [ps/nm]
fixed_lambda -- <float> fixed return channel lambda [m]
returns:
...
...
@@ -422,19 +422,10 @@ if __name__ == "__main__":
# again define the best fit line, now based on clean arrays:
ly_clean
=
[]
alpha_clean
=
[]
alpha_lin_clean
=
[]
fixed_lambda
=
itu_conv
.
itu_2_wavelength
(
fixed_itu_channel
)
### Test. Take ITU channel 11 as a refernce and calculate alpha for this
# wavelength using a scan over all other lambda's and crtt measurments
alpha_tst
=
[]
tst_lambda_1
=
crtt_array
[
"itu_wavelength"
][
0
]
# ITU channel 11 is refernce
tst_crtt_1
=
crtt_array
[
"crtt"
][
0
]
for
i
in
range
(
1
,
len
(
x_clean
)):
l2
=
x_clean
[
i
]
/
1e9
# convert back to [m]
crtt_l2
=
y_clean
[
i
]
alpha_tst
.
append
(
calc_alpha_l1
(
tst_lambda_1
,
l2
,
tst_crtt_1
,
crtt_l2
,
fixed_lambda
))
# Scan through all wavelengths and calculate the individual alpha's
# using the dispersion for that wavelength. The dispersion is the derivative
# of the group_delay that was found from the 5-term Sellmeier fit through the
...
...
@@ -450,6 +441,7 @@ if __name__ == "__main__":
clean_y
=
(
group_delay
(
i
,
popt
[
0
],
popt
[
1
],
popt
[
2
],
popt
[
3
],
popt
[
4
]))
dispersion
=
dispersion_coefficient
(
i
,
popt
[
1
],
popt
[
2
],
popt
[
3
],
popt
[
4
])
ly_clean
.
append
(
clean_y
)
alpha_lin_clean
.
append
(
calc_alpha
(
i
/
1e9
,
clean_y
,
tangent
*
1e9
,
fixed_lambda
))
alpha_clean
.
append
(
calc_alpha
(
i
/
1e9
,
clean_y
,
dispersion
,
fixed_lambda
))
fig
=
plt
.
figure
(
"CRTT versus ITU Channel number"
)
...
...
@@ -486,21 +478,22 @@ if __name__ == "__main__":
ax
.
set_xlabel
(
'Wavelenth [nm]'
)
ax
.
set_ylabel
(
'delayCoefficient'
)
#ax.set_ylabel('Alpha')
ax
.
text
(
0.01
,
0.95
,
'
dispersion coefficient derived using
5th order Sellmeier fit'
,
transform
=
ax
.
transAxes
)
ax
.
text
(
0.01
,
0.95
,
'
fiber delayCoefficient (alpha) derived using linear and
5th order Sellmeier fit'
,
transform
=
ax
.
transAxes
)
ax
.
axhline
(
0
,
color
=
'gray'
)
ax
.
axvline
(
fixed_lambda
*
1e9
,
color
=
'red'
)
ax
.
plot
(
x_clean
,
alpha_clean
)
ax
.
plot
(
x_clean
,
alpha_lin_clean
)
alpha_file
=
open
(
name
+
".out"
,
"w"
)
alpha_file
.
write
(
"file: "
+
insitu_file
+
"
\n
"
)
alpha_file
.
write
(
"outlier-count: "
+
str
(
outlier_cnt
)
+
"
\n
"
)
alpha_file
.
write
(
"first order linear fit tangent: "
+
str
(
tangent
)
+
" [ps]/[nm]
\n
"
)
alpha_file
.
write
(
"============================
\n
"
)
alpha_file
.
write
(
"ITU_Channel, Lambda, alpha, aplha(SPEC format), temperature
\n
"
)
alpha_file
.
write
(
"ITU_Channel, Lambda, alpha, aplha(SPEC format),
alpha_lineair,
temperature
\n
"
)
for
i
in
range
(
len
(
x_clean
)):
wavelength
=
x_clean
[
i
]
itu_ch
=
itu_conv
.
wavelength_2_itu
(
wavelength
/
1e9
)
alpha_file
.
write
(
str
(
itu_ch
)
+
", "
+
str
(
wavelength
)
+
", "
+
str
(
alpha_clean
[
i
])
+
", "
+
str
(
spec_alpha
(
alpha_clean
[
i
]))
+
", "
+
str
(
t_clean
[
i
])
+
"
\n
"
)
alpha_file
.
write
(
str
(
itu_ch
)
+
", "
+
str
(
wavelength
)
+
", "
+
str
(
alpha_clean
[
i
])
+
", "
+
str
(
spec_alpha
(
alpha_clean
[
i
]))
+
", "
+
str
(
alpha_lin_clean
[
i
])
+
", "
+
str
(
t_clean
[
i
])
+
"
\n
"
)
alpha_file
.
close
()
#pdb.set_trace()
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment