CMS 3D CMS Logo

CSCTFDTReceiver Class Reference

#include <L1Trigger/CSCTrackFinder/src/CSCTFDTReceiver.h>

List of all members.

Public Member Functions

 CSCTFDTReceiver ()
CSCTriggerContainer
< csctf::TrackStub
process (const L1MuDTChambPhContainer *)
 ~CSCTFDTReceiver ()

Private Attributes

CSCTriggerContainer
< csctf::TrackStub
dtstubs


Detailed Description

Definition at line 12 of file CSCTFDTReceiver.h.


Constructor & Destructor Documentation

CSCTFDTReceiver::CSCTFDTReceiver (  )  [inline]

Definition at line 16 of file CSCTFDTReceiver.h.

References CSCTriggerContainer< T >::clear(), and dtstubs.

00016 { dtstubs.clear(); }

CSCTFDTReceiver::~CSCTFDTReceiver (  )  [inline]

Definition at line 17 of file CSCTFDTReceiver.h.

00017 {}


Member Function Documentation

CSCTriggerContainer< csctf::TrackStub > CSCTFDTReceiver::process ( const L1MuDTChambPhContainer dttrig  ) 

shift all by one and take mod 8, since DT quality of 7 is a null stub

Definition at line 10 of file CSCTFDTReceiver.cc.

References L1MuDTChambPhContainer::chPhiSegm1(), L1MuDTChambPhContainer::chPhiSegm2(), CSCTriggerContainer< T >::clear(), L1MuDTChambPhDigi::code(), dtstubs, e, L1MuDTTFConfig::getBxMax(), L1MuDTTFConfig::getBxMin(), CSCBitWidths::kGlobalPhiDataBitWidth, CSCDetId::maxEndcapId(), CSCTriggerNumbering::maxTriggerSectorId(), CSCDetId::minEndcapId(), CSCTriggerNumbering::minTriggerSectorId(), phi, L1MuDTChambPhDigi::phi(), L1MuDTChambPhDigi::phiB(), CSCTriggerContainer< T >::push_back(), DTConfigTraco::RESOLPSI, DTConfigTraco::RESOLPSIR, s, tmp, and muonGeometry::wheel.

Referenced by CSCTFTrackBuilder::buildTracks().

00011 {
00012   dtstubs.clear();
00013   if( !dttrig ) return dtstubs;
00014 
00015   const int dt_minBX = L1MuDTTFConfig::getBxMin();
00016   const int dt_maxBX = L1MuDTTFConfig::getBxMax();
00017   const int dt_toffs = 0;// changed since DT tpg now centers around zero //abs(dt_maxBX - dt_minBX);
00018 
00019   // consider all BX
00020   for(int bx = dt_minBX + dt_toffs; bx <= dt_maxBX + dt_toffs; ++bx)
00021     for(int e = CSCDetId::minEndcapId(); e <= CSCDetId::maxEndcapId(); ++e)
00022       for(int s = CSCTriggerNumbering::minTriggerSectorId(); s <= CSCTriggerNumbering::maxTriggerSectorId(); ++s)
00023         {
00024           int wheel = (e == 1) ? 2 : -2;
00025           int sector = 2*s - 1;
00026           int csc_bx = bx + 6;
00027 
00028           // combine two 30 degree DT sectors into a 60 degree CSC
00029           // sector.
00030           for(int is = sector; is <= sector+1; ++is)
00031             {
00032               int iss = (is == 12) ? 0 : is;
00033               L1MuDTChambPhDigi* dtts[2];
00034 
00035               for(int stub = 0; stub < 2; ++stub)
00036                 {
00037                   dtts[stub] = (stub == 0) ? dttrig->chPhiSegm1(wheel,1,iss,bx) :
00038                                              dttrig->chPhiSegm2(wheel,1,iss,bx);
00039                   if(dtts[stub])
00040                     {
00041                       // Convert stubs to CSC format (signed -> unsigned)
00042                       // phi was 12 bits (signed) for pi radians = 57.3 deg
00043                       // relative to center of 30 degree DT sector
00044                       double tmp = static_cast<const double> (dtts[stub]->phi()) /
00045                         DTConfigTraco::RESOLPSIR * 180./M_PI + 15.;
00046 
00047                       int phi = static_cast<int> (tmp/60. * (1<<(CSCBitWidths::kGlobalPhiDataBitWidth)));
00048                       if (is>sector) phi = phi + (1<<(CSCBitWidths::kGlobalPhiDataBitWidth - 1));
00049 
00050                       // DT chambers may lie outside CSC sector boundary
00051                       // Eventually we need to extend CSC phi definition
00052                       phi = (phi>0) ? phi : 0;
00053                       phi = (phi<(1<<(CSCBitWidths::kGlobalPhiDataBitWidth))) ? phi :
00054                         (1<<(CSCBitWidths::kGlobalPhiDataBitWidth))-1;
00055 
00056                       // account for slope in DT/CSC comparison
00057                       phi = static_cast<int>(phi*(1.-40./4096.)) + 25;
00058                       phi = (phi>0) ? phi : 0;
00059                       phi = (phi<(1<<(CSCBitWidths::kGlobalPhiDataBitWidth))) ? phi :
00060                         (1<<(CSCBitWidths::kGlobalPhiDataBitWidth))-1;
00061 
00062                       // change phib from 10 bits to 6
00063                       int phib = (dtts[stub]->phiB() + DTConfigTraco::RESOLPSI) / 16;
00064                       int qual = dtts[stub]->code();
00065                       // barrel allows quality=0!
00067                       qual = (qual + 1)%8;
00068 
00069                       CSCCorrelatedLCTDigi dtinfo(stub+1,1, qual, 0, 0, 0, phib, csc_bx, (stub+1) + 2*((is+1)%2));
00070                       DTChamberId dtid(wheel,1,is);
00071                       csctf::TrackStub tsCSC(dtinfo,dtid, phi, 0);
00072 
00073                       dtstubs.push_back(tsCSC);
00074                     }
00075                 }
00076             }
00077         }
00078 
00079   return dtstubs;
00080 }


Member Data Documentation

CSCTriggerContainer<csctf::TrackStub> CSCTFDTReceiver::dtstubs [private]

Definition at line 24 of file CSCTFDTReceiver.h.

Referenced by CSCTFDTReceiver(), and process().


The documentation for this class was generated from the following files:
Generated on Tue Jun 9 18:17:29 2009 for CMSSW by  doxygen 1.5.4