CMS 3D CMS Logo

JetExtractor.cc
Go to the documentation of this file.
1 #include "JetExtractor.h"
2 
7 
12 
17 
19 
23 
25 
26 using namespace edm;
27 using namespace std;
28 using namespace reco;
29 using namespace muonisolation;
31 
32 JetExtractor::JetExtractor(const ParameterSet& par, edm::ConsumesCollector&& iC)
33  : theJetCollectionToken(iC.consumes<CaloJetCollection>(par.getParameter<edm::InputTag>("JetCollectionLabel"))),
34  thePropagatorName(par.getParameter<std::string>("PropagatorName")),
35  theThreshold(par.getParameter<double>("Threshold")),
36  theDR_Veto(par.getParameter<double>("DR_Veto")),
37  theDR_Max(par.getParameter<double>("DR_Max")),
38  theExcludeMuonVeto(par.getParameter<bool>("ExcludeMuonVeto")),
39  theService(nullptr),
40  theAssociator(nullptr),
41  thePrintTimeReport(par.getUntrackedParameter<bool>("PrintTimeReport")) {
42  ParameterSet serviceParameters = par.getParameter<ParameterSet>("ServiceParameters");
43  theService = new MuonServiceProxy(serviceParameters, edm::ConsumesCollector(iC));
44 
45  // theAssociatorParameters = new TrackAssociatorParameters(par.getParameter<edm::ParameterSet>("TrackAssociatorParameters"), iC_);
47  theAssociatorParameters->loadParameters(par.getParameter<edm::ParameterSet>("TrackAssociatorParameters"), iC);
49 }
50 
54  if (theService)
55  delete theService;
56  if (theAssociator)
57  delete theAssociator;
58 }
59 
61  // LogWarning("JetExtractor")
62  // <<"fillVetos does nothing now: IsoDeposit provides enough functionality\n"
63  // <<"to remove a deposit at/around given (eta, phi)";
64 }
65 
66 IsoDeposit JetExtractor::deposit(const Event& event, const EventSetup& eventSetup, const Track& muon) const {
67  theService->update(eventSetup);
69 
70  typedef IsoDeposit::Veto Veto;
71  IsoDeposit::Direction muonDir(muon.eta(), muon.phi());
72 
73  IsoDeposit depJet(muonDir);
74 
76  eventSetup.get<IdealMagneticFieldRecord>().get(bField);
77 
81 
82  reco::isodeposit::Direction vetoDirection(mInfo.trkGlobPosAtHcal.eta(), mInfo.trkGlobPosAtHcal.phi());
83  depJet.setVeto(Veto(vetoDirection, theDR_Veto));
84 
86  event.getByToken(theJetCollectionToken, caloJetsH);
87 
88  //use calo towers
89  CaloJetCollection::const_iterator jetCI = caloJetsH->begin();
90  for (; jetCI != caloJetsH->end(); ++jetCI) {
91  double deltar0 = reco::deltaR(muon, *jetCI);
92  if (deltar0 > theDR_Max)
93  continue;
94  if (jetCI->et() < theThreshold)
95  continue;
96 
97  //should I make a separate config option for this?
98  std::vector<CaloTowerPtr> jetConstituents = jetCI->getCaloConstituents();
99 
100  std::vector<DetId>::const_iterator crossedCI = mInfo.crossedTowerIds.begin();
101  std::vector<CaloTowerPtr>::const_iterator jetTowCI = jetConstituents.begin();
102 
103  double sumEtExcluded = 0;
104  for (; jetTowCI != jetConstituents.end(); ++jetTowCI) {
105  bool isExcluded = false;
106  double deltaRLoc = reco::deltaR(vetoDirection, *jetCI);
107  if (deltaRLoc < theDR_Veto) {
108  isExcluded = true;
109  }
110  for (; !isExcluded && crossedCI != mInfo.crossedTowerIds.end(); ++crossedCI) {
111  if (crossedCI->rawId() == (*jetTowCI)->id().rawId()) {
112  isExcluded = true;
113  }
114  }
115  if (isExcluded)
116  sumEtExcluded += (*jetTowCI)->et();
117  }
118  if (theExcludeMuonVeto) {
119  if (jetCI->et() - sumEtExcluded < theThreshold)
120  continue;
121  }
122 
123  double depositEt = jetCI->et();
124  if (theExcludeMuonVeto)
125  depositEt = depositEt - sumEtExcluded;
126 
127  reco::isodeposit::Direction jetDir(jetCI->eta(), jetCI->phi());
128  depJet.addDeposit(jetDir, depositEt);
129  }
130 
131  std::vector<const CaloTower*>::const_iterator crossedCI = mInfo.crossedTowers.begin();
132  double muSumEt = 0;
133  for (; crossedCI != mInfo.crossedTowers.end(); ++crossedCI) {
134  muSumEt += (*crossedCI)->et();
135  }
136  depJet.addCandEnergy(muSumEt);
137 
138  return depJet;
139 }
PDWG_BPHSkim_cff.muons
muons
Definition: PDWG_BPHSkim_cff.py:47
Handle.h
electrons_cff.bool
bool
Definition: electrons_cff.py:366
muonisolation::JetExtractor::theDR_Max
double theDR_Max
Definition: JetExtractor.h:54
MessageLogger.h
ESHandle.h
muon
Definition: MuonCocktails.h:17
TrackDetectorAssociator.h
edm
HLT enums.
Definition: AlignableModifier.h:19
TrackDetMatchInfo::crossedTowers
std::vector< const CaloTower * > crossedTowers
Definition: TrackDetMatchInfo.h:62
HLT_FULL_cff.thePropagatorName
thePropagatorName
Definition: HLT_FULL_cff.py:113796
TrackDetMatchInfo::trkGlobPosAtHcal
math::XYZPoint trkGlobPosAtHcal
Definition: TrackDetMatchInfo.h:39
reco::IsoDeposit::Veto
Definition: IsoDeposit.h:59
reco
fixed size matrix
Definition: AlignmentAlgorithmBase.h:45
TransientTrack.h
muonisolation::JetExtractor::theDR_Veto
double theDR_Veto
Definition: JetExtractor.h:53
muonisolation::JetExtractor::theThreshold
double theThreshold
Definition: JetExtractor.h:52
edm::Handle
Definition: AssociativeIterator.h:50
reco::TransientTrack::initialFreeState
FreeTrajectoryState initialFreeState() const
Definition: TransientTrack.h:84
muonisolation::JetExtractor::fillVetos
void fillVetos(const edm::Event &ev, const edm::EventSetup &evSetup, const reco::TrackCollection &tracks) override
Definition: JetExtractor.cc:60
TrackDetMatchInfo::crossedTowerIds
std::vector< DetId > crossedTowerIds
Definition: TrackDetMatchInfo.h:69
MuonServiceProxy_cff.MuonServiceProxy
MuonServiceProxy
Definition: MuonServiceProxy_cff.py:14
IdealMagneticFieldRecord
Definition: IdealMagneticFieldRecord.h:11
edm::EventSetup::get
T get() const
Definition: EventSetup.h:87
muonisolation::JetExtractor::theExcludeMuonVeto
bool theExcludeMuonVeto
Definition: JetExtractor.h:57
reco::Track
Definition: Track.h:27
IdealMagneticFieldRecord.h
edm::ESHandle< MagneticField >
JetExtractor.h
TrackAssociatorParameters::loadParameters
void loadParameters(const edm::ParameterSet &, edm::ConsumesCollector &)
Definition: TrackAssociatorParameters.cc:18
TrackDetectorAssociator::setPropagator
void setPropagator(const Propagator *)
use a user configured propagator
Definition: TrackDetectorAssociator.cc:76
AlCaHLTBitMon_QueryRunRegistry.string
string
Definition: AlCaHLTBitMon_QueryRunRegistry.py:256
EcalSubdetector.h
muonisolation::JetExtractor::theJetCollectionToken
edm::EDGetTokenT< reco::CaloJetCollection > theJetCollectionToken
Definition: JetExtractor.h:47
edm::ParameterSet
Definition: ParameterSet.h:47
deltaR.h
TrackDetectorAssociator
Definition: TrackDetectorAssociator.h:44
HLT_FULL_cff.TrackAssociatorParameters
TrackAssociatorParameters
Definition: HLT_FULL_cff.py:11481
reco::CaloJetCollection
std::vector< CaloJet > CaloJetCollection
collection of CaloJet objects
Definition: CaloJetCollection.h:15
IdealGeometryRecord.h
MagneticField.h
edm::EventSetup
Definition: EventSetup.h:58
HcalSubdetector.h
muonisolation::JetExtractor::~JetExtractor
~JetExtractor() override
Definition: JetExtractor.cc:51
get
#define get
muonisolation
Definition: CandViewExtractor.h:16
CaloTowerCollection.h
muonisolation::JetExtractor::deposit
reco::IsoDeposit deposit(const edm::Event &ev, const edm::EventSetup &evSetup, const reco::Track &track) const override
Definition: JetExtractor.cc:66
muonisolation::JetExtractor::thePropagatorName
std::string thePropagatorName
Definition: JetExtractor.h:49
TrackDetMatchInfo
Definition: TrackDetMatchInfo.h:13
std
Definition: JetResolutionObject.h:76
muonisolation::JetExtractor::theService
MuonServiceProxy * theService
the event setup proxy, it takes care the services update
Definition: JetExtractor.h:60
reco::TransientTrack
Definition: TransientTrack.h:19
FreeTrajectoryState
Definition: FreeTrajectoryState.h:27
Calorimetry_cff.bField
bField
Definition: Calorimetry_cff.py:284
muonisolation::JetExtractor::theAssociator
TrackDetectorAssociator * theAssociator
Definition: JetExtractor.h:63
reco::isodeposit::Direction
Definition: IsoDepositDirection.h:19
TrackingComponentsRecord.h
CaloGeometry.h
MuonServiceProxy.h
reco::deltaR
constexpr auto deltaR(const T1 &t1, const T2 &t2) -> decltype(t1.eta())
Definition: deltaR.h:30
reco::IsoDeposit
Definition: IsoDeposit.h:49
edm::ParameterSet::getParameter
T getParameter(std::string const &) const
Definition: ParameterSet.h:303
TrackDetectorAssociator::associate
TrackDetMatchInfo associate(const edm::Event &, const edm::EventSetup &, const FreeTrajectoryState &, const AssociatorParameters &)
Definition: TrackDetectorAssociator.cc:110
ParameterSet.h
muonisolation::JetExtractor::theAssociatorParameters
TrackAssociatorParameters * theAssociatorParameters
Definition: JetExtractor.h:62
event
Definition: event.py:1
edm::Event
Definition: Event.h:73
TrackAssociatorParameters.h
edm::InputTag
Definition: InputTag.h:15
reco::TrackCollection
std::vector< Track > TrackCollection
collection of Tracks
Definition: TrackFwd.h:14
edm::ConsumesCollector
Definition: ConsumesCollector.h:45