Back to home page

Project CMSSW displayed by LXR

 
 

    


File indexing completed on 2024-04-06 12:09:15

0001 
0002 #include "DQMOffline/Alignment/interface/LaserAlignmentT0ProducerDQM.h"
0003 
0004 ///
0005 ///
0006 ///
0007 LaserAlignmentT0ProducerDQM::LaserAlignmentT0ProducerDQM(const edm::ParameterSet &aConfiguration) {
0008   theConfiguration = aConfiguration;
0009   FillDetectorId();
0010 }
0011 
0012 ///
0013 ///
0014 ///
0015 LaserAlignmentT0ProducerDQM::~LaserAlignmentT0ProducerDQM() {}
0016 
0017 void LaserAlignmentT0ProducerDQM::bookHistograms(DQMStore::IBooker &iBooker,
0018                                                  edm::Run const &,
0019                                                  edm::EventSetup const &) {
0020   // upper and lower treshold for a profile considered showing a signal
0021   theLowerAdcThreshold = theConfiguration.getParameter<unsigned int>("LowerAdcThreshold");
0022   theUpperAdcThreshold = theConfiguration.getParameter<unsigned int>("UpperAdcThreshold");
0023 
0024   // the list of input digi products from the cfg
0025   theDigiProducerList = theConfiguration.getParameter<std::vector<edm::ParameterSet>>("DigiProducerList");
0026 
0027   std::string folderName = theConfiguration.getParameter<std::string>("FolderName");
0028   iBooker.setCurrentFolder(folderName);
0029 
0030   std::string nameAndTitle;
0031   std::stringstream labelBuilder;
0032 
0033   const short nBeams = 8;
0034   const short nDisks = 9;
0035 
0036   // for the alignment tubes modules:
0037   // x: 16 modules (5*TEC-, 6*TIB, 6*TOB, 5*TEC+), all from -z to z
0038   // y: 8 beams
0039   nameAndTitle = "NumberOfSignals_AlignmentTubes";
0040   nSignalsAT = iBooker.book2D(nameAndTitle, nameAndTitle, 22, 0, 22, nBeams, 0, nBeams);
0041   //  nSignalsAT->setAxisTitle( "z-pos", 1 );
0042   //  nSignalsAT->setAxisTitle( "beam", 2 );
0043 
0044   // create bin labels for the AT histograms (subdets mixed here)
0045   for (unsigned int i = 1; i <= 5; ++i) {
0046     labelBuilder.clear();
0047     labelBuilder.str("");
0048     labelBuilder << "TEC- D" << 5 - i;  // TEC-
0049     nSignalsAT->setBinLabel(i, labelBuilder.str(), 1);
0050     labelBuilder.clear();
0051     labelBuilder.str("");
0052     labelBuilder << "TEC+ D" << i - 1;  // TEC+
0053     nSignalsAT->setBinLabel(17 + i, labelBuilder.str(), 1);
0054   }
0055   for (unsigned int i = 0; i < 6; ++i) {
0056     labelBuilder.clear();
0057     labelBuilder.str("");
0058     labelBuilder << "TIB" << i;  // TIB
0059     nSignalsAT->setBinLabel(6 + i, labelBuilder.str(), 1);
0060     labelBuilder.clear();
0061     labelBuilder.str("");
0062     labelBuilder << "TOB" << i;  // TOB
0063     nSignalsAT->setBinLabel(12 + i, labelBuilder.str(), 1);
0064   }
0065 
0066   // for the tec internal modules:
0067   // x: disk1...disk9 (from inner to outer, so z changes direction!)
0068   // y: 8 beams
0069   nameAndTitle = "NumberOfSignals_TEC+R4";
0070   nSignalsTECPlusR4 = iBooker.book2D(nameAndTitle, nameAndTitle, nDisks, 0, nDisks, nBeams, 0, nBeams);
0071   //  nSignalsTECPlusR4->setAxisTitle( "disk", 1 );
0072   //  nSignalsTECPlusR4->setAxisTitle( "beam", 2 );
0073 
0074   nameAndTitle = "NumberOfSignals_TEC+R6";
0075   nSignalsTECPlusR6 = iBooker.book2D(nameAndTitle, nameAndTitle, nDisks, 0, nDisks, nBeams, 0, nBeams);
0076   //  nSignalsTECPlusR6->setAxisTitle( "disk", 1 );
0077   //  nSignalsTECPlusR6->setAxisTitle( "beam", 2 );
0078 
0079   nameAndTitle = "NumberOfSignals_TEC-R4";
0080   nSignalsTECMinusR4 = iBooker.book2D(nameAndTitle, nameAndTitle, nDisks, 0, nDisks, nBeams, 0, nBeams);
0081   //  nSignalsTECMinusR4->setAxisTitle( "disk", 1 );
0082   //  nSignalsTECMinusR4->setAxisTitle( "beam", 2 );
0083 
0084   nameAndTitle = "NumberOfSignals_TEC-R6";
0085   nSignalsTECMinusR6 = iBooker.book2D(nameAndTitle, nameAndTitle, nDisks, 0, nDisks, nBeams, 0, nBeams);
0086   //  nSignalsTECMinusR6->setAxisTitle( "disk", 1 );
0087   //  nSignalsTECMinusR6->setAxisTitle( "beam", 2 );
0088 
0089   // disk labels common for all TEC internal histograms
0090   for (unsigned int disk = 0; disk < 9; ++disk) {
0091     labelBuilder.clear();
0092     labelBuilder.str("");
0093     labelBuilder << "DISK" << disk;
0094     nSignalsTECPlusR4->setBinLabel(disk + 1, labelBuilder.str(), 1);
0095     nSignalsTECPlusR6->setBinLabel(disk + 1, labelBuilder.str(), 1);
0096     nSignalsTECMinusR4->setBinLabel(disk + 1, labelBuilder.str(), 1);
0097     nSignalsTECMinusR6->setBinLabel(disk + 1, labelBuilder.str(), 1);
0098   }
0099 
0100   // beam labels common for all histograms
0101   for (unsigned int beam = 0; beam < 8; ++beam) {
0102     labelBuilder.clear();
0103     labelBuilder.str("");
0104     labelBuilder << "BEAM" << beam;
0105     nSignalsAT->setBinLabel(beam + 1, labelBuilder.str(), 2);
0106     nSignalsTECPlusR4->setBinLabel(beam + 1, labelBuilder.str(), 2);
0107     nSignalsTECPlusR6->setBinLabel(beam + 1, labelBuilder.str(), 2);
0108     nSignalsTECMinusR4->setBinLabel(beam + 1, labelBuilder.str(), 2);
0109     nSignalsTECMinusR6->setBinLabel(beam + 1, labelBuilder.str(), 2);
0110   }
0111 }
0112 
0113 ///
0114 ///
0115 ///
0116 void LaserAlignmentT0ProducerDQM::analyze(const edm::Event &aEvent, const edm::EventSetup &aSetup) {
0117   // loop all input products
0118   for (std::vector<edm::ParameterSet>::iterator aDigiProducer = theDigiProducerList.begin();
0119        aDigiProducer != theDigiProducerList.end();
0120        ++aDigiProducer) {
0121     const std::string digiProducer = aDigiProducer->getParameter<std::string>("DigiProducer");
0122     const std::string digiLabel = aDigiProducer->getParameter<std::string>("DigiLabel");
0123     const std::string digiType = aDigiProducer->getParameter<std::string>("DigiType");
0124 
0125     // now a distinction of cases: raw or processed digis?
0126 
0127     // first we go for raw digis => SiStripRawDigi
0128     if (digiType == "Raw") {
0129       // retrieve the SiStripRawDigis collection
0130       edm::Handle<edm::DetSetVector<SiStripRawDigi>> rawDigis;
0131       aEvent.getByLabel(digiProducer, digiLabel, rawDigis);
0132 
0133       // eval & fill histos from raw digis
0134       FillFromRawDigis(*rawDigis);
0135 
0136     }
0137 
0138     // next we assume "ZeroSuppressed" (non-raw) => SiStripDigi
0139     else if (digiType == "Processed") {
0140       edm::Handle<edm::DetSetVector<SiStripDigi>> processedDigis;
0141       aEvent.getByLabel(digiProducer, digiLabel, processedDigis);
0142 
0143       // eval & fill histos from processed digis
0144       FillFromProcessedDigis(*processedDigis);
0145 
0146     }
0147 
0148     // otherwise we have a problem
0149     else {
0150       throw cms::Exception("LaserAlignmentT0ProducerDQM")
0151           << " ERROR ** Unknown DigiType: " << digiType << " specified in config." << std::endl;
0152     }
0153 
0154   }  // loop all input products
0155 }
0156 
0157 ///
0158 ///
0159 ///
0160 void LaserAlignmentT0ProducerDQM::FillFromRawDigis(const edm::DetSetVector<SiStripRawDigi> &aDetSetVector) {
0161   LASGlobalLoop moduleLoop;
0162   int det, ring, beam, disk, pos;
0163 
0164   // tec internal modules
0165   det = 0;
0166   ring = 0;
0167   beam = 0;
0168   disk = 0;
0169   do {
0170     bool isAboveThreshold = false;
0171     bool isExceedThreshold = false;
0172 
0173     // retrieve the raw id of that module
0174     const int detRawId = detectorId.GetTECEntry(det, ring, beam, disk);
0175 
0176     // search the digis for this raw id
0177     edm::DetSetVector<SiStripRawDigi>::const_iterator detSetIter = aDetSetVector.find(detRawId);
0178 
0179     // raw DetSets may not be missing
0180     if (detSetIter == aDetSetVector.end()) {
0181       throw cms::Exception("[LaserAlignmentT0ProducerDQM::FillFromRawDigis]")
0182           << " ** ERROR: No raw DetSet found for det: " << detRawId << "." << std::endl;
0183     }
0184 
0185     // access single modules' digis
0186     edm::DetSet<SiStripRawDigi>::const_iterator digiRangeIterator = detSetIter->data.begin();
0187 
0188     for (; digiRangeIterator != detSetIter->data.end(); ++digiRangeIterator) {
0189       const SiStripRawDigi &digi = *digiRangeIterator;
0190 
0191       // loop all digis and
0192       // look for at least one strip above the threshold (-> assume a signal)
0193       // look if no strip is above threshold (-> assume overdrive)
0194       if (digi.adc() > theLowerAdcThreshold)
0195         isAboveThreshold = true;
0196       if (digi.adc() > theUpperAdcThreshold)
0197         isExceedThreshold = true;
0198     }
0199 
0200     // if we have signal, fill the histos
0201     if (isAboveThreshold && !isExceedThreshold) {
0202       // determine the appropriate histogram & bin from the position variables
0203       if (det == 0) {  // TEC+
0204         if (ring == 0)
0205           nSignalsTECPlusR4->Fill(disk, beam);  // R4
0206         else
0207           nSignalsTECPlusR6->Fill(disk, beam);  // R6
0208       } else {                                  // TEC-
0209         if (ring == 0)
0210           nSignalsTECMinusR4->Fill(disk, beam);  // R4
0211         else
0212           nSignalsTECMinusR6->Fill(disk, beam);  // R6
0213       }
0214     }
0215 
0216   } while (moduleLoop.TECLoop(det, ring, beam, disk));
0217 
0218   // endcap modules (AT beams)
0219   det = 0;
0220   beam = 0;
0221   disk = 0;
0222   do {
0223     bool isAboveThreshold = false;
0224     bool isExceedThreshold = false;
0225 
0226     // retrieve the raw id of that module
0227     const int detRawId = detectorId.GetTEC2TECEntry(det, beam, disk);
0228 
0229     // search the digis for this raw id
0230     edm::DetSetVector<SiStripRawDigi>::const_iterator detSetIter = aDetSetVector.find(detRawId);
0231 
0232     // raw DetSets may not be missing
0233     if (detSetIter == aDetSetVector.end()) {
0234       throw cms::Exception("[LaserAlignmentT0ProducerDQM::FillFromRawDigis]")
0235           << " ** ERROR: No raw DetSet found for det: " << detRawId << "." << std::endl;
0236     }
0237 
0238     // access single modules' digis
0239     edm::DetSet<SiStripRawDigi>::const_iterator digiRangeIterator = detSetIter->data.begin();
0240 
0241     for (; digiRangeIterator != detSetIter->data.end(); ++digiRangeIterator) {
0242       const SiStripRawDigi &digi = *digiRangeIterator;
0243 
0244       // loop all digis and
0245       // look for at least one strip above the threshold (-> assume a signal)
0246       // look if no strip is above threshold (-> assume overdrive)
0247       if (digi.adc() > theLowerAdcThreshold)
0248         isAboveThreshold = true;
0249       if (digi.adc() > theUpperAdcThreshold)
0250         isExceedThreshold = true;
0251     }
0252 
0253     // if we have signal, fill the histos
0254     if (isAboveThreshold && !isExceedThreshold) {
0255       // there is only one histogram for all AT hits
0256       // but the bin scheme is a little complicated:
0257       // the TEC(AT) go in the first 5(-) and last 5(+) of 22 bins along x
0258 
0259       if (det == 1)
0260         nSignalsAT->Fill(4 - disk, beam);  // TEC-
0261       else
0262         nSignalsAT->Fill(17 + disk, beam);  // TEC+
0263     }
0264 
0265   } while (moduleLoop.TEC2TECLoop(det, beam, disk));
0266 
0267   // barrel modules (AT beams)
0268   det = 2;
0269   beam = 0;
0270   pos = 0;
0271   do {
0272     bool isAboveThreshold = false;
0273     bool isExceedThreshold = false;
0274 
0275     // retrieve the raw id of that module
0276     const int detRawId = detectorId.GetTIBTOBEntry(det, beam, pos);
0277 
0278     // search the digis for this raw id
0279     edm::DetSetVector<SiStripRawDigi>::const_iterator detSetIter = aDetSetVector.find(detRawId);
0280 
0281     // raw DetSets may not be missing
0282     if (detSetIter == aDetSetVector.end()) {
0283       throw cms::Exception("[LaserAlignmentT0ProducerDQM::FillFromRawDigis]")
0284           << " ** ERROR: No raw DetSet found for det: " << detRawId << "." << std::endl;
0285     }
0286 
0287     // access single modules' digis
0288     edm::DetSet<SiStripRawDigi>::const_iterator digiRangeIterator = detSetIter->data.begin();
0289 
0290     for (; digiRangeIterator != detSetIter->data.end(); ++digiRangeIterator) {
0291       const SiStripRawDigi &digi = *digiRangeIterator;
0292 
0293       // loop all digis and
0294       // look for at least one strip above the threshold (-> assume a signal)
0295       // look if no strip is above threshold (-> assume overdrive)
0296       if (digi.adc() > theLowerAdcThreshold)
0297         isAboveThreshold = true;
0298       if (digi.adc() > theUpperAdcThreshold)
0299         isExceedThreshold = true;
0300     }
0301 
0302     // if we have signal, fill the histos
0303     if (isAboveThreshold && !isExceedThreshold) {
0304       // there is only one histogram for all AT hits
0305       // but the bin scheme is a little complicated:
0306       // the TIB go into bins 6-11, TOB in 12-17
0307 
0308       if (det == 2)
0309         nSignalsAT->Fill(5 + (5 - pos), beam);  // TIB
0310       else
0311         nSignalsAT->Fill(11 + (5 - pos), beam);  // TOB
0312     }
0313 
0314   } while (moduleLoop.TIBTOBLoop(det, beam, pos));
0315 }
0316 
0317 ///
0318 ///
0319 ///
0320 void LaserAlignmentT0ProducerDQM::FillFromProcessedDigis(const edm::DetSetVector<SiStripDigi> &aDetSetVector) {
0321   LASGlobalLoop moduleLoop;
0322   int det, ring, beam, disk, pos;
0323 
0324   // tec internal modules
0325   det = 0;
0326   ring = 0;
0327   beam = 0;
0328   disk = 0;
0329   do {
0330     bool isAboveThreshold = false;
0331     bool isExceedThreshold = false;
0332 
0333     // retrieve the raw id of that module
0334     const int detRawId = detectorId.GetTECEntry(det, ring, beam, disk);
0335 
0336     // search the digis for this raw id
0337     edm::DetSetVector<SiStripDigi>::const_iterator detSetIter = aDetSetVector.find(detRawId);
0338 
0339     // processed DetSets may be missing (=empty), just skip
0340     if (detSetIter == aDetSetVector.end())
0341       continue;
0342 
0343     // access single modules' digis
0344     edm::DetSet<SiStripDigi>::const_iterator digiRangeIterator = detSetIter->data.begin();
0345 
0346     for (; digiRangeIterator != detSetIter->data.end(); ++digiRangeIterator) {
0347       const SiStripDigi &digi = *digiRangeIterator;
0348 
0349       // loop all digis and
0350       // look for at least one strip above the threshold (-> assume a signal)
0351       // look if no strip is above threshold (->assume overdrive)
0352       if (digi.adc() > theLowerAdcThreshold)
0353         isAboveThreshold = true;
0354       if (digi.adc() > theUpperAdcThreshold)
0355         isExceedThreshold = true;
0356     }
0357 
0358     // if we have signal, fill the histos
0359     if (isAboveThreshold && !isExceedThreshold) {
0360       // determine the appropriate histogram & bin from the position variables
0361       if (det == 0) {  // TEC+
0362         if (ring == 0)
0363           nSignalsTECPlusR4->Fill(disk, beam);  // R4
0364         else
0365           nSignalsTECPlusR6->Fill(disk, beam);  // R6
0366       } else {                                  // TEC-
0367         if (ring == 0)
0368           nSignalsTECMinusR4->Fill(disk, beam);  // R4
0369         else
0370           nSignalsTECMinusR6->Fill(disk, beam);  // R6
0371       }
0372     }
0373 
0374   } while (moduleLoop.TECLoop(det, ring, beam, disk));
0375 
0376   // endcap modules (AT beams)
0377   det = 0;
0378   beam = 0;
0379   disk = 0;
0380   do {
0381     bool isAboveThreshold = false;
0382     bool isExceedThreshold = false;
0383 
0384     // retrieve the raw id of that module
0385     const int detRawId = detectorId.GetTEC2TECEntry(det, beam, disk);
0386 
0387     // search the digis for this raw id
0388     edm::DetSetVector<SiStripDigi>::const_iterator detSetIter = aDetSetVector.find(detRawId);
0389 
0390     // processed DetSets may be missing (=empty), just skip
0391     if (detSetIter == aDetSetVector.end())
0392       continue;
0393 
0394     // access single modules' digis
0395     edm::DetSet<SiStripDigi>::const_iterator digiRangeIterator = detSetIter->data.begin();
0396 
0397     for (; digiRangeIterator != detSetIter->data.end(); ++digiRangeIterator) {
0398       const SiStripDigi &digi = *digiRangeIterator;
0399 
0400       // loop all digis and
0401       // look for at least one strip above the threshold (-> assume a signal)
0402       // look if no strip is above threshold (-> assume overdrive)
0403       if (digi.adc() > theLowerAdcThreshold)
0404         isAboveThreshold = true;
0405       if (digi.adc() > theUpperAdcThreshold)
0406         isExceedThreshold = true;
0407     }
0408 
0409     // if we have signal, fill the histos
0410     if (isAboveThreshold && !isExceedThreshold) {
0411       // there is only one histogram for all AT hits
0412       // but the bin scheme is a little complicated:
0413       // the TEC(AT) go in the first 5(-) and last 5(+) of 22 bins along x
0414 
0415       if (det == 1)
0416         nSignalsAT->Fill(4 - disk, beam);  // TEC-
0417       else
0418         nSignalsAT->Fill(17 + disk, beam);  // TEC+
0419     }
0420 
0421   } while (moduleLoop.TEC2TECLoop(det, beam, disk));
0422 
0423   // barrel modules (AT beams)
0424   det = 2;
0425   beam = 0;
0426   pos = 0;
0427   do {
0428     bool isAboveThreshold = false;
0429     bool isExceedThreshold = false;
0430 
0431     // retrieve the raw id of that module
0432     const int detRawId = detectorId.GetTIBTOBEntry(det, beam, pos);
0433 
0434     // search the digis for this raw id
0435     edm::DetSetVector<SiStripDigi>::const_iterator detSetIter = aDetSetVector.find(detRawId);
0436 
0437     // processed DetSets may be missing (=empty), just skip
0438     if (detSetIter == aDetSetVector.end())
0439       continue;
0440 
0441     // access single modules' digis
0442     edm::DetSet<SiStripDigi>::const_iterator digiRangeIterator = detSetIter->data.begin();
0443 
0444     for (; digiRangeIterator != detSetIter->data.end(); ++digiRangeIterator) {
0445       const SiStripDigi &digi = *digiRangeIterator;
0446 
0447       // loop all digis and
0448       // look for at least one strip above the threshold (-> assume a signal)
0449       // look if no strip is above threshold (-> assume overdrive)
0450       if (digi.adc() > theLowerAdcThreshold)
0451         isAboveThreshold = true;
0452       if (digi.adc() > theUpperAdcThreshold)
0453         isExceedThreshold = true;
0454     }
0455 
0456     // if we have signal, fill the histos
0457     if (isAboveThreshold && !isExceedThreshold) {
0458       // there is only one histogram for all AT hits
0459       // but the bin scheme is a little complicated:
0460       // the TIB go into bins 6-11, TOB in 12-17
0461 
0462       if (det == 2)
0463         nSignalsAT->Fill(5 + (5 - pos), beam);  // TIB
0464       else
0465         nSignalsAT->Fill(11 + (5 - pos), beam);  // TOB
0466     }
0467 
0468   } while (moduleLoop.TIBTOBLoop(det, beam, pos));
0469 }
0470 
0471 ///
0472 /// all the detector ids for the LAS modules hard-coded
0473 ///
0474 /// ugly code duplication but the deadline approaches..
0475 /// LATER must make this code somehow common to both LaserAlignment and
0476 /// LaserAlignmentT0ProducerDQM
0477 ///
0478 void LaserAlignmentT0ProducerDQM::FillDetectorId(void) {
0479   // these are the detids of the TEC modules hit
0480   // by the AT as well as the TEC beams
0481   tecDoubleHitDetId.push_back(470307208);
0482   tecDoubleHitDetId.push_back(470323592);
0483   tecDoubleHitDetId.push_back(470339976);
0484   tecDoubleHitDetId.push_back(470356360);
0485   tecDoubleHitDetId.push_back(470372744);
0486   tecDoubleHitDetId.push_back(470307976);
0487   tecDoubleHitDetId.push_back(470324360);
0488   tecDoubleHitDetId.push_back(470340744);
0489   tecDoubleHitDetId.push_back(470357128);
0490   tecDoubleHitDetId.push_back(470373512);
0491   tecDoubleHitDetId.push_back(470308488);
0492   tecDoubleHitDetId.push_back(470324872);
0493   tecDoubleHitDetId.push_back(470341256);
0494   tecDoubleHitDetId.push_back(470357640);
0495   tecDoubleHitDetId.push_back(470374024);
0496   tecDoubleHitDetId.push_back(470045064);
0497   tecDoubleHitDetId.push_back(470061448);
0498   tecDoubleHitDetId.push_back(470077832);
0499   tecDoubleHitDetId.push_back(470094216);
0500   tecDoubleHitDetId.push_back(470110600);
0501   tecDoubleHitDetId.push_back(470045832);
0502   tecDoubleHitDetId.push_back(470062216);
0503   tecDoubleHitDetId.push_back(470078600);
0504   tecDoubleHitDetId.push_back(470094984);
0505   tecDoubleHitDetId.push_back(470111368);
0506   tecDoubleHitDetId.push_back(470046344);
0507   tecDoubleHitDetId.push_back(470062728);
0508   tecDoubleHitDetId.push_back(470079112);
0509   tecDoubleHitDetId.push_back(470095496);
0510   tecDoubleHitDetId.push_back(470111880);
0511 
0512   // now all the modules (above included)
0513 
0514   // TEC+
0515   detectorId.SetTECEntry(0, 0, 0, 0, 470307208);
0516   detectorId.SetTECEntry(0, 0, 0, 1, 470323592);
0517   detectorId.SetTECEntry(0, 0, 0, 2, 470339976);
0518   detectorId.SetTECEntry(0, 0, 0, 3, 470356360);
0519   detectorId.SetTECEntry(0, 0, 0, 4, 470372744);
0520   detectorId.SetTECEntry(0, 0, 0, 5, 470389128);
0521   detectorId.SetTECEntry(0, 0, 0, 6, 470405512);
0522   detectorId.SetTECEntry(0, 0, 0, 7, 470421896);
0523   detectorId.SetTECEntry(0, 0, 0, 8, 470438280);
0524   detectorId.SetTECEntry(0, 0, 1, 0, 470307464);
0525   detectorId.SetTECEntry(0, 0, 1, 1, 470323848);
0526   detectorId.SetTECEntry(0, 0, 1, 2, 470340232);
0527   detectorId.SetTECEntry(0, 0, 1, 3, 470356616);
0528   detectorId.SetTECEntry(0, 0, 1, 4, 470373000);
0529   detectorId.SetTECEntry(0, 0, 1, 5, 470389384);
0530   detectorId.SetTECEntry(0, 0, 1, 6, 470405768);
0531   detectorId.SetTECEntry(0, 0, 1, 7, 470422152);
0532   detectorId.SetTECEntry(0, 0, 1, 8, 470438536);
0533   detectorId.SetTECEntry(0, 0, 2, 0, 470307720);
0534   detectorId.SetTECEntry(0, 0, 2, 1, 470324104);
0535   detectorId.SetTECEntry(0, 0, 2, 2, 470340488);
0536   detectorId.SetTECEntry(0, 0, 2, 3, 470356872);
0537   detectorId.SetTECEntry(0, 0, 2, 4, 470373256);
0538   detectorId.SetTECEntry(0, 0, 2, 5, 470389640);
0539   detectorId.SetTECEntry(0, 0, 2, 6, 470406024);
0540   detectorId.SetTECEntry(0, 0, 2, 7, 470422408);
0541   detectorId.SetTECEntry(0, 0, 2, 8, 470438792);
0542   detectorId.SetTECEntry(0, 0, 3, 0, 470307976);
0543   detectorId.SetTECEntry(0, 0, 3, 1, 470324360);
0544   detectorId.SetTECEntry(0, 0, 3, 2, 470340744);
0545   detectorId.SetTECEntry(0, 0, 3, 3, 470357128);
0546   detectorId.SetTECEntry(0, 0, 3, 4, 470373512);
0547   detectorId.SetTECEntry(0, 0, 3, 5, 470389896);
0548   detectorId.SetTECEntry(0, 0, 3, 6, 470406280);
0549   detectorId.SetTECEntry(0, 0, 3, 7, 470422664);
0550   detectorId.SetTECEntry(0, 0, 3, 8, 470439048);
0551   detectorId.SetTECEntry(0, 0, 4, 0, 470308232);
0552   detectorId.SetTECEntry(0, 0, 4, 1, 470324616);
0553   detectorId.SetTECEntry(0, 0, 4, 2, 470341000);
0554   detectorId.SetTECEntry(0, 0, 4, 3, 470357384);
0555   detectorId.SetTECEntry(0, 0, 4, 4, 470373768);
0556   detectorId.SetTECEntry(0, 0, 4, 5, 470390152);
0557   detectorId.SetTECEntry(0, 0, 4, 6, 470406536);
0558   detectorId.SetTECEntry(0, 0, 4, 7, 470422920);
0559   detectorId.SetTECEntry(0, 0, 4, 8, 470439304);
0560   detectorId.SetTECEntry(0, 0, 5, 0, 470308488);
0561   detectorId.SetTECEntry(0, 0, 5, 1, 470324872);
0562   detectorId.SetTECEntry(0, 0, 5, 2, 470341256);
0563   detectorId.SetTECEntry(0, 0, 5, 3, 470357640);
0564   detectorId.SetTECEntry(0, 0, 5, 4, 470374024);
0565   detectorId.SetTECEntry(0, 0, 5, 5, 470390408);
0566   detectorId.SetTECEntry(0, 0, 5, 6, 470406792);
0567   detectorId.SetTECEntry(0, 0, 5, 7, 470423176);
0568   detectorId.SetTECEntry(0, 0, 5, 8, 470439560);
0569   detectorId.SetTECEntry(0, 0, 6, 0, 470308744);
0570   detectorId.SetTECEntry(0, 0, 6, 1, 470325128);
0571   detectorId.SetTECEntry(0, 0, 6, 2, 470341512);
0572   detectorId.SetTECEntry(0, 0, 6, 3, 470357896);
0573   detectorId.SetTECEntry(0, 0, 6, 4, 470374280);
0574   detectorId.SetTECEntry(0, 0, 6, 5, 470390664);
0575   detectorId.SetTECEntry(0, 0, 6, 6, 470407048);
0576   detectorId.SetTECEntry(0, 0, 6, 7, 470423432);
0577   detectorId.SetTECEntry(0, 0, 6, 8, 470439816);
0578   detectorId.SetTECEntry(0, 0, 7, 0, 470309000);
0579   detectorId.SetTECEntry(0, 0, 7, 1, 470325384);
0580   detectorId.SetTECEntry(0, 0, 7, 2, 470341768);
0581   detectorId.SetTECEntry(0, 0, 7, 3, 470358152);
0582   detectorId.SetTECEntry(0, 0, 7, 4, 470374536);
0583   detectorId.SetTECEntry(0, 0, 7, 5, 470390920);
0584   detectorId.SetTECEntry(0, 0, 7, 6, 470407304);
0585   detectorId.SetTECEntry(0, 0, 7, 7, 470423688);
0586   detectorId.SetTECEntry(0, 0, 7, 8, 470440072);
0587   detectorId.SetTECEntry(0, 1, 0, 0, 470307272);
0588   detectorId.SetTECEntry(0, 1, 0, 1, 470323656);
0589   detectorId.SetTECEntry(0, 1, 0, 2, 470340040);
0590   detectorId.SetTECEntry(0, 1, 0, 3, 470356424);
0591   detectorId.SetTECEntry(0, 1, 0, 4, 470372808);
0592   detectorId.SetTECEntry(0, 1, 0, 5, 470389192);
0593   detectorId.SetTECEntry(0, 1, 0, 6, 470405576);
0594   detectorId.SetTECEntry(0, 1, 0, 7, 470421960);
0595   detectorId.SetTECEntry(0, 1, 0, 8, 470438344);
0596   detectorId.SetTECEntry(0, 1, 1, 0, 470307528);
0597   detectorId.SetTECEntry(0, 1, 1, 1, 470323912);
0598   detectorId.SetTECEntry(0, 1, 1, 2, 470340296);
0599   detectorId.SetTECEntry(0, 1, 1, 3, 470356680);
0600   detectorId.SetTECEntry(0, 1, 1, 4, 470373064);
0601   detectorId.SetTECEntry(0, 1, 1, 5, 470389448);
0602   detectorId.SetTECEntry(0, 1, 1, 6, 470405832);
0603   detectorId.SetTECEntry(0, 1, 1, 7, 470422216);
0604   detectorId.SetTECEntry(0, 1, 1, 8, 470438600);
0605   detectorId.SetTECEntry(0, 1, 2, 0, 470307784);
0606   detectorId.SetTECEntry(0, 1, 2, 1, 470324168);
0607   detectorId.SetTECEntry(0, 1, 2, 2, 470340552);
0608   detectorId.SetTECEntry(0, 1, 2, 3, 470356936);
0609   detectorId.SetTECEntry(0, 1, 2, 4, 470373320);
0610   detectorId.SetTECEntry(0, 1, 2, 5, 470389704);
0611   detectorId.SetTECEntry(0, 1, 2, 6, 470406088);
0612   detectorId.SetTECEntry(0, 1, 2, 7, 470422472);
0613   detectorId.SetTECEntry(0, 1, 2, 8, 470438856);
0614   detectorId.SetTECEntry(0, 1, 3, 0, 470308040);
0615   detectorId.SetTECEntry(0, 1, 3, 1, 470324424);
0616   detectorId.SetTECEntry(0, 1, 3, 2, 470340808);
0617   detectorId.SetTECEntry(0, 1, 3, 3, 470357192);
0618   detectorId.SetTECEntry(0, 1, 3, 4, 470373576);
0619   detectorId.SetTECEntry(0, 1, 3, 5, 470389960);
0620   detectorId.SetTECEntry(0, 1, 3, 6, 470406344);
0621   detectorId.SetTECEntry(0, 1, 3, 7, 470422728);
0622   detectorId.SetTECEntry(0, 1, 3, 8, 470439112);
0623   detectorId.SetTECEntry(0, 1, 4, 0, 470308296);
0624   detectorId.SetTECEntry(0, 1, 4, 1, 470324680);
0625   detectorId.SetTECEntry(0, 1, 4, 2, 470341064);
0626   detectorId.SetTECEntry(0, 1, 4, 3, 470357448);
0627   detectorId.SetTECEntry(0, 1, 4, 4, 470373832);
0628   detectorId.SetTECEntry(0, 1, 4, 5, 470390216);
0629   detectorId.SetTECEntry(0, 1, 4, 6, 470406600);
0630   detectorId.SetTECEntry(0, 1, 4, 7, 470422984);
0631   detectorId.SetTECEntry(0, 1, 4, 8, 470439368);
0632   detectorId.SetTECEntry(0, 1, 5, 0, 470308552);
0633   detectorId.SetTECEntry(0, 1, 5, 1, 470324936);
0634   detectorId.SetTECEntry(0, 1, 5, 2, 470341320);
0635   detectorId.SetTECEntry(0, 1, 5, 3, 470357704);
0636   detectorId.SetTECEntry(0, 1, 5, 4, 470374088);
0637   detectorId.SetTECEntry(0, 1, 5, 5, 470390472);
0638   detectorId.SetTECEntry(0, 1, 5, 6, 470406856);
0639   detectorId.SetTECEntry(0, 1, 5, 7, 470423240);
0640   detectorId.SetTECEntry(0, 1, 5, 8, 470439624);
0641   detectorId.SetTECEntry(0, 1, 6, 0, 470308808);
0642   detectorId.SetTECEntry(0, 1, 6, 1, 470325192);
0643   detectorId.SetTECEntry(0, 1, 6, 2, 470341576);
0644   detectorId.SetTECEntry(0, 1, 6, 3, 470357960);
0645   detectorId.SetTECEntry(0, 1, 6, 4, 470374344);
0646   detectorId.SetTECEntry(0, 1, 6, 5, 470390728);
0647   detectorId.SetTECEntry(0, 1, 6, 6, 470407112);
0648   detectorId.SetTECEntry(0, 1, 6, 7, 470423496);
0649   detectorId.SetTECEntry(0, 1, 6, 8, 470439880);
0650   detectorId.SetTECEntry(0, 1, 7, 0, 470309064);
0651   detectorId.SetTECEntry(0, 1, 7, 1, 470325448);
0652   detectorId.SetTECEntry(0, 1, 7, 2, 470341832);
0653   detectorId.SetTECEntry(0, 1, 7, 3, 470358216);
0654   detectorId.SetTECEntry(0, 1, 7, 4, 470374600);
0655   detectorId.SetTECEntry(0, 1, 7, 5, 470390984);
0656   detectorId.SetTECEntry(0, 1, 7, 6, 470407368);
0657   detectorId.SetTECEntry(0, 1, 7, 7, 470423752);
0658   detectorId.SetTECEntry(0, 1, 7, 8, 470440136);
0659 
0660   // TEC-
0661   detectorId.SetTECEntry(1, 0, 0, 0, 470045064);
0662   detectorId.SetTECEntry(1, 0, 0, 1, 470061448);
0663   detectorId.SetTECEntry(1, 0, 0, 2, 470077832);
0664   detectorId.SetTECEntry(1, 0, 0, 3, 470094216);
0665   detectorId.SetTECEntry(1, 0, 0, 4, 470110600);
0666   detectorId.SetTECEntry(1, 0, 0, 5, 470126984);
0667   detectorId.SetTECEntry(1, 0, 0, 6, 470143368);
0668   detectorId.SetTECEntry(1, 0, 0, 7, 470159752);
0669   detectorId.SetTECEntry(1, 0, 0, 8, 470176136);
0670   detectorId.SetTECEntry(1, 0, 1, 0, 470045320);
0671   detectorId.SetTECEntry(1, 0, 1, 1, 470061704);
0672   detectorId.SetTECEntry(1, 0, 1, 2, 470078088);
0673   detectorId.SetTECEntry(1, 0, 1, 3, 470094472);
0674   detectorId.SetTECEntry(1, 0, 1, 4, 470110856);
0675   detectorId.SetTECEntry(1, 0, 1, 5, 470127240);
0676   detectorId.SetTECEntry(1, 0, 1, 6, 470143624);
0677   detectorId.SetTECEntry(1, 0, 1, 7, 470160008);
0678   detectorId.SetTECEntry(1, 0, 1, 8, 470176392);
0679   detectorId.SetTECEntry(1, 0, 2, 0, 470045576);
0680   detectorId.SetTECEntry(1, 0, 2, 1, 470061960);
0681   detectorId.SetTECEntry(1, 0, 2, 2, 470078344);
0682   detectorId.SetTECEntry(1, 0, 2, 3, 470094728);
0683   detectorId.SetTECEntry(1, 0, 2, 4, 470111112);
0684   detectorId.SetTECEntry(1, 0, 2, 5, 470127496);
0685   detectorId.SetTECEntry(1, 0, 2, 6, 470143880);
0686   detectorId.SetTECEntry(1, 0, 2, 7, 470160264);
0687   detectorId.SetTECEntry(1, 0, 2, 8, 470176648);
0688   detectorId.SetTECEntry(1, 0, 3, 0, 470045832);
0689   detectorId.SetTECEntry(1, 0, 3, 1, 470062216);
0690   detectorId.SetTECEntry(1, 0, 3, 2, 470078600);
0691   detectorId.SetTECEntry(1, 0, 3, 3, 470094984);
0692   detectorId.SetTECEntry(1, 0, 3, 4, 470111368);
0693   detectorId.SetTECEntry(1, 0, 3, 5, 470127752);
0694   detectorId.SetTECEntry(1, 0, 3, 6, 470144136);
0695   detectorId.SetTECEntry(1, 0, 3, 7, 470160520);
0696   detectorId.SetTECEntry(1, 0, 3, 8, 470176904);
0697   detectorId.SetTECEntry(1, 0, 4, 0, 470046088);
0698   detectorId.SetTECEntry(1, 0, 4, 1, 470062472);
0699   detectorId.SetTECEntry(1, 0, 4, 2, 470078856);
0700   detectorId.SetTECEntry(1, 0, 4, 3, 470095240);
0701   detectorId.SetTECEntry(1, 0, 4, 4, 470111624);
0702   detectorId.SetTECEntry(1, 0, 4, 5, 470128008);
0703   detectorId.SetTECEntry(1, 0, 4, 6, 470144392);
0704   detectorId.SetTECEntry(1, 0, 4, 7, 470160776);
0705   detectorId.SetTECEntry(1, 0, 4, 8, 470177160);
0706   detectorId.SetTECEntry(1, 0, 5, 0, 470046344);
0707   detectorId.SetTECEntry(1, 0, 5, 1, 470062728);
0708   detectorId.SetTECEntry(1, 0, 5, 2, 470079112);
0709   detectorId.SetTECEntry(1, 0, 5, 3, 470095496);
0710   detectorId.SetTECEntry(1, 0, 5, 4, 470111880);
0711   detectorId.SetTECEntry(1, 0, 5, 5, 470128264);
0712   detectorId.SetTECEntry(1, 0, 5, 6, 470144648);
0713   detectorId.SetTECEntry(1, 0, 5, 7, 470161032);
0714   detectorId.SetTECEntry(1, 0, 5, 8, 470177416);
0715   detectorId.SetTECEntry(1, 0, 6, 0, 470046600);
0716   detectorId.SetTECEntry(1, 0, 6, 1, 470062984);
0717   detectorId.SetTECEntry(1, 0, 6, 2, 470079368);
0718   detectorId.SetTECEntry(1, 0, 6, 3, 470095752);
0719   detectorId.SetTECEntry(1, 0, 6, 4, 470112136);
0720   detectorId.SetTECEntry(1, 0, 6, 5, 470128520);
0721   detectorId.SetTECEntry(1, 0, 6, 6, 470144904);
0722   detectorId.SetTECEntry(1, 0, 6, 7, 470161288);
0723   detectorId.SetTECEntry(1, 0, 6, 8, 470177672);
0724   detectorId.SetTECEntry(1, 0, 7, 0, 470046856);
0725   detectorId.SetTECEntry(1, 0, 7, 1, 470063240);
0726   detectorId.SetTECEntry(1, 0, 7, 2, 470079624);
0727   detectorId.SetTECEntry(1, 0, 7, 3, 470096008);
0728   detectorId.SetTECEntry(1, 0, 7, 4, 470112392);
0729   detectorId.SetTECEntry(1, 0, 7, 5, 470128776);
0730   detectorId.SetTECEntry(1, 0, 7, 6, 470145160);
0731   detectorId.SetTECEntry(1, 0, 7, 7, 470161544);
0732   detectorId.SetTECEntry(1, 0, 7, 8, 470177928);
0733   detectorId.SetTECEntry(1, 1, 0, 0, 470045128);
0734   detectorId.SetTECEntry(1, 1, 0, 1, 470061512);
0735   detectorId.SetTECEntry(1, 1, 0, 2, 470077896);
0736   detectorId.SetTECEntry(1, 1, 0, 3, 470094280);
0737   detectorId.SetTECEntry(1, 1, 0, 4, 470110664);
0738   detectorId.SetTECEntry(1, 1, 0, 5, 470127048);
0739   detectorId.SetTECEntry(1, 1, 0, 6, 470143432);
0740   detectorId.SetTECEntry(1, 1, 0, 7, 470159816);
0741   detectorId.SetTECEntry(1, 1, 0, 8, 470176200);
0742   detectorId.SetTECEntry(1, 1, 1, 0, 470045384);
0743   detectorId.SetTECEntry(1, 1, 1, 1, 470061768);
0744   detectorId.SetTECEntry(1, 1, 1, 2, 470078152);
0745   detectorId.SetTECEntry(1, 1, 1, 3, 470094536);
0746   detectorId.SetTECEntry(1, 1, 1, 4, 470110920);
0747   detectorId.SetTECEntry(1, 1, 1, 5, 470127304);
0748   detectorId.SetTECEntry(1, 1, 1, 6, 470143688);
0749   detectorId.SetTECEntry(1, 1, 1, 7, 470160072);
0750   detectorId.SetTECEntry(1, 1, 1, 8, 470176456);
0751   detectorId.SetTECEntry(1, 1, 2, 0, 470045640);
0752   detectorId.SetTECEntry(1, 1, 2, 1, 470062024);
0753   detectorId.SetTECEntry(1, 1, 2, 2, 470078408);
0754   detectorId.SetTECEntry(1, 1, 2, 3, 470094792);
0755   detectorId.SetTECEntry(1, 1, 2, 4, 470111176);
0756   detectorId.SetTECEntry(1, 1, 2, 5, 470127560);
0757   detectorId.SetTECEntry(1, 1, 2, 6, 470143944);
0758   detectorId.SetTECEntry(1, 1, 2, 7, 470160328);
0759   detectorId.SetTECEntry(1, 1, 2, 8, 470176712);
0760   detectorId.SetTECEntry(1, 1, 3, 0, 470045896);
0761   detectorId.SetTECEntry(1, 1, 3, 1, 470062280);
0762   detectorId.SetTECEntry(1, 1, 3, 2, 470078664);
0763   detectorId.SetTECEntry(1, 1, 3, 3, 470095048);
0764   detectorId.SetTECEntry(1, 1, 3, 4, 470111432);
0765   detectorId.SetTECEntry(1, 1, 3, 5, 470127816);
0766   detectorId.SetTECEntry(1, 1, 3, 6, 470144200);
0767   detectorId.SetTECEntry(1, 1, 3, 7, 470160584);
0768   detectorId.SetTECEntry(1, 1, 3, 8, 470176968);
0769   detectorId.SetTECEntry(1, 1, 4, 0, 470046152);
0770   detectorId.SetTECEntry(1, 1, 4, 1, 470062536);
0771   detectorId.SetTECEntry(1, 1, 4, 2, 470078920);
0772   detectorId.SetTECEntry(1, 1, 4, 3, 470095304);
0773   detectorId.SetTECEntry(1, 1, 4, 4, 470111688);
0774   detectorId.SetTECEntry(1, 1, 4, 5, 470128072);
0775   detectorId.SetTECEntry(1, 1, 4, 6, 470144456);
0776   detectorId.SetTECEntry(1, 1, 4, 7, 470160840);
0777   detectorId.SetTECEntry(1, 1, 4, 8, 470177224);
0778   detectorId.SetTECEntry(1, 1, 5, 0, 470046408);
0779   detectorId.SetTECEntry(1, 1, 5, 1, 470062792);
0780   detectorId.SetTECEntry(1, 1, 5, 2, 470079176);
0781   detectorId.SetTECEntry(1, 1, 5, 3, 470095560);
0782   detectorId.SetTECEntry(1, 1, 5, 4, 470111944);
0783   detectorId.SetTECEntry(1, 1, 5, 5, 470128328);
0784   detectorId.SetTECEntry(1, 1, 5, 6, 470144712);
0785   detectorId.SetTECEntry(1, 1, 5, 7, 470161096);
0786   detectorId.SetTECEntry(1, 1, 5, 8, 470177480);
0787   detectorId.SetTECEntry(1, 1, 6, 0, 470046664);
0788   detectorId.SetTECEntry(1, 1, 6, 1, 470063048);
0789   detectorId.SetTECEntry(1, 1, 6, 2, 470079432);
0790   detectorId.SetTECEntry(1, 1, 6, 3, 470095816);
0791   detectorId.SetTECEntry(1, 1, 6, 4, 470112200);
0792   detectorId.SetTECEntry(1, 1, 6, 5, 470128584);
0793   detectorId.SetTECEntry(1, 1, 6, 6, 470144968);
0794   detectorId.SetTECEntry(1, 1, 6, 7, 470161352);
0795   detectorId.SetTECEntry(1, 1, 6, 8, 470177736);
0796   detectorId.SetTECEntry(1, 1, 7, 0, 470046920);
0797   detectorId.SetTECEntry(1, 1, 7, 1, 470063304);
0798   detectorId.SetTECEntry(1, 1, 7, 2, 470079688);
0799   detectorId.SetTECEntry(1, 1, 7, 3, 470096072);
0800   detectorId.SetTECEntry(1, 1, 7, 4, 470112456);
0801   detectorId.SetTECEntry(1, 1, 7, 5, 470128840);
0802   detectorId.SetTECEntry(1, 1, 7, 6, 470145224);
0803   detectorId.SetTECEntry(1, 1, 7, 7, 470161608);
0804   detectorId.SetTECEntry(1, 1, 7, 8, 470177992);
0805 
0806   // TIB
0807   detectorId.SetTIBTOBEntry(2, 0, 0, 369174604);
0808   detectorId.SetTIBTOBEntry(2, 0, 1, 369174600);
0809   detectorId.SetTIBTOBEntry(2, 0, 2, 369174596);
0810   detectorId.SetTIBTOBEntry(2, 0, 3, 369170500);
0811   detectorId.SetTIBTOBEntry(2, 0, 4, 369170504);
0812   detectorId.SetTIBTOBEntry(2, 0, 5, 369170508);
0813   detectorId.SetTIBTOBEntry(2, 1, 0, 369174732);
0814   detectorId.SetTIBTOBEntry(2, 1, 1, 369174728);
0815   detectorId.SetTIBTOBEntry(2, 1, 2, 369174724);
0816   detectorId.SetTIBTOBEntry(2, 1, 3, 369170628);
0817   detectorId.SetTIBTOBEntry(2, 1, 4, 369170632);
0818   detectorId.SetTIBTOBEntry(2, 1, 5, 369170636);
0819   detectorId.SetTIBTOBEntry(2, 2, 0, 369174812);
0820   detectorId.SetTIBTOBEntry(2, 2, 1, 369174808);
0821   detectorId.SetTIBTOBEntry(2, 2, 2, 369174804);
0822   detectorId.SetTIBTOBEntry(2, 2, 3, 369170708);
0823   detectorId.SetTIBTOBEntry(2, 2, 4, 369170712);
0824   detectorId.SetTIBTOBEntry(2, 2, 5, 369170716);
0825   detectorId.SetTIBTOBEntry(2, 3, 0, 369174940);
0826   detectorId.SetTIBTOBEntry(2, 3, 1, 369174936);
0827   detectorId.SetTIBTOBEntry(2, 3, 2, 369174932);
0828   detectorId.SetTIBTOBEntry(2, 3, 3, 369170836);
0829   detectorId.SetTIBTOBEntry(2, 3, 4, 369170840);
0830   detectorId.SetTIBTOBEntry(2, 3, 5, 369170844);
0831   detectorId.SetTIBTOBEntry(2, 4, 0, 369175068);
0832   detectorId.SetTIBTOBEntry(2, 4, 1, 369175064);
0833   detectorId.SetTIBTOBEntry(2, 4, 2, 369175060);
0834   detectorId.SetTIBTOBEntry(2, 4, 3, 369170964);
0835   detectorId.SetTIBTOBEntry(2, 4, 4, 369170968);
0836   detectorId.SetTIBTOBEntry(2, 4, 5, 369170972);
0837   detectorId.SetTIBTOBEntry(2, 5, 0, 369175164);
0838   detectorId.SetTIBTOBEntry(2, 5, 1, 369175160);
0839   detectorId.SetTIBTOBEntry(2, 5, 2, 369175156);
0840   detectorId.SetTIBTOBEntry(2, 5, 3, 369171060);
0841   detectorId.SetTIBTOBEntry(2, 5, 4, 369171064);
0842   detectorId.SetTIBTOBEntry(2, 5, 5, 369171068);
0843   detectorId.SetTIBTOBEntry(2, 6, 0, 369175292);
0844   detectorId.SetTIBTOBEntry(2, 6, 1, 369175288);
0845   detectorId.SetTIBTOBEntry(2, 6, 2, 369175284);
0846   detectorId.SetTIBTOBEntry(2, 6, 3, 369171188);
0847   detectorId.SetTIBTOBEntry(2, 6, 4, 369171192);
0848   detectorId.SetTIBTOBEntry(2, 6, 5, 369171196);
0849   detectorId.SetTIBTOBEntry(2, 7, 0, 369175372);
0850   detectorId.SetTIBTOBEntry(2, 7, 1, 369175368);
0851   detectorId.SetTIBTOBEntry(2, 7, 2, 369175364);
0852   detectorId.SetTIBTOBEntry(2, 7, 3, 369171268);
0853   detectorId.SetTIBTOBEntry(2, 7, 4, 369171272);
0854   detectorId.SetTIBTOBEntry(2, 7, 5, 369171276);
0855 
0856   // TOB
0857   detectorId.SetTIBTOBEntry(3, 0, 0, 436232314);
0858   detectorId.SetTIBTOBEntry(3, 0, 1, 436232306);
0859   detectorId.SetTIBTOBEntry(3, 0, 2, 436232298);
0860   detectorId.SetTIBTOBEntry(3, 0, 3, 436228198);
0861   detectorId.SetTIBTOBEntry(3, 0, 4, 436228206);
0862   detectorId.SetTIBTOBEntry(3, 0, 5, 436228214);
0863   detectorId.SetTIBTOBEntry(3, 1, 0, 436232506);
0864   detectorId.SetTIBTOBEntry(3, 1, 1, 436232498);
0865   detectorId.SetTIBTOBEntry(3, 1, 2, 436232490);
0866   detectorId.SetTIBTOBEntry(3, 1, 3, 436228390);
0867   detectorId.SetTIBTOBEntry(3, 1, 4, 436228398);
0868   detectorId.SetTIBTOBEntry(3, 1, 5, 436228406);
0869   detectorId.SetTIBTOBEntry(3, 2, 0, 436232634);
0870   detectorId.SetTIBTOBEntry(3, 2, 1, 436232626);
0871   detectorId.SetTIBTOBEntry(3, 2, 2, 436232618);
0872   detectorId.SetTIBTOBEntry(3, 2, 3, 436228518);
0873   detectorId.SetTIBTOBEntry(3, 2, 4, 436228526);
0874   detectorId.SetTIBTOBEntry(3, 2, 5, 436228534);
0875   detectorId.SetTIBTOBEntry(3, 3, 0, 436232826);
0876   detectorId.SetTIBTOBEntry(3, 3, 1, 436232818);
0877   detectorId.SetTIBTOBEntry(3, 3, 2, 436232810);
0878   detectorId.SetTIBTOBEntry(3, 3, 3, 436228710);
0879   detectorId.SetTIBTOBEntry(3, 3, 4, 436228718);
0880   detectorId.SetTIBTOBEntry(3, 3, 5, 436228726);
0881   detectorId.SetTIBTOBEntry(3, 4, 0, 436233018);
0882   detectorId.SetTIBTOBEntry(3, 4, 1, 436233010);
0883   detectorId.SetTIBTOBEntry(3, 4, 2, 436233002);
0884   detectorId.SetTIBTOBEntry(3, 4, 3, 436228902);
0885   detectorId.SetTIBTOBEntry(3, 4, 4, 436228910);
0886   detectorId.SetTIBTOBEntry(3, 4, 5, 436228918);
0887   detectorId.SetTIBTOBEntry(3, 5, 0, 436233146);
0888   detectorId.SetTIBTOBEntry(3, 5, 1, 436233138);
0889   detectorId.SetTIBTOBEntry(3, 5, 2, 436233130);
0890   detectorId.SetTIBTOBEntry(3, 5, 3, 436229030);
0891   detectorId.SetTIBTOBEntry(3, 5, 4, 436229038);
0892   detectorId.SetTIBTOBEntry(3, 5, 5, 436229046);
0893   detectorId.SetTIBTOBEntry(3, 6, 0, 436233338);
0894   detectorId.SetTIBTOBEntry(3, 6, 1, 436233330);
0895   detectorId.SetTIBTOBEntry(3, 6, 2, 436233322);
0896   detectorId.SetTIBTOBEntry(3, 6, 3, 436229222);
0897   detectorId.SetTIBTOBEntry(3, 6, 4, 436229230);
0898   detectorId.SetTIBTOBEntry(3, 6, 5, 436229238);
0899   detectorId.SetTIBTOBEntry(3, 7, 0, 436233466);
0900   detectorId.SetTIBTOBEntry(3, 7, 1, 436233458);
0901   detectorId.SetTIBTOBEntry(3, 7, 2, 436233450);
0902   detectorId.SetTIBTOBEntry(3, 7, 3, 436229350);
0903   detectorId.SetTIBTOBEntry(3, 7, 4, 436229358);
0904   detectorId.SetTIBTOBEntry(3, 7, 5, 436229366);
0905 
0906   // TEC+ AT
0907   detectorId.SetTEC2TECEntry(0, 0, 0, 470307208);
0908   detectorId.SetTEC2TECEntry(0, 0, 1, 470323592);
0909   detectorId.SetTEC2TECEntry(0, 0, 2, 470339976);
0910   detectorId.SetTEC2TECEntry(0, 0, 3, 470356360);
0911   detectorId.SetTEC2TECEntry(0, 0, 4, 470372744);
0912   detectorId.SetTEC2TECEntry(0, 1, 0, 470307468);
0913   detectorId.SetTEC2TECEntry(0, 1, 1, 470323852);
0914   detectorId.SetTEC2TECEntry(0, 1, 2, 470340236);
0915   detectorId.SetTEC2TECEntry(0, 1, 3, 470356620);
0916   detectorId.SetTEC2TECEntry(0, 1, 4, 470373004);
0917   detectorId.SetTEC2TECEntry(0, 2, 0, 470307716);
0918   detectorId.SetTEC2TECEntry(0, 2, 1, 470324100);
0919   detectorId.SetTEC2TECEntry(0, 2, 2, 470340484);
0920   detectorId.SetTEC2TECEntry(0, 2, 3, 470356868);
0921   detectorId.SetTEC2TECEntry(0, 2, 4, 470373252);
0922   detectorId.SetTEC2TECEntry(0, 3, 0, 470307976);
0923   detectorId.SetTEC2TECEntry(0, 3, 1, 470324360);
0924   detectorId.SetTEC2TECEntry(0, 3, 2, 470340744);
0925   detectorId.SetTEC2TECEntry(0, 3, 3, 470357128);
0926   detectorId.SetTEC2TECEntry(0, 3, 4, 470373512);
0927   detectorId.SetTEC2TECEntry(0, 4, 0, 470308236);
0928   detectorId.SetTEC2TECEntry(0, 4, 1, 470324620);
0929   detectorId.SetTEC2TECEntry(0, 4, 2, 470341004);
0930   detectorId.SetTEC2TECEntry(0, 4, 3, 470357388);
0931   detectorId.SetTEC2TECEntry(0, 4, 4, 470373772);
0932   detectorId.SetTEC2TECEntry(0, 5, 0, 470308488);
0933   detectorId.SetTEC2TECEntry(0, 5, 1, 470324872);
0934   detectorId.SetTEC2TECEntry(0, 5, 2, 470341256);
0935   detectorId.SetTEC2TECEntry(0, 5, 3, 470357640);
0936   detectorId.SetTEC2TECEntry(0, 5, 4, 470374024);
0937   detectorId.SetTEC2TECEntry(0, 6, 0, 470308748);
0938   detectorId.SetTEC2TECEntry(0, 6, 1, 470325132);
0939   detectorId.SetTEC2TECEntry(0, 6, 2, 470341516);
0940   detectorId.SetTEC2TECEntry(0, 6, 3, 470357900);
0941   detectorId.SetTEC2TECEntry(0, 6, 4, 470374284);
0942   detectorId.SetTEC2TECEntry(0, 7, 0, 470308996);
0943   detectorId.SetTEC2TECEntry(0, 7, 1, 470325380);
0944   detectorId.SetTEC2TECEntry(0, 7, 2, 470341764);
0945   detectorId.SetTEC2TECEntry(0, 7, 3, 470358148);
0946   detectorId.SetTEC2TECEntry(0, 7, 4, 470374532);
0947 
0948   // TEC- AT
0949   detectorId.SetTEC2TECEntry(1, 0, 0, 470045064);
0950   detectorId.SetTEC2TECEntry(1, 0, 1, 470061448);
0951   detectorId.SetTEC2TECEntry(1, 0, 2, 470077832);
0952   detectorId.SetTEC2TECEntry(1, 0, 3, 470094216);
0953   detectorId.SetTEC2TECEntry(1, 0, 4, 470110600);
0954   detectorId.SetTEC2TECEntry(1, 1, 0, 470045316);
0955   detectorId.SetTEC2TECEntry(1, 1, 1, 470061700);
0956   detectorId.SetTEC2TECEntry(1, 1, 2, 470078084);
0957   detectorId.SetTEC2TECEntry(1, 1, 3, 470094468);
0958   detectorId.SetTEC2TECEntry(1, 1, 4, 470110852);
0959   detectorId.SetTEC2TECEntry(1, 2, 0, 470045580);
0960   detectorId.SetTEC2TECEntry(1, 2, 1, 470061964);
0961   detectorId.SetTEC2TECEntry(1, 2, 2, 470078348);
0962   detectorId.SetTEC2TECEntry(1, 2, 3, 470094732);
0963   detectorId.SetTEC2TECEntry(1, 2, 4, 470111116);
0964   detectorId.SetTEC2TECEntry(1, 3, 0, 470045832);
0965   detectorId.SetTEC2TECEntry(1, 3, 1, 470062216);
0966   detectorId.SetTEC2TECEntry(1, 3, 2, 470078600);
0967   detectorId.SetTEC2TECEntry(1, 3, 3, 470094984);
0968   detectorId.SetTEC2TECEntry(1, 3, 4, 470111368);
0969   detectorId.SetTEC2TECEntry(1, 4, 0, 470046084);
0970   detectorId.SetTEC2TECEntry(1, 4, 1, 470062468);
0971   detectorId.SetTEC2TECEntry(1, 4, 2, 470078852);
0972   detectorId.SetTEC2TECEntry(1, 4, 3, 470095236);
0973   detectorId.SetTEC2TECEntry(1, 4, 4, 470111620);
0974   detectorId.SetTEC2TECEntry(1, 5, 0, 470046344);
0975   detectorId.SetTEC2TECEntry(1, 5, 1, 470062728);
0976   detectorId.SetTEC2TECEntry(1, 5, 2, 470079112);
0977   detectorId.SetTEC2TECEntry(1, 5, 3, 470095496);
0978   detectorId.SetTEC2TECEntry(1, 5, 4, 470111880);
0979   detectorId.SetTEC2TECEntry(1, 6, 0, 470046596);
0980   detectorId.SetTEC2TECEntry(1, 6, 1, 470062980);
0981   detectorId.SetTEC2TECEntry(1, 6, 2, 470079364);
0982   detectorId.SetTEC2TECEntry(1, 6, 3, 470095748);
0983   detectorId.SetTEC2TECEntry(1, 6, 4, 470112132);
0984   detectorId.SetTEC2TECEntry(1, 7, 0, 470046860);
0985   detectorId.SetTEC2TECEntry(1, 7, 1, 470063244);
0986   detectorId.SetTEC2TECEntry(1, 7, 2, 470079628);
0987   detectorId.SetTEC2TECEntry(1, 7, 3, 470096012);
0988   detectorId.SetTEC2TECEntry(1, 7, 4, 470112396);
0989 }
0990 
0991 // define this as a plug-in
0992 DEFINE_FWK_MODULE(LaserAlignmentT0ProducerDQM);