- Member DAS::Unfolding::unfold (const fs::path &inputData, const fs::path &inputMC, const fs::path &output, const pt::ptree &config, const int steering, const DT::Slice slice={1, 0})
- DAgostini (at least for nominal value)
- Member DAS::Unfolding::getLmatrix (const fs::path &input, const fs::path &output, const pt::ptree &config, const int steering)
smart pointer?
(steering & DT::verbose)
the empty bins may change from variation to variation
- Member DAS::Unfolding::getUnfBinning (const fs::path &outputGen, const fs::path &outputRec, const pt::ptree &config, const int steering)
- get post-transformation unfolding
- Member DAS::Unfolding::getUnfHist (const vector< fs::path > &inputs, const fs::path &output, const pt::ptree &config, const int steering, const DT::Slice slice={1, 0})
- First-class support in Darwin
- Member DAS::Unfolding::InclusiveJet1D::getUnfHistPt (const vector< fs::path > &inputs, const fs::path &output, const int steering, const DT::Slice slice={1, 0})
- try to use the underflow and overflow for matching out of the phase space...
- Member PtVariation::PtVariation (TString Name, size_t IJEC=0, size_t IGenJetWgt=0, size_t IRecJetWgt=0, size_t IGenEvtWgt=0, size_t IRecEvtWgt=0)
- investigate the migrations out of the phase space with the underflow and overflow
- Member main (int argc, char *argv[])
- automate this by looking up the metainfo
- Member DAS::Unfolding::ExtractHistogram::nodeLoop (TDirectory *dOut, TUnfoldBinning *binning, T t, ostream &cout, TString name, int depth)
- d > 2?
- Member DAS::Unfolding::getLmatrix (const fs::path &input, const fs::path &output, const pt::ptree &config, const int steering)
- implement L-matrix and bias variations?
- the weights will change slightly at gen level
- the rec level spectrum may slightly change
- Member DAS::Unfolding::unfold (const fs::path &inputData, const fs::path &inputMC, const fs::path &output, const pt::ptree &config, const int steering, const DT::Slice slice={1, 0})
merge the MetaInfo from the two (or more??) inputs
- compare flags, git, corrections
- merge
- send warning if relevant but proceed anyway
- merge histories & variations
- find a solution for the preseed (Q: is it necessary for the data?)
- then add block on unfolding but preserve the cycle
if (!RM) BOOST_THROW_EXCEPTION( DE::BadInput("Missing response matrix", dirMC) );
Propagate metainfo
Eps matrix of MyTUnfoldDensity != 1e-100?
syst?
run CT if the gen level is available (= pseudodata)
- if inputData = inputMC -> expect perfect agreement
- otherwise, interpretation may depend...
remove?
title of new histogram
- Member Efficiency::Efficiency (const char *method, int threshold)
- throw exception on bad threshold
- Member DAS::PUprofile::getPUprofile (const vector< fs::path > &inputs, const fs::path &output, const pt::ptree &config, const int steering, const DT::Slice slice={1, 0})
also plot without weight
Use forward triggers?
- Member DAS::PUstaub::applyPUcleaning (const vector< fs::path > &inputs, const fs::path &output, const pt::ptree &config, const int steering, const DT::Slice slice={1, 0})
- Hard-coded cut currently tuned for Pythia UL18
- Member DAS::PUstaub::applyPUcleaningHT (const vector< fs::path > &inputs, const fs::path &output, const pt::ptree &config, const int steering, const DT::Slice slice={1, 0})
- Hard-coded cut currently tuned for Pythia UL18
- Member DAS::getHighScalePUeventIDs (const vector< fs::path > &inputs, const fs::path &output, const pt::ptree &config, const int steering, const DT::Slice slice={1, 0})
- include test in CI
- Member DAS::getHighScalePUeventIDsHT (const vector< fs::path > &inputs, const fs::path &output, const pt::ptree &config, const int steering, const DT::Slice slice={1, 0})
- include test in CI
- Member DAS::Normalisation::getTriggerCurves (const vector< fs::path > &inputs, const fs::path &output, const pt::ptree &config, const int steering, const DT::Slice slice={1, 0})
fix error
fix error
- Member DAS::Unfolding::unfold (const fs::path &inputData, const fs::path &inputMC, const fs::path &output, const pt::ptree &config, const int steering, const DT::Slice slice={1, 0})
- cov? (needed for smoothing)
- Member main (int argc, char *argv[])
get year from metainfo
get lumis from metainfo
- Member DAS::Normalisation::getTriggerTurnons (const fs::path &input, const fs::path &outputRoot, const fs::path &outputTxt, const pt::ptree &config, const int steering)
Use metainfo
Get year from metainfo?
Get lumis from metainfo?
implement a more general logic to use only rapidity <3 turnons to determine the overall turnon
- Member DAS::Normalisation::GetTriggerEfficiency (int trigger, TH1 *h, STREAM &Stream, float from, float minEff)
- Where does the factor 6 come from?
- Member DAS::Unfolding::getToyCalculation (const fs::path &input, const fs::path &output, const pt::ptree &config, const int steering, const DT::Slice slice={1, 0})
- once the meta info is available, use
metainfo.Seed<67325879>(slice)
- Member ChainSlice::GetEntry (Long64_t entry, Int_t getall=0) override
- description
- Member PtYFiller::fillMC (DistVariation &) override
- use RM underflow?
- Member ZPtY::setLmatrix (const std::unique_ptr< TH1 > &, std::unique_ptr< TH2 > &) override
some docs... this is quite obscure
Most existing L-matrices follow a similar structure, this should be implemented in a function instead of repeating the same code
- Member BOOST_AUTO_TEST_CASE (closure_tests)
expect perfect agreement
expect agreement within stat unc
play with config
- Member Darwin::Tools::GetHist (std::vector< std::filesystem::path > inputs, const std::string &name="h")
- what if the file had already been opened?? will it be closed prematurely?
- Member Flow::GetInputHist (const std::string &name)
- Can we rather use a node handle to extract the unique pointer?
- Member Flow::GetOutputTree (std::shared_ptr< TFile >={}, const std::source_location=std::source_location::current())
TTree::BuildIndex()
to preserve the association despite skipped events?
- Member DAS::Unfolding::GetObservables (boost::property_tree::ptree)
- not all observables should be fine (e.g.
getUnfHist
should not accept Rij::Ratios
)
- "
- Electrons (just a copy of muons?)
- Member SlicedFriendElement::AddTo (TTree *tree, ChainSlice *chain, const char *alias)
- ROOT does a few extra checks when adding a friend. Easier to do if upstreaming.
- "
- Is this also valid for environments created by mamba?
- Member Darwin::Tools::GetHist (std::vector< std::filesystem::path > inputs, const std::string &name="h")
- what if the file had already been opened?? will it be closed prematurely?
- Member Flow::GetInputHist (const std::string &name)
- Can we rather use a node handle to extract the unique pointer?
- Member Flow::GetOutputTree (std::shared_ptr< TFile >={}, const std::source_location=std::source_location::current())
TTree::BuildIndex()
to preserve the association despite skipped events?
- Member ChainSlice::GetEntry (Long64_t entry, Int_t getall=0) override
- description
- "
- Electrons (just a copy of muons?)
- Class HTn
- finalise phase space selection
- Member DAS::Unfolding::unfold (const fs::path &inputData, const fs::path &inputMC, const fs::path &output, const pt::ptree &config, const int steering, const DT::Slice slice={1, 0})
title of new histogram
cov? (needed for smoothing)
cov? (needed for smoothing)
cov? (needed for smoothing)
- Member DAS::Unfolding::Checks::BLT (const unique_ptr< TH1 > &dataDist, const unique_ptr< TH2 > &dataCov, const unique_ptr< TH1 > &MC, int rebin=1)
- current implementation is insufficient for complex binning schemes
- Member DAS::Unfolding::Tikhonov::PrepareRegularisation (TString MCvar, const char *fname, unique_ptr< MyTUnfoldDensity > &density)
- calculate \( A^T_{yy} V^{-1} A \) & adapt the L matrix to have the same rank
- Member DAS::Unfolding::Tikhonov::RedoUnfold (unique_ptr< MyTUnfoldDensity > &density, double newtau, TString name, TString subtitle, shared_ptr< TFile > fOut, const map< TString, unique_ptr< TH1 >> &miss)
- cov (needed for smoothing)
- Member BFFiller::match () override
- Needed?
- Member DAS::PUprofile::getPUprofile (const vector< fs::path > &inputs, const fs::path &output, const pt::ptree &config, const int steering, const DT::Slice slice={1, 0})
- throw if PU correction already applied
- Member MjjYbYs::setLmatrix (const std::unique_ptr< TH1 > &, std::unique_ptr< TH2 > &) override
- fix
- Member MjjYmax::setLmatrix (const std::unique_ptr< TH1 > &, std::unique_ptr< TH2 > &) override
- fix
- Member DAS::Unfolding::GetObservables (boost::property_tree::ptree)
- smart pointer?
- Member Observable::maxDR
- specific to jet analyses
- Member PtYFiller::match () override
- just write sth like
std::optional<JMEmatching<TTreeReaderArray>>
?
- Member BFFiller::fillMC (DistVariation &) override
- no weight for gen photons?
- Member HTnTransformer::Transform (const Eigen::VectorXd &) const override
- harmonise (either nJetsmin, or 2)
- Member DEtaDPhiFiller::match () override
- is
optional
necessary? (taken from MjjYmax...)
- Member Novosibirsk (double *x, double *p)
- find reference
- Member DAS::JetEnergy::FitResolution (TDirectory *dir, unique_ptr< TH1 > h, const int steering)
- parameters in bins of eta (and rho/mu?)
- Member ResponseFit::ResponseFit (const unique_ptr< TH1 > &h, ostream &cout)
- tune range?
- Member DAS::JetEnergy::getJetResponse (const vector< fs::path > &inputs, const fs::path &output, const pt::ptree &config, const int steering, const DT::Slice slice={1, 0})
with gen level weight too?
remove upper boundaries from titles of last bins
- Member DAS::JetEnergy::getJMEtable (const fs::path input, const fs::path output, const pt::ptree &config, const int steering)
identify algo
check binning
- Class Distribution
- write LaTeX version
- Class Integral
- write LaTeX version
- Class DLog
- write LaTeX version
- Member ResolutionFit::ResolutionFit (const unique_ptr< TH1 > &h, ostream &cout)
- take average of last three points?
- Class ObsMiniJets
- Check this and compare with the standard definition.
- RPtExpDEta --> $ R_{ky} = \frac{1}{N-3} \sum_{i=1}^{N-3} min \left( \frac{P_{T,i}}{P_{T,i+1}}, \frac{P_{T,i+1}}{P_{T,i}} \right) \exp \left( \eta_{i} - \eta_{i+1} \right) $
- Member DAS::MN::GetMNJet (std::vector< Jet > jets, std::function< bool(Jet &)> ptcut=[](Jet &jet) {return jet.p4.Pt()< 35 ;})
- check the consistency of this condition
- Member DAS::MN::GetMiniJets (std::vector< Jet > jets, const std::pair< Jet, Jet > &MNJets, std::function< bool(Jet &)> ptcut=[](Jet &jet) {return jet.p4.Pt()< 20;})
- check the consistency of this condition
- Member DAS::JetVeto::getConservativeMap (const fs::path &input, const fs::path &output, const pt::ptree &config, const int steering)
- make smart pointer? (last attempts led to seg)
- Member Filters::Filters (int year)
Check list of filters for 2016
Check list of filters for 2017 and 18
- Member DAS::Muon::applyMuonSelection (const vector< fs::path > &inputs, const fs::path &output, const pt::ptree &config, const int steering, const DT::Slice slice={1, 0})
- ControlPlots
- Member IDApplier::passes (const RecMuon &muon) const override
- IPCut? (unless it's already included in IPCut?)
- Member DAS::getHistSafe (std::unique_ptr< TFile > &f, const std::string &name)
- Move to Darwin?
- Member JetWeight::operator() (const RecJet &jet)
standardise flavour indices...
variations
- Member main (int argc, char *argv[])
- provide WPs as input?
- Member DAS::BTagging::getBTagBinnedDiscriminant (const vector< fs::path > &inputs, const fs::path &output, const pt::ptree &config, const int steering, const DT::Slice slice={1, 0})
GSP?
loop over variations
gen event weight
- Member DAS::BTagging::getBTagPerformance (const vector< fs::path > &inputs, const fs::path &output, const int steering)
- crash if under- or overflow non-empty
- Member ControlPlots::ControlPlots (TString Name)
- TH3 pt eta rho plots TH2 pt_N TH2 ptmax_Dphi
- Member DAS::Muon::applyRochesterCorr (const vector< fs::path > &inputs, const fs::path &output, const pt::ptree &config, const int steering, const DT::Slice slice={1, 0})
- Implement alternative nominal correction
- Member Step::GetSmoothFit (TH1 *h, TH2 *cov, int im, int iM, unsigned int maxdegree, EarlyStopping criterion=None, double stopParam=1, UInt_t nrep=0, std::ostream &stream=std::cout)
- and in case of F-test failure?
- Member DAS::JetEnergy::applyJERsmearing (const vector< fs::path > &inputs, const fs::path &output, const pt::ptree &config, const int steering, const DT::Slice slice={1, 0})
investigate JER uncertainty breakdown (see Core#35)
fix in case of offset (e.g. JES applied on MC)
- Member DAS::JetEnergy::applyJEScorrections (const vector< fs::path > inputs, const fs::path output, const pt::ptree &config, const int steering, const DT::Slice slice={1, 0})
- CorrPt?
- Member DAS::JetEnergy::w
- check exact list of variations with JME group
- Member DAS::JetEnergy::GetLogBinning (float minpt, float maxpt, int nbins)
- this accumulates imprecision --> improve
- Member AbstractFit::fit (std::pair< float, float >, const char *)
https://stackoverflow.com/questions/37385560/c-redirect-or-disable-stdio-temporarily to avoid this dumb arrow
E: use Minos for error estimations
- Member DAS::Photon::applyPhotonID (const vector< fs::path > &inputs, const fs::path &output, const pt::ptree &config, const int steering, const DT::Slice slice={1, 0})
- ControlPlots
- Member Ntupliser::getEventVariables (edm::Event const &iEvent)
check out-of-time pileup
compare to (*met)[0].pt()
to (*met)[0].uncorPt()
- " </dt><dd> \anchor _todo000059 clarify how much it matters...</dd> <dt>
\_setscope Ntupliser_cfg Member \_internalref namespaceNtupliser__cfg#a53bb3c2ea1539bddfd62922d44c86e57 "Ntupliser_cfg.triggerNames"
add forward triggers for 2017 and 2018
clarify if there are efficient triggers in 2016 for forward region
- Member Ntupliser_cfg.genparticles
- remove?
- Member Ntupliser_cfg.vertexes
- check that the right JECs are applied
- Member RecMuon::scale_group () const final
- float RecMuon::CorrE (size_t i) const; // preserve mass
- Member DAS::Photon::applyPhotonConversionVeto (const vector< fs::path > &inputs, const fs::path &output, const pt::ptree &config, const int steering, const DT::Slice slice={1, 0})
- ControlPlots
- Member Ntupliser::getRecJets ()
- externalize option for phase space cut
- Member DAS::Prefiring::fitPrefiringCorrections (const fs::path &input, const fs::path &output, const int steering)
proper propagation of uncertainties
smooth fit also for the average map
check if files exist
- Member Functor::PrepareBinnedWeights (const std::unique_ptr< TH2 > &hIn)
- change prescription to better account for decorrelations
- Member Functor::PrepareSmoothWeights (TString hname, std::unique_ptr< TFile > f)
Assertion to exception
Assertion to exception
- Member Functor::operator() (RecEvent &evnt, const std::vector< RecJet > &recjets)
- decorrelations
- Member DAS::PUprofile::applyPUprofCorrection (const vector< fs::path > inputs, const fs::path output, const pt::ptree &config, const int steering, const DT::Slice slice={1, 0})
- Use raw pt??
- Member Functor::Functor (fs::path lumi_file, fs::path turnon_file, fs::path trigger_curves, const std::string &strategy, const std::string &method, const int year)
- document
- Member DAS::Muon::applyRochesterCorr (const vector< fs::path > &inputs, const fs::path &output, const pt::ptree &config, const int steering, const DT::Slice slice={1, 0})
Zpt: rather provide as alternative? (issue #76)
Ewk2: understand 3rd remark from MUON POG
clear scales?
should we force up (down) in the first (second) place?
- Member main (int argc, char *argv[])
- make optional with
/dev/null
- Member DAS::Normalisation::applyDataNormalisation (const vector< fs::path > &inputs, const fs::path &output, const pt::ptree &config, const int steering, const DT::Slice slice={1, 0})
add lumi unc variations
revisit the logic (having inputs modified + a return object may be confusing)
reimplement the logic to avoid a selection on the weight
- Member JetWeight::operator() (const RecJet &jet)
- variation
- Member Functor::NormalisationCommonPresc (RecEvent &evnt, const RecJet &leadingJet, const Trigger &trigger)
- this should be changed there are cases in which preL1min != preL1max
- Member DAS::Normalisation::applyMClumi (const vector< fs::path > &inputs, const vector< fs::path > &sumWgts, const fs::path &output, const pt::ptree &config, const int steering, const DT::Slice slice={1, 0})
- Events with scale > 5TeV are removed because Pythia used to generate too many of them. Check that this is still needed and that the cut is still appropriate.
- Member main (int argc, char *argv[])
- take uncertainties (and be careful with correlations)
- Member TriggerEff::TriggerEff (const fs::path &file, const std::map< int, TriggerLumi > &triggers_lumi, int year)
Exception if the file doesn't exist
revisit this threshold for UL samples
- Member TriggerEff::operator() (const DAS::RecJet &j)
- revisit the limit at 905 GeV
- "
- use a bit once technically available
- Member Ntupliser::getGenJets (edm::Handle< MyJetCollection > &mygenjets)
- externalize option for phase space cut