18 : mInputCollection(iConfig.getParameter<
edm::
InputTag>(
"src")),
19 mInputVtxCollection(iConfig.getUntrackedParameter<
edm::
InputTag>(
"srcVtx",
edm::
InputTag(
"hiSelectedVertex"))),
20 mInputPFCandCollection(iConfig.getParameter<
edm::
InputTag>(
"PFcands")),
21 mInputCsCandCollection(iConfig.exists(
"CScands") ? iConfig.getParameter<
edm::
InputTag>(
"CScands")
23 mOutputFile(iConfig.getUntrackedParameter<
std::
string>(
"OutputFile",
"")),
26 mRecoJetPtThreshold(iConfig.getParameter<double>(
"recoJetPtThreshold")),
27 mReverseEnergyFractionThreshold(iConfig.getParameter<double>(
"reverseEnergyFractionThreshold")),
28 mRThreshold(iConfig.getParameter<double>(
"RThreshold")),
29 JetCorrectionService(iConfig.getParameter<
std::
string>(
"JetCorrections")) {
102 for (
int ipt = 0; ipt <
ptBins_; ipt++) {
188 TH2F *h2D_etabins_vs_pt2 =
190 TH2F *h2D_etabins_vs_pt =
192 TH2F *h2D_pfcand_etabins_vs_pt =
195 const int nHihfBins = 100;
196 const double hihfBins[nHihfBins + 1] = {
197 0, 11.282305, 11.82962, 12.344717, 13.029054, 13.698554, 14.36821, 15.140326,
198 15.845786, 16.684441, 17.449186, 18.364939, 19.247023, 20.448898, 21.776642, 22.870239,
199 24.405788, 26.366919, 28.340206, 30.661842, 33.657627, 36.656773, 40.028049, 44.274784,
200 48.583706, 52.981358, 56.860199, 61.559853, 66.663689, 72.768196, 78.265915, 84.744431,
201 92.483459, 100.281021, 108.646576, 117.023911, 125.901093, 135.224899, 147.046875, 159.864258,
202 171.06015, 184.76535, 197.687103, 212.873535, 229.276413, 245.175369, 262.498322, 280.54599,
203 299.570801, 317.188446, 336.99881, 357.960144, 374.725922, 400.638367, 426.062103, 453.07251,
204 483.99704, 517.556396, 549.421143, 578.050781, 608.358643, 640.940979, 680.361755, 719.215027,
205 757.798645, 793.882385, 839.83728, 887.268127, 931.233276, 980.856689, 1023.191833, 1080.281494,
206 1138.363892, 1191.303345, 1251.439453, 1305.288818, 1368.290894, 1433.700684, 1501.597412, 1557.918335,
207 1625.636475, 1695.08374, 1761.771484, 1848.941162, 1938.178345, 2027.55603, 2127.364014, 2226.186523,
208 2315.188965, 2399.225342, 2501.608643, 2611.077881, 2726.316162, 2848.74707, 2972.975342, 3096.565674,
209 3219.530762, 3361.178223, 3568.028564, 3765.690186, 50000};
211 TH2F *h2D_etabins_forRho =
213 TH2F *h2D_ptBins_forRho =
new TH2F(
"ptBinsForRho",
"#rho vs. p_{T};p_{T};#rho", 300, 0, 300, 500, 0, 300);
214 TH2F *h2D_centBins_forRho =
new TH2F(
"centBinsForRho",
"dummy;HIHF;#rho", nHihfBins, hihfBins, 500, 0, 300);
216 TH2F *h2D_etabins_forRhoM =
218 TH2F *h2D_ptBins_forRhoM =
new TH2F(
"ptBinsForRho",
"#rho_{M} vs. p_{T};p_{T};#rho_{M}", 300, 0, 300, 100, 0, 1.5);
219 TH2F *h2D_centBins_forRhoM =
new TH2F(
"centBinsForRho",
"dummy;HIHF;#rho_{M}", nHihfBins, hihfBins, 100, 0, 1.5);
222 mNPFpart = ibooker.
book1D(
"NPFpart",
"No of particle flow candidates", 1000, 0, 1000);
223 mPFPt = ibooker.
book1D(
"PFPt",
"PF candidate p_{T}", 10000, -500, 500);
224 mPFEta = ibooker.
book1D(
"PFEta",
"PF candidate #eta", 120, -6, 6);
225 mPFPhi = ibooker.
book1D(
"PFPhi",
"PF candidate #phi", 70, -3.5, 3.5);
227 mPFDeltaR = ibooker.
book1D(
"PFDeltaR",
"PF candidate DeltaR", 100, 0, 4);
229 ibooker.
book1D(
"PFDeltaR_Scaled_R",
"PF candidate DeltaR Divided by DeltaR square", 100, 0, 4);
233 mSumPFPt = ibooker.
book1D(
"SumPFPt",
"Sum of initial PF p_{T}", 1000, -10000, 10000);
237 mSumSquaredPFPt = ibooker.
book1D(
"SumSquaredPFPt",
"Sum of initial PF p_{T} squared", 10000, 0, 10000);
241 "SumPFPt_HF",
"HF energy (y axis) vs Sum initial PF p_{T} (x axis)", 1000, -1000, 1000, 1000, 0, 10000);
251 for (
int id = 0;
id < 2;
id++) {
252 if (
histoName.find(
'.') != std::string::npos) {
274 ibooker.
book1D(Form(
"csCandPt_etaBin%d",
ieta),
"CS candidate pt, eta-by-eta", 150, 0, 300);
280 for (
int id = 0;
id < 2;
id++) {
281 if (
histoName.find(
'.') != std::string::npos) {
287 h2D_centBins_forRho->SetTitle(Form(
292 h2D_centBins_forRhoM->SetTitle(Form(
"#rho_{M} vs. HIHF in the range %.3g < #eta < %.3g",
296 for (
int ipt = 0; ipt <
ptBins_; ipt++) {
298 ibooker.
book1D(Form(
"subtractedEFrac_JetPt%d_to_%d_etaBin%d",
ptBin[ipt],
ptBin[ipt + 1],
ieta),
299 "subtracted fraction of CS jet",
305 "subtracted total of CS jet",
311 Form(
"csCandCorrPF%d",
ieta),
"CS to PF candidate correlation, eta-by-eta", 300, 0, 300, 300, 0, 300);
325 Form(
";PF candidate p_{T}, |#eta|<%2.2f; counts",
BarrelEta),
330 Form(
";PF candidate p_{T}, |#eta|<%2.2f; counts",
BarrelEta),
335 Form(
";PF candidate p_{T}, |#eta|<%2.2f; counts",
BarrelEta),
340 Form(
";PF candidate p_{T}, |#eta|<%2.2f; counts",
BarrelEta),
345 Form(
";PF candidate p_{T}, |#eta|<%2.2f; counts",
BarrelEta),
350 Form(
";PF candidate p_{T}, |#eta|<%2.2f; counts",
BarrelEta),
355 Form(
";PF candidate p_{T}, |#eta|<%2.2f; counts",
BarrelEta),
360 Form(
";PF candidate p_{T}, |#eta|<%2.2f; counts",
BarrelEta),
366 ibooker.
book1D(
"mPFCandpT_Endcap_Unknown",
372 ibooker.
book1D(
"mPFCandpT_Endcap_ChargedHadron",
378 ibooker.
book1D(
"mPFCandpT_Endcap_electron",
384 ibooker.
book1D(
"mPFCandpT_Endcap_muon",
390 ibooker.
book1D(
"mPFCandpT_Endcap_photon",
396 ibooker.
book1D(
"mPFCandpT_Endcap_NeutralHadron",
402 ibooker.
book1D(
"mPFCandpT_Endcap_HadE_inHF",
408 ibooker.
book1D(
"mPFCandpT_Endcap_EME_inHF",
415 ibooker.
book1D(
"mPFCandpT_Forward_Unknown",
421 ibooker.
book1D(
"mPFCandpT_Forward_ChargedHadron",
427 ibooker.
book1D(
"mPFCandpT_Forward_electron",
433 ibooker.
book1D(
"mPFCandpT_Forward_muon",
439 ibooker.
book1D(
"mPFCandpT_Forward_photon",
445 ibooker.
book1D(
"mPFCandpT_Forward_NeutralHadron",
451 ibooker.
book1D(
"mPFCandpT_Forward_HadE_inHF",
457 ibooker.
book1D(
"mPFCandpT_Forward_EME_inHF",
465 mNCalopart = ibooker.
book1D(
"NCalopart",
"No of particle flow candidates", 1000, 0, 10000);
466 mCaloPt = ibooker.
book1D(
"CaloPt",
"Calo candidate p_{T}", 1000, -5000, 5000);
467 mCaloEta = ibooker.
book1D(
"CaloEta",
"Calo candidate #eta", 120, -6, 6);
468 mCaloPhi = ibooker.
book1D(
"CaloPhi",
"Calo candidate #phi", 70, -3.5, 3.5);
470 mSumCaloPt = ibooker.
book1D(
"SumCaloPt",
"Sum Calo p_{T}", 1000, -10000, 10000);
473 mSumSquaredCaloPt = ibooker.
book1D(
"SumSquaredCaloPt",
"Sum of initial Calo tower p_{T} squared", 10000, 0, 10000);
477 ibooker.
book2D(
"SumCaloPt_HF",
"HF Energy (y axis) vs Sum Calo tower p_{T}", 1000, -1000, 1000, 1000, 0, 10000);
487 for (
int id = 0;
id < 2;
id++) {
488 if (
histoName.find(
'.') != std::string::npos) {
493 Form(
"Sum Calo tower Pt in the eta range %.3g to %.3g",
503 mSumpt = ibooker.
book1D(
"SumpT",
"Sum p_{T} of all the PF candidates per event", 1000, 0, 10000);
506 mNvtx = ibooker.
book1D(
"Nvtx",
"number of vertices", 60, 0, 60);
507 mHF = ibooker.
book1D(
"HF",
"HF energy distribution", 1000, 0, 10000);
510 mEta = ibooker.
book1D(
"Eta",
"Eta", 120, -6, 6);
511 mPhi = ibooker.
book1D(
"Phi",
"Phi", 70, -3.5, 3.5);
512 mPt = ibooker.
book1D(
"Pt",
"Pt", 1000, 0, 500);
513 mP = ibooker.
book1D(
"P",
"P", 100, 0, 1000);
515 mMass = ibooker.
book1D(
"Mass",
"Mass", 100, 0, 200);
519 mNJets_40 = ibooker.
book1D(
"NJets_pt_greater_40",
"NJets pT > 40 GeV", 50, 0, 50);
523 LogInfo(
"OutputInfo") <<
" Histograms will NOT be saved";
527 delete h2D_etabins_vs_pt2;
528 delete h2D_etabins_vs_pt;
529 delete h2D_pfcand_etabins_vs_pt;
530 delete h2D_etabins_forRho;
531 delete h2D_ptBins_forRho;
532 delete h2D_centBins_forRho;
533 delete h2D_centBins_forRhoM;
559 for (
unsigned int i = 0;
i < vtxs->size(); ++
i) {
560 unsigned int daughter = (*vtxs)[
i].tracksSize();
561 if (daughter > (*vtxs)[greatestvtx].tracksSize())
568 vtx = (*vtxs)[greatestvtx].position();
570 int nGoodVertices = 0;
573 for (
unsigned i = 0;
i < pvHandle->size();
i++) {
574 if ((*pvHandle)[
i].ndof() > 4 && (fabs((*pvHandle)[
i].
z()) <= 24) && (fabs((*pvHandle)[
i].
position().
rho()) <= 2))
608 double rhoRange[rhoSize];
609 for (
int irho = 0; irho < rhoSize; irho++) {
612 double yaxisLimits[501];
613 for (
int ibin = 0; ibin < 501; ibin++)
614 yaxisLimits[ibin] = ibin * 2;
617 rhoSize - 1, const_cast<double *>(rhoRange), 500, const_cast<double *>(yaxisLimits));
619 rhoSize - 1, const_cast<double *>(rhoRange), 500, const_cast<double *>(yaxisLimits));
666 Int_t NCaloTower = 0;
671 Float_t pfDeltaR = 0;
675 Float_t SumPt_value = 0;
677 vector<vector<float>> numbers;
678 vector<float> tempVector;
691 SumSquaredCaloPt[
i] = 0;
692 hSumCaloPt[
i] =
new TH1F(Form(
"hSumCaloPt_%d",
i),
"", 10000, -10000, 10000);
695 for (
unsigned icand = 0; icand < caloCandidates->
size(); icand++) {
710 SumCaloPt[
k] = SumCaloPt[
k] + caloPt;
711 SumSquaredCaloPt[
k] = SumSquaredCaloPt[
k] + caloPt * caloPt;
717 SumPt_value = SumPt_value + caloPt;
726 hSumCaloPt[
k]->Fill(SumCaloPt[
k]);
730 Float_t Evt_SumCaloPt = 0;
731 Float_t Evt_SumSquaredCaloPt = 0;
738 Evt_SumCaloPt = Evt_SumCaloPt + SumCaloPt[
k];
741 Evt_SumSquaredCaloPt = Evt_SumSquaredCaloPt + SumSquaredCaloPt[
k];
744 delete hSumCaloPt[
k];
768 SumSquaredPFPt[
i] = 0;
770 hSumPFPt[
i] =
new TH1F(Form(
"hSumPFPt_%d",
i),
"", 10000, -10000, 10000);
773 vector<vector<float>> PF_Space(1, vector<float>(3));
778 for (
unsigned iCScand = 0; iCScand < csCandidateColl->size(); iCScand++) {
779 assert(csCandidateColl->size() <= pfCandidateColl->size());
790 for (
unsigned icand = 0; icand < pfCandidateColl->size(); icand++) {
793 if (pfCandidate.
pt() < 5)
797 pfPt = pfCandidate.
pt();
798 pfEta = pfCandidate.
eta();
799 pfPhi = pfCandidate.
phi();
889 tempVector.push_back(pfPt);
890 tempVector.push_back(pfEta);
891 tempVector.push_back(pfPhi);
893 numbers.push_back(tempVector);
898 SumPFPt[
k] = SumPFPt[
k] + pfPt;
899 SumSquaredPFPt[
k] = SumSquaredPFPt[
k] + pfPt * pfPt;
905 SumPt_value = SumPt_value + pfPt;
914 hSumPFPt[
k]->Fill(SumPFPt[
k]);
918 Float_t Evt_SumPFPt = 0;
919 Float_t Evt_SumSquaredPFPt = 0;
926 Evt_SumPFPt = Evt_SumPFPt + SumPFPt[
k];
929 Evt_SumSquaredPFPt = Evt_SumSquaredPFPt + SumSquaredPFPt[
k];
946 for (
unsigned ijet = 0; ijet <
caloJets->size(); ijet++) {
952 for (
unsigned ijet = 0; ijet < jptJets->size(); ijet++)
953 recoJets.push_back((*jptJets)[ijet]);
958 for (
unsigned ijet = 0; ijet < basicJets->size(); ijet++) {
959 recoJets.push_back((*basicJets)[ijet]);
963 for (
unsigned ijet = 0; ijet <
pfJets->size(); ijet++) {
993 for (
unsigned ijet = 0; ijet <
recoJets.size(); ijet++) {
1019 int ipt = 0,
ieta = 0;
1027 for (
unsigned irho = 0; irho <
rho->size(); irho++) {
1037 for (
size_t iii = 0; iii < numbers.size(); iii++) {
MonitorElement * mPFCandpT_Forward_photon
edm::EDGetTokenT< reco::CaloJetCollection > caloJetsToken_
edm::EDGetTokenT< reco::PFCandidateCollection > pfCandToken_
MonitorElement * mCaloEta
edm::InputTag mInputCsCandCollection
T getParameter(std::string const &) const
MonitorElement * mSumSquaredPFPt
MonitorElement * mPFCandpT_vs_eta_electron
edm::EDGetTokenT< reco::CandidateView > caloCandViewToken_
MonitorElement * mCaloPhi
MonitorElement * mPFCandpT_Forward_EME_inHF
edm::EDGetTokenT< reco::JPTJetCollection > jptJetsToken_
double pt() const final
transverse momentum
edm::InputTag centralityTag_
double EtHFtowerSum() const
edm::EDGetTokenT< CaloTowerCollection > caloTowersToken_
virtual void setCurrentFolder(std::string const &fullpath)
MonitorElement * mPFCandpT_Forward_muon
edm::EDGetTokenT< reco::PFJetCollection > pfJetsToken_
MonitorElement * mCSCandpT_vsPt[etaBins_]
MonitorElement * mPFCandpT_Endcap_NeutralHadron
bool exists(std::string const ¶meterName) const
checks if a parameter exists
T const * product() const
MonitorElement * mPFCandpT_vs_eta_EME_inHF
MonitorElement * mSumSquaredCaloPt
bool isForward(DetId const &)
MonitorElement * mSubtractedEFrac[ptBins_][etaBins_]
void analyze(const edm::Event &, const edm::EventSetup &) override
bool getByToken(EDGetToken token, Handle< PROD > &result) const
MonitorElement * mSumPFPtEtaDep[etaBins_]
MonitorElement * mPFCandpT_Forward_electron
MonitorElement * mRhoMDist_vsEta
edm::EDGetTokenT< std::vector< reco::Vertex > > pvToken_
MonitorElement * mSumCaloPt_eta
MonitorElement * mPFCandpT_vs_eta_muon
MonitorElement * mCSCand_corrPFcand[etaBins_]
MonitorElement * mPFCandpT_Endcap_HadE_inHF
edm::EDGetTokenT< int > centralityBinToken
MonitorElement * mSumPFPt_HF
MonitorElement * mPFCandpT_Endcap_ChargedHadron
MonitorElement * mRhoMDist_vsPt
MonitorElement * mPFCandpT_vs_eta_NeutralHadron
MonitorElement * mSumCaloPtEtaDep[etaBins_]
MonitorElement * mSumCaloPt_HF
static constexpr int etaBins_
MonitorElement * rhoEtaRange
MonitorElement * mRhoDist_vsEta
MonitorElement * mPFCandpT_vs_eta_photon
edm::EDGetTokenT< reco::Centrality > centralityToken
MonitorElement * mPFCandpT_Forward_ChargedHadron
MonitorElement * mSubtractedE[ptBins_][etaBins_]
MonitorElement * mPFCandpT_Endcap_muon
MonitorElement * mPFCandpT_Endcap_photon
MonitorElement * mPFDeltaR_Scaled_R
MonitorElement * mSumPFPt
edm::EDGetTokenT< std::vector< reco::Vertex > > hiVertexToken_
static constexpr int ptBins_
MonitorElement * mRhoDist_vsPt
MonitorElement * mConstituents
MonitorElement * mPFCandpT_Barrel_photon
Abs< T >::type abs(const T &t)
math::XYZPoint Point
point in the space
static constexpr int nedge_pseudorapidity
edm::InputTag mInputCollection
MonitorElement * mSumSquaredCaloPt_eta
MonitorElement * mPFCandpT_Barrel_Unknown
UseScope< MonitorElementData::Scope::LUMI > UseLumiScope
edm::EDGetTokenT< std::vector< double > > rhoToken_
edm::EDGetTokenT< std::vector< double > > rhomToken_
MonitorElement * mPFCandpT_Barrel_NeutralHadron
bool isEndcap(GeomDetEnumerators::SubDetector m)
MonitorElement * mPFCandpT_Endcap_Unknown
const Double_t ForwardEta
Log< level::Info, false > LogInfo
MonitorElement * mPFCandpT_vs_eta_ChargedHadron
MonitorElement * mPFCandpT_Forward_HadE_inHF
edm::EDGetTokenT< reco::BasicJetCollection > basicJetsToken_
MonitorElement * mPFCandpT_Barrel_ChargedHadron
MonitorElement * mPFCandpT_Barrel_HadE_inHF
MonitorElement * mPFDeltaR
std::vector< reco::PFCandidate > PFCandidateCollection
collection of PFCandidates
edm::EDGetTokenT< reco::PFCandidateCollection > csCandToken_
const double edge_pseudorapidity[etaBins_+1]
edm::InputTag mInputPFCandCollection
MonitorElement * mSumCaloPt
MonitorElement * mSumSquaredPFPt_eta
MonitorElement * mPFCandpT_Endcap_EME_inHF
edm::InputTag mInputVtxCollection
MonitorElement * mPFCandpT_vs_eta_HadE_inHF
MonitorElement * book2D(TString const &name, TString const &title, int nchX, double lowX, double highX, int nchY, double lowY, double highY, FUNC onbooking=NOOP())
edm::EDGetTokenT< reco::CandidateView > pfCandViewToken_
void bookHistograms(DQMStore::IBooker &, edm::Run const &, edm::EventSetup const &) override
MonitorElement * mPFCandpT_Forward_Unknown
~JetAnalyzer_HeavyIons() override
Particle reconstructed by the particle flow algorithm.
MonitorElement * mPFCandpT_Barrel_electron
static int position[264][3]
MonitorElement * mPFCandpT_Endcap_electron
MonitorElement * mNPFpart
MonitorElement * mSumPFPt_eta
edm::EDGetTokenT< std::vector< double > > etaToken_
virtual int getNbinsX() const
get # of bins in X-axis
MonitorElement * mNJets_40
double mRecoJetPtThreshold
MonitorElement * mRhoDist_vsCent[etaBins_]
MonitorElement * mJetArea
MonitorElement * book1D(TString const &name, TString const &title, int const nchX, double const lowX, double const highX, FUNC onbooking=NOOP())
JetAnalyzer_HeavyIons(const edm::ParameterSet &)
const int ptBin[ptBins_+1]
MonitorElement * mPFCandpT_Barrel_EME_inHF
MonitorElement * mRhoMDist_vsCent[etaBins_]
double phi() const final
momentum azimuthal angle
MonitorElement * mjetpileup
MonitorElement * mPFCandpT_vs_eta_Unknown
MonitorElement * mPFCandpT_Forward_NeutralHadron
MonitorElement * mNCalopart
virtual ParticleType particleId() const
double eta() const final
momentum pseudorapidity
MonitorElement * mPFCandpT_Barrel_muon