14 out <<
"Key_" << std::setw(2) <<
o.theNumber <<
" hwNum " << std::setw(2) <<
o.getHwPatternNumber() <<
" group " 15 << std::setw(2) <<
o.theGroup <<
":" <<
o.theIndexInGroup <<
" : (eta=" <<
o.theEtaCode <<
", pt=" << std::setw(3)
16 <<
o.thePt <<
", charge=" << setw(2) <<
o.theCharge <<
")";
24 myOmtfConfig(omtfConfig),
25 results(
boost::extents[myOmtfConfig->processorCnt()][myOmtfConfig->nTestRefHits()]) {
26 for (
unsigned int iProc = 0; iProc <
results.size(); iProc++) {
27 for (
unsigned int iTestRefHit = 0; iTestRefHit <
results[iProc].size(); iTestRefHit++) {
28 results[iProc][iTestRefHit].init(omtfConfig);
36 for (
unsigned int iProc = 0; iProc <
results.size(); iProc++) {
37 for (
unsigned int iTestRefHit = 0; iTestRefHit <
results[iProc].size(); iTestRefHit++) {
38 results[iProc][iTestRefHit].init(omtfConfig);
48 const std::vector<int>& extrapolatedPhi,
61 phiRefHit = refStub->phiHw;
67 for (
size_t iStub = 0; iStub < layerStubs.size(); iStub++) {
68 const auto& stub = layerStubs[iStub];
72 int hitPhi = stub->phiHw;
75 hitPhi = stub->phiBHw;
81 int phiDist = this->
myOmtfConfig->
foldPhi(hitPhi - extrapolatedPhi[iStub] - phiMean - phiRefHit);
88 int sign = phiDist < 0 ? -1 : 1;
102 pdfVal = this->
pdfValue(iLayer, iRefLayer, 0);
116 return StubResult(0,
false, phiDistMin + pdfMiddle, iLayer, selectedStub);
123 phiDistMin += pdfMiddle;
127 return StubResult(0,
false, phiDistMin, iLayer, selectedStub);
129 return StubResult(pdfVal,
true, phiDistMin, iLayer, selectedStub);
virtual PdfValueType pdfValue(unsigned int iLayer, unsigned int iRefLayer, unsigned int iBin, int refLayerPhiB=0) const =0
bool isNoHitValueInPdf() const
virtual int meanDistPhiValue(unsigned int iLayer, unsigned int iRefLayer, int refLayerPhiB=0) const =0
unsigned int nPhiBins() const
unsigned int nPdfAddrBits() const
resultsArrayType & getResults()
virtual void setConfig(const OMTFConfiguration *omtfConfig)
Abs< T >::type abs(const T &t)
std::vector< MuonStubPtr > MuonStubPtrs1D
virtual void finalise(unsigned int procIndx)
last step of the event processing, before sorting and ghost busting
std::shared_ptr< MuonStub > MuonStubPtr
GoldenPatternBase(const Key &aKey)
unsigned int processorCnt() const
virtual int getDistPhiBitShift(unsigned int iLayer, unsigned int iRefLayer) const =0
unsigned int nTestRefHits() const
virtual StubResult process1Layer1RefLayer(unsigned int iRefLayer, unsigned int iLayer, MuonStubPtrs1D layerStubs, const std::vector< int > &extrapolatedPhi, const MuonStubPtr &refStub)
std::ostream & operator<<(std::ostream &out, const Key &o)
virtual int foldPhi(int phi) const
const OMTFConfiguration * myOmtfConfig
bool isBendingLayer(unsigned int iLayer) const override