From 29342e1ecd200118bdff38bdb037474ba8a20bd4 Mon Sep 17 00:00:00 2001
From: myliu <201916234@mail.sdu.edu.cn>
Date: Mon, 17 May 2021 22:47:53 +0800
Subject: [PATCH] Modify the position of the layer number

---
 .../DetCRD/compact/CRD_common_v01/DC_Simple_v01_01.xml |  3 +--
 Detector/DetDriftChamber/compact/det.xml               |  4 ++--
 .../DetDriftChamber/src/driftchamber/DriftChamber.cpp  | 10 +++++-----
 .../include/DetSegmentation/GridDriftChamber.h         |  2 --
 Detector/DetSegmentation/src/GridDriftChamber.cpp      |  4 +---
 Service/GearSvc/src/GearSvc.cpp                        |  3 +--
 6 files changed, 10 insertions(+), 16 deletions(-)

diff --git a/Detector/DetCRD/compact/CRD_common_v01/DC_Simple_v01_01.xml b/Detector/DetCRD/compact/CRD_common_v01/DC_Simple_v01_01.xml
index ca4d0d06..83186f62 100644
--- a/Detector/DetCRD/compact/CRD_common_v01/DC_Simple_v01_01.xml
+++ b/Detector/DetCRD/compact/CRD_common_v01/DC_Simple_v01_01.xml
@@ -35,7 +35,6 @@
 
     <constant name="SDT_chamber_layer_width" value="10*mm"/>
     <constant name="SDT_chamber_cell_width" value="10*mm"/>
-    <constant name="SDT_chamber_layer_number" value="(DC_chamber_layer_rend-DC_chamber_layer_rbegin)/SDT_chamber_layer_width"/>
     <constant name="Epsilon" value="0*deg"/>
 
     <constant name="SDT_chamber_inner_wall_radius_min" value="SDT_chamber_radius_min-SDT_inner_wall_thickness"/>
@@ -85,7 +84,7 @@
 
   <readouts>
     <readout name="DriftChamberHitsCollection">
-      <segmentation type="GridDriftChamber" cell_size="SDT_chamber_cell_width" epsilon0="Epsilon" detector_length="DC_length" identifier_phi="cellID" DC_rbegin="DC_chamber_layer_rbegin" DC_rend="DC_chamber_layer_rend" DC_rmin="SDT_chamber_radius_min" DC_rmax="SDT_chamber_radius_max" DC_layer_number="SDT_chamber_layer_number" safe_distance="DC_safe_distance" layerID="layer" layer_width="SDT_chamber_layer_width"/>
+      <segmentation type="GridDriftChamber" cell_size="SDT_chamber_cell_width" epsilon0="Epsilon" detector_length="DC_length" identifier_phi="cellID" DC_rbegin="DC_chamber_layer_rbegin" DC_rend="DC_chamber_layer_rend" DC_rmin="SDT_chamber_radius_min" DC_rmax="SDT_chamber_radius_max" safe_distance="DC_safe_distance" layerID="layer" layer_width="SDT_chamber_layer_width"/>
 
       <!-- <id>system:8,chamber:1,layer:8,cellID:16</id> -->
       <id>system:5,layer:7:9,chamber:8,cellID:32:16</id>
diff --git a/Detector/DetDriftChamber/compact/det.xml b/Detector/DetDriftChamber/compact/det.xml
index 58bd2dd9..3ca47adb 100644
--- a/Detector/DetDriftChamber/compact/det.xml
+++ b/Detector/DetDriftChamber/compact/det.xml
@@ -53,7 +53,6 @@
 
     <constant name="SDT_chamber_layer_width" value="10*mm"/>
     <constant name="SDT_chamber_cell_width" value="10*mm"/>
-    <constant name="SDT_chamber_layer_number" value="(DC_chamber_layer_rend-DC_chamber_layer_rbegin)/SDT_chamber_layer_width"/>
     <constant name="Epsilon" value="0*deg"/>
 
     <constant name="SDT_chamber_inner_wall_radius_min" value="SDT_chamber_radius_min-SDT_inner_wall_thickness"/>
@@ -112,7 +111,8 @@
 
   <readouts>
     <readout name="DriftChamberHitsCollection">
-      <segmentation type="GridDriftChamber" cell_size="SDT_chamber_cell_width" epsilon0="Epsilon" detector_length="DC_length" identifier_phi="cellID" DC_rbegin="DC_chamber_layer_rbegin" DC_rend="DC_chamber_layer_rend" DC_rmin="SDT_chamber_radius_min" DC_rmax="SDT_chamber_radius_max" DC_layer_number="SDT_chamber_layer_number" safe_distance="DC_safe_distance" layerID="layer" layer_width="SDT_chamber_layer_width"/>
+      <segmentation type="GridDriftChamber" cell_size="SDT_chamber_cell_width" epsilon0="Epsilon" detector_length="DC_length" identifier_phi="cellID" DC_rbegin="DC_chamber_layer_rbegin" DC_rend="DC_chamber_layer_rend" DC_rmin="SDT_chamber_radius_min" DC_rmax="SDT_chamber_radius_max" safe_distance="DC_safe_distance" layerID="layer" layer_width="SDT_chamber_layer_width"/>
+
 
       <!-- <id>system:8,chamber:1,layer:8,cellID:16</id> -->
       <id>system:5,layer:7:9,chamber:8,cellID:32:16</id>
diff --git a/Detector/DetDriftChamber/src/driftchamber/DriftChamber.cpp b/Detector/DetDriftChamber/src/driftchamber/DriftChamber.cpp
index 4f10fc98..d62cced2 100644
--- a/Detector/DetDriftChamber/src/driftchamber/DriftChamber.cpp
+++ b/Detector/DetDriftChamber/src/driftchamber/DriftChamber.cpp
@@ -49,11 +49,11 @@ static dd4hep::Ref_t create_detector(dd4hep::Detector& theDetector,
     double SDT_half_length     = theDetector.constant<double>("SDT_chamber_half_length");
 
     // - layer
-    int chamber_layer_number = theDetector.constant<int>("SDT_chamber_layer_number");
     double chamber_layer_width  = theDetector.constant<double>("SDT_chamber_layer_width");
     double chamber_cell_width  = theDetector.constant<double>("SDT_chamber_cell_width");
     double chamber_layer_rbegin = theDetector.constant<double>("DC_chamber_layer_rbegin");
     double chamber_layer_rend = theDetector.constant<double>("DC_chamber_layer_rend");
+    int chamber_layer_number = floor((chamber_layer_rend-chamber_layer_rbegin)/chamber_layer_width);
 
     double epsilon = theDetector.constant<double>("Epsilon");
 
@@ -181,20 +181,20 @@ static dd4hep::Ref_t create_detector(dd4hep::Detector& theDetector,
         //    |                     |
         //    |   F0    F1   F2   F3|
         //    -----------------------
-//     if(layer_id == 0 || layer_id ==66 || layer_id ==67 || layer_id ==91) {
+//     if(layer_id == 0 || layer_id == 1 || layer_id == 2 || layer_id == 3) {
         for(int icell=0; icell< numWire; icell++) {
             double wire_phi = (icell+0.5)*layer_Phi + offset;
             // - signal wire
             dd4hep::Transform3D transform_module(dd4hep::Rotation3D(),dd4hep::Position(rmid*std::cos(wire_phi),rmid*std::sin(wire_phi),0.));
             dd4hep::PlacedVolume module_phy = (*current_vol_ptr).placeVolume(module_vol,transform_module);
-            double wx = rmid*std::cos(wire_phi);
-            double wy = rmid*std::sin(wire_phi);
            // - Field wire
             dd4hep::PlacedVolume Module_phy;
             double radius[9] = {rmid-chamber_layer_width*0.5,rmid-chamber_layer_width*0.5,rmid-chamber_layer_width*0.5,rmid-chamber_layer_width*0.5,rmid,rmid+chamber_layer_width*0.5,rmid+chamber_layer_width*0.5,rmid+chamber_layer_width*0.5,rmid+chamber_layer_width*0.5};
             double phi[9] = {wire_phi+layer_Phi*0.25,wire_phi,wire_phi-layer_Phi*0.25,wire_phi-layer_Phi*0.5,wire_phi-layer_Phi*0.5,wire_phi-layer_Phi*0.5,wire_phi-layer_Phi*0.25,wire_phi,wire_phi+layer_Phi*0.25};
             int num = 5;
-            if(layer_id==(chamber_layer_number-1)) { num = 9; }
+            if(layer_id==(chamber_layer_number-1)) {
+               num = 9;
+            }
             for(int i=0; i<num ; i++) {
                 dd4hep::Position tr3D = Position(radius[i]*std::cos(phi[i]),radius[i]*std::sin(phi[i]),0.);
 
diff --git a/Detector/DetSegmentation/include/DetSegmentation/GridDriftChamber.h b/Detector/DetSegmentation/include/DetSegmentation/GridDriftChamber.h
index a88ae553..7c1a0864 100644
--- a/Detector/DetSegmentation/include/DetSegmentation/GridDriftChamber.h
+++ b/Detector/DetSegmentation/include/DetSegmentation/GridDriftChamber.h
@@ -72,7 +72,6 @@ public:
   inline double DC_rend() const { return m_DC_rend; }
   inline double DC_rmax() const { return m_DC_rmax; }
   inline double DC_rmin() const { return m_DC_rmin; }
-  inline int DC_layer_number() const { return m_DC_layer_number; }
   inline const std::string& fieldNamePhi() const { return m_phiID; }
   inline const std::string& Layerid() const { return layer_id; }
 
@@ -169,7 +168,6 @@ protected:
   double m_DC_rend;
   double m_DC_rmax;
   double m_DC_rmin;
-  int m_DC_layer_number;
 
   std::string m_phiID;
   std::string layer_id;
diff --git a/Detector/DetSegmentation/src/GridDriftChamber.cpp b/Detector/DetSegmentation/src/GridDriftChamber.cpp
index 30d5dccf..ec2e0707 100644
--- a/Detector/DetSegmentation/src/GridDriftChamber.cpp
+++ b/Detector/DetSegmentation/src/GridDriftChamber.cpp
@@ -32,7 +32,6 @@ GridDriftChamber::GridDriftChamber(const BitFieldCoder* decoder) : Segmentation(
   registerParameter("DC_rend", "DC_rend", m_DC_rend, 0., SegmentationParameter::LengthUnit);
   registerParameter("DC_rmin", "DC_rmin", m_DC_rmin, 0., SegmentationParameter::LengthUnit);
   registerParameter("DC_rmax", "DC_rmax", m_DC_rmax, 0., SegmentationParameter::LengthUnit);
-  registerParameter("DC_layer_number", "DC_layer_number", m_DC_layer_number, 0,SegmentationParameter::LengthUnit);
 }
 
 Vector3D GridDriftChamber::position(const CellID& /*cID*/) const {
@@ -51,6 +50,7 @@ CellID GridDriftChamber::cellID(const Vector3D& /*localPosition*/, const Vector3
   double posy = globalPosition.Y;
   double radius = sqrt(posx*posx+posy*posy);
 
+  int m_DC_layer_number = floor((m_DC_rend-m_DC_rbegin)/m_layer_width);
   double DC_layerdelta = m_layer_width;
 
   int layerid;
@@ -102,8 +102,6 @@ void GridDriftChamber::cellposition(const CellID& cID, TVector3& Wstart,
   Wend = returnWirePosition(phi_end, 1);
 }
 
-
-
 double GridDriftChamber::distanceTrackWire(const CellID& cID, const TVector3& hit_start,
                                            const TVector3& hit_end) const {
 
diff --git a/Service/GearSvc/src/GearSvc.cpp b/Service/GearSvc/src/GearSvc.cpp
index b0fd8549..e793bdbe 100644
--- a/Service/GearSvc/src/GearSvc.cpp
+++ b/Service/GearSvc/src/GearSvc.cpp
@@ -759,9 +759,8 @@ StatusCode GearSvc::convertDC(dd4hep::DetElement& dc){
 	  dcData->rMinReadout = grid->DC_rbegin();
 	  dcData->rMaxReadout = grid->DC_rend();
 	  dcData->driftLength = grid->detectorLength();
-	  dcData->maxRow      = grid->DC_layer_number();
 	  dcData->padHeight   = grid->layer_width();
-          dcData->padWidth    = dcData->padHeight;
+      dcData->padWidth    = dcData->padHeight;
 	}
 	else{
 	  TGeoNode* next = daughter;
-- 
GitLab