CMS 3D CMS Logo

CSCDigiToRawModule.cc
Go to the documentation of this file.
1 
15 
21 
23 
31 
32 namespace edm {
34 }
35 
36 class CSCDigiToRaw;
37 
39 public:
42 
43  // Operations
44  void produce(edm::StreamID, edm::Event&, const edm::EventSetup&) const override;
45 
46  // Fill parameters descriptions
47  static void fillDescriptions(edm::ConfigurationDescriptions& descriptions);
48 
49 private:
50  unsigned int theFormatVersion; // Select which version of data format to use Pre-LS1: 2005, Post-LS1: 2013
51  bool usePreTriggers; // Select if to use Pre-Triigers CLCT digis
52  bool packEverything_; // bypass all cuts and (pre)trigger requirements
53 
54  std::unique_ptr<const CSCDigiToRaw> packer_;
55 
63 
65 };
66 
68  //theStrip = pset.getUntrackedParameter<string>("DigiCreator", "cscunpacker");
69 
70  theFormatVersion = pset.getParameter<unsigned int>("useFormatVersion"); // pre-LS1 - '2005'. post-LS1 - '2013'
71  usePreTriggers = pset.getParameter<bool>("usePreTriggers"); // disable checking CLCT PreTriggers digis
72  packEverything_ = pset.getParameter<bool>("packEverything"); // don't check for consistency with trig primitives
73  // overrides usePreTriggers
74 
75  wd_token = consumes<CSCWireDigiCollection>(pset.getParameter<edm::InputTag>("wireDigiTag"));
76  sd_token = consumes<CSCStripDigiCollection>(pset.getParameter<edm::InputTag>("stripDigiTag"));
77  cd_token = consumes<CSCComparatorDigiCollection>(pset.getParameter<edm::InputTag>("comparatorDigiTag"));
78  if (usePreTriggers) {
79  pr_token = consumes<CSCCLCTPreTriggerCollection>(pset.getParameter<edm::InputTag>("preTriggerTag"));
80  }
81  al_token = consumes<CSCALCTDigiCollection>(pset.getParameter<edm::InputTag>("alctDigiTag"));
82  cl_token = consumes<CSCCLCTDigiCollection>(pset.getParameter<edm::InputTag>("clctDigiTag"));
83  co_token = consumes<CSCCorrelatedLCTDigiCollection>(pset.getParameter<edm::InputTag>("correlatedLCTDigiTag"));
84 
85  put_token_ = produces<FEDRawDataCollection>("CSCRawData");
86 }
87 
89  /*** From python/cscPacker_cfi.py
90  wireDigiTag = cms.InputTag("simMuonCSCDigis","MuonCSCWireDigi"),
91  stripDigiTag = cms.InputTag("simMuonCSCDigis","MuonCSCStripDigi"),
92  comparatorDigiTag = cms.InputTag("simMuonCSCDigis","MuonCSCComparatorDigi"),
93  alctDigiTag = cms.InputTag("simCscTriggerPrimitiveDigis"),
94  clctDigiTag = cms.InputTag("simCscTriggerPrimitiveDigis"),
95  preTriggerTag = cms.InputTag("simCscTriggerPrimitiveDigis"),
96  correlatedLCTDigiTag = cms.InputTag("simCscTriggerPrimitiveDigis", "MPCSORTED"),
97  # if min parameter = -999 always accept
98  alctWindowMin = cms.int32(-3),
99  alctWindowMax = cms.int32(3),
100  clctWindowMin = cms.int32(-3),
101  clctWindowMax = cms.int32(3),
102  preTriggerWindowMin = cms.int32(-3),
103  preTriggerWindowMax = cms.int32(1)
104 */
105 
107 
108  desc.add<unsigned int>("useFormatVersion", 2005)
109  ->setComment("Set to 2005 for pre-LS1 CSC data format, 2013 - new post-LS1 CSC data format");
110  desc.add<bool>("usePreTriggers", true)->setComment("Set to false if CSCCLCTPreTrigger digis are not available");
111  desc.add<bool>("packEverything", false)
112  ->setComment("Set to true to disable trigger-related constraints on readout data");
113 
114  desc.add<edm::InputTag>("wireDigiTag", edm::InputTag("simMuonCSCDigis", "MuonCSCWireDigi"));
115  desc.add<edm::InputTag>("stripDigiTag", edm::InputTag("simMuonCSCDigis", "MuonCSCStripDigi"));
116  desc.add<edm::InputTag>("comparatorDigiTag", edm::InputTag("simMuonCSCDigis", "MuonCSCComparatorDigi"));
117  desc.add<edm::InputTag>("alctDigiTag", edm::InputTag("simCscTriggerPrimitiveDigis"));
118  desc.add<edm::InputTag>("clctDigiTag", edm::InputTag("simCscTriggerPrimitiveDigis"));
119  desc.add<edm::InputTag>("preTriggerTag", edm::InputTag("simCscTriggerPrimitiveDigis"));
120  desc.add<edm::InputTag>("correlatedLCTDigiTag", edm::InputTag("simCscTriggerPrimitiveDigis", "MPCSORTED"));
121 
122  desc.add<int32_t>("alctWindowMin", -3)->setComment("If min parameter = -999 always accept");
123  desc.add<int32_t>("alctWindowMax", 3);
124  desc.add<int32_t>("clctWindowMin", -3)->setComment("If min parameter = -999 always accept");
125  desc.add<int32_t>("clctWindowMax", 3);
126  desc.add<int32_t>("preTriggerWindowMin", -3)->setComment("If min parameter = -999 always accept");
127  desc.add<int32_t>("preTriggerWindowMax", 1);
128 
129  descriptions.add("cscPacker", desc);
130 }
131 
135  c.get<CSCChamberMapRcd>().get(hcham);
136  const CSCChamberMap* theMapping = hcham.product();
137 
138  FEDRawDataCollection fed_buffers;
139 
140  // Take digis from the event
148 
149  e.getByToken(wd_token, wireDigis);
150  e.getByToken(sd_token, stripDigis);
151  e.getByToken(cd_token, comparatorDigis);
152  e.getByToken(al_token, alctDigis);
153  e.getByToken(cl_token, clctDigis);
154  if (usePreTriggers)
155  e.getByToken(pr_token, preTriggers);
156  e.getByToken(co_token, correlatedLCTDigis);
157 
158  // Create the packed data
159  packer_->createFedBuffers(*stripDigis,
160  *wireDigis,
161  *comparatorDigis,
162  *alctDigis,
163  *clctDigis,
164  *preTriggers,
165  *correlatedLCTDigis,
166  fed_buffers,
167  theMapping,
168  e,
172 
173  // put the raw data to the event
174  e.emplace(put_token_, std::move(fed_buffers));
175 }
176 
T getParameter(std::string const &) const
edm::EDGetTokenT< CSCCLCTPreTriggerCollection > pr_token
bool getByToken(EDGetToken token, Handle< PROD > &result) const
Definition: Event.h:525
edm::EDPutTokenT< FEDRawDataCollection > put_token_
edm::EDGetTokenT< CSCCorrelatedLCTDigiCollection > co_token
edm::EDGetTokenT< CSCComparatorDigiCollection > cd_token
edm::EDGetTokenT< CSCWireDigiCollection > wd_token
static void fillDescriptions(edm::ConfigurationDescriptions &descriptions)
void produce(edm::StreamID, edm::Event &, const edm::EventSetup &) const override
unsigned int theFormatVersion
#define DEFINE_FWK_MODULE(type)
Definition: MakerMacros.h:16
edm::EDGetTokenT< CSCCLCTDigiCollection > cl_token
ParameterDescriptionBase * add(U const &iLabel, T const &value)
static void fillDescriptions(edm::ConfigurationDescriptions &descriptions)
OrphanHandle< PROD > emplace(EDPutTokenT< PROD > token, Args &&...args)
puts a new product
Definition: Event.h:421
edm::EDGetTokenT< CSCALCTDigiCollection > al_token
CSCDigiToRawModule(const edm::ParameterSet &pset)
Constructor.
std::unique_ptr< const CSCDigiToRaw > packer_
void add(std::string const &label, ParameterSetDescription const &psetDescription)
HLT enums.
T get() const
Definition: EventSetup.h:73
edm::EDGetTokenT< CSCStripDigiCollection > sd_token
T const * product() const
Definition: ESHandle.h:86
def move(src, dest)
Definition: eostools.py:511