Back to home page

Project CMSSW displayed by LXR

 
 

    


File indexing completed on 2024-04-06 12:04:37

0001 #ifndef DataFormats_L1TrackTrigger_TTDTC_h
0002 #define DataFormats_L1TrackTrigger_TTDTC_h
0003 
0004 #include "DataFormats/L1TrackTrigger/interface/TTTypes.h"
0005 #include "DataFormats/L1TrackTrigger/interface/TTBV.h"
0006 
0007 #include <bitset>
0008 #include <utility>
0009 #include <vector>
0010 
0011 /*! 
0012  * \class  TTDTC
0013  * \brief  Class to store hardware like structured TTStub Collection used by Track Trigger emulators
0014  * \author Thomas Schuh
0015  * \date   2020, Jan
0016  */
0017 class TTDTC {
0018 public:
0019   TTDTC() {}
0020   TTDTC(int numRegions, int numOverlappingRegions, int numDTCsPerRegion);
0021   ~TTDTC() {}
0022 
0023   // all regions [default 0..8]
0024   const std::vector<int>& tfpRegions() const { return regions_; }
0025   // all TFP channel [default 0..47]
0026   const std::vector<int>& tfpChannels() const { return channels_; }
0027   // write one specific stream of TTStubRefs using DTC identifier (region[0-8], board[0-23], channel[0-1])
0028   // dtcRegions aka detector regions are defined by tk layout
0029   void setStream(int dtcRegion, int dtcBoard, int dtcChannel, const tt::StreamStub& stream);
0030   // read one specific stream of TTStubRefs using TFP identifier (region[0-8], channel[0-47])
0031   // tfpRegions aka processing regions are rotated by -0.5 region width w.r.t detector regions
0032   const tt::StreamStub& stream(int tfpRegion, int tfpChannel) const;
0033   // total number of frames
0034   int size() const;
0035   // total number of stubs
0036   int nStubs() const;
0037   // total number of gaps
0038   int nGaps() const;
0039 
0040 private:
0041   // converts DTC identifier (region[0-8], board[0-23], channel[0-1]) into allStreams_ index [0-431]
0042   int index(int dtcRegion, int dtcBoard, int dtcChannel) const;
0043   // converts TFP identifier (region[0-8], channel[0-47]) into allStreams_ index [0-431]
0044   int index(int tfpRegion, int tfpChannel) const;
0045   // number of phi slices the outer tracker readout is organized in [default 9]
0046   int numRegions_;
0047   // number of regions a reconstructable particle may cross [default 2]
0048   int numOverlappingRegions_;
0049   // number of DTC boards used to readout a detector region [default 24]
0050   int numDTCsPerRegion_;
0051   // number of DTC boards connected to one TFP [default 48]
0052   int numDTCsPerTFP_;
0053   // all regions [default 0..8]
0054   std::vector<int> regions_;
0055   // all TFP channel [default 0..47]
0056   std::vector<int> channels_;
0057   // collection of all optical links between DTC and TFP [default 432 links]
0058   tt::StreamsStub streams_;
0059 };
0060 
0061 #endif