Skip to content
Snippets Groups Projects
Commit a2da3fc8 authored by Mark Jones's avatar Mark Jones
Browse files

Initial COSY subdirectory

parent 4d738d43
Branches
Tags
No related merge requests found
cosy/cosy binary
cosy/JLAB.bin binary
cosy/COSY.bin binary
cosy/cosyman.pdf binary
foxyinp.dat
RKLOG.DAT
*.lis
*.dat
*.cod
cosy/COSY.bin 0 → 100644
NaN GiB (NaN%)
View file @ a2da3fc8
File suppressed by a .gitattributes entry or the file's encoding is unsupported.
cosy/JLAB.bin 0 → 100644
NaN GiB (NaN%)
View file @ a2da3fc8
File suppressed by a .gitattributes entry or the file's encoding is unsupported.
cosy/cosy 0 → 100755
NaN GiB (NaN%)
View file @ a2da3fc8
File suppressed by a .gitattributes entry or the file's encoding is unsupported.
cosy/cosyman.pdf 0 → 100644
NaN GiB (NaN%)
View file @ a2da3fc8
File suppressed by a .gitattributes entry or the file's encoding is unsupported.
{------------------------------------------------------------------------------
Super-HMS spectrometer, with forward and reconstruction maps.
VERSION for Monte Carlo maps
Quads are (lengthened versions of) the HMS Q1 magnet.
Quad-Dipole is from the QD-separated model of 2005
A SPLITTER magnet (horiz bend) is inserted before Q1.
Author: D. Potterveld, Argonne National Lab, June 2005
MC version: DHP, Nov 2005
------------------------------------------------------------------------------
}
INCLUDE 'JLAB' ;
PROCEDURE RUN ;
{=========================== Variable Declarations ===========================}
VARIABLE Z1C 1 ; VARIABLE L1 1 ; VARIABLE L1E 1 ; VARIABLE Q1MID 1 ;
VARIABLE Z2C 1 ; VARIABLE L2 1 ; VARIABLE L2E 1 ; VARIABLE Q2MID 1 ;
VARIABLE Z3C 1 ; VARIABLE L3 1 ; VARIABLE L3E 1 ; VARIABLE Q3MID 1;
VARIABLE ZDC 1 ; VARIABLE LD 1 ; VARIABLE LDE 1 ;
VARIABLE ZBC 1 ; VARIABLE LB 1; VARIABLE LBE 1;
VARIABLE DZD1 1 ; VARIABLE DZD2 1;
VARIABLE DZF1 1 ; VARIABLE DZF2 1;
VARIABLE XDIP 1;
VARIABLE DTILT 1;
VARIABLE FTILT1 1; VARIABLE FTILT2 1;
VARIABLE ZFM 1 ;
VARIABLE DR0 1;
VARIABLE DR1 1 ;
VARIABLE DR2 1 ;
VARIABLE DR3 1 ;
VARIABLE DR4 1 ;
VARIABLE DRF 1 ;
VARIABLE DRFOC 1;
VARIABLE DR0EN 1; VARIABLE DR0EX 1;
VARIABLE DR1EN 1; VARIABLE DR1EX 1;
VARIABLE DR2EN 1; VARIABLE DR2EX 1;
VARIABLE DR3EN 1; VARIABLE DR3EX 1;
VARIABLE DLEX 1;
VARIABLE Q1 1 ; { quadrupole strength }
VARIABLE Q2 1 ; { quadrupole strength }
VARIABLE Q3 1 ; { quadrupole strength }
VARIABLE Q3SCALE 1 ; { flag for scaling Q3 }
VARIABLE FILE 80 ; { filename}
VARIABLE QFILE 80 ; { filename}
VARIABLE TILT 1 ; { Focal plane tilt angle }
VARIABLE I 1 ;
VARIABLE TMP 1 ;
VARIABLE SNAME 4 ; {Spectrometer name}
VARIABLE FRMODE 1 ; {Fringe field mode }
VARIABLE MORDER 1 ; { Maximum order for transformations}
VARIABLE FORDER 1 ; {Order of forward maps }
VARIABLE RORDER 1 ; {Order of reconstruction map }
VARIABLE RES 1 4 ; {Resolution array }
VARIABLE TMPSPOS 1000 ; { Saved value of SPOS }
VARIABLE GMAP 2000 8 ; { Global transfer map }
VARIABLE RMAP 2000 5 ; { Reconstruction map }
{========================== Procedure declarations ===========================}
{ Output forward transformation data at an aperture and update internal maps }
PROCEDURE APERTURE LABEL REGION ;
WRITE 20 '!NAME: '&LABEL ;
WRITE 20 '!REGION: '&REGION ;
WRITE 20 '!OFFSET: '&SF(TMPSPOS,'(F25.16)')&' (in meters)' ;
WRITE 20 '!LENGTH: '&SF(SPOS,'(F25.16)')&' (canonical length in meters)' ;
PT 20 ; {Output data}
TMPSPOS := TMPSPOS + SPOS ;
ANM MAP GMAP GMAP ; UM ; {Update global map + reset}
WRITE 6 ' Aperture at S = '&S(TMPSPOS)&' '&LABEL ;
ENDPROCEDURE ;
{ Compute and output maps to inner aperture and exit of quad magnet. }
PROCEDURE MAGQUAD NAME LEFF Q A FRAC ;
VARIABLE DRIFT 1 ; VARIABLE LMID 1 ;
{ Compute the location of the inner aperture }
LMID := (LEFF*FRAC) ;
IF FRMODE#0 ; FR -1 ; MQ LEFF Q A ; ENDIF ; {Entrance fringe field}
FR 0 ; MQ LMID Q A ; {First part of quad}
APERTURE NAME&'_MID' 'FRONT' ;
MQ LEFF-LMID Q A ; {Second part of quad}
IF FRMODE#0 ; FR -2 ; MQ LEFF Q A ; ENDIF ; {Exit fringe field}
APERTURE NAME&'_MAGNETIC_EXIT' 'BACK' ;
FR FRMODE ; ENDPROCEDURE ; {Restore fringe field mode}
{ Q3 fieldmap }
PROCEDURE QUAD ;
VARIABLE IS 1 ;
LOOP IS 1 4 ; FIELDMAP IS 'SHMS_Q3' ; ENDLOOP ;
ENDPROCEDURE ;
{Dipole fieldmap}
PROCEDURE DIPOLE ;
VARIABLE IS 1 ;
LOOP IS 1 8 ; FIELDMAP IS 'SHMS_DIP' ; ENDLOOP ;
ENDPROCEDURE ;
{================================= Main Code =================================}
{ Beam specifications }
MORDER := 6 ; {Max order for calculations}
OV morder 3 0 ; {Order Value <order><phase dim><#par>}
RPM 11000.0 5.4858E-4 -1 ; {<momentum> <mass in amu> <charge>}
SB 0 .040 0 .050 .015 0 0 .15 0 0 0 ;
{ --> PX PA R12 PY PB R34 PT PD R56 PG PZ }
{ Spectrometer name }
SNAME := 'SHMS' ;
{ Fringe-field specifications.}
frmode := 3 ;
FR FRMODE ;
{ Magnet geometry }
ZBC := 1.76 ; {Center of bender}
Z1C := 4.140 ; {Center of Q1}
Z2C := 6.80 ; {Center of Q2}
Z3C := 9.45 ; {Center of Q3}
ZDC := 12.937; {Center of dipole - might not use for anything}
XDIP:= 0.26 ; {Dipole vertical offset}
DTILT:= 9.2*pi/180.0; {Dipole tilt}
DZF1:= sqrt(4.933^2+(1.632-XDIP)^2);
FTILT1:= atan((1.632-XDIP)/4.933);
FTILT2:= FTILT1-DTILT ;
DZF2:= DZF1*cos(FTILT2);
LB := 1.1522 ;
L1 := 2.44 ; {Physical length of Q1}
L2 := 2.369 ; {Physical length of Q2}
L3 := 2.369 ; {Physical length of Q3}
LD := 4.098 ; {Physical length of dipole}
LBE := 0.751 ; {Effective length of bender}
L1E := 1.879 ; {Effective length of Q1}
L2E := 1.64 ; {Effective length of Q2}
L3E := 1.64 ; {Effective length of Q3}
LDE := 2.90 ;
DRF:= (DZF2-LDE/2)/cos(DTILT);
{ Compute some drift distances }
DR0 := ZBC-(LB/2); {Drift from target to bender}
DR1 := (Z1C - ZBC) - ((LB + L1)/2) ; {Drift from Bender to Q1}
DR2 := (Z2C - Z1C) - ((L1 + L2)/2) ; {Drift from Q1 to Q2}
DR3 := (Z3C - Z2C) - ((L2 + L3)/2) ; {Drift from Q2 to Q3}
{ DR4 := (ZDC - Z3C) - ((L3 + LD)/2) ; {Drift from Q3 to dipole}}
DZD1:= XDIP/tan(DTILT);
DZD2:= (LDE/2-XDIP/sin(DTILT))/cos(DTILT);
DR4 := (ZDC-Z3C) - L3E/2 - DZD1 - DZD2 ; {Drift from Q3 to dipole}
DR0EN := (LB-LBE)/2; {Drift from bender mech to mag ent}
DR0EX := (LB-LBE)/2; {Drift from bender mag to mech ex}
DR1EN := (L1-L1E)/2; {Drift from Q1 mech to mag ent}
DR1EX := (L1-L1E)/2; {Drift from Q1 mag to mech ex}
DR2EN := (L2-L2E)/2; {Drift from Q2 mech to mag ent}
DR2EX := (L2-L2E)/2; {Drift from Q2 mag to mech ex}
DR3EN := (L3-L3E)/2; {Drift from Q3 mech to mag ent}
DR3EX := (L3-L3E)/2; {Drift from Q3 mag to mech ex}
DLEX := 0.599/cos(DTILT) ; {Drift from dipole mag to mech exit}
DRFOC := DRF-DLEX ;
{ QUAD STRENGTHS }
{COSY solution}
{Let Q1/Q2/Q3 all vary: ME(5,2) = -1.2}
Q1 := -2.036634 ;
Q2 := 4.326750 ;
Q3 := -2.862092 ;
{Let Q1/Q2/Q3 all vary: ME(5,2) = -0.8}
{ Q1 := -2.370969 ;}
{ Q2 := 4.330444 ;}
{ Q3 := -2.530578 ;}
{ Computation order specifications }
ASK forder 'Order for maps (1-'&SF(morder,'(i1)')&'): ' 1 morder ;
CO FORDER ; RORDER := FORDER ;
{ Begin composing forward maps }
qfile := SNAME&'_Q3S.dat' ; {Quad scaling symplectic map}
file := SNAME&'_fr'&sf(frmode,'(i1)')&'_for_maps.dat' ;
openf 20 file 'UNKNOWN' ;
FR FRMODE ;
UM ; SM GMAP ; TMPSPOS := SPOS ; {Initialize global map}
{ Insert splitter magnet }
DL DR0 ;
APERTURE 'BENDER_MECHANICAL_ENTRANCE' 'FULL';
DL DR0EN ;
APERTURE 'BENDER_MAGNETIC_ENTRANCE' 'FULL';
RA -90 ; DP 14.34959928 3.0 0.225 ; RA 90 ; {Bender}
APERTURE 'BENDER_MAGNETIC_EXIT' 'FULL' ;
DL DR0EX ;
APERTURE 'BENDER_MECHANICAL_EXIT' 'FULL' ;
{ QUAD 1 }
DL DR1 ; {Drift TO Q1}
APERTURE 'Q1_MECHANICAL_ENTRANCE' 'FULL' ;
DL DR1EN ;
APERTURE 'Q1_MAGNETIC_ENTRANCE' 'FULL' ;
MAGQUAD 'Q1' L1E Q1 0.25 1/2 ;
DL DR1EX ;
APERTURE 'Q1_MECHANICAL_EXIT' 'FULL' ;
{ QUAD 2 }
DL DR2 ; {Drift TO Q2}
APERTURE 'Q2_MECHANICAL_ENTRANCE' 'FULL' ;
DL DR2EN ;
APERTURE 'Q2_MAGNETIC_ENTRANCE' 'FULL' ;
MAGQUAD 'Q2' L2E Q2 0.35 1/2 ;
DL DR2EX ;
APERTURE 'Q2_MECHANICAL_EXIT' 'FULL' ;
{ QUAD 3 }
DL DR3 ; {Drift TO Q3}
APERTURE 'Q3_MECHANICAL_ENTRANCE' 'FULL' ;
DL DR3EN ;
APERTURE 'Q3_MAGNETIC_ENTRANCE' 'FULL' ;
MAGQUAD 'Q3' L3E Q3 0.35 1/2 ;
DL DR3EX ;
APERTURE 'Q3_MECHANICAL_EXIT' 'FULL' ;
DL 0.18 ; {dipole mechanical entrance}
APERTURE 'DIPOLE_MECHANICAL_ENTRANCE' 'D-FRONT' ;
DL 0.301 ; {dipole mechanical entrance}
APERTURE 'DIPOLE_FLARE' 'D-FRONT' ;
DL 0.394715 ; {drift to magnetic entrance}
APERTURE 'DIPOLE_MAGNETIC_ENTRANCE' 'D-FRONT' ;
{ Dipole }
{Break into 8 segments of 2.3 degrees = 18.4 deg total}
FR -1; DP 9.187419156 18.4 0.35 ; {calculate entrance fringe field}
FR 0 ; DP 9.187419156 2.3 0.35 ; {now use for first trans}
APERTURE 'DIPOLE_MID' 'dipole';
FR 0; {turn all fringe fields off}
LOOP I 1 6;
DP 9.187419156 2.3 0.35 ;
APERTURE 'DIPOLE_MID' 'dipole' ;
ENDLOOP ;
FR -2; DP 9.187419156 18.4 0.35 ; {calculate exit fringe field}
FR 0; DP 9.187419156 2.3 0.35 ;
APERTURE 'DIPOLE_MAGNETIC_EXIT' 'dipole' ;
FR FRMODE ;
DL DLEX ;
APERTURE 'DIPOLE_MECHANICAL_EXIT' 'drift' ; {dipole mechanical exit}
{ Focal Plane }
DL DRFOC ; {Drift to detector focal plane}
APERTURE 'FOCAL_PLANE' 'drift' ;
closef 20 ; {Done outputting forward maps}
{ Output global map in transport notation }
file := SNAME&'_fr'&sf(frmode,'(i1)')&'_for_global.dat' ;
openf 20 file 'UNKNOWN' ; UM ; AM GMAP ; PT 20 ; closef 20 ; UM ;
{ Some diagnostics }
WRITE 6 ' Q1-3, D1-F, Z1-M, LENGTH = ' (Q1)&(Q2)&(Q3) ;
WRITE 6 DR1&DR2&DR3&DR4&DRF ;
WRITE 6 Z1C&Z2C&Z3C&ZFM&SPOS ;
{ Convert GMAP from canonical to TRANSPORT form}
CATR GMAP MAP TMPSPOS ; spos := tmpspos ;
WRITE 6 ' Total length = '&S(CONS(SPOS))&' meters' ;
{ Output diagnostic matrix elements }
WRITE 6 ' ME(5,2) = '&S(ME(5,2)) ;
WRITE 6 ' ME(1,2) = '&S(ME(1,2)) ;
WRITE 6 ' ME(3,4) = '&S(ME(3,4)) ;
{ Compute focal plane tilt angle }
TILT := (180*atan(ME(1,1)*ME(1,26)/ME(1,6))/pi)+90 ;
write 6 ' Focal plane tilt ='&SF(tilt,'(f8.3)')&' degrees' ;
{ Compute RECON map }
RR1 MAP 0 0 .04 0 .04 .15 0 0 10000 RORDER RMAP RES ;
write 6 ' RECON resolutions = ' RES(1)&RES(2)&RES(3)&RES(4) ;
file := SNAME&'_fr'&sf(frmode,'(i1)')&'_rec.dat' ;
openf 20 file 'UNKNOWN' ; pmr rmap 20 ; closef 20 ;
ENDPROCEDURE ;
RUN ;
END ;
{------------------------------------------------------------------------------
Super-HMS spectrometer, with forward and reconstruction maps.
Adapted from D. Potterveld's 2005 SHMS work: D. Gaskell Sept. 2011
Author: D. Potterveld, Argonne National Lab, June 2005
------------------------------------------------------------------------------
}
INCLUDE 'JLAB' ;
PROCEDURE RUN ;
{=========================== Variable Declarations ===========================}
VARIABLE Z1C 1 ; VARIABLE L1 1 ;
VARIABLE Z2C 1 ; VARIABLE L2 1 ;
VARIABLE Z3C 1 ; VARIABLE L3 1 ;
VARIABLE ZDC 1 ; VARIABLE LD 1 ;
VARIABLE DZD1 1 ; VARIABLE DZD2 1;
VARIABLE DZF1 1 ; VARIABLE DZF2 1;
VARIABLE XDIP 1;
VARIABLE DTILT 1;
VARIABLE FTILT1 1; VARIABLE FTILT2 1;
VARIABLE ZDI 1 ; VARIABLE LDI 1 ;
VARIABLE ZFM 1 ; VARIABLE LFM 1 ;
VARIABLE ZBC 1 ; VARIABLE LB 1;
VARIABLE DR0 1;
VARIABLE DR1 1 ;
VARIABLE DR2 1 ;
VARIABLE DR3 1 ;
VARIABLE DR4 1 ;
VARIABLE DRD 1 ;
VARIABLE DRF 1 ;
VARIABLE Q1 1 ; { quadrupole strength }
VARIABLE Q2 1 ; { quadrupole strength }
VARIABLE Q3 1 ; { quadrupole strength }
VARIABLE DN1 1 ; { Dipole quadrupole index }
VARIABLE OBJ 1 ; { function used in evaluating first order focus}
VARIABLE NFIT 1 ; { max iterations in fit loop}
VARIABLE DOFIT 1 ; { flag for doing fit}
VARIABLE Q3SCALE 1 ; { flag for scaling Q3 }
VARIABLE FITTOL 1 ; { fit tolerance }
VARIABLE FILE 80 ; { filename}
VARIABLE QFILE 80 ; { filename}
VARIABLE LINE 80 ;
VARIABLE TUNITS 1 ;
VARIABLE NRAYA 1 ; VARIABLE NRAYB 1 ;
VARIABLE I 1 ;
VARIABLE TMP 1 ;
VARIABLE CRDEFL 1 ;
VARIABLE CRROT 1 ;
VARIABLE SNAME 4 ; {Spectrometer name}
VARIABLE FRMODE 1 ; {Fringe field mode }
VARIABLE MORDER 1 ; { Maximum order for transformations}
VARIABLE FORDER 1 ; {Order of forward maps }
VARIABLE RORDER 1 ; {Order of reconstruction map }
VARIABLE RES 1 4 ; {Resolution array }
VARIABLE NX 1 ; VARIABLE NZ 1 ; VARIABLE DX 1 ; VARIABLE DZ 1 ;
VARIABLE BYM 1 90 700 ;
VARIABLE TMPSPOS 1000 ; { Saved value of SPOS }
VARIABLE QSPOS 1000 ; { Saved value of SPOS for quad 3}
VARIABLE DSPOS 1000 ; { Saved value of SPOS for dipole }
VARIABLE FWDMAP 2000 8 ; { Saved transfer map }
VARIABLE QMAP 2000 8 ; { Saved transfer map for Q3 }
VARIABLE DMAP 2000 8 ; { Saved transfer map for dipole }
VARIABLE TRMAP 2000 8 ; { Forward map in TRANSPORT notation }
VARIABLE RMAP 2000 5 ; { Reconstruction map }
{========================== Procedure declarations ===========================}
PROCEDURE QUAD ;
VARIABLE IS 1 ;
LOOP IS 1 4 ; FIELDMAP IS 'SHMS_Q3' ; ENDLOOP ;
ENDPROCEDURE ;
PROCEDURE DIPOLE ;
VARIABLE IS 1 ;
LOOP IS 1 8 ; FIELDMAP IS 'SHMS_DIP' ; ENDLOOP ;
ENDPROCEDURE ;
{================================= Main Code =================================}
{ Computation order specifications }
MORDER := 6 ; {Max order for calculations}
ASK forder 'Please enter the order for maps: (1-'&SF(morder,'(i1)')&')'
1 morder ;
OV forder 3 0 ; {Order Value <order><phase dim><#par>}
CO FORDER ; RORDER := FORDER ;
{ Beam specifications }
RPM 11000.0 5.4858E-4 -1 ; {<momentum> <mass in amu> <charge>}
SB 0 .040 0 .050 .015 0 0 .15 0 0 0 ;
{ --> PX PA R12 PY PB R34 PT PD R56 PG PZ }
{ Spectrometer name }
SNAME := 'SHMS' ;
{ Fringe-field specifications.}
frmode := 3 ;
FR FRMODE ;
{ Magnet geometry }
ZBC := 1.76 ; {Center of bender}
Z1C := 4.140 ; {Center of Q1}
Z2C := 6.80 ; {Center of Q2}
Z3C := 9.45 ; {Center of Q3}
ZDC := 12.937; {Center of dipole - might not use for anything}
XDIP:= 0.26 ; {Dipole vertical offset}
DTILT:= 9.2*pi/180.0; {Dipole tilt}
DZF1:= sqrt(4.933^2+(1.632-XDIP)^2);
FTILT1:= atan((1.632-XDIP)/4.933);
FTILT2:= FTILT1-DTILT ;
DZF2:= DZF1*cos(FTILT2);
LB := 0.751 ; {Effective length of bender}
L1 := 1.879 ; {Effective length of Q1}
L2 := 1.64 ; {Effective length of Q2}
L3 := 1.64 ; {Effective length of Q3}
LD := 2.90;
{DRF := 3.65 ; {Drift from dipole exit to fp}}
DRF:= (DZF2-LD/2)/cos(DTILT);
{ for LSA tune }
{ Q1 := -1.756263 ; Q2 := 1.857066 ; Q3 := 0.8841793 ; DRF := DRF + 1 ; }
{ Q1 := -1.697080 ; Q2 := 2.195929 ; Q3 := 1.139401 ; DRF := DRF + 1 ; }
{ Q1 := -1.958055 ; Q2 := 2.15 ; Q3 := 0.9358300 ; DRF := 5.043861 ; }
{ Q1 := -2.3331 ; Q2 := 3.899 ; Q3 := -1.912845 ;}
Q1 := -2.044 ; Q2 := 4.3279 ; Q3 := -2.858 ;
{ Q1 := -2.3 ; Q2 := 4.330082 ; Q3 := -2.528626 ;}
{ Fitting options }
ASK dofit 'Fit QUAD STRENGTHS (0=no, 1=old-style, 2=new-style): ' 0 2 ;
NFIT := 0 ; IF DOFIT#0 ; NFIT := 400 ; ENDIF ;
IF DOFIT=1 ; FITTOL := 1E-10 ; ELSEIF 1=1 ; FITTOL := 1E-4 ; ENDIF ;
{ Begin composing forward maps }
{ IF DOFIT#0 ; } {Compute and save dipole map if fitting}
{ UM ; DIPOLE ; SM DMAP ; DSPOS := SPOS ;}
{ ENDIF ;}
FIT Q1 Q2 Q3 ; {Fitting loop}
{ Compute some drift distances }
DR0 := ZBC-(LB/2); {Drift from target to bender}
DR1 := (Z1C - ZBC) - ((LB + L1)/2) ; {Drift from Bender to Q1}
DR2 := (Z2C - Z1C) - ((L1 + L2)/2) ; {Drift from Q1 to Q2}
DR3 := (Z3C - Z2C) - ((L2 + L3)/2) ; {Drift from Q2 to Q3}
{ DR4 := (ZDC - Z3C) - ((L3 + LD)/2) ; {Drift from Q3 to dipole}}
DZD1:= XDIP/tan(DTILT);
DZD2:= (LD/2-XDIP/sin(DTILT))/cos(DTILT);
DR4 := (ZDC-Z3C) - L3/2 - DZD1 - DZD2 ; {Drift from Q3 to dipole}
UM ; TUNITS := 0 ;
IF DOFIT=2 ; CR ; focalrays 7 7 0.0 0.0 ; BP ;
ELSEIF 1=1 ; CR ; ER 1 3 1 3 1 3 1 1 ; BP ;
ENDIF ;
{ Insert splitter magnet }
DL DR0 ; {Drift to Bender}
RA -90 ; DP 14.34959928 3.0 0.225 ; RA 90 ; {Bender}
DL DR1 ; {Drift TO Q1}
MQ L1 Q1 0.25 ; {Q1}
{ MQ L1 Q1 0.2 ; } {Q1}
DL DR2 ; {Drift TO Q2}
MQ L2 Q2 0.35 ; {Q2}
{ MQ L2 Q2 0.3 ;} {Q2} {chen used 30}
DL DR3 ; {Drift to Q3}
MQ L3 Q3 0.35 ; {Q3}
{ MQ L3 Q3 0.3 ;} {Q3} {chen used 30}
DL DR4 ; {Drift to dipole}{ Dipole }
{ DP 8.874618 18.4 0.35 ;} {Idealized dipole}
DP 9.187419156 18.4 0.35 ; {Idealized dipole}
{ IF DOFIT#0 ;}
{ AM DMAP ; SPOS := SPOS + DSPOS ;}
{ ENDIF ; }
DL DRF ; {Drift to detector focal plane}
PS 0.3 ; {Mark reconstruction plane}
DL 4.0 ; {Extend rays for picture}
EP ; {End Picture}
{ PP -101 0 0 ; PP -102 0 90 ;}
DL -4.0 ; {Go back for optics calcs}
{ Some diagnostics }
WRITE 6 ' Q1-3, D1-F, Z1-M, LENGTH = ' (Q1)&(Q2)&(Q3) ;
WRITE 6 DR1&DR2&DR3&DR4&DRF ;
WRITE 6 Z1C&Z2C&Z3C&ZFM&SPOS ;
{ Compute focal objective function }
IF DOFIT=2 ; {New style}
FOCALOBJ OBJ 7 7 ;
ENDIF ;
IF DOFIT=1 ; {Old style}
SM FWDMAP ;
tmpspos := spos ; tunits := 1 ;
CATR MAP TRMAP SPOS ; um ; spos := tmpspos ; am TRMAP ;
{OBJ := ME(1,2)*ME(1,2)+ME(3,4)*ME(3,4) ;}
OBJ := ABS(ME(1,2))+ABS(ME(3,4))+1.0*ABS(ME(5,2)+1.2) ;
{OBJ := ABS(ME(1,2))+ABS(ME(3,4)) ;}
{Add in quadrature a term to bias towards large FP angles}
{ tmp := (180*atan(ME(1,1)*ME(1,26)/ME(1,6))/pi)+90 ;}
{ obj := obj + ((90-tmp)/100)^2 ;}
ENDIF ;
IF DOFIT#0;
WRITE 6 'OBJ = '&S(OBJ) ;
ENDIF ;
ENDFIT FITTOL NFIT 1 OBJ ;
{Convert map to transport form, if not done already}
IF TUNITS#1 ;
SM FWDMAP ; TUNITS := 1 ;
tmpspos := spos ; CATR MAP TRMAP SPOS ; um ; spos := tmpspos ; am TRMAP ;
ENDIF ;
WRITE 6 ' Q1-3, D1-F, Z1-M, LENGTH = ' (Q1)&(Q2)&(Q3) ;
WRITE 6 DR1&DR2&DR3&DR4&DRF ;
WRITE 6 Z1C&Z2C&Z3C&ZFM&SPOS ;
{ Output diagnostic matrix elements }
WRITE 6 ' ME(5,2) = '&S(ME(5,2)) ;
WRITE 6 ' ME(1,2) = '&S(ME(1,2)) ;
WRITE 6 ' ME(3,4) = '&S(ME(3,4)) ;
IF FORDER>2 ; WRITE 6 ' ME(3,444) = '&S(ME(3,444)) ; ENDIF ;
IF FORDER>4 ; WRITE 6 ' ME(3,44444) = '&S(ME(3,44444)) ; ENDIF ;
WRITE 6 ' ME(3,46) = '&S(ME(3,46)) ;
WRITE 6 ' ME(1,26) = '&S(ME(1,26)) ;
WRITE 6 ' Ratio (3,46)/(1,6) = '&S(ME(3,46)/ME(1,6)) ;
WRITE 6 ' ME(1,1) = '&S(ME(1,1)) ;
WRITE 6 ' ME(1,2) = '&S(ME(1,2)) ;
WRITE 6 ' ME(1,6) = '&S(ME(1,6)) ;
WRITE 6 ' ME(2,1) = '&S(ME(2,1)) ;
WRITE 6 ' ME(2,2) = '&S(ME(2,2)) ;
WRITE 6 ' ME(2,6) = '&S(ME(2,6)) ;
WRITE 6 ' ME(3,3) = '&S(ME(3,3)) ;
WRITE 6 ' ME(3,4) = '&S(ME(3,4)) ;
WRITE 6 ' ME(3,6) = '&S(ME(3,6)) ;
WRITE 6 ' ME(4,3) = '&S(ME(4,3)) ;
WRITE 6 ' ME(4,4) = '&S(ME(4,4)) ;
WRITE 6 ' ME(4,6) = '&S(ME(4,6)) ;
WRITE 6 ' Total length = '&S(CONS(SPOS))&' meters' ;
{ Compute focal plane tilt angle }
tmp := (180*atan(ME(1,1)*ME(1,26)/ME(1,6))/pi)+90 ;
write 6 ' Focal plane tilt ='&SF(tmp,'(f8.3)')&' degrees' ;
{ Output forward map }
{ This must be done by routine PT, starting with the map in COSY units. }
um ; spos := tmpspos ; am FWDMAP ;
file := SNAME&'_fr'&sf(frmode,'(i1)')&'_for.dat' ;
openf 20 file 'UNKNOWN' ; pt 20 ; closef 20 ;
um ; spos := tmpspos ; am TRMAP ;
{ Compute and output reconstruction map }
RR1 MAP 0 0 .04 0 .04 .15 0 0 1000 RORDER RMAP RES ;
write 6 ' RECON resolutions = ' RES(1)&RES(2)&RES(3)&RES(4) ;
file := SNAME&'_fr'&sf(frmode,'(i1)')&'_rec.dat' ;
openf 20 file 'UNKNOWN' ;
pmr rmap 20 ; closef 20 ;
{ Output to postscript file }
PG -10 -10 ;
{ Output to UGS device }
{
PP -9 0 90 ;
write 6 ' Type <CR> to proceed: ' ;
read 5 LINE ;
PP -9 0 0 ;
write 6 ' Type <CR> to proceed: ' ;
read 5 LINE ;
}
{ End of output block }
ENDPROCEDURE ;
RUN ;
END ;
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment