1 #ifndef _RdStationPolarizationRejector_RdStationPolarizationRejector_h_
2 #define _RdStationPolarizationRejector_RdStationPolarizationRejector_h_
4 #include <fwk/VModule.h>
6 #include <utl/Vector.h>
8 #include <utl/CoordinateSystem.h>
9 #include <utl/RadioGeometryUtilities.h>
46 void GetLocalPolMaxima(
double& pol1,
double& pol2,
const double angleToMagneticField,
double maxChargeExcess);
61 double fMaxChargeExcess30[20] = { 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.45, 0.38, 0.34, 0.32, 0.29,
62 0.21, 0.3, 0.3, 0.3, 0.3, 0.3, 0.3, 0.3, 0.3 };
63 double fMinChargeExcess30[20] = { 0.0, 0.1, 0.1, 0.08, 0.05, 0.02, 0.01, 0.0, 0.0, 0.0, 0.0, 0.0,
64 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 };
65 double fMaxChargeExcess40[20] = { 0.37, 0.37, 0.32, 0.32, 0.33, 0.33, 0.33, 0.35, 0.35, 0.31,
66 0.31, 0.28, 0.25, 0.3, 0.3, 0.3, 0.3, 0.3, 0.3, 0.3 };
67 double fMinChargeExcess40[20] = { 0.0, 0.09, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.05, 0.05, 0.05, 0.0,
68 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 };
69 double fMaxChargeExcess50[20] = { 0.25, 0.25, 0.25, 0.25, 0.26, 0.3, 0.3, 0.35, 0.35, 0.33, 0.33,
70 0.32, 0.32, 0.24, 0.24, 0.23, 0.22, 0.22, 0.22, 0.22 };
71 double fMinChargeExcess50[20] = { 0.0, 0.0, 0.0, 0.0, 0.05, 0.05, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1,
72 0.1, 0.05, 0.05, 0.0, 0.0, 0.0, 0.0, 0.0 };
73 double fMaxChargeExcess60[20] = { 0.03, 0.03, 0.05, 0.08, 0.1, 0.12, 0.13, 0.15, 0.17, 0.18, 0.19,
74 0.2, 0.2, 0.2, 0.21, 0.21, 0.22, 0.22, 0.21, 0.21 };
75 double fMinChargeExcess60[20] = { 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
76 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 };
82 double& rotationAngleInVxB,
const utl::Point& semiMajorAxis,
90 const TVector3& semiMinorAxisVxB,
const double rotationAngle);
93 const TVector3& stationPositionvxBvxvxB,
const TVector3& semiMajorAxisVxB,
94 const TVector3& semiMinorAxisVxB,
const double rotationAngle);
96 double GetTangentPol(
const TVector3& stationPositionvxBvxvxB,
const TVector3& tangentPoint,
97 const double chargeExcess,
const double angleToMagneticField);
103 const double noiseVxB,
const double noiseVxVxB);
105 double GetMaxChargeExcess(
const double zenith,
const double distToAxis,
const double semiMajorAxisLength);
106 double GetMinChargeExcess(
const double zenith,
const double distToAxis,
const double semiMajorAxisLength);
108 bool CheckZenith(
const double zenith,
const double azimuth);
double fMaxChargeExcess60[20]
bool fConstantChargeExcess
double GetPolAngleUncertainty(const double signalToNoise, const TVector3 efield, const double noiseVxB, const double noiseVxVxB)
double fMaxChargeExcess50[20]
TVector3 GetEfieldInShowerPlane(const utl::Vector &efield, const utl::CoordinateSystemPtr &cs, const utl::RadioGeometryUtilities &rdGeometryUtilities)
void GetCovarianceMatrix(const evt::Event &event, double covarianceMatrix[3], const evt::ShowerRRecData &rShower, const utl::CoordinateSystemPtr &cs)
void GetCoreErrorEllipse(utl::Point &semiMajorAxis, utl::Point &semiMinorAxis, const utl::Point &corePosition, const double covarianceMatrix[3], const utl::CoordinateSystemPtr &cs)
void GetErrorEllipseTangentPoints(TVector3 &ellipseTangentPoint1, TVector3 &ellipseTangentPoint2, const TVector3 &stationPositionvxBvxvxB, const TVector3 &semiMajorAxisVxB, const TVector3 &semiMinorAxisVxB, const double rotationAngle)
Interface class to access to the RD Reconstruction of a Shower.
bool CheckZenith(const double zenith, const double azimuth)
void SetProbability(double prob)
double GetMinChargeExcess(const double zenith, const double distToAxis, const double semiMajorAxisLength)
double fMinChargeExcess50[20]
double fMinChargeExcess40[20]
REGISTER_MODULE("RdStationPolarizationRejector", RdStationPolarizationRejector)
boost::shared_ptr< const CoordinateTransformer > CoordinateSystemPtr
Shared pointer for coordinate systems.
fwk::VModule::ResultFlag Init() override
Initialize: invoked at beginning of run (NOT beginning of event)
fwk::VModule::ResultFlag Finish() override
Finish: invoked at end of the run (NOT end of the event)
double GetMaxChargeExcess(const double zenith, const double distToAxis, const double semiMajorAxisLength)
void GetLocalPolMaxima(double &pol1, double &pol2, const double angleToMagneticField, double maxChargeExcess)
double fMinChargeExcess60[20]
void SetMaxChargeExcess(double aMax)
void GetCoreErrorEllipsevxBvxvxB(TVector3 &semiMajorAxisvxBvxvxB, TVector3 &semiMinorAxisvxBvxvxB, double &rotationAngleInVxB, const utl::Point &semiMajorAxis, const utl::Point &semiMinorAxis, const utl::Point &corePosition, const utl::RadioGeometryUtilities &rdGeometryUtilities)
double GetTangentPol(const TVector3 &stationPositionvxBvxvxB, const TVector3 &tangentPoint, const double chargeExcess, const double angleToMagneticField)
ResultFlag
Flag returned by module methods to the RunController.
TVector3 GetStationPositionvxBvxvxB(const utl::Point stationPosition, const utl::Point &corePosition, const utl::RadioGeometryUtilities &)
bool IsStationInErrorEllipse(const TVector3 &stationPositionvxBvxvxB, const TVector3 &semiMajorAxisVxB, const TVector3 &semiMinorAxisVxB, const double rotationAngle)
double fMaxChargeExcess30[20]
fwk::VModule::ResultFlag Run(evt::Event &event) override
Run: invoked once per event.
double fMinChargeExcess30[20]
double fMaxChargeExcess40[20]
void SetMinChargeExcess(double aMin)