CMS 3D CMS Logo

Public Types | Public Member Functions | Private Member Functions | Private Attributes

LASGlobalData< T > Class Template Reference

#include <LASGlobalData.h>

Inheritance diagram for LASGlobalData< T >:
TNamed

List of all members.

Public Types

enum  Beam {
  BEAM0, BEAM1, BEAM2, BEAM3,
  BEAM4, BEAM5, BEAM6, BEAM7
}
enum  Subdetector { TECPLUS, TECMINUS, TIB, TOB }
enum  TecDisk {
  DISK1, DISK2, DISK3, DISK4,
  DISK5, DISK6, DISK7, DISK8,
  DISK9
}
enum  TecRing { RING4, RING6 }
enum  TibTobPosition {
  MINUS3, MINUS2, MINUS1, PLUS1,
  PLUS2, PLUS3
}

Public Member Functions

TGetTEC2TECEntry (int subdetector, int beam, int tecDisk)
TGetTECEntry (int subdetector, int tecRing, int beam, int tecDisk)
TGetTIBTOBEntry (int subdetector, int beam, int tibTobPosition)
 LASGlobalData (const T &)
 LASGlobalData ()
void SetTEC2TECEntry (int subdetector, int beam, int tecDisk, T)
void SetTECEntry (int subdetector, int tecRing, int beam, int tecDisk, T)
void SetTIBTOBEntry (int subdetector, int beam, int tibTobPosition, T)

Private Member Functions

 ClassDef (LASGlobalData, 2)
void Init (const T &in=T())

Private Attributes

std::vector< std::vector< T > > tecMinusATData
std::vector< std::vector
< std::vector< T > > > 
tecMinusData
std::vector< std::vector< T > > tecPlusATData
std::vector< std::vector
< std::vector< T > > > 
tecPlusData
std::vector< std::vector< T > > tibData
std::vector< std::vector< T > > tobData

Detailed Description

template<class T>
class LASGlobalData< T >

Container class for storing and easy access to global LAS data

There is one entry of type T for each LAS module, e.g. beam profiles, position, name, ... All identifiers (beam,subdetector,position,...) start with index 0. Note that some ring 4 TEC modules are hit by either TEC internal as well as by AT beams and are therefore considered twice in the container (once in tec<X>Data and once in tec<X>ATData). Do not instantiate this class with bool.

Short LAS geometry reminder:

Definition at line 31 of file LASGlobalData.h.


Member Enumeration Documentation

template<class T>
enum LASGlobalData::Beam
Enumerator:
BEAM0 
BEAM1 
BEAM2 
BEAM3 
BEAM4 
BEAM5 
BEAM6 
BEAM7 

Definition at line 38 of file LASGlobalData.h.

template<class T>
enum LASGlobalData::Subdetector
Enumerator:
TECPLUS 
TECMINUS 
TIB 
TOB 

Definition at line 36 of file LASGlobalData.h.

template<class T>
enum LASGlobalData::TecDisk
Enumerator:
DISK1 
DISK2 
DISK3 
DISK4 
DISK5 
DISK6 
DISK7 
DISK8 
DISK9 

Definition at line 39 of file LASGlobalData.h.

template<class T>
enum LASGlobalData::TecRing
Enumerator:
RING4 
RING6 

Definition at line 37 of file LASGlobalData.h.

{ RING4, RING6 };
template<class T>
enum LASGlobalData::TibTobPosition
Enumerator:
MINUS3 
MINUS2 
MINUS1 
PLUS1 
PLUS2 
PLUS3 

Definition at line 40 of file LASGlobalData.h.


Constructor & Destructor Documentation

template<class T >
LASGlobalData< T >::LASGlobalData ( )

def constructor

Definition at line 69 of file LASGlobalData.h.

                                {

  Init();

}
template<class T>
LASGlobalData< T >::LASGlobalData ( const T in)

Definition at line 79 of file LASGlobalData.h.

{
  Init(in);
}

Member Function Documentation

template<class T>
LASGlobalData< T >::ClassDef ( LASGlobalData< T ,
 
) [private]
template<class T >
T & LASGlobalData< T >::GetTEC2TECEntry ( int  theDetector,
int  theBeam,
int  theDisk 
)

get a tec AT entry (ring 4) from the container according to subdetector, beam and disk number

Definition at line 142 of file LASGlobalData.h.

References benchmark_cfg::cerr.

Referenced by LaserAlignment::ApplyATMaskingCorrections(), LaserAlignment::beginJob(), LASAlignmentTubeAlgorithm::CalculateParameters(), RawDataConverter::ClearData(), LaserAlignment::DumpPosFileSet(), LASGeometryUpdater::EndcapUpdate(), LaserAlignment::endRun(), fcn(), LaserAlignment::fillDataProfiles(), LaserAlignmentT0ProducerDQM::FillFromProcessedDigis(), LaserAlignmentT0ProducerDQM::FillFromRawDigis(), LaserAlignment::fillPedestalProfiles(), RawDataConverter::GetDigis(), LASAlignmentTubeAlgorithm::GetTEC2TECAlignmentParameterCorrection(), LaserAlignment::produce(), LASAlignmentTubeAlgorithm::ReadMisalignmentFromFile(), LASBarrelAlgorithm::ReadMisalignmentFromFile(), and LaserAlignment::testRoutine().

                                                                                {

  // do a range check first
  if( !( ( theDetector == 0 || theDetector == 1 ) &&        // TEC+ or TEC-
         ( theBeam >= 0 && theBeam < 8 )          &&        // eight AT beams in a TEC
         ( theDisk >= 0 && theDisk < 6 )     ) ) {          // disk1...disk5 are hit by AT
    std::cerr << " [LASGlobalData::GetTEC2TECEntry] ** ERROR: illegal coordinates:" << std::endl;
    std::cerr << "   detector " << theDetector << ", beam " << theBeam << ", disk " << theDisk << "." << std::endl;
    throw   "   Bailing out."; // @@@ REPLACE THIS BY cms::Exception (<FWCore/Utilities/interface/Exception.h> in 1_3_6)
  }
  else {
    if( theDetector == 0 ) return( tecPlusATData.at( theBeam ).at( theDisk ) );
    else return( tecMinusATData.at( theBeam ).at( theDisk ) );
  }

}
template<class T >
T & LASGlobalData< T >::GetTECEntry ( int  theDetector,
int  theRing,
int  theBeam,
int  theDisk 
)

get a tec entry from the container according to subdetector, ring, beam and disk number

Definition at line 91 of file LASGlobalData.h.

References benchmark_cfg::cerr.

Referenced by LASGeometryUpdater::ApplyBeamKinkCorrections(), LaserAlignment::ApplyEndcapMaskingCorrections(), LaserAlignment::beginJob(), LASEndcapAlgorithm::CalculateParameters(), RawDataConverter::ClearData(), LaserAlignment::DumpHitmaps(), LaserAlignment::DumpPosFileSet(), LaserAlignment::endRun(), LaserAlignment::fillDataProfiles(), LaserAlignmentT0ProducerDQM::FillFromProcessedDigis(), LaserAlignmentT0ProducerDQM::FillFromRawDigis(), LaserAlignment::fillPedestalProfiles(), LASEndcapAlgorithm::GetAlignmentParameterCorrection(), RawDataConverter::GetDigis(), LaserAlignment::isTECBeam(), LaserAlignment::produce(), LASAlignmentTubeAlgorithm::ReadMisalignmentFromFile(), LASBarrelAlgorithm::ReadMisalignmentFromFile(), and LaserAlignment::testRoutine().

                                                                                         {
  
  // do a range check first
  if( !( ( theDetector == 0 || theDetector == 1 ) &&        // TEC+ or TEC-
         ( theRing == 0 || theRing == 1 )         &&        // ring4 or ring6
         ( theBeam >= 0 && theBeam < 8 )          &&        // eight beams in a TEC
         ( theDisk >= 0 && theDisk < 9 )             ) ) {  // disk1..disk9
    std::cerr << " [LASGlobalData::GetTECEntry] ** ERROR: illegal input coordinates:" << std::endl;
    std::cerr << "   detector " << theDetector << ", ring " << theRing << ", beam " << theBeam << ", disk " << theDisk << "." << std::endl;
    throw   "   Bailing out."; // @@@ REPLACE THIS BY cms::Exception (<FWCore/Utilities/interface/Exception.h> in 1_3_6)
  }
  else {
    if( theDetector == 0 ) return( tecPlusData.at( theRing ).at( theBeam ).at( theDisk ) );
    else return( tecMinusData.at( theRing ).at( theBeam ).at( theDisk ) );
  }

}
template<class T >
T & LASGlobalData< T >::GetTIBTOBEntry ( int  theDetector,
int  theBeam,
int  thePosition 
)

get a tib/tob entry from the container according to subdetector, beam and position (z) number

Definition at line 117 of file LASGlobalData.h.

References benchmark_cfg::cerr.

Referenced by LaserAlignment::ApplyATMaskingCorrections(), LaserAlignment::beginJob(), LASAlignmentTubeAlgorithm::CalculateParameters(), RawDataConverter::ClearData(), LaserAlignment::DumpPosFileSet(), LaserAlignment::endRun(), fcn(), LaserAlignment::fillDataProfiles(), LaserAlignmentT0ProducerDQM::FillFromProcessedDigis(), LaserAlignmentT0ProducerDQM::FillFromRawDigis(), LaserAlignment::fillPedestalProfiles(), RawDataConverter::GetDigis(), LASAlignmentTubeAlgorithm::GetTIBTOBAlignmentParameterCorrection(), LaserAlignment::isATBeam(), LaserAlignment::produce(), LASAlignmentTubeAlgorithm::ReadMisalignmentFromFile(), LASBarrelAlgorithm::ReadMisalignmentFromFile(), and LaserAlignment::testRoutine().

                                                                                   {

  // do a range check first
  if( !( ( theDetector == 2 || theDetector == 3 ) &&        // TIB or TOB
         ( theBeam >= 0 && theBeam < 8 )          &&        // there are eight AT beams
         ( thePosition >= 0 && thePosition < 6 )     ) ) {  // z-pos -3 .. z-pos +3
    std::cerr << " [LASGlobalData::GetTIBTOBEntry] ** ERROR: illegal coordinates:" << std::endl;
    std::cerr << "   detector " << theDetector << ", beam " << theBeam << ", position " << thePosition << "." << std::endl;
    throw   "   Bailing out."; // @@@ REPLACE THIS BY cms::Exception (<FWCore/Utilities/interface/Exception.h> in 1_3_6)
  }
  else {
    if( theDetector == 2 ) return( tibData.at( theBeam ).at( thePosition ) );
    else return( tobData.at( theBeam ).at( thePosition ) );
  }

}
template<class T>
void LASGlobalData< T >::Init ( const T in = T()) [private]

Definition at line 282 of file LASGlobalData.h.

References relativeConstraints::ring.

                                         {

  // create TEC+ subdetector "multi"-vector of T
  tecPlusData.resize( 2 ); // create ring4 and ring6
  for( unsigned int ring = 0; ring < tecPlusData.size(); ++ring ) {
    tecPlusData.at( ring ).resize( 8 ); // create 8 beams for each ring
    for( unsigned int beam = 0; beam < tecPlusData.at( ring ).size(); ++beam ) {
      tecPlusData.at( ring ).at( beam ).resize( 9 , in); // create 9 disks for each beam
    }
  }

  // same for TEC-
  tecMinusData.resize( 2 ); // create ring4 and ring6
  for( unsigned int ring = 0; ring < tecMinusData.size(); ++ring ) {
    tecMinusData.at( ring ).resize( 8 ); // create 8 beams for each ring
    for( unsigned int beam = 0; beam < tecMinusData.at( ring ).size(); ++beam ) {
      tecMinusData.at( ring ).at( beam ).resize( 9, in ); // create 9 disks for each beam
    }
  }
  
  // same for TEC+ AT
  tecPlusATData.resize( 8 ); // create 8 beams
  for( unsigned int beam = 0; beam < tecPlusATData.size(); ++beam ) {
    tecPlusATData.at( beam ).resize( 5, in ); // five TEC disks hit by each AT beam
  }

  // same for TEC- AT
  tecMinusATData.resize( 8 ); // create 8 beams
  for( unsigned int beam = 0; beam < tecMinusATData.size(); ++beam ) {
    tecMinusATData.at( beam ).resize( 5, in ); // five TEC disks hit by each AT beam
  }

  // same for TIB..
  tibData.resize( 8 ); // create 8 beams
  for( unsigned int beam = 0; beam < tibData.size(); ++ beam ) {
    tibData.at( beam ).resize( 6, in ); // six TIB modules hit by each beam
  }

  // ..and for TOB
  tobData.resize( 8 ); // create 8 beams
  for( unsigned int beam = 0; beam < tobData.size(); ++ beam ) {
    tobData.at( beam ).resize( 6, in ); // six TOB modules hit by each beam
  }
}
template<class T>
void LASGlobalData< T >::SetTEC2TECEntry ( int  theDetector,
int  theBeam,
int  theDisk,
T  theEntry 
)

set a tec AT entry (ring 4) in the container according to subdetector, beam and disk number

Definition at line 221 of file LASGlobalData.h.

References benchmark_cfg::cerr.

Referenced by LaserAlignment::beginJob(), LaserAlignment::CalculateNominalCoordinates(), LaserAlignment::endRun(), LaserAlignmentT0ProducerDQM::FillDetectorId(), LaserAlignment::fillDetectorId(), and RawDataConverter::fillDetectorId().

                                                                                              {

  // do a range check first
  if( !( ( theDetector == 0 || theDetector == 1 ) &&        // TEC+ or TEC-
         ( theBeam >= 0 && theBeam < 8 )          &&        // eight beams in a TEC
         ( theDisk >= 0 && theDisk < 6 )             ) ) {  // disk1..disk5 for TEC AT
    std::cerr << " [LASGlobalData::SetTEC2TECEntry] ** ERROR: illegal coordinates:" << std::endl;
    std::cerr << "   detector " << theDetector << ", beam " << theBeam << ", disk " << theDisk << "." << std::endl;
    throw   "   Bailing out."; // @@@ REPLACE THIS BY cms::Exception (<FWCore/Utilities/interface/Exception.h> in 1_3_6)
  }
  else {
    if( theDetector == 0 ) tecPlusATData.at( theBeam ).at( theDisk ) = theEntry;
    else tecMinusATData.at( theBeam ).at( theDisk ) = theEntry;
  }

}
template<class T>
void LASGlobalData< T >::SetTECEntry ( int  theDetector,
int  theRing,
int  theBeam,
int  theDisk,
T  theEntry 
)

set a tec entry int the container according to subdetector, ring, beam and disk number

Definition at line 168 of file LASGlobalData.h.

References benchmark_cfg::cerr.

Referenced by LaserAlignment::beginJob(), LaserAlignment::CalculateNominalCoordinates(), LaserAlignment::endRun(), LaserAlignmentT0ProducerDQM::FillDetectorId(), LaserAlignment::fillDetectorId(), RawDataConverter::fillDetectorId(), and LaserAlignment::produce().

                                                                                                       {
  
  // do a range check first
  if( !( ( theDetector == 0 || theDetector == 1 ) &&        // TEC+ or TEC-
         ( theRing == 0 || theRing == 1 )         &&        // ring4 or ring6
         ( theBeam >= 0 && theBeam < 8 )          &&        // eight beams in a TEC
         ( theDisk >= 0 && theDisk < 9 )             ) ) {  // disk1..disk9
    std::cerr << " [LASGlobalData::SetTECEntry] ** ERROR: illegal coordinates:" << std::endl;
    std::cerr << "   detector " << theDetector << ", ring " << theRing << ", beam " << theBeam << ", disk " << theDisk << "." << std::endl;
    throw   "   Bailing out."; // @@@ REPLACE THIS BY cms::Exception (<FWCore/Utilities/interface/Exception.h> in 1_3_6)
  }
  else {
    if( theDetector == 0 ) tecPlusData.at( theRing ).at( theBeam ).at( theDisk ) = theEntry;
    else tecMinusData.at( theRing ).at( theBeam ).at( theDisk ) = theEntry;
  }

}
template<class T>
void LASGlobalData< T >::SetTIBTOBEntry ( int  theDetector,
int  theBeam,
int  thePosition,
T  theEntry 
)

set a tib/tob entry in the container accord subdetector, beam and position (z) number

Definition at line 195 of file LASGlobalData.h.

References benchmark_cfg::cerr.

Referenced by LaserAlignment::beginJob(), LaserAlignment::CalculateNominalCoordinates(), LaserAlignment::endRun(), LaserAlignmentT0ProducerDQM::FillDetectorId(), LaserAlignment::fillDetectorId(), RawDataConverter::fillDetectorId(), and LaserAlignment::produce().

                                                                                                 {

  // do a range check first
  if( !( ( theDetector == 2 || theDetector == 3 ) &&        // TIB or TOB
         ( theBeam >= 0 && theBeam < 8 )          &&        // there are eight AT beams
         ( thePosition >= 0 && thePosition < 6 )     ) ) {  // pos-3..pos+3
    std::cerr << " [LASGlobalData::SetTIBTOBEntry] ** ERROR: illegal coordinates:" << std::endl;
    std::cerr << "   detector " << theDetector << ", beam " << theBeam << ", position " << thePosition << "." << std::endl;
    throw   "   Bailing out."; // @@@ REPLACE THIS BY cms::Exception (<FWCore/Utilities/interface/Exception.h> in 1_3_6)
  }
  else {
    if( theDetector == 2 ) tibData.at( theBeam ).at( thePosition ) = theEntry;
    else tobData.at( theBeam ).at( thePosition ) = theEntry;
  }

}

Member Data Documentation

template<class T>
std::vector<std::vector<T> > LASGlobalData< T >::tecMinusATData [private]

Definition at line 57 of file LASGlobalData.h.

template<class T>
std::vector<std::vector<std::vector<T> > > LASGlobalData< T >::tecMinusData [private]

Definition at line 55 of file LASGlobalData.h.

template<class T>
std::vector<std::vector<T> > LASGlobalData< T >::tecPlusATData [private]

Definition at line 56 of file LASGlobalData.h.

template<class T>
std::vector<std::vector<std::vector<T> > > LASGlobalData< T >::tecPlusData [private]

Definition at line 54 of file LASGlobalData.h.

template<class T>
std::vector<std::vector<T> > LASGlobalData< T >::tibData [private]

Definition at line 58 of file LASGlobalData.h.

template<class T>
std::vector<std::vector<T> > LASGlobalData< T >::tobData [private]

Definition at line 59 of file LASGlobalData.h.