00001 #ifndef SimpleTrackSmearer_h
00002 #define SimpleTrackSmearer_h 1
00003
00004 #ifdef USE_CLHEP // only if CLHEP is available !
00005
00006 #include "marlin/IFourVectorSmearer.h"
00007 #include <vector>
00008
00009 #define ELECTRON_MASS 0.0005109989
00010 #define MUON_MASS 0.10565836
00011 #define PION_MASS 0.139570
00012
00013 namespace marlin{
00014
00020 struct TrackResolution {
00021
00022 TrackResolution() :
00023 DPP(0.) ,
00024 ThMin(0.) ,
00025 ThMax(0.) {}
00026
00027 TrackResolution(float dPP, float thMin, float thMax) :
00028 DPP(dPP) ,
00029 ThMin(thMin) ,
00030 ThMax(thMax) {}
00031
00032 float DPP ;
00033 float ThMin ;
00034 float ThMax ;
00035
00036 } ;
00037
00038
00049 class SimpleTrackSmearer : public IFourVectorSmearer {
00050
00051 typedef std::vector<TrackResolution> ResVec ;
00052
00053 public:
00054
00055 SimpleTrackSmearer(const std::vector<float>& resVec ) ;
00056
00057
00059 virtual ~SimpleTrackSmearer() {}
00060
00065 virtual HepLorentzVector smearedFourVector( const HepLorentzVector& v, int pdgCode ) ;
00066
00067 protected:
00068
00069 ResVec _resVec ;
00070
00071 } ;
00072
00073
00074
00075 }
00076
00077 #endif // ifdef CLHEP
00078 #endif
00079
00080
00081