CMS 3D CMS Logo

List of all members | Public Member Functions | Private Member Functions | Private Attributes
LaserAlignmentT0ProducerDQM Class Reference

#include <LaserAlignmentT0ProducerDQM.h>

Inheritance diagram for LaserAlignmentT0ProducerDQM:
DQMEDAnalyzer edm::stream::EDProducer< edm::GlobalCache< DQMEDAnalyzerGlobalCache >, edm::EndRunProducer, edm::EndLuminosityBlockProducer, edm::Accumulator >

Public Member Functions

void analyze (const edm::Event &, const edm::EventSetup &) override
 
void bookHistograms (DQMStore::IBooker &, edm::Run const &, edm::EventSetup const &) override
 
 LaserAlignmentT0ProducerDQM (const edm::ParameterSet &)
 
 ~LaserAlignmentT0ProducerDQM () override
 
- Public Member Functions inherited from DQMEDAnalyzer
void accumulate (edm::Event const &event, edm::EventSetup const &setup) final
 
void beginLuminosityBlock (edm::LuminosityBlock const &lumi, edm::EventSetup const &setup) final
 
void beginRun (edm::Run const &run, edm::EventSetup const &setup) final
 
void beginStream (edm::StreamID id) final
 
virtual void dqmBeginRun (edm::Run const &, edm::EventSetup const &)
 
 DQMEDAnalyzer ()
 
void endLuminosityBlock (edm::LuminosityBlock const &lumi, edm::EventSetup const &setup) final
 
void endRun (edm::Run const &run, edm::EventSetup const &setup) final
 
virtual bool getCanSaveByLumi ()
 
- Public Member Functions inherited from edm::stream::EDProducer< edm::GlobalCache< DQMEDAnalyzerGlobalCache >, edm::EndRunProducer, edm::EndLuminosityBlockProducer, edm::Accumulator >
 EDProducer ()=default
 
 EDProducer (const EDProducer &)=delete
 
bool hasAbilityToProduceInBeginLumis () const final
 
bool hasAbilityToProduceInBeginProcessBlocks () const final
 
bool hasAbilityToProduceInBeginRuns () const final
 
bool hasAbilityToProduceInEndLumis () const final
 
bool hasAbilityToProduceInEndProcessBlocks () const final
 
bool hasAbilityToProduceInEndRuns () const final
 
const EDProduceroperator= (const EDProducer &)=delete
 

Private Member Functions

void FillDetectorId (void)
 
void FillFromProcessedDigis (const edm::DetSetVector< SiStripDigi > &)
 
void FillFromRawDigis (const edm::DetSetVector< SiStripRawDigi > &)
 

Private Attributes

LASGlobalData< int > detectorId
 
MonitorElementnSignalsAT
 
MonitorElementnSignalsTECMinusR4
 
MonitorElementnSignalsTECMinusR6
 
MonitorElementnSignalsTECPlusR4
 
MonitorElementnSignalsTECPlusR6
 
std::vector< int > tecDoubleHitDetId
 
edm::ParameterSet theConfiguration
 
std::vector< edm::ParameterSettheDigiProducerList
 
unsigned int theLowerAdcThreshold
 
unsigned int theUpperAdcThreshold
 

Additional Inherited Members

- Public Types inherited from DQMEDAnalyzer
typedef dqm::reco::DQMStore DQMStore
 
typedef dqm::reco::MonitorElement MonitorElement
 
- Public Types inherited from edm::stream::EDProducer< edm::GlobalCache< DQMEDAnalyzerGlobalCache >, edm::EndRunProducer, edm::EndLuminosityBlockProducer, edm::Accumulator >
using CacheTypes = CacheContexts< T... >
 
using GlobalCache = typename CacheTypes::GlobalCache
 
using HasAbility = AbilityChecker< T... >
 
using InputProcessBlockCache = typename CacheTypes::InputProcessBlockCache
 
using LuminosityBlockCache = typename CacheTypes::LuminosityBlockCache
 
using LuminosityBlockContext = LuminosityBlockContextT< LuminosityBlockCache, RunCache, GlobalCache >
 
using LuminosityBlockSummaryCache = typename CacheTypes::LuminosityBlockSummaryCache
 
using RunCache = typename CacheTypes::RunCache
 
using RunContext = RunContextT< RunCache, GlobalCache >
 
using RunSummaryCache = typename CacheTypes::RunSummaryCache
 
- Static Public Member Functions inherited from DQMEDAnalyzer
static void globalEndJob (DQMEDAnalyzerGlobalCache const *)
 
static void globalEndLuminosityBlockProduce (edm::LuminosityBlock &lumi, edm::EventSetup const &setup, LuminosityBlockContext const *context)
 
static void globalEndRunProduce (edm::Run &run, edm::EventSetup const &setup, RunContext const *context)
 
static std::unique_ptr< DQMEDAnalyzerGlobalCacheinitializeGlobalCache (edm::ParameterSet const &)
 
- Protected Member Functions inherited from DQMEDAnalyzer
uint64_t meId () const
 
- Protected Attributes inherited from DQMEDAnalyzer
edm::EDPutTokenT< DQMTokenlumiToken_
 
edm::EDPutTokenT< DQMTokenrunToken_
 
unsigned int streamId_
 

Detailed Description

Definition at line 39 of file LaserAlignmentT0ProducerDQM.h.

Constructor & Destructor Documentation

◆ LaserAlignmentT0ProducerDQM()

LaserAlignmentT0ProducerDQM::LaserAlignmentT0ProducerDQM ( const edm::ParameterSet aConfiguration)
explicit

Definition at line 7 of file LaserAlignmentT0ProducerDQM.cc.

References FillDetectorId(), and theConfiguration.

7  {
8  theConfiguration = aConfiguration;
10 }

◆ ~LaserAlignmentT0ProducerDQM()

LaserAlignmentT0ProducerDQM::~LaserAlignmentT0ProducerDQM ( )
override

Definition at line 15 of file LaserAlignmentT0ProducerDQM.cc.

15 {}

Member Function Documentation

◆ analyze()

void LaserAlignmentT0ProducerDQM::analyze ( const edm::Event aEvent,
const edm::EventSetup aSetup 
)
overridevirtual

Reimplemented from DQMEDAnalyzer.

Definition at line 116 of file LaserAlignmentT0ProducerDQM.cc.

References DataMixerDataOnData_cff::digiLabel, EcnaPython_AdcPeg12_S1_10_R170298_1_0_150_Dee0::digiProducer, Exception, FillFromProcessedDigis(), FillFromRawDigis(), edm::Event::getByLabel(), AlCaHLTBitMon_QueryRunRegistry::string, and theDigiProducerList.

116  {
117  // loop all input products
118  for (std::vector<edm::ParameterSet>::iterator aDigiProducer = theDigiProducerList.begin();
119  aDigiProducer != theDigiProducerList.end();
120  ++aDigiProducer) {
121  const std::string digiProducer = aDigiProducer->getParameter<std::string>("DigiProducer");
122  const std::string digiLabel = aDigiProducer->getParameter<std::string>("DigiLabel");
123  const std::string digiType = aDigiProducer->getParameter<std::string>("DigiType");
124 
125  // now a distinction of cases: raw or processed digis?
126 
127  // first we go for raw digis => SiStripRawDigi
128  if (digiType == "Raw") {
129  // retrieve the SiStripRawDigis collection
131  aEvent.getByLabel(digiProducer, digiLabel, rawDigis);
132 
133  // eval & fill histos from raw digis
134  FillFromRawDigis(*rawDigis);
135 
136  }
137 
138  // next we assume "ZeroSuppressed" (non-raw) => SiStripDigi
139  else if (digiType == "Processed") {
141  aEvent.getByLabel(digiProducer, digiLabel, processedDigis);
142 
143  // eval & fill histos from processed digis
144  FillFromProcessedDigis(*processedDigis);
145 
146  }
147 
148  // otherwise we have a problem
149  else {
150  throw cms::Exception("LaserAlignmentT0ProducerDQM")
151  << " ERROR ** Unknown DigiType: " << digiType << " specified in config." << std::endl;
152  }
153 
154  } // loop all input products
155 }
void FillFromRawDigis(const edm::DetSetVector< SiStripRawDigi > &)
std::vector< edm::ParameterSet > theDigiProducerList
void FillFromProcessedDigis(const edm::DetSetVector< SiStripDigi > &)
bool getByLabel(InputTag const &tag, Handle< PROD > &result) const
Definition: Event.h:501

◆ bookHistograms()

void LaserAlignmentT0ProducerDQM::bookHistograms ( DQMStore::IBooker iBooker,
edm::Run const &  ,
edm::EventSetup const &   
)
overridevirtual

Implements DQMEDAnalyzer.

Definition at line 17 of file LaserAlignmentT0ProducerDQM.cc.

References EcalCondDBWriter_cfi::beam, dqm::implementation::IBooker::book2D(), ALCARECODTCalibSynchCosmicsDQM_cff::folderName, edm::ParameterSet::getParameter(), mps_fire::i, nSignalsAT, nSignalsTECMinusR4, nSignalsTECMinusR6, nSignalsTECPlusR4, nSignalsTECPlusR6, dqm::impl::MonitorElement::setBinLabel(), dqm::implementation::NavigatorBase::setCurrentFolder(), AlCaHLTBitMon_QueryRunRegistry::string, theConfiguration, theDigiProducerList, theLowerAdcThreshold, and theUpperAdcThreshold.

19  {
20  // upper and lower treshold for a profile considered showing a signal
21  theLowerAdcThreshold = theConfiguration.getParameter<unsigned int>("LowerAdcThreshold");
22  theUpperAdcThreshold = theConfiguration.getParameter<unsigned int>("UpperAdcThreshold");
23 
24  // the list of input digi products from the cfg
25  theDigiProducerList = theConfiguration.getParameter<std::vector<edm::ParameterSet>>("DigiProducerList");
26 
29 
30  std::string nameAndTitle;
31  std::stringstream labelBuilder;
32 
33  const short nBeams = 8;
34  const short nDisks = 9;
35 
36  // for the alignment tubes modules:
37  // x: 16 modules (5*TEC-, 6*TIB, 6*TOB, 5*TEC+), all from -z to z
38  // y: 8 beams
39  nameAndTitle = "NumberOfSignals_AlignmentTubes";
40  nSignalsAT = iBooker.book2D(nameAndTitle, nameAndTitle, 22, 0, 22, nBeams, 0, nBeams);
41  // nSignalsAT->setAxisTitle( "z-pos", 1 );
42  // nSignalsAT->setAxisTitle( "beam", 2 );
43 
44  // create bin labels for the AT histograms (subdets mixed here)
45  for (unsigned int i = 1; i <= 5; ++i) {
46  labelBuilder.clear();
47  labelBuilder.str("");
48  labelBuilder << "TEC- D" << 5 - i; // TEC-
49  nSignalsAT->setBinLabel(i, labelBuilder.str(), 1);
50  labelBuilder.clear();
51  labelBuilder.str("");
52  labelBuilder << "TEC+ D" << i - 1; // TEC+
53  nSignalsAT->setBinLabel(17 + i, labelBuilder.str(), 1);
54  }
55  for (unsigned int i = 0; i < 6; ++i) {
56  labelBuilder.clear();
57  labelBuilder.str("");
58  labelBuilder << "TIB" << i; // TIB
59  nSignalsAT->setBinLabel(6 + i, labelBuilder.str(), 1);
60  labelBuilder.clear();
61  labelBuilder.str("");
62  labelBuilder << "TOB" << i; // TOB
63  nSignalsAT->setBinLabel(12 + i, labelBuilder.str(), 1);
64  }
65 
66  // for the tec internal modules:
67  // x: disk1...disk9 (from inner to outer, so z changes direction!)
68  // y: 8 beams
69  nameAndTitle = "NumberOfSignals_TEC+R4";
70  nSignalsTECPlusR4 = iBooker.book2D(nameAndTitle, nameAndTitle, nDisks, 0, nDisks, nBeams, 0, nBeams);
71  // nSignalsTECPlusR4->setAxisTitle( "disk", 1 );
72  // nSignalsTECPlusR4->setAxisTitle( "beam", 2 );
73 
74  nameAndTitle = "NumberOfSignals_TEC+R6";
75  nSignalsTECPlusR6 = iBooker.book2D(nameAndTitle, nameAndTitle, nDisks, 0, nDisks, nBeams, 0, nBeams);
76  // nSignalsTECPlusR6->setAxisTitle( "disk", 1 );
77  // nSignalsTECPlusR6->setAxisTitle( "beam", 2 );
78 
79  nameAndTitle = "NumberOfSignals_TEC-R4";
80  nSignalsTECMinusR4 = iBooker.book2D(nameAndTitle, nameAndTitle, nDisks, 0, nDisks, nBeams, 0, nBeams);
81  // nSignalsTECMinusR4->setAxisTitle( "disk", 1 );
82  // nSignalsTECMinusR4->setAxisTitle( "beam", 2 );
83 
84  nameAndTitle = "NumberOfSignals_TEC-R6";
85  nSignalsTECMinusR6 = iBooker.book2D(nameAndTitle, nameAndTitle, nDisks, 0, nDisks, nBeams, 0, nBeams);
86  // nSignalsTECMinusR6->setAxisTitle( "disk", 1 );
87  // nSignalsTECMinusR6->setAxisTitle( "beam", 2 );
88 
89  // disk labels common for all TEC internal histograms
90  for (unsigned int disk = 0; disk < 9; ++disk) {
91  labelBuilder.clear();
92  labelBuilder.str("");
93  labelBuilder << "DISK" << disk;
94  nSignalsTECPlusR4->setBinLabel(disk + 1, labelBuilder.str(), 1);
95  nSignalsTECPlusR6->setBinLabel(disk + 1, labelBuilder.str(), 1);
96  nSignalsTECMinusR4->setBinLabel(disk + 1, labelBuilder.str(), 1);
97  nSignalsTECMinusR6->setBinLabel(disk + 1, labelBuilder.str(), 1);
98  }
99 
100  // beam labels common for all histograms
101  for (unsigned int beam = 0; beam < 8; ++beam) {
102  labelBuilder.clear();
103  labelBuilder.str("");
104  labelBuilder << "BEAM" << beam;
105  nSignalsAT->setBinLabel(beam + 1, labelBuilder.str(), 2);
106  nSignalsTECPlusR4->setBinLabel(beam + 1, labelBuilder.str(), 2);
107  nSignalsTECPlusR6->setBinLabel(beam + 1, labelBuilder.str(), 2);
108  nSignalsTECMinusR4->setBinLabel(beam + 1, labelBuilder.str(), 2);
109  nSignalsTECMinusR6->setBinLabel(beam + 1, labelBuilder.str(), 2);
110  }
111 }
T getParameter(std::string const &) const
Definition: ParameterSet.h:303
virtual void setCurrentFolder(std::string const &fullpath)
Definition: DQMStore.cc:36
virtual void setBinLabel(int bin, const std::string &label, int axis=1)
set bin label for x, y or z axis (axis=1, 2, 3 respectively)
MonitorElement * book2D(TString const &name, TString const &title, int nchX, double lowX, double highX, int nchY, double lowY, double highY, FUNC onbooking=NOOP())
Definition: DQMStore.h:212
std::vector< edm::ParameterSet > theDigiProducerList

◆ FillDetectorId()

void LaserAlignmentT0ProducerDQM::FillDetectorId ( void  )
private

all the detector ids for the LAS modules hard-coded

ugly code duplication but the deadline approaches.. LATER must make this code somehow common to both LaserAlignment and LaserAlignmentT0ProducerDQM

Definition at line 478 of file LaserAlignmentT0ProducerDQM.cc.

References detectorId, LASGlobalData< T >::SetTEC2TECEntry(), LASGlobalData< T >::SetTECEntry(), LASGlobalData< T >::SetTIBTOBEntry(), and tecDoubleHitDetId.

Referenced by LaserAlignmentT0ProducerDQM().

478  {
479  // these are the detids of the TEC modules hit
480  // by the AT as well as the TEC beams
481  tecDoubleHitDetId.push_back(470307208);
482  tecDoubleHitDetId.push_back(470323592);
483  tecDoubleHitDetId.push_back(470339976);
484  tecDoubleHitDetId.push_back(470356360);
485  tecDoubleHitDetId.push_back(470372744);
486  tecDoubleHitDetId.push_back(470307976);
487  tecDoubleHitDetId.push_back(470324360);
488  tecDoubleHitDetId.push_back(470340744);
489  tecDoubleHitDetId.push_back(470357128);
490  tecDoubleHitDetId.push_back(470373512);
491  tecDoubleHitDetId.push_back(470308488);
492  tecDoubleHitDetId.push_back(470324872);
493  tecDoubleHitDetId.push_back(470341256);
494  tecDoubleHitDetId.push_back(470357640);
495  tecDoubleHitDetId.push_back(470374024);
496  tecDoubleHitDetId.push_back(470045064);
497  tecDoubleHitDetId.push_back(470061448);
498  tecDoubleHitDetId.push_back(470077832);
499  tecDoubleHitDetId.push_back(470094216);
500  tecDoubleHitDetId.push_back(470110600);
501  tecDoubleHitDetId.push_back(470045832);
502  tecDoubleHitDetId.push_back(470062216);
503  tecDoubleHitDetId.push_back(470078600);
504  tecDoubleHitDetId.push_back(470094984);
505  tecDoubleHitDetId.push_back(470111368);
506  tecDoubleHitDetId.push_back(470046344);
507  tecDoubleHitDetId.push_back(470062728);
508  tecDoubleHitDetId.push_back(470079112);
509  tecDoubleHitDetId.push_back(470095496);
510  tecDoubleHitDetId.push_back(470111880);
511 
512  // now all the modules (above included)
513 
514  // TEC+
515  detectorId.SetTECEntry(0, 0, 0, 0, 470307208);
516  detectorId.SetTECEntry(0, 0, 0, 1, 470323592);
517  detectorId.SetTECEntry(0, 0, 0, 2, 470339976);
518  detectorId.SetTECEntry(0, 0, 0, 3, 470356360);
519  detectorId.SetTECEntry(0, 0, 0, 4, 470372744);
520  detectorId.SetTECEntry(0, 0, 0, 5, 470389128);
521  detectorId.SetTECEntry(0, 0, 0, 6, 470405512);
522  detectorId.SetTECEntry(0, 0, 0, 7, 470421896);
523  detectorId.SetTECEntry(0, 0, 0, 8, 470438280);
524  detectorId.SetTECEntry(0, 0, 1, 0, 470307464);
525  detectorId.SetTECEntry(0, 0, 1, 1, 470323848);
526  detectorId.SetTECEntry(0, 0, 1, 2, 470340232);
527  detectorId.SetTECEntry(0, 0, 1, 3, 470356616);
528  detectorId.SetTECEntry(0, 0, 1, 4, 470373000);
529  detectorId.SetTECEntry(0, 0, 1, 5, 470389384);
530  detectorId.SetTECEntry(0, 0, 1, 6, 470405768);
531  detectorId.SetTECEntry(0, 0, 1, 7, 470422152);
532  detectorId.SetTECEntry(0, 0, 1, 8, 470438536);
533  detectorId.SetTECEntry(0, 0, 2, 0, 470307720);
534  detectorId.SetTECEntry(0, 0, 2, 1, 470324104);
535  detectorId.SetTECEntry(0, 0, 2, 2, 470340488);
536  detectorId.SetTECEntry(0, 0, 2, 3, 470356872);
537  detectorId.SetTECEntry(0, 0, 2, 4, 470373256);
538  detectorId.SetTECEntry(0, 0, 2, 5, 470389640);
539  detectorId.SetTECEntry(0, 0, 2, 6, 470406024);
540  detectorId.SetTECEntry(0, 0, 2, 7, 470422408);
541  detectorId.SetTECEntry(0, 0, 2, 8, 470438792);
542  detectorId.SetTECEntry(0, 0, 3, 0, 470307976);
543  detectorId.SetTECEntry(0, 0, 3, 1, 470324360);
544  detectorId.SetTECEntry(0, 0, 3, 2, 470340744);
545  detectorId.SetTECEntry(0, 0, 3, 3, 470357128);
546  detectorId.SetTECEntry(0, 0, 3, 4, 470373512);
547  detectorId.SetTECEntry(0, 0, 3, 5, 470389896);
548  detectorId.SetTECEntry(0, 0, 3, 6, 470406280);
549  detectorId.SetTECEntry(0, 0, 3, 7, 470422664);
550  detectorId.SetTECEntry(0, 0, 3, 8, 470439048);
551  detectorId.SetTECEntry(0, 0, 4, 0, 470308232);
552  detectorId.SetTECEntry(0, 0, 4, 1, 470324616);
553  detectorId.SetTECEntry(0, 0, 4, 2, 470341000);
554  detectorId.SetTECEntry(0, 0, 4, 3, 470357384);
555  detectorId.SetTECEntry(0, 0, 4, 4, 470373768);
556  detectorId.SetTECEntry(0, 0, 4, 5, 470390152);
557  detectorId.SetTECEntry(0, 0, 4, 6, 470406536);
558  detectorId.SetTECEntry(0, 0, 4, 7, 470422920);
559  detectorId.SetTECEntry(0, 0, 4, 8, 470439304);
560  detectorId.SetTECEntry(0, 0, 5, 0, 470308488);
561  detectorId.SetTECEntry(0, 0, 5, 1, 470324872);
562  detectorId.SetTECEntry(0, 0, 5, 2, 470341256);
563  detectorId.SetTECEntry(0, 0, 5, 3, 470357640);
564  detectorId.SetTECEntry(0, 0, 5, 4, 470374024);
565  detectorId.SetTECEntry(0, 0, 5, 5, 470390408);
566  detectorId.SetTECEntry(0, 0, 5, 6, 470406792);
567  detectorId.SetTECEntry(0, 0, 5, 7, 470423176);
568  detectorId.SetTECEntry(0, 0, 5, 8, 470439560);
569  detectorId.SetTECEntry(0, 0, 6, 0, 470308744);
570  detectorId.SetTECEntry(0, 0, 6, 1, 470325128);
571  detectorId.SetTECEntry(0, 0, 6, 2, 470341512);
572  detectorId.SetTECEntry(0, 0, 6, 3, 470357896);
573  detectorId.SetTECEntry(0, 0, 6, 4, 470374280);
574  detectorId.SetTECEntry(0, 0, 6, 5, 470390664);
575  detectorId.SetTECEntry(0, 0, 6, 6, 470407048);
576  detectorId.SetTECEntry(0, 0, 6, 7, 470423432);
577  detectorId.SetTECEntry(0, 0, 6, 8, 470439816);
578  detectorId.SetTECEntry(0, 0, 7, 0, 470309000);
579  detectorId.SetTECEntry(0, 0, 7, 1, 470325384);
580  detectorId.SetTECEntry(0, 0, 7, 2, 470341768);
581  detectorId.SetTECEntry(0, 0, 7, 3, 470358152);
582  detectorId.SetTECEntry(0, 0, 7, 4, 470374536);
583  detectorId.SetTECEntry(0, 0, 7, 5, 470390920);
584  detectorId.SetTECEntry(0, 0, 7, 6, 470407304);
585  detectorId.SetTECEntry(0, 0, 7, 7, 470423688);
586  detectorId.SetTECEntry(0, 0, 7, 8, 470440072);
587  detectorId.SetTECEntry(0, 1, 0, 0, 470307272);
588  detectorId.SetTECEntry(0, 1, 0, 1, 470323656);
589  detectorId.SetTECEntry(0, 1, 0, 2, 470340040);
590  detectorId.SetTECEntry(0, 1, 0, 3, 470356424);
591  detectorId.SetTECEntry(0, 1, 0, 4, 470372808);
592  detectorId.SetTECEntry(0, 1, 0, 5, 470389192);
593  detectorId.SetTECEntry(0, 1, 0, 6, 470405576);
594  detectorId.SetTECEntry(0, 1, 0, 7, 470421960);
595  detectorId.SetTECEntry(0, 1, 0, 8, 470438344);
596  detectorId.SetTECEntry(0, 1, 1, 0, 470307528);
597  detectorId.SetTECEntry(0, 1, 1, 1, 470323912);
598  detectorId.SetTECEntry(0, 1, 1, 2, 470340296);
599  detectorId.SetTECEntry(0, 1, 1, 3, 470356680);
600  detectorId.SetTECEntry(0, 1, 1, 4, 470373064);
601  detectorId.SetTECEntry(0, 1, 1, 5, 470389448);
602  detectorId.SetTECEntry(0, 1, 1, 6, 470405832);
603  detectorId.SetTECEntry(0, 1, 1, 7, 470422216);
604  detectorId.SetTECEntry(0, 1, 1, 8, 470438600);
605  detectorId.SetTECEntry(0, 1, 2, 0, 470307784);
606  detectorId.SetTECEntry(0, 1, 2, 1, 470324168);
607  detectorId.SetTECEntry(0, 1, 2, 2, 470340552);
608  detectorId.SetTECEntry(0, 1, 2, 3, 470356936);
609  detectorId.SetTECEntry(0, 1, 2, 4, 470373320);
610  detectorId.SetTECEntry(0, 1, 2, 5, 470389704);
611  detectorId.SetTECEntry(0, 1, 2, 6, 470406088);
612  detectorId.SetTECEntry(0, 1, 2, 7, 470422472);
613  detectorId.SetTECEntry(0, 1, 2, 8, 470438856);
614  detectorId.SetTECEntry(0, 1, 3, 0, 470308040);
615  detectorId.SetTECEntry(0, 1, 3, 1, 470324424);
616  detectorId.SetTECEntry(0, 1, 3, 2, 470340808);
617  detectorId.SetTECEntry(0, 1, 3, 3, 470357192);
618  detectorId.SetTECEntry(0, 1, 3, 4, 470373576);
619  detectorId.SetTECEntry(0, 1, 3, 5, 470389960);
620  detectorId.SetTECEntry(0, 1, 3, 6, 470406344);
621  detectorId.SetTECEntry(0, 1, 3, 7, 470422728);
622  detectorId.SetTECEntry(0, 1, 3, 8, 470439112);
623  detectorId.SetTECEntry(0, 1, 4, 0, 470308296);
624  detectorId.SetTECEntry(0, 1, 4, 1, 470324680);
625  detectorId.SetTECEntry(0, 1, 4, 2, 470341064);
626  detectorId.SetTECEntry(0, 1, 4, 3, 470357448);
627  detectorId.SetTECEntry(0, 1, 4, 4, 470373832);
628  detectorId.SetTECEntry(0, 1, 4, 5, 470390216);
629  detectorId.SetTECEntry(0, 1, 4, 6, 470406600);
630  detectorId.SetTECEntry(0, 1, 4, 7, 470422984);
631  detectorId.SetTECEntry(0, 1, 4, 8, 470439368);
632  detectorId.SetTECEntry(0, 1, 5, 0, 470308552);
633  detectorId.SetTECEntry(0, 1, 5, 1, 470324936);
634  detectorId.SetTECEntry(0, 1, 5, 2, 470341320);
635  detectorId.SetTECEntry(0, 1, 5, 3, 470357704);
636  detectorId.SetTECEntry(0, 1, 5, 4, 470374088);
637  detectorId.SetTECEntry(0, 1, 5, 5, 470390472);
638  detectorId.SetTECEntry(0, 1, 5, 6, 470406856);
639  detectorId.SetTECEntry(0, 1, 5, 7, 470423240);
640  detectorId.SetTECEntry(0, 1, 5, 8, 470439624);
641  detectorId.SetTECEntry(0, 1, 6, 0, 470308808);
642  detectorId.SetTECEntry(0, 1, 6, 1, 470325192);
643  detectorId.SetTECEntry(0, 1, 6, 2, 470341576);
644  detectorId.SetTECEntry(0, 1, 6, 3, 470357960);
645  detectorId.SetTECEntry(0, 1, 6, 4, 470374344);
646  detectorId.SetTECEntry(0, 1, 6, 5, 470390728);
647  detectorId.SetTECEntry(0, 1, 6, 6, 470407112);
648  detectorId.SetTECEntry(0, 1, 6, 7, 470423496);
649  detectorId.SetTECEntry(0, 1, 6, 8, 470439880);
650  detectorId.SetTECEntry(0, 1, 7, 0, 470309064);
651  detectorId.SetTECEntry(0, 1, 7, 1, 470325448);
652  detectorId.SetTECEntry(0, 1, 7, 2, 470341832);
653  detectorId.SetTECEntry(0, 1, 7, 3, 470358216);
654  detectorId.SetTECEntry(0, 1, 7, 4, 470374600);
655  detectorId.SetTECEntry(0, 1, 7, 5, 470390984);
656  detectorId.SetTECEntry(0, 1, 7, 6, 470407368);
657  detectorId.SetTECEntry(0, 1, 7, 7, 470423752);
658  detectorId.SetTECEntry(0, 1, 7, 8, 470440136);
659 
660  // TEC-
661  detectorId.SetTECEntry(1, 0, 0, 0, 470045064);
662  detectorId.SetTECEntry(1, 0, 0, 1, 470061448);
663  detectorId.SetTECEntry(1, 0, 0, 2, 470077832);
664  detectorId.SetTECEntry(1, 0, 0, 3, 470094216);
665  detectorId.SetTECEntry(1, 0, 0, 4, 470110600);
666  detectorId.SetTECEntry(1, 0, 0, 5, 470126984);
667  detectorId.SetTECEntry(1, 0, 0, 6, 470143368);
668  detectorId.SetTECEntry(1, 0, 0, 7, 470159752);
669  detectorId.SetTECEntry(1, 0, 0, 8, 470176136);
670  detectorId.SetTECEntry(1, 0, 1, 0, 470045320);
671  detectorId.SetTECEntry(1, 0, 1, 1, 470061704);
672  detectorId.SetTECEntry(1, 0, 1, 2, 470078088);
673  detectorId.SetTECEntry(1, 0, 1, 3, 470094472);
674  detectorId.SetTECEntry(1, 0, 1, 4, 470110856);
675  detectorId.SetTECEntry(1, 0, 1, 5, 470127240);
676  detectorId.SetTECEntry(1, 0, 1, 6, 470143624);
677  detectorId.SetTECEntry(1, 0, 1, 7, 470160008);
678  detectorId.SetTECEntry(1, 0, 1, 8, 470176392);
679  detectorId.SetTECEntry(1, 0, 2, 0, 470045576);
680  detectorId.SetTECEntry(1, 0, 2, 1, 470061960);
681  detectorId.SetTECEntry(1, 0, 2, 2, 470078344);
682  detectorId.SetTECEntry(1, 0, 2, 3, 470094728);
683  detectorId.SetTECEntry(1, 0, 2, 4, 470111112);
684  detectorId.SetTECEntry(1, 0, 2, 5, 470127496);
685  detectorId.SetTECEntry(1, 0, 2, 6, 470143880);
686  detectorId.SetTECEntry(1, 0, 2, 7, 470160264);
687  detectorId.SetTECEntry(1, 0, 2, 8, 470176648);
688  detectorId.SetTECEntry(1, 0, 3, 0, 470045832);
689  detectorId.SetTECEntry(1, 0, 3, 1, 470062216);
690  detectorId.SetTECEntry(1, 0, 3, 2, 470078600);
691  detectorId.SetTECEntry(1, 0, 3, 3, 470094984);
692  detectorId.SetTECEntry(1, 0, 3, 4, 470111368);
693  detectorId.SetTECEntry(1, 0, 3, 5, 470127752);
694  detectorId.SetTECEntry(1, 0, 3, 6, 470144136);
695  detectorId.SetTECEntry(1, 0, 3, 7, 470160520);
696  detectorId.SetTECEntry(1, 0, 3, 8, 470176904);
697  detectorId.SetTECEntry(1, 0, 4, 0, 470046088);
698  detectorId.SetTECEntry(1, 0, 4, 1, 470062472);
699  detectorId.SetTECEntry(1, 0, 4, 2, 470078856);
700  detectorId.SetTECEntry(1, 0, 4, 3, 470095240);
701  detectorId.SetTECEntry(1, 0, 4, 4, 470111624);
702  detectorId.SetTECEntry(1, 0, 4, 5, 470128008);
703  detectorId.SetTECEntry(1, 0, 4, 6, 470144392);
704  detectorId.SetTECEntry(1, 0, 4, 7, 470160776);
705  detectorId.SetTECEntry(1, 0, 4, 8, 470177160);
706  detectorId.SetTECEntry(1, 0, 5, 0, 470046344);
707  detectorId.SetTECEntry(1, 0, 5, 1, 470062728);
708  detectorId.SetTECEntry(1, 0, 5, 2, 470079112);
709  detectorId.SetTECEntry(1, 0, 5, 3, 470095496);
710  detectorId.SetTECEntry(1, 0, 5, 4, 470111880);
711  detectorId.SetTECEntry(1, 0, 5, 5, 470128264);
712  detectorId.SetTECEntry(1, 0, 5, 6, 470144648);
713  detectorId.SetTECEntry(1, 0, 5, 7, 470161032);
714  detectorId.SetTECEntry(1, 0, 5, 8, 470177416);
715  detectorId.SetTECEntry(1, 0, 6, 0, 470046600);
716  detectorId.SetTECEntry(1, 0, 6, 1, 470062984);
717  detectorId.SetTECEntry(1, 0, 6, 2, 470079368);
718  detectorId.SetTECEntry(1, 0, 6, 3, 470095752);
719  detectorId.SetTECEntry(1, 0, 6, 4, 470112136);
720  detectorId.SetTECEntry(1, 0, 6, 5, 470128520);
721  detectorId.SetTECEntry(1, 0, 6, 6, 470144904);
722  detectorId.SetTECEntry(1, 0, 6, 7, 470161288);
723  detectorId.SetTECEntry(1, 0, 6, 8, 470177672);
724  detectorId.SetTECEntry(1, 0, 7, 0, 470046856);
725  detectorId.SetTECEntry(1, 0, 7, 1, 470063240);
726  detectorId.SetTECEntry(1, 0, 7, 2, 470079624);
727  detectorId.SetTECEntry(1, 0, 7, 3, 470096008);
728  detectorId.SetTECEntry(1, 0, 7, 4, 470112392);
729  detectorId.SetTECEntry(1, 0, 7, 5, 470128776);
730  detectorId.SetTECEntry(1, 0, 7, 6, 470145160);
731  detectorId.SetTECEntry(1, 0, 7, 7, 470161544);
732  detectorId.SetTECEntry(1, 0, 7, 8, 470177928);
733  detectorId.SetTECEntry(1, 1, 0, 0, 470045128);
734  detectorId.SetTECEntry(1, 1, 0, 1, 470061512);
735  detectorId.SetTECEntry(1, 1, 0, 2, 470077896);
736  detectorId.SetTECEntry(1, 1, 0, 3, 470094280);
737  detectorId.SetTECEntry(1, 1, 0, 4, 470110664);
738  detectorId.SetTECEntry(1, 1, 0, 5, 470127048);
739  detectorId.SetTECEntry(1, 1, 0, 6, 470143432);
740  detectorId.SetTECEntry(1, 1, 0, 7, 470159816);
741  detectorId.SetTECEntry(1, 1, 0, 8, 470176200);
742  detectorId.SetTECEntry(1, 1, 1, 0, 470045384);
743  detectorId.SetTECEntry(1, 1, 1, 1, 470061768);
744  detectorId.SetTECEntry(1, 1, 1, 2, 470078152);
745  detectorId.SetTECEntry(1, 1, 1, 3, 470094536);
746  detectorId.SetTECEntry(1, 1, 1, 4, 470110920);
747  detectorId.SetTECEntry(1, 1, 1, 5, 470127304);
748  detectorId.SetTECEntry(1, 1, 1, 6, 470143688);
749  detectorId.SetTECEntry(1, 1, 1, 7, 470160072);
750  detectorId.SetTECEntry(1, 1, 1, 8, 470176456);
751  detectorId.SetTECEntry(1, 1, 2, 0, 470045640);
752  detectorId.SetTECEntry(1, 1, 2, 1, 470062024);
753  detectorId.SetTECEntry(1, 1, 2, 2, 470078408);
754  detectorId.SetTECEntry(1, 1, 2, 3, 470094792);
755  detectorId.SetTECEntry(1, 1, 2, 4, 470111176);
756  detectorId.SetTECEntry(1, 1, 2, 5, 470127560);
757  detectorId.SetTECEntry(1, 1, 2, 6, 470143944);
758  detectorId.SetTECEntry(1, 1, 2, 7, 470160328);
759  detectorId.SetTECEntry(1, 1, 2, 8, 470176712);
760  detectorId.SetTECEntry(1, 1, 3, 0, 470045896);
761  detectorId.SetTECEntry(1, 1, 3, 1, 470062280);
762  detectorId.SetTECEntry(1, 1, 3, 2, 470078664);
763  detectorId.SetTECEntry(1, 1, 3, 3, 470095048);
764  detectorId.SetTECEntry(1, 1, 3, 4, 470111432);
765  detectorId.SetTECEntry(1, 1, 3, 5, 470127816);
766  detectorId.SetTECEntry(1, 1, 3, 6, 470144200);
767  detectorId.SetTECEntry(1, 1, 3, 7, 470160584);
768  detectorId.SetTECEntry(1, 1, 3, 8, 470176968);
769  detectorId.SetTECEntry(1, 1, 4, 0, 470046152);
770  detectorId.SetTECEntry(1, 1, 4, 1, 470062536);
771  detectorId.SetTECEntry(1, 1, 4, 2, 470078920);
772  detectorId.SetTECEntry(1, 1, 4, 3, 470095304);
773  detectorId.SetTECEntry(1, 1, 4, 4, 470111688);
774  detectorId.SetTECEntry(1, 1, 4, 5, 470128072);
775  detectorId.SetTECEntry(1, 1, 4, 6, 470144456);
776  detectorId.SetTECEntry(1, 1, 4, 7, 470160840);
777  detectorId.SetTECEntry(1, 1, 4, 8, 470177224);
778  detectorId.SetTECEntry(1, 1, 5, 0, 470046408);
779  detectorId.SetTECEntry(1, 1, 5, 1, 470062792);
780  detectorId.SetTECEntry(1, 1, 5, 2, 470079176);
781  detectorId.SetTECEntry(1, 1, 5, 3, 470095560);
782  detectorId.SetTECEntry(1, 1, 5, 4, 470111944);
783  detectorId.SetTECEntry(1, 1, 5, 5, 470128328);
784  detectorId.SetTECEntry(1, 1, 5, 6, 470144712);
785  detectorId.SetTECEntry(1, 1, 5, 7, 470161096);
786  detectorId.SetTECEntry(1, 1, 5, 8, 470177480);
787  detectorId.SetTECEntry(1, 1, 6, 0, 470046664);
788  detectorId.SetTECEntry(1, 1, 6, 1, 470063048);
789  detectorId.SetTECEntry(1, 1, 6, 2, 470079432);
790  detectorId.SetTECEntry(1, 1, 6, 3, 470095816);
791  detectorId.SetTECEntry(1, 1, 6, 4, 470112200);
792  detectorId.SetTECEntry(1, 1, 6, 5, 470128584);
793  detectorId.SetTECEntry(1, 1, 6, 6, 470144968);
794  detectorId.SetTECEntry(1, 1, 6, 7, 470161352);
795  detectorId.SetTECEntry(1, 1, 6, 8, 470177736);
796  detectorId.SetTECEntry(1, 1, 7, 0, 470046920);
797  detectorId.SetTECEntry(1, 1, 7, 1, 470063304);
798  detectorId.SetTECEntry(1, 1, 7, 2, 470079688);
799  detectorId.SetTECEntry(1, 1, 7, 3, 470096072);
800  detectorId.SetTECEntry(1, 1, 7, 4, 470112456);
801  detectorId.SetTECEntry(1, 1, 7, 5, 470128840);
802  detectorId.SetTECEntry(1, 1, 7, 6, 470145224);
803  detectorId.SetTECEntry(1, 1, 7, 7, 470161608);
804  detectorId.SetTECEntry(1, 1, 7, 8, 470177992);
805 
806  // TIB
807  detectorId.SetTIBTOBEntry(2, 0, 0, 369174604);
808  detectorId.SetTIBTOBEntry(2, 0, 1, 369174600);
809  detectorId.SetTIBTOBEntry(2, 0, 2, 369174596);
810  detectorId.SetTIBTOBEntry(2, 0, 3, 369170500);
811  detectorId.SetTIBTOBEntry(2, 0, 4, 369170504);
812  detectorId.SetTIBTOBEntry(2, 0, 5, 369170508);
813  detectorId.SetTIBTOBEntry(2, 1, 0, 369174732);
814  detectorId.SetTIBTOBEntry(2, 1, 1, 369174728);
815  detectorId.SetTIBTOBEntry(2, 1, 2, 369174724);
816  detectorId.SetTIBTOBEntry(2, 1, 3, 369170628);
817  detectorId.SetTIBTOBEntry(2, 1, 4, 369170632);
818  detectorId.SetTIBTOBEntry(2, 1, 5, 369170636);
819  detectorId.SetTIBTOBEntry(2, 2, 0, 369174812);
820  detectorId.SetTIBTOBEntry(2, 2, 1, 369174808);
821  detectorId.SetTIBTOBEntry(2, 2, 2, 369174804);
822  detectorId.SetTIBTOBEntry(2, 2, 3, 369170708);
823  detectorId.SetTIBTOBEntry(2, 2, 4, 369170712);
824  detectorId.SetTIBTOBEntry(2, 2, 5, 369170716);
825  detectorId.SetTIBTOBEntry(2, 3, 0, 369174940);
826  detectorId.SetTIBTOBEntry(2, 3, 1, 369174936);
827  detectorId.SetTIBTOBEntry(2, 3, 2, 369174932);
828  detectorId.SetTIBTOBEntry(2, 3, 3, 369170836);
829  detectorId.SetTIBTOBEntry(2, 3, 4, 369170840);
830  detectorId.SetTIBTOBEntry(2, 3, 5, 369170844);
831  detectorId.SetTIBTOBEntry(2, 4, 0, 369175068);
832  detectorId.SetTIBTOBEntry(2, 4, 1, 369175064);
833  detectorId.SetTIBTOBEntry(2, 4, 2, 369175060);
834  detectorId.SetTIBTOBEntry(2, 4, 3, 369170964);
835  detectorId.SetTIBTOBEntry(2, 4, 4, 369170968);
836  detectorId.SetTIBTOBEntry(2, 4, 5, 369170972);
837  detectorId.SetTIBTOBEntry(2, 5, 0, 369175164);
838  detectorId.SetTIBTOBEntry(2, 5, 1, 369175160);
839  detectorId.SetTIBTOBEntry(2, 5, 2, 369175156);
840  detectorId.SetTIBTOBEntry(2, 5, 3, 369171060);
841  detectorId.SetTIBTOBEntry(2, 5, 4, 369171064);
842  detectorId.SetTIBTOBEntry(2, 5, 5, 369171068);
843  detectorId.SetTIBTOBEntry(2, 6, 0, 369175292);
844  detectorId.SetTIBTOBEntry(2, 6, 1, 369175288);
845  detectorId.SetTIBTOBEntry(2, 6, 2, 369175284);
846  detectorId.SetTIBTOBEntry(2, 6, 3, 369171188);
847  detectorId.SetTIBTOBEntry(2, 6, 4, 369171192);
848  detectorId.SetTIBTOBEntry(2, 6, 5, 369171196);
849  detectorId.SetTIBTOBEntry(2, 7, 0, 369175372);
850  detectorId.SetTIBTOBEntry(2, 7, 1, 369175368);
851  detectorId.SetTIBTOBEntry(2, 7, 2, 369175364);
852  detectorId.SetTIBTOBEntry(2, 7, 3, 369171268);
853  detectorId.SetTIBTOBEntry(2, 7, 4, 369171272);
854  detectorId.SetTIBTOBEntry(2, 7, 5, 369171276);
855 
856  // TOB
857  detectorId.SetTIBTOBEntry(3, 0, 0, 436232314);
858  detectorId.SetTIBTOBEntry(3, 0, 1, 436232306);
859  detectorId.SetTIBTOBEntry(3, 0, 2, 436232298);
860  detectorId.SetTIBTOBEntry(3, 0, 3, 436228198);
861  detectorId.SetTIBTOBEntry(3, 0, 4, 436228206);
862  detectorId.SetTIBTOBEntry(3, 0, 5, 436228214);
863  detectorId.SetTIBTOBEntry(3, 1, 0, 436232506);
864  detectorId.SetTIBTOBEntry(3, 1, 1, 436232498);
865  detectorId.SetTIBTOBEntry(3, 1, 2, 436232490);
866  detectorId.SetTIBTOBEntry(3, 1, 3, 436228390);
867  detectorId.SetTIBTOBEntry(3, 1, 4, 436228398);
868  detectorId.SetTIBTOBEntry(3, 1, 5, 436228406);
869  detectorId.SetTIBTOBEntry(3, 2, 0, 436232634);
870  detectorId.SetTIBTOBEntry(3, 2, 1, 436232626);
871  detectorId.SetTIBTOBEntry(3, 2, 2, 436232618);
872  detectorId.SetTIBTOBEntry(3, 2, 3, 436228518);
873  detectorId.SetTIBTOBEntry(3, 2, 4, 436228526);
874  detectorId.SetTIBTOBEntry(3, 2, 5, 436228534);
875  detectorId.SetTIBTOBEntry(3, 3, 0, 436232826);
876  detectorId.SetTIBTOBEntry(3, 3, 1, 436232818);
877  detectorId.SetTIBTOBEntry(3, 3, 2, 436232810);
878  detectorId.SetTIBTOBEntry(3, 3, 3, 436228710);
879  detectorId.SetTIBTOBEntry(3, 3, 4, 436228718);
880  detectorId.SetTIBTOBEntry(3, 3, 5, 436228726);
881  detectorId.SetTIBTOBEntry(3, 4, 0, 436233018);
882  detectorId.SetTIBTOBEntry(3, 4, 1, 436233010);
883  detectorId.SetTIBTOBEntry(3, 4, 2, 436233002);
884  detectorId.SetTIBTOBEntry(3, 4, 3, 436228902);
885  detectorId.SetTIBTOBEntry(3, 4, 4, 436228910);
886  detectorId.SetTIBTOBEntry(3, 4, 5, 436228918);
887  detectorId.SetTIBTOBEntry(3, 5, 0, 436233146);
888  detectorId.SetTIBTOBEntry(3, 5, 1, 436233138);
889  detectorId.SetTIBTOBEntry(3, 5, 2, 436233130);
890  detectorId.SetTIBTOBEntry(3, 5, 3, 436229030);
891  detectorId.SetTIBTOBEntry(3, 5, 4, 436229038);
892  detectorId.SetTIBTOBEntry(3, 5, 5, 436229046);
893  detectorId.SetTIBTOBEntry(3, 6, 0, 436233338);
894  detectorId.SetTIBTOBEntry(3, 6, 1, 436233330);
895  detectorId.SetTIBTOBEntry(3, 6, 2, 436233322);
896  detectorId.SetTIBTOBEntry(3, 6, 3, 436229222);
897  detectorId.SetTIBTOBEntry(3, 6, 4, 436229230);
898  detectorId.SetTIBTOBEntry(3, 6, 5, 436229238);
899  detectorId.SetTIBTOBEntry(3, 7, 0, 436233466);
900  detectorId.SetTIBTOBEntry(3, 7, 1, 436233458);
901  detectorId.SetTIBTOBEntry(3, 7, 2, 436233450);
902  detectorId.SetTIBTOBEntry(3, 7, 3, 436229350);
903  detectorId.SetTIBTOBEntry(3, 7, 4, 436229358);
904  detectorId.SetTIBTOBEntry(3, 7, 5, 436229366);
905 
906  // TEC+ AT
907  detectorId.SetTEC2TECEntry(0, 0, 0, 470307208);
908  detectorId.SetTEC2TECEntry(0, 0, 1, 470323592);
909  detectorId.SetTEC2TECEntry(0, 0, 2, 470339976);
910  detectorId.SetTEC2TECEntry(0, 0, 3, 470356360);
911  detectorId.SetTEC2TECEntry(0, 0, 4, 470372744);
912  detectorId.SetTEC2TECEntry(0, 1, 0, 470307468);
913  detectorId.SetTEC2TECEntry(0, 1, 1, 470323852);
914  detectorId.SetTEC2TECEntry(0, 1, 2, 470340236);
915  detectorId.SetTEC2TECEntry(0, 1, 3, 470356620);
916  detectorId.SetTEC2TECEntry(0, 1, 4, 470373004);
917  detectorId.SetTEC2TECEntry(0, 2, 0, 470307716);
918  detectorId.SetTEC2TECEntry(0, 2, 1, 470324100);
919  detectorId.SetTEC2TECEntry(0, 2, 2, 470340484);
920  detectorId.SetTEC2TECEntry(0, 2, 3, 470356868);
921  detectorId.SetTEC2TECEntry(0, 2, 4, 470373252);
922  detectorId.SetTEC2TECEntry(0, 3, 0, 470307976);
923  detectorId.SetTEC2TECEntry(0, 3, 1, 470324360);
924  detectorId.SetTEC2TECEntry(0, 3, 2, 470340744);
925  detectorId.SetTEC2TECEntry(0, 3, 3, 470357128);
926  detectorId.SetTEC2TECEntry(0, 3, 4, 470373512);
927  detectorId.SetTEC2TECEntry(0, 4, 0, 470308236);
928  detectorId.SetTEC2TECEntry(0, 4, 1, 470324620);
929  detectorId.SetTEC2TECEntry(0, 4, 2, 470341004);
930  detectorId.SetTEC2TECEntry(0, 4, 3, 470357388);
931  detectorId.SetTEC2TECEntry(0, 4, 4, 470373772);
932  detectorId.SetTEC2TECEntry(0, 5, 0, 470308488);
933  detectorId.SetTEC2TECEntry(0, 5, 1, 470324872);
934  detectorId.SetTEC2TECEntry(0, 5, 2, 470341256);
935  detectorId.SetTEC2TECEntry(0, 5, 3, 470357640);
936  detectorId.SetTEC2TECEntry(0, 5, 4, 470374024);
937  detectorId.SetTEC2TECEntry(0, 6, 0, 470308748);
938  detectorId.SetTEC2TECEntry(0, 6, 1, 470325132);
939  detectorId.SetTEC2TECEntry(0, 6, 2, 470341516);
940  detectorId.SetTEC2TECEntry(0, 6, 3, 470357900);
941  detectorId.SetTEC2TECEntry(0, 6, 4, 470374284);
942  detectorId.SetTEC2TECEntry(0, 7, 0, 470308996);
943  detectorId.SetTEC2TECEntry(0, 7, 1, 470325380);
944  detectorId.SetTEC2TECEntry(0, 7, 2, 470341764);
945  detectorId.SetTEC2TECEntry(0, 7, 3, 470358148);
946  detectorId.SetTEC2TECEntry(0, 7, 4, 470374532);
947 
948  // TEC- AT
949  detectorId.SetTEC2TECEntry(1, 0, 0, 470045064);
950  detectorId.SetTEC2TECEntry(1, 0, 1, 470061448);
951  detectorId.SetTEC2TECEntry(1, 0, 2, 470077832);
952  detectorId.SetTEC2TECEntry(1, 0, 3, 470094216);
953  detectorId.SetTEC2TECEntry(1, 0, 4, 470110600);
954  detectorId.SetTEC2TECEntry(1, 1, 0, 470045316);
955  detectorId.SetTEC2TECEntry(1, 1, 1, 470061700);
956  detectorId.SetTEC2TECEntry(1, 1, 2, 470078084);
957  detectorId.SetTEC2TECEntry(1, 1, 3, 470094468);
958  detectorId.SetTEC2TECEntry(1, 1, 4, 470110852);
959  detectorId.SetTEC2TECEntry(1, 2, 0, 470045580);
960  detectorId.SetTEC2TECEntry(1, 2, 1, 470061964);
961  detectorId.SetTEC2TECEntry(1, 2, 2, 470078348);
962  detectorId.SetTEC2TECEntry(1, 2, 3, 470094732);
963  detectorId.SetTEC2TECEntry(1, 2, 4, 470111116);
964  detectorId.SetTEC2TECEntry(1, 3, 0, 470045832);
965  detectorId.SetTEC2TECEntry(1, 3, 1, 470062216);
966  detectorId.SetTEC2TECEntry(1, 3, 2, 470078600);
967  detectorId.SetTEC2TECEntry(1, 3, 3, 470094984);
968  detectorId.SetTEC2TECEntry(1, 3, 4, 470111368);
969  detectorId.SetTEC2TECEntry(1, 4, 0, 470046084);
970  detectorId.SetTEC2TECEntry(1, 4, 1, 470062468);
971  detectorId.SetTEC2TECEntry(1, 4, 2, 470078852);
972  detectorId.SetTEC2TECEntry(1, 4, 3, 470095236);
973  detectorId.SetTEC2TECEntry(1, 4, 4, 470111620);
974  detectorId.SetTEC2TECEntry(1, 5, 0, 470046344);
975  detectorId.SetTEC2TECEntry(1, 5, 1, 470062728);
976  detectorId.SetTEC2TECEntry(1, 5, 2, 470079112);
977  detectorId.SetTEC2TECEntry(1, 5, 3, 470095496);
978  detectorId.SetTEC2TECEntry(1, 5, 4, 470111880);
979  detectorId.SetTEC2TECEntry(1, 6, 0, 470046596);
980  detectorId.SetTEC2TECEntry(1, 6, 1, 470062980);
981  detectorId.SetTEC2TECEntry(1, 6, 2, 470079364);
982  detectorId.SetTEC2TECEntry(1, 6, 3, 470095748);
983  detectorId.SetTEC2TECEntry(1, 6, 4, 470112132);
984  detectorId.SetTEC2TECEntry(1, 7, 0, 470046860);
985  detectorId.SetTEC2TECEntry(1, 7, 1, 470063244);
986  detectorId.SetTEC2TECEntry(1, 7, 2, 470079628);
987  detectorId.SetTEC2TECEntry(1, 7, 3, 470096012);
988  detectorId.SetTEC2TECEntry(1, 7, 4, 470112396);
989 }
void SetTEC2TECEntry(int subdetector, int beam, int tecDisk, T)
void SetTIBTOBEntry(int subdetector, int beam, int tibTobPosition, T)
void SetTECEntry(int subdetector, int tecRing, int beam, int tecDisk, T)

◆ FillFromProcessedDigis()

void LaserAlignmentT0ProducerDQM::FillFromProcessedDigis ( const edm::DetSetVector< SiStripDigi > &  aDetSetVector)
private

Definition at line 320 of file LaserAlignmentT0ProducerDQM.cc.

References SiStripDigi::adc(), EcalCondDBWriter_cfi::beam, edm::DetSetVector< T >::begin(), detectorId, edm::DetSetVector< T >::end(), dqm::impl::MonitorElement::Fill(), edm::DetSetVector< T >::find(), LASGlobalData< T >::GetTEC2TECEntry(), LASGlobalData< T >::GetTECEntry(), LASGlobalData< T >::GetTIBTOBEntry(), nSignalsAT, nSignalsTECMinusR4, nSignalsTECMinusR6, nSignalsTECPlusR4, nSignalsTECPlusR6, relativeConstraints::ring, LASGlobalLoop::TEC2TECLoop(), LASGlobalLoop::TECLoop(), theLowerAdcThreshold, theUpperAdcThreshold, and LASGlobalLoop::TIBTOBLoop().

Referenced by analyze().

320  {
321  LASGlobalLoop moduleLoop;
322  int det, ring, beam, disk, pos;
323 
324  // tec internal modules
325  det = 0;
326  ring = 0;
327  beam = 0;
328  disk = 0;
329  do {
330  bool isAboveThreshold = false;
331  bool isExceedThreshold = false;
332 
333  // retrieve the raw id of that module
334  const int detRawId = detectorId.GetTECEntry(det, ring, beam, disk);
335 
336  // search the digis for this raw id
337  edm::DetSetVector<SiStripDigi>::const_iterator detSetIter = aDetSetVector.find(detRawId);
338 
339  // processed DetSets may be missing (=empty), just skip
340  if (detSetIter == aDetSetVector.end())
341  continue;
342 
343  // access single modules' digis
344  edm::DetSet<SiStripDigi>::const_iterator digiRangeIterator = detSetIter->data.begin();
345 
346  for (; digiRangeIterator != detSetIter->data.end(); ++digiRangeIterator) {
347  const SiStripDigi &digi = *digiRangeIterator;
348 
349  // loop all digis and
350  // look for at least one strip above the threshold (-> assume a signal)
351  // look if no strip is above threshold (->assume overdrive)
352  if (digi.adc() > theLowerAdcThreshold)
353  isAboveThreshold = true;
354  if (digi.adc() > theUpperAdcThreshold)
355  isExceedThreshold = true;
356  }
357 
358  // if we have signal, fill the histos
359  if (isAboveThreshold && !isExceedThreshold) {
360  // determine the appropriate histogram & bin from the position variables
361  if (det == 0) { // TEC+
362  if (ring == 0)
363  nSignalsTECPlusR4->Fill(disk, beam); // R4
364  else
365  nSignalsTECPlusR6->Fill(disk, beam); // R6
366  } else { // TEC-
367  if (ring == 0)
368  nSignalsTECMinusR4->Fill(disk, beam); // R4
369  else
370  nSignalsTECMinusR6->Fill(disk, beam); // R6
371  }
372  }
373 
374  } while (moduleLoop.TECLoop(det, ring, beam, disk));
375 
376  // endcap modules (AT beams)
377  det = 0;
378  beam = 0;
379  disk = 0;
380  do {
381  bool isAboveThreshold = false;
382  bool isExceedThreshold = false;
383 
384  // retrieve the raw id of that module
385  const int detRawId = detectorId.GetTEC2TECEntry(det, beam, disk);
386 
387  // search the digis for this raw id
388  edm::DetSetVector<SiStripDigi>::const_iterator detSetIter = aDetSetVector.find(detRawId);
389 
390  // processed DetSets may be missing (=empty), just skip
391  if (detSetIter == aDetSetVector.end())
392  continue;
393 
394  // access single modules' digis
395  edm::DetSet<SiStripDigi>::const_iterator digiRangeIterator = detSetIter->data.begin();
396 
397  for (; digiRangeIterator != detSetIter->data.end(); ++digiRangeIterator) {
398  const SiStripDigi &digi = *digiRangeIterator;
399 
400  // loop all digis and
401  // look for at least one strip above the threshold (-> assume a signal)
402  // look if no strip is above threshold (-> assume overdrive)
403  if (digi.adc() > theLowerAdcThreshold)
404  isAboveThreshold = true;
405  if (digi.adc() > theUpperAdcThreshold)
406  isExceedThreshold = true;
407  }
408 
409  // if we have signal, fill the histos
410  if (isAboveThreshold && !isExceedThreshold) {
411  // there is only one histogram for all AT hits
412  // but the bin scheme is a little complicated:
413  // the TEC(AT) go in the first 5(-) and last 5(+) of 22 bins along x
414 
415  if (det == 1)
416  nSignalsAT->Fill(4 - disk, beam); // TEC-
417  else
418  nSignalsAT->Fill(17 + disk, beam); // TEC+
419  }
420 
421  } while (moduleLoop.TEC2TECLoop(det, beam, disk));
422 
423  // barrel modules (AT beams)
424  det = 2;
425  beam = 0;
426  pos = 0;
427  do {
428  bool isAboveThreshold = false;
429  bool isExceedThreshold = false;
430 
431  // retrieve the raw id of that module
432  const int detRawId = detectorId.GetTIBTOBEntry(det, beam, pos);
433 
434  // search the digis for this raw id
435  edm::DetSetVector<SiStripDigi>::const_iterator detSetIter = aDetSetVector.find(detRawId);
436 
437  // processed DetSets may be missing (=empty), just skip
438  if (detSetIter == aDetSetVector.end())
439  continue;
440 
441  // access single modules' digis
442  edm::DetSet<SiStripDigi>::const_iterator digiRangeIterator = detSetIter->data.begin();
443 
444  for (; digiRangeIterator != detSetIter->data.end(); ++digiRangeIterator) {
445  const SiStripDigi &digi = *digiRangeIterator;
446 
447  // loop all digis and
448  // look for at least one strip above the threshold (-> assume a signal)
449  // look if no strip is above threshold (-> assume overdrive)
450  if (digi.adc() > theLowerAdcThreshold)
451  isAboveThreshold = true;
452  if (digi.adc() > theUpperAdcThreshold)
453  isExceedThreshold = true;
454  }
455 
456  // if we have signal, fill the histos
457  if (isAboveThreshold && !isExceedThreshold) {
458  // there is only one histogram for all AT hits
459  // but the bin scheme is a little complicated:
460  // the TIB go into bins 6-11, TOB in 12-17
461 
462  if (det == 2)
463  nSignalsAT->Fill(5 + (5 - pos), beam); // TIB
464  else
465  nSignalsAT->Fill(11 + (5 - pos), beam); // TOB
466  }
467 
468  } while (moduleLoop.TIBTOBLoop(det, beam, pos));
469 }
iterator find(det_id_type id)
Definition: DetSetVector.h:264
bool TEC2TECLoop(int &, int &, int &) const
void Fill(long long x)
const uint16_t & adc() const
Definition: SiStripDigi.h:34
bool TECLoop(int &, int &, int &, int &) const
T & GetTIBTOBEntry(int subdetector, int beam, int tibTobPosition)
A Digi for the silicon strip detector, containing both strip and adc information, and suitable for st...
Definition: SiStripDigi.h:12
iterator end()
Return the off-the-end iterator.
Definition: DetSetVector.h:325
bool TIBTOBLoop(int &, int &, int &) const
T & GetTEC2TECEntry(int subdetector, int beam, int tecDisk)
T & GetTECEntry(int subdetector, int tecRing, int beam, int tecDisk)
Definition: LASGlobalData.h:84
iterator begin()
Return an iterator to the first DetSet.
Definition: DetSetVector.h:314
collection_type::const_iterator const_iterator
Definition: DetSet.h:31
collection_type::const_iterator const_iterator
Definition: DetSetVector.h:102

◆ FillFromRawDigis()

void LaserAlignmentT0ProducerDQM::FillFromRawDigis ( const edm::DetSetVector< SiStripRawDigi > &  aDetSetVector)
private

Definition at line 160 of file LaserAlignmentT0ProducerDQM.cc.

References SiStripRawDigi::adc(), EcalCondDBWriter_cfi::beam, edm::DetSetVector< T >::begin(), detectorId, edm::DetSetVector< T >::end(), Exception, dqm::impl::MonitorElement::Fill(), edm::DetSetVector< T >::find(), LASGlobalData< T >::GetTEC2TECEntry(), LASGlobalData< T >::GetTECEntry(), LASGlobalData< T >::GetTIBTOBEntry(), nSignalsAT, nSignalsTECMinusR4, nSignalsTECMinusR6, nSignalsTECPlusR4, nSignalsTECPlusR6, relativeConstraints::ring, LASGlobalLoop::TEC2TECLoop(), LASGlobalLoop::TECLoop(), theLowerAdcThreshold, theUpperAdcThreshold, and LASGlobalLoop::TIBTOBLoop().

Referenced by analyze().

160  {
161  LASGlobalLoop moduleLoop;
162  int det, ring, beam, disk, pos;
163 
164  // tec internal modules
165  det = 0;
166  ring = 0;
167  beam = 0;
168  disk = 0;
169  do {
170  bool isAboveThreshold = false;
171  bool isExceedThreshold = false;
172 
173  // retrieve the raw id of that module
174  const int detRawId = detectorId.GetTECEntry(det, ring, beam, disk);
175 
176  // search the digis for this raw id
177  edm::DetSetVector<SiStripRawDigi>::const_iterator detSetIter = aDetSetVector.find(detRawId);
178 
179  // raw DetSets may not be missing
180  if (detSetIter == aDetSetVector.end()) {
181  throw cms::Exception("[LaserAlignmentT0ProducerDQM::FillFromRawDigis]")
182  << " ** ERROR: No raw DetSet found for det: " << detRawId << "." << std::endl;
183  }
184 
185  // access single modules' digis
186  edm::DetSet<SiStripRawDigi>::const_iterator digiRangeIterator = detSetIter->data.begin();
187 
188  for (; digiRangeIterator != detSetIter->data.end(); ++digiRangeIterator) {
189  const SiStripRawDigi &digi = *digiRangeIterator;
190 
191  // loop all digis and
192  // look for at least one strip above the threshold (-> assume a signal)
193  // look if no strip is above threshold (-> assume overdrive)
194  if (digi.adc() > theLowerAdcThreshold)
195  isAboveThreshold = true;
196  if (digi.adc() > theUpperAdcThreshold)
197  isExceedThreshold = true;
198  }
199 
200  // if we have signal, fill the histos
201  if (isAboveThreshold && !isExceedThreshold) {
202  // determine the appropriate histogram & bin from the position variables
203  if (det == 0) { // TEC+
204  if (ring == 0)
205  nSignalsTECPlusR4->Fill(disk, beam); // R4
206  else
207  nSignalsTECPlusR6->Fill(disk, beam); // R6
208  } else { // TEC-
209  if (ring == 0)
210  nSignalsTECMinusR4->Fill(disk, beam); // R4
211  else
212  nSignalsTECMinusR6->Fill(disk, beam); // R6
213  }
214  }
215 
216  } while (moduleLoop.TECLoop(det, ring, beam, disk));
217 
218  // endcap modules (AT beams)
219  det = 0;
220  beam = 0;
221  disk = 0;
222  do {
223  bool isAboveThreshold = false;
224  bool isExceedThreshold = false;
225 
226  // retrieve the raw id of that module
227  const int detRawId = detectorId.GetTEC2TECEntry(det, beam, disk);
228 
229  // search the digis for this raw id
230  edm::DetSetVector<SiStripRawDigi>::const_iterator detSetIter = aDetSetVector.find(detRawId);
231 
232  // raw DetSets may not be missing
233  if (detSetIter == aDetSetVector.end()) {
234  throw cms::Exception("[LaserAlignmentT0ProducerDQM::FillFromRawDigis]")
235  << " ** ERROR: No raw DetSet found for det: " << detRawId << "." << std::endl;
236  }
237 
238  // access single modules' digis
239  edm::DetSet<SiStripRawDigi>::const_iterator digiRangeIterator = detSetIter->data.begin();
240 
241  for (; digiRangeIterator != detSetIter->data.end(); ++digiRangeIterator) {
242  const SiStripRawDigi &digi = *digiRangeIterator;
243 
244  // loop all digis and
245  // look for at least one strip above the threshold (-> assume a signal)
246  // look if no strip is above threshold (-> assume overdrive)
247  if (digi.adc() > theLowerAdcThreshold)
248  isAboveThreshold = true;
249  if (digi.adc() > theUpperAdcThreshold)
250  isExceedThreshold = true;
251  }
252 
253  // if we have signal, fill the histos
254  if (isAboveThreshold && !isExceedThreshold) {
255  // there is only one histogram for all AT hits
256  // but the bin scheme is a little complicated:
257  // the TEC(AT) go in the first 5(-) and last 5(+) of 22 bins along x
258 
259  if (det == 1)
260  nSignalsAT->Fill(4 - disk, beam); // TEC-
261  else
262  nSignalsAT->Fill(17 + disk, beam); // TEC+
263  }
264 
265  } while (moduleLoop.TEC2TECLoop(det, beam, disk));
266 
267  // barrel modules (AT beams)
268  det = 2;
269  beam = 0;
270  pos = 0;
271  do {
272  bool isAboveThreshold = false;
273  bool isExceedThreshold = false;
274 
275  // retrieve the raw id of that module
276  const int detRawId = detectorId.GetTIBTOBEntry(det, beam, pos);
277 
278  // search the digis for this raw id
279  edm::DetSetVector<SiStripRawDigi>::const_iterator detSetIter = aDetSetVector.find(detRawId);
280 
281  // raw DetSets may not be missing
282  if (detSetIter == aDetSetVector.end()) {
283  throw cms::Exception("[LaserAlignmentT0ProducerDQM::FillFromRawDigis]")
284  << " ** ERROR: No raw DetSet found for det: " << detRawId << "." << std::endl;
285  }
286 
287  // access single modules' digis
288  edm::DetSet<SiStripRawDigi>::const_iterator digiRangeIterator = detSetIter->data.begin();
289 
290  for (; digiRangeIterator != detSetIter->data.end(); ++digiRangeIterator) {
291  const SiStripRawDigi &digi = *digiRangeIterator;
292 
293  // loop all digis and
294  // look for at least one strip above the threshold (-> assume a signal)
295  // look if no strip is above threshold (-> assume overdrive)
296  if (digi.adc() > theLowerAdcThreshold)
297  isAboveThreshold = true;
298  if (digi.adc() > theUpperAdcThreshold)
299  isExceedThreshold = true;
300  }
301 
302  // if we have signal, fill the histos
303  if (isAboveThreshold && !isExceedThreshold) {
304  // there is only one histogram for all AT hits
305  // but the bin scheme is a little complicated:
306  // the TIB go into bins 6-11, TOB in 12-17
307 
308  if (det == 2)
309  nSignalsAT->Fill(5 + (5 - pos), beam); // TIB
310  else
311  nSignalsAT->Fill(11 + (5 - pos), beam); // TOB
312  }
313 
314  } while (moduleLoop.TIBTOBLoop(det, beam, pos));
315 }
iterator find(det_id_type id)
Definition: DetSetVector.h:264
bool TEC2TECLoop(int &, int &, int &) const
uint16_t adc() const
void Fill(long long x)
bool TECLoop(int &, int &, int &, int &) const
T & GetTIBTOBEntry(int subdetector, int beam, int tibTobPosition)
iterator end()
Return the off-the-end iterator.
Definition: DetSetVector.h:325
bool TIBTOBLoop(int &, int &, int &) const
T & GetTEC2TECEntry(int subdetector, int beam, int tecDisk)
T & GetTECEntry(int subdetector, int tecRing, int beam, int tecDisk)
Definition: LASGlobalData.h:84
iterator begin()
Return an iterator to the first DetSet.
Definition: DetSetVector.h:314
collection_type::const_iterator const_iterator
Definition: DetSet.h:31
collection_type::const_iterator const_iterator
Definition: DetSetVector.h:102
A Digi for the silicon strip detector, containing only adc information, and suitable for storing raw ...

Member Data Documentation

◆ detectorId

LASGlobalData<int> LaserAlignmentT0ProducerDQM::detectorId
private

◆ nSignalsAT

MonitorElement* LaserAlignmentT0ProducerDQM::nSignalsAT
private

◆ nSignalsTECMinusR4

MonitorElement* LaserAlignmentT0ProducerDQM::nSignalsTECMinusR4
private

◆ nSignalsTECMinusR6

MonitorElement* LaserAlignmentT0ProducerDQM::nSignalsTECMinusR6
private

◆ nSignalsTECPlusR4

MonitorElement* LaserAlignmentT0ProducerDQM::nSignalsTECPlusR4
private

◆ nSignalsTECPlusR6

MonitorElement* LaserAlignmentT0ProducerDQM::nSignalsTECPlusR6
private

◆ tecDoubleHitDetId

std::vector<int> LaserAlignmentT0ProducerDQM::tecDoubleHitDetId
private

Definition at line 55 of file LaserAlignmentT0ProducerDQM.h.

Referenced by FillDetectorId().

◆ theConfiguration

edm::ParameterSet LaserAlignmentT0ProducerDQM::theConfiguration
private

Definition at line 52 of file LaserAlignmentT0ProducerDQM.h.

Referenced by bookHistograms(), and LaserAlignmentT0ProducerDQM().

◆ theDigiProducerList

std::vector<edm::ParameterSet> LaserAlignmentT0ProducerDQM::theDigiProducerList
private

Definition at line 53 of file LaserAlignmentT0ProducerDQM.h.

Referenced by analyze(), and bookHistograms().

◆ theLowerAdcThreshold

unsigned int LaserAlignmentT0ProducerDQM::theLowerAdcThreshold
private

◆ theUpperAdcThreshold

unsigned int LaserAlignmentT0ProducerDQM::theUpperAdcThreshold
private