CMS 3D CMS Logo

PFClusterProducerFromHGC3DClusters.cc
Go to the documentation of this file.
6 
13 
14 namespace l1tpf {
16  public:
19 
20  private:
22  bool emOnly_;
23  double etCut_;
26  bool hasEmId_;
29 
30  void produce(edm::Event &, const edm::EventSetup &) override;
31 
32  }; // class
33 } // namespace l1tpf
34 
36  : src_(consumes<l1t::HGCalMulticlusterBxCollection>(iConfig.getParameter<edm::InputTag>("src"))),
37  emOnly_(iConfig.getParameter<bool>("emOnly")),
38  etCut_(iConfig.getParameter<double>("etMin")),
39  preEmId_(iConfig.getParameter<std::string>("preEmId")),
40  emVsPionID_(iConfig.getParameter<edm::ParameterSet>("emVsPionID")),
41  emVsPUID_(iConfig.getParameter<edm::ParameterSet>("emVsPUID")),
42  hasEmId_((iConfig.existsAs<std::string>("preEmId") && !iConfig.getParameter<std::string>("preEmId").empty()) ||
43  !emVsPionID_.method().empty()),
44  corrector_(iConfig.getParameter<std::string>("corrector"),
45  emOnly_ || iConfig.getParameter<std::string>("corrector").empty()
46  ? -1
47  : iConfig.getParameter<double>("correctorEmfMax")),
48  resol_(iConfig.getParameter<edm::ParameterSet>("resol")) {
49  if (!emVsPionID_.method().empty()) {
51  }
52  if (!emVsPUID_.method().empty()) {
54  }
55 
56  produces<l1t::PFClusterCollection>();
57  if (hasEmId_) {
58  produces<l1t::PFClusterCollection>("em");
59  produces<l1t::PFClusterCollection>("had");
60  }
61 }
62 
64  auto out = std::make_unique<l1t::PFClusterCollection>();
65  std::unique_ptr<l1t::PFClusterCollection> outEm, outHad;
66  if (hasEmId_) {
67  outEm.reset(new l1t::PFClusterCollection());
68  outHad.reset(new l1t::PFClusterCollection());
69  }
71  iEvent.getByToken(src_, multiclusters);
72 
73  for (auto it = multiclusters->begin(0), ed = multiclusters->end(0); it != ed; ++it) {
74  float pt = it->pt(), hoe = it->hOverE();
75  bool isEM = hasEmId_ ? preEmId_(*it) : emOnly_;
76  if (emOnly_) {
77  if (hoe == -1)
78  continue;
79  pt /= (1 + hoe);
80  hoe = 0;
81  }
82  if (pt <= etCut_)
83  continue;
84 
85  l1t::PFCluster cluster(pt, it->eta(), it->phi(), hoe, /*isEM=*/isEM);
86  if (!emVsPUID_.method().empty()) {
87  if (!emVsPUID_.passID(*it, cluster)) {
88  continue;
89  }
90  }
91  if (!emVsPionID_.method().empty()) {
92  cluster.setIsEM(emVsPionID_.passID(*it, cluster));
93  }
94  if (corrector_.valid())
95  corrector_.correctPt(cluster);
96  cluster.setPtError(resol_(cluster.pt(), std::abs(cluster.eta())));
97 
98  out->push_back(cluster);
99  out->back().addConstituent(edm::Ptr<l1t::L1Candidate>(multiclusters, multiclusters->key(it)));
100  if (hasEmId_) {
101  (isEM ? outEm : outHad)->push_back(out->back());
102  }
103  }
104 
105  iEvent.put(std::move(out));
106  if (hasEmId_) {
107  iEvent.put(std::move(outEm), "em");
108  iEvent.put(std::move(outHad), "had");
109  }
110 }
l1tpf::PFClusterProducerFromHGC3DClusters::produce
void produce(edm::Event &, const edm::EventSetup &) override
Definition: PFClusterProducerFromHGC3DClusters.cc:63
ParametricResolution.h
electrons_cff.bool
bool
Definition: electrons_cff.py:372
DiDispStaMuonMonitor_cfi.pt
pt
Definition: DiDispStaMuonMonitor_cfi.py:39
l1tpf::HGC3DClusterEgID::prepareTMVA
void prepareTMVA()
Definition: HGC3DClusterEgID.cc:17
l1tpf::PFClusterProducerFromHGC3DClusters::etCut_
double etCut_
Definition: PFClusterProducerFromHGC3DClusters.cc:23
edm::EDGetTokenT
Definition: EDGetToken.h:33
edm
HLT enums.
Definition: AlignableModifier.h:19
AlcaSiPixelAliHarvester0T_cff.method
method
Definition: AlcaSiPixelAliHarvester0T_cff.py:41
l1t::HGCalMulticlusterBxCollection
BXVector< HGCalMulticluster > HGCalMulticlusterBxCollection
Definition: HGCalMulticluster.h:95
l1t::PFCluster::setIsEM
void setIsEM(bool isEM)
Definition: PFCluster.h:60
EDProducer.h
l1tpf::PFClusterProducerFromHGC3DClusters::preEmId_
StringCutObjectSelector< l1t::HGCalMulticluster > preEmId_
Definition: PFClusterProducerFromHGC3DClusters.cc:24
edm::Handle
Definition: AssociativeIterator.h:50
l1tpf::HGC3DClusterEgID::method
std::string method()
Definition: HGC3DClusterEgID.h:29
l1tpf::PFClusterProducerFromHGC3DClusters
Definition: PFClusterProducerFromHGC3DClusters.cc:15
MakerMacros.h
l1tpf::ParametricResolution
Definition: ParametricResolution.h:10
l1tpf::corrector
Definition: corrector.h:15
HGCalMulticluster.h
DEFINE_FWK_MODULE
#define DEFINE_FWK_MODULE(type)
Definition: MakerMacros.h:16
l1tpf::PFClusterProducerFromHGC3DClusters::~PFClusterProducerFromHGC3DClusters
~PFClusterProducerFromHGC3DClusters() override
Definition: PFClusterProducerFromHGC3DClusters.cc:18
l1tpf::PFClusterProducerFromHGC3DClusters::resol_
l1tpf::ParametricResolution resol_
Definition: PFClusterProducerFromHGC3DClusters.cc:28
BXVector::begin
const_iterator begin(int bx) const
l1tpf::PFClusterProducerFromHGC3DClusters::emOnly_
bool emOnly_
Definition: PFClusterProducerFromHGC3DClusters.cc:22
AlCaHLTBitMon_QueryRunRegistry.string
string
Definition: AlCaHLTBitMon_QueryRunRegistry.py:256
l1tpf::PFClusterProducerFromHGC3DClusters::src_
edm::EDGetTokenT< l1t::HGCalMulticlusterBxCollection > src_
Definition: PFClusterProducerFromHGC3DClusters.cc:21
BXVector::end
const_iterator end(int bx) const
HLT_2018_cff.InputTag
InputTag
Definition: HLT_2018_cff.py:79016
edm::ParameterSet
Definition: ParameterSet.h:36
Event.h
ParameterSet
Definition: Functions.h:16
BXVector::key
unsigned int key(const_iterator &iter) const
Definition: BXVector.h:101
l1t
delete x;
Definition: CaloConfig.h:22
l1tpf::PFClusterProducerFromHGC3DClusters::hasEmId_
bool hasEmId_
Definition: PFClusterProducerFromHGC3DClusters.cc:26
iEvent
int iEvent
Definition: GenABIO.cc:224
l1tpf::PFClusterProducerFromHGC3DClusters::PFClusterProducerFromHGC3DClusters
PFClusterProducerFromHGC3DClusters(const edm::ParameterSet &)
Definition: PFClusterProducerFromHGC3DClusters.cc:35
edm::stream::EDProducer
Definition: EDProducer.h:38
edm::EventSetup
Definition: EventSetup.h:57
HGC3DClusterEgID.h
edm::Ptr
Definition: AssociationVector.h:31
electrons_cff.hoe
hoe
Definition: electrons_cff.py:404
PFCluster.h
l1tpf::HGC3DClusterEgID
Definition: HGC3DClusterEgID.h:21
eostools.move
def move(src, dest)
Definition: eostools.py:511
std
Definition: JetResolutionObject.h:76
StringCutObjectSelector.h
Frameworkfwd.h
StringCutObjectSelector< l1t::HGCalMulticluster >
relativeConstraints.empty
bool empty
Definition: relativeConstraints.py:46
l1t::PFCluster
Definition: PFCluster.h:10
l1tpf
Definition: HGC3DClusterEgID.h:20
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::PFClusterProducerFromHGC3DClusters::corrector_
l1tpf::corrector corrector_
Definition: PFClusterProducerFromHGC3DClusters.cc:27
corrector.h
l1t::PFClusterCollection
std::vector< l1t::PFCluster > PFClusterCollection
Definition: PFCluster.h:73
l1tpf::PFClusterProducerFromHGC3DClusters::emVsPionID_
l1tpf::HGC3DClusterEgID emVsPionID_
Definition: PFClusterProducerFromHGC3DClusters.cc:25
l1tpf::PFClusterProducerFromHGC3DClusters::emVsPUID_
l1tpf::HGC3DClusterEgID emVsPUID_
Definition: PFClusterProducerFromHGC3DClusters.cc:25