ATLAS Offline Software
CscClusterValAlg.cxx
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration
3 */
4 
5 //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~//
6 /* NAME : CscClusterValAlg.cxx
7  * PACKAGE : MuonRawDataMonitoring/CscRawDataMonitoring
8  * PURPOSE : CSC cluster monitoring
9  * AUTHOR : Venkatesh Kaushik <venkat.kaushik@cern.ch> (2009-04-27)
10  *
11  * MODIFIED:
12  */
13 //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~//
14 
15 // Athena include(s)
18 #include "CscClusterValAlg.h"
19 
20 // ROOT include(s)
21 #include "TH1F.h"
22 #include "TH2F.h"
23 #include "TClass.h"
24 
25 // STL include(s)
26 #include <bitset>
27 #include <cmath>
28 
29 using namespace Muon;
30 
31 namespace CscBins {
32  void BinLabels(TH1 *h, int side) {
33  h->GetXaxis()->SetTitle("");
34  h->GetXaxis()->SetLabelSize(0.03);
35  if(side == -1) {
36  for(unsigned int j=6; j<86; j++) {
37  if( j%5 != 0 ) {
38  float xmid = h->GetBinLowEdge(j) + h->GetBinWidth(j);
39  xmid -= 1.0; xmid *= -1.0;
40  int seclay = int(ceil(xmid*10)); // get sector/layer
41  int sec = seclay/10;
42  int lay = (seclay%10)/2 ;
43  lay = (4 - lay) + 1;
44  h->GetXaxis()->SetBinLabel(j,Form("%c%02d:%d",(sec%2==0?'S':'L'),sec,lay));
45  } // end for
46  } // end if
47  } else if (side == 1) {
48  for(unsigned int j=6; j<86; j++) {
49  if( j%5 != 0 ) {
50  float xmid = h->GetBinLowEdge(j) + h->GetBinWidth(j);
51  int seclay = int(ceil(xmid*10)); // get sector/layer
52  int sec = seclay/10;
53  int lay = (seclay%10)/2 ;
54  h->GetXaxis()->SetBinLabel(j,Form("%c%02d:%d",(sec%2==0?'S':'L'),sec,lay));
55  }
56  } // end for
57  } // end else
58 
59  } // BinLabels
60 
61 } // end namespace CscBins
62 
63 //
64 // constructor ----------------------------------------------------------------
65 //
66 CscClusterValAlg::CscClusterValAlg(const std::string & type, const std::string & name, const IInterface* parent) :
68  m_stripFitter(name, this),
69  m_cscCalibTool(name, this),
70  m_trigDec( "Trig::TrigDecisionTool/TrigDecisionTool" ),
71  m_cscclus_oviewEA(nullptr),
72  m_cscclus_oviewEC(nullptr)
73 {
74 
75  declareProperty("CSCClusterPath", m_cscClusterPath = "Muon/MuonRawDataMonitoring/CSC/Clusters");
76  declareProperty("CSCQmaxCutADC", m_qmaxADCCut = 100);
77  declareProperty("CSCStripFitter", m_stripFitter);
78  declareProperty("CSCCalibTool", m_cscCalibTool);
79 
80  //trigger aware monitoring
81  declareProperty("CSCTrigDecisionTool", m_trigDec );
82  declareProperty("CSCDoEventSelection", m_doEvtSel = false );
83  declareProperty("CSCEventSelTriggers", m_sampSelTriggers );
84 
85  m_cscGenPath = m_cscClusterPath.substr(0,m_cscClusterPath.find("CSC"));
86 
88 
89 }
90 
91 //
92 // destructor ----------------------------------------------------------------
93 //
95  if(m_cscclus_oviewEA) {
96  delete m_cscclus_oviewEA;
97  m_cscclus_oviewEA = nullptr;
98  }
99  if(m_cscclus_oviewEC) {
100  delete m_cscclus_oviewEC;
101  m_cscclus_oviewEC = nullptr;
102  }
103  ATH_MSG_DEBUG( "CscClusterValAlg: in destructor" );
104 }
105 
106 
107 //
108 // initialize ----------------------------------------------------------------
109 //
111 
112  ATH_MSG_INFO ( "Initializing : " << name() );
113  ATH_MSG_INFO ( "CSCClusterKey : " << m_cscClusterKey );
114  ATH_MSG_INFO ( "CSCPrepRawDataKey : " << m_cscPRDKey );
115 
117 
118  ATH_CHECK(m_idHelperSvc.retrieve());
119  ATH_MSG_DEBUG ("CSCIdHelper : " << "Using CscIdhelper " );
120 
121  ATH_CHECK(m_stripFitter.retrieve());
122  ATH_MSG_INFO ( "CSCStripFitter : " << "Using Fitter with name \"" << m_stripFitter->name() << "\"" );
123 
124  if( m_doEvtSel ) {
125  if ( m_trigDec.retrieve().isFailure() ) {
126  ATH_MSG_WARNING ( "CscClusterValAlg: Unable to retrieve trigger decision tool");
127  m_doEvtSel = false;
128  } else {
129  ATH_MSG_INFO ( "TrigDecisionTool : " << "Using TDT \"" << m_trigDec->name() << "\"" );
130  }
131  } else {
132  m_trigDec.disable();
133  }
134  ATH_CHECK(m_cscCalibTool.retrieve());
135  ATH_MSG_INFO ( "CSCCalibTool : " << "Using calib tool with name \"" << m_cscCalibTool->name() << "\"" );
136 
137  if(m_sampSelTriggers.empty() && m_doEvtSel) {
138  ATH_MSG_WARNING("Event selection triggers not specified. Switching off trigger-aware monitoring");
139  m_doEvtSel = false;
140  }
141  ATH_CHECK(m_cscClusterKey.initialize(m_idHelperSvc->hasCSC()));
142  ATH_CHECK(m_cscPRDKey.initialize(m_idHelperSvc->hasCSC()));
143  return StatusCode::SUCCESS;
144 }
145 
146 
147 //
148 // initHistograms ----------------------------------------------------------------
149 //
151 
152  // hitmaps
153  m_h2csc_clus_hitmap = nullptr;
154  m_h2csc_clus_hitmap_noise = nullptr;
155  m_h2csc_clus_hitmap_signal = nullptr;
156  m_h2csc_clus_segmap_signal = nullptr;
157 
159  m_h2csc_clus_r_vs_z_hitmap = nullptr;
160  m_h2csc_clus_y_vs_x_hitmap = nullptr;
161 
162  // layer occupancy
165 
166  // q_max of cluster
167  m_h2csc_clus_qmax = nullptr;
168  m_h2csc_clus_qmax_noise = nullptr;
169  m_h2csc_clus_qmax_signal = nullptr;
170 
171  m_h2csc_clus_qmax_signal_EA = nullptr;
173 
174  m_h2csc_clus_qmax_signal_EC = nullptr;
176 
177  // q_sum = q_max + q_left + q_right of cluster
178  m_h2csc_clus_qsum = nullptr;
179  m_h2csc_clus_qsum_noise = nullptr;
180  m_h2csc_clus_qsum_signal = nullptr;
181 
182  m_h2csc_clus_qsum_signal_EA = nullptr;
185 
186  m_h2csc_clus_qsum_signal_EC = nullptr;
189 
190  // sampling time - eta cluster
191  m_h1csc_clus_precision_time = nullptr;
196 
197  // sampling time - phi cluster
201 
202  // sampling time - phi cluster
206 
207  // cluster charge - eta cluster
211 
212  // cluster charge - phi cluster
216 
217  // cluster count - phi layer //
218  m_h2csc_clus_phicluscount = nullptr;
221 
222  // cluster count - eta layer //
223  m_h2csc_clus_etacluscount = nullptr;
226 
227  m_h1csc_clus_count = nullptr;
228  m_h1csc_clus_count_signal = nullptr;
229  m_h1csc_clus_count_noise = nullptr;
230 
231  m_h1csc_clus_count_perlayer = nullptr;
232 
233  // cluster width - eta layer
234  m_h2csc_clus_etacluswidth = nullptr;
237 
238  // cluster width - phi layer
239  m_h2csc_clus_phicluswidth = nullptr;
242 
243  //total cluster width
244  m_h1csc_clus_totalWidth_EA = nullptr;
245  m_h1csc_clus_totalWidth_EC = nullptr;
246 
247  // correlation plots
251 
252  // hit correlation b/w eta/phi clusters
256 
257  // width correlation b/w eta/phi clusters
261 
262 }
263 
264 
265 //
266 // bookClusterHistograms ----------------------------------------------------------------
267 //
269 
270  m_cscClusExpert.clear();
271  m_cscClusShift.clear();
272  m_cscClusOviewEA.clear();
273  m_cscClusOviewEC.clear();
274 
276  int nxbins = 242; // 192 bins for precision, 48 for transverse strips + 1 set extra
277  float nxmin = -49.; // -1 -> -48 (for transverse)
278  float nxmax = 193.; // 1 -> 192 (for precision)
279 
280  int nybins = 175; // 32 chambers (16 per side x 5 layers per chamber) + 1 set extra
281  float nymin = -17.; //
282  float nymax = 18.; //
283 
284  int nybinsEA = 90; // 16 chambers (x 5 layers per chamber) + 1 set extra
285  float nyminEA = 0.; //
286  float nymaxEA = 18.; //
287 
288  int nybinsEC = 85; // 16 chambers (x 5 layers per chamber) + 1 set extra
289  float nyminEC = -17.; //
290  float nymaxEC = 0.; //
291 
292  // kilo electrons
293  int nqbins = 400;
294  float nqmin = 0.;
295  float nqmax = 8000;
296 
297  // time
298  int ntbins = 260;
299  float ntmin = -60;
300  float ntmax = 200;
301 
302  //total cluster width
303  int Nxbins = 15360; //16 chambers * [(192 eta-strips * 4 layers) + (48 phi-strips * 4 layers)] = 15360 channels
304  float Nxmin = 1.;
305  float Nxmax = 15361.;
307 
308 
309  // cluster hitmap
310  m_h2csc_clus_hitmap = new TH2F("h2csc_clus_hitmap",
311  "Cluster occupancy ;channel;[sector] + [0.2 #times layer]",nxbins,nxmin,nxmax,nybins,nymin,nymax);
312 
313  m_h2csc_clus_hitmap_noise = new TH2F("h2csc_clus_hitmap_noise",
314  Form("Cluster occupancy, Qmax #leq %4u counts;channel;[sector] + [0.2 #times layer]",m_qmaxADCCut),
315  nxbins,nxmin,nxmax,nybins,nymin,nymax);
316 
317  m_h2csc_clus_hitmap_signal = new TH2F("h2csc_clus_hitmap_signal",
318  Form("Cluster occupancy, Qmax > %4u counts;channel;[sector] + [0.2 #times layer]",m_qmaxADCCut),
319  nxbins,nxmin,nxmax,nybins,nymin,nymax);
320 
321  m_h2csc_clus_segmap_signal = new TH2F("h2csc_clus_segmap_signal",
322  Form("Segment occupancy, Qmax > %4u counts;segment;[sector] + [0.2 #times layer]",m_qmaxADCCut),
323  16,-0.5,15.5,nybins,nymin,nymax);
324 
325  // layer occupancy
326  m_h1csc_clus_occupancy_signal_EA = new TH1F("h1csc_clus_occupancy_signal_EA",
327  Form("EndCap A: Layer occupancy, Qmax > %4u counts;[sector] + [0.2 #times layer];entries/layer",m_qmaxADCCut),nybinsEA,nyminEA,nymaxEA);
329 
330  m_h1csc_clus_occupancy_signal_EC = new TH1F("h1csc_clus_occupancy_signal_EC",
331  Form("EndCap C: Layer occupancy, Qmax > %4u counts;[sector] + [0.2 #times layer];entries/layer",m_qmaxADCCut),nybinsEC,nyminEC,nymaxEC);
333 
334  // cluster qsum
335  m_h2csc_clus_qsum = new TH2F("h2csc_clus_qsum", "Cluster charge (Qsum);counts;[sector] + [0.2 #times layer]",
336  nqbins,nqmin,nqmax,nybins,nymin,nymax);
337  m_h2csc_clus_qsum_noise = new TH2F("h2csc_clus_qsum_noise",
338  Form("Cluster charge(Qsum), Qmax #leq %4u counts;counts;[sector] + [0.2 #times layer]",m_qmaxADCCut),
339  nqbins,nqmin,nqmax,nybins,nymin,nymax);
340 
341  m_h2csc_clus_qsum_signal = new TH2F("h2csc_clus_qsum_signal",
342  Form("Cluster charge(Qsum), Qmax > %4u counts;counts;[sector] + [0.2 #times layer]",m_qmaxADCCut),
343  nqbins,nqmin,nqmax,nybins,nymin,nymax);
344 
345  m_h2csc_clus_qsum_signal_EA = new TH2F("h2csc_clus_qsum_signal_EA",
346  Form("EndCap A: Cluster charge(Qsum), Qmax > %4u counts;counts;[sector] + [0.2 #times layer]",m_qmaxADCCut),
347  nqbins,nqmin,nqmax,nybinsEA,nyminEA,nymaxEA);
348 
349  m_h1csc_clus_qsum_signal_EA_count = new TH1F("h1csc_clus_qsum_signal_EA_count",
350  Form("EndCap A: Cluster charge(Qsum), Qmax > %4u counts;counts;entries/20 counts;",m_qmaxADCCut),nqbins,nqmin,nqmax);
351 
352  m_h1csc_clus_qsum_signal_EA_lfitmean = new TH1F("h1csc_clus_qsum_signal_EA_lfitmean",
353  Form("EndCap A: MPV of Landau fit to Cluster charge(Qsum);[sector] + [0.2 #times layer];counts/layer"),nybinsEA,nyminEA,nymaxEA);
355 
356  m_h2csc_clus_qsum_signal_EC = new TH2F("h2csc_clus_qsum_signal_EC",
357  Form("EndCap C: Cluster charge(Qsum), Qmax > %4u counts;counts;[sector] + [0.2 #times layer]",m_qmaxADCCut),
358  nqbins,nqmin,nqmax,nybinsEC,nyminEC,nymaxEC);
359 
360  m_h1csc_clus_qsum_signal_EC_count = new TH1F("h1csc_clus_qsum_signal_EC_count",
361  Form("EndCap C: Cluster charge(Qsum), Qmax > %4u counts;counts;entries/20 counts;",m_qmaxADCCut),nqbins,nqmin,nqmax);
362  m_h1csc_clus_qsum_signal_EC_lfitmean = new TH1F("h1csc_clus_qsum_signal_EC_lfitmean",
363  Form("EndCap C: MPV of Landau fit to Cluster charge(Qsum);[sector] + [0.2 #times layer];counts/layer"),nybinsEC,nyminEC,nymaxEC);
365 
366  // cluster qmax
367  m_h2csc_clus_qmax = new TH2F("h2csc_clus_qmax", "Cluster peak-strip charge, Qmax;counts;[sector] + [0.2 #times layer]",
368  nqbins,nqmin,nqmax,nybins,nymin,nymax);
369  m_h2csc_clus_qmax_noise = new TH2F("h2csc_clus_qmax_noise",
370  Form("Cluster peak-strip charge, Qmax #leq %4u counts;counts;[sector] + [0.2 #times layer]",m_qmaxADCCut),
371  nqbins,nqmin,nqmax,nybins,nymin,nymax);
372  m_h2csc_clus_qmax_signal = new TH2F("h2csc_clus_qmax_signal",
373  Form("Cluster peak-strip charge, Qmax > %4u counts;counts;[sector] + [0.2 #times layer]",m_qmaxADCCut),
374  nqbins,nqmin,nqmax,nybins,nymin,nymax);
375 
376  m_h2csc_clus_qmax_signal_EA = new TH2F("h2csc_clus_qmax_signal_EA",
377  Form("EndCap A: Cluster peak-strip charge, Qmax > %4u counts;counts;[sector] + [0.2 #times layer]",m_qmaxADCCut),
378  nqbins,nqmin,nqmax,nybinsEA,nyminEA,nymaxEA);
379 
380  m_h1csc_clus_qmax_signal_EA_count = new TH1F("h1csc_clus_qmax_signal_EA_count",
381  Form("EndCap A: Cluster peak-strip charge, Qmax > %4u counts;counts;entries/20 counts;",m_qmaxADCCut),nqbins,nqmin,nqmax);
382 
383  m_h2csc_clus_qmax_signal_EC = new TH2F("h2csc_clus_qmax_signal_EC",
384  Form("EndCap C: Cluster peak-strip charge, Qmax > %4u counts;counts;[sector] + [0.2 #times layer]",m_qmaxADCCut),
385  nqbins,nqmin,nqmax,nybinsEC,nyminEC,nymaxEC);
386 
387  m_h1csc_clus_qmax_signal_EC_count = new TH1F("h1csc_clus_qmax_signal_EC_count",
388  Form("EndCap C: Cluster peak-strip charge, Qmax > %4u counts;counts;entries/20 counts;",m_qmaxADCCut),nqbins,nqmin,nqmax);
389 
390  // eta-cluster sampling time
391  m_h1csc_clus_precision_time = new TH1F("h1csc_clus_precision_time",
392  "#eta-cluster sampling time;ns;entries/ns",ntbins,ntmin,ntmax );
393  m_h1csc_clus_precision_time_noise = new TH1F("h1csc_clus_precision_time_noise",
394  Form("#eta-cluster sampling time, Qmax #leq %4u counts;ns;entries/ns",m_qmaxADCCut),ntbins,ntmin,ntmax );
395  m_h1csc_clus_precision_time_signal = new TH1F("h1csc_clus_precision_time_signal",
396  Form("#eta-cluster sampling time, Qmax > %4u counts;ns;entries/ns",m_qmaxADCCut),ntbins,ntmin,ntmax );
397 
398  m_h1csc_clus_precision_time_signal_EA = new TH1F("h1csc_clus_precision_time_signal_EA",
399  Form("EndCap A: #eta-cluster sampling time, Qmax > %4u counts;ns;entries/ns",m_qmaxADCCut),ntbins,ntmin,ntmax );
400  m_h1csc_clus_precision_time_signal_EC = new TH1F("h1csc_clus_precision_time_signal_EC",
401  Form("EndCap C: #eta-cluster sampling time, Qmax > %4u counts;ns;entries/ns",m_qmaxADCCut),ntbins,ntmin,ntmax );
402 
403  // eta-cluster charge
404  m_h1csc_clus_precision_charge = new TH1F("h1csc_clus_precision_charge",
405  "#eta-cluster charge;counts;entries/count",nqbins,nqmin,nqmax );
406  m_h1csc_clus_precision_charge_noise = new TH1F("h1csc_clus_precision_charge_noise",
407  Form("#eta-cluster charge, Qmax #leq %4u counts;counts;entries/count",m_qmaxADCCut),nqbins,nqmin,nqmax );
408  m_h1csc_clus_precision_charge_signal = new TH1F("h1csc_clus_precision_charge_signal",
409  Form("#eta-cluster charge, Qmax > %4u counts;counts;entries/count",m_qmaxADCCut),nqbins,nqmin,nqmax );
410 
411  // phi-cluster sampling time
412  m_h1csc_clus_transverse_time = new TH1F("h1csc_clus_transverse_time",
413  "#phi-cluster sampling time;ns;entries/ns",ntbins,ntmin,ntmax );
414  m_h1csc_clus_transverse_time_noise = new TH1F("h1csc_clus_transverse_time_noise",
415  Form("#phi-cluster sampling time, Qmax #leq %4u counts;ns;entries/ns",m_qmaxADCCut),ntbins,ntmin,ntmax );
416  m_h1csc_clus_transverse_time_signal = new TH1F("h1csc_clus_transverse_time_signal",
417  Form("#phi-cluster sampling time, Qmax > %4u counts;ns;entries/ns",m_qmaxADCCut),ntbins,ntmin,ntmax );
418 
419  // phi-cluster charge
420  m_h1csc_clus_transverse_charge = new TH1F("h1csc_clus_transverse_charge",
421  "#phi-cluster charge;counts;entries/count",nqbins,nqmin,nqmax );
422  m_h1csc_clus_transverse_charge_noise = new TH1F("h1csc_clus_transverse_charge_noise",
423  Form("#phi-cluster charge, Qmax #leq %4u counts;counts;entries/count",m_qmaxADCCut),nqbins,nqmin,nqmax );
424  m_h1csc_clus_transverse_charge_signal = new TH1F("h1csc_clus_transverse_charge_signal",
425  Form("#phi-cluster charge, Qmax > %4u counts;counts;entries/count",m_qmaxADCCut),nqbins,nqmin,nqmax );
426 
427 
428  // eta-cluster width
429  m_h2csc_clus_etacluswidth = new TH2F("h2csc_clus_etacluswidth",
430  "#eta-cluster width;# strips;[sector] + [0.2 #times layer]",
431  192,0,192,nybins,nymin,nymax);
432  m_h2csc_clus_etacluswidth_noise = new TH2F("h2csc_clus_etacluswidth_noise",
433  Form("#eta-cluster width, Qmax #leq %4u counts;# strips;[sector] + [0.2 #times layer]",m_qmaxADCCut),
434  192,0,192,nybins,nymin,nymax);
435  m_h2csc_clus_etacluswidth_signal = new TH2F("h2csc_clus_etacluswidth_signal",
436  Form("#eta-cluster width, Qmax > %4u counts;# strips;[sector] + [0.2 #times layer]",m_qmaxADCCut),
437  192,0,192,nybins,nymin,nymax);
438 
439  // phi-cluster width
440  m_h2csc_clus_phicluswidth = new TH2F("h2csc_clus_phicluswidth",
441  "#phi-cluster width;# strips;[sector] + [0.2 #times layer]",
442  48,0,48,nybins,nymin,nymax);
443  m_h2csc_clus_phicluswidth_noise = new TH2F("h2csc_clus_phicluswidth_noise",
444  Form("#phi-cluster width, Qmax #leq %4u counts;# strips;[sector] + [0.2 #times layer]",m_qmaxADCCut),
445  48,0,48,nybins,nymin,nymax);
446  m_h2csc_clus_phicluswidth_signal = new TH2F("h2csc_clus_phicluswidth_signal",
447  Form("#phi-cluster width, Qmax > %4u counts;# strips;[sector] + [0.2 #times layer]",m_qmaxADCCut),
448  48,0,48,nybins,nymin,nymax);
449 
450  //total cluster width
451  m_h1csc_clus_totalWidth_EA = new TH1F("h1csc_clus_totalWidth_EA","EndCap A: Cluster hits in all EA eta(#eta) & phi(#phi) strips;strips;cluster hits",Nxbins,Nxmin,Nxmax);
452 
453  m_h1csc_clus_totalWidth_EC = new TH1F("h1csc_clus_totalWidth_EC","EndCap C: Cluster hits in all EC eta(#eta) & phi(#phi) strips;strips;cluster hits",Nxbins,Nxmin,Nxmax);
454 
455  // eta-cluster count
456  m_h2csc_clus_etacluscount = new TH2F("h2csc_clus_etacluscount",
457  "#eta-cluster count;no.of clusters;[sector] + [0.2 #times layer]",
458  20,0,20,nybins,nymin,nymax);
459  m_h2csc_clus_etacluscount_noise = new TH2F("h2csc_clus_etacluscount_noise",
460  Form("#eta-cluster count, Qmax #leq %4u counts;# clusters;[sector] + [0.2 #times layer]",m_qmaxADCCut),
461  20,0,20,nybins,nymin,nymax);
462  m_h2csc_clus_etacluscount_signal = new TH2F("h2csc_clus_etacluscount_signal",
463  Form("#eta-cluster count, Qmax > %4u counts;# clusters;[sector] + [0.2 #times layer]",m_qmaxADCCut),
464  20,0,20,nybins,nymin,nymax);
465 
466  // phi-cluster count
467  m_h2csc_clus_phicluscount = new TH2F("h2csc_clus_phicluscount",
468  "#phi-cluster count;# clusters;[sector] + [0.2 #times layer]",
469  20,0,20,nybins,nymin,nymax);
470  m_h2csc_clus_phicluscount_noise = new TH2F("h2csc_clus_phicluscount_noise",
471  Form("#phi-cluster count, Qmax #leq %4u counts;# clusters;[sector] + [0.2 #times layer]",m_qmaxADCCut),
472  20,0,20,nybins,nymin,nymax);
473  m_h2csc_clus_phicluscount_signal = new TH2F("h2csc_clus_phicluscount_signal",
474  Form("#phi-cluster count, Qmax > %4u counts;# clusters;[sector] + [0.2 #times layer]",m_qmaxADCCut),
475  20,0,20,nybins,nymin,nymax);
476 
477  m_h1csc_clus_count = new TH1F("h1csc_clus_count", "Clusters per event;no.of clusters;entries",26,-1,25);
478  m_h1csc_clus_count_noise = new TH1F("h1csc_clus_count_noise",
479  Form("Clusters per event, Qmax #leq %4u counts;no.of clusters;entries",m_qmaxADCCut),26,-1,25);
480  m_h1csc_clus_count_signal = new TH1F("h1csc_clus_count_signal",
481  Form("Clusters per event, Qmax > %4u counts;no.of clusters;entries",m_qmaxADCCut),26,-1,25);
482 
483  // correlation histograms
484  m_h2csc_clus_eta_vs_phi_cluscount = new TH2F("h2csc_clus_eta_vs_phi_cluscount",
485  "Eta vs. Phi Cluster count correlation;#varphi-cluster count;#eta-cluster count",100,0,100,100,0,100);
486  m_h2csc_clus_eta_vs_phi_cluscount_noise = new TH2F("h2csc_clus_eta_vs_phi_cluscount_noise",
487  "Eta vs. Phi Noise-Cluster count correlation;#varphi-cluster count;#eta-cluster count",100,0,100,100,0,100);
488  m_h2csc_clus_eta_vs_phi_cluscount_signal = new TH2F("h2csc_clus_eta_vs_phi_cluscount_signal",
489  "Eta vs. Phi Signal-Cluster count correlation;#varphi-cluster count;#eta-cluster count",100,0,100,100,0,100);
490 
491  m_h2csc_clus_eta_vs_phi_cluswidth = new TH2F("h2csc_clus_eta_vs_phi_cluswidth",
492  "Eta vs. Phi Cluster width correlation;#varphi-cluster width;#eta-cluster width",100,0,100,100,0,100);
493 
494  m_h2csc_clus_r_vs_z_hitmap = new TH2F("h2csc_clus_r_vs_z_hitmap",
495  "R vs. Z Cluster hitmap;z(mm);R(mm)",200, -10000., 10000., 40, 0., 4000);
496 
497  m_h2csc_clus_y_vs_x_hitmap = new TH2F("h2csc_clus_y_vs_x_hitmap",
498  "Y vs. X Cluster hitmap;x(mm);y(mm)",100, -5000., 5000., 100, -5000., 5000);
499 
500 
501  // hitmaps
502  m_cscClusExpert.push_back(m_h2csc_clus_hitmap); // expert
503  m_cscClusShift.push_back(m_h2csc_clus_hitmap_signal); // shift
504  m_cscClusExpert.push_back(m_h2csc_clus_segmap_signal); // expert
505  m_cscClusExpert.push_back(m_h2csc_clus_hitmap_noise); // expert
506 
507  m_cscClusShift.push_back(m_h2csc_clus_r_vs_z_hitmap); // shift
508  m_cscClusShift.push_back(m_h2csc_clus_y_vs_x_hitmap); // shift
509 
510  // layer occupancy
513 
514  // qsum
515  m_cscClusExpert.push_back(m_h2csc_clus_qsum); // expert
516  m_cscClusShift.push_back(m_h2csc_clus_qsum_signal); // shift, overview, dq-flag(Q3 is landau)
517  m_cscClusExpert.push_back(m_h2csc_clus_qsum_noise); // expert
518 
522 
526 
527  // qmax
528  m_cscClusExpert.push_back(m_h2csc_clus_qmax); // expert
529  m_cscClusShift.push_back(m_h2csc_clus_qmax_signal); // shift, overview, dq-flag(#of clusters per layer)
530  m_cscClusExpert.push_back(m_h2csc_clus_qmax_noise); // expert
531 
534 
537 
538  // phi time
539  m_cscClusExpert.push_back(m_h1csc_clus_transverse_time); // expert
542 
543  // eta time
544  m_cscClusExpert.push_back(m_h1csc_clus_precision_time); // expert
545  m_cscClusShift.push_back(m_h1csc_clus_precision_time_signal); // shift, dq-flag(timing window -50, +150 ns)
547 
550 
551  // phi charge
552  m_cscClusExpert.push_back(m_h1csc_clus_transverse_charge); // expert
555 
556  // eta charge
557  m_cscClusExpert.push_back(m_h1csc_clus_precision_charge); // expert
560 
561  // eta width (# of strips/cluster)
562  m_cscClusExpert.push_back(m_h2csc_clus_etacluswidth); // expert
565 
566  // phi width (# of strips/cluster)
567  m_cscClusExpert.push_back(m_h2csc_clus_phicluswidth); // expert
570 
571  //total cluster width
572  m_cscClusOviewEA.push_back(m_h1csc_clus_totalWidth_EA); // overview
573  m_cscClusOviewEC.push_back(m_h1csc_clus_totalWidth_EC); // overview
574 
575  // eta count (# of clusters)
576  m_cscClusExpert.push_back(m_h2csc_clus_etacluscount); // expert
579 
580  // phi count (# of clusters)
581  m_cscClusExpert.push_back(m_h2csc_clus_phicluscount); // expert
584 
585  m_cscClusExpert.push_back(m_h1csc_clus_count); // expert
586  m_cscClusExpert.push_back(m_h1csc_clus_count_signal); // expert
587  m_cscClusExpert.push_back(m_h1csc_clus_count_noise); // expert
588 
589  // correlation plots
590  // eta vs. phi count (# of clusters)
594 
595 
596  // eta vs. phi width (# of strips/cluster)
598 
599 }
600 
601 
602 //
603 // bookHistograms ----------------------------------------------------------------
604 //
606 
607  ATH_MSG_DEBUG ( "Booking CSC cluster histograms." );
608  StatusCode sc = StatusCode::SUCCESS;
609 
610  //if(newRun) {
612  // register shift histograms
613  MonGroup cscclus_shift( this, m_cscClusterPath+"/Shift", run, ATTRIB_MANAGED );
615  ATH_MSG_DEBUG ( "Found " << m_cscClusShift.size() << " shift Histograms " );
616  for (; iT != m_cscClusShift.end(); ++iT) {
617  sc = cscclus_shift.regHist(*iT);
618  if ( sc.isFailure() ) {
619  ATH_MSG_ERROR ( "Cannot register histogram " << (*iT)->GetName() );
620  return sc;
621  }
622  }
623 
624  // register expert histograms
625  MonGroup cscclus_expert( this, m_cscClusterPath+"/Expert", run, ATTRIB_MANAGED );
626  iT = m_cscClusExpert.begin();
627  ATH_MSG_DEBUG ( "Found " << m_cscClusExpert.size() << " expert Histograms " );
628  for (; iT != m_cscClusExpert.end(); ++iT) {
629  sc = cscclus_expert.regHist(*iT);
630  if ( sc.isFailure() ) {
631  ATH_MSG_ERROR ( "Cannot register histogram " << (*iT)->GetName() );
632  return sc;
633  }
634  }
635 
636  // register overview histograms for EA
637  //MonGroup m_cscclus_oviewEA( this, m_cscGenPath+"CSC/Overview/CSCEA", shift, run );
638  m_cscclus_oviewEA = new MonGroup( this, m_cscGenPath+"CSC/Overview/CSCEA/Cluster", run, ATTRIB_MANAGED );
639  iT = m_cscClusOviewEA.begin();
640  ATH_MSG_DEBUG ( "Found " << m_cscClusOviewEA.size() << " CSCEA Overview Histograms " );
641  for (; iT != m_cscClusOviewEA.end(); ++iT) {
642  sc = m_cscclus_oviewEA->regHist(*iT);
643  if ( sc.isFailure() ) {
644  ATH_MSG_ERROR ( "Cannot register overview histogram for Endcap A: " << (*iT)->GetName() );
645  return sc;
646  }
647  }
648 
649  // register overview histograms for EC
650  //MonGroup m_cscclus_oviewEC( this, m_cscGenPath+"CSC/Overview/CSCEC", shift, run );
651  m_cscclus_oviewEC = new MonGroup( this, m_cscGenPath+"CSC/Overview/CSCEC/Cluster", run, ATTRIB_MANAGED );
652  iT = m_cscClusOviewEC.begin();
653  ATH_MSG_DEBUG ( "Found " << m_cscClusOviewEC.size() << " CSCEC Overview Histograms " );
654  for (; iT != m_cscClusOviewEC.end(); ++iT) {
655  sc = m_cscclus_oviewEC->regHist(*iT);
656  if ( sc.isFailure() ) {
657  ATH_MSG_ERROR ( "Cannot register overview histogram for Endcap C: " << (*iT)->GetName() );
658  return sc;
659  }
660  }
661 
662  // if we are here return success
663  return sc;
664 
665 }
666 
667 //
668 // fillHistograms ----------------------------------------------------------------
669 //
671 
672  StatusCode sc = StatusCode::SUCCESS;
673 
674  // check if event passed sample-selection triggers
675  if(m_doEvtSel) { if(!evtSelTriggersPassed()) return sc; }
676 
677  // retrieve cluster / strip collection
680 
681  // we can do (some) monitoring plots with just the cluster
682  // ideally we need both the cluster and the strips that make up that cluster
683  FillCSCClusters(cscCluster.cptr(), cscStrip.cptr());
684 
685  return sc;
686 }
687 
688 //
689 // FillCSCClusters ----------------------------------------------------------------
690 //
692 
693 
694  ATH_MSG_DEBUG ( " Size of Cluster Collection : " << cols->size() );
695  ATH_MSG_DEBUG ( " Size of Strip Collection : " << strips->size() );
696 
697  for ( CscPrepDataContainer::const_iterator Icol = cols->begin();
698  Icol != cols->end(); ++Icol ) {
699  const CscPrepDataCollection& clus = **Icol;
700 
701  // arrays to hold cluster-count
702  // 32 chambers and 8 layers (each has one extra - index '0' is not counted)
703  int clusCount[33][9], sigclusCount[33][9];
704  unsigned int nEtaClusWidthCnt = 0, nPhiClusWidthCnt = 0;
705  for(unsigned int kl = 0; kl < 33; kl++ ) {
706  for(unsigned int km = 0; km < 9; km++ ) {
707  clusCount[kl][km] = 0;
708  sigclusCount[kl][km] = 0;
709  }
710  }
711 
712 
713  // ==============================================================================
714  // Field Range Notes
715  // ==============================================================================
716  // StationName unsigned integer maps to "CSS", "CSL", etc.
717  // StationEta [-1,1] -1 for backward, 1 for forward endcap
718  // StationPhi [1,8] increases with Phi
719  // Technology [1] maps to "CSC"
720  // ChamberLayer [1,2] increases with |Z|
721  // WireLayer [1,4] increases with |Z|
722  // MeasuresPhi [0,1] 0 if measures R, 1 if measures Phi
723  // Strip [1,n] increases with R for MeasuresPhi=0
724  // increases with Phi for MeasuresPhi=1
725  // ==============================================================================
726 
727 
728  stripsSum_EA = 0.;
729  stripsSum_EAtest = -50.;
730  stripsSum_EC = 0.;
731  stripsSum_ECtest = -50.;
732 
733 
734  ATH_MSG_DEBUG ( " Begin loop over clusters ============================");
735  for ( CscPrepDataCollection::const_iterator Itclu = clus.begin();
736  Itclu != clus.end(); ++Itclu ) {
737  const CscPrepData& iClus = **Itclu;
738  const std::vector<Identifier>& stripIds = iClus.rdoList();
739  float clu_charge = iClus.charge();
740  float clu_time = iClus.time();
741 
742  ATH_MSG_DEBUG(" cluster charge = " << clu_charge << "\t cluster time = " << clu_time );
743 
744  unsigned int noStrips = stripIds.size(); // no. of strips in this cluster = stripIds.size()
745  Identifier clusId = iClus.identify();
746 
747  // get the cluster coordinates
748  int stationName = m_idHelperSvc->cscIdHelper().stationName(clusId);
749  std::string stationString = m_idHelperSvc->cscIdHelper().stationNameString(stationName);
750  int chamberType = stationString == "CSS" ? 0 : 1;
751  int stationEta = m_idHelperSvc->cscIdHelper().stationEta(clusId);
752  int stationPhi = m_idHelperSvc->cscIdHelper().stationPhi(clusId);
753  int wireLayer = m_idHelperSvc->cscIdHelper().wireLayer(clusId);
754  int measuresPhi = m_idHelperSvc->cscIdHelper().measuresPhi(clusId);
755 
756 
757  float x = iClus.globalPosition().x();
758  float y = iClus.globalPosition().y();
759  float z = iClus.globalPosition().z();
760  float r = sqrt(x*x + y*y);
763 
764  // convert to my coordinates
765  int sectorNo = stationEta * (2 * stationPhi - chamberType); // [-16 -> -1] and [+1 -> +16]
766  float secLayer = sectorNo + 0.2 * (wireLayer - 1) + 0.1;
767  int xfac = measuresPhi ? -1 : 1; // [-1 -> -48] / [+1 -> +192]
768 
769 
770  //total cluster width (EA and EC) calculation
771  if(secLayer > 0.) {
772  stripsSum_EA = stripsSum_EA + noStrips;
773  }
776  }
777 
778  if(secLayer < 0. || secLayer == 0.) {
779  stripsSum_EC = stripsSum_EC + noStrips;
780  }
783  }
784 
785  // compute the indices to store cluster count
786  int ns = sectorNo < 0 ? sectorNo*(-1) : sectorNo+16; // [-16 -> -1] shifted to [1 -> 16] and [+1 -> +16] shifted to [+17 -> +32]
787  int nl = (measuresPhi ? wireLayer : wireLayer+4); // [ 1 -> 4] (phi-layers) and [5 -> 8] (eta-layers)
788 
789  // increment the cluster-count for this layer
790  clusCount[ns][nl]++;
791 
792  // indices for ns = [+1 -> +32]; 32 places (index '0' is not counted); allocated 33 places
793  // indices for nl = [+1 -> +8]; 8 places (index '0' is not counted); allocated 9 places
794  ATH_MSG_DEBUG(" ns = " << ns << "\tm_nl = " << nl << "\tm_sec = " << sectorNo << "\t m_lay= " << wireLayer << "\tmPhi = " << measuresPhi);
795 
796 
797  // check the cluster status; probably need to read status info from jobOptions - not done for the moment
798  // status = Muon::CscStatusUnspoiled (i.e 0) or Muon::CscStatusSplitUnspoiled (i.e 10) are considered good for precision clusters
799  // status = Muon::CscStatusSimple (i.e 1) could be good for non-precision clusters (i.e for phi-layers)
800  std::string stat = Muon::toString(iClus.status());
801  bool cluster_status = ( (stat == "unspoiled") ||
802  (stat == "unspoiled with split") ||
803  (stat == "simple")
804  ) ? true : false;
805 
806  // Also need at least three strips in an eta-cluster to compute Q_max, Q_left and Q_right
807  bool eta_cluster_status = cluster_status && ( noStrips > 2 ) && (measuresPhi == 0);
808 
809  // Also need at least one strip in a phi-cluster to compute Q_max = Q_sum
810  bool phi_cluster_status = cluster_status && ( noStrips > 0 ) && (measuresPhi == 1);
811 
812  ATH_MSG_DEBUG ( " ClusterStatus eta = " << eta_cluster_status << " ,phi = " << phi_cluster_status);
813  ATH_MSG_DEBUG ( " ClusterID (eta:" << stationEta << ",phi:" << stationPhi << ",type:" << chamberType << ", measPhi: "
814  << measuresPhi << ",wire:" << wireLayer << ") = " << secLayer << " status = "
815  << stat << " #of strips = " << noStrips );
816 
817  // if cluster is okay get Qmax, Qleft, Qright and Qsum = (Qmax + Qleft + Qright)
818  if(eta_cluster_status || phi_cluster_status ) {
819  const CscStripPrepDataCollection* pcol(nullptr);
820  bool found_id = true;
821  std::vector <const CscStripPrepData*> stripVec;
822  std::vector <float> fStripIDs;
823  float maxStripCharge = 0., maxStipId = 0.;
824  int sIdx = 0, mxIdx = 0; // index-counter and index of max strip in the vector of Id's
825 
826  // fill cluster width (no. of strips per cluster)
827  if(measuresPhi) {
828  m_h2csc_clus_phicluswidth->Fill(noStrips,secLayer); // fill phi-cluster width
829  nPhiClusWidthCnt++;
830  } else {
831  m_h2csc_clus_etacluswidth->Fill(noStrips,secLayer); // fill eta-cluster width
832  nEtaClusWidthCnt++;
833  }
834 
835  // Loop over strip id's vector / strip collection and match the id's from vector with strips in collection
836  for ( std::vector<Identifier>::const_iterator sId = stripIds.begin(); sId != stripIds.end(); ++sId, sIdx++ ) {
837  Identifier id = *sId; // for strip Id's
838  int thisStrip = m_idHelperSvc->cscIdHelper().strip(id);
839  float stripid = thisStrip * xfac; // x-axis fill value
840  fStripIDs.push_back(stripid);
841  m_h2csc_clus_hitmap->Fill(stripid, secLayer);
842 
843  if(!pcol) {
844  const CscStripPrepDataCollection* icol = strips->indexFindPtr(clus.identifyHash());
845  if ( icol == nullptr ) {
846  found_id = false;
847  break; // could not identify the strips
848  } else {
849  pcol = icol;
850  }
851  } // end if !pcol
852 
853  bool found_strip = false;
854  float maxsampChVal = 0.;
855  if(found_id) {
856  for ( CscStripPrepDataCollection::const_iterator istrip= pcol->begin(); istrip != pcol->end(); ++ istrip ) {
857  found_strip = ( *istrip )->identify() == id ;
858  if(found_strip) {
859  stripVec.push_back(*istrip);
860  const std::vector<float> &samp_charges = ( *istrip )->sampleCharges();
861  for(unsigned int i = 0; i < samp_charges.size(); i++ ) {
862  if(samp_charges[i] > maxsampChVal) maxsampChVal = samp_charges[i];
863  }
864  if(maxsampChVal > maxStripCharge ) {
865  maxStripCharge = maxsampChVal;
866  maxStipId = stripid;
867  mxIdx = sIdx;
868  }
869  break; // break from inner loop
870  }
871  } // end for loop on strip collection
872  ATH_MSG_DEBUG ( " " << (found_strip? "FoundStrip " : "NoStripFound ") << " with max sampling = " << maxsampChVal);
873  } // end if found_id
874  } // end for loop over strips
875  ATH_MSG_DEBUG ( " Max Strip charge = " << maxStripCharge << " and strip Id = " << maxStipId << " and index = " << mxIdx);
876  float qmax = 0., qleft = 0., qright = 0., qsum = 0.;
877 
878  // if we are here and loop over strips is successful we should have found_id = true
879  // and the size of strip-ID-vector == size of strips-vector
880  bool size_ids_coll = (noStrips == stripVec.size() ? true : false) ;
881 
882  if(found_id && size_ids_coll ) {
883  // store results of three strips (Qmax, Qleft, Qright)
884  std::vector<ICscStripFitter::Result> res;
885  res.resize(3);
886  bool range_check = (mxIdx > -1) && (mxIdx < int(noStrips));
887 
888  ATH_MSG_DEBUG ( " Range check = (" << mxIdx << " > -1 ) && (" << mxIdx << " < " << noStrips << " ) = " << range_check
889  << "\t size of vec check " << noStrips << " == " << stripVec.size());
890 
891  if( range_check ) {
892  // fit Q_left fit
893  if(mxIdx-1 >= 0 ) {
894  res[0] = m_stripFitter->fit(*stripVec[mxIdx-1]);
895  qleft = res[0].charge;
896  qsum += qleft;
897  ATH_MSG_DEBUG ( " Left Strip q +- dq = " << res[0].charge << " +- " << res[0].dcharge << "\t t +- dt = "
898  << res[0].time << " +- " << res[0].dtime << "\t w +- dw = " << res[0].width << " +- "
899  << res[0].dwidth << "\t status= " << res[0].status << "\t chisq= " << res[0].chsq);
900  } // end if q_left
901  // fit Q_max strip
902  res[1] = m_stripFitter->fit(*stripVec[mxIdx]);
903  qmax = res[1].charge;
904  qsum += qmax;
905  ATH_MSG_DEBUG ( " Peak Strip q +- dq = " << res[1].charge << " +- " << res[1].dcharge << "\t t +- dt = "
906  << res[1].time << " +- " << res[1].dtime << "\t w +- dw = " << res[1].width << " +- "
907  << res[1].dwidth << "\t status= " << res[1].status << "\t chisq= " << res[1].chsq);
908  // fit Q_right strip
909  if(mxIdx+1 < int(noStrips)) {
910  res[2] = m_stripFitter->fit(*stripVec[mxIdx+1]);
911  qright = res[2].charge;
912  qsum += qright;
913  ATH_MSG_DEBUG ( " Right Strip q +- dq = " << res[2].charge << " +- " << res[2].dcharge << "\t t +- dt = "
914  << res[2].time << " +- " << res[2].dtime << "\t w +- dw = " << res[2].width << " +- "
915  << res[2].dwidth << "\t status= " << res[2].status << "\t chisq= " << res[2].chsq);
916  } // end if q_right
917  } // end if range_check
918 
919  // not used at the moment
920  // 1 e = 1.602176487 10^{-19} C = 1.6022 x 10^{-4} fC
921  // float m_fCperElectron = 1.6022e-4; // multiply # of electrons by this number to get fC
922 
923 
924  float kiloele = 1.0e-3; // multiply # of electrons by this number to get kiloElectrons (1 ke = 1 ADC)
925 
926  // Assume 1000 e = 1 ADC for now = 1000 x 1.6022 x 10^{-4} fC = 0.16022 fC
927  // convert qmax, qleft, qright into ADC
928  float QmaxADC = qmax * kiloele;
929  float QsumADC = qsum * kiloele;
930 
931  // check if signal or noise
932  // QmaxADC > m_qmaxADCCut is signal
933  bool signal = QmaxADC > m_qmaxADCCut;
934 
935  // fill signal/noise histograms
936  if(signal) {
937 
938  // increment signal-cluster counter
939  sigclusCount[ns][nl]++;
940 
941  for(unsigned int j =0; j < fStripIDs.size(); j++)
942  m_h2csc_clus_hitmap_signal->Fill(fStripIDs[j], secLayer);
943  if(measuresPhi) {
944  m_h2csc_clus_phicluswidth_signal->Fill(noStrips,secLayer);
945  } else {
946  m_h2csc_clus_etacluswidth_signal->Fill(noStrips,secLayer);
947  }
948 
949  // Fill layer occupancy
950  if(stationEta == 1) {
951  m_h1csc_clus_occupancy_signal_EA->Fill(secLayer);
952  } else {
953  m_h1csc_clus_occupancy_signal_EC->Fill(secLayer);
954  }
955  } else {
956  for(unsigned int j =0; j < fStripIDs.size(); j++)
957  m_h2csc_clus_hitmap_noise->Fill(fStripIDs[j], secLayer);
958  if(measuresPhi) {
959  m_h2csc_clus_phicluswidth_noise->Fill(noStrips,secLayer);
960  } else {
961  m_h2csc_clus_etacluswidth_noise->Fill(noStrips,secLayer);
962  }
963  }
964 
965  m_h2csc_clus_qmax->Fill(QmaxADC, secLayer);
966  if(signal) {
967  m_h2csc_clus_qmax_signal->Fill(QmaxADC, secLayer);
968  if(stationEta == 1) {
969  m_h2csc_clus_qmax_signal_EA->Fill(QmaxADC, secLayer);
970  m_h1csc_clus_qmax_signal_EA_count->Fill(QmaxADC);
971  } else {
972  m_h2csc_clus_qmax_signal_EC->Fill(QmaxADC, secLayer);
973  m_h1csc_clus_qmax_signal_EC_count->Fill(QmaxADC);
974  }
975  } else {
976  m_h2csc_clus_qmax_noise->Fill(QmaxADC, secLayer);
977  }
978 
979  m_h2csc_clus_qsum->Fill(QsumADC, secLayer);
980  if(signal) {
981  m_h2csc_clus_qsum_signal->Fill(QsumADC, secLayer);
982  if(stationEta == 1) {
983  m_h2csc_clus_qsum_signal_EA->Fill(QsumADC, secLayer);
984  m_h1csc_clus_qsum_signal_EA_count->Fill(QsumADC);
985  } else {
986  m_h2csc_clus_qsum_signal_EC->Fill(QsumADC, secLayer);
987  m_h1csc_clus_qsum_signal_EC_count->Fill(QsumADC);
988  }
989  } else {
990  m_h2csc_clus_qsum_noise->Fill(QsumADC, secLayer);
991  }
992 
993  if(measuresPhi) {
994  m_h1csc_clus_transverse_time->Fill(clu_time);
995  m_h1csc_clus_transverse_charge->Fill(clu_charge*kiloele);
996  if(signal) {
997  m_h1csc_clus_transverse_time_signal->Fill(clu_time);
998  m_h1csc_clus_transverse_charge_signal->Fill(clu_charge*kiloele);
999  } else {
1000  m_h1csc_clus_transverse_time_noise->Fill(clu_time);
1001  m_h1csc_clus_transverse_charge_noise->Fill(clu_charge*kiloele);
1002  }
1003  } else {
1004  m_h1csc_clus_precision_time->Fill(clu_time);
1005  m_h1csc_clus_precision_charge->Fill(clu_charge*kiloele);
1006  if(signal) {
1007  m_h1csc_clus_precision_time_signal->Fill(clu_time);
1008  if(stationEta == 1) m_h1csc_clus_precision_time_signal_EA->Fill(clu_time);
1009  else m_h1csc_clus_precision_time_signal_EC->Fill(clu_time);
1010  m_h1csc_clus_precision_charge_signal->Fill(clu_charge*kiloele);
1011  } else {
1012  m_h1csc_clus_precision_time_noise->Fill(clu_time);
1013  m_h1csc_clus_precision_charge_noise->Fill(clu_charge*kiloele);
1014  }
1015  }
1016 
1017  ATH_MSG_DEBUG ( " End of strip fits " );
1018  } // if found_id
1019 
1020 
1021  } // end if cluster_status
1022 
1023  //filling total cluster width histograms
1026 
1027  } // end for loop over prep-data collection
1028  ATH_MSG_DEBUG ( " End loop over clusters ============================");
1029 
1030  m_h2csc_clus_eta_vs_phi_cluswidth->Fill(nPhiClusWidthCnt,nEtaClusWidthCnt);
1031 
1032  // Fill cluster counts
1033  int numeta = 0, numphi = 0;
1034  int numetasignal = 0, numphisignal = 0;
1035  //loop over chambers
1036  for(int kl = 1; kl < 33; kl++ ) {
1037 
1038  // loop over layers
1039  int eta_hits[4] = {0,0,0,0};
1040  bool chamber_empty = true;
1041  int sec = kl < 17 ? kl*(-1) : kl; // [1->16](-side) [17-32] (+side)
1042  for(int km = 1; km < 9; km++ ) {
1043  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)
1044  bool mphi = (km > 0 && km < 5) ? true : false; // 1,2,3,4 (phi-layers) 5,6,7,8 (eta-layers)
1045  std::string wlay = mphi ? "Phi-Layer " : "Eta-Layer: ";
1046  int count = clusCount[kl][km];
1047  int scount = sigclusCount[kl][km];
1048 
1049  if(count) {
1050  float secLayer = sec + 0.2 * (lay - 1) + 0.1;
1051 
1052  ATH_MSG_DEBUG ("sec[" << sec << "]\t" << wlay << "[" << lay << "] = " <<
1053  secLayer << "= " << "\tNsig = " << scount << ", Ntot = " << count);
1054 
1055  if(mphi) {
1056  m_h2csc_clus_phicluscount->Fill(count,secLayer); // all phi-cluster counts
1057  numphi += count;
1058  if(scount) {
1059  chamber_empty = false;
1060  numphisignal += scount;
1061  m_h2csc_clus_phicluscount_signal->Fill(scount,secLayer); // signal phi-cluster count
1062  } else {
1063  m_h2csc_clus_phicluscount_noise->Fill((count-scount),secLayer); // noise phi-cluster count
1064  }
1065  } else {
1066  m_h2csc_clus_etacluscount->Fill(count,secLayer);
1067  numeta += count;
1068  if(scount) {
1069  eta_hits[lay-1]++;
1070  chamber_empty = false;
1071  numetasignal += scount;
1072  m_h2csc_clus_etacluscount_signal->Fill(scount,secLayer); // signal eta-cluster count
1073  } else {
1074  m_h2csc_clus_etacluscount_noise->Fill((count-scount),secLayer); // noise eta-cluster count
1075  }
1076  }
1077  ATH_MSG_DEBUG ( wlay << "Counts sec: [" << kl-16 << "]\tlayer: [" << km << "] = " <<
1078  secLayer << "\t = " << count << "\t" << scount);
1079  }
1080  } // end loop over layers
1081 
1082  if(!chamber_empty) {
1083  std::ostringstream nseglist;
1084  std::bitset<4> segNum;
1085  for(unsigned int mm = 0; mm < 4; mm++) {
1086  bool set = (eta_hits[mm] > 0 ? true : false);
1087  if(set) segNum.set(mm);
1088  nseglist << (set ? "1" : "0");
1089  }
1090  m_h2csc_clus_segmap_signal->Fill(segNum.to_ulong(), float(sec+0.3));
1091  ATH_MSG_DEBUG("segments= " << nseglist.str() << "\t = " << segNum.to_ulong());
1092  } else {
1093  m_h2csc_clus_segmap_signal->Fill(-999., float(sec+0.3));
1094  }
1095 
1096  } // end loop over chambers
1097 
1098  ATH_MSG_DEBUG(" numphi = " << numphi << "\t numeta = " << numeta << "\tm_sphi = "
1099  << numphisignal << "\t m_seta = " << numetasignal);
1100 
1101  m_h1csc_clus_count->Fill(numphi+numeta);
1102  m_h1csc_clus_count_signal->Fill(numphisignal+numetasignal);
1103  m_h1csc_clus_count_noise->Fill((numphi-numphisignal)+(numeta-numetasignal));
1104 
1105  m_h2csc_clus_eta_vs_phi_cluscount->Fill(numphi,numeta);
1106  m_h2csc_clus_eta_vs_phi_cluscount_signal->Fill(numphisignal,numetasignal);
1107  m_h2csc_clus_eta_vs_phi_cluscount_noise->Fill(numphi-numphisignal, numeta-numetasignal);
1108 
1109  } // end for loop over prep-data container
1110 
1111  ATH_MSG_DEBUG ( " END EVENT ============================");
1112 }
1113 
1114 //
1115 // evtSelTriggersPassed ----------------------------------------------------------------
1116 //
1118 
1119  if(!m_doEvtSel) return true;
1120  std::vector<std::string>::const_iterator
1121  it = m_sampSelTriggers.begin(), itE = m_sampSelTriggers.end();
1122  for ( ; it != itE; ++it ) {
1123  if (m_trigDec->isPassed(*it, TrigDefs::eventAccepted)) {
1124  return true;
1125  }
1126  }
1127  return false;
1128 
1129 } // end evtSelTriggersPassed
calibdata.scount
int scount
Definition: calibdata.py:355
xAOD::iterator
JetConstituentVector::iterator iterator
Definition: JetConstituentVector.cxx:68
CscClusterValAlg::m_h2csc_clus_qmax_signal_EC
TH2F * m_h2csc_clus_qmax_signal_EC
Definition: CscClusterValAlg.h:112
CscClusterValAlg::FillCSCClusters
void FillCSCClusters(const Muon::CscPrepDataContainer *cols, const Muon::CscStripPrepDataContainer *strips)
Definition: CscClusterValAlg.cxx:691
beamspotman.r
def r
Definition: beamspotman.py:676
CscClusterValAlg::m_h2csc_clus_etacluscount_signal
TH2F * m_h2csc_clus_etacluscount_signal
Definition: CscClusterValAlg.h:157
CscClusterValAlg::m_h1csc_clus_transverse_time
TH1F * m_h1csc_clus_transverse_time
Definition: CscClusterValAlg.h:136
Muon::nsw::STGTPSegments::moduleIDBits::stationPhi
constexpr uint8_t stationPhi
station Phi 1 to 8
Definition: NSWSTGTPDecodeBitmaps.h:129
Muon::MuonPrepDataContainer
Template for Muon PRD containers (which are basically collections of MuonPrepDataCollections).
Definition: MuonPrepDataContainer.h:42
DataModel_detail::const_iterator
Const iterator class for DataVector/DataList.
Definition: DVLIterator.h:82
CscClusterValAlg::m_doEvtSel
bool m_doEvtSel
Definition: CscClusterValAlg.h:88
CscClusterValAlg::fillHistograms
virtual StatusCode fillHistograms()
An inheriting class should either override this function or fillHists().
Definition: CscClusterValAlg.cxx:670
CscClusterValAlg::m_cscclus_oviewEC
MonGroup * m_cscclus_oviewEC
Definition: CscClusterValAlg.h:198
CscClusterValAlg::m_cscClusOviewEA
std::vector< TH1 * > m_cscClusOviewEA
Definition: CscClusterValAlg.h:202
CscClusterValAlg::m_h1csc_clus_occupancy_signal_EC
TH1F * m_h1csc_clus_occupancy_signal_EC
Definition: CscClusterValAlg.h:102
CscClusterValAlg::m_cscClusExpert
std::vector< TH1 * > m_cscClusExpert
Definition: CscClusterValAlg.h:200
ATH_MSG_INFO
#define ATH_MSG_INFO(x)
Definition: AthMsgStreamMacros.h:31
SG::ReadHandle::cptr
const_pointer_type cptr()
Dereference the pointer.
CscClusterValAlg::m_h1csc_clus_qsum_signal_EA_lfitmean
TH1F * m_h1csc_clus_qsum_signal_EA_lfitmean
Definition: CscClusterValAlg.h:122
CaloCellPos2Ntuple.int
int
Definition: CaloCellPos2Ntuple.py:24
CscClusterValAlg::bookHistograms
virtual StatusCode bookHistograms()
An inheriting class should either override this function or bookHists().
Definition: CscClusterValAlg.cxx:605
CscClusterValAlg::m_h1csc_clus_precision_time_signal_EC
TH1F * m_h1csc_clus_precision_time_signal_EC
Definition: CscClusterValAlg.h:133
Muon::CscPrepData::charge
int charge() const
Returns the charge.
Definition: CscPrepData.h:153
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
CscClusterValAlg::m_h2csc_clus_segmap_signal
TH2F * m_h2csc_clus_segmap_signal
Definition: CscClusterValAlg.h:94
CscClusterValAlg::evtSelTriggersPassed
bool evtSelTriggersPassed()
Definition: CscClusterValAlg.cxx:1117
SG::ReadHandle
Definition: StoreGate/StoreGate/ReadHandle.h:70
CscClusterValAlg::m_h2csc_clus_eta_vs_phi_charge
TH2F * m_h2csc_clus_eta_vs_phi_charge
Definition: CscClusterValAlg.h:183
AthCommonDataStore< AthCommonMsg< AlgTool > >::declareProperty
Gaudi::Details::PropertyBase & declareProperty(Gaudi::Property< T > &t)
Definition: AthCommonDataStore.h:145
CscClusterValAlg::m_h2csc_clus_eta_vs_phi_cluscount
TH2F * m_h2csc_clus_eta_vs_phi_cluscount
Definition: CscClusterValAlg.h:188
CscClusterValAlg::m_h1csc_clus_precision_charge_noise
TH1F * m_h1csc_clus_precision_charge_noise
Definition: CscClusterValAlg.h:142
CscClusterValAlg::m_h2csc_clus_r_vs_z_hitmap
TH2F * m_h2csc_clus_r_vs_z_hitmap
Definition: CscClusterValAlg.h:97
CscClusterValAlg::m_h1csc_clus_precision_charge
TH1F * m_h1csc_clus_precision_charge
Definition: CscClusterValAlg.h:141
skel.it
it
Definition: skel.GENtoEVGEN.py:423
CscClusterValAlg::m_h1csc_clus_qsum_signal_EC_count
TH1F * m_h1csc_clus_qsum_signal_EC_count
Definition: CscClusterValAlg.h:125
IdentifiableContainerMT::size
size_t size() const
Duplicate of fullSize for backwards compatability.
Definition: IdentifiableContainerMT.h:209
CscClusterValAlg::m_h2csc_clus_hitmap_noise
TH2F * m_h2csc_clus_hitmap_noise
Definition: CscClusterValAlg.h:92
CscStripPrepDataCollection.h
CscClusterValAlg::m_h1csc_clus_count_signal
TH1F * m_h1csc_clus_count_signal
Definition: CscClusterValAlg.h:161
Trk::PrepRawData::rdoList
const std::vector< Identifier > & rdoList() const
return the List of rdo identifiers (pointers)
CscClusterValAlg::stripsSum_EAtest
float stripsSum_EAtest
Definition: CscClusterValAlg.h:50
CscClusterValAlg.h
CscClusterValAlg::stripsSum_ECtest
float stripsSum_ECtest
Definition: CscClusterValAlg.h:52
CscClusterValAlg::m_h1csc_clus_precision_charge_signal
TH1F * m_h1csc_clus_precision_charge_signal
Definition: CscClusterValAlg.h:143
CscClusterValAlg::m_qmaxADCCut
unsigned int m_qmaxADCCut
Definition: CscClusterValAlg.h:72
Muon
This class provides conversion from CSC RDO data to CSC Digits.
Definition: TrackSystemController.h:49
CscClusterValAlg::m_h1csc_clus_count
TH1F * m_h1csc_clus_count
Definition: CscClusterValAlg.h:160
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
CscClusterValAlg::m_h1csc_clus_transverse_charge_signal
TH1F * m_h1csc_clus_transverse_charge_signal
Definition: CscClusterValAlg.h:148
x
#define x
CscClusterValAlg::m_cscClusOviewEC
std::vector< TH1 * > m_cscClusOviewEC
Definition: CscClusterValAlg.h:203
CscClusterValAlg::m_h2csc_clus_phicluswidth_noise
TH2F * m_h2csc_clus_phicluswidth_noise
Definition: CscClusterValAlg.h:174
CscClusterValAlg::~CscClusterValAlg
~CscClusterValAlg()
Definition: CscClusterValAlg.cxx:94
CscClusterValAlg::m_h2csc_clus_qsum_signal_EC
TH2F * m_h2csc_clus_qsum_signal_EC
Definition: CscClusterValAlg.h:124
CscClusterValAlg::m_h1csc_clus_count_perlayer
TH1F * m_h1csc_clus_count_perlayer
Definition: CscClusterValAlg.h:164
CscClusterValAlg::m_h2csc_clus_qmax_signal
TH2F * m_h2csc_clus_qmax_signal
Definition: CscClusterValAlg.h:107
CscClusterValAlg::initialize
StatusCode initialize()
Definition: CscClusterValAlg.cxx:110
XMLtoHeader.count
count
Definition: XMLtoHeader.py:85
CscClusterValAlg::m_cscClusterPath
std::string m_cscClusterPath
Definition: CscClusterValAlg.h:71
atlasStyleMacro.icol
int icol
Definition: atlasStyleMacro.py:13
CscClusterValAlg::CscClusterValAlg
CscClusterValAlg(const std::string &type, const std::string &name, const IInterface *parent)
Definition: CscClusterValAlg.cxx:66
TruthTest.itE
itE
Definition: TruthTest.py:25
CscClusterValAlg::m_h2csc_clus_etacluswidth_signal
TH2F * m_h2csc_clus_etacluswidth_signal
Definition: CscClusterValAlg.h:168
CscClusterValAlg::m_h2csc_clus_eta_vs_phi_hitmap
TH2F * m_h2csc_clus_eta_vs_phi_hitmap
Definition: CscClusterValAlg.h:96
AthenaPoolTestRead.sc
sc
Definition: AthenaPoolTestRead.py:27
CscClusterValAlg::m_h1csc_clus_totalWidth_EA
TH1F * m_h1csc_clus_totalWidth_EA
Definition: CscClusterValAlg.h:177
CscClusterValAlg::m_h2csc_clus_eta_vs_phi_charge_noise
TH2F * m_h2csc_clus_eta_vs_phi_charge_noise
Definition: CscClusterValAlg.h:184
CscClusterValAlg::m_h2csc_clus_y_vs_x_hitmap
TH2F * m_h2csc_clus_y_vs_x_hitmap
Definition: CscClusterValAlg.h:98
TRT::Hit::side
@ side
Definition: HitInfo.h:83
CscClusterValAlg::m_h2csc_clus_qsum_noise
TH2F * m_h2csc_clus_qsum_noise
Definition: CscClusterValAlg.h:117
ManagedMonitorToolBase::MonGroup
A container of information describing a monitoring object.
Definition: ManagedMonitorToolBase.h:138
CscClusterValAlg::m_h1csc_clus_qsum_signal_EC_lfitmean
TH1F * m_h1csc_clus_qsum_signal_EC_lfitmean
Definition: CscClusterValAlg.h:126
beamspotnt.cols
list cols
Definition: bin/beamspotnt.py:1114
keylayer_zslicemap.kl
kl
Definition: keylayer_zslicemap.py:109
Muon::toString
std::string toString(CscStripStatus cstat)
Return a string description of a CSC cluster status flag.
Definition: CscStripStatus.h:48
Muon::MuonPrepDataCollection::identifyHash
virtual IdentifierHash identifyHash() const override final
ATH_MSG_ERROR
#define ATH_MSG_ERROR(x)
Definition: AthMsgStreamMacros.h:33
CscClusterValAlg::m_h1csc_clus_qmax_signal_EA_count
TH1F * m_h1csc_clus_qmax_signal_EA_count
Definition: CscClusterValAlg.h:110
CscClusterValAlg::m_h2csc_clus_eta_vs_phi_cluswidth_signal
TH2F * m_h2csc_clus_eta_vs_phi_cluswidth_signal
Definition: CscClusterValAlg.h:194
CscClusterValAlg::m_h1csc_clus_qsum_signal_EA_count
TH1F * m_h1csc_clus_qsum_signal_EA_count
Definition: CscClusterValAlg.h:121
ManagedMonitorToolBase::initialize
virtual StatusCode initialize()
Definition: ManagedMonitorToolBase.cxx:669
lumiFormat.i
int i
Definition: lumiFormat.py:92
z
#define z
CscClusterValAlg::m_h2csc_clus_eta_vs_phi_cluswidth
TH2F * m_h2csc_clus_eta_vs_phi_cluswidth
Definition: CscClusterValAlg.h:193
h
CscClusterValAlg::m_h1csc_clus_precision_time_noise
TH1F * m_h1csc_clus_precision_time_noise
Definition: CscClusterValAlg.h:130
Muon::CscPrepData
Class representing clusters from the CSC.
Definition: CscPrepData.h:39
CscClusterValAlg::bookClusterHistograms
void bookClusterHistograms()
Definition: CscClusterValAlg.cxx:268
EL::StatusCode
::StatusCode StatusCode
StatusCode definition for legacy code.
Definition: PhysicsAnalysis/D3PDTools/EventLoop/EventLoop/StatusCode.h:22
CscClusterValAlg::m_h2csc_clus_qsum_signal
TH2F * m_h2csc_clus_qsum_signal
Definition: CscClusterValAlg.h:118
ATH_MSG_DEBUG
#define ATH_MSG_DEBUG(x)
Definition: AthMsgStreamMacros.h:29
CscClusterValAlg::m_h1csc_clus_occupancy_signal_EA
TH1F * m_h1csc_clus_occupancy_signal_EA
Definition: CscClusterValAlg.h:101
CscClusterValAlg::m_h1csc_clus_transverse_charge_noise
TH1F * m_h1csc_clus_transverse_charge_noise
Definition: CscClusterValAlg.h:147
CscClusterValAlg::m_h2csc_clus_qsum
TH2F * m_h2csc_clus_qsum
Definition: CscClusterValAlg.h:116
Muon::CscPrepData::globalPosition
virtual const Amg::Vector3D & globalPosition() const override final
Returns the global position.
Definition: CscPrepData.h:174
Muon::CscPrepData::status
CscClusterStatus status() const
Returns the Csc status (position measurement) flag.
Definition: CscPrepData.h:163
CscBins
Definition: CscClusterValAlg.cxx:31
res
std::pair< std::vector< unsigned int >, bool > res
Definition: JetGroupProductTest.cxx:14
CscClusterValAlg::m_h2csc_clus_phicluswidth_signal
TH2F * m_h2csc_clus_phicluswidth_signal
Definition: CscClusterValAlg.h:173
test_pyathena.parent
parent
Definition: test_pyathena.py:15
CscClusterValAlg::m_idHelperSvc
ServiceHandle< Muon::IMuonIdHelperSvc > m_idHelperSvc
Definition: CscClusterValAlg.h:74
CscClusterValAlg::m_h2csc_clus_eta_vs_phi_cluscount_signal
TH2F * m_h2csc_clus_eta_vs_phi_cluscount_signal
Definition: CscClusterValAlg.h:190
CscClusterValAlg::initHistograms
void initHistograms()
Definition: CscClusterValAlg.cxx:150
ATH_CHECK
#define ATH_CHECK
Definition: AthCheckMacros.h:40
Muon::CscPrepData::time
double time() const
Returns the time.
Definition: CscPrepData.h:158
run
Definition: run.py:1
ManagedMonitorToolBase::ATTRIB_MANAGED
@ ATTRIB_MANAGED
Definition: ManagedMonitorToolBase.h:131
IdentifiableContainerMT::const_iterator
Definition: IdentifiableContainerMT.h:82
CscClusterValAlg::m_h2csc_clus_qmax
TH2F * m_h2csc_clus_qmax
Definition: CscClusterValAlg.h:105
CscClusterValAlg::m_cscGenPath
std::string m_cscGenPath
Definition: CscClusterValAlg.h:71
CscClusterValAlg::m_h2csc_clus_phicluscount_noise
TH2F * m_h2csc_clus_phicluscount_noise
Definition: CscClusterValAlg.h:153
Muon::MuonPrepDataCollection
Template to hold collections of MuonPrepRawData objects.
Definition: MuonPrepDataCollection.h:46
CscClusterValAlg::m_h2csc_clus_phicluscount
TH2F * m_h2csc_clus_phicluscount
Definition: CscClusterValAlg.h:151
beamspotman.stat
stat
Definition: beamspotman.py:266
CscClusterValAlg::m_h1csc_clus_count_noise
TH1F * m_h1csc_clus_count_noise
Definition: CscClusterValAlg.h:162
CscClusterStatus.h
CscClusterValAlg::m_h1csc_clus_transverse_time_noise
TH1F * m_h1csc_clus_transverse_time_noise
Definition: CscClusterValAlg.h:137
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
CscClusterValAlg::m_h2csc_clus_phicluswidth
TH2F * m_h2csc_clus_phicluswidth
Definition: CscClusterValAlg.h:172
CxxUtils::set
constexpr std::enable_if_t< is_bitmask_v< E >, E & > set(E &lhs, E rhs)
Convenience function to set bits in a class enum bitmask.
Definition: bitmask.h:224
CscClusterValAlg::m_h2csc_clus_etacluswidth_noise
TH2F * m_h2csc_clus_etacluswidth_noise
Definition: CscClusterValAlg.h:169
CscClusterValAlg::m_h2csc_clus_etacluswidth
TH2F * m_h2csc_clus_etacluswidth
Definition: CscClusterValAlg.h:167
Trk::PrepRawData::identify
Identifier identify() const
return the identifier
CscClusterValAlg::stripsSum_EC
float stripsSum_EC
Definition: CscClusterValAlg.h:51
CscClusterValAlg::m_h1csc_clus_transverse_charge
TH1F * m_h1csc_clus_transverse_charge
Definition: CscClusterValAlg.h:146
CscClusterValAlg::m_cscClusShift
std::vector< TH1 * > m_cscClusShift
Definition: CscClusterValAlg.h:201
Cut::signal
@ signal
Definition: SUSYToolsAlg.cxx:64
id
SG::auxid_t id
Definition: Control/AthContainers/Root/debug.cxx:194
CscClusterValAlg::m_sampSelTriggers
std::vector< std::string > m_sampSelTriggers
Definition: CscClusterValAlg.h:87
CscClusterValAlg::m_h2csc_clus_eta_vs_phi_cluscount_noise
TH2F * m_h2csc_clus_eta_vs_phi_cluscount_noise
Definition: CscClusterValAlg.h:189
name
std::string name
Definition: Control/AthContainers/Root/debug.cxx:195
CscClusterValAlg::m_h2csc_clus_hitmap_signal
TH2F * m_h2csc_clus_hitmap_signal
Definition: CscClusterValAlg.h:93
CscClusterValAlg::m_cscclus_oviewEA
MonGroup * m_cscclus_oviewEA
Definition: CscClusterValAlg.h:198
charge
double charge(const T &p)
Definition: AtlasPID.h:494
CscClusterValAlg::m_h2csc_clus_eta_vs_phi_cluswidth_noise
TH2F * m_h2csc_clus_eta_vs_phi_cluswidth_noise
Definition: CscClusterValAlg.h:195
CscClusterValAlg::m_h1csc_clus_qmax_signal_EC_count
TH1F * m_h1csc_clus_qmax_signal_EC_count
Definition: CscClusterValAlg.h:113
CscClusterValAlg::m_h1csc_clus_precision_time
TH1F * m_h1csc_clus_precision_time
Definition: CscClusterValAlg.h:129
createDCubeHistograms.cscStrip
cscStrip
Definition: createDCubeHistograms.py:88
CscClusterValAlg::stripsSum_EA
float stripsSum_EA
Definition: CscClusterValAlg.h:49
CscBins::BinLabels
void BinLabels(TH1 *h, int side)
Definition: CscClusterValAlg.cxx:32
DataVector::end
const_iterator end() const noexcept
Return a const_iterator pointing past the end of the collection.
python.SystemOfUnits.mm
int mm
Definition: SystemOfUnits.py:83
IdentifiableContainerMT::indexFindPtr
virtual const T * indexFindPtr(IdentifierHash hashId) const override final
return pointer on the found entry or null if out of range using hashed index - fast version,...
Definition: IdentifiableContainerMT.h:292
CscClusterValAlg::m_h2csc_clus_phicluscount_signal
TH2F * m_h2csc_clus_phicluscount_signal
Definition: CscClusterValAlg.h:152
CscClusterValAlg::m_cscClusterKey
SG::ReadHandleKey< Muon::CscPrepDataContainer > m_cscClusterKey
Definition: CscClusterValAlg.h:69
y
#define y
Base_Fragment.width
width
Definition: Sherpa_i/share/common/Base_Fragment.py:59
CaloSwCorrections.time
def time(flags, cells_name, *args, **kw)
Definition: CaloSwCorrections.py:242
CscClusterValAlg::m_h2csc_clus_qmax_noise
TH2F * m_h2csc_clus_qmax_noise
Definition: CscClusterValAlg.h:106
CscClusterValAlg::m_h1csc_clus_transverse_time_signal
TH1F * m_h1csc_clus_transverse_time_signal
Definition: CscClusterValAlg.h:138
ATH_MSG_WARNING
#define ATH_MSG_WARNING(x)
Definition: AthMsgStreamMacros.h:32
CscClusterValAlg::m_cscCalibTool
ToolHandle< ICscCalibTool > m_cscCalibTool
TDT handle.
Definition: CscClusterValAlg.h:80
python.CaloScaleNoiseConfig.type
type
Definition: CaloScaleNoiseConfig.py:78
CscClusterValAlg::m_h2csc_clus_eta_vs_phi_charge_signal
TH2F * m_h2csc_clus_eta_vs_phi_charge_signal
Definition: CscClusterValAlg.h:185
CscClusterValAlg::m_h2csc_clus_qsum_signal_EA
TH2F * m_h2csc_clus_qsum_signal_EA
Definition: CscClusterValAlg.h:120
CscClusterValAlg::m_trigDec
ToolHandle< Trig::TrigDecisionTool > m_trigDec
Definition: CscClusterValAlg.h:83
python.SystemOfUnits.ns
int ns
Definition: SystemOfUnits.py:130
CscClusterValAlg::m_h2csc_clus_etacluscount
TH2F * m_h2csc_clus_etacluscount
Definition: CscClusterValAlg.h:156
merge.status
status
Definition: merge.py:17
python.TrigEgammaMonitorHelper.TH1F
def TH1F(name, title, nxbins, bins_par2, bins_par3=None, path='', **kwargs)
Definition: TrigEgammaMonitorHelper.py:24
CscClusterValAlg::m_stripFitter
ToolHandle< ICscStripFitter > m_stripFitter
Definition: CscClusterValAlg.h:77
Muon::nsw::STGTPSegments::moduleIDBits::stationEta
constexpr uint8_t stationEta
1 to 3
Definition: NSWSTGTPDecodeBitmaps.h:127
CscClusterValAlg::m_cscPRDKey
SG::ReadHandleKey< Muon::CscStripPrepDataContainer > m_cscPRDKey
Definition: CscClusterValAlg.h:70
CscClusterValAlg::m_h2csc_clus_hitmap
TH2F * m_h2csc_clus_hitmap
Definition: CscClusterValAlg.h:91
CscClusterValAlg::m_h1csc_clus_totalWidth_EC
TH1F * m_h1csc_clus_totalWidth_EC
Definition: CscClusterValAlg.h:178
python.SystemOfUnits.km
int km
Definition: SystemOfUnits.py:95
readCCLHist.float
float
Definition: readCCLHist.py:83
CscClusterValAlg::m_h2csc_clus_etacluscount_noise
TH2F * m_h2csc_clus_etacluscount_noise
Definition: CscClusterValAlg.h:158
DataVector::begin
const_iterator begin() const noexcept
Return a const_iterator pointing at the beginning of the collection.
CscClusterValAlg::m_h2csc_clus_qmax_signal_EA
TH2F * m_h2csc_clus_qmax_signal_EA
Definition: CscClusterValAlg.h:109
CscClusterValAlg::m_h1csc_clus_precision_time_signal
TH1F * m_h1csc_clus_precision_time_signal
Definition: CscClusterValAlg.h:131
CscClusterValAlg::m_h1csc_clus_precision_time_signal_EA
TH1F * m_h1csc_clus_precision_time_signal_EA
Definition: CscClusterValAlg.h:132