00001 // ISmearer Class 00002 // 00003 // Namespace Atlfast:: 00004 // 00005 //-------------------------------------------------------- 00006 // 00007 // This pure Abstract Base Class defines the interface 00008 // for Atlfast smearer objects. 00009 // 00010 // A smearer object provides a single public service, 00011 // returning a smeared four-vector given an input four-vector, 00012 // so this interface is particularly simple for the moment. 00013 // (So simple that it might even prove unnecessary in the end!) 00014 // 00015 // 00016 // Note in passing that we hope that smearers can be 00017 // made into Gaudi "Tools" or whatever the Athena 00018 // equivalent turns out to be. So this interface is rather 00019 // provisional and will probably be extended at that time 00020 // This will allow reading of parameters via jobOptions etc. 00021 // 00022 // 00023 // 00024 // Authors: H.T.Phillips, P. Clarke, E. Richter-Was, P. Sherwood, R. Steward 00025 // 00026 // 00027 00028 #ifndef ATLFAST_ISMEARER_H 00029 #define ATLFAST_ISMEARER_H 00030 00031 //cct: needed this so as to use stl vectors 00032 #include <vector> 00033 00034 #include "CLHEP/Vector/LorentzVector.h" 00035 #include "HepMC/GenParticle.h" 00036 00037 namespace Atlfast { 00038 00040 class ISmearer { 00041 public: 00042 00044 virtual HepLorentzVector smear( const HepMC::GenParticle& ) = 0; 00046 virtual HepLorentzVector smear( const HepLorentzVector& ) = 0; 00047 00049 virtual int setSmearParameters( const std::vector<double>& )= 0; 00051 virtual int setSmearParamSchema( const int ) =0; 00052 00054 virtual ~ISmearer(){} 00055 00056 }; 00057 00058 00059 } // end of namespace bracket 00060 00061 #endif 00062 00063 00064