|
[Rivet-svn] r3472 - trunk/src/Analysesblackhole at projects.hepforge.org blackhole at projects.hepforge.orgMon Nov 7 09:47:24 GMT 2011
Author: richardn Date: Mon Nov 7 09:47:24 2011 New Revision: 3472 Log: added ATLAS multijet susy analysis Added: trunk/src/Analyses/ATLAS_2011_S9225137.cc - copied, changed from r3470, trunk/src/Analyses/ATLAS_2011_S8983313.cc Modified: trunk/src/Analyses/Makefile.am Copied and modified: trunk/src/Analyses/ATLAS_2011_S9225137.cc (from r3470, trunk/src/Analyses/ATLAS_2011_S8983313.cc) ============================================================================== --- trunk/src/Analyses/ATLAS_2011_S8983313.cc Wed Nov 2 16:18:10 2011 (r3470, copy source) +++ trunk/src/Analyses/ATLAS_2011_S9225137.cc Mon Nov 7 09:47:24 2011 (r3472) @@ -14,15 +14,15 @@ namespace Rivet { - class ATLAS_2011_S8983313 : public Analysis { + class ATLAS_2011_S9225137 : public Analysis { public: /// @name Constructors etc. //@{ /// Constructor - ATLAS_2011_S8983313() - : Analysis("ATLAS_2011_S8983313") + ATLAS_2011_S9225137() + : Analysis("ATLAS_2011_S9225137") { } //@} @@ -36,15 +36,6 @@ /// Book histograms and initialise projections before the run void init() { - // projection to find the electrons - std::vector<std::pair<double, double> > eta_e; - eta_e.push_back(make_pair(-2.47,2.47)); - IdentifiedFinalState elecs(eta_e, 10.0*GeV); - elecs.acceptIdPair(ELECTRON); - addProjection(elecs, "elecs"); - - - // veto region electrons std::vector<std::pair<double, double> > eta_v_e; eta_v_e.push_back(make_pair(-1.52,-1.37)); @@ -53,7 +44,12 @@ veto_elecs.acceptIdPair(ELECTRON); addProjection(veto_elecs, "veto_elecs"); - + // projection to find the electrons + std::vector<std::pair<double, double> > eta_e; + eta_e.push_back(make_pair(-2.47,2.47)); + IdentifiedFinalState elecs(eta_e, 20.0*GeV); + elecs.acceptIdPair(ELECTRON); + addProjection(elecs, "elecs"); // projection to find the muons std::vector<std::pair<double, double> > eta_m; @@ -62,11 +58,12 @@ muons.acceptIdPair(MUON); addProjection(muons, "muons"); + // for pTmiss + addProjection(VisibleFinalState(-4.9,4.9),"vfs"); VetoedFinalState vfs; vfs.addVetoPairId(MUON); - /// Jet finder addProjection(FastJets(vfs, FastJets::ANTIKT, 0.4), "AntiKtJets04"); @@ -74,20 +71,20 @@ // all tracks (to do deltaR with leptons) addProjection(ChargedFinalState(-3.0,3.0),"cfs"); - // for pTmiss - addProjection(VisibleFinalState(-4.9,4.9),"vfs"); + /// Book histograms + _etmissHTA = bookHistogram1D("etmissHTA", 64, 0., 16.); + _etmissHTB = bookHistogram1D("etmissHTB", 64, 0., 16.); + _njet55A = bookHistogram1D("njet55A", 14, 0.5, 14.5); + _njet55B = bookHistogram1D("njet55B", 14, 0.5, 14.5); + _njet80A = bookHistogram1D("njet80A", 14, 0.5, 14.5); + _njet80B = bookHistogram1D("njet80B", 14, 0.5, 14.5); + + _count_7j55 = bookHistogram1D("count_7j55", 1, 0., 1.); + _count_8j55 = bookHistogram1D("count_8j55", 1, 0., 1.); + _count_6j80 = bookHistogram1D("count_6j80", 1, 0., 1.); + _count_7j80 = bookHistogram1D("count_7j80", 1, 0., 1.); - /// Book histograms - _count_A = bookHistogram1D("count_A", 1, 0., 1.); - _count_B = bookHistogram1D("count_B", 1, 0., 1.); - _count_C = bookHistogram1D("count_C", 1, 0., 1.); - _count_D = bookHistogram1D("count_D", 1, 0., 1.); - - _hist_meff_A = bookHistogram1D("m_eff_A", 30, 0., 3000.); - _hist_mT2_B = bookHistogram1D("m_T2", 25, 0., 1000.); - _hist_meff_CD = bookHistogram1D("m_eff_C_D", 30, 0., 3000.); - _hist_eTmiss = bookHistogram1D("Et_miss", 20, 0., 1000.); } @@ -95,6 +92,7 @@ void analyze(const Event& event) { const double weight = event.weight(); + // apply electron veto region ParticleVector veto_e = applyProjection<IdentifiedFinalState>(event, "veto_elecs").particles(); if ( ! veto_e.empty() ) { @@ -102,7 +100,7 @@ vetoEvent; } - + // get the jet candidates Jets cand_jets; foreach (const Jet& jet, applyProjection<FastJets>(event, "AntiKtJets04").jetsByPt(20.0*GeV) ) { @@ -111,11 +109,10 @@ } } - ParticleVector cand_e = applyProjection<IdentifiedFinalState>(event, "elecs").particlesByPt(); - - + // candidate muons ParticleVector cand_mu; - ParticleVector chg_tracks = applyProjection<ChargedFinalState>(event, "cfs").particles(); + ParticleVector chg_tracks = + applyProjection<ChargedFinalState>(event, "cfs").particles(); foreach ( const Particle & mu, applyProjection<IdentifiedFinalState>(event, "muons").particlesByPt() ) { double pTinCone = -mu.momentum().pT(); @@ -127,10 +124,18 @@ cand_mu.push_back(mu); } + // candidate electrons + + ParticleVector cand_e = + applyProjection<IdentifiedFinalState>(event, "elecs").particlesByPt(); + + // resolve jet/lepton ambiguity Jets cand_jets_2; foreach ( const Jet& jet, cand_jets ) { - if ( fabs( jet.momentum().eta() ) >= 2.5 ) + // candidates above eta=2.8 are jets + if ( fabs( jet.momentum().eta() ) >= 2.8 ) cand_jets_2.push_back( jet ); + // otherwise more the R=0.2 from an electrons else { bool away_from_e = true; foreach ( const Particle & e, cand_e ) { @@ -144,8 +149,8 @@ } } - ParticleVector recon_e, recon_mu; - + // only keep electrons more than R=0.4 from jets + ParticleVector recon_e; foreach ( const Particle & e, cand_e ) { bool away = true; foreach ( const Jet& jet, cand_jets_2 ) { @@ -158,6 +163,8 @@ recon_e.push_back( e ); } + // only keep muons more than R=0.4 from jets + ParticleVector recon_mu; foreach ( const Particle & mu, cand_mu ) { bool away = true; foreach ( const Jet& jet, cand_jets_2 ) { @@ -170,135 +177,97 @@ recon_mu.push_back( mu ); } - // pTmiss - ParticleVector vfs_particles = applyProjection<VisibleFinalState>(event, "vfs").particles(); + ParticleVector vfs_particles = + applyProjection<VisibleFinalState>(event, "vfs").particles(); FourMomentum pTmiss; foreach ( const Particle & p, vfs_particles ) { pTmiss -= p.momentum(); } double eTmiss = pTmiss.pT(); - // final jet filter Jets recon_jets; foreach ( const Jet& jet, cand_jets_2 ) { - if ( fabs( jet.momentum().eta() ) <= 2.5 ) + if ( fabs( jet.momentum().eta() ) <= 2.8 ) recon_jets.push_back( jet ); } - // now only use recon_jets, recon_mu, recon_e + // reject events with electrons and muons if ( ! ( recon_mu.empty() && recon_e.empty() ) ) { MSG_DEBUG("Charged leptons left after selection"); vetoEvent; } - if ( eTmiss <= 100 * GeV ) { - MSG_DEBUG("Not enough eTmiss: " << eTmiss << " < 100"); - vetoEvent; - } - - - if ( recon_jets.empty() || recon_jets[0].momentum().pT() <= 120.0 * GeV ) { - MSG_DEBUG("No hard leading jet in " << recon_jets.size() << " jets"); - vetoEvent; + // calculate H_T + double HT=0; + foreach ( const Jet& jet, recon_jets ) { + if ( jet.momentum().pT() > 40 * GeV ) + HT += jet.momentum().pT() ; } - // ==================== observables ==================== - - // Njets, min_dPhi - - int Njets = 0; - double min_dPhi = 999.999; - double pTmiss_phi = pTmiss.phi(); - foreach ( const Jet& jet, recon_jets ) { - if ( jet.momentum().pT() > 40 * GeV ) { - if ( Njets < 3 ) - min_dPhi = min( min_dPhi, - deltaPhi( pTmiss_phi, jet.momentum().phi() ) ); - ++Njets; + // number of jets and deltaR + bool pass55DeltaR=true; + unsigned int njet55=0; + bool pass80DeltaR=true; + unsigned int njet80=0; + for (unsigned int ix=0;ix<recon_jets.size();++ix) { + if(recon_jets[ix].momentum().pT()>80.*GeV) ++njet80; + if(recon_jets[ix].momentum().pT()>55.*GeV) ++njet55; + + for (unsigned int iy=ix+1;iy<recon_jets.size();++iy) { + if(recon_jets[ix].momentum().pT()>55.*GeV && + recon_jets[iy].momentum().pT()>55.*GeV && + deltaR(recon_jets[ix],recon_jets[ix]) <0.6 ) + pass55DeltaR = false; + if(recon_jets[ix].momentum().pT()>80.*GeV && + recon_jets[iy].momentum().pT()>80.*GeV && + deltaR(recon_jets[ix],recon_jets[ix]) <0.6 ) + pass80DeltaR = false; } } - if ( Njets < 2 ) { - MSG_DEBUG("Only " << Njets << " >40 GeV jets left"); + // plots of etmiss/ht + double etht = eTmiss/sqrt(HT); + if(njet55==6) _etmissHTA->fill(etht,weight); + if(njet80==5) _etmissHTB->fill(etht,weight); + + if(etht>1.5&ðt<2. ) { + _njet55A->fill(njet55,weight); + _njet80A->fill(njet80,weight); + } + if(etht>2. &ðt<3. ) { + _njet55B->fill(njet55,weight); + _njet80B->fill(njet80,weight); + } + + // apply E_T/sqrt(H_T) cut + if(etht<=3.5*GeV) { + MSG_DEBUG("Fails ET/sqrt(HT) cut "); vetoEvent; } - if ( min_dPhi <= 0.4 ) { - MSG_DEBUG("dPhi too small"); + // check passes at least one delta5/ njet number cut + if(!(pass55DeltaR && njet55 >= 7) && + !(pass80DeltaR && njet80 >= 6) ) { + MSG_DEBUG("Fails DeltaR cut or jet number cuts"); vetoEvent; } - // m_eff - - double m_eff_2j = eTmiss - + recon_jets[0].momentum().pT() - + recon_jets[1].momentum().pT(); - - double m_eff_3j = recon_jets.size() < 3 ? -999.0 : m_eff_2j + recon_jets[2].momentum().pT(); - - // etmiss / m_eff - - double et_meff_2j = eTmiss / m_eff_2j; - double et_meff_3j = eTmiss / m_eff_3j; - - FourMomentum a = recon_jets[0].momentum(); - FourMomentum b = recon_jets[1].momentum(); - - double m_T2 = mT2::mT2( a, - b, - pTmiss, - 0.0 ); // zero mass invisibles - - - // ==================== FILL ==================== - - MSG_DEBUG( "Trying to fill " - << Njets << ' ' - << m_eff_2j << ' ' - << et_meff_2j << ' ' - << m_eff_3j << ' ' - << et_meff_3j << ' ' - << m_T2 ); - - _hist_eTmiss->fill(eTmiss, weight); - - // AAAAAAAAAA - if ( et_meff_2j > 0.3 ) { - _hist_meff_A->fill(m_eff_2j, weight); - if ( m_eff_2j > 500 * GeV ) { - MSG_DEBUG("Hits A"); - _count_A->fill(0.5, weight); - } - } - - // BBBBBBBBBB - _hist_mT2_B->fill(m_T2, weight); - if ( m_T2 > 300 * GeV ) { - MSG_DEBUG("Hits B"); - _count_B->fill(0.5, weight); - } - - // need 3 jets for C and D - if ( Njets >= 3 && et_meff_3j > 0.25 ) { - - _hist_meff_CD->fill(m_eff_3j, weight); - - // CCCCCCCCCC - if ( m_eff_3j > 500 * GeV ) { - MSG_DEBUG("Hits C"); - _count_C->fill(0.5, weight); - } - - // DDDDDDDDDD - if ( m_eff_3j > 1000 * GeV ) { - MSG_DEBUG("Hits D"); - _count_D->fill(0.5, weight); - } - } + // 7j55 + if(njet55>=7&&pass55DeltaR) + _count_7j55->fill( 0.5, weight) ; + // 8j55 + if(njet55>=8&&pass55DeltaR) + _count_8j55->fill( 0.5, weight) ; + // 6j80 + if(njet80>=6&&pass80DeltaR) + _count_6j80->fill( 0.5, weight) ; + // 7j80 + if(njet80>=7&&pass80DeltaR) + _count_7j80->fill( 0.5, weight) ; } @@ -306,26 +275,25 @@ void finalize() {} - private: /// @name Histograms //@{ - AIDA::IHistogram1D* _count_A; - AIDA::IHistogram1D* _count_B; - AIDA::IHistogram1D* _count_C; - AIDA::IHistogram1D* _count_D; - AIDA::IHistogram1D* _hist_meff_A; - AIDA::IHistogram1D* _hist_mT2_B; - AIDA::IHistogram1D* _hist_meff_CD; - AIDA::IHistogram1D* _hist_eTmiss; + AIDA::IHistogram1D* _etmissHTA; + AIDA::IHistogram1D* _etmissHTB; + AIDA::IHistogram1D* _njet55A; + AIDA::IHistogram1D* _njet55B; + AIDA::IHistogram1D* _njet80A; + AIDA::IHistogram1D* _njet80B; + AIDA::IHistogram1D* _count_7j55; + AIDA::IHistogram1D* _count_8j55; + AIDA::IHistogram1D* _count_6j80; + AIDA::IHistogram1D* _count_7j80; //@} }; - - // The hook for the plugin system - DECLARE_RIVET_PLUGIN(ATLAS_2011_S8983313); + DECLARE_RIVET_PLUGIN(ATLAS_2011_S9225137); } Modified: trunk/src/Analyses/Makefile.am ============================================================================== --- trunk/src/Analyses/Makefile.am Thu Nov 3 01:27:53 2011 (r3471) +++ trunk/src/Analyses/Makefile.am Mon Nov 7 09:47:24 2011 (r3472) @@ -69,7 +69,8 @@ ATLAS_2011_S9041966.cc \ ATLAS_2011_CONF_2011_090.cc \ ATLAS_2011_CONF_2011_098.cc \ - ATLAS_2011_S9108483.cc + ATLAS_2011_S9108483.cc\ + ATLAS_2011_S9225137.cc endif
More information about the Rivet-svn mailing list |