|
|
|
void | constructGeneralVolume (cms::DDNamespace &ns, dd4hep::Volume &parent) |
|
void | constructInsideModule (cms::DDNamespace &ns, dd4hep::Volume &module, int mod) |
|
void | constructInsideModule0 (cms::DDNamespace &ns, dd4hep::Volume &module, int mod) |
|
void | constructInsideSector (cms::DDNamespace &ns, dd4hep::Volume §or) |
|
void | constructScintLayer (cms::DDNamespace &ns, dd4hep::Volume &detector, double dz, double yh, double bl, double tl, double alp, const std::string &nm, int id) |
|
int | getLayer (unsigned int i, unsigned int j) const |
|
dd4hep::Rotation3D | getRotation (const std::string &rotation, cms::DDNamespace &ns) |
|
double | getTrim (unsigned int i, unsigned int j) const |
|
| HCalEndcapAlgo ()=delete |
|
| HCalEndcapAlgo (cms::DDParsingContext &ctxt, xml_h e) |
|
void | parameterLayer (int iphi, double rinF, double routF, double rinB, double routB, double zi, double zo, double &yh1, double &bl1, double &tl1, double &yh2, double &bl2, double &tl2, double &alp, double &theta, double &phi, double &xpos, double &ypos, double &zpos) |
|
void | parameterLayer0 (int mod, int layer, int iphi, double &yh, double &bl, double &tl, double &alp, double &xpos, double &ypos, double &zpos) |
|
Definition at line 23 of file DDHCalEndcapAlgo.cc.
◆ HCalEndcapAlgo() [1/2]
HCalEndcapAlgo::HCalEndcapAlgo |
( |
| ) |
|
|
delete |
◆ HCalEndcapAlgo() [2/2]
Definition at line 93 of file DDHCalEndcapAlgo.cc.
114 double gap =
args.value<
double>(
"Gap");
115 double z1 =
args.value<
double>(
"Z1");
116 double r1 =
args.value<
double>(
"R1");
125 <<
", " <<
nsectortot <<
"\tEndcaps " <<
nEndcap <<
"\tRotation matrix for half "
164 modName =
args.value<std::vector<std::string> >(
"ModuleName");
165 modMat =
args.value<std::vector<std::string> >(
"ModuleMat");
166 modType =
args.value<std::vector<int> >(
"ModuleType");
168 thick =
args.value<std::vector<double> >(
"ModuleThick");
169 trimLeft =
args.value<std::vector<double> >(
"TrimLeft");
171 eModule =
args.value<std::vector<int> >(
"EquipModule");
172 layerN =
args.value<std::vector<int> >(
"LayerN");
173 layerN0 =
args.value<std::vector<int> >(
"LayerN0");
174 layerN1 =
args.value<std::vector<int> >(
"LayerN1");
175 layerN2 =
args.value<std::vector<int> >(
"LayerN2");
176 layerN3 =
args.value<std::vector<int> >(
"LayerN3");
177 layerN4 =
args.value<std::vector<int> >(
"LayerN4");
178 layerN5 =
args.value<std::vector<int> >(
"LayerN5");
184 <<
" equip module " <<
eModule[
i] <<
" with " <<
layerN[
i] <<
" layers";
216 phiName =
args.value<std::vector<std::string> >(
"PhiName");
218 layerName =
args.value<std::vector<std::string> >(
"LayerName");
220 layerT =
args.value<std::vector<double> >(
"LayerT");
221 scintT =
args.value<std::vector<double> >(
"ScintT");
302 edm::LogVerbatim(
"HCalGeom") <<
"DDHCalEndcapAlgo: Module " <<
i <<
"\tZ/Rin/Rout "
312 <<
" NameSpace " << ns.name() <<
" Offset " <<
idOffset;
326 edm::LogVerbatim(
"HCalGeom") <<
"<<== End of DDHCalEndcapAlgo construction ...";
References writedatasetfile::args, cms::convert2mm(), angle_units::operators::convertRadToDeg(), MillePedeFileConverter_cfg::e, muonTiming_cfi::etamin, JetChargeProducer_cfi::exp, HLT_FULL_cff::gap, mps_fire::i, versionedElectronIDProducer_cfi::idName, dqmiolumiharvest::j, phase1PixelTopology::layerName, hgcalTopologyTester_cfi::layers, callgraph::module, LogMessageMonitor_cff::modules, cms::DDNamespace::name(), class-composition::parent, diffTwoXMLs::r1, idealTransformation::rotation, funct::sin(), slope, AlCaHLTBitMon_QueryRunRegistry::string, funct::tan(), and cms::DDNamespace::volume().
◆ constructGeneralVolume()
void HCalEndcapAlgo::constructGeneralVolume |
( |
cms::DDNamespace & |
ns, |
|
|
dd4hep::Volume & |
parent |
|
) |
| |
|
inline |
!!!!!!!!!!!!!!!!Should be zero. And removed as soon as
Definition at line 330 of file DDHCalEndcapAlgo.cc.
336 for (
int i = 0;
i < 3;
i++)
353 std::vector<double> pgonZ, pgonRmin, pgonRmax;
356 pgonZ.emplace_back(zf -
dzShift);
371 pgonRmin.emplace_back(
riKink);
372 pgonRmax.emplace_back(
rout);
374 pgonRmin.emplace_back(
riDip);
375 pgonRmax.emplace_back(
rout);
377 pgonRmin.emplace_back(
riDip);
378 pgonRmax.emplace_back(
roDip);
381 pgonRmax.emplace_back(
roDip);
382 pgonZ.emplace_back(
zEnd);
384 pgonRmax.emplace_back(
roDip);
392 for (
unsigned int i = 0;
i < pgonZ.size();
i++)
400 parent.placeVolume(genlogic, 1, dd4hep::Transform3D(
rot, r0));
402 edm::LogVerbatim(
"HCalGeom") <<
"DDHCalEndcapAlgo: " << genlogic.name() <<
" number 1 positioned in "
404 <<
") with rotation: " <<
rot;
409 parent.placeVolume(genlogic, 2, dd4hep::Transform3D(
rot, r0));
411 edm::LogVerbatim(
"HCalGeom") <<
"DDHCalEndcapAlgo: " << genlogic.name() <<
" number 2 "
413 <<
") with rotation: " <<
rot;
419 std::vector<double> pgonZMod, pgonRminMod, pgonRmaxMod;
420 for (
unsigned int i = 0;
i < (pgonZ.size() - 1);
i++) {
421 pgonZMod.emplace_back(pgonZ[
i] +
dzShift);
422 pgonRminMod.emplace_back(pgonRmin[
i]);
423 pgonRmaxMod.emplace_back(pgonRmax[
i]);
430 for (
unsigned int i = 0;
i < pgonZMod.size();
i++)
440 edm::LogVerbatim(
"HCalGeom") <<
"DDHCalEndcapAlgo: " << genlogich.name() <<
" number 1 positioned in "
451 for (
unsigned int i = 0;
i < pgonZMod.size();
i++)
460 dd4hep::Rotation3D rot0;
462 rot0 = dd4hep::RotationZ(
phi);
468 genlogich.placeVolume(seclogic,
ii + 1, rot0);
470 edm::LogVerbatim(
"HCalGeom") <<
"DDHCalEndcapAlgo: " << seclogic.name() <<
" number " << (
ii + 1)
471 <<
" positioned in " << genlogich.name() <<
" at (0, 0, 0) with rotation: " << rot0;
480 std::vector<double> pgonZBack, pgonRminBack, pgonRmaxBack;
483 pgonRmaxBack.emplace_back(
roDip);
484 pgonZBack.emplace_back(
zEnd);
486 pgonRmaxBack.emplace_back(
roDip);
489 edm::LogVerbatim(
"HCalGeom") <<
"DDHCalEndcapAlgo: " << solid.name() <<
" Polyhedra made of " <<
absMat <<
" with "
492 for (
unsigned int i = 0;
i < pgonZBack.size();
i++)
500 genlogic.placeVolume(glog, 1);
502 edm::LogVerbatim(
"HCalGeom") <<
"DDHCalEndcapAlgo: " << glog.name() <<
" number 1 positioned in " << genlogic.name()
503 <<
" at (0,0,0) with no rotation";
References cms::DDNamespace::addVolumeNS(), alpha, cms::convert2mm(), angle_units::operators::convertRadToDeg(), mps_fire::i, versionedElectronIDProducer_cfi::idName, cuy::ii, cms::DDNamespace::material(), g4SimHits_cfi::Material, Skims_PA_cff::name, class-composition::parent, HGCalGeometryMode::Polyhedra, PixelTestBeamValidation_cfi::Position, cms::DDNamespace::prepend(), makeMuonMisalignmentScenario::rot, idealTransformation::rotation, slope, AlCaHLTBitMon_QueryRunRegistry::string, and funct::tan().
◆ constructInsideModule()
void HCalEndcapAlgo::constructInsideModule |
( |
cms::DDNamespace & |
ns, |
|
|
dd4hep::Volume & |
module, |
|
|
int |
mod |
|
) |
| |
|
inline |
Definition at line 691 of file DDHCalEndcapAlgo.cc.
710 double zo = zi + 0.5 *
dzStep;
736 double yh1, bl1, tl1, yh2, bl2, tl2,
theta,
phi, alp;
737 double xpos, ypos, zpos;
739 iphi, rinF, routF, rinB, routB, ziAir, zo, yh1, bl1, tl1, yh2, bl2, tl2, alp,
theta,
phi, xpos, ypos, zpos);
742 solid = dd4hep::Trap(ns.
prepend(
name), 0.5 *
thick[
mod],
theta,
phi, yh1, bl1, tl1, alp, yh2, bl2, tl2, alp);
744 edm::LogVerbatim(
"HCalGeom") <<
"DDHCalEndcapAlgo: " << solid.name() <<
" Trap made of " << matter.name()
761 <<
") with rotation: " <<
rot;
769 solid = dd4hep::Trap(ns.
prepend(
name), 0.5 *
layerT[
layer], 0, 0, yh, bl, tl, alp, yh, bl, tl, alp);
780 ypos = 0.5 * (routF + rinB) - xpos;
785 <<
" positioned in " << glog.name() <<
" at (0, " <<
cms::convert2mm(ypos)
786 <<
", 0) with no rotation";
References alpha, cms::convert2mm(), angle_units::operators::convertRadToDeg(), DDSplit(), first, mps_fire::i, LEDCalibrationChannels::iphi, phase1PixelTopology::layer, phase1PixelTopology::layerName, cms::DDNamespace::material(), g4SimHits_cfi::Material, mod(), callgraph::module, Skims_PA_cff::name, PixelTestBeamValidation_cfi::Position, cms::DDNamespace::prepend(), diffTwoXMLs::r1, makeMuonMisalignmentScenario::rot, slope, AlCaHLTBitMon_QueryRunRegistry::string, funct::tan(), and theta().
◆ constructInsideModule0()
void HCalEndcapAlgo::constructInsideModule0 |
( |
cms::DDNamespace & |
ns, |
|
|
dd4hep::Volume & |
module, |
|
|
int |
mod |
|
) |
| |
|
inline |
Definition at line 578 of file DDHCalEndcapAlgo.cc.
592 double xpos, ypos, zpos;
596 double yh, bl, tl, alp;
599 solid = dd4hep::Trap(ns.
prepend(
name), 0.5 *
layerT[
layer], 0, 0, yh, bl, tl, alp, yh, bl, tl, alp);
618 <<
" with rotation: " <<
rot;
629 double zo = zi + 0.5 *
dzStep;
630 double rinF, routF, rinB, routB;
650 double yh1, bl1, tl1, yh2, bl2, tl2,
theta,
phi, alp;
652 0, rinF, routF, rinB, routB, zi, zo, yh1, bl1, tl1, yh2, bl2, tl2, alp,
theta,
phi, xpos, ypos, zpos);
668 solid = dd4hep::Trap(ns.
prepend(
name), 0.5 *
thick[
mod],
theta,
phi, yh1, bl1, tl1, alp, yh2, bl2, tl2, alp);
682 module.placeVolume(glog, 1, dd4hep::Transform3D(
rot,
r2));
685 edm::LogVerbatim(
"HCalGeom") <<
"DDHCalEndcapAlgo: " << glog.name() <<
" number 1 positioned in " <<
module.name()
References cms::convert2mm(), angle_units::operators::convertRadToDeg(), DDSplit(), fact, first, LEDCalibrationChannels::iphi, phase1PixelTopology::layer, phase1PixelTopology::layerName, cms::DDNamespace::material(), g4SimHits_cfi::Material, mod(), callgraph::module, Skims_PA_cff::name, PixelTestBeamValidation_cfi::Position, cms::DDNamespace::prepend(), diffTwoXMLs::r1, diffTwoXMLs::r2, makeMuonMisalignmentScenario::rot, slope, AlCaHLTBitMon_QueryRunRegistry::string, funct::tan(), and theta().
◆ constructInsideSector()
void HCalEndcapAlgo::constructInsideSector |
( |
cms::DDNamespace & |
ns, |
|
|
dd4hep::Volume & |
sector |
|
) |
| |
|
inline |
!!!!!!!!!!!!!!!!Should be zero. And removed as soon as
Definition at line 507 of file DDHCalEndcapAlgo.cc.
524 std::vector<double> pgonZ, pgonRmin, pgonRmax;
527 pgonZ.emplace_back(zf);
530 pgonZ.emplace_back(
ziKink);
531 pgonRmin.emplace_back(
riKink);
532 pgonRmax.emplace_back(
rout);
539 pgonZ.emplace_back(
ziDip);
540 pgonRmin.emplace_back(
riDip);
541 pgonRmax.emplace_back(
rout);
542 pgonZ.emplace_back(pgonZ[1] + deltaz);
543 pgonRmin.emplace_back(pgonRmin[1]);
544 pgonRmax.emplace_back(
roDip);
556 for (
unsigned int k = 0;
k < pgonZ.size();
k++)
564 sector.placeVolume(glog,
i + 1);
566 edm::LogVerbatim(
"HCalGeom") <<
"DDHCalEndcapAlgo: " << glog.name() <<
" number " << (
i + 1)
567 <<
" positioned in " << sector.name() <<
" at (0,0,0) with no rotation";
References alpha, cms::convert2mm(), angle_units::operators::convertRadToDeg(), mps_fire::i, versionedElectronIDProducer_cfi::idName, dqmdumpme::k, cms::DDNamespace::material(), g4SimHits_cfi::Material, LogMessageMonitor_cff::modules, Skims_PA_cff::name, HGCalGeometryMode::Polyhedra, cms::DDNamespace::prepend(), slope, AlCaHLTBitMon_QueryRunRegistry::string, and funct::tan().
◆ constructScintLayer()
void HCalEndcapAlgo::constructScintLayer |
( |
cms::DDNamespace & |
ns, |
|
|
dd4hep::Volume & |
detector, |
|
|
double |
dz, |
|
|
double |
yh, |
|
|
double |
bl, |
|
|
double |
tl, |
|
|
double |
alp, |
|
|
const std::string & |
nm, |
|
|
int |
id |
|
) |
| |
|
inline |
Definition at line 799 of file DDHCalEndcapAlgo.cc.
811 dd4hep::Solid solid = dd4hep::Trap(ns.
prepend(
name), 0.5 *
dz, 0, 0, yh, bl, tl, alp, yh, bl, tl, alp);
823 edm::LogVerbatim(
"HCalGeom") <<
"DDHCalEndcapAlgo: " << glog.name() <<
" number " <<
id <<
" positioned in "
824 <<
detector.name() <<
" at (0,0,0) with no rotation";
References cms::convert2mm(), angle_units::operators::convertRadToDeg(), hgcalTestNeighbor_cfi::detector, PVValHelper::dz, versionedElectronIDProducer_cfi::idName, cms::DDNamespace::material(), g4SimHits_cfi::Material, Skims_PA_cff::name, cms::DDNamespace::prepend(), and AlCaHLTBitMon_QueryRunRegistry::string.
◆ getLayer()
int HCalEndcapAlgo::getLayer |
( |
unsigned int |
i, |
|
|
unsigned int |
j |
|
) |
| const |
|
inline |
◆ getRotation()
dd4hep::Rotation3D HCalEndcapAlgo::getRotation |
( |
const std::string & |
rotation, |
|
|
cms::DDNamespace & |
ns |
|
) |
| |
|
inline |
◆ getTrim()
double HCalEndcapAlgo::getTrim |
( |
unsigned int |
i, |
|
|
unsigned int |
j |
|
) |
| const |
|
inline |
◆ parameterLayer()
void HCalEndcapAlgo::parameterLayer |
( |
int |
iphi, |
|
|
double |
rinF, |
|
|
double |
routF, |
|
|
double |
rinB, |
|
|
double |
routB, |
|
|
double |
zi, |
|
|
double |
zo, |
|
|
double & |
yh1, |
|
|
double & |
bl1, |
|
|
double & |
tl1, |
|
|
double & |
yh2, |
|
|
double & |
bl2, |
|
|
double & |
tl2, |
|
|
double & |
alp, |
|
|
double & |
theta, |
|
|
double & |
phi, |
|
|
double & |
xpos, |
|
|
double & |
ypos, |
|
|
double & |
zpos |
|
) |
| |
|
inline |
◆ parameterLayer0()
void HCalEndcapAlgo::parameterLayer0 |
( |
int |
mod, |
|
|
int |
layer, |
|
|
int |
iphi, |
|
|
double & |
yh, |
|
|
double & |
bl, |
|
|
double & |
tl, |
|
|
double & |
alp, |
|
|
double & |
xpos, |
|
|
double & |
ypos, |
|
|
double & |
zpos |
|
) |
| |
|
inline |
◆ absMat
std::string HCalEndcapAlgo::absMat |
◆ angBot
double HCalEndcapAlgo::angBot |
◆ angGap
double HCalEndcapAlgo::angGap |
◆ angTop
double HCalEndcapAlgo::angTop |
◆ drEnd
double HCalEndcapAlgo::drEnd |
◆ dzShift
double HCalEndcapAlgo::dzShift |
◆ dzStep
double HCalEndcapAlgo::dzStep |
◆ eModule
std::vector<int> HCalEndcapAlgo::eModule |
◆ genMaterial
std::string HCalEndcapAlgo::genMaterial |
◆ heboxDepth
double HCalEndcapAlgo::heboxDepth |
◆ idName
std::string HCalEndcapAlgo::idName |
◆ idOffset
int HCalEndcapAlgo::idOffset |
◆ layerN
std::vector<int> HCalEndcapAlgo::layerN |
◆ layerN0
std::vector<int> HCalEndcapAlgo::layerN0 |
◆ layerN1
std::vector<int> HCalEndcapAlgo::layerN1 |
◆ layerN2
std::vector<int> HCalEndcapAlgo::layerN2 |
◆ layerN3
std::vector<int> HCalEndcapAlgo::layerN3 |
◆ layerN4
std::vector<int> HCalEndcapAlgo::layerN4 |
◆ layerN5
std::vector<int> HCalEndcapAlgo::layerN5 |
◆ layerName
std::vector<std::string> HCalEndcapAlgo::layerName |
◆ layers
int HCalEndcapAlgo::layers |
◆ layerT
std::vector<double> HCalEndcapAlgo::layerT |
◆ layerType
std::vector<int> HCalEndcapAlgo::layerType |
◆ modMat
std::vector<std::string> HCalEndcapAlgo::modMat |
◆ modName
std::vector<std::string> HCalEndcapAlgo::modName |
◆ modType
std::vector<int> HCalEndcapAlgo::modType |
◆ modules
int HCalEndcapAlgo::modules |
◆ nEndcap
int HCalEndcapAlgo::nEndcap |
◆ nsectors
int HCalEndcapAlgo::nsectors |
◆ nsectortot
int HCalEndcapAlgo::nsectortot |
◆ phiName
std::vector<std::string> HCalEndcapAlgo::phiName |
◆ phiSections
int HCalEndcapAlgo::phiSections |
◆ plastMat
std::string HCalEndcapAlgo::plastMat |
◆ riDip
double HCalEndcapAlgo::riDip |
◆ riKink
double HCalEndcapAlgo::riKink |
◆ rinBlock1
std::vector<double> HCalEndcapAlgo::rinBlock1 |
◆ rinBlock2
std::vector<double> HCalEndcapAlgo::rinBlock2 |
◆ roDip
double HCalEndcapAlgo::roDip |
◆ rotation
std::string HCalEndcapAlgo::rotation |
◆ rotHalf
std::string HCalEndcapAlgo::rotHalf |
◆ rotmat
std::string HCalEndcapAlgo::rotmat |
◆ rout
double HCalEndcapAlgo::rout |
◆ routBlock1
std::vector<double> HCalEndcapAlgo::routBlock1 |
◆ routBlock2
std::vector<double> HCalEndcapAlgo::routBlock2 |
◆ scintMat
std::string HCalEndcapAlgo::scintMat |
◆ scintT
std::vector<double> HCalEndcapAlgo::scintT |
◆ sectionModule
std::vector<int> HCalEndcapAlgo::sectionModule |
◆ slope
double HCalEndcapAlgo::slope |
◆ thick
std::vector<double> HCalEndcapAlgo::thick |
◆ tolAbs
double HCalEndcapAlgo::tolAbs |
◆ tolPos
double HCalEndcapAlgo::tolPos |
◆ trimLeft
std::vector<double> HCalEndcapAlgo::trimLeft |
◆ trimRight
std::vector<double> HCalEndcapAlgo::trimRight |
◆ z0Beam
double HCalEndcapAlgo::z0Beam |
◆ z1Beam
double HCalEndcapAlgo::z1Beam |
◆ zEnd
double HCalEndcapAlgo::zEnd |
◆ zFront
double HCalEndcapAlgo::zFront |
◆ ziBody
double HCalEndcapAlgo::ziBody |
◆ ziDip
double HCalEndcapAlgo::ziDip |
◆ ziKink
double HCalEndcapAlgo::ziKink |
◆ ziL0Body
double HCalEndcapAlgo::ziL0Body |
◆ ziL0Nose
double HCalEndcapAlgo::ziL0Nose |
◆ ziNose
double HCalEndcapAlgo::ziNose |
◆ zmaxBlock
std::vector<double> HCalEndcapAlgo::zmaxBlock |
◆ zminBlock
std::vector<double> HCalEndcapAlgo::zminBlock |
◆ zShift
double HCalEndcapAlgo::zShift |
◆ zShiftHac2
double HCalEndcapAlgo::zShiftHac2 |
std::vector< std::string > layerName
dd4hep::Material material(const std::string &name) const
std::vector< int > modType
std::vector< double > trimRight
constexpr NumType convertRadToDeg(NumType radians)
std::vector< int > layerN2
T mod(const T &a, const T &b)
void constructInsideModule(cms::DDNamespace &ns, dd4hep::Volume &module, int mod)
std::vector< double > rinBlock1
int getLayer(unsigned int i, unsigned int j) const
void constructGeneralVolume(cms::DDNamespace &ns, dd4hep::Volume &parent)
std::vector< double > thick
std::vector< double > routBlock1
Sin< T >::type sin(const T &t)
void parameterLayer(int iphi, double rinF, double routF, double rinB, double routB, double zi, double zo, double &yh1, double &bl1, double &tl1, double &yh2, double &bl2, double &tl2, double &alp, double &theta, double &phi, double &xpos, double &ypos, double &zpos)
std::string prepend(const std::string &) const
std::vector< int > layerN3
Geom::Theta< T > theta() const
const dd4hep::Rotation3D & rotation(const std::string &name) const
std::vector< double > rinBlock2
void constructInsideModule0(cms::DDNamespace &ns, dd4hep::Volume &module, int mod)
std::vector< double > zminBlock
constexpr std::array< uint8_t, layerIndexSize > layer
std::vector< double > trimLeft
std::vector< double > zmaxBlock
void constructScintLayer(cms::DDNamespace &ns, dd4hep::Volume &detector, double dz, double yh, double bl, double tl, double alp, const std::string &nm, int id)
Tan< T >::type tan(const T &t)
std::vector< std::string > modName
std::vector< int > sectionModule
void parameterLayer0(int mod, int layer, int iphi, double &yh, double &bl, double &tl, double &alp, double &xpos, double &ypos, double &zpos)
constexpr NumType convert2mm(NumType length)
dd4hep::Rotation3D getRotation(const std::string &rotation, cms::DDNamespace &ns)
std::vector< int > layerN
std::vector< int > layerN1
std::vector< int > layerType
std::vector< std::string > modMat
std::vector< double > scintT
std::vector< std::string > phiName
dd4hep::Volume addVolumeNS(dd4hep::Volume vol) const
std::vector< double > routBlock2
std::vector< int > layerN0
Log< level::Info, true > LogVerbatim
std::vector< int > eModule
std::vector< double > layerT
double getTrim(unsigned int i, unsigned int j) const
void constructInsideSector(cms::DDNamespace &ns, dd4hep::Volume §or)
std::vector< int > layerN5
std::vector< int > layerN4
std::pair< std::string, std::string > DDSplit(const std::string &n)
split into (name,namespace), separator = ':'