CMS 3D CMS Logo

/data/doxygen/doxygen-1.7.3/gen/CMSSW_4_2_8/src/L1Trigger/CSCTrackFinder/src/CSCTFSPCoreLogic.cc

Go to the documentation of this file.
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 //vpp_generated CSCTFSPCoreLogic::sp_;
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 // takes a trigger container and loads the first n bx of data into io_
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) // 1 - 5 for DT stubs
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                         // We need to put the DT stubs 1 BX ahead of the CSC ones for the TF firmware
00211                         //std::cout << "DT Stub at bx: " << relative_bx << std::endl;
00212                         switch(stubi->getMPCLink())
00213                         {
00214                         case 1:
00215                           if (this->GetSPFirmwareVersion() < 20100629) {
00216                             // introducing the bug which was causing only even DT qualities
00217                             // to get accepted
00218                             if(stubi->getQuality()%2==1)
00219                               {
00220                                 //io_[relative_bx].mb1aVp   = stubi->isValid();
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                             // introducing the bug which was causing only even DT qualities
00236                             // to get accepted
00237                             if(stubi->getQuality()%2==1)
00238                               {
00239                                 //io_[relative_bx].mb1aVp   = stubi->isValid();
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                     /*case 3:
00253                       io_[relative_bx].mb1cVp   = stubi->isValid();
00254                       io_[relative_bx].mb1cQp   = stubi->getQuality();
00255                       io_[relative_bx].mb1cPhip = stubi->phiPacked();
00256                       break;
00257                     case 4:
00258                       io_[relative_bx].mb1dVp   = stubi->isValid();
00259                       io_[relative_bx].mb1dQp   = stubi->getQuality();
00260                       io_[relative_bx].mb1dPhip = stubi->phiPacked();
00261                       break;*/
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 // Here we should assume the loadData() has been called...
00277 // But in reality you don't need to.
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   // run over enough clock cycles to get tracks from input stubs.
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,/*etamin6,*/etamin7,etamin8,
00513          etamax1,etamax2,etamax3,etamax4,etamax5,/*etamax6,*/etamax7,etamax8,
00514          etawin1, etawin2, etawin3, etawin4, etawin5, /*etawin6,*/ 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,/*etamin6,*/etamin7,etamin8,
00568          etamax1,etamax2,etamax3,etamax4,etamax5,/*etamax6,*/etamax7,etamax8,
00569          etawin1, etawin2, etawin3, etawin4, etawin5, /*etawin6,*/ 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,/*etamin6,*/etamin7,etamin8,
00622          etamax1,etamax2,etamax3,etamax4,etamax5,/*etamax6,*/etamax7,etamax8,
00623          etawin1, etawin2, etawin3, etawin4, etawin5, /*etawin6,*/ 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/*io->mb1cPhip*/ <<" " << 0 << " " << 0/*io->mb1aBendp*/ << std::endl;
00721       std::cout << io->mb1dVp << " " << io->mb1dQp << " " << 0 << " " << 0/*io->mb1dPhip*/ <<" " << 0 << " " << 0/*io->mb1aBendp*/ << 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   //int nmuons = 0;
00738   // start from where tracks could first possibly appear
00739   // read out tracks from io_
00740   // We add first +1 to the starting position because the CSC data started 1 BX after DT,
00741   // and the other +1 because of the number of calls to the core (i.e. latency+1):
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       // construct PT LUT address for all possible muons
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 //      Line Replaced due to removal of spbits.h, note that
00759 //      BWPT and MODE_ACC are now hard coded (13 and 15 respectively)
00760 //      LUTAddressH.delta_phi_sign = (io->ptHp >> (BWPT-1)) & 0x1;
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 //      LUTAddressM.delta_phi_sign = (io->ptMp >> (BWPT-1)) & 0x1;
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 //      LUTAddressL.delta_phi_sign = (io->ptLp >> (BWPT-1)) & 0x1;
00777       LUTAddressL.delta_phi_sign = (io->ptLp >> (13-1)) & 0x1;
00778       LUTAddressL.track_fr       = io->FRLp & 0x1;
00779 
00780      // Core's input was loaded in a relative time window starting from BX=1(CSC)/0(DT)
00781      // If we account for latency related shift in the core's output (as we do in this loop)
00782      //  then output tracks appear in the same BX as input stubs.
00783      // To create new time window with perfectly timed-in tracks placed at BX=0 we introduce a shift:
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 //  LocalWords:  isValid