Skip to content
Snippets Groups Projects

Rich1 fix some mirror overlaps

31 files
+ 1081
202
Compare changes
  • Side-by-side
  • Inline
Files
31
@@ -18,6 +18,7 @@
#include "DD4hep/Printout.h"
#include "Detector/Rich/Types.h"
#include "Detector/Rich/Utilities.h"
#include "Detector/Rich1/RichGeomVersion.h"
#include "XML/Utilities.h"
#include <type_traits>
#include <vector>
@@ -35,6 +36,10 @@ enum class RichGeomTransformLabel : int {
pvRich1Mirror2MasterBotTN,
pvRich1Mirror2SupportTopTN,
pvRich1Mirror2SupportBotTN,
pvRich1Mirror2Q0MasterTN,
pvRich1Mirror2Q1MasterTN,
pvRich1Mirror2Q2MasterTN,
pvRich1Mirror2Q3MasterTN,
pvRich1MgsOuterH0TN,
pvRich1MgsOuterH1TN,
pvRich1MgsUpstrH0TN,
@@ -133,11 +138,29 @@ public:
const auto& Rich1Mirror2SupportLVName( int aG ) const { return m_Rich1Mirror2SupportLVNames[aG]; }
const auto& Rich1Mirror2MasterDetName( int aH ) const { return m_Rich1Mirror2MasterDetNames[aH]; }
const auto& Rich1Mirror2QuadrantMasterLVName( int aQ ) const { return m_Rich1Mirror2QuadrantMasterLVNames[aQ]; }
const auto& Rich1Mirror2QuadrantMasterDetName( int aD ) const { return m_Rich1Mirror2QuadrantMasterDetNames[aD]; }
auto getR1M2QuadrantMasterTN( int aQu ) const {
if ( aQu == 0 ) {
return RichGeomTransformLabel::pvRich1Mirror2Q0MasterTN;
} else if ( aQu == 1 ) {
return RichGeomTransformLabel::pvRich1Mirror2Q1MasterTN;
} else if ( aQu == 2 ) {
return RichGeomTransformLabel::pvRich1Mirror2Q2MasterTN;
} else {
return RichGeomTransformLabel::pvRich1Mirror2Q3MasterTN;
}
}
auto Rich1NumMirror2Seg() const { return m_Rich1NumMirror2Seg; }
auto Rich1NumMirror2SegInAHalf() const { return m_Rich1NumMirror2SegInAHalf; }
auto Rich1NumMirror2SegInAQuad() const { return m_Rich1NumMirror2SegInAQuad; }
auto Rich1NumMirror2Systems() const { return m_Rich1NumMirror2Systems; }
auto Rich1NumMirror2Quadrants() const { return m_Rich1NumMirror2Quadrants; }
auto Rich1NumMirror2QuadrantsInHalf() const { return m_Rich1NumMirror2QuadrantsInHalf; }
auto Rich2Mirror2QuadInM2Sys( int aQu ) const { return m_Rich2Mirror2QuadInM2Sys[aQu]; }
const auto& Rich1Mirror1CaFiCylinderPhysVolName( int iQ, int iC ) const {
return m_Rich1Mirror1CaFiCylinderPhysVolNames[iQ][iC];
@@ -184,11 +207,14 @@ public:
const auto& Rich1NitrogenMatName() const { return m_Rich1NitrogenMatName; }
const auto& Rich1C4F10MatName() const { return m_Rich1C4F10MatName; }
const auto& Rich1RadiatorGasMatName() const { return m_Rich1RadiatorGasMatName; }
void setRich1GeometryVersion( RichGeomLabel aRG ) { m_Cur_Rich1GeomVersion = aRG; }
const auto& Cur_Rich1GeomVersion() { return m_Cur_Rich1GeomVersion; }
using ListDE = std::vector<std::pair<dd4hep::DetElement, dd4hep::cond::ConditionUpdateContext&>>;
ListDE Rich1Mirror2ListDE( const dd4hep::DetElement& de, dd4hep::cond::ConditionUpdateContext& ctxt, int aSide );
RichGeoUtil() { InitRichTransformsAndNames(); }
// RichGeoUtil() { InitRichTransformsAndNames(); }
RichGeoUtil() {}
private:
int m_RichMaxNumGeomTransforms{0};
@@ -211,6 +237,8 @@ private:
std::vector<std::string> m_Rich1Mirror2MasterLVNames;
std::vector<std::string> m_Rich1Mirror2SupportLVNames;
std::vector<std::string> m_Rich1Mirror2MasterDetNames;
std::vector<std::string> m_Rich1Mirror2QuadrantMasterLVNames;
std::vector<std::string> m_Rich1Mirror2QuadrantMasterDetNames;
std::vector<std::string> m_Rich1Mirror2TransformNames;
std::vector<std::string> m_Rich1Mirror2PhysVolNames;
@@ -222,19 +250,22 @@ private:
std::vector<std::string> m_Rich1Mirror2SegNames;
std::vector<std::string> m_Rich1Mirror1VolTypeNames;
int m_Rich1NumMirror1Seg; // Number of Mirror segments in Rich1 spherical mirror system
int m_Rich1NumMirror2Seg; // Number of Mirror segments in Rich1 almostFlat mirror system
int m_Rich1NumMirror2SegInAHalf; // Number of Mirror segments in top (or bottom) half in Rich1 almostFlat mirror
// system
int m_Rich1NumMirror2SegInAQuad; // Number of Mirror segments in a quadrant in top (or bottom) half
// in Rich1 almostFlat mirror system
int m_Rich1NumMirror2Systems; // For the top and bottom almostFlat mirror system
int m_Rich1NumMirror1VolTypes; // Number of different Volume types in Rich1Mirror1 system.
int m_Rich1NumMirror1DetTypes; // Number of different det element types in Rich1Mirror1 system.
int m_Rich1Mirror1NumCaFiCylAlongX; // total number of CaFi Cyl along X in a quadrant segment.
int m_Rich1Mirror1NumCaFiCylAlongY; // total number of CaFi Cyl along Y in a quadrant segment.
int m_Rich1Mirror1NumCaFiCylInASeg; // total number of CaFi Cyl in a quadrant segment.
int m_Rich1NumMirror1Seg; // Number of Mirror segments in Rich1 spherical mirror system
int m_Rich1NumMirror2Seg; // Number of Mirror segments in Rich1 almostFlat mirror system
int m_Rich1NumMirror2SegInAHalf; // Number of Mirror segments in top (or bottom) half in Rich1 almostFlat mirror
// system
int m_Rich1NumMirror2SegInAQuad; // Number of Mirror segments in a quadrant in top (or bottom) half
// in Rich1 almostFlat mirror system
int m_Rich1NumMirror2Systems; // For the top and bottom almostFlat mirror system
int m_Rich1NumMirror2Quadrants; // Number of quadrants for the Rich1 mirror2 system.
int m_Rich1NumMirror2QuadrantsInHalf; // Number of quadrants in top or bottom half of the Rich1 mirror2 system.
int m_Rich1NumMirror1VolTypes; // Number of different Volume types in Rich1Mirror1 system.
int m_Rich1NumMirror1DetTypes; // Number of different det element types in Rich1Mirror1 system.
std::vector<int> m_Rich2Mirror2QuadInM2Sys; // Indicates a quadrant in top (0) or bottom (1) half of the mirror2
// system
int m_Rich1Mirror1NumCaFiCylAlongX; // total number of CaFi Cyl along X in a quadrant segment.
int m_Rich1Mirror1NumCaFiCylAlongY; // total number of CaFi Cyl along Y in a quadrant segment.
int m_Rich1Mirror1NumCaFiCylInASeg; // total number of CaFi Cyl in a quadrant segment.
std::vector<std::vector<std::string>> m_Rich1Mirror1CaFiCylinderPhysVolNames;
std::vector<std::vector<int>> m_Rich1Mirror1CaFiCylinderCopyNumbers;
@@ -257,11 +288,11 @@ private:
// Parameters used in Simulation with Gaussino
std::string m_Rich1GasQuartzWMatName;
std::string m_RichMasterMatName;
std::string m_Rich1NitrogenMatName;
std::string m_Rich1C4F10MatName;
std::string m_Rich1RadiatorGasMatName;
bool m_RichGeomUtilDebug{true};
std::string m_Rich1GasQuartzWMatName;
std::string m_RichMasterMatName;
std::string m_Rich1NitrogenMatName;
std::string m_Rich1C4F10MatName;
std::string m_Rich1RadiatorGasMatName;
RichGeomLabel m_Cur_Rich1GeomVersion;
bool m_RichGeomUtilDebug{true};
};
Loading