CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
List of all members | Public Member Functions | Private Member Functions | Private Attributes
LaserAlignmentT0ProducerDQM Class Reference

#include <LaserAlignmentT0ProducerDQM.h>

Inheritance diagram for LaserAlignmentT0ProducerDQM:
edm::EDAnalyzer

Public Member Functions

virtual void analyze (const edm::Event &, const edm::EventSetup &)
 
virtual void beginJob ()
 
virtual void endJob (void)
 
 LaserAlignmentT0ProducerDQM (const edm::ParameterSet &)
 
 ~LaserAlignmentT0ProducerDQM ()
 
- Public Member Functions inherited from edm::EDAnalyzer
 EDAnalyzer ()
 
std::string workerType () const
 
virtual ~EDAnalyzer ()
 

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
 
DQMStoretheDqmStore
 
unsigned int theLowerAdcThreshold
 
unsigned int theUpperAdcThreshold
 

Additional Inherited Members

- Public Types inherited from edm::EDAnalyzer
typedef EDAnalyzer ModuleType
 
typedef WorkerT< EDAnalyzerWorkerType
 
- Static Public Member Functions inherited from edm::EDAnalyzer
static const std::string & baseType ()
 
static void fillDescriptions (ConfigurationDescriptions &descriptions)
 
static void prevalidate (ConfigurationDescriptions &)
 
- Protected Member Functions inherited from edm::EDAnalyzer
CurrentProcessingContext const * currentContext () const
 

Detailed Description

Definition at line 42 of file LaserAlignmentT0ProducerDQM.h.

Constructor & Destructor Documentation

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

Definition at line 26 of file LaserAlignmentT0ProducerDQM.cc.

26  {
27 }

Member Function Documentation

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

Implements edm::EDAnalyzer.

Definition at line 137 of file LaserAlignmentT0ProducerDQM.cc.

References dtTPAnalyzer_cfg::digiLabel, EcnaSystemPythonModuleInsert_2::digiProducer, edm::hlt::Exception, FillFromProcessedDigis(), FillFromRawDigis(), edm::Event::getByLabel(), and theDigiProducerList.

137  {
138 
139 
140  // loop all input products
141  for ( std::vector<edm::ParameterSet>::iterator aDigiProducer = theDigiProducerList.begin(); aDigiProducer != theDigiProducerList.end(); ++aDigiProducer ) {
142  const std::string digiProducer = aDigiProducer->getParameter<std::string>( "DigiProducer" );
143  const std::string digiLabel = aDigiProducer->getParameter<std::string>( "DigiLabel" );
144  const std::string digiType = aDigiProducer->getParameter<std::string>( "DigiType" );
145 
146  // now a distinction of cases: raw or processed digis?
147 
148  // first we go for raw digis => SiStripRawDigi
149  if( digiType == "Raw" ) {
150 
151  // retrieve the SiStripRawDigis collection
153  aEvent.getByLabel( digiProducer, digiLabel, rawDigis );
154 
155  // eval & fill histos from raw digis
156  FillFromRawDigis( *rawDigis );
157 
158  }
159 
160 
161  // next we assume "ZeroSuppressed" (non-raw) => SiStripDigi
162  else if( digiType == "Processed" ) {
163 
165  aEvent.getByLabel( digiProducer, digiLabel, processedDigis );
166 
167  // eval & fill histos from processed digis
168  FillFromProcessedDigis( *processedDigis );
169 
170  }
171 
172 
173 
174  // otherwise we have a problem
175  else {
176  throw cms::Exception( "LaserAlignmentT0ProducerDQM" ) << " ERROR ** Unknown DigiType: " << digiType << " specified in config." << std::endl;
177  }
178 
179 
180  } // loop all input products
181 
182 
183 
184 }
void FillFromRawDigis(const edm::DetSetVector< SiStripRawDigi > &)
bool getByLabel(InputTag const &tag, Handle< PROD > &result) const
Definition: Event.h:356
std::vector< edm::ParameterSet > theDigiProducerList
void FillFromProcessedDigis(const edm::DetSetVector< SiStripDigi > &)
void LaserAlignmentT0ProducerDQM::beginJob ( void  )
virtual

Reimplemented from edm::EDAnalyzer.

Definition at line 36 of file LaserAlignmentT0ProducerDQM.cc.

References DQMStore::book2D(), edm::ParameterSet::getParameter(), i, nSignalsAT, nSignalsTECMinusR4, nSignalsTECMinusR6, nSignalsTECPlusR4, nSignalsTECPlusR6, MonitorElement::setBinLabel(), DQMStore::setCurrentFolder(), theConfiguration, theDigiProducerList, theDqmStore, theLowerAdcThreshold, and theUpperAdcThreshold.

36  {
37 
38  // upper and lower treshold for a profile considered showing a signal
39  theLowerAdcThreshold = theConfiguration.getParameter<unsigned int>( "LowerAdcThreshold" );
40  theUpperAdcThreshold = theConfiguration.getParameter<unsigned int>( "UpperAdcThreshold" );
41 
42  // the list of input digi products from the cfg
43  theDigiProducerList = theConfiguration.getParameter<std::vector<edm::ParameterSet> >( "DigiProducerList" );
44 
45  std::string folderName = theConfiguration.getParameter<std::string>( "FolderName" );
46  theDqmStore->setCurrentFolder( folderName );
47 
48  std::string nameAndTitle;
49  std::stringstream labelBuilder;
50 
51  const short nBeams = 8;
52  const short nDisks = 9;
53 
54  // for the alignment tubes modules:
55  // x: 16 modules (5*TEC-, 6*TIB, 6*TOB, 5*TEC+), all from -z to z
56  // y: 8 beams
57  nameAndTitle = "NumberOfSignals_AlignmentTubes";
58  nSignalsAT = theDqmStore->book2D( nameAndTitle, nameAndTitle, 22, 0, 22, nBeams, 0, nBeams );
59  // nSignalsAT->setAxisTitle( "z-pos", 1 );
60  // nSignalsAT->setAxisTitle( "beam", 2 );
61 
62  // create bin labels for the AT histograms (subdets mixed here)
63  for( unsigned int i = 1; i <= 5; ++i ) {
64  labelBuilder.clear(); labelBuilder.str( "" );
65  labelBuilder << "TEC- D" << 5-i; // TEC-
66  nSignalsAT->setBinLabel( i, labelBuilder.str(), 1 );
67  labelBuilder.clear(); labelBuilder.str( "" );
68  labelBuilder << "TEC+ D" << i-1; // TEC+
69  nSignalsAT->setBinLabel( 17+i, labelBuilder.str(), 1 );
70  }
71  for( unsigned int i = 0; i < 6; ++i ) {
72  labelBuilder.clear(); labelBuilder.str( "" );
73  labelBuilder << "TIB" << i; // TIB
74  nSignalsAT->setBinLabel( 6+i, labelBuilder.str(), 1 );
75  labelBuilder.clear(); labelBuilder.str( "" );
76  labelBuilder << "TOB" << i; // TOB
77  nSignalsAT->setBinLabel( 12+i, labelBuilder.str(), 1 );
78  }
79 
80 
81  // for the tec internal modules:
82  // x: disk1...disk9 (from inner to outer, so z changes direction!)
83  // y: 8 beams
84  nameAndTitle = "NumberOfSignals_TEC+R4";
85  nSignalsTECPlusR4 = theDqmStore->book2D( nameAndTitle, nameAndTitle, nDisks, 0, nDisks, nBeams, 0, nBeams );
86  // nSignalsTECPlusR4->setAxisTitle( "disk", 1 );
87  // nSignalsTECPlusR4->setAxisTitle( "beam", 2 );
88 
89  nameAndTitle = "NumberOfSignals_TEC+R6";
90  nSignalsTECPlusR6 = theDqmStore->book2D( nameAndTitle, nameAndTitle, nDisks, 0, nDisks, nBeams, 0, nBeams );
91  // nSignalsTECPlusR6->setAxisTitle( "disk", 1 );
92  // nSignalsTECPlusR6->setAxisTitle( "beam", 2 );
93 
94  nameAndTitle = "NumberOfSignals_TEC-R4";
95  nSignalsTECMinusR4 = theDqmStore->book2D( nameAndTitle, nameAndTitle, nDisks, 0, nDisks, nBeams, 0, nBeams );
96  // nSignalsTECMinusR4->setAxisTitle( "disk", 1 );
97  // nSignalsTECMinusR4->setAxisTitle( "beam", 2 );
98 
99  nameAndTitle = "NumberOfSignals_TEC-R6";
100  nSignalsTECMinusR6 = theDqmStore->book2D( nameAndTitle, nameAndTitle, nDisks, 0, nDisks, nBeams, 0, nBeams );
101  // nSignalsTECMinusR6->setAxisTitle( "disk", 1 );
102  // nSignalsTECMinusR6->setAxisTitle( "beam", 2 );
103 
104 
105 
106  // disk labels common for all TEC internal histograms
107  for( unsigned int disk = 0; disk < 9; ++disk ) {
108  labelBuilder.clear(); labelBuilder.str( "" );
109  labelBuilder << "DISK" << disk;
110  nSignalsTECPlusR4->setBinLabel( disk+1, labelBuilder.str(), 1 );
111  nSignalsTECPlusR6->setBinLabel( disk+1, labelBuilder.str(), 1 );
112  nSignalsTECMinusR4->setBinLabel( disk+1, labelBuilder.str(), 1 );
113  nSignalsTECMinusR6->setBinLabel( disk+1, labelBuilder.str(), 1 );
114  }
115 
116 
117  // beam labels common for all histograms
118  for( unsigned int beam = 0; beam < 8; ++beam ) {
119  labelBuilder.clear(); labelBuilder.str( "" );
120  labelBuilder << "BEAM" << beam;
121  nSignalsAT->setBinLabel( beam+1, labelBuilder.str(), 2 );
122  nSignalsTECPlusR4->setBinLabel( beam+1, labelBuilder.str(), 2 );
123  nSignalsTECPlusR6->setBinLabel( beam+1, labelBuilder.str(), 2 );
124  nSignalsTECMinusR4->setBinLabel( beam+1, labelBuilder.str(), 2 );
125  nSignalsTECMinusR6->setBinLabel( beam+1, labelBuilder.str(), 2 );
126  }
127 
128 }
T getParameter(std::string const &) const
int i
Definition: DBlmapReader.cc:9
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)
std::vector< edm::ParameterSet > theDigiProducerList
MonitorElement * book2D(const char *name, const char *title, int nchX, double lowX, double highX, int nchY, double lowY, double highY)
Book 2D histogram.
Definition: DQMStore.cc:845
void setCurrentFolder(const std::string &fullpath)
Definition: DQMStore.cc:429
void LaserAlignmentT0ProducerDQM::endJob ( void  )
virtual

Reimplemented from edm::EDAnalyzer.

Definition at line 193 of file LaserAlignmentT0ProducerDQM.cc.

References edm::ParameterSet::getParameter(), dumpDBToFile_GT_ttrig_cfg::outputFileName, DQMStore::save(), DQMStore::showDirStructure(), theConfiguration, and theDqmStore.

193  {
194 
195  bool writeToPlainROOTFile = theConfiguration.getParameter<bool>( "OutputInPlainROOT" );
196 
197  if( writeToPlainROOTFile ) {
198  std::string outputFileName = theConfiguration.getParameter<std::string>( "PlainOutputFileName" );
200  theDqmStore->save( outputFileName );
201  }
202 
203 }
T getParameter(std::string const &) const
void save(const std::string &filename, const std::string &path="", const std::string &pattern="", const std::string &rewrite="", SaveReferenceTag ref=SaveWithReference, int minStatus=dqm::qstatus::STATUS_OK, const std::string &fileupdate="RECREATE")
Definition: DQMStore.cc:2113
void showDirStructure(void) const
Definition: DQMStore.cc:2761
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 540 of file LaserAlignmentT0ProducerDQM.cc.

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

Referenced by LaserAlignmentT0ProducerDQM().

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

Definition at line 380 of file LaserAlignmentT0ProducerDQM.cc.

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

Referenced by analyze().

380  {
381 
382  LASGlobalLoop moduleLoop;
383  int det, ring, beam, disk, pos;
384 
385  // tec internal modules
386  det = 0; ring = 0; beam = 0; disk = 0;
387  do {
388 
389  bool isAboveThreshold = false;
390  bool isExceedThreshold = false;
391 
392  // retrieve the raw id of that module
393  const int detRawId = detectorId.GetTECEntry( det, ring, beam, disk );
394 
395  // search the digis for this raw id
396  edm::DetSetVector<SiStripDigi>::const_iterator detSetIter = aDetSetVector.find( detRawId );
397 
398  // processed DetSets may be missing (=empty), just skip
399  if( detSetIter == aDetSetVector.end() ) continue;
400 
401  // access single modules' digis
402  edm::DetSet<SiStripDigi>::const_iterator digiRangeIterator = detSetIter->data.begin();
403 
404  for( ; digiRangeIterator != detSetIter->data.end(); ++digiRangeIterator ) {
405  const SiStripDigi& digi = *digiRangeIterator;
406 
407  // loop all digis and
408  // look for at least one strip above the threshold (-> assume a signal)
409  // look if no strip is above threshold (->assume overdrive)
410  if( digi.adc() > theLowerAdcThreshold ) isAboveThreshold = true;
411  if( digi.adc() > theUpperAdcThreshold ) isExceedThreshold = true;
412 
413  }
414 
415  // if we have signal, fill the histos
416  if( isAboveThreshold && !isExceedThreshold ) {
417 
418  // determine the appropriate histogram & bin from the position variables
419  if( det == 0 ) { // TEC+
420  if( ring == 0 ) nSignalsTECPlusR4->Fill( disk, beam ); // R4
421  else nSignalsTECPlusR6->Fill( disk, beam ); // R6
422  }
423  else { // TEC-
424  if( ring == 0 ) nSignalsTECMinusR4->Fill( disk, beam ); // R4
425  else nSignalsTECMinusR6->Fill( disk, beam ); // R6
426  }
427 
428  }
429 
430 
431  } while( moduleLoop.TECLoop( det, ring, beam, disk ) );
432 
433 
434 
435  // endcap modules (AT beams)
436  det = 0; beam = 0; disk = 0;
437  do {
438 
439  bool isAboveThreshold = false;
440  bool isExceedThreshold = false;
441 
442  // retrieve the raw id of that module
443  const int detRawId = detectorId.GetTEC2TECEntry( det, beam, disk );
444 
445  // search the digis for this raw id
446  edm::DetSetVector<SiStripDigi>::const_iterator detSetIter = aDetSetVector.find( detRawId );
447 
448  // processed DetSets may be missing (=empty), just skip
449  if( detSetIter == aDetSetVector.end() ) continue;
450 
451  // access single modules' digis
452  edm::DetSet<SiStripDigi>::const_iterator digiRangeIterator = detSetIter->data.begin();
453 
454  for( ; digiRangeIterator != detSetIter->data.end(); ++digiRangeIterator ) {
455  const SiStripDigi& digi = *digiRangeIterator;
456 
457  // loop all digis and
458  // look for at least one strip above the threshold (-> assume a signal)
459  // look if no strip is above threshold (-> assume overdrive)
460  if( digi.adc() > theLowerAdcThreshold ) isAboveThreshold = true;
461  if( digi.adc() > theUpperAdcThreshold ) isExceedThreshold = true;
462 
463  }
464 
465  // if we have signal, fill the histos
466  if( isAboveThreshold && !isExceedThreshold ) {
467 
468  // there is only one histogram for all AT hits
469  // but the bin scheme is a little complicated:
470  // the TEC(AT) go in the first 5(-) and last 5(+) of 22 bins along x
471 
472  if( det == 1 ) nSignalsAT->Fill( 4 - disk, beam ); // TEC-
473  else nSignalsAT->Fill( 17 + disk, beam ); // TEC+
474 
475  }
476 
477 
478  } while( moduleLoop.TEC2TECLoop( det, beam, disk ) );
479 
480 
481 
482  // barrel modules (AT beams)
483  det = 2; beam = 0; pos = 0;
484  do {
485 
486  bool isAboveThreshold = false;
487  bool isExceedThreshold = false;
488 
489  // retrieve the raw id of that module
490  const int detRawId = detectorId.GetTIBTOBEntry( det, beam, pos );
491 
492  // search the digis for this raw id
493  edm::DetSetVector<SiStripDigi>::const_iterator detSetIter = aDetSetVector.find( detRawId );
494 
495  // processed DetSets may be missing (=empty), just skip
496  if( detSetIter == aDetSetVector.end() ) continue;
497 
498  // access single modules' digis
499  edm::DetSet<SiStripDigi>::const_iterator digiRangeIterator = detSetIter->data.begin();
500 
501  for( ; digiRangeIterator != detSetIter->data.end(); ++digiRangeIterator ) {
502  const SiStripDigi& digi = *digiRangeIterator;
503 
504  // loop all digis and
505  // look for at least one strip above the threshold (-> assume a signal)
506  // look if no strip is above threshold (-> assume overdrive)
507  if( digi.adc() > theLowerAdcThreshold ) isAboveThreshold = true;
508  if( digi.adc() > theUpperAdcThreshold ) isExceedThreshold = true;
509 
510  }
511 
512  // if we have signal, fill the histos
513  if( isAboveThreshold && !isExceedThreshold ) {
514 
515  // there is only one histogram for all AT hits
516  // but the bin scheme is a little complicated:
517  // the TIB go into bins 6-11, TOB in 12-17
518 
519  if( det == 2 ) nSignalsAT->Fill( 5 + (5 - pos), beam ); // TIB
520  else nSignalsAT->Fill( 11 + (5 - pos), beam ); // TOB
521 
522  }
523 
524 
525  } while( moduleLoop.TIBTOBLoop( det, beam, pos ) );
526 
527 
528 }
iterator find(det_id_type id)
Definition: DetSetVector.h:285
void Fill(long long x)
bool TEC2TECLoop(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:356
T & GetTEC2TECEntry(int subdetector, int beam, int tecDisk)
T & GetTECEntry(int subdetector, int tecRing, int beam, int tecDisk)
Definition: LASGlobalData.h:91
bool TECLoop(int &, int &, int &, int &) const
bool TIBTOBLoop(int &, int &, int &) const
iterator begin()
Return an iterator to the first DetSet.
Definition: DetSetVector.h:341
collection_type::const_iterator const_iterator
Definition: DetSet.h:34
collection_type::const_iterator const_iterator
Definition: DetSetVector.h:106
const uint16_t & adc() const
Definition: SiStripDigi.h:41
void LaserAlignmentT0ProducerDQM::FillFromRawDigis ( const edm::DetSetVector< SiStripRawDigi > &  aDetSetVector)
private

Definition at line 212 of file LaserAlignmentT0ProducerDQM.cc.

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

Referenced by analyze().

212  {
213 
214  LASGlobalLoop moduleLoop;
215  int det, ring, beam, disk, pos;
216 
217 
218 
219 
220  // tec internal modules
221  det = 0; ring = 0; beam = 0; disk = 0;
222  do {
223 
224  bool isAboveThreshold = false;
225  bool isExceedThreshold = false;
226 
227  // retrieve the raw id of that module
228  const int detRawId = detectorId.GetTECEntry( det, ring, beam, disk );
229 
230  // search the digis for this raw id
231  edm::DetSetVector<SiStripRawDigi>::const_iterator detSetIter = aDetSetVector.find( detRawId );
232 
233  // raw DetSets may not be missing
234  if( detSetIter == aDetSetVector.end() ) {
235  throw cms::Exception( "[LaserAlignmentT0ProducerDQM::FillFromRawDigis]" ) << " ** 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 ) isAboveThreshold = true;
248  if( digi.adc() > theUpperAdcThreshold ) isExceedThreshold = true;
249 
250  }
251 
252  // if we have signal, fill the histos
253  if( isAboveThreshold && !isExceedThreshold ) {
254 
255  // determine the appropriate histogram & bin from the position variables
256  if( det == 0 ) { // TEC+
257  if( ring == 0 ) nSignalsTECPlusR4->Fill( disk, beam ); // R4
258  else nSignalsTECPlusR6->Fill( disk, beam ); // R6
259  }
260  else { // TEC-
261  if( ring == 0 ) nSignalsTECMinusR4->Fill( disk, beam ); // R4
262  else nSignalsTECMinusR6->Fill( disk, beam ); // R6
263  }
264 
265  }
266 
267 
268  } while( moduleLoop.TECLoop( det, ring, beam, disk ) );
269 
270 
271 
272 
273  // endcap modules (AT beams)
274  det = 0; beam = 0; disk = 0;
275  do {
276 
277  bool isAboveThreshold = false;
278  bool isExceedThreshold = false;
279 
280  // retrieve the raw id of that module
281  const int detRawId = detectorId.GetTEC2TECEntry( det, beam, disk );
282 
283  // search the digis for this raw id
284  edm::DetSetVector<SiStripRawDigi>::const_iterator detSetIter = aDetSetVector.find( detRawId );
285 
286  // raw DetSets may not be missing
287  if( detSetIter == aDetSetVector.end() ) {
288  throw cms::Exception( "[LaserAlignmentT0ProducerDQM::FillFromRawDigis]" ) << " ** ERROR: No raw DetSet found for det: " << detRawId << "." << std::endl;
289  }
290 
291  // access single modules' digis
292  edm::DetSet<SiStripRawDigi>::const_iterator digiRangeIterator = detSetIter->data.begin();
293 
294  for( ; digiRangeIterator != detSetIter->data.end(); ++digiRangeIterator ) {
295  const SiStripRawDigi& digi = *digiRangeIterator;
296 
297  // loop all digis and
298  // look for at least one strip above the threshold (-> assume a signal)
299  // look if no strip is above threshold (-> assume overdrive)
300  if( digi.adc() > theLowerAdcThreshold ) isAboveThreshold = true;
301  if( digi.adc() > theUpperAdcThreshold ) isExceedThreshold = true;
302 
303  }
304 
305  // if we have signal, fill the histos
306  if( isAboveThreshold && !isExceedThreshold ) {
307 
308  // there is only one histogram for all AT hits
309  // but the bin scheme is a little complicated:
310  // the TEC(AT) go in the first 5(-) and last 5(+) of 22 bins along x
311 
312  if( det == 1 ) nSignalsAT->Fill( 4 - disk, beam ); // TEC-
313  else nSignalsAT->Fill( 17 + disk, beam ); // TEC+
314 
315  }
316 
317 
318  } while( moduleLoop.TEC2TECLoop( det, beam, disk ) );
319 
320 
321 
322  // barrel modules (AT beams)
323  det = 2; beam = 0; pos = 0;
324  do {
325 
326  bool isAboveThreshold = false;
327  bool isExceedThreshold = false;
328 
329  // retrieve the raw id of that module
330  const int detRawId = detectorId.GetTIBTOBEntry( det, beam, pos );
331 
332  // search the digis for this raw id
333  edm::DetSetVector<SiStripRawDigi>::const_iterator detSetIter = aDetSetVector.find( detRawId );
334 
335  // raw DetSets may not be missing
336  if( detSetIter == aDetSetVector.end() ) {
337  throw cms::Exception( "[LaserAlignmentT0ProducerDQM::FillFromRawDigis]" ) << " ** ERROR: No raw DetSet found for det: " << detRawId << "." << std::endl;
338  }
339 
340  // access single modules' digis
341  edm::DetSet<SiStripRawDigi>::const_iterator digiRangeIterator = detSetIter->data.begin();
342 
343  for( ; digiRangeIterator != detSetIter->data.end(); ++digiRangeIterator ) {
344  const SiStripRawDigi& digi = *digiRangeIterator;
345 
346  // loop all digis and
347  // look for at least one strip above the threshold (-> assume a signal)
348  // look if no strip is above threshold (-> assume overdrive)
349  if( digi.adc() > theLowerAdcThreshold ) isAboveThreshold = true;
350  if( digi.adc() > theUpperAdcThreshold ) isExceedThreshold = true;
351 
352  }
353 
354  // if we have signal, fill the histos
355  if( isAboveThreshold && !isExceedThreshold ) {
356 
357  // there is only one histogram for all AT hits
358  // but the bin scheme is a little complicated:
359  // the TIB go into bins 6-11, TOB in 12-17
360 
361  if( det == 2 ) nSignalsAT->Fill( 5 + (5 - pos), beam ); // TIB
362  else nSignalsAT->Fill( 11 + (5 - pos), beam ); // TOB
363 
364  }
365 
366 
367  } while( moduleLoop.TIBTOBLoop( det, beam, pos ) );
368 
369 
370 
371 }
const uint16_t & adc() const
iterator find(det_id_type id)
Definition: DetSetVector.h:285
void Fill(long long x)
bool TEC2TECLoop(int &, int &, int &) const
T & GetTIBTOBEntry(int subdetector, int beam, int tibTobPosition)
iterator end()
Return the off-the-end iterator.
Definition: DetSetVector.h:356
T & GetTEC2TECEntry(int subdetector, int beam, int tecDisk)
T & GetTECEntry(int subdetector, int tecRing, int beam, int tecDisk)
Definition: LASGlobalData.h:91
bool TECLoop(int &, int &, int &, int &) const
bool TIBTOBLoop(int &, int &, int &) const
iterator begin()
Return an iterator to the first DetSet.
Definition: DetSetVector.h:341
collection_type::const_iterator const_iterator
Definition: DetSet.h:34
collection_type::const_iterator const_iterator
Definition: DetSetVector.h:106
A Digi for the silicon strip detector, containing only adc information, and suitable for storing raw ...

Member Data Documentation

LASGlobalData<int> LaserAlignmentT0ProducerDQM::detectorId
private
MonitorElement* LaserAlignmentT0ProducerDQM::nSignalsAT
private
MonitorElement* LaserAlignmentT0ProducerDQM::nSignalsTECMinusR4
private
MonitorElement* LaserAlignmentT0ProducerDQM::nSignalsTECMinusR6
private
MonitorElement* LaserAlignmentT0ProducerDQM::nSignalsTECPlusR4
private
MonitorElement* LaserAlignmentT0ProducerDQM::nSignalsTECPlusR6
private
std::vector<int> LaserAlignmentT0ProducerDQM::tecDoubleHitDetId
private

Definition at line 62 of file LaserAlignmentT0ProducerDQM.h.

Referenced by FillDetectorId().

edm::ParameterSet LaserAlignmentT0ProducerDQM::theConfiguration
private

Definition at line 59 of file LaserAlignmentT0ProducerDQM.h.

Referenced by beginJob(), endJob(), and LaserAlignmentT0ProducerDQM().

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

Definition at line 60 of file LaserAlignmentT0ProducerDQM.h.

Referenced by analyze(), and beginJob().

DQMStore* LaserAlignmentT0ProducerDQM::theDqmStore
private

Definition at line 58 of file LaserAlignmentT0ProducerDQM.h.

Referenced by beginJob(), endJob(), and LaserAlignmentT0ProducerDQM().

unsigned int LaserAlignmentT0ProducerDQM::theLowerAdcThreshold
private
unsigned int LaserAlignmentT0ProducerDQM::theUpperAdcThreshold
private