Back to home page

Project CMSSW displayed by LXR

 
 

    


File indexing completed on 2024-04-06 12:21:27

0001 #ifndef tdr_regionizer_ref_h
0002 #define tdr_regionizer_ref_h
0003 
0004 #include "L1Trigger/Phase2L1ParticleFlow/interface/regionizer/regionizer_base_ref.h"
0005 #include "L1Trigger/Phase2L1ParticleFlow/interface/regionizer/tdr_regionizer_elements_ref.h"
0006 
0007 namespace edm {
0008   class ParameterSet;
0009   class ParameterSetDescription;
0010 }  // namespace edm
0011 
0012 namespace l1ct {
0013   class TDRRegionizerEmulator : public RegionizerEmulator {
0014   public:
0015     TDRRegionizerEmulator(uint32_t ntk,
0016                           uint32_t ncalo,
0017                           uint32_t nem,
0018                           uint32_t nmu,
0019                           uint32_t nclocks,
0020                           std::vector<int32_t> bigRegionEdges,
0021                           bool dosort);
0022 
0023     // note: this one will work only in CMSSW
0024     TDRRegionizerEmulator(const edm::ParameterSet& iConfig);
0025 
0026     ~TDRRegionizerEmulator() override;
0027 
0028     static edm::ParameterSetDescription getParameterSetDescription();
0029 
0030     void initSectorsAndRegions(const RegionizerDecodedInputs& in, const std::vector<PFInputRegion>& out) override;
0031 
0032     void run(const RegionizerDecodedInputs& in, std::vector<PFInputRegion>& out) override;
0033 
0034   private:
0035     /// The nubmer of barrel big regions (boards)
0036     uint32_t nBigRegions_;
0037     /// The maximum number of objects of each type to output per small region
0038     uint32_t ntk_, ncalo_, nem_, nmu_;
0039     /// The number of clocks to receive all data of an event (TMUX18 = 162)
0040     uint32_t nclocks_;
0041 
0042     /// The phi edges of the big regions (boards); one greater than the number of boards
0043     std::vector<int32_t> bigRegionEdges_;
0044 
0045     bool dosort_;
0046 
0047     /// The number of eta and phi small regions in a big region (board)
0048     uint32_t netaInBR_, nphiInBR_;
0049 
0050     bool init_;  // has initialization happened
0051 
0052     std::vector<tdr_regionizer::Regionizer<l1ct::TkObjEmu>> tkRegionizers_;
0053     std::vector<tdr_regionizer::Regionizer<l1ct::HadCaloObjEmu>> hadCaloRegionizers_;
0054     std::vector<tdr_regionizer::Regionizer<l1ct::EmCaloObjEmu>> emCaloRegionizers_;
0055     std::vector<tdr_regionizer::Regionizer<l1ct::MuObjEmu>> muRegionizers_;
0056   };
0057 
0058 }  // namespace l1ct
0059 
0060 #endif