40m QIL Cryo_Lab CTN SUS_Lab TCS_Lab OMC_Lab CRIME_Lab FEA ENG_Labs OptContFac Mariner WBEEShop
  TCS elog, Page 2 of 5  Not logged in ELOG logo
New entries since:Wed Dec 31 16:00:00 1969
Entry  Wed Jun 30 00:00:13 2010, Kathryn and Won, Computing, Hartmann sensor, rms of centroid position changes rms_plot_shuffle.jpgrms_plot_shuffle.jpgrms_plot_noshuffle.jpgeLOG.zip

Given below is a brief overview of calculating rms of spot position changes to test the accuracy/precision of the centroiding code. Centroids are obtained by summing over the array of size 30 by 30 around peak pixels, as opposed to the old method of using matlab built-in functions only. Still peak pixel positions were obtained by using builtin matlab function. Plese see the code detect_peaks_bygrid.m for bit more details.

 

My apologies for codes being well modularised and bit messy...

 

Please unzip the attached file to find the matlab codes.

The rest of this log is mainly put together by Kathryn.

 

Won

 

(EDIT/PS) The attached codes were run with raw image data saved on the hard disk, but it should be relatively easy to edit the script to use images acquired real time. We are yet to play with real-time images, and still operating under Windows XP...

---
When calculating the rms, the code outputs the results of two
different methods. The "old" method is using the built-in matlab
method while the "new" method is one Won constructed and seems to
give a result that is closer to the expected value. In calculating
and plotting the rms, the following codes were used:

- centroid_statics_raw_bygrid.m (main script run to do the analysis)
- process_raw.m (takes raw image data and converts them into 2D array)
- detect_peaks_bygrid.m (returns centroids obtained by old and new methods)
- shuffle.m (used to shuffle the images before averaging)

The reference image frame was obtained by averaging 4000 image frames,
the test image frames were obtained by averaging 1, 2, 5, 10 ... 500,
1000 frames respectively, from the remaining 1000 images.

In order to convert rms values in units of pixels to wavefront
aberration, do the following:

aberration = rms * pixel_width * hole_spacing / lever_arm

pixel_width: 12 micrometer
hole_spacing: about 37*12 micrometer
lever_arm: 0.01 meter

rms of 0.00018 roughly corresponds to lambda over 10000.

Note: In order to get smaller rms values the images had to be shuffled
before taking averages. By setting shuffle_array (in
centroid_statics_raw_bygrid.m) to be false one can
turn off the image array shuffling.

N_av        rms

1     0.004018866673087
2     0.002724680286563
5     0.002319477846009
10    0.001230553835673
20    0.000767638027270
50    0.000432681002432
100   0.000427139665006
200   0.000270955332752
500   0.000226521040455
1000  0.000153760240692

fitted_slope = -0.481436501422376

Here are some plots:

rms_plot_shuffle.jpgrms_plot_noshuffle.jpg

---

Next logs will be about centroid testing with simulated images, and wavefront changes due to the change in the camera temperature!

(PS) I uploaded the same figure twice by accident, and the site does not let me remove a copy!...

Entry  Thu Jul 1 09:40:13 2010, James Kunert, Misc, Hartmann sensor, SURF Log 8 -- more SLED characterization 8x

As I started setting up my next experiment, I noticed that the beam size from the SLED appeared to be larger than expected from previous analysis. It was therefore necessary to conduct further experiments to characterize the divergence angle of the beam.

First, I set up the photodetector attached to an SLED and mounted a razor blade on a translational stage, in the same manner as done previously. All of these components were the exact same ones used in the previous beam size experiment. The only differences in the components of the apparatus were as follows: first, the photodetector was placed considerably closer to the SLED source than was done previously. Second, a different lens was used to focus the light onto the photodetector. Lens LX082 from the lenskit was used, which is a one-inch lens of focal length f=50.20mm.

Experiment 1: Columnated Beam Size Measurement

Before repeating the previous experiment, the following experiment was done: the beam was columnated by placing the lens 50.20mm away from the source and then adjusting until columnation was observed. Columnation was confirmed by setting a mirror in the optical path of the beam directing it to the other side of the room. The position of the lens along the optical axis was adjusted until the beam exiting the lens did not change in size across the length of the table and appeared to be roughly the same size as the spot on the opposite side of the room (as gauged roughly by the apparent size on an IR card and through an IR viewer).

Then,the translational stage onto with the laser was mounted was placed after the lens against the ruler clamped to the table, and beam size was measured using the same experimental procedure used to find the width in the previous experiment. The only variation in the experimental procedure was that measurements were not taken strictly at 0.5V intervals; rather, intensity readings were taken for 28 different intensity outputs. The following measurements were collected:


x(mm)   V(V)
13.00  7.25
12.00  7.24
10.80   7.18
10.15   7.09
9.50   6.92
9.30   6.86
9.00   6.74
8.75   6.61
8.50   6.47
8.25   6.31
8.00   6.12
7.75   5.92
7.50   5.69
7.30   5.49
7.15   5.33
7.00   5.17
6.75   4.88
6.50   4.58
6.25   4.27
6.00   3.95
5.75   3.63
5.50   3.32
5.25   3.02
5.00   2.729
4.60   2.306
4.50   2.205
4.25   1.981
4.00 1.770
ambient 0.585

When fit to gsbeam.m using lsqcurvefit, this yielded a width of 4.232mm. Since the beam is columnated through the lens, we know that it is approximately f=50.2mm from the source. Thus the divergence angle is approximately 0.084.

At this point, to double-check that the discrepency between this value and the previous experiment was not a result of a mistake in the function, I wrote a simpler function to go through the steps of using lsqcurvefit and plotting the fit curve versus the data automatically, 'manualbeam.m' (attached), which simply fits a curve to one set of data from a constant z-value. Using this one-by-one on each z-value in the previous experiment, it was shown that the slope of the widths was still ~0.05, so this discrepency was not the result of a mistake in the previous function somewhere.

Experiment 2: Blocked Beam Analysis 2

I then placed the razor before the lens in the beampath and repeated the previous experiment exactly. See the previous eLog for details on experimental procedure. Sets of measurements were taken at 6 different z-values, and widths were found using manualbeam.m in MATLAB. A curve of the calculated widths versus the z-position of the stage on the ruler is below:

BeamSpot_Exp3.tif

Note that this appears to be consistant with the first experiment.

Experiment 3: Direct Beam Measurements on CCD

The front-plate of the Hartmann sensor was replaced with the new invar design (on a related note, the thread on the front plate needs a larger chamfer). In doing this, the Hartmann plate was removed. The sensor was moved much closer to the SLED along the optical axis, and an optical filter of OD 0.7 was screwed into the new frontplate. This setup allows for the direct imaging of the intensity of the beam, as shown below:

directbeam.PNG

The spots and distortions on the image are from dust and other blemishes on the optical filter, as was confirmed by rotating the filter and observing the subsequent rotation of each feature.

Note that in some images, there may be a jump in intensity in the middle of the image. This is believed to be due to a inconsistant gain between the two sides of the image.

The means of the intensities of each row and each column will be Gaussian, and thus can be fit to a Gaussian using lsqcurvefit. Function 'gauss_beam1D.m' was written and this function was fit to using function 'autogaussfit1', which automatically imports the data from .raw files, fits Gaussians to the means of each row and column, and plots everything.

An example of the fit for the means of the columns of one image is as follows:

beamfit100mm.PNG

 And for the rows:

beamfit100mmRows.PNG

Note that for all the fits, the fitting generally looks a little better along the row than along the column (which is true here, as well).

The following procedure was used to calculate the change of the beam width as a function of distance: the left edge of the base of the Hartmann sensor was measured against a ruler which was clamped to the table. The ruler position z was recorded. Then, preliminary images would be taken and the exposure time would be adjusted as needed. The exposure time was then noted. Then, an image was taken and curves were fit to it, and the width was calculated. This was done for 15 different positions of the Hartmann sensor along the optical axis.

The calculated widths vs. displacements plot from this can be seen below:

DirectBeams1.tif

Note that the row width and column width are not the same, implying that the beam is not circularly symmetric and is thusly probably off alignment by a little bit. Also, the calculated slopes are different than the value of 0.085 acquired from the previous two measurements. Further investigation into the beam size and divergence angle is required to finally put this question to rest.

Entry  Sun Jul 4 06:45:50 2010, Kathryn and Won, Computing, Hartmann sensor, analyzing the wavefront aberration eLOG.zipwf_aberration_plot_hightemp_byintegration.jpgwf_aberration_plot_hightemp_fitted.jpg

Happy Fourth of July!

The following is a brief overview of how we are analyzing the wavefront aberration and includes the aberration parameters calculated for 9 different temperature differences. So far we are still seeing the cylindrical power even after removing the tape/glue on the Hartmann plate. Attached are the relevant matlab codes and a couple of plots of the wavefront aberration.

We took pictures when the camera was in equilibrium at room temperature and then at each degree increase in camera temperature as we heated the room using the air conditioner. For each degree increase in camera temperature, we compared the spot positions at the increased temperature to the spot positions at room temperature. We used the following codes to generate the aberration parameters and make plots of the wavefront aberration:

-build_M.m (builds 8 by 8 matrix M from centroid displacements)
-wf_aberration_temperature_bygrid.m (main script)
-wf_from_parms.m (generates 2D aberration array from aberation parameters)
-intgrad2.m (generates 2D aberration array from an interpolated array of centroid displacements)

In order to perform the "inverse gradient" method to obtain contours, we first interpolated the centroid displacement vectors to generate a square array. As this array has some NaN (not a number) values, we cropped out some outer region of the array and used array values from (200,200) to (800,800). Sorry we forgot to put that part of the code in wf_aberration_temperature_bygrid.m.

The main script wf_aberration_temperature_bygrid.m needs to be revised so that the sign conventions are less confusing... We will update the code later.

The initial and final temperature values are as follows:

 

  Hand-held Digitizer Board Sensor Board
Initial 30.8 44.4 36.0
Final 40.8 51.2 43.2

 

Aberration parameters:


1) Comparing high temp (+10)  with room temp


        p: 1.888906773203923e-004
       al: -0.295042766811686
      phi: 0.195737681653530
        c: -0.001591869846958
        s: -0.003826146141562
        b: 0.098283157674967
       be: -0.376038636781319
        a: 5.967617809296910


2) Comparing +9 with room temp


        p: 1.629083055002727e-004
       al: -0.222506109890745
      phi: 0.193334452094940
        c: -0.001548838746542
        s: -0.003404217451916
        b: 0.091368295953142
       be: -0.351830698303612
        a: 5.764068008962653


3) Comparing +8 with room temp


        p: 1.485283322069376e-004
       al: -0.212605187544093
      phi: 0.206716196097728
        c: -0.001425962488852
        s: -0.003148796701331
        b: 0.089936286297599
       be: -0.363538909377296
        a: 5.546514425485094


4) Comparing +7 with room temp


        p: 1.284124028380585e-004
       al: -0.163672705473379
      phi: 0.229219952949728
        c: -0.001452457146947
        s: -0.002807207555944
        b: 0.084090100490331
       be: -0.379195428095102
        a: 5.289173743478881


5) Comparing +6 with room temp


        p: 1.141756950753851e-004
       al: -0.149439038317734
      phi: 0.240503450300707
        c: -0.001350015836130
        s: -0.002529240946848
        b: 0.078118977034120
       be: -0.326704416216547
        a: 4.847406652448727


6) Comparing +5 with room temp


        p: 8.833496828581757e-005
       al: -0.071871278822766
      phi: 0.263210114512376
        c: -0.001257787180513
        s: -0.002095618522105
        b: 0.069587080420443
       be: -0.335912998511077
        a: 4.542557551218057


7) Comparing +4 with room temp


        p: 6.217428324604411e-005
       al: 0.019965235199575
      phi: 0.250991433584904
        c: -0.001266061216964
        s: -0.001568527823273
        b: 0.058323732750548
       be: -0.289315790283207
        a: 3.957825468583509


8) Comparing +3 with room temp


        p: 4.781068895714900e-005
       al: 0.140720713391208
      phi: 0.270865276786418
        c: -0.001228146894728
        s: -0.001371110045136
        b: 0.052794990899554
       be: -0.273968130963666
        a: 3.591187350052610


9) Comparing +2 with room temp


        p: 2.491163442408281e-005
       al: 0.495136135872766
      phi: 0.220727346409557
        c: -9.897729773516012e-004
        s: -0.001076008621974
        b: 0.048467660428427
       be: -0.280879088681660
        a: 3.315430577872808


10) Comparing +1 with room temp


       p: 8.160828332639811e-006
      al: 1.368853902659128
     phi: 0.116300954280238
       c: -6.149390553733007e-004
       s: -3.621216621887707e-004
       b: 0.025454969698557
      be: -0.242584267252882
       a: 1.809039775332749

The first plot is of the wavefront aberration obtained by integrating the gradient of the aberration and the second plot fits the aberration according to the aberration parameters so is smoother since it is an approximation.


Entry  Tue Jul 6 21:57:19 2010, James Kunert, Misc, Hartmann sensor, SURF Log -- SLED fiber output temporal analysis 6x

In the previous log, I describe the direct measurement of the fiber output beam using the Hartmann sensor with the plate removed. In order to analyze how these properties might change as a function of time, we left the camera running over the holiday weekend, Dr. Brooks having written a bash script which took images from the sensor every 500 seconds. This morning I wrote a MATLAB script to automatically analyze all of these images and plot the fit parameters as a function of time (weekendbeamtime.m, attached). Note that the formatiing of a few of the following graphs was edited manually after being outputted by the program (just to note why the plots look different than the code might imply).

The following plots were made:

Amplitude as a function of time:

Amplitude.png

Amplitude again, focused in with more analysis:

Amplitude2.png

 

Offset level:

Offset.png

 

Beam Size:

BeamSize.png

 

Centroid Displacement (note the axis values, it's fairly zoomed in):

CentroidDisplacement.png

Note that these values were converted into radians by approximating the fiber-output/CCD distance and dividing this from the displacement in mm (after converting from pixels). This distance was approximated by assuming a divergence angle of 0.085 and a beam size of ~5.1mm (being a value inbetween the horizontal and vertical beam sizes calculated). This gave a value of ~60mm, which was confirmed as plausible by a quick examination in the lab.

In the first three plots, there are obvious temporary effects which seem to cause the values to fluctuate much more rapidly than they do for the rest of the duration. It is suspected that this could be related to temperature changes within the sensor as the camera begins taking images. Further investigation (tomorrow) will investigate these effects further, while collecting temperature data.

Entry  Thu Jul 15 20:06:37 2010, James K, Misc, Hartmann sensor, SURF Log: Thermally Induced Defocus Experiments pydefoc.mpyanalyze.mpyimportsingle.mpyimportM.mframesumexport2.py

A quick write-up on recent work can be found at: Google Docs

 

I can't find a Tex interpreter or any other sort of equation editor on the eLog, is why I kept it on Google Docs for now instead of transferring it over.

 

--James

 

Entry  Tue Jul 20 15:45:51 2010, Aidan, Computing, General, Add fixed IP addresses to local machines in TCS lab 

http://nodus.ligo.caltech.edu:8080/AdhikariLab/859

Entry  Tue Jul 20 18:13:06 2010, Aidan, Computing, General, Added TCS channels to frame builder 

 http://nodus.ligo.caltech.edu:8080/AdhikariLab/860

 contents of tcs_daq: /target/TCS_westbridge.db

grecord(ai,"C4:TCS-ATHENA_ADC0")
{
field(DTYP,"ATHENA")
field(INP,"#C0 S0")
        field(SCAN,".1 second")
}
grecord(ai,"C4:TCS-ATHENA_ADC1")
{
       field(DTYP,"ATHENA")
field(INP,"#C0 S1")
        field(SCAN,".1 second")
}
grecord(ai,"C4:TCS-ATHENA_ADC2")
{
        field(DTYP,"ATHENA")
        field(INP,"#C0 S2")
        field(SCAN,".1 second")
}
grecord(ai,"C4:TCS-ATHENA_ADC3")
{
        field(DTYP,"ATHENA")
        field(INP,"#C0 S3")
        field(SCAN,".1 second")
}
grecord(ai,"C4:TCS-ATHENA_ADC4")
{
        field(DTYP,"ATHENA")
        field(INP,"#C0 S4")
        field(SCAN,".1 second")
}
grecord(ai,"C4:TCS-ATHENA_ADC5")
{
        field(DTYP,"ATHENA")
        field(INP,"#C0 S5")
        field(SCAN,".1 second")
}
grecord(ai,"C4:TCS-ATHENA_ADC6")
{
        field(DTYP,"ATHENA")
        field(INP,"#C0 S6")
        field(SCAN,".1 second")
}
grecord(ai,"C4:TCS-ATHENA_ADC7")
{
        field(DTYP,"ATHENA")
        field(INP,"#C0 S7")
        field(SCAN,".1 second")
}
grecord(ai,"C4:TCS-ATHENA_ADC8")
{
        field(DTYP,"ATHENA")
        field(INP,"#C0 S8")
        field(SCAN,".1 second")
}
grecord(ai,"C4:TCS-ATHENA_ADC9")
{
        field(DTYP,"ATHENA")
        field(INP,"#C0 S9")
        field(SCAN,".1 second")
}
grecord(ai,"C4:TCS-ATHENA_ADC10")
{
        field(DTYP,"ATHENA")
        field(INP,"#C0 S10")
        field(SCAN,".1 second")
}
grecord(ai,"C4:TCS-ATHENA_ADC11")
        field(DTYP,"ATHENA")
        field(INP,"#C0 S11")
        field(SCAN,".1 second")
}
grecord(ai,"C4:TCS-ATHENA_ADC12")
        field(DTYP,"ATHENA")
        field(INP,"#C0 S12")
        field(SCAN,".1 second")
}
grecord(ai,"C4:TCS-ATHENA_ADC13")
        field(DTYP,"ATHENA")
        field(INP,"#C0 S13")
        field(SCAN,".1 second")
}
grecord(ai,"C4:TCS-ATHENA_ADC14")
        field(DTYP,"ATHENA")
        field(INP,"#C0 S14")
        field(SCAN,".1 second")
}
grecord(ai,"C4:TCS-ATHENA_ADC15")
        field(DTYP,"ATHENA")
        field(INP,"#C0 S15")
        field(SCAN,".1 second")
}
grecord(ao,"C4:TCS-ATHENA_DAC0")
{
        field(DTYP,"ATHENA")
        field(OUT,"#C0 S0")
        field(HOPR,"32768")
        field(LOPR,"-32768")
}
 
grecord(ao,"C4:TCS-ATHENA_DAC1")
{
        field(DTYP,"ATHENA")
        field(OUT,"#C0 S1")
}
grecord(bi,"bi0")
{
        field(SCAN,".1 second")
field(DTYP,"ATHENA")
field(INP,"#C0 S8")
        field(ZNAM,"zero")
        field(ONAM,"one")
}
grecord(bo,"C4:TCS-ATHENA_BO0")
{
        field(DOL,"HeartBeat")
        field(OMSL,"closed_loop")
        field(DTYP,"ATHENA")
        field(OUT,"#C0 S1")
        field(ZNAM,"zero")
        field(ONAM,"one")
}
grecord(bo,"C4:TCS-ATHENA_BO1")
{
        field(DOL,"LevelAlarm")
        field(OMSL,"closed_loop")
        field(DTYP,"ATHENA")
        field(OUT,"#C0 S2")
        field(ZNAM,"zero")
        field(ONAM,"one")
}
grecord(bo,"C4:TCS-ATHENA_BO2")
{
        field(DOL,"Pressure_OK")
        field(OMSL,"closed_loop")
        field(DTYP,"ATHENA")
        field(OUT,"#C0 S3")
        field(ZNAM,"zero")
        field(ONAM,"one")
}
 
 

 

Entry  Thu Jul 22 11:02:59 2010, Aidan, Computing, General, Restarted hartmann machine 

hartmann had started responding to requests to log-in with the a request to change the password. Attempts to change the password proved unsuccessful. I tried to access the machine locally to change the password but I couldn't the display started, so I had to reboot it.

 

 

Entry  Thu Jul 22 21:46:55 2010, James Kunert, Misc, Hartmann sensor, Hartmann Sensor Thermal Defocus Measurement Noise & Ambient Light Effects 72210b_ambient.png

As discussed during the teleconference, a series of experiments have been conducted which attempt to measure the thermally induced defocus in the Hartmann sensor measurement. However, there was a limiting source of noise which caused a very large displacement of the centroids between images, making the images much too noisy to properly analyze.

The general setup of this series of experiments is as follows: the fiber output from the SLED was mounted about one meter away from the Hartmann sensor. No other optics were placed in the optical path. Everything except for the Hartmann sensor was enclosed (a box was constructed out of wall segments and posterboard, with a hole cut in the end which allowed the beam to propagate into the sensor. The sensor was a short distance from the end of the box, less than a centimeter. There was no obvious difference in test images taken with the lights on and the lights off, which previously suggested to me that ambient light would not have a large effect). Temperature variations in the sensor were induced by changing the set temperature of the lab with the thermostat. A python script was used to take cumulative sums of 200 images (taken at 11Hz) every ~5 minutes.

This overly large centroid displacement appeared only in certain areas of the images. However, changing the orientation of the plate appeared to change the regions which were noisy. That is, if the orientation of the Hartmann plate was not changed between measurements, the noise would appear in the same regions in consecutive experiments (even in experiments conducted on different days). However, if the orientation of the Hartmann plate was changed between measurements, the noise would appear in a different region in the next experiment. This suggests that the noise is perhaps due to a physical phenomenon which would change with the orientation of the plate.

There were a few hypotheses which attempted to explain this noise but were shown to not be the likely cause. I hypothesized that the large thermal expansion coefficient of the aluminum camera housing could be inducing a stress on the invar frontplate, causing the Hartmann plate to warp. This hypothesis was tested by loosening the screws which attach the front and back portion of the frontplate (such that the Hartmann plate was not strongly mechanically coupled with the rest of the frontplate) and running another iteration of the experiment. The noisy regions were seen to still appear, indicating that thermally induced stress was not the cause of the distortion. Furthermore, experiments done while the sensor was in relative thermal equilibrium over long periods still showed noisy regions, and there was no apparent correlation between noise magnitude and sensor temperature for any experiment, indicating that thermal effects in general were not responsible.

Another suspected cause was the increased noise at intensity levels of 128 (as discussed in a previous eLog). However, it was observed that there was no apparent difference in the prevalence of 128-count pixels between the noisy regions and the cleaner regions, indicating that this was not the cause either.

A video was made which shows vector plots of centroid displacements for each summed image relative to the first image taken in an experiment, and was posted as an unlisted youtube video at: http://www.youtube.com/watch?v=HUH1tHRr98I

The length of each vector in the video is proportional to the magnitude of the displacement. The localization of the noise can be seen. Notice also the sudden appearance and disappearance of the noise at images 19 and 33, indicating that the cause of the noise is relatively sudden and does not vary smoothly.

Another video showing a logarithmic plot of the absolute value of the difference of each image from the first image (for the same experiment as previous) can be seen here: http://www.youtube.com/watch?v=_CiaMpw9Ig0

Notice there are jumps in the background level which appear to correspond with the disappearance and appearance of the noisy regions in the centroids (at images 18 and 32) (I forgot to manually set the framerate on these last three .avi's, so they go by a little too quickly, but it's still all there). The one-image delay between the intensity shift and centroid noise shift is perhaps related to the fact that the analysis uses the previous image centroids as the reference to find the new image centroid locations.

A video showing histograms of the intensity of each pixel in an image (within the intensity range of 50 and 140 in the averaged summed-image) for this same experiment can be seen at: http://www.youtube.com/watch?v=MogPd-vaWn4

Notice that the peak of the distribution corresponding to the background appears to shift by ~5 counts at images 18 and 32.

 

An experiment was then done which had the exact same procedure except that it was done at a stabilized lab temperature and with the SLED turned off, such that only the background appears in each image. A logarithmic plot of the absolute value of the difference in intensity at each pixel for each image can be seen at: http://www.youtube.com/watch?v=Y66wL5usN18

Other work was being done in the lab throughout the day, so the lights were on for every image but one. I made a point of turning off the lights while the 38th image was being taken. The framerate of the linked video is unfortunately a little too fast to really see what goes on (I adjusted the framerate while viewing it in MATLAB but forgot to do so for the AVI), but you can clearly see a major change in the image during the 38th image, and during that image only (it looks like a red 'flash' at the 38th frame, near the very end). The only thing that was changed while taking this specific image was the ambient light level, so this major difference must be due to ambient light. A plot of the difference between images 38 and 1 is shown below:

72210b_ambient.png

Note that the maximum difference between the images is 1107 levels, which for the 200 images in each summed image corresponds to an average shift of ~5.5 levels. This is of a very similar magnitude to the shift that can be seen in the histogram of the previous experiment. This suggests that changes in ambient light levels are perhaps somehow responsible for the noisy regions of the image. Note also the non-uniformity of the ambient light; such a non-uniform change could certainly shift the centroid positions.

One question is how, exactly, this change might have propagated into the analysis. The shape of the background level change appears to be very different from the shape of the noisy regions seen for this plate configuration. This is something which I need to examine further; this, combined with the fact that the changes in the noise appear to occur one image after the actual change in intensities, suggests to me that there could perhaps be some subtle things going on with my data analysis procedures which I don't currently fully understand.

Still, I highly suspect that ambient light is the root cause of the noisy regions. It would be a remarkable coincidence if the centroid displacement shift was not ultimately due to the observed intensity shift, or if the intensity shift was not due to a change in ambient light (since the intensity shift in the histogram analysis and ambient light change in the background analysis are observed to correspond to roughly the same magnitude of intensity change). I had initially suspected that effects from ambient light would be negligible since, while taking test images while setting up each experiment, the image did not appear to change based upon whether I had the lights on or off. I checked this a few times, but did not examine the images closely enough to be able to detect such a small non-uniform change in the intensity of each image.

If ambient light was responsible, this could also perhaps explain why the location of the noise appeared to depend on the orientation of the plate. The Hartmann plate would be in the optical path of any ambient light leaking in, so a change in the orientation of the plate could perhaps change the way that the ambient light was propagating onto the sensor (especially since the Hartmann plates are slightly warped and not perfectly planar). That's all purely speculation at this point, but it's something that I intend to investigate further.

I tried analyzing some previous data by subtracting part of the background, but was unsuccessful at reducing the noise in the results. I attempted to reduce the background in previous data by setting all values below a certain threshold equal to zero (before inputting the image into the centroiding function). However, the maximum threshold which I could use before getting an error message was ~130. If I set the threshold to, say, 135, I received an error from the centroiding function that the image was 'too dissimilar to the hex grid'. I did analysis of the images with a threshold of 130, but this still left random patches of background spaced between the spots in each image. The presence of only patches of background as opposed to the complete background actually increased the level of noise in the results by about a factor of 3. I would need to come up with a better method of subtracting the background level if I wanted to actually reduce the noise in this data.

The next step in this work, I think, will perhaps be to better enclose the system from ambient light to where I'm confident that it could have little or no effect. If noisy regions were not seen to appear after this was done, that would more or less confirm that ambient light was the cause of all this trouble. Hopefully, if ambient light is indeed the cause of the noise, reducing it will enable an accurate and reliable measurement of thermally induced defocus within the Hartmann sensor.

Entry  Fri Jul 23 12:33:51 2010, Aidan, Computing, Hartmann sensor, Invar clamp scatter 

I illuminated the Hartmann sensor with the output of a fiber placed ~1m away.

I noticed that the illumination was not uniform, rather there was some sort of 'burst' or 'star' right near the center of the image. This turned out to be due to the Hartmann plate clamps - it disappeared when I removed those. It appears that there is scatter off the inner surface of the holes through the clamp plates. I'm not sure if it's from the front or back plates.

Needs further investigation ...

Entry  Fri Jul 23 12:38:58 2010, Aidan, Computing, Hartmann sensor, Images for Dalsa dark_0000.jpgbright_0000.jpg

Attached are the background and 80% illumination (~uniform spatially uniform) images that Dalsa requested.

Note that the gain of the taps does not appear to be balanced.

 

Entry  Fri Jul 23 10:33:08 2010, Aidan, Computing, Hartmann sensor, Dalsa camera ADC 8th digitizer error  histogram_of_dalsa_intensity.pdf

I plotted a histogram of the total intensity of the Hartmann sensor when illuminated and found that the 128 count problem extends all the way up through the distribution. This isn't unreasonable since that digitizer is going to be called on mutliple times.

First things first, the value of 128 equals a 1 in the 8th digitizer, so for a 16-bit number in binary, it looks like this: 0000 0000 1000 0000 and in hex-code 080

The values of the peaks in the attached distribution are as follows:

 

Number of counts Hex Code

128

 080
384  180
640  280
896  380
1152  480
1408  580
1664  680
1920  780
2176  880
2432  980
2688  A80
2944  B80
3200  C80

 

    Reply  Fri Jul 23 19:52:49 2010, Aidan, Computing, Hartmann sensor, Dalsa camera ADC 8th digitizer error  image-location-of-excess_pixel_count_pixels.jpg

I've attached an image that shows the locations of those pixels that record a number of counts = (2*n-1)*128. 

The image is the sum of 200 binary images where pixels are given values of 1 if their number of counts = (2*n-1)*128 and 0 otherwise.

The excess of counts is clearly coming from the left hand tap. This is good news because the two taps have independent ADCs and it suggests that it is only a malfunctioning ADC on the LHS that is giving us this problem.

Quote:

I plotted a histogram of the total intensity of the Hartmann sensor when illuminated and found that the 128 count problem extends all the way up through the distribution. This isn't unreasonable since that digitizer is going to be called on mutliple times.

First things first, the value of 128 equals a 1 in the 8th digitizer, so for a 16-bit number in binary, it looks like this: 0000 0000 1000 0000 and in hex-code 080

The values of the peaks in the attached distribution are as follows:

 

Number of counts Hex Code

128

 080
384  180
640  280
896  380
1152  480
1408  580
1664  680
1920  780
2176  880
2432  980
2688  A80
2944  B80
3200  C80

 

 

Entry  Sat Jul 24 10:50:14 2010, Aidan, Electronics, Hartmann sensor, Lab Temperature and HWS temperature: pre-indium 

 Hour-long trend puts the lab temperature at 19.51C

Dalsa temperature:

 

Camera Temperature on Digitizer Board: 41.0 Celsius
Camera Temperature on Sensor Board: 32.9 Celsius
OK>
 
There is currently no Indium in the HWS.

 

Entry  Sun Jul 25 16:24:56 2010, Aidan, Computing, SLED, Superlum SLED test integrated with DAQ - new channel names 

 I added some new channels to the Athena DAQ that record the diagnostic channels from the Superlum SLED.

  • C4:TCS-ATHENA_I_SET_VOLTS:  - the set current signal in Volts (1V = 1A)
  • C4:TCS-ATHENA_I_ACTUAL_VOLTS:   - a signal proportional to the actual current flowing to the SLED (1V = 1A)
  • C4:TCS-ATHENA_I_LIM_VOLTS: - the current limit signal in volts (1V = 1A)
  • C4:TCS-ATHENA_TEMP_SENS_V:   - the signal from the on-board temperature sensor [thermistor] (1V = 10kOhm ?)
  • C4:TCS-ATHENA_PD_VOLTAGE: - the signal from the on-board photodetector (1V = 1A?)

The ioc that handles the EPICS channels is on tcs_daq(10.0.1.34) in /target/TCS_westbridge.db

The channels are added to the frame builder in /cvs/cds/caltech/chans/daq/C4TCS.ini

Currently, the driver for the SLED is ON but the current to the SLED is off. This is to check that the zero value of the PD_VOLTAGE signal doesn't wander.

Also, the input noise of the Athena is around +/- 10 counts (where 2^15 counts = 10V) which is a pretty poor 3mV.

Entry  Mon Jul 26 09:42:30 2010, Aidan, Computing, SLED, Long term test on SLED started - Day 0 SLED_superlum_long_term_test_0001A.pdfSLED_superlum_long_term_test_0001B.pdf

 I set up the SLED to test its long term performance. The test began, after a couple of false starts, around 9:15AM this morning.

The output of the fiber-optic patch cord attached to the SLED is illuminating a photo-detector. The zero-level on the PD was 72.7mV (with the lights on). Once the PD was turned on the output was ~5.50 +/- 0.01V. This is with roughly 900uW exiting the SLED.

The instructions from Superlum suggest limiting the amount of power coupled back into the fiber to less than 3%. With the current setup, the fiber is approximately 2" from the photodetector. What is the power coupled back into the fiber?

Assume a worst case of 100% of the light reflected from the PD, the wavelength is 830nm and a waist size of about 6um radius at the output of the fiber. The beam size at 4" (from the fiber output to the PD and back again) or ~100mm from the fiber is about 4.4mm radius. Therefore about (6um/4.4mm)^2 or ~2ppm will be coupled back into the fiber. This is sufficiently small.

The attached plots from dataviewer show measurements from the SLED (on-board photodetector, on-board temperature sensor, current setpoint, current limit, current to diode) over the last 15 hours.

Entry  Mon Jul 26 12:17:25 2010, Aidan, Electronics, Hartmann sensor, Added Indium to HWS indium-01.jpgindium-03.jpgindium-05.jpgindium-02.jpgindium-04.jpg

 I added some 0.004" thick indium sheet to the copper heat spreaders and and the heat sinks on the side of the HWS to try and improve the thermal contact. Once installed the steady state temperature of the sensor was the same as before. It's possible that the surface of the copper is even more uneven than 0.004".

 

 

Entry  Mon Jul 26 18:47:12 2010, James K, Misc, Hartmann sensor, Hex Grid Analysis Errors and Thermal Defocus Noise centerror.PNGcentinit.pnghexgrid.png72010a.png72010a_nohex.PNG

My previous eLog details how the noise in Hartmann Sensor defocus measurements appears to vary with ambient light. New troubleshooting analysis reveals that the rapid shifts in the noise were still related to the ambient light, sort of, but that ambient light is not the real issue. Rather, the noise was the result of some trouble with the centroiding algorithm.

The centroiding functions I have been using can be found on the SVN under /users/aidan/cit_centroid_code. When finding centroids for non-uniform intensity distributions, it is desirable to avoid simply using a single threshold level to isolate individual spots, as dimmer spots may be below this threshold and would therefore not be "seen" by the algorithm. The centroiding functions used here get around this issue by initially setting a relatively high threshold to find the centroids of the brighter spots, and then fitting a hexagonal close-packed array to these spots so as to be able to infer where the rest of the spots are located. Centroiding is then done within small boxes around each estimated centroid location (as determined by the hexagonal array). The functions "find_hex_grid.m" and "flesh_out_hex_grid.m" serve the purpose of finding this hexagonal grid. However, there appear to be bugs in these functions which compromise the ability of the functions to accurately locate spots and their centroids.

The centroiding error can be clearly seen in the following plot of calculated centroids plotted against the raw image from which they were calculated:

centerror.PNG

At the bottom of the image, it can be seen that the functions fail at estimating the location of the spots. Because of this, centroiding is actually being done on a small box surrounding each point which consists only of the background of the image. This can explain why these centroids were calculated to have much larger displacements and shifted dramatically with small changes in ambient light levels. The centroiding algorithm was being applied to the background surrounding each of these points, so it's very reasonable to believe that a non-uniform background fluctuation could cause a large shift in the calculated centroid of each of these regions.

It was determined that this error arose during the application of the hex grid by going through the centroiding functions step-by-step to narrow down where specifically the results appeared to be incorrect. The function's initial estimate for the centroids right before the application of the hex grid  is shown plotted against the original image:

centinit.png

The centroids in this image appear to correspond well to the location of each spot, so it does not appear that the error arises before this point in the function. However, when flesh_out_hex_grid and its subfunction find_hex_grid were called, they produced the following hexagonal grid:

hexgrid.png

It can be seen in this image that the estimated "spot locations" (the intersections of the grid) near the bottom of the image differ from the actual spot locations. The centroiding algorithm is applied to small regions around each of these intersections, which explains why the calculated "spot centroids" appear at incorrect locations.

It will be necessary to fix the hexagonal grid fitting so as to allow for accurate centroiding over non-uniform intensity distributions. However, recent experiments in measuring thermally induced defocus produce images with a fairly uniform distribution. It should therefore be possible to find the centroids of the images from these experiments to decent accuracy by simply temporarily bypassing the hexagonal-grid fitting functions. To demonstrate this, I analyzed some data from last week (experiment 72010a). Without bypassing the hex-grid functions, analysis yielded the following results:

72010a.png

However, when hexagonal grid fitting was bypassed, analysis yielded the following:

72010a_nohex.PNG

The level of noise in the centroid displacement vs. centroid location plot, though still not ideal, is seen to decrease by nearly two orders of magnitude. This indicates that bypassing or fixing the problems with the hexagonal grid fitting functions should enable a more accurate measurement of thermally induced defocus in future experiments.

Entry  Tue Jul 27 08:31:10 2010, Aidan, Electronics, SLED, Long term SLED test - Day 1 SLED_superlum_long_term_test_0002A.pdf

 The measurement from the on-board PD of the Superlum SLED seems to be falling. This effect started around 5PM last night which is right about the time we moved the position of the PD that the SLED is illuminating on the optical table (via optical fiber).

Curiously, the current set point and delivered current to the SLED are dropping as well. 

Entry  Wed Jul 28 18:32:12 2010, Aidan, Electronics, SLED, SLED long term test - Day 2 SLED_superlum_long_term_test_0003A.pdf

Here's the data from the last 2 1/2 days of running the SLED. The decrease in photo-current measured by the on-board photo-detector is consistent with the decrease in the current set-point and the delivered current, but it is not clear why these should be changing.

Strictly speaking I should add some analysis that shows that delta_PD_voltage_measured = delta_I_set_measured * [delta_PD_voltage/delta_I_set (I_set)]_calculated ...

    Reply  Thu Jul 29 10:09:19 2010, Aidan, Electronics, SLED, SLED long term test - Day 2 superlum_SLED_ATR.pdf

I've attached the Acceptance Test Report data from SUPERLUM for this SLED. I've also determined the expected percentage decrease in power/photo-current per mA drop in forward current.

The measured decrease in forward current over the last 2 1/2 days is around 1.4mA from around 111mA. The expected drop in power is thus (4.5% per mA)*(1.4mA) = 6.3%.

The drop in photo-current is around 37.5mA to 35mA = 2.5mA. The percentage drop is around 100*(2.5mA)/(36.3mA) = 6.9%. 

Therefore, the drop in measured power is consistent with what we would expect given the decrease in forward current (which is consistent with the drop in the set point). Why the set-point is dropping is still a mystery.

Quote:

Here's the data from the last 2 1/2 days of running the SLED. The decrease in photo-current measured by the on-board photo-detector is consistent with the decrease in the current set-point and the delivered current, but it is not clear why these should be changing.

Strictly speaking I should add some analysis that shows that delta_PD_voltage_measured = delta_I_set_measured * [delta_PD_voltage/delta_I_set (I_set)]_calculated ...

 

Entry  Fri Jul 30 10:04:54 2010, Aidan, Computing, Hartmann sensor, Restarted the HWS EPICS channels 

 Restarted the HWS EPICS channels on hartmann with the following command:

/cvs/opt/epics-3.14.10-RC2-i386/base/bin/linux-x86/softIoc -S HWS.cmd &
 

Entry  Fri Jul 30 11:01:31 2010, Aidan, Computing, Hartmann sensor, EPICS softIoc alias 

 I added an alias HWSIoc to controls which can be used to start the HWS EPICS softIoc.

 

alias HWSIoc='/cvs/cds/caltech/target/softIoc/startHWSIOC.sh'
 
and the bash script is:
 

#!/bin/bash
 
cd /cvs/cds/caltech/target/softIoc
 
/cvs/opt/epics-3.14.10-RC2-i386/base/bin/linux-x86/softIoc -S  /cvs/cds/caltech/
target/softIoc/HWS.cmd &
 
cd -
 

 

Entry  Fri Jul 30 13:38:39 2010, James Kunert, Computing, Hartmann sensor, Summary of Thermal Defocus Data Analysis ThermDefocMasterFunctions.pngThermDefoc--py4plot.png

Below is a table summarizing the results of recent thermal defocus experiments. The values are the calculated change in measured defocus per unit temperature change of the sensor:

Experiment 72710a 72710b 72810a 72910a
DeltaS/DeltaT (x) [m^-1/K] -1.31E-4 -1.46E-4 -1.40E-4 -1.52E-4
DeltaS/DeltaT (y) [m^-1/K] -1.63E-4 -1.53E-4 -1.56E-4 -1.70E-4

More detail on these experiments will be available in my second progress report, which will be uploaded to the LIGO DCC by next Monday.

The main purpose of this particular eLog is to summarize what functions I wrote and used to do this data analysis, and how I used them. All relevant code which is referenced here can be found on the SVN; I uploaded my most recent versions earlier today.

Here is a flowchart summarizing the three master functions which were specifically addressed for each experiment:

ThermDefocMasterFunctions.png

py4plot.m is probably the most complicated of these three functions, in terms of the amount of data analysis done, so here's a flowchart which shows how the function works and the main subfunctions that it addresses:

ThermDefoc--py4plot.png

 

Also, here is a step-by-step example of how these functions might be used during a particular experiment:

 

(1)Suppose that I have an experiment which I have named "73010a", in which I wish to take 40 images of 200 sums. I would open the code for framesumexport2.py and change lines 7, 8 and 17 to read:


7  LoopN=40
8 SumN=200
17 mainoutbase="73010a"

And I would then save the changes. I would double-check that the output basename had indeed been changed to 73010a (it will overwrite existing data files, if you forget to change the basename before running it). I would then let the script run (changing the set temperature of the lab after the first summed image was taken). Note that the total duration of the measurement is a function of how many images are summed and how many summed images are taken (in this example, if I was taking each single image at a rate of 11Hz, data collection would take ~20 seconds and data processing (summing the images) would take ~4 minutes (on the order of ~1 second per image in the sum) (the script isn't very quick at summing images, obviously).

EDIT(7/30 3:40pm):  I just updated framesumexport2.py so that the program prompts you for this information. I also changed enabled execute permissions on the copy of the code on the Hartmann machine located in /users/jkunert/, so going to that directory and typing ./framesumexport2.py then inputting the information when prompted is all you need to do now. No need to go change around the actual code every time, any more.

 

(2)Once data collection had ceased entirely, I would open MATLAB and enter the following:

[x,y,dx,dy,time,M,centroids]=pyanalyze_uni('73010a',40);

The function would then look for 73010a.raw and 73010a.txt in ./opt/EDTpdv/ and import the 40 images individually and centroid them. The x and y outputs are the centroid locations. If, for example, 952 centroids were located, x and y would be 952x1x40 arrays. M would be a 40x4 array of the form:

[time_before_img_taken      time_after_img_taken      digitizer_temp      sensor_temp]

 

(3)Once MATLAB had finished the previous function, I would input:

tG=struct;
py4plot('73010a',0,39,x,y,'73010a','200',[1 952],2,tG)

The inputs are, respectively:

(1)python output basename,
(2)first image to analyze (where the first image is image 0),
(3)last image to analyze,
(4)x data (or, rather, data to analyze. to analyze y instead, just flip around "x" and "y" in the input),
(5)y data (or, if you want to analyze the y-direction, "x" would be the entry here),
(6)experiment name,
(7)number of sums in each image (as a string),
(8)range of centroids to include in analysis (if you have 952 centroids, for example, and no ridiculous noise at the edges of the CCD, then [1 952] would be the best entry here),
(9)outlier tolerance (number of standard deviations from initial fit line that a datapoint must be within to be included in the second line fitting, in the dx vs x plot),
(10)exponential fitting structure (input an empty structure unless the temperature/time exponential fit turns out poorly, in which case a better fit parameter guess can be inputted as field tG.guess)

Entry  Fri Jul 30 19:22:24 2010, Aidan, Computing, EPICS, Waveform Channel Access for storing centroids 

 A waveform channel was added to the HWS softIoc on hartmann. This allows arrays of data to be stored in a single channel. It's not clear whether it is storing this data as a set of number or strings. However, the values can be changed by the following command:

caput -a -n C4:TCS-HWS_CENTROIDSX 5 1,2,3,4,5

Although the <no of values> entry doesn't seem to actual enforce anything - you can have more or less values than this in the array and they are still added to the channel. What does seem to be necessary is no spaces between the commas and the values of the array.

This also works:

[controls@fb1 cds]$ caput -a -n C4:TCS-HWS_CENTROIDSX 2 1,2,3n
Old : C4:TCS-HWS_CENTROIDSX          1,2,35.4342 
New : C4:TCS-HWS_CENTROIDSX          1,2,3n 
which suggests that this is really a string variable - even with the -n enforce. The cainfo command suggests this as well. 

[controls@fb1 cds]$ cainfo C4:TCS-HWS_CENTROIDSX
C4:TCS-HWS_CENTROIDSX
    State:         connected
    Host:          
    Access:        read, write
    Data type:     DBR_STRING (native: DBF_STRING)
    Element count: 1
 
 

Usage: caput [options] <PV name> <PV value>

       caput -a [options] <PV name> <no of values> <PV value> ...

  -h: Help: Print this message

Channel Access options:

  -w <sec>:  Wait time, specifies longer CA timeout, default is 1.000000 second

Format options:

  -t: Terse mode - print only sucessfully written value, without name

Enum format:

  Default: Auto - try value as ENUM string, then as index number

  -n: Force interpretation of values as numbers

  -s: Force interpretation of values as strings

Arrays:

  -a: Put array

      Value format: number of requested values, then list of values


 

    Reply  Fri Jul 30 21:19:05 2010, Aidan, Computing, EPICS, Waveform Channel Access for storing centroids 

After some discussion with Frank we figured out how to edit the record type in HWS.db so that the waveform/array channel actually behaved like a numerical array and not like a single string. This just involved defining the data type and the element count in the record definition, like so:

record(waveform, "C4:TCS-HWS_CENTROIDSX")
{
field(EGU,"PIXELS")
field(HOPR,"1024")
field(LOPR,"0")
field(FTVL,"DOUBLE")
field(NELM,"1000")
}
 

and then when the ioc was rebooted, examination of the channel showed the following:

 

[controls@hartmann softIoc]$ cainfo C4:TCS-HWS_CENTROIDSX
C4:TCS-HWS_CENTROIDSX
    State:         connected
    Host:          hartmann:5064
    Access:        read, write
    Data type:     DBR_DOUBLE (native: DBF_DOUBLE)
    Element count: 1000
 
 
[controls@hartmann softIoc]$ caput -a -n C4:TCS-HWS_CENTROIDSX 10 1 2 3 4 5 6 7 8 9 10 11 12 13.1
Old : C4:TCS-HWS_CENTROIDSX 13 1 2 3 4 5 6 7 8 9 10 11 12 13.1 
New : C4:TCS-HWS_CENTROIDSX 13 1 2 3 4 5 6 7 8 9 10 11 12 13.1 
 
 
[controls@hartmann softIoc]$ caget C4:TCS-HWS_CENTROIDSX
C4:TCS-HWS_CENTROIDSX 1000 1 2 3 4 5 6 7 8 9 10 11 12 13.1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
 

 

Quote:

 A waveform channel was added to the HWS softIoc on hartmann. This allows arrays of data to be stored in a single channel. It's not clear whether it is storing this data as a set of number or strings. However, the values can be changed by the following command:

caput -a -n C4:TCS-HWS_CENTROIDSX 5 1,2,3,4,5

Although the <no of values> entry doesn't seem to actual enforce anything - you can have more or less values than this in the array and they are still added to the channel. What does seem to be necessary is no spaces between the commas and the values of the array.

This also works:

 

[controls@fb1 cds]$ caput -a -n C4:TCS-HWS_CENTROIDSX 2 1,2,3n
Old : C4:TCS-HWS_CENTROIDSX          1,2,35.4342 
New : C4:TCS-HWS_CENTROIDSX          1,2,3n 
which suggests that this is really a string variable - even with the -n enforce. The cainfo command suggests this as well. 

 

 

[controls@fb1 cds]$ cainfo C4:TCS-HWS_CENTROIDSX
C4:TCS-HWS_CENTROIDSX
    State:         connected
    Host:          
    Access:        read, write
    Data type:     DBR_STRING (native: DBF_STRING)
    Element count: 1
 
 

 

 

Usage: caput [options] <PV name> <PV value>

       caput -a [options] <PV name> <no of values> <PV value> ...

  -h: Help: Print this message

Channel Access options:

  -w <sec>:  Wait time, specifies longer CA timeout, default is 1.000000 second

Format options:

  -t: Terse mode - print only sucessfully written value, without name

Enum format:

  Default: Auto - try value as ENUM string, then as index number

  -n: Force interpretation of values as numbers

  -s: Force interpretation of values as strings

Arrays:

  -a: Put array

      Value format: number of requested values, then list of values


 

 

 

Entry  Sat Jul 31 11:54:20 2010, Aidan, Computing, SLED, SLED Test Day 5 - Re-tuned current set-point control voltage 

Main Points

  • Re-set SLED current set-point control voltage to 0.111V
  • SLED current set-point voltage drops by about 5mV when the SLED is dis-engaged
  • Resetting was around 11:45AM PDT 31st-Jul-2010

I turned off the SLED for 10s and reset the current set-point voltage (read using a mutlimeter and probing a couple of pins at the back of the driver board). The initial voltage when the test started on Monday was 0.111V when the SLED was engaged. This drooped to 0.109V over the week and there was a corresponding (but possible not resulting) drop in on-board photo-diode voltage. When the SLED was disengaged the set-point current control voltage dropped to 0.104V. I turned the LP pot on the front of the SLED driver board until the multimeter read 0.106V and re-engaged the SLED. The curernt set-point voltage then read 0.111V, occasionally popping up to 0.112V for a moment or two.

The DC Power Supply to the SLED reads 8.9V with 0.26A current being drawn.

Entry  Wed Aug 4 09:57:38 2010, Aidan, James, Computing, Hartmann sensor, RMS measurements with Hartmann sensor rms_analyze_centroids_aidan.pdfRMS_WonCode.pngRMS_WonCodeLessPrism.png

[INCOMPLETE ENTRY]

We set up the Hartmann sensor and illuminated it with the output from the fiber-coupled SLED placed about 1m away. The whole arrangement was covered with a box to block out ambient light. The exposure time on the Hartmann sensor was adjusted so that the maximum number of counts in a pixel was about 95% of the saturation level.

We recorded a set of 5000 images to file and analyzed them using the Caltech and Adelaide centroiding codes. The results are shown below. Basically, we see the same deviation from ideal improvement that is observed at Adelaide.

Entry  Mon Aug 9 10:58:37 2010, Aidan, Laser, SLED, SLED 15-day trend SLED_superlum_long_term_test_0005A_annotated_15-day_result.pdf

 Here's a plot of the 15-day output of the SLED.

Currently there is an 980nm FC/APC fiber-optic patch-cord attached to the SLED. It occurred to me this morning that even though the patch cord is angle-cleaved, there may be some back-reflection than desired because the SLED output is 830nm (or thereabouts) while the patch cord is rated for 980nm.

 I'm going to turn off the SLED until I get an 830nm patch-cord and try it then. 

Correction: I removed the fiber-optic connector and put the plastic cap back on the SLED output. The mode over-lap (in terms of area) from the reflection off the cap with the output from the fiber is about 1 part in 1000. So even with 100% reflection, there is less than the 0.3% danger level coupled back into the fiber. The SLED is on again.

Entry  Tue Aug 17 22:34:14 2010, rana, Misc, General, ETM temperature after a 1W step etmt.swf

This attachment is a Shockwave Flash animation of the iLIGO ETM getting a 1 W beam with a 3.5 cm radius getting fully absorbed onto the surface at t = 0.

Entry  Wed Aug 18 18:38:11 2010, Aidan, Computing, Hartmann sensor, Hartmann sensor code test_HS_Classes.mHS_Image.mHS_Centroids.mHWS_code_output.pngHWS_input_image.png

 I downloaded and tested revision 47 of the Adelaide Hartmann sensor code from the SVN (https://trac.ligo.caltech.edu/Hartmann_Sensor/browser/users/won/HS_OO?rev=47). After giving it the correct input filenames it centroided the Hartmann sensor images pretty seamlessly. The output and code is attached below.

The code takes two Hartmann images. Locates the centroids in both instances and then determines the displacements of all the centroids between the two images. The locations of the centroids are plotted in a diagram and the x- and y- centroid displacements are plotted vs the index of each centroid.

The following comments are output on the command line in MATLAB:

 

>> test_HS_Classes
Current plot held
Current plot released
----------------------------------------------------------------
Obtained reference and test centroids.
Number of centroids in reference centroids = 951
average position of reference centroids:
x = 506.39615297  y = 512.890603168
Number of centroids in test centroids = 951
average position of test centroids:
x = 506.396160891  y = 512.892513673

---------------------------------------------------------------- 

HWS_code_output.png - shows the output from the code: we'll need to get more labels on these plots.

HWS_input_image.png - the reference input image (using false color scale) to the Hartmann code

Entry  Tue Aug 17 16:31:55 2010, Aidan, Things to Buy, Laser, Bought a laser diode from Thorlabs for HWS 

http://www.thorlabs.com/thorProduct.cfm?partNumber=CPS180

I bought this laser diode from Thorlabs today to try the current modulation trick Phil and I discussed last Friday. 

That is:

  1. Accept that there will be interference fringes on the Hartmann sensor probe beam with a laser diode source (especially if the probe beam is the retro-reflection from a Michelson interferometer with a macroscopic arm length difference)
  2. Modulate the current of the laser diode source to vary its wavelength by a few hundreds on nm. Do this on a time scale that is much faster than the exposure time for a Hartmann sensor measurement
  3. The contrast of the interference fringes should average out and the exposure should appear to be the sum of two incoherent beams.

 

 

 

    Reply  Mon Aug 23 08:43:16 2010, Aidan, Things to Buy, Laser, Bought a laser diode from Thorlabs for HWS 

It arrived on Friday.

Quote:

http://www.thorlabs.com/thorProduct.cfm?partNumber=CPS180

I bought this laser diode from Thorlabs today to try the current modulation trick Phil and I discussed last Friday. 

That is:

  1. Accept that there will be interference fringes on the Hartmann sensor probe beam with a laser diode source (especially if the probe beam is the retro-reflection from a Michelson interferometer with a macroscopic arm length difference)
  2. Modulate the current of the laser diode source to vary its wavelength by a few hundreds on nm. Do this on a time scale that is much faster than the exposure time for a Hartmann sensor measurement
  3. The contrast of the interference fringes should average out and the exposure should appear to be the sum of two incoherent beams.

 

 

 

 

Entry  Mon Sep 13 18:24:52 2010, Aidan, Laser, Hartmann sensor, Enclosure for the HWS 00001.jpg00002.jpg00003.jpg00005.jpg

I've assembled the box Mindy ordered from Newport that will house the Hartmann sensor. It's mainly to reduce ambient light, air currents and to keep the table cleaner than it would otherwise be.

We need to add a few more holes to allow access for extra cables.

 

Entry  Tue Sep 28 10:41:32 2010, Aidan, Laser, Hartmann sensor, Aligning HWS cross-sample experiment - polarization issues 

I'm in the process of aligning the cross-sampling experiment for the HWS. I've put the 1" PBS cube into the beam from the fiber-coupled SLED and found that the split between s- and p-polarizations is not 50-50. In fact, it looks more like 80% reflected and 20% transmitted. This will, probably, be due to the polarization-maintaining patch-cord that connects to the SLED. I'll try switching it out with a non-PM maintaining fiber.

 


Later ...

That worked.

Entry  Tue Sep 28 17:53:40 2010, Aidan, Laser, Hartmann sensor, Crude alignment of cross-sampling measurement 2010_09_28-HWS_cross_sample_expt_crude_alignment_01.pdf

I've set up a crude alignment of the cross-sampling system (optical layout to come). This was just a sanity check to make sure that the beam could successfully get to the Hartmann sensor. The next step is to replace the crappy beam-splitter with one that is actually 50/50.

Attached is an image from the Hartmann sensor.

Entry  Wed Sep 29 16:49:36 2010, Aidan, Laser, Hartmann sensor, Cross-sampling experiment power budget 00001.jpg

I've been setting up the cross-sampling test of the Hartmann sensor, Right now I'm waiting on a 50/50 BS so I'm improvising with a BS for 1064nm.

The output from the SLED (green-beam @ 980nm) is around 420uW (the beam completely falls on the power meter.) There are a couple of irises shortly afterwards that cut out a lot of the power - apparently down to 77uW (but the beam is larger than the detection area of the power meter at this point - by ~50%). The BS is not very efficient on reflection and cuts down the power to 27uW (overfilled power meter). The measurement of 39uW is near a focus and the power meter captures the whole beam. There is a PBS cube that is splitting the beam unequally between s- and p-polarizations (I think this is due to uneven reflections for s- and p-polarizations from the 1064nm BS). The beam is retro-reflected back to the HWS where about 0.95uW makes it to the detector.

There is a 1mW 633nm laser diode that is used to align the optical axis. There are two irises that are used to match the optical axis of the laser diode and the SLED output.

 

Entry  Mon Oct 4 19:44:03 2010, Aidan, Laser, Hartmann sensor, Cross-sampling experiment - two beams on HWS test001_two_beams_on_HWS.pdf

I've set up the HWS with the probe beam sampling two optics in a Michelson configuration (source = SLED, beamsplitter = PBS cube). The return beams from the Michelson interferometer are incident on the HWS. I misaligned the reflected beam from the transmitted beam to create two Hartmann patterns, as shown below.

The next step is to show that the centroiding is a linear superposition of these two wavefronts.

Entry  Tue Oct 5 12:51:16 2010, Aidan, Laser, Hartmann sensor, Variable power in two beams of cross-sampling experiment test002_two_beams_on_HWS_analyze.pdfHartmann_Enclosure_Diagram__x-sampling.png

The SLED in the cross-sampling experiment produces unpolarized light at 980nm. So I added a PBS after the output and then a HWP (for 1064nm sadly) after that. In this way I produced linearly p-polarized light from the PBS. Then I could rotate it to any angle by rotating the HWP. The only drawback was that the HWP was only close to half a wave of retardation at 980nm. As a result, the output from this plate became slightly elliptically polarized.

The beam then went into another PBS which split it into two beams in a Michelson-type configuration (REFL and TRANS beams) - see attached image. By rotating the HWP I could vary the relative amount of power in the two arms of the Michelson. The two beams were retro-reflected and we then incident onto a HWS.

I measured the power in the REFL beam relative to the total power as a function of the HWP angle. The results are shown in the attached plot.

 

Entry  Thu Nov 4 13:31:19 2010, Won Kim, Computing, Hartmann sensor, Frame Grabber SDK installation 

 Appended below is the step by step procedure that I used to install and
use the frame grabber SDK. Note that the installation process was a lot
simpler with the SDK version 4.2.4.3 than the previous version.

Lines starting with ":" are my inputs and with ">" the computer outputs.

I tried to put this into elog but the web page says the laser password is
wrong so I could not.

Won

---

0. Turn on or restart the computer. For installation of the frame grabber
  SDK, go to step 1. If using the existing installation go to step 5.

1. Copy the script EDTpdv_lnx_4.2.4.3.run to my home folder.

2. Ensure that the script is executable.

: chmod +x EDTpdv_lnx_4.2.4.3.run

3. Run the script.

: sudo ./EDTpdv_lnx_4.2.4.3.run

4. After entering the root password, the script asks for the installation
  directory. Default is /opt/EDTpdv, to which I type 'y'.

  The script then runs, printing out a massive log. This completes the
  installation process.

5. Move to the directory in which the SDK is installed.

: cd /opt/EDTpdv

6. Initialise the camera by loading a camera configuration file
  dalasa_1m60.cfg located in the camera_config folder.

: ./initcam -f camera_config/dalsa_1m60.cfg

  Which will output the message (if successful)

opening pdv unit 0....
done


7. Take an image frame.

: ./take -f ~/matlab/images/test.raw

  which will save the raw file as specified above and generate following
  message on the terminal:

reading image from Dalsa 1M60 12 bit dual channel camera link
width 1024 height 1024 depth 12  total bytes 2097152
writing 1024x1024x12 raw file to /home/won/matlab/images/test.raw

(actual size 2097152)

1 images 0 timeouts 0 overruns



Whether the image taken was valid or not, I followed the exactly same
procedure. In step 7, when the image was not valid, the message after
executing the take command said "1 timeoutouts", and when the image was
valid I got "0 timeouts".

You will also get "1 timeouts" if you turn off the camera and execute the
take command. So at least I know that when an image taken was not valid it
is due to the frame grabber failing to obtain the image from the camera.

Entry  Tue Nov 23 06:15:08 2010, Won, Computing, Hartmann sensor, Image folder structure image_folders.png

Attached below is a diagram that describes the organisation of image folders that I am using at the moment with Run_initialize and Run_acquire scripts.

Once the uppermost folder 'image' is set up, other folders in it will be created by the matlab codes if not present. Still it may be of less hassle to create the folders beforehand.

Images that are used during State 1 are saved inside 'probe' and 'secondary' folders (but not inside 'cbt' folders) with prefixes, e.g., 'dark' (for background count estimation) 'expadj' (for exposure adjustments), 'test' etc.

Hope this helps to understand image saving/reading procedures used throuout the two Run scripts. 

image_folders.png 

Entry  Tue Nov 30 11:01:19 2010, Aidan, Computing, General, New workstation added in TCS Lab. New Static IP 

I added a workstation at 10.0.1.26 in the TCS lab.

Entry  Tue Nov 30 11:03:19 2010, Aidan, Computing, Frame Grabber, EDT frame grabber works under Ubuntu 

The new machine in the TCS lab is running Ubuntu. I installed the frame-grabber into it and, after loading the configuration file for the camera, was able to access the serial port on the camera and also was able to record a properly formatted image from the Hartmann sensor.

Entry  Tue Jan 25 16:38:16 2011, Aidan, Electronics, Pre-amplifier, L1 TCSY ISS Board transfer function L1TCS_ISS_boards_transfer_functions.pdfSRS003.78DSRS004.78DSRS005.78DSRS006.78D

 I measured the AC and DC channel transfer functions of the eLIGO L1 TCSY ISS board for PD1 and PD2. The gain is quite high on the AC channels so I added +40dB of attenuation to the source from the SR785. As Frank pointed out, even though this isn't exactly +40dB at low frequencies, it still attenuates and that attenuation is common to both the input to the Channel 1 of the SR785 and the input to the ISS board.

The results are shown in the attached plot. I didn't bother including the phase, I'm just interested in the magnitude for calibration purposes.

 The original data files from the SR785 are attached below: 

Channel Name Filename
L1 TCSY PD1 - AC SRS003.78D
L1 TCSY PD2 - AC SRS004.78D
L1 TCSY PD1 - DC SRS005.78D
L1 TCSY PD2 - DC SRS006.78D

 

Entry  Tue Feb 8 13:02:26 2011, Aidan, Electronics, Delivery Note, Thorlabs S322C 200W power head arrived Co2_200W_power_meter_delviery_note.pdfCo2_200W_power_meter_calibration_info.pdf

 The 200W Thermopile power head from Thorlabs arrive today. The scanned delivery note and calibration info are attached.

Entry  Fri Feb 18 14:53:50 2011, Phil, Laser, Laser, LTG laser delivering specified power 

I got the LTG CO2 laser to deliver 50.02W as measured by the Thorlabs 200W power head today. This required running the Glassman HV supply at full power (30.0kV, 31.1mA), tweaking the end grating and output coupler alignments, and cleaning the ZnSe Brewster windows on the laser tubes, and it only lasted a few seconds before dropping back to ~48W, but the laser delivered the specified power. In the factory it delivered 55W at the 10.6 micron line I am using now- I checked it with the CO2 laser spectrum analyzer- so there is more work to do.

Entry  Fri Feb 18 13:26:23 2011, Aidan, Things to Buy, Delivery Note, First parts of Bosch framing have arrived from Valin Packing_List_01.pdf

The first pieces of the Bosch framing have arrived from Valin Corporation. These are just small pieces such as the fasteners and the gussets. There are no custom lengths of framing yet.

The details are in the attached Packing List. [1:25PM] I haven't verified that everything is there yet.

 

    Reply  Wed Feb 23 18:04:38 2011, Aidan, Things to Buy, Delivery Note, First parts of Bosch framing have arrived from Valin Packing_List_02.pdf

Quote:

The first pieces of the Bosch framing have arrived from Valin Corporation. These are just small pieces such as the fasteners and the gussets. There are no custom lengths of framing yet.

The details are in the attached Packing List. [1:25PM] I haven't verified that everything is there yet.

 

 Another box of Bosch stuff arrived in my office. The packing list is attached

Entry  Wed Feb 23 20:18:30 2011, Aidan, Electronics, Hartmann sensor, Successfully re-started the Hartmann sensor 

 I reattached the Hartmann Sensor to the LENOVO machine that is running Ubuntu and turned it on (it's been disconnected for a couple of months). The /opt/EDTpdv/serial_cmd was able to communicate successfully with the camera.

Entry  Thu Feb 24 10:23:31 2011, Christopher Guido, Laser, Laser, LTG initial noise LTG_InitialTest.pdf

Cheryl Vorvick, Chris Guido, Phil Willems

Attached is a PDF with some initial noise testing. There are 5 spectrum plots (not including the PreAmp spectrum) of the laser. The first two are with V_DC around 100 mV, and the other three are with V_DC around 200 mV. (As measured with the 100X gain preamplifier, so ideally 1 and 2 mV actual) We did one spectrum (at each power level)  with no attempt of noise reduction and one spectrum with the lights off and a make shift tent to reduce air flow. The 5th plot is at 200mv with the tent and the PZT on. (The other 4 have the PZT off).

 

The second plot is just the spectrums divided by their respectives V_DC to get an idea of the RIN.

Entry  Thu Feb 24 13:35:41 2011, Aidan, Things to Buy, Delivery Note, Bosch framing has arrived Packing_List_03.pdf

 The custom pieces of the Bosch framing have arrived. Transportation is currently moving them downstairs to the lab. The packing list is attached.

 

 

Entry  Thu Feb 24 14:20:55 2011, Aidan, Misc, Ring Heater, aLIGO H2 Ring Heater Pics aLIGO_Ring_Heaters.zip

 Here are some pictures of the ring heater segments destined for the H2 Y-arm this year.

 These still need to be put onto ResourceSpace.

Entry  Thu Feb 24 14:23:58 2011, Aidan, Lab Infrastructure, Hartmann sensor, Hartmann Sensor box cut down to size P1000109.jpgP1000110.jpgP1000111.jpgP1000113.jpg

 I reduced the height of the Hartmann sensor box. This is what it looks like now:

 

Entry  Tue May 4 13:35:13 2010, Aidan, Computing, Hartmann sensor, Hartmann temperature channels in frame builder 

 I've added the digitizer and sensor board temperature readings from the HWS to the frames. This was done in the following way

1. Create a new file /cvs/cds/caltech/chans/daq/C4TCS.ini - with the channels in it - see below

2.  open /cvs/cds/caltech/target/fb1/master

3. add a line that includes the C4TCS.ini file when the frame builder starts

4. restart frame-builder by killing the daq daemon - kill <process id for daqd> (this is the only thing that needs to be entered as it will automatically restart)

 

C4TCS.ini

 

[default]

dcuid=4

datarate=16

gain=1.0

acquire=1

ifoid=0

datatype=4

slope=1.0

offset=0

units=NONE

 

 

 

[C4:TCS-HWS_TEMP_SENSOR]

[C4:TCS-HWS_TEMP_DIGITIZER]


 

 

 

    Reply  Mon Feb 28 17:33:07 2011, Aidan, Computing, Hartmann sensor, Hartmann Seidel abberation channels in frame builder 

Using the same methods as before, see below, I've added some Hartmann sensor EPICS channels to the frames.

The channels record the Hartmann sensor Probe (and Secondary) Coefficients of the Seidel aberrations (PSC, SSC) that are specified (PRISM, ALPHA, PHI, etc).

  1. Created /cvs/cds/caltech/chans/daq/C4HWS.ini with the attached contents.
  2. Added a line to /cvs/cds/caltech/target/fb1/master to load C4HWS.ini
  3. restarted the frame builder by killing daqd

[default]
dcuid=4
datarate=16
gain=1.0
acquire=1
ifoid=0
datatype=4
slope=1.0
offset=0
units=NONE


[C4:TCS-HWSX_PSC_PRISM]
[C4:TCS-HWSX_PSC_ALPHA]
[C4:TCS-HWSX_PSC_PHI]
[C4:TCS-HWSX_PSC_CYLINDRICAL_PO]
[C4:TCS-HWSX_PSC_SPHERICAL_POWE]
[C4:TCS-HWSX_PSC_COMA]
[C4:TCS-HWSX_PSC_BETA]
[C4:TCS-HWSX_PSC_SPHERICAL_ABER]
[C4:TCS-HWSX_SSC_PRISM]
[C4:TCS-HWSX_SSC_ALPHA]
[C4:TCS-HWSX_SSC_PHI]
[C4:TCS-HWSX_SSC_CYLINDRICAL_PO]
[C4:TCS-HWSX_SSC_SPHERICAL_POWE]
[C4:TCS-HWSX_SSC_COMA]
[C4:TCS-HWSX_SSC_BETA]
[C4:TCS-HWSX_SSC_SPHERICAL_ABER]

Quote:

 I've added the digitizer and sensor board temperature readings from the HWS to the frames. This was done in the following way

1. Create a new file /cvs/cds/caltech/chans/daq/C4TCS.ini - with the channels in it - see below

2.  open /cvs/cds/caltech/target/fb1/master

3. add a line that includes the C4TCS.ini file when the frame builder starts

4. restart frame-builder by killing the daq daemon - kill <process id for daqd> (this is the only thing that needs to be entered as it will automatically restart)

 

C4TCS.ini

 

[default]

dcuid=4

datarate=16

gain=1.0

acquire=1

ifoid=0

datatype=4

slope=1.0

offset=0

units=NONE

 

 

 

[C4:TCS-HWS_TEMP_SENSOR]

[C4:TCS-HWS_TEMP_DIGITIZER]


 

 

 

 

Entry  Mon Feb 28 17:56:32 2011, Aidan, Computing, Hartmann sensor, Got HWS code running and interface to EPICS 

Here are the notes from today's efforts:

 

 

- When you 'Run_HWS' in MATLAB and the camera has not been initialized, it says the camera is not accessible. Either that or you need to run 'sudo matlab' (no, sudo doesn't help)

- In Ubuntu have to run '/opt/EDTpdv/initcam -f ~/dalsa_1m60.cfg' to start the camera

- Now have to install MCA

- MCA installed by is crashing MATLAB - not sure why. Maybe its a 'sudo' problem again?
- sudo matlab has the following problem:
mca
??? Invalid MEX-file
'/home/controls/base-3-14-11/extensions/lib/linux-x86_64/mca.mexa64':
libdbStaticHost.so.3.14: cannot open shared object file: No such file or
directory.
 
- adjusting Makefile for MCA to include the correct suffix for a Linux based MEX file ('mexa64', not 'mexglnx') gets the program to compile correctly and then MATLAB runs MCA fine.


- Running 'Run_HWS' with EPICS running but no channels crashes the program

- copy the HWS.db file to the EPICS db location

- cannot create the matlab images folder when the program runs.
- created these manually
- program is trying to adjust the maximum pixel count - it is failing and the camera is complaining (intensity is quite low right now)
- why exposure mode 6? - requires an external SYNC signal
- can't handle low exposure - FIX THIS!!
- why is the expsoure time increased in stepwise fashion? Use algorithm!
      - Commenting this out!!
    - same for the secondary beam
- After running State 1 it asks to continue to State 2 - if you select 'n' the program crashes

- steered beam properly onto HWS
-----------
- continue to State 2 - 'yes' crashes the program
- HS_report is doesn't work
- commented out lines 37 to 47

- get rid of constant requests to continue [run_acquire_auto.m]
- change names of EPICS variables [done]
- add an RMS variable
- the named EPICS variables need to be dynamically named rather than statically named.


--------
run_acquire_auto.m CHANGES
0. Update sensor date: mres = 'y'
1. pres = 'n'; - don't update reference centroids
2. sres = 'n'; - don't update secondary reference centroids
3. select probe beam commented out
4. select secondary beam commented out
5. State 2B - select probe live commented out
6. set user_response = 'y' for continue

A1 - added a loopcounter that starts at zero. the first loop includes user prompts and then they're bypassed in subsequent loops.

-----------

-Seidel aberration fitting seems wrong - not resembling the integrated field
- get rid of the constant pop ups
- have a network license EPICS variable
- how many images are used for reference image?
    - added a variable in run_acquire_auto.m :
        - no_of_cim_ref = 200; (no_of_cim = 5 images was previous)
    - changed the averaging in reference image acquisition from
        - "no_of_cim" to "no_of_cim_ref"
    - didn't change the take command from 5 to 200 images
- commented out lines 239-242 in run_initialize - gives a second way to start run_acquire.m
- probe and secondary beams share the probe background - deliberate?
- average all the images and save as a single matlab 16-bit array
- what is the rms noise as a function of the reference image number of averages?


------
Changing the EPICS variable names.
1. HS_WF - where Seidel coefficients are named.
    - in function seidel_from
2. changed the following lines in 'run_acquire_auto.m'
        %channelname = ['probe-seidel-',fn{counter}];
            channelname = ['C4:TCS-HWSX_PSC_', fn{counter}];

        %channelname = ['secondary-seidel-',fn{counter}];
            channelname = ['C4:TCS-HWSX_SSC_', fn{counter}];
3. ammended the following code in 'run_acquire_auto.m'

    maxEPICSLength = 14;
    for counter = 1:length(fn)
        %channelname = ['probe-seidel-',fn{counter}];
        strname = upper(fn{counter});
        if (numel(strname) > maxEPICSLength)
            strname = strname(1:maxEPICSLength);
        end     
        channelname = ['C4:TCS-HWSX_PSC_', strname];
        probe_seidel_array{counter} = HS_EPICS(channelname);
    end
-----
- bug: on restarting and pressing 'space' and enter at approximately the same times here, the program crashed:

Is it okay to assign one of the already existing handle (y or n)? y
Assigned handle 2 to the instance.
Established the connection to the channel secondary_shutter_open.

hsep_secondary =

  HS_EPICS handle

  Properties:
         channelname: 'secondary_shutter_open'
             handler: 2
    EPICS_is_running: 1

  Methods, Events, Superclasses

Please select the probe beam as the light source. Hit any key to continue.

??? Error using ==> textscan
First input can not be empty.

Error in ==> HS_Camera>HS_Camera.get_exposure_time at 942
        ccet = textscan(ccet,'%f %s');

-----------------

Added the following lines to HWS.db

record(ai, "C4:TCS-HWSX_PSC_PRISM")
record(ai, "C4:TCS-HWSX_PSC_ALPHA")
record(ai, "C4:TCS-HWSX_PSC_PHI")
record(ai, "C4:TCS-HWSX_PSC_CYLINDRICAL_PO")
record(ai, "C4:TCS-HWSX_PSC_SPHERICAL_POWE")
record(ai, "C4:TCS-HWSX_PSC_COMA")
record(ai, "C4:TCS-HWSX_PSC_BETA")
record(ai, "C4:TCS-HWSX_PSC_SPHERICAL_ABER")
record(ai, "C4:TCS-HWSX_SSC_PRISM")
record(ai, "C4:TCS-HWSX_SSC_ALPHA")
record(ai, "C4:TCS-HWSX_SSC_PHI")
record(ai, "C4:TCS-HWSX_SSC_CYLINDRICAL_PO")
record(ai, "C4:TCS-HWSX_SSC_SPHERICAL_POWE")
record(ai, "C4:TCS-HWSX_SSC_COMA")
record(ai, "C4:TCS-HWSX_SSC_BETA")
record(ai, "C4:TCS-HWSX_SSC_SPHERICAL_ABER")

- restarting IOC with C4:TCS-HWSX channels

-------------

-time to add these to the frames



 

ELOG V3.1.3-