CMS 3D CMS Logo

Functions

/data/refman/pasoursint/CMSSW_4_1_8_patch12/src/Geometry/TrackerGeometryBuilder/interface/trackerHierarchy.h File Reference

#include <string>

Go to the source code of this file.

Functions

std::string trackerHierarchy (unsigned int id)

Function Documentation

std::string trackerHierarchy ( unsigned int  id)

Definition at line 11 of file trackerHierarchy.cc.

References PXFDetId::blade(), PXFDetId::disk(), SiStripDetId::glued(), ExpressReco_HICollisions_FallBack::id, combine::key, PXBDetId::ladder(), TIBDetId::layer(), TOBDetId::layer(), PXBDetId::layer(), PXFDetId::module(), TOBDetId::module(), module(), TIDDetId::module(), PXBDetId::module(), TECDetId::module(), TIBDetId::module(), PXFDetId::panel(), TECDetId::petal(), TIDDetId::ring(), TECDetId::ring(), TOBDetId::rod(), PXFDetId::side(), TIDDetId::side(), TECDetId::side(), SiStripDetId::stereo(), TIBDetId::string(), TIDDetId::wheel(), and TECDetId::wheel().

Referenced by GeometricSearchTrackerBuilder::build().

                                               {
  DetId id(rawid);
  int subdetid = id.subdetId();
  switch (subdetid) {
    
    // PXB
  case 1:
    {
      PXBDetId module(rawid);
      char theLayer  = module.layer();
      char theLadder = module.ladder();
      char theModule = module.module();
      char key[] = { 1, theLayer , theLadder, theModule};
      return std::string(key,4);
    }
    
    // P1XF
  case 2:
    {
      PXFDetId module(rawid);
      char thePanel  = module.panel();
      char theDisk   = module.disk();
      char theBlade  = module.blade();
      char theModule = module.module();
      char key[] = { 2,
                     char(module.side()),
                     thePanel , theDisk, 
                     theBlade, theModule};
      return std::string(key,6);
    }
  
  // TIB
  case 3:
    {
      TIBDetId module(rawid);
      char            theLayer  = module.layer();
      std::vector<unsigned int> theString = module.string();
      char             theModule = module.module();
      //side = (theString[0] == 1 ) ? "-" : "+";
      //part = (theString[1] == 1 ) ? "int" : "ext";
      char key[] = { 3, 
                     theLayer, 
                     char(theString[0]),
                     char(theString[1]), 
                     char(theString[2]), 
                     theModule,
                     char(module.glued() ? module.stereo()+1 : 0)
      };
      return std::string(key, module.glued() ? 7 : 6);
    }
    
    // TID
  case 4:
    {
      TIDDetId module(rawid);
      unsigned int         theDisk   = module.wheel();
      unsigned int         theRing   = module.ring();
      std::vector<unsigned int> theModule = module.module();
      // side = (module.side() == 1 ) ? "-" : "+";
      // part = (theModule[0] == 1 ) ? "back" : "front";
      char key[] = { 4, 
                     char(module.side()),
                     char(theDisk) , 
                     char(theRing),
                     char(theModule[0]), 
                     char(theModule[1]),
                     char(module.glued() ? module.stereo()+1 : 0)
      };
      return std::string(key,module.glued() ? 7 : 6);
    }
    
    // TOB
  case 5:
    {
      TOBDetId module(rawid);
      unsigned int              theLayer  = module.layer();
      std::vector<unsigned int> theRod    = module.rod();
      unsigned int              theModule = module.module();
      //        side = (theRod[0] == 1 ) ? "-" : "+";
      char key[] = { 5, char(theLayer) , 
                     char(theRod[0]), 
                     char(theRod[1]), 
                     char(theModule),
                     char(module.glued() ? module.stereo()+1 : 0)
      };
      return std::string(key, module.glued() ?  6 : 5);
    }
    
    // TEC
  case 6:
    {
      TECDetId module(rawid);
      unsigned int              theWheel  = module.wheel();
      unsigned int              theModule = module.module();
      std::vector<unsigned int> thePetal  = module.petal();
      unsigned int              theRing   = module.ring();
      //        side  = (module.side() == 1 ) ? "-" : "+";
      //        petal = (thePetal[0] == 1 ) ? "back" : "front";
      // int out_side  = (module.side() == 1 ) ? -1 : 1;
      
      char key[] = { 6, 
                     char(module.side()),
                     char(theWheel),
                     char(thePetal[0]), 
                     char(thePetal[1]),
                     char(theRing),
                     char(theModule),
                     char(module.glued() ? module.stereo()+1 : 0)
      };
      return std::string(key, module.glued() ? 8 : 7);
    }
  default:
    return std::string();
  }
}