/***************************************************************************** * Project: RooFit * * Package: RooFitModels * * File: $Id: RooBlindTools.h,v 1.10 2007/05/11 10:15:52 verkerke Exp $ * Authors: * * AR, Aaron Roodman, Stanford University, roodman@slac.stanford.edu * * WV, Wouter Verkerke, UC Santa Barbara, verkerke@slac.stanford.edu * * * * Copyright (c) 2000-2005, Regents of the University of California * * and Stanford University. All rights reserved. * * * * Redistribution and use in source and binary forms, * * with or without modification, are permitted according to the terms * * listed in LICENSE (http://roofit.sourceforge.net/license.txt) * *****************************************************************************/ #ifndef ROO_BLIND_TOOLS #define ROO_BLIND_TOOLS // --------------------- // -- Class Interface -- // --------------------- #include "Rtypes.h" #include "TString.h" class RooBlindTools { //-------------------- // Instance Members -- //-------------------- public: enum blindMode { full=0, // blind both parameters and data dataonly // blind data only }; public: // Constructors RooBlindTools() {} ; RooBlindTools (const char *stSeed, // blinding seed string blindMode Mode=full, // blinding mode Double_t centralValue=0.0, // Central value for Precision measurements Double_t sigmaOffset=1.0, // range for Offset Bool_t s2bMode=kFALSE // Use sin2beta modifications? ); // Copy RooBlindTools(const RooBlindTools& ); // Destructor virtual ~RooBlindTools( ); // Operators Double_t Randomizer(const char *StringAlphabet) const; Double_t PseudoRandom(Int_t Seed) const; Double_t MakeOffset(const char *StringAlphabet) const; Double_t MakeGaussianOffset(const char *StringAlphabet) const; Double_t MakeSignFlip(const char *StringAlphabet) const; Int_t SignOfTag(Double_t STag) const; Double_t HideDeltaZ(Double_t DeltaZ, Double_t STag) const; Double_t HiDelZPdG(Double_t DeltaZ, Double_t STag, Double_t PdG) const; Double_t UnHideDeltaZ(Double_t DeltaZPrime, Double_t STag) const; Double_t UnHiDelZPdG(Double_t DeltaZPrime, Double_t STag, Double_t PdG) const; Double_t HideAsym(Double_t Asym) const; Double_t HiAsPdG(Double_t Asym, Double_t PdG) const; Double_t UnHideAsym(Double_t AsymPrime) const; Double_t UnHiAsPdG(Double_t AsymPrime, Double_t PdG) const; Double_t HideDeltaM(Double_t DeltaM) const; Double_t UnHideDeltaM(Double_t DeltaMPrime) const; Double_t MysteryPhase() const; Double_t RandomizeTag(Double_t STag, Int_t EventNumber) const; Double_t HidePrecision(Double_t Precision) const; Double_t UnHidePrecision(Double_t PrecisionPrime) const; Double_t HideOffset( Double_t Precision ) const; Double_t UnHideOffset( Double_t PrecisionBlind ) const; Double_t HideUniform( Double_t Precision ) const; Double_t UnHideUniform( Double_t PrecisionBlind ) const; const char *stSeed()const {return _stSeed;} const blindMode& mode()const {return _mode;} void setMode(blindMode bmode) {_mode=bmode;} Double_t getPrecisionCentralValue() const {return _PrecisionCentralValue;} Double_t getPrecisionOffsetScale() const {return _PrecisionOffsetScale;} private: // Friends // Data members TString _stSeed ; Double_t _DeltaZOffset; Double_t _DeltaZSignFlip; Double_t _DeltaZScale; Double_t _AsymOffset; Double_t _AsymSignFlip; Double_t _DeltaMScale; Double_t _DeltaMOffset; Double_t _MysteryPhase; Double_t _STagConstant; Double_t _PrecisionSignFlip; Double_t _PrecisionOffsetScale; Double_t _PrecisionOffset; Double_t _PrecisionUniform; Double_t _PrecisionCentralValue; blindMode _mode; Bool_t _s2bMode ; // setup data members from string seed void setup(const char *stSeed); protected: // Helper functions ClassDef(RooBlindTools,1) // Root implementation of BlindTools }; #endif