CMS 3D CMS Logo

List of all members | Public Member Functions | Private Member Functions | Private Attributes
L1TMuonBarrelKalmanStubProcessor Class Reference

#include <L1TMuonBarrelKalmanStubProcessor.h>

Public Member Functions

 L1TMuonBarrelKalmanStubProcessor ()
 
 L1TMuonBarrelKalmanStubProcessor (const edm::ParameterSet &)
 
void makeInputPattern (const L1MuDTChambPhContainer *phiContainer, const L1MuDTChambThContainer *etaContainer, int sector)
 
L1MuKBMTCombinedStubCollection makeStubs (const L1MuDTChambPhContainer *, const L1MuDTChambThContainer *, const L1TMuonBarrelParams &)
 
 ~L1TMuonBarrelKalmanStubProcessor ()
 

Private Member Functions

L1MuKBMTCombinedStub buildStub (const L1MuDTChambPhDigi &, const L1MuDTChambThDigi *)
 
L1MuKBMTCombinedStub buildStubNoEta (const L1MuDTChambPhDigi &)
 
int calculateEta (uint, int, uint, uint)
 
bool isGoodPhiStub (const L1MuDTChambPhDigi *)
 

Private Attributes

bool disableMasks_
 
std::vector< int > eta1_
 
std::vector< int > eta2_
 
std::vector< int > eta3_
 
int maxBX_
 
int minBX_
 
int minPhiQuality_
 
int verbose_
 

Detailed Description

Definition at line 16 of file L1TMuonBarrelKalmanStubProcessor.h.

Constructor & Destructor Documentation

L1TMuonBarrelKalmanStubProcessor::L1TMuonBarrelKalmanStubProcessor ( )
L1TMuonBarrelKalmanStubProcessor::L1TMuonBarrelKalmanStubProcessor ( const edm::ParameterSet iConfig)

Definition at line 23 of file L1TMuonBarrelKalmanStubProcessor.cc.

23  :
24  minPhiQuality_(iConfig.getParameter<int>("minPhiQuality")),
25  minBX_(iConfig.getParameter<int>("minBX")),
26  maxBX_(iConfig.getParameter<int>("maxBX")),
27  eta1_(iConfig.getParameter<std::vector<int> >("cotTheta_1")),
28  eta2_(iConfig.getParameter<std::vector<int> >("cotTheta_2")),
29  eta3_(iConfig.getParameter<std::vector<int> >("cotTheta_3")),
30  disableMasks_(iConfig.getParameter<bool>("disableMasks")),
31  verbose_(iConfig.getParameter<int>("verbose"))
32 {
33 
34 }
T getParameter(std::string const &) const
L1TMuonBarrelKalmanStubProcessor::~L1TMuonBarrelKalmanStubProcessor ( )

Definition at line 38 of file L1TMuonBarrelKalmanStubProcessor.cc.

38 {}

Member Function Documentation

L1MuKBMTCombinedStub L1TMuonBarrelKalmanStubProcessor::buildStub ( const L1MuDTChambPhDigi phiS,
const L1MuDTChambThDigi etaS 
)
private

Definition at line 52 of file L1TMuonBarrelKalmanStubProcessor.cc.

References L1MuDTChambPhDigi::bxNum(), calculateEta(), L1MuDTChambPhDigi::code(), mps_fire::i, phi, L1MuDTChambPhDigi::phi(), L1MuDTChambPhDigi::phiB(), L1MuDTChambThDigi::position(), L1MuDTChambThDigi::quality(), jets_cff::quality, L1MuDTChambPhDigi::scNum(), L1MuDTChambThDigi::scNum(), relativeConstraints::station, L1MuDTChambPhDigi::stNum(), L1MuDTChambThDigi::stNum(), GlobalPosition_Frontier_DevDB_cff::tag, L1MuDTChambPhDigi::Ts2Tag(), parallelization::uint(), makeMuonMisalignmentScenario::wheel, L1MuDTChambPhDigi::whNum(), and L1MuDTChambThDigi::whNum().

Referenced by makeStubs().

52  {
53  int wheel = phiS.whNum();
54  int sector = phiS.scNum();
55  int station = phiS.stNum();
56  int phi = phiS.phi();
57  int phiB = phiS.phiB();
58  bool tag = (phiS.Ts2Tag()==1);
59  int bx=phiS.bxNum();
60  int quality=phiS.code();
61 
62 
63 
64  //Now full eta
65  int qeta1=0;
66  int qeta2=0;
67  int eta1=255;
68  int eta2=255;
69 
70 
71  bool hasEta=false;
72  for (uint i=0;i<7;++i) {
73  if (etaS->position(i)==0)
74  continue;
75  if (!hasEta) {
76  hasEta=true;
77  eta1=calculateEta(i,etaS->whNum(),etaS->scNum(),etaS->stNum());
78  if (etaS->quality(i)==1)
79  qeta1=2;
80  else
81  qeta1=1;
82  }
83  else {
84  eta2=calculateEta(i,etaS->whNum(),etaS->scNum(),etaS->stNum());
85  if (etaS->quality(i)==1)
86  qeta2=2;
87  else
88  qeta2=1;
89  }
90  }
91  L1MuKBMTCombinedStub stub(wheel,sector,station,phi,phiB,tag,
92  bx,quality,eta1,eta2,qeta1,qeta2);
93 
94  return stub;
95 
96  }
int quality(const int i) const
int position(const int i) const
def uint(string)
L1MuKBMTCombinedStub L1TMuonBarrelKalmanStubProcessor::buildStubNoEta ( const L1MuDTChambPhDigi phiS)
private

Definition at line 102 of file L1TMuonBarrelKalmanStubProcessor.cc.

References L1MuDTChambPhDigi::bxNum(), L1MuDTChambPhDigi::code(), phi, L1MuDTChambPhDigi::phi(), L1MuDTChambPhDigi::phiB(), jets_cff::quality, L1MuDTChambPhDigi::scNum(), relativeConstraints::station, L1MuDTChambPhDigi::stNum(), GlobalPosition_Frontier_DevDB_cff::tag, L1MuDTChambPhDigi::Ts2Tag(), makeMuonMisalignmentScenario::wheel, and L1MuDTChambPhDigi::whNum().

Referenced by makeStubs().

102  {
103  int wheel = phiS.whNum();
104  int sector = phiS.scNum();
105  int station = phiS.stNum();
106  int phi = phiS.phi();
107  int phiB = phiS.phiB();
108  bool tag = (phiS.Ts2Tag()==1);
109  int bx=phiS.bxNum();
110  int quality=phiS.code();
111 
112 
113  //Now full eta
114  int qeta1=0;
115  int qeta2=0;
116  int eta1=7;
117  int eta2=7;
118  L1MuKBMTCombinedStub stub(wheel,sector,station,phi,phiB,tag,
119  bx,quality,eta1,eta2,qeta1,qeta2);
120 
121  return stub;
122 
123 }
int L1TMuonBarrelKalmanStubProcessor::calculateEta ( uint  i,
int  wheel,
uint  sector,
uint  station 
)
private

Definition at line 246 of file L1TMuonBarrelKalmanStubProcessor.cc.

References PVValHelper::eta, eta1_, eta2_, eta3_, and mps_fire::i.

Referenced by buildStub().

246  {
247  int eta=0;
248  if (wheel>0) {
249  eta=7*wheel+3-i;
250  }
251  else if (wheel<0) {
252  eta=7*wheel+i-3;
253  }
254  else {
255  if (sector==0 || sector==3 ||sector==4 ||sector==7 ||sector==8 ||sector==11)
256  eta=i-3;
257  else
258  eta=3-i;
259  }
260 
261 
262  if (station==1)
263  eta=-eta1_[eta+17];
264  else if (station==2)
265  eta=-eta2_[eta+17];
266  else
267  eta=-eta3_[eta+17];
268 
269 
270 
271  return eta;
272 
273 
274 
275 }
bool L1TMuonBarrelKalmanStubProcessor::isGoodPhiStub ( const L1MuDTChambPhDigi stub)
private

Definition at line 42 of file L1TMuonBarrelKalmanStubProcessor.cc.

References L1MuDTChambPhDigi::code(), and minPhiQuality_.

42  {
43  if (stub->code()<minPhiQuality_)
44  return false;
45  return true;
46 }
void L1TMuonBarrelKalmanStubProcessor::makeInputPattern ( const L1MuDTChambPhContainer phiContainer,
const L1MuDTChambThContainer etaContainer,
int  sector 
)

Definition at line 279 of file L1TMuonBarrelKalmanStubProcessor.cc.

References L1MuDTChambPhContainer::chPhiSegm1(), L1MuDTChambPhContainer::chPhiSegm2(), L1MuDTChambThContainer::chThetaSegm(), L1MuDTChambPhDigi::code(), gather_cfg::cout, L1MuDTChambPhDigi::phi(), L1MuDTChambPhDigi::phiB(), L1MuDTChambThDigi::position(), L1MuDTChambThDigi::quality(), and makeMuonMisalignmentScenario::wheel.

Referenced by L1TMuonBarrelKalmanStubProducer::produce().

279  {
280 
281  int previousSector;
282  int nextSector;
283 
284  if (sector==11)
285  nextSector=0;
286  else
287  nextSector=sector+1;
288 
289  if (sector==0)
290  previousSector=11;
291  else
292  previousSector=sector-1;
293 
294 
295  ostringstream os;
296  os<<"I "<<sector<<" ";
297 
298 
299  bool hasStub=false;
300 
301  //start by previous sector
302  for (int wheel=-2;wheel<3;++wheel) {
303  const L1MuDTChambPhDigi* seg1 = phiContainer->chPhiSegm1(wheel,1,previousSector,0);
304  if (seg1 && seg1->phi()>111) {
305  os<<seg1->phi()-2144<<" "<<seg1->phiB()<<" "<<seg1->code()<<" 1 4 " ;
306  }
307  else {
308  os<<"-2048 0 0 0 15 ";
309  }
310  const L1MuDTChambPhDigi* seg2 = phiContainer->chPhiSegm1(wheel,2,previousSector,0);
311  if (seg2 && seg2->phi()>111) {
312  os<<seg2->phi()-2144<<" "<<seg2->phiB()<<" "<<seg2->code()<<" 1 4 " ;
313  }
314  else {
315  os<<"-2048 0 0 0 15 ";
316  }
317  const L1MuDTChambPhDigi* seg3 = phiContainer->chPhiSegm1(wheel,3,previousSector,0);
318  if (seg3 && seg3->phi()>111) {
319  os<<seg3->phi()-2144<<" "<<seg3->phiB()<<" "<<seg3->code()<<" 1 4 " ;
320  }
321  else {
322  os<<"-2048 0 0 0 15 ";
323  }
324  const L1MuDTChambPhDigi* seg4 = phiContainer->chPhiSegm1(wheel,4,previousSector,0);
325  if (seg4 && seg4->phi()>111) {
326  os<<seg4->phi()-2144<<" "<<seg4->phiB()<<" "<<seg4->code()<<" 1 4 " ;
327  }
328  else {
329  os<<"-2048 0 0 0 15 ";
330  }
331 
332  const L1MuDTChambThDigi* eta1 = etaContainer->chThetaSegm(wheel,1,previousSector,0);
333  if (eta1) {
334  int etaPos=eta1->position(0)+(eta1->position(1)<<1) +(eta1->position(2)<<2) +(eta1->position(3)<<3) +(eta1->position(4)<<4)+(eta1->position(5)<<5)+(eta1->position(6)<<6);
335  os<< etaPos<<" ";
336  }
337  else {
338  os<< " 0 ";
339  }
340  const L1MuDTChambThDigi* eta2 = etaContainer->chThetaSegm(wheel,2,previousSector,0);
341  if (eta2) {
342  int etaPos=eta2->position(0)+(eta2->position(1)<<1) +(eta2->position(2)<<2) +(eta2->position(3)<<3) +(eta2->position(4)<<4)+(eta2->position(5)<<5)+(eta2->position(6)<<6);
343  os<< etaPos<<" ";
344  }
345  else {
346  os<< " 0 ";
347  }
348 
349  const L1MuDTChambThDigi* eta3 = etaContainer->chThetaSegm(wheel,3,previousSector,0);
350  if (eta3) {
351  int etaPos=eta3->position(0)+(eta3->position(1)<<1) +(eta3->position(2)<<2) +(eta3->position(3)<<3) +(eta3->position(4)<<4)+(eta3->position(5)<<5)+(eta3->position(6)<<6);
352  os<< etaPos<<" ";
353  }
354  else {
355  os<< " 0 ";
356  }
357  const L1MuDTChambPhDigi* seg5 = phiContainer->chPhiSegm2(wheel,1,previousSector,-1);
358  if (seg5 && seg5->phi()>111) {
359  os<<seg5->phi()-2144<<" "<<seg5->phiB()<<" "<<seg5->code()<<" 1 5 " ;
360  }
361  else {
362  os<<"-2048 0 0 0 15 ";
363  }
364 
365  const L1MuDTChambPhDigi* seg6 = phiContainer->chPhiSegm2(wheel,2,previousSector,-1);
366  if (seg6 && seg6->phi()>111) {
367  os<<seg6->phi()-2144<<" "<<seg6->phiB()<<" "<<seg6->code()<<" 1 5 " ;
368  }
369  else {
370  os<<"-2048 0 0 0 15 ";
371  }
372  const L1MuDTChambPhDigi* seg7 = phiContainer->chPhiSegm2(wheel,3,previousSector,-1);
373  if (seg7 && seg7->phi()>111) {
374  os<<seg7->phi()-2144<<" "<<seg7->phiB()<<" "<<seg7->code()<<" 1 5 " ;
375  }
376  else {
377  os<<"-2048 0 0 0 15 ";
378  }
379  const L1MuDTChambPhDigi* seg8 = phiContainer->chPhiSegm2(wheel,4,previousSector,1);
380  if (seg8 && seg8->phi()>111) {
381  os<<seg8->phi()-2144<<" "<<seg8->phiB()<<" "<<seg8->code()<<" 1 5 " ;
382  }
383  else {
384  os<<"-2048 0 0 0 15 ";
385  }
386  if (eta1) {
387  int etaPos=eta1->quality(0)+(eta1->quality(1)<<1) +(eta1->quality(2)<<2) +(eta1->quality(3)<<3) +(eta1->quality(4)<<4)+(eta1->quality(5)<<5)+(eta1->quality(6)<<6);
388  os<< etaPos<<" ";
389  }
390  else {
391  os<< " 0 ";
392  }
393  if (eta2) {
394  int etaPos=eta2->quality(0)+(eta2->quality(1)<<1) +(eta2->quality(2)<<2) +(eta2->quality(3)<<3) +(eta2->quality(4)<<4)+(eta2->quality(5)<<5)+(eta2->quality(6)<<6);
395  os<< etaPos<<" ";
396  }
397  else {
398  os<< " 0 ";
399  }
400  if (eta3) {
401  int etaPos=eta3->quality(0)+(eta3->quality(1)<<1) +(eta3->quality(2)<<2) +(eta3->quality(3)<<3) +(eta3->quality(4)<<4)+(eta3->quality(5)<<5)+(eta3->quality(6)<<6);
402  os<< etaPos<<" ";
403  }
404  else {
405  os<< " 0 ";
406  }
407 
409  const L1MuDTChambPhDigi* seg9 = phiContainer->chPhiSegm1(wheel,1,sector,0);
410  if (seg9 ) {
411  os<<seg9->phi()<<" "<<seg9->phiB()<<" "<<seg9->code()<<" 1 0 " ;
412  }
413  else {
414  os<<"-2048 0 0 0 15 ";
415  }
416  const L1MuDTChambPhDigi* seg10 = phiContainer->chPhiSegm1(wheel,2,sector,0);
417  if (seg10 ) {
418  hasStub=true;
419  os<<seg10->phi()<<" "<<seg10->phiB()<<" "<<seg10->code()<<" 1 0 " ;
420  }
421  else {
422  os<<"-2048 0 0 0 15 ";
423  }
424  const L1MuDTChambPhDigi* seg11 = phiContainer->chPhiSegm1(wheel,3,sector,0);
425  if (seg11 ) {
426  hasStub=true;
427  os<<seg11->phi()<<" "<<seg11->phiB()<<" "<<seg11->code()<<" 1 0 " ;
428  }
429  else {
430  os<<"-2048 0 0 0 15 ";
431  }
432  const L1MuDTChambPhDigi* seg12 = phiContainer->chPhiSegm1(wheel,4,sector,0);
433  if (seg12 ) {
434  hasStub=true;
435  os<<seg12->phi()<<" "<<seg12->phiB()<<" "<<seg12->code()<<" 1 2 " ;
436  }
437  else {
438  os<<"-2048 0 0 0 15 ";
439  }
440  const L1MuDTChambThDigi* eta4 = etaContainer->chThetaSegm(wheel,1,sector,0);
441  if (eta4) {
442  int etaPos=eta4->position(0)+(eta4->position(1)<<1) +(eta4->position(2)<<2) +(eta4->position(3)<<3) +(eta4->position(4)<<4)+(eta4->position(5)<<5)+(eta4->position(6)<<6);
443  os<< etaPos<<" ";
444  }
445  else {
446  os<< " 0 ";
447  }
448 
449  const L1MuDTChambThDigi* eta5 = etaContainer->chThetaSegm(wheel,2,sector,0);
450  if (eta5) {
451  int etaPos=eta5->position(0)+(eta5->position(1)<<1) +(eta5->position(2)<<2) +(eta5->position(3)<<3) +(eta5->position(4)<<4)+(eta5->position(5)<<5)+(eta5->position(6)<<6);
452  os<< etaPos<<" ";
453  }
454  else {
455  os<< " 0 ";
456  }
457  const L1MuDTChambThDigi* eta6 = etaContainer->chThetaSegm(wheel,3,sector,0);
458  if (eta6) {
459  int etaPos=eta6->position(0)+(eta6->position(1)<<1) +(eta6->position(2)<<2) +(eta6->position(3)<<3) +(eta6->position(4)<<4)+(eta6->position(5)<<5)+(eta6->position(6)<<6);
460  os<< etaPos<<" ";
461  }
462  else {
463  os<< " 0 ";
464  }
465 
466  const L1MuDTChambPhDigi* seg13 = phiContainer->chPhiSegm2(wheel,1,sector,-1);
467  if (seg13 ) {
468  os<<seg13->phi()<<" "<<seg13->phiB()<<" "<<seg13->code()<<" 1 1 " ;
469  }
470  else {
471  os<<"-2048 0 0 0 15 ";
472  }
473 
474  const L1MuDTChambPhDigi* seg14 = phiContainer->chPhiSegm2(wheel,2,sector,-1);
475  if (seg14 ) {
476  hasStub=true;
477 
478  os<<seg14->phi()<<" "<<seg14->phiB()<<" "<<seg14->code()<<" 1 1 " ;
479  }
480  else {
481  os<<"-2048 0 0 0 15 ";
482  }
483 
484  const L1MuDTChambPhDigi* seg15 = phiContainer->chPhiSegm2(wheel,3,sector,-1);
485  if (seg15 ) {
486  hasStub=true;
487 
488  os<<seg15->phi()<<" "<<seg15->phiB()<<" "<<seg15->code()<<" 1 1 " ;
489  }
490  else {
491  os<<"-2048 0 0 0 15 ";
492  }
493  const L1MuDTChambPhDigi* seg16 = phiContainer->chPhiSegm2(wheel,4,sector,-1);
494  if (seg16 ) {
495  hasStub=true;
496 
497  os<<seg16->phi()<<" "<<seg16->phiB()<<" "<<seg16->code()<<" 1 1 " ;
498  }
499  else {
500  os<<"-2048 0 0 0 15 ";
501  }
502 
503 
504  if (eta4) {
505  int etaPos=eta4->quality(0)+(eta4->quality(1)<<1) +(eta4->quality(2)<<2) +(eta4->quality(3)<<3) +(eta4->quality(4)<<4)+(eta4->quality(5)<<5)+(eta4->quality(6)<<6);
506  os<< etaPos<<" ";
507  }
508  else {
509  os<< " 0 ";
510  }
511 
512  if (eta5) {
513  int etaPos=eta5->quality(0)+(eta5->quality(1)<<1) +(eta5->quality(2)<<2) +(eta5->quality(3)<<3) +(eta5->quality(4)<<4)+(eta5->quality(5)<<5)+(eta5->quality(6)<<6);
514  os<< etaPos<<" ";
515  }
516  else {
517  os<< " 0 ";
518  }
519  if (eta6) {
520  int etaPos=eta6->quality(0)+(eta6->quality(1)<<1) +(eta6->quality(2)<<2) +(eta6->quality(3)<<3) +(eta6->quality(4)<<4)+(eta6->quality(5)<<5)+(eta6->quality(6)<<6);
521  os<< etaPos<<" ";
522  }
523  else {
524  os<< " 0 ";
525  }
527  const L1MuDTChambPhDigi* seg17 = phiContainer->chPhiSegm1(wheel,1,nextSector,0);
528  if (seg17 && seg17->phi()<-112) {
529  os<<seg17->phi()+2144<<" "<<seg17->phiB()<<" "<<seg17->code()<<" 1 2 " ;
530  }
531  else {
532  os<<"-2048 0 0 0 15 ";
533  }
534  const L1MuDTChambPhDigi* seg18 = phiContainer->chPhiSegm1(wheel,2,nextSector,0);
535  if (seg18 && seg18->phi()<-112) {
536  os<<seg18->phi()+2144<<" "<<seg18->phiB()<<" "<<seg18->code()<<" 1 2 " ;
537  }
538  else {
539  os<<"-2048 0 0 0 15 ";
540  }
541  const L1MuDTChambPhDigi* seg19 = phiContainer->chPhiSegm1(wheel,3,nextSector,0);
542  if (seg19 && seg19->phi()<-112) {
543  os<<seg19->phi()+2144<<" "<<seg19->phiB()<<" "<<seg19->code()<<" 1 2 " ;
544  }
545  else {
546  os<<"-2048 0 0 0 15 ";
547  }
548  const L1MuDTChambPhDigi* seg20 = phiContainer->chPhiSegm1(wheel,4,nextSector,0);
549  if (seg20 && seg20->phi()<-112) {
550  os<<seg20->phi()+2144<<" "<<seg20->phiB()<<" "<<seg20->code()<<" 1 2 " ;
551  }
552  else {
553  os<<"-2048 0 0 0 15 ";
554  }
555  const L1MuDTChambThDigi* eta7 = etaContainer->chThetaSegm(wheel,1,nextSector,0);
556  if (eta7) {
557  int etaPos=eta7->position(0)+(eta7->position(1)<<1) +(eta7->position(2)<<2) +(eta7->position(3)<<3) +(eta7->position(4)<<4)+(eta7->position(5)<<5)+(eta7->position(6)<<6);
558  os<< etaPos<<" ";
559  }
560  else {
561  os<< " 0 ";
562  }
563  const L1MuDTChambThDigi* eta8 = etaContainer->chThetaSegm(wheel,2,nextSector,0);
564  if (eta8) {
565  int etaPos=eta8->position(0)+(eta8->position(1)<<1) +(eta8->position(2)<<2) +(eta8->position(3)<<3) +(eta8->position(4)<<4)+(eta8->position(5)<<5)+(eta8->position(6)<<6);
566  os<< etaPos<<" ";
567  }
568  else {
569  os<< " 0 ";
570  }
571  const L1MuDTChambThDigi* eta9 = etaContainer->chThetaSegm(wheel,3,nextSector,0);
572  if (eta9) {
573  int etaPos=eta9->position(0)+(eta9->position(1)<<1) +(eta9->position(2)<<2) +(eta9->position(3)<<3) +(eta9->position(4)<<4)+(eta9->position(5)<<5)+(eta9->position(6)<<6);
574  os<< etaPos<<" ";
575  }
576  else {
577  os<< " 0 ";
578  }
579  const L1MuDTChambPhDigi* seg21 = phiContainer->chPhiSegm2(wheel,1,nextSector,-1);
580  if (seg21 && seg21->phi()<-112) {
581  os<<seg21->phi()+2144<<" "<<seg21->phiB()<<" "<<seg21->code()<<" 1 3 " ;
582  }
583  else {
584  os<<"-2048 0 0 0 15 ";
585  }
586 
587  const L1MuDTChambPhDigi* seg22 = phiContainer->chPhiSegm2(wheel,2,nextSector,-1);
588  if (seg22 && seg22->phi()<-112) {
589  os<<seg22->phi()+2144<<" "<<seg22->phiB()<<" "<<seg22->code()<<" 1 3 " ;
590  }
591  else {
592  os<<"-2048 0 0 0 15 ";
593  }
594  const L1MuDTChambPhDigi* seg23 = phiContainer->chPhiSegm2(wheel,3,nextSector,-1);
595  if (seg23 && seg23->phi()<-112) {
596  os<<seg23->phi()+2144<<" "<<seg23->phiB()<<" "<<seg23->code()<<" 1 3 " ;
597  }
598  else {
599  os<<"-2048 0 0 0 15 ";
600  }
601  const L1MuDTChambPhDigi* seg24 = phiContainer->chPhiSegm2(wheel,4,nextSector,-1);
602  if (seg24 && seg24->phi()<-112) {
603  os<<seg24->phi()+2144<<" "<<seg24->phiB()<<" "<<seg24->code()<<" 1 3 " ;
604  }
605  else {
606  os<<"-2048 0 0 0 15 ";
607  }
608  if (eta7) {
609  int etaPos=eta7->quality(0)+(eta7->quality(1)<<1) +(eta7->quality(2)<<2) +(eta7->quality(3)<<3) +(eta7->quality(4)<<4)+(eta7->quality(5)<<5)+(eta7->quality(6)<<6);
610  os<< etaPos<<" ";
611  }
612  else {
613  os<< " 0 ";
614  }
615  if (eta8) {
616  int etaPos=eta8->quality(0)+(eta8->quality(1)<<1) +(eta8->quality(2)<<2) +(eta8->quality(3)<<3) +(eta8->quality(4)<<4)+(eta8->quality(5)<<5)+(eta8->quality(6)<<6);
617  os<< etaPos<<" ";
618  }
619  else {
620  os<< " 0 ";
621  }
622  if (eta9) {
623  int etaPos=eta9->quality(0)+(eta9->quality(1)<<1) +(eta9->quality(2)<<2) +(eta9->quality(3)<<3) +(eta9->quality(4)<<4)+(eta9->quality(5)<<5)+(eta9->quality(6)<<6);
624  os<< etaPos<<" ";
625  }
626  else {
627  os<< " 0 ";
628  }
629 
630  }
631  if (hasStub) {
632  std::cout <<os.str()<<std::endl;
633  }
634 }
L1MuDTChambPhDigi const * chPhiSegm1(int wheel, int stat, int sect, int bx) const
L1MuDTChambPhDigi const * chPhiSegm2(int wheel, int stat, int sect, int bx) const
int quality(const int i) const
int position(const int i) const
L1MuDTChambThDigi const * chThetaSegm(int wheel, int stat, int sect, int bx) const
L1MuKBMTCombinedStubCollection L1TMuonBarrelKalmanStubProcessor::makeStubs ( const L1MuDTChambPhContainer phiContainer,
const L1MuDTChambThContainer etaContainer,
const L1TMuonBarrelParams params 
)

Definition at line 130 of file L1TMuonBarrelKalmanStubProcessor.cc.

References buildStub(), buildStubNoEta(), L1MuDTChambPhContainer::chPhiSegm1(), L1MuDTChambPhContainer::chPhiSegm2(), L1MuDTChambThContainer::chThetaSegm(), L1MuDTChambPhDigi::code(), disableMasks_, L1MuDTTFMasks::get_etsoc_chdis_st1(), L1MuDTTFMasks::get_etsoc_chdis_st2(), L1MuDTTFMasks::get_etsoc_chdis_st3(), L1MuDTTFMasks::get_inrec_chdis_st1(), L1MuDTTFMasks::get_inrec_chdis_st2(), L1MuDTTFMasks::get_inrec_chdis_st3(), L1MuDTTFMasks::get_inrec_chdis_st4(), L1TMuonBarrelParams::l1mudttfmasks, maxBX_, minBX_, minPhiQuality_, MillePedeFileConverter_cfg::out, relativeConstraints::station, parallelization::uint(), and makeMuonMisalignmentScenario::wheel.

Referenced by L1TMuonBarrelKalmanStubProducer::produce().

130  {
131 
132 
133  //get the masks from th standard BMTF setup!
134  // const L1TMuonBarrelParamsRcd& bmtfParamsRcd = setup.get<L1TMuonBarrelParamsRcd>();
135  // bmtfParamsRcd.get(bmtfParamsHandle);
136  // const L1TMuonBarrelParams& bmtfParams = *bmtfParamsHandle.product();
137  // masks_ = bmtfParams.l1mudttfmasks;
138 
139 
140  //get the masks!
141  L1MuDTTFMasks msks = params.l1mudttfmasks;
142 
143 
145  for (int bx=minBX_;bx<=maxBX_;bx++) {
146  for (int wheel=-2;wheel<=2;wheel++) {
147  for (uint sector=0;sector<12;sector++) {
148  for (uint station=1;station<5;station++) {
149 
150  //Have to cook up something for the fact that KMTF doesnt use 2 SP at whel=0
151  int lwheel1;
152  int lwheel2;
153  if (wheel<0) {
154  lwheel1=wheel-1;
155  lwheel2=wheel-1;
156  }
157  else if (wheel>0) {
158  lwheel1=wheel+1;
159  lwheel2=wheel+1;
160  }
161  else {
162  lwheel1=-1;
163  lwheel2=+1;
164  }
165 
166  bool phiMask=false;
167  bool etaMask=false;
168  if (station==1) {
169  phiMask = msks.get_inrec_chdis_st1(lwheel1, sector) |msks.get_inrec_chdis_st1(lwheel2, sector);
170  etaMask = msks.get_etsoc_chdis_st1(lwheel1, sector) |msks.get_etsoc_chdis_st1(lwheel2, sector);
171  }
172  if (station==2) {
173  phiMask = msks.get_inrec_chdis_st2(lwheel1, sector) |msks.get_inrec_chdis_st2(lwheel2, sector);
174  etaMask = msks.get_etsoc_chdis_st2(lwheel1, sector) |msks.get_etsoc_chdis_st2(lwheel2, sector);
175 
176  }
177  if (station==3) {
178  phiMask = msks.get_inrec_chdis_st3(lwheel1, sector) |msks.get_inrec_chdis_st3(lwheel2, sector);
179  etaMask = msks.get_etsoc_chdis_st3(lwheel1, sector) |msks.get_etsoc_chdis_st3(lwheel2, sector);
180  }
181  if (station==4) {
182  phiMask = msks.get_inrec_chdis_st4(lwheel1, sector) |msks.get_inrec_chdis_st4(lwheel2, sector);
183  }
184 
185 
186  if (disableMasks_)
187  {
188  phiMask=false;
189  etaMask=false;
190  }
191 
192 
193  bool hasEta=false;
194  L1MuDTChambThDigi const* tseta = etaContainer->chThetaSegm(wheel,station,sector,bx);
195  if (tseta && (!etaMask)) {
196  hasEta=true;
197  }
198 
199 
200  // printf("Wheel=%d LWheel=%d,%d sector=%d station=%d phiMask=%d etaMask=%d\n",wheel,lwheel1,lwheel2,sector,station,phiMask,etaMask);
201  // if (abs(wheel)==2 && station==1)
202  // continue;
203 
204 
205  L1MuDTChambPhDigi const* high = phiContainer->chPhiSegm1(wheel,station,sector,bx);
206  if (high && (!phiMask)) {
207  if (high->code()>=minPhiQuality_) {
208  const L1MuDTChambPhDigi& stubPhi = *high;
209  if (hasEta) {
210  out.push_back(buildStub(stubPhi,tseta));
211  }
212  else {
213  out.push_back(buildStubNoEta(stubPhi));
214  }
215  }
216  }
217 
218  L1MuDTChambPhDigi const* low = phiContainer->chPhiSegm2(wheel,station,sector,bx-1);
219  if (low && ! (phiMask)) {
220  if (low->code()>=minPhiQuality_) {
221  const L1MuDTChambPhDigi& stubPhi = *low;
222  if (hasEta) {
223  out.push_back(buildStub(stubPhi,tseta));
224  }
225  else {
226  out.push_back(buildStubNoEta(stubPhi));
227  }
228  }
229  }
230  }
231  }
232  }
233  }
234 
235 
236 
237 
238 
239 
240 
241  return out;
242 }
L1MuKBMTCombinedStub buildStub(const L1MuDTChambPhDigi &, const L1MuDTChambThDigi *)
L1MuKBMTCombinedStub buildStubNoEta(const L1MuDTChambPhDigi &)
bool get_etsoc_chdis_st3(int wh, int sc) const
L1MuDTChambPhDigi const * chPhiSegm1(int wheel, int stat, int sect, int bx) const
L1MuDTChambPhDigi const * chPhiSegm2(int wheel, int stat, int sect, int bx) const
bool get_inrec_chdis_st1(int wh, int sc) const
bool get_inrec_chdis_st3(int wh, int sc) const
L1MuDTTFMasks l1mudttfmasks
bool get_inrec_chdis_st2(int wh, int sc) const
bool get_etsoc_chdis_st2(int wh, int sc) const
bool get_inrec_chdis_st4(int wh, int sc) const
def uint(string)
L1MuDTChambThDigi const * chThetaSegm(int wheel, int stat, int sect, int bx) const
bool get_etsoc_chdis_st1(int wh, int sc) const
std::vector< L1MuKBMTCombinedStub > L1MuKBMTCombinedStubCollection

Member Data Documentation

bool L1TMuonBarrelKalmanStubProcessor::disableMasks_
private

Definition at line 43 of file L1TMuonBarrelKalmanStubProcessor.h.

Referenced by makeStubs().

std::vector<int> L1TMuonBarrelKalmanStubProcessor::eta1_
private

Definition at line 38 of file L1TMuonBarrelKalmanStubProcessor.h.

Referenced by calculateEta().

std::vector<int> L1TMuonBarrelKalmanStubProcessor::eta2_
private

Definition at line 39 of file L1TMuonBarrelKalmanStubProcessor.h.

Referenced by calculateEta().

std::vector<int> L1TMuonBarrelKalmanStubProcessor::eta3_
private

Definition at line 40 of file L1TMuonBarrelKalmanStubProcessor.h.

Referenced by calculateEta().

int L1TMuonBarrelKalmanStubProcessor::maxBX_
private

Definition at line 37 of file L1TMuonBarrelKalmanStubProcessor.h.

Referenced by makeStubs().

int L1TMuonBarrelKalmanStubProcessor::minBX_
private

Definition at line 36 of file L1TMuonBarrelKalmanStubProcessor.h.

Referenced by makeStubs().

int L1TMuonBarrelKalmanStubProcessor::minPhiQuality_
private

Definition at line 35 of file L1TMuonBarrelKalmanStubProcessor.h.

Referenced by isGoodPhiStub(), and makeStubs().

int L1TMuonBarrelKalmanStubProcessor::verbose_
private

Definition at line 44 of file L1TMuonBarrelKalmanStubProcessor.h.