1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
|
// -*- C++ -*-
//
// Package: EcalSkim
// Class: EcalSkim
//
//class EcalSkim EcalSkim.cc
//
// Original Author: Serena OGGERO
// Created: We May 14 10:10:52 CEST 2008
// Modified: Toyoko ORIMOTO
#include <memory>
#include <vector>
#include <map>
#include <set>
// user include files
#include "DPGAnalysis/Skims/interface/EcalSkim.h"
#include "FWCore/Utilities/interface/InputTag.h"
#include "FWCore/Framework/interface/Frameworkfwd.h"
#include "FWCore/Framework/interface/Event.h"
#include "FWCore/Framework/interface/MakerMacros.h"
#include "FWCore/ParameterSet/interface/ParameterSet.h"
#include "FWCore/Framework/interface/ESHandle.h"
#include "FWCore/MessageLogger/interface/MessageLogger.h"
#include "Geometry/CaloTopology/interface/CaloTopology.h"
#include "Geometry/Records/interface/CaloTopologyRecord.h"
#include "DataFormats/EgammaReco/interface/SuperCluster.h"
#include "DataFormats/EgammaReco/interface/SuperClusterFwd.h"
using namespace edm;
using namespace std;
using namespace reco;
EcalSkim::EcalSkim(const edm::ParameterSet& iConfig) {
BarrelClusterCollection = iConfig.getParameter<edm::InputTag>("barrelClusterCollection");
EndcapClusterCollection = iConfig.getParameter<edm::InputTag>("endcapClusterCollection");
EnergyCutEB = iConfig.getUntrackedParameter<double>("energyCutEB");
EnergyCutEE = iConfig.getUntrackedParameter<double>("energyCutEE");
}
EcalSkim::~EcalSkim() {}
bool EcalSkim::filter(edm::Event& iEvent, const edm::EventSetup& iSetup) {
int ievt = iEvent.id().event();
edm::Handle<reco::SuperClusterCollection> bccHandle; // barrel
edm::Handle<reco::SuperClusterCollection> eccHandle; // endcap
iEvent.getByLabel("cosmicSuperClusters", "CosmicBarrelSuperClusters", bccHandle);
if (!(bccHandle.isValid())) {
LogWarning("EcalSkim") << BarrelClusterCollection << " not available in event " << ievt;
return false;
} else {
// edm::LogVerbatim("") << "I took the right barrel collection" ;
}
iEvent.getByLabel("cosmicSuperClusters", "CosmicEndcapSuperClusters", eccHandle);
if (!(eccHandle.isValid())) {
LogWarning("EcalSkim") << EndcapClusterCollection << " not available";
//return false;
} else {
//edm::LogVerbatim("") << "I took the right endcap collection " ;
}
bool accepted = false;
bool acceptedEB = false;
bool acceptedEE = false;
// barrel
const reco::SuperClusterCollection* clusterCollectionEB = bccHandle.product();
for (reco::SuperClusterCollection::const_iterator clus = clusterCollectionEB->begin();
clus != clusterCollectionEB->end();
++clus) {
if (clus->energy() >= EnergyCutEB) {
acceptedEB = true;
break;
}
}
// endcap
const reco::SuperClusterCollection* clusterCollectionEE = eccHandle.product();
for (reco::SuperClusterCollection::const_iterator clus = clusterCollectionEE->begin();
clus != clusterCollectionEE->end();
++clus) {
if (clus->energy() >= EnergyCutEE) {
acceptedEE = true;
break;
}
}
// if there is at least one high energy cluster in EB OR EE, accept
if (acceptedEB || acceptedEE)
accepted = true;
return accepted;
}
//define this as a plug-in
DEFINE_FWK_MODULE(EcalSkim);
|