9 #include "CLHEP/Random/RandGauss.h"
42 dbe_->
open(inputFile_);
47 edm::LogInfo(
"SiStripCalibLorentzAngle") <<
"### DIR-NAME = " << Dir_Name_;
49 std::vector<MonitorElement*>::iterator
histo;
54 Rootple = LorentzAngle_Plots->mkdir(
"Rootple");
55 MuH = LorentzAngle_Plots->mkdir(
"MuH");
58 MuH_vs_Phi = LorentzAngle_Plots->mkdir(
"MuH_vs_Phi");
61 MuH_vs_Eta = LorentzAngle_Plots->mkdir(
"MuH_vs_Eta");
74 TH1Ds[
"LA_TIB"] =
new TH1D(
"TanLAPerTesla TIB",
"TanLAPerTesla TIB", 1000, -0.5, 0.5);
76 TH1Ds[
"LA_TOB"] =
new TH1D(
"TanLAPerTesla TOB",
"TanLAPerTesla TOB", 1000, -0.5, 0.5);
78 TH1Ds[
"LA_err_TIB"] =
new TH1D(
"TanLAPerTesla Error TIB",
"TanLAPerTesla Error TIB", 1000, 0, 1);
79 TH1Ds[
"LA_err_TIB"]->SetDirectory(
MuH);
80 TH1Ds[
"LA_err_TOB"] =
new TH1D(
"TanLAPerTesla Error TOB",
"TanLAPerTesla Error TOB", 1000, 0, 1);
81 TH1Ds[
"LA_err_TOB"]->SetDirectory(
MuH);
82 TH1Ds[
"LA_chi2norm_TIB"] =
new TH1D(
"TanLAPerTesla Chi2norm TIB",
"TanLAPerTesla Chi2norm TIB", 2000, 0, 10);
83 TH1Ds[
"LA_chi2norm_TIB"]->SetDirectory(
MuH);
84 TH1Ds[
"LA_chi2norm_TOB"] =
new TH1D(
"TanLAPerTesla Chi2norm TOB",
"TanLAPerTesla Chi2norm TOB", 2000, 0, 10);
85 TH1Ds[
"LA_chi2norm_TOB"]->SetDirectory(
MuH);
86 TH1Ds[
"MagneticField"] =
new TH1D(
"MagneticField",
"MagneticField", 500, 0, 5);
87 TH1Ds[
"MagneticField"]->SetDirectory(
MuH);
89 TH2Ds[
"LA_TIB_graph"] =
new TH2D(
"TanLAPerTesla TIB Layers",
"TanLAPerTesla TIB Layers", 60, 0, 5, 1000, -0.3, 0.3);
90 TH2Ds[
"LA_TIB_graph"]->SetDirectory(
MuH);
91 TH2Ds[
"LA_TIB_graph"]->SetNdivisions(6);
92 TH2Ds[
"LA_TOB_graph"] =
new TH2D(
"TanLAPerTesla TOB Layers",
"TanLAPerTesla TOB Layers", 80, 0, 7, 1000, -0.3, 0.3);
93 TH2Ds[
"LA_TOB_graph"]->SetDirectory(
MuH);
94 TH2Ds[
"LA_TOB_graph"]->SetNdivisions(8);
96 TH1Ds[
"LA_TIB_1"] =
new TH1D(
"TanLAPerTesla TIB1",
"TanLAPerTesla TIB1", 2000, -0.5, 0.5);
98 TH1Ds[
"LA_TIB_1_mono"] =
new TH1D(
"TanLAPerTesla TIB1 MONO",
"TanLAPerTesla TIB1 MONO", 2000, -0.5, 0.5);
100 TH1Ds[
"LA_TIB_1_stereo"] =
new TH1D(
"TanLAPerTesla TIB1 STEREO",
"TanLAPerTesla TIB1 STEREO", 2000, -0.5, 0.5);
102 TH1Ds[
"LA_TIB_2"] =
new TH1D(
"TanLAPerTesla TIB2",
"TanLAPerTesla TIB2", 2000, -0.5, 0.5);
104 TH1Ds[
"LA_TIB_2_mono"] =
new TH1D(
"TanLAPerTesla TIB2 MONO",
"TanLAPerTesla TIB2 MONO", 2000, -0.5, 0.5);
106 TH1Ds[
"LA_TIB_2_stereo"] =
new TH1D(
"TanLAPerTesla TIB2 STEREO",
"TanLAPerTesla TIB2 STEREO", 2000, -0.5, 0.5);
108 TH1Ds[
"LA_TIB_3"] =
new TH1D(
"TanLAPerTesla_TIB 3",
"TanLAPerTesla TIB3", 2000, -0.5, 0.5);
110 TH1Ds[
"LA_TIB_4"] =
new TH1D(
"TanLAPerTesla_TIB 4",
"TanLAPerTesla TIB4", 2000, -0.5, 0.5);
113 TH1Ds[
"LA_TOB_1"] =
new TH1D(
"TanLAPerTesla TOB1",
"TanLAPerTesla TOB1", 2000, -0.5, 0.5);
115 TH1Ds[
"LA_TOB_1_mono"] =
new TH1D(
"TanLAPerTesla TOB1 MONO",
"TanLAPerTesla TOB1 MONO", 2000, -0.5, 0.5);
117 TH1Ds[
"LA_TOB_1_stereo"] =
new TH1D(
"TanLAPerTesla TOB1 STEREO",
"TanLAPerTesla TOB1 STEREO", 2000, -0.5, 0.5);
119 TH1Ds[
"LA_TOB_2"] =
new TH1D(
"TanLAPerTesla TOB2",
"TanLAPerTesla TOB2", 2000, -0.5, 0.5);
121 TH1Ds[
"LA_TOB_2_mono"] =
new TH1D(
"TanLAPerTesla TOB2 MONO",
"TanLAPerTesla TOB2 MONO", 2000, -0.5, 0.5);
123 TH1Ds[
"LA_TOB_2_stereo"] =
new TH1D(
"TanLAPerTesla TOB2 STEREO",
"TanLAPerTesla TOB2 STEREO", 2000, -0.5, 0.5);
125 TH1Ds[
"LA_TOB_3"] =
new TH1D(
"TanLAPerTesla TOB3",
"TanLAPerTesla TOB3", 2000, -0.5, 0.5);
127 TH1Ds[
"LA_TOB_4"] =
new TH1D(
"TanLAPerTesla TOB4",
"TanLAPerTesla TOB4", 2000, -0.5, 0.5);
129 TH1Ds[
"LA_TOB_5"] =
new TH1D(
"TanLAPerTesla TOB5",
"TanLAPerTesla TOB5", 2000, -0.5, 0.5);
131 TH1Ds[
"LA_TOB_6"] =
new TH1D(
"TanLAPerTesla TOB6",
"TanLAPerTesla TOB6", 2000, -0.5, 0.5);
134 TH2Ds[
"LA_phi_TIB"] =
new TH2D(
"TanLAPerTesla vs Phi TIB",
"TanLAPerTesla vs Phi TIB", 800, -4, 4, 600, -0.3, 0.3);
136 TH2Ds[
"LA_phi_TOB"] =
new TH2D(
"TanLAPerTesla vs Phi TOB",
"TanLAPerTesla vs Phi TOB", 800, -4, 4, 600, -0.3, 0.3);
139 TH2Ds[
"LA_phi_TIB1"] =
new TH2D(
"TanLAPerTesla vs Phi TIB1",
"TanLAPerTesla vs Phi TIB1", 800, -4, 4, 600, -0.3, 0.3);
141 TH2Ds[
"LA_phi_TIB1_mono"] =
142 new TH2D(
"TanLAPerTesla vs Phi TIB1 MONO",
"TanLAPerTesla vs Phi TIB1 MONO", 800, -4, 4, 600, -0.3, 0.3);
144 TH2Ds[
"LA_phi_TIB1_stereo"] =
145 new TH2D(
"TanLAPerTesla vs Phi TIB1 STEREO",
"TanLAPerTesla vs Phi TIB1 STEREO", 800, -4, 4, 600, -0.3, 0.3);
147 TH2Ds[
"LA_phi_TIB2"] =
new TH2D(
"TanLAPerTesla vs Phi TIB2",
"TanLAPerTesla vs Phi TIB2", 800, -4, 4, 600, -0.3, 0.3);
149 TH2Ds[
"LA_phi_TIB2_mono"] =
150 new TH2D(
"TanLAPerTesla vs Phi TIB2 MONO",
"TanLAPerTesla vs Phi TIB2 MONO", 800, -4, 4, 600, -0.3, 0.3);
152 TH2Ds[
"LA_phi_TIB2_stereo"] =
153 new TH2D(
"TanLAPerTesla vs Phi TIB2 STEREO",
"TanLAPerTesla vs Phi TIB2 STEREO", 800, -4, 4, 600, -0.3, 0.3);
155 TH2Ds[
"LA_phi_TIB3"] =
new TH2D(
"TanLAPerTesla vs Phi TIB3",
"TanLAPerTesla vs Phi TIB3", 800, -4, 4, 600, -0.3, 0.3);
157 TH2Ds[
"LA_phi_TIB4"] =
new TH2D(
"TanLAPerTesla vs Phi TIB4",
"TanLAPerTesla vs Phi TIB4", 800, -4, 4, 600, -0.3, 0.3);
160 TH2Ds[
"LA_phi_TOB1"] =
new TH2D(
"TanLAPerTesla vs Phi TOB1",
"TanLAPerTesla vs Phi TOB1", 800, -4, 4, 600, -0.3, 0.3);
162 TH2Ds[
"LA_phi_TOB1_mono"] =
163 new TH2D(
"TanLAPerTesla vs Phi TOB1 MONO",
"TanLAPerTesla vs Phi TOB1 MONO", 800, -4, 4, 600, -0.3, 0.3);
165 TH2Ds[
"LA_phi_TOB1_stereo"] =
166 new TH2D(
"TanLAPerTesla vs Phi TOB1 STEREO",
"TanLAPerTesla vs Phi TOB1 STEREO", 800, -4, 4, 600, -0.3, 0.3);
168 TH2Ds[
"LA_phi_TOB2"] =
new TH2D(
"TanLAPerTesla vs Phi TOB2",
"TanLAPerTesla vs Phi TOB2", 800, -4, 4, 600, -0.3, 0.3);
170 TH2Ds[
"LA_phi_TOB2_mono"] =
171 new TH2D(
"TanLAPerTesla vs Phi TOB2 MONO",
"TanLAPerTesla vs Phi TOB2 MONO", 800, -4, 4, 600, -0.3, 0.3);
173 TH2Ds[
"LA_phi_TOB2_stereo"] =
174 new TH2D(
"TanLAPerTesla vs Phi TOB2 STEREO",
"TanLAPerTesla vs Phi TOB2 STEREO", 800, -4, 4, 600, -0.3, 0.3);
176 TH2Ds[
"LA_phi_TOB3"] =
new TH2D(
"TanLAPerTesla vs Phi TOB3",
"TanLAPerTesla vs Phi TOB3", 800, -4, 4, 600, -0.3, 0.3);
178 TH2Ds[
"LA_phi_TOB4"] =
new TH2D(
"TanLAPerTesla vs Phi TOB4",
"TanLAPerTesla vs Phi TOB4", 800, -4, 4, 600, -0.3, 0.3);
180 TH2Ds[
"LA_phi_TOB5"] =
new TH2D(
"TanLAPerTesla vs Phi TOB5",
"TanLAPerTesla vs Phi TOB5", 800, -4, 4, 600, -0.3, 0.3);
182 TH2Ds[
"LA_phi_TOB6"] =
new TH2D(
"TanLAPerTesla vs Phi TOB6",
"TanLAPerTesla vs Phi TOB6", 800, -4, 4, 600, -0.3, 0.3);
185 TH2Ds[
"LA_eta_TIB"] =
186 new TH2D(
"TanLAPerTesla vs Eta TIB",
"TanLAPerTesla vs Eta TIB", 800, -2.6, 2.6, 600, -0.3, 0.3);
188 TH2Ds[
"LA_eta_TOB"] =
189 new TH2D(
"TanLAPerTesla vs Eta TOB",
"TanLAPerTesla vs Eta TOB", 800, -2.6, 2.6, 600, -0.3, 0.3);
192 TH2Ds[
"LA_eta_TIB1"] =
193 new TH2D(
"TanLAPerTesla vs Eta TIB1",
"TanLAPerTesla vs Eta TIB1", 800, -2.6, 2.6, 600, -0.3, 0.3);
195 TH2Ds[
"LA_eta_TIB1_mono"] =
196 new TH2D(
"TanLAPerTesla vs Eta TIB1 MONO",
"TanLAPerTesla vs Eta TIB1 MONO", 800, -2.6, 2.6, 600, -0.3, 0.3);
198 TH2Ds[
"LA_eta_TIB1_stereo"] =
199 new TH2D(
"TanLAPerTesla vs Eta TIB1 STEREO",
"TanLAPerTesla vs Eta TIB1 STEREO", 800, -2.6, 2.6, 600, -0.3, 0.3);
201 TH2Ds[
"LA_eta_TIB2"] =
202 new TH2D(
"TanLAPerTesla vs Eta TIB2",
"TanLAPerTesla vs Eta TIB2", 800, -2.6, 2.6, 600, -0.3, 0.3);
204 TH2Ds[
"LA_eta_TIB2_mono"] =
205 new TH2D(
"TanLAPerTesla vs Eta TIB2 MONO",
"TanLAPerTesla vs Eta TIB2 MONO", 800, -2.6, 2.6, 600, -0.3, 0.3);
207 TH2Ds[
"LA_eta_TIB2_stereo"] =
208 new TH2D(
"TanLAPerTesla vs Eta TIB2 STEREO",
"TanLAPerTesla vs Eta TIB2 STEREO", 800, -2.6, 2.6, 600, -0.3, 0.3);
210 TH2Ds[
"LA_eta_TIB3"] =
211 new TH2D(
"TanLAPerTesla vs Eta TIB3",
"TanLAPerTesla vs Eta TIB3", 800, -2.6, 2.6, 600, -0.3, 0.3);
213 TH2Ds[
"LA_eta_TIB4"] =
214 new TH2D(
"TanLAPerTesla vs Eta TIB4",
"TanLAPerTesla vs Eta TIB4", 800, -2.6, 2.6, 600, -0.3, 0.3);
217 TH2Ds[
"LA_eta_TOB1"] =
218 new TH2D(
"TanLAPerTesla vs Eta TOB1",
"TanLAPerTesla vs Eta TOB1", 800, -2.6, 2.6, 600, -0.3, 0.3);
220 TH2Ds[
"LA_eta_TOB1_mono"] =
221 new TH2D(
"TanLAPerTesla vs Eta TOB1 MONO",
"TanLAPerTesla vs Eta TOB1 MONO", 800, -2.6, 2.6, 600, -0.3, 0.3);
223 TH2Ds[
"LA_eta_TOB1_stereo"] =
224 new TH2D(
"TanLAPerTesla vs Eta TOB1 STEREO",
"TanLAPerTesla vs Eta TOB1 STEREO", 800, -2.6, 2.6, 600, -0.3, 0.3);
226 TH2Ds[
"LA_eta_TOB2"] =
227 new TH2D(
"TanLAPerTesla vs Eta TOB2",
"TanLAPerTesla vs Eta TOB2", 800, -2.6, 2.6, 600, -0.3, 0.3);
229 TH2Ds[
"LA_eta_TOB2_mono"] =
230 new TH2D(
"TanLAPerTesla vs Eta TOB2 MONO",
"TanLAPerTesla vs Eta TOB2 MONO", 800, -2.6, 2.6, 600, -0.3, 0.3);
232 TH2Ds[
"LA_eta_TOB2_stereo"] =
233 new TH2D(
"TanLAPerTesla vs Eta TOB2 STEREO",
"TanLAPerTesla vs Eta TOB2 STEREO", 800, -2.6, 2.6, 600, -0.3, 0.3);
235 TH2Ds[
"LA_eta_TOB3"] =
236 new TH2D(
"TanLAPerTesla vs Eta TOB3",
"TanLAPerTesla vs Eta TOB3", 800, -2.6, 2.6, 600, -0.3, 0.3);
238 TH2Ds[
"LA_eta_TOB4"] =
239 new TH2D(
"TanLAPerTesla vs Eta TOB4",
"TanLAPerTesla vs Eta TOB4", 800, -2.6, 2.6, 600, -0.3, 0.3);
241 TH2Ds[
"LA_eta_TOB5"] =
242 new TH2D(
"TanLAPerTesla vs Eta TOB5",
"TanLAPerTesla vs Eta TOB5", 800, -2.6, 2.6, 600, -0.3, 0.3);
244 TH2Ds[
"LA_eta_TOB6"] =
245 new TH2D(
"TanLAPerTesla vs Eta TOB6",
"TanLAPerTesla vs Eta TOB6", 800, -2.6, 2.6, 600, -0.3, 0.3);
248 ModuleTree =
new TTree(
"ModuleTree",
"ModuleTree");
268 int histocounter = 0;
269 int NotEnoughEntries = 0;
272 int FirstIT_goodfit = 0;
273 int FirstIT_badfit = 0;
274 int SecondIT_badfit = 0;
275 int SecondIT_goodfit = 0;
276 int no_mod_histo = 0;
294 double TIB1calib = 1.;
295 double TIB2calib = 1.;
296 double TIB3calib = 1.;
297 double TIB4calib = 1.;
298 double TOB1calib = 1.;
299 double TOB2calib = 1.;
300 double TOB3calib = 1.;
301 double TOB4calib = 1.;
302 double TOB5calib = 1.;
303 double TOB6calib = 1.;
305 if (CalibByMC ==
true) {
319 auto fitfunc = std::make_unique<TF1>(
"fitfunc",
"([4]/[3])*[1]*(TMath::Abs(x-[0]))+[2]", -1, 1);
320 auto fitfunc2IT = std::make_unique<TF1>(
"fitfunc2IT",
"([4]/[3])*[1]*(TMath::Abs(x-[0]))+[2]", -1, 1);
322 std::ofstream NoEntries;
323 NoEntries.open(NoEntriesHisto_.c_str());
325 Rep.open(LAreport_.c_str());
327 gStyle->SetOptStat(1110);
332 bool Good2ITFit =
false;
333 bool ModuleHisto =
true;
360 edm::LogInfo(
"SiStripCalibLorentzAngle") <<
"### NO MODULE HISTOGRAM";
363 if (stripdet !=
nullptr && ModuleHisto ==
true) {
386 if (det ==
nullptr) {
387 edm::LogError(
"SiStripCalibLorentzAngle") <<
"[SiStripCalibLorentzAngle::getNewObject] the detID " <<
id
388 <<
" doesn't seem to belong to Tracker" << std::endl;
396 if (stripdet ==
nullptr)
399 if (((*histo)->getEntries() <= FitCuts_Entries) && ModuleHisto ==
true) {
400 if (((*histo)->getEntries() == 0) && ModuleHisto ==
true) {
401 NoEntries <<
"NO ENTRIES MODULE, ID = " <<
id << std::endl;
402 edm::LogInfo(
"SiStripCalibLorentzAngle") <<
"### HISTOGRAM WITH 0 ENTRIES => TYPE:" << subid.
subdetId();
406 <<
"### HISTOGRAM WITH NR. ENTRIES <= ENTRIES_CUT => TYPE:" << subid.
subdetId();
417 std::stringstream LayerStream;
418 LayerStream <<
Layer;
419 name += LayerStream.str();
420 std::stringstream idnum;
425 gStyle->SetOptFit(111);
433 if (((*histo)->getEntries() > FitCuts_Entries) && ModuleHisto ==
true) {
447 fitfunc->SetParameter(0, p0_guess);
448 fitfunc->SetParameter(1, p1_guess);
449 fitfunc->SetParameter(2, p2_guess);
450 fitfunc->FixParameter(3, pitch);
451 fitfunc->FixParameter(4, thickness);
459 FitFunction->GetParameter(2) < FitCuts_p2 || chi2norm > FitCuts_chi2 ||
463 fitfunc2IT->SetParameter(0, p0_guess);
464 fitfunc2IT->SetParameter(1, p1_guess);
465 fitfunc2IT->SetParameter(2, p2_guess);
466 fitfunc2IT->FixParameter(3, pitch);
467 fitfunc2IT->FixParameter(4, thickness);
470 Profiles[
name]->Fit(fitfunc2IT.get(),
"E",
"", ModuleRangeMin2IT, ModuleRangeMax2IT);
478 FitFunction->GetParameter(2) < FitCuts_p2 || chi2norm > FitCuts_chi2 ||
493 FitFunction->GetParameter(2) > FitCuts_p2 && chi2norm < FitCuts_chi2 &&
507 FitFunction->GetParameter(2) > FitCuts_p2 && chi2norm < FitCuts_chi2 &&
509 if (Good2ITFit ==
false) {
523 LorentzAngle_Plots->cd();
559 TH1Ds[
"LA_chi2norm_TIB"]->Fill(chi2norm);
562 TH2Ds[
"LA_TIB_graph"]->Fill(Layer,
muH);
574 TH1Ds[
"LA_TIB_1_stereo"]->Fill(
muH);
590 TH1Ds[
"LA_TIB_2_stereo"]->Fill(
muH);
612 TH1Ds[
"LA_chi2norm_TOB"]->Fill(chi2norm);
615 TH2Ds[
"LA_TOB_graph"]->Fill(Layer,
muH);
627 TH1Ds[
"LA_TOB_1_stereo"]->Fill(
muH);
643 TH1Ds[
"LA_TOB_2_stereo"]->Fill(
muH);
680 auto gaus = std::make_unique<TF1>(
"gaus",
"gaus");
682 TH1Ds[
"LA_TIB_1"]->Fit(gaus.get(),
"",
"", -GaussFitRange, GaussFitRange);
684 float err_mean_TIB1 = gaus->GetParError(1);
685 float rms_TIB1 = gaus->GetParameter(2);
686 TH1Ds[
"LA_TIB_2"]->Fit(gaus.get(),
"",
"", -GaussFitRange, GaussFitRange);
688 float err_mean_TIB2 = gaus->GetParError(1);
689 float rms_TIB2 = gaus->GetParameter(2);
690 TH1Ds[
"LA_TIB_3"]->Fit(gaus.get(),
"",
"", -GaussFitRange, GaussFitRange);
692 float err_mean_TIB3 = gaus->GetParError(1);
693 float rms_TIB3 = gaus->GetParameter(2);
694 TH1Ds[
"LA_TIB_4"]->Fit(gaus.get(),
"",
"", -GaussFitRange, GaussFitRange);
696 float err_mean_TIB4 = gaus->GetParError(1);
697 float rms_TIB4 = gaus->GetParameter(2);
699 TH1Ds[
"LA_TOB_1"]->Fit(gaus.get(),
"",
"", -GaussFitRange, GaussFitRange);
701 float err_mean_TOB1 = gaus->GetParError(1);
702 float rms_TOB1 = gaus->GetParameter(2);
703 TH1Ds[
"LA_TOB_2"]->Fit(gaus.get(),
"",
"", -GaussFitRange, GaussFitRange);
705 float err_mean_TOB2 = gaus->GetParError(1);
706 float rms_TOB2 = gaus->GetParameter(2);
707 TH1Ds[
"LA_TOB_3"]->Fit(gaus.get(),
"",
"", -GaussFitRange, GaussFitRange);
709 float err_mean_TOB3 = gaus->GetParError(1);
710 float rms_TOB3 = gaus->GetParameter(2);
711 TH1Ds[
"LA_TOB_4"]->Fit(gaus.get(),
"",
"", -GaussFitRange, GaussFitRange);
713 float err_mean_TOB4 = gaus->GetParError(1);
714 float rms_TOB4 = gaus->GetParameter(2);
715 TH1Ds[
"LA_TOB_5"]->Fit(gaus.get(),
"",
"", -GaussFitRange, GaussFitRange);
717 float err_mean_TOB5 = gaus->GetParError(1);
718 float rms_TOB5 = gaus->GetParameter(2);
719 TH1Ds[
"LA_TOB_6"]->Fit(gaus.get(),
"",
"", -GaussFitRange, GaussFitRange);
721 float err_mean_TOB6 = gaus->GetParError(1);
722 float rms_TOB6 = gaus->GetParameter(2);
725 float TIBx[4] = {1, 2, 3, 4};
726 float TIBex[4] = {0, 0, 0, 0};
728 float TIBey[4] = {err_mean_TIB1, err_mean_TIB2, err_mean_TIB3, err_mean_TIB4};
731 float TOBx[6] = {1, 2, 3, 4, 5, 6};
732 float TOBex[6] = {0, 0, 0, 0, 0, 0};
734 float TOBey[6] = {err_mean_TOB1, err_mean_TOB2, err_mean_TOB3, err_mean_TOB4, err_mean_TOB5, err_mean_TOB6};
736 TIB_graph =
new TGraphErrors(nlayersTIB, TIBx, TIBy, TIBex, TIBey);
737 TOB_graph =
new TGraphErrors(nlayersTOB, TOBx, TOBy, TOBex, TOBey);
742 gStyle->SetOptFit(111);
743 gStyle->SetOptStat(111);
745 TIB_graph->SetTitle(
"TIB Layers #mu_{H}");
746 TIB_graph->GetXaxis()->SetTitle(
"Layers");
748 TIB_graph->GetYaxis()->SetTitle(
"#mu_{H}");
750 TIB_graph->GetYaxis()->SetTitleOffset(1.3);
751 TIB_graph->Fit(
"fit_TIB",
"E",
"", 1, 4);
754 TOB_graph->SetTitle(
"TOB Layers #mu_{H}");
755 TOB_graph->GetXaxis()->SetTitle(
"Layers");
757 TOB_graph->GetYaxis()->SetTitle(
"#mu_{H}");
759 TOB_graph->GetYaxis()->SetTitleOffset(1.3);
760 TOB_graph->Fit(
"fit_TOB",
"E",
"", 1, 6);
766 Rep <<
"- NR.OF TIB AND TOB MODULES = 7932" << std::endl << std::endl << std::endl;
767 Rep <<
"- NO MODULE HISTOS FOUND = " << no_mod_histo << std::endl << std::endl;
768 Rep <<
"- NR.OF HISTOS WITH ENTRIES > " << FitCuts_Entries <<
" = " << histocounter << std::endl << std::endl;
769 Rep <<
"- NR.OF HISTOS WITH ENTRIES <= " << FitCuts_Entries <<
" (!=0) = " << NotEnoughEntries << std::endl
771 Rep <<
"- NR.OF HISTOS WITH 0 ENTRIES = " << ZeroEntries << std::endl << std::endl << std::endl;
772 Rep <<
"- NR.OF GOOD FIT (FIRST IT + SECOND IT GOOD FIT)= " << GoodFit << std::endl << std::endl;
773 Rep <<
"- NR.OF FIRST IT GOOD FIT = " << FirstIT_goodfit << std::endl << std::endl;
774 Rep <<
"- NR.OF SECOND IT GOOD FIT = " << SecondIT_goodfit << std::endl << std::endl;
775 Rep <<
"- NR.OF FIRST IT BAD FIT = " << FirstIT_badfit << std::endl << std::endl;
776 Rep <<
"- NR.OF SECOND IT BAD FIT = " << SecondIT_badfit << std::endl << std::endl << std::endl;
778 Rep <<
"--------------- Mean MuH values per Layer -------------------" << std::endl << std::endl << std::endl;
779 Rep <<
"TIB1 = " <<
mean_TIB1 <<
" +- " << err_mean_TIB1 <<
" RMS = " << rms_TIB1 << std::endl;
780 Rep <<
"TIB2 = " <<
mean_TIB2 <<
" +- " << err_mean_TIB2 <<
" RMS = " << rms_TIB2 << std::endl;
781 Rep <<
"TIB3 = " <<
mean_TIB3 <<
" +- " << err_mean_TIB3 <<
" RMS = " << rms_TIB3 << std::endl;
782 Rep <<
"TIB4 = " <<
mean_TIB4 <<
" +- " << err_mean_TIB4 <<
" RMS = " << rms_TIB4 << std::endl;
783 Rep <<
"TOB1 = " <<
mean_TOB1 <<
" +- " << err_mean_TOB1 <<
" RMS = " << rms_TOB1 << std::endl;
784 Rep <<
"TOB2 = " <<
mean_TOB2 <<
" +- " << err_mean_TOB2 <<
" RMS = " << rms_TOB2 << std::endl;
785 Rep <<
"TOB3 = " <<
mean_TOB3 <<
" +- " << err_mean_TOB3 <<
" RMS = " << rms_TOB3 << std::endl;
786 Rep <<
"TOB4 = " <<
mean_TOB4 <<
" +- " << err_mean_TOB4 <<
" RMS = " << rms_TOB4 << std::endl;
787 Rep <<
"TOB5 = " <<
mean_TOB5 <<
" +- " << err_mean_TOB5 <<
" RMS = " << rms_TOB5 << std::endl;
788 Rep <<
"TOB6 = " <<
mean_TOB6 <<
" +- " << err_mean_TOB6 <<
" RMS = " << rms_TOB6 << std::endl << std::endl;
810 auto LorentzAngle = std::make_unique<SiStripLorentzAngle>();
813 for (std::map<uint32_t, float>::iterator it =
detid_la.begin(); it !=
detid_la.end(); it++) {
814 float langle = it->second;
815 if (!LorentzAngle->putLorentzAngle(it->first, langle))
817 <<
"[SiStripCalibLorentzAngle::analyze] detid already exists" << std::endl;
823 TrackerGeometry::DetIdContainer::const_iterator
Iditer;
825 for (Iditer = Id.begin(); Iditer != Id.end(); Iditer++) {
844 if (!LorentzAngle->putLorentzAngle(Iditer->rawId(),
hallMobility))
845 edm::LogError(
"SiStripLorentzAngleGenerator") <<
" detid already exists" << std::endl;
868 if (!LorentzAngle->putLorentzAngle(Iditer->rawId(),
hallMobility))
869 edm::LogError(
"SiStripLorentzAngleGenerator") <<
" detid already exists" << std::endl;
874 if (!LorentzAngle->putLorentzAngle(Iditer->rawId(),
hallMobility))
875 edm::LogError(
"SiStripLorentzAngleGenerator") <<
" detid already exists" << std::endl;
884 if (!LorentzAngle->putLorentzAngle(Iditer->rawId(),
hallMobility))
885 edm::LogError(
"SiStripLorentzAngleGenerator") <<
" detid already exists" << std::endl;
TDirectory * SecondIT_BadFit_Histos
static constexpr auto TEC
T getUntrackedParameter(std::string const &, T const &) const
TDirectory * FirstIT_GoodFit_Histos
const GlobalPoint gposition
const edm::EventSetup & c
Point3DBase< Scalar, LocalTag > LocalPoint
TDirectory * TIB_2IT_GoodFit
unsigned int tibLayer(const DetId &id) const
const TrackerGeomDet * idToDetUnit(DetId) const override
Return the pointer to the GeomDetUnit corresponding to a given DetId.
uint16_t *__restrict__ id
virtual const Topology & topology() const
const DetIdContainer & detIds() const override
Returm a vector of all GeomDet DetIds (including those of GeomDetUnits)
unsigned int tecRing(const DetId &id) const
ring id
TDirectory * TOB_2IT_GoodFit
edm::ESGetToken< MagneticField, IdealMagneticFieldRecord > magFieldToken_
Geom::Phi< T > phi() const
SiStripCalibLorentzAngle(const edm::ParameterSet &conf)
const Bounds & bounds() const
Log< level::Error, false > LogError
TrackerGeometry::DetIdContainer::const_iterator Iditer
const Plane & surface() const
The nominal surface of the GeomDet.
virtual std::vector< dqm::harvesting::MonitorElement * > getAllContents(std::string const &path) const
edm::ESGetToken< TrackerTopology, TrackerTopologyRcd > tTopoToken_
uint32_t getComponentId(std::string histoid)
TDirectory * TIB_1IT_GoodFit
virtual float thickness() const =0
bool getData(T &iHolder) const
virtual float localPitch(const LocalPoint &) const =0
TDirectory * LorentzAngle_Plots
std::vector< MonitorElement * > histolist
TDirectory * TIB_2IT_BadFit
TDirectory * TOB_1IT_GoodFit
constexpr int subdetId() const
get the contents of the subdetector field (not cast into any detector's numbering enum) ...
static constexpr auto TOB
LocalVector toLocal(const reco::Track::Vector &v, const Surface &s)
TDirectory * SecondIT_GoodFit_Histos
int extract(std::vector< int > *output, const std::string &dati)
SiStripHistoId hidmanager
Log< level::Info, false > LogInfo
edm::ESGetToken< TrackerGeometry, TrackerDigiGeometryRecord > tkGeomToken_
unsigned int stereo() const
stereo
edm::ESGetToken< SiStripLorentzAngle, SiStripLorentzAngleRcd > lorentzAngleToken_
static constexpr auto TIB
const TrackerGeometry * tkGeom_
void algoBeginJob(const edm::EventSetup &) override
~SiStripCalibLorentzAngle() override
T getParameter(std::string const &) const
std::vector< DetId > DetIdContainer
TDirectory * TOB_2IT_BadFit
std::unique_ptr< SiStripLorentzAngle > getNewObject() override
const PositionType & position() const
static constexpr auto TID
Power< A, B >::type pow(const A &a, const B &b)
DQM_DEPRECATED bool open(std::string const &filename, bool overwrite=false, std::string const &path="", std::string const &prepend="", OpenRunDirs stripdirs=KeepRunDirs, bool fileMustExist=true)
std::map< uint32_t, float > detid_la
const TrackerTopology * tTopo_
const Plane & specificSurface() const
Same as surface(), kept for backward compatibility.
unsigned int tobLayer(const DetId &id) const