12#ifndef ROOT_TGeoPatternFinder 
   13#define ROOT_TGeoPatternFinder 
#define ClassDefOverride(name, id)
 
Option_t Option_t TPoint TPoint const char GetTextMagnitude GetFillStyle GetLineColor GetLineWidth GetMarkerStyle GetTextAlign GetTextColor GetTextSize void char Point_t Rectangle_t WindowAttributes_t index
 
Matrix class used for computing global transformations Should NOT be used for node definition.
 
Geometrical transformation package.
 
A node represent a volume positioned inside another.They store links to both volumes and to the TGeoM...
 
a cylindrical phi divison pattern
 
TGeoPatternCylPhi()
Default constructor.
 
void cd(Int_t idiv) override
Update current division index and global matrix to point to a given slice.
 
TGeoPatternCylPhi(const TGeoPatternCylPhi &pfc)
[2*fNdivisions] table of sines/cosines
 
TGeoPatternFinder * MakeCopy(Bool_t reflect=kFALSE) override
Make a copy of this finder. Reflect by Z if required.
 
TGeoNode * FindNode(Double_t *point, const Double_t *dir=nullptr) override
find the node containing the query point
 
Bool_t IsOnBoundary(const Double_t *point) const override
Checks if the current point is on division boundary.
 
void SavePrimitive(std::ostream &out, Option_t *option="") override
Save a primitive as a C++ statement(s) on output stream "out".
 
~TGeoPatternCylPhi() override
Destructor.
 
TGeoMatrix * CreateMatrix() const override
Return new matrix of type used by this finder.
 
void UpdateMatrix(Int_t idiv, TGeoHMatrix &matrix) const override
Fills external matrix with the local one corresponding to the given division index.
 
Int_t GetDivAxis() override
 
TGeoPatternCylPhi & operator=(const TGeoPatternCylPhi &pfc)
 
a cylindrical R divison pattern
 
Bool_t IsOnBoundary(const Double_t *point) const override
Checks if the current point is on division boundary.
 
TGeoMatrix * CreateMatrix() const override
Return new matrix of type used by this finder.
 
TGeoPatternCylR()
Default constructor.
 
TGeoPatternFinder * MakeCopy(Bool_t reflect=kFALSE) override
Make a copy of this finder. Reflect by Z if required.
 
void SavePrimitive(std::ostream &out, Option_t *option="") override
Save a primitive as a C++ statement(s) on output stream "out".
 
void UpdateMatrix(Int_t idiv, TGeoHMatrix &matrix) const override
Fills external matrix with the local one corresponding to the given division index.
 
TGeoNode * FindNode(Double_t *point, const Double_t *dir=nullptr) override
find the node containing the query point
 
TGeoPatternCylR & operator=(const TGeoPatternCylR &)
assignment operator
 
Int_t GetDivAxis() override
 
~TGeoPatternCylR() override
Destructor.
 
void cd(Int_t idiv) override
Update current division index and global matrix to point to a given slice.
 
base finder class for patterns. A pattern is specifying a division type
 
ThreadData_t & GetThreadData() const
 
void Reflect(Bool_t flag=kTRUE)
 
virtual TGeoNode * CdNext()
Make next node (if any) current.
 
void SetSpacedOut(Bool_t flag)
 
void SetDivIndex(Int_t index)
 
virtual TGeoMatrix * GetMatrix()
Return current matrix.
 
void SetRange(Double_t start, Double_t step, Int_t ndivisions)
Set division range. Use this method only when dividing an assembly.
 
virtual TGeoNode * FindNode(Double_t *, const Double_t *=nullptr)
 
virtual void UpdateMatrix(Int_t, TGeoHMatrix &) const
 
std::vector< ThreadData_t * > fThreadData
 
Int_t fThreadSize
Vector of thread private transient data.
 
TGeoPatternFinder & operator=(const TGeoPatternFinder &)
assignment operator
 
void SetNext(Int_t index)
Set index of next division.
 
virtual TGeoPatternFinder * MakeCopy(Bool_t reflect=kFALSE)=0
 
virtual Int_t GetDivAxis()
 
~TGeoPatternFinder() override
Destructor.
 
virtual Bool_t IsOnBoundary(const Double_t *) const
 
TGeoVolume * GetVolume() const
 
Bool_t IsReflected() const
 
void SetVolume(TGeoVolume *vol)
 
Int_t GetCurrent()
Return current index.
 
void ClearThreadData() const
 
Bool_t IsSpacedOut() const
 
Double_t GetStart() const
 
TGeoPatternFinder()
Default constructor.
 
Int_t GetNext() const
Get index of next division.
 
virtual Int_t GetByteCount() const
 
std::mutex fMutex
Size of the thread vector.
 
TGeoNode * GetNodeOffset(Int_t idiv)
 
void CreateThreadData(Int_t nthreads)
Create thread data for n threads max.
 
virtual TGeoMatrix * CreateMatrix() const =0
 
a divison pattern specialized for honeycombs
 
TGeoMatrix * CreateMatrix() const override
Return new matrix of type used by this finder.
 
void cd(Int_t idiv) override
Update current division index and global matrix to point to a given slice.
 
TGeoPatternFinder * MakeCopy(Bool_t) override
 
TGeoPatternHoneycomb()
Default constructor.
 
void UpdateMatrix(Int_t idiv, TGeoHMatrix &matrix) const override
Fills external matrix with the local one corresponding to the given division index.
 
~TGeoPatternHoneycomb() override
destructor
 
TGeoPatternHoneycomb & operator=(const TGeoPatternHoneycomb &)
assignment operator
 
TGeoNode * FindNode(Double_t *point, const Double_t *dir=nullptr) override
find the node containing the query point
 
a X axis divison pattern for PARA shapes
 
~TGeoPatternParaX() override
Destructor.
 
TGeoMatrix * CreateMatrix() const override
Return new matrix of type used by this finder.
 
void cd(Int_t idiv) override
Update current division index and global matrix to point to a given slice.
 
Bool_t IsOnBoundary(const Double_t *point) const override
Checks if the current point is on division boundary.
 
void SavePrimitive(std::ostream &out, Option_t *option="") override
Save a primitive as a C++ statement(s) on output stream "out".
 
TGeoNode * FindNode(Double_t *point, const Double_t *dir=nullptr) override
get the node division containing the query point
 
TGeoPatternFinder * MakeCopy(Bool_t reflect=kFALSE) override
Make a copy of this finder. Reflect by Z if required.
 
TGeoPatternParaX()
Default constructor.
 
void UpdateMatrix(Int_t idiv, TGeoHMatrix &matrix) const override
Fills external matrix with the local one corresponding to the given division index.
 
Int_t GetDivAxis() override
 
TGeoPatternParaX & operator=(const TGeoPatternParaX &)
assignment operator
 
a Y axis divison pattern for PARA shapes
 
void UpdateMatrix(Int_t idiv, TGeoHMatrix &matrix) const override
Fills external matrix with the local one corresponding to the given division index.
 
void cd(Int_t idiv) override
Update current division index and global matrix to point to a given slice.
 
Int_t GetDivAxis() override
 
~TGeoPatternParaY() override
Destructor.
 
Bool_t IsOnBoundary(const Double_t *point) const override
Checks if the current point is on division boundary.
 
TGeoMatrix * CreateMatrix() const override
Return new matrix of type used by this finder.
 
TGeoPatternFinder * MakeCopy(Bool_t reflect=kFALSE) override
Make a copy of this finder. Reflect by Z if required.
 
void SavePrimitive(std::ostream &out, Option_t *option="") override
Save a primitive as a C++ statement(s) on output stream "out".
 
TGeoNode * FindNode(Double_t *point, const Double_t *dir=nullptr) override
get the node division containing the query point
 
TGeoPatternParaY()
Default constructor.
 
TGeoPatternParaY & operator=(const TGeoPatternParaY &)
assignment operator
 
a Z axis divison pattern for PARA shapes
 
TGeoPatternFinder * MakeCopy(Bool_t reflect=kFALSE) override
Make a copy of this finder. Reflect by Z if required.
 
Bool_t IsOnBoundary(const Double_t *point) const override
Checks if the current point is on division boundary.
 
void SavePrimitive(std::ostream &out, Option_t *option="") override
Save a primitive as a C++ statement(s) on output stream "out".
 
TGeoMatrix * CreateMatrix() const override
Return new matrix of type used by this finder.
 
~TGeoPatternParaZ() override
Destructor.
 
void cd(Int_t idiv) override
Update current division index and global matrix to point to a given slice.
 
TGeoPatternParaZ & operator=(const TGeoPatternParaZ &)
assignment operator
 
Int_t GetDivAxis() override
 
void UpdateMatrix(Int_t idiv, TGeoHMatrix &matrix) const override
Fills external matrix with the local one corresponding to the given division index.
 
TGeoNode * FindNode(Double_t *point, const Double_t *dir=nullptr) override
get the node division containing the query point
 
TGeoPatternParaZ()
Default constructor.
 
a spherical phi divison pattern
 
TGeoPatternSphPhi()
Default constructor.
 
TGeoPatternFinder * MakeCopy(Bool_t reflect=kFALSE) override
Make a copy of this finder. Reflect by Z if required.
 
void cd(Int_t idiv) override
Update current division index and global matrix to point to a given slice.
 
TGeoMatrix * CreateMatrix() const override
Return new matrix of type used by this finder.
 
TGeoNode * FindNode(Double_t *point, const Double_t *dir=nullptr) override
find the node containing the query point
 
void UpdateMatrix(Int_t idiv, TGeoHMatrix &matrix) const override
Fills external matrix with the local one corresponding to the given division index.
 
Int_t GetDivAxis() override
 
TGeoPatternSphPhi & operator=(const TGeoPatternSphPhi &pfc)=delete
 
~TGeoPatternSphPhi() override
Destructor.
 
void SavePrimitive(std::ostream &out, Option_t *option="") override
Save a primitive as a C++ statement(s) on output stream "out".
 
TGeoPatternSphPhi(const TGeoPatternSphPhi &pfc)=delete
Sincos table.
 
Double_t * CreateSinCos()
Create the sincos table if it does not exist.
 
Bool_t IsOnBoundary(const Double_t *point) const override
Checks if the current point is on division boundary.
 
a spherical R divison pattern
 
Int_t GetDivAxis() override
 
~TGeoPatternSphR() override
Destructor.
 
TGeoPatternSphR()
Default constructor.
 
void cd(Int_t idiv) override
Update current division index and global matrix to point to a given slice.
 
TGeoMatrix * CreateMatrix() const override
Return new matrix of type used by this finder.
 
TGeoNode * FindNode(Double_t *point, const Double_t *dir=nullptr) override
find the node containing the query point
 
void UpdateMatrix(Int_t idiv, TGeoHMatrix &matrix) const override
Fills external matrix with the local one corresponding to the given division index.
 
TGeoPatternSphR & operator=(const TGeoPatternSphR &)
assignment operator
 
void SavePrimitive(std::ostream &out, Option_t *option="") override
Save a primitive as a C++ statement(s) on output stream "out".
 
TGeoPatternFinder * MakeCopy(Bool_t reflect=kFALSE) override
Make a copy of this finder. Reflect by Z if required.
 
a spherical theta divison pattern
 
TGeoNode * FindNode(Double_t *point, const Double_t *dir=nullptr) override
find the node containing the query point
 
~TGeoPatternSphTheta() override
Destructor.
 
void UpdateMatrix(Int_t idiv, TGeoHMatrix &matrix) const override
Fills external matrix with the local one corresponding to the given division index.
 
TGeoPatternSphTheta()
Default constructor.
 
void SavePrimitive(std::ostream &out, Option_t *option="") override
Save a primitive as a C++ statement(s) on output stream "out".
 
void cd(Int_t idiv) override
Update current division index and global matrix to point to a given slice.
 
TGeoMatrix * CreateMatrix() const override
Return new matrix of type used by this finder.
 
TGeoPatternFinder * MakeCopy(Bool_t reflect=kFALSE) override
Make a copy of this finder. Reflect by Z if required.
 
TGeoPatternSphTheta & operator=(const TGeoPatternSphTheta &)
assignment operator
 
Int_t GetDivAxis() override
 
a Z axis divison pattern for TRAP or GTRA shapes
 
TGeoPatternFinder * MakeCopy(Bool_t reflect=kFALSE) override
Make a copy of this finder. Reflect by Z if required.
 
TGeoPatternTrapZ()
Default constructor.
 
TGeoNode * FindNode(Double_t *point, const Double_t *dir=nullptr) override
get the node division containing the query point
 
TGeoMatrix * CreateMatrix() const override
Return new matrix of type used by this finder.
 
void SavePrimitive(std::ostream &out, Option_t *option="") override
Save a primitive as a C++ statement(s) on output stream "out".
 
Bool_t IsOnBoundary(const Double_t *point) const override
Checks if the current point is on division boundary.
 
Int_t GetDivAxis() override
 
TGeoPatternTrapZ & operator=(const TGeoPatternTrapZ &)
assignment operator
 
void cd(Int_t idiv) override
Update current division index and global matrix to point to a given slice.
 
void UpdateMatrix(Int_t idiv, TGeoHMatrix &matrix) const override
Fills external matrix with the local one corresponding to the given division index.
 
~TGeoPatternTrapZ() override
Destructor.
 
TGeoPatternX & operator=(const TGeoPatternX &)
assignment operator
 
~TGeoPatternX() override
Destructor.
 
void SavePrimitive(std::ostream &out, Option_t *option="") override
Save a primitive as a C++ statement(s) on output stream "out".
 
TGeoPatternFinder * MakeCopy(Bool_t reflect=kFALSE) override
Make a copy of this finder. Reflect by Z if required.
 
void cd(Int_t idiv) override
Update current division index and global matrix to point to a given slice.
 
virtual Double_t FindNextBoundary(Double_t *point, Double_t *dir, Int_t &indnext)
Compute distance to next division layer returning the index of next section.
 
TGeoPatternX()
Default constructor.
 
TGeoMatrix * CreateMatrix() const override
Return new matrix of type used by this finder.
 
Int_t GetDivAxis() override
 
void UpdateMatrix(Int_t idiv, TGeoHMatrix &matrix) const override
Fills external matrix with the local one corresponding to the given division index.
 
Bool_t IsOnBoundary(const Double_t *point) const override
Checks if the current point is on division boundary.
 
TGeoNode * FindNode(Double_t *point, const Double_t *dir=nullptr) override
Find the cell corresponding to point and next cell along dir (if asked)
 
TGeoNode * FindNode(Double_t *point, const Double_t *dir=nullptr) override
Find the cell corresponding to point and next cell along dir (if asked)
 
void cd(Int_t idiv) override
Update current division index and global matrix to point to a given slice.
 
TGeoPatternFinder * MakeCopy(Bool_t reflect=kFALSE) override
Make a copy of this finder. Reflect by Z if required.
 
void SavePrimitive(std::ostream &out, Option_t *option="") override
Save a primitive as a C++ statement(s) on output stream "out".
 
void UpdateMatrix(Int_t idiv, TGeoHMatrix &matrix) const override
Fills external matrix with the local one corresponding to the given division index.
 
TGeoPatternY & operator=(const TGeoPatternY &)
assignment operator
 
Int_t GetDivAxis() override
 
TGeoMatrix * CreateMatrix() const override
Return new matrix of type used by this finder.
 
Bool_t IsOnBoundary(const Double_t *point) const override
Checks if the current point is on division boundary.
 
~TGeoPatternY() override
Destructor.
 
TGeoPatternY()
Default constructor.
 
virtual Double_t FindNextBoundary(Double_t *point, Double_t *dir, Int_t &indnext)
Compute distance to next division layer returning the index of next section.
 
void cd(Int_t idiv) override
Update current division index and global matrix to point to a given slice.
 
TGeoMatrix * CreateMatrix() const override
Return new matrix of type used by this finder.
 
TGeoNode * FindNode(Double_t *point, const Double_t *dir=nullptr) override
Find the cell corresponding to point and next cell along dir (if asked)
 
virtual Double_t FindNextBoundary(Double_t *point, Double_t *dir, Int_t &indnext)
Compute distance to next division layer returning the index of next section.
 
TGeoPatternZ()
Default constructor.
 
~TGeoPatternZ() override
Destructor.
 
Int_t GetDivAxis() override
 
TGeoPatternFinder * MakeCopy(Bool_t reflect=kFALSE) override
Make a copy of this finder. Reflect by Z if required.
 
TGeoPatternZ & operator=(const TGeoPatternZ &)
assignment operator
 
void SavePrimitive(std::ostream &out, Option_t *option="") override
Save a primitive as a C++ statement(s) on output stream "out".
 
Bool_t IsOnBoundary(const Double_t *point) const override
Checks if the current point is on division boundary.
 
void UpdateMatrix(Int_t idiv, TGeoHMatrix &matrix) const override
Fills external matrix with the local one corresponding to the given division index.
 
Class describing translations.
 
TGeoVolume, TGeoVolumeMulti, TGeoVolumeAssembly are the volume classes.
 
TGeoNode * GetNode(const char *name) const
get the pointer to a daughter node
 
Mother of all ROOT objects.
 
R__ALWAYS_INLINE Bool_t TestBit(UInt_t f) const
 
void SetBit(UInt_t f, Bool_t set)
Set or unset the user status bits as specified in f.
 
Int_t fCurrent
generic matrix
 
~ThreadData_t()
Destructor.
 
ThreadData_t(const ThreadData_t &)=delete
 
Int_t fNextIndex
current division element
 
ThreadData_t()
index of next node
 
ThreadData_t & operator=(const ThreadData_t &)=delete