ATLAS_2011_I926145.cc
Go to the documentation of this file.
00001 // -*- C++ -*- 00002 #include "Rivet/Analysis.hh" 00003 #include "Rivet/Projections/FinalState.hh" 00004 #include "Rivet/Projections/IdentifiedFinalState.hh" 00005 #include "Rivet/Projections/WFinder.hh" 00006 #include "Rivet/Projections/ZFinder.hh" 00007 00008 namespace Rivet { 00009 00010 using namespace Cuts; 00011 00012 /// @brief Measurement of electron and muon differential cross section from heavy flavour production 00013 /// 00014 /// lepton cross sections differential in pT 00015 /// 00016 /// @author Paul Bell, Holger Schulz 00017 00018 00019 class ATLAS_2011_I926145 : public Analysis { 00020 public: 00021 00022 /// Constructor 00023 ATLAS_2011_I926145() 00024 : Analysis("ATLAS_2011_I926145") 00025 { 00026 } 00027 00028 00029 public: 00030 00031 /// Book histograms and initialise projections before the run 00032 void init() { 00033 00034 ///projection for electrons 00035 Cut cuts = ( etaIn(-2.00, -1.52) 00036 | etaIn(-1.37, 1.37) 00037 | etaIn( 1.52, 2.00) ) & (pT >= 7.0*GeV); 00038 IdentifiedFinalState elecs(cuts); 00039 elecs.acceptId(PID::ELECTRON); 00040 elecs.acceptId(PID::POSITRON); 00041 addProjection(elecs, "elecs"); 00042 00043 //projection for muons -- same phase space as above??? Not sure if the crack region has 00044 //to be removed for the muons as well 00045 std::vector<std::pair<double, double> > eta_m; 00046 //eta_m.push_back(make_pair(-2.00,-1.52)); 00047 //eta_m.push_back(make_pair(-1.37,1.37)); 00048 //eta_m.push_back(make_pair(1.52,2.00)); 00049 //IdentifiedFinalState muons(eta_m, 7.0*GeV); 00050 IdentifiedFinalState muons(etaIn(-2.0,2.0) & (pT >= 7.0*GeV)); 00051 muons.acceptId(PID::MUON); 00052 muons.acceptId(PID::ANTIMUON); 00053 addProjection(muons, "muons"); 00054 00055 //projection for muons full range 00056 IdentifiedFinalState muons_full(etaIn(-2.5,2.5) & (pT >= 4.0*GeV)); 00057 muons_full.acceptId(PID::MUON); 00058 muons_full.acceptId(PID::ANTIMUON); 00059 addProjection(muons_full, "muons_full"); 00060 Cut cut20 = etaIn(-2.0,2.0); 00061 Cut cut25 = etaIn(-2.5,2.5); 00062 const FinalState fs20(cut20); 00063 const FinalState fs25(cut25); 00064 00065 /// @todo Bare Zs ... 00066 ZFinder zfinder_e(fs20, cut20, PID::ELECTRON, 66.0*GeV, 116.0*GeV, 0.1, ZFinder::NOCLUSTER); 00067 addProjection(zfinder_e, "ZFinder_e"); 00068 ZFinder zfinder_mu(fs20, cut20, PID::MUON, 66.0*GeV, 116.0*GeV, 0.1, ZFinder::NOCLUSTER); 00069 addProjection(zfinder_mu, "ZFinder_mu"); 00070 ZFinder zfinder_mufull(fs25, cut25, PID::MUON, 66.0*GeV, 116.0*GeV, 0.1, ZFinder::NOCLUSTER); 00071 addProjection(zfinder_mufull, "ZFinder_mufull"); 00072 00073 /// @todo ... but dressed Ws? 00074 WFinder wfinder_e(fs20, cut20, PID::ELECTRON, 60.0*GeV, 100.0*GeV, 25.0*GeV, 0.2); 00075 addProjection(wfinder_e, "WFinder_e"); 00076 WFinder wfinder_mu(fs20, cut20, PID::MUON, 60.0*GeV, 100.0*GeV, 25.0*GeV, 0.2); 00077 addProjection(wfinder_mu, "WFinder_mu"); 00078 WFinder wfinder_mufull(fs25, cut25, PID::MUON, 60.0*GeV, 100.0*GeV, 25.0*GeV, 0.2); 00079 addProjection(wfinder_mufull, "WFinder_mufull"); 00080 00081 // Book histograms 00082 _histPt_elecs = bookHisto1D(1 ,1 ,1); 00083 _histPt_muons = bookHisto1D(2 ,1 ,1); 00084 _histPt_muons_full = bookHisto1D(3 ,1 ,1); 00085 } 00086 00087 /// Perform the per-event analysis 00088 void analyze(const Event& event) { 00089 const double weight = event.weight(); 00090 00091 const FinalState& elecs = applyProjection<FinalState>(event, "elecs"); 00092 const FinalState& muons = applyProjection<FinalState>(event, "muons"); 00093 const FinalState& muons_full = applyProjection<FinalState>(event, "muons_full"); 00094 00095 // Veto event if no lepton is present 00096 if (elecs.size() == 0 && muons.size() == 0 && muons_full.size() == 0) { 00097 vetoEvent; 00098 } 00099 00100 // Check for W and or Z bosons in event 00101 // 00102 // Z veto 00103 const ZFinder& zfinder_e = applyProjection<ZFinder>(event, "ZFinder_e"); 00104 const ZFinder& zfinder_mu = applyProjection<ZFinder>(event, "ZFinder_mu"); 00105 const ZFinder& zfinder_mufull = applyProjection<ZFinder>(event, "ZFinder_mufull"); 00106 00107 if (zfinder_e.bosons().size() > 0 || zfinder_mu.bosons().size() > 0 || zfinder_mufull.bosons().size() > 0) { 00108 MSG_DEBUG("Num elec Z-bosons found: " << zfinder_e.bosons().size()); 00109 MSG_DEBUG("Num muon Z-bosons found: " << zfinder_mu.bosons().size()); 00110 MSG_DEBUG("Num muon Z-bosons found (|eta|<2.5): " << zfinder_mufull.bosons().size()); 00111 vetoEvent; 00112 } 00113 00114 // W veto 00115 const WFinder& wfinder_e = applyProjection<WFinder>(event, "WFinder_e"); 00116 const WFinder& wfinder_mu = applyProjection<WFinder>(event, "WFinder_mu"); 00117 const WFinder& wfinder_mufull = applyProjection<WFinder>(event, "WFinder_mufull"); 00118 00119 if (wfinder_e.bosons().size() > 0 || wfinder_mu.bosons().size() > 0 || wfinder_mufull.bosons().size() > 0) { 00120 MSG_DEBUG("Num elec W-bosons found: " << wfinder_e.bosons().size()); 00121 MSG_DEBUG("Num muon W-bosons found: " << wfinder_mu.bosons().size()); 00122 MSG_DEBUG("Num muon W-bosons found (|eta|<2.5): " << wfinder_mufull.bosons().size()); 00123 vetoEvent; 00124 } 00125 00126 00127 // Electron histogram 00128 if (elecs.size() > 0) { 00129 foreach (const Particle& ele, elecs.particles()) { 00130 if (ele.pT()*GeV < 26.0) { 00131 _histPt_elecs->fill(ele.pT()*GeV, weight); 00132 } 00133 } 00134 } 00135 00136 // Muon histogram 00137 if (muons.size() > 0) { 00138 foreach (const Particle& muo, muons.particles()) { 00139 if (muo.pT()*GeV < 26.0) { 00140 _histPt_muons->fill(muo.pT()*GeV, weight); 00141 } 00142 } 00143 } 00144 00145 // Muon full histogram 00146 if (muons_full.size() > 0) { 00147 foreach (const Particle& muo, muons_full.particles()) { 00148 if (muo.pT()*GeV < 100.0) { 00149 _histPt_muons_full->fill(muo.pT()*GeV, weight); 00150 } 00151 } 00152 } 00153 } 00154 00155 /// Normalise histograms etc., after the run 00156 void finalize() { 00157 00158 // Data cross-section is given in nb! x-sections in rivet are in pb! 00159 scale(_histPt_elecs, crossSection()/nanobarn/sumOfWeights()); 00160 scale(_histPt_muons, crossSection()/nanobarn/sumOfWeights()); 00161 scale(_histPt_muons_full, crossSection()/nanobarn/sumOfWeights()); 00162 } 00163 00164 00165 00166 private: 00167 00168 /// @name Histograms 00169 Histo1DPtr _histPt_elecs; 00170 Histo1DPtr _histPt_muons; 00171 Histo1DPtr _histPt_muons_full; 00172 }; 00173 00174 00175 // The hook for the plugin system 00176 DECLARE_RIVET_PLUGIN(ATLAS_2011_I926145); 00177 00178 } Generated on Tue Sep 30 2014 19:45:41 for The Rivet MC analysis system by ![]() |