From adfa7bae0145bcd26e5245f8fa9ad4843c27174a Mon Sep 17 00:00:00 2001
From: Dmitry Romanov <romanovda@gmail.com>
Date: Sun, 20 Feb 2022 22:08:32 -0500
Subject: [PATCH] Works again

---
 compact/dirc.xml | 27 ++++++++++++++-------------
 src/DIRC_geo.cpp | 23 +++++++++++++++++------
 2 files changed, 31 insertions(+), 19 deletions(-)

diff --git a/compact/dirc.xml b/compact/dirc.xml
index baa108b1..b7166002 100644
--- a/compact/dirc.xml
+++ b/compact/dirc.xml
@@ -21,12 +21,13 @@
   </comment>
 
   <define>
-    <constant name="DIRCFake_rmin"             value="BarrelTracking_rmax-11*cm"/>
+    <constant name="DIRCFake_rmin"         value="DIRC_rmin"/>
     <constant name="DIRC_rotation"         value="pi" comment="Allows DIRC flip"/>
     <!-- <constant name="cb_DIRC_length"    value="DIRCLength"/> -->
     <!-- CLEANUP THIS if not sure. This is from the initial implementation
     <constant name="DIRC_length"            value="285.500*cm"/>
     <constant name="DIRCFake_rmin"              value="82.00*cm"/>-->
+    <constant name="DIRC_verbose"           value="1" comment="0-no output, 1-some, 2-verbose"/>
 
     <!-- Prism -->
     <constant name="DIRCPrism_width"        value="360*mm"/>
@@ -37,8 +38,8 @@
     <constant name="DIRCPrism_height"       value="DIRCPrism_long_edge"/>
 
     <!-- DIRC length -->
-    <constant name="DIRCMain_length"           value="DIRC_length"/>
-    <constant name="DIRCFake_offset"           value="DIRC_offset+15*cm"/>
+    <constant name="DIRCMain_length"        value="DIRC_length"/>
+    <constant name="DIRCFake_offset"        value="DIRC_offset+15*cm"/>
 
     <!-- Box - main DIRC modules -->
     <constant name="DIRCBox_count"          value="16"  comment="Number of DIRC boxes per... DIRC. 16 - default"/>
@@ -77,7 +78,7 @@
       RMax is calculated according to "rectangle inside ring" problem solution
       https://math.stackexchange.com/questions/4222684/calculate-rectangle-inside-ring-parameters/4222691#4222691
     </comment>
-    <constant name="DIRCFake_rmax"              value="sqrt( (DIRCFake_rmin+DIRCPrism_height)^2 + 0.25*(DIRCPrism_height)^2 )"/>
+    <constant name="DIRCFake_rmax"          value="sqrt( (DIRCFake_rmin+DIRCPrism_height)^2 + 0.25*(DIRCPrism_height)^2 )"/>
   </define>
 
   <materials>
@@ -107,16 +108,16 @@
   </regions>
 
   <display>
-    <vis name="DIRCTube"   ref="AnlTeal" alpha="0.1" visible="true"  showDaughters="true"   lineStyle="solid" drawingStyle="solid" />
+    <vis name="DIRCTube"   ref="AnlGold" alpha="0.3" visible="true"  showDaughters="true"   lineStyle="solid" drawingStyle="solid" />
     <vis name="DIRCBox"    ref="AnlLight_Gray" alpha="0.1" visible="true"  showDaughters="true"   lineStyle="solid" drawingStyle="solid" />
     <vis name="DIRCLens1"  ref="AnlProcess_Blue" visible="true"  showDaughters="false"  lineStyle="solid" drawingStyle="solid" />
     <vis name="DIRCLens2"  ref="AnlProcess_Blue" visible="true"  showDaughters="false"  lineStyle="solid" drawingStyle="solid" />
     <vis name="DIRCLens3"  ref="AnlTeal" visible="true"  showDaughters="false"  lineStyle="solid" drawingStyle="solid" />
-    <vis name="DIRCBar"    ref="AnlTeal" visible="true"  showDaughters="false"  lineStyle="solid" drawingStyle="solid" />
-    <vis name="DIRCGlue"   ref="AnlViolet" visible="true"  showDaughters="false"  lineStyle="solid" drawingStyle="solid" />
-    <vis name="DIRCMirror" ref="AnlGray" visible="true"  showDaughters="false"  lineStyle="solid" drawingStyle="solid" />
-    <vis name="DIRCPrism"  ref="AnlTeal" visible="true"  showDaughters="false"  lineStyle="solid" drawingStyle="solid" />
-    <vis name="DIRCFd"     ref="AnlRed" visible="true"  showDaughters="false" />
+    <vis name="DIRCBar"    ref="AnlTeal" alpha="0.5" visible="true"  showDaughters="false"  lineStyle="solid" drawingStyle="solid" />
+    <vis name="DIRCGlue"   ref="AnlViolet" alpha="0.5" visible="true"  showDaughters="false"  lineStyle="solid" drawingStyle="solid" />
+    <vis name="DIRCMirror" ref="AnlGray" alpha="0.5" visible="true"  showDaughters="false"  lineStyle="solid" drawingStyle="solid" />
+    <vis name="DIRCPrism"  ref="AnlTeal" alpha="0.5" visible="true"  showDaughters="false"  lineStyle="solid" drawingStyle="solid" />
+    <vis name="DIRCFd"     ref="AnlRed" alpha="0.5" visible="true"  showDaughters="false" />
   </display>
 
   <detectors>
@@ -142,11 +143,11 @@
           length="DIRCBar_length"
           repeat="DIRCBar_count"
           gap="DIRCBar_gap"
-          material="Quartz"
+          material="QuartzOptical"
           vis="DIRCBar"
         />
 
-        <glue thickness="DIRCGlue_thickness" material="Epotek" vis="DIRCGlue"/>
+        <glue thickness="DIRCGlue_thickness" material="EpotekOptical" vis="DIRCGlue"/>
 
         <!-- lens -->
         <lens
@@ -164,7 +165,7 @@
           width="DIRCFd_width"
           thickness="DIRCFd_thickness"
           vis="DIRCFd"
-          material="Quartz"
+          material="QuartzOptical"
         />
       </module>
     </detector>
diff --git a/src/DIRC_geo.cpp b/src/DIRC_geo.cpp
index 1abbd45f..8e3c8f86 100644
--- a/src/DIRC_geo.cpp
+++ b/src/DIRC_geo.cpp
@@ -3,6 +3,7 @@
 #include "DD4hep/Printout.h"
 #include "DDRec/DetectorData.h"
 #include "DDRec/Surface.h"
+#include "fmt/core.h"
 #include <XML/Helper.h>
 
 //////////////////////////////////
@@ -30,6 +31,14 @@ static Ref_t createDetector(Detector& desc, xml_h e, SensitiveDetector sens)
   double    det_rin   = dirc_dim.rmin();
   double    det_rout  = dirc_dim.rmax();
   double    SizeZ = dirc_dim.length();
+  int       verbose = desc.constant<int>("DIRC_verbose");
+
+  // >oO debug output
+  if(verbose) {
+      fmt::print("DIRC: dimensions rin={}[cm] rout={}[cm] len={}[cm]\n", det_rin/cm, det_rout/cm, SizeZ/cm);
+  }
+
+
 
   // DEBUG
   // double mirror_r1 = x_det.attr<double>(_Unicode(r1));
@@ -39,15 +48,16 @@ static Ref_t createDetector(Detector& desc, xml_h e, SensitiveDetector sens)
 
   Material Vacuum = desc.material("Vacuum");
   Material air = desc.material("AirOptical");
-  Material quartz = desc.material("Quartz");
-  Material epotek = desc.material("Epotek");
-  Material nlak33a = desc.material("Nlak33a");
+  Material quartz = desc.material("QuartzOptical");
+  Material epotek = desc.material("EpotekOptical");
+  Material nlak33a = desc.material("Nlak33aOptical");
   auto& bar_material = quartz;
+
   auto mirror_material = desc.material("Aluminum");  // mirror material
 
   Tube     det_geo(det_rin, det_rout, SizeZ / 2., 0., 360.0 * deg);
-  //Volume   det_volume("DIRC", det_geo, Vacuum);
-  Assembly   det_volume("DIRC");
+  Volume   det_volume("DIRC", det_geo, air);
+  //Assembly   det_volume("DIRC");
   det_volume.setVisAttributes(desc.visAttributes(xml_det.visStr()));
 
   DetElement   det(det_name, det_id);
@@ -284,7 +294,8 @@ static Ref_t createDetector(Detector& desc, xml_h e, SensitiveDetector sens)
 
   Position  fPrismShift(prism_shift_x, 0, prism_shift_z);
   dirc_module.placeVolume(lPrizm, Transform3D(xRot, fPrismShift));
-  dirc_module.placeVolume(lFd, Position(0.5 * fFd[1] - 0.5 * fPrizm[3] - evshiftx, 0, evshiftz));
+
+  //dirc_module.placeVolume(lFd, Position(0.5 * fFd[1] - 0.5 * fPrizm[3] - evshiftx, 0, evshiftz));
 
   double dphi = 2 * M_PI / (double)fNBoxes;
   for (int i = 0; i < fNBoxes; i++) {
-- 
GitLab