source: Sophya/trunk/SophyaExt/CodeMinuit/code/mnbins.F@ 2403

Last change on this file since 2403 was 2403, checked in by cmv, 22 years ago

Creation du module de code source de MINUIT (CERNLIB) extrait par CMV

cmv 11/06/2003

File size: 2.0 KB
Line 
1*
2* $Id: mnbins.F,v 1.1.1.1 2003-06-11 14:18:26 cmv Exp $
3*
4* $Log: not supported by cvs2svn $
5* Revision 1.1.1.1 1996/03/07 14:31:28 mclareni
6* Minuit
7*
8*
9#include "minuit/pilot.h"
10 SUBROUTINE MNBINS(A1,A2,NAA,BL,BH,NB,BWID)
11#include "minuit/d506dp.inc"
12C SUBROUTINE TO DETERMINE REASONABLE HISTOGRAM INTERVALS
13C GIVEN ABSOLUTE UPPER AND LOWER BOUNDS A1 AND A2
14C AND DESIRED MAXIMUM NUMBER OF BINS NAA
15C PROGRAM MAKES REASONABLE BINNING FROM BL TO BH OF WIDTH BWID
16C F. JAMES, AUGUST, 1974 , stolen for Minuit, 1988
17 PARAMETER (ZERO=0.0, ONE=1.0)
18 AL = MIN(A1,A2)
19 AH = MAX(A1,A2)
20 IF (AL.EQ.AH) AH = AL + 1.
21C IF NAA .EQ. -1 , PROGRAM USES BWID INPUT FROM CALLING ROUTINE
22 IF (NAA .EQ. -1) GO TO 150
23 10 NA = NAA - 1
24 IF (NA .LT. 1) NA = 1
25C GET NOMINAL BIN WIDTH IN EXPON FORM
26 20 AWID = (AH-AL)/FLOAT(NA)
27 LOG = INT(DLOG10(DBLE(AWID)))
28 IF (AWID .LE. ONE) LOG=LOG-1
29 SIGFIG = AWID * (10.00 **(-LOG))
30C ROUND MANTISSA UP TO 2, 2.5, 5, OR 10
31 IF(SIGFIG .GT. 2.0) GO TO 40
32 SIGRND = 2.0
33 GO TO 100
34 40 IF (SIGFIG .GT. 2.5) GO TO 50
35 SIGRND = 2.5
36 GO TO 100
37 50 IF(SIGFIG .GT. 5.0) GO TO 60
38 SIGRND =5.0
39 GO TO 100
40 60 SIGRND = 1.0
41 LOG = LOG + 1
42 100 CONTINUE
43 BWID = SIGRND*10.0**LOG
44 GO TO 200
45C GET NEW BOUNDS FROM NEW WIDTH BWID
46 150 IF (BWID .LE. ZERO) GO TO 10
47 200 CONTINUE
48 ALB = AL/BWID
49 LWID=ALB
50 IF (ALB .LT. ZERO) LWID=LWID-1
51 BL = BWID*FLOAT(LWID)
52 ALB = AH/BWID + 1.0
53 KWID = ALB
54 IF (ALB .LT. ZERO) KWID=KWID-1
55 BH = BWID*FLOAT(KWID)
56 NB = KWID-LWID
57 IF (NAA .GT. 5) GO TO 240
58 IF (NAA .EQ. -1) RETURN
59C REQUEST FOR ONE BIN IS DIFFICULT CASE
60 IF (NAA .GT. 1 .OR. NB .EQ. 1) RETURN
61 BWID = BWID*2.0
62 NB = 1
63 RETURN
64 240 IF (2*NB .NE. NAA) RETURN
65 NA = NA + 1
66 GO TO 20
67 END
Note: See TracBrowser for help on using the repository browser.