CMS 3D CMS Logo

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

#include <CmsMTDConstruction.h>

Inheritance diagram for CmsMTDConstruction:
CmsMTDLevelBuilder CmsMTDAbstractConstruction

Public Member Functions

void buildComponent (DDFilteredView &, GeometricTimingDet *, std::string) override
 
- Public Member Functions inherited from CmsMTDLevelBuilder
void build (DDFilteredView &, GeometricTimingDet *, std::string) override
 
 ~CmsMTDLevelBuilder () override
 
- Public Member Functions inherited from CmsMTDAbstractConstruction
virtual ~CmsMTDAbstractConstruction ()=default
 

Private Member Functions

void buildBTLModule (DDFilteredView &, GeometricTimingDet *, const std::string &)
 
void buildETLModule (DDFilteredView &, GeometricTimingDet *, const std::string &)
 

Additional Inherited Members

- Static Public Member Functions inherited from CmsMTDLevelBuilder
static double getPhi (const GeometricTimingDet *a)
 
static double getPhiGluedModule (const GeometricTimingDet *a)
 
static double getPhiGluedModuleMirror (const GeometricTimingDet *a)
 
static double getPhiMirror (const GeometricTimingDet *a)
 
static double getPhiModule (const GeometricTimingDet *a)
 
static double getPhiModuleMirror (const GeometricTimingDet *a)
 
static bool isLessModZ (const GeometricTimingDet *a, const GeometricTimingDet *b)
 
static bool isLessR (const GeometricTimingDet *a, const GeometricTimingDet *b)
 
static bool isLessRModule (const GeometricTimingDet *a, const GeometricTimingDet *b)
 
static bool isLessZ (const GeometricTimingDet *a, const GeometricTimingDet *b)
 
static bool phiSortNP (const GeometricTimingDet *a, const GeometricTimingDet *b)
 
static bool subDetByType (const GeometricTimingDet *a, const GeometricTimingDet *b)
 
- Protected Attributes inherited from CmsMTDLevelBuilder
CmsMTDStringToEnum theCmsMTDStringToEnum
 

Detailed Description

Adds GeometricTimingDets representing final modules to the previous level

Definition at line 9 of file CmsMTDConstruction.h.

Member Function Documentation

void CmsMTDConstruction::buildBTLModule ( DDFilteredView fv,
GeometricTimingDet mother,
const std::string &  attribute 
)
private

Definition at line 38 of file CmsMTDConstruction.cc.

References GeometricTimingDet::addComponent(), constexpr, DDFilteredView::copyNumbers(), Exception, timingPdfMaker::modname, DDFilteredView::name(), GeometricTimingDet::setGeographicalID(), AlCaHLTBitMon_QueryRunRegistry::string, CmsMTDLevelBuilder::theCmsMTDStringToEnum, and CmsMTDStringToEnum::type().

Referenced by buildComponent().

38  {
40 
41  const auto& copyNumbers = fv.copyNumbers();
42  auto module_number = copyNumbers[copyNumbers.size() - 2];
43 
44  constexpr char positive[] = "PositiveZ";
45  constexpr char negative[] = "NegativeZ";
46 
47  const std::string modname = fv.name();
48  size_t delim1 = modname.find("BModule");
49  size_t delim2 = modname.find("Layer");
50  module_number += atoi(modname.substr(delim1 + 7, delim2).c_str()) - 1;
51 
52  if (modname.find(positive) != std::string::npos) {
53  det->setGeographicalID(BTLDetId(1, copyNumbers[copyNumbers.size() - 3], module_number, 0, 1));
54  } else if (modname.find(negative) != std::string::npos) {
55  det->setGeographicalID(BTLDetId(0, copyNumbers[copyNumbers.size() - 3], module_number, 0, 1));
56  } else {
57  throw cms::Exception("CmsMTDConstruction::buildBTLModule")
58  << "BTL Module " << module_number << " is neither positive nor negative in Z!";
59  }
60 
61  mother->addComponent(det);
62 }
GeometricTimingDet::GeometricTimingEnumType type(std::string const &) const
const std::string & name() const
The name of a logical-part of the current node in the filtered-view.
nav_type copyNumbers() const
return the stack of copy numbers
CmsMTDStringToEnum theCmsMTDStringToEnum
void addComponent(GeometricTimingDet *)
void setGeographicalID(DetId id)
Detector identifier class for the Barrel Timing Layer. The crystal count must start from 0...
Definition: BTLDetId.h:18
#define constexpr
void CmsMTDConstruction::buildComponent ( DDFilteredView fv,
GeometricTimingDet mother,
std::string  attribute 
)
overridevirtual

Implements CmsMTDLevelBuilder.

Definition at line 8 of file CmsMTDConstruction.cc.

References GeometricTimingDet::addComponent(), GeometricTimingDet::BTLModule, buildBTLModule(), buildETLModule(), GeometricTimingDet::ETLModule, Exception, DDFilteredView::firstChild(), DDFilteredView::name(), DDFilteredView::nextSibling(), DDFilteredView::parent(), AlCaHLTBitMon_QueryRunRegistry::string, CmsMTDLevelBuilder::theCmsMTDStringToEnum, and CmsMTDStringToEnum::type().

Referenced by CmsMTDETLRingBuilder::buildComponent(), and CmsMTDModuleBuilder::buildComponent().

8  {
9  //
10  // at this level I check whether it is a merged detector or not
11  //
12 
14 
15  const std::string part_name = fv.name().substr(0, 7);
16 
18  bool dodets = fv.firstChild();
19  while (dodets) {
20  buildBTLModule(fv, det, attribute);
21  dodets = fv.nextSibling();
22  }
23  fv.parent();
24  } else if (theCmsMTDStringToEnum.type(part_name) == GeometricTimingDet::ETLModule) {
25  bool dodets = fv.firstChild();
26  while (dodets) {
27  buildETLModule(fv, det, attribute);
28  dodets = fv.nextSibling();
29  }
30  fv.parent();
31  } else {
32  throw cms::Exception("MTDConstruction") << "woops got: " << part_name << std::endl;
33  }
34 
35  mother->addComponent(det);
36 }
GeometricTimingDet::GeometricTimingEnumType type(std::string const &) const
bool parent()
set the current node to the parent node ...
const std::string & name() const
The name of a logical-part of the current node in the filtered-view.
bool nextSibling()
set the current node to the next sibling ...
CmsMTDStringToEnum theCmsMTDStringToEnum
void buildETLModule(DDFilteredView &, GeometricTimingDet *, const std::string &)
void buildBTLModule(DDFilteredView &, GeometricTimingDet *, const std::string &)
void addComponent(GeometricTimingDet *)
bool firstChild()
set the current node to the first child ...
void CmsMTDConstruction::buildETLModule ( DDFilteredView fv,
GeometricTimingDet mother,
const std::string &  attribute 
)
private

Definition at line 64 of file CmsMTDConstruction.cc.

References GeometricTimingDet::addComponent(), DDFilteredView::copyNumbers(), ExtractStringFromDDD< FilteredView >::getString(), GeometricTimingDet::name(), GeometricTimingDet::setGeographicalID(), AlCaHLTBitMon_QueryRunRegistry::string, CmsMTDLevelBuilder::theCmsMTDStringToEnum, GeometricTimingDet::translation(), and CmsMTDStringToEnum::type().

Referenced by buildComponent().

64  {
65  GeometricTimingDet* det =
67 
68  const auto& copyNumbers = fv.copyNumbers();
69  auto module_number = copyNumbers[copyNumbers.size() - 2];
70 
71  size_t delim_ring = det->name().find("EModule");
72  size_t delim_disc = det->name().find("Disc");
73 
74  std::string ringN = det->name().substr(delim_ring + 7, delim_disc);
75 
76  const uint32_t side = det->translation().z() > 0 ? 1 : 0;
77 
78  // label geographic detid is front or back (even though it is one module per entry here)
79  det->setGeographicalID(ETLDetId(side, atoi(ringN.c_str()), module_number, 0));
80 
81  mother->addComponent(det);
82 }
GeometricTimingDet::GeometricTimingEnumType type(std::string const &) const
nav_type copyNumbers() const
return the stack of copy numbers
CmsMTDStringToEnum theCmsMTDStringToEnum
void addComponent(GeometricTimingDet *)
void setGeographicalID(DetId id)
std::string const & name() const
static std::string getString(std::string const &, DDFilteredView *)
Detector identifier class for the Endcap Timing Layer.
Definition: ETLDetId.h:15
Translation const & translation() const