00001 #ifndef ATLFAST_PIONMATRIXMANAGER_H
00002 #define ATLFAST_PIONMATRIXMANAGER_H
00003
00004 #include "GaudiKernel/MsgStream.h"
00005 #include "AtlfastAlgs/PionBinData.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 #include <vector>
00014 #include <string>
00015 #include <map>
00016 #include <utility>
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
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 BinID getBinID(const TrackTrajectory& track) const;
00065 string m_file;
00067 map<BinID, PionBinData*> m_binData;
00069 CorrelatedData* m_correlatedData;
00071 HepRandomEngine* m_randomEngine;
00072
00073 vector<double> m_etaBoundaries;
00074 vector<double> m_rTBoundaries;
00075 int m_nRTBins;
00076 int m_nEtaBins;
00077
00078 };
00079
00080 }
00081
00082 #endif
00083
00084
00085
00086
00087