#include <EmcROOTGeo.h>
Inheritance diagram for EmcROOTGeo:
Public Member Functions | |
EmcROOTGeo () | |
Constructor. | |
~EmcROOTGeo () | |
Destructor. | |
void | InitFromGdml (const char *gdmlFile, const char *setupName) |
Initialize the instance of ROOTGeo. | |
void | SetNode () |
Set the pointers to theirs nodes;. | |
void | SetDefaultVis () |
Set default visual attributes;. | |
void | SetAllVisible () |
Set all visible;. | |
void | SetQuarterVisible () |
Set quater visible;. | |
void | SetPhysicalNode () |
Set the pointers to the physical nodes;. | |
int | GetPartNb () |
Get number of part;. | |
int | GetThetaNb (int part) |
Get number of theta on part;. | |
int | GetPhiNb (int part) |
Get number of phi on part;. | |
TGeoVolume * | GetVolumeEmc () |
Get Emc volume;. | |
TGeoVolume * | GetVolumePart (int part) |
Get part volume;. | |
TGeoVolume * | GetVolumePhi (int part, int phi) |
Get phi volume;. | |
TGeoVolume * | GetVolumeTheta (int part, int phi, int theta) |
Get theta volume;. | |
TGeoVolume * | GetVolumeCrystal (int part, int phi, int theta) |
Get crystal volume;. | |
TGeoNode * | GetPart (int part) |
Get part node;. | |
TGeoNode * | GetPhi (int part, int phi) |
Get phi node;. | |
TGeoNode * | GetTheta (int part, int phi, int theta) |
Get theta node;. | |
TGeoNode * | GetCrystal (int part, int phi, int theta) |
Get crystal one;. | |
TGeoPhysicalNode * | GetPhysicalCrystal (int part, int phi, int theta) |
Get crystal physical node;. | |
EmcROOTGeo () | |
Constructor. | |
~EmcROOTGeo () | |
Destructor. | |
void | InitFromGDML (const char *gdmlFile, const char *setupName) |
Initialize ROOTGeo from GDML. | |
void | InitFromROOT (TGeoVolume *vol) |
Initialize ROOTGeo from TGeoVolume logicalEmc. | |
void | Init2DGeometry () |
Initialize 2D Geometry. | |
void | SetNode () |
Set the pointers to theirs nodes;. | |
void | SetVolumeAppendInVis () |
Set default visual attributes;. | |
void | SetVolumeDefaultVis () |
Set default visual attributes;. | |
void | SetAllVisible () |
Set all visible;. | |
void | SetQuarterVisible () |
Set quater visible;. | |
void | SetHalfVisible () |
Set half visible;. | |
void | SetNoEndVisible () |
Set noend visible;. | |
void | SetPhysicalNode () |
Set the pointers to the physical nodes;. | |
void | SetDetector () |
Set Detecor (what is detector depends on you). | |
void | SetHits () |
Set all physicalNodes corresponding to digiCol;. | |
void | SetVisEmcDetector () |
Set Emc detector visibility;. | |
void | SetVisEmcHits () |
Set Emc hits visibility;. | |
int | GetPartNb () |
Get number of part;. | |
int | GetThetaNb (int part) |
Get number of theta on part;. | |
int | GetPhiNb (int part, int theta) |
Get number of phi on part;. | |
void | SetVolumeEmc (TGeoVolume *vol) |
Set Emc volume, while initializing from ROOT;. | |
TGeoVolume * | GetVolumeEmc () |
Get Emc volume;. | |
TGeoVolume * | GetVolumePart (int part) |
Get part volume;. | |
TGeoVolume * | GetVolumePhi (int part, int phi) |
Get phi volume;. | |
TGeoVolume * | GetVolumeTheta (int part, int phi, int theta) |
Get theta volume;. | |
TGeoVolume * | GetVolumeCrystal (int part, int phi, int theta) |
Get crystal volume;. | |
TGeoNode * | GetPart (int part) |
Get part node;. | |
TGeoNode * | GetPhi (int part, int phi) |
Get phi node;. | |
TGeoNode * | GetTheta (int part, int phi, int theta) |
Get theta node;. | |
TGeoNode * | GetTheta2 (int part, int phi, int theta) |
Get theta2 node;. | |
TGeoNode * | GetCrystal (int part, int phi, int theta) |
Get crystal one;. | |
TGeoNode * | GetCrystal2 (int part, int phi, int theta) |
Get crystal2 one;. | |
TGeoPhysicalNode * | GetPhysicalCrystal (int part, int phi, int theta) |
Get crystal physical node; all part,phi,theta has a 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. | |
bool | HasTwoNodes (int part, int phi, int theta) |
Whether this id is combined of two nodes. | |
void | ComputeThetaPhi (int id, int sector, int nb, int &CryNumberTheta, int &CryNumberPhi) |
Compute theta, phi from sector, nb. | |
int | ComputeEndCopyNb (int num) |
Compute copyNb, copyNb 5,6,14,15,16 corresponding to two volume. | |
Emc2DCrystal * | Get2DCrystal (Int_t part, Int_t phi, Int_t theta) |
Get Emc2DCrystal;. | |
Int_t | GetPart (TGeoPhysicalNode *phyNode) |
Get part no of a crystal physcial node. | |
void | Draw (Option_t *option) |
Draw function. | |
void | DrawHits (Option_t *option) |
Draw 2D hits. | |
void | Align (TGeoPhysicalNode *phyNode, TGeoMatrix *newmat=0, TGeoShape *newshape=0, Bool_t check=kFALSE) |
Align a physical node, change its position and shape. | |
void | RestorePhyNode (TGeoPhysicalNode *phyNode, TGeoNode *node) |
Restore the physical node to original shape. | |
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. | |
int | IsInitialized () |
If the ROOT geometry of this subdetctor is initialized;. | |
virtual int | IsInitialized () |
If the ROOT geometry of this subdetctor is initialized;. | |
void | SetChildNo (int childNo) |
virtual void | SetChildNo (int childNo) |
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 * | GetTopVolume () |
Get the top(world) volume;. | |
virtual TGeoVolume * | GetTopVolume () |
Get the top(world) volume;. | |
TGeoVolumeAssembly * | GetAssemblyVolume (const std::string &an) |
Get an assembly by name;. | |
virtual TGeoVolumeAssembly * | GetAssemblyVolume (const std::string &an) |
Get an assembly 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 int | GetHitsNum () |
Get number of hits in HitsArray;. | |
virtual TGeoPhysicalNode * | GetHit (int i) |
Get ith hit in HitsArray;. | |
virtual void | SetDetectorOn () |
Set all physicalNodes in m_DeteorsArray visible;. | |
Protected Attributes | |
int | m_ROOTGeoInit |
int | m_childNo |
TGeoVolume * | m_TopVolume |
TGeoVolume * | m_TopVolume |
int | m_2DGeoInit |
TObjArray * | m_DetectorsArray |
TObjArray * | m_HitsArray |
TObjArray * | m_2DHitsArray |
Private Attributes | |
int | m_kPhiEc |
int | m_kThetaEc |
TGeoVolume * | m_Emc |
TGeoNode * | m_NodeTheta [m_kPart][m_kPhiBr][m_kThetaBr] |
TGeoPhysicalNode * | m_PhysicalCrystal [m_kPart][m_kPhiBr][m_kThetaBr] |
int | m_kSectorEc |
int | m_kNbEc |
int | m_kRealNbEc |
int | m_EmcColor |
int | m_partColor |
int | m_phiColor |
int | m_thetaColor |
int | m_brCrystalColor |
int | m_ecCrystalColor |
TGeoVolume * | m_Emc |
TGeoNode * | m_NodePart [m_kPart] |
TGeoNode * | m_NodePhi [m_kPart][m_kPhiBr] |
TGeoNode * | m_NodeTheta [m_kPart][m_kPhiBr][m_kThetaBr] |
TGeoNode * | m_NodeTheta2 [m_kPart][m_kPhiBr][m_kThetaBr] |
TGeoPhysicalNode * | m_PhysicalCrystal [m_kPart][m_kPhiBr][m_kThetaBr] |
TGeoPhysicalNode * | m_PhysicalCrystal2 [m_kPart][m_kPhiBr][m_kThetaBr] |
TObjArray * | m_PhyNodeOrgArray |
const TObjArray * | m_EmcDigiCol |
Emc2DCrystal * | m_Emc2DCrystal [m_kPart][m_kPhiBr][m_kThetaBr] |
Static Private Attributes | |
static const int | m_kPart = 3 |
static const int | m_kPhiBr = 120 |
static const int | m_kThetaBr = 44 |
static const int | EMC_TIME_FACTOR = 1 |
static const int | EMC_CHARGE_FACTOR = 1000 |
Definition at line 30 of file EmcROOTGeo.h.
EmcROOTGeo::EmcROOTGeo | ( | ) |
Constructor.
Definition at line 28 of file EmcROOTGeo.cxx.
References InitFromGdml(), m_kPart, m_kPhiBr, m_kPhiEc, m_kThetaBr, m_kThetaEc, m_NodeTheta, m_PhysicalCrystal, and deljobs::string.
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 | ( | ) |
EmcROOTGeo::EmcROOTGeo | ( | ) |
Constructor.
EmcROOTGeo::~EmcROOTGeo | ( | ) |
Destructor.
void EmcROOTGeo::Align | ( | TGeoPhysicalNode * | phyNode, | |
TGeoMatrix * | newmat = 0 , |
|||
TGeoShape * | newshape = 0 , |
|||
Bool_t | check = kFALSE | |||
) |
Align a physical node, change its position and shape.
Definition at line 1411 of file EmcROOTGeo.cxx.
References genRecEmupikp::i, and ganga-rec::j.
Referenced by RestorePhyNode().
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 phyNode->SetName(name); 01468 phyNode->Refresh(); 01469 01470 // Now nnode is a cloned node of the one that need to be aligned 01471 TGeoNodeMatrix *aligned = (TGeoNodeMatrix*)nnode; 01472 vm = nnode->GetMotherVolume(); 01473 vd = nnode->GetVolume(); 01474 if (newmat) { 01475 // Register matrix and make it the active one 01476 if (!newmat->IsRegistered()) newmat->RegisterYourself(); 01477 aligned->SetMatrix(newmat); 01478 // Update the global matrix for the aligned node 01479 TGeoHMatrix *global = phyNode->GetMatrix(); 01480 TGeoHMatrix *up = phyNode->GetMatrix(fLevel-1); 01481 *global = up; 01482 global->Multiply(newmat); 01483 } 01484 // Change the shape for the aligned node 01485 if (newshape) vd->SetShape(newshape); 01486 // Now we have to re-voxelize the mother volume 01487 vm->SetVoxelFinder(0); 01488 vm->Voxelize("ALL"); 01489 vm->FindOverlaps(); 01490 // Eventually check for overlaps 01491 if (check) vm->CheckOverlaps(); 01492 //phyNode->SetAligned(kTRUE); 01493 }
int EmcROOTGeo::ComputeEndCopyNb | ( | int | num | ) |
Compute copyNb, copyNb 5,6,14,15,16 corresponding to two volume.
Definition at line 1265 of file EmcROOTGeo.cxx.
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.
Definition at line 1148 of file EmcROOTGeo.cxx.
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.
Definition at line 1321 of file EmcROOTGeo.cxx.
References Emc2DCrystal::Draw(), GetPartNb(), GetPhiNb(), GetThetaNb(), BesView::GetVisEmcBarrel(), BesView::GetVisEmcEast(), BesView::GetVisEmcGlobal(), BesView::GetVisEmcWest(), SubDetectorROOTGeo::m_2DGeoInit, m_Emc2DCrystal, and Emc2DCrystal::SetFired().
Referenced by BesGeometry::Draw2DXY(), and BesGeometry::Draw2DZR().
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.
Definition at line 1354 of file EmcROOTGeo.cxx.
References EmcID::barrel_ec(), Emc2DCrystal::Draw(), RawDataUtil::EmcCharge(), GetPartNb(), GetPhiNb(), GetThetaNb(), BesView::GetVisEmcHitsBarrel(), BesView::GetVisEmcHitsEast(), BesView::GetVisEmcHitsGlobal(), BesView::GetVisEmcHitsWest(), genRecEmupikp::i, m_Emc2DCrystal, m_EmcDigiCol, EmcID::phi_module(), Emc2DCrystal::ResetTimeCharge(), Emc2DCrystal::SetCharge(), Emc2DCrystal::SetFired(), and EmcID::theta_module().
Referenced by BesEvent::DrawHits().
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;.
Definition at line 1292 of file EmcROOTGeo.cxx.
References m_Emc2DCrystal.
Referenced by BesEvent::ConstructEmcTrackFromRec().
01293 { 01294 if (m_Emc2DCrystal[part][phi][theta]) return m_Emc2DCrystal[part][phi][theta]; 01295 else return 0; 01296 }
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;.
Definition at line 52 of file SubDetectorROOTGeo.cxx.
Referenced by TofROOTGeo::GetVolumeAssembly().
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;.
Definition at line 465 of file EmcROOTGeo.cxx.
References GetTheta().
Referenced by SetAllVisible(), SetDefaultVis(), SetPhysicalNode(), SetQuarterVisible(), and SetVolumeDefaultVis().
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;.
Definition at line 1114 of file EmcROOTGeo.cxx.
References GetTheta2().
Referenced by SetVolumeDefaultVis().
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 }
TGeoPhysicalNode * SubDetectorROOTGeo::GetHit | ( | int | i | ) | [virtual, inherited] |
Get ith hit in HitsArray;.
Definition at line 65 of file SubDetectorROOTGeo.cxx.
References SubDetectorROOTGeo::m_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;.
Definition at line 61 of file SubDetectorROOTGeo.h.
References SubDetectorROOTGeo::m_HitsArray.
00061 { return m_HitsArray->GetEntries(); }
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;.
Definition at line 45 of file SubDetectorROOTGeo.cxx.
Referenced by MucROOTGeo::GetVolumeAbsorber(), MucROOTGeo::GetVolumeAbsorberPanel(), MucROOTGeo::GetVolumeAbsorberSmallBlock(), TofROOTGeo::GetVolumeAl(), MucROOTGeo::GetVolumeAluminumBox(), MucROOTGeo::GetVolumeBakelite(), MucROOTGeo::GetVolumeBox(), MucROOTGeo::GetVolumeBoxSurface(), TofROOTGeo::GetVolumeBucket(), GetVolumeCrystal(), MucROOTGeo::GetVolumeGap(), MucROOTGeo::GetVolumeGasBorder(), MucROOTGeo::GetVolumeGasChamber(), MdcROOTGeo::GetVolumeLayer(), TofROOTGeo::GetVolumePart(), GetVolumePart(), GetVolumePhi(), TofROOTGeo::GetVolumePVF(), MdcROOTGeo::GetVolumeReplica(), TofROOTGeo::GetVolumeScin(), MdcROOTGeo::GetVolumeSegment(), MucROOTGeo::GetVolumeStrip(), MucROOTGeo::GetVolumeStripPlane(), GetVolumeTheta(), MucROOTGeo::SetNode(), SetNode(), SetPhysicalNode(), and SetVolumeAppendInVis().
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 }
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;.
Definition at line 59 of file SubDetectorROOTGeo.cxx.
Referenced by TofROOTGeo::GetBucket(), MdcROOTGeo::GetLayer(), GetPart(), GetPhi(), MdcROOTGeo::GetSegment(), MucROOTGeo::Init2DGeometry(), TofROOTGeo::SetNode(), MucROOTGeo::SetNode(), and MdcROOTGeo::SetNode().
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 }
int EmcROOTGeo::GetPart | ( | TGeoPhysicalNode * | phyNode | ) |
Get part no of a crystal physcial node.
Definition at line 1299 of file EmcROOTGeo.cxx.
References GetPartNb(), GetPhiNb(), GetPhysicalCrystal(), GetPhysicalCrystal2(), and GetThetaNb().
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;.
Definition at line 415 of file EmcROOTGeo.cxx.
References SubDetectorROOTGeo::GetNode().
Referenced by SetAllVisible(), SetDefaultVis(), SetHits(), SetPhysicalNode(), SetQuarterVisible(), SetVisEmcDetector(), SetVisEmcHits(), and SetVolumeDefaultVis().
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;.
Definition at line 316 of file EmcROOTGeo.cxx.
References m_kPart.
Referenced by Draw(), DrawHits(), GetPart(), Init2DGeometry(), and EmcRecROOTGeo::InitFromXML().
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;.
Definition at line 429 of file EmcROOTGeo.cxx.
References SubDetectorROOTGeo::GetNode().
Referenced by SetAllVisible(), SetDefaultVis(), SetNode(), SetPhysicalNode(), SetQuarterVisible(), and SetVolumeDefaultVis().
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, | |
int | theta | |||
) |
Get number of phi on part;.
Definition at line 928 of file EmcROOTGeo.cxx.
References m_kThetaEc.
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;.
Definition at line 333 of file EmcROOTGeo.cxx.
References m_kPhiBr, and m_kPhiEc.
Referenced by Draw(), DrawHits(), GetPart(), Init2DGeometry(), EmcRecROOTGeo::InitFromXML(), SetDetector(), and SetVolumeDefaultVis().
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; all part,phi,theta has a physicalNode.
TGeoPhysicalNode * EmcROOTGeo::GetPhysicalCrystal | ( | int | part, | |
int | phi, | |||
int | theta | |||
) |
Get crystal physical node;.
Definition at line 472 of file EmcROOTGeo.cxx.
References m_PhysicalCrystal.
Referenced by GetPart(), BesGeometry::GetPhysicalEmcCrystal(), Init2DGeometry(), EmcRecROOTGeo::InitFromXML(), SetDetector(), BesVisDisplay::SetEmcFiredCell(), and SetHits().
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.
Definition at line 1134 of file EmcROOTGeo.cxx.
References m_PhysicalCrystal2.
Referenced by GetPart(), Init2DGeometry(), SetDetector(), and SetHits().
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;.
Definition at line 453 of file EmcROOTGeo.cxx.
References m_NodeTheta.
Referenced by GetCrystal(), SetAllVisible(), SetDefaultVis(), SetPhysicalNode(), SetQuarterVisible(), and SetVolumeDefaultVis().
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;.
Definition at line 1096 of file EmcROOTGeo.cxx.
References m_NodeTheta2.
Referenced by GetCrystal2(), and SetVolumeDefaultVis().
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;.
Definition at line 324 of file EmcROOTGeo.cxx.
References m_kThetaBr, and m_kThetaEc.
Referenced by Draw(), DrawHits(), GetPart(), Init2DGeometry(), EmcRecROOTGeo::InitFromXML(), SetDetector(), and SetVolumeDefaultVis().
00325 { 00326 int thetaNb = m_kThetaBr; 00327 if (part != 1) thetaNb = m_kThetaEc; 00328 00329 return thetaNb;; 00330 }
virtual TGeoVolume* SubDetectorROOTGeo::GetTopVolume | ( | ) | [inline, virtual, inherited] |
Get the top(world) volume;.
Definition at line 52 of file SubDetectorROOTGeo.h.
References SubDetectorROOTGeo::m_TopVolume.
00052 { return m_TopVolume; }
TGeoVolume* SubDetectorROOTGeo::GetTopVolume | ( | ) | [inline, inherited] |
Get the top(world) volume;.
Definition at line 51 of file SubDetectorROOTGeo.h.
References SubDetectorROOTGeo::m_TopVolume.
Referenced by MucROOTGeo::Init2DGeometry(), TofROOTGeo::SetNode(), MucROOTGeo::SetNode(), MdcROOTGeo::SetNode(), and SetNode().
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;.
Definition at line 394 of file EmcROOTGeo.cxx.
References SubDetectorROOTGeo::GetLogicalVolume().
Referenced by BesGeometry::GetVolumeEmcCrystal(), SetDefaultVis(), and SetVolumeDefaultVis().
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;.
Definition at line 103 of file EmcROOTGeo.h.
References m_Emc.
00103 { return m_Emc; }
TGeoVolume* EmcROOTGeo::GetVolumeEmc | ( | ) | [inline] |
Get Emc volume;.
Definition at line 68 of file EmcROOTGeo.h.
References m_Emc.
Referenced by BesGeometry::GetVolumeEmc(), and BesGeometry::InitFromGDML().
00068 { return m_Emc; }
TGeoVolume* EmcROOTGeo::GetVolumePart | ( | int | part | ) |
Get part volume;.
TGeoVolume * EmcROOTGeo::GetVolumePart | ( | int | part | ) |
Get part volume;.
Definition at line 342 of file EmcROOTGeo.cxx.
References SubDetectorROOTGeo::GetLogicalVolume().
Referenced by BesGeometry::GetVolumeEmcPart(), SetDefaultVis(), and SetVolumeDefaultVis().
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;.
Definition at line 357 of file EmcROOTGeo.cxx.
References SubDetectorROOTGeo::GetLogicalVolume().
Referenced by BesGeometry::GetVolumeEmcPhi(), SetDefaultVis(), and SetVolumeDefaultVis().
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;.
Definition at line 373 of file EmcROOTGeo.cxx.
References SubDetectorROOTGeo::GetLogicalVolume().
Referenced by BesGeometry::GetVolumeEmcTheta(), SetDefaultVis(), and SetVolumeDefaultVis().
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 | |||
) |
void EmcROOTGeo::Init2DGeometry | ( | ) |
Initialize 2D Geometry.
Definition at line 88 of file EmcROOTGeo.cxx.
References GetPartNb(), GetPhiNb(), GetPhysicalCrystal(), GetPhysicalCrystal2(), GetThetaNb(), genRecEmupikp::i, ganga-rec::j, SubDetectorROOTGeo::m_2DGeoInit, m_Emc2DCrystal, m_kThetaBr, SubDetectorROOTGeo::m_ROOTGeoInit, and title.
Referenced by BesGeometry::InitGeometry().
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 ROOTGeo from GDML.
Definition at line 70 of file EmcROOTGeo.cxx.
References SubDetectorROOTGeo::m_ROOTGeoInit, SubDetectorROOTGeo::ReadGdml(), and SetNode().
Referenced by BesGeometry::InitFromGDML().
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.
Definition at line 54 of file EmcROOTGeo.cxx.
References SubDetectorROOTGeo::m_ROOTGeoInit, SubDetectorROOTGeo::ReadGdml(), and SetNode().
Referenced by EmcROOTGeo().
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.
Definition at line 79 of file EmcROOTGeo.cxx.
References SubDetectorROOTGeo::m_ROOTGeoInit, SetNode(), and SetVolumeEmc().
Referenced by BesGeometry::InitFromROOT().
00080 { 00081 m_ROOTGeoInit = 1; 00082 00083 SetVolumeEmc(vol); 00084 SetNode(); 00085 }
virtual int SubDetectorROOTGeo::IsInitialized | ( | ) | [inline, virtual, inherited] |
If the ROOT geometry of this subdetctor is initialized;.
Definition at line 43 of file SubDetectorROOTGeo.h.
References SubDetectorROOTGeo::m_ROOTGeoInit.
00043 { return m_ROOTGeoInit; }
int SubDetectorROOTGeo::IsInitialized | ( | ) | [inline, inherited] |
If the ROOT geometry of this subdetctor is initialized;.
Definition at line 42 of file SubDetectorROOTGeo.h.
References SubDetectorROOTGeo::m_ROOTGeoInit.
00042 { return m_ROOTGeoInit; }
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.
Definition at line 31 of file SubDetectorROOTGeo.cxx.
References SubDetectorROOTGeo::m_config, SubDetectorROOTGeo::m_sxp, and SubDetectorROOTGeo::m_TopVolume.
Referenced by TofROOTGeo::InitFromGDML(), TofROOTGeo::InitFromGdml(), MucROOTGeo::InitFromGDML(), MucROOTGeo::InitFromGdml(), MdcROOTGeo::InitFromGDML(), MdcROOTGeo::InitFromGdml(), InitFromGDML(), and InitFromGdml().
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.
Definition at line 1495 of file EmcROOTGeo.cxx.
References Align().
Referenced by SetHits().
01496 { 01497 Align(phyNode, node->GetMatrix(), node->GetVolume()->GetShape()); 01498 }
void EmcROOTGeo::SetAllVisible | ( | ) |
Set all visible;.
void EmcROOTGeo::SetAllVisible | ( | ) |
Set all visible;.
Definition at line 166 of file EmcROOTGeo.cxx.
References GetCrystal(), GetPart(), GetPhi(), GetTheta(), m_kPart, m_kPhiBr, m_kPhiEc, m_kThetaBr, m_kThetaEc, and nPhi.
Referenced by BesGeometry::SetDefaultVis().
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 }
virtual void SubDetectorROOTGeo::SetChildNo | ( | int | childNo | ) | [inline, virtual, inherited] |
Definition at line 46 of file SubDetectorROOTGeo.h.
References SubDetectorROOTGeo::m_childNo.
00046 { m_childNo = childNo; }
void SubDetectorROOTGeo::SetChildNo | ( | int | childNo | ) | [inline, inherited] |
Definition at line 45 of file SubDetectorROOTGeo.h.
References SubDetectorROOTGeo::m_childNo.
Referenced by BesGeometry::InitFromGDML(), BesGeometry::InitFromROOT(), MucGeoGeneral::InitFromXML(), and SetPhysicalNode().
00045 { m_childNo = childNo; }
void EmcROOTGeo::SetDefaultVis | ( | ) |
Set default visual attributes;.
Definition at line 107 of file EmcROOTGeo.cxx.
References GetCrystal(), GetPart(), GetPhi(), GetTheta(), GetVolumeCrystal(), GetVolumePart(), GetVolumePhi(), GetVolumeTheta(), genRecEmupikp::i, m_Emc, m_kPart, m_kPhiBr, m_kPhiEc, m_kThetaBr, m_kThetaEc, and nPhi.
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).
Definition at line 700 of file EmcROOTGeo.cxx.
References GetPhiNb(), GetPhysicalCrystal(), GetPhysicalCrystal2(), GetThetaNb(), BesView::GetVisFull3DEmc(), and SubDetectorROOTGeo::m_DetectorsArray.
Referenced by BesClient::HandleViewOptionMenu().
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 }
void SubDetectorROOTGeo::SetDetectorOn | ( | ) | [virtual, inherited] |
Set all physicalNodes in m_DeteorsArray visible;.
Definition at line 73 of file SubDetectorROOTGeo.cxx.
References genRecEmupikp::i, and SubDetectorROOTGeo::m_DetectorsArray.
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;.
Definition at line 544 of file EmcROOTGeo.cxx.
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;.
Definition at line 764 of file EmcROOTGeo.cxx.
References Emc2DCrystal::AddInfo(), EmcID::barrel_ec(), Emc2DCrystal::ClearInfo(), Emc2DCrystal::CloseInfo(), RawDataUtil::EmcCharge(), RawDataUtil::EmcTime(), BesEvent::GetEmcDigiCol(), GetPart(), GetPhysicalCrystal(), GetPhysicalCrystal2(), gEvent, genRecEmupikp::i, SubDetectorROOTGeo::m_2DHitsArray, m_brCrystalColor, m_ecCrystalColor, m_Emc2DCrystal, m_EmcDigiCol, SubDetectorROOTGeo::m_HitsArray, m_PhyNodeOrgArray, EmcID::phi_module(), RestorePhyNode(), and EmcID::theta_module().
Referenced by BesEvent::SetHits().
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;.
Definition at line 64 of file EmcROOTGeo.cxx.
References SubDetectorROOTGeo::GetLogicalVolume(), GetPhi(), SubDetectorROOTGeo::GetTopVolume(), m_Emc, m_kPart, m_kPhiBr, m_kPhiEc, m_kThetaEc, m_NodeTheta, nPhi, and deljobs::string.
Referenced by InitFromGDML(), InitFromGdml(), and InitFromROOT().
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;.
Definition at line 583 of file EmcROOTGeo.cxx.
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;.
Definition at line 255 of file EmcROOTGeo.cxx.
References GetCrystal(), SubDetectorROOTGeo::GetLogicalVolume(), GetPart(), GetPhi(), GetTheta(), m_kPart, m_kPhiBr, m_kPhiEc, m_kThetaBr, m_kThetaEc, m_PhysicalCrystal, nPhi, and SubDetectorROOTGeo::SetChildNo().
Referenced by EmcRecROOTGeo::InitFromXML(), and BesGeometry::InitGeometry().
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;.
Definition at line 208 of file EmcROOTGeo.cxx.
References GetCrystal(), GetPart(), GetPhi(), GetTheta(), m_kPart, m_kPhiBr, m_kPhiEc, m_kThetaBr, m_kThetaEc, and nPhi.
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;.
Definition at line 870 of file EmcROOTGeo.cxx.
References GetPart(), BesView::GetVisEmcBarrel(), BesView::GetVisEmcEast(), BesView::GetVisEmcGlobal(), BesView::GetVisEmcWest(), genRecEmupikp::i, and SubDetectorROOTGeo::m_DetectorsArray.
Referenced by BesGeometry::Draw3D(), and BesClient::HandleViewOptionMenu().
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;.
Definition at line 889 of file EmcROOTGeo.cxx.
References GetPart(), BesView::GetVisEmcHitsBarrel(), BesView::GetVisEmcHitsEast(), BesView::GetVisEmcHitsGlobal(), BesView::GetVisEmcHitsWest(), genRecEmupikp::i, and SubDetectorROOTGeo::m_HitsArray.
Referenced by BesGeometry::Draw3D().
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;.
Definition at line 251 of file EmcROOTGeo.cxx.
References SubDetectorROOTGeo::GetLogicalVolume(), and genRecEmupikp::i.
Referenced by SetVolumeDefaultVis().
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;.
Definition at line 355 of file EmcROOTGeo.cxx.
References GetCrystal(), GetCrystal2(), GetPart(), GetPhi(), GetPhiNb(), GetTheta(), GetTheta2(), GetThetaNb(), GetVolumeCrystal(), GetVolumePart(), GetVolumePhi(), GetVolumeTheta(), genRecEmupikp::i, m_brCrystalColor, m_ecCrystalColor, m_Emc, m_EmcColor, m_kThetaBr, m_partColor, m_phiColor, m_thetaColor, nPhi, and SetVolumeAppendInVis().
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;.
Definition at line 100 of file EmcROOTGeo.h.
References m_Emc.
Referenced by InitFromROOT().
00100 { m_Emc = vol; }
const int EmcROOTGeo::EMC_CHARGE_FACTOR = 1000 [static, private] |
Definition at line 187 of file EmcROOTGeo.h.
const int EmcROOTGeo::EMC_TIME_FACTOR = 1 [static, private] |
Definition at line 186 of file EmcROOTGeo.h.
int SubDetectorROOTGeo::m_2DGeoInit [protected, inherited] |
Definition at line 79 of file SubDetectorROOTGeo.h.
Referenced by TofROOTGeo::Draw(), MucROOTGeo::Draw(), MdcROOTGeo::Draw(), Draw(), TofROOTGeo::Init2DGeometry(), MucROOTGeo::Init2DGeometry(), MdcROOTGeo::Init2DGeometry(), and Init2DGeometry().
TObjArray* SubDetectorROOTGeo::m_2DHitsArray [protected, inherited] |
Definition at line 85 of file SubDetectorROOTGeo.h.
Referenced by TofROOTGeo::SetHits(), MucROOTGeo::SetHits(), MdcROOTGeo::SetHits(), and SetHits().
int EmcROOTGeo::m_brCrystalColor [private] |
int SubDetectorROOTGeo::m_childNo [protected, inherited] |
Definition at line 67 of file SubDetectorROOTGeo.h.
Referenced by SubDetectorROOTGeo::SetChildNo(), TofROOTGeo::SetPhysicalNode(), MucROOTGeo::SetPhysicalNode(), and MdcROOTGeo::SetPhysicalNode().
TObjArray* SubDetectorROOTGeo::m_DetectorsArray [protected, inherited] |
Definition at line 83 of file SubDetectorROOTGeo.h.
Referenced by TofROOTGeo::SetDetector(), MucROOTGeo::SetDetector(), MdcROOTGeo::SetDetector(), SetDetector(), SubDetectorROOTGeo::SetDetectorOn(), SetVisEmcDetector(), MdcROOTGeo::SetVisMdcDetector(), MucROOTGeo::SetVisMucDetector(), and TofROOTGeo::SetVisTofDetector().
int EmcROOTGeo::m_ecCrystalColor [private] |
TGeoVolume* EmcROOTGeo::m_Emc [private] |
Definition at line 189 of file EmcROOTGeo.h.
TGeoVolume* EmcROOTGeo::m_Emc [private] |
Definition at line 106 of file EmcROOTGeo.h.
Referenced by GetVolumeEmc(), SetDefaultVis(), SetNode(), SetVolumeDefaultVis(), and SetVolumeEmc().
Emc2DCrystal* EmcROOTGeo::m_Emc2DCrystal[m_kPart][m_kPhiBr][m_kThetaBr] [private] |
Definition at line 206 of file EmcROOTGeo.h.
Referenced by Draw(), DrawHits(), Get2DCrystal(), Init2DGeometry(), and SetHits().
int EmcROOTGeo::m_EmcColor [private] |
const TObjArray* EmcROOTGeo::m_EmcDigiCol [private] |
TObjArray* SubDetectorROOTGeo::m_HitsArray [protected, inherited] |
Definition at line 84 of file SubDetectorROOTGeo.h.
Referenced by SubDetectorROOTGeo::GetHit(), SubDetectorROOTGeo::GetHitsNum(), TofROOTGeo::SetHits(), MucROOTGeo::SetHits(), MdcROOTGeo::SetHits(), SetHits(), SetVisEmcHits(), MdcROOTGeo::SetVisMdcHits(), MucROOTGeo::SetVisMucHits(), and TofROOTGeo::SetVisTofHits().
int EmcROOTGeo::m_kNbEc [private] |
Definition at line 176 of file EmcROOTGeo.h.
static const int EmcROOTGeo::m_kPart = 3 [static, private] |
Definition at line 98 of file EmcROOTGeo.h.
Referenced by EmcROOTGeo(), GetPartNb(), SetAllVisible(), SetDefaultVis(), SetNode(), SetPhysicalNode(), and SetQuarterVisible().
static const int EmcROOTGeo::m_kPhiBr = 120 [static, private] |
Definition at line 99 of file EmcROOTGeo.h.
Referenced by EmcROOTGeo(), GetPhiNb(), SetAllVisible(), SetDefaultVis(), SetNode(), SetPhysicalNode(), and SetQuarterVisible().
int EmcROOTGeo::m_kPhiEc [private] |
Definition at line 103 of file EmcROOTGeo.h.
Referenced by EmcROOTGeo(), GetPhiNb(), SetAllVisible(), SetDefaultVis(), SetNode(), SetPhysicalNode(), and SetQuarterVisible().
int EmcROOTGeo::m_kRealNbEc [private] |
Definition at line 177 of file EmcROOTGeo.h.
int EmcROOTGeo::m_kSectorEc [private] |
Definition at line 175 of file EmcROOTGeo.h.
static const int EmcROOTGeo::m_kThetaBr = 44 [static, private] |
Definition at line 100 of file EmcROOTGeo.h.
Referenced by EmcROOTGeo(), GetThetaNb(), Init2DGeometry(), SetAllVisible(), SetDefaultVis(), SetPhysicalNode(), SetQuarterVisible(), and SetVolumeDefaultVis().
int EmcROOTGeo::m_kThetaEc [private] |
Definition at line 104 of file EmcROOTGeo.h.
Referenced by EmcROOTGeo(), GetPhiNb(), GetThetaNb(), SetAllVisible(), SetDefaultVis(), SetNode(), SetPhysicalNode(), and SetQuarterVisible().
TGeoNode* EmcROOTGeo::m_NodePart[m_kPart] [private] |
Definition at line 190 of file EmcROOTGeo.h.
TGeoNode* EmcROOTGeo::m_NodePhi[m_kPart][m_kPhiBr] [private] |
Definition at line 191 of file EmcROOTGeo.h.
TGeoNode* EmcROOTGeo::m_NodeTheta[m_kPart][m_kPhiBr][m_kThetaBr] [private] |
Definition at line 192 of file EmcROOTGeo.h.
TGeoNode* EmcROOTGeo::m_NodeTheta[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] |
TGeoPhysicalNode* EmcROOTGeo::m_PhysicalCrystal[m_kPart][m_kPhiBr][m_kThetaBr] [private] |
Definition at line 194 of file EmcROOTGeo.h.
TGeoPhysicalNode* EmcROOTGeo::m_PhysicalCrystal[m_kPart][m_kPhiBr][m_kThetaBr] [private] |
Definition at line 108 of file EmcROOTGeo.h.
Referenced by EmcROOTGeo(), GetPhysicalCrystal(), and SetPhysicalNode().
TGeoPhysicalNode* EmcROOTGeo::m_PhysicalCrystal2[m_kPart][m_kPhiBr][m_kThetaBr] [private] |
int SubDetectorROOTGeo::m_ROOTGeoInit [protected, inherited] |
Definition at line 66 of file SubDetectorROOTGeo.h.
Referenced by TofROOTGeo::Init2DGeometry(), MucROOTGeo::Init2DGeometry(), MdcROOTGeo::Init2DGeometry(), Init2DGeometry(), TofROOTGeo::InitFromGDML(), TofROOTGeo::InitFromGdml(), MucROOTGeo::InitFromGDML(), MucROOTGeo::InitFromGdml(), MdcROOTGeo::InitFromGDML(), MdcROOTGeo::InitFromGdml(), InitFromGDML(), InitFromGdml(), TofROOTGeo::InitFromROOT(), MucROOTGeo::InitFromROOT(), MdcROOTGeo::InitFromROOT(), InitFromROOT(), and SubDetectorROOTGeo::IsInitialized().
int EmcROOTGeo::m_thetaColor [private] |
TGeoVolume* SubDetectorROOTGeo::m_TopVolume [protected, inherited] |
Definition at line 81 of file SubDetectorROOTGeo.h.
TGeoVolume* SubDetectorROOTGeo::m_TopVolume [protected, inherited] |
Definition at line 69 of file SubDetectorROOTGeo.h.
Referenced by SubDetectorROOTGeo::GetTopVolume(), and SubDetectorROOTGeo::ReadGdml().