IdentifiedFinalState.cc
Go to the documentation of this file.
00001 // -*- C++ -*- 00002 #include "Rivet/Rivet.hh" 00003 #include "Rivet/Projections/IdentifiedFinalState.hh" 00004 #include "Rivet/Cmp.hh" 00005 #include "Rivet/Tools/Utils.hh" 00006 #include <algorithm> 00007 00008 namespace Rivet { 00009 00010 00011 IdentifiedFinalState::IdentifiedFinalState(const FinalState& fsp) { 00012 setName("IdentifiedFinalState"); 00013 addProjection(fsp, "FS"); 00014 } 00015 00016 00017 IdentifiedFinalState::IdentifiedFinalState(double etamin, double etamax, double ptMin) 00018 : FinalState(etamin, etamax, ptMin) 00019 { 00020 setName("IdentifiedFinalState"); 00021 addProjection(FinalState(etamin, etamax, ptMin), "FS"); 00022 } 00023 00024 00025 IdentifiedFinalState::IdentifiedFinalState(const vector<pair<double, double> >& etaRanges, 00026 double ptMin) 00027 : FinalState(etaRanges, ptMin) 00028 { 00029 setName("IdentifiedFinalState"); 00030 addProjection(FinalState(etaRanges, ptMin), "FS"); 00031 } 00032 00033 00034 int IdentifiedFinalState::compare(const Projection& p) const { 00035 const PCmp fscmp = mkNamedPCmp(p, "FS"); 00036 if (fscmp != EQUIVALENT) return fscmp; 00037 00038 const IdentifiedFinalState& other = dynamic_cast<const IdentifiedFinalState&>(p); 00039 int pidssize = cmp(_pids.size(), other._pids.size()); 00040 if (pidssize != EQUIVALENT) return pidssize; 00041 return cmp(_pids, other._pids); 00042 } 00043 00044 00045 void IdentifiedFinalState::project(const Event& e) { 00046 const FinalState& fs = applyProjection<FinalState>(e, "FS"); 00047 _theParticles.clear(); 00048 _theParticles.reserve(fs.particles().size()); 00049 foreach (const Particle& p, fs.particles()) { 00050 if (acceptedIds().find(p.pdgId()) != acceptedIds().end()) { 00051 _theParticles.push_back(p); 00052 } 00053 } 00054 } 00055 00056 00057 } Generated on Fri Dec 21 2012 15:03:40 for The Rivet MC analysis system by ![]() |