Line Code
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
// -*- C++ -*-
//
// Package:     SiStripChannelChargeFilter
// Class  :     TrackMTCCFilter
//
//
// Original Author:  dkcira

#include "EventFilter/SiStripChannelChargeFilter/interface/TrackMTCCFilter.h"
#include "DataFormats/Common/interface/Handle.h"
#include "FWCore/MessageLogger/interface/MessageLogger.h"
#include "DataFormats/TrackReco/interface/Track.h"
#include "DataFormats/TrackReco/interface/TrackFwd.h"

namespace cms {

  TrackMTCCFilter::TrackMTCCFilter(const edm::ParameterSet& ps) {
    TrackProducer = ps.getParameter<std::string>("TrackProducer");
    TrackLabel = ps.getParameter<std::string>("TrackLabel");
    MinNrOfTracks = ps.getParameter<int>("MinNrOfTracks");
    produces<int>();
    edm::LogInfo("TrackMTCCFilter") << "TrackProducer = " << TrackProducer;
    edm::LogInfo("TrackMTCCFilter") << "TrackLabel = " << TrackLabel;
    edm::LogInfo("TrackMTCCFilter") << "MinNrOfTracks = " << MinNrOfTracks;
  }

  bool TrackMTCCFilter::filter(edm::Event& e, edm::EventSetup const& c) {
    bool decision = false;  // default value, only accept if set true in this loop

    //get SiStripCluster
    edm::Handle<reco::TrackCollection> trackCollection;
    e.getByLabel(TrackProducer, TrackLabel, trackCollection);

    unsigned int nroftracks = trackCollection->size();
    //  edm::LogInfo("TrackMTCCFilter")<<"trackCollection->size()="<<nroftracks;
    if (nroftracks >= MinNrOfTracks)
      decision = true;

    e.put(std::make_unique<int>(decision));
    return decision;
  }

}  // namespace cms