#include <TouchableToHistory.h>
Public Types | |
typedef std::map< Nav_Story, int > | DirectMapType |
typedef std::map< Nav_Story, nav_type > | MapType |
typedef std::vector< std::pair < int, std::string > > | Nav_Story |
typedef std::vector< int > | nav_type |
Public Member Functions | |
void | buildAll () |
DDFilteredView & | getFilteredView (const G4VTouchable &, DDFilteredView &) |
Nav_Story | getNavStory (DDFilteredView &) |
nav_type | getNavType (const G4VTouchable &) |
G4VPhysicalVolume & | getTouchable (DDFilteredView &) |
TouchableToHistory (const DDCompactView &cpv, const GeometricDet &det) | |
int | touchableToInt (const G4VTouchable *) |
Nav_Story | touchableToNavStory (const G4VTouchable *) |
nav_type | touchableToNavType (const G4VTouchable *) |
Private Member Functions | |
void | dumpG4VPV (const G4VTouchable *) |
Private Attributes | |
bool | alreadySet |
const DDCompactView * | myCompactView |
DirectMapType | myDirectMap |
const GeometricDet * | myGeomDet |
MapType | myMap |
Definition at line 16 of file TouchableToHistory.h.
typedef std::map<Nav_Story,int> TouchableToHistory::DirectMapType |
Definition at line 23 of file TouchableToHistory.h.
typedef std::map<Nav_Story,nav_type> TouchableToHistory::MapType |
Definition at line 22 of file TouchableToHistory.h.
typedef std::vector<std::pair<int,std::string> > TouchableToHistory::Nav_Story |
Definition at line 21 of file TouchableToHistory.h.
typedef std::vector<int> TouchableToHistory::nav_type |
Definition at line 20 of file TouchableToHistory.h.
TouchableToHistory::TouchableToHistory | ( | const DDCompactView & | cpv, |
const GeometricDet & | det | ||
) | [inline] |
Definition at line 24 of file TouchableToHistory.h.
: alreadySet(false), myCompactView(&cpv), myGeomDet(&det) {}
void TouchableToHistory::buildAll | ( | ) |
Definition at line 17 of file TouchableToHistory.cc.
References alreadySet, GeometricDet::deepComponents(), estimatePileup::hist, myDirectMap, myGeomDet, myMap, matplotRender::t, and touchableToNavStory().
Referenced by getFilteredView(), getNavStory(), touchableToInt(), and touchableToNavType().
{ if (alreadySet) return; alreadySet = true; G4Navigator* theStdNavigator = G4TransportationManager::GetTransportationManager()->GetNavigatorForTracking(); G4Navigator theNavigator; theNavigator.SetWorldVolume(theStdNavigator->GetWorldVolume()); std::vector<const GeometricDet*> allSensitiveDets; myGeomDet->deepComponents(allSensitiveDets); edm::LogInfo("TrackerSimInfoNumbering")<<" TouchableTo History: got "<<allSensitiveDets.size()<<" sensitive detectors from TrackerMapDDDtoID."; for ( std::vector<const GeometricDet*>::const_iterator it = allSensitiveDets.begin(); it != allSensitiveDets.end(); ++it) { DDTranslation const & t = (*it)->translation(); theNavigator.LocateGlobalPointAndSetup(G4ThreeVector(t.x(),t.y(),t.z())); G4TouchableHistory * hist = theNavigator.CreateTouchableHistory(); TouchableToHistory::Nav_Story st = touchableToNavStory(hist); #ifdef DEBUG u_int32_t oldsize = myDirectMap.size(); #endif myMap[st] = nav_type((*it)->navType().begin(),(*it)->navType().end()); myDirectMap[st] = (*it)->geographicalID(); /* #ifdef DEBUG LogDebug("TrackerSimDebugNumbering")<< " INSERTING "<<view.logicalPart().name()<<" "<<t<<" "<<hist->GetVolume()->GetLogicalVolume()->GetName(); LogDebug("TrackerSimDebugNumbering")<<" Sensitive: "<<hist->GetVolume()->GetLogicalVolume()->GetSensitiveDetector()<<std::endl; LogDebug("TrackerSimDebugNumbering")<<"Now size is "<<myDirectMap.size()<<std::endl; if (oldsize == myDirectMap.size()) edm::LogError("TrackerSimInfoNumbering")<< "Touchable to History Error!!!!"; dumpG4VPV(hist); #endif */ delete hist; } edm::LogInfo("TrackerSimInfoNumbering")<<" TouchableToHistory: mapped "<<myDirectMap.size()<<" detectors to G4."; if (myDirectMap.size() != allSensitiveDets.size()){ edm::LogError("TrackerSimInfoNumbering")<<" ERROR: DDD sensitive detectors do not match Geant4 ones."; //FIXME use throw abort(); } }
void TouchableToHistory::dumpG4VPV | ( | const G4VTouchable * | v | ) | [private] |
Definition at line 145 of file TouchableToHistory.cc.
References gen::k, and LogDebug.
Referenced by touchableToInt(), and touchableToNavType().
{ int levels = v->GetHistoryDepth(); LogDebug("TrackerSimDebugNumbering")<<" NAME : "<<v->GetVolume()->GetLogicalVolume()->GetName(); for (int k=0; k<=levels; k++){ LogDebug("TrackerSimInfoNumbering") <<" Hist: "<< v->GetVolume(k)->GetLogicalVolume()->GetName()<< " Copy "<< v->GetVolume(k)->GetCopyNo(); } }
DDFilteredView & TouchableToHistory::getFilteredView | ( | const G4VTouchable & | t, |
DDFilteredView & | f | ||
) |
Definition at line 70 of file TouchableToHistory.cc.
References alreadySet, buildAll(), f, DDFilteredView::goTo(), myMap, and touchableToNavStory().
{ if (alreadySet == false) buildAll(); f.goTo(myMap[touchableToNavStory(&t)]); return f; }
TouchableToHistory::Nav_Story TouchableToHistory::getNavStory | ( | DDFilteredView & | i | ) |
Definition at line 82 of file TouchableToHistory.cc.
References alreadySet, buildAll(), estimatePileup::hist, matplotRender::t, cond::rpcobtemp::temp, touchableToNavStory(), and DDFilteredView::translation().
{ if (alreadySet == false) buildAll(); DDTranslation t = i.translation(); G4Navigator* theStdNavigator = G4TransportationManager::GetTransportationManager()->GetNavigatorForTracking(); G4Navigator theNavigator; theNavigator.SetWorldVolume(theStdNavigator->GetWorldVolume()); theNavigator.LocateGlobalPointAndSetup(G4ThreeVector(t.x(),t.y(),t.z())); G4TouchableHistory* hist = theNavigator.CreateTouchableHistory(); TouchableToHistory::Nav_Story temp = touchableToNavStory(hist); delete hist; return (temp); }
TouchableToHistory::nav_type TouchableToHistory::getNavType | ( | const G4VTouchable & | t | ) |
Definition at line 76 of file TouchableToHistory.cc.
References alreadySet, myMap, and touchableToNavStory().
{ if (alreadySet == false) edm::LogError("TrackerSimInfoNumbering")<<" NOT READY "; return myMap[touchableToNavStory(&t)]; }
G4VPhysicalVolume& TouchableToHistory::getTouchable | ( | DDFilteredView & | ) |
int TouchableToHistory::touchableToInt | ( | const G4VTouchable * | v | ) |
Definition at line 134 of file TouchableToHistory.cc.
References alreadySet, buildAll(), dumpG4VPV(), LogDebug, myDirectMap, and touchableToNavStory().
Referenced by TrackerG4SimHitNumberingScheme::g4ToNumberingScheme().
{ if (alreadySet == false) buildAll(); dumpG4VPV(v); LogDebug("TrackerSimDebugNumbering")<<" Returning: "<< myDirectMap[touchableToNavStory(v)]<<std::endl; return myDirectMap[touchableToNavStory(v)]; }
TouchableToHistory::Nav_Story TouchableToHistory::touchableToNavStory | ( | const G4VTouchable * | v | ) |
Definition at line 97 of file TouchableToHistory.cc.
References gen::k, LogDebug, and cond::rpcobtemp::temp.
Referenced by buildAll(), getFilteredView(), getNavStory(), getNavType(), touchableToInt(), and touchableToNavType().
{ static G4String tobinactive("TOBInactive"); Nav_Story temp; #ifdef DEBUG std::vector<int> debugint; std::vector<std::string> debugstring; #endif int levels = v->GetHistoryDepth(); for (int k=0; k<=levels; k++){ if (v->GetVolume(k)->GetLogicalVolume()->GetName() != tobinactive) { temp.push_back( std::pair<int,std::string> (v->GetVolume(k)->GetCopyNo(), v->GetVolume(k)->GetLogicalVolume()->GetName())); #ifdef DEBUG debugint.push_back(v->GetVolume(k)->GetCopyNo()); debugstring.push_back(v->GetVolume(k)->GetLogicalVolume()->GetName()); #endif } } #ifdef DEBUG // LogDebug("TrackerSimDebugNumbering")<<" G4 TouchableToHistory "<< debugint; for(u_int32_t jj=0;jj<debugstring.size();jj++)LogDebug("TrackerSimDebugNumbering")<<" "<<debugstring[jj]; #endif return temp; }
TouchableToHistory::nav_type TouchableToHistory::touchableToNavType | ( | const G4VTouchable * | v | ) |
Definition at line 125 of file TouchableToHistory.cc.
References alreadySet, buildAll(), dumpG4VPV(), myMap, and touchableToNavStory().
{ if (alreadySet == false) buildAll(); dumpG4VPV(v); return myMap[touchableToNavStory(v)]; }
bool TouchableToHistory::alreadySet [private] |
Definition at line 38 of file TouchableToHistory.h.
Referenced by buildAll(), getFilteredView(), getNavStory(), getNavType(), touchableToInt(), and touchableToNavType().
const DDCompactView* TouchableToHistory::myCompactView [private] |
Definition at line 39 of file TouchableToHistory.h.
DirectMapType TouchableToHistory::myDirectMap [private] |
Definition at line 37 of file TouchableToHistory.h.
Referenced by buildAll(), and touchableToInt().
const GeometricDet* TouchableToHistory::myGeomDet [private] |
Definition at line 40 of file TouchableToHistory.h.
Referenced by buildAll().
MapType TouchableToHistory::myMap [private] |
Definition at line 36 of file TouchableToHistory.h.
Referenced by buildAll(), getFilteredView(), getNavType(), and touchableToNavType().