1 #ifndef _RdPolarizationReconstructor_h_
2 #define _RdPolarizationReconstructor_h_
4 #include <tls/MuonProfile.h>
5 #include <tls/MuonProfileUtilities.h>
6 #include <fwk/VModule.h>
7 #include <revt/Station.h>
8 #include <revt/StationRecData.h>
9 #include <revt/Channel.h>
10 #include <utl/ParameterStorage.h>
11 #include <rdet/RDetector.h>
12 #include <utl/AxialVector.h>
13 #include <utl/GeometryUtilities.h>
15 #include <boost/numeric/ublas/vector.hpp>
16 #include <boost/numeric/ublas/vector_proxy.hpp>
37 typedef boost::numeric::ublas::vector<Complex>
BoostVecC;
39 typedef boost::numeric::ublas::vector<double>
BoostVecD;
188 double& alpha)
const;
196 double& chxfraction);
Complex GetIndex(char channel, int index) const
double AnalyticMethodOneChannelVarianceHelper(char channel)
void GetRotatedPolarizationTraces(const evt::Event &event, const revt::Station &station, const rdet::RDetector &rDetector, const utl::TraceV3C &stationTimeSeries, BoostVecC &traceX, BoostVecC &traceY, double &observerAngle, double &alpha) const
double fSignalWindowStopOverride
boost::numeric::ublas::vector< double > BoostVecD
RawStokesParameters fNoise
void CalculateAndFillStokesParameters(revt::Station &station, BoostVecC &traceX, BoostVecC &traceY, double observerAngle, double alpha)
void NoiseAdditionCovariancePolarizationAngleHelper(double &angle, double origval) const
double GetRawStokesI() const
SampleCovariancesT sampleCovariances
double GetStokesV() const
const Complex I(0.0, 1.0)
double GetNoiseAdditionCovariance(const revt::StationRRecDataQuantities, revt::StationRRecDataQuantities)
double GetRawStokesV() const
OneChannelPulseVariancesT oneChannelPulseVariances
double GetPolarizationAngle() const
RdPolarizationReconstructor()
bool fQuadraticNoiseSubtraction
fwk::VModule::ResultFlag Run(evt::Event &event) override
Run: invoked once per event.
double GetAnalyticMethodVariance(const revt::StationRRecDataQuantities)
double pow(const double x, const unsigned int i)
double GetStokesRatioQdivI() const
double GetRawStokesQ() const
BoostVecRangeC GetSliceX(SizeT pos, SizeT size)
double GetStokesQ() const
Detector description interface for RDetector-related data.
std::string fErrorCalculationType
double GetStokesRatioVdivI() const
boost::shared_ptr< const CoordinateTransformer > CoordinateSystemPtr
Shared pointer for coordinate systems.
std::map< std::pair< char, char >, BoostVecC > SampleCovariancesT
utl::Point GetCore(const evt::Event &event) const
std::complex< double > Complex
void GetCoreXY(const evt::Event &event, const utl::CoordinateSystemPtr &CS, double &CoreX, double &CoreY) const
class to hold data at the radio Station level.
double GetRawStokesU() const
std::vector< T >::size_type SizeType
utl::Vector GetPerpVector(const utl::Point &point, const utl::Line &line) const
boost::numeric::ublas::vector< Complex > BoostVecC
RawStokesParameters fSignal
Determines the observables related to polarization determined by the electric field, the geomagnetic field and the shower geometry.
void CalculateAndFillChargeExcessFraction(revt::Station &station, double &alpha, double &chxfraction)
RawStokesParameters(const T &slice_x, const T &slice_y)
std::map< char, double > OneChannelPulseVariancesT
double fSignalWindowStartOverride
void NoiseAdditionCovarianceHelper(BoostVecD &quanities, const revt::StationRRecDataQuantities quantity_enum, const StokesParameters &sliding_stokes, SizeT index)
utl::Vector GetArrivalDirection(const evt::Event &event) const
Complex AnalyticMethodSampleCovarianceHelper(char channel1, char channel2, SizeT index)
void CheckSignalAndNoiseRanges(SizeT signal_start_bin, SizeT signal_stop_bin, SizeT noise_start_bin, SizeT noise_stop_bin, SizeT size) const
utl::CoordinateSystemPtr GetCS(const evt::Event &event) const
ResultFlag
Flag returned by module methods to the RunController.
utl::TraceV3C::SizeType SizeT
StokesParameters(const BoostVecRangeC &signal_x, const BoostVecRangeC &signal_y, const BoostVecRangeC &noise_x, const BoostVecRangeC &noise_y, bool subtract_noise)
int fProjectOntoGroundPlane
Template class for a FADC data or calibrated data container. Use the typedefs (TraceD, TraceI, etc.) defined in Trace-fwd.h.
boost::numeric::ublas::vector_range< BoostVecC > BoostVecRangeC
double GetStokesRatioUdivI() const
fwk::VModule::ResultFlag Finish() override
Finish: invoked at end of the run (NOT end of the event)
~RdPolarizationReconstructor() override
double fNoiseWindowStartOverride
double GetStokesI() const
fwk::VModule::ResultFlag Init() override
Initialize: invoked at beginning of run (NOT beginning of event)
REGISTER_MODULE("RdPolarizationReconstructor", RdPolarizationReconstructor)
std::string fGeometrySource
double fNoiseWindowStopOverride
BoostVecRangeC GetSliceY(SizeT pos, SizeT size)
double GetStokesU() const
bool fAssumeGroundPlaneIsHorizontalAndFlat