diff --git a/CALIBRATION/hodo_calib/.gitignore b/CALIBRATION/hodo_calib/.gitignore
new file mode 100644
index 0000000000000000000000000000000000000000..40514c5fb4efe423e5d1ee0f591e78e884595fe5
--- /dev/null
+++ b/CALIBRATION/hodo_calib/.gitignore
@@ -0,0 +1,10 @@
+fort.15
+hmsfort.37
+hmstofcal.179
+shmsfort.37
+tofcal.adchist
+tofcal.out
+tofcal.param
+tofcal.parampass1
+tofcal.tdchist
+tofcal
diff --git a/CALIBRATION/hodo_calib/Maketof b/CALIBRATION/hodo_calib/Maketof
new file mode 100755
index 0000000000000000000000000000000000000000..41260f4b912c4b2d76c6957c489e1047882dfb27
--- /dev/null
+++ b/CALIBRATION/hodo_calib/Maketof
@@ -0,0 +1 @@
+gfortran -W -ff2c -fbounds-check -fno-automatic  -fdefault-real-8  tofcal.f -L$CERN_ROOT/lib -lmathlib -lpacklib -lkernlib  -o tofcal
diff --git a/CALIBRATION/hodo_calib/hmstofcal.inp b/CALIBRATION/hodo_calib/hmstofcal.inp
new file mode 100644
index 0000000000000000000000000000000000000000..325dbd14d83cd7cd629217f788fdc97b58a26240
--- /dev/null
+++ b/CALIBRATION/hodo_calib/hmstofcal.inp
@@ -0,0 +1,8 @@
+hmsfort.37
+hmstofcal.53411
+sostofcal.46765
+htmp
+hmstofcal
+
+
+
diff --git a/CALIBRATION/hodo_calib/shmstofcal.inp b/CALIBRATION/hodo_calib/shmstofcal.inp
new file mode 100644
index 0000000000000000000000000000000000000000..bfb05b8427e4f06ac0ae9ff00a7eb951871e4aa9
--- /dev/null
+++ b/CALIBRATION/hodo_calib/shmstofcal.inp
@@ -0,0 +1,8 @@
+shmsfort.37
+hmstofcal.53411
+sostofcal.46765
+htmp
+shmstofcal
+
+
+
diff --git a/CALIBRATION/hodo_calib/tofcal.f b/CALIBRATION/hodo_calib/tofcal.f
new file mode 100644
index 0000000000000000000000000000000000000000..5fe197d5b13077a475d28e153079eb8bab20ed41
--- /dev/null
+++ b/CALIBRATION/hodo_calib/tofcal.f
@@ -0,0 +1,475 @@
+      program tofcal
+! Fit TOF for Hall C HMS or SOS with the form for each PMT:
+! tcorr = time - offset - path * velocity - adccor / sqrt(ADC)
+! where offset, velocity, and adccor are parameters
+! April 10, 2005 P. Bosted
+! Input file: tofcal.inp should contain name of data file to be fit
+!             First xter of file name should be "h" for HMS data
+!             and "s" for SOS. 
+! To generate an input file, set xdumptof = 1 in xdebug.param in
+! the PARAM directory, where x=h for HMS, x=s for SOS
+! The HMS output will be in fort.37, and the SOS in fort.38
+! The output parameters will be in tofcal.param. Insert these
+! into the xhodo.param file that you are using. Make sure to 
+! erase the old values of sigma, or put the new ones after the
+! old ones, so that they get used properly
+! Normal values of invadc_offset are between -50 and 50,
+! normal values of invadc_velocity are between 12 and 17 (50 is
+! default if not enough data for the fit), and normal values of
+! shodo_pos_invadc_adc are 20 to 50. Normal values of the sigmas
+! are 0.3 to 0.8 nsec. 
+
+      implicit none
+      integer i,j,k,n,nparam,ipn,ipl,idt,idet(1000),nhit(200)
+      integer ip1(200),ip2(200),ip3(200),ifail,nhit0(200)
+      integer ipdet(600),iptyp(600),iwork(1000),k1,k2,k3,k4,k5,k6
+      real*8 tr(1000),p(1000),zc(1000),tc1(1000),p2(1000),hival,dtc
+      real*8 ax(1000,1000),bx(1000),sum1(200),sum2(200),sum3(200)
+      real*8 mean0(200),sig0(200),mean(200),sig(200),dt,adc(1000)
+      real*8 toff(200),vel(200),quad(200),chisq,df,ttol,adcmin(200)
+      real*8 avtime,ntime
+      integer thist(200,10),iloop,adchist(200,18),phist(200,18)
+      integer thistf(200,50),adchistf(200,50)
+      integer adchistpm(200,20,2)
+
+      character*80 string
+      character*40 filename
+
+      open(unit=7,file='tofcal.inp')
+      read(7,'(a)') filename
+      open(unit=8,file='tofcal.out')
+      open(unit=11,file='tofcal.parampass1')
+      open(unit=12,file='tofcal.param')
+      open(unit=13,file='tofcal.adchist')
+      write(13,'(1x,'' xv'',50f5.0)') (20.*(j-0.5),j=1,50)
+      open(unit=14,file='tofcal.tdchist')
+      write(14,'(1x,'' xv'',50f5.1)') (-5.0+0.2*(j-0.5),j=1,50)
+
+! first see how many hits per PMT: need at least 100 for fitting
+! also make ADC histograms
+      open(unit=9,file=filename,err=998)
+       if(filename(1:1).ne.'h'.and.filename(1:1).ne.'s') then
+        write(6,'(1x,''error, input file name '',
+     >   '' sould start with h or s'')')
+        goto 999
+       endif
+       write(*,*) ' filling adc histograms'
+       do i=1,10000000
+        n=0
+        do j=1,1000
+          read(9,'(a)',end=10) string
+          read(string,'(1x,i1)') k
+          if(k.eq.0) goto 9
+          n=n+1
+          read(string,'(1x,i1,2i3,5f10.3)') ipn,ipl,idt, 
+     >      tr(n),p(n),zc(n),tc1(n),adc(n)
+          k = min(18, max(1, int((adc(n)/20.)+1)))
+          idet(n) = 100*(ipn-1) + 20*(ipl-1) + idt
+          adchist(idet(n), k) = adchist(idet(n), k) + 1 
+          k = min(50, max(1, int((adc(n)/20.)+1)))
+          adchistf(idet(n), k) = adchistf(idet(n), k) + 1 
+          nhit0(idet(n)) = nhit0(idet(n)) + 1.
+        enddo
+ 9      continue
+      enddo
+
+! find more or less where threshold is
+ 10   do i=1,200
+        adcmin(i)=50.
+        if(nhit0(i).gt.0.) then
+          write(13,'(i3,50i4)') i,(min(999,adchistf(i,j)),j=1,50)
+          hival=0.
+          k=0
+          do j=1,17
+            if(adchist(i,j).gt.hival) then
+              hival = adchist(i,j)
+              k = j
+            endif
+          enddo
+c for test
+c         do n=1,max(1,k)
+c           if(adchist(i,n).lt.hival/20.) adcmin(i)=20.*(n-0.5)
+c         enddo
+c         write(13,'(1x,''adcmin='',f6.1)') adcmin(i) 
+        endif
+      enddo
+      close(unit=9)
+      do i=1,200
+        sum1(i)=0.
+        sum2(i)=0.
+        sum3(i)=0.
+      enddo
+
+! Do everything twice, 2nd time with tighter tolerance (ttol) on
+! time differences, based on first pass
+      ttol=20.0
+      do iloop=1,2
+         write(*,*) ' loop = ',iloop
+! Initialize the fitting arrays
+        do i=1,1000
+          if(i.le.200) nhit(i)=0
+          bx(i)=0.
+          do j=1,1000
+            ax(i,j)=0.
+          enddo
+        enddo
+
+! read in data
+      open(unit=9,file=filename)
+      nparam=0
+      chisq=0.
+      df=0.
+      do i=1,10000000
+        n=0
+        do j=1,1000
+          read(9,'(a)',end=12) string
+          read(string,'(1x,i1)') k
+          if(k.eq.0) goto 11
+          n=n+1
+          read(string,'(1x,i1,2i3,5f10.3)') ipn,ipl,idt, 
+     >      tr(n),p(n),zc(n),tc1(n),adc(n)
+! linearize the detector numbers
+          idet(n) = 100*(ipn-1) + 20*(ipl-1) + idt
+          if(idet(n).lt.1.or.idet(n).gt.200) write(6,'(1x,
+     >      ''error! '',4i4)') ipn,ipl,idt,idet(n)
+
+! correct raw times for zpos using betap
+          tr(n) = tr(n)- zc(n)
+
+! remember path**2 or sqrt(p) or adc
+          p(n) = min(200., max(0., p(n)))
+c          adc(n) = min(500, max(0., adc(n)))
+          p2(n) = 1./sqrt(max(20., adc(n)))
+          k = min(18, max(1, int(p(n)/7.)+1))
+          phist(idet(n), k) = phist(idet(n), k) + 1 
+! ignore hits from paddles that are rarely hit
+          if(nhit0(idet(n)).lt.100) n=n-1
+        enddo
+
+! Loop over all pairs, if at least 6
+ 11     if(n.ge.6) then
+! see if this is first time a detector is used
+          do j=1,n
+            nhit(idet(j))=nhit(idet(j))+1
+
+! If first time detector used, assign corresponding parameters
+! Note that detector had has a fixed time offset (ip1) of zero
+! since all times are relative)
+            if(nhit(idet(j)).eq.1) then
+              if(idet(j).eq.10) then
+                ip1(idet(j))=0
+              else
+
+! fixed time offsets
+                nparam=nparam+1
+                ip1(idet(j))=nparam
+                ipdet(nparam)=idet(j)
+                iptyp(nparam)=1
+              endif
+
+! linear term in path 
+              nparam=nparam+1
+              ip2(idet(j))=nparam
+              ipdet(nparam)=idet(j)
+              iptyp(nparam)=2
+
+! quadratic term for path**2
+              nparam=nparam+1
+              ip3(idet(j))=nparam
+              ipdet(nparam)=idet(j)
+              iptyp(nparam)=3
+              k=idet(j)
+              write(8,'(1x,i3,4i5)') k,nhit(k),ip1(k),ip2(k),ip3(k)
+            endif
+          enddo ! loop over n
+
+! now loop over all pairs in fill in the matrix
+! also accumulate sums to get means and sigmas for each detector
+! of original corrected times as read in from the file
+          do j=1,n-1
+            do k=j+1,n
+              dt = tc1(j)-tc1(k)
+              dtc = dt
+              if(iloop.eq.1.or.abs(dt).lt.ttol) then
+               idt = min(10,max(1,int((dt+5.))+1))
+               thist(idet(j),idt) = thist(idet(j),idt) + 1
+               chisq = chisq + dt**2
+               df = df + 1
+               sum1(idet(j)) = sum1(idet(j)) + 1.
+               sum2(idet(j)) = sum2(idet(j)) + dt
+               sum3(idet(j)) = sum3(idet(j)) + dt**2
+               dt = tc1(k)-tc1(j)
+               idt = min(10,max(1,int((dt+5.))+1))
+               thist(idet(k),idt) = thist(idet(k),idt) + 1
+               sum1(idet(k)) = sum1(idet(k)) + 1.
+               sum2(idet(k)) = sum2(idet(k)) + dt
+               sum3(idet(k)) = sum3(idet(k)) + dt**2
+              endif
+              k1 = idet(j)
+              k2 = idet(k)
+              dt = (tr(j) + toff(k1) + vel(k1)*p(j) + quad(k1)*p2(j))-
+     >             (tr(k) + toff(k2) + vel(k2)*p(k) + quad(k2)*p2(k))
+              if(iloop.eq.1.or.abs(dt).lt.ttol) then
+               k1=ip1(idet(j))
+               k2=ip1(idet(k))
+               k3=ip2(idet(j))
+               k4=ip2(idet(k))
+               k5=ip3(idet(j))
+               k6=ip3(idet(k))
+               if(k1.gt.0) then
+                bx(k1) = bx(k1) - (tr(j)-tr(k))
+                ax(k1,k1) = ax(k1,k1) + 1.
+                ax(k1,k3) = ax(k1,k3) + p(j)
+                ax(k1,k4) = ax(k1,k4) - p(k)
+                ax(k1,k5) = ax(k1,k5) + p2(j)
+                ax(k1,k6) = ax(k1,k6) - p2(k)
+                ax(k3,k1) = ax(k3,k1) + p(j)
+                ax(k4,k1) = ax(k4,k1) - p(k)
+                ax(k5,k1) = ax(k5,k1) + p2(j)
+                ax(k6,k1) = ax(k6,k1) - p2(k)
+               endif
+               if(k1.gt.0.and.k2.gt.0) then
+                ax(k1,k2) = ax(k1,k2) - 1.
+                ax(k2,k1) = ax(k2,k1) - 1.
+               endif
+               if(k2.gt.0) then
+                bx(k2) = bx(k2) + (tr(j)-tr(k))
+                ax(k2,k2) = ax(k2,k2) + 1.
+                ax(k2,k3) = ax(k2,k3) - p(j)
+                ax(k2,k4) = ax(k2,k4) + p(k)
+                ax(k2,k5) = ax(k2,k5) - p2(j)
+                ax(k2,k6) = ax(k2,k6) + p2(k)
+                ax(k3,k2) = ax(k3,k2) - p(j)    
+                ax(k4,k2) = ax(k4,k2) + p(k)    
+                ax(k5,k2) = ax(k5,k2) - p2(j)    
+                ax(k6,k2) = ax(k6,k2) + p2(k)    
+               endif
+               bx(k3) = bx(k3) - (tr(j)-tr(k)) * p(j)
+               bx(k4) = bx(k4) + (tr(j)-tr(k)) * p(k)
+               bx(k5) = bx(k5) - (tr(j)-tr(k)) * p2(j)
+               bx(k6) = bx(k6) + (tr(j)-tr(k)) * p2(k)
+               ax(k3,k3) = ax(k3,k3) + p(j)*p(j)
+               ax(k3,k4) = ax(k3,k4) - p(k)*p(j)
+               ax(k3,k5) = ax(k3,k5) + p2(j)*p(j)
+               ax(k3,k6) = ax(k3,k6) - p2(k)*p(j)
+               ax(k4,k3) = ax(k4,k3) - p(j)*p(k)
+               ax(k4,k4) = ax(k4,k4) + p(k)*p(k)
+               ax(k4,k5) = ax(k4,k5) - p2(j)*p(k)
+               ax(k4,k6) = ax(k4,k6) + p2(k)*p(k)
+               ax(k5,k3) = ax(k5,k3) + p(j)*p2(j)
+               ax(k5,k4) = ax(k5,k4) - p(k)*p2(j)
+               ax(k5,k5) = ax(k5,k5) + p2(j)*p2(j)
+               ax(k5,k6) = ax(k5,k6) - p2(k)*p2(j)
+               ax(k6,k3) = ax(k6,k3) - p(j)*p2(k)
+               ax(k6,k4) = ax(k6,k4) + p(k)*p2(k)
+               ax(k6,k5) = ax(k6,k5) - p2(j)*p2(k)
+               ax(k6,k6) = ax(k6,k6) + p2(k)*p2(k)
+              endif
+            enddo
+          enddo
+        endif ! if n>1
+      enddo ! loop over reading in data 
+ 12   close(unit=9)
+
+! Histograms
+      if(iloop.eq.1) then
+       do i=1,200
+        if(sum1(i).gt.0.) then
+          write(13,'(i3,18i4)') i,(phist(i,j),j=1,18)
+        endif
+       enddo
+      endif
+! see how many hits per detector and get mean, sigma of original corr. times
+      do i=1,200
+        if(sum1(i).gt.0.) then
+          mean0(i)=sum2(i)/sum1(i)
+          sig0(i)=sqrt(sum3(i)/sum1(i) - mean0(i)**2)
+        endif
+        write(8,'(1x,i3,i5,2f6.2,10i5)') i,nhit(i),
+     >    mean0(i),sig0(i),(min(9999,thist(i,j)),j=1,10)
+        sum1(i)=0.
+        sum2(i)=0.
+        sum3(i)=0.
+        do j=1,10
+          thist(i,j)=0
+        enddo
+      enddo
+      df = max(1., df - nparam)
+      write(6,'(1x,''initial chi2/d.f.='',f8.3,'' for '',f7.0,
+     >   '' deg. freedom'')') chisq/df,df
+      write(8,'(1x,''initial chi2/d.f.='',f8.3,'' for '',f7.0,
+     >   '' deg. freedom'')') chisq/df,df
+
+! find the solutions
+      call deqn (nparam,ax,1000,iwork,ifail,1,bx)
+      write(8,'(1x,''ifail='',i10)') ifail
+
+! association of parameters with detectors
+      do i=1,nparam
+        if(iptyp(i).eq.1) toff(ipdet(i))=bx(i)
+        if(iptyp(i).eq.2)  vel(ipdet(i))=bx(i)
+        if(iptyp(i).eq.3) quad(ipdet(i))=bx(i)
+      enddo
+
+! write solutions
+      write(10 + iloop,'(/''; use '',a,
+     >  ''tofusinginvadc=1 if want invadc_offset''/
+     >  '';  invadc_linear, and invadc_adc to be used''/
+     >            a,''tofusinginvadc=1'')') 
+     >  filename(1:1),filename(1:1)
+      write(10+iloop,'(/a,''hodo_pos_invadc_offset ='',3(f8.2,'',''),
+     >  f8.2)') filename(1:1),(-1.0*toff(i),i=1,80,20)
+      do j=2,16
+       write(10+iloop,'(1x,''                        '',3(f8.2,'',''),
+     >  f8.2)')(-1.0*toff(i),i=j,79+j,20)
+      enddo
+
+      write(10+iloop,'(/a,''hodo_neg_invadc_offset ='',3(f8.2,'',''),
+     >  f8.2)')filename(1:1),(-1.0*toff(i),i=101,180,20)
+      do j=2,16
+       write(10+iloop,'(1x,''                        '',3(f8.2,'',''),
+     >  f8.2)')(-1.0*toff(i),i=100+j,179+j,20)
+      enddo
+
+      write(10+iloop,'(/a,''hodo_pos_invadc_linear ='',3(f8.2,'',''),
+     >  f8.2)')filename(1:1),( -1./min(-1./15.,vel(i)),i=1,80,20)
+      do j=2,16
+       write(10+iloop,'(1x,''                        '',3(f8.2,'',''),
+     >  f8.2)')(-1./min(-1./15.,vel(i)),i=j,79+j,20)
+      enddo
+
+      write(10+iloop,'(/a,''hodo_neg_invadc_linear ='',3(f8.2,'',''),
+     >  f8.2)')filename(1:1),( -1./min(-1./15.,vel(i)),i=101,180,20)
+      do j=2,16
+       write(10+iloop,'(1x,''                        '',3(f8.2,'',''),
+     >  f8.2)')(-1./min(-1./15.,vel(i)),i=100+j,179+j,20)
+      enddo
+
+      write(10+iloop,'(/a,''hodo_pos_invadc_adc='',3(f9.2,'',''),
+     >  f9.2)')filename(1:1),(-1.*quad(i),i=1,80,20)
+      do j=2,16
+       write(10+iloop,'(1x,''                   '',3(f9.2,'',''),
+     >  f9.2)')(-1.*quad(i),i=j,79+j,20)
+      enddo
+
+      write(10+iloop,'(/a,''hodo_neg_invadc_adc='',3(f9.2,'',''),
+     >  f9.2)')filename(1:1),(-1.0*quad(i),i=101,180,20)
+      do j=2,16
+       write(10+iloop,'(1x,''                   '',3(f9.2,'',''),
+     >  f9.2)')(-1.*quad(i),i=100+j,179+j,20)
+      enddo
+
+
+! read in data again and look at sigmas relative to average fp time
+      chisq = 0.
+      df = 0.
+      open(unit=9,file=filename)
+      do i=1,10000000
+        n=0
+        do j=1,1000
+          read(9,'(a)',end=14) string
+          read(string,'(1x,i1)') k
+          if(k.eq.0) goto 13
+          n=n+1
+          read(string,'(1x,i1,2i3,5f10.3)') ipn,ipl,idt, 
+     >      tr(n),p(n),zc(n),tc1(n),adc(n)
+          idet(n) = 100*(ipn-1) + 20*(ipl-1) + idt
+          tr(n) = tr(n)- zc(n)
+          p(n) = min(200., max(0., p(n)))
+c          adc(n) = min(500, max(0., adc(n)))
+          p2(n) = 1./sqrt(max(20., adc(n)))
+! ignore hits from paddles that are rarely hit
+          k1 = idet(n)
+          dt = (tr(n) + toff(k1) + vel(k1)*p(n) + quad(k1)*p2(n))  
+          if(nhit0(idet(n)).lt.100) n=n-1
+        enddo
+! Loop over all pairs, if at least 6 hits
+ 13     if(n.ge.6) then
+          do j=1,n
+            avtime=0.
+            ntime=0.
+            do k=1,n
+             if(k.ne.j) then
+              k1 = idet(j)
+              k2 = idet(k)
+              dt = (tr(k) + toff(k2) + vel(k2)*p(k) + quad(k2)*p2(k))
+              avtime = avtime + dt
+              ntime = ntime + 1.
+             endif
+            enddo
+            avtime = avtime / ntime
+            dt = (tr(j) + toff(k1) + vel(k1)*p(j) + quad(k1)*p2(j))-
+     >             avtime
+            if(iloop.eq.2) then
+              idt = min(50,max(1,int((dt+ 5.)/0.2)+1))
+              thistf(idet(j),idt) = thistf(idet(j),idt) + 1
+              idt = max(1,min(20, int(adc(j)/50.)+1))
+              if(dt.gt.0.) adchistpm(idet(j),idt,1)=
+     >          adchistpm(idet(j),idt,1)+1
+              if(dt.le.0.) adchistpm(idet(j),idt,2)=
+     >          adchistpm(idet(j),idt,2)+1
+            endif
+            if(iloop.eq.1.or.abs(dt).lt.ttol) then
+              idt = min(10,max(1,int((dt+ 5.))+1))
+              thist(idet(j),idt) = thist(idet(j),idt) + 1
+              chisq = chisq + dt**2
+              df = df + 1
+              sum1(idet(j)) = sum1(idet(j)) + 1.
+              sum2(idet(j)) = sum2(idet(j)) + dt
+              sum3(idet(j)) = sum3(idet(j)) + dt**2
+            endif
+          enddo
+        endif ! if n>5
+      enddo ! loop over reading in data 
+ 14   close(unit=9)
+! see how many hits per detector and get mean, sigma of original corr. times
+      do i=1,200
+        sig(i)=100.
+        if(sum1(i).gt.0.) then
+          mean(i)=sum2(i)/sum1(i)
+          sig(i)=sqrt(sum3(i)/sum1(i) - mean(i)**2)
+        endif
+        write(8,'(1x,i3,i5,2f6.2,10i5)') i,nhit(i),
+     >    mean(i),sig(i),(min(9999,thist(i,j)),j=1,10)
+        if(iloop.eq.2)
+     >    write(14,'(1x,i3,50i5)') i,(min(9999,thistf(i,j)),j=1,50)
+        sum1(i)=0.
+        sum2(i)=0.
+        sum3(i)=0.
+        do j=1,10
+          thist(i,j)=0
+        enddo
+      enddo
+      df = max(1., df - nparam)
+      write(6,'(1x,''  final chi2/d.f.='',f8.3,'' for '',f7.0,
+     >   '' deg. freedom'')') chisq/df,df
+      write(8,'(1x,''  final chi2/d.f.='',f8.3,'' for '',f7.0,
+     >   '' deg. freedom'')') chisq/df,df
+
+      write(10+iloop,'(/a,''hodo_pos_sigma ='',3(f8.2,'',''),
+     >  f8.2)')filename(1:1),(sig(i),i=  1, 80,20)
+      do j=2,16
+       write(10+iloop,'(1x,''                '',3(f8.2,'',''),
+     >  f8.2)')(sig(i),i=    j, 79+j,20)
+      enddo
+      write(10+iloop,'(/a,''hodo_neg_sigma ='',3(f8.2,'',''),
+     >  f8.2)')filename(1:1),(sig(i),i=101,180,20)
+      do j=2,16
+       write(10+iloop,'(1x,''                '',3(f8.2,'',''),
+     >  f8.2)')(sig(i),i=100+j,179+j,20)
+      enddo
+
+      enddo ! loop over time tolerance
+
+      do i=1,200
+        write(15,'(1x,i3,20i4)') i,(adchistpm(i,j,1),j=1,20)
+        write(15,'(1x,i3,20i4)') i,(adchistpm(i,j,2),j=1,20)
+      enddo
+
+      goto 999
+
+ 998  write(6,'(1x,''error, cant find file '',a)') filename
+
+ 999  stop
+      end
+
diff --git a/CALIBRATION/hodo_calib/tofcal.inp b/CALIBRATION/hodo_calib/tofcal.inp
new file mode 100644
index 0000000000000000000000000000000000000000..bfb05b8427e4f06ac0ae9ff00a7eb951871e4aa9
--- /dev/null
+++ b/CALIBRATION/hodo_calib/tofcal.inp
@@ -0,0 +1,8 @@
+shmsfort.37
+hmstofcal.53411
+sostofcal.46765
+htmp
+shmstofcal
+
+
+
diff --git a/DEF-files/HMS/GEN/hstackana_report_cuts.def b/DEF-files/HMS/GEN/hstackana_report_cuts.def
index 504305c2c316fe6f448107223c0a003a7224c7d3..dd003ff56a39f09030c0bde72846c7b6f51d1eb3 100644
--- a/DEF-files/HMS/GEN/hstackana_report_cuts.def
+++ b/DEF-files/HMS/GEN/hstackana_report_cuts.def
@@ -42,25 +42,6 @@ hmsDC2_1hit_v1                H.dc.2v1.nhit == 1
 hmsDC2_1hit_y2                H.dc.2y2.nhit == 1
 hmsDC2_1hit_x2                H.dc.2x2.nhit == 1
 
-hmsDC1Planes6hits   (H.dc.1x1.nhit+H.dc.1y1.nhit+H.dc.1u1.nhit+H.dc.1v1.nhit+H.dc.1x2.nhit+H.dc.1y2.nhit) ==6
-hmsDC2Planes6hits   (H.dc.2x1.nhit+H.dc.2y1.nhit+H.dc.2u1.nhit+H.dc.2v1.nhit+H.dc.2x2.nhit+H.dc.2y2.nhit )==6
-hmsDC1_5hits_x1     (H.dc.1y1.nhit+H.dc.1u1.nhit+H.dc.1v1.nhit+H.dc.1x2.nhit+H.dc.1y2.nhit)==5
-hmsDC1_5hits_y1     (H.dc.1x1.nhit+H.dc.1u1.nhit+H.dc.1v1.nhit+H.dc.1x2.nhit+H.dc.1y2.nhit)==5
-hmsDC1_5hits_u1     (H.dc.1x1.nhit+H.dc.1y1.nhit+H.dc.1v1.nhit+H.dc.1x2.nhit+H.dc.1y2.nhit)==5
-hmsDC1_5hits_v1     (H.dc.1x1.nhit+H.dc.1y1.nhit+H.dc.1u1.nhit+H.dc.1x2.nhit+H.dc.1y2.nhit)==5 
-hmsDC1_5hits_x2     (H.dc.1x1.nhit+H.dc.1y1.nhit+H.dc.1u1.nhit+H.dc.1v1.nhit+H.dc.1y2.nhit)==5
-hmsDC1_5hits_y2     (H.dc.1x1.nhit+H.dc.1y1.nhit+H.dc.1u1.nhit+H.dc.1v1.nhit+H.dc.1x2.nhit)==5
-
-hmsDC2_5hits_x1     (H.dc.2y1.nhit+H.dc.2u1.nhit+H.dc.2v1.nhit+H.dc.2x2.nhit+H.dc.2y2.nhit)==5
-hmsDC2_5hits_y1     (H.dc.2x1.nhit+H.dc.2u1.nhit+H.dc.2v1.nhit+H.dc.2x2.nhit+H.dc.2y2.nhit)==5
-hmsDC2_5hits_u1     (H.dc.2x1.nhit+H.dc.2y1.nhit+H.dc.2v1.nhit+H.dc.2x2.nhit+H.dc.2y2.nhit)==5
-hmsDC2_5hits_v1     (H.dc.2x1.nhit+H.dc.2y1.nhit+H.dc.2u1.nhit+H.dc.2x2.nhit+H.dc.2y2.nhit)==5 
-hmsDC2_5hits_x2     (H.dc.2x1.nhit+H.dc.2y1.nhit+H.dc.2u1.nhit+H.dc.2v1.nhit+H.dc.2y2.nhit)==5
-hmsDC2_5hits_y2     (H.dc.2x1.nhit+H.dc.2y1.nhit+H.dc.2u1.nhit+H.dc.2v1.nhit+H.dc.2x2.nhit)==5
-
-
-
-
 h1hit1                H.dc.1x1.nhit >= 1
 h1hit2                H.dc.1y1.nhit >= 1
 h1hit3                H.dc.1u1.nhit >= 1
@@ -74,6 +55,38 @@ h2hit3                H.dc.2u1.nhit >= 1
 h2hit4                H.dc.2v1.nhit >= 1
 h2hit5                H.dc.2y2.nhit >= 1
 h2hit6                H.dc.2x2.nhit >= 1
+
+hmsDC1Planes6hits   (H.dc.1x1.nhit+H.dc.1y1.nhit+H.dc.1u1.nhit+H.dc.1v1.nhit+H.dc.1x2.nhit+H.dc.1y2.nhit) ==6
+hmsDC2Planes6hits   (H.dc.2x1.nhit+H.dc.2y1.nhit+H.dc.2u1.nhit+H.dc.2v1.nhit+H.dc.2x2.nhit+H.dc.2y2.nhit )==6
+hmsDC1_5hits_x1     hmsDC1_1hit_y1&&hmsDC1_1hit_u1&&hmsDC1_1hit_v1&&hmsDC1_1hit_x2&&hmsDC1_1hit_y2
+hmsDC1_6hits_x1     h1hit1&&hmsDC1_1hit_y1&&hmsDC1_1hit_u1&&hmsDC1_1hit_v1&&hmsDC1_1hit_x2&&hmsDC1_1hit_y2
+hmsDC1_5hits_y1     hmsDC1_1hit_x1&&hmsDC1_1hit_u1&&hmsDC1_1hit_v1&&hmsDC1_1hit_x2&&hmsDC1_1hit_y2
+hmsDC1_6hits_y1     h1hit2&&hmsDC1_1hit_x1&&hmsDC1_1hit_u1&&hmsDC1_1hit_v1&&hmsDC1_1hit_x2&&hmsDC1_1hit_y2
+hmsDC1_5hits_u1     hmsDC1_1hit_x1&&hmsDC1_1hit_y1&&hmsDC1_1hit_v1&&hmsDC1_1hit_x2&&hmsDC1_1hit_y2
+hmsDC1_6hits_u1     h1hit3&&hmsDC1_1hit_x1&&hmsDC1_1hit_y1&&hmsDC1_1hit_v1&&hmsDC1_1hit_x2&&hmsDC1_1hit_y2
+hmsDC1_5hits_v1     hmsDC1_1hit_x1&&hmsDC1_1hit_y1&&hmsDC1_1hit_u1&&hmsDC1_1hit_x2&&hmsDC1_1hit_y2 
+hmsDC1_6hits_v1     h1hit4&&hmsDC1_1hit_x1&&hmsDC1_1hit_y1&&hmsDC1_1hit_u1&&hmsDC1_1hit_x2&&hmsDC1_1hit_y2
+hmsDC1_5hits_x2     hmsDC1_1hit_x1&&hmsDC1_1hit_y1&&hmsDC1_1hit_u1&&hmsDC1_1hit_v1&&hmsDC1_1hit_y2
+hmsDC1_6hits_x2     h1hit6&&hmsDC1_1hit_x1&&hmsDC1_1hit_y1&&hmsDC1_1hit_u1&&hmsDC1_1hit_v1&&hmsDC1_1hit_y2
+hmsDC1_5hits_y2     hmsDC1_1hit_x1&&hmsDC1_1hit_y1&&hmsDC1_1hit_u1&&hmsDC1_1hit_v1&&hmsDC1_1hit_x2
+hmsDC1_6hits_y2     h1hit5&&hmsDC1_1hit_x1&&hmsDC1_1hit_y1&&hmsDC1_1hit_u1&&hmsDC1_1hit_v1&&hmsDC1_1hit_x2
+
+hmsDC2_5hits_x1     hmsDC2_1hit_y1&&hmsDC2_1hit_u1&&hmsDC2_1hit_v1&&hmsDC2_1hit_x2&&hmsDC2_1hit_y2
+hmsDC2_6hits_x1     h2hit1&&hmsDC2_1hit_y1&&hmsDC2_1hit_u1&&hmsDC2_1hit_v1&&hmsDC2_1hit_x2&&hmsDC2_1hit_y2
+hmsDC2_5hits_y1     hmsDC2_1hit_x1&&hmsDC2_1hit_u1&&hmsDC2_1hit_v1&&hmsDC2_1hit_x2&&hmsDC2_1hit_y2
+hmsDC2_6hits_y1     h2hit2&&hmsDC2_1hit_x1&&hmsDC2_1hit_u1&&hmsDC2_1hit_v1&&hmsDC2_1hit_x2&&hmsDC2_1hit_y2
+hmsDC2_5hits_u1     hmsDC2_1hit_x1&&hmsDC2_1hit_y1&&hmsDC2_1hit_v1&&hmsDC2_1hit_x2&&hmsDC2_1hit_y2
+hmsDC2_6hits_u1     h2hit3&&hmsDC2_1hit_x1&&hmsDC2_1hit_y1&&hmsDC2_1hit_v1&&hmsDC2_1hit_x2&&hmsDC2_1hit_y2
+hmsDC2_5hits_v1     hmsDC2_1hit_x1&&hmsDC2_1hit_y1&&hmsDC2_1hit_u1&&hmsDC2_1hit_x2&&hmsDC2_1hit_y2 
+hmsDC2_6hits_v1     h2hit4&&hmsDC2_1hit_x1&&hmsDC2_1hit_y1&&hmsDC2_1hit_u1&&hmsDC2_1hit_x2&&hmsDC2_1hit_y2
+hmsDC2_5hits_x2     hmsDC2_1hit_x1&&hmsDC2_1hit_y1&&hmsDC2_1hit_u1&&hmsDC2_1hit_v1&&hmsDC2_1hit_y2
+hmsDC2_6hits_x2     h2hit6&&hmsDC2_1hit_x1&&hmsDC2_1hit_y1&&hmsDC2_1hit_u1&&hmsDC2_1hit_v1&&hmsDC2_1hit_y2
+hmsDC2_5hits_y2     hmsDC2_1hit_x1&&hmsDC2_1hit_y1&&hmsDC2_1hit_u1&&hmsDC2_1hit_v1&&hmsDC2_1hit_x2
+hmsDC2_6hits_y2     h2hit5&&hmsDC2_1hit_x1&&hmsDC2_1hit_y1&&hmsDC2_1hit_u1&&hmsDC2_1hit_v1&&hmsDC2_1hit_x2
+
+
+
+
 hms1HitsLt            H.dc.Ch1.nhit <= H.dc.Ch1.maxhits && g.evtyp==1
 hms2HitsLt            H.dc.Ch2.nhit <= H.dc.Ch2.maxhits && g.evtyp==1
 hmsHitsLt             H.dc.Ch1.nhit <= H.dc.Ch1.maxhits && H.dc.Ch2.nhit <= H.dc.Ch2.maxhits && g.evtyp==1
diff --git a/DEF-files/SHMS/GEN/pstackana_report.def b/DEF-files/SHMS/GEN/pstackana_report.def
new file mode 100644
index 0000000000000000000000000000000000000000..6d9be51d35ab5b1f8350f47f5727aa656d0403b2
--- /dev/null
+++ b/DEF-files/SHMS/GEN/pstackana_report.def
@@ -0,0 +1,183 @@
+# See $ANALYZER/examples/output_example.def for examples
+#
+block T.shms.*
+block P.ngcer.*
+block P.dc.*
+block P.tr.*
+block P.hod.*
+block P.hgcer.*
+block P.aero.*
+block P.cal.*
+block P.gtr.*
+
+# Noble Gas Cherenkov
+TH1F pngcer_occu 'SHMS Noble Gas Cherenkov Occupancy; Counter Number; Number of Entries' P.ngcer.adcCounter 4 0.5 4.5
+TH2F pngcer_ped_vs_cntr 'SHMS Noble Gas Cherenkov Pulse Pedestal vs. Counter Number; Counter Number;  Pulse Pedestal / 1 ADC Unit' P.ngcer.adcCounter P.ngcer.adcPed 4 0.5 4.5 1000 0 1000
+TH2F pngcer_pi_vs_cntr 'SHMS Noble Gas Cherenkov Pulse Integral vs. Counter Number; Counter Number;  Pulse Integral / 10 ADC Units' P.ngcer.adcCounter P.ngcer.adcPulseInt 4 0.5 4.5 4000 0 40000
+TH2F pngcer_amp_vs_cntr 'SHMS Noble Gas Cherenkov Pulse Amplitude vs. Counter Number; Counter Number;  Pulse Amplitude / 1 ADC Unit' P.ngcer.adcCounter P.ngcer.adcPulseAmp 4 0.5 4.5 4100 0 4100
+
+# Drift Chambers
+TH1F pdc_ref1  'SHMS DC Reference Time Slot 6 Channel 79; Raw TDC Time (TDC Clicks); Counts / 10 TDC Clicks;' T.shms.pDCREF1_tdcTime  200 12000 14000
+TH1F pdc_ref2  'SHMS DC Reference Time Slot 7 Channel 79; Raw TDC Time (TDC Clicks); Counts / 10 TDC Clicks;' T.shms.pDCREF2_tdcTime  200 12000 14000
+TH1F pdc_ref3  'SHMS DC Reference Time Slot 8 Channel 79; Raw TDC Time (TDC Clicks); Counts / 10 TDC Clicks;' T.shms.pDCREF3_tdcTime  200 12000 14000
+TH1F pdc_ref4  'SHMS DC Reference Time Slot 9 Channel 79; Raw TDC Time (TDC Clicks); Counts / 10 TDC Clicks;' T.shms.pDCREF4_tdcTime  200 12000 14000
+TH1F pdc_ref5  'SHMS DC Reference Time Slot 10 Channel 79; Raw TDC Time (TDC Clicks); Counts / 10 TDC Clicks;' T.shms.pDCREF5_tdcTime  200 12000 14000
+TH1F pdc_ref6  'SHMS DC Reference Time Slot 11 Channel 47; Raw TDC Time (TDC Clicks); Counts / 10 TDC Clicks;' T.shms.pDCREF6_tdcTime  200 12000 14000
+TH1F pdc_ref7  'SHMS DC Reference Time Slot 12 Channel 47; Raw TDC Time (TDC Clicks); Counts / 10 TDC Clicks;' T.shms.pDCREF7_tdcTime  200 12000 14000
+TH1F pdc_ref8  'SHMS DC Reference Time Slot 13 Channel 47; Raw TDC Time (TDC Clicks); Counts / 10 TDC Clicks;' T.shms.pDCREF8_tdcTime  200 12000 14000
+TH1F pdc_ref9  'SHMS DC Reference Time Slot 14 Channel 15; Raw TDC Time (TDC Clicks); Counts / 10 TDC Clicks;' T.shms.pDCREF9_tdcTime  200 12000 14000
+TH1F pdc_ref10 'SHMS DC Reference Time Slot 15 Channel 47; Raw TDC Time (TDC Clicks); Counts / 10 TDC Clicks;' T.shms.pDCREF10_tdcTime 200 12000 14000
+
+TH1F pdc1u1_wirenum 'SHMS DC 1U1 Wiremap; Wire Number; Number of Entries' P.dc.1u1.wirenum 107 0.5 107.5
+TH1F pdc1u2_wirenum 'SHMS DC 1U2 Wiremap; Wire Number; Number of Entries' P.dc.1u2.wirenum 107 0.5 107.5
+TH1F pdc1x1_wirenum 'SHMS DC 1X1 Wiremap; Wire Number; Number of Entries' P.dc.1x1.wirenum  79 0.5  79.5
+TH1F pdc1x2_wirenum 'SHMS DC 1X2 Wiremap; Wire Number; Number of Entries' P.dc.1x2.wirenum  79 0.5  79.5
+TH1F pdc1v1_wirenum 'SHMS DC 1V1 Wiremap; Wire Number; Number of Entries' P.dc.1v1.wirenum 107 0.5 107.5
+TH1F pdc1v2_wirenum 'SHMS DC 1V2 Wiremap; Wire Number; Number of Entries' P.dc.1v2.wirenum 107 0.5 107.5
+
+TH1F pdc2v2_wirenum 'SHMS DC 2V2 Wiremap; Wire Number; Number of Entries' P.dc.2v2.wirenum 107 0.5 107.5
+TH1F pdc2v1_wirenum 'SHMS DC 2V1 Wiremap; Wire Number; Number of Entries' P.dc.2v1.wirenum 107 0.5 107.5
+TH1F pdc2x2_wirenum 'SHMS DC 2X2 Wiremap; Wire Number; Number of Entries' P.dc.2x2.wirenum  79 0.5  79.5
+TH1F pdc2x1_wirenum 'SHMS DC 2X1 Wiremap; Wire Number; Number of Entries' P.dc.2x1.wirenum  79 0.5  79.5
+TH1F pdc2u2_wirenum 'SHMS DC 2U2 Wiremap; Wire Number; Number of Entries' P.dc.2u2.wirenum 107 0.5 107.5
+TH1F pdc2u1_wirenum 'SHMS DC 2U1 Wiremap; Wire Number; Number of Entries' P.dc.2u1.wirenum 107 0.5 107.5
+
+TH2F pdc1u1_wirenum_vs_tdc 'SHMS DC 1U1 Wire Number vs. TDC; Wire Number; TDC Time (ns) / 1 ns' P.dc.1u1.wirenum P.dc.1u1.time 107 0.5 107.5 500 0 500
+TH2F pdc1u2_wirenum_vs_tdc 'SHMS DC 1U2 Wire Number vs. TDC; Wire Number; TDC Time (ns) / 1 ns' P.dc.1u2.wirenum P.dc.1u2.time 107 0.5 107.5 500 0 500
+TH2F pdc1x1_wirenum_vs_tdc 'SHMS DC 1X1 Wire Number vs. TDC; Wire Number; TDC Time (ns) / 1 ns' P.dc.1x1.wirenum P.dc.1x1.time  79 0.5  79.5 500 0 500
+TH2F pdc1x2_wirenum_vs_tdc 'SHMS DC 1X2 Wire Number vs. TDC; Wire Number; TDC Time (ns) / 1 ns' P.dc.1x2.wirenum P.dc.1x2.time  79 0.5  79.5 500 0 500
+TH2F pdc1v1_wirenum_vs_tdc 'SHMS DC 1V1 Wire Number vs. TDC; Wire Number; TDC Time (ns) / 1 ns' P.dc.1v1.wirenum P.dc.1v1.time 107 0.5 107.5 500 0 500
+TH2F pdc1v2_wirenum_vs_tdc 'SHMS DC 1V2 Wire Number vs. TDC; Wire Number; TDC Time (ns) / 1 ns' P.dc.1v2.wirenum P.dc.1v2.time 107 0.5 107.5 500 0 500
+
+TH2F pdc2v2_wirenum_vs_tdc 'SHMS DC 2V2 Wire Number vs. TDC; Wire Number; TDC Time (ns) / 1 ns' P.dc.2v2.wirenum P.dc.2v2.time 107 0.5 107.5 500 0 500
+TH2F pdc2v1_wirenum_vs_tdc 'SHMS DC 2V1 Wire Number vs. TDC; Wire Number; TDC Time (ns) / 1 ns' P.dc.2v1.wirenum P.dc.2v1.time 107 0.5 107.5 500 0 500
+TH2F pdc2x2_wirenum_vs_tdc 'SHMS DC 2X2 Wire Number vs. TDC; Wire Number; TDC Time (ns) / 1 ns' P.dc.2x2.wirenum P.dc.2x2.time  79 0.5  79.5 500 0 500
+TH2F pdc2x1_wirenum_vs_tdc 'SHMS DC 2X1 Wire Number vs. TDC; Wire Number; TDC Time (ns) / 1 ns' P.dc.2x1.wirenum P.dc.2x1.time  79 0.5  79.5 500 0 500
+TH2F pdc2u2_wirenum_vs_tdc 'SHMS DC 2U2 Wire Number vs. TDC; Wire Number; TDC Time (ns) / 1 ns' P.dc.2u2.wirenum P.dc.2u2.time 107 0.5 107.5 500 0 500
+TH2F pdc2u1_wirenum_vs_tdc 'SHMS DC 2U1 Wire Number vs. TDC; Wire Number; TDC Time (ns) / 1 ns' P.dc.2u1.wirenum P.dc.2u1.time 107 0.5 107.5 500 0 500
+
+TH2F pdc1u1_wirenum_vs_resid 'SHMS 1U1 DC Wire Number vs. Residuals; Wire Number; Residuals (mm)' P.dc.1u1.wirenum P.dc.residual[0] 107 0.5 107.5 200 -1.0 1.0
+TH2F pdc1u2_wirenum_vs_resid 'SHMS 1U2 DC Wire Number vs. Residuals; Wire Number; Residuals (mm)' P.dc.1u2.wirenum P.dc.residual[1] 107 0.5 107.5 200 -1.0 1.0
+TH2F pdc1x1_wirenum_vs_resid 'SHMS 1X1 DC Wire Number vs. Residuals; Wire Number; Residuals (mm)' P.dc.1x1.wirenum P.dc.residual[2] 79 0.5  79.5 200 -1.0 1.0
+TH2F pdc1x2_wirenum_vs_resid 'SHMS 1X2 DC Wire Number vs. Residuals; Wire Number; Residuals (mm)' P.dc.1x2.wirenum P.dc.residual[3] 79 0.5  79.5 200 -1.0 1.0
+TH2F pdc1v1_wirenum_vs_resid 'SHMS 1V1 DC Wire Number vs. Residuals; Wire Number; Residuals (mm)' P.dc.1v1.wirenum P.dc.residual[4] 107 0.5 107.5 200 -1.0 1.0
+TH2F pdc1v2_wirenum_vs_resid 'SHMS 1V2 DC Wire Number vs. Residuals; Wire Number; Residuals (mm)' P.dc.1v2.wirenum P.dc.residual[5] 107 0.5 107.5 200 -1.0 1.0
+
+TH2F pdc2v2_wirenum_vs_resid 'SHMS 2V2 DC Wire Number vs. Residuals; Wire Number; Residuals (mm)' P.dc.2v2.wirenum P.dc.residual[6] 107 0.5 107.5 200 -1.0 1.0
+TH2F pdc2v1_wirenum_vs_resid 'SHMS 2V1 DC Wire Number vs. Residuals; Wire Number; Residuals (mm)' P.dc.2v1.wirenum P.dc.residual[7] 107 0.5 107.5 200 -1.0 1.0
+TH2F pdc2x2_wirenum_vs_resid 'SHMS 2X2 DC Wire Number vs. Residuals; Wire Number; Residuals (mm)' P.dc.2x2.wirenum P.dc.residual[8] 79 0.5  79.5 200 -1.0 1.0
+TH2F pdc2x1_wirenum_vs_resid 'SHMS 2X1 DC Wire Number vs. Residuals; Wire Number; Residuals (mm)' P.dc.2x1.wirenum P.dc.residual[9] 79 0.5  79.5 200 -1.0 1.0
+TH2F pdc2u2_wirenum_vs_resid 'SHMS 2U2 DC Wire Number vs. Residuals; Wire Number; Residuals (mm)' P.dc.2u2.wirenum P.dc.residual[10] 107 0.5 107.5 200 -1.0 1.0
+TH2F pdc2u1_wirenum_vs_resid 'SHMS 2U1 DC Wire Number vs. Residuals; Wire Number; Residuals (mm)' P.dc.2u1.wirenum P.dc.residual[11] 107 0.5 107.5 200 -1.0 1.0
+
+TH2F pdc_xfp_vs_yxp 'SHMS DC Xfp vs Yxp; Yfp (cm) / 1 cm; Xfp (cm) / 1 cm' P.dc.y P.dc.x 100 -50 50 100 -50 50
+TH2F pdc_xfpp_vs_yxpp 'SHMS DC Xfpp vs Yxpp; Yfpp; Xfpp' P.dc.yp P.dc.xp 100 -1 1 100 -1 1
+
+# Hodoscopes (Positive/Left) 
+TH1F phodo_1x_pos_adc_occu 'SHMS Hodoscope 1X+ ADC Occupancy; Paddle Number; Number of Hits' P.hod.1x.posAdcCounter 13 0.5 13.5
+TH1F phodo_1y_pos_adc_occu 'SHMS Hodoscope 1Y+ ADC Occupancy; Paddle Number; Number of Hits' P.hod.1y.posAdcCounter 13 0.5 13.5 
+TH1F phodo_2x_pos_adc_occu 'SHMS Hodoscope 2X+ ADC Occupancy; Paddle Number; Number of Hits' P.hod.2x.posAdcCounter 14 0.5 14.5
+TH1F phodo_2y_pos_adc_occu 'SHMS Hodoscope 2Y+ ADC Occupancy; Paddle Number; Number of Hits' P.hod.2y.posAdcCounter 21 0.5 21.5
+TH1F phodo_1x_pos_tdc_occu 'SHMS Hodoscope 1X+ TDC Occupancy; Paddle Number; Number of Hits' P.hod.1x.posTdcCounter 13 0.5 13.5
+TH1F phodo_1y_pos_tdc_occu 'SHMS Hodoscope 1Y+ TDC Occupancy; Paddle Number; Number of Hits' P.hod.1y.posTdcCounter 13 0.5 13.5 
+TH1F phodo_2x_pos_tdc_occu 'SHMS Hodoscope 2X+ TDC Occupancy; Paddle Number; Number of Hits' P.hod.2x.posTdcCounter 14 0.5 14.5
+TH1F phodo_2y_pos_tdc_occu 'SHMS Hodoscope 2Y+ TDC Occupancy; Paddle Number; Number of Hits' P.hod.2y.posTdcCounter 21 0.5 21.5
+TH2F phodo_1x_pos_ped_vs_pad 'SHMS Hodoscope 1X+ Pulse Pedestal vs. Paddle Number; Paddle Number; Pulse Pedestal / 1 ADC Unit' P.hod.1x.posAdcCounter  P.hod.1x.posAdcPed 13 0.5 13.5 1000 0 1000
+TH2F phodo_1y_pos_ped_vs_pad 'SHMS Hodoscope 1Y+ Pulse Pedestal vs. Paddle Number; Paddle Number; Pulse Pedestal / 1 ADC Unit' P.hod.1y.posAdcCounter  P.hod.1y.posAdcPed 13 0.5 13.5 1000 0 1000
+TH2F phodo_2x_pos_ped_vs_pad 'SHMS Hodoscope 2X+ Pulse Pedestal vs. Paddle Number; Paddle Number; Pulse Pedestal / 1 ADC Unit' P.hod.2x.posAdcCounter  P.hod.2x.posAdcPed 14 0.5 14.5 1000 0 1000
+TH2F phodo_2y_pos_ped_vs_pad 'SHMS Hodoscope 2Y+ Pulse Pedestal vs. Paddle Number; Paddle Number; Pulse Pedestal / 1 ADC Unit' P.hod.2y.posAdcCounter  P.hod.2y.posAdcPed 21 0.5 21.5 1000 0 1000
+TH2F phodo_1x_pos_pi_vs_pad 'SHMS Hodoscope 1X+ Pulse Integral vs. Paddle Number; Paddle Number; Pulse Integral / 10 ADC Units' P.hod.1x.GoodPaddle  P.hod.1x.GoodPosAdcPulseInt 13 0.5 13.5 4000 0 40000
+TH2F phodo_1y_pos_pi_vs_pad 'SHMS Hodoscope 1Y+ Pulse Integral vs. Paddle Number; Paddle Number; Pulse Integral / 10 ADC Units' P.hod.1y.GoodPaddle  P.hod.1y.GoodPosAdcPulseInt 13 0.5 13.5 4000 0 40000
+TH2F phodo_2x_pos_pi_vs_pad 'SHMS Hodoscope 2X+ Pulse Integral vs. Paddle Number; Paddle Number; Pulse Integral / 10 ADC Units' P.hod.2x.GoodPaddle  P.hod.2x.GoodPosAdcPulseInt 14 0.5 14.5 4000 0 40000
+TH2F phodo_2y_pos_pi_vs_pad 'SHMS Hodoscope 2Y+ Pulse Integral vs. Paddle Number; Paddle Number; Pulse Integral / 10 ADC Units' P.hod.2y.GoodPaddle  P.hod.2y.GoodPosAdcPulseInt 21 0.5 21.5 4000 0 40000
+TH2F phodo_1x_pos_pamp_vs_pad 'SHMS Hodoscope 1X+ Pulse Amplitude vs. Paddle Number; Paddle Number; Pulse Amplitude / 1 ADC Unit' P.hod.1x.GoodPaddle  P.hod.1x.GoodPosAdcPulseAmp 13 0.5 13.5 4100 0 4100
+TH2F phodo_1y_pos_pamp_vs_pad 'SHMS Hodoscope 1Y+ Pulse Amplitude vs. Paddle Number; Paddle Number; Pulse Amplitude / 1 ADC Unit' P.hod.1y.GoodPaddle  P.hod.1y.GoodPosAdcPulseAmp 13 0.5 13.5 4100 0 4100
+TH2F phodo_2x_pos_pamp_vs_pad 'SHMS Hodoscope 2X+ Pulse Amplitude vs. Paddle Number; Paddle Number; Pulse Amplitude / 1 ADC Unit' P.hod.2x.GoodPaddle  P.hod.2x.GoodPosAdcPulseAmp 14 0.5 14.5 4100 0 4100
+TH2F phodo_2y_pos_pamp_vs_pad 'SHMS Hodoscope 2Y+ Pulse Amplitude vs. Paddle Number; Paddle Number; Pulse Amplitude / 1 ADC Unit' P.hod.2y.GoodPaddle  P.hod.2y.GoodPosAdcPulseAmp 21 0.5 21.5 4100 0 4100
+TH2F phodo_1x_pos_tdc_time_vs_pad 'SHMS Hodoscope 1X+ TDC Time vs. Paddle Number; Paddle Number; TDC Time (ns) / 1 ns' P.hod.1x.GoodPaddle  P.hod.1x.GoodPosTdcChan 13 0.5 13.5 3500 -500 3000
+TH2F phodo_1y_pos_tdc_time_vs_pad 'SHMS Hodoscope 1Y+ TDC Time vs. Paddle Number; Paddle Number; TDC Time (ns) / 1 ns' P.hod.1y.GoodPaddle  P.hod.1y.GoodPosTdcChan 13 0.5 13.5 3500 -500 3000
+TH2F phodo_2x_pos_tdc_time_vs_pad 'SHMS Hodoscope 2X+ TDC Time vs. Paddle Number; Paddle Number; TDC Time (ns) / 1 ns' P.hod.2x.GoodPaddle  P.hod.2x.GoodPosTdcChan 14 0.5 14.5 3500 -500 3000
+TH2F phodo_2y_pos_tdc_time_vs_pad 'SHMS Hodoscope 2Y+ TDC Time vs. Paddle Number; Paddle Number; TDC Time (ns) / 1 ns' P.hod.2y.GoodPaddle  P.hod.2y.GoodPosTdcChan 21 0.5 21.5 3500 -500 3000
+
+# Hodoscopes (Negative/Right)
+TH1F phodo_1x_neg_adc_occu 'SHMS Hodoscope 1X- ADC Occupancy; Paddle Number; Number of Hits' P.hod.1x.negAdcCounter 13 0.5 13.5
+TH1F phodo_1y_neg_adc_occu 'SHMS Hodoscope 1Y- ADC Occupancy; Paddle Number; Number of Hits' P.hod.1y.negAdcCounter 13 0.5 13.5 
+TH1F phodo_2x_neg_adc_occu 'SHMS Hodoscope 2X- ADC Occupancy; Paddle Number; Number of Hits' P.hod.2x.negAdcCounter 14 0.5 14.5
+TH1F phodo_2y_neg_adc_occu 'SHMS Hodoscope 2Y- ADC Occupancy; Paddle Number; Number of Hits' P.hod.2y.negAdcCounter 21 0.5 21.5
+TH1F phodo_1x_neg_tdc_occu 'SHMS Hodoscope 1X- TDC Occupancy; Paddle Number; Number of Hits' P.hod.1x.negTdcCounter 13 0.5 13.5
+TH1F phodo_1y_neg_tdc_occu 'SHMS Hodoscope 1Y- TDC Occupancy; Paddle Number; Number of Hits' P.hod.1y.negTdcCounter 13 0.5 13.5 
+TH1F phodo_2x_neg_tdc_occu 'SHMS Hodoscope 2X- TDC Occupancy; Paddle Number; Number of Hits' P.hod.2x.negTdcCounter 14 0.5 14.5
+TH1F phodo_2y_neg_tdc_occu 'SHMS Hodoscope 2Y- TDC Occupancy; Paddle Number; Number of Hits' P.hod.2y.negTdcCounter 21 0.5 21.5
+TH2F phodo_1x_neg_ped_vs_pad 'SHMS Hodoscope 1X- Pulse Pedestal vs. Paddle Number; Paddle Number; Pulse Pedestal / 1 ADC Unit' P.hod.1x.negAdcCounter  P.hod.1x.negAdcPed 13 0.5 13.5 1000 0 1000
+TH2F phodo_1y_neg_ped_vs_pad 'SHMS Hodoscope 1Y- Pulse Pedestal vs. Paddle Number; Paddle Number; Pulse Pedestal / 1 ADC Unit' P.hod.1y.negAdcCounter  P.hod.1y.negAdcPed 13 0.5 13.5 1000 0 1000
+TH2F phodo_2x_neg_ped_vs_pad 'SHMS Hodoscope 2X- Pulse Pedestal vs. Paddle Number; Paddle Number; Pulse Pedestal / 1 ADC Unit' P.hod.2x.negAdcCounter  P.hod.2x.negAdcPed 14 0.5 14.5 1000 0 1000
+TH2F phodo_2y_neg_ped_vs_pad 'SHMS Hodoscope 2Y- Pulse Pedestal vs. Paddle Number; Paddle Number; Pulse Pedestal / 1 ADC Unit' P.hod.2y.negAdcCounter  P.hod.2y.negAdcPed 21 0.5 21.5 1000 0 1000
+TH2F phodo_1x_neg_pi_vs_pad 'SHMS Hodoscope 1X- Pulse Integral vs. Paddle Number; Paddle Number; Pulse Integral / 10 ADC Units' P.hod.1x.GoodPaddle  P.hod.1x.GoodNegAdcPulseInt 13 0.5 13.5 4000 0 40000
+TH2F phodo_1y_neg_pi_vs_pad 'SHMS Hodoscope 1Y- Pulse Integral vs. Paddle Number; Paddle Number; Pulse Integral / 10 ADC Units' P.hod.1y.GoodPaddle  P.hod.1y.GoodNegAdcPulseInt 13 0.5 13.5 4000 0 40000
+TH2F phodo_2x_neg_pi_vs_pad 'SHMS Hodoscope 2X- Pulse Integral vs. Paddle Number; Paddle Number; Pulse Integral / 10 ADC Units' P.hod.2x.GoodPaddle  P.hod.2x.GoodNegAdcPulseInt 14 0.5 14.5 4000 0 40000
+TH2F phodo_2y_neg_pi_vs_pad 'SHMS Hodoscope 2Y- Pulse Integral vs. Paddle Number; Paddle Number; Pulse Integral / 10 ADC Units' P.hod.2y.GoodPaddle  P.hod.2y.GoodNegAdcPulseInt 21 0.5 21.5 4000 0 40000
+TH2F phodo_1x_neg_pamp_vs_pad 'SHMS Hodoscope 1X- Pulse Amplitude vs. Paddle Number; Paddle Number; Pulse Amplitude / 1 ADC Unit' P.hod.1x.GoodPaddle  P.hod.1x.GoodNegAdcPulseAmp 13 0.5 13.5 4100 0 4100
+TH2F phodo_1y_neg_pamp_vs_pad 'SHMS Hodoscope 1Y- Pulse Amplitude vs. Paddle Number; Paddle Number; Pulse Amplitude / 1 ADC Unit' P.hod.1y.GoodPaddle  P.hod.1y.GoodNegAdcPulseAmp 13 0.5 13.5 4100 0 4100
+TH2F phodo_2x_neg_pamp_vs_pad 'SHMS Hodoscope 2X- Pulse Amplitude vs. Paddle Number; Paddle Number; Pulse Amplitude / 1 ADC Unit' P.hod.2x.GoodPaddle  P.hod.2x.GoodNegAdcPulseAmp 14 0.5 14.5 4100 0 4100
+TH2F phodo_2y_neg_pamp_vs_pad 'SHMS Hodoscope 2Y- Pulse Amplitude vs. Paddle Number; Paddle Number; Pulse Amplitude / 1 ADC Unit' P.hod.2y.GoodPaddle  P.hod.2y.GoodNegAdcPulseAmp 21 0.5 21.5 4100 0 4100
+TH2F phodo_1x_neg_tdc_time_vs_pad 'SHMS Hodoscope 1X- TDC Time vs. Paddle Number; Paddle Number; TDC Time (ns) / 1 ns' P.hod.1x.GoodPaddle  P.hod.1x.GoodNegTdcChan 13 0.5 13.5 3500 -500 3000
+TH2F phodo_1y_neg_tdc_time_vs_pad 'SHMS Hodoscope 1Y- TDC Time vs. Paddle Number; Paddle Number; TDC Time (ns) / 1 ns' P.hod.1y.GoodPaddle  P.hod.1y.GoodNegTdcChan 13 0.5 13.5 3500 -500 3000
+TH2F phodo_2x_neg_tdc_time_vs_pad 'SHMS Hodoscope 2X- TDC Time vs. Paddle Number; Paddle Number; TDC Time (ns) / 1 ns' P.hod.2x.GoodPaddle  P.hod.2x.GoodNegTdcChan 14 0.5 14.5 3500 -500 3000
+TH2F phodo_2y_neg_tdc_time_vs_pad 'SHMS Hodoscope 2Y- TDC Time vs. Paddle Number; Paddle Number; TDC Time (ns) / 1 ns' P.hod.2y.GoodPaddle  P.hod.2y.GoodNegTdcChan 21 0.5 21.5 3500 -500 3000
+
+# Heavy Gas Cherenkov
+TH1F phgcer_occu 'SHMS Heavy Gas Cherenkov Occupancy; Counter Number; Number of Entries' P.hgcer.adcCounter 4 0.5 4.5
+TH2F phgcer_ped_vs_cntr 'SHMS Heavy Gas Cherenkov Pulse Pedestal vs. Counter Number; Counter Number;  Pulse Pedestal / 1 ADC Unit' P.hgcer.adcCounter P.hgcer.adcPed 4 0.5 4.5 1000 0 10000
+TH2F phgcer_pi_vs_cntr 'SHMS Heavy Gas Cherenkov Pulse Integral vs. Counter Number; Counter Number;  Pulse Integral / 10 ADC Units' P.hgcer.adcCounter P.hgcer.adcPulseInt 4 0.5 4.5 4000 0 40000
+TH2F phgcer_amp_vs_cntr 'SHMS Heavy Gas Cherenkov Pulse Amplitude vs. Counter Number; Counter Number;  Pulse Amplitude / 1 ADC Unit' P.hgcer.adcCounter P.hgcer.adcPulseAmp 4 0.5 4.5 4100 0 4100
+
+# Aerogel
+TH1F paero_pos_occu 'SHMS Aero+ Occupancy; Counter Number; Number of Entries' P.aero.posAdcCounter 7 0.5 7.5
+TH2F paero_pos_ped_vs_cntr 'SHMS Aero+ Pulse Pedestal vs. Counter Number; Counter Number;  Pulse Pedestal / 1 ADC Unit' P.aero.posAdcCounter P.aero.posAdcPed 7 0.5 7.5 1000 0 1000
+TH2F paero_pos_pi_vs_cntr 'SHMS Aero+ Pulse Integral vs. Counter Number; Counter Number;  Pulse Integral / 10 ADC Units' P.aero.posAdcCounter P.aero.posAdcPulseInt 7 0.5 7.5 4000 0 40000
+TH2F paero_pos_amp_vs_cntr 'SHMS Aero+ Pulse Amplitude vs. Counter Number; Counter Number;  Pulse Amplitude / 1 ADC Unit' P.aero.posAdcCounter P.aero.posAdcPulseAmp 7 0.5 7.5 4100 0 4100
+TH1F paero_neg_occu 'SHMS Aero- Occupancy; Counter Number; Number of Entries' P.aero.negAdcCounter 7 0.5 7.5
+TH2F paero_neg_ped_vs_cntr 'SHMS Aero- Pulse Pedestal vs. Counter Number; Counter Number;  Pulse Pedestal / 1 ADC Unit' P.aero.negAdcCounter P.aero.negAdcPed 7 0.5 7.5 1000 0 1000
+TH2F paero_neg_pi_vs_cntr 'SHMS Aero- Pulse Integral vs. Counter Number; Counter Number;  Pulse Integral / 10 ADC Units' P.aero.negAdcCounter P.aero.negAdcPulseInt 7 0.5 7.5 4000 0 40000
+TH2F paero_neg_amp_vs_cntr 'SHMS Aero- Pulse Amplitude vs. Counter Number; Counter Number;  Pulse Amplitude / 1 ADC Unit' P.aero.negAdcCounter P.aero.negAdcPulseAmp 7 0.5 7.5 4100 0 4100
+
+# Pre-Shower Calorimeter
+TH1F pcal_prshwr_pos_occu 'SHMS Preshower+ Occupancy; Block Number; Number of Entries' P.cal.pr.posAdcCounter 14 0.5 14.5
+TH2F pcal_prshwr_pos_ped_blk 'SHMS Preshower+ Pulse Pedestal vs. Block Number; Block Number; Pulse Pedestal / 1 ADC Unit' P.cal.pr.posAdcCounter P.cal.pr.posAdcPed 14 0.5 14.5 1000 0 1000
+TH2F pcal_prshwr_pos_pi_blk 'SHMS Preshower+ Pulse Integral vs. Block Number; Block Number; Pulse Integral / 10 ADC Units' P.cal.pr.posAdcCounter P.cal.pr.posAdcPulseInt 14 0.5 14.5 4000 0 40000
+TH2F pcal_prshwr_pos_amp_blk 'SHMS Preshower+ Pulse Amplitude vs. Block Number; Block Number; Pulse Amplitude / 1 ADC Unit' P.cal.pr.posAdcCounter P.cal.pr.posAdcPulseAmp 14 0.5 14.5 4100 0 4100
+TH1F pcal_prshwr_neg_occu 'SHMS Preshower- Occupancy; Block Number; Number of Entries' P.cal.pr.negAdcCounter 14 0.5 14.5
+TH2F pcal_prshwr_neg_ped_blk 'SHMS Preshower- Pulse Pedestal vs. Block Number; Block Number; Pulse Pedestal / 1 ADC Unit' P.cal.pr.negAdcCounter P.cal.pr.negAdcPed 14 0.5 14.5 1000 0 1000
+TH2F pcal_prshwr_neg_pi_blk 'SHMS Preshower- Pulse Integral vs. Block Number; Block Number; Pulse Integral / 10 ADC Units' P.cal.pr.negAdcCounter P.cal.pr.negAdcPulseInt 14 0.5 14.5 4000 0 40000
+TH2F pcal_prshwr_neg_amp_blk 'SHMS Preshower- Pulse Amplitude vs. Block Number; Block Number; Pulse Amplitude / 1 ADC Unit' P.cal.pr.negAdcCounter P.cal.pr.negAdcPulseAmp 14 0.5 14.5 4100 0 4100 
+
+# Shower Calorimeter
+TH1F pcal_shwr_occu 'SHMS Shower Occupancy; Block Number; Number of Entries' P.cal.fly.adcCounter 224 0.5 224.5
+TH2F pcal_shwr_ped_blk 'SHMS Shower Pulse Pedestal vs. Block Number; Block Number; Pulse Pedestal / 1 ADC Unit' P.cal.fly.adcCounter P.cal.fly.adcPed 224 0.5 224.5 1000 0 1000
+TH2F pcal_shwr_pi_blk 'SHMS Shower Pulse Integral vs. Block Number; Block Number; Pulse Integral / 10 ADC Units' P.cal.fly.adcCounter P.cal.fly.adcPulseInt 224 0.5 224.5 4000 0 40000
+TH2F pcal_shwr_amp_blk 'SHMS Shower Pulse Amplitude vs. Block Number; Block Number; Pulse Amplitude / 1 ADC Unit' P.cal.fly.adcCounter P.cal.fly.adcPulseAmp 224 0.5 224.5 4100 0 4100 
+
+# Trigger Apparatus
+TH1F ptrig_pngc_sum_pped 'SHMS Noble Gas Sum FADC Pulse Pedestal; Pulse Pedestal; Number of Entries / 1 ADC Units' T.shms.pNGCSUM_adcPed 2000 0 2000
+TH1F ptrig_pngc_sum_pint 'SHMS Noble Gas Sum FADC Pulse Integral; Pulse Integral; Number of Entries / 10 ADC Units' T.shms.pNGCSUM_adcPulseInt 4000 0 40000
+TH1F ptrig_pngc_sum_pamp 'SHMS Noble Gas Sum FADC Pulse Amplitude; Pulse Amplitude; Number of Entries / 1 ADC Units' T.shms.pNGCSUM_adcPulseAmp 4100 0 4100
+TH1F ptrig_pngc_sum_ptime 'SHMS Noble Gas Sum FADC Pulse Time; Pulse Time; Number of Entries / 10 ADC Units' T.shms.pNGCSUM_adcPulseTimeRaw 1000 0 10000
+TH1F ptrig_pngc_sum_tdc 'SHMS Noble Gas Sum TDC Time; TDC Time; Number of Entries / 10 TDC Units' T.shms.pNGCSUM_tdcTime 700 -3500 3500
+
+TH1F ptrig_phgc_sum_pped 'SHMS Heavy Gas Sum FADC Pulse Pedestal; Pulse Pedestal; Number of Entries / 1 ADC Units' T.shms.pHGCSUM_adcPed 2000 0 2000
+TH1F ptrig_phgc_sum_pint 'SHMS Heavy Gas Sum FADC Pulse Integral; Pulse Integral; Number of Entries / 10 ADC Units' T.shms.pHGCSUM_adcPulseInt 4000 0 40000
+TH1F ptrig_phgc_sum_pamp 'SHMS Heavy Gas Sum FADC Pulse Amplitude; Pulse Amplitude; Number of Entries / 1 ADC Units' T.shms.pHGCSUM_adcPulseAmp 4100 0 4100
+TH1F ptrig_phgc_sum_ptime 'SHMS Heavy Gas Sum FADC Pulse Time; Pulse Time; Number of Entries / 10 ADC Units' T.shms.pHGCSUM_adcPulseTimeRaw 1000 0 10000
+TH1F ptrig_phgc_sum_tdc 'SHMS Heavy Gas Sum TDC Time; TDC Time; Number of Entries / 10 TDC Units' T.shms.pHGCSUM_tdcTime 700 -3500 3500
+
+TH1F ptrig_p1x_tdc 'SHMS p1x TDC Time; Raw TDC Time (TDC Units); Counts / 10 TDC Units;' T.shms.p1X_tdcTime 350 0 3500
+TH1F ptrig_p1y_tdc 'SHMS p1y TDC Time; Raw TDC Time (TDC Units); Counts / 10 TDC Units;' T.shms.p1Y_tdcTime 350 0 3500
+TH1F ptrig_p2x_tdc 'SHMS p2x TDC Time; Raw TDC Time (TDC Units); Counts / 10 TDC Units;' T.shms.p2X_tdcTime 350 0 3500
+TH1F ptrig_p2y_tdc 'SHMS p2y TDC Time; Raw TDC Time (TDC Units); Counts / 10 TDC Units;' T.shms.p2Y_tdcTime 350 0 3500
+
+TH1F ptrig_p1T_tdc 'SHMS p1x/p1y Coincidence TDC Time; Raw TDC Time (TDC Units); Counts / 10 TDC Units;' T.shms.p1T_tdcTime 350 0 3500
+TH1F ptrig_p2T_tdc 'SHMS p2x/p2y Coincidence TDC Time; Raw TDC Time (TDC Units); Counts / 10 TDC Units;' T.shms.p2T_tdcTime 350 0 3500
+
+TH1F ptrig_pT1_tdc 'SHMS p1x/p1y/p2x/p2y Coincidence TDC Time (Slot 20, Channel 15); Raw TDC Time (TDC Units); Counts / 10 TDC Units;' T.shms.pT1_tdcTime 350 0 3500
+TH1F ptrig_pT2_tdc 'SHMS p1x/p1y/p2x/p2y Coincidence TDC Time (Slot 19, Channel 31); Raw TDC Time (TDC Units); Counts / 10 TDC Units;' T.shms.pT2_tdcTime 350 0 3500
+TH1F ptrig_pT3_tdc 'SHMS p1x/p1y/p2x/p2y Coincidence TDC Time (Slot 19, Channel 38); Raw TDC Time (TDC Units); Counts / 10 TDC Units;' T.shms.pT3_tdcTime 350 0 3500
\ No newline at end of file
diff --git a/DEF-files/SHMS/GEN/pstackana_report_cuts.def b/DEF-files/SHMS/GEN/pstackana_report_cuts.def
new file mode 100644
index 0000000000000000000000000000000000000000..d012b948a85ac7cc1839689003162ea1810f1a9a
--- /dev/null
+++ b/DEF-files/SHMS/GEN/pstackana_report_cuts.def
@@ -0,0 +1,189 @@
+# Demo cuts for hodtest
+#
+
+Block: RawDecode
+
+Pedestal_event    g.evtyp==4
+scalar_event      g.evtyp==0
+HMS_event         g.evtyp==1
+SHMS_event         g.evtyp==1
+coin_event        g.evtyp==3
+misc_event        g.evtyp>=5
+hmscoin_event     g.evtyp==1||g.evtyp==3
+shmscoin_event     g.evtyp==2||g.evtyp==3
+all_event         g.evtyp==1||g.evtyp==2||g.evtyp==3
+RawDecode_master  1
+
+Block: Decode
+Decode_master     HMS_event
+
+Block: CoarseTracking
+CoarseTracking_master HMS_event
+
+all_trigs             g.evtyp==1 || g.evtyp==2 || g.evtyp==3
+hms_shms_trig          g.evtyp==1 || g.evtyp==2
+hms_coin_trig         g.evtyp==1 || g.evtyp==3
+
+
+shmsDC1Planes_large  (P.dc.1x1.nhit+P.dc.1u2.nhit+P.dc.1u1.nhit+P.dc.1v1.nhit+P.dc.1x2.nhit+P.dc.1v2.nhit) >20
+shmsDC2Planes_large  (P.dc.2x1.nhit+P.dc.2u2.nhit+P.dc.2u1.nhit+P.dc.2v1.nhit+P.dc.2x2.nhit+P.dc.2v2.nhit) >20
+
+shmsDC1_1hit_x1                P.dc.1x1.nhit == 1
+shmsDC1_1hit_u1                P.dc.1u1.nhit == 1
+shmsDC1_1hit_u2                P.dc.1u2.nhit == 1
+shmsDC1_1hit_v1                P.dc.1v1.nhit == 1
+shmsDC1_1hit_v2                P.dc.1v2.nhit == 1
+shmsDC1_1hit_x2                P.dc.1x2.nhit == 1
+
+shmsDC2_1hit_x1                P.dc.2x1.nhit == 1
+shmsDC2_1hit_u1                P.dc.2u1.nhit == 1
+shmsDC2_1hit_u2                P.dc.2u2.nhit == 1
+shmsDC2_1hit_v1                P.dc.2v1.nhit == 1
+shmsDC2_1hit_v2                P.dc.2v2.nhit == 1
+shmsDC2_1hit_x2                P.dc.2x2.nhit == 1
+
+h1hit1                P.dc.1x1.nhit >= 1
+h1hit2                P.dc.1u1.nhit >= 1
+h1hit3                P.dc.1u2.nhit >= 1
+h1hit4                P.dc.1v1.nhit >= 1
+h1hit5                P.dc.1v2.nhit >= 1
+h1hit6                P.dc.1x2.nhit >= 1
+
+h2hit1                P.dc.2x1.nhit >= 1
+h2hit2                P.dc.2u1.nhit >= 1
+h2hit3                P.dc.2u2.nhit >= 1
+h2hit4                P.dc.2v1.nhit >= 1
+h2hit5                P.dc.2v2.nhit >= 1
+h2hit6                P.dc.2x2.nhit >= 1
+
+shmsDC1Planes6hits shmsDC1_1hit_x1&&shmsDC1_1hit_u1&&shmsDC1_1hit_u2&&shmsDC1_1hit_x2&&shmsDC1_1hit_v1&&shmsDC1_1hit_v2
+shmsDC2Planes6hits shmsDC2_1hit_x1&&shmsDC2_1hit_u1&&shmsDC2_1hit_u2&&shmsDC2_1hit_x2&&shmsDC2_1hit_v1&&shmsDC2_1hit_v2
+shmsDC1_5hits_x1     shmsDC1_1hit_u1&&shmsDC1_1hit_u2&&shmsDC1_1hit_x2&&shmsDC1_1hit_v1&&shmsDC1_1hit_v2
+shmsDC1_6hits_x1     h1hit1&&shmsDC1_1hit_u1&&shmsDC1_1hit_u2&&shmsDC1_1hit_x2&&shmsDC1_1hit_v1&&shmsDC1_1hit_v2
+shmsDC1_5hits_u1     shmsDC1_1hit_x1&&shmsDC1_1hit_u2&&shmsDC1_1hit_x2&&shmsDC1_1hit_v1&&shmsDC1_1hit_v2
+shmsDC1_6hits_u1     h1hit2&&shmsDC1_1hit_x1&&shmsDC1_1hit_u2&&shmsDC1_1hit_x2&&shmsDC1_1hit_v1&&shmsDC1_1hit_v2
+shmsDC1_5hits_u2     shmsDC1_1hit_x1&&shmsDC1_1hit_u1&&shmsDC1_1hit_x2&&shmsDC1_1hit_v1&&shmsDC1_1hit_v2
+shmsDC1_6hits_u2     h1hit3&&shmsDC1_1hit_x1&&shmsDC1_1hit_u1&&shmsDC1_1hit_x2&&shmsDC1_1hit_v1&&shmsDC1_1hit_v2
+shmsDC1_5hits_v1     shmsDC1_1hit_x1&&shmsDC1_1hit_u1&&shmsDC1_1hit_x2&&shmsDC1_1hit_u2&&shmsDC1_1hit_v2
+shmsDC1_6hits_v1     h1hit4&&shmsDC1_1hit_x1&&shmsDC1_1hit_u1&&shmsDC1_1hit_x2&&shmsDC1_1hit_u2&&shmsDC1_1hit_v2
+shmsDC1_5hits_v2     shmsDC1_1hit_x1&&shmsDC1_1hit_u1&&shmsDC1_1hit_x2&&shmsDC1_1hit_u2&&shmsDC1_1hit_v1
+shmsDC1_6hits_v2     h1hit5&&shmsDC1_1hit_x1&&shmsDC1_1hit_u1&&shmsDC1_1hit_x2&&shmsDC1_1hit_u2&&shmsDC1_1hit_v1
+shmsDC1_5hits_x2     shmsDC1_1hit_x1&&shmsDC1_1hit_u1&&shmsDC1_1hit_v1&&shmsDC1_1hit_u2&&shmsDC1_1hit_v2
+shmsDC1_6hits_x2     h1hit6&&shmsDC1_1hit_x1&&shmsDC1_1hit_u1&&shmsDC1_1hit_v1&&shmsDC1_1hit_u2&&shmsDC1_1hit_v2
+
+shmsDC2_5hits_x1     shmsDC2_1hit_u1&&shmsDC2_1hit_u2&&shmsDC2_1hit_x2&&shmsDC2_1hit_v1&&shmsDC2_1hit_v2
+shmsDC2_6hits_x1     h2hit1&&shmsDC2_1hit_u1&&shmsDC2_1hit_u2&&shmsDC2_1hit_x2&&shmsDC2_1hit_v1&&shmsDC2_1hit_v2
+shmsDC2_5hits_u1     shmsDC2_1hit_x1&&shmsDC2_1hit_u2&&shmsDC2_1hit_x2&&shmsDC2_1hit_v1&&shmsDC2_1hit_v2
+shmsDC2_6hits_u1     h2hit2&&shmsDC2_1hit_x1&&shmsDC2_1hit_u2&&shmsDC2_1hit_x2&&shmsDC2_1hit_v1&&shmsDC2_1hit_v2
+shmsDC2_5hits_u2     shmsDC2_1hit_x1&&shmsDC2_1hit_u1&&shmsDC2_1hit_x2&&shmsDC2_1hit_v1&&shmsDC2_1hit_v2
+shmsDC2_6hits_u2     h2hit3&&shmsDC2_1hit_x1&&shmsDC2_1hit_u1&&shmsDC2_1hit_x2&&shmsDC2_1hit_v1&&shmsDC2_1hit_v2
+shmsDC2_5hits_v1     shmsDC2_1hit_x1&&shmsDC2_1hit_u1&&shmsDC2_1hit_x2&&shmsDC2_1hit_u2&&shmsDC2_1hit_v2
+shmsDC2_6hits_v1     h2hit4&&shmsDC2_1hit_x1&&shmsDC2_1hit_u1&&shmsDC2_1hit_x2&&shmsDC2_1hit_u2&&shmsDC2_1hit_v2
+shmsDC2_5hits_v2     shmsDC2_1hit_x1&&shmsDC2_1hit_u1&&shmsDC2_1hit_x2&&shmsDC2_1hit_u2&&shmsDC2_1hit_v1
+shmsDC2_6hits_v2     h2hit5&&shmsDC2_1hit_x1&&shmsDC2_1hit_u1&&shmsDC2_1hit_x2&&shmsDC2_1hit_u2&&shmsDC2_1hit_v1
+shmsDC2_5hits_x2     shmsDC2_1hit_x1&&shmsDC2_1hit_u1&&shmsDC2_1hit_v1&&shmsDC2_1hit_u2&&shmsDC2_1hit_v2
+shmsDC2_6hits_x2     h2hit6&&shmsDC2_1hit_x1&&shmsDC2_1hit_u1&&shmsDC2_1hit_v1&&shmsDC2_1hit_u2&&shmsDC2_1hit_v2
+
+
+
+
+
+shms1HitsLt            P.dc.Ch1.nhit <= P.dc.Ch1.maxhits && g.evtyp==1
+shms2HitsLt            P.dc.Ch2.nhit <= P.dc.Ch2.maxhits && g.evtyp==1
+shmsHitsLt             P.dc.Ch1.nhit <= P.dc.Ch1.maxhits && P.dc.Ch2.nhit <= P.dc.Ch2.maxhits && g.evtyp==1
+shmsDC1PlanesGT        (h1hit1 + h1hit2 + h1hit3 + h1hit4 + h1hit5 + h1hit6 )>=5
+shmsDC2PlanesGT        (h2hit1 + h2hit2 + h2hit3 + h2hit4 + h2hit5 + h2hit6 )>=5
+shmsPlanesGT           shmsDC1PlanesGT && shmsDC2PlanesGT
+shmsHitsPlanes         (P.dc.Ch1.nhit <= P.dc.Ch1.maxhits) && (P.dc.Ch2.nhit <= P.dc.Ch2.maxhits) && shmsPlanesGT
+hSpacePoints          P.dc.Ch1.spacepoints >= 1 && P.dc.Ch2.spacepoints >=1
+hSpacePointsStub      P.dc.stubtest==1 && P.dc.Ch1.spacepoints >=1 && P.dc.Ch2.spacepoints >=1
+hFoundTrack           P.dc.ntrack>0 
+hStubLT               P.dc.stubtest==1
+f1HSpacePoints        shms1HitsLt && shmsDC1PlanesGT && P.dc.Ch1.spacepoints==0 && g.evtyp==1
+f2HSpacePoints        shms2HitsLt && shmsDC2PlanesGT && P.dc.Ch2.spacepoints==0 && g.evtyp==1
+hTest1                shmsHitsPlanes && (!hSpacePoints)
+hTest2                hSpacePoints && (!hStubLT)
+
+
+
+
+
+
+Block: CoarseReconstruct
+CoarseReconstruct_master shms_event
+
+Block: Tracking
+Tracking_master  shms_event
+
+Block: Reconstruct
+Reconstruct_master shms_event
+
+shmsScinGood           P.hod.goodscinhit == 1
+
+shmsScinShould         shmsScinGood && P.cal.etotnorm > 0.7 && P.hgcer.npesum > 2.0
+shmsScinShoulde        shmsScinGood && P.hgcer.npesum > 2.0
+shmsScinShouldh        P.hod.goodscinhit == 1 && g.evtyp == 1
+
+shmsScinDid            shmsScinShould && P.dc.ntrack > 0
+shmsScinDide           shmsScinShoulde && P.dc.ntrack > 0
+shmsScinDidh           shmsScinShouldh && P.dc.ntrack > 0
+
+
+
+goodHDC1x1            P.dc.1x1.nhit > 0 && P.dc.1x1.nhit < 3
+goodHDC1u2            P.dc.1u2.nhit > 0 && P.dc.1u2.nhit < 3
+goodHDC1u1            P.dc.1u1.nhit > 0 && P.dc.1u1.nhit < 3
+goodHDC1v1            P.dc.1v1.nhit > 0 && P.dc.1v1.nhit < 3
+goodHDC1v2            P.dc.1v2.nhit > 0 && P.dc.1v2.nhit < 3
+goodHDC1x2            P.dc.1x2.nhit > 0 && P.dc.1x2.nhit < 3
+
+goodHDC2x1            P.dc.2x1.nhit > 0 && P.dc.2x1.nhit < 3
+goodHDC2u2            P.dc.2u2.nhit > 0 && P.dc.2u2.nhit < 3
+goodHDC2u1            P.dc.2u1.nhit > 0 && P.dc.2u1.nhit < 3
+goodHDC2v1            P.dc.2v1.nhit > 0 && P.dc.2v1.nhit < 3
+goodHDC2v2            P.dc.2v2.nhit > 0 && P.dc.2v2.nhit < 3
+goodHDC2x2            P.dc.2x2.nhit > 0 && P.dc.2x2.nhit < 3
+
+goodHDC1              goodHDC1x1  && goodHDC1u2 && goodHDC1u1 && goodHDC1v1 && goodHDC1v2 && goodHDC1x2 
+goodHDC2              goodHDC2x1  && goodHDC2u2 && goodHDC2u1 && goodHDC2v1 && goodHDC2v2 && goodHDC2x2 
+bothGood              goodHDC1 && goodHDC2
+
+realhdc1x1            goodHDC1x1 && ((P.dc.Ch1.spacepoints+P.dc.Ch2.spacepoints)>0)
+realhdc1u2            goodHDC1u2 && ((P.dc.Ch1.spacepoints+P.dc.Ch2.spacepoints)>0)
+realhdc1u1            goodHDC1u1 && ((P.dc.Ch1.spacepoints+P.dc.Ch2.spacepoints)>0)
+realhdc1v1            goodHDC1v1 && ((P.dc.Ch1.spacepoints+P.dc.Ch2.spacepoints)>0)
+realhdc1v2            goodHDC1v2 && ((P.dc.Ch1.spacepoints+P.dc.Ch2.spacepoints)>0)
+realhdc2x2            goodHDC1x2 && ((P.dc.Ch1.spacepoints+P.dc.Ch2.spacepoints)>0)
+realhdc2x1            goodHDC2x1 && ((P.dc.Ch1.spacepoints+P.dc.Ch2.spacepoints)>0)
+realhdc2u2            goodHDC2u2 && ((P.dc.Ch1.spacepoints+P.dc.Ch2.spacepoints)>0)
+realhdc2u1            goodHDC2u1 && ((P.dc.Ch1.spacepoints+P.dc.Ch2.spacepoints)>0)
+realhdc2v1            goodHDC2v1 && ((P.dc.Ch1.spacepoints+P.dc.Ch2.spacepoints)>0)
+realhdc2v2            goodHDC2v2 && ((P.dc.Ch1.spacepoints+P.dc.Ch2.spacepoints)>0)
+realhdc2x2            goodHDC2x2 && ((P.dc.Ch1.spacepoints+P.dc.Ch2.spacepoints)>0)
+
+hFound1Track          P.dc.ntrack == 1
+hFound2Track          P.dc.ntrack == 2
+hFound3Track          P.dc.ntrack == 3
+hFound4Track          P.dc.ntrack == 4
+
+hCleanTrack           P.gtr.index > -1
+1hCleanTrack          P.gtr.index == 0
+2hCleanTrack          P.gtr.index == 1
+3hCleanTrack          P.gtr.index == 2
+4hCleanTrack          P.gtr.index == 3
+
+anyhs1x               P.hod.1x.nhits > 0
+anyhs1y               P.hod.1y.nhits > 0
+anyhs2x               P.hod.2x.nhits > 0
+anyhs2y               P.hod.2y.nhits > 0
+
+goodhs1x              P.hod.1x.nhits > 0 && P.hod.1x.nhits < 3
+goodhs1y              P.hod.1y.nhits > 0 && P.hod.1y.nhits < 3
+goodhs1               goodhs1x && goodhs1y
+goodhs2x              P.hod.2x.nhits > 0 && P.hod.2x.nhits < 3
+goodhs2y              P.hod.2y.nhits > 0 && P.hod.2y.nhits < 3
+goodhs2               goodhs2x && goodhs2y
+goodhs1s2             goodhs1 && goodhs2
+
+Block: Physics
+Physics_master shms_event
diff --git a/PARAM/HMS/GEN/htracking.param b/PARAM/HMS/GEN/htracking.param
index e56b394c9416fa6229598a47e546edd6ac85770d..3ee7a1eaf1c296febd6681be9e640cda25f78d2c 100644
--- a/PARAM/HMS/GEN/htracking.param
+++ b/PARAM/HMS/GEN/htracking.param
@@ -8,11 +8,11 @@ hntracks_max_fp = 10
 h_remove_sppt_if_one_y_plane = 0
 
 ; Minimum number of hits in each space point (one per chamber)
-hmin_hit = 5, 5
+hmin_hit = 4, 4
 
 ; Minimum number of pairs in each space point (one per chamber)
 ; Should be 3/3 for 4/6 tracking, and 4/4 for 5/6 tracking
-hmin_combos = 4, 4 
+hmin_combos = 3, 3 
 
 ; Minimum separation of distinct space points
 hspace_point_criterion = 1.0, 1.0
@@ -60,8 +60,11 @@ hstub_max_xpdiff = .05
 
 ; hstat_maxchisq          chisquared limit for tracks used to measure hodo. eff.
   hstat_maxchisq = 10.
+; if both hsel_using_scin = 0 and hsel_using_prune = 0 then best chi2 track is used.
 ; hsel_using_scin         uses scintillator for track selection
-  hsel_using_scin = 1
+  hsel_using_scin = 0
+; hsel_using_prune         using prune
+  hsel_using_prune = 0
 ; hstat_slop              distance from center of scin. to count as expecting hit
   hstat_slop = 2.
 ; hstat_mineff            warning level for scin. effic.
diff --git a/PARAM/HMS/HODO/hhodo.param b/PARAM/HMS/HODO/hhodo.param
index 54596af47693886ae5654fcaef5208a0e7c42e3b..27b0e24fbbaa971e09ed321c1d160abcd427086b 100644
--- a/PARAM/HMS/HODO/hhodo.param
+++ b/PARAM/HMS/HODO/hhodo.param
@@ -8,19 +8,20 @@ hhodo_adc_mode=1
 ; 
 ; hhodo_tdc_offset is array of time offsets for all paddles in a plane
 ;   to move the tdc to between 0 and 4000 channels.
-  hhodo_tdc_offset = 1280, 1280, 1280, 1290
+  hhodo_tdc_offset = 1120, 1120, 1120, 1120
+;  hhodo_tdc_offset = 1000, 1000, 1000, 1000
 ; hstart_time_center  center of allowed time window (ns)
    hstart_time_center = 32.                                                     
 ; hstart_time_slop    1/2 width of time window                                  
-   hstart_time_slop = 25.                                                       
+   hstart_time_slop = 100.                                                       
 ; hscin_tdc_min       minimum tdc value in hms scin                             
-    hscin_tdc_min = 0                                                           
+    hscin_tdc_min = -500                                                           
 ; hscin_tdc_max       maximum allowed tdc value                                 
    hscin_tdc_max = 4000                                                         
 ; hscin_tdc_to_time   scin tdc time per channel                                 
    hscin_tdc_to_time = 0.1                                                  
 ; tof and you figured out good values
-   htof_tolerance = 30.0
+   htof_tolerance = 50.0
 ;                                                                               
 ; hms_tof_params                                                                
 ; hnum_scin_counters, hhodo_zpos, hhodo_center_coord, hhodo_width               
@@ -32,8 +33,7 @@ hhodo_adc_mode=1
 htofusinginvadc=1
 ;                                                                               
                                                                                 
-hhodo_pos_invadc_offset =   0.000,   0.0000,  0.000,   0.000
- 0.000,   0.0000,  0.000,   0.000
+hhodo_pos_invadc_offset = 0.000,   0.0000,  0.000,   0.000
  0.000,   0.0000,  0.000,   0.000
  0.000,   0.0000,  0.000,   0.000
  0.000,   0.0000,  0.000,   0.000
@@ -48,57 +48,60 @@ hhodo_pos_invadc_offset =   0.000,   0.0000,  0.000,   0.000
  0.000,   0.0000,  0.000,   0.000
  0.000,   0.0000,  0.000,   0.000
  0.000,   0.0000,  0.000,   0.000
+ 0.000,   0.0000,  0.000,   0.000 
+
 ;
-hhodo_neg_invadc_offset =   0.000,   0.0000,  0.000,   0.000
- 0.000,   0.0000,  0.000,   0.000
- 0.000,   0.0000,  0.000,   0.000
- 0.000,   0.0000,  0.000,   0.000
- 0.000,   0.0000,  0.000,   0.000
- 0.000,   0.0000,  0.000,   0.000
- 0.000,   0.0000,  0.000,   0.000
- 0.000,   0.0000,  0.000,   0.000
- 0.000,   0.0000,  0.000,   0.000
- 0.000,   0.0000,  0.000,   0.000
- 0.000,   0.0000,  0.000,   0.000
- 0.000,   0.0000,  0.000,   0.000
- 0.000,   0.0000,  0.000,   0.000
- 0.000,   0.0000,  0.000,   0.000
- 0.000,   0.0000,  0.000,   0.000
- 0.000,   0.0000,  0.000,   0.000
-;
-hhodo_pos_invadc_linear =   14.0,14.8,15.5,15.8        
-                        14.0,14.8,15.5,15.8      
-                        14.0,14.8,15.5,15.8      
-                        14.0,14.8,15.5,15.8   
-                        14.0,14.8,15.5,15.8   
-                        14.0,14.8,15.5,15.8  
-                        14.0,14.8,15.5,15.8  
-                        14.0,14.8,15.5,15.8
-                        14.0,14.8,15.5,15.8 
-                        14.0,14.8,15.5,15.8 
-                        14.0,14.8,15.5,15.8
-                        14.0,14.8,15.5,15.8
-                        14.0,14.8,15.5,15.8
-                        14.0,14.8,15.5,15.8
-                        14.0,14.8,15.5,15.8  
-                        14.0,14.8,15.5,15.8  
-hhodo_neg_invadc_linear =   14.0,14.8,15.5,15.8        
-                        14.0,14.8,15.5,15.8      
-                        14.0,14.8,15.5,15.8      
-                        14.0,14.8,15.5,15.8   
-                        14.0,14.8,15.5,15.8   
-                        14.0,14.8,15.5,15.8  
-                        14.0,14.8,15.5,15.8  
-                        14.0,14.8,15.5,15.8
-                        14.0,14.8,15.5,15.8 
-                        14.0,14.8,15.5,15.8 
-                        14.0,14.8,15.5,15.8
-                        14.0,14.8,15.5,15.8
-                        14.0,14.8,15.5,15.8
-                        14.0,14.8,15.5,15.8
-                        14.0,14.8,15.5,15.8  
-                        14.0,14.8,15.5,15.8  
+hhodo_neg_invadc_offset = 2.63295,0.592977,0.810207,2.17447
+1.6381,-2.44172,-0.167998,1.613
+2.12397,-1.11413,1.12234,2.70131
+2.23737,-3.22432,-0.0328571,2.88366
+1.84971,-2.55502,-0.325019,2.75559
+1.77137,-1.90664,-0.0557544,1.354
+1.86089,-1.9991,-1.08851,-2.15107
+2.74336,-2.60574,0.388706,3.63254
+1.53963,-1.67298,-1.06672,3.14031
+2.25306,-2.75735,0.900716,2.54422
+1.72962,0.0,-0.000925926,0.0
+0.136985,0.0,-1.90318,0.0
+1.06083,0.0,-4.18178,0.0
+1.92537,0.0,-0.688612,0.0
+1.36458,0.0,0.641606,0.0
+1.95569,0.0,-1.16377,0.0
  
+;
+hhodo_pos_invadc_linear = 15.0,15.0,15.0,15.0        
+                        15.0,15.0,15.0,15.0                                     
+                        15.0,15.0,15.0,15.0                                     
+                        15.0,15.0,15.0,15.0                                     
+                        15.0,15.0,15.0,15.0                                     
+                        15.0,15.0,15.0,15.0                                     
+                        15.0,15.0,15.0,15.0                                     
+                        15.0,15.0,15.0,15.0                                     
+                        15.0,15.0,15.0,15.0                                     
+                        15.0,15.0,15.0,15.0                                     
+                        15.0,15.0,15.0,15.0                                     
+                        15.0,15.0,15.0,15.0                                     
+                        15.0,15.0,15.0,15.0                                     
+                        15.0,15.0,15.0,15.0                                     
+                        15.0,15.0,15.0,15.0                                     
+                        15.0,15.0,15.0,15.0                                     
+hhodo_neg_invadc_linear = 15.0,15.0,15.0,15.0        
+                        15.0,15.0,15.0,15.0                                     
+                        15.0,15.0,15.0,15.0                                     
+                        15.0,15.0,15.0,15.0                                     
+                        15.0,15.0,15.0,15.0                                     
+                        15.0,15.0,15.0,15.0                                     
+                        15.0,15.0,15.0,15.0                                     
+                        15.0,15.0,15.0,15.0                                     
+                        15.0,15.0,15.0,15.0                                     
+                        15.0,15.0,15.0,15.0                                     
+                        15.0,15.0,15.0,15.0                                     
+                        15.0,15.0,15.0,15.0                                     
+                        15.0,15.0,15.0,15.0                                     
+                        15.0,15.0,15.0,15.0                                     
+                        15.0,15.0,15.0,15.0                                     
+                        15.0,15.0,15.0,15.0                                     
+
 hhodo_pos_invadc_adc =   0.000,   0.0000,  0.000,   0.000
  0.000,   0.0000,  0.000,   0.000
  0.000,   0.0000,  0.000,   0.000
@@ -133,23 +136,23 @@ hhodo_neg_invadc_adc =   0.000,   0.0000,  0.000,   0.000
  0.000,   0.0000,  0.000,   0.000
  0.000,   0.0000,  0.000,   0.000
 ;
-     hhodo_vel_light =  14.0,14.8,15.5,15.8        
-                        14.0,14.8,15.5,15.8      
-                        14.0,14.8,15.5,15.8      
-                        14.0,14.8,15.5,15.8   
-                        14.0,14.8,15.5,15.8   
-                        14.0,14.8,15.5,15.8  
-                        14.0,14.8,15.5,15.8  
-                        14.0,14.8,15.5,15.8
-                        14.0,14.8,15.5,15.8 
-                        14.0,14.8,15.5,15.8 
-                        14.0,14.8,15.5,15.8
-                        14.0,14.8,15.5,15.8
-                        14.0,14.8,15.5,15.8
-                        14.0,14.8,15.5,15.8
-                        14.0,14.8,15.5,15.8  
-                        14.0,14.8,15.5,15.8  
-;                                                                               
+     hhodo_vel_light =  15.0,15.0,15.0,15.0                                     
+                        15.0,15.0,15.0,15.0                                     
+                        15.0,15.0,15.0,15.0                                     
+                        15.0,15.0,15.0,15.0                                     
+                        15.0,15.0,15.0,15.0                                     
+                        15.0,15.0,15.0,15.0                                     
+                        15.0,15.0,15.0,15.0                                     
+                        15.0,15.0,15.0,15.0                                     
+                        15.0,15.0,15.0,15.0                                     
+                        15.0,15.0,15.0,15.0                                     
+                        15.0,15.0,15.0,15.0                                     
+                        15.0,15.0,15.0,15.0                                     
+                        15.0,15.0,15.0,15.0                                     
+                        15.0,15.0,15.0,15.0                                     
+                        15.0,15.0,15.0,15.0                                     
+                        15.0,15.0,15.0,15.0                                     
+ ;                                                                               
       hhodo_pos_sigma = .3,.3,.3,.3,.3,.3,.3,.3                                 
                         .3,.3,.3,.3,.3,.3,.3,.3                                 
                         .3,.3,.3,.3,.3,.3,.3,.3                                 
@@ -187,5 +190,140 @@ hhodo_neg_ped_limit = 1000,1000,1000,1000,1000,1000,1000,1000
                       1000,1000,1000,1000,1000,1000,1000,1000                   
                       1000,1000,1000,1000,1000,1000,1000,1000                   
                       1000,1000,1000,1000,1000,1000,1000,1000                   
-                      1000,1000,1000,1000,1000,1000,1000,1000                   
-                                                                                
+                      1000,1000,1000,1000,1000,1000,1000,1000  
+; new param                 
+hhodo_pos_invadc_offset =   -0.00,   -0.00,   -0.70,   -0.00
+                            -0.00,   -0.00,   -0.31,   -2.63
+                            -0.00,    0.13,   -1.03,   -0.58
+                             1.43,   -0.51,   -0.87,   -0.63
+                             0.60,   -0.75,   -0.66,   -1.54
+                             1.73,   -0.66,   -0.82,   -1.46
+                             0.89,    0.08,   -0.92,   -0.88
+                             2.10,    0.20,   -0.32,   -0.39
+                             0.31,   -0.89,   -1.14,   -2.15
+                            -0.00,   -0.00,   -1.52,   -0.00
+                             0.80,   -0.00,   -0.75,   -0.00
+                            -0.25,   -0.00,   -2.36,   -0.00
+                             0.54,   -0.00,   -0.00,   -0.00
+                             0.47,   -0.00,   -0.00,   -0.00
+                            -0.00,   -0.00,   -0.00,   -0.00
+                            -0.00,   -0.00,   -0.00,   -0.00
+
+hhodo_neg_invadc_offset =   -0.00,   -0.00,   -0.97,   -0.00
+                            -0.00,   -0.00,    0.06,   -2.16
+                            -0.00,   -0.58,   -1.60,   -0.95
+                            -0.09,    0.95,   -0.45,   -0.49
+                            -0.79,   -0.05,    0.21,   -1.82
+                             0.32,   -1.02,   -0.05,   -0.52
+                             0.02,    0.19,    0.90,    3.75
+                            -0.35,    0.35,    0.26,   -1.65
+                            -0.27,   -1.32,    0.33,   -2.44
+                            -1.42,   -0.00,   -1.48,   -0.00
+                             0.14,   -0.00,    0.14,   -0.00
+                             0.24,   -0.00,   -0.06,   -0.00
+                             0.16,   -0.00,   -0.00,   -0.00
+                            -0.83,   -0.00,   -0.00,   -0.00
+                            -0.00,   -0.00,   -0.00,   -0.00
+                            -0.00,   -0.00,   -0.00,   -0.00
+
+hhodo_pos_invadc_linear =   15.00,   15.00,   15.00,   15.00
+                            15.00,   15.00,   15.00,   15.00
+                            15.00,   15.00,   15.00,   15.00
+                            14.56,   15.00,   15.00,   15.00
+                            12.91,   15.00,   15.00,   15.00
+                            12.81,   14.97,   15.00,   15.00
+                            14.29,   15.00,   15.00,   15.00
+                            12.94,   14.21,   14.85,   15.00
+                            13.27,   13.60,   15.00,   15.00
+                            13.44,   15.00,   15.00,   15.00
+                            14.24,   15.00,   15.00,   15.00
+                            13.24,   15.00,   14.33,   15.00
+                            13.20,   15.00,   15.00,   15.00
+                            13.94,   15.00,   15.00,   15.00
+                            15.00,   15.00,   15.00,   15.00
+                            15.00,   15.00,   15.00,   15.00
+
+hhodo_neg_invadc_linear =   15.00,   15.00,   15.00,   15.00
+                            15.00,   15.00,   15.00,   15.00
+                            15.00,   14.56,   15.00,   15.00
+                            14.55,   14.16,   15.00,   15.00
+                            15.00,   15.00,   15.00,   15.00
+                            13.47,   15.00,   15.00,   15.00
+                            15.00,   15.00,   15.00,   15.00
+                            14.69,   14.21,   15.00,   15.00
+                            15.00,   15.00,   15.00,   15.00
+                            14.74,   15.00,   15.00,   15.00
+                            14.66,   15.00,   15.00,   15.00
+                            15.00,   15.00,   15.00,   15.00
+                            13.71,   15.00,   15.00,   15.00
+                            12.33,   15.00,   15.00,   15.00
+                            15.00,   15.00,   15.00,   15.00
+                            15.00,   15.00,   15.00,   15.00
+
+hhodo_pos_invadc_adc=    -0.00,    -0.00,   106.88,    -0.00
+                        -0.00,    -0.00,   109.67,   122.91
+                        -0.00,   102.28,   127.88,   117.82
+                       100.32,    76.55,   109.30,   139.97
+                        72.45,    90.73,   111.62,   121.49
+                        59.46,    83.45,   116.54,   123.92
+                        95.04,    91.79,   125.49,   127.74
+                        62.95,    53.50,   113.46,   106.91
+                        78.26,    49.84,   100.37,   141.06
+                        73.52,    -0.00,   101.78,    -0.00
+                        94.23,    -0.00,   129.39,    -0.00
+                        75.59,    -0.00,    94.17,    -0.00
+                        79.87,    -0.00,    -0.00,    -0.00
+                        63.90,    -0.00,    -0.00,    -0.00
+                        -0.00,    -0.00,    -0.00,    -0.00
+                        -0.00,    -0.00,    -0.00,    -0.00
+
+hhodo_neg_invadc_adc=    -0.00,    -0.00,   128.32,    -0.00
+                        -0.00,    -0.00,   113.16,   159.99
+                        -0.00,    68.41,   116.51,   119.18
+                        73.18,    65.95,   112.50,   122.16
+                        96.71,    91.23,    96.00,   103.37
+                        52.93,    87.48,   103.59,   122.65
+                        72.72,    82.28,   118.40,   140.72
+                        76.58,    68.02,   104.25,   120.16
+                        73.69,    98.85,    91.95,   119.78
+                        72.26,    -0.00,    89.16,    -0.00
+                        70.89,    -0.00,   113.44,    -0.00
+                        72.26,    -0.00,   101.96,    -0.00
+                        76.14,    -0.00,    -0.00,    -0.00
+                        36.51,    -0.00,    -0.00,    -0.00
+                        -0.00,    -0.00,    -0.00,    -0.00
+                        -0.00,    -0.00,    -0.00,    -0.00
+
+hhodo_pos_sigma =  100.00,  100.00,    0.28,  100.00
+                   100.00,  100.00,    0.31,    0.47
+                   100.00,    0.27,    0.33,    0.34
+                     0.26,    0.32,    0.35,    0.44
+                     0.30,    0.30,    0.33,    0.51
+                     0.38,    0.28,    0.22,    0.41
+                     0.25,    0.30,    0.32,    0.46
+                     0.35,    0.30,    0.31,    0.34
+                     0.26,    0.25,    0.24,    0.41
+                     0.27,  100.00,    0.27,  100.00
+                     0.25,  100.00,    0.37,  100.00
+                     0.26,  100.00,    0.24,  100.00
+                     0.34,  100.00,  100.00,  100.00
+                     0.37,  100.00,  100.00,  100.00
+                   100.00,  100.00,  100.00,  100.00
+                   100.00,  100.00,  100.00,  100.00
+
+hhodo_neg_sigma =  100.00,  100.00,    0.32,  100.00
+                   100.00,  100.00,    0.33,    0.52
+                   100.00,    0.31,    0.35,    0.31
+                     0.25,    0.30,    0.34,    0.32
+                     0.28,    0.32,    0.27,    0.56
+                     0.36,    0.33,    0.28,    0.31
+                     0.26,    0.31,    0.37,    0.42
+                     0.32,    0.30,    0.28,    0.33
+                     0.24,    0.28,    0.20,    0.44
+                     0.27,  100.00,    0.24,  100.00
+                     0.24,  100.00,    0.29,  100.00
+                     0.25,  100.00,    0.25,  100.00
+                     0.28,  100.00,  100.00,  100.00
+                     0.33,  100.00,  100.00,  100.00
+                   100.00,  100.00,  100.00,  100.00
+                   100.00,  100.00,  100.00,  100.00
diff --git a/PARAM/HMS/HODO/htofcal.param b/PARAM/HMS/HODO/htofcal.param
new file mode 100644
index 0000000000000000000000000000000000000000..46f40459312706fb19092a1500a152997036f0af
--- /dev/null
+++ b/PARAM/HMS/HODO/htofcal.param
@@ -0,0 +1,2 @@
+hdumptof=1
+hdumptof_filename="CALIBRATION/hodo_calib/hmsfort.37"
diff --git a/PARAM/SHMS/GEN/ptracking.param b/PARAM/SHMS/GEN/ptracking.param
index 899347aaf568341ddd6d34c6b6fa0cc9aee074f5..bb63238c85cc6b99d38c6f11da522afeb15d2cf8 100644
--- a/PARAM/SHMS/GEN/ptracking.param
+++ b/PARAM/SHMS/GEN/ptracking.param
@@ -25,7 +25,7 @@ pntracks_max_fp = 10
 ; focal plane position to link stubs to tracks
   pntracks_max_fp = 10
   pxt_track_criterion = 100.0
-  pyt_track_criterion = 2.0
+  pyt_track_criterion = 20.0
   pxpt_track_criterion = 1.0
   pypt_track_criterion = 1.0
 
@@ -56,8 +56,11 @@ pntracks_max_fp = 10
 
 ; pstat_maxchisq          chisquared limit for tracks used to measure hodo. eff.
   pstat_maxchisq = 10.
+; if both psel_using_scin = 0 and psel_using_prune = 0 then best chi2 track is used.
 ; psel_using_scin         uses scintillator for track selection
-  psel_using_scin = 1
+  psel_using_scin = 0
+; psel_using_prune         using prune
+  psel_using_prune = 0
 ; pstat_slop              distance from center of scin. to count as expecting hit
   pstat_slop = 2.
 ; pstat_mineff            warning level for scin. effic.
diff --git a/PARAM/SHMS/HODO/phodo.param b/PARAM/SHMS/HODO/phodo.param
index 0d0e6ea71c4f1857576d4cfae3b9d0ff444fee35..aaa4ea23e27aeadd3a2f975899bc5eff71706323 100644
--- a/PARAM/SHMS/HODO/phodo.param
+++ b/PARAM/SHMS/HODO/phodo.param
@@ -8,19 +8,19 @@ phodo_adc_mode=1
 ; 
 ; hhodo_tdc_offset is array of time offsets for all paddles in a plane
 ;   to move the tdc to between 0 and 4000 channels.
-  phodo_tdc_offset = 1450, 1550, 1550, 1550
+  phodo_tdc_offset = 1860, 2000, 2060, 2000
 ; pstart_time_center  center of allowed time window                             
    pstart_time_center = 32.                                                     
 ; hstart_time_slop    1/2 width of time window                                  
-   pstart_time_slop = 25.                                                       
+   pstart_time_slop = 100.                                                       
 ; pscin_tdc_min       minimum tdc value in hms scin                             
-    pscin_tdc_min = 0                                                           
+    pscin_tdc_min = -500                                                           
 ; pscin_tdc_max       maximum allowed tdc value                                 
-   pscin_tdc_max = 4000                                                         
+   pscin_tdc_max = 1000                                                        
 ; pscin_tdc_to_time   scin tdc time per channel                                 
    pscin_tdc_to_time = 0.1                                                   
 ; tof and you figured out good values
-   ptof_tolerance = 30.0
+   ptof_tolerance = 100.0
 ;                                                                               
 ; shms_tof_params                                                              
 ; pnum_scin_counters, phodo_zpos, phodo_center_coord, phodo_width               
@@ -32,20 +32,20 @@ phodo_adc_mode=1
 ptofusinginvadc=1
 ;                                                                               
                                                                                 
-phodo_pos_invadc_offset =   0.000,   0.0000,  0.000,   0.000
- 0.000,   0.0000,  0.000,   0.000
- 0.000,   0.0000,  0.000,   0.000
- 0.000,   0.0000,  0.000,   0.000
- 0.000,   0.0000,  0.000,   0.000
- 0.000,   0.0000,  0.000,   0.000
- 0.000,   0.0000,  0.000,   0.000
- 0.000,   0.0000,  0.000,   0.000
- 0.000,   0.0000,  0.000,   0.000
- 0.000,   0.0000,  0.000,   0.000
- 0.000,   0.0000,  0.000,   0.000
- 0.000,   0.0000,  0.000,   0.000
- 0.000,   0.0000,  0.000,   0.000
- 0.000,   0.0000,  0.000,   0.000
+phodo_pos_invadc_offset =   -5.0000,   -5.0000,  0.000,   0.000
+ -5.0000,   -2.0000,  0.000,   0.000
+ -5.0000,   -2.0000,  +10.000,   0.000
+ -5.0000,   -4.0000,  0.000,   0.000
+ -5.0000,   -4.0000,  +10.000,   0.000
+ -5.0000,   -5.0000,  0.000,   0.000
+ -5.0000,   -6.0000,  0.000,   -14.000
+ -5.0000,   -4.0000,  0.000,   -14.000
+ -5.0000,   -5.0000,  0.000,   -14.000
+ -5.0000,   +6.0000,  0.000,   -14.000
+ -5.0000,   0.0000,  0.000,   -14.000
+ -5.0000,   +5.0000,  0.000,   -14.000
+ -5.0000,   -7.0000,  0.000,   -14.000
+ 0.000,   0.0000,  0.000,   -14.000
  0.000,   0.0000,  0.000,   0.000
  0.000,   0.0000,  0.000,   0.000
  0.000,   0.0000,  0.000,   0.000
@@ -56,18 +56,18 @@ phodo_pos_invadc_offset =   0.000,   0.0000,  0.000,   0.000
 ;
 phodo_neg_invadc_offset =   0.000,   0.0000,  0.000,   0.000
  0.000,   0.0000,  0.000,   0.000
+ 0.000,   0.0000,  +10.000,   0.000
  0.000,   0.0000,  0.000,   0.000
+ 0.000,   0.0000,  +10.000,   0.000
  0.000,   0.0000,  0.000,   0.000
- 0.000,   0.0000,  0.000,   0.000
- 0.000,   0.0000,  0.000,   0.000
- 0.000,   0.0000,  0.000,   0.000
- 0.000,   0.0000,  0.000,   0.000
- 0.000,   0.0000,  0.000,   0.000
- 0.000,   0.0000,  0.000,   0.000
- 0.000,   0.0000,  0.000,   0.000
- 0.000,   0.0000,  0.000,   0.000
- 0.000,   0.0000,  0.000,   0.000
- 0.000,   0.0000,  0.000,   0.000
+ 0.000,   0.0000,  0.000,   -14.000
+ 0.000,   0.0000,  0.000,   -14.000
+ 0.000,   0.0000,  0.000,   -14.000
+ 0.000,   +10.0000,  0.000,   -14.000
+ 0.000,   0.0000,  0.000,   -14.000
+ 0.000,   +10.0000,  0.000,   -14.000
+ 0.000,   0.0000,  0.000,   -14.000
+ 0.000,   0.0000,  0.000,  -14.000
  0.000,   0.0000,  0.000,   0.000
  0.000,   0.0000,  0.000,   0.000
  0.000,   0.0000,  0.000,   0.000
@@ -273,3 +273,139 @@ phodo_neg_ped_limit = 1000,1000,1000,1000
                       1000,1000,1000,1000
                       1000,1000,1000,1000                   
                                                                                
+
+phodo_pos_invadc_offset =   -0.00,   -0.00,    0.59,   -0.00
+                            -6.26,   -4.09,    0.45,   -0.00
+                            -2.48,   -1.94,   12.41,   -0.00
+                             1.98,   -2.95,    0.44,   -0.00
+                            -1.71,   -4.57,    9.75,   -0.00
+                            -2.48,   -5.36,    0.15,   -0.00
+                             0.39,   -3.34,    0.75,   -0.00
+                            -7.06,   -3.12,    0.21,   -0.00
+                            -1.75,   -3.79,    1.52,   -0.00
+                            -0.00,    5.02,    1.58,   -0.00
+                            -3.67,   -3.57,    0.80,   -0.00
+                             0.76,   11.15,    2.28,   -0.00
+                            -0.00,   -0.00,    3.28,   -0.00
+                            -0.00,   -0.00,   -0.00,   -0.00
+                            -0.00,   -0.00,   -0.00,   -0.00
+                            -0.00,   -0.00,   -0.00,   -0.00
+
+phodo_neg_invadc_offset =   -0.00,   -0.00,   -5.36,   -0.00
+                            -7.60,   -2.32,   -5.24,   -0.00
+                             0.62,   -3.65,   15.02,   -0.00
+                            -4.07,   -3.42,   -6.21,   -0.00
+                            -2.60,   -3.61,   10.43,   -0.00
+                            -5.70,   -2.98,   -7.00,   -0.00
+                             1.23,   -2.53,   -5.65,   -0.00
+                            -2.39,   -4.13,   -5.78,   -0.00
+                            -1.38,   -3.39,   -7.54,   -0.00
+                            -2.56,    7.05,   -5.93,   -0.00
+                             1.84,   -4.38,   -3.91,   -0.00
+                            -3.23,    9.84,   -3.06,   -0.00
+                            -0.00,   -0.00,   -5.95,   -0.00
+                            -0.00,   -0.00,   -0.00,   -0.00
+                            -0.00,   -0.00,   -0.00,   -0.00
+                            -0.00,   -0.00,   -0.00,   -0.00
+
+phodo_pos_invadc_linear =   15.00,   15.00,   15.00,   15.00
+                            15.00,   15.00,   14.97,   15.00
+                            14.28,   13.33,   15.00,   15.00
+                            15.00,   15.00,   15.00,   15.00
+                            15.00,   15.00,   15.00,   15.00
+                            15.00,   15.00,   15.00,   15.00
+                            15.00,   15.00,   15.00,   15.00
+                            15.00,   15.00,   15.00,   15.00
+                            14.76,   15.00,   15.00,   15.00
+                            15.00,   15.00,   15.00,   15.00
+                            15.00,   15.00,   15.00,   15.00
+                            15.00,   15.00,   15.00,   15.00
+                            15.00,   15.00,   15.00,   15.00
+                            15.00,   15.00,   15.00,   15.00
+                            15.00,   15.00,   15.00,   15.00
+                            15.00,   15.00,   15.00,   15.00
+
+phodo_neg_invadc_linear =   15.00,   15.00,   15.00,   15.00
+                            13.91,   14.43,   15.00,   15.00
+                            14.52,   14.76,   15.00,   15.00
+                            14.68,   14.14,   15.00,   15.00
+                            14.94,   14.70,   15.00,   15.00
+                            14.34,   14.14,   15.00,   15.00
+                            14.82,   13.94,   15.00,   15.00
+                            15.00,   14.33,   15.00,   15.00
+                            14.77,   13.76,   15.00,   15.00
+                            15.00,   14.75,   14.42,   15.00
+                            15.00,   13.69,   13.56,   15.00
+                            13.75,   13.13,   13.73,   15.00
+                            15.00,   15.00,   15.00,   15.00
+                            15.00,   15.00,   15.00,   15.00
+                            15.00,   15.00,   15.00,   15.00
+                            15.00,   15.00,   15.00,   15.00
+
+phodo_pos_invadc_adc=    -0.00,    -0.00,   112.14,    -0.00
+                        85.63,   100.91,    83.19,    -0.00
+                        96.42,    36.41,   116.39,    -0.00
+                       121.38,    90.00,   118.14,    -0.00
+                       114.06,    92.90,   100.01,    -0.00
+                       110.24,    92.14,   103.32,    -0.00
+                       125.76,    84.99,   122.10,    -0.00
+                        92.38,    91.90,   130.47,    -0.00
+                       116.53,    85.91,    98.54,    -0.00
+                       122.36,   111.70,   113.37,    -0.00
+                       104.33,    74.85,    80.05,    -0.00
+                       122.25,   100.68,   145.77,    -0.00
+                        -0.00,    -0.00,   134.86,    -0.00
+                        -0.00,    -0.00,    -0.00,    -0.00
+                        -0.00,    -0.00,    -0.00,    -0.00
+                        -0.00,    -0.00,    -0.00,    -0.00
+
+phodo_neg_invadc_adc=    -0.00,    -0.00,   115.40,    -0.00
+                       100.70,    83.97,   103.44,    -0.00
+                       112.43,    84.04,   158.78,    -0.00
+                       119.43,    89.05,   118.05,    -0.00
+                       101.78,    89.03,   123.62,    -0.00
+                        97.26,    87.19,   108.87,    -0.00
+                       121.57,    78.91,   104.65,    -0.00
+                       110.95,    85.20,   170.10,    -0.00
+                       109.62,    78.24,   104.81,    -0.00
+                       113.38,   111.82,    60.35,    -0.00
+                       126.61,    78.83,    62.49,    -0.00
+                        91.82,    87.61,    62.81,    -0.00
+                        -0.00,    -0.00,   155.93,    -0.00
+                        -0.00,    -0.00,    -0.00,    -0.00
+                        -0.00,    -0.00,    -0.00,    -0.00
+                        -0.00,    -0.00,    -0.00,    -0.00
+
+phodo_pos_sigma =  100.00,  100.00,    0.67,  100.00
+                     0.60,    0.57,    0.84,  100.00
+                     0.49,    0.64,    0.64,  100.00
+                     0.61,    0.50,    0.65,  100.00
+                     0.59,    0.63,    0.82,  100.00
+                     0.72,    0.56,    0.62,  100.00
+                     0.51,    0.52,    0.68,  100.00
+                     0.65,    0.56,    0.92,  100.00
+                     0.69,    0.49,    0.67,  100.00
+                     0.66,    0.60,    1.69,  100.00
+                     0.56,    0.54,    1.72,  100.00
+                     0.57,    0.51,    1.49,  100.00
+                   100.00,  100.00,    2.01,  100.00
+                   100.00,  100.00,  100.00,  100.00
+                   100.00,  100.00,  100.00,  100.00
+                   100.00,  100.00,  100.00,  100.00
+
+phodo_neg_sigma =  100.00,  100.00,    0.58,  100.00
+                     0.66,    0.61,    0.74,  100.00
+                     0.53,    0.61,    0.60,  100.00
+                     0.57,    0.46,    0.91,  100.00
+                     0.55,    0.62,    0.85,  100.00
+                     0.65,    0.51,    0.67,  100.00
+                     0.49,    0.53,    0.62,  100.00
+                     0.64,    0.54,    0.85,  100.00
+                     0.65,    0.54,    0.67,  100.00
+                     0.71,    0.62,    1.27,  100.00
+                     0.75,    0.53,    1.67,  100.00
+                     0.51,    0.57,    1.33,  100.00
+                   100.00,  100.00,    2.07,  100.00
+                   100.00,  100.00,  100.00,  100.00
+                   100.00,  100.00,  100.00,  100.00
+                   100.00,  100.00,  100.00,  100.00
diff --git a/PARAM/SHMS/HODO/phodo.pos b/PARAM/SHMS/HODO/phodo.pos
index 134675c3c5a7eb88974ad7ba6c20c5e12d36154d..fc5d3077c133353fc5c92dcddce349b138b80b52 100644
--- a/PARAM/SHMS/HODO/phodo.pos
+++ b/PARAM/SHMS/HODO/phodo.pos
@@ -2,14 +2,14 @@ phodo_num_planes = 4
 phodo_plane_names = "1x 1y 2x 2y"
       ppathlength_central = 1800
 ; Z positions of hodoscopes
-      pscin_1x_zpos =  (89.14-11.31)
-      pscin_1y_zpos =  (108.83-11.31)
-      pscin_2x_zpos =  (310.13-11.31)
-      pscin_2y_zpos =  (329.82-11.31)
-      pscin_1x_dzpos = 2.12
-      pscin_1y_dzpos = 2.12
-      pscin_2x_dzpos = 2.12
-      pscin_2y_dzpos = 2.12
+      pscin_1x_zpos =  56.3-9.5
+      pscin_1y_zpos =  56.3+9.5
+      pscin_2x_zpos =  276.35-9.5
+      pscin_2y_zpos =  276.35+9.5
+      pscin_1x_dzpos = 1.0
+      pscin_1y_dzpos = 1.0
+      pscin_2x_dzpos = 1.0
+      pscin_2y_dzpos = 1.0
       pscin_1x_size = 8.0
       pscin_1y_size = 8.0
       pscin_2x_size = 8.0
@@ -44,19 +44,19 @@ phodo_plane_names = "1x 1y 2x 2y"
       pscin_1y_top   = -50
       pscin_1y_bot   =  50
       pscin_1y_offset=  0.0
-      pscin_1y_center= -42.
-                       -35.
-                       -28.
-                       -21.
-                       -14.
-                       -7.
+      pscin_1y_center= +42.
+                       +35.
+                       +28.
+                       +21.
+                       +14.
+                       +7.
                         0.0
-                        7.
-                        14.
-                        21.
-                        28.
-                        35.
-                        42. 
+                        -7.
+                        -14.
+                        -21.
+                        -28.
+                        -35.
+                        -42. 
       pscin_2x_left  =  55.
       pscin_2x_right =  -55.
       pscin_2x_offset=  0.0
diff --git a/PARAM/SHMS/HODO/ptofcal.param b/PARAM/SHMS/HODO/ptofcal.param
new file mode 100644
index 0000000000000000000000000000000000000000..70d469af77a4f6c151681b0b84faaebbc3ab8439
--- /dev/null
+++ b/PARAM/SHMS/HODO/ptofcal.param
@@ -0,0 +1,2 @@
+pdumptof=1
+pdumptof_filename="CALIBRATION/hodo_calib/shmsfort.37"
diff --git a/SCRIPTS/HMS/replay_hms_report.C b/SCRIPTS/HMS/replay_hms_report.C
index 77978a14f8407b6cf07c2cd7fd9a9942b0f74d2b..249057d5bb21d8764a114dc25782ada33e9f9f30 100644
--- a/SCRIPTS/HMS/replay_hms_report.C
+++ b/SCRIPTS/HMS/replay_hms_report.C
@@ -31,6 +31,8 @@ void replay_hms_report(Int_t RunNumber=0, Int_t MaxEvent=0) {
 
   // Load params for HMS trigger configuration
   gHcParms->Load("PARAM/TRIG/thms.param");
+  // Load params for HODO tof calibration. 
+  // gHcParms->Load("PARAM/HMS/HODO/htofcal.param");
 
   // Load the Hall C style detector map
   gHcDetectorMap = new THcDetectorMap();
@@ -110,10 +112,10 @@ void replay_hms_report(Int_t RunNumber=0, Int_t MaxEvent=0) {
  analyzer->SetCutFile("DEF-files/HMS/GEN/hstackana_report_cuts.def");    // optional
 
  // File to record cuts accounting information
- // analyzer->SetSummaryFile(Form("REPORT_OUTPUT/summary_%05d.report", RunNumber));    // optional
+  analyzer->SetSummaryFile(Form("REPORT_OUTPUT/HMS/summary_%05d.report", RunNumber));    // optional
 
   // Start the actual analysis.
   analyzer->Process(run);
   // Create report file from template.
-  analyzer->PrintReport("TEMPLATES/hstackana.template",Form("REPORT_OUTPUT/replay_hms_%05d.report", RunNumber));
+  analyzer->PrintReport("TEMPLATES/hstackana.template",Form("REPORT_OUTPUT/HMS/replay_hms_%05d.report", RunNumber));
 }
diff --git a/SCRIPTS/SHMS/replay_shms_report.C b/SCRIPTS/SHMS/replay_shms_report.C
new file mode 100644
index 0000000000000000000000000000000000000000..42549df65af43bcc39b1871d53a63ca45880679c
--- /dev/null
+++ b/SCRIPTS/SHMS/replay_shms_report.C
@@ -0,0 +1,124 @@
+void replay_shms_report(Int_t RunNumber=0, Int_t MaxEvent=0) {
+
+  // Get RunNumber and MaxEvent if not provided.
+  if(RunNumber == 0) {
+    cout << "Enter a Run Number (-1 to exit): ";
+    cin >> RunNumber;
+    if( RunNumber<=0 ) return;
+  }
+  if(MaxEvent == 0) {
+    cout << "\nNumber of Events to analyze: ";
+    cin >> MaxEvent;
+    if(MaxEvent == 0) {
+      cerr << "...Invalid entry\n";
+      exit;
+    }
+  }
+
+  // Create file name patterns.
+  const char* RunFileNamePattern = "raw/shms_all_%05d.dat";
+  const char* ROOTFileNamePattern = "ROOTfiles/shms_replay_%d.root";
+  // Add variables to global list.
+  gHcParms->Define("gen_run_number", "Run Number", RunNumber);
+  gHcParms->AddString("g_ctp_database_filename", "DBASE/standard.database");
+
+  // Load varibles from files to global list.
+  gHcParms->Load(gHcParms->GetString("g_ctp_database_filename"), RunNumber);
+
+  // g_ctp_parm_filename and g_decode_map_filename should now be defined.
+  gHcParms->Load(gHcParms->GetString("g_ctp_kinematics_filename"), RunNumber);
+  gHcParms->Load(gHcParms->GetString("g_ctp_parm_filename"));
+
+  // Load params for SHMS trigger configuration
+  gHcParms->Load("PARAM/TRIG/tshms.param");
+
+  // Load params for HODO tof calibration. 
+  //gHcParms->Load("PARAM/SHMS/HODO/ptofcal.param");
+
+ 
+  // Load the Hall C style detector map
+  gHcDetectorMap = new THcDetectorMap();
+  gHcDetectorMap->Load("MAPS/SHMS/DETEC/shms_stack.map");
+
+  // Add trigger apparatus
+  THaApparatus* TRG = new THcTrigApp("T", "TRG");
+  gHaApps->Add(TRG);
+  // Add trigger detector to trigger apparatus
+  THcTrigDet* shms = new THcTrigDet("shms", "SHMS Trigger Information");
+  TRG->AddDetector(shms);
+
+  // Set up the equipment to be analyzed.
+  THaApparatus* SHMS = new THcHallCSpectrometer("P", "SHMS");
+  gHaApps->Add(SHMS);
+  // Add Noble Gas Cherenkov to SHMS apparatus
+  THcCherenkov* ngcer = new THcCherenkov("ngcer", "Noble Gas Cherenkov");
+  SHMS->AddDetector(ngcer);
+  // Add drift chambers to SHMS apparatus
+  THcDC* dc = new THcDC("dc", "Drift Chambers");
+  SHMS->AddDetector(dc);
+  // Add hodoscope to SHMS apparatus
+  THcHodoscope* hod = new THcHodoscope("hod", "Hodoscope");
+  SHMS->AddDetector(hod);
+  // Add Heavy Gas Cherenkov to SHMS apparatus
+  THcCherenkov* hgcer = new THcCherenkov("hgcer", "Heavy Gas Cherenkov");
+  SHMS->AddDetector(hgcer);
+  // Add Heavy Gas Cherenkov to SHMS apparatus
+  THcAerogel* aero = new THcAerogel("aero", "Aerogel");
+  SHMS->AddDetector(aero);
+  // Add calorimeter to SHMS apparatus
+  THcShower* cal = new THcShower("cal", "Calorimeter");
+  SHMS->AddDetector(cal);
+
+  // Include golden track information
+  THaGoldenTrack* gtr = new THaGoldenTrack("P.gtr", "SHMS Golden Track", "P");
+  gHaPhysics->Add(gtr);
+
+  // Add handler for prestart event 125.
+  THcConfigEvtHandler* ev125 = new THcConfigEvtHandler("HC", "Config Event type 125");
+  gHaEvtHandlers->Add(ev125);
+
+  // Set up the analyzer - we use the standard one,
+  // but this could be an experiment-specific one as well.
+  // The Analyzer controls the reading of the data, executes
+  // tests/cuts, loops over Acpparatus's and PhysicsModules,
+  // and executes the output routines.
+  THcAnalyzer* analyzer = new THcAnalyzer;
+
+  // A simple event class to be output to the resulting tree.
+  // Creating your own descendant of THaEvent is one way of
+  // defining and controlling the output.
+  THaEvent* event = new THaEvent;
+
+  // Define the run(s) that we want to analyze.
+  // We just set up one, but this could be many.
+  char RunFileName[100];
+  sprintf(RunFileName, RunFileNamePattern, RunNumber);
+  THaRun* run = new THaRun(RunFileName);
+
+  // Eventually need to learn to skip over, or properly analyze
+  // the pedestal events
+  run->SetEventRange(1, MaxEvent);    // Physics Event number, does not
+                                      // include scaler or control events.
+  run->SetNscan(1);
+  run->SetDataRequired(0x7);
+  run->Print();
+
+  // Define the analysis parameters
+  TString ROOTFileName = Form(ROOTFileNamePattern, RunNumber);
+  analyzer->SetCountMode(2);    // 0 = counter is # of physics triggers
+                                // 1 = counter is # of all decode reads
+                                // 2 = counter is event number
+  analyzer->SetEvent(event);
+  analyzer->SetCrateMapFileName("MAPS/db_cratemap.dat");
+  analyzer->SetOutFile(ROOTFileName.Data());
+  analyzer->SetOdefFile("DEF-files/SHMS/GEN/pstackana_report.def");
+  analyzer->SetCutFile("DEF-files/SHMS/GEN/pstackana_report_cuts.def");    // optional
+
+  // File to record cuts accounting information
+  analyzer->SetSummaryFile(Form("REPORT_OUTPUT/SHMS/summary_%05d.report", RunNumber));    // optional
+
+  // Start the actual analysis.
+  analyzer->Process(run);
+  // Create report file from template.
+  analyzer->PrintReport("TEMPLATES/pstackana.template",Form("REPORT_OUTPUT/SHMS/replay_shms_%05d.report", RunNumber));
+}
diff --git a/TEMPLATES/hstackana.template b/TEMPLATES/hstackana.template
index 06dab00276441e9ddaa256ad7d88dff9e32bb94c..0bffaf193231e918c3d4dd6ed3022a909cfc4265 100644
--- a/TEMPLATES/hstackana.template
+++ b/TEMPLATES/hstackana.template
@@ -16,21 +16,21 @@ hmsDC2Planes_large  Counts:	  {hmsDC2Planes_large.npassed}  /all_trigs : {hmsDC2
 hmsDC1Planes6     Counts: {hmsDC1Planes6hits.npassed} /all_trigs : {hmsDC1Planes6hits.npassed/all_trigs.npassed}
 hmsDC2Planes6  	  Counts: {hmsDC2Planes6hits.npassed} /all_trigs : {hmsDC2Planes6hits.npassed/all_trigs.npassed}  
 
-	       	                      	       
-hmsDC1x1Planes5	  Counts: {hmsDC1_5hits_x1.npassed} /hmsDC1Planes6 : {hmsDC1Planes6hits.npassed/hmsDC1_5hits_x1.npassed}
-hmsDC1y1Planes5	  Counts: {hmsDC1_5hits_y1.npassed} /hmsDC1Planes6 : {hmsDC1Planes6hits.npassed/hmsDC1_5hits_y1.npassed}
-hmsDC1u1Planes5	  Counts: {hmsDC1_5hits_u1.npassed} /hmsDC1Planes6 : {hmsDC1Planes6hits.npassed/hmsDC1_5hits_u1.npassed}
-hmsDC1v1Planes5	  Counts: {hmsDC1_5hits_v1.npassed} /hmsDC1Planes6 : {hmsDC1Planes6hits.npassed/hmsDC1_5hits_v1.npassed}
-hmsDC1x2Planes5	  Counts: {hmsDC1_5hits_y2.npassed} /hmsDC1Planes6 : {hmsDC1Planes6hits.npassed/hmsDC1_5hits_y2.npassed} 
-hmsDC1y2Planes5	  Counts: {hmsDC1_5hits_x2.npassed} /hmsDC1Planes6 : {hmsDC1Planes6hits.npassed/hmsDC1_5hits_x2.npassed}
+hmsDC1x1Planes5	  Counts: {hmsDC1_5hits_x1.npassed} eff : {hmsDC1_6hits_x1.npassed/hmsDC1_5hits_x1.npassed}
+hmsDC1u1Planes5	  Counts: {hmsDC1_5hits_u1.npassed} eff : {hmsDC1_6hits_u1.npassed/hmsDC1_5hits_u1.npassed}
+hmsDC1y2Planes5	  Counts: {hmsDC1_5hits_y2.npassed} eff : {hmsDC1_6hits_y2.npassed/hmsDC1_5hits_y2.npassed}
+hmsDC1v1Planes5	  Counts: {hmsDC1_5hits_v1.npassed} eff : {hmsDC1_6hits_v1.npassed/hmsDC1_5hits_v1.npassed}
+hmsDC1y1Planes5	  Counts: {hmsDC1_5hits_y1.npassed} eff : {hmsDC1_6hits_y1.npassed/hmsDC1_5hits_y1.npassed}
+hmsDC1x2Planes5	  Counts: {hmsDC1_5hits_x2.npassed} eff : {hmsDC1_6hits_x2.npassed/hmsDC1_5hits_x2.npassed}
 
 
-hmsDC2x1Planes5	  Counts: {hmsDC2_5hits_x1.npassed}  /hmsDC1Planes6 : {hmsDC2Planes6hits.npassed/hmsDC2_5hits_x1.npassed}
-hmsDC2y1Planes5	  Counts: {hmsDC2_5hits_y1.npassed} /hmsDC1Planes6 : {hmsDC2Planes6hits.npassed/hmsDC2_5hits_y1.npassed}
-hmsDC2u1Planes5	  Counts: {hmsDC2_5hits_u1.npassed} /hmsDC1Planes6 : {hmsDC2Planes6hits.npassed/hmsDC2_5hits_u1.npassed}
-hmsDC2v1Planes5	  Counts: {hmsDC2_5hits_v1.npassed} /hmsDC1Planes6 : {hmsDC2Planes6hits.npassed/hmsDC2_5hits_v1.npassed}
-hmsDC2x2Planes5	  Counts: {hmsDC2_5hits_y2.npassed} /hmsDC1Planes6 : {hmsDC2Planes6hits.npassed/hmsDC2_5hits_y2.npassed} 
-hmsDC2y2Planes5	  Counts: {hmsDC2_5hits_x2.npassed} /hmsDC1Planes6 : {hmsDC2Planes6hits.npassed/hmsDC2_5hits_x2.npassed}
+hmsDC2x1Planes5	  Counts: {hmsDC2_5hits_x1.npassed} eff : {hmsDC2_6hits_x1.npassed/hmsDC2_5hits_x1.npassed}
+hmsDC2u1Planes5	  Counts: {hmsDC2_5hits_u1.npassed} eff : {hmsDC2_6hits_u1.npassed/hmsDC2_5hits_u1.npassed}
+hmsDC2y2Planes5	  Counts: {hmsDC2_5hits_y2.npassed} eff : {hmsDC2_6hits_y2.npassed/hmsDC2_5hits_y2.npassed}
+hmsDC2v1Planes5	  Counts: {hmsDC2_5hits_v1.npassed} eff : {hmsDC2_6hits_v1.npassed/hmsDC2_5hits_v1.npassed}
+hmsDC2y1Planes5	  Counts: {hmsDC2_5hits_y1.npassed} eff : {hmsDC2_6hits_y1.npassed/hmsDC2_5hits_y1.npassed}
+hmsDC2x2Planes5	  Counts: {hmsDC2_5hits_x2.npassed} eff : {hmsDC2_6hits_x2.npassed/hmsDC2_5hits_x2.npassed}
+	       	                      	       
 	       	   	       
 
 *****************************
diff --git a/TEMPLATES/pstackana.template b/TEMPLATES/pstackana.template
new file mode 100644
index 0000000000000000000000000000000000000000..e1ce7848f3b03301aabc69293bc725454900147d
--- /dev/null
+++ b/TEMPLATES/pstackana.template
@@ -0,0 +1,64 @@
+Run #{gen_run_number}
+           Standalone drift chamber analysis report template
+The names of the HMS drift chamber planes are: 
+{pdc_plane_names}
+Horizontal drift chamber z positions:
+Chamber 1: {pdc_zpos[0]:%6.2f} {pdc_zpos[1]:%6.2f} {pdc_zpos[2]:%6.2f} 
+           {pdc_zpos[3]:%6.2f} {pdc_zpos[4]:%6.2f} {pdc_zpos[5]:%6.2f} 
+Chamber 2: {pdc_zpos[6]:%6.2f} {pdc_zpos[7]:%6.2f} {pdc_zpos[8]:%6.2f} 
+           {pdc_zpos[9]:%6.2f} {pdc_zpos[10]:%6.2f} {pdc_zpos[11]:%6.2f}
+
+All triggers:  {all_trigs.npassed}
+ 
+shmsDC1Planes_large  Counts:  {shmsDC1Planes_large.npassed} /all_trigs : {shmsDC1Planes_large.npassed/all_trigs.npassed}
+shmsDC2Planes_large  Counts:	  {shmsDC2Planes_large.npassed}  /all_trigs : {shmsDC2Planes_large.npassed/all_trigs.npassed}  
+
+shmsDC1Planes6     Counts: {shmsDC1Planes6hits.npassed} /all_trigs : {shmsDC1Planes6hits.npassed/all_trigs.npassed}
+shmsDC2Planes6  	  Counts: {shmsDC2Planes6hits.npassed} /all_trigs : {shmsDC2Planes6hits.npassed/all_trigs.npassed}  
+
+	       	                      	       
+shmsDC1x1Planes5	  Counts: {shmsDC1_5hits_x1.npassed} eff : {shmsDC1_6hits_x1.npassed/shmsDC1_5hits_x1.npassed}
+shmsDC1u1Planes5	  Counts: {shmsDC1_5hits_u1.npassed} eff : {shmsDC1_6hits_u1.npassed/shmsDC1_5hits_u1.npassed}
+shmsDC1u2Planes5	  Counts: {shmsDC1_5hits_u2.npassed} eff : {shmsDC1_6hits_u2.npassed/shmsDC1_5hits_u2.npassed}
+shmsDC1v1Planes5	  Counts: {shmsDC1_5hits_v1.npassed} eff : {shmsDC1_6hits_v1.npassed/shmsDC1_5hits_v1.npassed}
+shmsDC1v2Planes5	  Counts: {shmsDC1_5hits_v2.npassed} eff : {shmsDC1_6hits_v2.npassed/shmsDC1_5hits_v2.npassed}
+shmsDC1x2Planes5	  Counts: {shmsDC1_5hits_x2.npassed} eff : {shmsDC1_6hits_x2.npassed/shmsDC1_5hits_x2.npassed}
+
+
+shmsDC2x1Planes5	  Counts: {shmsDC2_5hits_x1.npassed} eff : {shmsDC2_6hits_x1.npassed/shmsDC2_5hits_x1.npassed}
+shmsDC2u1Planes5	  Counts: {shmsDC2_5hits_u1.npassed} eff : {shmsDC2_6hits_u1.npassed/shmsDC2_5hits_u1.npassed}
+shmsDC2u2Planes5	  Counts: {shmsDC2_5hits_u2.npassed} eff : {shmsDC2_6hits_u2.npassed/shmsDC2_5hits_u2.npassed}
+shmsDC2v1Planes5	  Counts: {shmsDC2_5hits_v1.npassed} eff : {shmsDC2_6hits_v1.npassed/shmsDC2_5hits_v1.npassed}
+shmsDC2v2Planes5	  Counts: {shmsDC2_5hits_v2.npassed} eff : {shmsDC2_6hits_v2.npassed/shmsDC2_5hits_v2.npassed}
+shmsDC2x2Planes5	  Counts: {shmsDC2_5hits_x2.npassed} eff : {shmsDC2_6hits_x2.npassed/shmsDC2_5hits_x2.npassed}
+	       	   	       
+
+*****************************
+*shms TRACKING EFFICIENCIES *
+*****************************
+htrig                          :   {shmscoin_event.npassed}
+hhitslt = passed hits/cham     :   {shmsHitsLt.npassed}
+hhitsplanes = +planes >= 5/6   :   {shmsHitsPlanes.npassed}
+hhitsplanessps = + sps         :   {hSpacePoints.npassed}
+hhitsplanesspsstubs +stub      :   {hSpacePointsStub.npassed}
+hsfoundtrack                   :   {hFoundTrack.npassed}
+hscleantrack                   :   {hCleanTrack.npassed}
+hstublt = passed stub tests    :   {hStubLT.npassed}
+h1hitslt                       :   {shms1HitsLt.npassed}
+h2hitslt                       :   {shms2HitsLt.npassed}
+h1planesgt                     :   {shmsDC1PlanesGT.npassed}
+h2planesgt                     :   {shmsDC2PlanesGT.npassed}
+hplanesgt = gt 5 planes/cham   :   {shmsPlanesGT.npassed}
+f1hspacepoints                 :   {f1HSpacePoints.npassed}
+f2hspacepoints                 :   {f2HSpacePoints.npassed}
+htest1=p hits/planes, f sp     :   {hTest1.npassed}
+htest2=p sp, f stubs           :   {hTest2.npassed}
+hdid                           :   {shmsScinDid.npassed}
+hdide                          :   {shmsScinDide.npassed}
+hdidh                          :   {shmsScinDidh.npassed}
+hscinshould                    :   {shmsScinShould.npassed}
+hscinshoulde                   :   {shmsScinShoulde.npassed}
+hscinshouldh                   :   {shmsScinShouldh.npassed}
+SING FID TRACK EFFIC           : {shmsScinDid.npassed/(shmsScinShould.npassed+0.0001):%8.4f} +- {(sqrt(shmsScinShould.npassed-shmsScinDid.npassed)/(shmsScinShould.npassed+.0001)):%8.4f}
+E SING FID TRACK EFFIC         : {shmsScinDide.npassed/(shmsScinShoulde.npassed+0.0001):%8.4f} +- {(sqrt(shmsScinShoulde.npassed-shmsScinDide.npassed)/(shmsScinShoulde.npassed+.0001)):%8.4f}
+HADRON SING FID TRACK EFFIC    : {shmsScinDidh.npassed/(shmsScinShouldh.npassed+0.0001):%8.4f} +- {(sqrt(shmsScinShouldh.npassed-shmsScinDidh.npassed)/(shmsScinShouldh.npassed+.0001)):%8.4f}