CMS 3D CMS Logo

Public Member Functions | Protected Member Functions | Private Attributes

RPCNoisyStripTest Class Reference

#include <RPCNoisyStripTest.h>

Inheritance diagram for RPCNoisyStripTest:
RPCClient

List of all members.

Public Member Functions

void analyze (const edm::Event &iEvent, const edm::EventSetup &c)
void beginJob (DQMStore *)
void beginLuminosityBlock (edm::LuminosityBlock const &lumiSeg, edm::EventSetup const &context)
void beginRun (const edm::Run &, const edm::EventSetup &)
virtual void clientOperation (edm::EventSetup const &c)
void endJob ()
void endLuminosityBlock (edm::LuminosityBlock const &lumiSeg, edm::EventSetup const &c)
void endRun (const edm::Run &, const edm::EventSetup &, std::vector< MonitorElement * >, std::vector< RPCDetId >)
 RPCNoisyStripTest (const edm::ParameterSet &ps)
virtual ~RPCNoisyStripTest ()

Protected Member Functions

void fillGlobalME (RPCDetId &, MonitorElement *, edm::EventSetup const &)

Private Attributes

DQMStoredbe_
MonitorElementDEVDDisk [10]
MonitorElementDEVDWheel [5]
std::string globalFolder_
std::vector< RPCDetIdmyDetIds_
std::vector< MonitorElement * > myOccupancyMe_
MonitorElementNOISEDDisk [10]
MonitorElementNOISEDisk [10]
MonitorElementNOISEDWheel [5]
MonitorElementNOISEWheel [5]
int numberOfDisks_
int numberOfRings_
int prescaleFactor_

Detailed Description

Definition at line 20 of file RPCNoisyStripTest.h.


Constructor & Destructor Documentation

RPCNoisyStripTest::RPCNoisyStripTest ( const edm::ParameterSet ps)

Definition at line 15 of file RPCNoisyStripTest.cc.

References edm::ParameterSet::getUntrackedParameter(), globalFolder_, numberOfDisks_, numberOfRings_, and prescaleFactor_.

                                                              {
  edm::LogVerbatim ("rpcnoisetest") << "[RPCNoisyStripTest]: Constructor";
 
  globalFolder_ = ps.getUntrackedParameter<std::string>("RPCGlobalFolder", "RPC/RecHits/SummaryHistograms");
  prescaleFactor_ = ps.getUntrackedParameter<int>("DiagnosticPrescale", 1);
  numberOfDisks_ = ps.getUntrackedParameter<int>("NumberOfEndcapDisks", 3);
  numberOfRings_ = ps.getUntrackedParameter<int>("NumberOfEndcapRings", 2);
 
}
RPCNoisyStripTest::~RPCNoisyStripTest ( ) [virtual]

Definition at line 25 of file RPCNoisyStripTest.cc.

References dbe_.

{dbe_=0;}

Member Function Documentation

void RPCNoisyStripTest::analyze ( const edm::Event iEvent,
const edm::EventSetup c 
) [virtual]

Implements RPCClient.

Definition at line 143 of file RPCNoisyStripTest.cc.

{}
void RPCNoisyStripTest::beginJob ( DQMStore dbe) [virtual]

Implements RPCClient.

Definition at line 27 of file RPCNoisyStripTest.cc.

References dbe_.

                                              {
 edm::LogVerbatim ("rpcnoisetest") << "[RPCNoisyStripTest]: Begin job ";
 dbe_ = dbe;

}
void RPCNoisyStripTest::beginLuminosityBlock ( edm::LuminosityBlock const &  lumiSeg,
edm::EventSetup const &  context 
) [virtual]

Implements RPCClient.

Definition at line 141 of file RPCNoisyStripTest.cc.

{} 
void RPCNoisyStripTest::beginRun ( const edm::Run r,
const edm::EventSetup c 
) [virtual]

Implements RPCClient.

Definition at line 176 of file RPCNoisyStripTest.cc.

{}
void RPCNoisyStripTest::clientOperation ( edm::EventSetup const &  c) [virtual]

Implements RPCClient.

Definition at line 147 of file RPCNoisyStripTest.cc.

References DEVDDisk, DEVDWheel, fillGlobalME(), i, MessageLogger_cff::limit, myDetIds_, myOccupancyMe_, NOISEDDisk, NOISEDWheel, numberOfDisks_, and MonitorElement::Reset().

                                                                   {  


  edm::LogVerbatim ("rpcnoisetest") <<"[RPCNoisyStripTest]: Client Operation";
  
  //Clear Distributions
  int limit = numberOfDisks_ * 2;
  if(numberOfDisks_<2) limit = 5;

  for(int i =0 ; i<limit; i++){

    if(i < numberOfDisks_ * 2){
      DEVDDisk[i]->Reset();
      NOISEDDisk[i]->Reset();
    }
    if(i<5){
      DEVDWheel[i]->Reset();
      NOISEDWheel[i]->Reset();
    }
  }
  
 //Loop on MEs
  for (unsigned int  i = 0 ; i<myOccupancyMe_.size();i++){
    this->fillGlobalME(myDetIds_[i],myOccupancyMe_[i], iSetup);
  }//End loop on MEs
}
void RPCNoisyStripTest::endJob ( void  ) [virtual]

Implements RPCClient.

Definition at line 178 of file RPCNoisyStripTest.cc.

{}
void RPCNoisyStripTest::endLuminosityBlock ( edm::LuminosityBlock const &  lumiSeg,
edm::EventSetup const &  c 
) [virtual]

Implements RPCClient.

Definition at line 145 of file RPCNoisyStripTest.cc.

{}
void RPCNoisyStripTest::endRun ( const edm::Run r,
const edm::EventSetup iSetup,
std::vector< MonitorElement * >  meVector,
std::vector< RPCDetId detIdVector 
) [virtual]

Implements RPCClient.

Definition at line 33 of file RPCNoisyStripTest.cc.

References DQMStore::book1D(), DQMStore::book2D(), dbe_, DEVDDisk, DEVDWheel, DQMStore::get(), MonitorElement::getName(), globalFolder_, i, rpcdqm::utils::labelXAxisSector(), rpcdqm::utils::labelXAxisSegment(), rpcdqm::utils::labelYAxisRing(), rpcdqm::utils::labelYAxisRoll(), MessageLogger_cff::limit, myDetIds_, myOccupancyMe_, NOISEDDisk, NOISEDisk, NOISEDWheel, NOISEWheel, numberOfDisks_, numberOfRings_, rpcdqm::OCCUPANCY, evf::evtn::offset(), DQMStore::removeElement(), DQMStore::setCurrentFolder(), and packageDocSplitter::tagList.

                                                                                                                                                {
 edm::LogVerbatim ("rpcnoisetest") << "[RPCNoisyStripTest]: End run";
 
 
 MonitorElement* me;
 dbe_->setCurrentFolder( globalFolder_);

 std::stringstream histoName;

 rpcdqm::utils rpcUtils;

 int limit = numberOfDisks_;
 if(numberOfDisks_ < 2) limit = 2;
 for (int w = -1 * limit; w<= limit;w++ ){//loop on wheels and disks
   if (w>-3 && w<3){//Barrel
     histoName.str("");
     histoName<<"RPCNoisyStrips_Distribution_Wheel"<<w;     
     me =0;
     me = dbe_->get( globalFolder_ +"/"+ histoName.str());
     if ( 0!=me ) {
       dbe_->removeElement(me->getName());
     }
     NOISEDWheel[w+2] = dbe_->book1D(histoName.str().c_str(), histoName.str().c_str(),  6, -0.5, 5.5);
     
     
     histoName.str("");
     histoName<<"RPCStripsDeviation_Distribution_Wheel"<<w; 
     me =0;
     me = dbe_->get( globalFolder_ +"/"+ histoName.str());
     if ( 0!=me ) {
       dbe_->removeElement(me->getName());
     }
     DEVDWheel[w+2] = dbe_->book1D(histoName.str().c_str(), histoName.str().c_str(),  101, -0.01, 10.01);
     
     histoName.str("");
     histoName<<"RPCNoisyStrips_Roll_vs_Sector_Wheel"<<w;
     me =0;
     me = dbe_->get( globalFolder_ +"/"+ histoName.str());
     if ( 0!=me ) {
       dbe_->removeElement(me->getName());
     }
     
     NOISEWheel[w+2] = dbe_->book2D(histoName.str().c_str(), histoName.str().c_str() , 12, 0.5, 12.5, 21, 0.5, 21.5);
     rpcUtils.labelXAxisSector(NOISEWheel[w+2]);
     rpcUtils.labelYAxisRoll(NOISEWheel[w+2], 0, w);
   }

   if (w == 0  || w > numberOfDisks_ || w< (-1 * numberOfDisks_))continue;//ENDCAP

   int offset = numberOfDisks_;
   if (w>0) offset --; //used to skip case equale to zero

   histoName.str("");
   histoName<<"RPCNoisyStrips_Distribution_Disk"<<w;      
   me =0;
   me = dbe_->get( globalFolder_ +"/"+ histoName.str());
   if ( 0!=me ) {
     dbe_->removeElement(me->getName());
   }
   NOISEDDisk[w+offset] = dbe_->book1D(histoName.str().c_str(), histoName.str().c_str(),  6, -0.5, 5.5);
   
   
   histoName.str("");
   histoName<<"RPCStripsDeviation_Distribution_Disk"<<w;  
   me =0;
   me = dbe_->get( globalFolder_ +"/"+ histoName.str());
   if ( 0!=me ) {
     dbe_->removeElement(me->getName());
   }
   DEVDDisk[w+offset] = dbe_->book1D(histoName.str().c_str(), histoName.str().c_str(),  101, -0.01, 10.01);
   
   histoName.str("");
   histoName<<"RPCNoisyStrips_Ring_vs_Segment_Disk"<<w;
   me =0;
   me = dbe_->get( globalFolder_ +"/"+ histoName.str());
   if ( 0!=me ) {
     dbe_->removeElement(me->getName());
   }
   
   NOISEDisk[w+offset] = dbe_->book2D(histoName.str().c_str(), histoName.str().c_str() , 36, 0.5, 36.5, 3*numberOfRings_, 0.5,3*numberOfRings_+ 0.5);
   rpcUtils.labelXAxisSegment(NOISEDisk[w+offset]);
   rpcUtils.labelYAxisRing(NOISEDisk[w+offset], numberOfRings_);

 }//end loop wheel and disks
   
 //Get NumberOfDigi ME for each roll
 for (unsigned int i = 0 ; i<meVector.size(); i++){
   
   bool flag= false;
   
   DQMNet::TagList tagList;
   tagList = meVector[i]->getTags();
   DQMNet::TagList::iterator tagItr = tagList.begin();
   
   while (tagItr != tagList.end() && !flag ) {
     if((*tagItr) ==  rpcdqm::OCCUPANCY)
       flag= true;
     
     tagItr++;
   }
   
   if(flag){
     myOccupancyMe_.push_back(meVector[i]);
     myDetIds_.push_back(detIdVector[i]);
   }
 }
}
void RPCNoisyStripTest::fillGlobalME ( RPCDetId detId,
MonitorElement myMe,
edm::EventSetup const &  iSetup 
) [protected]

Definition at line 180 of file RPCNoisyStripTest.cc.

References rpcdqm::utils::detId2RollNr(), DEVDDisk, DEVDWheel, python::tagInventory::entries, MonitorElement::Fill(), MonitorElement::getBinContent(), i, sistrip::NOISE, NOISEDDisk, NOISEDisk, NOISEDWheel, NOISEWheel, NULL, numberOfDisks_, numberOfRings_, RPCDetId::region(), RPCDetId::ring(), RPCDetId::roll(), RPCDetId::sector(), RPCGeomServ::segment(), MonitorElement::setBinContent(), and RPCDetId::station().

Referenced by clientOperation().

                                                                                                        {

 //   ESHandle<RPCGeometry> rpcgeo;
//     iSetup.get<MuonGeometryRecord>().get(rpcgeo);
 
    std::stringstream meName;
    
    MonitorElement *  NOISE=NULL;
    MonitorElement * DEVD=NULL;
    MonitorElement * NOISED=NULL;

    if (detId.region()==0) { //BARREL
      NOISE = NOISEWheel[detId.ring()+2];
      DEVD = DEVDWheel[detId.ring()+2];
      NOISED= NOISEDWheel[detId.ring()+2];
    }else if(detId.region()<0 && (-detId.station() + numberOfDisks_) >= 0 ){//ENDCAP-
      NOISE = NOISEDisk[ -detId.station() + numberOfDisks_];
      DEVD = DEVDDisk[ -detId.station()  + numberOfDisks_];
      NOISED= NOISEDDisk[-detId.station() + numberOfDisks_];
    }else if((-detId.station() + numberOfDisks_)>= 0 ){//ENDCAP +
      NOISE = NOISEDisk[detId.station() + numberOfDisks_-1];
      DEVD = DEVDDisk[detId.station()  + numberOfDisks_-1];
      NOISED= NOISEDDisk[detId.station() + numberOfDisks_-1];
    }
    
    
    int entries = (int) myMe -> getEntries();
    int bins = (int) myMe ->getNbinsX();
      
    std::vector<float> myvector;
        
    // count alive strips and alive strip values put in the vector
    for(int xbin =1 ; xbin <= bins ; xbin++) {    
      float binContent = myMe->getBinContent(xbin);  
      if (binContent > 0) myvector.push_back(binContent);
    }
                
    
    int noisyStrips=0;
    // calculate mean on YAxis and check diff between bins and mean
    if (myvector.size()>0) {
      float ymean = entries/myvector.size(); //mean on Yaxis
      for(unsigned int i=0; i<myvector.size(); i++) {
        float deviation = myvector[i]/ymean;
        if(deviation > 3.5)  noisyStrips++;
        if(deviation > 5) deviation = 5; //overflow 
        if(DEVD) DEVD-> Fill(deviation);
      }
        
      if(NOISE && NOISED ){
        int xBin,yBin;
        if(detId.region()==0){//Barrel
          xBin= detId.sector();
          rpcdqm::utils rollNumber;
          yBin = rollNumber.detId2RollNr(detId);
        }else{//Endcap
          //get segment number
          RPCGeomServ RPCServ(detId);
          xBin = RPCServ.segment();
          (numberOfRings_ == 3 ? yBin= detId.ring()*3-detId.roll()+1 : yBin= (detId.ring()-1)*3-detId.roll()+1);
        }
        
        NOISE->setBinContent(xBin,yBin,noisyStrips); 
        NOISED ->Fill(noisyStrips);
      }
    }

}

Member Data Documentation

Definition at line 45 of file RPCNoisyStripTest.h.

Referenced by beginJob(), endRun(), and ~RPCNoisyStripTest().

Definition at line 56 of file RPCNoisyStripTest.h.

Referenced by clientOperation(), endRun(), and fillGlobalME().

Definition at line 52 of file RPCNoisyStripTest.h.

Referenced by clientOperation(), endRun(), and fillGlobalME().

std::string RPCNoisyStripTest::globalFolder_ [private]

Definition at line 41 of file RPCNoisyStripTest.h.

Referenced by endRun(), and RPCNoisyStripTest().

std::vector<RPCDetId> RPCNoisyStripTest::myDetIds_ [private]

Definition at line 48 of file RPCNoisyStripTest.h.

Referenced by clientOperation(), and endRun().

Definition at line 47 of file RPCNoisyStripTest.h.

Referenced by clientOperation(), and endRun().

Definition at line 55 of file RPCNoisyStripTest.h.

Referenced by clientOperation(), endRun(), and fillGlobalME().

Definition at line 54 of file RPCNoisyStripTest.h.

Referenced by endRun(), and fillGlobalME().

Definition at line 51 of file RPCNoisyStripTest.h.

Referenced by clientOperation(), endRun(), and fillGlobalME().

Definition at line 50 of file RPCNoisyStripTest.h.

Referenced by endRun(), and fillGlobalME().

Definition at line 57 of file RPCNoisyStripTest.h.

Referenced by clientOperation(), endRun(), fillGlobalME(), and RPCNoisyStripTest().

Definition at line 42 of file RPCNoisyStripTest.h.

Referenced by endRun(), fillGlobalME(), and RPCNoisyStripTest().

Definition at line 43 of file RPCNoisyStripTest.h.

Referenced by RPCNoisyStripTest().