module mtcai1 {
  use tcai1+mask1
  logical, parameter, private  :: T = .true., F = .false.
  real,    dimension(:), pointer :: tt
#%  _init( aa,msk)
  real,    dimension(:), pointer :: aa
  logical, dimension(:), pointer :: msk
  call tcai1_init (aa)
  call mask1_init(msk)
  allocate(tt(size(msk)))
#%  _lop ( mm, dd)
  integer stat1, stat2
  if( adj) {
      stat1 = tcai1_lop( T, F, tt, dd) # t        =    F' d
      stat2 = mask1_lop( T, T, mm, tt) # m = J' t = J' F' d
  } else {
      stat1 = mask1_lop( F, F, mm, tt) # t        =    J  m
      stat2 = tcai1_lop( F, T, tt, dd) # d = F  t = F  J  m
  }


}
