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 Member Functions | Private Attributes
FWGeometry Class Reference

#include <FWGeometry.h>

Classes

struct  GeomDetInfo
 
struct  Range
 

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
}
 

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
 
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
 
 ~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 Member Functions

TGeoShape * getShape (const GeomDetInfo &info) const
 

Private Attributes

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

Detailed Description

Definition at line 23 of file FWGeometry.h.

Member Typedef Documentation

Definition at line 95 of file FWGeometry.h.

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

Definition at line 96 of file FWGeometry.h.

Member Enumeration Documentation

Enumerator
Tracker 
Muon 
Ecal 
Hcal 
Calo 

Definition at line 29 of file FWGeometry.h.

Enumerator
PixelBarrel 
PixelEndcap 
TIB 
TID 
TOB 
TEC 
CSC 
DT 
RPCBarrel 
RPCEndcap 

Definition at line 30 of file FWGeometry.h.

Constructor & Destructor Documentation

FWGeometry::FWGeometry ( void  )

Definition at line 18 of file FWGeometry.cc.

19 {}
FWGeometry::~FWGeometry ( void  )

Definition at line 21 of file FWGeometry.cc.

22 {}

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 339 of file FWGeometry.cc.

References begin, end, and m_idToInfo.

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

340 {
343  return std::lower_bound( begin, end, id );
344 }
#define end
Definition: vmac.h:37
#define begin
Definition: vmac.h:30
IdToInfo m_idToInfo
Definition: FWGeometry.h:109
std::vector< FWGeometry::GeomDetInfo >::const_iterator IdToInfoItr
Definition: FWGeometry.h:96
TFile * FWGeometry::findFile ( const char *  fileName)
static

Definition at line 25 of file FWGeometry.cc.

References convertXMLtoSQLite_cfg::fileName, i, getHLTPrescaleColumns::path, EgammaValidation_cff::paths, and AlCaHLTBitMon_QueryRunRegistry::string.

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

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

Definition at line 234 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(), FWSiStripClusterProxyBuilder::build(), FWSiPixelClusterDetProxyBuilder::build(), FWTracksModulesProxyBuilder::build(), FWCSCSegmentProxyBuilder::build(), FWRPCRecHitProxyBuilder::buildViewType(), FWGEMRecHitProxyBuilder::buildViewType(), FWDTSegmentProxyBuilder::buildViewType(), FWRPZViewGeometry::makeMuonGeometryRhoPhi(), FW3DViewGeometry::showMuonBarrel(), FW3DViewGeometry::showMuonBarrelFull(), FW3DViewGeometry::showMuonEndcap(), FWRPZViewGeometry::showPixelBarrel(), FW3DViewGeometry::showPixelBarrel(), FWRPZViewGeometry::showPixelEndcap(), FW3DViewGeometry::showPixelEndcap(), FWRPZViewGeometry::showTrackerBarrel(), FW3DViewGeometry::showTrackerBarrel(), FWRPZViewGeometry::showTrackerEndcap(), and FW3DViewGeometry::showTrackerEndcap().

235 {
236  IdToInfoItr it = FWGeometry::find( id );
237  if( it == m_idToInfo.end())
238  {
239  fwLog( fwlog::kWarning ) << "no reco geoemtry found for id " << id << std::endl;
240  return 0;
241  }
242  else
243  {
244  const GeomDetInfo& info = *it;
245  double array[16] = { info.matrix[0], info.matrix[3], info.matrix[6], 0.,
246  info.matrix[1], info.matrix[4], info.matrix[7], 0.,
247  info.matrix[2], info.matrix[5], info.matrix[8], 0.,
248  info.translation[0], info.translation[1], info.translation[2], 1.
249  };
250  TEveGeoManagerHolder gmgr( TEveGeoShape::GetGeoMangeur());
251  TEveGeoShape* shape = new TEveGeoShape(TString::Format("RecoGeom Id=%u", id));
252  TGeoShape* geoShape = getShape( info );
253  shape->SetShape( geoShape );
254  // Set transformation matrix from a column-major array
255  shape->SetTransMatrix( array );
256  return shape;
257  }
258 }
static const TGPicture * info(bool iBackgroundIsBlack)
IdToInfoItr find(unsigned int) const
Definition: FWGeometry.cc:339
TGeoShape * getShape(unsigned int id) const
Definition: FWGeometry.cc:193
#define fwLog(_level_)
Definition: fwLog.h:50
IdToInfo m_idToInfo
Definition: FWGeometry.h:109
std::vector< FWGeometry::GeomDetInfo >::const_iterator IdToInfoItr
Definition: FWGeometry.h:96
std::vector< unsigned int > FWGeometry::getMatchedIds ( Detector  det,
SubDetector  subdet 
) const

Definition at line 178 of file FWGeometry.cc.

References m_idToInfo, and match_id().

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

179 {
180  std::vector<unsigned int> ids;
181  unsigned int mask = ( det << 4 ) | ( subdet );
182  for( IdToInfoItr it = m_idToInfo.begin(), itEnd = m_idToInfo.end();
183  it != itEnd; ++it )
184  {
185  if( FWGeometry::match_id( *it, mask ))
186  ids.push_back(( *it ).id );
187  }
188 
189  return ids;
190 }
bool match_id(const GeomDetInfo &o, unsigned int mask) const
Definition: FWGeometry.h:90
IdToInfo m_idToInfo
Definition: FWGeometry.h:109
std::vector< FWGeometry::GeomDetInfo >::const_iterator IdToInfoItr
Definition: FWGeometry.h:96
const TGeoMatrix * FWGeometry::getMatrix ( unsigned int  id) const

Definition at line 150 of file FWGeometry.cc.

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

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

151 {
152  std::map<unsigned int, TGeoMatrix*>::iterator mit = m_idToMatrix.find( id );
153  if( mit != m_idToMatrix.end()) return mit->second;
154 
155  IdToInfoItr it = FWGeometry::find( id );
156  if( it == m_idToInfo.end())
157  {
158  fwLog( fwlog::kWarning ) << "no reco geometry found for id " << id << std::endl;
159  return 0;
160  }
161  else
162  {
163  const GeomDetInfo& info = *it;
164  TGeoTranslation trans( info.translation[0], info.translation[1], info.translation[2] );
165  TGeoRotation rotation;
166  const Double_t matrix[9] = { info.matrix[0], info.matrix[1], info.matrix[2],
167  info.matrix[3], info.matrix[4], info.matrix[5],
168  info.matrix[6], info.matrix[7], info.matrix[8]
169  };
170  rotation.SetMatrix( matrix );
171 
172  m_idToMatrix[id] = new TGeoCombiTrans( trans, rotation );
173  return m_idToMatrix[id];
174  }
175 }
static const TGPicture * info(bool iBackgroundIsBlack)
IdToInfoItr find(unsigned int) const
Definition: FWGeometry.cc:339
std::map< unsigned int, TGeoMatrix * > m_idToMatrix
Definition: FWGeometry.h:107
#define fwLog(_level_)
Definition: fwLog.h:50
IdToInfo m_idToInfo
Definition: FWGeometry.h:109
std::vector< FWGeometry::GeomDetInfo >::const_iterator IdToInfoItr
Definition: FWGeometry.h:96
const float * FWGeometry::getParameters ( unsigned int  id) const

Definition at line 277 of file FWGeometry.cc.

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

Referenced by fireworks::addSiStripClusters(), FWSiStripClusterProxyBuilder::build(), FWSiStripDigiProxyBuilder::build(), FWCSCStripDigiProxyBuilder::build(), FWRPCDigiProxyBuilder::build(), FWGEMDigiProxyBuilder::build(), FWSiPixelClusterProxyBuilder::build(), FWSiPixelDigiProxyBuilder::build(), FWDTDigiProxyBuilder::buildViewType(), fireworks::pushNearbyPixelHits(), fireworks::pushPixelHits(), ValidateGeometry::validateCSCLayerGeometry(), ValidateGeometry::validateDTLayerGeometry(), ValidateGeometry::validatePixelTopology(), ValidateGeometry::validateRPCGeometry(), and ValidateGeometry::validateStripTopology().

278 {
279  // reco geometry parameters
280  IdToInfoItr it = FWGeometry::find( id );
281  if( it == m_idToInfo.end())
282  {
283  fwLog( fwlog::kWarning ) << "no reco geometry found for id " << id << std::endl;
284  return 0;
285  }
286  else
287  {
288  return ( *it ).parameters;
289  }
290 }
IdToInfoItr find(unsigned int) const
Definition: FWGeometry.cc:339
#define fwLog(_level_)
Definition: fwLog.h:50
IdToInfo m_idToInfo
Definition: FWGeometry.h:109
std::vector< FWGeometry::GeomDetInfo >::const_iterator IdToInfoItr
Definition: FWGeometry.h:96
TGeoShape * FWGeometry::getShape ( unsigned int  id) const

Definition at line 193 of file FWGeometry.cc.

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

Referenced by getEveShape().

194 {
195  IdToInfoItr it = FWGeometry::find( id );
196  if( it == m_idToInfo.end())
197  {
198  fwLog( fwlog::kWarning ) << "no reco geoemtry found for id " << id << std::endl;
199  return 0;
200  }
201  else
202  {
203  return getShape( *it );
204  }
205 }
IdToInfoItr find(unsigned int) const
Definition: FWGeometry.cc:339
TGeoShape * getShape(unsigned int id) const
Definition: FWGeometry.cc:193
#define fwLog(_level_)
Definition: fwLog.h:50
IdToInfo m_idToInfo
Definition: FWGeometry.h:109
std::vector< FWGeometry::GeomDetInfo >::const_iterator IdToInfoItr
Definition: FWGeometry.h:96
TGeoShape * FWGeometry::getShape ( const GeomDetInfo info) const
private

Definition at line 208 of file FWGeometry.cc.

References FWGeometry::GeomDetInfo::shape.

209 {
210  TEveGeoManagerHolder gmgr( TEveGeoShape::GetGeoMangeur());
211  TGeoShape* geoShape = 0;
212  if( info.shape[0] == 1 )
213  {
214  geoShape = new TGeoTrap(
215  info.shape[3], //dz
216  0, //theta
217  0, //phi
218  info.shape[4], //dy1
219  info.shape[1], //dx1
220  info.shape[2], //dx2
221  0, //alpha1
222  info.shape[4], //dy2
223  info.shape[1], //dx3
224  info.shape[2], //dx4
225  0); //alpha2
226  }
227  else
228  geoShape = new TGeoBBox( info.shape[1], info.shape[2], info.shape[3] );
229 
230  return geoShape;
231 }
static const TGPicture * info(bool iBackgroundIsBlack)
const float * FWGeometry::getShapePars ( unsigned int  id) const

Definition at line 293 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().

294 {
295  // reco geometry parameters
296  IdToInfoItr it = FWGeometry::find( id );
297  if( it == m_idToInfo.end())
298  {
299  fwLog( fwlog::kWarning ) << "no reco geometry found for id " << id << std::endl;
300  return 0;
301  }
302  else
303  {
304  return ( *it ).shape;
305  }
306 }
IdToInfoItr find(unsigned int) const
Definition: FWGeometry.cc:339
#define fwLog(_level_)
Definition: fwLog.h:50
IdToInfo m_idToInfo
Definition: FWGeometry.h:109
std::vector< FWGeometry::GeomDetInfo >::const_iterator IdToInfoItr
Definition: FWGeometry.h:96
void FWGeometry::initMap ( const FWRecoGeom::InfoMap map)

Definition at line 124 of file FWGeometry.cc.

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

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

125 {
126  FWRecoGeom::InfoMapItr begin = map.begin();
128  unsigned int mapSize = map.size();
129  if( m_idToInfo.size() != mapSize )
130  m_idToInfo.resize( mapSize );
131  unsigned int i = 0;
132  for( FWRecoGeom::InfoMapItr it = begin;
133  it != end; ++it, ++i )
134  {
135  m_idToInfo[i].id = it->id;
136  for( unsigned int j = 0; j < 24; ++j )
137  m_idToInfo[i].points[j] = it->points[j];
138  for( unsigned int j = 0; j < 9; ++j )
139  m_idToInfo[i].parameters[j] = it->topology[j];
140  for( unsigned int j = 0; j < 5; ++j )
141  m_idToInfo[i].shape[j] = it->shape[j];
142  for( unsigned int j = 0; j < 3; ++j )
143  m_idToInfo[i].translation[j] = it->translation[j];
144  for( unsigned int j = 0; j < 9; ++j )
145  m_idToInfo[i].matrix[j] = it->matrix[j];
146  }
147 }
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:109
void FWGeometry::loadMap ( const char *  fileName)

Definition at line 48 of file FWGeometry.cc.

References mergeVDriftHistosByStation::file, findFile(), i, j, PhysicsTools::loadMatrix(), m_idToInfo, makeMuonMisalignmentScenario::matrix, Parameters::parameters, ecaldqm::topology(), and diffTreeTool::tree.

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

49 {
50  TFile* file = findFile( fileName );
51  if( ! file )
52  {
53  throw std::runtime_error( "ERROR: failed to find geometry file. Initialization failed." );
54  return;
55  }
56  TTree* tree = static_cast<TTree*>(file->Get( "idToGeo" ));
57  if( ! tree )
58  {
59  throw std::runtime_error( "ERROR: cannot find detector id map in the file. Initialization failed." );
60  return;
61  }
62 
63  unsigned int id;
64  Float_t points[24];
65  Float_t topology[9];
66  Float_t shape[5];
67  Float_t translation[3];
68  Float_t matrix[9];
69  bool loadPoints = tree->GetBranch( "points" ) != 0;
70  bool loadParameters = tree->GetBranch( "topology" ) != 0;
71  bool loadShape = tree->GetBranch( "shape" ) != 0;
72  bool loadTranslation = tree->GetBranch( "translation" ) != 0;
73  bool loadMatrix = tree->GetBranch( "matrix" ) != 0;
74  tree->SetBranchAddress( "id", &id );
75  if( loadPoints )
76  tree->SetBranchAddress( "points", &points );
77  if( loadParameters )
78  tree->SetBranchAddress( "topology", &topology );
79  if( loadShape )
80  tree->SetBranchAddress( "shape", &shape );
81  if( loadTranslation )
82  tree->SetBranchAddress( "translation", &translation );
83  if( loadMatrix )
84  tree->SetBranchAddress( "matrix", &matrix );
85 
86  unsigned int treeSize = tree->GetEntries();
87  if( m_idToInfo.size() != treeSize )
88  m_idToInfo.resize( treeSize );
89  for( unsigned int i = 0; i < treeSize; ++i )
90  {
91  tree->GetEntry( i );
92 
93  m_idToInfo[i].id = id;
94  if( loadPoints )
95  {
96  for( unsigned int j = 0; j < 24; ++j )
97  m_idToInfo[i].points[j] = points[j];
98  }
99  if( loadParameters )
100  {
101  for( unsigned int j = 0; j < 9; ++j )
102  m_idToInfo[i].parameters[j] = topology[j];
103  }
104  if( loadShape )
105  {
106  for( unsigned int j = 0; j < 5; ++j )
107  m_idToInfo[i].shape[j] = shape[j];
108  }
109  if( loadTranslation )
110  {
111  for( unsigned int j = 0; j < 3; ++j )
112  m_idToInfo[i].translation[j] = translation[j];
113  }
114  if( loadMatrix )
115  {
116  for( unsigned int j = 0; j < 9; ++j )
117  m_idToInfo[i].matrix[j] = matrix[j];
118  }
119  }
120  file->Close();
121 }
static TFile * findFile(const char *fileName)
Definition: FWGeometry.cc:25
int i
Definition: DBlmapReader.cc:9
dictionary parameters
Definition: Parameters.py:2
static void loadMatrix(DOMElement *elem, unsigned int n, TMatrixDBase &matrix)
CaloTopology const * topology(0)
int j
Definition: DBlmapReader.cc:9
IdToInfo m_idToInfo
Definition: FWGeometry.h:109
void FWGeometry::localToGlobal ( unsigned int  id,
const float *  local,
float *  global,
bool  translatep = true 
) const

Definition at line 309 of file FWGeometry.cc.

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

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

310 {
311  IdToInfoItr it = FWGeometry::find( id );
312  if( it == m_idToInfo.end())
313  {
314  fwLog( fwlog::kWarning ) << "no reco geometry found for id " << id << std::endl;
315  }
316  else
317  {
318  localToGlobal( *it, local, global, translatep );
319  }
320 }
IdToInfoItr find(unsigned int) const
Definition: FWGeometry.cc:339
void localToGlobal(unsigned int id, const float *local, float *global, bool translatep=true) const
Definition: FWGeometry.cc:309
#define fwLog(_level_)
Definition: fwLog.h:50
IdToInfo m_idToInfo
Definition: FWGeometry.h:109
std::vector< FWGeometry::GeomDetInfo >::const_iterator IdToInfoItr
Definition: FWGeometry.h:96
void FWGeometry::localToGlobal ( unsigned int  id,
const float *  local1,
float *  global1,
const float *  local2,
float *  global2,
bool  translatep = true 
) const

Definition at line 323 of file FWGeometry.cc.

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

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

Definition at line 347 of file FWGeometry.cc.

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

348 {
349  for( int i = 0; i < 3; ++i )
350  {
351  global[i] = translatep ? info.translation[i] : 0;
352  global[i] += local[0] * info.matrix[3 * i]
353  + local[1] * info.matrix[3 * i + 1]
354  + local[2] * info.matrix[3 * i + 2];
355  }
356 }
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 90 of file FWGeometry.h.

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

Referenced by getMatchedIds().

90  {
91  unsigned int id = o.id;
92  return ((((( id >> kDetOffset ) & 0xF ) << 4) | (( id >> kSubdetOffset ) & 0x7 )) == mask );
93  }
static const int kSubdetOffset
Definition: FWGeometry.h:27
static const int kDetOffset
Definition: FWGeometry.h:26

Member Data Documentation

const int FWGeometry::kDetOffset = 28
static

Definition at line 26 of file FWGeometry.h.

Referenced by match_id().

const int FWGeometry::kSubdetOffset = 25
static

Definition at line 27 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 107 of file FWGeometry.h.

Referenced by clear(), and getMatrix().