CMS 3D CMS Logo

SubdetFEDSelector.cc

Go to the documentation of this file.
00001 
00002 #include "Calibration/HcalIsolatedTrackReco/interface/SubdetFEDSelector.h"
00003 
00004 SubdetFEDSelector::SubdetFEDSelector(const edm::ParameterSet& iConfig)
00005 {
00006   getEcal_=iConfig.getParameter<bool>("getECAL");
00007   getStrip_=iConfig.getParameter<bool>("getSiStrip");
00008   getPixel_=iConfig.getParameter<bool>("getSiPixel");
00009   getHcal_=iConfig.getParameter<bool>("getHCAL");
00010   getMuon_=iConfig.getParameter<bool>("getMuon");
00011   getTrigger_=iConfig.getParameter<bool>("getTrigger");
00012   
00013   rawInLabel_=iConfig.getParameter<edm::InputTag>("rawInputLabel");
00014 
00015   produces<FEDRawDataCollection>();
00016   
00017 }
00018 
00019 SubdetFEDSelector::~SubdetFEDSelector()
00020 {
00021 }
00022 
00023 void
00024 SubdetFEDSelector::produce(edm::Event& iEvent, const edm::EventSetup& iSetup)
00025 {
00026 
00027   std::auto_ptr<FEDRawDataCollection> producedData(new FEDRawDataCollection);
00028 
00029   edm::Handle<FEDRawDataCollection> rawIn;
00030   iEvent.getByLabel(rawInLabel_,rawIn);
00031  
00032   std::vector<int> selFEDs;
00033 
00034   if (getEcal_)
00035     {
00036       for (int i=FEDNumbering::getEcalFEDIds().first; i<=FEDNumbering::getEcalFEDIds().second; i++)
00037         {
00038           selFEDs.push_back(i);
00039         }
00040       for (int i=FEDNumbering::getPreShowerFEDIds().first; i<=FEDNumbering::getPreShowerFEDIds().second; i++)
00041         {
00042           selFEDs.push_back(i);
00043         }
00044     }
00045 
00046   if (getMuon_)
00047     {
00048       for (int i=FEDNumbering::getCSCFEDIds().first; i<=FEDNumbering::getCSCFEDIds().second; i++)
00049         {
00050           selFEDs.push_back(i);
00051         }
00052   for (int i=FEDNumbering::getCSCTFFEDIds().first; i<=FEDNumbering::getCSCTFFEDIds().second; i++)
00053         {
00054           selFEDs.push_back(i);
00055         }
00056   for (int i=FEDNumbering::getDTFEDIds().first; i<=FEDNumbering::getDTFEDIds().second; i++)
00057         {
00058           selFEDs.push_back(i);
00059         }
00060   for (int i=FEDNumbering::getDTTFFEDIds().first; i<=FEDNumbering::getDTTFFEDIds().second; i++)
00061         {
00062           selFEDs.push_back(i);
00063         }
00064   for (int i=FEDNumbering::getRPCFEDIds().first; i<=FEDNumbering::getRPCFEDIds().second; i++)
00065         {
00066           selFEDs.push_back(i);
00067         }
00068   for (int i=FEDNumbering::getCSCDDUFEDIds().first; i<=FEDNumbering::getCSCDDUFEDIds().second; i++)
00069         {
00070           selFEDs.push_back(i);
00071         }
00072   for (int i=FEDNumbering::getCSCContingencyFEDIds().first; i<=FEDNumbering::getCSCContingencyFEDIds().second; i++)
00073         {
00074           selFEDs.push_back(i);
00075         }
00076   for (int i=FEDNumbering::getCSCTFSPFEDIds().first; i<=FEDNumbering::getCSCTFSPFEDIds().second; i++)
00077         {
00078           selFEDs.push_back(i);
00079         }
00080     }
00081 
00082 
00083   if (getHcal_)
00084     {
00085       for (int i=FEDNumbering::getHcalFEDIds().first; i<=FEDNumbering::getHcalFEDIds().second; i++)
00086         {
00087           selFEDs.push_back(i);
00088         }
00089     }
00090 
00091   
00092   if (getStrip_)
00093     {
00094       for (int i=FEDNumbering::getSiStripFEDIds().first;  i<=FEDNumbering::getSiStripFEDIds().second; i++)
00095         {
00096           selFEDs.push_back(i);
00097         }
00098     }
00099 
00100   
00101   if (getPixel_)
00102     {
00103       for (int i=FEDNumbering::getSiPixelFEDIds().first;  i<=FEDNumbering::getSiPixelFEDIds().second; i++)
00104         {
00105           selFEDs.push_back(i);
00106         }
00107     }
00108   
00109   if (getTrigger_)
00110     {
00111       for (int i=FEDNumbering::getTriggerEGTPFEDIds().first;  i<=FEDNumbering::getTriggerEGTPFEDIds().second; i++)
00112         {
00113           selFEDs.push_back(i);
00114         }
00115       for (int i=FEDNumbering::getTriggerGTPFEDIds().first;  i<=FEDNumbering::getTriggerGTPFEDIds().second; i++)
00116         {
00117           selFEDs.push_back(i);
00118         }
00119       for (int i=FEDNumbering::getTriggerLTCFEDIds().first;  i<=FEDNumbering::getTriggerLTCFEDIds().second; i++)
00120         {
00121           selFEDs.push_back(i);
00122         }
00123       for (int i=FEDNumbering::getTriggerLTCmtccFEDIds().first;  i<=FEDNumbering::getTriggerLTCmtccFEDIds().second; i++)
00124         {
00125           selFEDs.push_back(i);
00126         }
00127       for (int i=FEDNumbering::getTriggerGCTFEDIds().first;  i<=FEDNumbering::getTriggerGCTFEDIds().second; i++)
00128         {
00129           selFEDs.push_back(i);
00130         }
00131 
00132       for (int i=FEDNumbering::getTriggerLTCTriggerFEDID().first;  i<=FEDNumbering::getTriggerLTCTriggerFEDID().second; i++)
00133         {
00134           selFEDs.push_back(i);
00135         }
00136 
00137       for (int i=FEDNumbering::getTriggerLTCHCALFEDID().first;  i<=FEDNumbering::getTriggerLTCHCALFEDID().second; i++)
00138         {
00139           selFEDs.push_back(i);
00140         }
00141 
00142       for (int i=FEDNumbering::getTriggerLTCSiStripFEDID().first;  i<=FEDNumbering::getTriggerLTCSiStripFEDID().second; i++)
00143         {
00144           selFEDs.push_back(i);
00145         }
00146 
00147       for (int i=FEDNumbering::getTriggerLTCECALFEDID().first;  i<=FEDNumbering::getTriggerLTCECALFEDID().second; i++)
00148         {
00149           selFEDs.push_back(i);
00150         }
00151 
00152       for (int i=FEDNumbering::getTriggerLTCTotemCastorFEDID().first;  i<=FEDNumbering::getTriggerLTCTotemCastorFEDID().second; i++)
00153         {
00154           selFEDs.push_back(i);
00155         }
00156       for (int i=FEDNumbering::getTriggerLTCRPCFEDID().first;  i<=FEDNumbering::getTriggerLTCRPCFEDID().second; i++)
00157         {
00158           selFEDs.push_back(i);
00159         }
00160       
00161       for (int i=FEDNumbering::getTriggerLTCCSCFEDID().first;  i<=FEDNumbering::getTriggerLTCCSCFEDID().second; i++)
00162         {
00163           selFEDs.push_back(i);
00164         }
00165       for (int i=FEDNumbering::getTriggerLTCDTFEDID().first;  i<=FEDNumbering::getTriggerLTCDTFEDID().second; i++)
00166         {
00167           selFEDs.push_back(i);
00168         }
00169       for (int i=FEDNumbering::getTriggerLTCSiPixelFEDID().first;  i<=FEDNumbering::getTriggerLTCSiPixelFEDID().second; i++)
00170         {
00171           selFEDs.push_back(i);
00172         }
00173 
00174     }
00175   
00176   for (int i=FEDNumbering::getDAQeFEDFEDIds().first;  i<=FEDNumbering::getDAQeFEDFEDIds().second; i++)
00177     {
00178       selFEDs.push_back(i);
00179     }
00180   
00181 
00182   // Copying:
00183   const FEDRawDataCollection *rdc=rawIn.product();
00184   
00185   //   if ( ( rawData[i].provenance()->processName() != e.processHistory().rbegin()->processName() ) )
00186   //       continue ; // skip all raw collections not produced by the current process
00187   
00188   for ( int j=0; j< FEDNumbering::lastFEDId(); ++j ) 
00189     {
00190       bool rightFED=false;
00191       for (uint32_t k=0; k<selFEDs.size(); k++)
00192         {
00193           if (j==selFEDs[k])
00194            {
00195              rightFED=true;
00196            }
00197        }
00198      if (!rightFED) continue;
00199      const FEDRawData & fedData = rdc->FEDData(j);
00200      size_t size=fedData.size();
00201      
00202      if ( size > 0 ) 
00203        {
00204        // this fed has data -- lets copy it
00205          FEDRawData & fedDataProd = producedData->FEDData(j);
00206          if ( fedDataProd.size() != 0 ) {
00207 //         std::cout << " More than one FEDRawDataCollection with data in FED ";
00208 //         std::cout << j << " Skipping the 2nd\n";
00209            continue;
00210          }
00211          fedDataProd.resize(size);
00212          unsigned char *dataProd=fedDataProd.data();
00213          const unsigned char *data=fedData.data();
00214          for ( unsigned int k=0; k<size; ++k ) {
00215            dataProd[k]=data[k];
00216          }
00217        }
00218    }
00219 
00220  iEvent.put(producedData);
00221 
00222 }
00223 
00224 
00225 // ------------ method called once each job just before starting event loop  ------------
00226 void SubdetFEDSelector::beginJob(const edm::EventSetup&)
00227 {
00228 }
00229 
00230 // ------------ method called once each job just after ending the event loop  ------------
00231 void SubdetFEDSelector::endJob() {
00232 }

Generated on Tue Jun 9 17:25:38 2009 for CMSSW by  doxygen 1.5.4