7 #include "TLorentzVector.h" 99 std::array<int, 3>
fillTree(std::vector<math::XYZTLorentzVector>& vecL1,
100 std::vector<math::XYZTLorentzVector>& vecL3,
102 std::vector<spr::propagatedTrackDirection>& trkCaloDirections,
103 std::vector<spr::propagatedTrackID>& trkCaloDets,
123 const std::vector<DetId>& ids,
124 std::vector<double>& edet,
126 std::vector<unsigned int>* detIds,
127 std::vector<double>* hitEnergies);
219 theTrackQuality_(iConfig.getParameter<
std::
string>(
"trackQuality")),
220 processName_(iConfig.getParameter<
std::
string>(
"processName")),
221 l1Filter_(iConfig.getParameter<
std::
string>(
"l1Filter")),
222 l2Filter_(iConfig.getParameter<
std::
string>(
"l2Filter")),
223 l3Filter_(iConfig.getParameter<
std::
string>(
"l3Filter")),
224 a_coneR_(iConfig.getParameter<double>(
"coneRadius")),
225 a_mipR_(iConfig.getParameter<double>(
"coneRadiusMIP")),
226 a_mipR2_(iConfig.getParameter<double>(
"coneRadiusMIP2")),
227 a_mipR3_(iConfig.getParameter<double>(
"coneRadiusMIP3")),
228 a_mipR4_(iConfig.getParameter<double>(
"coneRadiusMIP4")),
229 a_mipR5_(iConfig.getParameter<double>(
"coneRadiusMIP5")),
230 pTrackMin_(iConfig.getParameter<double>(
"minimumTrackP")),
231 eEcalMax_(iConfig.getParameter<double>(
"maximumEcalEnergy")),
232 maxRestrictionP_(iConfig.getParameter<double>(
"maxTrackP")),
233 slopeRestrictionP_(iConfig.getParameter<double>(
"slopeTrackP")),
234 hcalScale_(iConfig.getUntrackedParameter<double>(
"hHcalScale", 1.0)),
235 eIsolate1_(iConfig.getParameter<double>(
"isolationEnergyTight")),
236 eIsolate2_(iConfig.getParameter<double>(
"isolationEnergyLoose")),
237 pTrackLow_(iConfig.getParameter<double>(
"momentumLow")),
238 pTrackHigh_(iConfig.getParameter<double>(
"momentumHigh")),
239 prescaleLow_(iConfig.getParameter<
int>(
"prescaleLow")),
240 prescaleHigh_(iConfig.getParameter<
int>(
"prescaleHigh")),
241 useRaw_(iConfig.getUntrackedParameter<
int>(
"useRaw", 0)),
242 dataType_(iConfig.getUntrackedParameter<
int>(
"dataType", 0)),
243 mode_(iConfig.getUntrackedParameter<
int>(
"outMode", 11)),
244 ignoreTrigger_(iConfig.getUntrackedParameter<
bool>(
"ignoreTriggers",
false)),
245 useL1Trigger_(iConfig.getUntrackedParameter<
bool>(
"useL1Trigger",
false)),
246 unCorrect_(iConfig.getUntrackedParameter<
bool>(
"unCorrect",
false)),
247 collapseDepth_(iConfig.getUntrackedParameter<
bool>(
"collapseDepth",
false)),
248 hitEthrEB_(iConfig.getParameter<double>(
"EBHitEnergyThreshold")),
249 hitEthrEE0_(iConfig.getParameter<double>(
"EEHitEnergyThreshold0")),
250 hitEthrEE1_(iConfig.getParameter<double>(
"EEHitEnergyThreshold1")),
251 hitEthrEE2_(iConfig.getParameter<double>(
"EEHitEnergyThreshold2")),
252 hitEthrEE3_(iConfig.getParameter<double>(
"EEHitEnergyThreshold3")),
253 hitEthrEELo_(iConfig.getParameter<double>(
"EEHitEnergyThresholdLow")),
254 hitEthrEEHi_(iConfig.getParameter<double>(
"EEHitEnergyThresholdHigh")),
255 triggerEvent_(iConfig.getParameter<
edm::
InputTag>(
"labelTriggerEvent")),
256 theTriggerResultsLabel_(iConfig.getParameter<
edm::
InputTag>(
"labelTriggerResult")),
257 labelGenTrack_(iConfig.getParameter<
std::
string>(
"labelTrack")),
258 labelRecVtx_(iConfig.getParameter<
std::
string>(
"labelVertex")),
259 labelEB_(iConfig.getParameter<
std::
string>(
"labelEBRecHit")),
260 labelEE_(iConfig.getParameter<
std::
string>(
"labelEERecHit")),
261 labelHBHE_(iConfig.getParameter<
std::
string>(
"labelHBHERecHit")),
262 labelTower_(iConfig.getParameter<
std::
string>(
"labelCaloTower")),
263 l1TrigName_(iConfig.getUntrackedParameter<
std::
string>(
"l1TrigName",
"L1_SingleJet60")),
264 oldID_(iConfig.getUntrackedParameter<
std::
vector<
int>>(
"oldID")),
265 newDepth_(iConfig.getUntrackedParameter<
std::
vector<
int>>(
"newDepth")),
266 hep17_(iConfig.getUntrackedParameter<
bool>(
"hep17")),
267 debEvents_(iConfig.getParameter<
std::
vector<
int>>(
"debugEvents")),
268 usePFThresh_(iConfig.getParameter<
bool>(
"usePFThreshold")),
269 labelBS_(iConfig.getParameter<
std::
string>(
"labelBeamSpot")),
270 modnam_(iConfig.getUntrackedParameter<
std::
string>(
"moduleName",
"")),
271 prdnam_(iConfig.getUntrackedParameter<
std::
string>(
"producerName",
"")),
272 labelMuon_(iConfig.getParameter<
std::
string>(
"labelMuon")),
273 algTag_(iConfig.getParameter<
edm::
InputTag>(
"algInputTag")),
274 extTag_(iConfig.getParameter<
edm::
InputTag>(
"extInputTag")),
308 const double isolationRadius(28.9), innerR(10.0), outerR(30.0);
330 for (
unsigned int k = 0;
k <
oldID_.size(); ++
k) {
356 <<
"Parameters read from config file \n" 374 <<
" events to be debugged";
381 for (
unsigned int k = 0;
k <
oldID_.size(); ++
k)
385 for (
int i = 0;
i < 10;
i++)
387 for (
int i = 0;
i < 8; ++
i)
395 unsigned int k1(0), k2(0);
416 <<
" Luminosity " <<
iEvent.luminosityBlock() <<
" Bunch " 417 <<
iEvent.bunchCrossing();
439 if (!trkCollection.
isValid()) {
458 if (recVtxs.
isValid() && !(recVtxs->empty())) {
460 for (
unsigned int k = 0;
k < recVtxs->size(); ++
k) {
461 if (!((*recVtxs)[
k].isFake()) && ((*recVtxs)[
k].ndof() > 4)) {
481 if (!barrelRecHitsHandle.
isValid()) {
486 if (!endcapRecHitsHandle.
isValid()) {
491 if (!
hbhe.isValid()) {
498 std::vector<spr::propagatedTrackDirection> trkCaloDirections;
500 std::vector<spr::propagatedTrackID> trkCaloDets;
502 std::vector<math::XYZTLorentzVector> vecL1, vecL3;
529 for (
const auto& decision : finalDecisions) {
530 if (decision.first.find(
l1TrigName_) != std::string::npos) {
538 <<
" from a list of " << finalDecisions.size() <<
" decisions";
547 for (
unsigned int iHLT = 0; iHLT <
triggerResults->size(); iHLT++) {
572 std::array<int, 3> ntksave{{0, 0, 0}};
600 if (!triggerEventHandle.
isValid()) {
608 std::vector<std::string>
modules;
611 for (
unsigned int iHLT = 0; iHLT <
triggerResults->size(); iHLT++) {
616 std::vector<math::XYZTLorentzVector> vecL2;
620 for (
unsigned int ifilter = 0; ifilter <
triggerEvent.sizeFilters(); ++ifilter) {
621 std::vector<int>
Keys;
624 for (
unsigned int imodule = 0; imodule < moduleLabels.size(); imodule++) {
625 if (
label.find(moduleLabels[imodule]) != std::string::npos) {
630 for (
unsigned int ifiltrKey = 0; ifiltrKey <
triggerEvent.filterKeys(ifilter).size(); ++ifiltrKey) {
644 <<
"key " << ifiltrKey <<
" : pt " << TO.
pt() <<
" eta " << TO.
eta() <<
" phi " << TO.
phi()
645 <<
" mass " << TO.
mass() <<
" Id " << TO.
id();
651 <<
"sizes " << vecL1.size() <<
":" << vecL2.size() <<
":" << vecL3.size();
659 for (
unsigned int i = 0;
i < vecL2.size();
i++) {
660 double dr =
dR(vecL1[0], vecL2[
i]);
667 mindRvec1 = vecL2[
i];
672 edm::LogVerbatim(
"HcalIsoTrack") <<
"L2 object closest to L1 " << mindRvec1 <<
" at Dr " << mindR1;
675 if (!vecL1.empty()) {
682 if (!vecL3.empty()) {
729 tree =
fs->make<TTree>(
"CalibTree",
"CalibTree");
731 tree->Branch(
"t_Run", &
t_Run,
"t_Run/I");
746 tree->Branch(
"t_p", &
t_p,
"t_p/D");
747 tree->Branch(
"t_pt", &
t_pt,
"t_pt/D");
748 tree->Branch(
"t_phi", &
t_phi,
"t_phi/D");
770 t_DetIds =
new std::vector<unsigned int>();
771 t_DetIds1 =
new std::vector<unsigned int>();
772 t_DetIds3 =
new std::vector<unsigned int>();
777 tree->Branch(
"t_DetIds",
"std::vector<unsigned int>", &
t_DetIds);
780 tree->Branch(
"t_DetIds1",
"std::vector<unsigned int>", &
t_DetIds1);
781 tree->Branch(
"t_DetIds3",
"std::vector<unsigned int>", &
t_DetIds3);
785 tree2 =
fs->make<TTree>(
"EventInfo",
"Event Information");
816 <<
" init flag " <<
flag <<
" change flag " << changed_;
823 for (
unsigned itrig = 0; itrig <
trigNames_.size(); itrig++) {
825 if (triggerindx >=
n) {
827 <<
"the current menu";
846 std::vector<std::string>
trig = {
"HLT_PFJet40",
856 desc.add<std::vector<std::string>>(
"triggers",
trig);
863 desc.add<
double>(
"minTrackPt", 1.0);
864 desc.add<
double>(
"maxDxyPV", 0.02);
865 desc.add<
double>(
"maxDzPV", 0.02);
866 desc.add<
double>(
"maxChi2", 5.0);
867 desc.add<
double>(
"maxDpOverP", 0.1);
868 desc.add<
int>(
"minOuterHit", 4);
869 desc.add<
int>(
"minLayerCrossed", 8);
870 desc.add<
int>(
"maxInMiss", 0);
871 desc.add<
int>(
"maxOutMiss", 0);
873 desc.add<
double>(
"minimumTrackP", 10.0);
874 desc.add<
double>(
"coneRadius", 34.98);
876 desc.add<
double>(
"coneRadiusMIP", 14.0);
877 desc.add<
double>(
"coneRadiusMIP2", 18.0);
878 desc.add<
double>(
"coneRadiusMIP3", 20.0);
879 desc.add<
double>(
"coneRadiusMIP4", 22.0);
880 desc.add<
double>(
"coneRadiusMIP5", 24.0);
881 desc.add<
double>(
"maximumEcalEnergy", 2.0);
883 desc.add<
double>(
"maxTrackP", 8.0);
884 desc.add<
double>(
"slopeTrackP", 0.05090504066);
885 desc.add<
double>(
"isolationEnergyTight", 2.0);
886 desc.add<
double>(
"isolationEnergyLoose", 10.0);
888 desc.add<
double>(
"EBHitEnergyThreshold", 0.08);
889 desc.add<
double>(
"EEHitEnergyThreshold0", 0.30);
890 desc.add<
double>(
"EEHitEnergyThreshold1", 0.00);
891 desc.add<
double>(
"EEHitEnergyThreshold2", 0.00);
892 desc.add<
double>(
"EEHitEnergyThreshold3", 0.00);
893 desc.add<
double>(
"EEHitEnergyThresholdLow", 0.30);
894 desc.add<
double>(
"EEHitEnergyThresholdHigh", 0.30);
896 desc.add<
double>(
"momentumLow", 40.0);
897 desc.add<
double>(
"momentumHigh", 60.0);
898 desc.add<
int>(
"prescaleLow", 1);
899 desc.add<
int>(
"prescaleHigh", 1);
917 desc.addUntracked<
int>(
"useRaw", 0);
918 desc.addUntracked<
bool>(
"ignoreTriggers",
false);
919 desc.addUntracked<
bool>(
"useL1Trigger",
false);
920 desc.addUntracked<
double>(
"hcalScale", 1.0);
921 desc.addUntracked<
int>(
"dataType", 0);
922 desc.addUntracked<
bool>(
"unCorrect",
false);
923 desc.addUntracked<
bool>(
"collapseDepth",
false);
925 desc.addUntracked<
int>(
"outMode", 11);
926 std::vector<int>
dummy;
927 desc.addUntracked<std::vector<int>>(
"oldID",
dummy);
928 desc.addUntracked<std::vector<int>>(
"newDepth",
dummy);
929 desc.addUntracked<
bool>(
"hep17",
false);
931 desc.add<std::vector<int>>(
"debugEvents",
events);
932 desc.add<
bool>(
"usePFThreshold",
true);
933 descriptions.
add(
"hcalIsoTrkAnalyzer",
desc);
937 std::vector<math::XYZTLorentzVector>& vecL3,
939 std::vector<spr::propagatedTrackDirection>& trkCaloDirections,
940 std::vector<spr::propagatedTrackID>& trkCaloDets,
953 int nSave(0),
nLoose(0), nTight(0);
956 t_nTrk = trkCaloDirections.size();
958 for (
const auto& trkDetItr : trkCaloDirections) {
959 const reco::Track* pTrack = &(*(trkDetItr.trkItr));
971 for (
unsigned int k = 0;
k < vecL3.size(); ++
k) {
972 double dr =
dR(vecL3[
k], v4);
977 t_mindR1 = (!vecL1.empty()) ?
dR(vecL1[0], v4) : 999;
984 if (trkDetItr.okHCAL) {
988 if (
t_p > 40.0 &&
t_p <= 60.0)
995 oneCutParameters.
maxDzPV = 100;
998 bool qltyFlag =
spr::goodTrack(pTrack, leadPV, oneCutParameters,
false);
1001 oneCutParameters.
maxDzPV = 100;
1014 edm::LogVerbatim(
"HcalIsoTrack") <<
"qltyFlag|okECAL|okHCAL : " << qltyFlag <<
"|" << trkDetItr.okECAL <<
"|" 1015 << trkDetItr.okHCAL <<
" eIsolation " << eIsolation;
1017 t_qltyFlag = (qltyFlag && trkDetItr.okECAL && trkDetItr.okHCAL);
1022 std::vector<DetId> eIds;
1023 std::vector<double> eHit;
1025 barrelRecHitsHandle,
1026 endcapRecHitsHandle,
1027 trkDetItr.pointHCAL,
1028 trkDetItr.pointECAL,
1030 trkDetItr.directionECAL,
1034 for (
unsigned int k = 0;
k < eIds.size(); ++
k) {
1045 std::vector<DetId> eIds2;
1046 std::vector<double> eHit2;
1048 barrelRecHitsHandle,
1049 endcapRecHitsHandle,
1050 trkDetItr.pointHCAL,
1051 trkDetItr.pointECAL,
1053 trkDetItr.directionECAL,
1057 for (
unsigned int k = 0;
k < eIds2.size(); ++
k) {
1068 std::vector<DetId> eIds3;
1069 std::vector<double> eHit3;
1071 barrelRecHitsHandle,
1072 endcapRecHitsHandle,
1073 trkDetItr.pointHCAL,
1074 trkDetItr.pointECAL,
1076 trkDetItr.directionECAL,
1080 for (
unsigned int k = 0;
k < eIds3.size(); ++
k) {
1091 std::vector<DetId> eIds4;
1092 std::vector<double> eHit4;
1094 barrelRecHitsHandle,
1095 endcapRecHitsHandle,
1096 trkDetItr.pointHCAL,
1097 trkDetItr.pointECAL,
1099 trkDetItr.directionECAL,
1103 for (
unsigned int k = 0;
k < eIds4.size(); ++
k) {
1114 std::vector<DetId> eIds5;
1115 std::vector<double> eHit5;
1117 barrelRecHitsHandle,
1118 endcapRecHitsHandle,
1119 trkDetItr.pointHCAL,
1120 trkDetItr.pointECAL,
1122 trkDetItr.directionECAL,
1126 for (
unsigned int k = 0;
k < eIds5.size(); ++
k) {
1138 const DetId cellE(trkDetItr.detIdECAL);
1140 barrelRecHitsHandle,
1141 endcapRecHitsHandle,
1153 barrelRecHitsHandle,
1154 endcapRecHitsHandle,
1165 if (e11x11P.second && e15x15P.second) {
1166 t_eAnnular = (e15x15P.first - e11x11P.first);
1168 t_eAnnular = -(e15x15P.first - e11x11P.first);
1171 const DetId cellH(trkDetItr.detIdHCAL);
1173 theHBHETopology, cellH,
hbhe, 2, 2,
false,
true, -100.0, -100.0, -100.0, -100.0, -100.0, 100.0);
1175 theHBHETopology, cellH,
hbhe, 3, 3,
false,
true, -100.0, -100.0, -100.0, -100.0, -100.0, 100.0);
1180 <<
" Annular E (Ecal) " << e11x11P.first <<
":" << e15x15P.first <<
":" 1191 int nRecHits(-999), nRecHits1(-999), nRecHits3(-999);
1192 std::vector<DetId> ids, ids1, ids3;
1193 std::vector<double> edet0, edet1, edet3;
1196 trkDetItr.pointHCAL,
1197 trkDetItr.pointECAL,
1199 trkDetItr.directionHCAL,
1205 for (
unsigned k = 0;
k < ids.size(); ++
k)
1213 trkDetItr.pointHCAL,
1214 trkDetItr.pointECAL,
1216 trkDetItr.directionHCAL,
1222 for (
unsigned k = 0;
k < ids1.size(); ++
k)
1230 trkDetItr.pointHCAL,
1231 trkDetItr.pointECAL,
1233 trkDetItr.directionHCAL,
1239 for (
unsigned k = 0;
k < ids3.size(); ++
k)
1247 <<
"This track : " <<
nTracks <<
" (pt|eta|phi|p) : " <<
t_pt <<
"|" << pTrack->
eta() <<
"|" <<
t_phi 1252 for (
unsigned int ll = 0; ll <
t_DetIds->size(); ll++) {
1256 for (
unsigned int ll = 0; ll <
t_DetIds1->size(); ll++) {
1260 for (
unsigned int ll = 0; ll <
t_DetIds3->size(); ll++) {
1316 std::array<int, 3>
i3{{nSave,
nLoose, nTight}};
1328 double mindR(999.9);
1333 pmom =
p.momentum().R();
1341 std::vector<double> sumPFNallSMDQH2;
1347 for (
const auto& pf_it : (*
tower)) {
1352 hadder += pf_it.hadEt();
1354 sumPFNallSMDQH2.emplace_back(hadder);
1359 std::sort(sumPFNallSMDQH2.begin(), sumPFNallSMDQH2.end());
1360 if (sumPFNallSMDQH2.size() % 2)
1361 evt_smdq = sumPFNallSMDQH2[(sumPFNallSMDQH2.size() - 1) / 2];
1363 evt_smdq = (sumPFNallSMDQH2[sumPFNallSMDQH2.size() / 2] + sumPFNallSMDQH2[(sumPFNallSMDQH2.size() - 2) / 2]) / 2.;
1375 eThr =
static_cast<double>((*eThresholds_)[
id]);
1394 for (
unsigned int k = 0;
k <
oldID_.size(); ++
k) {
1404 const std::vector<DetId>& ids,
1405 std::vector<double>& edet,
1407 std::vector<unsigned int>* detIds,
1408 std::vector<double>* hitEnergies) {
1411 for (
unsigned int k = 0;
k < ids.size(); ++
k) {
1418 for (
const auto& en : edet)
1422 edm::LogWarning(
"HcalIsoTrack") <<
"Check inconsistent energies: " << indx <<
" " << eHcal <<
":" << ehcal
1423 <<
" from " << ids.size() <<
" cells";
1427 std::map<HcalDetId, double> hitMap;
1428 for (
unsigned int k = 0;
k < ids.size(); ++
k) {
1430 auto itr = hitMap.find(
id);
1431 if (itr == hitMap.end()) {
1432 hitMap[
id] = edet[
k];
1434 (itr->second) += edet[
k];
1437 detIds->reserve(hitMap.size());
1438 hitEnergies->reserve(hitMap.size());
1439 for (
const auto&
hit : hitMap) {
1440 detIds->emplace_back(
hit.first.rawId());
1441 hitEnergies->emplace_back(
hit.second);
1444 detIds->reserve(ids.size());
1445 hitEnergies->reserve(ids.size());
1446 for (
unsigned int k = 0;
k < ids.size(); ++
k) {
1447 detIds->emplace_back(ids[
k].
rawId());
1448 hitEnergies->emplace_back(edet[
k]);
1453 edm::LogVerbatim(
"HcalIsoTrack") <<
"Input to storeEnergy with " << ids.size() <<
" cells";
1454 for (
unsigned int k = 0;
k < ids.size(); ++
k)
1456 edm::LogVerbatim(
"HcalIsoTrack") <<
"Output of storeEnergy with " << detIds->size() <<
" cells and Etot " << eHcal;
1457 for (
unsigned int k = 0;
k < detIds->size(); ++
k)
1465 for (reco::MuonCollection::const_iterator recMuon = muonh->begin(); recMuon != muonh->end(); ++recMuon) {
1466 if (recMuon->innerTrack().isNonnull()) {
1467 const reco::Track* pTrack = (recMuon->innerTrack()).
get();
1468 bool mediumMuon = (((recMuon->isPFMuon()) && (recMuon->isGlobalMuon() || recMuon->isTrackerMuon())) &&
1469 (recMuon->innerTrack()->validFraction() > 0.49));
1471 double chiGlobal = ((recMuon->globalTrack().isNonnull()) ? recMuon->globalTrack()->normalizedChi2() : 999);
1472 bool goodGlob = (recMuon->isGlobalMuon() && chiGlobal < 3 &&
1473 recMuon->combinedQuality().chi2LocalPosition < 12 && recMuon->combinedQuality().trkKink < 20);
static const std::string kSharedResource
const std::string labelHBHE_
constexpr double deltaPhi(double phi1, double phi2)
const std::vector< std::string > trigNames_
double eCone_hcal(const CaloGeometry *geo, edm::Handle< T > &hits, const GlobalPoint &hpoint1, const GlobalPoint &point1, double dR, const GlobalVector &trackMom, int &nRecHits, double hbThr=-100, double heThr=-100, double hfThr=-100, double hoThr=-100, double tMin=-500, double tMax=500, int detOnly=-1, int useRaw=0, bool debug=false)
Log< level::Info, true > LogVerbatim
spr::trackSelectionParameters selectionParameter_
std::vector< GenParticle > GenParticleCollection
collection of GenParticles
const edm::EDGetTokenT< edm::TriggerResults > tok_trigRes_
std::vector< spr::propagatedTrackID > propagateCALO(edm::Handle< reco::TrackCollection > &trkCollection, const CaloGeometry *geo, const MagneticField *bField, const std::string &theTrackQuality, bool debug=false)
~HcalIsoTrkAnalyzer() override
T getParameter(std::string const &) const
const std::string l1TrigName_
const double maxRestrictionP_
const std::string modnam_
std::vector< int > oldEta_
T const & getData(const ESGetToken< T, R > &iToken) const noexcept(false)
The single EDProduct to be saved for each event (AOD case)
HcalDetId mergedDepthDetId(const HcalDetId &id) const
const std::string labelRecVtx_
constexpr int zside() const
get the z-side of the cell (1/-1)
const Point & position() const
position
const edm::ESGetToken< EcalPFRecHitThresholds, EcalPFRecHitThresholdsRcd > tok_ecalPFRecHitThresholds_
TrackQuality
track quality
constexpr int ietaAbs() const
get the absolute value of the cell ieta
const std::string labelTower_
double px() const
x coordinate of momentum vector
double p() const
momentum vector magnitude
std::vector< int > * t_ietaAll
const edm::ESGetToken< HcalTopology, HcalRecNumberingRecord > tok_htopo_
const double hitEthrEELo_
T const * product() const
std::vector< Track > TrackCollection
collection of Tracks
std::vector< int > oldDepth_
const edm::ESGetToken< EcalSeverityLevelAlgo, EcalSeverityLevelAlgoRcd > tok_sevlv_
double py() const
y coordinate of momentum vector
const double hitEthrEEHi_
const std::string labelBS_
const edm::EDGetTokenT< CaloTowerCollection > tok_cala_
std::vector< double > * t_HitEnergies
double chargeIsolationCone(unsigned int trkIndex, std::vector< spr::propagatedTrackDirection > &trkDirs, double dR, int &nNearTRKs, bool debug=false)
void beginRun(edm::Run const &, edm::EventSetup const &) override
const edm::EDGetTokenT< reco::VertexCollection > tok_recVtx_
void storeEnergy(int indx, const HcalRespCorrs *respCorrs, const std::vector< DetId > &ids, std::vector< double > &edet, double &eHcal, std::vector< unsigned int > *detIds, std::vector< double > *hitEnergies)
void find(edm::Handle< EcalRecHitCollection > &hits, DetId thisDet, std::vector< EcalRecHitCollection::const_iterator > &hit, bool debug=false)
const edm::EDGetTokenT< GenEventInfoProduct > tok_ew_
std::vector< Vertex > VertexCollection
bool accept(const edm::Event &event, const edm::TriggerResults &triggerTable, const std::string &triggerPath)
std::vector< double > etabins_
std::vector< unsigned int > * t_DetIds
const std::string names[nVars_]
const edm::EDGetTokenT< reco::BeamSpot > tok_bs_
std::vector< double > * t_HitEnergies1
void analyze(edm::Event const &, edm::EventSetup const &) override
const edm::ESGetToken< CaloTopology, CaloTopologyRecord > tok_caloTopology_
std::vector< Muon > MuonCollection
collection of Muon objects
const Item * getValues(DetId fId, bool throwOnFail=true) const
const edm::InputTag extTag_
const bool ignoreTrigger_
const edm::InputTag algTag_
Single trigger physics object (e.g., an isolated muon)
XYZTLorentzVectorD XYZTLorentzVector
Lorentz vector with cylindrical internal representation using pseudorapidity.
double pt() const
track transverse momentum
constexpr HcalSubdetector subdet() const
get the subdetector
const EcalPFRecHitThresholds * eThresholds_
const edm::EDGetTokenT< EcalRecHitCollection > tok_EE_
const edm::ESGetToken< CaloGeometry, CaloGeometryRecord > tok_geom_
double chargeIsolationEcal(unsigned int trkIndex, std::vector< spr::propagatedTrackID > &vdetIds, const CaloGeometry *geo, const CaloTopology *caloTopology, int ieta, int iphi, bool debug=false)
std::vector< double > * t_HitEnergies3
const std::string labelGenTrack_
double trackP(const reco::Track *, const edm::Handle< reco::GenParticleCollection > &)
std::array< int, 3 > fillTree(std::vector< math::XYZTLorentzVector > &vecL1, std::vector< math::XYZTLorentzVector > &vecL3, math::XYZPoint &leadPV, std::vector< spr::propagatedTrackDirection > &trkCaloDirections, std::vector< spr::propagatedTrackID > &trkCaloDets, const CaloGeometry *geo, const CaloTopology *topo, const HcalTopology *theHBHETopology, const EcalChannelStatus *theEcalChStatus, const EcalSeverityLevelAlgo *theEcalSevlv, edm::Handle< EcalRecHitCollection > &barrelRecHitsHandle, edm::Handle< EcalRecHitCollection > &endcapRecHitsHandle, edm::Handle< HBHERecHitCollection > &hbhe, edm::Handle< CaloTowerCollection > &towerHandle, edm::Handle< reco::GenParticleCollection > &genParticles, const HcalRespCorrs *respCorrs, const edm::Handle< reco::MuonCollection > &muonh)
GlobalPoint getPosition(const DetId &id) const
Get the position of a given detector id.
unsigned int size() const
number of trigger paths in trigger table
bool goodTrack(const reco::Track *pTrack, math::XYZPoint leadPV, trackSelectionParameters parameters, bool debug=false)
std::vector< double > vec1
const bool collapseDepth_
constexpr int ieta() const
get the cell ieta
ConsumesCollector consumesCollector()
Use a ConsumesCollector to gather consumes information from helper functions.
l1t::L1TGlobalUtil * l1GtUtils_
const std::vector< std::string > & moduleLabels(unsigned int trigger) const
label(s) of module(s) on a trigger path
std::vector< bool > * t_hltbits
const edm::EDGetTokenT< reco::GenParticleCollection > tok_parts_
Abs< T >::type abs(const T &t)
float segmentCompatibility(const reco::Muon &muon, reco::Muon::ArbitrationType arbitrationType=reco::Muon::SegmentAndTrackArbitration)
double phi() const
azimuthal angle of momentum vector
double eCone_ecal(const CaloGeometry *geo, edm::Handle< T > &barrelhits, edm::Handle< T > &endcaphits, const GlobalPoint &hpoint1, const GlobalPoint &point1, double dR, const GlobalVector &trackMom, int &nRecHits, double ebThr=-100, double eeThr=-100, double tMin=-500, double tMax=500, bool debug=false)
#define DEFINE_FWK_MODULE(type)
constexpr int subdetId() const
get the contents of the subdetector field (not cast into any detector's numbering enum) ...
unsigned int triggerIndex(const std::string &triggerName) const
slot position of trigger path in trigger table (0 to size-1)
static std::string const triggerResults
HLTConfigProvider hltConfig_
const std::string l3Filter_
constexpr auto deltaR(const T1 &t1, const T2 &t2) -> decltype(t1.eta())
const edm::ESGetToken< HcalRespCorrs, HcalRespCorrsRcd > tok_resp_
const edm::EDGetTokenT< HBHERecHitCollection > tok_hbhe_
std::vector< bool > * t_trgbits
std::vector< TriggerObject > TriggerObjectCollection
collection of trigger physics objects (e.g., all isolated muons)
const double slopeRestrictionP_
double eta() const
pseudorapidity of momentum vector
const std::vector< int > debEvents_
static void fillDescriptions(edm::ConfigurationDescriptions &descriptions)
static TrackQuality qualityByName(const std::string &name)
const std::string l2Filter_
const edm::EDGetTokenT< trigger::TriggerEvent > tok_trigEvt_
const std::string processName_
const edm::EDGetTokenT< reco::MuonCollection > tok_Muon_
XYZPointD XYZPoint
point in space with cartesian internal representation
std::vector< size_type > Keys
const edm::EDGetTokenT< reco::TrackCollection > tok_genTrack_
const std::string labelEB_
bool init(const edm::Run &iRun, const edm::EventSetup &iSetup, const std::string &processName, bool &changed)
d'tor
double pz() const
z coordinate of momentum vector
std::vector< double > phibins_
void add(std::string const &label, ParameterSetDescription const &psetDescription)
double rhoh(const edm::Handle< CaloTowerCollection > &)
double dR(math::XYZTLorentzVector &, math::XYZTLorentzVector &)
const edm::ESGetToken< MagneticField, IdealMagneticFieldRecord > tok_bFieldH_
const edm::EDGetTokenT< EcalRecHitCollection > tok_EB_
std::vector< int > oldDet_
const edm::InputTag theTriggerResultsLabel_
void endRun(edm::Run const &, edm::EventSetup const &) override
HcalIsoTrkAnalyzer(edm::ParameterSet const &)
const edm::ESGetToken< EcalChannelStatus, EcalChannelStatusRcd > tok_ecalChStatus_
const HcalDDDRecConstants * hdc_
reco::TrackBase::TrackQuality minQuality
const edm::EDGetTokenT< BXVector< GlobalAlgBlk > > tok_alg_
const edm::ESGetToken< HcalDDDRecConstants, HcalRecNumberingRecord > tok_ddrec_
const std::vector< std::pair< std::string, bool > > & decisionsFinal()
const JetExtendedData & getValue(const Container &, const reco::JetBaseRef &)
get value for the association. Throw exception if no association found
std::vector< unsigned int > * t_DetIds1
const std::string prdnam_
const std::vector< int > newDepth_
const edm::InputTag triggerEvent_
Log< level::Warning, false > LogWarning
std::vector< int > * t_ietaGood
std::vector< unsigned int > * t_DetIds3
double eThreshold(const DetId &id, const CaloGeometry *geo) const
const std::vector< int > oldID_
constexpr int iphi() const
get the cell iphi
const std::string labelEE_
const std::string labelMuon_
void retrieveL1(const edm::Event &iEvent, const edm::EventSetup &evSetup)
initialize the class (mainly reserve)
bool notaMuon(const reco::Track *pTrack0, const edm::Handle< reco::MuonCollection > &muonh)
DetId newId(const DetId &)
const std::string l1Filter_
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)
const std::string theTrackQuality_
std::vector< int > * t_trackType
constexpr int depth() const
get the tower depth