pixl sector and full geom. in agml

 a pixel sector : 3 active silicon ladders on top at radius r1 = 8cm and one on the bottom at a radius r2 = 2.5 cm

 

the pixel full geometry : duplication of the single sector by 10

 

 some details are in this pdf :

  • other pictures
  • naming convention for GEANT shapes
  • how to place the box (a cone) where the single sector sits

Checking overlaps

TGeoManager has several methods to check overlaps :

  1. CheckBoundaryErrors()
  2. CheckGeometryFull()
  3. CheckOverLaps()
  4. PrintOverLaps()

the 2) method seems to be the most complete :

 

 Geometry checking.
 - if option contains 'o': Optional overlap checkings (by sampling and by mesh).
 - if option contains 'b': Optional boundary crossing check + timing per volume.

 STAGE 1: extensive overlap checking by sampling per volume. Stdout need to be
  checked by user to get report, then TGeoVolume::CheckOverlaps(0.01, "s") can
  be called for the suspicious volumes.
 STAGE2 : normal overlap checking using the shapes mesh - fills the list of
  overlaps.
 STAGE3 : shooting NRAYS rays from VERTEX and counting the total number of
  crossings per volume (rays propagated from boundary to boundary until
  geometry exit). Timing computed and results stored in a histo.
 STAGE4 : shooting 1 mil. random rays inside EACH volume and calling
  FindNextBoundary() + Safety() for each call. The timing is normalized by the
  number of crossings computed at stage 2 and presented as percentage.
  One can get a picture on which are the most "burned" volumes during
  transportation from geometry point of view. Another plot of the timing per
  volume vs. number of daughters is produced.

The result of these 4 methods are in this pdf

 

Converting this geometry to starsim

$ starsim
starsim > detp geom dev13
starsim > gexec .$STAR_HOST_SYS/lib/x.geometry.so
starsim > gclose all

 Running these 2 commands actually works ; STARSIM draw the pixel.

The next step was to throw some pions :

  1. first I have to change /pams/sim/g2t/g2t_pix.F to specify that the active volume name may have change
  2. there is one issue now : a sector is placed in a volume , where there is 4 active silicon ladders : 3 on top and 1 on bottom. All 4 ladders are from the same volume (PLAC) 

Running over some fz file created with dev13 geometry, only hits in the top ladders are found :

 

 

Use of konly and MANY  :

 

  1.  An additional attribute, konly, is used to indicate whether or
  2.         not the volume is expected to overlap another volume at the same
  3.         level in the geometry tree.  konly="ONLY" indicates no overlap and
  4.         is the default value.  konly="MANY" indicates overlap is possible.
  5.  
  6.         For more info on ONLY vs MANY, consult the geant 3 manual.  

 

Navigating in the TGeoManager 

get some basic infos :

root.exe [1] .ls

TFile**         dev13.root

TFile*         dev13.root

KEY: TGeoManager      dev13;1 dev13 | dyson



root.exe [2] dev13->GetListOfNodes()       

(class TObjArray*)0xa1b9a58

root.exe [3] dev13->GetListOfNodes()->Print()

Collection name='TObjArray', class='TObjArray', size=30

OBJ: TGeoNodeMatrix    HALL_1  Top logical node
 

go the a given node and get the name (assuming the path is known) :

root.exe [11] dev13->cd("HALL_1/CAVE_1/IDSM_1/PXMO_1")

root.exe [12] TGeoNode *nodeT = dev13->GetCurrentNode()

root.exe [13] nodeT->GetName()         

(const char* 0xab87808)"PXMO_1"

 

get the name of the next daughter :

root.exe [21] dev13->GetCurrentNode()->GetDaughter(0)->GetName()

(const char* 0xab87998)"PXLA_1"
 

get info for the current node :

root.exe [29] nodeT->GetName()

(const char* 0xab87808)"PXMO_1"

root.exe [30] nodeT->GetMotherVolume()->GetName()

(const char* 0xab2afb8)"IDSM"

root.exe [31] nodeT->GetNumber()                 

(const Int_t)1
 

 Decoding the path/volume names for the new pixl geom.

  1. The main volume remain PXMO
  2. the name for a pixel sector is PXLA so there will be 10 PXLA volume , named PXLA_1 , PXLA_2 ... , PXLA_10

This can be verified by using the TGeo volume :

 

root.exe [13] dev13->cd("HALL_1/CAVE_1/IDSM_1/PXMO_1") 

(Bool_t)1

root.exe [14] TGeoNode *nodeT = dev13->GetCurrentNode()      

root.exe [15] nodeT->GetName()                               

(const char* 0x9942330)"PXMO_1"

root.exe [16] nodeT->GetNdaughters()                   

(const Int_t)10  root.exe [19] nodeT->GetDaughter(0)->GetName()

(const char* 0x99424c0)"PXLA_1" 

 

       4. Now going to the sector volume, it has 20 daughters  : 4 active ladders + 15 carbons pieces (sector structure)

 

root.exe [20] dev13->cd("HALL_1/CAVE_1/IDSM_1/PXMO_1/PXLA_1")

root.exe [21] TGeoNode *nodeX = dev13->GetCurrentNode()      

root.exe [22] nodeT->GetName()                               

(const char* 0x99424c0)"PXLA_1"

root.exe [24] nodeX->GetNdaughters()

(const Int_t)20
 
       5. Finally the 4 active ladders are :
 
root.exe [28] nodeX->GetDaughter(19)->GetName()

(const char* 0x9945ba0)"PLAC_4"

root.exe [29] nodeX->GetDaughter(18)->GetName()

(const char* 0x9945b30)"PLAC_3"

root.exe [30] nodeX->GetDaughter(17)->GetName()

(const char* 0x9945ad0)"PLAC_2"

root.exe [31] nodeX->GetDaughter(16)->GetName()

(const char* 0x99456c8)"PLAC_1"

To summarize , the number of sectors goes from 1 to 20 and the active ladders goes from 16 to 19

So paths for active ladders of sector 1 would be like :

  1. HALL_1/CAVE_1/IDSM_1/PXMO_1/PXLA_1/PLAC_16 
  2.  HALL_1/CAVE_1/IDSM_1/PXMO_1/PXLA_1/PLAC_17 
  3.  HALL_1/CAVE_1/IDSM_1/PXMO_1/PXLA_1/PLAC_18 
  4.  HALL_1/CAVE_1/IDSM_1/PXMO_1/PXLA_1/PLAC_19

 

Attempt to run the BFC chain

  1. first we needed a tag in the BFChain to recognize dev13 geometry. This had been added by Victor ; in $STAR/StRoot/StChain/StMaker.cxx
 {"dev13",       20200102,    19, "dev13",    "dev geo for 2013"}, // 

      2. we also need the following directories that contains dev13.h geometry

/StarDb/AgiGeometry

/StarDb/AgMLGeometry

By default , /StarDb/AgiGeometry does not have a Geometry.dev13.C file but as all the files are the same [only the name change], just copy a file and rename it Geometry.dev13.C

This macro will just call CreateTable()

 

#include "CreateGeometry.h"

TDataSet *CreateTable() {return CreateGeometry("dev13");}


To create a dev13.h file (TGeo file), fire starsim and do the following :

# First create the geometry tag in starsim
$ starsim
starsim > detp geom dev13

starsim > gexe $STAR_LIB/xgeometry.so

starsim > gclose all
starsim > grfile dev13.rz
starsim > exit

# Now we have the geometry in a ZERBRA file... to go to ROOT
$ g2root dev.rz

It creates dev13.C that you can rename dev13.h

 

 

    3. We also need calibration tracking files :

For this, cvs co $StarDb/Calibrations/tracker and rename all the files like XXX.upgr15.C by ***.dev13.C