Rivet
1.8.0
|
00001 // -*- C++ -*- 00002 #ifndef RIVET_SVertex_HH 00003 #define RIVET_SVertex_HH 00004 00005 #include "Rivet/Rivet.hh" 00006 #include "Rivet/Projection.hh" 00007 #include "Rivet/Projections/PVertex.hh" 00008 #include "Rivet/Projections/ChargedFinalState.hh" 00009 #include "Rivet/Event.hh" 00010 00011 namespace Rivet { 00012 00013 00040 class SVertex : public Projection { 00041 public: 00042 00044 00045 00046 00047 SVertex(const ChargedFinalState& chfs, 00048 const vector<FourMomentum>& jetaxes, double deltaR, 00049 double detEta, double IPres, double DLS, double DLSres=0.0) 00050 : _jetaxes(jetaxes), _deltaR(deltaR), 00051 _detEta(detEta), _IPres(IPres), _DLS(DLS), 00052 _DLSres(DLSres) 00053 { 00054 setName("SVertex"); 00055 addProjection(PVertex(), "PV"); 00056 addProjection(chfs, "FS"); 00057 if (_DLSres == 0.0) { 00058 _DLSres = _IPres; 00059 } 00060 } 00061 00063 virtual const Projection* clone() const { 00064 return new SVertex(*this); 00065 } 00067 00068 00069 public: 00071 const vector<FourMomentum>& getTaggedJets() const { 00072 return _taggedjets; 00073 } 00074 00075 protected: 00076 00078 void project(const Event& e); 00079 00081 int compare(const Projection& p) const; 00082 00083 private: 00084 00086 const vector<FourMomentum>& _jetaxes; 00087 00089 double _deltaR; 00090 00093 //bool (*_applyVtxTrackCuts) (const ParticleVector&, const Vector3&, FourMomentum); 00094 bool _applyVtxTrackCuts(const ParticleVector&, const Vector3&, FourMomentum); 00095 00097 double _detEta; 00098 00100 double _IPres; 00101 00103 double _DLS; 00104 00106 double _DLSres; 00107 00109 vector<FourMomentum> _taggedjets; 00110 }; 00111 00112 } 00113 00114 #endif