00001 #ifndef ATLFAST_ELECTRONMATRIXMANAGER_H 00002 #define ATLFAST_ELECTRONMATRIXMANAGER_H 00003 00004 #include "GaudiKernel/MsgStream.h" 00005 #include "AtlfastAlgs/ElectronBinData.h" 00006 #include "AtlfastEvent/TrackTrajectory.h" 00007 00008 #include "AtlfastAlgs/IMatrixManager.h" 00009 #include "AtlfastAlgs/BremMatrixManager.h" 00010 #include "AtlfastAlgs/BinID.h" 00011 #include "AtlfastAlgs/CorrelatedData.h" 00012 #include "AtlfastUtils/HeaderPrinter.h" 00013 00014 #include <vector> 00015 #include <string> 00016 #include <map> 00017 #include <utility> 00018 00019 //=========================================================== 00020 // 00021 // Matrix Manager 00022 // 00023 // Used by tracksmearer to provide smear matrix data 00024 // corresponding to a given track trajectory 00025 // 00026 //=========================================================== 00027 00028 00029 namespace Atlfast 00030 { 00031 using std::string; 00032 using std::ifstream; 00033 using std::map; 00034 00040 class ElectronMatrixManager: public IMatrixManager 00041 { 00042 00043 public: 00044 00046 ElectronMatrixManager( string, string, int, MsgStream ); 00047 00049 virtual ~ElectronMatrixManager(); 00050 00052 vector<double> getVariables( const TrackTrajectory& track, 00053 HepSymMatrix& usedSigma ) const; 00054 00055 00056 private: 00057 00058 MsgStream* m_log; 00059 00061 void initialise(); 00062 void fillVector( ifstream&, vector< vector<double> >&, int ); 00063 void makeHeader(); 00064 00066 IBinData* getBinData( const TrackTrajectory& track ) const; 00067 00069 string m_bremParamFile, m_smearParamFile; 00070 00072 BremMatrixManager* m_bremMgr; 00073 00075 map<BinID, IBinData*> m_binData; 00076 00078 CorrelatedData* m_correlatedData; 00079 00080 int m_randSeed; 00081 vector<double> m_etaBoundaries; 00082 vector<double> m_rTBoundaries; 00083 int m_nRTBins; 00084 int m_nEtaBins; 00085 00086 }; 00087 00088 } 00089 00090 #endif