From 7c37a08c6e385b1b9864d5c9053efd3390bd1975 Mon Sep 17 00:00:00 2001
From: Chengdong Fu <fucd@ihep.ac.cn>
Date: Wed, 17 Apr 2024 11:15:00 +0800
Subject: [PATCH] fix bug for vxd and switch fixed calorimeter to optional

---
 .../src/ild/support/ILDSupportKalDetector.cc  | 20 ++++++++++---------
 1 file changed, 11 insertions(+), 9 deletions(-)

diff --git a/Utilities/KalDet/src/ild/support/ILDSupportKalDetector.cc b/Utilities/KalDet/src/ild/support/ILDSupportKalDetector.cc
index 64dd6546..1376b4ad 100644
--- a/Utilities/KalDet/src/ild/support/ILDSupportKalDetector.cc
+++ b/Utilities/KalDet/src/ild/support/ILDSupportKalDetector.cc
@@ -87,7 +87,8 @@ TVKalDetector(10)
   // first check the sizes of the beam-pipe values r_in r_out and z
 
   if ( ( z.size() != rInner.size() ) || ( z.size() != rOuter.size() ) ) {
-    // streamlog_out(ERROR) << "ILDSupportKalDetector::ILDSupportKalDetector miss-match in number of double values for beam-pipe: Z = " << z.size() << " RInner = " << rInner.size() << " ROuter = " << rOuter.size()  << " exit(1) called from "<< __FILE__ << "   line " << __LINE__ << std::endl;
+    std::cout << "ILDSupportKalDetector::ILDSupportKalDetector miss-match in number of double values for beam-pipe: Z = " << z.size()
+	      << " RInner = " << rInner.size() << " ROuter = " << rOuter.size()  << " exit(1) called from "<< __FILE__ << "   line " << __LINE__ << std::endl;
     exit(1);
   }
   
@@ -127,7 +128,8 @@ TVKalDetector(10)
     if (i==0) {
       // check that z values start a zero
       if (fabs(zStart) > epsilon) {
-        // streamlog_out(ERROR) << "ILDSupportKalDetector::ILDSupportKalDetector first z value for beam-pipe must equal zero: Z = " << zStart << " exit(1) called from "<< __FILE__ << "   line " << __LINE__ << std::endl;
+	std::cout << "ILDSupportKalDetector::ILDSupportKalDetector first z value for beam-pipe must equal zero: Z = " << zStart
+		  << " exit(1) called from "<< __FILE__ << "   line " << __LINE__ << std::endl;
         exit(1);
       }
       
@@ -288,17 +290,17 @@ TVKalDetector(10)
   
   const gear::CalorimeterParameters& ecalB = gearMgr.getEcalBarrelParameters();
   const gear::CalorimeterParameters& ecalE = gearMgr.getEcalEndcapParameters();
-  
-  if (ecalB.getSymmetryOrder()!=8) {
-    // streamlog_out(ERROR) << "ILDSupportKalDetector::ILDSupportKalDetector ECal barrel is not eightfold symmetry: exit(1) called from " << __FILE__ << "   line " << __LINE__ << std::endl; 
-    exit(1);
 
+  int nside = ecalB.getSymmetryOrder();
+  if (ecalB.getSymmetryOrder()<=0) {
+    std::cout << "ILDSupportKalDetector::ILDSupportKalDetector ECal barrel zero symmetry: exit(1) called from " << __FILE__ << "   line " << __LINE__ << std::endl; 
+    exit(1);
   }
   
   double phi0  = ecalB.getPhi0();
   double r_min_ecal_bar = ecalB.getExtent()[0];
   double z_max_ecal_bar = ecalB.getExtent()[3];
-
+  //std::cout << "fucdout ILDSupportKalDetector " << phi0 << " " << r_min_ecal_bar << " " << z_max_ecal_bar << std::endl;
   UTIL::BitField64 encoder( lcio::ILDCellID0::encoder_string ) ; 
   encoder.reset() ;  // reset to 0
   
@@ -308,12 +310,12 @@ TVKalDetector(10)
   
   std::vector<int> module_ids;
   
-  for (int i=0; i<8; ++i) {
+  for (int i=0; i<nside; ++i) {
 
     encoder[lcio::ILDCellID0::module] = i;
     module_ids.push_back(encoder.lowWord());
 
-    double segment_dphi = 2.0*M_PI / 8; 
+    double segment_dphi = 2.0*M_PI / nside;
     double phi = i*segment_dphi+phi0;
     double width = 2.0*(r_min_ecal_bar*tan(segment_dphi*0.5));
     double length = 2.0*z_max_ecal_bar;
-- 
GitLab