00001 #ifndef ATLFAST_LEPTONMATRIXMANAGER_H 00002 #define ATLFAST_LEPTONMATRIXMANAGER_H 00003 00004 #include "GaudiKernel/MsgStream.h" 00005 #include "AtlfastEvent/TrackTrajectory.h" 00006 #include "CLHEP/Random/JamesRandom.h" 00007 00008 #include "AtlfastAlgs/IMatrixManager.h" 00009 #include "AtlfastAlgs/BinID.h" 00010 #include "AtlfastUtils/HeaderPrinter.h" 00011 00012 00013 #include <vector> 00014 #include <string> 00015 #include <map> 00016 #include <utility> 00017 00018 //=========================================================== 00019 // 00020 // Matrix Manager 00021 // 00022 // Used by tracksmearer to provide smear matrix data 00023 // corresponding to a given track trajectory 00024 // 00025 //=========================================================== 00026 // RMS 26/4/2001 00027 // Modified to use parametrisation provided by 00028 // Armin Nairz 00029 //=========================================================== 00030 00031 00032 namespace Atlfast { 00033 using std::string; 00034 using std::vector; 00035 using std::map; 00036 00037 class CorrelatedData; 00038 class IBinData; 00039 00045 class LeptonMatrixManager: public IMatrixManager{ 00046 00047 public: 00048 LeptonMatrixManager(string config, int randSeed, MsgStream& log); 00050 virtual ~LeptonMatrixManager(); 00053 virtual vector<double> getVariables(const TrackTrajectory& track, 00054 HepMatrix&) const; 00055 00056 private: 00058 void initialise(); 00059 IBinData* getBinData(const TrackTrajectory& track) const; 00060 void scale(HepMatrix&) const; 00061 void scale(vector<double>&) const; 00062 00063 00065 string m_file; 00066 string m_config; 00067 00068 CorrelatedData* m_correlatedData; 00069 std::map<BinID, IBinData*> m_binData; 00070 00071 double m_pTMin; 00072 double m_etaMin; 00073 double m_etaMax; 00074 int m_nBins; 00075 MsgStream& m_log; 00076 00077 }; 00078 00079 } 00080 00081 #endif 00082 00083 00084 00085