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 
51  unsigned int theFormatVersion; // Select which version of data format to use Pre-LS1: 2005, Post-LS1: 2013
52  bool usePreTriggers; // Select if to use Pre-Triigers CLCT digis
53  bool packEverything_; // bypass all cuts and (pre)trigger requirements
54 
55  std::unique_ptr<const CSCDigiToRaw> packer_;
56 
64 
66 };
67 
68 
70  packer_( std::make_unique<CSCDigiToRaw>(pset))
71 {
72  //theStrip = pset.getUntrackedParameter<string>("DigiCreator", "cscunpacker");
73 
74  theFormatVersion = pset.getParameter<unsigned int>("useFormatVersion"); // pre-LS1 - '2005'. post-LS1 - '2013'
75  usePreTriggers = pset.getParameter<bool>("usePreTriggers"); // disable checking CLCT PreTriggers digis
76  packEverything_ = pset.getParameter<bool>("packEverything"); // don't check for consistency with trig primitives
77  // overrides usePreTriggers
78 
79  wd_token = consumes<CSCWireDigiCollection>( pset.getParameter<edm::InputTag>("wireDigiTag") );
80  sd_token = consumes<CSCStripDigiCollection>( pset.getParameter<edm::InputTag>("stripDigiTag") );
81  cd_token = consumes<CSCComparatorDigiCollection>( pset.getParameter<edm::InputTag>("comparatorDigiTag") );
82  if(usePreTriggers) {
83  pr_token = consumes<CSCCLCTPreTriggerCollection>( pset.getParameter<edm::InputTag>("preTriggerTag") );
84  }
85  al_token = consumes<CSCALCTDigiCollection>( pset.getParameter<edm::InputTag>("alctDigiTag") );
86  cl_token = consumes<CSCCLCTDigiCollection>( pset.getParameter<edm::InputTag>("clctDigiTag") );
87  co_token = consumes<CSCCorrelatedLCTDigiCollection>( pset.getParameter<edm::InputTag>("correlatedLCTDigiTag") );
88 
89  put_token_ = produces<FEDRawDataCollection>("CSCRawData");
90 
91 }
92 
93 
95 /*** From python/cscPacker_cfi.py
96  wireDigiTag = cms.InputTag("simMuonCSCDigis","MuonCSCWireDigi"),
97  stripDigiTag = cms.InputTag("simMuonCSCDigis","MuonCSCStripDigi"),
98  comparatorDigiTag = cms.InputTag("simMuonCSCDigis","MuonCSCComparatorDigi"),
99  alctDigiTag = cms.InputTag("simCscTriggerPrimitiveDigis"),
100  clctDigiTag = cms.InputTag("simCscTriggerPrimitiveDigis"),
101  preTriggerTag = cms.InputTag("simCscTriggerPrimitiveDigis"),
102  correlatedLCTDigiTag = cms.InputTag("simCscTriggerPrimitiveDigis", "MPCSORTED"),
103  # if min parameter = -999 always accept
104  alctWindowMin = cms.int32(-3),
105  alctWindowMax = cms.int32(3),
106  clctWindowMin = cms.int32(-3),
107  clctWindowMax = cms.int32(3),
108  preTriggerWindowMin = cms.int32(-3),
109  preTriggerWindowMax = cms.int32(1)
110 */
111 
113 
114  desc.add<unsigned int>("useFormatVersion",2005)->
115  setComment("Set to 2005 for pre-LS1 CSC data format, 2013 - new post-LS1 CSC data format");
116  desc.add<bool>("usePreTriggers", true)->
117  setComment("Set to false if CSCCLCTPreTrigger digis are not available");
118  desc.add<bool>("packEverything", false)->
119  setComment("Set to true to disable trigger-related constraints on readout data");
120 
121  desc.add<edm::InputTag>("wireDigiTag", edm::InputTag("simMuonCSCDigis","MuonCSCWireDigi"));
122  desc.add<edm::InputTag>("stripDigiTag",edm::InputTag("simMuonCSCDigis","MuonCSCStripDigi"));
123  desc.add<edm::InputTag>("comparatorDigiTag", edm::InputTag("simMuonCSCDigis","MuonCSCComparatorDigi"));
124  desc.add<edm::InputTag>("alctDigiTag",edm::InputTag("simCscTriggerPrimitiveDigis"));
125  desc.add<edm::InputTag>("clctDigiTag",edm::InputTag("simCscTriggerPrimitiveDigis"));
126  desc.add<edm::InputTag>("preTriggerTag", edm::InputTag("simCscTriggerPrimitiveDigis"));
127  desc.add<edm::InputTag>("correlatedLCTDigiTag",edm::InputTag("simCscTriggerPrimitiveDigis", "MPCSORTED"));
128 
129  desc.add<int32_t>("alctWindowMin", -3)->
130  setComment("If min parameter = -999 always accept");
131  desc.add<int32_t>("alctWindowMax", 3);
132  desc.add<int32_t>("clctWindowMin", -3)->
133  setComment("If min parameter = -999 always accept");
134  desc.add<int32_t>("clctWindowMax", 3);
135  desc.add<int32_t>("preTriggerWindowMin", -3)->
136  setComment("If min parameter = -999 always accept");
137  desc.add<int32_t>("preTriggerWindowMax", 1);
138 
139  descriptions.add("cscPacker", desc);
140 }
141 
142 
146  c.get<CSCChamberMapRcd>().get(hcham);
147  const CSCChamberMap* theMapping = hcham.product();
148 
149  FEDRawDataCollection fed_buffers;
150 
151  // Take digis from the event
159 
160  e.getByToken( wd_token, wireDigis );
161  e.getByToken( sd_token, stripDigis );
162  e.getByToken( cd_token, comparatorDigis );
163  e.getByToken( al_token, alctDigis );
164  e.getByToken( cl_token, clctDigis );
165  if (usePreTriggers)
166  e.getByToken( pr_token, preTriggers );
167  e.getByToken( co_token, correlatedLCTDigis );
168 
169  // Create the packed data
170  packer_->createFedBuffers(*stripDigis, *wireDigis, *comparatorDigis,
171  *alctDigis, *clctDigis, *preTriggers, *correlatedLCTDigis,
172  fed_buffers, theMapping, e, theFormatVersion, usePreTriggers,
174 
175  // put the raw data to the event
176  e.emplace(put_token_, std::move(fed_buffers));
177 }
178 
179 
T getParameter(std::string const &) const
edm::EDGetTokenT< CSCCLCTPreTriggerCollection > pr_token
bool getByToken(EDGetToken token, Handle< PROD > &result) const
Definition: Event.h:579
#define DEFINE_FWK_MODULE(type)
Definition: MakerMacros.h:17
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
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:453
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:62
edm::EDGetTokenT< CSCStripDigiCollection > sd_token
T const * product() const
Definition: ESHandle.h:86
def move(src, dest)
Definition: eostools.py:511