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(
"TrackerAlignmentErrorRcd" ) {
45 std::cout <<
"=============================================================="
46 <<
"\n=== LaserAlignment module configuration ==="
59 <<
"\n Number of TEC modules masked = " <<
theMaskTecModules.size() <<
" (s. below list if > 0)"
60 <<
"\n Number of AT modules masked = " <<
theMaskAtModules.size() <<
" (s. below list if > 0)"
61 <<
"\n Store to database = " << (
theStoreToDB?
"true":
"false")
62 <<
"\n ----------------------------------------------- ----------"
64 <<
"\n=============================================================" << std::endl;
69 std::cout <<
" ===============================================================================================\n" << std::flush;
70 std::cout <<
" The following " <<
theMaskTecModules.size() <<
" TEC modules have been masked out and will not be considered by the TEC algorithm:\n " << std::flush;
75 std::cout <<
" ===============================================================================================\n\n" << std::flush;
78 std::cout <<
" ===============================================================================================\n" << std::flush;
79 std::cout <<
" The following " <<
theMaskAtModules.size() <<
" AT modules have been masked out and will not be considered by the AT algorithm:\n " << std::flush;
84 std::cout <<
" ===============================================================================================\n\n" << std::flush;
90 std::string alias ( theConf.
getParameter<std::string>(
"@module_label") );
93 produces<TkLasBeamCollection, edm::InRun>(
"tkLaserBeams" ).setBranchAlias( alias +
"TkLasBeamCollection" );
137 else throw cms::Exception(
" [LaserAlignment::beginJob]") <<
" ** ERROR: could not open file:" <<
theFileName.c_str() <<
" for writing." << std::endl;
149 std::stringstream nameBuilder;
152 int det,
ring, beam, disk,
pos;
155 det = 0; ring = 0; beam = 0; disk = 0;
168 nameBuilder.str(
"" );
169 nameBuilder <<
"TEC";
170 if( det == 0 ) nameBuilder <<
"+";
else nameBuilder <<
"-";
171 nameBuilder <<
"_Ring";
172 if( ring == 0 ) nameBuilder <<
"4";
else nameBuilder <<
"6";
173 nameBuilder <<
"_Beam" << beam;
174 nameBuilder <<
"_Disk" << disk;
179 nameBuilder <<
"_Histo";
180 summedHistograms.
SetTECEntry( det, ring, beam, disk,
new TH1D( nameBuilder.str().c_str(), nameBuilder.str().c_str(), 512, 0, 512 ) );
188 det = 2; beam = 0; pos = 0;
201 nameBuilder.str(
"" );
202 if( det == 2 ) nameBuilder <<
"TIB";
else nameBuilder <<
"TOB";
203 nameBuilder <<
"_Beam" << beam;
204 nameBuilder <<
"_Zpos" <<
pos;
210 nameBuilder <<
"_Histo";
219 det = 0; beam = 0; disk = 0;
232 nameBuilder.str(
"" );
233 nameBuilder <<
"TEC(AT)";
234 if( det == 0 ) nameBuilder <<
"+";
else nameBuilder <<
"-";
235 nameBuilder <<
"_Beam" << beam;
236 nameBuilder <<
"_Disk" << disk;
241 nameBuilder <<
"_Histo";
295 LogDebug(
"LaserAlignment") <<
"==========================================================="
296 <<
"\n Private analysis of event #"<< theEvent.
id().
event()
297 <<
" in run #" << theEvent.
id().
run();
304 int det,
ring, beam, disk,
pos;
315 for( det = 0; det < 2; ++det ) {
316 for( beam = 0; beam < 8; ++ beam ) {
317 for( disk = 0; disk < 9; ++disk ) {
329 det = 2; beam = 0; pos = 0;
347 std::cout <<
" [LaserAlignment::produce] -- LaserAlignment::isTECBeam declares this event " << ( isTECMode ?
"" :
"NOT " ) <<
"a TEC event." << std::endl;
351 std::cout <<
" [LaserAlignment::produce] -- LaserAlignment::isATBeam declares this event " << ( isATMode ?
"" :
"NOT " ) <<
"an AT event." << std::endl;
364 det = 0; ring = 0; beam = 0; disk = 0;
397 det = 2; beam = 0; pos = 0;
413 det = 0; beam = 0; disk = 0;
460 std::cout <<
" [LaserAlignment::endRun] -- Total number of events processed: " <<
theEvents << std::endl;
466 int det,
ring, beam, disk,
pos;
477 std::pair<double,double> peakFinderResults;
494 det = 0; ring = 0; beam = 0; disk = 0;
502 if( !isGoodFit )
std::cout <<
" [LaserAlignment::endRun] ** WARNING: Fit failed for TEC det: "
503 << det <<
", ring: " << ring <<
", beam: " << beam <<
", disk: " << disk
519 measuredStripPositions.
GetTECEntry( det, ring, beam, disk ) = peakFinderResults;
521 const GlobalPoint& globalPoint = theStripDet->surface().toGlobal( theStripDet->specificTopology().localPosition( positionInStrips ) );
530 measuredStripPositions.
GetTECEntry( det, ring, beam, disk ) = std::pair<float,float>( 256., 1000. );
531 const GlobalPoint& globalPoint = theStripDet->surface().toGlobal( theStripDet->specificTopology().localPosition( 256. ) );
542 det = 2; beam = 0; pos = 0;
550 if( !isGoodFit )
std::cout <<
" [LaserAlignment::endJob] ** WARNING: Fit failed for TIB/TOB det: "
551 << det <<
", beam: " << beam <<
", pos: " << pos
565 measuredStripPositions.
GetTIBTOBEntry( det, beam, pos ) = peakFinderResults;
567 const GlobalPoint& globalPoint = theStripDet->surface().toGlobal( theStripDet->specificTopology().localPosition( positionInStrips ) );
584 det = 0; beam = 0; disk = 0;
591 if( !isGoodFit )
std::cout <<
" [LaserAlignment::endRun] ** WARNING: Fit failed for TEC2TEC det: "
592 << det <<
", beam: " << beam <<
", disk: " << disk
606 measuredStripPositions.
GetTEC2TECEntry( det, beam, disk ) = peakFinderResults;
608 const GlobalPoint& globalPoint = theStripDet->surface().toGlobal( theStripDet->specificTopology().localPosition( positionInStrips ) );
674 const unsigned int nIterations = 30;
689 endcapParameters.
Print();
696 geometryUpdater.
EndcapUpdate( endcapParameters, measuredCoordinates );
732 const unsigned int nIterations = 30;
753 alignmentTubeParameters.
Print();
776 for( det = 0; det < 2; ++det ) {
777 for( ring = 0; ring < 2; ++
ring ) {
778 for( beam = 0; beam < 8; ++beam ) {
781 TkLasBeam currentBeam( 100 * det + 10 * beam + ring );
784 const int firstDisk = det==0 ? 0 : 8;
785 const int lastDisk = det==0 ? 8 : 0;
788 for( disk = firstDisk; det==0 ? disk <= lastDisk : disk >= lastDisk; det==0 ? ++disk : --disk ) {
798 theStripDet->specificTopology().localPosition( measuredStripPositions.
GetTECEntry( det, ring, beam, disk ).first ),
799 theStripDet->specificTopology().localError( measuredStripPositions.
GetTECEntry( det, ring, beam, disk ).first, measuredStripPositions.
GetTECEntry( det, ring, beam, disk ).second ),
807 laserBeams->push_back( currentBeam );
818 for( beam = 0; beam < 8; ++beam ) {
821 TkLasBeam currentBeam( 100 * 2 + 10 * beam + 0 );
826 for( disk = 4; disk >= 0; --disk ) {
836 theStripDet->specificTopology().localPosition( measuredStripPositions.
GetTEC2TECEntry( det, beam, disk ).first ),
837 theStripDet->specificTopology().localError( measuredStripPositions.
GetTEC2TECEntry( det, beam, disk ).first, measuredStripPositions.
GetTEC2TECEntry( det, beam, disk ).second ),
847 for( det = 2; det < 4; ++det ) {
848 for( pos = 5; pos >= 0; --
pos ) {
858 theStripDet->specificTopology().localPosition( measuredStripPositions.
GetTIBTOBEntry( det, beam, pos ).first ),
859 theStripDet->specificTopology().localError( measuredStripPositions.
GetTIBTOBEntry( det, beam, pos ).first, measuredStripPositions.
GetTIBTOBEntry( det, beam, pos ).second ),
871 for( disk = 0; disk < 5; ++disk ) {
881 theStripDet->specificTopology().localPosition( measuredStripPositions.
GetTEC2TECEntry( det, beam, disk ).first ),
882 theStripDet->specificTopology().localError( measuredStripPositions.
GetTEC2TECEntry( det, beam, disk ).first, measuredStripPositions.
GetTEC2TECEntry( det, beam, disk ).second ),
893 laserBeams->push_back( currentBeam );
899 theRun.
put( laserBeams,
"tkLaserBeams" );
912 std::cout <<
" [LaserAlignment::endRun] -- Storing the calculated alignment parameters to the DataBase:" << std::endl;
917 throw cms::Exception(
"NotAvailable" ) <<
"PoolDBOutputService not available";
937 std::cout <<
" [LaserAlignment::endRun] -- Storing done." << std::endl;
967 bool isRawDigi =
false;
970 int det = 0,
ring = 0, beam = 0, disk = 0,
pos = 0;
975 std::string
digiProducer = itDigiProducersList->getParameter<std::string>(
"DigiProducer" );
976 std::string
digiLabel = itDigiProducersList->getParameter<std::string>(
"DigiLabel" );
977 std::string digiType = itDigiProducersList->getParameter<std::string>(
"DigiType" );
981 if( digiType ==
"Raw" ) {
982 theEvent.
getByLabel( digiProducer, digiLabel, theStripRawDigis );
985 else if( digiType ==
"Processed" ) {
986 theEvent.
getByLabel( digiProducer, digiLabel, theStripDigis );
990 throw cms::Exception(
" [LaserAlignment::fillDataProfiles]") <<
" ** ERROR: Invalid digi type: \"" << digiType <<
"\" specified in configuration." << std::endl;
996 det = 0;
ring = 0; beam = 0; disk = 0;
1009 if( detSetIter == theStripRawDigis->end() ) {
1010 throw cms::Exception(
"[Laser Alignment::fillDataProfiles]" ) <<
" ** ERROR: No raw DetSet found for det: " << detRawId <<
"." << std::endl;
1018 for (; digiRangeIterator != detSetIter->data.
end(); ++digiRangeIterator ) {
1020 const int channel = distance( digiRangeStart, digiRangeIterator );
1022 else throw cms::Exception(
"[Laser Alignment::fillDataProfiles]" ) <<
" ** ERROR: raw digi channel: " << channel <<
" out of range for det: " << detRawId <<
"." << std::endl;
1033 if( detSetIter == theStripDigis->end() )
continue;
1039 for(; digiRangeIterator != detSetIter->data.
end(); ++digiRangeIterator ) {
1042 else throw cms::Exception(
"[Laser Alignment::fillDataProfiles]" ) <<
" ** ERROR: digi strip: " << digi.
strip() <<
" out of range for det: " << detRawId <<
"." << std::endl;
1055 det = 2; beam = 0;
pos = 0;
1068 if( detSetIter == theStripRawDigis->end() ) {
1069 throw cms::Exception(
"[Laser Alignment::fillDataProfiles]" ) <<
" ** ERROR: No raw DetSet found for det: " << detRawId <<
"." << std::endl;
1077 for (; digiRangeIterator != detSetIter->data.
end(); ++digiRangeIterator ) {
1079 const int channel = distance( digiRangeStart, digiRangeIterator );
1081 else throw cms::Exception(
"[Laser Alignment::fillDataProfiles]" ) <<
" ** ERROR: raw digi channel: " << channel <<
" out of range for det: " << detRawId <<
"." << std::endl;
1092 if( detSetIter == theStripDigis->end() )
continue;
1098 for(; digiRangeIterator != detSetIter->data.
end(); ++digiRangeIterator ) {
1101 else throw cms::Exception(
"[Laser Alignment::fillDataProfiles]" ) <<
" ** ERROR: digi strip: " << digi.
strip() <<
" out of range for det: " << detRawId <<
"." << std::endl;
1111 det = 0; beam = 0; disk = 0;
1124 if( detSetIter == theStripRawDigis->end() ) {
1125 throw cms::Exception(
"[Laser Alignment::fillDataProfiles]" ) <<
" ** ERROR: No raw DetSet found for det: " << detRawId <<
"." << std::endl;
1133 for (; digiRangeIterator != detSetIter->data.
end(); ++digiRangeIterator ) {
1135 const int channel = distance( digiRangeStart, digiRangeIterator );
1137 else throw cms::Exception(
"[Laser Alignment::fillDataProfiles]" ) <<
" ** ERROR: raw digi channel: " << channel <<
" out of range for det: " << detRawId <<
"." << std::endl;
1148 if( detSetIter == theStripDigis->end() )
continue;
1154 for(; digiRangeIterator != detSetIter->data.
end(); ++digiRangeIterator ) {
1157 else throw cms::Exception(
"[Laser Alignment::fillDataProfiles]" ) <<
" ** ERROR: digi strip: " << digi.
strip() <<
" out of range for det: " << detRawId <<
"." << std::endl;
1182 int det,
ring, beam, disk,
pos;
1185 det = 0; ring = 0; beam = 0; disk = 0;
1189 int thePedestal = int( pedestalsHandle->getPed(
strip, pedRange ) );
1190 if( thePedestal > 895 ) thePedestal -= 1024;
1197 det = 2; beam = 0; pos = 0;
1201 int thePedestal = int( pedestalsHandle->getPed(
strip, pedRange ) );
1202 if( thePedestal > 895 ) thePedestal -= 1024;
1209 det = 0; beam = 0; disk = 0;
1213 int thePedestal = int( pedestalsHandle->getPed(
strip, pedRange ) );
1214 if( thePedestal > 895 ) thePedestal -= 1024;
1232 int numberOfProfiles = 0;
1235 for(
int det = 0; det < 2; ++det ) {
1236 for(
int beam = 0; beam < 8; ++ beam ) {
1237 for(
int disk = 0; disk < 9; ++disk ) {
1243 LogDebug(
"[LaserAlignment::isTECBeam]" ) <<
" Found: " << numberOfProfiles <<
"hits." << std::endl;
1244 std::cout <<
" [LaserAlignment::isTECBeam] -- Found: " << numberOfProfiles <<
" hits." << std::endl;
1246 if( numberOfProfiles > 10 )
return(
true );
1263 int numberOfProfiles = 0;
1265 int det = 2;
int beam = 0;
int pos = 0;
1270 LogDebug(
"[LaserAlignment::isATBeam]" ) <<
" Found: " << numberOfProfiles <<
"hits." << std::endl;
1271 std::cout <<
" [LaserAlignment::isATBeam] -- Found: " << numberOfProfiles <<
" hits." << std::endl;
1273 if( numberOfProfiles > 10 )
return(
true );
1292 if( det < 2 || det > 3 || beam > 7 || pos > 5 ) {
1293 throw cms::Exception(
"[LaserAlignment::getTIBTOBNominalBeamOffset]" ) <<
" ERROR ** Called with nonexisting parameter set: det " << det <<
" beam " << beam <<
" pos " << pos <<
"." << std::endl;
1296 const double nominalOffsetsTIB[8] = { 0.00035, 2.10687, -2.10827, -0.00173446, 2.10072, -0.00135114, 2.10105, -2.10401 };
1301 const int orientationPattern[6] = { -1, 1, 1, -1, -1, 1 };
1302 const double nominalOffsetsTOB[8] = { 0.00217408, 1.58678, 117.733, 119.321, 120.906, 119.328, 117.743, 1.58947 };
1305 if( det == 2 )
return( -1. * nominalOffsetsTIB[beam] );
1308 if( beam == 0
or beam > 4 )
return( nominalOffsetsTOB[beam] * orientationPattern[pos] );
1309 else return( -1. * nominalOffsetsTOB[beam] * orientationPattern[pos] );
1327 if( det > 1 || beam > 7 || disk > 5 ) {
1328 throw cms::Exception(
"[LaserAlignment::getTEC2TECNominalBeamOffset]" ) <<
" ERROR ** Called with nonexisting parameter set: det " << det <<
" beam " << beam <<
" disk " << disk <<
"." << std::endl;
1331 const double nominalOffsets[8] = { 0., 2.220, -2.221, 0., 2.214, 0., 2.214, -2.217 };
1333 if( det == 0 )
return -1. * nominalOffsets[beam];
1334 else return nominalOffsets[beam];
1352 const double tecPhiPositions[8] = { 0.392699, 1.178097, 1.963495, 2.748894, 3.534292, 4.319690, 5.105088, 5.890486 };
1353 const double atPhiPositions[8] = { 0.392699, 1.289799, 1.851794, 2.748894, 3.645995, 4.319690, 5.216791, 5.778784 };
1356 const double tobRPosition = 600.;
1357 const double tibRPosition = 514.;
1358 const double tecRPosition[2] = { 564., 840. };
1361 const double tobZPosition[6] = { 1040., 580., 220., -140., -500., -860. };
1362 const double tibZPosition[6] = { 620., 380., 180., -100., -340., -540. };
1365 const double tecZPosition[9] = { 1322.5, 1462.5, 1602.5, 1742.5, 1882.5, 2057.5, 2247.5, 2452.5, 2667.5 };
1375 int det,
ring, beam, disk,
pos;
1379 det = 0; ring = 0, beam = 0; disk = 0;
1389 }
while( moduleLoop.
TECLoop( det, ring, beam, disk ) );
1394 det = 2; beam = 0; pos = 0;
1403 }
while( moduleLoop.
TIBTOBLoop( det, beam, pos ) );
1409 det = 0; beam = 0; disk = 0;
1419 }
while( moduleLoop.
TEC2TECLoop( det, beam, disk ) );
1434 if( angle < -1. * M_PI || angle >
M_PI ) {
1435 throw cms::Exception(
" [LaserAlignment::ConvertAngle] ") <<
"** ERROR: Called with illegal input angle: " << angle <<
"." << std::endl;
1438 if( angle >= 0. )
return angle;
1439 else return( angle + 2. * M_PI );
1453 int det,
ring, beam, disk,
pos;
1455 std:: cout << std::endl <<
" [LaserAlignment::DumpPosFileSet] -- Dump: " << std::endl;
1458 det = 0; ring = 0; beam = 0; disk = 0;
1461 }
while ( loop.
TECLoop( det, ring, beam, disk ) );
1464 det = 2; beam = 0; pos = 0;
1467 }
while( loop.
TIBTOBLoop( det, beam, pos ) );
1470 det = 0; beam = 0; disk = 0;
1475 std:: cout << std::endl <<
" [LaserAlignment::DumpPosFileSet] -- End dump: " << std::endl;
1489 int det,
ring, beam, disk,
pos;
1491 std:: cout << std::endl <<
" [LaserAlignment::DumpStripFileSet] -- Dump: " << std::endl;
1494 det = 0; ring = 0; beam = 0; disk = 0;
1496 std::cout <<
"STRIP " << det <<
"\t" << beam <<
"\t" << disk <<
"\t" << ring <<
"\t" << measuredStripPositions.GetTECEntry( det, ring, beam, disk ).first
1497 <<
"\t" << measuredStripPositions.GetTECEntry( det, ring, beam, disk ).second << std::endl;
1498 }
while ( loop.
TECLoop( det, ring, beam, disk ) );
1501 det = 2; beam = 0; pos = 0;
1503 std::cout <<
"STRIP " << det <<
"\t" << beam <<
"\t" << pos <<
"\t" <<
"-1" <<
"\t" << measuredStripPositions.GetTIBTOBEntry( det, beam, pos ).first
1504 <<
"\t" << measuredStripPositions.GetTIBTOBEntry( det, beam, pos ).second << std::endl;
1505 }
while( loop.
TIBTOBLoop( det, beam, pos ) );
1508 det = 0; beam = 0; disk = 0;
1510 std::cout <<
"STRIP " << det <<
"\t" << beam <<
"\t" << disk <<
"\t" <<
"-1" <<
"\t" << measuredStripPositions.GetTEC2TECEntry( det, beam, disk ).first
1511 <<
"\t" << measuredStripPositions.GetTEC2TECEntry( det, beam, disk ).second << std::endl;
1514 std:: cout << std::endl <<
" [LaserAlignment::DumpStripFileSet] -- End dump: " << std::endl;
1528 std::cout <<
" [LaserAlignment::DumpHitmaps] -- Dumping hitmap for TEC+:" << std::endl;
1529 std::cout <<
" [LaserAlignment::DumpHitmaps] -- Ring4:" << std::endl;
1530 std::cout <<
" disk0 disk1 disk2 disk3 disk4 disk5 disk6 disk7 disk8" << std::endl;
1532 for(
int beam = 0; beam < 8; ++beam ) {
1534 for(
int disk = 0; disk < 9; ++disk ) {
1540 std::cout <<
" [LaserAlignment::DumpHitmaps] -- Ring6:" << std::endl;
1541 std::cout <<
" disk0 disk1 disk2 disk3 disk4 disk5 disk6 disk7 disk8" << std::endl;
1543 for(
int beam = 0; beam < 8; ++beam ) {
1545 for(
int disk = 0; disk < 9; ++disk ) {
1551 std::cout <<
" [LaserAlignment::DumpHitmaps] -- Dumping hitmap for TEC-:" << std::endl;
1552 std::cout <<
" [LaserAlignment::DumpHitmaps] -- Ring4:" << std::endl;
1553 std::cout <<
" disk0 disk1 disk2 disk3 disk4 disk5 disk6 disk7 disk8" << std::endl;
1555 for(
int beam = 0; beam < 8; ++beam ) {
1557 for(
int disk = 0; disk < 9; ++disk ) {
1563 std::cout <<
" [LaserAlignment::DumpHitmaps] -- Ring6:" << std::endl;
1564 std::cout <<
" disk0 disk1 disk2 disk3 disk4 disk5 disk6 disk7 disk8" << std::endl;
1566 for(
int beam = 0; beam < 8; ++beam ) {
1568 for(
int disk = 0; disk < 9; ++disk ) {
1574 std::cout <<
" [LaserAlignment::DumpHitmaps] -- End of dump." << std::endl << std::endl;
1593 int det,
ring, beam, disk;
1599 det = 0; ring = 0; beam = 0; disk = 0;
1606 const double nominalPhi = nominalCoordinates.
GetTECEntry( det, ring, beam, disk ).
GetPhi();
1612 measuredCoordinates.
GetTECEntry( det, ring, beam, disk ).
SetPhi( nominalPhi - phiCorrection );
1616 }
while ( moduleLoop.
TECLoop( det, ring, beam, disk ) );
1637 int det, beam, disk,
pos;
1646 det = 2; beam = 0; pos = 0;
1663 }
while ( moduleLoop.
TIBTOBLoop( det, beam, pos ) );
1668 det = 0; beam = 0; disk = 0;
1685 }
while ( moduleLoop.
TEC2TECLoop( det, beam, disk ) );
1705 const double atPhiPositions[8] = { 0.392699, 1.289799, 1.851794, 2.748894, 3.645995, 4.319690, 5.216791, 5.778784 };
1706 const double tecPhiPositions[8] = { 0.392699, 1.178097, 1.963495, 2.748894, 3.534292, 4.319690, 5.105088, 5.890486 };
1707 const double zPositions[9] = { 125.0, 139.0, 153.0, 167.0, 181.0, 198.5, 217.5, 238.0, 259.5 };
1708 const double zPositionsTIB[6] = { 62.0, 38.0, 18.0, -10.0, -34.0, -54.0 };
1709 const double zPositionsTOB[6] = { 104.0, 58.0, 22.0, -14.0, -50.0, -86.0 };
1711 int det, beam, disk,
pos,
ring;
1714 det = 0; ring = 0; beam = 0; disk = 0;
1717 const double radius = ring?84.0:56.4;
1725 const LocalPoint lp( theStripDet->surface().toLocal( gp ) );
1726 std::cout <<
"__TEC: " << 256. - theStripDet->specificTopology().strip( lp ) << std::endl;
1732 det = 2; beam = 0; pos = 0;
1735 const double radius = (det==2?51.4:58.4);
1736 const double theZ = (det==2?zPositionsTIB[
pos]:zPositionsTOB[
pos]);
1744 const LocalPoint lp( theStripDet->surface().toLocal( gp ) );
1745 std::cout <<
"__TIBTOB det " << det <<
" beam " << beam <<
" pos " << pos <<
" " << 256. - theStripDet->specificTopology().strip( lp );
1746 std::cout <<
" " << theStripDet->position().perp()<< std::endl;
1752 det = 0; beam = 0; disk = 0;
1755 const double radius = 56.4;
1763 const LocalPoint lp( theStripDet->surface().toLocal( gp ) );
1764 std::cout <<
"__TEC2TEC det " << det <<
" beam " << beam <<
" disk " << disk <<
" " << 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
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
void TrackerUpdate(LASEndcapAlignmentParameterSet &, LASBarrelAlignmentParameterSet &, AlignableTracker &)
void SetMisalignmentFromRefGeometry(bool)
bool misalignedByRefGeometry
config switch
std::string theAlignRecordName
#define DEFINE_FWK_MODULE(type)
bool isTECBeam(void)
decide whether TEC or AT beams have fired
LaserAlignment(edm::ParameterSet const &theConf)
virtual void endRun(edm::Run &, const edm::EventSetup &)
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 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
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
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
void get(HolderT &iHolder) const
AlignmentErrors * alignmentErrors() const
Return alignment errors, sorted by DetId.
std::vector< unsigned int > tecDoubleHitDetId
void writeOne(T *payload, Time_t time, const std::string &recordName, bool withlogging=false)
void DumpHitmaps(LASGlobalData< int >)
for debugging only, will disappear
void SetAmplitudeThreshold(double)
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)
virtual const GeomDet * idToDet(DetId) const
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 &)
virtual void endJob(void)
void SetValue(unsigned int theStripNumber, const double &theValue)
bool theStoreToDB
config switch
Detector identifier class for the strip tracker.
LASGlobalData< LASModuleProfile > pedestalProfiles
virtual void beginJob(void)
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 SetOverdriveThreshold(unsigned int)
TrackerGeometry * build(const GeometricDet *gd)
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
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
virtual void produce(edm::Event &, edm::EventSetup const &)
bool TIBTOBLoop(int &, int &, int &) const
double GetPhiError(void) const
void put(std::auto_ptr< PROD > product)
Put a new product.
std::vector< TkLasBeam > TkLasBeamCollection
iterator begin()
Return an iterator to the first DetSet.
bool enableJudgeZeroFilter
config switch
Alignments * alignments() const
Return alignments, sorted by DetId.
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