35 LogVerbatim (
"DTDQM|DTMonitorClient|DTRunConditionVarClient")
36 <<
"DTRunConditionVarClient: Constructor called";
60 LogVerbatim (
"DTDQM|DTMonitorClient|DTRunConditionVarClient")
61 <<
"DTRunConditionVarClient: Destructor called";
66 LogVerbatim (
"DTDQM|DTMonitorClient|DTRunConditionVarClient")
67 <<
"DTRunConditionVarClient: BeginJob";
71 theDbe -> setCurrentFolder(
"DT/02-Segments");
73 glbVDriftSummary = theDbe->book2D(
"VDriftGlbSummary",
"# of MBs with good mean and good sigma of vDrift",12,1,13,5,-2,3);
74 glbT0Summary = theDbe->book2D(
"T0GlbSummary",
"# of MBs with good mean and good sigma of t0",12,1,13,5,-2,3);
76 theDbe -> setCurrentFolder(
"DT/02-Segments/02-MeanVDrift");
78 summaryHistos[
"MeanVDriftGlbSummary"] = theDbe -> book2D(
"MeanVDriftGlbSummary",
"mean VDrift average per sector",12,1.,13.,5,-2.,3.);
79 allwheelHistos[
"allMeanVDrift"] = theDbe -> book1D(
"VDriftMeanAllWheels",
"mean VDrift for all chambers",60,0.0048,0.006);
81 theDbe -> setCurrentFolder(
"DT/02-Segments/02-SigmaVDrift");
83 summaryHistos[
"SigmaVDriftGlbSummary"] = theDbe -> book2D(
"SigmaVDriftGlbSummary",
"# of Chambers with good sigma VDrift",12,1.,13.,5,-2.,3.);
84 allwheelHistos[
"allSigmaVDrift"] = theDbe -> book1D(
"VDriftSigmaAllWheels",
"sigma VDrift for all chambers",30,0.,0.0006);
86 theDbe -> setCurrentFolder(
"DT/02-Segments/03-MeanT0");
88 summaryHistos[
"MeanT0GlbSummary"] = theDbe -> book2D(
"MeanT0GlbSummary",
"mean T0 average per sector",12,1.,13.,5,-2.,3.);
89 allwheelHistos[
"allMeanT0"] = theDbe -> book1D(
"T0MeanAllWheels",
"mean T0 for all chambers",100,-25.,25.);
91 theDbe -> setCurrentFolder(
"DT/02-Segments/03-SigmaT0");
93 summaryHistos[
"SigmaT0GlbSummary"] = theDbe -> book2D(
"SigmaT0GlbSummary",
"# of Chambers with good sigma T0",12,1.,13.,5,-2.,3.);
94 allwheelHistos[
"allSigmaT0"] = theDbe -> book1D(
"T0SigmaAllWheels",
"sigma T0 for alla chambers",50,0,25);
96 for(
int wh=-2; wh<=2; wh++) {
97 bookWheelHistos(
"MeanVDrift",
"02-MeanVDrift",wh,60,0.0048,0.006,
true);
98 bookWheelHistos(
"SigmaVDrift",
"02-SigmaVDrift",wh,30,0.,0.0006);
99 bookWheelHistos(
"MeanT0",
"03-MeanT0",wh,100,-25.,25.);
100 bookWheelHistos(
"SigmaT0",
"03-SigmaT0",wh,50,0,25);
108 LogVerbatim (
"DTDQM|DTMonitorClient|DTRunConditionVarClient")
109 <<
"[DTRunConditionVarClient]: Begin of LS transition";
116 LogVerbatim (
"DTDQM|DTMonitorClient|DTRunConditionVarClient")
117 <<
"DTRunConditionVarClient: beginRun";
126 LogVerbatim (
"DTDQM|DTMonitorClient|DTRunConditionVarClient")
127 <<
"[DTRunConditionVarClient]: " <<
nevents <<
" events";
133 LogVerbatim (
"DTDQM|DTMonitorClient|DTRunConditionVarClient")
134 <<
"DTRunConditionVarClient: endluminosityBlock";
140 LogVerbatim (
"DTDQM|DTMonitorClient|DTRunConditionVarClient")
141 <<
"DTRunConditionVarClient: endRun";
147 for(
int wheel=-2;wheel<=2;wheel++){
148 for(
int sec=1; sec<=14; sec++) {
149 for(
int stat=1; stat<=4; stat++) {
151 if( (sec == 13 || sec == 14) && stat != 4 )
continue;
157 if (!VDriftME || !T0ME) {
158 edm::LogWarning(
"DTRunConditionVarClient") <<
"ME not available" << std::endl;
164 float vDriftMean = VDriftME->
getMean();
165 float t0Mean = T0ME->
getMean();
168 float vDriftSigma = VDriftME->
getRMS();
169 float t0Sigma = T0ME->
getRMS();
173 allwheelHistos[
"allMeanVDrift"] ->
Fill(vDriftMean);
174 allwheelHistos[
"allSigmaVDrift"] ->
Fill(vDriftSigma);
176 (wheelHistos[wheel])[
"MeanVDrift"] ->
Fill(vDriftMean);
177 (wheelHistos[wheel])[
"SigmaVDrift"] ->
Fill(vDriftSigma);
184 allwheelHistos[
"allMeanT0"] ->
Fill(t0Mean);
185 allwheelHistos[
"allSigmaT0"] ->
Fill(t0Sigma);
187 (wheelHistos[wheel])[
"MeanT0"] ->
Fill(t0Mean);
188 (wheelHistos[wheel])[
"SigmaT0"] ->
Fill(t0Sigma);
195 float vDriftDev(0.), errvDriftDev(0.);
196 percDevVDrift(indexCh, vDriftMean, vDriftSigma, vDriftDev, errvDriftDev);
199 if( sec == 13 || sec == 14 ) sec_ = ( sec == 13 ) ? 4 : 10;
201 float fillvDriftDev =
max(
min(vDriftDev,maxRangeVDrift),minRangeVDrift);
202 float fillT0Mean =
max(
min(t0Mean,maxRangeT0),minRangeT0);
204 float vDriftDevQ = varQuality(fabs(vDriftDev),maxGoodVDriftDev,minBadVDriftDev);
205 float t0MeanQ = varQuality(fabs(t0Mean),maxGoodT0,minBadT0);
207 float vDriftSigmQ = varQuality(vDriftSigma,maxGoodVDriftSigma,minBadVDriftSigma);
208 float t0SigmQ = varQuality(t0Sigma,maxGoodT0Sigma,minBadT0Sigma);
210 if( sec == 13 || sec == 14 ) {
212 float binVDriftDev = (wheelHistos[wheel])[
"MeanVDriftSummary"]->getBinContent(sec_,stat);
213 binVDriftDev = (fabs(binVDriftDev) > fabs(fillvDriftDev)) ? binVDriftDev : fillvDriftDev;
214 (wheelHistos[wheel])[
"MeanVDriftSummary"] -> setBinContent(sec_,stat,binVDriftDev);
216 float binT0MeanVal = (wheelHistos[wheel])[
"MeanT0Summary"] -> getBinContent(sec_,stat);
217 binT0MeanVal = (fabs(binT0MeanVal) > fabs(fillT0Mean)) ? binT0MeanVal : fillT0Mean;
218 (wheelHistos[wheel])[
"MeanT0Summary"] -> setBinContent(sec_,stat,binT0MeanVal);
220 float binVDriftSigmVal = (wheelHistos[wheel])[
"SigmaVDriftSummary"] -> getBinContent(sec_,stat);
221 binVDriftSigmVal = (binVDriftSigmVal > 0. && binVDriftSigmVal < vDriftSigmQ) ? binVDriftSigmVal : vDriftSigmQ;
222 (wheelHistos[wheel])[
"SigmaVDriftSummary"] -> setBinContent(sec_,stat,binVDriftSigmVal);
224 float binT0SigmVal = (wheelHistos[wheel])[
"SigmaT0Summary"] -> getBinContent(sec_,stat);
225 binT0SigmVal = (binT0SigmVal > 0. && binT0SigmVal < t0SigmQ) ? binT0SigmVal : t0SigmQ;
226 (wheelHistos[wheel])[
"SigmaT0Summary"] -> setBinContent(sec_,stat,binT0SigmVal);
230 (wheelHistos[wheel])[
"MeanVDriftSummary"] -> setBinContent(sec_,stat,fillvDriftDev);
231 (wheelHistos[wheel])[
"MeanT0Summary"] -> setBinContent(sec_,stat,fillT0Mean);
232 (wheelHistos[wheel])[
"SigmaVDriftSummary"] -> setBinContent(sec_,stat,vDriftSigmQ);
233 (wheelHistos[wheel])[
"SigmaT0Summary"] -> setBinContent(sec_,stat,t0SigmQ);
238 if(( sec_ == 4 || sec_ == 10) && stat == 4) weight = 1/8.;
240 if( vDriftDevQ > 0.85 && vDriftSigmQ > 0.85 ) {
241 glbVDriftSummary ->
Fill(sec_,wheel,weight);
242 summaryHistos[
"MeanVDriftGlbSummary"] ->
Fill(sec_,wheel,weight);
243 summaryHistos[
"SigmaVDriftGlbSummary"] ->
Fill(sec_,wheel,weight);
246 if( vDriftDevQ > 0.85 && vDriftSigmQ < 0.85 ) {
247 summaryHistos[
"MeanVDriftGlbSummary"] ->
Fill(sec_,wheel,weight);
249 if( vDriftDevQ < 0.85 && vDriftSigmQ > 0.85 ) {
250 summaryHistos[
"SigmaVDriftGlbSummary"] ->
Fill(sec_,wheel,weight);
254 if( t0MeanQ > 0.85 && t0SigmQ > 0.85 ) {
255 glbT0Summary ->
Fill(sec_,wheel,weight);
256 summaryHistos[
"MeanT0GlbSummary"] ->
Fill(sec_,wheel,weight);
257 summaryHistos[
"SigmaT0GlbSummary"] ->
Fill(sec_,wheel,weight);
259 if( t0MeanQ > 0.85 && t0SigmQ < 0.85 ) {
260 summaryHistos[
"MeanT0GlbSummary"] ->
Fill(sec_,wheel,weight);
263 if( t0MeanQ < 0.85 && t0SigmQ > 0.85 ) {
264 summaryHistos[
"SigmaT0GlbSummary"] ->
Fill(sec_,wheel,weight);
278 LogVerbatim (
"DTDQM|DTMonitorClient|DTRunConditionVarClient")
279 <<
"DTRunConditionVarClient: endJob";
286 if( var <= maxGood ) {qual = 1.;}
287 else if( var > maxGood && var < minBad ) {qual = 0.9;}
288 else if( var >= minBad ) {qual = 0.1;}
298 float vDriftPhi1(0.), vDriftPhi2(0.);
299 float ResPhi1(0.), ResPhi2(0.);
303 if(status1 != 0 || status2 != 0) {
305 throw cms::Exception(
"DTRunConditionVarClient") <<
"Could not find vDrift entry in DB for"
309 float vDriftMed = (vDriftPhi1 + vDriftPhi2) / 2.;
311 devVD = (meanVD - vDriftMed) / vDriftMed;
312 devVD = devVD < 1. ? devVD : 1.;
314 errdevVD = sigmaVD/vDriftMed;
321 stringstream wheel; wheel << wh;
323 string folder =
"DT/02-Segments/" + subfolder;
325 theDbe->setCurrentFolder(folder);
327 string histoName = histoType +
"_W" + wheel.str();
328 string histoLabel = histoType;
330 (wheelHistos[wh])[histoType] = theDbe -> book1D(histoName, histoLabel, nbins, min, max);
334 histoLabel =
"Summary of corrections to VDrift DB values";
335 histoName =
"CorrTo" + histoType +
"Summary_W" + wheel.str();
337 histoLabel = histoType +
"Summary";
338 histoName = histoType +
"Summary_W" + wheel.str();
341 MonitorElement* me = theDbe -> book2D(histoName, histoLabel,12,1,13,4,1,5);
349 (wheelHistos[wh])[histoType +
"Summary"] = me;
356 int wh = dtCh.
wheel();
359 stringstream wheel; wheel << wh;
360 stringstream
station; station << st;
361 stringstream sector; sector << sc;
363 string folder =
"DT/02-Segments/Wheel" + wheel.str() +
"/Sector" + sector.str() +
"/Station" + station.str();
364 string histoTag =
"_W" + wheel.str() +
"_Sec" + sector.str() +
"_St" + station.str();
365 string MEpath = folder +
"/" + histoType + histoTag;
367 theDbe->setCurrentFolder(folder);
369 LogTrace (
"DTDQM|DTMonitorModule|DTRunConditionVar")
370 <<
"[DTRunConditionVar]: getting ME from " << folder << endl;
T getUntrackedParameter(std::string const &, T const &) const
virtual ~DTRunConditionVarClient()
Destructor.
void beginRun(const edm::Run &run, const edm::EventSetup &setup)
void endLuminosityBlock(edm::LuminosityBlock const &lumiSeg, edm::EventSetup const &c)
void bookWheelHistos(std::string histoType, std::string subfolder, int wh, int nbins, float min, float max, bool isVDCorr=false)
book the report summary
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)
double getEntries(void) const
get # of entries
double getMean(int axis=1) const
get mean value of histogram along x, y or z axis (axis=1, 2, 3 respectively)
float varQuality(float var, float maxGood, float minBad)
MonitorElement * getChamberHistos(const DTChamberId &, std::string)
void endRun(edm::Run const &run, edm::EventSetup const &c)
void Fill(HcalDetId &id, double val, std::vector< TH2F > &depth)
void percDevVDrift(DTChamberId indexCh, float meanVD, float sigmaVD, float &devVD, float &errdevVD)
EventID const & min(EventID const &lh, EventID const &rh)
DTRunConditionVarClient(const edm::ParameterSet &ps)
Constructor.
double getRMS(int axis=1) const
get RMS of histogram along x, y or z axis (axis=1, 2, 3 respectively)
void beginLuminosityBlock(edm::LuminosityBlock const &lumiSeg, edm::EventSetup const &context)
DQM Client Diagnostic.
void analyze(const edm::Event &e, const edm::EventSetup &c)
int station() const
Return the station number.
int wheel() const
Return the wheel number.
void setAxisTitle(const std::string &title, int axis=1)
set x-, y- or z-axis title (axis=1, 2, 3 respectively)
void setup(std::vector< TH2F > &depth, std::string name, std::string units="")
EventID const & max(EventID const &lh, EventID const &rh)