26 |
#include "gpstripspe.inc" |
#include "gpstripspe.inc" |
27 |
#include "gpgeo.inc" |
#include "gpgeo.inc" |
28 |
#include "gpgene.inc" |
#include "gpgene.inc" |
29 |
|
#include "gpkey.inc" |
30 |
|
|
31 |
INTEGER IACT,NUMVOL(20) |
INTEGER IACT,NUMVOL(20),numsens |
32 |
REAL DELOSS, TRAPAR(7),xyzspa(3),VPOS(3),xyzspac(3) |
REAL DELOSS, TRAPAR(7),xyzspa(3),VPOS(3),xyzspac(3) |
33 |
REAL BMAGNET(3),STRPOSL(3),STRPOSG(3) |
REAL BMAGNET(3),STRPOSL(3),STRPOSG(3) |
34 |
INTEGER ONCE |
INTEGER ONCE |
35 |
DATA ONCE /0/ |
DATA ONCE /0/ |
36 |
SAVE ONCE |
SAVE ONCE |
37 |
|
|
38 |
IF(NUMVOL(1).NE.0) THEN |
NSPEPLANE=INT((NUMVOL(2)-1)/6)+1 |
39 |
NSPEPLANE=NUMVOL(1) |
numsens=NUMVOL(2)-(NSPEPLANE-1)*6 |
|
ELSE IF(NUMVOL(1).EQ.0) THEN |
|
|
NSPEPLANE=6 |
|
|
ENDIF |
|
40 |
|
|
41 |
|
|
42 |
VPOS(1)=TRAPAR(1)-STEP/2.*TRAPAR(4) |
VPOS(1)=TRAPAR(1)-STEP/2.*TRAPAR(4) |
51 |
zup=TSPA(3)-xyzspa(3) |
zup=TSPA(3)-xyzspa(3) |
52 |
zdown=TSPA(3)+xyzspa(3) |
zdown=TSPA(3)+xyzspa(3) |
53 |
|
|
54 |
|
|
55 |
nearstripx=nearstx(xyzspa(1),xyzspa(2)) |
nearstripx=nearstx(xyzspa(1),xyzspa(2)) |
56 |
if(nearstripx.ne.0) then |
if(nearstripx.ne.0) then |
57 |
|
|
68 |
* v is along -Z; B is along -Y --> shift is along -X |
* v is along -Z; B is along -Y --> shift is along -X |
69 |
* |
* |
70 |
***************************************************************************** |
***************************************************************************** |
71 |
|
IF(FFIELD.NE.0) THEN |
72 |
CALL GUFLD(VPOS,BMAGNET) |
CALL GUFLD(VPOS,BMAGNET) |
73 |
|
|
74 |
c |
c |
|
c to be checked |
|
75 |
c |
c |
76 |
xshift=xyzspa(1)-zdown*hallmob*1.e-4*BMAGNET(2)/10. |
xshift=xyzspa(1)+zdown*hallmob*1.e-4*BMAGNET(2)/10. |
77 |
IF(NSPEPLANE.EQ.6) xshift=xyzspa(1)+ |
IF(NSPEPLANE.EQ.6) xshift=xyzspa(1)- |
78 |
+ zdown*hallmob*1.e-4*BMAGNET(2)/10. |
+ zdown*hallmob*1.e-4*BMAGNET(2)/10. |
79 |
|
|
80 |
|
else |
81 |
|
xshift=xyzspa(1) |
82 |
|
endif |
83 |
|
|
84 |
* |
* |
85 |
* Now widths of Gaussian functions can be calculated by means of |
* Now widths of Gaussian functions can be calculated by means of |
111 |
qfract=0.5*erfc((xqdivjm1-xshift)/(sqrt(2.)*sigxi)) |
qfract=0.5*erfc((xqdivjm1-xshift)/(sqrt(2.)*sigxi)) |
112 |
+ -0.5*erfc((xqdivj-xshift)/(sqrt(2.)*sigxi)) |
+ -0.5*erfc((xqdivj-xshift)/(sqrt(2.)*sigxi)) |
113 |
|
|
114 |
proxtanti(NSPEPLANE,numvol(2),j)= |
proxtanti(NSPEPLANE,numsens,j)= |
115 |
+ proxtanti(NSPEPLANE,numvol(2),j)+delossmev*qfract |
+ proxtanti(NSPEPLANE,numsens,j)+delossmev*qfract |
116 |
IF(GLOBSTRIPX(NSPEPLANE,NUMVOL(2),J).EQ.0.) THEN |
IF(GLOBSTRIPX(NSPEPLANE,numsens,J).EQ.0.) THEN |
117 |
STRPOSL(1)=XSTRIP(J) |
STRPOSL(1)=XSTRIP(J) |
118 |
STRPOSL(2)=0. |
STRPOSL(2)=0. |
119 |
STRPOSL(3)=0. |
STRPOSL(3)=0. |
120 |
CALL GDTOM(STRPOSL,STRPOSG,1) |
CALL GDTOM(STRPOSL,STRPOSG,1) |
121 |
GLOBSTRIPX(NSPEPLANE,NUMVOL(2),J)=STRPOSG(1) |
GLOBSTRIPX(NSPEPLANE,numsens,J)=STRPOSG(1) |
122 |
ENDIF |
ENDIF |
123 |
|
|
124 |
enddo |
enddo |
157 |
qfract=0.5*erfc((yqdivjm1-xyzspa(2))/(sqrt(2.)*sigyi)) |
qfract=0.5*erfc((yqdivjm1-xyzspa(2))/(sqrt(2.)*sigyi)) |
158 |
+ -0.5*erfc((yqdivj-xyzspa(2))/(sqrt(2.)*sigyi)) |
+ -0.5*erfc((yqdivj-xyzspa(2))/(sqrt(2.)*sigyi)) |
159 |
|
|
160 |
proytanti(NSPEPLANE,numvol(2),j)= |
proytanti(NSPEPLANE,numsens,j)= |
161 |
+ proytanti(NSPEPLANE,numvol(2),j)+delossmev*qfract |
+ proytanti(NSPEPLANE,numsens,j)+delossmev*qfract |
162 |
|
|
163 |
IF(GLOBSTRIPY(NSPEPLANE,NUMVOL(2),J).EQ.0.) THEN |
IF(GLOBSTRIPY(NSPEPLANE,numsens,J).EQ.0.) THEN |
164 |
STRPOSL(1)=0. |
STRPOSL(1)=0. |
165 |
STRPOSL(2)=YSTRIP(J) |
STRPOSL(2)=YSTRIP(J) |
166 |
STRPOSL(3)=0. |
STRPOSL(3)=0. |
167 |
CALL GDTOM(STRPOSL,STRPOSG,1) |
CALL GDTOM(STRPOSL,STRPOSG,1) |
168 |
GLOBSTRIPY(NSPEPLANE,NUMVOL(2),J)=STRPOSG(2) |
GLOBSTRIPY(NSPEPLANE,numsens,J)=STRPOSG(2) |
169 |
ENDIF |
ENDIF |
170 |
|
|
171 |
enddo |
enddo |