12 #include "CLHEP/Random/RandGauss.h"
39 detid_la= SiStripLorentzAngle_->getLorentzAngles();
52 dbe_->
open(inputFile_);
57 edm::LogInfo(
"SiStripCalibLorentzAngle")<<
"### DIR-NAME = "<<Dir_Name_;
59 std::vector<MonitorElement*>::iterator
histo;
64 Rootple = LorentzAngle_Plots->mkdir(
"Rootple");
65 MuH = LorentzAngle_Plots->mkdir(
"MuH");
68 MuH_vs_Phi = LorentzAngle_Plots->mkdir(
"MuH_vs_Phi");
71 MuH_vs_Eta = LorentzAngle_Plots->mkdir(
"MuH_vs_Eta");
84 TH1Ds[
"LA_TIB"] =
new TH1D(
"TanLAPerTesla TIB",
"TanLAPerTesla TIB",1000,-0.5,0.5);
86 TH1Ds[
"LA_TOB"] =
new TH1D(
"TanLAPerTesla TOB",
"TanLAPerTesla TOB",1000,-0.5,0.5);
88 TH1Ds[
"LA_err_TIB"] =
new TH1D(
"TanLAPerTesla Error TIB",
"TanLAPerTesla Error TIB",1000,0,1);
89 TH1Ds[
"LA_err_TIB"]->SetDirectory(
MuH);
90 TH1Ds[
"LA_err_TOB"] =
new TH1D(
"TanLAPerTesla Error TOB",
"TanLAPerTesla Error TOB",1000,0,1);
91 TH1Ds[
"LA_err_TOB"]->SetDirectory(
MuH);
92 TH1Ds[
"LA_chi2norm_TIB"] =
new TH1D(
"TanLAPerTesla Chi2norm TIB",
"TanLAPerTesla Chi2norm TIB",2000,0,10);
93 TH1Ds[
"LA_chi2norm_TIB"]->SetDirectory(
MuH);
94 TH1Ds[
"LA_chi2norm_TOB"] =
new TH1D(
"TanLAPerTesla Chi2norm TOB",
"TanLAPerTesla Chi2norm TOB",2000,0,10);
95 TH1Ds[
"LA_chi2norm_TOB"]->SetDirectory(
MuH);
96 TH1Ds[
"MagneticField"] =
new TH1D(
"MagneticField",
"MagneticField",500,0,5);
97 TH1Ds[
"MagneticField"]->SetDirectory(
MuH);
99 TH2Ds[
"LA_TIB_graph"] =
new TH2D(
"TanLAPerTesla TIB Layers",
"TanLAPerTesla TIB Layers",60,0,5,1000,-0.3,0.3);
100 TH2Ds[
"LA_TIB_graph"]->SetDirectory(
MuH);
101 TH2Ds[
"LA_TIB_graph"]->SetNdivisions(6);
102 TH2Ds[
"LA_TOB_graph"] =
new TH2D(
"TanLAPerTesla TOB Layers",
"TanLAPerTesla TOB Layers",80,0,7,1000,-0.3,0.3);
103 TH2Ds[
"LA_TOB_graph"]->SetDirectory(
MuH);
104 TH2Ds[
"LA_TOB_graph"]->SetNdivisions(8);
106 TH1Ds[
"LA_TIB_1"] =
new TH1D(
"TanLAPerTesla TIB1",
"TanLAPerTesla TIB1",2000,-0.5,0.5);
108 TH1Ds[
"LA_TIB_1_mono"] =
new TH1D(
"TanLAPerTesla TIB1 MONO",
"TanLAPerTesla TIB1 MONO",2000,-0.5,0.5);
110 TH1Ds[
"LA_TIB_1_stereo"] =
new TH1D(
"TanLAPerTesla TIB1 STEREO",
"TanLAPerTesla TIB1 STEREO",2000,-0.5,0.5);
112 TH1Ds[
"LA_TIB_2"] =
new TH1D(
"TanLAPerTesla TIB2",
"TanLAPerTesla TIB2",2000,-0.5,0.5);
114 TH1Ds[
"LA_TIB_2_mono"] =
new TH1D(
"TanLAPerTesla TIB2 MONO",
"TanLAPerTesla TIB2 MONO",2000,-0.5,0.5);
116 TH1Ds[
"LA_TIB_2_stereo"] =
new TH1D(
"TanLAPerTesla TIB2 STEREO",
"TanLAPerTesla TIB2 STEREO",2000,-0.5,0.5);
118 TH1Ds[
"LA_TIB_3"] =
new TH1D(
"TanLAPerTesla_TIB 3",
"TanLAPerTesla TIB3",2000,-0.5,0.5);
120 TH1Ds[
"LA_TIB_4"] =
new TH1D(
"TanLAPerTesla_TIB 4",
"TanLAPerTesla TIB4",2000,-0.5,0.5);
123 TH1Ds[
"LA_TOB_1"] =
new TH1D(
"TanLAPerTesla TOB1",
"TanLAPerTesla TOB1",2000,-0.5,0.5);
125 TH1Ds[
"LA_TOB_1_mono"] =
new TH1D(
"TanLAPerTesla TOB1 MONO",
"TanLAPerTesla TOB1 MONO",2000,-0.5,0.5);
127 TH1Ds[
"LA_TOB_1_stereo"] =
new TH1D(
"TanLAPerTesla TOB1 STEREO",
"TanLAPerTesla TOB1 STEREO",2000,-0.5,0.5);
129 TH1Ds[
"LA_TOB_2"] =
new TH1D(
"TanLAPerTesla TOB2",
"TanLAPerTesla TOB2",2000,-0.5,0.5);
131 TH1Ds[
"LA_TOB_2_mono"] =
new TH1D(
"TanLAPerTesla TOB2 MONO",
"TanLAPerTesla TOB2 MONO",2000,-0.5,0.5);
133 TH1Ds[
"LA_TOB_2_stereo"] =
new TH1D(
"TanLAPerTesla TOB2 STEREO",
"TanLAPerTesla TOB2 STEREO",2000,-0.5,0.5);
135 TH1Ds[
"LA_TOB_3"] =
new TH1D(
"TanLAPerTesla TOB3",
"TanLAPerTesla TOB3",2000,-0.5,0.5);
137 TH1Ds[
"LA_TOB_4"] =
new TH1D(
"TanLAPerTesla TOB4",
"TanLAPerTesla TOB4",2000,-0.5,0.5);
139 TH1Ds[
"LA_TOB_5"] =
new TH1D(
"TanLAPerTesla TOB5",
"TanLAPerTesla TOB5",2000,-0.5,0.5);
141 TH1Ds[
"LA_TOB_6"] =
new TH1D(
"TanLAPerTesla TOB6",
"TanLAPerTesla TOB6",2000,-0.5,0.5);
144 TH2Ds[
"LA_phi_TIB"] =
new TH2D(
"TanLAPerTesla vs Phi TIB",
"TanLAPerTesla vs Phi TIB",800,-4,4,600,-0.3,0.3);
146 TH2Ds[
"LA_phi_TOB"] =
new TH2D(
"TanLAPerTesla vs Phi TOB",
"TanLAPerTesla vs Phi TOB",800,-4,4,600,-0.3,0.3);
149 TH2Ds[
"LA_phi_TIB1"] =
new TH2D(
"TanLAPerTesla vs Phi TIB1",
"TanLAPerTesla vs Phi TIB1",800,-4,4,600,-0.3,0.3);
151 TH2Ds[
"LA_phi_TIB1_mono"] =
new TH2D(
"TanLAPerTesla vs Phi TIB1 MONO",
"TanLAPerTesla vs Phi TIB1 MONO",800,-4,4,600,-0.3,0.3);
153 TH2Ds[
"LA_phi_TIB1_stereo"] =
new TH2D(
"TanLAPerTesla vs Phi TIB1 STEREO",
"TanLAPerTesla vs Phi TIB1 STEREO",800,-4,4,600,-0.3,0.3);
155 TH2Ds[
"LA_phi_TIB2"] =
new TH2D(
"TanLAPerTesla vs Phi TIB2",
"TanLAPerTesla vs Phi TIB2",800,-4,4,600,-0.3,0.3);
157 TH2Ds[
"LA_phi_TIB2_mono"] =
new TH2D(
"TanLAPerTesla vs Phi TIB2 MONO",
"TanLAPerTesla vs Phi TIB2 MONO",800,-4,4,600,-0.3,0.3);
159 TH2Ds[
"LA_phi_TIB2_stereo"] =
new TH2D(
"TanLAPerTesla vs Phi TIB2 STEREO",
"TanLAPerTesla vs Phi TIB2 STEREO",800,-4,4,600,-0.3,0.3);
161 TH2Ds[
"LA_phi_TIB3"] =
new TH2D(
"TanLAPerTesla vs Phi TIB3",
"TanLAPerTesla vs Phi TIB3",800,-4,4,600,-0.3,0.3);
163 TH2Ds[
"LA_phi_TIB4"] =
new TH2D(
"TanLAPerTesla vs Phi TIB4",
"TanLAPerTesla vs Phi TIB4",800,-4,4,600,-0.3,0.3);
166 TH2Ds[
"LA_phi_TOB1"] =
new TH2D(
"TanLAPerTesla vs Phi TOB1",
"TanLAPerTesla vs Phi TOB1",800,-4,4,600,-0.3,0.3);
168 TH2Ds[
"LA_phi_TOB1_mono"] =
new TH2D(
"TanLAPerTesla vs Phi TOB1 MONO",
"TanLAPerTesla vs Phi TOB1 MONO",800,-4,4,600,-0.3,0.3);
170 TH2Ds[
"LA_phi_TOB1_stereo"] =
new TH2D(
"TanLAPerTesla vs Phi TOB1 STEREO",
"TanLAPerTesla vs Phi TOB1 STEREO",800,-4,4,600,-0.3,0.3);
172 TH2Ds[
"LA_phi_TOB2"] =
new TH2D(
"TanLAPerTesla vs Phi TOB2",
"TanLAPerTesla vs Phi TOB2",800,-4,4,600,-0.3,0.3);
174 TH2Ds[
"LA_phi_TOB2_mono"] =
new TH2D(
"TanLAPerTesla vs Phi TOB2 MONO",
"TanLAPerTesla vs Phi TOB2 MONO",800,-4,4,600,-0.3,0.3);
176 TH2Ds[
"LA_phi_TOB2_stereo"] =
new TH2D(
"TanLAPerTesla vs Phi TOB2 STEREO",
"TanLAPerTesla vs Phi TOB2 STEREO",800,-4,4,600,-0.3,0.3);
178 TH2Ds[
"LA_phi_TOB3"] =
new TH2D(
"TanLAPerTesla vs Phi TOB3",
"TanLAPerTesla vs Phi TOB3",800,-4,4,600,-0.3,0.3);
180 TH2Ds[
"LA_phi_TOB4"] =
new TH2D(
"TanLAPerTesla vs Phi TOB4",
"TanLAPerTesla vs Phi TOB4",800,-4,4,600,-0.3,0.3);
182 TH2Ds[
"LA_phi_TOB5"] =
new TH2D(
"TanLAPerTesla vs Phi TOB5",
"TanLAPerTesla vs Phi TOB5",800,-4,4,600,-0.3,0.3);
184 TH2Ds[
"LA_phi_TOB6"] =
new TH2D(
"TanLAPerTesla vs Phi TOB6",
"TanLAPerTesla vs Phi TOB6",800,-4,4,600,-0.3,0.3);
187 TH2Ds[
"LA_eta_TIB"] =
new TH2D(
"TanLAPerTesla vs Eta TIB",
"TanLAPerTesla vs Eta TIB",800,-2.6,2.6,600,-0.3,0.3);
189 TH2Ds[
"LA_eta_TOB"] =
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"] =
new TH2D(
"TanLAPerTesla vs Eta TIB1",
"TanLAPerTesla vs Eta TIB1",800,-2.6,2.6,600,-0.3,0.3);
194 TH2Ds[
"LA_eta_TIB1_mono"] =
new TH2D(
"TanLAPerTesla vs Eta TIB1 MONO",
"TanLAPerTesla vs Eta TIB1 MONO",800,-2.6,2.6,600,-0.3,0.3);
196 TH2Ds[
"LA_eta_TIB1_stereo"] =
new TH2D(
"TanLAPerTesla vs Eta TIB1 STEREO",
"TanLAPerTesla vs Eta TIB1 STEREO",800,-2.6,2.6,600,-0.3,0.3);
198 TH2Ds[
"LA_eta_TIB2"] =
new TH2D(
"TanLAPerTesla vs Eta TIB2",
"TanLAPerTesla vs Eta TIB2",800,-2.6,2.6,600,-0.3,0.3);
200 TH2Ds[
"LA_eta_TIB2_mono"] =
new TH2D(
"TanLAPerTesla vs Eta TIB2 MONO",
"TanLAPerTesla vs Eta TIB2 MONO",800,-2.6,2.6,600,-0.3,0.3);
202 TH2Ds[
"LA_eta_TIB2_stereo"] =
new TH2D(
"TanLAPerTesla vs Eta TIB2 STEREO",
"TanLAPerTesla vs Eta TIB2 STEREO",800,-2.6,2.6,600,-0.3,0.3);
204 TH2Ds[
"LA_eta_TIB3"] =
new TH2D(
"TanLAPerTesla vs Eta TIB3",
"TanLAPerTesla vs Eta TIB3",800,-2.6,2.6,600,-0.3,0.3);
206 TH2Ds[
"LA_eta_TIB4"] =
new TH2D(
"TanLAPerTesla vs Eta TIB4",
"TanLAPerTesla vs Eta TIB4",800,-2.6,2.6,600,-0.3,0.3);
209 TH2Ds[
"LA_eta_TOB1"] =
new TH2D(
"TanLAPerTesla vs Eta TOB1",
"TanLAPerTesla vs Eta TOB1",800,-2.6,2.6,600,-0.3,0.3);
211 TH2Ds[
"LA_eta_TOB1_mono"] =
new TH2D(
"TanLAPerTesla vs Eta TOB1 MONO",
"TanLAPerTesla vs Eta TOB1 MONO",800,-2.6,2.6,600,-0.3,0.3);
213 TH2Ds[
"LA_eta_TOB1_stereo"] =
new TH2D(
"TanLAPerTesla vs Eta TOB1 STEREO",
"TanLAPerTesla vs Eta TOB1 STEREO",800,-2.6,2.6,600,-0.3,0.3);
215 TH2Ds[
"LA_eta_TOB2"] =
new TH2D(
"TanLAPerTesla vs Eta TOB2",
"TanLAPerTesla vs Eta TOB2",800,-2.6,2.6,600,-0.3,0.3);
217 TH2Ds[
"LA_eta_TOB2_mono"] =
new TH2D(
"TanLAPerTesla vs Eta TOB2 MONO",
"TanLAPerTesla vs Eta TOB2 MONO",800,-2.6,2.6,600,-0.3,0.3);
219 TH2Ds[
"LA_eta_TOB2_stereo"] =
new TH2D(
"TanLAPerTesla vs Eta TOB2 STEREO",
"TanLAPerTesla vs Eta TOB2 STEREO",800,-2.6,2.6,600,-0.3,0.3);
221 TH2Ds[
"LA_eta_TOB3"] =
new TH2D(
"TanLAPerTesla vs Eta TOB3",
"TanLAPerTesla vs Eta TOB3",800,-2.6,2.6,600,-0.3,0.3);
223 TH2Ds[
"LA_eta_TOB4"] =
new TH2D(
"TanLAPerTesla vs Eta TOB4",
"TanLAPerTesla vs Eta TOB4",800,-2.6,2.6,600,-0.3,0.3);
225 TH2Ds[
"LA_eta_TOB5"] =
new TH2D(
"TanLAPerTesla vs Eta TOB5",
"TanLAPerTesla vs Eta TOB5",800,-2.6,2.6,600,-0.3,0.3);
227 TH2Ds[
"LA_eta_TOB6"] =
new TH2D(
"TanLAPerTesla vs Eta TOB6",
"TanLAPerTesla vs Eta TOB6",800,-2.6,2.6,600,-0.3,0.3);
230 ModuleTree =
new TTree(
"ModuleTree",
"ModuleTree");
250 int histocounter = 0;
251 int NotEnoughEntries = 0;
254 int FirstIT_goodfit = 0;
255 int FirstIT_badfit = 0;
256 int SecondIT_badfit = 0;
257 int SecondIT_goodfit = 0;
258 int no_mod_histo = 0;
276 double TIB1calib = 1.;
277 double TIB2calib = 1.;
278 double TIB3calib = 1.;
279 double TIB4calib = 1.;
280 double TOB1calib = 1.;
281 double TOB2calib = 1.;
282 double TOB3calib = 1.;
283 double TOB4calib = 1.;
284 double TOB5calib = 1.;
285 double TOB6calib = 1.;
302 TF1 *
fitfunc=
new TF1(
"fitfunc",
"([4]/[3])*[1]*(TMath::Abs(x-[0]))+[2]",-1,1);
303 TF1 *
fitfunc2IT=
new TF1(
"fitfunc2IT",
"([4]/[3])*[1]*(TMath::Abs(x-[0]))+[2]",-1,1);
305 std::ofstream NoEntries;
306 NoEntries.open(NoEntriesHisto_.c_str());
308 Rep.open(LAreport_.c_str());
310 gStyle->SetOptStat(1110);
316 bool Good2ITFit =
false;
317 bool ModuleHisto =
true;
344 edm::LogInfo(
"SiStripCalibLorentzAngle")<<
"### NO MODULE HISTOGRAM";}
346 if(stripdet!=0 && ModuleHisto==
true){
371 edm::LogError(
"SiStripCalibLorentzAngle") <<
"[SiStripCalibLorentzAngle::getNewObject] the detID " <<
id <<
" doesn't seem to belong to Tracker" <<std::endl;
379 if(stripdet==0)
continue;
381 if(((*histo)->getEntries()<=FitCuts_Entries)&&ModuleHisto==
true){
382 if(((*histo)->getEntries()==0)&&ModuleHisto==
true){
383 NoEntries<<
"NO ENTRIES MODULE, ID = "<<
id<<std::endl;
384 edm::LogInfo(
"SiStripCalibLorentzAngle")<<
"### HISTOGRAM WITH 0 ENTRIES => TYPE:"<<subid.
subdetId();
387 edm::LogInfo(
"SiStripCalibLorentzAngle")<<
"### HISTOGRAM WITH NR. ENTRIES <= ENTRIES_CUT => TYPE:"<<subid.
subdetId();
396 std::stringstream LayerStream;
398 name+=LayerStream.str();
399 std::stringstream idnum;
404 gStyle->SetOptFit(111);
407 Profiles[name.c_str()] =
new TProfile;
409 theProfile->Copy(*
Profiles[name.c_str()]);
410 Profiles[name.c_str()]->SetName(name.c_str());
412 if(((*histo)->getEntries()>FitCuts_Entries) && ModuleHisto==
true){
424 fitfunc->SetParameter(0, p0_guess);
425 fitfunc->SetParameter(1, p1_guess);
426 fitfunc->SetParameter(2, p2_guess);
427 fitfunc->FixParameter(3, pitch);
428 fitfunc->FixParameter(4, thickness);
430 Profiles[name.c_str()]->Fit(
"fitfunc",
"E",
"",ModuleRangeMin, ModuleRangeMax);
439 fitfunc2IT->SetParameter(0, p0_guess);
440 fitfunc2IT->SetParameter(1, p1_guess);
441 fitfunc2IT->SetParameter(2, p2_guess);
442 fitfunc2IT->FixParameter(3, pitch);
443 fitfunc2IT->FixParameter(4, thickness);
446 Profiles[name.c_str()]->Fit(
"fitfunc2IT",
"E",
"",ModuleRangeMin2IT, ModuleRangeMax2IT);
483 if(Good2ITFit==
false){
498 LorentzAngle_Plots->cd();
505 if(Layer==1)
muH =
muH/TIB1calib;
506 if(Layer==2)
muH =
muH/TIB2calib;
507 if(Layer==3)
muH =
muH/TIB3calib;
508 if(Layer==4)
muH =
muH/TIB4calib;
511 if(Layer==1)
muH =
muH/TOB1calib;
512 if(Layer==2)
muH =
muH/TOB2calib;
513 if(Layer==3)
muH =
muH/TOB3calib;
514 if(Layer==4)
muH =
muH/TOB4calib;
515 if(Layer==5)
muH =
muH/TOB5calib;
516 if(Layer==6)
muH =
muH/TOB6calib;
525 TH1Ds[
"LA_chi2norm_TIB"]->Fill(chi2norm);
528 TH2Ds[
"LA_TIB_graph"]->Fill(Layer,
muH);
539 TH1Ds[
"LA_TIB_1_stereo"]->Fill(
muH);
553 TH1Ds[
"LA_TIB_2_stereo"]->Fill(
muH);
575 TH1Ds[
"LA_chi2norm_TOB"]->Fill(chi2norm);
578 TH2Ds[
"LA_TOB_graph"]->Fill(Layer,
muH);
589 TH1Ds[
"LA_TOB_1_stereo"]->Fill(
muH);
603 TH1Ds[
"LA_TOB_2_stereo"]->Fill(
muH);
642 TH1Ds[
"LA_TIB_1"]->Fit(
"gaus",
"",
"",-GaussFitRange,GaussFitRange);
643 mean_TIB1 =
TH1Ds[
"LA_TIB_1"]->GetFunction(
"gaus")->GetParameter(1);
644 float err_mean_TIB1 =
TH1Ds[
"LA_TIB_1"]->GetFunction(
"gaus")->GetParError(1);
645 float rms_TIB1 =
TH1Ds[
"LA_TIB_1"]->GetFunction(
"gaus")->GetParameter(2);
646 TH1Ds[
"LA_TIB_2"]->Fit(
"gaus",
"",
"",-GaussFitRange,GaussFitRange);
647 mean_TIB2 =
TH1Ds[
"LA_TIB_2"]->GetFunction(
"gaus")->GetParameter(1);
648 float err_mean_TIB2 =
TH1Ds[
"LA_TIB_2"]->GetFunction(
"gaus")->GetParError(1);
649 float rms_TIB2 =
TH1Ds[
"LA_TIB_2"]->GetFunction(
"gaus")->GetParameter(2);
650 TH1Ds[
"LA_TIB_3"]->Fit(
"gaus",
"",
"",-GaussFitRange,GaussFitRange);
651 mean_TIB3 =
TH1Ds[
"LA_TIB_3"]->GetFunction(
"gaus")->GetParameter(1);
652 float err_mean_TIB3 =
TH1Ds[
"LA_TIB_3"]->GetFunction(
"gaus")->GetParError(1);
653 float rms_TIB3 =
TH1Ds[
"LA_TIB_3"]->GetFunction(
"gaus")->GetParameter(2);
654 TH1Ds[
"LA_TIB_4"]->Fit(
"gaus",
"",
"",-GaussFitRange,GaussFitRange);
655 mean_TIB4 =
TH1Ds[
"LA_TIB_4"]->GetFunction(
"gaus")->GetParameter(1);
656 float err_mean_TIB4 =
TH1Ds[
"LA_TIB_4"]->GetFunction(
"gaus")->GetParError(1);
657 float rms_TIB4 =
TH1Ds[
"LA_TIB_4"]->GetFunction(
"gaus")->GetParameter(2);
659 TH1Ds[
"LA_TOB_1"]->Fit(
"gaus",
"",
"",-GaussFitRange,GaussFitRange);
660 mean_TOB1 =
TH1Ds[
"LA_TOB_1"]->GetFunction(
"gaus")->GetParameter(1);
661 float err_mean_TOB1 =
TH1Ds[
"LA_TOB_1"]->GetFunction(
"gaus")->GetParError(1);
662 float rms_TOB1 =
TH1Ds[
"LA_TOB_1"]->GetFunction(
"gaus")->GetParameter(2);
663 TH1Ds[
"LA_TOB_2"]->Fit(
"gaus",
"",
"",-GaussFitRange,GaussFitRange);
664 mean_TOB2 =
TH1Ds[
"LA_TOB_2"]->GetFunction(
"gaus")->GetParameter(1);
665 float err_mean_TOB2 =
TH1Ds[
"LA_TOB_2"]->GetFunction(
"gaus")->GetParError(1);
666 float rms_TOB2 =
TH1Ds[
"LA_TOB_2"]->GetFunction(
"gaus")->GetParameter(2);
667 TH1Ds[
"LA_TOB_3"]->Fit(
"gaus",
"",
"",-GaussFitRange,GaussFitRange);
668 mean_TOB3 =
TH1Ds[
"LA_TOB_3"]->GetFunction(
"gaus")->GetParameter(1);
669 float err_mean_TOB3 =
TH1Ds[
"LA_TOB_3"]->GetFunction(
"gaus")->GetParError(1);
670 float rms_TOB3 =
TH1Ds[
"LA_TOB_3"]->GetFunction(
"gaus")->GetParameter(2);
671 TH1Ds[
"LA_TOB_4"]->Fit(
"gaus",
"",
"",-GaussFitRange,GaussFitRange);
672 mean_TOB4 =
TH1Ds[
"LA_TOB_4"]->GetFunction(
"gaus")->GetParameter(1);
673 float err_mean_TOB4 =
TH1Ds[
"LA_TOB_4"]->GetFunction(
"gaus")->GetParError(1);
674 float rms_TOB4 =
TH1Ds[
"LA_TOB_4"]->GetFunction(
"gaus")->GetParameter(2);
675 TH1Ds[
"LA_TOB_5"]->Fit(
"gaus",
"",
"",-GaussFitRange,GaussFitRange);
676 mean_TOB5 =
TH1Ds[
"LA_TOB_5"]->GetFunction(
"gaus")->GetParameter(1);
677 float err_mean_TOB5 =
TH1Ds[
"LA_TOB_5"]->GetFunction(
"gaus")->GetParError(1);
678 float rms_TOB5 =
TH1Ds[
"LA_TOB_5"]->GetFunction(
"gaus")->GetParameter(2);
679 TH1Ds[
"LA_TOB_6"]->Fit(
"gaus",
"",
"",-GaussFitRange,GaussFitRange);
680 mean_TOB6 =
TH1Ds[
"LA_TOB_6"]->GetFunction(
"gaus")->GetParameter(1);
681 float err_mean_TOB6 =
TH1Ds[
"LA_TOB_6"]->GetFunction(
"gaus")->GetParError(1);
682 float rms_TOB6 =
TH1Ds[
"LA_TOB_6"]->GetFunction(
"gaus")->GetParameter(2);
685 float TIBx[4]={1,2,3,4};
686 float TIBex[4]={0,0,0,0};
688 float TIBey[4]={err_mean_TIB1, err_mean_TIB2, err_mean_TIB3, err_mean_TIB4};
691 float TOBx[6]={1,2,3,4,5,6};
692 float TOBex[6]={0,0,0,0,0,0};
694 float TOBey[6]={err_mean_TOB1, err_mean_TOB2, err_mean_TOB3, err_mean_TOB4, err_mean_TOB5, err_mean_TOB6};
696 TIB_graph =
new TGraphErrors(nlayersTIB,TIBx,TIBy,TIBex,TIBey);
697 TOB_graph =
new TGraphErrors(nlayersTOB,TOBx,TOBy,TOBex,TOBey);
702 gStyle->SetOptFit(111);
703 gStyle->SetOptStat(111);
705 TIB_graph->SetTitle(
"TIB Layers #mu_{H}");
706 TIB_graph->GetXaxis()->SetTitle(
"Layers");
708 TIB_graph->GetYaxis()->SetTitle(
"#mu_{H}");
710 TIB_graph->GetYaxis()->SetTitleOffset(1.3);
714 TOB_graph->SetTitle(
"TOB Layers #mu_{H}");
715 TOB_graph->GetXaxis()->SetTitle(
"Layers");
717 TOB_graph->GetYaxis()->SetTitle(
"#mu_{H}");
719 TOB_graph->GetYaxis()->SetTitleOffset(1.3);
726 Rep<<
"- NR.OF TIB AND TOB MODULES = 7932"<<std::endl<<std::endl<<std::endl;
727 Rep<<
"- NO MODULE HISTOS FOUND = "<<no_mod_histo<<std::endl<<std::endl;
728 Rep<<
"- NR.OF HISTOS WITH ENTRIES > "<<FitCuts_Entries<<
" = "<<histocounter<<std::endl<<std::endl;
729 Rep<<
"- NR.OF HISTOS WITH ENTRIES <= "<<FitCuts_Entries<<
" (!=0) = "<<NotEnoughEntries<<std::endl<<std::endl;
730 Rep<<
"- NR.OF HISTOS WITH 0 ENTRIES = "<<ZeroEntries<<std::endl<<std::endl<<std::endl;
731 Rep<<
"- NR.OF GOOD FIT (FIRST IT + SECOND IT GOOD FIT)= "<<GoodFit<<std::endl<<std::endl;
732 Rep<<
"- NR.OF FIRST IT GOOD FIT = "<<FirstIT_goodfit<<std::endl<<std::endl;
733 Rep<<
"- NR.OF SECOND IT GOOD FIT = "<<SecondIT_goodfit<<std::endl<<std::endl;
734 Rep<<
"- NR.OF FIRST IT BAD FIT = "<<FirstIT_badfit<<std::endl<<std::endl;
735 Rep<<
"- NR.OF SECOND IT BAD FIT = "<<SecondIT_badfit<<std::endl<<std::endl<<std::endl;
737 Rep<<
"--------------- Mean MuH values per Layer -------------------"<<std::endl<<std::endl<<std::endl;
738 Rep<<
"TIB1 = "<<
mean_TIB1<<
" +- "<<err_mean_TIB1<<
" RMS = "<<rms_TIB1<<std::endl;
739 Rep<<
"TIB2 = "<<
mean_TIB2<<
" +- "<<err_mean_TIB2<<
" RMS = "<<rms_TIB2<<std::endl;
740 Rep<<
"TIB3 = "<<
mean_TIB3<<
" +- "<<err_mean_TIB3<<
" RMS = "<<rms_TIB3<<std::endl;
741 Rep<<
"TIB4 = "<<
mean_TIB4<<
" +- "<<err_mean_TIB4<<
" RMS = "<<rms_TIB4<<std::endl;
742 Rep<<
"TOB1 = "<<
mean_TOB1<<
" +- "<<err_mean_TOB1<<
" RMS = "<<rms_TOB1<<std::endl;
743 Rep<<
"TOB2 = "<<
mean_TOB2<<
" +- "<<err_mean_TOB2<<
" RMS = "<<rms_TOB2<<std::endl;
744 Rep<<
"TOB3 = "<<
mean_TOB3<<
" +- "<<err_mean_TOB3<<
" RMS = "<<rms_TOB3<<std::endl;
745 Rep<<
"TOB4 = "<<
mean_TOB4<<
" +- "<<err_mean_TOB4<<
" RMS = "<<rms_TOB4<<std::endl;
746 Rep<<
"TOB5 = "<<
mean_TOB5<<
" +- "<<err_mean_TOB5<<
" RMS = "<<rms_TOB5<<std::endl;
747 Rep<<
"TOB6 = "<<
mean_TOB6<<
" +- "<<err_mean_TOB6<<
" RMS = "<<rms_TOB6<<std::endl<<std::endl;
748 Rep<<
"Mean Hall Mobility TIB = "<<
meanMobility_TIB<<
" +- "<<
TIB_graph->GetFunction(
"fit_TIB")->GetParError(0)<<std::endl;
749 Rep<<
"Mean Hall Mobility TOB = "<<
meanMobility_TOB<<
" +- "<<
TOB_graph->GetFunction(
"fit_TOB")->GetParError(0)<<std::endl<<std::endl<<std::endl;
773 for(std::map<uint32_t, float>::iterator it =
detid_la.begin(); it !=
detid_la.end(); it++){
775 float langle=it->second;
777 edm::LogError(
"SiStripCalibLorentzAngle")<<
"[SiStripCalibLorentzAngle::analyze] detid already exists"<<std::endl;
784 TrackerGeometry::DetIdContainer::const_iterator Iditer;
786 for(Iditer=Id.begin();Iditer!=Id.end();Iditer++){
TDirectory * SecondIT_BadFit_Histos
T getParameter(std::string const &) const
virtual const TrackerGeomDet * idToDetUnit(DetId) const
Return the pointer to the GeomDetUnit corresponding to a given DetId.
T getUntrackedParameter(std::string const &, T const &) const
TDirectory * FirstIT_GoodFit_Histos
const GlobalPoint gposition
tuple SiStripLorentzAngle
TDirectory * TIB_2IT_GoodFit
unsigned int tibLayer(const DetId &id) const
virtual const Topology & topology() const
unsigned int tecRing(const DetId &id) const
ring id
TDirectory * TOB_2IT_GoodFit
Geom::Phi< T > phi() const
SiStripCalibLorentzAngle(const edm::ParameterSet &conf)
const Bounds & bounds() const
std::map< uint32_t, float > detid_la
LocalVector toLocal(const reco::Track::Vector &v, const Surface &s)
const Plane & surface() const
The nominal surface of the GeomDet.
bool putLorentzAngle(const uint32_t &, float)
uint32_t getComponentId(std::string histoid)
TDirectory * TIB_1IT_GoodFit
virtual float thickness() const =0
std::vector< MonitorElement * > getAllContents(const std::string &path, uint32_t runNumber=0, uint32_t lumi=0) const
virtual float localPitch(const LocalPoint &) const =0
const TrackerTopology * tTopo
const TrackerGeometry * tracker
TDirectory * LorentzAngle_Plots
TDirectory * TIB_2IT_BadFit
TDirectory * TOB_1IT_GoodFit
SiStripLorentzAngle * getNewObject()
int subdetId() const
get the contents of the subdetector field (not cast into any detector's numbering enum) ...
TDirectory * SecondIT_GoodFit_Histos
int extract(std::vector< int > *output, const std::string &dati)
unsigned int stereo() const
stereo
void algoBeginJob(const edm::EventSetup &)
T const * product() const
TDirectory * TOB_2IT_BadFit
edm::ESHandle< TrackerGeometry > estracker
bool open(const std::string &filename, bool overwrite=false, const std::string &path="", const std::string &prepend="", OpenRunDirs stripdirs=KeepRunDirs, bool fileMustExist=true)
edm::ESHandle< MagneticField > magfield_
const PositionType & position() const
std::vector< MonitorElement * > histolist
virtual ~SiStripCalibLorentzAngle()
Power< A, B >::type pow(const A &a, const B &b)
const Plane & specificSurface() const
Same as surface(), kept for backward compatibility.
unsigned int tobLayer(const DetId &id) const
std::vector< DetId > DetIdContainer