CMS 3D CMS Logo

List of all members | Classes | Public Member Functions | Private Member Functions | Private Attributes | Static Private Attributes
CSCTFSectorProcessor Class Reference

KK. More...

#include <CSCTFSectorProcessor.h>

Classes

class  h
 

Public Member Functions

 CSCTFSectorProcessor (const unsigned &endcap, const unsigned &sector, const edm::ParameterSet &pset, bool tmb07, const L1MuTriggerScales *scales, const L1MuTriggerPtScale *ptScale)
 
CSCTriggerContainer< csctf::TrackStubdtStubs () const
 
std::vector< csctf::TrackStubfilteredStubs () const
 
void initialize (const edm::EventSetup &c)
 KK. More...
 
int maxBX () const
 
int minBX () const
 
void printDisclaimer (int firmSP, int firmFA)
 
void readParameters (const edm::ParameterSet &pset)
 
int run (const CSCTriggerContainer< csctf::TrackStub > &)
 
CSCTriggerContainer< csc::L1Tracktracks () const
 
 ~CSCTFSectorProcessor ()
 

Private Member Functions

 CSCTFSectorProcessor (const CSCTFSectorProcessor &par)
 
CSCTFSectorProcessoroperator= (const CSCTFSectorProcessor &rhs)
 

Private Attributes

CSCTFSPCoreLogiccore_
 
CSCTriggerContainer< csctf::TrackStubdt_stubs
 
std::map< int, int > firmSP_Map
 
bool initFail_
 
bool initializeFromPSet
 
bool isCoreVerbose
 
int kill_fiber
 
CSCTriggerContainer< csc::L1Trackl1_tracks
 
int m_allowALCTonly
 
int m_allowCLCTonly
 
int m_bxa_depth
 
int m_curvedp
 
unsigned m_endcap
 
int m_etamax [8]
 
int m_etamin [8]
 
int m_etawin [7]
 
int m_firmDD
 
int m_firmFA
 
int m_firmSP
 
int m_firmVM
 
bool m_gangedME1a
 
unsigned m_latency
 
int m_maxBX
 
int m_maxdeta112_accp
 
int m_maxdeta113_accp
 
int m_maxdeta12_accp
 
int m_maxdeta13_accp
 
int m_maxdphi112_accp
 
int m_maxdphi113_accp
 
int m_maxdphi12_accp
 
int m_maxdphi13_accp
 
int m_mbaPhiOff
 
int m_mbbPhiOff
 
int m_minBX
 
int m_mindeta112_accp
 
int m_mindeta113_accp
 
int m_mindeta12_accp
 
int m_mindeta13_accp
 
int m_mindetap
 
int m_mindetap_halo
 
int m_mindphip
 
int m_mindphip_halo
 
int m_preTrigger
 
unsigned m_sector
 
int m_straightp
 
int m_widePhi
 
CSCTFPtLUTptLUT_
 
int QualityEnableME1a
 
int QualityEnableME1b
 
int QualityEnableME1c
 
int QualityEnableME1d
 
int QualityEnableME1e
 
int QualityEnableME1f
 
int QualityEnableME2a
 
int QualityEnableME2b
 
int QualityEnableME2c
 
int QualityEnableME3a
 
int QualityEnableME3b
 
int QualityEnableME3c
 
int QualityEnableME4a
 
int QualityEnableME4b
 
int QualityEnableME4c
 
int rescaleSinglesPhi
 
int run_core
 
unsigned int singlesTrackOutput
 
std::map< std::string, CSCSectorReceiverLUT * > srLUTs_
 
std::vector< csctf::TrackStubstub_vec_filtered
 
unsigned TMB07
 
int trigger_on_MB1a
 
int trigger_on_MB1d
 
int trigger_on_ME1a
 
int trigger_on_ME1b
 
int trigger_on_ME2
 
int trigger_on_ME3
 
int trigger_on_ME4
 

Static Private Attributes

static const std::string FPGAs [5] = {"F1", "F2", "F3", "F4", "F5"}
 

Detailed Description

KK.

Definition at line 26 of file CSCTFSectorProcessor.h.

Constructor & Destructor Documentation

CSCTFSectorProcessor::CSCTFSectorProcessor ( const unsigned &  endcap,
const unsigned &  sector,
const edm::ParameterSet pset,
bool  tmb07,
const L1MuTriggerScales scales,
const L1MuTriggerPtScale ptScale 
)

Definition at line 16 of file CSCTFSectorProcessor.cc.

References core_, makeMuonMisalignmentScenario::endcap, firmSP_Map, FPGAs, edm::ParameterSet::getParameter(), edm::ParameterSet::getUntrackedParameter(), mps_fire::i, initFail_, initializeFromPSet, isCoreVerbose, dqmiolumiharvest::j, kill_fiber, LogDebug, m_allowALCTonly, m_allowCLCTonly, m_bxa_depth, m_curvedp, m_endcap, m_etamax, m_etamin, m_etawin, m_firmDD, m_firmFA, m_firmSP, m_firmVM, m_gangedME1a, m_latency, m_maxBX, m_maxdeta112_accp, m_maxdeta113_accp, m_maxdeta12_accp, m_maxdeta13_accp, m_maxdphi112_accp, m_maxdphi113_accp, m_maxdphi12_accp, m_maxdphi13_accp, m_mbaPhiOff, m_mbbPhiOff, m_minBX, m_mindeta112_accp, m_mindeta113_accp, m_mindeta12_accp, m_mindeta13_accp, m_mindetap, m_mindetap_halo, m_mindphip, m_mindphip_halo, m_preTrigger, m_sector, m_straightp, m_widePhi, ptLUT_, QualityEnableME1a, QualityEnableME1b, QualityEnableME1c, QualityEnableME1d, QualityEnableME1e, QualityEnableME1f, QualityEnableME2a, QualityEnableME2b, QualityEnableME2c, QualityEnableME3a, QualityEnableME3b, QualityEnableME3c, QualityEnableME4a, QualityEnableME4b, QualityEnableME4c, readParameters(), rescaleSinglesPhi, run_core, singlesTrackOutput, srLUTs_, TMB07, trigger_on_MB1a, trigger_on_MB1d, trigger_on_ME1a, trigger_on_ME1b, trigger_on_ME2, trigger_on_ME3, and trigger_on_ME4.

21  {
22  m_endcap = endcap;
23  m_sector = sector;
24  TMB07 = tmb07;
25 
26  // allows a configurable option to handle unganged ME1a
27  m_gangedME1a = pset.getUntrackedParameter<bool>("gangedME1a", true);
28 
29  // Parameter below should always present in ParameterSet:
30  m_latency = pset.getParameter<unsigned>("CoreLatency");
31  m_minBX = pset.getParameter<int>("MinBX");
32  m_maxBX = pset.getParameter<int>("MaxBX");
33  initializeFromPSet = pset.getParameter<bool>("initializeFromPSet");
34  if (m_maxBX - m_minBX >= 7)
35  edm::LogWarning("CSCTFTrackBuilder::ctor")
36  << " BX window width >= 7BX. Resetting m_maxBX=" << (m_maxBX = m_minBX + 6);
37 
38  // All following parameters may appear in either ParameterSet of in EventSetup; uninitialize:
39  m_bxa_depth = -1;
40  m_allowALCTonly = -1;
41  m_allowCLCTonly = -1;
42  m_preTrigger = -1;
43 
44  for (int index = 0; index < 7; index++)
45  m_etawin[index] = -1;
46  for (int index = 0; index < 8; index++)
47  m_etamin[index] = -1;
48  for (int index = 0; index < 8; index++)
49  m_etamax[index] = -1;
50 
51  m_mindphip = -1;
52  m_mindetap = -1;
53 
54  m_mindeta12_accp = -1;
55  m_maxdeta12_accp = -1;
56  m_maxdphi12_accp = -1;
57 
58  m_mindeta13_accp = -1;
59  m_maxdeta13_accp = -1;
60  m_maxdphi13_accp = -1;
61 
62  m_mindeta112_accp = -1;
63  m_maxdeta112_accp = -1;
64  m_maxdphi112_accp = -1;
65 
66  m_mindeta113_accp = -1;
67  m_maxdeta113_accp = -1;
68  m_maxdphi113_accp = -1;
69  m_mindphip_halo = -1;
70  m_mindetap_halo = -1;
71 
72  m_widePhi = -1;
73 
74  m_straightp = -1;
75  m_curvedp = -1;
76 
77  m_mbaPhiOff = -1;
78  m_mbbPhiOff = -1;
79 
80  kill_fiber = -1;
81  QualityEnableME1a = -1;
82  QualityEnableME1b = -1;
83  QualityEnableME1c = -1;
84  QualityEnableME1d = -1;
85  QualityEnableME1e = -1;
86  QualityEnableME1f = -1;
87  QualityEnableME2a = -1;
88  QualityEnableME2b = -1;
89  QualityEnableME2c = -1;
90  QualityEnableME3a = -1;
91  QualityEnableME3b = -1;
92  QualityEnableME3c = -1;
93  QualityEnableME4a = -1;
94  QualityEnableME4b = -1;
95  QualityEnableME4c = -1;
96 
97  run_core = -1;
98  trigger_on_ME1a = -1;
99  trigger_on_ME1b = -1;
100  trigger_on_ME2 = -1;
101  trigger_on_ME3 = -1;
102  trigger_on_ME4 = -1;
103  trigger_on_MB1a = -1;
104  trigger_on_MB1d = -1;
105 
106  singlesTrackOutput = 999;
107  rescaleSinglesPhi = -1;
108 
109  m_firmSP = -1;
110  m_firmFA = -1;
111  m_firmDD = -1;
112  m_firmVM = -1;
113 
114  initFail_ = false;
115 
116  isCoreVerbose = pset.getParameter<bool>("isCoreVerbose");
117 
118  if (initializeFromPSet)
119  readParameters(pset);
120 
121  // Sector Receiver LUTs initialization
122  edm::ParameterSet srLUTset = pset.getParameter<edm::ParameterSet>("SRLUT");
123  for (int i = 1; i <= 4; ++i) {
124  if (i == 1)
125  for (int j = 0; j < 2; j++) {
126  srLUTs_[FPGAs[j]] = new CSCSectorReceiverLUT(endcap, sector, j + 1, i, srLUTset, TMB07);
127  }
128  else
129  srLUTs_[FPGAs[i]] = new CSCSectorReceiverLUT(endcap, sector, 0, i, srLUTset, TMB07);
130  }
131 
132  core_ = new CSCTFSPCoreLogic();
133 
134  // Pt LUTs initialization
135  if (initializeFromPSet) {
136  edm::ParameterSet ptLUTset = pset.getParameter<edm::ParameterSet>("PTLUT");
137  ptLUT_ = new CSCTFPtLUT(ptLUTset, scales, ptScale);
138  LogDebug("CSCTFSectorProcessor") << "Using stand-alone PT LUT for endcap=" << m_endcap << ", sector=" << m_sector;
139  } else {
140  ptLUT_ = nullptr;
141  LogDebug("CSCTFSectorProcessor") << "Looking for PT LUT in EventSetup for endcap=" << m_endcap
142  << ", sector=" << m_sector;
143  }
144 
145  // firmware map initialization
146  // all the information are based on the firmware releases
147  // documented at http://www.phys.ufl.edu/~uvarov/SP05/SP05.htm
148 
149  // map is <m_firmSP, core_version>
150  // it may happen that the same core is used for different firmware
151  // versions, e.g. change in the wrapper only
152 
153  // this mapping accounts for runs starting from 132440
154  // schema is year+month+day
155  firmSP_Map.insert(std::pair<int, int>(20100210, 20100122));
156  firmSP_Map.insert(std::pair<int, int>(20100617, 20100122));
157  firmSP_Map.insert(std::pair<int, int>(20100629, 20100122));
158 
159  firmSP_Map.insert(std::pair<int, int>(20100728, 20100728));
160 
161  firmSP_Map.insert(std::pair<int, int>(20100901, 20100901));
162 
163  //testing firmwares
164  firmSP_Map.insert(std::pair<int, int>(20101011, 20101011));
165  firmSP_Map.insert(std::pair<int, int>(20101210, 20101210));
166  firmSP_Map.insert(std::pair<int, int>(20110204, 20110118));
167  firmSP_Map.insert(std::pair<int, int>(20110322, 20110118));
168  // 2012 core with non linear dphi
169  firmSP_Map.insert(std::pair<int, int>(20120131, 20120131));
170  firmSP_Map.insert(std::pair<int, int>(20120227, 20120131));
171  //2012 core: 4 station track at |eta|>2.1 -> ME2-ME3-ME4
172  firmSP_Map.insert(std::pair<int, int>(20120313, 20120313));
173  firmSP_Map.insert(std::pair<int, int>(20120319, 20120313));
174  //2012 core: 4 station track at |eta|>2.1 -> ME1-ME2-ME3 test
175  firmSP_Map.insert(std::pair<int, int>(20120730, 20120730));
176  //2014 core: 4 station track at |eta|>2.1 -> ME1-ME2-ME3 test + correct F/R bit set
177  firmSP_Map.insert(std::pair<int, int>(20140424, 20140424));
178  //2014 core: 4 station track at |eta|>2.1 -> ME1-ME2-ME3 test + correct F/R bit set + bug fix
179  firmSP_Map.insert(std::pair<int, int>(20140515, 20140515));
180 }
#define LogDebug(id)
T getParameter(std::string const &) const
T getUntrackedParameter(std::string const &, T const &) const
CSCTFSPCoreLogic * core_
void readParameters(const edm::ParameterSet &pset)
static const std::string FPGAs[5]
std::map< std::string, CSCSectorReceiverLUT * > srLUTs_
std::map< int, int > firmSP_Map
CSCTFSectorProcessor::~CSCTFSectorProcessor ( )

Definition at line 667 of file CSCTFSectorProcessor.cc.

References core_, FPGAs, mps_fire::i, ptLUT_, and srLUTs_.

667  {
668  for (int i = 0; i < 5; ++i) {
669  if (srLUTs_[FPGAs[i]])
670  delete srLUTs_[FPGAs[i]]; // delete the pointer
671  srLUTs_[FPGAs[i]] = nullptr; // point it at a safe place
672  }
673 
674  delete core_;
675  core_ = nullptr;
676 
677  if (ptLUT_)
678  delete ptLUT_;
679  ptLUT_ = nullptr;
680 }
CSCTFSPCoreLogic * core_
static const std::string FPGAs[5]
std::map< std::string, CSCSectorReceiverLUT * > srLUTs_
CSCTFSectorProcessor::CSCTFSectorProcessor ( const CSCTFSectorProcessor par)
inlineprivate

Definition at line 60 of file CSCTFSectorProcessor.h.

60 {}

Member Function Documentation

CSCTriggerContainer<csctf::TrackStub> CSCTFSectorProcessor::dtStubs ( ) const
inline

Definition at line 48 of file CSCTFSectorProcessor.h.

References dt_stubs.

48 { return dt_stubs; }
CSCTriggerContainer< csctf::TrackStub > dt_stubs
std::vector<csctf::TrackStub> CSCTFSectorProcessor::filteredStubs ( ) const
inline

Definition at line 46 of file CSCTFSectorProcessor.h.

References stub_vec_filtered.

Referenced by CSCTFTrackBuilder::buildTracks().

46 { return stub_vec_filtered; }
std::vector< csctf::TrackStub > stub_vec_filtered
void CSCTFSectorProcessor::initialize ( const edm::EventSetup c)

KK.

Definition at line 182 of file CSCTFSectorProcessor.cc.

References looper::config, core_, firmSP_Map, edm::EventSetup::get(), CSCTFSPCoreLogic::GetCoreFirmwareVersion(), initFail_, initializeFromPSet, isCoreVerbose, kill_fiber, LogDebug, m_allowALCTonly, m_allowCLCTonly, m_bxa_depth, m_curvedp, m_endcap, m_etamax, m_etamin, m_etawin, m_firmDD, m_firmFA, m_firmSP, m_firmVM, m_latency, m_maxdeta112_accp, m_maxdeta113_accp, m_maxdeta12_accp, m_maxdeta13_accp, m_maxdphi112_accp, m_maxdphi113_accp, m_maxdphi12_accp, m_maxdphi13_accp, m_mbaPhiOff, m_mbbPhiOff, m_mindeta112_accp, m_mindeta113_accp, m_mindeta12_accp, m_mindeta13_accp, m_mindetap, m_mindetap_halo, m_mindphip, m_mindphip_halo, m_preTrigger, m_sector, m_straightp, m_widePhi, L1MuCSCTFConfiguration::parameters(), printDisclaimer(), edm::ESHandle< T >::product(), ptLUT_, QualityEnableME1a, QualityEnableME1b, QualityEnableME1c, QualityEnableME1d, QualityEnableME1e, QualityEnableME1f, QualityEnableME2a, QualityEnableME2b, QualityEnableME2c, QualityEnableME3a, QualityEnableME3b, QualityEnableME3c, QualityEnableME4a, QualityEnableME4b, QualityEnableME4c, readParameters(), rescaleSinglesPhi, run_core, CSCTFSPCoreLogic::SetCoreFirmwareVersion(), CSCTFSPCoreLogic::SetSPFirmwareVersion(), CSCTFSPCoreLogic::SetVerbose(), singlesTrackOutput, trigger_on_MB1a, trigger_on_MB1d, trigger_on_ME1a, trigger_on_ME1b, trigger_on_ME2, trigger_on_ME3, and trigger_on_ME4.

Referenced by CSCTFTrackBuilder::initialize().

182  {
183  initFail_ = false;
184  if (!initializeFromPSet) {
185  // Only pT lut can be initialized from EventSetup, all front LUTs are initialized locally from their parametrizations
186  LogDebug("CSCTFSectorProcessor") << "Initializing endcap: " << m_endcap << " sector:" << m_sector
187  << "SP:" << (m_endcap - 1) * 6 + (m_sector - 1);
188  LogDebug("CSCTFSectorProcessor") << "Initializing pT LUT from EventSetup";
189 
190  ptLUT_ = new CSCTFPtLUT(c);
191 
192  // Extract from EventSetup alternative (to the one, used in constructor) ParameterSet
194  c.get<L1MuCSCTFConfigurationRcd>().get(config);
195  // And initialize only those parameters, which left uninitialized during construction
196  readParameters(config.product()->parameters((m_endcap - 1) * 6 + (m_sector - 1)));
197  }
198 
199  // ---------------------------------------------------------------------------
200  // This part is added per Vasile's request.
201  // It will help people understanding the emulator configuration
202  LogDebug("CSCTFSectorProcessor")
203  << "\n !!! CSCTF EMULATOR CONFIGURATION !!!"
204  << "\n\nCORE CONFIGURATION"
205  << "\n Coincidence Trigger? " << run_core << "\n Singles in ME1a? " << trigger_on_ME1a << "\n Singles in ME1b? "
206  << trigger_on_ME1b << "\n Singles in ME2? " << trigger_on_ME2 << "\n Singles in ME3? " << trigger_on_ME3
207  << "\n Singles in ME4? " << trigger_on_ME4 << "\n Singles in MB1a? " << trigger_on_MB1a << "\n Singles in MB1d? "
208  << trigger_on_MB1d
209 
210  << "\n BX Analyzer depth: assemble coinc. track with stubs in +/-" << m_bxa_depth << " Bxs"
211  << "\n Is Wide Phi Extrapolation (DeltaPhi valid up to ~15 degrees, otherwise ~7.67 degrees)? " << m_widePhi
212  << "\n PreTrigger=" << m_preTrigger
213 
214  << "\n CoreLatency=" << m_latency << "\n Is Phi for singles rescaled? " << rescaleSinglesPhi
215 
216  << "\n\nVARIOUS CONFIGURATION PARAMETERS"
217  << "\n Allow ALCT only? " << m_allowALCTonly << "\n Allow CLCT only? " << m_allowCLCTonly
218 
219  << "\nQualityEnableME1a (in general accept all LCT qualities, i.e. 0xFFFF is expected)=" << QualityEnableME1a
220  << "\nQualityEnableME1b (in general accept all LCT qualities, i.e. 0xFFFF is expected)=" << QualityEnableME1b
221  << "\nQualityEnableME1c (in general accept all LCT qualities, i.e. 0xFFFF is expected)=" << QualityEnableME1c
222  << "\nQualityEnableME1d (in general accept all LCT qualities, i.e. 0xFFFF is expected)=" << QualityEnableME1d
223  << "\nQualityEnableME1e (in general accept all LCT qualities, i.e. 0xFFFF is expected)=" << QualityEnableME1e
224  << "\nQualityEnableME1f (in general accept all LCT qualities, i.e. 0xFFFF is expected)=" << QualityEnableME1f
225  << "\nQualityEnableME2a (in general accept all LCT qualities, i.e. 0xFFFF is expected)=" << QualityEnableME2a
226  << "\nQualityEnableME2b (in general accept all LCT qualities, i.e. 0xFFFF is expected)=" << QualityEnableME2b
227  << "\nQualityEnableME2c (in general accept all LCT qualities, i.e. 0xFFFF is expected)=" << QualityEnableME2c
228  << "\nQualityEnableME3a (in general accept all LCT qualities, i.e. 0xFFFF is expected)=" << QualityEnableME3a
229  << "\nQualityEnableME3b (in general accept all LCT qualities, i.e. 0xFFFF is expected)=" << QualityEnableME3b
230  << "\nQualityEnableME3c (in general accept all LCT qualities, i.e. 0xFFFF is expected)=" << QualityEnableME3c
231  << "\nQualityEnableME4a (in general accept all LCT qualities, i.e. 0xFFFF is expected)=" << QualityEnableME4a
232  << "\nQualityEnableME4b (in general accept all LCT qualities, i.e. 0xFFFF is expected)=" << QualityEnableME4b
233  << "\nQualityEnableME4c (in general accept all LCT qualities, i.e. 0xFFFF is expected)=" << QualityEnableME4c
234 
235  << "\nkill_fiber=" << kill_fiber << "\nSingles Output Link="
237 
238  //the DAT_ETA registers meaning are explained at Table 2 of
239  //http://www.phys.ufl.edu/~uvarov/SP05/LU-SP_ReferenceGuide_090915_Update.pdf
240 
241  << "\n\nDAT_ETA REGISTERS"
242  << "\nMinimum eta difference for track cancellation logic=" << m_mindetap
243  << "\nMinimum eta difference for halo track cancellation logic=" << m_mindetap_halo
244 
245  << "\nMinimum eta for ME1-ME2 collision tracks=" << m_etamin[0]
246  << "\nMinimum eta for ME1-ME3 collision tracks=" << m_etamin[1]
247  << "\nMinimum eta for ME2-ME3 collision tracks=" << m_etamin[2]
248  << "\nMinimum eta for ME2-ME4 collision tracks=" << m_etamin[3]
249  << "\nMinimum eta for ME3-ME4 collision tracks=" << m_etamin[4]
250  << "\nMinimum eta for ME1-ME2 collision tracks in overlap region=" << m_etamin[5]
251  << "\nMinimum eta for ME2-MB1 collision tracks=" << m_etamin[6]
252  << "\nMinimum eta for ME1-ME4 collision tracks=" << m_etamin[7]
253 
254  << "\nMinimum eta difference for ME1-ME2 (except ME1/1) halo tracks=" << m_mindeta12_accp
255  << "\nMinimum eta difference for ME1-ME3 (except ME1/1) halo tracks=" << m_mindeta13_accp
256  << "\nMinimum eta difference for ME1/1-ME2 halo tracks=" << m_mindeta112_accp
257  << "\nMinimum eta difference for ME1/1-ME3 halo tracks=" << m_mindeta113_accp
258 
259  << "\nMaximum eta for ME1-ME2 collision tracks=" << m_etamax[0]
260  << "\nMaximum eta for ME1-ME3 collision tracks=" << m_etamax[1]
261  << "\nMaximum eta for ME2-ME3 collision tracks=" << m_etamax[2]
262  << "\nMaximum eta for ME2-ME4 collision tracks=" << m_etamax[3]
263  << "\nMaximum eta for ME3-ME4 collision tracks=" << m_etamax[4]
264  << "\nMaximum eta for ME1-ME2 collision tracks in overlap region=" << m_etamax[5]
265  << "\nMaximum eta for ME2-MB1 collision tracks=" << m_etamax[6]
266  << "\nMaximum eta for ME1-ME4 collision tracks=" << m_etamax[7]
267 
268  << "\nMaximum eta difference for ME1-ME2 (except ME1/1) halo tracks=" << m_maxdeta12_accp
269  << "\nMaximum eta difference for ME1-ME3 (except ME1/1) halo tracks=" << m_maxdeta13_accp
270  << "\nMaximum eta difference for ME1/1-ME2 halo tracks=" << m_maxdeta112_accp
271  << "\nMaximum eta difference for ME1/1-ME3 halo tracks=" << m_maxdeta113_accp
272 
273  << "\nEta window for ME1-ME2 collision tracks=" << m_etawin[0]
274  << "\nEta window for ME1-ME3 collision tracks=" << m_etawin[1]
275  << "\nEta window for ME2-ME3 collision tracks=" << m_etawin[2]
276  << "\nEta window for ME2-ME4 collision tracks=" << m_etawin[3]
277  << "\nEta window for ME3-ME4 collision tracks=" << m_etawin[4]
278  << "\nEta window for ME1-ME2 collision tracks in overlap region=" << m_etawin[5]
279  << "\nEta window for ME1-ME4 collision tracks=" << m_etawin[6]
280 
281  << "\nMaximum phi difference for ME1-ME2 (except ME1/1) halo tracks=" << m_maxdphi12_accp
282  << "\nMaximum phi difference for ME1-ME3 (except ME1/1) halo tracks=" << m_maxdphi13_accp
283  << "\nMaximum phi difference for ME1/1-ME2 halo tracks=" << m_maxdphi112_accp
284  << "\nMaximum phi difference for ME1/1-ME3 halo tracks=" << m_maxdphi113_accp
285 
286  << "\nMinimum phi difference for track cancellation logic=" << m_mindphip
287  << "\nMinimum phi difference for halo track cancellation logic=" << m_mindphip_halo
288 
289  << "\nParameter for the correction of misaligned 1-2-3-4 straight tracks =" << m_straightp
290  << "\nParameter for the correction of misaligned 1-2-3-4 curved tracks=" << m_curvedp
291  << "\nPhi Offset for MB1A=" << m_mbaPhiOff << "\nPhi Offset for MB1D=" << m_mbbPhiOff
292 
293  << "\nFirmware SP year+month+day:" << m_firmSP << "\nFirmware FA year+month+day:" << m_firmFA
294  << "\nFirmware DD year+month+day:" << m_firmDD << "\nFirmware VM year+month+day:" << m_firmVM;
295 
297 
298  // set core verbosity: for debugging only purpouses
299  // in general the output is handled to Alex Madorsky
301 
302  // Set the SP firmware
304 
305  // Set the firmware for the CORE
306  int firmVersCore = firmSP_Map.find(m_firmSP)->second;
307  core_->SetCoreFirmwareVersion(firmVersCore);
308  edm::LogInfo("CSCTFSectorProcessor") << "\nCore Firmware is set to " << core_->GetCoreFirmwareVersion();
309  // ---------------------------------------------------------------------------
310 
311  // Check if parameters were not initialized in both: constuctor (from .cf? file) and initialize method (from EventSetup)
312  if (m_bxa_depth < 0) {
313  initFail_ = true;
314  edm::LogError("CSCTFSectorProcessor")
315  << "BXAdepth parameter left uninitialized for endcap=" << m_endcap << ", sector=" << m_sector;
316  }
317  if (m_allowALCTonly < 0) {
318  initFail_ = true;
319  edm::LogError("CSCTFSectorProcessor")
320  << "AllowALCTonly parameter left uninitialized for endcap=" << m_endcap << ", sector=" << m_sector;
321  }
322  if (m_allowCLCTonly < 0) {
323  initFail_ = true;
324  edm::LogError("CSCTFSectorProcessor")
325  << "AllowCLCTonly parameter left uninitialized for endcap=" << m_endcap << ", sector=" << m_sector;
326  }
327  if (m_preTrigger < 0) {
328  initFail_ = true;
329  edm::LogError("CSCTFSectorProcessor")
330  << "PreTrigger parameter left uninitialized for endcap=" << m_endcap << ", sector=" << m_sector;
331  }
332  if (m_mindphip < 0) {
333  initFail_ = true;
334  edm::LogError("CSCTFSectorProcessor")
335  << "mindphip parameter left uninitialized for endcap=" << m_endcap << ", sector=" << m_sector;
336  }
337  if (m_mindetap < 0) {
338  initFail_ = true;
339  edm::LogError("CSCTFSectorProcessor")
340  << "mindeta parameter left uninitialized for endcap=" << m_endcap << ", sector=" << m_sector;
341  }
342  if (m_straightp < 0) {
343  initFail_ = true;
344  edm::LogError("CSCTFSectorProcessor")
345  << "straightp parameter left unitialized for endcap=" << m_endcap << ", sector=" << m_sector;
346  }
347  if (m_curvedp < 0) {
348  initFail_ = true;
349  edm::LogError("CSCTFSectorProcessor")
350  << "curvedp parameter left unitialized for endcap=" << m_endcap << ",sector=" << m_sector;
351  }
352  if (m_mbaPhiOff < 0) {
353  initFail_ = true;
354  edm::LogError("CSCTFSectorProcessor")
355  << "mbaPhiOff parameter left unitialized for endcap=" << m_endcap << ",sector=" << m_sector;
356  }
357  if (m_mbbPhiOff < 0) {
358  initFail_ = true;
359  edm::LogError("CSCTFSectorProcessor")
360  << "mbbPhiOff parameter left unitialized for endcap=" << m_endcap << ",sector=" << m_sector;
361  }
362  if (m_mindeta12_accp < 0) {
363  initFail_ = true;
364  edm::LogError("CSCTFSectorProcessor")
365  << "mindeta_accp12 parameter left uninitialized for endcap=" << m_endcap << ", sector=" << m_sector;
366  }
367  if (m_maxdeta12_accp < 0) {
368  initFail_ = true;
369  edm::LogError("CSCTFSectorProcessor")
370  << "maxdeta_accp12 parameter left uninitialized for endcap=" << m_endcap << ", sector=" << m_sector;
371  }
372  if (m_maxdphi12_accp < 0) {
373  initFail_ = true;
374  edm::LogError("CSCTFSectorProcessor")
375  << "maxdphi_accp12 parameter left uninitialized for endcap=" << m_endcap << ", sector=" << m_sector;
376  }
377  if (m_mindeta13_accp < 0) {
378  initFail_ = true;
379  edm::LogError("CSCTFSectorProcessor")
380  << "mindeta_accp13 parameter left uninitialized for endcap=" << m_endcap << ", sector=" << m_sector;
381  }
382  if (m_maxdeta13_accp < 0) {
383  initFail_ = true;
384  edm::LogError("CSCTFSectorProcessor")
385  << "maxdeta_accp13 parameter left uninitialized for endcap=" << m_endcap << ", sector=" << m_sector;
386  }
387  if (m_maxdphi13_accp < 0) {
388  initFail_ = true;
389  edm::LogError("CSCTFSectorProcessor")
390  << "maxdphi_accp13 parameter left uninitialized for endcap=" << m_endcap << ", sector=" << m_sector;
391  }
392  if (m_mindeta112_accp < 0) {
393  initFail_ = true;
394  edm::LogError("CSCTFSectorProcessor")
395  << "mindeta_accp112 parameter left uninitialized for endcap=" << m_endcap << ", sector=" << m_sector;
396  }
397  if (m_maxdeta112_accp < 0) {
398  initFail_ = true;
399  edm::LogError("CSCTFSectorProcessor")
400  << "maxdeta_accp112 parameter left uninitialized for endcap=" << m_endcap << ", sector=" << m_sector;
401  }
402  if (m_maxdphi112_accp < 0) {
403  initFail_ = true;
404  edm::LogError("CSCTFSectorProcessor")
405  << "maxdphi_accp112 parameter left uninitialized for endcap=" << m_endcap << ", sector=" << m_sector;
406  }
407  if (m_mindeta113_accp < 0) {
408  initFail_ = true;
409  edm::LogError("CSCTFSectorProcessor")
410  << "mindeta_accp113 parameter left uninitialized for endcap=" << m_endcap << ", sector=" << m_sector;
411  }
412  if (m_maxdeta113_accp < 0) {
413  initFail_ = true;
414  edm::LogError("CSCTFSectorProcessor")
415  << "maxdeta_accp113 parameter left uninitialized for endcap=" << m_endcap << ", sector=" << m_sector;
416  }
417  if (m_maxdphi113_accp < 0) {
418  initFail_ = true;
419  edm::LogError("CSCTFSectorProcessor")
420  << "maxdphi_accp113 parameter left uninitialized for endcap=" << m_endcap << ", sector=" << m_sector;
421  }
422  if (m_mindphip_halo < 0) {
423  initFail_ = true;
424  edm::LogError("CSCTFSectorProcessor")
425  << "mindphip_halo parameter left uninitialized for endcap=" << m_endcap << ", sector=" << m_sector;
426  }
427  if (m_mindetap_halo < 0) {
428  initFail_ = true;
429  edm::LogError("CSCTFSectorProcessor")
430  << "mindetep_halo parameter left uninitialized for endcap=" << m_endcap << ", sector=" << m_sector;
431  }
432 
433  if (m_widePhi < 0) {
434  initFail_ = true;
435  edm::LogError("CSCTFSectorProcessor")
436  << "widePhi parameter left unitialized for endcap=" << m_endcap << ", sector=" << m_sector;
437  }
438 
439  for (int index = 0; index < 8; index++)
440  if (m_etamax[index] < 0) {
441  initFail_ = true;
442  edm::LogError("CSCTFSectorProcessor")
443  << "Some (" << (8 - index) << ") of EtaMax parameters left uninitialized for endcap=" << m_endcap
444  << ", sector=" << m_sector;
445  }
446  for (int index = 0; index < 8; index++)
447  if (m_etamin[index] < 0) {
448  initFail_ = true;
449  edm::LogError("CSCTFSectorProcessor")
450  << "Some (" << (8 - index) << ") of EtaMin parameters left uninitialized for endcap=" << m_endcap
451  << ", sector=" << m_sector;
452  }
453  for (int index = 0; index < 7; index++)
454  if (m_etawin[index] < 0) {
455  initFail_ = true;
456  edm::LogError("CSCTFSectorProcessor")
457  << "Some (" << (6 - index) << ") of EtaWindows parameters left uninitialized for endcap=" << m_endcap
458  << ", sector=" << m_sector;
459  }
460  if (kill_fiber < 0) {
461  initFail_ = true;
462  edm::LogError("CSCTFTrackBuilder") << "kill_fiber parameter left uninitialized";
463  }
464  if (run_core < 0) {
465  initFail_ = true;
466  edm::LogError("CSCTFTrackBuilder") << "run_core parameter left uninitialized";
467  }
468  if (trigger_on_ME1a < 0) {
469  initFail_ = true;
470  edm::LogError("CSCTFTrackBuilder") << "trigger_on_ME1a parameter left uninitialized";
471  }
472  if (trigger_on_ME1b < 0) {
473  initFail_ = true;
474  edm::LogError("CSCTFTrackBuilder") << "trigger_on_ME1b parameter left uninitialized";
475  }
476  if (trigger_on_ME2 < 0) {
477  initFail_ = true;
478  edm::LogError("CSCTFTrackBuilder") << "trigger_on_ME2 parameter left uninitialized";
479  }
480  if (trigger_on_ME3 < 0) {
481  initFail_ = true;
482  edm::LogError("CSCTFTrackBuilder") << "trigger_on_ME3 parameter left uninitialized";
483  }
484  if (trigger_on_ME4 < 0) {
485  initFail_ = true;
486  edm::LogError("CSCTFTrackBuilder") << "trigger_on_ME4 parameter left uninitialized";
487  }
488  if (trigger_on_MB1a < 0) {
489  initFail_ = true;
490  edm::LogError("CSCTFTrackBuilder") << "trigger_on_MB1a parameter left uninitialized";
491  }
492  if (trigger_on_MB1d < 0) {
493  initFail_ = true;
494  edm::LogError("CSCTFTrackBuilder") << "trigger_on_MB1d parameter left uninitialized";
495  }
496  if (trigger_on_ME1a > 0 || trigger_on_ME1b > 0 || trigger_on_ME2 > 0 || trigger_on_ME3 > 0 || trigger_on_ME4 > 0 ||
497  trigger_on_MB1a > 0 || trigger_on_MB1d > 0) {
498  if (singlesTrackOutput == 999) {
499  initFail_ = true;
500  edm::LogError("CSCTFTrackBuilder") << "singlesTrackOutput parameter left uninitialized";
501  }
502  if (rescaleSinglesPhi < 0) {
503  initFail_ = true;
504  edm::LogError("CSCTFTrackBuilder") << "rescaleSinglesPhi parameter left uninitialized";
505  }
506  }
507  if (QualityEnableME1a < 0) {
508  initFail_ = true;
509  edm::LogError("CSCTFTrackBuilder") << "QualityEnableME1a parameter left uninitialized";
510  }
511  if (QualityEnableME1b < 0) {
512  initFail_ = true;
513  edm::LogError("CSCTFTrackBuilder") << "QualityEnableME1b parameter left uninitialized";
514  }
515  if (QualityEnableME1c < 0) {
516  initFail_ = true;
517  edm::LogError("CSCTFTrackBuilder") << "QualityEnableME1c parameter left uninitialized";
518  }
519  if (QualityEnableME1d < 0) {
520  initFail_ = true;
521  edm::LogError("CSCTFTrackBuilder") << "QualityEnableME1d parameter left uninitialized";
522  }
523  if (QualityEnableME1e < 0) {
524  initFail_ = true;
525  edm::LogError("CSCTFTrackBuilder") << "QualityEnableME1e parameter left uninitialized";
526  }
527  if (QualityEnableME1f < 0) {
528  initFail_ = true;
529  edm::LogError("CSCTFTrackBuilder") << "QualityEnableME1f parameter left uninitialized";
530  }
531  if (QualityEnableME2a < 0) {
532  initFail_ = true;
533  edm::LogError("CSCTFTrackBuilder") << "QualityEnableME2a parameter left uninitialized";
534  }
535  if (QualityEnableME2b < 0) {
536  initFail_ = true;
537  edm::LogError("CSCTFTrackBuilder") << "QualityEnableME2b parameter left uninitialized";
538  }
539  if (QualityEnableME2c < 0) {
540  initFail_ = true;
541  edm::LogError("CSCTFTrackBuilder") << "QualityEnableME2c parameter left uninitialized";
542  }
543  if (QualityEnableME3a < 0) {
544  initFail_ = true;
545  edm::LogError("CSCTFTrackBuilder") << "QualityEnableME3a parameter left uninitialized";
546  }
547  if (QualityEnableME3b < 0) {
548  initFail_ = true;
549  edm::LogError("CSCTFTrackBuilder") << "QualityEnableME3b parameter left uninitialized";
550  }
551  if (QualityEnableME3c < 0) {
552  initFail_ = true;
553  edm::LogError("CSCTFTrackBuilder") << "QualityEnableME3c parameter left uninitialized";
554  }
555  if (QualityEnableME4a < 0) {
556  initFail_ = true;
557  edm::LogError("CSCTFTrackBuilder") << "QualityEnableME4a parameter left uninitialized";
558  }
559  if (QualityEnableME4b < 0) {
560  initFail_ = true;
561  edm::LogError("CSCTFTrackBuilder") << "QualityEnableME4b parameter left uninitialized";
562  }
563  if (QualityEnableME4c < 0) {
564  initFail_ = true;
565  edm::LogError("CSCTFTrackBuilder") << "QualityEnableME4c parameter left uninitialized";
566  }
567 
568  if (m_firmSP < 1) {
569  initFail_ = true;
570  edm::LogError("CSCTFSectorProcessor") << " firmwareSP parameter left uninitialized!!!\n";
571  }
572  if (m_firmFA < 1) {
573  initFail_ = true;
574  edm::LogError("CSCTFSectorProcessor") << " firmwareFA parameter left uninitialized!!!\n";
575  }
576  if (m_firmDD < 1) {
577  initFail_ = true;
578  edm::LogError("CSCTFSectorProcessor") << " firmwareDD parameter left uninitialized!!!\n";
579  }
580  if (m_firmVM < 1) {
581  initFail_ = true;
582  edm::LogError("CSCTFSectorProcessor") << " firmwareVM parameter left uninitialized!!!\n";
583  }
584 
585  if ((m_firmFA != m_firmDD) || (m_firmFA != m_firmVM) || (m_firmDD != m_firmVM)) {
586  initFail_ = true;
587  edm::LogError("CSCTFSectorProcessor::initialize")
588  << " firmwareFA (=" << m_firmFA << "), "
589  << " firmwareDD (=" << m_firmDD << "), "
590  << " firmwareVM (=" << m_firmVM << ") are NOT identical: it shoultd NOT happen!\n";
591  }
592 }
#define LogDebug(id)
CSCTFSPCoreLogic * core_
void readParameters(const edm::ParameterSet &pset)
edm::ParameterSet parameters(int sp) const
void printDisclaimer(int firmSP, int firmFA)
config
Definition: looper.py:291
void SetSPFirmwareVersion(const unsigned int fwVer)
unsigned int GetCoreFirmwareVersion()
void SetCoreFirmwareVersion(const unsigned int fwVer)
void SetVerbose(const bool verb)
T get() const
Definition: EventSetup.h:73
T const * product() const
Definition: ESHandle.h:86
std::map< int, int > firmSP_Map
int CSCTFSectorProcessor::maxBX ( ) const
inline

Definition at line 51 of file CSCTFSectorProcessor.h.

References m_maxBX, printDisclaimer(), and readParameters().

51 { return m_maxBX; }
int CSCTFSectorProcessor::minBX ( ) const
inline

Definition at line 50 of file CSCTFSectorProcessor.h.

References m_minBX.

50 { return m_minBX; }
CSCTFSectorProcessor& CSCTFSectorProcessor::operator= ( const CSCTFSectorProcessor rhs)
inlineprivate

Definition at line 59 of file CSCTFSectorProcessor.h.

59 { return *this; };
void CSCTFSectorProcessor::printDisclaimer ( int  firmSP,
int  firmFA 
)

Definition at line 1116 of file CSCTFSectorProcessor.cc.

Referenced by initialize(), and maxBX().

1116  {
1117  edm::LogInfo("CSCTFSectorProcessor") << "\n\n"
1118  << "******************************* \n"
1119  << "*** DISCLAIMER *** \n"
1120  << "******************************* \n"
1121  << "\n Firmware SP version (year+month+day)=" << firmSP
1122  << "\n Firmware FA/VM/DD version (year+month+day)=" << firmFA;
1123  if (firmSP == 20100210)
1124  edm::LogInfo("CSCTFSectorProcessor") << " -> KNOWN BUGS IN THE FIRMWARE:\n"
1125  << "\t * Wrong phi assignment for singles\n"
1126  << "\t * Wrapper passes to the core only even quality DT stubs\n"
1127  << "\n -> BUGS ARE GOING TO BE EMULATED BY THE SOFTWARE\n\n";
1128 
1129  else
1130  edm::LogInfo("CSCTFSectorProcessor") << "\t * Correct phi assignment for singles\n";
1131 
1132  if (firmSP == 20100629) {
1133  edm::LogInfo("CSCTFSectorProcessor") << "\t * Correct MB quality masking in the wrapper\n"
1134  << "\t * Core is 20100122\n";
1135  }
1136 
1137  if (firmSP == 20100728)
1138  edm::LogInfo("CSCTFSectorProcessor") << "\t * Inverted MB clocks\n";
1139 
1140  if (firmSP == 20100901)
1141  edm::LogInfo("CSCTFSectorProcessor") << "\t * Inverted charge bit\n";
1142 
1143  if (firmSP == 20101011)
1144  edm::LogInfo("CSCTFSectorProcessor") << "\t **** WARNING THIS FIRMWARE IS UNDER TEST ****\n"
1145  << "\t * Added CSC-DT assembling tracks ME1-MB2/1 \n";
1146  if (firmSP == 20101210)
1147  edm::LogInfo("CSCTFSectorProcessor") << "\t **** WARNING THIS FIRMWARE IS UNDER TEST ****\n"
1148  << "\t * New Ghost Busting Algorithm Removing Tracks\n"
1149  << "\t Sharing at Least One LCT\n";
1150 
1151  if (firmSP == 20110118)
1152  edm::LogInfo("CSCTFSectorProcessor") << "\t **** WARNING THIS FIRMWARE IS UNDER TEST ****\n"
1153  << "\t * New Ghost Busting Algorithm Removing Tracks\n"
1154  << "\t Sharing at Least One LCT\n"
1155  << "\t * Passing CLCT and PhiBend for PT LUTs\n";
1156  if (firmSP == 20120131)
1157  edm::LogInfo("CSCTFSectorProcessor") << "\t **** WARNING THIS FIRMWARE IS UNDER TEST ****\n"
1158  << "\t * non-linear dphi12 dphi23, use deta for PTLUTs \n";
1159 }
void CSCTFSectorProcessor::readParameters ( const edm::ParameterSet pset)

Definition at line 594 of file CSCTFSectorProcessor.cc.

References edm::ParameterSet::getParameter(), kill_fiber, m_allowALCTonly, m_allowCLCTonly, m_bxa_depth, m_curvedp, m_etamax, m_etamin, m_etawin, m_firmDD, m_firmFA, m_firmSP, m_firmVM, m_maxdeta112_accp, m_maxdeta113_accp, m_maxdeta12_accp, m_maxdeta13_accp, m_maxdphi112_accp, m_maxdphi113_accp, m_maxdphi12_accp, m_maxdphi13_accp, m_mbaPhiOff, m_mbbPhiOff, m_mindeta112_accp, m_mindeta113_accp, m_mindeta12_accp, m_mindeta13_accp, m_mindetap, m_mindetap_halo, m_mindphip, m_mindphip_halo, m_preTrigger, m_straightp, m_widePhi, QualityEnableME1a, QualityEnableME1b, QualityEnableME1c, QualityEnableME1d, QualityEnableME1e, QualityEnableME1f, QualityEnableME2a, QualityEnableME2b, QualityEnableME2c, QualityEnableME3a, QualityEnableME3b, QualityEnableME3c, QualityEnableME4a, QualityEnableME4b, QualityEnableME4c, rescaleSinglesPhi, run_core, singlesTrackOutput, trigger_on_MB1a, trigger_on_MB1d, trigger_on_ME1a, trigger_on_ME1b, trigger_on_ME2, trigger_on_ME3, and trigger_on_ME4.

Referenced by CSCTFSectorProcessor(), initialize(), and maxBX().

594  {
595  m_bxa_depth = pset.getParameter<unsigned>("BXAdepth");
596  m_allowALCTonly = (pset.getParameter<bool>("AllowALCTonly") ? 1 : 0);
597  m_allowCLCTonly = (pset.getParameter<bool>("AllowCLCTonly") ? 1 : 0);
598  m_preTrigger = pset.getParameter<unsigned>("PreTrigger");
599 
600  std::vector<unsigned>::const_iterator iter;
601  int index = 0;
602  std::vector<unsigned> etawins = pset.getParameter<std::vector<unsigned> >("EtaWindows");
603  for (iter = etawins.begin(), index = 0; iter != etawins.end() && index < 7; iter++, index++)
604  m_etawin[index] = *iter;
605  std::vector<unsigned> etamins = pset.getParameter<std::vector<unsigned> >("EtaMin");
606  for (iter = etamins.begin(), index = 0; iter != etamins.end() && index < 8; iter++, index++)
607  m_etamin[index] = *iter;
608  std::vector<unsigned> etamaxs = pset.getParameter<std::vector<unsigned> >("EtaMax");
609  for (iter = etamaxs.begin(), index = 0; iter != etamaxs.end() && index < 8; iter++, index++)
610  m_etamax[index] = *iter;
611 
612  m_mindphip = pset.getParameter<unsigned>("mindphip");
613  m_mindetap = pset.getParameter<unsigned>("mindetap");
614  m_straightp = pset.getParameter<unsigned>("straightp");
615  m_curvedp = pset.getParameter<unsigned>("curvedp");
616  m_mbaPhiOff = pset.getParameter<unsigned>("mbaPhiOff");
617  m_mbbPhiOff = pset.getParameter<unsigned>("mbbPhiOff");
618  m_widePhi = pset.getParameter<unsigned>("widePhi");
619  m_mindeta12_accp = pset.getParameter<unsigned>("mindeta12_accp");
620  m_maxdeta12_accp = pset.getParameter<unsigned>("maxdeta12_accp");
621  m_maxdphi12_accp = pset.getParameter<unsigned>("maxdphi12_accp");
622  m_mindeta13_accp = pset.getParameter<unsigned>("mindeta13_accp");
623  m_maxdeta13_accp = pset.getParameter<unsigned>("maxdeta13_accp");
624  m_maxdphi13_accp = pset.getParameter<unsigned>("maxdphi13_accp");
625  m_mindeta112_accp = pset.getParameter<unsigned>("mindeta112_accp");
626  m_maxdeta112_accp = pset.getParameter<unsigned>("maxdeta112_accp");
627  m_maxdphi112_accp = pset.getParameter<unsigned>("maxdphi112_accp");
628  m_mindeta113_accp = pset.getParameter<unsigned>("mindeta113_accp");
629  m_maxdeta113_accp = pset.getParameter<unsigned>("maxdeta113_accp");
630  m_maxdphi113_accp = pset.getParameter<unsigned>("maxdphi113_accp");
631  m_mindphip_halo = pset.getParameter<unsigned>("mindphip_halo");
632  m_mindetap_halo = pset.getParameter<unsigned>("mindetap_halo");
633  kill_fiber = pset.getParameter<unsigned>("kill_fiber");
634  run_core = pset.getParameter<bool>("run_core");
635  trigger_on_ME1a = pset.getParameter<bool>("trigger_on_ME1a");
636  trigger_on_ME1b = pset.getParameter<bool>("trigger_on_ME1b");
637  trigger_on_ME2 = pset.getParameter<bool>("trigger_on_ME2");
638  trigger_on_ME3 = pset.getParameter<bool>("trigger_on_ME3");
639  trigger_on_ME4 = pset.getParameter<bool>("trigger_on_ME4");
640  trigger_on_MB1a = pset.getParameter<bool>("trigger_on_MB1a");
641  trigger_on_MB1d = pset.getParameter<bool>("trigger_on_MB1d");
642 
643  singlesTrackOutput = pset.getParameter<unsigned int>("singlesTrackOutput");
644  rescaleSinglesPhi = pset.getParameter<bool>("rescaleSinglesPhi");
645  QualityEnableME1a = pset.getParameter<unsigned int>("QualityEnableME1a");
646  QualityEnableME1b = pset.getParameter<unsigned int>("QualityEnableME1b");
647  QualityEnableME1c = pset.getParameter<unsigned int>("QualityEnableME1c");
648  QualityEnableME1d = pset.getParameter<unsigned int>("QualityEnableME1d");
649  QualityEnableME1e = pset.getParameter<unsigned int>("QualityEnableME1e");
650  QualityEnableME1f = pset.getParameter<unsigned int>("QualityEnableME1f");
651  QualityEnableME2a = pset.getParameter<unsigned int>("QualityEnableME2a");
652  QualityEnableME2b = pset.getParameter<unsigned int>("QualityEnableME2b");
653  QualityEnableME2c = pset.getParameter<unsigned int>("QualityEnableME2c");
654  QualityEnableME3a = pset.getParameter<unsigned int>("QualityEnableME3a");
655  QualityEnableME3b = pset.getParameter<unsigned int>("QualityEnableME3b");
656  QualityEnableME3c = pset.getParameter<unsigned int>("QualityEnableME3c");
657  QualityEnableME4a = pset.getParameter<unsigned int>("QualityEnableME4a");
658  QualityEnableME4b = pset.getParameter<unsigned int>("QualityEnableME4b");
659  QualityEnableME4c = pset.getParameter<unsigned int>("QualityEnableME4c");
660 
661  m_firmSP = pset.getParameter<unsigned int>("firmwareSP");
662  m_firmFA = pset.getParameter<unsigned int>("firmwareFA");
663  m_firmDD = pset.getParameter<unsigned int>("firmwareDD");
664  m_firmVM = pset.getParameter<unsigned int>("firmwareVM");
665 }
T getParameter(std::string const &) const
int CSCTFSectorProcessor::run ( const CSCTriggerContainer< csctf::TrackStub > &  stubs)

STEP ZERO Remove stubs, which were masked out by kill_fiber or QualityEnable parameters

STEP ONE We take stubs from the MPC and assign their eta and phi coordinates using the SR Lookup tables. This is independent of what BX we are on so we can process one large vector of stubs. After this we append the stubs gained from the DT system.

STEP TWO We take the stubs filled by the SR LUTs and load them for processing into the SP core logic. After loading we run and then retrieve any tracks generated.

STEP THREE Now that we have the found tracks from the core, we must assign their Pt.

Definition at line 684 of file CSCTFSectorProcessor.cc.

References l1GtPatternGenerator_cfi::bx, CSCTriggerContainer< T >::clear(), core_, dt_stubs, MillePedeFileConverter_cfg::e, FPGAs, CSCTriggerContainer< T >::get(), triggerObjects_cff::id, initFail_, kill_fiber, l1_tracks, CSCTFSPCoreLogic::loadData(), LogDebug, m_allowALCTonly, m_allowCLCTonly, m_bxa_depth, m_curvedp, m_endcap, m_etamax, m_etamin, m_etawin, m_firmSP, m_gangedME1a, m_latency, m_maxBX, m_maxdeta112_accp, m_maxdeta113_accp, m_maxdeta12_accp, m_maxdeta13_accp, m_maxdphi112_accp, m_maxdphi113_accp, m_maxdphi12_accp, m_maxdphi13_accp, m_mbaPhiOff, m_mbbPhiOff, m_minBX, m_mindeta112_accp, m_mindeta113_accp, m_mindeta12_accp, m_mindeta13_accp, m_mindetap, m_mindetap_halo, m_mindphip, m_mindphip_halo, m_preTrigger, m_sector, m_straightp, m_widePhi, CSCTFPtLUT::Pt(), ptLUT_, csc::L1Track::ptLUTAddress(), CSCTriggerContainer< T >::push_back(), CSCTriggerContainer< T >::push_many(), QualityEnableME1a, QualityEnableME1b, QualityEnableME1c, QualityEnableME1d, QualityEnableME1e, QualityEnableME1f, QualityEnableME2a, QualityEnableME2b, QualityEnableME2c, QualityEnableME3a, QualityEnableME3b, QualityEnableME3c, QualityEnableME4a, QualityEnableME4b, QualityEnableME4c, rescaleSinglesPhi, CSCTFSPCoreLogic::run(), run_core, L1MuRegionalCand::setBx(), L1MuRegionalCand::setChargeValidPacked(), L1MuRegionalCand::setEtaPacked(), csc::L1Track::setLocalPhi(), csc::L1Track::setOutputLink(), csc::L1Track::setPtLUTAddress(), csc::L1Track::setRank(), csc::L1Track::setStationIds(), edm::shift, singlesTrackOutput, srLUTs_, relativeConstraints::station, stub_vec_filtered, HLT_2018_cff::track, tracks(), CSCTFSPCoreLogic::tracks(), trigger_on_MB1a, trigger_on_MB1d, trigger_on_ME1a, trigger_on_ME1b, trigger_on_ME2, trigger_on_ME3, trigger_on_ME4, and CSCTriggerNumbering::triggerSubSectorFromLabels().

Referenced by CSCTFTrackBuilder::buildTracks().

684  {
685  if (initFail_)
686  return -1;
687 
688  if (!ptLUT_) {
689  edm::LogError("CSCTFSectorProcessor::run()")
690  << "No CSCTF PTLUTs: Initialize CSC TF LUTs first (missed call to CSCTFTrackProducer::beginJob?\n";
691  return -1;
692  }
693 
694  l1_tracks.clear();
695  dt_stubs.clear();
696  stub_vec_filtered.clear();
697 
698  std::vector<csctf::TrackStub> stub_vec = stubs.get();
699 
703  for (std::vector<csctf::TrackStub>::const_iterator itr = stub_vec.begin(); itr != stub_vec.end(); itr++)
704  switch (itr->station()) {
705  case 5:
706  stub_vec_filtered.push_back(*itr);
707  break; // DT stubs get filtered by the core controll register
708  case 4:
709  switch (itr->getMPCLink()) {
710  case 3:
711  if ((kill_fiber & 0x4000) == 0 && QualityEnableME4c & (1 << itr->getQuality()))
712  stub_vec_filtered.push_back(*itr);
713  break;
714  case 2:
715  if ((kill_fiber & 0x2000) == 0 && QualityEnableME4b & (1 << itr->getQuality()))
716  stub_vec_filtered.push_back(*itr);
717  break;
718  case 1:
719  if ((kill_fiber & 0x1000) == 0 && QualityEnableME4a & (1 << itr->getQuality()))
720  stub_vec_filtered.push_back(*itr);
721  break;
722  default:
723  edm::LogWarning("CSCTFSectorProcessor::run()")
724  << "No MPC sorting for LCT: link=" << itr->getMPCLink() << "\n";
725  }
726  break;
727  case 3:
728  switch (itr->getMPCLink()) {
729  case 3:
730  if ((kill_fiber & 0x0800) == 0 && QualityEnableME3c & (1 << itr->getQuality()))
731  stub_vec_filtered.push_back(*itr);
732  break;
733  case 2:
734  if ((kill_fiber & 0x0400) == 0 && QualityEnableME3b & (1 << itr->getQuality()))
735  stub_vec_filtered.push_back(*itr);
736  break;
737  case 1:
738  if ((kill_fiber & 0x0200) == 0 && QualityEnableME3a & (1 << itr->getQuality()))
739  stub_vec_filtered.push_back(*itr);
740  break;
741  default:
742  edm::LogWarning("CSCTFSectorProcessor::run()")
743  << "No MPC sorting for LCT: link=" << itr->getMPCLink() << "\n";
744  }
745  break;
746  case 2:
747  switch (itr->getMPCLink()) {
748  case 3:
749  if ((kill_fiber & 0x0100) == 0 && QualityEnableME2c & (1 << itr->getQuality()))
750  stub_vec_filtered.push_back(*itr);
751  break;
752  case 2:
753  if ((kill_fiber & 0x0080) == 0 && QualityEnableME2b & (1 << itr->getQuality()))
754  stub_vec_filtered.push_back(*itr);
755  break;
756  case 1:
757  if ((kill_fiber & 0x0040) == 0 && QualityEnableME2a & (1 << itr->getQuality()))
758  stub_vec_filtered.push_back(*itr);
759  break;
760  default:
761  edm::LogWarning("CSCTFSectorProcessor::run()")
762  << "No MPC sorting for LCT: link=" << itr->getMPCLink() << "\n";
763  }
764  break;
765  case 1:
766  switch (itr->getMPCLink() +
767  (3 * (CSCTriggerNumbering::triggerSubSectorFromLabels(CSCDetId(itr->getDetId().rawId())) - 1))) {
768  case 6:
769  if ((kill_fiber & 0x0020) == 0 && QualityEnableME1f & (1 << itr->getQuality()))
770  stub_vec_filtered.push_back(*itr);
771  break;
772  case 5:
773  if ((kill_fiber & 0x0010) == 0 && QualityEnableME1e & (1 << itr->getQuality()))
774  stub_vec_filtered.push_back(*itr);
775  break;
776  case 4:
777  if ((kill_fiber & 0x0008) == 0 && QualityEnableME1d & (1 << itr->getQuality()))
778  stub_vec_filtered.push_back(*itr);
779  break;
780  case 3:
781  if ((kill_fiber & 0x0004) == 0 && QualityEnableME1c & (1 << itr->getQuality()))
782  stub_vec_filtered.push_back(*itr);
783  break;
784  case 2:
785  if ((kill_fiber & 0x0002) == 0 && QualityEnableME1b & (1 << itr->getQuality()))
786  stub_vec_filtered.push_back(*itr);
787  break;
788  case 1:
789  if ((kill_fiber & 0x0001) == 0 && QualityEnableME1a & (1 << itr->getQuality()))
790  stub_vec_filtered.push_back(*itr);
791  break;
792  default:
793  edm::LogWarning("CSCTFSectorProcessor::run()")
794  << "No MPC sorting for LCT: link=" << itr->getMPCLink() << "\n";
795  }
796  break;
797  default:
798  edm::LogWarning("CSCTFSectorProcessor::run()") << "Invalid station # encountered: " << itr->station() << "\n";
799  }
800 
809  for (std::vector<csctf::TrackStub>::iterator itr = stub_vec_filtered.begin(); itr != stub_vec_filtered.end(); itr++) {
810  if (itr->station() != 5) {
811  CSCDetId id(itr->getDetId().rawId());
812  unsigned fpga = (id.station() == 1) ? CSCTriggerNumbering::triggerSubSectorFromLabels(id) - 1 : id.station();
813 
814  lclphidat lclPhi;
815  try {
816  lclPhi = srLUTs_[FPGAs[fpga]]->localPhi(
817  itr->getStrip(), itr->getPattern(), itr->getQuality(), itr->getBend(), m_gangedME1a);
818  } catch (cms::Exception& e) {
819  bzero(&lclPhi, sizeof(lclPhi));
820  edm::LogWarning("CSCTFSectorProcessor:run()")
821  << "Exception from LocalPhi LUT in " << FPGAs[fpga] << "(strip=" << itr->getStrip()
822  << ",pattern=" << itr->getPattern() << ",quality=" << itr->getQuality() << ",bend=" << itr->getBend() << ")"
823  << std::endl;
824  }
825 
826  gblphidat gblPhi;
827  try {
828  unsigned csc_id = itr->cscid();
829  if (!m_gangedME1a)
830  csc_id = itr->cscidSeparateME1a();
831  //std::cout << "station="<<id.station()<<" ring="<<id.ring()<<" strip="<<itr->getStrip()<<" WG="<<itr->getKeyWG()<<std::endl;
832  //std::cout << "csc_id=" << csc_id << std::endl;
833  gblPhi = srLUTs_[FPGAs[fpga]]->globalPhiME(lclPhi.phi_local, itr->getKeyWG(), csc_id, m_gangedME1a);
834 
835  } catch (cms::Exception& e) {
836  bzero(&gblPhi, sizeof(gblPhi));
837  edm::LogWarning("CSCTFSectorProcessor:run()")
838  << "Exception from GlobalPhi LUT in " << FPGAs[fpga] << "(phi_local=" << lclPhi.phi_local
839  << ",KeyWG=" << itr->getKeyWG() << ",csc=" << itr->cscid() << ")" << std::endl;
840  }
841 
842  gbletadat gblEta;
843  try {
844  unsigned csc_id = itr->cscid();
845  if (!m_gangedME1a)
846  csc_id = itr->cscidSeparateME1a();
847  gblEta = srLUTs_[FPGAs[fpga]]->globalEtaME(
848  lclPhi.phi_bend_local, lclPhi.phi_local, itr->getKeyWG(), csc_id, m_gangedME1a);
849  //gblEta = srLUTs_[FPGAs[fpga]]->globalEtaME(lclPhi.phi_bend_local, lclPhi.phi_local, itr->getKeyWG(), itr->cscid());
850  } catch (cms::Exception& e) {
851  bzero(&gblEta, sizeof(gblEta));
852  edm::LogWarning("CSCTFSectorProcessor:run()")
853  << "Exception from GlobalEta LUT in " << FPGAs[fpga] << "(phi_bend_local=" << lclPhi.phi_bend_local
854  << ",phi_local=" << lclPhi.phi_local << ",KeyWG=" << itr->getKeyWG() << ",csc=" << itr->cscid() << ")"
855  << std::endl;
856  }
857 
858  gblphidat gblPhiDT;
859  try {
860  gblPhiDT = srLUTs_[FPGAs[fpga]]->globalPhiMB(lclPhi.phi_local, itr->getKeyWG(), itr->cscid(), m_gangedME1a);
861  } catch (cms::Exception& e) {
862  bzero(&gblPhiDT, sizeof(gblPhiDT));
863  edm::LogWarning("CSCTFSectorProcessor:run()")
864  << "Exception from GlobalPhi DT LUT in " << FPGAs[fpga] << "(phi_local=" << lclPhi.phi_local
865  << ",KeyWG=" << itr->getKeyWG() << ",csc=" << itr->cscid() << ")" << std::endl;
866  }
867 
868  itr->setEtaPacked(gblEta.global_eta);
869 
870  if (itr->station() == 1) {
871  //&& itr->cscId() > 6) { //only ring 3
872  itr->setPhiPacked(gblPhiDT.global_phi); // convert the DT to convert
873  dt_stubs.push_back(*itr); // send stubs to DT
874  }
875 
876  //reconvert the ME1 LCT to the CSCTF units.
877  //the same iterator is used to fill two containers,
878  //the CSCTF one (stub_vec_filtered) and LCTs sent to DTTF (dt_stubs)
879  itr->setPhiPacked(gblPhi.global_phi);
880 
881  LogDebug("CSCTFSectorProcessor:run()")
882  << "LCT found, processed by FPGA: " << FPGAs[fpga] << std::endl
883  << " LCT now has (eta, phi) of: (" << itr->etaValue() << "," << itr->phiValue() << ")\n";
884  }
885  }
886 
888 
895  std::vector<csc::L1Track> tftks;
896 
897  if (run_core) {
899  // core_->loadData(processedStubs, m_endcap, m_sector, m_minBX, m_maxBX, true);
900  if (core_->run(m_endcap,
901  m_sector,
902  m_latency,
903  m_etamin[0],
904  m_etamin[1],
905  m_etamin[2],
906  m_etamin[3],
907  m_etamin[4],
908  m_etamin[5],
909  m_etamin[6],
910  m_etamin[7],
911  m_etamax[0],
912  m_etamax[1],
913  m_etamax[2],
914  m_etamax[3],
915  m_etamax[4],
916  m_etamax[5],
917  m_etamax[6],
918  m_etamax[7],
919  m_etawin[0],
920  m_etawin[1],
921  m_etawin[2],
922  m_etawin[3],
923  m_etawin[4],
924  m_etawin[5],
925  m_etawin[6],
926  m_mindphip,
927  m_mindetap,
942  m_straightp,
943  m_curvedp,
944  m_mbaPhiOff,
945  m_mbbPhiOff,
946  m_bxa_depth,
949  m_preTrigger,
950  m_widePhi,
951  m_minBX,
952  m_maxBX)) {
953  l1_tracks = core_->tracks();
954  }
955 
956  tftks = l1_tracks.get();
957 
963  std::vector<csc::L1Track>::iterator titr = tftks.begin();
964 
965  for (; titr != tftks.end(); titr++) {
966  ptadd thePtAddress(titr->ptLUTAddress());
967  ptdat thePtData = ptLUT_->Pt(thePtAddress);
968  if (thePtAddress.track_fr) {
969  titr->setRank(thePtData.front_rank);
970  titr->setChargeValidPacked(thePtData.charge_valid_front);
971  } else {
972  titr->setRank(thePtData.rear_rank);
973  titr->setChargeValidPacked(thePtData.charge_valid_rear);
974  }
975 
976  if (((titr->ptLUTAddress() >> 16) & 0xf) == 15) {
977  int unmodBx = titr->bx();
978  titr->setBx(unmodBx + 2);
979  }
980  }
981  } //end of if(run_core)
982 
983  l1_tracks = tftks;
984 
985  // Add-on for singles:
986  CSCTriggerContainer<csctf::TrackStub> myStubContainer[7]; //[BX]
987  // Loop over CSC LCTs if triggering on them:
990  for (std::vector<csctf::TrackStub>::iterator itr = stub_vec_filtered.begin(); itr != stub_vec_filtered.end();
991  itr++) {
992  int station = itr->station() - 1;
993  if (station != 4) {
994  int subSector = CSCTriggerNumbering::triggerSubSectorFromLabels(CSCDetId(itr->getDetId().rawId()));
995  int mpc = (subSector ? subSector - 1 : station + 1);
996  if ((mpc == 0 && trigger_on_ME1a) || (mpc == 1 && trigger_on_ME1b) || (mpc == 2 && trigger_on_ME2) ||
997  (mpc == 3 && trigger_on_ME3) || (mpc == 4 && trigger_on_ME4) ||
998  (mpc == 5 && ((trigger_on_MB1a && subSector % 2 == 1) || (trigger_on_MB1d && subSector % 2 == 0)))) {
999  int bx = itr->getBX() - m_minBX;
1000  if (bx < 0 || bx >= 7)
1001  edm::LogWarning("CSCTFTrackBuilder::buildTracks()")
1002  << " LCT BX is out of [" << m_minBX << "," << m_maxBX << ") range: " << itr->getBX();
1003  else if (itr->isValid())
1004  myStubContainer[bx].push_back(*itr);
1005  }
1006  }
1007  }
1008 
1009  // Core's input was loaded in a relative time window BX=[0-7)
1010  // To relate it to time window of tracks (centred at BX=0) we introduce a shift:
1011  int shift = (m_maxBX + m_minBX) / 2 - m_minBX;
1012 
1013  // Now we put tracks from singles in a certain bx
1014  // if there were no tracks from the core in this endcap/sector/bx
1015  CSCTriggerContainer<csc::L1Track> tracksFromSingles;
1016  for (int bx = 0; bx < 7; bx++)
1017  if (!myStubContainer[bx].get().empty()) { // VP in this bx
1018  bool coreTrackExists = false;
1019  // tracks are not ordered to be accessible by bx => loop them all
1020  std::vector<csc::L1Track> tracks = l1_tracks.get();
1021  for (std::vector<csc::L1Track>::iterator trk = tracks.begin(); trk < tracks.end(); trk++)
1022  if ((trk->BX() == bx - shift && trk->outputLink() == singlesTrackOutput) ||
1023  (((trk->ptLUTAddress() >> 16) & 0xf) == 15 && trk->BX() - 2 == bx - shift)) {
1024  coreTrackExists = true;
1025  break;
1026  }
1027  if (coreTrackExists == false) {
1028  csc::L1TrackId trackId(m_endcap, m_sector);
1029  csc::L1Track track(trackId);
1030  track.setBx(bx - shift);
1031  track.setOutputLink(singlesTrackOutput);
1032  //CSCCorrelatedLCTDigiCollection singles;
1033  std::vector<csctf::TrackStub> stubs = myStubContainer[bx].get();
1034  // Select best quality stub, and assign its eta/phi coordinates to the track
1035  int qualityME = 0, qualityMB = 0, ME = 100, MB = 100, linkME = 7;
1036  std::vector<csctf::TrackStub>::const_iterator bestStub = stubs.end();
1037  for (std::vector<csctf::TrackStub>::const_iterator st_iter = stubs.begin(); st_iter != stubs.end(); st_iter++) {
1038  int station = st_iter->station() - 1;
1039  int subSector = CSCTriggerNumbering::triggerSubSectorFromLabels(CSCDetId(st_iter->getDetId().rawId()));
1040  int mpc = (subSector ? subSector - 1 : station + 1);
1041  // Sort MB stubs first (priority: quality OR MB1a > MB1b for the same quality)
1042  if (mpc == 5 &&
1043  (st_iter->getQuality() > qualityMB || (st_iter->getQuality() == qualityMB && subSector < MB))) {
1044  qualityMB = st_iter->getQuality();
1045  MB = subSector;
1046  if (ME > 4)
1047  bestStub = st_iter; // do not select this stub if ME already had any candidate
1048  }
1049  // Sort ME stubs (priority: quality OR ME1a > ME1b > ME2 > ME3 > ME4 for the same quality)
1050  if (mpc < 5 && (st_iter->getQuality() > qualityME || (st_iter->getQuality() == qualityME && mpc < ME) ||
1051  (st_iter->getQuality() == qualityME && mpc == ME && st_iter->getMPCLink() < linkME))) {
1052  qualityME = st_iter->getQuality();
1053  ME = mpc;
1054  linkME = st_iter->getMPCLink();
1055  bestStub = st_iter;
1056  }
1057  }
1058  unsigned rescaled_phi = 999;
1059  if (m_firmSP <= 20100210) {
1060  // buggy implementation of the phi for singles in the wrapper...
1061  // at the end data/emulator have to agree: e.g. wrong in the same way
1062  // BUG: getting the lowest 7 bits instead the 7 most significant ones.
1063  rescaled_phi = unsigned(24 * (bestStub->phiPacked() & 0x7f) / 128.);
1064  } else {
1065  // correct implementation :-)
1066  rescaled_phi = unsigned(24 * (bestStub->phiPacked() >> 5) / 128.);
1067  }
1068 
1069  unsigned unscaled_phi = bestStub->phiPacked() >> 7;
1070  track.setLocalPhi(rescaleSinglesPhi ? rescaled_phi : unscaled_phi);
1071  track.setEtaPacked((bestStub->etaPacked() >> 2) & 0x1f);
1072  switch (bestStub->station()) {
1073  case 1:
1074  track.setStationIds(bestStub->getMPCLink(), 0, 0, 0, 0);
1075  break;
1076  case 2:
1077  track.setStationIds(0, bestStub->getMPCLink(), 0, 0, 0);
1078  break;
1079  case 3:
1080  track.setStationIds(0, 0, bestStub->getMPCLink(), 0, 0);
1081  break;
1082  case 4:
1083  track.setStationIds(0, 0, 0, bestStub->getMPCLink(), 0);
1084  break;
1085  case 5:
1086  track.setStationIds(0, 0, 0, 0, bestStub->getMPCLink());
1087  break;
1088  default:
1089  edm::LogError("CSCTFSectorProcessor::run()") << "Illegal LCT link=" << bestStub->station() << "\n";
1090  break;
1091  }
1092  // singles.insertDigi(CSCDetId(st_iter->getDetId().rawId()),*st_iter);
1093  //tracksFromSingles.push_back(L1CSCTrack(track,singles));
1094  track.setPtLUTAddress((1 << 16) | ((bestStub->etaPacked() << 9) & 0xf000));
1095  ptadd thePtAddress(track.ptLUTAddress());
1096  ptdat thePtData = ptLUT_->Pt(thePtAddress);
1097  if (thePtAddress.track_fr) {
1098  track.setRank(thePtData.front_rank);
1099  track.setChargeValidPacked(thePtData.charge_valid_front);
1100  } else {
1101  track.setRank(thePtData.rear_rank);
1102  track.setChargeValidPacked(thePtData.charge_valid_rear);
1103  }
1104  tracksFromSingles.push_back(track);
1105  }
1106  }
1107  std::vector<csc::L1Track> single_tracks = tracksFromSingles.get();
1108  if (!single_tracks.empty())
1109  l1_tracks.push_many(single_tracks);
1110  // End of add-on for singles
1111 
1112  return (!l1_tracks.get().empty());
1113 }
#define LogDebug(id)
void loadData(const CSCTriggerContainer< csctf::TrackStub > &, const unsigned &endcap, const unsigned &sector, const int &minBX, const int &maxBX, const bool gangedME1a)
std::vector< T > get() const
ptdat Pt(const ptadd &) const
Definition: CSCTFPtLUT.cc:183
CSCTriggerContainer< csctf::TrackStub > dt_stubs
CSCTFSPCoreLogic * core_
std::vector< csctf::TrackStub > stub_vec_filtered
static const std::string FPGAs[5]
void push_back(const T &data)
Definition: ME.h:11
bool run(const unsigned &endcap, const unsigned &sector, const unsigned &latency, const unsigned &etamin1, const unsigned &etamin2, const unsigned &etamin3, const unsigned &etamin4, const unsigned &etamin5, const unsigned &etamin6, const unsigned &etamin7, const unsigned &etamin8, const unsigned &etamax1, const unsigned &etamax2, const unsigned &etamax3, const unsigned &etamax4, const unsigned &etamax5, const unsigned &etamax6, const unsigned &etamax7, const unsigned &etamax8, const unsigned &etawin1, const unsigned &etawin2, const unsigned &etawin3, const unsigned &etawin4, const unsigned &etawin5, const unsigned &etawin6, const unsigned &etawin7, const unsigned &mindphip, const unsigned &mindetap, const unsigned &mindeta12_accp, const unsigned &maxdeta12_accp, const unsigned &maxdphi12_accp, const unsigned &mindeta13_accp, const unsigned &maxdeta13_accp, const unsigned &maxdphi13_accp, const unsigned &mindeta112_accp, const unsigned &maxdeta112_accp, const unsigned &maxdphi112_accp, const unsigned &mindeta113_accp, const unsigned &maxdeta113_accp, const unsigned &maxdphi113_accp, const unsigned &mindphip_halo, const unsigned &mindetap_halo, const unsigned &straightp, const unsigned &curvedp, const unsigned &mbaPhiOff, const unsigned &mbbPhiOff, const unsigned &m_extend_length, const unsigned &m_allowALCTonly, const unsigned &m_allowCLCTonly, const unsigned &m_preTrigger, const unsigned &m_widePhi, const int &minBX, const int &maxBX)
CSCTriggerContainer< csc::L1Track > l1_tracks
void push_many(const std::vector< T > &data)
std::map< std::string, CSCSectorReceiverLUT * > srLUTs_
class pt_address ptadd
class pt_data ptdat
class global_phi_data gblphidat
class local_phi_data lclphidat
Data Types.
static int triggerSubSectorFromLabels(int station, int chamber)
CSCTriggerContainer< csc::L1Track > tracks() const
dqm::harvesting::MonitorElement ME
static unsigned int const shift
CSCTriggerContainer< csc::L1Track > tracks()
class global_eta_data gbletadat
CSCTriggerContainer<csc::L1Track> CSCTFSectorProcessor::tracks ( void  ) const
inline

Definition at line 45 of file CSCTFSectorProcessor.h.

References l1_tracks.

Referenced by CSCTFTrackBuilder::buildTracks(), and run().

45 { return l1_tracks; }
CSCTriggerContainer< csc::L1Track > l1_tracks

Member Data Documentation

CSCTFSPCoreLogic* CSCTFSectorProcessor::core_
private
CSCTriggerContainer<csctf::TrackStub> CSCTFSectorProcessor::dt_stubs
private

Definition at line 97 of file CSCTFSectorProcessor.h.

Referenced by dtStubs(), and run().

std::map<int, int> CSCTFSectorProcessor::firmSP_Map
private

Definition at line 108 of file CSCTFSectorProcessor.h.

Referenced by CSCTFSectorProcessor(), and initialize().

const std::string CSCTFSectorProcessor::FPGAs = {"F1", "F2", "F3", "F4", "F5"}
staticprivate

Definition at line 101 of file CSCTFSectorProcessor.h.

Referenced by CSCTFSectorProcessor(), run(), and ~CSCTFSectorProcessor().

bool CSCTFSectorProcessor::initFail_
private

Definition at line 110 of file CSCTFSectorProcessor.h.

Referenced by CSCTFSectorProcessor(), initialize(), and run().

bool CSCTFSectorProcessor::initializeFromPSet
private

Definition at line 64 of file CSCTFSectorProcessor.h.

Referenced by CSCTFSectorProcessor(), and initialize().

bool CSCTFSectorProcessor::isCoreVerbose
private

Definition at line 109 of file CSCTFSectorProcessor.h.

Referenced by CSCTFSectorProcessor(), and initialize().

int CSCTFSectorProcessor::kill_fiber
private

Definition at line 87 of file CSCTFSectorProcessor.h.

Referenced by CSCTFSectorProcessor(), initialize(), readParameters(), and run().

CSCTriggerContainer<csc::L1Track> CSCTFSectorProcessor::l1_tracks
private

Definition at line 96 of file CSCTFSectorProcessor.h.

Referenced by run(), and tracks().

int CSCTFSectorProcessor::m_allowALCTonly
private

Definition at line 69 of file CSCTFSectorProcessor.h.

Referenced by CSCTFSectorProcessor(), initialize(), readParameters(), and run().

int CSCTFSectorProcessor::m_allowCLCTonly
private

Definition at line 69 of file CSCTFSectorProcessor.h.

Referenced by CSCTFSectorProcessor(), initialize(), readParameters(), and run().

int CSCTFSectorProcessor::m_bxa_depth
private

Definition at line 69 of file CSCTFSectorProcessor.h.

Referenced by CSCTFSectorProcessor(), initialize(), readParameters(), and run().

int CSCTFSectorProcessor::m_curvedp
private

Definition at line 78 of file CSCTFSectorProcessor.h.

Referenced by CSCTFSectorProcessor(), initialize(), readParameters(), and run().

unsigned CSCTFSectorProcessor::m_endcap
private

Definition at line 65 of file CSCTFSectorProcessor.h.

Referenced by CSCTFSectorProcessor(), initialize(), and run().

int CSCTFSectorProcessor::m_etamax[8]
private

Definition at line 71 of file CSCTFSectorProcessor.h.

Referenced by CSCTFSectorProcessor(), initialize(), readParameters(), and run().

int CSCTFSectorProcessor::m_etamin[8]
private

Definition at line 71 of file CSCTFSectorProcessor.h.

Referenced by CSCTFSectorProcessor(), initialize(), readParameters(), and run().

int CSCTFSectorProcessor::m_etawin[7]
private

Definition at line 71 of file CSCTFSectorProcessor.h.

Referenced by CSCTFSectorProcessor(), initialize(), readParameters(), and run().

int CSCTFSectorProcessor::m_firmDD
private

Definition at line 94 of file CSCTFSectorProcessor.h.

Referenced by CSCTFSectorProcessor(), initialize(), and readParameters().

int CSCTFSectorProcessor::m_firmFA
private

Definition at line 94 of file CSCTFSectorProcessor.h.

Referenced by CSCTFSectorProcessor(), initialize(), and readParameters().

int CSCTFSectorProcessor::m_firmSP
private

Definition at line 94 of file CSCTFSectorProcessor.h.

Referenced by CSCTFSectorProcessor(), initialize(), readParameters(), and run().

int CSCTFSectorProcessor::m_firmVM
private

Definition at line 94 of file CSCTFSectorProcessor.h.

Referenced by CSCTFSectorProcessor(), initialize(), and readParameters().

bool CSCTFSectorProcessor::m_gangedME1a
private

Definition at line 62 of file CSCTFSectorProcessor.h.

Referenced by CSCTFSectorProcessor(), and run().

unsigned CSCTFSectorProcessor::m_latency
private

Definition at line 66 of file CSCTFSectorProcessor.h.

Referenced by CSCTFSectorProcessor(), initialize(), and run().

int CSCTFSectorProcessor::m_maxBX
private

Definition at line 70 of file CSCTFSectorProcessor.h.

Referenced by CSCTFSectorProcessor(), maxBX(), and run().

int CSCTFSectorProcessor::m_maxdeta112_accp
private

Definition at line 75 of file CSCTFSectorProcessor.h.

Referenced by CSCTFSectorProcessor(), initialize(), readParameters(), and run().

int CSCTFSectorProcessor::m_maxdeta113_accp
private

Definition at line 76 of file CSCTFSectorProcessor.h.

Referenced by CSCTFSectorProcessor(), initialize(), readParameters(), and run().

int CSCTFSectorProcessor::m_maxdeta12_accp
private

Definition at line 73 of file CSCTFSectorProcessor.h.

Referenced by CSCTFSectorProcessor(), initialize(), readParameters(), and run().

int CSCTFSectorProcessor::m_maxdeta13_accp
private

Definition at line 74 of file CSCTFSectorProcessor.h.

Referenced by CSCTFSectorProcessor(), initialize(), readParameters(), and run().

int CSCTFSectorProcessor::m_maxdphi112_accp
private

Definition at line 75 of file CSCTFSectorProcessor.h.

Referenced by CSCTFSectorProcessor(), initialize(), readParameters(), and run().

int CSCTFSectorProcessor::m_maxdphi113_accp
private

Definition at line 76 of file CSCTFSectorProcessor.h.

Referenced by CSCTFSectorProcessor(), initialize(), readParameters(), and run().

int CSCTFSectorProcessor::m_maxdphi12_accp
private

Definition at line 73 of file CSCTFSectorProcessor.h.

Referenced by CSCTFSectorProcessor(), initialize(), readParameters(), and run().

int CSCTFSectorProcessor::m_maxdphi13_accp
private

Definition at line 74 of file CSCTFSectorProcessor.h.

Referenced by CSCTFSectorProcessor(), initialize(), readParameters(), and run().

int CSCTFSectorProcessor::m_mbaPhiOff
private

Definition at line 79 of file CSCTFSectorProcessor.h.

Referenced by CSCTFSectorProcessor(), initialize(), readParameters(), and run().

int CSCTFSectorProcessor::m_mbbPhiOff
private

Definition at line 79 of file CSCTFSectorProcessor.h.

Referenced by CSCTFSectorProcessor(), initialize(), readParameters(), and run().

int CSCTFSectorProcessor::m_minBX
private

Definition at line 70 of file CSCTFSectorProcessor.h.

Referenced by CSCTFSectorProcessor(), minBX(), and run().

int CSCTFSectorProcessor::m_mindeta112_accp
private

Definition at line 75 of file CSCTFSectorProcessor.h.

Referenced by CSCTFSectorProcessor(), initialize(), readParameters(), and run().

int CSCTFSectorProcessor::m_mindeta113_accp
private

Definition at line 76 of file CSCTFSectorProcessor.h.

Referenced by CSCTFSectorProcessor(), initialize(), readParameters(), and run().

int CSCTFSectorProcessor::m_mindeta12_accp
private

Definition at line 73 of file CSCTFSectorProcessor.h.

Referenced by CSCTFSectorProcessor(), initialize(), readParameters(), and run().

int CSCTFSectorProcessor::m_mindeta13_accp
private

Definition at line 74 of file CSCTFSectorProcessor.h.

Referenced by CSCTFSectorProcessor(), initialize(), readParameters(), and run().

int CSCTFSectorProcessor::m_mindetap
private

Definition at line 72 of file CSCTFSectorProcessor.h.

Referenced by CSCTFSectorProcessor(), initialize(), readParameters(), and run().

int CSCTFSectorProcessor::m_mindetap_halo
private

Definition at line 77 of file CSCTFSectorProcessor.h.

Referenced by CSCTFSectorProcessor(), initialize(), readParameters(), and run().

int CSCTFSectorProcessor::m_mindphip
private

Definition at line 72 of file CSCTFSectorProcessor.h.

Referenced by CSCTFSectorProcessor(), initialize(), readParameters(), and run().

int CSCTFSectorProcessor::m_mindphip_halo
private

Definition at line 77 of file CSCTFSectorProcessor.h.

Referenced by CSCTFSectorProcessor(), initialize(), readParameters(), and run().

int CSCTFSectorProcessor::m_preTrigger
private

Definition at line 69 of file CSCTFSectorProcessor.h.

Referenced by CSCTFSectorProcessor(), initialize(), readParameters(), and run().

unsigned CSCTFSectorProcessor::m_sector
private

Definition at line 65 of file CSCTFSectorProcessor.h.

Referenced by CSCTFSectorProcessor(), initialize(), and run().

int CSCTFSectorProcessor::m_straightp
private

Definition at line 78 of file CSCTFSectorProcessor.h.

Referenced by CSCTFSectorProcessor(), initialize(), readParameters(), and run().

int CSCTFSectorProcessor::m_widePhi
private

Definition at line 80 of file CSCTFSectorProcessor.h.

Referenced by CSCTFSectorProcessor(), initialize(), readParameters(), and run().

CSCTFPtLUT* CSCTFSectorProcessor::ptLUT_
private
int CSCTFSectorProcessor::QualityEnableME1a
private

Definition at line 83 of file CSCTFSectorProcessor.h.

Referenced by CSCTFSectorProcessor(), initialize(), readParameters(), and run().

int CSCTFSectorProcessor::QualityEnableME1b
private

Definition at line 83 of file CSCTFSectorProcessor.h.

Referenced by CSCTFSectorProcessor(), initialize(), readParameters(), and run().

int CSCTFSectorProcessor::QualityEnableME1c
private

Definition at line 83 of file CSCTFSectorProcessor.h.

Referenced by CSCTFSectorProcessor(), initialize(), readParameters(), and run().

int CSCTFSectorProcessor::QualityEnableME1d
private

Definition at line 83 of file CSCTFSectorProcessor.h.

Referenced by CSCTFSectorProcessor(), initialize(), readParameters(), and run().

int CSCTFSectorProcessor::QualityEnableME1e
private

Definition at line 83 of file CSCTFSectorProcessor.h.

Referenced by CSCTFSectorProcessor(), initialize(), readParameters(), and run().

int CSCTFSectorProcessor::QualityEnableME1f
private

Definition at line 83 of file CSCTFSectorProcessor.h.

Referenced by CSCTFSectorProcessor(), initialize(), readParameters(), and run().

int CSCTFSectorProcessor::QualityEnableME2a
private

Definition at line 84 of file CSCTFSectorProcessor.h.

Referenced by CSCTFSectorProcessor(), initialize(), readParameters(), and run().

int CSCTFSectorProcessor::QualityEnableME2b
private

Definition at line 84 of file CSCTFSectorProcessor.h.

Referenced by CSCTFSectorProcessor(), initialize(), readParameters(), and run().

int CSCTFSectorProcessor::QualityEnableME2c
private

Definition at line 84 of file CSCTFSectorProcessor.h.

Referenced by CSCTFSectorProcessor(), initialize(), readParameters(), and run().

int CSCTFSectorProcessor::QualityEnableME3a
private

Definition at line 85 of file CSCTFSectorProcessor.h.

Referenced by CSCTFSectorProcessor(), initialize(), readParameters(), and run().

int CSCTFSectorProcessor::QualityEnableME3b
private

Definition at line 85 of file CSCTFSectorProcessor.h.

Referenced by CSCTFSectorProcessor(), initialize(), readParameters(), and run().

int CSCTFSectorProcessor::QualityEnableME3c
private

Definition at line 85 of file CSCTFSectorProcessor.h.

Referenced by CSCTFSectorProcessor(), initialize(), readParameters(), and run().

int CSCTFSectorProcessor::QualityEnableME4a
private

Definition at line 86 of file CSCTFSectorProcessor.h.

Referenced by CSCTFSectorProcessor(), initialize(), readParameters(), and run().

int CSCTFSectorProcessor::QualityEnableME4b
private

Definition at line 86 of file CSCTFSectorProcessor.h.

Referenced by CSCTFSectorProcessor(), initialize(), readParameters(), and run().

int CSCTFSectorProcessor::QualityEnableME4c
private

Definition at line 86 of file CSCTFSectorProcessor.h.

Referenced by CSCTFSectorProcessor(), initialize(), readParameters(), and run().

int CSCTFSectorProcessor::rescaleSinglesPhi
private

Definition at line 92 of file CSCTFSectorProcessor.h.

Referenced by CSCTFSectorProcessor(), initialize(), readParameters(), and run().

int CSCTFSectorProcessor::run_core
private

Definition at line 88 of file CSCTFSectorProcessor.h.

Referenced by CSCTFSectorProcessor(), initialize(), readParameters(), and run().

unsigned int CSCTFSectorProcessor::singlesTrackOutput
private

Definition at line 91 of file CSCTFSectorProcessor.h.

Referenced by CSCTFSectorProcessor(), initialize(), readParameters(), and run().

std::map<std::string, CSCSectorReceiverLUT*> CSCTFSectorProcessor::srLUTs_
private

Definition at line 103 of file CSCTFSectorProcessor.h.

Referenced by CSCTFSectorProcessor(), run(), and ~CSCTFSectorProcessor().

std::vector<csctf::TrackStub> CSCTFSectorProcessor::stub_vec_filtered
private

Definition at line 99 of file CSCTFSectorProcessor.h.

Referenced by filteredStubs(), and run().

unsigned CSCTFSectorProcessor::TMB07
private

Definition at line 65 of file CSCTFSectorProcessor.h.

Referenced by CSCTFSectorProcessor().

int CSCTFSectorProcessor::trigger_on_MB1a
private

Definition at line 90 of file CSCTFSectorProcessor.h.

Referenced by CSCTFSectorProcessor(), initialize(), readParameters(), and run().

int CSCTFSectorProcessor::trigger_on_MB1d
private

Definition at line 90 of file CSCTFSectorProcessor.h.

Referenced by CSCTFSectorProcessor(), initialize(), readParameters(), and run().

int CSCTFSectorProcessor::trigger_on_ME1a
private

Definition at line 89 of file CSCTFSectorProcessor.h.

Referenced by CSCTFSectorProcessor(), initialize(), readParameters(), and run().

int CSCTFSectorProcessor::trigger_on_ME1b
private

Definition at line 89 of file CSCTFSectorProcessor.h.

Referenced by CSCTFSectorProcessor(), initialize(), readParameters(), and run().

int CSCTFSectorProcessor::trigger_on_ME2
private

Definition at line 89 of file CSCTFSectorProcessor.h.

Referenced by CSCTFSectorProcessor(), initialize(), readParameters(), and run().

int CSCTFSectorProcessor::trigger_on_ME3
private

Definition at line 89 of file CSCTFSectorProcessor.h.

Referenced by CSCTFSectorProcessor(), initialize(), readParameters(), and run().

int CSCTFSectorProcessor::trigger_on_ME4
private

Definition at line 89 of file CSCTFSectorProcessor.h.

Referenced by CSCTFSectorProcessor(), initialize(), readParameters(), and run().