64 theAlignmentParameterStore(0),
65 theTrackerAlignables(0),
67 theExtraAlignables(0),
71 theParameterSet(config),
72 stNFixAlignables_ (config.getParameter<int> (
"nFixAlignables")),
73 stRandomShift_ (config.getParameter<double> (
"randomShift")),
74 stRandomRotation_ (config.getParameter<double> (
"randomRotation")),
75 applyDbAlignment_ (config.getUntrackedParameter<bool>(
"applyDbAlignment")),
76 checkDbAlignmentValidity_(config.getUntrackedParameter<bool>(
"checkDbAlignmentValidity")),
77 doMisalignmentScenario_ (config.getParameter<bool> (
"doMisalignmentScenario")),
78 saveToDB_ (config.getParameter<bool> (
"saveToDB")),
79 saveApeToDB_ (config.getParameter<bool> (
"saveApeToDB")),
80 saveDeformationsToDB_ (config.getParameter<bool> (
"saveDeformationsToDB")),
81 doTracker_ (config.getUntrackedParameter<bool>(
"doTracker") ),
82 doMuon_ (config.getUntrackedParameter<bool>(
"doMuon") ),
83 useExtras_ (config.getUntrackedParameter<bool>(
"useExtras")),
84 useSurvey_ (config.getParameter<bool> (
"useSurvey")),
87 tjTkAssociationMapTag_ (config.getParameter<edm::
InputTag>(
"tjTkAssociationMapTag")),
88 beamSpotTag_ (config.getParameter<edm::
InputTag>(
"beamSpotTag")),
89 tkLasBeamTag_ (config.getParameter<edm::
InputTag>(
"tkLasBeamTag")),
90 clusterValueMapTag_ (config.getParameter<edm::
InputTag>(
"hitPrescaleMapTag")),
94 tjTkAssociationMapToken = consumes<TrajTrackAssociationCollection>(tjTkAssociationMapTag_);
95 beamSpotToken = consumes<reco::BeamSpot>(beamSpotTag_);
96 tkLasBeamToken = consumes<TkFittedLasBeamCollection>(tkLasBeamTag_);
97 tsosVectorToken = consumes<TsosVectorCollection>(tkLasBeamTag_);
98 clusterValueMapToken = consumes<AliClusterValueMap>(clusterValueMapTag_);
101 createAlignmentAlgorithm(config);
102 createCalibrations (config);
103 createMonitors (config);
110 delete theAlignmentAlgo;
112 for (
auto iCal = theCalibrations.begin();
113 iCal != theCalibrations.end();
120 delete theAlignmentParameterStore;
121 delete theTrackerAlignables;
122 delete theMuonAlignables;
123 delete theExtraAlignables;
124 delete globalPositions_;
139 for (
auto iCal = theCalibrations.begin();
140 iCal != theCalibrations.end();
142 (*iCal)->beginOfJob(theTrackerAlignables,
147 for (
auto monitor = theMonitors.begin();
148 monitor != theMonitors.end();
150 (*monitor)->beginOfJob(theTrackerAlignables,
152 theAlignmentParameterStore);
162 for (
auto monitor = theMonitors.begin();
163 monitor != theMonitors.end();
165 (*monitor)->endOfJob();
168 for (
auto iCal = theCalibrations.begin();
169 iCal != theCalibrations.end();
179 if (setupChanged(setup)) {
180 edm::LogInfo(
"Alignment") <<
"@SUB=PCLTrackerAlProducer::beginRun"
181 <<
"EventSetup-Record changed.";
182 initAlignmentAlgorithm(setup);
186 theAlignmentAlgo->beginRun(setup);
188 if (setupChanged(setup)) {
189 initAlignmentAlgorithm(setup);
207 if (tkLasBeamTag_.encode().size()) {
213 theAlignmentAlgo->endRun(
EndRunInfo(run.
id(), &(*lasBeams),
216 edm::LogInfo(
"Alignment") <<
"@SUB=PCLTrackerAlProducer::endRun"
217 <<
"No Tk LAS beams to forward to algorithm.";
218 theAlignmentAlgo->endRun(
EndRunInfo(run.
id(), 0, 0), setup);
228 theAlignmentAlgo->beginLuminosityBlock(setup);
237 theAlignmentAlgo->endLuminosityBlock(setup);
244 if (!theAlignmentAlgo->processesEvents()) {
246 <<
"Skipping event. The current configuration "
247 <<
"of the alignment algorithm does not need "
248 <<
"to process any events.";
252 if (setupChanged(setup)) {
253 edm::LogInfo(
"Alignment") <<
"@SUB=PCLTrackerAlProducer::analyze"
254 <<
"EventSetup-Record changed.";
255 initAlignmentAlgorithm(setup);
258 if (nevent_== 0 && theExtraAlignables) {
265 readInSurveyRcds(setup);
271 if (event.
getByToken(tjTkAssociationMapToken, handleTrajTracksCollection)) {
274 for (
auto iter = handleTrajTracksCollection->begin();
275 iter != handleTrajTracksCollection->end();
282 if (clusterValueMapTag_.encode().size()) {
284 event.getByToken(clusterValueMapToken, clusterValueMap);
285 clusterValueMapPtr = &(*clusterValueMap);
296 for (
auto monitor = theMonitors.begin();
297 monitor != theMonitors.end();
299 (*monitor)->duringLoop(event, setup, trajTracks);
303 edm::LogError(
"Alignment") <<
"@SUB=PCLTrackerAlProducer::analyze"
304 <<
"No track collection found: skipping event";
328 if (!theAlignmentAlgo) {
330 <<
"Couldn't find the called alignment algorithm: " << algoName;
339 std::vector<std::string> monitors = monitorConfig.
getUntrackedParameter<std::vector<std::string>>(
"monitors");
341 for (
auto miter = monitors.begin();
342 miter != monitors.end();
349 throw cms::Exception(
"BadConfig") <<
"Couldn't find monitor named "
353 theMonitors.push_back(newMonitor);
363 for (
auto iCalib = calibrations.begin();
364 iCalib != calibrations.end();
366 theCalibrations.push_back(
368 iCalib->getParameter<
std::string>(
"calibrationName"), *iCalib
375 if (!theCalibrations.empty()) {
376 if (theAlignmentAlgo->supportsCalibrations()) {
377 theAlignmentAlgo->addCalibrations(theCalibrations);
381 <<
"[TrackerAlignmentProducerForPCL::init]\n"
382 <<
"Configured " << theCalibrations.size() <<
" calibration(s) "
383 <<
"for algorithm not supporting it.";
397 bool changed =
false;
399 if (watchIdealGeometryRcd.check(setup)) {
403 if (watchGlobalPositionRcd.check(setup)) {
408 if (watchTrackerAlRcd.check(setup)) {
412 if (watchTrackerAlErrorExtRcd.check(setup)) {
416 if (watchTrackerSurDeRcd.check(setup)) {
422 if (watchDTAlRcd.check(setup)) {
426 if (watchDTAlErrExtRcd.check(setup)) {
430 if (watchCSCAlRcd.check(setup)) {
434 if (watchCSCAlErrExtRcd.check(setup)) {
458 createGeometries(setup);
460 applyAlignmentsToDB(setup);
461 createAlignables(tTopo);
462 buildParameterStore();
467 edm::LogInfo(
"Alignment") <<
"@SUB=PCLTrackerAlProducer::initAlignmentAlgorithm"
468 <<
"Initializing alignment algorithm.";
469 theAlignmentAlgo->initialize(setup,
470 theTrackerAlignables,
473 theAlignmentParameterStore);
475 applyAlignmentsToGeometry();
482 event.getByToken(beamSpotToken, theBeamSpot);
484 if (theExtraAlignables) {
485 edm::LogInfo(
"Alignment") <<
"@SUB=TrackerAlignmentProducerForPCL::initBeamSpot"
486 <<
"Initializing AlignableBeamSpot";
488 theExtraAlignables->initializeBeamSpot(theBeamSpot->x0(),
492 theBeamSpot->dydz());
509 theTrackerGeometry = boost::shared_ptr<TrackerGeometry>(
510 trackerBuilder.
build(&(*geometricDet), *ptp )
521 theMuonDTGeometry = boost::shared_ptr<DTGeometry> (
new DTGeometry);
522 theMuonCSCGeometry = boost::shared_ptr<CSCGeometry>(
new CSCGeometry);
526 DTGeometryBuilder.
build (theMuonDTGeometry, &(*cpv), *mdc);
527 CSCGeometryBuilder.
build(theMuonCSCGeometry, &(*cpv), *mdc);
536 if (applyDbAlignment_) {
542 globalPositions_ =
new Alignments(*globalAlignments);
548 &(*theTrackerGeometry),
553 applyDB<TrackerGeometry,
555 &(*theTrackerGeometry),
564 &(*theMuonDTGeometry),
572 &(*theMuonCSCGeometry),
589 theMuonAlignables =
new AlignableMuon(&(*theMuonDTGeometry), &(*theMuonCSCGeometry));
602 edm::LogInfo(
"Alignment") <<
"@SUB=PCLTrackerAlProducer::buildParameterStore"
603 <<
"Creating AlignmentParameterBuilder";
614 if (stNFixAlignables_ > 0) {
615 alignmentParameterBuilder.fixAlignables(stNFixAlignables_);
619 Alignables theAlignables = alignmentParameterBuilder.alignables();
620 edm::LogInfo(
"Alignment") <<
"@SUB=PCLTrackerAlProducer::buildParameterStore"
621 <<
"got " << theAlignables.size() <<
" alignables";
625 edm::LogInfo(
"Alignment") <<
"@SUB=PCLTrackerAlProducer::buildParameterStore"
626 <<
"AlignmentParameterStore created!";
636 if (doMisalignmentScenario_ && (doTracker_ || doMuon_)) {
637 edm::LogInfo(
"Alignment") <<
"@SUB=PCLTrackerAlProducer::beginOfJob"
638 <<
"Applying misalignment scenario to "
639 << (doTracker_ ?
"tracker" :
"")
640 << (doMuon_ ? (doTracker_ ?
" and muon" :
"muon") :
".");
653 edm::LogInfo(
"Alignment") <<
"@SUB=TrackerAlignmentProducerForPCL::beginOfJob"
654 <<
"NOT applying misalignment scenario!";
660 simpleMisalignment(theAlignmentParameterStore->alignables(), sParSel, stRandomShift_, stRandomRotation_,
true);
668 std::ostringstream
output;
670 if (shift > 0. || rot > 0.) {
671 output <<
"Adding random flat shift of max size " << shift
672 <<
" and adding random flat rotation of max size " << rot <<
" to ";
674 std::vector<bool> commSel(0);
675 if (selection !=
"-1") {
681 <<
"[PCLTrackerAlProducer::simpleMisalignment_]\n"
682 <<
"Expect selection string '" << selection <<
"' to be at least of length "
684 <<
"(Most probably you have to adjust the parameter 'parameterSelectorSimple'.)";
687 for (
auto cIter = cSel.begin();
690 commSel.push_back(*cIter ==
'0' ?
false :
true);
692 output <<
"parameters defined by (" << selection
693 <<
"), representing (x,y,z,alpha,beta,gamma),";
696 output <<
"the active parameters of each alignable,";
698 output <<
" in " << (local ?
"local" :
"global") <<
" frame.";
700 for (
auto it = alivec.begin();
707 double s0 = 0., s1 = 0.,
s2 = 0.;
734 output <<
"No simple misalignment added!";
737 edm::LogInfo(
"Alignment") <<
"@SUB=PCLTrackerAlProducer::simpleMisalignment_" << output.str();
744 edm::LogInfo(
"Alignment") <<
"@SUB=PCLTrackerAlProducer::startingNewLoop"
745 <<
"Now physically apply alignments to geometry...";
751 std::auto_ptr<Alignments> alignments( theTrackerAlignables->alignments());
752 std::auto_ptr<AlignmentErrorsExtended> alignmentErrExt(theTrackerAlignables->alignmentErrors());
753 std::auto_ptr<AlignmentSurfaceDeformations> aliDeforms( theTrackerAlignables->surfaceDeformations());
756 &(*theTrackerGeometry),
763 &(*theTrackerGeometry),
769 std::auto_ptr<Alignments> dtAlignments( theMuonAlignables->dtAlignments());
770 std::auto_ptr<Alignments> cscAlignments(theMuonAlignables->cscAlignments());
772 std::auto_ptr<AlignmentErrorsExtended> dtAlignmentErrExt(
773 theMuonAlignables->dtAlignmentErrorsExtended()
775 std::auto_ptr<AlignmentErrorsExtended> cscAlignmentErrExt(
776 theMuonAlignables->cscAlignmentErrorsExtended()
780 &(*theMuonDTGeometry),
782 &(*dtAlignmentErrExt),
787 &(*theMuonCSCGeometry),
789 &(*cscAlignmentErrExt),
796 template<
class G,
class Rcd,
class ErrRcd>
807 if (checkDbAlignmentValidity_) {
815 <<
"@SUB=PCLTrackerAlProducer::applyDB"
816 <<
"\nTrying to apply " << record.key().name()
817 <<
" with multiple IOVs in tag.\nValidity range is "
823 record.get(alignments);
826 setup.
get<ErrRcd>().
get(alignmentErrExt);
834 template<
class G,
class DeformationRcd>
841 const DeformationRcd &
record = setup.
get<DeformationRcd>();
842 if (checkDbAlignmentValidity_) {
850 <<
"@SUB=PCLTrackerAlProducer::applyDB"
851 <<
"\nTrying to apply " << record.key().name()
852 <<
" with multiple IOVs in tag.\nValidity range is "
857 record.get(surfaceDeformations);
869 if (doTracker_ && useSurvey_) {
870 bool tkSurveyBool = watchTkSurveyRcd.check(setup);
871 bool tkSurveyErrBool = watchTkSurveyErrExtRcd.check(setup);
873 if (tkSurveyBool || tkSurveyErrBool) {
880 theSurveyValues = &(*surveys);
881 theSurveyErrors = &(*surveyErrors);
883 addSurveyInfo(theTrackerAlignables);
887 if (doMuon_ && useSurvey_) {
888 bool DTSurveyBool = watchTkSurveyRcd.check(setup);
889 bool DTSurveyErrBool = watchTkSurveyErrExtRcd.check(setup);
890 bool CSCSurveyBool = watchTkSurveyRcd.check(setup);
891 bool CSCSurveyErrBool = watchTkSurveyErrExtRcd.check(setup);
893 if (DTSurveyBool || DTSurveyErrBool || CSCSurveyBool || CSCSurveyErrBool) {
904 theSurveyValues = &(*dtSurveys);
905 theSurveyErrors = &(*dtSurveyErrors);
907 Alignables barrels = theMuonAlignables->DTBarrel();
908 for (
auto iter = barrels.begin();
909 iter != barrels.end();
911 addSurveyInfo(*iter);
915 theSurveyValues = &(*cscSurveys);
916 theSurveyErrors = &(*cscSurveyErrors);
918 Alignables endcaps = theMuonAlignables->CSCEndcaps();
919 for (
auto iter = endcaps.begin();
920 iter != endcaps.end();
922 addSurveyInfo(*iter);
933 edm::LogInfo(
"Alignment") <<
"ADDING THE SURVEY INFORMATION";
936 for (
size_t i = 0;
i < comp.size(); ++
i) {
937 addSurveyInfo(comp[
i]);
942 if (alignable->
id() != error.
rawId() ||
945 <<
"Error reading survey info from DB. Mismatched id!";
948 const CLHEP::Hep3Vector& pos = theSurveyValues->m_align[theSurveyIndex].translation();
949 const CLHEP::HepRotation&
rot = theSurveyValues->m_align[theSurveyIndex].rotation();
953 rot.yx(), rot.yy(), rot.yz(),
954 rot.zx(), rot.zy(), rot.zz()));
972 if (theAlignmentAlgo->processesEvents() && nevent_ == 0) {
978 edm::LogError(
"Alignment") <<
"@SUB=PCLTrackerAlProducer::finish"
979 <<
"Did not process any events, stop "
980 <<
"without terminating algorithm.";
984 edm::LogInfo(
"Alignment") <<
"@SUB=PCLTrackerAlProducer::finish"
985 <<
"Terminating algorithm.";
986 theAlignmentAlgo->terminate();
988 storeAlignmentsToDB();
995 if (theAlignmentAlgo->processesEvents() && nevent_ == 0) {
997 edm::LogError(
"Alignment") <<
"@SUB=PCLTrackerAlProducer::endOfJob"
998 <<
"Did not process any events in last loop, "
999 <<
"do not dare to store to DB.";
1003 RunRanges uniqueRunRanges(makeNonOverlappingRunRanges(runRangeSelectionVPSet));
1006 if (uniqueRunRanges.empty()) {
1009 uniqueRunRanges.push_back(runRange);
1012 std::vector<AlgebraicVector> beamSpotParameters;
1014 for (
auto iRunRange = uniqueRunRanges.begin();
1015 iRunRange != uniqueRunRanges.end();
1018 theAlignmentAlgo->setParametersForRunRange(*iRunRange);
1021 if (saveToDB_ || saveApeToDB_ || saveDeformationsToDB_) {
1022 writeForRunRange((*iRunRange).first);
1026 if (theExtraAlignables) {
1027 Alignables &alis = theExtraAlignables->beamSpot();
1028 if (!alis.empty()) {
1030 beamSpotParameters.push_back(beamSpotAliPars->
parameters());
1035 if (theExtraAlignables) {
1036 std::ostringstream bsOutput;
1038 auto itPar = beamSpotParameters.begin();
1039 for (
auto iRunRange = uniqueRunRanges.begin();
1040 iRunRange != uniqueRunRanges.end();
1041 ++iRunRange, ++itPar) {
1042 bsOutput <<
"Run range: " << (*iRunRange).first <<
" - " << (*iRunRange).second <<
"\n";
1043 bsOutput <<
" Displacement: x=" << (*itPar)[0] <<
", y=" << (*itPar)[1] <<
"\n";
1044 bsOutput <<
" Slope: dx/dz=" << (*itPar)[2] <<
", dy/dz=" << (*itPar)[3] <<
"\n";
1047 edm::LogInfo(
"Alignment") <<
"@SUB=PCLTrackerAlProducer::endOfJob"
1048 <<
"Parameters for alignable beamspot:\n"
1058 static bool oldRunRangeSelectionWarning =
false;
1064 if (!RunRangeSelectionVPSet.empty()) {
1066 std::map<RunNumber,RunNumber> uniqueFirstRunNumbers;
1068 for (
auto ipset = RunRangeSelectionVPSet.begin();
1069 ipset != RunRangeSelectionVPSet.end();
1071 const std::vector<std::string> RunRangeStrings = (*ipset).getParameter<std::vector<std::string> >(
"RunRanges");
1073 for (
auto irange = RunRangeStrings.begin();
1074 irange != RunRangeStrings.end();
1077 if ((*irange).find(
':') == std::string::npos) {
1080 long int temp = strtol((*irange).c_str(), 0, 0);
1081 if (temp!=-1) first =
temp;
1085 if (!oldRunRangeSelectionWarning) {
1086 edm::LogWarning(
"BadConfig") <<
"@SUB=PCLTrackerAlProducer::makeNonOverlappingRunRanges"
1087 <<
"Config file contains old format for 'RunRangeSelection'. Only the start run\n"
1088 <<
"number is used internally. The number of the last run is ignored and can be\n"
1089 <<
"safely removed from the config file.\n";
1090 oldRunRangeSelectionWarning =
true;
1093 std::vector<std::string> tokens =
edm::tokenize(*irange,
":");
1096 temp = strtol(tokens[0].c_str(), 0, 0);
1097 if (temp!=-1) first =
temp;
1103 for (
auto iFirst = uniqueFirstRunNumbers.begin();
1104 iFirst != uniqueFirstRunNumbers.end();
1106 uniqueRunRanges.push_back(std::pair<RunNumber,RunNumber>((*iFirst).first, endValue));
1109 for (
size_t i = 0;
i < uniqueRunRanges.size()-1; ++
i) {
1110 uniqueRunRanges[
i].second = uniqueRunRanges[
i+1].first - 1;
1114 uniqueRunRanges.push_back(std::pair<RunNumber,RunNumber>(theFirstRun, endValue));
1117 return uniqueRunRanges;
1127 if (globalPositions_) {
1133 Alignments* alignments = theTrackerAlignables->alignments();
1136 writeDB(alignments,
"TrackerAlignmentRcd",
1137 alignmentErrExt,
"TrackerAlignmentErrorExtendedRcd",
1143 if (doTracker_ && saveDeformationsToDB_) {
1145 writeDB(alignmentSurfaceDeformations,
"TrackerSurfaceDeformationRcd", time);
1151 if (globalPositions_) {
1157 Alignments* alignments = theMuonAlignables->dtAlignments();
1160 writeDB(alignments,
"DTAlignmentRcd",
1161 alignmentErrExt,
"DTAlignmentErrorExtendedRcd",
1166 alignments = theMuonAlignables->cscAlignments();
1167 alignmentErrExt = theMuonAlignables->cscAlignmentErrorsExtended();
1169 writeDB(alignments,
"CSCAlignmentRcd",
1170 alignmentErrExt,
"CSCAlignmentErrorExtendedRcd",
1189 delete tempAlignments;
1190 delete tempAlignmentErrExt;
1192 throw cms::Exception(
"NotAvailable") <<
"PoolDBOutputService not available";
1195 if (globalCoordinates &&
1196 globalCoordinates->
transform() != AlignTransform::Transform::Identity) {
1204 tempAlignments, tempAlignmentErrExt);
1207 delete alignmentErrExt;
1209 edm::LogInfo(
"Alignment") <<
"@SUB=PCLTrackerAlProducer::writeDB"
1210 <<
"globalCoordinates removed from alignments ("
1211 << alignRcd <<
") and errors (" << alignRcd <<
").";
1215 edm::LogInfo(
"Alignment") <<
"Writing Alignments for run " << time
1216 <<
" to " << alignRcd <<
".";
1221 delete tempAlignments;
1225 edm::LogInfo(
"Alignment") <<
"Writing AlignmentErrorsExtended for run "
1226 << time <<
" to " << errRcd <<
".";
1231 delete tempAlignmentErrExt;
1244 delete alignmentSurfaceDeformations;
1245 throw cms::Exception(
"NotAvailable") <<
"PoolDBOutputService not available";
1248 if (saveDeformationsToDB_) {
1249 edm::LogInfo(
"Alignment") <<
"Writing AlignmentSurfaceDeformations for run "
1250 << time <<
" to " << surfaceDeformationRcd <<
".";
1252 surfaceDeformationRcd);
1256 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()
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
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 &)