This file is indexed.

/usr/include/casacore/ms/MSSel/MSSpwIndex.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
//# MSSpwIndex: index or lookup in a MeasurementSet subtable (DDID and SPW)
//# Copyright (C) 2000,2001
//# 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 MS_MSSPWINDEX_H
#define MS_MSSPWINDEX_H

//# includes
#include <casacore/casa/aips.h>
#include <casacore/casa/Arrays/Vector.h>
#include <casacore/casa/BasicSL/String.h>
#include <casacore/ms/MeasurementSets/MSColumns.h>
#include <casacore/casa/Arrays/Matrix.h>

namespace casacore { //# NAMESPACE CASACORE - BEGIN

//# forward declarations

// <summary> 
// Class to handle lookup or indexing into a MS Data_Desc_ID
// and SpectralWindow subtables 
// </summary>

// <use visibility=export>
//
// <reviewed reviewer="" date="yyyy/mm/dd" tests="" demos="">
// </reviewed>

// <prerequisite>
//   <li> MeasurementSet
// </prerequisite>
//
// <etymology>
// From "MeasurementSet", "SpectralWindwo subtable" and "index".
// </etymology>
//
// <synopsis> 
//
// This class provides lookup and two level indexing into an MS
// DataDescription and SpectralWindow subtable. These services include
// returning list of integer data description IDs (DDID), given a list
// of Spectral window IDs or frequencies.  The DDIDs are then used for
// selecting rows from the MS (since DDIDs are the primary keys in the
// maintable - not the spectral window IDs).
//
// </synopsis>
//
// <example>
// </example>
//
// <motivation> 
// Collect together all subtable indexing and lookup for the data
// description and spectral window subtable, for encapsulation and
// efficiency.
// </motivation>
//
// <thrown>
//    <li>
//    <li>
// </thrown>
//

class MSSpwIndex 
{
public:
  enum MSSpwTypes {MSSPW_INDEXRANGE=0,MSSPW_INDEX=2, MSSPW_UNITHZ=4, MSSPW_UNITVELOCITY=5};

  // Construct from an MS FIELD subtable
  MSSpwIndex(const MSSpectralWindow& msSpw);

  // Null destructor
  virtual ~MSSpwIndex() {};

  // Look up FIELD_ID's for a given field name, or set of field names
  Vector<Int> matchName(const String& name);
  Vector<Int> matchName(const Vector<String>& names);

  Vector<Int> matchFrequencyRange(const Float f0,const Float f1,Bool approx, const Float f3=0);

  // A version of match freq range that does not throw an exception but returns
  // false if no match...else spw, start, nchan returns the matches 
  // f0 and f1 are in Hz and the match is done in the frame defined in the 
  // SpectralWindow table.
  Bool matchFrequencyRange(const Double f0, const Double f1, 
			   Vector<Int>& spw, Vector<Int>& start, 
			   Vector<Int>& nchan);
  // Look up FIELD_ID's for a given pattern/regex for source name/code
  Vector<Int> matchRegexOrPattern(const String& pattern,
				       const Bool regex=False);
  // Look up FIELD_ID's for a given source id
  Vector<Int> matchId(const Vector<Int>& spwIds);

  Vector<Int> matchLT(const Int n);
  Vector<Int> matchGT(const Int n);
  Vector<Int> matchGTAndLT(const Int n0, const int n1);
  Vector<Int> matchLT(const Float*);
  Vector<Int> matchGT(const Float*);
  Vector<Int> matchGTAndLT(const Float* phyValMin, const Float *phyValMax);
  Vector<Float> convertToMKS(const Float f0, const Float f1, const String& unit); 
  Vector<Int> convertToChannelIndex(const Vector<Int>& spw, const Vector<Float>& freqList,
				    Int& nFSpec);
  Vector<Int> convertToSpwIndex(const Vector<Float>& freqList,
				Int &nFSpec);
private:
  Int findChanIndex_p(const Float& freq, const Vector<Double>& chanFreqList,
		      const Bool& greaterThan,
		      const Bool& ascendingOrder);
  // Construct from an MS FIELD subtable
  MSSpwIndex();
  // FIELD subtable column accessor
  ROMSSpWindowColumns msSpwSubTable_p;
  //  ROMSDataDescColumns msDataDescSubTable_p;
  enum MODES {EXACT=1, APPROX, RANGE};
  Vector<Int> spwIDs;
};


} //# NAMESPACE CASACORE - END

#endif