00001 #ifndef SimpleClusterSmearer_h
00002 #define SimpleClusterSmearer_h 1
00003
00004 #ifdef USE_CLHEP // only if CLHEP is available !
00005
00006 #include "marlin/IFourVectorSmearer.h"
00007 #include <vector>
00008
00009 namespace marlin{
00010
00016 struct ClusterResolution {
00017
00018 ClusterResolution() :
00019 A(0.) ,
00020 B(0.) ,
00021 ThMin(0.) ,
00022 ThMax(0.) {}
00023
00024 ClusterResolution(float a, float b, float thMin, float thMax) :
00025 A(a) ,
00026 B(b) ,
00027 ThMin(thMin) ,
00028 ThMax(thMax) {}
00029
00030 float A ;
00031 float B ;
00032 float ThMin ;
00033 float ThMax ;
00034
00035 } ;
00036
00045 class SimpleClusterSmearer : public IFourVectorSmearer {
00046
00047
00048 typedef std::vector<ClusterResolution> ResVec ;
00049
00050 public:
00051
00052 SimpleClusterSmearer(const std::vector<float>& resVec ) ;
00053
00054
00056 virtual ~SimpleClusterSmearer() {}
00057
00062 virtual HepLorentzVector smearedFourVector( const HepLorentzVector& v, int pdgCode ) ;
00063
00064 protected:
00065
00066 ResVec _resVec ;
00067
00068 } ;
00069
00070
00071
00072 }
00073
00074 #endif // ifdef CLHEP
00075 #endif
00076
00077
00078