CMS 3D CMS Logo

List of all members | Public Member Functions | Private Member Functions
DTGeometryParserFromDDD Class Reference

#include <DTGeometryParserFromDDD.h>

Public Member Functions

 DTGeometryParserFromDDD (const DDCompactView *cview, const MuonDDDConstants &muonConstants, std::map< DTLayerId, std::pair< unsigned int, unsigned int > > &theLayerIdWiresMap)
 Constructor. More...
 
 ~DTGeometryParserFromDDD ()
 Destructor. More...
 

Private Member Functions

void buildLayer (DDFilteredView &fv, const MuonDDDConstants &muonConstants, std::map< DTLayerId, std::pair< unsigned int, unsigned int > > &theLayerIdWiresMap)
 
void parseGeometry (DDFilteredView &fv, const MuonDDDConstants &muonConstants, std::map< DTLayerId, std::pair< unsigned int, unsigned int > > &theLayerIdWiresMap)
 

Detailed Description

Class which read the geometry from DDD to provide a map between layerId and pairs with first wire number, total number of wires.

Author
S. Bolognesi - INFN Torino

Definition at line 21 of file DTGeometryParserFromDDD.h.

Constructor & Destructor Documentation

DTGeometryParserFromDDD::DTGeometryParserFromDDD ( const DDCompactView cview,
const MuonDDDConstants muonConstants,
std::map< DTLayerId, std::pair< unsigned int, unsigned int > > &  theLayerIdWiresMap 
)

Constructor.

Definition at line 11 of file DTGeometryParserFromDDD.cc.

References beam_dqm_sourceclient-live_cfg::cerr, MillePedeFileConverter_cfg::e, cppFunctionSkipper::exception, ALCARECOTkAlBeamHalo_cff::filter, and AlCaHLTBitMon_QueryRunRegistry::string.

14  {
15  try {
16  std::string attribute = "MuStructure";
17  std::string value = "MuonBarrelDT";
18 
19  // Asking only for the Muon DTs
20  DDSpecificsMatchesValueFilter filter{DDValue(attribute, value, 0.0)};
21  DDFilteredView fview(*cview, filter);
22 
23  parseGeometry(fview, muonConstants, theLayerIdWiresMap);
24  } catch (const cms::Exception& e) {
25  std::cerr << "DTGeometryParserFromDDD::build() : DDD Exception: something went wrong during XML parsing!"
26  << std::endl
27  << " Message: " << e << std::endl
28  << " Terminating execution ... " << std::endl;
29  throw;
30  } catch (const exception& e) {
31  std::cerr << "DTGeometryParserFromDDD::build() : an unexpected exception occured: " << e.what() << std::endl;
32  throw;
33  } catch (...) {
34  std::cerr << "DTGeometryParserFromDDD::build() : An unexpected exception occured!" << std::endl
35  << " Terminating execution ... " << std::endl;
36  std::unexpected();
37  }
38 }
void parseGeometry(DDFilteredView &fv, const MuonDDDConstants &muonConstants, std::map< DTLayerId, std::pair< unsigned int, unsigned int > > &theLayerIdWiresMap)
Definition: value.py:1
DTGeometryParserFromDDD::~DTGeometryParserFromDDD ( )

Destructor.

Definition at line 40 of file DTGeometryParserFromDDD.cc.

40 {}

Member Function Documentation

void DTGeometryParserFromDDD::buildLayer ( DDFilteredView fv,
const MuonDDDConstants muonConstants,
std::map< DTLayerId, std::pair< unsigned int, unsigned int > > &  theLayerIdWiresMap 
)
private

Definition at line 79 of file DTGeometryParserFromDDD.cc.

References DDFilteredView::copyno(), DDFilteredView::firstChild(), DDFilteredView::geoHistory(), MuonDDDNumbering::geoHistoryToBaseNumber(), DTNumberingScheme::getDetId(), and DDFilteredView::nextSibling().

81  {
82  MuonDDDNumbering mdddnum(muonConstants);
83  DTNumberingScheme dtnum(muonConstants);
84  int rawid = dtnum.getDetId(mdddnum.geoHistoryToBaseNumber(fv.geoHistory()));
85  DTLayerId layId(rawid);
86 
87  // Loop on wires
88  bool doWire = fv.firstChild();
89  int WCounter = 0;
90  int firstWire = fv.copyno();
91  while (doWire) {
92  WCounter++;
93  doWire = fv.nextSibling(); // next wire
94  }
95  theLayerIdWiresMap[layId] = (make_pair(firstWire, WCounter));
96 }
bool nextSibling()
set the current node to the next sibling ...
const DDGeoHistory & geoHistory() const
The list of ancestors up to the root-node of the current node.
int copyno() const
Copy number associated with the current node.
bool firstChild()
set the current node to the first child ...
void DTGeometryParserFromDDD::parseGeometry ( DDFilteredView fv,
const MuonDDDConstants muonConstants,
std::map< DTLayerId, std::pair< unsigned int, unsigned int > > &  theLayerIdWiresMap 
)
private

Definition at line 42 of file DTGeometryParserFromDDD.cc.

References DDFilteredView::firstChild(), DDFilteredView::nextSibling(), and DDFilteredView::parent().

44  {
45  bool doChamber = fv.firstChild();
46 
47  // Loop on chambers
48  int ChamCounter = 0;
49  while (doChamber) {
50  ChamCounter++;
51 
52  // Loop on SLs
53  bool doSL = fv.firstChild();
54  int SLCounter = 0;
55  while (doSL) {
56  SLCounter++;
57 
58  bool doL = fv.firstChild();
59  int LCounter = 0;
60  // Loop on SLs
61  while (doL) {
62  LCounter++;
63  //DTLayer* layer =
64  buildLayer(fv, muonConstants, theLayerIdWiresMap);
65 
66  fv.parent();
67  doL = fv.nextSibling(); // go to next layer
68  } // layers
69 
70  fv.parent();
71  doSL = fv.nextSibling(); // go to next SL
72  } // sls
73 
74  fv.parent();
75  doChamber = fv.nextSibling(); // go to next chamber
76  } // chambers
77 }
bool parent()
set the current node to the parent node ...
bool nextSibling()
set the current node to the next sibling ...
bool firstChild()
set the current node to the first child ...
void buildLayer(DDFilteredView &fv, const MuonDDDConstants &muonConstants, std::map< DTLayerId, std::pair< unsigned int, unsigned int > > &theLayerIdWiresMap)