Module Windex_mod

module Windex_mod

        ! Uses
    use Precision_mod
    use Namelist_mod
    use Chambers_mod
    use Det_Geom_mod
    use Tdc_mod
    use Unp_mod
    use Hists_mod
    use Pattern_mod
    use Cluster_mod
    use Pattern_Log_mod
    use Xtalk_mod, ONLY: DC_IsXtalk, PC_IsXtalk
    use windowstat_mod

        ! Subroutines and functions
    public subroutine GetTriggerInfo ()
    public subroutine GetScintHits ()
    public subroutine DoClustering ()
    public subroutine DoClusteringWin (i)
    public subroutine AllEventWindowTypes ()
    private subroutine AEWT_MoreMuThanEManyPidPC ()
    private function AEWT_MMTEMPP_NotFastDecay (iwindow)
    private function AEWT_MMTEMPP_NFDK_Upstream (iwindow)
    private function AEWT_MMTEMPP_NFDK_Downstream (iwindow)
    private subroutine AEWT_MoreMuThanEOnePidPC ()
    private subroutine AEWT_MoreEThanMu ()
    public subroutine FillWindowBJhistos ()
    private subroutine BookWindowBJhistos ()

end module Windex_mod
==============================================================================
 Name: windex_mod
------------------------------------------------------------------------------
 Description:

 Final step in windowing and classification --
 change window classifications based on whole event
 information, and creates histograms by window. These subroutines
 have been pulled out of windowbj_mod, since I 
 wanted to shorten windowbj_mod so that it would
 compile more reliably without making the compiler
 core dump. ( I suspect it doesn't like such long
 pieces of code).

==============================================================================

Author: Blair Jamieson (!! is for inclusion of comments in f90doc)

Version: Jul.2003


Description of Subroutines and Functions

GetTriggerInfo

public subroutine GetTriggerInfo ()
end subroutine GetTriggerInfo
 SUBROUTINE GetTriggerInfo
------------------------------------------------------------------
 Author: Blair
 Date: Jan. 2003
 Description:
 This subroutine gets the capacitive probe time and stores it in
 cptime.  It also gets the M scintillator 1+2 width and puts it in
 the variable m12width.

GetScintHits

public subroutine GetScintHits ()
end subroutine GetScintHits

DoClustering

public subroutine DoClustering ()
    ! Calls: ClusterStat, Clustering
end subroutine DoClustering
 SUBROUTINE DoClustering
------------------------------------------------------------------
 Author: Blair
 Date: Jan. 2003
 Description:
 This subroutine calls clustering for each window and
 plane.  

 Modifications
--------------
 Mar. 2003 - ABJ:
 Don't call clustering for the odd window before
 a beam positron and decay overlap window... that was
 already done to try to extract the beam positron

DoClusteringWin

public subroutine DoClusteringWin (i)
    integer (kind=i4) :: i
    ! Calls: Clustering
end subroutine DoClusteringWin
 SUBROUTINE DoClusteringWin
------------------------------------------------------------------
 Author: Blair
 Date: Mar. 2003
 Description:
 This subroutine calls clustering for each 
 plane in window i.
  

AllEventWindowTypes

public subroutine AllEventWindowTypes ()
    ! Calls: AEWT_MoreEThanMu, AEWT_MoreMuThanEManyPidPC, AEWT_MoreMuThanEOnePidPC
end subroutine AllEventWindowTypes
 Subroutine AllEventWindowTypes
------------------------------------------------------------------
 Author: Blair
 Date: Feb. 2003
 Description:
 Check overall event to see if any of the windows could have been
 misidentified.
  

AEWT_MoreMuThanEManyPidPC

private subroutine AEWT_MoreMuThanEManyPidPC ()
end subroutine AEWT_MoreMuThanEManyPidPC
 Subroutine AEWT_MoreMuThanEManyPidPC
------------------------------------------------------------------
 Author: Anthony
 Date: Mar. 2008
 Description:
 See if any of the windows were identified as
 muon and beam positron overlaps.
  

AEWT_MMTEMPP_NotFastDecay

private function AEWT_MMTEMPP_NotFastDecay (iwindow)
    integer (kind=i4), intent(in) :: iwindow
    logical :: AEWT_MMTEMPP_NotFastDecay
end function AEWT_MMTEMPP_NotFastDecay
 Subroutine AEWT_MMTEMPP_NotFastDecay
------------------------------------------------------------------
 Author: Anthony
 Date: Mar. 2008
 Description:
 centre of circle moved, change in hits per plane,
 and slight difference in spread in hits between
 upstream and downstream... lets call this an overlap
 of beam positron and decay
  

AEWT_MMTEMPP_NFDK_Upstream

private function AEWT_MMTEMPP_NFDK_Upstream (iwindow)
    integer (kind=i4), intent(in) :: iwindow
    logical :: AEWT_MMTEMPP_NFDK_Upstream
end function AEWT_MMTEMPP_NFDK_Upstream
 Subroutine AEWT_MMTEMPP_NFDK_Upstream
------------------------------------------------------------------
 Author: Anthony
 Date: Mar. 2008
 Description:
 This event is apparently not a fast decay.
 It has more hits upstream so upstream decay is assumed.
 Now check if it is a delta or a scatter.
  

AEWT_MMTEMPP_NFDK_Downstream

private function AEWT_MMTEMPP_NFDK_Downstream (iwindow)
    integer (kind=i4), intent(in) :: iwindow
    logical :: AEWT_MMTEMPP_NFDK_Downstream
end function AEWT_MMTEMPP_NFDK_Downstream
 Subroutine AEWT_MMTEMPP_NFDK_Downstream
------------------------------------------------------------------
 Author: Anthony
 Date: Mar. 2008
 Description:
 This event is apparently not a fast decay.
 It has more hits downstream so downstream decay is assumed.
 Now check if it is a delta or a scatter.
  

AEWT_MoreMuThanEOnePidPC

private subroutine AEWT_MoreMuThanEOnePidPC ()
end subroutine AEWT_MoreMuThanEOnePidPC
 Subroutine AEWT_MoreMuThanEOnePidPC
------------------------------------------------------------------
 Author: Anthony
 Date: Mar. 2008
 Description:
 See if this could be a fast decay upstream
 Characteristics:
   1) could have larger radius than usual muon (poor indicator)
   2) has hits with width < 150 ns (poor indicator)
   3) could have larger tsig due to multiple tracks (ok indicator)
   4) hitspp > 1.75 (ok indicator)
 use just conditions 2,3,4
  

AEWT_MoreEThanMu

private subroutine AEWT_MoreEThanMu ()
end subroutine AEWT_MoreEThanMu
 Subroutine AEWT_MoreEThanMu
------------------------------------------------------------------
 Author: Anthony
 Date: Mar. 2008
 Description:
  

FillWindowBJhistos

public subroutine FillWindowBJhistos ()
    ! Calls: BookWindowBJhistos, HF1, HF2, fillskimN, hf2
end subroutine FillWindowBJhistos

BookWindowBJhistos

private subroutine BookWindowBJhistos ()
    ! Calls: HBOOK1, HBOOK2
end subroutine BookWindowBJhistos