![]() |
![]() |
#include <SiStripQualityHotStripIdentifier.h>
Public Member Functions | |
SiStripQualityHotStripIdentifier (const edm::ParameterSet &) | |
~SiStripQualityHotStripIdentifier () | |
Private Member Functions | |
void | algoAnalyze (const edm::Event &, const edm::EventSetup &) |
void | algoBeginJob (const edm::EventSetup &) |
void | algoBeginLuminosityBlock (const edm::LuminosityBlock &, const edm::EventSetup &) |
void | algoBeginRun (const edm::Run &, const edm::EventSetup &) |
void | algoEndJob () |
void | bookHistos () |
void | fillHisto (uint32_t detid, float value) |
SiStripBadStrip * | getNewObject () |
void | resetHistos () |
Private Attributes | |
edm::InputTag | Cluster_src_ |
SiStrip::QualityHistosMap | ClusterPositionHistoMap |
const edm::ParameterSet | conf_ |
std::string | dataLabel_ |
edm::FileInPath | fp_ |
unsigned long long | m_cacheID_ |
unsigned short | MaxClusterWidth_ |
unsigned short | MinClusterWidth_ |
SiStripDetInfoFileReader * | reader |
edm::ESHandle< SiStripQuality > | SiStripQuality_ |
edm::InputTag | Track_src_ |
bool | tracksCollection_in_EventTree |
const TrackerTopology * | tTopo |
Definition at line 22 of file SiStripQualityHotStripIdentifier.h.
SiStripQualityHotStripIdentifier::SiStripQualityHotStripIdentifier | ( | const edm::ParameterSet & | iConfig | ) | [explicit] |
Definition at line 20 of file SiStripQualityHotStripIdentifier.cc.
References bookHistos(), fp_, edm::FileInPath::fullPath(), edm::ParameterSet::getUntrackedParameter(), MaxClusterWidth_, MinClusterWidth_, reader, and OfflineSiStripConfigDb_cff::SiStripDetInfoFileReader.
: ConditionDBWriter<SiStripBadStrip>(iConfig), m_cacheID_(0), dataLabel_(iConfig.getUntrackedParameter<std::string>("dataLabel","")), conf_(iConfig), fp_(iConfig.getUntrackedParameter<edm::FileInPath>("file",edm::FileInPath("CalibTracker/SiStripCommon/data/SiStripDetInfo.dat"))), Cluster_src_(iConfig.getParameter<edm::InputTag>( "Cluster_src" )), Track_src_(iConfig.getUntrackedParameter<edm::InputTag>( "Track_src" )), tracksCollection_in_EventTree(iConfig.getUntrackedParameter<bool>("RemoveTrackClusters",false)), tTopo(nullptr) { reader = new SiStripDetInfoFileReader(fp_.fullPath()); edm::ParameterSet pset=iConfig.getUntrackedParameter< edm::ParameterSet > ("ClusterSelection",edm::ParameterSet()); MinClusterWidth_=pset.getUntrackedParameter<uint32_t>("minWidth",1); MaxClusterWidth_=pset.getUntrackedParameter<uint32_t>("maxWidth",1000); bookHistos(); }
SiStripQualityHotStripIdentifier::~SiStripQualityHotStripIdentifier | ( | ) |
Definition at line 39 of file SiStripQualityHotStripIdentifier.cc.
{ }
void SiStripQualityHotStripIdentifier::algoAnalyze | ( | const edm::Event & | e, |
const edm::EventSetup & | eSetup | ||
) | [private, virtual] |
Reimplemented from ConditionDBWriter< SiStripBadStrip >.
Definition at line 143 of file SiStripQualityHotStripIdentifier.cc.
References edm::DetSetVector< T >::begin(), Cluster_src_, edm::DetSetVector< T >::end(), fillHisto(), spr::find(), edm::Event::getByLabel(), i, edm::isDebugEnabled(), TrackingRecHit::isValid(), edm::HandleBase::isValid(), LogTrace, MaxClusterWidth_, ProjectedSiStripRecHit2D::originalHit(), edm::Handle< T >::product(), findQualityFiles::size, edm::DetSet< T >::size(), Track_src_, and tracksCollection_in_EventTree.
{ edm::Handle< edm::DetSetVector<SiStripCluster> > dsv_SiStripCluster; e.getByLabel( Cluster_src_, dsv_SiStripCluster); edm::Handle<reco::TrackCollection> trackCollection; if(tracksCollection_in_EventTree){ e.getByLabel(Track_src_, trackCollection); if(!trackCollection.isValid()){ edm::LogError("SiStripQualityHotStripIdentifier")<<" [SiStripQualityHotStripIdentifier::algoAnalyze] missing trackCollection with label " << Track_src_ <<std::endl; } } std::set<const void*> vPSiStripCluster; //Perform track study if (tracksCollection_in_EventTree){ const reco::TrackCollection tC = *(trackCollection.product()); int i=0; for (reco::TrackCollection::const_iterator track=tC.begin(); track!=tC.end(); track++){ LogTrace("SiStripQualityHotStripIdentifier") << "Track number "<< i+1 << "\n\tmomentum: " << track->momentum() << "\n\tPT: " << track->pt() << "\n\tvertex: " << track->vertex() << "\n\timpact parameter: " << track->d0() << "\n\tcharge: " << track->charge() << "\n\tnormalizedChi2: " << track->normalizedChi2() <<"\n\tFrom EXTRA : " <<"\n\t\touter PT "<< track->outerPt()<<std::endl; //Loop on rechits for (trackingRecHit_iterator it = track->recHitsBegin(); it != track->recHitsEnd(); ++it){ const TrackingRecHit* recHit = &(**it); if (!recHit->isValid()){ LogTrace("SiStripQualityHotStripIdentifier") <<"\t\t Invalid Hit "<<std::endl; continue; } const SiStripRecHit2D* singleHit=dynamic_cast<const SiStripRecHit2D*>(recHit); const SiStripMatchedRecHit2D* matchedHit=dynamic_cast<const SiStripMatchedRecHit2D*>(recHit); const ProjectedSiStripRecHit2D* projectedHit=dynamic_cast<const ProjectedSiStripRecHit2D*>(recHit); if(matchedHit){ vPSiStripCluster.insert((void *)&(matchedHit->monoCluster())); vPSiStripCluster.insert((void *)&(matchedHit->stereoCluster())); } else if(projectedHit){ vPSiStripCluster.insert((void *)&*(projectedHit->originalHit().cluster())); } else if(singleHit){ vPSiStripCluster.insert((void*)&*(singleHit->cluster())); }else{ LogTrace("SiStripQualityHotStripIdentifier") << "NULL hit" << std::endl; } } } } std::stringstream ss; //Loop on Det Clusters edm::DetSetVector<SiStripCluster>::const_iterator DSViter=dsv_SiStripCluster->begin(); for (; DSViter!=dsv_SiStripCluster->end();DSViter++){ edm::DetSet<SiStripCluster>::const_iterator ClusIter = DSViter->data.begin(); edm::DetSet<SiStripCluster>::const_iterator ClusIterEnd = DSViter->data.end(); for(; ClusIter!=ClusIterEnd; ++ClusIter) { if (MinClusterWidth_<=ClusIter->amplitudes().size() && ClusIter->amplitudes().size()<=MaxClusterWidth_) { if (std::find(vPSiStripCluster.begin(),vPSiStripCluster.end(),(void*) &*ClusIter) == vPSiStripCluster.end()){ if ( edm::isDebugEnabled() ) ss << " adding cluster to histo for detid " << DSViter->id << " with barycenter "<< ClusIter->barycenter() << std::endl; fillHisto(DSViter->id,ClusIter->barycenter()); } } } } LogTrace("SiStripQualityHotStripIdentifier") << ss.str(); }
void SiStripQualityHotStripIdentifier::algoBeginJob | ( | const edm::EventSetup & | ) | [inline, private, virtual] |
Reimplemented from ConditionDBWriter< SiStripBadStrip >.
Definition at line 32 of file SiStripQualityHotStripIdentifier.h.
{}
void SiStripQualityHotStripIdentifier::algoBeginLuminosityBlock | ( | const edm::LuminosityBlock & | , |
const edm::EventSetup & | |||
) | [inline, private, virtual] |
Reimplemented from ConditionDBWriter< SiStripBadStrip >.
Definition at line 36 of file SiStripQualityHotStripIdentifier.h.
References resetHistos().
{ resetHistos(); }
void SiStripQualityHotStripIdentifier::algoBeginRun | ( | const edm::Run & | run, |
const edm::EventSetup & | iSetup | ||
) | [private, virtual] |
Reimplemented from ConditionDBWriter< SiStripBadStrip >.
Definition at line 85 of file SiStripQualityHotStripIdentifier.cc.
References dataLabel_, edm::EventSetup::get(), m_cacheID_, edm::ESHandle< T >::product(), resetHistos(), SiStripQuality_, and tTopo.
{ //Retrieve tracker topology from geometry edm::ESHandle<TrackerTopology> tTopoHandle; iSetup.get<IdealGeometryRecord>().get(tTopoHandle); tTopo = tTopoHandle.product(); resetHistos(); unsigned long long cacheID = iSetup.get<SiStripQualityRcd>().cacheIdentifier(); if (m_cacheID_ == cacheID) return; m_cacheID_ = cacheID; iSetup.get<SiStripQualityRcd>().get(dataLabel_,SiStripQuality_); }
void SiStripQualityHotStripIdentifier::algoEndJob | ( | ) | [private, virtual] |
Reimplemented from ConditionDBWriter< SiStripBadStrip >.
Definition at line 103 of file SiStripQualityHotStripIdentifier.cc.
References ClusterPositionHistoMap.
{ //Clear map ClusterPositionHistoMap.clear(); }
void SiStripQualityHotStripIdentifier::bookHistos | ( | ) | [private] |
Definition at line 117 of file SiStripQualityHotStripIdentifier.cc.
References ClusterPositionHistoMap, SiStripDetInfoFileReader::getAllData(), and reader.
Referenced by SiStripQualityHotStripIdentifier().
{ edm::LogInfo("SiStripQualityHotStripIdentifier") <<" [SiStripQualityHotStripIdentifier::bookHistos] " << std::endl; char hname[1024]; std::map<uint32_t, SiStripDetInfoFileReader::DetInfo >::const_iterator it =reader->getAllData().begin(); std::map<uint32_t, SiStripDetInfoFileReader::DetInfo >::const_iterator iEnd =reader->getAllData().end(); for(; it!=iEnd; ++it){ sprintf(hname,"h_%d",it->first); SiStrip::QualityHistosMap::iterator ref=ClusterPositionHistoMap.find(it->first); if (ref==ClusterPositionHistoMap.end()){ ClusterPositionHistoMap[it->first]=boost::shared_ptr<TH1F>(new TH1F(hname,hname,it->second.nApvs*128,-0.5,it->second.nApvs*128-0.5)); } else edm::LogError("SiStripQualityHotStripIdentifier") <<" [SiStripQualityHotStripIdentifier::bookHistos] DetId " << it->first << " already found in map. Ignoring new data"<<std::endl; } }
void SiStripQualityHotStripIdentifier::fillHisto | ( | uint32_t | detid, |
float | value | ||
) | [private] |
Definition at line 133 of file SiStripQualityHotStripIdentifier.cc.
References ClusterPositionHistoMap.
Referenced by algoAnalyze().
{ SiStrip::QualityHistosMap::iterator ref=ClusterPositionHistoMap.find(detid); if (ref!=ClusterPositionHistoMap.end()) ref->second->Fill(value); else edm::LogError("SiStripQualityHotStripIdentifier") <<" [SiStripQualityHotStripIdentifier::fillHisto] Histogram not found in the list for DetId " << detid << " Ignoring data value "<< value <<std::endl; }
SiStripBadStrip * SiStripQualityHotStripIdentifier::getNewObject | ( | ) | [private, virtual] |
Implements ConditionDBWriter< SiStripBadStrip >.
Definition at line 42 of file SiStripQualityHotStripIdentifier.cc.
References a, ClusterPositionHistoMap, conf_, SiStripHotStripAlgorithmFromClusterOccupancy::extractBadStrips(), SiStripBadStrip::getDataVectorBegin(), edm::ParameterSet::getParameter(), SiStripBadStrip::getRegistryVectorBegin(), SiStripBadStrip::getRegistryVectorEnd(), edm::ParameterSet::getUntrackedParameter(), getGTfromDQMFile::obj, Parameters::parameters, SiStripBadStrip::put(), SiStripHotStripAlgorithmFromClusterOccupancy::setMinNumEntries(), SiStripHotStripAlgorithmFromClusterOccupancy::setMinNumEntriesPerStrip(), SiStripHotStripAlgorithmFromClusterOccupancy::setProbabilityThreshold(), AlCaHarvesting_cff::SiStripQuality, SiStripQuality_, AlCaHLTBitMon_QueryRunRegistry::string, and tTopo.
{ SiStripBadStrip* obj=new SiStripBadStrip(); edm::ParameterSet parameters=conf_.getParameter<edm::ParameterSet>("AlgoParameters"); std::string AlgoName = parameters.getParameter<std::string>("AlgoName"); if (AlgoName=="SiStripHotStripAlgorithmFromClusterOccupancy"){ edm::LogInfo("SiStripQualityHotStripIdentifier") <<" [SiStripQualityHotStripIdentifier::getNewObject] call to SiStripHotStripAlgorithmFromClusterOccupancy"<<std::endl; SiStripHotStripAlgorithmFromClusterOccupancy theIdentifier(conf_, tTopo); theIdentifier.setProbabilityThreshold(parameters.getUntrackedParameter<double>("ProbabilityThreshold",1.E-7)); theIdentifier.setMinNumEntries(parameters.getUntrackedParameter<uint32_t>("MinNumEntries",100)); theIdentifier.setMinNumEntriesPerStrip(parameters.getUntrackedParameter<uint32_t>("MinNumEntriesPerStrip",5)); SiStripQuality* qobj = new SiStripQuality(); theIdentifier.extractBadStrips(qobj,ClusterPositionHistoMap,SiStripQuality_); edm::LogInfo("SiStripQualityHotStripIdentifier") <<" [SiStripQualityHotStripIdentifier::getNewObject] copy SiStripObject in SiStripBadStrip"<<std::endl; std::stringstream ss; SiStripBadStrip::RegistryIterator rIter=qobj->getRegistryVectorBegin(); SiStripBadStrip::RegistryIterator rIterEnd=qobj->getRegistryVectorEnd(); for(;rIter!=rIterEnd;++rIter){ SiStripBadStrip::Range range(qobj->getDataVectorBegin()+rIter->ibegin,qobj->getDataVectorBegin()+rIter->iend); if ( ! obj->put(rIter->detid,range) ) edm::LogError("SiStripQualityHotStripIdentifier")<<"[SiStripQualityHotStripIdentifier::getNewObject] detid already exists"<<std::endl; } edm::LogInfo("SiStripQualityHotStripIdentifier") <<" [SiStripQualityHotStripIdentifier::getNewObject] " << ss.str() << std::endl; } else { edm::LogError("SiStripQualityHotStripIdentifier") <<" [SiStripQualityHotStripIdentifier::getNewObject] call for a unknow HotStrip identification algoritm"<<std::endl; std::vector<uint32_t> a; SiStripBadStrip::Range range(a.begin(),a.end()); if ( ! obj->put(0xFFFFFFFF,range) ) edm::LogError("SiStripQualityHotStripIdentifier")<<"[SiStripQualityHotStripIdentifier::getNewObject] detid already exists"<<std::endl; } return obj; }
void SiStripQualityHotStripIdentifier::resetHistos | ( | ) | [private] |
Definition at line 108 of file SiStripQualityHotStripIdentifier.cc.
References ClusterPositionHistoMap.
Referenced by algoBeginLuminosityBlock(), and algoBeginRun().
{ edm::LogInfo("SiStripQualityHotStripIdentifier") <<" [SiStripQualityHotStripIdentifier::resetHistos] " << std::endl; SiStrip::QualityHistosMap::iterator it=ClusterPositionHistoMap.begin(); SiStrip::QualityHistosMap::iterator iEnd=ClusterPositionHistoMap.end(); for (;it!=iEnd;++it){ it->second->Reset(); } }
Definition at line 58 of file SiStripQualityHotStripIdentifier.h.
Referenced by algoAnalyze().
Definition at line 65 of file SiStripQualityHotStripIdentifier.h.
Referenced by algoEndJob(), bookHistos(), fillHisto(), getNewObject(), and resetHistos().
const edm::ParameterSet SiStripQualityHotStripIdentifier::conf_ [private] |
Definition at line 55 of file SiStripQualityHotStripIdentifier.h.
Referenced by getNewObject().
std::string SiStripQualityHotStripIdentifier::dataLabel_ [private] |
Definition at line 53 of file SiStripQualityHotStripIdentifier.h.
Referenced by algoBeginRun().
Definition at line 56 of file SiStripQualityHotStripIdentifier.h.
Referenced by SiStripQualityHotStripIdentifier().
unsigned long long SiStripQualityHotStripIdentifier::m_cacheID_ [private] |
Definition at line 52 of file SiStripQualityHotStripIdentifier.h.
Referenced by algoBeginRun().
unsigned short SiStripQualityHotStripIdentifier::MaxClusterWidth_ [private] |
Definition at line 63 of file SiStripQualityHotStripIdentifier.h.
Referenced by algoAnalyze(), and SiStripQualityHotStripIdentifier().
unsigned short SiStripQualityHotStripIdentifier::MinClusterWidth_ [private] |
Definition at line 63 of file SiStripQualityHotStripIdentifier.h.
Referenced by SiStripQualityHotStripIdentifier().
Definition at line 57 of file SiStripQualityHotStripIdentifier.h.
Referenced by bookHistos(), and SiStripQualityHotStripIdentifier().
Definition at line 54 of file SiStripQualityHotStripIdentifier.h.
Referenced by algoBeginRun(), and getNewObject().
Definition at line 59 of file SiStripQualityHotStripIdentifier.h.
Referenced by algoAnalyze().
Definition at line 60 of file SiStripQualityHotStripIdentifier.h.
Referenced by algoAnalyze().
const TrackerTopology* SiStripQualityHotStripIdentifier::tTopo [private] |
Definition at line 61 of file SiStripQualityHotStripIdentifier.h.
Referenced by algoBeginRun(), and getNewObject().