--- gpamela/gpspe/gpudiffusion.F 2006/05/02 11:56:23 3.1 +++ gpamela/gpspe/gpudiffusion.F 2010/04/23 10:06:36 3.3 @@ -26,19 +26,17 @@ #include "gpstripspe.inc" #include "gpgeo.inc" #include "gpgene.inc" +#include "gpkey.inc" - INTEGER IACT,NUMVOL(20) + INTEGER IACT,NUMVOL(20),numsens REAL DELOSS, TRAPAR(7),xyzspa(3),VPOS(3),xyzspac(3) REAL BMAGNET(3),STRPOSL(3),STRPOSG(3) INTEGER ONCE DATA ONCE /0/ SAVE ONCE - IF(NUMVOL(1).NE.0) THEN - NSPEPLANE=NUMVOL(1) - ELSE IF(NUMVOL(1).EQ.0) THEN - NSPEPLANE=6 - ENDIF + NSPEPLANE=INT((NUMVOL(2)-1)/6)+1 + numsens=NUMVOL(2)-(NSPEPLANE-1)*6 VPOS(1)=TRAPAR(1)-STEP/2.*TRAPAR(4) @@ -53,6 +51,7 @@ zup=TSPA(3)-xyzspa(3) zdown=TSPA(3)+xyzspa(3) + nearstripx=nearstx(xyzspa(1),xyzspa(2)) if(nearstripx.ne.0) then @@ -69,17 +68,18 @@ * v is along -Z; B is along -Y --> shift is along -X * ***************************************************************************** - + IF(FFIELD.NE.0) THEN CALL GUFLD(VPOS,BMAGNET) c -c to be checked c - xshift=xyzspa(1)-zdown*hallmob*1.e-4*BMAGNET(2)/10. - IF(NSPEPLANE.EQ.6) xshift=xyzspa(1)+ + xshift=xyzspa(1)+zdown*hallmob*1.e-4*BMAGNET(2)/10. + IF(NSPEPLANE.EQ.6) xshift=xyzspa(1)- + zdown*hallmob*1.e-4*BMAGNET(2)/10. - + else + xshift=xyzspa(1) + endif * * Now widths of Gaussian functions can be calculated by means of @@ -111,14 +111,14 @@ qfract=0.5*erfc((xqdivjm1-xshift)/(sqrt(2.)*sigxi)) + -0.5*erfc((xqdivj-xshift)/(sqrt(2.)*sigxi)) - proxtanti(NSPEPLANE,numvol(2),j)= - + proxtanti(NSPEPLANE,numvol(2),j)+delossmev*qfract - IF(GLOBSTRIPX(NSPEPLANE,NUMVOL(2),J).EQ.0.) THEN + proxtanti(NSPEPLANE,numsens,j)= + + proxtanti(NSPEPLANE,numsens,j)+delossmev*qfract + IF(GLOBSTRIPX(NSPEPLANE,numsens,J).EQ.0.) THEN STRPOSL(1)=XSTRIP(J) STRPOSL(2)=0. STRPOSL(3)=0. CALL GDTOM(STRPOSL,STRPOSG,1) - GLOBSTRIPX(NSPEPLANE,NUMVOL(2),J)=STRPOSG(1) + GLOBSTRIPX(NSPEPLANE,numsens,J)=STRPOSG(1) ENDIF enddo @@ -157,15 +157,15 @@ qfract=0.5*erfc((yqdivjm1-xyzspa(2))/(sqrt(2.)*sigyi)) + -0.5*erfc((yqdivj-xyzspa(2))/(sqrt(2.)*sigyi)) - proytanti(NSPEPLANE,numvol(2),j)= - + proytanti(NSPEPLANE,numvol(2),j)+delossmev*qfract + proytanti(NSPEPLANE,numsens,j)= + + proytanti(NSPEPLANE,numsens,j)+delossmev*qfract - IF(GLOBSTRIPY(NSPEPLANE,NUMVOL(2),J).EQ.0.) THEN + IF(GLOBSTRIPY(NSPEPLANE,numsens,J).EQ.0.) THEN STRPOSL(1)=0. STRPOSL(2)=YSTRIP(J) STRPOSL(3)=0. CALL GDTOM(STRPOSL,STRPOSG,1) - GLOBSTRIPY(NSPEPLANE,NUMVOL(2),J)=STRPOSG(2) + GLOBSTRIPY(NSPEPLANE,numsens,J)=STRPOSG(2) ENDIF enddo