101 void fillTrack(
int,
double,
double,
double,
double);
103 void fillEnergy(
int,
int,
double,
double,
double,
double,
double);
169 : verbosity_(iConfig.getUntrackedParameter<int>(
"verbosity", 0)),
170 trigNames_(iConfig.getUntrackedParameter<std::
vector<std::
string> >(
"triggers")),
171 newNames_(iConfig.getUntrackedParameter<std::
vector<std::
string> >(
"newNames")),
172 labelMuon_(iConfig.getUntrackedParameter<edm::
InputTag>(
"labelMuon")),
173 labelGenTrack_(iConfig.getUntrackedParameter<edm::
InputTag>(
"labelTrack")),
174 theTrackQuality_(iConfig.getUntrackedParameter<std::
string>(
"trackQuality",
"highPurity")),
175 minTrackP_(iConfig.getUntrackedParameter<double>(
"minTrackP", 1.0)),
176 maxTrackEta_(iConfig.getUntrackedParameter<double>(
"maxTrackEta", 2.5)),
177 tMinE_(iConfig.getUntrackedParameter<double>(
"timeMinCutECAL", -500.)),
178 tMaxE_(iConfig.getUntrackedParameter<double>(
"timeMaxCutECAL", 500.)),
179 tMinH_(iConfig.getUntrackedParameter<double>(
"timeMinCutHCAL", -500.)),
180 tMaxH_(iConfig.getUntrackedParameter<double>(
"timeMaxCutHCAL", 500.)),
181 isItAOD_(iConfig.getUntrackedParameter<bool>(
"isItAOD",
false)),
182 vetoTrigger_(iConfig.getUntrackedParameter<bool>(
"vetoTrigger",
false)),
183 doTree_(iConfig.getUntrackedParameter<bool>(
"doTree",
false)),
184 vetoMuon_(iConfig.getUntrackedParameter<bool>(
"vetoMuon",
true)),
185 vetoEcal_(iConfig.getUntrackedParameter<bool>(
"vetoEcal",
false)),
186 cutMuon_(iConfig.getUntrackedParameter<double>(
"cutMuon", 0.1)),
187 cutEcal_(iConfig.getUntrackedParameter<double>(
"cutEcal", 2.0)),
188 cutRatio_(iConfig.getUntrackedParameter<double>(
"cutRatio", 0.90)),
189 puWeights_(iConfig.getUntrackedParameter<std::
vector<double> >(
"puWeights")),
190 triggerEvent_(edm::
InputTag(
"hltTriggerSummaryAOD",
"",
"HLT")),
191 theTriggerResultsLabel_(edm::
InputTag(
"TriggerResults",
"",
"HLT")),
227 tok_geom_ = esConsumes<CaloGeometry, CaloGeometryRecord>();
229 tok_topo_ = esConsumes<HcalTopology, HcalRecNumberingRecord>();
230 tok_magField_ = esConsumes<MagneticField, IdealMagneticFieldRecord>();
232 tok_sevlv_ = esConsumes<EcalSeverityLevelAlgo, EcalSeverityLevelAlgoRcd>();
250 double pBins[
nPBin_ + 1] = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 9.0, 11.0, 15.0, 20.0, 25.0, 30.0, 40.0, 60.0, 100.0};
251 int etaBins[
nEtaBin_ + 1] = {1, 7, 13, 17, 23};
252 int pvBins[
nPVBin_ + 1] = {1, 2, 3, 5, 100};
265 std::vector<std::string> trig;
267 std::vector<std::string> newNames = {
"HLT",
"PixelTracks_Multiplicity",
"HLT_Physics_",
"HLT_JetE",
"HLT_ZeroBias"};
271 desc.
addUntracked<std::vector<std::string> >(
"triggers", trig);
272 desc.
addUntracked<std::vector<std::string> >(
"newNames", newNames);
300 descriptions.
add(
"studyCaloResponse", desc);
305 int counter0[1000] = {0};
306 int counter1[1000] = {0};
307 int counter2[1000] = {0};
308 int counter3[1000] = {0};
309 int counter4[1000] = {0};
310 int counter5[1000] = {0};
311 int counter6[1000] = {0};
312 int counter7[1000] = {0};
314 edm::LogVerbatim(
"IsoTrack") <<
"Event starts====================================";
315 int RunNo = iEvent.
id().
run();
316 int EvtNo = iEvent.
id().
event();
320 std::vector<int> newAccept(
newNames_.size() + 1, 0);
322 edm::LogVerbatim(
"IsoTrack") <<
"RunNo " << RunNo <<
" EvtNo " << EvtNo <<
" Lumi " << Lumi <<
" Bunch " << Bunch;
330 if (!triggerEventHandle.
isValid()) {
337 triggerEvent = *(triggerEventHandle.
product());
343 if (triggerResults.
isValid()) {
344 h_nHLT->Fill(triggerResults->size());
345 h_nHLTvsRN->Fill(RunNo, triggerResults->size());
348 const std::vector<std::string>& triggerNames_ = triggerNames.
triggerNames();
349 for (
unsigned int iHLT = 0; iHLT < triggerResults->size(); iHLT++) {
361 if (ipos <= h_HLTAccept->GetNbinsX())
362 h_HLTAccept->GetXaxis()->SetBinLabel(ipos, newtriggerName.c_str());
365 edm::LogVerbatim(
"IsoTrack") <<
"Wrong trigger " << RunNo <<
" Event " << EvtNo <<
" Hlt " << iHLT;
370 int hlt = triggerResults->accept(iHLT);
379 if (newtriggerName.find(
trigNames_[
i]) != std::string::npos) {
384 triggerUse = newtriggerName;
393 if (newtriggerName.find(
newNames_[
i]) != std::string::npos) {
402 int iflg(0), indx(1);
404 iflg += (indx * newAccept[
i]);
411 edm::LogVerbatim(
"IsoTrack") <<
"Trigger check gives " << ok <<
" with " << triggerUse;
424 edm::LogWarning(
"StudyCaloResponse") <<
"Track collection " << trkCollection.
isValid() <<
" Muon collection "
425 << muonEventHandle.
isValid() <<
" Vertex Collecttion " << recVtxs.
isValid();
439 int ntrk(0), ngoodPV(0),
nPV(-1), nvtxs(0);
440 nvtxs = (int)(recVtxs->size());
441 for (
int ind = 0; ind < nvtxs; ind++) {
442 if (!((*recVtxs)[ind].isFake()) && (*recVtxs)[ind].ndof() > 4)
459 edm::LogVerbatim(
"IsoTrack") <<
"Number of vertices: " << nvtxs <<
" Good " << ngoodPV <<
" Bin " <<
nPV
462 h_goodPV->Fill(ngoodPV, tr_eventWeight);
466 int npbin =
h_goodPV->FindBin(ngoodPV);
467 if (npbin > 0 && npbin <= (
int)(
puWeights_.size()))
478 double pt1 =
p.momentum().Rho();
479 double p1 =
p.momentum().R();
480 double eta1 =
p.momentum().Eta();
481 double phi1 =
p.momentum().Phi();
490 double dEta = trk.eta() -
eta1;
491 double phi0 = trk.phi();
494 double dPhi = phi0 - phi2;
497 else if (dPhi < -
M_PI)
499 double dR =
sqrt(dEta * dEta + dPhi * dPhi);
511 reco::TrackCollection::const_iterator trkItr;
512 for (trkItr = trkCollection->begin(); trkItr != trkCollection->end(); ++trkItr, ++ntrk) {
514 double pt1 = pTrack->
pt();
515 double p1 = pTrack->
p();
517 double phi1 = pTrack->
momentum().phi();
524 ++counter0[(int)(p1)];
527 h_ntrk[0]->Fill(ntrk, tr_eventWeight);
529 std::vector<spr::propagatedTrackID> trkCaloDets;
531 std::vector<spr::propagatedTrackID>::const_iterator trkDetItr;
532 for (trkDetItr = trkCaloDets.begin(), ntrk = 0; trkDetItr != trkCaloDets.end(); trkDetItr++, ntrk++) {
533 const reco::Track* pTrack = &(*(trkDetItr->trkItr));
534 double pt1 = pTrack->
pt();
535 double p1 = pTrack->
p();
537 double phi1 = pTrack->
momentum().phi();
539 edm::LogVerbatim(
"IsoTrack") <<
"track: p " << p1 <<
" pt " << pt1 <<
" eta " << eta1 <<
" phi " << phi1
540 <<
" okEcal " << trkDetItr->okECAL;
543 bool vetoMuon(
false);
544 double chiGlobal(0),
dr(0);
545 bool goodGlob(
false);
547 if (muonEventHandle.
isValid()) {
548 for (reco::MuonCollection::const_iterator recMuon = muonEventHandle->begin();
549 recMuon != muonEventHandle->end();
551 if (((recMuon->isPFMuon()) && (recMuon->isGlobalMuon() || recMuon->isTrackerMuon())) &&
552 (recMuon->innerTrack()->validFraction() > 0.49) && (recMuon->innerTrack().isNonnull())) {
553 chiGlobal = ((recMuon->globalTrack().isNonnull()) ? recMuon->globalTrack()->normalizedChi2() : 999);
554 goodGlob = (recMuon->isGlobalMuon() && chiGlobal < 3 &&
555 recMuon->combinedQuality().chi2LocalPosition < 12 && recMuon->combinedQuality().trkKink < 20);
557 const reco::Track* pTrack0 = (recMuon->innerTrack()).
get();
570 <<
":" << goodGlob <<
":" <<
dr;
573 double maxNearP31x31 =
583 std::pair<double, bool> e7x7P, e11x11P, e15x15P;
584 const DetId isoCell = trkDetItr->detIdECAL;
628 double maxNearHcalP7x7 =
631 double h3x3(0), h5x5(0), h7x7(0);
632 fillIsolation(0, maxNearP31x31, e11x11P.first, e15x15P.first);
634 edm::LogVerbatim(
"IsoTrack") <<
"Accepted Tracks reaching Ecal maxNearP31x31 " << maxNearP31x31 <<
" e11x11P "
635 << e11x11P.first <<
" e15x15P " << e15x15P.first <<
" okHCAL "
636 << trkDetItr->okHCAL;
638 int trackID =
trackPID(pTrack, genParticles);
639 if (trkDetItr->okHCAL) {
642 const DetId ClosestCell(trkDetItr->detIdHCAL);
643 ieta = ((
HcalDetId)(ClosestCell)).ietaAbs();
687 double eByh = ((e11x11P.second) ? (e11x11P.first /
std::max(h3x3, 0.001)) : 0.0);
690 edm::LogVerbatim(
"IsoTrack") <<
"Tracks Reaching Hcal maxNearHcalP7x7/h5x5/h7x7 " << maxNearHcalP7x7 <<
"/"
691 << h5x5 <<
"/" << h7x7 <<
" eByh " << eByh <<
" notAnElec " << notAnElec;
710 if (maxNearP31x31 < 0 && notAnElec) {
712 fillEnergy(0, ieta, p1, e7x7P.first, h3x3, e11x11P.first, h5x5);
713 if (maxNearHcalP7x7 < 0) {
715 fillEnergy(1, ieta, p1, e7x7P.first, h3x3, e11x11P.first, h5x5);
716 if ((e11x11P.second) && (e15x15P.second) && (e15x15P.first - e11x11P.first) < 2.0) {
718 fillEnergy(2, ieta, p1, e7x7P.first, h3x3, e11x11P.first, h5x5);
719 if (h7x7 - h5x5 < 2.0) {
721 fillEnergy(3, ieta, p1, e7x7P.first, h3x3, e11x11P.first, h5x5);
724 fillEnergy(
nPV + 4, ieta, p1, e7x7P.first, h3x3, e11x11P.first, h5x5);
727 fillTrack(nPVBin_ + trackID + 7, pt1, p1, eta1, phi1);
728 fillEnergy(nPVBin_ + trackID + 3, ieta, p1, e7x7P.first, h3x3, e11x11P.first, h5x5);
732 ++counter7[(int)(p1)];
737 ++counter6[(int)(p1)];
742 ++counter5[(int)(p1)];
747 ++counter4[(int)(p1)];
752 ++counter3[(int)(p1)];
757 ++counter2[(int)(p1)];
762 ++counter1[(int)(p1)];
765 h_ntrk[1]->Fill(ntrk, tr_eventWeight);
768 for (
int i = 0;
i < 1000; ++
i) {
792 h_nHLT =
fs_->
make<TH1I>(
"h_nHLT",
"size of trigger Names", 1000, 0, 1000);
793 h_HLTAccept =
fs_->
make<TH1I>(
"h_HLTAccept",
"HLT Accepts for all runs", 500, 0, 500);
794 for (
int i = 1;
i <= 500; ++
i)
795 h_HLTAccept->GetXaxis()->SetBinLabel(
i,
" ");
796 h_nHLTvsRN =
fs_->
make<TH2I>(
"h_nHLTvsRN",
"size of trigger Names vs RunNo", 2168, 190949, 193116, 100, 400, 500);
797 h_HLTCorr =
fs_->
make<TH1I>(
"h_HLTCorr",
"Correlation among different paths", 100, 0, 100);
798 h_numberPV =
fs_->
make<TH1I>(
"h_numberPV",
"Number of Primary Vertex", 100, 0, 100);
799 h_goodPV =
fs_->
make<TH1I>(
"h_goodPV",
"Number of good Primary Vertex", 100, 0, 100);
800 h_goodRun =
fs_->
make<TH1I>(
"h_goodRun",
"Number of accepted events for Run", 4000, 190000, 1940000);
801 char hname[60], htit[200];
802 std::string CollectionNames[2] = {
"Reco",
"Propagated"};
803 for (
unsigned int i = 0;
i < 2;
i++) {
804 sprintf(hname,
"h_nTrk_%s", CollectionNames[
i].c_str());
805 sprintf(htit,
"Number of %s tracks", CollectionNames[
i].c_str());
809 "All",
"Quality",
"NoIso",
"okEcal",
"EcalCharIso",
"HcalCharIso",
"EcalNeutIso",
"HcalNeutIso"};
810 std::string particle[4] = {
"Electron",
"Pion",
"Kaon",
"Proton"};
811 for (
unsigned int i = 0;
i <=
nGen_ + 1;
i++) {
813 sprintf(hname,
"h_pt_%s", TrkNames[
i].c_str());
814 sprintf(htit,
"p_{T} of %s tracks", TrkNames[
i].c_str());
816 sprintf(hname,
"h_pt_%s_%d", TrkNames[7].c_str(),
i - 8);
817 sprintf(htit,
"p_{T} of %s tracks (PV=%d:%d)", TrkNames[7].c_str(),
pvBin_[
i - 8],
pvBin_[
i - 7] - 1);
819 sprintf(hname,
"h_pt_%s_%d", TrkNames[0].c_str(),
i -
nGen_);
820 sprintf(htit,
"p_{T} of %s Generator tracks", TrkNames[0].c_str());
822 sprintf(hname,
"h_pt_%s_%s", TrkNames[7].c_str(), particle[
i - 8 -
nPVBin_].c_str());
823 sprintf(htit,
"p_{T} of %s tracks (%s)", TrkNames[7].c_str(), particle[
i - 8 -
nPVBin_].c_str());
829 sprintf(hname,
"h_p_%s", TrkNames[
i].c_str());
830 sprintf(htit,
"Momentum of %s tracks", TrkNames[
i].c_str());
832 sprintf(hname,
"h_p_%s_%d", TrkNames[7].c_str(),
i - 8);
833 sprintf(htit,
"Momentum of %s tracks (PV=%d:%d)", TrkNames[7].c_str(),
pvBin_[
i - 8],
pvBin_[
i - 7] - 1);
835 sprintf(hname,
"h_p_%s_%d", TrkNames[0].c_str(),
i -
nGen_);
836 sprintf(htit,
"Momentum of %s Generator tracks", TrkNames[0].c_str());
838 sprintf(hname,
"h_p_%s_%s", TrkNames[7].c_str(), particle[
i - 8 -
nPVBin_].c_str());
839 sprintf(htit,
"Momentum of %s tracks (%s)", TrkNames[7].c_str(), particle[
i - 8 -
nPVBin_].c_str());
841 h_p[
i] =
fs_->
make<TH1D>(hname, htit, 400, 0, 200.0);
845 sprintf(hname,
"h_eta_%s", TrkNames[
i].c_str());
846 sprintf(htit,
"Eta of %s tracks", TrkNames[
i].c_str());
848 sprintf(hname,
"h_eta_%s_%d", TrkNames[7].c_str(),
i - 8);
849 sprintf(htit,
"Eta of %s tracks (PV=%d:%d)", TrkNames[7].c_str(),
pvBin_[
i - 8],
pvBin_[
i - 7] - 1);
851 sprintf(hname,
"h_eta_%s_%d", TrkNames[0].c_str(),
i -
nGen_);
852 sprintf(htit,
"Eta of %s Generator tracks", TrkNames[0].c_str());
854 sprintf(hname,
"h_eta_%s_%s", TrkNames[7].c_str(), particle[
i - 8 -
nPVBin_].c_str());
855 sprintf(htit,
"Eta of %s tracks (%s)", TrkNames[7].c_str(), particle[
i - 8 -
nPVBin_].c_str());
861 sprintf(hname,
"h_phi_%s", TrkNames[
i].c_str());
862 sprintf(htit,
"Phi of %s tracks", TrkNames[
i].c_str());
864 sprintf(hname,
"h_phi_%s_%d", TrkNames[7].c_str(),
i - 8);
865 sprintf(htit,
"Phi of %s tracks (PV=%d:%d)", TrkNames[7].c_str(),
pvBin_[
i - 8],
pvBin_[
i - 7] - 1);
867 sprintf(hname,
"h_phi_%s_%d", TrkNames[0].c_str(),
i -
nGen_);
868 sprintf(htit,
"Phi of %s Generator tracks", TrkNames[0].c_str());
870 sprintf(hname,
"h_phi_%s_%s", TrkNames[7].c_str(), particle[
i - 8 -
nPVBin_].c_str());
871 sprintf(htit,
"Phi of %s tracks (%s)", TrkNames[7].c_str(), particle[
i - 8 -
nPVBin_].c_str());
877 for (
unsigned int i = 0;
i < 2;
i++) {
878 sprintf(hname,
"h_maxNearP_%s", IsolationNames[
i].c_str());
879 sprintf(htit,
"Energy in ChargeIso region for %s", IsolationNames[
i].c_str());
883 sprintf(hname,
"h_ene1_%s", IsolationNames[
i].c_str());
884 sprintf(htit,
"Energy in smaller cone for %s", IsolationNames[
i].c_str());
888 sprintf(hname,
"h_ene2_%s", IsolationNames[
i].c_str());
889 sprintf(htit,
"Energy in bigger cone for %s", IsolationNames[
i].c_str());
893 sprintf(hname,
"h_ediff_%s", IsolationNames[
i].c_str());
894 sprintf(htit,
"Energy in NeutralIso region for %s", IsolationNames[
i].c_str());
899 "E_{7x7}",
"H_{3x3}",
"(E_{7x7}+H_{3x3})",
"E_{11x11}",
"H_{5x5}",
"{E_{11x11}+H_{5x5})"};
901 for (
int ip = 0; ip <
nPBin_; ++ip) {
902 for (
int ie = 0; ie <
nEtaBin_; ++ie) {
903 for (
int j = 0;
j < 6; ++
j) {
904 sprintf(hname,
"h_energy_%d_%d_%d_%d",
i, ip, ie,
j);
907 "%s/p (p=%4.1f:%4.1f; i#eta=%d:%d) for tracks with %s",
908 energyNames[
j].c_str(),
913 TrkNames[
i + 4].c_str());
914 }
else if (
i < 4 + nPVBin_) {
916 "%s/p (p=%4.1f:%4.1f, i#eta=%d:%d, PV=%d:%d) for tracks with %s",
917 energyNames[
j].c_str(),
924 TrkNames[7].c_str());
927 "%s/p (p=%4.1f:%4.1f, i#eta=%d:%d %s) for tracks with %s",
928 energyNames[
j].c_str(),
933 particle[
i - 4 - nPVBin_].c_str(),
934 TrkNames[7].c_str());
943 for (
int i = 0;
i < 8; ++
i) {
944 sprintf(hname,
"counter%d",
i);
945 sprintf(htit,
"Counter with cut %d",
i);
947 sprintf(hname,
"h_pTNew%d",
i);
948 sprintf(htit,
"Track momentum with cut %d",
i);
981 char hname[100], htit[400];
984 sprintf(hname,
"h_HLTAccepts_%i", iRun.
run());
985 sprintf(htit,
"HLT Accepts for Run No %i", iRun.
run());
986 TH1I* hnew =
fs_->
make<TH1I>(hname, htit, 500, 0, 500);
987 for (
int i = 1;
i <= 500; ++
i)
988 hnew->GetXaxis()->SetBinLabel(
i,
" ");
1037 int flag,
int ieta,
double p,
double enEcal1,
double enHcal1,
double enEcal2,
double enHcal2) {
1051 if (ip >= 0 && ie >= 0 && enEcal1 > 0.02 && enHcal1 > 0.1) {
1063 int length = str.length();
1064 for (
int i = 0;
i < length - 2;
i++) {
1065 if (str[
i] ==
'_' && str[
i + 1] ==
'v' && isdigit(str.at(
i + 2))) {
1067 truncated_str = str.substr(0, z);
1070 return (truncated_str);
1078 reco::GenParticleCollection::const_iterator
p;
1079 double mindR(999.9);
1080 for (p = genParticles->begin(), indx = 0; p != genParticles->end(); ++
p, ++indx) {
1082 int idx = (pdgId == 11) ? 1 : ((pdgId == 211) ? 2 : ((pdgId == 321) ? 3 : ((pdgId == 2212) ? 4 : 0)));
1084 double dEta = pTrack->
eta() - p->momentum().Eta();
1085 double phi1 = pTrack->
phi();
1086 double phi2 = p->momentum().Phi();
1091 double dPhi = phi1 - phi2;
1094 else if (dPhi < -
M_PI)
1096 double dR =
sqrt(dEta * dEta + dPhi * dPhi);
std::vector< double > tr_TrkEta
static const std::string kSharedResource
double p() const
momentum vector magnitude
Log< level::Info, true > LogVerbatim
std::vector< GenParticle > GenParticleCollection
collection of GenParticles
EventNumber_t event() const
const std::vector< std::string > newNames_
edm::EDGetTokenT< reco::TrackCollection > tok_genTrack_
std::vector< bool > tr_SE11x11P
T getUntrackedParameter(std::string const &, T const &) const
const edm::InputTag theTriggerResultsLabel_
std::vector< spr::propagatedTrackID > propagateCALO(edm::Handle< reco::TrackCollection > &trkCollection, const CaloGeometry *geo, const MagneticField *bField, const std::string &theTrackQuality, bool debug=false)
std::vector< double > tr_H5x5
void fillIsolation(int, double, double, double)
ParameterDescriptionBase * addUntracked(U const &iLabel, T const &value)
The single EDProduct to be saved for each event (AOD case)
uint16_t *__restrict__ id
std::vector< std::string > tr_TrigName
bool getByToken(EDGetToken token, Handle< PROD > &result) const
int trackPID(const reco::Track *, const edm::Handle< reco::GenParticleCollection > &)
edm::EDGetTokenT< reco::MuonCollection > tok_Muon_
TrackQuality
track quality
#define DEFINE_FWK_MODULE(type)
edm::Service< TFileService > fs_
spr::trackSelectionParameters selectionParameters_
edm::EDGetTokenT< EcalRecHitCollection > tok_EE_
std::vector< double > tr_FE7x7P
std::vector< double > tr_MaxNearP31X31
std::vector< Track > TrackCollection
collection of Tracks
int bunchCrossing() const
edm::LuminosityBlockNumber_t luminosityBlock() const
std::vector< double > tr_TrkPhi
double phi() const
azimuthal angle of momentum vector
T * make(const Args &...args) const
make new ROOT object
void analyze(edm::Event const &, edm::EventSetup const &) override
const Vector & momentum() const
track momentum vector
edm::EDGetTokenT< trigger::TriggerEvent > tok_trigEvt
edm::ESGetToken< CaloTopology, CaloTopologyRecord > tok_caloTopology_
Strings const & triggerNames() const
edm::EDGetTokenT< edm::TriggerResults > tok_trigRes
edm::TriggerNames const & triggerNames(edm::TriggerResults const &triggerResults) const override
void fillTrack(int, double, double, double, double)
bool getData(T &iHolder) const
edm::ESGetToken< CaloGeometry, CaloGeometryRecord > tok_geom_
const std::string theTrackQuality_
edm::EDGetTokenT< EcalRecHitCollection > tok_EB_
std::string truncate_str(const std::string &)
const std::vector< double > puWeights_
double chargeIsolationEcal(unsigned int trkIndex, std::vector< spr::propagatedTrackID > &vdetIds, const CaloGeometry *geo, const CaloTopology *caloTopology, int ieta, int iphi, bool debug=false)
double eta() const
pseudorapidity of momentum vector
const double maxTrackEta_
edm::ESGetToken< EcalChannelStatus, EcalChannelStatusRcd > tok_ecalChStatus_
double pt() const
track transverse momentum
const edm::InputTag labelGenTrack_
virtual void beginLuminosityBlock(edm::LuminosityBlock const &, edm::EventSetup const &)
Abs< T >::type abs(const T &t)
float segmentCompatibility(const reco::Muon &muon, reco::Muon::ArbitrationType arbitrationType=reco::Muon::SegmentAndTrackArbitration)
std::vector< int > tr_iEta
edm::EDGetTokenT< LumiDetails > tok_lumi
static std::string const triggerResults
std::vector< double > tr_MaxNearHcalP7x7
ParameterDescriptionBase * add(U const &iLabel, T const &value)
edm::ESGetToken< MagneticField, IdealMagneticFieldRecord > tok_magField_
std::vector< double > tr_FE15x15P
std::vector< double > tr_TrkP
constexpr auto deltaR(const T1 &t1, const T2 &t2) -> decltype(t1.eta())
std::vector< double > tr_TrkPt
edm::ESGetToken< HcalTopology, HcalRecNumberingRecord > tok_topo_
std::vector< double > tr_H3x3
static void fillDescriptions(edm::ConfigurationDescriptions &descriptions)
void fillEnergy(int, int, double, double, double, double, double)
const std::vector< std::string > trigNames_
std::vector< std::string > HLTNames_
static TrackQuality qualityByName(const std::string &name)
std::vector< int > tr_TrkID
edm::ESGetToken< EcalSeverityLevelAlgo, EcalSeverityLevelAlgoRcd > tok_sevlv_
T const * product() const
std::vector< bool > tr_SE7x7P
std::vector< double > tr_H7x7
bool init(const edm::Run &iRun, const edm::EventSetup &iSetup, const std::string &processName, bool &changed)
d'tor
T getParameter(std::string const &) const
void add(std::string const &label, ParameterSetDescription const &psetDescription)
edm::EDGetTokenT< reco::GenParticleCollection > tok_parts_
bool quality(const TrackQuality) const
Track quality.
std::vector< TH1I * > h_HLTAccepts
edm::EDGetTokenT< HBHERecHitCollection > tok_hbhe_
static const int nEtaBin_
TH1D * h_energy[nPVBin_+8][nPBin_][nEtaBin_][6]
const edm::InputTag labelMuon_
virtual void endLuminosityBlock(edm::LuminosityBlock const &, edm::EventSetup const &)
edm::EDGetTokenT< reco::VertexCollection > tok_recVtx_
void beginRun(edm::Run const &, edm::EventSetup const &) override
StudyCaloResponse(const edm::ParameterSet &)
reco::TrackBase::TrackQuality minQuality
std::pair< typename Association::data_type::first_type, double > match(Reference key, Association association, bool bestMatchByMaxValue)
Generic matching function.
std::vector< double > tr_FE11x11P
Log< level::Warning, false > LogWarning
double chargeIsolationHcal(unsigned int trkIndex, std::vector< spr::propagatedTrackID > &vdetIds, const HcalTopology *topology, int ieta, int iphi, bool debug=false)
HLTConfigProvider hltConfig_
edm::EDGetTokenT< GenEventInfoProduct > tok_ew_
void endRun(edm::Run const &, edm::EventSetup const &) override
const edm::InputTag triggerEvent_
double eECALmatrix(const DetId &detId, edm::Handle< T > &hitsEB, edm::Handle< T > &hitsEE, const CaloGeometry *geo, const CaloTopology *caloTopology, int ieta, int iphi, double ebThr=-100, double eeThr=-100, double tMin=-500, double tMax=500, bool debug=false)
double eHCALmatrix(const HcalTopology *topology, const DetId &det, edm::Handle< T > &hits, int ieta, int iphi, bool includeHO=false, bool algoNew=true, double hbThr=-100, double heThr=-100, double hfThr=-100, double hoThr=-100, double tMin=-500, double tMax=500, int useRaw=0, bool debug=false)
~StudyCaloResponse() override
std::vector< bool > tr_SE15x15P