CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
SiStripMonitorCluster.cc
Go to the documentation of this file.
1 // -*- C++ -*-
2 // Package: SiStripMonitorCluster
3 // Class: SiStripMonitorCluster
6 // Original Author: Dorian Kcira
7 // Created: Wed Feb 1 16:42:34 CET 2006
8 #include <vector>
9 #include <numeric>
10 #include <fstream>
11 #include <math.h>
12 #include "TNamed.h"
15 
33 
36 
39 
40 #include "TMath.h"
41 #include <iostream>
42 
43 //--------------------------------------------------------------------------------------------
45  : conf_(iConfig), show_mechanical_structure_view(true), show_readout_view(false), show_control_view(false), select_all_detectors(false), reset_each_run(false), m_cacheID_(0)
46  // , genTriggerEventFlag_(new GenericTriggerEventFlag(iConfig, consumesCollector()))
47 {
48 
49  // initialize
50  passBPTXfilter_ = true;
51 
52  // initialize GenericTriggerEventFlag by specific configuration
53  // in this way, one can set specific selections for different MEs
57 
58  firstEvent = -1;
59  eventNb = 0;
60 
61  // Detector Partitions
62  SubDetPhasePartMap["TIB"] = "TI";
63  SubDetPhasePartMap["TID__MINUS"] = "TI";
64  SubDetPhasePartMap["TID__PLUS"] = "TI";
65  SubDetPhasePartMap["TOB"] = "TO";
66  SubDetPhasePartMap["TEC__MINUS"] = "TM";
67  SubDetPhasePartMap["TEC__PLUS"] = "TP";
68 
69  //get on/off option for every cluster from cfi
70  edm::ParameterSet ParametersnClusters = conf_.getParameter<edm::ParameterSet>("TH1nClusters");
71  layerswitchncluson = ParametersnClusters.getParameter<bool>("layerswitchon");
72  moduleswitchncluson = ParametersnClusters.getParameter<bool>("moduleswitchon");
73 
74  edm::ParameterSet ParametersClusterCharge = conf_.getParameter<edm::ParameterSet>("TH1ClusterCharge");
75  layerswitchcluschargeon = ParametersClusterCharge.getParameter<bool>("layerswitchon");
76  moduleswitchcluschargeon = ParametersClusterCharge.getParameter<bool>("moduleswitchon");
77  subdetswitchcluschargeon = ParametersClusterCharge.getParameter<bool>("subdetswitchon");
78 
79  edm::ParameterSet ParametersClusterStoN = conf_.getParameter<edm::ParameterSet>("TH1ClusterStoN");
80  layerswitchclusstonon = ParametersClusterStoN.getParameter<bool>("layerswitchon");
81  moduleswitchclusstonon = ParametersClusterStoN.getParameter<bool>("moduleswitchon");
82 
83  edm::ParameterSet ParametersClusterStoNVsPos = conf_.getParameter<edm::ParameterSet>("TH1ClusterStoNVsPos");
84  layerswitchclusstonVsposon = ParametersClusterStoNVsPos.getParameter<bool>("layerswitchon");
85  moduleswitchclusstonVsposon = ParametersClusterStoNVsPos.getParameter<bool>("moduleswitchon");
86 
87  edm::ParameterSet ParametersClusterPos = conf_.getParameter<edm::ParameterSet>("TH1ClusterPos");
88  layerswitchclusposon = ParametersClusterPos.getParameter<bool>("layerswitchon");
89  moduleswitchclusposon = ParametersClusterPos.getParameter<bool>("moduleswitchon");
90 
91  edm::ParameterSet ParametersClusterDigiPos = conf_.getParameter<edm::ParameterSet>("TH1ClusterDigiPos");
92  layerswitchclusdigiposon = ParametersClusterDigiPos.getParameter<bool>("layerswitchon");
93  moduleswitchclusdigiposon = ParametersClusterDigiPos.getParameter<bool>("moduleswitchon");
94 
95  edm::ParameterSet ParametersClusterNoise = conf_.getParameter<edm::ParameterSet>("TH1ClusterNoise");
96  layerswitchclusnoiseon = ParametersClusterNoise.getParameter<bool>("layerswitchon");
97  moduleswitchclusnoiseon = ParametersClusterNoise.getParameter<bool>("moduleswitchon");
98 
99  edm::ParameterSet ParametersClusterWidth = conf_.getParameter<edm::ParameterSet>("TH1ClusterWidth");
100  layerswitchcluswidthon = ParametersClusterWidth.getParameter<bool>("layerswitchon");
101  moduleswitchcluswidthon = ParametersClusterWidth.getParameter<bool>("moduleswitchon");
102  subdetswitchcluswidthon = ParametersClusterWidth.getParameter<bool>("subdetswitchon");
103 
104  edm::ParameterSet ParametersModuleLocalOccupancy = conf_.getParameter<edm::ParameterSet>("TH1ModuleLocalOccupancy");
105  layerswitchlocaloccupancy = ParametersModuleLocalOccupancy.getParameter<bool>("layerswitchon");
106  moduleswitchlocaloccupancy = ParametersModuleLocalOccupancy.getParameter<bool>("moduleswitchon");
107 
108  edm::ParameterSet ParametersNrOfClusterizedStrips = conf_.getParameter<edm::ParameterSet>("TH1NrOfClusterizedStrips");
109  layerswitchnrclusterizedstrip = ParametersNrOfClusterizedStrips.getParameter<bool>("layerswitchon");
110  moduleswitchnrclusterizedstrip = ParametersNrOfClusterizedStrips.getParameter<bool>("moduleswitchon");
111 
112  edm::ParameterSet ParametersClusterProf = conf_.getParameter<edm::ParameterSet>("TProfNumberOfCluster");
113  layerswitchnumclusterprofon = ParametersClusterProf.getParameter<bool>("layerswitchon");
114 
115  edm::ParameterSet ParametersClusterWidthProf = conf_.getParameter<edm::ParameterSet>("TProfClusterWidth");
116  layerswitchclusterwidthprofon = ParametersClusterWidthProf.getParameter<bool>("layerswitchon");
117 
118  edm::ParameterSet ParametersTotClusterProf = conf_.getParameter<edm::ParameterSet>("TProfTotalNumberOfClusters");
119  subdetswitchtotclusprofon = ParametersTotClusterProf.getParameter<bool>("subdetswitchon");
120 
121  edm::ParameterSet ParametersTotClusterTH1 = conf_.getParameter<edm::ParameterSet>("TH1TotalNumberOfClusters");
122  subdetswitchtotclusth1on = ParametersTotClusterTH1.getParameter<bool>("subdetswitchon");
123 
124  edm::ParameterSet ParametersClusterApvProf = conf_.getParameter<edm::ParameterSet>("TProfClustersApvCycle");
125  subdetswitchapvcycleprofon = ParametersClusterApvProf.getParameter<bool>("subdetswitchon");
126 
127  edm::ParameterSet ParametersClustersApvTH2 = conf_.getParameter<edm::ParameterSet>("TH2ClustersApvCycle");
128  subdetswitchapvcycleth2on = ParametersClustersApvTH2.getParameter<bool>("subdetswitchon");
129 
130  edm::ParameterSet ParametersApvCycleDBxProf2 = conf_.getParameter<edm::ParameterSet>("TProf2ApvCycleVsDBx");
131  subdetswitchapvcycledbxprof2on = ParametersApvCycleDBxProf2.getParameter<bool>("subdetswitchon");
132 
133  edm::ParameterSet ParametersDBxCycleProf = conf_.getParameter<edm::ParameterSet>("TProfClustersVsDBxCycle");
134  subdetswitchdbxcycleprofon = ParametersDBxCycleProf.getParameter<bool>("subdetswitchon");
135 
136  edm::ParameterSet ParametersCStripVsCPix = conf_.getParameter<edm::ParameterSet>("TH2CStripVsCpixel");
137  globalswitchcstripvscpix = ParametersCStripVsCPix.getParameter<bool>("globalswitchon");
138 
139  edm::ParameterSet ParametersMultiplicityRegionsTH1 = conf_.getParameter<edm::ParameterSet>("TH1MultiplicityRegions");
140  globalswitchMultiRegions = ParametersMultiplicityRegionsTH1.getParameter<bool>("globalswitchon");
141 
142  edm::ParameterSet ParametersApvCycleVsDBxGlobalTH2 = conf_.getParameter<edm::ParameterSet>("TH2ApvCycleVsDBxGlobal");
143  globalswitchapvcycledbxth2on = ParametersApvCycleVsDBxGlobalTH2.getParameter<bool>("globalswitchon");
144 
145  edm::ParameterSet ParametersNoiseStrip2ApvCycle = conf_.getParameter<edm::ParameterSet>("TH1StripNoise2ApvCycle");
146  globalswitchstripnoise2apvcycle = ParametersNoiseStrip2ApvCycle.getParameter<bool>("globalswitchon");
147 
148  edm::ParameterSet ParametersNoiseStrip3ApvCycle = conf_.getParameter<edm::ParameterSet>("TH1StripNoise3ApvCycle");
149  globalswitchstripnoise3apvcycle = ParametersNoiseStrip3ApvCycle.getParameter<bool>("globalswitchon");
150 
151  edm::ParameterSet ParametersMainDiagonalPosition = conf_.getParameter<edm::ParameterSet>("TH1MainDiagonalPosition");
152  globalswitchmaindiagonalposition= ParametersMainDiagonalPosition.getParameter<bool>("globalswitchon");
153 
154  edm::ParameterSet ClusterMultiplicityRegions = conf_.getParameter<edm::ParameterSet>("MultiplicityRegions");
155  k0 = ClusterMultiplicityRegions.getParameter<double>("k0");
156  q0 = ClusterMultiplicityRegions.getParameter<double>("q0");
157  dk0 = ClusterMultiplicityRegions.getParameter<double>("dk0");
158  maxClus = ClusterMultiplicityRegions.getParameter<double>("MaxClus");
159  minPix = ClusterMultiplicityRegions.getParameter<double>("MinPix");
160 
161  edm::ParameterSet ParametersNclusVsCycleTimeProf2D = conf_.getParameter<edm::ParameterSet>("NclusVsCycleTimeProf2D");
162  globalswitchnclusvscycletimeprof2don = ParametersNclusVsCycleTimeProf2D.getParameter<bool>("globalswitchon");
163 
164  edm::ParameterSet ParametersClusWidthVsAmpTH2 = conf_.getParameter<edm::ParameterSet>("ClusWidthVsAmpTH2");
165  clusterWidth_vs_amplitude_on = ParametersClusWidthVsAmpTH2.getParameter<bool>("globalswitchon");
166  layer_clusterWidth_vs_amplitude_on = ParametersClusWidthVsAmpTH2.getParameter<bool>("layerswitchon");
167  subdet_clusterWidth_vs_amplitude_on = ParametersClusWidthVsAmpTH2.getParameter<bool>("subdetswitchon");
168  module_clusterWidth_vs_amplitude_on = ParametersClusWidthVsAmpTH2.getParameter<bool>("moduleswitchon");
169 
170  clustertkhistomapon = conf_.getParameter<bool>("TkHistoMap_On");
171  createTrendMEs = conf_.getParameter<bool>("CreateTrendMEs");
172  trendVsLs_ = conf_.getParameter<bool>("TrendVsLS");
173  Mod_On_ = conf_.getParameter<bool>("Mod_On");
174  ClusterHisto_ = conf_.getParameter<bool>("ClusterHisto");
175 
176  topFolderName_ = conf_.getParameter<std::string>("TopFolderName");
177 
178 
179  // Poducer name of input StripClusterCollection
180  clusterProducerStripToken_ = consumes<edmNew::DetSetVector<SiStripCluster> >(conf_.getParameter<edm::InputTag>("ClusterProducerStrip") );
181  clusterProducerPixToken_ = consumes<edmNew::DetSetVector<SiPixelCluster> >(conf_.getParameter<edm::InputTag>("ClusterProducerPix") );
182  /*
183  clusterProducerStrip_ = conf_.getParameter<edm::InputTag>("ClusterProducerStrip");
184  clusterProducerPix_ = conf_.getParameter<edm::InputTag>("ClusterProducerPix");
185  */
186  // SiStrip Quality Label
187  qualityLabel_ = conf_.getParameter<std::string>("StripQualityLabel");
188  // cluster quality conditions
189  edm::ParameterSet cluster_condition = conf_.getParameter<edm::ParameterSet>("ClusterConditions");
190  applyClusterQuality_ = cluster_condition.getParameter<bool>("On");
191  sToNLowerLimit_ = cluster_condition.getParameter<double>("minStoN");
192  sToNUpperLimit_ = cluster_condition.getParameter<double>("maxStoN");
193  widthLowerLimit_ = cluster_condition.getParameter<double>("minWidth");
194  widthUpperLimit_ = cluster_condition.getParameter<double>("maxWidth");
195 
196  // Event History Producer
197  // historyProducer_ = conf_.getParameter<edm::InputTag>("HistoryProducer");
198  historyProducerToken_ = consumes<EventWithHistory>(conf_.getParameter<edm::InputTag>("HistoryProducer") );
199  // Apv Phase Producer
200  // apvPhaseProducer_ = conf_.getParameter<edm::InputTag>("ApvPhaseProducer");
201  apvPhaseProducerToken_ = consumes<APVCyclePhaseCollection>(conf_.getParameter<edm::InputTag>("ApvPhaseProducer") );
202  // Create DCS Status
203  bool checkDCS = conf_.getParameter<bool>("UseDCSFiltering");
204  if (checkDCS) dcsStatus_ = new SiStripDCSStatus(consumesCollector());
205  else dcsStatus_ = 0;
206 
207 }
208 
210  if (dcsStatus_) delete dcsStatus_;
214 }
215 
216 
217 //--------------------------------------------------------------------------------------------
219 
220  // Initialize the GenericTriggerEventFlag
227 }
228 
229 //--------------------------------------------------------------------------------------------
231 
233 
234  //Retrieve tracker topology from geometry
235  edm::ESHandle<TrackerTopology> tTopoHandle;
236  es.get<TrackerTopologyRcd>().get(tTopoHandle);
237  const TrackerTopology* const tTopo = tTopoHandle.product();
238 
239  // take from eventSetup the SiStripDetCabling object - here will use SiStripDetControl later on
241 
242  // get list of active detectors from SiStripDetCabling
243  std::vector<uint32_t> activeDets;
244  SiStripDetCabling_->addActiveDetectorsRawIds(activeDets);
245 
246  SiStripSubStructure substructure;
247 
248  SiStripFolderOrganizer folder_organizer;
249  folder_organizer.setSiStripFolderName(topFolderName_);
250  folder_organizer.setSiStripFolder();
251 
252 
253  // Create TkHistoMap for Cluster
254  if (clustertkhistomapon) {
255  // std::cout << "[SiStripMonitorCluster::createMEs] topFolderName_: " << topFolderName_ << " ";
256  if ( (topFolderName_ == "SiStrip") or (std::string::npos != topFolderName_.find("HLT")) )
257  tkmapcluster = new TkHistoMap(ibooker , topFolderName_,"TkHMap_NumberOfCluster",0.,true);
258  else tkmapcluster = new TkHistoMap(ibooker , topFolderName_+"/TkHistoMap","TkHMap_NumberOfCluster",0.,false);
259  }
260 
261  // loop over detectors and book MEs
262  edm::LogInfo("SiStripTkDQM|SiStripMonitorCluster")<<"nr. of activeDets: "<<activeDets.size();
263  for(std::vector<uint32_t>::iterator detid_iterator = activeDets.begin(); detid_iterator!=activeDets.end(); detid_iterator++){
264  uint32_t detid = (*detid_iterator);
265  // remove any eventual zero elements - there should be none, but just in case
266  if(detid == 0) {
267  activeDets.erase(detid_iterator);
268  continue;
269  }
270 
271  if (Mod_On_) {
272  ModMEs mod_single;
273  // set appropriate folder using SiStripFolderOrganizer
274  folder_organizer.setDetectorFolder(detid, tTopo); // pass the detid to this method
275  if (reset_each_run) ResetModuleMEs(detid);
276  createModuleMEs(mod_single, detid , ibooker);
277  // append to ModuleMEsMap
278  ModuleMEsMap.insert( std::make_pair(detid, mod_single));
279  }
280 
281  // Create Layer Level MEs if they are not created already
282  std::pair<std::string,int32_t> det_layer_pair = folder_organizer.GetSubDetAndLayer(detid, tTopo);
283  SiStripHistoId hidmanager;
284  std::string label = hidmanager.getSubdetid(detid,tTopo,false);
285 
286  std::map<std::string, LayerMEs>::iterator iLayerME = LayerMEsMap.find(label);
287  if(iLayerME==LayerMEsMap.end()) {
288 
289  // get detids for the layer
290  int32_t lnumber = det_layer_pair.second;
291  std::vector<uint32_t> layerDetIds;
292  if (det_layer_pair.first == "TIB") {
293  substructure.getTIBDetectors(activeDets,layerDetIds,lnumber,0,0,0);
294  } else if (det_layer_pair.first == "TOB") {
295  substructure.getTOBDetectors(activeDets,layerDetIds,lnumber,0,0);
296  } else if (det_layer_pair.first == "TID" && lnumber > 0) {
297  substructure.getTIDDetectors(activeDets,layerDetIds,2,abs(lnumber),0,0);
298  } else if (det_layer_pair.first == "TID" && lnumber < 0) {
299  substructure.getTIDDetectors(activeDets,layerDetIds,1,abs(lnumber),0,0);
300  } else if (det_layer_pair.first == "TEC" && lnumber > 0) {
301  substructure.getTECDetectors(activeDets,layerDetIds,2,abs(lnumber),0,0,0,0);
302  } else if (det_layer_pair.first == "TEC" && lnumber < 0) {
303  substructure.getTECDetectors(activeDets,layerDetIds,1,abs(lnumber),0,0,0,0);
304  }
305  LayerDetMap[label] = layerDetIds;
306 
307  // book Layer MEs
308  folder_organizer.setLayerFolder(detid,tTopo,det_layer_pair.second);
309  createLayerMEs(label, layerDetIds.size() , ibooker );
310  }
311  // book sub-detector plots
312  auto sdet_pair = folder_organizer.getSubDetFolderAndTag(detid, tTopo);
313  if (SubDetMEsMap.find(sdet_pair.second) == SubDetMEsMap.end()){
314  ibooker.setCurrentFolder(sdet_pair.first);
315 
316  createSubDetMEs(sdet_pair.second , ibooker );
317  }
318  }//end of loop over detectors
319 
320  // Create Global Histogram
322  ibooker.setCurrentFolder(topFolderName_+"/MechanicalView/");
323  edm::ParameterSet GlobalTH2Parameters = conf_.getParameter<edm::ParameterSet>("TH2ApvCycleVsDBxGlobal");
324  std::string HistoName = "DeltaBx_vs_ApvCycle";
325  GlobalApvCycleDBxTH2 = ibooker.book2D(HistoName,HistoName,
326  GlobalTH2Parameters.getParameter<int32_t>("Nbinsx"),
327  GlobalTH2Parameters.getParameter<double>("xmin"),
328  GlobalTH2Parameters.getParameter<double>("xmax"),
329  GlobalTH2Parameters.getParameter<int32_t>("Nbinsy"),
330  GlobalTH2Parameters.getParameter<double>("ymin"),
331  GlobalTH2Parameters.getParameter<double>("ymax"));
332  GlobalApvCycleDBxTH2->setAxisTitle("APV Cycle (Corrected Absolute Bx % 70)",1);
333  GlobalApvCycleDBxTH2->setAxisTitle("Delta Bunch Crossing Cycle",2);
334  }
335 
337  ibooker.setCurrentFolder(topFolderName_+"/MechanicalView/");
338  edm::ParameterSet GlobalTH2Parameters = conf_.getParameter<edm::ParameterSet>("TH2CStripVsCpixel");
339  std::string HistoName = "StripClusVsPixClus";
340  GlobalCStripVsCpix = ibooker.book2D(HistoName,HistoName,
341  GlobalTH2Parameters.getParameter<int32_t>("Nbinsx"),
342  GlobalTH2Parameters.getParameter<double>("xmin"),
343  GlobalTH2Parameters.getParameter<double>("xmax"),
344  GlobalTH2Parameters.getParameter<int32_t>("Nbinsy"),
345  GlobalTH2Parameters.getParameter<double>("ymin"),
346  GlobalTH2Parameters.getParameter<double>("ymax"));
347  GlobalCStripVsCpix->setAxisTitle("Strip Clusters",1);
348  GlobalCStripVsCpix->setAxisTitle("Pix Clusters",2);
349  }
350 
352  ibooker.setCurrentFolder(topFolderName_+"/MechanicalView/");
353  edm::ParameterSet GlobalTH2Parameters = conf_.getParameter<edm::ParameterSet>("TH1MultiplicityRegions");
354  std::string HistoName = "ClusterMultiplicityRegions";
355  PixVsStripMultiplicityRegions = ibooker.book1D(HistoName,HistoName,
356  GlobalTH2Parameters.getParameter<int32_t>("Nbinx"),
357  GlobalTH2Parameters.getParameter<double>("xmin"),
358  GlobalTH2Parameters.getParameter<double>("xmax"));
360  PixVsStripMultiplicityRegions->setBinLabel(1,"Main Diagonal");
361  PixVsStripMultiplicityRegions->setBinLabel(2,"Strip Noise");
362  PixVsStripMultiplicityRegions->setBinLabel(3,"High Strip Noise");
363  PixVsStripMultiplicityRegions->setBinLabel(4,"Beam Background");
364  PixVsStripMultiplicityRegions->setBinLabel(5,"No Strip Clusters");
365  }
366 
368  ibooker.setCurrentFolder(topFolderName_+"/MechanicalView/");
369  edm::ParameterSet GlobalTH1Parameters = conf_.getParameter<edm::ParameterSet>("TH1MainDiagonalPosition");
370  std::string HistoName = "MainDiagonal Position";
371  GlobalMainDiagonalPosition = ibooker.book1D(HistoName,HistoName,
372  GlobalTH1Parameters.getParameter<int32_t>("Nbinsx"),
373  GlobalTH1Parameters.getParameter<double>("xmin"),
374  GlobalTH1Parameters.getParameter<double>("xmax"));
375  GlobalMainDiagonalPosition->setAxisTitle("atan(NPix/(k*NStrip))");
376  }
377 
378  // TO BE ADDED !!!
379  /*
380  if ( globalswitchapvcycledbxth2on or globalswitchcstripvscpix or globalswitchMultiRegions or ClusterHisto_ ) {
381  ibooker.setCurrentFolder(topFolderName_+"/MechanicalView/");
382  std::string HistoName = "BPTX rate";
383  BPTXrateTrend = ibooker.bookProfile(HistoName,HistoName, LSBin, LSMin, LSMax, 0, 10000.,"");
384  BPTXrateTrend->getTH1()->SetCanExtend(TH1::kAllAxes);
385  BPTXrateTrend->setAxisTitle("#Lumi section",1);
386  BPTXrateTrend->setAxisTitle("Number of BPTX events per LS",2);
387  }
388  */
389 
391  ibooker.setCurrentFolder(topFolderName_+"/MechanicalView/");
392  edm::ParameterSet GlobalTH1Parameters = conf_.getParameter<edm::ParameterSet>("TH1StripNoise2ApvCycle");
393  std::string HistoName = "StripNoise_ApvCycle";
394  StripNoise2Cycle = ibooker.book1D(HistoName,HistoName,
395  GlobalTH1Parameters.getParameter<int32_t>("Nbinsx"),
396  GlobalTH1Parameters.getParameter<double>("xmin"),
397  GlobalTH1Parameters.getParameter<double>("xmax"));
398  StripNoise2Cycle->setAxisTitle("APV Cycle");
399  }
400 
402  ibooker.setCurrentFolder(topFolderName_+"/MechanicalView/");
403  edm::ParameterSet GlobalTH1Parameters = conf_.getParameter<edm::ParameterSet>("TH1StripNoise3ApvCycle");
404  std::string HistoName = "HighStripNoise_ApvCycle";
405  StripNoise3Cycle = ibooker.book1D(HistoName,HistoName,
406  GlobalTH1Parameters.getParameter<int32_t>("Nbinsx"),
407  GlobalTH1Parameters.getParameter<double>("xmin"),
408  GlobalTH1Parameters.getParameter<double>("xmax"));
409  StripNoise3Cycle->setAxisTitle("APV Cycle");
410  }
411 
413  const char* HistoName = "StripClusVsBXandOrbit";
414  const char* HistoTitle = "Strip cluster multiplicity vs BX mod(70) and Orbit;Event 1 BX mod(70);time [Orb#]";
415  edm::ParameterSet ParametersNclusVsCycleTimeProf2D = conf_.getParameter<edm::ParameterSet>("NclusVsCycleTimeProf2D");
416  NclusVsCycleTimeProf2D = ibooker.bookProfile2D ( HistoName , HistoTitle ,
417  ParametersNclusVsCycleTimeProf2D.getParameter<int32_t>("Nbins"),
418  ParametersNclusVsCycleTimeProf2D.getParameter<double>("xmin"),
419  ParametersNclusVsCycleTimeProf2D.getParameter<double>("xmax"),
420  ParametersNclusVsCycleTimeProf2D.getParameter<int32_t>("Nbinsy"),
421  ParametersNclusVsCycleTimeProf2D.getParameter<double>("ymin"),
422  ParametersNclusVsCycleTimeProf2D.getParameter<double>("ymax"),
423  0 , 0 );
424  if (NclusVsCycleTimeProf2D->kind() == MonitorElement::DQM_KIND_TPROFILE2D) NclusVsCycleTimeProf2D->getTH1()->SetCanExtend(TH1::kAllAxes);
425  }
427  ibooker.setCurrentFolder(topFolderName_+"/MechanicalView/");
428  edm::ParameterSet ParametersClusWidthVsAmpTH2 = conf_.getParameter<edm::ParameterSet>("ClusWidthVsAmpTH2");
429  const char* HistoName = "ClusterWidths_vs_Amplitudes";
430  const char* HistoTitle = "Cluster widths vs amplitudes;Amplitudes (integrated ADC counts);Cluster widths";
431  ClusWidthVsAmpTH2 = ibooker.book2D(HistoName,HistoTitle,
432  ParametersClusWidthVsAmpTH2.getParameter<int32_t>("Nbinsx"),
433  ParametersClusWidthVsAmpTH2.getParameter<double>("xmin"),
434  ParametersClusWidthVsAmpTH2.getParameter<double>("xmax"),
435  ParametersClusWidthVsAmpTH2.getParameter<int32_t>("Nbinsy"),
436  ParametersClusWidthVsAmpTH2.getParameter<double>("ymin"),
437  ParametersClusWidthVsAmpTH2.getParameter<double>("ymax"));
438  }
439 
440  if (ClusterHisto_){
441  ibooker.setCurrentFolder(topFolderName_+"/MechanicalView/");
442  edm::ParameterSet PixelCluster = conf_.getParameter<edm::ParameterSet>("TH1NClusPx");
443  std::string HistoName = "NumberOfClustersInPixel";
444  NumberOfPixelClus = ibooker.book1D(HistoName, HistoName,
445  PixelCluster.getParameter<int32_t>("Nbinsx"),
446  PixelCluster.getParameter<double>("xmin"),
447  PixelCluster.getParameter<double>("xmax"));
448  NumberOfPixelClus->setAxisTitle("# of Clusters in Pixel", 1);
449  NumberOfPixelClus->setAxisTitle("Number of Events", 2);
450  //
451  edm::ParameterSet StripCluster = conf_.getParameter<edm::ParameterSet>("TH1NClusStrip");
452  HistoName = "NumberOfClustersInStrip";
453  NumberOfStripClus = ibooker.book1D(HistoName, HistoName,
454  StripCluster.getParameter<int32_t>("Nbinsx"),
455  StripCluster.getParameter<double>("xmin"),
456  StripCluster.getParameter<double>("xmax"));
457  NumberOfStripClus->setAxisTitle("# of Clusters in Strip", 1);
458  NumberOfStripClus->setAxisTitle("Number of Events", 2);
459  }
460 
461  }//end of if
462 }//end of method
463 
464 //--------------------------------------------------------------------------------------------
465 
467 {
469  unsigned long long cacheID = es.get<SiStripDetCablingRcd>().cacheIdentifier();
470  if (m_cacheID_ != cacheID) {
471  m_cacheID_ = cacheID;
472  edm::LogInfo("SiStripMonitorCluster") <<"SiStripMonitorCluster::bookHistograms: "
473  << " Creating MEs for new Cabling ";
474 
475  createMEs(es , ibooker);
476  }
477  } else if (reset_each_run) {
478  edm::LogInfo("SiStripMonitorCluster") <<"SiStripMonitorCluster::bookHistograms: "
479  << " Resetting MEs ";
480  for (std::map<uint32_t, ModMEs >::const_iterator idet = ModuleMEsMap.begin() ; idet!=ModuleMEsMap.end() ; idet++) {
481  ResetModuleMEs(idet->first);
482  }
483  }
484 
485 }
486 
487 //--------------------------------------------------------------------------------------------
489 {
490  //Retrieve tracker topology from geometry
491  edm::ESHandle<TrackerTopology> tTopoHandle;
492  iSetup.get<TrackerTopologyRcd>().get(tTopoHandle);
493  const TrackerTopology* const tTopo = tTopoHandle.product();
494 
495  // Filter out events if Trigger Filtering is requested
496  passBPTXfilter_ = ( iEvent.isRealData() and genTriggerEventFlagBPTXfilter_->on() ) ? genTriggerEventFlagBPTXfilter_->accept( iEvent, iSetup) : true;
499  // std::cout << "passBPTXfilter_ ? " << passBPTXfilter_ << std::endl;
500 
501  // Filter out events if DCS Event if requested
502  if (dcsStatus_ && !dcsStatus_->getStatus(iEvent,iSetup)) return;
503 
504  runNb = iEvent.id().run();
505  eventNb++;
506  trendVar = trendVsLs_ ? iEvent.orbitNumber()/262144.0 : iEvent.orbitNumber()/11223.0; // lumisection : seconds
507 
508  int NPixClusters=0, NStripClusters=0, MultiplicityRegion=0;
509  bool isPixValid=false;
510 
511  edm::ESHandle<SiStripNoises> noiseHandle;
512  iSetup.get<SiStripNoisesRcd>().get(noiseHandle);
513 
514  edm::ESHandle<SiStripGain> gainHandle;
515  iSetup.get<SiStripGainRcd>().get(gainHandle);
516 
517  edm::ESHandle<SiStripQuality> qualityHandle;
518  iSetup.get<SiStripQualityRcd>().get(qualityLabel_,qualityHandle);
519 
521 
522  // get collection of DetSetVector of clusters from Event
524  iEvent.getByToken(clusterProducerStripToken_, cluster_detsetvektor);
525 
526  //get pixel clusters
527  edm::Handle< edmNew::DetSetVector<SiPixelCluster> > cluster_detsetvektor_pix;
528  iEvent.getByToken(clusterProducerPixToken_, cluster_detsetvektor_pix);
529 
530  if (!cluster_detsetvektor.isValid()) return;
531 
532  const edmNew::DetSetVector<SiStripCluster> * StrC= cluster_detsetvektor.product();
533  NStripClusters= StrC->data().size();
534 
535  if (cluster_detsetvektor_pix.isValid()){
536  const edmNew::DetSetVector<SiPixelCluster> * PixC= cluster_detsetvektor_pix.product();
537  NPixClusters= PixC->data().size();
538  isPixValid=true;
539  MultiplicityRegion=FindRegion(NStripClusters,NPixClusters);
540 
542  if (globalswitchcstripvscpix) GlobalCStripVsCpix->Fill(NStripClusters,NPixClusters);
543  if (globalswitchmaindiagonalposition && NStripClusters > 0) GlobalMainDiagonalPosition->Fill(atan(NPixClusters/(k0*NStripClusters)));
545  }
546 
547  if (ClusterHisto_){
549  NumberOfPixelClus->Fill(NPixClusters);
550  if ( passBPTXfilter_ and passStripDCSfilter_ )
551  NumberOfStripClus->Fill(NStripClusters);
552  }
553  }
554  // initialise # of clusters to zero
555  for (std::map<std::string, SubDetMEs>::iterator iSubdet = SubDetMEsMap.begin();
556  iSubdet != SubDetMEsMap.end(); iSubdet++) {
557  iSubdet->second.totNClusters = 0;
558  }
559 
560  SiStripFolderOrganizer folder_organizer;
561  bool found_layer_me = false;
562  for (std::map<std::string, std::vector< uint32_t > >::const_iterator iterLayer = LayerDetMap.begin();
563  iterLayer != LayerDetMap.end(); iterLayer++) {
564 
565  std::string layer_label = iterLayer->first;
566 
567  int ncluster_layer = 0;
568  std::map<std::string, LayerMEs>::iterator iLayerME = LayerMEsMap.find(layer_label);
569 
570  //get Layer MEs
571  LayerMEs layer_single;
572  if(iLayerME != LayerMEsMap.end()) {
573  layer_single = iLayerME->second;
574  found_layer_me = true;
575  }
576 
577  bool found_module_me = false;
578  uint16_t iDet = 0;
579  std::string subdet_label = "";
580  // loop over all modules in the layer
581  for (std::vector< uint32_t >::const_iterator iterDets = iterLayer->second.begin() ;
582  iterDets != iterLayer->second.end() ; iterDets++) {
583  iDet++;
584  // detid and type of ME
585  uint32_t detid = (*iterDets);
586 
587  // Get SubDet label once
588  if (subdet_label.size() == 0) subdet_label = folder_organizer.getSubDetFolderAndTag(detid, tTopo).second;
589 
590  // DetId and corresponding set of MEs
591  ModMEs mod_single;
592  if (Mod_On_) {
593  std::map<uint32_t, ModMEs >::iterator imodME = ModuleMEsMap.find(detid);
594  if (imodME != ModuleMEsMap.end()) {
595  mod_single = imodME->second;
596  found_module_me = true;
597  }
598  } else found_module_me = false;
599 
600  edmNew::DetSetVector<SiStripCluster>::const_iterator isearch = cluster_detsetvektor->find(detid); // search clusters of detid
601 
602  if(isearch==cluster_detsetvektor->end()){
603  if(found_module_me && moduleswitchncluson && (mod_single.NumberOfClusters)){
604  (mod_single.NumberOfClusters)->Fill(0.); // no clusters for this detector module,fill histogram with 0
605  }
606  if(clustertkhistomapon) tkmapcluster->fill(detid,0.);
607  if (found_layer_me && layerswitchnumclusterprofon) layer_single.LayerNumberOfClusterProfile->Fill(iDet, 0.0);
608  continue; // no clusters for this detid => jump to next step of loop
609  }
610 
611  //cluster_detset is a structure, cluster_detset.data is a std::vector<SiStripCluster>, cluster_detset.id is uint32_t
612  // edmNew::DetSet<SiStripCluster> cluster_detset = (*cluster_detsetvektor)[detid]; // the statement above makes sure there exists an element with 'detid'
613  edmNew::DetSet<SiStripCluster> cluster_detset = (*isearch);
614 
615  // Filling TkHistoMap with number of clusters for each module
616  if(clustertkhistomapon) {
617  tkmapcluster->fill(detid,static_cast<float>(cluster_detset.size()));
618  }
619 
620  if(moduleswitchncluson && found_module_me && (mod_single.NumberOfClusters != NULL)){ // nr. of clusters per module
621  (mod_single.NumberOfClusters)->Fill(static_cast<float>(cluster_detset.size()));
622  }
623 
624  if (found_layer_me && layerswitchnumclusterprofon)
625  layer_single.LayerNumberOfClusterProfile->Fill(iDet, static_cast<float>(cluster_detset.size()));
626  ncluster_layer += cluster_detset.size();
627 
628  short total_clusterized_strips = 0;
629 
630  SiStripNoises::Range detNoiseRange = noiseHandle->getRange(detid);
631  SiStripApvGain::Range detGainRange = gainHandle->getRange(detid);
632  SiStripQuality::Range qualityRange = qualityHandle->getRange(detid);
633 
634  for(edmNew::DetSet<SiStripCluster>::const_iterator clusterIter = cluster_detset.begin(); clusterIter!= cluster_detset.end(); clusterIter++){
635 
636  const auto & ampls = clusterIter->amplitudes();
637  // cluster position
638  float cluster_position = clusterIter->barycenter();
639  // start defined as nr. of first strip beloning to the cluster
640  short cluster_start = clusterIter->firstStrip();
641  // width defined as nr. of strips that belong to cluster
642  short cluster_width = ampls.size();
643  // add nr of strips of this cluster to total nr. of clusterized strips
644  total_clusterized_strips = total_clusterized_strips + cluster_width;
645 
646  // cluster signal and noise from the amplitudes
647  float cluster_signal = 0.0;
648  float cluster_noise = 0.0;
649  int nrnonzeroamplitudes = 0;
650  float noise2 = 0.0;
651  float noise = 0.0;
652  for(uint iamp=0; iamp<ampls.size(); iamp++){
653  if(ampls[iamp]>0){ // nonzero amplitude
654  cluster_signal += ampls[iamp];
655  if(!qualityHandle->IsStripBad(qualityRange, clusterIter->firstStrip()+iamp)){
656  noise = noiseHandle->getNoise(clusterIter->firstStrip()+iamp,detNoiseRange)/gainHandle->getStripGain(clusterIter->firstStrip()+iamp, detGainRange);
657  }
658  noise2 += noise*noise;
659  nrnonzeroamplitudes++;
660  }
661  } // End loop over cluster amplitude
662 
663  if (nrnonzeroamplitudes > 0) cluster_noise = sqrt(noise2/nrnonzeroamplitudes);
664 
665  if( applyClusterQuality_ &&
666  (cluster_signal/cluster_noise < sToNLowerLimit_ ||
667  cluster_signal/cluster_noise > sToNUpperLimit_ ||
668  cluster_width < widthLowerLimit_ ||
669  cluster_width > widthUpperLimit_) ) continue;
670 
671  ClusterProperties cluster_properties;
672  cluster_properties.charge = cluster_signal;
673  cluster_properties.position = cluster_position;
674  cluster_properties.start = cluster_start;
675  cluster_properties.width = cluster_width;
676  cluster_properties.noise = cluster_noise;
677 
678  // Fill Module Level MEs
679  if (found_module_me) fillModuleMEs(mod_single, cluster_properties);
680 
681  // Fill Layer Level MEs
682  if (found_layer_me) {
683  fillLayerMEs(layer_single, cluster_properties);
685  layer_single.LayerClusterWidthProfile->Fill(iDet, cluster_width);
686  }
687 
689  {
690  std::map<std::string, SubDetMEs>::iterator iSubdet = SubDetMEsMap.find(subdet_label);
691  if(iSubdet != SubDetMEsMap.end())
692  {
693  if (subdetswitchcluschargeon) iSubdet->second.SubDetClusterChargeTH1->Fill(cluster_signal);
694  if (subdetswitchcluswidthon) iSubdet->second.SubDetClusterWidthTH1->Fill(cluster_width);
695  }
696  }
697 
698 
700  std::map<std::string, SubDetMEs>::iterator iSubdet = SubDetMEsMap.find(subdet_label);
701  if(iSubdet != SubDetMEsMap.end()) iSubdet->second.SubDetClusWidthVsAmpTH2->Fill(cluster_signal, cluster_width);
702  }
703 
705  ClusWidthVsAmpTH2->Fill(cluster_signal, cluster_width);
706  }
707 
708  } // end loop over clusters
709 
710  short total_nr_strips = SiStripDetCabling_->nApvPairs(detid) * 2 * 128; // get correct # of avp pairs
711  float local_occupancy = static_cast<float>(total_clusterized_strips)/static_cast<float>(total_nr_strips);
712  if (found_module_me) {
713  if(moduleswitchnrclusterizedstrip && mod_single.NrOfClusterizedStrips ){ // nr of clusterized strips
714  mod_single.NrOfClusterizedStrips->Fill(static_cast<float>(total_clusterized_strips));
715  }
716 
717  if(moduleswitchlocaloccupancy && mod_single.ModuleLocalOccupancy ){ // Occupancy
718  mod_single.ModuleLocalOccupancy->Fill(local_occupancy);
719  }
720  }
721  if (layerswitchlocaloccupancy && found_layer_me && layer_single.LayerLocalOccupancy) {
722  fillME(layer_single.LayerLocalOccupancy,local_occupancy);
723  if (createTrendMEs)
724  fillME(layer_single.LayerLocalOccupancyTrend,trendVar,local_occupancy);
725  }
726  }
727  std::map<std::string, SubDetMEs>::iterator iSubdet = SubDetMEsMap.find(subdet_label);
728  if(iSubdet != SubDetMEsMap.end()) iSubdet->second.totNClusters += ncluster_layer;
729  }
730 
731  // EventHistory
732  edm::Handle<EventWithHistory> event_history;
733  iEvent.getByToken(historyProducerToken_,event_history);
734 
735  // Phase of APV
736  edm::Handle<APVCyclePhaseCollection> apv_phase_collection;
737  iEvent.getByToken(apvPhaseProducerToken_,apv_phase_collection);
738 
739  if (event_history.isValid()
740  && !event_history.failedToGet()
741  && apv_phase_collection.isValid()
742  && !apv_phase_collection.failedToGet()) {
743 
744 
745  long long dbx = event_history->deltaBX();
746  long long tbx = event_history->absoluteBX();
747 
748  bool global_histo_filled = false;
749  bool MultiplicityRegion_Vs_APVcycle_filled=false;
750 
751  for (std::map<std::string, SubDetMEs>::iterator it = SubDetMEsMap.begin();
752  it != SubDetMEsMap.end(); it++) {
753  std::string sdet = it->first;
754  //std::string sdet = sdet_tag.substr(0,sdet_tag.find_first_of("_"));
755  SubDetMEs sdetmes = it->second;
756 
757  int the_phase = APVCyclePhaseCollection::invalid;
758  long long tbx_corr = tbx;
759 
760  if (SubDetPhasePartMap.find(sdet) != SubDetPhasePartMap.end()) the_phase = apv_phase_collection->getPhase(SubDetPhasePartMap[sdet]);
761  if(the_phase==APVCyclePhaseCollection::nopartition ||
764  the_phase=30;
765  //std::cout << " subdet " << it->first << " not valid" << " MR " << MultiplicityRegion <<std::endl;
766  }
767  tbx_corr -= the_phase;
768  long long dbxincycle = event_history->deltaBXinCycle(the_phase);
769  if (globalswitchapvcycledbxth2on && !global_histo_filled) {
770  GlobalApvCycleDBxTH2->Fill(tbx_corr%70,dbx);
771  global_histo_filled = true;
772  }
773 
774  if (isPixValid && !MultiplicityRegion_Vs_APVcycle_filled){
775  if (globalswitchstripnoise2apvcycle && MultiplicityRegion==2) {StripNoise2Cycle->Fill(tbx_corr%70);}
776  if (globalswitchstripnoise3apvcycle && MultiplicityRegion==3) {StripNoise3Cycle->Fill(tbx_corr%70);}
777  MultiplicityRegion_Vs_APVcycle_filled=true;
778  }
779 
781  sdetmes.SubDetTotClusterTH1->Fill(sdetmes.totNClusters);
785  sdetmes.SubDetClusterApvProf->Fill(tbx_corr%70,sdetmes.totNClusters);
787  sdetmes.SubDetClusterApvTH2->Fill(tbx_corr%70,sdetmes.totNClusters);
789  sdetmes.SubDetClusterDBxCycleProf->Fill(dbxincycle,sdetmes.totNClusters);
791  sdetmes.SubDetApvDBxProf2->Fill(tbx_corr%70,dbx,sdetmes.totNClusters);
792  }
793 
795  {
796  long long tbx_corr = tbx;
797  int the_phase = apv_phase_collection->getPhase("All");
798 
799  if( the_phase == APVCyclePhaseCollection::nopartition ||
801  the_phase == APVCyclePhaseCollection::invalid )
802  the_phase=30;
803 
804  tbx_corr -= the_phase;
805 
806  NclusVsCycleTimeProf2D->Fill( tbx_corr%70 , (int)event_history->_orbit , NStripClusters );
807  }
808  }
809 }
810 //
811 // -- Reset MEs
812 //------------------------------------------------------------------------------
814  std::map<uint32_t, ModMEs >::iterator pos = ModuleMEsMap.find(idet);
815  ModMEs mod_me = pos->second;
816 
828 }
829 //
830 // -- Create Module Level MEs
831 //
832 void SiStripMonitorCluster::createModuleMEs(ModMEs& mod_single, uint32_t detid , DQMStore::IBooker & ibooker) {
833 
834  // use SistripHistoId for producing histogram id (and title)
835  SiStripHistoId hidmanager;
836  std::string hid;
837 
838  //nr. of clusters per module
839  if(moduleswitchncluson) {
840  hid = hidmanager.createHistoId("NumberOfClusters","det",detid);
841  mod_single.NumberOfClusters = bookME1D("TH1nClusters", hid.c_str() , ibooker);
842  ibooker.tag(mod_single.NumberOfClusters, detid);
843  mod_single.NumberOfClusters->setAxisTitle("number of clusters in one detector module");
844  mod_single.NumberOfClusters->getTH1()->StatOverflows(kTRUE); // over/underflows in Mean calculation
845  }
846 
847  //ClusterPosition
849  short total_nr_strips = SiStripDetCabling_->nApvPairs(detid) * 2 * 128; // get correct # of avp pairs
850  hid = hidmanager.createHistoId("ClusterPosition","det",detid);
851  mod_single.ClusterPosition = ibooker.book1D(hid, hid, total_nr_strips, 0.5, total_nr_strips+0.5);
852  ibooker.tag(mod_single.ClusterPosition, detid);
853  mod_single.ClusterPosition->setAxisTitle("cluster position [strip number +0.5]");
854  }
855 
856  //ClusterDigiPosition
858  short total_nr_strips = SiStripDetCabling_->nApvPairs(detid) * 2 * 128; // get correct # of avp pairs
859  hid = hidmanager.createHistoId("ClusterDigiPosition","det",detid);
860  mod_single.ClusterDigiPosition = ibooker.book1D(hid, hid, total_nr_strips, 0.5, total_nr_strips+0.5);
861  ibooker.tag(mod_single.ClusterDigiPosition, detid);
862  mod_single.ClusterDigiPosition->setAxisTitle("digi in cluster position [strip number +0.5]");
863  }
864 
865  //ClusterWidth
867  hid = hidmanager.createHistoId("ClusterWidth","det",detid);
868  mod_single.ClusterWidth = bookME1D("TH1ClusterWidth", hid.c_str() , ibooker);
869  ibooker.tag(mod_single.ClusterWidth, detid);
870  mod_single.ClusterWidth->setAxisTitle("cluster width [nr strips]");
871  }
872 
873  //ClusterCharge
875  hid = hidmanager.createHistoId("ClusterCharge","det",detid);
876  mod_single.ClusterCharge = bookME1D("TH1ClusterCharge", hid.c_str() , ibooker );
877  ibooker.tag(mod_single.ClusterCharge, detid);
878  mod_single.ClusterCharge->setAxisTitle("cluster charge [ADC]");
879  }
880 
881  //ClusterNoise
883  hid = hidmanager.createHistoId("ClusterNoise","det",detid);
884  mod_single.ClusterNoise = bookME1D("TH1ClusterNoise", hid.c_str() , ibooker );
885  ibooker.tag(mod_single.ClusterNoise, detid);
886  mod_single.ClusterNoise->setAxisTitle("cluster noise");
887  }
888 
889  //ClusterSignalOverNoise
891  hid = hidmanager.createHistoId("ClusterSignalOverNoise","det",detid);
892  mod_single.ClusterSignalOverNoise = bookME1D("TH1ClusterStoN", hid.c_str() , ibooker);
893  ibooker.tag(mod_single.ClusterSignalOverNoise, detid);
894  mod_single.ClusterSignalOverNoise->setAxisTitle("ratio of signal to noise for each cluster");
895  }
896 
897  //ClusterSignalOverNoiseVsPos
899  hid = hidmanager.createHistoId("ClusterSignalOverNoiseVsPos","det",detid);
900  Parameters = conf_.getParameter<edm::ParameterSet>("TH1ClusterStoNVsPos");
901  mod_single.ClusterSignalOverNoiseVsPos= ibooker.bookProfile(hid.c_str(),hid.c_str(),
902  Parameters.getParameter<int32_t>("Nbinx"),
903  Parameters.getParameter<double>("xmin"),
904  Parameters.getParameter<double>("xmax"),
905  Parameters.getParameter<int32_t>("Nbiny"),
906  Parameters.getParameter<double>("ymin"),
907  Parameters.getParameter<double>("ymax")
908  );
909  ibooker.tag(mod_single.ClusterSignalOverNoiseVsPos, detid);
910  mod_single.ClusterSignalOverNoiseVsPos->setAxisTitle("pos");
911  }
912 
913  //ModuleLocalOccupancy
915  hid = hidmanager.createHistoId("ClusterLocalOccupancy","det",detid);
916  mod_single.ModuleLocalOccupancy = bookME1D("TH1ModuleLocalOccupancy", hid.c_str() , ibooker);
917  ibooker.tag(mod_single.ModuleLocalOccupancy, detid);
918  mod_single.ModuleLocalOccupancy->setAxisTitle("module local occupancy [% of clusterized strips]");
919  }
920 
921  //NrOfClusterizedStrips
923  hid = hidmanager.createHistoId("NrOfClusterizedStrips","det",detid);
924  mod_single.NrOfClusterizedStrips = bookME1D("TH1NrOfClusterizedStrips", hid.c_str() , ibooker );
925  ibooker.tag(mod_single.NrOfClusterizedStrips, detid);
926  mod_single.NrOfClusterizedStrips->setAxisTitle("number of clusterized strips");
927  }
928 
930  hid = hidmanager.createHistoId("ClusterWidths_vs_Amplitudes","det",detid);
931  Parameters = conf_.getParameter<edm::ParameterSet>("ClusWidthVsAmpTH2");
932  int32_t Nbinsx = Parameters.getParameter<int32_t>("Nbinsx");
933  Nbinsx = Nbinsx/2; //Without this "rebinning" the job is killed on lxplus. We think it's due to the high memory needed to create all those histograms.
934  mod_single.Module_ClusWidthVsAmpTH2 = ibooker.book2D(hid.c_str() , hid.c_str(),
935  Nbinsx,
936  Parameters.getParameter<double>("xmin"),
937  Parameters.getParameter<double>("xmax"),
938  Parameters.getParameter<int32_t>("Nbinsy"),
939  Parameters.getParameter<double>("ymin"),
940  Parameters.getParameter<double>("ymax")
941  );
942  ibooker.tag(mod_single.Module_ClusWidthVsAmpTH2, detid);
943  mod_single.Module_ClusWidthVsAmpTH2->setAxisTitle("Amplitudes (integrated ADC counts)",1);
944  mod_single.Module_ClusWidthVsAmpTH2->setAxisTitle("Cluster widths",2);
945  }
946 
947 }
948 //
949 // -- Create Module Level MEs
950 //
952 
953  SiStripHistoId hidmanager;
954 
955  LayerMEs layerMEs;
956  layerMEs.LayerClusterStoN = 0;
957  layerMEs.LayerClusterStoNTrend = 0;
958  layerMEs.LayerClusterCharge = 0;
959  layerMEs.LayerClusterChargeTrend = 0;
960  layerMEs.LayerClusterNoise = 0;
961  layerMEs.LayerClusterNoiseTrend = 0;
962  layerMEs.LayerClusterWidth = 0;
963  layerMEs.LayerClusterWidthTrend = 0;
964  layerMEs.LayerLocalOccupancy = 0;
965  layerMEs.LayerLocalOccupancyTrend = 0;
966  layerMEs.LayerNumberOfClusterProfile = 0;
967  layerMEs.LayerClusterWidthProfile = 0;
968  layerMEs.LayerClusWidthVsAmpTH2 = 0;
969 
970  //Cluster Width
972  layerMEs.LayerClusterWidth=bookME1D("TH1ClusterWidth", hidmanager.createHistoLayer("Summary_ClusterWidth","layer",label,"").c_str() , ibooker );
973  if (createTrendMEs)
974  layerMEs.LayerClusterWidthTrend=bookMETrend(hidmanager.createHistoLayer("Trend_ClusterWidth","layer",label,"").c_str() , ibooker );
975  }
976 
977  //Cluster Noise
979  layerMEs.LayerClusterNoise=bookME1D("TH1ClusterNoise", hidmanager.createHistoLayer("Summary_ClusterNoise","layer",label,"").c_str() , ibooker );
980  if (createTrendMEs)
981  layerMEs.LayerClusterNoiseTrend=bookMETrend(hidmanager.createHistoLayer("Trend_ClusterNoise","layer",label,"").c_str() , ibooker);
982  }
983 
984  //Cluster Charge
986  layerMEs.LayerClusterCharge=bookME1D("TH1ClusterCharge", hidmanager.createHistoLayer("Summary_ClusterCharge","layer",label,"").c_str() , ibooker );
987  if (createTrendMEs)
988  layerMEs.LayerClusterChargeTrend=bookMETrend(hidmanager.createHistoLayer("Trend_ClusterCharge","layer",label,"").c_str(),ibooker);
989  }
990 
991  //Cluster StoN
993  layerMEs.LayerClusterStoN=bookME1D("TH1ClusterStoN", hidmanager.createHistoLayer("Summary_ClusterSignalOverNoise","layer",label,"").c_str() , ibooker );
994  if (createTrendMEs)
995  layerMEs.LayerClusterStoNTrend=bookMETrend(hidmanager.createHistoLayer("Trend_ClusterSignalOverNoise","layer",label,"").c_str(),ibooker);
996  }
997 
998  //Cluster Occupancy
1000  layerMEs.LayerLocalOccupancy=bookME1D("TH1ModuleLocalOccupancy", hidmanager.createHistoLayer("Summary_ClusterLocalOccupancy","layer",label,"").c_str() , ibooker );
1001  if (createTrendMEs)
1002  layerMEs.LayerLocalOccupancyTrend=bookMETrend(hidmanager.createHistoLayer("Trend_ClusterLocalOccupancy","layer",label,"").c_str(),ibooker);
1003  }
1004 
1005  // # of Cluster Profile
1007  std::string hid = hidmanager.createHistoLayer("NumberOfClusterProfile","layer",label,"");
1008  layerMEs.LayerNumberOfClusterProfile = ibooker.bookProfile(hid, hid, ndets, 0.5, ndets+0.5,21, -0.5, 20.5);
1009  }
1010 
1011  // Cluster Width Profile
1013  std::string hid = hidmanager.createHistoLayer("ClusterWidthProfile","layer",label,"");
1014  layerMEs.LayerClusterWidthProfile = ibooker.bookProfile(hid, hid, ndets, 0.5, ndets+0.5, 20, -0.5, 19.5);
1015  }
1016 
1018  layerMEs.LayerClusWidthVsAmpTH2=bookME2D("ClusWidthVsAmpTH2", hidmanager.createHistoLayer("ClusterWidths_vs_Amplitudes","layer",label,"").c_str() , ibooker );
1019  }
1020 
1021 
1022  LayerMEsMap[label]=layerMEs;
1023 }
1024 //
1025 // -- Create SubDetector MEs
1026 //
1028 
1029  SubDetMEs subdetMEs;
1030  subdetMEs.totNClusters = 0;
1031  subdetMEs.SubDetTotClusterTH1 = 0;
1032  subdetMEs.SubDetTotClusterProf = 0;
1033  subdetMEs.SubDetClusterApvProf = 0;
1034  subdetMEs.SubDetClusterApvTH2 = 0;
1035  subdetMEs.SubDetClusterDBxCycleProf = 0;
1036  subdetMEs.SubDetApvDBxProf2 = 0;
1037  subdetMEs.SubDetClusterChargeTH1 = 0;
1038  subdetMEs.SubDetClusterWidthTH1 = 0;
1039  subdetMEs.SubDetClusWidthVsAmpTH2 = 0;
1040 
1042  // cluster charge
1044  HistoName = "ClusterCharge__" + label;
1045  subdetMEs.SubDetClusterChargeTH1 = bookME1D("TH1ClusterCharge",HistoName.c_str() , ibooker);
1046  subdetMEs.SubDetClusterChargeTH1->setAxisTitle("Cluster charge [ADC counts]");
1047  subdetMEs.SubDetClusterChargeTH1->getTH1()->StatOverflows(kTRUE); // over/underflows in Mean calculation
1048  }
1049  // cluster width
1051  HistoName = "ClusterWidth__" + label;
1052  subdetMEs.SubDetClusterWidthTH1 = bookME1D("TH1ClusterWidth",HistoName.c_str() , ibooker);
1053  subdetMEs.SubDetClusterWidthTH1->setAxisTitle("Cluster width [strips]");
1054  subdetMEs.SubDetClusterWidthTH1->getTH1()->StatOverflows(kTRUE); // over/underflows in Mean calculation
1055  }
1056  // Total Number of Cluster - 1D
1058  HistoName = "TotalNumberOfCluster__" + label;
1059  subdetMEs.SubDetTotClusterTH1 = bookME1D("TH1TotalNumberOfClusters",HistoName.c_str() , ibooker);
1060  subdetMEs.SubDetTotClusterTH1->setAxisTitle("Total number of clusters in subdetector");
1061  subdetMEs.SubDetTotClusterTH1->getTH1()->StatOverflows(kTRUE); // over/underflows in Mean calculation
1062  }
1063  // Total Number of Cluster vs Time - Profile
1066  HistoName = "TotalNumberOfClusterProfile__" + label;
1067  subdetMEs.SubDetTotClusterProf = ibooker.bookProfile(HistoName,HistoName,
1068  Parameters.getParameter<int32_t>("Nbins"),
1069  Parameters.getParameter<double>("xmin"),
1070  Parameters.getParameter<double>("xmax"),
1071  0 , 0 , "" );
1072  subdetMEs.SubDetTotClusterProf->setAxisTitle(Parameters.getParameter<std::string>("xaxis"),1);
1073  if (subdetMEs.SubDetTotClusterProf->kind() == MonitorElement::DQM_KIND_TPROFILE) subdetMEs.SubDetTotClusterProf->getTH1()->SetCanExtend(TH1::kAllAxes);
1074  }
1075 
1076  // Total Number of Cluster vs APV cycle - Profile
1078  edm::ParameterSet Parameters = conf_.getParameter<edm::ParameterSet>("TProfClustersApvCycle");
1079  HistoName = "Cluster_vs_ApvCycle__" + label;
1080  subdetMEs.SubDetClusterApvProf=ibooker.bookProfile(HistoName,HistoName,
1081  Parameters.getParameter<int32_t>("Nbins"),
1082  Parameters.getParameter<double>("xmin"),
1083  Parameters.getParameter<double>("xmax"),
1084  200, //that parameter should not be there !?
1085  Parameters.getParameter<double>("ymin"),
1086  Parameters.getParameter<double>("ymax"),
1087  "" );
1088  subdetMEs.SubDetClusterApvProf->setAxisTitle("Apv Cycle (Corrected Absolute Bx % 70)",1);
1089  }
1090 
1091  // Total Number of Clusters vs ApvCycle - 2D
1094  HistoName = "Cluster_vs_ApvCycle_2D__" + label;
1095  // Adjusting the scale for 2D histogram
1096  double h2ymax = 9999.0;
1097  double yfact = Parameters.getParameter<double>("yfactor");
1098  if(label.find("TIB") != std::string::npos) h2ymax = (6984.*256.)*yfact;
1099  else if (label.find("TID") != std::string::npos) h2ymax = (2208.*256.)*yfact;
1100  else if (label.find("TOB") != std::string::npos) h2ymax = (12906.*256.)*yfact;
1101  else if (label.find("TEC") != std::string::npos) h2ymax = (7552.*2.*256.)*yfact;
1102 
1103  subdetMEs.SubDetClusterApvTH2=ibooker.book2D(HistoName,HistoName,
1104  Parameters.getParameter<int32_t>("Nbinsx"),
1105  Parameters.getParameter<double>("xmin"),
1106  Parameters.getParameter<double>("xmax"),
1107  Parameters.getParameter<int32_t>("Nbinsy"),
1108  Parameters.getParameter<double>("ymin"),
1109  h2ymax);
1110  subdetMEs.SubDetClusterApvTH2->setAxisTitle("Apv Cycle (Corrected Absolute Bx % 70))",1);
1111  subdetMEs.SubDetClusterApvTH2->setAxisTitle("Total # of Clusters",2);
1112 
1113  }
1114 
1115  // Cluster widths vs amplitudes - 2D
1118  HistoName = "ClusterWidths_vs_Amplitudes__" + label;
1119  subdetMEs.SubDetClusWidthVsAmpTH2=ibooker.book2D(HistoName,HistoName,
1120  Parameters.getParameter<int32_t>("Nbinsx"),
1121  Parameters.getParameter<double>("xmin"),
1122  Parameters.getParameter<double>("xmax"),
1123  Parameters.getParameter<int32_t>("Nbinsy"),
1124  Parameters.getParameter<double>("ymin"),
1125  Parameters.getParameter<double>("ymax"));
1126  subdetMEs.SubDetClusWidthVsAmpTH2->setAxisTitle("Amplitudes (integrated ADC counts)",1);
1127  subdetMEs.SubDetClusWidthVsAmpTH2->setAxisTitle("Cluster widths",2);
1128 
1129  }
1130 
1131 
1132 
1133  // Total Number of Cluster vs DeltaBxCycle - Profile
1135  edm::ParameterSet Parameters = conf_.getParameter<edm::ParameterSet>("TProfClustersVsDBxCycle");
1136  HistoName = "Cluster_vs_DeltaBxCycle__" + label;
1137  subdetMEs.SubDetClusterDBxCycleProf = ibooker.bookProfile(HistoName,HistoName,
1138  Parameters.getParameter<int32_t>("Nbins"),
1139  Parameters.getParameter<double>("xmin"),
1140  Parameters.getParameter<double>("xmax"),
1141  200, //that parameter should not be there !?
1142  Parameters.getParameter<double>("ymin"),
1143  Parameters.getParameter<double>("ymax"),
1144  "" );
1145  subdetMEs.SubDetClusterDBxCycleProf->setAxisTitle("Delta Bunch Crossing Cycle",1);
1146  }
1147  // DeltaBx vs ApvCycle - 2DProfile
1150  HistoName = "DeltaBx_vs_ApvCycle__" + label;
1151  subdetMEs.SubDetApvDBxProf2 = ibooker.bookProfile2D(HistoName,HistoName,
1152  Parameters.getParameter<int32_t>("Nbinsx"),
1153  Parameters.getParameter<double>("xmin"),
1154  Parameters.getParameter<double>("xmax"),
1155  Parameters.getParameter<int32_t>("Nbinsy"),
1156  Parameters.getParameter<double>("ymin"),
1157  Parameters.getParameter<double>("ymax"),
1158  Parameters.getParameter<double>("zmin"),
1159  Parameters.getParameter<double>("zmax"),
1160  "" );
1161  subdetMEs.SubDetApvDBxProf2->setAxisTitle("APV Cycle (Corrected Absolute Bx % 70)",1);
1162  subdetMEs.SubDetApvDBxProf2->setAxisTitle("Delta Bunch Crossing Cycle",2);
1163  }
1164  SubDetMEsMap[label]=subdetMEs;
1165 }
1166 
1167 //
1168 // -- Fill Module Level Histograms
1169 //
1171 
1172  if(moduleswitchclusposon && (mod_mes.ClusterPosition)) // position of cluster
1173  (mod_mes.ClusterPosition)->Fill(cluster.position);
1174 
1175  // position of digis in cluster
1177  for(int ipos=cluster.start+1; ipos<=cluster.start+cluster.width; ipos++){
1178  (mod_mes.ClusterDigiPosition)->Fill(ipos);
1179  }
1180  }
1181 
1182  if(moduleswitchcluswidthon && (mod_mes.ClusterWidth)) // width of cluster
1183  (mod_mes.ClusterWidth)->Fill(static_cast<float>(cluster.width));
1184 
1185  if(moduleswitchclusstonon && (mod_mes.ClusterSignalOverNoise)) {// SignalToNoise
1186  if (cluster.noise > 0)
1187  (mod_mes.ClusterSignalOverNoise)->Fill(cluster.charge/cluster.noise);
1188  }
1189 
1190  if(moduleswitchclusstonVsposon && (mod_mes.ClusterSignalOverNoiseVsPos)) {// SignalToNoise
1191  if (cluster.noise > 0)
1192  (mod_mes.ClusterSignalOverNoiseVsPos)->Fill(cluster.position,cluster.charge/cluster.noise);
1193  }
1194 
1195  if(moduleswitchclusnoiseon && (mod_mes.ClusterNoise)) // Noise
1196  (mod_mes.ClusterNoise)->Fill(cluster.noise);
1197 
1198  if(moduleswitchcluschargeon && (mod_mes.ClusterCharge)) // charge of cluster
1199  (mod_mes.ClusterCharge)->Fill(cluster.charge);
1200 
1202 }
1203 //
1204 // -- Fill Layer Level MEs
1205 //
1207 
1208  if(layerswitchclusstonon) {
1209  fillME(layerMEs.LayerClusterStoN ,cluster.charge/cluster.noise);
1210  if (createTrendMEs) {
1211  fillME(layerMEs.LayerClusterStoNTrend,trendVar,cluster.charge/cluster.noise);
1212  }
1213  }
1214 
1216  fillME(layerMEs.LayerClusterCharge,cluster.charge);
1217  if (createTrendMEs) {
1218  fillME(layerMEs.LayerClusterChargeTrend,trendVar,cluster.charge);
1219  }
1220  }
1221 
1223  fillME(layerMEs.LayerClusterNoise ,cluster.noise);
1224  if (createTrendMEs) {
1225  fillME(layerMEs.LayerClusterNoiseTrend,trendVar,cluster.noise);
1226  }
1227  }
1228 
1230  fillME(layerMEs.LayerClusterWidth ,cluster.width);
1231  if (createTrendMEs) {
1232  fillME(layerMEs.LayerClusterWidthTrend,trendVar,cluster.width);
1233  }
1234  }
1235 
1237  fillME(layerMEs.LayerClusWidthVsAmpTH2, cluster.charge, cluster.width);
1238  }
1239 }
1240 //------------------------------------------------------------------------------------------
1242 {
1243  edm::ParameterSet ParametersTrend = trendVsLs_ ? conf_.getParameter<edm::ParameterSet>("TrendingLS") : conf_.getParameter<edm::ParameterSet>("Trending");
1244  MonitorElement* me = ibooker.bookProfile(HistoName,HistoName,
1245  ParametersTrend.getParameter<int32_t>("Nbins"),
1246  ParametersTrend.getParameter<double>("xmin"),
1247  ParametersTrend.getParameter<double>("xmax"),
1248  0 , 0 , "" );
1249  if(!me) return me;
1250  me->setAxisTitle(ParametersTrend.getParameter<std::string>("xaxis"),1);
1251  if (me->kind() == MonitorElement::DQM_KIND_TPROFILE) me->getTH1()->SetCanExtend(TH1::kAllAxes);
1252  return me;
1253 }
1254 
1255 //------------------------------------------------------------------------------------------
1256 MonitorElement* SiStripMonitorCluster::bookME1D(const char* ParameterSetLabel, const char* HistoName , DQMStore::IBooker & ibooker)
1257 {
1258  Parameters = conf_.getParameter<edm::ParameterSet>(ParameterSetLabel);
1259  return ibooker.book1D(HistoName,HistoName,
1260  Parameters.getParameter<int32_t>("Nbinx"),
1261  Parameters.getParameter<double>("xmin"),
1262  Parameters.getParameter<double>("xmax")
1263  );
1264 }
1265 
1266 //------------------------------------------------------------------------------------------
1267 MonitorElement* SiStripMonitorCluster::bookME2D(const char* ParameterSetLabel, const char* HistoName , DQMStore::IBooker & ibooker)
1268 {
1269  Parameters = conf_.getParameter<edm::ParameterSet>(ParameterSetLabel);
1270  return ibooker.book2D(HistoName,HistoName,
1271  Parameters.getParameter<int32_t>("Nbinsx"),
1272  Parameters.getParameter<double>("xmin"),
1273  Parameters.getParameter<double>("xmax"),
1274  Parameters.getParameter<int32_t>("Nbinsy"),
1275  Parameters.getParameter<double>("ymin"),
1276  Parameters.getParameter<double>("ymax")
1277  );
1278 }
1279 
1280 
1281 int SiStripMonitorCluster::FindRegion(int nstrip,int npix){
1282 
1283  double kplus= k0*(1+dk0/100);
1284  double kminus=k0*(1-dk0/100);
1285  int region=0;
1286 
1287  if (nstrip!=0 && npix >= (nstrip*kminus-q0) && npix <=(nstrip*kplus+q0)) region=1;
1288  else if (nstrip!=0 && npix < (nstrip*kminus-q0) && nstrip <= maxClus) region=2;
1289  else if (nstrip!=0 && npix < (nstrip*kminus-q0) && nstrip > maxClus) region=3;
1290  else if (nstrip!=0 && npix > (nstrip*kplus+q0)) region=4;
1291  else if (npix > minPix && nstrip==0) region=5;
1292  return region;
1293 
1294 }
RunNumber_t run() const
Definition: EventID.h:39
void ResetModuleMEs(uint32_t idet)
T getParameter(std::string const &) const
virtual void analyze(const edm::Event &, const edm::EventSetup &)
MonitorElement * bookME1D(const char *ParameterSetLabel, const char *HistoName, DQMStore::IBooker &ibooker)
int FindRegion(int nstrip, int npixel)
boost::transform_iterator< IterHelp, const_IdIter > const_iterator
void setSiStripFolderName(std::string name)
MonitorElement * PixVsStripMultiplicityRegions
std::pair< const std::string, const char * > getSubDetFolderAndTag(const uint32_t &detid, const TrackerTopology *tTopo)
The Signals That Services Can Subscribe To This is based on ActivityRegistry and is current per Services can connect to the signals distributed by the ActivityRegistry in order to monitor the activity of the application Each possible callback has some defined which we here list in angle e< void, edm::EventIDconst &, edm::Timestampconst & > We also list in braces which AR_WATCH_USING_METHOD_ is used for those or
Definition: Activities.doc:12
MonitorElement * bookProfile(Args &&...args)
Definition: DQMStore.h:157
bool getByToken(EDGetToken token, Handle< PROD > &result) const
Definition: Event.h:464
MonitorElement * GlobalCStripVsCpix
void setBinLabel(int bin, const std::string &label, int axis=1)
set bin label for x, y or z axis (axis=1, 2, 3 respectively)
edm::ESHandle< SiStripDetCabling > SiStripDetCabling_
std::pair< std::string, int32_t > GetSubDetAndLayer(const uint32_t &detid, const TrackerTopology *tTopo, bool ring_flag=0)
#define NULL
Definition: scimark2.h:8
MonitorElement * ClusterSignalOverNoiseVsPos
Provides a code based selection for trigger and DCS information in order to have no failing filters i...
MonitorElement * StripNoise2Cycle
data_type const * const_iterator
Definition: DetSetNew.h:30
void createLayerMEs(std::string label, int ndets, DQMStore::IBooker &ibooker)
std::map< std::string, LayerMEs > LayerMEsMap
bool isRealData() const
Definition: EventBase.h:64
std::map< std::string, std::vector< uint32_t > > LayerDetMap
void bookHistograms(DQMStore::IBooker &, edm::Run const &, edm::EventSetup const &) override
void Fill(long long x)
MonitorElement * NumberOfPixelClus
void setDetectorFolder(uint32_t rawdetid, const TrackerTopology *tTopo)
unsigned long long m_cacheID_
void createSubDetMEs(std::string label, DQMStore::IBooker &ibooker)
std::map< uint32_t, ModMEs > ModuleMEsMap
bool getStatus(edm::Event const &e, edm::EventSetup const &eSetup)
int iEvent
Definition: GenABIO.cc:230
void createMEs(const edm::EventSetup &es, DQMStore::IBooker &ibooker)
std::map< std::string, std::string > SubDetPhasePartMap
MonitorElement * GlobalApvCycleDBxTH2
vector< ParameterSet > Parameters
void getTOBDetectors(const std::vector< uint32_t > &inputDetRawIds, std::vector< uint32_t > &tobDetRawIds, uint32_t layer=0, uint32_t bkw_frw=0, uint32_t rod=0) const
MonitorElement * bookProfile2D(Args &&...args)
Definition: DQMStore.h:163
void Fill(HcalDetId &id, double val, std::vector< TH2F > &depth)
GenericTriggerEventFlag * genTriggerEventFlagPixelDCSfilter_
ConsumesCollector consumesCollector()
Use a ConsumesCollector to gather consumes information from helper functions.
T sqrt(T t)
Definition: SSEVec.h:48
void fill(uint32_t &detid, float value)
Definition: TkHistoMap.cc:180
bool accept(const edm::Event &event, const edm::EventSetup &setup)
To be called from analyze/filter() methods.
data_type const * data(size_t cell) const
MonitorElement * book1D(Args &&...args)
Definition: DQMStore.h:115
void tag(MonitorElement *, unsigned int)
Definition: DQMStore.cc:286
Abs< T >::type abs(const T &t)
Definition: Abs.h:22
std::pair< ContainerIterator, ContainerIterator > Range
MonitorElement * bookMETrend(const char *, DQMStore::IBooker &ibooker)
TH1 * getTH1(void) const
int orbitNumber() const
Definition: EventBase.h:67
MonitorElement * NumberOfStripClus
Kind kind(void) const
Get the type of the monitor element.
std::string getSubdetid(uint32_t id, const TrackerTopology *tTopo, bool flag_ring)
void dqmBeginRun(const edm::Run &, const edm::EventSetup &)
bool isValid() const
Definition: HandleBase.h:75
edm::EDGetTokenT< EventWithHistory > historyProducerToken_
MonitorElement * ClusWidthVsAmpTH2
MonitorElement * GlobalMainDiagonalPosition
MonitorElement * bookME2D(const char *ParameterSetLabel, const char *HistoName, DQMStore::IBooker &ibooker)
SiStripDCSStatus * dcsStatus_
bool failedToGet() const
Definition: HandleBase.h:79
GenericTriggerEventFlag * genTriggerEventFlagBPTXfilter_
void setLayerFolder(uint32_t rawdetid, const TrackerTopology *tTopo, int32_t layer=0, bool ring_flag=0)
void fillME(MonitorElement *ME, float value1)
SiStripMonitorCluster(const edm::ParameterSet &)
void setCurrentFolder(const std::string &fullpath)
Definition: DQMStore.cc:274
T const * product() const
Definition: Handle.h:81
MonitorElement * book2D(Args &&...args)
Definition: DQMStore.h:133
std::string createHistoId(std::string description, std::string id_type, uint32_t component_id)
const T & get() const
Definition: EventSetup.h:56
T const * product() const
Definition: ESHandle.h:86
std::string HistoName
MonitorElement * StripNoise3Cycle
void createModuleMEs(ModMEs &mod_single, uint32_t detid, DQMStore::IBooker &ibooker)
void getTECDetectors(const std::vector< uint32_t > &inputDetRawIds, std::vector< uint32_t > &tecDetRawIds, uint32_t side=0, uint32_t wheel=0, uint32_t petal_bkw_frw=0, uint32_t petal=0, uint32_t ring=0, uint32_t ster=0) const
edm::EventID id() const
Definition: EventBase.h:60
iterator end()
Definition: DetSetNew.h:70
edm::EDGetTokenT< edmNew::DetSetVector< SiPixelCluster > > clusterProducerPixToken_
std::map< std::string, SubDetMEs > SubDetMEsMap
void fillLayerMEs(LayerMEs &, ClusterProperties &cluster)
std::pair< ContainerIterator, ContainerIterator > Range
void getTIBDetectors(const std::vector< uint32_t > &inputDetRawIds, std::vector< uint32_t > &tibDetRawIds, uint32_t layer=0, uint32_t bkw_frw=0, uint32_t int_ext=0, uint32_t string=0) const
edm::EDGetTokenT< edmNew::DetSetVector< SiStripCluster > > clusterProducerStripToken_
void getTIDDetectors(const std::vector< uint32_t > &inputDetRawIds, std::vector< uint32_t > &tidDetRawIds, uint32_t side=0, uint32_t wheel=0, uint32_t ring=0, uint32_t ster=0) const
volatile std::atomic< bool > shutdown_flag false
void initRun(const edm::Run &run, const edm::EventSetup &setup)
To be called from beginRun() methods.
std::string createHistoLayer(std::string description, std::string id_type, std::string path, std::string flag)
std::pair< ContainerIterator, ContainerIterator > Range
Definition: SiStripNoises.h:48
size_type size() const
Definition: DetSetNew.h:86
edm::EDGetTokenT< APVCyclePhaseCollection > apvPhaseProducerToken_
GenericTriggerEventFlag * genTriggerEventFlagStripDCSfilter_
void setAxisTitle(const std::string &title, int axis=1)
set x-, y- or z-axis title (axis=1, 2, 3 respectively)
void Reset(void)
reset ME (ie. contents, errors, etc)
MonitorElement * NclusVsCycleTimeProf2D
void fillModuleMEs(ModMEs &mod_mes, ClusterProperties &cluster)
Definition: Run.h:43
int size() const
iterator begin()
Definition: DetSetNew.h:67