|
[Rivet-svn] r4098 - in branches/2012-06-aidarivet: . data/anainfo data/plotinfo data/refdata src/Analysesblackhole at projects.hepforge.org blackhole at projects.hepforge.orgThu Dec 20 17:25:44 GMT 2012
Author: buckley Date: Thu Dec 20 17:25:43 2012 New Revision: 4098 Log: Adding ATLAS_2012_I1119557 analysis (from Roman Lysak and Lily Asquith). Added: branches/2012-06-aidarivet/data/anainfo/ATLAS_2012_I1119557.info branches/2012-06-aidarivet/data/plotinfo/ATLAS_2012_I1119557.plot branches/2012-06-aidarivet/data/refdata/ATLAS_2012_I1119557.aida branches/2012-06-aidarivet/src/Analyses/ATLAS_2012_I1119557.cc Modified: branches/2012-06-aidarivet/ChangeLog branches/2012-06-aidarivet/data/anainfo/Makefile.am branches/2012-06-aidarivet/data/plotinfo/Makefile.am branches/2012-06-aidarivet/data/refdata/Makefile.am branches/2012-06-aidarivet/src/Analyses/Makefile.am Modified: branches/2012-06-aidarivet/ChangeLog ============================================================================== --- branches/2012-06-aidarivet/ChangeLog Thu Dec 20 17:18:33 2012 (r4097) +++ branches/2012-06-aidarivet/ChangeLog Thu Dec 20 17:25:43 2012 (r4098) @@ -1,3 +1,7 @@ +2012-12-20 Andy Buckley <andy.buckley at cern.ch> + + * Adding ATLAS_2012_I1119557 analysis (from Roman Lysak and Lily Asquith). + 2012-12-18 Andy Buckley <andy.buckley at cern.ch> * Adding TOTEM_2012_002 analysis, from Sercan Sen. Added: branches/2012-06-aidarivet/data/anainfo/ATLAS_2012_I1119557.info ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ branches/2012-06-aidarivet/data/anainfo/ATLAS_2012_I1119557.info Thu Dec 20 17:25:43 2012 (r4098) @@ -0,0 +1,48 @@ +Name: ATLAS_2012_I1119557 +Year: 2012 +Summary: Jet shapes and jet masses +Experiment: ATLAS +Collider: LHC 7TeV +InspireID: 1119557 +Status: VALIDATED +Authors: + - Lily Asquith <lasquith at hep.anl.gov> + - Roman Lysak <lysak at fzu.cz> +References: + - Phys.Rev. D86 (2012) 072006 + - doi:10.1103/PhysRevD.86.072006 + - arXiv:1206.5369 [hep-ex] +RunInfo: + QCD events at 7 TeV, leading-pT jets with $\pT > 300\;GeV$. +NumEvents: 1000000 +NeedCrossSection: no +Beams: [p+, p+] +Energies: [7000] +PtCuts: [300] +Description: + 'Measurements are presented of the properties of high transverse + momentum jets, produced in proton-proton collisions at a + center-of-mass energy of $\sqrt{s} = 7$\;TeV. Jet mass, width, + eccentricity, planar flow and angularity are measured for jets + reconstructed using the anti-$k_t$ algorithm with distance parameters + $R = 0.6$ and 1.0, with transverse momentum $pT > 300$\;GeV and + pseudorapidity $|\eta| < 2$.' +BibKey: Aad:2012meb +BibTeX: '@article{Aad:2012meb, + author = "Aad, Georges and others", + title = "{ATLAS measurements of the properties of jets for boosted + particle searches}", + collaboration = "ATLAS Collaboration", + journal = "Phys.Rev.", + volume = "D86", + pages = "072006", + doi = "10.1103/PhysRevD.86.072006", + year = "2012", + eprint = "1206.5369", + archivePrefix = "arXiv", + primaryClass = "hep-ex", + reportNumber = "CERN-PH-EP-2012-149", + SLACcitation = "%%CITATION = ARXIV:1206.5369;%%", +}' +ToDo: + - Validate the eccentricity plot (commented out for now) Modified: branches/2012-06-aidarivet/data/anainfo/Makefile.am ============================================================================== --- branches/2012-06-aidarivet/data/anainfo/Makefile.am Thu Dec 20 17:18:33 2012 (r4097) +++ branches/2012-06-aidarivet/data/anainfo/Makefile.am Thu Dec 20 17:25:43 2012 (r4098) @@ -55,6 +55,7 @@ ATLAS_2012_I943401.info \ ATLAS_2012_I1082009.info \ ATLAS_2012_I1091481.info \ + ATLAS_2012_I1119557.info \ ATLAS_2012_I1183818.info \ ATLAS_2012_I1188891.info \ ATLAS_2012_I946427.info \ Added: branches/2012-06-aidarivet/data/plotinfo/ATLAS_2012_I1119557.plot ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ branches/2012-06-aidarivet/data/plotinfo/ATLAS_2012_I1119557.plot Thu Dec 20 17:25:43 2012 (r4098) @@ -0,0 +1,55 @@ +# BEGIN PLOT /ATLAS_2012_I1119557/d01-x01-y01 +Title=Anti-$k_T$ jets, $R = 0.6$, $p_T > 300$\;GeV, $|\eta|<2$ +XLabel=Jet mass [GeV] +YLabel=$1/N\cdot \text{d}N/\text{d}M$~[GeV$^{-1}$] +LogY=0 +# END PLOT + +# BEGIN PLOT /ATLAS_2012_I1119557/d01-x02-y01 +Title=Anti-$k_T$ jets, $R = 1.0$, $p_T > 300 $\;GeV, $|\eta|<2$ +XLabel=Jet mass [GeV] +YLabel=$1/N\cdot \text{d}N/\text{d}M$~[GeV$^{-1}$] +LogY=0 +# END PLOT + +# BEGIN PLOT /ATLAS_2012_I1119557/d02-x01-y01 +Title=Anti-$k_T$ jets, $R = 0.6$, $p_T > 300$\;GeV, $|\eta|<2$ +XLabel=Width +YLabel=$1/N\cdot \text{d}N/\text{d}W$ +LogY=0 +# END PLOT + +# BEGIN PLOT /ATLAS_2012_I1119557/d02-x02-y01 +Title=Anti-$k_T$ jets, $R = 1.0$, $p_T > 300$\;GeV, $|\eta|<2$ +XLabel=Width +YLabel=$1/N\cdot \text{d}N/\text{d}W$ +LogY=0 +# END PLOT + +# BEGIN PLOT /ATLAS_2012_I1119557/d03-x01-y01 +#Title=Anti-$k_T$ jets, $R = 0.6$, $p_T > 300$\;GeV, $|\eta|<0.7$, $M > 100$\;GeV +#XLabel=Eccentricity +#YLabel=$1/N\cdot \text{d}N/\text{d}E$ +#LogY=0 +# END PLOT + +# BEGIN PLOT /ATLAS_2012_I1119557/d03-x02-y01 +#Title=Anti-$k_T$ jets, $R = 1.0$, $p_T > 300$\;GeV, $|\eta|<0.7$, $M > 100$\;GeV +#XLabel=Eccentricity +#YLabel=$1/N\cdot \text{d}N/\text{d}E$ +#LogY=0 +# END PLOT + +# BEGIN PLOT /ATLAS_2012_I1119557/d04-x02-y01 +Title=Anti-$k_T$ jets, $R = 1.0$, $p_T > 300$\;GeV, $|\eta|<0.7$, $130 < M < 210$\;GeV +XLabel=Planar flow +YLabel=$1/N\cdot \text{d}N/\text{d}P$ +LogY=0 +# END PLOT + +# BEGIN PLOT /ATLAS_2012_I1119557/d05-x01-y01 +Title=Anti-$k_T$ jets, $R = 0.6$, $p_T > 300$\;GeV, $|\eta|<0.7$, $100 < M < 130$\;GeV +XLabel=Angularity $\tau_{-2}$ +YLabel=$1/N\cdot \text{d}N/\text{d}$\tau_{-2}$ +LogY=0 +# END PLOT Modified: branches/2012-06-aidarivet/data/plotinfo/Makefile.am ============================================================================== --- branches/2012-06-aidarivet/data/plotinfo/Makefile.am Thu Dec 20 17:18:33 2012 (r4097) +++ branches/2012-06-aidarivet/data/plotinfo/Makefile.am Thu Dec 20 17:25:43 2012 (r4098) @@ -53,6 +53,7 @@ ATLAS_2012_I943401.plot \ ATLAS_2012_I946427.plot \ ATLAS_2012_CONF_2012_001.plot \ + ATLAS_2012_I1119557.plot \ ATLAS_2012_I1112263.plot \ ATLAS_2012_I1125961.plot \ ATLAS_2012_I1126136.plot \ Added: branches/2012-06-aidarivet/data/refdata/ATLAS_2012_I1119557.aida ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ branches/2012-06-aidarivet/data/refdata/ATLAS_2012_I1119557.aida Thu Dec 20 17:25:43 2012 (r4098) @@ -0,0 +1,211 @@ +<?xml version="1.0" encoding="utf-8" ?> +<!DOCTYPE aida SYSTEM "http://aida.freehep.org/schemas/3.3/aida.dtd"> +<aida version="3.3"> + <implementation version="1.0" package="HepData"/> + <dataPointSet name="d01-x01-y01" dimension="2" path="/REF/ATLAS_2012_I1119557" title="(1/N)*D(N)/DMASS(C=JET) IN GEV**-1" > + <dataPoint> + <measurement value="30.0" errorPlus="10.0" errorMinus="10.0"/> + <measurement value="0.0212" errorPlus="0.0034058772731852802" errorMinus="0.0034058772731852802"/> + </dataPoint> + <dataPoint> + <measurement value="50.0" errorPlus="10.0" errorMinus="10.0"/> + <measurement value="0.0152" errorPlus="0.0016031219541881396" errorMinus="0.0016031219541881396"/> + </dataPoint> + <dataPoint> + <measurement value="70.0" errorPlus="10.0" errorMinus="10.0"/> + <measurement value="0.0065" errorPlus="0.001004987562112089" errorMinus="0.001104536101718726"/> + </dataPoint> + <dataPoint> + <measurement value="95.0" errorPlus="15.0" errorMinus="15.0"/> + <measurement value="0.0024" errorPlus="4.123105625617661E-4" errorMinus="4.123105625617661E-4"/> + </dataPoint> + <dataPoint> + <measurement value="125.0" errorPlus="15.0" errorMinus="15.0"/> + <measurement value="5.0E-4" errorPlus="8.246211251235322E-5" errorMinus="1.2165525060596439E-4"/> + </dataPoint> + </dataPointSet> + <dataPointSet name="d01-x02-y01" dimension="2" path="/REF/ATLAS_2012_I1119557" title="(1/N)*D(N)/DMASS(C=JET) IN GEV**-1" > + <dataPoint> + <measurement value="37.5" errorPlus="17.5" errorMinus="17.5"/> + <measurement value="0.0069" errorPlus="0.0023021728866442675" errorMinus="0.0024020824298928625"/> + </dataPoint> + <dataPoint> + <measurement value="72.5" errorPlus="17.5" errorMinus="17.5"/> + <measurement value="0.0122" errorPlus="0.0017029386365926401" errorMinus="0.0018027756377319946"/> + </dataPoint> + <dataPoint> + <measurement value="107.5" errorPlus="17.5" errorMinus="17.5"/> + <measurement value="0.0056" errorPlus="0.0013038404810405296" errorMinus="0.0013038404810405296"/> + </dataPoint> + <dataPoint> + <measurement value="142.5" errorPlus="17.5" errorMinus="17.5"/> + <measurement value="0.00236" errorPlus="3.22490309931942E-4" errorMinus="3.423448553724738E-4"/> + </dataPoint> + <dataPoint> + <measurement value="180.0" errorPlus="20.0" errorMinus="20.0"/> + <measurement value="9.0E-4" errorPlus="2.408318915758459E-4" errorMinus="2.3086792761230392E-4"/> + </dataPoint> + <dataPoint> + <measurement value="220.0" errorPlus="20.0" errorMinus="20.0"/> + <measurement value="4.3E-4" errorPlus="2.1095023109728986E-4" errorMinus="1.8110770276274834E-4"/> + </dataPoint> + </dataPointSet> + <dataPointSet name="d02-x01-y01" dimension="2" path="/REF/ATLAS_2012_I1119557" title="(1/N)*D(N)/DWIDTH(C=JET)" > + <dataPoint> + <measurement value="0.0125" errorPlus="0.0125" errorMinus="0.0125"/> + <measurement value="6.11" errorPlus="0.8287339742040264" errorMinus="0.8584287972802402"/> + </dataPoint> + <dataPoint> + <measurement value="0.037500000000000006" errorPlus="0.012499999999999997" errorMinus="0.012500000000000004"/> + <measurement value="10.6" errorPlus="1.2041594578792296" errorMinus="1.104536101718726"/> + </dataPoint> + <dataPoint> + <measurement value="0.07500000000000001" errorPlus="0.024999999999999994" errorMinus="0.02500000000000001"/> + <measurement value="5.53" errorPlus="1.0007996802557444" errorMinus="0.9008884503644167"/> + </dataPoint> + <dataPoint> + <measurement value="0.125" errorPlus="0.024999999999999994" errorMinus="0.024999999999999994"/> + <measurement value="2.64" errorPlus="0.40112342240263166" errorMinus="0.3014962686336267"/> + </dataPoint> + <dataPoint> + <measurement value="0.175" errorPlus="0.025000000000000022" errorMinus="0.024999999999999994"/> + <measurement value="1.4" errorPlus="0.20223748416156687" errorMinus="0.20223748416156687"/> + </dataPoint> + <dataPoint> + <measurement value="0.225" errorPlus="0.024999999999999994" errorMinus="0.024999999999999994"/> + <measurement value="0.77" errorPlus="0.13152946437965907" errorMinus="0.1216552506059644"/> + </dataPoint> + <dataPoint> + <measurement value="0.275" errorPlus="0.024999999999999967" errorMinus="0.025000000000000022"/> + <measurement value="0.4" errorPlus="0.09219544457292887" errorMinus="0.07280109889280519"/> + </dataPoint> + </dataPointSet> + <dataPointSet name="d02-x02-y01" dimension="2" path="/REF/ATLAS_2012_I1119557" title="(1/N)*D(N)/DWIDTH(C=JET)" > + <dataPoint> + <measurement value="0.0125" errorPlus="0.0125" errorMinus="0.0125"/> + <measurement value="1.21" errorPlus="0.48259714048054614" errorMinus="0.5024937810560445"/> + </dataPoint> + <dataPoint> + <measurement value="0.037500000000000006" errorPlus="0.012499999999999997" errorMinus="0.012500000000000004"/> + <measurement value="5.53" errorPlus="1.502131818450032" errorMinus="1.502131818450032"/> + </dataPoint> + <dataPoint> + <measurement value="0.07500000000000001" errorPlus="0.024999999999999994" errorMinus="0.02500000000000001"/> + <measurement value="5.08" errorPlus="0.8209750300709516" errorMinus="0.751065909225016"/> + </dataPoint> + <dataPoint> + <measurement value="0.125" errorPlus="0.024999999999999994" errorMinus="0.024999999999999994"/> + <measurement value="3.36" errorPlus="0.4909175083453431" errorMinus="0.45099889135118726"/> + </dataPoint> + <dataPoint> + <measurement value="0.175" errorPlus="0.025000000000000022" errorMinus="0.024999999999999994"/> + <measurement value="2.18" errorPlus="0.3313608305156178" errorMinus="0.3014962686336267"/> + </dataPoint> + <dataPoint> + <measurement value="0.225" errorPlus="0.024999999999999994" errorMinus="0.024999999999999994"/> + <measurement value="1.51" errorPlus="0.21095023109728983" errorMinus="0.191049731745428"/> + </dataPoint> + <dataPoint> + <measurement value="0.275" errorPlus="0.024999999999999967" errorMinus="0.025000000000000022"/> + <measurement value="1.04" errorPlus="0.2408318915758459" errorMinus="0.22090722034374521"/> + </dataPoint> + <dataPoint> + <measurement value="0.32499999999999996" errorPlus="0.025000000000000022" errorMinus="0.024999999999999967"/> + <measurement value="0.73" errorPlus="0.22090722034374521" errorMinus="0.21095023109728983"/> + </dataPoint> + <dataPoint> + <measurement value="0.375" errorPlus="0.025000000000000022" errorMinus="0.025000000000000022"/> + <measurement value="0.59" errorPlus="0.161245154965971" errorMinus="0.14142135623730953"/> + </dataPoint> + </dataPointSet> +<!-- comment out eccentricity plots for now since not validated + <dataPointSet name="d03-x01-y01" dimension="2" path="/REF/ATLAS_2012_I1119557" title="(1/N)*D(N)/DECCENTRICITY(C=JET)" > + <dataPoint> + <measurement value="0.1" errorPlus="0.1" errorMinus="0.1"/> + <measurement value="0.02" errorPlus="0.022360679774997897" errorMinus="0.022360679774997897"/> + </dataPoint> + <dataPoint> + <measurement value="0.30000000000000004" errorPlus="0.09999999999999998" errorMinus="0.10000000000000003"/> + <measurement value="0.11" errorPlus="0.0670820393249937" errorMinus="0.0670820393249937"/> + </dataPoint> + <dataPoint> + <measurement value="0.5" errorPlus="0.09999999999999998" errorMinus="0.09999999999999998"/> + <measurement value="0.51" errorPlus="0.16552945357246848" errorMinus="0.147648230602334"/> + </dataPoint> + <dataPoint> + <measurement value="0.7" errorPlus="0.10000000000000009" errorMinus="0.09999999999999998"/> + <measurement value="1.1" errorPlus="0.15811388300841897" errorMinus="0.1664331697709324"/> + </dataPoint> + <dataPoint> + <measurement value="0.9" errorPlus="0.09999999999999998" errorMinus="0.09999999999999998"/> + <measurement value="3.29" errorPlus="0.29410882339705485" errorMinus="0.3190611226708764"/> + </dataPoint> + </dataPointSet> + <dataPointSet name="d03-x02-y01" dimension="2" path="/REF/ATLAS_2012_I1119557" title="(1/N)*D(N)/DECCENTRICITY(C=JET)" > + <dataPoint> + <measurement value="0.1" errorPlus="0.1" errorMinus="0.1"/> + <measurement value="0.08" errorPlus="0.03162277660168379" errorMinus="0.03162277660168379"/> + </dataPoint> + <dataPoint> + <measurement value="0.30000000000000004" errorPlus="0.09999999999999998" errorMinus="0.10000000000000003"/> + <measurement value="0.42" errorPlus="0.09219544457292887" errorMinus="0.09219544457292887"/> + </dataPoint> + <dataPoint> + <measurement value="0.5" errorPlus="0.09999999999999998" errorMinus="0.09999999999999998"/> + <measurement value="0.98" errorPlus="0.12369316876852982" errorMinus="0.14317821063276354"/> + </dataPoint> + <dataPoint> + <measurement value="0.7" errorPlus="0.10000000000000009" errorMinus="0.09999999999999998"/> + <measurement value="1.72" errorPlus="0.20396078054371142" errorMinus="0.22360679774997896"/> + </dataPoint> + <dataPoint> + <measurement value="0.9" errorPlus="0.09999999999999998" errorMinus="0.09999999999999998"/> + <measurement value="1.86" errorPlus="0.28284271247461906" errorMinus="0.27294688127912364"/> + </dataPoint> + </dataPointSet> +--> + <dataPointSet name="d04-x02-y01" dimension="2" path="/REF/ATLAS_2012_I1119557" title="(1/N)*D(N)/DPLANARFLOW(C=JET)" > + <dataPoint> + <measurement value="0.1" errorPlus="0.1" errorMinus="0.1"/> + <measurement value="0.51" errorPlus="0.15652475842498528" errorMinus="0.15652475842498528"/> + </dataPoint> + <dataPoint> + <measurement value="0.30000000000000004" errorPlus="0.09999999999999998" errorMinus="0.10000000000000003"/> + <measurement value="1.36" errorPlus="0.28460498941515416" errorMinus="0.3132091952673165"/> + </dataPoint> + <dataPoint> + <measurement value="0.5" errorPlus="0.09999999999999998" errorMinus="0.09999999999999998"/> + <measurement value="1.38" errorPlus="0.30364452901377953" errorMinus="0.28460498941515416"/> + </dataPoint> + <dataPoint> + <measurement value="0.7" errorPlus="0.10000000000000009" errorMinus="0.09999999999999998"/> + <measurement value="0.95" errorPlus="0.14422205101855956" errorMinus="0.12041594578792295"/> + </dataPoint> + <dataPoint> + <measurement value="0.9" errorPlus="0.09999999999999998" errorMinus="0.09999999999999998"/> + <measurement value="0.81" errorPlus="0.16552945357246848" errorMinus="0.18384776310850237"/> + </dataPoint> + </dataPointSet> + <dataPointSet name="d05-x01-y01" dimension="2" path="/REF/ATLAS_2012_I1119557" title="(1/N)*D(N)/DANGULARITY(C=JET)" > + <dataPoint> + <measurement value="0.001" errorPlus="0.001" errorMinus="0.001"/> + <measurement value="75.0" errorPlus="39.293765408777" errorMinus="47.07440918375928"/> + </dataPoint> + <dataPoint> + <measurement value="0.003" errorPlus="0.001" errorMinus="0.001"/> + <measurement value="223.0" errorPlus="30.886890422961002" errorMinus="31.76476034853718"/> + </dataPoint> + <dataPoint> + <measurement value="0.005" errorPlus="0.001" errorMinus="0.001"/> + <measurement value="158.0" errorPlus="45.880278987817846" errorMinus="35.4682957019364"/> + </dataPoint> + <dataPoint> + <measurement value="0.007" errorPlus="0.001" errorMinus="0.001"/> + <measurement value="40.0" errorPlus="33.54101966249684" errorMinus="33.54101966249684"/> + </dataPoint> + <dataPoint> + <measurement value="0.009000000000000001" errorPlus="9.999999999999992E-4" errorMinus="0.0010000000000000009"/> + <measurement value="9.0" errorPlus="26.476404589747453" errorMinus="10.295630140987"/> + </dataPoint> + </dataPointSet> +</aida> Modified: branches/2012-06-aidarivet/data/refdata/Makefile.am ============================================================================== --- branches/2012-06-aidarivet/data/refdata/Makefile.am Thu Dec 20 17:18:33 2012 (r4097) +++ branches/2012-06-aidarivet/data/refdata/Makefile.am Thu Dec 20 17:25:43 2012 (r4098) @@ -57,6 +57,7 @@ ATLAS_2012_I943401.aida \ ATLAS_2012_I1082009.aida \ ATLAS_2012_I1118269.aida \ + ATLAS_2012_I1119557.aida \ ATLAS_2012_I1183818.aida \ ATLAS_2012_I1188891.aida \ ATLAS_2012_CONF_2012_001.aida \ Added: branches/2012-06-aidarivet/src/Analyses/ATLAS_2012_I1119557.cc ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ branches/2012-06-aidarivet/src/Analyses/ATLAS_2012_I1119557.cc Thu Dec 20 17:25:43 2012 (r4098) @@ -0,0 +1,288 @@ +// -*- C++ -*- +#include "Rivet/Analysis.hh" +#include "Rivet/RivetAIDA.hh" +#include "Rivet/Tools/Logging.hh" +#include "Rivet/Projections/FastJets.hh" +#include "Rivet/Projections/FinalState.hh" + +namespace Rivet { + + + // Forward declarations of calculator functions: implementations at bottom of file + double getWidth(const Jet& jet); + double getEcc(const Jet& jet); + double getPFlow(const Jet& jet); + double getAngularity(const Jet& jet); + + + + class ATLAS_2012_I1119557 : public Analysis { + public: + + ATLAS_2012_I1119557() + : Analysis("ATLAS_2012_I1119557") + { } + + + void init() { + const FinalState fs; + addProjection(fs, "FinalState"); + + FastJets fj06(fs, FastJets::ANTIKT, 0.6); + addProjection(fj06, "AntiKT06"); + FastJets fj10(fs, FastJets::ANTIKT, 1.0); + addProjection(fj10, "AntiKT10"); + + for (size_t alg = 0; alg < 2; ++alg) { + _hs_mass[alg] = bookHistogram1D(1, alg+1, 1); + _hs_width[alg] = bookHistogram1D(2, alg+1, 1); + /// @todo Commented eccentricity out for now: reinstate + // _hs_eccentricity[alg] = bookHistogram1D(3, alg+1, 1); + } + _h_planarFlow = bookHistogram1D(4, 2, 1); + _h_angularity = bookHistogram1D(5, 1, 1); + + } + + + /// Perform the per-event analysis + void analyze(const Event& event) { + const double weight = event.weight(); + Jets jetAr[2]; + jetAr[0] = applyProjection<FastJets>(event, "AntiKT06").jetsByPt(300.*GeV, MAXDOUBLE, -2.0, 2.0); + jetAr[1] = applyProjection<FastJets>(event, "AntiKT10").jetsByPt(300.*GeV, MAXDOUBLE, -2.0, 2.0); + + for (size_t alg = 0; alg < 2; ++alg) { + // Require at least one jet + if (jetAr[alg].size() < 1) continue; + + // The leading jet + const Jet& jet = jetAr[alg][0]; + const double m = jet.momentum().mass(); + const double eta = jet.momentum().eta(); + + _hs_mass[alg]->fill(m/GeV, weight); + _hs_width[alg]->fill(getWidth(jet), weight); + /// @todo Commented eccentricity out for now: reinstate + // if (fabs(eta) < 0.7 && m > 100*GeV) _hs_eccentricity[alg]->fill(getEcc(jet), weight); + + if (alg == 1 && fabs(eta) < 0.7 && inRange(m/GeV, 130, 210)) _h_planarFlow->fill(getPFlow(jet), weight); + if (alg == 0 && fabs(eta) < 0.7 && inRange(m/GeV, 100, 130)) _h_angularity->fill(getAngularity(jet), weight); + } + } + + + /// Normalise histograms etc., after the run + void finalize() { + for (size_t alg = 0; alg < 2; ++alg) { + normalize(_hs_mass[alg]); + normalize(_hs_width[alg]); + /// @todo Commented eccentricity out for now: reinstate + // normalize(_hs_eccentricity[alg]); + } + normalize(_h_planarFlow); + normalize(_h_angularity); + } + + + private: + + AIDA::IHistogram1D *_hs_mass[2]; + AIDA::IHistogram1D *_hs_width[2]; + /// @todo Commented eccentricity out for now: reinstate + // AIDA::IHistogram1D *_hs_eccentricity[2]; + AIDA::IHistogram1D *_h_planarFlow; + AIDA::IHistogram1D *_h_angularity; + }; + + + DECLARE_RIVET_PLUGIN(ATLAS_2012_I1119557); + + + + namespace { + + // Adapted code from Lily + /// @todo Convert to use the Rivet rotation matrix code (should be simpler) + FourMomentum RotateAxes(const Rivet::FourMomentum& p, double M[3][3]){ + double px_rot=M[0][0]*(p.px())+M[0][1]*(p.py())+M[0][2]*(p.pz()); + double py_rot=M[1][0]*(p.px())+M[1][1]*(p.py())+M[1][2]*(p.pz()); + double pz_rot=M[2][0]*(p.px())+M[2][1]*(p.py())+M[2][2]*(p.pz()); + return FourMomentum(p.E(), px_rot, py_rot, pz_rot); + } + + // Untouched code from Lily + /// @todo Convert to use the Rivet rotation matrix code (should be simpler) + void CalcRotationMatrix(double nvec[3],double rot_mat[3][3]){ + // clear momentum tensor + for (size_t i = 0; i < 3; i++) { + for (size_t j = 0; j < 3; j++) { + rot_mat[i][j]=0.; + } + } + double mag3=sqrt(nvec[0]*nvec[0] + nvec[1]*nvec[1]+ nvec[2]*nvec[2]); + double mag2=sqrt(nvec[0]*nvec[0] + nvec[1]*nvec[1]); + /// @todo cout is not a valid response to a numerical error! Is the error condition reported?!? Assert added by AB for Rivet 1.8.2 + assert(mag3 > 0); + if (mag3 <= 0) { + cout << "rotation axis is null" << endl; + return; + } + + double ctheta0 = nvec[2]/mag3; + double stheta0 = mag2/mag3; + double cphi0 = (mag2 > 0.) ? nvec[0]/mag2 : 0; + double sphi0 = (mag2 > 0.) ? nvec[1]/mag2 : 0; + + rot_mat[0][0] = -ctheta0*cphi0; + rot_mat[0][1] = -ctheta0*sphi0; + rot_mat[0][2] = stheta0; + rot_mat[1][0] = sphi0; + rot_mat[1][1] = -1.*cphi0; + rot_mat[1][2] = 0.; + rot_mat[2][0] = stheta0*cphi0; + rot_mat[2][1] = stheta0*sphi0; + rot_mat[2][2] = ctheta0; + } + + + /// Jet width calculation + double jetWidth(const Jet& jet) { + const double phi_jet = jet.phi(); + const double eta_jet = jet.eta(); + double width(0), pTsum(0); + foreach (const Particle& p, jet.particles()) { + double pT = p.momentum().pT(); + double eta = p.momentum().eta(); + double phi = p.momentum().phi(); + width += sqrt(pow(phi_jet - phi,2) + pow(eta_jet - eta, 2)) * pT; + pTsum += pT; + } + return (pTsum != 0.0) ? width/pTsum : -1; + } + + + /// Eccentricity calculation, copied and adapted from Lily's code + double getEcc(const Jet& jet) { + vector<double> phis; + vector<double> etas; + vector<double> energies; + + double etaSum(0), phiSum(0), eTot(0); + foreach (const Particle& p, jet.particles()) { + const double E = p.momentum().E(); + const double eta = p.momentum().eta(); + + energies.push_back(E); + etas.push_back(jet.momentum().eta() - eta); + + eTot += E; + etaSum += eta * E; + + /// @todo Replace with the Rivet deltaPhi function (or the mapAngleTo* functions) + double dPhi = jet.momentum().phi() - p.momentum().phi(); + //if DPhi does not lie within 0 < DPhi < PI take 2*PI off DPhi + //this covers cases where DPhi is greater than PI + if( fabs( dPhi - TWOPI ) < fabs(dPhi) ) dPhi -= TWOPI; + //if DPhi does not lie within -PI < DPhi < 0 add 2*PI to DPhi + //this covers cases where DPhi is less than -PI + else if( fabs(dPhi + TWOPI) < fabs(dPhi) ) dPhi += TWOPI; + phis.push_back(dPhi); + + phiSum += dPhi * E; + } + + //these are the "pull" away from the jet axis + etaSum = etaSum/eTot; + phiSum = phiSum/eTot; + + // now for every cluster we alter its position by moving it: + // away from the new axis if it is in the direction of -ve pull + // closer to the new axis if it is in the direction of +ve pull + // the effect of this will be that the new energy weighted center will be on the old jet axis. + double little_x(0), little_y(0); + for (size_t k = 0; k < jet.particles().size(); ++k) { + little_x+= etas[k]-etaSum; + little_y+= phis[k]-phiSum; + etas[k] = etas[k]-etaSum; + phis[k] = phis[k]-phiSum; + } + + double x1(0), x2(0); + for (size_t i = 0; i < jet.particles().size(); ++i) { + x1 += 2. * energies[i]* etas[i] * phis[i]; // this is 2*X*Y + x2 += energies[i]*(phis[i] * phis[i] - etas[i] * etas[i] ); // this is X^2 - Y^2 + } + + // Variance calculations + double theta = .5*atan2(x1, x2); + double sinTheta =sin(theta); + double cosTheta = cos(theta); + double theta2 = theta + 0.5*PI; + double sinThetaPrime = sin(theta2); + double cosThetaPrime = cos(theta2); + + double varX(0), varY(0); + for (size_t i = 0; i < jet.particles().size(); i++) { + const double x = sinTheta*etas[i] + cosTheta*phis[i]; + const double y = sinThetaPrime*etas[i] + cosThetaPrime*phis[i]; + varX += energies[i]* sqr(x); + varY += energies[i]* sqr(y); + } + const double varianceMax = max(varX, varY); + const double varianceMin = min(varX, varY); + const double ecc = (varianceMax != 0.0) ? 1 - varianceMin/varianceMax : -1; + return ecc; + } + + + /// Planar flow calculation, copied and adapted from Lily's code + double getPFlow(const Jet& jet) { + const double phi0 = jet.momentum().phi(); + const double eta0 = jet.momentum().eta(); + + double nref[3]; //< @todo 3-vector to rotate x to? Use Rivet vector classes + nref[0] = cos(phi0)/cosh(eta0); + nref[1] = sin(phi0)/cosh(eta0); + nref[2] = tanh(eta0); + + // Rotation matrix to align with nref + double rotationMatrix[3][3]; + CalcRotationMatrix(nref, rotationMatrix); + + double iw00(0.), iw01(0.), iw11(0.), iw10(0.); + foreach (const Particle& p, jet.particles()) { + double a = 1./(p.momentum().E()*jet.momentum().mass()); + FourMomentum rotclus = RotateAxes(p.momentum(), rotationMatrix); + iw00 += a*pow(rotclus.px(), 2); + iw01 += a*rotclus.px()*rotclus.py(); + iw10 += a*rotclus.py()*rotclus.px(); + iw11 += a*pow(rotclus.py(), 2); + } + + const double det = iw00*iw11 - iw01*iw10; + const double trace = iw00 + iw11; + + const double pf = (trace != 0.0) ? (4.0*det)/sqr(trace) : -1; + return pf; + } + + + /// Angularity calculation, copied and adapted from Lily's code + double getAngularity(const Jet& jet) { + double sum_a = 0.; + // a can take any value < 2 (e.g. 1,0,-0.5 etc) for infrared safety + const double a = -2.; + foreach (const Particle& p, jet.particles()) { + double e_i = p.momentum().E(); + double theta_i = jet.momentum().angle(p.momentum()); + double e_theta_i = e_i * pow(sin(theta_i), a) * pow(1-cos(theta_i), 1-a); + sum_a += e_theta_i; + } + return (jet.momentum().mass() != 0.0) ? sum_a/jet.momentum().mass() : -1; + } + + } + + +} Modified: branches/2012-06-aidarivet/src/Analyses/Makefile.am ============================================================================== --- branches/2012-06-aidarivet/src/Analyses/Makefile.am Thu Dec 20 17:18:33 2012 (r4097) +++ branches/2012-06-aidarivet/src/Analyses/Makefile.am Thu Dec 20 17:25:43 2012 (r4098) @@ -80,6 +80,7 @@ ATLAS_2012_I1112263.cc \ ATLAS_2012_I1117704.cc \ ATLAS_2012_I1118269.cc \ + ATLAS_2012_I1119557.cc \ ATLAS_2012_I1125961.cc \ ATLAS_2012_I1183818.cc \ ATLAS_2012_I1188891.cc
More information about the Rivet-svn mailing list |