diff --git a/analyses/pluginATLAS/ATLAS_2016_I1492320.yoda b/analyses/pluginATLAS/ATLAS_2016_I1492320.yoda new file mode 100644 --- /dev/null +++ b/analyses/pluginATLAS/ATLAS_2016_I1492320.yoda @@ -0,0 +1,335 @@ +BEGIN YODA_SCATTER1D_V2 /REF/ATLAS_2016_I1492320/d01-x01-y01 +IsRef: 1 +Path: /REF/ATLAS_2016_I1492320/d01-x01-y01 +Title: doi:10.17182/hepdata.76728.v2/t1 +Type: Scatter1D +--- +# xval xerr- xerr+ +3.100000e-01 4.810405e-01 4.742362e-01 +END YODA_SCATTER1D_V2 +BEGIN YODA_SCATTER1D_V2 /REF/ATLAS_2016_I1492320/d01-x01-y02 +IsRef: 1 +Path: /REF/ATLAS_2016_I1492320/d01-x01-y02 +Title: doi:10.17182/hepdata.76728.v2/t1 +Type: Scatter1D +--- +# xval xerr- xerr+ +2.400000e-01 3.807887e-01 4.338202e-01 +END YODA_SCATTER1D_V2 +BEGIN YODA_SCATTER1D_V2 /REF/ATLAS_2016_I1492320/d01-x01-y03 +IsRef: 1 +Path: /REF/ATLAS_2016_I1492320/d01-x01-y03 +Title: doi:10.17182/hepdata.76728.v2/t1 +Type: Scatter1D +--- +# xval xerr- xerr+ +2.300000e+02 2.561250e+02 2.500000e+02 +END YODA_SCATTER1D_V2 +BEGIN YODA_SCATTER1D_V2 /REF/ATLAS_2016_I1492320/d02-x01-y01 +IsRef: 1 +Path: /REF/ATLAS_2016_I1492320/d02-x01-y01 +Title: doi:10.17182/hepdata.76728.v2/t2 +Type: Scatter1D +--- +# xval xerr- xerr+ +-7.400000e-01 0.000000e+00 0.000000e+00 +8.600000e-01 0.000000e+00 0.000000e+00 +END YODA_SCATTER1D_V2 +BEGIN YODA_SCATTER1D_V2 /REF/ATLAS_2016_I1492320/d02-x01-y02 +IsRef: 1 +Path: /REF/ATLAS_2016_I1492320/d02-x01-y02 +Title: doi:10.17182/hepdata.76728.v2/t2 +Type: Scatter1D +--- +# xval xerr- xerr+ +-3.400000e-01 0.000000e+00 0.000000e+00 +4.000000e-01 0.000000e+00 0.000000e+00 +END YODA_SCATTER1D_V2 +BEGIN YODA_SCATTER1D_V2 /REF/ATLAS_2016_I1492320/d02-x01-y03 +IsRef: 1 +Path: /REF/ATLAS_2016_I1492320/d02-x01-y03 +Title: doi:10.17182/hepdata.76728.v2/t2 +Type: Scatter1D +--- +# xval xerr- xerr+ +-2.000000e-01 0.000000e+00 0.000000e+00 +2.400000e-01 0.000000e+00 0.000000e+00 +END YODA_SCATTER1D_V2 +BEGIN YODA_SCATTER1D_V2 /REF/ATLAS_2016_I1492320/d02-x01-y04 +IsRef: 1 +Path: /REF/ATLAS_2016_I1492320/d02-x01-y04 +Title: doi:10.17182/hepdata.76728.v2/t2 +Type: Scatter1D +--- +# xval xerr- xerr+ +-1.600000e-01 0.000000e+00 0.000000e+00 +2.100000e-01 0.000000e+00 0.000000e+00 +END YODA_SCATTER1D_V2 +BEGIN YODA_SCATTER1D_V2 /REF/ATLAS_2016_I1492320/d02-x01-y05 +IsRef: 1 +Path: /REF/ATLAS_2016_I1492320/d02-x01-y05 +Title: doi:10.17182/hepdata.76728.v2/t2 +Type: Scatter1D +--- +# xval xerr- xerr+ +-1.300000e-01 0.000000e+00 0.000000e+00 +1.800000e-01 0.000000e+00 0.000000e+00 +END YODA_SCATTER1D_V2 +BEGIN YODA_SCATTER1D_V2 /REF/ATLAS_2016_I1492320/d03-x01-y01 +IsRef: 1 +Path: /REF/ATLAS_2016_I1492320/d03-x01-y01 +Title: doi:10.17182/hepdata.76728.v2/t3 +Type: Scatter1D +--- +# xval xerr- xerr+ +-9.900000e-01 0.000000e+00 0.000000e+00 +1.200000e+00 0.000000e+00 0.000000e+00 +END YODA_SCATTER1D_V2 +BEGIN YODA_SCATTER1D_V2 /REF/ATLAS_2016_I1492320/d03-x01-y02 +IsRef: 1 +Path: /REF/ATLAS_2016_I1492320/d03-x01-y02 +Title: doi:10.17182/hepdata.76728.v2/t3 +Type: Scatter1D +--- +# xval xerr- xerr+ +-4.800000e-01 0.000000e+00 0.000000e+00 +5.800000e-01 0.000000e+00 0.000000e+00 +END YODA_SCATTER1D_V2 +BEGIN YODA_SCATTER1D_V2 /REF/ATLAS_2016_I1492320/d03-x01-y03 +IsRef: 1 +Path: /REF/ATLAS_2016_I1492320/d03-x01-y03 +Title: doi:10.17182/hepdata.76728.v2/t3 +Type: Scatter1D +--- +# xval xerr- xerr+ +-2.900000e-01 0.000000e+00 0.000000e+00 +3.600000e-01 0.000000e+00 0.000000e+00 +END YODA_SCATTER1D_V2 +BEGIN YODA_SCATTER1D_V2 /REF/ATLAS_2016_I1492320/d03-x01-y04 +IsRef: 1 +Path: /REF/ATLAS_2016_I1492320/d03-x01-y04 +Title: doi:10.17182/hepdata.76728.v2/t3 +Type: Scatter1D +--- +# xval xerr- xerr+ +-2.500000e-01 0.000000e+00 0.000000e+00 +3.300000e-01 0.000000e+00 0.000000e+00 +END YODA_SCATTER1D_V2 +BEGIN YODA_SCATTER1D_V2 /REF/ATLAS_2016_I1492320/d03-x01-y05 +IsRef: 1 +Path: /REF/ATLAS_2016_I1492320/d03-x01-y05 +Title: doi:10.17182/hepdata.76728.v2/t3 +Type: Scatter1D +--- +# xval xerr- xerr+ +-2.100000e-01 0.000000e+00 0.000000e+00 +2.700000e-01 0.000000e+00 0.000000e+00 +END YODA_SCATTER1D_V2 +BEGIN YODA_SCATTER1D_V2 /REF/ATLAS_2016_I1492320/d04-x01-y01 +IsRef: 1 +Path: /REF/ATLAS_2016_I1492320/d04-x01-y01 +Title: doi:10.17182/hepdata.76728.v2/t4 +Type: Scatter1D +--- +# xval xerr- xerr+ +-2.600000e+00 0.000000e+00 0.000000e+00 +3.200000e+00 0.000000e+00 0.000000e+00 +END YODA_SCATTER1D_V2 +BEGIN YODA_SCATTER1D_V2 /REF/ATLAS_2016_I1492320/d04-x01-y02 +IsRef: 1 +Path: /REF/ATLAS_2016_I1492320/d04-x01-y02 +Title: doi:10.17182/hepdata.76728.v2/t4 +Type: Scatter1D +--- +# xval xerr- xerr+ +-1.200000e+00 0.000000e+00 0.000000e+00 +1.600000e+00 0.000000e+00 0.000000e+00 +END YODA_SCATTER1D_V2 +BEGIN YODA_SCATTER1D_V2 /REF/ATLAS_2016_I1492320/d04-x01-y03 +IsRef: 1 +Path: /REF/ATLAS_2016_I1492320/d04-x01-y03 +Title: doi:10.17182/hepdata.76728.v2/t4 +Type: Scatter1D +--- +# xval xerr- xerr+ +-7.400000e-01 0.000000e+00 0.000000e+00 +9.800000e-01 0.000000e+00 0.000000e+00 +END YODA_SCATTER1D_V2 +BEGIN YODA_SCATTER1D_V2 /REF/ATLAS_2016_I1492320/d04-x01-y04 +IsRef: 1 +Path: /REF/ATLAS_2016_I1492320/d04-x01-y04 +Title: doi:10.17182/hepdata.76728.v2/t4 +Type: Scatter1D +--- +# xval xerr- xerr+ +-6.200000e-01 0.000000e+00 0.000000e+00 +8.900000e-01 0.000000e+00 0.000000e+00 +END YODA_SCATTER1D_V2 +BEGIN YODA_SCATTER1D_V2 /REF/ATLAS_2016_I1492320/d04-x01-y05 +IsRef: 1 +Path: /REF/ATLAS_2016_I1492320/d04-x01-y05 +Title: doi:10.17182/hepdata.76728.v2/t4 +Type: Scatter1D +--- +# xval xerr- xerr+ +-4.900000e-01 0.000000e+00 0.000000e+00 +7.500000e-01 0.000000e+00 0.000000e+00 +END YODA_SCATTER1D_V2 +BEGIN YODA_SCATTER1D_V2 /REF/ATLAS_2016_I1492320/d05-x01-y01 +IsRef: 1 +Path: /REF/ATLAS_2016_I1492320/d05-x01-y01 +Title: doi:10.17182/hepdata.76728.v2/t5 +Type: Scatter1D +--- +# xval xerr- xerr+ +-2.300000e+00 0.000000e+00 0.000000e+00 +2.800000e+00 0.000000e+00 0.000000e+00 +END YODA_SCATTER1D_V2 +BEGIN YODA_SCATTER1D_V2 /REF/ATLAS_2016_I1492320/d05-x01-y02 +IsRef: 1 +Path: /REF/ATLAS_2016_I1492320/d05-x01-y02 +Title: doi:10.17182/hepdata.76728.v2/t5 +Type: Scatter1D +--- +# xval xerr- xerr+ +-1.100000e+00 0.000000e+00 0.000000e+00 +1.300000e+00 0.000000e+00 0.000000e+00 +END YODA_SCATTER1D_V2 +BEGIN YODA_SCATTER1D_V2 /REF/ATLAS_2016_I1492320/d05-x01-y03 +IsRef: 1 +Path: /REF/ATLAS_2016_I1492320/d05-x01-y03 +Title: doi:10.17182/hepdata.76728.v2/t5 +Type: Scatter1D +--- +# xval xerr- xerr+ +-6.600000e-01 0.000000e+00 0.000000e+00 +8.200000e-01 0.000000e+00 0.000000e+00 +END YODA_SCATTER1D_V2 +BEGIN YODA_SCATTER1D_V2 /REF/ATLAS_2016_I1492320/d05-x01-y04 +IsRef: 1 +Path: /REF/ATLAS_2016_I1492320/d05-x01-y04 +Title: doi:10.17182/hepdata.76728.v2/t5 +Type: Scatter1D +--- +# xval xerr- xerr+ +-5.700000e-01 0.000000e+00 0.000000e+00 +7.600000e-01 0.000000e+00 0.000000e+00 +END YODA_SCATTER1D_V2 +BEGIN YODA_SCATTER1D_V2 /REF/ATLAS_2016_I1492320/d05-x01-y05 +IsRef: 1 +Path: /REF/ATLAS_2016_I1492320/d05-x01-y05 +Title: doi:10.17182/hepdata.76728.v2/t5 +Type: Scatter1D +--- +# xval xerr- xerr+ +-4.800000e-01 0.000000e+00 0.000000e+00 +6.200000e-01 0.000000e+00 0.000000e+00 +END YODA_SCATTER1D_V2 +BEGIN YODA_SCATTER1D_V2 /REF/ATLAS_2016_I1492320/d06-x01-y01 +IsRef: 1 +Path: /REF/ATLAS_2016_I1492320/d06-x01-y01 +Title: doi:10.17182/hepdata.76728.v2/t6 +Type: Scatter1D +--- +# xval xerr- xerr+ +5.340000e-01 2.100000e-02 2.100000e-02 +END YODA_SCATTER1D_V2 +BEGIN YODA_SCATTER1D_V2 /REF/ATLAS_2016_I1492320/d06-x01-y02 +IsRef: 1 +Path: /REF/ATLAS_2016_I1492320/d06-x01-y02 +Title: doi:10.17182/hepdata.76728.v2/t6 +Type: Scatter1D +--- +# xval xerr- xerr+ +5.120000e-01 1.900000e-02 1.900000e-02 +END YODA_SCATTER1D_V2 +BEGIN YODA_SCATTER1D_V2 /REF/ATLAS_2016_I1492320/d06-x01-y03 +IsRef: 1 +Path: /REF/ATLAS_2016_I1492320/d06-x01-y03 +Title: doi:10.17182/hepdata.76728.v2/t6 +Type: Scatter1D +--- +# xval xerr- xerr+ +5.000000e-01 1.800000e-02 1.800000e-02 +END YODA_SCATTER1D_V2 +BEGIN YODA_SCATTER1D_V2 /REF/ATLAS_2016_I1492320/d06-x01-y04 +IsRef: 1 +Path: /REF/ATLAS_2016_I1492320/d06-x01-y04 +Title: doi:10.17182/hepdata.76728.v2/t6 +Type: Scatter1D +--- +# xval xerr- xerr+ +5.670000e-01 2.000000e-02 2.000000e-02 +END YODA_SCATTER1D_V2 +BEGIN YODA_SCATTER1D_V2 /REF/ATLAS_2016_I1492320/d06-x01-y05 +IsRef: 1 +Path: /REF/ATLAS_2016_I1492320/d06-x01-y05 +Title: doi:10.17182/hepdata.76728.v2/t6 +Type: Scatter1D +--- +# xval xerr- xerr+ +6.150000e-01 3.800000e-02 3.800000e-02 +END YODA_SCATTER1D_V2 +BEGIN YODA_SCATTER1D_V2 /REF/ATLAS_2016_I1492320/d06-x01-y06 +IsRef: 1 +Path: /REF/ATLAS_2016_I1492320/d06-x01-y06 +Title: doi:10.17182/hepdata.76728.v2/t6 +Type: Scatter1D +--- +# xval xerr- xerr+ +2.020000e-01 1.200000e-02 1.200000e-02 +END YODA_SCATTER1D_V2 +BEGIN YODA_SCATTER1D_V2 /REF/ATLAS_2016_I1492320/d07-x01-y01 +IsRef: 1 +Path: /REF/ATLAS_2016_I1492320/d07-x01-y01 +Title: doi:10.17182/hepdata.76728.v2/t7 +Type: Scatter1D +--- +# xval xerr- xerr+ +4.560000e-01 3.900000e-02 3.900000e-02 +END YODA_SCATTER1D_V2 +BEGIN YODA_SCATTER1D_V2 /REF/ATLAS_2016_I1492320/d07-x01-y02 +IsRef: 1 +Path: /REF/ATLAS_2016_I1492320/d07-x01-y02 +Title: doi:10.17182/hepdata.76728.v2/t7 +Type: Scatter1D +--- +# xval xerr- xerr+ +2.150000e-01 1.100000e-02 1.100000e-02 +END YODA_SCATTER1D_V2 +BEGIN YODA_SCATTER1D_V2 /REF/ATLAS_2016_I1492320/d07-x01-y03 +IsRef: 1 +Path: /REF/ATLAS_2016_I1492320/d07-x01-y03 +Title: doi:10.17182/hepdata.76728.v2/t7 +Type: Scatter1D +--- +# xval xerr- xerr+ +5.950000e-01 3.000000e-02 3.000000e-02 +END YODA_SCATTER1D_V2 +BEGIN YODA_SCATTER1D_V2 /REF/ATLAS_2016_I1492320/d07-x01-y04 +IsRef: 1 +Path: /REF/ATLAS_2016_I1492320/d07-x01-y04 +Title: doi:10.17182/hepdata.76728.v2/t7 +Type: Scatter1D +--- +# xval xerr- xerr+ +4.760000e-01 1.600000e-02 1.600000e-02 +END YODA_SCATTER1D_V2 +BEGIN YODA_SCATTER1D_V2 /REF/ATLAS_2016_I1492320/d07-x01-y05 +IsRef: 1 +Path: /REF/ATLAS_2016_I1492320/d07-x01-y05 +Title: doi:10.17182/hepdata.76728.v2/t7 +Type: Scatter1D +--- +# xval xerr- xerr+ +7.130000e-01 3.600000e-02 3.600000e-02 +END YODA_SCATTER1D_V2 +BEGIN YODA_SCATTER1D_V2 /REF/ATLAS_2016_I1492320/d07-x01-y06 +IsRef: 1 +Path: /REF/ATLAS_2016_I1492320/d07-x01-y06 +Title: doi:10.17182/hepdata.76728.v2/t7 +Type: Scatter1D +--- +# xval xerr- xerr+ +4.820000e-01 1.600000e-02 1.600000e-02 +END YODA_SCATTER1D_V2 diff --git a/analyses/pluginATLAS/ATLAS_2016_I1492320_2l2j.cc b/analyses/pluginATLAS/ATLAS_2016_I1492320_2l2j.cc --- a/analyses/pluginATLAS/ATLAS_2016_I1492320_2l2j.cc +++ b/analyses/pluginATLAS/ATLAS_2016_I1492320_2l2j.cc @@ -1,141 +1,143 @@ // -*- C++ -* #include "Rivet/Analysis.hh" #include "Rivet/Projections/FinalState.hh" #include "Rivet/Projections/FastJets.hh" #include "Rivet/Projections/HeavyHadrons.hh" #include "Rivet/Projections/VetoedFinalState.hh" #include "Rivet/Projections/MissingMomentum.hh" #include "Rivet/Projections/DressedLeptons.hh" #include "Rivet/Projections/PromptFinalState.hh" namespace Rivet { /// @brief WWW cross-section at 8 TeV, 2L2J mode class ATLAS_2016_I1492320_2l2j : public Analysis { public: // Default constructor - DEFAULT_RIVET_ANALYSIS_CTOR(ATLAS_2016_I1492320_2l2j); + ATLAS_2016_I1492320_2l2j() : Analysis("ATLAS_2016_I1492320_2l2j") { + setRefDataName("ATLAS_2016_I1492320"); + } /// @name Analysis methods //@{ /// Book histograms and initialise projections before the run void init() { // Charged leptons within acceptance const PromptFinalState chLep_fid = PromptFinalState(Cuts::abspid == PID::ELECTRON || Cuts::abspid == PID::MUON); const PromptFinalState photon_fs = PromptFinalState(Cuts::abspid == PID::PHOTON); const DressedLeptons dressed_leps(photon_fs, chLep_fid, 0.1, Cuts::pT > 10*GeV); declare(dressed_leps, "DressedLeptons"); // Jets, anti-kt 0.4 VetoedFinalState fsJets(FinalState(Cuts::abseta < 7.0)); //final state for jet finding: veto leptons and neutrinos fsJets.vetoNeutrinos(); fsJets.addVetoOnThisFinalState(photon_fs); fsJets.addVetoOnThisFinalState(chLep_fid); declare(FastJets(fsJets, FastJets::ANTIKT, 0.4), "Jets"); // b hadrons for b-tagging declare(HeavyHadrons(Cuts::abseta < 2.5 && Cuts::pT > 5*GeV), "Bhadrons"); // Missing momentum declare(MissingMomentum(), "MET"); // Histograms _h_2l2j = bookCounter("d01-x01-y02"); } /// Perform the per-event analysis void analyze(const Event& event) { // Get leptons vector leps = apply(event, "DressedLeptons").dressedLeptons(); if (leps.size() < 2) vetoEvent; // Sort the dressed leptons by pt of their constituent lepton (bare lepton pt) std::sort(leps.begin(), leps.end() , [](const DressedLepton& l1, const DressedLepton& l2) { return (l1.constituentLepton().pT() > l2.constituentLepton().pT()); }); if (leps[0].pT() < 30*GeV || leps[0].abseta() > 2.5) vetoEvent; if (leps[1].pT() < 30*GeV || leps[1].abseta() > 2.5) vetoEvent; // Get jets const Jets& jets = apply(event, "Jets").jetsByPt(Cuts::pT > 15*GeV); // Find min dilepton DR and mass double minDRll = DBL_MAX, mll = DBL_MAX; for (size_t i = 0; i < leps.size(); ++i) { for (size_t j = i + 1; j < leps.size(); ++j) { minDRll = min(minDRll, deltaR(leps[i], leps[j])); mll = min(mll, (leps[i].momentum() + leps[j].momentum()).mass()); } } if (minDRll < 0.1) vetoEvent; if (mll < 40*GeV) vetoEvent; // Require same-sign leading leptons if (leps[0].charge()*leps[0].charge() < 0) vetoEvent; // Veto di-electron combinations within 10 GeV of the Z mass if (fabs(mll - 91.188*GeV) < 10*GeV && leps[0].abspid() == PID::ELECTRON && leps[1].abspid() == PID::ELECTRON) vetoEvent; // Now jet cuts if (jets.size() < 2) vetoEvent; if (jets[0].pT() < 30*GeV || jets[0].abseta() > 2.5) vetoEvent; if (jets[1].pT() < 20*GeV || jets[1].abseta() > 2.5) vetoEvent; // Find closest jet/lepton pair and veto if too close in phi or too far in eta double minDRLepJets = DBL_MAX; for (const Jet& jet : jets) { for (const Particle& lep : leps) minDRLepJets = min(minDRLepJets, deltaR(lep, jet)); } if (minDRLepJets < 0.3) vetoEvent; if (fabs(deltaEta(jets[0], jets[1])) > 1.5) vetoEvent; // Dijet mass requirement double mjj = (jets[0].momentum() + jets[1].momentum()).mass(); if (mjj < 65 || mjj > 105) vetoEvent; if (!inRange(mjj, 65*GeV, 105*GeV)) vetoEvent; // Veto if any good jets are b-jets const Particles& bhadrons = apply(event, "Bhadrons").bHadrons(); for (const Jet& j : jets) { if (j.abseta() > 2.5) continue; // outside acceptance of b-tagging const bool isbJet = any(bhadrons, deltaRLess(j, 0.3)); if (isbJet) vetoEvent; } // MET vetoing for non-muon events const MissingMomentum& met = apply(event, "MET"); if (met.vectorEt().mod() < 55*GeV && (leps[0].abspid() != PID::MUON || leps[1].abspid() != PID::MUON)) vetoEvent; // Fill counter _h_2l2j->fill(event.weight()); } /// Normalise histograms etc., after the run void finalize() { scale(_h_2l2j, crossSection()/sumOfWeights()/femtobarn); } //@} private: /// @name Histograms //@{ CounterPtr _h_2l2j; //@} }; // Hook for the plugin system DECLARE_RIVET_PLUGIN(ATLAS_2016_I1492320_2l2j); } diff --git a/analyses/pluginATLAS/ATLAS_2016_I1492320_2l2j.yoda b/analyses/pluginATLAS/ATLAS_2016_I1492320_2l2j.yoda deleted file mode 100644 --- a/analyses/pluginATLAS/ATLAS_2016_I1492320_2l2j.yoda +++ /dev/null @@ -1,9 +0,0 @@ -BEGIN YODA_SCATTER1D_V2 /REF/ATLAS_2016_I1492320_2l2j/d01-x01-y02 -IsRef: 1 -Path: /REF/ATLAS_2016_I1492320_2l2j/d01-x01-y02 -Title: doi:10.17182/hepdata.76728.v1/t1 -Type: Scatter1D ---- -# xval xerr- xerr+ -2.400000e-01 3.807887e-01 4.338202e-01 -END YODA_SCATTER1D_V2 diff --git a/analyses/pluginATLAS/ATLAS_2016_I1492320_3l.cc b/analyses/pluginATLAS/ATLAS_2016_I1492320_3l.cc --- a/analyses/pluginATLAS/ATLAS_2016_I1492320_3l.cc +++ b/analyses/pluginATLAS/ATLAS_2016_I1492320_3l.cc @@ -1,141 +1,143 @@ // -*- C++ -* #include "Rivet/Analysis.hh" #include "Rivet/Projections/FinalState.hh" #include "Rivet/Projections/FastJets.hh" #include "Rivet/Projections/VetoedFinalState.hh" #include "Rivet/Projections/MissingMomentum.hh" #include "Rivet/Projections/DressedLeptons.hh" #include "Rivet/Projections/PromptFinalState.hh" namespace Rivet { /// @brief WWW cross-section at 8 TeV, 3L mode class ATLAS_2016_I1492320_3l : public Analysis { public: // Default constructor - DEFAULT_RIVET_ANALYSIS_CTOR(ATLAS_2016_I1492320_3l); + ATLAS_2016_I1492320_3l() : Analysis("ATLAS_2016_I1492320_3l") { + setRefDataName("ATLAS_2016_I1492320"); + } /// @name Analysis methods //@{ /// Book histograms and initialise projections before the run void init() { // Charged leptons within acceptance const PromptFinalState chLep_fid = PromptFinalState(Cuts::abspid == PID::ELECTRON || Cuts::abspid == PID::MUON); const PromptFinalState photon_fs = PromptFinalState(Cuts::abspid == PID::PHOTON); const DressedLeptons dressed_leps(photon_fs, chLep_fid, 0.1, Cuts::pT > 20*GeV && Cuts::abseta < 2.5); declare(dressed_leps, "DressedLeptons"); // Jets, anti-kt 0.4 VetoedFinalState fsJets(FinalState(Cuts::abseta < 7.0)); //final state for jet finding: veto leptons and neutrinos fsJets.vetoNeutrinos(); fsJets.addVetoOnThisFinalState(photon_fs); fsJets.addVetoOnThisFinalState(chLep_fid); declare(FastJets(fsJets, FastJets::ANTIKT, 0.4), "Jets"); // Missing momentum declare(MissingMomentum(), "MET"); // Histograms _h_fiducial_3l = bookCounter("d01-x01-y01"); } /// Perform the per-event analysis void analyze(const Event& event) { // Get the dressed leptons, sorted by pT of their constituent bare lepton (!!) vector _vbs_lep = apply(event, "DressedLeptons").dressedLeptons(); if (_vbs_lep.size() != 3) vetoEvent; std::sort(_vbs_lep.begin(), _vbs_lep.end(), [](const DressedLepton& l1, const DressedLepton& l2) { return (l1.constituentLepton().pT() > l2.constituentLepton().pT()); }); // Get the jets const Jets& _vbs_jets = apply(event, "Jets").jetsByPt(Cuts::pT > 25*GeV && Cuts::abseta < 4.5); if (_vbs_jets.size() > 1) vetoEvent; // Determine nsfos pairs for channel classification int nSFOS = 0; for (size_t i = 0; i < _vbs_lep.size(); ++i) { const double ch_l0 = _vbs_lep[i].charge(); for (size_t j = i + 1; j < _vbs_lep.size(); ++j) { const double ch_l1 = _vbs_lep[j].charge(); if (_vbs_lep[i].abspid() == _vbs_lep[j].abspid() && ch_l0*ch_l1 < 0) ++nSFOS; } } double minDRll = DBL_MAX, mSFOS_MinDiff = DBL_MAX, meeSS_MinDiff = DBL_MAX, mSF_min = DBL_MAX; for (size_t i = 0; i < _vbs_lep.size(); ++i) { const double ch_l0 = _vbs_lep[i].charge(); for (size_t j = i + 1; j < _vbs_lep.size(); ++j) { const double ch_l1 = _vbs_lep[j].charge(); const bool samesign = ch_l0*ch_l1 > 0; // Update min dR between leptons minDRll = min(minDRll, deltaR(_vbs_lep[i], _vbs_lep[j])); // Require same flavour if (_vbs_lep[i].abspid() != _vbs_lep[j].abspid()) continue; // SF dilepton mass (used several times) const double mSF = (_vbs_lep[i].momentum() + _vbs_lep[j].momentum()).mass(); // Determine min for all same-flavor pairs mSF_min = min(mSF, mSF_min); // Determine min for all m_ee same-sign pairs if (_vbs_lep[i].abspid() == PID::ELECTRON && samesign) { if (fabs(mSF-ZMASS) < fabs(meeSS_MinDiff-ZMASS)) meeSS_MinDiff = mSF; } // Determine min for all mSFOS pairs if (!samesign && fabs(mSF-ZMASS) < abs(mSFOS_MinDiff-ZMASS)) mSFOS_MinDiff = mSF; } } if (minDRll < 0.1) vetoEvent; if (nSFOS == 0 && mSF_min < 20*GeV) vetoEvent; if (nSFOS == 0 && fabs(meeSS_MinDiff - ZMASS) < 15*GeV) vetoEvent; if (nSFOS == 1 && ((ZMASS - mSFOS_MinDiff) < 35*GeV && (mSFOS_MinDiff - ZMASS) < 20*GeV)) vetoEvent; if (nSFOS == 2 && fabs(mSFOS_MinDiff - ZMASS) < 20*GeV) vetoEvent; const Vector3& met = -1.0 * apply(event, "MET").vectorEt(); if (nSFOS == 1 && met.mod() < 45*GeV) vetoEvent; if (nSFOS == 2 && met.mod() < 55*GeV) vetoEvent; const double dPhi = deltaPhi((_vbs_lep[0].momentum() + _vbs_lep[1].momentum() + _vbs_lep[2].momentum()), met); if (dPhi < 2.5) vetoEvent; // Fill histo _h_fiducial_3l->fill(event.weight()); } /// Normalise histograms etc., after the run void finalize() { scale(_h_fiducial_3l, crossSection()/sumOfWeights()/femtobarn); } //@} private: /// @name Histograms //@{ const double ZMASS = 91.1876*GeV; CounterPtr _h_fiducial_3l; //@} }; // Hook for the plugin system DECLARE_RIVET_PLUGIN(ATLAS_2016_I1492320_3l); } diff --git a/analyses/pluginATLAS/ATLAS_2016_I1492320_3l.yoda b/analyses/pluginATLAS/ATLAS_2016_I1492320_3l.yoda deleted file mode 100644 --- a/analyses/pluginATLAS/ATLAS_2016_I1492320_3l.yoda +++ /dev/null @@ -1,9 +0,0 @@ -BEGIN YODA_SCATTER1D_V2 /REF/ATLAS_2016_I1492320_3l/d01-x01-y01 -IsRef: 1 -Path: /REF/ATLAS_2016_I1492320_3l/d01-x01-y01 -Title: doi:10.17182/hepdata.76728.v1/t1 -Type: Scatter1D ---- -# xval xerr- xerr+ -3.100000e-01 4.810405e-01 4.742362e-01 -END YODA_SCATTER1D_V2