20 std::cout <<
"CastorRecHitMonitor Constructor: " <<
this << std::endl;
33 std::cout <<
"CastorRecHitMonitor::bookHistograms" << std::endl;
38 float ySec[nySec + 1];
39 float xSec[N_Sec + 1];
40 double E0sec = 1. / 1024.;
43 double lnBsec =
log(2.);
44 for (
int j = 1; j < nySec; j++) ySec[j + 1] = E0sec *
exp(j * lnBsec);
45 for (
int i = 0;
i <= N_Sec;
i++) xSec[
i] =
i;
47 sprintf(s,
"Castor Energy by Sectors #Phi");
48 h2RHvsSec = ibooker.
book2D(s, s, N_Sec, xSec, nySec, ySec);
49 h2RHvsSec->
getTH2F()->GetXaxis()->SetTitle(
"sector #Phi");
50 h2RHvsSec->getTH2F()->GetYaxis()->SetTitle(
"RecHit / GeV");
51 h2RHvsSec->getTH2F()->SetOption(
"colz");
57 for (
int i = 0;
i <= nxCh;
i++) xCh[
i] =
i;
58 double E0 = 1. / 1024.;
62 for (
int j = 1; j < nyE; j++) yErh[j + 1] = E0 *
exp(j * lnA);
64 string st =
"Castor Cell Energy Map (cell-wise)";
65 h2RHchan = ibooker.
book2D(st, st +
";moduleZ*16 + sector #Phi;RecHit / GeV",
66 nxCh, xCh, nyE, yErh);
67 h2RHchan->
getTH2F()->SetOption(
"colz");
69 sprintf(s,
"Castor Cell Energy");
70 hallchan = ibooker.
book1D(s, s, nyE, yErh);
71 hallchan->
getTH1F()->GetXaxis()->SetTitle(
"GeV");
73 st =
"Castor cell avr Energy per event Map Z-Phi";
74 h2RHoccmap = ibooker.
bookProfile2D(st, st +
";module Z;sector Phi", 14, 0, 14,
75 16, 0, 16, 0., 1.e10,
"");
78 sprintf(s,
"CastorRecHitEntriesMap");
79 h2RHentriesMap = ibooker.
book2D(s, s, 14, 0, 14, 16, 0, 16);
80 h2RHentriesMap->
getTH2F()->GetXaxis()->SetTitle(
"moduleZ");
81 h2RHentriesMap->getTH2F()->GetYaxis()->SetTitle(
"sector #Phi");
82 h2RHentriesMap->getTH2F()->SetOption(
"colz");
84 sprintf(s,
"CastorRecHitTime");
85 hRHtime = ibooker.
book1D(s, s, 301, -101., 200.);
87 sprintf(s,
"CASTORTowerDepth");
88 hTowerDepth = ibooker.
book1D(s, s, 130, -15500., -14200.);
89 hTowerDepth->
getTH1F()->GetXaxis()->SetTitle(
"mm");
91 sprintf(s,
"CASTORTowerMultiplicity");
92 hTowerMultipl = ibooker.
book1D(s, s, 20, 0., 20.);
95 float EhadTow[NEtow + 1];
96 float EMTow[NEtow + 1];
97 float ETower[NEtow + 2];
98 double E0tow = 1. / 1024.;
105 double lnBtow =
log(2.);
106 for (
int j = 1; j < NEtow; j++) EMTow[j + 1] = E0tow *
exp(j * lnBtow);
107 for (
int j = 1; j < NEtow; j++) EhadTow[j + 1] = E0tow *
exp(j * lnBtow);
108 for (
int j = 1; j <= NEtow; j++) ETower[j + 1] = E0tow *
exp(j * lnBtow);
110 sprintf(s,
"CASTORTowerEMvsEhad");
111 h2TowerEMhad = ibooker.
book2D(s, s, NEtow, EhadTow, NEtow, EMTow);
112 h2TowerEMhad->
getTH2F()->GetXaxis()->SetTitle(
"Ehad / GeV");
113 h2TowerEMhad->getTH2F()->GetYaxis()->SetTitle(
"EM / GeV");
114 h2TowerEMhad->getTH2F()->SetOption(
"colz");
116 sprintf(s,
"CASTORTowerTotalEnergy");
117 hTowerE = ibooker.
book1D(s, s, NEtow + 1, ETower);
118 hTowerE->
getTH1F()->GetXaxis()->SetTitle(
"GeV");
120 sprintf(s,
"CASTORJetsMultiplicity");
121 hJetsMultipl = ibooker.
book1D(s, s, 16, 0., 16.);
123 sprintf(s,
"CASTORJetEnergy");
124 hJetEnergy = ibooker.
book1D(s, s, 5000, 0., 500.);
126 sprintf(s,
"CASTORJetEta");
127 hJetEta = ibooker.
book1D(s, s, 126, -6.3, 6.3);
129 sprintf(s,
"CASTORJetPhi");
130 hJetPhi = ibooker.
book1D(s, s, 63, -3.15, 3.15);
133 std::cout <<
"CastorRecHitMonitor::bookHistograms(end)" << std::endl;
139 if (castorTowers.empty())
return;
142 for (reco::CastorTowerCollection::const_iterator iTower =
143 castorTowers.begin();
144 iTower != castorTowers.end(); iTower++) {
145 hTowerE->Fill(iTower->energy() * 0.001);
146 h2TowerEMhad->Fill(iTower->hadEnergy() * 0.001, iTower->emEnergy() * 0.001);
147 hTowerDepth->Fill(iTower->depth());
150 hTowerMultipl->Fill(nTowers);
156 std::cout <<
"CastorRecHitMonitor::processEvent (begin)" << std::endl;
158 for (
int z = 0; z < 14; z++)
159 for (
int phi = 0; phi < 16; phi++) energyInEachChannel[z][phi] = 0.;
164 if (castorHits.
empty())
return;
166 for (CASTORiter = castorHits.
begin(); CASTORiter != castorHits.
end();
168 float energy = CASTORiter->energy();
169 float time = CASTORiter->time();
171 if (time < -100.) time2 = -100.;
172 hRHtime->Fill(time2);
177 int sector = (
int)
id.sector();
179 energyInEachChannel[module - 1][sector - 1] += energy;
181 h2RHentriesMap->Fill(module - 1, sector - 1);
185 for (
int phi = 0; phi < 16; phi++) {
187 for (
int z = 0; z < 14; z++) {
188 float rh = energyInEachChannel[z][phi] * 0.001;
189 int ind = z * 16 + phi + 1;
191 h2RHchan->Fill(ind, rh);
193 if (rh < 0.)
continue;
194 h2RHoccmap->Fill(z, phi, rh);
197 h2RHvsSec->Fill(phi, es);
202 std::cout <<
"CastorRecHitMonitor::processEvent (end)" << std::endl;
209 for (reco::BasicJetCollection::const_iterator ibegin = Jets.begin(),
212 ijet != iend; ++ijet) {
214 float energy = ijet->energy() * 0.001;
215 hJetEnergy->Fill(energy);
216 hJetEta->Fill(ijet->eta());
217 hJetPhi->Fill(ijet->phi());
219 hJetsMultipl->Fill(nJets);
T getUntrackedParameter(std::string const &, T const &) const
TProfile2D * getTProfile2D() const
std::vector< CastorRecHit >::const_iterator const_iterator
void processEventJets(const reco::BasicJetCollection &Jets)
void setCurrentFolder(std::string const &fullpath)
MonitorElement * bookProfile2D(Args &&...args)
CastorRecHitMonitor(const edm::ParameterSet &ps)
MonitorElement * book1D(Args &&...args)
void bookHistograms(DQMStore::IBooker &, edm::Run const &, edm::EventSetup const &)
const_iterator end() const
MonitorElement * book2D(Args &&...args)
void processEventTowers(const reco::CastorTowerCollection &castorTowers)
void processEvent(const CastorRecHitCollection &castorHits)
std::vector< CastorTower > CastorTowerCollection
collection of CastorTower objects
const_iterator begin() const
std::vector< BasicJet > BasicJetCollection
collection of BasicJet objects