BmnRoot 26.10.0-18-g4e3414f9
Software framework of the BM@N experiment
Loading...
Searching...
No Matches
BmnInnerTrackerGeometryDraw.cxx
Go to the documentation of this file.
2
4{
5 // 1. Initialize GEM and SILICON geometries to be used ...
6 TString gPathConfig = gSystem->Getenv("VMCWORKDIR");
7 fGEM = new BmnGemStripStationSet(gPathConfig + "/parameters/gem/XMLConfigs/GemRunSpring2018.xml");
8 fSILICON = new BmnSiliconStationSet(gPathConfig + "/parameters/silicon/XMLConfigs/SiliconRunSpring2018.xml");
9
10 // 2. Create box, layer and dead zone borders ...
13}
14
16{
17 if (fGEM)
18 delete fGEM;
19
20 if (fSILICON)
21 delete fSILICON;
22}
23
25{
26 const Int_t nMods = 2;
27 const Int_t nLayers = 4;
28
29 gemModBoxes = new TBox**[fGEM->GetNStations()];
30 gemLayBoxes = new TBox***[fGEM->GetNStations()];
31 gemDeadZones = new TPolyLine***[fGEM->GetNStations()];
32
33 for (Int_t iStat = 0; iStat < fGEM->GetNStations(); iStat++) {
34 gemModBoxes[iStat] = new TBox*[nMods];
35 gemLayBoxes[iStat] = new TBox**[nMods];
36 gemDeadZones[iStat] = new TPolyLine**[nMods];
37
38 for (Int_t iMod = 0; iMod < fGEM->GetStation(iStat)->GetNModules(); iMod++) {
39 BmnGemStripModule* mod = fGEM->GetStation(iStat)->GetModule(iMod);
40
41 Double_t xmin = -mod->GetXMinModule();
42 Double_t xmax = -mod->GetXMaxModule();
43 Double_t ymin = mod->GetYMinModule();
44 Double_t ymax = mod->GetYMaxModule();
45
46 gemModBoxes[iStat][iMod] = new TBox(xmin, ymin, xmax, ymax);
47 gemLayBoxes[iStat][iMod] = new TBox*[nLayers];
48 gemDeadZones[iStat][iMod] = new TPolyLine*[nLayers];
49
50 gemModBoxes[iStat][iMod]->SetLineColorAlpha(TColor::GetColor("#009900"), 0.3);
51 gemModBoxes[iStat][iMod]->SetLineStyle(1);
52 gemModBoxes[iStat][iMod]->SetLineWidth(1);
53
54 gemModBoxes[iStat][iMod]->SetFillColorAlpha(TColor::GetColor("#cccccc"), 0.3);
55 gemModBoxes[iStat][iMod]->SetFillStyle(0); // 0 - not filled, 1001 - solid
56
57 for (Int_t iLayer = 0; iLayer < fGEM->GetStation(iStat)->GetModule(iMod)->GetNStripLayers(); iLayer++) {
58 BmnGemStripLayer layer = fGEM->GetStation(iStat)->GetModule(iMod)->GetStripLayer(iLayer);
59
60 // Get dead zones per each layer ...
61 vector<DeadZoneOfStripLayer> DeadZones = layer.GetDeadZones();
62 Int_t NDeadZones = DeadZones.size();
63
64 gemDeadZones[iStat][iMod][iLayer] = new TPolyLine[NDeadZones];
65 gemDeadZones[iStat][iMod][iLayer]->SetFillStyle(0); // 0 - not filled, 1001 - solid
66
67 for (Int_t iZone = 0; iZone < NDeadZones; ++iZone) {
68 DeadZoneOfStripLayer dead_zone = DeadZones[iZone];
69
70 for (Int_t ipoint = 0; ipoint < dead_zone.GetNPoints(); ++ipoint) {
71 Double_t x = -dead_zone.GetXPoint(ipoint);
72 Double_t y = dead_zone.GetYPoint(ipoint);
73 gemDeadZones[iStat][iMod][iLayer][iZone].SetNextPoint(x, y);
74 if (ipoint == dead_zone.GetNPoints() - 1) {
75 gemDeadZones[iStat][iMod][iLayer][iZone].SetNextPoint(dead_zone.GetXPoint(0),
76 dead_zone.GetYPoint(0));
77 }
78 }
79 }
80
81 Double_t xminL = -layer.GetXMinLayer();
82 Double_t xmaxL = -layer.GetXMaxLayer();
83 Double_t yminL = layer.GetYMinLayer();
84 Double_t ymaxL = layer.GetYMaxLayer();
85
86 gemLayBoxes[iStat][iMod][iLayer] = new TBox(xminL, yminL, xmaxL, ymaxL);
87 gemLayBoxes[iStat][iMod][iLayer]->SetLineColorAlpha(TColor::GetColor("#009900"), 0.3);
88 gemLayBoxes[iStat][iMod][iLayer]->SetLineStyle(1);
89 gemLayBoxes[iStat][iMod][iLayer]->SetLineWidth(1);
90
91 gemLayBoxes[iStat][iMod][iLayer]->SetFillColorAlpha(TColor::GetColor("#cccccc"), 0.3);
92 gemLayBoxes[iStat][iMod][iLayer]->SetFillStyle(0); // 0 - not filled, 1001 - solid
93 }
94 }
95 }
96}
97
99{
100 const Int_t nMods = 8;
101 const Int_t nLayers = 4;
102
103 siliconModBoxes = new TBox**[fSILICON->GetNStations()];
104 siliconLayBoxes = new TBox***[fSILICON->GetNStations()];
105 siliconDeadZones = new TPolyLine***[fSILICON->GetNStations()];
106
107 for (Int_t iStat = 0; iStat < fSILICON->GetNStations(); iStat++) {
108 siliconModBoxes[iStat] = new TBox*[nMods];
109 siliconLayBoxes[iStat] = new TBox**[nMods];
110 siliconDeadZones[iStat] = new TPolyLine**[nMods];
111
112 for (Int_t iMod = 0; iMod < fSILICON->GetStation(iStat)->GetNModules(); iMod++) {
113 BmnSiliconModule* mod = fSILICON->GetStation(iStat)->GetModule(iMod);
114
115 Double_t xmin = -mod->GetXMinModule();
116 Double_t xmax = -mod->GetXMaxModule();
117 Double_t ymin = mod->GetYMinModule();
118 Double_t ymax = mod->GetYMaxModule();
119
120 siliconModBoxes[iStat][iMod] = new TBox(xmin, ymin, xmax, ymax);
121 siliconLayBoxes[iStat][iMod] = new TBox*[nLayers];
122 siliconDeadZones[iStat][iMod] = new TPolyLine*[nLayers];
123
124 siliconModBoxes[iStat][iMod] = new TBox(xmin, ymin, xmax, ymax);
125 siliconModBoxes[iStat][iMod]->SetLineColorAlpha(TColor::GetColor("#009900"), 0.3);
126 siliconModBoxes[iStat][iMod]->SetLineStyle(1);
127 siliconModBoxes[iStat][iMod]->SetLineWidth(1);
128
129 siliconModBoxes[iStat][iMod]->SetFillColorAlpha(TColor::GetColor("#cccccc"), 0.3);
130 siliconModBoxes[iStat][iMod]->SetFillStyle(0); // 0 - not filled, 1001 - solid
131
132 for (Int_t iLayer = 0; iLayer < fSILICON->GetStation(iStat)->GetModule(iMod)->GetNStripLayers(); iLayer++) {
133 BmnSiliconLayer layer = fSILICON->GetStation(iStat)->GetModule(iMod)->GetStripLayer(iLayer);
134
135 // Get dead zones per each layer ...
136 vector<DeadZoneOfStripLayer> DeadZones = layer.GetDeadZones();
137 Int_t NDeadZones = DeadZones.size();
138
139 siliconDeadZones[iStat][iMod][iLayer] = new TPolyLine[NDeadZones];
140 if (iStat == 2 && iMod == 7 && (iLayer == 0 || iLayer == 2))
141 siliconDeadZones[iStat][iMod][iLayer]->SetFillStyle(0); // 0 - not filled, 1001 - solid
142
143 for (Int_t iZone = 0; iZone < NDeadZones; ++iZone) {
144 DeadZoneOfStripLayer dead_zone = DeadZones[iZone];
145
146 for (Int_t ipoint = 0; ipoint < dead_zone.GetNPoints(); ++ipoint) {
147 Double_t x = -dead_zone.GetXPoint(ipoint);
148 Double_t y = dead_zone.GetYPoint(ipoint);
149 siliconDeadZones[iStat][iMod][iLayer][iZone].SetNextPoint(x, y);
150 if (ipoint == dead_zone.GetNPoints() - 1) {
151 siliconDeadZones[iStat][iMod][iLayer][iZone].SetNextPoint(dead_zone.GetXPoint(0),
152 dead_zone.GetYPoint(0));
153 }
154 }
155 }
156
157 Double_t xminL = -layer.GetXMinLayer();
158 Double_t xmaxL = -layer.GetXMaxLayer();
159 Double_t yminL = layer.GetYMinLayer();
160 Double_t ymaxL = layer.GetYMaxLayer();
161
162 siliconLayBoxes[iStat][iMod][iLayer] = new TBox(xminL, yminL, xmaxL, ymaxL);
163 siliconLayBoxes[iStat][iMod][iLayer]->SetLineColorAlpha(TColor::GetColor("#009900"), 0.3);
164 siliconLayBoxes[iStat][iMod][iLayer]->SetLineStyle(1);
165 siliconLayBoxes[iStat][iMod][iLayer]->SetLineWidth(1);
166 siliconLayBoxes[iStat][iMod][iLayer]->SetFillColorAlpha(TColor::GetColor("#cccccc"), 0.3);
167 siliconLayBoxes[iStat][iMod][iLayer]->SetFillStyle(0); // 0 - not filled, 1001 - solid
168 }
169 }
170 }
171}
int Int_t
double Double_t
R__EXTERN TSystem * gSystem
Double_t GetYMinLayer()
Double_t GetYMaxLayer()
Double_t GetXMinLayer()
vector< DeadZoneOfStripLayer > GetDeadZones()
Double_t GetXMaxLayer()
Double_t GetXMaxLayer()
Double_t GetYMinLayer()
Double_t GetYMaxLayer()
vector< DeadZoneOfStripLayer > GetDeadZones()
Double_t GetXMinLayer()
Double_t GetYMinModule()
Double_t GetXMinModule()
Double_t GetXMaxModule()
Double_t GetYMaxModule()
Double_t GetXPoint(Int_t index)
Double_t GetYPoint(Int_t index)
static Int_t GetColor(const char *hexcolor)