24 SUBROUTINE mnexcm(FCN,COMAND,PLIST,LLIST,IERFLG,FUTIL)
38 IMPLICIT DOUBLE PRECISION (
a-
h,
o-
z)
60 2/mn7ext/ u(mne) ,alim(mne) ,blim(mne)
61 3/mn7err/ erp(mni) ,ern(mni) ,werr(mni) ,globcc(mni)
62 4/mn7inx/ nvarl(mne) ,niofex(mne),nexofi(mni)
63 5/mn7int/
x(mni) ,xt(mni) ,dirin(mni)
64 6/mn7fx2/
xs(mni) ,xts(mni) ,dirins(mni)
65 7/mn7der/ grd(mni) ,g2(mni) ,gstep(mni) ,gin(mne) ,dgrd(mni)
66 8/mn7fx3/ grds(mni) ,g2s(mni) ,gsteps(mni)
67 9/mn7fx1/ ipfix(mni) ,npfix
68 a/mn7var/ vhmat(mnihl)
69 b/mn7vat/ vthmat(mnihl)
70 c/mn7sim/
p(mni,mni+1),pstar(mni),pstst(mni) ,pbar(mni),prho(mni)
72 parameter(maxdbg=10, maxstk=10, maxcwd=20,
maxp=30, maxcpt=101)
75 d/mn7npr/ maxint ,npar ,maxext ,nu
76 e/mn7iou/ isysrd ,isyswr ,isyssa ,npagwd ,npagln ,newpag
77 e/mn7io2/ istkrd(maxstk) ,nstkrd ,istkwr(maxstk) ,nstkwr
78 f/mn7tit/ cfrom ,cstatu ,ctitl ,cword ,cundef ,cvrsn ,covmes
79 g/mn7flg/ isw(7) ,idbg(0:maxdbg) ,nblock ,icomnd
80 h/mn7min/ amin ,
up ,edm ,fval3 ,epsi ,apsi ,dcovar
81 i/mn7cnv/ nfcn ,nfcnmx ,nfcnlc ,nfcnfr ,itaur,istrat,nwrmes(2)
83 k/mn7log/ lwarn ,lrepor ,limset ,lnolim ,lnewmn ,lphead
84 l/mn7cns/ epsmac ,epsma2 ,vlimlo ,vlimhi ,undefi ,bigedm,updflt
85 m/mn7rpt/ xpt(maxcpt) ,ypt(maxcpt)
86 n/mn7cpt/ chpt(maxcpt)
87 o/mn7xcr/ xmidcr ,ymidcr ,xdircr ,ydircr ,ke1cr ,ke2cr
88 CHARACTER CTITL*50, CWORD*(maxcwd), CUNDEF*10, CFROM*8,
89 + cvrsn*6, covmes(0:3)*22, cstatu*10, chpt*1
90 LOGICAL LWARN, LREPOR, LIMSET, LNOLIM, LNEWMN, LPHEAD
96 dimension xptu(mxpt), yptu(mxpt)
98 CHARACTER*10 CNAME(40), CNEWAY, CHWHY*18, C26*30, CVBLNK*2
99 LOGICAL LTOFIX, LFIXED, LFREED
102 CHARACTER CLOWER*26, CUPPER*26
103 DATA clower/
'abcdefghijklmnopqrstuvwxyz'/
104 DATA cupper/
'ABCDEFGHIJKLMNOPQRSTUVWXYZ'/
107 DATA cname( 1) /
'MINImize ' /
108 DATA cname( 2) /
'SEEk ' /
109 DATA cname( 3) /
'SIMplex ' /
110 DATA cname( 4) /
'MIGrad ' /
111 DATA cname( 5) /
'MINOs ' /
112 DATA cname( 6) /
'SET xxx ' /
113 DATA cname( 7) /
'SHOw xxx ' /
114 DATA cname( 8) /
'TOP of pag' /
115 DATA cname( 9) /
'FIX ' /
116 DATA cname(10) /
'REStore ' /
117 DATA cname(11) /
'RELease ' /
118 DATA cname(12) /
'SCAn ' /
119 DATA cname(13) /
'CONtour ' /
120 DATA cname(14) /
'HESse ' /
121 DATA cname(15) /
'SAVe ' /
122 DATA cname(16) /
'IMProve ' /
123 DATA cname(17) /
'CALl fcn ' /
124 DATA cname(18) /
'STAndard ' /
125 DATA cname(19) /
'END ' /
126 DATA cname(20) /
'EXIt ' /
127 DATA cname(21) /
'RETurn ' /
128 DATA cname(22) /
'CLEar ' /
129 DATA cname(23) /
'HELP ' /
130 DATA cname(24) /
'MNContour ' /
131 DATA cname(25) /
'STOp ' /
132 DATA cname(26) /
'JUMp ' /
133 DATA cname(27) /
' ' /
134 DATA cname(28) /
' ' /
135 DATA cname(29) /
' ' /
136 DATA cname(30) /
' ' /
137 DATA cname(31) /
' ' /
138 DATA cname(32) /
' ' /
139 DATA cname(33) /
' ' /
141 DATA cname(34) /
'COVARIANCE' /
142 DATA cname(35) /
'PRINTOUT ' /
143 DATA cname(36) /
'GRADIENT ' /
144 DATA cname(37) /
'MATOUT ' /
145 DATA cname(38) /
'ERROR DEF ' /
146 DATA cname(39) /
'LIMITS ' /
147 DATA cname(40) /
'PUNCH ' /
160 IF (lk .GT. maxcwd) lk=maxcwd
165 IF (cword(icol:icol) .EQ. clower(let:let))
166 + cword(icol:icol) = cupper(let:let)
173 IF (iw .LE. llist) word7(iw) = plist(iw)
177 IF (cword(1:7).NE.
'SET PRI' .OR. word7(1).GE.0.)
THEN 178 IF (isw(5) .GE. 0)
THEN 180 IF (lnow .GT. 4) lnow=4
181 WRITE (isyswr,25) icomnd,cword(1:lk),(plist(
i),
i=1,lnow)
182 25
FORMAT (1
h ,10(1
h*)/
' **',i5,
' **',
a,4g12.4)
184 IF (llist .GT. lnow)
THEN 186 IF (llist .GT.
maxp)
THEN 190 WRITE (cvblnk,
'(I2)') lk
191 c26 =
'(11H **********,'//cvblnk//
'X,4G12.4)' 192 WRITE (isyswr,c26) (plist(
i),
i=lnow+1,kll)
194 WRITE (isyswr,
'(1H ,10(1H*))' )
195 IF (inonde .GT. 0)
WRITE (isyswr,
'(1H ,10(1H*),A,I3,A)')
196 +
' ERROR: ABOVE CALL TO MNEXCM TRIED TO PASS MORE THAN ',
197 +
maxp,
' PARAMETERS.' 201 IF (nfcnmx .LE. 0) nfcnmx = 200 + 100*npar + 5*npar**2
203 IF (epsi .LE. zero) epsi = 0.1 *
up 210 IF (cword(1:3) .EQ. cname(
i)(1:3))
GO TO 90
212 WRITE (isyswr,
'(11X,''UNKNOWN COMMAND IGNORED:'',A)') comand
217 IF (cword(1:4) .EQ.
'MINO')
i = 5
218 IF (
i.NE.6 .AND.
i.NE.7 .AND.
i.NE.8 .AND.
i.NE.23)
THEN 223 GO TO ( 400, 200, 300, 400, 500, 700, 700, 800, 900,1000,
224 1 1100,1200,1300,1400,1500,1600,1700,1800,1900,1900,
225 2 1900,2200,2300,2400,1900,2600,3300,3300,3300,3300,
226 3 3300,3300,3300,3400,3500,3600,3700,3800,3900,4000) ,
i 228 200
CALL mnseek(fcn,futil)
231 300
CALL mnsimp(fcn,futil)
232 IF (isw(4) .LT. 1) ierflg = 4
240 IF (isw(4) .GE. 1)
GO TO 5000
242 IF (isw(1) .EQ. 1)
GO TO 5000
243 IF (cword(1:3) .EQ.
'MIG')
GO TO 5000
244 nfcnmx = nfcnmx + nf - nfcn
247 IF (isw(1) .EQ. 1)
GO TO 5000
248 nfcnmx = nfcnmx + nf - nfcn
250 IF (isw(4) .GE. 1) ierflg = 0
255 nsuper = nfcn + 2*(npar+1)*nfcnmx
261 IF (.NOT. lnewmn)
GO TO 5000
265 IF (nfcn .LT. nsuper)
GO TO 510
266 WRITE (isyswr,
'(/'' TOO MANY FUNCTION CALLS. MINOS GIVES UP''/)')
270 700
CALL mnset(fcn,futil)
274 WRITE (isyswr,
'(1H1)')
282 IF (llist .EQ. 0)
THEN 283 WRITE (isyswr,
'(A,A)') cword,
': NO PARAMETERS REQUESTED ' 286 DO 950 ilist= 1, llist
288 chwhy =
' IS UNDEFINED.' 289 IF (iext .LE. 0)
GO TO 930
290 IF (iext .GT. nu)
GO TO 930
291 IF (nvarl(iext) .LT. 0)
GO TO 930
292 chwhy =
' IS CONSTANT. ' 293 IF (nvarl(iext) .EQ. 0)
GO TO 930
296 chwhy =
' ALREADY FIXED.' 297 IF (iint .EQ. 0)
GO TO 930
299 IF (ierr .EQ. 0)
THEN 305 chwhy =
' ALREADY VARIABLE.' 306 IF (iint .GT. 0)
GO TO 930
312 930
WRITE (isyswr,
'(A,I4,A,A)')
' PARAMETER',iext,chwhy,
' IGNORED.' 314 IF (lfreed .OR. lfixed)
CALL mnrset(0)
322 IF (isw(5) .GT. 1)
CALL mnprin(5,amin)
326 IF (it.GT.1 .OR. it.LT.0)
GO TO 1005
327 lfreed = (npfix .GT. 0)
336 1005
WRITE (isyswr,
'(A,I4)')
' IGNORED. UNKNOWN ARGUMENT:',it
340 1100 ltofix = .
false.
345 IF (iext .LE. 0)
GO TO 1210
347 IF (iext .LE. nu) it2 = niofex(iext)
348 IF (it2 .LE. 0)
GO TO 1250
349 1210
CALL mnscan(fcn,futil)
351 1250
WRITE (isyswr,
'(A,I4,A)')
' PARAMETER',iext,
' NOT VARIABLE.' 359 IF (npar .EQ. 2)
THEN 363 WRITE (isyswr,
'(A,A)') cword,
': NO PARAMETERS REQUESTED ' 369 CALL mncntr(fcn,ke1,ke2,ierrf,futil)
370 IF (ierrf .GT. 0) ierflg = 3
376 IF (isw(5) .GE. 0)
CALL mnprin(2, amin)
377 IF (isw(5) .GE. 1)
CALL mnmatu(1)
387 IF (lnewmn)
GO TO 400
391 1700 iflag = word7(1)
394 CALL fcn(nparx,gin,
f,u,iflag,futil)
397 IF (
f .NE. undefi)
THEN 398 IF (amin .EQ. undefi)
THEN 401 ELSE IF (
f .LT. amin)
THEN 405 IF (isw(5).GE.0 .AND. iflag.LE.5 .AND. nowprt.EQ.1)
407 IF (iflag .EQ. 3) fval3=
f 409 IF (iflag .GT. 5)
CALL mnrset(1)
416 IF (fval3 .NE. amin .AND. it .EQ. 0)
THEN 419 +
WRITE (isyswr,
'(/A/)')
' CALL TO USER FUNCTION WITH IFLAG = 3' 421 CALL fcn(nparx,gin,
f,u,iflag,futil)
426 IF (cword(1:3) .EQ.
'END') ierflg = 10
427 IF (cword(1:3) .EQ.
'RET') ierflg = 12
432 IF (isw(5) .GE. 1)
WRITE (isyswr,
'(A)')
433 +
' MINUIT MEMORY CLEARED. NO PARAMETERS NOW DEFINED.' 441 IF (cword(icol:icol) .EQ.
' ')
GO TO 2310
446 IF (kcol .EQ. 0)
THEN 449 comd = cword(kcol:lk)
458 IF (ke1.EQ.0 .AND. npar.EQ.2)
THEN 463 IF (nptu .LE. 0) nptu=20
464 IF (nptu .GT. mxpt) nptu = mxpt
465 nfcnmx = 100*(nptu+5)*(npar+1)
466 CALL mncont(fcn,ke1,ke2,nptu,xptu,yptu,ierrf,futil)
467 IF (ierrf .LT. nptu) ierflg = 4
468 IF (ierrf .EQ. -1) ierflg = 3
473 IF (step .LE. zero) step = 2.
479 2620
x(
i) =
x(
i) + rno*step*werr(
i)
486 WRITE (isyswr,
'(10X,A)')
' BLANK COMMAND IGNORED.' 492 WRITE (isyswr,
'(A)')
' THE "COVARIANCE" COMMAND IS OSBSOLETE.',
493 +
' THE COVARIANCE MATRIX IS NOW SAVED IN A DIFFERENT FORMAT',
494 +
' WITH THE "SAVE" COMMAND AND READ IN WITH:"SET COVARIANCE"' 499 cneway =
'SET PRInt ' 507 cneway =
'SHOW COVar' 511 cneway =
'SET ERRdef' 515 cneway =
'SET LIMits' 521 3100
WRITE (isyswr, 3101) cword,cneway
522 3101
FORMAT (
' OBSOLETE COMMAND:',1
x,a10,5
x,
'PLEASE USE:',1
x,a10)
524 IF (cword .EQ.
'SAVE ')
GO TO 1500
integer npitbl real *nx parameter(n=101, npitbl=46, nx=n-1) real *8 uconst
subroutine mnmnos(FCN, FUTIL)
block data include Zlatfit h c fitting region data data data data data d0 data data d0 data data h g *is for param c g data up(2, 1)/7.0d0/
dE dx *! Nuc Int sampling table e
subroutine mnexcm(FCN, COMAND, PLIST, LLIST, IERFLG, FUTIL)
block data cblkElemag data *AnihiE ! Eposi< 1 TeV, anihilation considered *X0/365.667/, ! radiation length of air in kg/m2 *Ecrit/81.e-3/, ! critical energy of air in GeV *MaxComptonE/1./, ! compton is considered below 1 GeV *MaxPhotoE/1.e-3/, ! above this, PhotoElectric effect neg. *MinPhotoProdE/153.e-3/, ! below 153 MeV, no gp --> hadrons ! scattering const not MeV *Knockon true
subroutine mnmigr(FCN, FUTIL)
subroutine mnprin(INKODE, FVAL)
subroutine mnimpr(FCN, FUTIL)
! constants thru Cosmos real ! if multiplied to deg radian Torad ! light velocity m sec ! infinty ! kg m2 *Togpcm2 g cm2 ! g cm2 *Tokgpm2 kg m2 ! cm *Tom m ! m *Tocm cm ! g cm3 *Tokgpm3 kg m3 ! kg m3 *Togpcm3 g cm3 ! sec *Tonsec nsec ! Tesla m ! Avogadro *A2deninv ! mfp *n * xs
subroutine mnhelp(COMD, LOUT)
subroutine mnamin(FCN, FUTIL)
********************block data cblkHeavy ********************integer j data *HeavyG2symbol p
********************block data cblkHeavy ********************integer j data *HeavyG2symbol *data *HeavyG2code kiron data j
subroutine mnhess(FCN, FUTIL)
subroutine mncntr(FCN, KE1, KE2, IERRF, FUTIL)
dE dx *! Nuc Int sampling table d
subroutine mnsimp(FCN, FUTIL)
subroutine mnset(FCN, FUTIL)
dE dx *! Nuc Int sampling table b
block data include Zlatfit h c fitting region data data data data data d0 data data d0 data data m
subroutine mncont(FCN, KE1, KE2, NPTU, XPTU, YPTU, IERRF, FUTIL)
subroutine mnfixp(IINT, IERR)
block data cblkElemag data *AnihiE ! Eposi< 1 TeV, anihilation considered *X0/365.667/, ! radiation length of air in kg/m2 *Ecrit/81.e-3/, ! critical energy of air in GeV *MaxComptonE/1./, ! compton is considered below 1 GeV *MaxPhotoE/1.e-3/, ! above this, PhotoElectric effect neg. *MinPhotoProdE/153.e-3/, ! below 153 MeV, no gp --> hadrons ! scattering const not MeV *Knockon ! knockon is considered Obsolete *PhotoProd false
dE dx *! Nuc Int sampling table h
dE dx *! Nuc Int sampling table g
subroutine mncuve(FCN, FUTIL)
subroutine mnscan(FCN, FUTIL)
subroutine mnseek(FCN, FUTIL)
subroutine mnrn15(VAL, INSEED)
! structure defining a particle at production ! Basic idea of what is to be contained in ! the particle structue is that dynamical ones should be included those derivable from the particle code ! is not included ******************************************************type fmom momentum sequence union map real e endmap map real * x
dE dx *! Nuc Int sampling table f
dE dx *! Nuc Int sampling table c