ATLAS_2011_I954993.cc
Go to the documentation of this file.
00001 // -*- C++ -*- 00002 #include "Rivet/Analysis.hh" 00003 #include "Rivet/RivetYODA.hh" 00004 #include "Rivet/Tools/Logging.hh" 00005 #include "Rivet/Projections/ZFinder.hh" 00006 #include "Rivet/Projections/WFinder.hh" 00007 #include "Rivet/Projections/VetoedFinalState.hh" 00008 00009 namespace Rivet { 00010 00011 00012 /// @brief MC validation analysis for WZ events 00013 class ATLAS_2011_I954993 : public Analysis { 00014 public: 00015 00016 /// Default constructor 00017 ATLAS_2011_I954993() 00018 : Analysis("ATLAS_2011_I954993") 00019 { 00020 setNeedsCrossSection(true); 00021 } 00022 00023 00024 /// @name Analysis methods 00025 //@{ 00026 00027 /// Book histograms 00028 void init() { 00029 00030 //// ZFinder: etaMin,etaMax,pTmin,pid,m2_min,m2_max,dRmax,clusterPhotons,excludePhotonsFromRFS 00031 ZFinder zfinder_e( -2.5, 2.5, 15.0*GeV, ELECTRON, 81.1876*GeV, 101.1876*GeV, 0.1, true, true); 00032 addProjection(zfinder_e, "ZFinder_e"); 00033 ZFinder zfinder_mu(-2.5, 2.5, 15.0*GeV, MUON, 81.1876*GeV, 101.1876*GeV, 0.1, true, true); 00034 addProjection(zfinder_mu, "ZFinder_mu"); 00035 00036 //// WFinder: etaRanges,pTmin,pid,m2_min,m2_max,missingET,dRmax 00037 VetoedFinalState weinput; 00038 weinput.addVetoOnThisFinalState(zfinder_e); 00039 WFinder wfinder_e(weinput, -2.5, 2.5, 15.0*GeV, ELECTRON, 0.0*GeV, 1000.0*GeV, 25.0*GeV, 0.1); 00040 addProjection(wfinder_e, "WFinder_e"); 00041 00042 VetoedFinalState wminput; 00043 wminput.addVetoOnThisFinalState(zfinder_mu); 00044 WFinder wfinder_mu(wminput,-2.5, 2.5, 15.0*GeV, MUON, 0.0*GeV, 1000.0*GeV, 25.0*GeV, 0.1); 00045 addProjection(wfinder_mu, "WFinder_mu"); 00046 00047 //// Histograms 00048 _h_fiducial = bookHisto1D(1,1,1); 00049 00050 } 00051 00052 /// Do the analysis 00053 void analyze(const Event & e) { 00054 00055 const double weight = e.weight(); 00056 00057 const ZFinder& zfinder_e = applyProjection<ZFinder>(e, "ZFinder_e"); 00058 const ZFinder& zfinder_mu = applyProjection<ZFinder>(e, "ZFinder_mu"); 00059 const WFinder& wfinder_e = applyProjection<WFinder>(e, "WFinder_e"); 00060 const WFinder& wfinder_mu = applyProjection<WFinder>(e, "WFinder_mu"); 00061 00062 00063 // Looking for a Z 00064 if (zfinder_e.bosons().size()!= 1 && zfinder_mu.bosons().size() != 1) { 00065 MSG_DEBUG("No Z boson found, vetoing event"); 00066 vetoEvent; 00067 } 00068 00069 // Looking for a W 00070 if (wfinder_e.bosons().size()!= 1 && wfinder_mu.bosons().size() != 1) { 00071 MSG_DEBUG("No W boson found, vetoing event"); 00072 vetoEvent; 00073 } 00074 00075 // If we find a W... 00076 FourMomentum wmom_e(0.0,0.0,0.0,0.0), We(0.0,0.0,0.0,0.0), Wenu(0.0,0.0,0.0,0.0); 00077 FourMomentum wmom_mu(0.0,0.0,0.0,0.0), Wmu(0.0,0.0,0.0,0.0), Wmunu(0.0,0.0,0.0,0.0); 00078 if(wfinder_e.bosons().size()== 1){ 00079 wmom_e = wfinder_e.bosons().front().momentum(); 00080 We = wfinder_e.constituentLeptons()[0].momentum(); 00081 Wenu = wfinder_e.constituentNeutrinos()[0].momentum(); 00082 } 00083 if(wfinder_mu.bosons().size()== 1){ 00084 wmom_mu = wfinder_mu.bosons().front().momentum(); 00085 Wmu = wfinder_mu.constituentLeptons()[0].momentum(); 00086 Wmunu = wfinder_mu.constituentNeutrinos()[0].momentum(); 00087 } 00088 00089 // Applying remaining fiducial phase space requirements 00090 double mT = 0; 00091 if(wfinder_e.bosons().size() == 1){ 00092 mT = sqrt(2*We.pT()*Wenu.Et()*(1.0-cos(We.phi()-Wenu.phi()))); 00093 if (Wenu.pT()/GeV < 25.0 || We.pT()/GeV < 20.0 || mT/GeV < 20.0) { 00094 MSG_DEBUG(" Wnu.pT()/GeV:" << Wenu.pT()/GeV<<" Wl.pT()/GeV:" << We.pT()/GeV<<" mT/GeV:" << mT/GeV); 00095 vetoEvent; 00096 } 00097 } 00098 else if(wfinder_mu.bosons().size() == 1){ 00099 mT = sqrt(2*Wmu.pT()*Wmunu.Et()*(1.0-cos(Wmu.phi()-Wmunu.phi()))); 00100 if (Wmunu.pT()/GeV < 25.0 || Wmu.pT()/GeV < 20.0 || mT/GeV < 20.0) { 00101 MSG_DEBUG(" Wnu.pT()/GeV:" << Wmunu.pT()/GeV<<" Wl.pT()/GeV:" << Wmu.pT()/GeV<<" mT/GeV:" << mT/GeV); 00102 vetoEvent; 00103 } 00104 } 00105 else{ 00106 MSG_DEBUG("No W boson found, can't make a transverse mass, vetoing event"); 00107 vetoEvent; 00108 } 00109 00110 _h_fiducial->fill(7000.0, weight); 00111 00112 } 00113 00114 00115 /// Finalize 00116 void finalize() { 00117 00118 scale(_h_fiducial, crossSection()/femtobarn/sumOfWeights()); 00119 00120 } 00121 00122 //@} 00123 00124 00125 private: 00126 00127 /// @name Histograms 00128 //@{ 00129 Histo1DPtr _h_fiducial; 00130 00131 //@} 00132 00133 }; 00134 00135 00136 //// The hook for the plugin system 00137 DECLARE_RIVET_PLUGIN(ATLAS_2011_I954993); 00138 00139 } Generated on Fri Dec 21 2012 15:03:38 for The Rivet MC analysis system by ![]() |