00001 #ifndef ATLFAST_PIONMATRIXMANAGER_H 00002 #define ATLFAST_PIONMATRIXMANAGER_H 00003 00004 #include "GaudiKernel/MsgStream.h" 00005 #include "AtlfastAlgs/PionBinData.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 // RMS 26/4/2001 00027 // Modified to use parametrisation provided by 00028 // Armin Nairz 00029 //=========================================================== 00030 00031 00032 00033 namespace Atlfast 00034 { 00035 using std::string; 00036 using std::ifstream; 00037 using std::map; 00038 00044 class PionMatrixManager: public IMatrixManager 00045 { 00046 00047 public: 00048 00050 PionMatrixManager( string, int, MsgStream ); 00051 00053 virtual ~PionMatrixManager(); 00054 00056 vector<double> getVariables( const TrackTrajectory& track, 00057 HepSymMatrix& usedSigma ) const; 00058 00059 00060 private: 00061 00062 MsgStream* m_log; 00063 00065 void initialise(); 00066 void fillVector( ifstream&, vector< vector<double> >&, int ); 00067 void makeHeader(); 00068 00070 IBinData* getBinData( const TrackTrajectory& track ) const; 00071 00073 string m_file; 00074 00076 map<BinID, IBinData*> m_binData; 00077 00079 CorrelatedData* m_correlatedData; 00080 00081 int m_randSeed; 00082 vector<double> m_etaBoundaries; 00083 vector<double> m_rTBoundaries; 00084 int m_nRTBins; 00085 int m_nEtaBins; 00086 00087 }; 00088 00089 } 00090 00091 #endif