PandaRoot
PndMdtIGeometry Class Reference

#include <PndMdtIGeometry.h>

Inheritance diagram for PndMdtIGeometry:

Classes

struct  InfoType
 
struct  LayerBoundary
 

Public Member Functions

 PndMdtIGeometry ()
 
 ~PndMdtIGeometry ()
 
void SetVerbose (Int_t _v)
 
void AddSensor (TString _v)
 
Bool_t Init ()
 
Bool_t GetTubeCenter (Int_t iDetId, TVector3 &pos) const
 
Bool_t GetTubeLength (Int_t iDetId, Double_t &len) const
 
Bool_t GetStripLength (Int_t iDetId, Double_t &len) const
 
Bool_t GetStripCenter (Int_t iDetId, TVector3 &pos) const
 
Bool_t GetLayerBoundary (Int_t iLayer, TVector3 &LBPos, TVector3 &RTPos) const
 
Bool_t MasterToLocal (Int_t iDetId, TVector3 &master, TVector3 &local)
 
Bool_t MapWireToStrip (Int_t iDetId, const TVector3 &fEntryPos, Int_t &fStripDetID)
 
void Print () const
 

Static Public Member Functions

static PndMdtIGeometryInstance ()
 

Detailed Description

Definition at line 17 of file PndMdtIGeometry.h.

Constructor & Destructor Documentation

◆ PndMdtIGeometry()

PndMdtIGeometry::PndMdtIGeometry ( )

Default constructor

◆ ~PndMdtIGeometry()

PndMdtIGeometry::~PndMdtIGeometry ( )

Destructor

Member Function Documentation

◆ AddSensor()

void PndMdtIGeometry::AddSensor ( TString  _v)
inline

Definition at line 27 of file PndMdtIGeometry.h.

References Init().

27 { fSensorSet.insert(_v); }

◆ GetLayerBoundary()

Bool_t PndMdtIGeometry::GetLayerBoundary ( Int_t  iLayer,
TVector3 &  LBPos,
TVector3 &  RTPos 
) const
inline

Definition at line 67 of file PndMdtIGeometry.h.

68  {
69  std::map<Int_t, LayerBoundary>::const_iterator it = fLayerInfoMap.find(iLayer);
70  if (it == fLayerInfoMap.end())
71  return kFALSE;
72  LBPos = TVector3(it->second.minX, it->second.minY, it->second.minZ);
73  RTPos = TVector3(it->second.maxX, it->second.maxY, it->second.maxZ);
74  return kTRUE;
75  }

◆ GetStripCenter()

Bool_t PndMdtIGeometry::GetStripCenter ( Int_t  iDetId,
TVector3 &  pos 
) const
inline

Definition at line 59 of file PndMdtIGeometry.h.

60  {
61  std::map<Int_t, InfoType>::const_iterator it = fGeoMap.find(iDetId);
62  if (it == fGeoMap.end())
63  return kFALSE;
64  pos = it->second.Position;
65  return kTRUE;
66  }

◆ GetStripLength()

Bool_t PndMdtIGeometry::GetStripLength ( Int_t  iDetId,
Double_t &  len 
) const
inline

Definition at line 51 of file PndMdtIGeometry.h.

52  {
53  std::map<Int_t, InfoType>::const_iterator it = fGeoMap.find(iDetId);
54  if (it == fGeoMap.end())
55  return kFALSE;
56  len = it->second.Length;
57  return kTRUE;
58  }

◆ GetTubeCenter()

Bool_t PndMdtIGeometry::GetTubeCenter ( Int_t  iDetId,
TVector3 &  pos 
) const
inline

Definition at line 33 of file PndMdtIGeometry.h.

34  {
35  std::map<Int_t, InfoType>::const_iterator it = fGeoMap.find(iDetId);
36  if (it == fGeoMap.end())
37  return kFALSE;
38  pos = it->second.Position;
39  return kTRUE;
40  }

◆ GetTubeLength()

Bool_t PndMdtIGeometry::GetTubeLength ( Int_t  iDetId,
Double_t &  len 
) const
inline

Definition at line 42 of file PndMdtIGeometry.h.

43  {
44  std::map<Int_t, InfoType>::const_iterator it = fGeoMap.find(iDetId);
45  if (it == fGeoMap.end())
46  return kFALSE;
47  len = it->second.Length;
48  return kTRUE;
49  }

◆ Init()

Bool_t PndMdtIGeometry::Init ( )

Referenced by AddSensor().

◆ Instance()

static PndMdtIGeometry* PndMdtIGeometry::Instance ( )
static

◆ MapWireToStrip()

Bool_t PndMdtIGeometry::MapWireToStrip ( Int_t  iDetId,
const TVector3 &  fEntryPos,
Int_t &  fStripDetID 
)
inline

Definition at line 92 of file PndMdtIGeometry.h.

References PndMdtID::Identifier(), PndMdtID::Layer(), PndMdtID::LayerID(), PndMdtID::Module(), Print(), and PndMdtID::Sector().

93  {
94  static const Double_t cSTRIPWIDTH = 1.; // cent meter;
95  static const Double_t cGAPOFSTRIPS = 0.0; // cent meter;
96  Short_t iMod = PndMdtID::Module(iDetId);
97  Short_t iSec = PndMdtID::Sector(iDetId);
98  Short_t iLayer = PndMdtID::Layer(iDetId);
99  Int_t layerID = PndMdtID::LayerID(iMod, iSec, iLayer);
100  LayerInfoMapIter it = fLayerInfoMap.find(layerID);
101  if (it == fLayerInfoMap.end())
102  return kFALSE;
103  Int_t fStripNo;
104  if (iMod == 1)
105  fStripNo = (fEntryPos.Z() - it->second.minZ) / (cSTRIPWIDTH + cGAPOFSTRIPS);
106  else if (iMod == 2) // endcap
107  {
108  if (iLayer < 2)
109  fStripNo = (fEntryPos.Y() - it->second.minY) / (cSTRIPWIDTH + cGAPOFSTRIPS);
110  else
111  fStripNo = (fEntryPos.X() - it->second.minX) / (cSTRIPWIDTH + cGAPOFSTRIPS);
112  } else
113  fStripNo = (fEntryPos.X() - it->second.minX) / (cSTRIPWIDTH + cGAPOFSTRIPS);
114  fStripDetID = PndMdtID::Identifier(iMod, iSec, iLayer, fStripNo);
115  return kTRUE;
116  }
static Short_t Module(Int_t detID)
Definition: PndMdtID.h:16
static Short_t Layer(Int_t detID)
Definition: PndMdtID.h:18
static Int_t LayerID(Int_t iMod, Int_t iOct, Int_t iLayer)
Definition: PndMdtID.h:13
static Int_t Identifier(Int_t iMod, Int_t iOct, Int_t iLayer, Int_t iBox, Int_t iWire)
Definition: PndMdtID.h:9
static Short_t Sector(Int_t detID)
Definition: PndMdtID.h:17

◆ MasterToLocal()

Bool_t PndMdtIGeometry::MasterToLocal ( Int_t  iDetId,
TVector3 &  master,
TVector3 &  local 
)
inline

Definition at line 76 of file PndMdtIGeometry.h.

77  {
78  std::map<Int_t, InfoType>::const_iterator it = fGeoMap.find(iDetId);
79  if (it == fGeoMap.end())
80  return kFALSE;
81  TVector3 center = it->second.Position;
82  TGeoMatrix *fMtrx = it->second.Matrix;
83  if (!fMtrx)
84  return kFALSE;
85  // fMtrx->Print();
86  // fMtrx->MasterToLocal(&center[0], &local[0]);
87  // std::cout<<"local 1 "<<local<<std::endl;
88  fMtrx->MasterToLocal(&master[0], &local[0]);
89  // std::cout<<"local 2 "<<local<<std::endl;
90  return kTRUE;
91  }

◆ Print()

void PndMdtIGeometry::Print ( ) const

Referenced by MapWireToStrip().

◆ SetVerbose()

void PndMdtIGeometry::SetVerbose ( Int_t  _v)
inline

Definition at line 26 of file PndMdtIGeometry.h.

26 { fVerbose = _v; }

The documentation for this class was generated from the following file: