![]() |
![]() |
#include <DQM/SiStripMonitorCluster/src/SiStripMonitorCluster.cc>
Produces histograms related to clusters.
Definition at line 28 of file SiStripMonitorCluster.h.
SiStripMonitorCluster::SiStripMonitorCluster | ( | const edm::ParameterSet & | iConfig | ) | [explicit] |
Definition at line 45 of file SiStripMonitorCluster.cc.
References conf_, createTrendMEs, eventNb, firstEvent, edm::ParameterSet::getParameter(), layerswitchcluschargeon, layerswitchclusnoiseon, layerswitchclusposon, layerswitchclusstonon, layerswitchclusterwidthprofon, layerswitchcluswidthon, layerswitchlocaloccupancy, layerswitchncluson, layerswitchnrclusterizedstrip, layerswitchnumclusterprofon, Mod_On_, moduleswitchcluschargeon, moduleswitchclusnoiseon, moduleswitchclusposon, moduleswitchclusstonon, moduleswitchcluswidthon, moduleswitchlocaloccupancy, moduleswitchncluson, moduleswitchnrclusterizedstrip, subdetswitchtotclusterprofon, tecon, tibon, tidon, and tobon.
00045 : dqmStore_(edm::Service<DQMStore>().operator->()), conf_(iConfig), show_mechanical_structure_view(true), show_readout_view(false), show_control_view(false), select_all_detectors(false), reset_each_run(false), m_cacheID_(0) 00046 { 00047 00048 firstEvent = -1; 00049 eventNb = 0; 00050 00051 00052 //get on/off option for every cluster from cfi 00053 edm::ParameterSet ParametersnClusters = conf_.getParameter<edm::ParameterSet>("TH1nClusters"); 00054 layerswitchncluson = ParametersnClusters.getParameter<bool>("layerswitchon"); 00055 moduleswitchncluson = ParametersnClusters.getParameter<bool>("moduleswitchon"); 00056 00057 edm::ParameterSet ParametersClusterCharge = conf_.getParameter<edm::ParameterSet>("TH1ClusterCharge"); 00058 layerswitchcluschargeon = ParametersClusterCharge.getParameter<bool>("layerswitchon"); 00059 moduleswitchcluschargeon = ParametersClusterCharge.getParameter<bool>("moduleswitchon"); 00060 00061 edm::ParameterSet ParametersClusterStoN = conf_.getParameter<edm::ParameterSet>("TH1ClusterStoN"); 00062 layerswitchclusstonon = ParametersClusterStoN.getParameter<bool>("layerswitchon"); 00063 moduleswitchclusstonon = ParametersClusterStoN.getParameter<bool>("moduleswitchon"); 00064 00065 edm::ParameterSet ParametersClusterPos = conf_.getParameter<edm::ParameterSet>("TH1ClusterPos"); 00066 layerswitchclusposon = ParametersClusterPos.getParameter<bool>("layerswitchon"); 00067 moduleswitchclusposon = ParametersClusterPos.getParameter<bool>("moduleswitchon"); 00068 00069 edm::ParameterSet ParametersClusterNoise = conf_.getParameter<edm::ParameterSet>("TH1ClusterNoise"); 00070 layerswitchclusnoiseon = ParametersClusterNoise.getParameter<bool>("layerswitchon"); 00071 moduleswitchclusnoiseon = ParametersClusterNoise.getParameter<bool>("moduleswitchon"); 00072 00073 edm::ParameterSet ParametersClusterWidth = conf_.getParameter<edm::ParameterSet>("TH1ClusterWidth"); 00074 layerswitchcluswidthon = ParametersClusterWidth.getParameter<bool>("layerswitchon"); 00075 moduleswitchcluswidthon = ParametersClusterWidth.getParameter<bool>("moduleswitchon"); 00076 00077 edm::ParameterSet ParametersModuleLocalOccupancy = conf_.getParameter<edm::ParameterSet>("TH1ModuleLocalOccupancy"); 00078 layerswitchlocaloccupancy = ParametersModuleLocalOccupancy.getParameter<bool>("layerswitchon"); 00079 moduleswitchlocaloccupancy = ParametersModuleLocalOccupancy.getParameter<bool>("moduleswitchon"); 00080 00081 edm::ParameterSet ParametersNrOfClusterizedStrips = conf_.getParameter<edm::ParameterSet>("TH1NrOfClusterizedStrips"); 00082 layerswitchnrclusterizedstrip = ParametersNrOfClusterizedStrips.getParameter<bool>("layerswitchon"); 00083 moduleswitchnrclusterizedstrip = ParametersNrOfClusterizedStrips.getParameter<bool>("moduleswitchon"); 00084 00085 edm::ParameterSet ParametersClusterProf = conf_.getParameter<edm::ParameterSet>("TProfNumberOfCluster"); 00086 layerswitchnumclusterprofon = ParametersClusterProf.getParameter<bool>("layerswitchon"); 00087 00088 edm::ParameterSet ParametersClusterWidthProf = conf_.getParameter<edm::ParameterSet>("TProfClusterWidth"); 00089 layerswitchclusterwidthprofon = ParametersClusterWidthProf.getParameter<bool>("layerswitchon"); 00090 00091 edm::ParameterSet ParametersTotDigiProf = conf_.getParameter<edm::ParameterSet>("TProfTotalNumberOfClusters"); 00092 subdetswitchtotclusterprofon = ParametersTotDigiProf.getParameter<bool>("subdetswitchon"); 00093 00094 edm::ParameterSet ParametersDetsOn = conf_.getParameter<edm::ParameterSet>("detectorson"); 00095 tibon = ParametersDetsOn.getParameter<bool>("tibon"); 00096 tidon = ParametersDetsOn.getParameter<bool>("tidon"); 00097 tobon = ParametersDetsOn.getParameter<bool>("tobon"); 00098 tecon = ParametersDetsOn.getParameter<bool>("tecon"); 00099 00100 createTrendMEs = conf_.getParameter<bool>("CreateTrendMEs"); 00101 Mod_On_ = conf_.getParameter<bool>("Mod_On"); 00102 }
SiStripMonitorCluster::~SiStripMonitorCluster | ( | ) |
void SiStripMonitorCluster::analyze | ( | const edm::Event & | iEvent, | |
const edm::EventSetup & | iSetup | |||
) | [virtual] |
Implements edm::EDAnalyzer.
Definition at line 219 of file SiStripMonitorCluster.cc.
References edmNew::DetSet< T >::begin(), SiStripMonitorCluster::ClusterProperties::charge, conf_, createTrendMEs, e, edmNew::DetSetVector< T >::end(), edmNew::DetSet< T >::end(), eventNb, MonitorElement::Fill(), fillLayerMEs(), fillME(), fillModuleMEs(), fillTrend(), edm::EventSetup::get(), edm::Event::getByLabel(), edm::ParameterSet::getParameter(), edm::Event::id(), it, SiStripMonitorCluster::LayerMEs::LayerClusterWidthProfile, LayerDetMap, SiStripMonitorCluster::LayerMEs::LayerLocalOccupancy, SiStripMonitorCluster::LayerMEs::LayerLocalOccupancyTrend, LayerMEMap, SiStripMonitorCluster::LayerMEs::LayerNumberOfClusterProfile, layerswitchclusterwidthprofon, layerswitchlocaloccupancy, layerswitchnumclusterprofon, python::multivaluedict::map(), me, Mod_On_, SiStripMonitorCluster::ModMEs::ModuleLocalOccupancy, ModuleMEMap, moduleswitchlocaloccupancy, moduleswitchncluson, moduleswitchnrclusterizedstrip, SiStripMonitorCluster::ClusterProperties::noise, SiStripMonitorCluster::ModMEs::NrOfClusterizedStrips, NULL, SiStripMonitorCluster::ModMEs::NumberOfClusters, edm::Event::orbitNumber(), SiStripMonitorCluster::ClusterProperties::position, runNb, SiStripDetCabling_, edmNew::DetSet< T >::size(), funct::sqrt(), SubDetMEsMap, subdetswitchtotclusterprofon, cms::Exception::what(), and SiStripMonitorCluster::ClusterProperties::width.
00220 { 00221 00222 using namespace edm; 00223 00224 runNb = iEvent.id().run(); 00225 // eventNb = iEvent.id().event(); 00226 eventNb++; 00227 float iOrbit = iEvent.orbitNumber()/11223.0; 00228 00229 //std::cout << " run " << iEvent.id().run() << runNb << " event " << iEvent.id().event() << eventNb << std::endl; 00230 00231 edm::ESHandle<SiStripNoises> noiseHandle; 00232 iSetup.get<SiStripNoisesRcd>().get(noiseHandle); 00233 00234 edm::ESHandle<SiStripGain> gainHandle; 00235 iSetup.get<SiStripGainRcd>().get(gainHandle); 00236 00237 std::string quality_label = conf_.getParameter<std::string>("StripQualityLabel"); 00238 edm::ESHandle<SiStripQuality> qualityHandle; 00239 iSetup.get<SiStripQualityRcd>().get(quality_label,qualityHandle); 00240 00241 iSetup.get<SiStripDetCablingRcd>().get(SiStripDetCabling_); 00242 00243 // retrieve producer name of input StripClusterCollection 00244 std::string clusterProducer = conf_.getParameter<std::string>("ClusterProducer"); 00245 // get collection of DetSetVector of clusters from Event 00246 edm::Handle< edmNew::DetSetVector<SiStripCluster> > cluster_detsetvektor; 00247 iEvent.getByLabel(clusterProducer, cluster_detsetvektor); 00248 00249 //if (!cluster_detsetvektor.isValid()) std::cout<<" collection not valid"<<std::endl; 00250 if (!cluster_detsetvektor.isValid()) return; 00251 00252 int nTotClusterTIB = 0; 00253 int nTotClusterTOB = 0; 00254 int nTotClusterTEC = 0; 00255 int nTotClusterTID = 0; 00256 00257 bool found_layer_me = false; 00258 for (std::map<std::string, std::vector< uint32_t > >::const_iterator iterLayer = LayerDetMap.begin(); 00259 iterLayer != LayerDetMap.end(); iterLayer++) { 00260 00261 std::string layer_label = iterLayer->first; 00262 00263 std::vector< uint32_t > layer_dets = iterLayer->second; 00264 int ncluster_layer = 0; 00265 std::map<std::string, LayerMEs>::iterator iLayerME = LayerMEMap.find(layer_label); 00266 00267 //get Layer MEs 00268 LayerMEs layer_single; 00269 if(iLayerME != LayerMEMap.end()) { 00270 layer_single = iLayerME->second; 00271 found_layer_me = true; 00272 } 00273 00274 bool found_module_me = false; 00275 uint16_t iDet = 0; 00276 // loop over all modules in the layer 00277 for (std::vector< uint32_t >::const_iterator iterDets = layer_dets.begin() ; 00278 iterDets != layer_dets.end() ; iterDets++) { 00279 iDet++; 00280 // detid and type of ME 00281 uint32_t detid = (*iterDets); 00282 00283 // DetId and corresponding set of MEs 00284 ModMEs mod_single; 00285 if (Mod_On_) { 00286 std::map<uint32_t, ModMEs >::iterator imodME = ModuleMEMap.find(detid); 00287 if (imodME != ModuleMEMap.end()) { 00288 mod_single = imodME->second; 00289 found_module_me = true; 00290 } 00291 } else found_module_me = false; 00292 00293 edmNew::DetSetVector<SiStripCluster>::const_iterator isearch = cluster_detsetvektor->find(detid); // search clusters of detid 00294 00295 if(isearch==cluster_detsetvektor->end()){ 00296 if(found_module_me && moduleswitchncluson && (mod_single.NumberOfClusters)){ 00297 (mod_single.NumberOfClusters)->Fill(0.); // no clusters for this detector module,fill histogram with 0 00298 } 00299 if (found_layer_me && layerswitchnumclusterprofon) layer_single.LayerNumberOfClusterProfile->Fill(iDet, 0.0); 00300 continue; // no clusters for this detid => jump to next step of loop 00301 } 00302 00303 //cluster_detset is a structure, cluster_detset.data is a std::vector<SiStripCluster>, cluster_detset.id is uint32_t 00304 edmNew::DetSet<SiStripCluster> cluster_detset = (*cluster_detsetvektor)[detid]; // the statement above makes sure there exists an element with 'detid' 00305 00306 if(moduleswitchncluson && found_module_me && (mod_single.NumberOfClusters != NULL)){ // nr. of clusters per module 00307 (mod_single.NumberOfClusters)->Fill(static_cast<float>(cluster_detset.size())); 00308 } 00309 if (found_layer_me && layerswitchnumclusterprofon) 00310 layer_single.LayerNumberOfClusterProfile->Fill(iDet, static_cast<float>(cluster_detset.size())); 00311 ncluster_layer += cluster_detset.size(); 00312 00313 short total_clusterized_strips = 0; 00314 // 00315 00316 SiStripNoises::Range detNoiseRange = noiseHandle->getRange(detid); 00317 SiStripApvGain::Range detGainRange = gainHandle->getRange(detid); 00318 SiStripQuality::Range qualityRange = qualityHandle->getRange(detid); 00319 00320 for(edmNew::DetSet<SiStripCluster>::const_iterator clusterIter = cluster_detset.begin(); clusterIter!= cluster_detset.end(); clusterIter++){ 00321 const edm::ParameterSet ps = conf_.getParameter<edm::ParameterSet>("ClusterConditions"); 00322 const std::vector<uint8_t>& ampls = clusterIter->amplitudes(); 00323 // cluster position 00324 float cluster_position = clusterIter->barycenter(); 00325 // width defined as nr. of strips that belong to cluster 00326 short cluster_width = ampls.size(); 00327 // add nr of strips of this cluster to total nr. of clusterized strips 00328 total_clusterized_strips = total_clusterized_strips + cluster_width; 00329 00330 // cluster signal and noise from the amplitudes 00331 float cluster_signal = 0.0; 00332 float cluster_noise = 0.0; 00333 int nrnonzeroamplitudes = 0; 00334 float noise2 = 0.0; 00335 float noise = 0.0; 00336 for(uint iamp=0; iamp<ampls.size(); iamp++){ 00337 if(ampls[iamp]>0){ // nonzero amplitude 00338 cluster_signal += ampls[iamp]; 00339 try{ 00340 if(!qualityHandle->IsStripBad(qualityRange, clusterIter->firstStrip()+iamp)){ 00341 noise = noiseHandle->getNoise(clusterIter->firstStrip()+iamp,detNoiseRange)/gainHandle->getStripGain(clusterIter->firstStrip()+iamp, detGainRange); 00342 } 00343 } 00344 catch(cms::Exception& e){ 00345 edm::LogError("SiStripTkDQM|SiStripMonitorCluster|DB")<<" cms::Exception: detid="<<detid<<" firstStrip="<<clusterIter->firstStrip()<<" iamp="<<iamp<<e.what(); 00346 } 00347 noise2 += noise*noise; 00348 nrnonzeroamplitudes++; 00349 } 00350 } // End loop over cluster amplitude 00351 00352 if (nrnonzeroamplitudes > 0) cluster_noise = sqrt(noise2/nrnonzeroamplitudes); 00353 00354 if( ps.getParameter<bool>("On") && 00355 (cluster_signal/cluster_noise < ps.getParameter<double>("minStoN") || 00356 cluster_signal/cluster_noise > ps.getParameter<double>("maxStoN") || 00357 cluster_width < ps.getParameter<double>("minWidth") || 00358 cluster_width > ps.getParameter<double>("maxWidth")) ) continue; 00359 00360 ClusterProperties cluster_properties; 00361 cluster_properties.charge = cluster_signal; 00362 cluster_properties.position = cluster_position; 00363 cluster_properties.width = cluster_width; 00364 cluster_properties.noise = cluster_noise; 00365 00366 // Fill Module Level MEs 00367 if (found_module_me) fillModuleMEs(mod_single, cluster_properties); 00368 00369 // Fill Layer Level MEs 00370 if (found_layer_me) { 00371 fillLayerMEs(layer_single, cluster_properties); 00372 if (layerswitchclusterwidthprofon) 00373 layer_single.LayerClusterWidthProfile->Fill(iDet, cluster_width); 00374 } 00375 } // end loop over clusters 00376 00377 short total_nr_strips = SiStripDetCabling_->nApvPairs(detid) * 2 * 128; // get correct # of avp pairs 00378 float local_occupancy = static_cast<float>(total_clusterized_strips)/static_cast<float>(total_nr_strips); 00379 if (found_module_me) { 00380 if(moduleswitchnrclusterizedstrip && mod_single.NrOfClusterizedStrips ){ // nr of clusterized strips 00381 mod_single.NrOfClusterizedStrips->Fill(static_cast<float>(total_clusterized_strips)); 00382 } 00383 00384 if(moduleswitchlocaloccupancy && mod_single.ModuleLocalOccupancy ){ // Occupancy 00385 mod_single.ModuleLocalOccupancy->Fill(local_occupancy); 00386 } 00387 } 00388 if (layerswitchlocaloccupancy && found_layer_me && layer_single.LayerLocalOccupancy) { 00389 fillME(layer_single.LayerLocalOccupancy,local_occupancy); 00390 if (createTrendMEs) fillTrend(layer_single.LayerLocalOccupancyTrend,local_occupancy); 00391 } 00392 } 00393 if (layer_label.find("TIB") != std::string::npos) nTotClusterTIB += ncluster_layer; 00394 else if (layer_label.find("TOB") != std::string::npos) nTotClusterTOB += ncluster_layer; 00395 else if (layer_label.find("TEC") != std::string::npos) nTotClusterTEC += ncluster_layer; 00396 else if (layer_label.find("TID") != std::string::npos) nTotClusterTID += ncluster_layer; 00397 } 00398 if (subdetswitchtotclusterprofon) { 00399 for (std::map<std::string, MonitorElement*>::iterator it = SubDetMEsMap.begin(); 00400 it != SubDetMEsMap.end(); it++) { 00401 MonitorElement* me = it->second; 00402 if (!me) continue; 00403 if (it->first == "TIB") me->Fill(iOrbit,nTotClusterTIB); 00404 else if (it->first == "TOB") me->Fill(iOrbit,nTotClusterTOB); 00405 else if (it->first == "TID") me->Fill(iOrbit,nTotClusterTID); 00406 else if (it->first == "TEC") me->Fill(iOrbit,nTotClusterTEC); 00407 } 00408 } 00409 }
void SiStripMonitorCluster::beginRun | ( | const edm::Run & | run, | |
const edm::EventSetup & | es | |||
) | [virtual] |
Reimplemented from edm::EDAnalyzer.
Definition at line 108 of file SiStripMonitorCluster.cc.
References createMEs(), edm::EventSetup::get(), m_cacheID_, ModuleMEMap, reset_each_run, ResetModuleMEs(), and show_mechanical_structure_view.
00108 { 00109 00110 if (show_mechanical_structure_view) { 00111 unsigned long long cacheID = es.get<SiStripDetCablingRcd>().cacheIdentifier(); 00112 if (m_cacheID_ != cacheID) { 00113 m_cacheID_ = cacheID; 00114 edm::LogInfo("SiStripMonitorCluster") <<"SiStripMonitorCluster::beginRun: " 00115 << " Creating MEs for new Cabling "; 00116 00117 createMEs(es); 00118 } 00119 } else if (reset_each_run) { 00120 edm::LogInfo("SiStripMonitorCluster") <<"SiStripMonitorCluster::beginRun: " 00121 << " Resetting MEs "; 00122 for (std::map<uint32_t, ModMEs >::const_iterator idet = ModuleMEMap.begin() ; idet!=ModuleMEMap.end() ; idet++) { 00123 ResetModuleMEs(idet->first); 00124 } 00125 } 00126 }
MonitorElement * SiStripMonitorCluster::bookME1D | ( | const char * | ParameterSetLabel, | |
const char * | HistoName | |||
) | [private] |
Definition at line 757 of file SiStripMonitorCluster.cc.
References DQMStore::book1D(), conf_, dqmStore_, edm::ParameterSet::getParameter(), and Parameters.
Referenced by createLayerMEs(), and createModuleMEs().
00758 { 00759 Parameters = conf_.getParameter<edm::ParameterSet>(ParameterSetLabel); 00760 return dqmStore_->book1D(HistoName,HistoName, 00761 Parameters.getParameter<int32_t>("Nbinx"), 00762 Parameters.getParameter<double>("xmin"), 00763 Parameters.getParameter<double>("xmax") 00764 ); 00765 }
MonitorElement * SiStripMonitorCluster::bookMETrend | ( | const char * | ParameterSetLabel, | |
const char * | HistoName | |||
) | [private] |
Definition at line 735 of file SiStripMonitorCluster.cc.
References DQMStore::bookProfile(), conf_, dqmStore_, edm::ParameterSet::getParameter(), me, and Parameters.
Referenced by createLayerMEs().
00736 { 00737 Parameters = conf_.getParameter<edm::ParameterSet>(ParameterSetLabel); 00738 edm::ParameterSet ParametersTrend = conf_.getParameter<edm::ParameterSet>("Trending"); 00739 MonitorElement* me = dqmStore_->bookProfile(HistoName,HistoName, 00740 ParametersTrend.getParameter<int32_t>("Nbins"), 00741 // 0, 00742 ParametersTrend.getParameter<double>("xmin"), 00743 ParametersTrend.getParameter<double>("xmax"), 00744 // ParametersTrend.getParameter<int32_t>("Nbins"), 00745 100, //that parameter should not be there !? 00746 ParametersTrend.getParameter<double>("ymin"), 00747 ParametersTrend.getParameter<double>("ymax"), 00748 "" ); 00749 if(!me) return me; 00750 char buffer[256]; 00751 sprintf(buffer,"EventId/%d",ParametersTrend.getParameter<int32_t>("Steps")); 00752 me->setAxisTitle(std::string(buffer),1); 00753 return me; 00754 }
Definition at line 531 of file SiStripMonitorCluster.cc.
References bookME1D(), bookMETrend(), DQMStore::bookProfile(), SiStripHistoId::createHistoLayer(), createTrendMEs, dqmStore_, SiStripMonitorCluster::LayerMEs::LayerClusterCharge, SiStripMonitorCluster::LayerMEs::LayerClusterChargeTrend, SiStripMonitorCluster::LayerMEs::LayerClusterNoise, SiStripMonitorCluster::LayerMEs::LayerClusterNoiseTrend, SiStripMonitorCluster::LayerMEs::LayerClusterStoN, SiStripMonitorCluster::LayerMEs::LayerClusterStoNTrend, SiStripMonitorCluster::LayerMEs::LayerClusterWidth, SiStripMonitorCluster::LayerMEs::LayerClusterWidthProfile, SiStripMonitorCluster::LayerMEs::LayerClusterWidthTrend, SiStripMonitorCluster::LayerMEs::LayerLocalOccupancy, SiStripMonitorCluster::LayerMEs::LayerLocalOccupancyTrend, LayerMEMap, SiStripMonitorCluster::LayerMEs::LayerNumberOfClusterProfile, layerswitchcluschargeon, layerswitchclusnoiseon, layerswitchclusstonon, layerswitchclusterwidthprofon, layerswitchcluswidthon, layerswitchlocaloccupancy, and layerswitchnumclusterprofon.
Referenced by createMEs().
00531 { 00532 00533 std::map<std::string, LayerMEs>::iterator iLayerME = LayerMEMap.find(label); 00534 if(iLayerME==LayerMEMap.end()){ 00535 SiStripHistoId hidmanager; 00536 LayerMEs layerMEs; 00537 00538 00539 //Cluster Width 00540 if(layerswitchcluswidthon) { 00541 layerMEs.LayerClusterWidth=bookME1D("TH1ClusterWidth", hidmanager.createHistoLayer("Summary_ClusterWidth","layer",label,"").c_str()); 00542 if (createTrendMEs) layerMEs.LayerClusterWidthTrend=bookMETrend("TH1ClusterWidth", hidmanager.createHistoLayer("Trend_ClusterWidth","layer",label,"").c_str()); 00543 } 00544 00545 //Cluster Noise 00546 if(layerswitchclusnoiseon) { 00547 layerMEs.LayerClusterNoise=bookME1D("TH1ClusterNoise", hidmanager.createHistoLayer("Summary_ClusterNoise","layer",label,"").c_str()); 00548 if (createTrendMEs) layerMEs.LayerClusterNoiseTrend=bookMETrend("TH1ClusterNoise", hidmanager.createHistoLayer("Trend_ClusterNoise","layer",label,"").c_str()); 00549 } 00550 00551 //Cluster Charge 00552 if(layerswitchcluschargeon) { 00553 layerMEs.LayerClusterCharge=bookME1D("TH1ClusterCharge", hidmanager.createHistoLayer("Summary_ClusterCharge","layer",label,"").c_str()); 00554 if (createTrendMEs) layerMEs.LayerClusterChargeTrend=bookMETrend("TH1ClusterCharge", hidmanager.createHistoLayer("Trend_ClusterCharge","layer",label,"").c_str()); 00555 } 00556 00557 //Cluster StoN 00558 if(layerswitchclusstonon) { 00559 layerMEs.LayerClusterStoN=bookME1D("TH1ClusterStoN", hidmanager.createHistoLayer("Summary_ClusterSignalOverNoise","layer",label,"").c_str()); 00560 if (createTrendMEs) layerMEs.LayerClusterStoNTrend=bookMETrend("TH1ClusterStoN", hidmanager.createHistoLayer("Trend_ClusterSignalOverNoise","layer",label,"").c_str()); 00561 } 00562 00563 //Cluster Occupancy 00564 if(layerswitchlocaloccupancy) { 00565 layerMEs.LayerLocalOccupancy=bookME1D("TH1ModuleLocalOccupancy", hidmanager.createHistoLayer("Summary_ClusterLocalOccupancy","layer",label,"").c_str()); 00566 if (createTrendMEs) layerMEs.LayerLocalOccupancyTrend=bookME1D("TH1ModuleLocalOccupancy", hidmanager.createHistoLayer("Trend_ClusterLocalOccupancy","layer",label,"").c_str()); 00567 00568 } 00569 00570 // # of Cluster Profile 00571 if(layerswitchnumclusterprofon) { 00572 std::string hid = hidmanager.createHistoLayer("NumberOfClusterProfile","layer",label,""); 00573 layerMEs.LayerNumberOfClusterProfile = dqmStore_->bookProfile(hid, hid, ndets, 0.5, ndets+0.5,21, -0.5, 20.5); 00574 } 00575 00576 // Cluster Width Profile 00577 if(layerswitchclusterwidthprofon) { 00578 std::string hid = hidmanager.createHistoLayer("ClusterWidthProfile","layer",label,""); 00579 layerMEs.LayerClusterWidthProfile = dqmStore_->bookProfile(hid, hid, ndets, 0.5, ndets+0.5, 20, -0.5, 19.5); 00580 } 00581 00582 LayerMEMap[label]=layerMEs; 00583 } 00584 00585 }
void SiStripMonitorCluster::createMEs | ( | const edm::EventSetup & | es | ) | [private] |
Definition at line 129 of file SiStripMonitorCluster.cc.
References funct::abs(), createLayerMEs(), createModuleMEs(), createSubDetMEs(), DetectedLayers, edm::EventSetup::get(), getLayerLabel(), SiStripFolderOrganizer::GetSubDetAndLayer(), SiStripSubStructure::getTECDetectors(), SiStripSubStructure::getTIBDetectors(), SiStripSubStructure::getTIDDetectors(), SiStripSubStructure::getTOBDetectors(), label, LayerDetMap, Mod_On_, ModuleMEMap, reset_each_run, ResetModuleMEs(), select_all_detectors, SiStripFolderOrganizer::setDetectorFolder(), SiStripFolderOrganizer::setLayerFolder(), SiStripFolderOrganizer::setSiStripFolder(), show_mechanical_structure_view, SiStripDetCabling_, SubDetMEsMap, subdetswitchtotclusterprofon, tecon, tibon, tidon, and tobon.
Referenced by beginRun().
00129 { 00130 if ( show_mechanical_structure_view ){ 00131 // take from eventSetup the SiStripDetCabling object - here will use SiStripDetControl later on 00132 es.get<SiStripDetCablingRcd>().get(SiStripDetCabling_); 00133 00134 // get list of active detectors from SiStripDetCabling 00135 std::vector<uint32_t> activeDets; 00136 SiStripDetCabling_->addActiveDetectorsRawIds(activeDets); 00137 00138 std::vector<uint32_t> SelectedDetIds; 00139 SiStripSubStructure substructure; 00140 if(select_all_detectors){ 00141 // select all detectors if appropriate flag is set, for example for the mtcc 00142 SelectedDetIds = activeDets; 00143 }else{ 00144 // use SiStripSubStructure for selecting certain regions 00145 if(tibon) substructure.getTIBDetectors(activeDets, SelectedDetIds, 0, 0, 0, 0); // this adds rawDetIds to SelectedDetIds 00146 if(tobon) substructure.getTOBDetectors(activeDets, SelectedDetIds, 0, 0, 0); // this adds rawDetIds to SelectedDetIds 00147 if(tidon) substructure.getTIDDetectors(activeDets, SelectedDetIds, 0, 0, 0, 0); // this adds rawDetIds to SelectedDetIds 00148 if(tecon) substructure.getTECDetectors(activeDets, SelectedDetIds, 0, 0, 0, 0, 0, 0); // this adds rawDetIds to SelectedDetIds 00149 00150 } 00151 SiStripFolderOrganizer folder_organizer; 00152 folder_organizer.setSiStripFolder(); 00153 00154 // loop over detectors and book MEs 00155 edm::LogInfo("SiStripTkDQM|SiStripMonitorCluster")<<"nr. of SelectedDetIds: "<<SelectedDetIds.size(); 00156 for(std::vector<uint32_t>::iterator detid_iterator = SelectedDetIds.begin(); detid_iterator!=SelectedDetIds.end(); detid_iterator++){ 00157 uint32_t detid = (*detid_iterator); 00158 // remove any eventual zero elements - there should be none, but just in case 00159 if(detid == 0) { 00160 SelectedDetIds.erase(detid_iterator); 00161 continue; 00162 } 00163 00164 if (Mod_On_) { 00165 ModMEs mod_single; 00166 // set appropriate folder using SiStripFolderOrganizer 00167 folder_organizer.setDetectorFolder(detid); // pass the detid to this method 00168 if (reset_each_run) ResetModuleMEs(detid); 00169 createModuleMEs(mod_single, detid); 00170 // append to ModuleMEMap 00171 ModuleMEMap.insert( std::make_pair(detid, mod_single)); 00172 } 00173 00174 // Created Layer Level MEs if they are not created already 00175 std::pair<std::string,int32_t> det_layer_pair = folder_organizer.GetSubDetAndLayer(detid); 00176 if (DetectedLayers.find(det_layer_pair) == DetectedLayers.end()){ 00177 DetectedLayers[det_layer_pair]=true; 00178 00179 int32_t lnumber = det_layer_pair.second; 00180 std::vector<uint32_t> layerDetIds; 00181 if (det_layer_pair.first == "TIB") { 00182 substructure.getTIBDetectors(SelectedDetIds,layerDetIds,lnumber,0,0,0); 00183 if (subdetswitchtotclusterprofon && SubDetMEsMap.find("TIB") == SubDetMEsMap.end()) createSubDetMEs("TIB"); 00184 } else if (det_layer_pair.first == "TOB") { 00185 substructure.getTOBDetectors(SelectedDetIds,layerDetIds,lnumber,0,0); 00186 if (subdetswitchtotclusterprofon && SubDetMEsMap.find("TOB") == SubDetMEsMap.end()) createSubDetMEs("TOB"); 00187 } else if (det_layer_pair.first == "TID" && lnumber > 0) { 00188 substructure.getTIDDetectors(SelectedDetIds,layerDetIds,2,abs(lnumber),0,0); 00189 if (subdetswitchtotclusterprofon && SubDetMEsMap.find("TID") == SubDetMEsMap.end()) createSubDetMEs("TID"); 00190 } else if (det_layer_pair.first == "TID" && lnumber < 0) { 00191 substructure.getTIDDetectors(SelectedDetIds,layerDetIds,1,abs(lnumber),0,0); 00192 if (subdetswitchtotclusterprofon && SubDetMEsMap.find("TID") == SubDetMEsMap.end()) createSubDetMEs("TID"); 00193 } else if (det_layer_pair.first == "TEC" && lnumber > 0) { 00194 substructure.getTECDetectors(SelectedDetIds,layerDetIds,2,abs(lnumber),0,0,0,0); 00195 if (subdetswitchtotclusterprofon && SubDetMEsMap.find("TEC") == SubDetMEsMap.end()) createSubDetMEs("TEC"); 00196 } else if (det_layer_pair.first == "TEC" && lnumber < 0) { 00197 substructure.getTECDetectors(SelectedDetIds,layerDetIds,1,abs(lnumber),0,0,0,0); 00198 if (subdetswitchtotclusterprofon && SubDetMEsMap.find("TEC") == SubDetMEsMap.end()) createSubDetMEs("TEC"); 00199 } 00200 00201 std::string label; 00202 getLayerLabel(detid, label); 00203 LayerDetMap[label] = layerDetIds; 00204 00205 // book Layer plots 00206 folder_organizer.setLayerFolder(detid,det_layer_pair.second); 00207 createLayerMEs(label, layerDetIds.size()); 00208 } 00209 00210 }//end of loop over detectors 00211 00212 }//end of if 00213 00214 }//end of method
Definition at line 440 of file SiStripMonitorCluster.cc.
References DQMStore::book1D(), bookME1D(), DQMStore::bookProfile(), SiStripMonitorCluster::ModMEs::ClusterCharge, SiStripMonitorCluster::ModMEs::ClusterNoise, SiStripMonitorCluster::ModMEs::ClusterPosition, SiStripMonitorCluster::ModMEs::ClusterSignalOverNoise, SiStripMonitorCluster::ModMEs::ClusterSignalOverNoiseVsPos, SiStripMonitorCluster::ModMEs::ClusterWidth, conf_, SiStripHistoId::createHistoId(), dqmStore_, edm::ParameterSet::getParameter(), MonitorElement::getTH1(), SiStripMonitorCluster::ModMEs::ModuleLocalOccupancy, moduleswitchcluschargeon, moduleswitchclusnoiseon, moduleswitchclusposon, moduleswitchclusstonon, moduleswitchclusstonVsposon, moduleswitchcluswidthon, moduleswitchlocaloccupancy, moduleswitchncluson, moduleswitchnrclusterizedstrip, SiStripMonitorCluster::ModMEs::NrOfClusterizedStrips, SiStripMonitorCluster::ModMEs::NumberOfClusters, Parameters, MonitorElement::setAxisTitle(), SiStripDetCabling_, and DQMStore::tag().
Referenced by createMEs().
00440 { 00441 00442 // use SistripHistoId for producing histogram id (and title) 00443 SiStripHistoId hidmanager; 00444 std::string hid; 00445 00446 //nr. of clusters per module 00447 if(moduleswitchncluson) { 00448 hid = hidmanager.createHistoId("NumberOfClusters","det",detid); 00449 mod_single.NumberOfClusters = bookME1D("TH1nClusters", hid.c_str()); 00450 dqmStore_->tag(mod_single.NumberOfClusters, detid); 00451 mod_single.NumberOfClusters->setAxisTitle("number of clusters in one detector module"); 00452 mod_single.NumberOfClusters->getTH1()->StatOverflows(kTRUE); // over/underflows in Mean calculation 00453 } 00454 00455 //ClusterPosition 00456 if(moduleswitchclusposon) { 00457 short total_nr_strips = SiStripDetCabling_->nApvPairs(detid) * 2 * 128; // get correct # of avp pairs 00458 hid = hidmanager.createHistoId("ClusterPosition","det",detid); 00459 mod_single.ClusterPosition = dqmStore_->book1D(hid, hid, total_nr_strips, 0.5, total_nr_strips+0.5); 00460 dqmStore_->tag(mod_single.ClusterPosition, detid); 00461 mod_single.ClusterPosition->setAxisTitle("cluster position [strip number +0.5]"); 00462 } 00463 00464 //ClusterWidth 00465 if(moduleswitchcluswidthon) { 00466 hid = hidmanager.createHistoId("ClusterWidth","det",detid); 00467 mod_single.ClusterWidth = bookME1D("TH1ClusterWidth", hid.c_str()); 00468 dqmStore_->tag(mod_single.ClusterWidth, detid); 00469 mod_single.ClusterWidth->setAxisTitle("cluster width [nr strips]"); 00470 } 00471 00472 //ClusterCharge 00473 if(moduleswitchcluschargeon) { 00474 hid = hidmanager.createHistoId("ClusterCharge","det",detid); 00475 mod_single.ClusterCharge = bookME1D("TH1ClusterCharge", hid.c_str()); 00476 dqmStore_->tag(mod_single.ClusterCharge, detid); 00477 mod_single.ClusterCharge->setAxisTitle("cluster charge [ADC]"); 00478 } 00479 00480 //ClusterNoise 00481 if(moduleswitchclusnoiseon) { 00482 hid = hidmanager.createHistoId("ClusterNoise","det",detid); 00483 mod_single.ClusterNoise = bookME1D("TH1ClusterNoise", hid.c_str()); 00484 dqmStore_->tag(mod_single.ClusterNoise, detid); 00485 mod_single.ClusterNoise->setAxisTitle("cluster noise"); 00486 } 00487 00488 //ClusterSignalOverNoise 00489 if(moduleswitchclusstonon) { 00490 hid = hidmanager.createHistoId("ClusterSignalOverNoise","det",detid); 00491 mod_single.ClusterSignalOverNoise = bookME1D("TH1ClusterStoN", hid.c_str()); 00492 dqmStore_->tag(mod_single.ClusterSignalOverNoise, detid); 00493 mod_single.ClusterSignalOverNoise->setAxisTitle("ratio of signal to noise for each cluster"); 00494 } 00495 00496 //ClusterSignalOverNoiseVsPos 00497 if(moduleswitchclusstonVsposon) { 00498 hid = hidmanager.createHistoId("ClusterSignalOverNoiseVsPos","det",detid); 00499 Parameters = conf_.getParameter<edm::ParameterSet>("TH1ClusterStoNVsPos"); 00500 mod_single.ClusterSignalOverNoiseVsPos= dqmStore_->bookProfile(hid.c_str(),hid.c_str(), 00501 Parameters.getParameter<int32_t>("Nbinx"), 00502 Parameters.getParameter<double>("xmin"), 00503 Parameters.getParameter<double>("xmax"), 00504 Parameters.getParameter<int32_t>("Nbiny"), 00505 Parameters.getParameter<double>("ymin"), 00506 Parameters.getParameter<double>("ymax") 00507 ); 00508 dqmStore_->tag(mod_single.ClusterSignalOverNoiseVsPos, detid); 00509 mod_single.ClusterSignalOverNoiseVsPos->setAxisTitle("pos"); 00510 } 00511 00512 //ModuleLocalOccupancy 00513 if (moduleswitchlocaloccupancy) { 00514 hid = hidmanager.createHistoId("ClusterLocalOccupancy","det",detid); 00515 mod_single.ModuleLocalOccupancy = bookME1D("TH1ModuleLocalOccupancy", hid.c_str()); 00516 dqmStore_->tag(mod_single.ModuleLocalOccupancy, detid); 00517 mod_single.ModuleLocalOccupancy->setAxisTitle("module local occupancy [% of clusterized strips]"); 00518 } 00519 00520 //NrOfClusterizedStrips 00521 if (moduleswitchnrclusterizedstrip) { 00522 hid = hidmanager.createHistoId("NrOfClusterizedStrips","det",detid); 00523 mod_single.NrOfClusterizedStrips = bookME1D("TH1NrOfClusterizedStrips", hid.c_str()); 00524 dqmStore_->tag(mod_single.NrOfClusterizedStrips, detid); 00525 mod_single.NrOfClusterizedStrips->setAxisTitle("number of clusterized strips"); 00526 } 00527 }
void SiStripMonitorCluster::createSubDetMEs | ( | std::string | label | ) | [private] |
Definition at line 589 of file SiStripMonitorCluster.cc.
References DQMStore::bookProfile(), DQMStore::cd(), conf_, MonitorElement::DQM_KIND_TPROFILE, dqmStore_, edm::ParameterSet::getParameter(), MonitorElement::getTH1(), MonitorElement::kind(), me, Parameters, MonitorElement::setAxisTitle(), and SubDetMEsMap.
Referenced by createMEs().
00589 { 00590 edm::ParameterSet Parameters = conf_.getParameter<edm::ParameterSet>("TProfTotalNumberOfClusters"); 00591 std::string HistoName; 00592 dqmStore_->cd("SiStrip/MechanicalView/"+label); 00593 HistoName = "TotalNumberOfClusterProfile__" + label; 00594 MonitorElement* me = dqmStore_->bookProfile(HistoName,HistoName, 00595 Parameters.getParameter<int32_t>("Nbins"), 00596 Parameters.getParameter<double>("xmin"), 00597 Parameters.getParameter<double>("xmax"), 00598 100, //that parameter should not be there !? 00599 Parameters.getParameter<double>("ymin"), 00600 Parameters.getParameter<double>("ymax"), 00601 "" ); 00602 if (!me) return; 00603 me->setAxisTitle("Event Time (Seconds)",1); 00604 if (me->kind() == MonitorElement::DQM_KIND_TPROFILE) me->getTH1()->SetBit(TH1::kCanRebin); 00605 SubDetMEsMap.insert( std::make_pair(label, me)); 00606 }
Reimplemented from edm::EDAnalyzer.
Definition at line 413 of file SiStripMonitorCluster.cc.
References conf_, dqmStore_, edm::ParameterSet::getParameter(), iggi_31X_cfg::outputFileName, and DQMStore::save().
00413 { 00414 bool outputMEsInRootFile = conf_.getParameter<bool>("OutputMEsInRootFile"); 00415 std::string outputFileName = conf_.getParameter<std::string>("OutputFileName"); 00416 00417 // save histos in a file 00418 if(outputMEsInRootFile) dqmStore_->save(outputFileName); 00419 }
void SiStripMonitorCluster::fillLayerMEs | ( | LayerMEs & | layerMEs, | |
ClusterProperties & | cluster | |||
) | [private] |
Definition at line 639 of file SiStripMonitorCluster.cc.
References SiStripMonitorCluster::ClusterProperties::charge, createTrendMEs, fillME(), fillTrend(), SiStripMonitorCluster::LayerMEs::LayerClusterCharge, SiStripMonitorCluster::LayerMEs::LayerClusterChargeTrend, SiStripMonitorCluster::LayerMEs::LayerClusterNoise, SiStripMonitorCluster::LayerMEs::LayerClusterNoiseTrend, SiStripMonitorCluster::LayerMEs::LayerClusterStoN, SiStripMonitorCluster::LayerMEs::LayerClusterStoNTrend, SiStripMonitorCluster::LayerMEs::LayerClusterWidth, SiStripMonitorCluster::LayerMEs::LayerClusterWidthTrend, layerswitchcluschargeon, layerswitchclusnoiseon, layerswitchclusstonon, layerswitchcluswidthon, SiStripMonitorCluster::ClusterProperties::noise, and SiStripMonitorCluster::ClusterProperties::width.
Referenced by analyze().
00639 { 00640 if(layerswitchclusstonon) { 00641 fillME(layerMEs.LayerClusterStoN ,cluster.charge/cluster.noise); 00642 if (createTrendMEs) fillTrend(layerMEs.LayerClusterStoNTrend,cluster.charge/cluster.noise); 00643 } 00644 00645 if(layerswitchcluschargeon) { 00646 fillME(layerMEs.LayerClusterCharge,cluster.charge); 00647 if (createTrendMEs) fillTrend(layerMEs.LayerClusterChargeTrend,cluster.charge); 00648 } 00649 00650 if(layerswitchclusnoiseon) { 00651 fillME(layerMEs.LayerClusterNoise ,cluster.noise); 00652 if (createTrendMEs) fillTrend(layerMEs.LayerClusterNoiseTrend,cluster.noise); 00653 } 00654 00655 if(layerswitchcluswidthon) { 00656 fillME(layerMEs.LayerClusterWidth ,cluster.width); 00657 if (createTrendMEs) fillTrend(layerMEs.LayerClusterWidthTrend,cluster.width); 00658 } 00659 00660 }
void SiStripMonitorCluster::fillME | ( | MonitorElement * | ME, | |
float | value1, | |||
float | value2, | |||
float | value3, | |||
float | value4 | |||
) | [inline, private] |
Definition at line 93 of file SiStripMonitorCluster.h.
References MonitorElement::Fill().
00093 {if (ME!=0)ME->Fill(value1,value2,value3,value4);}
void SiStripMonitorCluster::fillME | ( | MonitorElement * | ME, | |
float | value1, | |||
float | value2, | |||
float | value3 | |||
) | [inline, private] |
Definition at line 92 of file SiStripMonitorCluster.h.
References MonitorElement::Fill().
00092 {if (ME!=0)ME->Fill(value1,value2,value3);}
void SiStripMonitorCluster::fillME | ( | MonitorElement * | ME, | |
float | value1, | |||
float | value2 | |||
) | [inline, private] |
Definition at line 91 of file SiStripMonitorCluster.h.
References MonitorElement::Fill().
00091 {if (ME!=0)ME->Fill(value1,value2);}
void SiStripMonitorCluster::fillME | ( | MonitorElement * | ME, | |
float | value1 | |||
) | [inline, private] |
Definition at line 90 of file SiStripMonitorCluster.h.
References MonitorElement::Fill().
Referenced by analyze(), and fillLayerMEs().
00090 {if (ME!=0)ME->Fill(value1);}
void SiStripMonitorCluster::fillModuleMEs | ( | ModMEs & | mod_mes, | |
ClusterProperties & | cluster | |||
) | [private] |
Definition at line 611 of file SiStripMonitorCluster.cc.
References SiStripMonitorCluster::ClusterProperties::charge, SiStripMonitorCluster::ModMEs::ClusterCharge, SiStripMonitorCluster::ModMEs::ClusterNoise, SiStripMonitorCluster::ModMEs::ClusterPosition, SiStripMonitorCluster::ModMEs::ClusterSignalOverNoise, SiStripMonitorCluster::ModMEs::ClusterSignalOverNoiseVsPos, SiStripMonitorCluster::ModMEs::ClusterWidth, moduleswitchcluschargeon, moduleswitchclusnoiseon, moduleswitchclusposon, moduleswitchclusstonon, moduleswitchclusstonVsposon, moduleswitchcluswidthon, SiStripMonitorCluster::ClusterProperties::noise, SiStripMonitorCluster::ClusterProperties::position, and SiStripMonitorCluster::ClusterProperties::width.
Referenced by analyze().
00611 { 00612 00613 if(moduleswitchclusposon && (mod_mes.ClusterPosition)) // position of cluster 00614 (mod_mes.ClusterPosition)->Fill(cluster.position); 00615 00616 if(moduleswitchcluswidthon && (mod_mes.ClusterWidth)) // width of cluster 00617 (mod_mes.ClusterWidth)->Fill(static_cast<float>(cluster.width)); 00618 00619 if(moduleswitchclusstonon && (mod_mes.ClusterSignalOverNoise)) {// SignalToNoise 00620 if (cluster.noise > 0) 00621 (mod_mes.ClusterSignalOverNoise)->Fill(cluster.charge/cluster.noise); 00622 } 00623 00624 if(moduleswitchclusstonVsposon && (mod_mes.ClusterSignalOverNoiseVsPos)) {// SignalToNoise 00625 if (cluster.noise > 0) 00626 (mod_mes.ClusterSignalOverNoiseVsPos)->Fill(cluster.position,cluster.charge/cluster.noise); 00627 } 00628 00629 if(moduleswitchclusnoiseon && (mod_mes.ClusterNoise)) // Noise 00630 (mod_mes.ClusterNoise)->Fill(cluster.noise); 00631 00632 if(moduleswitchcluschargeon && (mod_mes.ClusterCharge)) // charge of cluster 00633 (mod_mes.ClusterCharge)->Fill(cluster.charge); 00634 00635 }
void SiStripMonitorCluster::fillTrend | ( | MonitorElement * | me, | |
float | value | |||
) | [private] |
Definition at line 664 of file SiStripMonitorCluster.cc.
References conf_, python::tagInventory::entries, error, eventNb, MonitorElement::Fill(), firstEvent, MonitorElement::getAxisTitle(), MonitorElement::getBinContent(), MonitorElement::getBinEntries(), MonitorElement::getBinError(), MonitorElement::getEntries(), MonitorElement::getNbinsX(), edm::ParameterSet::getParameter(), int, btag::LeptonSelector::option(), funct::pow(), MonitorElement::setAxisTitle(), MonitorElement::setBinContent(), MonitorElement::setBinEntries(), MonitorElement::setBinError(), and MonitorElement::setEntries().
Referenced by analyze(), and fillLayerMEs().
00665 { 00666 if(!me) return; 00667 //check the origin and check options 00668 int option = conf_.getParameter<edm::ParameterSet>("Trending").getParameter<int32_t>("UpdateMode"); 00669 if(firstEvent==-1) firstEvent = eventNb; 00670 int CurrentStep = atoi(me->getAxisTitle(1).c_str()+8); 00671 int firstEventUsed = firstEvent; 00672 int presentOverflow = (int)me->getBinEntries(me->getNbinsX()+1); 00673 if(option==2) firstEventUsed += CurrentStep * int(me->getBinEntries(me->getNbinsX()+1)); 00674 else if(option==3) firstEventUsed += CurrentStep * int(me->getBinEntries(me->getNbinsX()+1)) * me->getNbinsX(); 00675 //fill 00676 me->Fill((eventNb-firstEventUsed)/CurrentStep,value); 00677 00678 if(eventNb-firstEvent<1) return; 00679 // check if we reached the end 00680 if(presentOverflow == me->getBinEntries(me->getNbinsX()+1)) return; 00681 switch(option) { 00682 case 1: 00683 { 00684 // mode 1: rebin and change X scale 00685 int NbinsX = me->getNbinsX(); 00686 float entries = 0.; 00687 float content = 0.; 00688 float error = 0.; 00689 int bin = 1; 00690 int totEntries = int(me->getEntries()); 00691 for(;bin<=NbinsX/2;++bin) { 00692 content = (me->getBinContent(2*bin-1) + me->getBinContent(2*bin))/2.; 00693 error = pow((me->getBinError(2*bin-1)*me->getBinError(2*bin-1)) + (me->getBinError(2*bin)*me->getBinError(2*bin)),0.5)/2.; 00694 entries = me->getBinEntries(2*bin-1) + me->getBinEntries(2*bin); 00695 me->setBinContent(bin,content*entries); 00696 me->setBinError(bin,error); 00697 me->setBinEntries(bin,entries); 00698 } 00699 for(;bin<=NbinsX+1;++bin) { 00700 me->setBinContent(bin,0); 00701 me->setBinError(bin,0); 00702 me->setBinEntries(bin,0); 00703 } 00704 me->setEntries(totEntries); 00705 char buffer[256]; 00706 sprintf(buffer,"EventId/%d",CurrentStep*2); 00707 me->setAxisTitle(std::string(buffer),1); 00708 break; 00709 } 00710 case 2: 00711 { 00712 // mode 2: slide 00713 int bin=1; 00714 int NbinsX = me->getNbinsX(); 00715 for(;bin<=NbinsX;++bin) { 00716 me->setBinContent(bin,me->getBinContent(bin+1)*me->getBinEntries(bin+1)); 00717 me->setBinError(bin,me->getBinError(bin+1)); 00718 me->setBinEntries(bin,me->getBinEntries(bin+1)); 00719 } 00720 break; 00721 } 00722 case 3: 00723 { 00724 // mode 3: reset 00725 int NbinsX = me->getNbinsX(); 00726 for(int bin=0;bin<=NbinsX;++bin) { 00727 me->setBinContent(bin,0); 00728 me->setBinError(bin,0); 00729 me->setBinEntries(bin,0); 00730 } 00731 break; 00732 } 00733 } 00734 }
void SiStripMonitorCluster::getLayerLabel | ( | uint32_t | idetid, | |
std::string & | label | |||
) | [private] |
Definition at line 767 of file SiStripMonitorCluster.cc.
References lat::endl(), TIBDetId::layer(), TOBDetId::layer(), TIDDetId::side(), TECDetId::side(), DetId::subdetId(), StripSubdetector::TEC, StripSubdetector::TIB, StripSubdetector::TID, StripSubdetector::TOB, TIDDetId::wheel(), and TECDetId::wheel().
Referenced by createMEs().
00767 { 00768 StripSubdetector subdet(detid); 00769 std::ostringstream label_str; 00770 00771 if(subdet.subdetId() == StripSubdetector::TIB ){ 00772 // --------------------------- TIB --------------------------- // 00773 TIBDetId tib1 = TIBDetId(detid); 00774 label_str << "TIB__layer__" << tib1.layer(); 00775 }else if(subdet.subdetId() == StripSubdetector::TID){ 00776 // --------------------------- TID --------------------------- // 00777 TIDDetId tid1 = TIDDetId(detid); 00778 label_str << "TID__side__" << tid1.side() << "__wheel__" << tid1.wheel(); 00779 }else if(subdet.subdetId() == StripSubdetector::TOB){ 00780 // --------------------------- TOB --------------------------- // 00781 TOBDetId tob1 = TOBDetId(detid); 00782 label_str << "TOB__layer__" << tob1.layer(); 00783 }else if(subdet.subdetId() == StripSubdetector::TEC) { 00784 // --------------------------- TEC --------------------------- // 00785 TECDetId tec1 = TECDetId(detid); 00786 label_str << "TEC__side__"<<tec1.side() << "__wheel__" << tec1.wheel(); 00787 }else{ 00788 // --------------------------- ??? --------------------------- // 00789 edm::LogError("SiStripTkDQM|WrongInput")<<"no such subdetector type :"<<subdet.subdetId()<<" no folder set!"<<std::endl; 00790 label_str << ""; 00791 } 00792 label = label_str.str(); 00793 }
void SiStripMonitorCluster::ResetModuleMEs | ( | uint32_t | idet | ) | [private] |
Definition at line 423 of file SiStripMonitorCluster.cc.
References SiStripMonitorCluster::ModMEs::ClusterCharge, SiStripMonitorCluster::ModMEs::ClusterNoise, SiStripMonitorCluster::ModMEs::ClusterPosition, SiStripMonitorCluster::ModMEs::ClusterSignalOverNoise, SiStripMonitorCluster::ModMEs::ClusterSignalOverNoiseVsPos, SiStripMonitorCluster::ModMEs::ClusterWidth, SiStripMonitorCluster::ModMEs::ModuleLocalOccupancy, ModuleMEMap, moduleswitchcluschargeon, moduleswitchclusnoiseon, moduleswitchclusposon, moduleswitchclusstonon, moduleswitchclusstonVsposon, moduleswitchcluswidthon, moduleswitchlocaloccupancy, moduleswitchncluson, moduleswitchnrclusterizedstrip, SiStripMonitorCluster::ModMEs::NrOfClusterizedStrips, SiStripMonitorCluster::ModMEs::NumberOfClusters, and MonitorElement::Reset().
Referenced by beginRun(), and createMEs().
00423 { 00424 std::map<uint32_t, ModMEs >::iterator pos = ModuleMEMap.find(idet); 00425 ModMEs mod_me = pos->second; 00426 00427 if (moduleswitchncluson) mod_me.NumberOfClusters->Reset(); 00428 if (moduleswitchclusposon) mod_me.ClusterPosition->Reset(); 00429 if (moduleswitchclusstonVsposon) mod_me.ClusterSignalOverNoiseVsPos->Reset(); 00430 if (moduleswitchcluswidthon) mod_me.ClusterWidth->Reset(); 00431 if (moduleswitchcluschargeon) mod_me.ClusterCharge->Reset(); 00432 if (moduleswitchclusnoiseon) mod_me.ClusterNoise->Reset(); 00433 if (moduleswitchclusstonon) mod_me.ClusterSignalOverNoise->Reset(); 00434 if (moduleswitchlocaloccupancy) mod_me.ModuleLocalOccupancy->Reset(); 00435 if (moduleswitchnrclusterizedstrip) mod_me.NrOfClusterizedStrips->Reset(); 00436 }
Definition at line 99 of file SiStripMonitorCluster.h.
Referenced by analyze(), bookME1D(), bookMETrend(), createModuleMEs(), createSubDetMEs(), endJob(), fillTrend(), and SiStripMonitorCluster().
bool SiStripMonitorCluster::createTrendMEs [private] |
Definition at line 147 of file SiStripMonitorCluster.h.
Referenced by analyze(), createLayerMEs(), fillLayerMEs(), and SiStripMonitorCluster().
std::map<std::pair<std::string,int32_t>,bool> SiStripMonitorCluster::DetectedLayers [private] |
DQMStore* SiStripMonitorCluster::dqmStore_ [private] |
Definition at line 98 of file SiStripMonitorCluster.h.
Referenced by bookME1D(), bookMETrend(), createLayerMEs(), createModuleMEs(), createSubDetMEs(), and endJob().
int SiStripMonitorCluster::eventNb [private] |
Definition at line 116 of file SiStripMonitorCluster.h.
Referenced by analyze(), fillTrend(), and SiStripMonitorCluster().
int SiStripMonitorCluster::firstEvent [private] |
Definition at line 117 of file SiStripMonitorCluster.h.
Referenced by fillTrend(), and SiStripMonitorCluster().
std::map<std::string, std::vector< uint32_t > > SiStripMonitorCluster::LayerDetMap [private] |
std::map<std::string, LayerMEs> SiStripMonitorCluster::LayerMEMap [private] |
Definition at line 101 of file SiStripMonitorCluster.h.
Referenced by analyze(), and createLayerMEs().
Definition at line 120 of file SiStripMonitorCluster.h.
Referenced by createLayerMEs(), fillLayerMEs(), and SiStripMonitorCluster().
Definition at line 123 of file SiStripMonitorCluster.h.
Referenced by createLayerMEs(), fillLayerMEs(), and SiStripMonitorCluster().
Definition at line 121 of file SiStripMonitorCluster.h.
Referenced by createLayerMEs(), fillLayerMEs(), and SiStripMonitorCluster().
Definition at line 128 of file SiStripMonitorCluster.h.
Referenced by analyze(), createLayerMEs(), and SiStripMonitorCluster().
Definition at line 124 of file SiStripMonitorCluster.h.
Referenced by createLayerMEs(), fillLayerMEs(), and SiStripMonitorCluster().
Definition at line 125 of file SiStripMonitorCluster.h.
Referenced by analyze(), createLayerMEs(), and SiStripMonitorCluster().
Definition at line 127 of file SiStripMonitorCluster.h.
Referenced by analyze(), createLayerMEs(), and SiStripMonitorCluster().
unsigned long long SiStripMonitorCluster::m_cacheID_ [private] |
bool SiStripMonitorCluster::Mod_On_ [private] |
Definition at line 149 of file SiStripMonitorCluster.h.
Referenced by analyze(), createMEs(), and SiStripMonitorCluster().
std::map<uint32_t, ModMEs> SiStripMonitorCluster::ModuleMEMap [private] |
Definition at line 100 of file SiStripMonitorCluster.h.
Referenced by analyze(), beginRun(), createMEs(), and ResetModuleMEs().
std::vector<uint32_t> SiStripMonitorCluster::ModulesToBeExcluded_ [private] |
Definition at line 110 of file SiStripMonitorCluster.h.
Definition at line 131 of file SiStripMonitorCluster.h.
Referenced by createModuleMEs(), fillModuleMEs(), ResetModuleMEs(), and SiStripMonitorCluster().
Definition at line 135 of file SiStripMonitorCluster.h.
Referenced by createModuleMEs(), fillModuleMEs(), ResetModuleMEs(), and SiStripMonitorCluster().
Definition at line 134 of file SiStripMonitorCluster.h.
Referenced by createModuleMEs(), fillModuleMEs(), ResetModuleMEs(), and SiStripMonitorCluster().
Definition at line 132 of file SiStripMonitorCluster.h.
Referenced by createModuleMEs(), fillModuleMEs(), ResetModuleMEs(), and SiStripMonitorCluster().
Definition at line 133 of file SiStripMonitorCluster.h.
Referenced by createModuleMEs(), fillModuleMEs(), and ResetModuleMEs().
Definition at line 136 of file SiStripMonitorCluster.h.
Referenced by createModuleMEs(), fillModuleMEs(), ResetModuleMEs(), and SiStripMonitorCluster().
Definition at line 137 of file SiStripMonitorCluster.h.
Referenced by analyze(), createModuleMEs(), ResetModuleMEs(), and SiStripMonitorCluster().
Definition at line 130 of file SiStripMonitorCluster.h.
Referenced by analyze(), createModuleMEs(), ResetModuleMEs(), and SiStripMonitorCluster().
Definition at line 138 of file SiStripMonitorCluster.h.
Referenced by analyze(), createModuleMEs(), ResetModuleMEs(), and SiStripMonitorCluster().
Definition at line 112 of file SiStripMonitorCluster.h.
Referenced by bookME1D(), bookMETrend(), createModuleMEs(), and createSubDetMEs().
bool SiStripMonitorCluster::reset_each_run [private] |
int SiStripMonitorCluster::runNb [private] |
bool SiStripMonitorCluster::show_control_view [private] |
Definition at line 106 of file SiStripMonitorCluster.h.
bool SiStripMonitorCluster::show_readout_view [private] |
Definition at line 106 of file SiStripMonitorCluster.h.
Definition at line 109 of file SiStripMonitorCluster.h.
Referenced by analyze(), createMEs(), and createModuleMEs().
std::map<std::string, MonitorElement* > SiStripMonitorCluster::SubDetMEsMap [private] |
Definition at line 103 of file SiStripMonitorCluster.h.
Referenced by analyze(), createMEs(), and createSubDetMEs().
Definition at line 139 of file SiStripMonitorCluster.h.
Referenced by analyze(), createMEs(), and SiStripMonitorCluster().
bool SiStripMonitorCluster::tecon [private] |
Definition at line 145 of file SiStripMonitorCluster.h.
Referenced by createMEs(), and SiStripMonitorCluster().
bool SiStripMonitorCluster::tibon [private] |
Definition at line 142 of file SiStripMonitorCluster.h.
Referenced by createMEs(), and SiStripMonitorCluster().
bool SiStripMonitorCluster::tidon [private] |
Definition at line 143 of file SiStripMonitorCluster.h.
Referenced by createMEs(), and SiStripMonitorCluster().
bool SiStripMonitorCluster::tobon [private] |
Definition at line 144 of file SiStripMonitorCluster.h.
Referenced by createMEs(), and SiStripMonitorCluster().