CMS 3D CMS Logo

PFTrackProducerFromL1Tracks.cc
Go to the documentation of this file.
6 
11 
15 
16 namespace l1tpf {
18  public:
21 
22  private:
26  int nParam_;
27  float fBz_;
29 
30  void produce(edm::Event &, const edm::EventSetup &) override;
31 
32  }; // class
33 } // namespace l1tpf
34 
36  : TrackTag_(consumes<std::vector<l1t::PFTrack::L1TTTrackType>>(iConfig.getParameter<edm::InputTag>("L1TrackTag"))),
37  BFieldTag_{esConsumes<MagneticField, IdealMagneticFieldRecord>()},
38  nParam_(iConfig.getParameter<unsigned int>("nParam")),
39  resolCalo_(iConfig.getParameter<edm::ParameterSet>("resolCalo")),
40  resolTrk_(iConfig.getParameter<edm::ParameterSet>("resolTrack")) {
41  produces<l1t::PFTrackCollection>();
42 }
43 
45  if (BFieldWatcher_.check(iSetup)) {
46  fBz_ = iSetup.getData(BFieldTag_).inTesla(GlobalPoint(0, 0, 0)).z();
47  }
48 
49  std::unique_ptr<l1t::PFTrackCollection> out(new l1t::PFTrackCollection());
50 
51  // https://github.com/skinnari/cmssw/blob/80c19f1b721325c3a02ee0482f72fb974a4c3bf7/L1Trigger/TrackFindingTracklet/test/L1TrackNtupleMaker.cc
53  iEvent.getByToken(TrackTag_, htracks);
54  const auto &tracks = *htracks;
55 
56  for (unsigned int i = 0, n = tracks.size(); i < n; ++i) {
57  const auto &tk = tracks[i];
58 
59  float pt = tk.momentum().perp();
60  float eta = tk.momentum().eta();
61  float phi = tk.momentum().phi();
62  float z0 = tk.POCA().z(); //cm
63  int charge = tk.rInv() > 0 ? +1 : -1;
64 
65  reco::Candidate::PolarLorentzVector p4p(pt, eta, phi, 0.137); // pion mass
66  reco::Particle::LorentzVector p4(p4p.X(), p4p.Y(), p4p.Z(), p4p.E());
67  reco::Particle::Point vtx(0., 0., z0);
68 
69  auto caloetaphi = l1tpf::propagateToCalo(p4, math::XYZTLorentzVector(0., 0., z0, 0.), charge, fBz_);
70 
71  float trkErr = resolTrk_(pt, std::abs(eta));
72  float caloErr = resolCalo_(pt, std::abs(eta));
73  int quality = 1;
74  out->emplace_back(charge,
75  p4,
76  vtx,
77  l1t::PFTrack::TrackRef(htracks, i),
78  nParam_,
79  caloetaphi.first,
80  caloetaphi.second,
81  trkErr,
82  caloErr,
83  quality);
84  }
85  iEvent.put(std::move(out));
86 }
l1tpf::PFTrackProducerFromL1Tracks::TrackTag_
edm::EDGetTokenT< std::vector< l1t::PFTrack::L1TTTrackType > > TrackTag_
Definition: PFTrackProducerFromL1Tracks.cc:23
l1tpf::PFTrackProducerFromL1Tracks::fBz_
float fBz_
Definition: PFTrackProducerFromL1Tracks.cc:27
ParametricResolution.h
PDWG_EXOHSCP_cff.tracks
tracks
Definition: PDWG_EXOHSCP_cff.py:28
mps_fire.i
i
Definition: mps_fire.py:355
dqmiodumpmetadata.n
n
Definition: dqmiodumpmetadata.py:28
edm::ESWatcher< IdealMagneticFieldRecord >
l1tpf::PFTrackProducerFromL1Tracks
Definition: PFTrackProducerFromL1Tracks.cc:17
ESHandle.h
DiDispStaMuonMonitor_cfi.pt
pt
Definition: DiDispStaMuonMonitor_cfi.py:39
edm::EDGetTokenT
Definition: EDGetToken.h:33
edm
HLT enums.
Definition: AlignableModifier.h:19
reco::Candidate::PolarLorentzVector
math::PtEtaPhiMLorentzVector PolarLorentzVector
Lorentz vector.
Definition: Candidate.h:38
EDProducer.h
l1t::L1TTTrackType
TTTrack< Ref_Phase2TrackerDigi_ > L1TTTrackType
Definition: L1CaloTkTau.h:31
edm::Handle
Definition: AssociativeIterator.h:50
reco::Particle::LorentzVector
math::XYZTLorentzVector LorentzVector
Lorentz vector.
Definition: Particle.h:21
edm::Ref< std::vector< L1TTTrackType > >
l1tpf::PFTrackProducerFromL1Tracks::PFTrackProducerFromL1Tracks
PFTrackProducerFromL1Tracks(const edm::ParameterSet &)
Definition: PFTrackProducerFromL1Tracks.cc:35
MakerMacros.h
l1tpf::ParametricResolution
Definition: ParametricResolution.h:10
DEFINE_FWK_MODULE
#define DEFINE_FWK_MODULE(type)
Definition: MakerMacros.h:16
PVValHelper::eta
Definition: PVValidationHelpers.h:69
L1TPFUtils.h
IdealMagneticFieldRecord.h
l1tpf::PFTrackProducerFromL1Tracks::BFieldWatcher_
edm::ESWatcher< IdealMagneticFieldRecord > BFieldWatcher_
Definition: PFTrackProducerFromL1Tracks.cc:24
HLTMuonOfflineAnalyzer_cfi.z0
z0
Definition: HLTMuonOfflineAnalyzer_cfi.py:98
GlobalPoint
Global3DPoint GlobalPoint
Definition: GlobalPoint.h:10
l1t::PFTrackCollection
std::vector< l1t::PFTrack > PFTrackCollection
Definition: PFTrack.h:84
badGlobalMuonTaggersAOD_cff.vtx
vtx
Definition: badGlobalMuonTaggersAOD_cff.py:5
l1tpf::PFTrackProducerFromL1Tracks::BFieldTag_
edm::ESGetToken< MagneticField, IdealMagneticFieldRecord > BFieldTag_
Definition: PFTrackProducerFromL1Tracks.cc:25
l1tpf::PFTrackProducerFromL1Tracks::resolTrk_
l1tpf::ParametricResolution resolTrk_
Definition: PFTrackProducerFromL1Tracks.cc:28
ALCARECOTkAlJpsiMuMu_cff.charge
charge
Definition: ALCARECOTkAlJpsiMuMu_cff.py:47
HLT_2018_cff.InputTag
InputTag
Definition: HLT_2018_cff.py:79016
edm::ParameterSet
Definition: ParameterSet.h:36
Event.h
l1t
delete x;
Definition: CaloConfig.h:22
iEvent
int iEvent
Definition: GenABIO.cc:224
PFTrack.h
p4
double p4[4]
Definition: TauolaWrapper.h:92
edm::stream::EDProducer
Definition: EDProducer.h:38
MagneticField.h
edm::EventSetup
Definition: EventSetup.h:57
edm::ESGetToken< MagneticField, IdealMagneticFieldRecord >
edm::EventSetup::getData
bool getData(T &iHolder) const
Definition: EventSetup.h:113
eostools.move
def move(src, dest)
Definition: eostools.py:511
std
Definition: JetResolutionObject.h:76
l1tpf::PFTrackProducerFromL1Tracks::resolCalo_
l1tpf::ParametricResolution resolCalo_
Definition: PFTrackProducerFromL1Tracks.cc:28
qcdUeDQM_cfi.quality
quality
Definition: qcdUeDQM_cfi.py:31
Frameworkfwd.h
ESWatcher.h
math::XYZTLorentzVector
XYZTLorentzVectorD XYZTLorentzVector
Lorentz vector with cylindrical internal representation using pseudorapidity.
Definition: LorentzVector.h:29
l1tpf::propagateToCalo
std::pair< float, float > propagateToCalo(const math::XYZTLorentzVector &iMom, const math::XYZTLorentzVector &iVtx, double iCharge, double iBField)
Definition: L1TPFUtils.cc:7
l1tpf
Definition: HGC3DClusterEgID.h:20
l1tpf::PFTrackProducerFromL1Tracks::nParam_
int nParam_
Definition: PFTrackProducerFromL1Tracks.cc:26
l1tpf::PFTrackProducerFromL1Tracks::~PFTrackProducerFromL1Tracks
~PFTrackProducerFromL1Tracks() override
Definition: PFTrackProducerFromL1Tracks.cc:20
reco::Particle::Point
math::XYZPoint Point
point in the space
Definition: Particle.h:25
MillePedeFileConverter_cfg.out
out
Definition: MillePedeFileConverter_cfg.py:31
funct::abs
Abs< T >::type abs(const T &t)
Definition: Abs.h:22
ParameterSet.h
edm::Event
Definition: Event.h:73
l1tpf::PFTrackProducerFromL1Tracks::produce
void produce(edm::Event &, const edm::EventSetup &) override
Definition: PFTrackProducerFromL1Tracks.cc:44