|
[Rivet-svn] r3012 - in trunk: data/anainfo data/plotinfo src/Analysesblackhole at projects.hepforge.org blackhole at projects.hepforge.orgWed Mar 9 15:30:20 GMT 2011
Author: fsiegert Date: Wed Mar 9 15:30:20 2011 New Revision: 3012 Log: Add MC analysis for W polarisation. Added: trunk/data/anainfo/MC_WPOL.info trunk/data/plotinfo/MC_WPOL.plot trunk/src/Analyses/MC_WPOL.cc Modified: trunk/data/anainfo/Makefile.am trunk/data/plotinfo/Makefile.am trunk/src/Analyses/Makefile.am Added: trunk/data/anainfo/MC_WPOL.info ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ trunk/data/anainfo/MC_WPOL.info Wed Mar 9 15:30:20 2011 (r3012) @@ -0,0 +1,13 @@ +Name: MC_WPOL +Summary: Monte Carlo validation observables for $W$ polarisation +Status: VALIDATED +Authors: +- Frank Siegert <frank.siegert at cern.ch> +References: +RunInfo: + $W \to e \, \nu$ + jets. +NumEvents: 100000000 +Description: + 'Observables sensitive to the polarisation of the W boson: A0, ... A7, + fR, fL, f0, separately for W+ and W-.' + Modified: trunk/data/anainfo/Makefile.am ============================================================================== --- trunk/data/anainfo/Makefile.am Wed Mar 9 15:29:54 2011 (r3011) +++ trunk/data/anainfo/Makefile.am Wed Mar 9 15:30:20 2011 (r3012) @@ -98,6 +98,7 @@ MC_PHOTONJETS.info \ MC_HJETS.info \ MC_WJETS.info \ + MC_WPOL.info \ MC_WWJETS.info \ MC_ZJETS.info \ MC_ZZJETS.info \ Added: trunk/data/plotinfo/MC_WPOL.plot ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ trunk/data/plotinfo/MC_WPOL.plot Wed Mar 9 15:30:20 2011 (r3012) @@ -0,0 +1,284 @@ +# BEGIN PLOT /MC_WPOL/A0_wplus +Title=$A_0$ for $W^+$ +XLabel=$p_\perp(W)$ [GeV] +YLabel=$A_0$ +LogX=1 +LogY=0 +YMin=0.0 +YMax=0.6 +# END PLOT + +# BEGIN PLOT /MC_WPOL/A1_wplus +Title=$A_1$ for $W^+$ +XLabel=$p_\perp(W)$ [GeV] +YLabel=$A_1$ +LogX=1 +LogY=0 +YMin=-0.4 +YMax=0.4 +# END PLOT + +# BEGIN PLOT /MC_WPOL/A2_wplus +Title=$A_2$ for $W^+$ +XLabel=$p_\perp(W)$ [GeV] +YLabel=$A_2$ +LogX=1 +LogY=0 +YMin=0.0 +YMax=0.6 +# END PLOT + +# BEGIN PLOT /MC_WPOL/A3_wplus +Title=$A_3$ for $W^+$ +XLabel=$p_\perp(W)$ [GeV] +YLabel=$A_3$ +LogX=1 +LogY=0 +YMin=-0.3 +YMax=0.2 +# END PLOT + +# BEGIN PLOT /MC_WPOL/A4_wplus +Title=$A_4$ for $W^+$ +XLabel=$p_\perp(W)$ [GeV] +YLabel=$A_4$ +LogX=1 +LogY=0 +YMin=-1.0 +YMax=-0.4 +# END PLOT + +# BEGIN PLOT /MC_WPOL/A5_wplus +Title=$A_5$ for $W^+$ +XLabel=$p_\perp(W)$ [GeV] +YLabel=$A_5$ +LogX=1 +LogY=0 +YMin=-0.1 +YMax=0.1 +# END PLOT + +# BEGIN PLOT /MC_WPOL/A6_wplus +Title=$A_6$ for $W^+$ +XLabel=$p_\perp(W)$ [GeV] +YLabel=$A_6$ +LogX=1 +LogY=0 +YMin=-0.1 +YMax=0.1 +# END PLOT + +# BEGIN PLOT /MC_WPOL/A7_wplus +Title=$A_7$ for $W^+$ +XLabel=$p_\perp(W)$ [GeV] +YLabel=$A_7$ +LogX=1 +LogY=0 +YMin=-0.1 +YMax=0.1 +# END PLOT + +# BEGIN PLOT /MC_WPOL/fL_wplus +Title=$f_L$ for $W^+$ +XLabel=$p_\perp(W)$ [GeV] +YLabel=$f_L$ +LogX=1 +LogY=0 +YMin=0.4 +YMax=0.8 +# END PLOT + +# BEGIN PLOT /MC_WPOL/fR_wplus +Title=$f_R$ for $W^+$ +XLabel=$p_\perp(W)$ [GeV] +YLabel=$f_R$ +LogX=1 +LogY=0 +YMin=0.15 +YMax=0.45 +# END PLOT + +# BEGIN PLOT /MC_WPOL/f0_wplus +Title=$f_0$ for $W^+$ +XLabel=$p_\perp(W)$ [GeV] +YLabel=$f_0$ +LogX=1 +LogY=0 +YMin=0.0 +YMax=0.3 +# END PLOT + +# BEGIN PLOT /MC_WPOL/thetastar_wplus +Title=$\cos(\theta^*)$ inclusive for $W^+$ +XLabel=$\cos(\theta^*)$ +YLabel=$\mathrm{d}\sigma/\mathrm{d}\cos(\theta^*)$ [pb] +LogX=0 +LogY=0 +# END PLOT + +# BEGIN PLOT /MC_WPOL/thetastar_ptw20_wplus +Title=$\cos(\theta^*)$ for $p_\perp(W^+)>20$ GeV +XLabel=$\cos(\theta^*)$ +YLabel=$\mathrm{d}\sigma/\mathrm{d}\cos(\theta^*)$ [pb] +LogX=0 +LogY=0 +# END PLOT + +# BEGIN PLOT /MC_WPOL/phistar_wplus +Title=$\phi^*$ inclusive for $W^+$ +XLabel=$\phi^*$ +YLabel=$\mathrm{d}\sigma/\mathrm{d}\phi^*$ [pb] +LogX=0 +LogY=0 +# END PLOT + +# BEGIN PLOT /MC_WPOL/phistar_ptw20_wplus +Title=$\phi^*$ for $p_\perp(W^+)>20$ GeV +XLabel=$\phi^*$ +YLabel=$\mathrm{d}\sigma/\mathrm{d}\phi^*$ [pb] +LogX=0 +LogY=0 +# END PLOT + +# BEGIN PLOT /MC_WPOL/A0_wminus +Title=$A_0$ for $W^-$ +XLabel=$p_\perp(W)$ [GeV] +YLabel=$A_0$ +LogX=1 +LogY=0 +YMin=0.0 +YMax=0.6 +# END PLOT + +# BEGIN PLOT /MC_WPOL/A1_wminus +Title=$A_1$ for $W^-$ +XLabel=$p_\perp(W)$ [GeV] +YLabel=$A_1$ +LogX=1 +LogY=0 +YMin=-0.4 +YMax=0.4 +# END PLOT + +# BEGIN PLOT /MC_WPOL/A2_wminus +Title=$A_2$ for $W^-$ +XLabel=$p_\perp(W)$ [GeV] +YLabel=$A_2$ +LogX=1 +LogY=0 +YMin=0.0 +YMax=0.6 +# END PLOT + +# BEGIN PLOT /MC_WPOL/A3_wminus +Title=$A_3$ for $W^-$ +XLabel=$p_\perp(W)$ [GeV] +YLabel=$A_3$ +LogX=1 +LogY=0 +YMin=-0.2 +YMax=0.3 +# END PLOT + +# BEGIN PLOT /MC_WPOL/A4_wminus +Title=$A_4$ for $W^-$ +XLabel=$p_\perp(W)$ [GeV] +YLabel=$A_4$ +LogX=1 +LogY=0 +YMin=0.3 +YMax=0.8 +# END PLOT + +# BEGIN PLOT /MC_WPOL/A5_wminus +Title=$A_5$ for $W^-$ +XLabel=$p_\perp(W)$ [GeV] +YLabel=$A_5$ +LogX=1 +LogY=0 +YMin=-0.1 +YMax=0.1 +# END PLOT + +# BEGIN PLOT /MC_WPOL/A6_wminus +Title=$A_6$ for $W^-$ +XLabel=$p_\perp(W)$ [GeV] +YLabel=$A_6$ +LogX=1 +LogY=0 +YMin=-0.1 +YMax=0.1 +# END PLOT + +# BEGIN PLOT /MC_WPOL/A7_wminus +Title=$A_7$ for $W^-$ +XLabel=$p_\perp(W)$ [GeV] +YLabel=$A_7$ +LogX=1 +LogY=0 +YMin=-0.1 +YMax=0.1 +# END PLOT + +# BEGIN PLOT /MC_WPOL/fL_wminus +Title=$f_L$ for $W^-$ +XLabel=$p_\perp(W)$ [GeV] +YLabel=$f_L$ +LogX=1 +LogY=0 +YMin=0.0 +YMax=0.45 +# END PLOT + +# BEGIN PLOT /MC_WPOL/fR_wminus +Title=$f_R$ for $W^-$ +XLabel=$p_\perp(W)$ [GeV] +YLabel=$f_R$ +LogX=1 +LogY=0 +YMin=0.4 +YMax=0.8 +# END PLOT + +# BEGIN PLOT /MC_WPOL/f0_wminus +Title=$f_0$ for $W^-$ +XLabel=$p_\perp(W)$ [GeV] +YLabel=$f_0$ +LogX=1 +LogY=0 +YMin=0.0 +YMax=0.3 +# END PLOT + +# BEGIN PLOT /MC_WPOL/thetastar_wminus +Title=$\cos(\theta^*)$ inclusive for $W^-$ +XLabel=$\cos(\theta^*)$ +YLabel=$\mathrm{d}\sigma/\mathrm{d}\cos(\theta^*)$ [pb] +LogX=0 +LogY=0 +# END PLOT + +# BEGIN PLOT /MC_WPOL/thetastar_ptw20_wminus +Title=$\cos(\theta^*)$ for $p_\perp(W^-)>20$ GeV +XLabel=$\cos(\theta^*)$ +YLabel=$\mathrm{d}\sigma/\mathrm{d}\cos(\theta^*)$ [pb] +LogX=0 +LogY=0 +# END PLOT + +# BEGIN PLOT /MC_WPOL/phistar_wminus +Title=$\phi^*$ inclusive for $W^-$ +XLabel=$\phi^*$ +YLabel=$\mathrm{d}\sigma/\mathrm{d}\phi^*$ [pb] +LogX=0 +LogY=0 +# END PLOT + +# BEGIN PLOT /MC_WPOL/phistar_ptw20_wminus +Title=$\phi^*$ for $p_\perp(W^-)>20$ GeV +XLabel=$\phi^*$ +YLabel=$\mathrm{d}\sigma/\mathrm{d}\phi^*$ [pb] +LogX=0 +LogY=0 +# END PLOT + Modified: trunk/data/plotinfo/Makefile.am ============================================================================== --- trunk/data/plotinfo/Makefile.am Wed Mar 9 15:29:54 2011 (r3011) +++ trunk/data/plotinfo/Makefile.am Wed Mar 9 15:30:20 2011 (r3012) @@ -96,6 +96,7 @@ MC_PHOTONJETS.plot \ MC_HJETS.plot \ MC_WJETS.plot \ + MC_WPOL.plot \ MC_WWJETS.plot \ MC_ZJETS.plot \ MC_ZZJETS.plot \ Added: trunk/src/Analyses/MC_WPOL.cc ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ trunk/src/Analyses/MC_WPOL.cc Wed Mar 9 15:30:20 2011 (r3012) @@ -0,0 +1,160 @@ +// -*- C++ -*- +#include "Rivet/Analysis.hh" +#include "Rivet/RivetAIDA.hh" +#include "Rivet/Tools/Logging.hh" +#include "Rivet/Projections/FinalState.hh" +#include "Rivet/Projections/WFinder.hh" +#include "Rivet/Projections/Beam.hh" +#include "Rivet/Tools/ParticleIdUtils.hh" + +namespace Rivet { + + + /// @brief MC validation analysis for W polarisation + class MC_WPOL : public Analysis { + public: + + /// @name Constructors etc. + //@{ + + /// Constructor + MC_WPOL() + : Analysis("MC_WPOL") + { + setNeedsCrossSection(true); + } + + //@} + + + public: + + /// @name Analysis methods + //@{ + + /// Book histograms and initialise projections before the run + void init() { + + WFinder wfinder(-MAXRAPIDITY, MAXRAPIDITY, 0.0*GeV, ELECTRON, + 60.0*GeV, 100.0*GeV, 0.0*GeV, 0.0); + addProjection(wfinder, "WFinder"); + Beam beams; + addProjection(beams, "Beams"); + + vector<string> tags; + tags += "_wplus", "_wminus"; + _h_dists.resize(tags.size()); + _h_histos.resize(tags.size()); + for (size_t i=0; i<tags.size(); ++i) { + _h_dists[i].resize(11,NULL); + _h_dists[i][0] = bookProfile1D("A0"+tags[i],logBinEdges(100, 1.0, 0.5*sqrtS())); + _h_dists[i][1] = bookProfile1D("A1"+tags[i],logBinEdges(100, 1.0, 0.5*sqrtS())); + _h_dists[i][2] = bookProfile1D("A2"+tags[i],logBinEdges(100, 1.0, 0.5*sqrtS())); + _h_dists[i][3] = bookProfile1D("A3"+tags[i],logBinEdges(100, 1.0, 0.5*sqrtS())); + _h_dists[i][4] = bookProfile1D("A4"+tags[i],logBinEdges(100, 1.0, 0.5*sqrtS())); + _h_dists[i][5] = bookProfile1D("A5"+tags[i],logBinEdges(100, 1.0, 0.5*sqrtS())); + _h_dists[i][6] = bookProfile1D("A6"+tags[i],logBinEdges(100, 1.0, 0.5*sqrtS())); + _h_dists[i][7] = bookProfile1D("A7"+tags[i],logBinEdges(100, 1.0, 0.5*sqrtS())); + _h_dists[i][8] = bookProfile1D("fL"+tags[i],logBinEdges(100, 1.0, 0.5*sqrtS())); + _h_dists[i][9] = bookProfile1D("fR"+tags[i],logBinEdges(100, 1.0, 0.5*sqrtS())); + _h_dists[i][10] = bookProfile1D("f0"+tags[i],logBinEdges(100, 1.0, 0.5*sqrtS())); + _h_histos[i].resize(4,NULL); + _h_histos[i][0] = bookHistogram1D("thetastar"+tags[i],100,-1.0,1.0); + _h_histos[i][1] = bookHistogram1D("phistar"+tags[i],90,0.0,360.0); + _h_histos[i][2] = bookHistogram1D("thetastar_ptw20"+tags[i],100,-1.0,1.0); + _h_histos[i][3] = bookHistogram1D("phistar_ptw20"+tags[i],90,0.0,360.0); + } + } + + + /// Perform the per-event analysis + void analyze(const Event& event) { + const double weight = event.weight(); + + const WFinder& wfinder = applyProjection<WFinder>(event, "WFinder"); + if (wfinder.particles().size() != 1) { + vetoEvent; + } + const ParticlePair& beams = applyProjection<Beam>(event, "Beams").beams(); + + FourMomentum pb1(beams.second.momentum()), pb2(beams.first.momentum()); + Particle lepton=wfinder.constituentLeptonsFinalState().particles()[0]; + FourMomentum pl(lepton.momentum()); + size_t idx = (PID::threeCharge(lepton.pdgId())>0 ? 0 : 1); + FourMomentum plnu(wfinder.particles()[0].momentum()); + + LorentzTransform cms(-plnu.boostVector()); + Matrix3 zrot(plnu.vector3(), Vector3(0.0, 0.0, 1.0)); + pl=cms.transform(pl); + pb1=cms.transform(pb1); + pb2=cms.transform(pb2); + Vector3 pl3=pl.vector3(); + Vector3 pb13=pb1.vector3(); + Vector3 pb23=pb2.vector3(); + pl3=zrot*pl3; + pb13=zrot*pb13; + pb23=zrot*pb23; + Vector3 xref(cos(pb13.theta())>cos(pb23.theta())?pb13:pb23); + Matrix3 xrot(Vector3(xref.x(), xref.y(), 0.0), Vector3(1.0, 0.0, 0.0)); + pl3=xrot*pl3; + + double ptw(wfinder.particles()[0].momentum().pT()/GeV); + double thetas(pl3.theta()), phis(pl3.phi()); + double costhetas(cos(thetas)), sinthetas(sin(thetas)); + double cosphis(cos(phis)), sinphis(sin(phis)); + if (phis<0.0) phis+=2.0*M_PI; + + _h_histos[idx][0]->fill(costhetas,weight); + _h_histos[idx][1]->fill(phis*180.0/M_PI,weight); + if (ptw>20.0) { + _h_histos[idx][2]->fill(costhetas,weight); + _h_histos[idx][3]->fill(phis*180.0/M_PI,weight); + } + _h_dists[idx][0]->fill(ptw,10.0/3.0*(1.0-3.0*sqr(costhetas))+2.0/3.0,weight); + _h_dists[idx][1]->fill(ptw,10.0*sinthetas*costhetas*cosphis,weight); + _h_dists[idx][2]->fill(ptw,10.0*sqr(sinthetas)*(sqr(cosphis)-sqr(sinphis)),weight); + _h_dists[idx][3]->fill(ptw,4.0*sinthetas*cosphis,weight); + _h_dists[idx][4]->fill(ptw,4.0*costhetas,weight); + _h_dists[idx][5]->fill(ptw,4.0*sinthetas*sinphis,weight); + _h_dists[idx][6]->fill(ptw,10.0*costhetas*sinthetas*sinphis,weight); + _h_dists[idx][7]->fill(ptw,10.0*sqr(sinthetas)*cosphis*sinphis,weight); + _h_dists[idx][8]->fill(ptw,0.5*sqr(1.0-costhetas)-(1.0-2.0*sqr(costhetas)),weight); + _h_dists[idx][9]->fill(ptw,0.5*sqr(1.0+costhetas)-(1.0-2.0*sqr(costhetas)),weight); + _h_dists[idx][10]->fill(ptw,5.0*sqr(sinthetas)-3.0,weight); + + } + + + /// Normalise histograms etc., after the run + void finalize() { + + for (size_t i=0; i<_h_histos.size(); ++i) { + foreach (AIDA::IHistogram1D* histo, _h_histos[i]) { + scale(histo, crossSectionPerEvent()); + } + } + + } + + //@} + + + private: + + /// @name Histograms + //@{ + + std::vector<std::vector<AIDA::IProfile1D*> > _h_dists; + std::vector<std::vector<AIDA::IHistogram1D*> > _h_histos; + //@} + + + }; + + + + // This global object acts as a hook for the plugin system + AnalysisBuilder<MC_WPOL> plugin_MC_WPOL; + + +} Modified: trunk/src/Analyses/Makefile.am ============================================================================== --- trunk/src/Analyses/Makefile.am Wed Mar 9 15:29:54 2011 (r3011) +++ trunk/src/Analyses/Makefile.am Wed Mar 9 15:30:20 2011 (r3012) @@ -230,6 +230,7 @@ MC_PHOTONJETS.cc \ MC_HJETS.cc \ MC_WJETS.cc \ + MC_WPOL.cc \ MC_WWJETS.cc \ MC_ZJETS.cc \ MC_ZZJETS.cc \
More information about the Rivet-svn mailing list |