34 #include "TPostScript.h"
42 cout <<
"[DTNoiseComputation]: Constructor" << endl;
52 theFile =
new TFile(rootFileName.c_str(),
"READ");
56 theNewFile =
new TFile(newRootFileName.c_str(),
"RECREATE");
69 string CheckHistoName;
72 TH1F *hAverageNoiseHisto;
73 TH1F *hAverageNoiseIntegratedHisto;
74 TH1F *hAverageNoiseHistoPerCh;
75 TH1F *hAverageNoiseIntegratedHistoPerCh;
79 string AverageNoiseName;
80 string AverageNoiseIntegratedName;
81 string AverageNoiseNamePerCh;
82 string AverageNoiseIntegratedNamePerCh;
87 vector<const DTChamber *>::const_iterator ch_it =
dtGeom->chambers().begin();
88 vector<const DTChamber *>::const_iterator ch_end =
dtGeom->chambers().end();
90 for (; ch_it != ch_end; ++ch_it) {
92 vector<const DTSuperLayer *>::const_iterator sl_it = (*ch_it)->superLayers().begin();
93 vector<const DTSuperLayer *>::const_iterator sl_end = (*ch_it)->superLayers().end();
95 for (; sl_it != sl_end; ++sl_it) {
97 vector<const DTLayer *>::const_iterator l_it = (*sl_it)->layers().begin();
98 vector<const DTLayer *>::const_iterator l_end = (*sl_it)->layers().end();
100 for (; l_it != l_end; ++l_it) {
105 CheckHistoName =
"DigiOccupancy_" +
getLayerName(dtLId);
106 TH1F *hCheckHisto = (TH1F *)
theFile->Get(CheckHistoName.c_str());
109 string wheel = std::to_string(ch.
wheel());
113 TString histoName_someHowNoisy =
"somehowNoisyCell_W" + wheel +
"_St" +
station;
120 TString histoName_noisy =
"noisyCell_W" + wheel +
"_St" +
station;
128 hAverageNoiseHisto =
new TH1F(AverageNoiseName.c_str(), AverageNoiseName.c_str(), 200, 0, 10000);
130 hAverageNoiseIntegratedHisto =
131 new TH1F(AverageNoiseIntegratedName.c_str(), AverageNoiseIntegratedName.c_str(), 200, 0, 10000);
135 cout <<
" New Average Noise Histo per SuperLayer : " << hAverageNoiseHisto->GetName() << endl;
136 cout <<
" New Average Noise Integrated Histo per SuperLayer : " << hAverageNoiseHisto->GetName()
142 hAverageNoiseHistoPerCh =
143 new TH1F(AverageNoiseNamePerCh.c_str(), AverageNoiseNamePerCh.c_str(), 200, 0, 10000);
144 AverageNoiseIntegratedNamePerCh =
"AverageNoiseIntegrated_" +
getChamberName(dtLId);
145 hAverageNoiseIntegratedHistoPerCh =
new TH1F(
146 AverageNoiseIntegratedNamePerCh.c_str(), AverageNoiseIntegratedNamePerCh.c_str(), 200, 0, 10000);
150 cout <<
" New Average Noise Histo per chamber : " << hAverageNoiseHistoPerCh->GetName() << endl;
155 hOccHisto = (TH1F *)
theFile->Get(HistoName.c_str());
156 int numBin = hOccHisto->GetXaxis()->GetNbins();
157 for (
int bin = 1;
bin <= numBin;
bin++) {
171 hOccHisto = (TH1F *)
theFile->Get(HistoName.c_str());
172 numBin = hOccHisto->GetXaxis()->GetNbins();
173 for (
int bin = 1;
bin <= numBin;
bin++) {
176 if (hOccHisto->GetBinContent(
bin) < 100) {
178 AvNoise += hOccHisto->GetBinContent(
bin);
180 if (hOccHisto->GetBinContent(
bin) > 100 && hOccHisto->GetBinContent(
bin) < 500) {
182 cout <<
"filling somehow noisy cell" << endl;
184 if (hOccHisto->GetBinContent(
bin) > 500) {
186 cout <<
"filling noisy cell" << endl;
189 AvNoise = AvNoise / numCell;
190 cout <<
"theAverageNoise for layer " <<
getLayerName(dtLId) <<
" is : " << AvNoise << endl;
194 for (
int evt = 0; evt < updates; evt++) {
195 Histo2Name =
"DigiPerWirePerEvent_" +
getLayerName(dtLId) +
"_" + std::to_string(evt);
197 hEvtHisto = (TH2F *)
theFile->Get(Histo2Name.c_str());
200 cout <<
" New Histo with the number of events per evt per wire: " << hEvtHisto->GetName() << endl;
215 cout <<
"[DTNoiseComputation] endjob called!" << endl;
216 TH1F *hEvtDistance =
nullptr;
217 TF1 *ExpoFit =
new TF1(
"ExpoFit",
"expo", 0.5, 1000.5);
218 ExpoFit->SetMarkerColor();
219 TProfile *theNoiseHisto =
new TProfile(
"theNoiseHisto",
"Time Constant versus Average Noise", 100000, 0, 100000);
224 for (
int bin = 1;
bin < (*lHisto).second[0]->GetYaxis()->GetNbins();
bin++) {
227 for (
int i = 0;
i < int((*lHisto).second.size());
i++) {
228 for (
int evt = 1; evt <= (*lHisto).second[
i]->GetXaxis()->GetNbins(); evt++) {
229 if ((*lHisto).second[
i]->GetBinContent(evt,
bin) == 0)
234 string Histo =
"EvtDistancePerWire_" +
getLayerName((*lHisto).first) +
"_" + std::to_string(
bin);
235 hEvtDistance =
new TH1F(Histo.c_str(), Histo.c_str(), 50000, 0.5, 50000.5);
237 hEvtDistance->Fill(distanceEvt);
247 double par0 = funct->GetParameter(0);
248 double par1 = funct->GetParameter(1);
249 cout <<
"par0: " << par0 <<
" par1: " << par1 << endl;
250 double chi2rid = funct->GetChisquare() / funct->GetNDF();
268 cout <<
"Layer: " <<
getLayerName(wire.layerId()) <<
" wire: " << wire.wire() << endl;
269 cout <<
"The Average noise: " << (*AvNoise).second << endl;
273 theNoiseHisto->Write();
278 double integratedNoise,
bin, halfBin,
maxBin;
283 numBin = (*AvNoiseHisto).second->GetXaxis()->GetNbins();
284 maxBin = (*AvNoiseHisto).second->GetXaxis()->GetXmax();
285 bin = double(maxBin / numBin);
286 halfBin = double(bin / 2);
288 (*AvNoiseHisto).second->Write();
289 for (
int i = 1;
i < numBin;
i++) {
290 integratedNoise += (*AvNoiseHisto).second->GetBinContent(
i);
298 for (map<DTChamberId, TH1F *>::const_iterator AvNoiseHisto =
AvNoisePerChamber.begin();
302 numBin = (*AvNoiseHisto).second->GetXaxis()->GetNbins();
303 maxBin = (*AvNoiseHisto).second->GetXaxis()->GetXmax();
304 bin = maxBin / numBin;
307 (*AvNoiseHisto).second->Write();
308 for (
int i = 1;
i < numBin;
i++) {
309 integratedNoise += (*AvNoiseHisto).second->GetBinContent(
i);
319 vector<const DTChamber *>::const_iterator chamber_it =
dtGeom->chambers().begin();
320 vector<const DTChamber *>::const_iterator chamber_end =
dtGeom->chambers().end();
322 for (; chamber_it != chamber_end; ++chamber_it) {
323 vector<const DTSuperLayer *>::const_iterator sl_it = (*chamber_it)->superLayers().begin();
324 vector<const DTSuperLayer *>::const_iterator sl_end = (*chamber_it)->superLayers().end();
326 for (; sl_it != sl_end; ++sl_it) {
328 vector<const DTLayer *>::const_iterator l_it = (*sl_it)->layers().begin();
329 vector<const DTLayer *>::const_iterator l_end = (*sl_it)->layers().end();
332 TCanvas
c1(canvasName.c_str(), canvasName.c_str(), 600, 780);
333 TLegend *leg =
new TLegend(0.5, 0.6, 0.7, 0.8);
334 for (; l_it != l_end; ++l_it) {
338 TH1F *hOccHisto = (TH1F *)
theFile->Get(HistoName.c_str());
341 cout <<
"TitleHisto : " << TitleHisto << endl;
342 hOccHisto->SetTitle(TitleHisto.c_str());
343 string legendHisto =
"layer " + std::to_string(layerId.
layer());
344 leg->AddEntry(hOccHisto, legendHisto.c_str(),
"L");
347 if (layerId.
layer() == 1)
350 hOccHisto->Draw(
"same");
351 hOccHisto->SetLineColor(layerId.
layer());
364 for (map<pair<int, int>, TH1F *>::const_iterator nCell =
noisyC.begin(); nCell !=
noisyC.end(); ++nCell) {
366 (*nCell).second->Write();
368 for (map<pair<int, int>, TH1F *>::const_iterator somehownCell =
someHowNoisyC.begin();
372 (*somehownCell).second->Write();
384 string layerName =
"W" + std::to_string(dtChId.
wheel()) +
"_St" + std::to_string(dtChId.
station()) +
"_Sec" +
385 std::to_string(dtChId.
sector()) +
"_SL" + std::to_string(dtSLId.
superlayer()) +
"_L" +
386 std::to_string(lId.
layer());
394 string superLayerName =
"W" + std::to_string(dtChId.
wheel()) +
"_St" + std::to_string(dtChId.
station()) +
"_Sec" +
395 std::to_string(dtChId.
sector()) +
"_SL" + std::to_string(dtSLId.
superlayer());
397 return superLayerName;
403 string chamberName =
"W" + std::to_string(dtChId.
wheel()) +
"_St" + std::to_string(dtChId.
station()) +
"_Sec" +
404 std::to_string(dtChId.
sector());
412 for (
int SL = 1; SL <= 3; SL++) {
413 if (!(chId.
station() == 4 && SL == 2)) {
414 for (
int L = 1;
L <= 4;
L++) {
418 TH1F *hOccHisto = (TH1F *)
theFile->Get(HistoName.c_str());
420 if (hOccHisto->GetXaxis()->GetXmax() > maximum)
421 maximum = hOccHisto->GetXaxis()->GetNbins();
431 double dummy =
pow(10., 10.);
433 for (
int L = 1;
L <= 4;
L++) {
437 TH1F *hOccHisto = (TH1F *)
theFile->Get(HistoName.c_str());
439 if (hOccHisto->GetMaximum(dummy) > maximum)
440 maximum = hOccHisto->GetMaximum(dummy);
DTNoiseComputation(const edm::ParameterSet &ps)
Constructor.
T getUntrackedParameter(std::string const &, T const &) const
int getMaxNumBins(const DTChamberId &chId) const
constexpr char const * layerName[numberOfLayers]
constexpr unsigned int maxBin
double getYMaximum(const DTSuperLayerId &slId) const
DTChamberId chamberId() const
Return the corresponding ChamberId.
edm::ESHandle< DTGeometry > dtGeom
std::map< DTLayerId, std::vector< TH2F * > > theEvtMap
int layer() const
Return the layer number.
DTSuperLayerId superlayerId() const
Return the corresponding SuperLayerId.
std::string getChamberName(const DTLayerId &lId) const
Get the name of the chamber.
std::map< DTWireId, TH1F * > theHistoEvtDistancePerWire
std::map< DTWireId, bool > toDel
void endJob() override
Endjob.
void Fill(HcalDetId &id, double val, std::vector< TH2F > &depth)
std::map< std::pair< int, int >, TH1F * > noisyC
std::map< DTWireId, double > theAverageNoise
int superlayer() const
Return the superlayer number (deprecated method name)
~DTNoiseComputation() override
Destructor.
std::map< DTChamberId, TH1F * > AvNoisePerChamber
std::map< DTSuperLayerId, TH1F * > AvNoiseIntegratedPerSuperLayer
std::string getLayerName(const DTLayerId &lId) const
Get the name of the layer.
std::map< std::pair< int, int >, TH1F * > someHowNoisyC
std::map< DTSuperLayerId, TH1F * > AvNoisePerSuperLayer
std::string getSuperLayerName(const DTSuperLayerId &slId) const
Get the name of the superLayer.
std::map< DTWireId, double > theTimeConstant
ESHandle< T > getHandle(const ESGetToken< T, R > &iToken) const
int station() const
Return the station number.
int wheel() const
Return the wheel number.
void beginRun(const edm::Run &, const edm::EventSetup &setup) override
Power< A, B >::type pow(const A &a, const B &b)
const edm::ESGetToken< DTGeometry, MuonGeometryRecord > dtGeomToken_
std::map< DTChamberId, TH1F * > AvNoiseIntegratedPerChamber