FlagAgentShadow.h
Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023 #ifndef FlagAgentShadow_H_
00024 #define FlagAgentShadow_H_
00025
00026 #include <flagging/Flagging/FlagAgentBase.h>
00027
00028 #include <measures/Measures/MeasFrame.h>
00029
00030
00031
00032 #include <measures/Measures/MBaseline.h>
00033 #include <measures/Measures/MCBaseline.h>
00034 #include <measures/Measures/Muvw.h>
00035 #include <measures/Measures/MCuvw.h>
00036 #include <casa/Quanta/MVuvw.h>
00037 #include <measures/Measures/MEpoch.h>
00038 #include <measures/Measures/MPosition.h>
00039 #include <measures/Measures/MCPosition.h>
00040 #include <measures/Measures/MDirection.h>
00041 #include <casa/Quanta/MVDirection.h>
00042 #include <measures/Measures.h>
00043 #include <casa/Utilities/DataType.h>
00044
00045 #include <casa/Containers/Record.h>
00046
00047
00048 namespace casa {
00049
00050 class FlagAgentShadow : public FlagAgentBase {
00051
00052 public:
00053
00054 FlagAgentShadow(FlagDataHandler *dh, Record config, Bool writePrivateFlagCube = false, Bool flag = true);
00055 ~FlagAgentShadow();
00056
00057 protected:
00058
00059
00060 void preProcessBuffer(const vi::VisBuffer2 &visBuffer);
00061
00062
00063 void preProcessBufferCore(const vi::VisBuffer2 &visBuffer);
00064
00065
00066 bool computeRowFlags(const vi::VisBuffer2 &visBuffer, FlagMapper &flags, uInt row);
00067
00068
00069 void setAgentParameters(Record config);
00070
00071 private:
00072
00073
00074 Bool computeAntUVW(const vi::VisBuffer2 &vb, Int rownr);
00075
00076 void calculateShadowedAntennas(const vi::VisBuffer2 &visBuffer, Int rownr);
00077
00078 void decideBaselineShadow(Double uvDistance, Double w, Int antenna1, Int antenna2);
00079
00080 uInt baselineIndex(uInt nAnt, uInt a1, uInt a2);
00081
00083 Double shadowTolerance_p;
00084 Record additionalAntennas_p;
00085
00086
00088 Vector<Double> shadowAntennaDiameters_p;
00089 Vector<MPosition> shadowAntennaPositions_p;
00090
00091
00092 uShort agentNumber_p;
00093 static vector<Int> shadowedAntennas_p;
00094 static casa::async::Mutex staticMembersMutex_p;
00095 static vector<bool> startedProcessing_p;
00096 static bool preProcessingDone_p;
00097 static uShort nAgents_p;
00098
00099
00100 Matrix<Double> uvwAnt_p;
00101 Double currTime_p;
00102
00103 Bool firststep_p;
00104
00105 };
00106
00107 }
00108
00109 #endif
00110