AerosolZone.cc
Go to the documentation of this file.
1 #include <atm/Atmosphere.h>
2 #include <atm/AerosolZone.h>
3 #include <atm/AttSlice.h>
4 #include <atm/PFSlice.h>
5 #include <utl/ErrorLogger.h>
6 #include <det/Detector.h>
7 
8 #include <boost/lexical_cast.hpp>
9 #include <iostream>
10 
11 using namespace det;
12 using namespace std;
13 using namespace atm;
14 using namespace utl;
15 
16 
17 AerosolZone::AerosolZone(const string& zoneId, const string& aerosolId,
18  const string& zoneName,
19  const double northing, const double easting) :
20  VZone(zoneId, zoneName, northing, easting),
21  fAerosolIdString(aerosolId)
22 {
23  // Find the id for this AerosolZone object.
24  // This is just the primary key in the aerosol_zone table for the
25  // given aerosol_id and zone_id
26  const VManager::IndexMap aerosolZoneSelect({
27  { "aerosol_id", fAerosolIdString },
28  { "zone_id", fZoneIdString }
29  });
30  const VManager& m = Detector::GetInstance().GetAManagerRegister();
31  const VManager::Status stat =
32  m.GetData(fAerosolZoneIdString, "aerosol_zone", "aerosol_zone_id", aerosolZoneSelect);
33  if (stat == VManager::eNotFound)
34  throw DataNotFoundInDBException("aerosol_zone", "aerosol_zone_id", aerosolZoneSelect,
35  boost::lexical_cast<string>(Detector::GetInstance().GetTime()));
36 }
37 
38 
40 {
41  if (fAttSliceVector) {
42  for (const auto p : *fAttSliceVector)
43  delete p;
44  delete fAttSliceVector;
45  }
46 
47  if (fPFSliceVector) {
48  for (const auto p : *fPFSliceVector)
49  delete p;
50  delete fPFSliceVector;
51  }
52 }
53 
54 
57  const
58 {
59  CheckAttSlice();
60  return AttSliceIterator(fAttSliceVector->begin());
61 }
62 
63 
66  const
67 {
68  CheckAttSlice();
69  return AttSliceIterator(fAttSliceVector->end());
70 }
71 
72 
75  const
76 {
77  CheckPFSlice();
78  return PFSliceIterator(fPFSliceVector->begin());
79 }
80 
81 
84  const
85 {
86  CheckPFSlice();
87  return PFSliceIterator(fPFSliceVector->end());
88 }
89 
90 
91 void
93  const
94 {
95  if (!fAttSliceVector)
96  CacheSlices(fAttSliceVector, "aerosol", "attenuation", fAerosolZoneIdString,
97  Detector::GetInstance().GetAManagerRegister().GetManager("AAerosolSQLManager"));
98 }
99 
100 
101 void
103  const
104 {
105  if (!fPFSliceVector)
106  CacheSlices(fPFSliceVector, "aerosol", "phase_func", fAerosolZoneIdString,
107  Detector::GetInstance().GetAManagerRegister().GetManager("AAerosolSQLManager"));
108 }
std::string fAerosolIdString
Definition: AerosolZone.h:71
PFSliceIterator PFSlicesBegin() const
Beginning of the collection of phase function data slices.
Definition: AerosolZone.cc:74
AttSliceIterator AttSlicesBegin() const
Beginning of the collection of Attenuation data slices.
Definition: AerosolZone.cc:56
Interface for detector managers.
Definition: VManager.h:115
virtual ~AerosolZone()
Definition: AerosolZone.cc:39
Exception to use in case requested data not found in the database with detailed printout.
AttSliceIterator AttSlicesEnd() const
End of the collection of Attenuation data slices.
Definition: AerosolZone.cc:65
void CheckPFSlice() const
Definition: AerosolZone.cc:102
Base class for Aerosol, Molecula, Overall Quality and Lidar atmosphere zones.
Definition: VZone.h:28
boost::indirect_iterator< InternalAttSliceIterator, const AttSlice & > AttSliceIterator
AttSlice iterator returns a pointer to the attenuation data slice for this zone.
Definition: AerosolZone.h:43
std::string fAerosolZoneIdString
Definition: AerosolZone.h:72
InternalPFSliceVector * fPFSliceVector
Definition: AerosolZone.h:38
InternalAttSliceVector * fAttSliceVector
Definition: AerosolZone.h:33
std::map< std::string, std::string > IndexMap
Definition: VManager.h:133
boost::indirect_iterator< InternalPFSliceIterator, const PFSlice & > PFSliceIterator
PFSlice Iterator returns a pointer to the phase function data slice for this zone.
Definition: AerosolZone.h:53
constexpr double m
Definition: AugerUnits.h:121
PFSliceIterator PFSlicesEnd() const
End of the collection of phase function data slices.
Definition: AerosolZone.cc:83
std::string fZoneIdString
Definition: VZone.h:51
Status
Specifies success or (eventually) various possible failure modes.
Definition: VManager.h:127
void CheckAttSlice() const
Definition: AerosolZone.cc:92
void CacheSlices(std::vector< const Slice * > *&slices, const std::string &database, const std::string &property, const std::string &zone, const det::VManager &manager) const
Definition: VZone.h:60

, generated on Tue Sep 26 2023.