#include <MixCollectionValidation.h>
Public Member Functions | |
virtual void | analyze (const edm::Event &, const edm::EventSetup &) |
void | beginJob () |
void | endJob () |
MixCollectionValidation (const edm::ParameterSet &) | |
~MixCollectionValidation () | |
Private Member Functions | |
template<class T1 , class T2 > | |
void | fillCaloHitTime (T1 &theItr_, T2 &theColl_, MonitorElement *theProfile_) |
template<class T1 , class T2 > | |
void | fillGenParticleMulti (T1 &theItr_, T2 &theColl_, MonitorElement *theProfile_) |
template<class T1 , class T2 > | |
void | fillMultiplicity (T1 &theItr_, T2 &theColl_, MonitorElement *theProfile_) |
template<class T1 , class T2 > | |
void | fillSimHitTime (T1 &theItr_, T2 &theColl_, MonitorElement *theProfile_) |
Private Attributes | |
std::map< std::string, MonitorElement * > | CaloHitNrmap_ |
std::map< std::string, MonitorElement * > | CaloHitTimemap_ |
DQMStore * | dbe_ |
std::vector< edm::InputTag > | HepMCProductTags_ |
int | maxbunch_ |
int | minbunch_ |
std::vector< std::string > | names_ |
int | nbin_ |
MonitorElement * | nrHepMCProductH_ |
MonitorElement * | nrSimTrackH_ |
MonitorElement * | nrSimVertexH_ |
std::string | outputFile_ |
std::vector< edm::InputTag > | PCaloHitTags_ |
std::vector< edm::InputTag > | PSimHitTags_ |
std::map< std::string, MonitorElement * > | SimHitNrmap_ |
std::map< std::string, MonitorElement * > | SimHitTimemap_ |
std::vector< edm::InputTag > | SimTrackTags_ |
std::vector< edm::InputTag > | SimVertexTags_ |
bool | verbose_ |
Definition at line 25 of file MixCollectionValidation.h.
MixCollectionValidation::MixCollectionValidation | ( | const edm::ParameterSet & | iConfig | ) | [explicit] |
Definition at line 30 of file MixCollectionValidation.cc.
References DQMStore::bookProfile(), CaloHitNrmap_, CaloHitTimemap_, dbe_, edm::ParameterSet::exists(), edm::ParameterSet::getParameter(), edm::ParameterSet::getParameterNames(), HepMCProductTags_, maxbunch_, minbunch_, mergeVDriftHistosByStation::name, names_, nbin_, nrHepMCProductH_, nrSimTrackH_, nrSimVertexH_, dbtoconf::object, cmsCodeRules::cppFunctionSkipper::operator, outputFile_, PCaloHitTags_, PSimHitTags_, DQMStore::setCurrentFolder(), DQMStore::setVerbose(), DQMStore::showDirStructure(), SimHitNrmap_, SimHitTimemap_, SimTrackTags_, SimVertexTags_, subdets, o2o::tags, indexGen::title, and verbose_.
: outputFile_(iConfig.getParameter<std::string>("outputFile")), minbunch_(iConfig.getParameter<int>("minBunch")), maxbunch_(iConfig.getParameter<int>("maxBunch")), verbose_(iConfig.getUntrackedParameter<bool>("verbose",false)), dbe_(0),nbin_(maxbunch_-minbunch_+1) { if ( outputFile_.size() != 0 ) { edm::LogInfo("OutputInfo") << " Ecal SimHits Task histograms will be saved to " << outputFile_.c_str(); } else { edm::LogInfo("OutputInfo") << " Ecal SimHits Task histograms will NOT be saved"; } // get hold of back-end interface dbe_ = edm::Service<DQMStore>().operator->(); if ( dbe_ ) { if ( verbose_ ) { dbe_->setVerbose(1); } else { dbe_->setVerbose(0); } } if ( dbe_ ) { if ( verbose_ ) dbe_->showDirStructure(); } // get hold of back-end interface dbe_ = Service<DQMStore>().operator->(); // dbe_->showDirStructure(); dbe_->setCurrentFolder("MixingV/Mixing"); // define the histograms according to the configuration ParameterSet ps=iConfig.getParameter<ParameterSet>("mixObjects"); names_ = ps.getParameterNames(); for (std::vector<std::string>::iterator it=names_.begin();it!= names_.end();++it) { ParameterSet pset=ps.getParameter<ParameterSet>((*it)); if (!pset.exists("type")) continue; //to allow replacement by empty pset std::string object = pset.getParameter<std::string>("type"); std::vector<InputTag> tags=pset.getParameter<std::vector<InputTag> >("input"); if ( object == "HepMCProduct" ) { std::string title = "Log10 Number of GenParticle in " + object; std::string name = "NumberOf" + object; nrHepMCProductH_ = dbe_->bookProfile(name,title,nbin_,minbunch_,maxbunch_+1,40,0.,40.); HepMCProductTags_ = tags; } else if ( object == "SimTrack" ) { std::string title = "Log10 Number of " + object; std::string name = "NumberOf" + object; nrSimTrackH_ = dbe_->bookProfile(name,title,nbin_,minbunch_,maxbunch_+1,40,0.,40.); SimTrackTags_ = tags; } else if ( object == "SimVertex" ) { std::string title = "Log10 Number of " + object; std::string name = "NumberOf" + object; nrSimVertexH_ = dbe_->bookProfile(name,title,nbin_,minbunch_,maxbunch_+1,40,0.,40.); SimVertexTags_ = tags; } else if ( object == "PSimHit" ) { std::vector<std::string> subdets=pset.getParameter<std::vector<std::string> >("subdets"); for (unsigned int ii=0;ii<subdets.size();ii++) { std::string title = "Log10 Number of " + subdets[ii]; std::string name = "NumberOf" + subdets[ii]; SimHitNrmap_[subdets[ii]] = dbe_->bookProfile(name,title,nbin_,minbunch_,maxbunch_+1,40,0.,40.); title = "Time of " + subdets[ii]; name = "TimeOf" + subdets[ii]; SimHitTimemap_[subdets[ii]] = dbe_->bookProfile(name,title,nbin_,minbunch_,maxbunch_+1,40,-125.,375.); } PSimHitTags_ = tags; } else if ( object == "PCaloHit" ) { std::vector<std::string> subdets=pset.getParameter<std::vector<std::string> >("subdets"); for (unsigned int ii=0;ii<subdets.size();ii++) { std::string title = "Log10 Number of " + subdets[ii]; std::string name = "NumberOf" + subdets[ii]; CaloHitNrmap_[subdets[ii]] = dbe_->bookProfile(name,title,nbin_,minbunch_,maxbunch_+1,40,0.,40.); title = "Time of " + subdets[ii]; name = "TimeOf" + subdets[ii]; CaloHitTimemap_[subdets[ii]] = dbe_->bookProfile(name,title,nbin_,minbunch_,maxbunch_+1,40,-125.,375.); } PCaloHitTags_ = tags; } } }
MixCollectionValidation::~MixCollectionValidation | ( | ) |
Definition at line 135 of file MixCollectionValidation.cc.
{ // do anything here that needs to be done at desctruction time // (e.g. close files, deallocate resources etc.) }
void MixCollectionValidation::analyze | ( | const edm::Event & | iEvent, |
const edm::EventSetup & | iConfig | ||
) | [virtual] |
Implements edm::EDAnalyzer.
Definition at line 156 of file MixCollectionValidation.cc.
References CaloHitNrmap_, CaloHitTimemap_, fillCaloHitTime(), fillGenParticleMulti(), fillMultiplicity(), fillSimHitTime(), edm::Event::getByLabel(), HepMCProductTags_, i, instance, nrHepMCProductH_, nrSimTrackH_, nrSimVertexH_, PCaloHitTags_, edm::Handle< T >::product(), PSimHitTags_, SimHitNrmap_, trackerHits::simHits, SimHitTimemap_, SimTrackTags_, and SimVertexTags_.
{ using namespace edm; if ( HepMCProductTags_.size() > 0 ) { bool gotHepMCProduct; edm::Handle<CrossingFrame<HepMCProduct> > crossingFrame; std::string HepMCProductLabel = HepMCProductTags_[0].label(); gotHepMCProduct = iEvent.getByLabel("mix",HepMCProductLabel,crossingFrame); if (gotHepMCProduct){ std::auto_ptr<MixCollection<HepMCProduct> > hepMCProduct (new MixCollection<HepMCProduct>(crossingFrame.product ())); MixCollection<HepMCProduct>::MixItr hitItr; fillGenParticleMulti(hitItr, hepMCProduct, nrHepMCProductH_); } } if ( SimTrackTags_.size() > 0 ) { bool gotSimTrack; edm::Handle<CrossingFrame<SimTrack> > crossingFrame; std::string SimTrackLabel = SimTrackTags_[0].label(); gotSimTrack = iEvent.getByLabel("mix",SimTrackLabel,crossingFrame); if (gotSimTrack){ std::auto_ptr<MixCollection<SimTrack> > simTracks (new MixCollection<SimTrack>(crossingFrame.product ())); MixCollection<SimTrack>::MixItr hitItr; fillMultiplicity(hitItr, simTracks, nrSimTrackH_); } } if ( SimVertexTags_.size() > 0 ) { bool gotSimVertex; edm::Handle<CrossingFrame<SimVertex> > crossingFrame; std::string SimVertexLabel = SimVertexTags_[0].label(); gotSimVertex = iEvent.getByLabel("mix",SimVertexLabel,crossingFrame); if (gotSimVertex){ std::auto_ptr<MixCollection<SimVertex> > simVerteces (new MixCollection<SimVertex>(crossingFrame.product ())); MixCollection<SimVertex>::MixItr hitItr; fillMultiplicity(hitItr, simVerteces, nrSimVertexH_); } } if ( PSimHitTags_.size() > 0 ) { edm::Handle<CrossingFrame<PSimHit> > crossingFrame; for ( int i = 0; i < (int)PSimHitTags_.size(); i++ ) { bool gotPSimHit; std::string PSimHitLabel = PSimHitTags_[i].label()+PSimHitTags_[i].instance(); gotPSimHit = iEvent.getByLabel("mix",PSimHitLabel,crossingFrame); if (gotPSimHit){ std::auto_ptr<MixCollection<PSimHit> > simHits (new MixCollection<PSimHit>(crossingFrame.product ())); MixCollection<PSimHit>::MixItr hitItr; fillMultiplicity(hitItr, simHits, SimHitNrmap_[PSimHitTags_[i].instance()]); fillSimHitTime(hitItr, simHits, SimHitTimemap_[PSimHitTags_[i].instance()]); } } } if ( PCaloHitTags_.size() > 0 ) { edm::Handle<CrossingFrame<PCaloHit> > crossingFrame; for ( int i = 0; i < (int)PCaloHitTags_.size(); i++ ) { bool gotPCaloHit; std::string PCaloHitLabel = PCaloHitTags_[i].label()+PCaloHitTags_[i].instance(); gotPCaloHit = iEvent.getByLabel("mix",PCaloHitLabel,crossingFrame); if (gotPCaloHit){ std::auto_ptr<MixCollection<PCaloHit> > caloHits (new MixCollection<PCaloHit>(crossingFrame.product ())); MixCollection<PCaloHit>::MixItr hitItr; fillMultiplicity(hitItr, caloHits, CaloHitNrmap_[PCaloHitTags_[i].instance()]); fillCaloHitTime(hitItr, caloHits, CaloHitTimemap_[PCaloHitTags_[i].instance()]); } } } }
void MixCollectionValidation::beginJob | ( | void | ) | [virtual] |
void MixCollectionValidation::endJob | ( | void | ) | [virtual] |
Reimplemented from edm::EDAnalyzer.
Definition at line 146 of file MixCollectionValidation.cc.
References dbe_, outputFile_, and DQMStore::save().
{ if (outputFile_.size() != 0 && dbe_ ) dbe_->save(outputFile_); }
void MixCollectionValidation::fillCaloHitTime | ( | T1 & | theItr_, |
T2 & | theColl_, | ||
MonitorElement * | theProfile_ | ||
) | [private] |
Definition at line 303 of file MixCollectionValidation.cc.
References MonitorElement::Fill(), getHLTprescales::index, minbunch_, nbin_, and cond::rpcobgas::time.
Referenced by analyze().
{ for ( theItr_ = theColl_->begin() ; theItr_ != theColl_->end() ; ++theItr_) { int bunch = (*theItr_).eventId().bunchCrossing(); float time = (*theItr_).time(); int index = bunch - minbunch_; if ( index >= 0 && index < nbin_ ) { theProfile_->Fill(float(bunch+0.5),time); } else { edm::LogWarning("MixCollectionValidation") << "fillCaloHitTime: bunch number " << bunch << " out of range"; } } }
void MixCollectionValidation::fillGenParticleMulti | ( | T1 & | theItr_, |
T2 & | theColl_, | ||
MonitorElement * | theProfile_ | ||
) | [private] |
Definition at line 271 of file MixCollectionValidation.cc.
References MonitorElement::Fill(), i, getHLTprescales::index, max(), minbunch_, and nbin_.
Referenced by analyze().
{ std::vector<int> theMult(nbin_); for ( theItr_ = theColl_->begin() ; theItr_ != theColl_->end() ; ++theItr_) { int bunch = theItr_.bunch(); int index = bunch - minbunch_; if ( index >= 0 && index < nbin_ ) { theMult[index] += (*theItr_).GetEvent()->particles_size(); } else { edm::LogWarning("MixCollectionValidation") << "fillMultiplicity: bunch number " << bunch << " out of range"; } } for ( int i = 0; i < nbin_; i++ ) { theProfile_->Fill(float(i+minbunch_+0.5),std::log10(std::max(float(0.1),float(theMult[i])))); } }
void MixCollectionValidation::fillMultiplicity | ( | T1 & | theItr_, |
T2 & | theColl_, | ||
MonitorElement * | theProfile_ | ||
) | [private] |
Definition at line 252 of file MixCollectionValidation.cc.
References MonitorElement::Fill(), i, getHLTprescales::index, max(), minbunch_, and nbin_.
Referenced by analyze().
{ std::vector<int> theMult(nbin_); for ( theItr_ = theColl_->begin() ; theItr_ != theColl_->end() ; ++theItr_) { int bunch = (*theItr_).eventId().bunchCrossing(); int index = bunch - minbunch_; if ( index >= 0 && index < nbin_ ) { theMult[index] += 1; } else { edm::LogWarning("MixCollectionValidation") << "fillMultiplicity: bunch number " << bunch << " out of range"; } } for ( int i = 0; i < nbin_; i++ ) { theProfile_->Fill(float(i+minbunch_+0.5),std::log10(std::max(float(0.1),float(theMult[i])))); } }
void MixCollectionValidation::fillSimHitTime | ( | T1 & | theItr_, |
T2 & | theColl_, | ||
MonitorElement * | theProfile_ | ||
) | [private] |
Definition at line 289 of file MixCollectionValidation.cc.
References MonitorElement::Fill(), getHLTprescales::index, minbunch_, nbin_, and cond::rpcobgas::time.
Referenced by analyze().
{ for ( theItr_ = theColl_->begin() ; theItr_ != theColl_->end() ; ++theItr_) { int bunch = (*theItr_).eventId().bunchCrossing(); float time = (*theItr_).timeOfFlight(); int index = bunch - minbunch_; if ( index >= 0 && index < nbin_ ) { theProfile_->Fill(float(bunch+0.5),time); } else { edm::LogWarning("MixCollectionValidation") << "fillSimHitTime: bunch number " << bunch << " out of range"; } } }
std::map<std::string,MonitorElement *> MixCollectionValidation::CaloHitNrmap_ [private] |
Definition at line 58 of file MixCollectionValidation.h.
Referenced by analyze(), and MixCollectionValidation().
std::map<std::string,MonitorElement *> MixCollectionValidation::CaloHitTimemap_ [private] |
Definition at line 59 of file MixCollectionValidation.h.
Referenced by analyze(), and MixCollectionValidation().
DQMStore* MixCollectionValidation::dbe_ [private] |
Definition at line 61 of file MixCollectionValidation.h.
Referenced by endJob(), and MixCollectionValidation().
std::vector<edm::InputTag> MixCollectionValidation::HepMCProductTags_ [private] |
Definition at line 64 of file MixCollectionValidation.h.
Referenced by analyze(), and MixCollectionValidation().
int MixCollectionValidation::maxbunch_ [private] |
Definition at line 47 of file MixCollectionValidation.h.
Referenced by MixCollectionValidation().
int MixCollectionValidation::minbunch_ [private] |
Definition at line 46 of file MixCollectionValidation.h.
Referenced by fillCaloHitTime(), fillGenParticleMulti(), fillMultiplicity(), fillSimHitTime(), and MixCollectionValidation().
std::vector<std::string> MixCollectionValidation::names_ [private] |
Definition at line 63 of file MixCollectionValidation.h.
Referenced by MixCollectionValidation().
int MixCollectionValidation::nbin_ [private] |
Definition at line 70 of file MixCollectionValidation.h.
Referenced by fillCaloHitTime(), fillGenParticleMulti(), fillMultiplicity(), fillSimHitTime(), and MixCollectionValidation().
Definition at line 51 of file MixCollectionValidation.h.
Referenced by analyze(), and MixCollectionValidation().
Definition at line 52 of file MixCollectionValidation.h.
Referenced by analyze(), and MixCollectionValidation().
Definition at line 53 of file MixCollectionValidation.h.
Referenced by analyze(), and MixCollectionValidation().
std::string MixCollectionValidation::outputFile_ [private] |
Definition at line 45 of file MixCollectionValidation.h.
Referenced by endJob(), and MixCollectionValidation().
std::vector<edm::InputTag> MixCollectionValidation::PCaloHitTags_ [private] |
Definition at line 68 of file MixCollectionValidation.h.
Referenced by analyze(), and MixCollectionValidation().
std::vector<edm::InputTag> MixCollectionValidation::PSimHitTags_ [private] |
Definition at line 67 of file MixCollectionValidation.h.
Referenced by analyze(), and MixCollectionValidation().
std::map<std::string,MonitorElement *> MixCollectionValidation::SimHitNrmap_ [private] |
Definition at line 55 of file MixCollectionValidation.h.
Referenced by analyze(), and MixCollectionValidation().
std::map<std::string,MonitorElement *> MixCollectionValidation::SimHitTimemap_ [private] |
Definition at line 56 of file MixCollectionValidation.h.
Referenced by analyze(), and MixCollectionValidation().
std::vector<edm::InputTag> MixCollectionValidation::SimTrackTags_ [private] |
Definition at line 65 of file MixCollectionValidation.h.
Referenced by analyze(), and MixCollectionValidation().
std::vector<edm::InputTag> MixCollectionValidation::SimVertexTags_ [private] |
Definition at line 66 of file MixCollectionValidation.h.
Referenced by analyze(), and MixCollectionValidation().
bool MixCollectionValidation::verbose_ [private] |
Definition at line 49 of file MixCollectionValidation.h.
Referenced by MixCollectionValidation().