CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
PhiSymmetryCalibration.cc
Go to the documentation of this file.
2 
3 // System include files
4 #include <memory>
5 
6 // Framework
10 
18 
19 // Geometry
24 
25 //Channel status
29 
31 
32 
33 
34 
35 
36 
37 #include "boost/filesystem/operations.hpp"
38 
39 using namespace std;
40 #include <fstream>
41 #include <iostream>
42 #include "TH2F.h"
43 #include "TFile.h"
44 #include "TTree.h"
45 #include "TH1F.h"
46 #include "TF1.h"
47 #include "TGraph.h"
48 #include "TCanvas.h"
49 
52 
53 
54 
55 
56 //_____________________________________________________________________________
57 // Class constructor
58 
60 
61  ecalHitsProducer_(iConfig.getParameter<std::string>("ecalRecHitsProducer")),
62  barrelHits_( iConfig.getParameter< std::string > ("barrelHitCollection")),
63  endcapHits_( iConfig.getParameter< std::string > ("endcapHitCollection")),
64  eCut_barl_( iConfig.getParameter< double > ("eCut_barrel") ),
65  ap_( iConfig.getParameter<double> ("ap") ),
66  b_( iConfig.getParameter<double> ("b") ),
67  eventSet_( iConfig.getParameter< int > ("eventSet") ),
68  statusThreshold_(iConfig.getUntrackedParameter<int>("statusThreshold",3)),
69  reiteration_(iConfig.getUntrackedParameter< bool > ("reiteration",false)),
70  oldcalibfile_(iConfig.getUntrackedParameter<std::string>("oldcalibfile",
71  "EcalintercalibConstants.xml"))
72 {
73 
74 
75  isfirstpass_=true;
76 
81 
82  spectra=true;
83 
84  nevents_=0;
85  eventsinrun_=0;
86  eventsinlb_=0;
87 }
88 
89 
90 //_____________________________________________________________________________
91 // Close files, etc.
92 
94 {
95 
96 
97  for(Int_t i=0;i<kBarlRings;i++){
98  delete et_spectrum_b_histos[i];
99  delete e_spectrum_b_histos[i];
100 
101  }
102  for(Int_t i=0;i<kEndcEtaRings;i++){
103  delete et_spectrum_e_histos[i];
104  delete e_spectrum_e_histos[i];
105  }
106 
107 
108 }
109 
110 
111 //_____________________________________________________________________________
112 // Initialize algorithm
113 
115 {
116 
117 
118  // initialize arrays
119  for (int sign=0; sign<kSides; sign++) {
120  for (int ieta=0; ieta<kBarlRings; ieta++) {
121  for (int iphi=0; iphi<kBarlWedges; iphi++) {
122  etsum_barl_[ieta][iphi][sign]=0.;
123  nhits_barl_[ieta][iphi][sign]=0;
124 
125  }
126  }
127  for (int ix=0; ix<kEndcWedgesX; ix++) {
128  for (int iy=0; iy<kEndcWedgesY; iy++) {
129  etsum_endc_[ix][iy][sign]=0.;
130  nhits_endc_[ix][iy][sign]=0;
131  }
132  }
133  }
134 
135 
136 
137  for (int imiscal=0; imiscal<kNMiscalBinsEB; imiscal++) {
138  miscalEB_[imiscal]= (1-kMiscalRangeEB) + float(imiscal)* (2*kMiscalRangeEB/(kNMiscalBinsEB-1));
139  for (int ieta=0; ieta<kBarlRings; ieta++) etsum_barl_miscal_[imiscal][ieta]=0.;
140  }
141 
142  for (int imiscal=0; imiscal<kNMiscalBinsEE; imiscal++) {
143  miscalEE_[imiscal]= (1-kMiscalRangeEE) + float(imiscal)* (2*kMiscalRangeEE/(kNMiscalBinsEE-1));
144  for (int ring=0; ring<kEndcEtaRings; ring++) etsum_endc_miscal_[imiscal][ring]=0.;
145  }
146 
147 
148 
149  // start spectra stuff
150  if (eventSet_!=1) spectra = false;
151 
152  if(spectra)
153  {
154  ostringstream t;
155  for(Int_t i=0;i<kBarlRings;i++)
156  {
157  t << "et_spectrum_b_" << i+1;
158  et_spectrum_b_histos[i]=new TH1F(t.str().c_str(),";E_{T} [MeV]",50,0.,500.);
159  t.str("");
160 
161  t << "e_spectrum_b_" << i+1;
162  e_spectrum_b_histos[i]=new TH1F(t.str().c_str(),";E [MeV]",50,0.,500.);
163  t.str("");
164 
165  }
166  for(Int_t i=0;i<kEndcEtaRings;i++)
167  {
168  t << "et_spectrum_e_" << i+1;
169  et_spectrum_e_histos[i]=new TH1F(t.str().c_str(),";E_{T} [MeV]",75,0.,1500.);
170  t.str("");
171 
172  t << "e_spectrum_e_" << i+1;
173  e_spectrum_e_histos[i]=new TH1F(t.str().c_str(),";E [MeV]",75,0.,1500.);
174  t.str("");
175 
176  }
177  }
178  // end spectra stuff
179 }
180 
181 
182 //_____________________________________________________________________________
183 // Terminate algorithm
184 
186 {
187 
188  edm::LogInfo("Calibration") << "[PhiSymmetryCalibration] At end of job";
189 
190  // start spectra stuff
191  if(spectra)
192  {
193  TFile f("Espectra_plus.root","recreate");
194 
195  for(int i=0;i<kBarlRings;i++){
196  et_spectrum_b_histos[i]->Write();
197  e_spectrum_b_histos[i]->Write();
198  }
199 
200  for(int i=0;i<kEndcEtaRings;i++){
201  et_spectrum_e_histos[i]->Write();
202  e_spectrum_e_histos[i]->Write();
203  }
204 
205  f.Close();
206  }
207 
208 
209 
210 
211  if (eventSet_==1) {
212  // calculate factors to convert from fractional deviation of ET sum from
213  // the mean to the estimate of the miscalibration factor
214  getKfactors();
215 
216  std::ofstream k_barl_out("k_barl.dat", ios::out);
217  for (int ieta=0; ieta<kBarlRings; ieta++)
218  k_barl_out << ieta << " " << k_barl_[ieta] << endl;
219  k_barl_out.close();
220 
221  std::ofstream k_endc_out("k_endc.dat", ios::out);
222  for (int ring=0; ring<kEndcEtaRings; ring++)
223  k_endc_out << ring << " " << k_endc_[ring] << endl;
224  k_endc_out.close();
225  }
226 
227 
228  if (eventSet_!=0) {
229  // output ET sums
230 
231  stringstream etsum_file_barl;
232  etsum_file_barl << "etsum_barl_"<<eventSet_<<".dat";
233 
234  std::ofstream etsum_barl_out(etsum_file_barl.str().c_str(),ios::out);
235 
236  for (int ieta=0; ieta<kBarlRings; ieta++) {
237  for (int iphi=0; iphi<kBarlWedges; iphi++) {
238  for (int sign=0; sign<kSides; sign++) {
239  etsum_barl_out << eventSet_ << " " << ieta << " " << iphi << " " << sign
240  << " " << etsum_barl_[ieta][iphi][sign] << " "
241  << nhits_barl_[ieta][iphi][sign] << endl;
242  }
243  }
244  }
245  etsum_barl_out.close();
246 
247  stringstream etsum_file_endc;
248  etsum_file_endc << "etsum_endc_"<<eventSet_<<".dat";
249 
250  std::ofstream etsum_endc_out(etsum_file_endc.str().c_str(),ios::out);
251  for (int ix=0; ix<kEndcWedgesX; ix++) {
252  for (int iy=0; iy<kEndcWedgesY; iy++) {
253  int ring = e_.endcapRing_[ix][iy];
254  if (ring!=-1) {
255  for (int sign=0; sign<kSides; sign++) {
256  etsum_endc_out << eventSet_ << " " << ix << " " << iy << " " << sign
257  << " " << etsum_endc_[ix][iy][sign] << " "
258  << nhits_endc_[ix][iy][sign]<<" "
259  << e_.endcapRing_[ix][iy]<<endl;
260  }
261  }
262  }
263  }
264  etsum_endc_out.close();
265  }
266  cout<<"Events processed " << nevents_<< endl;
267 }
268 
269 
270 //_____________________________________________________________________________
271 // Called at each event
272 
274 {
275  using namespace edm;
276  using namespace std;
277 
278  if (isfirstpass_) {
279  setUp(setup);
280  isfirstpass_=false;
281  }
282 
283 
284  Handle<EBRecHitCollection> barrelRecHitsHandle;
285  Handle<EERecHitCollection> endcapRecHitsHandle;
286 
287  event.getByLabel(ecalHitsProducer_,barrelHits_,barrelRecHitsHandle);
288  if (!barrelRecHitsHandle.isValid()) {
289  LogError("") << "[PhiSymmetryCalibration] Error! Can't get product!" << std::endl;
290  }
291 
292  event.getByLabel(ecalHitsProducer_,endcapHits_,endcapRecHitsHandle);
293  if (!endcapRecHitsHandle.isValid()) {
294  LogError("") << "[PhiSymmetryCalibration] Error! Can't get product!" << std::endl;
295  }
296 
297 
298  // get the ecal geometry
299  edm::ESHandle<CaloGeometry> geoHandle;
300  setup.get<CaloGeometryRecord>().get(geoHandle);
301  const CaloSubdetectorGeometry *barrelGeometry =
302  geoHandle->getSubdetectorGeometry(DetId::Ecal, EcalBarrel);
303  const CaloSubdetectorGeometry *endcapGeometry =
304  geoHandle->getSubdetectorGeometry(DetId::Ecal, EcalEndcap);
305 
306  bool pass=false;
307  // select interesting EcalRecHits (barrel)
309  for (itb=barrelRecHitsHandle->begin(); itb!=barrelRecHitsHandle->end(); itb++) {
310  EBDetId hit = EBDetId(itb->id());
311  float eta = barrelGeometry->getGeometry(hit)->getPosition().eta();
312  float et = itb->energy()/cosh(eta);
313  float e = itb->energy();
314 
315 
316 
317  // if iterating, correct by the previous calib constants found,
318  // which are supplied in the form of correction
319  if (reiteration_) {
320  et= et * oldCalibs_[hit];
321  e = e * oldCalibs_[hit];
322  }
323 
324  float et_thr = eCut_barl_/cosh(eta) + 1.;
325 
326  int sign = hit.ieta()>0 ? 1 : 0;
327 
328  if (e > eCut_barl_ && et < et_thr && e_.goodCell_barl[abs(hit.ieta())-1][hit.iphi()-1][sign]) {
329  etsum_barl_[abs(hit.ieta())-1][hit.iphi()-1][sign] += et;
330  nhits_barl_[abs(hit.ieta())-1][hit.iphi()-1][sign] ++;
331  pass =true;
332  }//if energy
333 
334  if (eventSet_==1) {
335  // apply a miscalibration to all crystals and increment the
336  // ET sum, combined for all crystals
337  for (int imiscal=0; imiscal<kNMiscalBinsEB; imiscal++) {
338  if (miscalEB_[imiscal]*e > eCut_barl_&& miscalEB_[imiscal]*et < et_thr && e_.goodCell_barl[abs(hit.ieta())-1][hit.iphi()-1][sign]) {
339  etsum_barl_miscal_[imiscal][abs(hit.ieta())-1] += miscalEB_[imiscal]*et;
340  }
341  }
342 
343  // spectra stuff
344  if(spectra && hit.ieta()>0) //POSITIVE!!!
345  // if(spectra && hit.ieta()<0) //NEGATIVE!!!
346  {
347  et_spectrum_b_histos[abs(hit.ieta())-1]->Fill(et*1000.);
348  e_spectrum_b_histos[abs(hit.ieta())-1]->Fill(e*1000.);
349  }//if spectra
350 
351  }//if eventSet_==1
352  }//for barl
353 
354 
355  // select interesting EcalRecHits (endcaps)
357  for (ite=endcapRecHitsHandle->begin(); ite!=endcapRecHitsHandle->end(); ite++) {
358  EEDetId hit = EEDetId(ite->id());
359  float eta = abs(endcapGeometry->getGeometry(hit)->getPosition().eta());
360  //float phi = endcapGeometry->getGeometry(hit)->getPosition().phi();
361 
362  float et = ite->energy()/cosh(eta);
363  float e = ite->energy();
364 
365  // if iterating, multiply by the previous correction factor
366  if (reiteration_) {
367  et= et * oldCalibs_[hit];
368  e = e * oldCalibs_[hit];
369  }
370 
371  int sign = hit.zside()>0 ? 1 : 0;
372 
373 
374  // changes of eCut_endc_ -> variable linearthr
375  // e_cut = ap + eta_ring*b
376 
377  double eCut_endc=0;
378  for (int ring=0; ring<kEndcEtaRings; ring++) {
379 
380  if(eta>e_.etaBoundary_[ring] && eta<e_.etaBoundary_[ring+1])
381  {
382  float eta_ring= abs(e_.cellPos_[ring][50].eta()) ;
383  eCut_endc = ap_ + eta_ring*b_;
384 
385  }
386  }
387 
388 
389  float et_thr = eCut_endc/cosh(eta) + 1.;
390 
391  if (e > eCut_endc && et < et_thr && e_.goodCell_endc[hit.ix()-1][hit.iy()-1][sign]){
392  etsum_endc_[hit.ix()-1][hit.iy()-1][sign] += et;
393  nhits_endc_[hit.ix()-1][hit.iy()-1][sign] ++;
394  pass=true;
395  }
396 
397 
398 
399  if (eventSet_==1) {
400  // apply a miscalibration to all crystals and increment the
401  // ET sum, combined for all crystals
402  for (int imiscal=0; imiscal<kNMiscalBinsEE; imiscal++) {
403  if (miscalEE_[imiscal]*e> eCut_endc && et*miscalEE_[imiscal] < et_thr && e_.goodCell_endc[hit.ix()-1][hit.iy()-1][sign]){
404  int ring = e_.endcapRing_[hit.ix()-1][hit.iy()-1];
405  etsum_endc_miscal_[imiscal][ring] += miscalEE_[imiscal]*et;
406  }
407  }
408 
409  // spectra stuff
410  if(spectra && hit.zside()>0) //POSITIVE!!!
411 
412  {
413  int ring = e_.endcapRing_[hit.ix()-1][hit.iy()-1];
414 
415  et_spectrum_e_histos[ring]->Fill(et*1000.);
416  e_spectrum_e_histos[ring]->Fill(e*1000.);
417 
418  if(ring==16)
419  {
420  //int iphi_endc = 0;
421  for (int ip=0; ip<e_.nRing_[ring]; ip++) {
422  //if (phi==e_.phi_endc_[ip][ring]) iphi_endc=ip;
423  }
424 
425  }
426  }//if spectra
427 
428  }//if eventSet_==1
429  }//for endc
430 
431  if (pass) {
432  nevents_++;
433  eventsinrun_++;
434  eventsinlb_++;
435  }
436 }
437 
439 
440 
441  std::cout << "PHIREPRT : run "<< run.run()
442  << " start " << (run.beginTime().value()>>32)
443  << " end " << (run.endTime().value()>>32)
444  << " dur " << (run.endTime().value()>>32)- (run.beginTime().value()>>32)
445 
446  << " npass " << eventsinrun_ << std::endl;
447  eventsinrun_=0;
448 
449  return ;
450 
451 }
452 
453 //_____________________________________________________________________________
454 
456 {
457 
458  float epsilon_T_eb[kNMiscalBinsEB];
459  float epsilon_M_eb[kNMiscalBinsEB];
460 
461  float epsilon_T_ee[kNMiscalBinsEE];
462  float epsilon_M_ee[kNMiscalBinsEE];
463 
464  std::vector<TGraph*> k_barl_graph(kBarlRings);
465  std::vector<TCanvas*> k_barl_plot(kBarlRings);
466 
467  //Create our own TF1 to avoid threading problems
468  TF1 mypol1("mypol1","pol1");
469  for (int ieta=0; ieta<kBarlRings; ieta++) {
470  for (int imiscal=0; imiscal<kNMiscalBinsEB; imiscal++) {
471  int middlebin = int (kNMiscalBinsEB/2);
472  epsilon_T_eb[imiscal] = etsum_barl_miscal_[imiscal][ieta]/etsum_barl_miscal_[middlebin][ieta] - 1.;
473  epsilon_M_eb[imiscal] = miscalEB_[imiscal] - 1.;
474  }
475  k_barl_graph[ieta] = new TGraph (kNMiscalBinsEB,epsilon_M_eb,epsilon_T_eb);
476  k_barl_graph[ieta]->Fit(&mypol1);
477 
478  ostringstream t;
479  t<< "k_barl_" << ieta+1;
480  k_barl_plot[ieta] = new TCanvas(t.str().c_str(),"");
481  k_barl_plot[ieta]->SetFillColor(10);
482  k_barl_plot[ieta]->SetGrid();
483  k_barl_graph[ieta]->SetMarkerSize(1.);
484  k_barl_graph[ieta]->SetMarkerColor(4);
485  k_barl_graph[ieta]->SetMarkerStyle(20);
486  k_barl_graph[ieta]->GetXaxis()->SetLimits(-1.*kMiscalRangeEB,kMiscalRangeEB);
487  k_barl_graph[ieta]->GetXaxis()->SetTitleSize(.05);
488  k_barl_graph[ieta]->GetYaxis()->SetTitleSize(.05);
489  k_barl_graph[ieta]->GetXaxis()->SetTitle("#epsilon_{M}");
490  k_barl_graph[ieta]->GetYaxis()->SetTitle("#epsilon_{T}");
491  k_barl_graph[ieta]->Draw("AP");
492 
493  k_barl_[ieta] = k_barl_graph[ieta]->GetFunction("pol1")->GetParameter(1);
494  std::cout << "k_barl_[" << ieta << "]=" << k_barl_[ieta] << std::endl;
495  }
496 
497 
498  std::vector<TGraph*> k_endc_graph(kEndcEtaRings);
499  std::vector<TCanvas*> k_endc_plot(kEndcEtaRings);
500 
501  for (int ring=0; ring<kEndcEtaRings; ring++) {
502  for (int imiscal=0; imiscal<kNMiscalBinsEE; imiscal++) {
503  int middlebin = int (kNMiscalBinsEE/2);
504  epsilon_T_ee[imiscal] = etsum_endc_miscal_[imiscal][ring]/etsum_endc_miscal_[middlebin][ring] - 1.;
505  epsilon_M_ee[imiscal] = miscalEE_[imiscal] - 1.;
506  }
507  k_endc_graph[ring] = new TGraph (kNMiscalBinsEE,epsilon_M_ee,epsilon_T_ee);
508  k_endc_graph[ring]->Fit(&mypol1);
509 
510  ostringstream t;
511  t<< "k_endc_"<< ring+1;
512  k_endc_plot[ring] = new TCanvas(t.str().c_str(),"");
513  k_endc_plot[ring]->SetFillColor(10);
514  k_endc_plot[ring]->SetGrid();
515  k_endc_graph[ring]->SetMarkerSize(1.);
516  k_endc_graph[ring]->SetMarkerColor(4);
517  k_endc_graph[ring]->SetMarkerStyle(20);
518  k_endc_graph[ring]->GetXaxis()->SetLimits(-1*kMiscalRangeEE,kMiscalRangeEE);
519  k_endc_graph[ring]->GetXaxis()->SetTitleSize(.05);
520  k_endc_graph[ring]->GetYaxis()->SetTitleSize(.05);
521  k_endc_graph[ring]->GetXaxis()->SetTitle("#epsilon_{M}");
522  k_endc_graph[ring]->GetYaxis()->SetTitle("#epsilon_{T}");
523  k_endc_graph[ring]->Draw("AP");
524 
525  k_endc_[ring] = k_endc_graph[ring]->GetFunction("pol1")->GetParameter(1);
526  std::cout << "k_endc_[" << ring << "]=" << k_endc_[ring] << std::endl;
527  }
528 
529  TFile f("PhiSymmetryCalibration_kFactors.root","recreate");
530  for (int ieta=0; ieta<kBarlRings; ieta++) {
531  k_barl_plot[ieta]->Write();
532  delete k_barl_plot[ieta];
533  delete k_barl_graph[ieta];
534  }
535  for (int ring=0; ring<kEndcEtaRings; ring++) {
536  k_endc_plot[ring]->Write();
537  delete k_endc_plot[ring];
538  delete k_endc_graph[ring];
539  }
540  f.Close();
541 
542 }
543 
544 
545 
546 
547 
548 //_____________________________________________________________________________
549 
550 
551 
553 
555  setup.get<EcalChannelStatusRcd>().get(chStatus);
556 
557  edm::ESHandle<CaloGeometry> geoHandle;
558  setup.get<CaloGeometryRecord>().get(geoHandle);
559 
560  e_.setup(&(*geoHandle), &(*chStatus), statusThreshold_);
561 
562 
563  if (reiteration_){
564 
566  // namespace fs = boost::filesystem;
567 // fs::path p(oldcalibfile_.c_str(),fs::native);
568 // if (!fs::exists(p)) edm::LogError("PhiSym") << "File not found: "
569 // << oldcalibfile_ <<endl;
570 
571  edm::FileInPath fip("Calibration/EcalCalibAlgos/data/"+oldcalibfile_);
572 
573 
574 
575  int ret=
577  if (ret) edm::LogError("PhiSym")<<"Error reading XML files"<<endl;;
578 
579  } else {
580  // in fact if not reiterating, oldCalibs_ will never be used
582  setup.get<EcalIntercalibConstantsRcd>().get(pIcal);
583  oldCalibs_=*pIcal;
584 
585  }
586 
587 }
588 
589 
591 
592 
593  if ((lb.endTime().value()>>32)- (lb.beginTime().value()>>32) <60 )
594  return;
595 
596  std::cout << "PHILB : run "<< lb.run()
597  << " id " << lb.id()
598  << " start " << (lb.beginTime().value()>>32)
599  << " end " << (lb.endTime().value()>>32)
600  << " dur " << (lb.endTime().value()>>32)- (lb.beginTime().value()>>32)
601 
602  << " npass " << eventsinlb_ << std::endl;
603 
604  eventsinlb_=0;
605 
606 }
LuminosityBlockID id() const
static const float kMiscalRangeEB
int i
Definition: DBlmapReader.cc:9
virtual void endRun(edm::Run &, const edm::EventSetup &)
void setup(const CaloGeometry *geometry, const EcalChannelStatus *chstatus, int statusThreshold)
int ix() const
Definition: EEDetId.h:76
Timestamp const & endTime() const
Definition: RunBase.h:44
void setUp(const edm::EventSetup &setup)
RunNumber_t run() const
Definition: RunBase.h:42
int nRing_[kEndcEtaRings]
static const int kBarlRings
bool goodCell_barl[kBarlRings][kBarlWedges][kSides]
std::vector< TH1F * > et_spectrum_b_histos
double sign(double x)
std::vector< EcalRecHit >::const_iterator const_iterator
GlobalPoint cellPos_[kEndcWedgesX][kEndcWedgesY]
static const int kSides
Timestamp const & beginTime() const
std::vector< TH1F * > e_spectrum_b_histos
static int readXML(const std::string &filename, EcalCondHeader &header, EcalFloatCondObjectContainer &record)
EcalIntercalibConstants oldCalibs_
the old calibration constants (when reiterating, the last ones derived)
return((rh^lh)&mask)
virtual void analyze(const edm::Event &, const edm::EventSetup &)
Called at each event.
int iphi() const
get the crystal iphi
Definition: EBDetId.h:53
static const int kBarlWedges
double etsum_endc_miscal_[kNMiscalBinsEE][kEndcEtaRings]
static const int kEndcWedgesX
void Fill(HcalDetId &id, double val, std::vector< TH2F > &depth)
int endcapRing_[kEndcWedgesX][kEndcWedgesY]
static const int kEndcEtaRings
std::vector< TH1F * > et_spectrum_e_histos
Timestamp const & endTime() const
double etsum_barl_miscal_[kNMiscalBinsEB][kBarlRings]
double k_endc_[kEndcEtaRings]
int zside() const
Definition: EEDetId.h:70
Abs< T >::type abs(const T &t)
Definition: Abs.h:22
unsigned int nhits_barl_[kBarlRings][kBarlWedges][kSides]
RunNumber_t run() const
double f[11][100]
int statusThreshold_
threshold in channel status beyond which channel is marked bad
The Signals That Services Can Subscribe To This is based on ActivityRegistry h
Helper function to determine trigger accepts.
Definition: Activities.doc:4
int iy() const
Definition: EEDetId.h:82
unsigned int nhits_endc_[kEndcWedgesX][kEndcWedgesX][kSides]
int ieta() const
get the crystal ieta
Definition: EBDetId.h:51
PhiSymmetryCalibration(const edm::ParameterSet &iConfig)
Constructor.
How EventSelector::AcceptEvent() decides whether to accept an event for output otherwise it is excluding the probing of A single or multiple positive and the trigger will pass if any such matching triggers are PASS or EXCEPTION[A criterion thatmatches no triggers at all is detected and causes a throw.] A single negative with an expectation of appropriate bit checking in the decision and the trigger will pass if any such matching triggers are FAIL or EXCEPTION A wildcarded negative criterion that matches more than one trigger in the trigger but the state exists so we define the behavior If all triggers are the negative crieriion will lead to accepting the event(this again matches the behavior of"!*"before the partial wildcard feature was incorporated).The per-event"cost"of each negative criterion with multiple relevant triggers is about the same as!*was in the past
tuple out
Definition: dbtoconf.py:99
const T & get() const
Definition: EventSetup.h:56
virtual void beginJob()
Called at beginning of job.
double etsum_barl_[kBarlRings][kBarlWedges][kSides]
double miscalEB_[kNMiscalBinsEB]
Timestamp const & beginTime() const
Definition: RunBase.h:43
T eta() const
Definition: PV3DBase.h:76
std::vector< TH1F * > e_spectrum_e_histos
tuple cout
Definition: gather_cfg.py:121
volatile std::atomic< bool > shutdown_flag false
double etsum_endc_[kEndcWedgesX][kEndcWedgesX][kSides]
std::string fullPath() const
Definition: FileInPath.cc:165
void endLuminosityBlock(edm::LuminosityBlock const &, edm::EventSetup const &)
double miscalEE_[kNMiscalBinsEE]
static const float kMiscalRangeEE
virtual void endJob()
Called at end of job.
void setup(std::vector< TH2F > &depth, std::string name, std::string units="")
TimeValue_t value() const
Definition: Timestamp.h:56
Definition: Run.h:43
bool goodCell_endc[kEndcWedgesX][kEndcWedgesX][kSides]
double etaBoundary_[kEndcEtaRings+1]
static const int kEndcWedgesY