Skip to content

Commit e7c101c

Browse files
authored
Merge pull request #37643 from cailafinn/35067_wildes_flipper_config
Allow Determination of Workspace Order from Output of PolarizationCorrectionWildes
2 parents 2848287 + 0620675 commit e7c101c

16 files changed

+329
-149
lines changed

Framework/Algorithms/inc/MantidAlgorithms/PolarizationCorrectionWildes.h

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -65,6 +65,9 @@ class MANTID_ALGORITHMS_DLL PolarizationCorrectionWildes final : public API::Alg
6565
void threeInputsSolve01(WorkspaceMap &inputs, const EfficiencyMap &efficiencies);
6666
void threeInputsSolve10(WorkspaceMap &inputs, const EfficiencyMap &efficiencies);
6767
void twoInputsSolve01And10(WorkspaceMap &fullInputs, const WorkspaceMap &inputs, const EfficiencyMap &efficiencies);
68+
void addSpinStateOutput(std::vector<std::string> &names, const std::string &spinStateOrder,
69+
const std::string &baseName, const API::MatrixWorkspace_sptr &ws,
70+
const std::string &spinState);
6871
};
6972
} // namespace Algorithms
7073
} // namespace Mantid

Framework/Algorithms/inc/MantidAlgorithms/PolarizationCorrections/PolarizationCorrectionsHelpers.h

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,4 +21,32 @@ MANTID_ALGORITHMS_DLL std::optional<size_t> indexOfWorkspaceForSpinState(const s
2121
std::string targetSpinState);
2222
MANTID_ALGORITHMS_DLL std::vector<std::string> splitSpinStateString(const std::string &spinStates);
2323
} // namespace PolarizationCorrectionsHelpers
24+
25+
namespace FlipperConfigurations {
26+
auto constexpr OFF_ON = "01";
27+
auto constexpr ON_OFF = "10";
28+
auto constexpr OFF_OFF = "00";
29+
auto constexpr ON_ON = "11";
30+
auto constexpr OFF = "0";
31+
auto constexpr ON = "1";
32+
} // namespace FlipperConfigurations
33+
34+
namespace SpinStateConfigurationsFredrikze {
35+
auto constexpr PARA_ANTI = "pa";
36+
auto constexpr ANTI_PARA = "ap";
37+
auto constexpr PARA_PARA = "pp";
38+
auto constexpr ANTI_ANTI = "aa";
39+
auto constexpr PARA = "p";
40+
auto constexpr ANTI = "a";
41+
} // namespace SpinStateConfigurationsFredrikze
42+
43+
namespace SpinStateConfigurationsWildes {
44+
auto constexpr MINUS_PLUS = "-+";
45+
auto constexpr PLUS_MINUS = "+-";
46+
auto constexpr MINUS_MINUS = "--";
47+
auto constexpr PLUS_PLUS = "++";
48+
auto constexpr MINUS = "-";
49+
auto constexpr PLUS = "+";
50+
} // namespace SpinStateConfigurationsWildes
51+
2452
} // namespace Mantid::Algorithms

Framework/Algorithms/inc/MantidAlgorithms/PolarizationCorrections/SpinStateValidator.h

Lines changed: 8 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -24,16 +24,10 @@ particular ordering.
2424
*/
2525
class MANTID_ALGORITHMS_DLL SpinStateValidator : public Kernel::TypedValidator<std::string> {
2626
public:
27-
SpinStateValidator(std::unordered_set<int> allowedNumbersOfSpins, const bool acceptSingleStates = false);
27+
SpinStateValidator(std::unordered_set<int> allowedNumbersOfSpins, const bool acceptSingleStates = false,
28+
const char paraIndicator = '0', const char antiIndicator = '1', const bool optional = false);
2829
Kernel::IValidator_sptr clone() const override;
2930

30-
static const std::string ZERO_ONE;
31-
static const std::string ONE_ZERO;
32-
static const std::string ZERO_ZERO;
33-
static const std::string ONE_ONE;
34-
static const std::string ZERO;
35-
static const std::string ONE;
36-
3731
static bool anyOfIsInSet(const std::vector<std::string> &anyOf, const std::unordered_set<std::string> &set);
3832
static bool setContains(const std::unordered_set<std::string> &set, const std::string &s) {
3933
return set.find(s) != set.cend();
@@ -42,6 +36,11 @@ class MANTID_ALGORITHMS_DLL SpinStateValidator : public Kernel::TypedValidator<s
4236
private:
4337
std::string checkValidity(const std::string &input) const override;
4438
std::unordered_set<int> m_allowedNumbersOfSpins = {1, 2, 3, 4};
39+
const std::unordered_set<std::string> getAllowedPairStates() const;
40+
const std::unordered_set<std::string> getAllowedSingleStates() const;
4541
bool m_acceptSingleStates = false;
42+
const std::string m_para;
43+
const std::string m_anti;
44+
bool m_optional = false;
4645
};
47-
} // namespace Mantid::Algorithms
46+
} // namespace Mantid::Algorithms

Framework/Algorithms/inc/MantidAlgorithms/PolarizationEfficiencyCor.h

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,9 @@ class MANTID_ALGORITHMS_DLL PolarizationEfficiencyCor final : public API::Algori
2222
public:
2323
const std::string name() const override;
2424
int version() const override;
25-
const std::vector<std::string> seeAlso() const override { return {"PolarizationCorrectionFredrikze"}; }
25+
const std::vector<std::string> seeAlso() const override {
26+
return {"PolarizationCorrectionWildes", "PolarizationCorrectionFredrikze"};
27+
}
2628
const std::string category() const override;
2729
const std::string summary() const override;
2830

Framework/Algorithms/src/PolarizationCorrectionWildes.cpp

Lines changed: 92 additions & 51 deletions
Original file line numberDiff line numberDiff line change
@@ -25,22 +25,12 @@ namespace {
2525
/// Property names.
2626
namespace Prop {
2727
static const std::string FLIPPERS{"Flippers"};
28+
static const std::string SPIN_STATES{"SpinStates"};
2829
static const std::string EFFICIENCIES{"Efficiencies"};
2930
static const std::string INPUT_WS{"InputWorkspaces"};
3031
static const std::string OUTPUT_WS{"OutputWorkspace"};
3132
} // namespace Prop
3233

33-
/// Flipper configurations.
34-
namespace Flippers {
35-
using namespace Mantid::Algorithms;
36-
static const std::string Off{SpinStateValidator::ZERO};
37-
static const std::string OffOff{SpinStateValidator::ZERO_ZERO};
38-
static const std::string OffOn{SpinStateValidator::ZERO_ONE};
39-
static const std::string On{SpinStateValidator::ONE};
40-
static const std::string OnOff{SpinStateValidator::ONE_ZERO};
41-
static const std::string OnOn{SpinStateValidator::ONE_ONE};
42-
} // namespace Flippers
43-
4434
/**
4535
* Throw if given ws is nullptr.
4636
* @param ws a workspace to check
@@ -313,8 +303,9 @@ const std::string PolarizationCorrectionWildes::summary() const {
313303
"and analyzer efficiencies.";
314304
}
315305

306+
/// Algorithm's related algorithms. @see Algorithm::seeAlso
316307
const std::vector<std::string> PolarizationCorrectionWildes::seeAlso() const {
317-
return {"PolarizationEfficienciesWildes"};
308+
return {"PolarizationEfficiencyCor", "PolarizationEfficienciesWildes"};
318309
}
319310

320311
/**
@@ -337,10 +328,14 @@ void PolarizationCorrectionWildes::init() {
337328
std::make_unique<API::WorkspaceProperty<API::WorkspaceGroup>>(Prop::OUTPUT_WS, "", Kernel::Direction::Output),
338329
"A group of polarization efficiency corrected workspaces.");
339330

340-
const auto spinStateValidator = std::make_shared<SpinStateValidator>(std::unordered_set<int>{1, 2, 3, 4}, true);
331+
const auto flipperConfigValidator = std::make_shared<SpinStateValidator>(std::unordered_set<int>{1, 2, 3, 4}, true);
341332
declareProperty(Prop::FLIPPERS,
342-
Flippers::OffOff + ", " + Flippers::OffOn + ", " + Flippers::OnOff + ", " + Flippers::OnOn,
343-
spinStateValidator, "Flipper configurations of the input workspaces.");
333+
std::string(FlipperConfigurations::OFF_OFF) + ", " + FlipperConfigurations::OFF_ON + ", " +
334+
FlipperConfigurations::ON_OFF + ", " + FlipperConfigurations::ON_ON,
335+
flipperConfigValidator, "Flipper configurations of the input workspaces.");
336+
const auto spinStateValidator =
337+
std::make_shared<SpinStateValidator>(std::unordered_set<int>{0, 2, 4}, false, '+', '-', true);
338+
declareProperty(Prop::SPIN_STATES, "", spinStateValidator, "The order of the spin states in the output workspace.");
344339
declareProperty(
345340
std::make_unique<API::WorkspaceProperty<API::MatrixWorkspace>>(Prop::EFFICIENCIES, "", Kernel::Direction::Input),
346341
"A workspace containing the efficiency factors P1, P2, F1 and F2 as "
@@ -410,12 +405,28 @@ std::map<std::string, std::string> PolarizationCorrectionWildes::validateInputs(
410405
}
411406
}
412407
const std::vector<std::string> inputs = getProperty(Prop::INPUT_WS);
413-
const std::string flipperProperty = getProperty(Prop::FLIPPERS);
414-
const auto flipperCount = PolarizationCorrectionsHelpers::splitSpinStateString(flipperProperty).size();
408+
const auto flipperConfig = PolarizationCorrectionsHelpers::splitSpinStateString(getPropertyValue(Prop::FLIPPERS));
409+
const auto flipperCount = flipperConfig.size();
415410
if (inputs.size() != flipperCount) {
416411
issues[Prop::FLIPPERS] = "The number of flipper configurations (" + std::to_string(flipperCount) +
417412
") does not match the number of input workspaces (" + std::to_string(inputs.size()) + ")";
418413
}
414+
// SpinStates checks.
415+
const auto spinStates = PolarizationCorrectionsHelpers::splitSpinStateString(getPropertyValue(Prop::SPIN_STATES));
416+
if (inputs.size() == 1 && !spinStates.empty()) {
417+
issues[Prop::SPIN_STATES] = "Output workspace order cannot be set for direct beam calculations.";
418+
} else if (!spinStates.empty()) {
419+
if (flipperConfig.front().size() == 1 && spinStates.size() != 2) {
420+
issues[Prop::SPIN_STATES] =
421+
"Incorrect number of workspaces in output configuration: " + std::to_string(spinStates.size()) +
422+
". Only two output workspaces are produced when an analyzer is not used.";
423+
}
424+
if (flipperConfig.front().size() == 2 && spinStates.size() != 4) {
425+
issues[Prop::SPIN_STATES] =
426+
"Incorrect number of workspaces in output configuration: " + std::to_string(spinStates.size()) +
427+
". Four output workspaces are produced by the corrections.";
428+
}
429+
}
419430
return issues;
420431
}
421432

@@ -438,16 +449,16 @@ void PolarizationCorrectionWildes::checkConsistentNumberHistograms(const Workspa
438449
}
439450
};
440451
if (inputs.mmWS) {
441-
checkNHist(inputs.mmWS, Flippers::OnOn);
452+
checkNHist(inputs.mmWS, FlipperConfigurations::ON_ON);
442453
}
443454
if (inputs.mpWS) {
444-
checkNHist(inputs.mpWS, Flippers::OnOff);
455+
checkNHist(inputs.mpWS, FlipperConfigurations::ON_OFF);
445456
}
446457
if (inputs.pmWS) {
447-
checkNHist(inputs.pmWS, Flippers::OffOn);
458+
checkNHist(inputs.pmWS, FlipperConfigurations::OFF_ON);
448459
}
449460
if (inputs.ppWS) {
450-
checkNHist(inputs.ppWS, Flippers::OffOff);
461+
checkNHist(inputs.ppWS, FlipperConfigurations::OFF_OFF);
451462
}
452463
}
453464

@@ -484,16 +495,16 @@ void PolarizationCorrectionWildes::checkConsistentX(const WorkspaceMap &inputs,
484495
}
485496
};
486497
if (inputs.mmWS) {
487-
checkWS(inputs.mmWS, Flippers::OnOn);
498+
checkWS(inputs.mmWS, FlipperConfigurations::ON_ON);
488499
}
489500
if (inputs.mpWS) {
490-
checkWS(inputs.mpWS, Flippers::OnOff);
501+
checkWS(inputs.mpWS, FlipperConfigurations::ON_OFF);
491502
}
492503
if (inputs.pmWS) {
493-
checkWS(inputs.pmWS, Flippers::OffOn);
504+
checkWS(inputs.pmWS, FlipperConfigurations::OFF_ON);
494505
}
495506
if (inputs.ppWS) {
496-
checkWS(inputs.ppWS, Flippers::OffOff);
507+
checkWS(inputs.ppWS, FlipperConfigurations::OFF_OFF);
497508
}
498509
}
499510

@@ -505,24 +516,26 @@ void PolarizationCorrectionWildes::checkConsistentX(const WorkspaceMap &inputs,
505516
* @return a group workspace
506517
*/
507518
API::WorkspaceGroup_sptr PolarizationCorrectionWildes::groupOutput(const WorkspaceMap &outputs) {
508-
const std::string outWSName = getProperty(Prop::OUTPUT_WS);
519+
const auto &outWSName = getPropertyValue(Prop::OUTPUT_WS);
520+
auto spinStateOrder = getPropertyValue(Prop::SPIN_STATES);
509521
std::vector<std::string> names;
522+
if (!spinStateOrder.empty()) {
523+
names.resize(PolarizationCorrectionsHelpers::splitSpinStateString(spinStateOrder).size());
524+
}
525+
510526
if (outputs.ppWS) {
511-
names.emplace_back(outWSName + "_++");
512-
API::AnalysisDataService::Instance().addOrReplace(names.back(), outputs.ppWS);
527+
addSpinStateOutput(names, spinStateOrder, outWSName, outputs.ppWS, SpinStateConfigurationsWildes::PLUS_PLUS);
513528
}
514529
if (outputs.pmWS) {
515-
names.emplace_back(outWSName + "_+-");
516-
API::AnalysisDataService::Instance().addOrReplace(names.back(), outputs.pmWS);
530+
addSpinStateOutput(names, spinStateOrder, outWSName, outputs.pmWS, SpinStateConfigurationsWildes::PLUS_MINUS);
517531
}
518532
if (outputs.mpWS) {
519-
names.emplace_back(outWSName + "_-+");
520-
API::AnalysisDataService::Instance().addOrReplace(names.back(), outputs.mpWS);
533+
addSpinStateOutput(names, spinStateOrder, outWSName, outputs.mpWS, SpinStateConfigurationsWildes::MINUS_PLUS);
521534
}
522535
if (outputs.mmWS) {
523-
names.emplace_back(outWSName + "_--");
524-
API::AnalysisDataService::Instance().addOrReplace(names.back(), outputs.mmWS);
536+
addSpinStateOutput(names, spinStateOrder, outWSName, outputs.mmWS, SpinStateConfigurationsWildes::MINUS_MINUS);
525537
}
538+
526539
auto group = createChildAlgorithm("GroupWorkspaces");
527540
group->initialize();
528541
group->setProperty("InputWorkspaces", names);
@@ -532,6 +545,34 @@ API::WorkspaceGroup_sptr PolarizationCorrectionWildes::groupOutput(const Workspa
532545
return outWS;
533546
}
534547

548+
/**
549+
* Add an output name in the correct position in the vector and to the ADS.
550+
* @param names A list of the names of the workspaces the algorithm has generated.
551+
* @param spinStateOrder The order the output should be in.
552+
* @param baseName The base name for the output workspaces ("BASENAME_SPINSTATE" e.g "OUTNAME_+-")
553+
* @param ws The workspace to add to the vector and ADS.
554+
* @param spinState The spin state the workspace represents.
555+
*/
556+
void PolarizationCorrectionWildes::addSpinStateOutput(std::vector<std::string> &names,
557+
const std::string &spinStateOrder, const std::string &baseName,
558+
const API::MatrixWorkspace_sptr &ws,
559+
const std::string &spinState) {
560+
if (spinStateOrder.empty()) {
561+
names.emplace_back(baseName + "_" + spinState);
562+
API::AnalysisDataService::Instance().addOrReplace(names.back(), ws);
563+
} else {
564+
const auto &maybeIndex = PolarizationCorrectionsHelpers::indexOfWorkspaceForSpinState(
565+
PolarizationCorrectionsHelpers::splitSpinStateString(spinStateOrder), spinState);
566+
if (!maybeIndex.has_value()) {
567+
throw std::invalid_argument("Required spin state (" + spinState + ") not found in spin state order (" +
568+
spinStateOrder + ").");
569+
}
570+
const auto index = maybeIndex.value();
571+
names[index] = baseName + "_" + spinState;
572+
API::AnalysisDataService::Instance().addOrReplace(names[index], ws);
573+
}
574+
}
575+
535576
/**
536577
* Make a convenience access object to the efficiency factors.
537578
* @return an EfficiencyMap object
@@ -566,7 +607,7 @@ PolarizationCorrectionWildes::EfficiencyMap PolarizationCorrectionWildes::effici
566607
PolarizationCorrectionWildes::WorkspaceMap
567608
PolarizationCorrectionWildes::directBeamCorrections(const WorkspaceMap &inputs, const EfficiencyMap &efficiencies) {
568609
using namespace boost::math;
569-
checkInputExists(inputs.ppWS, Flippers::Off);
610+
checkInputExists(inputs.ppWS, FlipperConfigurations::OFF);
570611
WorkspaceMap outputs;
571612
outputs.ppWS = createWorkspaceWithHistory(inputs.ppWS);
572613
const size_t nHisto = inputs.ppWS->getNumberHistograms();
@@ -603,8 +644,8 @@ PolarizationCorrectionWildes::directBeamCorrections(const WorkspaceMap &inputs,
603644
PolarizationCorrectionWildes::WorkspaceMap
604645
PolarizationCorrectionWildes::analyzerlessCorrections(const WorkspaceMap &inputs, const EfficiencyMap &efficiencies) {
605646
using namespace boost::math;
606-
checkInputExists(inputs.mmWS, Flippers::On);
607-
checkInputExists(inputs.ppWS, Flippers::Off);
647+
checkInputExists(inputs.mmWS, FlipperConfigurations::ON);
648+
checkInputExists(inputs.ppWS, FlipperConfigurations::OFF);
608649
WorkspaceMap outputs;
609650
outputs.mmWS = createWorkspaceWithHistory(inputs.mmWS);
610651
outputs.ppWS = createWorkspaceWithHistory(inputs.ppWS);
@@ -667,8 +708,8 @@ PolarizationCorrectionWildes::analyzerlessCorrections(const WorkspaceMap &inputs
667708
PolarizationCorrectionWildes::WorkspaceMap
668709
PolarizationCorrectionWildes::twoInputCorrections(const WorkspaceMap &inputs, const EfficiencyMap &efficiencies) {
669710
using namespace boost::math;
670-
checkInputExists(inputs.mmWS, Flippers::OnOn);
671-
checkInputExists(inputs.ppWS, Flippers::OffOff);
711+
checkInputExists(inputs.mmWS, FlipperConfigurations::ON_ON);
712+
checkInputExists(inputs.ppWS, FlipperConfigurations::OFF_OFF);
672713
WorkspaceMap fullInputs = inputs;
673714
fullInputs.mpWS = createWorkspaceWithHistory(inputs.mmWS);
674715
fullInputs.pmWS = createWorkspaceWithHistory(inputs.ppWS);
@@ -688,13 +729,13 @@ PolarizationCorrectionWildes::twoInputCorrections(const WorkspaceMap &inputs, co
688729
PolarizationCorrectionWildes::WorkspaceMap
689730
PolarizationCorrectionWildes::threeInputCorrections(const WorkspaceMap &inputs, const EfficiencyMap &efficiencies) {
690731
WorkspaceMap fullInputs = inputs;
691-
checkInputExists(inputs.mmWS, Flippers::OnOn);
692-
checkInputExists(inputs.ppWS, Flippers::OffOff);
732+
checkInputExists(inputs.mmWS, FlipperConfigurations::ON_ON);
733+
checkInputExists(inputs.ppWS, FlipperConfigurations::OFF_OFF);
693734
if (!inputs.mpWS) {
694-
checkInputExists(inputs.pmWS, Flippers::OffOn);
735+
checkInputExists(inputs.pmWS, FlipperConfigurations::OFF_ON);
695736
threeInputsSolve10(fullInputs, efficiencies);
696737
} else {
697-
checkInputExists(inputs.mpWS, Flippers::OnOff);
738+
checkInputExists(inputs.mpWS, FlipperConfigurations::ON_OFF);
698739
threeInputsSolve01(fullInputs, efficiencies);
699740
}
700741
return fullCorrections(fullInputs, efficiencies);
@@ -711,10 +752,10 @@ PolarizationCorrectionWildes::threeInputCorrections(const WorkspaceMap &inputs,
711752
PolarizationCorrectionWildes::WorkspaceMap
712753
PolarizationCorrectionWildes::fullCorrections(const WorkspaceMap &inputs, const EfficiencyMap &efficiencies) {
713754
using namespace boost::math;
714-
checkInputExists(inputs.mmWS, Flippers::OnOn);
715-
checkInputExists(inputs.mpWS, Flippers::OnOff);
716-
checkInputExists(inputs.pmWS, Flippers::OffOn);
717-
checkInputExists(inputs.ppWS, Flippers::OffOff);
755+
checkInputExists(inputs.mmWS, FlipperConfigurations::ON_ON);
756+
checkInputExists(inputs.mpWS, FlipperConfigurations::ON_OFF);
757+
checkInputExists(inputs.pmWS, FlipperConfigurations::OFF_ON);
758+
checkInputExists(inputs.ppWS, FlipperConfigurations::OFF_OFF);
718759
WorkspaceMap outputs;
719760
outputs.mmWS = createWorkspaceWithHistory(inputs.mmWS);
720761
outputs.mpWS = createWorkspaceWithHistory(inputs.mpWS);
@@ -781,13 +822,13 @@ PolarizationCorrectionWildes::mapInputsToDirections(const std::vector<std::strin
781822
throw std::runtime_error("One of the input workspaces doesn't seem to be a MatrixWorkspace.");
782823
}
783824
const auto &f = flippers[i];
784-
if (f == Flippers::OnOn || f == Flippers::On) {
825+
if (f == FlipperConfigurations::ON_ON || f == FlipperConfigurations::ON) {
785826
inputs.mmWS = ws;
786-
} else if (f == Flippers::OnOff) {
827+
} else if (f == FlipperConfigurations::ON_OFF) {
787828
inputs.mpWS = ws;
788-
} else if (f == Flippers::OffOn) {
829+
} else if (f == FlipperConfigurations::OFF_ON) {
789830
inputs.pmWS = ws;
790-
} else if (f == Flippers::OffOff || f == Flippers::Off) {
831+
} else if (f == FlipperConfigurations::OFF_OFF || f == FlipperConfigurations::OFF) {
791832
inputs.ppWS = ws;
792833
} else {
793834
throw std::runtime_error(std::string{"Unknown entry in "} + Prop::FLIPPERS);

Framework/Algorithms/src/PolarizationCorrections/FlipperEfficiency.cpp

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@ void FlipperEfficiency::init() {
4444
"Group workspace containing flipper transmissions for all 4 polarization states.");
4545
auto const spinValidator = std::make_shared<SpinStateValidator>(std::unordered_set<int>{4});
4646
declareProperty(PropNames::SPIN_STATES, INITIAL_SPIN, spinValidator,
47-
"Order of individual spin states in the input group workspace, e.g. \"01,11,00,10\"");
47+
"Order of individual flipper configurations in the input group workspace, e.g. \"01,11,00,10\"");
4848
declareProperty(std::make_unique<WorkspaceProperty<MatrixWorkspace>>(PropNames::OUTPUT_WS, "", Direction::Output,
4949
PropertyMode::Optional),
5050
"Workspace containing the wavelength-dependent efficiency for the flipper.");
@@ -129,10 +129,10 @@ void FlipperEfficiency::exec() {
129129

130130
MatrixWorkspace_sptr FlipperEfficiency::calculateEfficiency(WorkspaceGroup_sptr const &groupWs) {
131131
auto const &spinConfig = getPropertyValue(PropNames::SPIN_STATES);
132-
auto const &t11Ws = workspaceForSpinState(groupWs, spinConfig, SpinStateValidator::ONE_ONE);
133-
auto const &t10Ws = workspaceForSpinState(groupWs, spinConfig, SpinStateValidator::ONE_ZERO);
134-
auto const &t01Ws = workspaceForSpinState(groupWs, spinConfig, SpinStateValidator::ZERO_ONE);
135-
auto const &t00Ws = workspaceForSpinState(groupWs, spinConfig, SpinStateValidator::ZERO_ZERO);
132+
auto const &t11Ws = workspaceForSpinState(groupWs, spinConfig, FlipperConfigurations::ON_ON);
133+
auto const &t10Ws = workspaceForSpinState(groupWs, spinConfig, FlipperConfigurations::ON_OFF);
134+
auto const &t01Ws = workspaceForSpinState(groupWs, spinConfig, FlipperConfigurations::OFF_ON);
135+
auto const &t00Ws = workspaceForSpinState(groupWs, spinConfig, FlipperConfigurations::OFF_OFF);
136136

137137
auto const &numerator = (t11Ws * t00Ws) - (t10Ws * t01Ws);
138138
auto const &denominator = (t11Ws + t10Ws) * (t00Ws - t01Ws);

0 commit comments

Comments
 (0)