CMS 3D CMS Logo

Public Member Functions | Protected Member Functions | Protected Attributes

RPCGeomServ Class Reference

#include <RPCGeomServ.h>

List of all members.

Public Member Functions

virtual bool aclockwise ()
virtual std::string chambername ()
virtual int chambernr ()
std::vector< int > channelInChip ()
virtual int eta_partition ()
virtual bool inverted ()
virtual std::string name ()
 RPCGeomServ (const RPCDetId &id)
virtual int segment ()
virtual std::string shortname ()
virtual bool zpositive ()
virtual ~RPCGeomServ ()

Protected Member Functions

 RPCGeomServ ()

Protected Attributes

bool _a
int _cnr
const RPCDetId_id
std::string _n
std::string _sn
int _t
bool _z

Detailed Description

Definition at line 8 of file RPCGeomServ.h.


Constructor & Destructor Documentation

RPCGeomServ::RPCGeomServ ( const RPCDetId id)
RPCGeomServ::~RPCGeomServ ( ) [virtual]

Definition at line 11 of file RPCGeomServ.cc.

{}
RPCGeomServ::RPCGeomServ ( ) [protected]

Definition at line 537 of file RPCGeomServ.cc.

                         : _id(0), _n(""), _sn(""), _t (-99), _z(false), _a(false)
{} 

Member Function Documentation

bool RPCGeomServ::aclockwise ( ) [virtual]

Definition at line 508 of file RPCGeomServ.cc.

References _a, _id, _t, RPCDetId::layer(), RPCDetId::region(), RPCDetId::ring(), and RPCDetId::sector().

{
  if (_id->region()==0 && _t<-90 ){
    if (_id->ring() > 0){
      if (_id->layer()==2){
        _a=false;
      }
    }else if(_id->ring() <0){
      if (_id->layer()==1){
        _a=false;
      }
    }else if(_id->ring() ==0) {
      if ((_id->sector() == 1 || _id->sector() == 4 ||
           _id->sector() == 5 || _id->sector() == 8 ||
           _id->sector() == 9 || _id->sector() == 12) && _id->layer()==1)
        _a=false;
      else if ((_id->sector() == 2 || _id->sector() == 3 ||
                _id->sector() == 6 || _id->sector() == 7 ||
                _id->sector() == 10|| _id->sector() == 11) && _id->layer()==2)
        _a=false;
    }
  }
  return _a;
}
std::string RPCGeomServ::chambername ( ) [virtual]

Definition at line 129 of file RPCGeomServ.cc.

References _id, _n, RPCDetId::layer(), RPCDetId::region(), RPCDetId::ring(), RPCDetId::sector(), segment(), RPCDetId::station(), and RPCDetId::subsector().

Referenced by RPCMonitorDigi::beginRun(), RPCMonitorDigi::bookRollME(), RPCDqmClient::getMonitorElements(), and RPCMonitorDigi::performSourceOperation().

{
  if (_n.size()<1){
    std::string buf;
    
    if (_id->region()==0){
      buf="W";
      {
        std::stringstream os;
        os << std::setw(2)<<std::setfill('+')<<_id->ring()
           <<std::setfill(' ')<<"_";
        buf += os.str();
      }
      
      {
        std::stringstream os;
        os <<"RB"<<_id->station();
        if (_id->station()<=2) {
          if (_id->layer()==1)
            os<<"in";
          else
            os<<"out";
        }
        //os<<"_";
        buf += os.str();
      }
      
      
      {
        std::stringstream os;
        //      os <<"S"<<std::setw(2)<<std::setfill('0')
        //   <<_id->sector()<<std::setfill(' ');
        if (_id->station()>2){
          if (_id->sector()== 4 && _id->station()==4){
            if ( _id->subsector()==1){
              os<<"--";
            }
            else if ( _id->subsector()==2){
              os <<"-";
            }
            else if ( _id->subsector()==3){
              os <<"+";
            }
            else if ( _id->subsector()==4){
              os <<"++";
            }
          }
          
          if(_id->station()==3){
            if (_id->subsector()==1)
              os <<"-";
            else
              os <<"+";
          }else if(_id->station()==4 && _id->sector()!=9 && _id->sector()!=11 && _id->sector()!=4){
            if (_id->subsector()==1)
              os <<"-";
            else
              os <<"+";
          }
        }
        
        os<<"_";
        os <<"S"<<std::setw(2)<<std::setfill('0')
           <<_id->sector()<<std::setfill(' ');
        buf += os.str();
      }
      
    }
    else {
      buf="RE";
      
      {
        std::stringstream os;
        os << std::setw(2)<<std::setfill('+')<<_id->station()*_id->region()
           <<std::setfill(' ')<<"_";
        buf += os.str();    
      }
      
      {
        std::stringstream os;
        os <<"R"<<_id->ring();
        os <<"_CH"<<std::setw(2)<<std::setfill('0')<<this->segment();
        buf += os.str();
      } 

      
    }
    _n=buf;
  }
  return _n;
}
int RPCGeomServ::chambernr ( ) [virtual]

Definition at line 324 of file RPCGeomServ.cc.

References _cnr, _id, RPCDetId::layer(), RPCDetId::roll(), RPCDetId::sector(), RPCDetId::station(), and RPCDetId::subsector().

Referenced by RPCMon_SS_Dbx_Global::analyze().

{

  // Station1
  if( _id->station() ==1) {
    
    // in
    if(_id->layer() ==1) { 
      
      if(_id->roll()==1) 
        _cnr = 1;
      else 
        _cnr = 2;
    }
    //out
    else 
      {
        if(_id->roll()==1) 
          _cnr = 3;
        else 
          _cnr = 4;
        
      }
  }


  //Station 2
  if (_id->station()==2) {
   
    //in
    if(_id->layer()==1) {
      
      if(_id->roll()==1)//backward
        _cnr = 5;
      if(_id->roll()==3)//forward
        _cnr=6;
      if(_id->roll()==2)//middle
        _cnr=7;
    }
    //out
    else {
      
      if(_id->roll()==2)
        
        _cnr=7;

      if(_id->roll()==1)
        _cnr=8;
      if(_id->roll()==3)
        _cnr=9;
    
    }
  }
    
  //RB3- RB3+
  if(_id->station()==3)
    {
      if(_id->subsector()==1) {
        
        if(_id->roll()==1)
          _cnr=10;
        else 
          _cnr=11;
      }
      else {
        
        if(_id->roll()==1)
          _cnr=12;
        else
          _cnr=13;
      }
      
    }

  //RB4
  if(_id->station()==4) {
    
    if (_id->sector()== 4) {
      
      if ( _id->subsector()==2){//RB4-
        
        if(_id->roll()==1)
          _cnr=14;
        else
          _cnr=15;
        
      }
      
      if ( _id->subsector()==3){//RB4+
        
        if(_id->roll()==1)
          _cnr=16;
        else
          _cnr=17;
        
      }
      
      if ( _id->subsector()==1) {//RB4--
        
        if(_id->roll()==1)
          _cnr=18;
        else
          _cnr=19;
      }
      
      if ( _id->subsector()==4){//RB4++
        
        if(_id->roll()==1)
          _cnr=20;
        else
          _cnr=21;
        
      }
      
    }  
    
    else 
      
      {
        if(_id->subsector()==1) {
          
          if(_id->roll()==1)
            _cnr=14;
          else 
            _cnr=15;
        }
        else {
          
          if(_id->roll()==1)
            _cnr=16;
          else
            _cnr=17;
        } 
      } 
  }
  

  // _cnr=10;
  return _cnr;
  
}
std::vector< int > RPCGeomServ::channelInChip ( )

Definition at line 277 of file RPCGeomServ.cc.

References _id, RPCDetId::layer(), RPCDetId::region(), RPCDetId::sector(), RPCDetId::station(), and RPCDetId::subsector().

                                         {

  std::vector<int> chipCh(4,8);//Endcap
  
  if(_id->region()==0){//Barrel
    chipCh.clear();

    if (_id->station()<3 && _id->layer()==1){ // i.e. RB1in ||RB2in  
      chipCh.push_back(7);
      chipCh.push_back(8);
    }else if (_id->station() == 1 || _id->station() == 3){//i.e. RB1out || RB3 
      chipCh.push_back(7);
      chipCh.push_back(7);
    }else if (_id->station() == 2){// i.e. RB2out
      chipCh.push_back(6);
      chipCh.push_back(8);
    }else if (_id->sector() == 4 || _id->sector()==10 ||(_id->sector() == 8 &&  _id->subsector()!=1) || (_id->sector() == 12  &&  _id->subsector()==1)){
      chipCh.push_back(6);//i.e. Sector 4 &  10 RB4 and Sector 8 &12 RB4+
      chipCh.push_back(6);
    }else {
      chipCh.push_back(8);
      chipCh.push_back(8);
    }   
  }

  return chipCh;
}
int RPCGeomServ::eta_partition ( ) [virtual]

Definition at line 307 of file RPCGeomServ.cc.

References _id, _t, inverted(), RPCDetId::region(), RPCDetId::ring(), and RPCDetId::roll().

Referenced by RPCStripsRing::getRingId(), and RPCStripsRing::RPCStripsRing().

{
  if (_t<-90){
    if (_id->region() == 0 ){
      if (this->inverted()) {
        _t = 3*(_id->ring())+ (3-_id->roll())-1;
      }else{
        _t = 3*(_id->ring())+ _id->roll()-2;
      }
    }else{
      _t = _id->region() * (3*(3-_id->ring()) + _id->roll() + 7);
    }
  }
  return _t;
} 
bool RPCGeomServ::inverted ( ) [virtual]

Definition at line 481 of file RPCGeomServ.cc.

References zpositive().

Referenced by eta_partition().

{
  // return !(this->zpositive() && this->aclockwise());
  return !(this->zpositive());
}
std::string RPCGeomServ::name ( void  ) [virtual]

Definition at line 15 of file RPCGeomServ.cc.

References _id, _n, RPCDetId::layer(), RPCDetId::region(), RPCDetId::ring(), RPCDetId::roll(), RPCDetId::sector(), segment(), RPCDetId::station(), and RPCDetId::subsector().

Referenced by RPCMon_SS_Dbx_Global::analyze(), RPCEfficiency::analyze(), RPCMonitorDigi::beginRun(), RPCEfficiencySecond::bookDetUnitSeg(), RPCMonitorDigi::bookRollME(), DTSegtoRPC::DTSegtoRPC(), RPCEfficiencySecond::endRun(), rpcdqmclient::clientTools::getMEs(), RPCDqmClient::getMonitorElements(), L1TRPCTPG::L1TRPCBookME(), HSCPValidator::makeSimDigiPlotsRPC(), RPCMonitorDigi::performSourceOperation(), cond::PayLoadInspector< DataT >::plot(), RPCSimAverageNoiseEff::simulate(), RPCSimAverageNoiseEffCls::simulate(), RPCSimAverageNoiseEff::simulateNoise(), RPCSimAverageNoiseEffCls::simulateNoise(), cond::PayLoadInspector< DataT >::summary(), and TracktoRPC::TracktoRPC().

{
  if (_n.size()<1){
    std::string buf;
    
    if (_id->region()==0){
      buf="W";
      {
        std::stringstream os;
        os << std::setw(2)<<std::setfill('+')<<_id->ring()
           <<std::setfill(' ')<<"_";
        buf += os.str();
      }
      
      {
        std::stringstream os;
        os <<"RB"<<_id->station();
        if (_id->station()<=2) {
          if (_id->layer()==1)
            os<<"in";
          else
            os<<"out";
        }
        //os<<"_";
        buf += os.str();
      }
      
      
      {
        std::stringstream os;
        //      os <<"S"<<std::setw(2)<<std::setfill('0')
        //   <<_id->sector()<<std::setfill(' ');
        if (_id->station()>2){
          if (_id->sector()== 4 && _id->station()==4){
            if ( _id->subsector()==1){
              os<<"--";
            }
            else if ( _id->subsector()==2){
              os <<"-";
            }
            else if ( _id->subsector()==3){
              os <<"+";
            }
            else if ( _id->subsector()==4){
              os <<"++";
            }
          }
          
          if(_id->station()==3){
            if (_id->subsector()==1)
              os <<"-";
            else
              os <<"+";
          }else if(_id->station()==4 && _id->sector()!=9 && _id->sector()!=11 && _id->sector()!=4){
            if (_id->subsector()==1)
              os <<"-";
            else
              os <<"+";
          }
        }
        
        os<<"_";
        os <<"S"<<std::setw(2)<<std::setfill('0')
           <<_id->sector()<<std::setfill(' ');
        buf += os.str();
      }
      {
        std::stringstream os;
        if (_id->roll()==1)
          os<<"_Backward";
        else if (_id->roll() == 3)
          os<<"_Forward";
        else if (_id->roll() == 2)
        os <<"_Middle";
        buf += os.str();
      }
    }
    else {
      buf="RE";
      
      {
        std::stringstream os;
        os << std::setw(2)<<std::setfill('+')<<_id->station()*_id->region()
           <<std::setfill(' ')<<"_";
        buf += os.str();    
      }
      
      {
        std::stringstream os;
        os <<"R"<<_id->ring();
        os <<"_CH"<<std::setw(2)<<std::setfill('0')<<this->segment();
        buf += os.str();
      } 

      {
        std::stringstream os;
        if (_id->roll()==1)
          os<<"_A";
        else if (_id->roll() == 2)
          os<<"_B";
        else if (_id->roll() == 3)
          os <<"_C";
        else if (_id->roll() == 4)
          os <<"_D";
        buf += os.str();
      }
    }
    _n=buf;
  }
  return _n;
}
int RPCGeomServ::segment ( ) [virtual]
std::string RPCGeomServ::shortname ( ) [virtual]

Definition at line 222 of file RPCGeomServ.cc.

References _id, _sn, RPCDetId::layer(), RPCDetId::region(), RPCDetId::ring(), RPCDetId::roll(), RPCDetId::sector(), RPCDetId::station(), and RPCDetId::subsector().

Referenced by RPCEfficiencySecond::endRun().

{
  if (_sn.size()<1)
    {
    std::string buf;

    if (_id->region()==0){
      std::stringstream os;
      os <<"RB"<<_id->station();
      if (_id->station()<=2){
        if (_id->layer()==1){
          os<<"in";
        }else{
          os<<"out";
        }
      }else{
        if (_id->sector()== 4 && _id->station()==4){
          if ( _id->subsector()==1){
            os<<"--";
          }
          else if ( _id->subsector()==2){
            os <<",-";
          }
          else if ( _id->subsector()==3){
            os <<"+";
          }
          else if ( _id->subsector()==4){
            os <<"++";
          }
        }else{
          if (_id->subsector()==1)
            os <<",-";
          else
            os <<"+";
        }
      }
      if (_id->roll()==1)
        os<<" B";
      else if (_id->roll() == 3)
        os<<" F";
      else if (_id->roll() == 2)
        os<<" M";
      buf += os.str();
    }
    else {
      std::stringstream os;
      os <<"Ri"<<_id->ring()<<" Su"<<_id->subsector();
      buf += os.str();
    }
    _sn=buf;
  }
  return _sn;
}
bool RPCGeomServ::zpositive ( ) [virtual]

Definition at line 489 of file RPCGeomServ.cc.

References _id, _t, _z, RPCDetId::region(), RPCDetId::ring(), and RPCDetId::sector().

Referenced by inverted().

{
  if (_id->region()==0 && _t<-90 ){
    if (_id->ring()<0){
      _z=false;
    }
    if (_id->ring()==0){
      if (_id->sector() == 1 || _id->sector() == 4 ||
          _id->sector() == 5 || _id->sector() == 8 ||
          _id->sector() == 9 || _id->sector() == 12){
        _z=false;
      }
    } 
  }
 
  return _z;
}

Member Data Documentation

bool RPCGeomServ::_a [protected]

Definition at line 33 of file RPCGeomServ.h.

Referenced by aclockwise().

int RPCGeomServ::_cnr [protected]

Definition at line 31 of file RPCGeomServ.h.

Referenced by chambernr().

const RPCDetId* RPCGeomServ::_id [protected]
std::string RPCGeomServ::_n [protected]

Definition at line 28 of file RPCGeomServ.h.

Referenced by chambername(), and name().

std::string RPCGeomServ::_sn [protected]

Definition at line 29 of file RPCGeomServ.h.

Referenced by shortname().

int RPCGeomServ::_t [protected]

Definition at line 30 of file RPCGeomServ.h.

Referenced by aclockwise(), eta_partition(), and zpositive().

bool RPCGeomServ::_z [protected]

Definition at line 32 of file RPCGeomServ.h.

Referenced by zpositive().