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
2830o2 ::base ::MatLayerCylSet mbLUT ;
2931
3032bool 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
3436struct LrData {
3537 float rMin = 0.f ;
@@ -44,17 +46,14 @@ struct LrData {
4446std ::vector < LrData > lrData ;
4547void 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