CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
CaloSetup.cc
Go to the documentation of this file.
3 
6 
8 
9 #include "CaloCollections.h"
10 #include "CaloTokens.h"
11 
12 namespace l1t {
13  namespace stage1 {
14  class CaloSetup : public PackingSetup {
15  public:
16  virtual std::unique_ptr<PackerTokens> registerConsumes(const edm::ParameterSet& cfg, edm::ConsumesCollector& cc) override {
17  return std::unique_ptr<PackerTokens>(new CaloTokens(cfg, cc));
18  };
19 
20  virtual void fillDescription(edm::ParameterSetDescription& desc) override {
21  desc.addOptional<edm::InputTag>("TauInputLabel")->setComment("for stage1");
22  desc.addOptional<edm::InputTag>("IsoTauInputLabel")->setComment("for stage1");
23  desc.addOptional<edm::InputTag>("HFBitCountsInputLabel")->setComment("for stage1");
24  desc.addOptional<edm::InputTag>("HFRingSumsInputLabel")->setComment("for stage1");
25  desc.addOptional<edm::InputTag>("RegionInputLabel")->setComment("for stage1");
26  desc.addOptional<edm::InputTag>("EmCandInputLabel")->setComment("for stage1");
27  };
28 
29  virtual PackerMap getPackers(int fed, unsigned int fw) override {
30  PackerMap res;
31 
32  res[{1, 0x2300}] = {
33  PackerFactory::get()->make("stage1::IsoEGammaPacker"),
34  PackerFactory::get()->make("stage1::NonIsoEGammaPacker"),
35  PackerFactory::get()->make("stage1::CentralJetPacker"),
36  PackerFactory::get()->make("stage1::ForwardJetPacker"),
37  PackerFactory::get()->make("stage1::TauPacker"),
38  PackerFactory::get()->make("stage1::IsoTauPacker"),
39  PackerFactory::get()->make("stage1::EtSumPacker"),
40  PackerFactory::get()->make("stage1::MissEtPacker"),
41  PackerFactory::get()->make("stage1::CaloSpareHFPacker"),
42  PackerFactory::get()->make("stage1::MissHtPacker"),
43  PackerFactory::get()->make("stage1::RCTEmRegionPacker"),
44  };
45 
46  return res;
47  };
48 
50  prod.produces<L1CaloEmCollection>();
51  prod.produces<CaloSpareBxCollection>("HFBitCounts");
52  prod.produces<CaloSpareBxCollection>("HFRingSums");
53  prod.produces<L1CaloRegionCollection>();
54  prod.produces<CaloTowerBxCollection>();
55  prod.produces<EGammaBxCollection>();
56  prod.produces<EtSumBxCollection>();
57  prod.produces<JetBxCollection>();
58  prod.produces<TauBxCollection>("rlxTaus");
59  prod.produces<TauBxCollection>("isoTaus");
60  };
61 
62  virtual std::unique_ptr<UnpackerCollections> getCollections(edm::Event& e) override {
63  return std::unique_ptr<UnpackerCollections>(new CaloCollections(e));
64  };
65 
66  virtual UnpackerMap getUnpackers(int fed, int board, int amc, unsigned int fw) override {
67  UnpackerMap res;
68 
69  // FIXME Hard-coded firmware version for first 74x MC campaigns.
70  // Will account for differences in the AMC payload, MP7 payload,
71  // and unpacker setup.
72  if ((fw >> 24) == 0xff) {
73  auto cjet_unp = UnpackerFactory::get()->make("stage1::legacy::CentralJetUnpacker");
74  auto fjet_unp = UnpackerFactory::get()->make("stage1::legacy::ForwardJetUnpacker");
75 
76  if (fed == 1352) {
77  if (board == 0x200D) {
78  auto iegamma_unp = UnpackerFactory::get()->make("stage1::legacy::IsoEGammaUnpacker");
79  auto niegamma_unp = UnpackerFactory::get()->make("stage1::legacy::NonIsoEGammaUnpacker");
80  auto tau_unp = UnpackerFactory::get()->make("stage1::legacy::TauUnpacker");
81  auto isotau_unp = UnpackerFactory::get()->make("stage1::legacy::IsoTauUnpacker");
82  auto etsum_unp = UnpackerFactory::get()->make("stage1::legacy::EtSumUnpacker");
83  auto ring_unp = UnpackerFactory::get()->make("stage1::legacy::HFRingUnpacker");
84 
85  res[1] = iegamma_unp;
86  res[2] = niegamma_unp;
87  res[3] = cjet_unp;
88  res[4] = fjet_unp;
89  res[5] = tau_unp;
90  res[6] = etsum_unp;
91  res[7] = ring_unp;
92  res[8] = isotau_unp;
93  }
94  }
95  } else {
96  auto cjet_unp_Left = UnpackerFactory::get()->make("stage1::CentralJetUnpackerLeft");
97  auto fjet_unp_Left = UnpackerFactory::get()->make("stage1::ForwardJetUnpackerLeft");
98  auto iegamma_unp_Left = UnpackerFactory::get()->make("stage1::IsoEGammaUnpackerLeft");
99  auto niegamma_unp_Left = UnpackerFactory::get()->make("stage1::NonIsoEGammaUnpackerLeft");
100  auto tau_unp_Left = UnpackerFactory::get()->make("stage1::TauUnpackerLeft");
101  auto isotau_unp_Left = UnpackerFactory::get()->make("stage1::IsoTauUnpackerLeft");
102  auto cjet_unp_Right = UnpackerFactory::get()->make("stage1::CentralJetUnpackerRight");
103  auto fjet_unp_Right = UnpackerFactory::get()->make("stage1::ForwardJetUnpackerRight");
104  auto iegamma_unp_Right = UnpackerFactory::get()->make("stage1::IsoEGammaUnpackerRight");
105  auto niegamma_unp_Right = UnpackerFactory::get()->make("stage1::NonIsoEGammaUnpackerRight");
106  auto tau_unp_Right = UnpackerFactory::get()->make("stage1::TauUnpackerRight");
107  auto isotau_unp_Right = UnpackerFactory::get()->make("stage1::IsoTauUnpackerRight");
108  auto etsum_unp = UnpackerFactory::get()->make("stage1::EtSumUnpacker");
109  auto missetsum_unp = UnpackerFactory::get()->make("stage1::MissEtUnpacker");
110  auto calospare_unp = UnpackerFactory::get()->make("stage1::CaloSpareHFUnpacker");
111  auto misshtsum_unp = UnpackerFactory::get()->make("stage1::MissHtUnpacker");
112 
113  if (fed == 1352) {
114  auto rct_unp = UnpackerFactory::get()->make("stage1::RCTEmRegionUnpacker");
115 
116  // 4109 == 0x100D
117  if(board == 0x2300){
118  res[77] = cjet_unp_Left;
119  res[79] = cjet_unp_Right;
120  res[81] = fjet_unp_Left;
121  res[83] = fjet_unp_Right;
122  res[85] = iegamma_unp_Left;
123  res[87] = iegamma_unp_Right;
124  res[89] = niegamma_unp_Left;
125  res[91] = niegamma_unp_Right;
126  res[93] = etsum_unp;
127  res[95] = missetsum_unp;
128  res[97] = calospare_unp;
129  res[99] = misshtsum_unp;
130  res[101] = tau_unp_Left;
131  res[103] = tau_unp_Right;
132  res[105] = isotau_unp_Left;
133  res[107] = isotau_unp_Right;
134 
135  for (int m=0;m<36;m++) {
136  res[m*2] = rct_unp;
137  }
138  }
139  }
140  }
141  return res;
142  };
143  };
144  }
145 }
146 
std::vector< L1CaloEmCand > L1CaloEmCollection
virtual void registerProducts(edm::stream::EDProducerBase &prod) override
Definition: CaloSetup.cc:49
ParameterDescriptionBase * addOptional(U const &iLabel, T const &value)
tuple cfg
Definition: looper.py:293
std::shared_ptr< Packer > make(const std::string &) const
Definition: Packer.cc:12
virtual std::unique_ptr< PackerTokens > registerConsumes(const edm::ParameterSet &cfg, edm::ConsumesCollector &cc) override
Definition: CaloSetup.cc:16
virtual UnpackerMap getUnpackers(int fed, int board, int amc, unsigned int fw) override
Definition: CaloSetup.cc:66
static const PackerFactory * get()
Definition: Packer.h:28
std::map< int, std::shared_ptr< Unpacker > > UnpackerMap
Definition: PackingSetup.h:27
double amc
Definition: hdecay.h:20
virtual std::unique_ptr< UnpackerCollections > getCollections(edm::Event &e) override
Definition: CaloSetup.cc:62
std::shared_ptr< Unpacker > make(const std::string &) const
Definition: Unpacker.cc:19
static const UnpackerFactory * get()
Definition: Unpacker.h:23
virtual void fillDescription(edm::ParameterSetDescription &desc) override
Definition: CaloSetup.cc:20
std::map< std::pair< int, int >, Packers > PackerMap
Definition: PackingSetup.h:25
std::vector< L1CaloRegion > L1CaloRegionCollection
#define DEFINE_L1T_PACKING_SETUP(type)
Definition: PackingSetup.h:61
virtual PackerMap getPackers(int fed, unsigned int fw) override
Definition: CaloSetup.cc:29