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
std::string _cn
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 ( void  ) [virtual]

Definition at line 16 of file RPCGeomServ.cc.

{}
RPCGeomServ::RPCGeomServ ( ) [protected]

Definition at line 530 of file RPCGeomServ.cc.

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

Member Function Documentation

bool RPCGeomServ::aclockwise ( ) [virtual]

Definition at line 505 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 120 of file RPCGeomServ.cc.

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

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

{
  if( _cn.size() < 1 )
  {
    int station = _id->station();
    int region = _id->region();
    int ring = _id->ring();
    int layer = _id->layer();
    int sector = _id->sector();
    int subsector = _id->subsector();

    std::stringstream os;
    
    if( region == 0 )
    {
      os << "W";

      os << std::setw(2) << std::setfill('+') << ring
         << std::setfill(' ') << "_";

      os << "RB" << station;
      if ( station <= 2 ) {
        
        (layer == 1 ) ? os << "in" : os << "out";
        
      }else if( station > 2 )
      {
        if( sector == 4 && station == 4 )
        {
          if( subsector == 1 )
          {
            os << "--";
          }
          else if( subsector == 2 )
          {
            os << "-";
          }
          else if( subsector == 3 )
          {
            os << "+";
          }
          else if( subsector == 4 )
          {
            os <<"++";
          }
        }
          
        if( station == 3 )
        {
          if( subsector == 1 )
            os << "-";
          else
            os << "+";
        }
        else if( station == 4
                 && sector != 9
                 && sector != 11
                 && sector != 4 )
        {
          if( subsector == 1 )
            os << "-";
          else
            os << "+";
        }
      }
        
      os << "_";
      os << "S" << std::setw(2) << std::setfill('0')
         << sector << std::setfill(' ');
    }
    else
    {
      os << "RE"; 
    
      os << std::setw(2) << std::setfill('+') << station * region
         << std::setfill(' ') << "_";

      os << "R" << ring;
      os << "_CH" << std::setw(2) << std::setfill('0') << this->segment();
    }
    _cn = os.str();
  }
  return _cn;
}
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 ( void  )

Definition at line 275 of file RPCGeomServ.cc.

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

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

    int station = _id->station();
  
    if (station<3 && _id->layer()==1){ // i.e. RB1in ||RB2in  
      chipCh.push_back(7);
      chipCh.push_back(8);
    }else if (station == 1 || station == 3){//i.e. RB1out || RB3 
      chipCh.push_back(7);
      chipCh.push_back(7);
    }else if (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 478 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 20 of file RPCGeomServ.cc.

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

Referenced by RPCMon_SS_Dbx_Global::analyze(), RPCEfficiency::analyze(), RPCDBPopConAnalyzer::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(), RPCSimAverageNoiseEff::simulateNoise(), cond::PayLoadInspector< DataT >::summary(), and TracktoRPC::TracktoRPC().

{
  if( _n.size() < 1 )
  {
    int station = _id->station();
    int region = _id->region();
    int roll = _id->roll();
    int ring = _id->ring();
    int layer = _id->layer();
    int sector = _id->sector();
    int subsector = _id->subsector();

    std::stringstream os;
    
    if( region == 0 )
    {
      os << "W";
      os << std::setw(2) << std::setfill('+') << ring
         << std::setfill(' ') << "_";

      os << "RB" << station;
      if ( station <= 2){
        (layer == 1 ) ? os << "in" : os << "out";
        
      }else if( station > 2 )
      {
        if( sector == 4 && station == 4 )
        {
          if( subsector == 1 )
          {
            os << "--";
          }
          else if( subsector == 2 )
          {
            os << "-";
          }
          else if( subsector == 3 )
          {
            os << "+";
          }
          else if( subsector == 4 )
          {
            os << "++";
          }
        }
          
        if( station == 3 )
        {
          if( subsector == 1 )
            os << "-";
          else
            os << "+";
        }       
        else if( station == 4
                 && sector != 9
                 && sector !=11
                 && sector != 4 )
        {
          if( subsector == 1 )
            os << "-";
          else
            os << "+";
        }
      }
        
      os << "_";
      os << "S" << std::setw(2) << std::setfill('0')
         << sector << std::setfill(' ');
      if( roll == 1 )
        os << "_Backward";
      else if( roll == 3 )
        os << "_Forward";
      else if( roll == 2 )
        os << "_Middle";
    }
    else
    {
      os << "RE";

      os << std::setw(2) << std::setfill('+') << station * region
         << std::setfill(' ') << "_";

      os << "R" << ring;
      os << "_CH" << std::setw(2) << std::setfill('0') << this->segment();

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

Definition at line 206 of file RPCGeomServ.cc.

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

Referenced by RPCEfficiencySecond::endRun().

{
  if( _sn.size() < 1 )
  {
    int station = _id->station();
    int region = _id->region();
    int roll = _id->roll();
    int ring = _id->ring();
    int layer = _id->layer();
    int sector = _id->sector();
    int subsector = _id->subsector();

    std::stringstream os;

    if( region == 0 )
    {
      os << "RB" << station;
      if( station <= 2 ){

        (layer == 1 ) ? os << "in" : os << "out";

      }
      else
      {
        if( sector == 4 && station == 4 )
        {
          if( subsector == 1 )
          {
            os << "--";
          }
          else if( subsector == 2 )
          {
            os << ",-";
          }
          else if( subsector == 3 )
          {
            os << "+";
          }
          else if( subsector == 4 )
          {
            os << "++";
          }
        }
        else
        {
          if( subsector == 1 )
            os << ",-";
          else
            os << "+";
        }
      }
      if( roll == 1 )
        os << " B";
      else if( roll == 3 )
        os << " F";
      else if( roll == 2 )
        os << " M";
    }
    else
    {
      os << "Ri" << ring << " Su" << subsector;
    }
    _sn = os.str();
  }
  return _sn;
}
bool RPCGeomServ::zpositive ( ) [virtual]

Definition at line 486 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 34 of file RPCGeomServ.h.

Referenced by aclockwise().

std::string RPCGeomServ::_cn [protected]

Definition at line 30 of file RPCGeomServ.h.

Referenced by chambername().

int RPCGeomServ::_cnr [protected]

Definition at line 32 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 name().

std::string RPCGeomServ::_sn [protected]

Definition at line 29 of file RPCGeomServ.h.

Referenced by shortname().

int RPCGeomServ::_t [protected]

Definition at line 31 of file RPCGeomServ.h.

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

bool RPCGeomServ::_z [protected]

Definition at line 33 of file RPCGeomServ.h.

Referenced by zpositive().