*
* $Id: locatf.F,v 1.5 2009-06-12 18:39:59 pam-rm2 Exp $
*
* $Log: locatf.F,v $
* Revision 1.5  2009-06-12 18:39:59  pam-rm2
* - Introduced user-defined names of output files and random seeds number.
* Users can do it use options of PamVMCApplication constructor:
* PamVMCApplication(const char* name,  const char *title, const char*
* filename="pamtest", Int_t seed=0).
* The Random object that I use is TRandom3 object which has astronomical
* large period (in case of default initialization 0). All random generators
* in the code use this object by calling of gRandom singleton which keeps
* it.
*
* - Corrected TOF digitization routine. No problems with TDC hits due to
* hadronic interactions anymore.
*
* - Some small changes was done to compile code under Root 5.23. +
* geant4_vmc v. 2.6 without any warnings
*
* - Some classes of PamG4RunConfiguartion was changed for geant4_vmc v.
* 2.6.Some obsolete classes was deleted as soon as developers implemented
* regions.
*
* - Navigation was changed from "geomRootToGeant4" to "geomRoot", because on
* VMC web page written that as soon as Geant4 has no option ONLY/MANY
* translation of overlapped geometry to Geant4 through VGM could be wrong.
* I'd like to stay with Root navigation:
* http://root.cern.ch/root/vmc/Geant4VMC.html. This should be default
* option.
*
* - New Tracker digitization routine written by Sergio was implemented
*
* - PamVMC again became compatible with geant4_vmc v.2.5 and ROOT 5.20.
*  The problem was that ROOT developers introduced in TVirtualMC class a new
* method SetMagField and new base class:TVirtualMagField from which
* user-defined classes shoukd be derived
*
* Revision 1.1  2009-02-19 17:46:26  nikolas
* Cleaning up before releasing
*
* Revision 1.2  1996/05/24 10:56:52  jamie
* add locatr entry for consistency with wrup
*
* Revision 1.1.1.1  1996/02/15 17:48:49  mclareni
* Kernlib
*
*
#if !defined(CERNLIB_QMIBMVF)
*#include "kernnum/pilot.h"
*
*     Name change (consistancy)
*
      FUNCTION LOCATR(ARRAY,LENGTH,OBJECT)
      DIMENSION ARRAY(*)
      LOCATR=LOCATF(ARRAY,LENGTH,OBJECT)
      END

      FUNCTION LOCATF(ARRAY,LENGTH,OBJECT)
C         BINARY SEARCH THRU 'ARRAY'  TO FIND  'OBJECT'
C         'ARRAY' IS ASSUMED TO BE SORTED PRIOR TO CALL
C         IF MATCH IS FOUND, FUNCTION RETURNS POSITION OF ELEMENT
C         IF NO MATCH FOUND, FUNCTION GIVES NEGATIVE OF NEAREST ELEMENT
C                                SMALLER THAN OBJECT
C         F. JAMES ,  SEPT.,1974
      DIMENSION ARRAY(2)
      NABOVE = LENGTH + 1
      NBELOW = 0
   10 IF (NABOVE-NBELOW .LE. 1)  GO TO 200
      MIDDLE = (NABOVE+NBELOW) / 2
      IF (OBJECT - ARRAY(MIDDLE))  100, 180, 140
  100 NABOVE = MIDDLE
      GO TO 10
  140 NBELOW = MIDDLE
      GO TO 10
  180 LOCATF = MIDDLE
      GO TO 300
  200 LOCATF = -NBELOW
  300 RETURN
      END
#endif
