60 theAlignmentParameterStore(0),
61 theTrackerAlignables(0),
63 theExtraAlignables(0),
67 theParameterSet(config),
68 stNFixAlignables_ (config.getParameter<int> (
"nFixAlignables")),
69 stRandomShift_ (config.getParameter<double> (
"randomShift")),
70 stRandomRotation_ (config.getParameter<double> (
"randomRotation")),
71 applyDbAlignment_ (config.getUntrackedParameter<bool>(
"applyDbAlignment")),
72 checkDbAlignmentValidity_(config.getUntrackedParameter<bool>(
"checkDbAlignmentValidity")),
73 doMisalignmentScenario_ (config.getParameter<bool> (
"doMisalignmentScenario")),
74 saveToDB_ (config.getParameter<bool> (
"saveToDB")),
75 saveApeToDB_ (config.getParameter<bool> (
"saveApeToDB")),
76 saveDeformationsToDB_ (config.getParameter<bool> (
"saveDeformationsToDB")),
77 doTracker_ (config.getUntrackedParameter<bool>(
"doTracker") ),
78 doMuon_ (config.getUntrackedParameter<bool>(
"doMuon") ),
79 useExtras_ (config.getUntrackedParameter<bool>(
"useExtras")),
80 useSurvey_ (config.getParameter<bool> (
"useSurvey")),
83 tjTkAssociationMapTag_ (config.getParameter<edm::
InputTag>(
"tjTkAssociationMapTag")),
84 beamSpotTag_ (config.getParameter<edm::
InputTag>(
"beamSpotTag")),
85 tkLasBeamTag_ (config.getParameter<edm::
InputTag>(
"tkLasBeamTag")),
86 clusterValueMapTag_ (config.getParameter<edm::
InputTag>(
"hitPrescaleMapTag")),
89 createAlignmentAlgorithm(config);
90 createCalibrations (config);
91 createMonitors (config);
98 delete theAlignmentAlgo;
100 for (
auto iCal = theCalibrations.begin();
101 iCal != theCalibrations.end();
108 delete theAlignmentParameterStore;
109 delete theTrackerAlignables;
110 delete theMuonAlignables;
111 delete theExtraAlignables;
112 delete globalPositions_;
127 for (
auto iCal = theCalibrations.begin();
128 iCal != theCalibrations.end();
130 (*iCal)->beginOfJob(theTrackerAlignables,
135 for (
auto monitor = theMonitors.begin();
136 monitor != theMonitors.end();
138 (*monitor)->beginOfJob(theTrackerAlignables,
140 theAlignmentParameterStore);
150 for (
auto monitor = theMonitors.begin();
151 monitor != theMonitors.end();
153 (*monitor)->endOfJob();
156 for (
auto iCal = theCalibrations.begin();
157 iCal != theCalibrations.end();
167 if (setupChanged(setup)) {
168 edm::LogInfo(
"Alignment") <<
"@SUB=PCLTrackerAlProducer::beginRun"
169 <<
"EventSetup-Record changed.";
170 initAlignmentAlgorithm(setup);
174 theAlignmentAlgo->beginRun(setup);
176 if (setupChanged(setup)) {
177 initAlignmentAlgorithm(setup);
195 if (tkLasBeamTag_.encode().size()) {
201 theAlignmentAlgo->endRun(
EndRunInfo(run.
id(), &(*lasBeams),
204 edm::LogInfo(
"Alignment") <<
"@SUB=PCLTrackerAlProducer::endRun"
205 <<
"No Tk LAS beams to forward to algorithm.";
206 theAlignmentAlgo->endRun(
EndRunInfo(run.
id(), 0, 0), setup);
216 theAlignmentAlgo->beginLuminosityBlock(setup);
225 theAlignmentAlgo->endLuminosityBlock(setup);
232 if (!theAlignmentAlgo->processesEvents()) {
234 <<
"Skipping event. The current configuration "
235 <<
"of the alignment algorithm does not need "
236 <<
"to process any events.";
240 if (setupChanged(setup)) {
241 edm::LogInfo(
"Alignment") <<
"@SUB=PCLTrackerAlProducer::analyze"
242 <<
"EventSetup-Record changed.";
243 initAlignmentAlgorithm(setup);
246 if (nevent_== 0 && theExtraAlignables) {
253 readInSurveyRcds(setup);
259 if (event.
getByLabel(tjTkAssociationMapTag_, handleTrajTracksCollection)) {
262 for (
auto iter = handleTrajTracksCollection->begin();
263 iter != handleTrajTracksCollection->end();
270 if (clusterValueMapTag_.encode().size()) {
272 event.getByLabel(clusterValueMapTag_, clusterValueMap);
273 clusterValueMapPtr = &(*clusterValueMap);
284 for (
auto monitor = theMonitors.begin();
285 monitor != theMonitors.end();
287 (*monitor)->duringLoop(event, setup, trajTracks);
291 edm::LogError(
"Alignment") <<
"@SUB=PCLTrackerAlProducer::analyze"
292 <<
"No track collection found: skipping event";
316 if (!theAlignmentAlgo) {
318 <<
"Couldn't find the called alignment algorithm: " << algoName;
327 std::vector<std::string> monitors = monitorConfig.
getUntrackedParameter<std::vector<std::string>>(
"monitors");
329 for (
auto miter = monitors.begin();
330 miter != monitors.end();
337 throw cms::Exception(
"BadConfig") <<
"Couldn't find monitor named "
341 theMonitors.push_back(newMonitor);
351 for (
auto iCalib = calibrations.begin();
352 iCalib != calibrations.end();
354 theCalibrations.push_back(
356 iCalib->getParameter<
std::string>(
"calibrationName"), *iCalib
363 if (!theCalibrations.empty()) {
364 if (theAlignmentAlgo->supportsCalibrations()) {
365 theAlignmentAlgo->addCalibrations(theCalibrations);
369 <<
"[TrackerAlignmentProducerForPCL::init]\n"
370 <<
"Configured " << theCalibrations.size() <<
" calibration(s) "
371 <<
"for algorithm not supporting it.";
385 bool changed =
false;
387 if (watchIdealGeometryRcd.check(setup)) {
391 if (watchGlobalPositionRcd.check(setup)) {
396 if (watchTrackerAlRcd.check(setup)) {
400 if (watchTrackerAlErrorExtRcd.check(setup)) {
404 if (watchTrackerSurDeRcd.check(setup)) {
410 if (watchDTAlRcd.check(setup)) {
414 if (watchDTAlErrExtRcd.check(setup)) {
418 if (watchCSCAlRcd.check(setup)) {
422 if (watchCSCAlErrExtRcd.check(setup)) {
446 createGeometries(setup);
448 applyAlignmentsToDB(setup);
449 createAlignables(tTopo);
450 buildParameterStore();
455 edm::LogInfo(
"Alignment") <<
"@SUB=PCLTrackerAlProducer::initAlignmentAlgorithm"
456 <<
"Initializing alignment algorithm.";
457 theAlignmentAlgo->initialize(setup,
458 theTrackerAlignables,
461 theAlignmentParameterStore);
463 applyAlignmentsToGeometry();
470 event.getByLabel(beamSpotTag_, theBeamSpot);
472 if (theExtraAlignables) {
473 edm::LogInfo(
"Alignment") <<
"@SUB=TrackerAlignmentProducerForPCL::initBeamSpot"
474 <<
"Initializing AlignableBeamSpot";
476 theExtraAlignables->initializeBeamSpot(theBeamSpot->x0(),
480 theBeamSpot->dydz());
493 theTrackerGeometry = boost::shared_ptr<TrackerGeometry>(
494 trackerBuilder.
build(&(*geometricDet), theParameterSet)
505 theMuonDTGeometry = boost::shared_ptr<DTGeometry> (
new DTGeometry);
506 theMuonCSCGeometry = boost::shared_ptr<CSCGeometry>(
new CSCGeometry);
510 DTGeometryBuilder.
build (theMuonDTGeometry, &(*cpv), *mdc);
511 CSCGeometryBuilder.
build(theMuonCSCGeometry, &(*cpv), *mdc);
520 if (applyDbAlignment_) {
526 globalPositions_ =
new Alignments(*globalAlignments);
532 &(*theTrackerGeometry),
537 applyDB<TrackerGeometry,
539 &(*theTrackerGeometry),
548 &(*theMuonDTGeometry),
556 &(*theMuonCSCGeometry),
573 theMuonAlignables =
new AlignableMuon(&(*theMuonDTGeometry), &(*theMuonCSCGeometry));
586 edm::LogInfo(
"Alignment") <<
"@SUB=PCLTrackerAlProducer::buildParameterStore"
587 <<
"Creating AlignmentParameterBuilder";
598 if (stNFixAlignables_ > 0) {
599 alignmentParameterBuilder.fixAlignables(stNFixAlignables_);
603 Alignables theAlignables = alignmentParameterBuilder.alignables();
604 edm::LogInfo(
"Alignment") <<
"@SUB=PCLTrackerAlProducer::buildParameterStore"
605 <<
"got " << theAlignables.size() <<
" alignables";
609 edm::LogInfo(
"Alignment") <<
"@SUB=PCLTrackerAlProducer::buildParameterStore"
610 <<
"AlignmentParameterStore created!";
620 if (doMisalignmentScenario_ && (doTracker_ || doMuon_)) {
621 edm::LogInfo(
"Alignment") <<
"@SUB=PCLTrackerAlProducer::beginOfJob"
622 <<
"Applying misalignment scenario to "
623 << (doTracker_ ?
"tracker" :
"")
624 << (doMuon_ ? (doTracker_ ?
" and muon" :
"muon") :
".");
637 edm::LogInfo(
"Alignment") <<
"@SUB=TrackerAlignmentProducerForPCL::beginOfJob"
638 <<
"NOT applying misalignment scenario!";
644 simpleMisalignment(theAlignmentParameterStore->alignables(), sParSel, stRandomShift_, stRandomRotation_,
true);
652 std::ostringstream
output;
654 if (shift > 0. || rot > 0.) {
655 output <<
"Adding random flat shift of max size " << shift
656 <<
" and adding random flat rotation of max size " << rot <<
" to ";
658 std::vector<bool> commSel(0);
659 if (selection !=
"-1") {
665 <<
"[PCLTrackerAlProducer::simpleMisalignment_]\n"
666 <<
"Expect selection string '" << selection <<
"' to be at least of length "
668 <<
"(Most probably you have to adjust the parameter 'parameterSelectorSimple'.)";
671 for (
auto cIter = cSel.begin();
674 commSel.push_back(*cIter ==
'0' ?
false :
true);
676 output <<
"parameters defined by (" << selection
677 <<
"), representing (x,y,z,alpha,beta,gamma),";
680 output <<
"the active parameters of each alignable,";
682 output <<
" in " << (local ?
"local" :
"global") <<
" frame.";
684 for (
auto it = alivec.begin();
691 double s0 = 0., s1 = 0.,
s2 = 0.;
718 output <<
"No simple misalignment added!";
721 edm::LogInfo(
"Alignment") <<
"@SUB=PCLTrackerAlProducer::simpleMisalignment_" << output.str();
728 edm::LogInfo(
"Alignment") <<
"@SUB=PCLTrackerAlProducer::startingNewLoop"
729 <<
"Now physically apply alignments to geometry...";
735 std::auto_ptr<Alignments> alignments( theTrackerAlignables->alignments());
736 std::auto_ptr<AlignmentErrorsExtended> alignmentErrExt(theTrackerAlignables->alignmentErrors());
737 std::auto_ptr<AlignmentSurfaceDeformations> aliDeforms( theTrackerAlignables->surfaceDeformations());
740 &(*theTrackerGeometry),
747 &(*theTrackerGeometry),
753 std::auto_ptr<Alignments> dtAlignments( theMuonAlignables->dtAlignments());
754 std::auto_ptr<Alignments> cscAlignments(theMuonAlignables->cscAlignments());
756 std::auto_ptr<AlignmentErrorsExtended> dtAlignmentErrExt(
757 theMuonAlignables->dtAlignmentErrorsExtended()
759 std::auto_ptr<AlignmentErrorsExtended> cscAlignmentErrExt(
760 theMuonAlignables->cscAlignmentErrorsExtended()
764 &(*theMuonDTGeometry),
766 &(*dtAlignmentErrExt),
771 &(*theMuonCSCGeometry),
773 &(*cscAlignmentErrExt),
780 template<
class G,
class Rcd,
class ErrRcd>
791 if (checkDbAlignmentValidity_) {
799 <<
"@SUB=PCLTrackerAlProducer::applyDB"
800 <<
"\nTrying to apply " << record.key().name()
801 <<
" with multiple IOVs in tag.\nValidity range is "
807 record.get(alignments);
810 setup.
get<ErrRcd>().
get(alignmentErrExt);
818 template<
class G,
class DeformationRcd>
825 const DeformationRcd &
record = setup.
get<DeformationRcd>();
826 if (checkDbAlignmentValidity_) {
834 <<
"@SUB=PCLTrackerAlProducer::applyDB"
835 <<
"\nTrying to apply " << record.key().name()
836 <<
" with multiple IOVs in tag.\nValidity range is "
841 record.get(surfaceDeformations);
853 if (doTracker_ && useSurvey_) {
854 bool tkSurveyBool = watchTkSurveyRcd.check(setup);
855 bool tkSurveyErrBool = watchTkSurveyErrExtRcd.check(setup);
857 if (tkSurveyBool || tkSurveyErrBool) {
864 theSurveyValues = &(*surveys);
865 theSurveyErrors = &(*surveyErrors);
867 addSurveyInfo(theTrackerAlignables);
871 if (doMuon_ && useSurvey_) {
872 bool DTSurveyBool = watchTkSurveyRcd.check(setup);
873 bool DTSurveyErrBool = watchTkSurveyErrExtRcd.check(setup);
874 bool CSCSurveyBool = watchTkSurveyRcd.check(setup);
875 bool CSCSurveyErrBool = watchTkSurveyErrExtRcd.check(setup);
877 if (DTSurveyBool || DTSurveyErrBool || CSCSurveyBool || CSCSurveyErrBool) {
888 theSurveyValues = &(*dtSurveys);
889 theSurveyErrors = &(*dtSurveyErrors);
891 Alignables barrels = theMuonAlignables->DTBarrel();
892 for (
auto iter = barrels.begin();
893 iter != barrels.end();
895 addSurveyInfo(*
iter);
899 theSurveyValues = &(*cscSurveys);
900 theSurveyErrors = &(*cscSurveyErrors);
902 Alignables endcaps = theMuonAlignables->CSCEndcaps();
903 for (
auto iter = endcaps.begin();
904 iter != endcaps.end();
906 addSurveyInfo(*
iter);
917 edm::LogInfo(
"Alignment") <<
"ADDING THE SURVEY INFORMATION";
920 for (
size_t i = 0;
i < comp.size(); ++
i) {
921 addSurveyInfo(comp[
i]);
926 if (alignable->
id() != error.
rawId() ||
929 <<
"Error reading survey info from DB. Mismatched id!";
932 const CLHEP::Hep3Vector& pos = theSurveyValues->m_align[theSurveyIndex].translation();
933 const CLHEP::HepRotation&
rot = theSurveyValues->m_align[theSurveyIndex].rotation();
937 rot.yx(), rot.yy(), rot.yz(),
938 rot.zx(), rot.zy(), rot.zz()));
956 if (theAlignmentAlgo->processesEvents() && nevent_ == 0) {
962 edm::LogError(
"Alignment") <<
"@SUB=PCLTrackerAlProducer::finish"
963 <<
"Did not process any events, stop "
964 <<
"without terminating algorithm.";
968 edm::LogInfo(
"Alignment") <<
"@SUB=PCLTrackerAlProducer::finish"
969 <<
"Terminating algorithm.";
970 theAlignmentAlgo->terminate();
972 storeAlignmentsToDB();
979 if (theAlignmentAlgo->processesEvents() && nevent_ == 0) {
981 edm::LogError(
"Alignment") <<
"@SUB=PCLTrackerAlProducer::endOfJob"
982 <<
"Did not process any events in last loop, "
983 <<
"do not dare to store to DB.";
987 RunRanges uniqueRunRanges(makeNonOverlappingRunRanges(runRangeSelectionVPSet));
990 if (uniqueRunRanges.empty()) {
993 uniqueRunRanges.push_back(runRange);
996 std::vector<AlgebraicVector> beamSpotParameters;
998 for (
auto iRunRange = uniqueRunRanges.begin();
999 iRunRange != uniqueRunRanges.end();
1002 theAlignmentAlgo->setParametersForRunRange(*iRunRange);
1005 if (saveToDB_ || saveApeToDB_ || saveDeformationsToDB_) {
1006 writeForRunRange((*iRunRange).first);
1010 if (theExtraAlignables) {
1011 Alignables &alis = theExtraAlignables->beamSpot();
1012 if (!alis.empty()) {
1014 beamSpotParameters.push_back(beamSpotAliPars->
parameters());
1019 if (theExtraAlignables) {
1020 std::ostringstream bsOutput;
1022 auto itPar = beamSpotParameters.begin();
1023 for (
auto iRunRange = uniqueRunRanges.begin();
1024 iRunRange != uniqueRunRanges.end();
1025 ++iRunRange, ++itPar) {
1026 bsOutput <<
"Run range: " << (*iRunRange).first <<
" - " << (*iRunRange).second <<
"\n";
1027 bsOutput <<
" Displacement: x=" << (*itPar)[0] <<
", y=" << (*itPar)[1] <<
"\n";
1028 bsOutput <<
" Slope: dx/dz=" << (*itPar)[2] <<
", dy/dz=" << (*itPar)[3] <<
"\n";
1031 edm::LogInfo(
"Alignment") <<
"@SUB=PCLTrackerAlProducer::endOfJob"
1032 <<
"Parameters for alignable beamspot:\n"
1042 static bool oldRunRangeSelectionWarning =
false;
1048 if (!RunRangeSelectionVPSet.empty()) {
1050 std::map<RunNumber,RunNumber> uniqueFirstRunNumbers;
1052 for (
auto ipset = RunRangeSelectionVPSet.begin();
1053 ipset != RunRangeSelectionVPSet.end();
1055 const std::vector<std::string> RunRangeStrings = (*ipset).getParameter<std::vector<std::string> >(
"RunRanges");
1057 for (
auto irange = RunRangeStrings.begin();
1058 irange != RunRangeStrings.end();
1061 if ((*irange).find(
':') == std::string::npos) {
1064 long int temp = strtol((*irange).c_str(), 0, 0);
1065 if (temp!=-1) first =
temp;
1069 if (!oldRunRangeSelectionWarning) {
1070 edm::LogWarning(
"BadConfig") <<
"@SUB=PCLTrackerAlProducer::makeNonOverlappingRunRanges"
1071 <<
"Config file contains old format for 'RunRangeSelection'. Only the start run\n"
1072 <<
"number is used internally. The number of the last run is ignored and can be\n"
1073 <<
"safely removed from the config file.\n";
1074 oldRunRangeSelectionWarning =
true;
1077 std::vector<std::string> tokens =
edm::tokenize(*irange,
":");
1080 temp = strtol(tokens[0].c_str(), 0, 0);
1081 if (temp!=-1) first =
temp;
1087 for (
auto iFirst = uniqueFirstRunNumbers.begin();
1088 iFirst != uniqueFirstRunNumbers.end();
1090 uniqueRunRanges.push_back(std::pair<RunNumber,RunNumber>((*iFirst).first, endValue));
1093 for (
size_t i = 0;
i < uniqueRunRanges.size()-1; ++
i) {
1094 uniqueRunRanges[
i].second = uniqueRunRanges[
i+1].first - 1;
1098 uniqueRunRanges.push_back(std::pair<RunNumber,RunNumber>(theFirstRun, endValue));
1101 return uniqueRunRanges;
1111 if (globalPositions_) {
1117 Alignments* alignments = theTrackerAlignables->alignments();
1120 writeDB(alignments,
"TrackerAlignmentRcd",
1121 alignmentErrExt,
"TrackerAlignmentErrorExtendedRcd",
1127 if (doTracker_ && saveDeformationsToDB_) {
1129 writeDB(alignmentSurfaceDeformations,
"TrackerSurfaceDeformationRcd", time);
1135 if (globalPositions_) {
1141 Alignments* alignments = theMuonAlignables->dtAlignments();
1144 writeDB(alignments,
"DTAlignmentRcd",
1145 alignmentErrExt,
"DTAlignmentErrorExtendedRcd",
1150 alignments = theMuonAlignables->cscAlignments();
1151 alignmentErrExt = theMuonAlignables->cscAlignmentErrorsExtended();
1153 writeDB(alignments,
"CSCAlignmentRcd",
1154 alignmentErrExt,
"CSCAlignmentErrorExtendedRcd",
1173 delete tempAlignments;
1174 delete tempAlignmentErrExt;
1176 throw cms::Exception(
"NotAvailable") <<
"PoolDBOutputService not available";
1179 if (globalCoordinates &&
1180 globalCoordinates->
transform() != AlignTransform::Transform::Identity) {
1188 tempAlignments, tempAlignmentErrExt);
1191 delete alignmentErrExt;
1193 edm::LogInfo(
"Alignment") <<
"@SUB=PCLTrackerAlProducer::writeDB"
1194 <<
"globalCoordinates removed from alignments ("
1195 << alignRcd <<
") and errors (" << alignRcd <<
").";
1199 edm::LogInfo(
"Alignment") <<
"Writing Alignments for run " << time
1200 <<
" to " << alignRcd <<
".";
1205 delete tempAlignments;
1209 edm::LogInfo(
"Alignment") <<
"Writing AlignmentErrorsExtended for run "
1210 << time <<
" to " << errRcd <<
".";
1215 delete tempAlignmentErrExt;
1228 delete alignmentSurfaceDeformations;
1229 throw cms::Exception(
"NotAvailable") <<
"PoolDBOutputService not available";
1232 if (saveDeformationsToDB_) {
1233 edm::LogInfo(
"Alignment") <<
"Writing AlignmentSurfaceDeformations for run "
1234 << time <<
" to " << surfaceDeformationRcd <<
".";
1236 surfaceDeformationRcd);
1240 delete alignmentSurfaceDeformations;
const TimeTypeSpecs timeTypeSpecs[]
align::Scalar width() const
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
void buildParameterStore()
Creates the , which manages all Alignables.
virtual void rotateInLocalFrame(const RotationType &rotation)
Rotation intepreted in the local reference frame.
void createCalibrations(const edm::ParameterSet &)
Creates the calibrations (specified in config-file)
Builds a scenario from configuration and applies it to the alignable Muon.
std::vector< Alignable * > Alignables
RunRanges makeNonOverlappingRunRanges(const edm::VParameterSet &)
Makes unique RunRanges (specified in config-file)
const EventID & eventID() const
Class to update a given geometry with a set of alignments.
void applyMisalignment()
Applies misalignment scenario to .
#define DEFINE_FWK_MODULE(type)
std::vector< ParameterSet > VParameterSet
ErrorMatrix matrix() const
void writeDB(Alignments *, const std::string &, AlignmentErrorsExtended *, const std::string &, const AlignTransform *, cond::Time_t) const
TrackerGeometry * build(const GeometricDet *gd, const edm::ParameterSet &pSet)
void storeAlignmentsToDB()
Writes Alignments (i.e. Records) to database-file.
Tracker-AlignmentProducer for Prompt Calibration Loop (PCL)
static const IOVSyncValue & endOfTime()
virtual void move(const GlobalVector &displacement)=0
Movement with respect to the global reference frame.
virtual void analyze(const edm::Event &, const edm::EventSetup &) override
const std::vector< bool > & selector(void) const
Get alignment parameter selector vector.
void setWidth(align::Scalar width)
virtual void endLuminosityBlock(const edm::LuminosityBlock &, const edm::EventSetup &) override
void applyAlignmentsToDB(const edm::EventSetup &)
uint8_t structureType() const
virtual Alignables components() const =0
Return vector of all direct components.
void applyDB(G *, const edm::EventSetup &, const AlignTransform &) const
virtual ~PCLTrackerAlProducer()
Destructor.
AlignmentParameters * alignmentParameters() const
Get the AlignmentParameters.
define event information passed to algorithms
const IOVSyncValue & last() const
void build(boost::shared_ptr< CSCGeometry > geom, const DDCompactView *fv, const MuonDDDConstants &muonConstants)
Build the geometry.
void setLength(align::Scalar length)
const AlgebraicVector & parameters(void) const
Get alignment parameters.
void createMonitors(const edm::ParameterSet &)
Creates the monitors (specified in config-file)
std::vector< ConstTrajTrackPair > ConstTrajTrackPairs
unsigned long long Time_t
std::pair< RunNumber, RunNumber > RunRange
tuple AlignmentParameterStore
static const IOVSyncValue & beginOfTime()
virtual void beginRun(const edm::Run &, const edm::EventSetup &) override
virtual void endJob() override
void attachSurfaceDeformations(C *geometry, const AlignmentSurfaceDeformations *surfaceDeformations)
void simpleMisalignment(const Alignables &, const std::string &, float, float, bool)
Applies misalignment scenario to .
void removeGlobalTransform(const Alignments *alignments, const AlignmentErrorsExtended *alignmentErrors, const AlignTransform &globalCoordinates, Alignments *newAlignments, AlignmentErrorsExtended *newAlignmentErrorsExtended)
virtual StructureType alignableObjectId() const =0
Return the alignable type identifier.
Abs< T >::type abs(const T &t)
void writeOne(T *payload, Time_t time, const std::string &recordName, bool withlogging=false)
AlignmentAlgorithmBase::EndRunInfo EndRunInfo
void applyScenario(const edm::ParameterSet &scenario)
Apply misalignment scenario to the tracker.
void readInSurveyRcds(const edm::EventSetup &)
Reads in survey records.
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
bool setupChanged(const edm::EventSetup &)
Checks if one of the EventSetup-Records has changed.
bool getByLabel(InputTag const &tag, Handle< PROD > &result) const
const AlignableSurface & surface() const
Return the Surface (global position and orientation) of the object.
std::pair< const Trajectory *, const reco::Track * > ConstTrajTrackPair
void createGeometries(const edm::EventSetup &)
Creates ideal geometry from IdealGeometryRecord.
virtual void beginJob() override
std::vector< RunRange > RunRanges
void applyAlignments(C *geometry, const Alignments *alignments, const AlignmentErrorsExtended *alignmentErrors, const AlignTransform &globalCoordinates)
void applyAlignmentsToGeometry()
AlgebraicVector EulerAngles
align::Scalar length() const
virtual void endRun(const edm::Run &, const edm::EventSetup &) override
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.
T const * product() const
void build(boost::shared_ptr< CSCGeometry > theGeometry, const RecoIdealGeometry &rig, const CSCRecoDigiParameters &cscpars)
Build the geometry.
ESHandle< TrackerGeometry > geometry
void writeForRunRange(cond::Time_t)
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.
void addSurveyInfo(Alignable *)
Adds survey info to an Alignable.
std::vector< char > convertParamSel(const std::string &selString) const
Converting std::string into std::vector<char>
virtual void beginLuminosityBlock(const edm::LuminosityBlock &, const edm::EventSetup &) override
void initBeamSpot(const edm::Event &)
Initializes Beamspot of Alignables .
static unsigned int const shift
void createAlignmentAlgorithm(const edm::ParameterSet &)
Creates the choosen alignment algorithm (specified in config-file)
const AlignTransform & DetectorGlobalPosition(const Alignments &allGlobals, const DetId &id)
const IOVSyncValue & first() const
Builds a scenario from configuration and applies it to the alignable tracker.
void createAlignables(const TrackerTopology *const)
void setup(std::vector< TH2F > &depth, std::string name, std::string units="")
void applyScenario(const edm::ParameterSet &scenario)
Apply misalignment scenario to the Muon.
T get(const Candidate &c)
cond::RealTimeType< cond::runnumber >::type RunNumber
PCLTrackerAlProducer(const edm::ParameterSet &)
Constructor.
void initAlignmentAlgorithm(const edm::EventSetup &)