CMS 3D CMS Logo

SiStripMonitorCluster Class Reference

Data Quality Monitoring source of the Silicon Strip Tracker. More...

#include <DQM/SiStripMonitorCluster/src/SiStripMonitorCluster.cc>

Inheritance diagram for SiStripMonitorCluster:

edm::EDAnalyzer

List of all members.

Public Member Functions

virtual void analyze (const edm::Event &, const edm::EventSetup &)
virtual void beginRun (const edm::Run &, const edm::EventSetup &)
virtual void endJob ()
 SiStripMonitorCluster (const edm::ParameterSet &)
 ~SiStripMonitorCluster ()

Private Member Functions

MonitorElementbookME1D (const char *ParameterSetLabel, const char *HistoName)
MonitorElementbookMETrend (const char *, const char *)
void createLayerMEs (std::string label, int ndets)
void createMEs (const edm::EventSetup &es)
void createModuleMEs (ModMEs &mod_single, uint32_t detid)
void createSubDetMEs (std::string label)
void fillLayerMEs (LayerMEs &, ClusterProperties &cluster)
void fillME (MonitorElement *ME, float value1, float value2, float value3, float value4)
void fillME (MonitorElement *ME, float value1, float value2, float value3)
void fillME (MonitorElement *ME, float value1, float value2)
void fillME (MonitorElement *ME, float value1)
void fillModuleMEs (ModMEs &mod_mes, ClusterProperties &cluster)
void fillTrend (MonitorElement *me, float value)
void getLayerLabel (uint32_t idetid, std::string &label)
void ResetModuleMEs (uint32_t idet)

Private Attributes

edm::ParameterSet conf_
bool createTrendMEs
std::map< std::pair
< std::string, int32_t >, bool
DetectedLayers
DQMStoredqmStore_
int eventNb
int firstEvent
std::map< std::string,
std::vector< uint32_t > > 
LayerDetMap
std::map< std::string, LayerMEsLayerMEMap
bool layerswitchcluschargeon
bool layerswitchclusnoiseon
bool layerswitchclusposon
bool layerswitchclusstonon
bool layerswitchclusterwidthprofon
bool layerswitchcluswidthon
bool layerswitchlocaloccupancy
bool layerswitchncluson
bool layerswitchnrclusterizedstrip
bool layerswitchnumclusterprofon
unsigned long long m_cacheID_
bool Mod_On_
std::map< uint32_t, ModMEsModuleMEMap
std::vector< uint32_t > ModulesToBeExcluded_
bool moduleswitchcluschargeon
bool moduleswitchclusnoiseon
bool moduleswitchclusposon
bool moduleswitchclusstonon
bool moduleswitchclusstonVsposon
bool moduleswitchcluswidthon
bool moduleswitchlocaloccupancy
bool moduleswitchncluson
bool moduleswitchnrclusterizedstrip
edm::ParameterSet Parameters
bool reset_each_run
int runNb
bool select_all_detectors
bool show_control_view
bool show_mechanical_structure_view
bool show_readout_view
edm::ESHandle< SiStripDetCablingSiStripDetCabling_
std::map< std::string,
MonitorElement * > 
SubDetMEsMap
bool subdetswitchtotclusterprofon
bool tecon
bool tibon
bool tidon
bool tobon

Classes

struct  ClusterProperties
struct  LayerMEs
struct  ModMEs


Detailed Description

Data Quality Monitoring source of the Silicon Strip Tracker.

Produces histograms related to clusters.

Definition at line 28 of file SiStripMonitorCluster.h.


Constructor & Destructor Documentation

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 (  ) 

Definition at line 105 of file SiStripMonitorCluster.cc.

00105 { }


Member Function Documentation

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 }

void SiStripMonitorCluster::createLayerMEs ( std::string  label,
int  ndets 
) [private]

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

void SiStripMonitorCluster::createModuleMEs ( ModMEs mod_single,
uint32_t  detid 
) [private]

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 }

void SiStripMonitorCluster::endJob ( void   )  [virtual]

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 }


Member Data Documentation

edm::ParameterSet SiStripMonitorCluster::conf_ [private]

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]

Definition at line 114 of file SiStripMonitorCluster.h.

Referenced by createMEs().

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]

Definition at line 102 of file SiStripMonitorCluster.h.

Referenced by analyze(), and createMEs().

std::map<std::string, LayerMEs> SiStripMonitorCluster::LayerMEMap [private]

Definition at line 101 of file SiStripMonitorCluster.h.

Referenced by analyze(), and createLayerMEs().

bool SiStripMonitorCluster::layerswitchcluschargeon [private]

Definition at line 120 of file SiStripMonitorCluster.h.

Referenced by createLayerMEs(), fillLayerMEs(), and SiStripMonitorCluster().

bool SiStripMonitorCluster::layerswitchclusnoiseon [private]

Definition at line 123 of file SiStripMonitorCluster.h.

Referenced by createLayerMEs(), fillLayerMEs(), and SiStripMonitorCluster().

bool SiStripMonitorCluster::layerswitchclusposon [private]

Definition at line 122 of file SiStripMonitorCluster.h.

Referenced by SiStripMonitorCluster().

bool SiStripMonitorCluster::layerswitchclusstonon [private]

Definition at line 121 of file SiStripMonitorCluster.h.

Referenced by createLayerMEs(), fillLayerMEs(), and SiStripMonitorCluster().

bool SiStripMonitorCluster::layerswitchclusterwidthprofon [private]

Definition at line 128 of file SiStripMonitorCluster.h.

Referenced by analyze(), createLayerMEs(), and SiStripMonitorCluster().

bool SiStripMonitorCluster::layerswitchcluswidthon [private]

Definition at line 124 of file SiStripMonitorCluster.h.

Referenced by createLayerMEs(), fillLayerMEs(), and SiStripMonitorCluster().

bool SiStripMonitorCluster::layerswitchlocaloccupancy [private]

Definition at line 125 of file SiStripMonitorCluster.h.

Referenced by analyze(), createLayerMEs(), and SiStripMonitorCluster().

bool SiStripMonitorCluster::layerswitchncluson [private]

Definition at line 119 of file SiStripMonitorCluster.h.

Referenced by SiStripMonitorCluster().

bool SiStripMonitorCluster::layerswitchnrclusterizedstrip [private]

Definition at line 126 of file SiStripMonitorCluster.h.

Referenced by SiStripMonitorCluster().

bool SiStripMonitorCluster::layerswitchnumclusterprofon [private]

Definition at line 127 of file SiStripMonitorCluster.h.

Referenced by analyze(), createLayerMEs(), and SiStripMonitorCluster().

unsigned long long SiStripMonitorCluster::m_cacheID_ [private]

Definition at line 107 of file SiStripMonitorCluster.h.

Referenced by beginRun().

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.

bool SiStripMonitorCluster::moduleswitchcluschargeon [private]

Definition at line 131 of file SiStripMonitorCluster.h.

Referenced by createModuleMEs(), fillModuleMEs(), ResetModuleMEs(), and SiStripMonitorCluster().

bool SiStripMonitorCluster::moduleswitchclusnoiseon [private]

Definition at line 135 of file SiStripMonitorCluster.h.

Referenced by createModuleMEs(), fillModuleMEs(), ResetModuleMEs(), and SiStripMonitorCluster().

bool SiStripMonitorCluster::moduleswitchclusposon [private]

Definition at line 134 of file SiStripMonitorCluster.h.

Referenced by createModuleMEs(), fillModuleMEs(), ResetModuleMEs(), and SiStripMonitorCluster().

bool SiStripMonitorCluster::moduleswitchclusstonon [private]

Definition at line 132 of file SiStripMonitorCluster.h.

Referenced by createModuleMEs(), fillModuleMEs(), ResetModuleMEs(), and SiStripMonitorCluster().

bool SiStripMonitorCluster::moduleswitchclusstonVsposon [private]

Definition at line 133 of file SiStripMonitorCluster.h.

Referenced by createModuleMEs(), fillModuleMEs(), and ResetModuleMEs().

bool SiStripMonitorCluster::moduleswitchcluswidthon [private]

Definition at line 136 of file SiStripMonitorCluster.h.

Referenced by createModuleMEs(), fillModuleMEs(), ResetModuleMEs(), and SiStripMonitorCluster().

bool SiStripMonitorCluster::moduleswitchlocaloccupancy [private]

Definition at line 137 of file SiStripMonitorCluster.h.

Referenced by analyze(), createModuleMEs(), ResetModuleMEs(), and SiStripMonitorCluster().

bool SiStripMonitorCluster::moduleswitchncluson [private]

Definition at line 130 of file SiStripMonitorCluster.h.

Referenced by analyze(), createModuleMEs(), ResetModuleMEs(), and SiStripMonitorCluster().

bool SiStripMonitorCluster::moduleswitchnrclusterizedstrip [private]

Definition at line 138 of file SiStripMonitorCluster.h.

Referenced by analyze(), createModuleMEs(), ResetModuleMEs(), and SiStripMonitorCluster().

edm::ParameterSet SiStripMonitorCluster::Parameters [private]

Definition at line 112 of file SiStripMonitorCluster.h.

Referenced by bookME1D(), bookMETrend(), createModuleMEs(), and createSubDetMEs().

bool SiStripMonitorCluster::reset_each_run [private]

Definition at line 106 of file SiStripMonitorCluster.h.

Referenced by beginRun(), and createMEs().

int SiStripMonitorCluster::runNb [private]

Definition at line 116 of file SiStripMonitorCluster.h.

Referenced by analyze().

bool SiStripMonitorCluster::select_all_detectors [private]

Definition at line 106 of file SiStripMonitorCluster.h.

Referenced by createMEs().

bool SiStripMonitorCluster::show_control_view [private]

Definition at line 106 of file SiStripMonitorCluster.h.

bool SiStripMonitorCluster::show_mechanical_structure_view [private]

Definition at line 106 of file SiStripMonitorCluster.h.

Referenced by beginRun(), and createMEs().

bool SiStripMonitorCluster::show_readout_view [private]

Definition at line 106 of file SiStripMonitorCluster.h.

edm::ESHandle<SiStripDetCabling> SiStripMonitorCluster::SiStripDetCabling_ [private]

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().

bool SiStripMonitorCluster::subdetswitchtotclusterprofon [private]

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().


The documentation for this class was generated from the following files:
Generated on Tue Jun 9 18:32:25 2009 for CMSSW by  doxygen 1.5.4