9 #ifndef INTERFEROMETRIC_MAP_H 10 #define INTERFEROMETRIC_MAP_H 12 #define NUM_BINS_THETA 70 13 #define NUM_BINS_PHI 9 17 #define PHI_RANGE 22.5 20 #define DEGREES_IN_CIRCLE 360 22 #define MAX_NUM_PEAKS 5 23 #define PEAK_PHI_DEG_RANGE 10 24 #define PEAK_THETA_DEG_RANGE 10 26 #define NUM_BINS_THETA_ZOOM 40 27 #define NUM_BINS_PHI_ZOOM 40 28 #define ZOOM_BINS_PER_DEGREE_PHI 4 29 #define ZOOM_BINS_PER_DEGREE_THETA 4 31 #define ZOOM_BIN_SIZE_PHI (1./ZOOM_BINS_PER_DEGREE_PHI) 32 #define ZOOM_BIN_SIZE_THETA (1./ZOOM_BINS_PER_DEGREE_THETA) 33 #define THETA_RANGE_ZOOM (NUM_BINS_THETA_ZOOM*ZOOM_BIN_SIZE_THETA) 34 #define PHI_RANGE_ZOOM (NUM_BINS_PHI_ZOOM*ZOOM_BIN_SIZE_PHI) 36 #define NUM_BINS_PHI_ZOOM_TOTAL (DEGREES_IN_CIRCLE*ZOOM_BINS_PER_DEGREE_PHI + NUM_BINS_PHI_ZOOM) 37 #define NUM_BINS_THETA_ZOOM_TOTAL ((MAX_THETA - MIN_THETA)*ZOOM_BINS_PER_DEGREE_THETA + NUM_BINS_THETA_ZOOM) 39 #define NUM_BINS_QUAD_FIT_PHI 5 40 #define NUM_BINS_QUAD_FIT_THETA 5 42 #include "AnitaConventions.h" 47 #include "TDecompSVD.h" 48 #include "TGraphInteractive.h" 58 class InterferometryCache;
59 class CrossCorrelator;
66 InterferometricMap(Int_t peakInd, Int_t phiSector, Double_t centrePhi, Double_t phiRange, Double_t centreTheta, Double_t thetaRange);
70 void findPeakValues(Int_t numPeaks, std::vector<Double_t>& peakValues, std::vector<Double_t>& phiDegs, std::vector<Double_t>& thetaDegs)
const;
71 void getPeakInfo(Double_t& peak, Double_t& phiDeg, Double_t& thetaDeg)
const{
76 void getPeakInfo(Double_t& peak, Double_t& phiDeg, Double_t& thetaDeg, Double_t& reducedChisquare)
const{
77 getPeakInfo(peak, phiDeg, thetaDeg);
81 virtual void Draw(Option_t* opt);
108 inline Int_t GetNbinsPhi()
const {
return GetNbinsX();}
109 inline Int_t GetNbinsTheta()
const {
return GetNbinsY();}
110 inline const TAxis* GetPhiAxis()
const {
return GetXaxis();}
111 inline const TAxis* GetThetaAxis()
const {
return GetYaxis();}
113 const TGraphInteractive* getPeakPointGraph();
114 const TGraphInteractive* getEdgeBoxGraph();
115 const TGraphInteractive* getSunGraph();
116 const TGraphInteractive* getTruthGraph();
118 bool isAZoomMap()
const {
return fIsZoomMap;}
119 Int_t getPeakPhiSector()
const {
return fPeakPhiSector;}
122 virtual void Reset(Option_t* =
"");
146 TGraph& findOrMakeGraph(TString name);
154 bool fThetaAxisInSinTheta;
155 void initializeInternals();
168 void getIndicesOfEdgeBins(
const std::vector<double>& binEdges, Double_t lowVal, Double_t highVal, Int_t& lowIndex, Int_t& highIndex);
170 Double_t fPeakBinValue;
195 static Int_t getPhiSectorFromPhiRough(
double phiRough);
198 static const TDecompSVD& getSVD();
199 static void getDeltaBinRangeSVD(Int_t& dPhiBinLow, Int_t& dPhiBinHigh, Int_t& dThetaBinLow, Int_t& dThetaBinHigh);
206 #endif // INTERFEROMETRIC_MAP_H Double_t fPeakSigmaTheta
Width of peak in phi.
static const std::vector< Double_t > & getFineBinEdgesTheta()
TPad * makeProjectionCanvas()
void addTruthInfo(const TruthAnitaEvent *truth)
Double_t fPeakReducedChisquare
Location in theta of the peak of the quadratic fit to the region around the peak bin.
Adu5Pat – The ADU5 Position and Attitude Data.
static const std::vector< Double_t > & getFineBinEdgesPhi()
void setPeakInfoJustFromPeakBin(Int_t peakPhiBin, Int_t peakThetaBin)
static const std::vector< Double_t > & getCoarseBinEdgesTheta()
virtual ~InterferometricMap()
Double_t fPeakSigmaPhi
Residual of the peak fit... I hope.
ClassDef(InterferometricMap, 4)
Estimate of of the pointing resultion from the waveform SNR.
virtual void Draw(Option_t *opt)
void Fill(AnitaPol::AnitaPol_t pol, CrossCorrelator *cc, InterferometryCache *dtCache)
void fitPeakWithQuadratic(Int_t peakPhiBin, Int_t peakThetaBin)
Fit a 2D quadratic function to the bins around the peak of the map. Only implemented for zoomed maps...
Inherit from this to draw interactive TGraphs on top of you.
Double_t fPeakCovariance
Width of peak theta.
static Double_t getBin0PhiDeg()
Namespace which wraps everything in the library.
Double_t fSigmaPhi
Estimate of the pointing resolution from the waveform SNR.
Double_t fPeakPhi
Value of the peak of quadratic fit to the region around the peak bin.
Double_t fPeakValue
The bin in theta (counting from 0) containing the peak value.
Double_t fSigmaTheta
Width of peak theta.
TruthAnitaEvent – The Truth ANITA Event.
static Double_t getPhiSectorCenterPhiDeg(int phi)
As UsefulAnitaEvent is to RawAnitaEvent, UsefulAdu5Pat is to Adu5Pat. Well not quite as useful but yo...
virtual void ExecuteEvent(int event, int x, int y)
A class to take in FiteredAnitaEvents and cross-correlate nearby channels.
Class to cache the deltaTs or parts of their calculation for fast map making.
Int_t fPeakBinTheta
The bin in phi (counting from 0) containing the peak value.
void setResolutionEstimateFromWaveformSNR(double snr)
static const std::vector< Double_t > & getCoarseBinEdgesPhi()
Int_t fPeakBinPhi
The value of the highest bin in the map.
void addGpsInfo(const Adu5Pat *pat)
enum AnitaPol::EAnitaPol AnitaPol_t
Polarisation enumeration.
Double_t fPeakTheta
Location in phi of the peak of the quadratic fit to the region around the peak bin.