1818#include "DetectorsBase/GeometryManager.h"
1919#include "ITSMFTReconstruction/ChipMappingITS.h"
2020#include "ITS3Simulation/DescriptorInnerBarrelITS3.h"
21+ #include "ITS3Base/SpecsV2.h"
2122#include "CommonUtils/NameConf.h"
2223#include <TFile.h>
2324#include <TSystem.h>
@@ -30,7 +31,7 @@ o2::base::MatLayerCylSet mbLUT;
3031
3132bool testMBLUT (const std ::string & lutFile = "matbud.root" );
3233
33- bool buildMatBudLUT (int nTst = 30 , int maxLr = -1 , const std ::string & outFile = "matbud.root" , const std ::string & geomName = "" );
34+ bool buildMatBudLUT (int nTst = 60 , int maxLr = -1 , const std ::string & outFile = "matbud.root" , const std ::string & geomName = "" );
3435
3536struct LrData {
3637 float rMin = 0.f ;
@@ -50,7 +51,7 @@ bool buildMatBudLUT(int nTst, int maxLr, const std::string& outFile, const std::
5051 auto geomName = o2 ::base ::NameConf ::getGeomFileName (geomNameInput );
5152 if (gSystem -> AccessPathName (geomName .c_str ())) { // if needed, create geometry
5253 std ::cout << geomName << " does not exist. Will create it\n" ;
53- gSystem -> Exec ("$O2_ROOT/bin/o2-sim -n 0" );
54+ gSystem -> Exec ("$O2_ROOT/bin/o2-sim -n 0 --detectorList ALICE2.1 " );
5455 }
5556 o2 ::base ::GeometryManager ::loadGeometry (geomNameInput );
5657 configLayers ();
@@ -62,7 +63,7 @@ bool buildMatBudLUT(int nTst, int maxLr, const std::string& outFile, const std::
6263 }
6364 for (int i = 0 ; i < maxLr ; i ++ ) {
6465 auto& l = lrData [i ];
65- 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 );
6667 mbLUT .addLayer (l .rMin , l .rMax , l .zHalf , l .dZMin , l .dRPhiMin );
6768 }
6869
@@ -185,87 +186,78 @@ void configLayers()
185186 const float kToler = 1e-3 ; //
186187 float drStep = 0.f , zSpanH = 0.f , zBin = 0.f , rphiBin = 0.f , phiBin = 0.f ;
187188
188- o2 ::itsmft ::ChipMappingITS mp ;
189- int nStave = 0 ;
190- // rMin rMax zHalf
191- lrData .emplace_back (0.0f , 1.65f , 30.f );
189+ // Vacuum inside beam pipe
190+ lrData .emplace_back (0.0f , 1.6f , 30.f );
192191
193192 // beam pipe
194- lrData .emplace_back (lrData .back ().rMax , 1.8f , 30.f );
193+ lrData .emplace_back (lrData .back ().rMax , 1.65f , 30.f );
195194
196195 //===================================================================================
197196 // ITS3 Inner Barrel
198- drStep = 0.2 ;
197+ drStep = 0.1 ;
199198 zSpanH = 20. ;
200- rphiBin = 0.2 ; // 0.1
201- zBin = 0.5 ;
202- float drStepChip = 0.054 ; // gap and chip width
203- float drStepChip4Layer = 0.074 ; // gap and chip width
199+ rphiBin = 0.1 ;
200+ zBin = 0.1 ;
204201
205- // Layer 1
206- lrData .emplace_back (LrData (1.8f , 1.8f + drStepChip , zSpanH , zBin , rphiBin ));
207- // Air
208- do {
209- lrData .emplace_back (LrData (lrData .back ().rMax , lrData .back ().rMax + drStep , zSpanH , zBin , rphiBin ));
210- } while (lrData .back ().rMax < 2.4f - drStep + kToler );
211- lrData .emplace_back (LrData (lrData .back ().rMax , 2.4f , zSpanH , zBin , rphiBin ));
202+ // air and sensitive layers
203+ for (int iLayer {0 }; iLayer < (int )o2 ::its3 ::constants ::nLayers ; ++ iLayer ) {
204+ lrData .emplace_back (lrData .back ().rMax , o2 ::its3 ::constants ::radiiInner [iLayer ], zSpanH , zBin , rphiBin );
205+ lrData .emplace_back (lrData .back ().rMax , o2 ::its3 ::constants ::radiiOuter [iLayer ], zSpanH , zBin , rphiBin );
206+ }
212207
213- // Layer 2
214- lrData .emplace_back (LrData (lrData .back ().rMax , lrData .back ().rMax + drStepChip , zSpanH , zBin , rphiBin ));
215- // Air
216- do {
217- lrData .emplace_back (LrData (lrData .back ().rMax , lrData .back ().rMax + drStep , zSpanH , zBin , rphiBin ));
218- } while (lrData .back ().rMax < 3.0f - drStep + kToler );
219- lrData .emplace_back (LrData (lrData .back ().rMax , 3.0f , zSpanH , zBin , rphiBin ));
208+ rphiBin = 0.1 ;
209+ zBin = 0.5 ;
220210
221- // Layer 3
222- lrData .emplace_back (LrData ( lrData .back ().rMax , lrData . back (). rMax + drStepChip , zSpanH , zBin , rphiBin ) );
211+ // services
212+ lrData .emplace_back (lrData .back ().rMax , o2 :: its3 :: constants :: services :: radiusOuter , zSpanH , zBin , rphiBin );
223213
224214 //===================================================================================
225215 // air space between Inner and Middle Barrels
216+ int nStave = 0 ;
226217 zSpanH = 40. ;
227218 zBin = 5. ;
228219 rphiBin = 2. ;
229- lrData .emplace_back (LrData ( lrData .back ().rMax , 19.0 , zSpanH , zBin , rphiBin ) );
220+ lrData .emplace_back (lrData .back ().rMax , 19.0 , zSpanH , zBin , rphiBin );
230221
231222 //===================================================================================
232223 // ITS Middle Barrel
224+ o2 ::itsmft ::ChipMappingITS mp ;
233225 nStave = mp .getNStavesOnLr (3 ); // Lr 3
234226 zSpanH = 55. ;
235227 zBin = 0.5 ;
236- drStep = 0.2 ;
228+ drStep = 0.3 ;
237229 do {
238230 auto rmean = lrData .back ().rMax + drStep / 2 ;
239231 rphiBin = rmean * TMath ::Pi () * 2 / (nStave * 10 );
240- lrData .emplace_back (LrData ( lrData .back ().rMax , lrData .back ().rMax + drStep , zSpanH , zBin , rphiBin ) );
241- } while (lrData .back ().rMax < 20.5 + kToler );
232+ lrData .emplace_back (lrData .back ().rMax , lrData .back ().rMax + drStep , zSpanH , zBin , rphiBin );
233+ } while (lrData .back ().rMax < 21.4 - kToler );
242234
243235 drStep = 0.5 ;
244236 do {
245237 auto rmean = lrData .back ().rMax + drStep / 2 ;
246238 rphiBin = rmean * TMath ::Pi () * 2 / (nStave * 10 );
247- lrData .emplace_back (LrData ( lrData .back ().rMax , lrData .back ().rMax + drStep , zSpanH , zBin , rphiBin ) );
248- } while (lrData .back ().rMax < 24. + kToler );
239+ lrData .emplace_back (lrData .back ().rMax , lrData .back ().rMax + drStep , zSpanH , zBin , rphiBin );
240+ } while (lrData .back ().rMax < 23.4 - kToler );
249241
250242 nStave = mp .getNStavesOnLr (3 ); // Lr 4
251243 drStep = 0.2 ;
252244 do {
253245 auto rmean = lrData .back ().rMax + drStep / 2 ;
254246 rphiBin = rmean * TMath ::Pi () * 2 / (nStave * 10 );
255- lrData .emplace_back (LrData ( lrData .back ().rMax , lrData .back ().rMax + drStep , zSpanH , zBin , rphiBin ) );
256- } while (lrData .back ().rMax < 25.6 + kToler );
247+ lrData .emplace_back (lrData .back ().rMax , lrData .back ().rMax + drStep , zSpanH , zBin , rphiBin );
248+ } while (lrData .back ().rMax < 26.2 - kToler );
257249 drStep = 0.5 ;
258250 do {
259251 auto rmean = lrData .back ().rMax + drStep / 2 ;
260252 rphiBin = rmean * TMath ::Pi () * 2 / (nStave * 10 );
261- lrData .emplace_back (LrData ( lrData .back ().rMax , lrData .back ().rMax + drStep , zSpanH , zBin , rphiBin ) );
262- } while (lrData .back ().rMax < 29. + kToler );
253+ lrData .emplace_back (lrData .back ().rMax , lrData .back ().rMax + drStep , zSpanH , zBin , rphiBin );
254+ } while (lrData .back ().rMax < 29. - kToler );
263255
264256 //===================================================================================
265257
266258 // air space between Middle and Outer Barrels
267259 zSpanH = 80.f ;
268- lrData .emplace_back (LrData ( lrData .back ().rMax , 33.5 , zSpanH ) );
260+ lrData .emplace_back (lrData .back ().rMax , 33.5 , zSpanH );
269261
270262 //===================================================================================
271263 // ITS Outer barrel
@@ -276,62 +268,66 @@ void configLayers()
276268 do {
277269 auto rmean = lrData .back ().rMax + drStep / 2 ;
278270 rphiBin = rmean * TMath ::Pi () * 2 / (nStave * 10 );
279- lrData .emplace_back (LrData ( lrData .back ().rMax , lrData .back ().rMax + drStep , zSpanH , zBin , rphiBin ) );
280- } while (lrData .back ().rMax < 36. + kToler );
271+ lrData .emplace_back (lrData .back ().rMax , lrData .back ().rMax + drStep , zSpanH , zBin , rphiBin );
272+ } while (lrData .back ().rMax < 36. - kToler );
281273
282274 drStep = 1. ;
283275 do {
284276 auto rmean = lrData .back ().rMax + drStep / 2 ;
285277 rphiBin = rmean * TMath ::Pi () * 2 / (nStave * 10 );
286- lrData .emplace_back (LrData ( lrData .back ().rMax , lrData .back ().rMax + drStep , zSpanH , zBin , rphiBin ) );
287- } while (lrData .back ().rMax < 38.5 + kToler );
278+ lrData .emplace_back (lrData .back ().rMax , lrData .back ().rMax + drStep , zSpanH , zBin , rphiBin );
279+ } while (lrData .back ().rMax < 38.5 - kToler );
288280
289281 nStave = mp .getNStavesOnLr (6 ); // Lr 6
290282 drStep = 0.25 ;
291283 do {
292284 auto rmean = lrData .back ().rMax + drStep / 2 ;
293285 rphiBin = rmean * TMath ::Pi () * 2 / (nStave * 10 );
294- lrData .emplace_back (LrData ( lrData .back ().rMax , lrData .back ().rMax + drStep , zSpanH , zBin , rphiBin ) );
295- } while (lrData .back ().rMax < 41. + kToler );
286+ lrData .emplace_back (lrData .back ().rMax , lrData .back ().rMax + drStep , zSpanH , zBin , rphiBin );
287+ } while (lrData .back ().rMax < 41. - kToler );
296288
297289 drStep = 1. ;
298290 do {
299291 auto rmean = lrData .back ().rMax + drStep / 2 ;
300292 rphiBin = rmean * TMath ::Pi () * 2 / (nStave * 10 );
301- lrData .emplace_back (LrData ( lrData .back ().rMax , lrData .back ().rMax + drStep , zSpanH , zBin , rphiBin ) );
302- } while (lrData .back ().rMax < 44. + kToler );
293+ lrData .emplace_back (lrData .back ().rMax , lrData .back ().rMax + drStep , zSpanH , zBin , rphiBin );
294+ } while (lrData .back ().rMax < 44. - kToler );
303295
304296 //===================================================================================
305297
306298 zSpanH = 100.f ;
307299 zBin = 5. ;
308- lrData .emplace_back (LrData (lrData .back ().rMax , 47. , zSpanH , zBin ));
300+ lrData .emplace_back (lrData .back ().rMax , 44.8 , zSpanH , zBin );
301+ lrData .emplace_back (lrData .back ().rMax , 46.2 , zSpanH , zBin );
302+ lrData .emplace_back (lrData .back ().rMax , 47.0 , zSpanH , zBin );
309303
310304 drStep = 2. ;
311305 zBin = 5. ;
312306 rphiBin = 2. ;
313307 do {
314- lrData .emplace_back (LrData ( lrData .back ().rMax , lrData .back ().rMax + drStep , zSpanH , zBin , rphiBin ) );
315- } while (lrData .back ().rMax < 53. + kToler );
308+ lrData .emplace_back (lrData .back ().rMax , lrData .back ().rMax + drStep , zSpanH , zBin , rphiBin );
309+ } while (lrData .back ().rMax < 55. - kToler );
316310
317311 zSpanH = 120.f ;
318- lrData .emplace_back (LrData (lrData .back ().rMax , 56.5 , zSpanH ));
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 );
319315
320316 zSpanH = 150.f ;
321- drStep = 4. ;
317+ drStep = 3.5 ;
322318 zBin = 15. ;
323319 rphiBin = 10 ;
324320 do {
325- lrData .emplace_back (LrData ( lrData .back ().rMax , lrData .back ().rMax + drStep , zSpanH , zBin , rphiBin ) );
326- } while (lrData .back ().rMax < 68.5 + kToler );
321+ lrData .emplace_back (lrData .back ().rMax , lrData .back ().rMax + drStep , zSpanH , zBin , rphiBin );
322+ } while (lrData .back ().rMax < 68.5 - kToler );
327323
328324 zSpanH = 250.f ;
329325 zBin = 25. ;
330326 rphiBin = 5 ;
331327 {
332328 auto rmean = (lrData .back ().rMax + 76 ) / 2. ;
333329 rphiBin = rmean * TMath ::Pi () * 2 / (NSect * 2 );
334- lrData .emplace_back (LrData ( lrData .back ().rMax , 76 , zSpanH , zBin , rphiBin ) );
330+ lrData .emplace_back (lrData .back ().rMax , 76 , zSpanH , zBin , rphiBin );
335331 }
336332 // TPC inner vessel
337333 // up to r = 78.5
@@ -340,33 +336,33 @@ void configLayers()
340336 {
341337 auto rmean = (lrData .back ().rMax + 78.5 ) / 2 ;
342338 rphiBin = rmean * TMath ::Pi () * 2 / (NSect * 12 );
343- lrData .emplace_back (LrData ( lrData .back ().rMax , 78.5 , zSpanH , zBin , rphiBin ) );
339+ lrData .emplace_back (lrData .back ().rMax , 78.8 , zSpanH , zBin , rphiBin );
344340 }
345341 //
346342 zSpanH = 250.f ;
347343 zBin = 2 ;
348344 {
349345 auto rmean = (lrData .back ().rMax + 78.5 ) / 2 ;
350346 rphiBin = rmean * TMath ::Pi () * 2 / (NSect * 12 );
351- lrData .emplace_back (LrData ( lrData .back ().rMax , 84.5 , zSpanH , zBin , rphiBin ) );
347+ lrData .emplace_back (lrData .back ().rMax , 84.5 , zSpanH , zBin , rphiBin );
352348 }
353349
354350 // TPC drum
355351 zSpanH = 250.f ;
356- lrData .emplace_back (LrData ( lrData .back ().rMax , 250.0 , zSpanH ) );
352+ lrData .emplace_back (lrData .back ().rMax , 250.0 , zSpanH );
357353
358354 //===============================
359355
360356 // TPC outer vessel
361357 zSpanH = 247.f ; // ignore large lumps of material at |z|>247
362358 rphiBin = 2. ;
363359 zBin = 3. ;
364- lrData .emplace_back (LrData ( lrData .back ().rMax , 258. , zSpanH , zBin , rphiBin ) );
360+ lrData .emplace_back (lrData .back ().rMax , 258. , zSpanH , zBin , rphiBin );
365361
366362 zSpanH = 247.f ; // ignore large lumps of material at |z|>247
367363 rphiBin = 2. ;
368364 zBin = 999. ; // no segmentation in Z
369- lrData .emplace_back (LrData ( lrData .back ().rMax , 280. , zSpanH , zBin , rphiBin ) );
365+ lrData .emplace_back (lrData .back ().rMax , 280. , zSpanH , zBin , rphiBin );
370366
371367 // TRD
372368
@@ -376,7 +372,7 @@ void configLayers()
376372 do {
377373 auto rmean = lrData .back ().rMax + drStep / 2 ;
378374 rphiBin = rmean * TMath ::Pi () * 2 / (NSect * 12 );
379- lrData .emplace_back (LrData ( lrData .back ().rMax , lrData .back ().rMax + drStep , zSpanH , zBin , rphiBin ) );
375+ lrData .emplace_back (lrData .back ().rMax , lrData .back ().rMax + drStep , zSpanH , zBin , rphiBin );
380376 } while (lrData .back ().rMax < 370 );
381377
382378 // TOF
@@ -387,7 +383,7 @@ void configLayers()
387383 do {
388384 auto rmean = lrData .back ().rMax + drStep / 2 ;
389385 rphiBin = rmean * TMath ::Pi () * 2 / (NSect * 12 );
390- lrData .emplace_back (LrData ( lrData .back ().rMax , lrData .back ().rMax + drStep , zSpanH , zBin , rphiBin ) );
386+ lrData .emplace_back (lrData .back ().rMax , lrData .back ().rMax + drStep , zSpanH , zBin , rphiBin );
391387 } while (lrData .back ().rMax < 400 );
392388
393389 // rest
@@ -398,7 +394,7 @@ void configLayers()
398394 zSpanH = lrData .back ().rMax ;
399395 auto rmean = lrData .back ().rMax + drStep / 2 ;
400396 rphiBin = rmean * TMath ::Pi () * 2 / (NSect * 12 );
401- lrData .emplace_back (LrData ( lrData .back ().rMax , lrData .back ().rMax + drStep , zSpanH , zBin , rphiBin ) );
397+ lrData .emplace_back (lrData .back ().rMax , lrData .back ().rMax + drStep , zSpanH , zBin , rphiBin );
402398 } while (lrData .back ().rMax < 500 );
403399}
404400
0 commit comments