00001 #ifndef ATLFAST_BREMFITTER_H
00002 #define ATLFAST_BREMFITTER_H
00003
00004 #include <vector>
00005 #include <fstream>
00006 #include "AtlfastEvent/TrackTrajectory.h"
00007 #include "AtlfastAlgs/Displacement.h"
00008 #include "AtlfastAlgs/BremEtaBin.h"
00009 #include "GaudiKernel/MsgStream.h"
00010
00011 class HepJamesRandom;
00012
00013 namespace Atlfast {
00014
00015 class CorrelatedData;
00016
00017 class BremFitter{
00018
00019 public:
00020 BremFitter(int, MsgStream&);
00021 ~BremFitter() {
00022
00023 }
00024 TrackTrajectory doBremFit(const TrackTrajectory&) const;
00025 private:
00026
00027 Displacement m_d0Disp;
00028 Displacement m_phiDisp;
00029
00030 string m_file;
00031
00032 int m_nRBins, m_nEtaBins, m_nPBins;
00033 double m_rMin, m_rMax;
00034 double m_pMin, m_pMax;
00035 double m_p1scal, m_p2scal;
00036 double m_etaExtent;
00037 vector<BremEtaBin*> m_pTDistEtaBins;
00038
00039
00040 CorrelatedData* m_correlatedData;
00041 HepJamesRandom* m_randomEngine;
00042
00043
00044
00045 double scaleDPhi(int iEta,double random, double pT, double old,
00046 const Displacement& axis,
00047 double deltaP) const;
00048
00049 void readSingleParameter(MsgStream&, string, ifstream&, int& parameter);
00050 void readSingleParameter(MsgStream&, string, ifstream&, double& parameter);
00051 void readDisplacements(MsgStream&, ifstream&, vector<double> bremValues);
00052 double scalePT(double pT, double pscale) const;
00053
00054 };
00055
00056 }
00057
00058 #endif