CMS 3D CMS Logo

L1AnalysisDTTF.cc
Go to the documentation of this file.
1 #include <cmath>
3 #include <cmath>
4 
6 
8 
10  unsigned int maxDTPH) {
11  const L1MuDTChambPhContainer::Phi_Container *PhContainer = L1MuDTChambPhContainer->getContainer();
12 
13  dttf_.phSize = PhContainer->size();
14  int iphtr = 0;
15  double pig = acos(-1);
16  for (L1MuDTChambPhContainer::Phi_Container::const_iterator DTPhDigiItr = PhContainer->begin();
17  DTPhDigiItr != PhContainer->end();
18  ++DTPhDigiItr) {
19  if ((unsigned int)iphtr > maxDTPH - 1)
20  continue;
21  dttf_.phBx.push_back(DTPhDigiItr->bxNum() - DTPhDigiItr->Ts2Tag() + 1);
22  dttf_.phWh.push_back(DTPhDigiItr->whNum());
23  dttf_.phSe.push_back(DTPhDigiItr->scNum());
24  dttf_.phSt.push_back(DTPhDigiItr->stNum());
25  dttf_.phAng.push_back(DTPhDigiItr->phi());
26  dttf_.phBandAng.push_back(DTPhDigiItr->phiB());
27  double locphi = (((double)DTPhDigiItr->phi()) / 4096.0);
28  double newphi = locphi + (DTPhDigiItr->scNum() * (pig / 6.));
29  if (newphi > 2 * pig)
30  newphi -= 2 * pig;
31  if (newphi < 0)
32  newphi += 2 * pig;
33  dttf_.phGlobPhi.push_back(newphi);
34  dttf_.phCode.push_back(DTPhDigiItr->code());
35  dttf_.phX.push_back(DTPhDigiItr->scNum());
36  dttf_.phY.push_back(DTPhDigiItr->stNum() + 4 * (DTPhDigiItr->whNum() + 2));
37 
38  iphtr++;
39  }
40 }
41 
43  unsigned int maxDTTH) {
44  const L1MuDTChambThContainer::The_Container *ThContainer = L1MuDTChambThContainer->getContainer();
45 
46  int ithtr = 0;
47  dttf_.thSize = ThContainer->size();
48  dttf_.thTheta.ResizeTo(dttf_.thSize, 7);
49  dttf_.thCode.ResizeTo(dttf_.thSize, 7);
50 
51  for (L1MuDTChambThContainer::The_Container::const_iterator DTThDigiItr = ThContainer->begin();
52  DTThDigiItr != ThContainer->end();
53  ++DTThDigiItr) {
54  if ((unsigned int)ithtr > maxDTTH - 1)
55  continue;
56  dttf_.thBx.push_back(DTThDigiItr->bxNum() + 1);
57  dttf_.thWh.push_back(DTThDigiItr->whNum());
58  dttf_.thSe.push_back(DTThDigiItr->scNum());
59  dttf_.thSt.push_back(DTThDigiItr->stNum());
60  dttf_.thX.push_back(DTThDigiItr->stNum() + 4 * (DTThDigiItr->whNum() + 2));
61  // int xpos = iwh*4+ist+1; ????
62  dttf_.thY.push_back(DTThDigiItr->scNum());
64 
65  for (unsigned int j = 0; j < 7; j++) {
66  dttf_.thTheta[ithtr][j] = DTThDigiItr->position(j);
67  dttf_.thCode[ithtr][j] = DTThDigiItr->code(j);
68  }
69 
70  ithtr++;
71  }
72 }
73 
75  unsigned int maxDTTR) {
76  double pig = acos(-1);
77  const L1MuDTTrackContainer::TrackContainer *tr = L1MuDTTrackContainer->getContainer();
78  int idttr = 0;
79  dttf_.trSize = tr->size();
80  for (L1MuDTTrackContainer::TrackContainer::const_iterator i = tr->begin(); i != tr->end(); ++i) {
81  if ((unsigned int)idttr > maxDTTR - 1)
82  continue;
83  dttf_.trBx.push_back(i->bx() + 1);
84  dttf_.trTag.push_back(i->TrkTag());
85  dttf_.trQual.push_back(i->quality_packed());
86  dttf_.trPtPck.push_back(i->pt_packed());
87  dttf_.trPtVal.push_back(i->ptValue());
88  dttf_.trPhiPck.push_back(i->phi_packed());
89  dttf_.trPhiVal.push_back(i->phiValue());
90  dttf_.trEtaPck.push_back(i->eta_packed());
91  dttf_.trEtaVal.push_back(i->etaValue());
92 
93  int phi_local = i->phi_packed(); //range: 0 < phi_local < 31
94  if (phi_local > 15)
95  phi_local -= 32; //range: -16 < phi_local < 15
96  double phi_global =
97  (phi_local * (pig / 72.)) + ((pig / 6.) * i->scNum()); // + 12*i->scNum(); //range: -16 < phi_global < 147
98  if (phi_global < 0)
99  phi_global += 2 * pig; //range: 0 < phi_global < 147
100  if (phi_global > 2 * pig)
101  phi_global -= 2 * pig; //range: 0 < phi_global < 143
102  dttf_.trPhiGlob.push_back(phi_global);
103  dttf_.trChPck.push_back(i->charge_packed());
104  dttf_.trWh.push_back(i->whNum());
105  dttf_.trSc.push_back(i->scNum());
106  unsigned int addresses = 0;
107  for (int KK = 0; KK < 4; KK++) {
108  addresses |= ((unsigned int)(i->stNum(KK + 1)) << (KK * 4));
109  }
110  dttf_.trAddress.push_back(addresses);
111  idttr++;
112  }
113 }
void SetDTPH(const edm::Handle< L1MuDTChambPhContainer > L1MuDTChambPhContainer, unsigned int maxDTPH)
The_Container const * getContainer() const
L1AnalysisDTTFDataFormat dttf_
std::vector< L1MuDTTrackCand > TrackContainer
std::vector< L1MuDTChambPhDigi > Phi_Container
std::vector< L1MuDTChambThDigi > The_Container
void SetDTTR(const edm::Handle< L1MuDTTrackContainer > L1MuDTTrackContainer, unsigned int maxDTTR)
Phi_Container const * getContainer() const
void SetDTTH(const edm::Handle< L1MuDTChambThContainer > L1MuDTChambThContainer, unsigned int maxDTTH)
TrackContainer const * getContainer() const