HOPS
HOPS class reference
MHO_ScanDataStore.hh
Go to the documentation of this file.
1 #ifndef MHO_ScanDataStore_HH__
2 #define MHO_ScanDataStore_HH__
3 
4 //global messaging util
5 #include "MHO_Message.hh"
6 
7 //handles reading directories, listing files etc.
9 
10 //needed to read hops files and extract objects
14 #include "MHO_ContainerStore.hh"
15 
16 namespace hops
17 {
18 
28 {
29  public:
31  virtual ~MHO_ScanDataStore();
32 
38  void SetDirectory(std::string dir) { fDirectory = dir; };
39 
45  bool Initialize(); //load the directory
46 
52  bool IsValid(); //scan dir contains root file, and data
53 
60  bool IsBaselinePresent(std::string bl) const; //check if a particular baseline is present in this scan
61 
69  bool IsStationPresent(std::string st) const; //check if a particular station is present
70 
77  bool IsFringePresent(std::string basename) const; //check if a fringe file is present
78 
84  std::size_t GetNBaselines() { return fBaselineCodes.size(); };
85 
91  std::size_t GetNStations() { return fStationCodes.size(); };
92 
98  std::size_t GetNFringes() { return fFringeCodes.size(); };
99 
105  std::vector< std::string > GetBaselinesPresent() const { return fBaselineCodes; }
106 
112  std::vector< std::string > GetStationsPresent() const { return fStationCodes; }
113 
119  std::vector< std::string > GetFringesPresent() const { return fFringeCodes; }
120 
126  mho_json GetRootFileData() const;
127 
133  std::string GetRootFileBasename() { return fDirInterface.GetBasename(fRootFileName); }
134 
135  //true if loaded, false if unsuccessful
143  bool LoadBaseline(std::string baseline, MHO_ContainerStore* store);
144 
151  std::string GetBaselineFilename(std::string baseline) const;
152 
153 
154  //true if loaded, false if unsuccessful
162  bool LoadStation(std::string station, MHO_ContainerStore* store);
163 
170  std::string GetStationFilename(std::string station) const;
171 
172  //true if loaded, false if unsuccessful
173  bool LoadFringe(std::string fringe_basename, MHO_ContainerStore* store);
174  std::string GetFringeFilename(std::string fringe_basename) const;
175 
176  //deletes all loaded containers and resets the state for another scan.
177  void Clear();
178 
179  private:
180  void DetermineRootFile();
181  void MapBaselines();
182  void MapStations();
183  void MapFringes();
184 
185  std::string fDirectory;
186 
187  //directory file lists
188  MHO_DirectoryInterface fDirInterface;
189  std::vector< std::string > fAllFiles;
190  std::vector< std::string > fCorFiles;
191  std::vector< std::string > fStaFiles;
192  std::vector< std::string > fJSONFiles;
193  std::vector< std::string > fFringeFiles;
194 
195  std::string fRootFileName;
196  mho_json fRootFileData;
197 
198  //map baseline 2-char code to filename (cor file)
199  std::vector< std::string > fBaselineCodes;
200  std::map< std::string, std::string > fBaselineFileMap;
201  std::map< std::string, MHO_ContainerStore* > fActiveBaselineContainers;
202 
203  //map station 1-char (mk4 id) code to filename
204  std::vector< std::string > fStationCodes;
205  std::map< std::string, std::string > fStationFileMap;
206  std::map< std::string, MHO_ContainerStore* > fActiveStationContainers;
207 
208  //map fringe file basename to filename
209  std::vector< std::string > fFringeCodes;
210  std::map< std::string, std::string > fFringeFileMap;
211  std::map< std::string, MHO_ContainerStore* > fActiveFringeContainers;
212 };
213 
214 } // namespace hops
215 
216 #endif
nlohmann::json mho_json
Definition: MHO_JSONHeaderWrapper.hh:5
Class MHO_ContainerStore.
Definition: MHO_ContainerStore.hh:32
Class MHO_DirectoryInterface.
Definition: MHO_DirectoryInterface.hh:24
static std::string GetBasename(const std::string &filename)
gets the file name from a path to a file
Definition: MHO_DirectoryInterface.cc:245
Class to catalog and organize data files that are associated with a single scan, and handle retrieval...
Definition: MHO_ScanDataStore.hh:28
bool LoadFringe(std::string fringe_basename, MHO_ContainerStore *store)
Definition: MHO_ScanDataStore.cc:261
bool IsValid()
Checks if root file and baseline/station files exist for valid data processing.
Definition: MHO_ScanDataStore.cc:43
void Clear()
Definition: MHO_ScanDataStore.cc:293
std::size_t GetNStations()
Getter for number of stations.
Definition: MHO_ScanDataStore.hh:91
mho_json GetRootFileData() const
Getter for root file data (as json)
Definition: MHO_ScanDataStore.cc:181
bool LoadBaseline(std::string baseline, MHO_ContainerStore *store)
Loads baseline data into a store from a file mapped to the given baseline.
Definition: MHO_ScanDataStore.cc:196
std::string GetFringeFilename(std::string fringe_basename) const
Definition: MHO_ScanDataStore.cc:280
bool IsBaselinePresent(std::string bl) const
Checks if a baseline code is present in the internal list.
Definition: MHO_ScanDataStore.cc:75
bool IsStationPresent(std::string st) const
Checks if a station is present in the list of station codes.
Definition: MHO_ScanDataStore.cc:87
bool LoadStation(std::string station, MHO_ContainerStore *store)
Loads station data into a container store if found in the map.
Definition: MHO_ScanDataStore.cc:228
std::vector< std::string > GetStationsPresent() const
Getter for stations present.
Definition: MHO_ScanDataStore.hh:112
std::string GetBaselineFilename(std::string baseline) const
Getter for baseline filename.
Definition: MHO_ScanDataStore.cc:215
std::size_t GetNFringes()
Getter for number of fringes.
Definition: MHO_ScanDataStore.hh:98
void SetDirectory(std::string dir)
Setter for (scan) directory.
Definition: MHO_ScanDataStore.hh:38
bool Initialize()
Initializes data store by clearing, reading directory files, mapping stations and fringes,...
Definition: MHO_ScanDataStore.cc:13
MHO_ScanDataStore()
Definition: MHO_ScanDataStore.cc:6
virtual ~MHO_ScanDataStore()
Definition: MHO_ScanDataStore.cc:8
std::string GetRootFileBasename()
Getter for root file basename.
Definition: MHO_ScanDataStore.hh:133
std::size_t GetNBaselines()
Getter for number of baselines.
Definition: MHO_ScanDataStore.hh:84
std::string GetStationFilename(std::string station) const
Getter for station filename.
Definition: MHO_ScanDataStore.cc:247
std::vector< std::string > GetFringesPresent() const
Getter for fringes present.
Definition: MHO_ScanDataStore.hh:119
std::vector< std::string > GetBaselinesPresent() const
Getter for baselines present.
Definition: MHO_ScanDataStore.hh:105
bool IsFringePresent(std::string basename) const
Checks if a fringe file is present for a given using its basename.
Definition: MHO_ScanDataStore.cc:63
int baseline
Definition: fourfit3.c:62
Definition: MHO_ChannelLabeler.hh:17