CMS 3D CMS Logo

SiStripCalibLorentzAngle.cc
Go to the documentation of this file.
1 #include <memory>
2 #include <string>
3 #include <iostream>
4 #include <fstream>
12 #include "CLHEP/Random/RandGauss.h"
21 
23  : ConditionDBWriter<SiStripLorentzAngle>(conf), tTopo(nullptr), conf_(conf) {}
24 
26  //Retrieve tracker topology from geometry
28  c.get<TrackerTopologyRcd>().get(tTopoHandle);
29  tTopo = tTopoHandle.product();
30 
32  tracker = &(*estracker);
33 
34  //get magnetic field and geometry from ES
37 
38  edm::ESHandle<SiStripLorentzAngle> SiStripLorentzAngle_;
39  c.get<SiStripLorentzAngleRcd>().get(SiStripLorentzAngle_);
40  detid_la = SiStripLorentzAngle_->getLorentzAngles();
41 
42  DQMStore* dbe_ = edm::Service<DQMStore>().operator->();
43 
44  std::string inputFile_ = conf_.getUntrackedParameter<std::string>("fileName", "LAProfiles.root");
45  std::string LAreport_ = conf_.getUntrackedParameter<std::string>("LA_Report", "LA_Report.txt");
46  std::string NoEntriesHisto_ = conf_.getUntrackedParameter<std::string>("NoEntriesHisto", "NoEntriesHisto.txt");
47  std::string Dir_Name_ = conf_.getUntrackedParameter<std::string>("Dir_Name", "SiStrip");
48 
49  LayerDB = conf_.getUntrackedParameter<bool>("LayerDB", false);
50 
51  CalibByMC = conf_.getUntrackedParameter<bool>("CalibByMC", false);
52 
53  dbe_->open(inputFile_);
54 
55  // use SistripHistoId for producing histogram id (and title)
56  SiStripHistoId hidmanager;
57 
58  edm::LogInfo("SiStripCalibLorentzAngle") << "### DIR-NAME = " << Dir_Name_;
59  histolist = dbe_->getAllContents(Dir_Name_);
60  std::vector<MonitorElement*>::iterator histo;
61 
62  hFile = new TFile(conf_.getUntrackedParameter<std::string>("out_fileName").c_str(), "RECREATE");
63 
64  LorentzAngle_Plots = hFile->mkdir("LorentzAngle_Plots");
65  Rootple = LorentzAngle_Plots->mkdir("Rootple");
66  MuH = LorentzAngle_Plots->mkdir("MuH");
67  TIB_MuH = MuH->mkdir("TIB_MuH");
68  TOB_MuH = MuH->mkdir("TOB_MuH");
69  MuH_vs_Phi = LorentzAngle_Plots->mkdir("MuH_vs_Phi");
70  TIB_Phi = MuH_vs_Phi->mkdir("TIB_Phi");
71  TOB_Phi = MuH_vs_Phi->mkdir("TOB_Phi");
72  MuH_vs_Eta = LorentzAngle_Plots->mkdir("MuH_vs_Eta");
73  TIB_Eta = MuH_vs_Eta->mkdir("TIB_Eta");
74  TOB_Eta = MuH_vs_Eta->mkdir("TOB_Eta");
75  FirstIT_GoodFit_Histos = LorentzAngle_Plots->mkdir("1IT_GoodFit_Histos");
76  TIB_1IT_GoodFit = FirstIT_GoodFit_Histos->mkdir("TIB_1IT_GoodFit");
77  TOB_1IT_GoodFit = FirstIT_GoodFit_Histos->mkdir("TOB_1IT_GoodFit");
78  SecondIT_GoodFit_Histos = LorentzAngle_Plots->mkdir("2IT_GoodFit_Histos");
79  TIB_2IT_GoodFit = SecondIT_GoodFit_Histos->mkdir("TIB_2IT_GoodFit");
80  TOB_2IT_GoodFit = SecondIT_GoodFit_Histos->mkdir("TOB_2IT_GoodFit");
81  SecondIT_BadFit_Histos = LorentzAngle_Plots->mkdir("2IT_BadFit_Histos");
82  TIB_2IT_BadFit = SecondIT_BadFit_Histos->mkdir("TIB_2IT_BadFit");
83  TOB_2IT_BadFit = SecondIT_BadFit_Histos->mkdir("TOB_2IT_BadFit");
84 
85  TH1Ds["LA_TIB"] = new TH1D("TanLAPerTesla TIB", "TanLAPerTesla TIB", 1000, -0.5, 0.5);
86  TH1Ds["LA_TIB"]->SetDirectory(MuH);
87  TH1Ds["LA_TOB"] = new TH1D("TanLAPerTesla TOB", "TanLAPerTesla TOB", 1000, -0.5, 0.5);
88  TH1Ds["LA_TOB"]->SetDirectory(MuH);
89  TH1Ds["LA_err_TIB"] = new TH1D("TanLAPerTesla Error TIB", "TanLAPerTesla Error TIB", 1000, 0, 1);
90  TH1Ds["LA_err_TIB"]->SetDirectory(MuH);
91  TH1Ds["LA_err_TOB"] = new TH1D("TanLAPerTesla Error TOB", "TanLAPerTesla Error TOB", 1000, 0, 1);
92  TH1Ds["LA_err_TOB"]->SetDirectory(MuH);
93  TH1Ds["LA_chi2norm_TIB"] = new TH1D("TanLAPerTesla Chi2norm TIB", "TanLAPerTesla Chi2norm TIB", 2000, 0, 10);
94  TH1Ds["LA_chi2norm_TIB"]->SetDirectory(MuH);
95  TH1Ds["LA_chi2norm_TOB"] = new TH1D("TanLAPerTesla Chi2norm TOB", "TanLAPerTesla Chi2norm TOB", 2000, 0, 10);
96  TH1Ds["LA_chi2norm_TOB"]->SetDirectory(MuH);
97  TH1Ds["MagneticField"] = new TH1D("MagneticField", "MagneticField", 500, 0, 5);
98  TH1Ds["MagneticField"]->SetDirectory(MuH);
99 
100  TH2Ds["LA_TIB_graph"] = new TH2D("TanLAPerTesla TIB Layers", "TanLAPerTesla TIB Layers", 60, 0, 5, 1000, -0.3, 0.3);
101  TH2Ds["LA_TIB_graph"]->SetDirectory(MuH);
102  TH2Ds["LA_TIB_graph"]->SetNdivisions(6);
103  TH2Ds["LA_TOB_graph"] = new TH2D("TanLAPerTesla TOB Layers", "TanLAPerTesla TOB Layers", 80, 0, 7, 1000, -0.3, 0.3);
104  TH2Ds["LA_TOB_graph"]->SetDirectory(MuH);
105  TH2Ds["LA_TOB_graph"]->SetNdivisions(8);
106 
107  TH1Ds["LA_TIB_1"] = new TH1D("TanLAPerTesla TIB1", "TanLAPerTesla TIB1", 2000, -0.5, 0.5);
108  TH1Ds["LA_TIB_1"]->SetDirectory(TIB_MuH);
109  TH1Ds["LA_TIB_1_mono"] = new TH1D("TanLAPerTesla TIB1 MONO", "TanLAPerTesla TIB1 MONO", 2000, -0.5, 0.5);
110  TH1Ds["LA_TIB_1_mono"]->SetDirectory(TIB_MuH);
111  TH1Ds["LA_TIB_1_stereo"] = new TH1D("TanLAPerTesla TIB1 STEREO", "TanLAPerTesla TIB1 STEREO", 2000, -0.5, 0.5);
112  TH1Ds["LA_TIB_1_stereo"]->SetDirectory(TIB_MuH);
113  TH1Ds["LA_TIB_2"] = new TH1D("TanLAPerTesla TIB2", "TanLAPerTesla TIB2", 2000, -0.5, 0.5);
114  TH1Ds["LA_TIB_2"]->SetDirectory(TIB_MuH);
115  TH1Ds["LA_TIB_2_mono"] = new TH1D("TanLAPerTesla TIB2 MONO", "TanLAPerTesla TIB2 MONO", 2000, -0.5, 0.5);
116  TH1Ds["LA_TIB_2_mono"]->SetDirectory(TIB_MuH);
117  TH1Ds["LA_TIB_2_stereo"] = new TH1D("TanLAPerTesla TIB2 STEREO", "TanLAPerTesla TIB2 STEREO", 2000, -0.5, 0.5);
118  TH1Ds["LA_TIB_2_stereo"]->SetDirectory(TIB_MuH);
119  TH1Ds["LA_TIB_3"] = new TH1D("TanLAPerTesla_TIB 3", "TanLAPerTesla TIB3", 2000, -0.5, 0.5);
120  TH1Ds["LA_TIB_3"]->SetDirectory(TIB_MuH);
121  TH1Ds["LA_TIB_4"] = new TH1D("TanLAPerTesla_TIB 4", "TanLAPerTesla TIB4", 2000, -0.5, 0.5);
122  TH1Ds["LA_TIB_4"]->SetDirectory(TIB_MuH);
123 
124  TH1Ds["LA_TOB_1"] = new TH1D("TanLAPerTesla TOB1", "TanLAPerTesla TOB1", 2000, -0.5, 0.5);
125  TH1Ds["LA_TOB_1"]->SetDirectory(TOB_MuH);
126  TH1Ds["LA_TOB_1_mono"] = new TH1D("TanLAPerTesla TOB1 MONO", "TanLAPerTesla TOB1 MONO", 2000, -0.5, 0.5);
127  TH1Ds["LA_TOB_1_mono"]->SetDirectory(TOB_MuH);
128  TH1Ds["LA_TOB_1_stereo"] = new TH1D("TanLAPerTesla TOB1 STEREO", "TanLAPerTesla TOB1 STEREO", 2000, -0.5, 0.5);
129  TH1Ds["LA_TOB_1_stereo"]->SetDirectory(TOB_MuH);
130  TH1Ds["LA_TOB_2"] = new TH1D("TanLAPerTesla TOB2", "TanLAPerTesla TOB2", 2000, -0.5, 0.5);
131  TH1Ds["LA_TOB_2"]->SetDirectory(TOB_MuH);
132  TH1Ds["LA_TOB_2_mono"] = new TH1D("TanLAPerTesla TOB2 MONO", "TanLAPerTesla TOB2 MONO", 2000, -0.5, 0.5);
133  TH1Ds["LA_TOB_2_mono"]->SetDirectory(TOB_MuH);
134  TH1Ds["LA_TOB_2_stereo"] = new TH1D("TanLAPerTesla TOB2 STEREO", "TanLAPerTesla TOB2 STEREO", 2000, -0.5, 0.5);
135  TH1Ds["LA_TOB_2_stereo"]->SetDirectory(TOB_MuH);
136  TH1Ds["LA_TOB_3"] = new TH1D("TanLAPerTesla TOB3", "TanLAPerTesla TOB3", 2000, -0.5, 0.5);
137  TH1Ds["LA_TOB_3"]->SetDirectory(TOB_MuH);
138  TH1Ds["LA_TOB_4"] = new TH1D("TanLAPerTesla TOB4", "TanLAPerTesla TOB4", 2000, -0.5, 0.5);
139  TH1Ds["LA_TOB_4"]->SetDirectory(TOB_MuH);
140  TH1Ds["LA_TOB_5"] = new TH1D("TanLAPerTesla TOB5", "TanLAPerTesla TOB5", 2000, -0.5, 0.5);
141  TH1Ds["LA_TOB_5"]->SetDirectory(TOB_MuH);
142  TH1Ds["LA_TOB_6"] = new TH1D("TanLAPerTesla TOB6", "TanLAPerTesla TOB6", 2000, -0.5, 0.5);
143  TH1Ds["LA_TOB_6"]->SetDirectory(TOB_MuH);
144 
145  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_TIB"]->SetDirectory(MuH_vs_Phi);
147  TH2Ds["LA_phi_TOB"] = new TH2D("TanLAPerTesla vs Phi TOB", "TanLAPerTesla vs Phi TOB", 800, -4, 4, 600, -0.3, 0.3);
148  TH2Ds["LA_phi_TOB"]->SetDirectory(MuH_vs_Phi);
149 
150  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"]->SetDirectory(TIB_Phi);
152  TH2Ds["LA_phi_TIB1_mono"] =
153  new TH2D("TanLAPerTesla vs Phi TIB1 MONO", "TanLAPerTesla vs Phi TIB1 MONO", 800, -4, 4, 600, -0.3, 0.3);
154  TH2Ds["LA_phi_TIB1_mono"]->SetDirectory(TIB_Phi);
155  TH2Ds["LA_phi_TIB1_stereo"] =
156  new TH2D("TanLAPerTesla vs Phi TIB1 STEREO", "TanLAPerTesla vs Phi TIB1 STEREO", 800, -4, 4, 600, -0.3, 0.3);
157  TH2Ds["LA_phi_TIB1_stereo"]->SetDirectory(TIB_Phi);
158  TH2Ds["LA_phi_TIB2"] = new TH2D("TanLAPerTesla vs Phi TIB2", "TanLAPerTesla vs Phi TIB2", 800, -4, 4, 600, -0.3, 0.3);
159  TH2Ds["LA_phi_TIB2"]->SetDirectory(TIB_Phi);
160  TH2Ds["LA_phi_TIB2_mono"] =
161  new TH2D("TanLAPerTesla vs Phi TIB2 MONO", "TanLAPerTesla vs Phi TIB2 MONO", 800, -4, 4, 600, -0.3, 0.3);
162  TH2Ds["LA_phi_TIB2_mono"]->SetDirectory(TIB_Phi);
163  TH2Ds["LA_phi_TIB2_stereo"] =
164  new TH2D("TanLAPerTesla vs Phi TIB2 STEREO", "TanLAPerTesla vs Phi TIB2 STEREO", 800, -4, 4, 600, -0.3, 0.3);
165  TH2Ds["LA_phi_TIB2_stereo"]->SetDirectory(TIB_Phi);
166  TH2Ds["LA_phi_TIB3"] = new TH2D("TanLAPerTesla vs Phi TIB3", "TanLAPerTesla vs Phi TIB3", 800, -4, 4, 600, -0.3, 0.3);
167  TH2Ds["LA_phi_TIB3"]->SetDirectory(TIB_Phi);
168  TH2Ds["LA_phi_TIB4"] = new TH2D("TanLAPerTesla vs Phi TIB4", "TanLAPerTesla vs Phi TIB4", 800, -4, 4, 600, -0.3, 0.3);
169  TH2Ds["LA_phi_TIB4"]->SetDirectory(TIB_Phi);
170 
171  TH2Ds["LA_phi_TOB1"] = new TH2D("TanLAPerTesla vs Phi TOB1", "TanLAPerTesla vs Phi TOB1", 800, -4, 4, 600, -0.3, 0.3);
172  TH2Ds["LA_phi_TOB1"]->SetDirectory(TOB_Phi);
173  TH2Ds["LA_phi_TOB1_mono"] =
174  new TH2D("TanLAPerTesla vs Phi TOB1 MONO", "TanLAPerTesla vs Phi TOB1 MONO", 800, -4, 4, 600, -0.3, 0.3);
175  TH2Ds["LA_phi_TOB1_mono"]->SetDirectory(TOB_Phi);
176  TH2Ds["LA_phi_TOB1_stereo"] =
177  new TH2D("TanLAPerTesla vs Phi TOB1 STEREO", "TanLAPerTesla vs Phi TOB1 STEREO", 800, -4, 4, 600, -0.3, 0.3);
178  TH2Ds["LA_phi_TOB1_stereo"]->SetDirectory(TOB_Phi);
179  TH2Ds["LA_phi_TOB2"] = new TH2D("TanLAPerTesla vs Phi TOB2", "TanLAPerTesla vs Phi TOB2", 800, -4, 4, 600, -0.3, 0.3);
180  TH2Ds["LA_phi_TOB2"]->SetDirectory(TOB_Phi);
181  TH2Ds["LA_phi_TOB2_mono"] =
182  new TH2D("TanLAPerTesla vs Phi TOB2 MONO", "TanLAPerTesla vs Phi TOB2 MONO", 800, -4, 4, 600, -0.3, 0.3);
183  TH2Ds["LA_phi_TOB2_mono"]->SetDirectory(TOB_Phi);
184  TH2Ds["LA_phi_TOB2_stereo"] =
185  new TH2D("TanLAPerTesla vs Phi TOB2 STEREO", "TanLAPerTesla vs Phi TOB2 STEREO", 800, -4, 4, 600, -0.3, 0.3);
186  TH2Ds["LA_phi_TOB2_stereo"]->SetDirectory(TOB_Phi);
187  TH2Ds["LA_phi_TOB3"] = new TH2D("TanLAPerTesla vs Phi TOB3", "TanLAPerTesla vs Phi TOB3", 800, -4, 4, 600, -0.3, 0.3);
188  TH2Ds["LA_phi_TOB3"]->SetDirectory(TOB_Phi);
189  TH2Ds["LA_phi_TOB4"] = new TH2D("TanLAPerTesla vs Phi TOB4", "TanLAPerTesla vs Phi TOB4", 800, -4, 4, 600, -0.3, 0.3);
190  TH2Ds["LA_phi_TOB4"]->SetDirectory(TOB_Phi);
191  TH2Ds["LA_phi_TOB5"] = new TH2D("TanLAPerTesla vs Phi TOB5", "TanLAPerTesla vs Phi TOB5", 800, -4, 4, 600, -0.3, 0.3);
192  TH2Ds["LA_phi_TOB5"]->SetDirectory(TOB_Phi);
193  TH2Ds["LA_phi_TOB6"] = new TH2D("TanLAPerTesla vs Phi TOB6", "TanLAPerTesla vs Phi TOB6", 800, -4, 4, 600, -0.3, 0.3);
194  TH2Ds["LA_phi_TOB6"]->SetDirectory(TOB_Phi);
195 
196  TH2Ds["LA_eta_TIB"] =
197  new TH2D("TanLAPerTesla vs Eta TIB", "TanLAPerTesla vs Eta TIB", 800, -2.6, 2.6, 600, -0.3, 0.3);
198  TH2Ds["LA_eta_TIB"]->SetDirectory(MuH_vs_Eta);
199  TH2Ds["LA_eta_TOB"] =
200  new TH2D("TanLAPerTesla vs Eta TOB", "TanLAPerTesla vs Eta TOB", 800, -2.6, 2.6, 600, -0.3, 0.3);
201  TH2Ds["LA_eta_TOB"]->SetDirectory(MuH_vs_Eta);
202 
203  TH2Ds["LA_eta_TIB1"] =
204  new TH2D("TanLAPerTesla vs Eta TIB1", "TanLAPerTesla vs Eta TIB1", 800, -2.6, 2.6, 600, -0.3, 0.3);
205  TH2Ds["LA_eta_TIB1"]->SetDirectory(TIB_Eta);
206  TH2Ds["LA_eta_TIB1_mono"] =
207  new TH2D("TanLAPerTesla vs Eta TIB1 MONO", "TanLAPerTesla vs Eta TIB1 MONO", 800, -2.6, 2.6, 600, -0.3, 0.3);
208  TH2Ds["LA_eta_TIB1_mono"]->SetDirectory(TIB_Eta);
209  TH2Ds["LA_eta_TIB1_stereo"] =
210  new TH2D("TanLAPerTesla vs Eta TIB1 STEREO", "TanLAPerTesla vs Eta TIB1 STEREO", 800, -2.6, 2.6, 600, -0.3, 0.3);
211  TH2Ds["LA_eta_TIB1_stereo"]->SetDirectory(TIB_Eta);
212  TH2Ds["LA_eta_TIB2"] =
213  new TH2D("TanLAPerTesla vs Eta TIB2", "TanLAPerTesla vs Eta TIB2", 800, -2.6, 2.6, 600, -0.3, 0.3);
214  TH2Ds["LA_eta_TIB2"]->SetDirectory(TIB_Eta);
215  TH2Ds["LA_eta_TIB2_mono"] =
216  new TH2D("TanLAPerTesla vs Eta TIB2 MONO", "TanLAPerTesla vs Eta TIB2 MONO", 800, -2.6, 2.6, 600, -0.3, 0.3);
217  TH2Ds["LA_eta_TIB2_mono"]->SetDirectory(TIB_Eta);
218  TH2Ds["LA_eta_TIB2_stereo"] =
219  new TH2D("TanLAPerTesla vs Eta TIB2 STEREO", "TanLAPerTesla vs Eta TIB2 STEREO", 800, -2.6, 2.6, 600, -0.3, 0.3);
220  TH2Ds["LA_eta_TIB2_stereo"]->SetDirectory(TIB_Eta);
221  TH2Ds["LA_eta_TIB3"] =
222  new TH2D("TanLAPerTesla vs Eta TIB3", "TanLAPerTesla vs Eta TIB3", 800, -2.6, 2.6, 600, -0.3, 0.3);
223  TH2Ds["LA_eta_TIB3"]->SetDirectory(TIB_Eta);
224  TH2Ds["LA_eta_TIB4"] =
225  new TH2D("TanLAPerTesla vs Eta TIB4", "TanLAPerTesla vs Eta TIB4", 800, -2.6, 2.6, 600, -0.3, 0.3);
226  TH2Ds["LA_eta_TIB4"]->SetDirectory(TIB_Eta);
227 
228  TH2Ds["LA_eta_TOB1"] =
229  new TH2D("TanLAPerTesla vs Eta TOB1", "TanLAPerTesla vs Eta TOB1", 800, -2.6, 2.6, 600, -0.3, 0.3);
230  TH2Ds["LA_eta_TOB1"]->SetDirectory(TIB_Eta);
231  TH2Ds["LA_eta_TOB1_mono"] =
232  new TH2D("TanLAPerTesla vs Eta TOB1 MONO", "TanLAPerTesla vs Eta TOB1 MONO", 800, -2.6, 2.6, 600, -0.3, 0.3);
233  TH2Ds["LA_eta_TOB1_mono"]->SetDirectory(TIB_Eta);
234  TH2Ds["LA_eta_TOB1_stereo"] =
235  new TH2D("TanLAPerTesla vs Eta TOB1 STEREO", "TanLAPerTesla vs Eta TOB1 STEREO", 800, -2.6, 2.6, 600, -0.3, 0.3);
236  TH2Ds["LA_eta_TOB1_stereo"]->SetDirectory(TIB_Eta);
237  TH2Ds["LA_eta_TOB2"] =
238  new TH2D("TanLAPerTesla vs Eta TOB2", "TanLAPerTesla vs Eta TOB2", 800, -2.6, 2.6, 600, -0.3, 0.3);
239  TH2Ds["LA_eta_TOB2"]->SetDirectory(TIB_Eta);
240  TH2Ds["LA_eta_TOB2_mono"] =
241  new TH2D("TanLAPerTesla vs Eta TOB2 MONO", "TanLAPerTesla vs Eta TOB2 MONO", 800, -2.6, 2.6, 600, -0.3, 0.3);
242  TH2Ds["LA_eta_TOB2_mono"]->SetDirectory(TIB_Eta);
243  TH2Ds["LA_eta_TOB2_stereo"] =
244  new TH2D("TanLAPerTesla vs Eta TOB2 STEREO", "TanLAPerTesla vs Eta TOB2 STEREO", 800, -2.6, 2.6, 600, -0.3, 0.3);
245  TH2Ds["LA_eta_TOB2_stereo"]->SetDirectory(TIB_Eta);
246  TH2Ds["LA_eta_TOB3"] =
247  new TH2D("TanLAPerTesla vs Eta TOB3", "TanLAPerTesla vs Eta TOB3", 800, -2.6, 2.6, 600, -0.3, 0.3);
248  TH2Ds["LA_eta_TOB3"]->SetDirectory(TIB_Eta);
249  TH2Ds["LA_eta_TOB4"] =
250  new TH2D("TanLAPerTesla vs Eta TOB4", "TanLAPerTesla vs Eta TOB4", 800, -2.6, 2.6, 600, -0.3, 0.3);
251  TH2Ds["LA_eta_TOB4"]->SetDirectory(TIB_Eta);
252  TH2Ds["LA_eta_TOB5"] =
253  new TH2D("TanLAPerTesla vs Eta TOB5", "TanLAPerTesla vs Eta TOB5", 800, -2.6, 2.6, 600, -0.3, 0.3);
254  TH2Ds["LA_eta_TOB5"]->SetDirectory(TIB_Eta);
255  TH2Ds["LA_eta_TOB6"] =
256  new TH2D("TanLAPerTesla vs Eta TOB6", "TanLAPerTesla vs Eta TOB6", 800, -2.6, 2.6, 600, -0.3, 0.3);
257  TH2Ds["LA_eta_TOB6"]->SetDirectory(TIB_Eta);
258 
259  ModuleTree = new TTree("ModuleTree", "ModuleTree");
260  ModuleTree->Branch("histoEntries", &histoEntries, "histoEntries/F");
261  ModuleTree->Branch("globalX", &globalX, "globalX/F");
262  ModuleTree->Branch("globalY", &globalY, "globalY/F");
263  ModuleTree->Branch("globalZ", &globalZ, "globalZ/F");
264  ModuleTree->Branch("gphi", &gphi, "gphi/F");
265  ModuleTree->Branch("geta", &geta, "geta/F");
266  ModuleTree->Branch("gR", &gR, "gR/F");
267  ModuleTree->Branch("goodFit", &goodFit, "goodFit/I");
268  ModuleTree->Branch("goodFit1IT", &goodFit1IT, "goodFit1IT/I");
269  ModuleTree->Branch("badFit", &badFit, "badFit/I");
270  ModuleTree->Branch("TIB", &TIB, "TIB/I");
271  ModuleTree->Branch("TOB", &TOB, "TOB/I");
272  ModuleTree->Branch("Layer", &Layer, "Layer/I");
273  ModuleTree->Branch("MonoStereo", &MonoStereo, "MonoStereo/I");
274  ModuleTree->Branch("theBfield", &theBfield, "theBfield/F");
275  ModuleTree->Branch("muH", &muH, "muH/F");
276 
277  ModuleTree->SetDirectory(Rootple);
278 
279  int histocounter = 0;
280  int NotEnoughEntries = 0;
281  int ZeroEntries = 0;
282  int GoodFit = 0;
283  int FirstIT_goodfit = 0;
284  int FirstIT_badfit = 0;
285  int SecondIT_badfit = 0;
286  int SecondIT_goodfit = 0;
287  int no_mod_histo = 0;
288  float chi2norm = 0;
289  LocalPoint p = LocalPoint(0, 0, 0);
290 
291  double ModuleRangeMin = conf_.getParameter<double>("ModuleFitXMin");
292  double ModuleRangeMax = conf_.getParameter<double>("ModuleFitXMax");
293  double ModuleRangeMin2IT = conf_.getParameter<double>("ModuleFit2ITXMin");
294  double ModuleRangeMax2IT = conf_.getParameter<double>("ModuleFit2ITXMax");
295  double FitCuts_Entries = conf_.getParameter<double>("FitCuts_Entries");
296  double FitCuts_p0 = conf_.getParameter<double>("FitCuts_p0");
297  double FitCuts_p1 = conf_.getParameter<double>("FitCuts_p1");
298  double FitCuts_p2 = conf_.getParameter<double>("FitCuts_p2");
299  double FitCuts_chi2 = conf_.getParameter<double>("FitCuts_chi2");
300  double FitCuts_ParErr_p0 = conf_.getParameter<double>("FitCuts_ParErr_p0");
301  double p0_guess = conf_.getParameter<double>("p0_guess");
302  double p1_guess = conf_.getParameter<double>("p1_guess");
303  double p2_guess = conf_.getParameter<double>("p2_guess");
304 
305  double TIB1calib = 1.;
306  double TIB2calib = 1.;
307  double TIB3calib = 1.;
308  double TIB4calib = 1.;
309  double TOB1calib = 1.;
310  double TOB2calib = 1.;
311  double TOB3calib = 1.;
312  double TOB4calib = 1.;
313  double TOB5calib = 1.;
314  double TOB6calib = 1.;
315 
316  if (CalibByMC == true) {
317  //Calibration factors evaluated by using MC analysis
318  TIB1calib = conf_.getParameter<double>("TIB1calib");
319  TIB2calib = conf_.getParameter<double>("TIB2calib");
320  TIB3calib = conf_.getParameter<double>("TIB3calib");
321  TIB4calib = conf_.getParameter<double>("TIB4calib");
322  TOB1calib = conf_.getParameter<double>("TOB1calib");
323  TOB2calib = conf_.getParameter<double>("TOB2calib");
324  TOB3calib = conf_.getParameter<double>("TOB3calib");
325  TOB4calib = conf_.getParameter<double>("TOB4calib");
326  TOB5calib = conf_.getParameter<double>("TOB5calib");
327  TOB6calib = conf_.getParameter<double>("TOB6calib");
328  }
329 
330  auto fitfunc = std::make_unique<TF1>("fitfunc", "([4]/[3])*[1]*(TMath::Abs(x-[0]))+[2]", -1, 1);
331  auto fitfunc2IT = std::make_unique<TF1>("fitfunc2IT", "([4]/[3])*[1]*(TMath::Abs(x-[0]))+[2]", -1, 1);
332 
333  std::ofstream NoEntries;
334  NoEntries.open(NoEntriesHisto_.c_str());
335  std::ofstream Rep;
336  Rep.open(LAreport_.c_str());
337 
338  gStyle->SetOptStat(1110);
339 
340  for (histo = histolist.begin(); histo != histolist.end(); ++histo) {
341  FitFunction = nullptr;
342  FitFunction2IT = nullptr;
343  bool Good2ITFit = false;
344  bool ModuleHisto = true;
345 
346  histoEntries = -99;
347  gphi = -99;
348  geta = -99;
349  gz = -99;
350  gR = -1;
351  globalX = -99;
352  globalY = -99;
353  globalZ = -99;
354  goodFit = 0;
355  goodFit1IT = 0;
356  badFit = 0;
357  muH = -1;
358  TIB = 0;
359  TOB = 0;
360  MonoStereo = -1;
361 
362  uint32_t id = hidmanager.getComponentId((*histo)->getName());
363  DetId detid(id);
364  StripSubdetector subid(id);
365  const GeomDetUnit* stripdet;
366  MonoStereo = subid.stereo();
367 
368  if (!(stripdet = tracker->idToDetUnit(subid))) {
369  no_mod_histo++;
370  ModuleHisto = false;
371  edm::LogInfo("SiStripCalibLorentzAngle") << "### NO MODULE HISTOGRAM";
372  }
373 
374  if (stripdet != nullptr && ModuleHisto == true) {
375  if (subid.subdetId() == int(StripSubdetector::TIB)) {
376  Layer = tTopo->tibLayer(detid);
377  TIB = 1;
378  }
379  if (subid.subdetId() == int(StripSubdetector::TOB)) {
380  Layer = tTopo->tobLayer(detid);
381  TOB = 1;
382  }
383 
384  //get module coordinates
385  const GlobalPoint gposition = (stripdet->surface()).toGlobal(p);
386  histoEntries = (*histo)->getEntries();
387  globalX = gposition.x();
388  globalY = gposition.y();
389  globalZ = gposition.z();
390  gphi = gposition.phi();
391  geta = gposition.eta();
392  gR = sqrt(pow(gposition.x(), 2) + pow(gposition.y(), 2));
393  gz = gposition.z();
394 
395  //get magnetic field
396  const StripGeomDetUnit* det = dynamic_cast<const StripGeomDetUnit*>(estracker->idToDetUnit(detid));
397  if (det == nullptr) {
398  edm::LogError("SiStripCalibLorentzAngle") << "[SiStripCalibLorentzAngle::getNewObject] the detID " << id
399  << " doesn't seem to belong to Tracker" << std::endl;
400  continue;
401  }
402  LocalVector lbfield = (det->surface()).toLocal(magfield_->inTesla(det->surface().position()));
403  theBfield = lbfield.mag();
404  theBfield = (theBfield > 0) ? theBfield : 0.00001;
405  TH1Ds["MagneticField"]->Fill(theBfield);
406  }
407  if (stripdet == nullptr)
408  continue;
409 
410  if (((*histo)->getEntries() <= FitCuts_Entries) && ModuleHisto == true) {
411  if (((*histo)->getEntries() == 0) && ModuleHisto == true) {
412  NoEntries << "NO ENTRIES MODULE, ID = " << id << std::endl;
413  edm::LogInfo("SiStripCalibLorentzAngle") << "### HISTOGRAM WITH 0 ENTRIES => TYPE:" << subid.subdetId();
414  ZeroEntries++;
415  } else {
416  edm::LogInfo("SiStripCalibLorentzAngle")
417  << "### HISTOGRAM WITH NR. ENTRIES <= ENTRIES_CUT => TYPE:" << subid.subdetId();
418  NotEnoughEntries++;
419  }
420  }
421 
423  if (TIB == 1) {
424  name += "TIB";
425  } else {
426  name += "TOB";
427  }
428  std::stringstream LayerStream;
429  LayerStream << Layer;
430  name += LayerStream.str();
431  std::stringstream idnum;
432  idnum << id;
433  name += "_Id_";
434  name += idnum.str();
435 
436  gStyle->SetOptFit(111);
437 
438  //Extract TProfile from Monitor Element to ProfileMap
439  Profiles[name] = new TProfile;
440  TProfile* theProfile = ExtractTObject<TProfile>().extract(*histo);
441  theProfile->Copy(*Profiles[name]);
442  Profiles[name]->SetName(name.c_str());
443 
444  if (((*histo)->getEntries() > FitCuts_Entries) && ModuleHisto == true) {
445  histocounter++;
446  if (TIB == 1) {
447  edm::LogInfo("SiStripCalibLorentzAngle") << "TIB layer = " << Layer;
448  }
449  if (TOB == 1) {
450  edm::LogInfo("SiStripCalibLorentzAngle") << "TOB layer = " << Layer;
451  }
452  edm::LogInfo("SiStripCalibLorentzAngle") << "id: " << id;
453 
454  float thickness = stripdet->specificSurface().bounds().thickness();
455  const StripTopology& topol = (const StripTopology&)stripdet->topology();
456  float pitch = topol.localPitch(p);
457 
458  fitfunc->SetParameter(0, p0_guess);
459  fitfunc->SetParameter(1, p1_guess);
460  fitfunc->SetParameter(2, p2_guess);
461  fitfunc->FixParameter(3, pitch);
462  fitfunc->FixParameter(4, thickness);
463 
464  Profiles[name]->Fit(fitfunc.get(), "E", "", ModuleRangeMin, ModuleRangeMax);
465 
466  FitFunction = fitfunc.get();
467  chi2norm = FitFunction->GetChisquare() / FitFunction->GetNDF();
468 
469  if (FitFunction->GetParameter(0) > FitCuts_p0 || FitFunction->GetParameter(1) < FitCuts_p1 ||
470  FitFunction->GetParameter(2) < FitCuts_p2 || chi2norm > FitCuts_chi2 ||
471  FitFunction->GetParError(0) < FitCuts_ParErr_p0) {
472  FirstIT_badfit++;
473 
474  fitfunc2IT->SetParameter(0, p0_guess);
475  fitfunc2IT->SetParameter(1, p1_guess);
476  fitfunc2IT->SetParameter(2, p2_guess);
477  fitfunc2IT->FixParameter(3, pitch);
478  fitfunc2IT->FixParameter(4, thickness);
479 
480  //2nd Iteration
481  Profiles[name]->Fit(fitfunc2IT.get(), "E", "", ModuleRangeMin2IT, ModuleRangeMax2IT);
482 
483  FitFunction = fitfunc2IT.get();
484  chi2norm = FitFunction->GetChisquare() / FitFunction->GetNDF();
485 
486  //2nd Iteration failed
487 
488  if (FitFunction->GetParameter(0) > FitCuts_p0 || FitFunction->GetParameter(1) < FitCuts_p1 ||
489  FitFunction->GetParameter(2) < FitCuts_p2 || chi2norm > FitCuts_chi2 ||
490  FitFunction->GetParError(0) < FitCuts_ParErr_p0) {
491  if (subid.subdetId() == int(StripSubdetector::TIB)) {
492  Profiles[name]->SetDirectory(TIB_2IT_BadFit);
493  } else {
494  Profiles[name]->SetDirectory(TOB_2IT_BadFit);
495  }
496 
497  SecondIT_badfit++;
498  badFit = 1;
499  }
500 
501  //2nd Iteration ok
502 
503  if (FitFunction->GetParameter(0) < FitCuts_p0 && FitFunction->GetParameter(1) > FitCuts_p1 &&
504  FitFunction->GetParameter(2) > FitCuts_p2 && chi2norm < FitCuts_chi2 &&
505  FitFunction->GetParError(0) > FitCuts_ParErr_p0) {
506  if (subid.subdetId() == int(StripSubdetector::TIB)) {
507  Profiles[name]->SetDirectory(TIB_2IT_GoodFit);
508  } else {
509  Profiles[name]->SetDirectory(TOB_2IT_GoodFit);
510  }
511 
512  SecondIT_goodfit++;
513  Good2ITFit = true;
514  }
515  }
516 
517  if (FitFunction->GetParameter(0) < FitCuts_p0 && FitFunction->GetParameter(1) > FitCuts_p1 &&
518  FitFunction->GetParameter(2) > FitCuts_p2 && chi2norm < FitCuts_chi2 &&
519  FitFunction->GetParError(0) > FitCuts_ParErr_p0) {
520  if (Good2ITFit == false) {
521  FirstIT_goodfit++;
522  goodFit1IT = 1;
523 
524  if (subid.subdetId() == int(StripSubdetector::TIB)) {
525  Profiles[name]->SetDirectory(TIB_1IT_GoodFit);
526  } else {
527  Profiles[name]->SetDirectory(TOB_1IT_GoodFit);
528  }
529  }
530 
531  GoodFit++;
532  goodFit = 1;
533 
534  LorentzAngle_Plots->cd();
535 
536  edm::LogInfo("SiStripCalibLorentzAngle") << FitFunction->GetParameter(0);
537 
538  muH = -(FitFunction->GetParameter(0)) / theBfield;
539 
540  if (TIB == 1) {
541  if (Layer == 1)
542  muH = muH / TIB1calib;
543  if (Layer == 2)
544  muH = muH / TIB2calib;
545  if (Layer == 3)
546  muH = muH / TIB3calib;
547  if (Layer == 4)
548  muH = muH / TIB4calib;
549  }
550  if (TOB == 1) {
551  if (Layer == 1)
552  muH = muH / TOB1calib;
553  if (Layer == 2)
554  muH = muH / TOB2calib;
555  if (Layer == 3)
556  muH = muH / TOB3calib;
557  if (Layer == 4)
558  muH = muH / TOB4calib;
559  if (Layer == 5)
560  muH = muH / TOB5calib;
561  if (Layer == 6)
562  muH = muH / TOB6calib;
563  }
564 
565  detid_la[id] = muH;
566 
567  if (TIB == 1) {
568  TH1Ds["LA_TIB"]->Fill(muH);
569  TH1Ds["LA_err_TIB"]->Fill(FitFunction->GetParError(0) / theBfield);
570  TH1Ds["LA_chi2norm_TIB"]->Fill(chi2norm);
571  TH2Ds["LA_phi_TIB"]->Fill(gphi, muH);
572  TH2Ds["LA_eta_TIB"]->Fill(geta, muH);
573  TH2Ds["LA_TIB_graph"]->Fill(Layer, muH);
574 
575  if (Layer == 1) {
576  TH1Ds["LA_TIB_1"]->Fill(muH);
577  TH2Ds["LA_phi_TIB1"]->Fill(gphi, muH);
578  TH2Ds["LA_eta_TIB1"]->Fill(geta, muH);
579  if (MonoStereo == 0) {
580  TH1Ds["LA_TIB_1_mono"]->Fill(muH);
581  TH2Ds["LA_phi_TIB1_mono"]->Fill(gphi, muH);
582  TH2Ds["LA_eta_TIB1_mono"]->Fill(geta, muH);
583  }
584  if (MonoStereo == 1) {
585  TH1Ds["LA_TIB_1_stereo"]->Fill(muH);
586  TH2Ds["LA_phi_TIB1_stereo"]->Fill(gphi, muH);
587  TH2Ds["LA_eta_TIB1_stereo"]->Fill(geta, muH);
588  }
589  }
590 
591  if (Layer == 2) {
592  TH1Ds["LA_TIB_2"]->Fill(muH);
593  TH2Ds["LA_phi_TIB2"]->Fill(gphi, muH);
594  TH2Ds["LA_eta_TIB2"]->Fill(geta, muH);
595  if (MonoStereo == 0) {
596  TH1Ds["LA_TIB_2_mono"]->Fill(muH);
597  TH2Ds["LA_phi_TIB2_mono"]->Fill(gphi, muH);
598  TH2Ds["LA_eta_TIB2_mono"]->Fill(geta, muH);
599  }
600  if (MonoStereo == 1) {
601  TH1Ds["LA_TIB_2_stereo"]->Fill(muH);
602  TH2Ds["LA_phi_TIB2_stereo"]->Fill(gphi, muH);
603  TH2Ds["LA_eta_TIB2_stereo"]->Fill(geta, muH);
604  }
605  }
606 
607  if (Layer == 3) {
608  TH1Ds["LA_TIB_3"]->Fill(muH);
609  TH2Ds["LA_phi_TIB3"]->Fill(gphi, muH);
610  TH2Ds["LA_eta_TIB3"]->Fill(geta, muH);
611  }
612 
613  if (Layer == 4) {
614  TH1Ds["LA_TIB_4"]->Fill(muH);
615  TH2Ds["LA_phi_TIB4"]->Fill(gphi, muH);
616  TH2Ds["LA_eta_TIB4"]->Fill(geta, muH);
617  }
618  }
619 
620  if (TOB == 1) {
621  TH1Ds["LA_TOB"]->Fill(muH);
622  TH1Ds["LA_err_TOB"]->Fill(FitFunction->GetParError(0) / theBfield);
623  TH1Ds["LA_chi2norm_TOB"]->Fill(chi2norm);
624  TH2Ds["LA_phi_TOB"]->Fill(gphi, muH);
625  TH2Ds["LA_eta_TOB"]->Fill(geta, muH);
626  TH2Ds["LA_TOB_graph"]->Fill(Layer, muH);
627 
628  if (Layer == 1) {
629  TH1Ds["LA_TOB_1"]->Fill(muH);
630  TH2Ds["LA_phi_TOB1"]->Fill(gphi, muH);
631  TH2Ds["LA_eta_TOB1"]->Fill(geta, muH);
632  if (MonoStereo == 0) {
633  TH1Ds["LA_TOB_1_mono"]->Fill(muH);
634  TH2Ds["LA_phi_TOB1_mono"]->Fill(gphi, muH);
635  TH2Ds["LA_eta_TOB1_mono"]->Fill(geta, muH);
636  }
637  if (MonoStereo == 1) {
638  TH1Ds["LA_TOB_1_stereo"]->Fill(muH);
639  TH2Ds["LA_phi_TOB1_stereo"]->Fill(gphi, muH);
640  TH2Ds["LA_eta_TOB1_stereo"]->Fill(geta, muH);
641  }
642  }
643 
644  if (Layer == 2) {
645  TH1Ds["LA_TOB_2"]->Fill(muH);
646  TH2Ds["LA_phi_TOB2"]->Fill(gphi, muH);
647  TH2Ds["LA_eta_TOB2"]->Fill(geta, muH);
648  if (MonoStereo == 0) {
649  TH1Ds["LA_TOB_2_mono"]->Fill(muH);
650  TH2Ds["LA_phi_TOB2_mono"]->Fill(gphi, muH);
651  TH2Ds["LA_eta_TOB2_mono"]->Fill(geta, muH);
652  }
653  if (MonoStereo == 1) {
654  TH1Ds["LA_TOB_2_stereo"]->Fill(muH);
655  TH2Ds["LA_phi_TOB2_stereo"]->Fill(gphi, muH);
656  TH2Ds["LA_eta_TOB2_stereo"]->Fill(geta, muH);
657  }
658  }
659 
660  if (Layer == 3) {
661  TH1Ds["LA_TOB_3"]->Fill(muH);
662  TH2Ds["LA_phi_TOB3"]->Fill(gphi, muH);
663  TH2Ds["LA_eta_TOB3"]->Fill(geta, muH);
664  }
665 
666  if (Layer == 4) {
667  TH1Ds["LA_TOB_4"]->Fill(muH);
668  TH2Ds["LA_phi_TOB4"]->Fill(gphi, muH);
669  TH2Ds["LA_eta_TOB4"]->Fill(geta, muH);
670  }
671 
672  if (Layer == 5) {
673  TH1Ds["LA_TOB_5"]->Fill(muH);
674  TH2Ds["LA_phi_TOB5"]->Fill(gphi, muH);
675  TH2Ds["LA_eta_TOB5"]->Fill(geta, muH);
676  }
677 
678  if (Layer == 6) {
679  TH1Ds["LA_TOB_6"]->Fill(muH);
680  TH2Ds["LA_phi_TOB6"]->Fill(gphi, muH);
681  TH2Ds["LA_eta_TOB6"]->Fill(geta, muH);
682  }
683  }
684  }
685  }
686 
687  ModuleTree->Fill();
688  }
689 
690  double GaussFitRange = conf_.getParameter<double>("GaussFitRange");
691  auto gaus = std::make_unique<TF1>("gaus", "gaus");
692 
693  TH1Ds["LA_TIB_1"]->Fit(gaus.get(), "", "", -GaussFitRange, GaussFitRange);
694  mean_TIB1 = gaus->GetParameter(1);
695  float err_mean_TIB1 = gaus->GetParError(1);
696  float rms_TIB1 = gaus->GetParameter(2);
697  TH1Ds["LA_TIB_2"]->Fit(gaus.get(), "", "", -GaussFitRange, GaussFitRange);
698  mean_TIB2 = gaus->GetParameter(1);
699  float err_mean_TIB2 = gaus->GetParError(1);
700  float rms_TIB2 = gaus->GetParameter(2);
701  TH1Ds["LA_TIB_3"]->Fit(gaus.get(), "", "", -GaussFitRange, GaussFitRange);
702  mean_TIB3 = gaus->GetParameter(1);
703  float err_mean_TIB3 = gaus->GetParError(1);
704  float rms_TIB3 = gaus->GetParameter(2);
705  TH1Ds["LA_TIB_4"]->Fit(gaus.get(), "", "", -GaussFitRange, GaussFitRange);
706  mean_TIB4 = gaus->GetParameter(1);
707  float err_mean_TIB4 = gaus->GetParError(1);
708  float rms_TIB4 = gaus->GetParameter(2);
709 
710  TH1Ds["LA_TOB_1"]->Fit(gaus.get(), "", "", -GaussFitRange, GaussFitRange);
711  mean_TOB1 = gaus->GetParameter(1);
712  float err_mean_TOB1 = gaus->GetParError(1);
713  float rms_TOB1 = gaus->GetParameter(2);
714  TH1Ds["LA_TOB_2"]->Fit(gaus.get(), "", "", -GaussFitRange, GaussFitRange);
715  mean_TOB2 = gaus->GetParameter(1);
716  float err_mean_TOB2 = gaus->GetParError(1);
717  float rms_TOB2 = gaus->GetParameter(2);
718  TH1Ds["LA_TOB_3"]->Fit(gaus.get(), "", "", -GaussFitRange, GaussFitRange);
719  mean_TOB3 = gaus->GetParameter(1);
720  float err_mean_TOB3 = gaus->GetParError(1);
721  float rms_TOB3 = gaus->GetParameter(2);
722  TH1Ds["LA_TOB_4"]->Fit(gaus.get(), "", "", -GaussFitRange, GaussFitRange);
723  mean_TOB4 = gaus->GetParameter(1);
724  float err_mean_TOB4 = gaus->GetParError(1);
725  float rms_TOB4 = gaus->GetParameter(2);
726  TH1Ds["LA_TOB_5"]->Fit(gaus.get(), "", "", -GaussFitRange, GaussFitRange);
727  mean_TOB5 = gaus->GetParameter(1);
728  float err_mean_TOB5 = gaus->GetParError(1);
729  float rms_TOB5 = gaus->GetParameter(2);
730  TH1Ds["LA_TOB_6"]->Fit(gaus.get(), "", "", -GaussFitRange, GaussFitRange);
731  mean_TOB6 = gaus->GetParameter(1);
732  float err_mean_TOB6 = gaus->GetParError(1);
733  float rms_TOB6 = gaus->GetParameter(2);
734 
735  int nlayersTIB = 4;
736  float TIBx[4] = {1, 2, 3, 4};
737  float TIBex[4] = {0, 0, 0, 0};
738  float TIBy[4] = {mean_TIB1, mean_TIB2, mean_TIB3, mean_TIB4};
739  float TIBey[4] = {err_mean_TIB1, err_mean_TIB2, err_mean_TIB3, err_mean_TIB4};
740 
741  int nlayersTOB = 6;
742  float TOBx[6] = {1, 2, 3, 4, 5, 6};
743  float TOBex[6] = {0, 0, 0, 0, 0, 0};
744  float TOBy[6] = {mean_TOB1, mean_TOB2, mean_TOB3, mean_TOB4, mean_TOB5, mean_TOB6};
745  float TOBey[6] = {err_mean_TOB1, err_mean_TOB2, err_mean_TOB3, err_mean_TOB4, err_mean_TOB5, err_mean_TOB6};
746 
747  TIB_graph = new TGraphErrors(nlayersTIB, TIBx, TIBy, TIBex, TIBey);
748  TOB_graph = new TGraphErrors(nlayersTOB, TOBx, TOBy, TOBex, TOBey);
749 
750  //TF1 *fit_TIB= new TF1("fit_TIB","[0]",0,4);
751  //TF1 *fit_TOB= new TF1("fit_TOB","[0]",0,6);
752 
753  gStyle->SetOptFit(111);
754  gStyle->SetOptStat(111);
755 
756  TIB_graph->SetTitle("TIB Layers #mu_{H}");
757  TIB_graph->GetXaxis()->SetTitle("Layers");
758  TIB_graph->GetXaxis()->SetNdivisions(4);
759  TIB_graph->GetYaxis()->SetTitle("#mu_{H}");
760  TIB_graph->SetMarkerStyle(20);
761  TIB_graph->GetYaxis()->SetTitleOffset(1.3);
762  TIB_graph->Fit("fit_TIB", "E", "", 1, 4);
763  meanMobility_TIB = TIB_graph->GetFunction("fit_TIB")->GetParameter(0);
764 
765  TOB_graph->SetTitle("TOB Layers #mu_{H}");
766  TOB_graph->GetXaxis()->SetTitle("Layers");
767  TOB_graph->GetXaxis()->SetNdivisions(6);
768  TOB_graph->GetYaxis()->SetTitle("#mu_{H}");
769  TOB_graph->SetMarkerStyle(20);
770  TOB_graph->GetYaxis()->SetTitleOffset(1.3);
771  TOB_graph->Fit("fit_TOB", "E", "", 1, 6);
772  meanMobility_TOB = TOB_graph->GetFunction("fit_TOB")->GetParameter(0);
773 
774  TIB_graph->Write("TIB_graph");
775  TOB_graph->Write("TOB_graph");
776 
777  Rep << "- NR.OF TIB AND TOB MODULES = 7932" << std::endl << std::endl << std::endl;
778  Rep << "- NO MODULE HISTOS FOUND = " << no_mod_histo << std::endl << std::endl;
779  Rep << "- NR.OF HISTOS WITH ENTRIES > " << FitCuts_Entries << " = " << histocounter << std::endl << std::endl;
780  Rep << "- NR.OF HISTOS WITH ENTRIES <= " << FitCuts_Entries << " (!=0) = " << NotEnoughEntries << std::endl
781  << std::endl;
782  Rep << "- NR.OF HISTOS WITH 0 ENTRIES = " << ZeroEntries << std::endl << std::endl << std::endl;
783  Rep << "- NR.OF GOOD FIT (FIRST IT + SECOND IT GOOD FIT)= " << GoodFit << std::endl << std::endl;
784  Rep << "- NR.OF FIRST IT GOOD FIT = " << FirstIT_goodfit << std::endl << std::endl;
785  Rep << "- NR.OF SECOND IT GOOD FIT = " << SecondIT_goodfit << std::endl << std::endl;
786  Rep << "- NR.OF FIRST IT BAD FIT = " << FirstIT_badfit << std::endl << std::endl;
787  Rep << "- NR.OF SECOND IT BAD FIT = " << SecondIT_badfit << std::endl << std::endl << std::endl;
788 
789  Rep << "--------------- Mean MuH values per Layer -------------------" << std::endl << std::endl << std::endl;
790  Rep << "TIB1 = " << mean_TIB1 << " +- " << err_mean_TIB1 << " RMS = " << rms_TIB1 << std::endl;
791  Rep << "TIB2 = " << mean_TIB2 << " +- " << err_mean_TIB2 << " RMS = " << rms_TIB2 << std::endl;
792  Rep << "TIB3 = " << mean_TIB3 << " +- " << err_mean_TIB3 << " RMS = " << rms_TIB3 << std::endl;
793  Rep << "TIB4 = " << mean_TIB4 << " +- " << err_mean_TIB4 << " RMS = " << rms_TIB4 << std::endl;
794  Rep << "TOB1 = " << mean_TOB1 << " +- " << err_mean_TOB1 << " RMS = " << rms_TOB1 << std::endl;
795  Rep << "TOB2 = " << mean_TOB2 << " +- " << err_mean_TOB2 << " RMS = " << rms_TOB2 << std::endl;
796  Rep << "TOB3 = " << mean_TOB3 << " +- " << err_mean_TOB3 << " RMS = " << rms_TOB3 << std::endl;
797  Rep << "TOB4 = " << mean_TOB4 << " +- " << err_mean_TOB4 << " RMS = " << rms_TOB4 << std::endl;
798  Rep << "TOB5 = " << mean_TOB5 << " +- " << err_mean_TOB5 << " RMS = " << rms_TOB5 << std::endl;
799  Rep << "TOB6 = " << mean_TOB6 << " +- " << err_mean_TOB6 << " RMS = " << rms_TOB6 << std::endl << std::endl;
800  Rep << "Mean Hall Mobility TIB = " << meanMobility_TIB << " +- " << TIB_graph->GetFunction("fit_TIB")->GetParError(0)
801  << std::endl;
802  Rep << "Mean Hall Mobility TOB = " << meanMobility_TOB << " +- " << TOB_graph->GetFunction("fit_TOB")->GetParError(0)
803  << std::endl
804  << std::endl
805  << std::endl;
806 
807  Rep.close();
808  NoEntries.close();
809 
810  hFile->Write();
811  hFile->Close();
812 }
813 
814 // Virtual destructor needed.
815 
817 
818 // Analyzer: Functions that gets called by framework every event
819 
820 std::unique_ptr<SiStripLorentzAngle> SiStripCalibLorentzAngle::getNewObject() {
821  auto LorentzAngle = std::make_unique<SiStripLorentzAngle>();
822 
823  if (!LayerDB) {
824  for (std::map<uint32_t, float>::iterator it = detid_la.begin(); it != detid_la.end(); it++) {
825  float langle = it->second;
826  if (!LorentzAngle->putLorentzAngle(it->first, langle))
827  edm::LogError("SiStripCalibLorentzAngle")
828  << "[SiStripCalibLorentzAngle::analyze] detid already exists" << std::endl;
829  }
830  }
831 
832  else {
834  TrackerGeometry::DetIdContainer::const_iterator Iditer;
835 
836  for (Iditer = Id.begin(); Iditer != Id.end(); Iditer++) {
837  StripSubdetector subid(Iditer->rawId());
838 
839  hallMobility = 0.;
840 
841  if (subid.subdetId() == int(StripSubdetector::TIB)) {
842  uint32_t tibLayer = tTopo->tibLayer(*Iditer);
843  if (tibLayer == 1) {
845  }
846  if (tibLayer == 2) {
848  }
849  if (tibLayer == 3) {
851  }
852  if (tibLayer == 4) {
854  }
855  if (!LorentzAngle->putLorentzAngle(Iditer->rawId(), hallMobility))
856  edm::LogError("SiStripLorentzAngleGenerator") << " detid already exists" << std::endl;
857  }
858 
859  if (subid.subdetId() == int(StripSubdetector::TOB)) {
860  uint32_t tobLayer = tTopo->tobLayer(*Iditer);
861  if (tobLayer == 1) {
863  }
864  if (tobLayer == 2) {
866  }
867  if (tobLayer == 3) {
869  }
870  if (tobLayer == 4) {
872  }
873  if (tobLayer == 5) {
875  }
876  if (tobLayer == 6) {
878  }
879  if (!LorentzAngle->putLorentzAngle(Iditer->rawId(), hallMobility))
880  edm::LogError("SiStripLorentzAngleGenerator") << " detid already exists" << std::endl;
881  }
882 
883  if (subid.subdetId() == int(StripSubdetector::TID)) {
885  if (!LorentzAngle->putLorentzAngle(Iditer->rawId(), hallMobility))
886  edm::LogError("SiStripLorentzAngleGenerator") << " detid already exists" << std::endl;
887  }
888 
889  if (subid.subdetId() == int(StripSubdetector::TEC)) {
890  if (tTopo->tecRing(subid) < 5) {
892  } else {
894  }
895  if (!LorentzAngle->putLorentzAngle(Iditer->rawId(), hallMobility))
896  edm::LogError("SiStripLorentzAngleGenerator") << " detid already exists" << std::endl;
897  }
898  }
899  }
900 
901  return LorentzAngle;
902 }
Vector3DBase< float, LocalTag >
SiStripCalibLorentzAngle::mean_TIB2
float mean_TIB2
Definition: SiStripCalibLorentzAngle.h:71
SiStripCalibLorentzAngle::TOB_MuH
TDirectory * TOB_MuH
Definition: SiStripCalibLorentzAngle.h:82
edm::ESHandle::product
T const * product() const
Definition: ESHandle.h:86
SiStripCalibLorentzAngle::mean_TOB4
float mean_TOB4
Definition: SiStripCalibLorentzAngle.h:71
MagneticField::inTesla
virtual GlobalVector inTesla(const GlobalPoint &gp) const =0
Field value ad specified global point, in Tesla.
SiStripCalibLorentzAngle::TH1Ds
TH1Dmap TH1Ds
Definition: SiStripCalibLorentzAngle.h:60
StripGeomDetUnit.h
SiStripHistoId.h
SiStripCalibLorentzAngle::MuH_vs_Phi
TDirectory * MuH_vs_Phi
Definition: SiStripCalibLorentzAngle.h:82
GeomDet
Definition: GeomDet.h:27
SiStripSimParameters_cfi.LorentzAngle
LorentzAngle
Definition: SiStripSimParameters_cfi.py:93
SiStripCalibLorentzAngle::TOB_1IT_GoodFit
TDirectory * TOB_1IT_GoodFit
Definition: SiStripCalibLorentzAngle.h:84
ESHandle.h
SiStripCalibLorentzAngle::FirstIT_GoodFit_Histos
TDirectory * FirstIT_GoodFit_Histos
Definition: SiStripCalibLorentzAngle.h:84
SiStripCalibLorentzAngle::meanMobility_TOB
float meanMobility_TOB
Definition: SiStripCalibLorentzAngle.h:73
SiStripCalibLorentzAngle::hallMobility
float hallMobility
Definition: SiStripCalibLorentzAngle.h:73
PV3DBase::x
T x() const
Definition: PV3DBase.h:59
SiStripCalibLorentzAngle::fitfunc
TF1 * fitfunc
Definition: SiStripCalibLorentzAngle.h:65
SiStripCalibLorentzAngle::hFile
TFile * hFile
Definition: SiStripCalibLorentzAngle.h:80
SiStripCalibLorentzAngle::SiStripCalibLorentzAngle
SiStripCalibLorentzAngle(const edm::ParameterSet &conf)
Definition: SiStripCalibLorentzAngle.cc:22
SiStripCalibLorentzAngle::magfield_
edm::ESHandle< MagneticField > magfield_
Definition: SiStripCalibLorentzAngle.h:52
SiStripCalibLorentzAngle::TIB_Phi
TDirectory * TIB_Phi
Definition: SiStripCalibLorentzAngle.h:82
AlCaHLTBitMon_ParallelJobs.p
p
Definition: AlCaHLTBitMon_ParallelJobs.py:153
StripSubdetector::stereo
unsigned int stereo() const
stereo
Definition: StripSubdetector.h:46
StripSubdetector
Definition: StripSubdetector.h:12
edm::LogInfo
Definition: MessageLogger.h:254
SiStripCalibLorentzAngle::conf_
edm::ParameterSet conf_
Definition: SiStripCalibLorentzAngle.h:88
SiStripCalibLorentzAngle::geta
float geta
Definition: SiStripCalibLorentzAngle.h:67
SiStripCalibLorentzAngle::TOB
int TOB
Definition: SiStripCalibLorentzAngle.h:68
timingPdfMaker.histo
histo
Definition: timingPdfMaker.py:279
DQMStore.h
GeomDet::topology
virtual const Topology & topology() const
Definition: GeomDet.cc:67
ExtractTObject.h
SiStripCalibLorentzAngle::SecondIT_BadFit_Histos
TDirectory * SecondIT_BadFit_Histos
Definition: SiStripCalibLorentzAngle.h:84
edm::ParameterSet::getUntrackedParameter
T getUntrackedParameter(std::string const &, T const &) const
SiStripCalibLorentzAngle::gz
float gz
Definition: SiStripCalibLorentzAngle.h:67
SiStripCalibLorentzAngle::theBfield
float theBfield
Definition: SiStripCalibLorentzAngle.h:67
StripTopology.h
align::LocalPoint
Point3DBase< Scalar, LocalTag > LocalPoint
Definition: Definitions.h:30
SiStripCalibLorentzAngle::TIB_2IT_GoodFit
TDirectory * TIB_2IT_GoodFit
Definition: SiStripCalibLorentzAngle.h:84
SiStripCalibLorentzAngle::muH
float muH
Definition: SiStripCalibLorentzAngle.h:67
dqm::implementation::IGetter::getAllContents
virtual std::vector< dqm::harvesting::MonitorElement * > getAllContents(std::string const &path) const
Definition: DQMStore.cc:609
SiStripCalibLorentzAngle::ModuleTree
TTree * ModuleTree
Definition: SiStripCalibLorentzAngle.h:79
ExtractTObject
Definition: ExtractTObject.h:9
SiStripCalibLorentzAngle::badFit
int badFit
Definition: SiStripCalibLorentzAngle.h:68
SiStripCalibLorentzAngle::MonoStereo
int MonoStereo
Definition: SiStripCalibLorentzAngle.h:68
StripTopology::localPitch
virtual float localPitch(const LocalPoint &) const =0
SiStripCalibLorentzAngle::tracker
const TrackerGeometry * tracker
Definition: SiStripCalibLorentzAngle.h:54
SiStripCalibLorentzAngle::tTopo
const TrackerTopology * tTopo
Definition: SiStripCalibLorentzAngle.h:55
SiStripCalibLorentzAngle::mean_TOB2
float mean_TOB2
Definition: SiStripCalibLorentzAngle.h:71
SiStripCalibLorentzAngle::meanMobility_TIB
float meanMobility_TIB
Definition: SiStripCalibLorentzAngle.h:73
SiStripCalibLorentzAngle::mean_TIB1
float mean_TIB1
Definition: SiStripCalibLorentzAngle.h:71
SiStripCalibLorentzAngle::gposition
const GlobalPoint gposition
Definition: SiStripCalibLorentzAngle.h:69
TrackerGeometry::idToDetUnit
const TrackerGeomDet * idToDetUnit(DetId) const override
Return the pointer to the GeomDetUnit corresponding to a given DetId.
Definition: TrackerGeometry.cc:183
PV3DBase::z
T z() const
Definition: PV3DBase.h:61
IdealMagneticFieldRecord
Definition: IdealMagneticFieldRecord.h:11
DetId
Definition: DetId.h:17
GeomDet::surface
const Plane & surface() const
The nominal surface of the GeomDet.
Definition: GeomDet.h:37
TrackerTopology.h
SiStripCalibLorentzAngle::gR
float gR
Definition: SiStripCalibLorentzAngle.h:67
SiStripLorentzAngle
Definition: SiStripLorentzAngle.h:26
PoolDBOutputService.h
TrackerTopologyRcd.h
SiStripCalibLorentzAngle::CalibByMC
bool CalibByMC
Definition: SiStripCalibLorentzAngle.h:75
ConditionDBWriter
Definition: ConditionDBWriter.h:149
dqm::legacy::DQMStore
Definition: DQMStore.h:727
SiStripCalibLorentzAngle::TOB_graph
TGraphErrors * TOB_graph
Definition: SiStripCalibLorentzAngle.h:77
SiStripCalibLorentzAngle::MuH
TDirectory * MuH
Definition: SiStripCalibLorentzAngle.h:82
SiStripCalibLorentzAngle::globalX
float globalX
Definition: SiStripCalibLorentzAngle.h:67
Calorimetry_cff.thickness
thickness
Definition: Calorimetry_cff.py:114
Service.h
SiStripCalibLorentzAngle::globalZ
float globalZ
Definition: SiStripCalibLorentzAngle.h:67
TrackerDigiGeometryRecord
Definition: TrackerDigiGeometryRecord.h:15
mathSSE::sqrt
T sqrt(T t)
Definition: SSEVec.h:19
Surface::bounds
const Bounds & bounds() const
Definition: Surface.h:87
SiStripCalibLorentzAngle::algoBeginJob
void algoBeginJob(const edm::EventSetup &) override
Definition: SiStripCalibLorentzAngle.cc:25
SiStripHistoId::getComponentId
uint32_t getComponentId(std::string histoid)
Definition: SiStripHistoId.cc:143
edm::ESHandle< TrackerTopology >
SiStripCalibLorentzAngle::SecondIT_GoodFit_Histos
TDirectory * SecondIT_GoodFit_Histos
Definition: SiStripCalibLorentzAngle.h:84
SiStripCalibLorentzAngle::TIB_graph
TGraphErrors * TIB_graph
Definition: SiStripCalibLorentzAngle.h:77
SiStripCalibLorentzAngle::TIB_Eta
TDirectory * TIB_Eta
Definition: SiStripCalibLorentzAngle.h:82
StripSubdetector::TIB
static constexpr auto TIB
Definition: StripSubdetector.h:16
dbe_
dqm::legacy::DQMStore * dbe_
Definition: PFJetBenchmarkAnalyzer.cc:77
SiStripCalibLorentzAngle::fitfunc2IT
TF1 * fitfunc2IT
Definition: SiStripCalibLorentzAngle.h:65
SiStripCalibLorentzAngle::TIB_1IT_GoodFit
TDirectory * TIB_1IT_GoodFit
Definition: SiStripCalibLorentzAngle.h:84
Point3DBase< float, LocalTag >
SiStripCalibLorentzAngle::mean_TIB3
float mean_TIB3
Definition: SiStripCalibLorentzAngle.h:71
DetId::subdetId
constexpr int subdetId() const
get the contents of the subdetector field (not cast into any detector's numbering enum)
Definition: DetId.h:48
AlCaHLTBitMon_QueryRunRegistry.string
string
Definition: AlCaHLTBitMon_QueryRunRegistry.py:256
SiStripCalibLorentzAngle::getNewObject
std::unique_ptr< SiStripLorentzAngle > getNewObject() override
Definition: SiStripCalibLorentzAngle.cc:820
SiStripCalibLorentzAngle::estracker
edm::ESHandle< TrackerGeometry > estracker
Definition: SiStripCalibLorentzAngle.h:51
SiStripCalibLorentzAngle::TIB
int TIB
Definition: SiStripCalibLorentzAngle.h:68
TrackingGeometry::DetIdContainer
std::vector< DetId > DetIdContainer
Definition: TrackingGeometry.h:30
SiStripLorentzAngleRcd.h
SiStripCalibLorentzAngle::mean_TOB1
float mean_TOB1
Definition: SiStripCalibLorentzAngle.h:71
SiStripCalibLorentzAngle::mean_TOB3
float mean_TOB3
Definition: SiStripCalibLorentzAngle.h:71
TrackerDigiGeometryRecord.h
Bounds::thickness
virtual float thickness() const =0
edm::ParameterSet
Definition: ParameterSet.h:36
edm::LogError
Definition: MessageLogger.h:183
SiStripCalibLorentzAngle::TOB_2IT_GoodFit
TDirectory * TOB_2IT_GoodFit
Definition: SiStripCalibLorentzAngle.h:84
SiStripCalibLorentzAngle::TH2Ds
TH2Dmap TH2Ds
Definition: SiStripCalibLorentzAngle.h:62
SiStripCalibLorentzAngle::mean_TOB6
float mean_TOB6
Definition: SiStripCalibLorentzAngle.h:71
PV3DBase::eta
T eta() const
Definition: PV3DBase.h:73
SiStripCalibLorentzAngle::FitFunction2IT
TF1 * FitFunction2IT
Definition: SiStripCalibLorentzAngle.h:65
PV3DBase::y
T y() const
Definition: PV3DBase.h:60
SiStripCalibLorentzAngle::MuH_vs_Eta
TDirectory * MuH_vs_Eta
Definition: SiStripCalibLorentzAngle.h:82
edm::Service
Definition: Service.h:30
createfilelist.int
int
Definition: createfilelist.py:10
SiStripCalibLorentzAngle::Profiles
ProfileMap Profiles
Definition: SiStripCalibLorentzAngle.h:58
SiStripLorentzAngleRcd
Definition: SiStripCondDataRecords.h:25
TrackerTopology::tecRing
unsigned int tecRing(const DetId &id) const
ring id
Definition: TrackerTopology.h:217
SiStripCalibLorentzAngle::FitFunction
TF1 * FitFunction
Definition: SiStripCalibLorentzAngle.h:65
ExtractTObject::extract
static T * extract(MonitorElement *me)
Definition: ExtractTObject.cc:21
SiStripCalibLorentzAngle::TIB_MuH
TDirectory * TIB_MuH
Definition: SiStripCalibLorentzAngle.h:82
SiStripCalibLorentzAngle::detid_la
std::map< uint32_t, float > detid_la
Definition: SiStripCalibLorentzAngle.h:87
MagneticField.h
SiStripCalibLorentzAngle.h
edm::EventSetup
Definition: EventSetup.h:57
GeomDet::specificSurface
const Plane & specificSurface() const
Same as surface(), kept for backward compatibility.
Definition: GeomDet.h:40
HltBtagPostValidation_cff.c
c
Definition: HltBtagPostValidation_cff.py:31
SiStripCalibLorentzAngle::TOB_2IT_BadFit
TDirectory * TOB_2IT_BadFit
Definition: SiStripCalibLorentzAngle.h:84
get
#define get
SiStripCalibLorentzAngle::goodFit
int goodFit
Definition: SiStripCalibLorentzAngle.h:68
SiStripCalibLorentzAngle::LayerDB
bool LayerDB
Definition: SiStripCalibLorentzAngle.h:75
SiStripCalibLorentzAngle::globalY
float globalY
Definition: SiStripCalibLorentzAngle.h:67
SiStripCalibLorentzAngle::histolist
std::vector< MonitorElement * > histolist
Definition: SiStripCalibLorentzAngle.h:63
PV3DBase::mag
T mag() const
Definition: PV3DBase.h:64
edm::ParameterSet::getParameter
T getParameter(std::string const &) const
GloballyPositioned::position
const PositionType & position() const
Definition: GloballyPositioned.h:36
SiStripCalibLorentzAngle::TOB_Eta
TDirectory * TOB_Eta
Definition: SiStripCalibLorentzAngle.h:82
SiStripHistoId
Definition: SiStripHistoId.h:25
TrackerTopology::tobLayer
unsigned int tobLayer(const DetId &id) const
Definition: TrackerTopology.h:147
SiStripCalibLorentzAngle::mean_TIB4
float mean_TIB4
Definition: SiStripCalibLorentzAngle.h:71
SiStripLorentzAngle::getLorentzAngles
const std::map< unsigned int, float > & getLorentzAngles() const
Definition: SiStripLorentzAngle.h:32
StripSubdetector::TEC
static constexpr auto TEC
Definition: StripSubdetector.h:19
triggerObjects_cff.id
id
Definition: triggerObjects_cff.py:31
SiStripCalibLorentzAngle::TIB_2IT_BadFit
TDirectory * TIB_2IT_BadFit
Definition: SiStripCalibLorentzAngle.h:84
SiStripCalibLorentzAngle::Rootple
TDirectory * Rootple
Definition: SiStripCalibLorentzAngle.h:82
toLocal
LocalVector toLocal(const reco::Track::Vector &v, const Surface &s)
Definition: ConversionProducer.h:192
StripSubdetector::TOB
static constexpr auto TOB
Definition: StripSubdetector.h:18
SiStripCalibLorentzAngle::goodFit1IT
int goodFit1IT
Definition: SiStripCalibLorentzAngle.h:68
Skims_PA_cff.name
name
Definition: Skims_PA_cff.py:17
dqm::implementation::DQMStore::open
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)
Definition: DQMStore.cc:766
TrackerGeometry::detIds
const DetIdContainer & detIds() const override
Returm a vector of all GeomDet DetIds (including those of GeomDetUnits)
Definition: TrackerGeometry.h:64
funct::pow
Power< A, B >::type pow(const A &a, const B &b)
Definition: Power.h:30
TrackerTopologyRcd
Definition: TrackerTopologyRcd.h:10
SiStripCalibLorentzAngle::histoEntries
float histoEntries
Definition: SiStripCalibLorentzAngle.h:67
SiStripCalibLorentzAngle::Layer
int Layer
Definition: SiStripCalibLorentzAngle.h:68
StripTopology
Definition: StripTopology.h:11
StripSubdetector.h
SiStripCalibLorentzAngle::mean_TOB5
float mean_TOB5
Definition: SiStripCalibLorentzAngle.h:71
PV3DBase::phi
Geom::Phi< T > phi() const
Definition: PV3DBase.h:66
SiStripCalibLorentzAngle::~SiStripCalibLorentzAngle
~SiStripCalibLorentzAngle() override
Definition: SiStripCalibLorentzAngle.cc:816
StripSubdetector::TID
static constexpr auto TID
Definition: StripSubdetector.h:17
SiStripCalibLorentzAngle::gphi
float gphi
Definition: SiStripCalibLorentzAngle.h:67
SiStripCalibLorentzAngle::LorentzAngle_Plots
TDirectory * LorentzAngle_Plots
Definition: SiStripCalibLorentzAngle.h:82
SiStripCalibLorentzAngle::TOB_Phi
TDirectory * TOB_Phi
Definition: SiStripCalibLorentzAngle.h:82
StripGeomDetUnit
Definition: StripGeomDetUnit.h:15
TrackerTopology::tibLayer
unsigned int tibLayer(const DetId &id) const
Definition: TrackerTopology.h:150