00001 #ifndef ATLFAST_MUONMATRIXMANAGER_H 00002 #define ATLFAST_MUONMATRIXMANAGER_H 00003 00004 #include "GaudiKernel/MsgStream.h" 00005 #include "AtlfastAlgs/MuonBinData.h" 00006 #include "AtlfastEvent/TrackTrajectory.h" 00007 00008 #include "AtlfastAlgs/IMatrixManager.h" 00009 #include "AtlfastAlgs/BinID.h" 00010 #include "AtlfastAlgs/CorrelatedData.h" 00011 #include "AtlfastUtils/HeaderPrinter.h" 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 00027 00028 namespace Atlfast 00029 { 00030 using std::string; 00031 using std::ifstream; 00032 using std::map; 00033 00039 class MuonMatrixManager: public IMatrixManager 00040 { 00041 00042 public: 00043 00045 MuonMatrixManager( string, int, MsgStream ); 00046 00048 virtual ~MuonMatrixManager(); 00049 00051 vector<double> getVariables( const TrackTrajectory& track, 00052 HepSymMatrix& usedSigma ) const; 00053 00054 00055 private: 00056 00057 MsgStream* m_log; 00058 00060 void initialise(); 00061 void fillVector( ifstream&, vector< vector<double> >&, int ); 00062 void makeHeader(); 00063 00065 IBinData* getBinData( const TrackTrajectory& track ) const; 00066 00068 string m_file; 00069 00071 map<BinID, IBinData*> m_binData; 00072 00074 CorrelatedData* m_correlatedData; 00075 00076 int m_randSeed; 00077 vector<double> m_etaBoundaries; 00078 vector<double> m_rTBoundaries; 00079 int m_nRTBins; 00080 int m_nEtaBins; 00081 00082 }; 00083 00084 } 00085 00086 #endif 00087