rivet is hosted by Hepforge, IPPP Durham
DISFinalState.cc
Go to the documentation of this file.
00001 // -*- C++ -*-
00002 #include "Rivet/Projections/DISFinalState.hh"
00003 #include "Rivet/Cmp.hh"
00004 
00005 namespace Rivet {
00006 
00007 
00008   void DISFinalState::project(const Event& e) {
00009     const DISKinematics& diskin = applyProjection<DISKinematics>(e, "Kinematics");
00010     const LorentzTransform hcmboost = (_boosttype == HCM) ? diskin.boostHCM() : diskin.boostBreit();
00011     const DISLepton& dislep = diskin.applyProjection<DISLepton>(e, "Lepton");
00012     const FinalState& fs = dislep.applyProjection<FinalState>(e, "FS");
00013 
00014     // Fill the particle list with all particles _other_ than the DIS scattered
00015     // lepton, with momenta boosted into the appropriate frame.
00016     _theParticles.clear();
00017     _theParticles.reserve(fs.particles().size()-1);
00018     const GenParticle& dislepGP = dislep.out().genParticle();
00019     foreach (const Particle& p, fs.particles()) {
00020       if (&p.genParticle() != &dislepGP) { //< Ensure that we skip the DIS lepton
00021         Particle temp(p);
00022         temp.setMomentum(hcmboost.transform(temp.momentum()));
00023         _theParticles.push_back(temp);
00024       }
00025     }
00026   }
00027 
00028 
00029 }