RdStationSignalInterpolator.h
Go to the documentation of this file.
1 #ifndef _RdStationSignalInterpolator_RdStationSignalInterpolator_h_
2 #define _RdStationSignalInterpolator_RdStationSignalInterpolator_h_
3 
4 #include <fwk/VModule.h>
5 #include <vector>
6 #include <complex>
7 #include <map>
8 #include <string>
9 #include <utl/CoordinateSystem.h>
10 #include <utl/ParameterStorage.h>
11 #include <utl/TimeStamp.h>
12 #include <utl/Point.h>
13 #include <utl/FFTDataContainer.h>
14 #include <evt/SimRadioPulse.h>
15 #include <evt/RadioSimulation.h>
16 #include <evt/ShowerRRecDataQuantities.h>
17 #include <revt/Station.h>
18 #include <revt/StationRecData.h>
19 #include <revt/Channel.h>
20 #include <rdet/RDetector.h>
21 
22 
23 namespace evt {
24  class Event;
25 }
26 
28 
43  public:
44  StarShapeEntry(const double distance, const double azimuth, const int statID)
45  : fDistanceFromShowerAxis(distance), fObserverAzimuthAngle(azimuth), fStationID(statID) { }
46 
47  bool
49  const
50  { // sort by azimuth, then by radius in the shower plane
51  if (fabs(fObserverAzimuthAngle - rhs.fObserverAzimuthAngle) > 1e-3)
53  else
55  }
56 
59  int fStationID = 0;
60  };
61 
62 
64  public:
67 
68  fwk::VModule::ResultFlag Init() override;
69  fwk::VModule::ResultFlag Run(evt::Event& event) override;
71 
72  private:
73  double PolarDistance(const double r1, const double phi1, const double r2, const double phi2);
74 
75  double
76  LagrangianFactorCubic(const double X,
77  const double x1, const double x2, const double x3 ,const double x4,
78  const double v1, const double v2, const double v3, const double v4);
79 
80  std::vector<double>
81  NearestNeighbourInterpolation(const double radius, const double azimuth,
82  const std::set<double>& AzimuthListStarShape,
83  const std::vector<StarShapeEntry>& StarShapeList,
84  const std::vector<revt::StationRRecDataQuantities>& eNumNames,
85  revt::REvent& rEvent, const bool errors);
86 
87  std::vector<double>
88  BilinearInterpolation(const double radius, const double azimuth,
89  const std::set<double>& AzimuthListStarShape,
90  const std::vector<StarShapeEntry>& StarShapeList,
91  const std::vector<revt::StationRRecDataQuantities>& eNumNames,
92  revt::REvent& rEvent, const bool errors);
93 
94  std::vector<double>
95  BicubicInterpolation(const double radius, const double azimuth,
96  const std::set<double>& AzimuthListStarShape,
97  const std::vector<StarShapeEntry>& StarShapeList,
98  const std::vector<revt::StationRRecDataQuantities>& eNumNames,
99  revt::REvent& rEvent, const bool errors);
100 
101  std::vector<int>
102  FindIndexOfSurroundingNN(const double x_coord, const double y_coord,
103  const std::set<double>& AzimuthListStarShape,
104  const std::vector<StarShapeEntry>& StarShapeList);
105 
106  std::vector<StarShapeEntry>
107  SortForInterpolation(const std::vector<StarShapeEntry>& StarShapeList);
108 
109  void MoveItemToBack(std::vector<StarShapeEntry>& v, const size_t itemIndex);
110 
111  double fMinimumEnergy = 0;
112  bool fUseEarlyLate = false;
115 
117  eNN = 0,
120  };
121 
122  REGISTER_MODULE("RdStationSignalInterpolator", RdStationSignalInterpolator);
123 
124  };
125 
126 }
127 
128 
129 #endif
bool operator<(const StarShapeEntry &rhs) const
Interface class to access to the Radio part of an event.
Definition: REvent.h:42
std::vector< double > BicubicInterpolation(const double radius, const double azimuth, const std::set< double > &AzimuthListStarShape, const std::vector< StarShapeEntry > &StarShapeList, const std::vector< revt::StationRRecDataQuantities > &eNumNames, revt::REvent &rEvent, const bool errors)
std::vector< double > NearestNeighbourInterpolation(const double radius, const double azimuth, const std::set< double > &AzimuthListStarShape, const std::vector< StarShapeEntry > &StarShapeList, const std::vector< revt::StationRRecDataQuantities > &eNumNames, revt::REvent &rEvent, const bool errors)
fwk::VModule::ResultFlag Run(evt::Event &event) override
Run: invoked once per event.
REGISTER_MODULE("RdStationSignalInterpolator", RdStationSignalInterpolator)
double LagrangianFactorCubic(const double X, const double x1, const double x2, const double x3, const double x4, const double v1, const double v2, const double v3, const double v4)
fwk::VModule::ResultFlag Init() override
Initialize: invoked at beginning of run (NOT beginning of event)
std::vector< StarShapeEntry > SortForInterpolation(const std::vector< StarShapeEntry > &StarShapeList)
StarShapeEntry(const double distance, const double azimuth, const int statID)
Module interface.
Definition: VModule.h:53
double PolarDistance(const double r1, const double phi1, const double r2, const double phi2)
ResultFlag
Flag returned by module methods to the RunController.
Definition: VModule.h:60
std::vector< int > FindIndexOfSurroundingNN(const double x_coord, const double y_coord, const std::set< double > &AzimuthListStarShape, const std::vector< StarShapeEntry > &StarShapeList)
std::vector< double > BilinearInterpolation(const double radius, const double azimuth, const std::set< double > &AzimuthListStarShape, const std::vector< StarShapeEntry > &StarShapeList, const std::vector< revt::StationRRecDataQuantities > &eNumNames, revt::REvent &rEvent, const bool errors)
fwk::VModule::ResultFlag Finish() override
Finish: invoked at end of the run (NOT end of the event)
void MoveItemToBack(std::vector< StarShapeEntry > &v, const size_t itemIndex)

, generated on Tue Sep 26 2023.