CMS 3D CMS Logo

Public Member Functions

SortLayersByZR Class Reference

#include <SortLayersByZR.h>

List of all members.

Public Member Functions

bool LayersSortedInZR (const std::vector< const Ring * > &layerA, const std::vector< const Ring * > &layerB) const
bool operator() (const std::vector< const Ring * > &layerA, const std::vector< const Ring * > &layerB) const
 SortLayersByZR ()
 ~SortLayersByZR ()

Detailed Description

Definition at line 22 of file SortLayersByZR.h.


Constructor & Destructor Documentation

SortLayersByZR::SortLayersByZR ( )

Definition at line 18 of file SortLayersByZR.cc.

                               {
  //
  // default constructor
  //
}
SortLayersByZR::~SortLayersByZR ( )

Definition at line 24 of file SortLayersByZR.cc.

                                { 
  //
  // default destructor
  //
}

Member Function Documentation

bool SortLayersByZR::LayersSortedInZR ( const std::vector< const Ring * > &  layerA,
const std::vector< const Ring * > &  layerB 
) const

Definition at line 30 of file SortLayersByZR.cc.

References a, b, Ring::getindex(), and query::result.

Referenced by operator()().

                                                                                                                      {
  //
  // return true if layers are sorted in abs ZR, else return false
  // use first ring of layer as reference

  const Ring* a = (*(layerA.begin()));
  const Ring* b = (*(layerB.begin()));

  // return value
  bool result = true;

  if ( a->getindex() > b->getindex() ) {
    result = false;
  }

//   double r1 = (a->getrmax() - a->getrmin())/2 + a->getrmin();
//   double z1 = (a->getzmax() - a->getzmin())/2 + a->getzmin();

//   double r2 = (b->getrmax() - b->getrmin())/2 + b->getrmin();
//   double z2 = (b->getzmax() - b->getzmin())/2 + b->getzmin();

//   if ( a->getType() == b->getType() ) {
//     if ( a->getType() == Ring::TIBRing ||
//       a->getType() == Ring::TOBRing ||
//       a->getType() == Ring::PXBRing ) {
//       if ( r1 > r2 ) {
//      result = false;
//       } else {
//      if ( z1 > z2 ) {
//        result = false;
//      }
//       }
//     } else {
//       if ( z1 > z2 ) {
//      result = false;
//       } else {
//      if ( r1 > r2 ) {
//        result = false;
//      }
//       }
//     }
//   } else {
//     if ( (a->getType() == Ring::PXBRing && b->getType() == Ring::TIBRing) ||
//       (a->getType() == Ring::TIBRing && b->getType() == Ring::PXBRing) ) {
//       if ( r1 > r2 ) {
//      result = false;
//       }
//  else {
//      if ( z1 > z2 ) {
//        result = false;
//      }
//       }
      
//     } else if ( (a->getType() == Ring::PXBRing && b->getType() == Ring::TOBRing) ||
//              (a->getType() == Ring::TOBRing && b->getType() == Ring::PXBRing) ) {
//       if ( r1 > r2 ) {
//      result = false;
//       }
//  else {
//      if ( z1 > z2 ) {
//        result = false;
//      }
//       }

//     } else if ( (a->getType() == Ring::PXBRing && b->getType() == Ring::PXFRing) ||
//              (a->getType() == Ring::PXFRing && b->getType() == Ring::PXBRing) ) {
//       if ( z1 > z2 ) {
//      result = false;
//       }
//  else {
//      if ( r1 > r2 ) {
//        result = false;
//      }
//       }

//     } else if ( (a->getType() == Ring::PXBRing && b->getType() == Ring::TIDRing) ||
//              (a->getType() == Ring::TIDRing && b->getType() == Ring::PXBRing) ) {
//       if ( z1 > z2 ) {
//      result = false;
//       }
//  else {
//      if ( r1 > r2 ) {
//        result = false;
//      }
//       }

//     } else if ( (a->getType() == Ring::PXBRing && b->getType() == Ring::TECRing) ||
//              (a->getType() == Ring::TECRing && b->getType() == Ring::PXBRing) ) {
//       if ( z1 > z2 ) {
//      result = false;
//       }
//  else {
//      if ( r1 > r2 ) {
//        result = false;
//      }
//       }

//     } else if ( (a->getType() == Ring::TIBRing && b->getType() == Ring::TOBRing) ||
//              (a->getType() == Ring::TOBRing && b->getType() == Ring::TIBRing) ) {
//       if ( r1 > r2 ) {
//      result = false;
//       }
//  else {
//      if ( z1 > z2 ) {
//        result = false;
//      }
//       }

//     } else if ( (a->getType() == Ring::TIBRing && b->getType() == Ring::PXFRing) ||
//              (a->getType() == Ring::PXFRing && b->getType() == Ring::TIBRing) ) {
//       if ( r1 > r2 ) {
//      result = false;
//       }
//  else {
//      if ( z1 > z2 ) {
//        result = false;
//      }
//       }

//     } else if ( (a->getType() == Ring::TIBRing && b->getType() == Ring::TIDRing) ||
//              (a->getType() == Ring::TIDRing && b->getType() == Ring::TIBRing) ) {
//       if ( z1 > z2 ) {
//      result = false;
//       }
//  else {
//      if ( r1 > r2 ) {
//        result = false;
//      }
//       }

//     } else if ( (a->getType() == Ring::TIBRing && b->getType() == Ring::TECRing) ||
//              (a->getType() == Ring::TECRing && b->getType() == Ring::TIBRing) ) {
//       if ( z1 > z2 ) {
//      result = false;
//       }
//  else {
//      if ( r1 > r2 ) {
//        result = false;
//      }
//       }

//     } else if ( (a->getType() == Ring::TOBRing && b->getType() == Ring::PXFRing) ||
//              (a->getType() == Ring::PXFRing && b->getType() == Ring::TOBRing) ) {
//       if ( r1 > r2 ) {
//      result = false;
//       }
//  else {
//      if ( z1 > z2 ) {
//        result = false;
//      }
//       }

//     } else if ( (a->getType() == Ring::TOBRing && b->getType() == Ring::TIDRing) ||
//              (a->getType() == Ring::TIDRing && b->getType() == Ring::TOBRing) ) {
//       if ( r1 > r2 ) {
//      result = false;
//       }
//  else {
//      if ( z1 > z2 ) {
//        result = false;
//      }
//       }

//     } else if ( (a->getType() == Ring::TOBRing && b->getType() == Ring::TECRing) ||
//              (a->getType() == Ring::TECRing && b->getType() == Ring::TOBRing) ) {
//       if ( z1 > z2 ) {
//      result = false;
//       }
//  else {
//      if ( r1 > r2 ) {
//        result = false;
//      }
//       }

//     } else if ( (a->getType() == Ring::PXFRing && b->getType() == Ring::TIDRing) ||
//              (a->getType() == Ring::TIDRing && b->getType() == Ring::PXFRing) ) {
//       if ( z1 > z2 ) {
//      result = false;
//       }
//  else {
//      if ( r1 > r2 ) {
//        result = false;
//      }
//       }

//     } else if ( (a->getType() == Ring::PXFRing && b->getType() == Ring::TECRing) ||
//              (a->getType() == Ring::TECRing && b->getType() == Ring::PXFRing) ) {
//       if ( z1 > z2 ) {
//      result = false;
//       }
//  else {
//      if ( r1 > r2 ) {
//        result = false;
//      }
//       }

//     } else if ( (a->getType() == Ring::TIDRing && b->getType() == Ring::TECRing) ||
//              (a->getType() == Ring::TECRing && b->getType() == Ring::TIDRing) ) {
//       if ( z1 > z2 ) {
//      result = false;
//       }
//  else {
//      if ( r1 > r2 ) {
//        result = false;
//      }
//       }

//     }

//   }

  return result;
}
bool SortLayersByZR::operator() ( const std::vector< const Ring * > &  layerA,
const std::vector< const Ring * > &  layerB 
) const [inline]

Definition at line 29 of file SortLayersByZR.h.

References LayersSortedInZR().

                                                                                                    {
    return LayersSortedInZR(layerA,layerB);
  }