00001 #ifndef ATLFAST_BREMMATRIXMANAGER_H 00002 #define ATLFAST_BREMMATRIXMANAGER_H 00003 00004 #include "GaudiKernel/MsgStream.h" 00005 #include "AtlfastAlgs/BremBinData.h" 00006 #include "AtlfastEvent/TrackTrajectory.h" 00007 00008 #include "AtlfastAlgs/BinID.h" 00009 #include "AtlfastUtils/HeaderPrinter.h" 00010 00011 #include <vector> 00012 #include <string> 00013 #include <map> 00014 #include <utility> 00015 00016 //=========================================================== 00017 // 00018 // Matrix Manager 00019 // 00020 // Used by tracksmearer to provide smear matrix data 00021 // corresponding to a given track trajectory 00022 // 00023 //=========================================================== 00024 00025 00026 namespace Atlfast 00027 { 00028 using std::string; 00029 using std::ifstream; 00030 using std::map; 00031 00039 class BremMatrixManager 00040 { 00041 00042 public: 00043 00045 BremMatrixManager( string, int, MsgStream ); 00046 00048 ~BremMatrixManager(); 00049 00051 TrackTrajectory getBremTrack( const TrackTrajectory& track ) const; 00052 00053 00054 private: 00055 00056 MsgStream* m_log; 00057 00059 void initialise(); 00060 void fillVector( ifstream&, vector< vector<double> >&, int ); 00061 void makeHeader(); 00062 00064 BremBinData* getBinData( const TrackTrajectory& track ) const; 00065 00067 string m_file; 00068 00070 map<BinID, BremBinData*> m_binData; 00071 00072 int m_randSeed; 00073 vector<double> m_etaBoundaries; 00074 vector<double> m_rTBoundaries; 00075 int m_nRTBins; 00076 int m_nEtaBins; 00077 00078 }; 00079 00080 } 00081 00082 #endif