Back to home page

Project CMSSW displayed by LXR

 
 

    


File indexing completed on 2021-09-16 03:23:56

0001 //-------------------------------------------------
0002 //
0003 /**  \class L1MuDTSectorReceiver
0004  *
0005  *   Sector Receiver:
0006  *
0007  *   The Sector Receiver receives track segment
0008  *   data from the DTBX and CSC chamber triggers
0009  *   and stores it into the Data Buffer
0010  *
0011  *
0012  *
0013  *   N. Neumeister            CERN EP
0014  *   J. Troconiz              UAM Madrid
0015  */
0016 //
0017 //--------------------------------------------------
0018 #ifndef L1MUDT_SECTOR_RECEIVER_H
0019 #define L1MUDT_SECTOR_RECEIVER_H
0020 
0021 //---------------
0022 // C++ Headers --
0023 //---------------
0024 
0025 #include <vector>
0026 
0027 //----------------------
0028 // Base Class Headers --
0029 //----------------------
0030 
0031 //------------------------------------
0032 // Collaborating Class Declarations --
0033 //------------------------------------
0034 
0035 #include "FWCore/Framework/interface/ConsumesCollector.h"
0036 #include "DataFormats/Common/interface/Handle.h"
0037 #include "FWCore/Framework/interface/ESHandle.h"
0038 #include "FWCore/Framework/interface/Event.h"
0039 #include "FWCore/Utilities/interface/EDGetToken.h"
0040 class L1MuDTChambPhContainer;
0041 class L1MuDTSectorProcessor;
0042 class L1MuDTTFParameters;
0043 class L1MuDTTFMasks;
0044 class L1MuDTTFParametersRcd;
0045 class L1MuDTTFMasksRcd;
0046 template <typename T>
0047 class CSCTriggerContainer;
0048 namespace csctf {
0049   class TrackStub;
0050 }
0051 
0052 //              ---------------------
0053 //              -- Class Interface --
0054 //              ---------------------
0055 
0056 class L1MuDTSectorReceiver {
0057 public:
0058   /// constructor
0059   L1MuDTSectorReceiver(L1MuDTSectorProcessor&, edm::ConsumesCollector iC);
0060 
0061   /// destructor
0062   virtual ~L1MuDTSectorReceiver();
0063 
0064   /// receive track segment data from the DTBX and CSC chamber triggers
0065   void run(int bx, const edm::Event& e, const edm::EventSetup& c);
0066 
0067   /// clear Sector Receiver
0068   void reset();
0069 
0070 private:
0071   /// receive track segment data from DTBX chamber trigger
0072   void receiveDTBXData(int bx, const edm::Event& e, const edm::EventSetup& c);
0073 
0074   /// receive track segment data from CSC chamber trigger
0075   void receiveCSCData(int bx, const edm::Event& e, const edm::EventSetup& c);
0076 
0077   /// find the right sector for a given address
0078   int address2sector(int adr) const;
0079 
0080   /// find the right wheel for a given address
0081   int address2wheel(int adr) const;
0082 
0083 private:
0084   L1MuDTSectorProcessor& m_sp;
0085   edm::EDGetTokenT<L1MuDTChambPhContainer> m_DTDigiToken;
0086   edm::EDGetTokenT<CSCTriggerContainer<csctf::TrackStub> > m_CSCTrSToken;
0087 
0088   edm::ESGetToken<L1MuDTTFParameters, L1MuDTTFParametersRcd> m_parsToken;
0089   edm::ESGetToken<L1MuDTTFMasks, L1MuDTTFMasksRcd> m_msksToken;
0090   edm::ESHandle<L1MuDTTFParameters> pars;
0091   edm::ESHandle<L1MuDTTFMasks> msks;
0092 };
0093 
0094 #endif