Back to home page

Project CMSSW displayed by LXR

 
 

    


File indexing completed on 2024-04-06 11:56:25

0001 /**\class LaserAlignmentT0Producer LaserAlignmentT0Producer.cc NewAlignment/LaserAlignmentT0Producer/src/LaserAlignmentT0Producer.cc
0002 
0003  Description: AlCaRECO producer (TkLAS data filter) running on T0
0004 
0005  Implementation:
0006      <Notes on implementation>
0007 */
0008 //
0009 // Original Author:  Jan Olzem
0010 //         Created:  Wed Feb 13 17:30:40 CET 2008
0011 // $Id: LaserAlignmentT0Producer.h,v 1.2 2008/03/03 09:43:32 olzem Exp $
0012 //
0013 //
0014 
0015 // system include files
0016 #include <memory>
0017 #include <algorithm>
0018 
0019 // user include files
0020 #include "FWCore/Framework/interface/Frameworkfwd.h"
0021 #include "FWCore/Framework/interface/global/EDProducer.h"
0022 #include "FWCore/Framework/interface/Event.h"
0023 #include "FWCore/Framework/interface/MakerMacros.h"
0024 #include "FWCore/ParameterSet/interface/ParameterSet.h"
0025 
0026 #include "DataFormats/Common/interface/DetSetVector.h"
0027 #include "DataFormats/SiStripDigi/interface/SiStripDigi.h"
0028 #include "DataFormats/SiStripDigi/interface/SiStripRawDigi.h"
0029 
0030 //
0031 // class decleration
0032 //
0033 
0034 class LaserAlignmentT0Producer : public edm::global::EDProducer<> {
0035 public:
0036   explicit LaserAlignmentT0Producer(const edm::ParameterSet&);
0037   ~LaserAlignmentT0Producer() override;
0038 
0039 private:
0040   void beginJob() override;
0041   void produce(edm::StreamID, edm::Event&, const edm::EventSetup&) const override;
0042   //void produce(edm::Event&, const edm::EventSetup&) override;
0043   void FillDetIds(void);
0044 
0045   // container for cfg data
0046   std::vector<edm::ParameterSet> digiProducerList;
0047   std::string digiProducer;
0048   std::string digiLabel;
0049   std::string digiType;
0050 
0051   // this one stores the det ids for all the 434 LAS modules
0052   std::vector<unsigned int> theLasDetIds;
0053 };
0054 
0055 ///
0056 /// Loops all input SiStripDigi or SiStripRawDigi collections
0057 /// and announces the corresponding product
0058 ///
0059 LaserAlignmentT0Producer::LaserAlignmentT0Producer(const edm::ParameterSet& iConfig) {
0060   // alias for the Branches in the output file
0061   std::string alias(iConfig.getParameter<std::string>("@module_label"));
0062 
0063   // the list of input digi products from the cfg
0064   digiProducerList = iConfig.getParameter<std::vector<edm::ParameterSet>>("DigiProducerList");
0065 
0066   // loop all input products
0067   for (const auto& aDigiProducer : digiProducerList) {
0068     std::string digiProducer = aDigiProducer.getParameter<std::string>("DigiProducer");
0069     std::string digiLabel = aDigiProducer.getParameter<std::string>("DigiLabel");
0070     std::string digiType = aDigiProducer.getParameter<std::string>("DigiType");
0071 
0072     // check if raw/processed digis in this collection
0073     if (digiType == "Raw") {
0074       produces<edm::DetSetVector<SiStripRawDigi>>(digiLabel).setBranchAlias(alias + "siStripRawDigis");
0075     } else if (digiType == "Processed") {  // "ZeroSuppressed" digis (non-raw)
0076       produces<edm::DetSetVector<SiStripDigi>>(digiLabel).setBranchAlias(alias + "siStripDigis");
0077     } else {
0078       throw cms::Exception("LaserAlignmentT0Producer")
0079           << "ERROR ** Unknown DigiType: " << digiType << " specified in cfg file" << std::endl;
0080     }
0081   }
0082 }
0083 
0084 ///
0085 ///
0086 ///
0087 LaserAlignmentT0Producer::~LaserAlignmentT0Producer() = default;
0088 
0089 ///
0090 /// outline:
0091 /// * loops alls input strip digi products
0092 /// * branches depending on if it contains SiStripDigi or SiStripRawDigi
0093 /// * for each product: selects only LAS module DetSets
0094 ///   and copies them to new DetSetVector
0095 ///
0096 void LaserAlignmentT0Producer::produce(edm::StreamID id, edm::Event& iEvent, const edm::EventSetup& iSetup) const {
0097   //void LaserAlignmentT0Producer::produce(edm::Event& iEvent, const edm::EventSetup& iSetup) {
0098   using namespace edm;
0099 
0100   // loop all input products
0101   for (const auto& aDigiProducer : digiProducerList) {
0102     std::string digiProducer = aDigiProducer.getParameter<std::string>("DigiProducer");
0103     std::string digiLabel = aDigiProducer.getParameter<std::string>("DigiLabel");
0104     std::string digiType = aDigiProducer.getParameter<std::string>("DigiType");
0105 
0106     // now a distinction of cases: raw or processed digis?
0107 
0108     // first we go for raw digis => SiStripRawDigi
0109     if (digiType == "Raw") {
0110       // retrieve the SiStripRawDigis collection
0111       edm::Handle<edm::DetSetVector<SiStripRawDigi>> theStripDigis;
0112       iEvent.getByLabel(digiProducer, digiLabel, theStripDigis);
0113 
0114       // empty container
0115       std::vector<edm::DetSet<SiStripRawDigi>> theDigiVector;
0116 
0117       // loop the incoming DetSetVector
0118       for (edm::DetSetVector<SiStripRawDigi>::const_iterator aDetSet = theStripDigis->begin();
0119            aDetSet != theStripDigis->end();
0120            ++aDetSet) {
0121         // is the current DetSet that of a LAS module?
0122         if (find(theLasDetIds.begin(), theLasDetIds.end(), aDetSet->detId()) != theLasDetIds.end()) {
0123           // yes it's a LAS module, so copy the Digis to the output
0124 
0125           // a DetSet for output
0126           edm::DetSet<SiStripRawDigi> outputDetSet(aDetSet->detId());
0127 
0128           // copy all the digis to the output DetSet. Unfortunately, there's no copy constructor..
0129           for (edm::DetSet<SiStripRawDigi>::const_iterator aDigi = aDetSet->begin(); aDigi != aDetSet->end(); ++aDigi) {
0130             outputDetSet.push_back(*aDigi);
0131           }
0132 
0133           // onto the later DetSetVector
0134           theDigiVector.push_back(outputDetSet);
0135         }
0136       }
0137 
0138       // create the output collection for the DetSetVector
0139       // write output to file
0140       iEvent.put(std::make_unique<edm::DetSetVector<SiStripRawDigi>>(theDigiVector), digiLabel);
0141 
0142     }
0143 
0144     // then we assume "ZeroSuppressed" (non-raw) => SiStripDigi
0145     // and do exactly the same as above
0146     else if (digiType == "Processed") {
0147       edm::Handle<edm::DetSetVector<SiStripDigi>> theStripDigis;
0148       iEvent.getByLabel(digiProducer, digiLabel, theStripDigis);
0149 
0150       std::vector<edm::DetSet<SiStripDigi>> theDigiVector;
0151 
0152       for (edm::DetSetVector<SiStripDigi>::const_iterator aDetSet = theStripDigis->begin();
0153            aDetSet != theStripDigis->end();
0154            ++aDetSet) {
0155         if (find(theLasDetIds.begin(), theLasDetIds.end(), aDetSet->detId()) != theLasDetIds.end()) {
0156           edm::DetSet<SiStripDigi> outputDetSet(aDetSet->detId());
0157           for (edm::DetSet<SiStripDigi>::const_iterator aDigi = aDetSet->begin(); aDigi != aDetSet->end(); ++aDigi) {
0158             outputDetSet.push_back(*aDigi);
0159           }
0160           theDigiVector.push_back(outputDetSet);
0161         }
0162       }
0163 
0164       iEvent.put(std::make_unique<edm::DetSetVector<SiStripDigi>>(theDigiVector), digiLabel);
0165 
0166     }
0167 
0168     else {
0169       throw cms::Exception("LaserAlignmentT0Producer")
0170           << "ERROR ** Unknown DigiType: " << digiType << " specified in cfg file" << std::endl;
0171     }
0172 
0173   }  // loop all input products
0174 }
0175 
0176 ///
0177 ///
0178 ///
0179 void LaserAlignmentT0Producer::beginJob() {
0180   // fill the vector with LAS det ids
0181   FillDetIds();
0182 }
0183 
0184 ///
0185 /// fill a vector with all the det ids of the 434
0186 /// siStrip modules relevant to the LAS
0187 ///
0188 /// (ugly mechanism, should later be
0189 /// replaced by some hash-based)
0190 ///
0191 void LaserAlignmentT0Producer::FillDetIds(void) {
0192   theLasDetIds.resize(0);
0193 
0194   // TEC+ internal alignment modules
0195   theLasDetIds.push_back(470307208);
0196   theLasDetIds.push_back(470323592);
0197   theLasDetIds.push_back(470339976);
0198   theLasDetIds.push_back(470356360);
0199   theLasDetIds.push_back(470372744);
0200   theLasDetIds.push_back(470389128);
0201   theLasDetIds.push_back(470405512);
0202   theLasDetIds.push_back(470421896);
0203   theLasDetIds.push_back(470438280);
0204   theLasDetIds.push_back(470307464);
0205   theLasDetIds.push_back(470323848);
0206   theLasDetIds.push_back(470340232);
0207   theLasDetIds.push_back(470356616);
0208   theLasDetIds.push_back(470373000);
0209   theLasDetIds.push_back(470389384);
0210   theLasDetIds.push_back(470405768);
0211   theLasDetIds.push_back(470422152);
0212   theLasDetIds.push_back(470438536);
0213   theLasDetIds.push_back(470307720);
0214   theLasDetIds.push_back(470324104);
0215   theLasDetIds.push_back(470340488);
0216   theLasDetIds.push_back(470356872);
0217   theLasDetIds.push_back(470373256);
0218   theLasDetIds.push_back(470389640);
0219   theLasDetIds.push_back(470406024);
0220   theLasDetIds.push_back(470422408);
0221   theLasDetIds.push_back(470438792);
0222   theLasDetIds.push_back(470307976);
0223   theLasDetIds.push_back(470324360);
0224   theLasDetIds.push_back(470340744);
0225   theLasDetIds.push_back(470357128);
0226   theLasDetIds.push_back(470373512);
0227   theLasDetIds.push_back(470389896);
0228   theLasDetIds.push_back(470406280);
0229   theLasDetIds.push_back(470422664);
0230   theLasDetIds.push_back(470439048);
0231   theLasDetIds.push_back(470308232);
0232   theLasDetIds.push_back(470324616);
0233   theLasDetIds.push_back(470341000);
0234   theLasDetIds.push_back(470357384);
0235   theLasDetIds.push_back(470373768);
0236   theLasDetIds.push_back(470390152);
0237   theLasDetIds.push_back(470406536);
0238   theLasDetIds.push_back(470422920);
0239   theLasDetIds.push_back(470439304);
0240   theLasDetIds.push_back(470308488);
0241   theLasDetIds.push_back(470324872);
0242   theLasDetIds.push_back(470341256);
0243   theLasDetIds.push_back(470357640);
0244   theLasDetIds.push_back(470374024);
0245   theLasDetIds.push_back(470390408);
0246   theLasDetIds.push_back(470406792);
0247   theLasDetIds.push_back(470423176);
0248   theLasDetIds.push_back(470439560);
0249   theLasDetIds.push_back(470308744);
0250   theLasDetIds.push_back(470325128);
0251   theLasDetIds.push_back(470341512);
0252   theLasDetIds.push_back(470357896);
0253   theLasDetIds.push_back(470374280);
0254   theLasDetIds.push_back(470390664);
0255   theLasDetIds.push_back(470407048);
0256   theLasDetIds.push_back(470423432);
0257   theLasDetIds.push_back(470439816);
0258   theLasDetIds.push_back(470309000);
0259   theLasDetIds.push_back(470325384);
0260   theLasDetIds.push_back(470341768);
0261   theLasDetIds.push_back(470358152);
0262   theLasDetIds.push_back(470374536);
0263   theLasDetIds.push_back(470390920);
0264   theLasDetIds.push_back(470407304);
0265   theLasDetIds.push_back(470423688);
0266   theLasDetIds.push_back(470440072);
0267   theLasDetIds.push_back(470307272);
0268   theLasDetIds.push_back(470323656);
0269   theLasDetIds.push_back(470340040);
0270   theLasDetIds.push_back(470356424);
0271   theLasDetIds.push_back(470372808);
0272   theLasDetIds.push_back(470389192);
0273   theLasDetIds.push_back(470405576);
0274   theLasDetIds.push_back(470421960);
0275   theLasDetIds.push_back(470438344);
0276   theLasDetIds.push_back(470307528);
0277   theLasDetIds.push_back(470323912);
0278   theLasDetIds.push_back(470340296);
0279   theLasDetIds.push_back(470356680);
0280   theLasDetIds.push_back(470373064);
0281   theLasDetIds.push_back(470389448);
0282   theLasDetIds.push_back(470405832);
0283   theLasDetIds.push_back(470422216);
0284   theLasDetIds.push_back(470438600);
0285   theLasDetIds.push_back(470307784);
0286   theLasDetIds.push_back(470324168);
0287   theLasDetIds.push_back(470340552);
0288   theLasDetIds.push_back(470356936);
0289   theLasDetIds.push_back(470373320);
0290   theLasDetIds.push_back(470389704);
0291   theLasDetIds.push_back(470406088);
0292   theLasDetIds.push_back(470422472);
0293   theLasDetIds.push_back(470438856);
0294   theLasDetIds.push_back(470308040);
0295   theLasDetIds.push_back(470324424);
0296   theLasDetIds.push_back(470340808);
0297   theLasDetIds.push_back(470357192);
0298   theLasDetIds.push_back(470373576);
0299   theLasDetIds.push_back(470389960);
0300   theLasDetIds.push_back(470406344);
0301   theLasDetIds.push_back(470422728);
0302   theLasDetIds.push_back(470439112);
0303   theLasDetIds.push_back(470308296);
0304   theLasDetIds.push_back(470324680);
0305   theLasDetIds.push_back(470341064);
0306   theLasDetIds.push_back(470357448);
0307   theLasDetIds.push_back(470373832);
0308   theLasDetIds.push_back(470390216);
0309   theLasDetIds.push_back(470406600);
0310   theLasDetIds.push_back(470422984);
0311   theLasDetIds.push_back(470439368);
0312   theLasDetIds.push_back(470308552);
0313   theLasDetIds.push_back(470324936);
0314   theLasDetIds.push_back(470341320);
0315   theLasDetIds.push_back(470357704);
0316   theLasDetIds.push_back(470374088);
0317   theLasDetIds.push_back(470390472);
0318   theLasDetIds.push_back(470406856);
0319   theLasDetIds.push_back(470423240);
0320   theLasDetIds.push_back(470439624);
0321   theLasDetIds.push_back(470308808);
0322   theLasDetIds.push_back(470325192);
0323   theLasDetIds.push_back(470341576);
0324   theLasDetIds.push_back(470357960);
0325   theLasDetIds.push_back(470374344);
0326   theLasDetIds.push_back(470390728);
0327   theLasDetIds.push_back(470407112);
0328   theLasDetIds.push_back(470423496);
0329   theLasDetIds.push_back(470439880);
0330   theLasDetIds.push_back(470309064);
0331   theLasDetIds.push_back(470325448);
0332   theLasDetIds.push_back(470341832);
0333   theLasDetIds.push_back(470358216);
0334   theLasDetIds.push_back(470374600);
0335   theLasDetIds.push_back(470390984);
0336   theLasDetIds.push_back(470407368);
0337   theLasDetIds.push_back(470423752);
0338   theLasDetIds.push_back(470440136);
0339 
0340   // TEC- internal alignment modules
0341   theLasDetIds.push_back(470045064);
0342   theLasDetIds.push_back(470061448);
0343   theLasDetIds.push_back(470077832);
0344   theLasDetIds.push_back(470094216);
0345   theLasDetIds.push_back(470110600);
0346   theLasDetIds.push_back(470126984);
0347   theLasDetIds.push_back(470143368);
0348   theLasDetIds.push_back(470159752);
0349   theLasDetIds.push_back(470176136);
0350   theLasDetIds.push_back(470045320);
0351   theLasDetIds.push_back(470061704);
0352   theLasDetIds.push_back(470078088);
0353   theLasDetIds.push_back(470094472);
0354   theLasDetIds.push_back(470110856);
0355   theLasDetIds.push_back(470127240);
0356   theLasDetIds.push_back(470143624);
0357   theLasDetIds.push_back(470160008);
0358   theLasDetIds.push_back(470176392);
0359   theLasDetIds.push_back(470045576);
0360   theLasDetIds.push_back(470061960);
0361   theLasDetIds.push_back(470078344);
0362   theLasDetIds.push_back(470094728);
0363   theLasDetIds.push_back(470111112);
0364   theLasDetIds.push_back(470127496);
0365   theLasDetIds.push_back(470143880);
0366   theLasDetIds.push_back(470160264);
0367   theLasDetIds.push_back(470176648);
0368   theLasDetIds.push_back(470045832);
0369   theLasDetIds.push_back(470062216);
0370   theLasDetIds.push_back(470078600);
0371   theLasDetIds.push_back(470094984);
0372   theLasDetIds.push_back(470111368);
0373   theLasDetIds.push_back(470127752);
0374   theLasDetIds.push_back(470144136);
0375   theLasDetIds.push_back(470160520);
0376   theLasDetIds.push_back(470176904);
0377   theLasDetIds.push_back(470046088);
0378   theLasDetIds.push_back(470062472);
0379   theLasDetIds.push_back(470078856);
0380   theLasDetIds.push_back(470095240);
0381   theLasDetIds.push_back(470111624);
0382   theLasDetIds.push_back(470128008);
0383   theLasDetIds.push_back(470144392);
0384   theLasDetIds.push_back(470160776);
0385   theLasDetIds.push_back(470177160);
0386   theLasDetIds.push_back(470046344);
0387   theLasDetIds.push_back(470062728);
0388   theLasDetIds.push_back(470079112);
0389   theLasDetIds.push_back(470095496);
0390   theLasDetIds.push_back(470111880);
0391   theLasDetIds.push_back(470128264);
0392   theLasDetIds.push_back(470144648);
0393   theLasDetIds.push_back(470161032);
0394   theLasDetIds.push_back(470177416);
0395   theLasDetIds.push_back(470046600);
0396   theLasDetIds.push_back(470062984);
0397   theLasDetIds.push_back(470079368);
0398   theLasDetIds.push_back(470095752);
0399   theLasDetIds.push_back(470112136);
0400   theLasDetIds.push_back(470128520);
0401   theLasDetIds.push_back(470144904);
0402   theLasDetIds.push_back(470161288);
0403   theLasDetIds.push_back(470177672);
0404   theLasDetIds.push_back(470046856);
0405   theLasDetIds.push_back(470063240);
0406   theLasDetIds.push_back(470079624);
0407   theLasDetIds.push_back(470096008);
0408   theLasDetIds.push_back(470112392);
0409   theLasDetIds.push_back(470128776);
0410   theLasDetIds.push_back(470145160);
0411   theLasDetIds.push_back(470161544);
0412   theLasDetIds.push_back(470177928);
0413   theLasDetIds.push_back(470045128);
0414   theLasDetIds.push_back(470061512);
0415   theLasDetIds.push_back(470077896);
0416   theLasDetIds.push_back(470094280);
0417   theLasDetIds.push_back(470110664);
0418   theLasDetIds.push_back(470127048);
0419   theLasDetIds.push_back(470143432);
0420   theLasDetIds.push_back(470159816);
0421   theLasDetIds.push_back(470176200);
0422   theLasDetIds.push_back(470045384);
0423   theLasDetIds.push_back(470061768);
0424   theLasDetIds.push_back(470078152);
0425   theLasDetIds.push_back(470094536);
0426   theLasDetIds.push_back(470110920);
0427   theLasDetIds.push_back(470127304);
0428   theLasDetIds.push_back(470143688);
0429   theLasDetIds.push_back(470160072);
0430   theLasDetIds.push_back(470176456);
0431   theLasDetIds.push_back(470045640);
0432   theLasDetIds.push_back(470062024);
0433   theLasDetIds.push_back(470078408);
0434   theLasDetIds.push_back(470094792);
0435   theLasDetIds.push_back(470111176);
0436   theLasDetIds.push_back(470127560);
0437   theLasDetIds.push_back(470143944);
0438   theLasDetIds.push_back(470160328);
0439   theLasDetIds.push_back(470176712);
0440   theLasDetIds.push_back(470045896);
0441   theLasDetIds.push_back(470062280);
0442   theLasDetIds.push_back(470078664);
0443   theLasDetIds.push_back(470095048);
0444   theLasDetIds.push_back(470111432);
0445   theLasDetIds.push_back(470127816);
0446   theLasDetIds.push_back(470144200);
0447   theLasDetIds.push_back(470160584);
0448   theLasDetIds.push_back(470176968);
0449   theLasDetIds.push_back(470046152);
0450   theLasDetIds.push_back(470062536);
0451   theLasDetIds.push_back(470078920);
0452   theLasDetIds.push_back(470095304);
0453   theLasDetIds.push_back(470111688);
0454   theLasDetIds.push_back(470128072);
0455   theLasDetIds.push_back(470144456);
0456   theLasDetIds.push_back(470160840);
0457   theLasDetIds.push_back(470177224);
0458   theLasDetIds.push_back(470046408);
0459   theLasDetIds.push_back(470062792);
0460   theLasDetIds.push_back(470079176);
0461   theLasDetIds.push_back(470095560);
0462   theLasDetIds.push_back(470111944);
0463   theLasDetIds.push_back(470128328);
0464   theLasDetIds.push_back(470144712);
0465   theLasDetIds.push_back(470161096);
0466   theLasDetIds.push_back(470177480);
0467   theLasDetIds.push_back(470046664);
0468   theLasDetIds.push_back(470063048);
0469   theLasDetIds.push_back(470079432);
0470   theLasDetIds.push_back(470095816);
0471   theLasDetIds.push_back(470112200);
0472   theLasDetIds.push_back(470128584);
0473   theLasDetIds.push_back(470144968);
0474   theLasDetIds.push_back(470161352);
0475   theLasDetIds.push_back(470177736);
0476   theLasDetIds.push_back(470046920);
0477   theLasDetIds.push_back(470063304);
0478   theLasDetIds.push_back(470079688);
0479   theLasDetIds.push_back(470096072);
0480   theLasDetIds.push_back(470112456);
0481   theLasDetIds.push_back(470128840);
0482   theLasDetIds.push_back(470145224);
0483   theLasDetIds.push_back(470161608);
0484   theLasDetIds.push_back(470177992);
0485 
0486   // TEC+ alignment tube modules
0487   theLasDetIds.push_back(470307468);
0488   theLasDetIds.push_back(470323852);
0489   theLasDetIds.push_back(470340236);
0490   theLasDetIds.push_back(470356620);
0491   theLasDetIds.push_back(470373004);
0492   theLasDetIds.push_back(470307716);
0493   theLasDetIds.push_back(470324100);
0494   theLasDetIds.push_back(470340484);
0495   theLasDetIds.push_back(470356868);
0496   theLasDetIds.push_back(470373252);
0497   theLasDetIds.push_back(470308236);
0498   theLasDetIds.push_back(470324620);
0499   theLasDetIds.push_back(470341004);
0500   theLasDetIds.push_back(470357388);
0501   theLasDetIds.push_back(470373772);
0502   theLasDetIds.push_back(470308748);
0503   theLasDetIds.push_back(470325132);
0504   theLasDetIds.push_back(470341516);
0505   theLasDetIds.push_back(470357900);
0506   theLasDetIds.push_back(470374284);
0507   theLasDetIds.push_back(470308996);
0508   theLasDetIds.push_back(470325380);
0509   theLasDetIds.push_back(470341764);
0510   theLasDetIds.push_back(470358148);
0511   theLasDetIds.push_back(470374532);
0512 
0513   // TEC- alignment tube modules
0514   theLasDetIds.push_back(470045316);
0515   theLasDetIds.push_back(470061700);
0516   theLasDetIds.push_back(470078084);
0517   theLasDetIds.push_back(470094468);
0518   theLasDetIds.push_back(470110852);
0519   theLasDetIds.push_back(470045580);
0520   theLasDetIds.push_back(470061964);
0521   theLasDetIds.push_back(470078348);
0522   theLasDetIds.push_back(470094732);
0523   theLasDetIds.push_back(470111116);
0524   theLasDetIds.push_back(470046084);
0525   theLasDetIds.push_back(470062468);
0526   theLasDetIds.push_back(470078852);
0527   theLasDetIds.push_back(470095236);
0528   theLasDetIds.push_back(470111620);
0529   theLasDetIds.push_back(470046596);
0530   theLasDetIds.push_back(470062980);
0531   theLasDetIds.push_back(470079364);
0532   theLasDetIds.push_back(470095748);
0533   theLasDetIds.push_back(470112132);
0534   theLasDetIds.push_back(470046860);
0535   theLasDetIds.push_back(470063244);
0536   theLasDetIds.push_back(470079628);
0537   theLasDetIds.push_back(470096012);
0538   theLasDetIds.push_back(470112396);
0539 
0540   // TIB alignment tube modules
0541   theLasDetIds.push_back(369174604);
0542   theLasDetIds.push_back(369174600);
0543   theLasDetIds.push_back(369174596);
0544   theLasDetIds.push_back(369170500);
0545   theLasDetIds.push_back(369170504);
0546   theLasDetIds.push_back(369170508);
0547   theLasDetIds.push_back(369174732);
0548   theLasDetIds.push_back(369174728);
0549   theLasDetIds.push_back(369174724);
0550   theLasDetIds.push_back(369170628);
0551   theLasDetIds.push_back(369170632);
0552   theLasDetIds.push_back(369170636);
0553   theLasDetIds.push_back(369174812);
0554   theLasDetIds.push_back(369174808);
0555   theLasDetIds.push_back(369174804);
0556   theLasDetIds.push_back(369170708);
0557   theLasDetIds.push_back(369170712);
0558   theLasDetIds.push_back(369170716);
0559   theLasDetIds.push_back(369174940);
0560   theLasDetIds.push_back(369174936);
0561   theLasDetIds.push_back(369174932);
0562   theLasDetIds.push_back(369170836);
0563   theLasDetIds.push_back(369170840);
0564   theLasDetIds.push_back(369170844);
0565   theLasDetIds.push_back(369175068);
0566   theLasDetIds.push_back(369175064);
0567   theLasDetIds.push_back(369175060);
0568   theLasDetIds.push_back(369170964);
0569   theLasDetIds.push_back(369170968);
0570   theLasDetIds.push_back(369170972);
0571   theLasDetIds.push_back(369175164);
0572   theLasDetIds.push_back(369175160);
0573   theLasDetIds.push_back(369175156);
0574   theLasDetIds.push_back(369171060);
0575   theLasDetIds.push_back(369171064);
0576   theLasDetIds.push_back(369171068);
0577   theLasDetIds.push_back(369175292);
0578   theLasDetIds.push_back(369175288);
0579   theLasDetIds.push_back(369175284);
0580   theLasDetIds.push_back(369171188);
0581   theLasDetIds.push_back(369171192);
0582   theLasDetIds.push_back(369171196);
0583   theLasDetIds.push_back(369175372);
0584   theLasDetIds.push_back(369175368);
0585   theLasDetIds.push_back(369175364);
0586   theLasDetIds.push_back(369171268);
0587   theLasDetIds.push_back(369171272);
0588   theLasDetIds.push_back(369171276);
0589 
0590   // TOB alignment tube modules
0591   theLasDetIds.push_back(436232314);
0592   theLasDetIds.push_back(436232306);
0593   theLasDetIds.push_back(436232298);
0594   theLasDetIds.push_back(436228198);
0595   theLasDetIds.push_back(436228206);
0596   theLasDetIds.push_back(436228214);
0597   theLasDetIds.push_back(436232506);
0598   theLasDetIds.push_back(436232498);
0599   theLasDetIds.push_back(436232490);
0600   theLasDetIds.push_back(436228390);
0601   theLasDetIds.push_back(436228398);
0602   theLasDetIds.push_back(436228406);
0603   theLasDetIds.push_back(436232634);
0604   theLasDetIds.push_back(436232626);
0605   theLasDetIds.push_back(436232618);
0606   theLasDetIds.push_back(436228518);
0607   theLasDetIds.push_back(436228526);
0608   theLasDetIds.push_back(436228534);
0609   theLasDetIds.push_back(436232826);
0610   theLasDetIds.push_back(436232818);
0611   theLasDetIds.push_back(436232810);
0612   theLasDetIds.push_back(436228710);
0613   theLasDetIds.push_back(436228718);
0614   theLasDetIds.push_back(436228726);
0615   theLasDetIds.push_back(436233018);
0616   theLasDetIds.push_back(436233010);
0617   theLasDetIds.push_back(436233002);
0618   theLasDetIds.push_back(436228902);
0619   theLasDetIds.push_back(436228910);
0620   theLasDetIds.push_back(436228918);
0621   theLasDetIds.push_back(436233146);
0622   theLasDetIds.push_back(436233138);
0623   theLasDetIds.push_back(436233130);
0624   theLasDetIds.push_back(436229030);
0625   theLasDetIds.push_back(436229038);
0626   theLasDetIds.push_back(436229046);
0627   theLasDetIds.push_back(436233338);
0628   theLasDetIds.push_back(436233330);
0629   theLasDetIds.push_back(436233322);
0630   theLasDetIds.push_back(436229222);
0631   theLasDetIds.push_back(436229230);
0632   theLasDetIds.push_back(436229238);
0633   theLasDetIds.push_back(436233466);
0634   theLasDetIds.push_back(436233458);
0635   theLasDetIds.push_back(436233450);
0636   theLasDetIds.push_back(436229350);
0637   theLasDetIds.push_back(436229358);
0638   theLasDetIds.push_back(436229366);
0639 }
0640 
0641 //define this as a plug-in
0642 DEFINE_FWK_MODULE(LaserAlignmentT0Producer);