ATLAS_2011_S9041966 Class Reference

Inheritance diagram for ATLAS_2011_S9041966:
Inheritance graph
[legend]
Collaboration diagram for ATLAS_2011_S9041966:
Collaboration graph
[legend]

List of all members.

Public Member Functions

void finalize ()
AnalysisHandlerhandler () const
 Access the controlling AnalysisHandler object.
void normalize (AIDA::IHistogram1D *&histo, double norm=1.0)
void normalize (AIDA::IHistogram2D *&histo, double norm=1.0)
void scale (AIDA::IHistogram1D *&histo, double scale)
void scale (AIDA::IHistogram2D *&histo, double scale)
AnalysissetCrossSection (double xs)
 Set the cross section from the generator.
Constructors etc.

 ATLAS_2011_S9041966 ()
 Constructor.
Analysis methods

void init ()
 Book histograms and initialize projections before the run.
void analyze (const Event &event)
 Perform the per-event analysis.
Metadata

Metadata is used for querying from the command line and also for building web pages and the analysis pages in the Rivet manual.

const AnalysisInfoinfo () const
 Get the actual AnalysisInfo object in which all this metadata is stored.
virtual std::string name () const
 Get the name of the analysis.
virtual std::string inspireId () const
 Get the Inspire ID code for this analysis.
virtual std::string spiresId () const
 Get the SPIRES ID code for this analysis (~deprecated).
virtual std::vector< std::string > authors () const
 Names & emails of paper/analysis authors.
virtual std::string summary () const
 Get a short description of the analysis.
virtual std::string description () const
 Get a full description of the analysis.
virtual std::string runInfo () const
 Information about the events needed as input for this analysis.
virtual std::string experiment () const
 Experiment which performed and published this analysis.
virtual std::string collider () const
 Collider on which the experiment ran.
virtual std::string year () const
 When the original experimental analysis was published.
virtual std::vector< std::string > references () const
 Journal, and preprint references.
virtual std::string bibKey () const
 BibTeX citation key for this article.
virtual std::string bibTeX () const
 BibTeX citation entry for this article.
virtual std::string status () const
 Whether this analysis is trusted (in any way!).
virtual std::vector< std::string > todos () const
 Any work to be done on this analysis.
virtual const std::vector
< PdgIdPair > & 
requiredBeams () const
 Return the allowed pairs of incoming beams required by this analysis.
virtual AnalysissetRequiredBeams (const std::vector< PdgIdPair > &requiredBeams)
 Declare the allowed pairs of incoming beams required by this analysis.
virtual const std::vector
< std::pair< double, double > > & 
requiredEnergies () const
 Sets of valid beam energy pairs, in GeV.
virtual AnalysissetRequiredEnergies (const std::vector< std::pair< double, double > > &requiredEnergies)
 Declare the list of valid beam energy pairs, in GeV.
bool needsCrossSection () const
 Return true if this analysis needs to know the process cross-section.
AnalysissetNeedsCrossSection (bool needed=true)
 Declare whether this analysis needs to know the process cross-section from the generator.
Internal metadata modifiying methods

AnalysisInfoinfo ()
 Get the actual AnalysisInfo object in which all this metadata is stored (non-const).
virtual AnalysissetBeams (PdgId beam1, PdgId beam2)
Run conditions

const ParticlePairbeams () const
 Incoming beams for this run.
const PdgIdPair beamIds () const
 Incoming beam IDs for this run.
double sqrtS () const
 Centre of mass energy for this run.
Analysis / beam compatibility testing

bool isCompatible (const ParticlePair &beams) const
 Check if analysis is compatible with the provided beam particle IDs and energies.
bool isCompatible (PdgId beam1, PdgId beam2, double e1, double e2) const
 Check if analysis is compatible with the provided beam particle IDs and energies.
bool isCompatible (const PdgIdPair &beams, const std::pair< double, double > &energies) const
 Check if analysis is compatible with the provided beam particle IDs and energies.
Projection "getting" functions

std::set< ConstProjectionPtrgetProjections () const
 Get the contained projections, including recursion.
template<typename PROJ >
const PROJ & getProjection (const std::string &name) const
 Get the named projection, specifying return type via a template argument.
const ProjectiongetProjection (const std::string &name) const
Projection applying functions

template<typename PROJ >
const PROJ & applyProjection (const Event &evt, const PROJ &proj) const
 Apply the supplied projection on event.
template<typename PROJ >
const PROJ & applyProjection (const Event &evt, const Projection &proj) const
 Apply the supplied projection on event.
template<typename PROJ >
const PROJ & applyProjection (const Event &evt, const std::string &name) const
 Apply the named projection on event.

Protected Member Functions

LoggetLog () const
 Get a Log object based on the name() property of the calling analysis object.
double crossSection () const
 Get the process cross-section in pb. Throws if this hasn't been set.
double crossSectionPerEvent () const
size_t numEvents () const
double sumOfWeights () const
ProjectionHandlergetProjHandler () const
 Get a reference to the ProjectionHandler for this thread.
AIDA analysis infrastructure.

AIDA::IAnalysisFactory & analysisFactory ()
 Access the AIDA analysis factory of the controlling AnalysisHandler object.
AIDA::ITree & tree ()
 Access the AIDA tree of the controlling AnalysisHandler object.
AIDA::IHistogramFactory & histogramFactory ()
 Access the AIDA histogram factory of the controlling AnalysisHandler object.
AIDA::IDataPointSetFactory & datapointsetFactory ()
 Access the AIDA histogram factory of the controlling AnalysisHandler object.
const std::string histoDir () const
 Get the canonical histogram "directory" path for this analysis.
const std::string histoPath (const std::string &hname) const
 Get the canonical histogram path for the named histogram in this analysis.
const std::string makeAxisCode (size_t datasetId, size_t xAxisId, size_t yAxisId) const
 Get the internal histogram name for given d, x and y (cf. HepData).
Internal histogram booking (for use by Analysis sub-classes).

const BinEdgesbinEdges (const std::string &hname) const
 Get bin edges for a named histo (using ref AIDA caching).
const BinEdgesbinEdges (size_t datasetId, size_t xAxisId, size_t yAxisId) const
 Get bin edges for a numbered histo (using ref AIDA caching).
BinEdges logBinEdges (size_t nbins, double lower, double upper)
 Get bin edges with logarithmic widths.
AIDA::IHistogram1D * bookHistogram1D (const std::string &name, size_t nbins, double lower, double upper, const std::string &title="", const std::string &xtitle="", const std::string &ytitle="")
AIDA::IHistogram1D * bookHistogram1D (const std::string &name, const std::vector< double > &binedges, const std::string &title="", const std::string &xtitle="", const std::string &ytitle="")
AIDA::IHistogram1D * bookHistogram1D (const std::string &name, const std::string &title="", const std::string &xtitle="", const std::string &ytitle="")
AIDA::IHistogram1D * bookHistogram1D (size_t datasetId, size_t xAxisId, size_t yAxisId, const std::string &title="", const std::string &xtitle="", const std::string &ytitle="")
AIDA::IHistogram2D * bookHistogram2D (const std::string &name, size_t nxbins, double xlower, double xupper, size_t nybins, double ylower, double yupper, const std::string &title="", const std::string &xtitle="", const std::string &ytitle="", const std::string &ztitle="")
AIDA::IHistogram2D * bookHistogram2D (const std::string &name, const std::vector< double > &xbinedges, const std::vector< double > &ybinedges, const std::string &title="", const std::string &xtitle="", const std::string &ytitle="", const std::string &ztitle="")
Internal profile histogram booking (for use by Analysis sub-classes).

AIDA::IProfile1D * bookProfile1D (const std::string &name, size_t nbins, double lower, double upper, const std::string &title="", const std::string &xtitle="", const std::string &ytitle="")
AIDA::IProfile1D * bookProfile1D (const std::string &name, const std::vector< double > &binedges, const std::string &title="", const std::string &xtitle="", const std::string &ytitle="")
AIDA::IProfile1D * bookProfile1D (const std::string &name, const std::string &title="", const std::string &xtitle="", const std::string &ytitle="")
AIDA::IProfile1D * bookProfile1D (size_t datasetId, size_t xAxisId, size_t yAxisId, const std::string &title="", const std::string &xtitle="", const std::string &ytitle="")
Internal data point set booking (for use by Analysis sub-classes).

AIDA::IDataPointSet * bookDataPointSet (const std::string &name, const std::string &title="", const std::string &xtitle="", const std::string &ytitle="")
AIDA::IDataPointSet * bookDataPointSet (const std::string &name, size_t npts, double lower, double upper, const std::string &title="", const std::string &xtitle="", const std::string &ytitle="")
AIDA::IDataPointSet * bookDataPointSet (size_t datasetId, size_t xAxisId, size_t yAxisId, const std::string &title="", const std::string &xtitle="", const std::string &ytitle="")
Projection registration functions

template<typename PROJ >
const PROJ & addProjection (const PROJ &proj, const std::string &name)
const Projection_addProjection (const Projection &proj, const std::string &name)
 Untemplated function to do the work...

Protected Attributes

string _defaultname
 Name passed to constructor (used to find .info analysis data file, and as a fallback).
shared_ptr< AnalysisInfo_info
 Pointer to analysis metadata object.
bool _allowProjReg
 Flag to forbid projection registration in analyses until the init phase.

Private Attributes

int count
int vetoe
int Njetscut
int dilept
int candmumujj
int candeejj
int onelept
int eTmisscut
int candmvjj
int candevjj
int mumujj
int eejj
int mTonelept
int MLQonelept
int MtLQonelept
int Stvonelept
int mTev
int MLQev
int MtLQev
int Stvev
int muvjj
int evjj
int emuvjj
int cande
int candmu
int tmpe
int tmpmu
int mumuZCR
int eeZCR
int munuW2CR
int munuttCR
int enuW2CR
int enuttCR
Histograms

AIDA::IHistogram1D * _count_mumujj
AIDA::IHistogram1D * _count_eejj
AIDA::IHistogram1D * _count_muvjj
AIDA::IHistogram1D * _count_evjj
AIDA::IHistogram1D * _hist_St_mumu
AIDA::IHistogram1D * _hist_St_ee
AIDA::IHistogram1D * _hist_MLQ_muv
AIDA::IHistogram1D * _hist_MLQ_ev
AIDA::IHistogram1D * _hist_St_mumu_ZCR
AIDA::IHistogram1D * _hist_St_ee_ZCR
AIDA::IHistogram1D * _hist_MLQ_munu_W2CR
AIDA::IHistogram1D * _hist_MLQ_enu_W2CR
AIDA::IHistogram1D * _hist_MLQ_munu_ttCR
AIDA::IHistogram1D * _hist_MLQ_enu_ttCR

Detailed Description

1-lepton and 2-lepton search for first or second generation leptoquarks

Todo:
Clean up the debug stuff

Definition at line 18 of file ATLAS_2011_S9041966.cc.


Constructor & Destructor Documentation

ATLAS_2011_S9041966 (  )  [inline]

Constructor.

Definition at line 25 of file ATLAS_2011_S9041966.cc.

00026       : Analysis("ATLAS_2011_S9041966"),
00027         // DEBUG
00028         count(0), vetoe(0), Njetscut(0), dilept(0),
00029         candmumujj(0), candeejj(0), onelept(0),
00030         eTmisscut(0), candmvjj(0), candevjj(0),
00031         mumujj(0), eejj(0),
00032         mTonelept(0), MLQonelept(0), MtLQonelept(0), Stvonelept(0),
00033         mTev(0), MLQev(0), MtLQev(0), Stvev(0),
00034         muvjj(0), evjj(0), emuvjj(0),
00035         cande(0), candmu(0),
00036         tmpe(0), tmpmu(0),
00037         mumuZCR(0), eeZCR(0),
00038         munuW2CR(0), munuttCR(0),
00039         enuW2CR(0), enuttCR(0)
00040     {    }


Member Function Documentation

const Projection & _addProjection ( const Projection proj,
const std::string &  name 
) [protected, inherited]

Untemplated function to do the work...

Definition at line 33 of file ProjectionApplier.cc.

References ProjectionApplier::_allowProjReg, ProjectionApplier::getProjHandler(), ProjectionApplier::name(), Projection::name(), and ProjectionHandler::registerProjection().

Referenced by ProjectionApplier::addProjection().

00034                                                                              {
00035     if (!_allowProjReg) {
00036       cerr << "Trying to register projection '"
00037            << proj.name() << "' before init phase in '" << this->name() << "'." << endl;
00038       exit(2);
00039     }
00040     const Projection& reg = getProjHandler().registerProjection(*this, proj, name);
00041     return reg;
00042   }

const PROJ& addProjection ( const PROJ &  proj,
const std::string &  name 
) [inline, protected, inherited]

Register a contained projection. The type of the argument is used to instantiate a new projection internally: this new object is applied to events rather than the argument object. Hence you are advised to only use locally-scoped Projection objects in your Projection and Analysis constructors, and to avoid polymorphism (e.g. handling ConcreteProjection via a pointer or reference to type Projection) since this will screw up the internal type management.

Definition at line 113 of file ProjectionApplier.hh.

References ProjectionApplier::_addProjection().

Referenced by ZFinder::_init(), WFinder::_init(), VetoedFinalState::addVetoOnThisFinalState(), BeamThrust::BeamThrust(), CDF_2009_S8057893::CDF_2009_S8057893::init(), CentralEtHCM::CentralEtHCM(), ChargedFinalState::ChargedFinalState(), ChargedLeptons::ChargedLeptons(), ClusteredPhotons::ClusteredPhotons(), DISFinalState::DISFinalState(), DISKinematics::DISKinematics(), DISLepton::DISLepton(), FinalState::FinalState(), FoxWolframMoments::FoxWolframMoments(), FParameter::FParameter(), HadronicFinalState::HadronicFinalState(), Hemispheres::Hemispheres(), IdentifiedFinalState::IdentifiedFinalState(), ZEUS_2001_S4815815::init(), UA5_1989_S1926373::init(), UA5_1988_S1867512::init(), UA5_1987_S1640666::init(), UA5_1986_S1583476::init(), UA5_1982_S875503::init(), UA1_1990_S2044935::init(), TASSO_1990_S2148048::init(), STAR_2009_UE_HELEN::init(), STAR_2008_S7993412::init(), STAR_2008_S7869363::init(), STAR_2006_S6870392::init(), STAR_2006_S6860818::init(), STAR_2006_S6500200::init(), SFM_1984_S1178091::init(), PDG_HADRON_MULTIPLICITIES_RATIOS::init(), PDG_HADRON_MULTIPLICITIES::init(), OPAL_2004_S6132243::init(), OPAL_2001_S4553896::init(), OPAL_1998_S3780481::init(), OPAL_1993_S2692198::init(), MC_ZZJETS::init(), MC_ZJETS::init(), MC_WWJETS::init(), MC_WPOL::init(), MC_WJETS::init(), MC_VH2BB::init(), MC_TTBAR::init(), MC_SUSY::init(), MC_PHOTONJETUE::init(), MC_PHOTONJETS::init(), MC_LEADINGJETS::init(), MC_JETS::init(), MC_HJETS::init(), MC_GENERIC::init(), MC_DIPHOTON::init(), MC_DIJET::init(), LHCB_2010_S8758301::init(), JADE_OPAL_2000_S4300807::init(), JADE_1998_S3612880::init(), H1_2000_S4129130::init(), H1_1995_S3167097::init(), H1_1994_S2919893::init(), ExampleAnalysis::init(), E735_1998_S3905616::init(), DELPHI_2003_WUD_03_11::init(), DELPHI_2002_069_CONF_603::init(), DELPHI_1996_S3430090::init(), DELPHI_1995_S3137023::init(), D0_2010_S8821313::init(), D0_2010_S8671338::init(), D0_2010_S8570965::init(), D0_2010_S8566488::init(), D0_2009_S8349509::init(), D0_2009_S8320160::init(), D0_2009_S8202443::init(), D0_2008_S7863608::init(), D0_2008_S7837160::init(), D0_2008_S7719523::init(), D0_2008_S7662670::init(), D0_2008_S7554427::init(), D0_2008_S6879055::init(), D0_2007_S7075677::init(), D0_2006_S6438750::init(), D0_2004_S5992206::init(), D0_2001_S4674421::init(), D0_2000_S4480767::init(), D0_1996_S3324664::init(), D0_1996_S3214044::init(), CMS_2011_S9120041::init(), CMS_2011_S9088458::init(), CMS_2011_S9086218::init(), CMS_2011_S8978280::init(), CMS_2011_S8968497::init(), CMS_2011_S8957746::init(), CMS_2011_S8950903::init(), CMS_2011_S8884919::init(), CMS_2010_S8656010::init(), CMS_2010_S8547297::init(), CDF_2010_S8591881_QCD::init(), CDF_2010_S8591881_DY::init(), CDF_2009_S8436959::init(), CDF_2009_S8383952::init(), CDF_2009_S8233977::init(), CDF_2009_NOTE_9936::init(), CDF_2008_S8095620::init(), CDF_2008_S8093652::init(), CDF_2008_S7828950::init(), CDF_2008_S7782535::init(), CDF_2008_S7541902::init(), CDF_2008_S7540469::init(), CDF_2008_NOTE_9351::init(), CDF_2008_LEADINGJETS::init(), CDF_2007_S7057202::init(), CDF_2006_S6653332::init(), CDF_2006_S6450792::init(), CDF_2005_S6217184::init(), CDF_2005_S6080774::init(), CDF_2004_S5839831::init(), CDF_2001_S4751469::init(), CDF_2001_S4563131::init(), CDF_2001_S4517016::init(), CDF_2000_S4266730::init(), CDF_2000_S4155203::init(), CDF_1998_S3618439::init(), CDF_1997_S3541940::init(), CDF_1996_S3418421::init(), CDF_1996_S3349578::init(), CDF_1996_S3108457::init(), CDF_1994_S2952106::init(), CDF_1993_S2742446::init(), CDF_1990_S2089246::init(), CDF_1988_S1865951::init(), BELLE_2006_S6265367::init(), ATLAS_2011_S9225137::init(), ATLAS_2011_S9212183::init(), ATLAS_2011_S9131140::init(), ATLAS_2011_S9128077::init(), ATLAS_2011_S9126244::init(), ATLAS_2011_S9120807::init(), ATLAS_2011_S9108483::init(), ATLAS_2011_S9041966::init(), ATLAS_2011_S9019561::init(), ATLAS_2011_S9002537::init(), ATLAS_2011_S8994773::init(), ATLAS_2011_S8983313::init(), ATLAS_2011_S8971293::init(), ATLAS_2011_S8924791::init(), ATLAS_2011_I925932::init(), ATLAS_2011_I919017::init(), ATLAS_2011_CONF_2011_098::init(), ATLAS_2011_CONF_2011_090::init(), ATLAS_2010_S8919674::init(), ATLAS_2010_S8918562::init(), ATLAS_2010_S8914702::init(), ATLAS_2010_S8894728::init(), ATLAS_2010_S8817804::init(), ATLAS_2010_S8591806::init(), ATLAS_2010_CONF_2010_049::init(), ALICE_2011_S8945144::init(), ALICE_2011_S8909580::init(), ALICE_2010_S8706239::init(), ALICE_2010_S8625980::init(), ALICE_2010_S8624100::init(), ALEPH_2004_S5765862::init(), ALEPH_1996_S3486095::init(), ALEPH_1996_S3196992::init(), ALEPH_1991_S2435284::init(), IsolationProjection< PROJ1, PROJ2, EST >::IsolationProjection(), JetAlg::JetAlg(), JetShape::JetShape(), LeadingParticlesFinalState::LeadingParticlesFinalState(), LeptonClusters::LeptonClusters(), LossyFinalState< ConstRandomFilter >::LossyFinalState(), MergedFinalState::MergedFinalState(), MissingMomentum::MissingMomentum(), Multiplicity::Multiplicity(), NeutralFinalState::NeutralFinalState(), NonHadronicFinalState::NonHadronicFinalState(), ParisiTensor::ParisiTensor(), Sphericity::Sphericity(), Spherocity::Spherocity(), SVertex::SVertex(), Thrust::Thrust(), TotalVisibleMomentum::TotalVisibleMomentum(), TriggerCDFRun0Run1::TriggerCDFRun0Run1(), TriggerCDFRun2::TriggerCDFRun2(), TriggerUA5::TriggerUA5(), VetoedFinalState::VetoedFinalState(), and VisibleFinalState::VisibleFinalState().

00113                                                                        {
00114       const Projection& reg = _addProjection(proj, name);
00115       const PROJ& rtn = dynamic_cast<const PROJ&>(reg);
00116       return rtn;
00117     }

IAnalysisFactory & analysisFactory (  )  [protected, inherited]

Access the AIDA analysis factory of the controlling AnalysisHandler object.

Definition at line 30 of file Analysis.cc.

References AnalysisHandler::analysisFactory(), and Analysis::handler().

00030                                               {
00031     return handler().analysisFactory();
00032   }

void analyze ( const Event event  )  [inline, virtual]

Perform the per-event analysis.

DEBUG

Implements Analysis.

Definition at line 125 of file ATLAS_2011_S9041966.cc.

References ATLAS_2011_S9041966::_count_eejj, ATLAS_2011_S9041966::_count_evjj, ATLAS_2011_S9041966::_count_mumujj, ATLAS_2011_S9041966::_count_muvjj, ATLAS_2011_S9041966::_hist_MLQ_enu_ttCR, ATLAS_2011_S9041966::_hist_MLQ_enu_W2CR, ATLAS_2011_S9041966::_hist_MLQ_ev, ATLAS_2011_S9041966::_hist_MLQ_munu_ttCR, ATLAS_2011_S9041966::_hist_MLQ_munu_W2CR, ATLAS_2011_S9041966::_hist_MLQ_muv, ATLAS_2011_S9041966::_hist_St_ee, ATLAS_2011_S9041966::_hist_St_ee_ZCR, ATLAS_2011_S9041966::_hist_St_mumu, ATLAS_2011_S9041966::_hist_St_mumu_ZCR, ATLAS_2011_S9041966::cande, ATLAS_2011_S9041966::candeejj, ATLAS_2011_S9041966::candevjj, ATLAS_2011_S9041966::candmu, ATLAS_2011_S9041966::candmumujj, ATLAS_2011_S9041966::candmvjj, ATLAS_2011_S9041966::count, Rivet::deltaPhi(), Rivet::deltaR(), FourMomentum::E(), ATLAS_2011_S9041966::eejj, ATLAS_2011_S9041966::eeZCR, ATLAS_2011_S9041966::emuvjj, ATLAS_2011_S9041966::enuttCR, ATLAS_2011_S9041966::enuW2CR, FourVector::eta(), ATLAS_2011_S9041966::eTmisscut, ATLAS_2011_S9041966::evjj, Rivet::GeV, ATLAS_2011_S9041966::MLQev, ATLAS_2011_S9041966::MLQonelept, Particle::momentum(), Jet::momentum(), MSG_DEBUG, ATLAS_2011_S9041966::mTev, ATLAS_2011_S9041966::MtLQev, ATLAS_2011_S9041966::MtLQonelept, ATLAS_2011_S9041966::mTonelept, ATLAS_2011_S9041966::mumujj, ATLAS_2011_S9041966::mumuZCR, ATLAS_2011_S9041966::munuttCR, ATLAS_2011_S9041966::munuW2CR, ATLAS_2011_S9041966::muvjj, ATLAS_2011_S9041966::Njetscut, Rivet::particles(), FourVector::phi(), Rivet::phi(), Rivet::pT(), FourMomentum::pT(), ATLAS_2011_S9041966::Stvev, ATLAS_2011_S9041966::Stvonelept, ATLAS_2011_S9041966::tmpe, ATLAS_2011_S9041966::tmpmu, ATLAS_2011_S9041966::vetoe, and vetoEvent.

00125                                      {
00126 
00127       const double weight = event.weight();
00128 
00129 ///DEBUG
00130       count +=1; //cerr<< "Event " << count << '\n';
00131  // debug
00132 
00133 
00134       ParticleVector veto_e
00135         = applyProjection<IdentifiedFinalState>(event, "veto_elecs").particles();
00136       if ( ! veto_e.empty() ) {
00137         MSG_DEBUG("electrons in veto region");
00138         vetoEvent;
00139       }
00140 ++vetoe;
00141 
00142 
00143       Jets cand_jets;
00144       foreach ( const Jet& jet,
00145           applyProjection<FastJets>(event, "AntiKtJets04").jetsByPt(20.0*GeV) ) {
00146         if ( fabs( jet.momentum().eta() ) < 2.8 ) {
00147           cand_jets.push_back(jet);
00148         }
00149       }
00150 
00151 
00152       ParticleVector candtemp_e =
00153         applyProjection<IdentifiedFinalState>(event, "elecs").particlesByPt();
00154       ParticleVector candtemp_mu =
00155         applyProjection<IdentifiedFinalState>(event,"muons").particlesByPt();
00156       ParticleVector cand_mu;
00157       ParticleVector cand_e;
00158       ParticleVector vfs_particles
00159         = applyProjection<VisibleFinalState>(event, "vfs").particles();
00160 
00161 
00162       // pTcone around muon track
00163       foreach ( const Particle & mu, candtemp_mu ) {
00164 ++tmpmu;
00165         double pTinCone = -mu.momentum().pT();
00166         foreach ( const Particle & track, vfs_particles ) {
00167           if ( deltaR(mu.momentum(),track.momentum()) < 0.2 )
00168             pTinCone += track.momentum().pT();
00169         }
00170         if ( pTinCone/mu.momentum().pT() < 0.25 )
00171 ++candmu;
00172           cand_mu.push_back(mu);
00173       }
00174 
00175       // pTcone around electron
00176       foreach ( const Particle e, candtemp_e ) {
00177 ++tmpe;
00178         double pTinCone = -e.momentum().pT();
00179         foreach ( const Particle & track, vfs_particles ) {
00180           if ( deltaR(e.momentum(),track.momentum()) < 0.2 )
00181             pTinCone += track.momentum().pT();
00182         }
00183         if ( pTinCone/e.momentum().pT() < 0.2 )
00184 ++cande;
00185           cand_e.push_back(e);
00186       }
00187 
00188       if ( cand_e.empty() && cand_mu.empty() ) {
00189         //cerr<<" ->Event vetoed. No candidate lept"<<'\n';
00190         vetoEvent;
00191       }
00192 
00193 
00194 //DEBUG
00195 // else{
00196 // foreach (const Particle & mu,  cand_mu) {
00197 //   cerr << "cand mu: " << "Id " << mu.pdgId() << "      eta " << mu.momentum().eta() << "      pT " << mu.momentum().pT() << '\n';
00198 // }
00199 // foreach (const Particle & lepton,  cand_e) {
00200 //   cerr << "cand e: " << "Id " << lepton.pdgId() << "      eta " << lepton.momentum().eta() << "      pT " << lepton.momentum().pT() << '\n';
00201 // }} // debug
00202 
00203 
00204 
00205      // pTmiss
00206       FourMomentum pTmiss;
00207       foreach ( const Particle & p, vfs_particles ) {
00208         pTmiss -= p.momentum();
00209       }
00210       double eTmiss = pTmiss.pT();
00211 
00212 
00213       // discard jets that overlap with leptons
00214       Jets recon_jets;
00215       foreach ( const Jet& jet, cand_jets ) {
00216           bool away_from_lept = true;
00217           foreach ( const Particle e, cand_e ) {
00218             if ( deltaR(e.momentum(),jet.momentum()) <= 0.5 ) {
00219               away_from_lept = false;
00220               break;
00221             }
00222           }
00223           foreach ( const Particle & mu, cand_mu ) {
00224             if ( deltaR(mu.momentum(),jet.momentum()) <= 0.5 ) {
00225               away_from_lept = false;
00226               break;
00227             }
00228           }
00229           if ( away_from_lept )
00230             recon_jets.push_back( jet );
00231       }
00232 
00233 
00234 
00235 //DEBUG
00236 // cerr << " Num of recon jets: " << recon_jets.size() << '\n';
00237 // cerr << " Num of cand e: " << cand_e.size() << '\n';
00238 // cerr << " Num of cand mu: " << cand_mu.size() << '\n';
00239 //debug
00240 
00241 
00242 
00243       // ================ OBSERVABLES ================
00244 
00245 
00246       // At least 2 hard jets
00247       if ( recon_jets.size() < 2 ) {
00248         //cerr << " ->Event vetoed. Not enough hard jets." << '\n';
00249         vetoEvent;
00250       }
00251 ++Njetscut;
00252 
00253 
00254       // Initialize variables for observables
00255       double M_ll=0., M_LQ=0., St_ll=0., Mt_LQ=0., St_v=0., mT=0.;
00256       FourMomentum p_l, p_l1, p_l2, p_j[2];
00257       p_j[0] = recon_jets[0].momentum();
00258       p_j[1] = recon_jets[1].momentum();
00259 
00260       ParticleVector dilept_pair;
00261       bool single_lept = false;
00262 
00263       if ( cand_mu.size() == 2 && cand_e.empty() ) {
00264 ++candmumujj;
00265         foreach ( const Particle& mu, cand_mu )
00266           dilept_pair.push_back(mu);
00267       }
00268       else if ( cand_e.size() == 2 && cand_mu.empty() ) {
00269 ++candeejj;
00270           foreach ( const Particle& e, cand_e )
00271             dilept_pair.push_back(e);
00272       }
00273       else if ( cand_mu.size() == 1 && cand_e.empty() ) {
00274 ++candmvjj;
00275         p_l = cand_mu[0].momentum();
00276         single_lept = true;
00277       }
00278       else if ( cand_e.size() == 1 && cand_mu.empty() ) {
00279 ++candevjj;
00280         p_l = cand_e[0].momentum();
00281         single_lept = true;
00282       }
00283 
00284       // Dilepton channel observables
00285       if ( ! dilept_pair.empty() ) {
00286 
00287         double E_l1, E_l2, E_j1, E_j2;
00288         double tmpM_LQ1[2], tmpM_LQ2[2], M_LQDiff1, M_LQDiff2;
00289 
00290         p_l1 = dilept_pair[0].momentum();
00291         p_l2 = dilept_pair[1].momentum();
00292         E_l1 = p_l1.E();
00293         E_l2 = p_l2.E();
00294 
00295         E_j1 = p_j[0].E();
00296         E_j2 = p_j[1].E();
00297 
00298         // Calculate possible leptoquark mass M_LQ and reconstruct average M_LQ
00299 
00300         tmpM_LQ1[0] = E_l1 + E_j1;
00301         tmpM_LQ1[1] = E_l2 + E_j2;
00302         M_LQDiff1 = abs( tmpM_LQ1[0] - tmpM_LQ1[1] );
00303 
00304         tmpM_LQ2[0] = E_l1 + E_j2;
00305         tmpM_LQ2[1] = E_l2 + E_j1;
00306         M_LQDiff2 = abs( tmpM_LQ2[0] - tmpM_LQ2[1] );
00307 
00308         if ( M_LQDiff1 > M_LQDiff2 )
00309           M_LQ = ( tmpM_LQ2[0] + tmpM_LQ2[1] ) / 2;
00310         else
00311           M_LQ = ( tmpM_LQ1[0] + tmpM_LQ1[1] ) / 2;
00312 
00313         // Calculate event transverse energy St
00314         St_ll = p_l1.pT() + p_l2.pT() + p_j[0].pT() + p_j[1].pT();
00315 
00316         // Dilept pair invariant mass M_ll
00317         M_ll = E_l1 + E_l2;
00318 
00319       }
00320 
00321       // 1-lepton channel observables
00322       else if ( single_lept ) {
00323 
00324         double tmpM_LQ[2], tmpMt_LQ[2], dPhi_j[2], M_LQDiff1, M_LQDiff2;
00325 
00326         // List of possible M_LQ, Mt_LQ pairings
00327 
00328         for ( int i = 0; i < 2; ++i ) {
00329           tmpM_LQ[i] = p_l.E() + p_j[i].E();
00330           dPhi_j[1-i] = deltaPhi( p_j[1-i].phi(), pTmiss.phi() );
00331           tmpMt_LQ[i] = sqrt( 2 * p_j[1-i].pT() * eTmiss * (1 - cos( dPhi_j[1-i] )) );
00332         }
00333 
00334         // Choose pairing that gives smallest absolute difference
00335 
00336         M_LQDiff1 = abs( tmpM_LQ[0] - tmpMt_LQ[0] );
00337         M_LQDiff2 = abs( tmpM_LQ[1] - tmpMt_LQ[1] );
00338 
00339         if ( M_LQDiff1 > M_LQDiff2 ) {
00340           M_LQ = tmpM_LQ[1];
00341           Mt_LQ = tmpMt_LQ[1];
00342         }
00343         else {
00344           M_LQ = tmpM_LQ[0];
00345           Mt_LQ = tmpMt_LQ[0];
00346         }
00347 
00348         // Event transverse energy
00349         St_v = p_l.pT() + eTmiss + p_j[0].pT() + p_j[1].pT();
00350 
00351         // Transverse mass mT
00352         double dPhi_l = deltaPhi( p_l.phi(), pTmiss.phi());
00353         mT = sqrt( 2 * p_l.pT() * eTmiss * (1 - cos(dPhi_l)) );
00354 
00355       }
00356 
00357 
00358     // ============== CONTROL REGIONS ===============
00359 
00360       // mumujj, Z control region
00361       if ( cand_mu.size() == 2 ) {
00362         if ( M_ll >= 81*GeV && M_ll <= 101*GeV ) {
00363 ++mumuZCR;
00364           _hist_St_mumu_ZCR->fill(St_ll, weight);
00365         }
00366       }
00367       // eejj, Z control region
00368       else if ( cand_e.size() == 2 ) {
00369         if ( M_ll >= 81*GeV && M_ll <= 101*GeV ) {
00370 ++eeZCR;
00371           _hist_St_ee_ZCR->fill(St_ll, weight);
00372 
00373         }
00374       }
00375 
00376       if ( cand_mu.size() == 1 ) {
00377         // munujj, W+2jets control region
00378         if ( recon_jets.size() == 2 &&
00379              mT >= 40*GeV && mT <= 150*GeV ) {
00380 ++munuW2CR;
00381           _hist_MLQ_munu_W2CR->fill(M_LQ, weight);
00382         }
00383         // munujj, tt control region
00384         if ( recon_jets.size() >= 4 &&
00385              recon_jets[0].momentum().pT() > 50*GeV && recon_jets[1].momentum().pT() > 40*GeV && recon_jets[2].momentum().pT() > 30*GeV ) {
00386 ++munuttCR;
00387           _hist_MLQ_munu_ttCR->fill(M_LQ, weight);
00388         }
00389       }
00390       if ( cand_e.size() == 1 ) {
00391         // enujj, W+2jets control region
00392         if ( recon_jets.size() == 2 &&
00393              mT >= 40*GeV && mT <= 150*GeV ) {
00394 ++enuW2CR;
00395           _hist_MLQ_enu_W2CR->fill(M_LQ, weight);
00396         }
00397         // enujj, tt control region
00398         if ( recon_jets.size() >= 4 &&
00399              recon_jets[0].momentum().pT() > 50*GeV && recon_jets[1].momentum().pT() > 40*GeV && recon_jets[2].momentum().pT() > 30*GeV ) {
00400 ++enuttCR;
00401           _hist_MLQ_enu_ttCR->fill(M_LQ, weight);
00402         }
00403       }
00404 
00405 
00406 
00407 
00408     // ========= PRESELECTION =======================
00409 
00410 
00411 
00412       // Single lepton channel cuts
00413       if ( single_lept ) {
00414 
00415         if ( eTmiss <= 25*GeV ) {
00416           //cerr << " ->Event vetoed. eTmiss=" << eTmiss << '\n';
00417           vetoEvent;
00418         }
00419 ++eTmisscut;
00420 
00421         if ( mT <= 40*GeV )
00422           vetoEvent;
00423 
00424 //++mTcut;
00425 
00426         // enujj channel
00427         if ( cand_e.size() == 1 && cand_mu.empty() ) {
00428 
00429           // Triangle cut
00430           double dPhi_jet1 = deltaPhi( recon_jets[0].phi(), pTmiss.phi() );
00431           double dPhi_jet2 = deltaPhi( recon_jets[1].phi(), pTmiss.phi() );
00432 
00433           if ( dPhi_jet1 <= 1.5 * (1 - eTmiss/45) ||
00434                dPhi_jet2 <= 1.5 * (1 - eTmiss/45) ) {
00435 ++emuvjj;
00436             vetoEvent;
00437           }
00438        }
00439      }
00440 
00441     // ==================== FILL ====================
00442 
00443 
00444       // mumujj channel
00445       if ( cand_mu.size() == 2 ) {
00446         if ( M_ll <= 120*GeV ||
00447                 M_LQ <= 150*GeV ||
00448                 p_l1.pT() <= 30*GeV || p_l2.pT() <= 30*GeV ||
00449                 p_j[0].pT() <= 30*GeV || p_j[1].pT() <= 30*GeV ||
00450                 St_ll <= 450*GeV ) {
00451           //cerr<<" ->Dilept event vetoed. Table 4 cuts." << '\n';
00452           vetoEvent;
00453         }
00454         else {
00455 
00456 
00457 ++mumujj;
00458 // cerr<< " ->MUMUJJ event selected." << '\n';
00459             _hist_St_mumu->fill(St_ll, weight);
00460             _count_mumujj->fill(0.5, weight);
00461 
00462         }
00463       }
00464       // eejj channel
00465       else if ( cand_e.size() == 2 ) {
00466         if ( M_ll <= 120*GeV ||
00467                 M_LQ <= 150*GeV ||
00468                 p_l1.pT() <= 30*GeV || p_l2.pT() <= 30*GeV ||
00469                 p_j[0].pT() <= 30*GeV || p_j[1].pT() <= 30*GeV ||
00470                 St_ll <= 450*GeV ) {
00471           //cerr<<" ->Dilept event vetoed. Table 4 cuts." << '\n';
00472           vetoEvent;
00473         }
00474         else {
00475 
00476 ++eejj;
00477 //cerr<< " ->EEJJ event selected." << '\n';
00478             _hist_St_ee->fill(St_ll, weight);
00479             _count_eejj->fill(0.5, weight);
00480 
00481         }
00482       }
00483 
00484 
00485       // muvjj channel
00486       else if ( cand_mu.size() == 1 ) {
00487 
00488 
00489 
00490         if (M_LQ<=150*GeV) {
00491 //cerr<<" ->muvjj event vetoed. Not enough M_LQ: " << M_LQ<< '\n';
00492           vetoEvent;
00493         }
00494 ++MLQonelept;
00495         if (Mt_LQ<=150*GeV) {
00496 //cerr<<" ->muvjj event vetoed. Not enough Mt_LQ: " << Mt_LQ<< '\n';
00497           vetoEvent;
00498         }
00499 ++MtLQonelept;
00500         if (St_v<=400*GeV) {
00501 //cerr<<" ->muvjj event vetoed. Not enough St_v: " << St_v<< '\n';
00502           vetoEvent;
00503         }
00504 ++Stvonelept;
00505         if (mT<=160*GeV) {
00506 //cerr<<" ->muvjj event vetoed. Not enough mT: " << mT<<'\n';
00507           vetoEvent;
00508         }
00509 ++mTonelept;
00510         //else {
00511 ++muvjj;
00512 //cerr<< " ->MUVJJ event selected." << '\n';
00513             _hist_MLQ_muv->fill(M_LQ, weight);
00514             _count_muvjj->fill(0.5, weight);
00515 
00516         //}
00517       }
00518 
00519       // evjj channel
00520       else if ( cand_e.size() == 1 ) {
00521 
00522 if (M_LQ<=180*GeV) {
00523 //cerr<<" ->evjj event vetoed. Not enough M_LQ: " << M_LQ<< '\n';
00524           vetoEvent;
00525         }
00526 ++MLQev;
00527         if (Mt_LQ<=180*GeV) {
00528 //cerr<<" ->evjj event vetoed. Not enough Mt_LQ: " << Mt_LQ<< '\n';
00529           vetoEvent;
00530         }
00531 ++MtLQev;
00532         if (St_v<=410*GeV) {
00533 //cerr<<" ->evjj event vetoed. Not enough St_v: " << St_v<< '\n';
00534           vetoEvent;
00535         }
00536 ++Stvev;
00537 if (mT<=200*GeV) {
00538 //cerr<<" ->evjj event vetoed. Not enough mT: " << mT<<'\n';
00539           vetoEvent;
00540         }
00541 ++mTev;
00542         //else {
00543 ++evjj;
00544 //cerr<< " ->EVJJ event selected." << '\n';
00545 _hist_MLQ_ev->fill(M_LQ, weight);
00546             _count_evjj->fill(0.5, weight);
00547 
00548 
00549 
00550 //      if ( mT <= 200*GeV ||
00551 //              M_LQ <= 180*GeV ||
00552 //              Mt_LQ <= 180*GeV ||
00553 //              St_v <= 410*GeV ) {
00554 // cerr<<" ->evjj event vetoed. Doesn't pass table 4 cuts." << '\n';
00555 //        vetoEvent;
00556 //      }
00557 //      else {
00558 // ++evjj;
00559 // cerr<< " ->EVJJ event selected." << '\n';
00560 // _hist_MLQ_ev->fill(M_LQ, weight);
00561 //          _count_evjj->fill(0.5, weight);
00562 
00563 //      }
00564 
00565 
00566       }
00567 
00568 
00569     }

const PROJ& applyProjection ( const Event evt,
const std::string &  name 
) const [inline, inherited]

Apply the named projection on event.

Definition at line 81 of file ProjectionApplier.hh.

References ProjectionApplier::_applyProjection().

00081                                                                                {
00082       return pcast<PROJ>(_applyProjection(evt, name));
00083     }

const PROJ& applyProjection ( const Event evt,
const Projection proj 
) const [inline, inherited]

Apply the supplied projection on event.

Definition at line 74 of file ProjectionApplier.hh.

References ProjectionApplier::_applyProjection().

00074                                                                                 {
00075       return pcast<PROJ>(_applyProjection(evt, proj));
00076     }

const PROJ& applyProjection ( const Event evt,
const PROJ &  proj 
) const [inline, inherited]

Apply the supplied projection on event.

Definition at line 67 of file ProjectionApplier.hh.

References ProjectionApplier::_applyProjection().

Referenced by DISFinalState::project().

00067                                                                           {
00068       return pcast<PROJ>(_applyProjection(evt, proj));
00069     }

virtual std::vector<std::string> authors (  )  const [inline, virtual, inherited]

Names & emails of paper/analysis authors.

Names and email of authors in 'NAME <EMAIL>' format. The first name in the list should be the primary contact person.

Definition at line 136 of file Analysis.hh.

References AnalysisInfo::authors(), and Analysis::info().

00136                                                  {
00137       return info().authors();
00138     }

const PdgIdPair beamIds (  )  const [inherited]

Incoming beam IDs for this run.

Definition at line 58 of file Analysis.cc.

References AnalysisHandler::beamIds(), and Analysis::handler().

Referenced by UA5_1982_S875503::finalize(), and UA5_1982_S875503::init().

00058                                           {
00059     return handler().beamIds();
00060   }

const ParticlePair & beams (  )  const [inherited]
virtual std::string bibKey (  )  const [inline, virtual, inherited]

BibTeX citation key for this article.

Definition at line 189 of file Analysis.hh.

References AnalysisInfo::bibKey(), and Analysis::info().

00189                                      {
00190       return info().bibKey();
00191     }

virtual std::string bibTeX (  )  const [inline, virtual, inherited]

BibTeX citation entry for this article.

Definition at line 194 of file Analysis.hh.

References AnalysisInfo::bibTeX(), and Analysis::info().

00194                                      {
00195       return info().bibTeX();
00196     }

const BinEdges & binEdges ( size_t  datasetId,
size_t  xAxisId,
size_t  yAxisId 
) const [protected, inherited]

Get bin edges for a numbered histo (using ref AIDA caching).

Definition at line 218 of file Analysis.cc.

References Analysis::binEdges(), and Analysis::makeAxisCode().

00218                                                                                            {
00219     const string hname = makeAxisCode(datasetId, xAxisId, yAxisId);
00220     return binEdges(hname);
00221   }

const BinEdges & binEdges ( const std::string &  hname  )  const [protected, inherited]

Get bin edges for a named histo (using ref AIDA caching).

Definition at line 203 of file Analysis.cc.

References Analysis::_cacheBinEdges(), Analysis::_histBinEdges, Analysis::getLog(), MSG_TRACE, Analysis::name(), and Log::TRACE.

Referenced by ATLAS_2011_S8994773::analyze(), ATLAS_2010_S8894728::analyze(), Analysis::binEdges(), Analysis::bookHistogram1D(), Analysis::bookProfile1D(), ATLAS_2011_S9126244::finalize(), D0_2008_S7837160::init(), CMS_2011_S9088458::init(), CDF_1994_S2952106::init(), ATLAS_2011_S9128077::init(), ATLAS_2011_S9002537::init(), ATLAS_2010_S8894728::init(), ALICE_2011_S8909580::init(), and ATLAS_2011_S9126244::initializePlots().

00203                                                               {
00204     _cacheBinEdges();
00205     MSG_TRACE("Using histo bin edges for " << name() << ":" << hname);
00206     const BinEdges& edges = _histBinEdges.find(hname)->second;
00207     if (getLog().isActive(Log::TRACE)) {
00208       stringstream edges_ss;
00209       foreach (const double be, edges) {
00210         edges_ss << " " << be;
00211       }
00212       MSG_TRACE("Edges:" << edges_ss.str());
00213     }
00214     return edges;
00215   }

IDataPointSet * bookDataPointSet ( size_t  datasetId,
size_t  xAxisId,
size_t  yAxisId,
const std::string &  title = "",
const std::string &  xtitle = "",
const std::string &  ytitle = "" 
) [protected, inherited]

Book a 2-dimensional data point set based on the corresponding AIDA data file. The binnings (x-errors) will be obtained by reading the bundled AIDA data record file of the same filename as the analysis' name() property. Book a 2-dimensional data point set based on the paper, dataset and x/y-axis IDs in the corresponding HepData record. The binnings (x-errors) will be obtained by reading the bundled AIDA data record file of the same filename as the analysis' name() property.

Definition at line 440 of file Analysis.cc.

References Analysis::_cacheXAxisData(), Analysis::_dpsData, Analysis::bookDataPointSet(), Analysis::makeAxisCode(), MSG_TRACE, and Analysis::name().

00442                                                                                         {
00443     // Get the bin edges (only read the AIDA file once)
00444     _cacheXAxisData();
00445     // Build the axis code
00446     const string axisCode = makeAxisCode(datasetId, xAxisId, yAxisId);
00447     //const map<string, vector<DPSXPoint> > xpoints = getDPSXValsErrs(papername);
00448     MSG_TRACE("Using DPS x-positions for " << name() << ":" << axisCode);
00449     IDataPointSet* dps = bookDataPointSet(axisCode, title, xtitle, ytitle);
00450     const vector<DPSXPoint> xpts = _dpsData.find(axisCode)->second;
00451     for (size_t pt = 0; pt < xpts.size(); ++pt) {
00452       dps->addPoint();
00453       IMeasurement* meas = dps->point(pt)->coordinate(0);
00454       meas->setValue(xpts[pt].val);
00455       meas->setErrorPlus(xpts[pt].errplus);
00456       meas->setErrorMinus(xpts[pt].errminus);
00457     }
00458     MSG_TRACE("Made DPS " << axisCode <<  " for " << name());
00459     return dps;
00460   }

IDataPointSet * bookDataPointSet ( const std::string &  name,
size_t  npts,
double  lower,
double  upper,
const std::string &  title = "",
const std::string &  xtitle = "",
const std::string &  ytitle = "" 
) [protected, inherited]

Book a 2-dimensional data point set with equally spaced points in a range. (NB. this returns a pointer rather than a reference since it will have to be stored in the analysis class - there's no point in forcing users to explicitly get the pointer from a reference before they can use it!)

Definition at line 422 of file Analysis.cc.

References Analysis::bookDataPointSet().

00425                                                                                         {
00426     IDataPointSet* dps = bookDataPointSet(hname, title, xtitle, ytitle);
00427     for (size_t pt = 0; pt < npts; ++pt) {
00428       const double binwidth = (upper-lower)/npts;
00429       const double bincentre = lower + (pt + 0.5) * binwidth;
00430       dps->addPoint();
00431       IMeasurement* meas = dps->point(pt)->coordinate(0);
00432       meas->setValue(bincentre);
00433       meas->setErrorPlus(binwidth/2.0);
00434       meas->setErrorMinus(binwidth/2.0);
00435     }
00436     return dps;
00437   }

IDataPointSet * bookDataPointSet ( const std::string &  name,
const std::string &  title = "",
const std::string &  xtitle = "",
const std::string &  ytitle = "" 
) [protected, inherited]

Book a 2-dimensional data point set. (NB. this returns a pointer rather than a reference since it will have to be stored in the analysis class - there's no point in forcing users to explicitly get the pointer from a reference before they can use it!)

Definition at line 407 of file Analysis.cc.

References Analysis::_makeHistoDir(), Analysis::datapointsetFactory(), Analysis::histoPath(), MSG_TRACE, and Analysis::name().

Referenced by Analysis::bookDataPointSet(), ALEPH_2004_S5765862::finalize(), UA5_1988_S1867512::init(), STAR_2006_S6860818::init(), OPAL_1993_S2692198::init(), MC_XS::init(), MC_JetAnalysis::init(), JADE_OPAL_2000_S4300807::init(), D0_2001_S4674421::init(), CMS_2011_S9088458::init(), CDF_2008_S7782535::init(), CDF_2008_S7541902::init(), CDF_2005_S6217184::init(), CDF_1996_S3418421::init(), CDF_1994_S2952106::init(), ATLAS_2011_S9128077::init(), ATLAS_2011_S9002537::init(), ATLAS_2010_S8894728::init(), ALEPH_2004_S5765862::init(), and ATLAS_2011_S9126244::initializePlots().

00408                                                                                         {
00409     _makeHistoDir();
00410     const string path = histoPath(hname);
00411     if (path.find(" ") != string::npos) {
00412       throw Error("Histogram path '" + path + "' is invalid: spaces are not permitted in paths");
00413     }
00414     IDataPointSet* dps = datapointsetFactory().create(path, title, 2);
00415     MSG_TRACE("Made data point set " << hname <<  " for " << name());
00416     dps->setXTitle(xtitle);
00417     dps->setYTitle(ytitle);
00418     return dps;
00419   }

IHistogram1D * bookHistogram1D ( size_t  datasetId,
size_t  xAxisId,
size_t  yAxisId,
const std::string &  title = "",
const std::string &  xtitle = "",
const std::string &  ytitle = "" 
) [protected, inherited]

Book a 1D histogram based on the paper, dataset and x/y-axis IDs in the corresponding HepData record. The binnings will be obtained by reading the bundled AIDA data record file of the same filename as the analysis' name() property.

Definition at line 237 of file Analysis.cc.

References Analysis::bookHistogram1D(), and Analysis::makeAxisCode().

00240   {
00241     const string axisCode = makeAxisCode(datasetId, xAxisId, yAxisId);
00242     return bookHistogram1D(axisCode, title, xtitle, ytitle);
00243   }

IHistogram1D * bookHistogram1D ( const std::string &  name,
const std::string &  title = "",
const std::string &  xtitle = "",
const std::string &  ytitle = "" 
) [protected, inherited]

Book a 1D histogram based on the name in the corresponding AIDA file. The binnings will be obtained by reading the bundled AIDA data record file with the same filename as the analysis' name() property.

Definition at line 246 of file Analysis.cc.

References Analysis::_makeHistoDir(), Analysis::binEdges(), Analysis::histogramFactory(), Analysis::histoPath(), MSG_TRACE, and Analysis::name().

00248   {
00249     // Get the bin edges (only read the AIDA file once)
00250     const BinEdges edges = binEdges(hname);
00251     _makeHistoDir();
00252     const string path = histoPath(hname);
00253     if (path.find(" ") != string::npos) {
00254       throw Error("Histogram path '" + path + "' is invalid: spaces are not permitted in paths");
00255     }
00256     IHistogram1D* hist = histogramFactory().createHistogram1D(path, title, edges);
00257     MSG_TRACE("Made histogram " << hname <<  " for " << name());
00258     hist->setXTitle(xtitle);
00259     hist->setYTitle(ytitle);
00260     return hist;
00261   }

IHistogram1D * bookHistogram1D ( const std::string &  name,
const std::vector< double > &  binedges,
const std::string &  title = "",
const std::string &  xtitle = "",
const std::string &  ytitle = "" 
) [protected, inherited]

Book a 1D histogram with non-uniform bins defined by the vector of bin edges binedges . (NB. this returns a pointer rather than a reference since it will have to be stored in the analysis class - there's no point in forcing users to explicitly get the pointer from a reference before they can use it!)

Definition at line 281 of file Analysis.cc.

References Analysis::_makeHistoDir(), Analysis::histogramFactory(), Analysis::histoPath(), MSG_TRACE, and Analysis::name().

00284                                                                                       {
00285     _makeHistoDir();
00286     const string path = histoPath(hname);
00287     if (path.find(" ") != string::npos) {
00288       throw Error("Histogram path '" + path + "' is invalid: spaces are not permitted in paths");
00289     }
00290     IHistogram1D* hist = histogramFactory().createHistogram1D(path, title, binedges);
00291     MSG_TRACE("Made histogram " << hname <<  " for " << name());
00292     hist->setXTitle(xtitle);
00293     hist->setYTitle(ytitle);
00294     return hist;
00295   }

IHistogram1D * bookHistogram1D ( const std::string &  name,
size_t  nbins,
double  lower,
double  upper,
const std::string &  title = "",
const std::string &  xtitle = "",
const std::string &  ytitle = "" 
) [protected, inherited]

Book a 1D histogram with nbins uniformly distributed across the range lower - upper . (NB. this returns a pointer rather than a reference since it will have to be stored in the analysis class - there's no point in forcing users to explicitly get the pointer from a reference before they can use it!)

Definition at line 264 of file Analysis.cc.

References Analysis::_makeHistoDir(), Analysis::histogramFactory(), Analysis::histoPath(), MSG_TRACE, and Analysis::name().

Referenced by Analysis::bookHistogram1D(), ZEUS_2001_S4815815::init(), UA5_1989_S1926373::init(), UA5_1987_S1640666::init(), UA5_1986_S1583476::init(), UA5_1982_S875503::init(), UA1_1990_S2044935::init(), TASSO_1990_S2148048::init(), STAR_2008_S7869363::init(), STAR_2006_S6870392::init(), STAR_2006_S6860818::init(), STAR_2006_S6500200::init(), SFM_1984_S1178091::init(), PDG_HADRON_MULTIPLICITIES_RATIOS::init(), PDG_HADRON_MULTIPLICITIES::init(), OPAL_2004_S6132243::init(), OPAL_2001_S4553896::init(), OPAL_1998_S3780481::init(), MC_ZZJETS::init(), MC_ZJETS::init(), MC_XS::init(), MC_WWJETS::init(), MC_WPOL::init(), MC_WJETS::init(), MC_VH2BB::init(), MC_TTBAR::init(), MC_SUSY::init(), MC_PHOTONJETUE::init(), MC_PHOTONJETS::init(), MC_JetAnalysis::init(), MC_HJETS::init(), MC_GENERIC::init(), MC_DIPHOTON::init(), MC_DIJET::init(), LHCB_2010_S8758301::init(), JADE_OPAL_2000_S4300807::init(), JADE_1998_S3612880::init(), H1_2000_S4129130::init(), H1_1995_S3167097::init(), H1_1994_S2919893::init(), ExampleAnalysis::init(), E735_1998_S3905616::init(), DELPHI_2003_WUD_03_11::init(), DELPHI_2002_069_CONF_603::init(), DELPHI_1996_S3430090::init(), DELPHI_1995_S3137023::init(), D0_2010_S8821313::init(), D0_2010_S8671338::init(), D0_2010_S8570965::init(), D0_2010_S8566488::init(), D0_2009_S8349509::init(), D0_2009_S8320160::init(), D0_2009_S8202443::init(), D0_2008_S7863608::init(), D0_2008_S7837160::init(), D0_2008_S7719523::init(), D0_2008_S7662670::init(), D0_2008_S7554427::init(), D0_2008_S6879055::init(), D0_2007_S7075677::init(), D0_2006_S6438750::init(), D0_2004_S5992206::init(), D0_2001_S4674421::init(), D0_2000_S4480767::init(), D0_1996_S3324664::init(), D0_1996_S3214044::init(), CMS_2011_S9120041::init(), CMS_2011_S9088458::init(), CMS_2011_S9086218::init(), CMS_2011_S8978280::init(), CMS_2011_S8968497::init(), CMS_2011_S8957746::init(), CMS_2011_S8950903::init(), CMS_2011_S8884919::init(), CMS_2010_S8656010::init(), CMS_2010_S8547297::init(), CDF_2009_S8436959::init(), CDF_2009_S8383952::init(), CDF_2009_S8233977::init(), CDF_2009_NOTE_9936::init(), CDF_2008_S8095620::init(), CDF_2008_S8093652::init(), CDF_2008_S7828950::init(), CDF_2008_S7541902::init(), CDF_2008_S7540469::init(), CDF_2007_S7057202::init(), CDF_2006_S6653332::init(), CDF_2006_S6450792::init(), CDF_2005_S6080774::init(), CDF_2004_S5839831::init(), CDF_2001_S4751469::init(), CDF_2001_S4563131::init(), CDF_2001_S4517016::init(), CDF_2000_S4266730::init(), CDF_2000_S4155203::init(), CDF_1998_S3618439::init(), CDF_1997_S3541940::init(), CDF_1996_S3418421::init(), CDF_1996_S3349578::init(), CDF_1996_S3108457::init(), CDF_1994_S2952106::init(), CDF_1993_S2742446::init(), CDF_1990_S2089246::init(), CDF_1988_S1865951::init(), BELLE_2006_S6265367::init(), ATLAS_2011_S9225137::init(), ATLAS_2011_S9212183::init(), ATLAS_2011_S9131140::init(), ATLAS_2011_S9128077::init(), ATLAS_2011_S9120807::init(), ATLAS_2011_S9108483::init(), ATLAS_2011_S9041966::init(), ATLAS_2011_S9019561::init(), ATLAS_2011_S9002537::init(), ATLAS_2011_S8983313::init(), ATLAS_2011_S8971293::init(), ATLAS_2011_I925932::init(), ATLAS_2011_I919017::init(), ATLAS_2011_CONF_2011_098::init(), ATLAS_2011_CONF_2011_090::init(), ATLAS_2010_S8919674::init(), ATLAS_2010_S8918562::init(), ATLAS_2010_S8914702::init(), ATLAS_2010_S8817804::init(), ATLAS_2010_S8591806::init(), ATLAS_2010_CONF_2010_049::init(), ALICE_2011_S8945144::init(), ALICE_2011_S8909580::init(), ALICE_2010_S8706239::init(), ALICE_2010_S8625980::init(), ALICE_2010_S8624100::init(), ALEPH_2004_S5765862::init(), ALEPH_1996_S3486095::init(), ALEPH_1996_S3196992::init(), ALEPH_1991_S2435284::init(), and ATLAS_2011_S9126244::initializePlots().

00267                                                                                       {
00268     _makeHistoDir();
00269     const string path = histoPath(hname);
00270     if (path.find(" ") != string::npos) {
00271       throw Error("Histogram path '" + path + "' is invalid: spaces are not permitted in paths");
00272     }
00273     IHistogram1D* hist = histogramFactory().createHistogram1D(path, title, nbins, lower, upper);
00274     MSG_TRACE("Made histogram " << hname <<  " for " << name());
00275     hist->setXTitle(xtitle);
00276     hist->setYTitle(ytitle);
00277     return hist;
00278   }

IHistogram2D * bookHistogram2D ( const std::string &  name,
const std::vector< double > &  xbinedges,
const std::vector< double > &  ybinedges,
const std::string &  title = "",
const std::string &  xtitle = "",
const std::string &  ytitle = "",
const std::string &  ztitle = "" 
) [protected, inherited]

Book a 2D histogram with non-uniform bins defined by the vectorx of bin edges xbinedges and ybinedges. (NB. this returns a pointer rather than a reference since it will have to be stored in the analysis class - there's no point in forcing users to explicitly get the pointer from a reference before they can use it!)

Definition at line 320 of file Analysis.cc.

References Analysis::_makeHistoDir(), Analysis::histogramFactory(), Analysis::histoPath(), MSG_TRACE, and Analysis::name().

00324                                                             {
00325     _makeHistoDir();
00326     const string path = histoPath(hname);
00327     if (path.find(" ") != string::npos) {
00328       throw Error("Histogram path '" + path + "' is invalid: spaces are not permitted in paths");
00329     }
00330     IHistogram2D* hist =
00331       histogramFactory().createHistogram2D(path, title, xbinedges, ybinedges);
00332     MSG_TRACE("Made 2D histogram " << hname <<  " for " << name());
00333     hist->setXTitle(xtitle);
00334     hist->setYTitle(ytitle);
00335     hist->setZTitle(ztitle);
00336     return hist;
00337   }

IHistogram2D * bookHistogram2D ( const std::string &  name,
size_t  nxbins,
double  xlower,
double  xupper,
size_t  nybins,
double  ylower,
double  yupper,
const std::string &  title = "",
const std::string &  xtitle = "",
const std::string &  ytitle = "",
const std::string &  ztitle = "" 
) [protected, inherited]

Book a 2D histogram with nxbins and nybins uniformly distributed across the ranges xlower - xupper and ylower - yupper respectively along the x- and y-axis. (NB. this returns a pointer rather than a reference since it will have to be stored in the analysis class - there's no point in forcing users to explicitly get the pointer from a reference before they can use it!)

Definition at line 298 of file Analysis.cc.

References Analysis::_makeHistoDir(), Analysis::histogramFactory(), Analysis::histoPath(), MSG_TRACE, and Analysis::name().

00302                                                             {
00303     _makeHistoDir();
00304     const string path = histoPath(hname);
00305     if (path.find(" ") != string::npos) {
00306       throw Error("Histogram path '" + path + "' is invalid: spaces are not permitted in paths");
00307     }
00308     IHistogram2D* hist =
00309       histogramFactory().createHistogram2D(path, title, nxbins, xlower, xupper,
00310                        nybins, ylower, yupper);
00311     MSG_TRACE("Made 2D histogram " << hname <<  " for " << name());
00312     hist->setXTitle(xtitle);
00313     hist->setYTitle(ytitle);
00314     hist->setZTitle(ztitle);
00315     return hist;
00316   }

IProfile1D * bookProfile1D ( size_t  datasetId,
size_t  xAxisId,
size_t  yAxisId,
const std::string &  title = "",
const std::string &  xtitle = "",
const std::string &  ytitle = "" 
) [protected, inherited]

Book a 1D profile histogram based on the paper, dataset and x/y-axis IDs in the corresponding HepData record. The binnings will be obtained by reading the bundled AIDA data record file of the same filename as the analysis' name() property.

Definition at line 343 of file Analysis.cc.

References Analysis::bookProfile1D(), and Analysis::makeAxisCode().

00345                                                                                   {
00346     const string axisCode = makeAxisCode(datasetId, xAxisId, yAxisId);
00347     return bookProfile1D(axisCode, title, xtitle, ytitle);
00348   }

IProfile1D * bookProfile1D ( const std::string &  name,
const std::string &  title = "",
const std::string &  xtitle = "",
const std::string &  ytitle = "" 
) [protected, inherited]

Book a 1D profile histogram based on the name in the corresponding AIDA file. The binnings will be obtained by reading the bundled AIDA data record file with the same filename as the analysis' name() property.

Definition at line 351 of file Analysis.cc.

References Analysis::_makeHistoDir(), Analysis::binEdges(), Analysis::histogramFactory(), Analysis::histoPath(), MSG_TRACE, and Analysis::name().

00353   {
00354     // Get the bin edges (only read the AIDA file once)
00355     const BinEdges edges = binEdges(hname);
00356     _makeHistoDir();
00357     const string path = histoPath(hname);
00358     if (path.find(" ") != string::npos) {
00359       throw Error("Histogram path '" + path + "' is invalid: spaces are not permitted in paths");
00360     }
00361     IProfile1D* prof = histogramFactory().createProfile1D(path, title, edges);
00362     MSG_TRACE("Made profile histogram " << hname <<  " for " << name());
00363     prof->setXTitle(xtitle);
00364     prof->setYTitle(ytitle);
00365     return prof;
00366   }

IProfile1D * bookProfile1D ( const std::string &  name,
const std::vector< double > &  binedges,
const std::string &  title = "",
const std::string &  xtitle = "",
const std::string &  ytitle = "" 
) [protected, inherited]

Book a 1D profile histogram with non-uniform bins defined by the vector of bin edges binedges . (NB. this returns a pointer rather than a reference since it will have to be stored in the analysis class - there's no point in forcing users to explicitly get the pointer from a reference before they can use it!)

Definition at line 386 of file Analysis.cc.

References Analysis::_makeHistoDir(), Analysis::histogramFactory(), Analysis::histoPath(), MSG_TRACE, and Analysis::name().

00389                                                                                   {
00390     _makeHistoDir();
00391     const string path = histoPath(hname);
00392     if (path.find(" ") != string::npos) {
00393       throw Error("Histogram path '" + path + "' is invalid: spaces are not permitted in paths");
00394     }
00395     IProfile1D* prof = histogramFactory().createProfile1D(path, title, binedges);
00396     MSG_TRACE("Made profile histogram " << hname <<  " for " << name());
00397     prof->setXTitle(xtitle);
00398     prof->setYTitle(ytitle);
00399     return prof;
00400   }

IProfile1D * bookProfile1D ( const std::string &  name,
size_t  nbins,
double  lower,
double  upper,
const std::string &  title = "",
const std::string &  xtitle = "",
const std::string &  ytitle = "" 
) [protected, inherited]

Book a 1D profile histogram with nbins uniformly distributed across the range lower - upper . (NB. this returns a pointer rather than a reference since it will have to be stored in the analysis class - there's no point in forcing users to explicitly get the pointer from a reference before they can use it!)

Definition at line 369 of file Analysis.cc.

References Analysis::_makeHistoDir(), Analysis::histogramFactory(), Analysis::histoPath(), MSG_TRACE, and Analysis::name().

Referenced by Analysis::bookProfile1D(), UA1_1990_S2044935::init(), STAR_2009_UE_HELEN::init(), STAR_2008_S7993412::init(), STAR_2006_S6860818::init(), MC_WPOL::init(), MC_PHOTONJETUE::init(), MC_LEADINGJETS::init(), MC_GENERIC::init(), H1_2000_S4129130::init(), H1_1994_S2919893::init(), DELPHI_2002_069_CONF_603::init(), DELPHI_1996_S3430090::init(), D0_1996_S3324664::init(), CMS_2011_S9120041::init(), CMS_2011_S8884919::init(), CDF_2010_S8591881_QCD::init(), CDF_2010_S8591881_DY::init(), CDF_2009_S8233977::init(), CDF_2008_S7782535::init(), CDF_2008_NOTE_9351::init(), CDF_2008_LEADINGJETS::init(), CDF_2005_S6217184::init(), CDF_2004_S5839831::init(), CDF_2001_S4751469::init(), ATLAS_2011_S8994773::init(), ATLAS_2011_S8924791::init(), ATLAS_2010_S8918562::init(), ATLAS_2010_S8894728::init(), ATLAS_2010_S8591806::init(), ALICE_2011_S8945144::init(), ALICE_2010_S8706239::init(), and ATLAS_2011_S9126244::initializePlots().

00372                                                                                   {
00373     _makeHistoDir();
00374     const string path = histoPath(hname);
00375     if (path.find(" ") != string::npos) {
00376       throw Error("Histogram path '" + path + "' is invalid: spaces are not permitted in paths");
00377     }
00378     IProfile1D* prof = histogramFactory().createProfile1D(path, title, nbins, lower, upper);
00379     MSG_TRACE("Made profile histogram " << hname <<  " for " << name());
00380     prof->setXTitle(xtitle);
00381     prof->setYTitle(ytitle);
00382     return prof;
00383   }

virtual std::string collider (  )  const [inline, virtual, inherited]

Collider on which the experiment ran.

Definition at line 174 of file Analysis.hh.

References AnalysisInfo::collider(), and Analysis::info().

00174                                        {
00175       return info().collider();
00176     }

double crossSection (  )  const [protected, inherited]

Get the process cross-section in pb. Throws if this hasn't been set.

Definition at line 166 of file Analysis.cc.

References Analysis::_crossSection, Analysis::_gotCrossSection, and Analysis::name().

Referenced by STAR_2006_S6870392::finalize(), MC_ZZJETS::finalize(), MC_ZJETS::finalize(), MC_XS::finalize(), MC_WWJETS::finalize(), MC_WJETS::finalize(), MC_VH2BB::finalize(), MC_JetAnalysis::finalize(), MC_HJETS::finalize(), MC_DIPHOTON::finalize(), LHCB_2010_S8758301::finalize(), D0_2010_S8570965::finalize(), D0_2010_S8566488::finalize(), D0_2008_S7863608::finalize(), D0_2008_S7719523::finalize(), D0_2008_S7662670::finalize(), D0_2006_S6438750::finalize(), D0_2000_S4480767::finalize(), CMS_2011_S9086218::finalize(), CDF_2009_S8436959::finalize(), CDF_2009_S8383952::finalize(), CDF_2009_S8233977::finalize(), CDF_2008_S8093652::finalize(), CDF_2008_S7828950::finalize(), CDF_2008_S7541902::finalize(), CDF_2008_S7540469::finalize(), CDF_2006_S6653332::finalize(), CDF_2006_S6450792::finalize(), CDF_2005_S6080774::finalize(), CDF_2001_S4563131::finalize(), CDF_2001_S4517016::finalize(), CDF_2000_S4266730::finalize(), CDF_2000_S4155203::finalize(), CDF_1998_S3618439::finalize(), ATLAS_2011_S9212183::finalize(), ATLAS_2011_S9120807::finalize(), ATLAS_2011_S9108483::finalize(), ATLAS_2011_S9041966::finalize(), ATLAS_2011_I919017::finalize(), ATLAS_2011_CONF_2011_098::finalize(), ATLAS_2011_CONF_2011_090::finalize(), ATLAS_2010_S8919674::finalize(), ATLAS_2010_S8914702::finalize(), and ATLAS_2010_CONF_2010_049::finalize().

00166                                       {
00167     if (!_gotCrossSection || std::isnan(_crossSection)) {
00168       string errMsg = "You did not set the cross section for the analysis " + name();
00169       throw Error(errMsg);
00170     }
00171     return _crossSection;
00172   }

double crossSectionPerEvent (  )  const [protected, inherited]

Get the process cross-section per generated event in pb. Throws if this hasn't been set.

Definition at line 174 of file Analysis.cc.

References Analysis::_crossSection, and Analysis::sumOfWeights().

Referenced by UA1_1990_S2044935::finalize(), MC_WPOL::finalize(), MC_PHOTONJETS::finalize(), D0_2010_S8671338::finalize(), D0_2009_S8349509::finalize(), D0_2001_S4674421::finalize(), CDF_2007_S7057202::finalize(), CDF_1988_S1865951::finalize(), ATLAS_2011_S9128077::finalize(), and ATLAS_2010_S8817804::finalize().

00174                                               {
00175     const double sumW = sumOfWeights();
00176     assert(sumW != 0.0);
00177     return _crossSection / sumW;
00178   }

IDataPointSetFactory & datapointsetFactory (  )  [protected, inherited]

Access the AIDA histogram factory of the controlling AnalysisHandler object.

Definition at line 45 of file Analysis.cc.

References AnalysisHandler::datapointsetFactory(), and Analysis::handler().

Referenced by Analysis::bookDataPointSet(), and Analysis::scale().

00045                                                       {
00046     return handler().datapointsetFactory();
00047   }

virtual std::string description (  )  const [inline, virtual, inherited]

Get a full description of the analysis.

Full textual description of this analysis, what it is useful for, what experimental techniques are applied, etc. Should be treated as a chunk of restructuredText (http://docutils.sourceforge.net/rst.html), with equations to be rendered as LaTeX with amsmath operators.

Definition at line 155 of file Analysis.hh.

References AnalysisInfo::description(), and Analysis::info().

00155                                           {
00156       return info().description();
00157     }

virtual std::string experiment (  )  const [inline, virtual, inherited]

Experiment which performed and published this analysis.

Definition at line 169 of file Analysis.hh.

References AnalysisInfo::experiment(), and Analysis::info().

00169                                          {
00170       return info().experiment();
00171     }

void finalize (  )  [inline, virtual]

Finalize this analysis object. A concrete class should here make all necessary operations on the histograms. Writing the histograms to a file is, however, done by the Rivet class. An overridden function must make sure it first calls the base class function.

Implements Analysis.

Definition at line 574 of file ATLAS_2011_S9041966.cc.

References ATLAS_2011_S9041966::_hist_MLQ_enu_ttCR, ATLAS_2011_S9041966::_hist_MLQ_enu_W2CR, ATLAS_2011_S9041966::_hist_MLQ_ev, ATLAS_2011_S9041966::_hist_MLQ_munu_ttCR, ATLAS_2011_S9041966::_hist_MLQ_munu_W2CR, ATLAS_2011_S9041966::_hist_MLQ_muv, ATLAS_2011_S9041966::_hist_St_ee, ATLAS_2011_S9041966::_hist_St_ee_ZCR, ATLAS_2011_S9041966::_hist_St_mumu, ATLAS_2011_S9041966::_hist_St_mumu_ZCR, Analysis::crossSection(), Analysis::scale(), and Analysis::sumOfWeights().

00574                     {
00575 // cerr << '\n' << "Of " << count << " events, saw "
00576 // << vetoe << " (after veto region cut), "
00577 // << Njetscut << " (after 2jet req). "
00578 // << '\n'
00579 // << "For " << dilept << " dilept events: "
00580 // << candmumujj << " cand mumujj events, "
00581 // << candeejj << " cand eejj events."
00582 // << '\n'
00583 // << "For " << onelept << " onelept events: "
00584 // << candmvjj << " preselected mvjj events, "
00585 // << candevjj << " preselected evjj events; "
00586 // << eTmisscut << " (eTmiss req); "
00587 // << emuvjj << " leftover; "
00588 // << MLQonelept << " (muvjj M_LQ cut), "
00589 // << MtLQonelept << " (muvjj Mt_LQ cut), "
00590 // << Stvonelept << " (muvjj St_v cut), "
00591 // << mTonelept << " (muvjj mT cut); "
00592 // << MLQev << " (evjj M_LQ cut), "
00593 // << MtLQev << " (evjj Mt_LQ cut), "
00594 // << Stvev << " (evjj St_v cut), "
00595 // << mTev << " (evjj mT cut). "
00596 // << '\n'<<'\n'
00597 // ;
00598 
00599 // cerr << "CR - " << "mumu Z: " << mumuZCR << "  ee Z: " << eeZCR << "  munu W+2jets: " << munuW2CR << "  munu tt: " << munuttCR << "  enu W+2jets: " << enuW2CR << "  enu tt: " << enuttCR << '\n';
00600 
00601 // cerr << "mumujj: " << mumujj << "      eejj: " << eejj << "      muvjj: " << muvjj << "      evjj: " << evjj << '\n';
00602 
00603 
00604         scale( _hist_St_ee, 120. * 35. * crossSection()/sumOfWeights() );
00605         scale( _hist_St_mumu, 120. * 35. * crossSection()/sumOfWeights() );
00606         scale( _hist_MLQ_muv, 50. * 35. * crossSection()/sumOfWeights() );
00607         scale( _hist_MLQ_ev, 50. * 35. * crossSection()/sumOfWeights() );
00608 
00609 
00610 
00611         scale( _hist_St_mumu_ZCR, 20. * 35. * crossSection()/sumOfWeights() );
00612         scale( _hist_St_ee_ZCR, 20. * 35. * crossSection()/sumOfWeights() );
00613         scale( _hist_MLQ_munu_W2CR, 20. * 35. * crossSection()/sumOfWeights() );
00614         scale( _hist_MLQ_enu_W2CR, 20. * 35. * crossSection()/sumOfWeights() );
00615         scale( _hist_MLQ_munu_ttCR, 20. * 35. * crossSection()/sumOfWeights() );
00616         scale( _hist_MLQ_enu_ttCR, 20. * 35. * crossSection()/sumOfWeights() );
00617 
00618 /*
00619 scale( _hist_eTmiss_mu, binwidth*luminosity* crossSection()/sumOfWeights() );
00620 */
00621 
00622     }

Log & getLog (  )  const [protected, inherited]

Get a Log object based on the name() property of the calling analysis object.

Reimplemented from ProjectionApplier.

Definition at line 97 of file Analysis.cc.

References Analysis::name().

Referenced by Analysis::binEdges().

00097                               {
00098     string logname = "Rivet.Analysis." + name();
00099     return Log::getLog(logname);
00100   }

const Projection& getProjection ( const std::string &  name  )  const [inline, inherited]

Get the named projection (non-templated, so returns as a reference to a Projection base class).

Definition at line 57 of file ProjectionApplier.hh.

References ProjectionHandler::getProjection(), and ProjectionApplier::getProjHandler().

00057                                                                  {
00058       return getProjHandler().getProjection(*this, name);
00059     }

const PROJ& getProjection ( const std::string &  name  )  const [inline, inherited]

Get the named projection, specifying return type via a template argument.

Definition at line 49 of file ProjectionApplier.hh.

References ProjectionHandler::getProjection(), and ProjectionApplier::getProjHandler().

Referenced by ProjectionApplier::_applyProjection(), Rivet::pcmp(), and Hemispheres::project().

00049                                                            {
00050       const Projection& p = getProjHandler().getProjection(*this, name);
00051       return pcast<PROJ>(p);
00052     }

std::set<ConstProjectionPtr> getProjections (  )  const [inline, inherited]

Get the contained projections, including recursion.

Definition at line 42 of file ProjectionApplier.hh.

References ProjectionHandler::DEEP, ProjectionHandler::getChildProjections(), and ProjectionApplier::getProjHandler().

Referenced by Projection::beamPairs().

00042                                                       {
00043       return getProjHandler().getChildProjections(*this, ProjectionHandler::DEEP);
00044     }

ProjectionHandler& getProjHandler (  )  const [inline, protected, inherited]
AnalysisHandler& handler (  )  const [inline, inherited]
const string histoDir (  )  const [protected, inherited]

Get the canonical histogram "directory" path for this analysis.

Todo:
This doesn't change: calc and cache at first use!

Definition at line 63 of file Analysis.cc.

References Analysis::handler(), Analysis::name(), and AnalysisHandler::runName().

Referenced by Analysis::_makeHistoDir(), STAR_2006_S6860818::finalize(), STAR_2006_S6500200::finalize(), MC_WJETS::finalize(), D0_2008_S7837160::finalize(), D0_2008_S7719523::finalize(), CMS_2011_S8978280::finalize(), ATLAS_2011_S9128077::finalize(), and Analysis::histoPath().

00063                                         {
00064     /// @todo This doesn't change: calc and cache at first use!
00065     string path = "/" + name();
00066     if (handler().runName().length() > 0) {
00067       path = "/" + handler().runName() + path;
00068     }
00069     while (find_first(path, "//")) {
00070       replace_all(path, "//", "/");
00071     }
00072     return path;
00073   }

IHistogramFactory & histogramFactory (  )  [protected, inherited]
const string histoPath ( const std::string &  hname  )  const [protected, inherited]

Get the canonical histogram path for the named histogram in this analysis.

Definition at line 76 of file Analysis.cc.

References Analysis::histoDir().

Referenced by Analysis::bookDataPointSet(), Analysis::bookHistogram1D(), Analysis::bookHistogram2D(), Analysis::bookProfile1D(), MC_JetAnalysis::finalize(), MC_GENERIC::finalize(), ATLAS_2011_S9126244::finalize(), and ALICE_2011_S8909580::finalize().

00076                                                             {
00077     const string path = histoDir() + "/" + hname;
00078     return path;
00079   }

AnalysisInfo& info (  )  [inline, inherited]

Get the actual AnalysisInfo object in which all this metadata is stored (non-const).

Definition at line 248 of file Analysis.hh.

References Analysis::_info.

00248                          {
00249       assert(_info.get() != 0 && "No AnalysisInfo object :O");
00250       return *_info;
00251     }

const AnalysisInfo& info (  )  const [inline, inherited]
void init (  )  [inline, virtual]

Book histograms and initialize projections before the run.

DEBUG

Book histograms

Implements Analysis.

Definition at line 51 of file ATLAS_2011_S9041966.cc.

References ATLAS_2011_S9041966::_count_eejj, ATLAS_2011_S9041966::_count_evjj, ATLAS_2011_S9041966::_count_mumujj, ATLAS_2011_S9041966::_count_muvjj, ATLAS_2011_S9041966::_hist_MLQ_enu_ttCR, ATLAS_2011_S9041966::_hist_MLQ_enu_W2CR, ATLAS_2011_S9041966::_hist_MLQ_ev, ATLAS_2011_S9041966::_hist_MLQ_munu_ttCR, ATLAS_2011_S9041966::_hist_MLQ_munu_W2CR, ATLAS_2011_S9041966::_hist_MLQ_muv, ATLAS_2011_S9041966::_hist_St_ee, ATLAS_2011_S9041966::_hist_St_ee_ZCR, ATLAS_2011_S9041966::_hist_St_mumu, ATLAS_2011_S9041966::_hist_St_mumu_ZCR, IdentifiedFinalState::acceptIdPair(), ProjectionApplier::addProjection(), VetoedFinalState::addVetoPairDetail(), FastJets::ANTIKT, Analysis::bookHistogram1D(), Rivet::ELECTRON, Rivet::GeV, and Rivet::MUON.

00051                 {
00052 
00053       // projection to find the electrons
00054       std::vector<std::pair<double, double> > eta_e;
00055       eta_e.push_back(make_pair(-2.47,2.47));
00056       IdentifiedFinalState elecs(eta_e, 20.0*GeV);
00057       elecs.acceptIdPair(ELECTRON);
00058       addProjection(elecs, "elecs");
00059 
00060 
00061       // veto region electrons
00062       std::vector<std::pair<double, double> > eta_v_e;
00063       eta_v_e.push_back(make_pair(-1.52,-1.35));
00064       eta_v_e.push_back(make_pair( 1.35, 1.52));
00065       IdentifiedFinalState veto_elecs(eta_v_e, 10.0*GeV);
00066       veto_elecs.acceptIdPair(ELECTRON);
00067       addProjection(veto_elecs, "veto_elecs");
00068 
00069 ///DEBUG
00070       // projection to find all leptons
00071       IdentifiedFinalState all_mu_e;
00072       all_mu_e.acceptIdPair(MUON);
00073       all_mu_e.acceptIdPair(ELECTRON);
00074       addProjection(all_mu_e, "all_mu_e"); //debug
00075 
00076 
00077 
00078       // projection to find the muons
00079       std::vector<std::pair<double, double> > eta_m;
00080       eta_m.push_back(make_pair(-2.4,2.4));
00081       IdentifiedFinalState muons(eta_m, 20.0*GeV);
00082       muons.acceptIdPair(MUON);
00083       addProjection(muons, "muons");
00084 
00085 
00086       // Jet finder
00087       VetoedFinalState vfs;
00088       vfs.addVetoPairDetail(MUON,20*GeV,7000*GeV);
00089       vfs.addVetoPairDetail(ELECTRON,20*GeV,7000*GeV);
00090       addProjection(FastJets(vfs, FastJets::ANTIKT, 0.4),
00091                    "AntiKtJets04");
00092 
00093 
00094       // all tracks (to do deltaR with leptons)
00095       addProjection(ChargedFinalState(-3.0,3.0,0.5*GeV),"cfs");
00096 
00097 
00098       // for pTmiss
00099       addProjection(VisibleFinalState(-4.9,4.9),"vfs");
00100 
00101 
00102       /// Book histograms
00103       _count_mumujj = bookHistogram1D("count_2muons_dijet", 1, 0., 1.);
00104       _count_eejj   = bookHistogram1D("count_2elecs_dijet", 1, 0., 1.);
00105       _count_muvjj  = bookHistogram1D("count_muon_neutrino_dijet", 1, 0., 1.);
00106       _count_evjj   = bookHistogram1D("count_elec_neutrino_dijet", 1, 0., 1.);
00107 
00108       _hist_St_mumu = bookHistogram1D("hist_mumujj_St", 10, 450., 1650.);
00109       _hist_St_ee   = bookHistogram1D("hist_eejj_St", 10, 450., 1650.);
00110       _hist_MLQ_muv = bookHistogram1D("hist_munujj_MLQ", 9, 150., 600.);
00111       _hist_MLQ_ev  = bookHistogram1D("hist_enujj_MLQ", 9, 150., 600.);
00112 
00113       _hist_St_mumu_ZCR   = bookHistogram1D("CR_Zjets_St_mumu", 40, 0., 800.);
00114       _hist_St_ee_ZCR     = bookHistogram1D("CR_Zjets_Stee", 40, 0., 800.);
00115       _hist_MLQ_munu_W2CR = bookHistogram1D("CR_W2jets_MLQ_munu", 20, 0., 400.);
00116       _hist_MLQ_enu_W2CR  = bookHistogram1D("CR_W2jets_MLQ_enu", 20, 0., 400.);
00117       _hist_MLQ_munu_ttCR = bookHistogram1D("CR_tt_MLQ_munu", 35, 0., 700.);
00118       _hist_MLQ_enu_ttCR  = bookHistogram1D("CR_tt_MLQ_enu", 35, 0., 700.);
00119 
00120     }

virtual std::string inspireId (  )  const [inline, virtual, inherited]

Get the Inspire ID code for this analysis.

Definition at line 123 of file Analysis.hh.

References Analysis::info(), and AnalysisInfo::inspireId().

00123                                         {
00124       return info().inspireId();
00125     }

bool isCompatible ( const PdgIdPair beams,
const std::pair< double, double > &  energies 
) const [inherited]

Check if analysis is compatible with the provided beam particle IDs and energies.

bool isCompatible ( PdgId  beam1,
PdgId  beam2,
double  e1,
double  e2 
) const [inherited]

Check if analysis is compatible with the provided beam particle IDs and energies.

Definition at line 122 of file Analysis.cc.

References Analysis::beams(), and Analysis::isCompatible().

00122                                                                                   {
00123     PdgIdPair beams(beam1, beam2);
00124     pair<double,double> energies(e1, e2);
00125     return isCompatible(beams, energies);
00126   }

bool isCompatible ( const ParticlePair beams  )  const [inherited]

Check if analysis is compatible with the provided beam particle IDs and energies.

Definition at line 116 of file Analysis.cc.

Referenced by Analysis::isCompatible().

00116                                                              {
00117     return isCompatible(beams.first.pdgId(),  beams.second.pdgId(),
00118                         beams.first.energy(), beams.second.energy());
00119   }

BinEdges logBinEdges ( size_t  nbins,
double  lower,
double  upper 
) [protected, inherited]

Get bin edges with logarithmic widths.

Definition at line 224 of file Analysis.cc.

Referenced by MC_ZZJETS::init(), MC_ZJETS::init(), MC_WWJETS::init(), MC_WPOL::init(), MC_WJETS::init(), MC_PHOTONJETS::init(), MC_JetAnalysis::init(), MC_HJETS::init(), and MC_DIPHOTON::init().

00224                                                                          {
00225     assert(lower>0.0);
00226     assert(upper>lower);
00227     double loglower=log10(lower);
00228     double logupper=log10(upper);
00229     vector<double> binedges;
00230     double stepwidth=(logupper-loglower)/double(nbins);
00231     for (size_t i=0; i<=nbins; ++i) {
00232       binedges.push_back(pow(10.0, loglower+double(i)*stepwidth));
00233     }
00234     return binedges;
00235   }

const string makeAxisCode ( size_t  datasetId,
size_t  xAxisId,
size_t  yAxisId 
) const [protected, inherited]

Get the internal histogram name for given d, x and y (cf. HepData).

Definition at line 82 of file Analysis.cc.

Referenced by Analysis::binEdges(), Analysis::bookDataPointSet(), Analysis::bookHistogram1D(), Analysis::bookProfile1D(), and ATLAS_2011_S9126244::finalize().

00082                                                                                             {
00083     stringstream axisCode;
00084     axisCode << "d";
00085     if (datasetId < 10) axisCode << 0;
00086     axisCode << datasetId;
00087     axisCode << "-x";
00088     if (xAxisId < 10) axisCode << 0;
00089     axisCode << xAxisId;
00090     axisCode << "-y";
00091     if (yAxisId < 10) axisCode << 0;
00092     axisCode << yAxisId;
00093     return axisCode.str();
00094   }

virtual std::string name (  )  const [inline, virtual, inherited]

Get the name of the analysis.

By default this is computed by combining the results of the experiment, year and Spires ID metadata methods and you should only override it if there's a good reason why those won't work.

Implements ProjectionApplier.

Definition at line 118 of file Analysis.hh.

References Analysis::_defaultname, Analysis::info(), and AnalysisInfo::name().

Referenced by Analysis::_cacheBinEdges(), Analysis::_cacheXAxisData(), Analysis::_makeHistoDir(), Analysis::binEdges(), Analysis::bookDataPointSet(), Analysis::bookHistogram1D(), Analysis::bookHistogram2D(), Analysis::bookProfile1D(), Analysis::crossSection(), Analysis::getLog(), Analysis::histoDir(), Analysis::normalize(), HistoHandler::registerAnalysisObject(), and Analysis::scale().

00118                                    {
00119       return (info().name().empty()) ? _defaultname : info().name();
00120     }

bool needsCrossSection (  )  const [inline, inherited]

Return true if this analysis needs to know the process cross-section.

Definition at line 232 of file Analysis.hh.

References Analysis::info(), and AnalysisInfo::needsCrossSection().

00232                                    {
00233       return info().needsCrossSection();
00234     }

void normalize ( AIDA::IHistogram2D *&  histo,
double  norm = 1.0 
) [inherited]

Normalize the given histogram, histo. After this call the histogram will have been transformed to a DataPointSet with the same name and path. It has the same effect as scale(histo, norm/sumOfWeights).

Parameters:
histo The histogram to be normalised.
norm The new area of the histogram.
Warning:
The old histogram will be deleted, and its pointer set to zero.

Definition at line 552 of file Analysis.cc.

References MSG_ERROR, MSG_TRACE, MSG_WARNING, Analysis::name(), Analysis::scale(), and Analysis::tree().

00552                                                                 {
00553     if (!histo) {
00554       MSG_ERROR("Failed to normalize histo=NULL in analysis "
00555                 << name() << " (norm=" << norm << ")");
00556       return;
00557     }
00558     const string hpath = tree().findPath(dynamic_cast<const AIDA::IManagedObject&>(*histo));
00559     MSG_TRACE("Normalizing histo " << hpath << " to " << norm);
00560 
00561     double oldintg = 0.0;
00562     int nxBins = histo->xAxis().bins();
00563     int nyBins = histo->yAxis().bins();
00564     for (int ixBin = 0; ixBin != nxBins; ++ixBin)
00565       for (int iyBin = 0; iyBin != nyBins; ++iyBin) {
00566       // Leaving out factor of binWidth because AIDA's "height"
00567       // already includes a width factor.
00568     oldintg += histo->binHeight(ixBin, iyBin); // * histo->axis().binWidth(iBin);
00569     }
00570     if (oldintg == 0.0) {
00571       MSG_WARNING("Histo " << hpath << " has null integral during normalization");
00572       return;
00573     }
00574 
00575     // Scale by the normalisation factor.
00576     scale(histo, norm/oldintg);
00577   }

void normalize ( AIDA::IHistogram1D *&  histo,
double  norm = 1.0 
) [inherited]

Normalize the given histogram, histo. After this call the histogram will have been transformed to a DataPointSet with the same name and path. It has the same effect as scale(histo, norm/sumOfWeights).

Parameters:
histo The histogram to be normalised.
norm The new area of the histogram.
Warning:
The old histogram will be deleted, and its pointer set to zero.

Definition at line 482 of file Analysis.cc.

References MSG_ERROR, MSG_TRACE, MSG_WARNING, Analysis::name(), Analysis::scale(), and Analysis::tree().

Referenced by TASSO_1990_S2148048::finalize(), STAR_2008_S7869363::finalize(), OPAL_2001_S4553896::finalize(), OPAL_1998_S3780481::finalize(), JADE_1998_S3612880::finalize(), H1_1994_S2919893::finalize(), ExampleAnalysis::finalize(), DELPHI_2003_WUD_03_11::finalize(), DELPHI_2002_069_CONF_603::finalize(), DELPHI_1996_S3430090::finalize(), DELPHI_1995_S3137023::finalize(), D0_2010_S8821313::finalize(), D0_2010_S8671338::finalize(), D0_2009_S8320160::finalize(), D0_2008_S7554427::finalize(), D0_2008_S6879055::finalize(), D0_2007_S7075677::finalize(), D0_2004_S5992206::finalize(), D0_2001_S4674421::finalize(), D0_1996_S3324664::finalize(), D0_1996_S3214044::finalize(), CMS_2011_S9120041::finalize(), CMS_2011_S8968497::finalize(), CMS_2011_S8957746::finalize(), CMS_2011_S8950903::finalize(), CMS_2011_S8884919::finalize(), CDF_2009_NOTE_9936::finalize(), CDF_2004_S5839831::finalize(), CDF_2001_S4751469::finalize(), CDF_1997_S3541940::finalize(), CDF_1996_S3418421::finalize(), CDF_1996_S3349578::finalize(), CDF_1996_S3108457::finalize(), CDF_1994_S2952106::finalize(), CDF_1993_S2742446::finalize(), ATLAS_2011_S8971293::finalize(), ALICE_2010_S8625980::finalize(), ALICE_2010_S8624100::finalize(), ALEPH_2004_S5765862::finalize(), ALEPH_1996_S3486095::finalize(), and ATLAS_2011_I919017::safeinvscale().

00482                                                                 {
00483     if (!histo) {
00484       MSG_ERROR("Failed to normalize histo=NULL in analysis "
00485                 << name() << " (norm=" << norm << ")");
00486       return;
00487     }
00488     const string hpath = tree().findPath(dynamic_cast<const AIDA::IManagedObject&>(*histo));
00489     MSG_TRACE("Normalizing histo " << hpath << " to " << norm);
00490 
00491     double oldintg = 0.0;
00492     int nBins = histo->axis().bins();
00493     for (int iBin = 0; iBin != nBins; ++iBin) {
00494       // Leaving out factor of binWidth because AIDA's "height" already includes a width factor.
00495       oldintg += histo->binHeight(iBin); // * histo->axis().binWidth(iBin);
00496     }
00497     if (oldintg == 0.0) {
00498       MSG_WARNING("Histo " << hpath << " has null integral during normalization");
00499       return;
00500     }
00501 
00502     // Scale by the normalisation factor.
00503     scale(histo, norm/oldintg);
00504   }

size_t numEvents (  )  const [protected, inherited]

Get the number of events seen (via the analysis handler). Use in the finalize phase only.

Definition at line 103 of file Analysis.cc.

References Analysis::handler(), and AnalysisHandler::numEvents().

Referenced by LHCB_2010_S8758301::finalize().

00103                                    {
00104     return handler().numEvents();
00105   }

virtual std::vector<std::string> references (  )  const [inline, virtual, inherited]

Journal, and preprint references.

Definition at line 184 of file Analysis.hh.

References Analysis::info(), and AnalysisInfo::references().

00184                                                     {
00185       return info().references();
00186     }

virtual const std::vector<PdgIdPair>& requiredBeams (  )  const [inline, virtual, inherited]

Return the allowed pairs of incoming beams required by this analysis.

Definition at line 210 of file Analysis.hh.

References AnalysisInfo::beams(), and Analysis::info().

00210                                                               {
00211       return info().beams();
00212     }

virtual const std::vector<std::pair<double, double> >& requiredEnergies (  )  const [inline, virtual, inherited]

Sets of valid beam energy pairs, in GeV.

Definition at line 221 of file Analysis.hh.

References AnalysisInfo::energies(), and Analysis::info().

Referenced by Analysis::setRequiredEnergies().

00221                                                                                 {
00222       return info().energies();
00223     }

virtual std::string runInfo (  )  const [inline, virtual, inherited]

Information about the events needed as input for this analysis.

Event types, energies, kinematic cuts, particles to be considered stable, etc. etc. Should be treated as a restructuredText bullet list (http://docutils.sourceforge.net/rst.html)

Definition at line 164 of file Analysis.hh.

References Analysis::info(), and AnalysisInfo::runInfo().

00164                                       {
00165       return info().runInfo();
00166     }

void scale ( AIDA::IHistogram2D *&  histo,
double  scale 
) [inherited]

Multiplicatively scale the given histogram, histo. After this call the histogram will have been transformed to a DataPointSet with the same name and path.

Parameters:
histo The histogram to be scaled.
scale The factor used to multiply the histogram bin heights.
Warning:
The old histogram will be deleted, and its pointer set to zero.

Definition at line 580 of file Analysis.cc.

References Analysis::datapointsetFactory(), MSG_ERROR, MSG_TRACE, Analysis::name(), and Analysis::tree().

00580                                                              {
00581     if (!histo) {
00582       MSG_ERROR("Failed to scale histo=NULL in analysis "
00583                 << name() << " (scale=" << scale << ")");
00584       return;
00585     }
00586     const string hpath =
00587       tree().findPath(dynamic_cast<const AIDA::IManagedObject&>(*histo));
00588     MSG_TRACE("Scaling histo " << hpath);
00589 
00590     vector<double> x, y, z, ex, ey, ez;
00591     for (size_t ix = 0, Nx = histo->xAxis().bins(); ix < Nx; ++ix)
00592       for (size_t iy = 0, Ny = histo->yAxis().bins(); iy < Ny; ++iy) {
00593     x.push_back(0.5 * (histo->xAxis().binLowerEdge(ix) +
00594                histo->xAxis().binUpperEdge(ix)));
00595     ex.push_back(histo->xAxis().binWidth(ix)*0.5);
00596     y.push_back(0.5 * (histo->yAxis().binLowerEdge(iy) +
00597                histo->yAxis().binUpperEdge(iy)));
00598     ey.push_back(histo->yAxis().binWidth(iy)*0.5);
00599 
00600     // "Bin height" is a misnomer in the AIDA spec: width is neglected.
00601     // We'd like to do this: y.push_back(histo->binHeight(i) * scale);
00602     z.push_back(histo->binHeight(ix, iy)*scale/
00603             (histo->xAxis().binWidth(ix)*histo->yAxis().binWidth(iy)));
00604     // "Bin error" is a misnomer in the AIDA spec: width is neglected.
00605     // We'd like to do this: ey.push_back(histo->binError(i) * scale);
00606     ez.push_back(histo->binError(ix, iy)*scale/
00607              (histo->xAxis().binWidth(ix)*histo->yAxis().binWidth(iy)));
00608     }
00609 
00610     string title = histo->title();
00611     string xtitle = histo->xtitle();
00612     string ytitle = histo->ytitle();
00613     string ztitle = histo->ztitle();
00614 
00615     tree().mkdir("/tmpnormalize");
00616     tree().mv(hpath, "/tmpnormalize");
00617 
00618     if (hpath.find(" ") != string::npos) {
00619       throw Error("Histogram path '" + hpath + "' is invalid: spaces are not permitted in paths");
00620     }
00621     AIDA::IDataPointSet* dps =
00622       datapointsetFactory().createXYZ(hpath, title, x, y, z, ex, ey, ez);
00623     dps->setXTitle(xtitle);
00624     dps->setYTitle(ytitle);
00625     dps->setZTitle(ztitle);
00626 
00627     tree().rm(tree().findPath(dynamic_cast<AIDA::IManagedObject&>(*histo)));
00628     tree().rmdir("/tmpnormalize");
00629 
00630     // Set histo pointer to null - it can no longer be used.
00631     histo = 0;
00632   }

void scale ( AIDA::IHistogram1D *&  histo,
double  scale 
) [inherited]

Multiplicatively scale the given histogram, histo. After this call the histogram will have been transformed to a DataPointSet with the same name and path.

Parameters:
histo The histogram to be scaled.
scale The factor used to multiply the histogram bin heights.
Warning:
The old histogram will be deleted, and its pointer set to zero.

Definition at line 507 of file Analysis.cc.

References Analysis::datapointsetFactory(), MSG_ERROR, MSG_TRACE, Analysis::name(), and Analysis::tree().

Referenced by UA5_1989_S1926373::finalize(), UA5_1987_S1640666::finalize(), UA5_1986_S1583476::finalize(), UA5_1982_S875503::finalize(), UA1_1990_S2044935::finalize(), STAR_2006_S6870392::finalize(), STAR_2006_S6860818::finalize(), STAR_2006_S6500200::finalize(), SFM_1984_S1178091::finalize(), PDG_HADRON_MULTIPLICITIES_RATIOS::finalize(), PDG_HADRON_MULTIPLICITIES::finalize(), OPAL_2004_S6132243::finalize(), OPAL_1998_S3780481::finalize(), MC_ZZJETS::finalize(), MC_ZJETS::finalize(), MC_XS::finalize(), MC_WWJETS::finalize(), MC_WPOL::finalize(), MC_WJETS::finalize(), MC_VH2BB::finalize(), MC_TTBAR::finalize(), MC_PHOTONJETS::finalize(), MC_JetAnalysis::finalize(), MC_HJETS::finalize(), MC_GENERIC::finalize(), MC_DIPHOTON::finalize(), LHCB_2010_S8758301::finalize(), JADE_OPAL_2000_S4300807::finalize(), H1_2000_S4129130::finalize(), H1_1994_S2919893::finalize(), E735_1998_S3905616::finalize(), DELPHI_1996_S3430090::finalize(), D0_2010_S8671338::finalize(), D0_2010_S8570965::finalize(), D0_2009_S8349509::finalize(), D0_2009_S8202443::finalize(), D0_2008_S7863608::finalize(), D0_2008_S7719523::finalize(), D0_2008_S7662670::finalize(), D0_2006_S6438750::finalize(), D0_2000_S4480767::finalize(), CMS_2011_S8978280::finalize(), CMS_2010_S8656010::finalize(), CMS_2010_S8547297::finalize(), CDF_2009_S8436959::finalize(), CDF_2009_S8383952::finalize(), CDF_2009_S8233977::finalize(), CDF_2008_S8093652::finalize(), CDF_2008_S7540469::finalize(), CDF_2007_S7057202::finalize(), CDF_2006_S6450792::finalize(), CDF_2005_S6080774::finalize(), CDF_2001_S4563131::finalize(), CDF_2000_S4266730::finalize(), CDF_2000_S4155203::finalize(), CDF_1998_S3618439::finalize(), CDF_1990_S2089246::finalize(), CDF_1988_S1865951::finalize(), ATLAS_2011_S9212183::finalize(), ATLAS_2011_S9131140::finalize(), ATLAS_2011_S9128077::finalize(), ATLAS_2011_S9120807::finalize(), ATLAS_2011_S9108483::finalize(), ATLAS_2011_S9041966::finalize(), ATLAS_2011_I925932::finalize(), ATLAS_2011_CONF_2011_098::finalize(), ATLAS_2011_CONF_2011_090::finalize(), ATLAS_2010_S8919674::finalize(), ATLAS_2010_S8914702::finalize(), ATLAS_2010_S8591806::finalize(), ATLAS_2010_CONF_2010_049::finalize(), ALICE_2011_S8945144::finalize(), ALICE_2011_S8909580::finalize(), ALICE_2010_S8706239::finalize(), ALICE_2010_S8625980::finalize(), ALEPH_2004_S5765862::finalize(), ALEPH_1996_S3486095::finalize(), ALEPH_1996_S3196992::finalize(), ALEPH_1991_S2435284::finalize(), Analysis::normalize(), ATLAS_2011_I919017::safeinvscale(), and BinnedHistogram< T >::scale().

00507                                                              {
00508     if (!histo) {
00509       MSG_ERROR("Failed to scale histo=NULL in analysis "
00510                 << name() << " (scale=" << scale << ")");
00511       return;
00512     }
00513     const string hpath = tree().findPath(dynamic_cast<const AIDA::IManagedObject&>(*histo));
00514     MSG_TRACE("Scaling histo " << hpath);
00515 
00516     vector<double> x, y, ex, ey;
00517     for (size_t i = 0, N = histo->axis().bins(); i < N; ++i) {
00518       x.push_back(0.5 * (histo->axis().binLowerEdge(i) + histo->axis().binUpperEdge(i)));
00519       ex.push_back(histo->axis().binWidth(i)*0.5);
00520 
00521       // "Bin height" is a misnomer in the AIDA spec: width is neglected.
00522       // We'd like to do this: y.push_back(histo->binHeight(i) * scale);
00523       y.push_back(histo->binHeight(i)*scale/histo->axis().binWidth(i));
00524 
00525       // "Bin error" is a misnomer in the AIDA spec: width is neglected.
00526       // We'd like to do this: ey.push_back(histo->binError(i) * scale);
00527       ey.push_back(histo->binError(i)*scale/histo->axis().binWidth(i));
00528     }
00529 
00530     string title = histo->title();
00531     string xtitle = histo->xtitle();
00532     string ytitle = histo->ytitle();
00533 
00534     tree().mkdir("/tmpnormalize");
00535     tree().mv(hpath, "/tmpnormalize");
00536 
00537     if (hpath.find(" ") != string::npos) {
00538       throw Error("Histogram path '" + hpath + "' is invalid: spaces are not permitted in paths");
00539     }
00540     AIDA::IDataPointSet* dps = datapointsetFactory().createXY(hpath, title, x, y, ex, ey);
00541     dps->setXTitle(xtitle);
00542     dps->setYTitle(ytitle);
00543 
00544     tree().rm(tree().findPath(dynamic_cast<AIDA::IManagedObject&>(*histo)));
00545     tree().rmdir("/tmpnormalize");
00546 
00547     // Set histo pointer to null - it can no longer be used.
00548     histo = 0;
00549   }

virtual Analysis& setBeams ( PdgId  beam1,
PdgId  beam2 
) [inline, virtual, inherited]

Set the required beams

Deprecated:
To be removed in 2.0.0. Use .info file and AnalysisInfo class instead

Todo:
Print out a warning to use setRequiredBeams() instead (and really to use .info files)

Definition at line 255 of file Analysis.hh.

References Analysis::setRequiredBeams().

00255                                                          {
00256       /// @todo Print out a warning to use setRequiredBeams() instead (and really to use .info files)
00257       return setRequiredBeams(std::vector<PdgIdPair>(1, make_pair(beam1, beam2)));
00258     }

Analysis & setCrossSection ( double  xs  )  [inherited]

Set the cross section from the generator.

Definition at line 160 of file Analysis.cc.

References Analysis::_crossSection, and Analysis::_gotCrossSection.

00160                                                {
00161     _crossSection = xs;
00162     _gotCrossSection = true;
00163     return *this;
00164   }

Analysis& setNeedsCrossSection ( bool  needed = true  )  [inline, inherited]

Declare whether this analysis needs to know the process cross-section from the generator.

Definition at line 236 of file Analysis.hh.

References Analysis::info(), and AnalysisInfo::setNeedsCrossSection().

Referenced by ATLAS_2011_S9108483::ATLAS_2011_S9108483(), LHCB_2010_S8758301::LHCB_2010_S8758301(), and MC_JetAnalysis::MC_JetAnalysis().

00236                                                      {
00237       info().setNeedsCrossSection(needed);
00238       return *this;
00239     }

virtual Analysis& setRequiredBeams ( const std::vector< PdgIdPair > &  requiredBeams  )  [inline, virtual, inherited]

Declare the allowed pairs of incoming beams required by this analysis.

Definition at line 214 of file Analysis.hh.

References Analysis::info(), and AnalysisInfo::setBeams().

Referenced by Analysis::setBeams().

00214                                                                                   {
00215       info().setBeams(requiredBeams);
00216       return *this;
00217     }

virtual Analysis& setRequiredEnergies ( const std::vector< std::pair< double, double > > &  requiredEnergies  )  [inline, virtual, inherited]

Declare the list of valid beam energy pairs, in GeV.

Definition at line 225 of file Analysis.hh.

References Analysis::info(), Analysis::requiredEnergies(), and AnalysisInfo::setEnergies().

00225                                                                                                        {
00226       info().setEnergies(requiredEnergies);
00227       return *this;
00228     }

virtual std::string spiresId (  )  const [inline, virtual, inherited]

Get the SPIRES ID code for this analysis (~deprecated).

Definition at line 128 of file Analysis.hh.

References Analysis::info(), and AnalysisInfo::spiresId().

00128                                        {
00129       return info().spiresId();
00130     }

double sqrtS (  )  const [inherited]

Centre of mass energy for this run.

Definition at line 50 of file Analysis.cc.

References Analysis::handler(), and AnalysisHandler::sqrtS().

Referenced by UA1_1990_S2044935::analyze(), TASSO_1990_S2148048::analyze(), SFM_1984_S1178091::analyze(), PDG_HADRON_MULTIPLICITIES_RATIOS::analyze(), PDG_HADRON_MULTIPLICITIES::analyze(), MC_TTBAR::analyze(), JADE_1998_S3612880::analyze(), CMS_2011_S9120041::analyze(), CDF_2004_S5839831::analyze(), ATLAS_2010_S8918562::analyze(), ATLAS_2010_S8894728::analyze(), ALICE_2010_S8625980::analyze(), ALEPH_2004_S5765862::analyze(), UA1_1990_S2044935::finalize(), PDG_HADRON_MULTIPLICITIES_RATIOS::finalize(), PDG_HADRON_MULTIPLICITIES::finalize(), JADE_1998_S3612880::finalize(), CMS_2011_S8978280::finalize(), CDF_2004_S5839831::finalize(), ATLAS_2010_S8918562::finalize(), ALICE_2010_S8625980::finalize(), ALEPH_2004_S5765862::finalize(), UA5_1989_S1926373::init(), UA5_1988_S1867512::init(), UA5_1986_S1583476::init(), UA1_1990_S2044935::init(), TASSO_1990_S2148048::init(), SFM_1984_S1178091::init(), PDG_HADRON_MULTIPLICITIES_RATIOS::init(), PDG_HADRON_MULTIPLICITIES::init(), OPAL_2004_S6132243::init(), MC_ZZJETS::init(), MC_ZJETS::init(), MC_WWJETS::init(), MC_WPOL::init(), MC_WJETS::init(), MC_PHOTONJETS::init(), MC_JetAnalysis::init(), MC_HJETS::init(), MC_DIPHOTON::init(), JADE_OPAL_2000_S4300807::init(), JADE_1998_S3612880::init(), CMS_2011_S8978280::init(), CMS_2011_S8884919::init(), CMS_2010_S8547297::init(), CDF_2004_S5839831::init(), CDF_1990_S2089246::init(), CDF_1988_S1865951::init(), ATLAS_2011_S8994773::init(), ATLAS_2010_S8918562::init(), ATLAS_2010_S8894728::init(), ALICE_2010_S8625980::init(), ALICE_2010_S8624100::init(), and ALEPH_2004_S5765862::init().

00050                                {
00051     return handler().sqrtS();
00052   }

virtual std::string status (  )  const [inline, virtual, inherited]

Whether this analysis is trusted (in any way!).

Definition at line 199 of file Analysis.hh.

References Analysis::info(), and AnalysisInfo::status().

00199                                      {
00200       return (info().status().empty()) ? "UNVALIDATED" : info().status();
00201     }

virtual std::string summary (  )  const [inline, virtual, inherited]

Get a short description of the analysis.

Short (one sentence) description used as an index entry. Use description() to provide full descriptive paragraphs of analysis details.

Definition at line 145 of file Analysis.hh.

References Analysis::info(), and AnalysisInfo::summary().

00145                                       {
00146       return info().summary();
00147     }

double sumOfWeights (  )  const [protected, inherited]

Get the sum of event weights seen (via the analysis handler). Use in the finalize phase only.

Definition at line 108 of file Analysis.cc.

References Analysis::handler(), and AnalysisHandler::sumOfWeights().

Referenced by Analysis::crossSectionPerEvent(), STAR_2006_S6870392::finalize(), STAR_2006_S6860818::finalize(), STAR_2006_S6500200::finalize(), PDG_HADRON_MULTIPLICITIES::finalize(), OPAL_1998_S3780481::finalize(), OPAL_1993_S2692198::finalize(), MC_ZZJETS::finalize(), MC_ZJETS::finalize(), MC_XS::finalize(), MC_WWJETS::finalize(), MC_WJETS::finalize(), MC_VH2BB::finalize(), MC_JetAnalysis::finalize(), MC_HJETS::finalize(), MC_GENERIC::finalize(), MC_DIPHOTON::finalize(), LHCB_2010_S8758301::finalize(), JADE_OPAL_2000_S4300807::finalize(), DELPHI_1995_S3137023::finalize(), D0_2010_S8570965::finalize(), D0_2010_S8566488::finalize(), D0_2008_S7863608::finalize(), D0_2008_S7719523::finalize(), D0_2008_S7662670::finalize(), D0_2006_S6438750::finalize(), D0_2000_S4480767::finalize(), CMS_2011_S9086218::finalize(), CMS_2011_S8978280::finalize(), CMS_2010_S8656010::finalize(), CMS_2010_S8547297::finalize(), CDF_2009_S8436959::finalize(), CDF_2009_S8383952::finalize(), CDF_2009_S8233977::finalize(), CDF_2008_S8093652::finalize(), CDF_2008_S7828950::finalize(), CDF_2008_S7541902::finalize(), CDF_2008_S7540469::finalize(), CDF_2006_S6653332::finalize(), CDF_2006_S6450792::finalize(), CDF_2005_S6080774::finalize(), CDF_2001_S4563131::finalize(), CDF_2001_S4517016::finalize(), CDF_2000_S4266730::finalize(), CDF_2000_S4155203::finalize(), CDF_1998_S3618439::finalize(), ATLAS_2011_S9212183::finalize(), ATLAS_2011_S9120807::finalize(), ATLAS_2011_S9108483::finalize(), ATLAS_2011_S9041966::finalize(), ATLAS_2011_CONF_2011_098::finalize(), ATLAS_2011_CONF_2011_090::finalize(), ATLAS_2010_S8919674::finalize(), ATLAS_2010_S8914702::finalize(), ATLAS_2010_CONF_2010_049::finalize(), ALICE_2011_S8945144::finalize(), ALICE_2011_S8909580::finalize(), ALEPH_2004_S5765862::finalize(), ALEPH_1996_S3486095::finalize(), ALEPH_1996_S3196992::finalize(), and ALEPH_1991_S2435284::finalize().

00108                                       {
00109     return handler().sumOfWeights();
00110   }

virtual std::vector<std::string> todos (  )  const [inline, virtual, inherited]

Any work to be done on this analysis.

Definition at line 204 of file Analysis.hh.

References Analysis::info(), and AnalysisInfo::todos().

00204                                                {
00205       return info().todos();
00206     }

ITree & tree (  )  [protected, inherited]

Access the AIDA tree of the controlling AnalysisHandler object.

Definition at line 35 of file Analysis.cc.

References Analysis::handler(), and AnalysisHandler::tree().

Referenced by Analysis::_makeHistoDir(), Analysis::normalize(), and Analysis::scale().

00035                         {
00036     return handler().tree();
00037   }

virtual std::string year (  )  const [inline, virtual, inherited]

When the original experimental analysis was published.

Definition at line 179 of file Analysis.hh.

References Analysis::info(), and AnalysisInfo::year().

00179                                    {
00180       return info().year();
00181     }


Member Data Documentation

bool _allowProjReg [protected, inherited]

Flag to forbid projection registration in analyses until the init phase.

Definition at line 140 of file ProjectionApplier.hh.

Referenced by ProjectionApplier::_addProjection(), and Analysis::Analysis().

AIDA::IHistogram1D* _count_eejj [private]
AIDA::IHistogram1D* _count_evjj [private]
AIDA::IHistogram1D* _count_mumujj [private]
AIDA::IHistogram1D* _count_muvjj [private]
string _defaultname [protected, inherited]

Name passed to constructor (used to find .info analysis data file, and as a fallback).

Definition at line 547 of file Analysis.hh.

Referenced by Analysis::Analysis(), and Analysis::name().

AIDA::IHistogram1D* _hist_MLQ_enu_ttCR [private]
AIDA::IHistogram1D* _hist_MLQ_enu_W2CR [private]
AIDA::IHistogram1D* _hist_MLQ_ev [private]
AIDA::IHistogram1D* _hist_MLQ_munu_ttCR [private]
AIDA::IHistogram1D* _hist_MLQ_munu_W2CR [private]
AIDA::IHistogram1D* _hist_MLQ_muv [private]
AIDA::IHistogram1D* _hist_St_ee [private]
AIDA::IHistogram1D* _hist_St_ee_ZCR [private]
AIDA::IHistogram1D* _hist_St_mumu [private]
AIDA::IHistogram1D* _hist_St_mumu_ZCR [private]
shared_ptr<AnalysisInfo> _info [protected, inherited]

Pointer to analysis metadata object.

Definition at line 550 of file Analysis.hh.

Referenced by Analysis::Analysis(), and Analysis::info().

int cande [private]

Definition at line 675 of file ATLAS_2011_S9041966.cc.

Referenced by ATLAS_2011_S9041966::analyze().

int candeejj [private]

Definition at line 657 of file ATLAS_2011_S9041966.cc.

Referenced by ATLAS_2011_S9041966::analyze().

int candevjj [private]

Definition at line 661 of file ATLAS_2011_S9041966.cc.

Referenced by ATLAS_2011_S9041966::analyze().

int candmu [private]

Definition at line 676 of file ATLAS_2011_S9041966.cc.

Referenced by ATLAS_2011_S9041966::analyze().

int candmumujj [private]

Definition at line 656 of file ATLAS_2011_S9041966.cc.

Referenced by ATLAS_2011_S9041966::analyze().

int candmvjj [private]

Definition at line 660 of file ATLAS_2011_S9041966.cc.

Referenced by ATLAS_2011_S9041966::analyze().

int count [private]

Definition at line 652 of file ATLAS_2011_S9041966.cc.

Referenced by ATLAS_2011_S9041966::analyze().

int dilept [private]

Definition at line 655 of file ATLAS_2011_S9041966.cc.

int eejj [private]

Definition at line 663 of file ATLAS_2011_S9041966.cc.

Referenced by ATLAS_2011_S9041966::analyze().

int eeZCR [private]

Definition at line 680 of file ATLAS_2011_S9041966.cc.

Referenced by ATLAS_2011_S9041966::analyze().

int emuvjj [private]

Definition at line 674 of file ATLAS_2011_S9041966.cc.

Referenced by ATLAS_2011_S9041966::analyze().

int enuttCR [private]

Definition at line 684 of file ATLAS_2011_S9041966.cc.

Referenced by ATLAS_2011_S9041966::analyze().

int enuW2CR [private]

Definition at line 683 of file ATLAS_2011_S9041966.cc.

Referenced by ATLAS_2011_S9041966::analyze().

int eTmisscut [private]

Definition at line 659 of file ATLAS_2011_S9041966.cc.

Referenced by ATLAS_2011_S9041966::analyze().

int evjj [private]

Definition at line 673 of file ATLAS_2011_S9041966.cc.

Referenced by ATLAS_2011_S9041966::analyze().

int MLQev [private]

Definition at line 669 of file ATLAS_2011_S9041966.cc.

Referenced by ATLAS_2011_S9041966::analyze().

int MLQonelept [private]

Definition at line 665 of file ATLAS_2011_S9041966.cc.

Referenced by ATLAS_2011_S9041966::analyze().

int mTev [private]

Definition at line 668 of file ATLAS_2011_S9041966.cc.

Referenced by ATLAS_2011_S9041966::analyze().

int MtLQev [private]

Definition at line 670 of file ATLAS_2011_S9041966.cc.

Referenced by ATLAS_2011_S9041966::analyze().

int MtLQonelept [private]

Definition at line 666 of file ATLAS_2011_S9041966.cc.

Referenced by ATLAS_2011_S9041966::analyze().

int mTonelept [private]

Definition at line 664 of file ATLAS_2011_S9041966.cc.

Referenced by ATLAS_2011_S9041966::analyze().

int mumujj [private]

Definition at line 662 of file ATLAS_2011_S9041966.cc.

Referenced by ATLAS_2011_S9041966::analyze().

int mumuZCR [private]

Definition at line 679 of file ATLAS_2011_S9041966.cc.

Referenced by ATLAS_2011_S9041966::analyze().

int munuttCR [private]

Definition at line 682 of file ATLAS_2011_S9041966.cc.

Referenced by ATLAS_2011_S9041966::analyze().

int munuW2CR [private]

Definition at line 681 of file ATLAS_2011_S9041966.cc.

Referenced by ATLAS_2011_S9041966::analyze().

int muvjj [private]

Definition at line 672 of file ATLAS_2011_S9041966.cc.

Referenced by ATLAS_2011_S9041966::analyze().

int Njetscut [private]

Definition at line 654 of file ATLAS_2011_S9041966.cc.

Referenced by ATLAS_2011_S9041966::analyze().

int onelept [private]

Definition at line 658 of file ATLAS_2011_S9041966.cc.

int Stvev [private]

Definition at line 671 of file ATLAS_2011_S9041966.cc.

Referenced by ATLAS_2011_S9041966::analyze().

int Stvonelept [private]

Definition at line 667 of file ATLAS_2011_S9041966.cc.

Referenced by ATLAS_2011_S9041966::analyze().

int tmpe [private]

Definition at line 677 of file ATLAS_2011_S9041966.cc.

Referenced by ATLAS_2011_S9041966::analyze().

int tmpmu [private]

Definition at line 678 of file ATLAS_2011_S9041966.cc.

Referenced by ATLAS_2011_S9041966::analyze().

int vetoe [private]

Definition at line 653 of file ATLAS_2011_S9041966.cc.

Referenced by ATLAS_2011_S9041966::analyze().


The documentation for this class was generated from the following file: