ShowerFRecData.h
Go to the documentation of this file.
1 #ifndef _evt_ShowerFRecData_h_
2 #define _evt_ShowerFRecData_h_
3 
4 #include <utl/ShadowPtr.h>
5 #include <utl/LameShadowPtr_fwd.h>
6 #include <utl/Vector.h>
7 #include <utl/Point.h>
8 #include <utl/TimeStamp.h>
9 #include <utl/TimeInterval.h>
10 #include <utl/TabulatedFunction.h>
11 #include <utl/TabulatedFunctionErrors.h>
12 #include <evt/VGaisserHillasParameter.h>
13 #include <evt/MultipleGaisserHillasParameters.h>
14 
15 #include <vector>
16 #include <map>
17 
18 
19 namespace fevt {
20  class EyeRecData;
21 }
22 
23 namespace evt {
24 
25  class ShowerRecData;
26 
27 
37 
38  public:
41  eTotal = 0,
44  };
45 
46  typedef std::map<EUncertaintyType, double> UncertaintyMap;
47  typedef UncertaintyMap::const_iterator UncertaintyMapConstIterator;
48 
49  public:
50  bool HasLongitudinalProfile() const { return bool(fLongitudinalProfile); }
53  { return *fLongitudinalProfile; }
55  { return *fLongitudinalProfile; }
57 
58  bool HasFluorescencePhotons() const { return bool(fFluorescencePhotons); }
61  { return *fFluorescencePhotons; }
63  { return *fFluorescencePhotons; }
65 
66  bool HasCherenkovPhotons() const { return bool(fCherenkovPhotons); }
69  { return *fCherenkovPhotons; }
71  { return *fCherenkovPhotons; }
72  void MakeCherenkovPhotons();
73 
74  template<class T>
75  bool HasGHParameters() const { return (bool(fGHParameters) && dynamic_cast<const T*>(fGHParameters.Get())); }
76  template<class T>
77  T& GetGHParameters() { return *dynamic_cast<T*>(fGHParameters.Get()); }
78  template<class T>
79  const T& GetGHParameters() const { return *dynamic_cast<const T*>(fGHParameters.Get()); }
80 
81  bool HasGHParameters() const { return bool(fGHParameters); }
84  { return *fGHParameters; }
86  { return *fGHParameters; }
88 
94  void MakeMultipleGHParameters(const std::vector<double>& dgh);
95 
96  bool HasEnergyDeposit() const { return bool(fEnergyDeposit); }
99  { return *fEnergyDeposit; }
101  { return *fEnergyDeposit; }
102  void MakeEnergyDeposit();
103 
104  void SetEmEnergy(const double energy, const double energyError,
105  const EUncertaintyType type = eTotal )
106  { fEmEnergy = energy; fEmEnergyError[type] = energyError; }
107  void SetEmEnergyError(const double energyError, const EUncertaintyType type )
108  { fEmEnergyError[type] = energyError; }
109 
110  void SetTotalEnergy(const double energy, const double energyError,
111  const EUncertaintyType type = eTotal )
112  { fTotalEnergy = energy; fTotalEnergyError[type] = energyError; }
113  void SetTotalEnergyError(const double energyError, const EUncertaintyType type)
114  { fTotalEnergyError[type] = energyError; }
115 
116  void SetXmaxError(const double xmaxError, const EUncertaintyType type)
117  { fXmaxError[type] = xmaxError; }
118 
119  void SetEnergyCutoff(const double energy) { fEnergyCutoff = energy; }
120 
122  void AddStationId(const unsigned short int id) { fStationIds.push_back(id); }
123 
125  double GetEmEnergy() const { return fEmEnergy; }
126  double GetEmEnergyError(const EUncertaintyType type = eTotal) const;
128  { return fEmEnergyError.begin(); }
130  { return fEmEnergyError.end(); }
131  bool HasEmEnergyError(const EUncertaintyType type = eTotal) const;
132 
134  double GetTotalEnergy() const { return fTotalEnergy; }
135  double GetTotalEnergyError(const EUncertaintyType type = eTotal) const;
137  { return fTotalEnergyError.begin(); }
139  { return fTotalEnergyError.end(); }
140  bool HasTotalEnergyError(const EUncertaintyType type = eTotal) const;
141 
143  double GetXmaxError(const EUncertaintyType type = eTotal) const;
145  { return fXmaxError.begin(); }
147  { return fXmaxError.end(); }
148  bool HasXmaxError(const EUncertaintyType type = eTotal) const;
149 
151  double GetEnergyCutoff() const { return fEnergyCutoff; }
152 
154  std::vector<unsigned short int>& GetStationIds() { return fStationIds; }
155  const std::vector<unsigned short int>& GetStationIds() const { return fStationIds; }
156 
157  void SetSDTimeResidual(const double time) { fSDTimeResidual = time; }
158  double GetSDTimeResidual() const { return fSDTimeResidual; }
159 
161  const utl::Vector& GetAxis() const { return fAxis; }
162 
164  const utl::Vector& GetAxisError() const { return fAxisError; }
165 
167  const utl::Point& GetCorePosition() const { return fCore; }
168 
170  const utl::Vector& GetCoreError() const { return fCoreError; }
171 
173  const utl::TimeStamp& GetCoreTime() const { return fCoreTime; }
175 
177  double GetCorrelationXY() const { return fCorrelationXY; }
178 
180  double GetCorrelationThetaPhi() const { return fCorrelationThetaPhi; }
181 
183  utl::Point CalculatePointOnShower(const utl::TimeStamp& timeAtTelescope,
184  const utl::Point& telescopePosition) const;
185 
186  void SetCoreTime(const utl::TimeStamp& coreTime,
187  const utl::TimeInterval& coreTimeErr)
188  { fCoreTime = coreTime; fCoreTimeError = coreTimeErr; }
189  void SetCoreTime(const utl::TimeStamp& eyeTriggerTime,
190  const double rp, const double chi0, const double t0);
191  void SetAxis(const utl::Vector& axis) { fAxis = axis; }
192  void SetAxisError(const utl::Vector& axis_er) { fAxisError = axis_er; }
193  void SetCorePosition(const utl::Point& core) { fCore = core; }
194  void SetCoreError(const utl::Vector& core_er) { fCoreError = core_er; }
195  void SetCorrelationXY(const double corr) { fCorrelationXY = corr; }
196  void SetCorrelationThetaPhi(const double corr) { fCorrelationThetaPhi = corr; }
197 
198  private:
199  ShowerFRecData();
201 
207 
208  double fEmEnergy;
209  double fTotalEnergy;
213 
215 
221 
224 
227 
228  std::vector<unsigned short int> fStationIds;
229 
231 
232  friend class evt::ShowerRecData;
233  friend class fevt::EyeRecData;
235 
236  };
237 
238 }
239 
240 
241 #endif
const utl::Vector & GetCoreError() const
Shower core as reconstructed by the FD or FD eye.
bool HasEmEnergyError(const EUncertaintyType type=eTotal) const
void SetCorrelationXY(const double corr)
bool HasTotalEnergyError(const EUncertaintyType type=eTotal) const
void SetCoreError(const utl::Vector &core_er)
Point object.
Definition: Point.h:32
utl::ShadowPtr< utl::TabulatedFunction > fCherenkovPhotons
utl::Point CalculatePointOnShower(const utl::TimeStamp &timeAtTelescope, const utl::Point &telescopePosition) const
point on shower corresponding to a certain light arrival time at telescope
bool HasMultipleGHParameters() const
bool HasFluorescencePhotons() const
const T & GetGHParameters() const
Interface class to access Shower Reconstructed parameters.
Definition: ShowerRecData.h:33
void SetEmEnergyError(const double energyError, const EUncertaintyType type)
double GetTotalEnergy() const
retrieve total energy and its uncertainty
const evt::VGaisserHillasParameter & GetGHParameters() const
void SetSDTimeResidual(const double time)
bool HasGHParameters() const
Class to hold collection (x,y) points and provide interpolation between them.
utl::TabulatedFunction & GetCherenkovPhotons()
retrieve number of Cerenkov photons versus depth
Class to access parameters that were fitted by more than one Gaisser-Hillas function.
std::vector< unsigned short int > & GetStationIds()
retrieve vector of station IDs used in hybrid fit
double GetCorrelationXY() const
core xy correlation (MU: in which coordinate system???)
void SetCorePosition(const utl::Point &core)
UncertaintyMapConstIterator GetEmEnergyErrorsEnd() const
void SetTotalEnergyError(const double energyError, const EUncertaintyType type)
void MakeMultipleGHParameters(const std::vector< double > &dgh)
utl::ShadowPtr< utl::TabulatedFunctionErrors > fFluorescencePhotons
UncertaintyMap fTotalEnergyError
const evt::MultipleGaisserHillasParameters & GetMultipleGHParameters() const
utl::ShadowPtr< utl::TabulatedFunctionErrors > fLongitudinalProfile
const utl::Vector & GetAxisError() const
Error on shower axis.
void SetAxisError(const utl::Vector &axis_er)
double GetCorrelationThetaPhi() const
axis theta/phi correlation (MU: in which coordinate system???)
A TimeStamp holds GPS second and nanosecond for some event.
Definition: TimeStamp.h:110
evt::VGaisserHillasParameter & GetGHParameters()
retrieve Gasser-Hillas parameters
utl::Vector fAxisError
utl::ShadowPtr< evt::VGaisserHillasParameter > fGHParameters
const utl::TabulatedFunction & GetCherenkovPhotons() const
UncertaintyMapConstIterator GetXmaxErrorsBegin() const
UncertaintyMapConstIterator GetTotalEnergyErrorsBegin() const
UncertaintyMapConstIterator GetEmEnergyErrorsBegin() const
bool HasLongitudinalProfile() const
UncertaintyMap fXmaxError
void SetCoreTime(const utl::TimeStamp &coreTime, const utl::TimeInterval &coreTimeErr)
double GetXmaxError(const EUncertaintyType type=eTotal) const
retrieve Xmax uncertainties
void SetAxis(const utl::Vector &axis)
void SetCorrelationThetaPhi(const double corr)
evt::MultipleGaisserHillasParameters & GetMultipleGHParameters()
evt::MultipleGaisserHillasParameters fMultipleGHParameters
utl::TimeStamp fCoreTime
double GetTotalEnergyError(const EUncertaintyType type=eTotal) const
std::vector< unsigned short int > fStationIds
double GetEmEnergy() const
retrieve electromagnetic energy and its uncertainty
UncertaintyMap fEmEnergyError
void SetEmEnergy(const double energy, const double energyError, const EUncertaintyType type=eTotal)
Eye-specific shower reconstruction data.
Definition: EyeRecData.h:65
const utl::TimeInterval & GetCoreTimeError() const
double GetEmEnergyError(const EUncertaintyType type=eTotal) const
utl::TimeInterval fCoreTimeError
bool HasCherenkovPhotons() const
const utl::TabulatedFunctionErrors & GetEnergyDeposit() const
UncertaintyMapConstIterator GetTotalEnergyErrorsEnd() const
bool HasGHParameters() const
A TimeInterval is used to represent time elapsed between two events.
Definition: TimeInterval.h:43
void SetEnergyCutoff(const double energy)
UncertaintyMapConstIterator GetXmaxErrorsEnd() const
utl::TabulatedFunctionErrors & GetLongitudinalProfile()
retrieve longitudinal profile information (size vs depth)
UncertaintyMap::const_iterator UncertaintyMapConstIterator
utl::TabulatedFunctionErrors & GetFluorescencePhotons()
retrieve number of fluorescence photons versus depth
bool HasXmaxError(const EUncertaintyType type=eTotal) const
utl::ShadowPtr< utl::TabulatedFunctionErrors > fEnergyDeposit
void SetXmaxError(const double xmaxError, const EUncertaintyType type)
Interface class for access to the Gaisser-Hillas parameters.
Vector object.
Definition: Vector.h:30
Interface class to access to Fluorescence reconstruction of a Shower.
const utl::TabulatedFunctionErrors & GetFluorescencePhotons() const
void SetTotalEnergy(const double energy, const double energyError, const EUncertaintyType type=eTotal)
void MakeGHParameters(const VGaisserHillasParameter &gh)
const utl::TabulatedFunctionErrors & GetLongitudinalProfile() const
const utl::Point & GetCorePosition() const
Shower core as reconstructed by the FD or FD eye.
utl::Vector fCoreError
double GetEnergyCutoff() const
retrieve energy cutoff for which the profile of charged particles was calculated. ...
bool HasEnergyDeposit() const
const std::vector< unsigned short int > & GetStationIds() const
std::map< EUncertaintyType, double > UncertaintyMap
EUncertaintyType
profile reconstruction uncertainty types
const utl::TimeStamp & GetCoreTime() const
time when shower front passes through the core point
utl::TabulatedFunctionErrors & GetEnergyDeposit()
retrieve dE/dX
void AddStationId(const unsigned short int id)
add a station id to the list of used hybrid stations
double GetSDTimeResidual() const
const utl::Vector & GetAxis() const
Shower Axis as reconstructed by the FD or FD eye.

, generated on Tue Sep 26 2023.