Hi Andi,
A simple tracking requires few steps:
1. Initializing the modeler with a given point and direction : see:
TGeoManager::SetCurrentPoint(Double_t *point)
TGeoManager::SetCurrentDirection(Double_t *dir)
or alternatively:
TGeoManager::InitTrack(point,dir). This will also perform step 2:
2. Find the deepest node containing the point (where the point is
located in your geom). This node is known as fCurrentNode by the manager
class (see : TGeoManger::GetCurrentNode()). You should always check
TGeoManager::IsOutside() to see if the point is still in your geometry.
Nodes are named objects as well as volumes.
3. Compute the distance to next boundary :
TGeoManager::FindNextBoundary(). After doung this, you can get the
distance with: TGeoManager::GetStep(). If you already have a proposed
step in mind, you can put it as argument to FindNextBoundary(). You may
also query for the safe distance to the closest boundary :
TGeoManager::Safety()
TGeoManager::GetSafeDistance()
4. You can then actually do the step:
TGeoManager::Step()
By default this will attempt to cross the next boundary, which you can
check with TGeoManager::IsEntering(). You will want to check if you
exited your geometry: TGeoManager::IsOutside(), the current path:
TGeoManager::GetPath(), the current node and volume. You can then do a
test on the current node name.
You can also look inside TGeoChecker::RandomRays() for an example.
Andrei
andi klein wrote:
> Hi Andrei
>
> I have set up a detector with TGeoManager to simulate tracks in my
> experminet. (det is my geomanager). After doing a
> det->GetPath(); I know what my next detector will be. I am wondering if
> there is a way how I can compare this with the name of one of my volumes
> to see if I should continue tracking;i.e. something like
> if(det->GetPath == "element name") continue, where element name
> would be the name of the node.
> Maybe I just haven't found it, but any help would be appreiated.
>
> Thanks, andi
>
>
>
This archive was generated by hypermail 2b29 : Thu Jan 01 2004 - 17:50:13 MET