File indexing completed on 2024-06-22 02:24:05
0001 #include "RecoParticleFlow/PFClusterProducer/test/PFClusterAnalyzer.h"
0002 #include "DataFormats/ParticleFlowReco/interface/PFCluster.h"
0003
0004 #include "FWCore/Framework/interface/ESHandle.h"
0005
0006 #include "FWCore/MessageLogger/interface/MessageLogger.h"
0007 #include "FWCore/Utilities/interface/Exception.h"
0008 #include "FWCore/Framework/interface/EventSetup.h"
0009
0010 using namespace std;
0011 using namespace edm;
0012 using namespace reco;
0013
0014 PFClusterAnalyzer::PFClusterAnalyzer(const edm::ParameterSet& iConfig)
0015 : inputTokenPFClusters_(consumes<reco::PFClusterCollection>(iConfig.getParameter<InputTag>("PFClusters"))),
0016 verbose_(iConfig.getUntrackedParameter<bool>("verbose", false)),
0017 printBlocks_(iConfig.getUntrackedParameter<bool>("printBlocks", false)) {
0018 LogDebug("PFClusterAnalyzer") << " input collection : " << iConfig.getParameter<InputTag>("PFClusters");
0019 }
0020
0021 void PFClusterAnalyzer::beginRun(const edm::Run& run, const edm::EventSetup& es) {}
0022
0023 void PFClusterAnalyzer::analyze(const Event& iEvent, const EventSetup& iSetup) {
0024 LogDebug("PFClusterAnalyzer") << "START event: " << iEvent.id().event() << " in run " << iEvent.id().run() << endl;
0025
0026
0027
0028 Handle<PFClusterCollection> pfClusters;
0029 fetchCandidateCollection(pfClusters, inputTokenPFClusters_, iEvent);
0030
0031
0032
0033 for (unsigned i = 0; i < pfClusters->size(); i++) {
0034 const reco::PFCluster& cluster = (*pfClusters)[i];
0035
0036 if (verbose_) {
0037 cout << "PFCluster " << endl;
0038 cout << cluster << endl;
0039 cout << "CaloCluster " << endl;
0040
0041 const CaloCluster* caloc = dynamic_cast<const CaloCluster*>(&cluster);
0042 assert(caloc);
0043 cout << *caloc << endl;
0044 cout << endl;
0045 }
0046 }
0047
0048 LogDebug("PFClusterAnalyzer") << "STOP event: " << iEvent.id().event() << " in run " << iEvent.id().run() << endl;
0049 }
0050
0051 void PFClusterAnalyzer::fetchCandidateCollection(Handle<reco::PFClusterCollection>& c,
0052 const edm::EDGetTokenT<reco::PFClusterCollection>& token,
0053 const Event& iEvent) const {
0054 c = iEvent.getHandle(token);
0055
0056 if (!c.isValid()) {
0057 ostringstream err;
0058 err << " cannot get PFClusters " << endl;
0059 LogError("PFClusters") << err.str();
0060 throw cms::Exception("MissingProduct", err.str());
0061 }
0062 }
0063
0064 DEFINE_FWK_MODULE(PFClusterAnalyzer);