ATLAS Offline Software
Loading...
Searching...
No Matches
PhiSectorManager::Imp Class Reference

Public Member Functions

template<class T>
void updateRepresentationsOfVolsAroundZAxis_Specific (std::map< SoSwitch *, std::pair< T *, SoSeparator * > > &volaroundZ)
void getPhiExtentOfShape (const SoTubs *tubs, double &phistart, double &phispan)
void getPhiExtentOfShape (const SoPcons *pcons, double &phistart, double &phispan)
void getPhiExtentOfShape (const SoCons *cons, double &phistart, double &phispan)
void getPhiExtentOfShape (const SoLAr *lar, double &phistart, double &phispan)
void copyShapeFieldsAndOverridePhiRange (const SoTubs *source, SoTubs *dest, double phistart, double phispan)
void copyShapeFieldsAndOverridePhiRange (const SoPcons *source, SoPcons *dest, double phistart, double phispan)
void copyShapeFieldsAndOverridePhiRange (const SoCons *source, SoCons *dest, double phistart, double phispan)
void copyShapeFieldsAndOverridePhiRange (const SoLAr *source, SoLAr *dest, double phistart, double phispan)

Public Attributes

PhiSectionWidgetphisectionwidget = nullptr
IVP1Systemsystem = nullptr
std::map< VP1GeoFlags::SubSystemFlag, SoSeparator * > subsysflag2sep
std::map< VP1GeoFlags::SubSystemFlag, SoSeparator * > subsysflag2labelsep
std::map< VP1GeoFlags::SubSystemFlag, std::map< int, VP1ExtraSepLayerHelper * > > subsysflag_2_iphi2sephelper
std::map< VP1GeoFlags::SubSystemFlag, std::map< int, VP1ExtraSepLayerHelper * > > subsysflag_2_iphi2labelsephelper
std::map< VP1GeoFlags::SubSystemFlag, VP1ExtraSepLayerHelper * > subsysflag_2_volAroundZSepHelper
std::map< int, std::set< SoSwitch * > > iphi2switches
std::map< int, std::set< SoSwitch * > > iphi2Labelswitches
std::map< SoSwitch *, std::pair< SoTubs *, SoSeparator * > > volaroundZ_tubs
std::map< SoSwitch *, std::pair< SoPcons *, SoSeparator * > > volaroundZ_pcons
std::map< SoSwitch *, std::pair< SoCons *, SoSeparator * > > volaroundZ_cons
std::map< SoSwitch *, std::pair< SoLAr *, SoSeparator * > > volaroundZ_lar
std::map< SoSwitch *, std::pair< double, bool > > volaroundZ_switch2transfinfo
int nactivelargechanges = 0
QVector< bool > currentlyEnabledPhiSectors

Detailed Description

Definition at line 41 of file PhiSectorManager.cxx.

Member Function Documentation

◆ copyShapeFieldsAndOverridePhiRange() [1/4]

void PhiSectorManager::Imp::copyShapeFieldsAndOverridePhiRange ( const SoCons * source,
SoCons * dest,
double phistart,
double phispan )

Definition at line 401 of file PhiSectorManager.cxx.

402{
403 dest->fRmin1.setValue(source->fRmin1.getValue());
404 dest->fRmin2.setValue(source->fRmin2.getValue());
405 dest->fRmax1.setValue(source->fRmax1.getValue());
406 dest->fRmax2.setValue(source->fRmax2.getValue());
407 dest->fDz.setValue(source->fDz.getValue());
408 dest->fSPhi.setValue(phistart);
409 dest->fDPhi.setValue(phispan);
410}

◆ copyShapeFieldsAndOverridePhiRange() [2/4]

void PhiSectorManager::Imp::copyShapeFieldsAndOverridePhiRange ( const SoLAr * source,
SoLAr * dest,
double phistart,
double phispan )

Definition at line 420 of file PhiSectorManager.cxx.

421{
422 dest->fRmin = source->fRmin;
423 dest->fRmax = source->fRmax;
424 dest->fDz = source->fDz;
425 dest->fSPhi.setValue(phistart);
426 dest->fDPhi.setValue(phispan);
427}

◆ copyShapeFieldsAndOverridePhiRange() [3/4]

void PhiSectorManager::Imp::copyShapeFieldsAndOverridePhiRange ( const SoPcons * source,
SoPcons * dest,
double phistart,
double phispan )

Definition at line 383 of file PhiSectorManager.cxx.

384{
385 dest->fRmin = source->fRmin;
386 dest->fRmax = source->fRmax;
387 dest->fDz = source->fDz;
388 dest->fSPhi.setValue(phistart);
389 dest->fDPhi.setValue(phispan);
390 dest->drawEdgeLines.setValue(source->drawEdgeLines.getValue());
391}

◆ copyShapeFieldsAndOverridePhiRange() [4/4]

void PhiSectorManager::Imp::copyShapeFieldsAndOverridePhiRange ( const SoTubs * source,
SoTubs * dest,
double phistart,
double phispan )

Definition at line 365 of file PhiSectorManager.cxx.

366{
367 dest->pRMin.setValue(source->pRMin.getValue());
368 dest->pRMax.setValue(source->pRMax.getValue());
369 dest->pDz.setValue(source->pDz.getValue());
370 dest->pSPhi.setValue(phistart);
371 dest->pDPhi.setValue(phispan);
372 dest->drawEdgeLines.setValue(source->drawEdgeLines.getValue());
373}

◆ getPhiExtentOfShape() [1/4]

void PhiSectorManager::Imp::getPhiExtentOfShape ( const SoCons * cons,
double & phistart,
double & phispan )

Definition at line 394 of file PhiSectorManager.cxx.

395{
396 phistart = cons->fSPhi.getValue();
397 phispan = cons->fDPhi.getValue();
398}
SoSFFloat fDPhi
Delta-angle, in radians.
Definition SoCons.h:87
SoSFFloat fSPhi
Starting angle, in radians.
Definition SoCons.h:83

◆ getPhiExtentOfShape() [2/4]

void PhiSectorManager::Imp::getPhiExtentOfShape ( const SoLAr * lar,
double & phistart,
double & phispan )

Definition at line 413 of file PhiSectorManager.cxx.

414{
415 phistart = lar->fSPhi.getValue();
416 phispan = lar->fDPhi.getValue();
417}
SoSFFloat fSPhi
Starting angle, in radians.
Definition SoLAr.h:61
SoSFFloat fDPhi
Delta-angle, in radians.
Definition SoLAr.h:65

◆ getPhiExtentOfShape() [3/4]

void PhiSectorManager::Imp::getPhiExtentOfShape ( const SoPcons * pcons,
double & phistart,
double & phispan )

Definition at line 376 of file PhiSectorManager.cxx.

377{
378 phistart = pcons->fSPhi.getValue();
379 phispan = pcons->fDPhi.getValue();
380}
SoSFFloat fDPhi
Delta-angle, in radians.
Definition SoPcons.h:68
SoSFFloat fSPhi
Starting angle, in radians.
Definition SoPcons.h:64

◆ getPhiExtentOfShape() [4/4]

void PhiSectorManager::Imp::getPhiExtentOfShape ( const SoTubs * tubs,
double & phistart,
double & phispan )

Definition at line 358 of file PhiSectorManager.cxx.

359{
360 phistart = tubs->pSPhi.getValue();
361 phispan = tubs->pDPhi.getValue();
362}
SoSFFloat pDPhi
Delta-angle, in radians.
Definition SoTubs.h:78
SoSFFloat pSPhi
Starting angle, in radians.
Definition SoTubs.h:74

◆ updateRepresentationsOfVolsAroundZAxis_Specific()

template<class T>
void PhiSectorManager::Imp::updateRepresentationsOfVolsAroundZAxis_Specific ( std::map< SoSwitch *, std::pair< T *, SoSeparator * > > & volaroundZ)

Definition at line 431 of file PhiSectorManager.cxx.

432{
433
434 typename std::map<SoSwitch*,std::pair<T*,SoSeparator*> >::iterator it, itE = volaroundZ.end();
435 for (it = volaroundZ.begin();it!=itE;++it) {
436 if (phisectionwidget->allSectorsOff()) {
437 if (it->first->whichChild.getValue() != SO_SWITCH_NONE)
438 it->first->whichChild = SO_SWITCH_NONE;
439 } else if (phisectionwidget->allSectorsOn()) {
440 if (it->first->whichChild.getValue() != 0)
441 it->first->whichChild = 0;
442 } else {
443 //Update and use sep node:
444 SbBool save = it->first->enableNotify(false);
445 SoSeparator * sep = it->second.second;
446 sep->removeAllChildren();
447 //Figure out phirot/yrot info:
448 std::map<SoSwitch*,std::pair<double,bool> >::iterator it_transfinfo = volaroundZ_switch2transfinfo.find(it->first);
449 if (it_transfinfo==volaroundZ_switch2transfinfo.end()) {
450 system->message("updateRepresentationsOfVolsAroundZAxis_Specific ERROR: Inconsistent maps");
451 continue;
452 }
453 double phirot = it_transfinfo->second.first;
454 bool rotaroundy = it_transfinfo->second.second;
455
456 double sphi, dphi;
457 getPhiExtentOfShape(it->second.first,sphi,dphi);
458
459 QList<VP1Interval> ranges = phisectionwidget->enabledPhiRanges( sphi, sphi+dphi );
460
461 int n = ranges.count();
462 for (int i = 0; i< n; ++i) {
463 T * shape = new T;
464 double deltaphi = ranges.at(i).length();
465 double startphi = rotaroundy ? - ranges.at(i).upper() - 2*M_PI + phirot : ranges.at(i).lower()-phirot;
466 while (startphi<0) startphi += 2*M_PI;
467 while (startphi+deltaphi>2*M_PI) startphi -= 2*M_PI;
468 copyShapeFieldsAndOverridePhiRange( it->second.first, shape, startphi, deltaphi );
469 sep->addChild(shape);
470 }
471
472 it->first->whichChild = 1;
473 it->first->enableNotify(save);
474 if (save)
475 it->first->touch();
476
477 }
478 }
479
480}
#define M_PI
PhiSectionWidget * phisectionwidget
void copyShapeFieldsAndOverridePhiRange(const SoTubs *source, SoTubs *dest, double phistart, double phispan)
std::map< SoSwitch *, std::pair< double, bool > > volaroundZ_switch2transfinfo
void getPhiExtentOfShape(const SoTubs *tubs, double &phistart, double &phispan)
unsigned long long T
save(self, fileName="./columbo.out")
Definition checkTP.py:176

Member Data Documentation

◆ currentlyEnabledPhiSectors

QVector<bool> PhiSectorManager::Imp::currentlyEnabledPhiSectors

Definition at line 74 of file PhiSectorManager.cxx.

◆ iphi2Labelswitches

std::map<int,std::set<SoSwitch*> > PhiSectorManager::Imp::iphi2Labelswitches

Definition at line 54 of file PhiSectorManager.cxx.

◆ iphi2switches

std::map<int,std::set<SoSwitch*> > PhiSectorManager::Imp::iphi2switches

Definition at line 53 of file PhiSectorManager.cxx.

◆ nactivelargechanges

int PhiSectorManager::Imp::nactivelargechanges = 0

Definition at line 72 of file PhiSectorManager.cxx.

◆ phisectionwidget

PhiSectionWidget* PhiSectorManager::Imp::phisectionwidget = nullptr

Definition at line 43 of file PhiSectorManager.cxx.

◆ subsysflag2labelsep

std::map<VP1GeoFlags::SubSystemFlag,SoSeparator *> PhiSectorManager::Imp::subsysflag2labelsep

Definition at line 47 of file PhiSectorManager.cxx.

◆ subsysflag2sep

std::map<VP1GeoFlags::SubSystemFlag,SoSeparator *> PhiSectorManager::Imp::subsysflag2sep

Definition at line 46 of file PhiSectorManager.cxx.

◆ subsysflag_2_iphi2labelsephelper

std::map<VP1GeoFlags::SubSystemFlag,std::map<int,VP1ExtraSepLayerHelper*> > PhiSectorManager::Imp::subsysflag_2_iphi2labelsephelper

Definition at line 49 of file PhiSectorManager.cxx.

◆ subsysflag_2_iphi2sephelper

std::map<VP1GeoFlags::SubSystemFlag,std::map<int,VP1ExtraSepLayerHelper*> > PhiSectorManager::Imp::subsysflag_2_iphi2sephelper

Definition at line 48 of file PhiSectorManager.cxx.

◆ subsysflag_2_volAroundZSepHelper

std::map<VP1GeoFlags::SubSystemFlag,VP1ExtraSepLayerHelper*> PhiSectorManager::Imp::subsysflag_2_volAroundZSepHelper

Definition at line 50 of file PhiSectorManager.cxx.

◆ system

IVP1System* PhiSectorManager::Imp::system = nullptr

Definition at line 44 of file PhiSectorManager.cxx.

◆ volaroundZ_cons

std::map<SoSwitch*,std::pair<SoCons*,SoSeparator*> > PhiSectorManager::Imp::volaroundZ_cons

Definition at line 59 of file PhiSectorManager.cxx.

◆ volaroundZ_lar

std::map<SoSwitch*,std::pair<SoLAr*,SoSeparator*> > PhiSectorManager::Imp::volaroundZ_lar

Definition at line 60 of file PhiSectorManager.cxx.

◆ volaroundZ_pcons

std::map<SoSwitch*,std::pair<SoPcons*,SoSeparator*> > PhiSectorManager::Imp::volaroundZ_pcons

Definition at line 58 of file PhiSectorManager.cxx.

◆ volaroundZ_switch2transfinfo

std::map<SoSwitch*,std::pair<double,bool> > PhiSectorManager::Imp::volaroundZ_switch2transfinfo

Definition at line 61 of file PhiSectorManager.cxx.

◆ volaroundZ_tubs

std::map<SoSwitch*,std::pair<SoTubs*,SoSeparator*> > PhiSectorManager::Imp::volaroundZ_tubs

Definition at line 57 of file PhiSectorManager.cxx.


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