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 29 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 39 of file PndMdtIGeometry.h.

References Init().

39 { fSensorSet.insert(_v); }

◆ GetLayerBoundary()

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

Definition at line 79 of file PndMdtIGeometry.h.

80  {
81  std::map<Int_t, LayerBoundary>::const_iterator it = fLayerInfoMap.find(iLayer);
82  if (it == fLayerInfoMap.end())
83  return kFALSE;
84  LBPos = TVector3(it->second.minX, it->second.minY, it->second.minZ);
85  RTPos = TVector3(it->second.maxX, it->second.maxY, it->second.maxZ);
86  return kTRUE;
87  }

◆ GetStripCenter()

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

Definition at line 71 of file PndMdtIGeometry.h.

72  {
73  std::map<Int_t, InfoType>::const_iterator it = fGeoMap.find(iDetId);
74  if (it == fGeoMap.end())
75  return kFALSE;
76  pos = it->second.Position;
77  return kTRUE;
78  }

◆ GetStripLength()

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

Definition at line 63 of file PndMdtIGeometry.h.

64  {
65  std::map<Int_t, InfoType>::const_iterator it = fGeoMap.find(iDetId);
66  if (it == fGeoMap.end())
67  return kFALSE;
68  len = it->second.Length;
69  return kTRUE;
70  }

◆ GetTubeCenter()

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

Definition at line 45 of file PndMdtIGeometry.h.

46  {
47  std::map<Int_t, InfoType>::const_iterator it = fGeoMap.find(iDetId);
48  if (it == fGeoMap.end())
49  return kFALSE;
50  pos = it->second.Position;
51  return kTRUE;
52  }

◆ GetTubeLength()

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

Definition at line 54 of file PndMdtIGeometry.h.

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

◆ 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 104 of file PndMdtIGeometry.h.

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

105  {
106  static const Double_t cSTRIPWIDTH = 1.; // cent meter;
107  static const Double_t cGAPOFSTRIPS = 0.0; // cent meter;
108  Short_t iMod = PndMdtID::Module(iDetId);
109  Short_t iSec = PndMdtID::Sector(iDetId);
110  Short_t iLayer = PndMdtID::Layer(iDetId);
111  Int_t layerID = PndMdtID::LayerID(iMod, iSec, iLayer);
112  LayerInfoMapIter it = fLayerInfoMap.find(layerID);
113  if (it == fLayerInfoMap.end())
114  return kFALSE;
115  Int_t fStripNo;
116  if (iMod == 1)
117  fStripNo = (fEntryPos.Z() - it->second.minZ) / (cSTRIPWIDTH + cGAPOFSTRIPS);
118  else if (iMod == 2) // endcap
119  {
120  if (iLayer < 2)
121  fStripNo = (fEntryPos.Y() - it->second.minY) / (cSTRIPWIDTH + cGAPOFSTRIPS);
122  else
123  fStripNo = (fEntryPos.X() - it->second.minX) / (cSTRIPWIDTH + cGAPOFSTRIPS);
124  } else
125  fStripNo = (fEntryPos.X() - it->second.minX) / (cSTRIPWIDTH + cGAPOFSTRIPS);
126  fStripDetID = PndMdtID::Identifier(iMod, iSec, iLayer, fStripNo);
127  return kTRUE;
128  }
static Short_t Module(Int_t detID)
Definition: PndMdtID.h:28
static Short_t Layer(Int_t detID)
Definition: PndMdtID.h:30
static Int_t LayerID(Int_t iMod, Int_t iOct, Int_t iLayer)
Definition: PndMdtID.h:25
static Int_t Identifier(Int_t iMod, Int_t iOct, Int_t iLayer, Int_t iBox, Int_t iWire)
Definition: PndMdtID.h:21
static Short_t Sector(Int_t detID)
Definition: PndMdtID.h:29

◆ MasterToLocal()

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

Definition at line 88 of file PndMdtIGeometry.h.

89  {
90  std::map<Int_t, InfoType>::const_iterator it = fGeoMap.find(iDetId);
91  if (it == fGeoMap.end())
92  return kFALSE;
93  TVector3 center = it->second.Position;
94  TGeoMatrix *fMtrx = it->second.Matrix;
95  if (!fMtrx)
96  return kFALSE;
97  // fMtrx->Print();
98  // fMtrx->MasterToLocal(&center[0], &local[0]);
99  // std::cout<<"local 1 "<<local<<std::endl;
100  fMtrx->MasterToLocal(&master[0], &local[0]);
101  // std::cout<<"local 2 "<<local<<std::endl;
102  return kTRUE;
103  }

◆ Print()

void PndMdtIGeometry::Print ( ) const

Referenced by MapWireToStrip().

◆ SetVerbose()

void PndMdtIGeometry::SetVerbose ( Int_t  _v)
inline

Definition at line 38 of file PndMdtIGeometry.h.

38 { fVerbose = _v; }

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