63 theAlignmentParameterStore(0),
64 theTrackerAlignables(0),
66 theExtraAlignables(0),
70 theParameterSet(config),
71 stNFixAlignables_ (config.getParameter<int> (
"nFixAlignables")),
72 stRandomShift_ (config.getParameter<double> (
"randomShift")),
73 stRandomRotation_ (config.getParameter<double> (
"randomRotation")),
74 applyDbAlignment_ (config.getUntrackedParameter<bool>(
"applyDbAlignment")),
75 checkDbAlignmentValidity_(config.getUntrackedParameter<bool>(
"checkDbAlignmentValidity")),
76 doMisalignmentScenario_ (config.getParameter<bool> (
"doMisalignmentScenario")),
77 saveToDB_ (config.getParameter<bool> (
"saveToDB")),
78 saveApeToDB_ (config.getParameter<bool> (
"saveApeToDB")),
79 saveDeformationsToDB_ (config.getParameter<bool> (
"saveDeformationsToDB")),
80 doTracker_ (config.getUntrackedParameter<bool>(
"doTracker") ),
81 doMuon_ (config.getUntrackedParameter<bool>(
"doMuon") ),
82 useExtras_ (config.getUntrackedParameter<bool>(
"useExtras")),
83 useSurvey_ (config.getParameter<bool> (
"useSurvey")),
86 tjTkAssociationMapTag_ (config.getParameter<edm::
InputTag>(
"tjTkAssociationMapTag")),
87 beamSpotTag_ (config.getParameter<edm::
InputTag>(
"beamSpotTag")),
88 tkLasBeamTag_ (config.getParameter<edm::
InputTag>(
"tkLasBeamTag")),
89 clusterValueMapTag_ (config.getParameter<edm::
InputTag>(
"hitPrescaleMapTag")),
92 createAlignmentAlgorithm(config);
93 createCalibrations (config);
94 createMonitors (config);
101 delete theAlignmentAlgo;
103 for (
auto iCal = theCalibrations.begin();
104 iCal != theCalibrations.end();
111 delete theAlignmentParameterStore;
112 delete theTrackerAlignables;
113 delete theMuonAlignables;
114 delete theExtraAlignables;
115 delete globalPositions_;
130 for (
auto iCal = theCalibrations.begin();
131 iCal != theCalibrations.end();
133 (*iCal)->beginOfJob(theTrackerAlignables,
138 for (
auto monitor = theMonitors.begin();
139 monitor != theMonitors.end();
141 (*monitor)->beginOfJob(theTrackerAlignables,
143 theAlignmentParameterStore);
153 for (
auto monitor = theMonitors.begin();
154 monitor != theMonitors.end();
156 (*monitor)->endOfJob();
159 for (
auto iCal = theCalibrations.begin();
160 iCal != theCalibrations.end();
170 if (setupChanged(setup)) {
171 edm::LogInfo(
"Alignment") <<
"@SUB=PCLTrackerAlProducer::beginRun"
172 <<
"EventSetup-Record changed.";
173 initAlignmentAlgorithm(setup);
177 theAlignmentAlgo->beginRun(setup);
179 if (setupChanged(setup)) {
180 initAlignmentAlgorithm(setup);
198 if (tkLasBeamTag_.encode().size()) {
204 theAlignmentAlgo->endRun(
EndRunInfo(run.
id(), &(*lasBeams),
207 edm::LogInfo(
"Alignment") <<
"@SUB=PCLTrackerAlProducer::endRun"
208 <<
"No Tk LAS beams to forward to algorithm.";
209 theAlignmentAlgo->endRun(
EndRunInfo(run.
id(), 0, 0), setup);
219 theAlignmentAlgo->beginLuminosityBlock(setup);
228 theAlignmentAlgo->endLuminosityBlock(setup);
235 if (!theAlignmentAlgo->processesEvents()) {
237 <<
"Skipping event. The current configuration "
238 <<
"of the alignment algorithm does not need "
239 <<
"to process any events.";
243 if (setupChanged(setup)) {
244 edm::LogInfo(
"Alignment") <<
"@SUB=PCLTrackerAlProducer::analyze"
245 <<
"EventSetup-Record changed.";
246 initAlignmentAlgorithm(setup);
249 if (nevent_== 0 && theExtraAlignables) {
256 readInSurveyRcds(setup);
262 if (event.
getByLabel(tjTkAssociationMapTag_, handleTrajTracksCollection)) {
265 for (
auto iter = handleTrajTracksCollection->begin();
266 iter != handleTrajTracksCollection->end();
273 if (clusterValueMapTag_.encode().size()) {
275 event.getByLabel(clusterValueMapTag_, clusterValueMap);
276 clusterValueMapPtr = &(*clusterValueMap);
287 for (
auto monitor = theMonitors.begin();
288 monitor != theMonitors.end();
290 (*monitor)->duringLoop(event, setup, trajTracks);
294 edm::LogError(
"Alignment") <<
"@SUB=PCLTrackerAlProducer::analyze"
295 <<
"No track collection found: skipping event";
319 if (!theAlignmentAlgo) {
321 <<
"Couldn't find the called alignment algorithm: " << algoName;
330 std::vector<std::string> monitors = monitorConfig.
getUntrackedParameter<std::vector<std::string>>(
"monitors");
332 for (
auto miter = monitors.begin();
333 miter != monitors.end();
340 throw cms::Exception(
"BadConfig") <<
"Couldn't find monitor named "
344 theMonitors.push_back(newMonitor);
354 for (
auto iCalib = calibrations.begin();
355 iCalib != calibrations.end();
357 theCalibrations.push_back(
359 iCalib->getParameter<
std::string>(
"calibrationName"), *iCalib
366 if (!theCalibrations.empty()) {
367 if (theAlignmentAlgo->supportsCalibrations()) {
368 theAlignmentAlgo->addCalibrations(theCalibrations);
372 <<
"[TrackerAlignmentProducerForPCL::init]\n"
373 <<
"Configured " << theCalibrations.size() <<
" calibration(s) "
374 <<
"for algorithm not supporting it.";
388 bool changed =
false;
390 if (watchIdealGeometryRcd.check(setup)) {
394 if (watchGlobalPositionRcd.check(setup)) {
399 if (watchTrackerAlRcd.check(setup)) {
403 if (watchTrackerAlErrorExtRcd.check(setup)) {
407 if (watchTrackerSurDeRcd.check(setup)) {
413 if (watchDTAlRcd.check(setup)) {
417 if (watchDTAlErrExtRcd.check(setup)) {
421 if (watchCSCAlRcd.check(setup)) {
425 if (watchCSCAlErrExtRcd.check(setup)) {
449 createGeometries(setup);
451 applyAlignmentsToDB(setup);
452 createAlignables(tTopo);
453 buildParameterStore();
458 edm::LogInfo(
"Alignment") <<
"@SUB=PCLTrackerAlProducer::initAlignmentAlgorithm"
459 <<
"Initializing alignment algorithm.";
460 theAlignmentAlgo->initialize(setup,
461 theTrackerAlignables,
464 theAlignmentParameterStore);
466 applyAlignmentsToGeometry();
473 event.getByLabel(beamSpotTag_, theBeamSpot);
475 if (theExtraAlignables) {
476 edm::LogInfo(
"Alignment") <<
"@SUB=TrackerAlignmentProducerForPCL::initBeamSpot"
477 <<
"Initializing AlignableBeamSpot";
479 theExtraAlignables->initializeBeamSpot(theBeamSpot->x0(),
483 theBeamSpot->dydz());
500 theTrackerGeometry = boost::shared_ptr<TrackerGeometry>(
501 trackerBuilder.
build(&(*geometricDet), *ptp )
512 theMuonDTGeometry = boost::shared_ptr<DTGeometry> (
new DTGeometry);
513 theMuonCSCGeometry = boost::shared_ptr<CSCGeometry>(
new CSCGeometry);
517 DTGeometryBuilder.
build (theMuonDTGeometry, &(*cpv), *mdc);
518 CSCGeometryBuilder.
build(theMuonCSCGeometry, &(*cpv), *mdc);
527 if (applyDbAlignment_) {
533 globalPositions_ =
new Alignments(*globalAlignments);
539 &(*theTrackerGeometry),
544 applyDB<TrackerGeometry,
546 &(*theTrackerGeometry),
555 &(*theMuonDTGeometry),
563 &(*theMuonCSCGeometry),
580 theMuonAlignables =
new AlignableMuon(&(*theMuonDTGeometry), &(*theMuonCSCGeometry));
593 edm::LogInfo(
"Alignment") <<
"@SUB=PCLTrackerAlProducer::buildParameterStore"
594 <<
"Creating AlignmentParameterBuilder";
605 if (stNFixAlignables_ > 0) {
606 alignmentParameterBuilder.fixAlignables(stNFixAlignables_);
610 Alignables theAlignables = alignmentParameterBuilder.alignables();
611 edm::LogInfo(
"Alignment") <<
"@SUB=PCLTrackerAlProducer::buildParameterStore"
612 <<
"got " << theAlignables.size() <<
" alignables";
616 edm::LogInfo(
"Alignment") <<
"@SUB=PCLTrackerAlProducer::buildParameterStore"
617 <<
"AlignmentParameterStore created!";
627 if (doMisalignmentScenario_ && (doTracker_ || doMuon_)) {
628 edm::LogInfo(
"Alignment") <<
"@SUB=PCLTrackerAlProducer::beginOfJob"
629 <<
"Applying misalignment scenario to "
630 << (doTracker_ ?
"tracker" :
"")
631 << (doMuon_ ? (doTracker_ ?
" and muon" :
"muon") :
".");
644 edm::LogInfo(
"Alignment") <<
"@SUB=TrackerAlignmentProducerForPCL::beginOfJob"
645 <<
"NOT applying misalignment scenario!";
651 simpleMisalignment(theAlignmentParameterStore->alignables(), sParSel, stRandomShift_, stRandomRotation_,
true);
659 std::ostringstream
output;
661 if (shift > 0. || rot > 0.) {
662 output <<
"Adding random flat shift of max size " << shift
663 <<
" and adding random flat rotation of max size " << rot <<
" to ";
665 std::vector<bool> commSel(0);
666 if (selection !=
"-1") {
672 <<
"[PCLTrackerAlProducer::simpleMisalignment_]\n"
673 <<
"Expect selection string '" << selection <<
"' to be at least of length "
675 <<
"(Most probably you have to adjust the parameter 'parameterSelectorSimple'.)";
678 for (
auto cIter = cSel.begin();
681 commSel.push_back(*cIter ==
'0' ?
false :
true);
683 output <<
"parameters defined by (" << selection
684 <<
"), representing (x,y,z,alpha,beta,gamma),";
687 output <<
"the active parameters of each alignable,";
689 output <<
" in " << (local ?
"local" :
"global") <<
" frame.";
691 for (
auto it = alivec.begin();
698 double s0 = 0., s1 = 0.,
s2 = 0.;
725 output <<
"No simple misalignment added!";
728 edm::LogInfo(
"Alignment") <<
"@SUB=PCLTrackerAlProducer::simpleMisalignment_" << output.str();
735 edm::LogInfo(
"Alignment") <<
"@SUB=PCLTrackerAlProducer::startingNewLoop"
736 <<
"Now physically apply alignments to geometry...";
742 std::auto_ptr<Alignments> alignments( theTrackerAlignables->alignments());
743 std::auto_ptr<AlignmentErrorsExtended> alignmentErrExt(theTrackerAlignables->alignmentErrors());
744 std::auto_ptr<AlignmentSurfaceDeformations> aliDeforms( theTrackerAlignables->surfaceDeformations());
747 &(*theTrackerGeometry),
754 &(*theTrackerGeometry),
760 std::auto_ptr<Alignments> dtAlignments( theMuonAlignables->dtAlignments());
761 std::auto_ptr<Alignments> cscAlignments(theMuonAlignables->cscAlignments());
763 std::auto_ptr<AlignmentErrorsExtended> dtAlignmentErrExt(
764 theMuonAlignables->dtAlignmentErrorsExtended()
766 std::auto_ptr<AlignmentErrorsExtended> cscAlignmentErrExt(
767 theMuonAlignables->cscAlignmentErrorsExtended()
771 &(*theMuonDTGeometry),
773 &(*dtAlignmentErrExt),
778 &(*theMuonCSCGeometry),
780 &(*cscAlignmentErrExt),
787 template<
class G,
class Rcd,
class ErrRcd>
798 if (checkDbAlignmentValidity_) {
806 <<
"@SUB=PCLTrackerAlProducer::applyDB"
807 <<
"\nTrying to apply " << record.key().name()
808 <<
" with multiple IOVs in tag.\nValidity range is "
814 record.get(alignments);
817 setup.
get<ErrRcd>().
get(alignmentErrExt);
825 template<
class G,
class DeformationRcd>
832 const DeformationRcd &
record = setup.
get<DeformationRcd>();
833 if (checkDbAlignmentValidity_) {
841 <<
"@SUB=PCLTrackerAlProducer::applyDB"
842 <<
"\nTrying to apply " << record.key().name()
843 <<
" with multiple IOVs in tag.\nValidity range is "
848 record.get(surfaceDeformations);
860 if (doTracker_ && useSurvey_) {
861 bool tkSurveyBool = watchTkSurveyRcd.check(setup);
862 bool tkSurveyErrBool = watchTkSurveyErrExtRcd.check(setup);
864 if (tkSurveyBool || tkSurveyErrBool) {
871 theSurveyValues = &(*surveys);
872 theSurveyErrors = &(*surveyErrors);
874 addSurveyInfo(theTrackerAlignables);
878 if (doMuon_ && useSurvey_) {
879 bool DTSurveyBool = watchTkSurveyRcd.check(setup);
880 bool DTSurveyErrBool = watchTkSurveyErrExtRcd.check(setup);
881 bool CSCSurveyBool = watchTkSurveyRcd.check(setup);
882 bool CSCSurveyErrBool = watchTkSurveyErrExtRcd.check(setup);
884 if (DTSurveyBool || DTSurveyErrBool || CSCSurveyBool || CSCSurveyErrBool) {
895 theSurveyValues = &(*dtSurveys);
896 theSurveyErrors = &(*dtSurveyErrors);
898 Alignables barrels = theMuonAlignables->DTBarrel();
899 for (
auto iter = barrels.begin();
900 iter != barrels.end();
902 addSurveyInfo(*iter);
906 theSurveyValues = &(*cscSurveys);
907 theSurveyErrors = &(*cscSurveyErrors);
909 Alignables endcaps = theMuonAlignables->CSCEndcaps();
910 for (
auto iter = endcaps.begin();
911 iter != endcaps.end();
913 addSurveyInfo(*iter);
924 edm::LogInfo(
"Alignment") <<
"ADDING THE SURVEY INFORMATION";
927 for (
size_t i = 0;
i < comp.size(); ++
i) {
928 addSurveyInfo(comp[
i]);
933 if (alignable->
id() != error.
rawId() ||
936 <<
"Error reading survey info from DB. Mismatched id!";
939 const CLHEP::Hep3Vector& pos = theSurveyValues->m_align[theSurveyIndex].translation();
940 const CLHEP::HepRotation&
rot = theSurveyValues->m_align[theSurveyIndex].rotation();
944 rot.yx(), rot.yy(), rot.yz(),
945 rot.zx(), rot.zy(), rot.zz()));
963 if (theAlignmentAlgo->processesEvents() && nevent_ == 0) {
969 edm::LogError(
"Alignment") <<
"@SUB=PCLTrackerAlProducer::finish"
970 <<
"Did not process any events, stop "
971 <<
"without terminating algorithm.";
975 edm::LogInfo(
"Alignment") <<
"@SUB=PCLTrackerAlProducer::finish"
976 <<
"Terminating algorithm.";
977 theAlignmentAlgo->terminate();
979 storeAlignmentsToDB();
986 if (theAlignmentAlgo->processesEvents() && nevent_ == 0) {
988 edm::LogError(
"Alignment") <<
"@SUB=PCLTrackerAlProducer::endOfJob"
989 <<
"Did not process any events in last loop, "
990 <<
"do not dare to store to DB.";
994 RunRanges uniqueRunRanges(makeNonOverlappingRunRanges(runRangeSelectionVPSet));
997 if (uniqueRunRanges.empty()) {
1000 uniqueRunRanges.push_back(runRange);
1003 std::vector<AlgebraicVector> beamSpotParameters;
1005 for (
auto iRunRange = uniqueRunRanges.begin();
1006 iRunRange != uniqueRunRanges.end();
1009 theAlignmentAlgo->setParametersForRunRange(*iRunRange);
1012 if (saveToDB_ || saveApeToDB_ || saveDeformationsToDB_) {
1013 writeForRunRange((*iRunRange).first);
1017 if (theExtraAlignables) {
1018 Alignables &alis = theExtraAlignables->beamSpot();
1019 if (!alis.empty()) {
1021 beamSpotParameters.push_back(beamSpotAliPars->
parameters());
1026 if (theExtraAlignables) {
1027 std::ostringstream bsOutput;
1029 auto itPar = beamSpotParameters.begin();
1030 for (
auto iRunRange = uniqueRunRanges.begin();
1031 iRunRange != uniqueRunRanges.end();
1032 ++iRunRange, ++itPar) {
1033 bsOutput <<
"Run range: " << (*iRunRange).first <<
" - " << (*iRunRange).second <<
"\n";
1034 bsOutput <<
" Displacement: x=" << (*itPar)[0] <<
", y=" << (*itPar)[1] <<
"\n";
1035 bsOutput <<
" Slope: dx/dz=" << (*itPar)[2] <<
", dy/dz=" << (*itPar)[3] <<
"\n";
1038 edm::LogInfo(
"Alignment") <<
"@SUB=PCLTrackerAlProducer::endOfJob"
1039 <<
"Parameters for alignable beamspot:\n"
1049 static bool oldRunRangeSelectionWarning =
false;
1055 if (!RunRangeSelectionVPSet.empty()) {
1057 std::map<RunNumber,RunNumber> uniqueFirstRunNumbers;
1059 for (
auto ipset = RunRangeSelectionVPSet.begin();
1060 ipset != RunRangeSelectionVPSet.end();
1062 const std::vector<std::string> RunRangeStrings = (*ipset).getParameter<std::vector<std::string> >(
"RunRanges");
1064 for (
auto irange = RunRangeStrings.begin();
1065 irange != RunRangeStrings.end();
1068 if ((*irange).find(
':') == std::string::npos) {
1071 long int temp = strtol((*irange).c_str(), 0, 0);
1072 if (temp!=-1) first =
temp;
1076 if (!oldRunRangeSelectionWarning) {
1077 edm::LogWarning(
"BadConfig") <<
"@SUB=PCLTrackerAlProducer::makeNonOverlappingRunRanges"
1078 <<
"Config file contains old format for 'RunRangeSelection'. Only the start run\n"
1079 <<
"number is used internally. The number of the last run is ignored and can be\n"
1080 <<
"safely removed from the config file.\n";
1081 oldRunRangeSelectionWarning =
true;
1084 std::vector<std::string> tokens =
edm::tokenize(*irange,
":");
1087 temp = strtol(tokens[0].c_str(), 0, 0);
1088 if (temp!=-1) first =
temp;
1094 for (
auto iFirst = uniqueFirstRunNumbers.begin();
1095 iFirst != uniqueFirstRunNumbers.end();
1097 uniqueRunRanges.push_back(std::pair<RunNumber,RunNumber>((*iFirst).first, endValue));
1100 for (
size_t i = 0;
i < uniqueRunRanges.size()-1; ++
i) {
1101 uniqueRunRanges[
i].second = uniqueRunRanges[
i+1].first - 1;
1105 uniqueRunRanges.push_back(std::pair<RunNumber,RunNumber>(theFirstRun, endValue));
1108 return uniqueRunRanges;
1118 if (globalPositions_) {
1124 Alignments* alignments = theTrackerAlignables->alignments();
1127 writeDB(alignments,
"TrackerAlignmentRcd",
1128 alignmentErrExt,
"TrackerAlignmentErrorExtendedRcd",
1134 if (doTracker_ && saveDeformationsToDB_) {
1136 writeDB(alignmentSurfaceDeformations,
"TrackerSurfaceDeformationRcd", time);
1142 if (globalPositions_) {
1148 Alignments* alignments = theMuonAlignables->dtAlignments();
1151 writeDB(alignments,
"DTAlignmentRcd",
1152 alignmentErrExt,
"DTAlignmentErrorExtendedRcd",
1157 alignments = theMuonAlignables->cscAlignments();
1158 alignmentErrExt = theMuonAlignables->cscAlignmentErrorsExtended();
1160 writeDB(alignments,
"CSCAlignmentRcd",
1161 alignmentErrExt,
"CSCAlignmentErrorExtendedRcd",
1180 delete tempAlignments;
1181 delete tempAlignmentErrExt;
1183 throw cms::Exception(
"NotAvailable") <<
"PoolDBOutputService not available";
1186 if (globalCoordinates &&
1187 globalCoordinates->
transform() != AlignTransform::Transform::Identity) {
1195 tempAlignments, tempAlignmentErrExt);
1198 delete alignmentErrExt;
1200 edm::LogInfo(
"Alignment") <<
"@SUB=PCLTrackerAlProducer::writeDB"
1201 <<
"globalCoordinates removed from alignments ("
1202 << alignRcd <<
") and errors (" << alignRcd <<
").";
1206 edm::LogInfo(
"Alignment") <<
"Writing Alignments for run " << time
1207 <<
" to " << alignRcd <<
".";
1212 delete tempAlignments;
1216 edm::LogInfo(
"Alignment") <<
"Writing AlignmentErrorsExtended for run "
1217 << time <<
" to " << errRcd <<
".";
1222 delete tempAlignmentErrExt;
1235 delete alignmentSurfaceDeformations;
1236 throw cms::Exception(
"NotAvailable") <<
"PoolDBOutputService not available";
1239 if (saveDeformationsToDB_) {
1240 edm::LogInfo(
"Alignment") <<
"Writing AlignmentSurfaceDeformations for run "
1241 << time <<
" to " << surfaceDeformationRcd <<
".";
1243 surfaceDeformationRcd);
1247 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
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
TrackerGeometry * build(const GeometricDet *gd, const PTrackerParameters &ptp)
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 &)