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::endJob(void) { LogInfo("ESPedestalTask") << "analyzed " << ievt_ << " events"; }
76 
77 void ESPedestalTask::analyze(const edm::Event& e, const edm::EventSetup& iSetup) {
78  ievt_++;
79  runNum_ = e.id().run();
80 
82  e.getByToken(digitoken_, digis);
83 
84  runtype_ = 1; // Let runtype_ = 1
85 
86  // Digis
87  int zside, plane, ix, iy, strip, iz;
88  if (digis.isValid()) {
89  for (ESDigiCollection::const_iterator digiItr = digis->begin(); digiItr != digis->end(); ++digiItr) {
90  ESDataFrame dataframe = (*digiItr);
91  ESDetId id = dataframe.id();
92 
93  zside = id.zside();
94  plane = id.plane();
95  ix = id.six();
96  iy = id.siy();
97  strip = id.strip();
98  iz = (zside == 1) ? 0 : 1;
99 
100  if (meADC_[senCount_[iz][plane - 1][ix - 1][iy - 1]][strip - 1]) {
101  if (runtype_ == 1) {
102  meADC_[senCount_[iz][plane - 1][ix - 1][iy - 1]][strip - 1]->Fill(dataframe.sample(0).adc());
103  meADC_[senCount_[iz][plane - 1][ix - 1][iy - 1]][strip - 1]->Fill(dataframe.sample(1).adc());
104  meADC_[senCount_[iz][plane - 1][ix - 1][iy - 1]][strip - 1]->Fill(dataframe.sample(2).adc());
105  } else if (runtype_ == 3) {
106  meADC_[senCount_[iz][plane - 1][ix - 1][iy - 1]][strip - 1]->Fill(dataframe.sample(1).adc());
107  }
108  }
109  }
110  }
111 }
112 
RunNumber_t run() const
Definition: EventID.h:38
MonitorElement * book1D(TString const &name, TString const &title, int const nchX, double const lowX, double const highX)
Definition: DQMStore.cc:239
T getParameter(std::string const &) const
T getUntrackedParameter(std::string const &, T const &) const
bool getByToken(EDGetToken token, Handle< PROD > &result) const
Definition: Event.h:525
const ESDetId & id() const
Definition: ESDataFrame.h:19
void setCurrentFolder(std::string const &fullpath)
Definition: DQMStore.cc:418
void bookHistograms(DQMStore::IBooker &, edm::Run const &, edm::EventSetup const &) override
const_iterator begin() const
int zside(DetId const &)
void endJob(void) override
#define DEFINE_FWK_MODULE(type)
Definition: MakerMacros.h:16
const ESSample & sample(int i) const
Definition: ESDataFrame.h:24
int zside() const
Definition: ESDetId.h:39
bool isValid() const
Definition: HandleBase.h:70
Namespace of DDCMS conversion namespace.
ESPedestalTask(const edm::ParameterSet &ps)
boost::transform_iterator< IterHelp, boost::counting_iterator< int > > const_iterator
const_iterator end() const
edm::EventID id() const
Definition: EventBase.h:59
HLT enums.
int adc() const
get the ADC sample (singed 16 bits)
Definition: ESSample.h:16
Definition: Run.h:45
void analyze(const edm::Event &, const edm::EventSetup &) override