@@ -67,8 +67,10 @@ class MTDDigiGeometryAnalyzer : public edm::one::EDAnalyzer<> {
6767 static constexpr double eta_bins_edges_neg[n_bin_Eta + 1 ] = {-3.0 , -2.5 , -2.1 , -1.5 };
6868 static constexpr double eta_bins_edges_pos[n_bin_Eta + 1 ] = {1.5 , 2.1 , 2.5 , 3.0 };
6969
70- // LGAD counter per Disk
71- uint32_t totalLGADsPerDisk_[4 ] = {0 };
70+ // LGAD counter per Disc, DiscSide, and Sector: [disk][discSide][sector]
71+ static constexpr int n_discSide = 2 ;
72+ static constexpr int n_sector = 3 ; // Use size 3 to allow 1-based indexing (1 to 2)
73+ uint32_t LGADsPerDiscSideSector_[4 ][n_discSide][n_sector] = {{{{0 }}}};
7274
7375 // Counter for total LGADs per disk per eta bin: [disk][eta_bin]
7476 uint32_t LGADsPerDiskperEtaBin_[4 ][n_bin_Eta] = {{0 }};
@@ -198,10 +200,14 @@ void MTDDigiGeometryAnalyzer::CheckETLstructure(const MTDGeometry& geom) {
198200
199201 // Reset counters
200202 for (int d = 0 ; d < 4 ; ++d) {
201- totalLGADsPerDisk_[d] = 0 ;
202203 for (int eta = 0 ; eta < n_bin_Eta; ++eta) {
203204 LGADsPerDiskperEtaBin_[d][eta] = 0 ;
204205 }
206+ for (int k = 0 ; k < n_discSide; ++k) {
207+ for (int l = 0 ; l < n_sector; ++l) {
208+ LGADsPerDiscSideSector_[d][k][l] = 0 ;
209+ }
210+ }
205211 }
206212
207213 uint32_t totalETLdets = 0 ;
@@ -213,6 +219,9 @@ void MTDDigiGeometryAnalyzer::CheckETLstructure(const MTDGeometry& geom) {
213219 const GlobalPoint& global_point = thedet->position ();
214220 double eta = global_point.eta ();
215221
222+ int discSide = detId.discSide (); // 0 to 1
223+ int sector = detId.sector (); // 1 to 2
224+
216225 int idet = 999 ;
217226 if ((detId.zside () == -1 ) && (detId.nDisc () == 1 )) {
218227 idet = 0 ;
@@ -228,8 +237,9 @@ void MTDDigiGeometryAnalyzer::CheckETLstructure(const MTDGeometry& geom) {
228237 }
229238
230239 totalETLdets++;
231- // Count total LGADs per disk
232- totalLGADsPerDisk_[idet]++;
240+
241+ // Count LGADs per Disc, Side, Sector
242+ LGADsPerDiscSideSector_[idet][discSide][sector]++;
233243
234244 // Count LGADs per disk per eta bin
235245 const double * eta_edges = (idet < 2 ) ? eta_bins_edges_neg : eta_bins_edges_pos;
@@ -251,21 +261,36 @@ void MTDDigiGeometryAnalyzer::CheckETLstructure(const MTDGeometry& geom) {
251261 sunitt_ << " Total ETL Detectors (LGADs): " << totalETLdets << " \n " ;
252262 const char * diskNames[4 ] = {" Disc 1 (-Z)" , " Disc 2 (-Z)" , " Disc 1 (+Z)" , " Disc 2 (+Z)" };
253263
254- sunitt_ << " \n --- LGADs per Disk and Eta Bin ---\n " ;
264+ sunitt_ << " \n --- LGADs per Eta Bin and per Disk, DiscSide, Sector ---\n " ;
255265 for (int d = 0 ; d < 4 ; ++d) { // Physical Disk loop (0-3)
256266 std::string disk_name = diskNames[d];
257- uint32_t total_disk = totalLGADsPerDisk_[d];
258-
267+ uint32_t total_disk = 0 ;
268+ for (int k = 0 ; k < n_discSide; ++k) {
269+ for (int l = 1 ; l < n_sector; ++l) {
270+ total_disk += LGADsPerDiscSideSector_[d][k][l];
271+ }
272+ }
259273 sunitt_ << " Region: " << disk_name << " | Total LGADs: " << total_disk << " \n " ;
260-
261- // Print LGADs per Eta Bin
262- sunitt_ << " - LGADs per Eta Bin (Center Eta):\n " ;
274+ sunitt_ << " - LGADs per Eta Bin:\n " ;
263275 const double * eta_edges = (d < 2 ) ? eta_bins_edges_neg : eta_bins_edges_pos;
264-
265276 for (int j = 0 ; j < n_bin_Eta; ++j) {
266277 sunitt_ << " Eta [" << std::setprecision (1 ) << std::fixed << eta_edges[j] << " , " << eta_edges[j + 1 ]
267278 << " ): " << LGADsPerDiskperEtaBin_[d][j] << " \n " ;
268279 }
280+ for (int k = 0 ; k < n_discSide; ++k) {
281+ uint32_t total_discside = 0 ;
282+ for (int l = 1 ; l < n_sector; ++l) {
283+ total_discside += LGADsPerDiscSideSector_[d][k][l];
284+ }
285+ sunitt_ << " - Side: " << k << " | Total LGADs: " << total_discside << " \n " ;
286+ sunitt_ << " - Sectors: " ;
287+ for (int l = 1 ; l < n_sector; ++l) {
288+ if (LGADsPerDiscSideSector_[d][k][l] > 0 ) {
289+ sunitt_ << " Sec " << l << " : " << LGADsPerDiscSideSector_[d][k][l] << " | " ;
290+ }
291+ }
292+ sunitt_ << " \n " ;
293+ }
269294 }
270295
271296 edm::LogVerbatim (" MTDDigiGeometryAnalyzer" ) << sunitt_.str ();
0 commit comments