CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
List of all members | Public Types | Public Member Functions | Private Member Functions | Private Attributes
OMTFProcessor Class Reference

#include <OMTFProcessor.h>

Public Types

typedef std::map< Key, OMTFResultresultsMap
 

Public Member Functions

void averagePatterns (int charge)
 
bool configure (const OMTFConfiguration *omtfParams, const L1TMuonOverlapParams *omtfPatterns)
 Fill GP map with patterns from CondFormats object. More...
 
void fillCounts (unsigned int iProcessor, const OMTFinput &aInput, const SimTrack *aSimMuon)
 
const std::map< Key,
GoldenPattern * > & 
getPatterns () const
 Return map of GoldenPatterns. More...
 
 OMTFProcessor ()
 
const std::vector
< OMTFProcessor::resultsMap > & 
processInput (unsigned int iProcessor, const OMTFinput &aInput)
 
 ~OMTFProcessor ()
 

Private Member Functions

bool addGP (GoldenPattern *aGP)
 
void fillInputRange (unsigned int iProcessor, unsigned int iCone, const OMTFinput &aInput)
 
void fillInputRange (unsigned int iProcessor, unsigned int iCone, unsigned int iRefLayer, unsigned int iHit)
 
void resetConfiguration ()
 Reset all configuration parameters. More...
 
OMTFinput::vector1D restrictInput (unsigned int iProcessor, unsigned int iCone, unsigned int iLayer, const OMTFinput::vector1D &layerHits)
 
void shiftGP (GoldenPattern *aGP, const GoldenPattern::vector2D &meanDistPhiNew, const GoldenPattern::vector2D &meanDistPhiOld)
 

Private Attributes

const OMTFConfigurationmyOmtfConfig
 
std::vector
< OMTFProcessor::resultsMap
myResults
 
std::map< Key, GoldenPattern * > theGPs
 Map holding Golden Patterns. More...
 

Detailed Description

Definition at line 20 of file OMTFProcessor.h.

Member Typedef Documentation

Definition at line 24 of file OMTFProcessor.h.

Constructor & Destructor Documentation

OMTFProcessor::OMTFProcessor ( )
inline

Definition at line 26 of file OMTFProcessor.h.

26 {};
OMTFProcessor::~OMTFProcessor ( )

Definition at line 22 of file OMTFProcessor.cc.

References theGPs.

22  {
23 
24  for(auto it: theGPs) delete it.second;
25 
26 }
std::map< Key, GoldenPattern * > theGPs
Map holding Golden Patterns.
Definition: OMTFProcessor.h:89

Member Function Documentation

bool OMTFProcessor::addGP ( GoldenPattern aGP)
private

Add GoldenPattern to pattern map. If GP key already exists in map, a new entry is ignored

Definition at line 97 of file OMTFProcessor.cc.

References OMTFResult::configure(), Exception, GoldenPattern::key(), myOmtfConfig, myResults, and theGPs.

Referenced by configure().

97  {
98 
99  if(theGPs.find(aGP->key())!=theGPs.end()){
100  throw cms::Exception("Corrupted Golden Patterns data")
101  <<"OMTFProcessor::addGP(...) "
102  <<" Reading two Golden Patterns with the same key: "
103  <<aGP->key()<<std::endl;
104  }
105  else theGPs[aGP->key()] = new GoldenPattern(*aGP);
106 
107  for(auto & itRegion: myResults){
108  OMTFResult aResult;
109  aResult.configure(myOmtfConfig);
110  itRegion[aGP->key()] = aResult;
111  }
112 
113  return true;
114 }
Key key() const
Definition: GoldenPattern.h:60
const OMTFConfiguration * myOmtfConfig
Definition: OMTFProcessor.h:98
std::map< Key, GoldenPattern * > theGPs
Map holding Golden Patterns.
Definition: OMTFProcessor.h:89
void configure(const OMTFConfiguration *omtfConfig)
Definition: OMTFResult.cc:10
std::vector< OMTFProcessor::resultsMap > myResults
Definition: OMTFProcessor.h:94
void OMTFProcessor::averagePatterns ( int  charge)

Average patterns. Use same meanDistPhi for two patterns neighboring in pt code. Averaging is made saparately fo each charge

Previously pt codes were going by steps of 1, now this is not the case

Definition at line 117 of file OMTFProcessor.cc.

References GoldenPattern::getMeanDistPhi(), myOmtfConfig, OMTFConfiguration::nLayers(), OMTFConfiguration::nRefLayers(), GoldenPattern::setMeanDistPhi(), shiftGP(), theGPs, and Key::thePtCode.

Referenced by OMTFPatternMaker::endJob().

117  {
118 
119  Key aKey(0, 9, charge);
120 
121  while(theGPs.find(aKey)!=theGPs.end()){
122 
123  GoldenPattern *aGP1 = theGPs.find(aKey)->second;
124  GoldenPattern *aGP2 = aGP1;
125  GoldenPattern *aGP3 = aGP1;
126  GoldenPattern *aGP4 = aGP1;
127 
128  ++aKey.thePtCode;
129  while(theGPs.find(aKey)==theGPs.end() && aKey.thePtCode<=401) ++aKey.thePtCode;
130  if(aKey.thePtCode<=401 && theGPs.find(aKey)!=theGPs.end()) aGP2 = theGPs.find(aKey)->second;
131 
132  if(aKey.thePtCode>71){
133  ++aKey.thePtCode;
134  while(theGPs.find(aKey)==theGPs.end() && aKey.thePtCode<=401) ++aKey.thePtCode;
135  if(aKey.thePtCode<=401 && theGPs.find(aKey)!=theGPs.end()) aGP3 = theGPs.find(aKey)->second;
136 
137  ++aKey.thePtCode;
138  while(theGPs.find(aKey)==theGPs.end() && aKey.thePtCode<=401) ++aKey.thePtCode;
139  if(aKey.thePtCode<=401 && theGPs.find(aKey)!=theGPs.end()) aGP4 = theGPs.find(aKey)->second;
140  }
141  else{
142  aGP3 = aGP1;
143  aGP4 = aGP2;
144  }
145  //HACK. Have to clean this up.
147  ++aKey.thePtCode;
148  while(theGPs.find(aKey)==theGPs.end() && aKey.thePtCode<=401) ++aKey.thePtCode;
150 
151 
152  GoldenPattern::vector2D meanDistPhi = aGP1->getMeanDistPhi();
153 
154  GoldenPattern::vector2D meanDistPhi1 = aGP1->getMeanDistPhi();
155  GoldenPattern::vector2D meanDistPhi2 = aGP2->getMeanDistPhi();
156  GoldenPattern::vector2D meanDistPhi3 = aGP3->getMeanDistPhi();
157  GoldenPattern::vector2D meanDistPhi4 = aGP4->getMeanDistPhi();
158 
159  for(unsigned int iLayer=0;iLayer<myOmtfConfig->nLayers();++iLayer){
160  for(unsigned int iRefLayer=0;iRefLayer<myOmtfConfig->nRefLayers();++iRefLayer){
161  meanDistPhi[iLayer][iRefLayer]+=meanDistPhi2[iLayer][iRefLayer];
162  meanDistPhi[iLayer][iRefLayer]+=meanDistPhi3[iLayer][iRefLayer];
163  meanDistPhi[iLayer][iRefLayer]+=meanDistPhi4[iLayer][iRefLayer];
164  meanDistPhi[iLayer][iRefLayer]/=4;
165  }
166  }
167 
168  aGP1->setMeanDistPhi(meanDistPhi);
169  aGP2->setMeanDistPhi(meanDistPhi);
170 
171  shiftGP(aGP1,meanDistPhi, meanDistPhi1);
172  shiftGP(aGP2,meanDistPhi, meanDistPhi2);
173  if(aGP3!=aGP1 && aGP4!=aGP2){
174  aGP3->setMeanDistPhi(meanDistPhi);
175  aGP4->setMeanDistPhi(meanDistPhi);
176  shiftGP(aGP3,meanDistPhi, meanDistPhi3);
177  shiftGP(aGP4,meanDistPhi, meanDistPhi4);
178  }
179  }
180 }
unsigned int nRefLayers() const
const OMTFConfiguration * myOmtfConfig
Definition: OMTFProcessor.h:98
const vector2D & getMeanDistPhi() const
Definition: GoldenPattern.h:64
unsigned int nLayers() const
std::map< Key, GoldenPattern * > theGPs
Map holding Golden Patterns.
Definition: OMTFProcessor.h:89
std::vector< vector1D > vector2D
Definition: GoldenPattern.h:51
void shiftGP(GoldenPattern *aGP, const GoldenPattern::vector2D &meanDistPhiNew, const GoldenPattern::vector2D &meanDistPhiOld)
void setMeanDistPhi(const vector2D &aMeanDistPhi)
Definition: GoldenPattern.h:62
bool OMTFProcessor::configure ( const OMTFConfiguration omtfParams,
const L1TMuonOverlapParams omtfPatterns 
)

Fill GP map with patterns from CondFormats object.

Mean dist phi data

Pdf data

Definition at line 36 of file OMTFProcessor.cc.

References addGP(), L1TMuonOverlapParams::chargeLUT(), l1t::LUT::data(), L1TMuonOverlapParams::etaLUT(), L1TMuonOverlapParams::meanDistPhiLUT(), myOmtfConfig, myResults, OMTFConfiguration::nGoldenPatterns(), OMTFConfiguration::nLayers(), OMTFConfiguration::nPdfAddrBits(), l1t::LUT::nrBitsData(), OMTFConfiguration::nRefLayers(), OMTFConfiguration::nTestRefHits(), L1TMuonOverlapParams::pdfLUT(), L1TMuonOverlapParams::ptLUT(), resetConfiguration(), GoldenPattern::setMeanDistPhi(), and GoldenPattern::setPdf().

Referenced by OMTFPatternMaker::beginRun(), and OMTFReconstruction::beginRun().

37  {
38 
40 
41  myOmtfConfig = omtfConfig;
42 
44 
45  const l1t::LUT* chargeLUT = omtfPatterns->chargeLUT();
46  const l1t::LUT* etaLUT = omtfPatterns->etaLUT();
47  const l1t::LUT* ptLUT = omtfPatterns->ptLUT();
48  const l1t::LUT* pdfLUT = omtfPatterns->pdfLUT();
49  const l1t::LUT* meanDistPhiLUT = omtfPatterns->meanDistPhiLUT();
50 
51  unsigned int nGPs = myOmtfConfig->nGoldenPatterns();
52  unsigned int address = 0;
53  unsigned int iEta, iPt;
54  int iCharge;
55  for(unsigned int iGP=0;iGP<nGPs;++iGP){
56  address = iGP;
57  iEta = etaLUT->data(address);
58  iCharge = chargeLUT->data(address)==0? -1:1;
59  iPt = ptLUT->data(address);
60 
66  for(unsigned int iLayer=0;iLayer<myOmtfConfig->nLayers();++iLayer){
68  for(unsigned int iRefLayer=0;iRefLayer<myOmtfConfig->nRefLayers();++iRefLayer){
69  address = iRefLayer + iLayer*myOmtfConfig->nRefLayers() + iGP*(myOmtfConfig->nRefLayers()*myOmtfConfig->nLayers());
70  meanDistPhi1D[iRefLayer] = meanDistPhiLUT->data(address) - (1<<(meanDistPhiLUT->nrBitsData() -1));
71  }
72  meanDistPhi2D[iLayer] = meanDistPhi1D;
74  for(unsigned int iRefLayer=0;iRefLayer<myOmtfConfig->nRefLayers();++iRefLayer){
75  pdf1D.assign(1<<myOmtfConfig->nPdfAddrBits(),0);
76  for(unsigned int iPdf=0;iPdf<(unsigned int)(1<<myOmtfConfig->nPdfAddrBits());++iPdf){
77  address = iPdf + iRefLayer*(1<<myOmtfConfig->nPdfAddrBits()) +
80  pdf1D[iPdf] = pdfLUT->data(address);
81  }
82  pdf2D[iRefLayer] = pdf1D;
83  }
84  pdf3D[iLayer] = pdf2D;
85  }
86  Key aKey(iEta,iPt,iCharge);
87 
88  GoldenPattern *aGP = new GoldenPattern(aKey, myOmtfConfig);
89  aGP->setMeanDistPhi(meanDistPhi2D);
90  aGP->setPdf(pdf3D);
91  addGP(aGP);
92  }
93  return true;
94 }
unsigned int nRefLayers() const
const OMTFConfiguration * myOmtfConfig
Definition: OMTFProcessor.h:98
std::vector< int > vector1D
Definition: GoldenPattern.h:50
unsigned int nLayers() const
std::map< Key, OMTFResult > resultsMap
Definition: OMTFProcessor.h:24
const l1t::LUT * chargeLUT() const
Golden Patterns definitions.
bool addGP(GoldenPattern *aGP)
unsigned int nrBitsData() const
Definition: LUT.h:51
std::vector< vector1D > vector2D
Definition: GoldenPattern.h:51
std::vector< vector2D > vector3D
Definition: GoldenPattern.h:52
void setPdf(const vector3D &aPdf)
Definition: GoldenPattern.h:68
unsigned int nPdfAddrBits() const
void resetConfiguration()
Reset all configuration parameters.
const l1t::LUT * etaLUT() const
unsigned int nGoldenPatterns() const
const l1t::LUT * pdfLUT() const
Definition: LUT.h:29
const l1t::LUT * ptLUT() const
void setMeanDistPhi(const vector2D &aMeanDistPhi)
Definition: GoldenPattern.h:62
int data(unsigned int address) const
Definition: LUT.h:46
const l1t::LUT * meanDistPhiLUT() const
std::vector< OMTFProcessor::resultsMap > myResults
Definition: OMTFProcessor.h:94
unsigned int nTestRefHits() const
void OMTFProcessor::fillCounts ( unsigned int  iProcessor,
const OMTFinput aInput,
const SimTrack aSimMuon 
)

Fill counts for a GoldenPattern of this processor unit. Pattern key is selcted according to the SimTrack parameters.

Stupid conersion. Have to go through PAC pt scale, as we later shift resulting pt code by +1

Number of reference hits to be checked.

Definition at line 279 of file OMTFProcessor.cc.

References funct::abs(), OMTFConfiguration::getBendingLayers(), OMTFinput::getLayerData(), OMTFinput::getRefHits(), OMTFConfiguration::getRefHitsDefs(), OMTFConfiguration::getRefToLogicNumber(), RefHitDef::iInput, RPCConst::iptFromPt(), RefHitDef::iRefLayer, RefHitDef::iRegion, CoreSimTrack::momentum(), myOmtfConfig, OMTFConfiguration::nLayers(), OMTFConfiguration::nRefHits(), RPCConst::ptFromIpt(), restrictInput(), theGPs, and CoreSimTrack::type().

Referenced by OMTFPatternMaker::analyze().

281  {
282 
283  int theCharge = abs(aSimMuon->type()) == 13 ? -1 : 1;
284  unsigned int iPt = RPCConst::iptFromPt(aSimMuon->momentum().pt());
287  iPt+=1;
288  if(iPt>31) iPt=200*2+1;
289  else iPt = RPCConst::ptFromIpt(iPt)*2.0+1;//MicroGMT has 0.5 GeV step size, with lower bin edge (uGMT_pt_code - 1)*step_size
291 
293  std::bitset<128> refHitsBits = aInput.getRefHits(iProcessor);
294  if(refHitsBits.none()) return;
295 
296  std::ostringstream myStr;
297  myStr<<"iProcessor: "<<iProcessor<<std::endl;
298  myStr<<"Input: ------------"<<std::endl;
299  myStr<<aInput<<std::endl;
300  edm::LogInfo("OMTF processor")<<myStr.str();
301 
302  for(unsigned int iLayer=0;iLayer<myOmtfConfig->nLayers();++iLayer){
303  const OMTFinput::vector1D & layerHits = aInput.getLayerData(iLayer);
304  if(!layerHits.size()) continue;
306  for(unsigned int iRefHit=0;iRefHit<myOmtfConfig->nRefHits();++iRefHit){
307  if(!refHitsBits[iRefHit]) continue;
308  const RefHitDef & aRefHitDef = myOmtfConfig->getRefHitsDefs()[iProcessor][iRefHit];
309  int phiRef = aInput.getLayerData(myOmtfConfig->getRefToLogicNumber()[aRefHitDef.iRefLayer])[aRefHitDef.iInput];
310  unsigned int iRegion = aRefHitDef.iRegion;
311  if(myOmtfConfig->getBendingLayers().count(iLayer)) phiRef = 0;
312  const OMTFinput::vector1D restrictedLayerHits = restrictInput(iProcessor, iRegion, iLayer,layerHits);
313  for(auto itGP: theGPs){
314  if(itGP.first.theCharge!=theCharge) continue;
315  if(itGP.first.thePtCode!=iPt) continue;
316  itGP.second->addCount(aRefHitDef.iRefLayer,iLayer,phiRef,restrictedLayerHits);
317  }
318  }
319  }
320 }
const std::set< int > & getBendingLayers() const
unsigned int nRefHits() const
const OMTFConfiguration * myOmtfConfig
Definition: OMTFProcessor.h:98
unsigned int nLayers() const
unsigned int iInput
Hit input number within a cone.
std::map< Key, GoldenPattern * > theGPs
Map holding Golden Patterns.
Definition: OMTFProcessor.h:89
std::vector< int > vector1D
Definition: OMTFinput.h:15
const OMTFinput::vector1D & getLayerData(unsigned int iLayer, bool giveEta=false) const
Definition: OMTFinput.cc:19
const std::vector< std::vector< RefHitDef > > & getRefHitsDefs() const
Abs< T >::type abs(const T &t)
Definition: Abs.h:22
std::bitset< 128 > getRefHits(unsigned int iProcessor) const
Definition: OMTFinput.cc:27
static double ptFromIpt(const int ipt)
Definition: RPCConst.cc:28
OMTFinput::vector1D restrictInput(unsigned int iProcessor, unsigned int iCone, unsigned int iLayer, const OMTFinput::vector1D &layerHits)
const std::vector< int > & getRefToLogicNumber() const
int type() const
particle type (HEP PDT convension)
Definition: CoreSimTrack.h:25
const math::XYZTLorentzVectorD & momentum() const
Definition: CoreSimTrack.h:22
unsigned int iRefLayer
Reference layer logic number (0-7)
unsigned int iRegion
Region number assigned to this referecne hit.
static int iptFromPt(const double pt)
Definition: RPCConst.cc:10
void OMTFProcessor::fillInputRange ( unsigned int  iProcessor,
unsigned int  iCone,
const OMTFinput aInput 
)
private

Fill map of used inputs. FIXME: using hack from OMTFConfiguration

void OMTFProcessor::fillInputRange ( unsigned int  iProcessor,
unsigned int  iCone,
unsigned int  iRefLayer,
unsigned int  iHit 
)
private
const std::map< Key, GoldenPattern * > & OMTFProcessor::getPatterns ( ) const

Return map of GoldenPatterns.

Definition at line 207 of file OMTFProcessor.cc.

References theGPs.

Referenced by OMTFPatternMaker::beginRun(), OMTFPatternMaker::endJob(), and OMTFPatternMaker::writeMergedGPs().

207 { return theGPs; }
std::map< Key, GoldenPattern * > theGPs
Map holding Golden Patterns.
Definition: OMTFProcessor.h:89
const std::vector< OMTFProcessor::resultsMap > & OMTFProcessor::processInput ( unsigned int  iProcessor,
const OMTFinput aInput 
)

Process input data from a single event Input data is represented by hits in logic layers expressed in local coordinates Vector index: logic region number Map key: GoldenPattern key

Number of reference hits to be checked.

Definition at line 210 of file OMTFProcessor.cc.

References OMTFConfiguration::getBendingLayers(), OMTFinput::getLayerData(), OMTFinput::getRefHits(), OMTFConfiguration::getRefHitsDefs(), OMTFConfiguration::getRefToLogicNumber(), RefHitDef::iInput, RefHitDef::iRefLayer, RefHitDef::iRegion, myOmtfConfig, myResults, OMTFConfiguration::nLayers(), OMTFConfiguration::nRefHits(), OMTFConfiguration::nTestRefHits(), restrictInput(), and theGPs.

Referenced by OMTFReconstruction::getProcessorCandidates().

211  {
212 
213  for(auto & itRegion: myResults) for(auto & itKey: itRegion) itKey.second.clear();
214 
217  std::bitset<128> refHitsBits = aInput.getRefHits(iProcessor);
218  if(refHitsBits.none()) return myResults;
219 
220  for(unsigned int iLayer=0;iLayer<myOmtfConfig->nLayers();++iLayer){
221  const OMTFinput::vector1D & layerHits = aInput.getLayerData(iLayer);
222  if(!layerHits.size()) continue;
224  unsigned int nTestedRefHits = myOmtfConfig->nTestRefHits();
225  for(unsigned int iRefHit=0;iRefHit<myOmtfConfig->nRefHits();++iRefHit){
226  if(!refHitsBits[iRefHit]) continue;
227  if(nTestedRefHits--==0) break;
228  const RefHitDef & aRefHitDef = myOmtfConfig->getRefHitsDefs()[iProcessor][iRefHit];
229 
230  int phiRef = aInput.getLayerData(myOmtfConfig->getRefToLogicNumber()[aRefHitDef.iRefLayer])[aRefHitDef.iInput];
231  int etaRef = aInput.getLayerData(myOmtfConfig->getRefToLogicNumber()[aRefHitDef.iRefLayer],true)[aRefHitDef.iInput];
232  unsigned int iRegion = aRefHitDef.iRegion;
233 
234  if(myOmtfConfig->getBendingLayers().count(iLayer)) phiRef = 0;
235  const OMTFinput::vector1D restrictedLayerHits = restrictInput(iProcessor, iRegion, iLayer,layerHits);
236  for(auto itGP: theGPs){
237  GoldenPattern::layerResult aLayerResult = itGP.second->process1Layer1RefLayer(aRefHitDef.iRefLayer,iLayer,
238  phiRef,
239  restrictedLayerHits);
240  int phiRefSt2 = itGP.second->propagateRefPhi(phiRef, etaRef, aRefHitDef.iRefLayer);
241  myResults[myOmtfConfig->nTestRefHits()-nTestedRefHits-1][itGP.second->key()].setRefPhiRHits(aRefHitDef.iRefLayer, phiRef);
242  myResults[myOmtfConfig->nTestRefHits()-nTestedRefHits-1][itGP.second->key()].addResult(aRefHitDef.iRefLayer,iLayer,
243  aLayerResult.first,
244  phiRefSt2,etaRef);
245  }
246  }
247  }
250  for(auto & itRefHit: myResults) for(auto & itKey: itRefHit) itKey.second.finalise();
251 
252  std::ostringstream myStr;
253  myStr<<"iProcessor: "<<iProcessor<<std::endl;
254  myStr<<"Input: ------------"<<std::endl;
255  myStr<<aInput<<std::endl;
256  edm::LogInfo("OMTF processor")<<myStr.str();
257 
258  return myResults;
259 }
const std::set< int > & getBendingLayers() const
unsigned int nRefHits() const
const OMTFConfiguration * myOmtfConfig
Definition: OMTFProcessor.h:98
unsigned int nLayers() const
unsigned int iInput
Hit input number within a cone.
std::map< Key, GoldenPattern * > theGPs
Map holding Golden Patterns.
Definition: OMTFProcessor.h:89
std::vector< int > vector1D
Definition: OMTFinput.h:15
const OMTFinput::vector1D & getLayerData(unsigned int iLayer, bool giveEta=false) const
Definition: OMTFinput.cc:19
const std::vector< std::vector< RefHitDef > > & getRefHitsDefs() const
std::bitset< 128 > getRefHits(unsigned int iProcessor) const
Definition: OMTFinput.cc:27
std::pair< int, bool > layerResult
Definition: GoldenPattern.h:53
OMTFinput::vector1D restrictInput(unsigned int iProcessor, unsigned int iCone, unsigned int iLayer, const OMTFinput::vector1D &layerHits)
const std::vector< int > & getRefToLogicNumber() const
unsigned int iRefLayer
Reference layer logic number (0-7)
unsigned int iRegion
Region number assigned to this referecne hit.
std::vector< OMTFProcessor::resultsMap > myResults
Definition: OMTFProcessor.h:94
unsigned int nTestRefHits() const
void OMTFProcessor::resetConfiguration ( )
private

Reset all configuration parameters.

Definition at line 29 of file OMTFProcessor.cc.

References myResults, and theGPs.

Referenced by configure().

29  {
30 
31  myResults.clear();
32  theGPs.clear();
33 }
std::map< Key, GoldenPattern * > theGPs
Map holding Golden Patterns.
Definition: OMTFProcessor.h:89
std::vector< OMTFProcessor::resultsMap > myResults
Definition: OMTFProcessor.h:94
OMTFinput::vector1D OMTFProcessor::restrictInput ( unsigned int  iProcessor,
unsigned int  iCone,
unsigned int  iLayer,
const OMTFinput::vector1D layerHits 
)
private

Remove hits whis are outside input range for given processor and cone

Definition at line 262 of file OMTFProcessor.cc.

References OMTFConfiguration::getConnections(), myOmtfConfig, and OMTFConfiguration::nPhiBins().

Referenced by fillCounts(), and processInput().

265  {
266 
267  OMTFinput::vector1D myHits = layerHits;
268 
269  unsigned int iStart = myOmtfConfig->getConnections()[iProcessor][iRegion][iLayer].first;
270  unsigned int iEnd = iStart + myOmtfConfig->getConnections()[iProcessor][iRegion][iLayer].second -1;
271 
272  for(unsigned int iInput=0;iInput<14;++iInput){
273  if(iInput<iStart || iInput>iEnd) myHits[iInput] = myOmtfConfig->nPhiBins();
274  }
275  return myHits;
276 }
const OMTFConfiguration * myOmtfConfig
Definition: OMTFProcessor.h:98
unsigned int nPhiBins() const
std::vector< int > vector1D
Definition: OMTFinput.h:15
const vector3D_pair & getConnections() const
void OMTFProcessor::shiftGP ( GoldenPattern aGP,
const GoldenPattern::vector2D meanDistPhiNew,
const GoldenPattern::vector2D meanDistPhiOld 
)
private

Shift pdf indexes by differecne between averaged and original meanDistPhi

Shift pdfs by differecne between original menaDistPhi, and the averaged value

Definition at line 183 of file OMTFProcessor.cc.

References GoldenPattern::getPdf(), myOmtfConfig, OMTFConfiguration::nLayers(), OMTFConfiguration::nPdfAddrBits(), OMTFConfiguration::nRefLayers(), GoldenPattern::pdfValue(), and GoldenPattern::setPdf().

Referenced by averagePatterns().

185  {
186 
189  unsigned int nPdfBins = exp2(myOmtfConfig->nPdfAddrBits());
190  GoldenPattern::vector3D pdfAllRef = aGP->getPdf();
191 
192  int indexShift = 0;
193  for(unsigned int iLayer=0;iLayer<myOmtfConfig->nLayers();++iLayer){
194  for(unsigned int iRefLayer=0;iRefLayer<myOmtfConfig->nRefLayers();++iRefLayer){
195  indexShift = meanDistPhiOld[iLayer][iRefLayer] - meanDistPhiNew[iLayer][iRefLayer];
196  for(unsigned int iPdfBin=0;iPdfBin<nPdfBins;++iPdfBin) pdfAllRef[iLayer][iRefLayer][iPdfBin] = 0;
197  for(unsigned int iPdfBin=0;iPdfBin<nPdfBins;++iPdfBin){
198  if((int)(iPdfBin)+indexShift>=0 && iPdfBin+indexShift<nPdfBins)
199  pdfAllRef[iLayer][iRefLayer][iPdfBin+indexShift] = aGP->pdfValue(iLayer, iRefLayer, iPdfBin);
200  }
201  }
202  }
203  aGP->setPdf(pdfAllRef);
204 }
unsigned int nRefLayers() const
const OMTFConfiguration * myOmtfConfig
Definition: OMTFProcessor.h:98
unsigned int nLayers() const
std::vector< vector2D > vector3D
Definition: GoldenPattern.h:52
void setPdf(const vector3D &aPdf)
Definition: GoldenPattern.h:68
unsigned int nPdfAddrBits() const
int pdfValue(unsigned int iLayer, unsigned int iRefLayer, unsigned int iBin) const
Definition: GoldenPattern.h:72
const vector3D & getPdf() const
Definition: GoldenPattern.h:66

Member Data Documentation

const OMTFConfiguration* OMTFProcessor::myOmtfConfig
private

Configuration of the algorithm. This object does not contain the patterns data.

Definition at line 98 of file OMTFProcessor.h.

Referenced by addGP(), averagePatterns(), configure(), fillCounts(), processInput(), restrictInput(), and shiftGP().

std::vector<OMTFProcessor::resultsMap> OMTFProcessor::myResults
private

Map holding results on current event data for each GP. Reference hit number is isued as a vector index.

Definition at line 94 of file OMTFProcessor.h.

Referenced by addGP(), configure(), processInput(), and resetConfiguration().

std::map<Key,GoldenPattern*> OMTFProcessor::theGPs
private

Map holding Golden Patterns.

Definition at line 89 of file OMTFProcessor.h.

Referenced by addGP(), averagePatterns(), fillCounts(), getPatterns(), processInput(), resetConfiguration(), and ~OMTFProcessor().