@@ -31,8 +31,6 @@ o2::base::MatLayerCylSet mbLUT;
3131
3232bool testMBLUT (const std ::string & lutFile = "matbud.root" );
3333
34- bool buildMatBudLUT (int nTst = 60 , int maxLr = -1 , const std ::string & outFile = "matbud.root" , const std ::string & geomName = "" );
35-
3634struct LrData {
3735 float rMin = 0.f ;
3836 float rMax = 0.f ;
@@ -46,14 +44,17 @@ struct LrData {
4644std ::vector < LrData > lrData ;
4745void configLayers ();
4846
49- bool buildMatBudLUT (int nTst , int maxLr , const std ::string & outFile , const std ::string & geomNameInput )
47+ bool buildMatBudLUT (int nTst = 30 , int maxLr = -1 , const std ::string & outFile = "matbud.root" , const std ::string & geomNamePrefix = "o2sim" , const std :: string & opts = "" )
5048{
51- auto geomName = o2 ::base ::NameConf ::getGeomFileName (geomNameInput );
49+ auto geomName = o2 ::base ::NameConf ::getGeomFileName (geomNamePrefix );
5250 if (gSystem -> AccessPathName (geomName .c_str ())) { // if needed, create geometry
53- std ::cout << geomName << " does not exist. Will create it\n" ;
54- gSystem -> Exec ("$O2_ROOT/bin/o2-sim -n 0 --detectorList ALICE2.1" );
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 --detectorList ALICE2.1 --configKeyValues \"" << opts << "\" --field 0 -o " << geomNamePrefix ;
55+ gSystem -> Exec (str .str ().c_str ());
5556 }
56- o2 ::base ::GeometryManager ::loadGeometry (geomNameInput );
57+ o2 ::base ::GeometryManager ::loadGeometry (geomNamePrefix );
5758 configLayers ();
5859
5960 if (maxLr < 1 ) {
@@ -257,7 +258,9 @@ void configLayers()
257258
258259 // air space between Middle and Outer Barrels
259260 zSpanH = 80.f ;
260- lrData .emplace_back (lrData .back ().rMax , 33.5 , zSpanH );
261+ zBin = 10. ;
262+ rphiBin = lrData .back ().rMax * TMath ::Pi () * 2 / 18 ;
263+ lrData .emplace_back (lrData .back ().rMax , 33.5 , zSpanH , zBin , rphiBin );
261264
262265 //===================================================================================
263266 // ITS Outer barrel
@@ -267,29 +270,29 @@ void configLayers()
267270 zBin = 1. ;
268271 do {
269272 auto rmean = lrData .back ().rMax + drStep / 2 ;
270- rphiBin = rmean * TMath ::Pi () * 2 / (nStave * 10 );
273+ rphiBin = rmean * TMath ::Pi () * 2 / (nStave * 15 );
271274 lrData .emplace_back (lrData .back ().rMax , lrData .back ().rMax + drStep , zSpanH , zBin , rphiBin );
272275 } while (lrData .back ().rMax < 36. - kToler );
273276
274277 drStep = 1. ;
275278 do {
276279 auto rmean = lrData .back ().rMax + drStep / 2 ;
277- rphiBin = rmean * TMath ::Pi () * 2 / (nStave * 10 );
280+ rphiBin = rmean * TMath ::Pi () * 2 / (nStave * 15 );
278281 lrData .emplace_back (lrData .back ().rMax , lrData .back ().rMax + drStep , zSpanH , zBin , rphiBin );
279282 } while (lrData .back ().rMax < 38.5 - kToler );
280283
281284 nStave = mp .getNStavesOnLr (6 ); // Lr 6
282285 drStep = 0.25 ;
283286 do {
284287 auto rmean = lrData .back ().rMax + drStep / 2 ;
285- rphiBin = rmean * TMath ::Pi () * 2 / (nStave * 10 );
288+ rphiBin = rmean * TMath ::Pi () * 2 / (nStave * 15 );
286289 lrData .emplace_back (lrData .back ().rMax , lrData .back ().rMax + drStep , zSpanH , zBin , rphiBin );
287290 } while (lrData .back ().rMax < 41. - kToler );
288291
289292 drStep = 1. ;
290293 do {
291294 auto rmean = lrData .back ().rMax + drStep / 2 ;
292- rphiBin = rmean * TMath ::Pi () * 2 / (nStave * 10 );
295+ rphiBin = rmean * TMath ::Pi () * 2 / (nStave * 15 );
293296 lrData .emplace_back (lrData .back ().rMax , lrData .back ().rMax + drStep , zSpanH , zBin , rphiBin );
294297 } while (lrData .back ().rMax < 44. - kToler );
295298
@@ -309,15 +312,20 @@ void configLayers()
309312 } while (lrData .back ().rMax < 55. - kToler );
310313
311314 zSpanH = 120.f ;
312- lrData .emplace_back (lrData .back ().rMax , 56.5 , zSpanH );
313- lrData .emplace_back (lrData .back ().rMax , 60.5 , zSpanH );
314- lrData .emplace_back (lrData .back ().rMax , 61.5 , zSpanH );
315+ zBin = 10. ;
316+ rphiBin = lrData .back ().rMax * TMath ::Pi () * 2 / 18 ;
317+ lrData .emplace_back (lrData .back ().rMax , 56.5 , zSpanH , zBin , rphiBin );
318+ rphiBin = lrData .back ().rMax * TMath ::Pi () * 2 / 18 ;
319+ lrData .emplace_back (lrData .back ().rMax , 60.5 , zSpanH , zBin , rphiBin );
320+ rphiBin = lrData .back ().rMax * TMath ::Pi () * 2 / 18 ;
321+ lrData .emplace_back (lrData .back ().rMax , 61.5 , zSpanH , zBin , rphiBin );
315322
316323 zSpanH = 150.f ;
317324 drStep = 3.5 ;
318325 zBin = 15. ;
319- rphiBin = 10 ;
320326 do {
327+ auto rmean = lrData .back ().rMax + drStep / 2 ;
328+ rphiBin = rmean * TMath ::Pi () * 2 / (NSect * 2 );
321329 lrData .emplace_back (lrData .back ().rMax , lrData .back ().rMax + drStep , zSpanH , zBin , rphiBin );
322330 } while (lrData .back ().rMax < 68.5 - kToler );
323331
@@ -343,7 +351,7 @@ void configLayers()
343351 zBin = 2 ;
344352 {
345353 auto rmean = (lrData .back ().rMax + 78.5 ) / 2 ;
346- rphiBin = rmean * TMath ::Pi () * 2 / (NSect * 12 );
354+ rphiBin = rmean * TMath ::Pi () * 2 / (NSect * 24 );
347355 lrData .emplace_back (lrData .back ().rMax , 84.5 , zSpanH , zBin , rphiBin );
348356 }
349357
0 commit comments