CMS 3D CMS Logo

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

KK. More...

#include <CSCTFSectorProcessor.h>

Classes

class  h
 
struct  Tokens
 

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, const Tokens &tokens)
 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 ()
 

Static Public Member Functions

static Tokens consumes (const edm::ParameterSet &pset, edm::ConsumesCollector iC)
 

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 28 of file CSCTFSectorProcessor.h.

Constructor & Destructor Documentation

◆ CSCTFSectorProcessor() [1/2]

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

Definition at line 23 of file CSCTFSectorProcessor.cc.

References core_, makeMuonMisalignmentScenario::endcap, firmSP_Map, FPGAs, 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, muonDTDigis_cfi::pset, ptLUT_, ptScale, QualityEnableME1a, QualityEnableME1b, QualityEnableME1c, QualityEnableME1d, QualityEnableME1e, QualityEnableME1f, QualityEnableME2a, QualityEnableME2b, QualityEnableME2c, QualityEnableME3a, QualityEnableME3b, QualityEnableME3c, QualityEnableME4a, QualityEnableME4b, QualityEnableME4c, readParameters(), rescaleSinglesPhi, run_core, l1tGTDoubleObjectCond_cfi::scales, nano_mu_digi_cff::sector, 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.

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

◆ ~CSCTFSectorProcessor()

CSCTFSectorProcessor::~CSCTFSectorProcessor ( )

Definition at line 673 of file CSCTFSectorProcessor.cc.

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

673  {
674  for (int i = 0; i < 5; ++i) {
675  if (srLUTs_[FPGAs[i]])
676  delete srLUTs_[FPGAs[i]]; // delete the pointer
677  srLUTs_[FPGAs[i]] = nullptr; // point it at a safe place
678  }
679 
680  delete core_;
681  core_ = nullptr;
682 
683  if (ptLUT_)
684  delete ptLUT_;
685  ptLUT_ = nullptr;
686 }
CSCTFSPCoreLogic * core_
static const std::string FPGAs[5]
std::map< std::string, CSCSectorReceiverLUT * > srLUTs_

◆ CSCTFSectorProcessor() [2/2]

CSCTFSectorProcessor::CSCTFSectorProcessor ( const CSCTFSectorProcessor par)
inlineprivate

Definition at line 69 of file CSCTFSectorProcessor.h.

69 {}

Member Function Documentation

◆ consumes()

CSCTFSectorProcessor::Tokens CSCTFSectorProcessor::consumes ( const edm::ParameterSet pset,
edm::ConsumesCollector  iC 
)
static

Definition at line 14 of file CSCTFSectorProcessor.cc.

References CSCTFSectorProcessor::Tokens::config, CSCTFPtLUT::consumes(), edm::ConsumesCollector::esConsumes(), muonDTDigis_cfi::pset, and CSCTFSectorProcessor::Tokens::ptLUT.

Referenced by CSCTFTrackBuilder::consumes().

14  {
15  Tokens tok;
16  if (not pset.getParameter<bool>("initializeFromPSet")) {
17  tok.ptLUT = CSCTFPtLUT::consumes(iC);
18  tok.config = iC.esConsumes();
19  }
20  return tok;
21 }
static Tokens consumes(edm::ConsumesCollector iC)
Definition: CSCTFPtLUT.cc:87

◆ dtStubs()

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

Definition at line 57 of file CSCTFSectorProcessor.h.

References dt_stubs.

57 { return dt_stubs; }
CSCTriggerContainer< csctf::TrackStub > dt_stubs

◆ filteredStubs()

std::vector<csctf::TrackStub> CSCTFSectorProcessor::filteredStubs ( ) const
inline

Definition at line 55 of file CSCTFSectorProcessor.h.

References stub_vec_filtered.

Referenced by CSCTFTrackBuilder::buildTracks().

55 { return stub_vec_filtered; }
std::vector< csctf::TrackStub > stub_vec_filtered

◆ initialize()

void CSCTFSectorProcessor::initialize ( const edm::EventSetup c,
const Tokens tokens 
)

KK.

Definition at line 189 of file CSCTFSectorProcessor.cc.

References HltBtagPostValidation_cff::c, CSCTFSectorProcessor::Tokens::config, core_, firmSP_Map, 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, printDisclaimer(), CSCTFSectorProcessor::Tokens::ptLUT, 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().

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

◆ maxBX()

int CSCTFSectorProcessor::maxBX ( ) const
inline

Definition at line 60 of file CSCTFSectorProcessor.h.

References m_maxBX.

60 { return m_maxBX; }

◆ minBX()

int CSCTFSectorProcessor::minBX ( ) const
inline

Definition at line 59 of file CSCTFSectorProcessor.h.

References m_minBX.

59 { return m_minBX; }

◆ operator=()

CSCTFSectorProcessor& CSCTFSectorProcessor::operator= ( const CSCTFSectorProcessor rhs)
inlineprivate

Definition at line 68 of file CSCTFSectorProcessor.h.

68 { return *this; };

◆ printDisclaimer()

void CSCTFSectorProcessor::printDisclaimer ( int  firmSP,
int  firmFA 
)

Definition at line 1122 of file CSCTFSectorProcessor.cc.

Referenced by initialize().

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

◆ readParameters()

void CSCTFSectorProcessor::readParameters ( const edm::ParameterSet pset)

Definition at line 600 of file CSCTFSectorProcessor.cc.

References 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, muonDTDigis_cfi::pset, 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(), and initialize().

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

◆ run()

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 690 of file CSCTFSectorProcessor.cc.

References nano_mu_digi_cff::bx, CSCTriggerContainer< T >::clear(), core_, dt_stubs, MillePedeFileConverter_cfg::e, FPGAs, CSCTriggerContainer< T >::get(), l1ctLayer2EG_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_, push_back(), 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, edm::shift, singlesTrackOutput, srLUTs_, relativeConstraints::station, stub_vec_filtered, HLT_2024v13_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().

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

◆ tracks()

CSCTriggerContainer<csc::L1Track> CSCTFSectorProcessor::tracks ( void  ) const
inline

Definition at line 54 of file CSCTFSectorProcessor.h.

References l1_tracks.

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

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

Member Data Documentation

◆ core_

CSCTFSPCoreLogic* CSCTFSectorProcessor::core_
private

◆ dt_stubs

CSCTriggerContainer<csctf::TrackStub> CSCTFSectorProcessor::dt_stubs
private

Definition at line 106 of file CSCTFSectorProcessor.h.

Referenced by dtStubs(), and run().

◆ firmSP_Map

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

Definition at line 117 of file CSCTFSectorProcessor.h.

Referenced by CSCTFSectorProcessor(), and initialize().

◆ FPGAs

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

Definition at line 110 of file CSCTFSectorProcessor.h.

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

◆ initFail_

bool CSCTFSectorProcessor::initFail_
private

Definition at line 119 of file CSCTFSectorProcessor.h.

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

◆ initializeFromPSet

bool CSCTFSectorProcessor::initializeFromPSet
private

Definition at line 73 of file CSCTFSectorProcessor.h.

Referenced by CSCTFSectorProcessor(), and initialize().

◆ isCoreVerbose

bool CSCTFSectorProcessor::isCoreVerbose
private

Definition at line 118 of file CSCTFSectorProcessor.h.

Referenced by CSCTFSectorProcessor(), and initialize().

◆ kill_fiber

int CSCTFSectorProcessor::kill_fiber
private

Definition at line 96 of file CSCTFSectorProcessor.h.

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

◆ l1_tracks

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

Definition at line 105 of file CSCTFSectorProcessor.h.

Referenced by run(), and tracks().

◆ m_allowALCTonly

int CSCTFSectorProcessor::m_allowALCTonly
private

Definition at line 78 of file CSCTFSectorProcessor.h.

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

◆ m_allowCLCTonly

int CSCTFSectorProcessor::m_allowCLCTonly
private

Definition at line 78 of file CSCTFSectorProcessor.h.

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

◆ m_bxa_depth

int CSCTFSectorProcessor::m_bxa_depth
private

Definition at line 78 of file CSCTFSectorProcessor.h.

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

◆ m_curvedp

int CSCTFSectorProcessor::m_curvedp
private

Definition at line 87 of file CSCTFSectorProcessor.h.

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

◆ m_endcap

unsigned CSCTFSectorProcessor::m_endcap
private

Definition at line 74 of file CSCTFSectorProcessor.h.

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

◆ m_etamax

int CSCTFSectorProcessor::m_etamax[8]
private

Definition at line 80 of file CSCTFSectorProcessor.h.

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

◆ m_etamin

int CSCTFSectorProcessor::m_etamin[8]
private

Definition at line 80 of file CSCTFSectorProcessor.h.

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

◆ m_etawin

int CSCTFSectorProcessor::m_etawin[7]
private

Definition at line 80 of file CSCTFSectorProcessor.h.

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

◆ m_firmDD

int CSCTFSectorProcessor::m_firmDD
private

Definition at line 103 of file CSCTFSectorProcessor.h.

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

◆ m_firmFA

int CSCTFSectorProcessor::m_firmFA
private

Definition at line 103 of file CSCTFSectorProcessor.h.

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

◆ m_firmSP

int CSCTFSectorProcessor::m_firmSP
private

Definition at line 103 of file CSCTFSectorProcessor.h.

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

◆ m_firmVM

int CSCTFSectorProcessor::m_firmVM
private

Definition at line 103 of file CSCTFSectorProcessor.h.

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

◆ m_gangedME1a

bool CSCTFSectorProcessor::m_gangedME1a
private

Definition at line 71 of file CSCTFSectorProcessor.h.

Referenced by CSCTFSectorProcessor(), and run().

◆ m_latency

unsigned CSCTFSectorProcessor::m_latency
private

Definition at line 75 of file CSCTFSectorProcessor.h.

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

◆ m_maxBX

int CSCTFSectorProcessor::m_maxBX
private

Definition at line 79 of file CSCTFSectorProcessor.h.

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

◆ m_maxdeta112_accp

int CSCTFSectorProcessor::m_maxdeta112_accp
private

Definition at line 84 of file CSCTFSectorProcessor.h.

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

◆ m_maxdeta113_accp

int CSCTFSectorProcessor::m_maxdeta113_accp
private

Definition at line 85 of file CSCTFSectorProcessor.h.

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

◆ m_maxdeta12_accp

int CSCTFSectorProcessor::m_maxdeta12_accp
private

Definition at line 82 of file CSCTFSectorProcessor.h.

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

◆ m_maxdeta13_accp

int CSCTFSectorProcessor::m_maxdeta13_accp
private

Definition at line 83 of file CSCTFSectorProcessor.h.

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

◆ m_maxdphi112_accp

int CSCTFSectorProcessor::m_maxdphi112_accp
private

Definition at line 84 of file CSCTFSectorProcessor.h.

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

◆ m_maxdphi113_accp

int CSCTFSectorProcessor::m_maxdphi113_accp
private

Definition at line 85 of file CSCTFSectorProcessor.h.

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

◆ m_maxdphi12_accp

int CSCTFSectorProcessor::m_maxdphi12_accp
private

Definition at line 82 of file CSCTFSectorProcessor.h.

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

◆ m_maxdphi13_accp

int CSCTFSectorProcessor::m_maxdphi13_accp
private

Definition at line 83 of file CSCTFSectorProcessor.h.

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

◆ m_mbaPhiOff

int CSCTFSectorProcessor::m_mbaPhiOff
private

Definition at line 88 of file CSCTFSectorProcessor.h.

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

◆ m_mbbPhiOff

int CSCTFSectorProcessor::m_mbbPhiOff
private

Definition at line 88 of file CSCTFSectorProcessor.h.

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

◆ m_minBX

int CSCTFSectorProcessor::m_minBX
private

Definition at line 79 of file CSCTFSectorProcessor.h.

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

◆ m_mindeta112_accp

int CSCTFSectorProcessor::m_mindeta112_accp
private

Definition at line 84 of file CSCTFSectorProcessor.h.

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

◆ m_mindeta113_accp

int CSCTFSectorProcessor::m_mindeta113_accp
private

Definition at line 85 of file CSCTFSectorProcessor.h.

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

◆ m_mindeta12_accp

int CSCTFSectorProcessor::m_mindeta12_accp
private

Definition at line 82 of file CSCTFSectorProcessor.h.

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

◆ m_mindeta13_accp

int CSCTFSectorProcessor::m_mindeta13_accp
private

Definition at line 83 of file CSCTFSectorProcessor.h.

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

◆ m_mindetap

int CSCTFSectorProcessor::m_mindetap
private

Definition at line 81 of file CSCTFSectorProcessor.h.

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

◆ m_mindetap_halo

int CSCTFSectorProcessor::m_mindetap_halo
private

Definition at line 86 of file CSCTFSectorProcessor.h.

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

◆ m_mindphip

int CSCTFSectorProcessor::m_mindphip
private

Definition at line 81 of file CSCTFSectorProcessor.h.

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

◆ m_mindphip_halo

int CSCTFSectorProcessor::m_mindphip_halo
private

Definition at line 86 of file CSCTFSectorProcessor.h.

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

◆ m_preTrigger

int CSCTFSectorProcessor::m_preTrigger
private

Definition at line 78 of file CSCTFSectorProcessor.h.

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

◆ m_sector

unsigned CSCTFSectorProcessor::m_sector
private

Definition at line 74 of file CSCTFSectorProcessor.h.

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

◆ m_straightp

int CSCTFSectorProcessor::m_straightp
private

Definition at line 87 of file CSCTFSectorProcessor.h.

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

◆ m_widePhi

int CSCTFSectorProcessor::m_widePhi
private

Definition at line 89 of file CSCTFSectorProcessor.h.

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

◆ ptLUT_

CSCTFPtLUT* CSCTFSectorProcessor::ptLUT_
private

◆ QualityEnableME1a

int CSCTFSectorProcessor::QualityEnableME1a
private

Definition at line 92 of file CSCTFSectorProcessor.h.

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

◆ QualityEnableME1b

int CSCTFSectorProcessor::QualityEnableME1b
private

Definition at line 92 of file CSCTFSectorProcessor.h.

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

◆ QualityEnableME1c

int CSCTFSectorProcessor::QualityEnableME1c
private

Definition at line 92 of file CSCTFSectorProcessor.h.

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

◆ QualityEnableME1d

int CSCTFSectorProcessor::QualityEnableME1d
private

Definition at line 92 of file CSCTFSectorProcessor.h.

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

◆ QualityEnableME1e

int CSCTFSectorProcessor::QualityEnableME1e
private

Definition at line 92 of file CSCTFSectorProcessor.h.

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

◆ QualityEnableME1f

int CSCTFSectorProcessor::QualityEnableME1f
private

Definition at line 92 of file CSCTFSectorProcessor.h.

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

◆ QualityEnableME2a

int CSCTFSectorProcessor::QualityEnableME2a
private

Definition at line 93 of file CSCTFSectorProcessor.h.

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

◆ QualityEnableME2b

int CSCTFSectorProcessor::QualityEnableME2b
private

Definition at line 93 of file CSCTFSectorProcessor.h.

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

◆ QualityEnableME2c

int CSCTFSectorProcessor::QualityEnableME2c
private

Definition at line 93 of file CSCTFSectorProcessor.h.

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

◆ QualityEnableME3a

int CSCTFSectorProcessor::QualityEnableME3a
private

Definition at line 94 of file CSCTFSectorProcessor.h.

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

◆ QualityEnableME3b

int CSCTFSectorProcessor::QualityEnableME3b
private

Definition at line 94 of file CSCTFSectorProcessor.h.

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

◆ QualityEnableME3c

int CSCTFSectorProcessor::QualityEnableME3c
private

Definition at line 94 of file CSCTFSectorProcessor.h.

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

◆ QualityEnableME4a

int CSCTFSectorProcessor::QualityEnableME4a
private

Definition at line 95 of file CSCTFSectorProcessor.h.

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

◆ QualityEnableME4b

int CSCTFSectorProcessor::QualityEnableME4b
private

Definition at line 95 of file CSCTFSectorProcessor.h.

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

◆ QualityEnableME4c

int CSCTFSectorProcessor::QualityEnableME4c
private

Definition at line 95 of file CSCTFSectorProcessor.h.

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

◆ rescaleSinglesPhi

int CSCTFSectorProcessor::rescaleSinglesPhi
private

Definition at line 101 of file CSCTFSectorProcessor.h.

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

◆ run_core

int CSCTFSectorProcessor::run_core
private

Definition at line 97 of file CSCTFSectorProcessor.h.

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

◆ singlesTrackOutput

unsigned int CSCTFSectorProcessor::singlesTrackOutput
private

Definition at line 100 of file CSCTFSectorProcessor.h.

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

◆ srLUTs_

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

Definition at line 112 of file CSCTFSectorProcessor.h.

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

◆ stub_vec_filtered

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

Definition at line 108 of file CSCTFSectorProcessor.h.

Referenced by filteredStubs(), and run().

◆ TMB07

unsigned CSCTFSectorProcessor::TMB07
private

Definition at line 74 of file CSCTFSectorProcessor.h.

Referenced by CSCTFSectorProcessor().

◆ trigger_on_MB1a

int CSCTFSectorProcessor::trigger_on_MB1a
private

Definition at line 99 of file CSCTFSectorProcessor.h.

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

◆ trigger_on_MB1d

int CSCTFSectorProcessor::trigger_on_MB1d
private

Definition at line 99 of file CSCTFSectorProcessor.h.

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

◆ trigger_on_ME1a

int CSCTFSectorProcessor::trigger_on_ME1a
private

Definition at line 98 of file CSCTFSectorProcessor.h.

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

◆ trigger_on_ME1b

int CSCTFSectorProcessor::trigger_on_ME1b
private

Definition at line 98 of file CSCTFSectorProcessor.h.

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

◆ trigger_on_ME2

int CSCTFSectorProcessor::trigger_on_ME2
private

Definition at line 98 of file CSCTFSectorProcessor.h.

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

◆ trigger_on_ME3

int CSCTFSectorProcessor::trigger_on_ME3
private

Definition at line 98 of file CSCTFSectorProcessor.h.

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

◆ trigger_on_ME4

int CSCTFSectorProcessor::trigger_on_ME4
private

Definition at line 98 of file CSCTFSectorProcessor.h.

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