CMS 3D CMS Logo

Public Member Functions | Private Attributes

PFECALSuperClusterProducer Class Reference

#include <PFECALSuperClusterProducer.h>

Inheritance diagram for PFECALSuperClusterProducer:
edm::EDProducer edm::ProducerBase edm::EDConsumerBase edm::ProductRegistryHelper

List of all members.

Public Member Functions

 PFECALSuperClusterProducer (const edm::ParameterSet &)
virtual void produce (edm::Event &, const edm::EventSetup &)
 ~PFECALSuperClusterProducer ()

Private Attributes

PFECALSuperClusterAlgo::clustering_type _theclusteringtype
edm::InputTag inputTagPFClusters_
edm::InputTag inputTagPFClustersES_
std::string PFBasicClusterCollectionBarrel_
std::string PFBasicClusterCollectionEndcap_
std::string PFBasicClusterCollectionPreshower_
std::string PFSuperClusterCollectionBarrel_
std::string PFSuperClusterCollectionEndcap_
std::string PFSuperClusterCollectionEndcapWithPreshower_
PFECALSuperClusterAlgo superClusterAlgo_
 clustering algorithm
std::shared_ptr
< PFEnergyCalibration
thePFEnergyCalibration_
bool verbose_
 verbose ?

Detailed Description

Author:
Nicolas Chanon Additional authors for Mustache: Y. Gershtein, R. Patel, L. Gray
Date:
July 2012

Definition at line 34 of file PFECALSuperClusterProducer.h.


Constructor & Destructor Documentation

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

Definition at line 26 of file PFECALSuperClusterProducer.cc.

References Exception, edm::ParameterSet::getParameter(), edm::ParameterSet::getUntrackedParameter(), PFECALSuperClusterAlgo::kBOX, PFECALSuperClusterAlgo::kMustache, and AlCaHLTBitMon_QueryRunRegistry::string.

{
    
  verbose_ = 
    iConfig.getUntrackedParameter<bool>("verbose",false);

  std::string _typename = iConfig.getParameter<std::string>("ClusteringType");
  if( _typename == ClusterType__BOX ) {
    _theclusteringtype = PFECALSuperClusterAlgo::kBOX;
  } else if ( _typename == ClusterType__Mustache ) {
    _theclusteringtype = PFECALSuperClusterAlgo::kMustache;
  } else {
    throw cms::Exception("InvalidClusteringType") 
      << "You have not chosen a valid clustering type," 
      << " please choose from \"Box\" or \"Mustache\"!";
  }
  

  // parameters for clustering
  
  bool useDynamicDPhi = iConfig.getParameter<bool>("useDynamicDPhiWindow");

  double threshPFClusterSeedBarrel = iConfig.getParameter<double>("thresh_PFClusterSeedBarrel");
  double threshPFClusterBarrel = iConfig.getParameter<double>("thresh_PFClusterBarrel");

  double threshPFClusterSeedEndcap = iConfig.getParameter<double>("thresh_PFClusterSeedEndcap");
  double threshPFClusterEndcap = iConfig.getParameter<double>("thresh_PFClusterEndcap");
  
  double phiwidthSuperClusterBarrel = iConfig.getParameter<double>("phiwidth_SuperClusterBarrel");
  double etawidthSuperClusterBarrel = iConfig.getParameter<double>("etawidth_SuperClusterBarrel");

  double phiwidthSuperClusterEndcap = iConfig.getParameter<double>("phiwidth_SuperClusterEndcap");
  double etawidthSuperClusterEndcap = iConfig.getParameter<double>("etawidth_SuperClusterEndcap");

  double threshPFClusterES = iConfig.getParameter<double>("thresh_PFClusterES");

  //double threshPFClusterMustacheOutBarrel = iConfig.getParameter<double>("thresh_PFClusterMustacheOutBarrel");
  //double threshPFClusterMustacheOutEndcap = iConfig.getParameter<double>("thresh_PFClusterMustacheOutEndcap");

  double doSatelliteClusterMerge = 
    iConfig.getParameter<bool>("doSatelliteClusterMerge");
  double satelliteClusterSeedThreshold = 
    iConfig.getParameter<double>("satelliteClusterSeedThreshold");
  double satelliteMajorityFraction = 
    iConfig.getParameter<double>("satelliteMajorityFraction");

  superClusterAlgo_.setVerbosityLevel(verbose_);
  superClusterAlgo_.setClusteringType(_theclusteringtype);
  superClusterAlgo_.setUseDynamicDPhi(useDynamicDPhi);

  superClusterAlgo_.setThreshPFClusterSeedBarrel( threshPFClusterSeedBarrel );
  superClusterAlgo_.setThreshPFClusterBarrel( threshPFClusterBarrel );

  superClusterAlgo_.setThreshPFClusterSeedEndcap( threshPFClusterSeedEndcap );
  superClusterAlgo_.setThreshPFClusterEndcap( threshPFClusterEndcap );

  superClusterAlgo_.setPhiwidthSuperClusterBarrel( phiwidthSuperClusterBarrel );
  superClusterAlgo_.setEtawidthSuperClusterBarrel( etawidthSuperClusterBarrel );

  superClusterAlgo_.setPhiwidthSuperClusterEndcap( phiwidthSuperClusterEndcap );
  superClusterAlgo_.setEtawidthSuperClusterEndcap( etawidthSuperClusterEndcap );

  superClusterAlgo_.setThreshPFClusterES( threshPFClusterES );

  superClusterAlgo_.setSatelliteMerging( doSatelliteClusterMerge );
  superClusterAlgo_.setSatelliteThreshold( satelliteClusterSeedThreshold );
  superClusterAlgo_.setMajorityFraction( satelliteMajorityFraction );
  //superClusterAlgo_.setThreshPFClusterMustacheOutBarrel( threshPFClusterMustacheOutBarrel );
  //superClusterAlgo_.setThreshPFClusterMustacheOutEndcap( threshPFClusterMustacheOutEndcap );

  //Load the ECAL energy calibration
  thePFEnergyCalibration_ = 
    std::shared_ptr<PFEnergyCalibration>(new PFEnergyCalibration());
  superClusterAlgo_.setPFClusterCalibration(thePFEnergyCalibration_);
  superClusterAlgo_.setUsePS(iConfig.getParameter<bool>("use_preshower"));

  bool applyCrackCorrections_ = iConfig.getParameter<bool>("applyCrackCorrections");
  superClusterAlgo_.setCrackCorrections(applyCrackCorrections_);


  
  inputTagPFClusters_ = iConfig.getParameter<InputTag>("PFClusters");
  inputTagPFClustersES_ = iConfig.getParameter<InputTag>("PFClustersES");

  PFBasicClusterCollectionBarrel_ = iConfig.getParameter<string>("PFBasicClusterCollectionBarrel");
  PFSuperClusterCollectionBarrel_ = iConfig.getParameter<string>("PFSuperClusterCollectionBarrel");

  PFBasicClusterCollectionEndcap_ = iConfig.getParameter<string>("PFBasicClusterCollectionEndcap");
  PFSuperClusterCollectionEndcap_ = iConfig.getParameter<string>("PFSuperClusterCollectionEndcap");

  PFBasicClusterCollectionPreshower_ = iConfig.getParameter<string>("PFBasicClusterCollectionPreshower");
  PFSuperClusterCollectionEndcapWithPreshower_ = iConfig.getParameter<string>("PFSuperClusterCollectionEndcapWithPreshower");

  produces<reco::SuperClusterCollection>(PFSuperClusterCollectionBarrel_);
  produces<reco::SuperClusterCollection>(PFSuperClusterCollectionEndcapWithPreshower_);   
}
PFECALSuperClusterProducer::~PFECALSuperClusterProducer ( )

Definition at line 125 of file PFECALSuperClusterProducer.cc.

{}

Member Function Documentation

void PFECALSuperClusterProducer::produce ( edm::Event iEvent,
const edm::EventSetup iSetup 
) [virtual]

Implements edm::EDProducer.

Definition at line 130 of file PFECALSuperClusterProducer.cc.

References edm::Event::getByLabel(), and edm::Event::put().

                                                             {
  

  //Load the pfcluster collections
  edm::Handle<edm::View<reco::PFCluster> > pfclustersHandle;
  iEvent.getByLabel( inputTagPFClusters_, pfclustersHandle );  

  edm::Handle<edm::View<reco::PFCluster> > preshowerpfclustersHandle;
  iEvent.getByLabel( inputTagPFClustersES_,  preshowerpfclustersHandle);


  // do clustering
  superClusterAlgo_.loadAndSortPFClusters(*pfclustersHandle,
                                          *preshowerpfclustersHandle);
  superClusterAlgo_.run();

  //store in the event
  iEvent.put(superClusterAlgo_.getEBOutputSCCollection(),
             PFSuperClusterCollectionBarrel_);
  iEvent.put(superClusterAlgo_.getEEOutputSCCollection(), 
             PFSuperClusterCollectionEndcapWithPreshower_);
}

Member Data Documentation

Definition at line 49 of file PFECALSuperClusterProducer.h.

Definition at line 56 of file PFECALSuperClusterProducer.h.

Definition at line 57 of file PFECALSuperClusterProducer.h.

Definition at line 59 of file PFECALSuperClusterProducer.h.

Definition at line 61 of file PFECALSuperClusterProducer.h.

Definition at line 63 of file PFECALSuperClusterProducer.h.

Definition at line 60 of file PFECALSuperClusterProducer.h.

Definition at line 62 of file PFECALSuperClusterProducer.h.

Definition at line 64 of file PFECALSuperClusterProducer.h.

clustering algorithm

Definition at line 48 of file PFECALSuperClusterProducer.h.

Definition at line 51 of file PFECALSuperClusterProducer.h.

verbose ?

Definition at line 54 of file PFECALSuperClusterProducer.h.