IdentifiedFinalState.cc
Go to the documentation of this file.
00001 // -*- C++ -*- 00002 #include "Rivet/Projections/IdentifiedFinalState.hh" 00003 00004 namespace Rivet { 00005 00006 00007 IdentifiedFinalState::IdentifiedFinalState(const FinalState& fsp, const vector<PdgId>& pids) { 00008 setName("IdentifiedFinalState"); 00009 addProjection(fsp, "FS"); 00010 acceptIds(pids); 00011 } 00012 00013 IdentifiedFinalState::IdentifiedFinalState(const vector<PdgId>& pids, const FinalState& fsp) { 00014 setName("IdentifiedFinalState"); 00015 addProjection(fsp, "FS"); 00016 acceptIds(pids); 00017 } 00018 00019 IdentifiedFinalState::IdentifiedFinalState(const FinalState& fsp, PdgId pid) { 00020 setName("IdentifiedFinalState"); 00021 addProjection(fsp, "FS"); 00022 acceptId(pid); 00023 } 00024 00025 IdentifiedFinalState::IdentifiedFinalState(PdgId pid, const FinalState& fsp) { 00026 setName("IdentifiedFinalState"); 00027 addProjection(fsp, "FS"); 00028 acceptId(pid); 00029 } 00030 00031 00032 IdentifiedFinalState::IdentifiedFinalState(const Cut& c, const vector<PdgId>& pids) { 00033 setName("IdentifiedFinalState"); 00034 addProjection(FinalState(c), "FS"); 00035 acceptIds(pids); 00036 } 00037 00038 IdentifiedFinalState::IdentifiedFinalState(const vector<PdgId>& pids, const Cut& c) { 00039 setName("IdentifiedFinalState"); 00040 addProjection(FinalState(c), "FS"); 00041 acceptIds(pids); 00042 } 00043 00044 IdentifiedFinalState::IdentifiedFinalState(const Cut& c, PdgId pid) { 00045 setName("IdentifiedFinalState"); 00046 addProjection(FinalState(c), "FS"); 00047 acceptId(pid); 00048 } 00049 00050 IdentifiedFinalState::IdentifiedFinalState(PdgId pid, const Cut& c) { 00051 setName("IdentifiedFinalState"); 00052 addProjection(FinalState(c), "FS"); 00053 acceptId(pid); 00054 } 00055 00056 00057 IdentifiedFinalState::IdentifiedFinalState(double etamin, double etamax, double ptMin) 00058 // : FinalState(etamin, etamax, ptMin) 00059 { 00060 setName("IdentifiedFinalState"); 00061 addProjection(FinalState(etamin, etamax, ptMin), "FS"); 00062 } 00063 00064 00065 00066 int IdentifiedFinalState::compare(const Projection& p) const { 00067 const PCmp fscmp = mkNamedPCmp(p, "FS"); 00068 if (fscmp != EQUIVALENT) return fscmp; 00069 00070 const IdentifiedFinalState& other = dynamic_cast<const IdentifiedFinalState&>(p); 00071 int pidssize = cmp(_pids.size(), other._pids.size()); 00072 if (pidssize != EQUIVALENT) return pidssize; 00073 return cmp(_pids, other._pids); 00074 } 00075 00076 00077 void IdentifiedFinalState::project(const Event& e) { 00078 const FinalState& fs = applyProjection<FinalState>(e, "FS"); 00079 _theParticles.clear(); 00080 _theParticles.reserve(fs.particles().size()); 00081 _remainingParticles.clear(); 00082 _remainingParticles.reserve(fs.particles().size()); 00083 foreach (const Particle& p, fs.particles()) { 00084 if (acceptedIds().find(p.pid()) != acceptedIds().end()) { 00085 _theParticles.push_back(p); // Identified 00086 } 00087 else { 00088 _remainingParticles.push_back(p); // Remaining 00089 } 00090 } 00091 } 00092 00093 00094 } Generated on Wed Oct 7 2015 12:09:13 for The Rivet MC analysis system by ![]() |