00001 #include <L1Trigger/CSCTrackFinder/interface/CSCTFSPCoreLogic.h>
00002 #include <DataFormats/MuonDetId/interface/CSCDetId.h>
00003 #include <DataFormats/MuonDetId/interface/CSCTriggerNumbering.h>
00004 #include <L1Trigger/CSCTrackFinder/interface/CSCTrackFinderDataTypes.h>
00005
00006 #include <FWCore/MessageLogger/interface/MessageLogger.h>
00007 #include <iostream>
00008
00009
00010 vpp_generated_2010_01_22 CSCTFSPCoreLogic::sp_2010_01_22_;
00011 vpp_generated_2010_07_28 CSCTFSPCoreLogic::sp_2010_07_28_;
00012 vpp_generated_2010_09_01 CSCTFSPCoreLogic::sp_2010_09_01_;
00013 vpp_generated_2010_10_11 CSCTFSPCoreLogic::sp_2010_10_11_;
00014 vpp_generated_2010_12_10 CSCTFSPCoreLogic::sp_2010_12_10_;
00015 vpp_generated_2011_01_18 CSCTFSPCoreLogic::sp_2011_01_18_;
00016
00017
00018
00019
00020 void CSCTFSPCoreLogic::loadData(const CSCTriggerContainer<csctf::TrackStub>& theStubs,
00021 const unsigned& endcap, const unsigned& sector,
00022 const int& minBX, const int& maxBX)
00023 {
00024 io_.clear();
00025 runme = 0;
00026 io_.resize(maxBX - minBX + 2);
00027 unsigned relative_bx = 0;
00028
00029 for(int bx = minBX; bx <= maxBX; ++bx)
00030 {
00031 for(int st = CSCDetId::minStationId(); st <= CSCDetId::maxStationId() + 1; ++st)
00032 {
00033 std::vector<csctf::TrackStub> stub_list;
00034 std::vector<csctf::TrackStub>::const_iterator stubi;
00035 if(st == 1)
00036 {
00037 stub_list = theStubs.get(endcap, st, sector, 1, bx);
00038 std::vector<csctf::TrackStub> stub_list2 = theStubs.get(endcap, st, sector, 2, bx);
00039 stub_list.insert(stub_list.end(), stub_list2.begin(), stub_list2.end());
00040 }
00041 else stub_list = theStubs.get(endcap, st, sector, 0, bx);
00042
00043 for(stubi = stub_list.begin(); stubi != stub_list.end(); stubi++)
00044 {
00045 runme |= stubi->isValid();
00046 switch(st)
00047 {
00048 case 1:
00049 switch(stubi->getMPCLink())
00050 {
00051 case 1:
00052 if(CSCTriggerNumbering::triggerSubSectorFromLabels(CSCDetId(stubi->getDetId().rawId())) == 1)
00053 {
00054 io_[relative_bx+1].me1aVp = stubi->isValid();
00055 io_[relative_bx+1].me1aQp = stubi->getQuality();
00056 io_[relative_bx+1].me1aEtap = stubi->etaPacked();
00057 io_[relative_bx+1].me1aPhip = stubi->phiPacked();
00058 io_[relative_bx+1].me1aAmp = (stubi->getQuality() == 1 || stubi->getQuality() == 2);
00059 io_[relative_bx+1].me1aCSCIdp = stubi->cscid();
00060 io_[relative_bx+1].me1aCLCTp = stubi->getCLCTPattern();
00061 }
00062 if(CSCTriggerNumbering::triggerSubSectorFromLabels(CSCDetId(stubi->getDetId().rawId())) == 2)
00063 {
00064 io_[relative_bx+1].me1dVp = stubi->isValid();
00065 io_[relative_bx+1].me1dQp = stubi->getQuality();
00066 io_[relative_bx+1].me1dEtap = stubi->etaPacked();
00067 io_[relative_bx+1].me1dPhip = stubi->phiPacked();
00068 io_[relative_bx+1].me1dAmp = (stubi->getQuality() == 1 || stubi->getQuality() == 2);
00069 io_[relative_bx+1].me1dCSCIdp = stubi->cscid();
00070 io_[relative_bx+1].me1dCLCTp = stubi->getCLCTPattern();
00071 }
00072 break;
00073 case 2:
00074 if(CSCTriggerNumbering::triggerSubSectorFromLabels(CSCDetId(stubi->getDetId().rawId())) == 1)
00075 {
00076 io_[relative_bx+1].me1bVp = stubi->isValid();
00077 io_[relative_bx+1].me1bQp = stubi->getQuality();
00078 io_[relative_bx+1].me1bEtap = stubi->etaPacked();
00079 io_[relative_bx+1].me1bPhip = stubi->phiPacked();
00080 io_[relative_bx+1].me1bAmp = (stubi->getQuality() == 1 || stubi->getQuality() == 2);
00081 io_[relative_bx+1].me1bCSCIdp = stubi->cscid();
00082 io_[relative_bx+1].me1bCLCTp = stubi->getCLCTPattern();
00083 }
00084 if(CSCTriggerNumbering::triggerSubSectorFromLabels(CSCDetId(stubi->getDetId().rawId())) == 2)
00085 {
00086 io_[relative_bx+1].me1eVp = stubi->isValid();
00087 io_[relative_bx+1].me1eQp = stubi->getQuality();
00088 io_[relative_bx+1].me1eEtap = stubi->etaPacked();
00089 io_[relative_bx+1].me1ePhip = stubi->phiPacked();
00090 io_[relative_bx+1].me1eAmp = (stubi->getQuality() == 1 || stubi->getQuality() == 2);
00091 io_[relative_bx+1].me1eCSCIdp = stubi->cscid();
00092 io_[relative_bx+1].me1eCLCTp = stubi->getCLCTPattern();
00093 }
00094 break;
00095 case 3:
00096 if(CSCTriggerNumbering::triggerSubSectorFromLabels(CSCDetId(stubi->getDetId().rawId())) == 1)
00097 {
00098 io_[relative_bx+1].me1cVp = stubi->isValid();
00099 io_[relative_bx+1].me1cQp = stubi->getQuality();
00100 io_[relative_bx+1].me1cEtap = stubi->etaPacked();
00101 io_[relative_bx+1].me1cPhip = stubi->phiPacked();
00102 io_[relative_bx+1].me1cAmp = (stubi->getQuality() == 1 || stubi->getQuality() == 2);
00103 io_[relative_bx+1].me1cCSCIdp = stubi->cscid();
00104 io_[relative_bx+1].me1cCLCTp = stubi->getCLCTPattern();
00105 }
00106 if(CSCTriggerNumbering::triggerSubSectorFromLabels(CSCDetId(stubi->getDetId().rawId())) == 2)
00107 {
00108 io_[relative_bx+1].me1fVp = stubi->isValid();
00109 io_[relative_bx+1].me1fQp = stubi->getQuality();
00110 io_[relative_bx+1].me1fEtap = stubi->etaPacked();
00111 io_[relative_bx+1].me1fPhip = stubi->phiPacked();
00112 io_[relative_bx+1].me1fAmp = (stubi->getQuality() == 1 || stubi->getQuality() == 2);
00113 io_[relative_bx+1].me1fCSCIdp = stubi->cscid();
00114 io_[relative_bx+1].me1fCLCTp = stubi->getCLCTPattern();
00115 }
00116 break;
00117 default:
00118 edm::LogWarning("CSCTFSPCoreLogic::loadData()") << "SERIOUS ERROR: MPC LINK " << stubi->getMPCLink()
00119 << " NOT IN RANGE [1,3]\n";
00120 };
00121 break;
00122 case 2:
00123 switch(stubi->getMPCLink())
00124 {
00125 case 1:
00126 io_[relative_bx+1].me2aVp = stubi->isValid();
00127 io_[relative_bx+1].me2aQp = stubi->getQuality();
00128 io_[relative_bx+1].me2aEtap = stubi->etaPacked();
00129 io_[relative_bx+1].me2aPhip = stubi->phiPacked();
00130 io_[relative_bx+1].me2aAmp = (stubi->getQuality() == 1 || stubi->getQuality() == 2);
00131 break;
00132 case 2:
00133 io_[relative_bx+1].me2bVp = stubi->isValid();
00134 io_[relative_bx+1].me2bQp = stubi->getQuality();
00135 io_[relative_bx+1].me2bEtap = stubi->etaPacked();
00136 io_[relative_bx+1].me2bPhip = stubi->phiPacked();
00137 io_[relative_bx+1].me2bAmp = (stubi->getQuality() == 1 || stubi->getQuality() == 2);
00138 break;
00139 case 3:
00140 io_[relative_bx+1].me2cVp = stubi->isValid();
00141 io_[relative_bx+1].me2cQp = stubi->getQuality();
00142 io_[relative_bx+1].me2cEtap = stubi->etaPacked();
00143 io_[relative_bx+1].me2cPhip = stubi->phiPacked();
00144 io_[relative_bx+1].me2cAmp = (stubi->getQuality() == 1 || stubi->getQuality() == 2);
00145 break;
00146 default:
00147 edm::LogWarning("CSCTFSPCoreLogic::loadData()") << "SERIOUS ERROR: MPC LINK " << stubi->getMPCLink()
00148 << " NOT IN RANGE [1,3]\n";
00149 };
00150 break;
00151 case 3:
00152 switch(stubi->getMPCLink())
00153 {
00154 case 1:
00155 io_[relative_bx+1].me3aVp = stubi->isValid();
00156 io_[relative_bx+1].me3aQp = stubi->getQuality();
00157 io_[relative_bx+1].me3aEtap = stubi->etaPacked();
00158 io_[relative_bx+1].me3aPhip = stubi->phiPacked();
00159 io_[relative_bx+1].me3aAmp = (stubi->getQuality() == 1 || stubi->getQuality() == 2);
00160 break;
00161 case 2:
00162 io_[relative_bx+1].me3bVp = stubi->isValid();
00163 io_[relative_bx+1].me3bQp = stubi->getQuality();
00164 io_[relative_bx+1].me3bEtap = stubi->etaPacked();
00165 io_[relative_bx+1].me3bPhip = stubi->phiPacked();
00166 io_[relative_bx+1].me3bAmp = (stubi->getQuality() == 1 || stubi->getQuality() == 2);
00167 break;
00168 case 3:
00169 io_[relative_bx+1].me3cVp = stubi->isValid();
00170 io_[relative_bx+1].me3cQp = stubi->getQuality();
00171 io_[relative_bx+1].me3cEtap = stubi->etaPacked();
00172 io_[relative_bx+1].me3cPhip = stubi->phiPacked();
00173 io_[relative_bx+1].me3cAmp = (stubi->getQuality() == 1 || stubi->getQuality() == 2);
00174 break;
00175 default:
00176 edm::LogWarning("CSCTFSPCoreLogic::loadData()") << "SERIOUS ERROR: MPC LINK " << stubi->getMPCLink()
00177 << " NOT IN RANGE [1,3]\n";
00178 };
00179 break;
00180 case 4:
00181 switch(stubi->getMPCLink())
00182 {
00183 case 1:
00184 io_[relative_bx+1].me4aVp = stubi->isValid();
00185 io_[relative_bx+1].me4aQp = stubi->getQuality();
00186 io_[relative_bx+1].me4aEtap = stubi->etaPacked();
00187 io_[relative_bx+1].me4aPhip = stubi->phiPacked();
00188 io_[relative_bx+1].me4aAmp = (stubi->getQuality() == 1 || stubi->getQuality() == 2);
00189 break;
00190 case 2:
00191 io_[relative_bx+1].me4bVp = stubi->isValid();
00192 io_[relative_bx+1].me4bQp = stubi->getQuality();
00193 io_[relative_bx+1].me4bEtap = stubi->etaPacked();
00194 io_[relative_bx+1].me4bPhip = stubi->phiPacked();
00195 io_[relative_bx+1].me4bAmp = (stubi->getQuality() == 1 || stubi->getQuality() == 2);
00196 break;
00197 case 3:
00198 io_[relative_bx+1].me4cVp = stubi->isValid();
00199 io_[relative_bx+1].me4cQp = stubi->getQuality();
00200 io_[relative_bx+1].me4cEtap = stubi->etaPacked();
00201 io_[relative_bx+1].me4cPhip = stubi->phiPacked();
00202 io_[relative_bx+1].me4cAmp = (stubi->getQuality() == 1 || stubi->getQuality() == 2);
00203 break;
00204 default:
00205 edm::LogWarning("CSCTFSPCoreLogic::loadData()") << "SERIOUS ERROR: MPC LINK " << stubi->getMPCLink()
00206 << " NOT IN RANGE [1,3]\n";
00207 };
00208 break;
00209 case 5:
00210
00211
00212 switch(stubi->getMPCLink())
00213 {
00214 case 1:
00215 if (this->GetSPFirmwareVersion() < 20100629) {
00216
00217
00218 if(stubi->getQuality()%2==1)
00219 {
00220
00221 io_[relative_bx].mb1aVp = stubi->getStrip();
00222 io_[relative_bx].mb1aQp = stubi->getQuality();
00223 io_[relative_bx].mb1aPhip = stubi->phiPacked();
00224 io_[relative_bx].mb1aBendp= stubi->getBend();
00225 }
00226 } else {
00227 io_[relative_bx].mb1aVp = stubi->getStrip();
00228 io_[relative_bx].mb1aQp = stubi->getQuality();
00229 io_[relative_bx].mb1aPhip = stubi->phiPacked();
00230 io_[relative_bx].mb1aBendp= stubi->getBend();
00231 }
00232 break;
00233 case 2:
00234 if (this->GetSPFirmwareVersion() < 20100629) {
00235
00236
00237 if(stubi->getQuality()%2==1)
00238 {
00239
00240 io_[relative_bx].mb1bVp = stubi->getStrip();
00241 io_[relative_bx].mb1bQp = stubi->getQuality();
00242 io_[relative_bx].mb1bPhip = stubi->phiPacked();
00243 io_[relative_bx].mb1bBendp= stubi->getBend();
00244 }
00245 } else {
00246 io_[relative_bx].mb1bVp = stubi->getStrip();
00247 io_[relative_bx].mb1bQp = stubi->getQuality();
00248 io_[relative_bx].mb1bPhip = stubi->phiPacked();
00249 io_[relative_bx].mb1bBendp= stubi->getBend();
00250 }
00251 break;
00252
00253
00254
00255
00256
00257
00258
00259
00260
00261
00262 default:
00263 edm::LogWarning("CSCTFSPCoreLogic::loadData()") << "SERIOUS ERROR: DT LINK " << stubi->getMPCLink()
00264 << " NOT IN RANGE [1,4]\n";
00265 }
00266 break;
00267 default:
00268 edm::LogWarning("CSCTFSPCoreLogic::loadData()") << "SERIOUS ERROR: STATION " << st << " NOT IN RANGE [1,5]\n";
00269 };
00270 }
00271 }
00272 ++relative_bx;
00273 }
00274 }
00275
00276
00277
00278 bool CSCTFSPCoreLogic::run(const unsigned& endcap, const unsigned& sector, const unsigned& latency,
00279 const unsigned& etamin1, const unsigned& etamin2, const unsigned& etamin3, const unsigned& etamin4,
00280 const unsigned& etamin5, const unsigned& etamin6, const unsigned& etamin7, const unsigned& etamin8,
00281 const unsigned& etamax1, const unsigned& etamax2, const unsigned& etamax3, const unsigned& etamax4,
00282 const unsigned& etamax5, const unsigned& etamax6, const unsigned& etamax7, const unsigned& etamax8,
00283 const unsigned& etawin1, const unsigned& etawin2, const unsigned& etawin3,
00284 const unsigned& etawin4, const unsigned& etawin5, const unsigned& etawin6, const unsigned& etawin7,
00285 const unsigned& mindphip, const unsigned& mindetap,
00286 const unsigned& mindeta12_accp,
00287 const unsigned& maxdeta12_accp, const unsigned& maxdphi12_accp,
00288 const unsigned& mindeta13_accp,
00289 const unsigned& maxdeta13_accp, const unsigned& maxdphi13_accp,
00290 const unsigned& mindeta112_accp,
00291 const unsigned& maxdeta112_accp, const unsigned& maxdphi112_accp,
00292 const unsigned& mindeta113_accp,
00293 const unsigned& maxdeta113_accp, const unsigned& maxdphi113_accp,
00294 const unsigned& mindphip_halo, const unsigned& mindetap_halo,
00295 const unsigned& straightp, const unsigned& curvedp,
00296 const unsigned& mbaPhiOff, const unsigned& mbbPhiOff,
00297 const unsigned& m_extend_length,
00298 const unsigned& m_allowALCTonly, const unsigned& m_allowCLCTonly,
00299 const unsigned& m_preTrigger, const unsigned& m_widePhi,
00300 const int& minBX, const int& maxBX)
00301 {
00302 mytracks.clear();
00303
00304 int train_length = io_.size();
00305 int bx = 0;
00306 io_.resize(train_length + latency);
00307 std::vector<SPio>::iterator io;
00308
00309
00310 for( io = io_.begin(); io != io_.end() && runme; io++)
00311 {
00312
00313
00314 switch(this->GetCoreFirmwareVersion()) {
00315 case 20100122:
00316 sp_2010_01_22_.wrap
00317 (
00318 io->me1aVp, io->me1aQp, io->me1aEtap, io->me1aPhip, io->me1aCSCIdp,
00319 io->me1bVp, io->me1bQp, io->me1bEtap, io->me1bPhip, io->me1bCSCIdp,
00320 io->me1cVp, io->me1cQp, io->me1cEtap, io->me1cPhip, io->me1cCSCIdp,
00321
00322 io->me1dVp, io->me1dQp, io->me1dEtap, io->me1dPhip, io->me1dCSCIdp,
00323 io->me1eVp, io->me1eQp, io->me1eEtap, io->me1ePhip, io->me1eCSCIdp,
00324 io->me1fVp, io->me1fQp, io->me1fEtap, io->me1fPhip, io->me1fCSCIdp,
00325
00326 io->me2aVp, io->me2aQp, io->me2aEtap, io->me2aPhip,
00327 io->me2bVp, io->me2bQp, io->me2bEtap, io->me2bPhip,
00328 io->me2cVp, io->me2cQp, io->me2cEtap, io->me2cPhip,
00329
00330 io->me3aVp, io->me3aQp, io->me3aEtap, io->me3aPhip,
00331 io->me3bVp, io->me3bQp, io->me3bEtap, io->me3bPhip,
00332 io->me3cVp, io->me3cQp, io->me3cEtap, io->me3cPhip,
00333
00334 io->me4aVp, io->me4aQp, io->me4aEtap, io->me4aPhip,
00335 io->me4bVp, io->me4bQp, io->me4bEtap, io->me4bPhip,
00336 io->me4cVp, io->me4cQp, io->me4cEtap, io->me4cPhip,
00337
00338 io->mb1aVp, io->mb1aQp, io->mb1aPhip,
00339 io->mb1bVp, io->mb1bQp, io->mb1bPhip,
00340 io->mb1cVp, io->mb1cQp, io->mb1cPhip,
00341 io->mb1dVp, io->mb1dQp, io->mb1dPhip,
00342
00343 io->ptHp, io->signHp, io->modeMemHp, io->etaPTHp, io->FRHp, io->phiHp,
00344 io->ptMp, io->signMp, io->modeMemMp, io->etaPTMp, io->FRMp, io->phiMp,
00345 io->ptLp, io->signLp, io->modeMemLp, io->etaPTLp, io->FRLp, io->phiLp,
00346
00347 io->me1idH, io->me2idH, io->me3idH, io->me4idH, io->mb1idH, io->mb2idH,
00348 io->me1idM, io->me2idM, io->me3idM, io->me4idM, io->mb1idM, io->mb2idM,
00349 io->me1idL, io->me2idL, io->me3idL, io->me4idL, io->mb1idL, io->mb2idL,
00350
00351 etamin1,etamin2,etamin3,etamin4,etamin5,etamin6,etamin7,etamin8,
00352 etamax1,etamax2,etamax3,etamax4,etamax5,etamax6,etamax7,etamax8,
00353 etawin1, etawin2, etawin3, etawin4, etawin5, etawin6, etawin7,
00354 mindphip, mindetap,
00355
00356 mindeta12_accp, maxdeta12_accp, maxdphi12_accp,
00357 mindeta13_accp, maxdeta13_accp, maxdphi13_accp,
00358
00359 mindeta112_accp, maxdeta112_accp, maxdphi112_accp,
00360 mindeta113_accp, maxdeta113_accp, maxdphi113_accp,
00361 mindphip_halo, mindetap_halo,
00362
00363 straightp, curvedp,
00364 mbaPhiOff, mbbPhiOff,
00365 (m_preTrigger<<7)|(m_allowCLCTonly<<5)|(m_allowALCTonly<<4)|(m_extend_length<<1)|(m_widePhi)
00366 );
00367
00368 break;
00369 case 20100728:
00370 sp_2010_07_28_.wrap
00371 (
00372 io->me1aVp, io->me1aQp, io->me1aEtap, io->me1aPhip, io->me1aCSCIdp,
00373 io->me1bVp, io->me1bQp, io->me1bEtap, io->me1bPhip, io->me1bCSCIdp,
00374 io->me1cVp, io->me1cQp, io->me1cEtap, io->me1cPhip, io->me1cCSCIdp,
00375
00376 io->me1dVp, io->me1dQp, io->me1dEtap, io->me1dPhip, io->me1dCSCIdp,
00377 io->me1eVp, io->me1eQp, io->me1eEtap, io->me1ePhip, io->me1eCSCIdp,
00378 io->me1fVp, io->me1fQp, io->me1fEtap, io->me1fPhip, io->me1fCSCIdp,
00379
00380 io->me2aVp, io->me2aQp, io->me2aEtap, io->me2aPhip,
00381 io->me2bVp, io->me2bQp, io->me2bEtap, io->me2bPhip,
00382 io->me2cVp, io->me2cQp, io->me2cEtap, io->me2cPhip,
00383
00384 io->me3aVp, io->me3aQp, io->me3aEtap, io->me3aPhip,
00385 io->me3bVp, io->me3bQp, io->me3bEtap, io->me3bPhip,
00386 io->me3cVp, io->me3cQp, io->me3cEtap, io->me3cPhip,
00387
00388 io->me4aVp, io->me4aQp, io->me4aEtap, io->me4aPhip,
00389 io->me4bVp, io->me4bQp, io->me4bEtap, io->me4bPhip,
00390 io->me4cVp, io->me4cQp, io->me4cEtap, io->me4cPhip,
00391
00392 io->mb1aVp, io->mb1aQp, io->mb1aPhip,
00393 io->mb1bVp, io->mb1bQp, io->mb1bPhip,
00394 io->mb1cVp, io->mb1cQp, io->mb1cPhip,
00395 io->mb1dVp, io->mb1dQp, io->mb1dPhip,
00396
00397 io->ptHp, io->signHp, io->modeMemHp, io->etaPTHp, io->FRHp, io->phiHp,
00398 io->ptMp, io->signMp, io->modeMemMp, io->etaPTMp, io->FRMp, io->phiMp,
00399 io->ptLp, io->signLp, io->modeMemLp, io->etaPTLp, io->FRLp, io->phiLp,
00400
00401 io->me1idH, io->me2idH, io->me3idH, io->me4idH, io->mb1idH, io->mb2idH,
00402 io->me1idM, io->me2idM, io->me3idM, io->me4idM, io->mb1idM, io->mb2idM,
00403 io->me1idL, io->me2idL, io->me3idL, io->me4idL, io->mb1idL, io->mb2idL,
00404
00405 etamin1,etamin2,etamin3,etamin4,etamin5,etamin6,etamin7,etamin8,
00406 etamax1,etamax2,etamax3,etamax4,etamax5,etamax6,etamax7,etamax8,
00407 etawin1, etawin2, etawin3, etawin4, etawin5, etawin6, etawin7,
00408 mindphip, mindetap,
00409
00410 mindeta12_accp, maxdeta12_accp, maxdphi12_accp,
00411 mindeta13_accp, maxdeta13_accp, maxdphi13_accp,
00412
00413 mindeta112_accp, maxdeta112_accp, maxdphi112_accp,
00414 mindeta113_accp, maxdeta113_accp, maxdphi113_accp,
00415 mindphip_halo, mindetap_halo,
00416
00417 straightp, curvedp,
00418 mbaPhiOff, mbbPhiOff,
00419 (m_preTrigger<<7)|(m_allowCLCTonly<<5)|(m_allowALCTonly<<4)|(m_extend_length<<1)|(m_widePhi)
00420 );
00421 break;
00422 case 20100901:
00423 sp_2010_09_01_.wrap
00424 (
00425 io->me1aVp, io->me1aQp, io->me1aEtap, io->me1aPhip, io->me1aCSCIdp,
00426 io->me1bVp, io->me1bQp, io->me1bEtap, io->me1bPhip, io->me1bCSCIdp,
00427 io->me1cVp, io->me1cQp, io->me1cEtap, io->me1cPhip, io->me1cCSCIdp,
00428
00429 io->me1dVp, io->me1dQp, io->me1dEtap, io->me1dPhip, io->me1dCSCIdp,
00430 io->me1eVp, io->me1eQp, io->me1eEtap, io->me1ePhip, io->me1eCSCIdp,
00431 io->me1fVp, io->me1fQp, io->me1fEtap, io->me1fPhip, io->me1fCSCIdp,
00432
00433 io->me2aVp, io->me2aQp, io->me2aEtap, io->me2aPhip,
00434 io->me2bVp, io->me2bQp, io->me2bEtap, io->me2bPhip,
00435 io->me2cVp, io->me2cQp, io->me2cEtap, io->me2cPhip,
00436
00437 io->me3aVp, io->me3aQp, io->me3aEtap, io->me3aPhip,
00438 io->me3bVp, io->me3bQp, io->me3bEtap, io->me3bPhip,
00439 io->me3cVp, io->me3cQp, io->me3cEtap, io->me3cPhip,
00440
00441 io->me4aVp, io->me4aQp, io->me4aEtap, io->me4aPhip,
00442 io->me4bVp, io->me4bQp, io->me4bEtap, io->me4bPhip,
00443 io->me4cVp, io->me4cQp, io->me4cEtap, io->me4cPhip,
00444
00445 io->mb1aVp, io->mb1aQp, io->mb1aPhip,
00446 io->mb1bVp, io->mb1bQp, io->mb1bPhip,
00447 io->mb1cVp, io->mb1cQp, io->mb1cPhip,
00448 io->mb1dVp, io->mb1dQp, io->mb1dPhip,
00449
00450 io->ptHp, io->signHp, io->modeMemHp, io->etaPTHp, io->FRHp, io->phiHp,
00451 io->ptMp, io->signMp, io->modeMemMp, io->etaPTMp, io->FRMp, io->phiMp,
00452 io->ptLp, io->signLp, io->modeMemLp, io->etaPTLp, io->FRLp, io->phiLp,
00453
00454 io->me1idH, io->me2idH, io->me3idH, io->me4idH, io->mb1idH, io->mb2idH,
00455 io->me1idM, io->me2idM, io->me3idM, io->me4idM, io->mb1idM, io->mb2idM,
00456 io->me1idL, io->me2idL, io->me3idL, io->me4idL, io->mb1idL, io->mb2idL,
00457
00458 etamin1,etamin2,etamin3,etamin4,etamin5,etamin6,etamin7,etamin8,
00459 etamax1,etamax2,etamax3,etamax4,etamax5,etamax6,etamax7,etamax8,
00460 etawin1, etawin2, etawin3, etawin4, etawin5, etawin6, etawin7,
00461 mindphip, mindetap,
00462
00463 mindeta12_accp, maxdeta12_accp, maxdphi12_accp,
00464 mindeta13_accp, maxdeta13_accp, maxdphi13_accp,
00465
00466 mindeta112_accp, maxdeta112_accp, maxdphi112_accp,
00467 mindeta113_accp, maxdeta113_accp, maxdphi113_accp,
00468 mindphip_halo, mindetap_halo,
00469
00470 straightp, curvedp,
00471 mbaPhiOff, mbbPhiOff,
00472 (m_preTrigger<<7)|(m_allowCLCTonly<<5)|(m_allowALCTonly<<4)|(m_extend_length<<1)|(m_widePhi)
00473 );
00474 break;
00475
00476 case 20101011:
00477 sp_2010_10_11_.wrap
00478 (
00479 io->me1aVp, io->me1aQp, io->me1aEtap, io->me1aPhip, io->me1aCSCIdp,
00480 io->me1bVp, io->me1bQp, io->me1bEtap, io->me1bPhip, io->me1bCSCIdp,
00481 io->me1cVp, io->me1cQp, io->me1cEtap, io->me1cPhip, io->me1cCSCIdp,
00482
00483 io->me1dVp, io->me1dQp, io->me1dEtap, io->me1dPhip, io->me1dCSCIdp,
00484 io->me1eVp, io->me1eQp, io->me1eEtap, io->me1ePhip, io->me1eCSCIdp,
00485 io->me1fVp, io->me1fQp, io->me1fEtap, io->me1fPhip, io->me1fCSCIdp,
00486
00487 io->me2aVp, io->me2aQp, io->me2aEtap, io->me2aPhip,
00488 io->me2bVp, io->me2bQp, io->me2bEtap, io->me2bPhip,
00489 io->me2cVp, io->me2cQp, io->me2cEtap, io->me2cPhip,
00490
00491 io->me3aVp, io->me3aQp, io->me3aEtap, io->me3aPhip,
00492 io->me3bVp, io->me3bQp, io->me3bEtap, io->me3bPhip,
00493 io->me3cVp, io->me3cQp, io->me3cEtap, io->me3cPhip,
00494
00495 io->me4aVp, io->me4aQp, io->me4aEtap, io->me4aPhip,
00496 io->me4bVp, io->me4bQp, io->me4bEtap, io->me4bPhip,
00497 io->me4cVp, io->me4cQp, io->me4cEtap, io->me4cPhip,
00498
00499 io->mb1aVp, io->mb1aQp, io->mb1aPhip,
00500 io->mb1bVp, io->mb1bQp, io->mb1bPhip,
00501 io->mb1cVp, io->mb1cQp, io->mb1cPhip,
00502 io->mb1dVp, io->mb1dQp, io->mb1dPhip,
00503
00504 io->ptHp, io->signHp, io->modeMemHp, io->etaPTHp, io->FRHp, io->phiHp,
00505 io->ptMp, io->signMp, io->modeMemMp, io->etaPTMp, io->FRMp, io->phiMp,
00506 io->ptLp, io->signLp, io->modeMemLp, io->etaPTLp, io->FRLp, io->phiLp,
00507
00508 io->me1idH, io->me2idH, io->me3idH, io->me4idH, io->mb1idH, io->mb2idH,
00509 io->me1idM, io->me2idM, io->me3idM, io->me4idM, io->mb1idM, io->mb2idM,
00510 io->me1idL, io->me2idL, io->me3idL, io->me4idL, io->mb1idL, io->mb2idL,
00511
00512 etamin1,etamin2,etamin3,etamin4,etamin5,etamin7,etamin8,
00513 etamax1,etamax2,etamax3,etamax4,etamax5,etamax7,etamax8,
00514 etawin1, etawin2, etawin3, etawin4, etawin5, etawin7,
00515 mindphip, mindetap,
00516
00517 mindeta12_accp, maxdeta12_accp, maxdphi12_accp,
00518 mindeta13_accp, maxdeta13_accp, maxdphi13_accp,
00519
00520 mindeta112_accp, maxdeta112_accp, maxdphi112_accp,
00521 mindeta113_accp, maxdeta113_accp, maxdphi113_accp,
00522 mindphip_halo, mindetap_halo,
00523
00524 straightp, curvedp,
00525 mbaPhiOff, mbbPhiOff,
00526 (m_preTrigger<<7)|(m_allowCLCTonly<<5)|(m_allowALCTonly<<4)|(m_extend_length<<1)|(m_widePhi)
00527 );
00528 break;
00529
00530
00531 case 20101210:
00532 sp_2010_12_10_.wrap
00533 (
00534 io->me1aVp, io->me1aQp, io->me1aEtap, io->me1aPhip, io->me1aCSCIdp,
00535 io->me1bVp, io->me1bQp, io->me1bEtap, io->me1bPhip, io->me1bCSCIdp,
00536 io->me1cVp, io->me1cQp, io->me1cEtap, io->me1cPhip, io->me1cCSCIdp,
00537
00538 io->me1dVp, io->me1dQp, io->me1dEtap, io->me1dPhip, io->me1dCSCIdp,
00539 io->me1eVp, io->me1eQp, io->me1eEtap, io->me1ePhip, io->me1eCSCIdp,
00540 io->me1fVp, io->me1fQp, io->me1fEtap, io->me1fPhip, io->me1fCSCIdp,
00541
00542 io->me2aVp, io->me2aQp, io->me2aEtap, io->me2aPhip,
00543 io->me2bVp, io->me2bQp, io->me2bEtap, io->me2bPhip,
00544 io->me2cVp, io->me2cQp, io->me2cEtap, io->me2cPhip,
00545
00546 io->me3aVp, io->me3aQp, io->me3aEtap, io->me3aPhip,
00547 io->me3bVp, io->me3bQp, io->me3bEtap, io->me3bPhip,
00548 io->me3cVp, io->me3cQp, io->me3cEtap, io->me3cPhip,
00549
00550 io->me4aVp, io->me4aQp, io->me4aEtap, io->me4aPhip,
00551 io->me4bVp, io->me4bQp, io->me4bEtap, io->me4bPhip,
00552 io->me4cVp, io->me4cQp, io->me4cEtap, io->me4cPhip,
00553
00554 io->mb1aVp, io->mb1aQp, io->mb1aPhip,
00555 io->mb1bVp, io->mb1bQp, io->mb1bPhip,
00556 io->mb1cVp, io->mb1cQp, io->mb1cPhip,
00557 io->mb1dVp, io->mb1dQp, io->mb1dPhip,
00558
00559 io->ptHp, io->signHp, io->modeMemHp, io->etaPTHp, io->FRHp, io->phiHp,
00560 io->ptMp, io->signMp, io->modeMemMp, io->etaPTMp, io->FRMp, io->phiMp,
00561 io->ptLp, io->signLp, io->modeMemLp, io->etaPTLp, io->FRLp, io->phiLp,
00562
00563 io->me1idH, io->me2idH, io->me3idH, io->me4idH, io->mb1idH, io->mb2idH,
00564 io->me1idM, io->me2idM, io->me3idM, io->me4idM, io->mb1idM, io->mb2idM,
00565 io->me1idL, io->me2idL, io->me3idL, io->me4idL, io->mb1idL, io->mb2idL,
00566
00567 etamin1,etamin2,etamin3,etamin4,etamin5,etamin7,etamin8,
00568 etamax1,etamax2,etamax3,etamax4,etamax5,etamax7,etamax8,
00569 etawin1, etawin2, etawin3, etawin4, etawin5, etawin7,
00570 mindphip, mindetap,
00571
00572 mindeta12_accp, maxdeta12_accp, maxdphi12_accp,
00573 mindeta13_accp, maxdeta13_accp, maxdphi13_accp,
00574
00575 mindeta112_accp, maxdeta112_accp, maxdphi112_accp,
00576 mindeta113_accp, maxdeta113_accp, maxdphi113_accp,
00577 mindphip_halo, mindetap_halo,
00578
00579 straightp, curvedp,
00580 mbaPhiOff, mbbPhiOff,
00581 (m_preTrigger<<7)|(m_allowCLCTonly<<5)|(m_allowALCTonly<<4)|(m_extend_length<<1)|(m_widePhi)
00582 );
00583 break;
00584
00585 case 20110118:
00586 sp_2011_01_18_.wrap
00587 (
00588 io->me1aVp, io->me1aQp, io->me1aEtap, io->me1aPhip, io->me1aCSCIdp, io->me1aCLCTp,
00589 io->me1bVp, io->me1bQp, io->me1bEtap, io->me1bPhip, io->me1bCSCIdp, io->me1bCLCTp,
00590 io->me1cVp, io->me1cQp, io->me1cEtap, io->me1cPhip, io->me1cCSCIdp, io->me1cCLCTp,
00591
00592 io->me1dVp, io->me1dQp, io->me1dEtap, io->me1dPhip, io->me1dCSCIdp, io->me1dCLCTp,
00593 io->me1eVp, io->me1eQp, io->me1eEtap, io->me1ePhip, io->me1eCSCIdp, io->me1eCLCTp,
00594 io->me1fVp, io->me1fQp, io->me1fEtap, io->me1fPhip, io->me1fCSCIdp, io->me1fCLCTp,
00595
00596 io->me2aVp, io->me2aQp, io->me2aEtap, io->me2aPhip,
00597 io->me2bVp, io->me2bQp, io->me2bEtap, io->me2bPhip,
00598 io->me2cVp, io->me2cQp, io->me2cEtap, io->me2cPhip,
00599
00600 io->me3aVp, io->me3aQp, io->me3aEtap, io->me3aPhip,
00601 io->me3bVp, io->me3bQp, io->me3bEtap, io->me3bPhip,
00602 io->me3cVp, io->me3cQp, io->me3cEtap, io->me3cPhip,
00603
00604 io->me4aVp, io->me4aQp, io->me4aEtap, io->me4aPhip,
00605 io->me4bVp, io->me4bQp, io->me4bEtap, io->me4bPhip,
00606 io->me4cVp, io->me4cQp, io->me4cEtap, io->me4cPhip,
00607
00608 io->mb1aVp, io->mb1aQp, io->mb1aPhip, io->mb1aBendp,
00609 io->mb1bVp, io->mb1bQp, io->mb1bPhip, io->mb1bBendp,
00610 io->mb1cVp, io->mb1cQp, io->mb1cPhip, io->mb1cBendp,
00611 io->mb1dVp, io->mb1dQp, io->mb1dPhip, io->mb1dBendp,
00612
00613 io->ptHp, io->signHp, io->modeMemHp, io->etaPTHp, io->FRHp, io->phiHp,
00614 io->ptMp, io->signMp, io->modeMemMp, io->etaPTMp, io->FRMp, io->phiMp,
00615 io->ptLp, io->signLp, io->modeMemLp, io->etaPTLp, io->FRLp, io->phiLp,
00616
00617 io->me1idH, io->me2idH, io->me3idH, io->me4idH, io->mb1idH, io->mb2idH,
00618 io->me1idM, io->me2idM, io->me3idM, io->me4idM, io->mb1idM, io->mb2idM,
00619 io->me1idL, io->me2idL, io->me3idL, io->me4idL, io->mb1idL, io->mb2idL,
00620
00621 etamin1,etamin2,etamin3,etamin4,etamin5,etamin7,etamin8,
00622 etamax1,etamax2,etamax3,etamax4,etamax5,etamax7,etamax8,
00623 etawin1, etawin2, etawin3, etawin4, etawin5, etawin7,
00624 mindphip, mindetap,
00625
00626 mindeta12_accp, maxdeta12_accp, maxdphi12_accp,
00627 mindeta13_accp, maxdeta13_accp, maxdphi13_accp,
00628
00629 mindeta112_accp, maxdeta112_accp, maxdphi112_accp,
00630 mindeta113_accp, maxdeta113_accp, maxdphi113_accp,
00631 mindphip_halo, mindetap_halo,
00632
00633 straightp, curvedp,
00634 mbaPhiOff, mbbPhiOff,
00635 (m_preTrigger<<7)|(m_allowCLCTonly<<5)|(m_allowALCTonly<<4)|(m_extend_length<<1)|(m_widePhi)
00636 );
00637 break;
00638
00639 default:
00640 edm::LogInfo("CSCSTFSPCoreLogic") << "Warning: using the default core is what you want?"
00641 << " Core version is " << this->GetCoreFirmwareVersion();
00642 sp_2010_01_22_.wrap
00643 (
00644 io->me1aVp, io->me1aQp, io->me1aEtap, io->me1aPhip, io->me1aCSCIdp,
00645 io->me1bVp, io->me1bQp, io->me1bEtap, io->me1bPhip, io->me1bCSCIdp,
00646 io->me1cVp, io->me1cQp, io->me1cEtap, io->me1cPhip, io->me1cCSCIdp,
00647
00648 io->me1dVp, io->me1dQp, io->me1dEtap, io->me1dPhip, io->me1dCSCIdp,
00649 io->me1eVp, io->me1eQp, io->me1eEtap, io->me1ePhip, io->me1eCSCIdp,
00650 io->me1fVp, io->me1fQp, io->me1fEtap, io->me1fPhip, io->me1fCSCIdp,
00651
00652 io->me2aVp, io->me2aQp, io->me2aEtap, io->me2aPhip,
00653 io->me2bVp, io->me2bQp, io->me2bEtap, io->me2bPhip,
00654 io->me2cVp, io->me2cQp, io->me2cEtap, io->me2cPhip,
00655
00656 io->me3aVp, io->me3aQp, io->me3aEtap, io->me3aPhip,
00657 io->me3bVp, io->me3bQp, io->me3bEtap, io->me3bPhip,
00658 io->me3cVp, io->me3cQp, io->me3cEtap, io->me3cPhip,
00659
00660 io->me4aVp, io->me4aQp, io->me4aEtap, io->me4aPhip,
00661 io->me4bVp, io->me4bQp, io->me4bEtap, io->me4bPhip,
00662 io->me4cVp, io->me4cQp, io->me4cEtap, io->me4cPhip,
00663
00664 io->mb1aVp, io->mb1aQp, io->mb1aPhip,
00665 io->mb1bVp, io->mb1bQp, io->mb1bPhip,
00666 io->mb1cVp, io->mb1cQp, io->mb1cPhip,
00667 io->mb1dVp, io->mb1dQp, io->mb1dPhip,
00668
00669 io->ptHp, io->signHp, io->modeMemHp, io->etaPTHp, io->FRHp, io->phiHp,
00670 io->ptMp, io->signMp, io->modeMemMp, io->etaPTMp, io->FRMp, io->phiMp,
00671 io->ptLp, io->signLp, io->modeMemLp, io->etaPTLp, io->FRLp, io->phiLp,
00672
00673 io->me1idH, io->me2idH, io->me3idH, io->me4idH, io->mb1idH, io->mb2idH,
00674 io->me1idM, io->me2idM, io->me3idM, io->me4idM, io->mb1idM, io->mb2idM,
00675 io->me1idL, io->me2idL, io->me3idL, io->me4idL, io->mb1idL, io->mb2idL,
00676
00677 etamin1,etamin2,etamin3,etamin4,etamin5,etamin6,etamin7,etamin8,
00678 etamax1,etamax2,etamax3,etamax4,etamax5,etamax6,etamax7,etamax8,
00679 etawin1, etawin2, etawin3, etawin4, etawin5, etawin6, etawin7,
00680 mindphip, mindetap,
00681
00682 mindeta12_accp, maxdeta12_accp, maxdphi12_accp,
00683 mindeta13_accp, maxdeta13_accp, maxdphi13_accp,
00684
00685 mindeta112_accp, maxdeta112_accp, maxdphi112_accp,
00686 mindeta113_accp, maxdeta113_accp, maxdphi113_accp,
00687 mindphip_halo, mindetap_halo,
00688
00689 straightp, curvedp,
00690 mbaPhiOff, mbbPhiOff,
00691 (m_preTrigger<<7)|(m_allowCLCTonly<<5)|(m_allowALCTonly<<4)|(m_extend_length<<1)|(m_widePhi));
00692 break;
00693
00694 }
00695
00696 if ( IsVerbose() ) {
00697 std::cout << "Core Verbose Output For Debugging\n";
00698 std::cout << io->me1aVp << " " << io->me1aQp << " " << io->me1aEtap << " " << io->me1aPhip << " " << io->me1aCSCIdp << " " << io->me1aCLCTp << std::endl;
00699 std::cout << io->me1bVp << " " << io->me1bQp << " " << io->me1bEtap << " " << io->me1bPhip << " " << io->me1bCSCIdp << " " << io->me1bCLCTp << std::endl;
00700 std::cout << io->me1cVp << " " << io->me1cQp << " " << io->me1cEtap << " " << io->me1cPhip << " " << io->me1cCSCIdp << " " << io->me1cCLCTp << std::endl;
00701
00702 std::cout << io->me1dVp << " " << io->me1dQp << " " << io->me1dEtap << " " << io->me1dPhip << " " << io->me1dCSCIdp << " " << io->me1dCLCTp << std::endl;
00703 std::cout << io->me1eVp << " " << io->me1eQp << " " << io->me1eEtap << " " << io->me1ePhip << " " << io->me1eCSCIdp << " " << io->me1eCLCTp << std::endl;
00704 std::cout << io->me1fVp << " " << io->me1fQp << " " << io->me1fEtap << " " << io->me1fPhip << " " << io->me1fCSCIdp << " " << io->me1fCLCTp << std::endl;
00705
00706 std::cout << io->me2aVp << " " << io->me2aQp << " " << io->me2aEtap << " " << io->me2aPhip << " " << 0 << " " << 0 << std::endl;
00707 std::cout << io->me2bVp << " " << io->me2bQp << " " << io->me2bEtap << " " << io->me2bPhip << " " << 0 << " " << 0 << std::endl;
00708 std::cout << io->me2cVp << " " << io->me2cQp << " " << io->me2cEtap << " " << io->me2cPhip << " " << 0 << " " << 0 << std::endl;
00709
00710 std::cout << io->me3aVp << " " << io->me3aQp << " " << io->me3aEtap << " " << io->me3aPhip << " " << 0 << " " << 0 << std::endl;
00711 std::cout << io->me3bVp << " " << io->me3bQp << " " << io->me3bEtap << " " << io->me3bPhip << " " << 0 << " " << 0 << std::endl;
00712 std::cout << io->me3cVp << " " << io->me3cQp << " " << io->me3cEtap << " " << io->me3cPhip << " " << 0 << " " << 0 << std::endl;
00713
00714 std::cout << io->me4aVp << " " << io->me4aQp << " " << io->me4aEtap << " " << io->me4aPhip << " " << 0 << " " << 0 << std::endl;
00715 std::cout << io->me4bVp << " " << io->me4bQp << " " << io->me4bEtap << " " << io->me4bPhip << " " << 0 << " " << 0 << std::endl;
00716 std::cout << io->me4cVp << " " << io->me4cQp << " " << io->me4cEtap << " " << io->me4cPhip << " " << 0 << " " << 0 << std::endl;
00717
00718 std::cout << io->mb1aVp << " " << io->mb1aQp << " " << 0 << " " << io->mb1aPhip <<" " << 0 << " " << io->mb1aBendp << std::endl;
00719 std::cout << io->mb1bVp << " " << io->mb1bQp << " " << 0 << " " << io->mb1bPhip <<" " << 0 << " " << io->mb1bBendp << std::endl;
00720 std::cout << io->mb1cVp << " " << io->mb1cQp << " " << 0 << " " << 0 <<" " << 0 << " " << 0 << std::endl;
00721 std::cout << io->mb1dVp << " " << io->mb1dQp << " " << 0 << " " << 0 <<" " << 0 << " " << 0 << std::endl;
00722
00723 std::cout << io->ptHp << " " << io->signHp << " " << io->modeMemHp << " " << io->etaPTHp << " " << io->FRHp << " " << io->phiHp << std::endl;
00724 std::cout << io->ptMp << " " << io->signMp << " " << io->modeMemMp << " " << io->etaPTMp << " " << io->FRMp << " " << io->phiMp << std::endl;
00725 std::cout << io->ptLp << " " << io->signLp << " " << io->modeMemLp << " " << io->etaPTLp << " " << io->FRLp << " " << io->phiLp << std::endl;
00726
00727 std::cout << io->me1idH << " " << io->me2idH << " " << io->me3idH << " " << io->me4idH << " " << io->mb1idH << " " << io->mb2idH << std::endl;
00728 std::cout << io->me1idM << " " << io->me2idM << " " << io->me3idM << " " << io->me4idM << " " << io->mb1idM << " " << io->mb2idM << std::endl;
00729 std::cout << io->me1idL << " " << io->me2idL << " " << io->me3idL << " " << io->me4idL << " " << io->mb1idL << " " << io->mb2idL << std::endl << std::endl;
00730 }
00731 ++bx;
00732 }
00733
00734
00735 bx = 0;
00736
00737
00738
00739
00740
00741
00742 for(io = io_.begin() + latency + 1 + 1; io != io_.end(); io++)
00743 {
00744 csc::L1TrackId trkHid(endcap, sector), trkMid(endcap, sector), trkLid(endcap, sector);
00745 trkHid.setMode(io->modeMemHp);
00746 trkMid.setMode(io->modeMemMp);
00747 trkLid.setMode(io->modeMemLp);
00748
00749 csc::L1Track trkH(trkHid), trkM(trkMid), trkL(trkLid);
00750
00751 ptadd LUTAddressH, LUTAddressM, LUTAddressL;
00752
00753
00754 LUTAddressH.delta_phi_12 = io->ptHp & 0xff;
00755 LUTAddressH.delta_phi_23 = (io->ptHp >> 8) & 0xf;
00756 LUTAddressH.track_eta = (io->etaPTHp>>1) & 0xf;
00757 LUTAddressH.track_mode = io->modeMemHp & 0xf;
00758
00759
00760
00761 LUTAddressH.delta_phi_sign = (io->ptHp >> (13-1)) & 0x1;
00762 LUTAddressH.track_fr = io->FRHp & 0x1;
00763
00764 LUTAddressM.delta_phi_12 = io->ptMp & 0xff;
00765 LUTAddressM.delta_phi_23 = (io->ptMp >> 8) & 0xf;
00766 LUTAddressM.track_eta = (io->etaPTMp>>1) & 0xf;
00767 LUTAddressM.track_mode = io->modeMemMp & 0xf;
00768
00769 LUTAddressM.delta_phi_sign = (io->ptMp >> (13-1)) & 0x1;
00770 LUTAddressM.track_fr = io->FRMp & 0x1;
00771
00772 LUTAddressL.delta_phi_12 = io->ptLp & 0xff;
00773 LUTAddressL.delta_phi_23 = (io->ptLp >> 8) & 0xf;
00774 LUTAddressL.track_eta = (io->etaPTLp>>1) & 0xf;
00775 LUTAddressL.track_mode = io->modeMemLp & 0xf;
00776
00777 LUTAddressL.delta_phi_sign = (io->ptLp >> (13-1)) & 0x1;
00778 LUTAddressL.track_fr = io->FRLp & 0x1;
00779
00780
00781
00782
00783
00784 int shift = (maxBX - minBX)/2;
00785
00786 if(LUTAddressH.track_mode)
00787 {
00788 trkH.setPtLUTAddress(LUTAddressH.toint());
00789 trkH.setChargePacked(~(io->signHp)&0x1);
00790 trkH.setLocalPhi(io->phiHp);
00791 trkH.setEtaPacked(io->etaPTHp);
00792 trkH.setBx((int)(bx)-shift);
00793 trkH.setStationIds(io->me1idH&0x7, io->me2idH&0x3, io->me3idH&0x3, io->me4idH&0x3, io->mb1idH&0x3 );
00794 trkH.setTbins (io->me1idH>>3, io->me2idH>>2, io->me3idH>>2, io->me4idH>>2, io->mb1idH>>2 );
00795 trkH.setOutputLink(1);
00796 if( LUTAddressH.track_mode==15 ) trkH.setFineHaloPacked(1);
00797 mytracks.push_back(trkH);
00798 }
00799 if(LUTAddressM.track_mode)
00800 {
00801 trkM.setPtLUTAddress(LUTAddressM.toint());
00802 trkM.setChargePacked(~(io->signMp)&0x1);
00803 trkM.setLocalPhi(io->phiMp);
00804 trkM.setEtaPacked(io->etaPTMp);
00805 trkM.setBx((int)(bx)-shift);
00806 trkM.setStationIds(io->me1idM&0x7, io->me2idM&0x3, io->me3idM&0x3, io->me4idM&0x3, io->mb1idM&0x3 );
00807 trkM.setTbins (io->me1idM>>3, io->me2idM>>2, io->me3idM>>2, io->me4idM>>2, io->mb1idM>>2 );
00808 trkM.setOutputLink(2);
00809 if( LUTAddressM.track_mode==15 ) trkM.setFineHaloPacked(1);
00810 mytracks.push_back(trkM);
00811 }
00812 if(LUTAddressL.track_mode)
00813 {
00814 trkL.setPtLUTAddress(LUTAddressL.toint());
00815 trkL.setChargePacked(~(io->signLp)&0x1);
00816 trkL.setLocalPhi(io->phiLp);
00817 trkL.setEtaPacked(io->etaPTLp);
00818 trkL.setBx((int)(bx)-shift);
00819 trkL.setStationIds(io->me1idL&0x7, io->me2idL&0x3, io->me3idL&0x3, io->me4idL&0x3, io->mb1idL&0x3 );
00820 trkL.setTbins (io->me1idL>>3, io->me2idL>>2, io->me3idL>>2, io->me4idL>>2, io->mb1idL>>2 );
00821 trkL.setOutputLink(3);
00822 if( LUTAddressL.track_mode==15 ) trkL.setFineHaloPacked(1);
00823 mytracks.push_back(trkL);
00824 }
00825 ++bx;
00826 }
00827 return runme;
00828 }
00829
00830 CSCTriggerContainer<csc::L1Track> CSCTFSPCoreLogic::tracks()
00831 {
00832 return mytracks;
00833 }
00834
00835