13 #include "TDirectory.h" 15 #include "TLorentzVector.h" 16 #include "TInterpreter.h" 98 std::array<int, 3>
fillTree(std::vector<math::XYZTLorentzVector>& vecL1,
99 std::vector<math::XYZTLorentzVector>& vecL3,
101 std::vector<spr::propagatedGenParticleID>& trackIDs,
119 const std::vector<DetId>& ids,
120 std::vector<double>& edet,
122 std::vector<unsigned int>* detIds,
123 std::vector<double>* hitEnergies);
210 processName_(iConfig.getParameter<
std::
string>(
"processName")),
211 l1Filter_(iConfig.getParameter<
std::
string>(
"l1Filter")),
212 l2Filter_(iConfig.getParameter<
std::
string>(
"l2Filter")),
213 l3Filter_(iConfig.getParameter<
std::
string>(
"l3Filter")),
214 ptMin_(iConfig.getParameter<double>(
"pTMin")),
215 etaMax_(iConfig.getParameter<double>(
"maxChargedHadronEta")),
216 a_coneR_(iConfig.getParameter<double>(
"coneRadius")),
217 a_mipR_(iConfig.getParameter<double>(
"coneRadiusMIP")),
218 a_mipR2_(iConfig.getParameter<double>(
"coneRadiusMIP2")),
219 a_mipR3_(iConfig.getParameter<double>(
"coneRadiusMIP3")),
220 a_mipR4_(iConfig.getParameter<double>(
"coneRadiusMIP4")),
221 a_mipR5_(iConfig.getParameter<double>(
"coneRadiusMIP5")),
222 pTrackMin_(iConfig.getParameter<double>(
"minimumTrackP")),
223 eEcalMax_(iConfig.getParameter<double>(
"maximumEcalEnergy")),
224 maxRestrictionP_(iConfig.getParameter<double>(
"maxTrackP")),
225 slopeRestrictionP_(iConfig.getParameter<double>(
"slopeTrackP")),
226 hcalScale_(iConfig.getUntrackedParameter<double>(
"hHcalScale", 1.0)),
227 eIsolate1_(iConfig.getParameter<double>(
"isolationEnergyTight")),
228 eIsolate2_(iConfig.getParameter<double>(
"isolationEnergyLoose")),
229 pTrackLow_(iConfig.getParameter<double>(
"momentumLow")),
230 pTrackHigh_(iConfig.getParameter<double>(
"momentumHigh")),
231 prescaleLow_(iConfig.getParameter<
int>(
"prescaleLow")),
232 prescaleHigh_(iConfig.getParameter<
int>(
"prescaleHigh")),
233 useRaw_(iConfig.getUntrackedParameter<
int>(
"useRaw", 0)),
234 dataType_(iConfig.getUntrackedParameter<
int>(
"dataType", 0)),
235 mode_(iConfig.getUntrackedParameter<
int>(
"outMode", 11)),
236 ignoreTrigger_(iConfig.getUntrackedParameter<
bool>(
"ignoreTriggers",
false)),
237 useL1Trigger_(iConfig.getUntrackedParameter<
bool>(
"useL1Trigger",
false)),
238 unCorrect_(iConfig.getUntrackedParameter<
bool>(
"unCorrect",
false)),
239 collapseDepth_(iConfig.getUntrackedParameter<
bool>(
"collapseDepth",
false)),
240 hitEthrEB_(iConfig.getParameter<double>(
"EBHitEnergyThreshold")),
241 hitEthrEE0_(iConfig.getParameter<double>(
"EEHitEnergyThreshold0")),
242 hitEthrEE1_(iConfig.getParameter<double>(
"EEHitEnergyThreshold1")),
243 hitEthrEE2_(iConfig.getParameter<double>(
"EEHitEnergyThreshold2")),
244 hitEthrEE3_(iConfig.getParameter<double>(
"EEHitEnergyThreshold3")),
245 hitEthrEELo_(iConfig.getParameter<double>(
"EEHitEnergyThresholdLow")),
246 hitEthrEEHi_(iConfig.getParameter<double>(
"EEHitEnergyThresholdHigh")),
247 triggerEvent_(iConfig.getParameter<
edm::
InputTag>(
"labelTriggerEvent")),
248 theTriggerResultsLabel_(iConfig.getParameter<
edm::
InputTag>(
"labelTriggerResult")),
249 labelGenTrack_(iConfig.getParameter<
std::
string>(
"labelTrack")),
250 labelRecVtx_(iConfig.getParameter<
std::
string>(
"labelVertex")),
251 labelEB_(iConfig.getParameter<
std::
string>(
"labelEBRecHit")),
252 labelEE_(iConfig.getParameter<
std::
string>(
"labelEERecHit")),
253 labelHBHE_(iConfig.getParameter<
std::
string>(
"labelHBHERecHit")),
254 labelTower_(iConfig.getParameter<
std::
string>(
"labelCaloTower")),
255 l1TrigName_(iConfig.getUntrackedParameter<
std::
string>(
"l1TrigName",
"L1_SingleJet60")),
256 oldID_(iConfig.getUntrackedParameter<
std::
vector<
int> >(
"oldID")),
257 newDepth_(iConfig.getUntrackedParameter<
std::
vector<
int> >(
"newDepth")),
258 hep17_(iConfig.getUntrackedParameter<
bool>(
"hep17")),
259 usePFThresh_(iConfig.getParameter<
bool>(
"usePFThreshold")),
260 labelBS_(iConfig.getParameter<
std::
string>(
"labelBeamSpot")),
261 modnam_(iConfig.getUntrackedParameter<
std::
string>(
"moduleName",
"")),
262 prdnam_(iConfig.getUntrackedParameter<
std::
string>(
"producerName",
"")),
263 algTag_(iConfig.getParameter<
edm::
InputTag>(
"algInputTag")),
264 extTag_(iConfig.getParameter<
edm::
InputTag>(
"extInputTag")),
297 const double isolationRadius(28.9), innerR(10.0), outerR(30.0);
307 for (
unsigned int k = 0;
k <
oldID_.size(); ++
k) {
334 <<
"\t a_mipR4 " <<
a_mipR4_ <<
"\t a_mipR5 " <<
a_mipR5_ <<
"\n pTrackMin_ " 354 for (
unsigned int k = 0;
k <
oldID_.size(); ++
k)
358 for (
int i = 0;
i < 10;
i++)
360 for (
int i = 0;
i < 8; ++
i)
368 unsigned int k1(0), k2(0);
385 <<
" Luminosity " <<
iEvent.luminosityBlock() <<
" Bunch " <<
iEvent.bunchCrossing();
400 respCorrs->
setTopo(theHBHETopology);
412 edm::LogWarning(
"HcalIsoTrack") <<
"Cannot access the genParticles collection";
427 if (recVtxs.
isValid() && !(recVtxs->empty())) {
429 for (
unsigned int k = 0;
k < recVtxs->size(); ++
k) {
430 if (!((*recVtxs)[
k].isFake()) && ((*recVtxs)[
k].ndof() > 4)) {
449 if (!barrelRecHitsHandle.
isValid()) {
454 if (!endcapRecHitsHandle.
isValid()) {
459 if (!
hbhe.isValid()) {
466 std::vector<spr::propagatedGenParticleID> trackIDs =
468 std::vector<math::XYZTLorentzVector> vecL1, vecL3;
494 for (
const auto& decision : finalDecisions) {
495 if (decision.first.find(
l1TrigName_) != std::string::npos) {
502 <<
" from a list of " << finalDecisions.size() <<
" decisions";
511 for (
unsigned int iHLT = 0; iHLT <
triggerResults->size(); iHLT++) {
534 std::array<int, 3> ntksave{{0, 0, 0}};
560 if (!triggerEventHandle.
isValid()) {
568 std::vector<std::string>
modules;
571 for (
unsigned int iHLT = 0; iHLT <
triggerResults->size(); iHLT++) {
576 std::vector<math::XYZTLorentzVector> vecL2;
580 for (
unsigned int ifilter = 0; ifilter <
triggerEvent.sizeFilters(); ++ifilter) {
581 std::vector<int>
Keys;
584 for (
unsigned int imodule = 0; imodule < moduleLabels.size(); imodule++) {
585 if (
label.find(moduleLabels[imodule]) != std::string::npos) {
589 for (
unsigned int ifiltrKey = 0; ifiltrKey <
triggerEvent.filterKeys(ifilter).size(); ++ifiltrKey) {
602 <<
"key " << ifiltrKey <<
" : pt " << TO.
pt() <<
" eta " << TO.
eta() <<
" phi " << TO.
phi()
603 <<
" mass " << TO.
mass() <<
" Id " << TO.
id();
608 <<
"sizes " << vecL1.size() <<
":" << vecL2.size() <<
":" << vecL3.size();
616 for (
unsigned int i = 0;
i < vecL2.size();
i++) {
617 double dr =
dR(vecL1[0], vecL2[
i]);
623 mindRvec1 = vecL2[
i];
627 edm::LogVerbatim(
"HcalIsoTrack") <<
"L2 object closest to L1 " << mindRvec1 <<
" at Dr " << mindR1;
630 if (!vecL1.empty()) {
637 if (!vecL3.empty()) {
681 tree =
fs->make<TTree>(
"CalibTree",
"CalibTree");
683 tree->Branch(
"t_Run", &
t_Run,
"t_Run/I");
698 tree->Branch(
"t_p", &
t_p,
"t_p/D");
699 tree->Branch(
"t_pt", &
t_pt,
"t_pt/D");
700 tree->Branch(
"t_phi", &
t_phi,
"t_phi/D");
722 t_DetIds =
new std::vector<unsigned int>();
723 t_DetIds1 =
new std::vector<unsigned int>();
724 t_DetIds3 =
new std::vector<unsigned int>();
729 tree->Branch(
"t_DetIds",
"std::vector<unsigned int>", &
t_DetIds);
732 tree->Branch(
"t_DetIds1",
"std::vector<unsigned int>", &
t_DetIds1);
733 tree->Branch(
"t_DetIds3",
"std::vector<unsigned int>", &
t_DetIds3);
737 tree2 =
fs->make<TTree>(
"EventInfo",
"Event Information");
767 <<
" init flag " <<
flag <<
" change flag " << changed_;
774 for (
unsigned itrig = 0; itrig <
trigNames_.size(); itrig++) {
776 if (triggerindx >=
n) {
778 <<
"the current menu";
796 std::vector<std::string>
trig = {
"HLT_PFJet40",
806 desc.add<std::vector<std::string> >(
"triggers",
trig);
811 desc.add<
double>(
"pTMin", 1.0),
desc.add<
double>(
"maxChargedHadronEta", 3.0);
813 desc.add<
double>(
"minimumTrackP", 10.0);
814 desc.add<
double>(
"coneRadius", 34.98);
816 desc.add<
double>(
"coneRadiusMIP", 14.0);
817 desc.add<
double>(
"coneRadiusMIP2", 18.0);
818 desc.add<
double>(
"coneRadiusMIP3", 20.0);
819 desc.add<
double>(
"coneRadiusMIP4", 22.0);
820 desc.add<
double>(
"coneRadiusMIP5", 24.0);
821 desc.add<
double>(
"maximumEcalEnergy", 2.0);
823 desc.add<
double>(
"maxTrackP", 8.0);
824 desc.add<
double>(
"slopeTrackP", 0.05090504066);
825 desc.add<
double>(
"isolationEnergyTight", 2.0);
826 desc.add<
double>(
"isolationEnergyLoose", 10.0);
828 desc.add<
double>(
"EBHitEnergyThreshold", 0.08);
829 desc.add<
double>(
"EEHitEnergyThreshold0", 0.30);
830 desc.add<
double>(
"EEHitEnergyThreshold1", 0.00);
831 desc.add<
double>(
"EEHitEnergyThreshold2", 0.00);
832 desc.add<
double>(
"EEHitEnergyThreshold3", 0.00);
833 desc.add<
double>(
"EEHitEnergyThresholdLow", 0.30);
834 desc.add<
double>(
"EEHitEnergyThresholdHigh", 0.30);
836 desc.add<
double>(
"momentumLow", 40.0);
837 desc.add<
double>(
"momentumHigh", 60.0);
838 desc.add<
int>(
"prescaleLow", 1);
839 desc.add<
int>(
"prescaleHigh", 1);
856 desc.addUntracked<
int>(
"useRaw", 0);
857 desc.addUntracked<
bool>(
"ignoreTriggers",
false);
858 desc.addUntracked<
bool>(
"useL1Trigger",
false);
859 desc.addUntracked<
double>(
"hcalScale", 1.0);
860 desc.addUntracked<
int>(
"dataType", 0);
861 desc.addUntracked<
bool>(
"unCorrect",
false);
862 desc.addUntracked<
bool>(
"collapseDepth",
false);
864 desc.addUntracked<
int>(
"outMode", 11);
865 std::vector<int>
dummy;
866 desc.addUntracked<std::vector<int> >(
"oldID",
dummy);
867 desc.addUntracked<std::vector<int> >(
"newDepth",
dummy);
868 desc.addUntracked<
bool>(
"hep17",
false);
869 desc.add<
bool>(
"usePFThreshold",
true);
870 descriptions.
add(
"hcalIsoTrkSimAnalyzer",
desc);
874 std::vector<math::XYZTLorentzVector>& vecL3,
876 std::vector<spr::propagatedGenParticleID>& trackIDs,
888 int nSave(0),
nLoose(0), nTight(0);
890 unsigned int nTracks(0), nselTracks(0);
893 for (
auto const& trkDetItr : trackIDs) {
898 << pTrack->
eta() <<
"|" << pTrack->
phi() <<
"|" << pTrack->
p();
901 for (
unsigned int k = 0;
k < vecL3.size(); ++
k) {
902 double dr =
dR(vecL3[
k], v4);
907 t_mindR1 = (!vecL1.empty()) ?
dR(vecL1[0], v4) : 999;
912 if (trkDetItr.okHCAL) {
916 if (
t_p > 40.0 &&
t_p <= 60.0)
928 << trkDetItr.okHCAL <<
" eIsolation " << eIsolation;
936 std::vector<DetId> eIds;
937 std::vector<double> eHit;
944 trkDetItr.directionECAL,
948 for (
unsigned int k = 0;
k < eIds.size(); ++
k) {
958 std::vector<DetId> eIds2;
959 std::vector<double> eHit2;
966 trkDetItr.directionECAL,
970 for (
unsigned int k = 0;
k < eIds2.size(); ++
k) {
980 std::vector<DetId> eIds3;
981 std::vector<double> eHit3;
988 trkDetItr.directionECAL,
992 for (
unsigned int k = 0;
k < eIds3.size(); ++
k) {
1002 std::vector<DetId> eIds4;
1003 std::vector<double> eHit4;
1005 barrelRecHitsHandle,
1006 endcapRecHitsHandle,
1007 trkDetItr.pointHCAL,
1008 trkDetItr.pointECAL,
1010 trkDetItr.directionECAL,
1014 for (
unsigned int k = 0;
k < eIds4.size(); ++
k) {
1024 std::vector<DetId> eIds5;
1025 std::vector<double> eHit5;
1027 barrelRecHitsHandle,
1028 endcapRecHitsHandle,
1029 trkDetItr.pointHCAL,
1030 trkDetItr.pointECAL,
1032 trkDetItr.directionECAL,
1036 for (
unsigned int k = 0;
k < eIds5.size(); ++
k) {
1047 const DetId cellE(trkDetItr.detIdECAL);
1049 barrelRecHitsHandle,
1050 endcapRecHitsHandle,
1062 barrelRecHitsHandle,
1063 endcapRecHitsHandle,
1074 if (e11x11P.second && e15x15P.second) {
1075 t_eAnnular = (e15x15P.first - e11x11P.first);
1077 t_eAnnular = -(e15x15P.first - e11x11P.first);
1080 const DetId cellH(trkDetItr.detIdHCAL);
1082 theHBHETopology, cellH,
hbhe, 2, 2,
false,
true, -100.0, -100.0, -100.0, -100.0, -100.0, 100.0);
1084 theHBHETopology, cellH,
hbhe, 3, 3,
false,
true, -100.0, -100.0, -100.0, -100.0, -100.0, 100.0);
1088 <<
" Annular E (Ecal) " << e11x11P.first <<
":" << e15x15P.first <<
":" 1099 int nRecHits(-999), nRecHits1(-999), nRecHits3(-999);
1100 std::vector<DetId> ids, ids1, ids3;
1101 std::vector<double> edet0, edet1, edet3;
1104 trkDetItr.pointHCAL,
1105 trkDetItr.pointECAL,
1107 trkDetItr.directionHCAL,
1113 for (
unsigned k = 0;
k < ids.size(); ++
k)
1121 trkDetItr.pointHCAL,
1122 trkDetItr.pointECAL,
1124 trkDetItr.directionHCAL,
1130 for (
unsigned k = 0;
k < ids1.size(); ++
k)
1138 trkDetItr.pointHCAL,
1139 trkDetItr.pointECAL,
1141 trkDetItr.directionHCAL,
1147 for (
unsigned k = 0;
k < ids3.size(); ++
k)
1158 << pTrack->
eta() <<
"|" <<
t_phi <<
"|" <<
t_p <<
" Generator Level p " 1163 for (
unsigned int ll = 0; ll <
t_DetIds->size(); ll++) {
1167 for (
unsigned int ll = 0; ll <
t_DetIds1->size(); ll++) {
1171 for (
unsigned int ll = 0; ll <
t_DetIds3->size(); ll++) {
1222 std::array<int, 3>
i3{{nSave,
nLoose, nTight}};
1231 std::vector<double> sumPFNallSMDQH2;
1237 for (
const auto& pf_it : (*
tower)) {
1242 hadder += pf_it.hadEt();
1244 sumPFNallSMDQH2.emplace_back(hadder);
1249 std::sort(sumPFNallSMDQH2.begin(), sumPFNallSMDQH2.end());
1250 if (sumPFNallSMDQH2.size() % 2)
1251 evt_smdq = sumPFNallSMDQH2[(sumPFNallSMDQH2.size() - 1) / 2];
1253 evt_smdq = (sumPFNallSMDQH2[sumPFNallSMDQH2.size() / 2] + sumPFNallSMDQH2[(sumPFNallSMDQH2.size() - 2) / 2]) / 2.;
1264 eThr =
static_cast<double>((*eThresholds_)[
id]);
1283 for (
unsigned int k = 0;
k <
oldID_.size(); ++
k) {
1293 const std::vector<DetId>& ids,
1294 std::vector<double>& edet,
1296 std::vector<unsigned int>* detIds,
1297 std::vector<double>* hitEnergies) {
1300 for (
unsigned int k = 0;
k < ids.size(); ++
k) {
1307 for (
const auto& en : edet)
1311 edm::LogWarning(
"HcalIsoTrack") <<
"Check inconsistent energies: " << indx <<
" " << eHcal <<
":" << ehcal
1312 <<
" from " << ids.size() <<
" cells";
1316 std::map<HcalDetId, double> hitMap;
1317 for (
unsigned int k = 0;
k < ids.size(); ++
k) {
1319 auto itr = hitMap.find(
id);
1320 if (itr == hitMap.end()) {
1321 hitMap[
id] = edet[
k];
1323 (itr->second) += edet[
k];
1326 detIds->reserve(hitMap.size());
1327 hitEnergies->reserve(hitMap.size());
1328 for (
const auto&
hit : hitMap) {
1329 detIds->emplace_back(
hit.first.rawId());
1330 hitEnergies->emplace_back(
hit.second);
1333 detIds->reserve(ids.size());
1334 hitEnergies->reserve(ids.size());
1335 for (
unsigned int k = 0;
k < ids.size(); ++
k) {
1336 detIds->emplace_back(ids[
k].rawId());
1337 hitEnergies->emplace_back(edet[
k]);
1341 edm::LogVerbatim(
"HcalIsoTrack") <<
"Input to storeEnergy with " << ids.size() <<
" cells";
1342 for (
unsigned int k = 0;
k < ids.size(); ++
k)
1344 edm::LogVerbatim(
"HcalIsoTrack") <<
"Output of storeEnergy with " << detIds->size() <<
" cells and Etot " << eHcal;
1345 for (
unsigned int k = 0;
k < detIds->size(); ++
k)
1351 int id = pTrack->
pdgId();
1352 bool flag = ((
id != 13) && (
id != -13) && (pTrack->
charge() != 0));
static const std::string kSharedResource
constexpr double deltaPhi(double phi1, double phi2)
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
std::vector< GenParticle > GenParticleCollection
collection of GenParticles
const std::vector< int > newDepth_
const std::string labelEB_
void beginRun(edm::Run const &, edm::EventSetup const &) override
edm::EDGetTokenT< reco::VertexCollection > tok_recVtx_
std::vector< spr::propagatedTrackID > propagateCALO(edm::Handle< reco::TrackCollection > &trkCollection, const CaloGeometry *geo, const MagneticField *bField, const std::string &theTrackQuality, bool debug=false)
const std::string labelBS_
HcalIsoTrkSimAnalyzer(edm::ParameterSet const &)
std::vector< double > * t_HitEnergies3
double pz() const final
z coordinate of momentum vector
const std::string labelHBHE_
edm::EDGetTokenT< HBHERecHitCollection > tok_hbhe_
double pt() const final
transverse momentum
The single EDProduct to be saved for each event (AOD case)
HcalDetId mergedDepthDetId(const HcalDetId &id) const
constexpr int zside() const
get the z-side of the cell (1/-1)
const Point & position() const
position
HepPDT::ParticleDataTable ParticleDataTable
std::vector< double > * t_HitEnergies
const std::string l3Filter_
constexpr int ietaAbs() const
get the absolute value of the cell ieta
#define DEFINE_FWK_MODULE(type)
double dR(math::XYZTLorentzVector &, math::XYZTLorentzVector &)
const std::string l2Filter_
const std::string labelEE_
T const * product() const
std::vector< int > oldEta_
const std::string labelRecVtx_
const std::vector< std::string > trigNames_
l1t::L1TGlobalUtil * l1GtUtils_
double chargeIsolationGenCone(unsigned int trkIndex, std::vector< spr::propagatedGenParticleID > &trackIDs, double dR, int &nNearTRKs, bool debug=false)
const edm::InputTag algTag_
std::vector< int > * t_ietaGood
std::vector< double > etabins_
std::vector< double > phibins_
const edm::InputTag triggerEvent_
std::vector< bool > * t_hltbits
void find(edm::Handle< EcalRecHitCollection > &hits, DetId thisDet, std::vector< EcalRecHitCollection::const_iterator > &hit, bool debug=false)
std::vector< Vertex > VertexCollection
double chargeIsolationGenEcal(unsigned int trkIndex, std::vector< spr::propagatedGenParticleID > &trackIDs, const CaloGeometry *geo, const CaloTopology *caloTopology, int ieta, int iphi, bool debug=false)
bool accept(const edm::Event &event, const edm::TriggerResults &triggerTable, const std::string &triggerPath)
std::vector< unsigned int > * t_DetIds1
const std::string names[nVars_]
edm::ESGetToken< EcalSeverityLevelAlgo, EcalSeverityLevelAlgoRcd > tok_sevlv_
const Item * getValues(DetId fId, bool throwOnFail=true) const
edm::ESGetToken< CaloTopology, CaloTopologyRecord > tok_caloTopology_
DetId newId(const DetId &)
int pdgId() const final
PDG identifier.
Single trigger physics object (e.g., an isolated muon)
XYZTLorentzVectorD XYZTLorentzVector
Lorentz vector with cylindrical internal representation using pseudorapidity.
double rhoh(const edm::Handle< CaloTowerCollection > &)
constexpr HcalSubdetector subdet() const
get the subdetector
const std::vector< int > oldID_
HLTConfigProvider hltConfig_
bool notaMuon(const reco::GenParticle *pTrack)
double px() const final
x coordinate of momentum vector
std::vector< int > oldDepth_
double p() const final
magnitude of momentum vector
const std::string modnam_
const EcalPFRecHitThresholds * eThresholds_
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
std::vector< double > vec1
edm::EDGetTokenT< BXVector< GlobalAlgBlk > > tok_alg_
constexpr int ieta() const
get the cell ieta
ConsumesCollector consumesCollector()
Use a ConsumesCollector to gather consumes information from helper functions.
const double maxRestrictionP_
edm::EDGetTokenT< EcalRecHitCollection > tok_EE_
const HcalDDDRecConstants * hdc_
const std::vector< std::string > & moduleLabels(unsigned int trigger) const
label(s) of module(s) on a trigger path
std::vector< int > * t_ietaAll
const std::string l1Filter_
Abs< T >::type abs(const T &t)
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)
const std::string prdnam_
std::vector< int > * t_trackType
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)
edm::ESGetToken< HcalTopology, HcalRecNumberingRecord > tok_htopo_
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)
bool getData(T &iHolder) const
std::array< int, 3 > fillTree(std::vector< math::XYZTLorentzVector > &vecL1, std::vector< math::XYZTLorentzVector > &vecL3, math::XYZPoint &leadPV, std::vector< spr::propagatedGenParticleID > &trackIDs, 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, const edm::Handle< CaloTowerCollection > &towerHandle, edm::Handle< reco::GenParticleCollection > &genParticles, const HcalRespCorrs *respCorrs)
const bool collapseDepth_
static std::string const triggerResults
const edm::InputTag extTag_
double py() const final
y coordinate of momentum vector
const std::string l1TrigName_
std::vector< unsigned int > * t_DetIds3
~HcalIsoTrkSimAnalyzer() override=default
edm::EDGetTokenT< reco::GenParticleCollection > tok_parts_
std::vector< int > oldDet_
edm::EDGetTokenT< GenEventInfoProduct > tok_ew_
constexpr auto deltaR(const T1 &t1, const T2 &t2) -> decltype(t1.eta())
edm::EDGetTokenT< CaloTowerCollection > tok_cala_
std::vector< TriggerObject > TriggerObjectCollection
collection of trigger physics objects (e.g., all isolated muons)
void endRun(edm::Run const &, edm::EventSetup const &) override
edm::ESGetToken< EcalChannelStatus, EcalChannelStatusRcd > tok_ecalChStatus_
std::vector< unsigned int > * t_DetIds
edm::EDGetTokenT< edm::TriggerResults > tok_trigRes_
static void fillDescriptions(edm::ConfigurationDescriptions &descriptions)
XYZPointD XYZPoint
point in space with cartesian internal representation
std::vector< size_type > Keys
bool init(const edm::Run &iRun, const edm::EventSetup &iSetup, const std::string &processName, bool &changed)
d'tor
edm::ESGetToken< EcalPFRecHitThresholds, EcalPFRecHitThresholdsRcd > tok_ecalPFRecHitThresholds_
void analyze(edm::Event const &, edm::EventSetup const &) override
void add(std::string const &label, ParameterSetDescription const &psetDescription)
std::vector< double > * t_HitEnergies1
edm::EDGetTokenT< trigger::TriggerEvent > tok_trigEvt_
const std::string labelTower_
edm::EDGetTokenT< reco::BeamSpot > tok_bs_
const std::string processName_
edm::ESGetToken< HcalDDDRecConstants, HcalRecNumberingRecord > tok_ddrec_
std::vector< bool > * t_trgbits
const double hitEthrEELo_
edm::ESGetToken< HcalRespCorrs, HcalRespCorrsRcd > tok_resp_
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
const double hitEthrEEHi_
edm::ESGetToken< HepPDT::ParticleDataTable, PDTRecord > tok_pdt_
const std::string labelGenTrack_
Log< level::Warning, false > LogWarning
edm::ESGetToken< CaloGeometry, CaloGeometryRecord > tok_geom_
double eThreshold(const DetId &id, const CaloGeometry *geo) const
edm::ESGetToken< MagneticField, IdealMagneticFieldRecord > tok_bFieldH_
double phi() const final
momentum azimuthal angle
const edm::InputTag theTriggerResultsLabel_
edm::EDGetTokenT< EcalRecHitCollection > tok_EB_
constexpr int iphi() const
get the cell iphi
const bool ignoreTrigger_
void setTopo(const HcalTopology *topo)
const double slopeRestrictionP_
void retrieveL1(const edm::Event &iEvent, const edm::EventSetup &evSetup)
initialize the class (mainly reserve)
int charge() const final
electric charge
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)
double eta() const final
momentum pseudorapidity
constexpr int depth() const
get the tower depth