CMS 3D CMS Logo

OmtfMuonUnpacker.cc
Go to the documentation of this file.
2 
4 
6 
7 
8 namespace omtf {
9 
10 void MuonUnpacker::unpack(unsigned int fed, unsigned int amc, const MuonDataWord64 &data, l1t::RegionalMuonCandBxCollection * producedMuonDigis)
11 {
12  LogTrace("") <<"OMTF->MUON " << std::endl;
13  LogTrace("") << data << std::endl;
15  unsigned int iProcessor = amc-1; //0-5
17  digi.setHwPt(data.pT());
18  digi.setHwEta(data.eta());
19  digi.setHwPhi(data.phi());
20  digi.setHwSign(data.ch());
21  digi.setHwSignValid(data.vch());
22  digi.setHwQual(data.quality());
23  std::map<int, int> trackAddr;
24  trackAddr[0]=data.layers();
25  trackAddr[1]=0;
26  trackAddr[2]=data.weight_lowBits();
27  digi.setTrackAddress(trackAddr);
28  digi.setTFIdentifiers(iProcessor, overlap);
29  int bx = data.bxNum()-3;
30  LogTrace("") <<"OMTF Muon, BX="<<bx<<", hwPt="<<digi.hwPt()<< std::endl;
31  if(std::abs(bx) <= 3) producedMuonDigis->push_back(bx,digi);
32 }
33 
34 }
void setHwPhi(int bits)
Set compressed relative phi as transmitted by hardware LSB = 2*pi/576 (8 bits)
unsigned int pT() const
unsigned int bxNum() const
unsigned int quality() const
void setTrackAddress(const std::map< int, int > &address)
Set the whole track address.
unsigned int layers() const
bool overlap(const reco::Muon &muon1, const reco::Muon &muon2, double pullX=1.0, double pullY=1.0, bool checkAdjacentChambers=false)
void setTFIdentifiers(int processor, tftype trackFinder)
Set the processor ID, track-finder type. From these two, the link is set.
Abs< T >::type abs(const T &t)
Definition: Abs.h:22
#define LogTrace(id)
void setHwQual(int bits)
Set compressed quality code as transmitted by hardware (4 bits)
unsigned int weight_lowBits() const
void setHwPt(int bits)
Set compressed pT as transmitted by hardware LSB = 0.5 (9 bits)
void setHwEta(int bits)
Set compressed eta as transmitted by hardware LSB = 0.010875 (9 bits)
unsigned int ch() const
char data[epos_bytes_allocation]
Definition: EPOS_Wrapper.h:82
const int hwPt() const
Get compressed pT (returned int * 0.5 = pT (GeV))
void setHwSignValid(int bits)
Set whether charge measurement is valid (0 for high pT muons)
Definition: AMCSpec.h:8
void unpack(unsigned int fed, unsigned int amc, const MuonDataWord64 &raw, l1t::RegionalMuonCandBxCollection *muColl)
unsigned int vch() const
void push_back(int bx, T object)
void setHwSign(int bits)
Set charge sign bit (charge = (-1)^(sign))