CMS 3D CMS Logo

CompositeAlignmentParameters Class Reference

Concrete class for 'concatenated' alignment parameters and associated Quantities for a set of Alignables. More...

#include <Alignment/CommonAlignmentParametrization/interface/CompositeAlignmentParameters.h>

Inheritance diagram for CompositeAlignmentParameters:

AlignmentParameters

List of all members.

Public Types

typedef std::map
< AlignableDetOrUnitPtr,
Alignable * > 
AlignableDetToAlignableMap
typedef std::map< Alignable *,
int
Alilenmap
typedef std::map< Alignable *,
int
Aliposmap
typedef std::vector< Alignable * > Components
 vector of alignable components

Public Member Functions

AlignablealignableFromAlignableDet (AlignableDetOrUnitPtr adet) const
 Get relevant Alignable from AlignableDet.
CompositeAlignmentParametersclone (const AlgebraicVector &par, const AlgebraicSymMatrix &cov, const AlignableDetToAlignableMap &alimap, const Aliposmap &aliposmap, const Alilenmap &alilenmap) const
 Clone parameters.
CompositeAlignmentParametersclone (const AlgebraicVector &par, const AlgebraicSymMatrix &cov) const
 Clone method (for compatibility with base class).
CompositeAlignmentParameterscloneFromSelected (const AlgebraicVector &par, const AlgebraicSymMatrix &cov, const AlignableDetToAlignableMap &alimap, const Aliposmap &aliposmap, const Alilenmap &alilenmap) const
 Clone parameters (same as clone()).
CompositeAlignmentParameterscloneFromSelected (const AlgebraicVector &par, const AlgebraicSymMatrix &cov) const
 Clone method (for compatibility with base class, same as clone()).
Components components () const
 Get vector of alignable components.
 CompositeAlignmentParameters (const DataContainer &data, const Components &comp, const AlignableDetToAlignableMap &alimap, const Aliposmap &aliposmap, const Alilenmap &alilenmap)
 CompositeAlignmentParameters (const AlgebraicVector &par, const AlgebraicSymMatrix &cov, const Components &comp, const AlignableDetToAlignableMap &alimap, const Aliposmap &aliposmap, const Alilenmap &alilenmap)
 CompositeAlignmentParameters (const AlgebraicVector &par, const AlgebraicSymMatrix &cov, const Components &comp)
 constructors
AlgebraicVector correctionTerm (const std::vector< TrajectoryStateOnSurface > &tsosvec, const std::vector< AlignableDetOrUnitPtr > &alidetvec) const
AlgebraicVector correctionTerm (const std::vector< TrajectoryStateOnSurface > &tsosvec, const std::vector< AlignableDet * > &alidetvec) const
 for backward compatibility, use std::vector<AlignableDetOrUnitPtr>
AlgebraicMatrix covarianceSubset (const std::vector< Alignable * > &veci, const std::vector< Alignable * > &vecj) const
 Extract covariance matrix elements between two subsets of alignables.
AlgebraicSymMatrix covarianceSubset (const std::vector< Alignable * > &vec) const
 Extract covariance matrix for subset of alignables.
AlgebraicMatrix derivatives (const std::vector< TrajectoryStateOnSurface > &tsosvec, const std::vector< AlignableDetOrUnitPtr > &alidetvec) const
AlgebraicMatrix derivatives (const std::vector< TrajectoryStateOnSurface > &tsosvec, const std::vector< AlignableDet * > &alidetvec) const
 for backward compatibility, use std::vector<AlignableDetOrUnitPtr>
AlgebraicMatrix derivatives (const TrajectoryStateOnSurface &tsos, const AlignableDetOrUnitPtr &alidet) const
 Get derivatives.
AlgebraicMatrix derivativesLegacy (const std::vector< TrajectoryStateOnSurface > &tsosvec, const std::vector< AlignableDet * > &alidetvec) const
 deprecated due to 'AlignableDet*' interface (legacy code should not be needed anymore)
AlgebraicMatrix derivativesLegacy (const TrajectoryStateOnSurface &tsos, AlignableDet *alidet) const
 deprecated due to 'AlignableDet*' interface (legacy code should not be needed anymore)
AlgebraicVector parameterSubset (const std::vector< Alignable * > &vec) const
 Extract parameters for subset of alignables.
AlgebraicMatrix selectedDerivatives (const std::vector< TrajectoryStateOnSurface > &tsosvec, const std::vector< AlignableDetOrUnitPtr > &alidetvec) const
AlgebraicMatrix selectedDerivatives (const std::vector< TrajectoryStateOnSurface > &tsosvec, const std::vector< AlignableDet * > &alidetvec) const
 for backward compatibility, use std::vector<AlignableDetOrUnitPtr>
AlgebraicMatrix selectedDerivatives (const TrajectoryStateOnSurface &tsos, const AlignableDetOrUnitPtr &alidet) const
 Get derivatives for selected alignables.
AlgebraicMatrix selectedDerivativesLegacy (const std::vector< TrajectoryStateOnSurface > &tsosvec, const std::vector< AlignableDet * > &alidetvec) const
 deprecated due to 'AlignableDet*' interface (legacy code should not be needed anymore)
AlgebraicMatrix selectedDerivativesLegacy (const TrajectoryStateOnSurface &tsos, AlignableDet *alidet) const
 deprecated due to 'AlignableDet*' interface (legacy code should not be needed anymore)
virtual ~CompositeAlignmentParameters ()
 destructor

Private Member Functions

void convert (const std::vector< AlignableDet * > &input, std::vector< AlignableDetOrUnitPtr > &output) const
 backward compatibility method to convert vectors from specific AlignableDet to more general AlignableDetOrUnitPtr
std::vector< Alignable * > extractAlignables (const std::vector< Alignable * > &alignables) const
 Return vector of alignables without multiple occurences.
bool extractPositionAndLength (const std::vector< Alignable * > &alignables, std::vector< int > &posvec, std::vector< int > &lenvec, int &length) const
 Extract position and length of parameters for a subset of Alignables.

Private Attributes

AlignableDetToAlignableMap theAlignableDetToAlignableMap
 Relate Alignable's and AlignableDet's.
Alilenmap theAlilenmap
Aliposmap theAliposmap
 Maps to find parameters/covariance elements for given alignable.
Components theComponents
 Vector of alignable components.


Detailed Description

Concrete class for 'concatenated' alignment parameters and associated Quantities for a set of Alignables.

Provided by AlignmentParameterStore.

Definition at line 15 of file CompositeAlignmentParameters.h.


Member Typedef Documentation

typedef std::map<AlignableDetOrUnitPtr,Alignable*> CompositeAlignmentParameters::AlignableDetToAlignableMap

Definition at line 23 of file CompositeAlignmentParameters.h.

typedef std::map<Alignable*,int> CompositeAlignmentParameters::Alilenmap

Definition at line 25 of file CompositeAlignmentParameters.h.

typedef std::map<Alignable*,int> CompositeAlignmentParameters::Aliposmap

Definition at line 24 of file CompositeAlignmentParameters.h.

typedef std::vector<Alignable*> CompositeAlignmentParameters::Components

vector of alignable components

Definition at line 21 of file CompositeAlignmentParameters.h.


Constructor & Destructor Documentation

CompositeAlignmentParameters::CompositeAlignmentParameters ( const AlgebraicVector par,
const AlgebraicSymMatrix cov,
const Components comp 
)

constructors

Definition at line 14 of file CompositeAlignmentParameters.cc.

Referenced by clone().

00015                                                      :
00016   AlignmentParameters(0,par,cov) ,
00017   theComponents(comp) 
00018 {}

CompositeAlignmentParameters::CompositeAlignmentParameters ( const AlgebraicVector par,
const AlgebraicSymMatrix cov,
const Components comp,
const AlignableDetToAlignableMap alimap,
const Aliposmap aliposmap,
const Alilenmap alilenmap 
)

Definition at line 23 of file CompositeAlignmentParameters.cc.

00025                                                                                      :
00026   AlignmentParameters(0,par,cov) ,
00027   theComponents(comp) ,
00028   theAlignableDetToAlignableMap(alimap),
00029   theAliposmap(aliposmap),
00030   theAlilenmap(alilenmap)
00031 {}

CompositeAlignmentParameters::CompositeAlignmentParameters ( const DataContainer data,
const Components comp,
const AlignableDetToAlignableMap alimap,
const Aliposmap aliposmap,
const Alilenmap alilenmap 
)

Definition at line 36 of file CompositeAlignmentParameters.cc.

00038                                                                                      :
00039   AlignmentParameters(0,data) ,
00040   theComponents(comp) ,
00041   theAlignableDetToAlignableMap(alimap),
00042   theAliposmap(aliposmap),
00043   theAlilenmap(alilenmap)
00044 {}

CompositeAlignmentParameters::~CompositeAlignmentParameters (  )  [virtual]

destructor

Definition at line 48 of file CompositeAlignmentParameters.cc.

00049 {}


Member Function Documentation

Alignable * CompositeAlignmentParameters::alignableFromAlignableDet ( AlignableDetOrUnitPtr  adet  )  const

Get relevant Alignable from AlignableDet.

Definition at line 285 of file CompositeAlignmentParameters.cc.

References theAlignableDetToAlignableMap.

Referenced by correctionTerm(), derivatives(), derivativesLegacy(), and HIPAlignmentAlgorithm::run().

00286 {
00287 
00288   AlignableDetToAlignableMap::const_iterator iali =
00289     theAlignableDetToAlignableMap.find(adet);
00290   if ( iali!=theAlignableDetToAlignableMap.end() ) return (*iali).second;
00291   else return 0;
00292 
00293 }

CompositeAlignmentParameters * CompositeAlignmentParameters::clone ( const AlgebraicVector par,
const AlgebraicSymMatrix cov,
const AlignableDetToAlignableMap alimap,
const Aliposmap aliposmap,
const Alilenmap alilenmap 
) const

Clone parameters.

Definition at line 78 of file CompositeAlignmentParameters.cc.

References clone(), components(), CompositeAlignmentParameters(), AlignmentParameters::setUserVariables(), and AlignmentParameters::userVariables().

00083 {
00084   CompositeAlignmentParameters* cap = 
00085     new CompositeAlignmentParameters(par,cov,components(),alimap,aliposmap,alilenmap);
00086 
00087   if ( userVariables() )
00088     cap->setUserVariables(userVariables()->clone());
00089 
00090   return cap;
00091 }

CompositeAlignmentParameters * CompositeAlignmentParameters::clone ( const AlgebraicVector par,
const AlgebraicSymMatrix cov 
) const [virtual]

Clone method (for compatibility with base class).

Implements AlignmentParameters.

Definition at line 54 of file CompositeAlignmentParameters.cc.

References components(), CompositeAlignmentParameters(), AlignmentParameters::setUserVariables(), and AlignmentParameters::userVariables().

Referenced by clone(), cloneFromSelected(), and SingleTrajectoryUpdator::process().

00056 {
00057   CompositeAlignmentParameters* cap = 
00058     new CompositeAlignmentParameters(par,cov,components());
00059 
00060   if ( userVariables() )
00061     cap->setUserVariables(userVariables()->clone());
00062 
00063   return cap;
00064 }

CompositeAlignmentParameters * CompositeAlignmentParameters::cloneFromSelected ( const AlgebraicVector par,
const AlgebraicSymMatrix cov,
const AlignableDetToAlignableMap alimap,
const Aliposmap aliposmap,
const Alilenmap alilenmap 
) const

Clone parameters (same as clone()).

Definition at line 96 of file CompositeAlignmentParameters.cc.

References clone().

00101 {
00102   return clone(par,cov,alimap,aliposmap,alilenmap);
00103 }

CompositeAlignmentParameters * CompositeAlignmentParameters::cloneFromSelected ( const AlgebraicVector par,
const AlgebraicSymMatrix cov 
) const [virtual]

Clone method (for compatibility with base class, same as clone()).

Implements AlignmentParameters.

Definition at line 69 of file CompositeAlignmentParameters.cc.

References clone().

00071 {
00072   return clone(par,cov);
00073 }

CompositeAlignmentParameters::Components CompositeAlignmentParameters::components (  )  const

Get vector of alignable components.

Definition at line 108 of file CompositeAlignmentParameters.cc.

References theComponents.

Referenced by clone(), SingleTrajectoryUpdator::process(), and AlignmentParameterStore::updateParameters().

00109 { 
00110   return theComponents;
00111 }

void CompositeAlignmentParameters::convert ( const std::vector< AlignableDet * > &  input,
std::vector< AlignableDetOrUnitPtr > &  output 
) const [private]

backward compatibility method to convert vectors from specific AlignableDet to more general AlignableDetOrUnitPtr

Definition at line 492 of file CompositeAlignmentParameters.cc.

References it.

Referenced by correctionTerm(), and derivatives().

00494 {
00495   output.clear();
00496   output.reserve(input.size());
00497 
00498   std::vector<AlignableDet*>::const_iterator it, itEnd;
00499   for (it = input.begin(), itEnd = input.end(); it != itEnd; ++it)
00500     output.push_back(AlignableDetOrUnitPtr(*it));
00501 }

AlgebraicVector CompositeAlignmentParameters::correctionTerm ( const std::vector< TrajectoryStateOnSurface > &  tsosvec,
const std::vector< AlignableDetOrUnitPtr > &  alidetvec 
) const

Definition at line 151 of file CompositeAlignmentParameters.cc.

References alignableFromAlignableDet(), CompositeAlignmentDerivativesExtractor::correctionTerm(), and it.

00153 {
00154   std::vector<Alignable*> alivec;
00155   for (std::vector<AlignableDetOrUnitPtr>::const_iterator it=alidetvec.begin(); it!=alidetvec.end(); ++it )
00156     alivec.push_back(alignableFromAlignableDet(*it));
00157   
00158   CompositeAlignmentDerivativesExtractor extractor(alivec,alidetvec,tsosvec);
00159   return extractor.correctionTerm();
00160 }

AlgebraicVector CompositeAlignmentParameters::correctionTerm ( const std::vector< TrajectoryStateOnSurface > &  tsosvec,
const std::vector< AlignableDet * > &  alidetvec 
) const

for backward compatibility, use std::vector<AlignableDetOrUnitPtr>

Definition at line 140 of file CompositeAlignmentParameters.cc.

References convert().

00142 {
00143   std::vector<AlignableDetOrUnitPtr> detOrUnits;
00144   this->convert(alidetvec, detOrUnits);
00145 
00146   return this->correctionTerm(tsosvec, detOrUnits);
00147 }

AlgebraicMatrix CompositeAlignmentParameters::covarianceSubset ( const std::vector< Alignable * > &  veci,
const std::vector< Alignable * > &  vecj 
) const

Extract covariance matrix elements between two subsets of alignables.

Definition at line 384 of file CompositeAlignmentParameters.cc.

References extractAlignables(), extractPositionAndLength(), HLT_VtxMuL3::result, and AlignmentParameters::theData.

00386 {
00387   const std::vector< Alignable* > seli = extractAlignables( veci );
00388   const std::vector< Alignable* > selj = extractAlignables( vecj );
00389 
00390   int ndimi=0;
00391   int ndimj=0;
00392 
00393   std::vector<int> posveci;
00394   std::vector<int> lenveci;
00395   std::vector<int> posvecj;
00396   std::vector<int> lenvecj;
00397 
00398   posveci.reserve( seli.size() );
00399   lenveci.reserve( seli.size() );
00400   posvecj.reserve( selj.size() );
00401   lenvecj.reserve( selj.size() );
00402 
00403   // iterate over input vectors of alignables
00404   // to determine dimensions of result matrix
00405   if ( !extractPositionAndLength( seli, posveci, lenveci, ndimi ) ) return AlgebraicSymMatrix();
00406   // vector vecj
00407   if ( !extractPositionAndLength( selj, posvecj, lenvecj, ndimj ) ) return AlgebraicSymMatrix();
00408 
00409   // OK, let's do the real work now
00410   AlgebraicMatrix result( ndimi, ndimj );
00411 
00412   int resi = 0;
00413   for ( unsigned int iali = 0; iali < seli.size(); ++iali )
00414   {
00415     int posi = posveci[iali];
00416     int leni = lenveci[iali];
00417 
00418     int resj = 0;
00419     for ( unsigned int jali = 0; jali < selj.size(); ++jali )
00420     {   
00421       int posj = posvecj[jali];
00422       int lenj = lenvecj[jali];
00423 
00424       for ( int ir = 0; ir < leni; ++ir )
00425         for ( int ic = 0; ic < lenj; ++ic )
00426           result[resi+ir][resj+ic] = theData->covariance()[posi-1+ir][posj-1+ic];
00427 
00428       resj += lenj;
00429     }
00430     resi += leni;
00431   }
00432 
00433   return result;
00434 }

AlgebraicSymMatrix CompositeAlignmentParameters::covarianceSubset ( const std::vector< Alignable * > &  vec  )  const

Extract covariance matrix for subset of alignables.

Definition at line 336 of file CompositeAlignmentParameters.cc.

References extractAlignables(), extractPositionAndLength(), HLT_VtxMuL3::result, EgammaValidation_Zee_cff::sel, and AlignmentParameters::theData.

Referenced by SingleTrajectoryUpdator::process().

00337 {
00338   const std::vector< Alignable* > sel = extractAlignables( vec );
00339 
00340   const unsigned int nali = sel.size();
00341   int ndim = 0;
00342 
00343   std::vector<int> posvec;
00344   std::vector<int> lenvec;
00345 
00346   posvec.reserve( nali );
00347   lenvec.reserve( nali );
00348 
00349   // iterate over input vectors of alignables
00350   // to determine dimensions of result matrix
00351   if ( !extractPositionAndLength( sel, posvec, lenvec, ndim ) ) return AlgebraicSymMatrix();
00352 
00353   // OK, let's do the real work now
00354   AlgebraicSymMatrix result( ndim );
00355 
00356   int resi = 0;
00357   for ( unsigned int iali = 0; iali < nali; ++iali )
00358   {
00359     int posi = posvec[iali];
00360     int leni = lenvec[iali];
00361 
00362     int resj = 0;
00363     for ( unsigned int jali = 0; jali <= iali; ++jali )
00364     {   
00365       int posj = posvec[jali];
00366       int lenj = lenvec[jali];
00367 
00368       for ( int ir = 0; ir < leni; ++ir )
00369         for ( int ic = 0; ic < lenj; ++ic )
00370           result[resi+ir][resj+ic] = theData->covariance()[posi-1+ir][posj-1+ic];
00371 
00372       resj += lenj;
00373     }
00374     resi += leni;
00375   }
00376 
00377   return result;
00378 }

AlgebraicMatrix CompositeAlignmentParameters::derivatives ( const std::vector< TrajectoryStateOnSurface > &  tsosvec,
const std::vector< AlignableDetOrUnitPtr > &  alidetvec 
) const

Definition at line 127 of file CompositeAlignmentParameters.cc.

References alignableFromAlignableDet(), CompositeAlignmentDerivativesExtractor::derivatives(), and it.

00129 {
00130   std::vector<Alignable*> alivec;
00131   for (std::vector<AlignableDetOrUnitPtr>::const_iterator it=alidetvec.begin(); it!=alidetvec.end(); ++it)
00132     alivec.push_back(alignableFromAlignableDet(*it));
00133   
00134   CompositeAlignmentDerivativesExtractor extractor(alivec,alidetvec,tsosvec);
00135   return extractor.derivatives();
00136 }

AlgebraicMatrix CompositeAlignmentParameters::derivatives ( const std::vector< TrajectoryStateOnSurface > &  tsosvec,
const std::vector< AlignableDet * > &  alidetvec 
) const

for backward compatibility, use std::vector<AlignableDetOrUnitPtr>

Definition at line 117 of file CompositeAlignmentParameters.cc.

References convert(), and derivatives().

00119 {
00120   std::vector<AlignableDetOrUnitPtr> detOrUnits;
00121   this->convert(alidetvec, detOrUnits);
00122 
00123   return this->derivatives(tsosvec, detOrUnits);
00124 }

AlgebraicMatrix CompositeAlignmentParameters::derivatives ( const TrajectoryStateOnSurface tsos,
const AlignableDetOrUnitPtr alidet 
) const [virtual]

Get derivatives.

Implements AlignmentParameters.

Definition at line 182 of file CompositeAlignmentParameters.cc.

Referenced by derivatives(), and selectedDerivatives().

00184 {
00185   std::vector<TrajectoryStateOnSurface> tsosvec;
00186   std::vector<AlignableDetOrUnitPtr> alidetvec;
00187   tsosvec.push_back(tsos);
00188   alidetvec.push_back(alidet);
00189   return derivatives(tsosvec,alidetvec);
00190 }

AlgebraicMatrix CompositeAlignmentParameters::derivativesLegacy ( const std::vector< TrajectoryStateOnSurface > &  tsosvec,
const std::vector< AlignableDet * > &  alidetvec 
) const

deprecated due to 'AlignableDet*' interface (legacy code should not be needed anymore)

Definition at line 206 of file CompositeAlignmentParameters.cc.

References alignableFromAlignableDet(), Alignable::alignmentParameters(), it, and AlignmentParameters::selectedDerivatives().

00208 {
00209   // sanity check: length of parameter argument vectors must be equal
00210   if (alidetvec.size() != tsosvec.size())
00211   {
00212     edm::LogError("BadArgument") << " Inconsistent length of argument vectors! ";
00213     AlgebraicMatrix selderiv(1,0);
00214     return selderiv;
00215   }
00216 
00217   std::vector<AlgebraicMatrix> vecderiv;
00218   int nparam=0;
00219 
00220   std::vector<TrajectoryStateOnSurface>::const_iterator itsos=tsosvec.begin();
00221   for( std::vector<AlignableDet*>::const_iterator it=alidetvec.begin(); 
00222        it!=alidetvec.end(); ++it, ++itsos ) 
00223   {
00224     AlignableDet* ad = (*it);
00225     Alignable* ali = alignableFromAlignableDet(ad);
00226     AlignmentParameters* ap = ali->alignmentParameters();
00227     AlgebraicMatrix thisselderiv = ap->selectedDerivatives(*itsos,ad);
00228     vecderiv.push_back(thisselderiv);
00229     nparam += thisselderiv.num_row();
00230   }
00231 
00232   int ipos=1;
00233   AlgebraicMatrix selderiv(nparam,2);
00234   for ( std::vector<AlgebraicMatrix>::const_iterator imat=vecderiv.begin();
00235         imat!=vecderiv.end(); ++imat ) 
00236   {
00237     AlgebraicMatrix thisselderiv=(*imat);
00238     int npar=thisselderiv.num_row();
00239     selderiv.sub(ipos,1,thisselderiv);
00240     ipos += npar;
00241   }
00242 
00243   return selderiv;
00244 }

AlgebraicMatrix CompositeAlignmentParameters::derivativesLegacy ( const TrajectoryStateOnSurface tsos,
AlignableDet alidet 
) const

deprecated due to 'AlignableDet*' interface (legacy code should not be needed anymore)

Definition at line 260 of file CompositeAlignmentParameters.cc.

Referenced by selectedDerivativesLegacy().

00262 {
00263   std::vector<TrajectoryStateOnSurface> tsosvec;
00264   std::vector<AlignableDet*> alidetvec;
00265   tsosvec.push_back(tsos);
00266   alidetvec.push_back(alidet);
00267   return derivativesLegacy(tsosvec,alidetvec);
00268 
00269 }

std::vector< Alignable * > CompositeAlignmentParameters::extractAlignables ( const std::vector< Alignable * > &  alignables  )  const [private]

Return vector of alignables without multiple occurences.

Definition at line 477 of file CompositeAlignmentParameters.cc.

References find(), and HLT_VtxMuL3::result.

Referenced by covarianceSubset(), and parameterSubset().

00478 {
00479   std::vector< Alignable* > result;
00480 
00481   std::vector< Alignable* >::const_iterator itA, itEnd;
00482   for ( itA = alignables.begin(), itEnd = alignables.end(); itA != itEnd; ++itA )
00483   {
00484     if ( std::find( result.begin(), result.end(), *itA ) == result.end() ) result.push_back( *itA );
00485   }
00486 
00487   return result;
00488 }

bool CompositeAlignmentParameters::extractPositionAndLength ( const std::vector< Alignable * > &  alignables,
std::vector< int > &  posvec,
std::vector< int > &  lenvec,
int length 
) const [private]

Extract position and length of parameters for a subset of Alignables.

Definition at line 440 of file CompositeAlignmentParameters.cc.

References find(), it, theAlilenmap, theAliposmap, and theComponents.

Referenced by covarianceSubset(), and parameterSubset().

00444 {
00445   length = 0;
00446 
00447   for ( std::vector<Alignable*>::const_iterator it = alignables.begin(); it != alignables.end(); ++it ) 
00448   {
00449     // check if in components 
00450     if ( std::find( theComponents.begin(), theComponents.end(), *it ) == theComponents.end() ) 
00451     {
00452       edm::LogError( "NotFound" ) << "@SUB=CompositeAlignmentParameters::extractPositionAndLength"
00453                                   << "Alignable not found in components!";
00454       return false;
00455     }
00456 
00457     // get pos/length
00458     Aliposmap::const_iterator iposmap = theAliposmap.find( *it );
00459     Alilenmap::const_iterator ilenmap = theAlilenmap.find( *it );
00460     if ( iposmap == theAliposmap.end() || ilenmap == theAlilenmap.end() ) 
00461     {
00462       edm::LogError( "NotFound" ) << "@SUB=CompositeAlignmentParameters::extractPositionAndLength"
00463                                   << "position/length not found for Alignable in maps!";
00464       return false;
00465     }
00466     posvec.push_back( iposmap->second );
00467     lenvec.push_back( ilenmap->second );
00468     length += ilenmap->second;
00469   }
00470 
00471   return true;
00472 }

AlgebraicVector CompositeAlignmentParameters::parameterSubset ( const std::vector< Alignable * > &  vec  )  const

Extract parameters for subset of alignables.

Definition at line 298 of file CompositeAlignmentParameters.cc.

References extractAlignables(), extractPositionAndLength(), HLT_VtxMuL3::result, EgammaValidation_Zee_cff::sel, and AlignmentParameters::theData.

00299 {
00300   const std::vector< Alignable* > sel = extractAlignables( vec );
00301 
00302   const unsigned int nali = sel.size();
00303   int ndim = 0;
00304 
00305   std::vector<int> posvec;
00306   std::vector<int> lenvec;
00307 
00308   posvec.reserve( nali );
00309   lenvec.reserve( nali );
00310 
00311   // iterate over input vector of alignables to determine size of result vector
00312   if ( !extractPositionAndLength( sel, posvec, lenvec, ndim ) ) return AlgebraicVector();
00313 
00314   // OK, let's do the real work now
00315   AlgebraicVector result( ndim );
00316 
00317   int resi = 0;
00318   for ( unsigned int iali = 0; iali < nali; ++iali )
00319   {
00320     int posi = posvec[iali];
00321     int leni = lenvec[iali];
00322 
00323     for ( int ir = 0; ir < leni; ++ir )
00324       result[resi+ir] = theData->parameters()[posi-1+ir];
00325 
00326     resi += leni;
00327   }
00328 
00329   return result;
00330 }

AlgebraicMatrix CompositeAlignmentParameters::selectedDerivatives ( const std::vector< TrajectoryStateOnSurface > &  tsosvec,
const std::vector< AlignableDetOrUnitPtr > &  alidetvec 
) const

Definition at line 173 of file CompositeAlignmentParameters.cc.

References derivatives().

00175 { 
00176   return derivatives(tsosvec,alidetvec);
00177 }

AlgebraicMatrix CompositeAlignmentParameters::selectedDerivatives ( const std::vector< TrajectoryStateOnSurface > &  tsosvec,
const std::vector< AlignableDet * > &  alidetvec 
) const

for backward compatibility, use std::vector<AlignableDetOrUnitPtr>

Definition at line 165 of file CompositeAlignmentParameters.cc.

References derivatives().

00167 { 
00168   return derivatives(tsosvec,alidetvec);
00169 }

AlgebraicMatrix CompositeAlignmentParameters::selectedDerivatives ( const TrajectoryStateOnSurface tsos,
const AlignableDetOrUnitPtr alidet 
) const [virtual]

Get derivatives for selected alignables.

Implements AlignmentParameters.

Definition at line 195 of file CompositeAlignmentParameters.cc.

References derivatives().

00197 { 
00198   return derivatives(tsos,alidet);
00199 }

AlgebraicMatrix CompositeAlignmentParameters::selectedDerivativesLegacy ( const std::vector< TrajectoryStateOnSurface > &  tsosvec,
const std::vector< AlignableDet * > &  alidetvec 
) const

deprecated due to 'AlignableDet*' interface (legacy code should not be needed anymore)

Definition at line 250 of file CompositeAlignmentParameters.cc.

References derivativesLegacy().

00252 { 
00253   return derivativesLegacy(tsosvec,alidetvec);
00254 }

AlgebraicMatrix CompositeAlignmentParameters::selectedDerivativesLegacy ( const TrajectoryStateOnSurface tsos,
AlignableDet alidet 
) const

deprecated due to 'AlignableDet*' interface (legacy code should not be needed anymore)

Definition at line 275 of file CompositeAlignmentParameters.cc.

References derivativesLegacy().

00277 { 
00278   return derivativesLegacy(tsos,alidet);
00279 }


Member Data Documentation

AlignableDetToAlignableMap CompositeAlignmentParameters::theAlignableDetToAlignableMap [private]

Relate Alignable's and AlignableDet's.

Definition at line 135 of file CompositeAlignmentParameters.h.

Referenced by alignableFromAlignableDet().

Alilenmap CompositeAlignmentParameters::theAlilenmap [private]

Definition at line 139 of file CompositeAlignmentParameters.h.

Referenced by extractPositionAndLength().

Aliposmap CompositeAlignmentParameters::theAliposmap [private]

Maps to find parameters/covariance elements for given alignable.

Definition at line 138 of file CompositeAlignmentParameters.h.

Referenced by extractPositionAndLength().

Components CompositeAlignmentParameters::theComponents [private]

Vector of alignable components.

Definition at line 132 of file CompositeAlignmentParameters.h.

Referenced by components(), and extractPositionAndLength().


The documentation for this class was generated from the following files:
Generated on Tue Jun 9 18:16:36 2009 for CMSSW by  doxygen 1.5.4