File indexing completed on 2024-04-06 12:32:14
0001
0002
0003 #include "tdrStyle.C"
0004 #include "CMS_lumi.C"
0005
0006 #include <iostream>
0007 #include <iomanip>
0008 #include <fstream>
0009 #include <cmath>
0010 #include "TStyle.h"
0011
0012
0013 TString theDirName = "Figures";
0014
0015
0016
0017
0018
0019
0020
0021 TProfile* prof_x0_BeamPipe;
0022 TProfile* prof_x0_PixBar;
0023 TProfile* prof_x0_PixFwdPlus;
0024 TProfile* prof_x0_PixFwdMinus;
0025 TProfile* prof_x0_TIB;
0026 TProfile* prof_x0_TIDF;
0027 TProfile* prof_x0_TIDB;
0028 TProfile* prof_x0_InnerServices;
0029 TProfile* prof_x0_TOB;
0030 TProfile* prof_x0_TEC;
0031 TProfile* prof_x0_Outside;
0032
0033 TProfile* prof_x0_SEN;
0034 TProfile* prof_x0_SUP;
0035 TProfile* prof_x0_ELE;
0036 TProfile* prof_x0_CAB;
0037 TProfile* prof_x0_COL;
0038 TProfile* prof_x0_OTH;
0039 TProfile* prof_x0_AIR;
0040
0041 TH1D* hist_x0_BeamPipe;
0042 TH1D* hist_x0_Pixel;
0043 TH1D* hist_x0_IB;
0044 TH1D* hist_x0_TOB;
0045 TH1D* hist_x0_TEC;
0046 TH1D* hist_x0_Outside;
0047
0048 TH1D* hist_x0_SEN;
0049 TH1D* hist_x0_SUP;
0050 TH1D* hist_x0_ELE;
0051 TH1D* hist_x0_CAB;
0052 TH1D* hist_x0_COL;
0053 TH1D* hist_x0_OTH;
0054
0055 float xmin;
0056 float xmax;
0057
0058 float ymin;
0059 float ymax;
0060
0061 void createPlots(TString plot);
0062
0063 using namespace std;
0064
0065
0066 void MaterialBudgetMtd() {
0067
0068 setTDRStyle();
0069
0070
0071 createPlots("x_vs_eta");
0072 createPlots("x_vs_phi");
0073 createPlots("l_vs_eta");
0074 createPlots("l_vs_phi");
0075 }
0076
0077 void createPlots(TString plot) {
0078 unsigned int plotNumber = 0;
0079 TString abscissaName = "dummy";
0080 TString ordinateName = "dummy";
0081 if (plot.CompareTo("x_vs_eta") == 0) {
0082 plotNumber = 10;
0083 abscissaName = TString("#eta");
0084 ordinateName = TString("t/X_{0}");
0085 ymin = 0.0;
0086 ymax = 0.8;
0087 xmin = -4.0;
0088 xmax = 4.0;
0089 } else if (plot.CompareTo("x_vs_phi") == 0) {
0090 plotNumber = 20;
0091 abscissaName = TString("#varphi [rad]");
0092 ordinateName = TString("t/X_{0}");
0093 ymin = 0.0;
0094 ymax = 0.8;
0095 xmin = -3.2;
0096 xmax = 3.2;
0097 } else if (plot.CompareTo("l_vs_eta") == 0) {
0098 plotNumber = 1010;
0099 abscissaName = TString("#eta");
0100 ordinateName = TString("t/#lambda_{I}");
0101 ymin = 0.0;
0102 ymax = 0.18;
0103 xmin = -4.0;
0104 xmax = 4.0;
0105 } else if (plot.CompareTo("l_vs_phi") == 0) {
0106 plotNumber = 1020;
0107 abscissaName = TString("#varphi [rad]");
0108 ordinateName = TString("t/#lambda_{I}");
0109 ymin = 0.0;
0110 ymax = 0.18;
0111 xmin = -3.2;
0112 xmax = 3.2;
0113 } else {
0114 cout << " error: chosen plot name not known " << plot << endl;
0115 return;
0116 }
0117
0118
0119 TString subDetectorFileName = "matbdg_Mtd.root";
0120
0121
0122 TFile* subDetectorFile = new TFile(subDetectorFileName);
0123 cout << "*** Open file... " << endl;
0124 cout << subDetectorFileName << endl;
0125 cout << "***" << endl;
0126
0127 TProfile* prof_x0 = (TProfile*)subDetectorFile->Get(Form("%u", plotNumber));
0128 TH1D* hist_x0 = (TH1D*)prof_x0->ProjectionX();
0129
0130 TProfile* prof_x0_SUP = (TProfile*)subDetectorFile->Get(Form("%u", 100 + plotNumber));
0131 TProfile* prof_x0_SEN = (TProfile*)subDetectorFile->Get(Form("%u", 200 + plotNumber));
0132 TProfile* prof_x0_CAB = (TProfile*)subDetectorFile->Get(Form("%u", 300 + plotNumber));
0133 TProfile* prof_x0_COL = (TProfile*)subDetectorFile->Get(Form("%u", 400 + plotNumber));
0134 TProfile* prof_x0_ELE = (TProfile*)subDetectorFile->Get(Form("%u", 500 + plotNumber));
0135 TProfile* prof_x0_OTH = (TProfile*)subDetectorFile->Get(Form("%u", 600 + plotNumber));
0136
0137 TH1D* hist_x0_SUP = (TH1D*)prof_x0_SUP->ProjectionX();
0138 TH1D* hist_x0_SEN = (TH1D*)prof_x0_SEN->ProjectionX();
0139 TH1D* hist_x0_CAB = (TH1D*)prof_x0_CAB->ProjectionX();
0140 TH1D* hist_x0_COL = (TH1D*)prof_x0_COL->ProjectionX();
0141 TH1D* hist_x0_ELE = (TH1D*)prof_x0_ELE->ProjectionX();
0142 TH1D* hist_x0_OTH = (TH1D*)prof_x0_OTH->ProjectionX();
0143
0144
0145
0146 int ksen = 27;
0147 int kele = 46;
0148 int kcab = kOrange - 8;
0149 int kcol = 30;
0150 int ksup = 38;
0151 int koth = kOrange - 2;
0152
0153 hist_x0_SEN->SetFillColor(ksen);
0154 hist_x0_ELE->SetFillColor(kele);
0155 hist_x0_CAB->SetFillColor(kcab);
0156 hist_x0_COL->SetFillColor(kcol);
0157 hist_x0_SUP->SetFillColor(ksup);
0158 hist_x0_OTH->SetFillColor(koth);
0159
0160
0161 TString stackTitle_Materials = Form("Mtd Material Budget;%s;%s", abscissaName.Data(), ordinateName.Data());
0162 THStack stack_x0_Materials("stack_x0", stackTitle_Materials);
0163 stack_x0_Materials.Add(hist_x0_SEN);
0164 stack_x0_Materials.Add(hist_x0_CAB);
0165 stack_x0_Materials.Add(hist_x0_COL);
0166 stack_x0_Materials.Add(hist_x0_ELE);
0167 stack_x0_Materials.Add(hist_x0_OTH);
0168 stack_x0_Materials.Add(hist_x0_SUP);
0169
0170
0171
0172
0173 int W = 800;
0174 int H = 600;
0175 int H_ref = 600;
0176 int W_ref = 800;
0177
0178
0179 float T = 0.08 * H_ref;
0180 float B = 0.12 * H_ref;
0181 float L = 0.12 * W_ref;
0182 float R = 0.04 * W_ref;
0183
0184 TCanvas* can_Materials = new TCanvas("can_Materials", "can_Materials", 50, 50, W, H);
0185 can_Materials->Range(0, 0, 25, 25);
0186 can_Materials->SetFillColor(kWhite);
0187 can_Materials->SetBorderMode(0);
0188 can_Materials->SetFrameFillStyle(0);
0189 can_Materials->SetFrameBorderMode(0);
0190 can_Materials->SetLeftMargin(L / W);
0191 can_Materials->SetRightMargin(R / W);
0192 can_Materials->SetTopMargin(T / H);
0193 can_Materials->SetBottomMargin(B / H);
0194 can_Materials->SetTickx(0);
0195 can_Materials->SetTicky(0);
0196 gStyle->SetOptStat(0);
0197
0198
0199
0200 stack_x0_Materials.SetMinimum(ymin);
0201 stack_x0_Materials.SetMaximum(ymax);
0202 stack_x0_Materials.Draw("HIST");
0203 stack_x0_Materials.GetXaxis()->SetLimits(xmin, xmax);
0204
0205
0206
0207 TLegend* theLegend_Materials = new TLegend(0.14, 0.8, 0.96, 0.92);
0208 theLegend_Materials->SetTextAlign(22);
0209 theLegend_Materials->SetNColumns(3);
0210 theLegend_Materials->SetFillColor(0);
0211 theLegend_Materials->SetFillStyle(0);
0212 theLegend_Materials->SetBorderSize(0);
0213
0214 theLegend_Materials->AddEntry(hist_x0_SEN, "Sensitive material", "f");
0215 theLegend_Materials->AddEntry(hist_x0_COL, "Support/cooling", "f");
0216 theLegend_Materials->AddEntry(hist_x0_ELE, "Electronics/services", "f");
0217
0218
0219
0220 theLegend_Materials->Draw();
0221
0222
0223 int iPeriod = 0;
0224 writeExtraText = true;
0225 extraText = "Simulation";
0226
0227
0228
0229
0230
0231
0232
0233 int iPos = 0;
0234
0235 CMS_lumi(can_Materials, iPeriod, iPos);
0236
0237
0238 can_Materials->Update();
0239 can_Materials->RedrawAxis();
0240 can_Materials->Draw();
0241
0242
0243 can_Materials->SaveAs(Form("%s/Mtd_Materials_%s.pdf", theDirName.Data(), plot.Data()));
0244
0245 can_Materials->SaveAs(Form("%s/Mtd_Materials_%s.root", theDirName.Data(), plot.Data()));
0246
0247
0248
0249 delete can_Materials;
0250 }