File indexing completed on 2025-06-20 01:53:33
0001 #ifndef L1Trigger_Phase2L1ParticleFlow_L1TCorrelatorLayer1PatternFileWriter_h
0002 #define L1Trigger_Phase2L1ParticleFlow_L1TCorrelatorLayer1PatternFileWriter_h
0003
0004 #include "FWCore/ParameterSet/interface/ParameterSet.h"
0005 #include "FWCore/ParameterSet/interface/ParameterSetDescription.h"
0006 #include "L1Trigger/DemonstratorTools/interface/BoardDataWriter.h"
0007 #include "L1Trigger/DemonstratorTools/interface/utilities.h"
0008
0009 #include "DataFormats/L1TParticleFlow/interface/layer1_emulator.h"
0010
0011 class L1TCorrelatorLayer1PatternFileWriter {
0012 public:
0013 L1TCorrelatorLayer1PatternFileWriter(const edm::ParameterSet& iConfig, const l1ct::Event& eventTemplate);
0014 ~L1TCorrelatorLayer1PatternFileWriter();
0015
0016 static edm::ParameterSetDescription getParameterSetDescription();
0017
0018 void write(const l1ct::Event& event);
0019 void flush();
0020
0021 private:
0022 enum class Partition { Barrel, HGCal, HGCalNoTk, HF };
0023
0024 Partition partition_;
0025 const unsigned int tmuxFactor_;
0026 bool writeInputs_, writeOutputs_, writeDebugs_;
0027 std::map<l1t::demo::LinkId, std::vector<size_t>> channelIdsInput_, channelIdsOutput_;
0028 std::map<std::string, l1t::demo::ChannelSpec> channelSpecsInput_, channelSpecsOutput_;
0029
0030
0031
0032 const unsigned int tfTmuxFactor_ = 18, tfLinksFactor_ = 1;
0033 const unsigned int hgcTmuxFactor_ = 18, hgcLinksFactor_ = 4;
0034 const unsigned int gctEmTmuxFactor_ = 6, gctEmLinksFactor_ = 1;
0035 const unsigned int gctHadTmuxFactor_ = 6, gctHadLinksFactor_ = 1;
0036 const unsigned int gmtTmuxFactor_ = 18, gmtLinksFactor_ = 1;
0037 const unsigned int gttTmuxFactor_ = 6, gttLinksFactor_ = 1;
0038 const unsigned int tfTimeslices_, hgcTimeslices_, gctEmTimeslices_, gctHadTimeslices_, gmtTimeslices_, gttTimeslices_;
0039 uint32_t gctLinksEcal_, gctLinksHad_;
0040 bool gctSingleLink_;
0041 uint32_t gmtNumberOfMuons_;
0042 uint32_t gttNumberOfPVs_;
0043 uint32_t tfNumberOfTracks_;
0044 uint32_t gctNumberOfEMs_;
0045 uint32_t gctNumberOfHads_;
0046 uint32_t gttLatency_;
0047
0048 std::vector<uint32_t> outputRegions_, outputLinksPuppi_;
0049 unsigned int nPuppiFramesPerRegion_;
0050 int32_t outputBoard_, outputLinkEgamma_;
0051 uint32_t nEgammaObjectsOut_;
0052
0053
0054 const uint32_t nPFInTrack_;
0055 const uint32_t nPFInEmCalo_;
0056 const uint32_t nPFInHadCalo_;
0057 const uint32_t nPFInMuon_;
0058 const uint32_t nPFOutCharged_;
0059 const uint32_t nPFOutPhoton_;
0060 const uint32_t nPFOutNeutral_;
0061 const uint32_t nPFOutMuon_;
0062
0063
0064 uint32_t nInputFramesPerBX_, nOutputFramesPerBX_;
0065 const std::string fileFormat_;
0066
0067
0068 const uint32_t eventsPerFile_;
0069 uint32_t eventIndex_;
0070 std::unique_ptr<l1t::demo::BoardDataWriter> inputFileWriter_, outputFileWriter_, debugFileWriter_;
0071
0072 static Partition parsePartition(const std::string& partition);
0073
0074 static std::unique_ptr<edm::ParameterDescriptionNode> describeTF();
0075 static std::unique_ptr<edm::ParameterDescriptionNode> describeGCTEm();
0076 static std::unique_ptr<edm::ParameterDescriptionNode> describeGCTHad();
0077 static std::unique_ptr<edm::ParameterDescriptionNode> describeHGC();
0078 static std::unique_ptr<edm::ParameterDescriptionNode> describeGMT();
0079 static std::unique_ptr<edm::ParameterDescriptionNode> describeGTT();
0080 static std::unique_ptr<edm::ParameterDescriptionNode> describePuppi();
0081 static std::unique_ptr<edm::ParameterDescriptionNode> describeEG();
0082
0083 void configTimeSlices(const edm::ParameterSet& iConfig,
0084 const std::string& prefix,
0085 unsigned int nSectors,
0086 unsigned int nTimeSlices,
0087 unsigned int linksFactor);
0088 static std::unique_ptr<edm::ParameterDescriptionNode> describeTimeSlices(const std::string& prefix);
0089 void configSectors(const edm::ParameterSet& iConfig,
0090 const std::string& prefix,
0091 unsigned int nSectors,
0092 unsigned int linksFactor);
0093 static std::unique_ptr<edm::ParameterDescriptionNode> describeSectors(const std::string& prefix);
0094 void configLinks(const edm::ParameterSet& iConfig,
0095 const std::string& prefix,
0096 unsigned int linksFactor,
0097 unsigned int offset);
0098 static std::unique_ptr<edm::ParameterDescriptionNode> describeLinks(const std::string& prefix);
0099
0100 void writeTF(const l1ct::Event& event, l1t::demo::EventData& out);
0101 void writeGCTEm(const l1ct::Event& event, l1t::demo::EventData& out);
0102 void writeGCTHad(const l1ct::Event& event, l1t::demo::EventData& out);
0103 void writeHGC(const l1ct::Event& event, l1t::demo::EventData& out);
0104 void writeGMT(const l1ct::Event& event, l1t::demo::EventData& out);
0105 void writeGTT(const l1ct::Event& event, l1t::demo::EventData& out);
0106 void writePuppi(const l1ct::Event& event, l1t::demo::EventData& out);
0107 void writeEgamma(const l1ct::OutputBoard& egboard, std::vector<ap_uint<64>>& out);
0108 void writeEgamma(const l1ct::Event& event, l1t::demo::EventData& out);
0109 void writeDebugs(const l1ct::Event& event, l1t::demo::EventData& out);
0110 };
0111
0112 #endif