9#ifndef ANALYSISCALIBRATIONDATAINTERFACEROOT_H
10#define ANALYSISCALIBRATIONDATAINTERFACEROOT_H
17#include "TMatrixDSym.h"
91 CalibrationDataInterfaceROOT(
const std::string& taggerName,
const std::string& configname =
"BTagCalibration.env",
const std::string& pathname =
"");
95 const char* fileSF,
const char* fileEff,
96 const std::vector<std::string>& jetAliases,
97 const std::map<std::string, std::string>& SFNames,
98 const std::map<std::string, std::vector<std::string> >& EffNames,
99 const std::map<std::string, std::vector<std::string> >& excludeFromEV,
100 const std::map<std::string, Analysis::EVReductionStrategy>& EVReductions,
102 bool useTopologyRescaling =
false,
bool useRecommendedEVExclusions =
false,
103 bool verbose =
true, std::vector<std::string> flavours = {
"B",
"C",
"Light",
"T"}
124 const std::string&
label,
const std::string& OP,
126 unsigned int mapIndex = 0);
130 const std::string&
label,
const std::string& OP,
131 Uncertainty unc,
const std::string& flavour,
unsigned int numVariation = 0,
132 unsigned int mapIndex = 0);
136 const std::string&
label,
const std::string& OP,
138 unsigned int mapIndex = 0);
142 const std::string&
label,
const std::string& OP,
144 unsigned int mapIndex = 0);
148 const std::string& OP,
Uncertainty unc =
None,
unsigned int mapIndex = 0);
152 const std::string& OP,
Uncertainty unc =
None,
unsigned int mapIndex = 0);
165 const std::string&
label,
166 const std::string& OP,
186 const std::string& author,
bool isSF,
unsigned int&
index,
187 unsigned int mapIndex = 0);
194 unsigned int indexSF,
unsigned int indexEff,
195 Uncertainty unc,
const std::string& flavour,
unsigned int numVariation = 0);
199 unsigned int indexSF,
unsigned int indexEff,
200 Uncertainty unc,
const std::string& flavour,
unsigned int numVariation = 0);
204 unsigned int indexSF,
unsigned int indexEff,
205 Uncertainty unc,
const std::string& flavour,
unsigned int numVariation = 0);
209 unsigned int indexSF,
unsigned int indexEff,
210 Uncertainty unc,
const std::string& flavour,
unsigned int numVariation = 0);
223 unsigned indexSF,
unsigned int indexEff)
const;
235 const std::string& flavour,
bool named =
false);
243 std::string
fullName(
const std::string& author,
const std::string& OP,
244 const std::string&
label,
bool isSF,
unsigned mapIndex = 0)
const;
256 unsigned int indexSF,
unsigned int indexEff,
262 unsigned int indexSF,
unsigned int indexEff,
268 unsigned int indexSF,
unsigned int indexEff,
274 unsigned int indexSF,
unsigned int indexEff,
293 Uncertainty unc,
unsigned int numVariation = 0,
unsigned int mapIndex = 0);
297 unsigned int indexSF,
unsigned int indexEff,
302 unsigned int indexSF,
unsigned int indexEff,
310 const std::string&
label,
311 const std::string& OP,
312 unsigned int mapindex = 0);
315 unsigned int mapindex = 0);
330 const std::string& OP,
unsigned int mapIndex = 0);
337 const std::string& OP);
347 const std::string& OP,
const std::string& unc,
356 const std::string& OP,
const std::string& unc =
"all");
376 std::map<std::string, std::string>
m_refs;
414 std::string
getAlias(
const std::string& author)
const;
426 std::map<const CalibrationDataContainer*, std::shared_ptr<CalibrationDataEigenVariations> >
m_eigenVariationsMap;
459 std::map<std::string, HadronisationReferenceHelper*>
m_refMap;
const boost::regex ref(r_ef)
This is the interface for the objects to be stored in the calibration ROOT file.
CalibrationDataInterfaceBase()
bool getReference(const std::string &spec, std::string &ref) const
Retrieve the (full) name of the reference histogram, given the hadronisation specification.
HadronisationReferenceHelper()
std::map< std::string, std::string > m_refs
map from hadronisation specification to container name
HadronisationReferenceHelper(TMap *mapSF, TMap *mapEff)
This tool provides an interface to flavour tagging performance estimates.
bool m_verbose
if true, allow also for some informational (and not only error/warning) messages
std::vector< std::pair< unsigned int, unsigned int > > m_checkedWeightScaleFactors
bool m_useTopologyRescaling
specify whether or not to use MC/MC (topology) scale factors (also this steering option may be remove...
CalibResult getWeightScaleFactor(const CalibrationDataVariables &variables, const std::string &label, Uncertainty unc, unsigned int numVariation=0, unsigned int mapIndex=0)
efficiency scale factor retrieval by name
std::map< std::string, unsigned int > m_objectIndices
std::map< std::string, std::string > m_aliases
Do not attempt to persistify (PROOF)
TFile * m_fileSF
Do not attempt to persistify (PROOF)
void increaseCounter(unsigned int index, OutOfBoundsType oob=Main)
bool m_useRecommendedEVExclusions
if true, exclude pre-recommended lists of uncertainties from the covariance matrix building,...
std::map< std::string, HadronisationReferenceHelper * > m_refMap
the following maps (one for each directory) specify the name of the container serving as the 'hadroni...
TFile * m_fileEff
pointer to the TFile object providing access to the calibrations
CalibResult getInefficiencyScaleFactor(const CalibrationDataVariables &variables, const std::string &label, const std::string &OP, Uncertainty unc, unsigned int numVariation=0, unsigned int mapIndex=0)
"MC" inefficiency scale factor retrieval by name
std::string nameFromIndex(unsigned int index) const
Retrieve the name of the calibration object (container) given its index.
bool retrieveCalibrationIndex(const std::string &label, const std::string &OP, const std::string &author, bool isSF, unsigned int &index, unsigned int mapIndex=0)
Retrieve the index of the calibration object (container) starting from the label and operating point.
std::string fullName(const std::string &author, const std::string &OP, const std::string &label, bool isSF, unsigned mapIndex=0) const
@ brief construct the full object pathname from its individual components
OutOfBoundsStrategy m_otherStrategy
const TH1 * getBinnedScaleFactors(const std::string &author, const std::string &label, const std::string &OP)
retrieve the binned calibration object for the given flavour label and operating point.
unsigned int getNumVariations(const std::string &author, const std::string &label, const std::string &OP, Uncertainty unc)
retrieve the number of variations relevant to the calibration object.
CalibrationDataContainer * retrieveContainer(const std::string &label, const std::string &OP, const std::string &author, const std::string &cntname, bool isSF, bool doPrint=true)
utility function taking care of object retrieval
bool m_runEigenVectorMethod
decide whether to run the eigenvector method or not
virtual ~CalibrationDataInterfaceROOT()
default destructor
OutOfBoundsStrategy m_absEtaStrategy
CalibrationDataInterfaceROOT()
default constructor for PROOF object retrieval
std::map< std::string, std::map< std::string, float > > m_coefficientMap
CalibrationStatus runEigenVectorRecomposition(const std::string &author, const std::string &label, const std::string &OP, unsigned int mapindex=0)
run EigenVector Recomposition method
std::vector< unsigned int > m_extrapolatedCounters
CalibResult getInefficiency(const CalibrationDataVariables &variables, const std::string &label, const std::string &OP, Uncertainty unc, unsigned int numVariation=0, unsigned int mapIndex=0)
inefficiency retrieval by name
std::map< std::string, Analysis::EVReductionStrategy > m_EVReductions
Eigenvector reduction strategy (per flavour)
std::vector< std::string > m_flavours
const TObject * getMCEfficiencyObject(const std::string &author, const std::string &label, const std::string &OP, unsigned int mapIndex=0)
retrieve the MC efficiency (central values) object for the given flavour label and operating point.
bool m_useMCMCSF
specify whether or not to use MC/MC (hadronisation) scale factors (the fact that this is steerable is...
std::vector< std::string > listScaleFactorUncertainties(const std::string &author, const std::string &label, const std::string &OP, bool named=false)
retrieve the list of "uncertainties" relevant to the calibration object.
CalibResult getScaleFactor(const CalibrationDataVariables &variables, const std::string &label, const std::string &OP, Uncertainty unc, unsigned int numVariation=0, unsigned int mapIndex=0)
efficiency scale factor retrieval by name.
std::map< std::string, std::map< std::string, float > > getEigenVectorRecompositionCoefficientMap()
Get Eigenvector recomposition map after running runEigenVectorRecomposition()
std::vector< int > m_hadronisationReference
store the 'hadronisation' reference for each object (-1 means no reference found)
TMatrixDSym getScaleFactorCovarianceMatrix(const std::string &author, const std::string &label, const std::string &OP, const std::string &unc="all")
retrieve the named covariance matrix element corresponding to the binned calibration object.
CalibResult getMCInefficiency(const CalibrationDataVariables &variables, const std::string &label, const std::string &OP, Uncertainty unc=None, unsigned int mapIndex=0)
"MC" inefficiency retrieval by name
const TH1 * getShiftedScaleFactors(const std::string &author, const std::string &label, const std::string &OP, const std::string &unc, double sigmas)
retrieve the binned calibration object for the given flavour label and operating point,...
CalibResult getMCEfficiency(const CalibrationDataVariables &variables, const std::string &label, const std::string &OP, Uncertainty unc=None, unsigned int mapIndex=0)
"MC" efficiency retrieval by name
std::string getAlias(const std::string &author) const
associated alias retrieval method
std::map< std::string, std::vector< std::string > > m_excludeFromCovMatrix
store the uncertainties which should be excluded from building the full covariance matrix
double getMCMCScaleFactor(const CalibrationDataVariables &variables, unsigned indexSF, unsigned int indexEff) const
MC/MC scale factor retrieval.
std::vector< CalibrationDataContainer * > m_objects
cache the objects themselves (so that the user will not have to delete them after each call etc....
double m_maxAbsEta
|eta| bounds and strategy for dealing with out-of-bounds conditions
CalibResult getEfficiency(const CalibrationDataVariables &variables, const std::string &label, const std::string &OP, Uncertainty unc, const std::string &flavour, unsigned int numVariation=0, unsigned int mapIndex=0)
efficiency retrieval by name
std::vector< unsigned int > m_mainCounters
std::vector< unsigned int > m_etaCounters
counters for flagging out-of-bound cases
std::map< const CalibrationDataContainer *, std::shared_ptr< CalibrationDataEigenVariations > > m_eigenVariationsMap
store the eigenvector class and associate to its CalibrationDataContainer
bool checkAbsEta(const CalibrationDataVariables &variables, unsigned int index)
void checkWeightScaleFactors(unsigned int indexSF, unsigned int indexEff)
CalibrationDataInterfaceROOT(const std::string &taggerName, const std::string &configname="BTagCalibration.env", const std::string &pathname="")
main constructor for "stand-alone" use (with information fed in from a .env configuration file read b...
std::string m_filenameEff
std::string m_filenameSF
in addition, store also the filenames themselves (needed for the copy constructor)
This class (struct, actually) is nothing but a light-weight container of (kinematic or other) variabl...
std::string label(const std::string &format, int i)
The namespace of all packages in PhysicsAnalysis/JetTagging.
EVReductionStrategy
specification of Eigenvector variations reduction strategy.
OutOfBoundsType
counter types (to be used when flagging out-of-bounds cases)
std::pair< double, double > CalibResult
Uncertainty
specification of type information requested by the user
OutOfBoundsStrategy
strategies for dealing with specified kinematic variables being outside their range of validity: igno...