81 theAlignmentAlgo(0), theAlignmentParameterStore(0),
82 theAlignableExtras(0), theAlignableTracker(0), theAlignableMuon(0),
84 nevent_(0), theParameterSet(iConfig),
85 theMaxLoops( iConfig.getUntrackedParameter<unsigned int>(
"maxLoops") ),
86 stNFixAlignables_(iConfig.getParameter<int>(
"nFixAlignables") ),
87 stRandomShift_(iConfig.getParameter<double>(
"randomShift")),
88 stRandomRotation_(iConfig.getParameter<double>(
"randomRotation")),
89 applyDbAlignment_( iConfig.getUntrackedParameter<bool>(
"applyDbAlignment")),
90 checkDbAlignmentValidity_( iConfig.getUntrackedParameter<bool>(
"checkDbAlignmentValidity")),
91 doMisalignmentScenario_(iConfig.getParameter<bool>(
"doMisalignmentScenario")),
92 saveToDB_(iConfig.getParameter<bool>(
"saveToDB")),
93 saveApeToDB_(iConfig.getParameter<bool>(
"saveApeToDB")),
94 saveDeformationsToDB_(iConfig.getParameter<bool>(
"saveDeformationsToDB")),
95 doTracker_( iConfig.getUntrackedParameter<bool>(
"doTracker") ),
96 doMuon_( iConfig.getUntrackedParameter<bool>(
"doMuon") ),
97 useExtras_( iConfig.getUntrackedParameter<bool>(
"useExtras") ),
98 useSurvey_( iConfig.getParameter<bool>(
"useSurvey") ),
99 tjTkAssociationMapTag_(iConfig.getParameter<edm::
InputTag>(
"tjTkAssociationMapTag")),
100 beamSpotTag_(iConfig.getParameter<edm::
InputTag>(
"beamSpotTag")),
101 tkLasBeamTag_(iConfig.getParameter<edm::
InputTag>(
"tkLasBeamTag")),
102 clusterValueMapTag_(iConfig.getParameter<edm::
InputTag>(
"hitPrescaleMapTag"))
104 edm::LogInfo(
"Alignment") <<
"@SUB=AlignmentProducer::AlignmentProducer";
123 if ( !theAlignmentAlgo )
124 throw cms::Exception(
"BadConfig") <<
"Couldn't find algorithm called " << algoName;
128 std::vector<std::string> monitors = monitorConfig.
getUntrackedParameter<std::vector<std::string> >(
"monitors" );
129 for (std::vector<std::string>::const_iterator miter = monitors.begin(); miter != monitors.end(); ++miter) {
132 if (!newMonitor)
throw cms::Exception(
"BadConfig") <<
"Couldn't find monitor named " << *miter;
139 for (
auto iCalib = calibrations.begin(); iCalib != calibrations.end(); ++iCalib) {
171 std::shared_ptr<TrackerGeometry>
174 edm::LogInfo(
"Alignment") <<
"@SUB=AlignmentProducer::produceTracker";
180 std::shared_ptr<DTGeometry>
183 edm::LogInfo(
"Alignment") <<
"@SUB=AlignmentProducer::produceDT";
189 std::shared_ptr<CSCGeometry>
192 edm::LogInfo(
"Alignment") <<
"@SUB=AlignmentProducer::produceCSC";
201 edm::LogInfo(
"Alignment") <<
"@SUB=AlignmentProducer::beginOfJob";
220 this->applyDB<TrackerGeometry,TrackerAlignmentRcd,TrackerAlignmentErrorExtendedRcd>
221 (&(*theTracker), iSetup,
223 this->applyDB<TrackerGeometry,TrackerSurfaceDeformationRcd>(&(*theTracker), iSetup);
227 this->applyDB<DTGeometry,DTAlignmentRcd,DTAlignmentErrorExtendedRcd>
228 (&(*theMuonDT), iSetup,
230 this->applyDB<CSCGeometry,CSCAlignmentRcd,CSCAlignmentErrorExtendedRcd>
231 (&(*theMuonCSC), iSetup,
250 edm::LogInfo(
"Alignment") <<
"@SUB=AlignmentProducer::beginOfJob"
251 <<
"Creating AlignmentParameterBuilder";
262 Alignables theAlignables = alignmentParameterBuilder.alignables();
264 edm::LogInfo(
"Alignment") <<
"Constructed theAlignables calling alignmentParameterBuilder.alignables()";
265 edm::LogInfo(
"Alignment") <<
"@SUB=AlignmentProducer::beginOfJob"
266 <<
"got " << theAlignables.size() <<
" alignables";
272 edm::LogInfo(
"Alignment") <<
"@SUB=AlignmentProducer::beginOfJob"
273 <<
"AlignmentParameterStore created!";
278 edm::LogInfo(
"Alignment") <<
"@SUB=AlignmentProducer::beginOfJob"
279 <<
"Applying misalignment scenario to "
293 edm::LogInfo(
"Alignment") <<
"@SUB=AlignmentProducer::beginOfJob"
294 <<
"NOT applying misalignment scenario!";
304 theAlignmentParameterStore );
311 throw cms::Exception(
"BadConfig") <<
"[AlignmentProducer::beginOfJob]\n"
313 <<
"for algorithm not supporting it.";
316 for (std::vector<AlignmentMonitorBase*>::const_iterator monitor =
theMonitors.begin();
326 edm::LogInfo(
"Alignment") <<
"@SUB=AlignmentProducer::endOfJob";
328 for (std::vector<AlignmentMonitorBase*>::const_iterator monitor =
theMonitors.begin(); monitor !=
theMonitors.end(); ++monitor) {
329 (*monitor)->endOfJob();
333 edm::LogError(
"Alignment") <<
"@SUB=AlignmentProducer::endOfJob" <<
"Did not process any "
334 <<
"events in last loop, do not dare to store to DB.";
340 if (uniqueRunRanges.empty()) {
343 uniqueRunRanges.push_back(runRange);
346 std::vector<AlgebraicVector> beamSpotParameters;
348 for (RunRanges::const_iterator iRunRange = uniqueRunRanges.begin();
349 iRunRange != uniqueRunRanges.end();
363 beamSpotParameters.push_back(beamSpotAliPars->
parameters());
369 std::ostringstream bsOutput;
371 std::vector<AlgebraicVector>::const_iterator itPar = beamSpotParameters.begin();
372 for (RunRanges::const_iterator iRunRange = uniqueRunRanges.begin();
373 iRunRange != uniqueRunRanges.end();
374 ++iRunRange, ++itPar) {
375 bsOutput <<
"Run range: " << (*iRunRange).first <<
" - " << (*iRunRange).second <<
"\n";
376 bsOutput <<
" Displacement: x=" << (*itPar)[0] <<
", y=" << (*itPar)[1] <<
"\n";
377 bsOutput <<
" Slope: dx/dz=" << (*itPar)[2] <<
", dy/dz=" << (*itPar)[3] <<
"\n";
380 edm::LogInfo(
"Alignment") <<
"@SUB=AlignmentProducer::endOfJob"
381 <<
"Parameters for alignable beamspot:\n"
396 edm::LogInfo(
"Alignment") <<
"@SUB=AlignmentProducer::startingNewLoop"
397 <<
"Starting loop number " << iLoop;
404 (*iCal)->startNewLoop();
407 for (std::vector<AlignmentMonitorBase*>::const_iterator monitor =
theMonitors.begin(); monitor !=
theMonitors.end(); ++monitor) {
408 (*monitor)->startingNewLoop();
411 edm::LogInfo(
"Alignment") <<
"@SUB=AlignmentProducer::startingNewLoop"
412 <<
"Now physically apply alignments to geometry...";
449 edm::LogError(
"Alignment") <<
"@SUB=AlignmentProducer::endOfLoop"
450 <<
"Did not process any events in loop " << iLoop
451 <<
", stop processing without terminating algorithm.";
455 edm::LogInfo(
"Alignment") <<
"@SUB=AlignmentProducer::endOfLoop"
456 <<
"Ending loop " << iLoop <<
", terminating algorithm.";
461 (*iCal)->endOfLoop();
464 for (std::vector<AlignmentMonitorBase*>::const_iterator monitor =
theMonitors.begin(); monitor !=
theMonitors.end(); ++monitor) {
465 (*monitor)->endOfLoop(iSetup);
484 for (
int i=10;
i<10000000;
i*=10 )
486 edm::LogInfo(
"Alignment") <<
"@SUB=AlignmentProducer::duringLoop"
487 <<
"Events processed: " <<
nevent_;
497 iPair != m_TrajTracksMap->end(); ++iPair) {
504 edm::LogInfo(
"Alignment") <<
"@SUB=AlignmentProducer::duringLoop"
505 <<
"initializing AlignableBeamSpot" << std::endl;
507 beamSpot->dxdz(), beamSpot->dydz());
515 clusterValueMapPtr = &(*clusterValueMap);
523 for (std::vector<AlignmentMonitorBase*>::const_iterator monitor =
theMonitors.begin();
525 (*monitor)->duringLoop(event, setup, trajTracks);
528 edm::LogError(
"Alignment") <<
"@SUB=AlignmentProducer::duringLoop"
529 <<
"No track collection found: skipping event";
555 edm::LogInfo(
"Alignment") <<
"@SUB=AlignmentProducer::endRun"
556 <<
"No Tk LAS beams to forward to algorithm.";
581 std::ostringstream
output;
583 if (shift > 0. || rot > 0.) {
584 output <<
"Adding random flat shift of max size " << shift
585 <<
" and adding random flat rotation of max size " << rot <<
" to ";
587 std::vector<bool> commSel(0);
588 if (selection !=
"-1") {
593 <<
"[AlignmentProducer::simpleMisalignment_]\n"
594 <<
"Expect selection string '" << selection <<
"' to be at least of length "
596 <<
"(Most probably you have to adjust the parameter 'parameterSelectorSimple'.)";
598 for (std::vector<char>::const_iterator cIter = cSel.begin(); cIter != cSel.end(); ++cIter) {
599 commSel.push_back(*cIter ==
'0' ?
false :
true);
601 output <<
"parameters defined by (" << selection
602 <<
"), representing (x,y,z,alpha,beta,gamma),";
604 output <<
"the active parameters of each alignable,";
606 output <<
" in " << (local ?
"local" :
"global") <<
" frame.";
608 for (std::vector<Alignable*>::const_iterator it = alivec.begin(); it != alivec.end(); ++it) {
613 double s0 = 0., s1 = 0.,
s2 = 0.;
639 output <<
"No simple misalignment added!";
641 edm::LogInfo(
"Alignment") <<
"@SUB=AlignmentProducer::simpleMisalignment_" << output.str();
663 theTracker = std::shared_ptr<TrackerGeometry>( trackerBuilder.
build(&(*geometricDet), *ptp, tTopo ));
671 theMuonDT = std::make_shared<DTGeometry>();
682 unsigned int nComp = comp.size();
688 if ( ali->
id() != error.
rawId() ||
692 <<
"Error reading survey info from DB. Mismatched id!";
700 rot.yx(), rot.yy(), rot.yz(),
701 rot.zx(), rot.zy(), rot.zz() ) );
717 edm::LogInfo(
"Alignment") <<
"watcher tksurveyrcd: " << tkSurveyBool;
718 edm::LogInfo(
"Alignment") <<
"watcher tksurveyerrrcd: " << tkSurveyErrBool;
719 if ( tkSurveyBool || tkSurveyErrBool){
721 edm::LogInfo(
"Alignment") <<
"ADDING THE SURVEY INFORMATION";
741 if ( DTSurveyBool || DTSurveyErrBool || CSCSurveyBool || CSCSurveyErrBool ){
756 for (std::vector<Alignable*>::const_iterator iter = barrels.begin(); iter != barrels.end(); ++iter) {
764 for (std::vector<Alignable*>::const_iterator iter = endcaps.begin(); iter != endcaps.end(); ++iter) {
776 template<
class G,
class Rcd,
class ErrRcd>
793 <<
"@SUB=AlignmentProducer::applyDB"
794 <<
"\nTrying to apply "
795 << record.key().name()
796 <<
" with multiple IOVs in tag.\n"
797 <<
"Validity range is "
803 record.get(alignments);
806 iSetup.
get<ErrRcd>().
get(alignmentErrors);
817 template<
class G,
class DeformationRcd>
823 const DeformationRcd &
record = iSetup.
get<DeformationRcd>();
831 <<
"@SUB=AlignmentProducer::applyDB"
832 <<
"\nTrying to apply "
833 << record.key().name()
834 <<
" with multiple IOVs in tag.\n"
835 <<
"Validity range is "
840 record.get(surfaceDeformations);
858 this->
writeDB(alignments,
"TrackerAlignmentRcd",
859 alignmentErrors,
"TrackerAlignmentErrorExtendedRcd", trackerGlobal,
872 this->
writeDB(alignments,
"DTAlignmentRcd",
873 alignmentErrors,
"DTAlignmentErrorExtendedRcd", muonGlobal,
879 this->
writeDB(alignments,
"CSCAlignmentRcd",
880 alignmentErrors,
"CSCAlignmentErrorExtendedRcd", muonGlobal,
887 this->
writeDB(alignmentSurfaceDeformations,
"TrackerSurfaceDeformationRcd", time);
905 delete tempAlignments;
906 delete tempAlignmentErrorsExtended;
907 throw cms::Exception(
"NotAvailable") <<
"PoolDBOutputService not available";
910 if (globalCoordinates
911 && globalCoordinates->
transform() != AlignTransform::Transform::Identity) {
919 tempAlignments, tempAlignmentErrorsExtended);
922 delete alignmentErrors;
924 edm::LogInfo(
"Alignment") <<
"@SUB=AlignmentProducer::writeDB"
925 <<
"globalCoordinates removed from alignments (" << alignRcd
926 <<
") and errors (" << alignRcd <<
").";
930 edm::LogInfo(
"Alignment") <<
"Writing Alignments for run " << time
931 <<
" to " << alignRcd <<
".";
934 delete tempAlignments;
938 edm::LogInfo(
"Alignment") <<
"Writing AlignmentErrorsExtended for run " << time
939 <<
" to " << errRcd <<
".";
942 delete tempAlignmentErrorsExtended;
955 delete alignmentSurfaceDeformations;
956 throw cms::Exception(
"NotAvailable") <<
"PoolDBOutputService not available";
960 edm::LogInfo(
"Alignment") <<
"Writing AlignmentSurfaceDeformations for run " << time
961 <<
" to " << surfaceDeformationRcd <<
".";
963 surfaceDeformationRcd);
965 delete alignmentSurfaceDeformations;
972 static bool oldRunRangeSelectionWarning =
false;
978 if (!RunRangeSelectionVPSet.empty()) {
980 std::map<RunNumber,RunNumber> uniqueFirstRunNumbers;
982 for (std::vector<edm::ParameterSet>::const_iterator ipset = RunRangeSelectionVPSet.begin();
983 ipset != RunRangeSelectionVPSet.end();
985 const std::vector<std::string> RunRangeStrings = (*ipset).getParameter<std::vector<std::string> >(
"RunRanges");
986 for (std::vector<std::string>::const_iterator irange = RunRangeStrings.begin();
987 irange != RunRangeStrings.end();
990 if ((*irange).find(
':')==std::string::npos) {
993 long int temp = strtol((*irange).c_str(), 0, 0);
994 if (temp!=-1) first =
temp;
999 if (!oldRunRangeSelectionWarning) {
1000 edm::LogWarning(
"BadConfig") <<
"@SUB=AlignmentProducer::makeNonOverlappingRunRanges"
1001 <<
"Config file contains old format for 'RunRangeSelection'. Only the start run\n"
1002 <<
"number is used internally. The number of the last run is ignored and can be\n"
1003 <<
"safely removed from the config file.\n";
1004 oldRunRangeSelectionWarning =
true;
1007 std::vector<std::string> tokens =
edm::tokenize(*irange,
":");
1010 temp = strtol(tokens[0].c_str(), 0, 0);
1011 if (temp!=-1) first =
temp;
1017 for (std::map<RunNumber,RunNumber>::iterator iFirst = uniqueFirstRunNumbers.begin();
1018 iFirst!=uniqueFirstRunNumbers.end();
1020 uniqueRunRanges.push_back(std::pair<RunNumber,RunNumber>((*iFirst).first, endValue));
1022 for (
unsigned int i = 0;
i<uniqueRunRanges.size()-1;++
i) {
1023 uniqueRunRanges[
i].second = uniqueRunRanges[
i+1].first - 1;
1028 uniqueRunRanges.push_back(std::pair<RunNumber,RunNumber>(beginValue, endValue));
1032 return uniqueRunRanges;
std::vector< Alignable * > Alignables
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)
virtual void beginRun(const edm::EventSetup &setup)
called at begin of run
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
T getUntrackedParameter(std::string const &, T const &) const
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)
const EventID & eventID() const
friend struct const_iterator
AlignmentErrorsExtended * alignmentErrors() const
Return alignment errors, sorted by DetId.
Class to update a given geometry with a set of alignments.
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.
std::shared_ptr< TrackerGeometry > theTracker
void readInSurveyRcds(const edm::EventSetup &)
read in survey records
std::vector< ParameterSet > VParameterSet
ErrorMatrix matrix() const
void writeDB(Alignments *alignments, const std::string &alignRcd, AlignmentErrorsExtended *alignmentErrors, const std::string &errRcd, const AlignTransform *globalCoordinates, cond::Time_t time) const
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)
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.
uint8_t structureType() const
void createGeometries_(const edm::EventSetup &)
Create tracker and muon geometries.
virtual Alignables components() const =0
Return vector of all direct components.
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
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.
AlignmentAlgorithmBase::RunNumber RunNumber
virtual bool addCalibrations(const Calibrations &)
void setLength(align::Scalar length)
const unsigned int theMaxLoops
const AlgebraicVector & parameters(void) const
Get alignment parameters.
AlignableExtras * theAlignableExtras
virtual bool setParametersForRunRange(const RunRange &rr)
Alignments * dtAlignments()
unsigned long long Time_t
align::Alignables CSCEndcaps()
const bool checkDbAlignmentValidity_
tuple AlignmentParameterStore
static const IOVSyncValue & beginOfTime()
const edm::InputTag clusterValueMapTag_
const int stNFixAlignables_
void attachSurfaceDeformations(C *geometry, const AlignmentSurfaceDeformations *surfaceDeformations)
void removeGlobalTransform(const Alignments *alignments, const AlignmentErrorsExtended *alignmentErrors, const AlignTransform &globalCoordinates, Alignments *newAlignments, AlignmentErrorsExtended *newAlignmentErrorsExtended)
unsigned int theSurveyIndex
virtual StructureType alignableObjectId() const =0
Return the alignable type identifier.
Abs< T >::type abs(const T &t)
std::vector< AlignmentMonitorBase * > theMonitors
virtual void startingNewLoop(unsigned int iLoop)
Called at beginning of loop.
RunRanges makeNonOverlappingRunRanges(const edm::VParameterSet &RunRangeSelectionVPSet)
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 applyScenario(const edm::ParameterSet &scenario)
Apply misalignment scenario to the tracker.
How EventSelector::AcceptEvent() decides whether to accept an event for output otherwise it is excluding the probing of A single or multiple positive and the trigger will pass if any such matching triggers are PASS or EXCEPTION[A criterion thatmatches no triggers at all is detected and causes a throw.] A single negative with an expectation of appropriate bit checking in the decision and the trigger will pass if any such matching triggers are FAIL or EXCEPTION A wildcarded negative criterion that matches more than one trigger in the trigger but the state exists so we define the behavior If all triggers are the negative crieriion will lead to accepting the event(this again matches the behavior of"!*"before the partial wildcard feature was incorporated).The per-event"cost"of each negative criterion with multiple relevant triggers is about the same as!*was in the past
const edm::InputTag beamSpotTag_
bool getByLabel(InputTag const &tag, Handle< PROD > &result) const
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()
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)
const bool saveDeformationsToDB_
virtual void endOfJob()
Called at end of job.
AlgebraicVector EulerAngles
align::Scalar length() const
const double stRandomShift_
virtual void beginOfJob()
virtual void rotateInGlobalFrame(const RotationType &rotation)=0
void addUntrackedParameter(std::string const &name, T const &value)
std::vector< std::string > tokenize(std::string const &input, std::string const &separator)
breaks the input string into tokens, delimited by the separator
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.
T const * product() const
std::vector< ConstTrajTrackPair > ConstTrajTrackPairCollection
void build(std::shared_ptr< CSCGeometry > geom, const DDCompactView *fv, const MuonDDDConstants &muonConstants)
Build the geometry.
Alignments * cscAlignments()
AlignmentErrorsExtended * dtAlignmentErrorsExtended()
bool check(const edm::EventSetup &iSetup)
std::shared_ptr< CSCGeometry > theMuonCSC
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.
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>
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 IOVSyncValue & first() const
Alignments * alignments() const
Return alignments, sorted by DetId.
std::vector< SurveyError > m_surveyErrors
std::pair< const Trajectory *, const reco::Track * > ConstTrajTrackPair
define run information passed to algorithms (in endRun)
Builds a scenario from configuration and applies it to the alignable tracker.
const Alignments * globalPositions_
GlobalPositions that might be read from DB, NULL otherwise.
void applyScenario(const edm::ParameterSet &scenario)
Apply misalignment scenario to the Muon.
T get(const Candidate &c)
AlignmentAlgorithmBase::RunRange RunRange
const double stRandomRotation_
std::vector< RunRange > RunRanges