111 CHypo(std::shared_ptr<json::Object> detection,
double thresh,
int cut,
112 std::shared_ptr<traveltime::CTravelTime> firstTrav,
113 std::shared_ptr<traveltime::CTravelTime> secondTrav,
114 std::shared_ptr<traveltime::CTTT> ttt,
double resolution = 100,
115 double aziTaper = 360.0,
double maxDepth = 800.0,
149 CHypo(
double lat,
double lon,
double z,
double time, std::string pid,
150 std::string web,
double bayes,
double thresh,
int cut,
151 std::shared_ptr<traveltime::CTravelTime> firstTrav,
152 std::shared_ptr<traveltime::CTravelTime> secondTrav,
153 std::shared_ptr<traveltime::CTTT> ttt,
double resolution = 100,
154 double aziTaper = 360.0,
double maxDepth = 800.0);
167 explicit CHypo(std::shared_ptr<CTrigger> trigger,
168 std::shared_ptr<traveltime::CTTT> ttt);
185 explicit CHypo(std::shared_ptr<CCorrelation> corr,
186 std::shared_ptr<traveltime::CTravelTime> firstTrav,
187 std::shared_ptr<traveltime::CTravelTime> secondTrav,
188 std::shared_ptr<traveltime::CTTT> ttt);
233 bool initialize(
double lat,
double lon,
double z,
double time,
234 std::string pid, std::string web,
double bayes,
235 double thresh,
int cut,
236 std::shared_ptr<traveltime::CTravelTime> firstTrav,
237 std::shared_ptr<traveltime::CTravelTime> secondTrav,
238 std::shared_ptr<traveltime::CTTT> ttt,
double resolution =
240 double aziTaper = 360.0,
double maxDepth = 800.0);
255 bool addPickReference(std::shared_ptr<CPick> pck);
269 void removePickReference(std::shared_ptr<CPick> pck);
283 bool hasPickReference(std::shared_ptr<CPick> pck);
292 void clearPickReferences();
308 void addCorrelationReference(std::shared_ptr<CCorrelation> corr);
323 void removeCorrelationReference(std::shared_ptr<CCorrelation> corr);
338 bool hasCorrelationReference(std::shared_ptr<CCorrelation> corr);
348 void clearCorrelationReferences();
357 std::shared_ptr<json::Object> generateHypoMessage();
367 std::shared_ptr<json::Object> generateEventMessage();
377 std::shared_ptr<json::Object> generateCancelMessage();
390 std::shared_ptr<json::Object> generateExpireMessage();
408 bool canAssociate(std::shared_ptr<CPick> pick,
double sigma,
409 double sdassoc,
bool p_only =
false,
423 double getTravelTimeForPhase(std::shared_ptr<CPick> pick,
424 std::string phaseName);
437 double calculateDistanceToPick(std::shared_ptr<CPick> pick);
456 double calculateResidual(std::shared_ptr<CPick> pick,
457 bool * useForLocations = NULL,
458 std::string * phaseName = NULL,
459 bool p_only =
false);
473 bool canAssociate(std::shared_ptr<CCorrelation> corr,
double tWindow,
486 double calculateAffinity(std::shared_ptr<CPick> pck);
498 double calculateAffinity(std::shared_ptr<CCorrelation> corr);
511 bool pruneData(
CHypoList* parentThread = NULL);
543 void calculateStatistics();
566 double anneal(
int nIter = 5000,
double dStart = 100.0,
double dStop = 1.0,
567 double tStart = 5.,
double tStop = .5);
599 void annealingLocateBayes(
int nIter,
double dStart,
double dStop,
600 double tStart,
double tStop,
bool nucleate =
619 void annealingLocateResidual(
int nIter,
double dStart,
double dStop,
620 double tStart,
double tStop,
bool nucleate =
634 double calculateGap(
double lat,
double lon,
double z);
644 double calculateCurrentBayes();
662 double calculateBayes(
double xlat,
double xlon,
double xZ,
double oT,
680 double calculateAbsResidualSum(
double xlat,
double xlon,
double xZ,
681 double oT,
bool nucleate);
694 double calculateWeightedResidual(std::string sPhase,
double tObs,
701 void graphicsOutput();
720 bool resolveData(std::shared_ptr<CHypo> hypo,
bool allowStealing =
true,
736 double getAzimuthTaper()
const;
742 double getMaxDepth()
const;
748 double getLatitude()
const;
754 void setLatitude(
double lat);
760 double getLongitude()
const;
767 void setLongitude(
double lon);
773 double getDepth()
const;
779 void setDepth(
double z);
792 double getTOrigin()
const;
798 void setTOrigin(
double newTOrg);
804 double getBayesValue()
const;
816 bool getCorrelationAdded()
const;
828 void setCorrelationAdded(
bool corrAdded);
836 bool getEventGenerated()
const;
844 bool getHypoGenerated()
const;
852 bool getFixed()
const;
860 void setFixed(
bool fixed);
867 double getInitialBayesValue()
const;
875 double getAssociationDistanceCutoff()
const;
882 double getDistanceCutoffFactor()
const;
895 int getNucleationDataThreshold()
const;
908 void setNucleationDataThreshold(
int cut);
916 double getNucleationStackThreshold()
const;
924 void setNucleationStackThreshold(
double thresh);
930 double getGap()
const;
938 int getTeleseismicPhaseCount()
const;
945 double getMedianDistance()
const;
952 double getMinDistance()
const;
959 std::mutex & getProcessingMutex();
966 double getWebResolution()
const;
973 double getDistanceSD()
const;
980 int getProcessCount()
const;
987 int setProcessCount(
int newCycle);
993 int getTotalProcessCount()
const;
999 int incrementTotalProcessCount();
1005 const std::string& getID()
const;
1012 const std::string& getWebName()
const;
1019 int getPickDataSize()
const;
1025 std::vector<std::shared_ptr<CPick>> getPickData()
const;
1032 int getCorrelationDataSize()
const;
1039 double getTCreate()
const;
1049 std::shared_ptr<traveltime::CTravelTime> getNucleationTravelTime1()
const;
1059 std::shared_ptr<traveltime::CTravelTime> getNucleationTravelTime2()
const;
1069 std::shared_ptr<traveltime::CTTT> getTravelTimeTables()
const;
1075 int getReportCount()
const;
1082 bool isLockedForProcessing();
1088 int64_t getTSort()
const;
1094 void setTSort(
double newTSort);
1101 void setTCreate(
double newTCreate);
1109 void setNucleationAuditingInfo(
double tNucleation,
1110 double tNucleationKeyPickInsertion);
1121 static constexpr
double k_dResidualSigmaLengthSeconds = 1.0;
1126 static constexpr
double k_dGapTaperDownBegin = 270.0;
1131 static constexpr
double k_dGapTaperDownEnd = 360.0;
1136 static constexpr
double k_dTimeToDistanceCorrectionFactor = 10.0;
1141 static constexpr
double k_dVerticalToHorizontalDistanceCorrectionFactor = 2.0;
1146 static constexpr
double k_dBayesFactorMaximumRange = 0.2;
1151 static constexpr
double k_dBayesFactorExponent = 2.0;
1156 static constexpr
double k_dBayesFactorStepSizeReduction = 500.0;
1162 static constexpr
double k_dLocationChangeWebResolutionRatio = 0.5;
1168 static constexpr
double k_dMinimumDepthChangeKMThreshold = 7.5;
1175 static constexpr
double k_dMinimumDepthChangeRatioThreshold = 0.25;
1180 static constexpr
double k_dInitialAnnealStepReducationFactor = .5;
1185 static constexpr
double k_dFinalAnnealStepReducationFactor = 100.0;
1190 static constexpr
double k_dLocationMinDistanceStepSize = 1.0;
1195 static constexpr
double k_dLocationMinTimeStepSize = 0.1;
1200 static constexpr
double k_dLocationSearchRadiusToTime = 30.0;
1205 static constexpr
double k_dLocationTaperConstant = 0.0001;
1210 static constexpr
double k_dLocationMaxTaperThreshold = 30.0;
1215 static const int k_iLocationNPicksToSkipSmall = 5;
1220 static const int k_iLocationNPicksToSkipMedium = 10;
1225 static const int k_iLocationNPicksToSkipLarge = 25;
1230 static const int k_iLocationNPickThresholdSmall = 25;
1235 static const int k_iLocationNPickThresholdMedium = 50;
1240 static const int k_iLocationNPickThresholdLarge = 150;
1245 static const int k_iLocationNumIterationsSmall = 500;
1250 static const int k_iLocationNumIterationsMedium = 1250;
1255 static const int k_iLocationNumIterationsLarge = 10000;
1261 static constexpr
double k_dSearchRadiusResolutionFactor = 1.0;
1267 static constexpr
double k_dSearchRadiusTaperFactor = 0.75;
1272 static constexpr
double k_dSearchRadiusFactor = 0.5;
1279 std::string m_sWebName;
1285 std::atomic<int> m_iNucleationDataThreshold;
1291 std::atomic<double> m_dNucleationStackThreshold;
1297 std::atomic<double> m_dAzimuthTaper;
1302 std::atomic<double> m_dMaxDepth;
1307 std::atomic<int> m_iProcessCount;
1313 std::atomic<double> m_tOrigin;
1318 std::atomic<double> m_dLatitude;
1323 std::atomic<double> m_dLongitude;
1328 std::atomic<double> m_dDepth;
1333 std::atomic<bool> m_bEventGenerated;
1339 std::atomic<bool> m_bHypoGenerated;
1344 std::atomic<double> m_dBayesValue;
1349 std::atomic<double> m_dInitialBayesValue;
1355 std::atomic<double> m_dMinDistance;
1361 std::atomic<double> m_dMedianDistance;
1367 std::atomic<double> m_dGap;
1374 std::atomic<int> m_iTeleseismicPhaseCount;
1379 std::atomic<double> m_dDistanceSD;
1384 std::atomic<double> m_dWebResolution;
1390 std::atomic<double> m_dAssociationDistanceCutoff;
1400 std::atomic<bool> m_bFixed;
1406 std::atomic<double> m_bCorrelationAdded;
1412 std::atomic<int> m_iTotalProcessCount;
1418 std::atomic<int> m_iReportCount;
1424 std::atomic<double> m_tCreate;
1436 std::atomic<int64_t> m_tSort;
1445 std::vector<std::shared_ptr<CPick>> m_vPickData;
1455 std::vector<std::shared_ptr<CCorrelation>> m_vCorrelationData;
1463 std::shared_ptr<traveltime::CTravelTime> m_pNucleationTravelTime1;
1471 std::shared_ptr<traveltime::CTravelTime> m_pNucleationTravelTime2;
1480 std::shared_ptr<traveltime::CTTT> m_pTravelTimeTables;
1489 mutable std::recursive_mutex m_HypoMutex;
1494 std::mutex m_ProcessingMutex;
glasscore site list class
Definition: SiteList.h:40
struct glasscore::_HypoAuditingPerformanceStruct HypoAuditingPerformanceStruct
glasscore hypo auditing structure
geographic coordinate conversion class
Definition: geo.h:25
glasscore hypocenter list class
Definition: HypoList.h:67
glasscore hypocenter class
Definition: Hypo.h:75
The namespace containing the core algorithm.
Definition: Correlation.h:17