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 
00004 namespace Rivet {
00005 
00006 
00007   void DISFinalState::project(const Event& e) {
00008     const DISKinematics& diskin = applyProjection<DISKinematics>(e, "Kinematics");
00009     const LorentzTransform hcmboost = (_boosttype == HCM) ? diskin.boostHCM() : diskin.boostBreit();
00010     const DISLepton& dislep = diskin.applyProjection<DISLepton>(e, "Lepton");
00011     const FinalState& fs = dislep.applyProjection<FinalState>(e, "FS");
00012 
00013     // Fill the particle list with all particles _other_ than the DIS scattered
00014     // lepton, with momenta boosted into the appropriate frame.
00015     _theParticles.clear();
00016     _theParticles.reserve(fs.particles().size()-1);
00017     const GenParticle* dislepGP = dislep.out().genParticle();
00018     foreach (const Particle& p, fs.particles()) {
00019       if (p.genParticle() != dislepGP) { //< Ensure that we skip the DIS lepton
00020         Particle temp(p);
00021         temp.setMomentum(hcmboost.transform(temp.momentum()));
00022         _theParticles.push_back(temp);
00023       }
00024     }
00025   }
00026 
00027 
00028 }