Back to home page

Project CMSSW displayed by LXR

 
 

    


File indexing completed on 2025-06-03 00:12:12

0001 #ifndef L1Trigger_TrackerDTC_DTC_h
0002 #define L1Trigger_TrackerDTC_DTC_h
0003 
0004 #include "DataFormats/L1TrackTrigger/interface/TTDTC.h"
0005 #include "L1Trigger/TrackTrigger/interface/Setup.h"
0006 #include "L1Trigger/TrackerDTC/interface/LayerEncoding.h"
0007 #include "L1Trigger/TrackerDTC/interface/Stub.h"
0008 #include "L1Trigger/TrackerTFP/interface/DataFormats.h"
0009 
0010 #include <vector>
0011 #include <deque>
0012 
0013 namespace trackerDTC {
0014 
0015   /*! \class  trackerDTC::DTC
0016    *  \brief  Class to represent an outer tracker DTC board
0017    *  \author Thomas Schuh
0018    *  \date   2020, Jan
0019    */
0020   class DTC {
0021   private:
0022     typedef std::deque<Stub*> Stubs;
0023     typedef std::vector<Stubs> Stubss;
0024     typedef std::vector<Stubss> Stubsss;
0025 
0026   public:
0027     DTC(const tt::Setup* setup,
0028         const trackerTFP::DataFormats* dataFormats,
0029         const LayerEncoding* layerEncoding,
0030         int dtcId,
0031         const std::vector<std::vector<TTStubRef>>& stubsDTC);
0032     ~DTC() = default;
0033     // board level routing in two steps and products filling
0034     void produce(TTDTC& accepted, TTDTC& lost);
0035 
0036   private:
0037     // router step 1: merges stubs of all modules connected to one routing block into one stream
0038     void merge(Stubss& inputs, Stubs& output, Stubs& lost);
0039     // router step 2: merges stubs of all routing blocks and splits stubs into one stream per overlapping region
0040     void split(Stubss& inputs, Stubss& outputs);
0041     // conversion from Stubss to TTDTC
0042     void produce(const Stubss& stubss, TTDTC& product);
0043     // pop_front function which additionally returns copy of deleted front
0044     Stub* pop_front(Stubs& stubs);
0045     // helper class to store configurations
0046     const tt::Setup* setup_;
0047     // provides dataformats
0048     const trackerTFP::DataFormats* dataFormats_;
0049     // outer tracker detector region [0-8]
0050     int region_;
0051     // outer tracker dtc id in region [0-23]
0052     int board_;
0053     // container of modules connected to this DTC
0054     std::vector<tt::SensorModule*> modules_;
0055     // container of stubs on this DTC
0056     std::vector<Stub> stubs_;
0057     // input stubs organised in routing blocks [0..1] and channel [0..35]
0058     Stubsss input_;
0059     // lost stubs organised in dtc output channel [0..1]
0060     Stubss lost_;
0061   };
0062 
0063 }  // namespace trackerDTC
0064 
0065 #endif