C=============================================================================== SUBROUTINE CTVMMF (PRINT, NM, VXI) C=============================================================================== C Derivative contributions for the CTVM mass constraint fitting C--Input parameter C Nm The mass constraint index C------------------------------------------------------------------------------- IMPLICIT NONE #include INTEGER PRINT INTEGER NM DOUBLE PRECISION VXI(MAXDIM) DOUBLE PRECISION SUM INTEGER I,J, Nt,Nv, LmF,NvF,NtF REAL C C------------------------------------------------------------------------------- LmF = MOFF + Nm C Difference in m**2 of tracks and constraint / 2 SUM = SQRT(McnP4(1,Nm)**2 + McnP4(2,Nm)**2 + McnP4(3,Nm)**2) SUM = (McnP4(4,Nm) + SUM) * (McnP4(4,Nm) - SUM) SUM = DSQRT(SUM) VXI(LmF) = 0.5 * (CMASS(Nm)+SUM) * (CMASS(Nm)-SUM) C Loop over tracks contributing to this mass constraint DO 50 Nv=1,NVERTX NvF = VOFF(Nv) DO 40 NT=1,NTRACK IF (.NOT.TrkVtx(Nt,Nv)) GO TO 40 IF (.NOT.TrkMcn(Nt,Nm)) GO TO 40 C Index into matrix equations for track NT NtF = TOFF(Nt) C dM**2/dc, dM**2/dphi, dM**2/dcot(theta) C = PAR0(1,Nt) + PARDIF(1,Nt) SUM = -McnP4(4,Nm)*TrkP4(Nt,6)**2/TrkP4(Nt,4) SUM = (SUM + McnP4(3,Nm)*TrkP4(Nt,3)) / C SUM = SUM - McnP4(1,Nm)*DDA(Nt,1) - McnP4(2,Nm)*DDA(Nt,5) VMAT(NtF+1,LmF) = SUM SUM =-McnP4(1,Nm)*DDA(Nt,2) - McnP4(2,Nm)*DDA(Nt,6) VMAT(NtF+2,LmF) = SUM SUM = (McnP4(4,Nm)*TrkP4(Nt,3) / TrkP4(Nt,4)-McnP4(3,Nm)) SUM = TrkP4(Nt,5) * SUM VMAT(NtF+3,LmF) = SUM C dM**2/dXsv, dM**2/dYsv VMAT(NvF+1,LmF) = VMAT(NvF+1,LmF) & - McnP4(1,Nm)*DDA(Nt,3)-McnP4(2,Nm)*DDA(Nt,7) VMAT(NvF+2,LmF) = VMAT(NvF+2,LmF) & - McnP4(1,Nm)*DDA(Nt,4)-McnP4(2,Nm)*DDA(Nt,8) D IF (PRINT.GT.0) THEN D WRITE(PRINT,1045) NT, VXI(LmF) D @, (VMAT(NvF+J,LmF),J=1,2),(VMAT(NtF+J,LmF),J=1,3) D1045 FORMAT(/,' Mcn, Tk',I3, 1P,E11.3,2X,5E11.3) D END IF 40 CONTINUE C Continue loop on tracks 50 CONTINUE C------------------------------------------------------------------------------- C===Return to Caller: C Symmetrize the derivative matrix DO I=1,MATDIM-1 DO J=I+1,MATDIM VMAT(J,I) = VMAT(I,J) ENDDO ENDDO RETURN END