1 from __future__
import print_function
2 from ROOT
import TStyle, kWhite, kTRUE
3 from ROOT
import gROOT, gStyle
4 from ROOT
import kGray, kAzure, kMagenta, kOrange, kWhite
5 from ROOT
import kRed, kBlue, kGreen, kPink, kYellow
6 from ROOT
import TLine, TLatex, TColor
8 from collections
import namedtuple, OrderedDict
9 from math
import sin, cos, tan, atan, exp, pi
10 from array
import array
12 from Validation.Geometry.plot_utils
import Plot_params
15 plots.setdefault(
'x_vs_eta',
Plot_params(10,
'#eta',
'x/X_{0}', 0.0, 2.575, -4.0, 4.0,
'', 0, 0., 0., 0, 1))
16 plots.setdefault(
'x_vs_phi',
Plot_params(20,
'#varphi [rad]',
'x/X_{0}', 0.0, 6.2, -4.0, 4.0,
'', 0, 0., 0., 0, 1))
17 plots.setdefault(
'x_vs_R',
Plot_params(40,
'R [cm]',
'x/X_{0}', 0.0, 70.0, 0.0, 1200.0,
'', 0, 0., 0., 0, 1))
18 plots.setdefault(
'l_vs_eta',
Plot_params(10010,
'#eta',
'x/#lambda_{I}', 0.0, 0.73, -4.0, 4.0,
'', 0, 0., 0., 0, 1))
19 plots.setdefault(
'l_vs_phi',
Plot_params(10020,
'#varphi [rad]',
'x/#lambda_{I}', 0.0, 1.2, -4.0, 4.0,
'', 0, 0., 0., 0, 1))
20 plots.setdefault(
'l_vs_R',
Plot_params(10040,
'R [cm]',
'x/#lambda_{I}', 0.0, 7.5, 0.0, 1200.0,
'', 0, 0., 0., 0, 1))
21 plots.setdefault(
'x_vs_eta_vs_phi',
Plot_params(30,
'#eta',
'#varphi', 0., 0., 0., 0.,
'x/X_{0}', 0, -1., -1., 0, 1))
22 plots.setdefault(
'l_vs_eta_vs_phi',
Plot_params(10030,
'#eta',
'#varphi', 0., 0., 0., 0.,
'x/#lambda_{I}', 0, -1, -1, 0, 1))
23 plots.setdefault(
'x_vs_z_vs_Rsum',
Plot_params(50,
'z [mm]',
'R [mm]', 0., 0., 0., 0.,
'#Sigmax/X_{0}', 1, -1., -1., 0, 0))
24 plots.setdefault(
'x_vs_z_vs_Rsumcos',
Plot_params(52,
'z [mm]',
'R [mm]', 0., 0., 0., 0.,
'#Sigmax/X_{0}', 1, -1., -1., 0, 0))
26 plots.setdefault(
'x_vs_z_vs_Rloc',
Plot_params(70,
'z [mm]',
'R [mm]', 0., 0., 0., 0.,
'x/X_{0}', 1, -1., -1., 0, 0))
27 plots.setdefault(
'x_vs_z_vs_Rloccos',
Plot_params(72,
'z [mm]',
'R [mm]', 0., 0., 0., 0.,
'x/X_{0}', 1, -1., -1., 0, 0))
28 plots.setdefault(
'l_vs_z_vs_Rsum',
Plot_params(10050,
'z [mm]',
'R [mm]', 0., 0., 0., 0.,
'#Sigmax/#lambda_{I}', 1, -1., -1., 0, 0))
29 plots.setdefault(
'l_vs_z_vs_Rsumcos',
Plot_params(10052,
'z [mm]',
'R [mm]', 0., 0., 0., 0.,
'#Sigmax/#lambda_{I}', 1, -1., -1., 0, 0))
30 plots.setdefault(
'l_vs_z_vs_R',
Plot_params(10060,
'z [mm]',
'R [mm]', 0., 0., 0., 0.,
'1/#lambda_{I}', 1, -1., -1., 0, 0))
31 plots.setdefault(
'l_vs_z_vs_Rloc',
Plot_params(10070,
'z [mm]',
'R [mm]', 0., 0., 0., 0.,
'x/#lambda_{I}', 1, -1., -1., 0, 0))
32 plots.setdefault(
'l_vs_z_vs_Rloccos',
Plot_params(10072,
'z [mm]',
'R [mm]', 0., 0., 0., 0.,
'x/#lambda_{I}', 1, -1., -1., 0, 0))
33 plots.setdefault(
'x_over_l_vs_eta',
Plot_params(10,
'#eta',
'(x/X_{0})/(x/#lambda_{I})', 0., 0., 0., 0.,
'', 0, -1, -1, 0, 0))
34 plots.setdefault(
'x_over_l_vs_phi',
Plot_params(20,
'#varphi [rad]',
'(x/X_{0})/(x/#lambda_{I})', 0., 0., 0., 0.,
'', 0, -1, -1, 0, 0))
37 _LABELS2COMPS = {
'HGCal':
'HGCal',
39 'HGCalHE': [
'HGCalHEsil',
'HGCalHEmix']
49 COMPOUNDS = OrderedDict()
50 COMPOUNDS[
"HGCal"] = [
"HGCal"]
51 COMPOUNDS[
"HGCalEE"] = [
"HGCalEE"]
52 COMPOUNDS[
"HGCalHE"] = [
"HGCalHEsil",
"HGCalHEmix"]
57 DETECTORS = OrderedDict()
58 DETECTORS[
"HGCal"] = kAzure-5
59 DETECTORS[
"HGCalEE"] = kAzure-9
60 DETECTORS[
"HGCalHE"] = kOrange-2
71 sDETS[
"HGCalEE"] = kRed
72 sDETS[
"HGCalHEsil"] = kBlue
73 sDETS[
"HGCalHEmix"] = kGreen
83 hist_label_to_num = OrderedDict()
84 hist_label_to_num[
'COP'] = [100, 2,
'Copper']
85 hist_label_to_num[
'SCI'] = [200, 3,
'Scintillator']
86 hist_label_to_num[
'CAB'] = [300, 4,
'Cables']
87 hist_label_to_num[
'MNE'] = [400, 5,
'M_NEMA_FR4 plate']
88 hist_label_to_num[
'SIL'] = [500, 6,
'Silicon']
89 hist_label_to_num[
'OTH'] = [600, 7,
'Other']
90 hist_label_to_num[
'AIR'] = [700, 8,
'Air']
91 hist_label_to_num[
'SST'] = [800, 9,
'Stainless Steel']
92 hist_label_to_num[
'WCU'] = [900, 28,
'WCu']
93 hist_label_to_num[
'LEA'] = [1000, 12,
'Lead']
96 """The plots in the twiki are already too much and to avoid mistakes 97 we will try to automatize the procedure 101 label = label.replace(
" ",
"_")
107 zoomtitle =
"in all HGCal" 108 zoomdir =
"%s/" % label
109 elif zoom ==
"zplus":
110 zoomstring =
"_ZplusZoom" 111 zoomtitle =
"in Z+ endcap of HGCal" 112 zoomdir =
"%s/ZPlusZoom/" % label
113 elif zoom ==
"zminus":
114 zoomstring =
"_ZminusZoom" 115 zoomtitle =
"in Z- endcap of HGCal" 116 zoomdir =
"%s/ZMinusZoom/" % label
118 print(
"WRONG OPTION")
122 if plotname ==
"x_vs_z_vs_Rsum":
123 print(
"%%TWISTY{ mode=\"div\" showlink=\"Click to see the %s plots %s \" hidelink=\"Hide %s %s\" showimgright=\"%%ICONURLPATH{toggleopen-small}%%\" hideimgright=\"%%ICONURLPATH{toggleclose-small}%%\"}%%" % (label,zoomtitle, label, zoomtitle))
125 if "Rsum" in plotname
and "x_vs" in plotname
and not "cos" in plotname:
126 print(
"| <img alt=\"HGCal_%s%s%s.png\" height=\"300\" width=\"550\" src=\"http://apsallid.web.cern.ch/apsallid/HGCalMaterial/%sHGCal_%s%s%s.png\" /> | The plot on the left shows the 2D profile histogram for *%s* %s that displays the mean value of the material budget in units of radiation length in each R-z cell. R-z cell is 1 cm x 1 mm. The plot depicts the accumulated material budget as seen by the track, as the track travels throughout the detector.[[http://apsallid.web.cern.ch/apsallid/HGCalMaterial/%sHGCal_%s%s%s.pdf][Click to enlarge plot]] |" % (plotname,label,zoomstring,zoomdir,plotname,label,zoomstring, label, zoomtitle,zoomdir,plotname,label,zoomstring))
128 if "Rsum" in plotname
and "l_vs" in plotname
and not "cos" in plotname:
129 print(
"| <img alt=\"HGCal_%s%s%s.png\" height=\"300\" width=\"550\" src=\"http://apsallid.web.cern.ch/apsallid/HGCalMaterial/%sHGCal_%s%s%s.png\" /> | The plot on the left shows the 2D profile histogram for *%s* %s that displays the mean value of the material budget in units of interaction length in each R-z cell. R-z cell is 1 cm x 1 mm. The plot depicts the accumulated material budget as seen by the track, as the track travels throughout the detector.[[http://apsallid.web.cern.ch/apsallid/HGCalMaterial/%sHGCal_%s%s%s.pdf][Click to enlarge plot]] |" % (plotname,label,zoomstring,zoomdir,plotname,label,zoomstring, label, zoomtitle,zoomdir,plotname,label,zoomstring))
131 if "Rsumcos" in plotname
and "x_vs" in plotname:
132 print(
"| <img alt=\"HGCal_%s%s%s.png\" height=\"300\" width=\"550\" src=\"http://apsallid.web.cern.ch/apsallid/HGCalMaterial/%sHGCal_%s%s%s.png\" /> | The plot on the left shows the 2D profile histogram for *%s* %s that displays the mean value of the material budget in units of radiation length in each R-z cell. R-z cell is 1 cm x 1 mm. The plot depicts the orthogonal accumulated material budget, that is cos(theta) what the track sees.[[http://apsallid.web.cern.ch/apsallid/HGCalMaterial/%sHGCal_%s%s%s.pdf][Click to enlarge plot]] |" % (plotname,label,zoomstring,zoomdir,plotname,label,zoomstring, label, zoomtitle,zoomdir,plotname,label,zoomstring))
134 if "Rsumcos" in plotname
and "l_vs" in plotname:
135 print(
"| <img alt=\"HGCal_%s%s%s.png\" height=\"300\" width=\"550\" src=\"http://apsallid.web.cern.ch/apsallid/HGCalMaterial/%sHGCal_%s%s%s.png\" /> | The plot on the left shows the 2D profile histogram for *%s* %s that displays the mean value of the material budget in units of interaction length in each R-z cell. R-z cell is 1 cm x 1 mm. The plot depicts the orthogonal accumulated material budget, that is cos(theta) what the track sees.[[http://apsallid.web.cern.ch/apsallid/HGCalMaterial/%sHGCal_%s%s%s.pdf][Click to enlarge plot]] |" % (plotname,label,zoomstring,zoomdir,plotname,label,zoomstring, label, zoomtitle,zoomdir,plotname,label,zoomstring))
137 if "Rloc" in plotname
and "x_vs" in plotname
and not "cos" in plotname:
138 print(
"| <img alt=\"HGCal_%s%s%s.png\" height=\"300\" width=\"550\" src=\"http://apsallid.web.cern.ch/apsallid/HGCalMaterial/%sHGCal_%s%s%s.png\" /> | The plot on the left shows the 2D profile histogram for *%s* %s that displays the local mean value of the material budget in units of radiation length in each R-z cell. R-z cell is 1 cm x 1 mm. The plot depicts the local material budget as seen by the track, as the track travels throughout the detector.[[http://apsallid.web.cern.ch/apsallid/HGCalMaterial/%sHGCal_%s%s%s.pdf][Click to enlarge plot]] |" % (plotname,label,zoomstring,zoomdir,plotname,label,zoomstring, label, zoomtitle,zoomdir,plotname,label,zoomstring))
140 if "Rloc" in plotname
and "l_vs" in plotname
and not "cos" in plotname:
141 print(
"| <img alt=\"HGCal_%s%s%s.png\" height=\"300\" width=\"550\" src=\"http://apsallid.web.cern.ch/apsallid/HGCalMaterial/%sHGCal_%s%s%s.png\" /> | The plot on the left shows the 2D profile histogram for *%s* %s that displays the local mean value of the material budget in units of interaction length in each R-z cell. R-z cell is 1 cm x 1 mm. The plot depicts the local material budget as seen by the track, as the track travels throughout the detector.[[http://apsallid.web.cern.ch/apsallid/HGCalMaterial/%sHGCal_%s%s%s.pdf][Click to enlarge plot]] |" % (plotname,label,zoomstring,zoomdir,plotname,label,zoomstring, label, zoomtitle,zoomdir,plotname,label,zoomstring))
144 if plotname ==
"l_vs_z_vs_Rloc":
148 I won't put the local cos plots for now, only the sum cos above 149 if "Rloccos" in plotname and "x_vs" in plotname: 150 print "| <img alt=\"HGCal_%s%s%s.png\" height=\"300\" width=\"550\" src=\"http://apsallid.web.cern.ch/apsallid/HGCalMaterial/%sHGCal_%s%s%s.png\" /> | The plot on the left shows the 2D profile histogram for *%s* %s that displays the local mean value of the material budget in units of radiation length in each R-z cell. R-z cell is 1 cm x 1 mm. The plot depicts the orthogonal accumulated material budget, that is cos(theta) what the track sees.[[http://apsallid.web.cern.ch/apsallid/HGCalMaterial/%sHGCal_%s%s%s.pdf][Click to enlarge plot]] |" % (plotname,label,zoomstring,zoomdir,plotname,label,zoomstring, label, zoomtitle,zoomdir,plotname,label,zoomstring) 152 if "Rloccos" in plotname and "l_vs" in plotname: 153 print "| <img alt=\"HGCal_%s%s%s.png\" height=\"300\" width=\"550\" src=\"http://apsallid.web.cern.ch/apsallid/HGCalMaterial/%sHGCal_%s%s%s.png\" /> | The plot on the left shows the 2D profile histogram for *%s* %s that displays the local mean value of the material budget in units of interaction length in each R-z cell. R-z cell is 1 cm x 1 mm. The plot depicts the orthogonal accumulated material budget, that is cos(theta) what the track sees.[[http://apsallid.web.cern.ch/apsallid/HGCalMaterial/%sHGCal_%s%s%s.pdf][Click to enlarge plot]] |" % (plotname,label,zoomstring,zoomdir,plotname,label,zoomstring, label, zoomtitle,zoomdir,plotname,label,zoomstring) 159 ncolors =
array(
'i', [])
160 gStyle.SetNumberContours(NCont);
161 stops = [ 0.00, 0.10, 0.25, 0.45, 0.60, 0.75, 1.00 ]
162 red = [ 1.00, 0.00, 0.00, 0.00, 0.97, 0.97, 0.10 ]
163 green = [ 1.00, 0.97, 0.30, 0.40, 0.97, 0.00, 0.00 ]
164 blue = [ 1.00, 0.97, 0.97, 0.00, 0.00, 0.00, 0.00 ]
165 stopsArray =
array(
'd', stops)
166 redArray =
array(
'd', red)
167 greenArray =
array(
'd', green)
168 blueArray =
array(
'd', blue)
169 first_color_number = TColor.CreateGradientColorTable(NRGBs, stopsArray, redArray, greenArray, blueArray, NCont);
170 gStyle.SetNumberContours(NCont)
175 for i
in range(palsize):
176 palette.append(first_color_number+i)
177 palarray =
array(
'i',palette)
179 gStyle.SetPalette(palsize,palarray)
197 dEdx[
'Copper'] = 1.257
199 dEdx[
'H_Scintillator'] = 0.91512109*dEdx[
'C'] + 0.084878906*dEdx[
'H']
200 dEdx[
'Silicon'] = 0.3876
202 dEdx[
'M_NEMA_FR4_plate'] = 0.18077359*dEdx[
'Silicon'] + 0.4056325*dEdx[
'0'] + 0.27804208*dEdx[
'C'] + 0.068442752*dEdx[
'H'] + 0.067109079*dEdx[
'Br']
207 dEdx[
'StainlessSteel'] = 0.6996*dEdx[
'Fe']+0.01*dEdx[
'Mn']+0.19*dEdx[
'Cr']+0.1*dEdx[
'Ni']+0.0004*dEdx[
'C'];
209 dEdx[
'WCu'] = 0.75*dEdx[
'W']+0.25*dEdx[
'Copper']
214 dEdx[
'Cables'] = 0.586*dEdx[
'Copper'] + 0.259*dEdx[
'C'] + 0.138*dEdx[
'0'] + 0.017*dEdx[
'H']
217 MatXo = OrderedDict()
218 MatXo[
'Copper'] = 14.3559
219 MatXo[
'H_Scintillator'] = 425.393
220 MatXo[
'Cables'] = 66.722
221 MatXo[
'M_NEMA_FR4_plate'] = 175.056
222 MatXo[
'Silicon'] = 93.6762
224 MatXo[
'Air'] = 301522.
225 MatXo[
'StainlessSteel'] = 17.3555
226 MatXo[
'WCu'] = 5.1225
227 MatXo[
'Lead'] = 5.6118
S & print(S &os, JobReport::InputFile const &f)
def TwikiPrintout(plotname, label, zoom)