Back to home page

Project CMSSW displayed by LXR

 
 

    


File indexing completed on 2024-04-06 12:29:23

0001 #ifndef ECALFETODIGI_H
0002 #define ECALFETODIGI_H
0003 
0004 /* Class: EcalFEtoDigi
0005  * Description:
0006  *  produces Ecal trigger primitive digis from TCC input flat files
0007  * Original Author: Nuno Leonardo, P. Paganini, E. Perez
0008  * Created:  Thu Feb 22 11:32:53 CET 2007
0009  */
0010 
0011 #include "FWCore/Framework/interface/Event.h"
0012 #include "FWCore/Framework/interface/EventSetup.h"
0013 #include "FWCore/Framework/interface/Frameworkfwd.h"
0014 #include "FWCore/Framework/interface/MakerMacros.h"
0015 #include "FWCore/Framework/interface/one/EDProducer.h"
0016 #include "FWCore/MessageLogger/interface/MessageLogger.h"
0017 #include "FWCore/ParameterSet/interface/ParameterSet.h"
0018 #include "FWCore/Utilities/interface/Exception.h"
0019 
0020 #include "CondFormats/DataRecord/interface/EcalTPGLutGroupRcd.h"
0021 #include "CondFormats/DataRecord/interface/EcalTPGLutIdMapRcd.h"
0022 #include "CondFormats/EcalObjects/interface/EcalTPGLutGroup.h"
0023 #include "CondFormats/EcalObjects/interface/EcalTPGLutIdMap.h"
0024 #include "DataFormats/EcalDigi/interface/EcalDigiCollections.h"
0025 
0026 #include <fstream>
0027 #include <iomanip>
0028 #include <iostream>
0029 #include <memory>
0030 #include <vector>
0031 
0032 #include "SimCalorimetry/EcalElectronicsEmulation/interface/TCCinput.h"
0033 
0034 struct TCCinput;
0035 typedef std::vector<TCCinput> TCCInputData;
0036 static const int N_SM = 36;  // number of ecal barrel supermodules
0037 
0038 class EcalFEtoDigi : public edm::one::EDProducer<> {
0039 public:
0040   explicit EcalFEtoDigi(const edm::ParameterSet &);
0041   ~EcalFEtoDigi() override {}
0042 
0043 private:
0044   void beginJob() override;
0045   void produce(edm::Event &, const edm::EventSetup &) override;
0046   void endJob() override;
0047 
0048   void readInput();
0049   EcalTrigTowerDetId create_TTDetId(TCCinput);
0050   EcalTriggerPrimitiveSample create_TPSample(TCCinput, const edm::EventSetup &);
0051   EcalTriggerPrimitiveSample create_TPSampleTcp(TCCinput, const edm::EventSetup &);
0052   int SMidToTCCid(const int) const;
0053   void getLUT(unsigned int *lut, const int towerId, const edm::EventSetup &) const;
0054 
0055   const edm::ESGetToken<EcalTPGLutGroup, EcalTPGLutGroupRcd> tpgLutGroupToken_;
0056   const edm::ESGetToken<EcalTPGLutIdMap, EcalTPGLutIdMapRcd> tpgLutIdMapToken_;
0057 
0058   TCCInputData inputdata_[N_SM];
0059 
0060   const std::string basename_;
0061   const bool useIdentityLUT_;
0062   int sm_;
0063   bool singlefile;
0064 
0065   const int fileEventOffset_;
0066   const bool debug_;
0067   std::ofstream outfile;
0068 };
0069 
0070 #endif