--- tracker/ground/source/analysis/momanhough.F 2006/03/08 15:00:39 1.1 +++ tracker/ground/source/analysis/momanhough.F 2006/03/20 19:43:33 1.2 @@ -18,7 +18,7 @@ include '../common/level1.f' include '../common/level2.f' - include '../common/momanhough_init.f' +c include '../common/momanhough_init.f' * flag to set debug mode logical DEBUG @@ -61,7 +61,7 @@ # endif integer minevent !first event to be analysed - logical FIMAGE ! +c logical FIMAGE ! COMMON/QUEST/IQUEST(100) @@ -406,116 +406,124 @@ print*,iev,' ** ',nev2 endif -*------------------------------------------------------------------------------- -* STEP 1 -*------------------------------------------------------------------------------- -* X-Y cluster association -* -* Clusters are associated to form COUPLES -* Clusters not associated in any couple are called SINGLETS -* -* Track identification (Hough transform) and fitting is first done on couples. -* Hence singlets are possibly added to the track. -* -* Variables assigned by the routine "cl_to_couples" are those in the -* common blocks: -* - common/clusters/cl_good -* - common/couples/clx,cly,ncp_plane,ncp_tot,cp_useds1,cp_useds2 -* - common/singlets/ncls,cls,cl_single -*------------------------------------------------------------------------------- -*------------------------------------------------------------------------------- +* /////////////////////////////////////////////// +* \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ iflag=0 - call cl_to_couples(iflag) + call track_finding(iflag) if(iflag.eq.1)then !bad event - goto 880 !fill ntp and go to next event - endif - -*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -* selezione di tracce pulite per diagnostica -*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -c$$$ if(DEBUG)then -c$$$ do ip=1,nplanes -c$$$ if(ncp_plane(ip).ne.1)good2=.false. -c$$$ enddo -c$$$c if(good2.eq.0)goto 100!next event -c$$$c if(good2.eq.0)goto 880!fill ntp and go to next event + goto 880 !fill ntp and go to next event + endif +c$$$*------------------------------------------------------------------------------- +c$$$* STEP 1 +c$$$*------------------------------------------------------------------------------- +c$$$* X-Y cluster association +c$$$* +c$$$* Clusters are associated to form COUPLES +c$$$* Clusters not associated in any couple are called SINGLETS +c$$$* +c$$$* Track identification (Hough transform) and fitting is first done on couples. +c$$$* Hence singlets are possibly added to the track. +c$$$* +c$$$* Variables assigned by the routine "cl_to_couples" are those in the +c$$$* common blocks: +c$$$* - common/clusters/cl_good +c$$$* - common/couples/clx,cly,ncp_plane,ncp_tot,cp_useds1,cp_useds2 +c$$$* - common/singlets/ncls,cls,cl_single +c$$$*------------------------------------------------------------------------------- +c$$$*------------------------------------------------------------------------------- +c$$$ +c$$$ iflag=0 +c$$$ call cl_to_couples(iflag) +c$$$ if(iflag.eq.1)then !bad event +c$$$ goto 880 !fill ntp and go to next event c$$$ endif - - - -*----------------------------------------------------- -*----------------------------------------------------- -* HOUGH TRASFORM -*----------------------------------------------------- -*----------------------------------------------------- - - -*------------------------------------------------------------------------------- -* STEP 2 -*------------------------------------------------------------------------------- -* -* Association of couples to form -* - DOUBLETS in YZ view -* - TRIPLETS in XZ view -* -* Variables assigned by the routine "cp_to_doubtrip" are those in the -* common blocks: -* - common/hough_param/ -* $ alfayz1, !Y0 -* $ alfayz2, !tg theta-yz -* $ alfaxz1, !X0 -* $ alfaxz2, !tg theta-xz -* $ alfaxz3 !1/r -* - common/doublets/ndblt,cpyz1,cpyz2 -* - common/triplets/ntrpt,cpxz1,cpxz2,cpxz3 -*------------------------------------------------------------------------------- -*------------------------------------------------------------------------------- - - iflag=0 - call cp_to_doubtrip(iflag) - if(iflag.eq.1)then !bad event - goto 880 !fill ntp and go to next event - endif - - -*------------------------------------------------------------------------------- -* STEP 3 -*------------------------------------------------------------------------------- -* -* Classification of doublets and triplets to form CLOUDS, -* according to distance in parameter space. -* -* cloud = cluster of points (doublets/triplets) in parameter space -* -* -* -* Variables assigned by the routine "doub_to_YZcloud" are those in the -* common blocks: -* - common/clouds_yz/ -* $ nclouds_yz -* $ ,alfayz1_av,alfayz2_av -* $ ,ptcloud_yz,db_cloud,cpcloud_yz -* -* Variables assigned by the routine "trip_to_XZcloud" are those in the -* common blocks: -* common/clouds_xz/ -* $ nclouds_xz xz2_av,alfaxz3_av -* $ ,ptcloud_xz,tr_cloud,cpcloud_xz -*------------------------------------------------------------------------------- -*------------------------------------------------------------------------------- - - iflag=0 - call doub_to_YZcloud(iflag) - if(iflag.eq.1)then !bad event - goto 880 !fill ntp and go to next event - endif - iflag=0 - call trip_to_XZcloud(iflag) - if(iflag.eq.1)then !bad event - goto 880 !fill ntp and go to next event - endif - +c$$$ +c$$$*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +c$$$* selezione di tracce pulite per diagnostica +c$$$*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +c$$$c$$$ if(DEBUG)then +c$$$c$$$ do ip=1,nplanes +c$$$c$$$ if(ncp_plane(ip).ne.1)good2=.false. +c$$$c$$$ enddo +c$$$c$$$c if(good2.eq.0)goto 100!next event +c$$$c$$$c if(good2.eq.0)goto 880!fill ntp and go to next event +c$$$c$$$ endif +c$$$ +c$$$ +c$$$ +c$$$*----------------------------------------------------- +c$$$*----------------------------------------------------- +c$$$* HOUGH TRASFORM +c$$$*----------------------------------------------------- +c$$$*----------------------------------------------------- +c$$$ +c$$$ +c$$$*------------------------------------------------------------------------------- +c$$$* STEP 2 +c$$$*------------------------------------------------------------------------------- +c$$$* +c$$$* Association of couples to form +c$$$* - DOUBLETS in YZ view +c$$$* - TRIPLETS in XZ view +c$$$* +c$$$* Variables assigned by the routine "cp_to_doubtrip" are those in the +c$$$* common blocks: +c$$$* - common/hough_param/ +c$$$* $ alfayz1, !Y0 +c$$$* $ alfayz2, !tg theta-yz +c$$$* $ alfaxz1, !X0 +c$$$* $ alfaxz2, !tg theta-xz +c$$$* $ alfaxz3 !1/r +c$$$* - common/doublets/ndblt,cpyz1,cpyz2 +c$$$* - common/triplets/ntrpt,cpxz1,cpxz2,cpxz3 +c$$$*------------------------------------------------------------------------------- +c$$$*------------------------------------------------------------------------------- +c$$$ +c$$$ iflag=0 +c$$$ call cp_to_doubtrip(iflag) +c$$$ if(iflag.eq.1)then !bad event +c$$$ goto 880 !fill ntp and go to next event +c$$$ endif +c$$$ +c$$$ +c$$$*------------------------------------------------------------------------------- +c$$$* STEP 3 +c$$$*------------------------------------------------------------------------------- +c$$$* +c$$$* Classification of doublets and triplets to form CLOUDS, +c$$$* according to distance in parameter space. +c$$$* +c$$$* cloud = cluster of points (doublets/triplets) in parameter space +c$$$* +c$$$* +c$$$* +c$$$* Variables assigned by the routine "doub_to_YZcloud" are those in the +c$$$* common blocks: +c$$$* - common/clouds_yz/ +c$$$* $ nclouds_yz +c$$$* $ ,alfayz1_av,alfayz2_av +c$$$* $ ,ptcloud_yz,db_cloud,cpcloud_yz +c$$$* +c$$$* Variables assigned by the routine "trip_to_XZcloud" are those in the +c$$$* common blocks: +c$$$* common/clouds_xz/ +c$$$* $ nclouds_xz xz2_av,alfaxz3_av +c$$$* $ ,ptcloud_xz,tr_cloud,cpcloud_xz +c$$$*------------------------------------------------------------------------------- +c$$$*------------------------------------------------------------------------------- +c$$$ +c$$$ iflag=0 +c$$$ call doub_to_YZcloud(iflag) +c$$$ if(iflag.eq.1)then !bad event +c$$$ goto 880 !fill ntp and go to next event +c$$$ endif +c$$$ iflag=0 +c$$$ call trip_to_XZcloud(iflag) +c$$$ if(iflag.eq.1)then !bad event +c$$$ goto 880 !fill ntp and go to next event +c$$$ endif +c$$$ c***************************************************** cccccc 01/12/2005 modified by elena if(DEBUG)then @@ -526,202 +534,211 @@ endif c***************************************************** -*------------------------------------------------------------------------------- -* STEP 4 (ITERATED until any other physical track isn't found) -*------------------------------------------------------------------------------- -* -* YZ and XZ clouds are combined in order to obtain the initial guess -* of the candidate-track parameters. -* A minimum number of matching couples between YZ and XZ clouds is required. -* -* A TRACK CANDIDATE is defined by -* - the couples resulting from the INTERSECTION of the two clouds, and -* - the associated track parameters (evaluated by performing a zero-order -* track fitting) -* -* The NTRACKS candidate-track parameters are stored in common block: -* -* - common/track_candidates/NTRACKS,AL_STORE -* $ ,XV_STORE,YV_STORE,ZV_STORE -* $ ,XM_STORE,YM_STORE,ZM_STORE -* $ ,RESX_STORE,RESY_STORE -* $ ,AXV_STORE,AYV_STORE -* $ ,XGOOD_STORE,YGOOD_STORE -* $ ,CP_STORE,RCHI2_STORE -* -*------------------------------------------------------------------------------- -*------------------------------------------------------------------------------- - ntrk=0 !counter of identified physical tracks - -11111 continue !<<<<<<< come here when performing a new search iflag=0 - call clouds_to_ctrack(iflag) - if(iflag.eq.1)then !no candidate tracks found - goto 880 !fill ntp and go to next event - endif - - FIMAGE=.false. !processing best track (not track image) - ibest=0 !best track among candidates - iimage=0 !track image -* ------------- select the best track ------------- - rchi2best=1000000000. - do i=1,ntracks - if(RCHI2_STORE(i).lt.rchi2best.and. - $ RCHI2_STORE(i).gt.0)then - ibest=i - rchi2best=RCHI2_STORE(i) - endif - enddo - if(ibest.eq.0)goto 880 !>> no good candidates -*------------------------------------------------------------------------------- -* The best track candidate (ibest) is selected and a new fitting is performed. -* Previous to this, the track is refined by: -* - possibly adding new COUPLES or SINGLETS from the missing planes -* - evaluating the coordinates with improved PFAs -* ( angle-dependent ETA algorithms ) -*------------------------------------------------------------------------------- - - 1212 continue !<<<<< come here to fit track-image - - if(.not.FIMAGE)then !processing best candidate - icand=ibest - else !processing image - icand=iimage - iimage=0 - endif - if(icand.eq.0)then - print*,'HAI FATTO UN CASINO!!!!!! icand = ',icand - $ ,ibest,iimage - return - endif - -* *-*-*-*-*-*-*-*-*-*-*-*-*-*-* - call refine_track(icand) -* *-*-*-*-*-*-*-*-*-*-*-*-*-*-* - -* ********************************************************** -* ************************** FIT *** FIT *** FIT *** FIT *** -* ********************************************************** - do i=1,5 - AL(i)=dble(AL_STORE(i,icand)) - enddo - ifail=0 !error flag in chi2 computation - jstep=0 !# minimization steps - - call mini_2(jstep,ifail) - if(ifail.ne.0) then - if(DEBUG)then - print *, - $ '*** MINIMIZATION FAILURE *** (mini_2) ' - $ ,iev - endif - chi2=-chi2 - endif - - if(DEBUG)then - print*,'----------------------------- improved track coord' -22222 format(i2,' * ',3f10.4,' --- ',4f10.4,' --- ',2f4.0,2f10.5) - do ip=1,6 - write(*,22222)ip,zm(ip),xm(ip),ym(ip) - $ ,xm_A(ip),ym_A(ip),xm_B(ip),ym_B(ip) - $ ,xgood(ip),ygood(ip),resx(ip),resy(ip) - enddo - endif - -c rchi2=chi2/dble(ndof) - if(DEBUG)then - print*,' ' - print*,'****** SELECTED TRACK *************' - print*,'# R. chi2 RIG' - print*,' --- ',chi2,' --- ' - $ ,1./abs(AL(5)) - print*,'***********************************' - endif -* ********************************************************** -* ************************** FIT *** FIT *** FIT *** FIT *** -* ********************************************************** - - -* ------------- search if the track has an IMAGE ------------- -* ------------- (also this is stored ) ------------- - if(FIMAGE)goto 122 !>>> jump! (this is already an image) -* now search for track-image, by comparing couples IDs - do i=1,ntracks - iimage=i - do ip=1,nplanes - if( CP_STORE(nplanes-ip+1,icand).ne. - $ -1*CP_STORE(nplanes-ip+1,i) )iimage=0 - enddo - if( iimage.ne.0.and. -c $ RCHI2_STORE(i).le.CHI2MAX.and. -c $ RCHI2_STORE(i).gt.0.and. - $ .true.)then - if(DEBUG)print*,'Track candidate ',iimage - $ ,' >>> TRACK IMAGE >>> of' - $ ,ibest - goto 122 !image track found - endif - enddo - 122 continue - -* --- and store the results -------------------------------- - ntrk = ntrk + 1 !counter of found tracks - if(.not.FIMAGE - $ .and.iimage.eq.0) image(ntrk)= 0 - if(.not.FIMAGE - $ .and.iimage.ne.0)image(ntrk)=ntrk+1 !this is the image of the next - if(FIMAGE) image(ntrk)=ntrk-1 !this is the image of the previous - - call fill_level2_tracks(ntrk) !==> good2=.true. -c print*,'++++++++++ iimage,fimage,ntrk,image ' -c $ ,iimage,fimage,ntrk,image(ntrk) - - if(ntrk.eq.NTRKMAX)then - if(DEBUG) - $ print*, - $ '** warning ** number of identified '// - $ 'tracks exceeds vector dimension ' - $ ,'( ',NTRKMAX,' )' -cc good2=.false. - goto 880 !fill ntp and go to next event - endif - if(iimage.ne.0)then - FIMAGE=.true. ! - goto 1212 !>>> fit image-track - endif - -* --- then remove selected clusters (ibest+iimage) from clouds ---- - call clean_XYclouds(ibest) + call track_fitting(iflag) if(iflag.eq.1)then !bad event - goto 880 !fill ntp and go to next event - endif + goto 880 !fill ntp and go to next event + endif -* ********************************************************** -* condition to start a new search -* ********************************************************** - ixznew=0 - do ixz=1,nclouds_xz - if(ptcloud_xz(ixz).ge.nptxz_min)ixznew=1 - enddo - iyznew=0 - do iyz=1,nclouds_yz - if(ptcloud_yz(iyz).ge.nptyz_min)iyznew=1 - enddo - - if(ixznew.ne.0.and. - $ iyznew.ne.0.and. - $ rchi2best.le.CHI2MAX.and. -c $ rchi2best.lt.15..and. - $ .true.)then - if(DEBUG)then - print*,'***** NEW SEARCH ****' - endif - goto 11111 !try new search - - endif -* ********************************************** +c$$$ +c$$$*------------------------------------------------------------------------------- +c$$$* STEP 4 (ITERATED until any other physical track isn't found) +c$$$*------------------------------------------------------------------------------- +c$$$* +c$$$* YZ and XZ clouds are combined in order to obtain the initial guess +c$$$* of the candidate-track parameters. +c$$$* A minimum number of matching couples between YZ and XZ clouds is required. +c$$$* +c$$$* A TRACK CANDIDATE is defined by +c$$$* - the couples resulting from the INTERSECTION of the two clouds, and +c$$$* - the associated track parameters (evaluated by performing a zero-order +c$$$* track fitting) +c$$$* +c$$$* The NTRACKS candidate-track parameters are stored in common block: +c$$$* +c$$$* - common/track_candidates/NTRACKS,AL_STORE +c$$$* $ ,XV_STORE,YV_STORE,ZV_STORE +c$$$* $ ,XM_STORE,YM_STORE,ZM_STORE +c$$$* $ ,RESX_STORE,RESY_STORE +c$$$* $ ,AXV_STORE,AYV_STORE +c$$$* $ ,XGOOD_STORE,YGOOD_STORE +c$$$* $ ,CP_STORE,RCHI2_STORE +c$$$* +c$$$*------------------------------------------------------------------------------- +c$$$*------------------------------------------------------------------------------- +c$$$ ntrk=0 !counter of identified physical tracks +c$$$ +c$$$11111 continue !<<<<<<< come here when performing a new search +c$$$ +c$$$ iflag=0 +c$$$ call clouds_to_ctrack(iflag) +c$$$ if(iflag.eq.1)then !no candidate tracks found +c$$$ goto 880 !fill ntp and go to next event +c$$$ endif +c$$$ +c$$$ FIMAGE=.false. !processing best track (not track image) +c$$$ ibest=0 !best track among candidates +c$$$ iimage=0 !track image +c$$$* ------------- select the best track ------------- +c$$$ rchi2best=1000000000. +c$$$ do i=1,ntracks +c$$$ if(RCHI2_STORE(i).lt.rchi2best.and. +c$$$ $ RCHI2_STORE(i).gt.0)then +c$$$ ibest=i +c$$$ rchi2best=RCHI2_STORE(i) +c$$$ endif +c$$$ enddo +c$$$ if(ibest.eq.0)goto 880 !>> no good candidates +c$$$*------------------------------------------------------------------------------- +c$$$* The best track candidate (ibest) is selected and a new fitting is performed. +c$$$* Previous to this, the track is refined by: +c$$$* - possibly adding new COUPLES or SINGLETS from the missing planes +c$$$* - evaluating the coordinates with improved PFAs +c$$$* ( angle-dependent ETA algorithms ) +c$$$*------------------------------------------------------------------------------- +c$$$ +c$$$ 1212 continue !<<<<< come here to fit track-image +c$$$ +c$$$ if(.not.FIMAGE)then !processing best candidate +c$$$ icand=ibest +c$$$ else !processing image +c$$$ icand=iimage +c$$$ iimage=0 +c$$$ endif +c$$$ if(icand.eq.0)then +c$$$ print*,'HAI FATTO UN CASINO!!!!!! icand = ',icand +c$$$ $ ,ibest,iimage +c$$$ return +c$$$ endif +c$$$ +c$$$* *-*-*-*-*-*-*-*-*-*-*-*-*-*-* +c$$$ call refine_track(icand) +c$$$* *-*-*-*-*-*-*-*-*-*-*-*-*-*-* +c$$$ +c$$$* ********************************************************** +c$$$* ************************** FIT *** FIT *** FIT *** FIT *** +c$$$* ********************************************************** +c$$$ do i=1,5 +c$$$ AL(i)=dble(AL_STORE(i,icand)) +c$$$ enddo +c$$$ ifail=0 !error flag in chi2 computation +c$$$ jstep=0 !# minimization steps +c$$$ +c$$$ call mini_2(jstep,ifail) +c$$$ if(ifail.ne.0) then +c$$$ if(DEBUG)then +c$$$ print *, +c$$$ $ '*** MINIMIZATION FAILURE *** (mini_2) ' +c$$$ $ ,iev +c$$$ endif +c$$$ chi2=-chi2 +c$$$ endif +c$$$ +c$$$ if(DEBUG)then +c$$$ print*,'----------------------------- improved track coord' +c$$$22222 format(i2,' * ',3f10.4,' --- ',4f10.4,' --- ',2f4.0,2f10.5) +c$$$ do ip=1,6 +c$$$ write(*,22222)ip,zm(ip),xm(ip),ym(ip) +c$$$ $ ,xm_A(ip),ym_A(ip),xm_B(ip),ym_B(ip) +c$$$ $ ,xgood(ip),ygood(ip),resx(ip),resy(ip) +c$$$ enddo +c$$$ endif +c$$$ +c$$$c rchi2=chi2/dble(ndof) +c$$$ if(DEBUG)then +c$$$ print*,' ' +c$$$ print*,'****** SELECTED TRACK *************' +c$$$ print*,'# R. chi2 RIG' +c$$$ print*,' --- ',chi2,' --- ' +c$$$ $ ,1./abs(AL(5)) +c$$$ print*,'***********************************' +c$$$ endif +c$$$* ********************************************************** +c$$$* ************************** FIT *** FIT *** FIT *** FIT *** +c$$$* ********************************************************** +c$$$ +c$$$ +c$$$* ------------- search if the track has an IMAGE ------------- +c$$$* ------------- (also this is stored ) ------------- +c$$$ if(FIMAGE)goto 122 !>>> jump! (this is already an image) +c$$$* now search for track-image, by comparing couples IDs +c$$$ do i=1,ntracks +c$$$ iimage=i +c$$$ do ip=1,nplanes +c$$$ if( CP_STORE(nplanes-ip+1,icand).ne. +c$$$ $ -1*CP_STORE(nplanes-ip+1,i) )iimage=0 +c$$$ enddo +c$$$ if( iimage.ne.0.and. +c$$$c $ RCHI2_STORE(i).le.CHI2MAX.and. +c$$$c $ RCHI2_STORE(i).gt.0.and. +c$$$ $ .true.)then +c$$$ if(DEBUG)print*,'Track candidate ',iimage +c$$$ $ ,' >>> TRACK IMAGE >>> of' +c$$$ $ ,ibest +c$$$ goto 122 !image track found +c$$$ endif +c$$$ enddo +c$$$ 122 continue +c$$$ +c$$$* --- and store the results -------------------------------- +c$$$ ntrk = ntrk + 1 !counter of found tracks +c$$$ if(.not.FIMAGE +c$$$ $ .and.iimage.eq.0) image(ntrk)= 0 +c$$$ if(.not.FIMAGE +c$$$ $ .and.iimage.ne.0)image(ntrk)=ntrk+1 !this is the image of the next +c$$$ if(FIMAGE) image(ntrk)=ntrk-1 !this is the image of the previous +c$$$ +c$$$ call fill_level2_tracks(ntrk) !==> good2=.true. +c$$$c print*,'++++++++++ iimage,fimage,ntrk,image ' +c$$$c $ ,iimage,fimage,ntrk,image(ntrk) +c$$$ +c$$$ if(ntrk.eq.NTRKMAX)then +c$$$ if(DEBUG) +c$$$ $ print*, +c$$$ $ '** warning ** number of identified '// +c$$$ $ 'tracks exceeds vector dimension ' +c$$$ $ ,'( ',NTRKMAX,' )' +c$$$cc good2=.false. +c$$$ goto 880 !fill ntp and go to next event +c$$$ endif +c$$$ if(iimage.ne.0)then +c$$$ FIMAGE=.true. ! +c$$$ goto 1212 !>>> fit image-track +c$$$ endif +c$$$ +c$$$* --- then remove selected clusters (ibest+iimage) from clouds ---- +c$$$ call clean_XYclouds(ibest) +c$$$ if(iflag.eq.1)then !bad event +c$$$ goto 880 !fill ntp and go to next event +c$$$ endif +c$$$ +c$$$* ********************************************************** +c$$$* condition to start a new search +c$$$* ********************************************************** +c$$$ ixznew=0 +c$$$ do ixz=1,nclouds_xz +c$$$ if(ptcloud_xz(ixz).ge.nptxz_min)ixznew=1 +c$$$ enddo +c$$$ iyznew=0 +c$$$ do iyz=1,nclouds_yz +c$$$ if(ptcloud_yz(iyz).ge.nptyz_min)iyznew=1 +c$$$ enddo +c$$$ +c$$$ if(ixznew.ne.0.and. +c$$$ $ iyznew.ne.0.and. +c$$$ $ rchi2best.le.CHI2MAX.and. +c$$$c $ rchi2best.lt.15..and. +c$$$ $ .true.)then +c$$$ if(DEBUG)then +c$$$ print*,'***** NEW SEARCH ****' +c$$$ endif +c$$$ goto 11111 !try new search +c$$$ +c$$$ endif +c$$$* ********************************************** +c$$$ * >>>>>>>>>>>>>>>>>>> NT-UPLE filling <<<<<<<<<<<<<<<<<<<< * + + + + + + + + + + + + + + + + + * / \ / \ / \ / \ / \ / \ / \ / \ / \ / \ / \ / \ / \ / \ / \ / \ / @@ -772,6 +789,10 @@ 8800 continue + +* /////////////////////////////////////////////// +* \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ + call HCDIR('//LEVEL2',' ') call HFNT(ntp_level2) !fill LEVEL2 nt-uple if(.not.DBG_FILLED.and.DEBUG)