#include <DQM/SiStripMonitorSummary/plugins/SiStripCorrelateNoise.cc>
Classes | |
struct | Data |
Public Member Functions | |
SiStripCorrelateNoise (const edm::ParameterSet &) | |
~SiStripCorrelateNoise () | |
Private Member Functions | |
virtual void | analyze (const edm::Event &, const edm::EventSetup &) |
virtual void | beginRun (const edm::Run &run, const edm::EventSetup &es) |
void | checkGainCache (const edm::EventSetup &es) |
void | DoAnalysis (SiStripNoises, SiStripNoises &) |
void | DoPlots () |
virtual void | endJob () |
unsigned long long | getGainCache (const edm::EventSetup &eSetup) |
float | getGainRatio (const uint32_t &detid, const uint16_t &apv) |
TH1F * | getHisto (const long unsigned int &index) |
void | getHistos (const uint32_t &detid, std::vector< TH1F * > &histos) |
float | getMeanNoise (const SiStripNoises::Range &noiseRange, const uint32_t &first, const uint32_t &range) |
unsigned long long | getNoiseCache (const edm::EventSetup &eSetup) |
Private Attributes | |
unsigned long long | cacheID_gain |
unsigned long long | cacheID_noise |
bool | equalGain |
TFile * | file |
SiStripDetInfoFileReader * | fr |
edm::ESHandle< SiStripApvGain > | gainHandle_ |
SiStripApvGain * | newGain |
edm::ESHandle< SiStripNoises > | noiseHandle_ |
SiStripApvGain * | oldGain |
SiStripNoises * | refNoise |
uint32_t | theRun |
TrackerMap * | tkmap |
std::vector< TH1F * > | vTH1 |
Description: <one line="" class="" summary>="">
Implementation: <Notes on="" implementation>="">
Definition at line 50 of file SiStripCorrelateNoise.h.
SiStripCorrelateNoise::SiStripCorrelateNoise | ( | const edm::ParameterSet & | iConfig | ) | [explicit] |
Definition at line 11 of file SiStripCorrelateNoise.cc.
References file, fr, cmsCodeRules::cppFunctionSkipper::operator, and tkmap.
: refNoise(0),oldGain(0),newGain(0),cacheID_noise(0xFFFFFFFF),cacheID_gain(0xFFFFFFFF) { //now do what ever initialization is needed if(!edm::Service<SiStripDetInfoFileReader>().isAvailable()){ edm::LogError("TkLayerMap") << "\n------------------------------------------" "\nUnAvailable Service SiStripDetInfoFileReader: please insert in the configuration file an instance like" "\n\tprocess.SiStripDetInfoFileReader = cms.Service(\"SiStripDetInfoFileReader\")" "\n------------------------------------------"; } fr=edm::Service<SiStripDetInfoFileReader>().operator->(); file = new TFile("correlTest.root","RECREATE"); file->cd(); tkmap = new TrackerMap(); }
SiStripCorrelateNoise::~SiStripCorrelateNoise | ( | ) |
Definition at line 31 of file SiStripCorrelateNoise.cc.
{}
virtual void SiStripCorrelateNoise::analyze | ( | const edm::Event & | , |
const edm::EventSetup & | |||
) | [inline, private, virtual] |
void SiStripCorrelateNoise::beginRun | ( | const edm::Run & | run, |
const edm::EventSetup & | es | ||
) | [private, virtual] |
Reimplemented from edm::EDAnalyzer.
Definition at line 37 of file SiStripCorrelateNoise.cc.
References cacheID_noise, checkGainCache(), dir, DoAnalysis(), DoPlots(), file, edm::EventSetup::get(), getNoiseCache(), noiseHandle_, edm::ESHandle< T >::product(), refNoise, edm::RunBase::run(), and theRun.
{ if(getNoiseCache(es)==cacheID_noise ) return; edm::LogInfo("") << "[SiStripCorrelateNoise::beginRun] cacheID_noise " << cacheID_noise << std::endl; es.get<SiStripNoisesRcd>().get(noiseHandle_); SiStripNoises * aNoise= new SiStripNoises(*noiseHandle_.product()); //Check if gain is the same from one noise iov to the other, otherwise cache the new gain (and the old one) to rescale checkGainCache(es); if(cacheID_noise!=0xFFFFFFFF){ char dir[128]; theRun=run.run(); sprintf(dir,"Run_%d",theRun); file->cd(""); file->mkdir(dir); file->cd(dir); DoAnalysis(*noiseHandle_.product(),*refNoise); DoPlots(); } cacheID_noise=getNoiseCache(es); if(refNoise!=0) delete refNoise; refNoise=aNoise; }
void SiStripCorrelateNoise::checkGainCache | ( | const edm::EventSetup & | es | ) | [private] |
Definition at line 70 of file SiStripCorrelateNoise.cc.
References cacheID_gain, equalGain, gainHandle_, edm::EventSetup::get(), getGainCache(), newGain, oldGain, and edm::ESHandle< T >::product().
Referenced by beginRun().
{ equalGain=true; if(getGainCache(es)!=cacheID_gain ){ es.get<SiStripApvGainRcd>().get(gainHandle_); if(oldGain!=0) delete oldGain; oldGain = newGain; newGain = new SiStripApvGain(*gainHandle_.product()); if(cacheID_gain!=0xFFFFFFFF) equalGain=false; cacheID_gain=getGainCache(es); edm::LogInfo("") << "[SiStripCorrelateNoise::checkGainCache] cacheID_gain " << cacheID_gain << std::endl; } }
void SiStripCorrelateNoise::DoAnalysis | ( | SiStripNoises | Noise, |
SiStripNoises & | refNoise | ||
) | [private] |
Definition at line 119 of file SiStripCorrelateNoise.cc.
References runEdmFileComparison::collection, equalGain, HcalObjRepresent::Fill(), TrackerMap::fill(), getGainRatio(), getHistos(), mergeVDriftHistosByStation::histos, i, refNoise, strip(), tkmap, and relativeConstraints::value.
Referenced by beginRun().
{ typedef std::vector<SiStripNoises::ratioData> collection; collection divNoise=Noise/refNoise; edm::LogInfo("") << "[Doanalysis]"; std::vector<TH1F *>histos; collection::const_iterator iter=divNoise.begin(); collection::const_iterator iterE=divNoise.end(); float value; float gainRatio=1.; //Divide result by d for(;iter!=iterE;++iter){ getHistos(iter->detid,histos); size_t strip=0, stripE= iter->values.size(); size_t apvNb=7; for (;strip<stripE;++strip){ if(!equalGain && strip/128!=apvNb){ apvNb=strip/128; if(apvNb<6) gainRatio=getGainRatio(iter->detid,apvNb); else edm::LogInfo("") << "[Doanalysis] detid " << iter->detid << " strip " << strip << " apvNb " << apvNb; } //edm::LogInfo("") << "[Doanalysis] detid " << iter->detid << " strip " << strip << " value " << iter->values[strip]; value=iter->values[strip]*gainRatio; tkmap->fill(iter->detid,value); for(size_t i=0;i<histos.size();++i) histos[i]->Fill(value); } } }
void SiStripCorrelateNoise::DoPlots | ( | ) | [private] |
Definition at line 88 of file SiStripCorrelateNoise.cc.
References funct::C, dir, file, i, TrackerMap::save(), theRun, tkmap, and vTH1.
Referenced by beginRun().
{ TCanvas *C=new TCanvas(); C->Divide(2,2); char outName[128]; sprintf(outName,"Run_%d.png",theRun); for(size_t i=0;i<vTH1.size();i++) if(vTH1[i]!=0){ if(i%100==0){ C->cd(i/100); vTH1[i]->SetLineColor(i/100); vTH1[i]->Draw(); C->cd(i/100)->SetLogy(); } vTH1[i]->Write(); } C->Print(outName); delete C; vTH1.clear(); file->cd(""); char dir[128]; sprintf(dir,"Run_%d_TkMap.png",theRun); tkmap->save(false,0,5,dir); delete tkmap; tkmap = new TrackerMap(); }
void SiStripCorrelateNoise::endJob | ( | void | ) | [private, virtual] |
Reimplemented from edm::EDAnalyzer.
Definition at line 234 of file SiStripCorrelateNoise.cc.
References file.
unsigned long long SiStripCorrelateNoise::getGainCache | ( | const edm::EventSetup & | eSetup | ) | [inline, private] |
Definition at line 67 of file SiStripCorrelateNoise.h.
References edm::EventSetup::get().
Referenced by checkGainCache().
{ return eSetup.get<SiStripApvGainRcd>().cacheIdentifier();}
float SiStripCorrelateNoise::getGainRatio | ( | const uint32_t & | detid, |
const uint16_t & | apv | ||
) | [private] |
Definition at line 157 of file SiStripCorrelateNoise.cc.
References SiStripApvGain::getApvGain(), SiStripApvGain::getRange(), newGain, and oldGain.
Referenced by DoAnalysis().
{ SiStripApvGain::Range oldRange=oldGain->getRange(detid); SiStripApvGain::Range newRange=newGain->getRange(detid); if(oldRange.first==oldRange.second || newRange.first==newRange.second) return 1.; return oldGain->getApvGain(apv,oldRange)/newGain->getApvGain(apv,newRange); }
TH1F * SiStripCorrelateNoise::getHisto | ( | const long unsigned int & | index | ) | [private] |
Definition at line 210 of file SiStripCorrelateNoise.cc.
References getHLTprescales::index, mergeVDriftHistosByStation::name, theRun, and vTH1.
Referenced by getHistos().
{ if(vTH1.size()<index+1) vTH1.resize(index+1,0); if(vTH1[index]==0){ char name[128]; std::string SubD; if(index<200) SubD="TIB"; else if(index<300) SubD="TID"; else if(index<400) SubD="TOB"; else SubD="TEC"; sprintf(name,"%d_%lu__%s",theRun,index,SubD.c_str()); edm::LogInfo("")<<"[getHisto] creating index " << index << std::endl; vTH1[index]=new TH1F(name,name,200,-0.5,10.5); } return vTH1[index]; }
void SiStripCorrelateNoise::getHistos | ( | const uint32_t & | detid, |
std::vector< TH1F * > & | histos | ||
) | [private] |
Definition at line 181 of file SiStripCorrelateNoise.cc.
References a, getHisto(), getHLTprescales::index, TIBDetId::layer(), TOBDetId::layer(), TIDDetId::side(), TECDetId::side(), DetId::subdetId(), TIDDetId::wheel(), and TECDetId::wheel().
Referenced by DoAnalysis().
{ histos.clear(); int subdet=-999; int component=-999; SiStripDetId a(detid); if ( a.subdetId() == 3 ){ subdet=0; component=TIBDetId(detid).layer(); } else if ( a.subdetId() == 4 ) { subdet=1; component=TIDDetId(detid).side()==2?TIDDetId(detid).wheel():TIDDetId(detid).wheel()+3; } else if ( a.subdetId() == 5 ) { subdet=2; component=TOBDetId(detid).layer(); } else if ( a.subdetId() == 6 ) { subdet=3; component=TECDetId(detid).side()==2?TECDetId(detid).wheel():TECDetId(detid).wheel()+9; } int index=100+subdet*100+component; histos.push_back(getHisto(100+100*subdet)); histos.push_back(getHisto(index)); }
float SiStripCorrelateNoise::getMeanNoise | ( | const SiStripNoises::Range & | noiseRange, |
const uint32_t & | first, | ||
const uint32_t & | range | ||
) | [private] |
Definition at line 171 of file SiStripCorrelateNoise.cc.
References plotscripts::mean(), and noiseHandle_.
{ float mean=0; for (size_t istrip=firstStrip;istrip<firstStrip+range;istrip++){ mean+=noiseHandle_->getNoise(istrip,noiseRange); } return mean/(1.*range); }
unsigned long long SiStripCorrelateNoise::getNoiseCache | ( | const edm::EventSetup & | eSetup | ) | [inline, private] |
Definition at line 66 of file SiStripCorrelateNoise.h.
References edm::EventSetup::get().
Referenced by beginRun().
{ return eSetup.get<SiStripNoisesRcd>().cacheIdentifier();}
unsigned long long SiStripCorrelateNoise::cacheID_gain [private] |
Definition at line 98 of file SiStripCorrelateNoise.h.
Referenced by checkGainCache().
unsigned long long SiStripCorrelateNoise::cacheID_noise [private] |
Definition at line 97 of file SiStripCorrelateNoise.h.
Referenced by beginRun().
bool SiStripCorrelateNoise::equalGain [private] |
Definition at line 88 of file SiStripCorrelateNoise.h.
Referenced by checkGainCache(), and DoAnalysis().
TFile* SiStripCorrelateNoise::file [private] |
Definition at line 91 of file SiStripCorrelateNoise.h.
Referenced by beginRun(), DoPlots(), endJob(), and SiStripCorrelateNoise().
Definition at line 80 of file SiStripCorrelateNoise.h.
Referenced by SiStripCorrelateNoise().
Definition at line 81 of file SiStripCorrelateNoise.h.
Referenced by checkGainCache().
SiStripApvGain * SiStripCorrelateNoise::newGain [private] |
Definition at line 87 of file SiStripCorrelateNoise.h.
Referenced by checkGainCache(), and getGainRatio().
Definition at line 82 of file SiStripCorrelateNoise.h.
Referenced by beginRun(), and getMeanNoise().
SiStripApvGain* SiStripCorrelateNoise::oldGain [private] |
Definition at line 87 of file SiStripCorrelateNoise.h.
Referenced by checkGainCache(), and getGainRatio().
SiStripNoises* SiStripCorrelateNoise::refNoise [private] |
Definition at line 85 of file SiStripCorrelateNoise.h.
Referenced by beginRun(), and DoAnalysis().
uint32_t SiStripCorrelateNoise::theRun [private] |
Definition at line 84 of file SiStripCorrelateNoise.h.
Referenced by beginRun(), DoPlots(), and getHisto().
TrackerMap* SiStripCorrelateNoise::tkmap [private] |
Definition at line 94 of file SiStripCorrelateNoise.h.
Referenced by DoAnalysis(), DoPlots(), and SiStripCorrelateNoise().
std::vector<TH1F*> SiStripCorrelateNoise::vTH1 [private] |
Definition at line 92 of file SiStripCorrelateNoise.h.
Referenced by DoPlots(), and getHisto().