ATLAS Offline Software
CscPrdValAlg.cxx
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration
3 */
4 
5 //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~//
6 /* NAME : CscPrdValAlg.cxx
7  * PACKAGE : MuonRawDataMonitoring/CscRawDataMonitoring
8  * PURPOSE : CSC PrepRawData (PRD) monitoring
9  * AUTHOR : Ken Johns, Xiaowen Lei (U.Arizona)
10  *
11  * MODIFIED: N. Benekos(Illinois)
12  * V. Kaushik(U.Arizona) : 2009-05-12
13  * J. Veatch(U.Arizona) : 2012-02-08
14  */
15 //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~//
16 
17 // Athena include(s)
18 #include "CscPrdValAlg.h"
21 
22 // ROOT include(s)
23 #include "TClass.h"
24 #include "TH1F.h"
25 #include "TH2F.h"
26 
27 using namespace Muon;
28 
29 namespace CscPrdBins {
30  void PrdBinLabels(TH1 *h, int side) {
31  h->GetXaxis()->SetTitle("");
32  h->GetXaxis()->SetLabelSize(0.03);
33  if(side == -1) {
34  for(size_t j=6; j<86; j++) {
35  if( j%5 != 0 ) {
36  float xmid = h->GetBinLowEdge(j) + h->GetBinWidth(j);
37  xmid -= 1.0; xmid *= -1.0;
38  int seclay = int(ceil(xmid*10)); // get sector/layer
39  int sec = seclay/10;
40  int lay = (seclay%10)/2 ;
41  lay = (4 - lay) + 1;
42  h->GetXaxis()->SetBinLabel(j,Form("%c%02d:%d",(sec%2==0?'S':'L'),sec,lay));
43  } // end for
44  } // end if
45  } else if (side == 1) {
46  for(size_t j=6; j<86; j++) {
47  if( j%5 != 0 ) {
48  float xmid = h->GetBinLowEdge(j) + h->GetBinWidth(j);
49  int seclay = int(ceil(xmid*10)); // get sector/layer
50  int sec = seclay/10;
51  int lay = (seclay%10)/2 ;
52  h->GetXaxis()->SetBinLabel(j,Form("%c%02d:%d",(sec%2==0?'S':'L'),sec,lay));
53  }
54  } // end for
55  } // end else
56 
57  } // BinLabels
58 
59 } // end namespace CscBins
60 
61 
62 //
63 // constructor ----------------------------------------------------------------
64 //
65 CscPrdValAlg::CscPrdValAlg(const std::string & type, const std::string & name, const IInterface* parent) :
67  m_stripFitter(name),
68  m_cscprd_oviewEA(nullptr),
69  m_cscprd_oviewEC(nullptr)
70 {
71 
72  declareProperty("CSCStripFitter", m_stripFitter);
73  declareProperty("CSCPrepRawDataPath", m_cscPRDPath = "Muon/MuonRawDataMonitoring/CSC/PRD");
74  declareProperty("NoiseCutADC", m_cscNoiseCut = 50);
75  declareProperty("MapYXandRZ", m_mapxyrz = false);
76 
77  m_cscGenPath = m_cscPRDPath.substr(0,m_cscPRDPath.find("CSC"));
78 
80 
81 } // end CscPrdValAlg::CscPrdValAlg constructor
82 
83 
84 //
85 // destructor ----------------------------------------------------------------
86 //
88  if(m_cscprd_oviewEA) {
89  delete m_cscprd_oviewEA;
90  m_cscprd_oviewEA = nullptr;
91  }
92  if(m_cscprd_oviewEC) {
93  delete m_cscprd_oviewEC;
94  m_cscprd_oviewEC = nullptr;
95  }
96  ATH_MSG_DEBUG( "CscPrdValAlg: in destructor" );
97 }
98 
99 
100 //
101 // initialize ----------------------------------------------------------------
102 //
104  ATH_MSG_INFO( "CscPrdValAlg: in initialize" );
106  ATH_CHECK(m_idHelperSvc.retrieve());
107  ATH_CHECK(m_stripFitter.retrieve());
108  ATH_MSG_DEBUG( "CscPrdValAlg " << name() << ": retrieved " << m_stripFitter );
109  ATH_CHECK(m_cscPrdKey.initialize());
111  return StatusCode::SUCCESS;
112 } // end CscPrdValAlg::initialize()
113 
114 
115 //
116 // initHistograms ----------------------------------------------------------------
117 //
119 
120  m_h2csc_prd_hitmap = nullptr;
121  m_h2csc_prd_hitmap_signal = nullptr;
122  m_h2csc_prd_hitmap_noise = nullptr;
123 
124  m_h2csc_prd_hitmap_norm = nullptr;
127 
131 
133 
137 
139 
140  m_h2csc_prd_occvslb_EA = nullptr;
141  m_h2csc_prd_occvslb_EC = nullptr;
142 
144  m_h2csc_prd_r_vs_z_hitmap = nullptr;
145  m_h2csc_prd_y_vs_x_hitmap = nullptr;
146 
147  m_h2csc_prd_phicluswidth = nullptr;
150 
151  m_h2csc_prd_etacluswidth = nullptr;
154 
155  m_h2csc_prd_phicluscount = nullptr;
158 
159  m_h2csc_prd_etacluscount = nullptr;
162 
163 
164  m_h1csc_prd_maxdiffamp = nullptr;
165 
166  // Correlation plots
170 
174 
175 }
176 
177 //
178 // bookPrdHistograms ----------------------------------------------------------------
179 //
181 
182  m_regHShift.clear();
183  m_regHExpert.clear();
184  m_regHOviewEA.clear();
185  m_regHOviewEC.clear();
186 
188  int nxbins = 242; // 192 bins for precision, 48 for transverse strips + 2 extra
189  float nxmin = -49.; // -1 -> -48 (for transverse)
190  float nxmax = 193.; // 1 -> 192 (for precision)
191 
192  int nybins = 175; // 32 chambers (16 per side x 5 layers per chamber) + 1 set extra
193  float nymin = -17.; //
194  float nymax = 18.; //
195 
196  int nybinsEA = 90; // 16 chambers (x 5 layers per chamber) + 1 set extra
197  float nyminEA = 0.; //
198  float nymaxEA = 18.; //
199 
200  int nybinsEC = 85; // 16 chambers (x 5 layers per chamber) + 1 set extra
201  float nyminEC = -17.; //
202  float nymaxEC = 0.; //
203 
204  int nxbinsLB = 2510; // 2500 LB (x 16 chambers x 5 layers per chamber) + 10 extra
205  float nxminLB = -10.; //
206  float nxmaxLB = 2500.; //
208 
209  // book histograms
210 
211  // strip hitmap
212  m_h2csc_prd_hitmap = new TH2F("h2csc_prd_hitmap", "Hit Occupancy;channel;[sector] + [0.2 #times layer]",
213  nxbins,nxmin,nxmax,nybins,nymin,nymax);
214  m_h2csc_prd_hitmap_noise = new TH2F("h2csc_prd_hitmap_noise", "Noise Occupancy;channel;[sector] + [0.2 #times layer]",
215  nxbins,nxmin,nxmax,nybins,nymin,nymax);
216  m_h2csc_prd_hitmap_signal = new TH2F("h2csc_prd_hitmap_signal", "Signal Occupancy;channel;[sector] + [0.2 #times layer]",
217  nxbins,nxmin,nxmax,nybins,nymin,nymax);
218 
219  m_h2csc_prd_hitmap_norm = new TH2F("h2csc_prd_hitmap_norm", "Normalized Hit Occupancy;channel;[sector] + [0.2 #times layer]",
220  nxbins,nxmin,nxmax,nybins,nymin,nymax);
221  m_h2csc_prd_hitmap_norm_noise = new TH2F("h2csc_prd_hitmap_norm_noise", "Normalized Noise Occupancy;channel;[sector] + [0.2 #times layer]",
222  nxbins,nxmin,nxmax,nybins,nymin,nymax);
223  m_h2csc_prd_hitmap_norm_signal = new TH2F("h2csc_prd_hitmap_norm_signal", "Normalized Signal Occupancy;channel;[sector] + [0.2 #times layer]",
224  nxbins,nxmin,nxmax,nybins,nymin,nymax);
225 
226  m_h2csc_prd_hitmap_signal_EA = new TH2F("h2csc_prd_hitmap_signal_EA", "EndCap A: Signal Occupancy;channel;[sector] + [0.2 #times layer]",
227  nxbins,nxmin,nxmax,nybinsEA,nyminEA,nymaxEA);
228  m_h1csc_prd_hitmap_signal_EA_count = new TH1F("h1csc_prd_hitmap_signal_EA_count", "EndCap A: Signal Occupancy;channel;entries/channel;",
229  nxbins,nxmin,nxmax);
230  m_h1csc_prd_hitmap_signal_EA_occupancy = new TH1F("h1csc_prd_hitmap_signal_EA_occupancy", "EndCap A: Signal Occupancy;[sector] + [0.2 #times layer];entries/layer",
231  nybinsEA,nyminEA,nymaxEA);
233 
234  m_h2csc_prd_hitmap_norm_signal_EA = new TH2F("h2csc_prd_hitmap_norm_signal_EA", "EndCap A: Signal Occupancy;channel;[sector] + [0.2 #times layer]",
235  nxbins,nxmin,nxmax,nybinsEA,nyminEA,nymaxEA);
236 
237  m_h2csc_prd_hitmap_signal_EC = new TH2F("h2csc_prd_hitmap_signal_EC", "EndCap C: Signal Occupancy;channel;[sector] + [0.2 #times layer]",
238  nxbins,nxmin,nxmax,nybinsEC,nyminEC,nymaxEC);
239  m_h1csc_prd_hitmap_signal_EC_count = new TH1F("h1csc_prd_hitmap_signal_EC_count", "EndCap C: Signal Occupancy;channel;entries/channel;",
240  nxbins,nxmin,nxmax);
241  m_h1csc_prd_hitmap_signal_EC_occupancy = new TH1F("h1csc_prd_hitmap_signal_EC_occupancy", "EndCap C: Signal Occupancy;[sector] + [0.2 #times layer];entries/layer",
242  nybinsEC,nyminEC,nymaxEC);
244 
245  m_h2csc_prd_hitmap_norm_signal_EC = new TH2F("h2csc_prd_hitmap_norm_signal_EC", "EndCap C: Signal Occupancy;channel;[sector] + [0.2 #times layer]",
246  nxbins,nxmin,nxmax,nybinsEC,nyminEC,nymaxEC);
247 
248  m_h2csc_prd_occvslb_EA = new TH2F("h2csc_prd_occvslb_EA", "EndCap A: Layer Signal Occupancy Per LB;LB;[sector] + [0.2 #times layer]",
249  nxbinsLB,nxminLB,nxmaxLB,nybinsEA,nyminEA,nymaxEA);
250  m_h2csc_prd_occvslb_EC = new TH2F("h2csc_prd_occvslb_EC", "EndCap C: Layer Signal Occupancy Per LB;LB;[sector] + [0.2 #times layer]",
251  nxbinsLB,nxminLB,nxmaxLB,nybinsEC,nyminEC,nymaxEC);
252 
253  // PRD eta-cluster width
254  m_h2csc_prd_etacluswidth = new TH2F("h2csc_prd_etacluswidth",
255  "PRD precision-cluster width;no.of strips;[sector] + [0.2 #times layer]",
256  192,0,192,nybins,nymin,nymax);
257  m_h2csc_prd_etacluswidth_noise = new TH2F("h2csc_prd_etacluswidth_noise",
258  "PRD precision-cluster width;no.of strips;[sector] + [0.2 #times layer]",
259  192,0,192,nybins,nymin,nymax);
260  m_h2csc_prd_etacluswidth_signal = new TH2F("h2csc_prd_etacluswidth_signal",
261  "PRD precision-cluster width;no.of strips;[sector] + [0.2 #times layer]",
262  192,0,192,nybins,nymin,nymax);
263 
264  // PRD phi-cluster width
265  m_h2csc_prd_phicluswidth = new TH2F("h2csc_prd_phicluswidth",
266  "PRD precision-cluster width;no.of strips;[sector] + [0.2 #times layer]",
267  48,0,48,nybins,nymin,nymax);
268  m_h2csc_prd_phicluswidth_noise = new TH2F("h2csc_prd_phicluswidth_noise",
269  "PRD precision-cluster width;no.of strips;[sector] + [0.2 #times layer]",
270  48,0,48,nybins,nymin,nymax);
271  m_h2csc_prd_phicluswidth_signal = new TH2F("h2csc_prd_phicluswidth_signal",
272  "PRD precision-cluster width;no.of strips;[sector] + [0.2 #times layer]",
273  48,0,48,nybins,nymin,nymax);
274 
275  // PRD eta-cluster count
276  m_h2csc_prd_etacluscount = new TH2F("h2csc_prd_etacluscount",
277  "PRD precision-cluster count;no.of clusters;[sector] + [0.2 #times layer]",
278  20,0,20,nybins,nymin,nymax);
279  m_h2csc_prd_etacluscount_noise = new TH2F("h2csc_prd_etacluscount_noise",
280  "PRD precision-cluster count;no.of clusters;[sector] + [0.2 #times layer]",
281  20,0,20,nybins,nymin,nymax);
282  m_h2csc_prd_etacluscount_signal = new TH2F("h2csc_prd_etacluscount_signal",
283  "PRD precision-cluster count;no.of clusters;[sector] + [0.2 #times layer]",
284  20,0,20,nybins,nymin,nymax);
285 
286  // PRD phi-cluster count
287  m_h2csc_prd_phicluscount = new TH2F("h2csc_prd_phicluscount",
288  "PRD transverse-cluster count;no.of clusters;[sector] + [0.2 #times layer]",
289  20,0,20,nybins,nymin,nymax);
290  m_h2csc_prd_phicluscount_noise = new TH2F("h2csc_prd_phicluscount_noise",
291  "PRD transverse-cluster count;no.of clusters;[sector] + [0.2 #times layer]",
292  20,0,20,nybins,nymin,nymax);
293  m_h2csc_prd_phicluscount_signal = new TH2F("h2csc_prd_phicluscount_signal",
294  "PRD transverse-cluster count;no.of clusters;[sector] + [0.2 #times layer]",
295  20,0,20,nybins,nymin,nymax);
296 
297  // correlation histograms
298  m_h2csc_prd_eta_vs_phi_cluscount = new TH2F("h2csc_prd_eta_vs_phi_cluscount",
299  "Eta vs. Phi Cluster count correlation;#varphi-cluster count;#eta-cluster count",100,0,100,100,0,100);
300  m_h2csc_prd_eta_vs_phi_cluscount_noise = new TH2F("h2csc_prd_eta_vs_phi_cluscount_noise",
301  "Eta vs. Phi Noise-Cluster count correlation;#varphi-cluster count;#eta-cluster count",100,0,100,100,0,100);
302  m_h2csc_prd_eta_vs_phi_cluscount_signal = new TH2F("h2csc_prd_eta_vs_phi_cluscount_signal",
303  "Eta vs. Phi Signal-Cluster count correlation;#varphi-cluster count;#eta-cluster count",100,0,100,100,0,100);
304 
305  m_h2csc_prd_eta_vs_phi_cluswidth = new TH2F("h2csc_prd_eta_vs_phi_cluswidth",
306  "Eta vs. Phi Cluster width correlation;#varphi-cluster width;#eta-cluster width",100,0,100,100,0,100);
307 
308  if(m_mapxyrz) {
309  m_h2csc_prd_r_vs_z_hitmap = new TH2F("h2csc_prd_r_vs_z_hitmap",
310  "R vs. Z Cluster hitmap;z(mm);R(mm)",200, -10000., 10000., 40, 0., 4000);
311 
312  m_h2csc_prd_y_vs_x_hitmap = new TH2F("h2csc_prd_y_vs_x_hitmap",
313  "Y vs. X Cluster hitmap;x(mm);y(mm)",100, -5000., 5000., 100, -5000., 5000);
314  }
315 
316  //m_regHShift.push_back(m_h1csc_prd_maxdiffamp); // shift
317  m_regHExpert.push_back(m_h2csc_prd_hitmap); // expert
318  m_regHShift.push_back(m_h2csc_prd_hitmap_signal); // shift, overview (dq-flag)
319  m_regHExpert.push_back(m_h2csc_prd_hitmap_noise); // expert
320 
321  m_regHExpert.push_back(m_h2csc_prd_hitmap_norm); // expert
322  m_regHShift.push_back(m_h2csc_prd_hitmap_norm_signal); // shift, overview (dq-flag)
323  m_regHExpert.push_back(m_h2csc_prd_hitmap_norm_noise); // expert
324 
328 
330 
334 
336 
339 
340  m_regHExpert.push_back(m_h2csc_prd_etacluswidth); // expert
341  m_regHExpert.push_back(m_h2csc_prd_etacluswidth_signal); // expert
342  m_regHExpert.push_back(m_h2csc_prd_etacluswidth_noise); // expert
343 
344  m_regHExpert.push_back(m_h2csc_prd_phicluswidth); // expert
345  m_regHExpert.push_back(m_h2csc_prd_phicluswidth_signal); // expert
346  m_regHExpert.push_back(m_h2csc_prd_phicluswidth_noise); // expert
347 
348  m_regHExpert.push_back(m_h2csc_prd_etacluscount); // expert
349  m_regHShift.push_back(m_h2csc_prd_etacluscount_signal); // shift
350  m_regHExpert.push_back(m_h2csc_prd_etacluscount_noise); // expert
351 
352  m_regHExpert.push_back(m_h2csc_prd_phicluscount); // expert
353  m_regHShift.push_back(m_h2csc_prd_phicluscount_signal); // shift
354  m_regHExpert.push_back(m_h2csc_prd_phicluscount_noise); // expert
355 
356  m_regHExpert.push_back(m_h2csc_prd_eta_vs_phi_cluscount); // expert
359 
360  m_regHExpert.push_back(m_h2csc_prd_eta_vs_phi_cluswidth); // expert
361  if(m_mapxyrz) {
362  m_regHShift.push_back(m_h2csc_prd_r_vs_z_hitmap); // shift
363  m_regHShift.push_back(m_h2csc_prd_y_vs_x_hitmap); // shift
364  }
365 
366 }
367 
368 //
369 // bookHistograms ----------------------------------------------------------------
370 //
372  ATH_MSG_DEBUG( "CscPrdValAlg: in bookHistograms" );
373 
374  StatusCode sc = StatusCode::SUCCESS;
375 
377 
378  //declare a group of histograms
379  MonGroup cscprd_shift( this, m_cscPRDPath+"/Shift", run, ATTRIB_MANAGED );
380  MonGroup cscprd_expert( this, m_cscPRDPath+"/Expert", run, ATTRIB_MANAGED );
381 
382  // register shift histograms with service
383  for(size_t j = 0; j < m_regHShift.size(); j++) {
384  sc=cscprd_shift.regHist(m_regHShift[j]);
385  if(sc.isFailure()) {
386  ATH_MSG_ERROR ( "Failed to register shift histogram \"" << m_regHShift[j]->GetName() << "\"" );
387  return sc;
388  } // end if
389  } // end for shift
390 
391  // register expert histograms with service
392  for(size_t j = 0; j < m_regHExpert.size(); j++) {
393  sc=cscprd_expert.regHist(m_regHExpert[j]);
394  if(sc.isFailure()) {
395  ATH_MSG_ERROR ( "Failed to register expert histogram \"" << m_regHExpert[j]->GetName() << "\"" );
396  return sc;
397  } // end if
398  } // end for expert
399 
400  // register overview histograms for EA
402  m_cscprd_oviewEA = new MonGroup( this, m_cscGenPath+"CSC/Overview/CSCEA/PRD", run, ATTRIB_MANAGED );
403  iT = m_regHOviewEA.begin();
404  ATH_MSG_DEBUG ( "Found " << m_regHOviewEA.size() << " CSCEA Overview Histograms " );
405  for (; iT != m_regHOviewEA.end(); ++iT) {
406  ATH_MSG_DEBUG ( "Registering CSCEA Overview Histogram: " << (*iT)->GetName() );
407  sc = m_cscprd_oviewEA->regHist(*iT);
408  ATH_MSG_DEBUG ( "Successfully Registered CSCEA Overview Histogram: " << (*iT)->GetName() );
409  if ( sc.isFailure() ) {
410  ATH_MSG_ERROR ( "Cannot register overview histogram for Endcap A: " << (*iT)->GetName() );
411  return sc;
412  }
413  }
414 
415  // register overview histograms for EC
416  m_cscprd_oviewEC = new MonGroup( this, m_cscGenPath+"CSC/Overview/CSCEC/PRD", run, ATTRIB_MANAGED );
417  iT = m_regHOviewEC.begin();
418  ATH_MSG_DEBUG ( "Found " << m_regHOviewEC.size() << " CSCEC Overview Histograms " );
419  for (; iT != m_regHOviewEC.end(); ++iT) {
420  ATH_MSG_DEBUG ( "Registering CSCEC Overview Histogram: " << (*iT)->GetName() );
421  sc = m_cscprd_oviewEC->regHist(*iT);
422  ATH_MSG_DEBUG ( "Successfully Registered CSCEC Overview Histogram: " << (*iT)->GetName() );
423  if ( sc.isFailure() ) {
424  ATH_MSG_ERROR ( "Cannot register overview histogram for Endcap C: " << (*iT)->GetName() );
425  return sc;
426  }
427  }
428 
429 
430  //} // end if isNewRun
431 
432  return sc;
433 } // End CscPrdValAlg::bookHistograms
434 
435 //
436 // fillHistograms ----------------------------------------------------------------
437 //
439 
440  // Part 1: Get the messaging service, print where you are
441  ATH_MSG_DEBUG( "CscPrdValAlg: in fillHistograms" );
442 
444 
445  //Get lumiblock info
447  if( sc.isFailure() ){
448  ATH_MSG_ERROR( "Could Not Get LumiBlock Info" );
449  return sc;
450  }
451 
452  // ==============================================================================
453  // Field Range Notes
454  // ==============================================================================
455  // StationName unsigned integer maps to "CSS", "CSL", etc.
456  // StationEta [-1,1] -1 for backward, 1 for forward endcap
457  // StationPhi [1,8] increases with Phi
458  // Technology [1] maps to "CSC"
459  // ChamberLayer [1,2] increases with |Z|
460  // WireLayer [1,4] increases with |Z|
461  // MeasuresPhi [0,1] 0 if measures R, 1 if measures Phi
462  // Strip [1,n] increases with R for MeasuresPhi=0
463  // increases with Phi for MeasuresPhi=1
464  // ==============================================================================
465 
466 
467 
468  // Begin Event ==================================================
469  ATH_MSG_DEBUG ( " BEGIN EVENT ========================================== " );
470  ATH_MSG_DEBUG(" Size of PRD Container : " << CscPRD->size());
471 
472  for (CscStripPrepDataContainer::const_iterator it = CscPRD->begin(); it != CscPRD->end(); ++it) {
473  const CscStripPrepDataCollection *prd = *it;
474  ATH_MSG_DEBUG ( " Size of Collection : " << prd->size() );
475  size_t noStrips = prd->size(); // no. of strips in this cluster = m_stripIds.size()
476  size_t nEtaClusWidthCnt[5], nPhiClusWidthCnt[5]; // cluster position in each phi-layer
477  int clusCount[33][9], sigclusCount[33][9];
478  for(size_t kl = 0; kl < 33; kl++ ) {
479  for(size_t km = 0; km < 9; km++ ) {
480  if(kl == 0 && km < 5) {
481  nEtaClusWidthCnt[km] = 0;
482  nPhiClusWidthCnt[km] = 0;
483  }
484  clusCount[kl][km] = 0;
485  sigclusCount[kl][km] = 0;
486  } // end loop over km
487  } // end loop over kl
488 
489  // loop over PRD-clusters
490  // Loop over strip id's vector -- this is just one strip even though its a vector of ID's
491  ATH_MSG_DEBUG ( " BEGIN Loop over Strips ========================================== " );
492  for (CscStripPrepDataCollection::const_iterator ic = (*it)->begin(); ic != (*it)->end(); ++ic) { // for-loop over PRD collection
493  const CscStripPrepData& praw = **ic;
494 
495  // Identify the PRD cluster
496  Identifier prawId = praw.identify();
497  int stationName = m_idHelperSvc->cscIdHelper().stationName(prawId);
498  std::string stationString = m_idHelperSvc->cscIdHelper().stationNameString(stationName);
499  int chamberType = stationString == "CSS" ? 0 : 1;
500  int stationEta = m_idHelperSvc->cscIdHelper().stationEta(prawId);
501  int stationPhi = m_idHelperSvc->cscIdHelper().stationPhi(prawId);
502  int wireLayer = m_idHelperSvc->cscIdHelper().wireLayer(prawId);
503  int measuresPhi = m_idHelperSvc->cscIdHelper().measuresPhi(prawId);
504  int stripId = m_idHelperSvc->cscIdHelper().strip(prawId);
505 
506  int sectorNo = stationEta * (2 * stationPhi - chamberType);
507 
508  // compute the indices to store cluster count
509  int ns = sectorNo < 0 ? sectorNo*(-1) : sectorNo+16; // [-16 -> -1] shifted to [1 -> 16] and [+1 -> +16] shifted to [+17 -> +32]
510  int nl = (measuresPhi ? wireLayer : wireLayer+4); // [ 1 -> 4] (phi-layers) and [5 -> 8] (eta-layers)
511 
512  clusCount[ns][nl]++;
513 
514  // indices for ns = [+1 -> +32]; 32 places (index '0' is not counted); allocated 33 places
515  // indices for nl = [+1 -> +8]; 8 places (index '0' is not counted); allocated 9 places
516  ATH_MSG_DEBUG(" ns = " << ns << "\tm_nl = " << nl << "\tm_sec = " << sectorNo << "\t m_lay= "
517  << wireLayer << "\t strip = " << stripId << "\tmPhi = " << measuresPhi);
518 
519 
520  // y-axis fill value
521  // sector# +2 layer 1 maps to +2 + 0.2*(1-1) + 0.1 = +2.1
522  // sector# +2 layer 2 maps to +2 + 0.2*(2-1) + 0.1 = +2.3
523  // sector# +2 layer 3 maps to +2 + 0.2*(3-1) + 0.1 = +2.5
524  // sector# +2 layer 4 maps to +2 + 0.2*(4-1) + 0.1 = +2.7
525  float secLayer = sectorNo + 0.2 * (wireLayer - 1) + 0.1;
526  int xfac = measuresPhi ? -1 : 1; // [-1 -> -48] / [+1 -> +192]
527 
528  // x-axis fill value
529  float spid = stripId * xfac;
530  m_h2csc_prd_hitmap->Fill(spid, secLayer);
531  measuresPhi ? m_h2csc_prd_phicluswidth->Fill(noStrips,secLayer) : m_h2csc_prd_etacluswidth->Fill(noStrips,secLayer);
532 
533  if(m_mapxyrz) {
534  float x = praw.globalPosition().x();
535  float y = praw.globalPosition().y();
536  float z = praw.globalPosition().z();
537  float r = sqrt(x*x + y*y);
538  ATH_MSG_DEBUG(" prd x = " << x << "\t y = " << y << "\t z = " << z );
541  } // end if(m_mapxyrz)
542 
543  // Fit this strip and get Charge (in units of: # of electrons)
545  res = m_stripFitter->fit(praw);
546 
547  ATH_MSG_DEBUG ( "Strip q +- dq = " << res.charge << " +- " << res.dcharge << "\t t +- dt = "
548  << res.time << " +- " << res.dtime << "\t w +- dw = " << res.width << " +- "
549  << res.dwidth << "\t status= " << res.status << "\t chisq= " << res.chsq);
550 
551 
552  // determine of the cluster is a noise/signal cluster Max_Delta_ADC > NoiseCut
553  float kiloele = 1.0e-3; // multiply # of electrons by this number to get kiloElectrons (1 ke = 1 ADC)
554  float qstripADC = res.charge * kiloele;
555 
556  // By default res.status = -1
557  // if strip fit is success res.status = 0
558  // If fit fails use the peak sample. In this case res.status = 1
559 
560  bool signal = ((qstripADC > m_cscNoiseCut) && (res.status >= 0)) ? true : false;
561 
562  // increment the signal-cluster count
563  if(signal) {
564  sigclusCount[ns][nl]++;
565  measuresPhi ? nPhiClusWidthCnt[wireLayer]++ : nEtaClusWidthCnt[wireLayer]++ ;
566  m_h2csc_prd_hitmap_signal->Fill(spid,secLayer);
567  if(stationEta == -1) {
568  m_h2csc_prd_hitmap_signal_EC->Fill(spid,secLayer);
571  m_h2csc_prd_occvslb_EC->Fill(m_lumiblock,secLayer);
572  } // end if(stationEta == -1)
573  else {
574  m_h2csc_prd_hitmap_signal_EA->Fill(spid,secLayer);
577  m_h2csc_prd_occvslb_EA->Fill(m_lumiblock,secLayer);
578  } // end else if(stationEta == -1)
579  if(!measuresPhi) {
580  m_h2csc_prd_etacluswidth_signal->Fill(noStrips,secLayer);
581  } // end if(!measuresPhi)
582  else {
583  m_h2csc_prd_phicluswidth_signal->Fill(noStrips,secLayer);
584  } // end else if(!measuresPhi)
585  } // end if(signal)
586  else {
587  m_h2csc_prd_hitmap_noise->Fill(spid,secLayer);
588  if(!measuresPhi) {
589  m_h2csc_prd_etacluswidth_noise->Fill(noStrips,secLayer);
590  } // end if(!measuresPhi)
591  else {
592  m_h2csc_prd_phicluswidth_noise->Fill(noStrips,secLayer);
593  } // end else if(!measuresPhi)
594  } // end else if(signal)
595 
596 
597  } // end for-loop over PRD collection
598  ATH_MSG_DEBUG ( " End loop over PRD collection======================" );
599 
600  for(size_t lcnt = 1; lcnt < 5; lcnt++ ) {
601  m_h2csc_prd_eta_vs_phi_cluswidth->Fill(nPhiClusWidthCnt[lcnt],nEtaClusWidthCnt[lcnt]);
602  } // end loop over lcnt
603 
604  int numeta = 0, numphi = 0;
605  int numetasignal = 0, numphisignal = 0;
606  for(int kl = 1; kl < 33; kl++ ) {
607 
608  for(int km = 1; km < 9; km++ ) {
609  int lay = (km > 4 && km < 9) ? km-4 : km; // 1,2,3,4 (phi-layers) 5-4, 6-4, 7-4, 8-4 (eta-layers)
610  bool mphi = (km > 0 && km < 5) ? true : false; // 1,2,3,4 (phi-layers) 5,6,7,8 (eta-layers)
611  std::string wlay = mphi ? "Phi-Layer " : "Eta-Layer: ";
612 
613  int count = clusCount[kl][km];
614  int scount = sigclusCount[kl][km];
615 
616 
617  if(count) {
618  float secLayer = kl-16 + 0.2 * (lay - 1) + 0.1;
619  if(mphi) {
620  m_h2csc_prd_phicluscount->Fill(count,secLayer); // all phi-cluster counts
621  numphi += count;
622  if(scount) {
623  numphisignal += scount;
624  m_h2csc_prd_phicluscount_signal->Fill(scount,secLayer); // signal phi-cluster count
625  m_h2csc_prd_phicluscount_noise->Fill((count-scount),secLayer); // noise phi-cluster count
626  } // end if(scount)
627  else {
628  m_h2csc_prd_phicluscount_noise->Fill(count,secLayer); // noise phi-cluster count
629  } // end else if(scount)
630  } // end if(mphi)
631  else {
632  m_h2csc_prd_etacluscount->Fill(count,secLayer);
633  numeta += count;
634  if(scount) {
635  numetasignal += scount;
636  m_h2csc_prd_etacluscount_signal->Fill(scount,secLayer); // signal eta-cluster count
637  m_h2csc_prd_etacluscount_noise->Fill((count-scount),secLayer); // noise eta-cluster count
638  } // end if(scount)
639  else {
640  m_h2csc_prd_etacluscount_noise->Fill(count,secLayer); // noise eta-cluster count
641  } // end else if(scount)
642  } // end else if(mphi)
643  ATH_MSG_DEBUG ( wlay << "Counts sec: [" << kl-16 << "]\tlayer: [" << km << "] = " <<
644  secLayer << "\t = " << count << "\t" << scount);
645  } // end if(count)
646  } // end for km
647  } // end for kl
648 
649  m_h2csc_prd_eta_vs_phi_cluscount->Fill(numphi,numeta);
650  m_h2csc_prd_eta_vs_phi_cluscount_signal->Fill(numphisignal,numetasignal);
651  m_h2csc_prd_eta_vs_phi_cluscount_noise->Fill(numphi-numphisignal, numeta-numetasignal);
652 
653  } // end for-loop over container
654  ATH_MSG_DEBUG ( " End EVENT======================" );
655 
656  ATH_MSG_DEBUG( "CscPrdValAlg: fillHistograms reports success" );
657 
658  return sc;
659 } // end CscPrdValAlg::fillHistograms()
660 
661  //
662  // checkHists ----------------------------------------------------------------
663  //
664  StatusCode CscPrdValAlg::checkHists(bool /* fromFinalize */) {
665 
666  ATH_MSG_DEBUG( "CscPrdValAlg: in checkHists" );
667 
668  return StatusCode::SUCCESS;
669  }
670 
671  //
672  // fillLumiBlock ----------------------------------------------------------------
673  //
675 
676  m_lumiblock = -1;
677 
679 
680  m_lumiblock = evt->lumiBlock();
681 
682  return StatusCode::SUCCESS;
683 
684  }
calibdata.scount
int scount
Definition: calibdata.py:355
xAOD::iterator
JetConstituentVector::iterator iterator
Definition: JetConstituentVector.cxx:68
CscPrdValAlg::m_stripFitter
ToolHandle< ICscStripFitter > m_stripFitter
Definition: CscPrdValAlg.h:51
CscPrdValAlg::m_h2csc_prd_hitmap_signal_EA
TH2F * m_h2csc_prd_hitmap_signal_EA
Definition: CscPrdValAlg.h:68
CscPrdValAlg::m_cscPRDPath
std::string m_cscPRDPath
Definition: CscPrdValAlg.h:47
beamspotman.r
def r
Definition: beamspotman.py:676
CscPrdValAlg::fillLumiBlock
StatusCode fillLumiBlock()
Definition: CscPrdValAlg.cxx:674
CscPrdValAlg::m_cscPrdKey
SG::ReadHandleKey< Muon::CscStripPrepDataContainer > m_cscPrdKey
Definition: CscPrdValAlg.h:45
Muon::nsw::STGTPSegments::moduleIDBits::stationPhi
constexpr uint8_t stationPhi
station Phi 1 to 8
Definition: NSWSTGTPDecodeBitmaps.h:129
DataModel_detail::const_iterator
Const iterator class for DataVector/DataList.
Definition: DVLIterator.h:82
CscPrdValAlg::m_h2csc_prd_hitmap_signal
TH2F * m_h2csc_prd_hitmap_signal
Definition: CscPrdValAlg.h:61
CscPrdValAlg::m_h2csc_prd_phicluscount
TH2F * m_h2csc_prd_phicluscount
Definition: CscPrdValAlg.h:95
CscPrdValAlg::m_h1csc_prd_maxdiffamp
TH1F * m_h1csc_prd_maxdiffamp
Definition: CscPrdValAlg.h:104
CscPrdValAlg::initHistograms
void initHistograms()
Definition: CscPrdValAlg.cxx:118
CscPrdValAlg::m_h2csc_prd_etacluswidth
TH2F * m_h2csc_prd_etacluswidth
Definition: CscPrdValAlg.h:91
ATH_MSG_INFO
#define ATH_MSG_INFO(x)
Definition: AthMsgStreamMacros.h:31
CaloCellPos2Ntuple.int
int
Definition: CaloCellPos2Ntuple.py:24
CscPrdValAlg::m_regHShift
std::vector< TH1 * > m_regHShift
Definition: CscPrdValAlg.h:118
CscPrdValAlg::m_h2csc_prd_etacluscount_noise
TH2F * m_h2csc_prd_etacluscount_noise
Definition: CscPrdValAlg.h:101
ManagedMonitorToolBase
Provides functionality for users to implement and save histograms, ntuples, and summary data,...
Definition: ManagedMonitorToolBase.h:74
dumpTgcDigiDeadChambers.stationName
dictionary stationName
Definition: dumpTgcDigiDeadChambers.py:30
CscPrdValAlg::m_h2csc_prd_eta_vs_phi_hitmap
TH2F * m_h2csc_prd_eta_vs_phi_hitmap
Definition: CscPrdValAlg.h:83
SG::ReadHandle
Definition: StoreGate/StoreGate/ReadHandle.h:70
AthCommonDataStore< AthCommonMsg< AlgTool > >::declareProperty
Gaudi::Details::PropertyBase & declareProperty(Gaudi::Property< T > &t)
Definition: AthCommonDataStore.h:145
CscPrdValAlg::m_h2csc_prd_hitmap_norm_signal_EA
TH2F * m_h2csc_prd_hitmap_norm_signal_EA
Definition: CscPrdValAlg.h:72
CscPrdValAlg::m_h2csc_prd_phicluscount_signal
TH2F * m_h2csc_prd_phicluscount_signal
Definition: CscPrdValAlg.h:96
skel.it
it
Definition: skel.GENtoEVGEN.py:423
IdentifiableContainerMT::size
size_t size() const
Duplicate of fullSize for backwards compatability.
Definition: IdentifiableContainerMT.h:209
CscStripPrepDataCollection.h
CscStripPrepData.h
CscPrdValAlg::m_h1csc_prd_hitmap_signal_EA_occupancy
TH1F * m_h1csc_prd_hitmap_signal_EA_occupancy
Definition: CscPrdValAlg.h:70
CscPrdValAlg::m_mapxyrz
bool m_mapxyrz
Definition: CscPrdValAlg.h:48
CscPrdValAlg::m_h2csc_prd_hitmap_noise
TH2F * m_h2csc_prd_hitmap_noise
Definition: CscPrdValAlg.h:62
LArG4FSStartPointFilter.evt
evt
Definition: LArG4FSStartPointFilter.py:42
CscPrdValAlg::m_h2csc_prd_eta_vs_phi_cluscount_noise
TH2F * m_h2csc_prd_eta_vs_phi_cluscount_noise
Definition: CscPrdValAlg.h:112
CscPrdValAlg::initialize
StatusCode initialize()
Definition: CscPrdValAlg.cxx:103
Muon
This class provides conversion from CSC RDO data to CSC Digits.
Definition: TrackSystemController.h:49
python.TrigEgammaMonitorHelper.TH2F
def TH2F(name, title, nxbins, bins_par2, bins_par3, bins_par4, bins_par5=None, bins_par6=None, path='', **kwargs)
Definition: TrigEgammaMonitorHelper.py:45
x
#define x
CscPrdValAlg::bookPrdHistograms
void bookPrdHistograms()
Definition: CscPrdValAlg.cxx:180
CscPrdValAlg::m_h2csc_prd_y_vs_x_hitmap
TH2F * m_h2csc_prd_y_vs_x_hitmap
Definition: CscPrdValAlg.h:85
XMLtoHeader.count
count
Definition: XMLtoHeader.py:85
CscPrdValAlg::m_h1csc_prd_hitmap_signal_EC_occupancy
TH1F * m_h1csc_prd_hitmap_signal_EC_occupancy
Definition: CscPrdValAlg.h:76
AthenaPoolTestRead.sc
sc
Definition: AthenaPoolTestRead.py:27
CscPrdValAlg::m_h1csc_prd_hitmap_signal_EC_count
TH1F * m_h1csc_prd_hitmap_signal_EC_count
Definition: CscPrdValAlg.h:75
TRT::Hit::side
@ side
Definition: HitInfo.h:83
CscPrdValAlg::m_h2csc_prd_etacluswidth_signal
TH2F * m_h2csc_prd_etacluswidth_signal
Definition: CscPrdValAlg.h:92
CscPrdValAlg::bookHistograms
StatusCode bookHistograms()
An inheriting class should either override this function or bookHists().
Definition: CscPrdValAlg.cxx:371
Muon::CscStripPrepData
Class representing the raw data of one CSC strip (for clusters look at Muon::CscPrepData).
Definition: CscStripPrepData.h:40
ManagedMonitorToolBase::MonGroup
A container of information describing a monitoring object.
Definition: ManagedMonitorToolBase.h:138
CscPrdValAlg::m_h2csc_prd_etacluscount_signal
TH2F * m_h2csc_prd_etacluscount_signal
Definition: CscPrdValAlg.h:100
CscPrdValAlg::m_h2csc_prd_eta_vs_phi_cluswidth_signal
TH2F * m_h2csc_prd_eta_vs_phi_cluswidth_signal
Definition: CscPrdValAlg.h:115
keylayer_zslicemap.kl
kl
Definition: keylayer_zslicemap.py:109
ATH_MSG_ERROR
#define ATH_MSG_ERROR(x)
Definition: AthMsgStreamMacros.h:33
ManagedMonitorToolBase::initialize
virtual StatusCode initialize()
Definition: ManagedMonitorToolBase.cxx:669
CscPrdValAlg::m_h2csc_prd_eta_vs_phi_cluswidth
TH2F * m_h2csc_prd_eta_vs_phi_cluswidth
Definition: CscPrdValAlg.h:114
z
#define z
CscPrdValAlg::m_regHOviewEC
std::vector< TH1 * > m_regHOviewEC
Definition: CscPrdValAlg.h:121
h
EL::StatusCode
::StatusCode StatusCode
StatusCode definition for legacy code.
Definition: PhysicsAnalysis/D3PDTools/EventLoop/EventLoop/StatusCode.h:22
ATH_MSG_DEBUG
#define ATH_MSG_DEBUG(x)
Definition: AthMsgStreamMacros.h:29
res
std::pair< std::vector< unsigned int >, bool > res
Definition: JetGroupProductTest.cxx:14
test_pyathena.parent
parent
Definition: test_pyathena.py:15
CscPrdValAlg::~CscPrdValAlg
~CscPrdValAlg()
Definition: CscPrdValAlg.cxx:87
ATH_CHECK
#define ATH_CHECK
Definition: AthCheckMacros.h:40
IdentifiableContainerMT::end
const_iterator end() const
return const_iterator for end of container
Definition: IdentifiableContainerMT.h:242
CscPrdValAlg::m_h2csc_prd_etacluswidth_noise
TH2F * m_h2csc_prd_etacluswidth_noise
Definition: CscPrdValAlg.h:93
run
Definition: run.py:1
ManagedMonitorToolBase::ATTRIB_MANAGED
@ ATTRIB_MANAGED
Definition: ManagedMonitorToolBase.h:131
IdentifiableContainerMT::const_iterator
Definition: IdentifiableContainerMT.h:82
IdentifiableContainerMT::begin
const_iterator begin() const
return const_iterator for first entry
Definition: IdentifiableContainerMT.h:236
ICscStripFitter::Result
Definition: ICscStripFitter.h:25
SG::VarHandleKey::initialize
StatusCode initialize(bool used=true)
If this object is used as a property, then this should be called during the initialize phase.
Definition: AthToolSupport/AsgDataHandles/Root/VarHandleKey.cxx:103
CscPrdValAlg::m_h2csc_prd_r_vs_z_hitmap
TH2F * m_h2csc_prd_r_vs_z_hitmap
Definition: CscPrdValAlg.h:84
Muon::MuonPrepDataCollection
Template to hold collections of MuonPrepRawData objects.
Definition: MuonPrepDataCollection.h:46
CscPrdValAlg::checkHists
StatusCode checkHists(bool fromFinalise)
This implementation does nothing; equivalent functionality may be provided by procHists(....
Definition: CscPrdValAlg.cxx:664
CscPrdValAlg::m_h2csc_prd_phicluscount_noise
TH2F * m_h2csc_prd_phicluscount_noise
Definition: CscPrdValAlg.h:97
CscPrdValAlg::m_h2csc_prd_hitmap_norm_signal_EC
TH2F * m_h2csc_prd_hitmap_norm_signal_EC
Definition: CscPrdValAlg.h:78
ManagedMonitorToolBase::MonGroup::regHist
StatusCode regHist(TH1 *h)
Registers a TH1 (including TH2, TH3, and TProfile) to be included in the output stream using logical ...
Definition: ManagedMonitorToolBase.cxx:195
CscPrdValAlg::m_idHelperSvc
ServiceHandle< Muon::IMuonIdHelperSvc > m_idHelperSvc
Definition: CscPrdValAlg.h:53
grepfile.ic
int ic
Definition: grepfile.py:33
CscPrdValAlg::m_h1csc_prd_hitmap_signal_EA_count
TH1F * m_h1csc_prd_hitmap_signal_EA_count
Definition: CscPrdValAlg.h:69
Trk::PrepRawData::identify
Identifier identify() const
return the identifier
CscPrdValAlg::m_h2csc_prd_hitmap
TH2F * m_h2csc_prd_hitmap
Definition: CscPrdValAlg.h:60
Cut::signal
@ signal
Definition: SUSYToolsAlg.cxx:64
CscPrdValAlg::m_eventInfo
SG::ReadHandleKey< xAOD::EventInfo > m_eventInfo
Definition: CscPrdValAlg.h:46
name
std::string name
Definition: Control/AthContainers/Root/debug.cxx:195
CscPrdValAlg::m_regHOviewEA
std::vector< TH1 * > m_regHOviewEA
Definition: CscPrdValAlg.h:120
CscPrdValAlg::m_h2csc_prd_phicluswidth
TH2F * m_h2csc_prd_phicluswidth
Definition: CscPrdValAlg.h:87
CscPrdValAlg::fillHistograms
StatusCode fillHistograms()
An inheriting class should either override this function or fillHists().
Definition: CscPrdValAlg.cxx:438
CscPrdValAlg::m_h2csc_prd_eta_vs_phi_cluswidth_noise
TH2F * m_h2csc_prd_eta_vs_phi_cluswidth_noise
Definition: CscPrdValAlg.h:116
CscPrdBins::PrdBinLabels
void PrdBinLabels(TH1 *h, int side)
Definition: CscPrdValAlg.cxx:30
CscPrdValAlg::m_regHExpert
std::vector< TH1 * > m_regHExpert
Definition: CscPrdValAlg.h:119
Muon::CscStripPrepData::globalPosition
const Amg::Vector3D & globalPosition() const
return global position reference
Definition: CscStripPrepData.h:141
CscPrdValAlg::m_h2csc_prd_hitmap_signal_EC
TH2F * m_h2csc_prd_hitmap_signal_EC
Definition: CscPrdValAlg.h:74
CscPrdValAlg::m_h2csc_prd_hitmap_norm
TH2F * m_h2csc_prd_hitmap_norm
Definition: CscPrdValAlg.h:64
CscPrdValAlg::m_lumiblock
int m_lumiblock
Definition: CscPrdValAlg.h:56
CscPrdValAlg::m_cscprd_oviewEA
MonGroup * m_cscprd_oviewEA
Definition: CscPrdValAlg.h:107
CscPrdValAlg::m_cscGenPath
std::string m_cscGenPath
Definition: CscPrdValAlg.h:47
y
#define y
CscPrdValAlg::m_h2csc_prd_phicluswidth_signal
TH2F * m_h2csc_prd_phicluswidth_signal
Definition: CscPrdValAlg.h:88
CscPrdValAlg::m_h2csc_prd_occvslb_EC
TH2F * m_h2csc_prd_occvslb_EC
Definition: CscPrdValAlg.h:81
python.CaloScaleNoiseConfig.type
type
Definition: CaloScaleNoiseConfig.py:78
CscPrdValAlg::m_cscNoiseCut
size_t m_cscNoiseCut
Definition: CscPrdValAlg.h:44
CscPrdValAlg::m_h2csc_prd_eta_vs_phi_cluscount
TH2F * m_h2csc_prd_eta_vs_phi_cluscount
Definition: CscPrdValAlg.h:110
python.SystemOfUnits.ns
int ns
Definition: SystemOfUnits.py:130
CscPrdValAlg::m_h2csc_prd_etacluscount
TH2F * m_h2csc_prd_etacluscount
Definition: CscPrdValAlg.h:99
CscPrdValAlg::m_h2csc_prd_occvslb_EA
TH2F * m_h2csc_prd_occvslb_EA
Definition: CscPrdValAlg.h:80
CscPrdValAlg::m_h2csc_prd_hitmap_norm_signal
TH2F * m_h2csc_prd_hitmap_norm_signal
Definition: CscPrdValAlg.h:65
python.TrigEgammaMonitorHelper.TH1F
def TH1F(name, title, nxbins, bins_par2, bins_par3=None, path='', **kwargs)
Definition: TrigEgammaMonitorHelper.py:24
CscPrdValAlg::CscPrdValAlg
CscPrdValAlg(const std::string &type, const std::string &name, const IInterface *parent)
Definition: CscPrdValAlg.cxx:65
CscPrdBins
Definition: CscPrdValAlg.cxx:29
Muon::nsw::STGTPSegments::moduleIDBits::stationEta
constexpr uint8_t stationEta
1 to 3
Definition: NSWSTGTPDecodeBitmaps.h:127
CscPrdValAlg::m_h2csc_prd_eta_vs_phi_cluscount_signal
TH2F * m_h2csc_prd_eta_vs_phi_cluscount_signal
Definition: CscPrdValAlg.h:111
DataVector::size
size_type size() const noexcept
Returns the number of elements in the collection.
python.SystemOfUnits.km
int km
Definition: SystemOfUnits.py:95
CscPrdValAlg::m_h2csc_prd_hitmap_norm_noise
TH2F * m_h2csc_prd_hitmap_norm_noise
Definition: CscPrdValAlg.h:66
CscPrdValAlg::m_cscprd_oviewEC
MonGroup * m_cscprd_oviewEC
Definition: CscPrdValAlg.h:107
CscPrdValAlg::m_h2csc_prd_phicluswidth_noise
TH2F * m_h2csc_prd_phicluswidth_noise
Definition: CscPrdValAlg.h:89
CscPrdValAlg.h