CMS 3D CMS Logo

Public Member Functions | Private Member Functions | Private Attributes

ClusterMultiplicityFilter Class Reference

#include <ClusterMultiplicityFilter.h>

Inheritance diagram for ClusterMultiplicityFilter:
edm::EDFilter edm::ProducerBase edm::ProductRegistryHelper

List of all members.

Public Member Functions

 ClusterMultiplicityFilter (const edm::ParameterSet &)
 ~ClusterMultiplicityFilter ()

Private Member Functions

virtual void beginJob ()
virtual void endJob ()
virtual bool filter (edm::Event &, const edm::EventSetup &)

Private Attributes

std::string clusterCollectionLabel_
unsigned int maxNumberOfClusters_

Detailed Description

Definition at line 12 of file ClusterMultiplicityFilter.h.


Constructor & Destructor Documentation

ClusterMultiplicityFilter::ClusterMultiplicityFilter ( const edm::ParameterSet iConfig) [explicit]

Definition at line 28 of file ClusterMultiplicityFilter.cc.

References clusterCollectionLabel_, edm::ParameterSet::getUntrackedParameter(), and maxNumberOfClusters_.

{
  maxNumberOfClusters_    = iConfig.getUntrackedParameter<unsigned int>("MaxNumberOfClusters");
  clusterCollectionLabel_ = iConfig.getUntrackedParameter<std::string>("ClusterCollectionLabel");
}
ClusterMultiplicityFilter::~ClusterMultiplicityFilter ( )

Definition at line 35 of file ClusterMultiplicityFilter.cc.

                                                      {
}

Member Function Documentation

void ClusterMultiplicityFilter::beginJob ( void  ) [private, virtual]

Reimplemented from edm::EDFilter.

Definition at line 72 of file ClusterMultiplicityFilter.cc.

                                         {
}
void ClusterMultiplicityFilter::endJob ( void  ) [private, virtual]

Reimplemented from edm::EDFilter.

Definition at line 77 of file ClusterMultiplicityFilter.cc.

                                       {
}
bool ClusterMultiplicityFilter::filter ( edm::Event iEvent,
const edm::EventSetup iSetup 
) [private, virtual]

Implements edm::EDFilter.

Definition at line 40 of file ClusterMultiplicityFilter.cc.

References edm::DetSetVector< T >::begin(), clusterCollectionLabel_, edm::DetSetVector< T >::end(), Exception, edm::Event::getByLabel(), collect_tpl::input, edm::HandleBase::isValid(), maxNumberOfClusters_, edm::Handle< T >::product(), query::result, and edm::DetSetVector< T >::size().

                                                                                    {

  bool result = true;

  const edm::DetSetVector<SiStripCluster> *clusters = 0;
  edm::Handle<edm::DetSetVector<SiStripCluster> > clusterHandle;
  iEvent.getByLabel(clusterCollectionLabel_,clusterHandle);
  if( !clusterHandle.isValid() ) {
    throw cms::Exception("CorruptData")
      << "ClusterMultiplicityFilter requires collection <edm::DetSetVector<SiStripCluster> with label " << clusterCollectionLabel_ << std::endl;
  }

  clusters = clusterHandle.product();
  const edm::DetSetVector<SiStripCluster>& input = *clusters;

  unsigned int totalClusters = 0;

  //loop over detectors
  for (edm::DetSetVector<SiStripCluster>::const_iterator DSViter=input.begin(); DSViter!=input.end();DSViter++ ) {
    totalClusters+=DSViter->data.size();
  }
  
  
  if (totalClusters>maxNumberOfClusters_) {
    edm::LogInfo("ClusterMultiplicityFilter") << "Total number of clusters: " << totalClusters << " ==> exceeds allowed maximum of " << maxNumberOfClusters_ << " clusters";
    result = false;
  }
  
  return result;
}

Member Data Documentation

Definition at line 23 of file ClusterMultiplicityFilter.h.

Referenced by ClusterMultiplicityFilter(), and filter().

Definition at line 22 of file ClusterMultiplicityFilter.h.

Referenced by ClusterMultiplicityFilter(), and filter().