CMS 3D CMS Logo

L1RCTSaveInput.cc
Go to the documentation of this file.
1 #include <fstream>
2 #include <iostream>
3 #include <memory>
4 #include <string>
5 using std::cerr;
6 using std::cout;
7 using std::endl;
8 using std::ostream;
9 
10 #include <iomanip>
11 
17 
19 
23 
26 
28  : fileName(conf.getUntrackedParameter<std::string>("rctTestInputFile")),
29  rctLookupTables(new L1RCTLookupTables),
30  rct(new L1RCT(rctLookupTables)),
31  useEcal(conf.getParameter<bool>("useEcal")),
32  useHcal(conf.getParameter<bool>("useHcal")),
33  ecalDigisLabel(conf.getParameter<edm::InputTag>("ecalDigisLabel")),
34  hcalDigisLabel(conf.getParameter<edm::InputTag>("hcalDigisLabel")),
35  rctParametersToken_(esConsumes<L1RCTParameters, L1RCTParametersRcd>()),
36  channelMaskToken_(esConsumes<L1RCTChannelMask, L1RCTChannelMaskRcd>()),
37  emScaleToken_(esConsumes<L1CaloEtScale, L1EmEtScaleRcd>()),
38  transcoderToken_(esConsumes<CaloTPGTranscoder, CaloTPGRecord>()),
39  hcalScaleToken_(esConsumes<L1CaloHcalScale, L1CaloHcalScaleRcd>()),
40  ecalScaleToken_(esConsumes<L1CaloEcalScale, L1CaloEcalScaleRcd>()),
41  useDebugTpgScales(conf.getParameter<bool>("useDebugTpgScales")),
42  tokens_(consumesCollector()) {
43  ofs.open(fileName.c_str(), std::ios::app);
44  if (!ofs) {
45  std::cerr << "Could not create " << fileName << std::endl;
46  exit(1);
47  }
48 }
49 
51  if (rct != nullptr)
52  delete rct;
53  if (rctLookupTables != nullptr)
54  delete rctLookupTables;
55 }
56 
57 void L1RCTSaveInput::analyze(const edm::Event &event, const edm::EventSetup &eventSetup) {
59  const L1RCTParameters *r = rctParameters.product();
61  const L1RCTChannelMask *c = channelMask.product();
63  const L1CaloEtScale *s = emScale.product();
64 
68 
69  if (useDebugTpgScales) {
70  // use old-style scales
72  const CaloTPGTranscoder *h_tpg = transcoder.product();
73 
74  EcalTPGScale e_tpg(tokens_, eventSetup);
75 
76  L1CaloEcalScale *ecalScale = new L1CaloEcalScale();
77  L1CaloHcalScale *hcalScale = new L1CaloHcalScale();
78 
79  // create input scales, werner's code
80  // ECAL
81  std::cout << "ECAL Pos " << L1CaloEcalScale::nBinRank << std::endl;
82  for (unsigned short ieta = 1; ieta <= L1CaloEcalScale::nBinEta; ++ieta) {
83  for (unsigned short irank = 0; irank < L1CaloEcalScale::nBinRank; ++irank) {
84  std::cout << ieta << " " << irank;
85  EcalSubdetector subdet = (ieta <= 17) ? EcalBarrel : EcalEndcap;
86  double etGeVPos = e_tpg.getTPGInGeV(irank,
87  EcalTrigTowerDetId(1, // +ve eta
88  subdet,
89  ieta,
90  1)); // dummy phi value
91  ecalScale->setBin(irank, ieta, 1, etGeVPos);
92  std::cout << etGeVPos << ", ";
93  }
94  std::cout << std::endl;
95  }
96  std::cout << std::endl;
97 
98  std::cout << "ECAL Neg" << std::endl;
99  for (unsigned short ieta = 1; ieta <= L1CaloEcalScale::nBinEta; ++ieta) {
100  for (unsigned short irank = 0; irank < L1CaloEcalScale::nBinRank; ++irank) {
101  EcalSubdetector subdet = (ieta <= 17) ? EcalBarrel : EcalEndcap;
102 
103  std::cout << ieta << " " << irank;
104  double etGeVNeg = e_tpg.getTPGInGeV(irank,
105  EcalTrigTowerDetId(-1, // -ve eta
106  subdet,
107  ieta,
108  2)); // dummy phi value
109  ecalScale->setBin(irank, ieta, -1, etGeVNeg);
110  std::cout << etGeVNeg << ", ";
111  }
112  std::cout << std::endl;
113  }
114  std::cout << std::endl;
115 
116  // HCAL
117  std::cout << "HCAL" << std::endl;
118  for (unsigned short ieta = 1; ieta <= L1CaloHcalScale::nBinEta; ++ieta) {
119  for (unsigned short irank = 0; irank < L1CaloHcalScale::nBinRank; ++irank) {
120  double etGeV = h_tpg->hcaletValue(ieta, irank);
121 
122  hcalScale->setBin(irank, ieta, 1, etGeV);
123  hcalScale->setBin(irank, ieta, -1, etGeV);
124  std::cout << etGeV << ", ";
125  std::cout << std::endl;
126  }
127  std::cout << std::endl;
128  }
129 
130  // set the input scales
131  rctLookupTables->setEcalScale(ecalScale);
132  rctLookupTables->setHcalScale(hcalScale);
133 
134  } else {
136  const L1CaloHcalScale *h = hcalScale.product();
138  const L1CaloEcalScale *e = ecalScale.product();
139 
142  }
143 
146  event.getByLabel(ecalDigisLabel, ecal);
147  event.getByLabel(hcalDigisLabel, hcal);
150  if (ecal.isValid()) {
151  ecalColl = *ecal;
152  }
153  if (hcal.isValid()) {
154  hcalColl = *hcal;
155  }
156  rct->digiInput(ecalColl, hcalColl);
157  static int nEvents = 0;
158  if (nEvents == 0) {
159  ofs << "Crate = 0-17" << std::endl
160  << "Card = 0-7 within the crate" << std::endl
161  << "Tower = 0-31 covers 4 x 8 covered by the card" << std::endl
162  << "EMAddr(0:8) = EMFGBit(0:0)+CompressedEMET(1:8)" << std::endl
163  << "HDAddr(0:8) = HDFGBit(0:0)+CompressedHDET(1:8) - note: "
164  "HDFGBit(0:0) is not part of the hardware LUT address"
165  << std::endl
166  << "LutOut(0:17)= "
167  "LinearEMET(0:6)+HoEFGVetoBit(7:7)+LinearJetET(8:16)+ActivityBit(17:"
168  "17)"
169  << std::endl
170  << "Event"
171  << "\t"
172  << "Crate"
173  << "\t"
174  << "Card"
175  << "\t"
176  << "Tower"
177  << "\t"
178  << "EMAddr"
179  << "\t"
180  << "HDAddr"
181  << "\t"
182  << "LUTOut" << std::endl;
183  }
184  if (nEvents < 64) {
185  for (unsigned short iCrate = 0; iCrate < 18; iCrate++) {
186  for (unsigned short iCard = 0; iCard < 7; iCard++) {
187  // tower numbered from 0-31
188  for (unsigned short iTower = 0; iTower < 32; iTower++) {
189  unsigned short ecal = rct->ecalCompressedET(iCrate, iCard, iTower);
190  unsigned short hcal = rct->hcalCompressedET(iCrate, iCard, iTower);
191  unsigned short fgbit = rct->ecalFineGrainBit(iCrate, iCard, iTower);
192  unsigned short mubit = rct->hcalFineGrainBit(iCrate, iCard, iTower);
193  unsigned long lutOutput = rctLookupTables->lookup(ecal, hcal, fgbit, iCrate, iCard, iTower);
194  ofs << std::hex << nEvents << "\t" << iCrate << "\t" << iCard << "\t" << iTower << "\t" << ecal * 2 + fgbit
195  << "\t" << hcal * 2 + mubit << "\t" << lutOutput << std::dec << std::endl;
196  }
197  }
198  }
199  }
200  nEvents++;
201 }
edm::ESHandle::product
T const * product() const
Definition: ESHandle.h:86
l1RctEmulDigis_ECALGREN1_cff.ecalDigisLabel
ecalDigisLabel
Definition: l1RctEmulDigis_ECALGREN1_cff.py:8
CaloTPGTranscoder
Definition: CaloTPGTranscoder.h:24
electrons_cff.bool
bool
Definition: electrons_cff.py:393
EcalTPGScale
Definition: EcalTPGScale.h:16
L1CaloHcalScale
Definition: L1CaloHcalScale.h:28
L1CaloEcalScale
Definition: L1CaloEcalScale.h:28
L1RCTSaveInput::hcalDigisLabel
edm::InputTag hcalDigisLabel
Definition: L1RCTSaveInput.h:66
L1RCTLookupTables::lookup
unsigned int lookup(unsigned short ecalInput, unsigned short hcalInput, unsigned short fgbit, unsigned short crtNo, unsigned short crdNo, unsigned short twrNo) const
Definition: L1RCTLookupTables.cc:22
hcal
Definition: ConfigurationDatabase.cc:13
L1CaloEcalScaleRcd
Definition: L1CaloEcalScaleRcd.h:12
edm
HLT enums.
Definition: AlignableModifier.h:19
gather_cfg.cout
cout
Definition: gather_cfg.py:144
L1RCTParametersRcd
Definition: L1RCTParametersRcd.h:12
HLT_FULL_cff.InputTag
InputTag
Definition: HLT_FULL_cff.py:89287
l1RctEmulDigis_ECALGREN1_cff.hcalDigisLabel
hcalDigisLabel
Definition: l1RctEmulDigis_ECALGREN1_cff.py:4
L1CaloHcalScale::nBinRank
static const unsigned short nBinRank
Definition: L1CaloHcalScale.h:31
edm::SortedCollection
Definition: SortedCollection.h:49
L1RCT::hcalFineGrainBit
unsigned short hcalFineGrainBit(int crate, int card, int tower)
Definition: L1RCT.h:68
L1RCTSaveInput::tokens_
EcalTPGScale::Tokens tokens_
Definition: L1RCTSaveInput.h:75
L1RCTChannelMask
Definition: L1RCTChannelMask.h:7
EDAnalyzer.h
EcalSubdetector
EcalSubdetector
Definition: EcalSubdetector.h:10
EcalTrigTowerDetId
Definition: EcalTrigTowerDetId.h:14
L1RCTSaveInput::ecalDigisLabel
edm::InputTag ecalDigisLabel
Definition: L1RCTSaveInput.h:65
MillePedeFileConverter_cfg.fileName
fileName
Definition: MillePedeFileConverter_cfg.py:32
L1RCTSaveInput::useDebugTpgScales
bool useDebugTpgScales
Definition: L1RCTSaveInput.h:73
L1RCTSaveInput::rctLookupTables
L1RCTLookupTables * rctLookupTables
Definition: L1RCTSaveInput.h:61
edm::Handle
Definition: AssociativeIterator.h:50
EcalBarrel
Definition: EcalSubdetector.h:10
L1CaloEcalScale::nBinRank
static const unsigned short nBinRank
Definition: L1CaloEcalScale.h:31
L1RCTSaveInput.h
L1RCT::ecalCompressedET
unsigned short ecalCompressedET(int crate, int card, int tower)
Definition: L1RCT.h:63
distMuonMETValueMapProducer_cff.useHcal
useHcal
Definition: distMuonMETValueMapProducer_cff.py:23
patCandidatesForDimuonsSequences_cff.hcal
hcal
Definition: patCandidatesForDimuonsSequences_cff.py:37
L1RCTSaveInput::ecalScaleToken_
edm::ESGetToken< L1CaloEcalScale, L1CaloEcalScaleRcd > ecalScaleToken_
Definition: L1RCTSaveInput.h:72
MakerMacros.h
alignCSCRings.s
s
Definition: alignCSCRings.py:92
L1RCT.h
L1RCTSaveInput::channelMaskToken_
edm::ESGetToken< L1RCTChannelMask, L1RCTChannelMaskRcd > channelMaskToken_
Definition: L1RCTSaveInput.h:68
L1RCTLookupTables::setHcalScale
void setHcalScale(const L1CaloHcalScale *hcalScale)
Definition: L1RCTLookupTables.h:27
L1RCTSaveInput::L1RCTSaveInput
L1RCTSaveInput(const edm::ParameterSet &)
Definition: L1RCTSaveInput.cc:27
L1RCT
Definition: L1RCT.h:20
HcalDigiCollections.h
EcalDigiCollections.h
edm::ESHandle
Definition: DTSurvey.h:22
tokens_
std::vector< edm::EDGetTokenT< int > > tokens_
Definition: TimeStudyModules.cc:75
L1RCTSaveInput::hcalScaleToken_
edm::ESGetToken< L1CaloHcalScale, L1CaloHcalScaleRcd > hcalScaleToken_
Definition: L1RCTSaveInput.h:71
h
L1RCTSaveInput::fileName
std::string fileName
Definition: L1RCTSaveInput.h:60
AlCaHLTBitMon_QueryRunRegistry.string
string
Definition: AlCaHLTBitMon_QueryRunRegistry.py:256
EcalEndcap
Definition: EcalSubdetector.h:10
L1RCT::ecalFineGrainBit
unsigned short ecalFineGrainBit(int crate, int card, int tower)
Definition: L1RCT.h:64
L1CaloHcalScale::nBinEta
static const unsigned short nBinEta
Definition: L1CaloHcalScale.h:32
L1RCTLookupTables
Definition: L1RCTLookupTables.h:11
distMuonMETValueMapProducer_cff.useEcal
useEcal
Definition: distMuonMETValueMapProducer_cff.py:22
LEDCalibrationChannels.ieta
ieta
Definition: LEDCalibrationChannels.py:63
edm::ParameterSet
Definition: ParameterSet.h:47
Event.h
L1RCTSaveInput::emScaleToken_
edm::ESGetToken< L1CaloEtScale, L1EmEtScaleRcd > emScaleToken_
Definition: L1RCTSaveInput.h:69
L1RCTSaveInput::ofs
std::ofstream ofs
Definition: L1RCTSaveInput.h:74
CaloTPGRecord
Definition: CaloTPGRecord.h:26
L1RCTChannelMaskRcd
Definition: L1RCTChannelMaskRcd.h:12
L1RCTSaveInput::analyze
void analyze(const edm::Event &, const edm::EventSetup &) override
Definition: L1RCTSaveInput.cc:57
EcalTPGScale::getTPGInGeV
double getTPGInGeV(const EcalTriggerPrimitiveDigi &tpDigi) const
Definition: EcalTPGScale.cc:17
L1CaloCollections.h
L1CaloEtScale
Definition: L1CaloEtScale.h:29
L1RCTLookupTables::setL1CaloEtScale
void setL1CaloEtScale(const L1CaloEtScale *etScale)
Definition: L1RCTLookupTables.h:29
edm::EventSetup::getHandle
ESHandle< T > getHandle(const ESGetToken< T, R > &iToken) const
Definition: EventSetup.h:148
L1RCTLookupTables.h
edm::EventSetup
Definition: EventSetup.h:57
HltBtagPostValidation_cff.c
c
Definition: HltBtagPostValidation_cff.py:31
alignCSCRings.r
r
Definition: alignCSCRings.py:93
L1CaloHcalScale::setBin
void setBin(unsigned short rank, unsigned short eta, short etaSign, double et)
set scale element; use this to create non-linear scales
Definition: L1CaloHcalScale.cc:33
std
Definition: JetResolutionObject.h:76
L1RCTSaveInput::rctParametersToken_
edm::ESGetToken< L1RCTParameters, L1RCTParametersRcd > rctParametersToken_
Definition: L1RCTSaveInput.h:67
L1RCTSaveInput::~L1RCTSaveInput
~L1RCTSaveInput() override
Definition: L1RCTSaveInput.cc:50
L1CaloEcalScale::setBin
void setBin(unsigned short rank, unsigned short eta, short etaSign, double et)
set scale element; use this to create non-linear scales
Definition: L1CaloEcalScale.cc:33
Frameworkfwd.h
L1RCTLookupTables::setEcalScale
void setEcalScale(const L1CaloEcalScale *ecalScale)
Definition: L1RCTLookupTables.h:31
L1EmEtScaleRcd
Definition: L1EmEtScaleRcd.h:30
L1RCTLookupTables::setRCTParameters
void setRCTParameters(const L1RCTParameters *rctParameters)
Definition: L1RCTLookupTables.h:21
L1RCTSaveInput::rct
L1RCT * rct
Definition: L1RCTSaveInput.h:62
L1RCTParameters
Definition: L1RCTParameters.h:27
bsc_activity_cfg.ecal
ecal
Definition: bsc_activity_cfg.py:25
CaloTPGTranscoder::hcaletValue
virtual double hcaletValue(const int &ieta, const int &iphi, const int &version, const int &compressedValue) const =0
rctLutWriter_cfi.useDebugTpgScales
useDebugTpgScales
Definition: rctLutWriter_cfi.py:4
beamvalidation.exit
def exit(msg="")
Definition: beamvalidation.py:53
ParameterSet.h
L1RCTLookupTables::setChannelMask
void setChannelMask(const L1RCTChannelMask *channelMask)
Definition: L1RCTLookupTables.h:23
event
Definition: event.py:1
L1CaloEcalScale::nBinEta
static const unsigned short nBinEta
Definition: L1CaloEcalScale.h:32
nEvents
UInt_t nEvents
Definition: hcalCalib.cc:41
edm::Event
Definition: Event.h:73
EcnaPython_AdcPeg12_S1_10_R170298_1_0_150_Dee0.cerr
cerr
Definition: EcnaPython_AdcPeg12_S1_10_R170298_1_0_150_Dee0.py:8
TauDecayModes.dec
dec
Definition: TauDecayModes.py:143
L1RCT::digiInput
void digiInput(const EcalTrigPrimDigiCollection &ecalCollection, const HcalTrigPrimDigiCollection &hcalCollection)
Definition: L1RCT.cc:109
L1RCT::hcalCompressedET
unsigned short hcalCompressedET(int crate, int card, int tower)
Definition: L1RCT.h:65
L1CaloHcalScaleRcd
Definition: L1CaloHcalScaleRcd.h:13
MillePedeFileConverter_cfg.e
e
Definition: MillePedeFileConverter_cfg.py:37
L1RCTSaveInput::transcoderToken_
edm::ESGetToken< CaloTPGTranscoder, CaloTPGRecord > transcoderToken_
Definition: L1RCTSaveInput.h:70