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);
EPICS data event handling and storage.
Basic data types and constants used throughout the Qweak analysis framework.
EQwWienMode
Double Wien configuration.
__attribute__((no_sanitize("signed-integer-overflow"))) void QwMollerADC_Channel
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.