Module kalman_mod

module kalman_mod

        ! Uses
    use precision_mod
    use physicalconstants_mod
    use det_geom_mod
    use chambers_mod
    use filters_mod
    use tdc_mod
    use unp_mod
    use matrix_mod
    use hists_mod
    use namelist_mod
    use hitpos_struct_mod
    use hitpos_mod
    use pattern_mod
    use leftright_mod
    use timezero_mod
    use Calibrations_mod, ONLY: BField

        ! Types
    public type KalHit_type
    private type perm_type

        ! Variables
    type (KalHit_type), public, TARGET, dimension (DCMaxAllowedHits) :: KalHit
    real (kind=r4), private, DIMENSION(5,5) :: As
    real (kind=r4), private, DIMENSION(2,1) :: rp
    real (kind=r4), private, DIMENSION(2,1) :: rf
    real (kind=r4), private, DIMENSION(2,1) :: rs
    real (kind=r4), private, DIMENSION(5,2) :: Kf
    real (kind=r4), private, DIMENSION(2,2) :: RCOVs
    real (kind=r4), private :: Chi2sTot
    logical, public :: KalFail
    integer (kind=i4), private :: IterateCluster = 0
    integer (kind=i4), private :: IterateTime = 0
    type (KalHit_type), private, POINTER :: hitP
    type (KalHit_type), private, POINTER :: nextP
    real (kind=r4), private :: Suz
    real (kind=r4), private :: Svz
    real (kind=r4), private :: Uzero
    real (kind=r4), private :: Vzero
    real (kind=r4), private :: Zzero
    type (window_type), private, POINTER :: windowP
    real (kind=r4), public, DIMENSION(10), TARGET :: TrackParam
    integer (kind=i4), private :: KalTest
    real, private :: Chi2Save
    real (kind=r4), private, PARAMETER :: SigmaBig = 500.E-04
    integer (kind=i4), private :: nLRPerm
    integer (kind=i4), private, POINTER :: nhitsP
    integer (kind=i4), private, PARAMETER :: MaxPerm = 1000
    type (perm_type), private, DIMENSION(0:MaxPerm) :: Perm
    logical, private :: UsePerm
    integer (kind=i4), private :: nHitsClean
    integer (kind=i4), private :: NoiseExclude
    real (kind=r4), private :: Chi2sNorm
    real (kind=r4), private :: TrackTheta
    real (kind=r4), private :: TrackPhi
    real (kind=r4), private :: TrackBeta
    real (kind=r4), private :: TrackVelocity

        ! Subroutines and functions
    public subroutine KalFit (iWindow)
    private subroutine KalInit ()
    private subroutine KalFitCluster ()
    private subroutine KalFitTime (iWindow)
    private subroutine KalFilter ()
    private subroutine KalSmooth ()
    private subroutine KalTrackModel (deltaZ)
    private subroutine PhysicsParams ()
    private subroutine KalHists ()

end module kalman_mod

Description of Types

KalHit_type

public type KalHit_type
    real (kind=r4), DIMENSION(5,1) :: Xp
    real (kind=r4), DIMENSION(5,1) :: Xf
    real (kind=r4), DIMENSION(5,1) :: Xs
    real (kind=r4), DIMENSION(5,5) :: Cp
    real (kind=r4), DIMENSION(5,5) :: Cf
    real (kind=r4), DIMENSION(5,5) :: Cs
    real (kind=r4), DIMENSION(5,5) :: Ft
    real (kind=r4), DIMENSION(2,1) :: Xm
    real (kind=r4), DIMENSION(2,2) :: Vcov
    real (kind=r4), DIMENSION(2,5) :: Hm
    real (kind=r4), DIMENSION(1,1) :: Chi2s
end type KalHit_type

perm_type

private type perm_type
    character, DIMENSION(DCMaxAllowedHits) :: LCR
end type perm_type

Description of Variables

KalHit

type (KalHit_type), public, TARGET, dimension (DCMaxAllowedHits) :: KalHit

As

real (kind=r4), private, DIMENSION(5,5) :: As

rp

real (kind=r4), private, DIMENSION(2,1) :: rp

rf

real (kind=r4), private, DIMENSION(2,1) :: rf

rs

real (kind=r4), private, DIMENSION(2,1) :: rs

Kf

real (kind=r4), private, DIMENSION(5,2) :: Kf

RCOVs

real (kind=r4), private, DIMENSION(2,2) :: RCOVs

Chi2sTot

real (kind=r4), private :: Chi2sTot

KalFail

logical, public :: KalFail

IterateCluster

integer (kind=i4), private :: IterateCluster = 0

IterateTime

integer (kind=i4), private :: IterateTime = 0

hitP

type (KalHit_type), private, POINTER :: hitP

nextP

type (KalHit_type), private, POINTER :: nextP

Suz

real (kind=r4), private :: Suz

Svz

real (kind=r4), private :: Svz

Uzero

real (kind=r4), private :: Uzero

Vzero

real (kind=r4), private :: Vzero

Zzero

real (kind=r4), private :: Zzero

windowP

type (window_type), private, POINTER :: windowP

TrackParam

real (kind=r4), public, DIMENSION(10), TARGET :: TrackParam

KalTest

integer (kind=i4), private :: KalTest

Chi2Save

real, private :: Chi2Save

SigmaBig

real (kind=r4), private, PARAMETER :: SigmaBig = 500.E-04

nLRPerm

integer (kind=i4), private :: nLRPerm

nhitsP

integer (kind=i4), private, POINTER :: nhitsP

MaxPerm

integer (kind=i4), private, PARAMETER :: MaxPerm = 1000

Perm

type (perm_type), private, DIMENSION(0:MaxPerm) :: Perm

UsePerm

logical, private :: UsePerm

nHitsClean

integer (kind=i4), private :: nHitsClean

NoiseExclude

integer (kind=i4), private :: NoiseExclude

Chi2sNorm

real (kind=r4), private :: Chi2sNorm

TrackTheta

real (kind=r4), private :: TrackTheta

TrackPhi

real (kind=r4), private :: TrackPhi

TrackBeta

real (kind=r4), private :: TrackBeta

TrackVelocity

real (kind=r4), private :: TrackVelocity

Description of Subroutines and Functions

KalFit

public subroutine KalFit (iWindow)
    integer (kind=i4) :: iWindow
    ! Calls: HF1, HitCluster, KalFitCluster, KalFitTime, KalHists, KalInit, LeftRightGeom, LeftRightInit, LeftRightPerm, PhysicsParams, kerror
end subroutine KalFit

KalInit

private subroutine KalInit ()
end subroutine KalInit

KalFitCluster

private subroutine KalFitCluster ()
    ! Calls: KalFilter, KalSmooth, kerror
end subroutine KalFitCluster

KalFitTime

private subroutine KalFitTime (iWindow)
    integer (kind=i4) :: iWindow
    ! Calls: HitTime, KalFilter, KalSmooth, PhysicsParams, kerror
end subroutine KalFitTime

KalFilter

private subroutine KalFilter ()
    ! Calls: KalTrackModel, kerror
end subroutine KalFilter

KalSmooth

private subroutine KalSmooth ()
end subroutine KalSmooth

KalTrackModel

private subroutine KalTrackModel (deltaZ)
    real :: deltaZ
end subroutine KalTrackModel

PhysicsParams

private subroutine PhysicsParams ()
end subroutine PhysicsParams

KalHists

private subroutine KalHists ()
    ! Calls: HF1, HF2
end subroutine KalHists