CMS 3D CMS Logo

L1AnalysisGMT.cc
Go to the documentation of this file.
2 
4 
6 
8  unsigned maxDTBX,
9  unsigned maxCSC,
10  unsigned maxRPC,
11  unsigned maxGMT,
12  bool physVal) {
13  std::vector<L1MuGMTReadoutRecord> gmt_records = gmtrc->getRecords();
14  std::vector<L1MuGMTReadoutRecord>::const_iterator igmtrr;
15  for (igmtrr = gmt_records.begin(); igmtrr != gmt_records.end(); igmtrr++) {
16  std::vector<L1MuRegionalCand>::const_iterator iter1;
17  std::vector<L1MuRegionalCand> rmc;
18 
19  if (igmtrr->getBxInEvent() == 0) {
20  gmt_.EvBx = igmtrr->getBxNr();
21  }
22 
23  //
24  // DTBX Trigger
25  //
26 
27  int iidt = 0;
28  rmc = igmtrr->getDTBXCands();
29  for (iter1 = rmc.begin(); iter1 != rmc.end(); iter1++) {
30  if ((unsigned)gmt_.Ndt < maxDTBX && !(*iter1).empty()) {
31  gmt_.Bxdt.push_back((*iter1).bx());
32  if (physVal) {
33  gmt_.Etadt.push_back(float((*iter1).etaValue()));
34  gmt_.Phidt.push_back(float((*iter1).phiValue()));
35  gmt_.Ptdt.push_back(float((*iter1).ptValue()));
36  } else {
37  gmt_.Etadt.push_back(float((*iter1).eta_packed()));
38  gmt_.Phidt.push_back(float((*iter1).phi_packed()));
39  gmt_.Ptdt.push_back(float((*iter1).pt_packed()));
40  }
41  gmt_.Chadt.push_back((*iter1).chargeValue());
42  if (!(*iter1).chargeValid())
43  gmt_.Chadt.push_back(0);
44  gmt_.FineEtadt.push_back((*iter1).isFineHalo());
45  gmt_.Qualdt.push_back((*iter1).quality());
46  gmt_.Dwdt.push_back((*iter1).getDataWord());
47  gmt_.Chdt.push_back(iidt);
48 
49  gmt_.Ndt++;
50  }
51  iidt++;
52  }
53 
54  //
55  // CSC Trigger
56  //
57 
58  rmc = igmtrr->getCSCCands();
59  for (iter1 = rmc.begin(); iter1 != rmc.end(); iter1++) {
60  if ((unsigned)gmt_.Ncsc < maxCSC && !(*iter1).empty()) {
61  gmt_.Bxcsc.push_back((*iter1).bx());
62  if (physVal) {
63  gmt_.Etacsc.push_back((*iter1).etaValue());
64  gmt_.Phicsc.push_back((*iter1).phiValue());
65  gmt_.Ptcsc.push_back((*iter1).ptValue());
66  } else {
67  gmt_.Etacsc.push_back((*iter1).eta_packed());
68  gmt_.Phicsc.push_back((*iter1).phi_packed());
69  gmt_.Ptcsc.push_back((*iter1).pt_packed());
70  }
71  gmt_.Chacsc.push_back((*iter1).chargeValue());
72  if (!(*iter1).chargeValid())
73  gmt_.Chacsc.push_back(0);
74  gmt_.Qualcsc.push_back((*iter1).quality());
75  gmt_.Dwcsc.push_back((*iter1).getDataWord());
76 
77  gmt_.Ncsc++;
78  }
79  }
80 
81  //
82  // RPCb Trigger
83  //
84 
85  rmc = igmtrr->getBrlRPCCands();
86  for (iter1 = rmc.begin(); iter1 != rmc.end(); iter1++) {
87  if ((unsigned)gmt_.Nrpcb < maxRPC && !(*iter1).empty()) {
88  gmt_.Bxrpcb.push_back((*iter1).bx());
89  if (physVal) {
90  gmt_.Etarpcb.push_back((*iter1).etaValue());
91  gmt_.Phirpcb.push_back((*iter1).phiValue());
92  gmt_.Ptrpcb.push_back((*iter1).ptValue());
93  } else {
94  gmt_.Etarpcb.push_back((*iter1).eta_packed());
95  gmt_.Phirpcb.push_back((*iter1).phi_packed());
96  gmt_.Ptrpcb.push_back((*iter1).pt_packed());
97  }
98  gmt_.Charpcb.push_back((*iter1).chargeValue());
99  if (!(*iter1).chargeValid())
100  gmt_.Charpcb.push_back(0);
101  gmt_.Qualrpcb.push_back((*iter1).quality());
102  gmt_.Dwrpcb.push_back((*iter1).getDataWord());
103 
104  gmt_.Nrpcb++;
105  }
106  }
107 
108  //
109  // RPCf Trigger
110  //
111 
112  rmc = igmtrr->getFwdRPCCands();
113  for (iter1 = rmc.begin(); iter1 != rmc.end(); iter1++) {
114  if ((unsigned)gmt_.Nrpcf < maxRPC && !(*iter1).empty()) {
115  gmt_.Bxrpcf.push_back((*iter1).bx());
116  if (physVal) {
117  gmt_.Etarpcf.push_back((*iter1).etaValue());
118  gmt_.Phirpcf.push_back((*iter1).phiValue());
119  gmt_.Ptrpcf.push_back((*iter1).ptValue());
120  } else {
121  gmt_.Etarpcf.push_back((*iter1).eta_packed());
122  gmt_.Phirpcf.push_back((*iter1).phi_packed());
123  gmt_.Ptrpcf.push_back((*iter1).pt_packed());
124  }
125  gmt_.Charpcf.push_back((*iter1).chargeValue());
126  if (!(*iter1).chargeValid())
127  gmt_.Charpcf.push_back(0);
128  gmt_.Qualrpcf.push_back((*iter1).quality());
129  gmt_.Dwrpcf.push_back((*iter1).getDataWord());
130 
131  gmt_.Nrpcf++;
132  }
133  }
134 
135  //
136  // GMT_. Trigger
137  //
138 
139  std::vector<L1MuGMTExtendedCand>::const_iterator gmt_iter;
140  std::vector<L1MuGMTExtendedCand> exc = igmtrr->getGMTCands();
141  for (gmt_iter = exc.begin(); gmt_iter != exc.end(); gmt_iter++) {
142  if ((unsigned)gmt_.N < maxGMT && !(*gmt_iter).empty()) {
143  gmt_.CandBx.push_back((*gmt_iter).bx());
144  if (physVal) {
145  gmt_.Eta.push_back((*gmt_iter).etaValue());
146  gmt_.Phi.push_back((*gmt_iter).phiValue());
147  gmt_.Pt.push_back((*gmt_iter).ptValue());
148  } else {
149  gmt_.Eta.push_back((*gmt_iter).etaIndex());
150  gmt_.Phi.push_back((*gmt_iter).phiIndex());
151  gmt_.Pt.push_back((*gmt_iter).ptIndex());
152  }
153  gmt_.Cha.push_back((*gmt_iter).charge());
154  if (!(*gmt_iter).charge_valid())
155  gmt_.Cha.push_back(0);
156  gmt_.Qual.push_back((*gmt_iter).quality());
157  gmt_.Det.push_back((*gmt_iter).detector());
158  gmt_.Rank.push_back((*gmt_iter).rank());
159  gmt_.Isol.push_back((*gmt_iter).isol());
160  gmt_.Mip.push_back((*gmt_iter).mip());
161  gmt_.Dw.push_back((*gmt_iter).getDataWord());
162 
163  gmt_.IdxRPCb.push_back(-1);
164  gmt_.IdxRPCf.push_back(-1);
165  gmt_.IdxDTBX.push_back(-1);
166  gmt_.IdxCSC.push_back(-1);
167 
168  if ((*gmt_iter).isMatchedCand() || (*gmt_iter).isRPC()) {
169  if ((*gmt_iter).isFwd()) {
170  gmt_.IdxRPCf.back() = (*gmt_iter).getRPCIndex();
171  } else {
172  gmt_.IdxRPCb.back() = (*gmt_iter).getRPCIndex();
173  }
174  }
175 
176  if ((*gmt_iter).isMatchedCand() || (!(*gmt_iter).isRPC())) {
177  if ((*gmt_iter).isFwd()) {
178  gmt_.IdxCSC.back() = (*gmt_iter).getDTCSCIndex();
179  } else {
180  gmt_.IdxDTBX.back() = (*gmt_iter).getDTCSCIndex();
181  }
182  }
183  gmt_.N++;
184  }
185  }
186  }
187 }
L1AnalysisGMTDataFormat gmt_
Definition: L1AnalysisGMT.h:30
std::vector< L1MuGMTReadoutRecord > const & getRecords() const
void Set(const L1MuGMTReadoutCollection *gmtrc, unsigned maxDTBX, unsigned maxCSC, unsigned maxRPC, unsigned maxGMT, bool physVal)
Definition: L1AnalysisGMT.cc:7