CMS 3D CMS Logo

MonitorTrackResiduals Class Reference

Monitoring source for track residuals on each detector module. More...

#include <DQM/TrackerMonitorTrack/interface/MonitorTrackResiduals.cc>

Inheritance diagram for MonitorTrackResiduals:

edm::EDAnalyzer

List of all members.

Public Member Functions

virtual void analyze (const edm::Event &, const edm::EventSetup &)
virtual void beginJob (const edm::EventSetup &es)
virtual void beginRun (edm::Run const &run, edm::EventSetup const &iSetup)
void createMEs (const edm::EventSetup &)
virtual void endJob (void)
virtual void endRun (const edm::Run &, const edm::EventSetup &)
 MonitorTrackResiduals (const edm::ParameterSet &)
void resetLayerMEs (const std::pair< std::string, int32_t > &)
void resetModuleMEs (int32_t modid)
 ~MonitorTrackResiduals ()

Private Attributes

edm::ParameterSet conf_
DQMStoredqmStore_
SiStripFolderOrganizerfolder_organizer
HistoClass HitResidual
unsigned long long m_cacheID_
std::map< std::pair
< std::string, int32_t >,
MonitorElement * > 
m_SubdetLayerNormedResiduals
std::map< std::pair
< std::string, int32_t >,
MonitorElement * > 
m_SubdetLayerResiduals
bool ModOn
HistoClass NormedHitResiduals
edm::ParameterSet Parameters
bool reset_me_after_each_run


Detailed Description

Monitoring source for track residuals on each detector module.

Definition at line 30 of file MonitorTrackResiduals.h.


Constructor & Destructor Documentation

MonitorTrackResiduals::MonitorTrackResiduals ( const edm::ParameterSet iConfig  )  [explicit]

Definition at line 27 of file MonitorTrackResiduals.cc.

References dqmStore_, and folder_organizer.

00027                                                                            : conf_(iConfig), m_cacheID_(0) {
00028   dqmStore_ = edm::Service<DQMStore>().operator->();
00029   folder_organizer = new SiStripFolderOrganizer();
00030 }

MonitorTrackResiduals::~MonitorTrackResiduals (  ) 

Definition at line 34 of file MonitorTrackResiduals.cc.

00034 { }


Member Function Documentation

void MonitorTrackResiduals::analyze ( const edm::Event iEvent,
const edm::EventSetup iSetup 
) [virtual]

Implements edm::EDAnalyzer.

Definition at line 169 of file MonitorTrackResiduals.cc.

References conf_, TrackerValidationVariables::fillHitQuantities(), folder_organizer, SiStripFolderOrganizer::GetSubDetAndLayer(), HitResidual, it, m_SubdetLayerNormedResiduals, m_SubdetLayerResiduals, ModOn, and NormedHitResiduals.

00169                                                                                        {
00170 
00171   TrackerValidationVariables avalidator_(iSetup,conf_);
00172   std::vector<TrackerValidationVariables::AVHitStruct> v_hitstruct;
00173   avalidator_.fillHitQuantities(iEvent,v_hitstruct);
00174   for (std::vector<TrackerValidationVariables::AVHitStruct>::const_iterator it = v_hitstruct.begin(),
00175        itEnd = v_hitstruct.end(); it != itEnd; ++it) {
00176     uint RawId = it->rawDetId;
00177     
00178     // fill if hit belongs to StripDetector and its error is not zero
00179     if( it->resErrX != 0 && SiStripDetId(RawId).subDetector()  != 0 )  {
00180       if (ModOn && HitResidual[RawId]) { 
00181         HitResidual[RawId]->Fill(it->resX);
00182         NormedHitResiduals[RawId]->Fill(it->resX/it->resErrX);
00183       }
00184       std::pair<std::string, int32_t> subdetandlayer = folder_organizer->GetSubDetAndLayer(RawId);
00185       if(m_SubdetLayerResiduals[subdetandlayer]) {
00186         m_SubdetLayerResiduals[subdetandlayer]->Fill(it->resX);
00187         m_SubdetLayerNormedResiduals[subdetandlayer]->Fill(it->resX/it->resErrX);
00188       }
00189     }
00190   }
00191 
00192 }

void MonitorTrackResiduals::beginJob ( const edm::EventSetup es  )  [virtual]

Reimplemented from edm::EDAnalyzer.

Definition at line 37 of file MonitorTrackResiduals.cc.

References conf_, edm::ParameterSet::getParameter(), ModOn, and reset_me_after_each_run.

00037                                                             {
00038   ModOn = conf_.getParameter<bool>("Mod_On");
00039   reset_me_after_each_run = conf_.getParameter<bool>("ResetAfterRun");
00040 }

void MonitorTrackResiduals::beginRun ( edm::Run const &  run,
edm::EventSetup const &  iSetup 
) [virtual]

Reimplemented from edm::EDAnalyzer.

Definition at line 42 of file MonitorTrackResiduals.cc.

References createMEs(), folder_organizer, edm::EventSetup::get(), SiStripFolderOrganizer::GetSubDetAndLayer(), HitResidual, it, m_cacheID_, m_SubdetLayerResiduals, python::multivaluedict::map(), ModOn, reset_me_after_each_run, resetLayerMEs(), and resetModuleMEs().

00042                                                                                    {
00043   
00044   
00045   unsigned long long cacheID = iSetup.get<SiStripDetCablingRcd>().cacheIdentifier();
00046   if (m_cacheID_ != cacheID) {
00047     m_cacheID_ = cacheID;     
00048     this->createMEs(iSetup);
00049   }
00050   if(reset_me_after_each_run) {
00051     if(ModOn) {
00052       for(std::map<int32_t, MonitorElement*>::const_iterator it = HitResidual.begin(), 
00053             itEnd = HitResidual.end(); it!= itEnd;++it) {
00054         this->resetModuleMEs(it->first);
00055         this->resetLayerMEs(folder_organizer->GetSubDetAndLayer(it->first));
00056       }
00057     } else {
00058       for(std::map< std::pair<std::string,int32_t>, MonitorElement*>::const_iterator it = m_SubdetLayerResiduals.begin(), 
00059             itEnd = m_SubdetLayerResiduals.end(); it!= itEnd;++it) {
00060         this->resetLayerMEs(it->first);
00061       }
00062     } // end if-else Module level on
00063   } // end reset after run
00064   
00065 }

void MonitorTrackResiduals::createMEs ( const edm::EventSetup iSetup  ) 

Definition at line 67 of file MonitorTrackResiduals.cc.

References funct::abs(), DQMStore::book1D(), conf_, dqmStore_, folder_organizer, edm::EventSetup::get(), edm::ParameterSet::getParameter(), SiStripFolderOrganizer::GetSubDetAndLayer(), HitResidual, m_SubdetLayerNormedResiduals, m_SubdetLayerResiduals, ModOn, NormedHitResiduals, Parameters, MonitorElement::setAxisTitle(), SiStripFolderOrganizer::setDetectorFolder(), SiStripFolderOrganizer::setLayerFolder(), and SiStripFolderOrganizer::setSiStripFolder().

Referenced by beginRun().

00067                                                                 {
00068   Parameters = conf_.getParameter<edm::ParameterSet>("TH1ResModules");
00069   int32_t i_residuals_Nbins =  Parameters.getParameter<int32_t>("Nbinx");
00070   double d_residual_xmin = Parameters.getParameter<double>("xmin");
00071   double d_residual_xmax = Parameters.getParameter<double>("xmax");
00072   Parameters = conf_.getParameter<edm::ParameterSet>("TH1NormResModules");
00073   int32_t i_normres_Nbins =  Parameters.getParameter<int32_t>("Nbinx");
00074   double d_normres_xmin = Parameters.getParameter<double>("xmin");
00075   double d_normres_xmax = Parameters.getParameter<double>("xmax");
00076 
00077   
00078   // use SistripHistoId for producing histogram id (and title)
00079   SiStripHistoId hidmanager;
00080   folder_organizer->setSiStripFolder(); // top SiStrip folder
00081   
00082   // take from eventSetup the SiStripDetCabling object
00083   edm::ESHandle<SiStripDetCabling> tkmechstruct;
00084   iSetup.get<SiStripDetCablingRcd>().get(tkmechstruct);
00085   
00086   // get list of active detectors from SiStripDetCabling
00087   std::vector<uint32_t> activeDets;
00088   activeDets.clear(); // just in case
00089   tkmechstruct->addActiveDetectorsRawIds(activeDets);
00090   
00091   // use SiStripSubStructure for selecting certain regions
00092   SiStripSubStructure substructure;
00093   std::vector<uint32_t> DetIds = activeDets;
00094   
00095   // book histo per each detector module
00096   for (std::vector<uint32_t>::const_iterator DetItr=activeDets.begin(),  
00097          DetItrEnd = activeDets.end(); DetItr!=DetItrEnd; ++DetItr)
00098     {
00099       uint ModuleID = (*DetItr);
00100       
00101       // is this a StripModule?
00102       if( SiStripDetId(ModuleID).subDetector() != 0 ) {
00103         
00104         folder_organizer->setDetectorFolder(ModuleID); //  detid sets appropriate detector folder               
00105         // Book module histogramms? 
00106         if (ModOn) { 
00107           std::string hid = hidmanager.createHistoId("HitResiduals","det",ModuleID);
00108           std::string normhid = hidmanager.createHistoId("NormalizedHitResiduals","det",ModuleID);      
00109           HitResidual[ModuleID] = dqmStore_->book1D(hid, hid, 
00110                                                     i_residuals_Nbins,d_residual_xmin,d_residual_xmax);
00111           HitResidual[ModuleID]->setAxisTitle("x_{pred} - x_{rec} [cm]");
00112           NormedHitResiduals[ModuleID] = dqmStore_->book1D(normhid, normhid, 
00113                                                            i_normres_Nbins,d_normres_xmin,d_normres_xmax);
00114           NormedHitResiduals[ModuleID]->setAxisTitle("x_{pred} - x_{rec}/#sigma");
00115         }
00116         // book layer level histogramms
00117         std::pair<std::string,int32_t> subdetandlayer = folder_organizer->GetSubDetAndLayer(ModuleID);
00118         folder_organizer->setLayerFolder(ModuleID,subdetandlayer.second);
00119         if(! m_SubdetLayerResiduals[subdetandlayer ] ) {
00120           // book histogramms on layer level, check for barrel for correct labeling
00121           std::string histoname = Form(subdetandlayer.first.find("B") != std::string::npos ? 
00122                                        "HitResiduals_%s__Layer__%d" : "HitResiduals_%s__wheel__%d" ,
00123                                        subdetandlayer.first.c_str(),abs(subdetandlayer.second));
00124           std::string normhistoname = 
00125             Form(subdetandlayer.first.find("B") != std::string::npos ? 
00126                  "NormalizedHitResidual_%s__Layer__%d" : "NormalizedHitResidual_%s__wheel__%d" ,
00127                  subdetandlayer.first.c_str(),abs(subdetandlayer.second));
00128           m_SubdetLayerResiduals[subdetandlayer] = 
00129             dqmStore_->book1D(histoname.c_str(),histoname.c_str(),
00130                               i_residuals_Nbins,d_residual_xmin,d_residual_xmax);
00131           m_SubdetLayerResiduals[subdetandlayer]->setAxisTitle("x_{pred} - x_{rec} [cm]");
00132           m_SubdetLayerNormedResiduals[subdetandlayer] = 
00133             dqmStore_->book1D(normhistoname.c_str(),normhistoname.c_str(),
00134                               i_normres_Nbins,d_normres_xmin,d_normres_xmax);
00135           m_SubdetLayerNormedResiduals[subdetandlayer]->setAxisTitle("x_{pred} - x_{rec} [cm]/#sigma");
00136         } 
00137       } // end 'is strip module'
00138     } // end loop over activeDets
00139 }

void MonitorTrackResiduals::endJob ( void   )  [virtual]

Reimplemented from edm::EDAnalyzer.

Definition at line 158 of file MonitorTrackResiduals.cc.

References conf_, dqmStore_, edm::ParameterSet::getParameter(), iggi_31X_cfg::outputFileName, and DQMStore::save().

00158                                       {
00159 
00160   //dqmStore_->showDirStructure();
00161   bool outputMEsInRootFile = conf_.getParameter<bool>("OutputMEsInRootFile");
00162   std::string outputFileName = conf_.getParameter<std::string>("OutputFileName");
00163   if(outputMEsInRootFile){
00164     dqmStore_->save(outputFileName);
00165   }
00166 }

void MonitorTrackResiduals::endRun ( const edm::Run ,
const edm::EventSetup  
) [virtual]

Reimplemented from edm::EDAnalyzer.

Definition at line 154 of file MonitorTrackResiduals.cc.

00154                                                                      {
00155 }

void MonitorTrackResiduals::resetLayerMEs ( const std::pair< std::string, int32_t > &  subdetandlayer  ) 

Definition at line 147 of file MonitorTrackResiduals.cc.

References m_SubdetLayerNormedResiduals, and m_SubdetLayerResiduals.

Referenced by beginRun().

00147                                                                                            {
00148   m_SubdetLayerResiduals      [subdetandlayer]->Reset();
00149   m_SubdetLayerNormedResiduals[subdetandlayer]->Reset();
00150 }

void MonitorTrackResiduals::resetModuleMEs ( int32_t  modid  ) 

Definition at line 142 of file MonitorTrackResiduals.cc.

References HitResidual, and NormedHitResiduals.

Referenced by beginRun().

00142                                                         {
00143   HitResidual[modid]->Reset();
00144   NormedHitResiduals[modid]->Reset();
00145 }


Member Data Documentation

edm::ParameterSet MonitorTrackResiduals::conf_ [private]

Definition at line 47 of file MonitorTrackResiduals.h.

Referenced by analyze(), beginJob(), createMEs(), and endJob().

DQMStore* MonitorTrackResiduals::dqmStore_ [private]

Definition at line 46 of file MonitorTrackResiduals.h.

Referenced by createMEs(), endJob(), and MonitorTrackResiduals().

SiStripFolderOrganizer* MonitorTrackResiduals::folder_organizer [private]

Definition at line 53 of file MonitorTrackResiduals.h.

Referenced by analyze(), beginRun(), createMEs(), and MonitorTrackResiduals().

HistoClass MonitorTrackResiduals::HitResidual [private]

Definition at line 51 of file MonitorTrackResiduals.h.

Referenced by analyze(), beginRun(), createMEs(), and resetModuleMEs().

unsigned long long MonitorTrackResiduals::m_cacheID_ [private]

Definition at line 54 of file MonitorTrackResiduals.h.

Referenced by beginRun().

std::map< std::pair<std::string,int32_t>, MonitorElement* > MonitorTrackResiduals::m_SubdetLayerNormedResiduals [private]

Definition at line 50 of file MonitorTrackResiduals.h.

Referenced by analyze(), createMEs(), and resetLayerMEs().

std::map< std::pair<std::string,int32_t>, MonitorElement* > MonitorTrackResiduals::m_SubdetLayerResiduals [private]

Definition at line 49 of file MonitorTrackResiduals.h.

Referenced by analyze(), beginRun(), createMEs(), and resetLayerMEs().

bool MonitorTrackResiduals::ModOn [private]

Definition at line 56 of file MonitorTrackResiduals.h.

Referenced by analyze(), beginJob(), beginRun(), and createMEs().

HistoClass MonitorTrackResiduals::NormedHitResiduals [private]

Definition at line 52 of file MonitorTrackResiduals.h.

Referenced by analyze(), createMEs(), and resetModuleMEs().

edm::ParameterSet MonitorTrackResiduals::Parameters [private]

Definition at line 48 of file MonitorTrackResiduals.h.

Referenced by createMEs().

bool MonitorTrackResiduals::reset_me_after_each_run [private]

Definition at line 55 of file MonitorTrackResiduals.h.

Referenced by beginJob(), and beginRun().


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