CMS 3D CMS Logo

/data/refman/pasoursint/CMSSW_5_3_9_patch3/src/DQMOffline/Alignment/src/LaserAlignmentT0ProducerDQM.cc

Go to the documentation of this file.
00001 
00002 #include "DQMOffline/Alignment/interface/LaserAlignmentT0ProducerDQM.h"
00003 
00004 
00005 
00006 
00007 
00011 LaserAlignmentT0ProducerDQM::LaserAlignmentT0ProducerDQM( const edm::ParameterSet& aConfiguration ) {
00012   
00013   theDqmStore = edm::Service<DQMStore>().operator->();
00014   theConfiguration = aConfiguration;
00015   FillDetectorId();
00016 
00017 }
00018 
00019 
00020 
00021 
00022 
00026 LaserAlignmentT0ProducerDQM::~LaserAlignmentT0ProducerDQM() {
00027 }
00028 
00029 
00030 
00031 
00032 
00036 void LaserAlignmentT0ProducerDQM::beginJob() {
00037 
00038   // upper and lower treshold for a profile considered showing a signal
00039   theLowerAdcThreshold = theConfiguration.getParameter<unsigned int>( "LowerAdcThreshold" );
00040   theUpperAdcThreshold = theConfiguration.getParameter<unsigned int>( "UpperAdcThreshold" );
00041 
00042   // the list of input digi products from the cfg
00043   theDigiProducerList = theConfiguration.getParameter<std::vector<edm::ParameterSet> >( "DigiProducerList" );
00044 
00045   std::string folderName = theConfiguration.getParameter<std::string>( "FolderName" ); 
00046   theDqmStore->setCurrentFolder( folderName );
00047 
00048   std::string nameAndTitle;
00049   std::stringstream labelBuilder;
00050 
00051   const short nBeams = 8;
00052   const short nDisks = 9;
00053 
00054   // for the alignment tubes modules:
00055   // x: 16 modules (5*TEC-, 6*TIB, 6*TOB, 5*TEC+), all from -z to z
00056   // y: 8 beams
00057   nameAndTitle = "NumberOfSignals_AlignmentTubes";
00058   nSignalsAT   = theDqmStore->book2D( nameAndTitle, nameAndTitle, 22, 0, 22, nBeams, 0, nBeams );
00059   //  nSignalsAT->setAxisTitle( "z-pos", 1 );
00060   //  nSignalsAT->setAxisTitle( "beam", 2 );
00061 
00062   // create bin labels for the AT histograms (subdets mixed here)
00063   for( unsigned int i = 1; i <= 5; ++i ) {
00064     labelBuilder.clear(); labelBuilder.str( "" );
00065     labelBuilder << "TEC- D" << 5-i; // TEC-
00066     nSignalsAT->setBinLabel( i, labelBuilder.str(), 1 );
00067     labelBuilder.clear(); labelBuilder.str( "" );
00068     labelBuilder << "TEC+ D" << i-1; // TEC+
00069     nSignalsAT->setBinLabel( 17+i, labelBuilder.str(), 1 );
00070   }
00071   for( unsigned int i = 0; i < 6; ++i ) {
00072     labelBuilder.clear(); labelBuilder.str( "" );
00073     labelBuilder << "TIB" << i; // TIB
00074     nSignalsAT->setBinLabel( 6+i, labelBuilder.str(), 1 );
00075     labelBuilder.clear(); labelBuilder.str( "" );
00076     labelBuilder << "TOB" << i; // TOB
00077     nSignalsAT->setBinLabel( 12+i, labelBuilder.str(), 1 );
00078   }
00079 
00080 
00081   // for the tec internal modules:
00082   // x: disk1...disk9 (from inner to outer, so z changes direction!)
00083   // y: 8 beams
00084   nameAndTitle       = "NumberOfSignals_TEC+R4";
00085   nSignalsTECPlusR4  = theDqmStore->book2D( nameAndTitle, nameAndTitle, nDisks, 0, nDisks, nBeams, 0, nBeams );
00086   //  nSignalsTECPlusR4->setAxisTitle( "disk", 1 );
00087   //  nSignalsTECPlusR4->setAxisTitle( "beam", 2 );
00088 
00089   nameAndTitle       = "NumberOfSignals_TEC+R6";
00090   nSignalsTECPlusR6  = theDqmStore->book2D( nameAndTitle, nameAndTitle, nDisks, 0, nDisks, nBeams, 0, nBeams );
00091   //  nSignalsTECPlusR6->setAxisTitle( "disk", 1 );
00092   //  nSignalsTECPlusR6->setAxisTitle( "beam", 2 );
00093 
00094   nameAndTitle       = "NumberOfSignals_TEC-R4";
00095   nSignalsTECMinusR4 = theDqmStore->book2D( nameAndTitle, nameAndTitle, nDisks, 0, nDisks, nBeams, 0, nBeams );
00096   //  nSignalsTECMinusR4->setAxisTitle( "disk", 1 );
00097   //  nSignalsTECMinusR4->setAxisTitle( "beam", 2 );
00098 
00099   nameAndTitle       = "NumberOfSignals_TEC-R6";
00100   nSignalsTECMinusR6 = theDqmStore->book2D( nameAndTitle, nameAndTitle, nDisks, 0, nDisks, nBeams, 0, nBeams );
00101   //  nSignalsTECMinusR6->setAxisTitle( "disk", 1 );
00102   //  nSignalsTECMinusR6->setAxisTitle( "beam", 2 );
00103 
00104 
00105 
00106   // disk labels common for all TEC internal histograms
00107   for( unsigned int disk = 0; disk < 9; ++disk ) {
00108     labelBuilder.clear(); labelBuilder.str( "" );
00109     labelBuilder << "DISK" << disk;
00110     nSignalsTECPlusR4->setBinLabel( disk+1, labelBuilder.str(), 1 );
00111     nSignalsTECPlusR6->setBinLabel( disk+1, labelBuilder.str(), 1 );
00112     nSignalsTECMinusR4->setBinLabel( disk+1, labelBuilder.str(), 1 );
00113     nSignalsTECMinusR6->setBinLabel( disk+1, labelBuilder.str(), 1 );
00114   }
00115 
00116 
00117   // beam labels common for all histograms
00118   for( unsigned int beam = 0; beam < 8; ++beam ) {
00119     labelBuilder.clear(); labelBuilder.str( "" );
00120     labelBuilder << "BEAM" << beam;
00121     nSignalsAT->setBinLabel( beam+1, labelBuilder.str(), 2 );
00122     nSignalsTECPlusR4->setBinLabel( beam+1, labelBuilder.str(), 2 );
00123     nSignalsTECPlusR6->setBinLabel( beam+1, labelBuilder.str(), 2 );
00124     nSignalsTECMinusR4->setBinLabel( beam+1, labelBuilder.str(), 2 );
00125     nSignalsTECMinusR6->setBinLabel( beam+1, labelBuilder.str(), 2 );
00126   }
00127 
00128 }
00129 
00130 
00131 
00132 
00133 
00137 void LaserAlignmentT0ProducerDQM::analyze( const edm::Event& aEvent, const edm::EventSetup& aSetup ) {
00138 
00139 
00140   // loop all input products
00141   for ( std::vector<edm::ParameterSet>::iterator aDigiProducer = theDigiProducerList.begin(); aDigiProducer != theDigiProducerList.end(); ++aDigiProducer ) {
00142     const std::string digiProducer = aDigiProducer->getParameter<std::string>( "DigiProducer" );
00143     const std::string digiLabel = aDigiProducer->getParameter<std::string>( "DigiLabel" );
00144     const std::string digiType = aDigiProducer->getParameter<std::string>( "DigiType" );
00145 
00146     // now a distinction of cases: raw or processed digis?
00147 
00148     // first we go for raw digis => SiStripRawDigi
00149     if( digiType == "Raw" ) {
00150 
00151       // retrieve the SiStripRawDigis collection
00152       edm::Handle< edm::DetSetVector<SiStripRawDigi> > rawDigis;
00153       aEvent.getByLabel( digiProducer, digiLabel, rawDigis );
00154       
00155       // eval & fill histos from raw digis
00156       FillFromRawDigis( *rawDigis );
00157 
00158     }
00159 
00160     
00161     // next we assume "ZeroSuppressed" (non-raw) => SiStripDigi
00162     else if( digiType == "Processed" ) {
00163       
00164       edm::Handle< edm::DetSetVector<SiStripDigi> > processedDigis;
00165       aEvent.getByLabel( digiProducer, digiLabel, processedDigis );
00166       
00167       // eval & fill histos from processed digis
00168       FillFromProcessedDigis( *processedDigis );
00169 
00170     }
00171 
00172 
00173 
00174     // otherwise we have a problem
00175     else {
00176       throw cms::Exception( "LaserAlignmentT0ProducerDQM" ) << " ERROR ** Unknown DigiType: " << digiType << " specified in config." << std::endl;
00177     }
00178     
00179 
00180   } // loop all input products
00181 
00182 
00183 
00184 }
00185 
00186 
00187 
00188 
00189 
00193 void LaserAlignmentT0ProducerDQM::endJob() {
00194 
00195   bool writeToPlainROOTFile = theConfiguration.getParameter<bool>( "OutputInPlainROOT" );
00196   
00197   if( writeToPlainROOTFile ) {
00198     std::string outputFileName = theConfiguration.getParameter<std::string>( "PlainOutputFileName" );
00199     theDqmStore->showDirStructure();
00200     theDqmStore->save( outputFileName );
00201   }
00202 
00203 }
00204 
00205 
00206 
00207 
00208 
00212 void LaserAlignmentT0ProducerDQM::FillFromRawDigis( const edm::DetSetVector<SiStripRawDigi>& aDetSetVector ) {
00213 
00214   LASGlobalLoop moduleLoop;
00215   int det, ring, beam, disk, pos;
00216 
00217 
00218 
00219 
00220   // tec internal modules
00221   det = 0; ring = 0; beam = 0; disk = 0;
00222   do {
00223 
00224     bool isAboveThreshold = false;
00225     bool isExceedThreshold = false;
00226 
00227     // retrieve the raw id of that module
00228     const int detRawId = detectorId.GetTECEntry( det, ring, beam, disk );
00229 
00230     // search the digis for this raw id
00231     edm::DetSetVector<SiStripRawDigi>::const_iterator detSetIter = aDetSetVector.find( detRawId );
00232 
00233     // raw DetSets may not be missing
00234     if( detSetIter == aDetSetVector.end() ) {
00235       throw cms::Exception( "[LaserAlignmentT0ProducerDQM::FillFromRawDigis]" ) << " ** ERROR: No raw DetSet found for det: " << detRawId << "." << std::endl;
00236     }
00237 
00238     // access single modules' digis
00239     edm::DetSet<SiStripRawDigi>::const_iterator digiRangeIterator = detSetIter->data.begin();
00240 
00241     for( ; digiRangeIterator != detSetIter->data.end(); ++digiRangeIterator ) {
00242       const SiStripRawDigi& digi = *digiRangeIterator;
00243 
00244       // loop all digis and 
00245       // look for at least one strip above the threshold (-> assume a signal)
00246       // look if no strip is above threshold (-> assume overdrive)
00247       if( digi.adc() > theLowerAdcThreshold  ) isAboveThreshold = true;
00248       if( digi.adc() > theUpperAdcThreshold  ) isExceedThreshold = true;
00249 
00250     }
00251 
00252     // if we have signal, fill the histos
00253     if( isAboveThreshold && !isExceedThreshold ) {
00254       
00255       // determine the appropriate histogram & bin from the position variables
00256       if( det == 0 ) { // TEC+
00257         if( ring == 0 ) nSignalsTECPlusR4->Fill( disk, beam ); // R4
00258         else nSignalsTECPlusR6->Fill( disk, beam ); // R6
00259       }
00260       else { // TEC-
00261         if( ring == 0 ) nSignalsTECMinusR4->Fill( disk, beam ); // R4
00262         else nSignalsTECMinusR6->Fill( disk, beam ); // R6
00263       }
00264     
00265     }
00266 
00267 
00268   } while( moduleLoop.TECLoop( det, ring, beam, disk ) );
00269 
00270 
00271 
00272 
00273   // endcap modules (AT beams)
00274   det = 0; beam = 0; disk = 0;
00275   do {
00276 
00277     bool isAboveThreshold = false;
00278     bool isExceedThreshold = false;
00279 
00280     // retrieve the raw id of that module
00281     const int detRawId = detectorId.GetTEC2TECEntry( det, beam, disk );
00282 
00283     // search the digis for this raw id
00284     edm::DetSetVector<SiStripRawDigi>::const_iterator detSetIter = aDetSetVector.find( detRawId );
00285 
00286     // raw DetSets may not be missing
00287     if( detSetIter == aDetSetVector.end() ) {
00288       throw cms::Exception( "[LaserAlignmentT0ProducerDQM::FillFromRawDigis]" ) << " ** ERROR: No raw DetSet found for det: " << detRawId << "." << std::endl;
00289     }
00290 
00291     // access single modules' digis
00292     edm::DetSet<SiStripRawDigi>::const_iterator digiRangeIterator = detSetIter->data.begin();
00293 
00294     for( ; digiRangeIterator != detSetIter->data.end(); ++digiRangeIterator ) {
00295       const SiStripRawDigi& digi = *digiRangeIterator;
00296 
00297       // loop all digis and 
00298       // look for at least one strip above the threshold (-> assume a signal)
00299       // look if no strip is above threshold (-> assume overdrive)
00300       if( digi.adc() > theLowerAdcThreshold  ) isAboveThreshold = true;
00301       if( digi.adc() > theUpperAdcThreshold  ) isExceedThreshold = true;
00302 
00303     }
00304 
00305     // if we have signal, fill the histos
00306     if( isAboveThreshold && !isExceedThreshold ) {
00307 
00308       // there is only one histogram for all AT hits
00309       // but the bin scheme is a little complicated:
00310       // the TEC(AT) go in the first 5(-) and last 5(+) of 22 bins along x
00311 
00312       if( det == 1 ) nSignalsAT->Fill( 4 - disk, beam ); // TEC-
00313       else nSignalsAT->Fill( 17 + disk, beam ); // TEC+
00314     
00315     }
00316 
00317 
00318   } while( moduleLoop.TEC2TECLoop( det, beam, disk ) );
00319 
00320 
00321 
00322   // barrel modules (AT beams)
00323   det = 2; beam = 0; pos = 0;
00324   do {
00325 
00326     bool isAboveThreshold = false;
00327     bool isExceedThreshold = false;
00328 
00329     // retrieve the raw id of that module
00330     const int detRawId = detectorId.GetTIBTOBEntry( det, beam, pos );
00331 
00332     // search the digis for this raw id
00333     edm::DetSetVector<SiStripRawDigi>::const_iterator detSetIter = aDetSetVector.find( detRawId );
00334 
00335     // raw DetSets may not be missing
00336     if( detSetIter == aDetSetVector.end() ) {
00337       throw cms::Exception( "[LaserAlignmentT0ProducerDQM::FillFromRawDigis]" ) << " ** ERROR: No raw DetSet found for det: " << detRawId << "." << std::endl;
00338     }
00339 
00340     // access single modules' digis
00341     edm::DetSet<SiStripRawDigi>::const_iterator digiRangeIterator = detSetIter->data.begin();
00342 
00343     for( ; digiRangeIterator != detSetIter->data.end(); ++digiRangeIterator ) {
00344       const SiStripRawDigi& digi = *digiRangeIterator;
00345 
00346       // loop all digis and 
00347       // look for at least one strip above the threshold (-> assume a signal)
00348       // look if no strip is above threshold (-> assume overdrive)
00349       if( digi.adc() > theLowerAdcThreshold  ) isAboveThreshold = true;
00350       if( digi.adc() > theUpperAdcThreshold  ) isExceedThreshold = true;
00351 
00352     }
00353 
00354     // if we have signal, fill the histos
00355     if( isAboveThreshold && !isExceedThreshold ) {
00356 
00357       // there is only one histogram for all AT hits
00358       // but the bin scheme is a little complicated:
00359       // the TIB go into bins 6-11, TOB in 12-17
00360 
00361       if( det == 2 ) nSignalsAT->Fill( 5 + (5 - pos), beam ); // TIB
00362       else nSignalsAT->Fill( 11 + (5 - pos), beam ); // TOB
00363     
00364     }
00365 
00366 
00367   } while( moduleLoop.TIBTOBLoop( det, beam, pos ) );
00368 
00369 
00370 
00371 }
00372 
00373 
00374 
00375 
00376 
00380 void LaserAlignmentT0ProducerDQM::FillFromProcessedDigis( const edm::DetSetVector<SiStripDigi>& aDetSetVector ) {
00381 
00382   LASGlobalLoop moduleLoop;
00383   int det, ring, beam, disk, pos;
00384 
00385   // tec internal modules
00386   det = 0; ring = 0; beam = 0; disk = 0;
00387   do {
00388 
00389     bool isAboveThreshold = false;
00390     bool isExceedThreshold = false;
00391 
00392     // retrieve the raw id of that module
00393     const int detRawId = detectorId.GetTECEntry( det, ring, beam, disk );
00394 
00395     // search the digis for this raw id
00396     edm::DetSetVector<SiStripDigi>::const_iterator detSetIter = aDetSetVector.find( detRawId );
00397 
00398     // processed DetSets may be missing (=empty), just skip
00399     if( detSetIter == aDetSetVector.end() ) continue;
00400 
00401     // access single modules' digis
00402     edm::DetSet<SiStripDigi>::const_iterator digiRangeIterator = detSetIter->data.begin();
00403 
00404     for( ; digiRangeIterator != detSetIter->data.end(); ++digiRangeIterator ) {
00405       const SiStripDigi& digi = *digiRangeIterator;
00406 
00407       // loop all digis and 
00408       // look for at least one strip above the threshold (-> assume a signal)
00409       // look if no strip is above threshold (->assume overdrive)
00410       if( digi.adc() > theLowerAdcThreshold  ) isAboveThreshold = true;
00411       if( digi.adc() > theUpperAdcThreshold  ) isExceedThreshold = true;
00412 
00413     }
00414 
00415     // if we have signal, fill the histos
00416     if( isAboveThreshold && !isExceedThreshold ) {
00417       
00418       // determine the appropriate histogram & bin from the position variables
00419       if( det == 0 ) { // TEC+
00420         if( ring == 0 ) nSignalsTECPlusR4->Fill( disk, beam ); // R4
00421         else nSignalsTECPlusR6->Fill( disk, beam ); // R6
00422       }
00423       else { // TEC-
00424         if( ring == 0 ) nSignalsTECMinusR4->Fill( disk, beam ); // R4
00425         else nSignalsTECMinusR6->Fill( disk, beam ); // R6
00426       }
00427     
00428     }
00429 
00430 
00431   } while( moduleLoop.TECLoop( det, ring, beam, disk ) );
00432 
00433 
00434 
00435   // endcap modules (AT beams)
00436   det = 0; beam = 0; disk = 0;
00437   do {
00438 
00439     bool isAboveThreshold = false;
00440     bool isExceedThreshold = false;
00441 
00442     // retrieve the raw id of that module
00443     const int detRawId = detectorId.GetTEC2TECEntry( det, beam, disk );
00444 
00445     // search the digis for this raw id
00446     edm::DetSetVector<SiStripDigi>::const_iterator detSetIter = aDetSetVector.find( detRawId );
00447 
00448     // processed DetSets may be missing (=empty), just skip
00449     if( detSetIter == aDetSetVector.end() ) continue;
00450 
00451     // access single modules' digis
00452     edm::DetSet<SiStripDigi>::const_iterator digiRangeIterator = detSetIter->data.begin();
00453 
00454     for( ; digiRangeIterator != detSetIter->data.end(); ++digiRangeIterator ) {
00455       const SiStripDigi& digi = *digiRangeIterator;
00456 
00457       // loop all digis and 
00458       // look for at least one strip above the threshold (-> assume a signal)
00459       // look if no strip is above threshold (-> assume overdrive)
00460       if( digi.adc() > theLowerAdcThreshold  ) isAboveThreshold = true;
00461       if( digi.adc() > theUpperAdcThreshold  ) isExceedThreshold = true;
00462 
00463     }
00464 
00465     // if we have signal, fill the histos
00466     if( isAboveThreshold && !isExceedThreshold ) {
00467 
00468       // there is only one histogram for all AT hits
00469       // but the bin scheme is a little complicated:
00470       // the TEC(AT) go in the first 5(-) and last 5(+) of 22 bins along x
00471 
00472       if( det == 1 ) nSignalsAT->Fill( 4 - disk, beam ); // TEC-
00473       else nSignalsAT->Fill( 17 + disk, beam ); // TEC+
00474     
00475     }
00476 
00477 
00478   } while( moduleLoop.TEC2TECLoop( det, beam, disk ) );
00479 
00480 
00481 
00482   // barrel modules (AT beams)
00483   det = 2; beam = 0; pos = 0;
00484   do {
00485 
00486     bool isAboveThreshold = false;
00487     bool isExceedThreshold = false;
00488 
00489     // retrieve the raw id of that module
00490     const int detRawId = detectorId.GetTIBTOBEntry( det, beam, pos );
00491 
00492     // search the digis for this raw id
00493     edm::DetSetVector<SiStripDigi>::const_iterator detSetIter = aDetSetVector.find( detRawId );
00494 
00495     // processed DetSets may be missing (=empty), just skip
00496     if( detSetIter == aDetSetVector.end() ) continue;
00497 
00498     // access single modules' digis
00499     edm::DetSet<SiStripDigi>::const_iterator digiRangeIterator = detSetIter->data.begin();
00500 
00501     for( ; digiRangeIterator != detSetIter->data.end(); ++digiRangeIterator ) {
00502       const SiStripDigi& digi = *digiRangeIterator;
00503 
00504       // loop all digis and 
00505       // look for at least one strip above the threshold (-> assume a signal)
00506       // look if no strip is above threshold (-> assume overdrive)
00507       if( digi.adc() > theLowerAdcThreshold  ) isAboveThreshold = true;
00508       if( digi.adc() > theUpperAdcThreshold  ) isExceedThreshold = true;
00509 
00510     }
00511 
00512     // if we have signal, fill the histos
00513     if( isAboveThreshold && !isExceedThreshold ) {
00514 
00515       // there is only one histogram for all AT hits
00516       // but the bin scheme is a little complicated:
00517       // the TIB go into bins 6-11, TOB in 12-17
00518 
00519       if( det == 2 ) nSignalsAT->Fill( 5 + (5 - pos), beam ); // TIB
00520       else nSignalsAT->Fill( 11 + (5 - pos), beam ); // TOB
00521     
00522     }
00523 
00524 
00525   } while( moduleLoop.TIBTOBLoop( det, beam, pos ) );
00526 
00527 
00528 }
00529 
00530 
00531 
00532 
00533 
00540 void LaserAlignmentT0ProducerDQM::FillDetectorId( void ) {
00541   
00542   // these are the detids of the TEC modules hit
00543   // by the AT as well as the TEC beams
00544   tecDoubleHitDetId.push_back( 470307208 );
00545   tecDoubleHitDetId.push_back( 470323592 );
00546   tecDoubleHitDetId.push_back( 470339976 );
00547   tecDoubleHitDetId.push_back( 470356360 );
00548   tecDoubleHitDetId.push_back( 470372744 );
00549   tecDoubleHitDetId.push_back( 470307976 );
00550   tecDoubleHitDetId.push_back( 470324360 );
00551   tecDoubleHitDetId.push_back( 470340744 );
00552   tecDoubleHitDetId.push_back( 470357128 );
00553   tecDoubleHitDetId.push_back( 470373512 );
00554   tecDoubleHitDetId.push_back( 470308488 );
00555   tecDoubleHitDetId.push_back( 470324872 );
00556   tecDoubleHitDetId.push_back( 470341256 );
00557   tecDoubleHitDetId.push_back( 470357640 );
00558   tecDoubleHitDetId.push_back( 470374024 );
00559   tecDoubleHitDetId.push_back( 470045064 );
00560   tecDoubleHitDetId.push_back( 470061448 );
00561   tecDoubleHitDetId.push_back( 470077832 );
00562   tecDoubleHitDetId.push_back( 470094216 );
00563   tecDoubleHitDetId.push_back( 470110600 );
00564   tecDoubleHitDetId.push_back( 470045832 );
00565   tecDoubleHitDetId.push_back( 470062216 );
00566   tecDoubleHitDetId.push_back( 470078600 );
00567   tecDoubleHitDetId.push_back( 470094984 );
00568   tecDoubleHitDetId.push_back( 470111368 );
00569   tecDoubleHitDetId.push_back( 470046344 );
00570   tecDoubleHitDetId.push_back( 470062728 );
00571   tecDoubleHitDetId.push_back( 470079112 );
00572   tecDoubleHitDetId.push_back( 470095496 );
00573   tecDoubleHitDetId.push_back( 470111880 );
00574 
00575   // now all the modules (above included)
00576 
00577   // TEC+
00578   detectorId.SetTECEntry( 0, 0, 0, 0, 470307208 );
00579   detectorId.SetTECEntry( 0, 0, 0, 1, 470323592 );
00580   detectorId.SetTECEntry( 0, 0, 0, 2, 470339976 );
00581   detectorId.SetTECEntry( 0, 0, 0, 3, 470356360 );
00582   detectorId.SetTECEntry( 0, 0, 0, 4, 470372744 );
00583   detectorId.SetTECEntry( 0, 0, 0, 5, 470389128 );
00584   detectorId.SetTECEntry( 0, 0, 0, 6, 470405512 );
00585   detectorId.SetTECEntry( 0, 0, 0, 7, 470421896 );
00586   detectorId.SetTECEntry( 0, 0, 0, 8, 470438280 );
00587   detectorId.SetTECEntry( 0, 0, 1, 0, 470307464 );
00588   detectorId.SetTECEntry( 0, 0, 1, 1, 470323848 );
00589   detectorId.SetTECEntry( 0, 0, 1, 2, 470340232 );
00590   detectorId.SetTECEntry( 0, 0, 1, 3, 470356616 );
00591   detectorId.SetTECEntry( 0, 0, 1, 4, 470373000 );
00592   detectorId.SetTECEntry( 0, 0, 1, 5, 470389384 );
00593   detectorId.SetTECEntry( 0, 0, 1, 6, 470405768 );
00594   detectorId.SetTECEntry( 0, 0, 1, 7, 470422152 );
00595   detectorId.SetTECEntry( 0, 0, 1, 8, 470438536 );
00596   detectorId.SetTECEntry( 0, 0, 2, 0, 470307720 );
00597   detectorId.SetTECEntry( 0, 0, 2, 1, 470324104 );
00598   detectorId.SetTECEntry( 0, 0, 2, 2, 470340488 );
00599   detectorId.SetTECEntry( 0, 0, 2, 3, 470356872 );
00600   detectorId.SetTECEntry( 0, 0, 2, 4, 470373256 );
00601   detectorId.SetTECEntry( 0, 0, 2, 5, 470389640 );
00602   detectorId.SetTECEntry( 0, 0, 2, 6, 470406024 );
00603   detectorId.SetTECEntry( 0, 0, 2, 7, 470422408 );
00604   detectorId.SetTECEntry( 0, 0, 2, 8, 470438792 );
00605   detectorId.SetTECEntry( 0, 0, 3, 0, 470307976 );
00606   detectorId.SetTECEntry( 0, 0, 3, 1, 470324360 );
00607   detectorId.SetTECEntry( 0, 0, 3, 2, 470340744 );
00608   detectorId.SetTECEntry( 0, 0, 3, 3, 470357128 );
00609   detectorId.SetTECEntry( 0, 0, 3, 4, 470373512 );
00610   detectorId.SetTECEntry( 0, 0, 3, 5, 470389896 );
00611   detectorId.SetTECEntry( 0, 0, 3, 6, 470406280 );
00612   detectorId.SetTECEntry( 0, 0, 3, 7, 470422664 );
00613   detectorId.SetTECEntry( 0, 0, 3, 8, 470439048 );
00614   detectorId.SetTECEntry( 0, 0, 4, 0, 470308232 );
00615   detectorId.SetTECEntry( 0, 0, 4, 1, 470324616 );
00616   detectorId.SetTECEntry( 0, 0, 4, 2, 470341000 );
00617   detectorId.SetTECEntry( 0, 0, 4, 3, 470357384 );
00618   detectorId.SetTECEntry( 0, 0, 4, 4, 470373768 );
00619   detectorId.SetTECEntry( 0, 0, 4, 5, 470390152 );
00620   detectorId.SetTECEntry( 0, 0, 4, 6, 470406536 );
00621   detectorId.SetTECEntry( 0, 0, 4, 7, 470422920 );
00622   detectorId.SetTECEntry( 0, 0, 4, 8, 470439304 );
00623   detectorId.SetTECEntry( 0, 0, 5, 0, 470308488 );
00624   detectorId.SetTECEntry( 0, 0, 5, 1, 470324872 );
00625   detectorId.SetTECEntry( 0, 0, 5, 2, 470341256 );
00626   detectorId.SetTECEntry( 0, 0, 5, 3, 470357640 );
00627   detectorId.SetTECEntry( 0, 0, 5, 4, 470374024 );
00628   detectorId.SetTECEntry( 0, 0, 5, 5, 470390408 );
00629   detectorId.SetTECEntry( 0, 0, 5, 6, 470406792 );
00630   detectorId.SetTECEntry( 0, 0, 5, 7, 470423176 );
00631   detectorId.SetTECEntry( 0, 0, 5, 8, 470439560 );
00632   detectorId.SetTECEntry( 0, 0, 6, 0, 470308744 );
00633   detectorId.SetTECEntry( 0, 0, 6, 1, 470325128 );
00634   detectorId.SetTECEntry( 0, 0, 6, 2, 470341512 );
00635   detectorId.SetTECEntry( 0, 0, 6, 3, 470357896 );
00636   detectorId.SetTECEntry( 0, 0, 6, 4, 470374280 );
00637   detectorId.SetTECEntry( 0, 0, 6, 5, 470390664 );
00638   detectorId.SetTECEntry( 0, 0, 6, 6, 470407048 );
00639   detectorId.SetTECEntry( 0, 0, 6, 7, 470423432 );
00640   detectorId.SetTECEntry( 0, 0, 6, 8, 470439816 );
00641   detectorId.SetTECEntry( 0, 0, 7, 0, 470309000 );
00642   detectorId.SetTECEntry( 0, 0, 7, 1, 470325384 );
00643   detectorId.SetTECEntry( 0, 0, 7, 2, 470341768 );
00644   detectorId.SetTECEntry( 0, 0, 7, 3, 470358152 );
00645   detectorId.SetTECEntry( 0, 0, 7, 4, 470374536 );
00646   detectorId.SetTECEntry( 0, 0, 7, 5, 470390920 );
00647   detectorId.SetTECEntry( 0, 0, 7, 6, 470407304 );
00648   detectorId.SetTECEntry( 0, 0, 7, 7, 470423688 );
00649   detectorId.SetTECEntry( 0, 0, 7, 8, 470440072 );
00650   detectorId.SetTECEntry( 0, 1, 0, 0, 470307272 );
00651   detectorId.SetTECEntry( 0, 1, 0, 1, 470323656 );
00652   detectorId.SetTECEntry( 0, 1, 0, 2, 470340040 );
00653   detectorId.SetTECEntry( 0, 1, 0, 3, 470356424 );
00654   detectorId.SetTECEntry( 0, 1, 0, 4, 470372808 );
00655   detectorId.SetTECEntry( 0, 1, 0, 5, 470389192 );
00656   detectorId.SetTECEntry( 0, 1, 0, 6, 470405576 );
00657   detectorId.SetTECEntry( 0, 1, 0, 7, 470421960 );
00658   detectorId.SetTECEntry( 0, 1, 0, 8, 470438344 );
00659   detectorId.SetTECEntry( 0, 1, 1, 0, 470307528 );
00660   detectorId.SetTECEntry( 0, 1, 1, 1, 470323912 );
00661   detectorId.SetTECEntry( 0, 1, 1, 2, 470340296 );
00662   detectorId.SetTECEntry( 0, 1, 1, 3, 470356680 );
00663   detectorId.SetTECEntry( 0, 1, 1, 4, 470373064 );
00664   detectorId.SetTECEntry( 0, 1, 1, 5, 470389448 );
00665   detectorId.SetTECEntry( 0, 1, 1, 6, 470405832 );
00666   detectorId.SetTECEntry( 0, 1, 1, 7, 470422216 );
00667   detectorId.SetTECEntry( 0, 1, 1, 8, 470438600 );
00668   detectorId.SetTECEntry( 0, 1, 2, 0, 470307784 );
00669   detectorId.SetTECEntry( 0, 1, 2, 1, 470324168 );
00670   detectorId.SetTECEntry( 0, 1, 2, 2, 470340552 );
00671   detectorId.SetTECEntry( 0, 1, 2, 3, 470356936 );
00672   detectorId.SetTECEntry( 0, 1, 2, 4, 470373320 );
00673   detectorId.SetTECEntry( 0, 1, 2, 5, 470389704 );
00674   detectorId.SetTECEntry( 0, 1, 2, 6, 470406088 );
00675   detectorId.SetTECEntry( 0, 1, 2, 7, 470422472 );
00676   detectorId.SetTECEntry( 0, 1, 2, 8, 470438856 );
00677   detectorId.SetTECEntry( 0, 1, 3, 0, 470308040 );
00678   detectorId.SetTECEntry( 0, 1, 3, 1, 470324424 );
00679   detectorId.SetTECEntry( 0, 1, 3, 2, 470340808 );
00680   detectorId.SetTECEntry( 0, 1, 3, 3, 470357192 );
00681   detectorId.SetTECEntry( 0, 1, 3, 4, 470373576 );
00682   detectorId.SetTECEntry( 0, 1, 3, 5, 470389960 );
00683   detectorId.SetTECEntry( 0, 1, 3, 6, 470406344 );
00684   detectorId.SetTECEntry( 0, 1, 3, 7, 470422728 );
00685   detectorId.SetTECEntry( 0, 1, 3, 8, 470439112 );
00686   detectorId.SetTECEntry( 0, 1, 4, 0, 470308296 );
00687   detectorId.SetTECEntry( 0, 1, 4, 1, 470324680 );
00688   detectorId.SetTECEntry( 0, 1, 4, 2, 470341064 );
00689   detectorId.SetTECEntry( 0, 1, 4, 3, 470357448 );
00690   detectorId.SetTECEntry( 0, 1, 4, 4, 470373832 );
00691   detectorId.SetTECEntry( 0, 1, 4, 5, 470390216 );
00692   detectorId.SetTECEntry( 0, 1, 4, 6, 470406600 );
00693   detectorId.SetTECEntry( 0, 1, 4, 7, 470422984 );
00694   detectorId.SetTECEntry( 0, 1, 4, 8, 470439368 );
00695   detectorId.SetTECEntry( 0, 1, 5, 0, 470308552 );
00696   detectorId.SetTECEntry( 0, 1, 5, 1, 470324936 );
00697   detectorId.SetTECEntry( 0, 1, 5, 2, 470341320 );
00698   detectorId.SetTECEntry( 0, 1, 5, 3, 470357704 );
00699   detectorId.SetTECEntry( 0, 1, 5, 4, 470374088 );
00700   detectorId.SetTECEntry( 0, 1, 5, 5, 470390472 );
00701   detectorId.SetTECEntry( 0, 1, 5, 6, 470406856 );
00702   detectorId.SetTECEntry( 0, 1, 5, 7, 470423240 );
00703   detectorId.SetTECEntry( 0, 1, 5, 8, 470439624 );
00704   detectorId.SetTECEntry( 0, 1, 6, 0, 470308808 );
00705   detectorId.SetTECEntry( 0, 1, 6, 1, 470325192 );
00706   detectorId.SetTECEntry( 0, 1, 6, 2, 470341576 );
00707   detectorId.SetTECEntry( 0, 1, 6, 3, 470357960 );
00708   detectorId.SetTECEntry( 0, 1, 6, 4, 470374344 );
00709   detectorId.SetTECEntry( 0, 1, 6, 5, 470390728 );
00710   detectorId.SetTECEntry( 0, 1, 6, 6, 470407112 );
00711   detectorId.SetTECEntry( 0, 1, 6, 7, 470423496 );
00712   detectorId.SetTECEntry( 0, 1, 6, 8, 470439880 );
00713   detectorId.SetTECEntry( 0, 1, 7, 0, 470309064 );
00714   detectorId.SetTECEntry( 0, 1, 7, 1, 470325448 );
00715   detectorId.SetTECEntry( 0, 1, 7, 2, 470341832 );
00716   detectorId.SetTECEntry( 0, 1, 7, 3, 470358216 );
00717   detectorId.SetTECEntry( 0, 1, 7, 4, 470374600 );
00718   detectorId.SetTECEntry( 0, 1, 7, 5, 470390984 );
00719   detectorId.SetTECEntry( 0, 1, 7, 6, 470407368 );
00720   detectorId.SetTECEntry( 0, 1, 7, 7, 470423752 );
00721   detectorId.SetTECEntry( 0, 1, 7, 8, 470440136 );
00722 
00723   // TEC-
00724   detectorId.SetTECEntry( 1, 0, 0, 0, 470045064 );
00725   detectorId.SetTECEntry( 1, 0, 0, 1, 470061448 );
00726   detectorId.SetTECEntry( 1, 0, 0, 2, 470077832 );
00727   detectorId.SetTECEntry( 1, 0, 0, 3, 470094216 );
00728   detectorId.SetTECEntry( 1, 0, 0, 4, 470110600 );
00729   detectorId.SetTECEntry( 1, 0, 0, 5, 470126984 );
00730   detectorId.SetTECEntry( 1, 0, 0, 6, 470143368 );
00731   detectorId.SetTECEntry( 1, 0, 0, 7, 470159752 );
00732   detectorId.SetTECEntry( 1, 0, 0, 8, 470176136 );
00733   detectorId.SetTECEntry( 1, 0, 1, 0, 470045320 );
00734   detectorId.SetTECEntry( 1, 0, 1, 1, 470061704 );
00735   detectorId.SetTECEntry( 1, 0, 1, 2, 470078088 );
00736   detectorId.SetTECEntry( 1, 0, 1, 3, 470094472 );
00737   detectorId.SetTECEntry( 1, 0, 1, 4, 470110856 );
00738   detectorId.SetTECEntry( 1, 0, 1, 5, 470127240 );
00739   detectorId.SetTECEntry( 1, 0, 1, 6, 470143624 );
00740   detectorId.SetTECEntry( 1, 0, 1, 7, 470160008 );
00741   detectorId.SetTECEntry( 1, 0, 1, 8, 470176392 );
00742   detectorId.SetTECEntry( 1, 0, 2, 0, 470045576 );
00743   detectorId.SetTECEntry( 1, 0, 2, 1, 470061960 );
00744   detectorId.SetTECEntry( 1, 0, 2, 2, 470078344 );
00745   detectorId.SetTECEntry( 1, 0, 2, 3, 470094728 );
00746   detectorId.SetTECEntry( 1, 0, 2, 4, 470111112 );
00747   detectorId.SetTECEntry( 1, 0, 2, 5, 470127496 );
00748   detectorId.SetTECEntry( 1, 0, 2, 6, 470143880 );
00749   detectorId.SetTECEntry( 1, 0, 2, 7, 470160264 );
00750   detectorId.SetTECEntry( 1, 0, 2, 8, 470176648 );
00751   detectorId.SetTECEntry( 1, 0, 3, 0, 470045832 );
00752   detectorId.SetTECEntry( 1, 0, 3, 1, 470062216 );
00753   detectorId.SetTECEntry( 1, 0, 3, 2, 470078600 );
00754   detectorId.SetTECEntry( 1, 0, 3, 3, 470094984 );
00755   detectorId.SetTECEntry( 1, 0, 3, 4, 470111368 );
00756   detectorId.SetTECEntry( 1, 0, 3, 5, 470127752 );
00757   detectorId.SetTECEntry( 1, 0, 3, 6, 470144136 );
00758   detectorId.SetTECEntry( 1, 0, 3, 7, 470160520 );
00759   detectorId.SetTECEntry( 1, 0, 3, 8, 470176904 );
00760   detectorId.SetTECEntry( 1, 0, 4, 0, 470046088 );
00761   detectorId.SetTECEntry( 1, 0, 4, 1, 470062472 );
00762   detectorId.SetTECEntry( 1, 0, 4, 2, 470078856 );
00763   detectorId.SetTECEntry( 1, 0, 4, 3, 470095240 );
00764   detectorId.SetTECEntry( 1, 0, 4, 4, 470111624 );
00765   detectorId.SetTECEntry( 1, 0, 4, 5, 470128008 );
00766   detectorId.SetTECEntry( 1, 0, 4, 6, 470144392 );
00767   detectorId.SetTECEntry( 1, 0, 4, 7, 470160776 );
00768   detectorId.SetTECEntry( 1, 0, 4, 8, 470177160 );
00769   detectorId.SetTECEntry( 1, 0, 5, 0, 470046344 );
00770   detectorId.SetTECEntry( 1, 0, 5, 1, 470062728 );
00771   detectorId.SetTECEntry( 1, 0, 5, 2, 470079112 );
00772   detectorId.SetTECEntry( 1, 0, 5, 3, 470095496 );
00773   detectorId.SetTECEntry( 1, 0, 5, 4, 470111880 );
00774   detectorId.SetTECEntry( 1, 0, 5, 5, 470128264 );
00775   detectorId.SetTECEntry( 1, 0, 5, 6, 470144648 );
00776   detectorId.SetTECEntry( 1, 0, 5, 7, 470161032 );
00777   detectorId.SetTECEntry( 1, 0, 5, 8, 470177416 );
00778   detectorId.SetTECEntry( 1, 0, 6, 0, 470046600 );
00779   detectorId.SetTECEntry( 1, 0, 6, 1, 470062984 );
00780   detectorId.SetTECEntry( 1, 0, 6, 2, 470079368 );
00781   detectorId.SetTECEntry( 1, 0, 6, 3, 470095752 );
00782   detectorId.SetTECEntry( 1, 0, 6, 4, 470112136 );
00783   detectorId.SetTECEntry( 1, 0, 6, 5, 470128520 );
00784   detectorId.SetTECEntry( 1, 0, 6, 6, 470144904 );
00785   detectorId.SetTECEntry( 1, 0, 6, 7, 470161288 );
00786   detectorId.SetTECEntry( 1, 0, 6, 8, 470177672 );
00787   detectorId.SetTECEntry( 1, 0, 7, 0, 470046856 );
00788   detectorId.SetTECEntry( 1, 0, 7, 1, 470063240 );
00789   detectorId.SetTECEntry( 1, 0, 7, 2, 470079624 );
00790   detectorId.SetTECEntry( 1, 0, 7, 3, 470096008 );
00791   detectorId.SetTECEntry( 1, 0, 7, 4, 470112392 );
00792   detectorId.SetTECEntry( 1, 0, 7, 5, 470128776 );
00793   detectorId.SetTECEntry( 1, 0, 7, 6, 470145160 );
00794   detectorId.SetTECEntry( 1, 0, 7, 7, 470161544 );
00795   detectorId.SetTECEntry( 1, 0, 7, 8, 470177928 );
00796   detectorId.SetTECEntry( 1, 1, 0, 0, 470045128 );
00797   detectorId.SetTECEntry( 1, 1, 0, 1, 470061512 );
00798   detectorId.SetTECEntry( 1, 1, 0, 2, 470077896 );
00799   detectorId.SetTECEntry( 1, 1, 0, 3, 470094280 );
00800   detectorId.SetTECEntry( 1, 1, 0, 4, 470110664 );
00801   detectorId.SetTECEntry( 1, 1, 0, 5, 470127048 );
00802   detectorId.SetTECEntry( 1, 1, 0, 6, 470143432 );
00803   detectorId.SetTECEntry( 1, 1, 0, 7, 470159816 );
00804   detectorId.SetTECEntry( 1, 1, 0, 8, 470176200 );
00805   detectorId.SetTECEntry( 1, 1, 1, 0, 470045384 );
00806   detectorId.SetTECEntry( 1, 1, 1, 1, 470061768 );
00807   detectorId.SetTECEntry( 1, 1, 1, 2, 470078152 );
00808   detectorId.SetTECEntry( 1, 1, 1, 3, 470094536 );
00809   detectorId.SetTECEntry( 1, 1, 1, 4, 470110920 );
00810   detectorId.SetTECEntry( 1, 1, 1, 5, 470127304 );
00811   detectorId.SetTECEntry( 1, 1, 1, 6, 470143688 );
00812   detectorId.SetTECEntry( 1, 1, 1, 7, 470160072 );
00813   detectorId.SetTECEntry( 1, 1, 1, 8, 470176456 );
00814   detectorId.SetTECEntry( 1, 1, 2, 0, 470045640 );
00815   detectorId.SetTECEntry( 1, 1, 2, 1, 470062024 );
00816   detectorId.SetTECEntry( 1, 1, 2, 2, 470078408 );
00817   detectorId.SetTECEntry( 1, 1, 2, 3, 470094792 );
00818   detectorId.SetTECEntry( 1, 1, 2, 4, 470111176 );
00819   detectorId.SetTECEntry( 1, 1, 2, 5, 470127560 );
00820   detectorId.SetTECEntry( 1, 1, 2, 6, 470143944 );
00821   detectorId.SetTECEntry( 1, 1, 2, 7, 470160328 );
00822   detectorId.SetTECEntry( 1, 1, 2, 8, 470176712 );
00823   detectorId.SetTECEntry( 1, 1, 3, 0, 470045896 );
00824   detectorId.SetTECEntry( 1, 1, 3, 1, 470062280 );
00825   detectorId.SetTECEntry( 1, 1, 3, 2, 470078664 );
00826   detectorId.SetTECEntry( 1, 1, 3, 3, 470095048 );
00827   detectorId.SetTECEntry( 1, 1, 3, 4, 470111432 );
00828   detectorId.SetTECEntry( 1, 1, 3, 5, 470127816 );
00829   detectorId.SetTECEntry( 1, 1, 3, 6, 470144200 );
00830   detectorId.SetTECEntry( 1, 1, 3, 7, 470160584 );
00831   detectorId.SetTECEntry( 1, 1, 3, 8, 470176968 );
00832   detectorId.SetTECEntry( 1, 1, 4, 0, 470046152 );
00833   detectorId.SetTECEntry( 1, 1, 4, 1, 470062536 );
00834   detectorId.SetTECEntry( 1, 1, 4, 2, 470078920 );
00835   detectorId.SetTECEntry( 1, 1, 4, 3, 470095304 );
00836   detectorId.SetTECEntry( 1, 1, 4, 4, 470111688 );
00837   detectorId.SetTECEntry( 1, 1, 4, 5, 470128072 );
00838   detectorId.SetTECEntry( 1, 1, 4, 6, 470144456 );
00839   detectorId.SetTECEntry( 1, 1, 4, 7, 470160840 );
00840   detectorId.SetTECEntry( 1, 1, 4, 8, 470177224 );
00841   detectorId.SetTECEntry( 1, 1, 5, 0, 470046408 );
00842   detectorId.SetTECEntry( 1, 1, 5, 1, 470062792 );
00843   detectorId.SetTECEntry( 1, 1, 5, 2, 470079176 );
00844   detectorId.SetTECEntry( 1, 1, 5, 3, 470095560 );
00845   detectorId.SetTECEntry( 1, 1, 5, 4, 470111944 );
00846   detectorId.SetTECEntry( 1, 1, 5, 5, 470128328 );
00847   detectorId.SetTECEntry( 1, 1, 5, 6, 470144712 );
00848   detectorId.SetTECEntry( 1, 1, 5, 7, 470161096 );
00849   detectorId.SetTECEntry( 1, 1, 5, 8, 470177480 );
00850   detectorId.SetTECEntry( 1, 1, 6, 0, 470046664 );
00851   detectorId.SetTECEntry( 1, 1, 6, 1, 470063048 );
00852   detectorId.SetTECEntry( 1, 1, 6, 2, 470079432 );
00853   detectorId.SetTECEntry( 1, 1, 6, 3, 470095816 );
00854   detectorId.SetTECEntry( 1, 1, 6, 4, 470112200 );
00855   detectorId.SetTECEntry( 1, 1, 6, 5, 470128584 );
00856   detectorId.SetTECEntry( 1, 1, 6, 6, 470144968 );
00857   detectorId.SetTECEntry( 1, 1, 6, 7, 470161352 );
00858   detectorId.SetTECEntry( 1, 1, 6, 8, 470177736 );
00859   detectorId.SetTECEntry( 1, 1, 7, 0, 470046920 );
00860   detectorId.SetTECEntry( 1, 1, 7, 1, 470063304 );
00861   detectorId.SetTECEntry( 1, 1, 7, 2, 470079688 );
00862   detectorId.SetTECEntry( 1, 1, 7, 3, 470096072 );
00863   detectorId.SetTECEntry( 1, 1, 7, 4, 470112456 );
00864   detectorId.SetTECEntry( 1, 1, 7, 5, 470128840 );
00865   detectorId.SetTECEntry( 1, 1, 7, 6, 470145224 );
00866   detectorId.SetTECEntry( 1, 1, 7, 7, 470161608 );
00867   detectorId.SetTECEntry( 1, 1, 7, 8, 470177992 );
00868 
00869   // TIB
00870   detectorId.SetTIBTOBEntry( 2, 0, 0, 369174604 );
00871   detectorId.SetTIBTOBEntry( 2, 0, 1, 369174600 );
00872   detectorId.SetTIBTOBEntry( 2, 0, 2, 369174596 );
00873   detectorId.SetTIBTOBEntry( 2, 0, 3, 369170500 );
00874   detectorId.SetTIBTOBEntry( 2, 0, 4, 369170504 );
00875   detectorId.SetTIBTOBEntry( 2, 0, 5, 369170508 );
00876   detectorId.SetTIBTOBEntry( 2, 1, 0, 369174732 );
00877   detectorId.SetTIBTOBEntry( 2, 1, 1, 369174728 );
00878   detectorId.SetTIBTOBEntry( 2, 1, 2, 369174724 );
00879   detectorId.SetTIBTOBEntry( 2, 1, 3, 369170628 );
00880   detectorId.SetTIBTOBEntry( 2, 1, 4, 369170632 );
00881   detectorId.SetTIBTOBEntry( 2, 1, 5, 369170636 );
00882   detectorId.SetTIBTOBEntry( 2, 2, 0, 369174812 );
00883   detectorId.SetTIBTOBEntry( 2, 2, 1, 369174808 );
00884   detectorId.SetTIBTOBEntry( 2, 2, 2, 369174804 );
00885   detectorId.SetTIBTOBEntry( 2, 2, 3, 369170708 );
00886   detectorId.SetTIBTOBEntry( 2, 2, 4, 369170712 );
00887   detectorId.SetTIBTOBEntry( 2, 2, 5, 369170716 );
00888   detectorId.SetTIBTOBEntry( 2, 3, 0, 369174940 );
00889   detectorId.SetTIBTOBEntry( 2, 3, 1, 369174936 );
00890   detectorId.SetTIBTOBEntry( 2, 3, 2, 369174932 );
00891   detectorId.SetTIBTOBEntry( 2, 3, 3, 369170836 );
00892   detectorId.SetTIBTOBEntry( 2, 3, 4, 369170840 );
00893   detectorId.SetTIBTOBEntry( 2, 3, 5, 369170844 );
00894   detectorId.SetTIBTOBEntry( 2, 4, 0, 369175068 );
00895   detectorId.SetTIBTOBEntry( 2, 4, 1, 369175064 );
00896   detectorId.SetTIBTOBEntry( 2, 4, 2, 369175060 );
00897   detectorId.SetTIBTOBEntry( 2, 4, 3, 369170964 );
00898   detectorId.SetTIBTOBEntry( 2, 4, 4, 369170968 );
00899   detectorId.SetTIBTOBEntry( 2, 4, 5, 369170972 );
00900   detectorId.SetTIBTOBEntry( 2, 5, 0, 369175164 );
00901   detectorId.SetTIBTOBEntry( 2, 5, 1, 369175160 );
00902   detectorId.SetTIBTOBEntry( 2, 5, 2, 369175156 );
00903   detectorId.SetTIBTOBEntry( 2, 5, 3, 369171060 );
00904   detectorId.SetTIBTOBEntry( 2, 5, 4, 369171064 );
00905   detectorId.SetTIBTOBEntry( 2, 5, 5, 369171068 );
00906   detectorId.SetTIBTOBEntry( 2, 6, 0, 369175292 );
00907   detectorId.SetTIBTOBEntry( 2, 6, 1, 369175288 );
00908   detectorId.SetTIBTOBEntry( 2, 6, 2, 369175284 );
00909   detectorId.SetTIBTOBEntry( 2, 6, 3, 369171188 );
00910   detectorId.SetTIBTOBEntry( 2, 6, 4, 369171192 );
00911   detectorId.SetTIBTOBEntry( 2, 6, 5, 369171196 );
00912   detectorId.SetTIBTOBEntry( 2, 7, 0, 369175372 );
00913   detectorId.SetTIBTOBEntry( 2, 7, 1, 369175368 );
00914   detectorId.SetTIBTOBEntry( 2, 7, 2, 369175364 );
00915   detectorId.SetTIBTOBEntry( 2, 7, 3, 369171268 );
00916   detectorId.SetTIBTOBEntry( 2, 7, 4, 369171272 );
00917   detectorId.SetTIBTOBEntry( 2, 7, 5, 369171276 );
00918 
00919   // TOB
00920   detectorId.SetTIBTOBEntry( 3, 0, 0, 436232314 );
00921   detectorId.SetTIBTOBEntry( 3, 0, 1, 436232306 );
00922   detectorId.SetTIBTOBEntry( 3, 0, 2, 436232298 );
00923   detectorId.SetTIBTOBEntry( 3, 0, 3, 436228198 );
00924   detectorId.SetTIBTOBEntry( 3, 0, 4, 436228206 );
00925   detectorId.SetTIBTOBEntry( 3, 0, 5, 436228214 );
00926   detectorId.SetTIBTOBEntry( 3, 1, 0, 436232506 );
00927   detectorId.SetTIBTOBEntry( 3, 1, 1, 436232498 );
00928   detectorId.SetTIBTOBEntry( 3, 1, 2, 436232490 );
00929   detectorId.SetTIBTOBEntry( 3, 1, 3, 436228390 );
00930   detectorId.SetTIBTOBEntry( 3, 1, 4, 436228398 );
00931   detectorId.SetTIBTOBEntry( 3, 1, 5, 436228406 );
00932   detectorId.SetTIBTOBEntry( 3, 2, 0, 436232634 );
00933   detectorId.SetTIBTOBEntry( 3, 2, 1, 436232626 );
00934   detectorId.SetTIBTOBEntry( 3, 2, 2, 436232618 );
00935   detectorId.SetTIBTOBEntry( 3, 2, 3, 436228518 );
00936   detectorId.SetTIBTOBEntry( 3, 2, 4, 436228526 );
00937   detectorId.SetTIBTOBEntry( 3, 2, 5, 436228534 );
00938   detectorId.SetTIBTOBEntry( 3, 3, 0, 436232826 );
00939   detectorId.SetTIBTOBEntry( 3, 3, 1, 436232818 );
00940   detectorId.SetTIBTOBEntry( 3, 3, 2, 436232810 );
00941   detectorId.SetTIBTOBEntry( 3, 3, 3, 436228710 );
00942   detectorId.SetTIBTOBEntry( 3, 3, 4, 436228718 );
00943   detectorId.SetTIBTOBEntry( 3, 3, 5, 436228726 );
00944   detectorId.SetTIBTOBEntry( 3, 4, 0, 436233018 );
00945   detectorId.SetTIBTOBEntry( 3, 4, 1, 436233010 );
00946   detectorId.SetTIBTOBEntry( 3, 4, 2, 436233002 );
00947   detectorId.SetTIBTOBEntry( 3, 4, 3, 436228902 );
00948   detectorId.SetTIBTOBEntry( 3, 4, 4, 436228910 );
00949   detectorId.SetTIBTOBEntry( 3, 4, 5, 436228918 );
00950   detectorId.SetTIBTOBEntry( 3, 5, 0, 436233146 );
00951   detectorId.SetTIBTOBEntry( 3, 5, 1, 436233138 );
00952   detectorId.SetTIBTOBEntry( 3, 5, 2, 436233130 );
00953   detectorId.SetTIBTOBEntry( 3, 5, 3, 436229030 );
00954   detectorId.SetTIBTOBEntry( 3, 5, 4, 436229038 );
00955   detectorId.SetTIBTOBEntry( 3, 5, 5, 436229046 );
00956   detectorId.SetTIBTOBEntry( 3, 6, 0, 436233338 );
00957   detectorId.SetTIBTOBEntry( 3, 6, 1, 436233330 );
00958   detectorId.SetTIBTOBEntry( 3, 6, 2, 436233322 );
00959   detectorId.SetTIBTOBEntry( 3, 6, 3, 436229222 );
00960   detectorId.SetTIBTOBEntry( 3, 6, 4, 436229230 );
00961   detectorId.SetTIBTOBEntry( 3, 6, 5, 436229238 );
00962   detectorId.SetTIBTOBEntry( 3, 7, 0, 436233466 );
00963   detectorId.SetTIBTOBEntry( 3, 7, 1, 436233458 );
00964   detectorId.SetTIBTOBEntry( 3, 7, 2, 436233450 );
00965   detectorId.SetTIBTOBEntry( 3, 7, 3, 436229350 );
00966   detectorId.SetTIBTOBEntry( 3, 7, 4, 436229358 );
00967   detectorId.SetTIBTOBEntry( 3, 7, 5, 436229366 );
00968 
00969   // TEC+ AT
00970   detectorId.SetTEC2TECEntry( 0, 0, 0, 470307208 );
00971   detectorId.SetTEC2TECEntry( 0, 0, 1, 470323592 );
00972   detectorId.SetTEC2TECEntry( 0, 0, 2, 470339976 );
00973   detectorId.SetTEC2TECEntry( 0, 0, 3, 470356360 );
00974   detectorId.SetTEC2TECEntry( 0, 0, 4, 470372744 );
00975   detectorId.SetTEC2TECEntry( 0, 1, 0, 470307468 );
00976   detectorId.SetTEC2TECEntry( 0, 1, 1, 470323852 );
00977   detectorId.SetTEC2TECEntry( 0, 1, 2, 470340236 );
00978   detectorId.SetTEC2TECEntry( 0, 1, 3, 470356620 );
00979   detectorId.SetTEC2TECEntry( 0, 1, 4, 470373004 );
00980   detectorId.SetTEC2TECEntry( 0, 2, 0, 470307716 );
00981   detectorId.SetTEC2TECEntry( 0, 2, 1, 470324100 );
00982   detectorId.SetTEC2TECEntry( 0, 2, 2, 470340484 );
00983   detectorId.SetTEC2TECEntry( 0, 2, 3, 470356868 );
00984   detectorId.SetTEC2TECEntry( 0, 2, 4, 470373252 );
00985   detectorId.SetTEC2TECEntry( 0, 3, 0, 470307976 );
00986   detectorId.SetTEC2TECEntry( 0, 3, 1, 470324360 );
00987   detectorId.SetTEC2TECEntry( 0, 3, 2, 470340744 );
00988   detectorId.SetTEC2TECEntry( 0, 3, 3, 470357128 );
00989   detectorId.SetTEC2TECEntry( 0, 3, 4, 470373512 );
00990   detectorId.SetTEC2TECEntry( 0, 4, 0, 470308236 );
00991   detectorId.SetTEC2TECEntry( 0, 4, 1, 470324620 );
00992   detectorId.SetTEC2TECEntry( 0, 4, 2, 470341004 );
00993   detectorId.SetTEC2TECEntry( 0, 4, 3, 470357388 );
00994   detectorId.SetTEC2TECEntry( 0, 4, 4, 470373772 );
00995   detectorId.SetTEC2TECEntry( 0, 5, 0, 470308488 );
00996   detectorId.SetTEC2TECEntry( 0, 5, 1, 470324872 );
00997   detectorId.SetTEC2TECEntry( 0, 5, 2, 470341256 );
00998   detectorId.SetTEC2TECEntry( 0, 5, 3, 470357640 );
00999   detectorId.SetTEC2TECEntry( 0, 5, 4, 470374024 );
01000   detectorId.SetTEC2TECEntry( 0, 6, 0, 470308748 );
01001   detectorId.SetTEC2TECEntry( 0, 6, 1, 470325132 );
01002   detectorId.SetTEC2TECEntry( 0, 6, 2, 470341516 );
01003   detectorId.SetTEC2TECEntry( 0, 6, 3, 470357900 );
01004   detectorId.SetTEC2TECEntry( 0, 6, 4, 470374284 );
01005   detectorId.SetTEC2TECEntry( 0, 7, 0, 470308996 );
01006   detectorId.SetTEC2TECEntry( 0, 7, 1, 470325380 );
01007   detectorId.SetTEC2TECEntry( 0, 7, 2, 470341764 );
01008   detectorId.SetTEC2TECEntry( 0, 7, 3, 470358148 );
01009   detectorId.SetTEC2TECEntry( 0, 7, 4, 470374532 );
01010 
01011   // TEC- AT
01012   detectorId.SetTEC2TECEntry( 1, 0, 0, 470045064 );
01013   detectorId.SetTEC2TECEntry( 1, 0, 1, 470061448 );
01014   detectorId.SetTEC2TECEntry( 1, 0, 2, 470077832 );
01015   detectorId.SetTEC2TECEntry( 1, 0, 3, 470094216 );
01016   detectorId.SetTEC2TECEntry( 1, 0, 4, 470110600 );
01017   detectorId.SetTEC2TECEntry( 1, 1, 0, 470045316 );
01018   detectorId.SetTEC2TECEntry( 1, 1, 1, 470061700 );
01019   detectorId.SetTEC2TECEntry( 1, 1, 2, 470078084 );
01020   detectorId.SetTEC2TECEntry( 1, 1, 3, 470094468 );
01021   detectorId.SetTEC2TECEntry( 1, 1, 4, 470110852 );
01022   detectorId.SetTEC2TECEntry( 1, 2, 0, 470045580 );
01023   detectorId.SetTEC2TECEntry( 1, 2, 1, 470061964 );
01024   detectorId.SetTEC2TECEntry( 1, 2, 2, 470078348 );
01025   detectorId.SetTEC2TECEntry( 1, 2, 3, 470094732 );
01026   detectorId.SetTEC2TECEntry( 1, 2, 4, 470111116 );
01027   detectorId.SetTEC2TECEntry( 1, 3, 0, 470045832 );
01028   detectorId.SetTEC2TECEntry( 1, 3, 1, 470062216 );
01029   detectorId.SetTEC2TECEntry( 1, 3, 2, 470078600 );
01030   detectorId.SetTEC2TECEntry( 1, 3, 3, 470094984 );
01031   detectorId.SetTEC2TECEntry( 1, 3, 4, 470111368 );
01032   detectorId.SetTEC2TECEntry( 1, 4, 0, 470046084 );
01033   detectorId.SetTEC2TECEntry( 1, 4, 1, 470062468 );
01034   detectorId.SetTEC2TECEntry( 1, 4, 2, 470078852 );
01035   detectorId.SetTEC2TECEntry( 1, 4, 3, 470095236 );
01036   detectorId.SetTEC2TECEntry( 1, 4, 4, 470111620 );
01037   detectorId.SetTEC2TECEntry( 1, 5, 0, 470046344 );
01038   detectorId.SetTEC2TECEntry( 1, 5, 1, 470062728 );
01039   detectorId.SetTEC2TECEntry( 1, 5, 2, 470079112 );
01040   detectorId.SetTEC2TECEntry( 1, 5, 3, 470095496 );
01041   detectorId.SetTEC2TECEntry( 1, 5, 4, 470111880 );
01042   detectorId.SetTEC2TECEntry( 1, 6, 0, 470046596 );
01043   detectorId.SetTEC2TECEntry( 1, 6, 1, 470062980 );
01044   detectorId.SetTEC2TECEntry( 1, 6, 2, 470079364 );
01045   detectorId.SetTEC2TECEntry( 1, 6, 3, 470095748 );
01046   detectorId.SetTEC2TECEntry( 1, 6, 4, 470112132 );
01047   detectorId.SetTEC2TECEntry( 1, 7, 0, 470046860 );
01048   detectorId.SetTEC2TECEntry( 1, 7, 1, 470063244 );
01049   detectorId.SetTEC2TECEntry( 1, 7, 2, 470079628 );
01050   detectorId.SetTEC2TECEntry( 1, 7, 3, 470096012 );
01051   detectorId.SetTEC2TECEntry( 1, 7, 4, 470112396 );
01052 
01053 }
01054 
01055 //define this as a plug-in
01056 DEFINE_FWK_MODULE(LaserAlignmentT0ProducerDQM);
01057