CMS 3D CMS Logo

List of all members | Public Member Functions | Protected Member Functions | Protected Attributes | Private Member Functions | Private Attributes
DTTriggerLutTest Class Reference

#include <DTTriggerLutTest.h>

Inheritance diagram for DTTriggerLutTest:
DTLocalTriggerBaseTest DQMEDHarvester edm::one::EDProducer< edm::one::WatchRuns, edm::one::WatchLuminosityBlocks, edm::one::SharedResources, edm::EndLuminosityBlockProducer > edm::one::EDProducerBase edm::ProducerBase edm::EDConsumerBase edm::ProductRegistryHelper

Public Member Functions

 DTTriggerLutTest (const edm::ParameterSet &ps)
 Constructor. More...
 
 ~DTTriggerLutTest () override
 Destructor. More...
 
- Public Member Functions inherited from DTLocalTriggerBaseTest
 DTLocalTriggerBaseTest ()
 Constructor. More...
 
 ~DTLocalTriggerBaseTest () override
 Destructor. More...
 
- Public Member Functions inherited from DQMEDHarvester
void beginLuminosityBlock (edm::LuminosityBlock const &, edm::EventSetup const &) final
 
void beginRun (edm::Run const &, edm::EventSetup const &) override
 
 DQMEDHarvester ()
 
void endJob () final
 
void endLuminosityBlock (edm::LuminosityBlock const &, edm::EventSetup const &) final
 
void endRun (edm::Run const &, edm::EventSetup const &) override
 
void produce (edm::Event &, edm::EventSetup const &) final
 
 ~DQMEDHarvester () override=default
 
- Public Member Functions inherited from edm::one::EDProducer< edm::one::WatchRuns, edm::one::WatchLuminosityBlocks, edm::one::SharedResources, edm::EndLuminosityBlockProducer >
 EDProducer ()=default
 
bool wantsGlobalLuminosityBlocks () const final
 
bool wantsGlobalRuns () const final
 
- Public Member Functions inherited from edm::one::EDProducerBase
 EDProducerBase ()
 
ModuleDescription const & moduleDescription () const
 
bool wantsStreamLuminosityBlocks () const
 
bool wantsStreamRuns () const
 
 ~EDProducerBase () override
 
- Public Member Functions inherited from edm::ProducerBase
void callWhenNewProductsRegistered (std::function< void(BranchDescription const &)> const &func)
 
std::vector< edm::ProductResolverIndex > const & indiciesForPutProducts (BranchType iBranchType) const
 
 ProducerBase ()
 
std::vector< edm::ProductResolverIndex > const & putTokenIndexToProductResolverIndex () const
 
void registerProducts (ProducerBase *, ProductRegistry *, ModuleDescription const &)
 
std::function< void(BranchDescription const &)> registrationCallback () const
 used by the fwk to register list of products More...
 
void resolvePutIndicies (BranchType iBranchType, ModuleToResolverIndicies const &iIndicies, std::string const &moduleLabel)
 
virtual ~ProducerBase () noexcept(false)
 
- Public Member Functions inherited from edm::EDConsumerBase
std::vector< ConsumesInfoconsumesInfo () const
 
void convertCurrentProcessAlias (std::string const &processName)
 Convert "@currentProcess" in InputTag process names to the actual current process name. More...
 
 EDConsumerBase ()
 
 EDConsumerBase (EDConsumerBase const &)=delete
 
 EDConsumerBase (EDConsumerBase &&)=default
 
ProductResolverIndexAndSkipBit indexFrom (EDGetToken, BranchType, TypeID const &) const
 
void itemsMayGet (BranchType, std::vector< ProductResolverIndexAndSkipBit > &) const
 
void itemsToGet (BranchType, std::vector< ProductResolverIndexAndSkipBit > &) const
 
std::vector< ProductResolverIndexAndSkipBit > const & itemsToGetFrom (BranchType iType) const
 
void labelsForToken (EDGetToken iToken, Labels &oLabels) const
 
void modulesWhoseProductsAreConsumed (std::vector< ModuleDescription const * > &modules, ProductRegistry const &preg, std::map< std::string, ModuleDescription const * > const &labelsToDesc, std::string const &processName) const
 
EDConsumerBase const & operator= (EDConsumerBase const &)=delete
 
EDConsumerBaseoperator= (EDConsumerBase &&)=default
 
bool registeredToConsume (ProductResolverIndex, bool, BranchType) const
 
bool registeredToConsumeMany (TypeID const &, BranchType) const
 
ProductResolverIndexAndSkipBit uncheckedIndexFrom (EDGetToken) const
 
void updateLookup (BranchType iBranchType, ProductResolverIndexHelper const &, bool iPrefetchMayGet)
 
virtual ~EDConsumerBase () noexcept(false)
 

Protected Member Functions

void beginRun (const edm::Run &r, const edm::EventSetup &c) override
 BeginRun. More...
 
void Bookings (DQMStore::IBooker &, DQMStore::IGetter &)
 
void runClientDiagnostic (DQMStore::IBooker &, DQMStore::IGetter &) override
 Run client analysis. More...
 
- Protected Member Functions inherited from DTLocalTriggerBaseTest
void beginRun (edm::Run const &run, edm::EventSetup const &context) override
 BeginRun. More...
 
void bookCmsHistos (DQMStore::IBooker &, std::string hTag, std::string folder="", bool isGlb=false)
 Book the new MEs (CMS summary) More...
 
void bookSectorHistos (DQMStore::IBooker &, int wheel, int sector, std::string hTag, std::string folder="")
 Book the new MEs (for each sector) More...
 
void bookWheelHistos (DQMStore::IBooker &, int wheel, std::string hTag, std::string folder="")
 Book the new MEs (for each wheel) More...
 
std::string category ()
 Get message logger name. More...
 
void dqmEndJob (DQMStore::IBooker &, DQMStore::IGetter &) override
 
void dqmEndLuminosityBlock (DQMStore::IBooker &, DQMStore::IGetter &, edm::LuminosityBlock const &, edm::EventSetup const &) override
 Perform client diagnostic in online. More...
 
void endRun (edm::Run const &run, edm::EventSetup const &context) override
 Perform client diagnostic in offline. More...
 
std::string fullName (std::string htype)
 Create fullname from histo partial name. More...
 
template<class T >
TgetHisto (MonitorElement *me)
 Convert ME to Histogram fo type T. More...
 
std::string getMEName (std::string histoTag, std::string subfolder, const DTChamberId &chambid)
 Get the ME name (by chamber) More...
 
std::string getMEName (std::string histoTag, std::string subfolder, int wh)
 Get the ME name (by wheel) More...
 
std::pair< float, float > phiRange (const DTChamberId &id)
 Calculate phi range for histograms. More...
 
void setConfig (const edm::ParameterSet &ps, std::string name)
 Set configuration variables. More...
 
std::string & topFolder (bool isTM)
 Get top folder name. More...
 
- Protected Member Functions inherited from edm::EDConsumerBase
template<typename ProductType , BranchType B = InEvent>
EDGetTokenT< ProductType > consumes (edm::InputTag const &tag)
 
EDGetToken consumes (const TypeToGet &id, edm::InputTag const &tag)
 
template<BranchType B>
EDGetToken consumes (TypeToGet const &id, edm::InputTag const &tag)
 
ConsumesCollector consumesCollector ()
 Use a ConsumesCollector to gather consumes information from helper functions. More...
 
template<typename ProductType , BranchType B = InEvent>
void consumesMany ()
 
void consumesMany (const TypeToGet &id)
 
template<BranchType B>
void consumesMany (const TypeToGet &id)
 
template<typename ProductType , BranchType B = InEvent>
EDGetTokenT< ProductType > mayConsume (edm::InputTag const &tag)
 
EDGetToken mayConsume (const TypeToGet &id, edm::InputTag const &tag)
 
template<BranchType B>
EDGetToken mayConsume (const TypeToGet &id, edm::InputTag const &tag)
 

Protected Attributes

const int wheelArrayShift = 3
 
- Protected Attributes inherited from DTLocalTriggerBaseTest
std::string baseFolderDDU
 
std::string baseFolderTM
 
std::map< std::string, MonitorElement * > cmsME
 
std::string hwSource
 
std::vector< std::string > hwSources
 
edm::ESHandle< DTGeometrymuonGeom
 
int nevents
 
unsigned int nLumiSegs
 
edm::ParameterSet parameters
 
int prescaleFactor
 
int run
 
bool runOnline
 
std::map< int, std::map< std::string, MonitorElement * > > secME
 
std::string sourceFolder
 
std::string testName
 
std::string trigSource
 
std::vector< std::string > trigSources
 
std::map< int, std::map< std::string, MonitorElement * > > whME
 

Private Member Functions

void bookCmsHistos1d (DQMStore::IBooker &, std::string hTag, std::string folder="")
 
void fillWhPlot (MonitorElement *plot, int sect, int stat, float value, bool lessIsBest=true)
 Fill summary plots managing double MB4 chambers. More...
 
int performLutTest (double perc, double threshold1, double threshold2)
 Perform Lut Test logical operations. More...
 

Private Attributes

bool bookingdone
 
bool detailedAnalysis
 
double thresholdErrPhi
 
double thresholdErrPhiB
 
double thresholdWarnPhi
 
double thresholdWarnPhiB
 
double validRange
 

Additional Inherited Members

- Public Types inherited from edm::one::EDProducerBase
typedef EDProducerBase ModuleType
 
- Public Types inherited from edm::ProducerBase
using ModuleToResolverIndicies = std::unordered_multimap< std::string, std::tuple< edm::TypeID const *, const char *, edm::ProductResolverIndex >>
 
typedef ProductRegistryHelper::TypeLabelList TypeLabelList
 
- Public Types inherited from edm::EDConsumerBase
typedef ProductLabels Labels
 
- Static Public Member Functions inherited from edm::one::EDProducerBase
static const std::string & baseType ()
 
static void fillDescriptions (ConfigurationDescriptions &descriptions)
 
static void prevalidate (ConfigurationDescriptions &descriptions)
 

Detailed Description

Definition at line 22 of file DTTriggerLutTest.h.

Constructor & Destructor Documentation

DTTriggerLutTest::DTTriggerLutTest ( const edm::ParameterSet ps)

Constructor.

Definition at line 37 of file DTTriggerLutTest.cc.

References edm::ParameterSet::getUntrackedParameter().

37  {
38 
39  setConfig(ps,"DTTriggerLut");
40  baseFolderTM = "DT/03-LocalTrigger-TM/";
41  baseFolderDDU = "DT/04-LocalTrigger-DDU/";
42  thresholdWarnPhi = ps.getUntrackedParameter<double>("thresholdWarnPhi");
43  thresholdErrPhi = ps.getUntrackedParameter<double>("thresholdErrPhi");
44  thresholdWarnPhiB = ps.getUntrackedParameter<double>("thresholdWarnPhiB");
45  thresholdErrPhiB = ps.getUntrackedParameter<double>("thresholdErrPhiB");
46  validRange = ps.getUntrackedParameter<double>("validRange");
47  detailedAnalysis = ps.getUntrackedParameter<bool>("detailedAnalysis");
48 
49  bookingdone = false;
50 
51 }
T getUntrackedParameter(std::string const &, T const &) const
void setConfig(const edm::ParameterSet &ps, std::string name)
Set configuration variables.
DTTriggerLutTest::~DTTriggerLutTest ( )
override

Destructor.

Definition at line 54 of file DTTriggerLutTest.cc.

54  {
55 
56 }

Member Function Documentation

void DTTriggerLutTest::beginRun ( const edm::Run r,
const edm::EventSetup c 
)
overrideprotected

BeginRun.

Definition at line 111 of file DTTriggerLutTest.cc.

References DTLocalTriggerBaseTest::beginRun().

111  {
112 
114 
115 }
void beginRun(edm::Run const &run, edm::EventSetup const &context) override
BeginRun.
void DTTriggerLutTest::bookCmsHistos1d ( DQMStore::IBooker ,
std::string  hTag,
std::string  folder = "" 
)
private

Definition at line 328 of file DTTriggerLutTest.cc.

References DQMStore::IBooker::book1D(), python.rootplot.argparse::category, LogTrace, MonitorElement::setAxisTitle(), and DQMStore::IBooker::setCurrentFolder().

328  {
329 
330  string basedir = topFolder(true);
331  if (folder != "") {
332  basedir += folder +"/" ;
333  }
334  ibooker.setCurrentFolder(basedir);
335 
336  string hName = fullName(hTag);
337  LogTrace(category()) << "[" << testName << "Test]: booking " << basedir << hName;
338 
339  MonitorElement* me = ibooker.book1D(hName.c_str(),hName.c_str(),101,-0.005,1.005);
340  me->setAxisTitle("Percentage",1);
341  cmsME[hName] = me;
342 
343 }
#define LogTrace(id)
std::string category()
Get message logger name.
std::string & topFolder(bool isTM)
Get top folder name.
std::map< std::string, MonitorElement * > cmsME
void setAxisTitle(const std::string &title, int axis=1)
set x-, y- or z-axis title (axis=1, 2, 3 respectively)
std::string fullName(std::string htype)
Create fullname from histo partial name.
void DTTriggerLutTest::Bookings ( DQMStore::IBooker ibooker,
DQMStore::IGetter igetter 
)
protected

Definition at line 59 of file DTTriggerLutTest.cc.

59  {
60 
61  bookingdone = true;
62 
63  vector<string>::const_iterator iTr = trigSources.begin();
64  vector<string>::const_iterator trEnd = trigSources.end();
65  vector<string>::const_iterator iHw = hwSources.begin();
66  vector<string>::const_iterator hwEnd = hwSources.end();
67 
68  //Booking
69  if(parameters.getUntrackedParameter<bool>("staticBooking")){
70 
71  for (; iTr != trEnd; ++iTr){
72  trigSource = (*iTr);
73  for (; iHw != hwEnd; ++iHw){
74  hwSource = (*iHw);
75  // Loop over the TriggerUnits
76  for (int wh=-2; wh<=2; ++wh){
77  if (detailedAnalysis){
78  bookWheelHistos(ibooker,wh,"PhiResidualPercentage");
79  bookWheelHistos(ibooker,wh,"PhibResidualPercentage");
80  }
81 
82  bookWheelHistos(ibooker,wh,"PhiLutSummary","Summaries");
83  bookWheelHistos(ibooker,wh,"PhibLutSummary","Summaries");
84 
85  if (detailedAnalysis){
86  bookWheelHistos(ibooker,wh,"PhiResidualMean");
87  bookWheelHistos(ibooker,wh,"PhiResidualRMS");
88  bookWheelHistos(ibooker,wh,"PhibResidualMean");
89  bookWheelHistos(ibooker,wh,"PhibResidualRMS");
90  bookWheelHistos(ibooker,wh,"CorrelationFactorPhi");
91  bookWheelHistos(ibooker,wh,"CorrelationFactorPhib");
92  bookWheelHistos(ibooker,wh,"DoublePeakFlagPhib");
93  }
94 
95  }
96 
97  bookCmsHistos(ibooker,"TrigLutSummary","",true);
98  bookCmsHistos(ibooker,"PhiLutSummary");
99  bookCmsHistos(ibooker,"PhibLutSummary");
100  if (detailedAnalysis){
101 
102  bookCmsHistos1d(ibooker,"PhiPercentageSummary");
103  bookCmsHistos1d(ibooker,"PhibPercentageSummary");
104  }
105  }
106  }
107  }
108 }
std::vector< std::string > trigSources
void bookCmsHistos1d(DQMStore::IBooker &, std::string hTag, std::string folder="")
std::vector< std::string > hwSources
void bookWheelHistos(DQMStore::IBooker &, int wheel, std::string hTag, std::string folder="")
Book the new MEs (for each wheel)
void bookCmsHistos(DQMStore::IBooker &, std::string hTag, std::string folder="", bool isGlb=false)
Book the new MEs (CMS summary)
void DTTriggerLutTest::fillWhPlot ( MonitorElement plot,
int  sect,
int  stat,
float  value,
bool  lessIsBest = true 
)
private

Fill summary plots managing double MB4 chambers.

Definition at line 345 of file DTTriggerLutTest.cc.

References MonitorElement::getBinContent(), and MonitorElement::setBinContent().

345  {
346 
347  if (sect>12) {
348  int scsect = sect==13 ? 4 : 10;
349  if ((value>plot->getBinContent(scsect,stat)) == lessIsBest) {
350  plot->setBinContent(scsect,stat,value);
351  }
352  }
353  else {
354  plot->setBinContent(sect,stat,value);
355  }
356 
357  return;
358 
359 }
void setBinContent(int binx, double content)
set content of bin (1-D)
Definition: value.py:1
double getBinContent(int binx) const
get content of bin (1-D)
int DTTriggerLutTest::performLutTest ( double  perc,
double  threshold1,
double  threshold2 
)
private

Perform Lut Test logical operations.

Definition at line 317 of file DTTriggerLutTest.cc.

References mps_fire::result.

317  {
318 
319  bool isInWarn = perc<thresholdWarn;
320  bool isInErr = perc<thresholdErr;
321 
322  int result= isInErr ? 2 : isInWarn ? 3 : 0;
323 
324  return result;
325 
326 }
void DTTriggerLutTest::runClientDiagnostic ( DQMStore::IBooker ibooker,
DQMStore::IGetter igetter 
)
overrideprotectedvirtual

Run client analysis.

Implements DTLocalTriggerBaseTest.

Definition at line 117 of file DTTriggerLutTest.cc.

References corr, DQMStore::IGetter::get(), edm::max(), Mean, SiStripPI::rms, trackingPlots::stat, and DTChamberId::wheel().

117  {
118 
119  if (!bookingdone) Bookings(ibooker,igetter);
120 
121  // Reset lut percentage 1D summaries
122  if (detailedAnalysis){
123  cmsME.find(fullName("PhiPercentageSummary"))->second->Reset();
124  cmsME.find(fullName("PhibPercentageSummary"))->second->Reset();
125  }
126 
127  // Loop over Trig & Hw sources
128  for (vector<string>::const_iterator iTr = trigSources.begin(); iTr != trigSources.end(); ++iTr){
129  trigSource = (*iTr);
130  for (vector<string>::const_iterator iHw = hwSources.begin(); iHw != hwSources.end(); ++iHw){
131  hwSource = (*iHw);
132  vector<const DTChamber*>::const_iterator chIt = muonGeom->chambers().begin();
133  vector<const DTChamber*>::const_iterator chEnd = muonGeom->chambers().end();
134  for (; chIt != chEnd; ++chIt) {
135 
136  DTChamberId chId((*chIt)->id());
137  int wh = chId.wheel();
138  int sect = chId.sector();
139  int stat = chId.station();
140 
141  std::map<std::string,MonitorElement*> &innerME = whME[wh];
142 
143  // Make Phi Residual Summary
144  TH1F * PhiResidual = getHisto<TH1F>(igetter.get(getMEName("PhiResidual","Segment", chId)));
145  int phiSummary = 1;
146  if (PhiResidual && PhiResidual->GetEntries()>10) {
147 
148  if( innerME.find(fullName("PhiResidualPercentage")) == innerME.end() ){
149  bookWheelHistos(ibooker,wh,"PhiResidualPercentage");
150  }
151 
152  float rangeBin = validRange/(PhiResidual->GetBinWidth(1));
153  float center = (PhiResidual->GetNbinsX())/2.;
154  float perc = (PhiResidual->Integral(floor(center-rangeBin),ceil(center+rangeBin)))/(PhiResidual->Integral());
155  fillWhPlot(innerME.find(fullName("PhiResidualPercentage"))->second,sect,stat,perc,false);
157  if (detailedAnalysis) cmsME.find(fullName("PhiPercentageSummary"))->second->Fill(perc);
158 
159  }
160 
161  fillWhPlot(innerME.find(fullName("PhiLutSummary"))->second,sect,stat,phiSummary);
162 
163  if (detailedAnalysis){
164 
165  if ((phiSummary==0)||(phiSummary==3)){ //Information on the Peak
166 
167  if( innerME.find(fullName("PhiResidualMean")) == innerME.end() ){
168  bookWheelHistos(ibooker,wh,"PhiResidualMean");
169  bookWheelHistos(ibooker,wh,"PhiResidualRMS");
170  }
171 
172  float center = (PhiResidual->GetNbinsX())/2.;
173  float rangeBin = validRange/(PhiResidual->GetBinWidth(1));
174  PhiResidual->GetXaxis()->SetRange(floor(center-rangeBin),ceil(center+rangeBin));
175  float max = PhiResidual->GetMaximumBin();
176  float maxBin = PhiResidual->GetXaxis()->FindBin(max);
177  float nBinMax = 0.5/(PhiResidual->GetBinWidth(1));
178  PhiResidual->GetXaxis()->SetRange(floor(maxBin-nBinMax),ceil(maxBin+nBinMax));
179  float Mean = PhiResidual->GetMean();
180  float rms = PhiResidual->GetRMS();
181 
182  fillWhPlot(innerME.find(fullName("PhiResidualMean"))->second,sect,stat,Mean);
183  fillWhPlot(innerME.find(fullName("PhiResidualRMS"))->second,sect,stat,rms);
184 
185  }
186 
187  TH2F * TrackPhitkvsPhitrig = getHisto<TH2F>(igetter.get(getMEName("PhitkvsPhitrig","Segment", chId)));
188 
189  if (TrackPhitkvsPhitrig && TrackPhitkvsPhitrig->GetEntries()>100) {
190  float corr = TrackPhitkvsPhitrig->GetCorrelationFactor();
191  if( innerME.find(fullName("CorrelationFactorPhi")) == innerME.end() ){
192  bookWheelHistos(ibooker,wh,"CorrelationFactorPhi");
193  }
194  fillWhPlot(innerME.find(fullName("CorrelationFactorPhi"))->second,sect,stat,corr,false);
195  }
196 
197  }
198 
199 
200  // Make Phib Residual Summary
201  TH1F * PhibResidual = getHisto<TH1F>(igetter.get(getMEName("PhibResidual","Segment", chId)));
202  int phibSummary = stat==3 ? -1 : 1; // station 3 has no meaningful MB3 phi bending information
203 
204  if (stat != 3 && PhibResidual && PhibResidual->GetEntries()>10) {// station 3 has no meaningful MB3 phi bending information
205 
206  if( innerME.find(fullName("PhibResidualPercentage")) == innerME.end() ){
207  bookWheelHistos(ibooker,wh,"PhibResidualPercentage");
208  }
209 
210  float rangeBin = validRange/(PhibResidual->GetBinWidth(1));
211  float center = (PhibResidual->GetNbinsX())/2.;
212  float perc = (PhibResidual->Integral(floor(center-rangeBin),ceil(center+rangeBin)))/(PhibResidual->Integral());
213 
214  fillWhPlot(innerME.find(fullName("PhibResidualPercentage"))->second,sect,stat,perc,false);
216  if (detailedAnalysis) cmsME.find(fullName("PhibPercentageSummary"))->second->Fill(perc);
217 
218  }
219 
220  fillWhPlot(innerME.find(fullName("PhibLutSummary"))->second,sect,stat,phibSummary);
221 
222  if (detailedAnalysis){
223 
224  if ((phibSummary==0)||(phibSummary==3)){
225 
226  if( innerME.find(fullName("PhibResidualMean")) == innerME.end() ){
227  bookWheelHistos(ibooker,wh,"PhibResidualMean");
228  bookWheelHistos(ibooker,wh,"PhibResidualRMS");
229  }
230 
231  float center = (PhibResidual->GetNbinsX())/2.;
232  float rangeBin = validRange/(PhibResidual->GetBinWidth(1));
233  PhibResidual->GetXaxis()->SetRange(floor(center-rangeBin),ceil(center+rangeBin));
234  float max = PhibResidual->GetMaximumBin();
235  float maxBin = PhibResidual->GetXaxis()->FindBin(max);
236  float nBinMax = 0.5/(PhibResidual->GetBinWidth(1));
237  PhibResidual->GetXaxis()->SetRange(floor(maxBin-nBinMax),ceil(maxBin+nBinMax));
238  float Mean = PhibResidual->GetMean();
239  float rms = PhibResidual->GetRMS();
240 
241  fillWhPlot(innerME.find(fullName("PhibResidualMean"))->second,sect,stat,Mean);
242  fillWhPlot(innerME.find(fullName("PhibResidualRMS"))->second,sect,stat,rms);
243  }
244 
245  TH2F * TrackPhibtkvsPhibtrig = getHisto<TH2F>(igetter.get(getMEName("PhibtkvsPhibtrig","Segment", chId)));
246  if (TrackPhibtkvsPhibtrig && TrackPhibtkvsPhibtrig->GetEntries()>100) {
247 
248  float corr = TrackPhibtkvsPhibtrig->GetCorrelationFactor();
249  if( innerME.find(fullName("CorrelationFactorPhib")) == innerME.end() ){
250  bookWheelHistos(ibooker,wh,"CorrelationFactorPhib");
251  }
252 
253  fillWhPlot(innerME.find(fullName("CorrelationFactorPhib"))->second,sect,stat,corr,false);
254 
255  }
256 
257  }
258  }
259  }
260  }
261 
262  // Barrel Summary Plots
263  for (vector<string>::const_iterator iTr = trigSources.begin(); iTr != trigSources.end(); ++iTr){
264  trigSource = (*iTr);
265  for (vector<string>::const_iterator iHw = hwSources.begin(); iHw != hwSources.end(); ++iHw){
266  hwSource = (*iHw);
267  for (int wh=-2; wh<=2; ++wh){
268 
269  std::map<std::string,MonitorElement*> *innerME = &(whME[wh]);
270 
271  TH2F* phiWhSummary = getHisto<TH2F>(innerME->find(fullName("PhiLutSummary"))->second);
272  TH2F* phibWhSummary = getHisto<TH2F>(innerME->find(fullName("PhibLutSummary"))->second);
273 
274  for (int sect=1; sect<=12; ++sect){
275 
276  int phiSectorTotal = 0; // CB dai 1 occhio a questo
277  int phibSectorTotal = 0;
278  int nullphi = 0;
279  int nullphib = 0;
280  int phiStatus = 5;
281  int phibStatus = 5;
282  int glbStatus = 0;
283 
284  for (int stat=1; stat<=4; ++stat){
285  if (phiWhSummary->GetBinContent(sect,stat)==2){
286  phiSectorTotal +=1;
287  glbStatus += 1;
288  }
289  if (phiWhSummary->GetBinContent(sect,stat)==1)
290  nullphi+=1;
291  if (phibWhSummary->GetBinContent(sect,stat)==2) {
292  phibSectorTotal+=1;
293  glbStatus += 1;
294  }
295  if (phibWhSummary->GetBinContent(sect,stat)==1)
296  nullphib+=1;
297  }
298  if (nullphi!=4)
299  phiStatus=phiSectorTotal;
300  else
301  phiStatus=5;
302  if (nullphib!=3)
303  phibStatus=phibSectorTotal;
304  else
305  phibStatus=5;
306 
307  cmsME.find("TrigLutSummary")->second->setBinContent(sect,wh+wheelArrayShift,glbStatus);
308  cmsME.find(fullName("PhiLutSummary"))->second->setBinContent(sect,wh+wheelArrayShift,phiStatus);
309  cmsME.find(fullName("PhibLutSummary"))->second->setBinContent(sect,wh+wheelArrayShift,phibStatus);
310  }
311  }
312  }
313  }
314 
315 }
std::vector< std::string > trigSources
const std::vector< const DTChamber * > & chambers() const
Return a vector of all Chamber.
Definition: DTGeometry.cc:84
std::map< int, std::map< std::string, MonitorElement * > > whME
MonitorElement * get(const std::string &path)
Definition: DQMStore.cc:307
int performLutTest(double perc, double threshold1, double threshold2)
Perform Lut Test logical operations.
void fillWhPlot(MonitorElement *plot, int sect, int stat, float value, bool lessIsBest=true)
Fill summary plots managing double MB4 chambers.
edm::ESHandle< DTGeometry > muonGeom
JetCorrectorParameters corr
Definition: classes.h:5
std::string getMEName(std::string histoTag, std::string subfolder, const DTChamberId &chambid)
Get the ME name (by chamber)
std::map< std::string, MonitorElement * > cmsME
void Bookings(DQMStore::IBooker &, DQMStore::IGetter &)
std::vector< std::string > hwSources
int wheel() const
Return the wheel number.
Definition: DTChamberId.h:45
void bookWheelHistos(DQMStore::IBooker &, int wheel, std::string hTag, std::string folder="")
Book the new MEs (for each wheel)
std::string fullName(std::string htype)
Create fullname from histo partial name.
const int wheelArrayShift

Member Data Documentation

bool DTTriggerLutTest::bookingdone
private

Definition at line 59 of file DTTriggerLutTest.h.

bool DTTriggerLutTest::detailedAnalysis
private

Definition at line 57 of file DTTriggerLutTest.h.

double DTTriggerLutTest::thresholdErrPhi
private

Definition at line 54 of file DTTriggerLutTest.h.

double DTTriggerLutTest::thresholdErrPhiB
private

Definition at line 55 of file DTTriggerLutTest.h.

double DTTriggerLutTest::thresholdWarnPhi
private

Definition at line 54 of file DTTriggerLutTest.h.

double DTTriggerLutTest::thresholdWarnPhiB
private

Definition at line 55 of file DTTriggerLutTest.h.

double DTTriggerLutTest::validRange
private

Definition at line 56 of file DTTriggerLutTest.h.

const int DTTriggerLutTest::wheelArrayShift = 3
protected

Definition at line 42 of file DTTriggerLutTest.h.