CMS 3D CMS Logo

List of all members | Public Member Functions | Private Attributes
muonisolation::JetExtractor Class Reference

#include <JetExtractor.h>

Inheritance diagram for muonisolation::JetExtractor:
reco::isodeposit::IsoDepositExtractor

Public Member Functions

reco::IsoDeposit deposit (const edm::Event &ev, const edm::EventSetup &evSetup, const reco::Track &track) const override
 
void fillVetos (const edm::Event &ev, const edm::EventSetup &evSetup, const reco::TrackCollection &tracks) override
 
 JetExtractor ()
 
 JetExtractor (const edm::ParameterSet &par, edm::ConsumesCollector &&iC)
 
 ~JetExtractor () override
 
- Public Member Functions inherited from reco::isodeposit::IsoDepositExtractor
virtual reco::IsoDeposit deposit (const edm::Event &ev, const edm::EventSetup &evSetup, const reco::Candidate &track) const
 
virtual reco::IsoDeposit deposit (const edm::Event &ev, const edm::EventSetup &evSetup, const reco::CandidateBaseRef &track) const
 make single IsoDeposit based on a CandidateBaseRef as input More...
 
virtual reco::IsoDeposit deposit (const edm::Event &ev, const edm::EventSetup &evSetup, const reco::TrackBaseRef &track) const
 make single IsoDeposit based on trackRef as input More...
 
virtual std::vector< reco::IsoDepositdeposits (const edm::Event &ev, const edm::EventSetup &evSetup, const reco::Candidate &track) const
 
virtual std::vector< reco::IsoDepositdeposits (const edm::Event &ev, const edm::EventSetup &evSetup, const reco::CandidateBaseRef &track) const
 
virtual std::vector< reco::IsoDepositdeposits (const edm::Event &ev, const edm::EventSetup &evSetup, const reco::Track &track) const
 
virtual std::vector< reco::IsoDepositdeposits (const edm::Event &ev, const edm::EventSetup &evSetup, const reco::TrackBaseRef &track) const
 
virtual void initEvent (const edm::Event &, const edm::EventSetup &)
 perform some constly initialization More...
 
virtual ~IsoDepositExtractor ()
 Destructor. More...
 

Private Attributes

std::unique_ptr< TrackDetectorAssociatortheAssociator
 
std::unique_ptr< TrackAssociatorParameterstheAssociatorParameters
 
double theDR_Max
 
double theDR_Veto
 
bool theExcludeMuonVeto
 
edm::ESGetToken< MagneticField, IdealMagneticFieldRecordtheFieldToken
 
edm::EDGetTokenT< reco::CaloJetCollectiontheJetCollectionToken
 
bool thePrintTimeReport
 
std::string thePropagatorName
 
std::unique_ptr< MuonServiceProxytheService
 the event setup proxy, it takes care the services update More...
 
double theThreshold
 

Detailed Description

Definition at line 37 of file JetExtractor.h.

Constructor & Destructor Documentation

◆ JetExtractor() [1/2]

JetExtractor::JetExtractor ( )

Definition at line 27 of file JetExtractor.cc.

27 {}

◆ JetExtractor() [2/2]

JetExtractor::JetExtractor ( const edm::ParameterSet par,
edm::ConsumesCollector &&  iC 
)

Definition at line 29 of file JetExtractor.cc.

31  thePropagatorName(par.getParameter<std::string>("PropagatorName")),
33  theThreshold(par.getParameter<double>("Threshold")),
34  theDR_Veto(par.getParameter<double>("DR_Veto")),
35  theDR_Max(par.getParameter<double>("DR_Max")),
36  theExcludeMuonVeto(par.getParameter<bool>("ExcludeMuonVeto")),
37  theService(nullptr),
38  theAssociator(nullptr),
39  thePrintTimeReport(par.getUntrackedParameter<bool>("PrintTimeReport")) {
40  ParameterSet serviceParameters = par.getParameter<ParameterSet>("ServiceParameters");
41  theService = std::make_unique<MuonServiceProxy>(serviceParameters, edm::ConsumesCollector(iC));
42 
43  // theAssociatorParameters = new TrackAssociatorParameters(par.getParameter<edm::ParameterSet>("TrackAssociatorParameters"), iC_);
44  theAssociatorParameters = std::make_unique<TrackAssociatorParameters>();
45  theAssociatorParameters->loadParameters(par.getParameter<edm::ParameterSet>("TrackAssociatorParameters"), iC);
46  theAssociator = std::make_unique<TrackDetectorAssociator>();
47 }

References edm::ParameterSet::getParameter(), theAssociator, theAssociatorParameters, and theService.

◆ ~JetExtractor()

JetExtractor::~JetExtractor ( )
override

Definition at line 49 of file JetExtractor.cc.

49 {}

Member Function Documentation

◆ deposit()

IsoDeposit JetExtractor::deposit ( const edm::Event ev,
const edm::EventSetup evSetup,
const reco::Track track 
) const
overridevirtual

make single IsoDeposit based on track as input purely virtual: have to implement in concrete implementations

Implements reco::isodeposit::IsoDepositExtractor.

Definition at line 57 of file JetExtractor.cc.

57  {
58  theService->update(eventSetup);
59  theAssociator->setPropagator(&*(theService->propagator(thePropagatorName)));
60 
61  typedef IsoDeposit::Veto Veto;
62  IsoDeposit::Direction muonDir(muon.eta(), muon.phi());
63 
64  IsoDeposit depJet(muonDir);
65 
66  auto const& bField = eventSetup.getData(theFieldToken);
67 
69  FreeTrajectoryState iFTS = tMuon.initialFreeState();
70  TrackDetMatchInfo mInfo = theAssociator->associate(event, eventSetup, iFTS, *theAssociatorParameters);
71 
72  reco::isodeposit::Direction vetoDirection(mInfo.trkGlobPosAtHcal.eta(), mInfo.trkGlobPosAtHcal.phi());
73  depJet.setVeto(Veto(vetoDirection, theDR_Veto));
74 
76  event.getByToken(theJetCollectionToken, caloJetsH);
77 
78  //use calo towers
79  CaloJetCollection::const_iterator jetCI = caloJetsH->begin();
80  for (; jetCI != caloJetsH->end(); ++jetCI) {
81  double deltar0 = reco::deltaR(muon, *jetCI);
82  if (deltar0 > theDR_Max)
83  continue;
84  if (jetCI->et() < theThreshold)
85  continue;
86 
87  //should I make a separate config option for this?
88  std::vector<CaloTowerPtr> jetConstituents = jetCI->getCaloConstituents();
89 
90  std::vector<DetId>::const_iterator crossedCI = mInfo.crossedTowerIds.begin();
91  std::vector<CaloTowerPtr>::const_iterator jetTowCI = jetConstituents.begin();
92 
93  double sumEtExcluded = 0;
94  for (; jetTowCI != jetConstituents.end(); ++jetTowCI) {
95  bool isExcluded = false;
96  double deltaRLoc = reco::deltaR(vetoDirection, *jetCI);
97  if (deltaRLoc < theDR_Veto) {
98  isExcluded = true;
99  }
100  for (; !isExcluded && crossedCI != mInfo.crossedTowerIds.end(); ++crossedCI) {
101  if (crossedCI->rawId() == (*jetTowCI)->id().rawId()) {
102  isExcluded = true;
103  }
104  }
105  if (isExcluded)
106  sumEtExcluded += (*jetTowCI)->et();
107  }
108  if (theExcludeMuonVeto) {
109  if (jetCI->et() - sumEtExcluded < theThreshold)
110  continue;
111  }
112 
113  double depositEt = jetCI->et();
114  if (theExcludeMuonVeto)
115  depositEt = depositEt - sumEtExcluded;
116 
117  reco::isodeposit::Direction jetDir(jetCI->eta(), jetCI->phi());
118  depJet.addDeposit(jetDir, depositEt);
119  }
120 
121  std::vector<const CaloTower*>::const_iterator crossedCI = mInfo.crossedTowers.begin();
122  double muSumEt = 0;
123  for (; crossedCI != mInfo.crossedTowers.end(); ++crossedCI) {
124  muSumEt += (*crossedCI)->et();
125  }
126  depJet.addCandEnergy(muSumEt);
127 
128  return depJet;
129 }

References Calorimetry_cff::bField, TrackDetMatchInfo::crossedTowerIds, TrackDetMatchInfo::crossedTowers, reco::deltaR(), edm::EventSetup::getData(), reco::TransientTrack::initialFreeState(), theAssociator, theAssociatorParameters, theDR_Max, theDR_Veto, theExcludeMuonVeto, theFieldToken, theJetCollectionToken, thePropagatorName, theService, theThreshold, and TrackDetMatchInfo::trkGlobPosAtHcal.

◆ fillVetos()

void JetExtractor::fillVetos ( const edm::Event ev,
const edm::EventSetup evSetup,
const reco::TrackCollection tracks 
)
overridevirtual

fill vetoes: to exclude deposits at IsoDeposit creation stage check concrete extractors if it's no-op !

Implements reco::isodeposit::IsoDepositExtractor.

Definition at line 51 of file JetExtractor.cc.

51  {
52  // LogWarning("JetExtractor")
53  // <<"fillVetos does nothing now: IsoDeposit provides enough functionality\n"
54  // <<"to remove a deposit at/around given (eta, phi)";
55 }

Member Data Documentation

◆ theAssociator

std::unique_ptr<TrackDetectorAssociator> muonisolation::JetExtractor::theAssociator
private

Definition at line 68 of file JetExtractor.h.

Referenced by deposit(), and JetExtractor().

◆ theAssociatorParameters

std::unique_ptr<TrackAssociatorParameters> muonisolation::JetExtractor::theAssociatorParameters
private

Definition at line 67 of file JetExtractor.h.

Referenced by deposit(), and JetExtractor().

◆ theDR_Max

double muonisolation::JetExtractor::theDR_Max
private

Definition at line 59 of file JetExtractor.h.

Referenced by deposit().

◆ theDR_Veto

double muonisolation::JetExtractor::theDR_Veto
private

Definition at line 58 of file JetExtractor.h.

Referenced by deposit().

◆ theExcludeMuonVeto

bool muonisolation::JetExtractor::theExcludeMuonVeto
private

Definition at line 62 of file JetExtractor.h.

Referenced by deposit().

◆ theFieldToken

edm::ESGetToken<MagneticField, IdealMagneticFieldRecord> muonisolation::JetExtractor::theFieldToken
private

Definition at line 54 of file JetExtractor.h.

Referenced by deposit().

◆ theJetCollectionToken

edm::EDGetTokenT<reco::CaloJetCollection> muonisolation::JetExtractor::theJetCollectionToken
private

Definition at line 50 of file JetExtractor.h.

Referenced by deposit().

◆ thePrintTimeReport

bool muonisolation::JetExtractor::thePrintTimeReport
private

Definition at line 70 of file JetExtractor.h.

◆ thePropagatorName

std::string muonisolation::JetExtractor::thePropagatorName
private

Definition at line 52 of file JetExtractor.h.

Referenced by deposit().

◆ theService

std::unique_ptr<MuonServiceProxy> muonisolation::JetExtractor::theService
private

the event setup proxy, it takes care the services update

Definition at line 65 of file JetExtractor.h.

Referenced by deposit(), and JetExtractor().

◆ theThreshold

double muonisolation::JetExtractor::theThreshold
private

Definition at line 57 of file JetExtractor.h.

Referenced by deposit().

muonisolation::JetExtractor::theDR_Max
double theDR_Max
Definition: JetExtractor.h:59
muonisolation::JetExtractor::theAssociatorParameters
std::unique_ptr< TrackAssociatorParameters > theAssociatorParameters
Definition: JetExtractor.h:67
muon
Definition: MuonCocktails.h:17
TrackDetMatchInfo::crossedTowers
std::vector< const CaloTower * > crossedTowers
Definition: TrackDetMatchInfo.h:62
TrackDetMatchInfo::trkGlobPosAtHcal
math::XYZPoint trkGlobPosAtHcal
Definition: TrackDetMatchInfo.h:39
muonisolation::JetExtractor::theFieldToken
edm::ESGetToken< MagneticField, IdealMagneticFieldRecord > theFieldToken
Definition: JetExtractor.h:54
reco::IsoDeposit::Veto
Definition: IsoDeposit.h:59
muonisolation::JetExtractor::theService
std::unique_ptr< MuonServiceProxy > theService
the event setup proxy, it takes care the services update
Definition: JetExtractor.h:65
edm::ParameterSet::getUntrackedParameter
T getUntrackedParameter(std::string const &, T const &) const
muonisolation::JetExtractor::theDR_Veto
double theDR_Veto
Definition: JetExtractor.h:58
muonisolation::JetExtractor::theThreshold
double theThreshold
Definition: JetExtractor.h:57
edm::ConsumesCollector::esConsumes
auto esConsumes()
Definition: ConsumesCollector.h:97
edm::Handle
Definition: AssociativeIterator.h:50
muonisolation::JetExtractor::theAssociator
std::unique_ptr< TrackDetectorAssociator > theAssociator
Definition: JetExtractor.h:68
TrackDetMatchInfo::crossedTowerIds
std::vector< DetId > crossedTowerIds
Definition: TrackDetMatchInfo.h:69
muonisolation::JetExtractor::theExcludeMuonVeto
bool theExcludeMuonVeto
Definition: JetExtractor.h:62
edm::ConsumesCollector::consumes
EDGetTokenT< ProductType > consumes(edm::InputTag const &tag)
Definition: ConsumesCollector.h:55
muonisolation::JetExtractor::theJetCollectionToken
edm::EDGetTokenT< reco::CaloJetCollection > theJetCollectionToken
Definition: JetExtractor.h:50
edm::ParameterSet
Definition: ParameterSet.h:47
muonisolation::JetExtractor::thePrintTimeReport
bool thePrintTimeReport
Definition: JetExtractor.h:70
reco::CaloJetCollection
std::vector< CaloJet > CaloJetCollection
collection of CaloJet objects
Definition: CaloJetCollection.h:15
AlCaHLTBitMon_QueryRunRegistry.string
string string
Definition: AlCaHLTBitMon_QueryRunRegistry.py:256
muonisolation::JetExtractor::thePropagatorName
std::string thePropagatorName
Definition: JetExtractor.h:52
TrackDetMatchInfo
Definition: TrackDetMatchInfo.h:13
reco::TransientTrack
Definition: TransientTrack.h:19
FreeTrajectoryState
Definition: FreeTrajectoryState.h:27
Calorimetry_cff.bField
bField
Definition: Calorimetry_cff.py:284
reco::isodeposit::Direction
Definition: IsoDepositDirection.h:19
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
event
Definition: event.py:1
edm::InputTag
Definition: InputTag.h:15
edm::ConsumesCollector
Definition: ConsumesCollector.h:45