![]() |
DAS
3.0
Das Analysis System
|
Namespaces | |
| BTagging | |
| Chebyshev | |
| DoubleCrystalBall | |
| JetEnergy | |
| Jets | |
| JetVeto | |
| MissingET | |
| MN | |
| Muon | |
| Muons | |
| Normalisation | |
| Photon | |
| Prefiring | |
| PUprofile | |
| PUstaub | |
| TPS | |
| Uncertainties | |
| Unfolding | |
Classes | |
| class | AbstractEvent |
| struct | AbstractPhysicsObject |
| struct | ControlPlots |
| class | CorrectionlibSFApplier |
| struct | Di |
| class | GenericHistSFApplier |
| struct | GenEvent |
| struct | GenJet |
| struct | GenMuon |
| struct | GenPhoton |
| struct | Greta |
| struct | GretaPolynomial |
| class | GretaPolynomialReader |
| struct | Helper |
| class | JMEmatching |
| struct | MET |
| struct | Parameters |
| class | PhysicsObject |
| struct | PileUp |
| struct | PrimaryVertex |
| struct | RecEvent |
| struct | RecJet |
| struct | RecMuon |
| struct | RecPhoton |
| class | Teddy |
| struct | Thunberg |
| struct | Trigger |
| struct | TriggerLumi |
| struct | Weight |
Typedefs | |
| using | GenDijet = Di< GenJet, GenJet > |
| using | GenDimuon = Di< GenMuon, GenMuon > |
| using | GenZJet = Di< GenDimuon, GenJet > |
| using | GenMmg = Di< GenDimuon, GenPhoton > |
| using | RecDijet = Di< RecJet, RecJet > |
| using | RecDimuon = Di< RecMuon, RecMuon > |
| using | RecZJet = Di< RecDimuon, RecJet > |
| using | RecMmg = Di< RecDimuon, RecPhoton > |
| typedef ROOT::Math::LorentzVector< ROOT::Math::PtEtaPhiM4D< float > > | FourVector |
| typedef std::vector< Weight > | Weights |
Enumerations | |
| enum | BinningOptions { default_def = 0b00, logarithmic = 0b01, step = 0b10 } |
Functions | |
| void | mergeNtuples (const vector< fs::path > &inputs, const fs::path &output, const pt::ptree &config, const int steering, const DT::Slice slice={1, 0}) |
| std::vector< TString > | MakeTitle (const std::vector< double > &edges, const char *v, bool lowEdge, bool highEdge, std::function< const char *(double)> format) |
| Darwin::Tools::Options | Options (const char *, int=Darwin::Tools::none) |
| std::unique_ptr< TH1 > | getHistSafe (std::unique_ptr< TFile > &f, const std::string &name) |
| double | identity (double x) |
| template<const size_t d> | |
| TF1 * | GetSmoothFit (TH1 *h, int ifm, int ifM, int nSigmaStop=0, const char *options="Q0SNRE", bool autoStop=false) |
| template<const size_t d> | |
| TF1 * | GetSmoothFit (TH1 *h, double m, double M, int nSigmaStop=0, const char *options="Q0SNRE", bool autoStop=false) |
| bool | pt_sort (const PhysicsObject &j1, const PhysicsObject &j2) |
| template<typename T = double> | |
| std::vector< T > | MakeBinning (std::pair< T, T > range, double param, int opt=BinningOptions::default_def) |
| template<typename TTreePtr > | |
| bool | branchExists (const TTreePtr &tree, TString brName) |
| template<typename T > | |
| std::vector< T * > | GetObjects (TDirectory *dir) |
| TDirectory * | GetDirectory (TDirectory *dir, const std::vector< const char * > &names) |
| void | EventLoop (const vector< fs::path > &inputs, const fs::path &output, const pt::ptree &config, const int steering, const DT::Slice slice={1, 0}) |
| void | SimpleExec (const fs::path &input, const fs::path &output, const pt::ptree &config, const int steering) |
| void | getDPSobservable (const vector< fs::path > &inputs, const fs::path &output, const pt::ptree &config, const int steering, const DT::Slice slice={1, 0}) |
| vector< double > | GetTriggerTurnons (const fs::path &f) |
| void | getMETfraction (const vector< fs::path > &inputs, const fs::path &output, const pt::ptree &config, const int steering, const DT::Slice slice={1, 0}) |
| void | applyZeroBiasNormalisation (const vector< fs::path > &inputs, const fs::path &output, const pt::ptree &config, const int steering, const DT::Slice slice={1, 0}) |
| std::map< int, TriggerLumi > | GetLumiFromFiles (const std::filesystem::path &lumi_file, const std::filesystem::path &turnon_file) |
| map< int, TriggerLumi > | GetLumiFromFiles (const fs::path &lumi_file, const fs::path &turnon_file) |
| bool | operator== (const PhysicsObject &l, const PhysicsObject &r) |
| bool | operator< (const PhysicsObject &l, const PhysicsObject &r) |
| bool | operator> (const PhysicsObject &l, const PhysicsObject &r) |
| bool | operator== (const Weight &w, const int v) |
| bool | operator== (const Weight &w, const float v) |
| bool | operator== (const Weight &w, const double v) |
| bool | operator== (const Weight &l, const Weight &r) |
| double | operator* (const Weight &w, const int v) |
| double | operator* (const int v, const Weight &w) |
| double | operator* (const Weight &w, const float v) |
| double | operator* (const float v, const Weight &w) |
| double | operator* (const Weight &w, const double v) |
| double | operator* (const double v, const Weight &w) |
| Weight & | operator*= (Weight &w, const int v) |
| Weight & | operator/= (Weight &w, const int v) |
| Weight & | operator*= (Weight &w, const float v) |
| Weight & | operator/= (Weight &w, const float v) |
| Weight & | operator*= (Weight &w, const double v) |
| Weight & | operator/= (Weight &w, const double v) |
| double | operator* (const Weight &w1, const Weight &w2) |
| Weights & | operator*= (Weights &wgts, const int v) |
| Weights & | operator/= (Weights &wgts, const int v) |
| Weights & | operator*= (Weights &wgts, const float v) |
| Weights & | operator/= (Weights &wgts, const float v) |
| Weights & | operator*= (Weights &wgts, const double v) |
| Weights & | operator/= (Weights &wgts, const double v) |
| void | getHighScalePUeventIDs (const vector< fs::path > &inputs, const fs::path &output, const pt::ptree &config, const int steering, const DT::Slice slice={1, 0}) |
| void | getHighScalePUeventIDsHT (const vector< fs::path > &inputs, const fs::path &output, const pt::ptree &config, const int steering, const DT::Slice slice={1, 0}) |
| pair< int, int > | GetBinRange (TH1 *h) |
| void | ScaleWidth (TH1 *h, TH2 *cov) |
| void | getSmoothFits (const fs::path &input, const fs::path &output, const pt::ptree &config, const int steering, const DT::Slice slice={1, 0}) |
| Eigen::VectorXd | identity (const Eigen::VectorXd &x) |
Variables | |
| static const std::vector< double > | pthat_edges {30,34,39,44,50,56,63,71,80,89,98,108,120,131,143,156,170,196,226,260,300,336,375,420,470,500,531,564,600,645,693,744,800,846,894,946,1000,1088,1183,1287,1400,1491,1587,1690,1800,1934,2078,2233,2400,2579,2771,2978,3200,3578,4000,4472,5000} |
| static const std::vector< double > | pt_edges {9, 12, 15,18,21,24,28,32,37,43,49,56,64,74,84,97,114,133,153,174,196,220,245,272,300,330,362,395,430,468,507,548,592,638,686,737,790,846,905,967,1032,1101,1172,1248,1327,1410,1497,1588,1684,1784,1890,2000,2116,2238,2366,2500,2640,2787,2941,3103,3273,3450,3637,3832,4037} |
| static const std::vector< double > | Mjj_edges {160, 200, 249, 306, 372, 449, 539, 641, 756, 887, 1029, 1187, 1361, 1556, 1769, 2008, 2273, 2572, 2915, 3306, 3754, 4244, 4805, 5374, 6094, 6908, 7861, 8929, 10050 } |
| static const std::vector< double > | pt_av_edges {147, 175, 207, 243, 284, 329, 380, 437, 499, 569, 646, 732, 827, 931, 1046, 1171, 1307, 1458, 1621, 1806, 2003, 2217, 2453, 2702} |
| static const std::vector< double > | y_edges {0.0, 0.5, 1.0, 1.5, 2.0, 2.5, 3.0} |
| static const std::vector< double > | n_edges {0.5, 1.5, 2.5, 3.5, 4.5, 5.5, 6.5, 7.5} |
| static const int | nYbins = y_edges.size()-1 |
| static const int | nPtBins = pt_edges.size()-1 |
| static const int | nMjjBins = Mjj_edges.size()-1 |
| static const int | nPtDijetBins = pt_av_edges.size()-1 |
| static const int | maxMult = n_edges.size()-1 |
| static const std::vector< TString > | yBins = MakeTitle(y_edges, "|y|", false, true, [](double v) { return Form("%.1f", v);} ) |
| static const double | ptmin = pt_edges.front() |
| static const double | ptmax = pt_edges.back() |
| static const double | ymin = y_edges.front() |
| static const double | ymax = y_edges.back() |
| static const int | nPUbins = 100 |
| static const std::vector< double > | binsY = {0., 0.25, .5, 0.75, 1., 1.25, 1.5, 1.75, 2., 2.25, 2.5, 2.75, 3., 3.25, 3.5, 3.75, 4., 4.25, 4.5, 4.75, 5., 5.25, 5.5, 5.75, 6., 6.25, 6.5, 6.75, 7., 7.25, 7.5, 7.75, 8., 8.25, 8.5, 8.75, 9., 9.25, 9.5} |
| static const std::vector< double > | binsPhi = {0.,.1*M_PI, .2*M_PI, .3*M_PI, .4*M_PI, .5*M_PI, .6*M_PI, .7*M_PI, .8*M_PI, .9*M_PI, M_PI} |
| const std::string | SysUp = "Up" |
| const std::string | SysDown = "Down" |
| typedef ROOT::Math::LorentzVector< ROOT::Math::PtEtaPhiM4D< float > > FourVector |
| enum BinningOptions |
| void DAS::applyZeroBiasNormalisation | ( | const vector< fs::path > & | inputs, |
| const fs::path & | output, | ||
| const pt::ptree & | config, | ||
| const int | steering, | ||
| const DT::Slice | slice = {1,0} |
||
| ) |
Normalise with effective luminosity or prescales. The weight $\frac{ \text{Prescale} * \mathcal{L}^{-1} }{ \epsilon_\text{trigger} } $ is applied by event. Apply phaseSelection and remove events already covered by jet triggers.
To combine ZeroBias and JetHT together, we take the first trigger's TurnOn point(lowest pt threshold in $DARWIN_TABLES/triggers/lumi) as maxpt.
| inputs | input ROOT files (n-tuples) |
| output | output ROOT file (n-tuple) |
| config | config handled with `Darwin::Tools::options` |
| steering | parameters obtained from explicit options |
| slice | number and index of slice |
| bool DAS::branchExists | ( | const TTreePtr & | tree, |
| TString | brName | ||
| ) |
Check if branch exists
Loop over branches of tree and check if brName exists
| void DAS::EventLoop | ( | const vector< fs::path > & | inputs, |
| const fs::path & | output, | ||
| const pt::ptree & | config, | ||
| const int | steering, | ||
| const DT::Slice | slice = {1,0} |
||
| ) |
| pair<int,int> DAS::GetBinRange | ( | TH1 * | h | ) |
|
inline |
Get ((...)sub)subdirectory of dir.
| void DAS::getDPSobservable | ( | const vector< fs::path > & | inputs, |
| const fs::path & | output, | ||
| const pt::ptree & | config, | ||
| const int | steering, | ||
| const DT::Slice | slice = {1,0} |
||
| ) |
Calculates and histograms DPS observables from mixed events.
| inputs | input ROOT file(s) or directory |
| output | output ROOT file (histograms) |
| config | config handled with `Darwin::Tools::options` |
| steering | parameters obtained from explicit options |
| slice | number and index of slice |
| void DAS::getHighScalePUeventIDs | ( | const vector< fs::path > & | inputs, |
| const fs::path & | output, | ||
| const pt::ptree & | config, | ||
| const int | steering, | ||
| const DT::Slice | slice = {1,0} |
||
| ) |
Make a 2-column list of MB event IDs with the max genpt (if any).
Unlike most commands, this command should be run on the output of the n-tupliser directly, and only makes sense (even though it would technically work) for MB samples without pileup.
| inputs | input ROOT files (n-tuples) |
| output | output ROOT file (n-tuple) |
| config | config handled with `Darwin::Tools::options` |
| steering | parameters obtained from explicit options |
| slice | number and index of slice |
| void DAS::getHighScalePUeventIDsHT | ( | const vector< fs::path > & | inputs, |
| const fs::path & | output, | ||
| const pt::ptree & | config, | ||
| const int | steering, | ||
| const DT::Slice | slice = {1,0} |
||
| ) |
Make a 2-column list of MB event IDs with the max genht (if any).
Unlike most commands, this command should be run on the output of the n-tupliser directly, and only makes sense (even though it would technically work) for MB samples without pileup.
| inputs | input ROOT files (n-tuples) |
| output | output ROOT file (n-tuple) |
| config | config handled with `Darwin::Tools::options` |
| steering | parameters obtained from explicit options |
| slice | number and index of slice |
|
inline |
Gets an histogram from a TFile.
| Darwin::Exceptions::BadInput | if the histogram doesn't exist |
| map<int, TriggerLumi> DAS::GetLumiFromFiles | ( | const fs::path & | lumi_file, |
| const fs::path & | turnon_file | ||
| ) |
GetLumiFromFiles returns a map containing key value pairs corresponding to the trigger threshold at HLT (e.g. 40, 60, etc.) and the object containing the turn-on point and its effective luminosity.
| std::map<int, TriggerLumi> DAS::GetLumiFromFiles | ( | const std::filesystem::path & | lumi_file, |
| const std::filesystem::path & | turnon_file | ||
| ) |
path to text file with turn-on points
| lumi_file | path to text file with effective luminosities |
| void DAS::getMETfraction | ( | const vector< fs::path > & | inputs, |
| const fs::path & | output, | ||
| const pt::ptree & | config, | ||
| const int | steering, | ||
| const DT::Slice | slice = {1,0} |
||
| ) |
| std::vector<T*> DAS::GetObjects | ( | TDirectory * | dir | ) |
Find all objects of type T directly in a TDirectory (i.e. not recursive)
| TF1* DAS::GetSmoothFit | ( | TH1 * | h, |
| double | m, | ||
| double | M, | ||
| int | nSigmaStop = 0, |
||
| const char * | options = "Q0SNRE", |
||
| bool | autoStop = false |
||
| ) |
| TF1* DAS::GetSmoothFit | ( | TH1 * | h, |
| int | ifm, | ||
| int | ifM, | ||
| int | nSigmaStop = 0, |
||
| const char * | options = "Q0SNRE", |
||
| bool | autoStop = false |
||
| ) |
| h | histogram to fit (NB: assumed to be normalised to bin width) |
| ifm | min index |
| ifM | max index |
| nSigmaStop | stop automatically before maxdegree if good chi2/ndf +/- nSigma ~ 1 |
| options | fit options |
| void DAS::getSmoothFits | ( | const fs::path & | input, |
| const fs::path & | output, | ||
| const pt::ptree & | config, | ||
| const int | steering, | ||
| const DT::Slice | slice = {1,0} |
||
| ) |
| vector<double> DAS::GetTriggerTurnons | ( | const fs::path & | f | ) |
Load the two-column file with the HLT and corresponding offline PF thresholds.
| Eigen::VectorXd DAS::identity | ( | const Eigen::VectorXd & | x | ) |
identity (Eigen)
Trivial function returning argument, used as default function in the constructor of Teddy
| std::vector<T> DAS::MakeBinning | ( | std::pair< T, T > | range, |
| double | param, | ||
| int | opt = BinningOptions::default_def |
||
| ) |
Define a regular binning.
We use Boost counting iterator to create a vector out of a sequence
| range | lowest and highest bin edges |
| param | either number of bins or bin width (depending on `opt`) |
| opt | by default linear binning where `params` is the number of bins |
|
inline |
Make a vector of properly formated titles from bin edges.
| void DAS::mergeNtuples | ( | const vector< fs::path > & | inputs, |
| const fs::path & | output, | ||
| const pt::ptree & | config, | ||
| const int | steering, | ||
| const DT::Slice | slice = {1,0} |
||
| ) |
Get fractioned n-tuples after the n-tuplisation and merge them into a single file. Complementary information about the pile-up may be included. A minimal selection is applied, e.g. on the primary vertex (PV).
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
| DT::Options Options | ( | const char * | description, |
| int | options = Darwin::Tools::none |
||
| ) |
Constructs Darwin options with the correct commit information.
|
inline |
| void DAS::ScaleWidth | ( | TH1 * | h, |
| TH2 * | cov | ||
| ) |
Divide the histogram by bin width and adapt the covariance matrix accordingly.
| void DAS::SimpleExec | ( | const fs::path & | input, |
| const fs::path & | output, | ||
| const pt::ptree & | config, | ||
| const int | steering | ||
| ) |
Template for function (TODO)
|
static |
|
static |
|
static |
|
static |
|
static |
|
static |
|
static |
|
static |
|
static |
|
static |
|
static |
|
static |
|
static |
|
static |
|
static |
|
inline |
Suffix used for "down" uncertainties. Follows the Combine convention.
|
inline |
Suffix used for "up" uncertainties. Follows the Combine convention.
|
static |
|
static |
|
static |
|
static |