Public Types | Public Member Functions | Static Public Member Functions | Public Attributes | Protected Member Functions | Protected Attributes | Friends | List of all members
Acclaim::AnalysisReco Class Reference

Does the event reconstruction, and produces a summary of it. More...

#include <AnalysisReco.h>

Public Types

enum  DrawDomain { kTimeDomain = 0, kFreqDomain = 1, kStokesParams = 2 }
 

Public Member Functions

 AnalysisReco ()
 Constructor. More...
 
virtual ~AnalysisReco ()
 Destructor. More...
 
void process (const FilteredAnitaEvent *fEv, AnitaEventSummary *sum, NoiseMonitor *noiseMonitor=NULL, TruthAnitaEvent *truth=NULL)
 
Double_t getDeltaTExpected (AnitaPol::AnitaPol_t pol, Int_t ant1, Int_t ant2, Double_t phiWave, Double_t thetaWave) const
 Get the expected delay between antenna pairs for a given direction. More...
 
Double_t getDeltaTExpected (AnitaPol::AnitaPol_t pol, Int_t ant, Double_t phiWave, Double_t thetaWave) const
 Get the expected delay between a single antenna and the center of the payload for a given direction. More...
 
Double_t relativeOffAxisDelay (AnitaPol::AnitaPol_t pol, Int_t ant1, Int_t ant2, Double_t phiDeg) const
 Get the off axis delay between two antennas for a given phi angle. More...
 
Double_t singleAntennaOffAxisDelay (Double_t deltaPhiDeg) const
 
void drawSummary (TPad *wholePad, AnitaPol::AnitaPol_t pol)
 Draw everything interesting onto a TPad. More...
 
InterferometricMapgetMap (AnitaPol::AnitaPol_t pol)
 Get a pointer to the coarsely binned interferometric map stored in memory, once called, you own this InterferometricMap and must delete it. More...
 
InterferometricMapgetZoomMap (AnitaPol::AnitaPol_t pol, UInt_t peakInd=0)
 Get a pointer to a finely binned interferometric map stored in memory, once called, you own this InterferometricMap and must delete it. More...
 
void reconstruct (AnitaPol::AnitaPol_t pol, const Adu5Pat *pat=NULL)
 produce and store the coarsely binned interferometric map, (overwrites coarseMaps) More...
 
void reconstructZoom (AnitaPol::AnitaPol_t pol, Int_t peakIndex, Double_t zoomCenterPhiDeg, Double_t zoomCenterThetaDeg, const Adu5Pat *pat=NULL)
 produce and store a finely binned interferometric map, (overwrites fineMaps) More...
 
AnalysisWaveformcoherentlySum (const FilteredAnitaEvent *fEv, AnitaPol::AnitaPol_t pol, const std::vector< Int_t > &theAnts, Double_t peakPhiDeg, Double_t peakThetaDeg, Double_t *biggestPeakToPeak=NULL, double *forceT0=NULL)
 Make a coherently summed waveform for a given polarization, set of antennas in a particular direction. More...
 
AnalysisWaveformcoherentlySum (std::vector< const AnalysisWaveform * > &waves, std::vector< Double_t > &dts, const double *forceT0=NULL)
 Coherenty sum a set of AnalysisWaveforms with a set of dts. More...
 
void insertPhotogrammetryGeometry ()
 Inserts the photogrammetry geometry from AnitaGeomTool into this classes copy of the antenna position. !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! More...
 
AnalysisWaveformgetCoherentFiltered (AnitaPol::AnitaPol_t pol, Int_t peakInd=0, bool xPol=false)
 Coherently summed filtered (un-deconvolved) waveform accessor for external processes. Only works once per event processed as ownership is transferred to the function caller. More...
 
AnalysisWaveformgetCoherent (AnitaPol::AnitaPol_t pol, Int_t peakInd=0, bool xPol=false)
 Coherently summed (un-filtered, un-deconvolved) waveform accessor for external processes. Only works once per event processed as ownership is transferred to the function caller. More...
 
AnalysisWaveformgetDeconvolved (AnitaPol::AnitaPol_t pol, Int_t peakInd=0, bool xPol=false)
 Coherently summed (un-filtered) deconvolved waveform accessor for external processes. Only works once per event processed as ownership is transferred to the function caller. More...
 
AnalysisWaveformgetDeconvolvedFiltered (AnitaPol::AnitaPol_t pol, Int_t peakInd=0, bool xPol=false)
 Coherently summed filtered deconvolved waveform accessor for external processes. Only works once per event processed as ownership is transferred to the function caller. More...
 
FilteredAnitaEventgetEvMin ()
 
FilteredAnitaEventgetEvMinDeco ()
 
FilteredAnitaEventgetEvDeco ()
 
void directionAndAntennasToDeltaTs (const std::vector< Int_t > &theAnts, AnitaPol::AnitaPol_t pol, Double_t peakPhiDeg, Double_t peakThetaDeg, std::vector< double > &dts)
 From a list of antennas, get a set of dts relative to the first antenna. More...
 
void fillPowerFlags (const FilteredAnitaEvent *fEv, AnitaEventSummary::EventFlags &flags)
 
const std::vector< int > & phiSectorToCoherentAnts (int peakPhiSector)
 Get a list of antenna indices (in a std::vector) for a coherently averaged waveform based from the phi-sector. More...
 
void wavesInCoherent (std::vector< const AnalysisWaveform * > &waves, std::vector< Double_t > &dts, std::vector< TGraphAligned * > &grs)
 Generate a new set of TGraphAligned such that the peaks are aligned,. More...
 
CrossCorrelatorgetCrossCorrelator ()
 
const AnitaEventSummarylastSummary ()
 
Int_t GetDebug () const
 Get the value of fDebug.
 
void SetDebug (Int_t val)
 Set the value of fDebug.
 
Int_t GetCoherentDeltaPhi () const
 Get the value of fCoherentDeltaPhi.
 
void SetCoherentDeltaPhi (Int_t val)
 Set the value of fCoherentDeltaPhi.
 
Int_t GetWhichResponseDir () const
 Get the value of fWhichResponseDir.
 
void SetWhichResponseDir (Int_t val)
 Set the value of fWhichResponseDir.
 
Int_t GetUseOffAxisDelay () const
 Get the value of fUseOffAxisDelay.
 
void SetUseOffAxisDelay (Int_t val)
 Set the value of fUseOffAxisDelay.
 
Int_t GetResponseNPad () const
 Get the value of fResponseNPad.
 
void SetResponseNPad (Int_t val)
 Set the value of fResponseNPad.
 
Int_t GetNumPeaks () const
 Get the value of fNumPeaks.
 
void SetNumPeaks (Int_t val)
 Set the value of fNumPeaks.
 
Double_t GetCoherentDtNs () const
 Get the value of fCoherentDtNs.
 
void SetCoherentDtNs (Double_t val)
 Set the value of fCoherentDtNs.
 
Double_t GetSlopeFitStartFreqGHz () const
 Get the value of fSlopeFitStartFreqGHz.
 
void SetSlopeFitStartFreqGHz (Double_t val)
 Set the value of fSlopeFitStartFreqGHz.
 
Double_t GetSlopeFitEndFreqGHz () const
 Get the value of fSlopeFitEndFreqGHz.
 
void SetSlopeFitEndFreqGHz (Double_t val)
 Set the value of fSlopeFitEndFreqGHz.
 
Double_t GetMeanPowerFlagLowFreqGHz () const
 Get the value of fMeanPowerFlagLowFreqGHz.
 
void SetMeanPowerFlagLowFreqGHz (Double_t val)
 Set the value of fMeanPowerFlagLowFreqGHz.
 
Double_t GetMeanPowerFlagHighFreqGHz () const
 Get the value of fMeanPowerFlagHighFreqGHz.
 
void SetMeanPowerFlagHighFreqGHz (Double_t val)
 Set the value of fMeanPowerFlagHighFreqGHz.
 
Int_t GetFillChannelInfo () const
 Get the value of fFillChannelInfo.
 
void SetFillChannelInfo (Int_t val)
 Set the value of fFillChannelInfo.
 
Int_t GetFillSpectrumInfo () const
 Get the value of fFillSpectrumInfo.
 
void SetFillSpectrumInfo (Int_t val)
 Set the value of fFillSpectrumInfo.
 
Int_t GetFillUnfiltered () const
 Get the value of fFillUnfiltered.
 
void SetFillUnfiltered (Int_t val)
 Set the value of fFillUnfiltered.
 
Int_t GetInstantaneousStokes () const
 Get the value of fInstantaneousStokes.
 
void SetInstantaneousStokes (Int_t val)
 Set the value of fInstantaneousStokes.
 
Int_t GetDrawNPeaks () const
 Get the value of fDrawNPeaks. More...
 
void SetDrawNPeaks (Int_t val)
 Set the value of fDrawNPeaks.
 
Int_t GetDrawDomain () const
 Get the value of fDrawDomain as an integer. More...
 
DrawDomain GetEnumDrawDomain () const
 Get the value of fDrawDomain as AnalysisFlow::selection enum. More...
 
void SetDrawDomain (Int_t val)
 Set the value of fDrawDomain from an integer value. More...
 
void SetDrawDomain (DrawDomain val)
 
Int_t GetDrawCoherent () const
 Get the value of fDrawCoherent.
 
void SetDrawCoherent (Int_t val)
 Set the value of fDrawCoherent.
 
Int_t GetDrawDedispersed () const
 Get the value of fDrawDedispersed.
 
void SetDrawDedispersed (Int_t val)
 Set the value of fDrawDedispersed.
 
Int_t GetDrawXPol () const
 Get the value of fDrawXPol.
 
void SetDrawXPol (Int_t val)
 Set the value of fDrawXPol.
 
Int_t GetDrawXPolDedispersed () const
 Get the value of fDrawXPolDedispersed.
 
void SetDrawXPolDedispersed (Int_t val)
 Set the value of fDrawXPolDedispersed.
 

Static Public Member Functions

static Int_t directlyInsertGeometry (TString pathToLindasFile, AnitaPol::AnitaPol_t pol)
 
static void setTriggerInfoFromPeakPhi (const RawAnitaHeader *header, AnitaPol::AnitaPol_t pol, Int_t peakPhiSector, AnitaEventSummary::PointingHypothesis &peak)
 Calculate and fill the info the AnitaEventSummary relating the compatibility of the hardware trigger and the interferometric peak. More...
 
static void fillChannelInfo (const FilteredAnitaEvent *fEv, AnitaEventSummary *sum)
 Calculate and fill the numbers for Peng's ChannelInfo object. More...
 

Public Attributes

Int_t fLastCoherentDeltaPhi
 Used to figure out if we need to recalculate the cached values related to coherently summing waveforms.
 

Protected Member Functions

void initializeInternals ()
 Sets default values and zeros pointers for dynamically initialised heap members.
 
size_t checkWavesAndDtsMatch (std::vector< const AnalysisWaveform * > &waves, std::vector< Double_t > &dts)
 Bounds checking for coherent averaging. Checks input vectors are the same length and zero pads/trims the vector in the case they're not. More...
 
void fillWaveformInfo (AnitaPol::AnitaPol_t pol, Int_t peakInd, AnitaEventSummary::WaveformInfo &info, const FilteredAnitaEvent *fEv, AnalysisWaveform **waveStore, InterferometricMap *h, NoiseMonitor *noiseMonitor, std::vector< double > &I, std::vector< double > &Q, std::vector< double > &U, std::vector< double > &V)
 
void chooseAntennasForCoherentlySumming (int coherentDeltaPhi)
 Generate a set of antennas to use to generate the coherent waveform. More...
 
void nicelyDeleteInternalFilteredEvents ()
 does NULL pointer checking deletion on the internally generated FilteredAnitaEvents, fEvMin, fEvMinDeco, fEvDeco
 

Protected Attributes

InterferometricMapcoarseMaps [AnitaPol::kNotAPol]
 The coarsely binned InterferometricMap from the most recently processed event.
 
InterferometricMapfineMaps [AnitaPol::kNotAPol][AnitaEventSummary::maxDirectionsPerPol]
 The finely binned InterferometricMap from the most recently processed event.
 
std::vector< Double_t > fRArray [AnitaPol::kNotAPol]
 Local copies of the antenna radial positions (metres) from AnitaGeomTool.
 
std::vector< Double_t > fPhiArrayDeg [AnitaPol::kNotAPol]
 Local copies of the antenna azimuth positions (in degrees) from AnitaGeomTool.
 
std::vector< Double_t > fZArray [AnitaPol::kNotAPol]
 Local copies of the antenna z positions (metres) from AnitaGeomTool.
 
AnalysisWaveformfCoherentFiltered [AnitaPol::kNotAPol][AnitaEventSummary::maxDirectionsPerPol][AnitaPol::kNotAPol]
 Copies of the coherently summed waveforms from the most recently processed event.
 
AnalysisWaveformfCoherent [AnitaPol::kNotAPol][AnitaEventSummary::maxDirectionsPerPol][AnitaPol::kNotAPol]
 Copies of the unfiltered, coherently summed waveform from the most recently processed event.
 
AnalysisWaveformfDeconvolved [AnitaPol::kNotAPol][AnitaEventSummary::maxDirectionsPerPol][AnitaPol::kNotAPol]
 Copies of the dedispersed, unfiltered coherently summed waveform from the most recently processed event.
 
AnalysisWaveformfDeconvolvedFiltered [AnitaPol::kNotAPol][AnitaEventSummary::maxDirectionsPerPol][AnitaPol::kNotAPol]
 Copies of the dedispersed, filtered coherently summed waveform from the most recently processed event.
 
std::vector< Int_t > fPhiSectorToAnts [NUM_PHI]
 Which antennas to use to make coherently summed waveforms depending on the phi-sector of the peak.
 
AnitaEventSummary fSummary
 A copy of the AnitaEventSummary from the most recently processed event.
 
CrossCorrelatorfCrossCorr
 CrossCorrelator generates the set of cross-correlations required to make an InterferometricMap.
 
bool fSpawnedCrossCorrelator
 Did I initialize a CrossCorrelator for fCrossCorr, or was I given a CrossCorrelator initialized by someone else?
 
InterferometryCache fDtCache
 Caches antenna delays as a function of incoming angle, for quickly making an Interferometric map.
 
FilterStrategyfMinFilter
 Minimum set of filters (no filers, or just ALFA filters for ANITA-3)
 
FilterStrategyfMinDecoFilter
 Minimum filter with an appended deconvolution filter.
 
FilteredAnitaEventfEvMin
 Filtered event produced with the fMinFilter.
 
FilteredAnitaEventfEvMinDeco
 Filtered event produced with the fMinDecoFilter.
 
FilteredAnitaEventfEvDeco
 FilteredEvent produced by appending a deconvolution filter to the filter strategy passed to process()
 
UInt_t fCurrentEventNumber
 Assigned at the start of process(), helpful for printing warning/info messages.
 
Int_t fCurrentRun
 Assigned at the start of process(), helpful for printing warning/info messages.
 
std::vector< double > f_dICoherentFiltered [AnitaPol::kNotAPol][AnitaEventSummary::maxDirectionsPerPol]
 Instantaneous I for each source direction for the coherent filtered waveform.
 
std::vector< double > f_dQCoherentFiltered [AnitaPol::kNotAPol][AnitaEventSummary::maxDirectionsPerPol]
 Instantaneous Q for each source direction for the coherent filtered waveform.
 
std::vector< double > f_dUCoherentFiltered [AnitaPol::kNotAPol][AnitaEventSummary::maxDirectionsPerPol]
 Instantaneous U for each source direction for the coherent filtered waveform.
 
std::vector< double > f_dVCoherentFiltered [AnitaPol::kNotAPol][AnitaEventSummary::maxDirectionsPerPol]
 Instantaneous V for each source direction for the coherent filtered waveform.
 
std::vector< double > f_dIDeconvolvedFiltered [AnitaPol::kNotAPol][AnitaEventSummary::maxDirectionsPerPol]
 Instantaneous I for each source direction for the dedispersed filtered waveform.
 
std::vector< double > f_dQDeconvolvedFiltered [AnitaPol::kNotAPol][AnitaEventSummary::maxDirectionsPerPol]
 Instantaneous Q for each source direction for the dedispersed filtered waveform.
 
std::vector< double > f_dUDeconvolvedFiltered [AnitaPol::kNotAPol][AnitaEventSummary::maxDirectionsPerPol]
 Instantaneous U for each source direction for the dedispersed filtered waveform.
 
std::vector< double > f_dVDeconvolvedFiltered [AnitaPol::kNotAPol][AnitaEventSummary::maxDirectionsPerPol]
 Instantaneous V for each source direction for the dedispersed filtered waveform.
 
Int_t fDebug
 Controls the printing of debug info, feel free to wrap noisy stderr messages with if(fDebug),. More...
 
Int_t fCoherentDeltaPhi
 The +/- range of phi-sectors around the map peak phi-sector to use when making a coherently averaged waveform, i.e. antennas from the nearest 1+2*fCoherentDeltaPhi phi-sectors are used. More...
 
Int_t fWhichResponseDir
 Which version of the antenna response to use? More...
 
Int_t fUseOffAxisDelay
 Whether or not to use the derived off-axis delay values when making an InterferometricMap. More...
 
Int_t fResponseNPad
 How up to how many samples do we need to pad the antenna response functions? More...
 
Int_t fNumPeaks
 How many local maxima in the coarsely binned InterferometricMap should we make a finely binned InterferometricMap? (per polarization). More...
 
Double_t fCoherentDtNs
 Time in nano-seconds to interpolate to when coherently averaging waveforms. More...
 
Double_t fSlopeFitStartFreqGHz
 Frequency at which to start the linear fit to the power spectrum of the coherently averaged waveforms. More...
 
Double_t fSlopeFitEndFreqGHz
 Frequency at which to stop the linear fit to the power spectrum of the coherently averaged waveforms. More...
 
Double_t fMeanPowerFlagLowFreqGHz
 Frequency at which to start the mean power calculation. More...
 
Double_t fMeanPowerFlagHighFreqGHz
 Frequency at which to stop the mean power calculation. More...
 
Int_t fFillChannelInfo
 Whether or not to fill Peng's AnitaEventSummary::ChannelInfo (smaller output files from better compression if you don't) More...
 
Int_t fFillSpectrumInfo
 Whether or not to fill the spectrum info (smaller output files from better compression if you don't) More...
 
Int_t fFillUnfiltered
 Whether or not to fill the AnitaEventSummary::WaveformInfo objects for the unfiltered versions of the AnalysisWaveforms (smaller output files from better compression if you don't) More...
 
Int_t fInstantaneousStokes
 Whether or not to store instantaneous stokes parameters, currently this is only used for plotting. More...
 
Int_t fDrawNPeaks
 How many peaks to draw in the summary, must be less than or equal to fNumPeaks. More...
 
DrawDomain fDrawDomain
 Set as 0 to draw time domain, or 1 to draw frequency domain. More...
 
Int_t fDrawCoherent
 
Int_t fDrawDedispersed
 
Int_t fDrawXPol
 
Int_t fDrawXPolDedispersed
 

Friends

class InterferometryCache
 For accessing the antenna position arrays fRArray, fPhiArrayDeg, fZArray.
 

Detailed Description

Does the event reconstruction, and produces a summary of it.

The main workhorse function is process(const FilteredAnitaEvent * ev, AnitaEventSummary * summary, NoiseMonitor* noiseMonitor=NULL, TruthAnitaEvent* truth = NULL). This takes in a FilteredAnitaEvent, produced a bunch of InterferometricMap objects, finds their peak directions, creates a coherently averaged waveform (and deconvolved version) for each, and produces some summary numbers from the maps and waveforms and stores them in an AnitaEventSummary.

Definition at line 30 of file AnalysisReco.h.

Inheritance diagram for Acclaim::AnalysisReco:
Inheritance graph
[legend]
Collaboration diagram for Acclaim::AnalysisReco:
Collaboration graph
[legend]

Constructor & Destructor Documentation

Acclaim::AnalysisReco::AnalysisReco ( )

Constructor.

There are no constructor paramters, but a bunch of things are configurable with config files.

See also
AnalysisSettings

Default constructor

Definition at line 20 of file AnalysisReco.cxx.

Acclaim::AnalysisReco::~AnalysisReco ( )
virtual

Destructor.

Default destructor

Definition at line 28 of file AnalysisReco.cxx.

Member Function Documentation

size_t Acclaim::AnalysisReco::checkWavesAndDtsMatch ( std::vector< const AnalysisWaveform * > &  waves,
std::vector< Double_t > &  dts 
)
protected

Bounds checking for coherent averaging. Checks input vectors are the same length and zero pads/trims the vector in the case they're not.

Parameters
wavesthe waveforms to sum
dtsthe time offsets to apply
Returns
the size of both vectors

Definition at line 1001 of file AnalysisReco.cxx.

void Acclaim::AnalysisReco::chooseAntennasForCoherentlySumming ( int  coherentDeltaPhi)
protected

Generate a set of antennas to use to generate the coherent waveform.

Parameters
coherentDeltaPhiis the number of neighbouring phi-sectors to use.

Definition at line 915 of file AnalysisReco.cxx.

AnalysisWaveform* Acclaim::AnalysisReco::coherentlySum ( const FilteredAnitaEvent fEv,
AnitaPol::AnitaPol_t  pol,
const std::vector< Int_t > &  theAnts,
Double_t  peakPhiDeg,
Double_t  peakThetaDeg,
Double_t *  biggestPeakToPeak = NULL,
double *  forceT0 = NULL 
)

Make a coherently summed waveform for a given polarization, set of antennas in a particular direction.

Parameters
fEvis the FilteredAnitaEvent from which to draw the waveforms to coherently sum
polis the polarisation of the waveforms in the FilteredAnitaEvent
theAntsis the set of antennas to use in the coherent sum
peakPhiDegis the incoming phi-direction in degrees in payload coordinates relative to ADU5 aft-fore
peakThetaDegis the elevation in degrees (theta=0 is horizontal, +ve theta is up) in payload coordinates relative to ADU5 aft-fore
biggestPeakToPeakif non-NULL stores the largest peak-to-peak in the set of channels passed to the function
forceT0if non-NULL forces the newly created analysis waveform to start at a time pointed to (default is NULL)
Returns
pointer to a newly created AnalysisWaveform, produces by coherently summing the parts
AnalysisWaveform* Acclaim::AnalysisReco::coherentlySum ( std::vector< const AnalysisWaveform * > &  waves,
std::vector< Double_t > &  dts,
const double *  forceT0 = NULL 
)

Coherenty sum a set of AnalysisWaveforms with a set of dts.

Parameters
wavesis a set of waveforms to coherently sum
dtsis the set of time offsets (ns) to apply to those waveforms when summing
forceT0if non-NULL forces the newly created analysis waveform to start at a time pointed to (default is NULL)
Returns
a pointer to a newly created AnalysisWaveform, produced by coherently averaging the input waveforms
void Acclaim::AnalysisReco::directionAndAntennasToDeltaTs ( const std::vector< Int_t > &  theAnts,
AnitaPol::AnitaPol_t  pol,
Double_t  peakPhiDeg,
Double_t  peakThetaDeg,
std::vector< double > &  dts 
)

From a list of antennas, get a set of dts relative to the first antenna.

This function modularizes one of the particular steps in making the coherently summed waveforms

Parameters
theAntsare the antenna indices
polis the polarisation
peakPhiDegis the phi angle relative to ADU5 aft-fore (degrees)
peakThetaDegis the theta angle (0 = horizontal, +ve theta is up)
dtsis a vector which gets filled with the time offsets

Definition at line 941 of file AnalysisReco.cxx.

Int_t Acclaim::AnalysisReco::directlyInsertGeometry ( TString  pathToLindasFile,
AnitaPol::AnitaPol_t  pol 
)
static

Directly insert some geometry generated by Linda. !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

Warning
This class overwrites the "extra cable delays" in AnitaEventCalibrator with zero! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! Probably don't use this, or if you do, use with caution.
Parameters
pathToLindasFilepoints to the file containing the antenna positions/cable delays.
polis the polarisation to overwrite.
Returns
1 on error, 0 if successful.

Definition at line 861 of file AnalysisReco.cxx.

void Acclaim::AnalysisReco::drawSummary ( TPad *  wholePad,
AnitaPol::AnitaPol_t  pol 
)

Draw everything interesting onto a TPad.

Having this here greatly simplifies the interface with MagicDisplay

Parameters
padis the pad do draw on if it already exists (makes a new Canvas if passed NULL)
polis the polarization to draw

Definition at line 1121 of file AnalysisReco.cxx.

void Acclaim::AnalysisReco::fillChannelInfo ( const FilteredAnitaEvent fEv,
AnitaEventSummary sum 
)
static

Calculate and fill the numbers for Peng's ChannelInfo object.

Whether or not this actually gets done can be controlled with the fFillChannelInfo setting

See also
SetFillChannelInfo
Parameters
fEvis the filtered event being processed
sumis the pointer to the AnitaEventSummary

Definition at line 326 of file AnalysisReco.cxx.

void Acclaim::AnalysisReco::fillPowerFlags ( const FilteredAnitaEvent fEv,
AnitaEventSummary::EventFlags flags 
)

Fill the power related values in the AnitaEventSummary::EventFlags

Parameters
fEvis a pointer to the FilteredAnitaEvent being processed
flagsis a reference to the appropriat bit of the AnitaEventSummary for the processed event

Definition at line 484 of file AnalysisReco.cxx.

void Acclaim::AnalysisReco::fillWaveformInfo ( AnitaPol::AnitaPol_t  pol,
Int_t  peakInd,
AnitaEventSummary::WaveformInfo info,
const FilteredAnitaEvent fEv,
AnalysisWaveform **  waveStore,
InterferometricMap h,
NoiseMonitor noiseMonitor,
std::vector< double > &  I,
std::vector< double > &  Q,
std::vector< double > &  U,
std::vector< double > &  V 
)
protected

Does the calculations and stores the data for the AnitaEventSummary::WaveformInfo object

Parameters
polis the polarisation
peakIndis the index of the map peak
infois the selected WaveformInfo in the ANITA event summary
fEvis the FilteredAnitaEvent from which we are coherently summing
waveStoreis the internal storage in the AnalysisReco class (used to save a copy for MagicDisplay)
his the InterferometricMap which contains the peak direction in which we want to coherently sum
noiseMonitorContains the min bias RMS values as a function of time, must be non-NULL to fill SNR values

Definition at line 56 of file AnalysisReco.cxx.

AnalysisWaveform * Acclaim::AnalysisReco::getCoherent ( AnitaPol::AnitaPol_t  pol,
Int_t  peakInd = 0,
bool  xPol = false 
)

Coherently summed (un-filtered, un-deconvolved) waveform accessor for external processes. Only works once per event processed as ownership is transferred to the function caller.

Parameters
polis the polarisation
peakIndcorresponds to which peak in the interferometric map (0 is highest up to fNumPeaks)
xPoldirect or cross polarisation compared to pol.
Returns
pointer to the AnalysisWaveform

Definition at line 1594 of file AnalysisReco.cxx.

AnalysisWaveform * Acclaim::AnalysisReco::getCoherentFiltered ( AnitaPol::AnitaPol_t  pol,
Int_t  peakInd = 0,
bool  xPol = false 
)

Coherently summed filtered (un-deconvolved) waveform accessor for external processes. Only works once per event processed as ownership is transferred to the function caller.

Parameters
polis the polarisation
peakIndcorresponds to which peak in the interferometric map (0 is highest up to fNumPeaks)
xPoldirect or cross polarisation compared to pol.
Returns
pointer to the AnalysisWaveform

Definition at line 1587 of file AnalysisReco.cxx.

CrossCorrelator* Acclaim::AnalysisReco::getCrossCorrelator ( )
inline

Get a pointer to the CrossCorrelator, fCrossCorr

Returns
The fCrossCorr pointer

Definition at line 383 of file AnalysisReco.h.

AnalysisWaveform * Acclaim::AnalysisReco::getDeconvolved ( AnitaPol::AnitaPol_t  pol,
Int_t  peakInd = 0,
bool  xPol = false 
)

Coherently summed (un-filtered) deconvolved waveform accessor for external processes. Only works once per event processed as ownership is transferred to the function caller.

Parameters
polis the polarisation
peakIndcorresponds to which peak in the interferometric map (0 is highest up to fNumPeaks)
xPoldirect or cross polarisation compared to pol.
Returns
pointer to the AnalysisWaveform

Definition at line 1602 of file AnalysisReco.cxx.

AnalysisWaveform * Acclaim::AnalysisReco::getDeconvolvedFiltered ( AnitaPol::AnitaPol_t  pol,
Int_t  peakInd = 0,
bool  xPol = false 
)

Coherently summed filtered deconvolved waveform accessor for external processes. Only works once per event processed as ownership is transferred to the function caller.

Parameters
polis the polarisation
peakIndcorresponds to which peak in the interferometric map (0 is highest up to fNumPeaks)
xPoldirect or cross polarisation compared to pol.
Returns
pointer to the AnalysisWaveform

Definition at line 1610 of file AnalysisReco.cxx.

Double_t Acclaim::AnalysisReco::getDeltaTExpected ( AnitaPol::AnitaPol_t  pol,
Int_t  ant1,
Int_t  ant2,
Double_t  phiWave,
Double_t  thetaWave 
) const

Get the expected delay between antenna pairs for a given direction.

This one is used for interferometry

Parameters
polis the polarisation
ant1is the first antenna
ant2is the second antenna
phiWaveis the incoming plane wave direction in radians in payload coordinate relative to ADU5 aft-fore
thetaWaveis the incoming plane wave direction in radians (theta=0 is horizontal, +ve theta is up)
Returns
the expected time difference in nano-seconds

Definition at line 715 of file AnalysisReco.cxx.

Double_t Acclaim::AnalysisReco::getDeltaTExpected ( AnitaPol::AnitaPol_t  pol,
Int_t  ant,
Double_t  phiWave,
Double_t  thetaWave 
) const

Get the expected delay between a single antenna and the center of the payload for a given direction.

This one is used for coherent summing

Parameters
polis the polarisation
antis the antenna
phiWaveis the incoming plane wave direction in radians in payload coordinate relative to ADU5 aft-fore
thetaWaveis the incoming plane wave direction in radians (theta=0 is horizontal, +ve theta is up)
Returns
the expected time difference in nano-seconds

Definition at line 727 of file AnalysisReco.cxx.

Acclaim::AnalysisReco::GetDrawDomain ( ) const
inline

Get the value of fDrawDomain as an integer.

See also
AnalysisSettings

Definition at line 767 of file AnalysisReco.h.

Acclaim::AnalysisReco::GetDrawNPeaks ( ) const
inline

Get the value of fDrawNPeaks.

He we get variables and functions to tweak the GUI options for #DrawSummary

Definition at line 739 of file AnalysisReco.h.

Acclaim::AnalysisReco::GetEnumDrawDomain ( ) const
inline

Get the value of fDrawDomain as AnalysisFlow::selection enum.

See also
AnalysisSettings

Definition at line 767 of file AnalysisReco.h.

FilteredAnitaEvent * Acclaim::AnalysisReco::getEvDeco ( )

Access for internally produced filtered, deconvolved event Only works once per event processed as ownership is transferred to the function caller.

Returns
The deconvolved version of the event

Definition at line 1635 of file AnalysisReco.cxx.

FilteredAnitaEvent * Acclaim::AnalysisReco::getEvMin ( )

Access for internally produce minimally filtered event Only works once per event processed as ownership is transferred to the function caller.

Returns
The minimally filtered version of the event

Definition at line 1619 of file AnalysisReco.cxx.

FilteredAnitaEvent * Acclaim::AnalysisReco::getEvMinDeco ( )

Access for internally produced minimally filtered, deconvolved event Only works once per event processed as ownership is transferred to the function caller.

Returns
The minimally filtered, deconvolved version of the event

Definition at line 1627 of file AnalysisReco.cxx.

Acclaim::InterferometricMap * Acclaim::AnalysisReco::getMap ( AnitaPol::AnitaPol_t  pol)

Get a pointer to the coarsely binned interferometric map stored in memory, once called, you own this InterferometricMap and must delete it.

The InterferometricMap is from the last event passed to process(const FilteredAnitaEvent * ev, AnitaEventSummary * summary, NoiseMonitor* noiseMonitor=NULL, TruthAnitaEvent* truth = NULL) For speed, once this function is called the internal pointer is set to NULL and responsibility for deletion is given to the function caller.

Parameters
polis the polarisation of the map to get.
Returns
the InterferometricMap pointer previously stored in coarseMaps[AnitaPol::kNotAPol]

Definition at line 773 of file AnalysisReco.cxx.

Acclaim::InterferometricMap * Acclaim::AnalysisReco::getZoomMap ( AnitaPol::AnitaPol_t  pol,
UInt_t  peakInd = 0 
)

Get a pointer to a finely binned interferometric map stored in memory, once called, you own this InterferometricMap and must delete it.

The InterferometricMap is from the last event passed to process(const FilteredAnitaEvent * ev, AnitaEventSummary * summary, NoiseMonitor* noiseMonitor=NULL, TruthAnitaEvent* truth = NULL) For speed, once this function is called the internal pointer is set to NULL and responsibility for deletion is given to the function caller.

Parameters
polis the polarisation of the map to get.
peakIndis the index of the finely binned peak, corresponding to the local maximum in the coarsely binned map (see )
Returns
the InterferometricMap pointer previously stored in fineMaps[AnitaPol::kNotAPol][AnitaEventSummary::maxDirectionsPerPol]

Definition at line 784 of file AnalysisReco.cxx.

void Acclaim::AnalysisReco::insertPhotogrammetryGeometry ( )

Inserts the photogrammetry geometry from AnitaGeomTool into this classes copy of the antenna position. !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

Warning
This class overwrites the "extra cable delays" in AnitaEventCalibrator with zero! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! Probably don't use this, or if you do, use with caution.

Definition at line 740 of file AnalysisReco.cxx.

const AnitaEventSummary& Acclaim::AnalysisReco::lastSummary ( )
inline

Get a const reference to the AnitaEventSummary generated from the last event given to process(const FilteredAnitaEvent * ev, AnitaEventSummary * summary, NoiseMonitor* noiseMonitor=NULL, TruthAnitaEvent* truth = NULL)

Returns
a const reference to protected fSummary

Definition at line 390 of file AnalysisReco.h.

const std::vector<int>& Acclaim::AnalysisReco::phiSectorToCoherentAnts ( int  peakPhiSector)
inline

Get a list of antenna indices (in a std::vector) for a coherently averaged waveform based from the phi-sector.

Depending on where the peak in your InterferometricMap lies you will want to use a subset of antennas to make your coherently summed waveform. This function gives you that subset, from the phi sector, which is an index from 0 to #NUM_PHI - 1.

Parameters
peakPhiSectoris the phi-sector index.
Returns
a const reference to the vector of antenna indices.

Definition at line 361 of file AnalysisReco.h.

void Acclaim::AnalysisReco::process ( const FilteredAnitaEvent fEv,
AnitaEventSummary sum,
NoiseMonitor noiseMonitor = NULL,
TruthAnitaEvent truth = NULL 
)

Reconstructs the FilteredAnitaEvent and fills all the reconstruction relative stuff in the passed AnitaEventSummary

Parameters
evis the FilteredAnitaEvent to reconstruct
summaryis the AnitaEventSummary to fill during the recontruction
noiseMonitoris an optional parameter, which points to a NoiseMonitor, which tracks the RMS of MinBias events (used in SNR calculation)
truthis an optional pointer to the TruthAnitaEvent class generated with MC events

Definition at line 346 of file AnalysisReco.cxx.

void Acclaim::AnalysisReco::reconstruct ( AnitaPol::AnitaPol_t  pol,
const Adu5Pat pat = NULL 
)

produce and store the coarsely binned interferometric map, (overwrites coarseMaps)

Parameters
polis the polarisation
patis a pointer to the GPS data

Definition at line 804 of file AnalysisReco.cxx.

void Acclaim::AnalysisReco::reconstructZoom ( AnitaPol::AnitaPol_t  pol,
Int_t  peakIndex,
Double_t  zoomCenterPhiDeg,
Double_t  zoomCenterThetaDeg,
const Adu5Pat pat = NULL 
)

produce and store a finely binned interferometric map, (overwrites fineMaps)

Parameters
polis the polarisation
peakIndexis the index of the coarsely binned maximum (from 0 to fNumPeaks-1)
zoomCenterPhiDegis the centre of the histogram in phi (azimuth, degrees)
zoomCenterThetaDegis the centre of the histogram in theta (elevation, degrees)
patis a pointer to the GPS data for the eventf

Definition at line 827 of file AnalysisReco.cxx.

Double_t Acclaim::AnalysisReco::relativeOffAxisDelay ( AnitaPol::AnitaPol_t  pol,
Int_t  ant1,
Int_t  ant2,
Double_t  phiDeg 
) const

Get the off axis delay between two antennas for a given phi angle.

Parameters
polis the polarisation
ant1is the first antenna
ant2is the second antennas
phiDegis the position in degrees in payload coordinates relative to ADU5 aft-fore
Returns
the relative off axis delay

Definition at line 702 of file AnalysisReco.cxx.

Acclaim::AnalysisReco::SetDrawDomain ( Int_t  val)
inline

Set the value of fDrawDomain from an integer value.

See also
AnalysisSettings

Definition at line 767 of file AnalysisReco.h.

void Acclaim::AnalysisReco::setTriggerInfoFromPeakPhi ( const RawAnitaHeader header,
AnitaPol::AnitaPol_t  pol,
Int_t  peakPhiSector,
AnitaEventSummary::PointingHypothesis peak 
)
static

Calculate and fill the info the AnitaEventSummary relating the compatibility of the hardware trigger and the interferometric peak.

Parameters
headeris the event header
polis the polarization of interest
peakPhiSectoris the phi-sector of the peak in the interferometric map
peakis a reference to the relevant part of the AnitaEventSummary

Definition at line 551 of file AnalysisReco.cxx.

Double_t Acclaim::AnalysisReco::singleAntennaOffAxisDelay ( Double_t  deltaPhiDeg) const

Get the off boresight delay for a single antenna

Parameters
deltaPhiDegis the phi angle from boresight
Returns
the delay

Definition at line 662 of file AnalysisReco.cxx.

void Acclaim::AnalysisReco::wavesInCoherent ( std::vector< const AnalysisWaveform * > &  waves,
std::vector< Double_t > &  dts,
std::vector< TGraphAligned * > &  grs 
)

Generate a new set of TGraphAligned such that the peaks are aligned,.

This is only used for plotting during debugging to make sure everything is working.

Parameters
wavesis a set of waveforms to coherently sum
dtsis the set of time offsets (ns) to apply to those waveforms when summing
grsare the same as the input AnalysisWaveform graphs but time shifted by dts so their peaks are aligned if plotted together. For debugging.
Returns
a newly created AnalysisWaveform, created by coherently summing the input waves

Definition at line 1094 of file AnalysisReco.cxx.

Member Data Documentation

Acclaim::AnalysisReco::fCoherentDeltaPhi
protected

The +/- range of phi-sectors around the map peak phi-sector to use when making a coherently averaged waveform, i.e. antennas from the nearest 1+2*fCoherentDeltaPhi phi-sectors are used.

See also
AnalysisSettings

Definition at line 504 of file AnalysisReco.h.

Acclaim::AnalysisReco::fCoherentDtNs
protected

Time in nano-seconds to interpolate to when coherently averaging waveforms.

See also
AnalysisSettings

Definition at line 584 of file AnalysisReco.h.

Acclaim::AnalysisReco::fDebug
protected

Controls the printing of debug info, feel free to wrap noisy stderr messages with if(fDebug),.

See also
AnalysisSettings

Definition at line 489 of file AnalysisReco.h.

Acclaim::AnalysisReco::fDrawCoherent
protected
See also
AnalysisSettings

Definition at line 784 of file AnalysisReco.h.

Acclaim::AnalysisReco::fDrawDedispersed
protected
See also
AnalysisSettings

Definition at line 801 of file AnalysisReco.h.

Acclaim::AnalysisReco::fDrawDomain
protected

Set as 0 to draw time domain, or 1 to draw frequency domain.

See also
AnalysisSettings

Definition at line 767 of file AnalysisReco.h.

Acclaim::AnalysisReco::fDrawNPeaks
protected

How many peaks to draw in the summary, must be less than or equal to fNumPeaks.

See also
AnalysisSettings

Definition at line 739 of file AnalysisReco.h.

Acclaim::AnalysisReco::fDrawXPol
protected
See also
AnalysisSettings

Definition at line 818 of file AnalysisReco.h.

Acclaim::AnalysisReco::fDrawXPolDedispersed
protected
See also
AnalysisSettings

Definition at line 835 of file AnalysisReco.h.

Acclaim::AnalysisReco::fFillChannelInfo
protected

Whether or not to fill Peng's AnitaEventSummary::ChannelInfo (smaller output files from better compression if you don't)

See also
AnalysisSettings

Definition at line 660 of file AnalysisReco.h.

Acclaim::AnalysisReco::fFillSpectrumInfo
protected

Whether or not to fill the spectrum info (smaller output files from better compression if you don't)

See also
AnalysisSettings

Definition at line 675 of file AnalysisReco.h.

Acclaim::AnalysisReco::fFillUnfiltered
protected

Whether or not to fill the AnitaEventSummary::WaveformInfo objects for the unfiltered versions of the AnalysisWaveforms (smaller output files from better compression if you don't)

See also
AnalysisSettings

Definition at line 690 of file AnalysisReco.h.

Acclaim::AnalysisReco::fInstantaneousStokes
protected

Whether or not to store instantaneous stokes parameters, currently this is only used for plotting.

See also
AnalysisSettings

Definition at line 706 of file AnalysisReco.h.

Acclaim::AnalysisReco::fMeanPowerFlagHighFreqGHz
protected

Frequency at which to stop the mean power calculation.

See also
AnalysisSettings

Definition at line 645 of file AnalysisReco.h.

Acclaim::AnalysisReco::fMeanPowerFlagLowFreqGHz
protected

Frequency at which to start the mean power calculation.

See also
AnalysisSettings

Definition at line 630 of file AnalysisReco.h.

Acclaim::AnalysisReco::fNumPeaks
protected

How many local maxima in the coarsely binned InterferometricMap should we make a finely binned InterferometricMap? (per polarization).

Must be less than or equal to AnitaEventSummary::maxDirectionsPerPol. Default is 3.

See also
AnalysisSettings

Definition at line 569 of file AnalysisReco.h.

Acclaim::AnalysisReco::fResponseNPad
protected

How up to how many samples do we need to pad the antenna response functions?

See also
AnalysisSettings

Definition at line 552 of file AnalysisReco.h.

Acclaim::AnalysisReco::fSlopeFitEndFreqGHz
protected

Frequency at which to stop the linear fit to the power spectrum of the coherently averaged waveforms.

See also
AnalysisSettings

Definition at line 614 of file AnalysisReco.h.

Acclaim::AnalysisReco::fSlopeFitStartFreqGHz
protected

Frequency at which to start the linear fit to the power spectrum of the coherently averaged waveforms.

See also
AnalysisSettings

Definition at line 599 of file AnalysisReco.h.

Acclaim::AnalysisReco::fUseOffAxisDelay
protected

Whether or not to use the derived off-axis delay values when making an InterferometricMap.

See also
AnalysisSettings

Definition at line 536 of file AnalysisReco.h.

Acclaim::AnalysisReco::fWhichResponseDir
protected

Which version of the antenna response to use?

See also
AnalysisSettings

Definition at line 521 of file AnalysisReco.h.


The documentation for this class was generated from the following files: