/*****************************************************************************
 * Project: RooFit                                                           *
 * Package: RooFitModels                                                     *
 * @(#)root/roofit:$Id$
 * 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)             *
 *****************************************************************************/

//-----------------------
// This Class's Header --
//-----------------------
#include "RooFit.h"

#include "RooBlindTools.h"
#include "RooBlindTools.h"

#include "RooErrorHandler.h"
#include "Riostream.h"
#include <fstream>
#include <math.h>  
#include <string.h>
#include <ctype.h>

using namespace std;

ClassImp(RooBlindTools)


//----------------
// Constructors --
//----------------

//_____________________________________________________________________________
RooBlindTools::RooBlindTools(const char *stSeedIn, blindMode Mode,
			     Double_t centralValue, Double_t sigmaOffset, Bool_t s2bMode) :

  _PrecisionOffsetScale(sigmaOffset),
  _PrecisionCentralValue(centralValue),
  _mode(Mode),
  _s2bMode(s2bMode)
{
  setup(stSeedIn);
}



//_____________________________________________________________________________
RooBlindTools::RooBlindTools(const RooBlindTools& blindTool):
  _PrecisionOffsetScale(blindTool.getPrecisionOffsetScale()),
  _PrecisionCentralValue(blindTool.getPrecisionCentralValue()),
  _mode(blindTool.mode()),
  _s2bMode(blindTool._s2bMode) 
{
  setup(blindTool.stSeed());
}



//_____________________________________________________________________________
void RooBlindTools::setup(const char *stSeedIn)
{

  _stSeed = stSeedIn;

  _DeltaZScale = 1.56;

  _DeltaZOffset = _DeltaZScale*MakeOffset("abcdefghijklmnopqrstuvwxyz");

  _DeltaZSignFlip = MakeSignFlip("ijklmnopqrstuvwxyzabcdefgh");

  _AsymOffset = MakeGaussianOffset("opqrstuvwxyzabcdefghijklmn");

  _AsymSignFlip = MakeSignFlip("zyxwvutsrqponmlkjihgfedcba");

  _DeltaMScale = 0.1;

  _DeltaMOffset = _DeltaMScale*MakeOffset("opqrstuvwxyzabcdefghijklmn");

  _MysteryPhase = 3.14159 * 
                  MakeOffset("wxyzabcdefghijklmnopqrstuv");

  if (_s2bMode) {
    _PrecisionSignFlip = MakeSignFlip("zyxwvutsrqponmlkjihgfedcba");
  } else {
    _PrecisionSignFlip = MakeSignFlip("klmnopqrstuvwxyzabcdefghij");
  }

  _PrecisionOffset = _PrecisionOffsetScale*MakeGaussianOffset("opqrstuvwxyzabcdefghijklmn");

  _PrecisionUniform = _PrecisionOffsetScale*MakeOffset("jihgfedcbazyxwvutsrqponmlk");

  _STagConstant = Randomizer("fghijklmnopqrstuvwxyzabcde");
}


//--------------
// Destructor --
//--------------

//_____________________________________________________________________________
RooBlindTools::~RooBlindTools(){}

//-------------
// Functions --
//-------------


//_____________________________________________________________________________
Double_t RooBlindTools::HideDeltaZ(Double_t DeltaZ, Double_t STag)const{

  Int_t sTag = SignOfTag(STag);
  Double_t DeltaZPrime = _DeltaZSignFlip*DeltaZ*sTag + _DeltaZOffset;

  return DeltaZPrime;
}


//_____________________________________________________________________________
Double_t RooBlindTools::HiDelZPdG(Double_t DeltaZ, Double_t STag, Double_t PdG) const{

  Int_t sTag = SignOfTag(STag);
  Double_t DeltaZPrime = _DeltaZSignFlip*(DeltaZ - PdG)*sTag + _DeltaZOffset;

  return DeltaZPrime;
}


//_____________________________________________________________________________
Double_t RooBlindTools::UnHideDeltaZ(Double_t DeltaZPrime, Double_t STag) const{

  Int_t sTag = SignOfTag(STag);
  Double_t DeltaZ = (DeltaZPrime - _DeltaZOffset)/(sTag*_DeltaZSignFlip);

  return DeltaZ;
}


//_____________________________________________________________________________
Double_t RooBlindTools::UnHiDelZPdG(Double_t DeltaZPrime, Double_t STag, Double_t PdG) const{

  Int_t sTag = SignOfTag(STag);
  Double_t DeltaZ = PdG + (DeltaZPrime - _DeltaZOffset)/(sTag*_DeltaZSignFlip);

  return DeltaZ;
}


//_____________________________________________________________________________
Double_t RooBlindTools::UnHideAsym(Double_t AsymPrime) const{

  if(mode()==dataonly) return AsymPrime;

  Double_t Asym = (AsymPrime - _AsymOffset)/_AsymSignFlip;

  return Asym;
}


//_____________________________________________________________________________
Double_t RooBlindTools::HideAsym(Double_t Asym) const{

  if(mode()==dataonly) return Asym;

  Double_t AsymPrime = Asym*_AsymSignFlip + _AsymOffset;

  return AsymPrime;
}



//_____________________________________________________________________________
Double_t RooBlindTools::UnHideDeltaM(Double_t DeltaMPrime) const{

  if(mode()==dataonly) return DeltaMPrime;

  Double_t DeltaM = DeltaMPrime - _DeltaMOffset;

  return DeltaM;
}


//_____________________________________________________________________________
Double_t RooBlindTools::HideDeltaM(Double_t DeltaM) const{

  if(mode()==dataonly) return DeltaM;

  Double_t DeltaMPrime = DeltaM + _DeltaMOffset;

  return DeltaMPrime;
}


//_____________________________________________________________________________
Double_t RooBlindTools::UnHiAsPdG(Double_t AsymPrime, Double_t PdG) const{

  if(mode()==dataonly) return AsymPrime;

  Double_t Asym = PdG + (AsymPrime - _AsymOffset)/_AsymSignFlip;

  return Asym;
}


//_____________________________________________________________________________
Double_t RooBlindTools::MysteryPhase() const{

  if(mode()==dataonly) return 0.0;

  return _MysteryPhase;
}


//_____________________________________________________________________________
Double_t RooBlindTools::HiAsPdG(Double_t Asym, Double_t PdG) const{

  if(mode()==dataonly) return Asym;

  Double_t AsymPrime = (Asym - PdG)*_AsymSignFlip + _AsymOffset;

  return AsymPrime;
}


//_____________________________________________________________________________
Double_t RooBlindTools::UnHidePrecision(Double_t PrecisionPrime) const{

  if(mode()==dataonly) return PrecisionPrime;

  Double_t Precision(0.);

  if (_PrecisionSignFlip>0) {
    Precision = PrecisionPrime - _PrecisionOffset;
  }
  else {
    Precision = 2.0*_PrecisionCentralValue - PrecisionPrime + _PrecisionOffset;
  }


  return Precision;
}



//_____________________________________________________________________________
Double_t RooBlindTools::HidePrecision(Double_t Precision) const{

  if(mode()==dataonly) return Precision;

  Double_t PrecisionPrime(0.);

  if (_PrecisionSignFlip>0) {
    PrecisionPrime = Precision + _PrecisionOffset;
  }
  else {
    PrecisionPrime = 2.0*_PrecisionCentralValue - Precision + _PrecisionOffset;
  }

  return PrecisionPrime;
}



//_____________________________________________________________________________
Double_t RooBlindTools::UnHideOffset(Double_t PrecisionPrime) const{

  if(mode()==dataonly) return PrecisionPrime;

  return PrecisionPrime - _PrecisionOffset;
}



//_____________________________________________________________________________
Double_t RooBlindTools::HideOffset(Double_t Precision) const{

  if(mode()==dataonly) return Precision;
  
  return Precision + _PrecisionOffset;
}



//_____________________________________________________________________________
Double_t RooBlindTools::UnHideUniform(Double_t PrecisionPrime) const{

  if(mode()==dataonly) return PrecisionPrime;

  return PrecisionPrime - _PrecisionUniform;
}



//_____________________________________________________________________________
Double_t RooBlindTools::HideUniform(Double_t Precision) const{

  if(mode()==dataonly) return Precision;
  
  return Precision + _PrecisionUniform;
}




//_____________________________________________________________________________
Double_t RooBlindTools::RandomizeTag(Double_t STag, Int_t EventNumber) const{

  Int_t Seed = EventNumber % 7997 + 2; 
  Double_t r = PseudoRandom(Seed);
  Double_t STagPrime(0.0);

  if (r < _STagConstant){
    STagPrime = STag;
  } else {
    STagPrime = -1.0 * STag ;
  }

  return STagPrime;

}
   


//_____________________________________________________________________________
Double_t RooBlindTools::Randomizer(const char *StringAlphabet) const{

  char lowerseed[1024] ;
  strlcpy(lowerseed,_stSeed,1024) ;

  Int_t lengthSeed = strlen(lowerseed);

  for (Int_t j=0; j<lengthSeed; j++){
    lowerseed[j] =tolower(_stSeed[j]);
  }                                                                                                                                                                        
  Int_t sumSeed = 0;
  for (Int_t i=0; i<lengthSeed; i++){
    for (Int_t iAlphabet=0; iAlphabet<26; iAlphabet++){
      if ( lowerseed[i] == StringAlphabet[iAlphabet] ){
	if (_s2bMode) {
	  sumSeed =  (iAlphabet<<(5*(i%3)))^sumSeed;
	} else {
	  sumSeed = sumSeed + iAlphabet ;	
	}
      }
    }      
  }

  if (lengthSeed<5 || ((sumSeed<1 || sumSeed>8000)&&!_s2bMode)) {
    cout<< "RooBlindTools::Randomizer: Your String Seed is Bad: '" << _stSeed << "'" << endl ;
    RooErrorHandler::softAbort() ;                                                                                                                     
  }
  
  Int_t ia = 8121;
  Int_t ic = 28411;
  Int_t im = 134456;
  UInt_t jRan = (sumSeed*ia + ic) % im;

  jRan = (jRan*ia + ic) % im;
  jRan = (jRan*ia + ic) % im;
  jRan = (jRan*ia + ic) % im;

  Double_t theRan = (float) jRan / (float) im;     

  return theRan;    //theRan is between 0.0 - 1.0

}


//_____________________________________________________________________________
Double_t RooBlindTools::PseudoRandom(Int_t Seed) const{

  if (Seed<1 || Seed>8000 ) {
    cout<< "RooBlindTools::PseudoRandom: Your integer Seed is Bad" <<endl;
  }
 
  Int_t ia = 8121;
  Int_t ic = 28411;
  Int_t im = 134456;
  UInt_t jRan = (Seed*ia + ic) % im;

  jRan = (jRan*ia + ic) % im;
  jRan = (jRan*ia + ic) % im;
  jRan = (jRan*ia + ic) % im;

  Double_t theRan = (float) jRan / (float) im;     

  return theRan;    //theRan is between 0.0 - 1.0

}



//_____________________________________________________________________________
Double_t RooBlindTools::MakeOffset(const char *StringAlphabet) const{

  Double_t theRan = Randomizer(StringAlphabet);

  Double_t theOffset = (2.0)*theRan - (1.0);

  return theOffset;   //theOffset lies between -1.0 and 1.0
}



//_____________________________________________________________________________
Double_t RooBlindTools::MakeGaussianOffset(const char *StringAlphabet) const{

  Double_t theRan1 = Randomizer(StringAlphabet);
  Double_t theRan2 = Randomizer("cdefghijklmnopqrstuvwxyzab");

  if (theRan1==0.0 || theRan1==1.0){
    theRan1 = 0.5;
  }
  if (theRan2==0.0 || theRan2==1.0){
    theRan2 = 0.5;
  }

  Double_t theOffset = sin(2.0*3.14159*theRan1)*sqrt(-2.0*log(theRan2));

  return theOffset;   //theOffset is Gaussian with mean 0, sigma 1
}



//_____________________________________________________________________________
Double_t RooBlindTools::MakeSignFlip(const char *StringAlphabet) const{

  Double_t theRan = Randomizer(StringAlphabet);

  Double_t theSignFlip = 1.0;
  if (theRan>0.5){
    theSignFlip = 1.0;
  } else {
    theSignFlip = -1.0;
  }

  return theSignFlip;  //theSignFlip is = +1 or -1
}


//_____________________________________________________________________________
Int_t RooBlindTools::SignOfTag(Double_t STag) const{

  Int_t sTag;
  if (STag < 0.0){
    sTag = -1;
  } 
  else if (STag > 0.0) {
    sTag = 1;
  }
  else {
    sTag = 1;
  }

  return sTag;
   
}

 
 RooBlindTools.cxx:1
 RooBlindTools.cxx:2
 RooBlindTools.cxx:3
 RooBlindTools.cxx:4
 RooBlindTools.cxx:5
 RooBlindTools.cxx:6
 RooBlindTools.cxx:7
 RooBlindTools.cxx:8
 RooBlindTools.cxx:9
 RooBlindTools.cxx:10
 RooBlindTools.cxx:11
 RooBlindTools.cxx:12
 RooBlindTools.cxx:13
 RooBlindTools.cxx:14
 RooBlindTools.cxx:15
 RooBlindTools.cxx:16
 RooBlindTools.cxx:17
 RooBlindTools.cxx:18
 RooBlindTools.cxx:19
 RooBlindTools.cxx:20
 RooBlindTools.cxx:21
 RooBlindTools.cxx:22
 RooBlindTools.cxx:23
 RooBlindTools.cxx:24
 RooBlindTools.cxx:25
 RooBlindTools.cxx:26
 RooBlindTools.cxx:27
 RooBlindTools.cxx:28
 RooBlindTools.cxx:29
 RooBlindTools.cxx:30
 RooBlindTools.cxx:31
 RooBlindTools.cxx:32
 RooBlindTools.cxx:33
 RooBlindTools.cxx:34
 RooBlindTools.cxx:35
 RooBlindTools.cxx:36
 RooBlindTools.cxx:37
 RooBlindTools.cxx:38
 RooBlindTools.cxx:39
 RooBlindTools.cxx:40
 RooBlindTools.cxx:41
 RooBlindTools.cxx:42
 RooBlindTools.cxx:43
 RooBlindTools.cxx:44
 RooBlindTools.cxx:45
 RooBlindTools.cxx:46
 RooBlindTools.cxx:47
 RooBlindTools.cxx:48
 RooBlindTools.cxx:49
 RooBlindTools.cxx:50
 RooBlindTools.cxx:51
 RooBlindTools.cxx:52
 RooBlindTools.cxx:53
 RooBlindTools.cxx:54
 RooBlindTools.cxx:55
 RooBlindTools.cxx:56
 RooBlindTools.cxx:57
 RooBlindTools.cxx:58
 RooBlindTools.cxx:59
 RooBlindTools.cxx:60
 RooBlindTools.cxx:61
 RooBlindTools.cxx:62
 RooBlindTools.cxx:63
 RooBlindTools.cxx:64
 RooBlindTools.cxx:65
 RooBlindTools.cxx:66
 RooBlindTools.cxx:67
 RooBlindTools.cxx:68
 RooBlindTools.cxx:69
 RooBlindTools.cxx:70
 RooBlindTools.cxx:71
 RooBlindTools.cxx:72
 RooBlindTools.cxx:73
 RooBlindTools.cxx:74
 RooBlindTools.cxx:75
 RooBlindTools.cxx:76
 RooBlindTools.cxx:77
 RooBlindTools.cxx:78
 RooBlindTools.cxx:79
 RooBlindTools.cxx:80
 RooBlindTools.cxx:81
 RooBlindTools.cxx:82
 RooBlindTools.cxx:83
 RooBlindTools.cxx:84
 RooBlindTools.cxx:85
 RooBlindTools.cxx:86
 RooBlindTools.cxx:87
 RooBlindTools.cxx:88
 RooBlindTools.cxx:89
 RooBlindTools.cxx:90
 RooBlindTools.cxx:91
 RooBlindTools.cxx:92
 RooBlindTools.cxx:93
 RooBlindTools.cxx:94
 RooBlindTools.cxx:95
 RooBlindTools.cxx:96
 RooBlindTools.cxx:97
 RooBlindTools.cxx:98
 RooBlindTools.cxx:99
 RooBlindTools.cxx:100
 RooBlindTools.cxx:101
 RooBlindTools.cxx:102
 RooBlindTools.cxx:103
 RooBlindTools.cxx:104
 RooBlindTools.cxx:105
 RooBlindTools.cxx:106
 RooBlindTools.cxx:107
 RooBlindTools.cxx:108
 RooBlindTools.cxx:109
 RooBlindTools.cxx:110
 RooBlindTools.cxx:111
 RooBlindTools.cxx:112
 RooBlindTools.cxx:113
 RooBlindTools.cxx:114
 RooBlindTools.cxx:115
 RooBlindTools.cxx:116
 RooBlindTools.cxx:117
 RooBlindTools.cxx:118
 RooBlindTools.cxx:119
 RooBlindTools.cxx:120
 RooBlindTools.cxx:121
 RooBlindTools.cxx:122
 RooBlindTools.cxx:123
 RooBlindTools.cxx:124
 RooBlindTools.cxx:125
 RooBlindTools.cxx:126
 RooBlindTools.cxx:127
 RooBlindTools.cxx:128
 RooBlindTools.cxx:129
 RooBlindTools.cxx:130
 RooBlindTools.cxx:131
 RooBlindTools.cxx:132
 RooBlindTools.cxx:133
 RooBlindTools.cxx:134
 RooBlindTools.cxx:135
 RooBlindTools.cxx:136
 RooBlindTools.cxx:137
 RooBlindTools.cxx:138
 RooBlindTools.cxx:139
 RooBlindTools.cxx:140
 RooBlindTools.cxx:141
 RooBlindTools.cxx:142
 RooBlindTools.cxx:143
 RooBlindTools.cxx:144
 RooBlindTools.cxx:145
 RooBlindTools.cxx:146
 RooBlindTools.cxx:147
 RooBlindTools.cxx:148
 RooBlindTools.cxx:149
 RooBlindTools.cxx:150
 RooBlindTools.cxx:151
 RooBlindTools.cxx:152
 RooBlindTools.cxx:153
 RooBlindTools.cxx:154
 RooBlindTools.cxx:155
 RooBlindTools.cxx:156
 RooBlindTools.cxx:157
 RooBlindTools.cxx:158
 RooBlindTools.cxx:159
 RooBlindTools.cxx:160
 RooBlindTools.cxx:161
 RooBlindTools.cxx:162
 RooBlindTools.cxx:163
 RooBlindTools.cxx:164
 RooBlindTools.cxx:165
 RooBlindTools.cxx:166
 RooBlindTools.cxx:167
 RooBlindTools.cxx:168
 RooBlindTools.cxx:169
 RooBlindTools.cxx:170
 RooBlindTools.cxx:171
 RooBlindTools.cxx:172
 RooBlindTools.cxx:173
 RooBlindTools.cxx:174
 RooBlindTools.cxx:175
 RooBlindTools.cxx:176
 RooBlindTools.cxx:177
 RooBlindTools.cxx:178
 RooBlindTools.cxx:179
 RooBlindTools.cxx:180
 RooBlindTools.cxx:181
 RooBlindTools.cxx:182
 RooBlindTools.cxx:183
 RooBlindTools.cxx:184
 RooBlindTools.cxx:185
 RooBlindTools.cxx:186
 RooBlindTools.cxx:187
 RooBlindTools.cxx:188
 RooBlindTools.cxx:189
 RooBlindTools.cxx:190
 RooBlindTools.cxx:191
 RooBlindTools.cxx:192
 RooBlindTools.cxx:193
 RooBlindTools.cxx:194
 RooBlindTools.cxx:195
 RooBlindTools.cxx:196
 RooBlindTools.cxx:197
 RooBlindTools.cxx:198
 RooBlindTools.cxx:199
 RooBlindTools.cxx:200
 RooBlindTools.cxx:201
 RooBlindTools.cxx:202
 RooBlindTools.cxx:203
 RooBlindTools.cxx:204
 RooBlindTools.cxx:205
 RooBlindTools.cxx:206
 RooBlindTools.cxx:207
 RooBlindTools.cxx:208
 RooBlindTools.cxx:209
 RooBlindTools.cxx:210
 RooBlindTools.cxx:211
 RooBlindTools.cxx:212
 RooBlindTools.cxx:213
 RooBlindTools.cxx:214
 RooBlindTools.cxx:215
 RooBlindTools.cxx:216
 RooBlindTools.cxx:217
 RooBlindTools.cxx:218
 RooBlindTools.cxx:219
 RooBlindTools.cxx:220
 RooBlindTools.cxx:221
 RooBlindTools.cxx:222
 RooBlindTools.cxx:223
 RooBlindTools.cxx:224
 RooBlindTools.cxx:225
 RooBlindTools.cxx:226
 RooBlindTools.cxx:227
 RooBlindTools.cxx:228
 RooBlindTools.cxx:229
 RooBlindTools.cxx:230
 RooBlindTools.cxx:231
 RooBlindTools.cxx:232
 RooBlindTools.cxx:233
 RooBlindTools.cxx:234
 RooBlindTools.cxx:235
 RooBlindTools.cxx:236
 RooBlindTools.cxx:237
 RooBlindTools.cxx:238
 RooBlindTools.cxx:239
 RooBlindTools.cxx:240
 RooBlindTools.cxx:241
 RooBlindTools.cxx:242
 RooBlindTools.cxx:243
 RooBlindTools.cxx:244
 RooBlindTools.cxx:245
 RooBlindTools.cxx:246
 RooBlindTools.cxx:247
 RooBlindTools.cxx:248
 RooBlindTools.cxx:249
 RooBlindTools.cxx:250
 RooBlindTools.cxx:251
 RooBlindTools.cxx:252
 RooBlindTools.cxx:253
 RooBlindTools.cxx:254
 RooBlindTools.cxx:255
 RooBlindTools.cxx:256
 RooBlindTools.cxx:257
 RooBlindTools.cxx:258
 RooBlindTools.cxx:259
 RooBlindTools.cxx:260
 RooBlindTools.cxx:261
 RooBlindTools.cxx:262
 RooBlindTools.cxx:263
 RooBlindTools.cxx:264
 RooBlindTools.cxx:265
 RooBlindTools.cxx:266
 RooBlindTools.cxx:267
 RooBlindTools.cxx:268
 RooBlindTools.cxx:269
 RooBlindTools.cxx:270
 RooBlindTools.cxx:271
 RooBlindTools.cxx:272
 RooBlindTools.cxx:273
 RooBlindTools.cxx:274
 RooBlindTools.cxx:275
 RooBlindTools.cxx:276
 RooBlindTools.cxx:277
 RooBlindTools.cxx:278
 RooBlindTools.cxx:279
 RooBlindTools.cxx:280
 RooBlindTools.cxx:281
 RooBlindTools.cxx:282
 RooBlindTools.cxx:283
 RooBlindTools.cxx:284
 RooBlindTools.cxx:285
 RooBlindTools.cxx:286
 RooBlindTools.cxx:287
 RooBlindTools.cxx:288
 RooBlindTools.cxx:289
 RooBlindTools.cxx:290
 RooBlindTools.cxx:291
 RooBlindTools.cxx:292
 RooBlindTools.cxx:293
 RooBlindTools.cxx:294
 RooBlindTools.cxx:295
 RooBlindTools.cxx:296
 RooBlindTools.cxx:297
 RooBlindTools.cxx:298
 RooBlindTools.cxx:299
 RooBlindTools.cxx:300
 RooBlindTools.cxx:301
 RooBlindTools.cxx:302
 RooBlindTools.cxx:303
 RooBlindTools.cxx:304
 RooBlindTools.cxx:305
 RooBlindTools.cxx:306
 RooBlindTools.cxx:307
 RooBlindTools.cxx:308
 RooBlindTools.cxx:309
 RooBlindTools.cxx:310
 RooBlindTools.cxx:311
 RooBlindTools.cxx:312
 RooBlindTools.cxx:313
 RooBlindTools.cxx:314
 RooBlindTools.cxx:315
 RooBlindTools.cxx:316
 RooBlindTools.cxx:317
 RooBlindTools.cxx:318
 RooBlindTools.cxx:319
 RooBlindTools.cxx:320
 RooBlindTools.cxx:321
 RooBlindTools.cxx:322
 RooBlindTools.cxx:323
 RooBlindTools.cxx:324
 RooBlindTools.cxx:325
 RooBlindTools.cxx:326
 RooBlindTools.cxx:327
 RooBlindTools.cxx:328
 RooBlindTools.cxx:329
 RooBlindTools.cxx:330
 RooBlindTools.cxx:331
 RooBlindTools.cxx:332
 RooBlindTools.cxx:333
 RooBlindTools.cxx:334
 RooBlindTools.cxx:335
 RooBlindTools.cxx:336
 RooBlindTools.cxx:337
 RooBlindTools.cxx:338
 RooBlindTools.cxx:339
 RooBlindTools.cxx:340
 RooBlindTools.cxx:341
 RooBlindTools.cxx:342
 RooBlindTools.cxx:343
 RooBlindTools.cxx:344
 RooBlindTools.cxx:345
 RooBlindTools.cxx:346
 RooBlindTools.cxx:347
 RooBlindTools.cxx:348
 RooBlindTools.cxx:349
 RooBlindTools.cxx:350
 RooBlindTools.cxx:351
 RooBlindTools.cxx:352
 RooBlindTools.cxx:353
 RooBlindTools.cxx:354
 RooBlindTools.cxx:355
 RooBlindTools.cxx:356
 RooBlindTools.cxx:357
 RooBlindTools.cxx:358
 RooBlindTools.cxx:359
 RooBlindTools.cxx:360
 RooBlindTools.cxx:361
 RooBlindTools.cxx:362
 RooBlindTools.cxx:363
 RooBlindTools.cxx:364
 RooBlindTools.cxx:365
 RooBlindTools.cxx:366
 RooBlindTools.cxx:367
 RooBlindTools.cxx:368
 RooBlindTools.cxx:369
 RooBlindTools.cxx:370
 RooBlindTools.cxx:371
 RooBlindTools.cxx:372
 RooBlindTools.cxx:373
 RooBlindTools.cxx:374
 RooBlindTools.cxx:375
 RooBlindTools.cxx:376
 RooBlindTools.cxx:377
 RooBlindTools.cxx:378
 RooBlindTools.cxx:379
 RooBlindTools.cxx:380
 RooBlindTools.cxx:381
 RooBlindTools.cxx:382
 RooBlindTools.cxx:383
 RooBlindTools.cxx:384
 RooBlindTools.cxx:385
 RooBlindTools.cxx:386
 RooBlindTools.cxx:387
 RooBlindTools.cxx:388
 RooBlindTools.cxx:389
 RooBlindTools.cxx:390
 RooBlindTools.cxx:391
 RooBlindTools.cxx:392
 RooBlindTools.cxx:393
 RooBlindTools.cxx:394
 RooBlindTools.cxx:395
 RooBlindTools.cxx:396
 RooBlindTools.cxx:397
 RooBlindTools.cxx:398
 RooBlindTools.cxx:399
 RooBlindTools.cxx:400
 RooBlindTools.cxx:401
 RooBlindTools.cxx:402
 RooBlindTools.cxx:403
 RooBlindTools.cxx:404
 RooBlindTools.cxx:405
 RooBlindTools.cxx:406
 RooBlindTools.cxx:407
 RooBlindTools.cxx:408
 RooBlindTools.cxx:409
 RooBlindTools.cxx:410
 RooBlindTools.cxx:411
 RooBlindTools.cxx:412
 RooBlindTools.cxx:413
 RooBlindTools.cxx:414
 RooBlindTools.cxx:415
 RooBlindTools.cxx:416
 RooBlindTools.cxx:417
 RooBlindTools.cxx:418
 RooBlindTools.cxx:419
 RooBlindTools.cxx:420
 RooBlindTools.cxx:421
 RooBlindTools.cxx:422
 RooBlindTools.cxx:423
 RooBlindTools.cxx:424
 RooBlindTools.cxx:425
 RooBlindTools.cxx:426
 RooBlindTools.cxx:427
 RooBlindTools.cxx:428
 RooBlindTools.cxx:429
 RooBlindTools.cxx:430
 RooBlindTools.cxx:431
 RooBlindTools.cxx:432
 RooBlindTools.cxx:433
 RooBlindTools.cxx:434
 RooBlindTools.cxx:435
 RooBlindTools.cxx:436
 RooBlindTools.cxx:437
 RooBlindTools.cxx:438
 RooBlindTools.cxx:439
 RooBlindTools.cxx:440
 RooBlindTools.cxx:441
 RooBlindTools.cxx:442
 RooBlindTools.cxx:443
 RooBlindTools.cxx:444
 RooBlindTools.cxx:445
 RooBlindTools.cxx:446
 RooBlindTools.cxx:447
 RooBlindTools.cxx:448
 RooBlindTools.cxx:449
 RooBlindTools.cxx:450
 RooBlindTools.cxx:451
 RooBlindTools.cxx:452
 RooBlindTools.cxx:453
 RooBlindTools.cxx:454
 RooBlindTools.cxx:455
 RooBlindTools.cxx:456
 RooBlindTools.cxx:457
 RooBlindTools.cxx:458
 RooBlindTools.cxx:459
 RooBlindTools.cxx:460
 RooBlindTools.cxx:461
 RooBlindTools.cxx:462
 RooBlindTools.cxx:463
 RooBlindTools.cxx:464
 RooBlindTools.cxx:465
 RooBlindTools.cxx:466