CMS 3D CMS Logo

Public Member Functions | Private Attributes | Friends

AlignableCSCEndcap Class Reference

#include <AlignableCSCEndcap.h>

Inheritance diagram for AlignableCSCEndcap:
AlignableComposite Alignable

List of all members.

Public Member Functions

 AlignableCSCEndcap (const std::vector< AlignableCSCStation * > cscStations)
 The constructor simply copies the vector of stations and computes the surface from them.
AlignmentErrorsalignmentErrors () const
 Return vector of alignment errors.
Alignmentsalignments () const
 Return alignment data.
virtual std::vector< Alignable * > components () const
 Return vector of direct components.
RotationType computeOrientation ()
 Just initialize to default given by default constructor of a RotationType.
PositionType computePosition ()
 Compute average z position from all components (x and y forced to 0)
AlignableSurface computeSurface ()
void dump (void) const
 Recursive printout of the muon End Cap structure.
AlignableCSCStationstation (int i)
 Return AlignableCSCEndcap station at given index.
 ~AlignableCSCEndcap ()
 Clean delete of the vector and its elements.

Private Attributes

std::vector
< AlignableCSCStation * > 
theCSCStations

Friends

std::ostream & operator<< (std::ostream &, const AlignableCSCEndcap &)
 Printout muon End Cap information (not recursive)

Detailed Description

Concrete class for muon CSC Endcap alignable.

Misalignment can be de-/reactivated (forwarded to components).

Definition at line 30 of file AlignableCSCEndcap.h.


Constructor & Destructor Documentation

AlignableCSCEndcap::AlignableCSCEndcap ( const std::vector< AlignableCSCStation * >  cscStations)

The constructor simply copies the vector of stations and computes the surface from them.

Definition at line 17 of file AlignableCSCEndcap.cc.

References computeSurface(), AlignableComposite::setSurface(), and theCSCStations.

   : AlignableComposite(cscStations[0]->id(), align::AlignableCSCEndcap)
{

  theCSCStations.insert( theCSCStations.end(), cscStations.begin(), cscStations.end() );

  setSurface( computeSurface() );
   
}
AlignableCSCEndcap::~AlignableCSCEndcap ( )

Clean delete of the vector and its elements.

Definition at line 29 of file AlignableCSCEndcap.cc.

References theCSCStations.

{
  for ( std::vector<AlignableCSCStation*>::iterator iter = theCSCStations.begin(); 
        iter != theCSCStations.end(); iter++)
    delete *iter;

}

Member Function Documentation

AlignmentErrors * AlignableCSCEndcap::alignmentErrors ( void  ) const [virtual]

Return vector of alignment errors.

Reimplemented from AlignableComposite.

Definition at line 133 of file AlignableCSCEndcap.cc.

References components(), filterCSVwithJSON::copy, i, AlignmentErrors::m_alignError, and python::multivaluedict::sort().

{

  std::vector<Alignable*> comp = this->components();
  AlignmentErrors* m_alignmentErrors = new AlignmentErrors();

  // Add components recursively
  for ( std::vector<Alignable*>::iterator i=comp.begin(); i!=comp.end(); i++ )
    {
          AlignmentErrors* tmpAlignmentErrors = (*i)->alignmentErrors();
      std::copy( tmpAlignmentErrors->m_alignError.begin(), tmpAlignmentErrors->m_alignError.end(), 
                                 std::back_inserter(m_alignmentErrors->m_alignError) );
          delete tmpAlignmentErrors;
    }

  std::sort( m_alignmentErrors->m_alignError.begin(), m_alignmentErrors->m_alignError.end(), 
                         lessAlignmentDetId<AlignTransformError>() );

  return m_alignmentErrors;

}
Alignments * AlignableCSCEndcap::alignments ( void  ) const [virtual]

Return alignment data.

Reimplemented from AlignableComposite.

Definition at line 110 of file AlignableCSCEndcap.cc.

References components(), filterCSVwithJSON::copy, i, Alignments::m_align, and python::multivaluedict::sort().

{

  std::vector<Alignable*> comp = this->components();
  Alignments* m_alignments = new Alignments();
  // Add components recursively
  for ( std::vector<Alignable*>::iterator i=comp.begin(); i!=comp.end(); i++ )
    {
      Alignments* tmpAlignments = (*i)->alignments();
      std::copy( tmpAlignments->m_align.begin(), tmpAlignments->m_align.end(), 
                                 std::back_inserter(m_alignments->m_align) );
          delete tmpAlignments;
    }

  std::sort( m_alignments->m_align.begin(), m_alignments->m_align.end(), 
                         lessAlignmentDetId<AlignTransform>() );

  return m_alignments;

}
virtual std::vector<Alignable*> AlignableCSCEndcap::components ( ) const [inline, virtual]

Return vector of direct components.

Reimplemented from AlignableComposite.

Definition at line 39 of file AlignableCSCEndcap.h.

References query::result, and theCSCStations.

Referenced by alignmentErrors(), and alignments().

  {

        std::vector<Alignable*> result;
        result.insert( result.end(), theCSCStations.begin(), theCSCStations.end() );
        return result;

  }
AlignableCSCEndcap::RotationType AlignableCSCEndcap::computeOrientation ( )

Just initialize to default given by default constructor of a RotationType.

Definition at line 78 of file AlignableCSCEndcap.cc.

Referenced by computeSurface().

{
  return RotationType();
}
AlignableCSCEndcap::PositionType AlignableCSCEndcap::computePosition ( )

Compute average z position from all components (x and y forced to 0)

Definition at line 61 of file AlignableCSCEndcap.cc.

References theCSCStations, and PV3DBase< T, PVType, FrameType >::z().

Referenced by computeSurface().

{

  float zz = 0.;

  for ( std::vector<AlignableCSCStation*>::iterator ilayer = theCSCStations.begin();
                ilayer != theCSCStations.end(); ilayer++ )
    zz += (*ilayer)->globalPosition().z();

  zz /= static_cast<float>(theCSCStations.size());

  return PositionType( 0.0, 0.0, zz );

}
AlignableSurface AlignableCSCEndcap::computeSurface ( )

Returns surface corresponding to current position and orientation, as given by average on all components

Definition at line 51 of file AlignableCSCEndcap.cc.

References computeOrientation(), and computePosition().

Referenced by AlignableCSCEndcap().

void AlignableCSCEndcap::dump ( void  ) const [virtual]

Recursive printout of the muon End Cap structure.

Recursive printout of whole Half Barrel structure.

Reimplemented from AlignableComposite.

Definition at line 98 of file AlignableCSCEndcap.cc.

References theCSCStations.

{

  edm::LogInfo("AlignableDump") << (*this);
  for ( std::vector<AlignableCSCStation*>::const_iterator iLayer = theCSCStations.begin();
                iLayer != theCSCStations.end(); iLayer++ )
        (*iLayer)->dump();

}
AlignableCSCStation & AlignableCSCEndcap::station ( int  i)

Return AlignableCSCEndcap station at given index.

Definition at line 38 of file AlignableCSCEndcap.cc.

References Exception, i, Alignable::size(), and theCSCStations.

{
  
  if (i >= size() ) 
        throw cms::Exception("LogicError") << "Station index (" << i << ") out of range";

  return *theCSCStations[i];
  
}

Friends And Related Function Documentation

std::ostream& operator<< ( std::ostream &  os,
const AlignableCSCEndcap b 
) [friend]

Printout muon End Cap information (not recursive)

Definition at line 85 of file AlignableCSCEndcap.cc.

{

  os << "This EndCap contains " << b.theCSCStations.size() << " CSC stations" << std::endl;
  os << "(phi, r, z) =  (" << b.globalPosition().phi() << "," 
     << b.globalPosition().perp() << "," << b.globalPosition().z();
  os << "),  orientation:" << std::endl<< b.globalRotation() << std::endl;
  return os;

}

Member Data Documentation