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