17#include <TGeoVolume.h>
19#include <TGeoPhysicalNode.h>
124 TGeoNode *
GetTheta(
int part,
int phi,
int theta );
145 void ComputeThetaPhi(
int id,
int sector,
int nb,
int &CryNumberTheta,
int &CryNumberPhi);
163 void Align(TGeoPhysicalNode *phyNode, TGeoMatrix *newmat=0, TGeoShape *newshape=0, Bool_t check=kFALSE);
169 static const int m_kPart = 3;
170 static const int m_kPhiBr = 120;
171 static const int m_kThetaBr = 44;
183 int m_brCrystalColor;
184 int m_ecCrystalColor;
186 static const int EMC_TIME_FACTOR = 1;
187 static const int EMC_CHARGE_FACTOR = 1000;
190 TGeoNode *m_NodePart[m_kPart];
191 TGeoNode *m_NodePhi[m_kPart][m_kPhiBr];
192 TGeoNode *m_NodeTheta[m_kPart][m_kPhiBr][m_kThetaBr];
193 TGeoNode *m_NodeTheta2[m_kPart][m_kPhiBr][m_kThetaBr];
194 TGeoPhysicalNode *m_PhysicalCrystal[m_kPart][m_kPhiBr][m_kThetaBr];
195 TGeoPhysicalNode *m_PhysicalCrystal2[m_kPart][m_kPhiBr][m_kThetaBr];
197 TObjArray *m_PhyNodeOrgArray;
203 const TObjArray *m_EmcDigiCol;
206 Emc2DCrystal *m_Emc2DCrystal[m_kPart][m_kPhiBr][m_kThetaBr];
TGeoVolume * GetVolumeCrystal(int part, int phi, int theta)
Get crystal volume;.
int ComputeEndCopyNb(int num)
Compute copyNb, copyNb 5,6,14,15,16 corresponding to two volume.
void SetVisEmcDetector()
Set Emc detector visibility;.
TGeoNode * GetCrystal(int part, int phi, int theta)
Get crystal one;.
int GetPhiNb(int part, int theta)
Get number of phi on part;.
TGeoVolume * GetVolumeTheta(int part, int phi, int theta)
Get theta volume;.
TGeoNode * GetTheta(int part, int phi, int theta)
Get theta node;.
int GetPartNb()
Get number of part;.
void SetVisEmcHits()
Set Emc hits visibility;.
TGeoVolume * GetVolumePart(int part)
Get part volume;.
TGeoNode * GetCrystal2(int part, int phi, int theta)
Get crystal2 one;.
void Align(TGeoPhysicalNode *phyNode, TGeoMatrix *newmat=0, TGeoShape *newshape=0, Bool_t check=kFALSE)
Align a physical node, change its position and shape.
Int_t GetPart(TGeoPhysicalNode *phyNode)
Get part no of a crystal physcial node.
void ComputeThetaPhi(int id, int sector, int nb, int &CryNumberTheta, int &CryNumberPhi)
Compute theta, phi from sector, nb.
TGeoNode * GetPart(int part)
Get part node;.
Emc2DCrystal * Get2DCrystal(Int_t part, Int_t phi, Int_t theta)
Get Emc2DCrystal;.
TGeoPhysicalNode * GetPhysicalCrystal2(int part, int phi, int theta)
Get crystal physical node2; EC nb 5,6,14,15,16 in any sector has two physicalNode.
TGeoVolume * GetVolumeEmc()
Get Emc volume;.
void SetHalfVisible()
Set half visible;.
void Draw(Option_t *option)
Draw function.
void InitFromROOT(TGeoVolume *vol)
Initialize ROOTGeo from TGeoVolume logicalEmc.
void SetAllVisible()
Set all visible;.
TGeoVolume * GetVolumePhi(int part, int phi)
Get phi volume;
void InitFromGDML(const char *gdmlFile, const char *setupName)
Initialize ROOTGeo from GDML.
void SetNoEndVisible()
Set noend visible;.
void SetPhysicalNode()
Set the pointers to the physical nodes;.
void SetVolumeAppendInVis()
Set default visual attributes;.
void SetNode()
Set the pointers to theirs nodes;.
int GetThetaNb(int part)
Get number of theta on part;.
bool HasTwoNodes(int part, int phi, int theta)
Whether this id is combined of two nodes.
TGeoNode * GetPhi(int part, int phi)
Get phi node;.
void RestorePhyNode(TGeoPhysicalNode *phyNode, TGeoNode *node)
Restore the physical node to original shape.
void DrawHits(Option_t *option)
Draw 2D hits.
TGeoPhysicalNode * GetPhysicalCrystal(int part, int phi, int theta)
Get crystal physical node; all part,phi,theta has a physicalNode.
TGeoNode * GetTheta2(int part, int phi, int theta)
Get theta2 node;.
void SetDetector()
Set default physical node attributes;.
void Init2DGeometry()
Initialize 2D Geometry.
void SetVolumeEmc(TGeoVolume *vol)
Set Emc volume, while initializing from ROOT;.
void SetVolumeDefaultVis()
Set default visual attributes;.
void SetQuarterVisible()
Set quater visible;.
void SetHits()
Set all physicalNodes corresponding to digiCol;.