CMS 3D CMS Logo

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

#include <AlignmentProducer.h>

Inheritance diagram for AlignmentProducer:
edm::ESProducerLooper edm::ESProducer edm::EventSetupRecordIntervalFinder edm::EDLooper edm::ESProxyFactoryProducer edm::EDLooperBase edm::eventsetup::DataProxyProvider

Public Types

typedef std::vector< Alignable * > Alignables
 
typedef std::pair< const
Trajectory *, const
reco::Track * > 
ConstTrajTrackPair
 
typedef std::vector
< ConstTrajTrackPair
ConstTrajTrackPairCollection
 
typedef
AlignmentAlgorithmBase::RunNumber 
RunNumber
 
typedef
AlignmentAlgorithmBase::RunRange 
RunRange
 
typedef std::vector< RunRangeRunRanges
 
- Public Types inherited from edm::eventsetup::DataProxyProvider
typedef std::vector< std::pair
< DataKey, boost::shared_ptr
< DataProxy > > > 
KeyedProxies
 
typedef std::vector
< EventSetupRecordKey
Keys
 
typedef std::map
< EventSetupRecordKey,
KeyedProxies
RecordProxies
 
- Public Types inherited from edm::EDLooperBase
enum  Status { kContinue, kStop }
 

Public Member Functions

 AlignmentProducer (const edm::ParameterSet &iConfig)
 Constructor. More...
 
virtual void beginLuminosityBlock (const edm::LuminosityBlock &lumiBlock, const edm::EventSetup &setup)
 Called at lumi block start, calling algorithm's beginLuminosityBlock. More...
 
virtual void beginOfJob (const edm::EventSetup &)
 Called at beginning of job. More...
 
virtual void beginRun (const edm::Run &run, const edm::EventSetup &setup)
 Called at run start and calling algorithms beginRun. More...
 
virtual Status duringLoop (const edm::Event &event, const edm::EventSetup &setup)
 Called at each event. More...
 
virtual void endLuminosityBlock (const edm::LuminosityBlock &lumiBlock, const edm::EventSetup &setup)
 Called at lumi block end, calling algorithm's endLuminosityBlock. More...
 
virtual void endOfJob ()
 Called at end of job. More...
 
virtual Status endOfLoop (const edm::EventSetup &, unsigned int iLoop)
 Called at end of loop. More...
 
virtual void endRun (const edm::Run &run, const edm::EventSetup &setup)
 Called at run end - currently reading TkFittedLasBeam if an InpuTag is given for that. More...
 
virtual boost::shared_ptr
< CSCGeometry
produceCSC (const MuonGeometryRecord &iRecord)
 Produce the muon CSC geometry. More...
 
virtual boost::shared_ptr
< DTGeometry
produceDT (const MuonGeometryRecord &iRecord)
 Produce the muon DT geometry. More...
 
virtual boost::shared_ptr
< TrackerGeometry
produceTracker (const TrackerDigiGeometryRecord &iRecord)
 Produce the tracker geometry. More...
 
virtual void startingNewLoop (unsigned int iLoop)
 Called at beginning of loop. More...
 
 ~AlignmentProducer ()
 Destructor. More...
 
- Public Member Functions inherited from edm::ESProducerLooper
 ESProducerLooper ()
 
virtual std::set
< eventsetup::EventSetupRecordKey
modifyingRecords () const
 
- Public Member Functions inherited from edm::ESProducer
 ESProducer ()
 
virtual ~ESProducer ()
 
- Public Member Functions inherited from edm::ESProxyFactoryProducer
 ESProxyFactoryProducer ()
 
virtual void newInterval (const eventsetup::EventSetupRecordKey &iRecordType, const ValidityInterval &iInterval)
 overrides DataProxyProvider method More...
 
virtual ~ESProxyFactoryProducer ()
 
- Public Member Functions inherited from edm::eventsetup::DataProxyProvider
 DataProxyProvider ()
 
const ComponentDescriptiondescription () const
 
bool isUsingRecord (const EventSetupRecordKey &) const
 
const KeyedProxieskeyedProxies (const EventSetupRecordKey &iRecordKey) const
 
void resetProxies (const EventSetupRecordKey &iRecordType)
 
void resetProxiesIfTransient (const EventSetupRecordKey &iRecordType)
 
void setAppendToDataLabel (const edm::ParameterSet &)
 
void setDescription (const ComponentDescription &iDescription)
 
std::set< EventSetupRecordKeyusingRecords () const
 
virtual ~DataProxyProvider ()
 
- Public Member Functions inherited from edm::EventSetupRecordIntervalFinder
const
eventsetup::ComponentDescription
descriptionForFinder () const
 
 EventSetupRecordIntervalFinder ()
 
std::set
< eventsetup::EventSetupRecordKey
findingForRecords () const
 
const ValidityIntervalfindIntervalFor (const eventsetup::EventSetupRecordKey &, const IOVSyncValue &)
 
void setDescriptionForFinder (const eventsetup::ComponentDescription &iDescription)
 
virtual ~EventSetupRecordIntervalFinder ()
 
- Public Member Functions inherited from edm::EDLooper
 EDLooper ()
 
virtual ~EDLooper ()
 
- Public Member Functions inherited from edm::EDLooperBase
virtual void attachTo (ActivityRegistry &)
 Override this method if you need to monitor the state of the processing. More...
 
virtual void beginOfJob ()
 
void copyInfo (ScheduleInfo const &)
 
void doBeginLuminosityBlock (LuminosityBlockPrincipal &, EventSetup const &)
 
void doBeginRun (RunPrincipal &, EventSetup const &)
 
Status doDuringLoop (EventPrincipal &eventPrincipal, EventSetup const &es, ProcessingController &)
 
void doEndLuminosityBlock (LuminosityBlockPrincipal &, EventSetup const &)
 
Status doEndOfLoop (EventSetup const &es)
 
void doEndRun (RunPrincipal &, EventSetup const &)
 
void doStartingNewLoop ()
 
 EDLooperBase ()
 
void prepareForNextLoop (eventsetup::EventSetupProvider *esp)
 
void setActionTable (ActionTable const *actionTable)
 
void setModuleChanger (ModuleChanger const *)
 
virtual ~EDLooperBase ()
 

Private Member Functions

void addSurveyInfo_ (Alignable *)
 Add survey info to an alignable. More...
 
template<class G , class Rcd , class ErrRcd >
void applyDB (G *geometry, const edm::EventSetup &iSetup, const AlignTransform &globalPosition) const
 
template<class G , class DeformationRcd >
void applyDB (G *geometry, const edm::EventSetup &iSetup) const
 Apply DB constants for surface deformations. More...
 
void createGeometries_ (const edm::EventSetup &)
 Create tracker and muon geometries. More...
 
RunRanges makeNonOverlappingRunRanges (const edm::VParameterSet &RunRangeSelectionVPSet)
 
void readInSurveyRcds (const edm::EventSetup &)
 read in survey records More...
 
void simpleMisalignment_ (const Alignables &alivec, const std::string &selection, float shift, float rot, bool local)
 Apply random shifts and rotations to selected alignables, according to configuration. More...
 
void writeDB (Alignments *alignments, const std::string &alignRcd, AlignmentErrors *alignmentErrors, const std::string &errRcd, const AlignTransform *globalCoordinates, cond::Time_t time) const
 
void writeDB (AlignmentSurfaceDeformations *alignmentSurfaceDeformations, const std::string &surfaceDeformationRcd, cond::Time_t time) const
 
void writeForRunRange (cond::Time_t time)
 

Private Attributes

const bool applyDbAlignment_
 
const edm::InputTag beamSpotTag_
 
const bool checkDbAlignmentValidity_
 
const edm::InputTag clusterValueMapTag_
 
const bool doMisalignmentScenario_
 
const bool doMuon_
 
const bool doTracker_
 
const AlignmentsglobalPositions_
 GlobalPositions that might be read from DB, NULL otherwise. More...
 
int nevent_
 
const bool saveApeToDB_
 
const bool saveDeformationsToDB_
 
const bool saveToDB_
 
const int stNFixAlignables_
 
const double stRandomRotation_
 
const double stRandomShift_
 
AlignableExtrastheAlignableExtras
 
AlignableMuontheAlignableMuon
 
AlignableTrackertheAlignableTracker
 
AlignmentAlgorithmBasetheAlignmentAlgo
 
AlignmentParameterStoretheAlignmentParameterStore
 
const unsigned int theMaxLoops
 
std::vector
< AlignmentMonitorBase * > 
theMonitors
 
boost::shared_ptr< CSCGeometrytheMuonCSC
 
boost::shared_ptr< DTGeometrytheMuonDT
 
edm::ParameterSet theParameterSet
 
const SurveyErrorstheSurveyErrors
 
unsigned int theSurveyIndex
 
const AlignmentstheSurveyValues
 
boost::shared_ptr
< TrackerGeometry
theTracker
 
const edm::InputTag tjTkAssociationMapTag_
 
const edm::InputTag tkLasBeamTag_
 
const bool useExtras_
 
const bool useSurvey_
 
edm::ESWatcher< CSCSurveyErrorRcdwatchCSCSurveyErrRcd_
 
edm::ESWatcher< CSCSurveyRcdwatchCSCSurveyRcd_
 
edm::ESWatcher< DTSurveyErrorRcdwatchDTSurveyErrRcd_
 
edm::ESWatcher< DTSurveyRcdwatchDTSurveyRcd_
 
edm::ESWatcher
< TrackerSurveyErrorRcd
watchTkSurveyErrRcd_
 
edm::ESWatcher< TrackerSurveyRcdwatchTkSurveyRcd_
 

Additional Inherited Members

- Static Public Member Functions inherited from edm::eventsetup::DataProxyProvider
static void prevalidate (ConfigurationDescriptions &)
 
- Protected Member Functions inherited from edm::ESProducerLooper
virtual void registerFactoryWithKey (const eventsetup::EventSetupRecordKey &iRecord, std::auto_ptr< eventsetup::ProxyFactoryBase > &iFactory, const std::string &iLabel=std::string())
 
void setIntervalFor (const eventsetup::EventSetupRecordKey &iKey, const IOVSyncValue &iTime, ValidityInterval &oInterval)
 
- Protected Member Functions inherited from edm::ESProducer
template<typename T >
void setWhatProduced (T *iThis, const es::Label &iLabel=es::Label())
 
template<typename T >
void setWhatProduced (T *iThis, const char *iLabel)
 
template<typename T >
void setWhatProduced (T *iThis, const std::string &iLabel)
 
template<typename T , typename TDecorator >
void setWhatProduced (T *iThis, const TDecorator &iDec, const es::Label &iLabel=es::Label())
 
template<typename T , typename TReturn , typename TRecord >
void setWhatProduced (T *iThis, TReturn(T::*iMethod)(const TRecord &), const es::Label &iLabel=es::Label())
 
template<typename T , typename TReturn , typename TRecord , typename TArg >
void setWhatProduced (T *iThis, TReturn(T::*iMethod)(const TRecord &), const TArg &iDec, const es::Label &iLabel=es::Label())
 
- Protected Member Functions inherited from edm::ESProxyFactoryProducer
template<class TFactory >
void registerFactory (std::auto_ptr< TFactory > iFactory, const std::string &iLabel=std::string())
 
virtual void registerProxies (const eventsetup::EventSetupRecordKey &iRecord, KeyedProxies &aProxyList)
 override DataProxyProvider method More...
 
- Protected Member Functions inherited from edm::eventsetup::DataProxyProvider
void eraseAll (const EventSetupRecordKey &iRecordKey)
 deletes all the Proxies in aStream More...
 
void invalidateProxies (const EventSetupRecordKey &iRecordKey)
 
template<class T >
void usingRecord ()
 
void usingRecordWithKey (const EventSetupRecordKey &)
 
- Protected Member Functions inherited from edm::EventSetupRecordIntervalFinder
template<class T >
void findingRecord ()
 
void findingRecordWithKey (const eventsetup::EventSetupRecordKey &)
 
- Protected Member Functions inherited from edm::EDLooperBase
ModuleChanger const * moduleChanger () const
 This only returns a non-zero value during the call to endOfLoop. More...
 
ScheduleInfo const * scheduleInfo () const
 This returns a non-zero value after the constructor has been called. More...
 

Detailed Description

Package : Alignment/CommonAlignmentProducer Description : calls alignment algorithms

Author
: Frederic Ronga Revision :
Revision:
1.25

last update:

Date:
2012/02/01 13:55:23

by :

Author:
mussgill

Definition at line 55 of file AlignmentProducer.h.

Member Typedef Documentation

Definition at line 59 of file AlignmentProducer.h.

Definition at line 60 of file AlignmentProducer.h.

Definition at line 61 of file AlignmentProducer.h.

Definition at line 63 of file AlignmentProducer.h.

Definition at line 64 of file AlignmentProducer.h.

typedef std::vector<RunRange> AlignmentProducer::RunRanges

Definition at line 65 of file AlignmentProducer.h.

Constructor & Destructor Documentation

AlignmentProducer::AlignmentProducer ( const edm::ParameterSet iConfig)

Constructor.

Definition at line 76 of file AlignmentProducer.cc.

References edm::ParameterSet::addUntrackedParameter(), doMuon_, doTracker_, edm::hlt::Exception, reco::get(), edm::ParameterSet::getParameter(), edm::ParameterSet::getUntrackedParameter(), produceCSC(), produceDT(), produceTracker(), edm::ESProducer::setWhatProduced(), theAlignmentAlgo, and theMonitors.

76  :
80  nevent_(0), theParameterSet(iConfig),
81  theMaxLoops( iConfig.getUntrackedParameter<unsigned int>("maxLoops") ),
82  stNFixAlignables_(iConfig.getParameter<int>("nFixAlignables") ),
83  stRandomShift_(iConfig.getParameter<double>("randomShift")),
84  stRandomRotation_(iConfig.getParameter<double>("randomRotation")),
85  applyDbAlignment_( iConfig.getUntrackedParameter<bool>("applyDbAlignment")),
86  checkDbAlignmentValidity_( iConfig.getUntrackedParameter<bool>("checkDbAlignmentValidity")),
87  doMisalignmentScenario_(iConfig.getParameter<bool>("doMisalignmentScenario")),
88  saveToDB_(iConfig.getParameter<bool>("saveToDB")),
89  saveApeToDB_(iConfig.getParameter<bool>("saveApeToDB")),
90  saveDeformationsToDB_(iConfig.getParameter<bool>("saveDeformationsToDB")),
91  doTracker_( iConfig.getUntrackedParameter<bool>("doTracker") ),
92  doMuon_( iConfig.getUntrackedParameter<bool>("doMuon") ),
93  useExtras_( iConfig.getUntrackedParameter<bool>("useExtras") ),
94  useSurvey_( iConfig.getParameter<bool>("useSurvey") ),
95  tjTkAssociationMapTag_(iConfig.getParameter<edm::InputTag>("tjTkAssociationMapTag")),
96  beamSpotTag_(iConfig.getParameter<edm::InputTag>("beamSpotTag")),
97  tkLasBeamTag_(iConfig.getParameter<edm::InputTag>("tkLasBeamTag")),
98  clusterValueMapTag_(iConfig.getParameter<edm::InputTag>("hitPrescaleMapTag"))
99 {
100  edm::LogInfo("Alignment") << "@SUB=AlignmentProducer::AlignmentProducer";
101 
102  // Tell the framework what data is being produced
103  if (doTracker_) {
105  }
106  if (doMuon_) {
109  }
110 
111  // Create the alignment algorithm
112  edm::ParameterSet algoConfig = iConfig.getParameter<edm::ParameterSet>( "algoConfig" );
113  edm::VParameterSet iovSelection = iConfig.getParameter<edm::VParameterSet>( "RunRangeSelection" );
114  algoConfig.addUntrackedParameter<edm::VParameterSet>( "RunRangeSelection", iovSelection );
115  std::string algoName = algoConfig.getParameter<std::string>( "algoName" );
116  theAlignmentAlgo = AlignmentAlgorithmPluginFactory::get( )->create( algoName, algoConfig );
117 
118  // Check if found
119  if ( !theAlignmentAlgo )
120  throw cms::Exception("BadConfig") << "Couldn't find algorithm called " << algoName;
121 
122  edm::ParameterSet monitorConfig = iConfig.getParameter<edm::ParameterSet>( "monitorConfig" );
123  std::vector<std::string> monitors = monitorConfig.getUntrackedParameter<std::vector<std::string> >( "monitors" );
124 
125  for (std::vector<std::string>::const_iterator miter = monitors.begin(); miter != monitors.end(); ++miter) {
126  AlignmentMonitorBase* newMonitor = AlignmentMonitorPluginFactory::get()->create(*miter, monitorConfig.getUntrackedParameter<edm::ParameterSet>(*miter));
127 
128  if (!newMonitor) throw cms::Exception("BadConfig") << "Couldn't find monitor named " << *miter;
129 
130  theMonitors.push_back(newMonitor);
131  }
132 }
T getParameter(std::string const &) const
T getUntrackedParameter(std::string const &, T const &) const
const bool doMisalignmentScenario_
AlignmentAlgorithmBase * theAlignmentAlgo
virtual boost::shared_ptr< TrackerGeometry > produceTracker(const TrackerDigiGeometryRecord &iRecord)
Produce the tracker geometry.
std::vector< ParameterSet > VParameterSet
Definition: ParameterSet.h:33
virtual boost::shared_ptr< DTGeometry > produceDT(const MuonGeometryRecord &iRecord)
Produce the muon DT geometry.
edm::ParameterSet theParameterSet
const edm::InputTag tkLasBeamTag_
void setWhatProduced(T *iThis, const es::Label &iLabel=es::Label())
Definition: ESProducer.h:115
const bool applyDbAlignment_
const unsigned int theMaxLoops
AlignableExtras * theAlignableExtras
const bool checkDbAlignmentValidity_
const edm::InputTag clusterValueMapTag_
std::vector< AlignmentMonitorBase * > theMonitors
AlignmentParameterStore * theAlignmentParameterStore
const edm::InputTag beamSpotTag_
const edm::InputTag tjTkAssociationMapTag_
AlignableMuon * theAlignableMuon
const bool saveDeformationsToDB_
const double stRandomShift_
void addUntrackedParameter(std::string const &name, T const &value)
Definition: ParameterSet.h:209
virtual boost::shared_ptr< CSCGeometry > produceCSC(const MuonGeometryRecord &iRecord)
Produce the muon CSC geometry.
AlignableTracker * theAlignableTracker
const Alignments * globalPositions_
GlobalPositions that might be read from DB, NULL otherwise.
T get(const Candidate &c)
Definition: component.h:56
const double stRandomRotation_
AlignmentProducer::~AlignmentProducer ( )

Destructor.

Definition at line 137 of file AlignmentProducer.cc.

References globalPositions_, theAlignableExtras, theAlignableMuon, theAlignableTracker, theAlignmentAlgo, and theAlignmentParameterStore.

138 {
139  delete theAlignmentAlgo;
140 
142  delete theAlignableExtras;
143  delete theAlignableTracker;
144  delete theAlignableMuon;
145 
146  delete globalPositions_;
147 }
AlignmentAlgorithmBase * theAlignmentAlgo
AlignableExtras * theAlignableExtras
AlignmentParameterStore * theAlignmentParameterStore
AlignableMuon * theAlignableMuon
AlignableTracker * theAlignableTracker
const Alignments * globalPositions_
GlobalPositions that might be read from DB, NULL otherwise.

Member Function Documentation

void AlignmentProducer::addSurveyInfo_ ( Alignable ali)
private

Add survey info to an alignable.

Definition at line 622 of file AlignmentProducer.cc.

References Alignable::alignableObjectId(), Alignable::components(), error, edm::hlt::Exception, i, Alignable::id(), AlignableSurface::length(), Alignments::m_align, SurveyErrors::m_surveyErrors, SurveyError::matrix(), pos, SurveyError::rawId(), makeMuonMisalignmentScenario::rot, AlignableSurface::setLength(), Alignable::setSurvey(), AlignableSurface::setWidth(), SurveyError::structureType(), Alignable::surface(), theSurveyErrors, theSurveyIndex, theSurveyValues, and AlignableSurface::width().

Referenced by readInSurveyRcds().

623 {
624  const std::vector<Alignable*>& comp = ali->components();
625 
626  unsigned int nComp = comp.size();
627 
628  for (unsigned int i = 0; i < nComp; ++i) addSurveyInfo_(comp[i]);
629 
631 
632  if ( ali->id() != error.rawId() ||
633  ali->alignableObjectId() != error.structureType() )
634  {
635  throw cms::Exception("DatabaseError")
636  << "Error reading survey info from DB. Mismatched id!";
637  }
638 
639  const CLHEP::Hep3Vector& pos = theSurveyValues->m_align[theSurveyIndex].translation();
640  const CLHEP::HepRotation& rot = theSurveyValues->m_align[theSurveyIndex].rotation();
641 
642  AlignableSurface surf( align::PositionType( pos.x(), pos.y(), pos.z() ),
643  align::RotationType( rot.xx(), rot.xy(), rot.xz(),
644  rot.yx(), rot.yy(), rot.yz(),
645  rot.zx(), rot.zy(), rot.zz() ) );
646 
647  surf.setWidth( ali->surface().width() );
648  surf.setLength( ali->surface().length() );
649 
650  ali->setSurvey( new SurveyDet( surf, error.matrix() ) );
651 
652  ++theSurveyIndex;
653 }
align::Scalar width() const
align::ID id() const
Return the ID of Alignable, i.e. DetId of &#39;first&#39; component GeomDet(Unit).
Definition: Alignable.h:180
int i
Definition: DBlmapReader.cc:9
ErrorMatrix matrix() const
Definition: SurveyError.h:72
const Alignments * theSurveyValues
void addSurveyInfo_(Alignable *)
Add survey info to an alignable.
uint8_t structureType() const
Definition: SurveyError.h:62
virtual Alignables components() const =0
Return vector of all direct components.
std::vector< AlignTransform > m_align
Definition: Alignments.h:14
unsigned int theSurveyIndex
virtual StructureType alignableObjectId() const =0
Return the alignable type identifier.
align::ID rawId() const
Definition: SurveyError.h:67
const AlignableSurface & surface() const
Return the Surface (global position and orientation) of the object.
Definition: Alignable.h:126
const SurveyErrors * theSurveyErrors
align::Scalar length() const
void setSurvey(const SurveyDet *)
Set survey info.
Definition: Alignable.cc:268
std::vector< SurveyError > m_surveyErrors
Definition: SurveyErrors.h:21
template<class G , class Rcd , class ErrRcd >
void AlignmentProducer::applyDB ( G *  geometry,
const edm::EventSetup iSetup,
const AlignTransform globalPosition 
) const
private

Apply DB constants belonging to (Err)Rcd to geometry, taking into account 'globalPosition' correction.

Definition at line 721 of file AlignmentProducer.cc.

References GeometryAligner::applyAlignments(), edm::IOVSyncValue::beginOfTime(), checkDbAlignmentValidity_, edm::IOVSyncValue::endOfTime(), edm::IOVSyncValue::eventID(), edm::hlt::Exception, edm::ValidityInterval::first(), first, geometry, edm::EventSetup::get(), edm::ValidityInterval::last(), prof2calltree::last, record, and edm::EventID::run().

723 {
724  // 'G' is the geometry class for that DB should be applied,
725  // 'Rcd' is the record class for its Alignments
726  // 'ErrRcd' is the record class for its AlignmentErrors
727  // 'globalCoordinates' are global transformation for this geometry
728 
729  const Rcd & record = iSetup.get<Rcd>();
731  const edm::ValidityInterval & validity = record.validityInterval();
732  const edm::IOVSyncValue first = validity.first();
733  const edm::IOVSyncValue last = validity.last();
734  if (first!=edm::IOVSyncValue::beginOfTime() ||
736  throw cms::Exception("DatabaseError")
737  << "@SUB=AlignmentProducer::applyDB"
738  << "\nTrying to apply "
739  << record.key().name()
740  << " with multiple IOVs in tag.\n"
741  << "Validity range is "
742  << first.eventID().run() << " - " << last.eventID().run();
743  }
744  }
745 
746  edm::ESHandle<Alignments> alignments;
747  record.get(alignments);
748 
749  edm::ESHandle<AlignmentErrors> alignmentErrors;
750  iSetup.get<ErrRcd>().get(alignmentErrors);
751 
752  GeometryAligner aligner;
753  aligner.applyAlignments<G>(geometry, &(*alignments), &(*alignmentErrors),
754  globalCoordinates);
755 }
RunNumber_t run() const
Definition: EventID.h:42
const EventID & eventID() const
Definition: IOVSyncValue.h:42
Class to update a given geometry with a set of alignments.
JetCorrectorParameters::Record record
Definition: classes.h:11
static const IOVSyncValue & endOfTime()
Definition: IOVSyncValue.cc:97
const IOVSyncValue & last() const
const bool checkDbAlignmentValidity_
static const IOVSyncValue & beginOfTime()
void applyAlignments(C *geometry, const Alignments *alignments, const AlignmentErrors *alignmentErrors, const AlignTransform &globalCoordinates)
bool first
Definition: L1TdeRCT.cc:94
const T & get() const
Definition: EventSetup.h:55
ESHandle< TrackerGeometry > geometry
const IOVSyncValue & first() const
template<class G , class DeformationRcd >
void AlignmentProducer::applyDB ( G *  geometry,
const edm::EventSetup iSetup 
) const
private

Apply DB constants for surface deformations.

Definition at line 762 of file AlignmentProducer.cc.

References GeometryAligner::attachSurfaceDeformations(), edm::IOVSyncValue::beginOfTime(), checkDbAlignmentValidity_, edm::IOVSyncValue::endOfTime(), edm::IOVSyncValue::eventID(), edm::hlt::Exception, edm::ValidityInterval::first(), first, geometry, edm::EventSetup::get(), edm::ValidityInterval::last(), prof2calltree::last, record, and edm::EventID::run().

763 {
764  // 'G' is the geometry class for that DB should be applied,
765  // 'DeformationRcd' is the record class for its surface deformations
766 
767  const DeformationRcd & record = iSetup.get<DeformationRcd>();
769  const edm::ValidityInterval & validity = record.validityInterval();
770  const edm::IOVSyncValue first = validity.first();
771  const edm::IOVSyncValue last = validity.last();
772  if (first!=edm::IOVSyncValue::beginOfTime() ||
774  throw cms::Exception("DatabaseError")
775  << "@SUB=AlignmentProducer::applyDB"
776  << "\nTrying to apply "
777  << record.key().name()
778  << " with multiple IOVs in tag.\n"
779  << "Validity range is "
780  << first.eventID().run() << " - " << last.eventID().run();
781  }
782  }
784  record.get(surfaceDeformations);
785 
786  GeometryAligner aligner;
787  aligner.attachSurfaceDeformations<G>(geometry, &(*surfaceDeformations));
788 }
RunNumber_t run() const
Definition: EventID.h:42
const EventID & eventID() const
Definition: IOVSyncValue.h:42
Class to update a given geometry with a set of alignments.
JetCorrectorParameters::Record record
Definition: classes.h:11
static const IOVSyncValue & endOfTime()
Definition: IOVSyncValue.cc:97
const IOVSyncValue & last() const
const bool checkDbAlignmentValidity_
static const IOVSyncValue & beginOfTime()
void attachSurfaceDeformations(C *geometry, const AlignmentSurfaceDeformations *surfaceDeformations)
bool first
Definition: L1TdeRCT.cc:94
const T & get() const
Definition: EventSetup.h:55
ESHandle< TrackerGeometry > geometry
const IOVSyncValue & first() const
void AlignmentProducer::beginLuminosityBlock ( const edm::LuminosityBlock lumiBlock,
const edm::EventSetup setup 
)
virtual

Called at lumi block start, calling algorithm's beginLuminosityBlock.

Reimplemented from edm::EDLooperBase.

Definition at line 514 of file AlignmentProducer.cc.

References AlignmentAlgorithmBase::beginLuminosityBlock(), and theAlignmentAlgo.

516 {
517  theAlignmentAlgo->beginLuminosityBlock(setup); // do not forward edm::LuminosityBlock
518 }
virtual void beginLuminosityBlock(const edm::EventSetup &setup)
called at begin of luminosity block (no lumi block info passed yet)
AlignmentAlgorithmBase * theAlignmentAlgo
void AlignmentProducer::beginOfJob ( const edm::EventSetup iSetup)
virtual

Called at beginning of job.

Reimplemented from edm::EDLooperBase.

Definition at line 180 of file AlignmentProducer.cc.

References align::AlignableMuon, AlignmentParameterStore_cfi::AlignmentParameterStore, applyDbAlignment_, MuonScenarioBuilder::applyScenario(), TrackerScenarioBuilder::applyScenario(), createGeometries_(), align::DetectorGlobalPosition(), doMisalignmentScenario_, doMuon_, doTracker_, edm::EventSetup::get(), edm::ParameterSet::getParameter(), globalPositions_, AlignmentAlgorithmBase::initialize(), DetId::Muon, simpleMisalignment_(), stNFixAlignables_, stRandomRotation_, stRandomShift_, theAlignableExtras, theAlignableMuon, theAlignableTracker, theAlignmentAlgo, theAlignmentParameterStore, theMonitors, theMuonCSC, theMuonDT, theParameterSet, theTracker, DetId::Tracker, and useExtras_.

181 {
182  edm::LogInfo("Alignment") << "@SUB=AlignmentProducer::beginOfJob";
183 
184  // Create the geometries from the ideal geometries (first time only)
185  this->createGeometries_( iSetup );
186 
187  // Retrieve and apply alignments, if requested (requires DB setup)
188  if ( applyDbAlignment_ ) {
189  // we need GlobalPositionRcd - and have to keep track for later removal
190  // before writing again to DB...
191  edm::ESHandle<Alignments> globalPositionRcd;
192  iSetup.get<GlobalPositionRcd>().get(globalPositionRcd);
193  globalPositions_ = new Alignments(*globalPositionRcd);
194 
195  if ( doTracker_ ) { // apply to tracker
196  this->applyDB<TrackerGeometry,TrackerAlignmentRcd,TrackerAlignmentErrorRcd>
197  (&(*theTracker), iSetup,
199  this->applyDB<TrackerGeometry,TrackerSurfaceDeformationRcd>(&(*theTracker), iSetup);
200  }
201 
202  if ( doMuon_ ) { // apply to tracker
203  this->applyDB<DTGeometry,DTAlignmentRcd,DTAlignmentErrorRcd>
204  (&(*theMuonDT), iSetup,
206  this->applyDB<CSCGeometry,CSCAlignmentRcd,CSCAlignmentErrorRcd>
207  (&(*theMuonCSC), iSetup,
209  }
210  }
211 
212  // Create alignable tracker and muon
213  if (doTracker_) {
214  theAlignableTracker = new AlignableTracker( &(*theTracker) );
215  }
216 
217  if (doMuon_) {
218  theAlignableMuon = new AlignableMuon( &(*theMuonDT), &(*theMuonCSC) );
219  }
220 
221  if (useExtras_) {
223  }
224 
225  // Create alignment parameter builder
226  edm::LogInfo("Alignment") << "@SUB=AlignmentProducer::beginOfJob"
227  << "Creating AlignmentParameterBuilder";
228  edm::ParameterSet aliParamBuildCfg =
229  theParameterSet.getParameter<edm::ParameterSet>("ParameterBuilder");
230  AlignmentParameterBuilder alignmentParameterBuilder(theAlignableTracker,
233  aliParamBuildCfg );
234  // Fix alignables if requested
235  if (stNFixAlignables_>0) alignmentParameterBuilder.fixAlignables(stNFixAlignables_);
236 
237  // Get list of alignables
238  Alignables theAlignables = alignmentParameterBuilder.alignables();
239  edm::LogInfo("Alignment") << "@SUB=AlignmentProducer::beginOfJob"
240  << "got " << theAlignables.size() << " alignables";
241 
242  // Create AlignmentParameterStore
243  edm::ParameterSet aliParamStoreCfg =
245  theAlignmentParameterStore = new AlignmentParameterStore(theAlignables, aliParamStoreCfg);
246  edm::LogInfo("Alignment") << "@SUB=AlignmentProducer::beginOfJob"
247  << "AlignmentParameterStore created!";
248 
249  // Apply misalignment scenario to alignable tracker and muon if requested
250  // WARNING: this assumes scenarioConfig can be passed to both muon and tracker
252  edm::LogInfo("Alignment") << "@SUB=AlignmentProducer::beginOfJob"
253  << "Applying misalignment scenario to "
254  << (doTracker_ ? "tracker" : "")
255  << (doMuon_ ? (doTracker_ ? " and muon" : "muon") : ".");
256  edm::ParameterSet scenarioConfig
257  = theParameterSet.getParameter<edm::ParameterSet>( "MisalignmentScenario" );
258  if (doTracker_) {
259  TrackerScenarioBuilder scenarioBuilder( theAlignableTracker );
260  scenarioBuilder.applyScenario( scenarioConfig );
261  }
262  if (doMuon_) {
263  MuonScenarioBuilder muonScenarioBuilder( theAlignableMuon );
264  muonScenarioBuilder.applyScenario( scenarioConfig );
265  }
266  } else {
267  edm::LogInfo("Alignment") << "@SUB=AlignmentProducer::beginOfJob"
268  << "NOT applying misalignment scenario!";
269  }
270 
271  // Apply simple misalignment
272  const std::string sParSel(theParameterSet.getParameter<std::string>("parameterSelectorSimple"));
273  this->simpleMisalignment_(theAlignables, sParSel, stRandomShift_, stRandomRotation_, true);
274 
275  // Initialize alignment algorithm
276  theAlignmentAlgo->initialize( iSetup,
278  theAlignmentParameterStore );
279 
280  for (std::vector<AlignmentMonitorBase*>::const_iterator monitor = theMonitors.begin();
281  monitor != theMonitors.end(); ++monitor) {
282  (*monitor)->beginOfJob(theAlignableTracker, theAlignableMuon, theAlignmentParameterStore);
283  }
284 }
std::vector< Alignable * > Alignables
T getParameter(std::string const &) const
const bool doMisalignmentScenario_
Builds a scenario from configuration and applies it to the alignable Muon.
AlignmentAlgorithmBase * theAlignmentAlgo
void simpleMisalignment_(const Alignables &alivec, const std::string &selection, float shift, float rot, bool local)
Apply random shifts and rotations to selected alignables, according to configuration.
edm::ParameterSet theParameterSet
void createGeometries_(const edm::EventSetup &)
Create tracker and muon geometries.
const bool applyDbAlignment_
AlignableExtras * theAlignableExtras
boost::shared_ptr< CSCGeometry > theMuonCSC
std::vector< AlignmentMonitorBase * > theMonitors
AlignmentParameterStore * theAlignmentParameterStore
virtual void initialize(const edm::EventSetup &setup, AlignableTracker *tracker, AlignableMuon *muon, AlignableExtras *extras, AlignmentParameterStore *store)=0
Call at beginning of job (must be implemented in derived class)
Definition: DetId.h:20
AlignableMuon * theAlignableMuon
const double stRandomShift_
const T & get() const
Definition: EventSetup.h:55
AlignableTracker * theAlignableTracker
const AlignTransform & DetectorGlobalPosition(const Alignments &allGlobals, const DetId &id)
Builds a scenario from configuration and applies it to the alignable tracker.
const Alignments * globalPositions_
GlobalPositions that might be read from DB, NULL otherwise.
const double stRandomRotation_
void AlignmentProducer::beginRun ( const edm::Run run,
const edm::EventSetup setup 
)
virtual

Called at run start and calling algorithms beginRun.

Reimplemented from edm::EDLooperBase.

Definition at line 489 of file AlignmentProducer.cc.

References AlignmentAlgorithmBase::beginRun(), and theAlignmentAlgo.

490 {
491  theAlignmentAlgo->beginRun(setup); // do not forward edm::Run...
492 }
virtual void beginRun(const edm::EventSetup &setup)
called at begin of run
AlignmentAlgorithmBase * theAlignmentAlgo
void AlignmentProducer::createGeometries_ ( const edm::EventSetup iSetup)
private

Create tracker and muon geometries.

Definition at line 598 of file AlignmentProducer.cc.

References TrackerGeomBuilderFromGeometricDet::build(), CSCGeometryBuilderFromDDD::build(), DTGeometryBuilderFromDDD::build(), doMuon_, doTracker_, edm::EventSetup::get(), theMuonCSC, theMuonDT, and theTracker.

Referenced by beginOfJob().

599 {
601  iSetup.get<IdealGeometryRecord>().get( cpv );
602 
603  if (doTracker_) {
604  edm::ESHandle<GeometricDet> geometricDet;
605  iSetup.get<IdealGeometryRecord>().get( geometricDet );
606  TrackerGeomBuilderFromGeometricDet trackerBuilder;
607  theTracker = boost::shared_ptr<TrackerGeometry>( trackerBuilder.build(&(*geometricDet)) );
608  }
609 
610  if (doMuon_) {
612  iSetup.get<MuonNumberingRecord>().get(mdc);
613  DTGeometryBuilderFromDDD DTGeometryBuilder;
615  theMuonDT = boost::shared_ptr<DTGeometry>(new DTGeometry );
616  DTGeometryBuilder.build( theMuonDT, &(*cpv), *mdc);
617  theMuonCSC = boost::shared_ptr<CSCGeometry>( new CSCGeometry );
618  CSCGeometryBuilder.build( theMuonCSC, &(*cpv), *mdc );
619  }
620 }
boost::shared_ptr< TrackerGeometry > theTracker
void build(boost::shared_ptr< CSCGeometry > geom, const DDCompactView *fv, const MuonDDDConstants &muonConstants)
Build the geometry.
boost::shared_ptr< CSCGeometry > theMuonCSC
boost::shared_ptr< DTGeometry > theMuonDT
void build(boost::shared_ptr< DTGeometry > theGeometry, const DDCompactView *cview, const MuonDDDConstants &muonConstants)
const T & get() const
Definition: EventSetup.h:55
TrackerGeometry * build(const GeometricDet *gd)
edm::EDLooper::Status AlignmentProducer::duringLoop ( const edm::Event event,
const edm::EventSetup setup 
)
virtual

Called at each event.

Implements edm::EDLooper.

Definition at line 427 of file AlignmentProducer.cc.

References SiPixelRawToDigiRegional_cfi::beamSpot, beamSpotTag_, clusterValueMapTag_, edm::InputTag::encode(), ZMuMuCategoriesSequences_cff::eventInfo, edm::Event::getByLabel(), i, edm::EventBase::id(), AlignableExtras::initializeBeamSpot(), edm::EDLooperBase::kContinue, nevent_, readInSurveyRcds(), AlignmentAlgorithmBase::run(), theAlignableExtras, theAlignmentAlgo, theMonitors, and tjTkAssociationMapTag_.

429 {
430  ++nevent_;
431 
432  // reading in survey records
433  this->readInSurveyRcds(setup);
434 
435  // Printout event number
436  for ( int i=10; i<10000000; i*=10 )
437  if ( nevent_<10*i && (nevent_%i)==0 )
438  edm::LogInfo("Alignment") << "@SUB=AlignmentProducer::duringLoop"
439  << "Events processed: " << nevent_;
440 
441  // Retrieve trajectories and tracks from the event
442  // -> merely skip if collection is empty
444  if (event.getByLabel(tjTkAssociationMapTag_, m_TrajTracksMap)) {
445 
446  // Form pairs of trajectories and tracks
447  ConstTrajTrackPairCollection trajTracks;
448  for ( TrajTrackAssociationCollection::const_iterator iPair = m_TrajTracksMap->begin();
449  iPair != m_TrajTracksMap->end(); ++iPair) {
450  trajTracks.push_back( ConstTrajTrackPair( &(*(*iPair).key), &(*(*iPair).val) ) );
451  }
453  event.getByLabel(beamSpotTag_, beamSpot);
454 
455  if (nevent_==1 && theAlignableExtras) {
456  edm::LogInfo("Alignment") << "@SUB=AlignmentProducer::duringLoop"
457  << "initializing AlignableBeamSpot" << std::endl;
458  theAlignableExtras->initializeBeamSpot(beamSpot->x0(), beamSpot->y0(), beamSpot->z0(),
459  beamSpot->dxdz(), beamSpot->dydz());
460  }
461 
462  // Run the alignment algorithm with its input
463  const AliClusterValueMap *clusterValueMapPtr = 0;
464  if(clusterValueMapTag_.encode().size()){//check that the input tag is not empty
465  edm::Handle<AliClusterValueMap> clusterValueMap;
466  event.getByLabel(clusterValueMapTag_, clusterValueMap);
467  clusterValueMapPtr = &(*clusterValueMap);
468  }
469 
470  const AlignmentAlgorithmBase::EventInfo eventInfo(event.id(), trajTracks, *beamSpot,
471  clusterValueMapPtr);
472  theAlignmentAlgo->run(setup, eventInfo);
473 
474 
475  for (std::vector<AlignmentMonitorBase*>::const_iterator monitor = theMonitors.begin();
476  monitor != theMonitors.end(); ++monitor) {
477  (*monitor)->duringLoop(event, setup, trajTracks); // forward eventInfo?
478  }
479  } else {
480  edm::LogError("Alignment") << "@SUB=AlignmentProducer::duringLoop"
481  << "No track collection found: skipping event";
482  }
483 
484 
485  return kContinue;
486 }
int i
Definition: DBlmapReader.cc:9
virtual void run(const edm::EventSetup &setup, const EventInfo &eventInfo)=0
Run the algorithm (must be implemented in derived class)
AlignmentAlgorithmBase * theAlignmentAlgo
void readInSurveyRcds(const edm::EventSetup &)
read in survey records
std::string encode() const
Definition: InputTag.cc:72
define event information passed to algorithms
AlignableExtras * theAlignableExtras
const edm::InputTag clusterValueMapTag_
std::vector< AlignmentMonitorBase * > theMonitors
void initializeBeamSpot(double x, double y, double z, double dxdz, double dydz)
Initialize the alignable beam spot with the given parameters.
const edm::InputTag beamSpotTag_
bool getByLabel(InputTag const &tag, Handle< PROD > &result) const
Definition: Event.h:356
const edm::InputTag tjTkAssociationMapTag_
std::vector< ConstTrajTrackPair > ConstTrajTrackPairCollection
edm::EventID id() const
Definition: EventBase.h:56
std::pair< const Trajectory *, const reco::Track * > ConstTrajTrackPair
void AlignmentProducer::endLuminosityBlock ( const edm::LuminosityBlock lumiBlock,
const edm::EventSetup setup 
)
virtual

Called at lumi block end, calling algorithm's endLuminosityBlock.

Reimplemented from edm::EDLooperBase.

Definition at line 521 of file AlignmentProducer.cc.

References AlignmentAlgorithmBase::endLuminosityBlock(), and theAlignmentAlgo.

523 {
524  theAlignmentAlgo->endLuminosityBlock(setup); // do not forward edm::LuminosityBlock
525 }
AlignmentAlgorithmBase * theAlignmentAlgo
virtual void endLuminosityBlock(const edm::EventSetup &setup)
called at end of luminosity block (no lumi block info passed yet)
void AlignmentProducer::endOfJob ( )
virtual

Called at end of job.

Reimplemented from edm::EDLooperBase.

Definition at line 288 of file AlignmentProducer.cc.

References AlignableExtras::beamSpot(), edm::ParameterSet::getParameter(), makeNonOverlappingRunRanges(), nevent_, AlignmentParameters::parameters(), cond::runnumber, saveApeToDB_, saveDeformationsToDB_, saveToDB_, AlignmentAlgorithmBase::setParametersForRunRange(), theAlignableExtras, theAlignmentAlgo, theMonitors, theParameterSet, cond::timeTypeSpecs, and writeForRunRange().

289 {
290  edm::LogInfo("Alignment") << "@SUB=AlignmentProducer::endOfJob";
291 
292  for (std::vector<AlignmentMonitorBase*>::const_iterator monitor = theMonitors.begin(); monitor != theMonitors.end(); ++monitor) {
293  (*monitor)->endOfJob();
294  }
295 
296  if (0 == nevent_) {
297  edm::LogError("Alignment") << "@SUB=AlignmentProducer::endOfJob" << "Did not process any "
298  << "events in last loop, do not dare to store to DB.";
299  } else {
300 
301  // Expand run ranges and make them unique
302  edm::VParameterSet runRangeSelectionVPSet(theParameterSet.getParameter<edm::VParameterSet>("RunRangeSelection"));
303  RunRanges uniqueRunRanges(this->makeNonOverlappingRunRanges(runRangeSelectionVPSet));
304  if (uniqueRunRanges.empty()) { // create dummy IOV
305  const RunRange runRange(cond::timeTypeSpecs[cond::runnumber].beginValue,
307  uniqueRunRanges.push_back(runRange);
308  }
309 
310  std::vector<AlgebraicVector> beamSpotParameters;
311 
312  for (RunRanges::const_iterator iRunRange = uniqueRunRanges.begin();
313  iRunRange != uniqueRunRanges.end();
314  ++iRunRange) {
315 
317 
318  // Save alignments to database
320  this->writeForRunRange((*iRunRange).first);
321 
322  // Deal with extra alignables, e.g. beam spot
323  if (theAlignableExtras) {
325  if (!alis.empty()) {
326  BeamSpotAlignmentParameters *beamSpotAliPars = dynamic_cast<BeamSpotAlignmentParameters*>(alis[0]->alignmentParameters());
327  beamSpotParameters.push_back(beamSpotAliPars->parameters());
328  }
329  }
330  }
331 
332  if (theAlignableExtras) {
333  std::ostringstream bsOutput;
334 
335  std::vector<AlgebraicVector>::const_iterator itPar = beamSpotParameters.begin();
336  for (RunRanges::const_iterator iRunRange = uniqueRunRanges.begin();
337  iRunRange != uniqueRunRanges.end();
338  ++iRunRange, ++itPar) {
339  bsOutput << "Run range: " << (*iRunRange).first << " - " << (*iRunRange).second << "\n";
340  bsOutput << " Displacement: x=" << (*itPar)[0] << ", y=" << (*itPar)[1] << "\n";
341  bsOutput << " Slope: dx/dz=" << (*itPar)[2] << ", dy/dz=" << (*itPar)[3] << "\n";
342  }
343 
344  edm::LogInfo("Alignment") << "@SUB=AlignmentProducer::endOfJob"
345  << "Parameters for alignable beamspot:\n"
346  << bsOutput.str();
347  }
348 
349  }
350 }
std::vector< Alignable * > Alignables
const TimeTypeSpecs timeTypeSpecs[]
Definition: Time.cc:22
T getParameter(std::string const &) const
AlignmentAlgorithmBase * theAlignmentAlgo
std::vector< ParameterSet > VParameterSet
Definition: ParameterSet.h:33
edm::ParameterSet theParameterSet
const AlgebraicVector & parameters(void) const
Get alignment parameters.
AlignableExtras * theAlignableExtras
virtual bool setParametersForRunRange(const RunRange &rr)
std::vector< AlignmentMonitorBase * > theMonitors
RunRanges makeNonOverlappingRunRanges(const edm::VParameterSet &RunRangeSelectionVPSet)
const bool saveDeformationsToDB_
void writeForRunRange(cond::Time_t time)
Alignables & beamSpot()
Return beam spot alignable as a vector with one element.
AlignmentAlgorithmBase::RunRange RunRange
std::vector< RunRange > RunRanges
edm::EDLooper::Status AlignmentProducer::endOfLoop ( const edm::EventSetup iSetup,
unsigned int  iLoop 
)
virtual

Called at end of loop.

Implements edm::EDLooperBase.

Definition at line 396 of file AlignmentProducer.cc.

References edm::EDLooperBase::kContinue, edm::EDLooperBase::kStop, nevent_, AlignmentAlgorithmBase::terminate(), theAlignmentAlgo, theMaxLoops, and theMonitors.

397 {
398 
399  if (0 == nevent_) {
400  // beginOfJob is usually called by the framework in the first event of the first loop
401  // (a hack: beginOfJob needs the EventSetup that is not well defined without an event)
402  // and the algorithms rely on the initialisations done in beginOfJob. We cannot call
403  // this->beginOfJob(iSetup); here either since that will access the EventSetup to get
404  // some geometry information that is not defined either without having seen an event.
405  edm::LogError("Alignment") << "@SUB=AlignmentProducer::endOfLoop"
406  << "Did not process any events in loop " << iLoop
407  << ", stop processing without terminating algorithm.";
408  return kStop;
409  }
410 
411  edm::LogInfo("Alignment") << "@SUB=AlignmentProducer::endOfLoop"
412  << "Ending loop " << iLoop << ", terminating algorithm.";
413 
415 
416  for (std::vector<AlignmentMonitorBase*>::const_iterator monitor = theMonitors.begin(); monitor != theMonitors.end(); ++monitor) {
417  (*monitor)->endOfLoop(iSetup);
418  }
419 
420  if ( iLoop == theMaxLoops-1 || iLoop >= theMaxLoops ) return kStop;
421  else return kContinue;
422 }
virtual void terminate()=0
Call at end of job (must be implemented in derived class)
AlignmentAlgorithmBase * theAlignmentAlgo
const unsigned int theMaxLoops
std::vector< AlignmentMonitorBase * > theMonitors
void AlignmentProducer::endRun ( const edm::Run run,
const edm::EventSetup setup 
)
virtual

Called at run end - currently reading TkFittedLasBeam if an InpuTag is given for that.

Reimplemented from edm::EDLooperBase.

Definition at line 495 of file AlignmentProducer.cc.

References edm::InputTag::encode(), AlignmentAlgorithmBase::endRun(), edm::Run::getByLabel(), edm::RunBase::id(), theAlignmentAlgo, and tkLasBeamTag_.

496 {
497  // call with or without las beam info...
498  typedef AlignmentAlgorithmBase::EndRunInfo EndRunInfo;
499  if (tkLasBeamTag_.encode().size()) { // non-empty InputTag
502  run.getByLabel(tkLasBeamTag_, lasBeams);
503  run.getByLabel(tkLasBeamTag_, tsoses);
504 
505  theAlignmentAlgo->endRun(EndRunInfo(run.id(), &(*lasBeams), &(*tsoses)), setup);
506  } else {
507  edm::LogInfo("Alignment") << "@SUB=AlignmentProducer::endRun"
508  << "No Tk LAS beams to forward to algorithm.";
509  theAlignmentAlgo->endRun(EndRunInfo(run.id(), 0, 0), setup);
510  }
511 }
bool getByLabel(std::string const &label, Handle< PROD > &result) const
Definition: Run.h:177
RunID const & id() const
Definition: RunBase.h:41
AlignmentAlgorithmBase * theAlignmentAlgo
const edm::InputTag tkLasBeamTag_
std::string encode() const
Definition: InputTag.cc:72
virtual void endRun(const EndRunInfo &runInfo, const edm::EventSetup &setup)
called at end of run - order of arguments like in EDProducer etc.
define run information passed to algorithms (in endRun)
AlignmentProducer::RunRanges AlignmentProducer::makeNonOverlappingRunRanges ( const edm::VParameterSet RunRangeSelectionVPSet)
private

Definition at line 912 of file AlignmentProducer.cc.

References cond::TimeTypeSpecs::beginValue, cond::TimeTypeSpecs::endValue, first, i, cond::runnumber, groupFilesInBlocks::temp, cond::timeTypeSpecs, and edm::tokenize().

Referenced by endOfJob().

913 {
914  static bool oldRunRangeSelectionWarning = false;
915 
918 
919  RunRanges uniqueRunRanges;
920  if (!RunRangeSelectionVPSet.empty()) {
921 
922  std::map<RunNumber,RunNumber> uniqueFirstRunNumbers;
923 
924  for (std::vector<edm::ParameterSet>::const_iterator ipset = RunRangeSelectionVPSet.begin();
925  ipset != RunRangeSelectionVPSet.end();
926  ++ipset) {
927  const std::vector<std::string> RunRangeStrings = (*ipset).getParameter<std::vector<std::string> >("RunRanges");
928  for (std::vector<std::string>::const_iterator irange = RunRangeStrings.begin();
929  irange != RunRangeStrings.end();
930  ++irange) {
931 
932  if ((*irange).find(':')==std::string::npos) {
933 
934  RunNumber first = beginValue;
935  long int temp = strtol((*irange).c_str(), 0, 0);
936  if (temp!=-1) first = temp;
937  uniqueFirstRunNumbers[first] = first;
938 
939  } else {
940 
941  if (!oldRunRangeSelectionWarning) {
942  edm::LogWarning("BadConfig") << "@SUB=AlignmentProducer::makeNonOverlappingRunRanges"
943  << "Config file contains old format for 'RunRangeSelection'. Only the start run\n"
944  << "number is used internally. The number of the last run is ignored and can be\n"
945  << "safely removed from the config file.\n";
946  oldRunRangeSelectionWarning = true;
947  }
948 
949  std::vector<std::string> tokens = edm::tokenize(*irange, ":");
950  long int temp;
951  RunNumber first = beginValue;
952  temp = strtol(tokens[0].c_str(), 0, 0);
953  if (temp!=-1) first = temp;
954  uniqueFirstRunNumbers[first] = first;
955  }
956  }
957  }
958 
959  for (std::map<RunNumber,RunNumber>::iterator iFirst = uniqueFirstRunNumbers.begin();
960  iFirst!=uniqueFirstRunNumbers.end();
961  ++iFirst) {
962  uniqueRunRanges.push_back(std::pair<RunNumber,RunNumber>((*iFirst).first, endValue));
963  }
964  for (unsigned int i = 0;i<uniqueRunRanges.size()-1;++i) {
965  uniqueRunRanges[i].second = uniqueRunRanges[i+1].first - 1;
966  }
967 
968  } else {
969 
970  uniqueRunRanges.push_back(std::pair<RunNumber,RunNumber>(beginValue, endValue));
971 
972  }
973 
974  return uniqueRunRanges;
975 }
const TimeTypeSpecs timeTypeSpecs[]
Definition: Time.cc:22
int i
Definition: DBlmapReader.cc:9
Time_t beginValue
Definition: Time.h:45
AlignmentAlgorithmBase::RunNumber RunNumber
bool first
Definition: L1TdeRCT.cc:94
std::vector< std::string > tokenize(std::string const &input, std::string const &separator)
breaks the input string into tokens, delimited by the separator
Definition: Parse.cc:57
Time_t endValue
Definition: Time.h:46
std::vector< RunRange > RunRanges
boost::shared_ptr< CSCGeometry > AlignmentProducer::produceCSC ( const MuonGeometryRecord iRecord)
virtual

Produce the muon CSC geometry.

Definition at line 171 of file AlignmentProducer.cc.

References theMuonCSC.

Referenced by AlignmentProducer().

172 {
173  edm::LogInfo("Alignment") << "@SUB=AlignmentProducer::produceCSC";
174  return theMuonCSC;
175 }
boost::shared_ptr< CSCGeometry > theMuonCSC
boost::shared_ptr< DTGeometry > AlignmentProducer::produceDT ( const MuonGeometryRecord iRecord)
virtual

Produce the muon DT geometry.

Definition at line 162 of file AlignmentProducer.cc.

References theMuonDT.

Referenced by AlignmentProducer().

163 {
164  edm::LogInfo("Alignment") << "@SUB=AlignmentProducer::produceDT";
165  return theMuonDT;
166 }
boost::shared_ptr< DTGeometry > theMuonDT
boost::shared_ptr< TrackerGeometry > AlignmentProducer::produceTracker ( const TrackerDigiGeometryRecord iRecord)
virtual

Produce the tracker geometry.

Definition at line 153 of file AlignmentProducer.cc.

References theTracker.

Referenced by AlignmentProducer().

154 {
155  edm::LogInfo("Alignment") << "@SUB=AlignmentProducer::produceTracker";
156  return theTracker;
157 }
boost::shared_ptr< TrackerGeometry > theTracker
void AlignmentProducer::readInSurveyRcds ( const edm::EventSetup iSetup)
private

read in survey records

Definition at line 655 of file AlignmentProducer.cc.

References addSurveyInfo_(), edm::ESWatcher< T >::check(), AlignableMuon::CSCEndcaps(), doMuon_, doTracker_, AlignableMuon::DTBarrel(), edm::EventSetup::get(), theAlignableMuon, theAlignableTracker, theSurveyErrors, theSurveyIndex, theSurveyValues, useSurvey_, watchTkSurveyErrRcd_, and watchTkSurveyRcd_.

Referenced by duringLoop().

655  {
656 
657  // Get Survey Rcds and add Survey Info
658  if ( doTracker_ && useSurvey_ ){
659  bool tkSurveyBool = watchTkSurveyRcd_.check(iSetup);
660  bool tkSurveyErrBool = watchTkSurveyErrRcd_.check(iSetup);
661  edm::LogInfo("Alignment") << "watcher tksurveyrcd: " << tkSurveyBool;
662  edm::LogInfo("Alignment") << "watcher tksurveyerrrcd: " << tkSurveyErrBool;
663  if ( tkSurveyBool || tkSurveyErrBool){
664 
665  edm::LogInfo("Alignment") << "ADDING THE SURVEY INFORMATION";
667  edm::ESHandle<SurveyErrors> surveyErrors;
668 
669  iSetup.get<TrackerSurveyRcd>().get(surveys);
670  iSetup.get<TrackerSurveyErrorRcd>().get(surveyErrors);
671 
672  theSurveyIndex = 0;
673  theSurveyValues = &*surveys;
674  theSurveyErrors = &*surveyErrors;
676  }
677  }
678 
679  if ( doMuon_ && useSurvey_) {
680  bool DTSurveyBool = watchTkSurveyRcd_.check(iSetup);
681  bool DTSurveyErrBool = watchTkSurveyErrRcd_.check(iSetup);
682  bool CSCSurveyBool = watchTkSurveyRcd_.check(iSetup);
683  bool CSCSurveyErrBool = watchTkSurveyErrRcd_.check(iSetup);
684 
685  if ( DTSurveyBool || DTSurveyErrBool || CSCSurveyBool || CSCSurveyErrBool ){
686  edm::ESHandle<Alignments> dtSurveys;
687  edm::ESHandle<SurveyErrors> dtSurveyErrors;
688  edm::ESHandle<Alignments> cscSurveys;
689  edm::ESHandle<SurveyErrors> cscSurveyErrors;
690 
691  iSetup.get<DTSurveyRcd>().get(dtSurveys);
692  iSetup.get<DTSurveyErrorRcd>().get(dtSurveyErrors);
693  iSetup.get<CSCSurveyRcd>().get(cscSurveys);
694  iSetup.get<CSCSurveyErrorRcd>().get(cscSurveyErrors);
695 
696  theSurveyIndex = 0;
697  theSurveyValues = &*dtSurveys;
698  theSurveyErrors = &*dtSurveyErrors;
699  std::vector<Alignable*> barrels = theAlignableMuon->DTBarrel();
700  for (std::vector<Alignable*>::const_iterator iter = barrels.begin(); iter != barrels.end(); ++iter) {
701  addSurveyInfo_(*iter);
702  }
703 
704  theSurveyIndex = 0;
705  theSurveyValues = &*cscSurveys;
706  theSurveyErrors = &*cscSurveyErrors;
707  std::vector<Alignable*> endcaps = theAlignableMuon->CSCEndcaps();
708  for (std::vector<Alignable*>::const_iterator iter = endcaps.begin(); iter != endcaps.end(); ++iter) {
709  addSurveyInfo_(*iter);
710  }
711  }
712  }
713 
714 }
align::Alignables DTBarrel()
const Alignments * theSurveyValues
void addSurveyInfo_(Alignable *)
Add survey info to an alignable.
align::Alignables CSCEndcaps()
unsigned int theSurveyIndex
const SurveyErrors * theSurveyErrors
edm::ESWatcher< TrackerSurveyErrorRcd > watchTkSurveyErrRcd_
AlignableMuon * theAlignableMuon
const T & get() const
Definition: EventSetup.h:55
bool check(const edm::EventSetup &iSetup)
Definition: ESWatcher.h:59
edm::ESWatcher< TrackerSurveyRcd > watchTkSurveyRcd_
AlignableTracker * theAlignableTracker
void AlignmentProducer::simpleMisalignment_ ( const Alignables alivec,
const std::string &  selection,
float  shift,
float  rot,
bool  local 
)
private

Apply random shifts and rotations to selected alignables, according to configuration.

Definition at line 529 of file AlignmentProducer.cc.

References abs, Alignable::alignmentParameters(), AlignmentParameterSelector::convertParamSel(), RigidBodyAlignmentParameters::dalpha, RigidBodyAlignmentParameters::dbeta, RigidBodyAlignmentParameters::dgamma, RigidBodyAlignmentParameters::dx, RigidBodyAlignmentParameters::dy, RigidBodyAlignmentParameters::dz, edm::hlt::Exception, Alignable::move(), RigidBodyAlignmentParameters::N_PARAM, convertSQLitetoXML_cfg::output, alignCSCRings::r, random, Alignable::rotateInGlobalFrame(), Alignable::rotateInLocalFrame(), indexGen::s2, AlignmentParameters::selector(), Alignable::surface(), AlignableSurface::toGlobal(), and align::toMatrix().

Referenced by beginOfJob().

531 {
532 
533  std::ostringstream output; // collecting output
534 
535  if (shift > 0. || rot > 0.) {
536  output << "Adding random flat shift of max size " << shift
537  << " and adding random flat rotation of max size " << rot <<" to ";
538 
539  std::vector<bool> commSel(0);
540  if (selection != "-1") {
541  AlignmentParameterSelector aSelector(0,0); // no alignable needed here...
542  const std::vector<char> cSel(aSelector.convertParamSel(selection));
543  if (cSel.size() < RigidBodyAlignmentParameters::N_PARAM) {
544  throw cms::Exception("BadConfig")
545  << "[AlignmentProducer::simpleMisalignment_]\n"
546  << "Expect selection string '" << selection << "' to be at least of length "
547  << RigidBodyAlignmentParameters::N_PARAM << " or to be '-1'.\n"
548  << "(Most probably you have to adjust the parameter 'parameterSelectorSimple'.)";
549  }
550  for (std::vector<char>::const_iterator cIter = cSel.begin(); cIter != cSel.end(); ++cIter) {
551  commSel.push_back(*cIter == '0' ? false : true);
552  }
553  output << "parameters defined by (" << selection
554  << "), representing (x,y,z,alpha,beta,gamma),";
555  } else {
556  output << "the active parameters of each alignable,";
557  }
558  output << " in " << (local ? "local" : "global") << " frame.";
559 
560  for (std::vector<Alignable*>::const_iterator it = alivec.begin(); it != alivec.end(); ++it) {
561  Alignable* ali=(*it);
562  std::vector<bool> mysel(commSel.empty() ? ali->alignmentParameters()->selector() : commSel);
563 
564  if (std::abs(shift)>0.00001) {
565  double s0 = 0., s1 = 0., s2 = 0.;
566  if (mysel[RigidBodyAlignmentParameters::dx]) s0 = shift * double(random()%1000-500)/500.;
567  if (mysel[RigidBodyAlignmentParameters::dy]) s1 = shift * double(random()%1000-500)/500.;
568  if (mysel[RigidBodyAlignmentParameters::dz]) s2 = shift * double(random()%1000-500)/500.;
569 
570  if (local) ali->move( ali->surface().toGlobal(align::LocalVector(s0,s1,s2)) );
571  else ali->move( align::GlobalVector(s0,s1,s2) );
572 
573  //AlignmentPositionError ape(dx,dy,dz);
574  //ali->addAlignmentPositionError(ape);
575  }
576 
577  if (std::abs(rot)>0.00001) {
579  if (mysel[RigidBodyAlignmentParameters::dalpha]) r(1)=rot*double(random()%1000-500)/500.;
580  if (mysel[RigidBodyAlignmentParameters::dbeta]) r(2)=rot*double(random()%1000-500)/500.;
581  if (mysel[RigidBodyAlignmentParameters::dgamma]) r(3)=rot*double(random()%1000-500)/500.;
582 
583  const align::RotationType mrot = align::toMatrix(r);
584  if (local) ali->rotateInLocalFrame(mrot);
585  else ali->rotateInGlobalFrame(mrot);
586 
587  //ali->addAlignmentPositionErrorFromRotation(mrot);
588  }
589  } // end loop on alignables
590  } else {
591  output << "No simple misalignment added!";
592  }
593  edm::LogInfo("Alignment") << "@SUB=AlignmentProducer::simpleMisalignment_" << output.str();
594 }
virtual void rotateInLocalFrame(const RotationType &rotation)
Rotation intepreted in the local reference frame.
Definition: Alignable.cc:91
selection
main part
Definition: corrVsCorr.py:98
#define abs(x)
Definition: mlp_lapack.h:159
virtual void move(const GlobalVector &displacement)=0
Movement with respect to the global reference frame.
const std::vector< bool > & selector(void) const
Get alignment parameter selector vector.
TRandom random
Definition: MVATrainer.cc:138
AlignmentParameters * alignmentParameters() const
Get the AlignmentParameters.
Definition: Alignable.h:57
tuple s2
Definition: indexGen.py:106
const AlignableSurface & surface() const
Return the Surface (global position and orientation) of the object.
Definition: Alignable.h:126
AlgebraicVector EulerAngles
Definition: Definitions.h:36
virtual void rotateInGlobalFrame(const RotationType &rotation)=0
align::GlobalPoints toGlobal(const align::LocalPoints &) const
Return in global coord given a set of local points.
RotationType toMatrix(const EulerAngles &)
Convert rotation angles about x-, y-, z-axes to matrix.
Definition: Utilities.cc:40
static unsigned int const shift
void AlignmentProducer::startingNewLoop ( unsigned int  iLoop)
virtual

Called at beginning of loop.

Implements edm::EDLooperBase.

Definition at line 354 of file AlignmentProducer.cc.

References AlignableTracker::alignmentErrors(), AlignableTracker::alignments(), GeometryAligner::applyAlignments(), GeometryAligner::attachSurfaceDeformations(), AlignableMuon::cscAlignmentErrors(), AlignableMuon::cscAlignments(), doMuon_, doTracker_, AlignableMuon::dtAlignmentErrors(), AlignableMuon::dtAlignments(), nevent_, AlignmentAlgorithmBase::startNewLoop(), Alignable::surfaceDeformations(), theAlignableMuon, theAlignableTracker, theAlignmentAlgo, and theMonitors.

355 {
356  edm::LogInfo("Alignment") << "@SUB=AlignmentProducer::startingNewLoop"
357  << "Starting loop number " << iLoop;
358 
359  nevent_ = 0;
360 
362 
363  for (std::vector<AlignmentMonitorBase*>::const_iterator monitor = theMonitors.begin(); monitor != theMonitors.end(); ++monitor) {
364  (*monitor)->startingNewLoop();
365  }
366 
367  edm::LogInfo("Alignment") << "@SUB=AlignmentProducer::startingNewLoop"
368  << "Now physically apply alignments to geometry...";
369 
370 
371  // Propagate changes to reconstruction geometry (from initialisation or iteration)
372  GeometryAligner aligner;
373  if ( doTracker_ ) {
374  std::auto_ptr<Alignments> alignments(theAlignableTracker->alignments());
375  std::auto_ptr<AlignmentErrors> alignmentErrors(theAlignableTracker->alignmentErrors());
376  aligner.applyAlignments<TrackerGeometry>( &(*theTracker),&(*alignments),&(*alignmentErrors), AlignTransform() ); // don't apply global a second time!
377  std::auto_ptr<AlignmentSurfaceDeformations> aliDeforms(theAlignableTracker->surfaceDeformations());
378  aligner.attachSurfaceDeformations<TrackerGeometry>(&(*theTracker), &(*aliDeforms));
379 
380  }
381  if ( doMuon_ ) {
382  std::auto_ptr<Alignments> dtAlignments( theAlignableMuon->dtAlignments());
383  std::auto_ptr<AlignmentErrors> dtAlignmentErrors( theAlignableMuon->dtAlignmentErrors());
384  std::auto_ptr<Alignments> cscAlignments( theAlignableMuon->cscAlignments());
385  std::auto_ptr<AlignmentErrors> cscAlignmentErrors( theAlignableMuon->cscAlignmentErrors());
386 
387  aligner.applyAlignments<DTGeometry>( &(*theMuonDT), &(*dtAlignments), &(*dtAlignmentErrors), AlignTransform() ); // don't apply global a second time!
388  aligner.applyAlignments<CSCGeometry>( &(*theMuonCSC), &(*cscAlignments), &(*cscAlignmentErrors), AlignTransform() ); // nope!
389  }
390 }
AlignmentErrors * dtAlignmentErrors()
AlignmentAlgorithmBase * theAlignmentAlgo
Class to update a given geometry with a set of alignments.
Alignments * dtAlignments()
void attachSurfaceDeformations(C *geometry, const AlignmentSurfaceDeformations *surfaceDeformations)
AlignmentErrors * alignmentErrors() const
Return alignment errors, sorted by DetId.
AlignmentErrors * cscAlignmentErrors()
std::vector< AlignmentMonitorBase * > theMonitors
void applyAlignments(C *geometry, const Alignments *alignments, const AlignmentErrors *alignmentErrors, const AlignTransform &globalCoordinates)
AlignmentSurfaceDeformations * surfaceDeformations() const
Return surface deformations, sorted by DetId.
Definition: Alignable.cc:216
AlignableMuon * theAlignableMuon
Alignments * cscAlignments()
AlignableTracker * theAlignableTracker
Alignments * alignments() const
Return alignments, sorted by DetId.
void AlignmentProducer::writeDB ( Alignments alignments,
const std::string &  alignRcd,
AlignmentErrors alignmentErrors,
const std::string &  errRcd,
const AlignTransform globalCoordinates,
cond::Time_t  time 
) const
private

Write alignment and/or errors to DB for record names (removes *globalCoordinates before writing if non-null...). Takes over ownership of alignments and alignmentErrrors.

Definition at line 836 of file AlignmentProducer.cc.

References edm::hlt::Exception, edm::Service< T >::isAvailable(), GeometryAligner::removeGlobalTransform(), saveApeToDB_, saveToDB_, cond::rpcobgas::time, AlignTransform::transform(), and cond::service::PoolDBOutputService::writeOne().

Referenced by writeForRunRange().

842 {
843  Alignments * tempAlignments = alignments;
844  AlignmentErrors * tempAlignmentErrors = alignmentErrors;
845 
846  // Call service
848  if (!poolDb.isAvailable()) { // Die if not available
849  delete tempAlignments; // promised to take over ownership...
850  delete tempAlignmentErrors; // dito
851  throw cms::Exception("NotAvailable") << "PoolDBOutputService not available";
852  }
853 
854  if (globalCoordinates // happens only if (applyDbAlignment_ == true)
855  && globalCoordinates->transform() != AlignTransform::Transform::Identity) {
856 
857  tempAlignments = new Alignments(); // temporary storage for
858  tempAlignmentErrors = new AlignmentErrors(); // final alignments and errors
859 
860  GeometryAligner aligner;
861  aligner.removeGlobalTransform(alignments, alignmentErrors,
862  *globalCoordinates,
863  tempAlignments, tempAlignmentErrors);
864 
865  delete alignments; // have to delete original alignments
866  delete alignmentErrors; // same thing for the errors
867 
868  edm::LogInfo("Alignment") << "@SUB=AlignmentProducer::writeDB"
869  << "globalCoordinates removed from alignments (" << alignRcd
870  << ") and errors (" << alignRcd << ").";
871  }
872 
873  if (saveToDB_) {
874  edm::LogInfo("Alignment") << "Writing Alignments to " << alignRcd << ".";
875  poolDb->writeOne<Alignments>(tempAlignments, time, alignRcd);
876  } else { // poolDb->writeOne(..) takes over 'alignments' ownership,...
877  delete tempAlignments; // ...otherwise we have to delete, as promised!
878  }
879 
880  if (saveApeToDB_) {
881  edm::LogInfo("Alignment") << "Writing AlignmentErrors to " << errRcd << ".";
882  poolDb->writeOne<AlignmentErrors>(tempAlignmentErrors, time, errRcd);
883  } else { // poolDb->writeOne(..) takes over 'alignmentErrors' ownership,...
884  delete tempAlignmentErrors; // ...otherwise we have to delete, as promised!
885  }
886 }
Class to update a given geometry with a set of alignments.
void removeGlobalTransform(const Alignments *alignments, const AlignmentErrors *alignmentErrors, const AlignTransform &globalCoordinates, Alignments *newAlignments, AlignmentErrors *newAlignmentErrors)
bool isAvailable() const
Definition: Service.h:47
void writeOne(T *payload, Time_t time, const std::string &recordName, bool withlogging=false)
Transform transform() const
void AlignmentProducer::writeDB ( AlignmentSurfaceDeformations alignmentSurfaceDeformations,
const std::string &  surfaceDeformationRcd,
cond::Time_t  time 
) const
private

Write surface deformations (bows & kinks) to DB for given record name Takes over ownership of alignmentsurfaceDeformations.

Definition at line 890 of file AlignmentProducer.cc.

References edm::hlt::Exception, edm::Service< T >::isAvailable(), saveDeformationsToDB_, cond::rpcobgas::time, and cond::service::PoolDBOutputService::writeOne().

893 {
894  // Call service
896  if (!poolDb.isAvailable()) { // Die if not available
897  delete alignmentSurfaceDeformations; // promised to take over ownership...
898  throw cms::Exception("NotAvailable") << "PoolDBOutputService not available";
899  }
900 
901  if (saveDeformationsToDB_) {
902  edm::LogInfo("Alignment") << "Writing AlignmentSurfaceDeformations to "
903  << surfaceDeformationRcd << ".";
904  poolDb->writeOne<AlignmentSurfaceDeformations>(alignmentSurfaceDeformations, time,
905  surfaceDeformationRcd);
906  } else { // poolDb->writeOne(..) takes over 'surfaceDeformation' ownership,...
907  delete alignmentSurfaceDeformations; // ...otherwise we have to delete, as promised!
908  }
909 }
bool isAvailable() const
Definition: Service.h:47
void writeOne(T *payload, Time_t time, const std::string &recordName, bool withlogging=false)
const bool saveDeformationsToDB_
void AlignmentProducer::writeForRunRange ( cond::Time_t  time)
private

Definition at line 791 of file AlignmentProducer.cc.

References AlignableTracker::alignmentErrors(), AlignableTracker::alignments(), AlignableMuon::cscAlignmentErrors(), AlignableMuon::cscAlignments(), align::DetectorGlobalPosition(), doMuon_, doTracker_, AlignableMuon::dtAlignmentErrors(), AlignableMuon::dtAlignments(), globalPositions_, DetId::Muon, saveDeformationsToDB_, Alignable::surfaceDeformations(), theAlignableMuon, theAlignableTracker, DetId::Tracker, and writeDB().

Referenced by endOfJob().

792 {
793  if ( doTracker_ ) { // first tracker
794  const AlignTransform *trackerGlobal = 0; // will be 'removed' from constants
795  if (globalPositions_) { // i.e. applied before in applyDB
798  }
799 
800  Alignments *alignments = theAlignableTracker->alignments();
802  this->writeDB(alignments, "TrackerAlignmentRcd",
803  alignmentErrors, "TrackerAlignmentErrorRcd", trackerGlobal,
804  time);
805  }
806 
807  if ( doMuon_ ) { // now muon
808  const AlignTransform *muonGlobal = 0; // will be 'removed' from constants
809  if (globalPositions_) { // i.e. applied before in applyDB
811  DetId(DetId::Muon));
812  }
813  // Get alignments+errors, first DT - ownership taken over by writeDB(..), so no delete
814  Alignments *alignments = theAlignableMuon->dtAlignments();
815  AlignmentErrors *alignmentErrors = theAlignableMuon->dtAlignmentErrors();
816  this->writeDB(alignments, "DTAlignmentRcd",
817  alignmentErrors, "DTAlignmentErrorRcd", muonGlobal,
818  time);
819 
820  // Get alignments+errors, now CSC - ownership taken over by writeDB(..), so no delete
821  alignments = theAlignableMuon->cscAlignments();
822  alignmentErrors = theAlignableMuon->cscAlignmentErrors();
823  this->writeDB(alignments, "CSCAlignmentRcd",
824  alignmentErrors, "CSCAlignmentErrorRcd", muonGlobal,
825  time);
826  }
827 
828  // Save surface deformations to database
830  AlignmentSurfaceDeformations *alignmentSurfaceDeformations = theAlignableTracker->surfaceDeformations();
831  this->writeDB(alignmentSurfaceDeformations, "TrackerSurfaceDeformationRcd", time);
832  }
833 }
AlignmentErrors * dtAlignmentErrors()
Alignments * dtAlignments()
AlignmentErrors * alignmentErrors() const
Return alignment errors, sorted by DetId.
AlignmentErrors * cscAlignmentErrors()
void writeDB(Alignments *alignments, const std::string &alignRcd, AlignmentErrors *alignmentErrors, const std::string &errRcd, const AlignTransform *globalCoordinates, cond::Time_t time) const
AlignmentSurfaceDeformations * surfaceDeformations() const
Return surface deformations, sorted by DetId.
Definition: Alignable.cc:216
Definition: DetId.h:20
AlignableMuon * theAlignableMuon
const bool saveDeformationsToDB_
Alignments * cscAlignments()
AlignableTracker * theAlignableTracker
const AlignTransform & DetectorGlobalPosition(const Alignments &allGlobals, const DetId &id)
Alignments * alignments() const
Return alignments, sorted by DetId.
const Alignments * globalPositions_
GlobalPositions that might be read from DB, NULL otherwise.

Member Data Documentation

const bool AlignmentProducer::applyDbAlignment_
private

Definition at line 180 of file AlignmentProducer.h.

Referenced by beginOfJob().

const edm::InputTag AlignmentProducer::beamSpotTag_
private

Definition at line 188 of file AlignmentProducer.h.

Referenced by duringLoop().

const bool AlignmentProducer::checkDbAlignmentValidity_
private

Definition at line 180 of file AlignmentProducer.h.

Referenced by applyDB().

const edm::InputTag AlignmentProducer::clusterValueMapTag_
private

Definition at line 190 of file AlignmentProducer.h.

Referenced by duringLoop().

const bool AlignmentProducer::doMisalignmentScenario_
private

Definition at line 181 of file AlignmentProducer.h.

Referenced by beginOfJob().

const bool AlignmentProducer::doMuon_
private
const bool AlignmentProducer::doTracker_
private
const Alignments* AlignmentProducer::globalPositions_
private

GlobalPositions that might be read from DB, NULL otherwise.

Definition at line 169 of file AlignmentProducer.h.

Referenced by beginOfJob(), writeForRunRange(), and ~AlignmentProducer().

int AlignmentProducer::nevent_
private

Definition at line 171 of file AlignmentProducer.h.

Referenced by duringLoop(), endOfJob(), endOfLoop(), and startingNewLoop().

const bool AlignmentProducer::saveApeToDB_
private

Definition at line 182 of file AlignmentProducer.h.

Referenced by endOfJob(), and writeDB().

const bool AlignmentProducer::saveDeformationsToDB_
private

Definition at line 182 of file AlignmentProducer.h.

Referenced by endOfJob(), writeDB(), and writeForRunRange().

const bool AlignmentProducer::saveToDB_
private

Definition at line 182 of file AlignmentProducer.h.

Referenced by endOfJob(), and writeDB().

const int AlignmentProducer::stNFixAlignables_
private

Definition at line 178 of file AlignmentProducer.h.

Referenced by beginOfJob().

const double AlignmentProducer::stRandomRotation_
private

Definition at line 179 of file AlignmentProducer.h.

Referenced by beginOfJob().

const double AlignmentProducer::stRandomShift_
private

Definition at line 179 of file AlignmentProducer.h.

Referenced by beginOfJob().

AlignableExtras* AlignmentProducer::theAlignableExtras
private

Definition at line 161 of file AlignmentProducer.h.

Referenced by beginOfJob(), duringLoop(), endOfJob(), and ~AlignmentProducer().

AlignableMuon* AlignmentProducer::theAlignableMuon
private
AlignableTracker* AlignmentProducer::theAlignableTracker
private
AlignmentAlgorithmBase* AlignmentProducer::theAlignmentAlgo
private
AlignmentParameterStore* AlignmentProducer::theAlignmentParameterStore
private

Definition at line 159 of file AlignmentProducer.h.

Referenced by beginOfJob(), and ~AlignmentProducer().

const unsigned int AlignmentProducer::theMaxLoops
private

Definition at line 176 of file AlignmentProducer.h.

Referenced by endOfLoop().

std::vector<AlignmentMonitorBase*> AlignmentProducer::theMonitors
private
boost::shared_ptr<CSCGeometry> AlignmentProducer::theMuonCSC
private

Definition at line 167 of file AlignmentProducer.h.

Referenced by beginOfJob(), createGeometries_(), and produceCSC().

boost::shared_ptr<DTGeometry> AlignmentProducer::theMuonDT
private

Definition at line 166 of file AlignmentProducer.h.

Referenced by beginOfJob(), createGeometries_(), and produceDT().

edm::ParameterSet AlignmentProducer::theParameterSet
private

Definition at line 172 of file AlignmentProducer.h.

Referenced by beginOfJob(), and endOfJob().

const SurveyErrors* AlignmentProducer::theSurveyErrors
private

Definition at line 155 of file AlignmentProducer.h.

Referenced by addSurveyInfo_(), and readInSurveyRcds().

unsigned int AlignmentProducer::theSurveyIndex
private

Definition at line 153 of file AlignmentProducer.h.

Referenced by addSurveyInfo_(), and readInSurveyRcds().

const Alignments* AlignmentProducer::theSurveyValues
private

Definition at line 154 of file AlignmentProducer.h.

Referenced by addSurveyInfo_(), and readInSurveyRcds().

boost::shared_ptr<TrackerGeometry> AlignmentProducer::theTracker
private

Definition at line 165 of file AlignmentProducer.h.

Referenced by beginOfJob(), createGeometries_(), and produceTracker().

const edm::InputTag AlignmentProducer::tjTkAssociationMapTag_
private

Definition at line 187 of file AlignmentProducer.h.

Referenced by duringLoop().

const edm::InputTag AlignmentProducer::tkLasBeamTag_
private

Definition at line 189 of file AlignmentProducer.h.

Referenced by endRun().

const bool AlignmentProducer::useExtras_
private

Definition at line 183 of file AlignmentProducer.h.

Referenced by beginOfJob().

const bool AlignmentProducer::useSurvey_
private

Definition at line 184 of file AlignmentProducer.h.

Referenced by readInSurveyRcds().

edm::ESWatcher<CSCSurveyErrorRcd> AlignmentProducer::watchCSCSurveyErrRcd_
private

Definition at line 199 of file AlignmentProducer.h.

edm::ESWatcher<CSCSurveyRcd> AlignmentProducer::watchCSCSurveyRcd_
private

Definition at line 198 of file AlignmentProducer.h.

edm::ESWatcher<DTSurveyErrorRcd> AlignmentProducer::watchDTSurveyErrRcd_
private

Definition at line 197 of file AlignmentProducer.h.

edm::ESWatcher<DTSurveyRcd> AlignmentProducer::watchDTSurveyRcd_
private

Definition at line 196 of file AlignmentProducer.h.

edm::ESWatcher<TrackerSurveyErrorRcd> AlignmentProducer::watchTkSurveyErrRcd_
private

Definition at line 195 of file AlignmentProducer.h.

Referenced by readInSurveyRcds().

edm::ESWatcher<TrackerSurveyRcd> AlignmentProducer::watchTkSurveyRcd_
private

Definition at line 194 of file AlignmentProducer.h.

Referenced by readInSurveyRcds().