Skip to content

Commit fd3532d

Browse files
committed
Improve segmentation of material LUT generation
See https://its.cern.ch/jira/browse/O2-6417 for difference.
1 parent 68f955b commit fd3532d

File tree

1 file changed

+27
-21
lines changed

1 file changed

+27
-21
lines changed

Detectors/Base/test/buildMatBudLUT.C

Lines changed: 27 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -17,19 +17,21 @@
1717
#include "DetectorsBase/MatLayerCyl.h"
1818
#include "DetectorsBase/GeometryManager.h"
1919
#include "ITSMFTReconstruction/ChipMappingITS.h"
20+
#include "ITS3Simulation/DescriptorInnerBarrelITS3.h"
21+
#include "ITS3Base/SpecsV2.h"
2022
#include "CommonUtils/NameConf.h"
2123
#include <TFile.h>
2224
#include <TSystem.h>
2325
#include <TStopwatch.h>
2426
#endif
2527

26-
#ifndef GPUCA_ALIGPUCODE // this part is unvisible on GPU version
28+
#ifndef GPUCA_ALIGPUCODE // this part is invisible on GPU version
2729

2830
o2::base::MatLayerCylSet mbLUT;
2931

3032
bool testMBLUT(const std::string& lutFile = "matbud.root");
3133

32-
bool buildMatBudLUT(int nTst = 30, int maxLr = -1, const std::string& outFile = "matbud.root", const std::string& geomNamePrefix = "o2sim", const std::string& opts = "");
34+
bool buildMatBudLUT(int nTst = 60, int maxLr = -1, const std::string& outFile = "matbud.root", const std::string& geomName = "o2sim_geometry-aligned.root");
3335

3436
struct LrData {
3537
float rMin = 0.f;
@@ -44,17 +46,14 @@ struct LrData {
4446
std::vector<LrData> lrData;
4547
void configLayers();
4648

47-
bool buildMatBudLUT(int nTst, int maxLr, const std::string& outFile, const std::string& geomNamePrefix, const std::string& opts)
49+
bool buildMatBudLUT(int nTst, int maxLr, const std::string& outFile, const std::string& geomNameInput)
4850
{
49-
auto geomName = o2::base::NameConf::getGeomFileName(geomNamePrefix);
51+
auto geomName = o2::base::NameConf::getGeomFileName(geomNameInput);
5052
if (gSystem->AccessPathName(geomName.c_str())) { // if needed, create geometry
51-
std::cout << geomName << " does not exist. Will create it on the fly\n";
52-
std::stringstream str;
53-
// constructing an **unaligned** geom (Geant3 used since faster initialization) --> can be avoided by passing an existing geometry
54-
str << "${O2_ROOT}/bin/o2-sim-serial -n 0 -e TGeant3 --configKeyValues \"" << opts << "\" --field 0 -o " << geomNamePrefix;
55-
gSystem->Exec(str.str().c_str());
53+
std::cout << geomName << " does not exist. Will create it\n";
54+
gSystem->Exec("$O2_ROOT/bin/o2-sim -n 0 --detectorList ALICE2.1");
5655
}
57-
o2::base::GeometryManager::loadGeometry(geomNamePrefix);
56+
o2::base::GeometryManager::loadGeometry(geomNameInput);
5857
configLayers();
5958

6059
if (maxLr < 1) {
@@ -64,7 +63,7 @@ bool buildMatBudLUT(int nTst, int maxLr, const std::string& outFile, const std::
6463
}
6564
for (int i = 0; i < maxLr; i++) {
6665
auto& l = lrData[i];
67-
printf("L:%3d %6.2f<R<%6.2f ZH=%5.1f | dz = %6.2f drph = %6.2f\n", i, l.rMin, l.rMax, l.zHalf, l.dZMin, l.dRPhiMin);
66+
printf("L:%3d %6.4f<R<%6.4f ZH=%5.4f | dz = %6.4f drph = %6.4f\n", i, l.rMin, l.rMax, l.zHalf, l.dZMin, l.dRPhiMin);
6867
mbLUT.addLayer(l.rMin, l.rMax, l.zHalf, l.dZMin, l.dRPhiMin);
6968
}
7069

@@ -249,7 +248,9 @@ void configLayers()
249248

250249
// air space between Middle and Outer Barrels
251250
zSpanH = 80.f;
252-
lrData.emplace_back(LrData(lrData.back().rMax, 33.5, zSpanH));
251+
zBin = 10.;
252+
rphiBin = lrData.back().rMax * TMath::Pi() * 2 / 18;
253+
lrData.emplace_back(LrData(lrData.back().rMax, 33.5, zSpanH, zBin, rphiBin));
253254

254255
//===================================================================================
255256
// ITS Outer barrel
@@ -259,29 +260,29 @@ void configLayers()
259260
zBin = 1.;
260261
do {
261262
auto rmean = lrData.back().rMax + drStep / 2;
262-
rphiBin = rmean * TMath::Pi() * 2 / (nStave * 10);
263+
rphiBin = rmean * TMath::Pi() * 2 / (nStave * 15);
263264
lrData.emplace_back(LrData(lrData.back().rMax, lrData.back().rMax + drStep, zSpanH, zBin, rphiBin));
264265
} while (lrData.back().rMax < 36. - kToler);
265266

266267
drStep = 1.;
267268
do {
268269
auto rmean = lrData.back().rMax + drStep / 2;
269-
rphiBin = rmean * TMath::Pi() * 2 / (nStave * 10);
270+
rphiBin = rmean * TMath::Pi() * 2 / (nStave * 15);
270271
lrData.emplace_back(LrData(lrData.back().rMax, lrData.back().rMax + drStep, zSpanH, zBin, rphiBin));
271272
} while (lrData.back().rMax < 38.5 - kToler);
272273

273274
nStave = mp.getNStavesOnLr(6); // Lr 6
274275
drStep = 0.25;
275276
do {
276277
auto rmean = lrData.back().rMax + drStep / 2;
277-
rphiBin = rmean * TMath::Pi() * 2 / (nStave * 10);
278+
rphiBin = rmean * TMath::Pi() * 2 / (nStave * 15);
278279
lrData.emplace_back(LrData(lrData.back().rMax, lrData.back().rMax + drStep, zSpanH, zBin, rphiBin));
279280
} while (lrData.back().rMax < 41. - kToler);
280281

281282
drStep = 1.;
282283
do {
283284
auto rmean = lrData.back().rMax + drStep / 2;
284-
rphiBin = rmean * TMath::Pi() * 2 / (nStave * 10);
285+
rphiBin = rmean * TMath::Pi() * 2 / (nStave * 15);
285286
lrData.emplace_back(LrData(lrData.back().rMax, lrData.back().rMax + drStep, zSpanH, zBin, rphiBin));
286287
} while (lrData.back().rMax < 44. - kToler);
287288

@@ -301,15 +302,20 @@ void configLayers()
301302
} while (lrData.back().rMax < 55. - kToler);
302303

303304
zSpanH = 120.f;
304-
lrData.emplace_back(LrData(lrData.back().rMax, 56.5, zSpanH));
305-
lrData.emplace_back(LrData(lrData.back().rMax, 60.5, zSpanH));
306-
lrData.emplace_back(LrData(lrData.back().rMax, 61.5, zSpanH));
305+
zBin = 10.;
306+
rphiBin = lrData.back().rMax * TMath::Pi() * 2 / 18;
307+
lrData.emplace_back(LrData(lrData.back().rMax, 56.5, zSpanH, zBin, rphiBin));
308+
rphiBin = lrData.back().rMax * TMath::Pi() * 2 / 18;
309+
lrData.emplace_back(LrData(lrData.back().rMax, 60.5, zSpanH, zBin, rphiBin));
310+
rphiBin = lrData.back().rMax * TMath::Pi() * 2 / 18;
311+
lrData.emplace_back(LrData(lrData.back().rMax, 61.5, zSpanH, zBin, rphiBin));
307312

308313
zSpanH = 150.f;
309314
drStep = 3.5;
310315
zBin = 15.;
311-
rphiBin = 10;
312316
do {
317+
auto rmean = lrData.back().rMax + drStep / 2;
318+
rphiBin = rmean * TMath::Pi() * 2 / (NSect * 2);
313319
lrData.emplace_back(LrData(lrData.back().rMax, lrData.back().rMax + drStep, zSpanH, zBin, rphiBin));
314320
} while (lrData.back().rMax < 68.5 - kToler);
315321

@@ -335,7 +341,7 @@ void configLayers()
335341
zBin = 2;
336342
{
337343
auto rmean = (lrData.back().rMax + 78.5) / 2;
338-
rphiBin = rmean * TMath::Pi() * 2 / (NSect * 12);
344+
rphiBin = rmean * TMath::Pi() * 2 / (NSect * 24);
339345
lrData.emplace_back(LrData(lrData.back().rMax, 84.5, zSpanH, zBin, rphiBin));
340346
}
341347

0 commit comments

Comments
 (0)