21 theDoPedestalSubtraction(theConf.getUntrackedParameter<
bool>(
"SubtractPedestals",
true)),
22 theUseMinuitAlgorithm(theConf.getUntrackedParameter<
bool>(
"RunMinuitAlignmentTubeAlgorithm",
false)),
23 theApplyBeamKinkCorrections(theConf.getUntrackedParameter<
bool>(
"ApplyBeamKinkCorrections",
true)),
24 peakFinderThreshold(theConf.getUntrackedParameter<double>(
"PeakFinderThreshold", 10.)),
25 enableJudgeZeroFilter(theConf.getUntrackedParameter<
bool>(
"EnableJudgeZeroFilter",
true)),
26 judgeOverdriveThreshold(theConf.getUntrackedParameter<unsigned
int>(
"JudgeOverdriveThreshold", 220)),
27 updateFromInputGeometry(theConf.getUntrackedParameter<
bool>(
"UpdateFromInputGeometry",
false)),
28 misalignedByRefGeometry(theConf.getUntrackedParameter<
bool>(
"MisalignedByRefGeometry",
false)),
29 theStoreToDB(theConf.getUntrackedParameter<
bool>(
"SaveToDbase",
false)),
30 theDigiProducersList(theConf.getParameter<
std::vector<
edm::
ParameterSet> >(
"DigiProducersList")),
31 theSaveHistograms(theConf.getUntrackedParameter<
bool>(
"SaveHistograms",
false)),
32 theCompression(theConf.getUntrackedParameter<
int>(
"ROOTFileCompression", 1)),
33 theFileName(theConf.getUntrackedParameter<
std::
string>(
"ROOTFileName",
"test.root")),
34 theMaskTecModules(theConf.getUntrackedParameter<
std::vector<unsigned
int> >(
"MaskTECModules")),
35 theMaskAtModules(theConf.getUntrackedParameter<
std::vector<unsigned
int> >(
"MaskATModules")),
36 theSetNominalStrips(theConf.getUntrackedParameter<
bool>(
"ForceFitterToNominalStrips",
false)),
37 theLasConstants(theConf.getUntrackedParameter<
std::vector<
edm::
ParameterSet> >(
"LaserAlignmentConstants")),
39 theAlignableTracker(),
40 theAlignRecordName(
"TrackerAlignmentRcd"),
41 theErrorRecordName(
"TrackerAlignmentErrorExtendedRcd"),
44 std::cout <<
"==============================================================" 45 <<
"\n=== LaserAlignment module configuration ===" 58 <<
"\n Number of TEC modules masked = " <<
theMaskTecModules.size() <<
" (s. below list if > 0)" 59 <<
"\n Number of AT modules masked = " <<
theMaskAtModules.size() <<
" (s. below list if > 0)" 60 <<
"\n Store to database = " << (
theStoreToDB ?
"true" :
"false")
61 <<
"\n ----------------------------------------------- ----------" 63 <<
"\n=============================================================" << std::endl;
67 std::cout <<
" ===============================================================================================\n" 70 <<
" TEC modules have been masked out and will not be considered by the TEC algorithm:\n " << std::flush;
76 std::cout <<
" ===============================================================================================\n\n" 80 std::cout <<
" ===============================================================================================\n" 83 <<
" AT modules have been masked out and will not be considered by the AT algorithm:\n " << std::flush;
89 std::cout <<
" ===============================================================================================\n\n" 97 produces<TkLasBeamCollection, edm::Transition::EndRun>(
"tkLaserBeams").setBranchAlias(alias +
"TkLasBeamCollection");
135 <<
" ** ERROR: could not open file:" <<
theFileName.c_str() <<
" for writing." << std::endl;
146 std::stringstream nameBuilder;
169 nameBuilder <<
"TEC";
174 nameBuilder <<
"_Ring";
179 nameBuilder <<
"_Beam" <<
beam;
180 nameBuilder <<
"_Disk" << disk;
185 nameBuilder <<
"_Histo";
187 det, ring, beam, disk,
new TH1D(nameBuilder.str().c_str(), nameBuilder.str().c_str(), 512, 0, 512));
211 nameBuilder <<
"TIB";
213 nameBuilder <<
"TOB";
214 nameBuilder <<
"_Beam" <<
beam;
215 nameBuilder <<
"_Zpos" << pos;
221 nameBuilder <<
"_Histo";
223 det, beam, pos,
new TH1D(nameBuilder.str().c_str(), nameBuilder.str().c_str(), 512, 0, 512));
246 nameBuilder <<
"TEC(AT)";
251 nameBuilder <<
"_Beam" <<
beam;
252 nameBuilder <<
"_Disk" << disk;
257 nameBuilder <<
"_Histo";
259 det, beam, disk,
new TH1D(nameBuilder.str().c_str(), nameBuilder.str().c_str(), 512, 0, 512));
312 LogDebug(
"LaserAlignment") <<
"===========================================================" 313 <<
"\n Private analysis of event #" << theEvent.
id().
event() <<
" in run #" 314 << theEvent.
id().
run();
330 for (det = 0; det < 2; ++det) {
331 for (beam = 0; beam < 8; ++
beam) {
332 for (disk = 0; disk < 9; ++disk) {
363 std::cout <<
" [LaserAlignment::produce] -- LaserAlignment::isTECBeam declares this event " 364 << (isTECMode ?
"" :
"NOT ") <<
"a TEC event." << std::endl;
368 std::cout <<
" [LaserAlignment::produce] -- LaserAlignment::isATBeam declares this event " << (isATMode ?
"" :
"NOT ")
369 <<
"an AT event." << std::endl;
383 LogDebug(
"[LaserAlignment::produce]")
423 LogDebug(
"[LaserAlignment::produce]")
442 LogDebug(
"[LaserAlignment::produce]")
484 std::cout <<
" [LaserAlignment::endRun] -- Total number of events processed: " <<
theEvents << std::endl;
501 std::pair<double, double> peakFinderResults;
527 std::cout <<
" [LaserAlignment::endRun] ** WARNING: Fit failed for TEC det: " << det <<
", ring: " << ring
528 <<
", beam: " << beam <<
", disk: " << disk <<
" (id: " <<
detectorId.
GetTECEntry(det, ring, beam, disk)
529 <<
")." << std::endl;
543 measuredStripPositions.
GetTECEntry(det, ring, beam, disk) = peakFinderResults;
544 const float positionInStrips =
547 : peakFinderResults.first;
549 theStripDet->surface().toGlobal(theStripDet->specificTopology().localPosition(positionInStrips));
557 measuredStripPositions.
GetTECEntry(det, ring, beam, disk) = std::pair<float, float>(256., 1000.);
559 theStripDet->surface().toGlobal(theStripDet->specificTopology().localPosition(256.));
580 std::cout <<
" [LaserAlignment::endJob] ** WARNING: Fit failed for TIB/TOB det: " << det <<
", beam: " << beam
594 measuredStripPositions.
GetTIBTOBEntry(det, beam, pos) = peakFinderResults;
595 const float positionInStrips =
598 : peakFinderResults.first;
600 theStripDet->surface().toGlobal(theStripDet->specificTopology().localPosition(positionInStrips));
606 const GlobalPoint& globalPoint = theStripDet->surface().toGlobal(
627 std::cout <<
" [LaserAlignment::endRun] ** WARNING: Fit failed for TEC2TEC det: " << det <<
", beam: " << beam
641 measuredStripPositions.
GetTEC2TECEntry(det, beam, disk) = peakFinderResults;
642 const float positionInStrips =
645 : peakFinderResults.first;
647 theStripDet->surface().toGlobal(theStripDet->specificTopology().localPosition(positionInStrips));
653 const GlobalPoint& globalPoint = theStripDet->surface().toGlobal(
704 const unsigned int nIterations = 30;
716 endcapParameters.
Print();
720 geometryUpdater.
EndcapUpdate(endcapParameters, measuredCoordinates);
750 const unsigned int nIterations = 30;
766 alignmentTubeParameters.
Print();
777 auto laserBeams = std::make_unique<TkLasBeamCollection>();
780 for (det = 0; det < 2; ++det) {
781 for (ring = 0; ring < 2; ++
ring) {
782 for (beam = 0; beam < 8; ++
beam) {
784 TkLasBeam currentBeam(100 * det + 10 * beam + ring);
787 const int firstDisk = det == 0 ? 0 : 8;
788 const int lastDisk = det == 0 ? 8 : 0;
791 for (disk = firstDisk; det == 0 ? disk <= lastDisk : disk >= lastDisk; det == 0 ? ++disk : --disk) {
801 measuredStripPositions.
GetTECEntry(det, ring, beam, disk).first),
802 theStripDet->specificTopology().localError(
803 measuredStripPositions.
GetTECEntry(det, ring, beam, disk).first,
804 measuredStripPositions.
GetTECEntry(det, ring, beam, disk).second),
818 for (beam = 0; beam < 8; ++
beam) {
820 TkLasBeam currentBeam(100 * 2 + 10 * beam + 0 );
824 for (disk = 4; disk >= 0; --disk) {
833 theStripDet->specificTopology().localPosition(measuredStripPositions.
GetTEC2TECEntry(det, beam, disk).first),
834 theStripDet->specificTopology().localError(measuredStripPositions.
GetTEC2TECEntry(det, beam, disk).first,
842 for (det = 2; det < 4; ++det) {
843 for (pos = 5; pos >= 0; --pos) {
853 theStripDet->specificTopology().localPosition(measuredStripPositions.
GetTIBTOBEntry(det, beam, pos).first),
854 theStripDet->specificTopology().localError(measuredStripPositions.
GetTIBTOBEntry(det, beam, pos).first,
864 for (disk = 0; disk < 5; ++disk) {
873 theStripDet->specificTopology().localPosition(measuredStripPositions.
GetTEC2TECEntry(det, beam, disk).first),
874 theStripDet->specificTopology().localError(measuredStripPositions.
GetTEC2TECEntry(det, beam, disk).first,
895 std::cout <<
" [LaserAlignment::endRun] -- Storing the calculated alignment parameters to the DataBase:" 901 throw cms::Exception(
"NotAvailable") <<
"PoolDBOutputService not available";
921 std::cout <<
" [LaserAlignment::endRun] -- Storing done." << std::endl;
939 bool isRawDigi =
false;
942 int det = 0,
ring = 0,
beam = 0, disk = 0,
pos = 0;
945 for (std::vector<edm::ParameterSet>::iterator itDigiProducersList =
theDigiProducersList.begin();
947 ++itDigiProducersList) {
954 if (digiType ==
"Raw") {
955 theEvent.
getByLabel(digiProducer, digiLabel, theStripRawDigis);
957 }
else if (digiType ==
"Processed") {
958 theEvent.
getByLabel(digiProducer, digiLabel, theStripDigis);
962 <<
" ** ERROR: Invalid digi type: \"" << digiType <<
"\" specified in configuration." << std::endl;
981 if (detSetIter == theStripRawDigis->end()) {
983 <<
" ** ERROR: No raw DetSet found for det: " << detRawId <<
"." << std::endl;
991 for (; digiRangeIterator != detSetIter->data.
end(); ++digiRangeIterator) {
993 const int channel =
distance(digiRangeStart, digiRangeIterator);
994 if (channel >= 0 && channel < 512)
998 <<
" ** ERROR: raw digi channel: " << channel <<
" out of range for det: " << detRawId <<
"." 1010 if (detSetIter == theStripDigis->end())
1016 for (; digiRangeIterator != detSetIter->data.
end(); ++digiRangeIterator) {
1018 if (digi.
strip() < 512)
1022 <<
" ** ERROR: digi strip: " << digi.
strip() <<
" out of range for det: " << detRawId <<
"." 1044 if (detSetIter == theStripRawDigis->end()) {
1046 <<
" ** ERROR: No raw DetSet found for det: " << detRawId <<
"." << std::endl;
1054 for (; digiRangeIterator != detSetIter->data.
end(); ++digiRangeIterator) {
1056 const int channel =
distance(digiRangeStart, digiRangeIterator);
1057 if (channel >= 0 && channel < 512)
1061 <<
" ** ERROR: raw digi channel: " << channel <<
" out of range for det: " << detRawId <<
"." 1073 if (detSetIter == theStripDigis->end())
1079 for (; digiRangeIterator != detSetIter->data.
end(); ++digiRangeIterator) {
1081 if (digi.
strip() < 512)
1085 <<
" ** ERROR: digi strip: " << digi.
strip() <<
" out of range for det: " << detRawId <<
"." 1107 if (detSetIter == theStripRawDigis->end()) {
1109 <<
" ** ERROR: No raw DetSet found for det: " << detRawId <<
"." << std::endl;
1117 for (; digiRangeIterator != detSetIter->data.
end(); ++digiRangeIterator) {
1119 const int channel =
distance(digiRangeStart, digiRangeIterator);
1120 if (channel >= 0 && channel < 512)
1124 <<
" ** ERROR: raw digi channel: " << channel <<
" out of range for det: " << detRawId <<
"." 1136 if (detSetIter == theStripDigis->end())
1142 for (; digiRangeIterator != detSetIter->data.
end(); ++digiRangeIterator) {
1144 if (digi.
strip() < 512)
1148 <<
" ** ERROR: digi strip: " << digi.
strip() <<
" out of range for det: " << detRawId <<
"." 1178 if (thePedestal > 895)
1179 thePedestal -= 1024;
1192 if (thePedestal > 895)
1193 thePedestal -= 1024;
1206 if (thePedestal > 895)
1207 thePedestal -= 1024;
1219 int numberOfProfiles = 0;
1222 for (
int det = 0; det < 2; ++det) {
1224 for (
int disk = 0; disk < 9; ++disk) {
1231 LogDebug(
"[LaserAlignment::isTECBeam]") <<
" Found: " << numberOfProfiles <<
"hits." << std::endl;
1232 std::cout <<
" [LaserAlignment::isTECBeam] -- Found: " << numberOfProfiles <<
" hits." << std::endl;
1234 if (numberOfProfiles > 10)
1246 int numberOfProfiles = 0;
1256 LogDebug(
"[LaserAlignment::isATBeam]") <<
" Found: " << numberOfProfiles <<
"hits." << std::endl;
1257 std::cout <<
" [LaserAlignment::isATBeam] -- Found: " << numberOfProfiles <<
" hits." << std::endl;
1259 if (numberOfProfiles > 10)
1273 if (det < 2 || det > 3 || beam > 7 || pos > 5) {
1274 throw cms::Exception(
"[LaserAlignment::getTIBTOBNominalBeamOffset]")
1275 <<
" ERROR ** Called with nonexisting parameter set: det " << det <<
" beam " << beam <<
" pos " << pos <<
"." 1279 const double nominalOffsetsTIB[8] = {
1280 0.00035, 2.10687, -2.10827, -0.00173446, 2.10072, -0.00135114, 2.10105, -2.10401};
1285 const int orientationPattern[6] = {-1, 1, 1, -1, -1, 1};
1286 const double nominalOffsetsTOB[8] = {0.00217408, 1.58678, 117.733, 119.321, 120.906, 119.328, 117.743, 1.58947};
1289 return (-1. * nominalOffsetsTIB[beam]);
1292 if (beam == 0
or beam > 4)
1293 return (nominalOffsetsTOB[beam] * orientationPattern[pos]);
1295 return (-1. * nominalOffsetsTOB[beam] * orientationPattern[pos]);
1308 if (det > 1 || beam > 7 || disk > 5) {
1309 throw cms::Exception(
"[LaserAlignment::getTEC2TECNominalBeamOffset]")
1310 <<
" ERROR ** Called with nonexisting parameter set: det " << det <<
" beam " << beam <<
" disk " << disk <<
"." 1314 const double nominalOffsets[8] = {0., 2.220, -2.221, 0., 2.214, 0., 2.214, -2.217};
1317 return -1. * nominalOffsets[
beam];
1319 return nominalOffsets[
beam];
1331 const double tecPhiPositions[8] = {
1332 0.392699, 1.178097, 1.963495, 2.748894, 3.534292, 4.319690, 5.105088, 5.890486};
1333 const double atPhiPositions[8] = {
1334 0.392699, 1.289799, 1.851794, 2.748894, 3.645995, 4.319690, 5.216791, 5.778784};
1337 const double tobRPosition = 600.;
1338 const double tibRPosition = 514.;
1339 const double tecRPosition[2] = {564., 840.};
1342 const double tobZPosition[6] = {1040., 580., 220., -140., -500., -860.};
1343 const double tibZPosition[6] = {620., 380., 180., -100., -340., -540.};
1346 const double tecZPosition[9] = {1322.5, 1462.5, 1602.5, 1742.5, 1882.5, 2057.5, 2247.5, 2452.5, 2667.5};
1368 LASCoordinateSet(tecPhiPositions[beam], 0., tecRPosition[ring], 0., tecZPosition[disk], 0.));
1376 tecPhiPositions[beam], 0., tecRPosition[ring], 0., -1. * tecZPosition[disk], 0.));
1379 }
while (moduleLoop.
TECLoop(det, ring, beam, disk));
1388 det, beam, pos,
LASCoordinateSet(atPhiPositions[beam], 0., tibRPosition, 0., tibZPosition[pos], 0.));
1391 det, beam, pos,
LASCoordinateSet(atPhiPositions[beam], 0., tobRPosition, 0., tobZPosition[pos], 0.));
1394 }
while (moduleLoop.
TIBTOBLoop(det, beam, pos));
1403 det, beam, disk,
LASCoordinateSet(atPhiPositions[beam], 0., tecRPosition[0], 0., tecZPosition[disk], 0.));
1409 LASCoordinateSet(atPhiPositions[beam], 0., tecRPosition[0], 0., -1. * tecZPosition[disk], 0.));
1412 }
while (moduleLoop.
TEC2TECLoop(det, beam, disk));
1420 if (angle < -1. * M_PI || angle >
M_PI) {
1422 <<
"** ERROR: Called with illegal input angle: " << angle <<
"." << std::endl;
1428 return (angle + 2. * M_PI);
1438 std::cout << std::endl <<
" [LaserAlignment::DumpPosFileSet] -- Dump: " << std::endl;
1446 std::cout <<
"POS " << det <<
"\t" << beam <<
"\t" << disk <<
"\t" << ring <<
"\t" 1449 }
while (loop.
TECLoop(det, ring, beam, disk));
1456 std::cout <<
"POS " << det <<
"\t" << beam <<
"\t" << pos <<
"\t" 1467 std::cout <<
"POS " << det <<
"\t" << beam <<
"\t" << disk <<
"\t" 1473 std::cout << std::endl <<
" [LaserAlignment::DumpPosFileSet] -- End dump: " << std::endl;
1483 std::cout << std::endl <<
" [LaserAlignment::DumpStripFileSet] -- Dump: " << std::endl;
1491 std::cout <<
"STRIP " << det <<
"\t" << beam <<
"\t" << disk <<
"\t" << ring <<
"\t" 1492 << measuredStripPositions.GetTECEntry(det, ring, beam, disk).first <<
"\t" 1493 << measuredStripPositions.GetTECEntry(det, ring, beam, disk).second << std::endl;
1494 }
while (loop.
TECLoop(det, ring, beam, disk));
1501 std::cout <<
"STRIP " << det <<
"\t" << beam <<
"\t" << pos <<
"\t" 1503 <<
"\t" << measuredStripPositions.GetTIBTOBEntry(det, beam, pos).first <<
"\t" 1504 << measuredStripPositions.GetTIBTOBEntry(det, beam, pos).second << std::endl;
1512 std::cout <<
"STRIP " << det <<
"\t" << beam <<
"\t" << disk <<
"\t" 1514 <<
"\t" << measuredStripPositions.GetTEC2TECEntry(det, beam, disk).first <<
"\t" 1515 << measuredStripPositions.GetTEC2TECEntry(det, beam, disk).second << std::endl;
1518 std::cout << std::endl <<
" [LaserAlignment::DumpStripFileSet] -- End dump: " << std::endl;
1525 std::cout <<
" [LaserAlignment::DumpHitmaps] -- Dumping hitmap for TEC+:" << std::endl;
1526 std::cout <<
" [LaserAlignment::DumpHitmaps] -- Ring4:" << std::endl;
1527 std::cout <<
" disk0 disk1 disk2 disk3 disk4 disk5 disk6 disk7 disk8" << std::endl;
1531 for (
int disk = 0; disk < 9; ++disk) {
1537 std::cout <<
" [LaserAlignment::DumpHitmaps] -- Ring6:" << std::endl;
1538 std::cout <<
" disk0 disk1 disk2 disk3 disk4 disk5 disk6 disk7 disk8" << std::endl;
1542 for (
int disk = 0; disk < 9; ++disk) {
1548 std::cout <<
" [LaserAlignment::DumpHitmaps] -- Dumping hitmap for TEC-:" << std::endl;
1549 std::cout <<
" [LaserAlignment::DumpHitmaps] -- Ring4:" << std::endl;
1550 std::cout <<
" disk0 disk1 disk2 disk3 disk4 disk5 disk6 disk7 disk8" << std::endl;
1554 for (
int disk = 0; disk < 9; ++disk) {
1560 std::cout <<
" [LaserAlignment::DumpHitmaps] -- Ring6:" << std::endl;
1561 std::cout <<
" disk0 disk1 disk2 disk3 disk4 disk5 disk6 disk7 disk8" << std::endl;
1565 for (
int disk = 0; disk < 9; ++disk) {
1571 std::cout <<
" [LaserAlignment::DumpHitmaps] -- End of dump." << std::endl << std::endl;
1600 const double nominalPhi = nominalCoordinates.
GetTECEntry(det, ring, beam, disk).
GetPhi();
1604 det, ring, beam, disk, nominalCoordinates, endcapParameters);
1607 measuredCoordinates.
GetTECEntry(det, ring, beam, disk).
SetPhi(nominalPhi - phiCorrection);
1610 }
while (moduleLoop.
TECLoop(det, ring, beam, disk));
1644 const double phiCorrection =
1651 }
while (moduleLoop.
TIBTOBLoop(det, beam, pos));
1664 const double phiCorrection =
1671 }
while (moduleLoop.
TEC2TECLoop(det, beam, disk));
1683 const double atPhiPositions[8] = {0.392699, 1.289799, 1.851794, 2.748894, 3.645995, 4.319690, 5.216791, 5.778784};
1684 const double tecPhiPositions[8] = {0.392699, 1.178097, 1.963495, 2.748894, 3.534292, 4.319690, 5.105088, 5.890486};
1685 const double zPositions[9] = {125.0, 139.0, 153.0, 167.0, 181.0, 198.5, 217.5, 238.0, 259.5};
1686 const double zPositionsTIB[6] = {62.0, 38.0, 18.0, -10.0, -34.0, -54.0};
1687 const double zPositionsTOB[6] = {104.0, 58.0, 22.0, -14.0, -50.0, -86.0};
1697 const double radius = ring ? 84.0 : 56.4;
1706 const LocalPoint lp(theStripDet->surface().toLocal(gp));
1707 std::cout <<
"__TEC: " << 256. - theStripDet->specificTopology().strip(lp)
1719 (det == 2 ? 51.4 : 58.4);
1720 const double theZ = (det == 2 ? zPositionsTIB[pos] : zPositionsTOB[pos]);
1729 const LocalPoint lp(theStripDet->surface().toLocal(gp));
1730 std::cout <<
"__TIBTOB det " << det <<
" beam " << beam <<
" pos " << pos <<
" " 1731 << 256. - theStripDet->specificTopology().strip(lp);
1732 std::cout <<
" " << theStripDet->position().perp() << std::endl;
1742 const double radius = 56.4;
1751 const LocalPoint lp(theStripDet->surface().toLocal(gp));
1752 std::cout <<
"__TEC2TEC det " << det <<
" beam " << beam <<
" disk " << disk <<
" " 1753 << 256. - theStripDet->specificTopology().strip(lp) << std::endl;
bool IsSignalIn(const LASModuleProfile &, double)
void SetTEC2TECEntry(int subdetector, int beam, int tecDisk, T)
const uint16_t & adc() const
T getParameter(std::string const &) const
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
bool theSaveHistograms
config switch
void SetPhiError(double aPhiError)
void ApplyEndcapMaskingCorrections(LASGlobalData< LASCoordinateSet > &, LASGlobalData< LASCoordinateSet > &, LASEndcapAlignmentParameterSet &)
apply endcap correction to masked modules in TEC
void produce(edm::Event &, edm::EventSetup const &) override
void TrackerUpdate(LASEndcapAlignmentParameterSet &, LASBarrelAlignmentParameterSet &, AlignableTracker &)
void SetMisalignmentFromRefGeometry(bool)
bool misalignedByRefGeometry
config switch
std::string theAlignRecordName
bool isTECBeam(void)
decide whether TEC or AT beams have fired
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 &)
TrackerGeometry * build(const GeometricDet *gd, const PTrackerParameters &ptp, const TrackerTopology *tTopo)
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
float getPed(const uint16_t &strip, const Range &range) const
Handle< TkLasBeamCollection > laserBeams
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
#define DEFINE_FWK_MODULE(type)
ProductT const & get(ESGetToken< ProductT, DepRecordT > const &iToken) const
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)
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::EventID const &, edm::Timestamp const & > We also list in braces which AR_WATCH_USING_METHOD_ is used for those or
cond::Time_t beginOfTime() const
std::vector< unsigned int > tecDoubleHitDetId
void writeOne(T *payload, Time_t time, const std::string &recordName, bool withlogging=false)
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
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
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
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
Alignments * alignments() const override
Return alignments, sorted by DetId.
void ApplyBeamKinkCorrections(LASGlobalData< LASCoordinateSet > &) const
int theCompression
config parameter (histograms file compression level)
AlignmentErrorsExtended * alignmentErrors() const override
Return alignment errors, sorted by DetId.
void EnableZeroFilter(bool)
const TrackerGeomDet * idToDet(DetId) const override
LASGlobalData< unsigned int > detectorId
bool TECLoop(int &, int &, int &, int &) const
bool TIBTOBLoop(int &, int &, int &) const
double GetPhiError(void) const
iterator begin()
Return an iterator to the first DetSet.
const Range getRange(const uint32_t &detID) const
bool enableJudgeZeroFilter
config switch
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 ...
T const * product() const
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