#include <LeptonMatrixManager.h>
Inheritance diagram for Atlfast::LeptonMatrixManager:
Public Methods | |
LeptonMatrixManager (string config, int randSeed, MsgStream &log) | |
virtual | ~LeptonMatrixManager () |
Default Destructor. | |
virtual vector< double > | getVariables (const TrackTrajectory &track, HepMatrix &) const |
returns smear variables and correlation matrix corresponding to given track trajectory | |
Private Methods | |
void | initialise () |
methods | |
IBinData * | getBinData (const TrackTrajectory &track) const |
void | scale (HepMatrix &) const |
void | scale (vector< double > &) const |
Private Attributes | |
string | m_file |
variables | |
string | m_config |
name of flat file containing smear matrix data. | |
CorrelatedData * | m_correlatedData |
std::map< BinID, IBinData * > | m_binData |
double | m_pTMin |
double | m_etaMin |
double | m_etaMax |
int | m_nBins |
MsgStream & | m_log |
It reads a flat file containing smear matrix data and creates a BinData object for every eta/phi/pt bin.
Definition at line 45 of file LeptonMatrixManager.h.
|
Definition at line 15 of file LeptonMatrixManager.cxx. References initialise(), m_config, m_correlatedData, m_file, and m_log.
00016 : 00017 m_config(config), m_log(log){ 00018 m_file = "Atlfast_id_resol_mu_"; 00019 m_file.append(config); 00020 m_file.append(".dat"); 00021 m_correlatedData = new CorrelatedData(randSeed); 00022 this->initialise(); 00023 m_log << MSG::INFO << "Constructed LeptonMatrixManager with configuration " 00024 << m_config <<endreq; 00025 } |
|
Default Destructor.
Definition at line 32 of file LeptonMatrixManager.cxx. References m_binData.
|
|
returns smear variables and correlation matrix corresponding to given track trajectory
Implements Atlfast::IMatrixManager. Reimplemented in Atlfast::ElectronMatrixManager. Definition at line 159 of file LeptonMatrixManager.cxx. References Atlfast::CorrelatedData::generate(), getBinData(), Atlfast::IBinData::getMatrix(), m_correlatedData, Atlfast::CorrelatedData::root(), and scale().
00160 { 00161 vector<double> variables; 00162 HepMatrix sigma; 00163 IBinData* binData = getBinData(track); 00164 sigma = binData->getMatrix(track); 00165 // do Dcorset and Dcorgen to get smear parameters 00166 00167 variables = m_correlatedData->generate(m_correlatedData->root(sigma)); 00168 scale(sigma); 00169 returnSigma = sigma; 00170 scale(variables); 00171 return variables; 00172 } |
|
methods
Definition at line 46 of file LeptonMatrixManager.cxx. References m_binData, m_config, m_file, and m_log. Referenced by LeptonMatrixManager().
00046 { 00047 // open file 00048 ifstream input; 00049 input.open( m_file.c_str() ); 00050 if (input) { 00051 m_log << MSG::INFO 00052 << "LeptonMatrixManager: file " 00053 << m_file 00054 << " open." 00055 << endreq; 00056 00057 double data; 00058 int nEtaVals; 00059 int nPTVals; 00060 00061 // prepare containers 00062 vector<double> etaBins; 00063 vector<double> pTBins; 00064 00065 // the are four correlations between the 5 variables 00066 vector< pair<double,double> > correlOrder; 00067 correlOrder.push_back(pair<double,double>(3,5)); // phi / pt 00068 correlOrder.push_back(pair<double,double>(1,5)); // d0 / pt 00069 correlOrder.push_back(pair<double,double>(1,3)); // d0 / phi 00070 correlOrder.push_back(pair<double,double>(2,4)); // z0 / cotTheta 00071 00072 00073 // read eta and phi values and store them 00074 input >> nEtaVals; 00075 for (int i=0; i < nEtaVals; i++) { 00076 input >> data; 00077 etaBins.push_back(data); 00078 } 00079 00080 input >> nPTVals; 00081 for (int i=0; i < nPTVals; i++) { 00082 input >> data; 00083 pTBins.push_back(data); 00084 } 00085 00086 //======================================== 00087 // make 9 resolution parameters for matrix 00088 HepMatrix etaPMatrix(nEtaVals, nPTVals,0); 00089 //stores nine parameters for each eta/pt bin: 00090 vector<HepMatrix> resParameters(9, etaPMatrix); 00091 00092 // read sigmas and correlations 00093 for (int iEta=0; iEta < nEtaVals; iEta++) { 00094 for (int iPT=0; iPT < nPTVals; iPT++) { 00095 //sigmas (diagonals) 00096 for (int i = 0; i < 5; i++) { 00097 input >> data; 00098 resParameters[i][iEta][iPT] = data*data; 00099 } 00100 // correlations 00101 vector< pair<double,double> >::iterator iOrder = correlOrder.begin(); 00102 for (int i = 5; i < 9; i++) { 00103 input >> data; 00104 resParameters[i][iEta][iPT] = 00105 data * sqrt(resParameters[(iOrder->first)-1][iEta][iPT]) * 00106 sqrt(resParameters[(iOrder->second)-1][iEta][iPT]); 00107 iOrder++; 00108 } 00109 } 00110 }// end of make =========================== 00111 00112 00113 // make bins 00114 HepMatrix twoSquare(2,2,0); 00115 vector<HepMatrix> interpol(9, twoSquare); 00116 double iBin = 0; 00117 00118 for (int iEta = 0; iEta < (nEtaVals-1); iEta++) { 00119 for (int iPT = 0; iPT < (nPTVals-1); iPT++) { 00120 00121 for (int i=0; i<9; i++) { 00122 interpol[i] = resParameters[i].sub(iEta+1,iEta+2,iPT+1, iPT+2); 00123 } 00124 00125 BinID id(iBin, etaBins[iEta], etaBins[iEta+1], 00126 pTBins[iPT], pTBins[iPT+1]); 00127 // make bin 00128 IBinData* binData = new LeptonBinData(id, interpol); 00129 // enter bin data into map 00130 m_binData[id] = binData; 00131 iBin++; 00132 } 00133 } 00134 HeaderPrinter hp("Atlfast LeptonTrack Smearer:", m_log); 00135 hp.add("Data file ", m_file); 00136 hp.add("configuration ", m_config); 00137 hp.add("Number of Eta Bins ", nEtaVals-1); 00138 hp.add("Eta Min ", etaBins.front()); 00139 hp.add("Eta Max ", etaBins.back()); 00140 hp.add("Number of Pt Bins ", nPTVals-1); 00141 hp.add("pT Min ", pTBins.front()); 00142 hp.add("pT Max ", pTBins.back()); 00143 hp.print(); 00144 00145 }else{ 00146 m_log << MSG::WARNING 00147 << "LeptonMatrixManager: no data file ( " 00148 <<m_file<<" )!!!!" 00149 << endreq; 00150 } 00151 00152 } |
|
Definition at line 202 of file LeptonMatrixManager.cxx. References m_binData. Referenced by getVariables().
00202 { 00203 00204 TrackParameters traj = track.parameters(); 00205 vector<double> etaPT; 00206 double eta = abs( traj.eta() ) ; 00207 double pT= abs( traj.pT() ); 00208 00209 // validity check 00210 double etaLow = ( (m_binData.begin())->first ).low(0); 00211 double etaHigh = ( (m_binData.rbegin())->first ).high(0); 00212 double pTLow = ( (m_binData.begin())->first ).low(1); 00213 double pTHigh = ( (m_binData.rbegin())->first ).high(1); 00214 if ( eta < etaLow ) eta = etaLow; 00215 if ( eta > etaHigh) eta = etaHigh; 00216 if ( pT < pTLow ) pT = pTLow; 00217 if ( pT > pTHigh) pT = pTHigh; 00218 00219 // find BinID 00220 etaPT.push_back( eta ); 00221 etaPT.push_back( pT ); 00222 00223 map<BinID, IBinData*>::const_iterator binIter = m_binData.begin(); 00224 map<BinID, IBinData*>::const_iterator binEnd = m_binData.end(); 00225 00226 for (; binIter != binEnd; ++binIter){ 00227 if (binIter->first.isInBin(etaPT)) return binIter->second; 00228 } 00229 // OOPS! couldn't fin bin 00230 cout << "WARNING: LeptonMatrixManager - No bin; eta "<< eta <<", pT "<<pT<<endl; 00231 return (m_binData.begin())->second; 00232 } |
|
Definition at line 177 of file LeptonMatrixManager.cxx. Referenced by getVariables().
00177 { 00178 sigma(1,1) /= 1e8; 00179 sigma(2,2) /= 1e8; 00180 sigma(3,3) /= 1e6; 00181 sigma(4,4) /= 1e6; 00182 sigma(5,5) /= 1e6; 00183 sigma(1,3) = sigma(3,1) /= 1e7; 00184 sigma(1,5) = sigma(5,1) /= 1e7; 00185 sigma(2,4) = sigma(4,2) /= 1e7; 00186 sigma(3,5) = sigma(5,3) /= 1e6; 00187 } |
|
Definition at line 189 of file LeptonMatrixManager.cxx.
00189 { 00190 variables[0] /= 1e4; 00191 variables[1] /= 1e4; 00192 variables[2] /= 1e3; 00193 variables[3] /= 1e3; 00194 variables[4] /= 1e3; 00195 } |
|
variables
Definition at line 65 of file LeptonMatrixManager.h. Referenced by initialise(), and LeptonMatrixManager(). |
|
name of flat file containing smear matrix data.
Definition at line 66 of file LeptonMatrixManager.h. Referenced by initialise(), and LeptonMatrixManager(). |
|
Definition at line 68 of file LeptonMatrixManager.h. Referenced by getVariables(), and LeptonMatrixManager(). |
|
Definition at line 69 of file LeptonMatrixManager.h. Referenced by getBinData(), initialise(), and ~LeptonMatrixManager(). |
|
Definition at line 71 of file LeptonMatrixManager.h. |
|
Definition at line 72 of file LeptonMatrixManager.h. |
|
Definition at line 73 of file LeptonMatrixManager.h. |
|
Definition at line 74 of file LeptonMatrixManager.h. |
|
Reimplemented in Atlfast::ElectronMatrixManager. Definition at line 75 of file LeptonMatrixManager.h. Referenced by initialise(), and LeptonMatrixManager(). |