74 return std::make_unique<AlCaIsoTracks::Counters>();
78 void endStream()
override;
127 : trigNames_(iConfig.getParameter<
std::vector<
std::
string> >(
"triggers")),
128 labelGenTrack_(iConfig.getParameter<
edm::InputTag>(
"labelTrack")),
129 labelRecVtx_(iConfig.getParameter<
edm::InputTag>(
"labelVertex")),
130 labelEB_(iConfig.getParameter<
edm::InputTag>(
"labelEBRecHit")),
131 labelEE_(iConfig.getParameter<
edm::InputTag>(
"labelEERecHit")),
132 labelHBHE_(iConfig.getParameter<
edm::InputTag>(
"labelHBHERecHit")),
133 triggerEvent_(iConfig.getParameter<
edm::InputTag>(
"labelTriggerEvent")),
134 theTriggerResultsLabel_(iConfig.getParameter<
edm::InputTag>(
"labelTriggerResult")),
135 processName_(iConfig.getParameter<
std::
string>(
"processName")),
136 a_coneR_(iConfig.getParameter<double>(
"coneRadius")),
137 a_mipR_(iConfig.getParameter<double>(
"coneRadiusMIP")),
138 pTrackMin_(iConfig.getParameter<double>(
"minimumTrackP")),
139 eEcalMax_(iConfig.getParameter<double>(
"maximumEcalEnergy")),
140 maxRestrictionP_(iConfig.getParameter<double>(
"maxTrackP")),
141 slopeRestrictionP_(iConfig.getParameter<double>(
"slopeTrackP")),
142 eIsolate_(iConfig.getParameter<double>(
"isolationEnergy")),
143 hitEthrEB_(iConfig.getParameter<double>(
"EBHitEnergyThreshold")),
144 hitEthrEE0_(iConfig.getParameter<double>(
"EEHitEnergyThreshold0")),
145 hitEthrEE1_(iConfig.getParameter<double>(
"EEHitEnergyThreshold1")),
146 hitEthrEE2_(iConfig.getParameter<double>(
"EEHitEnergyThreshold2")),
147 hitEthrEE3_(iConfig.getParameter<double>(
"EEHitEnergyThreshold3")),
148 hitEthrEELo_(iConfig.getParameter<double>(
"EEHitEnergyThresholdLow")),
149 hitEthrEEHi_(iConfig.getParameter<double>(
"EEHitEnergyThresholdHigh")),
150 pTrackLow_(iConfig.getParameter<double>(
"momentumRangeLow")),
151 pTrackHigh_(iConfig.getParameter<double>(
"momentumRangeHigh")),
152 pTrackH_(iConfig.getParameter<double>(
"momentumHigh")),
153 preScale_(iConfig.getParameter<
int>(
"preScaleFactor")),
154 preScaleH_(iConfig.getParameter<
int>(
"preScaleHigh")),
155 theTrackQuality_(iConfig.getParameter<
std::
string>(
"trackQuality")),
162 const double isolationRadius(28.9);
193 edm::LogInfo(
"HcalIsoTrack") <<
"Parameters read from config file \n" 202 <<
"\t a_coneR " <<
a_coneR_ <<
"\t a_charIsoR " << a_charIsoR_ <<
"\t a_mipR " 229 bool triggerSatisfied(
false);
231 triggerSatisfied =
true;
236 if (!triggerEventHandle.
isValid()) {
239 triggerEvent = *(triggerEventHandle.
product());
244 if (triggerResults.
isValid()) {
245 std::vector<std::string>
modules;
247 const std::vector<std::string>& triggerNames_ = triggerNames.
triggerNames();
248 for (
unsigned int iHLT = 0; iHLT < triggerResults->
size(); iHLT++) {
253 triggerSatisfied =
true;
255 << triggerNames_[iHLT] <<
" has got HLT flag " << hlt <<
":" << triggerSatisfied;
256 if (triggerSatisfied)
266 if (triggerSatisfied) {
277 bool foundCollections(
true);
281 if (!trkCollection.
isValid()) {
283 foundCollections =
false;
292 if (!recVtxs->empty() && !((*recVtxs)[0].isFake())) {
293 leadPV =
math::XYZPoint((*recVtxs)[0].
x(), (*recVtxs)[0].
y(), (*recVtxs)[0].
z());
294 }
else if (beamSpotH.
isValid()) {
302 if (!barrelRecHitsHandle.
isValid()) {
304 foundCollections =
false;
308 if (!endcapRecHitsHandle.
isValid()) {
310 foundCollections =
false;
316 foundCollections =
false;
321 if (foundCollections) {
323 std::vector<spr::propagatedTrackDirection> trkCaloDirections;
326 std::vector<spr::propagatedTrackDirection>::const_iterator trkDetItr;
327 unsigned int nTracks(0), nselTracks(0), ntrin(0), ntrout(0), ntrH(0);
328 for (trkDetItr = trkCaloDirections.begin(),
nTracks = 0; trkDetItr != trkCaloDirections.end();
330 const reco::Track* pTrack = &(*(trkDetItr->trkItr));
333 << pTrack->
eta() <<
"|" << pTrack->
phi() <<
"|" << pTrack->
p();
337 if (trkDetItr->okHCAL) {
342 edm::LogVerbatim(
"HcalIsoTrack") <<
"qltyFlag|okECAL|okHCAL : " << qltyFlag <<
"|" << trkDetItr->okECAL <<
"|" 343 << trkDetItr->okHCAL;
344 if (qltyFlag && trkDetItr->okECAL && trkDetItr->okHCAL) {
345 double t_p = pTrack->
p();
348 std::vector<DetId> eIds;
349 std::vector<double> eHit;
353 trkDetItr->pointHCAL,
354 trkDetItr->pointECAL,
356 trkDetItr->directionECAL,
360 for (
unsigned int k = 0;
k < eIds.size(); ++
k) {
379 << pTrack->
eta() <<
"|" << pTrack->
phi() <<
"|" << t_p <<
"e_MIP " << eMipDR
380 <<
":" << eEcal <<
" Chg Isolation " << hmaxNearP <<
":" << eIsolation;
391 accept = (ntrout > 0);
392 if (!accept && ntrin > 0) {
399 if (!accept && ntrH > 0) {
417 globalCache()->nAll_ +=
nAll_;
418 globalCache()->nGood_ +=
nGood_;
419 globalCache()->nRange_ +=
nRange_;
420 globalCache()->nHigh_ +=
nHigh_;
425 << count->
nRange_ <<
" events in the p-range" << count->
nHigh_ 426 <<
" events with high p";
453 std::vector<std::string>
trigger;
454 desc.
add<std::vector<std::string> >(
"triggers", trigger);
458 desc.
add<
double>(
"minTrackPt", 1.0);
459 desc.
add<
double>(
"maxDxyPV", 10.0);
460 desc.
add<
double>(
"maxDzPV", 100.0);
461 desc.
add<
double>(
"maxChi2", 5.0);
462 desc.
add<
double>(
"maxDpOverP", 0.1);
463 desc.
add<
int>(
"minOuterHit", 4);
464 desc.
add<
int>(
"minLayerCrossed", 8);
465 desc.
add<
int>(
"maxInMiss", 2);
466 desc.
add<
int>(
"maxOutMiss", 2);
468 desc.
add<
double>(
"coneRadius", 34.98);
469 desc.
add<
double>(
"minimumTrackP", 20.0);
471 desc.
add<
double>(
"coneRadiusMIP", 14.0);
472 desc.
add<
double>(
"maximumEcalEnergy", 100.0);
474 desc.
add<
double>(
"maxTrackP", 8.0);
475 desc.
add<
double>(
"slopeTrackP", 0.05090504066);
476 desc.
add<
double>(
"isolationEnergy", 10.0);
478 desc.
add<
double>(
"EBHitEnergyThreshold", 0.08);
479 desc.
add<
double>(
"EEHitEnergyThreshold0", 0.30);
480 desc.
add<
double>(
"EEHitEnergyThreshold1", 0.00);
481 desc.
add<
double>(
"EEHitEnergyThreshold2", 0.00);
482 desc.
add<
double>(
"EEHitEnergyThreshold3", 0.00);
483 desc.
add<
double>(
"EEHitEnergyThresholdLow", 0.30);
484 desc.
add<
double>(
"EEHitEnergyThresholdHigh", 0.30);
486 desc.
add<
double>(
"momentumRangeLow", 20.0);
487 desc.
add<
double>(
"momentumRangeHigh", 40.0);
488 desc.
add<
int>(
"preScaleFactor", 10);
489 desc.
add<
double>(
"momentumHigh", 60.0);
490 desc.
add<
int>(
"preScaleHigh", 2);
491 descriptions.
add(
"alcaIsoTracksFilter", desc);
double p() const
momentum vector magnitude
const edm::InputTag labelEE_
const double slopeRestrictionP_
T getParameter(std::string const &) const
EventNumber_t event() const
const edm::InputTag labelRecVtx_
void endStream() override
std::vector< spr::propagatedTrackID > propagateCALO(edm::Handle< reco::TrackCollection > &trkCollection, const CaloGeometry *geo, const MagneticField *bField, const std::string &theTrackQuality, bool debug=false)
const unsigned int nTracks(const reco::Vertex &sv)
static void fillDescriptions(edm::ConfigurationDescriptions &descriptions)
The single EDProduct to be saved for each event (AOD case)
spr::trackSelectionParameters selectionParameter_
static void globalEndJob(const AlCaIsoTracks::Counters *counters)
bool getByToken(EDGetToken token, Handle< PROD > &result) const
edm::EDGetTokenT< reco::TrackCollection > tok_genTrack_
TrackQuality
track quality
const std::string theTrackQuality_
const std::string processName_
bool accept() const
Has at least one path accepted the event?
int bunchCrossing() const
edm::LuminosityBlockNumber_t luminosityBlock() const
edm::EDGetTokenT< reco::BeamSpot > tok_bs_
double phi() const
azimuthal angle of momentum vector
double chargeIsolationCone(unsigned int trkIndex, std::vector< spr::propagatedTrackDirection > &trkDirs, double dR, int &nNearTRKs, bool debug=false)
double px() const
x coordinate of momentum vector
bool filter(edm::Event &, edm::EventSetup const &) override
void find(edm::Handle< EcalRecHitCollection > &hits, DetId thisDet, std::vector< EcalRecHitCollection::const_iterator > &hit, bool debug=false)
bool accept(const edm::Event &event, const edm::TriggerResults &triggerTable, const std::string &triggerPath)
edm::EDGetTokenT< reco::VertexCollection > tok_recVtx_
Strings const & triggerNames() const
const std::vector< std::string > trigNames_
const edm::InputTag triggerEvent_
XYZTLorentzVectorD XYZTLorentzVector
Lorentz vector with cylindrical internal representation using pseudorapidity.
#define DEFINE_FWK_MODULE(type)
double eta() const
pseudorapidity of momentum vector
bool goodTrack(const reco::Track *pTrack, math::XYZPoint leadPV, trackSelectionParameters parameters, bool debug=false)
unsigned int size() const
Get number of paths stored.
double pt() const
track transverse momentum
const edm::InputTag labelGenTrack_
GlobalPoint getPosition(const DetId &id) const
Get the position of a given detector id.
Abs< T >::type abs(const T &t)
std::atomic< unsigned int > nHigh_
const edm::InputTag labelHBHE_
edm::EDGetTokenT< trigger::TriggerEvent > tok_trigEvt_
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::EDGetTokenT< HBHERecHitCollection > tok_hbhe_
static std::string const triggerResults
edm::EDGetTokenT< EcalRecHitCollection > tok_EB_
ParameterDescriptionBase * add(U const &iLabel, T const &value)
double pz() const
z coordinate of momentum vector
int ietaAbs() const
get the absolute value of the cell ieta
std::atomic< unsigned int > nGood_
edm::EDGetTokenT< edm::TriggerResults > tok_trigRes_
edm::EDGetTokenT< EcalRecHitCollection > tok_EE_
static TrackQuality qualityByName(const std::string &name)
static void fillDescriptions(edm::ConfigurationDescriptions &descriptions)
const double hitEthrEEHi_
T const * product() const
XYZPointD XYZPoint
point in space with cartesian internal representation
bool init(const edm::Run &iRun, const edm::EventSetup &iSetup, const std::string &processName, bool &changed)
d'tor
AlCaIsoTracksFilter(edm::ParameterSet const &, const AlCaIsoTracks::Counters *count)
void add(std::string const &label, ParameterSetDescription const &psetDescription)
std::atomic< unsigned int > nAll_
const edm::InputTag theTriggerResultsLabel_
const double maxRestrictionP_
reco::TrackBase::TrackQuality minQuality
const double hitEthrEELo_
const edm::InputTag labelEB_
const Point & position() const
position
void endRun(edm::Run const &, edm::EventSetup const &) override
HLTConfigProvider hltConfig_
T const * product() const
std::atomic< unsigned int > nRange_
edm::TriggerNames const & triggerNames(edm::TriggerResults const &triggerResults) const override
~AlCaIsoTracksFilter() override
double py() const
y coordinate of momentum vector
static std::unique_ptr< AlCaIsoTracks::Counters > initializeGlobalCache(edm::ParameterSet const &iConfig)
void beginRun(edm::Run const &, edm::EventSetup const &) override