CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
CastorDigiToRaw.cc
Go to the documentation of this file.
8 #include <iostream>
9 
12 
13 using namespace std;
14 
16  castorTag_(conf.getUntrackedParameter("CASTOR",edm::InputTag())),
17  calibTag_(conf.getUntrackedParameter("CALIB",edm::InputTag())),
18  trigTag_(conf.getUntrackedParameter("TRIG",edm::InputTag())),
19  usingctdc_(conf.getUntrackedParameter<bool>("CastorCtdc",false))
20 
21 {
22  produces<FEDRawDataCollection>();
23 }
24 
25 // Virtual destructor needed.
27 
28 // Functions that gets called by framework every event
30 {
31  CastorCollections colls;
32 
33  // Step A: Get Inputs
35  if (!castorTag_.label().empty()) {
36  e.getByLabel(castorTag_,castor);
37  colls.castorCont=castor.product();
38  }
39  // get the mapping
41  es.get<CastorDbRecord>().get( pSetup );
42  const CastorElectronicsMap* readoutMap=pSetup->getCastorMapping();
43  // Step B: Create empty output
44  std::auto_ptr<FEDRawDataCollection> raw=std::auto_ptr<FEDRawDataCollection>(new FEDRawDataCollection());
45 
46  const int ifed_first=FEDNumbering::MINCASTORFEDID; //690
47  const int ifed_last=FEDNumbering::MAXCASTORFEDID; //693
48 
49  int orbitN=e.id().event();
50  int bcnN=2000;
51 
52  // Step C: pack all requested FEDs
53  for (int ifed=ifed_first; ifed<=ifed_last; ++ifed) {
54  FEDRawData& fed = raw->FEDData(ifed);
55  try {
56  if ( usingctdc_ ) {
57  ctdcpacker_.pack(ifed,ifed-ifed_first, e.id().event(),
58  orbitN, bcnN, colls, *readoutMap, fed);
59  } else {
60  packer_.pack(ifed,ifed-ifed_first, e.id().event(),
61  orbitN, bcnN, colls, *readoutMap, fed); }
62  } catch (cms::Exception& e) {
63  edm::LogWarning("Unpacking error") << e.what();
64  } catch (...) {
65  edm::LogWarning("Unpacking exception");
66  }
67  }
68 
69  e.put(raw);
70 }
71 
72 
virtual char const * what() const
Definition: Exception.cc:141
EventNumber_t event() const
Definition: EventID.h:44
virtual ~CastorDigiToRaw()
CastorCtdcPacker ctdcpacker_
edm::InputTag castorTag_
const CastorDigiCollection * castorCont
void pack(int fedid, int dccnumber, int nl1a, int orbitn, int bcn, const CastorCollections &inputs, const CastorElectronicsMap &emap, FEDRawData &output)
OrphanHandle< PROD > put(std::auto_ptr< PROD > product)
Put a new product.
Definition: Event.h:116
bool getByLabel(InputTag const &tag, Handle< PROD > &result) const
Definition: Event.h:390
tuple conf
Definition: dbtoconf.py:185
const T & get() const
Definition: EventSetup.h:55
void pack(int fedid, int dccnumber, int nl1a, int orbitn, int bcn, const CastorCollections &inputs, const CastorElectronicsMap &emap, FEDRawData &output)
Definition: CastorPacker.cc:36
T const * product() const
Definition: Handle.h:81
CastorDigiToRaw(const edm::ParameterSet &ps)
std::string const & label() const
Definition: InputTag.h:42
edm::EventID id() const
Definition: EventBase.h:56
volatile std::atomic< bool > shutdown_flag false
virtual void produce(edm::Event &e, const edm::EventSetup &c)
CastorPacker packer_