This file is indexed.

/usr/include/casacore/lattices/LatticeMath/LatticeSlice1D.h is in casacore-dev 2.2.0-2.

This file is owned by root:root, with mode 0o644.

The actual contents of the file can be viewed below.

  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
//# LatticeSlice1D.h: 1-D slice from a Lattice
//# Copyright (C) 1996,1997,1998,1999,2000,2001,2002,2003
//# Associated Universities, Inc. Washington DC, USA.
//#
//# This library is free software; you can redistribute it and/or modify it
//# under the terms of the GNU Library General Public License as published by
//# the Free Software Foundation; either version 2 of the License, or (at your
//# option) any later version.
//#
//# This library is distributed in the hope that it will be useful, but WITHOUT
//# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
//# FITNESS FOR A PARTICULAR PURPOSE.  See the GNU Library General Public
//# License for more details.
//#
//# You should have received a copy of the GNU Library General Public License
//# along with this library; if not, write to the Free Software Foundation,
//# Inc., 675 Massachusetts Ave, Cambridge, MA 02139, USA.
//#
//# Correspondence concerning AIPS++ should be addressed as follows:
//#        Internet email: aips2-request@nrao.edu.
//#        Postal address: AIPS++ Project Office
//#                        National Radio Astronomy Observatory
//#                        520 Edgemont Road
//#                        Charlottesville, VA 22903-2475 USA
//#
//# $Id$

#ifndef LATTICES_LATTICESLICE1D_H
#define LATTICES_LATTICESLICE1D_H


//# Includes
#include <casacore/casa/aips.h>
#include <casacore/casa/Arrays/Vector.h>
#include <casacore/casa/iosstrfwd.h>


namespace casacore { //# NAMESPACE CASACORE - BEGIN

//# Forward Declarations
template <class T> class MaskedLattice;
class IPosition;
class Interpolate2D;
class PixelCurve1D;
class String;

// <summary>
// Extract a 1-D slice from a Lattice
// </summary>
// <use visibility=export>
// <reviewed reviewer="" date="yyyy/mm/dd" tests="test/tLatticeSlice1D" demos="">
// </reviewed>
// <prerequisite>
//   <li> <linkto class=MaskedLattice>MaskedLattice</linkto>
// </prerequisite>

// <etymology>
// </etymology>

// <synopsis>
// This class extracts an interpolated 1-D slice from a Lattice
// with a range of interpolation schemes available. The slice must lie in 
// the plane of two cardinal axes.
// </synopsis>
//
// <note role=tip>
// </note>
//
// <example>
// <srcBlock>
// IPosition shape(2, 20, 30);                    // Create MaskedLattice
// ArrayLattice<Float> arrLat(shape);
// SubLattice<Float> subLat(arrLat);
// LatticeSlice1D<Float> slicer(subLat);
//
// IPosition blc(2); blc = 0;                     // Extract slice between corners
// IPosition trc(shape-1);
// Vector<Float> data;
// Vector<Bool> mask;
// slicer.getSlice (data, mask, blc, trc);
// </srcBlock>
// </example>

// <motivation>
// Users often want to see cross-cuts through their data.
// </motivation>

// <todo asof="2004/04/16">
//   <li> Handle curves not in cardinal axis plane
//   <li> Derive from MaskedLattice ?
// </todo>


template <class T> class LatticeSlice1D 
{
public:

// Interpolation method
   enum Method {NEAREST=0, LINEAR=1, CUBIC=2, N_TYPES};

// Default constructor - object useless
   LatticeSlice1D ();

// Constructor 
   LatticeSlice1D (const MaskedLattice<T>& lattice, Method method=LINEAR);

// Copy constructor (reference semantics)
   LatticeSlice1D(const LatticeSlice1D<T> &other);

// Destructor
   virtual ~LatticeSlice1D ();

// Assignment operator (reference semantics)
   LatticeSlice1D<T>& operator=(const LatticeSlice1D<T> &other);

// Get 1-D slice.  PixelCurve1D supplies the locus of the slice in
// the plane specified by axis0 and axis1.  The pixel coordinate for
// the rest of the lattice is specified in <src>coord</src>.
   void getSlice (Vector<T>& data, Vector<Bool>& mask,
                  const PixelCurve1D& curve, uInt axis0, uInt axis1,
                  const IPosition& coord);

// Get 1-D slice between blc & trc. These start and end points must be 
// in a cardinal plane of the lattice.  If nPts is 0 it is set automatically to
// the length of the slice.   
   void getSlice (Vector<T>& data, Vector<Bool>& mask,
                  const IPosition& blc, const IPosition& trc, uInt nPts=0);

// Get the (x,y) pixel coordinates from the last slice and the distance along
// the slice in pixels.. Also recover the axes of the slice plane
   void getPosition (uInt& axis0, uInt& axis1, Vector<Float>& x, 
                     Vector<Float>& y, Vector<Float>& distance) const;

// Recover interpolation method
   Method interpolationMethod () const {return itsMethod;};

   static Method stringToMethod (const String& method);

private:
// Check the suppliec curve is valid.
   void checkCurve (IPosition& blc, IPosition& trc, 
                    const IPosition& coord, const PixelCurve1D& curve);
// Find the slice plane.
   void findPlane (const IPosition& blc,
                   const IPosition& trc);
// Get the interpolated slice
   void doGetSlice (Vector<T>& data, Vector<Bool>& mask,
                    const PixelCurve1D& curve,
                    const IPosition& blc, const IPosition& trc);
// Make Interpolator
   void makeInterpolator (Method method);
  
//
   MaskedLattice<T>* itsLatticePtr;
   Interpolate2D* itsInterpPtr;
   Method itsMethod;
   Vector<Float> itsX;
   Vector<Float> itsY;
   Vector<Double> itsPos;
   uInt itsAxis0;
   uInt itsAxis1;
};


} //# NAMESPACE CASACORE - END

#ifndef CASACORE_NO_AUTO_TEMPLATES
#include <casacore/lattices/LatticeMath/LatticeSlice1D.tcc>
#endif //# CASACORE_NO_AUTO_TEMPLATES
#endif