65 theAlignmentParameterStore(0),
66 theTrackerAlignables(0),
68 theExtraAlignables(0),
72 theParameterSet(config),
73 stNFixAlignables_ (config.getParameter<int> (
"nFixAlignables")),
74 stRandomShift_ (config.getParameter<double> (
"randomShift")),
75 stRandomRotation_ (config.getParameter<double> (
"randomRotation")),
76 applyDbAlignment_ (config.getUntrackedParameter<bool>(
"applyDbAlignment")),
77 checkDbAlignmentValidity_(config.getUntrackedParameter<bool>(
"checkDbAlignmentValidity")),
78 doMisalignmentScenario_ (config.getParameter<bool> (
"doMisalignmentScenario")),
79 saveToDB_ (config.getParameter<bool> (
"saveToDB")),
80 saveApeToDB_ (config.getParameter<bool> (
"saveApeToDB")),
81 saveDeformationsToDB_ (config.getParameter<bool> (
"saveDeformationsToDB")),
82 doTracker_ (config.getUntrackedParameter<bool>(
"doTracker") ),
83 doMuon_ (config.getUntrackedParameter<bool>(
"doMuon") ),
84 useExtras_ (config.getUntrackedParameter<bool>(
"useExtras")),
85 useSurvey_ (config.getParameter<bool> (
"useSurvey")),
88 tjTkAssociationMapTag_ (config.getParameter<edm::
InputTag>(
"tjTkAssociationMapTag")),
89 beamSpotTag_ (config.getParameter<edm::
InputTag>(
"beamSpotTag")),
90 tkLasBeamTag_ (config.getParameter<edm::
InputTag>(
"tkLasBeamTag")),
91 clusterValueMapTag_ (config.getParameter<edm::
InputTag>(
"hitPrescaleMapTag")),
95 tjTkAssociationMapToken = consumes<TrajTrackAssociationCollection>(tjTkAssociationMapTag_);
96 beamSpotToken = consumes<reco::BeamSpot>(beamSpotTag_);
97 tkLasBeamToken = consumes<TkFittedLasBeamCollection>(tkLasBeamTag_);
98 tsosVectorToken = consumes<TsosVectorCollection>(tkLasBeamTag_);
99 clusterValueMapToken = consumes<AliClusterValueMap>(clusterValueMapTag_);
102 createAlignmentAlgorithm(config);
103 createCalibrations (config);
104 createMonitors (config);
111 delete theAlignmentAlgo;
113 for (
auto iCal = theCalibrations.begin();
114 iCal != theCalibrations.end();
121 delete theAlignmentParameterStore;
122 delete theTrackerAlignables;
123 delete theMuonAlignables;
124 delete theExtraAlignables;
125 delete globalPositions_;
140 for (
auto iCal = theCalibrations.begin();
141 iCal != theCalibrations.end();
143 (*iCal)->beginOfJob(theTrackerAlignables,
148 for (
auto monitor = theMonitors.begin();
149 monitor != theMonitors.end();
151 (*monitor)->beginOfJob(theTrackerAlignables,
153 theAlignmentParameterStore);
163 for (
auto monitor = theMonitors.begin();
164 monitor != theMonitors.end();
166 (*monitor)->endOfJob();
169 for (
auto iCal = theCalibrations.begin();
170 iCal != theCalibrations.end();
180 if (setupChanged(setup)) {
181 edm::LogInfo(
"Alignment") <<
"@SUB=PCLTrackerAlProducer::beginRun"
182 <<
"EventSetup-Record changed.";
183 initAlignmentAlgorithm(setup);
187 theAlignmentAlgo->beginRun(setup);
189 if (setupChanged(setup)) {
190 initAlignmentAlgorithm(setup);
208 if (tkLasBeamTag_.encode().size()) {
214 theAlignmentAlgo->endRun(
EndRunInfo(run.
id(), &(*lasBeams),
217 edm::LogInfo(
"Alignment") <<
"@SUB=PCLTrackerAlProducer::endRun"
218 <<
"No Tk LAS beams to forward to algorithm.";
219 theAlignmentAlgo->endRun(
EndRunInfo(run.
id(), 0, 0), setup);
229 theAlignmentAlgo->beginLuminosityBlock(setup);
238 theAlignmentAlgo->endLuminosityBlock(setup);
245 if (!theAlignmentAlgo->processesEvents()) {
247 <<
"Skipping event. The current configuration "
248 <<
"of the alignment algorithm does not need "
249 <<
"to process any events.";
253 if (setupChanged(setup)) {
254 edm::LogInfo(
"Alignment") <<
"@SUB=PCLTrackerAlProducer::analyze"
255 <<
"EventSetup-Record changed.";
256 initAlignmentAlgorithm(setup);
259 if (nevent_== 0 && theExtraAlignables) {
266 readInSurveyRcds(setup);
272 if (event.
getByToken(tjTkAssociationMapToken, handleTrajTracksCollection)) {
275 for (
auto iter = handleTrajTracksCollection->begin();
276 iter != handleTrajTracksCollection->end();
283 if (clusterValueMapTag_.encode().size()) {
285 event.getByToken(clusterValueMapToken, clusterValueMap);
286 clusterValueMapPtr = &(*clusterValueMap);
297 for (
auto monitor = theMonitors.begin();
298 monitor != theMonitors.end();
300 (*monitor)->duringLoop(event, setup, trajTracks);
304 edm::LogError(
"Alignment") <<
"@SUB=PCLTrackerAlProducer::analyze"
305 <<
"No track collection found: skipping event";
329 if (!theAlignmentAlgo) {
331 <<
"Couldn't find the called alignment algorithm: " << algoName;
340 std::vector<std::string> monitors = monitorConfig.
getUntrackedParameter<std::vector<std::string>>(
"monitors");
342 for (
auto miter = monitors.begin();
343 miter != monitors.end();
350 throw cms::Exception(
"BadConfig") <<
"Couldn't find monitor named "
354 theMonitors.push_back(newMonitor);
364 for (
auto iCalib = calibrations.begin();
365 iCalib != calibrations.end();
367 theCalibrations.push_back(
369 iCalib->getParameter<
std::string>(
"calibrationName"), *iCalib
376 if (!theCalibrations.empty()) {
377 if (theAlignmentAlgo->supportsCalibrations()) {
378 theAlignmentAlgo->addCalibrations(theCalibrations);
382 <<
"[TrackerAlignmentProducerForPCL::init]\n"
383 <<
"Configured " << theCalibrations.size() <<
" calibration(s) "
384 <<
"for algorithm not supporting it.";
398 bool changed =
false;
400 if (watchIdealGeometryRcd.check(setup)) {
404 if (watchGlobalPositionRcd.check(setup)) {
409 if (watchTrackerAlRcd.check(setup)) {
413 if (watchTrackerAlErrorExtRcd.check(setup)) {
417 if (watchTrackerSurDeRcd.check(setup)) {
423 if (watchDTAlRcd.check(setup)) {
427 if (watchDTAlErrExtRcd.check(setup)) {
431 if (watchCSCAlRcd.check(setup)) {
435 if (watchCSCAlErrExtRcd.check(setup)) {
459 createGeometries(setup, tTopo);
461 applyAlignmentsToDB(setup);
462 createAlignables(tTopo);
463 buildParameterStore();
468 edm::LogInfo(
"Alignment") <<
"@SUB=PCLTrackerAlProducer::initAlignmentAlgorithm"
469 <<
"Initializing alignment algorithm.";
470 theAlignmentAlgo->initialize(setup,
471 theTrackerAlignables,
474 theAlignmentParameterStore);
476 applyAlignmentsToGeometry();
483 event.getByToken(beamSpotToken, theBeamSpot);
485 if (theExtraAlignables) {
486 edm::LogInfo(
"Alignment") <<
"@SUB=TrackerAlignmentProducerForPCL::initBeamSpot"
487 <<
"Initializing AlignableBeamSpot";
489 theExtraAlignables->initializeBeamSpot(theBeamSpot->x0(),
493 theBeamSpot->dydz());
510 theTrackerGeometry = boost::shared_ptr<TrackerGeometry>(
511 trackerBuilder.
build(&(*geometricDet), *ptp, tTopo )
522 theMuonDTGeometry = boost::shared_ptr<DTGeometry> (
new DTGeometry);
523 theMuonCSCGeometry = boost::shared_ptr<CSCGeometry>(
new CSCGeometry);
527 DTGeometryBuilder.
build (theMuonDTGeometry, &(*cpv), *mdc);
528 CSCGeometryBuilder.
build(theMuonCSCGeometry, &(*cpv), *mdc);
537 if (applyDbAlignment_) {
543 globalPositions_ =
new Alignments(*globalAlignments);
549 &(*theTrackerGeometry),
554 applyDB<TrackerGeometry,
556 &(*theTrackerGeometry),
565 &(*theMuonDTGeometry),
573 &(*theMuonCSCGeometry),
590 theMuonAlignables =
new AlignableMuon(&(*theMuonDTGeometry), &(*theMuonCSCGeometry));
603 edm::LogInfo(
"Alignment") <<
"@SUB=PCLTrackerAlProducer::buildParameterStore"
604 <<
"Creating AlignmentParameterBuilder";
615 if (stNFixAlignables_ > 0) {
616 alignmentParameterBuilder.fixAlignables(stNFixAlignables_);
620 Alignables theAlignables = alignmentParameterBuilder.alignables();
621 edm::LogInfo(
"Alignment") <<
"@SUB=PCLTrackerAlProducer::buildParameterStore"
622 <<
"got " << theAlignables.size() <<
" alignables";
626 edm::LogInfo(
"Alignment") <<
"@SUB=PCLTrackerAlProducer::buildParameterStore"
627 <<
"AlignmentParameterStore created!";
637 if (doMisalignmentScenario_ && (doTracker_ || doMuon_)) {
638 edm::LogInfo(
"Alignment") <<
"@SUB=PCLTrackerAlProducer::beginOfJob"
639 <<
"Applying misalignment scenario to "
640 << (doTracker_ ?
"tracker" :
"")
641 << (doMuon_ ? (doTracker_ ?
" and muon" :
"muon") :
".");
654 edm::LogInfo(
"Alignment") <<
"@SUB=TrackerAlignmentProducerForPCL::beginOfJob"
655 <<
"NOT applying misalignment scenario!";
661 simpleMisalignment(theAlignmentParameterStore->alignables(), sParSel, stRandomShift_, stRandomRotation_,
true);
669 std::ostringstream
output;
671 if (shift > 0. || rot > 0.) {
672 output <<
"Adding random flat shift of max size " << shift
673 <<
" and adding random flat rotation of max size " << rot <<
" to ";
675 std::vector<bool> commSel(0);
676 if (selection !=
"-1") {
682 <<
"[PCLTrackerAlProducer::simpleMisalignment_]\n"
683 <<
"Expect selection string '" << selection <<
"' to be at least of length "
685 <<
"(Most probably you have to adjust the parameter 'parameterSelectorSimple'.)";
688 for (
auto cIter = cSel.begin();
691 commSel.push_back(*cIter ==
'0' ?
false :
true);
693 output <<
"parameters defined by (" << selection
694 <<
"), representing (x,y,z,alpha,beta,gamma),";
697 output <<
"the active parameters of each alignable,";
699 output <<
" in " << (local ?
"local" :
"global") <<
" frame.";
701 for (
auto it = alivec.begin();
708 double s0 = 0., s1 = 0.,
s2 = 0.;
735 output <<
"No simple misalignment added!";
738 edm::LogInfo(
"Alignment") <<
"@SUB=PCLTrackerAlProducer::simpleMisalignment_" << output.str();
745 edm::LogInfo(
"Alignment") <<
"@SUB=PCLTrackerAlProducer::startingNewLoop"
746 <<
"Now physically apply alignments to geometry...";
752 std::auto_ptr<Alignments> alignments( theTrackerAlignables->alignments());
753 std::auto_ptr<AlignmentErrorsExtended> alignmentErrExt(theTrackerAlignables->alignmentErrors());
754 std::auto_ptr<AlignmentSurfaceDeformations> aliDeforms( theTrackerAlignables->surfaceDeformations());
757 &(*theTrackerGeometry),
764 &(*theTrackerGeometry),
770 std::auto_ptr<Alignments> dtAlignments( theMuonAlignables->dtAlignments());
771 std::auto_ptr<Alignments> cscAlignments(theMuonAlignables->cscAlignments());
773 std::auto_ptr<AlignmentErrorsExtended> dtAlignmentErrExt(
774 theMuonAlignables->dtAlignmentErrorsExtended()
776 std::auto_ptr<AlignmentErrorsExtended> cscAlignmentErrExt(
777 theMuonAlignables->cscAlignmentErrorsExtended()
781 &(*theMuonDTGeometry),
783 &(*dtAlignmentErrExt),
788 &(*theMuonCSCGeometry),
790 &(*cscAlignmentErrExt),
797 template<
class G,
class Rcd,
class ErrRcd>
808 if (checkDbAlignmentValidity_) {
816 <<
"@SUB=PCLTrackerAlProducer::applyDB"
817 <<
"\nTrying to apply " << record.key().name()
818 <<
" with multiple IOVs in tag.\nValidity range is "
824 record.get(alignments);
827 setup.
get<ErrRcd>().
get(alignmentErrExt);
835 template<
class G,
class DeformationRcd>
842 const DeformationRcd &
record = setup.
get<DeformationRcd>();
843 if (checkDbAlignmentValidity_) {
851 <<
"@SUB=PCLTrackerAlProducer::applyDB"
852 <<
"\nTrying to apply " << record.key().name()
853 <<
" with multiple IOVs in tag.\nValidity range is "
858 record.get(surfaceDeformations);
870 if (doTracker_ && useSurvey_) {
871 bool tkSurveyBool = watchTkSurveyRcd.check(setup);
872 bool tkSurveyErrBool = watchTkSurveyErrExtRcd.check(setup);
874 if (tkSurveyBool || tkSurveyErrBool) {
881 theSurveyValues = &(*surveys);
882 theSurveyErrors = &(*surveyErrors);
884 addSurveyInfo(theTrackerAlignables);
888 if (doMuon_ && useSurvey_) {
889 bool DTSurveyBool = watchTkSurveyRcd.check(setup);
890 bool DTSurveyErrBool = watchTkSurveyErrExtRcd.check(setup);
891 bool CSCSurveyBool = watchTkSurveyRcd.check(setup);
892 bool CSCSurveyErrBool = watchTkSurveyErrExtRcd.check(setup);
894 if (DTSurveyBool || DTSurveyErrBool || CSCSurveyBool || CSCSurveyErrBool) {
905 theSurveyValues = &(*dtSurveys);
906 theSurveyErrors = &(*dtSurveyErrors);
908 Alignables barrels = theMuonAlignables->DTBarrel();
909 for (
auto iter = barrels.begin();
910 iter != barrels.end();
912 addSurveyInfo(*iter);
916 theSurveyValues = &(*cscSurveys);
917 theSurveyErrors = &(*cscSurveyErrors);
919 Alignables endcaps = theMuonAlignables->CSCEndcaps();
920 for (
auto iter = endcaps.begin();
921 iter != endcaps.end();
923 addSurveyInfo(*iter);
934 edm::LogInfo(
"Alignment") <<
"ADDING THE SURVEY INFORMATION";
937 for (
size_t i = 0;
i < comp.size(); ++
i) {
938 addSurveyInfo(comp[
i]);
943 if (alignable->
id() != error.
rawId() ||
946 <<
"Error reading survey info from DB. Mismatched id!";
949 const CLHEP::Hep3Vector& pos = theSurveyValues->m_align[theSurveyIndex].translation();
950 const CLHEP::HepRotation&
rot = theSurveyValues->m_align[theSurveyIndex].rotation();
954 rot.yx(), rot.yy(), rot.yz(),
955 rot.zx(), rot.zy(), rot.zz()));
973 if (theAlignmentAlgo->processesEvents() && nevent_ == 0) {
979 edm::LogError(
"Alignment") <<
"@SUB=PCLTrackerAlProducer::finish"
980 <<
"Did not process any events, stop "
981 <<
"without terminating algorithm.";
985 edm::LogInfo(
"Alignment") <<
"@SUB=PCLTrackerAlProducer::finish"
986 <<
"Terminating algorithm.";
987 theAlignmentAlgo->terminate();
989 if (saveToDB_ || saveApeToDB_ || saveDeformationsToDB_) {
994 storeAlignmentsToDB();
997 edm::LogInfo(
"Alignment") <<
"@SUB=PCLTrackerAlProducer::finish"
998 <<
"no payload to be stored!";
1007 if (theAlignmentAlgo->processesEvents() && nevent_ == 0) {
1009 edm::LogError(
"Alignment") <<
"@SUB=PCLTrackerAlProducer::endOfJob"
1010 <<
"Did not process any events in last loop, "
1011 <<
"do not dare to store to DB.";
1015 RunRanges uniqueRunRanges(makeNonOverlappingRunRanges(runRangeSelectionVPSet));
1018 if (uniqueRunRanges.empty()) {
1021 uniqueRunRanges.push_back(runRange);
1024 std::vector<AlgebraicVector> beamSpotParameters;
1026 for (
auto iRunRange = uniqueRunRanges.begin();
1027 iRunRange != uniqueRunRanges.end();
1030 theAlignmentAlgo->setParametersForRunRange(*iRunRange);
1033 if (saveToDB_ || saveApeToDB_ || saveDeformationsToDB_) {
1034 writeForRunRange((*iRunRange).first);
1038 if (theExtraAlignables) {
1039 Alignables &alis = theExtraAlignables->beamSpot();
1040 if (!alis.empty()) {
1042 beamSpotParameters.push_back(beamSpotAliPars->
parameters());
1047 if (theExtraAlignables) {
1048 std::ostringstream bsOutput;
1050 auto itPar = beamSpotParameters.begin();
1051 for (
auto iRunRange = uniqueRunRanges.begin();
1052 iRunRange != uniqueRunRanges.end();
1053 ++iRunRange, ++itPar) {
1054 bsOutput <<
"Run range: " << (*iRunRange).first <<
" - " << (*iRunRange).second <<
"\n";
1055 bsOutput <<
" Displacement: x=" << (*itPar)[0] <<
", y=" << (*itPar)[1] <<
"\n";
1056 bsOutput <<
" Slope: dx/dz=" << (*itPar)[2] <<
", dy/dz=" << (*itPar)[3] <<
"\n";
1059 edm::LogInfo(
"Alignment") <<
"@SUB=PCLTrackerAlProducer::endOfJob"
1060 <<
"Parameters for alignable beamspot:\n"
1070 static bool oldRunRangeSelectionWarning =
false;
1076 if (!RunRangeSelectionVPSet.empty()) {
1078 std::map<RunNumber,RunNumber> uniqueFirstRunNumbers;
1080 for (
auto ipset = RunRangeSelectionVPSet.begin();
1081 ipset != RunRangeSelectionVPSet.end();
1083 const std::vector<std::string> RunRangeStrings = (*ipset).getParameter<std::vector<std::string> >(
"RunRanges");
1085 for (
auto irange = RunRangeStrings.begin();
1086 irange != RunRangeStrings.end();
1089 if ((*irange).find(
':') == std::string::npos) {
1092 long int temp = strtol((*irange).c_str(), 0, 0);
1093 if (temp!=-1) first =
temp;
1097 if (!oldRunRangeSelectionWarning) {
1098 edm::LogWarning(
"BadConfig") <<
"@SUB=PCLTrackerAlProducer::makeNonOverlappingRunRanges"
1099 <<
"Config file contains old format for 'RunRangeSelection'. Only the start run\n"
1100 <<
"number is used internally. The number of the last run is ignored and can be\n"
1101 <<
"safely removed from the config file.\n";
1102 oldRunRangeSelectionWarning =
true;
1105 std::vector<std::string> tokens =
edm::tokenize(*irange,
":");
1108 temp = strtol(tokens[0].c_str(), 0, 0);
1109 if (temp!=-1) first =
temp;
1115 for (
auto iFirst = uniqueFirstRunNumbers.begin();
1116 iFirst != uniqueFirstRunNumbers.end();
1118 uniqueRunRanges.push_back(std::pair<RunNumber,RunNumber>((*iFirst).first, endValue));
1121 for (
size_t i = 0;
i < uniqueRunRanges.size()-1; ++
i) {
1122 uniqueRunRanges[
i].second = uniqueRunRanges[
i+1].first - 1;
1126 uniqueRunRanges.push_back(std::pair<RunNumber,RunNumber>(theFirstRun, endValue));
1129 return uniqueRunRanges;
1139 if (globalPositions_) {
1145 Alignments* alignments = theTrackerAlignables->alignments();
1148 writeDB(alignments,
"TrackerAlignmentRcd",
1149 alignmentErrExt,
"TrackerAlignmentErrorExtendedRcd",
1155 if (doTracker_ && saveDeformationsToDB_) {
1157 writeDB(alignmentSurfaceDeformations,
"TrackerSurfaceDeformationRcd", time);
1163 if (globalPositions_) {
1169 Alignments* alignments = theMuonAlignables->dtAlignments();
1172 writeDB(alignments,
"DTAlignmentRcd",
1173 alignmentErrExt,
"DTAlignmentErrorExtendedRcd",
1178 alignments = theMuonAlignables->cscAlignments();
1179 alignmentErrExt = theMuonAlignables->cscAlignmentErrorsExtended();
1181 writeDB(alignments,
"CSCAlignmentRcd",
1182 alignmentErrExt,
"CSCAlignmentErrorExtendedRcd",
1201 delete tempAlignments;
1202 delete tempAlignmentErrExt;
1204 throw cms::Exception(
"NotAvailable") <<
"PoolDBOutputService not available";
1207 if (globalCoordinates &&
1208 globalCoordinates->
transform() != AlignTransform::Transform::Identity) {
1216 tempAlignments, tempAlignmentErrExt);
1219 delete alignmentErrExt;
1221 edm::LogInfo(
"Alignment") <<
"@SUB=PCLTrackerAlProducer::writeDB"
1222 <<
"globalCoordinates removed from alignments ("
1223 << alignRcd <<
") and errors (" << alignRcd <<
").";
1227 edm::LogInfo(
"Alignment") <<
"Writing Alignments for run " << time
1228 <<
" to " << alignRcd <<
".";
1233 delete tempAlignments;
1237 edm::LogInfo(
"Alignment") <<
"Writing AlignmentErrorsExtended for run "
1238 << time <<
" to " << errRcd <<
".";
1243 delete tempAlignmentErrExt;
1256 delete alignmentSurfaceDeformations;
1257 throw cms::Exception(
"NotAvailable") <<
"PoolDBOutputService not available";
1260 if (saveDeformationsToDB_) {
1261 edm::LogInfo(
"Alignment") <<
"Writing AlignmentSurfaceDeformations for run "
1262 << time <<
" to " << surfaceDeformationRcd <<
".";
1264 surfaceDeformationRcd);
1268 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).
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 .
bool getByToken(EDGetToken token, Handle< PROD > &result) const
#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
void storeAlignmentsToDB()
Writes Alignments (i.e. Records) to database-file.
Tracker-AlignmentProducer for Prompt Calibration Loop (PCL)
static const IOVSyncValue & endOfTime()
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.
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
bool getByToken(EDGetToken token, Handle< PROD > &result) const
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.
const AlignableSurface & surface() const
Return the Surface (global position and orientation) of the object.
std::pair< const Trajectory *, const reco::Track * > ConstTrajTrackPair
virtual void beginJob() override
std::vector< RunRange > RunRanges
void createGeometries(const edm::EventSetup &, const TrackerTopology *)
Creates ideal geometry from IdealGeometryRecord.
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 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 &)