CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
EcalZmassClient.cc
Go to the documentation of this file.
1 // -*- C++ -*-
2 //
3 // Package: ZfitterAnalyzer
4 // Class: ZfitterAnalyzer
5 //
13 //
14 // Original Author: Vieri Candelise
15 // Created: Mon Jun 13 09:49:08 CEST 2011
16 //
17 //
18 
19 
20 // system include files
21 #include <memory>
22 
23 // user include files
29 #include "DQM/Physics/src/EwkDQM.h"
31 #include "TMath.h"
32 #include <string>
33 #include <cmath>
34 #include "TH1.h"
39 #include <iostream>
42 
43 class DQMStore;
44 class MonitorElement;
45 
46 //
47 // class declaration
48 //
49 
50 class EcalZmassClient:public
52 {
53 public:
54  explicit
56  ~
58 
59  static void
61 
62 
63 private:
64  virtual void
65  beginJob () override;
66  virtual void
67  analyze (const edm::Event &, const edm::EventSetup &) override;
68  virtual void
69  endJob () override;
70 
71  virtual void
72  beginRun (edm::Run const &, edm::EventSetup const &) override;
73  virtual void
74  endRun (edm::Run const &, edm::EventSetup const &) override;
75  virtual void
77  edm::EventSetup const &) override;
78  virtual void
79  endLuminosityBlock (edm::LuminosityBlock const &, edm::EventSetup const &) override;
80 
81  // ----------member data ---------------------------
82 
84 
103 
104 
105 };
106 
108 {
109  prefixME_ = iConfig.getUntrackedParameter < std::string > ("prefixME", "");
110 
111 }
112 
113 
115 {
116 
117  // do anything here that needs to be done at desctruction time
118  // (e.g. close files, deallocate resources etc.)
119 
120 }
121 
122 
123 //
124 // member functions
125 //
126 
127 // ------------ method called for each event ------------
128 void
130  const edm::EventSetup & iSetup)
131 {
132 
133 }
134 
135 
136 // ------------ method called once each job just before starting event loop ------------
137 void
139 {
140 }
141 
142 // ------------ method called once each job just after ending the event loop ------------
143 void
145 {
146 }
147 
148 // ------------ method called when starting to processes a run ------------
149 void
151 {
152  DQMStore *theDbe = edm::Service < DQMStore > ().operator-> ();
153 
154  theDbe->setCurrentFolder (prefixME_ + "/Zmass");
155  h_fitres1 =
156  theDbe->book1D ("Gaussian mean WP80 EB-EB",
157  "Gaussian mean WP80 EB-EB", 1, 0, 1);
158  h_fitres1bis =
159  theDbe->book1D ("Gaussian sigma WP80 EB-EB",
160  "Gaussian sigma WP80 EB-EB", 1, 0, 1);
161  h_fitres1Chi2 =
162  theDbe->book1D ("Gaussian Chi2 result over NDF WP80 EB-EB",
163  "Gaussian Chi2 result over NDF WP80 EB-EB", 1, 0, 1);
164 
165  h_fitres3 =
166  theDbe->book1D ("Gaussian mean WP80 EB-EE",
167  "Gaussian mean result WP80 EB-EE", 1, 0, 1);
168  h_fitres3bis =
169  theDbe->book1D ("Gaussian sigma WP80 EB-EE",
170  "Gaussian sigma WP80 EB-EE", 1, 0, 1);
171  h_fitres3Chi2 =
172  theDbe->book1D ("Gaussian Chi2 result over NDF WP80 EB-EE",
173  "Gaussian Chi2 result over NDF WP80 EB-EE", 1, 0, 1);
174 
175  h_fitres2 =
176  theDbe->book1D ("Gaussian mean WP80 EE-EE",
177  "Gaussian mean WP80 EE-EE", 1, 0, 1);
178  h_fitres2bis =
179  theDbe->book1D ("Gaussian sigma WP80 EE-EE",
180  "Gaussian sigma WP80 EE-EE", 1, 0, 1);
181  h_fitres2Chi2 =
182  theDbe->book1D ("Gaussian Chi2 result over NDF WP80 EE-EE",
183  "Gaussian Chi2 result over NDF WP80 EE-EE", 1, 0, 1);
184 }
185 
186 
187 //Breit-Wigner function
188 Double_t
189 mybw (Double_t * x, Double_t * par)
190 {
191  Double_t arg1 = 14.0 / 22.0; // 2 over pi
192  Double_t arg2 = par[1] * par[1] * par[2] * par[2]; //Gamma=par[2] M=par[1]
193  Double_t arg3 =
194  ((x[0] * x[0]) - (par[1] * par[1])) * ((x[0] * x[0]) - (par[1] * par[1]));
195  Double_t arg4 =
196  x[0] * x[0] * x[0] * x[0] * ((par[2] * par[2]) / (par[1] * par[1]));
197  return par[0] * arg1 * arg2 / (arg3 + arg4);
198 }
199 
200 //Gaussian
201 Double_t
202 mygauss (Double_t * x, Double_t * par)
203 {
204  Double_t arg = 0;
205  if (par[2] < 0)
206  par[2] = -par[2]; // par[2]: sigma
207  if (par[2] != 0)
208  arg = (x[0] - par[1]) / par[2]; // par[1]: mean
209  return par[0] * TMath::Exp (-0.5 * arg * arg) / (TMath::Sqrt (2 * TMath::Pi ()) * par[2]); // par[0] is constant
210 
211 }
212 
213 
214 
215 // ------------ method called when ending the processing of a run ------------
216 void
218 {
219  DQMStore *theDbe = edm::Service < DQMStore > ().operator-> ();
220 
221  LogTrace ("EwkAnalyzer") << "Parameters initialization";
222 
223  MonitorElement *me1 = theDbe->get (prefixME_ + "/Zmass/Z peak - WP80 EB-EB");
224  MonitorElement *me2 = theDbe->get (prefixME_ + "/Zmass/Z peak - WP80 EE-EE");
225  MonitorElement *me3 = theDbe->get (prefixME_ + "/Zmass/Z peak - WP80 EB-EE");
226 
227 
228  if (me1 != 0)
229  {
230  TH1F *B = me1->getTH1F ();
231  TH1F *R1 = h_fitres1->getTH1F ();
232  int division = B->GetNbinsX ();
233  float massMIN = B->GetBinLowEdge (1);
234  float massMAX = B->GetBinLowEdge (division + 1);
235  //float BIN_SIZE = B->GetBinWidth(1);
236 
237  TF1 *func = new TF1 ("mygauss", mygauss, massMIN, massMAX, 3);
238  func->SetParameter (0, 1.0);
239  func->SetParName (0, "const");
240  func->SetParameter (1, 95.0);
241  func->SetParName (1, "mean");
242  func->SetParameter (2, 5.0);
243  func->SetParName (2, "sigma");
244 
245  double stats[4];
246  R1->GetStats (stats);
247  float N = 0;
248  float mean = 0;
249  float sigma = 0;
250  N = B->GetEntries ();
251 
252  try
253  {
254  if (N != 0)
255  {
256 
257  B->Fit ("mygauss", "QR");
258  mean = fabs (func->GetParameter (1));
259  sigma = fabs (func->GetParError (1));
260  }
261 
262  if (N == 0 || mean < 50 || mean > 100 || sigma <= 0 || sigma > 20)
263  {
264  N = 1;
265  mean = 0;
266  sigma = 0;
267  }
268 
269  }
270  catch (cms::Exception& e)
271  {
272  edm::LogError ("ZFitter") << "[Zfitter]: Exception when fitting..." << e.what();
273  N = 1;
274  mean = 40;
275  sigma = 0;
276  }
277 
278  stats[0] = N;
279  stats[1] = N;
280  stats[2] = mean * N;
281  stats[3] = sigma * sigma * N + mean * mean * N;
282 
283  R1->SetEntries (N);
284  R1->PutStats (stats);
285  }
286 /*******************************************************/
287  if (me1 != 0)
288  {
289  TH1F *Bbis = me1->getTH1F ();
290  TH1F *R1bis = h_fitres1bis->getTH1F ();
291  int division = Bbis->GetNbinsX ();
292  float massMIN = Bbis->GetBinLowEdge (1);
293  float massMAX = Bbis->GetBinLowEdge (division + 1);
294  //float BIN_SIZE = B->GetBinWidth(1);
295 
296  TF1 *func = new TF1 ("mygauss", mygauss, massMIN, massMAX, 3);
297  func->SetParameter (0, 1.0);
298  func->SetParName (0, "const");
299  func->SetParameter (1, 95.0);
300  func->SetParName (1, "mean");
301  func->SetParameter (2, 5.0);
302  func->SetParName (2, "sigma");
303 
304  double stats[4];
305  R1bis->GetStats (stats);
306  float N = 0;
307  float rms = 0;
308  float rmsErr = 0;
309  N = Bbis->GetEntries ();
310 
311  try
312  {
313  if (N != 0)
314  {
315 
316  Bbis->Fit ("mygauss", "QR");
317  rms = fabs (func->GetParameter (2));
318  rmsErr = fabs (func->GetParError (2));
319  }
320 
321  if (N == 0 || rms < 0 || rms > 50 || rmsErr <= 0 || rmsErr > 50)
322  {
323  N = 1;
324  rms = 0;
325  rmsErr = 0;
326  }
327 
328  }
329  catch (cms::Exception& e)
330  {
331  edm::LogError ("ZFitter") << "[Zfitter]: Exception when fitting..." << e.what();
332  N = 1;
333  rms = 40;
334  rmsErr = 0;
335  }
336 
337  stats[0] = N;
338  stats[1] = N;
339  stats[2] = rms * N;
340  stats[3] = rmsErr * rmsErr * N + rms * rms * N;
341 
342  R1bis->SetEntries (N);
343  R1bis->PutStats (stats);
344  }
345 /****************************************/
346 
347  if (me2 != 0)
348  {
349  TH1F *E = me2->getTH1F ();
350  TH1F *R2 = h_fitres2->getTH1F ();
351  int division = E->GetNbinsX ();
352  float massMIN = E->GetBinLowEdge (1);
353  float massMAX = E->GetBinLowEdge (division + 1);
354  //float BIN_SIZE = E->GetBinWidth(1);
355 
356  TF1 *func = new TF1 ("mygauss", mygauss, massMIN, massMAX, 3);
357  func->SetParameter (0, 1.0);
358  func->SetParName (0, "const");
359  func->SetParameter (1, 95.0);
360  func->SetParName (1, "mean");
361  func->SetParameter (2, 5.0);
362  func->SetParName (2, "sigma");
363 
364  double stats[4];
365  R2->GetStats (stats);
366  float N = 0;
367  float mean = 0;
368  float sigma = 0;
369  N = E->GetEntries ();
370 
371  try
372  {
373  if (N != 0)
374  {
375  E->Fit ("mygauss", "QR");
376  mean = fabs (func->GetParameter (1));
377  sigma = fabs (func->GetParError (1));
378  }
379 
380  if (N == 0 || mean < 50 || mean > 100 || sigma <= 0 || sigma > 20)
381  {
382  N = 1;
383  mean = 0;
384  sigma = 0;
385 
386  }
387 
388  }
389  catch (cms::Exception& e)
390  {
391  edm::LogError ("ZFitter") << "[Zfitter]: Exception when fitting..." << e.what();
392  N = 1;
393  mean = 40;
394  sigma = 0;
395  }
396 
397  stats[0] = N;
398  stats[1] = N;
399  stats[2] = mean * N;
400  stats[3] = sigma * sigma * N + mean * mean * N;
401 
402  R2->SetEntries (N);
403  R2->PutStats (stats);
404  }
405 /**************************************************************************/
406 
407  if (me2 != 0)
408  {
409  TH1F *Ebis = me2->getTH1F ();
410  TH1F *R2bis = h_fitres2bis->getTH1F ();
411  int division = Ebis->GetNbinsX ();
412  float massMIN = Ebis->GetBinLowEdge (1);
413  float massMAX = Ebis->GetBinLowEdge (division + 1);
414  //float BIN_SIZE = B->GetBinWidth(1);
415 
416  TF1 *func = new TF1 ("mygauss", mygauss, massMIN, massMAX, 3);
417  func->SetParameter (0, 1.0);
418  func->SetParName (0, "const");
419  func->SetParameter (1, 95.0);
420  func->SetParName (1, "mean");
421  func->SetParameter (2, 5.0);
422  func->SetParName (2, "sigma");
423 
424  double stats[4];
425  R2bis->GetStats (stats);
426  float N = 0;
427  float rms = 0;
428  float rmsErr = 0;
429  N = Ebis->GetEntries ();
430 
431  try
432  {
433  if (N != 0)
434  {
435 
436  Ebis->Fit ("mygauss", "QR");
437  rms = fabs (func->GetParameter (2));
438  rmsErr = fabs (func->GetParError (2));
439  }
440 
441  if (N == 0 || rms < 0 || rms > 50 || rmsErr <= 0 || rmsErr > 50)
442  {
443  N = 1;
444  rms = 0;
445  rmsErr = 0;
446  }
447 
448  }
449  catch (cms::Exception& e)
450  {
451  edm::LogError ("ZFitter") << "[Zfitter]: Exception when fitting..." << e.what();
452  N = 1;
453  rms = 40;
454  rmsErr = 0;
455  }
456 
457  stats[0] = N;
458  stats[1] = N;
459  stats[2] = rms * N;
460  stats[3] = rmsErr * rmsErr * N + rms * rms * N;
461 
462  R2bis->SetEntries (N);
463  R2bis->PutStats (stats);
464  }
465 /*********************************************************************************************/
466 
467  if (me3 != 0)
468  {
469  TH1F *R3 = h_fitres3->getTH1F ();
470  TH1F *M = me3->getTH1F ();
471  int division = M->GetNbinsX ();
472  float massMIN = M->GetBinLowEdge (1);
473  float massMAX = M->GetBinLowEdge (division + 1);
474  //float BIN_SIZE = M->GetBinWidth(1);
475 
476  TF1 *func = new TF1 ("mygauss", mygauss, massMIN, massMAX, 3);
477  func->SetParameter (0, 1.0);
478  func->SetParName (0, "const");
479  func->SetParameter (1, 95.0);
480  func->SetParName (1, "mean");
481  func->SetParameter (2, 5.0);
482  func->SetParName (2, "sigma");
483 
484  double stats[4];
485  R3->GetStats (stats);
486  float N = 0;
487  float mean = 0;
488  float sigma = 0;
489  N = M->GetEntries ();
490 
491 
492  try
493  {
494  if (N != 0)
495  {
496 
497  M->Fit ("mygauss", "QR");
498  mean = fabs (func->GetParameter (1));
499  sigma = fabs (func->GetParError (1));
500  }
501  if (N == 0 || mean < 50 || mean > 100 || sigma <= 0 || sigma > 20)
502  {
503  N = 1;
504  mean = 0;
505  sigma = 0;
506  }
507 
508  }
509  catch (cms::Exception& e)
510  {
511  edm::LogError ("ZFitter") << "[Zfitter]: Exception when fitting..." << e.what();
512  N = 1;
513  mean = 40;
514  sigma = 0;
515  }
516 
517  stats[0] = N;
518  stats[1] = N;
519  stats[2] = mean * N;
520  stats[3] = sigma * sigma * N + mean * mean * N;
521 
522  R3->SetEntries (N);
523  R3->PutStats (stats);
524  }
525  /********************************************************************************/
526 
527  if (me3 != 0)
528  {
529  TH1F *Mbis = me3->getTH1F ();
530  TH1F *R3bis = h_fitres3bis->getTH1F ();
531  int division = Mbis->GetNbinsX ();
532  float massMIN = Mbis->GetBinLowEdge (1);
533  float massMAX = Mbis->GetBinLowEdge (division + 1);
534  //float BIN_SIZE = B->GetBinWidth(1);
535 
536  TF1 *func = new TF1 ("mygauss", mygauss, massMIN, massMAX, 3);
537  func->SetParameter (0, 1.0);
538  func->SetParName (0, "const");
539  func->SetParameter (1, 95.0);
540  func->SetParName (1, "mean");
541  func->SetParameter (2, 5.0);
542  func->SetParName (2, "sigma");
543 
544  double stats[4];
545  R3bis->GetStats (stats);
546  float N = 0;
547  float rms = 0;
548  float rmsErr = 0;
549  N = Mbis->GetEntries ();
550 
551  try
552  {
553  if (N != 0)
554  {
555 
556  Mbis->Fit ("mygauss", "QR");
557  rms = fabs (func->GetParameter (2));
558  rmsErr = fabs (func->GetParError (2));
559  }
560 
561  if (N == 0 || rms < 0 || rms > 50 || rmsErr <= 0 || rmsErr > 50)
562  {
563  N = 1;
564  rms = 0;
565  rmsErr = 0;
566  }
567 
568  }
569  catch (cms::Exception& e)
570  {
571  edm::LogError ("ZFitter") << "[Zfitter]: Exception when fitting..." << e.what();
572  N = 1;
573  rms = 40;
574  rmsErr = 0;
575  }
576 
577  stats[0] = N;
578  stats[1] = N;
579  stats[2] = rms * N;
580  stats[3] = rmsErr * rmsErr * N + rms * rms * N;
581 
582  R3bis->SetEntries (N);
583  R3bis->PutStats (stats);
584  }
585 
586  /*Chi2 */
587 
588  if (me1 != 0)
589  {
590  TH1F *C1 = me1->getTH1F ();
591  TH1F *S1 = h_fitres1Chi2->getTH1F ();
592  int division = C1->GetNbinsX ();
593  float massMIN = C1->GetBinLowEdge (1);
594  float massMAX = C1->GetBinLowEdge (division + 1);
595  //float BIN_SIZE = B->GetBinWidth(1);
596 
597  TF1 *func = new TF1 ("mygauss", mygauss, massMIN, massMAX, 3);
598  func->SetParameter (0, 1.0);
599  func->SetParName (0, "const");
600  func->SetParameter (1, 95.0);
601  func->SetParName (1, "mean");
602  func->SetParameter (2, 5.0);
603  func->SetParName (2, "sigma");
604 
605  double stats[4];
606  S1->GetStats (stats);
607  float N = 0;
608  float Chi2 = 0;
609  float NDF = 0;
610  N = C1->GetEntries ();
611 
612  try
613  {
614  if (N != 0)
615  {
616 
617  C1->Fit ("mygauss", "QR");
618  if ((func->GetNDF () != 0))
619  {
620  Chi2 = fabs (func->GetChisquare ()) / fabs (func->GetNDF ());
621  NDF = 0.1;
622  }
623  }
624 
625  if (N == 0 || Chi2 < 0 || NDF < 0)
626  {
627  N = 1;
628  Chi2 = 0;
629  NDF = 0;
630  }
631 
632  }
633  catch (cms::Exception& e)
634  {
635  edm::LogError ("ZFitter") << "[Zfitter]: Exception when fitting..." << e.what();
636  N = 1;
637  Chi2 = 40;
638  NDF = 0;
639  }
640 
641  stats[0] = N;
642  stats[1] = N;
643  stats[2] = Chi2 * N;
644  stats[3] = NDF * NDF * N + Chi2 * Chi2 * N;
645 
646  S1->SetEntries (N);
647  S1->PutStats (stats);
648  }
649  /**********************************************/
650 
651  if (me2 != 0)
652  {
653  TH1F *C2 = me2->getTH1F ();
654  TH1F *S2 = h_fitres2Chi2->getTH1F ();
655  int division = C2->GetNbinsX ();
656  float massMIN = C2->GetBinLowEdge (1);
657  float massMAX = C2->GetBinLowEdge (division + 1);
658  //float BIN_SIZE = B->GetBinWidth(1);
659 
660  TF1 *func = new TF1 ("mygauss", mygauss, massMIN, massMAX, 3);
661  func->SetParameter (0, 1.0);
662  func->SetParName (0, "const");
663  func->SetParameter (1, 95.0);
664  func->SetParName (1, "mean");
665  func->SetParameter (2, 5.0);
666  func->SetParName (2, "sigma");
667 
668  double stats[4];
669  S2->GetStats (stats);
670  float N = 0;
671  float Chi2 = 0;
672  float NDF = 0;
673  N = C2->GetEntries ();
674 
675  try
676  {
677  if (N != 0)
678  {
679  C2->Fit ("mygauss", "QR");
680  if (func->GetNDF () != 0)
681  {
682  Chi2 = fabs (func->GetChisquare ()) / fabs (func->GetNDF ());
683  NDF = 0.1;
684  }
685  }
686 
687  if (N == 0 || Chi2 < 0 || NDF < 0)
688  {
689  N = 1;
690  Chi2 = 0;
691  NDF = 0;
692  }
693 
694  }
695  catch (cms::Exception& e)
696  {
697  edm::LogError ("ZFitter") << "[Zfitter]: Exception when fitting..." << e.what();
698  N = 1;
699  Chi2 = 40;
700  NDF = 0;
701  }
702 
703  stats[0] = N;
704  stats[1] = N;
705  stats[2] = Chi2 * N;
706  stats[3] = NDF * NDF * N + Chi2 * Chi2 * N;
707 
708  S2->SetEntries (N);
709  S2->PutStats (stats);
710  }
711  /**************************************************************************/
712  if (me3 != 0)
713  {
714  TH1F *C3 = me3->getTH1F ();
715  TH1F *S3 = h_fitres3Chi2->getTH1F ();
716  int division = C3->GetNbinsX ();
717  float massMIN = C3->GetBinLowEdge (1);
718  float massMAX = C3->GetBinLowEdge (division + 1);
719  //float BIN_SIZE = B->GetBinWidth(1);
720 
721  TF1 *func = new TF1 ("mygauss", mygauss, massMIN, massMAX, 3);
722  func->SetParameter (0, 1.0);
723  func->SetParName (0, "const");
724  func->SetParameter (1, 95.0);
725  func->SetParName (1, "mean");
726  func->SetParameter (2, 5.0);
727  func->SetParName (2, "sigma");
728 
729  double stats[4];
730  S3->GetStats (stats);
731  float N = 0;
732  float Chi2 = 0;
733  float NDF = 0;
734  N = C3->GetEntries ();
735 
736  try
737  {
738  if (N != 0)
739  {
740  C3->Fit ("mygauss", "QR");
741  if ((func->GetNDF () != 0))
742  {
743  Chi2 = fabs (func->GetChisquare ()) / fabs (func->GetNDF ());
744  NDF = 0.1;
745  }
746  }
747 
748 
749  if (N == 0 || Chi2 < 0 || NDF < 0)
750  {
751  N = 1;
752  Chi2 = 0;
753  NDF = 0;
754  }
755 
756  }
757  catch (cms::Exception& e)
758  {
759  edm::LogError ("ZFitter") << "[Zfitter]: Exception when fitting..." << e.what();
760  N = 1;
761  Chi2 = 40;
762  NDF = 0;
763  }
764 
765  stats[0] = N;
766  stats[1] = N;
767  stats[2] = Chi2 * N;
768  stats[3] = NDF * NDF * N + Chi2 * Chi2 * N;
769 
770  S3->SetEntries (N);
771  S3->PutStats (stats);
772  }
773 }
774 
775  // ------------ method called when starting to processes a luminosity block ------------
776 void
778  edm::EventSetup const &)
779 {
780 }
781 
782  // ------------ method called when ending the processing of a luminosity block ------------
783 void
785  edm::EventSetup const &)
786 {
787 }
788 
789  // ------------ method fills 'descriptions' with the allowed parameters for the module ------------
790 void
792  ConfigurationDescriptions & descriptions)
793 {
794  //The following says we do not know what parameters are allowed so do no validation
795  // Please change this to state exactly what you do use, even if it is no parameters
797  desc.setUnknown ();
798  descriptions.addDefault (desc);
799 }
800 
801  //define this as a plug-in
virtual char const * what() const
Definition: Exception.cc:141
const double Pi
T getUntrackedParameter(std::string const &, T const &) const
virtual void endRun(edm::Run const &, edm::EventSetup const &) override
MonitorElement * h_fitres1Chi2
MonitorElement * h_fitres2
virtual void beginLuminosityBlock(edm::LuminosityBlock const &, edm::EventSetup const &) override
MonitorElement * book1D(const char *name, const char *title, int nchX, double lowX, double highX)
Book 1D histogram.
Definition: DQMStore.cc:942
#define DEFINE_FWK_MODULE(type)
Definition: MakerMacros.h:17
A arg
Definition: Factorize.h:36
Double_t mybw(Double_t *x, Double_t *par)
virtual void endJob() override
MonitorElement * h_fitres1
virtual void beginJob() override
Double_t mygauss(Double_t *x, Double_t *par)
int iEvent
Definition: GenABIO.cc:230
MonitorElement * h_fitres2Chi2
MonitorElement * get(const std::string &path) const
get ME from full pathname (e.g. &quot;my/long/dir/my_histo&quot;)
Definition: DQMStore.cc:1696
#define LogTrace(id)
MonitorElement * h_fitres3Chi2
MonitorElement * h_fitres2bis
#define N
Definition: blowfish.cc:9
MonitorElement * h_fitres3
MonitorElement * h_fitres3bis
TH1F * getTH1F(void) const
virtual void analyze(const edm::Event &, const edm::EventSetup &) override
virtual void beginRun(edm::Run const &, edm::EventSetup const &) override
static void fillDescriptions(edm::ConfigurationDescriptions &descriptions)
Definition: DDAxes.h:10
virtual void endLuminosityBlock(edm::LuminosityBlock const &, edm::EventSetup const &) override
Definition: Chi2.h:17
EcalZmassClient(const edm::ParameterSet &)
void setCurrentFolder(const std::string &fullpath)
Definition: DQMStore.cc:655
MonitorElement * h_fitres1bis
Definition: Run.h:41
std::string prefixME_