E08-010 ~ N-Delta
BPM Calibration
The beam positioning monitor (BPM) system in Hall A at Jefferson Lab consists of two sets of antenna detectors positioned 7.524 m (A) and 1.286 m (B) upstream of the target. HARP scans are run by the MCC to determine the exact positioning of the beam at those locations. That positioning is then supplied to the data stream through the EPICs interface every 3-4 seconds through the variables IPM1H04A and IPM1H04B. For both the A and B locations, there is an x and a y location, resulting in a total of four EPICs variables: Ax, Ay, Bx, and By.

Additionally, there are BPM antennae set up at the A and B locations to obtain event-by-event data, and like the EPICs variables, there are both x and y BPM variables for each location, resulting in another four variables. The main goal of this calibration is to find a relationship between the BPM variables, which we obtain for each event, and the EPICs variables, which we assume are accurate.

To do this calibration, "bull's-eye" scans are needed, in which the beam is purposefully moved and the results measured. For the N-Delta experiment, runs from 1579 to 1599 were taken for this purpose.

It should be noted that after the N-Delta experiment, another sets of scans were taken, runs 4139 to 4149, for the SRC experiment that followed. However, the results from those scans differ slightly from those of the earlier runs, as will be shown later. The following table shows the relationship between the HARP scan and CODA run numbers, as well as the approximate position of the beam for each run.

HARPABCODA# EventsNotes
2531(-0.8,-0.4)(+0,+1)1579355159
2532(-0.65,-0.5)(+1,+1)1580115234
2533(-0.634,-0.602)(+1,+0)1581155610
2534(-0.617,-0.807)(+1,-1)1582203110
2535(-0.632,-1.011)(+1,-2)1583191526
2536(-0.831,-1.022)(+0,-2)1584109162
2537(-1.069,-1.016)(-1,-1.6)1585192655
----(---,---)(-2,-1.5)158613624stopped early
2540(-1.288,-1.765)(-2,-2)1587175038double peaks in EPICs variables
2541(-1.5,-1.772)(-3,-2)1588113599
2542(-1.972,-1.793)(-5,-2)158983786
2543(-1.958,-1.573)(-5,-1)159090600
2544(-1.944,-1.364)(-5,+0)159192806
2545(-1.945,-1.125)(-5,+1)159250447
2546(-1.947,-0.978)(-5,+1.6)159352352
2547(-1.929,+0.155)(-5,+3)159451811
2549(-1.925,+1.406)(-5,+4)1595145387
2550(-1.916,+1.542)(-5,+5)159671348
----(---,---)(---,---)1597----junk
2551(-0.839,-0.819)(+0,+0)159856012incorrect values in EPICs variables
2552(-1.581,-0.38)(-3.5,+2)159943526incorrect values in EPICs variables

Due to the errors noticed in runs 1586, 1587, 1597, 1598, and 1599, they were not included in the analysis. However, that still leaves 16 runs which are more than enough for this analysis.

The database file containing the results from this calibration are here: db_beam.dat.
BPM Pedestals Run

The first step in the BPM calibration is to determine the pedestal values of the BPM detectors. This is done with a BPM pedestal run, which in this case was run 1184.



From this run, pedestal values can be determined, which are then entered into the "db_beam.dat" file in the analyzer's DB directory.

Once this has been done, then the runs you wish you analyze must be replayed.
All Runs Plot

The second step in the BPM calibration is to plot the BPM and EPICs variables and look for any problems. If you mouse-over the image, you can see which runs correspond to which points.



The top two plots correspond to the location of the BPM variables, while the bottom two plots correspond to the location of the EPICs variables, with the goal being to determine a relationship between the location of the points in the top plots with the "true" locations in the bottom plots.

Aside from some odd noise in the lower-right corners of the BPM plots, which doesn't appear to affect the calibration, all of the points from the BPM plots seem to correspond to points in the EPICs plots, with the BPM variables appearing to be rotated approximately 45 degrees clockwise from the EPICs variables. The exact relationship will be determined later using a rotation matrix and offsets, but first, the mean values from each of those points needs to be measured.

Measure Means

The third step is to go through and obtain the mean values for the different variables from each of the runs. Luckily, there is a handy piece of code that does this for us.

runBPM AxBPM AyBPM BxBPM ByEPICs AxEPICs AyEPICs BxEPICs By
1579-0.5615860.8507851.5966338.194353-0.827109-0.388912-0.0034341.002758
1580-0.3975940.6986282.3667237.557691-0.610690-0.3707301.0018531.013879
1581-0.5553990.5465211.6016286.903813-0.623646-0.5909070.9948770.000803
1582-0.7180510.3929830.8309076.229023-0.606302-0.8035761.003993-0.996245
1583-0.8627970.2641540.3591635.804437-0.611667-0.9704290.987928-1.586360
1584-1.0306950.393319-0.3928436.477560-0.842902-1.0108480.011837-1.618592
1585-1.2098910.571706-1.1438167.176636-1.055989-1.017305-1.007549-1.588190
1588-2.1215660.330572-2.9688888.176335-1.498156-1.768758-2.998898-1.997908
1589-2.4748380.651865-4.4839719.388607-1.953463-1.779357-4.994170-1.992630
1590-2.3030090.809097-3.7223939.968836-1.950185-1.569605-4.996465-0.996889
1591-2.1362870.967695-2.96856810.534178-1.962505-1.344027-5.0120100.001447
1592-1.9566751.132626-2.20975411.092011-1.944810-1.132177-5.0050900.995206
1593-1.8479471.252385-1.71674611.447874-1.947533-0.963156-4.9960271.662527
1594-0.9663492.053352-0.69346812.147168-1.8644500.161628-4.9800133.004823
1595-0.7877622.2330840.03239812.624166-1.9270900.388772-5.0060323.940222
15960.0800753.0551690.83090513.138072-1.9074651.536785-5.0012854.994175

It should be noted that for the BPM values, a gaussian fit was applied and the mean of that fit recorded, while for the EPICs variables a simple mean was used.
Calculate Coefficients

These means are then processed into a matrix, which is then inverted and used to produce a set of beam position transformation coefficients used to transform the coordinates from the BPM frame to the lab frame.

C(0,0)C(0,1)C(1,0)C(1,1)Offset(0)Offset(1)
0.662394-0.6794240.6624990.6763070.126509-0.589413
0.629603-0.8605380.6849100.8598165.897721-6.984258

where
(x)=(C(0,0)C(0,1))×(x)+(Offset(0))
yLabC(1,0)C(1,1)yBPMOffset(1)

Then, like the pedestals from before, these values would then be inserted into the "db_beam.dat" file in the database directory for the analyzer. Note, however, than the offsets are in millimeters and need to be converted into meters for the database file.

The results from the second set of "bull's-eye" scans, taken during the SRC experiment, give the following results.

C(0,0)C(0,1)C(1,0)C(1,1)Offset(0)Offset(1)
0.668516-0.6844710.6717020.6830520.144645-0.633772
0.655600-0.7980880.6524800.8029904.605999-5.715147

Calculation Check

It's necessary to check these coefficients against the EPICs variables.



For comparison, here is the calculation check from the second set of scans. If we attempt to use the coefficients from the second set of scans with the data from the first set, we have these results.

Raster Constants

In addition to the main BPM matrix values, which should apply to all runs, raster constants can be calculated for individual runs or kinematics, which can be important for the mispointing calibration later.

For this analysis, raster constants were calculated for the BeO runs in each of the kinematics.

KinematicRunRaster Constants
1a2077-0.009493620.009502590.00000295281-0.0000038380800
-0.01352530.01443010.00000353057-0.0000050366300
-0.01096460.01684860.00000244986-0.0000056347800
1b2281-0.00952460.009912750.00000279556-0.0000039909800
-0.01295350.01491630.00000334647-0.0000052500300
-0.0116510.01735680.00000272443-0.0000058714200
22152-0.009205250.009635360.00000279691-0.0000039797600
-0.01292080.01486910.00000333354-0.0000052318900
-0.01099680.01741720.00000246898-0.00000584900
32210-0.009187150.009621490.00000279099-0.0000039747900
-0.01289160.01485190.00000332913-0.0000052349700
-0.01110830.01740020.00000251142-0.0000058566200
52402-0.009488110.00981660.00000278615-0.0000039591100
-0.01291240.01481860.00000334017-0.000005227200
-0.01179460.01725340.00000277704-0.0000058509300
62359-0.009439950.01025380.0000027664-0.0000041263900
-0.01285720.0151520.00000331954-0.0000053545500
-0.01174620.01742580.00000275852-0.0000059171100
72371-0.00947590.009840590.00000278154-0.0000039615900
-0.01290410.01483690.00000333841-0.0000052318100
-0.01178410.01726930.00000277447-0.0000058566500
82479-0.00963020.009983480.00000280998-0.0000039826800
-0.0130570.01501630.00000336264-0.0000052557200
-0.01180330.01747150.00000276171-0.0000058839200
92506-0.009407320.009895430.00000275457-0.0000039778100
-0.01279010.01487440.00000330187-0.0000052506800
-0.01182850.01730140.00000279068-0.0000058780300
102532-0.009456810.009887480.00000277246-0.0000039578800
-0.01285320.01481020.00000331986-0.0000052195600
-0.01173640.01720920.00000275702-0.0000058410900
112423-0.009484990.009788760.00000278558-0.000003940200
-0.01288560.01472750.00000333557-0.0000051907500
-0.01185190.01713660.00000279894-0.0000058079500
122448-0.009436150.009803850.00000277067-0.0000039446800
-0.01285290.01474650.00000332407-0.0000052004900
-0.01184170.01715650.00000279453-0.000005819800
132549-0.009473870.009873330.00000278352-0.0000039817100
-0.01287310.01484590.00000332873-0.0000052437800
-0.01174640.01727360.00000276171-0.0000058674300
142562-0.009473730.009861630.00000278074-0.0000039698800
-0.01286450.01481630.00000332777-0.0000052264200
-0.01184150.01723690.00000279563-0.0000058480200

For the most part, the values above are reasonably close, suggesting that the raster constants don't very much between kinematics. For this reason, and because it was found that it changed the results little, an average of the above raster constants was used instead.

-0.00944126070.00983408140.00000279484857142857-0.0000039703957142857100
-0.01293866430.01483657140.00000334559571428571-0.000005225300
-0.01162109290.01726835710.00000270892428571429-0.00000584162500

return to main page