Module pact_mod

module pact_mod

        ! Uses
    use precision_mod
    use det_geom_mod
    use chambers_mod
    use tdc_mod
    use unp_mod
    use filters_mod
    use namelist_mod
    use hists_mod
    use calibrations_mod
    use pattern_mod
    use trackrange_mod
    use unpmc_mod

        ! Types
    public type pact_type
    private type pact_tests

        ! Variables
    integer (kind=i4), private :: DCsum
    integer (kind=i4), private :: PCsum
    real (kind=r4), private :: SCsum
    type (pact_tests), private, DIMENSION(FirstPCADC:LastPCADC,48) :: pact_hits
    type (pact_type), public, DIMENSION(FirstPCADC:LastPCADC) :: pact
    logical, private :: Z1SS
    logical, private :: Z1SM
    logical, private :: Z1MS
    logical, private :: Z1MM
    logical, private :: Z2SS
    logical, private :: Z2SM
    logical, private :: Z2MS
    logical, private :: Z2MM
    logical, private :: Z3SS
    logical, private :: Z3SM
    logical, private :: Z3MS
    logical, private :: Z3MM

        ! Subroutines and functions
    public subroutine PACTanalysis (Anal_Fail)
    private function TDChit (iPlane, iWire, iWindow)
    public subroutine PACTrawHists ()
    public subroutine PACThists ()

end module pact_mod
 =================================================================
  Marc Lalancette, July 2002
  Revamped March 2003, DRG to use more modern windowing etc.
  Revamped again Jan. 06 to analyse MC study data.
  Revised/created June 06 to analyse incomimg psPact data
  ----------------------------------------------------------------
  This module contains PACT calculations and histograms
  Note that finding a stop in PC6 finds very few events that fit
    all the cuts.  It is sensitive to a few namelist variables:
  * Time zero needs to be adjusted (roughly) with triggertime;
  * dc_mintdc_cut and pc_mintdc_cut should be adjusted so window 2
     is the trigger window (-400. works ok);
  * Everything except windowing can be turned off.
 =================================================================
 Analysis failure code histo 19099
  1 - e_lost < EnergyCut(kcm = 100.0).
  2 - no matching TDC hit on this wire.
  3 - tdc hit is after the end of pact time.
  4 - tdc hit is probably noise/xtalk.
  5 - all tdc hits before pact gate time.
  6 - PACT hits not adjacent.
  7 - Not adjacent hit had higher energy.
  8 - Not adjacent hit had e_lost < EnergyCut.
  9 - Not adjacent hit had less energy than accumulated so far.
 10 - More than PactClusterMax=10 PACT hits on this plane.

 ======================
 PC6 stop failure code - histo 19107(PC6)
  1 - Window(mu)%t0 > 100.0
  2 - No Pact 5 hit found
  3 - No Pact 6 hit found
  4 - PC hits in Window(3)
  5 - > 3 DC hits in Window(3)
  6 - TRmaxR(mu) > 3.5
  7 - TRmaxZ(mu) < -0.4 - Didn't make it to PC6
  8 - TRmaxZ(mu) > 0.0 - Went beyond PC6
  9 - TRminZ(e+) > 0.0 - e+ did not begin in PC6
 10 - TRminZ(e+) < -0.4 - e+ came from upstream of PC6
 11 - Had e+ hit on PC6 outside 3 nearest neighbors (either side).
 12 - no e+ hit in PC6
 
 =================================================================

Description of Types

pact_type

public type pact_type
    logical :: Found
    logical :: TooMany
    real (kind=r4) :: Energy
    real (kind=r4) :: EnergyPlus
    logical :: Multiple
    integer (kind=i4), dimension (48) :: Wire
    integer (kind=i4) :: Cluster_center
    integer (kind=i4) :: nfound
end type pact_type

pact_tests

private type pact_tests
    logical :: NotFound
    logical :: NoTDCMatch
end type pact_tests

Description of Variables

DCsum

integer (kind=i4), private :: DCsum

PCsum

integer (kind=i4), private :: PCsum

SCsum

real (kind=r4), private :: SCsum

pact_hits

type (pact_tests), private, DIMENSION(FirstPCADC:LastPCADC,48) :: pact_hits

pact

type (pact_type), public, DIMENSION(FirstPCADC:LastPCADC) :: pact

Z1SS

logical, private :: Z1SS

Z1SM

logical, private :: Z1SM

Z1MS

logical, private :: Z1MS

Z1MM

logical, private :: Z1MM

Z2SS

logical, private :: Z2SS

Z2SM

logical, private :: Z2SM

Z2MS

logical, private :: Z2MS

Z2MM

logical, private :: Z2MM

Z3SS

logical, private :: Z3SS

Z3SM

logical, private :: Z3SM

Z3MS

logical, private :: Z3MS

Z3MM

logical, private :: Z3MM

Description of Subroutines and Functions

PACTanalysis

public subroutine PACTanalysis (Anal_Fail)
    logical :: Anal_Fail
    ! Calls: hff1, hff2
end subroutine PACTanalysis

TDChit

private function TDChit (iPlane, iWire, iWindow)
    integer (kind=i4), INTENT(IN) :: iPlane
    integer (kind=i4), INTENT(IN) :: iWire
    integer (kind=i4), INTENT(IN) :: iWindow
    integer (kind=i4) :: TDChit
    ! Calls: hff1
end function TDChit

PACTrawHists

public subroutine PACTrawHists ()
    ! Calls: HF1, hff1, hff2
end subroutine PACTrawHists

PACThists

public subroutine PACThists ()
    ! Calls: hf2, hff1, hff2
end subroutine PACThists