23#include <TObjString.h>
32#ifdef __USE_DATABASE__
37#if !defined(ULong64_t)
38#if defined(R__WIN32) && !defined(__CINT__)
111#ifdef __USE_DATABASE__
113 void FillDB(QwParityDB *db, TString datatype);
114 void FillErrDB(QwParityDB *db, TString datatype);
149 void BlindValue(Double_t& value,
const Double_t& yield)
const {
193 diff.
Blind(
this, yield);
198 diff.
Blind(
this, yield);
209 if (folder != NULL) folder->cd();
210 const TObjString* seed =
new TObjString(
fSeed);
211 folder->WriteTObject(seed, prefix +
"seed",
"WriteDelete");
212 const TObjString* seedID =
new TObjString(Form(
"%u",
fSeedID));
213 folder->WriteTObject(seedID, prefix +
"seedID",
"WriteDelete");
215 folder->WriteTObject(strategy, prefix +
"strategy",
"WriteDelete");
217 folder->WriteTObject(max_asymmetry, prefix +
"max_asymmetry",
"WriteDelete");
219 folder->WriteTObject(max_factor, prefix +
"max_factor",
"WriteDelete");
220 const TObjString* checksum =
new TObjString(
fChecksum.c_str());
221 folder->WriteTObject(checksum, prefix +
"checksum",
"WriteDelete");
293 Int_t
UseMD5(
const TString &barestring);
303 Int_t
ReadSeed(QwParityDB* db,
const UInt_t seed_id);
__attribute__((no_sanitize("signed-integer-overflow"))) void QwMollerADC_Channel
Basic data types and constants used throughout the Qweak analysis framework.
EQwWienMode
Double Wien configuration.
EPICS data event handling and storage.
Subsystem array container for parity analysis with asymmetry calculations.
unsigned long long ULong64_t
EPICS slow controls data management.
Command-line and configuration file options processor.
const QwBlinder & operator=(const QwBlinder &__attribute__((unused)) blinder)
Private assignment operator.
QwBlinder(const EQwBlindingStrategy blinding_strategy=kAdditive)
Default constructor with optional database.
void InitTestValues(const int n)
Initializes fBlindingFactor from fSeed.
EQwBlinderStatus
Status of the blinding process or intermediate steps of the process.
Int_t ReadRandomSeed()
Read the seed string generated utilizing a random number generator.
std::vector< UChar_t > GenerateDigest(const TString &input) const
Writes fTestNumber and fBlindTestValue to DB for this analysis ID.
void Blind(QwSubsystemArrayParity &diff, const QwSubsystemArrayParity &yield)
Blind the difference of an array of subsystems.
static const TString fStatusName[4]
EQwBlinderStatus fTargetBlindability_firstread
Indicates the first value received of the blindability of the target.
void WriteTestValues(QwParityDB *db)
Writes fSeedID and fBFChecksum to DB for this analysis ID.
Bool_t fTargetPositionForced
std::vector< double > fBlindTestValues
Vector of test values, original.
Int_t ReadSeed(QwParityDB *db)
Reads the seed from the database object.
std::vector< double > fTestValues
Checksum in ASCII hex.
void UnBlindValue(Double_t &value) const
Asymmetry unblinding.
void PrintFinalValues(Int_t kVerbosity=1)
void Blind(QwSubsystemArrayParity &diff)
Blind the asymmetry of an array of subsystems.
std::vector< UChar_t > fDigest
Default seed.
Double_t fBlindingOffset_Base
The term to be added to detector asymmetries.
static const TString kDefaultSeed
Seed string (seeds.seed)
std::vector< Int_t > fPatternCounters
Counts the number of events in each failure mode.
Int_t UsePseudorandom(const TString &barestring)
Double_t fBlindingFactor
The term to be added to detector asymmetries, before polarity correction.
void Update()
Update the status using a random number.
std::string fChecksum
Checksum in raw hex.
Double_t fBlindingOffset
Blinding strategy.
void UnBlind(QwSubsystemArrayParity &diff, const QwSubsystemArrayParity &yield)
Unblind the difference of an array of subsystems.
Double_t fBeamCurrentThreshold
void BlindValue(Double_t &value, const Double_t &yield) const
Difference blinding.
void UnBlindValue(Double_t &value, const Double_t &yield) const
Difference unblinding.
std::vector< Int_t > fPairCounters
Counts the number of helicity pairs in each failure mode.
const Bool_t & IsBlinderOkay() const
Double_t fMaximumBlindingAsymmetry
Default maximum blinding factor (in fraction from identity)
void Update(QwParityDB *db)
Update the status with new external information.
void ModifyThisErrorCode(UInt_t &errorcode) const
static const Double_t kDefaultMaximumBlindingAsymmetry
The factor to be multiplied to detector asymmetries.
static void DefineOptions(QwOptions &options)
void UnBlind(QwSubsystemArrayParity &diff)
Unblind the asymmetry of an array of subsystems.
void WriteChecksum(QwParityDB *db)
void BlindPair(QwSubsystemArrayParity &diff, const QwSubsystemArrayParity &yield)
Blind the pair difference of an array of subsystems.
void SetTargetBlindability(EQwBlinderStatus status)
Set the current target blindability status.
void SetWienState(EQwWienMode wienmode)
void BlindValue(Double_t &value) const
Asymmetry blinding.
TString fSeed
ID of seed used (seeds.seed_id)
EQwWienMode fWienMode_firstread
void SetIHWPPolarity(Int_t ihwppolarity)
Bool_t fSpinDirectionForced
void WriteFinalValuesToDB(QwParityDB *db)
static constexpr const Double_t kValue_BlinderFail
static const Double_t kDefaultMaximumBlindingFactor
Default maximum blinding asymmetry (in ppm)
EQwBlindingStrategy
Available blinding strategies.
@ kAdditiveMultiplicative
Int_t UseStringManip(const TString &barestring)
Returns an integer from a string using MD5.
void PrintCountersValues(std::vector< Int_t > fCounters, TString counter_type)
Int_t ReadSeed(QwParityDB *db, const UInt_t seed_id)
Reads the seed with specified id from the database object.
Int_t UseMD5(const TString &barestring)
Recomputes fBlindTestValue to check for memory errors.
Double_t fMaximumBlindingFactor
Maximum blinding asymmetry (in ppm)
EQwBlinderStatus CheckBlindability(std::vector< Int_t > &fCounters)
void BlindPair(QwSubsystemArrayParity &diff)
std::vector< double > fUnBlindTestValues
Vector of test values, after blinding.
void InitBlinders(const UInt_t seed_id)
Vector of test values, after unblinding.
QwBlinder(const QwBlinder &__attribute__((unused)) blinder)
Private copy constructor.
static const UInt_t kErrorFlag_BlinderFail
Error flag value.
EQwBlindingStrategy fBlindingStrategy
UInt_t fSeedID
Maximum blinding factor (in fraction from identity)
Int_t fIHWPPolarity_firstread
virtual ~QwBlinder()
Default destructor.
EQwBlinderStatus fTargetBlindability
void ProcessOptions(QwOptions &options)
Update the status with new external information.
void ConstructObjects(TDirectory *folder, TString &prefix)
Subsystem array container specialized for parity analysis with asymmetry calculations.
void Blind(const QwBlinder *blinder)
Blind the asymmetry of this subsystem.
void UnBlind(const QwBlinder *)
Unblind the asymmetry of this subsystem.