30 theDoPedestalSubtraction(theConf.getUntrackedParameter<bool>(
"SubtractPedestals",
true)),
31 theUseMinuitAlgorithm(theConf.getUntrackedParameter<bool>(
"RunMinuitAlignmentTubeAlgorithm",
false)),
32 theApplyBeamKinkCorrections(theConf.getUntrackedParameter<bool>(
"ApplyBeamKinkCorrections",
true)),
33 peakFinderThreshold(theConf.getUntrackedParameter<double>(
"PeakFinderThreshold", 10.)),
34 enableJudgeZeroFilter(theConf.getUntrackedParameter<bool>(
"EnableJudgeZeroFilter",
true)),
35 judgeOverdriveThreshold(theConf.getUntrackedParameter<unsigned int>(
"JudgeOverdriveThreshold", 220)),
36 updateFromInputGeometry(theConf.getUntrackedParameter<bool>(
"UpdateFromInputGeometry",
false)),
37 misalignedByRefGeometry(theConf.getUntrackedParameter<bool>(
"MisalignedByRefGeometry",
false)),
38 theStoreToDB(theConf.getUntrackedParameter<bool>(
"SaveToDbase",
false)),
39 theDigiProducersList(theConf.getParameter<std::
vector<edm::
ParameterSet> >(
"DigiProducersList")),
40 theSaveHistograms(theConf.getUntrackedParameter<bool>(
"SaveHistograms",
false)),
41 theCompression(theConf.getUntrackedParameter<int>(
"ROOTFileCompression", 1)),
42 theFileName(theConf.getUntrackedParameter<std::
string>(
"ROOTFileName",
"test.root")),
43 theMaskTecModules(theConf.getUntrackedParameter<std::
vector<unsigned int> >(
"MaskTECModules")),
44 theMaskAtModules(theConf.getUntrackedParameter<std::
vector<unsigned int> >(
"MaskATModules")),
45 theSetNominalStrips(theConf.getUntrackedParameter<bool>(
"ForceFitterToNominalStrips",
false)),
46 theLasConstants(theConf.getUntrackedParameter<std::
vector<edm::
ParameterSet> >(
"LaserAlignmentConstants")),
48 theAlignableTracker(),
49 theAlignRecordName(
"TrackerAlignmentRcd"),
50 theErrorRecordName(
"TrackerAlignmentErrorExtendedRcd"),
53 std::cout <<
"=============================================================="
54 <<
"\n=== LaserAlignment module configuration ==="
67 <<
"\n Number of TEC modules masked = " <<
theMaskTecModules.size() <<
" (s. below list if > 0)"
68 <<
"\n Number of AT modules masked = " <<
theMaskAtModules.size() <<
" (s. below list if > 0)"
69 <<
"\n Store to database = " << (
theStoreToDB ?
"true" :
"false")
70 <<
"\n ----------------------------------------------- ----------"
72 <<
"\n=============================================================" << std::endl;
76 std::cout <<
" ===============================================================================================\n"
79 <<
" TEC modules have been masked out and will not be considered by the TEC algorithm:\n " << std::flush;
85 std::cout <<
" ===============================================================================================\n\n"
89 std::cout <<
" ===============================================================================================\n"
92 <<
" AT modules have been masked out and will not be considered by the AT algorithm:\n " << std::flush;
98 std::cout <<
" ===============================================================================================\n\n"
106 produces<TkLasBeamCollection, edm::Transition::EndRun>(
"tkLaserBeams").setBranchAlias(alias +
"TkLasBeamCollection");
144 <<
" ** ERROR: could not open file:" <<
theFileName.c_str() <<
" for writing." << std::endl;
155 std::stringstream nameBuilder;
178 nameBuilder <<
"TEC";
183 nameBuilder <<
"_Ring";
188 nameBuilder <<
"_Beam" <<
beam;
189 nameBuilder <<
"_Disk" << disk;
194 nameBuilder <<
"_Histo";
196 det, ring, beam, disk,
new TH1D(nameBuilder.str().c_str(), nameBuilder.str().c_str(), 512, 0, 512));
220 nameBuilder <<
"TIB";
222 nameBuilder <<
"TOB";
223 nameBuilder <<
"_Beam" <<
beam;
224 nameBuilder <<
"_Zpos" << pos;
230 nameBuilder <<
"_Histo";
232 det, beam, pos,
new TH1D(nameBuilder.str().c_str(), nameBuilder.str().c_str(), 512, 0, 512));
255 nameBuilder <<
"TEC(AT)";
260 nameBuilder <<
"_Beam" <<
beam;
261 nameBuilder <<
"_Disk" << disk;
266 nameBuilder <<
"_Histo";
268 det, beam, disk,
new TH1D(nameBuilder.str().c_str(), nameBuilder.str().c_str(), 512, 0, 512));
318 LogDebug(
"LaserAlignment") <<
"==========================================================="
319 <<
"\n Private analysis of event #" << theEvent.
id().
event() <<
" in run #"
320 << theEvent.
id().
run();
336 for (det = 0; det < 2; ++det) {
337 for (beam = 0; beam < 8; ++
beam) {
338 for (disk = 0; disk < 9; ++disk) {
369 std::cout <<
" [LaserAlignment::produce] -- LaserAlignment::isTECBeam declares this event "
370 << (isTECMode ?
"" :
"NOT ") <<
"a TEC event." << std::endl;
374 std::cout <<
" [LaserAlignment::produce] -- LaserAlignment::isATBeam declares this event " << (isATMode ?
"" :
"NOT ")
375 <<
"an AT event." << std::endl;
389 LogDebug(
"[LaserAlignment::produce]")
429 LogDebug(
"[LaserAlignment::produce]")
448 LogDebug(
"[LaserAlignment::produce]")
490 std::cout <<
" [LaserAlignment::endRun] -- Total number of events processed: " <<
theEvents << std::endl;
507 std::pair<double, double> peakFinderResults;
533 std::cout <<
" [LaserAlignment::endRun] ** WARNING: Fit failed for TEC det: " << det <<
", ring: " << ring
534 <<
", beam: " << beam <<
", disk: " << disk <<
" (id: " <<
detectorId.
GetTECEntry(det, ring, beam, disk)
535 <<
")." << std::endl;
549 measuredStripPositions.
GetTECEntry(det, ring, beam, disk) = peakFinderResults;
550 const float positionInStrips =
553 : peakFinderResults.first;
555 theStripDet->surface().toGlobal(theStripDet->specificTopology().localPosition(positionInStrips));
563 measuredStripPositions.
GetTECEntry(det, ring, beam, disk) = std::pair<float, float>(256., 1000.);
565 theStripDet->surface().toGlobal(theStripDet->specificTopology().localPosition(256.));
586 std::cout <<
" [LaserAlignment::endJob] ** WARNING: Fit failed for TIB/TOB det: " << det <<
", beam: " << beam
600 measuredStripPositions.
GetTIBTOBEntry(det, beam, pos) = peakFinderResults;
601 const float positionInStrips =
604 : peakFinderResults.first;
606 theStripDet->surface().toGlobal(theStripDet->specificTopology().localPosition(positionInStrips));
612 const GlobalPoint& globalPoint = theStripDet->surface().toGlobal(
633 std::cout <<
" [LaserAlignment::endRun] ** WARNING: Fit failed for TEC2TEC det: " << det <<
", beam: " << beam
647 measuredStripPositions.
GetTEC2TECEntry(det, beam, disk) = peakFinderResults;
648 const float positionInStrips =
651 : peakFinderResults.first;
653 theStripDet->surface().toGlobal(theStripDet->specificTopology().localPosition(positionInStrips));
659 const GlobalPoint& globalPoint = theStripDet->surface().toGlobal(
710 const unsigned int nIterations = 30;
722 endcapParameters.
Print();
726 geometryUpdater.
EndcapUpdate(endcapParameters, measuredCoordinates);
756 const unsigned int nIterations = 30;
772 alignmentTubeParameters.
Print();
783 auto laserBeams = std::make_unique<TkLasBeamCollection>();
786 for (det = 0; det < 2; ++det) {
787 for (ring = 0; ring < 2; ++
ring) {
788 for (beam = 0; beam < 8; ++
beam) {
790 TkLasBeam currentBeam(100 * det + 10 * beam + ring);
793 const int firstDisk = det == 0 ? 0 : 8;
794 const int lastDisk = det == 0 ? 8 : 0;
797 for (disk = firstDisk; det == 0 ? disk <= lastDisk : disk >= lastDisk; det == 0 ? ++disk : --disk) {
807 measuredStripPositions.
GetTECEntry(det, ring, beam, disk).first),
808 theStripDet->specificTopology().localError(
809 measuredStripPositions.
GetTECEntry(det, ring, beam, disk).first,
810 measuredStripPositions.
GetTECEntry(det, ring, beam, disk).second),
816 laserBeams->push_back(currentBeam);
824 for (beam = 0; beam < 8; ++
beam) {
826 TkLasBeam currentBeam(100 * 2 + 10 * beam + 0 );
830 for (disk = 4; disk >= 0; --disk) {
839 theStripDet->specificTopology().localPosition(measuredStripPositions.
GetTEC2TECEntry(det, beam, disk).first),
840 theStripDet->specificTopology().localError(measuredStripPositions.
GetTEC2TECEntry(det, beam, disk).first,
848 for (det = 2; det < 4; ++det) {
849 for (pos = 5; pos >= 0; --pos) {
859 theStripDet->specificTopology().localPosition(measuredStripPositions.
GetTIBTOBEntry(det, beam, pos).first),
860 theStripDet->specificTopology().localError(measuredStripPositions.
GetTIBTOBEntry(det, beam, pos).first,
870 for (disk = 0; disk < 5; ++disk) {
879 theStripDet->specificTopology().localPosition(measuredStripPositions.
GetTEC2TECEntry(det, beam, disk).first),
880 theStripDet->specificTopology().localError(measuredStripPositions.
GetTEC2TECEntry(det, beam, disk).first,
888 laserBeams->push_back(currentBeam);
901 std::cout <<
" [LaserAlignment::endRun] -- Storing the calculated alignment parameters to the DataBase:"
907 throw cms::Exception(
"NotAvailable") <<
"PoolDBOutputService not available";
928 std::cout <<
" [LaserAlignment::endRun] -- Storing done." << std::endl;
946 bool isRawDigi =
false;
949 int det = 0,
ring = 0,
beam = 0, disk = 0, pos = 0;
952 for (std::vector<edm::ParameterSet>::iterator itDigiProducersList =
theDigiProducersList.begin();
954 ++itDigiProducersList) {
961 if (digiType ==
"Raw") {
962 theEvent.
getByLabel(digiProducer, digiLabel, theStripRawDigis);
964 }
else if (digiType ==
"Processed") {
965 theEvent.
getByLabel(digiProducer, digiLabel, theStripDigis);
969 <<
" ** ERROR: Invalid digi type: \"" << digiType <<
"\" specified in configuration." << std::endl;
988 if (detSetIter == theStripRawDigis->end()) {
990 <<
" ** ERROR: No raw DetSet found for det: " << detRawId <<
"." << std::endl;
998 for (; digiRangeIterator != detSetIter->data.
end(); ++digiRangeIterator) {
1000 const int channel =
distance(digiRangeStart, digiRangeIterator);
1001 if (channel >= 0 && channel < 512)
1005 <<
" ** ERROR: raw digi channel: " << channel <<
" out of range for det: " << detRawId <<
"."
1017 if (detSetIter == theStripDigis->end())
1023 for (; digiRangeIterator != detSetIter->data.
end(); ++digiRangeIterator) {
1025 if (digi.
strip() < 512)
1029 <<
" ** ERROR: digi strip: " << digi.
strip() <<
" out of range for det: " << detRawId <<
"."
1051 if (detSetIter == theStripRawDigis->end()) {
1053 <<
" ** ERROR: No raw DetSet found for det: " << detRawId <<
"." << std::endl;
1061 for (; digiRangeIterator != detSetIter->data.
end(); ++digiRangeIterator) {
1063 const int channel =
distance(digiRangeStart, digiRangeIterator);
1064 if (channel >= 0 && channel < 512)
1068 <<
" ** ERROR: raw digi channel: " << channel <<
" out of range for det: " << detRawId <<
"."
1080 if (detSetIter == theStripDigis->end())
1086 for (; digiRangeIterator != detSetIter->data.
end(); ++digiRangeIterator) {
1088 if (digi.
strip() < 512)
1092 <<
" ** ERROR: digi strip: " << digi.
strip() <<
" out of range for det: " << detRawId <<
"."
1114 if (detSetIter == theStripRawDigis->end()) {
1116 <<
" ** ERROR: No raw DetSet found for det: " << detRawId <<
"." << std::endl;
1124 for (; digiRangeIterator != detSetIter->data.
end(); ++digiRangeIterator) {
1126 const int channel =
distance(digiRangeStart, digiRangeIterator);
1127 if (channel >= 0 && channel < 512)
1131 <<
" ** ERROR: raw digi channel: " << channel <<
" out of range for det: " << detRawId <<
"."
1143 if (detSetIter == theStripDigis->end())
1149 for (; digiRangeIterator != detSetIter->data.
end(); ++digiRangeIterator) {
1151 if (digi.
strip() < 512)
1155 <<
" ** ERROR: digi strip: " << digi.
strip() <<
" out of range for det: " << detRawId <<
"."
1184 int thePedestal = int(pedestalsHandle->getPed(
strip, pedRange));
1185 if (thePedestal > 895)
1186 thePedestal -= 1024;
1198 int thePedestal = int(pedestalsHandle->getPed(
strip, pedRange));
1199 if (thePedestal > 895)
1200 thePedestal -= 1024;
1212 int thePedestal = int(pedestalsHandle->getPed(
strip, pedRange));
1213 if (thePedestal > 895)
1214 thePedestal -= 1024;
1226 int numberOfProfiles = 0;
1229 for (
int det = 0; det < 2; ++det) {
1231 for (
int disk = 0; disk < 9; ++disk) {
1238 LogDebug(
"[LaserAlignment::isTECBeam]") <<
" Found: " << numberOfProfiles <<
"hits." << std::endl;
1239 std::cout <<
" [LaserAlignment::isTECBeam] -- Found: " << numberOfProfiles <<
" hits." << std::endl;
1241 if (numberOfProfiles > 10)
1253 int numberOfProfiles = 0;
1263 LogDebug(
"[LaserAlignment::isATBeam]") <<
" Found: " << numberOfProfiles <<
"hits." << std::endl;
1264 std::cout <<
" [LaserAlignment::isATBeam] -- Found: " << numberOfProfiles <<
" hits." << std::endl;
1266 if (numberOfProfiles > 10)
1280 if (det < 2 || det > 3 || beam > 7 || pos > 5) {
1281 throw cms::Exception(
"[LaserAlignment::getTIBTOBNominalBeamOffset]")
1282 <<
" ERROR ** Called with nonexisting parameter set: det " << det <<
" beam " << beam <<
" pos " << pos <<
"."
1286 const double nominalOffsetsTIB[8] = {
1287 0.00035, 2.10687, -2.10827, -0.00173446, 2.10072, -0.00135114, 2.10105, -2.10401};
1292 const int orientationPattern[6] = {-1, 1, 1, -1, -1, 1};
1293 const double nominalOffsetsTOB[8] = {0.00217408, 1.58678, 117.733, 119.321, 120.906, 119.328, 117.743, 1.58947};
1296 return (-1. * nominalOffsetsTIB[beam]);
1299 if (beam == 0
or beam > 4)
1300 return (nominalOffsetsTOB[beam] * orientationPattern[pos]);
1302 return (-1. * nominalOffsetsTOB[beam] * orientationPattern[pos]);
1315 if (det > 1 || beam > 7 || disk > 5) {
1316 throw cms::Exception(
"[LaserAlignment::getTEC2TECNominalBeamOffset]")
1317 <<
" ERROR ** Called with nonexisting parameter set: det " << det <<
" beam " << beam <<
" disk " << disk <<
"."
1321 const double nominalOffsets[8] = {0., 2.220, -2.221, 0., 2.214, 0., 2.214, -2.217};
1324 return -1. * nominalOffsets[
beam];
1326 return nominalOffsets[
beam];
1338 const double tecPhiPositions[8] = {
1339 0.392699, 1.178097, 1.963495, 2.748894, 3.534292, 4.319690, 5.105088, 5.890486};
1340 const double atPhiPositions[8] = {
1341 0.392699, 1.289799, 1.851794, 2.748894, 3.645995, 4.319690, 5.216791, 5.778784};
1344 const double tobRPosition = 600.;
1345 const double tibRPosition = 514.;
1346 const double tecRPosition[2] = {564., 840.};
1349 const double tobZPosition[6] = {1040., 580., 220., -140., -500., -860.};
1350 const double tibZPosition[6] = {620., 380., 180., -100., -340., -540.};
1353 const double tecZPosition[9] = {1322.5, 1462.5, 1602.5, 1742.5, 1882.5, 2057.5, 2247.5, 2452.5, 2667.5};
1375 LASCoordinateSet(tecPhiPositions[beam], 0., tecRPosition[ring], 0., tecZPosition[disk], 0.));
1383 tecPhiPositions[beam], 0., tecRPosition[ring], 0., -1. * tecZPosition[disk], 0.));
1386 }
while (moduleLoop.
TECLoop(det, ring, beam, disk));
1395 det, beam, pos,
LASCoordinateSet(atPhiPositions[beam], 0., tibRPosition, 0., tibZPosition[pos], 0.));
1398 det, beam, pos,
LASCoordinateSet(atPhiPositions[beam], 0., tobRPosition, 0., tobZPosition[pos], 0.));
1401 }
while (moduleLoop.
TIBTOBLoop(det, beam, pos));
1410 det, beam, disk,
LASCoordinateSet(atPhiPositions[beam], 0., tecRPosition[0], 0., tecZPosition[disk], 0.));
1416 LASCoordinateSet(atPhiPositions[beam], 0., tecRPosition[0], 0., -1. * tecZPosition[disk], 0.));
1419 }
while (moduleLoop.
TEC2TECLoop(det, beam, disk));
1427 if (angle < -1. * M_PI || angle >
M_PI) {
1429 <<
"** ERROR: Called with illegal input angle: " << angle <<
"." << std::endl;
1435 return (angle + 2. * M_PI);
1445 std::cout << std::endl <<
" [LaserAlignment::DumpPosFileSet] -- Dump: " << std::endl;
1453 std::cout <<
"POS " << det <<
"\t" << beam <<
"\t" << disk <<
"\t" << ring <<
"\t"
1456 }
while (loop.
TECLoop(det, ring, beam, disk));
1463 std::cout <<
"POS " << det <<
"\t" << beam <<
"\t" << pos <<
"\t"
1474 std::cout <<
"POS " << det <<
"\t" << beam <<
"\t" << disk <<
"\t"
1480 std::cout << std::endl <<
" [LaserAlignment::DumpPosFileSet] -- End dump: " << std::endl;
1490 std::cout << std::endl <<
" [LaserAlignment::DumpStripFileSet] -- Dump: " << std::endl;
1498 std::cout <<
"STRIP " << det <<
"\t" << beam <<
"\t" << disk <<
"\t" << ring <<
"\t"
1499 << measuredStripPositions.GetTECEntry(det, ring, beam, disk).first <<
"\t"
1500 << measuredStripPositions.GetTECEntry(det, ring, beam, disk).second << std::endl;
1501 }
while (loop.
TECLoop(det, ring, beam, disk));
1508 std::cout <<
"STRIP " << det <<
"\t" << beam <<
"\t" << pos <<
"\t"
1510 <<
"\t" << measuredStripPositions.GetTIBTOBEntry(det, beam, pos).first <<
"\t"
1511 << measuredStripPositions.GetTIBTOBEntry(det, beam, pos).second << std::endl;
1519 std::cout <<
"STRIP " << det <<
"\t" << beam <<
"\t" << disk <<
"\t"
1521 <<
"\t" << measuredStripPositions.GetTEC2TECEntry(det, beam, disk).first <<
"\t"
1522 << measuredStripPositions.GetTEC2TECEntry(det, beam, disk).second << std::endl;
1525 std::cout << std::endl <<
" [LaserAlignment::DumpStripFileSet] -- End dump: " << std::endl;
1532 std::cout <<
" [LaserAlignment::DumpHitmaps] -- Dumping hitmap for TEC+:" << std::endl;
1533 std::cout <<
" [LaserAlignment::DumpHitmaps] -- Ring4:" << std::endl;
1534 std::cout <<
" disk0 disk1 disk2 disk3 disk4 disk5 disk6 disk7 disk8" << std::endl;
1538 for (
int disk = 0; disk < 9; ++disk) {
1544 std::cout <<
" [LaserAlignment::DumpHitmaps] -- Ring6:" << std::endl;
1545 std::cout <<
" disk0 disk1 disk2 disk3 disk4 disk5 disk6 disk7 disk8" << std::endl;
1549 for (
int disk = 0; disk < 9; ++disk) {
1555 std::cout <<
" [LaserAlignment::DumpHitmaps] -- Dumping hitmap for TEC-:" << std::endl;
1556 std::cout <<
" [LaserAlignment::DumpHitmaps] -- Ring4:" << std::endl;
1557 std::cout <<
" disk0 disk1 disk2 disk3 disk4 disk5 disk6 disk7 disk8" << std::endl;
1561 for (
int disk = 0; disk < 9; ++disk) {
1567 std::cout <<
" [LaserAlignment::DumpHitmaps] -- Ring6:" << std::endl;
1568 std::cout <<
" disk0 disk1 disk2 disk3 disk4 disk5 disk6 disk7 disk8" << std::endl;
1572 for (
int disk = 0; disk < 9; ++disk) {
1578 std::cout <<
" [LaserAlignment::DumpHitmaps] -- End of dump." << std::endl << std::endl;
1607 const double nominalPhi = nominalCoordinates.
GetTECEntry(det, ring, beam, disk).
GetPhi();
1611 det, ring, beam, disk, nominalCoordinates, endcapParameters);
1614 measuredCoordinates.
GetTECEntry(det, ring, beam, disk).
SetPhi(nominalPhi - phiCorrection);
1617 }
while (moduleLoop.
TECLoop(det, ring, beam, disk));
1633 int det,
beam, disk, pos;
1651 const double phiCorrection =
1658 }
while (moduleLoop.
TIBTOBLoop(det, beam, pos));
1671 const double phiCorrection =
1678 }
while (moduleLoop.
TEC2TECLoop(det, beam, disk));
1690 const double atPhiPositions[8] = {0.392699, 1.289799, 1.851794, 2.748894, 3.645995, 4.319690, 5.216791, 5.778784};
1691 const double tecPhiPositions[8] = {0.392699, 1.178097, 1.963495, 2.748894, 3.534292, 4.319690, 5.105088, 5.890486};
1692 const double zPositions[9] = {125.0, 139.0, 153.0, 167.0, 181.0, 198.5, 217.5, 238.0, 259.5};
1693 const double zPositionsTIB[6] = {62.0, 38.0, 18.0, -10.0, -34.0, -54.0};
1694 const double zPositionsTOB[6] = {104.0, 58.0, 22.0, -14.0, -50.0, -86.0};
1704 const double radius = ring ? 84.0 : 56.4;
1713 const LocalPoint lp(theStripDet->surface().toLocal(gp));
1714 std::cout <<
"__TEC: " << 256. - theStripDet->specificTopology().strip(lp)
1726 (det == 2 ? 51.4 : 58.4);
1727 const double theZ = (det == 2 ? zPositionsTIB[pos] : zPositionsTOB[pos]);
1736 const LocalPoint lp(theStripDet->surface().toLocal(gp));
1737 std::cout <<
"__TIBTOB det " << det <<
" beam " << beam <<
" pos " << pos <<
" "
1738 << 256. - theStripDet->specificTopology().strip(lp);
1739 std::cout <<
" " << theStripDet->position().perp() << std::endl;
1749 const double radius = 56.4;
1758 const LocalPoint lp(theStripDet->surface().toLocal(gp));
1759 std::cout <<
"__TEC2TEC det " << det <<
" beam " << beam <<
" disk " << disk <<
" "
1760 << 256. - theStripDet->specificTopology().strip(lp) << std::endl;
bool IsSignalIn(const LASModuleProfile &, double)
void SetTEC2TECEntry(int subdetector, int beam, int tecDisk, T)
EventNumber_t event() const
unsigned int judgeOverdriveThreshold
config parameters for the LASProfileJudge
void fillDataProfiles(edm::Event const &, edm::EventSetup const &)
fill profiles from SiStrip(Raw)Digi container
const edm::ESGetToken< PTrackerParameters, PTrackerParametersRcd > ptpToken_
bool theSaveHistograms
config switch
void SetPhiError(double aPhiError)
const edm::ESGetToken< GeometricDet, IdealGeometryRecord > geomDetToken_
void ApplyEndcapMaskingCorrections(LASGlobalData< LASCoordinateSet > &, LASGlobalData< LASCoordinateSet > &, LASEndcapAlignmentParameterSet &)
apply endcap correction to masked modules in TEC
Alignments * alignments() const override
Return alignments, sorted by DetId.
void produce(edm::Event &, edm::EventSetup const &) override
The Signals That Services Can Subscribe To This is based on ActivityRegistry and is current per Services can connect to the signals distributed by the ActivityRegistry in order to monitor the activity of the application Each possible callback has some defined which we here list in angle e< void, edm::EventIDconst &, edm::Timestampconst & > We also list in braces which AR_WATCH_USING_METHOD_ is used for those or
const edm::ESGetToken< SiStripPedestals, SiStripPedestalsRcd > stripPedestalsToken_
void TrackerUpdate(LASEndcapAlignmentParameterSet &, LASBarrelAlignmentParameterSet &, AlignableTracker &)
void SetMisalignmentFromRefGeometry(bool)
bool misalignedByRefGeometry
config switch
std::string theAlignRecordName
const edm::ESGetToken< PTrackerAdditionalParametersPerDet, PTrackerAdditionalParametersPerDetRcd > ptitpToken_
#define DEFINE_FWK_MODULE(type)
bool isTECBeam(void)
decide whether TEC or AT beams have fired
TrackerGeometry * build(const GeometricDet *gd, const PTrackerAdditionalParametersPerDet *ptitp, const PTrackerParameters &ptp, const TrackerTopology *tTopo)
LaserAlignment(edm::ParameterSet const &theConf)
double getTIBTOBNominalBeamOffset(unsigned int, unsigned int, unsigned int)
returns the nominal beam position (strips) in TOB for the profileJudge
edm::ESHandle< TrackerGeometry > theTrackerGeometry
double peakFinderThreshold
config parameter
void DumpHitmaps(LASGlobalData< int > &)
for debugging only, will disappear
void DumpPosFileSet(LASGlobalData< LASCoordinateSet > &)
for debugging only, will disappear
LASGlobalData< int > numberOfAcceptedProfiles
void SetAllValuesTo(const double &)
std::pair< ContainerIterator, ContainerIterator > Range
bool theDoPedestalSubtraction
config switch
LASGlobalData< LASModuleProfile > currentDataProfiles
data profiles for the current event
std::vector< unsigned int > theMaskTecModules
config parameters
bool theUseMinuitAlgorithm
config switch
TFile * theFile
Tree stuff.
void find(edm::Handle< EcalRecHitCollection > &hits, DetId thisDet, std::vector< EcalRecHitCollection::const_iterator > &hit, bool debug=false)
LASGlobalData< int > isAcceptedProfile
std::vector< edm::ParameterSet > theDigiProducersList
void DumpStripFileSet(LASGlobalData< std::pair< float, float > > &)
for debugging only, will disappear
void fillPedestalProfiles(edm::ESHandle< SiStripPedestals > &)
fill pedestals from dbase
double GetPhi(void) const
~LaserAlignment() override
bool getData(T &iHolder) const
const edm::ESGetToken< TrackerGeometry, TrackerDigiGeometryRecord > geomToken_
LASGlobalData< TH1D * > summedHistograms
bool FindPeakIn(const LASModuleProfile &, std::pair< double, double > &, TH1D *, const double)
TDirectory * singleModulesDir
void push_back(const SiStripLaserRecHit2D &aHit)
insert a hit in the data vector
double ConvertAngle(double)
convert an angle in the [-pi,pi] range to the [0,2*pi] range
LASBarrelAlignmentParameterSet CalculateParameters(LASGlobalData< LASCoordinateSet > &, LASGlobalData< LASCoordinateSet > &)
edm::ESHandle< Alignments > theGlobalPositionRcd
const uint16_t & strip() const
bool TEC2TECLoop(int &, int &, int &) const
std::string theFileName
config parameter (histograms file output name)
cond::Time_t beginOfTime() const
const edm::ESGetToken< TrackerTopology, TrackerTopologyRcd > topoToken_
Tokens for ESconsumes.
Hash writeOneIOV(const T &payload, Time_t time, const std::string &recordName)
std::vector< unsigned int > tecDoubleHitDetId
void SetAmplitudeThreshold(double)
void endRunProduce(edm::Run &, const edm::EventSetup &) override
bool theApplyBeamKinkCorrections
config switch
T & GetTIBTOBEntry(int subdetector, int beam, int tibTobPosition)
bool JudgeProfile(const LASModuleProfile &, double)
A Digi for the silicon strip detector, containing both strip and adc information, and suitable for st...
void SetReverseDirection(bool)
void SetTIBTOBEntry(int subdetector, int beam, int tibTobPosition, T)
bool getByLabel(InputTag const &tag, Handle< PROD > &result) const
void CalculateNominalCoordinates(void)
fills a LASGlobalData<LASCoordinateSet> with nominal module positions
const TrackerGeomDet * idToDet(DetId) const override
iterator end()
Return the off-the-end iterator.
LASEndcapAlignmentParameterSet CalculateParameters(LASGlobalData< LASCoordinateSet > &, LASGlobalData< LASCoordinateSet > &)
std::string theErrorRecordName
double GetTEC2TECAlignmentParameterCorrection(int, int, int, LASGlobalData< LASCoordinateSet > &, LASBarrelAlignmentParameterSet &)
void SetValue(unsigned int theStripNumber, const double &theValue)
bool theStoreToDB
config switch
Detector identifier class for the strip tracker.
LASGlobalData< LASModuleProfile > pedestalProfiles
T & GetTEC2TECEntry(int subdetector, int beam, int tecDisk)
LASGlobalData< LASCoordinateSet > nominalCoordinates
AlignableTracker * theAlignableTracker
int theEvents
counter for the total number of events processed
LASBarrelAlignmentParameterSet CalculateParameters(LASGlobalData< LASCoordinateSet > &, LASGlobalData< LASCoordinateSet > &)
LASConstants theLasConstants
double getTEC2TECNominalBeamOffset(unsigned int, unsigned int, unsigned int)
returns the nominal beam position (strips) in TEC (AT) for the profileJudge
T getParameter(std::string const &) const
void put(std::unique_ptr< PROD > product)
Put a new product.
void SetOverdriveThreshold(unsigned int)
T & GetTECEntry(int subdetector, int tecRing, int beam, int tecDisk)
LASGlobalData< std::string > theProfileNames
double GetAlignmentParameterCorrection(int, int, int, int, LASGlobalData< LASCoordinateSet > &, LASEndcapAlignmentParameterSet &)
std::vector< unsigned int > theMaskAtModules
AlignmentErrorsExtended * alignmentErrors() const override
Return alignment errors, sorted by DetId.
void ApplyATMaskingCorrections(LASGlobalData< LASCoordinateSet > &, LASGlobalData< LASCoordinateSet > &, LASBarrelAlignmentParameterSet &)
same for alignment tube modules
void testRoutine(void)
for debugging & testing only, will disappear..
LASGlobalData< LASModuleProfile > collectedDataProfiles
void fillDetectorId(void)
fill hard coded detIds
void ApplyBeamKinkCorrections(LASGlobalData< LASCoordinateSet > &) const
int theCompression
config parameter (histograms file compression level)
void EnableZeroFilter(bool)
LASGlobalData< unsigned int > detectorId
bool TECLoop(int &, int &, int &, int &) const
const edm::ESGetToken< Alignments, GlobalPositionRcd > gprToken_
bool TIBTOBLoop(int &, int &, int &) const
double GetPhiError(void) const
iterator begin()
Return an iterator to the first DetSet.
bool enableJudgeZeroFilter
config switch
ESHandle< T > getHandle(const ESGetToken< T, R > &iToken) const
collection_type::const_iterator const_iterator
collection_type::const_iterator const_iterator
const uint16_t & adc() const
A Digi for the silicon strip detector, containing only adc information, and suitable for storing raw ...
double GetTIBTOBAlignmentParameterCorrection(int, int, int, LASGlobalData< LASCoordinateSet > &, LASBarrelAlignmentParameterSet &)
void SetTECEntry(int subdetector, int tecRing, int beam, int tecDisk, T)
edm::ESHandle< GeometricDet > gD
tracker geometry;
void EndcapUpdate(LASEndcapAlignmentParameterSet &, LASGlobalData< LASCoordinateSet > &)
bool updateFromInputGeometry
config switch
T angle(T x1, T y1, T z1, T x2, T y2, T z2)
bool theSetNominalStrips
config switch