CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
List of all members | Public Member Functions | Private Member Functions | Private Attributes
CalibratableTest Class Reference

EDAnalyzer to exercise and demonstrate usage of Calibratable tree. More...

#include <CalibratableTest.h>

Inheritance diagram for CalibratableTest:
edm::one::EDAnalyzer<> edm::one::EDAnalyzerBase edm::EDConsumerBase

Public Member Functions

 CalibratableTest (const edm::ParameterSet &)
 
template<class T >
void getCollection (edm::Handle< T > &c, const edm::InputTag &tag, const edm::Event &event) const
 
 ~CalibratableTest ()
 
- Public Member Functions inherited from edm::one::EDAnalyzer<>
 EDAnalyzer ()=default
 
- Public Member Functions inherited from edm::one::EDAnalyzerBase
void callWhenNewProductsRegistered (std::function< void(BranchDescription const &)> const &func)
 
 EDAnalyzerBase ()
 
ModuleDescription const & moduleDescription () const
 
virtual ~EDAnalyzerBase ()
 
- Public Member Functions inherited from edm::EDConsumerBase
std::vector< ConsumesInfoconsumesInfo () const
 
 EDConsumerBase ()
 
ProductHolderIndexAndSkipBit indexFrom (EDGetToken, BranchType, TypeID const &) const
 
void itemsMayGet (BranchType, std::vector< ProductHolderIndexAndSkipBit > &) const
 
void itemsToGet (BranchType, std::vector< ProductHolderIndexAndSkipBit > &) const
 
std::vector
< ProductHolderIndexAndSkipBit >
const & 
itemsToGetFromEvent () const
 
void labelsForToken (EDGetToken iToken, Labels &oLabels) const
 
void modulesDependentUpon (std::string const &iProcessName, std::string const &iModuleLabel, bool iPrint, std::vector< char const * > &oModuleLabels) const
 
void modulesWhoseProductsAreConsumed (std::vector< ModuleDescription const * > &modules, ProductRegistry const &preg, std::map< std::string, ModuleDescription const * > const &labelsToDesc, std::string const &processName) const
 
bool registeredToConsume (ProductHolderIndex, bool, BranchType) const
 
bool registeredToConsumeMany (TypeID const &, BranchType) const
 
void updateLookup (BranchType iBranchType, ProductHolderIndexHelper const &)
 
virtual ~EDConsumerBase ()
 

Private Member Functions

virtual void analyze (const edm::Event &, const edm::EventSetup &) override
 
virtual void beginJob ()
 
double deltaR (const double &eta1, const double &eta2, const double &phi1, const double &phi2)
 
virtual void endJob ()
 
void extractCandidate (const reco::PFCandidate &cand)
 
virtual void fillTreeAndReset ()
 
std::vector< unsigned > findCandidatesInDeltaR (const reco::PFSimParticle &pft, const std::vector< reco::PFCandidate > &cands, const double &deltaR)
 
std::vector< unsigned > findPrimarySimParticles (const std::vector< reco::PFSimParticle > &sims)
 

Private Attributes

pftools::Calibratablecalib_
 
edm::Handle
< reco::PFClusterCollection > * 
clustersEcal_
 
edm::Handle
< reco::PFClusterCollection > * 
clustersHcal_
 
int debug_
 
double deltaRCandToSim_
 
edm::Service< TFileServicefileservice_
 
edm::InputTag inputTagCandidates_
 
edm::InputTag inputTagClustersEcal_
 
edm::InputTag inputTagClustersHcal_
 
edm::InputTag inputTagSimParticles_
 
unsigned nEventFails_
 
unsigned nEventWrites_
 
unsigned nParticleFails_
 
unsigned nParticleWrites_
 
edm::Handle
< reco::PFCandidateCollection > * 
pfCandidates_
 
edm::Handle
< reco::PFSimParticleCollection > * 
simParticles_
 
bool thisEventPasses_
 
bool thisParticlePasses_
 
TTree * tree_
 

Additional Inherited Members

- Public Types inherited from edm::one::EDAnalyzerBase
typedef EDAnalyzerBase ModuleType
 
- Public Types inherited from edm::EDConsumerBase
typedef ProductLabels Labels
 
- Static Public Member Functions inherited from edm::one::EDAnalyzerBase
static const std::string & baseType ()
 
static void fillDescriptions (ConfigurationDescriptions &descriptions)
 
static void prevalidate (ConfigurationDescriptions &descriptions)
 
- Protected Member Functions inherited from edm::EDConsumerBase
template<typename ProductType , BranchType B = InEvent>
EDGetTokenT< ProductType > consumes (edm::InputTag const &tag)
 
EDGetToken consumes (const TypeToGet &id, edm::InputTag const &tag)
 
template<BranchType B>
EDGetToken consumes (TypeToGet const &id, edm::InputTag const &tag)
 
ConsumesCollector consumesCollector ()
 Use a ConsumesCollector to gather consumes information from helper functions. More...
 
template<typename ProductType , BranchType B = InEvent>
void consumesMany ()
 
void consumesMany (const TypeToGet &id)
 
template<BranchType B>
void consumesMany (const TypeToGet &id)
 
template<typename ProductType , BranchType B = InEvent>
EDGetTokenT< ProductType > mayConsume (edm::InputTag const &tag)
 
EDGetToken mayConsume (const TypeToGet &id, edm::InputTag const &tag)
 
template<BranchType B>
EDGetToken mayConsume (const TypeToGet &id, edm::InputTag const &tag)
 

Detailed Description

EDAnalyzer to exercise and demonstrate usage of Calibratable tree.

Author
Jamie Ballin, Imperial College London
Date
November 2008

OBJECTIVE: this analyzer will create a tree of PFClusterTools/Calibratable instances. Each entry of the tree represents particle flow information relating to one pion in a multi-pion event. The use of monte carlo is assumed as sim particle information is extracted too.

USAGE: This is an analyzer, not a producer: the tree it produces is stored in a seperate ROOT file using the CMSSW TFileService.

Consult test/CalibratableTest_FastSim.py for a sample CMSSW configuration. Run the example from that directory with, cmsRun CalibratableTest_FastSim.py This will produce a file with a tree inside. Browse the contents in bare root with a TBrowser.

NOTE: This analyzer does not exercise the complete functionality of the Calibratable class. For instance, tracks and rechits are not stored. Contact me (the author) for more details, and for an analyzer that we use to extract particle information to calibrate the particle flow algorithm. A MUCH more involved example from my private analysis is to be found in, UserCode/JamieBallin/interface/DipionDelegate.h

General details about the usage of Calibratable may be found at, https://twiki.cern.ch/twiki/bin/view/CMS/PFClusterToolsPackage

Definition at line 57 of file CalibratableTest.h.

Constructor & Destructor Documentation

CalibratableTest::CalibratableTest ( const edm::ParameterSet parameters)
explicit

Definition at line 24 of file CalibratableTest.cc.

CalibratableTest::~CalibratableTest ( )

Definition at line 43 of file CalibratableTest.cc.

Member Function Documentation

void CalibratableTest::analyze ( const edm::Event event,
const edm::EventSetup iSetup 
)
overrideprivatevirtual

Implements edm::one::EDAnalyzerBase.

Definition at line 53 of file CalibratableTest.cc.

void CalibratableTest::beginJob ( void  )
privatevirtual

Reimplemented from edm::one::EDAnalyzerBase.

Definition at line 47 of file CalibratableTest.cc.

double CalibratableTest::deltaR ( const double &  eta1,
const double &  eta2,
const double &  phi1,
const double &  phi2 
)
private

Definition at line 301 of file CalibratableTest.cc.

void CalibratableTest::endJob ( void  )
privatevirtual

Reimplemented from edm::one::EDAnalyzerBase.

Definition at line 287 of file CalibratableTest.cc.

void CalibratableTest::extractCandidate ( const reco::PFCandidate cand)
private

Definition at line 167 of file CalibratableTest.cc.

void CalibratableTest::fillTreeAndReset ( )
privatevirtual

Definition at line 270 of file CalibratableTest.cc.

std::vector< unsigned > CalibratableTest::findCandidatesInDeltaR ( const reco::PFSimParticle pft,
const std::vector< reco::PFCandidate > &  cands,
const double &  deltaR 
)
private

Definition at line 243 of file CalibratableTest.cc.

std::vector< unsigned > CalibratableTest::findPrimarySimParticles ( const std::vector< reco::PFSimParticle > &  sims)
private

Definition at line 145 of file CalibratableTest.cc.

template<class T >
void CalibratableTest::getCollection ( edm::Handle< T > &  c,
const edm::InputTag tag,
const edm::Event event 
) const

Definition at line 147 of file CalibratableTest.h.

References gather_cfg::cout, and edm::HandleBase::isValid().

148  {
149 
150  try {
151  event.getByLabel(tag, c);
152  if(!c.isValid()) {
153  std::cout << "Warning! Collection for label " << tag << " is not valid!" << std::endl;
154  }
155  }
156  catch (cms::Exception& err) {
157  std::cout << "Couldn't get collection\n";
158  //std::ostringstream s;
159  //LogError("Error getting collection!") << s;
160  }
161 }
bool isValid() const
Definition: HandleBase.h:75
tuple cout
Definition: gather_cfg.py:145

Member Data Documentation

pftools::Calibratable* CalibratableTest::calib_
private

Definition at line 123 of file CalibratableTest.h.

edm::Handle<reco::PFClusterCollection>* CalibratableTest::clustersEcal_
private

Definition at line 142 of file CalibratableTest.h.

edm::Handle<reco::PFClusterCollection>* CalibratableTest::clustersHcal_
private

Definition at line 143 of file CalibratableTest.h.

int CalibratableTest::debug_
private

Definition at line 112 of file CalibratableTest.h.

double CalibratableTest::deltaRCandToSim_
private

Definition at line 131 of file CalibratableTest.h.

edm::Service<TFileService> CalibratableTest::fileservice_
private

Definition at line 109 of file CalibratableTest.h.

edm::InputTag CalibratableTest::inputTagCandidates_
private

Definition at line 134 of file CalibratableTest.h.

edm::InputTag CalibratableTest::inputTagClustersEcal_
private

Definition at line 136 of file CalibratableTest.h.

edm::InputTag CalibratableTest::inputTagClustersHcal_
private

Definition at line 137 of file CalibratableTest.h.

edm::InputTag CalibratableTest::inputTagSimParticles_
private

Definition at line 135 of file CalibratableTest.h.

unsigned CalibratableTest::nEventFails_
private

Definition at line 128 of file CalibratableTest.h.

unsigned CalibratableTest::nEventWrites_
private

Definition at line 128 of file CalibratableTest.h.

unsigned CalibratableTest::nParticleFails_
private

Definition at line 127 of file CalibratableTest.h.

unsigned CalibratableTest::nParticleWrites_
private

Definition at line 127 of file CalibratableTest.h.

edm::Handle<reco::PFCandidateCollection>* CalibratableTest::pfCandidates_
private

Definition at line 140 of file CalibratableTest.h.

edm::Handle<reco::PFSimParticleCollection>* CalibratableTest::simParticles_
private

Definition at line 141 of file CalibratableTest.h.

bool CalibratableTest::thisEventPasses_
private

Definition at line 116 of file CalibratableTest.h.

bool CalibratableTest::thisParticlePasses_
private

Definition at line 120 of file CalibratableTest.h.

TTree* CalibratableTest::tree_
private

Definition at line 106 of file CalibratableTest.h.