00001 #ifndef ATLFAST_MUONMATRIXMANAGER_H
00002 #define ATLFAST_MUONMATRIXMANAGER_H
00003
00004 #include "GaudiKernel/MsgStream.h"
00005 #include "AtlfastAlgs/MuonBinData.h"
00006 #include "AtlfastAlgs/TrackTrajectory.h"
00007 #include "CLHEP/Random/JamesRandom.h"
00008 #include "AtlfastAlgs/IMatrixManager.h"
00009 #include "AtlfastAlgs/BinID.h"
00010 #include "AtlfastAlgs/CorrelatedData.h"
00011 #include "AtlfastUtils/HeaderPrinter.h"
00012
00013
00014 #include <vector>
00015 #include <string>
00016 #include <map>
00017 #include <utility>
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033 namespace Atlfast {
00034 using std::string;
00035 using std::vector;
00036 using std::map;
00037
00043 class MuonMatrixManager: public IMatrixManager{
00044
00045 public:
00046 MuonMatrixManager(string config, int randSeed, MsgStream& log);
00048 virtual ~MuonMatrixManager();
00051 vector<double> getVariables(const TrackTrajectory& track,
00052 HepMatrix&) const;
00053
00054 private:
00056 void initialise();
00057 BinID getBinID(const TrackTrajectory& track) const;
00058 void scale(HepMatrix&) const;
00059 void scale(vector<double>&) const;
00060
00061
00063 string m_file;
00064 string m_config;
00065
00066 CorrelatedData* m_correlatedData;
00067 std::map<BinID, MuonBinData*> m_binData;
00068
00069 double m_pTMin;
00070 double m_etaMin;
00071 double m_etaMax;
00072 int m_nBins;
00073
00074 MsgStream& m_log;
00075
00076 };
00077
00078 }
00079
00080 #endif
00081
00082
00083
00084