4 #include "BaseDataClasses.hxx" 13 This are the type enums the BinnedParams class can have
15 For standard weight systematics:
16 - k1D_SYMMETRIC: the systematic depends on a single observable (i.e. momentum) and its error is symmetric
17 - k2D_SYMMETRIC: the systematic depends on two observables (i.e. momentum and angle) and its error is symmetric
18 - k3D_SYMMETRIC: the systematic depends on three observables and its error is symmetric
19 - k1D_SYMMETRIC_NOMEAN: the systematic depends on a single observable (i.e. momentum) and its error is symmetric. The correction is not specified
20 - k2D_SYMMETRIC_NOMEAN: the systematic depends on two observables (i.e. momentum and angle) and its error is symmetric. The correction is not specified
21 - k3D_SYMMETRIC_NOMEAN: the systematic depends on three observables and its error is symmetric. The correction is not specified
24 For efficiency-like weight systematics:
25 - k1D_EFF_SYMMETRIC: the systematic depends on a single observable (i.e. momentum) and its error is symmetric
26 - k2D_EFF_SYMMETRIC, the systematic depends on two observables (i.e. momentum and angle) and its error is symmetric
27 - k3D_EFF_SYMMETRIC, the systematic depends on three observables and its error is symmetric
28 - k1D_EFF_ASSYMMETRIC: the systematic depends on a single observable (i.e. momentum) and its error is assymmetric
29 - k2D_EFF_ASSYMMETRIC: the systematic depends on two observables (i.e. momentum and angle) and its error is assymmetric
30 - k3D_EFF_ASSYMMETRIC, the systematic depends on three observables and its error is assymmetric
35 const UInt_t NMAXSYSTSOURCEBINS = 50;
96 {_min=min; _max=max; Initialize();}
100 {_min=min; _max=max; _min2=min2; _max2=max2; Initialize();}
104 for (
int i = 0; i < kNGraph; i++){
105 if (_graphs[i])
delete _graphs[i];
120 Float_t point = min + max;
123 if (_graphs[kMeanMCANA ] ) _graphs[kMeanMCANA ] -> SetPoint( _graphs[kMeanMCANA ] -> GetN(), point, meanREAL );
124 if (_graphs[kMeanMC ] ) _graphs[kMeanMC ] -> SetPoint( _graphs[kMeanMC ] -> GetN(), point, meanMC );
125 if (_graphs[kSigmaMCl ] ) _graphs[kSigmaMCh ] -> SetPoint( _graphs[kSigmaMCh ] -> GetN(), point, sigmaMCl );
126 if (_graphs[kSigmaMCh ] ) _graphs[kSigmaMCl ] -> SetPoint( _graphs[kSigmaMCl ] -> GetN(), point, sigmaMCh );
127 if (_graphs[kMeanDATA ] ) _graphs[kMeanDATA ] -> SetPoint( _graphs[kMeanDATA ] -> GetN(), point, meanDATA );
128 if (_graphs[kSigmaDATAl ] ) _graphs[kSigmaDATAl ] -> SetPoint( _graphs[kSigmaDATAl ] -> GetN(), point, sigmaDATAl );
129 if (_graphs[kSigmaDATAh ] ) _graphs[kSigmaDATAh ] -> SetPoint( _graphs[kSigmaDATAh ] -> GetN(), point, sigmaDATAh );
133 void Update(Float_t min, Float_t max,
137 Float_t point = min + max;
140 if (_graphs[kMean ] ) _graphs[kMean ] -> SetPoint( _graphs[kMean ] -> GetN(), point, mean);
141 if (_graphs[kSigma ] ) _graphs[kSigma ] -> SetPoint( _graphs[kSigma ] -> GetN(), point, sigma);
144 bool GetValue(BinEnum type, Float_t value, Float_t& result){
145 if (type == kNGraph)
return false;
147 if (!_graphs[type] || _graphs[type]->GetN()<2)
151 result = (Float_t)(_graphs[type]->Eval(value));
172 TGraph* _graphs[kNGraph];
177 for (
int i = 0; i < kNGraph; i++)
178 _graphs[i] =
new TGraph();
195 {_min=min;_max=max;_meanREAL=meanREAL;_meanMC=
meanMC;_sigmaMCl=
sigmaMCl;_sigmaMCh=sigmaMCh;_meanDATA=
meanDATA;_sigmaDATAl=
sigmaDATAl;_sigmaDATAh=sigmaDATAh;}
199 {_min=min;_max=max;_mean=
mean;_sigma=
sigma;}
202 BinnedParamsBin(Float_t min, Float_t max, Float_t min2, Float_t max2, Float_t meanREAL, Float_t
meanMC, Float_t
sigmaMCl,Float_t sigmaMCh,Float_t
meanDATA, Float_t
sigmaDATAl, Float_t sigmaDATAh)
203 {_min=min;_max=max;_min2=min2;_max2=max2;_meanREAL=meanREAL;_meanMC=
meanMC;_sigmaMCl=
sigmaMCl;_sigmaMCh=sigmaMCh;_meanDATA=
meanDATA;_sigmaDATAl=
sigmaDATAl;_sigmaDATAh=sigmaDATAh;}
205 BinnedParamsBin(Float_t min, Float_t max, Float_t min2, Float_t max2,Float_t mean,Float_t sigma)
206 {_min=min;_max=max;_min2=min2;_max2=max2;_mean=
mean;_sigma=
sigma;}
209 BinnedParamsBin(Float_t min, Float_t max, Float_t min2, Float_t max2, Float_t min3, Float_t max3,
211 {_min=min; _max=max; _min2=min2; _max2=max2; _min3=min3; _max3=max3; _meanMC=
meanMC; _meanREAL=meanREAL; _sigmaMCl=
sigmaMCl; _sigmaMCh=sigmaMCh;
214 BinnedParamsBin(Float_t min, Float_t max, Float_t min2, Float_t max2, Float_t min3, Float_t max3, Float_t mean, Float_t sigma)
215 {_min=min; _max=max; _min2=min2; _max2=max2; _min3=min3; _max3=max3; _mean=
mean; _sigma=
sigma;}
259 k1D_SYMMETRIC_NOMEAN,
260 k2D_SYMMETRIC_NOMEAN,
261 k3D_SYMMETRIC_NOMEAN,
290 const std::string& folder_name,
291 const std::string& name,
293 const std::string& extension=
"",
294 bool useInterpolation =
false 310 const std::string& extension=
"",
311 bool useInterpolation =
false){
313 std::string folder_name = std::string(getenv(
"PSYCHESYSTEMATICSROOT")) +
"/data";
328 for (Int_t i = 0; i < _nBins; i++){
329 if (_bins[i])
delete _bins[i];
333 for (Int_t i = 0; i < _nGraphBins; i++){
334 if (_graphBins[i])
delete _graphBins[i];
335 _graphBins[i] = NULL;
360 if (_useInterpolation)
361 AddGraphBin(min, max,
371 void AddBin(Float_t min, Float_t max,
380 if (_useInterpolation)
381 AddGraphBin(min, max,
387 void AddBin(Float_t min, Float_t max, Float_t min2, Float_t max2,
407 if (_useInterpolation)
408 AddGraphBin(min, max, min2, max2,
419 void AddBin(Float_t min, Float_t max, Float_t min2, Float_t max2,
428 if (_useInterpolation)
429 AddGraphBin(min, max, min2, max2,
435 void AddBin(Float_t min, Float_t max, Float_t min2, Float_t max2, Float_t min3, Float_t max3,
454 if (_useInterpolation)
455 AddGraphBin(min, max, min2, max2, min3, max3,
465 void AddBin(Float_t min, Float_t max, Float_t min2, Float_t max2, Float_t min3, Float_t max3,
474 if (_useInterpolation)
475 AddGraphBin(min, max, min2, max2, min3, max3,
481 void AddGraphBin(Float_t min, Float_t max,
490 void AddGraphBin(Float_t min, Float_t max,
496 void AddGraphBin(Float_t min, Float_t max, Float_t min2, Float_t max2,
505 void AddGraphBin(Float_t min, Float_t max, Float_t min2, Float_t max2,
510 void AddGraphBin(Float_t min, Float_t max, Float_t min2, Float_t max2, Float_t min3, Float_t max3,
519 void AddGraphBin(Float_t min, Float_t max, Float_t min2, Float_t max2, Float_t min3, Float_t max3,
537 bool GetBin(Float_t value1, Float_t value2, Float_t value3,
BinnedParamsBin*& bin);
541 bool GetBinIndex(Float_t value, Int_t& index);
544 bool GetParametersForBin(Int_t index, Float_t& mean, Float_t& sigma);
550 return GetParametersForBin(index, mean, sigma);
552 bool GetMeanValueForBin(Int_t index, Float_t& mean){
554 return GetParametersForBin(index, mean, sigma);
561 return GetBinValues(value, mean, sigma, index);
563 bool GetBinValues(Float_t value, Float_t& mean, Float_t& sigma, Int_t& index);
569 return GetBinValues(value, mean, sigma, index);
572 bool GetBinSigmaValue(Float_t value, Float_t& sigma, Int_t& index){
574 return GetBinValues(value, mean, sigma, index);
578 bool GetBinMeanValue(Float_t value, Float_t& mean){
581 return GetBinValues(value, mean, sigma, index);
584 bool GetBinMeanValue(Float_t value, Float_t& mean, Int_t& index){
586 return GetBinValues(value, mean, sigma, index);
592 return GetBinValues(value, params, index);
597 bool GetBinValues(Float_t value1, Float_t value2, Float_t& mean, Float_t& sigma){
599 return GetBinValues(value1, value2, mean, sigma, index);
602 bool GetBinValues(Float_t value1, Float_t value2, Float_t& mean, Float_t& sigma, Int_t& index);
608 return GetBinValues(value1, value2, mean, sigma, index);
611 bool GetBinSigmaValue(Float_t value1, Float_t value2, Float_t& sigma, Int_t& index){
613 return GetBinValues(value1, value2, mean, sigma, index);
617 bool GetBinMeanValue(Float_t value1, Float_t value2, Float_t& mean){
620 return GetBinValues(value1, value2, mean, sigma, index);
623 bool GetBinMeanValue(Float_t value1, Float_t value2, Float_t& mean, Int_t& index){
625 return GetBinValues(value1, value2, mean, sigma, index);
630 return GetBinValues(value1, value2, params, index);
633 bool GetBinValues(Float_t value1, Float_t value2,
BinnedParamsParams& params, Int_t& index);
636 bool GetBinValues(Float_t value1, Float_t value2, Float_t value3, Float_t& mean, Float_t& sigma){
638 return GetBinValues(value1, value2, value3, mean, sigma, index);
641 bool GetBinValues(Float_t value1, Float_t value2, Float_t value3, Float_t& mean, Float_t& sigma, Int_t& index);
647 return GetBinValues(value1, value2, value3, mean, sigma, index);
650 bool GetBinSigmaValue(Float_t value1, Float_t value2, Float_t value3, Float_t& sigma, Int_t& index){
652 return GetBinValues(value1, value2, value3, mean, sigma, index);
656 bool GetBinMeanValue(Float_t value1, Float_t value2, Float_t value3, Float_t& mean){
659 return GetBinValues(value1, value2, value3, mean, sigma, index);
662 bool GetBinMeanValue(Float_t value1, Float_t value2, Float_t value3, Float_t& mean, Int_t& index){
664 return GetBinValues(value1, value2, value3, mean, sigma, index);
667 bool GetBinValues(Float_t value1, Float_t value2, Float_t value3,
BinnedParamsParams& params){
669 return GetBinValues(value1, value2, value3, params, index);
672 bool GetBinValues(Float_t value1, Float_t value2, Float_t value3,
BinnedParamsParams& params, Int_t& index);
682 bool GetInterBinValues(Float_t value1, Float_t value2, Float_t value3,
BinnedParamsParams& params);
688 void SetName(
const std::string& name){_name = name;}
706 void Read(
const std::string& inputDirName,
const std::string& extension=
"");
712 bool UpdateEfficiencyCounter(Int_t index,
bool correct);
716 for( UInt_t i=0;i<NMAXSYSTSOURCEBINS;i++){
722 Int_t GetNCorrectAssoc(Int_t index){
723 if((UInt_t)index>=NMAXSYSTSOURCEBINS) {index=NMAXSYSTSOURCEBINS-1;std::cout<<
" BinnedParams:: error index>" << NMAXSYSTSOURCEBINS <<std::endl;}
724 return _ncorrect[index];
726 Int_t GetNWrongAssoc(Int_t index){
727 if((UInt_t)index>=NMAXSYSTSOURCEBINS) {index=NMAXSYSTSOURCEBINS;std::cout<<
" BinnedParams:: error index>"<< NMAXSYSTSOURCEBINS <<std::endl;}
728 return _nwrong[index];
739 const std::string& folder_name,
740 const std::string& name,
742 const std::string& extension,
743 bool useInterpolation
747 Int_t _ncorrect[NMAXSYSTSOURCEBINS];
750 Int_t _nwrong[NMAXSYSTSOURCEBINS];
771 TypeShortEnum _typeShort;
774 bool _useInterpolation;
void AddBin(Float_t min, Float_t max, Float_t min2, Float_t max2, Float_t meanREAL, Float_t meanMC, Float_t sigmaMCl, Float_t sigmaMCh, Float_t meanDATA, Float_t sigmaDATAl, Float_t sigmaDATAh)
Add a new bin for a 2D source.
Float_t _meanREAL
mean and sigma for this bin
BinnedParamsBin()
default constructor
bool GetBinValues(Float_t value1, Float_t value2, Float_t value3, Float_t &mean, Float_t &sigma)
Gets the bin values for a 3D source.
bool GetBinSigmaValue(Float_t value1, Float_t value2, Float_t &sigma)
Get only sigma.
bool GetInterpolationStatus()
Returns the type of the data.
const std::string & GetDataName()
Get the name of the source.
void SetName(const std::string &name)
Set the name.
Float_t sigma
The sigma value for each of the systematic parameters of the control sample taking errors from data a...
Float_t _min2
bin limits (for 3D)
Float_t _min
bin limits (for 1D and 2D)
Float_t _min2
bin limits (only for 2D)
void AddBin(Float_t min, Float_t max, Float_t min2, Float_t max2, Float_t min3, Float_t max3, Float_t meanREAL, Float_t meanMC, Float_t sigmaMCl, Float_t sigmaMCh, Float_t meanDATA, Float_t sigmaDATAl, Float_t sigmaDATAh)
Add a new bin for a 3D source.
bool GetBinValues(Float_t value, Float_t &mean, Float_t &sigma)
Gets the bin values for a 1D source.
BinnedParamsGraphBin(Float_t min, Float_t max)
Constructor for 2D bin.
Float_t meanDATA
The mean value for each of the systematic parameters of the control sample.
Float_t _sigmaDATAl
Efficiency of the DATA control sample.
Float_t _mean
mean and sigma for this bin
TypeEnum GetDataType()
Returns the type of the data.
BinnedParams(const std::string &name, TypeEnum type, const std::string &extension="", bool useInterpolation=false)
Constructor provided the name and the type, this is to make current psycheSystematics work...
BinnedParamsBin(Float_t min, Float_t max, Float_t meanREAL, Float_t meanMC, Float_t sigmaMCl, Float_t sigmaMCh, Float_t meanDATA, Float_t sigmaDATAl, Float_t sigmaDATAh)
Constructor for 1D bin.
Float_t meanMC
The mean value for each of the systematic parameters of the control sample.
BinnedParamsBin(Float_t min, Float_t max, Float_t min2, Float_t max2, Float_t meanREAL, Float_t meanMC, Float_t sigmaMCl, Float_t sigmaMCh, Float_t meanDATA, Float_t sigmaDATAl, Float_t sigmaDATAh)
Constructor for 2D bin.
void AddBin(Float_t min, Float_t max, Float_t meanREAL, Float_t meanMC, Float_t sigmaMCl, Float_t sigmaMCh, Float_t meanDATA, Float_t sigmaDATAl, Float_t sigmaDATAh)
Add a new bin for a 1D source.
Float_t _min3
bin limits (only for 3D)
Float_t _sigmaMCl
Efficiency of the MC control sample.
BinnedParams(const std::string &folder_name, const std::string &name, TypeEnum type, const std::string &extension="", bool useInterpolation=false)
Constructor provided the folder name, name and the type.
TypeEnum
Enumerator describing the values that _type member can take.
BinnedParamsGraphBin()
default constructor
Float_t mean
The mean value for each of the systematic parameters of the control sample.
void SetInterpolationUsage(bool use)
Set the name.
~BinnedParamsGraphBin()
default destructor
Float_t meanMCANA
The mean value for each of the systematic parameters of the analysis sample.
Float_t _min
bin limits (for 2D)
Float_t _sigmaMCh
Low error on Efficiency of the MC control sample.
BinnedParamsBin(Float_t min, Float_t max, Float_t min2, Float_t max2, Float_t min3, Float_t max3, Float_t meanREAL, Float_t meanMC, Float_t sigmaMCl, Float_t sigmaMCh, Float_t meanDATA, Float_t sigmaDATAl, Float_t sigmaDATAh)
Constructor for 3D bin.
Float_t _meanMC
Efficiency of the MC analysis sample.
Float_t sigmaDATAl
The sigma value for each of the systematic parameters of the control sample /// with possibility of a...
void InitializeEfficiencyCounter()
Initialize counters.
bool GetBinSigmaValue(Float_t value, Float_t &sigma)
Get only sigma.
Int_t _index
high error on Efficiency of the DATA control sample
bool GetBinSigmaValue(Float_t value1, Float_t value2, Float_t value3, Float_t &sigma)
Get only sigma.
Float_t _sigmaDATAh
Low error on Efficiency of the DATA control sample.
Int_t GetNBins()
Get the number of bins.
BinnedParamsGraphBin(Float_t min, Float_t max, Float_t min2, Float_t max2)
Constructor for 3D bin.
void Update(Float_t min, Float_t max, Float_t meanREAL, Float_t meanMC, Float_t sigmaMCl, Float_t sigmaMCh, Float_t meanDATA, Float_t sigmaDATAl, Float_t sigmaDATAh)
Update.
Float_t _meanDATA
high error on Efficiency of the MC control sample
~BinnedParamsBin()
default destructor
bool GetSigmaValueForBin(Int_t index, Float_t &sigma)
Get only mean or sigma.
bool GetBinValues(Float_t value1, Float_t value2, Float_t &mean, Float_t &sigma)
Gets the bin values for a 2D source.