#include "TGeoPatternFinder.h"
#include "Riostream.h"
#include "TObject.h"
#include "TThread.h"
#include "TGeoMatrix.h"
#include "TGeoPara.h"
#include "TGeoArb8.h"
#include "TGeoNode.h"
#include "TGeoManager.h"
#include "TMath.h"
ClassImp(TGeoPatternFinder)
ClassImp(TGeoPatternX)
ClassImp(TGeoPatternY)
ClassImp(TGeoPatternZ)
ClassImp(TGeoPatternParaX)
ClassImp(TGeoPatternParaY)
ClassImp(TGeoPatternParaZ)
ClassImp(TGeoPatternTrapZ)
ClassImp(TGeoPatternCylR)
ClassImp(TGeoPatternCylPhi)
ClassImp(TGeoPatternSphR)
ClassImp(TGeoPatternSphTheta)
ClassImp(TGeoPatternSphPhi)
ClassImp(TGeoPatternHoneycomb)
TGeoPatternFinder::ThreadData_t::ThreadData_t() :
fMatrix(0), fCurrent(-1), fNextIndex(-1)
{
}
TGeoPatternFinder::ThreadData_t::~ThreadData_t()
{
}
TGeoPatternFinder::ThreadData_t& TGeoPatternFinder::GetThreadData() const
{
Int_t tid = TGeoManager::ThreadId();
return *fThreadData[tid];
}
void TGeoPatternFinder::ClearThreadData() const
{
TThread::Lock();
std::vector<ThreadData_t*>::iterator i = fThreadData.begin();
while (i != fThreadData.end())
{
delete *i;
++i;
}
fThreadData.clear();
fThreadSize = 0;
TThread::UnLock();
}
void TGeoPatternFinder::CreateThreadData(Int_t nthreads)
{
TThread::Lock();
fThreadData.resize(nthreads);
fThreadSize = nthreads;
for (Int_t tid=0; tid<nthreads; tid++) {
if (fThreadData[tid] == 0) {
fThreadData[tid] = new ThreadData_t;
fThreadData[tid]->fMatrix = CreateMatrix();
}
}
TThread::UnLock();
}
TGeoPatternFinder::TGeoPatternFinder()
{
fNdivisions = 0;
fDivIndex = 0;
fStep = 0;
fStart = 0;
fEnd = 0;
fVolume = 0;
fThreadSize = 0;
}
TGeoPatternFinder::TGeoPatternFinder(TGeoVolume *vol, Int_t ndiv)
{
fVolume = vol;
fNdivisions = ndiv;
fDivIndex = 0;
fStep = 0;
fStart = 0;
fEnd = 0;
fThreadSize = 0;
}
TGeoPatternFinder::TGeoPatternFinder(const TGeoPatternFinder& pf) :
TObject(pf),
fStep(pf.fStep),
fStart(pf.fStart),
fEnd(pf.fEnd),
fNdivisions(pf.fNdivisions),
fDivIndex(pf.fDivIndex),
fVolume(pf.fVolume)
{
}
TGeoPatternFinder& TGeoPatternFinder::operator=(const TGeoPatternFinder& pf)
{
if(this!=&pf) {
TObject::operator=(pf);
fStep=pf.fStep;
fStart=pf.fStart;
fEnd=pf.fEnd;
fNdivisions=pf.fNdivisions;
fDivIndex=pf.fDivIndex;
fVolume=pf.fVolume;
}
return *this;
}
TGeoPatternFinder::~TGeoPatternFinder()
{
ClearThreadData();
}
Int_t TGeoPatternFinder::GetCurrent()
{
return GetThreadData().fCurrent;
}
TGeoMatrix* TGeoPatternFinder::GetMatrix()
{
return GetThreadData().fMatrix;
}
Int_t TGeoPatternFinder::GetNext() const
{
return GetThreadData().fNextIndex;
}
void TGeoPatternFinder::SetNext(Int_t index)
{
GetThreadData().fNextIndex = index;
}
TGeoNode *TGeoPatternFinder::CdNext()
{
ThreadData_t& td = GetThreadData();
if (td.fNextIndex < 0) return NULL;
cd(td.fNextIndex);
return GetNodeOffset(td.fCurrent);
}
void TGeoPatternFinder::SetRange(Double_t start, Double_t step, Int_t ndivisions)
{
fStart = start;
fEnd = fStart + ndivisions*step;
fStep = step;
fNdivisions = ndivisions;
}
TGeoPatternX::TGeoPatternX()
{
CreateThreadData(1);
}
TGeoPatternX::TGeoPatternX(TGeoVolume *vol, Int_t ndivisions)
:TGeoPatternFinder(vol, ndivisions)
{
Double_t dx = ((TGeoBBox*)vol->GetShape())->GetDX();
fStart = -dx;
fEnd = dx;
fStep = 2*dx/ndivisions;
CreateThreadData(1);
}
TGeoPatternX::TGeoPatternX(TGeoVolume *vol, Int_t ndivisions, Double_t step)
:TGeoPatternFinder(vol, ndivisions)
{
Double_t dx = ((TGeoBBox*)vol->GetShape())->GetDX();
fStart = -dx;
fEnd = fStart + ndivisions*step;
fStep = step;
CreateThreadData(1);
}
TGeoPatternX::TGeoPatternX(TGeoVolume *vol, Int_t ndivisions, Double_t start, Double_t end)
:TGeoPatternFinder(vol, ndivisions)
{
fStart = start;
fEnd = end;
fStep = (end - start)/ndivisions;
CreateThreadData(1);
}
TGeoPatternX::TGeoPatternX(const TGeoPatternX& pf) :
TGeoPatternFinder(pf)
{
CreateThreadData(1);
}
TGeoPatternX& TGeoPatternX::operator=(const TGeoPatternX& pf)
{
if(this!=&pf) {
TGeoPatternFinder::operator=(pf);
CreateThreadData(1);
}
return *this;
}
TGeoPatternX::~TGeoPatternX()
{
}
void TGeoPatternX::cd(Int_t idiv)
{
ThreadData_t& td = GetThreadData();
td.fCurrent=idiv;
td.fMatrix->SetDx(fStart+idiv*fStep+0.5*fStep);
}
TGeoMatrix* TGeoPatternX::CreateMatrix() const
{
if (!IsReflected()) {
TGeoMatrix *matrix = new TGeoTranslation(0.,0.,0.);
matrix->RegisterYourself();
return matrix;
}
TGeoCombiTrans *combi = new TGeoCombiTrans();
combi->RegisterYourself();
combi->ReflectZ(kTRUE);
combi->ReflectZ(kFALSE);
return combi;
}
void TGeoPatternX::UpdateMatrix(Int_t idiv, TGeoHMatrix &matrix) const
{
matrix.Clear();
matrix.SetDx(fStart+idiv*fStep+0.5*fStep);
}
Bool_t TGeoPatternX::IsOnBoundary(const Double_t *point) const
{
Double_t seg = (point[0]-fStart)/fStep;
Double_t diff = seg - Int_t(seg);
if (diff>0.5) diff = 1.-diff;
if (diff<1e-8) return kTRUE;
return kFALSE;
}
TGeoNode *TGeoPatternX::FindNode(Double_t *point, const Double_t *dir)
{
ThreadData_t& td = GetThreadData();
TGeoNode *node = 0;
Int_t ind = (Int_t)(1.+(point[0]-fStart)/fStep) - 1;
if (dir) {
td.fNextIndex = ind;
if (dir[0]>0) td.fNextIndex++;
else td.fNextIndex--;
if ((td.fNextIndex<0) || (td.fNextIndex>=fNdivisions)) td.fNextIndex = -1;
}
if ((ind<0) || (ind>=fNdivisions)) return node;
node = GetNodeOffset(ind);
cd(ind);
return node;
}
Double_t TGeoPatternX::FindNextBoundary(Double_t *point, Double_t *dir, Int_t &indnext)
{
ThreadData_t& td = GetThreadData();
indnext = -1;
Double_t dist = TGeoShape::Big();
if (TMath::Abs(dir[0])<TGeoShape::Tolerance()) return dist;
if (td.fCurrent<0) {
Error("FindNextBoundary", "Must call FindNode first");
return dist;
}
Int_t inc = (dir[0]>0)?1:0;
dist = (fStep*(td.fCurrent+inc)-point[0])/dir[0];
if (dist<0.) Error("FindNextBoundary", "Negative distance d=%g",dist);
if (!inc) inc = -1;
indnext = td.fCurrent+inc;
return dist;
}
TGeoPatternFinder *TGeoPatternX::MakeCopy(Bool_t reflect)
{
TGeoPatternX *finder = new TGeoPatternX(*this);
if (!reflect) return finder;
finder->Reflect();
return finder;
}
void TGeoPatternX::SavePrimitive(std::ostream &out, Option_t * )
{
Int_t iaxis = 1;
out << iaxis << ", " << fNdivisions << ", " << fStart << ", " << fStep;
}
TGeoPatternY::TGeoPatternY()
{
CreateThreadData(1);
}
TGeoPatternY::TGeoPatternY(TGeoVolume *vol, Int_t ndivisions)
:TGeoPatternFinder(vol, ndivisions)
{
Double_t dy = ((TGeoBBox*)vol->GetShape())->GetDY();
fStart = -dy;
fEnd = dy;
fStep = 2*dy/ndivisions;
CreateThreadData(1);
}
TGeoPatternY::TGeoPatternY(TGeoVolume *vol, Int_t ndivisions, Double_t step)
:TGeoPatternFinder(vol, ndivisions)
{
Double_t dy = ((TGeoBBox*)vol->GetShape())->GetDY();
fStart = -dy;
fEnd = fStart + ndivisions*step;
fStep = step;
CreateThreadData(1);
}
TGeoPatternY::TGeoPatternY(TGeoVolume *vol, Int_t ndivisions, Double_t start, Double_t end)
:TGeoPatternFinder(vol, ndivisions)
{
fStart = start;
fEnd = end;
fStep = (end - start)/ndivisions;
CreateThreadData(1);
}
TGeoPatternY::TGeoPatternY(const TGeoPatternY& pf) :
TGeoPatternFinder(pf)
{
CreateThreadData(1);
}
TGeoPatternY& TGeoPatternY::operator=(const TGeoPatternY& pf)
{
if(this!=&pf) {
TGeoPatternFinder::operator=(pf);
CreateThreadData(1);
}
return *this;
}
TGeoPatternY::~TGeoPatternY()
{
}
void TGeoPatternY::cd(Int_t idiv)
{
ThreadData_t& td = GetThreadData();
td.fCurrent=idiv;
td.fMatrix->SetDy(fStart+idiv*fStep+0.5*fStep);
}
TGeoMatrix* TGeoPatternY::CreateMatrix() const
{
if (!IsReflected()) {
TGeoMatrix *matrix = new TGeoTranslation(0.,0.,0.);
matrix->RegisterYourself();
return matrix;
}
TGeoCombiTrans *combi = new TGeoCombiTrans();
combi->RegisterYourself();
combi->ReflectZ(kTRUE);
combi->ReflectZ(kFALSE);
return combi;
}
void TGeoPatternY::UpdateMatrix(Int_t idiv, TGeoHMatrix &matrix) const
{
matrix.Clear();
matrix.SetDy(fStart+idiv*fStep+0.5*fStep);
}
Bool_t TGeoPatternY::IsOnBoundary(const Double_t *point) const
{
Double_t seg = (point[1]-fStart)/fStep;
Double_t diff = seg - Int_t(seg);
if (diff>0.5) diff = 1.-diff;
if (diff<1e-8) return kTRUE;
return kFALSE;
}
TGeoNode *TGeoPatternY::FindNode(Double_t *point, const Double_t *dir)
{
ThreadData_t& td = GetThreadData();
TGeoNode *node = 0;
Int_t ind = (Int_t)(1.+(point[1]-fStart)/fStep) - 1;
if (dir) {
td.fNextIndex = ind;
if (dir[1]>0) td.fNextIndex++;
else td.fNextIndex--;
if ((td.fNextIndex<0) || (td.fNextIndex>=fNdivisions)) td.fNextIndex = -1;
}
if ((ind<0) || (ind>=fNdivisions)) return node;
node = GetNodeOffset(ind);
cd(ind);
return node;
}
Double_t TGeoPatternY::FindNextBoundary(Double_t *point, Double_t *dir, Int_t &indnext)
{
ThreadData_t& td = GetThreadData();
indnext = -1;
Double_t dist = TGeoShape::Big();
if (TMath::Abs(dir[1])<TGeoShape::Tolerance()) return dist;
if (td.fCurrent<0) {
Error("FindNextBoundary", "Must call FindNode first");
return dist;
}
Int_t inc = (dir[1]>0)?1:0;
dist = (fStep*(td.fCurrent+inc)-point[1])/dir[1];
if (dist<0.) Error("FindNextBoundary", "Negative distance d=%g",dist);
if (!inc) inc = -1;
indnext = td.fCurrent+inc;
return dist;
}
TGeoPatternFinder *TGeoPatternY::MakeCopy(Bool_t reflect)
{
TGeoPatternY *finder = new TGeoPatternY(*this);
if (!reflect) return finder;
finder->Reflect();
return finder;
}
void TGeoPatternY::SavePrimitive(std::ostream &out, Option_t * )
{
Int_t iaxis = 2;
out << iaxis << ", " << fNdivisions << ", " << fStart << ", " << fStep;
}
TGeoPatternZ::TGeoPatternZ()
{
CreateThreadData(1);
}
TGeoPatternZ::TGeoPatternZ(TGeoVolume *vol, Int_t ndivisions)
:TGeoPatternFinder(vol, ndivisions)
{
Double_t dz = ((TGeoBBox*)vol->GetShape())->GetDZ();
fStart = -dz;
fEnd = dz;
fStep = 2*dz/ndivisions;
CreateThreadData(1);
}
TGeoPatternZ::TGeoPatternZ(TGeoVolume *vol, Int_t ndivisions, Double_t step)
:TGeoPatternFinder(vol, ndivisions)
{
Double_t dz = ((TGeoBBox*)vol->GetShape())->GetDZ();
fStart = -dz;
fEnd = fStart + ndivisions*step;
fStep = step;
CreateThreadData(1);
}
TGeoPatternZ::TGeoPatternZ(TGeoVolume *vol, Int_t ndivisions, Double_t start, Double_t end)
:TGeoPatternFinder(vol, ndivisions)
{
fStart = start;
fEnd = end;
fStep = (end - start)/ndivisions;
CreateThreadData(1);
}
TGeoPatternZ::TGeoPatternZ(const TGeoPatternZ& pf) :
TGeoPatternFinder(pf)
{
CreateThreadData(1);
}
TGeoPatternZ& TGeoPatternZ::operator=(const TGeoPatternZ& pf)
{
if(this!=&pf) {
TGeoPatternFinder::operator=(pf);
CreateThreadData(1);
}
return *this;
}
TGeoPatternZ::~TGeoPatternZ()
{
}
void TGeoPatternZ::cd(Int_t idiv)
{
ThreadData_t& td = GetThreadData();
td.fCurrent=idiv;
td.fMatrix->SetDz(((IsReflected())?-1.:1.)*(fStart+idiv*fStep+0.5*fStep));
}
TGeoMatrix* TGeoPatternZ::CreateMatrix() const
{
if (!IsReflected()) {
TGeoMatrix *matrix = new TGeoTranslation(0.,0.,0.);
matrix->RegisterYourself();
return matrix;
}
TGeoCombiTrans *combi = new TGeoCombiTrans();
combi->RegisterYourself();
combi->ReflectZ(kTRUE);
combi->ReflectZ(kFALSE);
return combi;
}
void TGeoPatternZ::UpdateMatrix(Int_t idiv, TGeoHMatrix &matrix) const
{
matrix.Clear();
matrix.SetDz(((IsReflected())?-1.:1.)*(fStart+idiv*fStep+0.5*fStep));
}
Bool_t TGeoPatternZ::IsOnBoundary(const Double_t *point) const
{
Double_t seg = (point[2]-fStart)/fStep;
Double_t diff = seg - Int_t(seg);
if (diff>0.5) diff = 1.-diff;
if (diff<1e-8) return kTRUE;
return kFALSE;
}
TGeoNode *TGeoPatternZ::FindNode(Double_t *point, const Double_t *dir)
{
ThreadData_t& td = GetThreadData();
TGeoNode *node = 0;
Int_t ind = (Int_t)(1.+(point[2]-fStart)/fStep) - 1;
if (dir) {
td.fNextIndex = ind;
if (dir[2]>0) td.fNextIndex++;
else td.fNextIndex--;
if ((td.fNextIndex<0) || (td.fNextIndex>=fNdivisions)) td.fNextIndex = -1;
}
if ((ind<0) || (ind>=fNdivisions)) return node;
node = GetNodeOffset(ind);
cd(ind);
return node;
}
Double_t TGeoPatternZ::FindNextBoundary(Double_t *point, Double_t *dir, Int_t &indnext)
{
indnext = -1;
ThreadData_t& td = GetThreadData();
Double_t dist = TGeoShape::Big();
if (TMath::Abs(dir[2])<TGeoShape::Tolerance()) return dist;
if (td.fCurrent<0) {
Error("FindNextBoundary", "Must call FindNode first");
return dist;
}
Int_t inc = (dir[2]>0)?1:0;
dist = (fStep*(td.fCurrent+inc)-point[2])/dir[2];
if (dist<0.) Error("FindNextBoundary", "Negative distance d=%g",dist);
if (!inc) inc = -1;
indnext = td.fCurrent+inc;
return dist;
}
TGeoPatternFinder *TGeoPatternZ::MakeCopy(Bool_t reflect)
{
TGeoPatternZ *finder = new TGeoPatternZ(*this);
if (!reflect) return finder;
finder->Reflect();
return finder;
}
void TGeoPatternZ::SavePrimitive(std::ostream &out, Option_t * )
{
Int_t iaxis = 3;
out << iaxis << ", " << fNdivisions << ", " << fStart << ", " << fStep;
}
TGeoPatternParaX::TGeoPatternParaX()
{
CreateThreadData(1);
}
TGeoPatternParaX::TGeoPatternParaX(TGeoVolume *vol, Int_t ndivisions)
:TGeoPatternFinder(vol, ndivisions)
{
Double_t dx = ((TGeoPara*)vol->GetShape())->GetX();
fStart = -dx;
fEnd = dx;
fStep = 2*dx/ndivisions;
CreateThreadData(1);
}
TGeoPatternParaX::TGeoPatternParaX(TGeoVolume *vol, Int_t ndivisions, Double_t step)
:TGeoPatternFinder(vol, ndivisions)
{
Double_t dx = ((TGeoPara*)vol->GetShape())->GetX();
fStart = -dx;
fEnd = fStart + ndivisions*step;
fStep = step;
CreateThreadData(1);
}
TGeoPatternParaX::TGeoPatternParaX(TGeoVolume *vol, Int_t ndivisions, Double_t start, Double_t end)
:TGeoPatternFinder(vol, ndivisions)
{
fStart = start;
fEnd = end;
fStep = (end - start)/ndivisions;
CreateThreadData(1);
}
TGeoPatternParaX::TGeoPatternParaX(const TGeoPatternParaX& pf) :
TGeoPatternFinder(pf)
{
CreateThreadData(1);
}
TGeoPatternParaX& TGeoPatternParaX::operator=(const TGeoPatternParaX& pf)
{
if(this!=&pf) {
TGeoPatternFinder::operator=(pf);
CreateThreadData(1);
}
return *this;
}
TGeoPatternParaX::~TGeoPatternParaX()
{
}
void TGeoPatternParaX::cd(Int_t idiv)
{
ThreadData_t& td = GetThreadData();
td.fCurrent=idiv;
td.fMatrix->SetDx(fStart+idiv*fStep+0.5*fStep);
}
Bool_t TGeoPatternParaX::IsOnBoundary(const Double_t *point) const
{
Double_t txy = ((TGeoPara*)fVolume->GetShape())->GetTxy();
Double_t txz = ((TGeoPara*)fVolume->GetShape())->GetTxz();
Double_t tyz = ((TGeoPara*)fVolume->GetShape())->GetTyz();
Double_t xt = point[0]-txz*point[2]-txy*(point[1]-tyz*point[2]);
Double_t seg = (xt-fStart)/fStep;
Double_t diff = seg - Int_t(seg);
if (diff>0.5) diff = 1.-diff;
if (diff<1e-8) return kTRUE;
return kFALSE;
}
TGeoNode *TGeoPatternParaX::FindNode(Double_t *point, const Double_t *dir)
{
ThreadData_t& td = GetThreadData();
TGeoNode *node = 0;
Double_t txy = ((TGeoPara*)fVolume->GetShape())->GetTxy();
Double_t txz = ((TGeoPara*)fVolume->GetShape())->GetTxz();
Double_t tyz = ((TGeoPara*)fVolume->GetShape())->GetTyz();
Double_t xt = point[0]-txz*point[2]-txy*(point[1]-tyz*point[2]);
Int_t ind = (Int_t)(1.+(xt-fStart)/fStep)-1;
if (dir) {
Double_t ttsq = txy*txy + (txz-txy*tyz)*(txz-txy*tyz);
Double_t divdirx = 1./TMath::Sqrt(1.+ttsq);
Double_t divdiry = -txy*divdirx;
Double_t divdirz = -(txz-txy*tyz)*divdirx;
Double_t dot = dir[0]*divdirx + dir[1]*divdiry + dir[2]*divdirz;
td.fNextIndex = ind;
if (dot>0) td.fNextIndex++;
else td.fNextIndex--;
if ((td.fNextIndex<0) || (td.fNextIndex>=fNdivisions)) td.fNextIndex = -1;
}
if ((ind<0) || (ind>=fNdivisions)) return node;
node = GetNodeOffset(ind);
cd(ind);
return node;
}
TGeoPatternFinder *TGeoPatternParaX::MakeCopy(Bool_t reflect)
{
TGeoPatternParaX *finder = new TGeoPatternParaX(*this);
if (!reflect) return finder;
finder->Reflect();
return finder;
}
void TGeoPatternParaX::SavePrimitive(std::ostream &out, Option_t * )
{
Int_t iaxis = 1;
out << iaxis << ", " << fNdivisions << ", " << fStart << ", " << fStep;
}
TGeoMatrix* TGeoPatternParaX::CreateMatrix() const
{
if (!IsReflected()) {
TGeoMatrix *matrix = new TGeoTranslation(0.,0.,0.);
matrix->RegisterYourself();
return matrix;
}
TGeoCombiTrans *combi = new TGeoCombiTrans();
combi->RegisterYourself();
combi->ReflectZ(kTRUE);
combi->ReflectZ(kFALSE);
return combi;
}
void TGeoPatternParaX::UpdateMatrix(Int_t idiv, TGeoHMatrix &matrix) const
{
matrix.Clear();
matrix.SetDx(fStart+idiv*fStep+0.5*fStep);
}
TGeoPatternParaY::TGeoPatternParaY()
{
fTxy = 0;
CreateThreadData(1);
}
TGeoPatternParaY::TGeoPatternParaY(TGeoVolume *vol, Int_t ndivisions)
:TGeoPatternFinder(vol, ndivisions)
{
fTxy = ((TGeoPara*)vol->GetShape())->GetTxy();
Double_t dy = ((TGeoPara*)vol->GetShape())->GetY();
fStart = -dy;
fEnd = dy;
fStep = 2*dy/ndivisions;
CreateThreadData(1);
}
TGeoPatternParaY::TGeoPatternParaY(TGeoVolume *vol, Int_t ndivisions, Double_t step)
:TGeoPatternFinder(vol, ndivisions)
{
fTxy = ((TGeoPara*)vol->GetShape())->GetTxy();
Double_t dy = ((TGeoPara*)vol->GetShape())->GetY();
fStart = -dy;
fEnd = fStart + ndivisions*step;
fStep = step;
CreateThreadData(1);
}
TGeoPatternParaY::TGeoPatternParaY(TGeoVolume *vol, Int_t ndivisions, Double_t start, Double_t end)
:TGeoPatternFinder(vol, ndivisions)
{
fTxy = ((TGeoPara*)vol->GetShape())->GetTxy();
fStart = start;
fEnd = end;
fStep = (end - start)/ndivisions;
CreateThreadData(1);
}
TGeoPatternParaY::TGeoPatternParaY(const TGeoPatternParaY& pf) :
TGeoPatternFinder(pf)
{
CreateThreadData(1);
}
TGeoPatternParaY& TGeoPatternParaY::operator=(const TGeoPatternParaY& pf)
{
if(this!=&pf) {
TGeoPatternFinder::operator=(pf);
CreateThreadData(1);
}
return *this;
}
TGeoPatternParaY::~TGeoPatternParaY()
{
}
void TGeoPatternParaY::cd(Int_t idiv)
{
ThreadData_t& td = GetThreadData();
td.fCurrent = idiv;
Double_t dy = fStart+idiv*fStep+0.5*fStep;
td.fMatrix->SetDx(fTxy*dy);
td.fMatrix->SetDy(dy);
}
Bool_t TGeoPatternParaY::IsOnBoundary(const Double_t *point) const
{
Double_t tyz = ((TGeoPara*)fVolume->GetShape())->GetTyz();
Double_t yt = point[1]-tyz*point[2];
Double_t seg = (yt-fStart)/fStep;
Double_t diff = seg - Int_t(seg);
if (diff>0.5) diff = 1.-diff;
if (diff<1e-8) return kTRUE;
return kFALSE;
}
TGeoNode *TGeoPatternParaY::FindNode(Double_t *point, const Double_t *dir)
{
ThreadData_t& td = GetThreadData();
TGeoNode *node = 0;
Double_t tyz = ((TGeoPara*)fVolume->GetShape())->GetTyz();
Double_t yt = point[1]-tyz*point[2];
Int_t ind = (Int_t)(1.+(yt-fStart)/fStep) - 1;
if (dir) {
Double_t divdiry = 1./TMath::Sqrt(1.+tyz*tyz);
Double_t divdirz = -tyz*divdiry;
Double_t dot = dir[1]*divdiry + dir[2]*divdirz;
td.fNextIndex = ind;
if (dot>0) td.fNextIndex++;
else td.fNextIndex--;
if ((td.fNextIndex<0) || (td.fNextIndex>=fNdivisions)) td.fNextIndex = -1;
}
if ((ind<0) || (ind>=fNdivisions)) return node;
node = GetNodeOffset(ind);
cd(ind);
return node;
}
TGeoPatternFinder *TGeoPatternParaY::MakeCopy(Bool_t reflect)
{
TGeoPatternParaY *finder = new TGeoPatternParaY(*this);
if (!reflect) return finder;
finder->Reflect();
return finder;
}
void TGeoPatternParaY::SavePrimitive(std::ostream &out, Option_t * )
{
Int_t iaxis = 2;
out << iaxis << ", " << fNdivisions << ", " << fStart << ", " << fStep;
}
TGeoMatrix* TGeoPatternParaY::CreateMatrix() const
{
if (!IsReflected()) {
TGeoMatrix *matrix = new TGeoTranslation(0.,0.,0.);
matrix->RegisterYourself();
return matrix;
}
TGeoCombiTrans *combi = new TGeoCombiTrans();
combi->RegisterYourself();
combi->ReflectZ(kTRUE);
combi->ReflectZ(kFALSE);
return combi;
}
void TGeoPatternParaY::UpdateMatrix(Int_t idiv, TGeoHMatrix &matrix) const
{
matrix.Clear();
Double_t dy = fStart+idiv*fStep+0.5*fStep;
matrix.SetDx(fTxy*dy);
matrix.SetDy(dy);
}
TGeoPatternParaZ::TGeoPatternParaZ()
{
fTxz = 0;
fTyz = 0;
CreateThreadData(1);
}
TGeoPatternParaZ::TGeoPatternParaZ(TGeoVolume *vol, Int_t ndivisions)
:TGeoPatternFinder(vol, ndivisions)
{
fTxz = ((TGeoPara*)vol->GetShape())->GetTxz();
fTyz = ((TGeoPara*)vol->GetShape())->GetTyz();
Double_t dz = ((TGeoPara*)vol->GetShape())->GetZ();
fStart = -dz;
fEnd = dz;
fStep = 2*dz/ndivisions;
CreateThreadData(1);
}
TGeoPatternParaZ::TGeoPatternParaZ(TGeoVolume *vol, Int_t ndivisions, Double_t step)
:TGeoPatternFinder(vol, ndivisions)
{
fTxz = ((TGeoPara*)vol->GetShape())->GetTxz();
fTyz = ((TGeoPara*)vol->GetShape())->GetTyz();
Double_t dz = ((TGeoPara*)vol->GetShape())->GetZ();
fStart = -dz;
fEnd = fStart + ndivisions*step;
fStep = step;
CreateThreadData(1);
}
TGeoPatternParaZ::TGeoPatternParaZ(TGeoVolume *vol, Int_t ndivisions, Double_t start, Double_t end)
:TGeoPatternFinder(vol, ndivisions)
{
fTxz = ((TGeoPara*)vol->GetShape())->GetTxz();
fTyz = ((TGeoPara*)vol->GetShape())->GetTyz();
fStart = start;
fEnd = end;
fStep = (end - start)/ndivisions;
CreateThreadData(1);
}
TGeoPatternParaZ::TGeoPatternParaZ(const TGeoPatternParaZ& pf) :
TGeoPatternFinder(pf)
{
CreateThreadData(1);
}
TGeoPatternParaZ& TGeoPatternParaZ::operator=(const TGeoPatternParaZ& pf)
{
if(this!=&pf) {
TGeoPatternFinder::operator=(pf);
CreateThreadData(1);
}
return *this;
}
TGeoPatternParaZ::~TGeoPatternParaZ()
{
}
void TGeoPatternParaZ::cd(Int_t idiv)
{
ThreadData_t& td = GetThreadData();
td.fCurrent = idiv;
Double_t dz = fStart+idiv*fStep+0.5*fStep;
td.fMatrix->SetDx(fTxz*dz);
td.fMatrix->SetDy(fTyz*dz);
td.fMatrix->SetDz((IsReflected())?-dz:dz);
}
Bool_t TGeoPatternParaZ::IsOnBoundary(const Double_t *point) const
{
Double_t seg = (point[2]-fStart)/fStep;
Double_t diff = seg - Int_t(seg);
if (diff>0.5) diff = 1.-diff;
if (diff<1e-8) return kTRUE;
return kFALSE;
}
TGeoNode *TGeoPatternParaZ::FindNode(Double_t *point, const Double_t *dir)
{
ThreadData_t& td = GetThreadData();
TGeoNode *node = 0;
Double_t zt = point[2];
Int_t ind = (Int_t)(1.+(zt-fStart)/fStep) - 1;
if (dir) {
td.fNextIndex = ind;
if (dir[2]>0) td.fNextIndex++;
else td.fNextIndex--;
if ((td.fNextIndex<0) || (td.fNextIndex>=fNdivisions)) td.fNextIndex = -1;
}
if ((ind<0) || (ind>=fNdivisions)) return node;
node = GetNodeOffset(ind);
cd(ind);
return node;
}
TGeoPatternFinder *TGeoPatternParaZ::MakeCopy(Bool_t reflect)
{
TGeoPatternParaZ *finder = new TGeoPatternParaZ(*this);
if (!reflect) return finder;
finder->Reflect();
return finder;
}
void TGeoPatternParaZ::SavePrimitive(std::ostream &out, Option_t * )
{
Int_t iaxis = 3;
out << iaxis << ", " << fNdivisions << ", " << fStart << ", " << fStep;
}
TGeoMatrix* TGeoPatternParaZ::CreateMatrix() const
{
if (!IsReflected()) {
TGeoMatrix *matrix = new TGeoTranslation(0.,0.,0.);
matrix->RegisterYourself();
return matrix;
}
TGeoCombiTrans *combi = new TGeoCombiTrans();
combi->RegisterYourself();
combi->ReflectZ(kTRUE);
combi->ReflectZ(kFALSE);
return combi;
}
void TGeoPatternParaZ::UpdateMatrix(Int_t idiv, TGeoHMatrix &matrix) const
{
matrix.Clear();
Double_t dz = fStart+idiv*fStep+0.5*fStep;
matrix.SetDx(fTxz*dz);
matrix.SetDy(fTyz*dz);
matrix.SetDz((IsReflected())?-dz:dz);
}
TGeoPatternTrapZ::TGeoPatternTrapZ()
{
fTxz = 0;
fTyz = 0;
CreateThreadData(1);
}
TGeoPatternTrapZ::TGeoPatternTrapZ(TGeoVolume *vol, Int_t ndivisions)
:TGeoPatternFinder(vol, ndivisions)
{
Double_t theta = ((TGeoTrap*)vol->GetShape())->GetTheta();
Double_t phi = ((TGeoTrap*)vol->GetShape())->GetPhi();
fTxz = TMath::Tan(theta*TMath::DegToRad())*TMath::Cos(phi*TMath::DegToRad());
fTyz = TMath::Tan(theta*TMath::DegToRad())*TMath::Sin(phi*TMath::DegToRad());
Double_t dz = ((TGeoArb8*)vol->GetShape())->GetDz();
fStart = -dz;
fEnd = dz;
fStep = 2*dz/ndivisions;
CreateThreadData(1);
}
TGeoPatternTrapZ::TGeoPatternTrapZ(TGeoVolume *vol, Int_t ndivisions, Double_t step)
:TGeoPatternFinder(vol, ndivisions)
{
Double_t theta = ((TGeoTrap*)vol->GetShape())->GetTheta();
Double_t phi = ((TGeoTrap*)vol->GetShape())->GetPhi();
fTxz = TMath::Tan(theta*TMath::DegToRad())*TMath::Cos(phi*TMath::DegToRad());
fTyz = TMath::Tan(theta*TMath::DegToRad())*TMath::Sin(phi*TMath::DegToRad());
Double_t dz = ((TGeoArb8*)vol->GetShape())->GetDz();
fStart = -dz;
fEnd = fStart + ndivisions*step;
fStep = step;
CreateThreadData(1);
}
TGeoPatternTrapZ::TGeoPatternTrapZ(TGeoVolume *vol, Int_t ndivisions, Double_t start, Double_t end)
:TGeoPatternFinder(vol, ndivisions)
{
Double_t theta = ((TGeoTrap*)vol->GetShape())->GetTheta();
Double_t phi = ((TGeoTrap*)vol->GetShape())->GetPhi();
fTxz = TMath::Tan(theta*TMath::DegToRad())*TMath::Cos(phi*TMath::DegToRad());
fTyz = TMath::Tan(theta*TMath::DegToRad())*TMath::Sin(phi*TMath::DegToRad());
fStart = start;
fEnd = end;
fStep = (end - start)/ndivisions;
CreateThreadData(1);
}
TGeoPatternTrapZ::TGeoPatternTrapZ(const TGeoPatternTrapZ& pf) :
TGeoPatternFinder(pf),
fTxz(pf.fTxz),
fTyz(pf.fTyz)
{
CreateThreadData(1);
}
TGeoPatternTrapZ& TGeoPatternTrapZ::operator=(const TGeoPatternTrapZ& pf)
{
if(this!=&pf) {
TGeoPatternFinder::operator=(pf);
fTxz = pf.fTxz;
fTyz = pf.fTyz;
CreateThreadData(1);
}
return *this;
}
TGeoPatternTrapZ::~TGeoPatternTrapZ()
{
}
void TGeoPatternTrapZ::cd(Int_t idiv)
{
ThreadData_t& td = GetThreadData();
td.fCurrent = idiv;
Double_t dz = fStart+idiv*fStep+0.5*fStep;
td.fMatrix->SetDx(fTxz*dz);
td.fMatrix->SetDy(fTyz*dz);
td.fMatrix->SetDz((IsReflected())?-dz:dz);
}
Bool_t TGeoPatternTrapZ::IsOnBoundary(const Double_t *point) const
{
Double_t seg = (point[2]-fStart)/fStep;
Double_t diff = seg - Int_t(seg);
if (diff>0.5) diff = 1.-diff;
if (diff<1e-8) return kTRUE;
return kFALSE;
}
TGeoNode *TGeoPatternTrapZ::FindNode(Double_t *point, const Double_t *dir)
{
ThreadData_t& td = GetThreadData();
TGeoNode *node = 0;
Double_t zt = point[2];
Int_t ind = (Int_t)(1. + (zt-fStart)/fStep) - 1;
if (dir) {
td.fNextIndex = ind;
if (dir[2]>0) td.fNextIndex++;
else td.fNextIndex--;
if ((td.fNextIndex<0) || (td.fNextIndex>=fNdivisions)) td.fNextIndex = -1;
}
if ((ind<0) || (ind>=fNdivisions)) return node;
node = GetNodeOffset(ind);
cd(ind);
return node;
}
TGeoPatternFinder *TGeoPatternTrapZ::MakeCopy(Bool_t reflect)
{
TGeoPatternTrapZ *finder = new TGeoPatternTrapZ(*this);
if (!reflect) return finder;
finder->Reflect();
return finder;
}
void TGeoPatternTrapZ::SavePrimitive(std::ostream &out, Option_t * )
{
Int_t iaxis = 3;
out << iaxis << ", " << fNdivisions << ", " << fStart << ", " << fStep;
}
TGeoMatrix* TGeoPatternTrapZ::CreateMatrix() const
{
if (!IsReflected()) {
TGeoMatrix *matrix = new TGeoTranslation(0.,0.,0.);
matrix->RegisterYourself();
return matrix;
}
TGeoCombiTrans *combi = new TGeoCombiTrans();
combi->RegisterYourself();
combi->ReflectZ(kTRUE);
combi->ReflectZ(kFALSE);
return combi;
}
void TGeoPatternTrapZ::UpdateMatrix(Int_t idiv, TGeoHMatrix &matrix) const
{
matrix.Clear();
Double_t dz = fStart+idiv*fStep+0.5*fStep;
matrix.SetDx(fTxz*dz);
matrix.SetDy(fTyz*dz);
matrix.SetDz((IsReflected())?-dz:dz);
}
TGeoPatternCylR::TGeoPatternCylR()
{
CreateThreadData(1);
}
TGeoPatternCylR::TGeoPatternCylR(TGeoVolume *vol, Int_t ndivisions)
:TGeoPatternFinder(vol, ndivisions)
{
CreateThreadData(1);
}
TGeoPatternCylR::TGeoPatternCylR(TGeoVolume *vol, Int_t ndivisions, Double_t step)
:TGeoPatternFinder(vol, ndivisions)
{
fStep = step;
CreateThreadData(1);
}
TGeoPatternCylR::TGeoPatternCylR(TGeoVolume *vol, Int_t ndivisions, Double_t start, Double_t end)
:TGeoPatternFinder(vol, ndivisions)
{
fStart = start;
fEnd = end;
fStep = (end - start)/ndivisions;
CreateThreadData(1);
}
TGeoPatternCylR::TGeoPatternCylR(const TGeoPatternCylR& pf) :
TGeoPatternFinder(pf)
{
CreateThreadData(1);
}
TGeoPatternCylR& TGeoPatternCylR::operator=(const TGeoPatternCylR& pf)
{
if(this!=&pf) {
TGeoPatternFinder::operator=(pf);
CreateThreadData(1);
}
return *this;
}
TGeoPatternCylR::~TGeoPatternCylR()
{
}
Bool_t TGeoPatternCylR::IsOnBoundary(const Double_t *point) const
{
Double_t r = TMath::Sqrt(point[0]*point[0]+point[1]*point[1]);
Double_t seg = (r-fStart)/fStep;
Double_t diff = seg - Int_t(seg);
if (diff>0.5) diff = 1.-diff;
if (diff<1e-8) return kTRUE;
return kFALSE;
}
void TGeoPatternCylR::cd(Int_t idiv)
{
ThreadData_t& td = GetThreadData();
td.fCurrent=idiv;
}
TGeoNode *TGeoPatternCylR::FindNode(Double_t *point, const Double_t *dir)
{
ThreadData_t& td = GetThreadData();
if (!td.fMatrix) td.fMatrix = gGeoIdentity;
TGeoNode *node = 0;
Double_t r = TMath::Sqrt(point[0]*point[0]+point[1]*point[1]);
Int_t ind = (Int_t)(1. + (r-fStart)/fStep) - 1;
if (dir) {
td.fNextIndex = ind;
Double_t dot = point[0]*dir[0] + point[1]*dir[1];
if (dot>0) td.fNextIndex++;
else td.fNextIndex--;
if ((td.fNextIndex<0) || (td.fNextIndex>=fNdivisions)) td.fNextIndex = -1;
}
if ((ind<0) || (ind>=fNdivisions)) return node;
node = GetNodeOffset(ind);
cd(ind);
return node;
}
TGeoPatternFinder *TGeoPatternCylR::MakeCopy(Bool_t reflect)
{
TGeoPatternCylR *finder = new TGeoPatternCylR(*this);
if (!reflect) return finder;
finder->Reflect();
return finder;
}
void TGeoPatternCylR::SavePrimitive(std::ostream &out, Option_t * )
{
Int_t iaxis = 1;
out << iaxis << ", " << fNdivisions << ", " << fStart << ", " << fStep;
}
TGeoMatrix* TGeoPatternCylR::CreateMatrix() const
{
return gGeoIdentity;
}
void TGeoPatternCylR::UpdateMatrix(Int_t, TGeoHMatrix &matrix) const
{
matrix.Clear();
}
TGeoPatternCylPhi::TGeoPatternCylPhi()
{
fSinCos = 0;
CreateThreadData(1);
}
TGeoPatternCylPhi::TGeoPatternCylPhi(TGeoVolume *vol, Int_t ndivisions)
:TGeoPatternFinder(vol, ndivisions)
{
fStart = 0;
fEnd = 0;
fStep = 0;
fSinCos = new Double_t[2*fNdivisions];
for (Int_t i = 0; i<fNdivisions; i++) {
fSinCos[2*i] = TMath::Sin(TMath::DegToRad()*(fStart+0.5*fStep+i*fStep));
fSinCos[2*i+1] = TMath::Cos(TMath::DegToRad()*(fStart+0.5*fStep+i*fStep));
}
CreateThreadData(1);
}
TGeoPatternCylPhi::TGeoPatternCylPhi(TGeoVolume *vol, Int_t ndivisions, Double_t step)
:TGeoPatternFinder(vol, ndivisions)
{
fStep = step;
fSinCos = new Double_t[2*ndivisions];
for (Int_t i = 0; i<fNdivisions; i++) {
fSinCos[2*i] = TMath::Sin(TMath::DegToRad()*(fStart+0.5*fStep+i*fStep));
fSinCos[2*i+1] = TMath::Cos(TMath::DegToRad()*(fStart+0.5*fStep+i*fStep));
}
CreateThreadData(1);
}
TGeoPatternCylPhi::TGeoPatternCylPhi(TGeoVolume *vol, Int_t ndivisions, Double_t start, Double_t end)
:TGeoPatternFinder(vol, ndivisions)
{
fStart = start;
if (fStart<0) fStart+=360;
fEnd = end;
if (fEnd<0) fEnd+=360;
if ((end-start)<0)
fStep = (end-start+360)/ndivisions;
else
fStep = (end-start)/ndivisions;
fSinCos = new Double_t[2*ndivisions];
for (Int_t idiv = 0; idiv<ndivisions; idiv++) {
fSinCos[2*idiv] = TMath::Sin(TMath::DegToRad()*(start+0.5*fStep+idiv*fStep));
fSinCos[2*idiv+1] = TMath::Cos(TMath::DegToRad()*(start+0.5*fStep+idiv*fStep));
}
CreateThreadData(1);
}
TGeoPatternCylPhi::~TGeoPatternCylPhi()
{
if (fSinCos) delete [] fSinCos;
}
void TGeoPatternCylPhi::cd(Int_t idiv)
{
ThreadData_t& td = GetThreadData();
td.fCurrent = idiv;
((TGeoRotation*)td.fMatrix)->FastRotZ(&fSinCos[2*idiv]);
}
Bool_t TGeoPatternCylPhi::IsOnBoundary(const Double_t *point) const
{
Double_t phi = TMath::ATan2(point[1], point[0])*TMath::RadToDeg();
if (phi<0) phi += 360;
Double_t ddp = phi - fStart;
if (ddp<0) ddp+=360;
Double_t seg = ddp/fStep;
Double_t diff = seg - Int_t(seg);
if (diff>0.5) diff = 1.-diff;
if (diff<1e-8) return kTRUE;
return kFALSE;
}
TGeoNode *TGeoPatternCylPhi::FindNode(Double_t *point, const Double_t *dir)
{
ThreadData_t& td = GetThreadData();
TGeoNode *node = 0;
Double_t phi = TMath::ATan2(point[1], point[0])*TMath::RadToDeg();
if (phi<0) phi += 360;
Double_t ddp = phi - fStart;
if (ddp<0) ddp+=360;
Int_t ind = (Int_t)(1. + ddp/fStep) - 1;
if (dir) {
td.fNextIndex = ind;
Double_t dot = point[0]*dir[1]-point[1]*dir[0];
if (dot>0) td.fNextIndex++;
else td.fNextIndex--;
if ((td.fNextIndex<0) || (td.fNextIndex>=fNdivisions)) td.fNextIndex = -1;
}
if ((ind<0) || (ind>=fNdivisions)) return node;
node = GetNodeOffset(ind);
cd(ind);
return node;
}
TGeoPatternFinder *TGeoPatternCylPhi::MakeCopy(Bool_t reflect)
{
TGeoPatternCylPhi *finder = new TGeoPatternCylPhi(*this);
if (!reflect) return finder;
finder->Reflect();
return finder;
}
void TGeoPatternCylPhi::SavePrimitive(std::ostream &out, Option_t * )
{
Int_t iaxis = 2;
out << iaxis << ", " << fNdivisions << ", " << fStart << ", " << fStep;
}
void TGeoPatternCylPhi::Streamer(TBuffer &R__b)
{
if (R__b.IsReading()) {
R__b.ReadClassBuffer(TGeoPatternCylPhi::Class(), this);
if (fNdivisions) {
fSinCos = new Double_t[2*fNdivisions];
for (Int_t idiv = 0; idiv<fNdivisions; idiv++) {
fSinCos[2*idiv] = TMath::Sin(TMath::DegToRad()*(fStart+0.5*fStep+idiv*fStep));
fSinCos[2*idiv+1] = TMath::Cos(TMath::DegToRad()*(fStart+0.5*fStep+idiv*fStep));
}
}
} else {
R__b.WriteClassBuffer(TGeoPatternCylPhi::Class(), this);
}
}
TGeoMatrix* TGeoPatternCylPhi::CreateMatrix() const
{
if (!IsReflected()) {
TGeoRotation *matrix = new TGeoRotation();
matrix->RegisterYourself();
return matrix;
}
TGeoRotation *rot = new TGeoRotation();
rot->RegisterYourself();
rot->ReflectZ(kTRUE);
rot->ReflectZ(kFALSE);
return rot;
}
void TGeoPatternCylPhi::UpdateMatrix(Int_t idiv, TGeoHMatrix &matrix) const
{
matrix.Clear();
matrix.FastRotZ(&fSinCos[2*idiv]);
}
TGeoPatternSphR::TGeoPatternSphR()
{
CreateThreadData(1);
}
TGeoPatternSphR::TGeoPatternSphR(TGeoVolume *vol, Int_t ndivisions)
:TGeoPatternFinder(vol, ndivisions)
{
CreateThreadData(1);
}
TGeoPatternSphR::TGeoPatternSphR(TGeoVolume *vol, Int_t ndivisions, Double_t step)
:TGeoPatternFinder(vol, ndivisions)
{
fStep = step;
CreateThreadData(1);
}
TGeoPatternSphR::TGeoPatternSphR(TGeoVolume *vol, Int_t ndivisions, Double_t start, Double_t end)
:TGeoPatternFinder(vol, ndivisions)
{
fStart = start;
fEnd = end;
fStep = (end - start)/ndivisions;
CreateThreadData(1);
}
TGeoPatternSphR::TGeoPatternSphR(const TGeoPatternSphR& pf) :
TGeoPatternFinder(pf)
{
CreateThreadData(1);
}
TGeoPatternSphR& TGeoPatternSphR::operator=(const TGeoPatternSphR& pf)
{
if(this!=&pf) {
TGeoPatternFinder::operator=(pf);
CreateThreadData(1);
}
return *this;
}
TGeoPatternSphR::~TGeoPatternSphR()
{
}
void TGeoPatternSphR::cd(Int_t idiv)
{
ThreadData_t& td = GetThreadData();
td.fCurrent = idiv;
}
TGeoNode *TGeoPatternSphR::FindNode(Double_t * , const Double_t * )
{
return 0;
}
TGeoPatternFinder *TGeoPatternSphR::MakeCopy(Bool_t)
{
TGeoPatternSphR *finder = new TGeoPatternSphR(*this);
return finder;
}
void TGeoPatternSphR::SavePrimitive(std::ostream &out, Option_t * )
{
Int_t iaxis = 1;
out << iaxis << ", " << fNdivisions << ", " << fStart << ", " << fStep;
}
TGeoMatrix* TGeoPatternSphR::CreateMatrix() const
{
return gGeoIdentity;
}
void TGeoPatternSphR::UpdateMatrix(Int_t, TGeoHMatrix &matrix) const
{
matrix.Clear();
}
TGeoPatternSphTheta::TGeoPatternSphTheta()
{
CreateThreadData(1);
}
TGeoPatternSphTheta::TGeoPatternSphTheta(TGeoVolume *vol, Int_t ndivisions)
:TGeoPatternFinder(vol, ndivisions)
{
CreateThreadData(1);
}
TGeoPatternSphTheta::TGeoPatternSphTheta(TGeoVolume *vol, Int_t ndivisions, Double_t step)
:TGeoPatternFinder(vol, ndivisions)
{
fStep = step;
CreateThreadData(1);
}
TGeoPatternSphTheta::TGeoPatternSphTheta(TGeoVolume *vol, Int_t ndivisions, Double_t start, Double_t end)
:TGeoPatternFinder(vol, ndivisions)
{
fStart = start;
fEnd = end;
fStep = (end - start)/ndivisions;
CreateThreadData(1);
}
TGeoPatternSphTheta::TGeoPatternSphTheta(const TGeoPatternSphTheta& pf) :
TGeoPatternFinder(pf)
{
CreateThreadData(1);
}
TGeoPatternSphTheta& TGeoPatternSphTheta::operator=(const TGeoPatternSphTheta& pf)
{
if(this!=&pf) {
TGeoPatternFinder::operator=(pf);
CreateThreadData(1);
}
return *this;
}
TGeoPatternSphTheta::~TGeoPatternSphTheta()
{
}
void TGeoPatternSphTheta::cd(Int_t idiv)
{
ThreadData_t& td = GetThreadData();
td.fCurrent=idiv;
}
TGeoNode *TGeoPatternSphTheta::FindNode(Double_t * , const Double_t * )
{
return 0;
}
TGeoPatternFinder *TGeoPatternSphTheta::MakeCopy(Bool_t)
{
TGeoPatternSphTheta *finder = new TGeoPatternSphTheta(*this);
return finder;
}
void TGeoPatternSphTheta::SavePrimitive(std::ostream &out, Option_t * )
{
Int_t iaxis = 2;
out << iaxis << ", " << fNdivisions << ", " << fStart << ", " << fStep;
}
TGeoMatrix* TGeoPatternSphTheta::CreateMatrix() const
{
return gGeoIdentity;
}
void TGeoPatternSphTheta::UpdateMatrix(Int_t, TGeoHMatrix &matrix) const
{
matrix.Clear();
}
TGeoPatternSphPhi::TGeoPatternSphPhi()
{
fSinCos = 0;
CreateThreadData(1);
}
TGeoPatternSphPhi::TGeoPatternSphPhi(TGeoVolume *vol, Int_t ndivisions)
:TGeoPatternFinder(vol, ndivisions)
{
fStart = 0;
fEnd = 360.;
fStep = 360./ndivisions;
CreateSinCos();
CreateThreadData(1);
}
TGeoPatternSphPhi::TGeoPatternSphPhi(TGeoVolume *vol, Int_t ndivisions, Double_t step)
:TGeoPatternFinder(vol, ndivisions)
{
fStep = step;
CreateSinCos();
CreateThreadData(1);
}
TGeoPatternSphPhi::TGeoPatternSphPhi(TGeoVolume *vol, Int_t ndivisions, Double_t start, Double_t end)
:TGeoPatternFinder(vol, ndivisions)
{
fStart = start;
if (fStart<0) fStart+=360;
fEnd = end;
if (fEnd<0) fEnd+=360;
if ((end-start)<0)
fStep = (end-start+360)/ndivisions;
else
fStep = (end-start)/ndivisions;
CreateSinCos();
CreateThreadData(1);
}
TGeoPatternSphPhi::~TGeoPatternSphPhi()
{
delete [] fSinCos;
}
Double_t *TGeoPatternSphPhi::CreateSinCos()
{
fSinCos = new Double_t[2*fNdivisions];
for (Int_t idiv = 0; idiv<fNdivisions; idiv++) {
fSinCos[2*idiv] = TMath::Sin(TMath::DegToRad()*(fStart+0.5*fStep+idiv*fStep));
fSinCos[2*idiv+1] = TMath::Cos(TMath::DegToRad()*(fStart+0.5*fStep+idiv*fStep));
}
return fSinCos;
}
void TGeoPatternSphPhi::cd(Int_t idiv)
{
ThreadData_t& td = GetThreadData();
td.fCurrent = idiv;
if (!fSinCos) CreateSinCos();
((TGeoRotation*)td.fMatrix)->FastRotZ(&fSinCos[2*idiv]);
}
Bool_t TGeoPatternSphPhi::IsOnBoundary(const Double_t *point) const
{
Double_t phi = TMath::ATan2(point[1], point[0])*TMath::RadToDeg();
if (phi<0) phi += 360;
Double_t ddp = phi - fStart;
if (ddp<0) ddp+=360;
Double_t seg = ddp/fStep;
Double_t diff = seg - Int_t(seg);
if (diff>0.5) diff = 1.-diff;
if (diff<1e-8) return kTRUE;
return kFALSE;
}
TGeoNode *TGeoPatternSphPhi::FindNode(Double_t * point, const Double_t * dir)
{
ThreadData_t& td = GetThreadData();
TGeoNode *node = 0;
Double_t phi = TMath::ATan2(point[1], point[0])*TMath::RadToDeg();
if (phi<0) phi += 360;
Double_t ddp = phi - fStart;
if (ddp<0) ddp+=360;
Int_t ind = (Int_t)(1. + ddp/fStep) - 1;
if (dir) {
td.fNextIndex = ind;
Double_t dot = point[0]*dir[1]-point[1]*dir[0];
if (dot>0) td.fNextIndex++;
else td.fNextIndex--;
if ((td.fNextIndex<0) || (td.fNextIndex>=fNdivisions)) td.fNextIndex = -1;
}
if ((ind<0) || (ind>=fNdivisions)) return node;
node = GetNodeOffset(ind);
cd(ind);
return node;
}
TGeoPatternFinder *TGeoPatternSphPhi::MakeCopy(Bool_t reflect)
{
TGeoPatternSphPhi *finder = new TGeoPatternSphPhi(fVolume, fNdivisions, fStart, fEnd);
if (!reflect) return finder;
finder->Reflect();
return finder;
}
void TGeoPatternSphPhi::SavePrimitive(std::ostream &out, Option_t * )
{
Int_t iaxis = 2;
out << iaxis << ", " << fNdivisions << ", " << fStart << ", " << fStep;
}
TGeoMatrix* TGeoPatternSphPhi::CreateMatrix() const
{
if (!IsReflected()) {
TGeoRotation *matrix = new TGeoRotation();
matrix->RegisterYourself();
return matrix;
}
TGeoRotation *rot = new TGeoRotation();
rot->RegisterYourself();
rot->ReflectZ(kTRUE);
rot->ReflectZ(kFALSE);
return rot;
}
void TGeoPatternSphPhi::UpdateMatrix(Int_t idiv, TGeoHMatrix &matrix) const
{
if (!fSinCos) ((TGeoPatternSphPhi*)this)->CreateSinCos();
matrix.Clear();
matrix.FastRotZ(&fSinCos[2*idiv]);
}
TGeoPatternHoneycomb::TGeoPatternHoneycomb()
{
fNrows = 0;
fAxisOnRows = 0;
fNdivisions = 0;
fStart = 0;
CreateThreadData(1);
}
TGeoPatternHoneycomb::TGeoPatternHoneycomb(TGeoVolume *vol, Int_t nrows)
:TGeoPatternFinder(vol, nrows)
{
fNrows = nrows;
fAxisOnRows = 0;
fNdivisions = 0;
fStart = 0;
CreateThreadData(1);
}
TGeoPatternHoneycomb::TGeoPatternHoneycomb(const TGeoPatternHoneycomb& pfh) :
TGeoPatternFinder(pfh),
fNrows(pfh.fNrows),
fAxisOnRows(pfh.fAxisOnRows),
fNdivisions(pfh.fNdivisions),
fStart(pfh.fStart)
{
CreateThreadData(1);
}
TGeoPatternHoneycomb& TGeoPatternHoneycomb::operator=(const TGeoPatternHoneycomb& pfh)
{
if(this!=&pfh) {
TGeoPatternFinder::operator=(pfh);
fNrows=pfh.fNrows;
fAxisOnRows=pfh.fAxisOnRows;
fNdivisions=pfh.fNdivisions;
fStart=pfh.fStart;
CreateThreadData(1);
}
return *this;
}
TGeoPatternHoneycomb::~TGeoPatternHoneycomb()
{
}
void TGeoPatternHoneycomb::cd(Int_t idiv)
{
ThreadData_t& td = GetThreadData();
td.fCurrent=idiv;
}
TGeoNode *TGeoPatternHoneycomb::FindNode(Double_t * , const Double_t * )
{
return 0;
}
TGeoMatrix* TGeoPatternHoneycomb::CreateMatrix() const
{
return gGeoIdentity;
}
void TGeoPatternHoneycomb::UpdateMatrix(Int_t, TGeoHMatrix &matrix) const
{
matrix.Clear();
}
TGeoPatternFinder.cxx:100 TGeoPatternFinder.cxx:101 TGeoPatternFinder.cxx:102 TGeoPatternFinder.cxx:103 TGeoPatternFinder.cxx:104 TGeoPatternFinder.cxx:105 TGeoPatternFinder.cxx:106 TGeoPatternFinder.cxx:107 TGeoPatternFinder.cxx:108 TGeoPatternFinder.cxx:109 TGeoPatternFinder.cxx:110 TGeoPatternFinder.cxx:111 TGeoPatternFinder.cxx:112 TGeoPatternFinder.cxx:113 TGeoPatternFinder.cxx:114 TGeoPatternFinder.cxx:115 TGeoPatternFinder.cxx:116 TGeoPatternFinder.cxx:117 TGeoPatternFinder.cxx:118 TGeoPatternFinder.cxx:119 TGeoPatternFinder.cxx:120 TGeoPatternFinder.cxx:121 TGeoPatternFinder.cxx:122 TGeoPatternFinder.cxx:123 TGeoPatternFinder.cxx:124 TGeoPatternFinder.cxx:125 TGeoPatternFinder.cxx:126 TGeoPatternFinder.cxx:127 TGeoPatternFinder.cxx:128 TGeoPatternFinder.cxx:129 TGeoPatternFinder.cxx:130 TGeoPatternFinder.cxx:131 TGeoPatternFinder.cxx:132 TGeoPatternFinder.cxx:133 TGeoPatternFinder.cxx:134 TGeoPatternFinder.cxx:135 TGeoPatternFinder.cxx:136 TGeoPatternFinder.cxx:137 TGeoPatternFinder.cxx:138 TGeoPatternFinder.cxx:139 TGeoPatternFinder.cxx:140 TGeoPatternFinder.cxx:141 TGeoPatternFinder.cxx:142 TGeoPatternFinder.cxx:143 TGeoPatternFinder.cxx:144 TGeoPatternFinder.cxx:145 TGeoPatternFinder.cxx:146 TGeoPatternFinder.cxx:147 TGeoPatternFinder.cxx:148 TGeoPatternFinder.cxx:149 TGeoPatternFinder.cxx:150 TGeoPatternFinder.cxx:151 TGeoPatternFinder.cxx:152 TGeoPatternFinder.cxx:153 TGeoPatternFinder.cxx:154 TGeoPatternFinder.cxx:155 TGeoPatternFinder.cxx:156 TGeoPatternFinder.cxx:157 TGeoPatternFinder.cxx:158 TGeoPatternFinder.cxx:159 TGeoPatternFinder.cxx:160 TGeoPatternFinder.cxx:161 TGeoPatternFinder.cxx:162 TGeoPatternFinder.cxx:163 TGeoPatternFinder.cxx:164 TGeoPatternFinder.cxx:165 TGeoPatternFinder.cxx:166 TGeoPatternFinder.cxx:167 TGeoPatternFinder.cxx:168 TGeoPatternFinder.cxx:169 TGeoPatternFinder.cxx:170 TGeoPatternFinder.cxx:171 TGeoPatternFinder.cxx:172 TGeoPatternFinder.cxx:173 TGeoPatternFinder.cxx:174 TGeoPatternFinder.cxx:175 TGeoPatternFinder.cxx:176 TGeoPatternFinder.cxx:177 TGeoPatternFinder.cxx:178 TGeoPatternFinder.cxx:179 TGeoPatternFinder.cxx:180 TGeoPatternFinder.cxx:181 TGeoPatternFinder.cxx:182 TGeoPatternFinder.cxx:183 TGeoPatternFinder.cxx:184 TGeoPatternFinder.cxx:185 TGeoPatternFinder.cxx:186 TGeoPatternFinder.cxx:187 TGeoPatternFinder.cxx:188 TGeoPatternFinder.cxx:189 TGeoPatternFinder.cxx:190 TGeoPatternFinder.cxx:191 TGeoPatternFinder.cxx:192 TGeoPatternFinder.cxx:193 TGeoPatternFinder.cxx:194 TGeoPatternFinder.cxx:195 TGeoPatternFinder.cxx:196 TGeoPatternFinder.cxx:197 TGeoPatternFinder.cxx:198 TGeoPatternFinder.cxx:199 TGeoPatternFinder.cxx:200 TGeoPatternFinder.cxx:201 TGeoPatternFinder.cxx:202 TGeoPatternFinder.cxx:203 TGeoPatternFinder.cxx:204 TGeoPatternFinder.cxx:205 TGeoPatternFinder.cxx:206 TGeoPatternFinder.cxx:207 TGeoPatternFinder.cxx:208 TGeoPatternFinder.cxx:209 TGeoPatternFinder.cxx:210 TGeoPatternFinder.cxx:211 TGeoPatternFinder.cxx:212 TGeoPatternFinder.cxx:213 TGeoPatternFinder.cxx:214 TGeoPatternFinder.cxx:215 TGeoPatternFinder.cxx:216 TGeoPatternFinder.cxx:217 TGeoPatternFinder.cxx:218 TGeoPatternFinder.cxx:219 TGeoPatternFinder.cxx:220 TGeoPatternFinder.cxx:221 TGeoPatternFinder.cxx:222 TGeoPatternFinder.cxx:223 TGeoPatternFinder.cxx:224 TGeoPatternFinder.cxx:225 TGeoPatternFinder.cxx:226 TGeoPatternFinder.cxx:227 TGeoPatternFinder.cxx:228 TGeoPatternFinder.cxx:229 TGeoPatternFinder.cxx:230 TGeoPatternFinder.cxx:231 TGeoPatternFinder.cxx:232 TGeoPatternFinder.cxx:233 TGeoPatternFinder.cxx:234 TGeoPatternFinder.cxx:235 TGeoPatternFinder.cxx:236 TGeoPatternFinder.cxx:237 TGeoPatternFinder.cxx:238 TGeoPatternFinder.cxx:239 TGeoPatternFinder.cxx:240 TGeoPatternFinder.cxx:241 TGeoPatternFinder.cxx:242 TGeoPatternFinder.cxx:243 TGeoPatternFinder.cxx:244 TGeoPatternFinder.cxx:245 TGeoPatternFinder.cxx:246 TGeoPatternFinder.cxx:247 TGeoPatternFinder.cxx:248 TGeoPatternFinder.cxx:249 TGeoPatternFinder.cxx:250 TGeoPatternFinder.cxx:251 TGeoPatternFinder.cxx:252 TGeoPatternFinder.cxx:253 TGeoPatternFinder.cxx:254 TGeoPatternFinder.cxx:255 TGeoPatternFinder.cxx:256 TGeoPatternFinder.cxx:257 TGeoPatternFinder.cxx:258 TGeoPatternFinder.cxx:259 TGeoPatternFinder.cxx:260 TGeoPatternFinder.cxx:261 TGeoPatternFinder.cxx:262 TGeoPatternFinder.cxx:263 TGeoPatternFinder.cxx:264 TGeoPatternFinder.cxx:265 TGeoPatternFinder.cxx:266 TGeoPatternFinder.cxx:267 TGeoPatternFinder.cxx:268 TGeoPatternFinder.cxx:269 TGeoPatternFinder.cxx:270 TGeoPatternFinder.cxx:271 TGeoPatternFinder.cxx:272 TGeoPatternFinder.cxx:273 TGeoPatternFinder.cxx:274 TGeoPatternFinder.cxx:275 TGeoPatternFinder.cxx:276 TGeoPatternFinder.cxx:277 TGeoPatternFinder.cxx:278 TGeoPatternFinder.cxx:279 TGeoPatternFinder.cxx:280 TGeoPatternFinder.cxx:281 TGeoPatternFinder.cxx:282 TGeoPatternFinder.cxx:283 TGeoPatternFinder.cxx:284 TGeoPatternFinder.cxx:285 TGeoPatternFinder.cxx:286 TGeoPatternFinder.cxx:287 TGeoPatternFinder.cxx:288 TGeoPatternFinder.cxx:289 TGeoPatternFinder.cxx:290 TGeoPatternFinder.cxx:291 TGeoPatternFinder.cxx:292 TGeoPatternFinder.cxx:293 TGeoPatternFinder.cxx:294 TGeoPatternFinder.cxx:295 TGeoPatternFinder.cxx:296 TGeoPatternFinder.cxx:297 TGeoPatternFinder.cxx:298 TGeoPatternFinder.cxx:299 TGeoPatternFinder.cxx:300 TGeoPatternFinder.cxx:301 TGeoPatternFinder.cxx:302 TGeoPatternFinder.cxx:303 TGeoPatternFinder.cxx:304 TGeoPatternFinder.cxx:305 TGeoPatternFinder.cxx:306 TGeoPatternFinder.cxx:307 TGeoPatternFinder.cxx:308 TGeoPatternFinder.cxx:309 TGeoPatternFinder.cxx:310 TGeoPatternFinder.cxx:311 TGeoPatternFinder.cxx:312 TGeoPatternFinder.cxx:313 TGeoPatternFinder.cxx:314 TGeoPatternFinder.cxx:315 TGeoPatternFinder.cxx:316 TGeoPatternFinder.cxx:317 TGeoPatternFinder.cxx:318 TGeoPatternFinder.cxx:319 TGeoPatternFinder.cxx:320 TGeoPatternFinder.cxx:321 TGeoPatternFinder.cxx:322 TGeoPatternFinder.cxx:323 TGeoPatternFinder.cxx:324 TGeoPatternFinder.cxx:325 TGeoPatternFinder.cxx:326 TGeoPatternFinder.cxx:327 TGeoPatternFinder.cxx:328 TGeoPatternFinder.cxx:329 TGeoPatternFinder.cxx:330 TGeoPatternFinder.cxx:331 TGeoPatternFinder.cxx:332 TGeoPatternFinder.cxx:333 TGeoPatternFinder.cxx:334 TGeoPatternFinder.cxx:335 TGeoPatternFinder.cxx:336 TGeoPatternFinder.cxx:337 TGeoPatternFinder.cxx:338 TGeoPatternFinder.cxx:339 TGeoPatternFinder.cxx:340 TGeoPatternFinder.cxx:341 TGeoPatternFinder.cxx:342 TGeoPatternFinder.cxx:343 TGeoPatternFinder.cxx:344 TGeoPatternFinder.cxx:345 TGeoPatternFinder.cxx:346 TGeoPatternFinder.cxx:347 TGeoPatternFinder.cxx:348 TGeoPatternFinder.cxx:349 TGeoPatternFinder.cxx:350 TGeoPatternFinder.cxx:351 TGeoPatternFinder.cxx:352 TGeoPatternFinder.cxx:353 TGeoPatternFinder.cxx:354 TGeoPatternFinder.cxx:355 TGeoPatternFinder.cxx:356 TGeoPatternFinder.cxx:357 TGeoPatternFinder.cxx:358 TGeoPatternFinder.cxx:359 TGeoPatternFinder.cxx:360 TGeoPatternFinder.cxx:361 TGeoPatternFinder.cxx:362 TGeoPatternFinder.cxx:363 TGeoPatternFinder.cxx:364 TGeoPatternFinder.cxx:365 TGeoPatternFinder.cxx:366 TGeoPatternFinder.cxx:367 TGeoPatternFinder.cxx:368 TGeoPatternFinder.cxx:369 TGeoPatternFinder.cxx:370 TGeoPatternFinder.cxx:371 TGeoPatternFinder.cxx:372 TGeoPatternFinder.cxx:373 TGeoPatternFinder.cxx:374 TGeoPatternFinder.cxx:375 TGeoPatternFinder.cxx:376 TGeoPatternFinder.cxx:377 TGeoPatternFinder.cxx:378 TGeoPatternFinder.cxx:379 TGeoPatternFinder.cxx:380 TGeoPatternFinder.cxx:381 TGeoPatternFinder.cxx:382 TGeoPatternFinder.cxx:383 TGeoPatternFinder.cxx:384 TGeoPatternFinder.cxx:385 TGeoPatternFinder.cxx:386 TGeoPatternFinder.cxx:387 TGeoPatternFinder.cxx:388 TGeoPatternFinder.cxx:389 TGeoPatternFinder.cxx:390 TGeoPatternFinder.cxx:391 TGeoPatternFinder.cxx:392 TGeoPatternFinder.cxx:393 TGeoPatternFinder.cxx:394 TGeoPatternFinder.cxx:395 TGeoPatternFinder.cxx:396 TGeoPatternFinder.cxx:397 TGeoPatternFinder.cxx:398 TGeoPatternFinder.cxx:399 TGeoPatternFinder.cxx:400 TGeoPatternFinder.cxx:401 TGeoPatternFinder.cxx:402 TGeoPatternFinder.cxx:403 TGeoPatternFinder.cxx:404 TGeoPatternFinder.cxx:405 TGeoPatternFinder.cxx:406 TGeoPatternFinder.cxx:407 TGeoPatternFinder.cxx:408 TGeoPatternFinder.cxx:409 TGeoPatternFinder.cxx:410 TGeoPatternFinder.cxx:411 TGeoPatternFinder.cxx:412 TGeoPatternFinder.cxx:413 TGeoPatternFinder.cxx:414 TGeoPatternFinder.cxx:415 TGeoPatternFinder.cxx:416 TGeoPatternFinder.cxx:417 TGeoPatternFinder.cxx:418 TGeoPatternFinder.cxx:419 TGeoPatternFinder.cxx:420 TGeoPatternFinder.cxx:421 TGeoPatternFinder.cxx:422 TGeoPatternFinder.cxx:423 TGeoPatternFinder.cxx:424 TGeoPatternFinder.cxx:425 TGeoPatternFinder.cxx:426 TGeoPatternFinder.cxx:427 TGeoPatternFinder.cxx:428 TGeoPatternFinder.cxx:429 TGeoPatternFinder.cxx:430 TGeoPatternFinder.cxx:431 TGeoPatternFinder.cxx:432 TGeoPatternFinder.cxx:433 TGeoPatternFinder.cxx:434 TGeoPatternFinder.cxx:435 TGeoPatternFinder.cxx:436 TGeoPatternFinder.cxx:437 TGeoPatternFinder.cxx:438 TGeoPatternFinder.cxx:439 TGeoPatternFinder.cxx:440 TGeoPatternFinder.cxx:441 TGeoPatternFinder.cxx:442 TGeoPatternFinder.cxx:443 TGeoPatternFinder.cxx:444 TGeoPatternFinder.cxx:445 TGeoPatternFinder.cxx:446 TGeoPatternFinder.cxx:447 TGeoPatternFinder.cxx:448 TGeoPatternFinder.cxx:449 TGeoPatternFinder.cxx:450 TGeoPatternFinder.cxx:451 TGeoPatternFinder.cxx:452 TGeoPatternFinder.cxx:453 TGeoPatternFinder.cxx:454 TGeoPatternFinder.cxx:455 TGeoPatternFinder.cxx:456 TGeoPatternFinder.cxx:457 TGeoPatternFinder.cxx:458 TGeoPatternFinder.cxx:459 TGeoPatternFinder.cxx:460 TGeoPatternFinder.cxx:461 TGeoPatternFinder.cxx:462 TGeoPatternFinder.cxx:463 TGeoPatternFinder.cxx:464 TGeoPatternFinder.cxx:465 TGeoPatternFinder.cxx:466 TGeoPatternFinder.cxx:467 TGeoPatternFinder.cxx:468 TGeoPatternFinder.cxx:469 TGeoPatternFinder.cxx:470 TGeoPatternFinder.cxx:471 TGeoPatternFinder.cxx:472 TGeoPatternFinder.cxx:473 TGeoPatternFinder.cxx:474 TGeoPatternFinder.cxx:475 TGeoPatternFinder.cxx:476 TGeoPatternFinder.cxx:477 TGeoPatternFinder.cxx:478 TGeoPatternFinder.cxx:479 TGeoPatternFinder.cxx:480 TGeoPatternFinder.cxx:481 TGeoPatternFinder.cxx:482 TGeoPatternFinder.cxx:483 TGeoPatternFinder.cxx:484 TGeoPatternFinder.cxx:485 TGeoPatternFinder.cxx:486 TGeoPatternFinder.cxx:487 TGeoPatternFinder.cxx:488 TGeoPatternFinder.cxx:489 TGeoPatternFinder.cxx:490 TGeoPatternFinder.cxx:491 TGeoPatternFinder.cxx:492 TGeoPatternFinder.cxx:493 TGeoPatternFinder.cxx:494 TGeoPatternFinder.cxx:495 TGeoPatternFinder.cxx:496 TGeoPatternFinder.cxx:497 TGeoPatternFinder.cxx:498 TGeoPatternFinder.cxx:499 TGeoPatternFinder.cxx:500 TGeoPatternFinder.cxx:501 TGeoPatternFinder.cxx:502 TGeoPatternFinder.cxx:503 TGeoPatternFinder.cxx:504 TGeoPatternFinder.cxx:505 TGeoPatternFinder.cxx:506 TGeoPatternFinder.cxx:507 TGeoPatternFinder.cxx:508 TGeoPatternFinder.cxx:509 TGeoPatternFinder.cxx:510 TGeoPatternFinder.cxx:511 TGeoPatternFinder.cxx:512 TGeoPatternFinder.cxx:513 TGeoPatternFinder.cxx:514 TGeoPatternFinder.cxx:515 TGeoPatternFinder.cxx:516 TGeoPatternFinder.cxx:517 TGeoPatternFinder.cxx:518 TGeoPatternFinder.cxx:519 TGeoPatternFinder.cxx:520 TGeoPatternFinder.cxx:521 TGeoPatternFinder.cxx:522 TGeoPatternFinder.cxx:523 TGeoPatternFinder.cxx:524 TGeoPatternFinder.cxx:525 TGeoPatternFinder.cxx:526 TGeoPatternFinder.cxx:527 TGeoPatternFinder.cxx:528 TGeoPatternFinder.cxx:529 TGeoPatternFinder.cxx:530 TGeoPatternFinder.cxx:531 TGeoPatternFinder.cxx:532 TGeoPatternFinder.cxx:533 TGeoPatternFinder.cxx:534 TGeoPatternFinder.cxx:535 TGeoPatternFinder.cxx:536 TGeoPatternFinder.cxx:537 TGeoPatternFinder.cxx:538 TGeoPatternFinder.cxx:539 TGeoPatternFinder.cxx:540 TGeoPatternFinder.cxx:541 TGeoPatternFinder.cxx:542 TGeoPatternFinder.cxx:543 TGeoPatternFinder.cxx:544 TGeoPatternFinder.cxx:545 TGeoPatternFinder.cxx:546 TGeoPatternFinder.cxx:547 TGeoPatternFinder.cxx:548 TGeoPatternFinder.cxx:549 TGeoPatternFinder.cxx:550 TGeoPatternFinder.cxx:551 TGeoPatternFinder.cxx:552 TGeoPatternFinder.cxx:553 TGeoPatternFinder.cxx:554 TGeoPatternFinder.cxx:555 TGeoPatternFinder.cxx:556 TGeoPatternFinder.cxx:557 TGeoPatternFinder.cxx:558 TGeoPatternFinder.cxx:559 TGeoPatternFinder.cxx:560 TGeoPatternFinder.cxx:561 TGeoPatternFinder.cxx:562 TGeoPatternFinder.cxx:563 TGeoPatternFinder.cxx:564 TGeoPatternFinder.cxx:565 TGeoPatternFinder.cxx:566 TGeoPatternFinder.cxx:567 TGeoPatternFinder.cxx:568 TGeoPatternFinder.cxx:569 TGeoPatternFinder.cxx:570 TGeoPatternFinder.cxx:571 TGeoPatternFinder.cxx:572 TGeoPatternFinder.cxx:573 TGeoPatternFinder.cxx:574 TGeoPatternFinder.cxx:575 TGeoPatternFinder.cxx:576 TGeoPatternFinder.cxx:577 TGeoPatternFinder.cxx:578 TGeoPatternFinder.cxx:579 TGeoPatternFinder.cxx:580 TGeoPatternFinder.cxx:581 TGeoPatternFinder.cxx:582 TGeoPatternFinder.cxx:583 TGeoPatternFinder.cxx:584 TGeoPatternFinder.cxx:585 TGeoPatternFinder.cxx:586 TGeoPatternFinder.cxx:587 TGeoPatternFinder.cxx:588 TGeoPatternFinder.cxx:589 TGeoPatternFinder.cxx:590 TGeoPatternFinder.cxx:591 TGeoPatternFinder.cxx:592 TGeoPatternFinder.cxx:593 TGeoPatternFinder.cxx:594 TGeoPatternFinder.cxx:595 TGeoPatternFinder.cxx:596 TGeoPatternFinder.cxx:597 TGeoPatternFinder.cxx:598 TGeoPatternFinder.cxx:599 TGeoPatternFinder.cxx:600 TGeoPatternFinder.cxx:601 TGeoPatternFinder.cxx:602 TGeoPatternFinder.cxx:603 TGeoPatternFinder.cxx:604 TGeoPatternFinder.cxx:605 TGeoPatternFinder.cxx:606 TGeoPatternFinder.cxx:607 TGeoPatternFinder.cxx:608 TGeoPatternFinder.cxx:609 TGeoPatternFinder.cxx:610 TGeoPatternFinder.cxx:611 TGeoPatternFinder.cxx:612 TGeoPatternFinder.cxx:613 TGeoPatternFinder.cxx:614 TGeoPatternFinder.cxx:615 TGeoPatternFinder.cxx:616 TGeoPatternFinder.cxx:617 TGeoPatternFinder.cxx:618 TGeoPatternFinder.cxx:619 TGeoPatternFinder.cxx:620 TGeoPatternFinder.cxx:621 TGeoPatternFinder.cxx:622 TGeoPatternFinder.cxx:623 TGeoPatternFinder.cxx:624 TGeoPatternFinder.cxx:625 TGeoPatternFinder.cxx:626 TGeoPatternFinder.cxx:627 TGeoPatternFinder.cxx:628 TGeoPatternFinder.cxx:629 TGeoPatternFinder.cxx:630 TGeoPatternFinder.cxx:631 TGeoPatternFinder.cxx:632 TGeoPatternFinder.cxx:633 TGeoPatternFinder.cxx:634 TGeoPatternFinder.cxx:635 TGeoPatternFinder.cxx:636 TGeoPatternFinder.cxx:637 TGeoPatternFinder.cxx:638 TGeoPatternFinder.cxx:639 TGeoPatternFinder.cxx:640 TGeoPatternFinder.cxx:641 TGeoPatternFinder.cxx:642 TGeoPatternFinder.cxx:643 TGeoPatternFinder.cxx:644 TGeoPatternFinder.cxx:645 TGeoPatternFinder.cxx:646 TGeoPatternFinder.cxx:647 TGeoPatternFinder.cxx:648 TGeoPatternFinder.cxx:649 TGeoPatternFinder.cxx:650 TGeoPatternFinder.cxx:651 TGeoPatternFinder.cxx:652 TGeoPatternFinder.cxx:653 TGeoPatternFinder.cxx:654 TGeoPatternFinder.cxx:655 TGeoPatternFinder.cxx:656 TGeoPatternFinder.cxx:657 TGeoPatternFinder.cxx:658 TGeoPatternFinder.cxx:659 TGeoPatternFinder.cxx:660 TGeoPatternFinder.cxx:661 TGeoPatternFinder.cxx:662 TGeoPatternFinder.cxx:663 TGeoPatternFinder.cxx:664 TGeoPatternFinder.cxx:665 TGeoPatternFinder.cxx:666 TGeoPatternFinder.cxx:667 TGeoPatternFinder.cxx:668 TGeoPatternFinder.cxx:669 TGeoPatternFinder.cxx:670 TGeoPatternFinder.cxx:671 TGeoPatternFinder.cxx:672 TGeoPatternFinder.cxx:673 TGeoPatternFinder.cxx:674 TGeoPatternFinder.cxx:675 TGeoPatternFinder.cxx:676 TGeoPatternFinder.cxx:677 TGeoPatternFinder.cxx:678 TGeoPatternFinder.cxx:679 TGeoPatternFinder.cxx:680 TGeoPatternFinder.cxx:681 TGeoPatternFinder.cxx:682 TGeoPatternFinder.cxx:683 TGeoPatternFinder.cxx:684 TGeoPatternFinder.cxx:685 TGeoPatternFinder.cxx:686 TGeoPatternFinder.cxx:687 TGeoPatternFinder.cxx:688 TGeoPatternFinder.cxx:689 TGeoPatternFinder.cxx:690 TGeoPatternFinder.cxx:691 TGeoPatternFinder.cxx:692 TGeoPatternFinder.cxx:693 TGeoPatternFinder.cxx:694 TGeoPatternFinder.cxx:695 TGeoPatternFinder.cxx:696 TGeoPatternFinder.cxx:697 TGeoPatternFinder.cxx:698 TGeoPatternFinder.cxx:699 TGeoPatternFinder.cxx:700 TGeoPatternFinder.cxx:701 TGeoPatternFinder.cxx:702 TGeoPatternFinder.cxx:703 TGeoPatternFinder.cxx:704 TGeoPatternFinder.cxx:705 TGeoPatternFinder.cxx:706 TGeoPatternFinder.cxx:707 TGeoPatternFinder.cxx:708 TGeoPatternFinder.cxx:709 TGeoPatternFinder.cxx:710 TGeoPatternFinder.cxx:711 TGeoPatternFinder.cxx:712 TGeoPatternFinder.cxx:713 TGeoPatternFinder.cxx:714 TGeoPatternFinder.cxx:715 TGeoPatternFinder.cxx:716 TGeoPatternFinder.cxx:717 TGeoPatternFinder.cxx:718 TGeoPatternFinder.cxx:719 TGeoPatternFinder.cxx:720 TGeoPatternFinder.cxx:721 TGeoPatternFinder.cxx:722 TGeoPatternFinder.cxx:723 TGeoPatternFinder.cxx:724 TGeoPatternFinder.cxx:725 TGeoPatternFinder.cxx:726 TGeoPatternFinder.cxx:727 TGeoPatternFinder.cxx:728 TGeoPatternFinder.cxx:729 TGeoPatternFinder.cxx:730 TGeoPatternFinder.cxx:731 TGeoPatternFinder.cxx:732 TGeoPatternFinder.cxx:733 TGeoPatternFinder.cxx:734 TGeoPatternFinder.cxx:735 TGeoPatternFinder.cxx:736 TGeoPatternFinder.cxx:737 TGeoPatternFinder.cxx:738 TGeoPatternFinder.cxx:739 TGeoPatternFinder.cxx:740 TGeoPatternFinder.cxx:741 TGeoPatternFinder.cxx:742 TGeoPatternFinder.cxx:743 TGeoPatternFinder.cxx:744 TGeoPatternFinder.cxx:745 TGeoPatternFinder.cxx:746 TGeoPatternFinder.cxx:747 TGeoPatternFinder.cxx:748 TGeoPatternFinder.cxx:749 TGeoPatternFinder.cxx:750 TGeoPatternFinder.cxx:751 TGeoPatternFinder.cxx:752 TGeoPatternFinder.cxx:753 TGeoPatternFinder.cxx:754 TGeoPatternFinder.cxx:755 TGeoPatternFinder.cxx:756 TGeoPatternFinder.cxx:757 TGeoPatternFinder.cxx:758 TGeoPatternFinder.cxx:759 TGeoPatternFinder.cxx:760 TGeoPatternFinder.cxx:761 TGeoPatternFinder.cxx:762 TGeoPatternFinder.cxx:763 TGeoPatternFinder.cxx:764 TGeoPatternFinder.cxx:765 TGeoPatternFinder.cxx:766 TGeoPatternFinder.cxx:767 TGeoPatternFinder.cxx:768 TGeoPatternFinder.cxx:769 TGeoPatternFinder.cxx:770 TGeoPatternFinder.cxx:771 TGeoPatternFinder.cxx:772 TGeoPatternFinder.cxx:773 TGeoPatternFinder.cxx:774 TGeoPatternFinder.cxx:775 TGeoPatternFinder.cxx:776 TGeoPatternFinder.cxx:777 TGeoPatternFinder.cxx:778 TGeoPatternFinder.cxx:779 TGeoPatternFinder.cxx:780 TGeoPatternFinder.cxx:781 TGeoPatternFinder.cxx:782 TGeoPatternFinder.cxx:783 TGeoPatternFinder.cxx:784 TGeoPatternFinder.cxx:785 TGeoPatternFinder.cxx:786 TGeoPatternFinder.cxx:787 TGeoPatternFinder.cxx:788 TGeoPatternFinder.cxx:789 TGeoPatternFinder.cxx:790 TGeoPatternFinder.cxx:791 TGeoPatternFinder.cxx:792 TGeoPatternFinder.cxx:793 TGeoPatternFinder.cxx:794 TGeoPatternFinder.cxx:795 TGeoPatternFinder.cxx:796 TGeoPatternFinder.cxx:797 TGeoPatternFinder.cxx:798 TGeoPatternFinder.cxx:799 TGeoPatternFinder.cxx:800 TGeoPatternFinder.cxx:801 TGeoPatternFinder.cxx:802 TGeoPatternFinder.cxx:803 TGeoPatternFinder.cxx:804 TGeoPatternFinder.cxx:805 TGeoPatternFinder.cxx:806 TGeoPatternFinder.cxx:807 TGeoPatternFinder.cxx:808 TGeoPatternFinder.cxx:809 TGeoPatternFinder.cxx:810 TGeoPatternFinder.cxx:811 TGeoPatternFinder.cxx:812 TGeoPatternFinder.cxx:813 TGeoPatternFinder.cxx:814 TGeoPatternFinder.cxx:815 TGeoPatternFinder.cxx:816 TGeoPatternFinder.cxx:817 TGeoPatternFinder.cxx:818 TGeoPatternFinder.cxx:819 TGeoPatternFinder.cxx:820 TGeoPatternFinder.cxx:821 TGeoPatternFinder.cxx:822 TGeoPatternFinder.cxx:823 TGeoPatternFinder.cxx:824 TGeoPatternFinder.cxx:825 TGeoPatternFinder.cxx:826 TGeoPatternFinder.cxx:827 TGeoPatternFinder.cxx:828 TGeoPatternFinder.cxx:829 TGeoPatternFinder.cxx:830 TGeoPatternFinder.cxx:831 TGeoPatternFinder.cxx:832 TGeoPatternFinder.cxx:833 TGeoPatternFinder.cxx:834 TGeoPatternFinder.cxx:835 TGeoPatternFinder.cxx:836 TGeoPatternFinder.cxx:837 TGeoPatternFinder.cxx:838 TGeoPatternFinder.cxx:839 TGeoPatternFinder.cxx:840 TGeoPatternFinder.cxx:841 TGeoPatternFinder.cxx:842 TGeoPatternFinder.cxx:843 TGeoPatternFinder.cxx:844 TGeoPatternFinder.cxx:845 TGeoPatternFinder.cxx:846 TGeoPatternFinder.cxx:847 TGeoPatternFinder.cxx:848 TGeoPatternFinder.cxx:849 TGeoPatternFinder.cxx:850 TGeoPatternFinder.cxx:851 TGeoPatternFinder.cxx:852 TGeoPatternFinder.cxx:853 TGeoPatternFinder.cxx:854 TGeoPatternFinder.cxx:855 TGeoPatternFinder.cxx:856 TGeoPatternFinder.cxx:857 TGeoPatternFinder.cxx:858 TGeoPatternFinder.cxx:859 TGeoPatternFinder.cxx:860 TGeoPatternFinder.cxx:861 TGeoPatternFinder.cxx:862 TGeoPatternFinder.cxx:863 TGeoPatternFinder.cxx:864 TGeoPatternFinder.cxx:865 TGeoPatternFinder.cxx:866 TGeoPatternFinder.cxx:867 TGeoPatternFinder.cxx:868 TGeoPatternFinder.cxx:869 TGeoPatternFinder.cxx:870 TGeoPatternFinder.cxx:871 TGeoPatternFinder.cxx:872 TGeoPatternFinder.cxx:873 TGeoPatternFinder.cxx:874 TGeoPatternFinder.cxx:875 TGeoPatternFinder.cxx:876 TGeoPatternFinder.cxx:877 TGeoPatternFinder.cxx:878 TGeoPatternFinder.cxx:879 TGeoPatternFinder.cxx:880 TGeoPatternFinder.cxx:881 TGeoPatternFinder.cxx:882 TGeoPatternFinder.cxx:883 TGeoPatternFinder.cxx:884 TGeoPatternFinder.cxx:885 TGeoPatternFinder.cxx:886 TGeoPatternFinder.cxx:887 TGeoPatternFinder.cxx:888 TGeoPatternFinder.cxx:889 TGeoPatternFinder.cxx:890 TGeoPatternFinder.cxx:891 TGeoPatternFinder.cxx:892 TGeoPatternFinder.cxx:893 TGeoPatternFinder.cxx:894 TGeoPatternFinder.cxx:895 TGeoPatternFinder.cxx:896 TGeoPatternFinder.cxx:897 TGeoPatternFinder.cxx:898 TGeoPatternFinder.cxx:899 TGeoPatternFinder.cxx:900 TGeoPatternFinder.cxx:901 TGeoPatternFinder.cxx:902 TGeoPatternFinder.cxx:903 TGeoPatternFinder.cxx:904 TGeoPatternFinder.cxx:905 TGeoPatternFinder.cxx:906 TGeoPatternFinder.cxx:907 TGeoPatternFinder.cxx:908 TGeoPatternFinder.cxx:909 TGeoPatternFinder.cxx:910 TGeoPatternFinder.cxx:911 TGeoPatternFinder.cxx:912 TGeoPatternFinder.cxx:913 TGeoPatternFinder.cxx:914 TGeoPatternFinder.cxx:915 TGeoPatternFinder.cxx:916 TGeoPatternFinder.cxx:917 TGeoPatternFinder.cxx:918 TGeoPatternFinder.cxx:919 TGeoPatternFinder.cxx:920 TGeoPatternFinder.cxx:921 TGeoPatternFinder.cxx:922 TGeoPatternFinder.cxx:923 TGeoPatternFinder.cxx:924 TGeoPatternFinder.cxx:925 TGeoPatternFinder.cxx:926 TGeoPatternFinder.cxx:927 TGeoPatternFinder.cxx:928 TGeoPatternFinder.cxx:929 TGeoPatternFinder.cxx:930 TGeoPatternFinder.cxx:931 TGeoPatternFinder.cxx:932 TGeoPatternFinder.cxx:933 TGeoPatternFinder.cxx:934 TGeoPatternFinder.cxx:935 TGeoPatternFinder.cxx:936 TGeoPatternFinder.cxx:937 TGeoPatternFinder.cxx:938 TGeoPatternFinder.cxx:939 TGeoPatternFinder.cxx:940 TGeoPatternFinder.cxx:941 TGeoPatternFinder.cxx:942 TGeoPatternFinder.cxx:943 TGeoPatternFinder.cxx:944 TGeoPatternFinder.cxx:945 TGeoPatternFinder.cxx:946 TGeoPatternFinder.cxx:947 TGeoPatternFinder.cxx:948 TGeoPatternFinder.cxx:949 TGeoPatternFinder.cxx:950 TGeoPatternFinder.cxx:951 TGeoPatternFinder.cxx:952 TGeoPatternFinder.cxx:953 TGeoPatternFinder.cxx:954 TGeoPatternFinder.cxx:955 TGeoPatternFinder.cxx:956 TGeoPatternFinder.cxx:957 TGeoPatternFinder.cxx:958 TGeoPatternFinder.cxx:959 TGeoPatternFinder.cxx:960 TGeoPatternFinder.cxx:961 TGeoPatternFinder.cxx:962 TGeoPatternFinder.cxx:963 TGeoPatternFinder.cxx:964 TGeoPatternFinder.cxx:965 TGeoPatternFinder.cxx:966 TGeoPatternFinder.cxx:967 TGeoPatternFinder.cxx:968 TGeoPatternFinder.cxx:969 TGeoPatternFinder.cxx:970 TGeoPatternFinder.cxx:971 TGeoPatternFinder.cxx:972 TGeoPatternFinder.cxx:973 TGeoPatternFinder.cxx:974 TGeoPatternFinder.cxx:975 TGeoPatternFinder.cxx:976 TGeoPatternFinder.cxx:977 TGeoPatternFinder.cxx:978 TGeoPatternFinder.cxx:979 TGeoPatternFinder.cxx:980 TGeoPatternFinder.cxx:981 TGeoPatternFinder.cxx:982 TGeoPatternFinder.cxx:983 TGeoPatternFinder.cxx:984 TGeoPatternFinder.cxx:985 TGeoPatternFinder.cxx:986 TGeoPatternFinder.cxx:987 TGeoPatternFinder.cxx:988 TGeoPatternFinder.cxx:989 TGeoPatternFinder.cxx:990 TGeoPatternFinder.cxx:991 TGeoPatternFinder.cxx:992 TGeoPatternFinder.cxx:993 TGeoPatternFinder.cxx:994 TGeoPatternFinder.cxx:995 TGeoPatternFinder.cxx:996 TGeoPatternFinder.cxx:997 TGeoPatternFinder.cxx:998 TGeoPatternFinder.cxx:999 TGeoPatternFinder.cxx:1000 TGeoPatternFinder.cxx:1001 TGeoPatternFinder.cxx:1002 TGeoPatternFinder.cxx:1003 TGeoPatternFinder.cxx:1004 TGeoPatternFinder.cxx:1005 TGeoPatternFinder.cxx:1006 TGeoPatternFinder.cxx:1007 TGeoPatternFinder.cxx:1008 TGeoPatternFinder.cxx:1009 TGeoPatternFinder.cxx:1010 TGeoPatternFinder.cxx:1011 TGeoPatternFinder.cxx:1012 TGeoPatternFinder.cxx:1013 TGeoPatternFinder.cxx:1014 TGeoPatternFinder.cxx:1015 TGeoPatternFinder.cxx:1016 TGeoPatternFinder.cxx:1017 TGeoPatternFinder.cxx:1018 TGeoPatternFinder.cxx:1019 TGeoPatternFinder.cxx:1020 TGeoPatternFinder.cxx:1021 TGeoPatternFinder.cxx:1022 TGeoPatternFinder.cxx:1023 TGeoPatternFinder.cxx:1024 TGeoPatternFinder.cxx:1025 TGeoPatternFinder.cxx:1026 TGeoPatternFinder.cxx:1027 TGeoPatternFinder.cxx:1028 TGeoPatternFinder.cxx:1029 TGeoPatternFinder.cxx:1030 TGeoPatternFinder.cxx:1031 TGeoPatternFinder.cxx:1032 TGeoPatternFinder.cxx:1033 TGeoPatternFinder.cxx:1034 TGeoPatternFinder.cxx:1035 TGeoPatternFinder.cxx:1036 TGeoPatternFinder.cxx:1037 TGeoPatternFinder.cxx:1038 TGeoPatternFinder.cxx:1039 TGeoPatternFinder.cxx:1040 TGeoPatternFinder.cxx:1041 TGeoPatternFinder.cxx:1042 TGeoPatternFinder.cxx:1043 TGeoPatternFinder.cxx:1044 TGeoPatternFinder.cxx:1045 TGeoPatternFinder.cxx:1046 TGeoPatternFinder.cxx:1047 TGeoPatternFinder.cxx:1048 TGeoPatternFinder.cxx:1049 TGeoPatternFinder.cxx:1050 TGeoPatternFinder.cxx:1051 TGeoPatternFinder.cxx:1052 TGeoPatternFinder.cxx:1053 TGeoPatternFinder.cxx:1054 TGeoPatternFinder.cxx:1055 TGeoPatternFinder.cxx:1056 TGeoPatternFinder.cxx:1057 TGeoPatternFinder.cxx:1058 TGeoPatternFinder.cxx:1059 TGeoPatternFinder.cxx:1060 TGeoPatternFinder.cxx:1061 TGeoPatternFinder.cxx:1062 TGeoPatternFinder.cxx:1063 TGeoPatternFinder.cxx:1064 TGeoPatternFinder.cxx:1065 TGeoPatternFinder.cxx:1066 TGeoPatternFinder.cxx:1067 TGeoPatternFinder.cxx:1068 TGeoPatternFinder.cxx:1069 TGeoPatternFinder.cxx:1070 TGeoPatternFinder.cxx:1071 TGeoPatternFinder.cxx:1072 TGeoPatternFinder.cxx:1073 TGeoPatternFinder.cxx:1074 TGeoPatternFinder.cxx:1075 TGeoPatternFinder.cxx:1076 TGeoPatternFinder.cxx:1077 TGeoPatternFinder.cxx:1078 TGeoPatternFinder.cxx:1079 TGeoPatternFinder.cxx:1080 TGeoPatternFinder.cxx:1081 TGeoPatternFinder.cxx:1082 TGeoPatternFinder.cxx:1083 TGeoPatternFinder.cxx:1084 TGeoPatternFinder.cxx:1085 TGeoPatternFinder.cxx:1086 TGeoPatternFinder.cxx:1087 TGeoPatternFinder.cxx:1088 TGeoPatternFinder.cxx:1089 TGeoPatternFinder.cxx:1090 TGeoPatternFinder.cxx:1091 TGeoPatternFinder.cxx:1092 TGeoPatternFinder.cxx:1093 TGeoPatternFinder.cxx:1094 TGeoPatternFinder.cxx:1095 TGeoPatternFinder.cxx:1096 TGeoPatternFinder.cxx:1097 TGeoPatternFinder.cxx:1098 TGeoPatternFinder.cxx:1099 TGeoPatternFinder.cxx:1100 TGeoPatternFinder.cxx:1101 TGeoPatternFinder.cxx:1102 TGeoPatternFinder.cxx:1103 TGeoPatternFinder.cxx:1104 TGeoPatternFinder.cxx:1105 TGeoPatternFinder.cxx:1106 TGeoPatternFinder.cxx:1107 TGeoPatternFinder.cxx:1108 TGeoPatternFinder.cxx:1109 TGeoPatternFinder.cxx:1110 TGeoPatternFinder.cxx:1111 TGeoPatternFinder.cxx:1112 TGeoPatternFinder.cxx:1113 TGeoPatternFinder.cxx:1114 TGeoPatternFinder.cxx:1115 TGeoPatternFinder.cxx:1116 TGeoPatternFinder.cxx:1117 TGeoPatternFinder.cxx:1118 TGeoPatternFinder.cxx:1119 TGeoPatternFinder.cxx:1120 TGeoPatternFinder.cxx:1121 TGeoPatternFinder.cxx:1122 TGeoPatternFinder.cxx:1123 TGeoPatternFinder.cxx:1124 TGeoPatternFinder.cxx:1125 TGeoPatternFinder.cxx:1126 TGeoPatternFinder.cxx:1127 TGeoPatternFinder.cxx:1128 TGeoPatternFinder.cxx:1129 TGeoPatternFinder.cxx:1130 TGeoPatternFinder.cxx:1131 TGeoPatternFinder.cxx:1132 TGeoPatternFinder.cxx:1133 TGeoPatternFinder.cxx:1134 TGeoPatternFinder.cxx:1135 TGeoPatternFinder.cxx:1136 TGeoPatternFinder.cxx:1137 TGeoPatternFinder.cxx:1138 TGeoPatternFinder.cxx:1139 TGeoPatternFinder.cxx:1140 TGeoPatternFinder.cxx:1141 TGeoPatternFinder.cxx:1142 TGeoPatternFinder.cxx:1143 TGeoPatternFinder.cxx:1144 TGeoPatternFinder.cxx:1145 TGeoPatternFinder.cxx:1146 TGeoPatternFinder.cxx:1147 TGeoPatternFinder.cxx:1148 TGeoPatternFinder.cxx:1149 TGeoPatternFinder.cxx:1150 TGeoPatternFinder.cxx:1151 TGeoPatternFinder.cxx:1152 TGeoPatternFinder.cxx:1153 TGeoPatternFinder.cxx:1154 TGeoPatternFinder.cxx:1155 TGeoPatternFinder.cxx:1156 TGeoPatternFinder.cxx:1157 TGeoPatternFinder.cxx:1158 TGeoPatternFinder.cxx:1159 TGeoPatternFinder.cxx:1160 TGeoPatternFinder.cxx:1161 TGeoPatternFinder.cxx:1162 TGeoPatternFinder.cxx:1163 TGeoPatternFinder.cxx:1164 TGeoPatternFinder.cxx:1165 TGeoPatternFinder.cxx:1166 TGeoPatternFinder.cxx:1167 TGeoPatternFinder.cxx:1168 TGeoPatternFinder.cxx:1169 TGeoPatternFinder.cxx:1170 TGeoPatternFinder.cxx:1171 TGeoPatternFinder.cxx:1172 TGeoPatternFinder.cxx:1173 TGeoPatternFinder.cxx:1174 TGeoPatternFinder.cxx:1175 TGeoPatternFinder.cxx:1176 TGeoPatternFinder.cxx:1177 TGeoPatternFinder.cxx:1178 TGeoPatternFinder.cxx:1179 TGeoPatternFinder.cxx:1180 TGeoPatternFinder.cxx:1181 TGeoPatternFinder.cxx:1182 TGeoPatternFinder.cxx:1183 TGeoPatternFinder.cxx:1184 TGeoPatternFinder.cxx:1185 TGeoPatternFinder.cxx:1186 TGeoPatternFinder.cxx:1187 TGeoPatternFinder.cxx:1188 TGeoPatternFinder.cxx:1189 TGeoPatternFinder.cxx:1190 TGeoPatternFinder.cxx:1191 TGeoPatternFinder.cxx:1192 TGeoPatternFinder.cxx:1193 TGeoPatternFinder.cxx:1194 TGeoPatternFinder.cxx:1195 TGeoPatternFinder.cxx:1196 TGeoPatternFinder.cxx:1197 TGeoPatternFinder.cxx:1198 TGeoPatternFinder.cxx:1199 TGeoPatternFinder.cxx:1200 TGeoPatternFinder.cxx:1201 TGeoPatternFinder.cxx:1202 TGeoPatternFinder.cxx:1203 TGeoPatternFinder.cxx:1204 TGeoPatternFinder.cxx:1205 TGeoPatternFinder.cxx:1206 TGeoPatternFinder.cxx:1207 TGeoPatternFinder.cxx:1208 TGeoPatternFinder.cxx:1209 TGeoPatternFinder.cxx:1210 TGeoPatternFinder.cxx:1211 TGeoPatternFinder.cxx:1212 TGeoPatternFinder.cxx:1213 TGeoPatternFinder.cxx:1214 TGeoPatternFinder.cxx:1215 TGeoPatternFinder.cxx:1216 TGeoPatternFinder.cxx:1217 TGeoPatternFinder.cxx:1218 TGeoPatternFinder.cxx:1219 TGeoPatternFinder.cxx:1220 TGeoPatternFinder.cxx:1221 TGeoPatternFinder.cxx:1222 TGeoPatternFinder.cxx:1223 TGeoPatternFinder.cxx:1224 TGeoPatternFinder.cxx:1225 TGeoPatternFinder.cxx:1226 TGeoPatternFinder.cxx:1227 TGeoPatternFinder.cxx:1228 TGeoPatternFinder.cxx:1229 TGeoPatternFinder.cxx:1230 TGeoPatternFinder.cxx:1231 TGeoPatternFinder.cxx:1232 TGeoPatternFinder.cxx:1233 TGeoPatternFinder.cxx:1234 TGeoPatternFinder.cxx:1235 TGeoPatternFinder.cxx:1236 TGeoPatternFinder.cxx:1237 TGeoPatternFinder.cxx:1238 TGeoPatternFinder.cxx:1239 TGeoPatternFinder.cxx:1240 TGeoPatternFinder.cxx:1241 TGeoPatternFinder.cxx:1242 TGeoPatternFinder.cxx:1243 TGeoPatternFinder.cxx:1244 TGeoPatternFinder.cxx:1245 TGeoPatternFinder.cxx:1246 TGeoPatternFinder.cxx:1247 TGeoPatternFinder.cxx:1248 TGeoPatternFinder.cxx:1249 TGeoPatternFinder.cxx:1250 TGeoPatternFinder.cxx:1251 TGeoPatternFinder.cxx:1252 TGeoPatternFinder.cxx:1253 TGeoPatternFinder.cxx:1254 TGeoPatternFinder.cxx:1255 TGeoPatternFinder.cxx:1256 TGeoPatternFinder.cxx:1257 TGeoPatternFinder.cxx:1258 TGeoPatternFinder.cxx:1259 TGeoPatternFinder.cxx:1260 TGeoPatternFinder.cxx:1261 TGeoPatternFinder.cxx:1262 TGeoPatternFinder.cxx:1263 TGeoPatternFinder.cxx:1264 TGeoPatternFinder.cxx:1265 TGeoPatternFinder.cxx:1266 TGeoPatternFinder.cxx:1267 TGeoPatternFinder.cxx:1268 TGeoPatternFinder.cxx:1269 TGeoPatternFinder.cxx:1270 TGeoPatternFinder.cxx:1271 TGeoPatternFinder.cxx:1272 TGeoPatternFinder.cxx:1273 TGeoPatternFinder.cxx:1274 TGeoPatternFinder.cxx:1275 TGeoPatternFinder.cxx:1276 TGeoPatternFinder.cxx:1277 TGeoPatternFinder.cxx:1278 TGeoPatternFinder.cxx:1279 TGeoPatternFinder.cxx:1280 TGeoPatternFinder.cxx:1281 TGeoPatternFinder.cxx:1282 TGeoPatternFinder.cxx:1283 TGeoPatternFinder.cxx:1284 TGeoPatternFinder.cxx:1285 TGeoPatternFinder.cxx:1286 TGeoPatternFinder.cxx:1287 TGeoPatternFinder.cxx:1288 TGeoPatternFinder.cxx:1289 TGeoPatternFinder.cxx:1290 TGeoPatternFinder.cxx:1291 TGeoPatternFinder.cxx:1292 TGeoPatternFinder.cxx:1293 TGeoPatternFinder.cxx:1294 TGeoPatternFinder.cxx:1295 TGeoPatternFinder.cxx:1296 TGeoPatternFinder.cxx:1297 TGeoPatternFinder.cxx:1298 TGeoPatternFinder.cxx:1299 TGeoPatternFinder.cxx:1300 TGeoPatternFinder.cxx:1301 TGeoPatternFinder.cxx:1302 TGeoPatternFinder.cxx:1303 TGeoPatternFinder.cxx:1304 TGeoPatternFinder.cxx:1305 TGeoPatternFinder.cxx:1306 TGeoPatternFinder.cxx:1307 TGeoPatternFinder.cxx:1308 TGeoPatternFinder.cxx:1309 TGeoPatternFinder.cxx:1310 TGeoPatternFinder.cxx:1311 TGeoPatternFinder.cxx:1312 TGeoPatternFinder.cxx:1313 TGeoPatternFinder.cxx:1314 TGeoPatternFinder.cxx:1315 TGeoPatternFinder.cxx:1316 TGeoPatternFinder.cxx:1317 TGeoPatternFinder.cxx:1318 TGeoPatternFinder.cxx:1319 TGeoPatternFinder.cxx:1320 TGeoPatternFinder.cxx:1321 TGeoPatternFinder.cxx:1322 TGeoPatternFinder.cxx:1323 TGeoPatternFinder.cxx:1324 TGeoPatternFinder.cxx:1325 TGeoPatternFinder.cxx:1326 TGeoPatternFinder.cxx:1327 TGeoPatternFinder.cxx:1328 TGeoPatternFinder.cxx:1329 TGeoPatternFinder.cxx:1330 TGeoPatternFinder.cxx:1331 TGeoPatternFinder.cxx:1332 TGeoPatternFinder.cxx:1333 TGeoPatternFinder.cxx:1334 TGeoPatternFinder.cxx:1335 TGeoPatternFinder.cxx:1336 TGeoPatternFinder.cxx:1337 TGeoPatternFinder.cxx:1338 TGeoPatternFinder.cxx:1339 TGeoPatternFinder.cxx:1340 TGeoPatternFinder.cxx:1341 TGeoPatternFinder.cxx:1342 TGeoPatternFinder.cxx:1343 TGeoPatternFinder.cxx:1344 TGeoPatternFinder.cxx:1345 TGeoPatternFinder.cxx:1346 TGeoPatternFinder.cxx:1347 TGeoPatternFinder.cxx:1348 TGeoPatternFinder.cxx:1349 TGeoPatternFinder.cxx:1350 TGeoPatternFinder.cxx:1351 TGeoPatternFinder.cxx:1352 TGeoPatternFinder.cxx:1353 TGeoPatternFinder.cxx:1354 TGeoPatternFinder.cxx:1355 TGeoPatternFinder.cxx:1356 TGeoPatternFinder.cxx:1357 TGeoPatternFinder.cxx:1358 TGeoPatternFinder.cxx:1359 TGeoPatternFinder.cxx:1360 TGeoPatternFinder.cxx:1361 TGeoPatternFinder.cxx:1362 TGeoPatternFinder.cxx:1363 TGeoPatternFinder.cxx:1364 TGeoPatternFinder.cxx:1365 TGeoPatternFinder.cxx:1366 TGeoPatternFinder.cxx:1367 TGeoPatternFinder.cxx:1368 TGeoPatternFinder.cxx:1369 TGeoPatternFinder.cxx:1370 TGeoPatternFinder.cxx:1371 TGeoPatternFinder.cxx:1372 TGeoPatternFinder.cxx:1373 TGeoPatternFinder.cxx:1374 TGeoPatternFinder.cxx:1375 TGeoPatternFinder.cxx:1376 TGeoPatternFinder.cxx:1377 TGeoPatternFinder.cxx:1378 TGeoPatternFinder.cxx:1379 TGeoPatternFinder.cxx:1380 TGeoPatternFinder.cxx:1381 TGeoPatternFinder.cxx:1382 TGeoPatternFinder.cxx:1383 TGeoPatternFinder.cxx:1384 TGeoPatternFinder.cxx:1385 TGeoPatternFinder.cxx:1386 TGeoPatternFinder.cxx:1387 TGeoPatternFinder.cxx:1388 TGeoPatternFinder.cxx:1389 TGeoPatternFinder.cxx:1390 TGeoPatternFinder.cxx:1391 TGeoPatternFinder.cxx:1392 TGeoPatternFinder.cxx:1393 TGeoPatternFinder.cxx:1394 TGeoPatternFinder.cxx:1395 TGeoPatternFinder.cxx:1396 TGeoPatternFinder.cxx:1397 TGeoPatternFinder.cxx:1398 TGeoPatternFinder.cxx:1399 TGeoPatternFinder.cxx:1400 TGeoPatternFinder.cxx:1401 TGeoPatternFinder.cxx:1402 TGeoPatternFinder.cxx:1403 TGeoPatternFinder.cxx:1404 TGeoPatternFinder.cxx:1405 TGeoPatternFinder.cxx:1406 TGeoPatternFinder.cxx:1407 TGeoPatternFinder.cxx:1408 TGeoPatternFinder.cxx:1409 TGeoPatternFinder.cxx:1410 TGeoPatternFinder.cxx:1411 TGeoPatternFinder.cxx:1412 TGeoPatternFinder.cxx:1413 TGeoPatternFinder.cxx:1414 TGeoPatternFinder.cxx:1415 TGeoPatternFinder.cxx:1416 TGeoPatternFinder.cxx:1417 TGeoPatternFinder.cxx:1418 TGeoPatternFinder.cxx:1419 TGeoPatternFinder.cxx:1420 TGeoPatternFinder.cxx:1421 TGeoPatternFinder.cxx:1422 TGeoPatternFinder.cxx:1423 TGeoPatternFinder.cxx:1424 TGeoPatternFinder.cxx:1425 TGeoPatternFinder.cxx:1426 TGeoPatternFinder.cxx:1427 TGeoPatternFinder.cxx:1428 TGeoPatternFinder.cxx:1429 TGeoPatternFinder.cxx:1430 TGeoPatternFinder.cxx:1431 TGeoPatternFinder.cxx:1432 TGeoPatternFinder.cxx:1433 TGeoPatternFinder.cxx:1434 TGeoPatternFinder.cxx:1435 TGeoPatternFinder.cxx:1436 TGeoPatternFinder.cxx:1437 TGeoPatternFinder.cxx:1438 TGeoPatternFinder.cxx:1439 TGeoPatternFinder.cxx:1440 TGeoPatternFinder.cxx:1441 TGeoPatternFinder.cxx:1442 TGeoPatternFinder.cxx:1443 TGeoPatternFinder.cxx:1444 TGeoPatternFinder.cxx:1445 TGeoPatternFinder.cxx:1446 TGeoPatternFinder.cxx:1447 TGeoPatternFinder.cxx:1448 TGeoPatternFinder.cxx:1449 TGeoPatternFinder.cxx:1450 TGeoPatternFinder.cxx:1451 TGeoPatternFinder.cxx:1452 TGeoPatternFinder.cxx:1453 TGeoPatternFinder.cxx:1454 TGeoPatternFinder.cxx:1455 TGeoPatternFinder.cxx:1456 TGeoPatternFinder.cxx:1457 TGeoPatternFinder.cxx:1458 TGeoPatternFinder.cxx:1459 TGeoPatternFinder.cxx:1460 TGeoPatternFinder.cxx:1461 TGeoPatternFinder.cxx:1462 TGeoPatternFinder.cxx:1463 TGeoPatternFinder.cxx:1464 TGeoPatternFinder.cxx:1465 TGeoPatternFinder.cxx:1466 TGeoPatternFinder.cxx:1467 TGeoPatternFinder.cxx:1468 TGeoPatternFinder.cxx:1469 TGeoPatternFinder.cxx:1470 TGeoPatternFinder.cxx:1471 TGeoPatternFinder.cxx:1472 TGeoPatternFinder.cxx:1473 TGeoPatternFinder.cxx:1474 TGeoPatternFinder.cxx:1475 TGeoPatternFinder.cxx:1476 TGeoPatternFinder.cxx:1477 TGeoPatternFinder.cxx:1478 TGeoPatternFinder.cxx:1479 TGeoPatternFinder.cxx:1480 TGeoPatternFinder.cxx:1481 TGeoPatternFinder.cxx:1482 TGeoPatternFinder.cxx:1483 TGeoPatternFinder.cxx:1484 TGeoPatternFinder.cxx:1485 TGeoPatternFinder.cxx:1486 TGeoPatternFinder.cxx:1487 TGeoPatternFinder.cxx:1488 TGeoPatternFinder.cxx:1489 TGeoPatternFinder.cxx:1490 TGeoPatternFinder.cxx:1491 TGeoPatternFinder.cxx:1492 TGeoPatternFinder.cxx:1493 TGeoPatternFinder.cxx:1494 TGeoPatternFinder.cxx:1495 TGeoPatternFinder.cxx:1496 TGeoPatternFinder.cxx:1497 TGeoPatternFinder.cxx:1498 TGeoPatternFinder.cxx:1499 TGeoPatternFinder.cxx:1500 TGeoPatternFinder.cxx:1501 TGeoPatternFinder.cxx:1502 TGeoPatternFinder.cxx:1503 TGeoPatternFinder.cxx:1504 TGeoPatternFinder.cxx:1505 TGeoPatternFinder.cxx:1506 TGeoPatternFinder.cxx:1507 TGeoPatternFinder.cxx:1508 TGeoPatternFinder.cxx:1509 TGeoPatternFinder.cxx:1510 TGeoPatternFinder.cxx:1511 TGeoPatternFinder.cxx:1512 TGeoPatternFinder.cxx:1513 TGeoPatternFinder.cxx:1514 TGeoPatternFinder.cxx:1515 TGeoPatternFinder.cxx:1516 TGeoPatternFinder.cxx:1517 TGeoPatternFinder.cxx:1518 TGeoPatternFinder.cxx:1519 TGeoPatternFinder.cxx:1520 TGeoPatternFinder.cxx:1521 TGeoPatternFinder.cxx:1522 TGeoPatternFinder.cxx:1523 TGeoPatternFinder.cxx:1524 TGeoPatternFinder.cxx:1525 TGeoPatternFinder.cxx:1526 TGeoPatternFinder.cxx:1527 TGeoPatternFinder.cxx:1528 TGeoPatternFinder.cxx:1529 TGeoPatternFinder.cxx:1530 TGeoPatternFinder.cxx:1531 TGeoPatternFinder.cxx:1532 TGeoPatternFinder.cxx:1533 TGeoPatternFinder.cxx:1534 TGeoPatternFinder.cxx:1535 TGeoPatternFinder.cxx:1536 TGeoPatternFinder.cxx:1537 TGeoPatternFinder.cxx:1538 TGeoPatternFinder.cxx:1539 TGeoPatternFinder.cxx:1540 TGeoPatternFinder.cxx:1541 TGeoPatternFinder.cxx:1542 TGeoPatternFinder.cxx:1543 TGeoPatternFinder.cxx:1544 TGeoPatternFinder.cxx:1545 TGeoPatternFinder.cxx:1546 TGeoPatternFinder.cxx:1547 TGeoPatternFinder.cxx:1548 TGeoPatternFinder.cxx:1549 TGeoPatternFinder.cxx:1550 TGeoPatternFinder.cxx:1551 TGeoPatternFinder.cxx:1552 TGeoPatternFinder.cxx:1553 TGeoPatternFinder.cxx:1554 TGeoPatternFinder.cxx:1555 TGeoPatternFinder.cxx:1556 TGeoPatternFinder.cxx:1557 TGeoPatternFinder.cxx:1558 TGeoPatternFinder.cxx:1559 TGeoPatternFinder.cxx:1560 TGeoPatternFinder.cxx:1561 TGeoPatternFinder.cxx:1562 TGeoPatternFinder.cxx:1563 TGeoPatternFinder.cxx:1564 TGeoPatternFinder.cxx:1565 TGeoPatternFinder.cxx:1566 TGeoPatternFinder.cxx:1567 TGeoPatternFinder.cxx:1568 TGeoPatternFinder.cxx:1569 TGeoPatternFinder.cxx:1570 TGeoPatternFinder.cxx:1571 TGeoPatternFinder.cxx:1572 TGeoPatternFinder.cxx:1573 TGeoPatternFinder.cxx:1574 TGeoPatternFinder.cxx:1575 TGeoPatternFinder.cxx:1576 TGeoPatternFinder.cxx:1577 TGeoPatternFinder.cxx:1578 TGeoPatternFinder.cxx:1579 TGeoPatternFinder.cxx:1580 TGeoPatternFinder.cxx:1581 TGeoPatternFinder.cxx:1582 TGeoPatternFinder.cxx:1583 TGeoPatternFinder.cxx:1584 TGeoPatternFinder.cxx:1585 TGeoPatternFinder.cxx:1586 TGeoPatternFinder.cxx:1587 TGeoPatternFinder.cxx:1588 TGeoPatternFinder.cxx:1589 TGeoPatternFinder.cxx:1590 TGeoPatternFinder.cxx:1591 TGeoPatternFinder.cxx:1592 TGeoPatternFinder.cxx:1593 TGeoPatternFinder.cxx:1594 TGeoPatternFinder.cxx:1595 TGeoPatternFinder.cxx:1596 TGeoPatternFinder.cxx:1597 TGeoPatternFinder.cxx:1598 TGeoPatternFinder.cxx:1599 TGeoPatternFinder.cxx:1600 TGeoPatternFinder.cxx:1601 TGeoPatternFinder.cxx:1602 TGeoPatternFinder.cxx:1603 TGeoPatternFinder.cxx:1604 TGeoPatternFinder.cxx:1605 TGeoPatternFinder.cxx:1606 TGeoPatternFinder.cxx:1607 TGeoPatternFinder.cxx:1608 TGeoPatternFinder.cxx:1609 TGeoPatternFinder.cxx:1610 TGeoPatternFinder.cxx:1611 TGeoPatternFinder.cxx:1612 TGeoPatternFinder.cxx:1613 TGeoPatternFinder.cxx:1614 TGeoPatternFinder.cxx:1615 TGeoPatternFinder.cxx:1616 TGeoPatternFinder.cxx:1617 TGeoPatternFinder.cxx:1618 TGeoPatternFinder.cxx:1619 TGeoPatternFinder.cxx:1620 TGeoPatternFinder.cxx:1621 TGeoPatternFinder.cxx:1622 TGeoPatternFinder.cxx:1623 TGeoPatternFinder.cxx:1624 TGeoPatternFinder.cxx:1625 TGeoPatternFinder.cxx:1626 TGeoPatternFinder.cxx:1627 TGeoPatternFinder.cxx:1628 TGeoPatternFinder.cxx:1629 TGeoPatternFinder.cxx:1630 TGeoPatternFinder.cxx:1631 TGeoPatternFinder.cxx:1632 TGeoPatternFinder.cxx:1633 TGeoPatternFinder.cxx:1634 TGeoPatternFinder.cxx:1635 TGeoPatternFinder.cxx:1636 TGeoPatternFinder.cxx:1637 TGeoPatternFinder.cxx:1638 TGeoPatternFinder.cxx:1639 TGeoPatternFinder.cxx:1640 TGeoPatternFinder.cxx:1641 TGeoPatternFinder.cxx:1642 TGeoPatternFinder.cxx:1643 TGeoPatternFinder.cxx:1644 TGeoPatternFinder.cxx:1645 TGeoPatternFinder.cxx:1646 TGeoPatternFinder.cxx:1647 TGeoPatternFinder.cxx:1648 TGeoPatternFinder.cxx:1649 TGeoPatternFinder.cxx:1650 TGeoPatternFinder.cxx:1651 TGeoPatternFinder.cxx:1652 TGeoPatternFinder.cxx:1653 TGeoPatternFinder.cxx:1654 TGeoPatternFinder.cxx:1655 TGeoPatternFinder.cxx:1656 TGeoPatternFinder.cxx:1657 TGeoPatternFinder.cxx:1658 TGeoPatternFinder.cxx:1659 TGeoPatternFinder.cxx:1660 TGeoPatternFinder.cxx:1661 TGeoPatternFinder.cxx:1662 TGeoPatternFinder.cxx:1663 TGeoPatternFinder.cxx:1664 TGeoPatternFinder.cxx:1665 TGeoPatternFinder.cxx:1666 TGeoPatternFinder.cxx:1667 TGeoPatternFinder.cxx:1668 TGeoPatternFinder.cxx:1669 TGeoPatternFinder.cxx:1670 TGeoPatternFinder.cxx:1671 TGeoPatternFinder.cxx:1672 TGeoPatternFinder.cxx:1673 TGeoPatternFinder.cxx:1674 TGeoPatternFinder.cxx:1675 TGeoPatternFinder.cxx:1676 TGeoPatternFinder.cxx:1677 TGeoPatternFinder.cxx:1678 TGeoPatternFinder.cxx:1679 TGeoPatternFinder.cxx:1680 TGeoPatternFinder.cxx:1681 TGeoPatternFinder.cxx:1682 TGeoPatternFinder.cxx:1683 TGeoPatternFinder.cxx:1684 TGeoPatternFinder.cxx:1685 TGeoPatternFinder.cxx:1686 TGeoPatternFinder.cxx:1687 TGeoPatternFinder.cxx:1688 TGeoPatternFinder.cxx:1689 TGeoPatternFinder.cxx:1690 TGeoPatternFinder.cxx:1691 TGeoPatternFinder.cxx:1692 TGeoPatternFinder.cxx:1693 TGeoPatternFinder.cxx:1694 TGeoPatternFinder.cxx:1695 TGeoPatternFinder.cxx:1696 TGeoPatternFinder.cxx:1697 TGeoPatternFinder.cxx:1698 TGeoPatternFinder.cxx:1699 TGeoPatternFinder.cxx:1700 TGeoPatternFinder.cxx:1701 TGeoPatternFinder.cxx:1702 TGeoPatternFinder.cxx:1703 TGeoPatternFinder.cxx:1704 TGeoPatternFinder.cxx:1705 TGeoPatternFinder.cxx:1706 TGeoPatternFinder.cxx:1707 TGeoPatternFinder.cxx:1708 TGeoPatternFinder.cxx:1709 TGeoPatternFinder.cxx:1710 TGeoPatternFinder.cxx:1711 TGeoPatternFinder.cxx:1712 TGeoPatternFinder.cxx:1713 TGeoPatternFinder.cxx:1714 TGeoPatternFinder.cxx:1715 TGeoPatternFinder.cxx:1716 TGeoPatternFinder.cxx:1717 TGeoPatternFinder.cxx:1718 TGeoPatternFinder.cxx:1719 TGeoPatternFinder.cxx:1720 TGeoPatternFinder.cxx:1721 TGeoPatternFinder.cxx:1722 TGeoPatternFinder.cxx:1723 TGeoPatternFinder.cxx:1724 TGeoPatternFinder.cxx:1725 TGeoPatternFinder.cxx:1726 TGeoPatternFinder.cxx:1727 TGeoPatternFinder.cxx:1728 TGeoPatternFinder.cxx:1729 TGeoPatternFinder.cxx:1730 TGeoPatternFinder.cxx:1731 TGeoPatternFinder.cxx:1732 TGeoPatternFinder.cxx:1733 TGeoPatternFinder.cxx:1734 TGeoPatternFinder.cxx:1735 TGeoPatternFinder.cxx:1736 TGeoPatternFinder.cxx:1737 TGeoPatternFinder.cxx:1738 TGeoPatternFinder.cxx:1739 TGeoPatternFinder.cxx:1740 TGeoPatternFinder.cxx:1741 TGeoPatternFinder.cxx:1742 TGeoPatternFinder.cxx:1743 TGeoPatternFinder.cxx:1744 TGeoPatternFinder.cxx:1745 TGeoPatternFinder.cxx:1746 TGeoPatternFinder.cxx:1747 TGeoPatternFinder.cxx:1748 TGeoPatternFinder.cxx:1749 TGeoPatternFinder.cxx:1750 TGeoPatternFinder.cxx:1751 TGeoPatternFinder.cxx:1752 TGeoPatternFinder.cxx:1753 TGeoPatternFinder.cxx:1754 TGeoPatternFinder.cxx:1755 TGeoPatternFinder.cxx:1756 TGeoPatternFinder.cxx:1757 TGeoPatternFinder.cxx:1758 TGeoPatternFinder.cxx:1759 TGeoPatternFinder.cxx:1760 TGeoPatternFinder.cxx:1761 TGeoPatternFinder.cxx:1762 TGeoPatternFinder.cxx:1763 TGeoPatternFinder.cxx:1764 TGeoPatternFinder.cxx:1765 TGeoPatternFinder.cxx:1766 TGeoPatternFinder.cxx:1767 TGeoPatternFinder.cxx:1768 TGeoPatternFinder.cxx:1769 TGeoPatternFinder.cxx:1770 TGeoPatternFinder.cxx:1771 TGeoPatternFinder.cxx:1772 TGeoPatternFinder.cxx:1773 TGeoPatternFinder.cxx:1774 TGeoPatternFinder.cxx:1775 TGeoPatternFinder.cxx:1776 TGeoPatternFinder.cxx:1777 TGeoPatternFinder.cxx:1778 TGeoPatternFinder.cxx:1779 TGeoPatternFinder.cxx:1780 TGeoPatternFinder.cxx:1781 TGeoPatternFinder.cxx:1782 TGeoPatternFinder.cxx:1783 TGeoPatternFinder.cxx:1784 TGeoPatternFinder.cxx:1785 TGeoPatternFinder.cxx:1786 TGeoPatternFinder.cxx:1787 TGeoPatternFinder.cxx:1788 TGeoPatternFinder.cxx:1789 TGeoPatternFinder.cxx:1790 TGeoPatternFinder.cxx:1791 TGeoPatternFinder.cxx:1792 TGeoPatternFinder.cxx:1793 TGeoPatternFinder.cxx:1794 TGeoPatternFinder.cxx:1795 TGeoPatternFinder.cxx:1796 TGeoPatternFinder.cxx:1797 TGeoPatternFinder.cxx:1798 TGeoPatternFinder.cxx:1799 TGeoPatternFinder.cxx:1800 TGeoPatternFinder.cxx:1801 TGeoPatternFinder.cxx:1802 TGeoPatternFinder.cxx:1803 TGeoPatternFinder.cxx:1804 TGeoPatternFinder.cxx:1805 TGeoPatternFinder.cxx:1806 TGeoPatternFinder.cxx:1807 TGeoPatternFinder.cxx:1808 TGeoPatternFinder.cxx:1809 TGeoPatternFinder.cxx:1810 TGeoPatternFinder.cxx:1811 TGeoPatternFinder.cxx:1812 TGeoPatternFinder.cxx:1813 TGeoPatternFinder.cxx:1814 TGeoPatternFinder.cxx:1815 TGeoPatternFinder.cxx:1816 TGeoPatternFinder.cxx:1817 TGeoPatternFinder.cxx:1818 TGeoPatternFinder.cxx:1819 TGeoPatternFinder.cxx:1820 TGeoPatternFinder.cxx:1821 TGeoPatternFinder.cxx:1822 TGeoPatternFinder.cxx:1823 TGeoPatternFinder.cxx:1824 TGeoPatternFinder.cxx:1825 TGeoPatternFinder.cxx:1826 TGeoPatternFinder.cxx:1827 TGeoPatternFinder.cxx:1828 TGeoPatternFinder.cxx:1829 TGeoPatternFinder.cxx:1830 TGeoPatternFinder.cxx:1831 TGeoPatternFinder.cxx:1832 TGeoPatternFinder.cxx:1833 TGeoPatternFinder.cxx:1834 TGeoPatternFinder.cxx:1835 TGeoPatternFinder.cxx:1836 TGeoPatternFinder.cxx:1837 TGeoPatternFinder.cxx:1838 TGeoPatternFinder.cxx:1839 TGeoPatternFinder.cxx:1840 TGeoPatternFinder.cxx:1841 TGeoPatternFinder.cxx:1842 TGeoPatternFinder.cxx:1843 TGeoPatternFinder.cxx:1844 TGeoPatternFinder.cxx:1845 TGeoPatternFinder.cxx:1846 TGeoPatternFinder.cxx:1847 TGeoPatternFinder.cxx:1848 TGeoPatternFinder.cxx:1849 TGeoPatternFinder.cxx:1850 TGeoPatternFinder.cxx:1851 TGeoPatternFinder.cxx:1852 TGeoPatternFinder.cxx:1853 TGeoPatternFinder.cxx:1854 TGeoPatternFinder.cxx:1855 TGeoPatternFinder.cxx:1856 TGeoPatternFinder.cxx:1857 TGeoPatternFinder.cxx:1858 TGeoPatternFinder.cxx:1859 TGeoPatternFinder.cxx:1860 TGeoPatternFinder.cxx:1861 TGeoPatternFinder.cxx:1862 TGeoPatternFinder.cxx:1863 TGeoPatternFinder.cxx:1864 TGeoPatternFinder.cxx:1865 TGeoPatternFinder.cxx:1866 TGeoPatternFinder.cxx:1867 TGeoPatternFinder.cxx:1868 TGeoPatternFinder.cxx:1869 TGeoPatternFinder.cxx:1870 TGeoPatternFinder.cxx:1871 TGeoPatternFinder.cxx:1872 TGeoPatternFinder.cxx:1873 TGeoPatternFinder.cxx:1874 TGeoPatternFinder.cxx:1875 TGeoPatternFinder.cxx:1876 TGeoPatternFinder.cxx:1877 TGeoPatternFinder.cxx:1878 TGeoPatternFinder.cxx:1879 TGeoPatternFinder.cxx:1880 TGeoPatternFinder.cxx:1881 TGeoPatternFinder.cxx:1882 TGeoPatternFinder.cxx:1883 TGeoPatternFinder.cxx:1884 TGeoPatternFinder.cxx:1885 TGeoPatternFinder.cxx:1886 TGeoPatternFinder.cxx:1887 TGeoPatternFinder.cxx:1888 TGeoPatternFinder.cxx:1889 TGeoPatternFinder.cxx:1890 TGeoPatternFinder.cxx:1891 TGeoPatternFinder.cxx:1892 TGeoPatternFinder.cxx:1893 TGeoPatternFinder.cxx:1894 TGeoPatternFinder.cxx:1895 TGeoPatternFinder.cxx:1896 TGeoPatternFinder.cxx:1897 TGeoPatternFinder.cxx:1898 TGeoPatternFinder.cxx:1899 TGeoPatternFinder.cxx:1900 TGeoPatternFinder.cxx:1901 TGeoPatternFinder.cxx:1902 TGeoPatternFinder.cxx:1903 TGeoPatternFinder.cxx:1904 TGeoPatternFinder.cxx:1905 TGeoPatternFinder.cxx:1906 TGeoPatternFinder.cxx:1907 TGeoPatternFinder.cxx:1908 TGeoPatternFinder.cxx:1909 TGeoPatternFinder.cxx:1910 TGeoPatternFinder.cxx:1911 TGeoPatternFinder.cxx:1912 TGeoPatternFinder.cxx:1913 TGeoPatternFinder.cxx:1914 TGeoPatternFinder.cxx:1915 TGeoPatternFinder.cxx:1916 TGeoPatternFinder.cxx:1917 TGeoPatternFinder.cxx:1918 TGeoPatternFinder.cxx:1919 TGeoPatternFinder.cxx:1920 TGeoPatternFinder.cxx:1921 TGeoPatternFinder.cxx:1922 TGeoPatternFinder.cxx:1923 TGeoPatternFinder.cxx:1924 TGeoPatternFinder.cxx:1925 TGeoPatternFinder.cxx:1926 TGeoPatternFinder.cxx:1927 TGeoPatternFinder.cxx:1928 TGeoPatternFinder.cxx:1929 TGeoPatternFinder.cxx:1930 TGeoPatternFinder.cxx:1931 TGeoPatternFinder.cxx:1932 TGeoPatternFinder.cxx:1933 TGeoPatternFinder.cxx:1934 TGeoPatternFinder.cxx:1935 TGeoPatternFinder.cxx:1936 TGeoPatternFinder.cxx:1937 TGeoPatternFinder.cxx:1938 TGeoPatternFinder.cxx:1939 TGeoPatternFinder.cxx:1940 TGeoPatternFinder.cxx:1941 TGeoPatternFinder.cxx:1942 TGeoPatternFinder.cxx:1943 TGeoPatternFinder.cxx:1944 TGeoPatternFinder.cxx:1945 TGeoPatternFinder.cxx:1946 TGeoPatternFinder.cxx:1947 TGeoPatternFinder.cxx:1948 TGeoPatternFinder.cxx:1949 TGeoPatternFinder.cxx:1950 TGeoPatternFinder.cxx:1951 TGeoPatternFinder.cxx:1952 TGeoPatternFinder.cxx:1953 TGeoPatternFinder.cxx:1954 TGeoPatternFinder.cxx:1955 TGeoPatternFinder.cxx:1956 TGeoPatternFinder.cxx:1957 TGeoPatternFinder.cxx:1958 TGeoPatternFinder.cxx:1959 TGeoPatternFinder.cxx:1960 TGeoPatternFinder.cxx:1961 TGeoPatternFinder.cxx:1962 TGeoPatternFinder.cxx:1963 TGeoPatternFinder.cxx:1964 TGeoPatternFinder.cxx:1965 TGeoPatternFinder.cxx:1966 TGeoPatternFinder.cxx:1967 TGeoPatternFinder.cxx:1968 TGeoPatternFinder.cxx:1969 TGeoPatternFinder.cxx:1970 TGeoPatternFinder.cxx:1971 TGeoPatternFinder.cxx:1972 TGeoPatternFinder.cxx:1973 TGeoPatternFinder.cxx:1974 TGeoPatternFinder.cxx:1975 TGeoPatternFinder.cxx:1976 TGeoPatternFinder.cxx:1977 TGeoPatternFinder.cxx:1978 TGeoPatternFinder.cxx:1979 TGeoPatternFinder.cxx:1980 TGeoPatternFinder.cxx:1981 TGeoPatternFinder.cxx:1982 TGeoPatternFinder.cxx:1983 TGeoPatternFinder.cxx:1984 TGeoPatternFinder.cxx:1985 TGeoPatternFinder.cxx:1986 TGeoPatternFinder.cxx:1987 TGeoPatternFinder.cxx:1988 TGeoPatternFinder.cxx:1989 TGeoPatternFinder.cxx:1990 TGeoPatternFinder.cxx:1991 TGeoPatternFinder.cxx:1992 TGeoPatternFinder.cxx:1993 TGeoPatternFinder.cxx:1994 TGeoPatternFinder.cxx:1995 TGeoPatternFinder.cxx:1996 TGeoPatternFinder.cxx:1997 TGeoPatternFinder.cxx:1998 TGeoPatternFinder.cxx:1999 TGeoPatternFinder.cxx:2000 TGeoPatternFinder.cxx:2001 TGeoPatternFinder.cxx:2002 TGeoPatternFinder.cxx:2003 TGeoPatternFinder.cxx:2004 TGeoPatternFinder.cxx:2005 TGeoPatternFinder.cxx:2006 TGeoPatternFinder.cxx:2007 TGeoPatternFinder.cxx:2008 TGeoPatternFinder.cxx:2009 TGeoPatternFinder.cxx:2010 TGeoPatternFinder.cxx:2011 TGeoPatternFinder.cxx:2012 TGeoPatternFinder.cxx:2013 TGeoPatternFinder.cxx:2014 TGeoPatternFinder.cxx:2015 TGeoPatternFinder.cxx:2016 TGeoPatternFinder.cxx:2017 TGeoPatternFinder.cxx:2018 TGeoPatternFinder.cxx:2019 TGeoPatternFinder.cxx:2020 TGeoPatternFinder.cxx:2021 TGeoPatternFinder.cxx:2022 TGeoPatternFinder.cxx:2023 TGeoPatternFinder.cxx:2024 TGeoPatternFinder.cxx:2025 TGeoPatternFinder.cxx:2026 TGeoPatternFinder.cxx:2027 TGeoPatternFinder.cxx:2028 TGeoPatternFinder.cxx:2029 TGeoPatternFinder.cxx:2030 TGeoPatternFinder.cxx:2031 TGeoPatternFinder.cxx:2032 TGeoPatternFinder.cxx:2033 TGeoPatternFinder.cxx:2034 TGeoPatternFinder.cxx:2035 TGeoPatternFinder.cxx:2036 TGeoPatternFinder.cxx:2037 TGeoPatternFinder.cxx:2038 TGeoPatternFinder.cxx:2039 TGeoPatternFinder.cxx:2040 TGeoPatternFinder.cxx:2041 TGeoPatternFinder.cxx:2042 TGeoPatternFinder.cxx:2043 TGeoPatternFinder.cxx:2044 TGeoPatternFinder.cxx:2045 TGeoPatternFinder.cxx:2046 TGeoPatternFinder.cxx:2047 TGeoPatternFinder.cxx:2048 TGeoPatternFinder.cxx:2049 TGeoPatternFinder.cxx:2050 TGeoPatternFinder.cxx:2051 TGeoPatternFinder.cxx:2052 TGeoPatternFinder.cxx:2053 TGeoPatternFinder.cxx:2054 TGeoPatternFinder.cxx:2055 TGeoPatternFinder.cxx:2056 TGeoPatternFinder.cxx:2057 TGeoPatternFinder.cxx:2058 TGeoPatternFinder.cxx:2059 TGeoPatternFinder.cxx:2060 TGeoPatternFinder.cxx:2061 TGeoPatternFinder.cxx:2062 TGeoPatternFinder.cxx:2063 TGeoPatternFinder.cxx:2064 TGeoPatternFinder.cxx:2065 TGeoPatternFinder.cxx:2066 TGeoPatternFinder.cxx:2067 TGeoPatternFinder.cxx:2068 TGeoPatternFinder.cxx:2069 TGeoPatternFinder.cxx:2070 TGeoPatternFinder.cxx:2071 TGeoPatternFinder.cxx:2072 TGeoPatternFinder.cxx:2073 TGeoPatternFinder.cxx:2074 TGeoPatternFinder.cxx:2075 TGeoPatternFinder.cxx:2076 TGeoPatternFinder.cxx:2077 TGeoPatternFinder.cxx:2078 TGeoPatternFinder.cxx:2079 TGeoPatternFinder.cxx:2080 TGeoPatternFinder.cxx:2081 TGeoPatternFinder.cxx:2082 TGeoPatternFinder.cxx:2083 TGeoPatternFinder.cxx:2084 TGeoPatternFinder.cxx:2085 TGeoPatternFinder.cxx:2086 TGeoPatternFinder.cxx:2087 TGeoPatternFinder.cxx:2088 TGeoPatternFinder.cxx:2089 TGeoPatternFinder.cxx:2090 TGeoPatternFinder.cxx:2091 TGeoPatternFinder.cxx:2092 TGeoPatternFinder.cxx:2093 TGeoPatternFinder.cxx:2094 TGeoPatternFinder.cxx:2095 TGeoPatternFinder.cxx:2096 TGeoPatternFinder.cxx:2097 TGeoPatternFinder.cxx:2098 TGeoPatternFinder.cxx:2099 TGeoPatternFinder.cxx:2100 TGeoPatternFinder.cxx:2101 TGeoPatternFinder.cxx:2102 TGeoPatternFinder.cxx:2103 TGeoPatternFinder.cxx:2104 TGeoPatternFinder.cxx:2105 TGeoPatternFinder.cxx:2106 TGeoPatternFinder.cxx:2107 TGeoPatternFinder.cxx:2108 TGeoPatternFinder.cxx:2109 TGeoPatternFinder.cxx:2110 TGeoPatternFinder.cxx:2111 TGeoPatternFinder.cxx:2112 TGeoPatternFinder.cxx:2113 TGeoPatternFinder.cxx:2114 TGeoPatternFinder.cxx:2115 TGeoPatternFinder.cxx:2116 TGeoPatternFinder.cxx:2117 TGeoPatternFinder.cxx:2118 TGeoPatternFinder.cxx:2119 TGeoPatternFinder.cxx:2120 TGeoPatternFinder.cxx:2121 TGeoPatternFinder.cxx:2122 TGeoPatternFinder.cxx:2123 TGeoPatternFinder.cxx:2124 TGeoPatternFinder.cxx:2125 TGeoPatternFinder.cxx:2126 TGeoPatternFinder.cxx:2127 TGeoPatternFinder.cxx:2128 TGeoPatternFinder.cxx:2129 TGeoPatternFinder.cxx:2130 TGeoPatternFinder.cxx:2131 TGeoPatternFinder.cxx:2132 TGeoPatternFinder.cxx:2133 TGeoPatternFinder.cxx:2134 TGeoPatternFinder.cxx:2135 TGeoPatternFinder.cxx:2136 TGeoPatternFinder.cxx:2137 TGeoPatternFinder.cxx:2138 TGeoPatternFinder.cxx:2139 TGeoPatternFinder.cxx:2140 TGeoPatternFinder.cxx:2141 TGeoPatternFinder.cxx:2142 TGeoPatternFinder.cxx:2143 TGeoPatternFinder.cxx:2144 TGeoPatternFinder.cxx:2145 TGeoPatternFinder.cxx:2146 TGeoPatternFinder.cxx:2147 TGeoPatternFinder.cxx:2148 TGeoPatternFinder.cxx:2149 TGeoPatternFinder.cxx:2150 TGeoPatternFinder.cxx:2151 TGeoPatternFinder.cxx:2152 TGeoPatternFinder.cxx:2153 TGeoPatternFinder.cxx:2154 TGeoPatternFinder.cxx:2155 TGeoPatternFinder.cxx:2156 TGeoPatternFinder.cxx:2157 TGeoPatternFinder.cxx:2158 TGeoPatternFinder.cxx:2159 TGeoPatternFinder.cxx:2160 TGeoPatternFinder.cxx:2161 TGeoPatternFinder.cxx:2162 TGeoPatternFinder.cxx:2163 TGeoPatternFinder.cxx:2164 TGeoPatternFinder.cxx:2165 TGeoPatternFinder.cxx:2166 TGeoPatternFinder.cxx:2167 TGeoPatternFinder.cxx:2168 TGeoPatternFinder.cxx:2169 TGeoPatternFinder.cxx:2170 TGeoPatternFinder.cxx:2171 TGeoPatternFinder.cxx:2172 TGeoPatternFinder.cxx:2173 TGeoPatternFinder.cxx:2174 TGeoPatternFinder.cxx:2175 TGeoPatternFinder.cxx:2176 TGeoPatternFinder.cxx:2177 TGeoPatternFinder.cxx:2178 TGeoPatternFinder.cxx:2179 TGeoPatternFinder.cxx:2180 TGeoPatternFinder.cxx:2181 TGeoPatternFinder.cxx:2182 TGeoPatternFinder.cxx:2183 TGeoPatternFinder.cxx:2184 TGeoPatternFinder.cxx:2185 TGeoPatternFinder.cxx:2186 TGeoPatternFinder.cxx:2187 TGeoPatternFinder.cxx:2188 TGeoPatternFinder.cxx:2189 TGeoPatternFinder.cxx:2190