CDF_2006_S6653332.cc
Go to the documentation of this file.00001
00002 #include "Rivet/Analysis.hh"
00003 #include "Rivet/RivetAIDA.hh"
00004 #include "Rivet/Tools/Logging.hh"
00005 #include "Rivet/Tools/ParticleIdUtils.hh"
00006 #include "Rivet/Projections/FinalState.hh"
00007 #include "Rivet/Projections/VetoedFinalState.hh"
00008 #include "Rivet/Projections/ChargedFinalState.hh"
00009 #include "Rivet/Projections/InvMassFinalState.hh"
00010 #include "Rivet/Projections/FastJets.hh"
00011 #include "Rivet/Projections/ChargedLeptons.hh"
00012
00013 namespace Rivet {
00014
00015
00016
00017
00018
00019
00020
00021
00022 class CDF_2006_S6653332 : public Analysis {
00023 public:
00024
00025
00026 CDF_2006_S6653332()
00027 : Analysis("CDF_2006_S6653332"),
00028 _Rjet(0.7), _JetPtCut(20.), _JetEtaCut(1.5), _Lep1PtCut(18.), _Lep2PtCut(10.), _LepEtaCut(1.1),
00029 _sumWeightsWithZ(0.0), _sumWeightsWithZJet(0.0)
00030 { }
00031
00032
00033
00034
00035
00036 void init() {
00037 const FinalState fs(-3.6, 3.6);
00038 addProjection(fs, "FS");
00039
00040
00041
00042 vector<pair<PdgId,PdgId> > vids;
00043 vids.push_back(make_pair(ELECTRON, POSITRON));
00044 vids.push_back(make_pair(MUON, ANTIMUON));
00045 FinalState fs2(-3.6, 3.6);
00046 InvMassFinalState invfs(fs2, vids, 66*GeV, 116*GeV);
00047 addProjection(invfs, "INVFS");
00048
00049
00050 VetoedFinalState vfs(fs);
00051 vfs.addVetoOnThisFinalState(invfs);
00052 addProjection(vfs, "VFS");
00053 addProjection(FastJets(vfs, FastJets::CDFMIDPOINT, 0.7), "Jets");
00054
00055
00056 _sigmaBJet = bookHistogram1D(1, 1, 1);
00057 _ratioBJetToZ = bookHistogram1D(2, 1, 1);
00058 _ratioBJetToJet = bookHistogram1D(3, 1, 1);
00059 }
00060
00061
00062
00063 void analyze(const Event& event) {
00064
00065
00066 const InvMassFinalState& invMassFinalState = applyProjection<InvMassFinalState>(event, "INVFS");
00067 const ParticleVector& ZDecayProducts = invMassFinalState.particles();
00068
00069
00070 if (ZDecayProducts.size() < 2) vetoEvent;
00071
00072 double Lep1Pt = ZDecayProducts[0].momentum().perp();
00073 double Lep2Pt = ZDecayProducts[1].momentum().perp();
00074 double Lep1Eta = fabs(ZDecayProducts[0].momentum().rapidity());
00075 double Lep2Eta = fabs(ZDecayProducts[1].momentum().rapidity());
00076
00077 if (Lep1Eta > _LepEtaCut && Lep2Eta > _LepEtaCut) vetoEvent;
00078
00079 if (abs(ZDecayProducts[0].pdgId())==13 && (Lep1Eta > 1.0 && Lep2Eta > 1.)) {
00080 vetoEvent;
00081 }
00082 if (Lep1Pt < _Lep1PtCut && Lep2Pt < _Lep1PtCut) vetoEvent;
00083
00084
00085
00086 _sumWeightsWithZ += event.weight();
00087
00088 FourMomentum Zmom = ZDecayProducts[0].momentum() + ZDecayProducts[1].momentum();
00089
00090
00091
00092 ParticleVector bquarks;
00093
00094 for (GenEvent::particle_const_iterator p = event.genEvent().particles_begin();
00095 p != event.genEvent().particles_end(); ++p) {
00096 if ( fabs((*p)->pdg_id()) == BQUARK ) {
00097 bquarks.push_back(Particle(**p));
00098 }
00099 }
00100
00101
00102 const FastJets& jetpro = applyProjection<FastJets>(event, "Jets");
00103 MSG_DEBUG("Jet multiplicity before any pT cut = " << jetpro.size());
00104
00105 const PseudoJets& jets = jetpro.pseudoJetsByPt();
00106 MSG_DEBUG("jetlist size = " << jets.size());
00107
00108 int numBJet = 0;
00109 int numJet = 0;
00110
00111
00112 for (PseudoJets::const_iterator jt = jets.begin(); jt != jets.end(); ++jt) {
00113
00114 if (jt->perp() > _JetPtCut && fabs(jt->rapidity()) <= _JetEtaCut) {
00115 ++numJet;
00116
00117
00118
00119 bool bjet = false;
00120 foreach (const Particle& bquark, bquarks) {
00121 if (deltaR(jt->rapidity(), jt->phi(), bquark.momentum().rapidity(),bquark.momentum().azimuthalAngle()) <= _Rjet) {
00122 bjet = true;
00123 break;
00124 }
00125 }
00126 if (bjet) {
00127 numBJet++;
00128 }
00129 }
00130 }
00131
00132 if (numJet > 0) _sumWeightsWithZJet += event.weight();
00133 if (numBJet > 0) {
00134 _sigmaBJet->fill(1960.0,event.weight());
00135 _ratioBJetToZ->fill(1960.0,event.weight());
00136 _ratioBJetToJet->fill(1960.0,event.weight());
00137 }
00138
00139 }
00140
00141
00142
00143 void finalize() {
00144 MSG_DEBUG("Total sum of weights = " << sumOfWeights());
00145 MSG_DEBUG("Sum of weights for Z production in mass range = " << _sumWeightsWithZ);
00146 MSG_DEBUG("Sum of weights for Z+jet production in mass range = " << _sumWeightsWithZJet);
00147
00148 _sigmaBJet->scale(crossSection()/sumOfWeights());
00149 _ratioBJetToZ->scale(1.0/_sumWeightsWithZ);
00150 _ratioBJetToJet->scale(1.0/_sumWeightsWithZJet);
00151 }
00152
00153
00154
00155
00156 private:
00157
00158
00159
00160
00161 double _Rjet;
00162 double _JetPtCut;
00163 double _JetEtaCut;
00164 double _Lep1PtCut;
00165 double _Lep2PtCut;
00166 double _LepEtaCut;
00167
00168 double _sumWeightsWithZ;
00169 double _sumWeightsWithZJet;
00170
00171
00172
00173
00174
00175 AIDA::IHistogram1D* _sigmaBJet;
00176 AIDA::IHistogram1D* _ratioBJetToZ;
00177 AIDA::IHistogram1D* _ratioBJetToJet;
00178
00179
00180 };
00181
00182
00183
00184
00185 DECLARE_RIVET_PLUGIN(CDF_2006_S6653332);
00186
00187 }