79 theAlignmentAlgo(0), theAlignmentParameterStore(0),
80 theAlignableExtras(0), theAlignableTracker(0), theAlignableMuon(0),
85 nevent_(0), theParameterSet(iConfig),
86 theMaxLoops( iConfig.getUntrackedParameter<unsigned
int>(
"maxLoops") ),
87 stNFixAlignables_(iConfig.getParameter<
int>(
"nFixAlignables") ),
88 stRandomShift_(iConfig.getParameter<double>(
"randomShift")),
89 stRandomRotation_(iConfig.getParameter<double>(
"randomRotation")),
90 applyDbAlignment_( iConfig.getUntrackedParameter<bool>(
"applyDbAlignment")),
91 checkDbAlignmentValidity_( iConfig.getUntrackedParameter<bool>(
"checkDbAlignmentValidity")),
92 doMisalignmentScenario_(iConfig.getParameter<bool>(
"doMisalignmentScenario")),
93 saveToDB_(iConfig.getParameter<bool>(
"saveToDB")),
94 saveApeToDB_(iConfig.getParameter<bool>(
"saveApeToDB")),
95 saveDeformationsToDB_(iConfig.getParameter<bool>(
"saveDeformationsToDB")),
96 doTracker_( iConfig.getUntrackedParameter<bool>(
"doTracker") ),
97 doMuon_( iConfig.getUntrackedParameter<bool>(
"doMuon") ),
98 useExtras_( iConfig.getUntrackedParameter<bool>(
"useExtras") ),
99 useSurvey_( iConfig.getParameter<bool>(
"useSurvey") ),
100 enableAlignableUpdates_(iConfig.getParameter<bool>(
"enableAlignableUpdates")),
101 tjTkAssociationMapTag_(iConfig.getParameter<
edm::InputTag>(
"tjTkAssociationMapTag")),
102 beamSpotTag_(iConfig.getParameter<
edm::InputTag>(
"beamSpotTag")),
103 tkLasBeamTag_(iConfig.getParameter<
edm::InputTag>(
"tkLasBeamTag")),
104 clusterValueMapTag_(iConfig.getParameter<
edm::InputTag>(
"hitPrescaleMapTag"))
106 edm::LogInfo(
"Alignment") <<
"@SUB=AlignmentProducer::AlignmentProducer";
123 for (std::vector<std::string>::const_iterator miter = monitors.begin(); miter != monitors.end(); ++miter) {
126 if (!newMonitor)
throw cms::Exception(
"BadConfig") <<
"Couldn't find monitor named " << *miter;
133 for (
auto iCalib = calibrations.begin(); iCalib != calibrations.end(); ++iCalib) {
165 std::shared_ptr<TrackerGeometry>
168 edm::LogInfo(
"Alignment") <<
"@SUB=AlignmentProducer::produceTracker";
174 std::shared_ptr<DTGeometry>
177 edm::LogInfo(
"Alignment") <<
"@SUB=AlignmentProducer::produceDT";
183 std::shared_ptr<CSCGeometry>
186 edm::LogInfo(
"Alignment") <<
"@SUB=AlignmentProducer::produceCSC";
195 edm::LogInfo(
"Alignment") <<
"@SUB=AlignmentProducer::beginOfJob";
204 throw cms::Exception(
"BadConfig") <<
"[AlignmentProducer::beginOfJob]\n" 206 <<
"for algorithm not supporting it.";
209 for (std::vector<AlignmentMonitorBase*>::const_iterator monitor =
theMonitors.begin();
219 edm::LogInfo(
"Alignment") <<
"@SUB=AlignmentProducer::endOfJob";
221 for (std::vector<AlignmentMonitorBase*>::const_iterator monitor =
theMonitors.begin(); monitor !=
theMonitors.end(); ++monitor) {
222 (*monitor)->endOfJob();
226 edm::LogError(
"Alignment") <<
"@SUB=AlignmentProducer::endOfJob" <<
"Did not process any " 227 <<
"events in last loop, do not dare to store to DB.";
229 std::vector<AlgebraicVector> beamSpotParameters;
244 beamSpotParameters.push_back(beamSpotAliPars->
parameters());
250 std::ostringstream bsOutput;
252 std::vector<AlgebraicVector>::const_iterator itPar = beamSpotParameters.begin();
253 for (
auto iRunRange = uniqueRunRanges_.cbegin();
254 iRunRange != uniqueRunRanges_.cend();
255 ++iRunRange, ++itPar) {
256 bsOutput <<
"Run range: " << (*iRunRange).first <<
" - " << (*iRunRange).second <<
"\n";
257 bsOutput <<
" Displacement: x=" << (*itPar)[0] <<
", y=" << (*itPar)[1] <<
"\n";
258 bsOutput <<
" Slope: dx/dz=" << (*itPar)[2] <<
", dy/dz=" << (*itPar)[3] <<
"\n";
261 edm::LogInfo(
"Alignment") <<
"@SUB=AlignmentProducer::endOfJob" 262 <<
"Parameters for alignable beamspot:\n" 277 edm::LogInfo(
"Alignment") <<
"@SUB=AlignmentProducer::startingNewLoop" 278 <<
"Starting loop number " << iLoop;
285 (*iCal)->startNewLoop();
288 for (std::vector<AlignmentMonitorBase*>::const_iterator monitor =
theMonitors.begin(); monitor !=
theMonitors.end(); ++monitor) {
289 (*monitor)->startingNewLoop();
307 edm::LogError(
"Alignment") <<
"@SUB=AlignmentProducer::endOfLoop" 308 <<
"Did not process any events in loop " << iLoop
309 <<
", stop processing without terminating algorithm.";
313 edm::LogInfo(
"Alignment") <<
"@SUB=AlignmentProducer::endOfLoop" 314 <<
"Ending loop " << iLoop <<
", terminating algorithm.";
319 (*iCal)->endOfLoop();
322 for (std::vector<AlignmentMonitorBase*>::const_iterator monitor =
theMonitors.begin(); monitor !=
theMonitors.end(); ++monitor) {
323 (*monitor)->endOfLoop(iSetup);
342 for (
int i=10;
i<10000000;
i*=10 )
344 edm::LogInfo(
"Alignment") <<
"@SUB=AlignmentProducer::duringLoop" 345 <<
"Events processed: " <<
nevent_;
355 iPair != m_TrajTracksMap->
end(); ++iPair) {
362 edm::LogInfo(
"Alignment") <<
"@SUB=AlignmentProducer::duringLoop" 363 <<
"initializing AlignableBeamSpot" << std::endl;
365 beamSpot->
dxdz(), beamSpot->
dydz());
373 clusterValueMapPtr = &(*clusterValueMap);
381 for (std::vector<AlignmentMonitorBase*>::const_iterator monitor =
theMonitors.begin();
383 (*monitor)->duringLoop(event, setup, trajTracks);
386 edm::LogError(
"Alignment") <<
"@SUB=AlignmentProducer::duringLoop" 387 <<
"No track collection found: skipping event";
399 edm::LogInfo(
"Alignment") <<
"@SUB=AlignmentProducer::beginRun" 400 <<
"EventSetup-Record changed.";
420 edm::LogInfo(
"Alignment") <<
"@SUB=AlignmentProducer::endRun" 421 <<
"No Tk LAS beams to forward to algorithm.";
451 algoConfig.addUntrackedParameter<
bool>(
"enableAlignableUpdates",
458 if (!theAlignmentAlgo) {
460 <<
"Couldn't find the called alignment algorithm: " <<
algoName;
541 <<
"@SUB=AlignmentProducer::initAlignmentAlgorithm" 542 <<
"Initializing alignment algorithm.";
560 std::ostringstream
output;
562 if (shift > 0. || rot > 0.) {
563 output <<
"Adding random flat shift of max size " << shift
564 <<
" and adding random flat rotation of max size " << rot <<
" to ";
566 std::vector<bool> commSel(0);
567 if (selection !=
"-1") {
572 <<
"[AlignmentProducer::simpleMisalignment_]\n" 573 <<
"Expect selection string '" << selection <<
"' to be at least of length " 575 <<
"(Most probably you have to adjust the parameter 'parameterSelectorSimple'.)";
577 for (std::vector<char>::const_iterator cIter = cSel.begin(); cIter != cSel.end(); ++cIter) {
578 commSel.push_back(*cIter ==
'0' ?
false :
true);
580 output <<
"parameters defined by (" << selection
581 <<
"), representing (x,y,z,alpha,beta,gamma),";
583 output <<
"the active parameters of each alignable,";
585 output <<
" in " << (local ?
"local" :
"global") <<
" frame.";
587 for (std::vector<Alignable*>::const_iterator it = alivec.begin(); it != alivec.end(); ++it) {
592 double s0 = 0., s1 = 0.,
s2 = 0.;
618 output <<
"No simple misalignment added!";
620 edm::LogInfo(
"Alignment") <<
"@SUB=AlignmentProducer::simpleMisalignment_" << output.str();
639 (trackerBuilder.
build(&(*geometricDet), *ptp, tTopo));
649 theMuonDT = std::make_shared<DTGeometry>();
674 (&(*theTracker),
setup,
686 (&(*theMuonDT),
setup,
693 (&(*theMuonCSC),
setup,
737 edm::LogInfo(
"Alignment") <<
"@SUB=AlignmentProducer::buildParameterStore" 738 <<
"Creating AlignmentParameterBuilder";
740 auto alParamBuildCfg =
742 auto alParamStoreCfg =
756 auto theAlignables = alignmentParameterBuilder.alignables();
757 edm::LogInfo(
"Alignment") <<
"@SUB=AlignmentProducer::buildParameterStore" 758 <<
"got " << theAlignables.size() <<
" alignables";
763 edm::LogInfo(
"Alignment") <<
"@SUB=AlignmentProducer::buildParameterStore" 764 <<
"AlignmentParameterStore created!";
775 edm::LogInfo(
"Alignment") <<
"@SUB=AlignmentProducer::applyMisalignment" 776 <<
"Applying misalignment scenario to " 779 auto scenarioConfig =
792 edm::LogInfo(
"Alignment") <<
"@SUB=AlignmentProducer::applyMisalignment" 793 <<
"NOT applying misalignment scenario!";
810 <<
"@SUB=AlignmentProducer::applyAlignmentsToGeometry" 811 <<
"Now physically apply alignments to geometry...";
818 std::unique_ptr<AlignmentErrorsExtended>
820 std::unique_ptr<AlignmentSurfaceDeformations>
832 std::unique_ptr<AlignmentErrorsExtended>
834 std::unique_ptr<AlignmentErrorsExtended>
849 unsigned int nComp = comp.size();
855 if ( ali->
id() != error.
rawId() ||
859 <<
"Error reading survey info from DB. Mismatched id!";
867 rot.yx(), rot.yy(), rot.yz(),
868 rot.zx(), rot.zy(), rot.zz() ) );
884 edm::LogInfo(
"Alignment") <<
"watcher tksurveyrcd: " << tkSurveyBool;
885 edm::LogInfo(
"Alignment") <<
"watcher tksurveyerrrcd: " << tkSurveyErrBool;
886 if ( tkSurveyBool || tkSurveyErrBool){
888 edm::LogInfo(
"Alignment") <<
"ADDING THE SURVEY INFORMATION";
908 if ( DTSurveyBool || DTSurveyErrBool || CSCSurveyBool || CSCSurveyErrBool ){
923 for (std::vector<Alignable*>::const_iterator iter = barrels.begin(); iter != barrels.end(); ++iter) {
931 for (std::vector<Alignable*>::const_iterator iter = endcaps.begin(); iter != endcaps.end(); ++iter) {
943 template<
class G,
class Rcd,
class ErrRcd>
960 <<
"@SUB=AlignmentProducer::applyDB" 961 <<
"\nTrying to apply " 962 << record.key().name()
963 <<
" with multiple IOVs in tag.\n" 964 <<
"Validity range is " 970 record.get(alignments);
973 iSetup.
get<ErrRcd>().
get(alignmentErrors);
984 template<
class G,
class DeformationRcd>
990 const DeformationRcd &
record = iSetup.
get<DeformationRcd>();
998 <<
"@SUB=AlignmentProducer::applyDB" 999 <<
"\nTrying to apply " 1000 << record.key().name()
1001 <<
" with multiple IOVs in tag.\n" 1002 <<
"Validity range is " 1007 record.get(surfaceDeformations);
1025 this->
writeDB(alignments,
"TrackerAlignmentRcd",
1026 alignmentErrors,
"TrackerAlignmentErrorExtendedRcd", trackerGlobal,
1039 this->
writeDB(alignments,
"DTAlignmentRcd",
1040 alignmentErrors,
"DTAlignmentErrorExtendedRcd", muonGlobal,
1046 this->
writeDB(alignments,
"CSCAlignmentRcd",
1047 alignmentErrors,
"CSCAlignmentErrorExtendedRcd", muonGlobal,
1054 this->
writeDB(alignmentSurfaceDeformations,
"TrackerSurfaceDeformationRcd", time);
1072 delete tempAlignments;
1073 delete tempAlignmentErrorsExtended;
1074 throw cms::Exception(
"NotAvailable") <<
"PoolDBOutputService not available";
1077 if (globalCoordinates
1078 && globalCoordinates->
transform() != AlignTransform::Transform::Identity) {
1086 tempAlignments, tempAlignmentErrorsExtended);
1089 delete alignmentErrors;
1091 edm::LogInfo(
"Alignment") <<
"@SUB=AlignmentProducer::writeDB" 1092 <<
"globalCoordinates removed from alignments (" << alignRcd
1093 <<
") and errors (" << alignRcd <<
").";
1097 edm::LogInfo(
"Alignment") <<
"Writing Alignments for run " << time
1098 <<
" to " << alignRcd <<
".";
1101 delete tempAlignments;
1105 edm::LogInfo(
"Alignment") <<
"Writing AlignmentErrorsExtended for run " << time
1106 <<
" to " << errRcd <<
".";
1109 delete tempAlignmentErrorsExtended;
1122 delete alignmentSurfaceDeformations;
1123 throw cms::Exception(
"NotAvailable") <<
"PoolDBOutputService not available";
1127 edm::LogInfo(
"Alignment") <<
"Writing AlignmentSurfaceDeformations for run " << time
1128 <<
" to " << surfaceDeformationRcd <<
".";
1130 surfaceDeformationRcd);
1132 delete alignmentSurfaceDeformations;
const TimeTypeSpecs timeTypeSpecs[]
align::Scalar width() const
AlignmentProducer(const edm::ParameterSet &iConfig)
Constructor.
virtual void beginLuminosityBlock(const edm::EventSetup &setup)
called at begin of luminosity block (no lumi block info passed yet)
T getParameter(std::string const &) const
align::ID id() const
Return the ID of Alignable, i.e. DetId of 'first' component GeomDet(Unit).
bool getByLabel(std::string const &label, Handle< PROD > &result) const
double z0() const
z coordinate
T getUntrackedParameter(std::string const &, T const &) const
edm::ESWatcher< TrackerAlignmentErrorExtendedRcd > watchTrackerAlErrorExtRcd
virtual std::shared_ptr< TrackerGeometry > produceTracker(const TrackerDigiGeometryRecord &iRecord)
Produce the tracker geometry.
virtual void rotateInLocalFrame(const RotationType &rotation)
Rotation intepreted in the local reference frame.
const bool doMisalignmentScenario_
virtual void run(const edm::EventSetup &setup, const EventInfo &eventInfo)=0
Run the algorithm (must be implemented in derived class)
virtual std::shared_ptr< DTGeometry > produceDT(const MuonGeometryRecord &iRecord)
Produce the muon DT geometry.
Builds a scenario from configuration and applies it to the alignable Muon.
AlignmentAlgorithmBase * theAlignmentAlgo
~AlignmentProducer()
Destructor.
virtual void terminate(const edm::EventSetup &iSetup)=0
Call at end of each loop (must be implemented in derived class)
edm::ESWatcher< CSCAlignmentErrorExtendedRcd > watchCSCAlErrExtRcd
def create(alignables, pedeDump, additionalData, outputFile, config)
const EventID & eventID() const
void update(const DTGeometry *, const CSCGeometry *)
friend struct const_iterator
const_iterator end() const
last iterator over the map (read only)
AlignmentErrorsExtended * alignmentErrors() const
Return alignment errors, sorted by DetId.
Class to update a given geometry with a set of alignments.
void buildParameterStore()
Creates the , which manages all Alignables.
std::shared_ptr< TrackerGeometry > theTracker
void readInSurveyRcds(const edm::EventSetup &)
read in survey records
edm::ESWatcher< DTAlignmentErrorExtendedRcd > watchDTAlErrExtRcd
std::vector< ParameterSet > VParameterSet
ErrorMatrix matrix() const
align::RunNumber RunNumber
void writeDB(Alignments *alignments, const std::string &alignRcd, AlignmentErrorsExtended *alignmentErrors, const std::string &errRcd, const AlignTransform *globalCoordinates, cond::Time_t time) const
void update(const TrackerGeometry *, const TrackerTopology *)
align::Alignables DTBarrel()
virtual void endLuminosityBlock(const edm::EventSetup &setup)
called at end of luminosity block (no lumi block info passed yet)
static const IOVSyncValue & endOfTime()
virtual void beginRun(const edm::Run &run, const edm::EventSetup &setup)
Called at run start and calling algorithms beginRun.
std::vector< IntegratedCalibrationBase * > theCalibrations
#define DEFINE_FWK_LOOPER(type)
def setup(process, global_tag, zero_tesla=False)
virtual Status endOfLoop(const edm::EventSetup &, unsigned int iLoop)
Called at end of loop.
edm::ParameterSet theParameterSet
TrackerGeometry * build(const GeometricDet *gd, const PTrackerParameters &ptp, const TrackerTopology *tTopo)
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.
void setWidth(align::Scalar width)
const edm::InputTag tkLasBeamTag_
const Alignments * theSurveyValues
void addSurveyInfo_(Alignable *)
Add survey info to an alignable.
edm::ESWatcher< TrackerAlignmentRcd > watchTrackerAlRcd
uint8_t structureType() const
edm::ESWatcher< CSCAlignmentRcd > watchCSCAlRcd
std::vector< AlignTransform > m_align
AlignmentParameters * alignmentParameters() const
Get the AlignmentParameters.
std::shared_ptr< DTGeometry > theMuonDT
void setWhatProduced(T *iThis, const es::Label &iLabel=es::Label())
const bool applyDbAlignment_
define event information passed to algorithms
edm::ESWatcher< GlobalPositionRcd > watchGlobalPositionRcd
void createAlignables(const TrackerTopology *, bool update=false)
const IOVSyncValue & last() const
virtual void endRun(const EndRunInfo &runInfo, const edm::EventSetup &setup)
called at end of run - order of arguments like in EDProducer etc.
virtual bool addCalibrations(const Calibrations &)
void setLength(align::Scalar length)
const unsigned int theMaxLoops
const AlgebraicVector & parameters(void) const
Get alignment parameters.
AlignableExtras * theAlignableExtras
double dydz() const
dydz slope
virtual bool setParametersForRunRange(const RunRange &rr)
Alignments * dtAlignments()
Get DT alignments sorted by DetId.
unsigned long long Time_t
align::Alignables CSCEndcaps()
const bool checkDbAlignmentValidity_
virtual StructureType alignableObjectId() const =0
Return the alignable type identifier.
static const IOVSyncValue & beginOfTime()
virtual Alignables components() const =0
Return vector of all direct components.
const edm::InputTag clusterValueMapTag_
const int stNFixAlignables_
RunRanges makeUniqueRunRanges(const edm::VParameterSet &runRanges, const RunNumber &defaultRun)
void attachSurfaceDeformations(C *geometry, const AlignmentSurfaceDeformations *surfaceDeformations)
virtual void beginRun(const edm::Run &, const edm::EventSetup &, bool changed)
called at begin of run
void removeGlobalTransform(const Alignments *alignments, const AlignmentErrorsExtended *alignmentErrors, const AlignTransform &globalCoordinates, Alignments *newAlignments, AlignmentErrorsExtended *newAlignmentErrorsExtended)
edm::ESWatcher< TrackerSurfaceDeformationRcd > watchTrackerSurDeRcd
unsigned int theSurveyIndex
Abs< T >::type abs(const T &t)
std::vector< AlignmentMonitorBase * > theMonitors
virtual void startingNewLoop(unsigned int iLoop)
Called at beginning of loop.
AlignmentParameterStore * theAlignmentParameterStore
void writeOne(T *payload, Time_t time, const std::string &recordName, bool withlogging=false)
AlignmentSurfaceDeformations * surfaceDeformations() const
Return surface deformations, sorted by DetId.
AlignmentAlgorithmBase::EndRunInfo EndRunInfo
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)
void applyAlignmentsToDB(const edm::EventSetup &)
void applyScenario(const edm::ParameterSet &scenario)
Apply misalignment scenario to the tracker.
const edm::InputTag beamSpotTag_
bool setupChanged(const edm::EventSetup &)
Checks if one of the EventSetup-Records has changed.
bool getByLabel(InputTag const &tag, Handle< PROD > &result) const
void initAlignmentAlgorithm(const edm::EventSetup &, bool update=false)
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.
AlignmentErrorsExtended * cscAlignmentErrorsExtended()
Get CSC alignment errors sorted by DetId.
double dxdz() const
dxdz slope
const AlignableSurface & surface() const
Return the Surface (global position and orientation) of the object.
const SurveyErrors * theSurveyErrors
const edm::InputTag tjTkAssociationMapTag_
virtual Status duringLoop(const edm::Event &event, const edm::EventSetup &setup)
Called at each event.
AlignableMuon * theAlignableMuon
void applyAlignments(C *geometry, const Alignments *alignments, const AlignmentErrorsExtended *alignmentErrors, const AlignTransform &globalCoordinates)
void createGeometries(const edm::EventSetup &, const TrackerTopology *)
Create tracker and muon geometries.
const bool saveDeformationsToDB_
virtual void endOfJob()
Called at end of job.
AlgebraicVector EulerAngles
align::Scalar length() const
const double stRandomShift_
virtual void beginOfJob()
edm::ESWatcher< DTAlignmentRcd > watchDTAlRcd
edm::ESWatcher< IdealGeometryRecord > watchIdealGeometryRcd
const RunRanges uniqueRunRanges_
virtual void rotateInGlobalFrame(const RotationType &rotation)=0
void setSurvey(const SurveyDet *)
Set survey info.
virtual void endLuminosityBlock(const edm::LuminosityBlock &lumiBlock, const edm::EventSetup &setup)
Called at lumi block end, calling algorithm's endLuminosityBlock.
std::vector< ConstTrajTrackPair > ConstTrajTrackPairCollection
void build(std::shared_ptr< CSCGeometry > geom, const DDCompactView *fv, const MuonDDDConstants &muonConstants)
Build the geometry.
void applyAlignmentsToGeometry()
Alignments * cscAlignments()
Get CSC alignments sorted by DetId.
AlignmentErrorsExtended * dtAlignmentErrorsExtended()
Get DT alignment errors sorted by DetId.
bool check(const edm::EventSetup &iSetup)
align::Alignables Alignables
std::shared_ptr< CSCGeometry > theMuonCSC
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.
ESHandle< TrackerGeometry > geometry
edm::ESWatcher< TrackerSurveyRcd > watchTkSurveyRcd_
void build(std::shared_ptr< DTGeometry > theGeometry, const DDCompactView *cview, const MuonDDDConstants &muonConstants)
align::GlobalPoints toGlobal(const align::LocalPoints &) const
Return in global coord given a set of local points.
const bool enableAlignableUpdates_
AlignableTracker * theAlignableTracker
RotationType toMatrix(const EulerAngles &)
Convert rotation angles about x-, y-, z-axes to matrix.
virtual void beginLuminosityBlock(const edm::LuminosityBlock &lumiBlock, const edm::EventSetup &setup)
Called at lumi block start, calling algorithm's beginLuminosityBlock.
std::vector< char > convertParamSel(const std::string &selString) const
Converting std::string into std::vector<char>
double y0() const
y coordinate
static unsigned int const shift
void applyDB(G *geometry, const edm::EventSetup &iSetup, const AlignTransform &globalPosition) const
edm::ESWatcher< TrackerSurveyErrorExtendedRcd > watchTkSurveyErrRcd_
const AlignTransform & DetectorGlobalPosition(const Alignments &allGlobals, const DetId &id)
void writeForRunRange(cond::Time_t time)
virtual std::shared_ptr< CSCGeometry > produceCSC(const MuonGeometryRecord &iRecord)
Produce the muon CSC geometry.
virtual void startNewLoop()
const_iterator begin() const
first iterator over the map (read only)
eventInfo
add run, event number and lumi section
const IOVSyncValue & first() const
Alignments * alignments() const
Return alignments, sorted by DetId.
std::vector< SurveyError > m_surveyErrors
std::pair< const Trajectory *, const reco::Track * > ConstTrajTrackPair
void applyMisalignment()
Applies misalignment scenario to .
define run information passed to algorithms (in endRun)
void createAlignmentAlgorithm(const edm::ParameterSet &)
Creates the choosen alignment algorithm (specified in config-file)
Builds a scenario from configuration and applies it to the alignable tracker.
const Alignments * globalPositions_
GlobalPositions that might be read from DB, NULL otherwise.
T const * product() const
void applyScenario(const edm::ParameterSet &scenario)
Apply misalignment scenario to the Muon.
T get(const Candidate &c)
const align::Alignables & alignables(void) const
get all alignables
const double stRandomRotation_
double x0() const
x coordinate