CMS 3D CMS Logo

ESPedestalTask.cc
Go to the documentation of this file.
1 #include <memory>
2 #include <fstream>
3 #include <iostream>
4 
7 
11 
16 
18 
20 
21 using namespace cms;
22 using namespace edm;
23 using namespace std;
24 
26  digitoken_ = consumes<ESDigiCollection>(ps.getParameter<InputTag>("DigiLabel"));
27  lookup_ = ps.getUntrackedParameter<FileInPath>("LookupTable");
28  outputFile_ = ps.getUntrackedParameter<string>("OutputFile", "");
29  prefixME_ = ps.getUntrackedParameter<string>("prefixME", "EcalPreshower");
30 
31  for (int i = 0; i < 2; ++i)
32  for (int j = 0; j < 2; ++j)
33  for (int k = 0; k < 40; ++k)
34  for (int l = 0; l < 40; ++l)
35  senCount_[i][j][k][l] = -1;
36 
37  ievt_ = 0;
38 }
39 
41  int iz, ip, ix, iy, fed, kchip, pace, bundle, fiber, optorx;
42  int senZ_[4288], senP_[4288], senX_[4288], senY_[4288];
43 
44  // read in look-up table
45  ifstream file(lookup_.fullPath().c_str());
46  if (!file.is_open())
47  throw cms::Exception("FileNotFound") << lookup_.fullPath();
48 
49  file >> nLines_;
50 
51  for (int i = 0; i < nLines_; ++i) {
52  file >> iz >> ip >> ix >> iy >> fed >> kchip >> pace >> bundle >> fiber >> optorx;
53 
54  senZ_[i] = iz;
55  senP_[i] = ip;
56  senX_[i] = ix;
57  senY_[i] = iy;
58 
59  iz = (senZ_[i] == 1) ? 0 : 1;
60  senCount_[iz][senP_[i] - 1][senX_[i] - 1][senY_[i] - 1] = i;
61  }
62 
63  char hname[300];
64 
65  iBooker.setCurrentFolder(prefixME_ + "/ESPedestalTask");
66 
67  for (int i = 0; i < nLines_; ++i) {
68  for (int is = 0; is < 32; ++is) {
69  sprintf(hname, "ADC Z %d P %d X %d Y %d Str %d", senZ_[i], senP_[i], senX_[i], senY_[i], is + 1);
70  meADC_[i][is] = iBooker.book1D(hname, hname, 1000, 899.5, 1899.5);
71  }
72  }
73 }
74 
75 void ESPedestalTask::analyze(const edm::Event& e, const edm::EventSetup& iSetup) {
76  ievt_++;
77  runNum_ = e.id().run();
78 
80  e.getByToken(digitoken_, digis);
81 
82  runtype_ = 1; // Let runtype_ = 1
83 
84  // Digis
85  int zside, plane, ix, iy, strip, iz;
86  if (digis.isValid()) {
87  for (ESDigiCollection::const_iterator digiItr = digis->begin(); digiItr != digis->end(); ++digiItr) {
88  ESDataFrame dataframe = (*digiItr);
89  ESDetId id = dataframe.id();
90 
91  zside = id.zside();
92  plane = id.plane();
93  ix = id.six();
94  iy = id.siy();
95  strip = id.strip();
96  iz = (zside == 1) ? 0 : 1;
97 
98  if (meADC_[senCount_[iz][plane - 1][ix - 1][iy - 1]][strip - 1]) {
99  if (runtype_ == 1) {
100  meADC_[senCount_[iz][plane - 1][ix - 1][iy - 1]][strip - 1]->Fill(dataframe.sample(0).adc());
101  meADC_[senCount_[iz][plane - 1][ix - 1][iy - 1]][strip - 1]->Fill(dataframe.sample(1).adc());
102  meADC_[senCount_[iz][plane - 1][ix - 1][iy - 1]][strip - 1]->Fill(dataframe.sample(2).adc());
103  } else if (runtype_ == 3) {
104  meADC_[senCount_[iz][plane - 1][ix - 1][iy - 1]][strip - 1]->Fill(dataframe.sample(1).adc());
105  }
106  }
107  }
108  }
109 }
110 
const ESDetId & id() const
Definition: ESDataFrame.h:19
T getParameter(std::string const &) const
Definition: ParameterSet.h:303
virtual void setCurrentFolder(std::string const &fullpath)
Definition: DQMStore.cc:36
void bookHistograms(DQMStore::IBooker &, edm::Run const &, edm::EventSetup const &) override
int zside(DetId const &)
T getUntrackedParameter(std::string const &, T const &) const
int adc() const
get the ADC sample (singed 16 bits)
Definition: ESSample.h:16
const ESSample & sample(int i) const
Definition: ESDataFrame.h:24
#define DEFINE_FWK_MODULE(type)
Definition: MakerMacros.h:16
const_iterator end() const
Namespace of DDCMS conversion namespace.
ESPedestalTask(const edm::ParameterSet &ps)
const_iterator begin() const
The iterator returned can not safely be used across threads.
boost::transform_iterator< IterHelp, boost::counting_iterator< int > > const_iterator
bool isValid() const
Definition: HandleBase.h:70
HLT enums.
MonitorElement * book1D(TString const &name, TString const &title, int const nchX, double const lowX, double const highX, FUNC onbooking=NOOP())
Definition: DQMStore.h:98
Definition: Run.h:45
void analyze(const edm::Event &, const edm::EventSetup &) override