[Rivet-svn] r3012 - in trunk: data/anainfo data/plotinfo src/Analyses

blackhole at projects.hepforge.org blackhole at projects.hepforge.org
Wed 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