#include <EmcROOTGeo.h>
Inheritance diagram for EmcROOTGeo:
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. | |
Emc2DCrystal * | Get2DCrystal (Int_t part, Int_t phi, Int_t theta) |
Get Emc2DCrystal;. | |
Emc2DCrystal * | Get2DCrystal (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 |
Emc2DCrystal * | m_Emc2DCrystal [m_kPart][m_kPhiBr][m_kThetaBr] |
Emc2DCrystal * | m_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 |
|
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 }
|
|
Destructor.
00051 { }
|
|
Constructor.
|
|
Destructor.
|
|
Constructor.
|
|
Destructor.
|
|
Constructor.
|
|
Destructor.
|
|
Align a physical node, change its position and shape.
|
|
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 }
|
|
Compute copyNb, copyNb 5,6,14,15,16 corresponding to two volume.
|
|
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 }
|
|
Compute theta, phi from sector, nb.
|
|
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 }
|
|
Draw function.
|
|
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 }
|
|
Draw 2D hits.
|
|
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 }
|
|
Get Emc2DCrystal;.
|
|
Get Emc2DCrystal;.
01293 { 01294 if (m_Emc2DCrystal[part][phi][theta]) return m_Emc2DCrystal[part][phi][theta]; 01295 else return 0; 01296 }
|
|
Get an assembly by name;.
|
|
Get an assembly by name;.
|
|
Get an assembly by name;.
|
|
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 }
|
|
Get crystal one;.
|
|
Get crystal one;.
|
|
Get crystal one;.
|
|
Get crystal one;.
00466 { 00467 // in fact, br only 44 crystal nodes; 00468 return GetTheta(part, phi, theta)->GetDaughter(0); 00469 }
|
|
Get crystal2 one;.
|
|
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 }
|
|
Get ith hit in HitsArray;.
|
|
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 }
|
|
Get number of hits in HitsArray;.
00061 { return m_HitsArray->GetEntries(); }
|
|
Get number of hits in HitsArray;.
00061 { return m_HitsArray->GetEntries(); }
|
|
Get a logical volume by name;.
|
|
Get a logical volume by name;.
|
|
Get a logical volume by name;.
|
|
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 }
|
|
Get a node(physical volume) by name;.
|
|
Get a node(physical volume) by name;.
|
|
Get a node(physical volume) by name;.
|
|
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 }
|
|
Get part node;.
|
|
Get part no of a crystal physcial node.
|
|
Get part node;.
|
|
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 }
|
|
Get part node;.
|
|
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 }
|
|
Get number of part;.
|
|
Get number of part;.
|
|
Get number of part;.
|
|
Get number of part;.
00317 { 00318 int part = m_kPart; 00319 00320 return part; 00321 }
|
|
Get phi node;.
|
|
Get phi node;.
|
|
Get phi node;.
|
|
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 }
|
|
Get number of phi on part;.
|
|
Get number of phi on part;.
|
|
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 }
|
|
Get number of phi on part;.
00334 { 00335 int phiNb = m_kPhiBr; 00336 if (part != 1) phiNb = m_kPhiEc; 00337 00338 return phiNb; 00339 }
|
|
Get crystal physical node;.
|
|
Get crystal physical node; all part,phi,theta has a physicalNode.
|
|
Get crystal physical node; all part,phi,theta has a physicalNode.
|
|
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 }
|
|
Get crystal physical node2; EC nb 5,6,14,15,16 in any sector has two physicalNode.
|
|
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 }
|
|
Get theta node;.
|
|
Get theta node;.
|
|
Get theta node;.
|
|
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 }
|
|
Get theta2 node;.
|
|
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 }
|
|
Get number of theta on part;.
|
|
Get number of theta on part;.
|
|
Get number of theta on 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 }
|
|
Get the top(world) volume;.
00051 { return m_TopVolume; }
|
|
Get the top(world) volume;.
00052 { return m_TopVolume; }
|
|
Get the top(world) volume;.
00052 { return m_TopVolume; }
|
|
Get the top(world) volume;.
00051 { return m_TopVolume; }
|
|
Get crystal volume;.
|
|
Get crystal volume;.
|
|
Get crystal volume;.
|
|
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 }
|
|
Get Emc volume;.
00068 { return m_Emc; }
|
|
Get Emc volume;.
00103 { return m_Emc; }
|
|
Get Emc volume;.
00103 { return m_Emc; }
|
|
Get Emc volume;.
00068 { return m_Emc; }
|
|
Get part volume;.
|
|
Get part volume;.
|
|
Get part volume;.
|
|
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 }
|
|
Get phi volume;.
|
|
Get phi volume;.
|
|
Get phi volume;.
|
|
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 }
|
|
Get theta volume;.
|
|
Get theta volume;.
|
|
Get theta volume;.
|
|
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 }
|
|
Whether this id is combined of two nodes.
|
|
Whether this id is combined of two nodes.
01141 { 01142 if (part == 1) return false; 01143 else return true; 01144 }
|
|
Initialize 2D Geometry.
|
|
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 }
|
|
Initialize the instance of ROOTGeo.
|
|
Initialize ROOTGeo from GDML.
|
|
Initialize ROOTGeo from GDML.
00071 { 00072 m_ROOTGeoInit = 2; 00073 00074 ReadGdml(gdmlFile, setupName); 00075 SetNode(); 00076 }
|
|
Initialize the instance of ROOTGeo.
00055 { 00056 ReadGdml(gdmlFile, setupName); 00057 SetNode(); 00058 //SetDefaultVis(); 00059 00060 m_ROOTGeoInit = 1; 00061 }
|
|
Initialize ROOTGeo from TGeoVolume logicalEmc.
|
|
Initialize ROOTGeo from TGeoVolume logicalEmc.
00080 { 00081 m_ROOTGeoInit = 1; 00082 00083 SetVolumeEmc(vol); 00084 SetNode(); 00085 }
|
|
If the ROOT geometry of this subdetctor is initialized;.
00042 { return m_ROOTGeoInit; }
|
|
If the ROOT geometry of this subdetctor is initialized;.
00043 { return m_ROOTGeoInit; }
|
|
If the ROOT geometry of this subdetctor is initialized;.
00043 { return m_ROOTGeoInit; }
|
|
If the ROOT geometry of this subdetctor is initialized;.
00042 { return m_ROOTGeoInit; }
|
|
Initialize the instance of ROOTGeo.
|
|
Initialize the instance of ROOTGeo.
|
|
Initialize the instance of ROOTGeo.
|
|
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 }
|
|
Restore the physical node to original shape.
|
|
Restore the physical node to original shape.
01494 { 01495 Align(phyNode, node->GetMatrix(), node->GetVolume()->GetShape()); 01496 }
|
|
Set all visible;.
|
|
Set all visible;.
|
|
Set all visible;.
|
|
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 }
|
|
00045 { m_childNo = childNo; }
|
|
00046 { m_childNo = childNo; }
|
|
00046 { m_childNo = childNo; }
|
|
00045 { m_childNo = childNo; }
|
|
Set default visual attributes;.
|
|
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 }
|
|
Set Detecor (what is detector depends on you).
|
|
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 }
|
|
Set all physicalNodes in m_DeteorsArray visible;.
|
|
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 }
|
|
Set half visible;.
|
|
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 }
|
|
Set all physicalNodes corresponding to digiCol;.
|
|
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 }
|
|
Set the pointers to theirs nodes;.
|
|
Set the pointers to theirs nodes;.
|
|
Set the pointers to theirs nodes;.
|
|
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 }
|
|
Set noend visible;.
|
|
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 }
|
|
Set the pointers to the physical nodes;.
|
|
Set the pointers to the physical nodes;.
|
|
Set the pointers to the physical nodes;.
|
|
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 }
|
|
Set quater visible;.
|
|
Set quater visible;.
|
|
Set quater visible;.
|
|
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 }
|
|
Set Emc detector visibility;.
|
|
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 }
|
|
Set Emc hits visibility;.
|
|
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 }
|
|
Set default visual attributes;.
|
|
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 }
|
|
Set default visual attributes;.
|
|
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 }
|
|
Set Emc volume, while initializing from ROOT;.
00100 { m_Emc = vol; }
|
|
Set Emc volume, while initializing from ROOT;.
00100 { m_Emc = vol; }
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|