|
[Rivet-svn] r3236 - in trunk: data/anainfo data/plotinfo data/refdata src/Analysesblackhole at projects.hepforge.org blackhole at projects.hepforge.orgFri Jul 22 10:12:04 BST 2011
Author: fsiegert Date: Fri Jul 22 10:12:02 2011 New Revision: 3236 Log: Add ATLAS diphoton analysis ATLAS_2011_S9120807 from Giovanni Marchiori. Added: trunk/data/anainfo/ATLAS_2011_S9120807.info trunk/data/plotinfo/ATLAS_2011_S9120807.plot trunk/data/refdata/ATLAS_2011_S9120807.aida trunk/src/Analyses/ATLAS_2011_S9120807.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_2011_S9120807.info ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ trunk/data/anainfo/ATLAS_2011_S9120807.info Fri Jul 22 10:12:02 2011 (r3236) @@ -0,0 +1,33 @@ +Name: ATLAS_2011_S9120807 +Year: 2011 +Summary: Inclusive isolated diphoton analysis +Experiment: ATLAS +Collider: LHC 7TeV +SpiresID: 9120807 +Status: VALIDATED +Authors: + - Giovanni Marchiori <giovanni.marchiori at cern.ch> +References: + - arXiv:1107.0581 [hep-ex] +RunInfo: + Inclusive diphoton+X events at $\sqrt{s} = 7$~TeV. +NumEvents: 1000000 +Beams: [p+, p+] +Energies: [7000] +PtCuts: [16] +Description: + 'A measurement of the cross section for inclusive isolated photon production at $sqrt{s} = 7$ TeV. + The measurement is done in bins of $M_\gamma\gamma$, $p_{T\gamma\gamma}, and $\Delta\phi_{\gamma\gamma}$, + for isolated photons with $|\eta|<2.37$ and $E_T^\gamma>16$~GeV. + The measurement uses 37 pb$^{-1}$ of integrated luminosity collected with + the ATLAS detector.' +BibTeX: '@Article{Aad:2011mh, + author = "Aad, Georges and others", + title = "{Measurement of the isolated di-photon cross-section in + pp collisions at sqrt(s) = 7 TeV with the ATLAS detector}", + collaboration = "ATLAS Collaboration", + year = "2011", + eprint = "1107.0581", + archivePrefix = "arXiv", + primaryClass = "hep-ex", +} Modified: trunk/data/anainfo/Makefile.am ============================================================================== --- trunk/data/anainfo/Makefile.am Thu Jul 21 22:17:14 2011 (r3235) +++ trunk/data/anainfo/Makefile.am Fri Jul 22 10:12:02 2011 (r3236) @@ -20,6 +20,7 @@ ATLAS_2011_S9002537.info \ ATLAS_2011_S9019561.info \ ATLAS_2011_CONF_2011_090.info \ + ATLAS_2011_S9120807.info \ BELLE_2006_S6265367.info \ CDF_1988_S1865951.info \ CDF_1990_S2089246.info \ Added: trunk/data/plotinfo/ATLAS_2011_S9120807.plot ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ trunk/data/plotinfo/ATLAS_2011_S9120807.plot Fri Jul 22 10:12:02 2011 (r3236) @@ -0,0 +1,17 @@ +# BEGIN PLOT /ATLAS_2011_S9120807/d01-x01-y01 +Title=Isolated diphoton cross-section vs diphoton invariant mass +XLabel=$M_{\gamma\gamma}$ [GeV] +YLabel=$\mathrm{d}\sigma/\mathrm{d}M_{\gamma\gamma}$ [pb/GeV] +# END PLOT + +# BEGIN PLOT /ATLAS_2011_S9120807/d02-x01-y01 +Title=Isolated diphoton cross-section vs diphoton transverse momentum +XLabel=$p_{\perp\gamma\gamma}$ [GeV] +YLabel=$\mathrm{d}\sigma/\mathrm{d}p_{\perp\gamma\gamma}$ [pb/GeV] +# END PLOT + +# BEGIN PLOT /ATLAS_2011_S9120807/d03-x01-y01 +Title=Isolated diphoton cross-section vs diphoton azimuthal separation +XLabel=$\Delta\phi_{\gamma\gamma}$ [rad] +YLabel=$\mathrm{d}\sigma/\mathrm{d}\Delta\phi_{\gamma\gamma}$ [pb/rad] +# END PLOT Modified: trunk/data/plotinfo/Makefile.am ============================================================================== --- trunk/data/plotinfo/Makefile.am Thu Jul 21 22:17:14 2011 (r3235) +++ trunk/data/plotinfo/Makefile.am Fri Jul 22 10:12:02 2011 (r3236) @@ -17,6 +17,7 @@ ATLAS_2010_S8994773.plot \ ATLAS_2011_S9002537.plot \ ATLAS_2010_CONF_2010_049.plot \ + ATLAS_2011_S9120807.plot \ CDF_1988_S1865951.plot \ CDF_1990_S2089246.plot \ CDF_1993_S2742446.plot \ Added: trunk/data/refdata/ATLAS_2011_S9120807.aida ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ trunk/data/refdata/ATLAS_2011_S9120807.aida Fri Jul 22 10:12:02 2011 (r3236) @@ -0,0 +1,129 @@ +<?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_2011_S9120807" title=""> + <annotation> + <item key="Title" value="" sticky="true"/> + <item key="AidaPath" value="/REF/ATLAS_2011_S9120807/d01-x01-y01" sticky="true"/> + <item key="FullPath" value="/ATLAS_2011_S9120807.aida/REF/ATLAS_2011_S9120807/d01-x01-y01" sticky="true"/> + </annotation> + <dataPoint> + <measurement errorPlus="1.500000e+01" value="1.500000e+01" errorMinus="1.500000e+01"/> + <measurement errorPlus="7.007000e-02" value="1.969100e-01" errorMinus="5.828000e-02"/> + </dataPoint> + <dataPoint> + <measurement errorPlus="5.000000e+00" value="3.500000e+01" errorMinus="5.000000e+00"/> + <measurement errorPlus="5.002300e-01" value="1.771960e+00" errorMinus="3.895200e-01"/> + </dataPoint> + <dataPoint> + <measurement errorPlus="5.000000e+00" value="4.500000e+01" errorMinus="5.000000e+00"/> + <measurement errorPlus="6.337000e-01" value="2.347750e+00" errorMinus="4.855100e-01"/> + </dataPoint> + <dataPoint> + <measurement errorPlus="5.000000e+00" value="5.500000e+01" errorMinus="5.000000e+00"/> + <measurement errorPlus="4.344800e-01" value="1.832100e+00" errorMinus="3.696700e-01"/> + </dataPoint> + <dataPoint> + <measurement errorPlus="5.000000e+00" value="6.500000e+01" errorMinus="5.000000e+00"/> + <measurement errorPlus="2.586900e-01" value="7.444500e-01" errorMinus="2.201300e-01"/> + </dataPoint> + <dataPoint> + <measurement errorPlus="5.000000e+00" value="7.500000e+01" errorMinus="5.000000e+00"/> + <measurement errorPlus="1.840400e-01" value="4.512600e-01" errorMinus="1.740300e-01"/> + </dataPoint> + <dataPoint> + <measurement errorPlus="1.000000e+01" value="9.000000e+01" errorMinus="1.000000e+01"/> + <measurement errorPlus="9.911000e-02" value="3.959200e-01" errorMinus="9.600000e-02"/> + </dataPoint> + <dataPoint> + <measurement errorPlus="2.500000e+01" value="1.250000e+02" errorMinus="2.500000e+01"/> + <measurement errorPlus="3.313000e-02" value="7.919000e-02" errorMinus="3.322000e-02"/> + </dataPoint> + <dataPoint> + <measurement errorPlus="2.500000e+01" value="1.750000e+02" errorMinus="2.500000e+01"/> + <measurement errorPlus="1.066000e-02" value="2.634000e-02" errorMinus="1.008000e-02"/> + </dataPoint> + </dataPointSet> + <dataPointSet name="d02-x01-y01" dimension="2" + path="/REF/ATLAS_2011_S9120807" title=""> + <annotation> + <item key="Title" value="" sticky="true"/> + <item key="AidaPath" value="/REF/ATLAS_2011_S9120807/d02-x01-y01" sticky="true"/> + <item key="FullPath" value="/ATLAS_2011_S9120807.aida/REF/ATLAS_2011_S9120807/d02-x01-y01" sticky="true"/> + </annotation> + <dataPoint> + <measurement errorPlus="5.000000e+00" value="5.000000e+00" errorMinus="5.000000e+00"/> + <measurement errorPlus="9.366600e-01" value="4.477630e+00" errorMinus="6.917100e-01"/> + </dataPoint> + <dataPoint> + <measurement errorPlus="5.000000e+00" value="1.500000e+01" errorMinus="5.000000e+00"/> + <measurement errorPlus="5.513100e-01" value="2.213390e+00" errorMinus="4.747800e-01"/> + </dataPoint> + <dataPoint> + <measurement errorPlus="5.000000e+00" value="2.500000e+01" errorMinus="5.000000e+00"/> + <measurement errorPlus="3.538100e-01" value="9.423800e-01" errorMinus="3.243800e-01"/> + </dataPoint> + <dataPoint> + <measurement errorPlus="5.000000e+00" value="3.500000e+01" errorMinus="5.000000e+00"/> + <measurement errorPlus="2.658500e-01" value="6.180200e-01" errorMinus="2.107500e-01"/> + </dataPoint> + <dataPoint> + <measurement errorPlus="5.000000e+00" value="4.500000e+01" errorMinus="5.000000e+00"/> + <measurement errorPlus="1.402700e-01" value="2.615700e-01" errorMinus="1.319300e-01"/> + </dataPoint> + <dataPoint> + <measurement errorPlus="5.000000e+00" value="5.500000e+01" errorMinus="5.000000e+00"/> + <measurement errorPlus="1.283300e-01" value="3.584200e-01" errorMinus="1.043800e-01"/> + </dataPoint> + <dataPoint> + <measurement errorPlus="1.000000e+01" value="7.000000e+01" errorMinus="1.000000e+01"/> + <measurement errorPlus="4.367000e-02" value="5.606000e-02" errorMinus="4.505000e-02"/> + </dataPoint> + <dataPoint> + <measurement errorPlus="1.000000e+01" value="9.000000e+01" errorMinus="1.000000e+01"/> + <measurement errorPlus="2.091000e-02" value="4.772000e-02" errorMinus="2.146000e-02"/> + </dataPoint> + <dataPoint> + <measurement errorPlus="2.500000e+01" value="1.250000e+02" errorMinus="2.500000e+01"/> + <measurement errorPlus="4.490000e-03" value="2.750000e-03" errorMinus="4.360000e-03"/> + </dataPoint> + <dataPoint> + <measurement errorPlus="2.500000e+01" value="1.750000e+02" errorMinus="2.500000e+01"/> + <measurement errorPlus="1.530000e-03" value="-4.000000e-05" errorMinus="1.520000e-03"/> + </dataPoint> + </dataPointSet> + <dataPointSet name="d03-x01-y01" dimension="2" + path="/REF/ATLAS_2011_S9120807" title=""> + <annotation> + <item key="Title" value="" sticky="true"/> + <item key="AidaPath" value="/REF/ATLAS_2011_S9120807/d03-x01-y01" sticky="true"/> + <item key="FullPath" value="/ATLAS_2011_S9120807.aida/REF/ATLAS_2011_S9120807/d03-x01-y01" sticky="true"/> + </annotation> + <dataPoint> + <measurement errorPlus="5.000000e-01" value="5.000000e-01" errorMinus="5.000000e-01"/> + <measurement errorPlus="1.869220e+00" value="4.892890e+00" errorMinus="1.607510e+00"/> + </dataPoint> + <dataPoint> + <measurement errorPlus="5.000000e-01" value="1.500000e+00" errorMinus="5.000000e-01"/> + <measurement errorPlus="3.084550e+00" value="8.895120e+00" errorMinus="2.622350e+00"/> + </dataPoint> + <dataPoint> + <measurement errorPlus="2.500000e-01" value="2.250000e+00" errorMinus="2.500000e-01"/> + <measurement errorPlus="7.007360e+00" value="2.355471e+01" errorMinus="5.458550e+00"/> + </dataPoint> + <dataPoint> + <measurement errorPlus="1.500000e-01" value="2.650000e+00" errorMinus="1.500000e-01"/> + <measurement errorPlus="1.389836e+01" value="5.557217e+01" errorMinus="1.202058e+01"/> + </dataPoint> + <dataPoint> + <measurement errorPlus="1.000000e-01" value="2.900000e+00" errorMinus="1.000000e-01"/> + <measurement errorPlus="2.692063e+01" value="1.206229e+02" errorMinus="2.163352e+01"/> + </dataPoint> + <dataPoint> + <measurement errorPlus="7.100000e-02" value="3.071000e+00" errorMinus="7.100000e-02"/> + <measurement errorPlus="3.911799e+01" value="1.732653e+02" errorMinus="3.292856e+01"/> + </dataPoint> + </dataPointSet> +</aida> Modified: trunk/data/refdata/Makefile.am ============================================================================== --- trunk/data/refdata/Makefile.am Thu Jul 21 22:17:14 2011 (r3235) +++ trunk/data/refdata/Makefile.am Fri Jul 22 10:12:02 2011 (r3236) @@ -21,6 +21,7 @@ ATLAS_2010_S8994773.aida \ ATLAS_2011_S9002537.aida \ ATLAS_2010_CONF_2010_049.aida \ + ATLAS_2011_S9120807.aida \ CMS_2010_S8547297.aida \ CMS_2010_S8656010.aida \ CMS_2011_S8884919.aida \ Added: trunk/src/Analyses/ATLAS_2011_S9120807.cc ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ trunk/src/Analyses/ATLAS_2011_S9120807.cc Fri Jul 22 10:12:02 2011 (r3236) @@ -0,0 +1,279 @@ +// -*- 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/IdentifiedFinalState.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" + + +namespace Rivet { + + /// @brief Measurement of isolated diphoton + X differential cross-sections + /// + /// Inclusive isolated gamma gamma cross-sections, differential in M(gg), pT(gg), + /// dphi(gg) + /// + /// @author Giovanni Marchiori + + class ATLAS_2011_S9120807 : public Analysis { + public: + + /// Constructor + ATLAS_2011_S9120807() + : Analysis("ATLAS_2011_S9120807") + { + setBeams(PROTON, PROTON); + setNeedsCrossSection(true); + + _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() { + MSG_DEBUG("Entering init."); + + 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"); + + IdentifiedFinalState photonfs(-2.37, 2.37, 16.0*GeV); + photonfs.acceptId(PHOTON); + addProjection(photonfs, "Photon"); + + MSG_DEBUG("\t... Booking Histograms "); + /// use autobook option, histo d01-x01-y01 + _h_M = bookHistogram1D(1, 1, 1); + /// use autobook option, histo d02-x01-y01 + _h_pT = bookHistogram1D(2, 1, 1); + /// use autobook option, histo d03-x01-y01 + _h_dPhi = bookHistogram1D(3, 1, 1); + + MSG_DEBUG("Exiting init."); + } + + + 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) { + + MSG_DEBUG("Entering Analyze."); + + const double weight = event.weight(); + + /// + /// require at least 2 photons in final state + /// + MSG_DEBUG("...First projections."); + ParticleVector photons = applyProjection<IdentifiedFinalState>(event, "Photon").particlesByPt(); + if (photons.size() < 2){ + MSG_DEBUG("...Going to veto event."); + vetoEvent; + } + MSG_DEBUG("...Didn't veto event(1)."); + + /// + /// 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 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); + } + + + /// + /// Loop over photons and fill vector of isolated ones + /// + ParticleVector isolated_photons; + foreach (const Particle& photon, photons) { + + /// + /// remove photons in crack + /// + double eta_P = photon.momentum().eta(); + if(fabs(eta_P)>=1.37 && fabs(eta_P)<1.52) continue; + + double phi_P = photon.momentum().phi(); + + /// + /// compute isolation + /// + + /// std EtCone + 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(); + } + + MSG_DEBUG("...Done with initial EtCone."); + + /// now figure out the correction (area*density) + float EtCone_area = PI*.4*.4 - (7.0*.025)*(5.0*PI/128.); + float correction = _ptDensity[getEtaBin(eta_P,true)]*EtCone_area; + + MSG_DEBUG("...Done with jet-area correction."); + + /// 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 > 4.0*GeV){ + continue; + } + + /// add photon to list of isolated ones + isolated_photons.push_back(photon); + } + + /// + /// require at least two isolated photons + /// + if (isolated_photons.size() < 2) { + MSG_DEBUG("...Going to veto event(2)."); + vetoEvent; + } + MSG_DEBUG("...Didn't veto event(2)."); + + + /// + /// select leading pT pair + /// + std::sort(isolated_photons.begin(), isolated_photons.end(), cmpParticleByPt); + FourMomentum y1=isolated_photons[0].momentum(); + FourMomentum y2=isolated_photons[1].momentum(); + + /// + /// require the two photons to be separated (dR>0.4) + /// + if (deltaR(y1, y2)<0.4) { + vetoEvent; + } + + FourMomentum yy=y1+y2; + double Myy = yy.mass()/GeV; + double pTyy = yy.pT()/GeV; + double dPhiyy = mapAngle0ToPi(y1.phi()-y2.phi()); + + _h_M->fill(Myy, weight); + _h_pT->fill(pTyy, weight); + _h_dPhi->fill(dPhiyy, weight); + + MSG_DEBUG("...Done with analyze."); + } + + + /// Normalise histograms etc., after the run + void finalize() { + + MSG_DEBUG("In finalize."); + + scale(_h_M, crossSection()/sumOfWeights()); + scale(_h_pT, crossSection()/sumOfWeights()); + scale(_h_dPhi, crossSection()/sumOfWeights()); + + MSG_DEBUG("Done with finalize."); + } + + private: + + AIDA::IHistogram1D *_h_M; + AIDA::IHistogram1D *_h_pT; + AIDA::IHistogram1D *_h_dPhi; + + 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_2011_S9120807> plugin_ATLAS_2011_S9120807; +} Modified: trunk/src/Analyses/Makefile.am ============================================================================== --- trunk/src/Analyses/Makefile.am Thu Jul 21 22:17:14 2011 (r3235) +++ trunk/src/Analyses/Makefile.am Fri Jul 22 10:12:02 2011 (r3236) @@ -53,7 +53,8 @@ ATLAS_2011_S8971293.cc \ ATLAS_2010_S8994773.cc \ ATLAS_2011_S8983313.cc \ - ATLAS_2011_S9002537.cc + ATLAS_2011_S9002537.cc \ + ATLAS_2011_S9120807.cc if ENABLE_UNVALIDATED RivetATLASAnalyses_la_SOURCES += \ ATLAS_2010_CONF_2010_049.cc \
More information about the Rivet-svn mailing list |