CMS 3D CMS Logo

MaterialBudgetHGCalHistos.cc
Go to the documentation of this file.
3 
4 template <class T> const T& max ( const T& a, const T& b ) {
5  return (b<a)?a:b; // or: return comp(b,a)?a:b; for the comp version
6 }
7 
8 
9 
10 MaterialBudgetHGCalHistos::MaterialBudgetHGCalHistos(std::shared_ptr<MaterialBudgetData> data,
11  std::shared_ptr<TestHistoMgr> mgr,
12  const std::string& fileName )
13  : MaterialBudgetFormat( data ),
14  hmgr(mgr)
15 {
17  book();
18 }
19 
20 
22 {
23  std::cout << "=== booking user histos ===" << std::endl;
24 
25  // Parameters for 2D histograms
26  // Make z 1mm per bin
27  int nzbin = 11000;
28  float zMax = 5500.;//
29  float zMin = -5500.;//
30  // Make r 1cm per bin
31  int nrbin = 345;
32  float rMin = -50.;
33  float rMax = 3400.;
34  // eta
35  int netabin = 250;
36  float etaMin = -5.;
37  float etaMax = 5.;
38  // phi
39  int nphibin = 180;
40  float phiMin = -3.2;
41  float phiMax = 3.2;
42  // R for profile histos
43  int nRbin = 300;
44  float RMin = 0.;
45  float RMax = 3000.;
46 
47  // total X0
48  hmgr->addHistoProf1( new TProfile("10", "MB prof Eta;#eta;x/X_{0} ", netabin, etaMin, etaMax ) );
49  hmgr->addHisto1( new TH1F("11", "Eta " , netabin, etaMin, etaMax ) );
50  hmgr->addHistoProf1( new TProfile("20", "MB prof Phi;#varphi [rad];x/X_{0} ", nphibin, phiMin, phiMax ) );
51  hmgr->addHisto1( new TH1F("21", "Phi " , nphibin, phiMin, phiMax ) );
52  hmgr->addHistoProf2( new TProfile2D("30", "MB prof Eta Phi;#eta;#varphi;x/X_{0} ", netabin, etaMin, etaMax, nphibin, phiMin, phiMax) );
53  hmgr->addHisto2( new TH2F("31", "Eta vs Phi " , netabin, etaMin, etaMax, nphibin, phiMin, phiMax ) );
54  hmgr->addHistoProf1( new TProfile("40", "MB prof R;R [mm];x/X_{0} ", nRbin, RMin, RMax ) );
55  hmgr->addHisto1( new TH1F("41", "R " , nRbin, RMin, RMax ) );
56  hmgr->addHistoProf2( new TProfile2D("50", "MB prof sum R z;z [mm];R [mm];x/X_{0} ", nzbin, zMin, zMax, nrbin, rMin, rMax ) );
57  hmgr->addHisto2( new TH2F("999", "Tot track length for MB", nzbin, zMin, zMax, nrbin, rMin, rMax ) );
58  hmgr->addHisto2( new TH2F("51", "R vs z " , nzbin, zMin, zMax, nrbin, rMin, rMax ) );
59  hmgr->addHistoProf2( new TProfile2D("52", "MB ortho prof sum R z;z [mm];R [mm];x/X_{0} ", nzbin, zMin, zMax, nrbin, rMin, rMax ) );
60  hmgr->addHisto2( new TH2F("60", "MB prof local R z;z [mm];R [mm];x/X_{0} ", nzbin, zMin, zMax, nrbin, rMin, rMax ) );
61  hmgr->addHistoProf2( new TProfile2D("70", "MB prof local R z;z [mm];R [mm];x/X_{0} ", nzbin, zMin, zMax, nrbin, rMin, rMax ) );
62  hmgr->addHistoProf2( new TProfile2D("72", "MB ortho prof local R z;z [mm];R [mm];x/X_{0} ", nzbin, zMin, zMax, nrbin, rMin, rMax ) );
63 
64  // Copper
65  hmgr->addHistoProf1( new TProfile("110", "MB prof Eta [Copper];#eta;x/X_{0}", netabin, etaMin, etaMax ) );
66  hmgr->addHistoProf1( new TProfile("120", "MB prof Phi [Copper];#varphi [rad];x/X_{0}", nphibin, phiMin, phiMax ) );
67  hmgr->addHistoProf2( new TProfile2D("130", "MB prof Eta Phi [Copper];#eta;#varphi;x/X_{0}", netabin, etaMin, etaMax, nphibin, phiMin, phiMax ) );
68  hmgr->addHistoProf1( new TProfile("140", "MB prof R [Copper];R [mm];x/X_{0}", nRbin, RMin, RMax ) );
69  hmgr->addHistoProf2( new TProfile2D("150", "MB prof sum R z [Copper];z [mm];R [mm];x/X_{0} ", nzbin, zMin, zMax, nrbin, rMin, rMax ) );
70  hmgr->addHistoProf2( new TProfile2D("152", "MB ortho prof sum R z [Copper];z [mm];R [mm];x/X_{0} ", nzbin, zMin, zMax, nrbin, rMin, rMax ) );
71  hmgr->addHisto2( new TH2F("160", "MB prof local R z [Copper];z [mm];R [mm];x/X_{0} ", nzbin, zMin, zMax, nrbin, rMin, rMax ) );
72  hmgr->addHistoProf2( new TProfile2D("170", "MB prof local R z [Copper];z [mm];R [mm];x/X_{0} ", nzbin, zMin, zMax, nrbin, rMin, rMax ) );
73  hmgr->addHistoProf2( new TProfile2D("172", "MB ortho prof local R z [Copper];z [mm];R [mm];x/X_{0} ", nzbin, zMin, zMax, nrbin, rMin, rMax ) );
74 
75  // H_Scintillator
76  hmgr->addHistoProf1( new TProfile("210", "MB prof Eta [Scintillator];#eta;x/X_{0}", netabin, etaMin, etaMax ) );
77  hmgr->addHistoProf1( new TProfile("220", "MB prof Phi [Scintillator];#varphi [rad];x/X_{0}", nphibin, phiMin, phiMax ) );
78  hmgr->addHistoProf2( new TProfile2D("230", "MB prof Eta Phi [Scintillator];#eta;#varphi;x/X_{0}", netabin, etaMin, etaMax, nphibin, phiMin, phiMax ) );
79  hmgr->addHistoProf1( new TProfile("240", "MB prof R [Scintillator];R [mm];x/X_{0}", nRbin, RMin, RMax ) );
80  hmgr->addHistoProf2( new TProfile2D("250", "MB prof sum R z [Scintillator];z [mm];R [mm];x/X_{0} ", nzbin, zMin, zMax, nrbin, rMin, rMax ) );
81  hmgr->addHistoProf2( new TProfile2D("252", "MB ortho prof sum R z [Scintillator];z [mm];R [mm];x/X_{0} ", nzbin, zMin, zMax, nrbin, rMin, rMax ) );
82  hmgr->addHisto2( new TH2F("260", "MB prof local R z [Scintillator];z [mm];R [mm];x/X_{0} ", nzbin, zMin, zMax, nrbin, rMin, rMax ) );
83  hmgr->addHistoProf2( new TProfile2D("270", "MB prof local R z [Scintillator];z [mm];R [mm];x/X_{0} ", nzbin, zMin, zMax, nrbin, rMin, rMax ) );
84  hmgr->addHistoProf2( new TProfile2D("272", "MB ortho prof local R z [Scintillator];z [mm];R [mm];x/X_{0} ", nzbin, zMin, zMax, nrbin, rMin, rMax ) );
85 
86  // Cables
87  hmgr->addHistoProf1( new TProfile("310", "MB prof Eta [Cables];#eta;x/X_{0}", netabin, etaMin, etaMax ) );
88  hmgr->addHistoProf1( new TProfile("320", "MB prof Phi [Cables];#varphi [rad];x/X_{0}", nphibin, phiMin, phiMax ) );
89  hmgr->addHistoProf2( new TProfile2D("330", "MB prof Eta Phi [Cables];#eta;#varphi;x/X_{0}", netabin, etaMin, etaMax, nphibin, phiMin, phiMax ) );
90  hmgr->addHistoProf1( new TProfile("340", "MB prof R [Cables];R [mm];x/X_{0}", nRbin, RMin, RMax ) );
91  hmgr->addHistoProf2( new TProfile2D("350", "MB prof sum R z [Cables];z [mm];R [mm];x/X_{0} ", nzbin, zMin, zMax, nrbin, rMin, rMax ) );
92  hmgr->addHistoProf2( new TProfile2D("352", "MB ortho prof sum R z [Cables];z [mm];R [mm];x/X_{0} ", nzbin, zMin, zMax, nrbin, rMin, rMax ) );
93  hmgr->addHisto2( new TH2F("360", "MB prof local R z [Cables];z [mm];R [mm];x/X_{0} ", nzbin, zMin, zMax, nrbin, rMin, rMax ) );
94  hmgr->addHistoProf2( new TProfile2D("370", "MB prof local R z [Cables];z [mm];R [mm];x/X_{0} ", nzbin, zMin, zMax, nrbin, rMin, rMax ) );
95  hmgr->addHistoProf2( new TProfile2D("372", "MB ortho prof local R z [Cables];z [mm];R [mm];x/X_{0} ", nzbin, zMin, zMax, nrbin, rMin, rMax ) );
96 
97  // HGC_G10_FR4
98  hmgr->addHistoProf1( new TProfile("410", "MB prof Eta [HGC_G10_FR4];#eta;x/X_{0}", netabin, etaMin, etaMax ) );
99  hmgr->addHistoProf1( new TProfile("420", "MB prof Phi [HGC_G10_FR4];#varphi [rad];x/X_{0}", nphibin, phiMin, phiMax ) );
100  hmgr->addHistoProf2( new TProfile2D("430", "MB prof Eta Phi [HGC_G10_FR4];#eta;#varphi;x/X_{0}", netabin, etaMin, etaMax, nphibin, phiMin, phiMax ) );
101  hmgr->addHistoProf1( new TProfile("440", "MB prof R [HGC_G10_FR4];R [mm];x/X_{0}", nRbin, RMin, RMax ) );
102  hmgr->addHistoProf2( new TProfile2D("450", "MB prof sum R z [HGC_G10_FR4];z [mm];R [mm];x/X_{0} ", nzbin, zMin, zMax, nrbin, rMin, rMax ) );
103  hmgr->addHistoProf2( new TProfile2D("452", "MB ortho prof sum R z [HGC_G10_FR4];z [mm];R [mm];x/X_{0} ", nzbin, zMin, zMax, nrbin, rMin, rMax ) );
104  hmgr->addHisto2( new TH2F("460", "MB prof local R z [HGC_G10_FR4];z [mm];R [mm];x/X_{0} ", nzbin, zMin, zMax, nrbin, rMin, rMax ) );
105  hmgr->addHistoProf2( new TProfile2D("470", "MB prof local R z [HGC_G10_FR4];z [mm];R [mm];x/X_{0} ", nzbin, zMin, zMax, nrbin, rMin, rMax ) );
106  hmgr->addHistoProf2( new TProfile2D("472", "MB ortho prof local R z [HGC_G10_FR4];z [mm];R [mm];x/X_{0} ", nzbin, zMin, zMax, nrbin, rMin, rMax ) );
107 
108  // Silicon
109  hmgr->addHistoProf1( new TProfile("510", "MB prof Eta [Silicon];#eta;x/X_{0}", netabin, etaMin, etaMax ) );
110  hmgr->addHistoProf1( new TProfile("520", "MB prof Phi [Silicon];#varphi [rad];x/X_{0}", nphibin, phiMin, phiMax ) );
111  hmgr->addHistoProf2( new TProfile2D("530", "MB prof Eta Phi [Silicon];#eta;#varphi;x/X_{0}", netabin, etaMin, etaMax, nphibin, phiMin, phiMax ) );
112  hmgr->addHistoProf1( new TProfile("540", "MB prof R [Silicon];R [mm];x/X_{0}", nRbin, RMin, RMax ) );
113  hmgr->addHistoProf2( new TProfile2D("550", "MB prof sum R z [Silicon];z [mm];R [mm];x/X_{0} ", nzbin, zMin, zMax, nrbin, rMin, rMax ) );
114  hmgr->addHistoProf2( new TProfile2D("552", "MB ortho prof sum R z [Silicon];z [mm];R [mm];x/X_{0} ", nzbin, zMin, zMax, nrbin, rMin, rMax ) );
115  hmgr->addHisto2( new TH2F("560", "MB prof local R z [Silicon];z [mm];R [mm];x/X_{0} ", nzbin, zMin, zMax, nrbin, rMin, rMax ) );
116  hmgr->addHistoProf2( new TProfile2D("570", "MB prof local R z [Silicon];z [mm];R [mm];x/X_{0} ", nzbin, zMin, zMax, nrbin, rMin, rMax ) );
117  hmgr->addHistoProf2( new TProfile2D("572", "MB ortho prof local R z [Silicon];z [mm];R [mm];x/X_{0} ", nzbin, zMin, zMax, nrbin, rMin, rMax ) );
118 
119  // Other
120  hmgr->addHistoProf1( new TProfile("610", "MB prof Eta [Other];#eta;x/X_{0}", netabin, etaMin, etaMax ) );
121  hmgr->addHistoProf1( new TProfile("620", "MB prof Phi [Other];#varphi [rad];x/X_{0}", nphibin, phiMin, phiMax ) );
122  hmgr->addHistoProf2( new TProfile2D("630", "MB prof Eta Phi [Other];#eta;#varphi;x/X_{0}", netabin, etaMin, etaMax, nphibin, phiMin, phiMax ) );
123  hmgr->addHistoProf1( new TProfile("640", "MB prof R [Other];R [mm];x/X_{0}", nRbin, RMin, RMax ) );
124  hmgr->addHistoProf2( new TProfile2D("650", "MB prof sum R z [Other];z [mm];R [mm];x/X_{0} ", nzbin, zMin, zMax, nrbin, rMin, rMax ) );
125  hmgr->addHistoProf2( new TProfile2D("652", "MB ortho prof sum R z [Other];z [mm];R [mm];x/X_{0} ", nzbin, zMin, zMax, nrbin, rMin, rMax ) );
126  hmgr->addHisto2( new TH2F("660", "MB prof local R z [Other];z [mm];R [mm];x/X_{0} ", nzbin, zMin, zMax, nrbin, rMin, rMax ) );
127  hmgr->addHistoProf2( new TProfile2D("670", "MB prof local R z [Other];z [mm];R [mm];x/X_{0} ", nzbin, zMin, zMax, nrbin, rMin, rMax ) );
128  hmgr->addHistoProf2( new TProfile2D("672", "MB ortho prof local R z [Other];z [mm];R [mm];x/X_{0} ", nzbin, zMin, zMax, nrbin, rMin, rMax ) );
129 
130  // Air
131  hmgr->addHistoProf1( new TProfile("710", "MB prof Eta [Air];#eta;x/X_{0}", netabin, etaMin, etaMax ) );
132  hmgr->addHistoProf1( new TProfile("720", "MB prof Phi [Air];#varphi [rad];x/X_{0}", nphibin, phiMin, phiMax ) );
133  hmgr->addHistoProf2( new TProfile2D("730", "MB prof Eta Phi [Air];#eta;#varphi;x/X_{0}", netabin, etaMin, etaMax, nphibin, phiMin, phiMax ) );
134  hmgr->addHistoProf1( new TProfile("740", "MB prof R [Air];R [mm];x/X_{0}", nRbin, RMin, RMax ) );
135  hmgr->addHistoProf2( new TProfile2D("750", "MB prof sum R z [Air];z [mm];R [mm];x/X_{0} ", nzbin, zMin, zMax, nrbin, rMin, rMax ) );
136  hmgr->addHistoProf2( new TProfile2D("752", "MB ortho prof sum R z [Air];z [mm];R [mm];x/X_{0} ", nzbin, zMin, zMax, nrbin, rMin, rMax ) );
137  hmgr->addHisto2( new TH2F("760", "MB prof local R z [Air];z [mm];R [mm];x/X_{0} ", nzbin, zMin, zMax, nrbin, rMin, rMax ) );
138  hmgr->addHistoProf2( new TProfile2D("770", "MB prof local R z [Air];z [mm];R [mm];x/X_{0} ", nzbin, zMin, zMax, nrbin, rMin, rMax ) );
139  hmgr->addHistoProf2( new TProfile2D("772", "MB ortho prof local R z [Air];z [mm];R [mm];x/X_{0} ", nzbin, zMin, zMax, nrbin, rMin, rMax ) );
140 
141  //StainlessSteel
142  hmgr->addHistoProf1( new TProfile("810", "MB prof Eta [StainlessSteel];#eta;x/X_{0}", netabin, etaMin, etaMax ) );
143  hmgr->addHistoProf1( new TProfile("820", "MB prof Phi [StainlessSteel];#varphi [rad];x/X_{0}", nphibin, phiMin, phiMax ) );
144  hmgr->addHistoProf2( new TProfile2D("830", "MB prof Eta Phi [StainlessSteel];#eta;#varphi;x/X_{0}", netabin, etaMin, etaMax, nphibin, phiMin, phiMax ) );
145  hmgr->addHistoProf1( new TProfile("840", "MB prof R [StainlessSteel];R [mm];x/X_{0}", nRbin, RMin, RMax ) );
146  hmgr->addHistoProf2( new TProfile2D("850", "MB prof sum R z [StainlessSteel];z [mm];R [mm];x/X_{0} ", nzbin, zMin, zMax, nrbin, rMin, rMax ) );
147  hmgr->addHistoProf2( new TProfile2D("852", "MB ortho prof sum R z [StainlessSteel];z [mm];R [mm];x/X_{0} ", nzbin, zMin, zMax, nrbin, rMin, rMax ) );
148  hmgr->addHisto2( new TH2F("860", "MB prof local R z [StainlessSteel];z [mm];R [mm];x/X_{0} ", nzbin, zMin, zMax, nrbin, rMin, rMax ) );
149  hmgr->addHistoProf2( new TProfile2D("870", "MB prof local R z [StainlessSteel];z [mm];R [mm];x/X_{0} ", nzbin, zMin, zMax, nrbin, rMin, rMax ) );
150  hmgr->addHistoProf2( new TProfile2D("872", "MB ortho prof local R z [StainlessSteel];z [mm];R [mm];x/X_{0} ", nzbin, zMin, zMax, nrbin, rMin, rMax ) );
151 
152  //WCu
153  hmgr->addHistoProf1( new TProfile("910", "MB prof Eta [WCu];#eta;x/X_{0}", netabin, etaMin, etaMax ) );
154  hmgr->addHistoProf1( new TProfile("920", "MB prof Phi [WCu];#varphi [rad];x/X_{0}", nphibin, phiMin, phiMax ) );
155  hmgr->addHistoProf2( new TProfile2D("930", "MB prof Eta Phi [WCu];#eta;#varphi;x/X_{0}", netabin, etaMin, etaMax, nphibin, phiMin, phiMax ) );
156  hmgr->addHistoProf1( new TProfile("940", "MB prof R [WCu];R [mm];x/X_{0}", nRbin, RMin, RMax ) );
157  hmgr->addHistoProf2( new TProfile2D("950", "MB prof sum R z [WCu];z [mm];R [mm];x/X_{0} ", nzbin, zMin, zMax, nrbin, rMin, rMax ) );
158  hmgr->addHistoProf2( new TProfile2D("952", "MB ortho prof sum R z [WCu];z [mm];R [mm];x/X_{0} ", nzbin, zMin, zMax, nrbin, rMin, rMax ) );
159  hmgr->addHisto2( new TH2F("960", "MB prof local R z [WCu];z [mm];R [mm];x/X_{0} ", nzbin, zMin, zMax, nrbin, rMin, rMax ) );
160  hmgr->addHistoProf2( new TProfile2D("970", "MB prof local R z [WCu];z [mm];R [mm];x/X_{0} ", nzbin, zMin, zMax, nrbin, rMin, rMax ) );
161  hmgr->addHistoProf2( new TProfile2D("972", "MB ortho prof local R z [WCu];z [mm];R [mm];x/X_{0} ", nzbin, zMin, zMax, nrbin, rMin, rMax ) );
162 
163  // Lead
164  hmgr->addHistoProf1( new TProfile("1010", "MB prof Eta [Lead];#eta;x/X_{0}", netabin, etaMin, etaMax ) );
165  hmgr->addHistoProf1( new TProfile("1020", "MB prof Phi [Lead];#varphi [rad];x/X_{0}", nphibin, phiMin, phiMax ) );
166  hmgr->addHistoProf2( new TProfile2D("1030", "MB prof Eta Phi [Lead];#eta;#varphi;x/X_{0}", netabin, etaMin, etaMax, nphibin, phiMin, phiMax ) );
167  hmgr->addHistoProf1( new TProfile("1040", "MB prof R [Lead];R [mm];x/X_{0}", nRbin, RMin, RMax ) );
168  hmgr->addHistoProf2( new TProfile2D("1050", "MB prof sum R z [Lead];z [mm];R [mm];x/X_{0} ", nzbin, zMin, zMax, nrbin, rMin, rMax ) );
169  hmgr->addHistoProf2( new TProfile2D("1052", "MB ortho prof sum R z [Lead];z [mm];R [mm];x/X_{0} ", nzbin, zMin, zMax, nrbin, rMin, rMax ) );
170  hmgr->addHisto2( new TH2F("1060", "MB prof local R z [Lead];z [mm];R [mm];x/X_{0} ", nzbin, zMin, zMax, nrbin, rMin, rMax ) );
171  hmgr->addHistoProf2( new TProfile2D("1070", "MB prof local R z [Lead];z [mm];R [mm];x/X_{0} ", nzbin, zMin, zMax, nrbin, rMin, rMax ) );
172  hmgr->addHistoProf2( new TProfile2D("1072", "MB ortho prof local R z [Lead];z [mm];R [mm];x/X_{0} ", nzbin, zMin, zMax, nrbin, rMin, rMax ) );
173 
174  // Epoxy
175  hmgr->addHistoProf1( new TProfile("1110", "MB prof Eta [Epoxy];#eta;x/X_{0}", netabin, etaMin, etaMax ) );
176  hmgr->addHistoProf1( new TProfile("1120", "MB prof Phi [Epoxy];#varphi [rad];x/X_{0}", nphibin, phiMin, phiMax ) );
177  hmgr->addHistoProf2( new TProfile2D("1130", "MB prof Eta Phi [Epoxy];#eta;#varphi;x/X_{0}", netabin, etaMin, etaMax, nphibin, phiMin, phiMax ) );
178  hmgr->addHistoProf1( new TProfile("1140", "MB prof R [Epoxy];R [mm];x/X_{0}", nRbin, RMin, RMax ) );
179  hmgr->addHistoProf2( new TProfile2D("1150", "MB prof sum R z [Epoxy];z [mm];R [mm];x/X_{0} ", nzbin, zMin, zMax, nrbin, rMin, rMax ) );
180  hmgr->addHistoProf2( new TProfile2D("1152", "MB ortho prof sum R z [Epoxy];z [mm];R [mm];x/X_{0} ", nzbin, zMin, zMax, nrbin, rMin, rMax ) );
181  hmgr->addHisto2( new TH2F("1160", "MB prof local R z [Epoxy];z [mm];R [mm];x/X_{0} ", nzbin, zMin, zMax, nrbin, rMin, rMax ) );
182  hmgr->addHistoProf2( new TProfile2D("1170", "MB prof local R z [Epoxy];z [mm];R [mm];x/X_{0} ", nzbin, zMin, zMax, nrbin, rMin, rMax ) );
183  hmgr->addHistoProf2( new TProfile2D("1172", "MB ortho prof local R z [Epoxy];z [mm];R [mm];x/X_{0} ", nzbin, zMin, zMax, nrbin, rMin, rMax ) );
184 
185  // Kapton
186  hmgr->addHistoProf1( new TProfile("1210", "MB prof Eta [Kapton];#eta;x/X_{0}", netabin, etaMin, etaMax ) );
187  hmgr->addHistoProf1( new TProfile("1220", "MB prof Phi [Kapton];#varphi [rad];x/X_{0}", nphibin, phiMin, phiMax ) );
188  hmgr->addHistoProf2( new TProfile2D("1230", "MB prof Eta Phi [Kapton];#eta;#varphi;x/X_{0}", netabin, etaMin, etaMax, nphibin, phiMin, phiMax ) );
189  hmgr->addHistoProf1( new TProfile("1240", "MB prof R [Kapton];R [mm];x/X_{0}", nRbin, RMin, RMax ) );
190  hmgr->addHistoProf2( new TProfile2D("1250", "MB prof sum R z [Kapton];z [mm];R [mm];x/X_{0} ", nzbin, zMin, zMax, nrbin, rMin, rMax ) );
191  hmgr->addHistoProf2( new TProfile2D("1252", "MB ortho prof sum R z [Kapton];z [mm];R [mm];x/X_{0} ", nzbin, zMin, zMax, nrbin, rMin, rMax ) );
192  hmgr->addHisto2( new TH2F("1260", "MB prof local R z [Kapton];z [mm];R [mm];x/X_{0} ", nzbin, zMin, zMax, nrbin, rMin, rMax ) );
193  hmgr->addHistoProf2( new TProfile2D("1270", "MB prof local R z [Kapton];z [mm];R [mm];x/X_{0} ", nzbin, zMin, zMax, nrbin, rMin, rMax ) );
194  hmgr->addHistoProf2( new TProfile2D("1272", "MB ortho prof local R z [Kapton];z [mm];R [mm];x/X_{0} ", nzbin, zMin, zMax, nrbin, rMin, rMax ) );
195 
196  // Aluminium
197  hmgr->addHistoProf1( new TProfile("1310", "MB prof Eta [Aluminium];#eta;x/X_{0}", netabin, etaMin, etaMax ) );
198  hmgr->addHistoProf1( new TProfile("1320", "MB prof Phi [Aluminium];#varphi [rad];x/X_{0}", nphibin, phiMin, phiMax ) );
199  hmgr->addHistoProf2( new TProfile2D("1330", "MB prof Eta Phi [Aluminium];#eta;#varphi;x/X_{0}", netabin, etaMin, etaMax, nphibin, phiMin, phiMax ) );
200  hmgr->addHistoProf1( new TProfile("1340", "MB prof R [Aluminium];R [mm];x/X_{0}", nRbin, RMin, RMax ) );
201  hmgr->addHistoProf2( new TProfile2D("1350", "MB prof sum R z [Aluminium];z [mm];R [mm];x/X_{0} ", nzbin, zMin, zMax, nrbin, rMin, rMax ) );
202  hmgr->addHistoProf2( new TProfile2D("1352", "MB ortho prof sum R z [Aluminium];z [mm];R [mm];x/X_{0} ", nzbin, zMin, zMax, nrbin, rMin, rMax ) );
203  hmgr->addHisto2( new TH2F("1360", "MB prof local R z [Aluminium];z [mm];R [mm];x/X_{0} ", nzbin, zMin, zMax, nrbin, rMin, rMax ) );
204  hmgr->addHistoProf2( new TProfile2D("1370", "MB prof local R z [Aluminium];z [mm];R [mm];x/X_{0} ", nzbin, zMin, zMax, nrbin, rMin, rMax ) );
205  hmgr->addHistoProf2( new TProfile2D("1372", "MB ortho prof local R z [Aluminium];z [mm];R [mm];x/X_{0} ", nzbin, zMin, zMax, nrbin, rMin, rMax ) );
206 
207  //=========================================================================================================
208  // total Lambda0
209  hmgr->addHistoProf1( new TProfile("10010", "IL prof Eta;#eta;#lambda/#lambda_{0} ", netabin, etaMin, etaMax ) );
210  hmgr->addHistoProf1( new TProfile("10020", "IL prof Phi;#varphi [rad];#lambda/#lambda_{0} ", nphibin, phiMin, phiMax ) );
211  hmgr->addHistoProf2( new TProfile2D("10030", "IL prof Eta Phi;#eta;#varphi;#lambda/#lambda_{0} ", netabin, etaMin, etaMax, nphibin, phiMin, phiMax ) );
212 
213  // rr
214  hmgr->addHistoProf1( new TProfile("10040", "IL prof R;R [mm];#lambda/#lambda_{0} ", nRbin, RMin, RMax ) );
215  hmgr->addHistoProf2( new TProfile2D("10050", "IL prof sum R z;z [mm];R [mm];#lambda/#lambda_{0} ", nzbin, zMin, zMax, nrbin, rMin, rMax ) );
216  hmgr->addHistoProf2( new TProfile2D("10052", "IL ortho prof sum R z;z [mm];R [mm];#lambda/#lambda_{0} ", nzbin, zMin, zMax, nrbin, rMin, rMax ) );
217  hmgr->addHisto2( new TH2F("1999", "Tot track length for l0", nzbin, zMin, zMax, nrbin, rMin, rMax ) );
218  hmgr->addHisto2( new TH2F("10060", "IL prof local R z;z [mm];R [mm];x/X_{0} ", nzbin, zMin, zMax, nrbin, rMin, rMax ) );
219  hmgr->addHistoProf2( new TProfile2D("10070", "IL prof local R z;z [mm];R [mm];#lambda/#lambda_{0} ", nzbin, zMin, zMax, nrbin, rMin, rMax ) );
220  hmgr->addHistoProf2( new TProfile2D("10072", "IL ortho prof local R z;z [mm];R [mm];#lambda/#lambda_{0} ", nzbin, zMin, zMax, nrbin, rMin, rMax ) );
221 
222  // Copper
223  hmgr->addHistoProf1( new TProfile("10110", "IL prof Eta [Copper];#eta;#lambda/#lambda_{0}", netabin, etaMin, etaMax ) );
224  hmgr->addHistoProf1( new TProfile("10120", "IL prof Phi [Copper];#varphi [rad];#lambda/#lambda_{0}", nphibin, phiMin, phiMax ) );
225  hmgr->addHistoProf2( new TProfile2D("10130", "IL prof Eta Phi [Copper];#eta;#varphi;#lambda/#lambda_{0}", netabin, etaMin, etaMax, nphibin, phiMin, phiMax ) );
226  hmgr->addHistoProf1( new TProfile("10140", "IL prof R [Copper];R [mm];#lambda/#lambda_{0}", nRbin, RMin, RMax ) );
227  hmgr->addHistoProf2( new TProfile2D("10150", "IL prof sum R z [Copper];z [mm];R [mm];x/X_{0} ", nzbin, zMin, zMax, nrbin, rMin, rMax ) );
228  hmgr->addHistoProf2( new TProfile2D("10152", "IL ortho prof sum R z [Copper];z [mm];R [mm];x/X_{0} ", nzbin, zMin, zMax, nrbin, rMin, rMax ) );
229  hmgr->addHisto2( new TH2F("10160", "IL prof local R z [Copper];z [mm];R [mm];x/X_{0} ", nzbin, zMin, zMax, nrbin, rMin, rMax ) );
230  hmgr->addHistoProf2( new TProfile2D("10170", "IL prof local R z [Copper];z [mm];R [mm];x/X_{0} ", nzbin, zMin, zMax, nrbin, rMin, rMax ) );
231  hmgr->addHistoProf2( new TProfile2D("10172", "IL ortho prof local R z [Copper];z [mm];R [mm];x/X_{0} ", nzbin, zMin, zMax, nrbin, rMin, rMax ) );
232 
233  // H_Scintillator
234  hmgr->addHistoProf1( new TProfile("10210", "IL prof Eta [Scintillator];#eta;#lambda/#lambda_{0}", netabin, etaMin, etaMax ) );
235  hmgr->addHistoProf1( new TProfile("10220", "IL prof Phi [Scintillator];#varphi [rad];#lambda/#lambda_{0}", nphibin, phiMin, phiMax ) );
236  hmgr->addHistoProf2( new TProfile2D("10230", "IL prof Eta Phi [Scintillator];#eta;#varphi;#lambda/#lambda_{0}", netabin, etaMin, etaMax, nphibin, phiMin, phiMax ) );
237  hmgr->addHistoProf1( new TProfile("10240", "IL prof R [Scintillator];R [mm];#lambda/#lambda_{0}", nRbin, RMin, RMax ) );
238  hmgr->addHistoProf2( new TProfile2D("10250", "IL prof sum R z [Scintillator];z [mm];R [mm];x/X_{0} ", nzbin, zMin, zMax, nrbin, rMin, rMax ) );
239  hmgr->addHistoProf2( new TProfile2D("10252", "IL ortho prof sum R z [Scintillator];z [mm];R [mm];x/X_{0} ", nzbin, zMin, zMax, nrbin, rMin, rMax ) );
240  hmgr->addHisto2( new TH2F("10260", "IL prof local R z [Scintillator];z [mm];R [mm];x/X_{0} ", nzbin, zMin, zMax, nrbin, rMin, rMax ) );
241  hmgr->addHistoProf2( new TProfile2D("10270", "IL prof local R z [Scintillator];z [mm];R [mm];x/X_{0} ", nzbin, zMin, zMax, nrbin, rMin, rMax ) );
242  hmgr->addHistoProf2( new TProfile2D("10272", "IL ortho prof local R z [Scintillator];z [mm];R [mm];x/X_{0} ", nzbin, zMin, zMax, nrbin, rMin, rMax ) );
243 
244  // Cables
245  hmgr->addHistoProf1( new TProfile("10310", "IL prof Eta [Cables];#eta;#lambda/#lambda_{0}", netabin, etaMin, etaMax ) );
246  hmgr->addHistoProf1( new TProfile("10320", "IL prof Phi [Cables];#varphi [rad];#lambda/#lambda_{0}", nphibin, phiMin, phiMax ) );
247  hmgr->addHistoProf2( new TProfile2D("10330", "IL prof Eta Phi [Cables];#eta;#varphi;#lambda/#lambda_{0}", netabin, etaMin, etaMax, nphibin, phiMin, phiMax ) );
248  hmgr->addHistoProf1( new TProfile("10340", "IL prof R [Cables];R [mm];#lambda/#lambda_{0}", nRbin, RMin, RMax ) );
249  hmgr->addHistoProf2( new TProfile2D("10350", "IL prof sum R z [Cables];z [mm];R [mm];x/X_{0} ", nzbin, zMin, zMax, nrbin, rMin, rMax ) );
250  hmgr->addHistoProf2( new TProfile2D("10352", "IL ortho prof sum R z [Cables];z [mm];R [mm];x/X_{0} ", nzbin, zMin, zMax, nrbin, rMin, rMax ) );
251  hmgr->addHisto2( new TH2F("10360", "IL prof local R z [Cables];z [mm];R [mm];x/X_{0} ", nzbin, zMin, zMax, nrbin, rMin, rMax ) );
252  hmgr->addHistoProf2( new TProfile2D("10370", "IL prof local R z [Cables];z [mm];R [mm];x/X_{0} ", nzbin, zMin, zMax, nrbin, rMin, rMax ) );
253  hmgr->addHistoProf2( new TProfile2D("10372", "IL ortho prof local R z [Cables];z [mm];R [mm];x/X_{0} ", nzbin, zMin, zMax, nrbin, rMin, rMax ) );
254 
255  // HGC_G10_FR4
256  hmgr->addHistoProf1( new TProfile("10410", "IL prof Eta [HGC_G10_FR4];#eta;#lambda/#lambda_{0}", netabin, etaMin, etaMax ) );
257  hmgr->addHistoProf1( new TProfile("10420", "IL prof Phi [HGC_G10_FR4];#varphi [rad];#lambda/#lambda_{0}", nphibin, phiMin, phiMax ) );
258  hmgr->addHistoProf2( new TProfile2D("10430", "IL prof Eta Phi [HGC_G10_FR4];#eta;#varphi;#lambda/#lambda_{0}", netabin, etaMin, etaMax, nphibin, phiMin, phiMax ) );
259  hmgr->addHistoProf1( new TProfile("10440", "IL prof R [HGC_G10_FR4];R [mm];#lambda/#lambda_{0}", nRbin, RMin, RMax ) );
260  hmgr->addHistoProf2( new TProfile2D("10450", "IL prof sum R z [HGC_G10_FR4];z [mm];R [mm];x/X_{0} ", nzbin, zMin, zMax, nrbin, rMin, rMax ) );
261  hmgr->addHistoProf2( new TProfile2D("10452", "IL ortho prof sum R z [HGC_G10_FR4];z [mm];R [mm];x/X_{0} ", nzbin, zMin, zMax, nrbin, rMin, rMax ) );
262  hmgr->addHisto2( new TH2F("10460", "IL prof local R z [HGC_G10_FR4];z [mm];R [mm];x/X_{0} ", nzbin, zMin, zMax, nrbin, rMin, rMax ) );
263  hmgr->addHistoProf2( new TProfile2D("10470", "IL prof local R z [HGC_G10_FR4];z [mm];R [mm];x/X_{0} ", nzbin, zMin, zMax, nrbin, rMin, rMax ) );
264  hmgr->addHistoProf2( new TProfile2D("10472", "IL ortho prof local R z [HGC_G10_FR4];z [mm];R [mm];x/X_{0} ", nzbin, zMin, zMax, nrbin, rMin, rMax ) );
265 
266  // Silicon
267  hmgr->addHistoProf1( new TProfile("10510", "IL prof Eta [Silicon];#eta;#lambda/#lambda_{0}", netabin, etaMin, etaMax ) );
268  hmgr->addHistoProf1( new TProfile("10520", "IL prof Phi [Silicon];#varphi [rad];#lambda/#lambda_{0}", nphibin, phiMin, phiMax ) );
269  hmgr->addHistoProf2( new TProfile2D("10530", "IL prof Eta Phi [Silicon];#eta;#varphi;#lambda/#lambda_{0}", netabin, etaMin, etaMax, nphibin, phiMin, phiMax ) );
270  hmgr->addHistoProf1( new TProfile("10540", "IL prof R [Silicon];R [mm];#lambda/#lambda_{0}", nRbin, RMin, RMax ) );
271  hmgr->addHistoProf2( new TProfile2D("10550", "IL prof sum R z [Silicon];z [mm];R [mm];x/X_{0} ", nzbin, zMin, zMax, nrbin, rMin, rMax ) );
272  hmgr->addHistoProf2( new TProfile2D("10552", "IL ortho prof sum R z [Silicon];z [mm];R [mm];x/X_{0} ", nzbin, zMin, zMax, nrbin, rMin, rMax ) );
273  hmgr->addHisto2( new TH2F("10560", "IL prof local R z [Silicon];z [mm];R [mm];x/X_{0} ", nzbin, zMin, zMax, nrbin, rMin, rMax ) );
274  hmgr->addHistoProf2( new TProfile2D("10570", "IL prof local R z [Silicon];z [mm];R [mm];x/X_{0} ", nzbin, zMin, zMax, nrbin, rMin, rMax ) );
275  hmgr->addHistoProf2( new TProfile2D("10572", "IL ortho prof local R z [Silicon];z [mm];R [mm];x/X_{0} ", nzbin, zMin, zMax, nrbin, rMin, rMax ) );
276 
277  // Other
278  hmgr->addHistoProf1( new TProfile("10610", "IL prof Eta [Other];#eta;#lambda/#lambda_{0}", netabin, etaMin, etaMax ) );
279  hmgr->addHistoProf1( new TProfile("10620", "IL prof Phi [Other];#varphi [rad];#lambda/#lambda_{0}", nphibin, phiMin, phiMax ) );
280  hmgr->addHistoProf2( new TProfile2D("10630", "IL prof Eta Phi [Other];#eta;#varphi;#lambda/#lambda_{0}", netabin, etaMin, etaMax, nphibin, phiMin, phiMax ) );
281  hmgr->addHistoProf1( new TProfile("10640", "IL prof R [Other];R [mm];#lambda/#lambda_{0}", nRbin, RMin, RMax ) );
282  hmgr->addHistoProf2( new TProfile2D("10650", "IL prof sum R z [Other];z [mm];R [mm];x/X_{0} ", nzbin, zMin, zMax, nrbin, rMin, rMax ) );
283  hmgr->addHistoProf2( new TProfile2D("10652", "IL ortho prof sum R z [Other];z [mm];R [mm];x/X_{0} ", nzbin, zMin, zMax, nrbin, rMin, rMax ) );
284  hmgr->addHisto2( new TH2F("10660", "IL prof local R z [Other];z [mm];R [mm];x/X_{0} ", nzbin, zMin, zMax, nrbin, rMin, rMax ) );
285  hmgr->addHistoProf2( new TProfile2D("10670", "IL prof local R z [Other];z [mm];R [mm];x/X_{0} ", nzbin, zMin, zMax, nrbin, rMin, rMax ) );
286  hmgr->addHistoProf2( new TProfile2D("10672", "IL ortho prof local R z [Other];z [mm];R [mm];x/X_{0} ", nzbin, zMin, zMax, nrbin, rMin, rMax ) );
287 
288  // Air
289  hmgr->addHistoProf1( new TProfile("10710", "IL prof Eta [Air];#eta;#lambda/#lambda_{0}", netabin, etaMin, etaMax ) );
290  hmgr->addHistoProf1( new TProfile("10720", "IL prof Phi [Air];#varphi [rad];#lambda/#lambda_{0}", nphibin, phiMin, phiMax ) );
291  hmgr->addHistoProf2( new TProfile2D("10730", "IL prof Eta Phi [Air];#eta;#varphi;#lambda/#lambda_{0}", netabin, etaMin, etaMax, nphibin, phiMin, phiMax ) );
292  hmgr->addHistoProf1( new TProfile("10740", "IL prof R [Air];R [mm];#lambda/#lambda_{0}", nRbin, RMin, RMax ) );
293  hmgr->addHistoProf2( new TProfile2D("10750", "IL prof sum R z [Air];z [mm];R [mm];x/X_{0} ", nzbin, zMin, zMax, nrbin, rMin, rMax ) );
294  hmgr->addHistoProf2( new TProfile2D("10752", "IL ortho prof sum R z [Air];z [mm];R [mm];x/X_{0} ", nzbin, zMin, zMax, nrbin, rMin, rMax ) );
295  hmgr->addHisto2( new TH2F("10760", "IL prof local R z [Air];z [mm];R [mm];x/X_{0} ", nzbin, zMin, zMax, nrbin, rMin, rMax ) );
296  hmgr->addHistoProf2( new TProfile2D("10770", "IL prof local R z [Air];z [mm];R [mm];x/X_{0} ", nzbin, zMin, zMax, nrbin, rMin, rMax ) );
297  hmgr->addHistoProf2( new TProfile2D("10772", "IL ortho prof local R z [Air];z [mm];R [mm];x/X_{0} ", nzbin, zMin, zMax, nrbin, rMin, rMax ) );
298 
299  //StainlessSteel
300  hmgr->addHistoProf1( new TProfile("10810", "IL prof Eta [StainlessSteel];#eta;#lambda/#lambda_{0}", netabin, etaMin, etaMax ) );
301  hmgr->addHistoProf1( new TProfile("10820", "IL prof Phi [StainlessSteel];#varphi [rad];#lambda/#lambda_{0}", nphibin, phiMin, phiMax ) );
302  hmgr->addHistoProf2( new TProfile2D("10830", "IL prof Eta Phi [StainlessSteel];#eta;#varphi;#lambda/#lambda_{0}", netabin, etaMin, etaMax, nphibin, phiMin, phiMax ) );
303  hmgr->addHistoProf1( new TProfile("10840", "IL prof R [StainlessSteel];R [mm];#lambda/#lambda_{0}", nRbin, RMin, RMax ) );
304  hmgr->addHistoProf2( new TProfile2D("10850", "IL prof sum R z [StainlessSteel];z [mm];R [mm];x/X_{0} ", nzbin, zMin, zMax, nrbin, rMin, rMax ) );
305  hmgr->addHistoProf2( new TProfile2D("10852", "IL ortho prof sum R z [StainlessSteel];z [mm];R [mm];x/X_{0} ", nzbin, zMin, zMax, nrbin, rMin, rMax ) );
306  hmgr->addHisto2( new TH2F("10860", "IL prof local R z [StainlessSteel];z [mm];R [mm];x/X_{0} ", nzbin, zMin, zMax, nrbin, rMin, rMax ) );
307  hmgr->addHistoProf2( new TProfile2D("10870", "IL prof local R z [StainlessSteel];z [mm];R [mm];x/X_{0} ", nzbin, zMin, zMax, nrbin, rMin, rMax ) );
308  hmgr->addHistoProf2( new TProfile2D("10872", "IL ortho prof local R z [StainlessSteel];z [mm];R [mm];x/X_{0} ", nzbin, zMin, zMax, nrbin, rMin, rMax ) );
309 
310  //WCu
311  hmgr->addHistoProf1( new TProfile("10910", "IL prof Eta [WCu];#eta;#lambda/#lambda_{0}", netabin, etaMin, etaMax ) );
312  hmgr->addHistoProf1( new TProfile("10920", "IL prof Phi [WCu];#varphi [rad];#lambda/#lambda_{0}", nphibin, phiMin, phiMax ) );
313  hmgr->addHistoProf2( new TProfile2D("10930", "IL prof Eta Phi [WCu];#eta;#varphi;#lambda/#lambda_{0}", netabin, etaMin, etaMax, nphibin, phiMin, phiMax ) );
314  hmgr->addHistoProf1( new TProfile("10940", "IL prof R [WCu];R [mm];#lambda/#lambda_{0}", nRbin, RMin, RMax ) );
315  hmgr->addHistoProf2( new TProfile2D("10950", "IL prof sum R z [WCu];z [mm];R [mm];x/X_{0} ", nzbin, zMin, zMax, nrbin, rMin, rMax ) );
316  hmgr->addHistoProf2( new TProfile2D("10952", "IL ortho prof sum R z [WCu];z [mm];R [mm];x/X_{0} ", nzbin, zMin, zMax, nrbin, rMin, rMax ) );
317  hmgr->addHisto2( new TH2F("10960", "IL prof local R z [WCu];z [mm];R [mm];x/X_{0} ", nzbin, zMin, zMax, nrbin, rMin, rMax ) );
318  hmgr->addHistoProf2( new TProfile2D("10970", "IL prof local R z [WCu];z [mm];R [mm];x/X_{0} ", nzbin, zMin, zMax, nrbin, rMin, rMax ) );
319  hmgr->addHistoProf2( new TProfile2D("10972", "IL ortho prof local R z [WCu];z [mm];R [mm];x/X_{0} ", nzbin, zMin, zMax, nrbin, rMin, rMax ) );
320 
321  // Lead
322  hmgr->addHistoProf1( new TProfile("11010", "IL prof Eta [Lead];#eta;#lambda/#lambda_{0}", netabin, etaMin, etaMax ) );
323  hmgr->addHistoProf1( new TProfile("11020", "IL prof Phi [Lead];#varphi [rad];#lambda/#lambda_{0}", nphibin, phiMin, phiMax ) );
324  hmgr->addHistoProf2( new TProfile2D("11030", "IL prof Eta Phi [Lead];#eta;#varphi;#lambda/#lambda_{0}", netabin, etaMin, etaMax, nphibin, phiMin, phiMax ) );
325  hmgr->addHistoProf1( new TProfile("11040", "IL prof R [Lead];R [mm];#lambda/#lambda_{0}", nRbin, RMin, RMax ) );
326  hmgr->addHistoProf2( new TProfile2D("11050", "IL prof sum R z [Lead];z [mm];R [mm];x/X_{0} ", nzbin, zMin, zMax, nrbin, rMin, rMax ) );
327  hmgr->addHistoProf2( new TProfile2D("11052", "IL ortho prof sum R z [Lead];z [mm];R [mm];x/X_{0} ", nzbin, zMin, zMax, nrbin, rMin, rMax ) );
328  hmgr->addHisto2( new TH2F("11060", "IL prof local R z [Lead];z [mm];R [mm];x/X_{0} ", nzbin, zMin, zMax, nrbin, rMin, rMax ) );
329  hmgr->addHistoProf2( new TProfile2D("11070", "IL prof local R z [Lead];z [mm];R [mm];x/X_{0} ", nzbin, zMin, zMax, nrbin, rMin, rMax ) );
330  hmgr->addHistoProf2( new TProfile2D("11072", "IL ortho prof local R z [Lead];z [mm];R [mm];x/X_{0} ", nzbin, zMin, zMax, nrbin, rMin, rMax ) );
331 
332  // Epoxy
333  hmgr->addHistoProf1( new TProfile("11110", "IL prof Eta [Epoxy];#eta;#lambda/#lambda_{0}", netabin, etaMin, etaMax ) );
334  hmgr->addHistoProf1( new TProfile("11120", "IL prof Phi [Epoxy];#varphi [rad];#lambda/#lambda_{0}", nphibin, phiMin, phiMax ) );
335  hmgr->addHistoProf2( new TProfile2D("11130", "IL prof Eta Phi [Epoxy];#eta;#varphi;#lambda/#lambda_{0}", netabin, etaMin, etaMax, nphibin, phiMin, phiMax ) );
336  hmgr->addHistoProf1( new TProfile("11140", "IL prof R [Epoxy];R [mm];#lambda/#lambda_{0}", nRbin, RMin, RMax ) );
337  hmgr->addHistoProf2( new TProfile2D("11150", "IL prof sum R z [Epoxy];z [mm];R [mm];x/X_{0} ", nzbin, zMin, zMax, nrbin, rMin, rMax ) );
338  hmgr->addHistoProf2( new TProfile2D("11152", "IL ortho prof sum R z [Epoxy];z [mm];R [mm];x/X_{0} ", nzbin, zMin, zMax, nrbin, rMin, rMax ) );
339  hmgr->addHisto2( new TH2F("11160", "IL prof local R z [Epoxy];z [mm];R [mm];x/X_{0} ", nzbin, zMin, zMax, nrbin, rMin, rMax ) );
340  hmgr->addHistoProf2( new TProfile2D("11170", "IL prof local R z [Epoxy];z [mm];R [mm];x/X_{0} ", nzbin, zMin, zMax, nrbin, rMin, rMax ) );
341  hmgr->addHistoProf2( new TProfile2D("11172", "IL ortho prof local R z [Epoxy];z [mm];R [mm];x/X_{0} ", nzbin, zMin, zMax, nrbin, rMin, rMax ) );
342 
343  // Kapton
344  hmgr->addHistoProf1( new TProfile("11210", "IL prof Eta [Kapton];#eta;#lambda/#lambda_{0}", netabin, etaMin, etaMax ) );
345  hmgr->addHistoProf1( new TProfile("11220", "IL prof Phi [Kapton];#varphi [rad];#lambda/#lambda_{0}", nphibin, phiMin, phiMax ) );
346  hmgr->addHistoProf2( new TProfile2D("11230", "IL prof Eta Phi [Kapton];#eta;#varphi;#lambda/#lambda_{0}", netabin, etaMin, etaMax, nphibin, phiMin, phiMax ) );
347  hmgr->addHistoProf1( new TProfile("11240", "IL prof R [Kapton];R [mm];#lambda/#lambda_{0}", nRbin, RMin, RMax ) );
348  hmgr->addHistoProf2( new TProfile2D("11250", "IL prof sum R z [Kapton];z [mm];R [mm];x/X_{0} ", nzbin, zMin, zMax, nrbin, rMin, rMax ) );
349  hmgr->addHistoProf2( new TProfile2D("11252", "IL ortho prof sum R z [Kapton];z [mm];R [mm];x/X_{0} ", nzbin, zMin, zMax, nrbin, rMin, rMax ) );
350  hmgr->addHisto2( new TH2F("11260", "IL prof local R z [Kapton];z [mm];R [mm];x/X_{0} ", nzbin, zMin, zMax, nrbin, rMin, rMax ) );
351  hmgr->addHistoProf2( new TProfile2D("11270", "IL prof local R z [Kapton];z [mm];R [mm];x/X_{0} ", nzbin, zMin, zMax, nrbin, rMin, rMax ) );
352  hmgr->addHistoProf2( new TProfile2D("11272", "IL ortho prof local R z [Kapton];z [mm];R [mm];x/X_{0} ", nzbin, zMin, zMax, nrbin, rMin, rMax ) );
353 
354  // Aluminium
355  hmgr->addHistoProf1( new TProfile("11310", "IL prof Eta [Aluminium];#eta;#lambda/#lambda_{0}", netabin, etaMin, etaMax ) );
356  hmgr->addHistoProf1( new TProfile("11320", "IL prof Phi [Aluminium];#varphi [rad];#lambda/#lambda_{0}", nphibin, phiMin, phiMax ) );
357  hmgr->addHistoProf2( new TProfile2D("11330", "IL prof Eta Phi [Aluminium];#eta;#varphi;#lambda/#lambda_{0}", netabin, etaMin, etaMax, nphibin, phiMin, phiMax ) );
358  hmgr->addHistoProf1( new TProfile("11340", "IL prof R [Aluminium];R [mm];#lambda/#lambda_{0}", nRbin, RMin, RMax ) );
359  hmgr->addHistoProf2( new TProfile2D("11350", "IL prof sum R z [Aluminium];z [mm];R [mm];x/X_{0} ", nzbin, zMin, zMax, nrbin, rMin, rMax ) );
360  hmgr->addHistoProf2( new TProfile2D("11352", "IL ortho prof sum R z [Aluminium];z [mm];R [mm];x/X_{0} ", nzbin, zMin, zMax, nrbin, rMin, rMax ) );
361  hmgr->addHisto2( new TH2F("11360", "IL prof local R z [Aluminium];z [mm];R [mm];x/X_{0} ", nzbin, zMin, zMax, nrbin, rMin, rMax ) );
362  hmgr->addHistoProf2( new TProfile2D("11370", "IL prof local R z [Aluminium];z [mm];R [mm];x/X_{0} ", nzbin, zMin, zMax, nrbin, rMin, rMax ) );
363  hmgr->addHistoProf2( new TProfile2D("11372", "IL ortho prof local R z [Aluminium];z [mm];R [mm];x/X_{0} ", nzbin, zMin, zMax, nrbin, rMin, rMax ) );
364 
365 
366  std::cout << "=== booking user histos done ===" << std::endl;
367 
368 }
369 
370 
372 {
373 
374 }
375 
376 
378 {
379 
380 }
381 
382 
384 {
385  //
386  // fill histograms and profiles only if the material has been crossed
387  //
388 
389  if( theData->getNumberOfSteps() != 0 ) {
390 
391  // Total X0
392  hmgr->getHisto1(11)->Fill(theData->getEta());
393  hmgr->getHisto1(21)->Fill(theData->getPhi());
394  hmgr->getHisto2(31)->Fill(theData->getEta(),theData->getPhi());
395 
396  hmgr->getHistoProf1(10)->Fill(theData->getEta(),theData->getTotalMB());
397  hmgr->getHistoProf1(20)->Fill(theData->getPhi(),theData->getTotalMB());
398  hmgr->getHistoProf2(30)->Fill(theData->getEta(),theData->getPhi(),theData->getTotalMB());
399 
400  // rr
401 
402  // Copper
403  hmgr->getHistoProf1(110)->Fill(theData->getEta(),theData->getCopperMB());
404  hmgr->getHistoProf1(120)->Fill(theData->getPhi(),theData->getCopperMB());
405  hmgr->getHistoProf2(130)->Fill(theData->getEta(),theData->getPhi(),theData->getCopperMB());
406 
407  // H_Scintillator
408  hmgr->getHistoProf1(210)->Fill(theData->getEta(),theData->getH_ScintillatorMB());
409  hmgr->getHistoProf1(220)->Fill(theData->getPhi(),theData->getH_ScintillatorMB());
410  hmgr->getHistoProf2(230)->Fill(theData->getEta(),theData->getPhi(),theData->getH_ScintillatorMB());
411 
412  // Cables
413  hmgr->getHistoProf1(310)->Fill(theData->getEta(),theData->getCablesMB());
414  hmgr->getHistoProf1(320)->Fill(theData->getPhi(),theData->getCablesMB());
415  hmgr->getHistoProf2(330)->Fill(theData->getEta(),theData->getPhi(),theData->getCablesMB());
416 
417  // HGC_G10_FR4
418  hmgr->getHistoProf1(410)->Fill(theData->getEta(),theData->getHGC_G10_FR4MB());
419  hmgr->getHistoProf1(420)->Fill(theData->getPhi(),theData->getHGC_G10_FR4MB());
420  hmgr->getHistoProf2(430)->Fill(theData->getEta(),theData->getPhi(),theData->getHGC_G10_FR4MB());
421 
422  // Silicon
423  hmgr->getHistoProf1(510)->Fill(theData->getEta(),theData->getSiliconMB());
424  hmgr->getHistoProf1(520)->Fill(theData->getPhi(),theData->getSiliconMB());
425  hmgr->getHistoProf2(530)->Fill(theData->getEta(),theData->getPhi(),theData->getSiliconMB());
426 
427  // Other
428  hmgr->getHistoProf1(610)->Fill(theData->getEta(),theData->getOtherMB());
429  hmgr->getHistoProf1(620)->Fill(theData->getPhi(),theData->getOtherMB());
430  hmgr->getHistoProf2(630)->Fill(theData->getEta(),theData->getPhi(),theData->getOtherMB());
431 
432  // Air
433  hmgr->getHistoProf1(710)->Fill(theData->getEta(),theData->getAirMB());
434  hmgr->getHistoProf1(720)->Fill(theData->getPhi(),theData->getAirMB());
435  hmgr->getHistoProf2(730)->Fill(theData->getEta(),theData->getPhi(),theData->getAirMB());
436 
437  // StainlessSteel
438  hmgr->getHistoProf1(810)->Fill(theData->getEta(),theData->getStainlessSteelMB());
439  hmgr->getHistoProf1(820)->Fill(theData->getPhi(),theData->getStainlessSteelMB());
440  hmgr->getHistoProf2(830)->Fill(theData->getEta(),theData->getPhi(),theData->getStainlessSteelMB());
441 
442  // WCu
443  hmgr->getHistoProf1(910)->Fill(theData->getEta(),theData->getWCuMB());
444  hmgr->getHistoProf1(920)->Fill(theData->getPhi(),theData->getWCuMB());
445  hmgr->getHistoProf2(930)->Fill(theData->getEta(),theData->getPhi(),theData->getWCuMB());
446 
447  // Lead
448  hmgr->getHistoProf1(1010)->Fill(theData->getEta(),theData->getLeadMB());
449  hmgr->getHistoProf1(1020)->Fill(theData->getPhi(),theData->getLeadMB());
450  hmgr->getHistoProf2(1030)->Fill(theData->getEta(),theData->getPhi(),theData->getLeadMB());
451 
452  // Epoxy
453  hmgr->getHistoProf1(1110)->Fill(theData->getEta(),theData->getEpoxyMB());
454  hmgr->getHistoProf1(1120)->Fill(theData->getPhi(),theData->getEpoxyMB());
455  hmgr->getHistoProf2(1130)->Fill(theData->getEta(),theData->getPhi(),theData->getEpoxyMB());
456 
457  // Kapton
458  hmgr->getHistoProf1(1210)->Fill(theData->getEta(),theData->getKaptonMB());
459  hmgr->getHistoProf1(1220)->Fill(theData->getPhi(),theData->getKaptonMB());
460  hmgr->getHistoProf2(1230)->Fill(theData->getEta(),theData->getPhi(),theData->getKaptonMB());
461 
462  // Kapton
463  hmgr->getHistoProf1(1310)->Fill(theData->getEta(),theData->getAluminiumMB());
464  hmgr->getHistoProf1(1320)->Fill(theData->getPhi(),theData->getAluminiumMB());
465  hmgr->getHistoProf2(1330)->Fill(theData->getEta(),theData->getPhi(),theData->getAluminiumMB());
466  //
467  // Compute the total x/X0 crossed at each step radius for each path
468  //
469  //
470  float theTotalMB_TOT = 0.0;
471  float theTotalMB_COP = 0.0;
472  float theTotalMB_SCI = 0.0;
473  float theTotalMB_CAB = 0.0;
474  float theTotalMB_HGF = 0.0;
475  float theTotalMB_NIM = 0.0;
476  float theTotalMB_OTH = 0.0;
477  float theTotalMB_AIR = 0.0;
478  float theTotalMB_SST = 0.0;
479  float theTotalMB_WCU = 0.0;
480  float theTotalMB_LEA = 0.0;
481  float theTotalMB_EPX = 0.0;
482  float theTotalMB_KAP = 0.0;
483  float theTotalMB_ALU = 0.0;
484  for(int iStep = 0; iStep < theData->getNumberOfSteps(); iStep++) {
485  theTotalMB_TOT += theData->getStepDmb(iStep);
486  theTotalMB_COP += theData->getCopperDmb(iStep);
487  theTotalMB_SCI += theData->getH_ScintillatorDmb(iStep);
488  theTotalMB_CAB += theData->getCablesDmb(iStep);
489  theTotalMB_HGF += theData->getHGC_G10_FR4Dmb(iStep);
490  theTotalMB_NIM += theData->getSiliconDmb(iStep);
491  theTotalMB_OTH += theData->getOtherDmb(iStep);
492  theTotalMB_AIR += theData->getAirDmb(iStep);
493  theTotalMB_SST += theData->getStainlessSteelDmb(iStep);
494  theTotalMB_WCU += theData->getWCuDmb(iStep);
495  theTotalMB_LEA += theData->getLeadDmb(iStep);
496  theTotalMB_EPX += theData->getEpoxyDmb(iStep);
497  theTotalMB_KAP += theData->getKaptonDmb(iStep);
498  theTotalMB_ALU += theData->getAluminiumDmb(iStep);
499 
500  int iCop = 0;
501  int iSci = 0;
502  int iCab = 0;
503  int iHgf = 0;
504  int iSil = 0;
505  int iOth = 0;
506  int iAir = 0;
507  int iSst = 0;
508  int iWcu = 0;
509  int iLea = 0;
510  int iEpx = 0;
511  int iKap = 0;
512  int iAlu = 0;
513  if(theData->getCopperDmb(iStep)>0.) { iCop = 1; }
514  if(theData->getH_ScintillatorDmb(iStep)>0.) { iSci = 1; }
515  if(theData->getCablesDmb(iStep)>0.) { iCab = 1; }
516  if(theData->getHGC_G10_FR4Dmb(iStep)>0.) { iHgf = 1; }
517  if(theData->getSiliconDmb(iStep)>0.) { iSil = 1; }
518  if(theData->getOtherDmb(iStep)>0.) { iOth = 1; }
519  if(theData->getAirDmb(iStep)>0.) { iAir = 1; }
520  if(theData->getStainlessSteelDmb(iStep)>0.) { iSst = 1; }
521  if(theData->getWCuDmb(iStep)>0.) { iWcu = 1; }
522  if(theData->getLeadDmb(iStep)>0.) { iLea = 1; }
523  if(theData->getEpoxyDmb(iStep)>0.) { iEpx = 1; }
524  if(theData->getKaptonDmb(iStep)>0.) { iKap = 1; }
525  if(theData->getAluminiumDmb(iStep)>0.) { iAlu = 1; }
526 
527  float deltaRadius = sqrt(
528  pow( theData->getStepFinalX(iStep)-theData->getStepInitialX(iStep),2 )
529  +
530  pow( theData->getStepFinalY(iStep)-theData->getStepInitialY(iStep),2 )
531  );
532  float deltaz = theData->getStepFinalZ(iStep)-theData->getStepInitialZ(iStep) ;
533 
534  float deltaeta = theData->getStepFinalEta(iStep)-theData->getStepInitialEta(iStep) ;
535 
536  // float deltaphi = theData->getStepFinalPhi(iStep)-theData->getStepInitialPhi(iStep) ;
537 
538  float x0 = theData->getStepMaterialX0(iStep);
539 
540  int nSubStep = 2;
541  float boxWidth = 0.1;
542  if( (deltaRadius>boxWidth) || (fabs(deltaz)>boxWidth) ) {
543  nSubStep = static_cast<int>(max(
544  ceil(deltaRadius/boxWidth/2.)*2,
545  ceil(fabs(deltaz)/boxWidth/2.)*2
546  ));
547  }
548 
549  for(int iSubStep = 1; iSubStep < nSubStep; iSubStep+=2) {
550 
551  float subdeltaRadius = deltaRadius/nSubStep;
552  float polarRadius = sqrt(
553  pow( theData->getStepInitialX(iStep),2 )
554  +
555  pow( theData->getStepInitialY(iStep),2 )
556  ) + iSubStep*subdeltaRadius;
557 
558  float subdeltaz = deltaz/nSubStep;
559  float z = theData->getStepInitialZ(iStep) + iSubStep*subdeltaz;
560 
561  float subdeltaeta = deltaeta/nSubStep;
562  float eta = theData->getStepInitialEta(iStep) + iSubStep*subdeltaeta;
563 
564  // float subdeltaphi = deltaphi/nSubStep;
565  // float phi = theData->getStepInitialPhi(iStep) + iSubStep*subdeltaphi;
566 
567  float subdelta = sqrt(
568  pow ( subdeltaRadius,2 ) + pow( subdeltaz,2 )
569  );
570 
571  float fillValue=subdelta/x0;
572 
573  float costhetacorrection = cos( 2 * atan(exp(-fabs(eta))) );
574  // Average length
575  hmgr->getHisto2(999)->Fill(z,polarRadius,subdelta);
576  // Total
577  hmgr->getHisto1(41)->Fill(polarRadius);
578  hmgr->getHistoProf1(40)->Fill(polarRadius,theTotalMB_TOT);
579  hmgr->getHisto2(51)->Fill(z,polarRadius);
580  hmgr->getHistoProf2(50)->Fill(z,polarRadius,theTotalMB_TOT);
581  hmgr->getHistoProf2(52)->Fill(z,polarRadius, theTotalMB_TOT * costhetacorrection );
582  hmgr->getHisto2(60)->Fill(z,polarRadius,fillValue);
583  hmgr->getHistoProf2(70)->Fill(z,polarRadius,fillValue);
584  hmgr->getHistoProf2(72)->Fill(z,polarRadius, fillValue * costhetacorrection );
585 
586  // Copper
587  hmgr->getHistoProf1(140)->Fill(polarRadius,theTotalMB_COP);
588  hmgr->getHistoProf2(150)->Fill(z,polarRadius,theTotalMB_COP);
589  hmgr->getHistoProf2(152)->Fill(z,polarRadius,theTotalMB_COP * costhetacorrection );
590  hmgr->getHisto2(160)->Fill(z,polarRadius,iCop*fillValue);
591  hmgr->getHistoProf2(170)->Fill(z,polarRadius,iCop*fillValue);
592  hmgr->getHistoProf2(172)->Fill(z,polarRadius, iCop * fillValue * costhetacorrection );
593 
594  // H_Scintillator
595  hmgr->getHistoProf1(240)->Fill(polarRadius,theTotalMB_SCI);
596  hmgr->getHistoProf2(250)->Fill(z,polarRadius,theTotalMB_SCI);
597  hmgr->getHistoProf2(252)->Fill(z,polarRadius,theTotalMB_SCI * costhetacorrection );
598  hmgr->getHisto2(260)->Fill(z,polarRadius,iSci*fillValue);
599  hmgr->getHistoProf2(270)->Fill(z,polarRadius,iSci*fillValue);
600  hmgr->getHistoProf2(272)->Fill(z,polarRadius, iSci * fillValue * costhetacorrection );
601 
602  // Cables
603  hmgr->getHistoProf1(340)->Fill(polarRadius,theTotalMB_CAB);
604  hmgr->getHistoProf2(350)->Fill(z,polarRadius,theTotalMB_CAB);
605  hmgr->getHistoProf2(352)->Fill(z,polarRadius,theTotalMB_CAB * costhetacorrection );
606  hmgr->getHisto2(360)->Fill(z,polarRadius,iCab*fillValue);
607  hmgr->getHistoProf2(370)->Fill(z,polarRadius,iCab*fillValue);
608  hmgr->getHistoProf2(372)->Fill(z,polarRadius, iCab * fillValue * costhetacorrection );
609 
610  // HGC_G10_FR4
611  hmgr->getHistoProf1(440)->Fill(polarRadius,theTotalMB_HGF);
612  hmgr->getHistoProf2(450)->Fill(z,polarRadius,theTotalMB_HGF);
613  hmgr->getHistoProf2(452)->Fill(z,polarRadius,theTotalMB_HGF * costhetacorrection );
614  hmgr->getHisto2(460)->Fill(z,polarRadius,iHgf*fillValue);
615  hmgr->getHistoProf2(470)->Fill(z,polarRadius,iHgf*fillValue);
616  hmgr->getHistoProf2(472)->Fill(z,polarRadius, iHgf * fillValue * costhetacorrection );
617 
618  // Silicon
619  hmgr->getHistoProf1(540)->Fill(polarRadius,theTotalMB_NIM);
620  hmgr->getHistoProf2(550)->Fill(z,polarRadius,theTotalMB_NIM);
621  hmgr->getHistoProf2(552)->Fill(z,polarRadius,theTotalMB_NIM * costhetacorrection );
622  hmgr->getHisto2(560)->Fill(z,polarRadius,iSil*fillValue);
623  hmgr->getHistoProf2(570)->Fill(z,polarRadius,iSil*fillValue);
624  hmgr->getHistoProf2(572)->Fill(z,polarRadius, iSil * fillValue * costhetacorrection );
625 
626  // Other
627  hmgr->getHistoProf1(640)->Fill(polarRadius,theTotalMB_OTH);
628  hmgr->getHistoProf2(650)->Fill(z,polarRadius,theTotalMB_OTH);
629  hmgr->getHistoProf2(652)->Fill(z,polarRadius,theTotalMB_OTH * costhetacorrection );
630  hmgr->getHisto2(660)->Fill(z,polarRadius,iOth*fillValue);
631  hmgr->getHistoProf2(670)->Fill(z,polarRadius,iOth*fillValue);
632  hmgr->getHistoProf2(672)->Fill(z,polarRadius, iOth * fillValue * costhetacorrection );
633 
634  // Air
635  hmgr->getHistoProf1(740)->Fill(polarRadius,theTotalMB_AIR);
636  hmgr->getHistoProf2(750)->Fill(z,polarRadius,theTotalMB_AIR);
637  hmgr->getHistoProf2(752)->Fill(z,polarRadius,theTotalMB_AIR * costhetacorrection );
638  hmgr->getHisto2(760)->Fill(z,polarRadius,iAir*fillValue);
639  hmgr->getHistoProf2(770)->Fill(z,polarRadius,iAir*fillValue);
640  hmgr->getHistoProf2(772)->Fill(z,polarRadius, iAir * fillValue * costhetacorrection );
641 
642  // StainlessSteel
643  hmgr->getHistoProf1(840)->Fill(polarRadius,theTotalMB_SST);
644  hmgr->getHistoProf2(850)->Fill(z,polarRadius,theTotalMB_SST);
645  hmgr->getHistoProf2(852)->Fill(z,polarRadius,theTotalMB_SST * costhetacorrection );
646  hmgr->getHisto2(860)->Fill(z,polarRadius,iSst*fillValue);
647  hmgr->getHistoProf2(870)->Fill(z,polarRadius,iSst*fillValue);
648  hmgr->getHistoProf2(872)->Fill(z,polarRadius, iSst * fillValue * costhetacorrection );
649 
650  // WCu
651  hmgr->getHistoProf1(940)->Fill(polarRadius,theTotalMB_WCU);
652  hmgr->getHistoProf2(950)->Fill(z,polarRadius,theTotalMB_WCU);
653  hmgr->getHistoProf2(952)->Fill(z,polarRadius,theTotalMB_WCU * costhetacorrection );
654  hmgr->getHisto2(960)->Fill(z,polarRadius,iWcu*fillValue);
655  hmgr->getHistoProf2(970)->Fill(z,polarRadius,iWcu*fillValue);
656  hmgr->getHistoProf2(972)->Fill(z,polarRadius, iWcu * fillValue * costhetacorrection );
657 
658  // Lead
659  hmgr->getHistoProf1(1040)->Fill(polarRadius,theTotalMB_LEA);
660  hmgr->getHistoProf2(1050)->Fill(z,polarRadius,theTotalMB_LEA);
661  hmgr->getHistoProf2(1052)->Fill(z,polarRadius,theTotalMB_LEA * costhetacorrection );
662  hmgr->getHisto2(1060)->Fill(z,polarRadius,iLea*fillValue);
663  hmgr->getHistoProf2(1070)->Fill(z,polarRadius,iLea*fillValue);
664  hmgr->getHistoProf2(1072)->Fill(z,polarRadius, iLea * fillValue * costhetacorrection );
665 
666  // Epoxy
667  hmgr->getHistoProf1(1140)->Fill(polarRadius,theTotalMB_EPX);
668  hmgr->getHistoProf2(1150)->Fill(z,polarRadius,theTotalMB_EPX);
669  hmgr->getHistoProf2(1152)->Fill(z,polarRadius,theTotalMB_EPX * costhetacorrection );
670  hmgr->getHisto2(1160)->Fill(z,polarRadius,iEpx*fillValue);
671  hmgr->getHistoProf2(1170)->Fill(z,polarRadius,iEpx*fillValue);
672  hmgr->getHistoProf2(1172)->Fill(z,polarRadius, iEpx * fillValue * costhetacorrection );
673 
674  // Kapton
675  hmgr->getHistoProf1(1240)->Fill(polarRadius,theTotalMB_KAP);
676  hmgr->getHistoProf2(1250)->Fill(z,polarRadius,theTotalMB_KAP);
677  hmgr->getHistoProf2(1252)->Fill(z,polarRadius,theTotalMB_KAP * costhetacorrection );
678  hmgr->getHisto2(1260)->Fill(z,polarRadius,iKap*fillValue);
679  hmgr->getHistoProf2(1270)->Fill(z,polarRadius,iKap*fillValue);
680  hmgr->getHistoProf2(1272)->Fill(z,polarRadius, iKap * fillValue * costhetacorrection );
681 
682  // Aluminium
683  hmgr->getHistoProf1(1340)->Fill(polarRadius,theTotalMB_ALU);
684  hmgr->getHistoProf2(1350)->Fill(z,polarRadius,theTotalMB_ALU);
685  hmgr->getHistoProf2(1352)->Fill(z,polarRadius,theTotalMB_ALU * costhetacorrection );
686  hmgr->getHisto2(1360)->Fill(z,polarRadius,iAlu*fillValue);
687  hmgr->getHistoProf2(1370)->Fill(z,polarRadius,iAlu*fillValue);
688  hmgr->getHistoProf2(1372)->Fill(z,polarRadius, iAlu * fillValue * costhetacorrection );
689 
690  }
691  }
692 
693  //============================================================================================
694  // Total Lambda0
695  hmgr->getHistoProf1(10010)->Fill(theData->getEta(),theData->getTotalIL());
696  hmgr->getHistoProf1(10020)->Fill(theData->getPhi(),theData->getTotalIL());
697  hmgr->getHistoProf2(10030)->Fill(theData->getEta(),theData->getPhi(),theData->getTotalIL());
698 
699  // Copper
700  hmgr->getHistoProf1(10110)->Fill(theData->getEta(),theData->getCopperIL());
701  hmgr->getHistoProf1(10120)->Fill(theData->getPhi(),theData->getCopperIL());
702  hmgr->getHistoProf2(10130)->Fill(theData->getEta(),theData->getPhi(),theData->getCopperIL());
703 
704  // H_Scintillator
705  hmgr->getHistoProf1(10210)->Fill(theData->getEta(),theData->getH_ScintillatorIL());
706  hmgr->getHistoProf1(10220)->Fill(theData->getPhi(),theData->getH_ScintillatorIL());
707  hmgr->getHistoProf2(10230)->Fill(theData->getEta(),theData->getPhi(),theData->getH_ScintillatorIL());
708 
709  // Cables
710  hmgr->getHistoProf1(10310)->Fill(theData->getEta(),theData->getCablesIL());
711  hmgr->getHistoProf1(10320)->Fill(theData->getPhi(),theData->getCablesIL());
712  hmgr->getHistoProf2(10330)->Fill(theData->getEta(),theData->getPhi(),theData->getCablesIL());
713 
714  // HGC_G10_FR4
715  hmgr->getHistoProf1(10410)->Fill(theData->getEta(),theData->getHGC_G10_FR4IL());
716  hmgr->getHistoProf1(10420)->Fill(theData->getPhi(),theData->getHGC_G10_FR4IL());
717  hmgr->getHistoProf2(10430)->Fill(theData->getEta(),theData->getPhi(),theData->getHGC_G10_FR4IL());
718 
719  // Silicon
720  hmgr->getHistoProf1(10510)->Fill(theData->getEta(),theData->getSiliconIL());
721  hmgr->getHistoProf1(10520)->Fill(theData->getPhi(),theData->getSiliconIL());
722  hmgr->getHistoProf2(10530)->Fill(theData->getEta(),theData->getPhi(),theData->getSiliconIL());
723 
724  // Other
725  hmgr->getHistoProf1(10610)->Fill(theData->getEta(),theData->getOtherIL());
726  hmgr->getHistoProf1(10620)->Fill(theData->getPhi(),theData->getOtherIL());
727  hmgr->getHistoProf2(10630)->Fill(theData->getEta(),theData->getPhi(),theData->getOtherIL());
728 
729  // Air
730  hmgr->getHistoProf1(10710)->Fill(theData->getEta(),theData->getAirIL());
731  hmgr->getHistoProf1(10720)->Fill(theData->getPhi(),theData->getAirIL());
732  hmgr->getHistoProf2(10730)->Fill(theData->getEta(),theData->getPhi(),theData->getAirIL());
733 
734  // StainlessSteel
735  hmgr->getHistoProf1(10810)->Fill(theData->getEta(),theData->getStainlessSteelIL());
736  hmgr->getHistoProf1(10820)->Fill(theData->getPhi(),theData->getStainlessSteelIL());
737  hmgr->getHistoProf2(10830)->Fill(theData->getEta(),theData->getPhi(),theData->getStainlessSteelIL());
738 
739  // WCu
740  hmgr->getHistoProf1(10910)->Fill(theData->getEta(),theData->getWCuIL());
741  hmgr->getHistoProf1(10920)->Fill(theData->getPhi(),theData->getWCuIL());
742  hmgr->getHistoProf2(10930)->Fill(theData->getEta(),theData->getPhi(),theData->getWCuIL());
743 
744  // Lead
745  hmgr->getHistoProf1(11010)->Fill(theData->getEta(),theData->getLeadIL());
746  hmgr->getHistoProf1(11020)->Fill(theData->getPhi(),theData->getLeadIL());
747  hmgr->getHistoProf2(11030)->Fill(theData->getEta(),theData->getPhi(),theData->getLeadIL());
748 
749  // Epoxy
750  hmgr->getHistoProf1(11110)->Fill(theData->getEta(),theData->getEpoxyIL());
751  hmgr->getHistoProf1(11120)->Fill(theData->getPhi(),theData->getEpoxyIL());
752  hmgr->getHistoProf2(11130)->Fill(theData->getEta(),theData->getPhi(),theData->getEpoxyIL());
753 
754  // Kapton
755  hmgr->getHistoProf1(11210)->Fill(theData->getEta(),theData->getKaptonIL());
756  hmgr->getHistoProf1(11220)->Fill(theData->getPhi(),theData->getKaptonIL());
757  hmgr->getHistoProf2(11230)->Fill(theData->getEta(),theData->getPhi(),theData->getKaptonIL());
758 
759  // Aluminium
760  hmgr->getHistoProf1(11310)->Fill(theData->getEta(),theData->getAluminiumIL());
761  hmgr->getHistoProf1(11320)->Fill(theData->getPhi(),theData->getAluminiumIL());
762  hmgr->getHistoProf2(11330)->Fill(theData->getEta(),theData->getPhi(),theData->getAluminiumIL());
763 
764  // Compute the total l/l0 crossed at each step radius for each path
765  float theTotalIL_TOT = 0.0;
766  float theTotalIL_COP = 0.0;
767  float theTotalIL_SCI = 0.0;
768  float theTotalIL_CAB = 0.0;
769  float theTotalIL_HGF = 0.0;
770  float theTotalIL_NIM = 0.0;
771  float theTotalIL_OTH = 0.0;
772  float theTotalIL_AIR = 0.0;
773  float theTotalIL_SST = 0.0;
774  float theTotalIL_WCU = 0.0;
775  float theTotalIL_LEA = 0.0;
776  float theTotalIL_EPX = 0.0;
777  float theTotalIL_KAP = 0.0;
778  float theTotalIL_ALU = 0.0;
779  for(int iStep = 0; iStep < theData->getNumberOfSteps(); iStep++) {
780  theTotalIL_TOT += theData->getStepDil(iStep);
781  theTotalIL_COP += theData->getCopperDil(iStep);
782  theTotalIL_SCI += theData->getH_ScintillatorDil(iStep);
783  theTotalIL_CAB += theData->getCablesDil(iStep);
784  theTotalIL_HGF += theData->getHGC_G10_FR4Dil(iStep);
785  theTotalIL_NIM += theData->getSiliconDil(iStep);
786  theTotalIL_OTH += theData->getOtherDil(iStep);
787  theTotalIL_AIR += theData->getAirDil(iStep);
788  theTotalIL_SST += theData->getStainlessSteelDil(iStep);
789  theTotalIL_WCU += theData->getWCuDil(iStep);
790  theTotalIL_LEA += theData->getLeadDil(iStep);
791  theTotalIL_EPX += theData->getEpoxyDil(iStep);
792  theTotalIL_KAP += theData->getKaptonDil(iStep);
793  theTotalIL_ALU += theData->getAluminiumDil(iStep);
794 
795  int iCop = 0;
796  int iSci = 0;
797  int iCab = 0;
798  int iHgf = 0;
799  int iSil = 0;
800  int iOth = 0;
801  int iAir = 0;
802  int iSst = 0;
803  int iWcu = 0;
804  int iLea = 0;
805  int iEpx = 0;
806  int iKap = 0;
807  int iAlu = 0;
808 
809  if(theData->getCopperDil(iStep)>0.) { iCop = 1; }
810  if(theData->getH_ScintillatorDil(iStep)>0.) { iSci = 1; }
811  if(theData->getCablesDil(iStep)>0.) { iCab = 1; }
812  if(theData->getHGC_G10_FR4Dil(iStep)>0.) { iHgf = 1; }
813  if(theData->getSiliconDil(iStep)>0.) { iSil = 1; }
814  if(theData->getOtherDil(iStep)>0.) { iOth = 1; }
815  if(theData->getAirDil(iStep)>0.) { iAir = 1; }
816  if(theData->getStainlessSteelDil(iStep)>0.) { iSst = 1; }
817  if(theData->getWCuDil(iStep)>0.) { iWcu = 1; }
818  if(theData->getLeadDil(iStep)>0.) { iLea = 1; }
819  if(theData->getEpoxyDil(iStep)>0.) { iEpx = 1; }
820  if(theData->getKaptonDil(iStep)>0.) { iKap = 1; }
821  if(theData->getAluminiumDil(iStep)>0.) { iAlu = 1; }
822 
823  float deltaRadius = sqrt(
824  pow( theData->getStepFinalX(iStep)-theData->getStepInitialX(iStep),2 )
825  +
826  pow( theData->getStepFinalY(iStep)-theData->getStepInitialY(iStep),2 )
827  );
828  float deltaz = theData->getStepFinalZ(iStep)-theData->getStepInitialZ(iStep) ;
829 
830  float deltaeta = theData->getStepFinalEta(iStep)-theData->getStepInitialEta(iStep) ;
831 
832  // float deltaphi = theData->getStepFinalPhi(iStep)-theData->getStepInitialPhi(iStep) ;
833 
834  float il = theData->getStepMaterialLambda0(iStep);
835 
836  int nSubStep = 2;
837  float boxWidth = 0.1;
838  if( (deltaRadius>boxWidth) || (fabs(deltaz)>boxWidth) ) {
839  nSubStep = static_cast<int>(max(
840  ceil(deltaRadius/boxWidth/2.)*2,
841  ceil(fabs(deltaz)/boxWidth/2.)*2
842  ));
843  }
844 
845  for(int iSubStep = 1; iSubStep < nSubStep; iSubStep+=2) {
846 
847  float subdeltaRadius = deltaRadius/nSubStep;
848  float polarRadius = sqrt(
849  pow( theData->getStepInitialX(iStep),2 )
850  +
851  pow( theData->getStepInitialY(iStep),2 )
852  ) + iSubStep*subdeltaRadius;
853 
854  float subdeltaz = deltaz/nSubStep;
855  float z = theData->getStepInitialZ(iStep) + iSubStep*subdeltaz;
856 
857  float subdeltaeta = deltaeta/nSubStep;
858  float eta = theData->getStepInitialEta(iStep) + iSubStep*subdeltaeta;
859 
860  // float subdeltaphi = deltaphi/nSubStep;
861  // float phi = theData->getStepInitialPhi(iStep) + iSubStep*subdeltaphi;
862 
863  float subdelta = sqrt(
864  pow ( subdeltaRadius,2 ) + pow( subdeltaz,2 )
865  );
866 
867  float fillValue=subdelta/il;
868 
869  float costhetacorrection = cos( 2 * atan(exp(-fabs(eta))) );
870  // Average length
871  hmgr->getHisto2(1999)->Fill(z,polarRadius,subdelta);
872  // Total
873  hmgr->getHistoProf1(10040)->Fill(polarRadius,theTotalIL_TOT);
874  hmgr->getHistoProf2(10050)->Fill(z,polarRadius,theTotalIL_TOT);
875  hmgr->getHistoProf2(10052)->Fill(z,polarRadius,theTotalIL_TOT * costhetacorrection );
876  hmgr->getHisto2(10060)->Fill(z,polarRadius,fillValue);
877  hmgr->getHistoProf2(10070)->Fill(z,polarRadius,fillValue);
878  hmgr->getHistoProf2(10072)->Fill(z,polarRadius, fillValue * costhetacorrection );
879 
880  // Copper
881  hmgr->getHistoProf1(10140)->Fill(polarRadius,theTotalIL_COP);
882  hmgr->getHistoProf2(10150)->Fill(z,polarRadius,theTotalIL_COP);
883  hmgr->getHistoProf2(10152)->Fill(z,polarRadius,theTotalIL_COP * costhetacorrection );
884  hmgr->getHisto2(10160)->Fill(z,polarRadius,iCop*fillValue);
885  hmgr->getHistoProf2(10170)->Fill(z,polarRadius,iCop*fillValue);
886  hmgr->getHistoProf2(10172)->Fill(z,polarRadius, iCop * fillValue * costhetacorrection );
887 
888  // H_Scintillator
889  hmgr->getHistoProf1(10240)->Fill(polarRadius,theTotalIL_SCI);
890  hmgr->getHistoProf2(10250)->Fill(z,polarRadius,theTotalIL_SCI);
891  hmgr->getHistoProf2(10252)->Fill(z,polarRadius,theTotalIL_SCI * costhetacorrection );
892  hmgr->getHisto2(10260)->Fill(z,polarRadius,iSci*fillValue);
893  hmgr->getHistoProf2(10270)->Fill(z,polarRadius,iSci*fillValue);
894  hmgr->getHistoProf2(10272)->Fill(z,polarRadius, iSci * fillValue * costhetacorrection );
895 
896  // Cables
897  hmgr->getHistoProf1(10340)->Fill(polarRadius,theTotalIL_CAB);
898  hmgr->getHistoProf2(10350)->Fill(z,polarRadius,theTotalIL_CAB);
899  hmgr->getHistoProf2(10352)->Fill(z,polarRadius,theTotalIL_CAB * costhetacorrection );
900  hmgr->getHisto2(10360)->Fill(z,polarRadius,iCab*fillValue);
901  hmgr->getHistoProf2(10370)->Fill(z,polarRadius,iCab*fillValue);
902  hmgr->getHistoProf2(10372)->Fill(z,polarRadius, iCab * fillValue * costhetacorrection );
903 
904  // HGC_G10_FR4
905  hmgr->getHistoProf1(10440)->Fill(polarRadius,theTotalIL_HGF);
906  hmgr->getHistoProf2(10450)->Fill(z,polarRadius,theTotalIL_HGF);
907  hmgr->getHistoProf2(10452)->Fill(z,polarRadius,theTotalIL_HGF * costhetacorrection );
908  hmgr->getHisto2(10460)->Fill(z,polarRadius,iHgf*fillValue);
909  hmgr->getHistoProf2(10470)->Fill(z,polarRadius,iHgf*fillValue);
910  hmgr->getHistoProf2(10472)->Fill(z,polarRadius, iHgf * fillValue * costhetacorrection );
911 
912  // Silicon
913  hmgr->getHistoProf1(10540)->Fill(polarRadius,theTotalIL_NIM);
914  hmgr->getHistoProf2(10550)->Fill(z,polarRadius,theTotalIL_NIM);
915  hmgr->getHistoProf2(10552)->Fill(z,polarRadius,theTotalIL_NIM * costhetacorrection );
916  hmgr->getHisto2(10560)->Fill(z,polarRadius,iSil*fillValue);
917  hmgr->getHistoProf2(10570)->Fill(z,polarRadius,iSil*fillValue);
918  hmgr->getHistoProf2(10572)->Fill(z,polarRadius, iSil * fillValue * costhetacorrection );
919 
920  // Other
921  hmgr->getHistoProf1(10640)->Fill(polarRadius,theTotalIL_OTH);
922  hmgr->getHistoProf2(10650)->Fill(z,polarRadius,theTotalIL_OTH);
923  hmgr->getHistoProf2(10652)->Fill(z,polarRadius,theTotalIL_OTH * costhetacorrection );
924  hmgr->getHisto2(10660)->Fill(z,polarRadius,iOth*fillValue);
925  hmgr->getHistoProf2(10670)->Fill(z,polarRadius,iOth*fillValue);
926  hmgr->getHistoProf2(10672)->Fill(z,polarRadius, iOth * fillValue * costhetacorrection );
927 
928  // Air
929  hmgr->getHistoProf1(10740)->Fill(polarRadius,theTotalIL_AIR);
930  hmgr->getHistoProf2(10750)->Fill(z,polarRadius,theTotalIL_AIR);
931  hmgr->getHistoProf2(10752)->Fill(z,polarRadius,theTotalIL_AIR * costhetacorrection );
932  hmgr->getHisto2(10760)->Fill(z,polarRadius,iAir*fillValue);
933  hmgr->getHistoProf2(10770)->Fill(z,polarRadius,iAir*fillValue);
934  hmgr->getHistoProf2(10772)->Fill(z,polarRadius, iAir * fillValue * costhetacorrection );
935 
936  // StainlessSteel
937  hmgr->getHistoProf1(10840)->Fill(polarRadius,theTotalIL_SST);
938  hmgr->getHistoProf2(10850)->Fill(z,polarRadius,theTotalIL_SST);
939  hmgr->getHistoProf2(10852)->Fill(z,polarRadius,theTotalIL_SST * costhetacorrection );
940  hmgr->getHisto2(10860)->Fill(z,polarRadius,iSst*fillValue);
941  hmgr->getHistoProf2(10870)->Fill(z,polarRadius,iSst*fillValue);
942  hmgr->getHistoProf2(10872)->Fill(z,polarRadius, iSst * fillValue * costhetacorrection );
943 
944  // WCu
945  hmgr->getHistoProf1(10940)->Fill(polarRadius,theTotalIL_WCU);
946  hmgr->getHistoProf2(10950)->Fill(z,polarRadius,theTotalIL_WCU);
947  hmgr->getHistoProf2(10952)->Fill(z,polarRadius,theTotalIL_WCU * costhetacorrection );
948  hmgr->getHisto2(10960)->Fill(z,polarRadius,iWcu*fillValue);
949  hmgr->getHistoProf2(10970)->Fill(z,polarRadius,iWcu*fillValue);
950  hmgr->getHistoProf2(10972)->Fill(z,polarRadius, iWcu * fillValue * costhetacorrection );
951 
952  // Lead
953  hmgr->getHistoProf1(11040)->Fill(polarRadius,theTotalIL_LEA);
954  hmgr->getHistoProf2(11050)->Fill(z,polarRadius,theTotalIL_LEA);
955  hmgr->getHistoProf2(11052)->Fill(z,polarRadius,theTotalIL_LEA * costhetacorrection );
956  hmgr->getHisto2(11060)->Fill(z,polarRadius,iLea*fillValue);
957  hmgr->getHistoProf2(11070)->Fill(z,polarRadius,iLea*fillValue);
958  hmgr->getHistoProf2(11072)->Fill(z,polarRadius, iLea * fillValue * costhetacorrection );
959 
960  // Epoxy
961  hmgr->getHistoProf1(11140)->Fill(polarRadius,theTotalIL_EPX);
962  hmgr->getHistoProf2(11150)->Fill(z,polarRadius,theTotalIL_EPX);
963  hmgr->getHistoProf2(11152)->Fill(z,polarRadius,theTotalIL_EPX * costhetacorrection );
964  hmgr->getHisto2(11160)->Fill(z,polarRadius,iEpx*fillValue);
965  hmgr->getHistoProf2(11170)->Fill(z,polarRadius,iEpx*fillValue);
966  hmgr->getHistoProf2(11172)->Fill(z,polarRadius, iEpx * fillValue * costhetacorrection );
967 
968  // Kapton
969  hmgr->getHistoProf1(11240)->Fill(polarRadius,theTotalIL_KAP);
970  hmgr->getHistoProf2(11250)->Fill(z,polarRadius,theTotalIL_KAP);
971  hmgr->getHistoProf2(11252)->Fill(z,polarRadius,theTotalIL_KAP * costhetacorrection );
972  hmgr->getHisto2(11260)->Fill(z,polarRadius,iKap*fillValue);
973  hmgr->getHistoProf2(11270)->Fill(z,polarRadius,iKap*fillValue);
974  hmgr->getHistoProf2(11272)->Fill(z,polarRadius, iKap * fillValue * costhetacorrection );
975 
976  // Aluminium
977  hmgr->getHistoProf1(11340)->Fill(polarRadius,theTotalIL_ALU);
978  hmgr->getHistoProf2(11350)->Fill(z,polarRadius,theTotalIL_ALU);
979  hmgr->getHistoProf2(11352)->Fill(z,polarRadius,theTotalIL_ALU * costhetacorrection );
980  hmgr->getHisto2(11360)->Fill(z,polarRadius,iAlu*fillValue);
981  hmgr->getHistoProf2(11370)->Fill(z,polarRadius,iAlu*fillValue);
982  hmgr->getHistoProf2(11372)->Fill(z,polarRadius, iAlu * fillValue * costhetacorrection );
983 
984  }
985 
986  }
987 
988  // rr
989  } else {
990  std::cout << "*** WARNING This event is out of the acceptance *** " << std::endl;
991  std::cout << "eta = " << theData->getEta()
992  << "\t phi = " << theData->getPhi()
993  << "\t x/X0 = " << theData->getTotalMB()
994  << "\t l/l0 = " << theData->getTotalIL()
995  << "\t steps = " << theData->getNumberOfSteps()
996  << std::endl;
997  std::cout << "***" << std::endl;
998  }
999 
1000 
1001 }
1002 
1004 {
1005 
1006  hmgr->getHisto2(60)->Divide(hmgr->getHisto2(999));
1007  hmgr->getHisto2(160)->Divide(hmgr->getHisto2(999));
1008  hmgr->getHisto2(260)->Divide(hmgr->getHisto2(999));
1009  hmgr->getHisto2(360)->Divide(hmgr->getHisto2(999));
1010  hmgr->getHisto2(460)->Divide(hmgr->getHisto2(999));
1011  hmgr->getHisto2(560)->Divide(hmgr->getHisto2(999));
1012  hmgr->getHisto2(660)->Divide(hmgr->getHisto2(999));
1013  hmgr->getHisto2(760)->Divide(hmgr->getHisto2(999));
1014  hmgr->getHisto2(860)->Divide(hmgr->getHisto2(999));
1015  hmgr->getHisto2(960)->Divide(hmgr->getHisto2(999));
1016  hmgr->getHisto2(1060)->Divide(hmgr->getHisto2(999));
1017  hmgr->getHisto2(1160)->Divide(hmgr->getHisto2(999));
1018  hmgr->getHisto2(1260)->Divide(hmgr->getHisto2(999));
1019  hmgr->getHisto2(1360)->Divide(hmgr->getHisto2(999));
1020 
1021  hmgr->getHisto2(10060)->Divide(hmgr->getHisto2(1999));
1022  hmgr->getHisto2(10160)->Divide(hmgr->getHisto2(1999));
1023  hmgr->getHisto2(10260)->Divide(hmgr->getHisto2(1999));
1024  hmgr->getHisto2(10360)->Divide(hmgr->getHisto2(1999));
1025  hmgr->getHisto2(10460)->Divide(hmgr->getHisto2(1999));
1026  hmgr->getHisto2(10560)->Divide(hmgr->getHisto2(1999));
1027  hmgr->getHisto2(10660)->Divide(hmgr->getHisto2(1999));
1028  hmgr->getHisto2(10760)->Divide(hmgr->getHisto2(1999));
1029  hmgr->getHisto2(10860)->Divide(hmgr->getHisto2(1999));
1030  hmgr->getHisto2(10960)->Divide(hmgr->getHisto2(1999));
1031  hmgr->getHisto2(11060)->Divide(hmgr->getHisto2(1999));
1032  hmgr->getHisto2(11160)->Divide(hmgr->getHisto2(1999));
1033  hmgr->getHisto2(11260)->Divide(hmgr->getHisto2(1999));
1034  hmgr->getHisto2(11360)->Divide(hmgr->getHisto2(1999));
1035 
1036  std::cout << "=== save user histos ===" << std::endl;
1037  hmgr->save( theFileName );
1038 
1039 }
1040 
1041 
MaterialBudgetHGCalHistos(std::shared_ptr< MaterialBudgetData > data, std::shared_ptr< TestHistoMgr > mgr, const std::string &fileName)
T sqrt(T t)
Definition: SSEVec.h:18
Cos< T >::type cos(const T &t)
Definition: Cos.h:22
const T & max(const T &a, const T &b)
double b
Definition: hdecay.h:120
char data[epos_bytes_allocation]
Definition: EPOS_Wrapper.h:82
double a
Definition: hdecay.h:121
std::shared_ptr< TestHistoMgr > hmgr
long double T
std::shared_ptr< MaterialBudgetData > theData
Power< A, B >::type pow(const A &a, const B &b)
Definition: Power.h:40