Main Page | Namespace List | Class Hierarchy | Alphabetical List | Class List | Directories | File List | Namespace Members | Class Members | File Members | Related Pages

EmcROOTGeo Class Reference

#include <EmcROOTGeo.h>

Inheritance diagram for EmcROOTGeo:

SubDetectorROOTGeo SubDetectorROOTGeo SubDetectorROOTGeo SubDetectorROOTGeo List of all members.

Public Member Functions

void Align (TGeoPhysicalNode *phyNode, TGeoMatrix *newmat=0, TGeoShape *newshape=0, Bool_t check=kFALSE)
 Align a physical node, change its position and shape.
void Align (TGeoPhysicalNode *phyNode, TGeoMatrix *newmat=0, TGeoShape *newshape=0, Bool_t check=kFALSE)
 Align a physical node, change its position and shape.
int ComputeEndCopyNb (int num)
 Compute copyNb, copyNb 5,6,14,15,16 corresponding to two volume.
int ComputeEndCopyNb (int num)
 Compute copyNb, copyNb 5,6,14,15,16 corresponding to two volume.
void ComputeThetaPhi (int id, int sector, int nb, int &CryNumberTheta, int &CryNumberPhi)
 Compute theta, phi from sector, nb.
void ComputeThetaPhi (int id, int sector, int nb, int &CryNumberTheta, int &CryNumberPhi)
 Compute theta, phi from sector, nb.
void Draw (Option_t *option)
 Draw function.
void Draw (Option_t *option)
 Draw function.
void DrawHits (Option_t *option)
 Draw 2D hits.
void DrawHits (Option_t *option)
 Draw 2D hits.
 EmcROOTGeo ()
 Constructor.
 EmcROOTGeo ()
 Constructor.
 EmcROOTGeo ()
 Constructor.
 EmcROOTGeo ()
 Constructor.
Emc2DCrystalGet2DCrystal (Int_t part, Int_t phi, Int_t theta)
 Get Emc2DCrystal;.
Emc2DCrystalGet2DCrystal (Int_t part, Int_t phi, Int_t theta)
 Get Emc2DCrystal;.
TGeoVolumeAssembly * GetAssemblyVolume (const std::string &an)
 Get an assembly by name;.
virtual TGeoVolumeAssembly * GetAssemblyVolume (const std::string &an)
 Get an assembly by name;.
virtual TGeoVolumeAssembly * GetAssemblyVolume (const std::string &an)
 Get an assembly by name;.
TGeoVolumeAssembly * GetAssemblyVolume (const std::string &an)
 Get an assembly by name;.
TGeoNode * GetCrystal (int part, int phi, int theta)
 Get crystal one;.
TGeoNode * GetCrystal (int part, int phi, int theta)
 Get crystal one;.
TGeoNode * GetCrystal (int part, int phi, int theta)
 Get crystal one;.
TGeoNode * GetCrystal (int part, int phi, int theta)
 Get crystal one;.
TGeoNode * GetCrystal2 (int part, int phi, int theta)
 Get crystal2 one;.
TGeoNode * GetCrystal2 (int part, int phi, int theta)
 Get crystal2 one;.
virtual TGeoPhysicalNode * GetHit (int i)
 Get ith hit in HitsArray;.
virtual TGeoPhysicalNode * GetHit (int i)
 Get ith hit in HitsArray;.
virtual int GetHitsNum ()
 Get number of hits in HitsArray;.
virtual int GetHitsNum ()
 Get number of hits in HitsArray;.
TGeoVolume * GetLogicalVolume (const std::string &vn)
 Get a logical volume by name;.
virtual TGeoVolume * GetLogicalVolume (const std::string &vn)
 Get a logical volume by name;.
virtual TGeoVolume * GetLogicalVolume (const std::string &vn)
 Get a logical volume by name;.
TGeoVolume * GetLogicalVolume (const std::string &vn)
 Get a logical volume by name;.
TGeoNode * GetNode (const std::string &nn)
 Get a node(physical volume) by name;.
virtual TGeoNode * GetNode (const std::string &nn)
 Get a node(physical volume) by name;.
virtual TGeoNode * GetNode (const std::string &nn)
 Get a node(physical volume) by name;.
TGeoNode * GetNode (const std::string &nn)
 Get a node(physical volume) by name;.
TGeoNode * GetPart (int part)
 Get part node;.
Int_t GetPart (TGeoPhysicalNode *phyNode)
 Get part no of a crystal physcial node.
TGeoNode * GetPart (int part)
 Get part node;.
Int_t GetPart (TGeoPhysicalNode *phyNode)
 Get part no of a crystal physcial node.
TGeoNode * GetPart (int part)
 Get part node;.
TGeoNode * GetPart (int part)
 Get part node;.
int GetPartNb ()
 Get number of part;.
int GetPartNb ()
 Get number of part;.
int GetPartNb ()
 Get number of part;.
int GetPartNb ()
 Get number of part;.
TGeoNode * GetPhi (int part, int phi)
 Get phi node;.
TGeoNode * GetPhi (int part, int phi)
 Get phi node;.
TGeoNode * GetPhi (int part, int phi)
 Get phi node;.
TGeoNode * GetPhi (int part, int phi)
 Get phi node;.
int GetPhiNb (int part)
 Get number of phi on part;.
int GetPhiNb (int part, int theta)
 Get number of phi on part;.
int GetPhiNb (int part, int theta)
 Get number of phi on part;.
int GetPhiNb (int part)
 Get number of phi on part;.
TGeoPhysicalNode * GetPhysicalCrystal (int part, int phi, int theta)
 Get crystal physical node;.
TGeoPhysicalNode * GetPhysicalCrystal (int part, int phi, int theta)
 Get crystal physical node; all part,phi,theta has a physicalNode.
TGeoPhysicalNode * GetPhysicalCrystal (int part, int phi, int theta)
 Get crystal physical node; all part,phi,theta has a physicalNode.
TGeoPhysicalNode * GetPhysicalCrystal (int part, int phi, int theta)
 Get crystal physical node;.
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.
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.
TGeoNode * GetTheta (int part, int phi, int theta)
 Get theta node;.
TGeoNode * GetTheta (int part, int phi, int theta)
 Get theta node;.
TGeoNode * GetTheta (int part, int phi, int theta)
 Get theta node;.
TGeoNode * GetTheta (int part, int phi, int theta)
 Get theta node;.
TGeoNode * GetTheta2 (int part, int phi, int theta)
 Get theta2 node;.
TGeoNode * GetTheta2 (int part, int phi, int theta)
 Get theta2 node;.
int GetThetaNb (int part)
 Get number of theta on part;.
int GetThetaNb (int part)
 Get number of theta on part;.
int GetThetaNb (int part)
 Get number of theta on part;.
int GetThetaNb (int part)
 Get number of theta on part;.
TGeoVolume * GetTopVolume ()
 Get the top(world) volume;.
virtual TGeoVolume * GetTopVolume ()
 Get the top(world) volume;.
virtual TGeoVolume * GetTopVolume ()
 Get the top(world) volume;.
TGeoVolume * GetTopVolume ()
 Get the top(world) volume;.
TGeoVolume * GetVolumeCrystal (int part, int phi, int theta)
 Get crystal volume;.
TGeoVolume * GetVolumeCrystal (int part, int phi, int theta)
 Get crystal volume;.
TGeoVolume * GetVolumeCrystal (int part, int phi, int theta)
 Get crystal volume;.
TGeoVolume * GetVolumeCrystal (int part, int phi, int theta)
 Get crystal volume;.
TGeoVolume * GetVolumeEmc ()
 Get Emc volume;.
TGeoVolume * GetVolumeEmc ()
 Get Emc volume;.
TGeoVolume * GetVolumeEmc ()
 Get Emc volume;.
TGeoVolume * GetVolumeEmc ()
 Get Emc volume;.
TGeoVolume * GetVolumePart (int part)
 Get part volume;.
TGeoVolume * GetVolumePart (int part)
 Get part volume;.
TGeoVolume * GetVolumePart (int part)
 Get part volume;.
TGeoVolume * GetVolumePart (int part)
 Get part volume;.
TGeoVolume * GetVolumePhi (int part, int phi)
 Get phi volume;.
TGeoVolume * GetVolumePhi (int part, int phi)
 Get phi volume;.
TGeoVolume * GetVolumePhi (int part, int phi)
 Get phi volume;.
TGeoVolume * GetVolumePhi (int part, int phi)
 Get phi volume;.
TGeoVolume * GetVolumeTheta (int part, int phi, int theta)
 Get theta volume;.
TGeoVolume * GetVolumeTheta (int part, int phi, int theta)
 Get theta volume;.
TGeoVolume * GetVolumeTheta (int part, int phi, int theta)
 Get theta volume;.
TGeoVolume * GetVolumeTheta (int part, int phi, int theta)
 Get theta volume;.
bool HasTwoNodes (int part, int phi, int theta)
 Whether this id is combined of two nodes.
bool HasTwoNodes (int part, int phi, int theta)
 Whether this id is combined of two nodes.
void Init2DGeometry ()
 Initialize 2D Geometry.
void Init2DGeometry ()
 Initialize 2D Geometry.
void InitFromGdml (const char *gdmlFile, const char *setupName)
 Initialize the instance of ROOTGeo.
void InitFromGDML (const char *gdmlFile, const char *setupName)
 Initialize ROOTGeo from GDML.
void InitFromGDML (const char *gdmlFile, const char *setupName)
 Initialize ROOTGeo from GDML.
void InitFromGdml (const char *gdmlFile, const char *setupName)
 Initialize the instance of ROOTGeo.
void InitFromROOT (TGeoVolume *vol)
 Initialize ROOTGeo from TGeoVolume logicalEmc.
void InitFromROOT (TGeoVolume *vol)
 Initialize ROOTGeo from TGeoVolume logicalEmc.
int IsInitialized ()
 If the ROOT geometry of this subdetctor is initialized;.
virtual int IsInitialized ()
 If the ROOT geometry of this subdetctor is initialized;.
virtual int IsInitialized ()
 If the ROOT geometry of this subdetctor is initialized;.
int IsInitialized ()
 If the ROOT geometry of this subdetctor is initialized;.
void ReadGdml (const char *gdmlFile, const char *setupName)
 Initialize the instance of ROOTGeo.
virtual void ReadGdml (const char *gdmlFile, const char *setupName)
 Initialize the instance of ROOTGeo.
virtual void ReadGdml (const char *gdmlFile, const char *setupName)
 Initialize the instance of ROOTGeo.
void ReadGdml (const char *gdmlFile, const char *setupName)
 Initialize the instance of ROOTGeo.
void RestorePhyNode (TGeoPhysicalNode *phyNode, TGeoNode *node)
 Restore the physical node to original shape.
void RestorePhyNode (TGeoPhysicalNode *phyNode, TGeoNode *node)
 Restore the physical node to original shape.
void SetAllVisible ()
 Set all visible;.
void SetAllVisible ()
 Set all visible;.
void SetAllVisible ()
 Set all visible;.
void SetAllVisible ()
 Set all visible;.
void SetChildNo (int childNo)
virtual void SetChildNo (int childNo)
virtual void SetChildNo (int childNo)
void SetChildNo (int childNo)
void SetDefaultVis ()
 Set default visual attributes;.
void SetDefaultVis ()
 Set default visual attributes;.
void SetDetector ()
 Set Detecor (what is detector depends on you).
void SetDetector ()
 Set Detecor (what is detector depends on you).
virtual void SetDetectorOn ()
 Set all physicalNodes in m_DeteorsArray visible;.
virtual void SetDetectorOn ()
 Set all physicalNodes in m_DeteorsArray visible;.
void SetHalfVisible ()
 Set half visible;.
void SetHalfVisible ()
 Set half visible;.
void SetHits ()
 Set all physicalNodes corresponding to digiCol;.
void SetHits ()
 Set all physicalNodes corresponding to digiCol;.
void SetNode ()
 Set the pointers to theirs nodes;.
void SetNode ()
 Set the pointers to theirs nodes;.
void SetNode ()
 Set the pointers to theirs nodes;.
void SetNode ()
 Set the pointers to theirs nodes;.
void SetNoEndVisible ()
 Set noend visible;.
void SetNoEndVisible ()
 Set noend visible;.
void SetPhysicalNode ()
 Set the pointers to the physical nodes;.
void SetPhysicalNode ()
 Set the pointers to the physical nodes;.
void SetPhysicalNode ()
 Set the pointers to the physical nodes;.
void SetPhysicalNode ()
 Set the pointers to the physical nodes;.
void SetQuarterVisible ()
 Set quater visible;.
void SetQuarterVisible ()
 Set quater visible;.
void SetQuarterVisible ()
 Set quater visible;.
void SetQuarterVisible ()
 Set quater visible;.
void SetVisEmcDetector ()
 Set Emc detector visibility;.
void SetVisEmcDetector ()
 Set Emc detector visibility;.
void SetVisEmcHits ()
 Set Emc hits visibility;.
void SetVisEmcHits ()
 Set Emc hits visibility;.
void SetVolumeAppendInVis ()
 Set default visual attributes;.
void SetVolumeAppendInVis ()
 Set default visual attributes;.
void SetVolumeDefaultVis ()
 Set default visual attributes;.
void SetVolumeDefaultVis ()
 Set default visual attributes;.
void SetVolumeEmc (TGeoVolume *vol)
 Set Emc volume, while initializing from ROOT;.
void SetVolumeEmc (TGeoVolume *vol)
 Set Emc volume, while initializing from ROOT;.
 ~EmcROOTGeo ()
 Destructor.
 ~EmcROOTGeo ()
 Destructor.
 ~EmcROOTGeo ()
 Destructor.
 ~EmcROOTGeo ()
 Destructor.

Protected Attributes

int m_2DGeoInit
TObjArray * m_2DHitsArray
TObjArray * m_2DHitsArray
int m_childNo
TObjArray * m_DetectorsArray
TObjArray * m_DetectorsArray
TObjArray * m_HitsArray
TObjArray * m_HitsArray
int m_ROOTGeoInit
TGeoVolume * m_TopVolume
TGeoVolume * m_TopVolume
TGeoVolume * m_TopVolume
TGeoVolume * m_TopVolume

Private Attributes

int m_brCrystalColor
int m_ecCrystalColor
TGeoVolume * m_Emc
TGeoVolume * m_Emc
TGeoVolume * m_Emc
TGeoVolume * m_Emc
Emc2DCrystalm_Emc2DCrystal [m_kPart][m_kPhiBr][m_kThetaBr]
Emc2DCrystalm_Emc2DCrystal [m_kPart][m_kPhiBr][m_kThetaBr]
int m_EmcColor
const TObjArray * m_EmcDigiCol
const TObjArray * m_EmcDigiCol
int m_kNbEc
int m_kPhiEc
int m_kRealNbEc
int m_kSectorEc
int m_kThetaEc
TGeoNode * m_NodePart [m_kPart]
TGeoNode * m_NodePart [m_kPart]
TGeoNode * m_NodePhi [m_kPart][m_kPhiBr]
TGeoNode * m_NodePhi [m_kPart][m_kPhiBr]
TGeoNode * m_NodeTheta [m_kPart][m_kPhiBr][m_kThetaBr]
TGeoNode * m_NodeTheta [m_kPart][m_kPhiBr][m_kThetaBr]
TGeoNode * m_NodeTheta [m_kPart][m_kPhiBr][m_kThetaBr]
TGeoNode * m_NodeTheta [m_kPart][m_kPhiBr][m_kThetaBr]
TGeoNode * m_NodeTheta2 [m_kPart][m_kPhiBr][m_kThetaBr]
TGeoNode * m_NodeTheta2 [m_kPart][m_kPhiBr][m_kThetaBr]
int m_partColor
int m_phiColor
TObjArray * m_PhyNodeOrgArray
TObjArray * m_PhyNodeOrgArray
TGeoPhysicalNode * m_PhysicalCrystal [m_kPart][m_kPhiBr][m_kThetaBr]
TGeoPhysicalNode * m_PhysicalCrystal [m_kPart][m_kPhiBr][m_kThetaBr]
TGeoPhysicalNode * m_PhysicalCrystal [m_kPart][m_kPhiBr][m_kThetaBr]
TGeoPhysicalNode * m_PhysicalCrystal [m_kPart][m_kPhiBr][m_kThetaBr]
TGeoPhysicalNode * m_PhysicalCrystal2 [m_kPart][m_kPhiBr][m_kThetaBr]
TGeoPhysicalNode * m_PhysicalCrystal2 [m_kPart][m_kPhiBr][m_kThetaBr]
int m_thetaColor

Static Private Attributes

const int EMC_CHARGE_FACTOR = 1000
const int EMC_TIME_FACTOR = 1
const int m_kPart = 3
const int m_kPhiBr = 120
const int m_kThetaBr = 44

Detailed Description

Class EmcGeo contains all of the objects necessary to describe the emc geometry.

Author:
Zhengyun You {mailto:youzy@hep.pku.cn}


Constructor & Destructor Documentation

EmcROOTGeo::EmcROOTGeo  ) 
 

Constructor.

00029 { 
00030   // Default constructor.
00031   m_kPhiEc   = 16;
00032   m_kThetaEc = 35;
00033   
00034   for (int part = 0; part < m_kPart; part++) {
00035     for (int phi = 0; phi < m_kPhiBr; phi++) {
00036       for (int theta = 0; theta < m_kThetaBr; theta++) {
00037         m_NodeTheta[part][phi][theta] = 0;
00038         m_PhysicalCrystal[part][phi][theta] = 0;
00039       }
00040     }
00041   }
00042 
00043   string GdmlManagementPath = getenv("GDMLMANAGEMENTROOT");
00044   if (GdmlManagementPath == "") cout << "EmcROOTGeo::GdmlManagementPath not set!" << endl;
00045   string GdmlFile = GdmlManagementPath + string("/dat/Emc.gdml");
00046   cout << "Construct Emc from GdmlFile " << GdmlFile << endl;
00047   InitFromGdml( GdmlFile.c_str(), "Emc" );
00048 }

EmcROOTGeo::~EmcROOTGeo  ) 
 

Destructor.

00051 { }

EmcROOTGeo::EmcROOTGeo  ) 
 

Constructor.

EmcROOTGeo::~EmcROOTGeo  ) 
 

Destructor.

EmcROOTGeo::EmcROOTGeo  ) 
 

Constructor.

EmcROOTGeo::~EmcROOTGeo  ) 
 

Destructor.

EmcROOTGeo::EmcROOTGeo  ) 
 

Constructor.

EmcROOTGeo::~EmcROOTGeo  ) 
 

Destructor.


Member Function Documentation

void EmcROOTGeo::Align TGeoPhysicalNode *  phyNode,
TGeoMatrix *  newmat = 0,
TGeoShape *  newshape = 0,
Bool_t  check = kFALSE
 

Align a physical node, change its position and shape.

void EmcROOTGeo::Align TGeoPhysicalNode *  phyNode,
TGeoMatrix *  newmat = 0,
TGeoShape *  newshape = 0,
Bool_t  check = kFALSE
 

Align a physical node, change its position and shape.

01412 {
01413     //phyNode->Align(newmat, newshape, check);
01414 
01415     if (!newmat && !newshape) return;
01416     TGeoNode *node = phyNode->GetNode();
01417 
01418     Int_t fLevel=phyNode->GetLevel();
01419     TGeoNode *nnode = 0;
01420     TGeoVolume *vm = phyNode->GetVolume(fLevel-2);   
01421     // fLevel-2 is good for Emc geometry, use fLevel-1 if I want to use it in TofROOTGeo
01422     TGeoVolume *vd = 0;
01423 
01424     TGeoNode *nodeArray[30];
01425     TString orgName = phyNode->GetName();
01426     Int_t i,id;
01427     if (!phyNode->IsAligned()) {
01428         for (i=0; i<=fLevel-2; i++) {
01429             nodeArray[i] = phyNode->GetNode(i);
01430         }
01431 
01432         // fLevel-2 is good for Emc geometry, 
01433         // in ROOT::TGeoPhysicalNode::Align, 
01434         // it starts from 0, so some nodes were lost.
01435         for (i=fLevel-2; i<fLevel; i++) {
01436             // Get daughter node and its id inside vm
01437             node = phyNode->GetNode(i+1);
01438             id = vm->GetIndex(node);
01439 
01440             if (id < 0) {
01441                 //printf("cannot align node %s",phyNode->GetNode(i+1)->GetName());
01442                 return;
01443             }
01444             // Clone daughter volume and node
01445             vd = node->GetVolume()->CloneVolume();
01446             nnode = node->MakeCopyNode();
01447             // Correct pointers to mother and volume
01448             nnode->SetName(node->GetName());
01449             nnode->SetVolume(vd);
01450             nnode->SetMotherVolume(vm);
01451             // Decouple old node from mother volume and connect new one
01452             vm->GetNodes()->RemoveAt(id);
01453             vm->GetNodes()->AddAt(nnode,id);
01454             nodeArray[i+1] = nnode;
01455             vm = vd;
01456         }
01457     } else {
01458         nnode = phyNode->GetNode();
01459     }
01460 
01461     TString name;
01462     for (Int_t j = 0; j < phyNode->GetLevel()+1; j++) {
01463         name += "/";
01464         name += nodeArray[j]->GetName();
01465     }
01466     phyNode->SetPath(name);
01467 
01468     // Now nnode is a cloned node of the one that need to be aligned
01469     TGeoNodeMatrix *aligned = (TGeoNodeMatrix*)nnode;
01470     vm = nnode->GetMotherVolume();
01471     vd = nnode->GetVolume();
01472     if (newmat) {
01473         // Register matrix and make it the active one
01474         if (!newmat->IsRegistered()) newmat->RegisterYourself();
01475         aligned->SetMatrix(newmat);
01476         // Update the global matrix for the aligned node
01477         TGeoHMatrix *global = phyNode->GetMatrix();
01478         TGeoHMatrix *up = phyNode->GetMatrix(fLevel-1);
01479         *global = up;
01480         global->Multiply(newmat);
01481     }
01482     // Change the shape for the aligned node
01483     if (newshape) vd->SetShape(newshape);
01484     // Now we have to re-voxelize the mother volume
01485     vm->SetVoxelFinder(0);
01486     vm->Voxelize("ALL");
01487     vm->FindOverlaps();
01488     // Eventually check for overlaps
01489     if (check) vm->CheckOverlaps();
01490     //phyNode->SetAligned(kTRUE);
01491 }

int EmcROOTGeo::ComputeEndCopyNb int  num  ) 
 

Compute copyNb, copyNb 5,6,14,15,16 corresponding to two volume.

int EmcROOTGeo::ComputeEndCopyNb int  num  ) 
 

Compute copyNb, copyNb 5,6,14,15,16 corresponding to two volume.

01266 {
01267     int copyNb;
01268     switch (num){
01269     case 30:
01270         copyNb = 5;
01271         break;
01272     case 31:
01273         copyNb = 6;
01274         break;
01275     case 32:
01276         copyNb = 14;
01277         break;
01278     case 33:
01279         copyNb = 15;
01280         break;
01281     case 34:
01282         copyNb = 16;
01283         break;
01284     default:
01285         copyNb = num;
01286         break;
01287     }
01288     return copyNb;
01289 }

void EmcROOTGeo::ComputeThetaPhi int  id,
int  sector,
int  nb,
int &  CryNumberTheta,
int &  CryNumberPhi
 

Compute theta, phi from sector, nb.

void EmcROOTGeo::ComputeThetaPhi int  id,
int  sector,
int  nb,
int &  CryNumberTheta,
int &  CryNumberPhi
 

Compute theta, phi from sector, nb.

01149 {
01150     if ((sector>=0)&&(sector<3))
01151         sector+=16;
01152     if ((sector!=7)&&(sector!=15))
01153     {
01154         if ((nb>=0)&&(nb<4))
01155         {
01156             CryNumberTheta = 0;
01157             CryNumberPhi = (sector-3)*4+nb;
01158         }
01159         else if ((nb>=4)&&(nb<8))
01160         {
01161             CryNumberTheta = 1;
01162             CryNumberPhi = (sector-3)*4+nb-4;
01163         }
01164         else if ((nb>=8)&&(nb<13))
01165         {
01166             CryNumberTheta = 2;
01167             CryNumberPhi = (sector-3)*5+nb-8;
01168         }
01169         else if ((nb>=13)&&(nb<18))
01170         {
01171             CryNumberTheta = 3;
01172             CryNumberPhi = (sector-3)*5+nb-13;
01173         }
01174         else if ((nb>=18)&&(nb<24))
01175         {
01176             CryNumberTheta = 4;
01177             CryNumberPhi = (sector-3)*6+nb-18;
01178         }
01179         else if ((nb>=24)&&(nb<30))
01180         {
01181             CryNumberTheta = 5;
01182             CryNumberPhi = (sector-3)*6+nb-24;
01183         }
01184     }
01185     else// if((sector=7)||(sector==15))
01186     {
01187         if ((nb>=0)&&(nb<4))
01188         {
01189             CryNumberTheta = 0;
01190             CryNumberPhi = (sector-3)*4+3-nb;
01191         }
01192         else if ((nb>=4)&&(nb<8))
01193         {
01194             CryNumberTheta = 1;
01195             CryNumberPhi = (sector-3)*4+7-nb;
01196         }
01197         else if ((nb>=8)&&(nb<13))
01198         {
01199             CryNumberTheta = 2;
01200             CryNumberPhi = (sector-3)*5+12-nb;
01201         }
01202         else if ((nb>=13)&&(nb<18))
01203         {
01204             CryNumberTheta = 3;
01205             CryNumberPhi = (sector-3)*5+17-nb;
01206         }
01207         else if ((nb>=18)&&(nb<24))
01208         {
01209             CryNumberTheta = 4;
01210             CryNumberPhi = (sector-3)*6+23-nb;
01211         }
01212         else if ((nb>=24)&&(nb<30))
01213         {
01214             CryNumberTheta = 5;
01215             CryNumberPhi = (sector-3)*6+29-nb;
01216         }
01217     }
01218 
01219     if (id==2)
01220     {
01221         switch (CryNumberTheta)
01222         {
01223         case 0:
01224             if (CryNumberPhi<32)
01225                 CryNumberPhi = 31-CryNumberPhi;
01226             else
01227                 CryNumberPhi = 95-CryNumberPhi;
01228             break;
01229         case 1:
01230             if (CryNumberPhi<32)
01231                 CryNumberPhi = 31-CryNumberPhi;
01232             else
01233                 CryNumberPhi = 95-CryNumberPhi;
01234             break;
01235         case 2:
01236             if (CryNumberPhi<40)
01237                 CryNumberPhi = 39-CryNumberPhi;
01238             else
01239                 CryNumberPhi = 119-CryNumberPhi;
01240             break;
01241         case 3:
01242             if (CryNumberPhi<40)
01243                 CryNumberPhi = 39-CryNumberPhi;
01244             else
01245                 CryNumberPhi = 119-CryNumberPhi;
01246             break;
01247         case 4:
01248             if (CryNumberPhi<48)
01249                 CryNumberPhi = 47-CryNumberPhi;
01250             else
01251                 CryNumberPhi = 143-CryNumberPhi;
01252             break;
01253         case 5:
01254             if (CryNumberPhi<48)
01255                 CryNumberPhi = 47-CryNumberPhi;
01256             else
01257                 CryNumberPhi = 143-CryNumberPhi;
01258         default:
01259             ;
01260         }
01261     }
01262 }

void EmcROOTGeo::Draw Option_t *  option  ) 
 

Draw function.

void EmcROOTGeo::Draw Option_t *  option  ) 
 

Draw function.

01322 {
01323     TString opt = option;
01324     opt.ToUpper();
01325 
01326     if (!m_2DGeoInit) cout << "EmcROOTGeo::Draw2D(), 2D Geometry not initialized!" << endl;
01327     BesView *view = (BesView*)gPad->GetView();
01328     if (!view) cout << "EmcROOTGeo::Draw(), BesView not found" << endl;
01329 
01330     if (view->GetVisEmcGlobal()) { // EmcVisGlobal
01331         TString crystalOpt;
01332 
01333         //if (opt.Contains("XY")) {
01334         // west part drawn first usually
01335         for (Int_t part = GetPartNb()-1; part >= 0; part--) {
01336             for (int theta = 0; theta < GetThetaNb(part); theta++) {
01337                 for (int phi = 0; phi < GetPhiNb(part, theta); phi++) {
01338 
01339                     if (m_Emc2DCrystal[part][phi][theta]) {
01340                         //cout << "part " << part << " layer " << layer << " crystal " << crystal << endl;
01341                         m_Emc2DCrystal[part][phi][theta]->SetFired(false);
01342                         if ( (part == 0 && view->GetVisEmcEast())   ||
01343                                 (part == 1 && view->GetVisEmcBarrel()) ||
01344                                 (part == 2 && view->GetVisEmcWest()) )
01345                             m_Emc2DCrystal[part][phi][theta]->Draw(crystalOpt);
01346                     }
01347                 }
01348             }
01349         }
01350     }
01351 }

void EmcROOTGeo::DrawHits Option_t *  option  ) 
 

Draw 2D hits.

void EmcROOTGeo::DrawHits Option_t *  option  ) 
 

Draw 2D hits.

01355 {
01356     // cout << "EmcROOTGeo::DrawHits" << endl;
01357     BesView *view = (BesView*)gPad->GetView();
01358     if (!view) cout << "EmcROOTGeo::DrawHits(), BesView not found" << endl;
01359 
01360     //cout << "VisEmcHitsGlobal " << view->GetVisEmcHitsGlobal() << endl;
01361     //cout << "VisEmcHitsEast   " << view->GetVisEmcHitsEast()   << endl;
01362     //cout << "VisEmcHitsBarrel " << view->GetVisEmcHitsBarrel() << endl;
01363     //cout << "VisEmcHitsWest   " << view->GetVisEmcHitsWest()   << endl;
01364 
01365     if (view->GetVisEmcHitsGlobal()) {
01366 
01367         // reset time and charge to zero
01368         for (Int_t part = GetPartNb()-1; part >= 0; part--) {
01369             for (int theta = 0; theta < GetThetaNb(part); theta++) {
01370                 for (int phi = 0; phi < GetPhiNb(part, theta); phi++) {
01371                     if (m_Emc2DCrystal[part][phi][theta]) {
01372                         m_Emc2DCrystal[part][phi][theta]->ResetTimeCharge();
01373                         //m_Emc2DCrystal[part][phi][theta]->ClearInfo();
01374                     }
01375                 }
01376             }
01377         }
01378 
01379         if (m_EmcDigiCol) {
01380             for (int i = 0; i < m_EmcDigiCol->GetEntries(); i++) {
01381                 TEmcDigi *aEmcDigi = (TEmcDigi*)m_EmcDigiCol->At(i);
01382 
01383                 //cout << aEmcDigi->getIntId() << endl;
01384                 Identifier aEmcID( aEmcDigi->getIntId() );
01385                 int part  = EmcID::barrel_ec( aEmcID );
01386                 int theta = EmcID::theta_module( aEmcID );
01387                 int phi   = EmcID::phi_module( aEmcID );
01388 
01389                 Emc2DCrystal *aCrystal = 0;
01390                 aCrystal = m_Emc2DCrystal[part][phi][theta];
01391 
01392                 //Double_t charge = Double_t(aEmcDigi->getChargeChannel())  / EMC_CHARGE_FACTOR;
01393                 Double_t charge = RawDataUtil::EmcCharge(aEmcDigi->getMeasure(),
01394                                   aEmcDigi->getChargeChannel());
01395                 aCrystal->SetCharge(charge);
01396                 //cout << "charge " << aCrystal->GetCharge() << endl;
01397 
01398                 if (aCrystal&&charge > 5) {
01399                     if ( (part == 0 && view->GetVisEmcHitsEast())   ||
01400                             (part == 1 && view->GetVisEmcHitsBarrel()) ||
01401                             (part == 2 && view->GetVisEmcHitsWest()) ) {
01402                         aCrystal->SetFired(true);
01403                         aCrystal->Draw();
01404                     }
01405                 }
01406             }
01407         }
01408     }
01409 }

Emc2DCrystal* EmcROOTGeo::Get2DCrystal Int_t  part,
Int_t  phi,
Int_t  theta
 

Get Emc2DCrystal;.

Emc2DCrystal * EmcROOTGeo::Get2DCrystal Int_t  part,
Int_t  phi,
Int_t  theta
 

Get Emc2DCrystal;.

01293 {
01294     if (m_Emc2DCrystal[part][phi][theta]) return m_Emc2DCrystal[part][phi][theta];
01295     else return 0;
01296 }

TGeoVolumeAssembly* SubDetectorROOTGeo::GetAssemblyVolume const std::string &  an  )  [inherited]
 

Get an assembly by name;.

virtual TGeoVolumeAssembly* SubDetectorROOTGeo::GetAssemblyVolume const std::string &  an  )  [virtual, inherited]
 

Get an assembly by name;.

virtual TGeoVolumeAssembly* SubDetectorROOTGeo::GetAssemblyVolume const std::string &  an  )  [virtual, inherited]
 

Get an assembly by name;.

TGeoVolumeAssembly * SubDetectorROOTGeo::GetAssemblyVolume const std::string &  an  )  [inherited]
 

Get an assembly by name;.

00053 {
00054   TGeoVolumeAssembly *av = (TGeoVolumeAssembly*)TGDMLProcessor::GetInstance()->GetAssemblyVolume(an);
00055   if (!av) std::cout << "Assembly Volume " << an << " not found " << std::endl;
00056   return av;
00057 }

TGeoNode* EmcROOTGeo::GetCrystal int  part,
int  phi,
int  theta
 

Get crystal one;.

TGeoNode* EmcROOTGeo::GetCrystal int  part,
int  phi,
int  theta
 

Get crystal one;.

TGeoNode* EmcROOTGeo::GetCrystal int  part,
int  phi,
int  theta
 

Get crystal one;.

TGeoNode * EmcROOTGeo::GetCrystal int  part,
int  phi,
int  theta
 

Get crystal one;.

00466 {
00467   // in fact, br only 44 crystal nodes;
00468   return GetTheta(part, phi, theta)->GetDaughter(0);
00469 }

TGeoNode* EmcROOTGeo::GetCrystal2 int  part,
int  phi,
int  theta
 

Get crystal2 one;.

TGeoNode * EmcROOTGeo::GetCrystal2 int  part,
int  phi,
int  theta
 

Get crystal2 one;.

01115 {
01116     // in fact, br only 44 crystal nodes;
01117     if (GetTheta2(part, phi, theta) == 0) return 0;
01118     else return GetTheta2(part, phi, theta)->GetDaughter(0);
01119 }

virtual TGeoPhysicalNode* SubDetectorROOTGeo::GetHit int  i  )  [virtual, inherited]
 

Get ith hit in HitsArray;.

TGeoPhysicalNode * SubDetectorROOTGeo::GetHit int  i  )  [virtual, inherited]
 

Get ith hit in HitsArray;.

00066 {
00067     if (i < m_HitsArray->GetEntries())
00068         return (TGeoPhysicalNode*)m_HitsArray->At(i);
00069     else
00070         return 0;
00071 }

virtual int SubDetectorROOTGeo::GetHitsNum  )  [inline, virtual, inherited]
 

Get number of hits in HitsArray;.

00061 { return m_HitsArray->GetEntries(); }

virtual int SubDetectorROOTGeo::GetHitsNum  )  [inline, virtual, inherited]
 

Get number of hits in HitsArray;.

00061 { return m_HitsArray->GetEntries(); }

TGeoVolume* SubDetectorROOTGeo::GetLogicalVolume const std::string &  vn  )  [inherited]
 

Get a logical volume by name;.

virtual TGeoVolume* SubDetectorROOTGeo::GetLogicalVolume const std::string &  vn  )  [virtual, inherited]
 

Get a logical volume by name;.

virtual TGeoVolume* SubDetectorROOTGeo::GetLogicalVolume const std::string &  vn  )  [virtual, inherited]
 

Get a logical volume by name;.

TGeoVolume * SubDetectorROOTGeo::GetLogicalVolume const std::string &  vn  )  [inherited]
 

Get a logical volume by name;.

00046 {
00047   TGeoVolume *lv = (TGeoVolume*)TGDMLProcessor::GetInstance()->GetLogicalVolume(vn);
00048   if (!lv) std::cout << "Logical Volume " << vn << " not found " << std::endl;
00049   return lv;
00050 }

TGeoNode* SubDetectorROOTGeo::GetNode const std::string &  nn  )  [inherited]
 

Get a node(physical volume) by name;.

virtual TGeoNode* SubDetectorROOTGeo::GetNode const std::string &  nn  )  [virtual, inherited]
 

Get a node(physical volume) by name;.

virtual TGeoNode* SubDetectorROOTGeo::GetNode const std::string &  nn  )  [virtual, inherited]
 

Get a node(physical volume) by name;.

TGeoNode * SubDetectorROOTGeo::GetNode const std::string &  nn  )  [inherited]
 

Get a node(physical volume) by name;.

00060 {
00061   TGeoNode *node = (TGeoNode*)TGDMLProcessor::GetInstance()->GetPhysicalVolume(nn);
00062   if (!node) std::cout << "Physical Volume " << nn << " not found " << std::endl;
00063   return node;
00064 }

TGeoNode* EmcROOTGeo::GetPart int  part  ) 
 

Get part node;.

Int_t EmcROOTGeo::GetPart TGeoPhysicalNode *  phyNode  ) 
 

Get part no of a crystal physcial node.

TGeoNode* EmcROOTGeo::GetPart int  part  ) 
 

Get part node;.

int EmcROOTGeo::GetPart TGeoPhysicalNode *  phyNode  ) 
 

Get part no of a crystal physcial node.

01300 {
01301     for (int part = 0; part < GetPartNb(); part++) {
01302         for (int theta = 0; theta < GetThetaNb(part); theta++) {
01303             for (int phi = 0; phi < GetPhiNb(part, theta); phi++) {
01304                 if (phyNode == GetPhysicalCrystal(part, phi, theta)) {
01305                     //cout << "EmcROOTGeo::GetPart()" << part << endl;
01306                     return part;
01307                 }
01308                 if (phyNode == GetPhysicalCrystal2(part, phi, theta)) {
01309                     //cout << "EmcROOTGeo::GetPart()" << part << endl;
01310                     return part;
01311                 }
01312             }
01313         }
01314     }
01315 
01316     cout << "EmcROOTGeo::GetPart, this crystal physical node does not exist!" << endl;
01317     return -1;
01318 }

TGeoNode* EmcROOTGeo::GetPart int  part  ) 
 

Get part node;.

TGeoNode * EmcROOTGeo::GetPart int  part  ) 
 

Get part node;.

00416 {
00417   std::stringstream osname;
00418   if(part==1) {
00419     osname << "pv_logicalBSCWorld_2";
00420   } else {
00421     osname << "pv_logicalEndWorld_" << 1-part/2;
00422   }
00423   //osname << "pv_" << "logical" << "Emc" << "Part" << (part == 2 ? (part -2) : part) << "_" << part; 
00424   
00425   return GetNode( osname.str() );
00426 }

int EmcROOTGeo::GetPartNb  ) 
 

Get number of part;.

int EmcROOTGeo::GetPartNb  ) 
 

Get number of part;.

int EmcROOTGeo::GetPartNb  ) 
 

Get number of part;.

int EmcROOTGeo::GetPartNb  ) 
 

Get number of part;.

00317 {
00318   int part = m_kPart;
00319 
00320   return part;
00321 }

TGeoNode* EmcROOTGeo::GetPhi int  part,
int  phi
 

Get phi node;.

TGeoNode* EmcROOTGeo::GetPhi int  part,
int  phi
 

Get phi node;.

TGeoNode* EmcROOTGeo::GetPhi int  part,
int  phi
 

Get phi node;.

TGeoNode * EmcROOTGeo::GetPhi int  part,
int  phi
 

Get phi node;.

00430 {
00431   int phiNb = -1;
00432   std::stringstream osname;
00433   if(part==1) { //barrel
00434     phiNb = 308-phi;
00435     osname << "pv_logicalBSCPhi_" << phiNb;
00436   } else {  //endcap
00437     if(phi>=0&&phi<6) {
00438       osname << "pv_logicalEndPhi0_" << 15-phi;
00439     } else if(phi>=8&&phi<14) {
00440       osname << "pv_logicalEndPhi0_" << 17-phi;
00441     } else if(phi==6||phi==14) {
00442       osname << "pv_logicalEndPhi1_" << (30-phi)/8;
00443     } else if(phi==7||phi==15) {
00444       osname << "pv_logicalEndPhi2_" << (15-phi)/8;
00445     }
00446   }
00447   //osname << "pv_" << "logical" << "Emc" << "Part" << (part == 2 ? (part -2) : part) << "Phi" << phi << "_" << phi; 
00448   
00449   return GetNode( osname.str() );
00450 }

int EmcROOTGeo::GetPhiNb int  part  ) 
 

Get number of phi on part;.

int EmcROOTGeo::GetPhiNb int  part,
int  theta
 

Get number of phi on part;.

int EmcROOTGeo::GetPhiNb int  part,
int  theta
 

Get number of phi on part;.

00929 {
00930     int phiNb = m_kPhiBr;
00931     if (part != 1) {
00932         if (theta < 2) phiNb = 4*m_kSectorEc;
00933         else if (theta >= 2 && theta < 4) phiNb = 5*m_kSectorEc;
00934         else if (theta >= 4 && theta < m_kThetaEc) phiNb = 6*m_kSectorEc;
00935     }
00936 
00937     return phiNb;
00938 }

int EmcROOTGeo::GetPhiNb int  part  ) 
 

Get number of phi on part;.

00334 {
00335   int phiNb = m_kPhiBr;
00336   if (part != 1) phiNb = m_kPhiEc;
00337 
00338   return phiNb;
00339 }

TGeoPhysicalNode* EmcROOTGeo::GetPhysicalCrystal int  part,
int  phi,
int  theta
 

Get crystal physical node;.

TGeoPhysicalNode* EmcROOTGeo::GetPhysicalCrystal int  part,
int  phi,
int  theta
 

Get crystal physical node; all part,phi,theta has a physicalNode.

TGeoPhysicalNode* EmcROOTGeo::GetPhysicalCrystal int  part,
int  phi,
int  theta
 

Get crystal physical node; all part,phi,theta has a physicalNode.

TGeoPhysicalNode * EmcROOTGeo::GetPhysicalCrystal int  part,
int  phi,
int  theta
 

Get crystal physical node;.

00473 {
00474   if (m_PhysicalCrystal[part][phi][theta] != 0) {
00475     return m_PhysicalCrystal[part][phi][theta];
00476   }
00477   else {
00478     std::cout << "PhysicalNode: " << "Part" << part << "Phi" << phi << "Theta" << theta << " not found" << std::endl;
00479     return 0;
00480   } 
00481 }

TGeoPhysicalNode* EmcROOTGeo::GetPhysicalCrystal2 int  part,
int  phi,
int  theta
 

Get crystal physical node2; EC nb 5,6,14,15,16 in any sector has two physicalNode.

TGeoPhysicalNode * EmcROOTGeo::GetPhysicalCrystal2 int  part,
int  phi,
int  theta
 

Get crystal physical node2; EC nb 5,6,14,15,16 in any sector has two physicalNode.

01135 {
01136     return m_PhysicalCrystal2[part][phi][theta];
01137 }

TGeoNode* EmcROOTGeo::GetTheta int  part,
int  phi,
int  theta
 

Get theta node;.

TGeoNode* EmcROOTGeo::GetTheta int  part,
int  phi,
int  theta
 

Get theta node;.

TGeoNode* EmcROOTGeo::GetTheta int  part,
int  phi,
int  theta
 

Get theta node;.

TGeoNode * EmcROOTGeo::GetTheta int  part,
int  phi,
int  theta
 

Get theta node;.

00454 {
00455   if (m_NodeTheta[part][phi][theta] != 0) {
00456     return m_NodeTheta[part][phi][theta];
00457   }
00458   else {
00459     std::cout << "Node: " << "Part" << part << "Phi" << phi << "Theta" << theta << " not found" << std::endl;
00460     return 0;
00461   } 
00462 }

TGeoNode* EmcROOTGeo::GetTheta2 int  part,
int  phi,
int  theta
 

Get theta2 node;.

TGeoNode * EmcROOTGeo::GetTheta2 int  part,
int  phi,
int  theta
 

Get theta2 node;.

01097 {
01098     if (m_NodeTheta2[part][phi][theta] != 0) {
01099         return m_NodeTheta2[part][phi][theta];
01100     }
01101     else {
01102         return 0;
01103     }
01104 }

int EmcROOTGeo::GetThetaNb int  part  ) 
 

Get number of theta on part;.

int EmcROOTGeo::GetThetaNb int  part  ) 
 

Get number of theta on part;.

int EmcROOTGeo::GetThetaNb int  part  ) 
 

Get number of theta on part;.

int EmcROOTGeo::GetThetaNb int  part  ) 
 

Get number of theta on part;.

00325 {
00326   int thetaNb = m_kThetaBr;
00327   if (part != 1) thetaNb = m_kThetaEc;
00328   
00329   return thetaNb;;
00330 }

TGeoVolume* SubDetectorROOTGeo::GetTopVolume  )  [inline, inherited]
 

Get the top(world) volume;.

00051 { return m_TopVolume; }

virtual TGeoVolume* SubDetectorROOTGeo::GetTopVolume  )  [inline, virtual, inherited]
 

Get the top(world) volume;.

00052 { return m_TopVolume; }

virtual TGeoVolume* SubDetectorROOTGeo::GetTopVolume  )  [inline, virtual, inherited]
 

Get the top(world) volume;.

00052 { return m_TopVolume; }

TGeoVolume* SubDetectorROOTGeo::GetTopVolume  )  [inline, inherited]
 

Get the top(world) volume;.

00051 { return m_TopVolume; }

TGeoVolume* EmcROOTGeo::GetVolumeCrystal int  part,
int  phi,
int  theta
 

Get crystal volume;.

TGeoVolume* EmcROOTGeo::GetVolumeCrystal int  part,
int  phi,
int  theta
 

Get crystal volume;.

TGeoVolume* EmcROOTGeo::GetVolumeCrystal int  part,
int  phi,
int  theta
 

Get crystal volume;.

TGeoVolume * EmcROOTGeo::GetVolumeCrystal int  part,
int  phi,
int  theta
 

Get crystal volume;.

00395 {
00396   // part0phi0theta0-34, part0phi6theta0-34, part0phi8theta0-34, part0phi7theta0-34
00397   // part1theta0-43
00398   std::stringstream osname;
00399   if (part == 1 && theta >= 0 && theta < 44) {
00400     osname << "logical" << "Emc" << "Part" << part << "Theta" << theta << "Crystal";
00401     return GetLogicalVolume( osname.str() );
00402   }
00403   else if ( part == 0 && theta >= 0 && theta < 35 &&
00404             (phi == 0 || phi == 6 || phi == 8 || phi == 7) ) {
00405     osname << "logical" << "Emc" << "Part" << part << "Phi" << phi << "Theta" << theta << "Crystal";
00406     return GetLogicalVolume( osname.str() );
00407   }
00408   else {
00409     std::cout << "No volume " << osname.str() << std::endl;
00410     return 0;
00411   }
00412 }

TGeoVolume* EmcROOTGeo::GetVolumeEmc  )  [inline]
 

Get Emc volume;.

00068 { return m_Emc; }

TGeoVolume* EmcROOTGeo::GetVolumeEmc  )  [inline]
 

Get Emc volume;.

00103 { return m_Emc; }

TGeoVolume* EmcROOTGeo::GetVolumeEmc  )  [inline]
 

Get Emc volume;.

00103 { return m_Emc; }

TGeoVolume* EmcROOTGeo::GetVolumeEmc  )  [inline]
 

Get Emc volume;.

00068 { return m_Emc; }

TGeoVolume* EmcROOTGeo::GetVolumePart int  part  ) 
 

Get part volume;.

TGeoVolume* EmcROOTGeo::GetVolumePart int  part  ) 
 

Get part volume;.

TGeoVolume* EmcROOTGeo::GetVolumePart int  part  ) 
 

Get part volume;.

TGeoVolume * EmcROOTGeo::GetVolumePart int  part  ) 
 

Get part volume;.

00343 {
00344   // only part0 and part1 logical volume.
00345   std::stringstream osname;
00346   osname << "logical" << "Emc" << "Part" << part;  
00347   if (part == 0 || part == 1) {
00348     return GetLogicalVolume( osname.str() );
00349   }
00350   else {
00351     std::cout << "No volume " << osname.str() << std::endl;
00352     return 0;
00353   }
00354 }

TGeoVolume* EmcROOTGeo::GetVolumePhi int  part,
int  phi
 

Get phi volume;.

TGeoVolume* EmcROOTGeo::GetVolumePhi int  part,
int  phi
 

Get phi volume;.

TGeoVolume* EmcROOTGeo::GetVolumePhi int  part,
int  phi
 

Get phi volume;.

TGeoVolume * EmcROOTGeo::GetVolumePhi int  part,
int  phi
 

Get phi volume;.

00358 {
00359   // only part0phi0-15, part1phi0-119
00360   std::stringstream osname;
00361   osname << "logical" << "Emc" << "Part" << part << "Phi" << phi;
00362   if ( (part == 0 && phi >= 0 && phi < 16) ||
00363        (part == 1 && phi >= 0 && phi < 120) ) {
00364     return GetLogicalVolume( osname.str() );
00365   }
00366   else {
00367     std::cout << "No volume " << osname.str() << std::endl;
00368     return 0;
00369   }
00370 }   

TGeoVolume* EmcROOTGeo::GetVolumeTheta int  part,
int  phi,
int  theta
 

Get theta volume;.

TGeoVolume* EmcROOTGeo::GetVolumeTheta int  part,
int  phi,
int  theta
 

Get theta volume;.

TGeoVolume* EmcROOTGeo::GetVolumeTheta int  part,
int  phi,
int  theta
 

Get theta volume;.

TGeoVolume * EmcROOTGeo::GetVolumeTheta int  part,
int  phi,
int  theta
 

Get theta volume;.

00374 {
00375   // part0phi0theta0-34, part0phi6theta0-34, part0phi8theta0-34, part0phi7theta0-34
00376   // part1theta0-43
00377   std::stringstream osname;
00378   if (part == 1 && theta >= 0 && theta < 44) {
00379     osname << "logical" << "Emc" << "Part" << part << "Theta" << theta;
00380     return GetLogicalVolume( osname.str() );
00381   }
00382   else if ( part == 0 && theta >= 0 && theta < 35 &&
00383             (phi == 0 || phi == 6 || phi == 8 || phi == 7) ) {
00384     osname << "logical" << "Emc" << "Part" << part << "Phi" << phi << "Theta" << theta;
00385     return GetLogicalVolume( osname.str() );
00386   }
00387   else {
00388     std::cout << "No volume " << osname.str() << std::endl;
00389     return 0;
00390   }
00391 }

bool EmcROOTGeo::HasTwoNodes int  part,
int  phi,
int  theta
 

Whether this id is combined of two nodes.

bool EmcROOTGeo::HasTwoNodes int  part,
int  phi,
int  theta
 

Whether this id is combined of two nodes.

01141 {
01142     if (part == 1) return false;
01143     else return true;
01144 }

void EmcROOTGeo::Init2DGeometry  ) 
 

Initialize 2D Geometry.

void EmcROOTGeo::Init2DGeometry  ) 
 

Initialize 2D Geometry.

00089 {
00090     if (m_ROOTGeoInit != 1 && m_ROOTGeoInit != 2) {
00091         cout << "EmcROOTGeo::Init2DGeometry, ROOT Geometry not Initialized yet!" << endl;
00092         return;
00093     }
00094     m_2DGeoInit = 1;
00095 
00096     Double_t local[3] = {0.0, 0.0, 0.0};
00097     Double_t master[3] = {0.0, 0.0, 0.0};
00098     //Int_t    nPoints = 8;
00099     //Double_t  P[300] = {0.0};
00100     //Double_t  center[3] = {0.0, 0.0, 0.0};
00101     TString  name;
00102     TString  title;
00103 
00104     // Emc crystals
00105     for (int part = 0; part < GetPartNb(); part++) {
00106         for (int theta = 0; theta < GetThetaNb(part); theta++) {
00107             for (int phi = 0; phi < GetPhiNb(part, theta); phi++) {
00108                 TGeoPhysicalNode *phyNode = 0;
00109                 phyNode = GetPhysicalCrystal(part, phi, theta);
00110                 if (part == 1) name = TString("Barrel");
00111                 else {
00112                     if (part == 0)      name = TString("EastEc");
00113                     else if (part == 2) name = TString("WestEc");
00114                 }
00115                 name = TString("Emc Part");
00116                 name += part;
00117                 name += " Theta";
00118                 if (part == 1) name += m_kThetaBr - 1 - theta;
00119                 else name += theta;
00120                 name += " Phi";
00121                 name += phi;
00122 
00123                 char data[100];
00124                 sprintf(data, "Emc part %i, #theta %i, #phi %i", part, theta, phi);
00125                 title = TString( data );
00126 
00127                 TGeoArb8 *crystalShape = (TGeoArb8*)phyNode->GetShape();
00128                 Double_t *localArb8Point, masterArb8Point[24*2];
00129                 localArb8Point = crystalShape->GetVertices();
00130                 for (Int_t i = 0; i < 8; i++) {
00131                     local[0] = localArb8Point[2*i];
00132                     local[1] = localArb8Point[2*i+1];
00133                     if (i < 4) local[2] = crystalShape->GetDz() * (-1.0);
00134                     else local[2] = crystalShape->GetDz();
00135 
00136                     phyNode->GetMatrix(-1*phyNode->GetLevel())->LocalToMaster(local, &master[0]);
00137                     // transform to top
00138                     for (Int_t j = 0; j < 3; j++) {
00139                         masterArb8Point[3*i+j] = master[j];
00140                     }
00141                 }
00142 
00143                 TGeoPhysicalNode *phyNode2 = 0;
00144                 phyNode2 = GetPhysicalCrystal2(part, phi, theta);
00145                 if (phyNode2 != 0) {
00146                     crystalShape = (TGeoArb8*)phyNode2->GetShape();
00147                     localArb8Point = crystalShape->GetVertices();
00148                     for (Int_t i = 0; i < 8; i++) {
00149                         local[0] = localArb8Point[2*i];
00150                         local[1] = localArb8Point[2*i+1];
00151                         if (i < 4) local[2] = crystalShape->GetDz() * (-1.0);
00152                         else local[2] = crystalShape->GetDz();
00153                         phyNode2->GetMatrix(-1*phyNode->GetLevel())
00154                         ->LocalToMaster(local, &master[0]); // transform to top
00155                         for (Int_t j = 0; j < 3; j++) {
00156                             masterArb8Point[24+3*i+j] = master[j];
00157                         }
00158                     }
00159                 }
00160 
00161                 if (phyNode2 == 0)
00162                     m_Emc2DCrystal[part][phi][theta] =
00163                         new Emc2DCrystal(name, title, 8, &masterArb8Point[0], part, theta);
00164                 else
00165                     m_Emc2DCrystal[part][phi][theta] =
00166                         new Emc2DCrystal(name, title, 16, &masterArb8Point[0], part, theta);
00167             }
00168         }
00169     }
00170 }

void EmcROOTGeo::InitFromGdml const char *  gdmlFile,
const char *  setupName
 

Initialize the instance of ROOTGeo.

void EmcROOTGeo::InitFromGDML const char *  gdmlFile,
const char *  setupName
 

Initialize ROOTGeo from GDML.

void EmcROOTGeo::InitFromGDML const char *  gdmlFile,
const char *  setupName
 

Initialize ROOTGeo from GDML.

00071 {
00072     m_ROOTGeoInit = 2;
00073 
00074     ReadGdml(gdmlFile, setupName);
00075     SetNode();
00076 }

void EmcROOTGeo::InitFromGdml const char *  gdmlFile,
const char *  setupName
 

Initialize the instance of ROOTGeo.

00055 {
00056   ReadGdml(gdmlFile, setupName);
00057   SetNode();
00058   //SetDefaultVis();
00059 
00060   m_ROOTGeoInit = 1;  
00061 }

void EmcROOTGeo::InitFromROOT TGeoVolume *  vol  ) 
 

Initialize ROOTGeo from TGeoVolume logicalEmc.

void EmcROOTGeo::InitFromROOT TGeoVolume *  vol  ) 
 

Initialize ROOTGeo from TGeoVolume logicalEmc.

00080 {
00081     m_ROOTGeoInit = 1;
00082 
00083     SetVolumeEmc(vol);
00084     SetNode();
00085 }

int SubDetectorROOTGeo::IsInitialized  )  [inline, inherited]
 

If the ROOT geometry of this subdetctor is initialized;.

00042 { return m_ROOTGeoInit; }

virtual int SubDetectorROOTGeo::IsInitialized  )  [inline, virtual, inherited]
 

If the ROOT geometry of this subdetctor is initialized;.

00043 { return m_ROOTGeoInit; }

virtual int SubDetectorROOTGeo::IsInitialized  )  [inline, virtual, inherited]
 

If the ROOT geometry of this subdetctor is initialized;.

00043 { return m_ROOTGeoInit; }

int SubDetectorROOTGeo::IsInitialized  )  [inline, inherited]
 

If the ROOT geometry of this subdetctor is initialized;.

00042 { return m_ROOTGeoInit; }

void SubDetectorROOTGeo::ReadGdml const char *  gdmlFile,
const char *  setupName
[inherited]
 

Initialize the instance of ROOTGeo.

virtual void SubDetectorROOTGeo::ReadGdml const char *  gdmlFile,
const char *  setupName
[virtual, inherited]
 

Initialize the instance of ROOTGeo.

virtual void SubDetectorROOTGeo::ReadGdml const char *  gdmlFile,
const char *  setupName
[virtual, inherited]
 

Initialize the instance of ROOTGeo.

void SubDetectorROOTGeo::ReadGdml const char *  gdmlFile,
const char *  setupName
[inherited]
 

Initialize the instance of ROOTGeo.

00032 {
00033   m_config.SetURI( gdmlFile );
00034   m_config.SetSetupName( setupName );
00035   m_config.SetType ( "ROOT" );
00036   
00037   m_sxp.Configure( &m_config );
00038   m_sxp.Initialize();
00039   m_sxp.Run();
00040   
00041   m_TopVolume = (TGeoVolume*)TGDMLProcessor::GetInstance()->GetWorldVolume();
00042   if (!m_TopVolume) std::cout << "Top Volume not found " << std::endl;
00043 }

void EmcROOTGeo::RestorePhyNode TGeoPhysicalNode *  phyNode,
TGeoNode *  node
 

Restore the physical node to original shape.

void EmcROOTGeo::RestorePhyNode TGeoPhysicalNode *  phyNode,
TGeoNode *  node
 

Restore the physical node to original shape.

01494 {
01495     Align(phyNode, node->GetMatrix(), node->GetVolume()->GetShape());
01496 }

void EmcROOTGeo::SetAllVisible  ) 
 

Set all visible;.

void EmcROOTGeo::SetAllVisible  ) 
 

Set all visible;.

void EmcROOTGeo::SetAllVisible  ) 
 

Set all visible;.

void EmcROOTGeo::SetAllVisible  ) 
 

Set all visible;.

00167 {
00168   /*  for (int part = 0; part < m_kPart-1; part++) {
00169     int nPhi = (part == 1 ? m_kPhiBr : m_kPhiEc);
00170     for (int phi = 0; phi < nPhi; phi++) {
00171       GetVolumePhi(part, phi)->SetVisibility(1);
00172     }
00173     if (part == 1) {
00174       for (int theta = 0; theta < m_kThetaBr; theta++) {
00175         GetVolumeTheta(part, 0, theta)->SetVisibility(1);
00176         GetVolumeCrystal(part, 0, theta)->SetVisibility(0);
00177       }
00178     }
00179     else if (part == 0) {
00180       int iPhi[4] = {0,6,8,7};
00181       for (int i = 0; i < 4; i++) {
00182         int phi = iPhi[i];
00183         int nTheta = (part == 1 ? m_kThetaBr : m_kThetaEc);
00184         for (int theta = 0; theta < nTheta; theta++) {
00185           GetVolumeTheta(part, phi, theta)->SetVisibility(1);
00186           GetVolumeCrystal(part, phi, theta)->SetVisibility(0);
00187         }
00188       }
00189     }
00190   }
00191   */
00192 
00193   for (int part = 0; part < m_kPart; part++) {
00194     GetPart(part)->SetVisibility(0);
00195     int nPhi = (part == 1 ? m_kPhiBr : m_kPhiEc);
00196     for (int phi = 0; phi < nPhi; phi++) {
00197       GetPhi(part, phi)->SetVisibility(0);
00198       int nTheta = (part == 1 ? m_kThetaBr : m_kThetaEc);
00199       for (int theta = 0; theta < nTheta; theta++) {
00200         GetTheta(part, phi, theta)->SetVisibility(0);
00201         GetCrystal(part, phi, theta)->SetVisibility(1);
00202       }
00203     }
00204   }
00205 }

void SubDetectorROOTGeo::SetChildNo int  childNo  )  [inline, inherited]
 

00045 { m_childNo = childNo; }

virtual void SubDetectorROOTGeo::SetChildNo int  childNo  )  [inline, virtual, inherited]
 

00046 { m_childNo = childNo; }

virtual void SubDetectorROOTGeo::SetChildNo int  childNo  )  [inline, virtual, inherited]
 

00046 { m_childNo = childNo; }

void SubDetectorROOTGeo::SetChildNo int  childNo  )  [inline, inherited]
 

00045 { m_childNo = childNo; }

void EmcROOTGeo::SetDefaultVis  ) 
 

Set default visual attributes;.

void EmcROOTGeo::SetDefaultVis  ) 
 

Set default visual attributes;.

00108 {
00109   //std::cout << "begin of set defaultvis" << std::endl;
00110   int emcColor     = 2;
00111   int partColor    = 2;
00112   int phiColor     = 4;
00113   int thetaColor   = 4;
00114   int brCrystalColor = 4;
00115   int ecCrystalColor = 7;
00116 
00117   m_Emc->SetLineColor(emcColor);
00118   m_Emc->SetVisibility(0);
00119   
00120   for (int part = 0; part < m_kPart-1; part++) {
00121     GetVolumePart(part)->SetLineColor(partColor);
00122     int nPhi = (part == 1 ? m_kPhiBr : m_kPhiEc);
00123     for (int phi = 0; phi < nPhi; phi++) {
00124       GetVolumePhi(part, phi)->SetLineColor(phiColor);
00125       GetVolumePhi(part, phi)->SetVisibility(0);
00126     }
00127     if (part == 1) {
00128       for (int theta = 0; theta < m_kThetaBr; theta++) {
00129         GetVolumeTheta(part, 0, theta)->SetLineColor(thetaColor);
00130         GetVolumeTheta(part, 0, theta)->SetVisibility(0);
00131         GetVolumeCrystal(part, 0, theta)->SetLineColor(brCrystalColor);
00132         GetVolumeCrystal(part, 0, theta)->SetVisibility(1);
00133       }
00134     }
00135     else if (part == 0) {
00136       int iPhi[4] = {0,6,8,7};
00137       for (int i = 0; i < 4; i++) {
00138         int phi = iPhi[i];
00139         int nTheta = (part == 1 ? m_kThetaBr : m_kThetaEc);
00140         for (int theta = 0; theta < nTheta; theta++) {
00141           GetVolumeTheta(part, phi, theta)->SetLineColor(thetaColor);
00142           GetVolumeTheta(part, phi, theta)->SetVisibility(0);
00143           GetVolumeCrystal(part, phi, theta)->SetLineColor(ecCrystalColor);
00144           GetVolumeCrystal(part, phi, theta)->SetVisibility(1);
00145         }
00146       }
00147     }
00148   }
00149 
00150   for (int part = 0; part < m_kPart; part++) {
00151     GetPart(part)->SetVisibility(0);
00152     int nPhi = (part == 1 ? m_kPhiBr : m_kPhiEc);
00153     for (int phi = 0; phi < nPhi; phi++) {
00154       GetPhi(part, phi)->SetVisibility(0);
00155       int nTheta = (part == 1 ? m_kThetaBr : m_kThetaEc);
00156       for (int theta = 0; theta < nTheta; theta++) {
00157         GetTheta(part, phi, theta)->SetVisibility(0);
00158         GetCrystal(part, phi, theta)->SetVisibility(0);
00159       }
00160     }
00161   }
00162   //std::cout << "end of set defaultvis" << std::endl;
00163 }

void EmcROOTGeo::SetDetector  ) 
 

Set Detecor (what is detector depends on you).

void EmcROOTGeo::SetDetector  ) 
 

Set Detecor (what is detector depends on you).

00701 {
00702     BesView *view = 0;
00703     if (gPad) view = (BesView*)gPad->GetView();
00704     //if (view) cout << "viewVisFull3DEmc " << view->GetVisFull3DEmc() << endl;
00705 
00706     m_DetectorsArray->Clear();
00707 
00708     // Barrel
00709     int part = 1;
00710     for (int theta = 0; theta < GetThetaNb(part); theta++) {
00711         for (int phi = 0; phi < GetPhiNb(part, theta); phi++) {
00712             TGeoPhysicalNode *phyNode = GetPhysicalCrystal(part, phi, theta);
00713             if (phyNode) {
00714                 phyNode->SetVisibility(0); // set all invisible before set any visible
00715                 if ( phi >= 0 && phi < m_kPhiBr*4/4
00716                         //|| (theta == 0 || theta == 43) && phi >= m_kPhiBr/4 || phi == 0
00717                    ) {
00718                     m_DetectorsArray->Add( phyNode );
00719                 }
00720                 else if (view && view->GetVisFull3DEmc()) {
00721                     m_DetectorsArray->Add( phyNode );
00722                 }
00723             }
00724         }
00725     }
00726 
00727     // End cap
00728     for (int part = 0; part < m_kPart; part++) {
00729         if (part == 1) continue;
00730         for (int theta = 0; theta < GetThetaNb(part); theta++) {
00731             for (int phi = 0; phi < GetPhiNb(part, theta); phi++) {
00732                 TGeoPhysicalNode *phyNode = GetPhysicalCrystal(part, phi, theta);
00733                 if (phyNode) {
00734                     phyNode->SetVisibility(0); // set all invisible before set any visible
00735                     if (part == 2 && phi <= GetPhiNb(part, theta)||
00736                             part == 0 && phi <= GetPhiNb(part, theta) ) {
00737                         m_DetectorsArray->Add( phyNode );
00738                     }
00739                     else if (view && view->GetVisFull3DEmc()) {
00740                         m_DetectorsArray->Add( phyNode );
00741                     }
00742                 }
00743 
00744                 phyNode = 0;
00745                 phyNode = GetPhysicalCrystal2(part, phi, theta);
00746                 if (phyNode) {
00747                     phyNode->SetVisibility(0); // set all invisible before set any visible
00748                     if (part == 2 && phi <= GetPhiNb(part, theta)||
00749                             part == 0 && phi <= GetPhiNb(part, theta) ) {
00750                         m_DetectorsArray->Add( phyNode );
00751                     }
00752                     else if (view && view->GetVisFull3DEmc()) {
00753                         m_DetectorsArray->Add( phyNode );
00754                     }
00755                 }
00756             }
00757         }
00758     }
00759 
00760     //std::cout << "EmcROOTGeo::SetDetector(), end of set detector " << std::endl;
00761 }

virtual void SubDetectorROOTGeo::SetDetectorOn  )  [virtual, inherited]
 

Set all physicalNodes in m_DeteorsArray visible;.

void SubDetectorROOTGeo::SetDetectorOn  )  [virtual, inherited]
 

Set all physicalNodes in m_DeteorsArray visible;.

00074 {
00075     for (Int_t i = 0; i < m_DetectorsArray->GetEntries(); i++) {
00076         TGeoPhysicalNode *pNode = (TGeoPhysicalNode*)m_DetectorsArray->At(i);
00077         if (pNode) pNode->SetVisibility(1);
00078     }
00079 }

void EmcROOTGeo::SetHalfVisible  ) 
 

Set half visible;.

void EmcROOTGeo::SetHalfVisible  ) 
 

Set half visible;.

00545 {
00546     /*
00547     for (int theta = 0; theta < GetThetaNb(1); theta++) {
00548       for (int phi = 0; phi < GetPhiNb(1); phi++) {
00549         if (phi >= GetPhiNb(1)/4 && phi < GetPhiNb(1)*3/4) {
00550       GetPhysicalCrystal(1, phi, theta)->SetVisibility(0);
00551         }
00552         else {
00553       GetPhysicalCrystal(1, phi, theta)->SetVisibility(1);
00554         }
00555       }
00556     }
00557      
00558     for (int theta = 0; theta < GetThetaNb(0); theta++) {
00559       for (int i = 0; i < 16; i++) {
00560         if (i >= 7 && i <= 14) {
00561       GetPhysicalCrystal(0, i, theta)->SetVisibility(0);
00562         }
00563         else {
00564       GetPhysicalCrystal(0, i, theta)->SetVisibility(1);
00565         }
00566       }
00567     }
00568 
00569     for (int theta = 0; theta < GetThetaNb(2); theta++) {
00570       for (int i = 0; i < 16; i++) {
00571         if ((i >= 0 && i < 7) || i == 15) {
00572       GetPhysicalCrystal(2, i, theta)->SetVisibility(0);
00573         }
00574         else {
00575       GetPhysicalCrystal(2, i, theta)->SetVisibility(1);
00576         }
00577       }
00578     }
00579     */
00580 }

void EmcROOTGeo::SetHits  ) 
 

Set all physicalNodes corresponding to digiCol;.

void EmcROOTGeo::SetHits  ) 
 

Set all physicalNodes corresponding to digiCol;.

00765 {
00766     // set previous event hits to default vis
00767     //cout << "m_HitsArray->GetEntries(): " << m_HitsArray->GetEntries() << endl;
00768     //cout << "m_PhyNodeOrgArray->GetEntries(): " << m_PhyNodeOrgArray->GetEntries() << endl;
00769     //cout << "m_2DHitsArray->GetEntries(): " << m_2DHitsArray->GetEntries() << endl;
00770     for (int i = 0; i < m_HitsArray->GetEntries(); i++) {
00771         TGeoPhysicalNode *phyNode = (TGeoPhysicalNode*)m_HitsArray->At(i);
00772         //cout << phyNode->GetName() << endl;
00773         int color = m_brCrystalColor;
00774         int part = GetPart(phyNode);
00775         if (part == 0 || part == 2)
00776             color = m_ecCrystalColor;
00777 
00778         phyNode->SetLineColor(color);
00779         phyNode->SetVisibility(0);
00780 
00781         RestorePhyNode(phyNode, (TGeoNode*)m_PhyNodeOrgArray->At(i));
00782     }
00783     m_PhyNodeOrgArray->Clear("C");
00784     m_HitsArray->Clear("C");
00785 
00786     // set previous event 2D hits info to default
00787     for (int i = 0; i < m_2DHitsArray->GetEntries(); i++) {
00788         Emc2DCrystal *aCrystal = (Emc2DCrystal*)m_2DHitsArray->At(i);
00789         aCrystal->ClearInfo();
00790         aCrystal->AddInfo(aCrystal->GetTitle());
00791         aCrystal->CloseInfo();
00792     }
00793     m_2DHitsArray->Clear("C");
00794 
00795     // set new hits
00796     if (gEvent) m_EmcDigiCol = gEvent->GetEmcDigiCol();
00797 
00798     for (int i = 0; i < m_EmcDigiCol->GetEntries(); i++) {
00799         TEmcDigi *aEmcDigi = (TEmcDigi*)m_EmcDigiCol->At(i);
00800         Identifier aEmcID( aEmcDigi->getIntId() );
00801         int part  = EmcID::barrel_ec( aEmcID );
00802         int theta = EmcID::theta_module( aEmcID );
00803         int phi   = EmcID::phi_module( aEmcID );
00804 
00805         Double_t charge = RawDataUtil::EmcCharge(aEmcDigi->getMeasure(),
00806                           aEmcDigi->getChargeChannel());
00807         Double_t time = RawDataUtil::EmcTime(aEmcDigi->getTimeChannel());
00808 
00809         TGeoPhysicalNode *phyNode = 0;
00810         phyNode = GetPhysicalCrystal( part, phi, theta );
00811         if (phyNode) {
00812             m_PhyNodeOrgArray->Add ( phyNode->GetNode() );
00813 
00814             //Double_t *P; // = new Double_t[16];
00815             //TGeoArb8 *oldArb8 = (TGeoArb8*)phyNode->GetShape();
00816             //P = oldArb8->GetVertices();
00817             //TGeoArb8 *newArb8 = new TGeoArb8(charge, &P[0]);
00818 
00819             //TGeoTranslation *newmat =
00820             //    new TGeoTranslation(0.0, 0.0, oldArb8->GetDz()+newArb8->GetDz());
00821             //newmat->RegisterYourself();
00822 
00823             //Align(phyNode, newmat, newArb8);
00824 
00825             //m_HitsArray->Add( phyNode );
00828         }
00829 
00830         phyNode = GetPhysicalCrystal2( part, phi, theta );
00831         if (phyNode) {
00832             m_PhyNodeOrgArray->Add ( phyNode->GetNode() );
00833 
00834             //Double_t *P; // = new Double_t[16];
00835             //TGeoArb8 *oldArb8 = (TGeoArb8*)phyNode->GetShape();
00836             //P = oldArb8->GetVertices();
00837             //TGeoArb8 *newArb8 = new TGeoArb8(charge, &P[0]);
00838 
00839             //TGeoTranslation *newmat =
00840             //    new TGeoTranslation(0.0, 0.0, oldArb8->GetDz()+newArb8->GetDz());
00841             //newmat->RegisterYourself();
00842 
00843             //Align(phyNode, newmat, newArb8);
00844 
00845             //m_HitsArray->Add( phyNode );
00848         }
00849 
00850         Emc2DCrystal *aCrystal = 0;
00851         aCrystal = m_Emc2DCrystal[part][phi][theta];
00852         if (aCrystal) {
00853             aCrystal->ClearInfo();
00854             aCrystal->AddInfo(aCrystal->GetTitle());
00855 
00856             char data[100];
00857             sprintf(data, "time = %-.3f ns, charge = %-.3f MeV", time, charge);
00858             aCrystal->AddInfo( TString(data) );
00859             sprintf(data, "Fired");
00860             aCrystal->AddInfo( TString(data) );
00861 
00862             aCrystal->CloseInfo();
00863 
00864             m_2DHitsArray->Add(aCrystal);
00865         }
00866     }
00867 }

void EmcROOTGeo::SetNode  ) 
 

Set the pointers to theirs nodes;.

void EmcROOTGeo::SetNode  ) 
 

Set the pointers to theirs nodes;.

void EmcROOTGeo::SetNode  ) 
 

Set the pointers to theirs nodes;.

void EmcROOTGeo::SetNode  ) 
 

Set the pointers to theirs nodes;.

00065 {
00066   m_Emc = GetTopVolume();
00067   if(!m_Emc) {
00068     m_Emc = GetLogicalVolume("logicalEMC");
00069   }
00070   if(!m_Emc) std::cout << "m_Emc = 0" << std::endl;
00071   else cout<<"Find logicalEMC!"<<endl;
00072   
00073   for (int part = 0; part < m_kPart; part++) {
00074     //TGeoNode *nodePart = GetPart(part);
00075     //if(nodePart) cout<<nodePart->GetName()<<endl;
00076     int nPhi = (part == 1 ? m_kPhiBr : m_kPhiEc);
00077     
00078     for (int phi = 0; phi < nPhi; phi++) {
00079       //total number of daughters in BSCPhi is 215
00080       int nTheta = (part == 1 ? 219 : m_kThetaEc);
00081       TGeoNode *nodePhi = GetPhi(part,phi);
00082       //if(nodePhi) cout<<nodePhi->GetName()<<endl;
00083       
00084       for (int theta = 0; theta < nTheta; theta++) {
00085         string name = nodePhi->GetDaughter(theta)->GetName();
00086         int nthe=-1;
00087         string strthe;
00088         if(name.find("BSCCasing",0)==7) {
00089           strthe = name.substr(16,2);
00090         } else if(name.find("EndCasing",0)==7) {
00091           strthe = name.substr(19,2);
00092         }
00093         
00094         istringstream thetaBuf(strthe);
00095         thetaBuf >> nthe;
00096         
00097         if(nthe>=0) {
00098           m_NodeTheta[part][phi][nthe] = nodePhi->GetDaughter(theta);
00099         }
00100       }
00101     }
00102   }
00103   //std::cout << "end of set node" << std::endl;
00104 }

void EmcROOTGeo::SetNoEndVisible  ) 
 

Set noend visible;.

void EmcROOTGeo::SetNoEndVisible  ) 
 

Set noend visible;.

00584 {
00585     /*
00586     for (int theta = 0; theta < GetThetaNb(1); theta++) {
00587       for (int phi = 0; phi < GetPhiNb(1); phi++) {
00588         GetPhysicalCrystal(1, phi, theta)->SetVisibility(1);
00589       }
00590     }
00591     */
00592 }

void EmcROOTGeo::SetPhysicalNode  ) 
 

Set the pointers to the physical nodes;.

void EmcROOTGeo::SetPhysicalNode  ) 
 

Set the pointers to the physical nodes;.

void EmcROOTGeo::SetPhysicalNode  ) 
 

Set the pointers to the physical nodes;.

void EmcROOTGeo::SetPhysicalNode  ) 
 

Set the pointers to the physical nodes;.

00256 {
00257   //int brCrystalColor = 4;
00258   //int ecCrystalColor = 7;
00259 
00260   if (gGeoManager == 0) std::cout << "Create gGeoManager first" << std::endl; 
00261   else cout<<"gGeoManager success!"<<endl;
00262   
00263   TGeoVolume *volEmc = GetLogicalVolume("logicalEMC");
00264   if(!volEmc) std::cout << "logicalEMC not found !" << std::endl;
00265       
00266   //construct bes world
00267   float m_BesR = 5200;
00268   float m_BesZ = 5680;    
00269   TGeoIdentity *identity = new TGeoIdentity();
00270 
00271   TGeoMaterial *mat = new TGeoMaterial("VOID",0,0,0);
00272   TGeoMedium   *med = new TGeoMedium("MED",1,mat);
00273   TGeoVolume   *m_Bes = gGeoManager->MakeBox("volBes", med, 
00274       0.5*m_BesR, 0.5*m_BesR, 0.5*m_BesZ);
00275   gGeoManager->SetTopVolume(m_Bes);
00276   m_Bes->AddNode(volEmc, 0, identity); 
00277   //cout<<"Ndaughters="<<m_Bes->GetNdaughters()<<endl;
00278   SetChildNo(m_Bes->GetNdaughters()-1);
00279         
00280   gGeoManager->SetDrawExtraPaths();  // draw physical node or not;
00281   gGeoManager->CloseGeometry();
00282   gGeoManager->SetNsegments(20);
00283       
00284 
00285   TGeoNode *bes = gGeoManager->GetTopNode();
00286   TGeoNode *emc = bes->GetDaughter(0);
00287   
00288   for (int part = 0; part < m_kPart; part++) {
00289     TGeoNode *nodePart = GetPart(part);
00290     int nPhi = (part == 1 ? m_kPhiBr : m_kPhiEc);
00291     for (int phi = 0; phi < nPhi; phi++) {
00292       TGeoNode *nodePhi = GetPhi(part, phi);
00293       int nTheta = (part == 1 ? m_kThetaBr : m_kThetaEc);
00294       for (int theta = 0; theta < nTheta; theta++) {
00295         //cout<<part<<"\t"<<phi<<"\t"<<theta<<endl;
00296         TGeoNode *nodeTheta = GetTheta(part, phi, theta);
00297         TGeoNode *nodeCrystal = GetCrystal(part, phi, theta);
00298         TString strPath =    TString("/") + bes->GetName() +
00299                              TString("/") + emc->GetName() +
00300                              TString("/") + nodePart->GetName() +
00301                              TString("/") + nodePhi->GetName() +
00302                              TString("/") + nodeTheta->GetName() +
00303                              TString("/") + nodeCrystal->GetName();
00304         m_PhysicalCrystal[part][phi][theta] = gGeoManager->MakePhysicalNode(strPath);
00305         
00306         //m_PhysicalCrystal[part][phi][theta]->SetVisibility(0);
00307         //m_PhysicalCrystal[part][phi][theta]->SetIsVolAtt(kFALSE);
00308         //if (part == 1) m_PhysicalCrystal[part][phi][theta]->SetLineColor(brCrystalColor);
00309         //else           m_PhysicalCrystal[part][phi][theta]->SetLineColor(ecCrystalColor);
00310       }
00311     }
00312   }
00313 }

void EmcROOTGeo::SetQuarterVisible  ) 
 

Set quater visible;.

void EmcROOTGeo::SetQuarterVisible  ) 
 

Set quater visible;.

void EmcROOTGeo::SetQuarterVisible  ) 
 

Set quater visible;.

void EmcROOTGeo::SetQuarterVisible  ) 
 

Set quater visible;.

00209 {
00210   /*  for (int part = 1; part < m_kPart-1; part++) {
00211     for (int phi = 1; phi <= m_kPhiBr; phi++) {
00212       GetVolumePhi(part, phi)->SetVisibility(0);
00213     }
00214 
00215      for (int theta = 1; theta <= m_kThetaBr; theta++) {
00216        GetVolumeTheta(part, theta)->SetVisibility(1);
00217        GetVolumeCrystal(part, theta)->SetVisibility(0);
00218     }
00219   }
00220 
00221   for (int part = 1; part < m_kPart-1; part++) {
00222     for (int phi = 1; phi <= m_kPhiBr; phi++) {
00223       GetPhi(part, phi)->SetVisibility(0);
00224       for (int theta = 1; theta <= m_kThetaBr; theta++) {
00225         if (phi < m_kPhiBr/4) GetTheta(part, phi, theta)->SetVisibility(0);
00226         else                  GetTheta(part, phi, theta)->SetVisibility(1);
00227         GetCrystal(part, phi, theta)->SetVisibility(0);
00228       }
00229     }
00230   }
00231   */
00232 
00233   for (int part = 0; part < m_kPart; part++) {
00234     GetPart(part)->SetVisibility(0);
00235     int nPhi = (part == 1 ? m_kPhiBr : m_kPhiEc);
00236     for (int phi = 0; phi < nPhi; phi++) {
00237       GetPhi(part, phi)->SetVisibility(0);
00238       int nTheta = (part == 1 ? m_kThetaBr : m_kThetaEc);
00239       for (int theta = 0; theta < nTheta; theta++) {
00240         GetTheta(part, phi, theta)->SetVisibility(0);
00241         if ( (part == 1 && (phi >= 0 && phi < nPhi/4)) ||
00242              (part != 1) ) {
00243           GetCrystal(part, phi, theta)->SetVisibility(1);
00244         }
00245         else {
00246           GetCrystal(part, phi, theta)->SetVisibility(0);
00247         }
00248       }
00249     }
00250   }
00251 
00252 }

void EmcROOTGeo::SetVisEmcDetector  ) 
 

Set Emc detector visibility;.

void EmcROOTGeo::SetVisEmcDetector  ) 
 

Set Emc detector visibility;.

00871 {
00872     BesView *view = 0;
00873     if (gPad) view = (BesView*)gPad->GetView();
00874 
00875     for (int i = 0; i < m_DetectorsArray->GetEntries(); i++) {
00876         TGeoPhysicalNode *phyNode = (TGeoPhysicalNode*)m_DetectorsArray->At(i);
00877         phyNode->SetVisibility(0);
00878         if (view && view->GetVisEmcGlobal()) {
00879             int part = GetPart(phyNode);
00880             if (part == 0 && view->GetVisEmcEast()   ||
00881                     part == 1 && view->GetVisEmcBarrel() ||
00882                     part == 2 && view->GetVisEmcWest()   )
00883                 phyNode->SetVisibility(1);
00884         }
00885     }
00886 }

void EmcROOTGeo::SetVisEmcHits  ) 
 

Set Emc hits visibility;.

void EmcROOTGeo::SetVisEmcHits  ) 
 

Set Emc hits visibility;.

00890 {
00891     BesView *view = 0;
00892     if (gPad) view = (BesView*)gPad->GetView();
00893 
00894     for (int i = 0; i < m_HitsArray->GetEntries(); i++) {
00895         TGeoPhysicalNode *phyNode = (TGeoPhysicalNode*)m_HitsArray->At(i);
00896         if (view && view->GetVisEmcHitsGlobal()) {
00897             int part = GetPart(phyNode);
00898             if (part == 0 && view->GetVisEmcHitsEast()   ||
00899                     part == 1 && view->GetVisEmcHitsBarrel() ||
00900                     part == 2 && view->GetVisEmcHitsWest()   ) {
00901                 phyNode->SetVisibility(1);
00902                 phyNode->SetLineColor(kMagenta);
00903                 continue;
00904             }
00905         }
00906         phyNode->SetVisibility(0);
00907     }
00908 }

void EmcROOTGeo::SetVolumeAppendInVis  ) 
 

Set default visual attributes;.

void EmcROOTGeo::SetVolumeAppendInVis  ) 
 

Set default visual attributes;.

00252 {
00253 
00254     //-------------------------------------------------------------
00255     //Barrel
00256     //GetLogicalVolume
00257     TGeoVolume *logicRear,*logicOrgGlass,*logicRearCasing,*logicAlPlate,*logicPD,*logicPreAmpBox,*logicAirInPABox,*logicHangingPlate,*logicWaterPipe;
00258     TGeoVolume *logicCable,*logicOCGirder,*logicSupportBar,*logicSupportBar1,*logicEndRing,*logicGear,*logicTaperRing1,*logicTaperRing2,*logicTaperRing3;
00259 
00260 
00261     logicRear = GetLogicalVolume("logicalRearBox");
00262     logicOrgGlass = GetLogicalVolume("logicalOrganicGlass");
00263     logicRearCasing = GetLogicalVolume("logicalRearCasing");
00264     logicAlPlate = GetLogicalVolume("logicalAlPlate");
00265     logicPD = GetLogicalVolume("logicalPD");
00266     logicPreAmpBox = GetLogicalVolume("logicalPreAmpBox");
00267     logicAirInPABox = GetLogicalVolume("logicalAirInPABox");
00268     logicHangingPlate = GetLogicalVolume("logicalHangingPlate");
00269     logicWaterPipe = GetLogicalVolume("logicalWaterPipe");
00270 
00271     for (int i = 0; i < 44; i++){
00272 
00273         std::ostringstream osnameBSCCable1;
00274         osnameBSCCable1 << "logicalBSCCable_1_"<<i;
00275         logicCable = GetLogicalVolume( osnameBSCCable1.str() );
00276         if (logicCable)
00277             logicCable->SetVisibility(0);
00278 
00279         std::ostringstream osnameBSCCable2;
00280         osnameBSCCable2 << "logicalBSCCable_2_"<<i;
00281         logicCable = GetLogicalVolume( osnameBSCCable2.str() );
00282         if (logicCable)
00283             logicCable->SetVisibility(0);
00284 
00285         std::ostringstream osnameOCGirder1;
00286         osnameOCGirder1 <<"logicalOpenningCutGirder_1_"<<i;
00287         logicOCGirder = GetLogicalVolume( osnameOCGirder1.str() );
00288         if (logicOCGirder)
00289             logicOCGirder->SetVisibility(0);
00290 
00291         std::ostringstream osnameOCGirder2;
00292         osnameOCGirder2 <<"logicalOpenningCutGirder_2_"<<i;
00293         logicOCGirder = GetLogicalVolume( osnameOCGirder2.str() );
00294         if (logicOCGirder)
00295             logicOCGirder->SetVisibility(0);
00296 
00297         std::ostringstream osnameOCGirder3;
00298         osnameOCGirder3 <<"logicalOpenningCutGirder_3_"<<i;
00299         logicOCGirder = GetLogicalVolume( osnameOCGirder3.str() );
00300         if (logicOCGirder)
00301             logicOCGirder->SetVisibility(0);
00302 
00303         std::ostringstream osnameOCGirder4;
00304         osnameOCGirder4 <<"logicalOpenningCutGirder_4_"<<i;
00305         logicOCGirder = GetLogicalVolume( osnameOCGirder4.str() );
00306         if (logicOCGirder)
00307             logicOCGirder->SetVisibility(0);
00308     }
00309 
00310     //-------------------------------------------------------------
00311     //Support system
00312     logicSupportBar = GetLogicalVolume("logicalSupportBar0");
00313     logicSupportBar1 = GetLogicalVolume("logicalSupportBar1");
00314     logicEndRing = GetLogicalVolume("logicalEndRing");
00315     logicGear = GetLogicalVolume("logicalGear");
00316     logicTaperRing1 = GetLogicalVolume("logicalTaperRing1");
00317     logicTaperRing2 = GetLogicalVolume("logicalTaperRing2");
00318     logicTaperRing3 = GetLogicalVolume("logicalTaperRing3");
00319 
00320     if (logicRear)
00321         logicRear->SetVisibility(0);
00322     if (logicOrgGlass)
00323         logicOrgGlass->SetVisibility(0);
00324     if (logicRearCasing)
00325         logicRearCasing->SetVisibility(0);
00326     if (logicAlPlate)
00327         logicAlPlate->SetVisibility(0);
00328     if (logicPD)
00329         logicPD->SetVisibility(0);
00330     if (logicPreAmpBox)
00331         logicPreAmpBox->SetVisibility(0);
00332     if (logicAirInPABox)
00333         logicAirInPABox->SetVisibility(0);
00334     if (logicHangingPlate)
00335         logicHangingPlate->SetVisibility(0);
00336     if (logicWaterPipe)
00337         logicWaterPipe->SetVisibility(0);
00338     if (logicGear)
00339         logicGear->SetVisibility(0);
00340     if (logicTaperRing1)
00341         logicTaperRing1->SetVisibility(0);
00342     if (logicTaperRing2)
00343         logicTaperRing2->SetVisibility(0);
00344     if (logicTaperRing3)
00345         logicTaperRing3->SetVisibility(0);
00346     if (logicSupportBar)
00347         logicSupportBar->SetVisibility(0);
00348     if (logicSupportBar1)
00349         logicSupportBar1->SetVisibility(0);
00350     if (logicEndRing)
00351         logicEndRing->SetVisibility(0);
00352 }

void EmcROOTGeo::SetVolumeDefaultVis  ) 
 

Set default visual attributes;.

void EmcROOTGeo::SetVolumeDefaultVis  ) 
 

Set default visual attributes;.

00356 {
00357 
00358     SetVolumeAppendInVis();
00359 
00360 
00361     //std::cout << "begin of set defaultvis" << std::endl;
00362     m_Emc->SetLineColor(m_EmcColor);
00363     m_Emc->SetVisibility(0);
00364 
00365     for (int part = 0; part < m_kPart-1; part++) {
00366         GetVolumePart(part)->SetLineColor(m_partColor);
00367         int nPhi = (part == 1 ? m_kPhiBr : m_kSectorEc);
00368         for (int phi = 0; phi < nPhi; phi++) {
00369             GetVolumePhi(part, phi)->SetLineColor(m_phiColor);
00370             GetVolumePhi(part, phi)->SetVisibility(0);
00371         }
00372         if (part == 1) {
00373             for (int theta = 0; theta < m_kThetaBr; theta++) {
00374                 GetVolumeTheta(part, 0, theta)->SetLineColor(m_thetaColor);
00375                 GetVolumeTheta(part, 0, theta)->SetVisibility(0);
00376                 GetVolumeCrystal(part, 0, theta)->SetLineColor(m_brCrystalColor);
00377                 GetVolumeCrystal(part, 0, theta)->SetVisibility(0);
00378             }
00379         }
00380         else if (part == 0) {
00381             int iPhi[3] = {0,1,2};
00382             for (int i = 0; i < 3; i++) {
00383                 int phi = iPhi[i];
00384                 int nTheta = (part == 1 ? m_kThetaBr : m_kNbEc);
00385                 for (int theta = 0; theta < nTheta; theta++) {
00386                     GetVolumeTheta(part, phi, theta)->SetLineColor(m_thetaColor);
00387                     GetVolumeTheta(part, phi, theta)->SetVisibility(0);
00388                     GetVolumeCrystal(part, phi, theta)->SetLineColor(m_ecCrystalColor);
00389                     GetVolumeCrystal(part, phi, theta)->SetVisibility(0);
00390                 }
00391             }
00392         }
00393     }
00394 
00395     // phi and sector
00396     for (int part = 0; part < m_kPart; part++) {
00397         GetPart(part)->SetVisibility(0);
00398         int nPhi = (part == 1 ? m_kPhiBr : m_kSectorEc);
00399         for (int phi = 0; phi < nPhi; phi++) {
00400             GetPhi(part, phi)->SetVisibility(0);
00401         }
00402     }
00403 
00404     // theta with real phi
00405     for (int part = 0; part < m_kPart; part++) {
00406         for (int theta = 0; theta < GetThetaNb(part); theta++) {
00407             for (int phi = 0; phi < GetPhiNb(part, theta); phi++) {
00408                 //cout << "part " << part << " theta " << theta << " phi " << phi << endl;
00409                 TGeoNode *nodeTheta = GetTheta(part, phi, theta);
00410                 if (nodeTheta)   nodeTheta->SetVisibility(0);
00411                 TGeoNode *nodeCrystal = GetCrystal(part, phi, theta);
00412                 if (nodeCrystal) nodeCrystal->SetVisibility(0);
00413 
00414                 TGeoNode *nodeTheta2 = GetTheta2(part, phi, theta);
00415                 if (nodeTheta2)   nodeTheta2->SetVisibility(0);
00416                 TGeoNode *nodeCrystal2 = GetCrystal2(part, phi, theta);
00417                 if (nodeCrystal2) nodeCrystal2->SetVisibility(0);
00418             }
00419         }
00420     }
00421     //std::cout << "end of set defaultvis" << std::endl;
00422 
00423 }

void EmcROOTGeo::SetVolumeEmc TGeoVolume *  vol  )  [inline]
 

Set Emc volume, while initializing from ROOT;.

00100 { m_Emc = vol; }

void EmcROOTGeo::SetVolumeEmc TGeoVolume *  vol  )  [inline]
 

Set Emc volume, while initializing from ROOT;.

00100 { m_Emc = vol; }


Member Data Documentation

const int EmcROOTGeo::EMC_CHARGE_FACTOR = 1000 [static, private]
 

const int EmcROOTGeo::EMC_TIME_FACTOR = 1 [static, private]
 

int SubDetectorROOTGeo::m_2DGeoInit [protected, inherited]
 

TObjArray* SubDetectorROOTGeo::m_2DHitsArray [protected, inherited]
 

TObjArray* SubDetectorROOTGeo::m_2DHitsArray [protected, inherited]
 

int EmcROOTGeo::m_brCrystalColor [private]
 

int SubDetectorROOTGeo::m_childNo [protected, inherited]
 

TObjArray* SubDetectorROOTGeo::m_DetectorsArray [protected, inherited]
 

TObjArray* SubDetectorROOTGeo::m_DetectorsArray [protected, inherited]
 

int EmcROOTGeo::m_ecCrystalColor [private]
 

TGeoVolume* EmcROOTGeo::m_Emc [private]
 

TGeoVolume* EmcROOTGeo::m_Emc [private]
 

TGeoVolume* EmcROOTGeo::m_Emc [private]
 

TGeoVolume* EmcROOTGeo::m_Emc [private]
 

Emc2DCrystal* EmcROOTGeo::m_Emc2DCrystal[m_kPart][m_kPhiBr][m_kThetaBr] [private]
 

Emc2DCrystal* EmcROOTGeo::m_Emc2DCrystal[m_kPart][m_kPhiBr][m_kThetaBr] [private]
 

int EmcROOTGeo::m_EmcColor [private]
 

const TObjArray* EmcROOTGeo::m_EmcDigiCol [private]
 

const TObjArray* EmcROOTGeo::m_EmcDigiCol [private]
 

TObjArray* SubDetectorROOTGeo::m_HitsArray [protected, inherited]
 

TObjArray* SubDetectorROOTGeo::m_HitsArray [protected, inherited]
 

int EmcROOTGeo::m_kNbEc [private]
 

const int EmcROOTGeo::m_kPart = 3 [static, private]
 

const int EmcROOTGeo::m_kPhiBr = 120 [static, private]
 

int EmcROOTGeo::m_kPhiEc [private]
 

int EmcROOTGeo::m_kRealNbEc [private]
 

int EmcROOTGeo::m_kSectorEc [private]
 

const int EmcROOTGeo::m_kThetaBr = 44 [static, private]
 

int EmcROOTGeo::m_kThetaEc [private]
 

TGeoNode* EmcROOTGeo::m_NodePart[m_kPart] [private]
 

TGeoNode* EmcROOTGeo::m_NodePart[m_kPart] [private]
 

TGeoNode* EmcROOTGeo::m_NodePhi[m_kPart][m_kPhiBr] [private]
 

TGeoNode* EmcROOTGeo::m_NodePhi[m_kPart][m_kPhiBr] [private]
 

TGeoNode* EmcROOTGeo::m_NodeTheta[m_kPart][m_kPhiBr][m_kThetaBr] [private]
 

TGeoNode* EmcROOTGeo::m_NodeTheta[m_kPart][m_kPhiBr][m_kThetaBr] [private]
 

TGeoNode* EmcROOTGeo::m_NodeTheta[m_kPart][m_kPhiBr][m_kThetaBr] [private]
 

TGeoNode* EmcROOTGeo::m_NodeTheta[m_kPart][m_kPhiBr][m_kThetaBr] [private]
 

TGeoNode* EmcROOTGeo::m_NodeTheta2[m_kPart][m_kPhiBr][m_kThetaBr] [private]
 

TGeoNode* EmcROOTGeo::m_NodeTheta2[m_kPart][m_kPhiBr][m_kThetaBr] [private]
 

int EmcROOTGeo::m_partColor [private]
 

int EmcROOTGeo::m_phiColor [private]
 

TObjArray* EmcROOTGeo::m_PhyNodeOrgArray [private]
 

TObjArray* EmcROOTGeo::m_PhyNodeOrgArray [private]
 

TGeoPhysicalNode* EmcROOTGeo::m_PhysicalCrystal[m_kPart][m_kPhiBr][m_kThetaBr] [private]
 

TGeoPhysicalNode* EmcROOTGeo::m_PhysicalCrystal[m_kPart][m_kPhiBr][m_kThetaBr] [private]
 

TGeoPhysicalNode* EmcROOTGeo::m_PhysicalCrystal[m_kPart][m_kPhiBr][m_kThetaBr] [private]
 

TGeoPhysicalNode* EmcROOTGeo::m_PhysicalCrystal[m_kPart][m_kPhiBr][m_kThetaBr] [private]
 

TGeoPhysicalNode* EmcROOTGeo::m_PhysicalCrystal2[m_kPart][m_kPhiBr][m_kThetaBr] [private]
 

TGeoPhysicalNode* EmcROOTGeo::m_PhysicalCrystal2[m_kPart][m_kPhiBr][m_kThetaBr] [private]
 

int SubDetectorROOTGeo::m_ROOTGeoInit [protected, inherited]
 

int EmcROOTGeo::m_thetaColor [private]
 

TGeoVolume* SubDetectorROOTGeo::m_TopVolume [protected, inherited]
 

TGeoVolume* SubDetectorROOTGeo::m_TopVolume [protected, inherited]
 

TGeoVolume* SubDetectorROOTGeo::m_TopVolume [protected, inherited]
 

TGeoVolume* SubDetectorROOTGeo::m_TopVolume [protected, inherited]
 


The documentation for this class was generated from the following files:
Generated on Wed Feb 2 16:02:12 2011 for BOSS6.5.5 by  doxygen 1.3.9.1