CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
List of all members | Classes | Public Member Functions | Protected Member Functions | Private Types | Private Member Functions | Private Attributes
AlignmentParameterSelector Class Reference

#include <AlignmentParameterSelector.h>

Classes

struct  PXBDetIdRanges
 
struct  PXFDetIdRanges
 
struct  TECDetIdRanges
 
struct  TIBDetIdRanges
 
struct  TIDDetIdRanges
 
struct  TOBDetIdRanges
 

Public Member Functions

unsigned int addSelection (const std::string &name, const std::vector< char > &paramSel)
 
unsigned int addSelection (const std::string &name, const std::vector< char > &paramSel, const edm::ParameterSet &pSet)
 as addSelection with one argument, but overwriting geometrical restrictions More...
 
unsigned int addSelections (const edm::ParameterSet &pSet)
 
 AlignmentParameterSelector (AlignableTracker *aliTracker, AlignableMuon *aliMuon=0, AlignableExtras *aliExtras=0)
 Constructor from tracker only or from tracker and muon. More...
 
void clear ()
 remove all selected Alignables and geometrical restrictions More...
 
void clearGeometryCuts ()
 remove all geometrical restrictions More...
 
std::vector< char > convertParamSel (const std::string &selString) const
 Converting std::string into std::vector<char> More...
 
std::vector< std::string > decompose (const std::string &s, std::string::value_type delimiter) const
 Decomposing input string 's' into parts separated by 'delimiter'. More...
 
bool detUnitDeselected (const Alignable *alignable) const
 true if alignable is DetUnit deselected by Unit<Rphi/Stereo> selection More...
 
template<typename T >
bool insideRanges (T value, const std::vector< T > &ranges, bool isPhi=false) const
 
template<>
bool insideRanges (int value, const std::vector< int > &ranges, bool isPhi) const
 
template<>
bool insideRanges (int value, const std::vector< int > &ranges, bool) const
 
bool isMemberOfVector (int value, const std::vector< int > &values) const
 true if value is member of vector of values More...
 
bool layerDeselected (const Alignable *alignable) const
 true if layer is deselected via "Layers<N><M>" or "DS/SS" More...
 
bool outsideDetIdRanges (const Alignable *alignable) const
 true if DetId restrictions are not satisfied More...
 
bool outsideGeometricalRanges (const Alignable *alignable) const
 true if geometrical restrictions in eta, phi, r, x, y, z not satisfied More...
 
const align::AlignablesselectedAlignables () const
 vector of alignables selected so far More...
 
const std::vector< std::vector
< char > > & 
selectedParameters () const
 vector of selection 'strings' for alignables, parallel to selectedAlignables() More...
 
void setGeometryCuts (const edm::ParameterSet &pSet)
 
virtual ~AlignmentParameterSelector ()
 Destructor. More...
 

Protected Member Functions

unsigned int add (const align::Alignables &alignables, const std::vector< char > &paramSel)
 adding alignables which fulfil geometrical restrictions and special switches More...
 
unsigned int addAllAlignables (const std::vector< char > &paramSel)
 
unsigned int addAllDets (const std::vector< char > &paramSel)
 some helper methods More...
 
unsigned int addAllLayers (const std::vector< char > &paramSel)
 
unsigned int addAllRods (const std::vector< char > &paramSel)
 
void setPXBDetIdCuts (const edm::ParameterSet &pSet)
 
void setPXFDetIdCuts (const edm::ParameterSet &pSet)
 
void setTECDetIdCuts (const edm::ParameterSet &pSet)
 
void setTIBDetIdCuts (const edm::ParameterSet &pSet)
 
void setTIDDetIdCuts (const edm::ParameterSet &pSet)
 
void setTOBDetIdCuts (const edm::ParameterSet &pSet)
 

Private Types

enum  RphiOrStereoDetUnit { Stereo, Both, Rphi }
 

Private Member Functions

std::string setSpecials (const std::string &name)
 

Private Attributes

std::vector< int > theDetIdRanges
 
std::vector< int > theDetIds
 DetId restrictions in eta, phi, r, x, y, z to be applied for next addSelection. More...
 
std::vector< int > theExcludedDetIdRanges
 
std::vector< int > theExcludedDetIds
 
AlignableExtrastheExtras
 
int theMaxLayer
 
int theMinLayer
 
AlignableMuontheMuon
 
bool theOnlyDS
 
bool theOnlySS
 
struct
AlignmentParameterSelector::PXBDetIdRanges 
thePXBDetIdRanges
 
struct
AlignmentParameterSelector::PXFDetIdRanges 
thePXFDetIdRanges
 
std::vector< double > theRangesEta
 geometrical restrictions in eta, phi, r, x, y, z to be applied for next addSelection More...
 
std::vector< double > theRangesPhi
 
std::vector< double > theRangesR
 
std::vector< double > theRangesX
 
std::vector< double > theRangesY
 
std::vector< double > theRangesZ
 
RphiOrStereoDetUnit theRphiOrStereoDetUnit
 
align::Alignables theSelectedAlignables
 
std::vector< std::vector< char > > theSelectedParameters
 
bool theSelLayers
 
struct
AlignmentParameterSelector::TECDetIdRanges 
theTECDetIdRanges
 
struct
AlignmentParameterSelector::TIBDetIdRanges 
theTIBDetIdRanges
 
struct
AlignmentParameterSelector::TIDDetIdRanges 
theTIDDetIdRanges
 
struct
AlignmentParameterSelector::TOBDetIdRanges 
theTOBDetIdRanges
 
AlignableTrackertheTracker
 

Detailed Description

Author
Gero Flucke (selection by strings taken from AlignableParameterBuilder)

Selecting Alignable's of the tracker by predefined strings, additional constraints on eta, phi, r, x, y or z are possible. Furthermore stores the 'selection' of selected AlignmentParameters.

Date:
2010/11/22 08:40:08
Revision:
1.10

(last update by

Author:
mussgill

)

Definition at line 26 of file AlignmentParameterSelector.h.

Member Enumeration Documentation

Constructor & Destructor Documentation

AlignmentParameterSelector::AlignmentParameterSelector ( AlignableTracker aliTracker,
AlignableMuon aliMuon = 0,
AlignableExtras aliExtras = 0 
)
explicit

Constructor from tracker only or from tracker and muon.

Definition at line 29 of file AlignmentParameterSelector.cc.

References setSpecials().

30  :
31  theTracker(aliTracker), theMuon(aliMuon), theExtras(aliExtras), theSelectedAlignables(),
33 {
34  this->setSpecials(""); // init theOnlyDS, theOnlySS, theSelLayers, theMinLayer, theMaxLayer, theRphiOrStereoDetUnit
35 }
std::vector< double > theRangesEta
geometrical restrictions in eta, phi, r, x, y, z to be applied for next addSelection ...
std::string setSpecials(const std::string &name)
virtual AlignmentParameterSelector::~AlignmentParameterSelector ( )
inlinevirtual

Destructor.

Definition at line 33 of file AlignmentParameterSelector.h.

33 {}

Member Function Documentation

unsigned int AlignmentParameterSelector::add ( const align::Alignables alignables,
const std::vector< char > &  paramSel 
)
protected

adding alignables which fulfil geometrical restrictions and special switches

Definition at line 491 of file AlignmentParameterSelector.cc.

References detUnitDeselected(), layerDeselected(), outsideDetIdRanges(), outsideGeometricalRanges(), theSelectedAlignables, and theSelectedParameters.

Referenced by addAllAlignables(), addAllDets(), addAllLayers(), addAllRods(), and addSelection().

493 {
494  unsigned int numAli = 0;
495 
496  // loop on Alignable objects
497  for (align::Alignables::const_iterator iAli = alignables.begin();
498  iAli != alignables.end(); ++iAli) {
499 
500  if (!this->layerDeselected(*iAli) // check layers
501  && !this->detUnitDeselected(*iAli) // check detunit selection
502  && !this->outsideGeometricalRanges(*iAli) // check geometrical ranges
503  && !this->outsideDetIdRanges(*iAli)) { // check DetId ranges
504  // all fine, so add to output arrays
505  theSelectedAlignables.push_back(*iAli);
506  theSelectedParameters.push_back(paramSel);
507  ++numAli;
508  }
509  }
510 
511  return numAli;
512 }
bool outsideGeometricalRanges(const Alignable *alignable) const
true if geometrical restrictions in eta, phi, r, x, y, z not satisfied
std::vector< std::vector< char > > theSelectedParameters
bool outsideDetIdRanges(const Alignable *alignable) const
true if DetId restrictions are not satisfied
bool layerDeselected(const Alignable *alignable) const
true if layer is deselected via &quot;Layers&lt;N&gt;&lt;M&gt;&quot; or &quot;DS/SS&quot;
bool detUnitDeselected(const Alignable *alignable) const
true if alignable is DetUnit deselected by Unit&lt;Rphi/Stereo&gt; selection
unsigned int AlignmentParameterSelector::addAllAlignables ( const std::vector< char > &  paramSel)
protected

Definition at line 879 of file AlignmentParameterSelector.cc.

References add(), addAllDets(), addAllLayers(), addAllRods(), AlignableComposite::components(), and theTracker.

Referenced by addSelection().

880 {
881  unsigned int numAli = 0;
882 
883  numAli += this->addAllDets(paramSel);
884  numAli += this->addAllRods(paramSel);
885  numAli += this->addAllLayers(paramSel);
886  numAli += this->add(theTracker->components(), paramSel);
887 
888  return numAli;
889 }
unsigned int addAllDets(const std::vector< char > &paramSel)
some helper methods
unsigned int addAllLayers(const std::vector< char > &paramSel)
unsigned int addAllRods(const std::vector< char > &paramSel)
unsigned int add(const align::Alignables &alignables, const std::vector< char > &paramSel)
adding alignables which fulfil geometrical restrictions and special switches
virtual Alignables components() const
Return vector of direct components.
unsigned int AlignmentParameterSelector::addAllDets ( const std::vector< char > &  paramSel)
protected

some helper methods

Definition at line 837 of file AlignmentParameterSelector.cc.

References add(), AlignableTracker::barrelGeomDets(), AlignableTracker::endcapGeomDets(), AlignableTracker::pixelEndcapGeomDets(), AlignableTracker::pixelHalfBarrelGeomDets(), theTracker, and AlignableTracker::TIDGeomDets().

Referenced by addAllAlignables(), and addSelection().

838 {
839  unsigned int numAli = 0;
840 
841  numAli += this->add(theTracker->barrelGeomDets(), paramSel); // TIB+TOB
842  numAli += this->add(theTracker->endcapGeomDets(), paramSel); // TEC
843  numAli += this->add(theTracker->TIDGeomDets(), paramSel); // TID
844  numAli += this->add(theTracker->pixelHalfBarrelGeomDets(), paramSel); // PixelBarrel
845  numAli += this->add(theTracker->pixelEndcapGeomDets(), paramSel); // PixelEndcap
846 
847  return numAli;
848 }
Alignables & pixelHalfBarrelGeomDets()
Return pixel barrel GeomDets.
Alignables barrelGeomDets()
Return inner and outer barrel GeomDets together.
Alignables & TIDGeomDets()
Return TID GeomDets.
Alignables & endcapGeomDets()
Return endcap GeomDets.
Alignables & pixelEndcapGeomDets()
Return pixel endcap GeomDets.
unsigned int add(const align::Alignables &alignables, const std::vector< char > &paramSel)
adding alignables which fulfil geometrical restrictions and special switches
unsigned int AlignmentParameterSelector::addAllLayers ( const std::vector< char > &  paramSel)
protected

Definition at line 865 of file AlignmentParameterSelector.cc.

References add(), AlignableTracker::barrelLayers(), AlignableTracker::endcapLayers(), AlignableTracker::pixelEndcapLayers(), AlignableTracker::pixelHalfBarrelLayers(), theTracker, and AlignableTracker::TIDLayers().

Referenced by addAllAlignables(), and addSelection().

866 {
867  unsigned int numAli = 0;
868 
869  numAli += this->add(theTracker->barrelLayers(), paramSel); // TIB+TOB
870  numAli += this->add(theTracker->pixelHalfBarrelLayers(), paramSel); // PixelBarrel
871  numAli += this->add(theTracker->endcapLayers(), paramSel); // TEC
872  numAli += this->add(theTracker->TIDLayers(), paramSel); // TID
873  numAli += this->add(theTracker->pixelEndcapLayers(), paramSel); // PixelEndcap
874 
875  return numAli;
876 }
Alignables & pixelHalfBarrelLayers()
Return pixel half barrel layers.
Alignables barrelLayers()
Return inner and outer barrel layers.
Alignables & TIDLayers()
Return TID layers.
unsigned int add(const align::Alignables &alignables, const std::vector< char > &paramSel)
adding alignables which fulfil geometrical restrictions and special switches
Alignables & endcapLayers()
Return endcap layers.
Alignables & pixelEndcapLayers()
Return pixel endcap layers.
unsigned int AlignmentParameterSelector::addAllRods ( const std::vector< char > &  paramSel)
protected

Definition at line 851 of file AlignmentParameterSelector.cc.

References add(), AlignableTracker::barrelRods(), AlignableTracker::endcapPetals(), AlignableTracker::pixelEndcapPetals(), AlignableTracker::pixelHalfBarrelLadders(), theTracker, and AlignableTracker::TIDRings().

Referenced by addAllAlignables(), and addSelection().

852 {
853  unsigned int numAli = 0;
854 
855  numAli += this->add(theTracker->barrelRods(), paramSel); // TIB+TOB
856  numAli += this->add(theTracker->pixelHalfBarrelLadders(), paramSel); // PixelBarrel
857  numAli += this->add(theTracker->endcapPetals(), paramSel); // TEC
858  numAli += this->add(theTracker->TIDRings(), paramSel); // TID
859  numAli += this->add(theTracker->pixelEndcapPetals(), paramSel); // PixelEndcap
860 
861  return numAli;
862 }
Alignables barrelRods()
Return inner and outer barrel rods.
Alignables & pixelEndcapPetals()
Return pixel endcap petals.
Alignables & TIDRings()
Return TID rings.
unsigned int add(const align::Alignables &alignables, const std::vector< char > &paramSel)
adding alignables which fulfil geometrical restrictions and special switches
Alignables & pixelHalfBarrelLadders()
Return pixel half barrel ladders (implemented as AlignableRods)
Alignables & endcapPetals()
Return encap petals.
unsigned int AlignmentParameterSelector::addSelection ( const std::string &  name,
const std::vector< char > &  paramSel 
)

add Alignables corresponding to predefined name, taking into account geometrical restrictions as defined in setSpecials, returns number of added alignables

Definition at line 319 of file AlignmentParameterSelector.cc.

References add(), addAllAlignables(), addAllDets(), addAllLayers(), addAllRods(), AlignableTracker::barrelGeomDets(), AlignableTracker::barrelLayers(), AlignableTracker::barrelRods(), AlignableComposite::components(), AlignableMuon::CSCChambers(), AlignableMuon::CSCEndcaps(), AlignableMuon::CSCLayers(), AlignableMuon::CSCRings(), AlignableMuon::CSCStations(), AlignableMuon::DTBarrel(), AlignableMuon::DTChambers(), AlignableMuon::DTLayers(), AlignableMuon::DTStations(), AlignableMuon::DTSuperLayers(), AlignableMuon::DTWheels(), AlignableTracker::endcapGeomDets(), AlignableTracker::endcapLayers(), AlignableTracker::endcapPetals(), AlignableTracker::endCaps(), edm::hlt::Exception, AlignableTracker::innerBarrelGeomDets(), AlignableTracker::innerBarrelLayers(), AlignableTracker::innerBarrelRods(), AlignableTracker::innerHalfBarrels(), mergeVDriftHistosByStation::name, AlignableTracker::outerBarrelGeomDets(), AlignableTracker::outerBarrelLayers(), AlignableTracker::outerBarrelRods(), AlignableTracker::outerHalfBarrels(), AlignableTracker::pixelEndcapGeomDets(), AlignableTracker::pixelEndcapLayers(), AlignableTracker::pixelEndcapPetals(), AlignableTracker::pixelEndCaps(), AlignableTracker::pixelHalfBarrelGeomDets(), AlignableTracker::pixelHalfBarrelLadders(), AlignableTracker::pixelHalfBarrelLayers(), AlignableTracker::pixelHalfBarrels(), setSpecials(), AlignableTracker::subStructures(), AlignableExtras::subStructures(), theExtras, theMuon, theTracker, AlignableTracker::TIDGeomDets(), AlignableTracker::TIDLayers(), AlignableTracker::TIDRings(), and AlignableTracker::TIDs().

Referenced by addSelection(), addSelections(), MomentumDependentPedeLabeler::buildMomentumDependencyMap(), RunRangeDependentPedeLabeler::buildRunRangeDependencyMap(), and KalmanAlignmentAlgorithm::initializeAlignmentParameters().

321 {
322  const std::string name(this->setSpecials(nameInput)); // possibly changing name
323 
324  unsigned int numAli = 0;
325 
327  // Generic Tracker Section
329  if (name.find("Tracker") == 0) { // string starts with "Tracker"
330  if (!theTracker) {
331  throw cms::Exception("BadConfig") << "[AlignmentParameterSelector::addSelection] "
332  << "Configuration requires access to AlignableTracker"
333  << " (for " << name << ") that is not initialized";
334  }
335  const std::string substructName(name, 7); // erase "Tracker" at the beginning
336  numAli += this->add(theTracker->subStructures(substructName), paramSel);
337  }
339  // Old hardcoded (i.e. deprecated) tracker section (NOTE: no check on theTracker != 0)
341  else if (name == "AllDets") numAli += this->addAllDets(paramSel);
342  else if (name == "AllRods") numAli += this->addAllRods(paramSel);
343  else if (name == "AllLayers") numAli += this->addAllLayers(paramSel);
344  else if (name == "AllComponents") numAli += this->add(theTracker->components(), paramSel);
345  else if (name == "AllAlignables") numAli += this->addAllAlignables(paramSel);
346  //
347  // TIB+TOB
348  //
349  else if (name == "BarrelRods") numAli += this->add(theTracker->barrelRods(), paramSel);
350  else if (name == "BarrelDets") numAli += this->add(theTracker->barrelGeomDets(), paramSel);
351  else if (name == "BarrelLayers") numAli += this->add(theTracker->barrelLayers(), paramSel);
352  else if (name == "TOBDets") numAli += this->add(theTracker->outerBarrelGeomDets(), paramSel);
353  else if (name == "TOBRods") numAli += this->add(theTracker->outerBarrelRods(), paramSel);
354  else if (name == "TOBLayers") numAli += this->add(theTracker->outerBarrelLayers(), paramSel);
355  else if (name == "TOBHalfBarrels") numAli += this->add(theTracker->outerHalfBarrels(), paramSel);
356  else if (name == "TIBDets") numAli += this->add(theTracker->innerBarrelGeomDets(), paramSel);
357  else if (name == "TIBRods") numAli += this->add(theTracker->innerBarrelRods(), paramSel);
358  else if (name == "TIBLayers") numAli += this->add(theTracker->innerBarrelLayers(), paramSel);
359  else if (name == "TIBHalfBarrels") numAli += this->add(theTracker->innerHalfBarrels(), paramSel);
360  //
361  // PXBarrel
362  //
363  else if (name == "PixelHalfBarrelDets") {
364  numAli += this->add(theTracker->pixelHalfBarrelGeomDets(), paramSel);
365  } else if (name == "PixelHalfBarrelLadders") {
366  numAli += this->add(theTracker->pixelHalfBarrelLadders(), paramSel);
367  } else if (name == "PixelHalfBarrelLayers") {
368  numAli += this->add(theTracker->pixelHalfBarrelLayers(), paramSel);
369  } else if (name == "PixelHalfBarrels") {
370  numAli += this->add(theTracker->pixelHalfBarrels(), paramSel);
371  }
372  //
373  // PXEndcap
374  //
375  else if (name == "PXECDets") numAli += this->add(theTracker->pixelEndcapGeomDets(), paramSel);
376  else if (name == "PXECPetals") numAli += this->add(theTracker->pixelEndcapPetals(), paramSel);
377  else if (name == "PXECLayers") numAli += this->add(theTracker->pixelEndcapLayers(), paramSel);
378  else if (name == "PXEndCaps") numAli += this->add(theTracker->pixelEndCaps(), paramSel);
379  //
380  // Pixel Barrel+endcap
381  //
382  else if (name == "PixelDets") {
383  numAli += this->add(theTracker->pixelHalfBarrelGeomDets(), paramSel);
384  numAli += this->add(theTracker->pixelEndcapGeomDets(), paramSel);
385  } else if (name == "PixelRods") {
386  numAli += this->add(theTracker->pixelHalfBarrelLadders(), paramSel);
387  numAli += this->add(theTracker->pixelEndcapPetals(), paramSel);
388  } else if (name == "PixelLayers") {
389  numAli += this->add(theTracker->pixelHalfBarrelLayers(), paramSel);
390  numAli += this->add(theTracker->pixelEndcapLayers(), paramSel);
391  }
392  //
393  // TID
394  //
395  else if (name == "TIDs") numAli += this->add(theTracker->TIDs(), paramSel);
396  else if (name == "TIDLayers") numAli += this->add(theTracker->TIDLayers(), paramSel);
397  else if (name == "TIDRings") numAli += this->add(theTracker->TIDRings(), paramSel);
398  else if (name == "TIDDets") numAli += this->add(theTracker->TIDGeomDets(), paramSel);
399  //
400  // TEC
401  //
402  else if (name == "TECDets") numAli += this->add(theTracker->endcapGeomDets(), paramSel);
403  else if (name == "TECPetals") numAli += this->add(theTracker->endcapPetals(), paramSel);
404  else if (name == "TECLayers") numAli += this->add(theTracker->endcapLayers(), paramSel);
405  else if (name == "TECs") numAli += this->add(theTracker->endCaps(), paramSel);
406  //
407  // StripEndcap (TID+TEC)
408  //
409  else if (name == "EndcapDets") {
410  numAli += this->add(theTracker->TIDGeomDets(), paramSel);
411  numAli += this->add(theTracker->endcapGeomDets(), paramSel);
412  } else if (name == "EndcapPetals") {
413  numAli += this->add(theTracker->TIDRings(), paramSel);
414  numAli += this->add(theTracker->endcapPetals(), paramSel);
415  } else if (name == "EndcapLayers") {
416  numAli += this->add(theTracker->TIDLayers(), paramSel);
417  numAli += this->add(theTracker->endcapLayers(), paramSel);
418  }
419  //
420  // Strip Barrel+endcap
421  //
422  else if (name == "StripDets") {
423  numAli += this->add(theTracker->barrelGeomDets(), paramSel);
424  numAli += this->add(theTracker->TIDGeomDets(), paramSel);
425  numAli += this->add(theTracker->endcapGeomDets(), paramSel);
426  } else if (name == "StripRods") {
427  numAli += this->add(theTracker->barrelRods(), paramSel);
428  numAli += this->add(theTracker->TIDRings(), paramSel);
429  numAli += this->add(theTracker->endcapPetals(), paramSel);
430  } else if (name == "StripLayers") {
431  numAli += this->add(theTracker->barrelLayers(), paramSel);
432  numAli += this->add(theTracker->TIDLayers(), paramSel);
433  numAli += this->add(theTracker->endcapLayers(), paramSel);
434  }
436  // Muon selection
438  // Check if name contains muon and react if alignable muon not initialized
439  else if (name.find("Muon") != std::string::npos) {
440  if (!theMuon) {
441  throw cms::Exception("BadConfig") << "[AlignmentParameterSelector::addSelection] "
442  << "Configuration requires access to AlignableMuon"
443  << " which is not initialized";
444  }
445  else if (name == "MuonDTLayers") add(theMuon->DTLayers(), paramSel);
446  else if (name == "MuonDTSuperLayers") add(theMuon->DTSuperLayers(), paramSel);
447  else if (name == "MuonDTChambers") add(theMuon->DTChambers(), paramSel);
448  else if (name == "MuonDTStations") add(theMuon->DTStations(), paramSel);
449  else if (name == "MuonDTWheels") add(theMuon->DTWheels(), paramSel);
450  else if (name == "MuonBarrel") add(theMuon->DTBarrel(), paramSel);
451  else if (name == "MuonCSCLayers") add(theMuon->CSCLayers(), paramSel);
452  else if (name == "MuonCSCRings") add(theMuon->CSCRings(), paramSel);
453  else if (name == "MuonCSCChambers") add(theMuon->CSCChambers(), paramSel);
454  else if (name == "MuonCSCStations") add(theMuon->CSCStations(), paramSel);
455  else if (name == "MuonEndcaps") add(theMuon->CSCEndcaps(), paramSel);
456 
458  // not found, but Muon
460  else {
461  throw cms::Exception("BadConfig") <<"[AlignmentParameterSelector::addSelection]"
462  << ": Selection '" << name << "' invalid!";
463  }
464  }
465 
467  // Generic Extra Alignable Section
469  else if (name.find("Extras") == 0) { // string starts with "Extras"
470  if (!theExtras) {
471  throw cms::Exception("BadConfig") << "[AlignmentParameterSelector::addSelection] "
472  << "Configuration requires access to AlignableExtras"
473  << " (for " << name << ") that is not initialized";
474  }
475  const std::string substructName(name, 6); // erase "Extras" at the beginning
476  numAli += this->add(theExtras->subStructures(substructName), paramSel);
477  }
478  // end of "name.find("Extras") != std::string::npos"
479 
480  else {
481  throw cms::Exception("BadConfig") <<"[AlignmentParameterSelector::addSelection]"
482  << ": Selection '" << name << "' invalid!";
483  }
484 
485  this->setSpecials(""); // reset
486 
487  return numAli;
488 }
Alignables & pixelHalfBarrelGeomDets()
Return pixel barrel GeomDets.
align::Alignables DTLayers()
unsigned int addAllAlignables(const std::vector< char > &paramSel)
align::Alignables CSCChambers()
align::Alignables DTBarrel()
align::Alignables CSCStations()
Alignables & pixelHalfBarrelLayers()
Return pixel half barrel layers.
align::Alignables DTStations()
Alignables barrelGeomDets()
Return inner and outer barrel GeomDets together.
align::Alignables CSCEndcaps()
align::Alignables DTChambers()
Alignables & innerBarrelGeomDets()
Return inner barrel GeomDets.
Alignables & subStructures(const std::string &subStructName)
Return alignables determined by name.
align::Alignables DTWheels()
Alignables & endCaps()
Return TECs.
unsigned int addAllDets(const std::vector< char > &paramSel)
some helper methods
Alignables & TIDGeomDets()
Return TID GeomDets.
unsigned int addAllLayers(const std::vector< char > &paramSel)
Alignables & outerBarrelRods()
Return outer barrel rods.
Alignables barrelRods()
Return inner and outer barrel rods.
Alignables & pixelEndcapPetals()
Return pixel endcap petals.
Alignables barrelLayers()
Return inner and outer barrel layers.
Alignables & endcapGeomDets()
Return endcap GeomDets.
Alignables & pixelEndcapGeomDets()
Return pixel endcap GeomDets.
align::Alignables CSCLayers()
Alignables & TIDs()
Return TIDs.
unsigned int addAllRods(const std::vector< char > &paramSel)
Alignables & outerBarrelLayers()
Return outer barrel layers.
Alignables & outerBarrelGeomDets()
Return outer barrel GeomDets.
Alignables & TIDLayers()
Return TID layers.
Alignables & TIDRings()
Return TID rings.
Alignables & pixelHalfBarrels()
Return Pixel half barrels.
Alignables & pixelEndCaps()
Return TPEs.
align::Alignables DTSuperLayers()
Alignables & subStructures(const std::string &subStructName)
Alignables & innerBarrelLayers()
Return inner barrel layers.
align::Alignables CSCRings()
unsigned int add(const align::Alignables &alignables, const std::vector< char > &paramSel)
adding alignables which fulfil geometrical restrictions and special switches
Alignables & pixelHalfBarrelLadders()
Return pixel half barrel ladders (implemented as AlignableRods)
virtual Alignables components() const
Return vector of direct components.
Alignables & endcapPetals()
Return encap petals.
Alignables & innerHalfBarrels()
Return TIB half barrels.
Alignables & endcapLayers()
Return endcap layers.
Alignables & pixelEndcapLayers()
Return pixel endcap layers.
Alignables & outerHalfBarrels()
Return TOB half barrels.
Alignables & innerBarrelRods()
Return inner barrel rods.
std::string setSpecials(const std::string &name)
unsigned int AlignmentParameterSelector::addSelection ( const std::string &  name,
const std::vector< char > &  paramSel,
const edm::ParameterSet pSet 
)

as addSelection with one argument, but overwriting geometrical restrictions

Definition at line 310 of file AlignmentParameterSelector.cc.

References addSelection(), and setGeometryCuts().

313 {
314  this->setGeometryCuts(pSet);
315  return this->addSelection(name, paramSel);
316 }
void setGeometryCuts(const edm::ParameterSet &pSet)
unsigned int addSelection(const std::string &name, const std::vector< char > &paramSel)
unsigned int AlignmentParameterSelector::addSelections ( const edm::ParameterSet pSet)

Add several selections defined by the PSet which must contain a vstring like e.g. vstring alignParams = { "PixelHalfBarrelLadders,111000,pixelSelection", "BarrelDSRods,111ff0", "BarrelSSRods,101ff0"} The e.g. '111ff0' is decoded into vector<char> and stored. Returns number of added selections or -1 if problems (then also an error is logged) If a string contains a third, comma separated part (e.g. ',pixelSelection'), a further PSet of that name is expected to select eta/phi/r/x/y/z-ranges.

Definition at line 64 of file AlignmentParameterSelector.cc.

References addSelection(), clearGeometryCuts(), convertParamSel(), decompose(), edm::hlt::Exception, and edm::ParameterSet::getParameter().

Referenced by AlignmentParameterBuilder::addSelections(), HIPAlignmentAlgorithm::initialize(), and PedeSteerer::presigmas().

65 {
66 
67  const std::vector<std::string> selections
68  = pSet.getParameter<std::vector<std::string> >("alignParams");
69 
70  unsigned int addedSets = 0;
71 
72  for (unsigned int iSel = 0; iSel < selections.size(); ++iSel) {
73  std::vector<std::string> decompSel(this->decompose(selections[iSel], ','));
74  if (decompSel.empty()) continue; // edm::LogError or even cms::Exception??
75 
76  if (decompSel.size() < 2) {
77  throw cms::Exception("BadConfig") << "@SUB=AlignmentParameterSelector::addSelections"
78  << selections[iSel]<<" from alignableParamSelector: "
79  << " should have at least 2 ','-separated parts";
80  } else if (decompSel.size() > 2) {
81  const edm::ParameterSet geoSel(pSet.getParameter<edm::ParameterSet>(decompSel[2].c_str()));
82  this->addSelection(decompSel[0], this->convertParamSel(decompSel[1]), geoSel);
83  } else {
84  this->clearGeometryCuts();
85  this->addSelection(decompSel[0], this->convertParamSel(decompSel[1]));
86  }
87 
88  ++addedSets;
89  }
90 
91  return addedSets;
92 }
T getParameter(std::string const &) const
void clearGeometryCuts()
remove all geometrical restrictions
std::vector< std::string > decompose(const std::string &s, std::string::value_type delimiter) const
Decomposing input string &#39;s&#39; into parts separated by &#39;delimiter&#39;.
unsigned int addSelection(const std::string &name, const std::vector< char > &paramSel)
std::vector< char > convertParamSel(const std::string &selString) const
Converting std::string into std::vector&lt;char&gt;
void AlignmentParameterSelector::clear ( )

remove all selected Alignables and geometrical restrictions

Definition at line 38 of file AlignmentParameterSelector.cc.

References clearGeometryCuts(), theSelectedAlignables, and theSelectedParameters.

Referenced by MomentumDependentPedeLabeler::buildMomentumDependencyMap(), RunRangeDependentPedeLabeler::buildRunRangeDependencyMap(), Vispa.Views.WidgetView.WidgetView::closeEvent(), Vispa.Views.BoxDecayView.BoxDecayView::closeEvent(), Vispa.Share.FindAlgorithm.FindAlgorithm::findUsingFindDialog(), HIPAlignmentAlgorithm::initialize(), KalmanAlignmentAlgorithm::initializeAlignmentParameters(), PedeSteerer::presigmas(), Vispa.Views.LineDecayView.LineDecayView::setDataObjects(), Vispa.Views.WidgetView.WidgetView::setDataObjects(), Vispa.Views.TreeView.TreeView::updateContent(), Vispa.Views.TableView.TableView::updateContent(), Vispa.Views.BoxDecayView.BoxDecayView::updateContent(), and Vispa.Views.PropertyView.PropertyView::updateContent().

39 {
40  theSelectedAlignables.clear();
41  theSelectedParameters.clear();
42  this->clearGeometryCuts();
43 }
void clearGeometryCuts()
remove all geometrical restrictions
std::vector< std::vector< char > > theSelectedParameters
void AlignmentParameterSelector::clearGeometryCuts ( )

remove all geometrical restrictions

Definition at line 46 of file AlignmentParameterSelector.cc.

References AlignmentParameterSelector::PXBDetIdRanges::clear(), AlignmentParameterSelector::PXFDetIdRanges::clear(), AlignmentParameterSelector::TIBDetIdRanges::clear(), AlignmentParameterSelector::TIDDetIdRanges::clear(), AlignmentParameterSelector::TOBDetIdRanges::clear(), AlignmentParameterSelector::TECDetIdRanges::clear(), thePXBDetIdRanges, thePXFDetIdRanges, theRangesEta, theRangesPhi, theRangesR, theRangesX, theRangesY, theRangesZ, theTECDetIdRanges, theTIBDetIdRanges, theTIDDetIdRanges, and theTOBDetIdRanges.

Referenced by addSelections(), clear(), and setGeometryCuts().

47 {
48  theRangesEta.clear();
49  theRangesPhi.clear();
50  theRangesR.clear();
51  theRangesX.clear();
52  theRangesY.clear();
53  theRangesZ.clear();
54 
61 }
struct AlignmentParameterSelector::PXFDetIdRanges thePXFDetIdRanges
struct AlignmentParameterSelector::PXBDetIdRanges thePXBDetIdRanges
struct AlignmentParameterSelector::TIBDetIdRanges theTIBDetIdRanges
struct AlignmentParameterSelector::TOBDetIdRanges theTOBDetIdRanges
std::vector< double > theRangesEta
geometrical restrictions in eta, phi, r, x, y, z to be applied for next addSelection ...
struct AlignmentParameterSelector::TECDetIdRanges theTECDetIdRanges
struct AlignmentParameterSelector::TIDDetIdRanges theTIDDetIdRanges
std::vector< char > AlignmentParameterSelector::convertParamSel ( const std::string &  selString) const

Converting std::string into std::vector<char>

Definition at line 756 of file AlignmentParameterSelector.cc.

References pos, and query::result.

Referenced by addSelections(), and AlignmentProducer::simpleMisalignment_().

757 {
758 
759  // Convert selString into vector<char> of same length.
760  // Note: Old implementation in AlignmentParameterBuilder was rigid in length,
761  // expecting RigidBodyAlignmentParameters::N_PARAM.
762  // But I prefer to be more general and allow other Alignables. It will throw anyway if
763  // RigidBodyAlignmentParameters are build with wrong selection length.
764  std::vector<char> result(selString.size());
765 
766  for (std::string::size_type pos = 0; pos < selString.size(); ++pos) {
767  result[pos] = selString[pos];
768  }
769 
770  return result;
771 }
uint16_t size_type
tuple result
Definition: query.py:137
std::vector< std::string > AlignmentParameterSelector::decompose ( const std::string &  s,
std::string::value_type  delimiter 
) const

Decomposing input string 's' into parts separated by 'delimiter'.

Definition at line 736 of file AlignmentParameterSelector.cc.

References query::result.

Referenced by AlignmentParameterBuilder::addAllSelections(), and addSelections().

737 {
738 
739  std::vector<std::string> result;
740 
741  std::string::size_type previousPos = 0;
742  while (true) {
743  const std::string::size_type delimiterPos = s.find(delimiter, previousPos);
744  if (delimiterPos == std::string::npos) {
745  result.push_back(s.substr(previousPos)); // until end
746  break;
747  }
748  result.push_back(s.substr(previousPos, delimiterPos - previousPos));
749  previousPos = delimiterPos + 1; // +1: skip delimiter
750  }
751 
752  return result;
753 }
uint16_t size_type
tuple result
Definition: query.py:137
bool AlignmentParameterSelector::detUnitDeselected ( const Alignable alignable) const

true if alignable is DetUnit deselected by Unit<Rphi/Stereo> selection

Definition at line 545 of file AlignmentParameterSelector.cc.

References align::AlignableDetUnit, Alignable::alignableObjectId(), Both, Alignable::geomDetId(), Rphi, Stereo, SiStripDetId::TEC, theRphiOrStereoDetUnit, SiStripDetId::TIB, SiStripDetId::TID, SiStripDetId::TOB, and DetId::Tracker.

Referenced by add().

546 {
547 
548  if (theRphiOrStereoDetUnit != Both && ali->alignableObjectId() == align::AlignableDetUnit) {
549  const SiStripDetId detId(ali->geomDetId()); // do not know yet whether right type...
550  if (detId.det() == DetId::Tracker
551  && (detId.subdetId() == SiStripDetId::TIB || detId.subdetId() == SiStripDetId::TID ||
552  detId.subdetId() == SiStripDetId::TOB || detId.subdetId() == SiStripDetId::TEC)) {
553  // We have a DetUnit in strip, so check for a selection of stereo/rphi (DetUnits in 1D layers are rphi):
554  if ((theRphiOrStereoDetUnit == Stereo && !detId.stereo())
555  || (theRphiOrStereoDetUnit == Rphi && detId.stereo())) {
556  return true;
557  }
558  }
559  }
560 
561  return false; // do not deselect...
562 }
Detector identifier class for the strip tracker.
Definition: SiStripDetId.h:17
template<typename T >
bool AlignmentParameterSelector::insideRanges ( T  value,
const std::vector< T > &  ranges,
bool  isPhi = false 
) const

true if ranges.size() is even and ranges[i] <= value < ranges[i+1] for any even i ( => false if ranges.empty() == true), if(isPhi==true) takes into account phi periodicity for the integer specialized method, true is returned for ranges[i] <= value <= ranges[i+1] and isPhi is ignored

Definition at line 677 of file AlignmentParameterSelector.cc.

References edm::hlt::Exception, and i.

680 {
681  // might become templated on <double> ?
682 
683  if (ranges.size()%2 != 0) {
684  cms::Exception("BadConfig") << "@SUB=AlignmentParameterSelector::insideRanges"
685  << " need even number of entries in ranges instead of "
686  << ranges.size();
687  return false;
688  }
689 
690  for (unsigned int i = 0; i < ranges.size(); i += 2) {
691  if (isPhi) { // mapping into (-pi,+pi] and checking for range including sign flip area
692  Geom::Phi<double> rangePhi1(ranges[i]);
693  Geom::Phi<double> rangePhi2(ranges[i+1]);
694  Geom::Phi<double> valuePhi(value);
695  if (rangePhi1 <= valuePhi && valuePhi < rangePhi2) { // 'normal'
696  return true;
697  }
698  if (rangePhi2 < rangePhi1 && (rangePhi1 <= valuePhi || valuePhi < rangePhi2)) {// 'sign flip'
699  return true;
700  }
701  } else if (ranges[i] <= value && value < ranges[i+1]) {
702  return true;
703  }
704  }
705 
706  return false;
707 }
int i
Definition: DBlmapReader.cc:9
string ranges
Definition: diffTwoXMLs.py:78
Definition: Phi.h:20
template<>
bool AlignmentParameterSelector::insideRanges ( int  value,
const std::vector< int > &  ranges,
bool  isPhi 
) const
template<>
bool AlignmentParameterSelector::insideRanges ( int  value,
const std::vector< int > &  ranges,
bool   
) const

Definition at line 710 of file AlignmentParameterSelector.cc.

References edm::hlt::Exception, i, diffTwoXMLs::ranges, and relativeConstraints::value.

713 {
714  if (ranges.size()%2 != 0) {
715  cms::Exception("BadConfig") << "@SUB=AlignmentParameterSelector::insideRanges"
716  << " need even number of entries in ranges instead of "
717  << ranges.size();
718  return false;
719  }
720 
721  for (unsigned int i = 0; i < ranges.size(); i += 2) {
722  if (ranges[i] <= value && value <= ranges[i+1]) return true;
723  }
724 
725  return false;
726 }
int i
Definition: DBlmapReader.cc:9
string ranges
Definition: diffTwoXMLs.py:78
bool AlignmentParameterSelector::isMemberOfVector ( int  value,
const std::vector< int > &  values 
) const

true if value is member of vector of values

Definition at line 728 of file AlignmentParameterSelector.cc.

References spr::find(), and relativeConstraints::value.

Referenced by outsideDetIdRanges().

729 {
730  if (std::find(values.begin(), values.end(), value)!=values.end()) return true;
731  return false;
732 }
void find(edm::Handle< EcalRecHitCollection > &hits, DetId thisDet, std::vector< EcalRecHitCollection::const_iterator > &hit, bool debug=false)
Definition: FindCaloHit.cc:7
bool AlignmentParameterSelector::layerDeselected ( const Alignable alignable) const

true if layer is deselected via "Layers<N><M>" or "DS/SS"

Definition at line 515 of file AlignmentParameterSelector.cc.

References abs, Alignable::id(), theMaxLayer, theOnlyDS, theOnlySS, theSelLayers, SiStripDetId::TIB, SiStripDetId::TOB, and TrackerAlignableId::typeAndLayerFromDetId().

Referenced by add().

516 {
517  if (theOnlySS || theOnlyDS || theSelLayers) {
518  TrackerAlignableId idProvider;
519  std::pair<int,int> typeLayer = idProvider.typeAndLayerFromDetId(ali->id());
520  int type = typeLayer.first;
521  int layer = typeLayer.second;
522 
523  // select on single/double sided barrel layers in TIB/TOB
524  if (theOnlySS // only single sided
525  && (std::abs(type) == SiStripDetId::TIB || std::abs(type) == SiStripDetId::TOB)
526  && layer <= 2) {
527  return true;
528  }
529  if (theOnlyDS // only double sided
530  && (std::abs(type) == SiStripDetId::TIB || std::abs(type) == SiStripDetId::TOB)
531  && layer > 2) {
532  return true;
533  }
534 
535  // reject layers
536  if (theSelLayers && (layer < theMinLayer || layer > theMaxLayer)) {
537  return true;
538  }
539  }
540 
541  return false; // do not deselect...
542 }
type
Definition: HCALResponse.h:22
#define abs(x)
Definition: mlp_lapack.h:159
std::pair< int, int > typeAndLayerFromDetId(const DetId &detId) const
bool AlignmentParameterSelector::outsideDetIdRanges ( const Alignable alignable) const

true if DetId restrictions are not satisfied

Definition at line 580 of file AlignmentParameterSelector.cc.

References PXFDetId::blade(), PXFDetId::disk(), TIDDetId::diskNumber(), Alignable::id(), isMemberOfVector(), PXBDetId::ladder(), PXBDetId::layer(), TOBDetId::layer(), TIBDetId::layer(), PXBDetId::module(), PXFDetId::module(), TOBDetId::module(), TIBDetId::module(), TECDetId::module(), TIDDetId::moduleNumber(), PXFDetId::panel(), TECDetId::petalNumber(), PixelSubdetector::PixelBarrel, PixelSubdetector::PixelEndcap, TIDDetId::ring(), TECDetId::ring(), TOBDetId::rodNumber(), PXFDetId::side(), TIDDetId::side(), TECDetId::side(), TOBDetId::side(), TIBDetId::side(), TIBDetId::stringNumber(), DetId::subdetId(), SiStripDetId::TEC, AlignmentParameterSelector::PXFDetIdRanges::theBladeRanges, theDetIdRanges, theDetIds, AlignmentParameterSelector::PXFDetIdRanges::theDiskRanges, AlignmentParameterSelector::TIDDetIdRanges::theDiskRanges, theExcludedDetIdRanges, theExcludedDetIds, AlignmentParameterSelector::PXBDetIdRanges::theLadderRanges, AlignmentParameterSelector::PXBDetIdRanges::theLayerRanges, AlignmentParameterSelector::TIBDetIdRanges::theLayerRanges, AlignmentParameterSelector::TOBDetIdRanges::theLayerRanges, AlignmentParameterSelector::PXBDetIdRanges::theModuleRanges, AlignmentParameterSelector::PXFDetIdRanges::theModuleRanges, AlignmentParameterSelector::TIBDetIdRanges::theModuleRanges, AlignmentParameterSelector::TIDDetIdRanges::theModuleRanges, AlignmentParameterSelector::TOBDetIdRanges::theModuleRanges, AlignmentParameterSelector::TECDetIdRanges::theModuleRanges, AlignmentParameterSelector::PXFDetIdRanges::thePanelRanges, AlignmentParameterSelector::TECDetIdRanges::thePetalRanges, thePXBDetIdRanges, thePXFDetIdRanges, AlignmentParameterSelector::TIDDetIdRanges::theRingRanges, AlignmentParameterSelector::TECDetIdRanges::theRingRanges, AlignmentParameterSelector::TOBDetIdRanges::theRodRanges, AlignmentParameterSelector::PXFDetIdRanges::theSideRanges, AlignmentParameterSelector::TIBDetIdRanges::theSideRanges, AlignmentParameterSelector::TIDDetIdRanges::theSideRanges, AlignmentParameterSelector::TOBDetIdRanges::theSideRanges, AlignmentParameterSelector::TECDetIdRanges::theSideRanges, AlignmentParameterSelector::TIBDetIdRanges::theStringRanges, theTECDetIdRanges, theTIBDetIdRanges, theTIDDetIdRanges, theTOBDetIdRanges, AlignmentParameterSelector::TECDetIdRanges::theWheelRanges, SiStripDetId::TIB, SiStripDetId::TID, SiStripDetId::TOB, DetId::Tracker, and TECDetId::wheel().

Referenced by add().

581 {
582  //const DetId detId(alignable->geomDetId());
583  const DetId detId(alignable->id());
584  const int subdetId = detId.subdetId();
585 
586  if (!theDetIds.empty() &&
587  !this->isMemberOfVector((detId.rawId()), theDetIds)) return true;
588  if (!theDetIdRanges.empty() &&
589  !this->insideRanges<int>((detId.rawId()), theDetIdRanges)) return true;
590  if (!theExcludedDetIds.empty() &&
591  this->isMemberOfVector((detId.rawId()), theExcludedDetIds)) return true;
592  if (!theExcludedDetIdRanges.empty() &&
593  this->insideRanges<int>((detId.rawId()), theExcludedDetIdRanges)) return true;
594 
595  if (detId.det()==DetId::Tracker) {
596 
597  if (subdetId==static_cast<int>(PixelSubdetector::PixelBarrel)) {
598  const PXBDetId pxbDetId(detId);
599  if (!thePXBDetIdRanges.theLadderRanges.empty() &&
600  !this->insideRanges<int>(pxbDetId.ladder(), thePXBDetIdRanges.theLadderRanges)) return true;
601  if (!thePXBDetIdRanges.theLayerRanges.empty() &&
602  !this->insideRanges<int>(pxbDetId.layer(), thePXBDetIdRanges.theLayerRanges)) return true;
603  if (!thePXBDetIdRanges.theModuleRanges.empty() &&
604  !this->insideRanges<int>(pxbDetId.module(), thePXBDetIdRanges.theModuleRanges)) return true;
605  }
606 
607  if (subdetId==static_cast<int>(PixelSubdetector::PixelEndcap)) {
608  const PXFDetId pxfDetId(detId);
609  if (!thePXFDetIdRanges.theBladeRanges.empty() &&
610  !this->insideRanges<int>(pxfDetId.blade(), thePXFDetIdRanges.theBladeRanges)) return true;
611  if (!thePXFDetIdRanges.theDiskRanges.empty() &&
612  !this->insideRanges<int>(pxfDetId.disk(), thePXFDetIdRanges.theDiskRanges)) return true;
613  if (!thePXFDetIdRanges.theModuleRanges.empty() &&
614  !this->insideRanges<int>(pxfDetId.module(), thePXFDetIdRanges.theModuleRanges)) return true;
615  if (!thePXFDetIdRanges.thePanelRanges.empty() &&
616  !this->insideRanges<int>(pxfDetId.panel(), thePXFDetIdRanges.thePanelRanges)) return true;
617  if (!thePXFDetIdRanges.theSideRanges.empty() &&
618  !this->insideRanges<int>(pxfDetId.side(), thePXFDetIdRanges.theSideRanges)) return true;
619  }
620 
621  if (subdetId==static_cast<int>(SiStripDetId::TIB)) {
622  const TIBDetId tibDetId(detId);
623  if (!theTIBDetIdRanges.theLayerRanges.empty() &&
624  !this->insideRanges<int>(tibDetId.layer(), theTIBDetIdRanges.theLayerRanges)) return true;
625  if (!theTIBDetIdRanges.theModuleRanges.empty() &&
626  !this->insideRanges<int>(tibDetId.module(), theTIBDetIdRanges.theModuleRanges)) return true;
627  if (!theTIBDetIdRanges.theSideRanges.empty() &&
628  !this->insideRanges<int>(tibDetId.side(), theTIBDetIdRanges.theSideRanges)) return true;
629  if (!theTIBDetIdRanges.theStringRanges.empty() &&
630  !this->insideRanges<int>(tibDetId.stringNumber(), theTIBDetIdRanges.theStringRanges)) return true;
631  }
632 
633  if (subdetId==static_cast<int>(SiStripDetId::TID)) {
634  const TIDDetId tidDetId(detId);
635  if (!theTIDDetIdRanges.theDiskRanges.empty() &&
636  !this->insideRanges<int>(tidDetId.diskNumber(), theTIDDetIdRanges.theDiskRanges)) return true;
637  if (!theTIDDetIdRanges.theModuleRanges.empty() &&
638  !this->insideRanges<int>(tidDetId.moduleNumber(), theTIDDetIdRanges.theModuleRanges)) return true;
639  if (!theTIDDetIdRanges.theRingRanges.empty() &&
640  !this->insideRanges<int>(tidDetId.ring(), theTIDDetIdRanges.theRingRanges)) return true;
641  if (!theTIDDetIdRanges.theSideRanges.empty() &&
642  !this->insideRanges<int>(tidDetId.side(), theTIDDetIdRanges.theSideRanges)) return true;
643  }
644 
645  if (subdetId==static_cast<int>(SiStripDetId::TOB)) {
646  const TOBDetId tobDetId(detId);
647  if (!theTOBDetIdRanges.theLayerRanges.empty() &&
648  !this->insideRanges<int>(tobDetId.layer(), theTOBDetIdRanges.theLayerRanges)) return true;
649  if (!theTOBDetIdRanges.theModuleRanges.empty() &&
650  !this->insideRanges<int>(tobDetId.module(), theTOBDetIdRanges.theModuleRanges)) return true;
651  if (!theTOBDetIdRanges.theRodRanges.empty() &&
652  !this->insideRanges<int>(tobDetId.rodNumber(), theTOBDetIdRanges.theRodRanges)) return true;
653  if (!theTOBDetIdRanges.theSideRanges.empty() &&
654  !this->insideRanges<int>(tobDetId.side(), theTOBDetIdRanges.theSideRanges)) return true;
655  }
656 
657  if (subdetId==static_cast<int>(SiStripDetId::TEC)) {
658  const TECDetId tecDetId(detId);
659  if (!theTECDetIdRanges.theWheelRanges.empty() &&
660  !this->insideRanges<int>(tecDetId.wheel(), theTECDetIdRanges.theWheelRanges)) return true;
661  if (!theTECDetIdRanges.thePetalRanges.empty() &&
662  !this->insideRanges<int>(tecDetId.petalNumber(), theTECDetIdRanges.thePetalRanges)) return true;
663  if (!theTECDetIdRanges.theModuleRanges.empty() &&
664  !this->insideRanges<int>(tecDetId.module(), theTECDetIdRanges.theModuleRanges)) return true;
665  if (!theTECDetIdRanges.theRingRanges.empty() &&
666  !this->insideRanges<int>(tecDetId.ring(), theTECDetIdRanges.theRingRanges)) return true;
667  if (!theTECDetIdRanges.theSideRanges.empty() &&
668  !this->insideRanges<int>(tecDetId.side(), theTECDetIdRanges.theSideRanges)) return true;
669  }
670 
671  }
672 
673  return false;
674 }
align::ID id() const
Return the ID of Alignable, i.e. DetId of &#39;first&#39; component GeomDet(Unit).
Definition: Alignable.h:180
struct AlignmentParameterSelector::PXFDetIdRanges thePXFDetIdRanges
std::vector< int > theDetIds
DetId restrictions in eta, phi, r, x, y, z to be applied for next addSelection.
struct AlignmentParameterSelector::PXBDetIdRanges thePXBDetIdRanges
int subdetId() const
get the contents of the subdetector field (not cast into any detector&#39;s numbering enum) ...
Definition: DetId.h:39
struct AlignmentParameterSelector::TIBDetIdRanges theTIBDetIdRanges
struct AlignmentParameterSelector::TOBDetIdRanges theTOBDetIdRanges
Definition: DetId.h:20
struct AlignmentParameterSelector::TECDetIdRanges theTECDetIdRanges
bool isMemberOfVector(int value, const std::vector< int > &values) const
true if value is member of vector of values
struct AlignmentParameterSelector::TIDDetIdRanges theTIDDetIdRanges
bool AlignmentParameterSelector::outsideGeometricalRanges ( const Alignable alignable) const

true if geometrical restrictions in eta, phi, r, x, y, z not satisfied

Definition at line 565 of file AlignmentParameterSelector.cc.

References Alignable::globalPosition(), position, theRangesEta, theRangesPhi, theRangesR, theRangesX, theRangesY, and theRangesZ.

Referenced by add().

566 {
567  const align::PositionType& position(alignable->globalPosition());
568 
569  if (!theRangesEta.empty() && !this->insideRanges<double>((position.eta()), theRangesEta)) return true;
570  if (!theRangesPhi.empty() && !this->insideRanges<double>((position.phi()), theRangesPhi, true))return true;
571  if (!theRangesR.empty() && !this->insideRanges<double>((position.perp()), theRangesR)) return true;
572  if (!theRangesX.empty() && !this->insideRanges<double>((position.x()), theRangesX)) return true;
573  if (!theRangesY.empty() && !this->insideRanges<double>((position.y()), theRangesY)) return true;
574  if (!theRangesZ.empty() && !this->insideRanges<double>((position.z()), theRangesZ)) return true;
575 
576  return false;
577 }
static int position[TOTALCHAMBERS][3]
Definition: ReadPGInfo.cc:509
std::vector< double > theRangesEta
geometrical restrictions in eta, phi, r, x, y, z to be applied for next addSelection ...
const PositionType & globalPosition() const
Return the global position of the object.
Definition: Alignable.h:129
const align::Alignables& AlignmentParameterSelector::selectedAlignables ( ) const
inline
const std::vector<std::vector<char> >& AlignmentParameterSelector::selectedParameters ( void  ) const
inline

vector of selection 'strings' for alignables, parallel to selectedAlignables()

Definition at line 38 of file AlignmentParameterSelector.h.

References theSelectedParameters.

Referenced by AlignmentParameterBuilder::addSelections(), and PedeSteerer::presigmas().

38 { return theSelectedParameters; }
std::vector< std::vector< char > > theSelectedParameters
void AlignmentParameterSelector::setGeometryCuts ( const edm::ParameterSet pSet)

set geometrical restrictions to be applied on all following selections (slices defined by vdouble 'etaRanges', 'phiRanges', 'xRanges', 'yRanges', 'zRanges' and 'rRanges', empty array means no restriction)

Definition at line 95 of file AlignmentParameterSelector.cc.

References clearGeometryCuts(), edm::hlt::Exception, edm::ParameterSet::getParameter(), edm::ParameterSet::getParameterNames(), edm::ParameterSet::getParameterSet(), setPXBDetIdCuts(), setPXFDetIdCuts(), setTECDetIdCuts(), setTIBDetIdCuts(), setTIDDetIdCuts(), setTOBDetIdCuts(), theDetIdRanges, theDetIds, theExcludedDetIdRanges, theExcludedDetIds, theRangesEta, theRangesPhi, theRangesR, theRangesX, theRangesY, and theRangesZ.

Referenced by addSelection().

96 {
97  // Allow non-specified arrays to be interpreted as empty (i.e. no selection),
98  // but take care that nothing unknown is configured (to fetch typos!).
99 
100  this->clearGeometryCuts();
101  const std::vector<std::string> parameterNames(pSet.getParameterNames());
102  for (std::vector<std::string>::const_iterator iParam = parameterNames.begin(),
103  iEnd = parameterNames.end(); iParam != iEnd; ++iParam) {
104 
105  // Calling swap is more efficient than assignment:
106  if (*iParam == "etaRanges") {
107  pSet.getParameter<std::vector<double> >(*iParam).swap(theRangesEta);
108  } else if (*iParam == "phiRanges") {
109  pSet.getParameter<std::vector<double> >(*iParam).swap(theRangesPhi);
110  } else if (*iParam == "rRanges") {
111  pSet.getParameter<std::vector<double> >(*iParam).swap(theRangesR);
112  } else if (*iParam == "xRanges") {
113  pSet.getParameter<std::vector<double> >(*iParam).swap(theRangesX);
114  } else if (*iParam == "yRanges") {
115  pSet.getParameter<std::vector<double> >(*iParam).swap(theRangesY);
116  } else if (*iParam == "zRanges") {
117  pSet.getParameter<std::vector<double> >(*iParam).swap(theRangesZ);
118  } else if (*iParam == "detIds") {
119  pSet.getParameter<std::vector<int> >(*iParam).swap(theDetIds);
120  } else if (*iParam == "detIdRanges") {
121  pSet.getParameter<std::vector<int> >(*iParam).swap(theDetIdRanges);
122  } else if (*iParam == "excludedDetIds") {
123  pSet.getParameter<std::vector<int> >(*iParam).swap(theExcludedDetIds);
124  } else if (*iParam == "excludedDetIdRanges") {
125  pSet.getParameter<std::vector<int> >(*iParam).swap(theExcludedDetIdRanges);
126  } else if (*iParam == "pxbDetId") {
127  const edm::ParameterSet & pxbDetIdPSet = pSet.getParameterSet(*iParam);
128  this->setPXBDetIdCuts(pxbDetIdPSet);
129  } else if (*iParam == "pxfDetId") {
130  const edm::ParameterSet & pxfDetIdPSet = pSet.getParameterSet(*iParam);
131  this->setPXFDetIdCuts(pxfDetIdPSet);
132  } else if (*iParam == "tibDetId") {
133  const edm::ParameterSet & tibDetIdPSet = pSet.getParameterSet(*iParam);
134  this->setTIBDetIdCuts(tibDetIdPSet);
135  } else if (*iParam == "tidDetId") {
136  const edm::ParameterSet & tidDetIdPSet = pSet.getParameterSet(*iParam);
137  this->setTIDDetIdCuts(tidDetIdPSet);
138  } else if (*iParam == "tobDetId") {
139  const edm::ParameterSet & tobDetIdPSet = pSet.getParameterSet(*iParam);
140  this->setTOBDetIdCuts(tobDetIdPSet);
141  } else if (*iParam == "tecDetId") {
142  const edm::ParameterSet & tecDetIdPSet = pSet.getParameterSet(*iParam);
143  this->setTECDetIdCuts(tecDetIdPSet);
144  } else {
145  throw cms::Exception("BadConfig") << "[AlignmentParameterSelector::setGeometryCuts] "
146  << "Unknown parameter '" << *iParam << "'.\n";
147  }
148  }
149 }
T getParameter(std::string const &) const
void setTIDDetIdCuts(const edm::ParameterSet &pSet)
void clearGeometryCuts()
remove all geometrical restrictions
std::vector< int > theDetIds
DetId restrictions in eta, phi, r, x, y, z to be applied for next addSelection.
void setPXBDetIdCuts(const edm::ParameterSet &pSet)
void setTECDetIdCuts(const edm::ParameterSet &pSet)
std::vector< std::string > getParameterNames() const
void setPXFDetIdCuts(const edm::ParameterSet &pSet)
ParameterSet const & getParameterSet(std::string const &) const
std::vector< double > theRangesEta
geometrical restrictions in eta, phi, r, x, y, z to be applied for next addSelection ...
void setTOBDetIdCuts(const edm::ParameterSet &pSet)
void setTIBDetIdCuts(const edm::ParameterSet &pSet)
void AlignmentParameterSelector::setPXBDetIdCuts ( const edm::ParameterSet pSet)
protected

Definition at line 152 of file AlignmentParameterSelector.cc.

References edm::hlt::Exception, edm::ParameterSet::getParameter(), edm::ParameterSet::getParameterNames(), AlignmentParameterSelector::PXBDetIdRanges::theLadderRanges, AlignmentParameterSelector::PXBDetIdRanges::theLayerRanges, AlignmentParameterSelector::PXBDetIdRanges::theModuleRanges, and thePXBDetIdRanges.

Referenced by setGeometryCuts().

153 {
154  // Allow non-specified arrays to be interpreted as empty (i.e. no selection),
155  // but take care that nothing unknown is configured (to fetch typos!).
156 
157  const std::vector<std::string> parameterNames(pSet.getParameterNames());
158  for (std::vector<std::string>::const_iterator iParam = parameterNames.begin(),
159  iEnd = parameterNames.end(); iParam != iEnd; ++iParam) {
160 
161  // Calling swap is more efficient than assignment:
162  if (*iParam == "ladderRanges") {
163  pSet.getParameter<std::vector<int> >(*iParam).swap(thePXBDetIdRanges.theLadderRanges);
164  } else if (*iParam == "layerRanges") {
165  pSet.getParameter<std::vector<int> >(*iParam).swap(thePXBDetIdRanges.theLayerRanges);
166  } else if (*iParam == "moduleRanges") {
167  pSet.getParameter<std::vector<int> >(*iParam).swap(thePXBDetIdRanges.theModuleRanges);
168  } else {
169  throw cms::Exception("BadConfig") << "[AlignmentParameterSelector::setPXBDetIdCuts] "
170  << "Unknown parameter '" << *iParam << "'.\n";
171  }
172  }
173 }
T getParameter(std::string const &) const
struct AlignmentParameterSelector::PXBDetIdRanges thePXBDetIdRanges
std::vector< std::string > getParameterNames() const
void AlignmentParameterSelector::setPXFDetIdCuts ( const edm::ParameterSet pSet)
protected

Definition at line 176 of file AlignmentParameterSelector.cc.

References edm::hlt::Exception, edm::ParameterSet::getParameter(), edm::ParameterSet::getParameterNames(), AlignmentParameterSelector::PXFDetIdRanges::theBladeRanges, AlignmentParameterSelector::PXFDetIdRanges::theDiskRanges, AlignmentParameterSelector::PXFDetIdRanges::theModuleRanges, AlignmentParameterSelector::PXFDetIdRanges::thePanelRanges, thePXFDetIdRanges, and AlignmentParameterSelector::PXFDetIdRanges::theSideRanges.

Referenced by setGeometryCuts().

177 {
178  // Allow non-specified arrays to be interpreted as empty (i.e. no selection),
179  // but take care that nothing unknown is configured (to fetch typos!).
180 
181  const std::vector<std::string> parameterNames(pSet.getParameterNames());
182  for (std::vector<std::string>::const_iterator iParam = parameterNames.begin(),
183  iEnd = parameterNames.end(); iParam != iEnd; ++iParam) {
184 
185  // Calling swap is more efficient than assignment:
186  if (*iParam == "bladeRanges") {
187  pSet.getParameter<std::vector<int> >(*iParam).swap(thePXFDetIdRanges.theBladeRanges);
188  } else if (*iParam == "diskRanges") {
189  pSet.getParameter<std::vector<int> >(*iParam).swap(thePXFDetIdRanges.theDiskRanges);
190  } else if (*iParam == "moduleRanges") {
191  pSet.getParameter<std::vector<int> >(*iParam).swap(thePXFDetIdRanges.theModuleRanges);
192  } else if (*iParam == "panelRanges") {
193  pSet.getParameter<std::vector<int> >(*iParam).swap(thePXFDetIdRanges.thePanelRanges);
194  } else if (*iParam == "sideRanges") {
195  pSet.getParameter<std::vector<int> >(*iParam).swap(thePXFDetIdRanges.theSideRanges);
196  } else {
197  throw cms::Exception("BadConfig") << "[AlignmentParameterSelector::setPXFDetIdCuts] "
198  << "Unknown parameter '" << *iParam << "'.\n";
199  }
200  }
201 }
T getParameter(std::string const &) const
struct AlignmentParameterSelector::PXFDetIdRanges thePXFDetIdRanges
std::vector< std::string > getParameterNames() const
std::string AlignmentParameterSelector::setSpecials ( const std::string &  name)
private

Setting the special switches and returning input string, but after removing the 'special indicators' from it. Known specials are: "SS" anywhere in name: in TIB/TOB restrict to single sided Dets/Rods/Layers "DS" anywhere in name: in TIB/TOB restrict to double sided Dets/Rods/Layers "Layers14" at end of name: in tracker restrict to layers/disks 1 to 4, similar for other digits "UnitStereo" and "UnitRphi" anywhere in name: for a DetUnit in strip select only if stereo or rphi module (keep 'Unit' in name!)

Definition at line 775 of file AlignmentParameterSelector.cc.

References Both, LogDebug, Rphi, findQualityFiles::size, Stereo, theMaxLayer, theMinLayer, theOnlyDS, theOnlySS, theRphiOrStereoDetUnit, and theSelLayers.

Referenced by addSelection(), and AlignmentParameterSelector().

776 {
777  // Use new string only, although direct erasing of found indicator causes problems for 'DSS',
778  // but 'DSS' makes absolutely no sense!
779  std::string newName(name);
780 
781  const std::string::size_type ss = newName.rfind("SS");
782  if (ss != std::string::npos) {
783  newName.erase(ss, 2); // 2: length of 'SS'
784  theOnlySS = true;
785  } else {
786  theOnlySS = false;
787  }
788 
789  const std::string::size_type ds = newName.rfind("DS");
790  if (ds != std::string::npos) {
791  newName.erase(ds, 2); // 2: length of 'DS'
792  theOnlyDS = true;
793  } else {
794  theOnlyDS = false;
795  }
796 
797  const std::string::size_type size = newName.size();
798  const std::string::size_type layers = newName.rfind("Layers");
799  if (layers != std::string::npos && size - layers - 2 == 6 // 2 digits, 6: length of 'Layers'
800  && isdigit(newName[size-1]) && isdigit(newName[size-2])) {
801  theSelLayers = true;
802  theMinLayer = newName[size-2] - '0';
803  theMaxLayer = newName[size-1] - '0';
804  newName.erase(layers);
805  } else {
806  theSelLayers = false;
807  theMinLayer = -1;
808  theMaxLayer = 99999;
809  }
810 
812  if (newName.rfind("Unit") != std::string::npos) {
813  const std::string::size_type uRph = newName.rfind("UnitRphi");
814  if (uRph != std::string::npos) {
815  newName.erase(uRph + 4, 4); // keep 'Unit' (4) and erase 'Rphi' (4)
817  }
818  const std::string::size_type uSte = newName.rfind("UnitStereo");
819  if (uSte != std::string::npos) {
820  newName.erase(uSte + 4, 6); // keep 'Unit' (4) and erase 'Stereo' (6)
822  }
823  }
824 
825  if (newName != name) {
826  LogDebug("Alignment") << "@SUB=AlignmentParameterSelector::setSpecials"
827  << name << " becomes " << newName << ", makes theOnlySS " << theOnlySS
828  << ", theOnlyDS " << theOnlyDS << ", theSelLayers " << theSelLayers
829  << ", theMinLayer " << theMinLayer << ", theMaxLayer " << theMaxLayer
830  << ", theRphiOrStereoDetUnit " << theRphiOrStereoDetUnit;
831  }
832 
833  return newName;
834 }
#define LogDebug(id)
uint16_t size_type
tuple size
Write out results.
void AlignmentParameterSelector::setTECDetIdCuts ( const edm::ParameterSet pSet)
protected

Definition at line 282 of file AlignmentParameterSelector.cc.

References edm::hlt::Exception, edm::ParameterSet::getParameter(), edm::ParameterSet::getParameterNames(), AlignmentParameterSelector::TECDetIdRanges::theModuleRanges, AlignmentParameterSelector::TECDetIdRanges::thePetalRanges, AlignmentParameterSelector::TECDetIdRanges::theRingRanges, AlignmentParameterSelector::TECDetIdRanges::theSideRanges, theTECDetIdRanges, and AlignmentParameterSelector::TECDetIdRanges::theWheelRanges.

Referenced by setGeometryCuts().

283 {
284  // Allow non-specified arrays to be interpreted as empty (i.e. no selection),
285  // but take care that nothing unknown is configured (to fetch typos!).
286 
287  const std::vector<std::string> parameterNames(pSet.getParameterNames());
288  for (std::vector<std::string>::const_iterator iParam = parameterNames.begin(),
289  iEnd = parameterNames.end(); iParam != iEnd; ++iParam) {
290 
291  // Calling swap is more efficient than assignment:
292  if (*iParam == "wheelRanges") {
293  pSet.getParameter<std::vector<int> >(*iParam).swap(theTECDetIdRanges.theWheelRanges);
294  } else if (*iParam == "petalRanges") {
295  pSet.getParameter<std::vector<int> >(*iParam).swap(theTECDetIdRanges.thePetalRanges);
296  } else if (*iParam == "moduleRanges") {
297  pSet.getParameter<std::vector<int> >(*iParam).swap(theTECDetIdRanges.theModuleRanges);
298  } else if (*iParam == "ringRanges") {
299  pSet.getParameter<std::vector<int> >(*iParam).swap(theTECDetIdRanges.theRingRanges);
300  } else if (*iParam == "sideRanges") {
301  pSet.getParameter<std::vector<int> >(*iParam).swap(theTECDetIdRanges.theSideRanges);
302  } else {
303  throw cms::Exception("BadConfig") << "[AlignmentParameterSelector::setTECDetIdCuts] "
304  << "Unknown parameter '" << *iParam << "'.\n";
305  }
306  }
307 }
T getParameter(std::string const &) const
std::vector< std::string > getParameterNames() const
struct AlignmentParameterSelector::TECDetIdRanges theTECDetIdRanges
void AlignmentParameterSelector::setTIBDetIdCuts ( const edm::ParameterSet pSet)
protected

Definition at line 204 of file AlignmentParameterSelector.cc.

References edm::hlt::Exception, edm::ParameterSet::getParameter(), edm::ParameterSet::getParameterNames(), AlignmentParameterSelector::TIBDetIdRanges::theLayerRanges, AlignmentParameterSelector::TIBDetIdRanges::theModuleRanges, AlignmentParameterSelector::TIBDetIdRanges::theSideRanges, AlignmentParameterSelector::TIBDetIdRanges::theStringRanges, and theTIBDetIdRanges.

Referenced by setGeometryCuts().

205 {
206  // Allow non-specified arrays to be interpreted as empty (i.e. no selection),
207  // but take care that nothing unknown is configured (to fetch typos!).
208 
209  const std::vector<std::string> parameterNames(pSet.getParameterNames());
210  for (std::vector<std::string>::const_iterator iParam = parameterNames.begin(),
211  iEnd = parameterNames.end(); iParam != iEnd; ++iParam) {
212 
213  // Calling swap is more efficient than assignment:
214  if (*iParam == "layerRanges") {
215  pSet.getParameter<std::vector<int> >(*iParam).swap(theTIBDetIdRanges.theLayerRanges);
216  } else if (*iParam == "moduleRanges") {
217  pSet.getParameter<std::vector<int> >(*iParam).swap(theTIBDetIdRanges.theModuleRanges);
218  } else if (*iParam == "stringRanges") {
219  pSet.getParameter<std::vector<int> >(*iParam).swap(theTIBDetIdRanges.theStringRanges);
220  } else if (*iParam == "sideRanges") {
221  pSet.getParameter<std::vector<int> >(*iParam).swap(theTIBDetIdRanges.theSideRanges);
222  } else {
223  throw cms::Exception("BadConfig") << "[AlignmentParameterSelector::setTIBDetIdCuts] "
224  << "Unknown parameter '" << *iParam << "'.\n";
225  }
226  }
227 }
T getParameter(std::string const &) const
std::vector< std::string > getParameterNames() const
struct AlignmentParameterSelector::TIBDetIdRanges theTIBDetIdRanges
void AlignmentParameterSelector::setTIDDetIdCuts ( const edm::ParameterSet pSet)
protected

Definition at line 230 of file AlignmentParameterSelector.cc.

References edm::hlt::Exception, edm::ParameterSet::getParameter(), edm::ParameterSet::getParameterNames(), AlignmentParameterSelector::TIDDetIdRanges::theDiskRanges, AlignmentParameterSelector::TIDDetIdRanges::theModuleRanges, AlignmentParameterSelector::TIDDetIdRanges::theRingRanges, AlignmentParameterSelector::TIDDetIdRanges::theSideRanges, and theTIDDetIdRanges.

Referenced by setGeometryCuts().

231 {
232  // Allow non-specified arrays to be interpreted as empty (i.e. no selection),
233  // but take care that nothing unknown is configured (to fetch typos!).
234 
235  const std::vector<std::string> parameterNames(pSet.getParameterNames());
236  for (std::vector<std::string>::const_iterator iParam = parameterNames.begin(),
237  iEnd = parameterNames.end(); iParam != iEnd; ++iParam) {
238 
239  // Calling swap is more efficient than assignment:
240  if (*iParam == "diskRanges") {
241  pSet.getParameter<std::vector<int> >(*iParam).swap(theTIDDetIdRanges.theDiskRanges);
242  } else if (*iParam == "moduleRanges") {
243  pSet.getParameter<std::vector<int> >(*iParam).swap(theTIDDetIdRanges.theModuleRanges);
244  } else if (*iParam == "ringRanges") {
245  pSet.getParameter<std::vector<int> >(*iParam).swap(theTIDDetIdRanges.theRingRanges);
246  } else if (*iParam == "sideRanges") {
247  pSet.getParameter<std::vector<int> >(*iParam).swap(theTIDDetIdRanges.theSideRanges);
248  } else {
249  throw cms::Exception("BadConfig") << "[AlignmentParameterSelector::setTIDDetIdCuts] "
250  << "Unknown parameter '" << *iParam << "'.\n";
251  }
252  }
253 }
T getParameter(std::string const &) const
std::vector< std::string > getParameterNames() const
struct AlignmentParameterSelector::TIDDetIdRanges theTIDDetIdRanges
void AlignmentParameterSelector::setTOBDetIdCuts ( const edm::ParameterSet pSet)
protected

Definition at line 256 of file AlignmentParameterSelector.cc.

References edm::hlt::Exception, edm::ParameterSet::getParameter(), edm::ParameterSet::getParameterNames(), AlignmentParameterSelector::TOBDetIdRanges::theLayerRanges, AlignmentParameterSelector::TOBDetIdRanges::theModuleRanges, AlignmentParameterSelector::TOBDetIdRanges::theRodRanges, AlignmentParameterSelector::TOBDetIdRanges::theSideRanges, and theTOBDetIdRanges.

Referenced by setGeometryCuts().

257 {
258  // Allow non-specified arrays to be interpreted as empty (i.e. no selection),
259  // but take care that nothing unknown is configured (to fetch typos!).
260 
261  const std::vector<std::string> parameterNames(pSet.getParameterNames());
262  for (std::vector<std::string>::const_iterator iParam = parameterNames.begin(),
263  iEnd = parameterNames.end(); iParam != iEnd; ++iParam) {
264 
265  // Calling swap is more efficient than assignment:
266  if (*iParam == "layerRanges") {
267  pSet.getParameter<std::vector<int> >(*iParam).swap(theTOBDetIdRanges.theLayerRanges);
268  } else if (*iParam == "moduleRanges") {
269  pSet.getParameter<std::vector<int> >(*iParam).swap(theTOBDetIdRanges.theModuleRanges);
270  } else if (*iParam == "sideRanges") {
271  pSet.getParameter<std::vector<int> >(*iParam).swap(theTOBDetIdRanges.theSideRanges);
272  } else if (*iParam == "rodRanges") {
273  pSet.getParameter<std::vector<int> >(*iParam).swap(theTOBDetIdRanges.theRodRanges);
274  } else {
275  throw cms::Exception("BadConfig") << "[AlignmentParameterSelector::setTOBDetIdCuts] "
276  << "Unknown parameter '" << *iParam << "'.\n";
277  }
278  }
279 }
T getParameter(std::string const &) const
std::vector< std::string > getParameterNames() const
struct AlignmentParameterSelector::TOBDetIdRanges theTOBDetIdRanges

Member Data Documentation

std::vector<int> AlignmentParameterSelector::theDetIdRanges
private

Definition at line 117 of file AlignmentParameterSelector.h.

Referenced by outsideDetIdRanges(), and setGeometryCuts().

std::vector<int> AlignmentParameterSelector::theDetIds
private

DetId restrictions in eta, phi, r, x, y, z to be applied for next addSelection.

Definition at line 116 of file AlignmentParameterSelector.h.

Referenced by outsideDetIdRanges(), and setGeometryCuts().

std::vector<int> AlignmentParameterSelector::theExcludedDetIdRanges
private

Definition at line 119 of file AlignmentParameterSelector.h.

Referenced by outsideDetIdRanges(), and setGeometryCuts().

std::vector<int> AlignmentParameterSelector::theExcludedDetIds
private

Definition at line 118 of file AlignmentParameterSelector.h.

Referenced by outsideDetIdRanges(), and setGeometryCuts().

AlignableExtras* AlignmentParameterSelector::theExtras
private

Definition at line 103 of file AlignmentParameterSelector.h.

Referenced by addSelection().

int AlignmentParameterSelector::theMaxLayer
private

Definition at line 189 of file AlignmentParameterSelector.h.

Referenced by layerDeselected(), and setSpecials().

int AlignmentParameterSelector::theMinLayer
private

Definition at line 188 of file AlignmentParameterSelector.h.

Referenced by setSpecials().

AlignableMuon* AlignmentParameterSelector::theMuon
private

Definition at line 102 of file AlignmentParameterSelector.h.

Referenced by addSelection().

bool AlignmentParameterSelector::theOnlyDS
private

Definition at line 185 of file AlignmentParameterSelector.h.

Referenced by layerDeselected(), and setSpecials().

bool AlignmentParameterSelector::theOnlySS
private

Definition at line 186 of file AlignmentParameterSelector.h.

Referenced by layerDeselected(), and setSpecials().

struct AlignmentParameterSelector::PXBDetIdRanges AlignmentParameterSelector::thePXBDetIdRanges
private
struct AlignmentParameterSelector::PXFDetIdRanges AlignmentParameterSelector::thePXFDetIdRanges
private
std::vector<double> AlignmentParameterSelector::theRangesEta
private

geometrical restrictions in eta, phi, r, x, y, z to be applied for next addSelection

Definition at line 108 of file AlignmentParameterSelector.h.

Referenced by clearGeometryCuts(), outsideGeometricalRanges(), and setGeometryCuts().

std::vector<double> AlignmentParameterSelector::theRangesPhi
private
std::vector<double> AlignmentParameterSelector::theRangesR
private
std::vector<double> AlignmentParameterSelector::theRangesX
private
std::vector<double> AlignmentParameterSelector::theRangesY
private
std::vector<double> AlignmentParameterSelector::theRangesZ
private
RphiOrStereoDetUnit AlignmentParameterSelector::theRphiOrStereoDetUnit
private

Definition at line 191 of file AlignmentParameterSelector.h.

Referenced by detUnitDeselected(), and setSpecials().

align::Alignables AlignmentParameterSelector::theSelectedAlignables
private

Definition at line 104 of file AlignmentParameterSelector.h.

Referenced by add(), clear(), and selectedAlignables().

std::vector<std::vector<char> > AlignmentParameterSelector::theSelectedParameters
private

Definition at line 105 of file AlignmentParameterSelector.h.

Referenced by add(), clear(), and selectedParameters().

bool AlignmentParameterSelector::theSelLayers
private

Definition at line 187 of file AlignmentParameterSelector.h.

Referenced by layerDeselected(), and setSpecials().

struct AlignmentParameterSelector::TECDetIdRanges AlignmentParameterSelector::theTECDetIdRanges
private
struct AlignmentParameterSelector::TIBDetIdRanges AlignmentParameterSelector::theTIBDetIdRanges
private
struct AlignmentParameterSelector::TIDDetIdRanges AlignmentParameterSelector::theTIDDetIdRanges
private
struct AlignmentParameterSelector::TOBDetIdRanges AlignmentParameterSelector::theTOBDetIdRanges
private
AlignableTracker* AlignmentParameterSelector::theTracker
private