37 #include "boost/filesystem/operations.hpp" 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"))
157 t <<
"et_spectrum_b_" <<
i+1;
161 t <<
"e_spectrum_b_" << i+1;
168 t <<
"et_spectrum_e_" <<
i+1;
172 t <<
"e_spectrum_e_" << i+1;
188 edm::LogInfo(
"Calibration") <<
"[PhiSymmetryCalibration] At end of job";
193 TFile
f(
"Espectra_plus.root",
"recreate");
216 std::ofstream k_barl_out(
"k_barl.dat",
ios::out);
218 k_barl_out << ieta <<
" " <<
k_barl_[ieta] << endl;
221 std::ofstream k_endc_out(
"k_endc.dat",
ios::out);
231 stringstream etsum_file_barl;
232 etsum_file_barl <<
"etsum_barl_"<<
eventSet_<<
".dat";
234 std::ofstream etsum_barl_out(etsum_file_barl.str().c_str(),
ios::out);
239 etsum_barl_out << eventSet_ <<
" " << ieta <<
" " << iphi <<
" " <<
sign 245 etsum_barl_out.close();
247 stringstream etsum_file_endc;
248 etsum_file_endc <<
"etsum_endc_"<<eventSet_<<
".dat";
250 std::ofstream etsum_endc_out(etsum_file_endc.str().c_str(),
ios::out);
256 etsum_endc_out << eventSet_ <<
" " << ix <<
" " << iy <<
" " <<
sign 264 etsum_endc_out.close();
288 if (!barrelRecHitsHandle.
isValid()) {
289 LogError(
"") <<
"[PhiSymmetryCalibration] Error! Can't get product!" << std::endl;
293 if (!endcapRecHitsHandle.
isValid()) {
294 LogError(
"") <<
"[PhiSymmetryCalibration] Error! Can't get product!" << std::endl;
309 for (itb=barrelRecHitsHandle->
begin(); itb!=barrelRecHitsHandle->
end(); itb++) {
312 float et = itb->energy()/cosh(eta);
313 float e = itb->energy();
321 e = e * oldCalibs_[hit];
357 for (ite=endcapRecHitsHandle->
begin(); ite!=endcapRecHitsHandle->
end(); ite++) {
362 float et = ite->energy()/cosh(eta);
363 float e = ite->energy();
368 e = e * oldCalibs_[hit];
383 eCut_endc =
ap_ + eta_ring*
b_;
389 float et_thr = eCut_endc/cosh(eta) + 1.;
464 std::vector<TGraph*> k_barl_graph(
kBarlRings);
465 std::vector<TCanvas*> k_barl_plot(
kBarlRings);
468 TF1 mypol1(
"mypol1",
"pol1");
471 int middlebin =
int (kNMiscalBinsEB/2);
473 epsilon_M_eb[imiscal] =
miscalEB_[imiscal] - 1.;
475 k_barl_graph[ieta] =
new TGraph (kNMiscalBinsEB,epsilon_M_eb,epsilon_T_eb);
476 k_barl_graph[ieta]->Fit(&mypol1);
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);
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");
493 k_barl_[ieta] = k_barl_graph[ieta]->GetFunction(
"pol1")->GetParameter(1);
503 int middlebin =
int (kNMiscalBinsEE/2);
505 epsilon_M_ee[imiscal] =
miscalEE_[imiscal] - 1.;
507 k_endc_graph[
ring] =
new TGraph (kNMiscalBinsEE,epsilon_M_ee,epsilon_T_ee);
508 k_endc_graph[
ring]->Fit(&mypol1);
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);
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");
525 k_endc_[
ring] = k_endc_graph[
ring]->GetFunction(
"pol1")->GetParameter(1);
529 TFile
f(
"PhiSymmetryCalibration_kFactors.root",
"recreate");
531 k_barl_plot[ieta]->Write();
532 delete k_barl_plot[ieta];
533 delete k_barl_graph[ieta];
536 k_endc_plot[
ring]->Write();
537 delete k_endc_plot[
ring];
538 delete k_endc_graph[
ring];
577 if (ret)
edm::LogError(
"PhiSym")<<
"Error reading XML files"<<endl;;
LuminosityBlockID id() const
~PhiSymmetryCalibration() override
Destructor.
static const float kMiscalRangeEB
const CaloSubdetectorGeometry * getSubdetectorGeometry(const DetId &id) const
access the subdetector geometry for the given subdetector directly
static const int kNMiscalBinsEB
void beginJob() override
Called at beginning of job.
void endLuminosityBlock(edm::LuminosityBlock const &, edm::EventSetup const &) override
void setup(const CaloGeometry *geometry, const EcalChannelStatus *chstatus, int statusThreshold)
Timestamp const & endTime() const
void setUp(const edm::EventSetup &setup)
FWCore Framework interface EventSetupRecordImplementation h
Helper function to determine trigger accepts.
int nRing_[kEndcEtaRings]
virtual const GlobalPoint & getPosition() const
Returns the position of reference for this cell.
static const int kBarlRings
bool goodCell_barl[kBarlRings][kBarlWedges][kSides]
std::vector< TH1F * > et_spectrum_b_histos
std::vector< EcalRecHit >::const_iterator const_iterator
GlobalPoint cellPos_[kEndcWedgesX][kEndcWedgesY]
def setup(process, global_tag, zero_tesla=False)
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)
virtual const CaloCellGeometry * getGeometry(const DetId &id) const
Get the cell geometry of a given detector id. Should return false if not found.
int iphi() const
get the crystal iphi
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
std::string ecalHitsProducer_
Timestamp const & endTime() const
double etsum_barl_miscal_[kNMiscalBinsEB][kBarlRings]
double k_endc_[kEndcEtaRings]
Abs< T >::type abs(const T &t)
unsigned int nhits_barl_[kBarlRings][kBarlWedges][kSides]
int statusThreshold_
threshold in channel status beyond which channel is marked bad
unsigned int nhits_endc_[kEndcWedgesX][kEndcWedgesX][kSides]
int ieta() const
get the crystal ieta
PhiSymmetryCalibration(const edm::ParameterSet &iConfig)
Constructor.
const_iterator end() const
double etsum_barl_[kBarlRings][kBarlWedges][kSides]
double miscalEB_[kNMiscalBinsEB]
et
define resolution functions of each parameter
Timestamp const & beginTime() const
return(e1-e2)*(e1-e2)+dp *dp
std::vector< TH1F * > e_spectrum_e_histos
static const int kNMiscalBinsEE
double k_barl_[kBarlRings]
std::string fullPath() const
std::string oldcalibfile_
void endRun(edm::Run const &, const edm::EventSetup &) override
void analyze(const edm::Event &, const edm::EventSetup &) override
Called at each event.
double etsum_endc_[kEndcWedgesX][kEndcWedgesX][kSides]
void endJob() override
Called at end of job.
double miscalEE_[kNMiscalBinsEE]
static const float kMiscalRangeEE
TimeValue_t value() const
const_iterator begin() const
bool goodCell_endc[kEndcWedgesX][kEndcWedgesX][kSides]
double etaBoundary_[kEndcEtaRings+1]
static const int kEndcWedgesY