00001 #ifndef Muon_MATRIX_MANAGER
00002 #define Muon_MATRIX_MANAGER 1
00003
00004 #include "GaudiKernel/MsgStream.h"
00005 #include "AtlfastCode/MuonBinData.h"
00006 #include "AtlfastCode/TrackTrajectory.h"
00007 #include "CLHEP/Random/JamesRandom.h"
00008 #include "AtlfastCode/IMatrixManager.h"
00009 #include "AtlfastCode/BinID.h"
00010 #include "AtlfastCode/CorrelatedData.h"
00011 #include "AtlfastCode/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
00040 class MuonMatrixManager: public IMatrixManager
00041 {
00042
00043 public:
00044 MuonMatrixManager(string config, int randSeed, MsgStream log);
00046 virtual ~MuonMatrixManager();
00048 vector<double> getVariables(const TrackTrajectory& track, HepMatrix&) const;
00049
00050 private:
00053 void initialise();
00055 BinID getBinID(const TrackTrajectory& track) const;
00057 string m_file;
00059 string m_config;
00060
00061
00062 CorrelatedData* m_correlatedData;
00064 map<const BinID,MuonBinData*> m_binData;
00065
00066 void scale(HepMatrix&) const;
00067 void scale(vector<double>&) const;
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