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 namespace Atlfast { 00033 using std::string; 00034 using std::ifstream; 00035 using std::map; 00036 00042 class PionMatrixManager: public IMatrixManager 00043 { 00044 00045 public: 00047 PionMatrixManager(int, MsgStream); 00049 virtual ~PionMatrixManager(); 00051 vector<double> getVariables(const TrackTrajectory& track, 00052 HepMatrix& usedSigma) const; 00053 00054 00055 private: 00056 MsgStream* m_log; 00059 void initialise(); 00060 void fillVector(ifstream&, vector< vector<double> >&, int); 00061 void makeHeader(); 00063 IBinData* getBinData(const TrackTrajectory& track) const; 00065 string m_file; 00067 map<BinID, IBinData*> m_binData; 00069 CorrelatedData* m_correlatedData; 00070 00071 int m_randSeed; 00072 vector<double> m_etaBoundaries; 00073 vector<double> m_rTBoundaries; 00074 int m_nRTBins; 00075 int m_nEtaBins; 00076 00077 }; 00078 00079 } 00080 00081 #endif 00082 00083 00084 00085 00086