|
[Rivet-svn] r2939 - in trunk: data/anainfo data/plotinfo data/refdata src/Analysesblackhole at projects.hepforge.org blackhole at projects.hepforge.orgFri Feb 18 19:32:08 GMT 2011
Author: fsiegert Date: Fri Feb 18 19:32:08 2011 New Revision: 2939 Log: Add ATLAS_2010_S8914702 (prompt photon pT spectrum). Thanks to Mike Hance for providing the numbers and the complete analysis Added: trunk/data/anainfo/ATLAS_2010_S8914702.info trunk/data/plotinfo/ATLAS_2010_S8914702.plot trunk/data/refdata/ATLAS_2010_S8914702.aida trunk/src/Analyses/ATLAS_2010_S8914702.cc Modified: trunk/data/anainfo/Makefile.am trunk/data/plotinfo/Makefile.am trunk/data/refdata/Makefile.am trunk/src/Analyses/Makefile.am Added: trunk/data/anainfo/ATLAS_2010_S8914702.info ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ trunk/data/anainfo/ATLAS_2010_S8914702.info Fri Feb 18 19:32:08 2011 (r2939) @@ -0,0 +1,34 @@ +Name: ATLAS_2010_S8914702 +Year: 2010 +Summary: Inclusive isolated prompt photon analysis +Experiment: ATLAS +Collider: LHC 7TeV +SpiresID: 8914702 +Status: VALIDATED +Authors: + - Mike Hance <michael.hance at cern.ch> +References: + - arXiv:1012.4389 [hep-ex] +RunInfo: + Inclusive photon+X events (primary gamma+jet events) at $\sqrt{s} = 7$~TeV. +NumEvents: 1000000 +Beams: [p+, p+] +Energies: [7000] +PtCuts: [15] +Description: + 'A measurement of the cross section for inclusive isolated photon production at $sqrt{s} = 7$ TeV. + The measurement covers three ranges in $|\eta|$: [0.00,0.60), [0.60,1.37), and [1.52,1.81), for + $E_T^\gamma>15$~GeV. The measurement uses 880nb$^{-1}$ of integrated luminosity collected with + the ATLAS detector.' +BibKey: Collaboration:2010sp +BibTeX: '@Article{Collaboration:2010sp, + author = "Collaboration, The ATLAS", + title = "{Measurement of the inclusive isolated prompt photon cross + section in pp collisions at sqrt(s) = 7 TeV with the ATLAS + detector}", + year = "2010", + eprint = "1012.4389", + archivePrefix = "arXiv", + primaryClass = "hep-ex", + SLACcitation = "%%CITATION = 1012.4389;%%" +}' Modified: trunk/data/anainfo/Makefile.am ============================================================================== --- trunk/data/anainfo/Makefile.am Fri Feb 18 13:08:54 2011 (r2938) +++ trunk/data/anainfo/Makefile.am Fri Feb 18 19:32:08 2011 (r2939) @@ -9,6 +9,7 @@ ATLAS_2010_S8591806.info \ ATLAS_2010_S8817804.info \ ATLAS_2010_S8894728.info \ + ATLAS_2010_S8914702.info \ ATLAS_2010_S8918562.info \ ATLAS_2010_S8919674.info \ ATLAS_2011_S8971293.info \ Added: trunk/data/plotinfo/ATLAS_2010_S8914702.plot ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ trunk/data/plotinfo/ATLAS_2010_S8914702.plot Fri Feb 18 19:32:08 2011 (r2939) @@ -0,0 +1,22 @@ +# BEGIN PLOT /ATLAS_2010_S8914702/d01-x01-y01 +Title=Transverse energy of isolated prompt photon, $|\eta| < 0.60$ +XLabel=$E_\perp^\gamma$ [GeV] +YLabel=$\mathrm{d}\sigma/\mathrm{d}E_\perp^\gamma$ [pb/GeV] +# + any additional plot settings you might like, see make-plots documentation +# END PLOT + +# BEGIN PLOT /ATLAS_2010_S8914702/d01-x01-y02 +Title=Transverse energy of isolated prompt photon, $0.60 \leq |\eta| < 1.37$ +XLabel=$E_\perp^\gamma$ [GeV] +YLabel=$\mathrm{d}\sigma/\mathrm{d}E_\perp^\gamma$ [pb/GeV] +# + any additional plot settings you might like, see make-plots documentation +# END PLOT + +# BEGIN PLOT /ATLAS_2010_S8914702/d01-x01-y03 +Title=Transverse energy of isolated prompt photon, $1.52 \leq |\eta| < 1.81$ +XLabel=$E_\perp^\gamma$ [GeV] +YLabel=$\mathrm{d}\sigma/\mathrm{d}E_\perp^\gamma$ [pb/GeV] +# + any additional plot settings you might like, see make-plots documentation +# END PLOT + +# ... add more histograms as you need them ... Modified: trunk/data/plotinfo/Makefile.am ============================================================================== --- trunk/data/plotinfo/Makefile.am Fri Feb 18 13:08:54 2011 (r2938) +++ trunk/data/plotinfo/Makefile.am Fri Feb 18 19:32:08 2011 (r2939) @@ -9,6 +9,7 @@ ATLAS_2010_S8591806.plot \ ATLAS_2010_S8817804.plot \ ATLAS_2010_S8894728.plot \ + ATLAS_2010_S8914702.plot \ ATLAS_2010_S8918562.plot \ ATLAS_2010_S8919674.plot \ ATLAS_2011_S8971293.plot \ Added: trunk/data/refdata/ATLAS_2010_S8914702.aida ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ trunk/data/refdata/ATLAS_2010_S8914702.aida Fri Feb 18 19:32:08 2011 (r2939) @@ -0,0 +1,125 @@ +<?xml version="1.0" encoding="ISO-8859-1" ?> +<!DOCTYPE aida SYSTEM "http://aida.freehep.org/schemas/3.3/aida.dtd"> +<aida version="3.3"> + <implementation version="1.1" package="FreeHEP"/> + <dataPointSet name="d01-x01-y01" dimension="2" + path="/REF/ATLAS_2010_S8914702" title=""> + <annotation> + <item key="Title" value="" sticky="true"/> + <item key="AidaPath" value="/REF/ATLAS_2010_S8914702/d01-x01-y01" sticky="true"/> + <item key="FullPath" value="/ATLAS_2010_S8914702.aida/REF/ATLAS_2010_S8914702/d01-x01-y01" sticky="true"/> + </annotation> + <dataPoint> + <measurement errorPlus="2.500000e+00" value="1.750000e+01" errorMinus="2.500000e+00"/> + <measurement errorPlus="1.400000e+03" value="5.240000e+03" errorMinus="1.300000e+03"/> + </dataPoint> + <dataPoint> + <measurement errorPlus="2.500000e+00" value="2.250000e+01" errorMinus="2.500000e+00"/> + <measurement errorPlus="3.600000e+02" value="1.880000e+03" errorMinus="3.600000e+02"/> + </dataPoint> + <dataPoint> + <measurement errorPlus="2.500000e+00" value="2.750000e+01" errorMinus="2.500000e+00"/> + <measurement errorPlus="1.500000e+02" value="8.800000e+02" errorMinus="1.600000e+02"/> + </dataPoint> + <dataPoint> + <measurement errorPlus="2.500000e+00" value="3.250000e+01" errorMinus="2.500000e+00"/> + <measurement errorPlus="7.000000e+01" value="4.610000e+02" errorMinus="7.000000e+01"/> + </dataPoint> + <dataPoint> + <measurement errorPlus="2.500000e+00" value="3.750000e+01" errorMinus="2.500000e+00"/> + <measurement errorPlus="4.000000e+01" value="2.540000e+02" errorMinus="4.000000e+01"/> + </dataPoint> + <dataPoint> + <measurement errorPlus="5.000000e+00" value="4.500000e+01" errorMinus="5.000000e+00"/> + <measurement errorPlus="1.600000e+01" value="1.150000e+02" errorMinus="1.700000e+01"/> + </dataPoint> + <dataPoint> + <measurement errorPlus="5.000000e+00" value="5.500000e+01" errorMinus="5.000000e+00"/> + <measurement errorPlus="7.000000e+00" value="5.000000e+01" errorMinus="8.000000e+00"/> + </dataPoint> + <dataPoint> + <measurement errorPlus="2.000000e+01" value="8.000000e+01" errorMinus="2.000000e+01"/> + <measurement errorPlus="1.800000e+00" value="1.200000e+01" errorMinus="1.900000e+00"/> + </dataPoint> + </dataPointSet> + <dataPointSet name="d01-x01-y02" dimension="2" + path="/REF/ATLAS_2010_S8914702" title=""> + <annotation> + <item key="Title" value="" sticky="true"/> + <item key="AidaPath" value="/REF/ATLAS_2010_S8914702/d01-x01-y02" sticky="true"/> + <item key="FullPath" value="/ATLAS_2010_S8914702.aida/REF/ATLAS_2010_S8914702/d01-x01-y02" sticky="true"/> + </annotation> + <dataPoint> + <measurement errorPlus="2.500000e+00" value="1.750000e+01" errorMinus="2.500000e+00"/> + <measurement errorPlus="1.400000e+03" value="5.900000e+03" errorMinus="2.300000e+03"/> + </dataPoint> + <dataPoint> + <measurement errorPlus="2.500000e+00" value="2.250000e+01" errorMinus="2.500000e+00"/> + <measurement errorPlus="4.000000e+02" value="2.230000e+03" errorMinus="6.000000e+02"/> + </dataPoint> + <dataPoint> + <measurement errorPlus="2.500000e+00" value="2.750000e+01" errorMinus="2.500000e+00"/> + <measurement errorPlus="1.900000e+02" value="1.050000e+03" errorMinus="2.400000e+02"/> + </dataPoint> + <dataPoint> + <measurement errorPlus="2.500000e+00" value="3.250000e+01" errorMinus="2.500000e+00"/> + <measurement errorPlus="9.000000e+01" value="5.200000e+02" errorMinus="1.100000e+02"/> + </dataPoint> + <dataPoint> + <measurement errorPlus="2.500000e+00" value="3.750000e+01" errorMinus="2.500000e+00"/> + <measurement errorPlus="5.000000e+01" value="3.130000e+02" errorMinus="6.000000e+01"/> + </dataPoint> + <dataPoint> + <measurement errorPlus="5.000000e+00" value="4.500000e+01" errorMinus="5.000000e+00"/> + <measurement errorPlus="2.200000e+01" value="1.460000e+02" errorMinus="2.500000e+01"/> + </dataPoint> + <dataPoint> + <measurement errorPlus="5.000000e+00" value="5.500000e+01" errorMinus="5.000000e+00"/> + <measurement errorPlus="9.000000e+00" value="6.200000e+01" errorMinus="1.000000e+01"/> + </dataPoint> + <dataPoint> + <measurement errorPlus="2.000000e+01" value="8.000000e+01" errorMinus="2.000000e+01"/> + <measurement errorPlus="2.200000e+00" value="1.380000e+01" errorMinus="2.500000e+00"/> + </dataPoint> + </dataPointSet> + <dataPointSet name="d01-x01-y03" dimension="2" + path="/REF/ATLAS_2010_S8914702" title=""> + <annotation> + <item key="Title" value="" sticky="true"/> + <item key="AidaPath" value="/REF/ATLAS_2010_S8914702/d01-x01-y03" sticky="true"/> + <item key="FullPath" value="/ATLAS_2010_S8914702.aida/REF/ATLAS_2010_S8914702/d01-x01-y03" sticky="true"/> + </annotation> + <dataPoint> + <measurement errorPlus="2.500000e+00" value="1.750000e+01" errorMinus="2.500000e+00"/> + <measurement errorPlus="7.000000e+02" value="2.900000e+03" errorMinus="1.100000e+03"/> + </dataPoint> + <dataPoint> + <measurement errorPlus="2.500000e+00" value="2.250000e+01" errorMinus="2.500000e+00"/> + <measurement errorPlus="2.400000e+02" value="1.120000e+03" errorMinus="2.700000e+02"/> + </dataPoint> + <dataPoint> + <measurement errorPlus="2.500000e+00" value="2.750000e+01" errorMinus="2.500000e+00"/> + <measurement errorPlus="9.000000e+01" value="4.700000e+02" errorMinus="1.100000e+02"/> + </dataPoint> + <dataPoint> + <measurement errorPlus="2.500000e+00" value="3.250000e+01" errorMinus="2.500000e+00"/> + <measurement errorPlus="4.500000e+01" value="2.400000e+02" errorMinus="5.200000e+01"/> + </dataPoint> + <dataPoint> + <measurement errorPlus="2.500000e+00" value="3.750000e+01" errorMinus="2.500000e+00"/> + <measurement errorPlus="2.600000e+01" value="1.420000e+02" errorMinus="3.000000e+01"/> + </dataPoint> + <dataPoint> + <measurement errorPlus="5.000000e+00" value="4.500000e+01" errorMinus="5.000000e+00"/> + <measurement errorPlus="1.000000e+01" value="6.200000e+01" errorMinus="1.100000e+01"/> + </dataPoint> + <dataPoint> + <measurement errorPlus="5.000000e+00" value="5.500000e+01" errorMinus="5.000000e+00"/> + <measurement errorPlus="5.000000e+00" value="2.370000e+01" errorMinus="5.000000e+00"/> + </dataPoint> + <dataPoint> + <measurement errorPlus="2.000000e+01" value="8.000000e+01" errorMinus="2.000000e+01"/> + <measurement errorPlus="1.200000e+00" value="6.600000e+00" errorMinus="1.300000e+00"/> + </dataPoint> + </dataPointSet> +</aida> Modified: trunk/data/refdata/Makefile.am ============================================================================== --- trunk/data/refdata/Makefile.am Fri Feb 18 13:08:54 2011 (r2938) +++ trunk/data/refdata/Makefile.am Fri Feb 18 19:32:08 2011 (r2939) @@ -11,6 +11,7 @@ ATLAS_2010_S8591806.aida \ ATLAS_2010_S8817804.aida \ ATLAS_2010_S8894728.aida \ + ATLAS_2010_S8914702.aida \ ATLAS_2010_S8918562.aida \ ATLAS_2010_S8919674.aida \ ATLAS_2011_S8971293.aida \ Added: trunk/src/Analyses/ATLAS_2010_S8914702.cc ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ trunk/src/Analyses/ATLAS_2010_S8914702.cc Fri Feb 18 19:32:08 2011 (r2939) @@ -0,0 +1,242 @@ +// -*- C++ -*- +#include <iostream> +#include <sstream> +#include <string> + +#include "Rivet/Analysis.hh" +#include "Rivet/RivetAIDA.hh" +#include "Rivet/Tools/Logging.hh" +#include "Rivet/Projections/FinalState.hh" + +#include "Rivet/Projections/LeadingParticlesFinalState.hh" +#include "Rivet/Jet.hh" +#include "Rivet/Projections/FastJets.hh" + +#include "fastjet/internal/base.hh" +#include "fastjet/JetDefinition.hh" +#include "fastjet/AreaDefinition.hh" +#include "fastjet/ClusterSequence.hh" +#include "fastjet/ClusterSequenceArea.hh" +#include "fastjet/PseudoJet.hh" + +#define MYDEBUG if(false) getLog() << __LINE__ + + +namespace Rivet { + + + class ATLAS_2010_S8914702 : public Analysis { + public: + + /// Constructor + ATLAS_2010_S8914702() + : Analysis("ATLAS_2010_S8914702") + { + setNeedsCrossSection(true); + + _eta_bins.push_back( 0.00); + _eta_bins.push_back( 0.60); + _eta_bins.push_back( 1.37); + _eta_bins.push_back( 1.52); + _eta_bins.push_back( 1.81); + + _eta_bins_areaoffset.push_back(0.0); + _eta_bins_areaoffset.push_back(1.5); + _eta_bins_areaoffset.push_back(3.0); + } + + public: + + /// Book histograms and initialise projections before the run + void init() { + MYDEBUG << "Entering init." << std::endl; + + FinalState fs; + addProjection(fs, "FS"); + + FastJets fj(fs, FastJets::KT, 0.5); + _area_def = new fastjet::AreaDefinition(fastjet::VoronoiAreaSpec()); + fj.useJetArea(_area_def); + addProjection(fj, "KtJetsD05"); + + LeadingParticlesFinalState photonfs(FinalState(-1.81, 1.81, 15.0*GeV)); + photonfs.addParticleId(PHOTON); + addProjection(photonfs, "LeadingPhoton"); + + int hist_bin=0; + for(int i=0; i<_eta_bins.size()-1; i++){ + if(fabs(_eta_bins[i] - 1.37) < .0001) continue; + MYDEBUG << "\t... Booking Histogram " << i+1 << std::endl; + _h_Et_photon[i] = bookHistogram1D(1,1,hist_bin+1); + hist_bin++; + } + + MYDEBUG << "Entering init." << std::endl; + } + + + int getEtaBin(double eta_w, bool area_eta) const { + double eta = fabs(eta_w); + + int v_iter=0; + if(!area_eta){ + for(v_iter=0; v_iter < (int)_eta_bins.size()-1; v_iter++){ + if(eta >= _eta_bins.at(v_iter) && eta < _eta_bins.at(v_iter+1)) + break; + } + } + else{ + for(v_iter=0; v_iter < (int)_eta_bins_areaoffset.size()-1; v_iter++){ + if(eta >= _eta_bins_areaoffset.at(v_iter) && eta < _eta_bins_areaoffset.at(v_iter+1)) + break; + } + } + + return v_iter; + } + + + /// Perform the per-event analysis + void analyze(const Event& event) { + + const double weight = event.weight(); + + MYDEBUG << "Entering Analyze." << std::endl; + + ParticleVector photons = applyProjection<LeadingParticlesFinalState>(event, "LeadingPhoton").particles(); + + MYDEBUG << "...First projections." << std::endl; + + if(photons.size()!=1){ + MYDEBUG << "...Going to veto event." << std::endl; + vetoEvent; + MYDEBUG << "...Vetoed event." << std::endl; + } + + MYDEBUG << "...Didn't veto event(1)." << std::endl; + + FourMomentum leadingPhoton = photons[0].momentum(); + double eta_P = leadingPhoton.eta(); + double phi_P = leadingPhoton.phi(); + + if(fabs(eta_P)>=1.37 && fabs(eta_P)<1.52){ + vetoEvent; + } + + MYDEBUG << "...Didn't veto event(2)." << std::endl; + + int eta_bin = getEtaBin(eta_P,false); + + ParticleVector fs = applyProjection<FinalState>(event, "FS").particles(); + FourMomentum mom_in_EtCone; + foreach (const Particle& p, fs) { + // check if it's in the cone of .4 + if (deltaR(eta_P, phi_P, p.momentum().eta(), p.momentum().phi()) >= 0.4) continue; + + // check if it's in the 5x7 central core + if (fabs(eta_P-p.momentum().eta()) < .025*7.0*0.5 && + fabs(phi_P-p.momentum().phi()) < (PI/128.)*5.0*0.5) continue; + + mom_in_EtCone += p.momentum(); + } + + MYDEBUG << "...Done with initial EtCone." << std::endl; + + + // now compute the median energy density + _ptDensity.clear(); + _sigma.clear(); + _Njets.clear(); + + std::vector< std::vector<double> > ptDensities; + std::vector<double> emptyVec; + ptDensities.assign(_eta_bins_areaoffset.size()-1,emptyVec); + + const fastjet::ClusterSequenceArea* clust_seq_area = applyProjection<FastJets>(event, "KtJetsD05").clusterSeqArea(); + foreach (const fastjet::PseudoJet& jet, applyProjection<FastJets>(event, "KtJetsD05").pseudoJets(0.0*GeV)) { + double y = fabs(jet.rapidity()); + double eta = fabs(jet.eta()); + double pt = fabs(jet.perp()); + + // get the cluster sequence + double area = clust_seq_area->area(jet); + + if(area > 10e-4 && fabs(eta)<_eta_bins_areaoffset[_eta_bins_areaoffset.size()-1]){ + ptDensities.at(getEtaBin(fabs(eta),true)).push_back(pt/area); + } + } + + for(int b=0;b< (int)_eta_bins_areaoffset.size()-1;b++){ + double median = 0.0; + double sigma = 0.0; + int Njets = 0; + if(ptDensities[b].size() > 0) + { + std::sort(ptDensities[b].begin(), ptDensities[b].end()); + int nDens = ptDensities[b].size(); + if( nDens%2 == 0 ) + median = (ptDensities[b][nDens/2]+ptDensities[b][(nDens-2)/2])/2; + else + median = ptDensities[b][(nDens-1)/2]; + sigma = ptDensities[b][(int)(.15865*nDens)]; + Njets = nDens; + } + _ptDensity.push_back(median); + _sigma.push_back(sigma); + _Njets.push_back(Njets); + } + + // now figure out the correction + float EtCone_area = PI*.4*.4 - (7.0*.025)*(5.0*PI/128.); + float correction = _ptDensity[getEtaBin(eta_P,true)]*EtCone_area; + + MYDEBUG << "...Done with jet-area correction." << std::endl; + + + // shouldn't need to subtract photon + // note: using expected cut at hadron/particle level, not cut at reco level + if(mom_in_EtCone.Et()-correction/*-leadingPhoton.Et()*/ > 4.0*GeV){ + vetoEvent; + } + + MYDEBUG << "...Didn't fail isolation cut." << std::endl; + + _h_Et_photon[eta_bin]->fill(leadingPhoton.Et(), weight); + + MYDEBUG << "...Done with analyze." << std::endl; + } + + + /// Normalise histograms etc., after the run + void finalize() { + + MYDEBUG << "In finalize." << std::endl; + + for(int i=0; i<_eta_bins.size()-1; i++){ + if(fabs(_eta_bins[i] - 1.37) < .0001) continue; + scale(_h_Et_photon[i], crossSection()/sumOfWeights()); + } + MYDEBUG << "Done with finalize." << std::endl; + } + + private: + + AIDA::IHistogram1D *_h_Et_photon[6]; + + fastjet::AreaDefinition* _area_def; + + std::vector<float> _eta_bins; + std::vector<float> _eta_bins_areaoffset; + + std::vector<float> _ptDensity; + std::vector<float> _sigma; + std::vector<float> _Njets; + }; + + + + // This global object acts as a hook for the plugin system + AnalysisBuilder<ATLAS_2010_S8914702> plugin_ATLAS_2010_S8914702; + + +} Modified: trunk/src/Analyses/Makefile.am ============================================================================== --- trunk/src/Analyses/Makefile.am Fri Feb 18 13:08:54 2011 (r2938) +++ trunk/src/Analyses/Makefile.am Fri Feb 18 19:32:08 2011 (r2939) @@ -54,6 +54,7 @@ ATLAS_2010_S8591806.cc \ ATLAS_2010_S8817804.cc \ ATLAS_2010_S8894728.cc \ + ATLAS_2010_S8914702.cc \ ATLAS_2010_S8918562.cc \ ATLAS_2010_S8919674.cc \ ATLAS_2011_S8971293.cc
More information about the Rivet-svn mailing list |