CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
List of all members | Public Member Functions | Private Member Functions | Private Attributes
DTDCSByLumiSummary Class Reference

#include <DTDCSByLumiSummary.h>

Inheritance diagram for DTDCSByLumiSummary:
edm::EDAnalyzer edm::EDConsumerBase

Public Member Functions

 DTDCSByLumiSummary (const edm::ParameterSet &pset)
 Constructor. More...
 
virtual ~DTDCSByLumiSummary ()
 Destructor. More...
 
- Public Member Functions inherited from edm::EDAnalyzer
 EDAnalyzer ()
 
std::string workerType () const
 
virtual ~EDAnalyzer ()
 
- Public Member Functions inherited from edm::EDConsumerBase
 EDConsumerBase ()
 
ProductHolderIndex indexFrom (EDGetToken, BranchType, TypeID const &) const
 
void itemsMayGet (BranchType, std::vector< ProductHolderIndex > &) const
 
void itemsToGet (BranchType, std::vector< ProductHolderIndex > &) const
 
void labelsForToken (EDGetToken iToken, Labels &oLabels) const
 
void updateLookup (BranchType iBranchType, ProductHolderIndexHelper const &)
 
virtual ~EDConsumerBase ()
 

Private Member Functions

virtual void analyze (const edm::Event &event, const edm::EventSetup &setup)
 
virtual void beginJob ()
 
virtual void beginLuminosityBlock (const edm::LuminosityBlock &lumi, const edm::EventSetup &setup)
 
virtual void endJob ()
 
virtual void endLuminosityBlock (const edm::LuminosityBlock &lumi, const edm::EventSetup &setup)
 
virtual void endRun (const edm::Run &run, const edm::EventSetup &setup)
 

Private Attributes

std::map< int, std::vector
< float > > 
dcsFracPerLumi
 
MonitorElementglobalHVSummary
 
std::vector
< DTTimeEvolutionHisto * > 
hDCSFracTrend
 
DQMStoretheDQMStore
 
MonitorElementtotalDCSFraction
 
std::vector< MonitorElement * > totalDCSFractionWh
 

Additional Inherited Members

- Public Types inherited from edm::EDAnalyzer
typedef EDAnalyzer ModuleType
 
typedef WorkerT< EDAnalyzerWorkerType
 
- Static Public Member Functions inherited from edm::EDAnalyzer
static const std::string & baseType ()
 
static void fillDescriptions (ConfigurationDescriptions &descriptions)
 
static void prevalidate (ConfigurationDescriptions &)
 
- Protected Member Functions inherited from edm::EDAnalyzer
void callWhenNewProductsRegistered (std::function< void(BranchDescription const &)> const &func)
 
CurrentProcessingContext const * currentContext () const
 
- 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)
 

Detailed Description

No description available.

Date:
2011/03/02 14:00:06
Revision:
1.1
Author
C. Battilana - CIEMAT
P. Bellan - INFN PD
A. Branca = INFN PD

Definition at line 26 of file DTDCSByLumiSummary.h.

Constructor & Destructor Documentation

DTDCSByLumiSummary::DTDCSByLumiSummary ( const edm::ParameterSet pset)

Constructor.

Definition at line 30 of file DTDCSByLumiSummary.cc.

30 {}
DTDCSByLumiSummary::~DTDCSByLumiSummary ( )
virtual

Destructor.

Definition at line 33 of file DTDCSByLumiSummary.cc.

33 {}

Member Function Documentation

void DTDCSByLumiSummary::analyze ( const edm::Event event,
const edm::EventSetup setup 
)
privatevirtual

Implements edm::EDAnalyzer.

Definition at line 201 of file DTDCSByLumiSummary.cc.

201  {
202 
203 }
void DTDCSByLumiSummary::beginJob ( void  )
privatevirtual

Reimplemented from edm::EDAnalyzer.

Definition at line 36 of file DTDCSByLumiSummary.cc.

References cppFunctionSkipper::operator, and MonitorElement::setLumiFlag().

36  {
37 
39 
40  // book the ME
41  theDQMStore->setCurrentFolder("DT/EventInfo/DCSContents");
42 
43  totalDCSFraction = theDQMStore->bookFloat("DTDCSSummary");
44  totalDCSFraction->setLumiFlag(); // set LumiFlag to DCS content value (save it by lumi)
45 
46  globalHVSummary = theDQMStore->book2D("HVGlbSummary","HV Status Summary",1,1,13,5,-2,3);
47  globalHVSummary->setAxisTitle("Sectors",1);
48  globalHVSummary->setAxisTitle("Wheel",2);
49 
50  for(int wh=-2;wh<=2;wh++){
51 
52  stringstream wheel_str; wheel_str << wh;
53 
54  MonitorElement* FractionWh = theDQMStore->bookFloat("DT_Wheel"+wheel_str.str());
55  FractionWh->setLumiFlag(); // set LumiFlag to DCS content value (save it by lumi)
56 
57  totalDCSFractionWh.push_back(FractionWh);
58  }
59 
61 
62 }
MonitorElement * globalHVSummary
MonitorElement * bookFloat(const char *name)
Book float.
Definition: DQMStore.cc:659
MonitorElement * totalDCSFraction
std::vector< MonitorElement * > totalDCSFractionWh
void setLumiFlag(void)
this ME is meant to be stored for each luminosity section
MonitorElement * book2D(const char *name, const char *title, int nchX, double lowX, double highX, int nchY, double lowY, double highY)
Book 2D histogram.
Definition: DQMStore.cc:850
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)
void setCurrentFolder(const std::string &fullpath)
Definition: DQMStore.cc:434
void DTDCSByLumiSummary::beginLuminosityBlock ( const edm::LuminosityBlock lumi,
const edm::EventSetup setup 
)
privatevirtual

Reimplemented from edm::EDAnalyzer.

Definition at line 65 of file DTDCSByLumiSummary.cc.

65  {
66 
67  // CB LumiFlag marked products are reset on LS boundaries
69 
70  for(int wh=-2;wh<=2;wh++){
71  totalDCSFractionWh[wh+2]->Reset();
72  }
73 
74 }
MonitorElement * totalDCSFraction
std::vector< MonitorElement * > totalDCSFractionWh
void Reset(void)
reset ME (ie. contents, errors, etc)
void DTDCSByLumiSummary::endJob ( void  )
privatevirtual

Reimplemented from edm::EDAnalyzer.

Definition at line 196 of file DTDCSByLumiSummary.cc.

196  {
197 
198 }
void DTDCSByLumiSummary::endLuminosityBlock ( const edm::LuminosityBlock lumi,
const edm::EventSetup setup 
)
privatevirtual

Reimplemented from edm::EDAnalyzer.

Definition at line 77 of file DTDCSByLumiSummary.cc.

References MonitorElement::getBinContent(), edm::LuminosityBlockBase::id(), LogTrace, and edm::LuminosityBlockID::luminosityBlock().

77  {
78 
79  // Get the by lumi product plot from the task
80  int lumiNumber = lumi.id().luminosityBlock();
81 
82  bool null_pointer_histo(0);
83 
84  std::vector<float> wh_activeFrac;
85 
86  for(int wh=-2;wh<=2;wh++){
87 
88  stringstream wheel_str; wheel_str << wh;
89 
90  string hActiveUnitsPath = "DT/EventInfo/DCSContents/hActiveUnits"+wheel_str.str();
91  MonitorElement *hActiveUnits = theDQMStore->get(hActiveUnitsPath);
92 
93  if (hActiveUnits) {
94  float activeFrac = static_cast<float>(hActiveUnits->getBinContent(2)) / // CB 2nd bin is # of active channels
95  hActiveUnits->getBinContent(1); // first bin is overall number of channels
96 
97  if(activeFrac < 0.) activeFrac=-1;
98 
99  wh_activeFrac.push_back(activeFrac);
100 
101  // Fill by lumi Certification ME
102  totalDCSFraction->Fill(activeFrac);
103  totalDCSFractionWh[wh+2]->Fill(activeFrac);
104 
105  } else {
106  LogTrace("DTDQM|DTMonitorClient|DTDCSByLumiSummary")
107  << "[DTDCSByLumiSummary]: got null pointer retrieving histo at :"
108  << hActiveUnitsPath << " for lumi # " << lumiNumber
109  << "client operation not performed." << endl;
110 
111  null_pointer_histo=true;
112  }
113 
114  } // end loop on wheels
115 
116  if(!null_pointer_histo) dcsFracPerLumi[lumiNumber] = wh_activeFrac; // Fill map to be used to compute trend plots
117 
118 }
LuminosityBlockID id() const
void Fill(long long x)
MonitorElement * totalDCSFraction
MonitorElement * get(const std::string &path) const
get ME from full pathname (e.g. &quot;my/long/dir/my_histo&quot;)
Definition: DQMStore.cc:1473
#define LogTrace(id)
LuminosityBlockNumber_t luminosityBlock() const
double getBinContent(int binx) const
get content of bin (1-D)
std::map< int, std::vector< float > > dcsFracPerLumi
std::vector< MonitorElement * > totalDCSFractionWh
void DTDCSByLumiSummary::endRun ( const edm::Run run,
const edm::EventSetup setup 
)
privatevirtual

Reimplemented from edm::EDAnalyzer.

Definition at line 121 of file DTDCSByLumiSummary.cc.

References alignCSCRings::r, and DTTimeEvolutionHisto::setTimeSlotValue().

121  {
122 
123 
124  // Book trend plots ME & loop on map to fill it with by lumi info
125  map<int,std::vector<float> >::const_iterator fracPerLumiIt = dcsFracPerLumi.begin();
126  map<int,std::vector<float> >::const_iterator fracPerLumiEnd = dcsFracPerLumi.end();
127 
128  int fLumi = dcsFracPerLumi.begin()->first;
129  int lLumi = dcsFracPerLumi.rbegin()->first;
130  theDQMStore->setCurrentFolder("DT/EventInfo/DCSContents");
131 
132  int nLumis = lLumi-fLumi + 1.;
133 
134  // trend plots
135  for(int wh=-2; wh<=2; wh++) {
136 
137  stringstream wheel_str; wheel_str << wh;
138 
139  DTTimeEvolutionHisto* trend;
140 
141  trend = new DTTimeEvolutionHisto(theDQMStore, "hDCSFracTrendWh" + wheel_str.str(), "Fraction of DT-HV ON Wh" + wheel_str.str(),
142  nLumis, fLumi, 1, false, 2);
143 
144  hDCSFracTrend.push_back(trend);
145 
146  }
147 
148  float goodLSperWh[5] = {0,0,0,0,0};
149  float badLSperWh[5] = {0,0,0,0,0};
150 
151  // fill trend plots and save infos for summaryPlot
152  for(;fracPerLumiIt!=fracPerLumiEnd;++fracPerLumiIt) {
153 
154  for(int wh=-2; wh<=2; wh++) {
155 
156  std::vector<float> activeFracPerWh;
157  activeFracPerWh = fracPerLumiIt->second;
158 
159  hDCSFracTrend[wh+2]->setTimeSlotValue(activeFracPerWh[wh+2],fracPerLumiIt->first);
160 
161  if( activeFracPerWh[wh+2] > 0 ) { // we do not count the lumi were the DTs are off (no real problem),
162  // even if this can happen in the middle of a run (real problem: to be fixed)
163  if( activeFracPerWh[wh+2] > 0.9 ) goodLSperWh[wh+2]++;
164  else {
165  badLSperWh[wh+2]++;
166  }
167  } else { // there is no HV value OR all channels OFF
168  if( activeFracPerWh[wh+2] < 0 ) badLSperWh[wh+2]=-1; // if there were no HV values, activeFrac returning -1
169  }
170 
171  }
172 
173  }
174 
175  // fill summaryPlot
176  for(int wh=-2; wh<=2; wh++) {
177 
178  if( goodLSperWh[wh+2] != 0 || badLSperWh[wh+2] == -1 ) {
179 
180  float r = badLSperWh[wh+2]/fabs(goodLSperWh[wh+2] + badLSperWh[wh+2]);
181  if( r > 0.5 ) globalHVSummary->Fill(1,wh,0);
182  else globalHVSummary->Fill(1,wh,1);
183  if( r == -1 ) globalHVSummary->Fill(1,wh,-1);
184 
185  } else {
186 
187  globalHVSummary->Fill(1,wh,0);
188 
189  }
190 
191  }
192 
193 }
std::vector< DTTimeEvolutionHisto * > hDCSFracTrend
MonitorElement * globalHVSummary
void Fill(long long x)
std::map< int, std::vector< float > > dcsFracPerLumi
void setCurrentFolder(const std::string &fullpath)
Definition: DQMStore.cc:434

Member Data Documentation

std::map<int, std::vector<float> > DTDCSByLumiSummary::dcsFracPerLumi
private

Definition at line 55 of file DTDCSByLumiSummary.h.

MonitorElement* DTDCSByLumiSummary::globalHVSummary
private

Definition at line 50 of file DTDCSByLumiSummary.h.

std::vector<DTTimeEvolutionHisto*> DTDCSByLumiSummary::hDCSFracTrend
private

Definition at line 52 of file DTDCSByLumiSummary.h.

DQMStore* DTDCSByLumiSummary::theDQMStore
private

Definition at line 47 of file DTDCSByLumiSummary.h.

MonitorElement* DTDCSByLumiSummary::totalDCSFraction
private

Definition at line 49 of file DTDCSByLumiSummary.h.

std::vector<MonitorElement*> DTDCSByLumiSummary::totalDCSFractionWh
private

Definition at line 53 of file DTDCSByLumiSummary.h.