CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
List of all members | Classes | Public Types | Public Member Functions | Static Public Member Functions | Static Public Attributes | Private Attributes
FWGeometry Class Reference

#include <FWGeometry.h>

Classes

struct  GeomDetInfo
 
struct  Range
 
class  VersionInfo
 

Public Types

enum  Detector {
  Tracker = 1, Muon = 2, Ecal = 3, Hcal = 4,
  Calo = 5
}
 
typedef std::vector
< FWGeometry::GeomDetInfo
IdToInfo
 
typedef std::vector
< FWGeometry::GeomDetInfo >
::const_iterator 
IdToInfoItr
 
enum  SubDetector {
  PixelBarrel = 1, PixelEndcap = 2, TIB = 3, TID = 4,
  TOB = 5, TEC = 6, CSC = 7, DT = 8,
  RPCBarrel = 9, RPCEndcap = 10, GEM = 11, ME0 = 12
}
 

Public Member Functions

void clear (void)
 
bool contains (unsigned int id) const
 
IdToInfoItr find (unsigned int) const
 
 FWGeometry (void)
 
const float * getCorners (unsigned int id) const
 
TEveGeoShape * getEveShape (unsigned int id) const
 
std::vector< unsigned int > getMatchedIds (Detector det, SubDetector subdet) const
 
const TGeoMatrix * getMatrix (unsigned int id) const
 
const float * getParameters (unsigned int id) const
 
TGeoShape * getShape (unsigned int id) const
 
TGeoShape * getShape (const GeomDetInfo &info) const
 
const float * getShapePars (unsigned int id) const
 
void initMap (const FWRecoGeom::InfoMap &map)
 
void loadMap (const char *fileName)
 
void localToGlobal (unsigned int id, const float *local, float *global, bool translatep=true) const
 
void localToGlobal (unsigned int id, const float *local1, float *global1, const float *local2, float *global2, bool translatep=true) const
 
void localToGlobal (const GeomDetInfo &info, const float *local, float *global, bool translatep=true) const
 
bool match_id (const GeomDetInfo &o, unsigned int mask) const
 
const VersionInfoversionInfo () const
 
 ~FWGeometry (void)
 

Static Public Member Functions

static TFile * findFile (const char *fileName)
 

Static Public Attributes

static const int kDetOffset = 28
 
static const int kSubdetOffset = 25
 

Private Attributes

IdToInfo m_idToInfo
 
std::map< unsigned int,
TGeoMatrix * > 
m_idToMatrix
 
std::string m_prodTag
 
VersionInfo m_versionInfo
 

Detailed Description

Definition at line 24 of file FWGeometry.h.

Member Typedef Documentation

Definition at line 106 of file FWGeometry.h.

typedef std::vector<FWGeometry::GeomDetInfo>::const_iterator FWGeometry::IdToInfoItr

Definition at line 107 of file FWGeometry.h.

Member Enumeration Documentation

Enumerator
Tracker 
Muon 
Ecal 
Hcal 
Calo 

Definition at line 30 of file FWGeometry.h.

Enumerator
PixelBarrel 
PixelEndcap 
TIB 
TID 
TOB 
TEC 
CSC 
DT 
RPCBarrel 
RPCEndcap 
GEM 
ME0 

Definition at line 31 of file FWGeometry.h.

Constructor & Destructor Documentation

FWGeometry::FWGeometry ( void  )

Definition at line 19 of file FWGeometry.cc.

20 {}
FWGeometry::~FWGeometry ( void  )

Definition at line 22 of file FWGeometry.cc.

23 {}

Member Function Documentation

void FWGeometry::clear ( void  )
inline
bool FWGeometry::contains ( unsigned int  id) const
inline
FWGeometry::IdToInfoItr FWGeometry::find ( unsigned int  id) const

Definition at line 358 of file FWGeometry.cc.

References begin, end, and m_idToInfo.

Referenced by FWSiStripClusterProxyBuilder::build(), FWCSCRecHitProxyBuilder::build(), FWRPCRecHitProxyBuilder::buildViewType(), FWGEMRecHitProxyBuilder::buildViewType(), FWDTDigiProxyBuilder::buildViewType(), contains(), getCorners(), getEveShape(), getMatrix(), getParameters(), getShape(), getShapePars(), localToGlobal(), and FWRPZViewGeometry::makeMuonGeometryRhoZ().

359 {
362  return std::lower_bound( begin, end, id );
363 }
#define end
Definition: vmac.h:37
#define begin
Definition: vmac.h:30
IdToInfo m_idToInfo
Definition: FWGeometry.h:124
std::vector< FWGeometry::GeomDetInfo >::const_iterator IdToInfoItr
Definition: FWGeometry.h:107
TFile * FWGeometry::findFile ( const char *  fileName)
static

Definition at line 26 of file FWGeometry.cc.

References MillePedeFileConverter_cfg::fileName, personalPlayback::fn, personalPlayback::fp, i, cmsHarvester::path, mergeAndRegister::paths, and AlCaHLTBitMon_QueryRunRegistry::string.

Referenced by loadMap(), and FWGeometryTableViewManager::setGeoManagerFromFile().

27 {
28  std::string searchPath = ".";
29 
30  if (gSystem->Getenv( "CMSSW_SEARCH_PATH" ))
31  {
32 
33  TString paths = gSystem->Getenv( "CMSSW_SEARCH_PATH" );
34 
35  TObjArray* tokens = paths.Tokenize( ":" );
36  for( int i = 0; i < tokens->GetEntries(); ++i )
37  {
38  TObjString* path = (TObjString*)tokens->At( i );
39  searchPath += ":";
40  searchPath += path->GetString();
41  if (gSystem->Getenv("CMSSW_VERSION"))
42  searchPath += "/Fireworks/Geometry/data/";
43  }
44  }
45 
46  TString fn = fileName;
47  const char* fp = gSystem->FindFile(searchPath.c_str(), fn, kFileExists);
48  return fp ? TFile::Open( fp) : 0;
49 }
int i
Definition: DBlmapReader.cc:9
tuple path
else: Piece not in the list, fine.
const float * FWGeometry::getCorners ( unsigned int  id) const
TEveGeoShape * FWGeometry::getEveShape ( unsigned int  id) const

Definition at line 253 of file FWGeometry.cc.

References find(), fwLog, getShape(), info(), fwlog::kWarning, m_idToInfo, FWGeometry::GeomDetInfo::matrix, and FWGeometry::GeomDetInfo::translation.

Referenced by FWTrackHitsDetailView::addModules(), FWConvTrackHitsDetailView::addModules(), FWSiPixelClusterDetProxyBuilder::build(), FWTracksModulesProxyBuilder::build(), FWCSCSegmentProxyBuilder::build(), FWRPCRecHitProxyBuilder::buildViewType(), FWGEMRecHitProxyBuilder::buildViewType(), FWDTSegmentProxyBuilder::buildViewType(), FWRPZViewGeometry::makeMuonGeometryRhoPhi(), FWRPZViewGeometry::makeMuonGeometryRhoZ(), FWRPZViewGeometry::showGEM(), FWRPZViewGeometry::showME0(), FW3DViewGeometry::showMuonBarrel(), FW3DViewGeometry::showMuonBarrelFull(), FW3DViewGeometry::showMuonEndcap(), FWRPZViewGeometry::showPixelBarrel(), FW3DViewGeometry::showPixelBarrel(), FWRPZViewGeometry::showPixelEndcap(), FW3DViewGeometry::showPixelEndcap(), FWRPZViewGeometry::showRpcEndcap(), FWRPZViewGeometry::showTrackerBarrel(), FW3DViewGeometry::showTrackerBarrel(), FWRPZViewGeometry::showTrackerEndcap(), and FW3DViewGeometry::showTrackerEndcap().

254 {
255  IdToInfoItr it = FWGeometry::find( id );
256  if( it == m_idToInfo.end())
257  {
258  fwLog( fwlog::kWarning ) << "no reco geoemtry found for id " << id << std::endl;
259  return 0;
260  }
261  else
262  {
263  const GeomDetInfo& info = *it;
264  double array[16] = { info.matrix[0], info.matrix[3], info.matrix[6], 0.,
265  info.matrix[1], info.matrix[4], info.matrix[7], 0.,
266  info.matrix[2], info.matrix[5], info.matrix[8], 0.,
267  info.translation[0], info.translation[1], info.translation[2], 1.
268  };
269  TEveGeoManagerHolder gmgr( TEveGeoShape::GetGeoMangeur());
270  TEveGeoShape* shape = new TEveGeoShape(TString::Format("RecoGeom Id=%u", id));
271  TGeoShape* geoShape = getShape( info );
272  shape->SetShape( geoShape );
273  // Set transformation matrix from a column-major array
274  shape->SetTransMatrix( array );
275  return shape;
276  }
277 }
static const TGPicture * info(bool iBackgroundIsBlack)
IdToInfoItr find(unsigned int) const
Definition: FWGeometry.cc:358
TGeoShape * getShape(unsigned int id) const
Definition: FWGeometry.cc:212
#define fwLog(_level_)
Definition: fwLog.h:50
IdToInfo m_idToInfo
Definition: FWGeometry.h:124
std::vector< FWGeometry::GeomDetInfo >::const_iterator IdToInfoItr
Definition: FWGeometry.h:107
std::vector< unsigned int > FWGeometry::getMatchedIds ( Detector  det,
SubDetector  subdet 
) const

Definition at line 197 of file FWGeometry.cc.

References m_idToInfo, and match_id().

Referenced by FW3DViewBase::showEcalBarrel(), FWRPZViewGeometry::showPixelBarrel(), FW3DViewGeometry::showPixelBarrel(), FWRPZViewGeometry::showPixelEndcap(), FW3DViewGeometry::showPixelEndcap(), FWRPZViewGeometry::showTrackerBarrel(), FW3DViewGeometry::showTrackerBarrel(), FWRPZViewGeometry::showTrackerEndcap(), and FW3DViewGeometry::showTrackerEndcap().

198 {
199  std::vector<unsigned int> ids;
200  unsigned int mask = ( det << 4 ) | ( subdet );
201  for( IdToInfoItr it = m_idToInfo.begin(), itEnd = m_idToInfo.end();
202  it != itEnd; ++it )
203  {
204  if( FWGeometry::match_id( *it, mask ))
205  ids.push_back(( *it ).id );
206  }
207 
208  return ids;
209 }
bool match_id(const GeomDetInfo &o, unsigned int mask) const
Definition: FWGeometry.h:101
IdToInfo m_idToInfo
Definition: FWGeometry.h:124
std::vector< FWGeometry::GeomDetInfo >::const_iterator IdToInfoItr
Definition: FWGeometry.h:107
const TGeoMatrix * FWGeometry::getMatrix ( unsigned int  id) const

Definition at line 169 of file FWGeometry.cc.

References find(), fwLog, info(), fwlog::kWarning, m_idToInfo, m_idToMatrix, FWGeometry::GeomDetInfo::matrix, makeMuonMisalignmentScenario::matrix, idealTransformation::rotation, and FWGeometry::GeomDetInfo::translation.

Referenced by FWTrackResidualDetailView::getSignedResidual(), ValidateGeometry::validateCSChamberGeometry(), ValidateGeometry::validateCSCLayerGeometry(), ValidateGeometry::validateDTChamberGeometry(), ValidateGeometry::validateDTLayerGeometry(), ValidateGeometry::validateRPCGeometry(), and ValidateGeometry::validateTrackerGeometry().

170 {
171  std::map<unsigned int, TGeoMatrix*>::iterator mit = m_idToMatrix.find( id );
172  if( mit != m_idToMatrix.end()) return mit->second;
173 
174  IdToInfoItr it = FWGeometry::find( id );
175  if( it == m_idToInfo.end())
176  {
177  fwLog( fwlog::kWarning ) << "no reco geometry found for id " << id << std::endl;
178  return 0;
179  }
180  else
181  {
182  const GeomDetInfo& info = *it;
183  TGeoTranslation trans( info.translation[0], info.translation[1], info.translation[2] );
184  TGeoRotation rotation;
185  const Double_t matrix[9] = { info.matrix[0], info.matrix[1], info.matrix[2],
186  info.matrix[3], info.matrix[4], info.matrix[5],
187  info.matrix[6], info.matrix[7], info.matrix[8]
188  };
189  rotation.SetMatrix( matrix );
190 
191  m_idToMatrix[id] = new TGeoCombiTrans( trans, rotation );
192  return m_idToMatrix[id];
193  }
194 }
static const TGPicture * info(bool iBackgroundIsBlack)
IdToInfoItr find(unsigned int) const
Definition: FWGeometry.cc:358
std::map< unsigned int, TGeoMatrix * > m_idToMatrix
Definition: FWGeometry.h:122
#define fwLog(_level_)
Definition: fwLog.h:50
IdToInfo m_idToInfo
Definition: FWGeometry.h:124
std::vector< FWGeometry::GeomDetInfo >::const_iterator IdToInfoItr
Definition: FWGeometry.h:107
const float * FWGeometry::getParameters ( unsigned int  id) const
TGeoShape * FWGeometry::getShape ( unsigned int  id) const

Definition at line 212 of file FWGeometry.cc.

References find(), fwLog, fwlog::kWarning, and m_idToInfo.

Referenced by FWSiStripClusterProxyBuilder::build(), and getEveShape().

213 {
214  IdToInfoItr it = FWGeometry::find( id );
215  if( it == m_idToInfo.end())
216  {
217  fwLog( fwlog::kWarning ) << "no reco geoemtry found for id " << id << std::endl;
218  return 0;
219  }
220  else
221  {
222  return getShape( *it );
223  }
224 }
IdToInfoItr find(unsigned int) const
Definition: FWGeometry.cc:358
TGeoShape * getShape(unsigned int id) const
Definition: FWGeometry.cc:212
#define fwLog(_level_)
Definition: fwLog.h:50
IdToInfo m_idToInfo
Definition: FWGeometry.h:124
std::vector< FWGeometry::GeomDetInfo >::const_iterator IdToInfoItr
Definition: FWGeometry.h:107
TGeoShape * FWGeometry::getShape ( const GeomDetInfo info) const

Definition at line 227 of file FWGeometry.cc.

References FWGeometry::GeomDetInfo::shape.

228 {
229  TEveGeoManagerHolder gmgr( TEveGeoShape::GetGeoMangeur());
230  TGeoShape* geoShape = 0;
231  if( info.shape[0] == 1 )
232  {
233  geoShape = new TGeoTrap(
234  info.shape[3], //dz
235  0, //theta
236  0, //phi
237  info.shape[4], //dy1
238  info.shape[1], //dx1
239  info.shape[2], //dx2
240  0, //alpha1
241  info.shape[4], //dy2
242  info.shape[1], //dx3
243  info.shape[2], //dx4
244  0); //alpha2
245  }
246  else
247  geoShape = new TGeoBBox( info.shape[1], info.shape[2], info.shape[3] );
248 
249  return geoShape;
250 }
static const TGPicture * info(bool iBackgroundIsBlack)
const float * FWGeometry::getShapePars ( unsigned int  id) const

Definition at line 312 of file FWGeometry.cc.

References find(), fwLog, fwlog::kWarning, and m_idToInfo.

Referenced by FWCSCStripDigiProxyBuilder::build(), FWCSCWireDigiProxyBuilder::build(), ValidateGeometry::validateCSChamberGeometry(), ValidateGeometry::validateCSCLayerGeometry(), ValidateGeometry::validateDTChamberGeometry(), ValidateGeometry::validateDTLayerGeometry(), ValidateGeometry::validateRPCGeometry(), and ValidateGeometry::validateTrackerGeometry().

313 {
314  // reco geometry parameters
315  IdToInfoItr it = FWGeometry::find( id );
316  if( it == m_idToInfo.end())
317  {
318  fwLog( fwlog::kWarning ) << "no reco geometry found for id " << id << std::endl;
319  return 0;
320  }
321  else
322  {
323  return ( *it ).shape;
324  }
325 }
IdToInfoItr find(unsigned int) const
Definition: FWGeometry.cc:358
#define fwLog(_level_)
Definition: fwLog.h:50
IdToInfo m_idToInfo
Definition: FWGeometry.h:124
std::vector< FWGeometry::GeomDetInfo >::const_iterator IdToInfoItr
Definition: FWGeometry.h:107
void FWGeometry::initMap ( const FWRecoGeom::InfoMap map)

Definition at line 143 of file FWGeometry.cc.

References begin, end, i, j, m_idToInfo, and makeMuonMisalignmentScenario::matrix.

Referenced by FWFFLooper::beginRun(), and FWFFService::postBeginRun().

144 {
145  FWRecoGeom::InfoMapItr begin = map.begin();
147  unsigned int mapSize = map.size();
148  if( m_idToInfo.size() != mapSize )
149  m_idToInfo.resize( mapSize );
150  unsigned int i = 0;
151  for( FWRecoGeom::InfoMapItr it = begin;
152  it != end; ++it, ++i )
153  {
154  m_idToInfo[i].id = it->id;
155  for( unsigned int j = 0; j < 24; ++j )
156  m_idToInfo[i].points[j] = it->points[j];
157  for( unsigned int j = 0; j < 9; ++j )
158  m_idToInfo[i].parameters[j] = it->topology[j];
159  for( unsigned int j = 0; j < 5; ++j )
160  m_idToInfo[i].shape[j] = it->shape[j];
161  for( unsigned int j = 0; j < 3; ++j )
162  m_idToInfo[i].translation[j] = it->translation[j];
163  for( unsigned int j = 0; j < 9; ++j )
164  m_idToInfo[i].matrix[j] = it->matrix[j];
165  }
166 }
std::vector< FWRecoGeom::Info >::const_iterator InfoMapItr
Definition: FWRecoGeom.h:28
int i
Definition: DBlmapReader.cc:9
int j
Definition: DBlmapReader.cc:9
#define end
Definition: vmac.h:37
#define begin
Definition: vmac.h:30
IdToInfo m_idToInfo
Definition: FWGeometry.h:124
void FWGeometry::loadMap ( const char *  fileName)

Definition at line 52 of file FWGeometry.cc.

References FWGeometry::VersionInfo::cmsswVersion, FWGeometry::VersionInfo::extraDetectors, mergeVDriftHistosByStation::file, findFile(), fwLog, i, j, fwlog::kInfo, PhysicsTools::loadMatrix(), m_idToInfo, m_versionInfo, makeMuonMisalignmentScenario::matrix, Parameters::parameters, cmsHarvester::path, FWGeometry::VersionInfo::productionTag, ecaldqm::topology(), and MainPageGenerator::tree.

Referenced by CmsShowMainBase::loadGeometry(), and ValidateGeometry::ValidateGeometry().

53 {
54  TFile* file = findFile( fileName );
55  if( ! file )
56  {
57  throw std::runtime_error( "ERROR: failed to find geometry file. Initialization failed." );
58  return;
59  }
60 
61  TTree* tree = static_cast<TTree*>(file->Get( "idToGeo" ));
62  if( ! tree )
63  {
64  throw std::runtime_error( "ERROR: cannot find detector id map in the file. Initialization failed." );
65  return;
66  }
67 
68  unsigned int id;
69  Float_t points[24];
70  Float_t topology[9];
71  Float_t shape[5];
72  Float_t translation[3];
73  Float_t matrix[9];
74  bool loadPoints = tree->GetBranch( "points" ) != 0;
75  bool loadParameters = tree->GetBranch( "topology" ) != 0;
76  bool loadShape = tree->GetBranch( "shape" ) != 0;
77  bool loadTranslation = tree->GetBranch( "translation" ) != 0;
78  bool loadMatrix = tree->GetBranch( "matrix" ) != 0;
79  tree->SetBranchAddress( "id", &id );
80  if( loadPoints )
81  tree->SetBranchAddress( "points", &points );
82  if( loadParameters )
83  tree->SetBranchAddress( "topology", &topology );
84  if( loadShape )
85  tree->SetBranchAddress( "shape", &shape );
86  if( loadTranslation )
87  tree->SetBranchAddress( "translation", &translation );
88  if( loadMatrix )
89  tree->SetBranchAddress( "matrix", &matrix );
90 
91  unsigned int treeSize = tree->GetEntries();
92  if( m_idToInfo.size() != treeSize )
93  m_idToInfo.resize( treeSize );
94  for( unsigned int i = 0; i < treeSize; ++i )
95  {
96  tree->GetEntry( i );
97 
98  m_idToInfo[i].id = id;
99  if( loadPoints )
100  {
101  for( unsigned int j = 0; j < 24; ++j )
102  m_idToInfo[i].points[j] = points[j];
103  }
104  if( loadParameters )
105  {
106  for( unsigned int j = 0; j < 9; ++j )
107  m_idToInfo[i].parameters[j] = topology[j];
108  }
109  if( loadShape )
110  {
111  for( unsigned int j = 0; j < 5; ++j )
112  m_idToInfo[i].shape[j] = shape[j];
113  }
114  if( loadTranslation )
115  {
116  for( unsigned int j = 0; j < 3; ++j )
117  m_idToInfo[i].translation[j] = translation[j];
118  }
119  if( loadMatrix )
120  {
121  for( unsigned int j = 0; j < 9; ++j )
122  m_idToInfo[i].matrix[j] = matrix[j];
123  }
124  }
125 
126 
127  m_versionInfo.productionTag = static_cast<TNamed*>(file->Get( "tag" ));
128  m_versionInfo.cmsswVersion = static_cast<TNamed*>(file->Get( "CMSSW_VERSION" ));
129  m_versionInfo.extraDetectors = static_cast<TObjArray*>(file->Get( "ExtraDetectors" ));
130 
131  TString path = file->GetPath();
132  if (path.EndsWith(":/")) path.Resize(path.Length() -2);
133 
135  fwLog( fwlog::kInfo ) << Form("Load %s %s from %s\n", tree->GetName(), m_versionInfo.productionTag->GetName(), path.Data());
136  else
137  fwLog( fwlog::kInfo ) << Form("Load %s from %s\n", tree->GetName(), path.Data());
138 
139  file->Close();
140 }
static TFile * findFile(const char *fileName)
Definition: FWGeometry.cc:26
int i
Definition: DBlmapReader.cc:9
dictionary parameters
Definition: Parameters.py:2
TObjArray * extraDetectors
Definition: FWGeometry.h:46
static void loadMatrix(DOMElement *elem, unsigned int n, TMatrixDBase &matrix)
CaloTopology const * topology(0)
tuple path
else: Piece not in the list, fine.
VersionInfo m_versionInfo
Definition: FWGeometry.h:128
int j
Definition: DBlmapReader.cc:9
#define fwLog(_level_)
Definition: fwLog.h:50
IdToInfo m_idToInfo
Definition: FWGeometry.h:124
void FWGeometry::localToGlobal ( unsigned int  id,
const float *  local,
float *  global,
bool  translatep = true 
) const

Definition at line 328 of file FWGeometry.cc.

References find(), fwLog, fwlog::kWarning, and m_idToInfo.

Referenced by fireworks::addSiStripClusters(), FWTrackTrackingRecHitProxyBuilder::build(), FWME0DigiProxyBuilder::build(), FWSiStripClusterProxyBuilder::build(), FWCSCRecHitProxyBuilder::build(), FWSiStripDigiProxyBuilder::build(), FWCSCStripDigiProxyBuilder::build(), FWRPCDigiProxyBuilder::build(), FWCSCWireDigiProxyBuilder::build(), FWSiPixelClusterProxyBuilder::build(), FWCSCSegmentProxyBuilder::build(), FWSiPixelDigiProxyBuilder::build(), FWGEMDigiProxyBuilder::build(), FWTrackingParticleProxyBuilderFullFramework::build(), FWTrajectorySeedProxyBuilder::build(), FWGEMPadDigiProxyBuilder::build(), FWPSimHitProxyBuilder::buildViewType(), FWDTRecHitProxyBuilder::buildViewType(), FWRPCRecHitProxyBuilder::buildViewType(), FWGEMRecHitProxyBuilder::buildViewType(), FWDTSegmentProxyBuilder::buildViewType(), FWDTDigiProxyBuilder::buildViewType(), FWRPZViewGeometry::estimateProjectionSizeDT(), localToGlobal(), and fireworks::pushPixelCluster().

329 {
330  IdToInfoItr it = FWGeometry::find( id );
331  if( it == m_idToInfo.end())
332  {
333  fwLog( fwlog::kWarning ) << "no reco geometry found for id " << id << std::endl;
334  }
335  else
336  {
337  localToGlobal( *it, local, global, translatep );
338  }
339 }
IdToInfoItr find(unsigned int) const
Definition: FWGeometry.cc:358
void localToGlobal(unsigned int id, const float *local, float *global, bool translatep=true) const
Definition: FWGeometry.cc:328
#define fwLog(_level_)
Definition: fwLog.h:50
IdToInfo m_idToInfo
Definition: FWGeometry.h:124
std::vector< FWGeometry::GeomDetInfo >::const_iterator IdToInfoItr
Definition: FWGeometry.h:107
void FWGeometry::localToGlobal ( unsigned int  id,
const float *  local1,
float *  global1,
const float *  local2,
float *  global2,
bool  translatep = true 
) const

Definition at line 342 of file FWGeometry.cc.

References find(), fwLog, fwlog::kWarning, localToGlobal(), and m_idToInfo.

344 {
345  IdToInfoItr it = FWGeometry::find( id );
346  if( it == m_idToInfo.end())
347  {
348  fwLog( fwlog::kWarning ) << "no reco geometry found for id " << id << std::endl;
349  }
350  else
351  {
352  localToGlobal( *it, local1, global1, translatep );
353  localToGlobal( *it, local2, global2, translatep );
354  }
355 }
IdToInfoItr find(unsigned int) const
Definition: FWGeometry.cc:358
void localToGlobal(unsigned int id, const float *local, float *global, bool translatep=true) const
Definition: FWGeometry.cc:328
#define fwLog(_level_)
Definition: fwLog.h:50
IdToInfo m_idToInfo
Definition: FWGeometry.h:124
std::vector< FWGeometry::GeomDetInfo >::const_iterator IdToInfoItr
Definition: FWGeometry.h:107
void FWGeometry::localToGlobal ( const GeomDetInfo info,
const float *  local,
float *  global,
bool  translatep = true 
) const

Definition at line 366 of file FWGeometry.cc.

References i, FWGeometry::GeomDetInfo::matrix, and FWGeometry::GeomDetInfo::translation.

367 {
368  for( int i = 0; i < 3; ++i )
369  {
370  global[i] = translatep ? info.translation[i] : 0;
371  global[i] += local[0] * info.matrix[3 * i]
372  + local[1] * info.matrix[3 * i + 1]
373  + local[2] * info.matrix[3 * i + 2];
374  }
375 }
int i
Definition: DBlmapReader.cc:9
static const TGPicture * info(bool iBackgroundIsBlack)
bool FWGeometry::match_id ( const GeomDetInfo o,
unsigned int  mask 
) const
inline

Definition at line 101 of file FWGeometry.h.

References FWGeometry::GeomDetInfo::id, kDetOffset, and kSubdetOffset.

Referenced by getMatchedIds().

101  {
102  unsigned int id = o.id;
103  return ((((( id >> kDetOffset ) & 0xF ) << 4) | (( id >> kSubdetOffset ) & 0x7 )) == mask );
104  }
static const int kSubdetOffset
Definition: FWGeometry.h:28
static const int kDetOffset
Definition: FWGeometry.h:27
const VersionInfo& FWGeometry::versionInfo ( ) const
inline

Member Data Documentation

const int FWGeometry::kDetOffset = 28
static

Definition at line 27 of file FWGeometry.h.

Referenced by match_id().

const int FWGeometry::kSubdetOffset = 25
static

Definition at line 28 of file FWGeometry.h.

Referenced by match_id().

IdToInfo FWGeometry::m_idToInfo
private
std::map<unsigned int, TGeoMatrix*> FWGeometry::m_idToMatrix
mutableprivate

Definition at line 122 of file FWGeometry.h.

Referenced by clear(), and getMatrix().

std::string FWGeometry::m_prodTag
private

Definition at line 126 of file FWGeometry.h.

VersionInfo FWGeometry::m_versionInfo
private

Definition at line 128 of file FWGeometry.h.

Referenced by loadMap(), and versionInfo().