CMS 3D CMS Logo

/data/refman/pasoursint/CMSSW_5_2_9/src/RecoLuminosity/ROOTSchema/plugins/LumiFileWriter.cc

Go to the documentation of this file.
00001 
00002 // -*- C++ -*-
00003 //
00004 // Package:    LumiFileWriter
00005 // Class:      LumiFileWriter
00006 // 
00014 //
00015 // Original Author:  Adam Hunt
00016 //         Created:  Sun May 11 14:21:30 EDT 2008
00017 // $Id: LumiFileWriter.cc,v 1.11 2009/12/14 22:24:02 wmtan Exp $
00018 //
00019 //
00020 
00021 #include "RecoLuminosity/ROOTSchema/interface/LumiFileWriter.hh"
00022 #include "RecoLuminosity/ROOTSchema/interface/ROOTSchema.h"
00023 #include "RecoLuminosity/TCPReceiver/interface/TCPReceiver.h"
00024 
00025 #include "RecoLuminosity/TCPReceiver/interface/LumiStructures.hh"
00026 
00027 // CMSSW
00028 #include "FWCore/Framework/interface/Frameworkfwd.h"
00029 #include "FWCore/Framework/interface/EDAnalyzer.h"
00030 //#include "FWCore/Framework/interface/Event.h"
00031 #include "FWCore/Framework/interface/MakerMacros.h"
00032 #include "FWCore/ParameterSet/interface/ParameterSet.h"
00033 
00034 // STL
00035 #include <iostream>
00036 
00037 LumiFileWriter::LumiFileWriter(const edm::ParameterSet& iConfig){
00038 
00039    // TCP Receiver configuration
00040    unsigned int listenPort = iConfig.getUntrackedParameter< unsigned int >("SourcePort", 51002);
00041    unsigned int AquireMode = iConfig.getUntrackedParameter< unsigned int >("AquireMode",  0);
00042    DistribIP1 = iConfig.getUntrackedParameter< std::string  >("PrimaryHLXDAQIP", "vmepcS2F17-18");
00043    DistribIP2 = iConfig.getUntrackedParameter< std::string  >("SecondaryHLXDAQIP", "vmepcS2F17-19");
00044    reconTime               = iConfig.getUntrackedParameter< unsigned int >("ReconnectionTime",60);
00045 
00046    HLXTCP_ = new HCAL_HLX::TCPReceiver( listenPort, DistribIP1, AquireMode );
00047    LumiSchema_ = new HCAL_HLX::ROOTSchema();
00048 
00049    // ROOTFileWriter configuration
00050    std::string lumiFileDir  = iConfig.getUntrackedParameter< std::string  >("LumiFileDir","./");
00051    std::string lumiFileType = iConfig.getUntrackedParameter< std::string  >("LumiFileType","RAW");
00052 
00053    LumiSchema_->SetLSDir( lumiFileDir );
00054    LumiSchema_->SetFileType( lumiFileType );
00055 
00056    //ROOTFileMerger configuration
00057    std::string  MergedOutputDir = iConfig.getUntrackedParameter< std::string  >("MergedOutDir", "./");
00058 
00059    LumiSchema_->SetMergeDir(MergedOutputDir);
00060 
00061    // HTML Generator configuration
00062    unsigned int NBINS        = iConfig.getUntrackedParameter< unsigned int >("NBINS",     297);  // 12 BX per bin
00063    double       XMIN         = iConfig.getUntrackedParameter< double       >("XMIN",      0);
00064    double       XMAX         = iConfig.getUntrackedParameter< double       >("XMAX",      3564);
00065    std::string  webOutputDir = iConfig.getUntrackedParameter< std::string  >("WBMOutDir", "./");
00066 
00067    LumiSchema_->SetWebDir(webOutputDir);
00068    LumiSchema_->SetHistoBins( NBINS, XMIN, XMAX );
00069    
00070    bMerge_    = iConfig.getUntrackedParameter< bool >("MergeFiles", false );
00071    bWBM_      = iConfig.getUntrackedParameter< bool >("CreateWebPage", false );
00072    bTransfer_ = iConfig.getUntrackedParameter< bool >("TransferToDBS", false );
00073 
00074    LumiSchema_->SetMergeFiles( bMerge_ );
00075    LumiSchema_->SetTransferFiles( bTransfer_ );
00076    LumiSchema_->SetCreateWebPage( bWBM_ );
00077    
00078    lumiSection_ = new HCAL_HLX::LUMI_SECTION;
00079 }
00080 
00081 LumiFileWriter::~LumiFileWriter()
00082 {
00083  
00084   delete HLXTCP_;
00085   delete LumiSchema_;
00086   delete lumiSection_;
00087 }
00088 
00089 void LumiFileWriter::analyze(const edm::Event& iEvent, 
00090                              const edm::EventSetup& iSetup){
00091   
00092   while(HLXTCP_->IsConnected() == false){
00093      HLXTCP_->SetIP( DistribIP1 );
00094      if( HLXTCP_->Connect() != 1){
00095         std::cout << "Failed to connect to " << DistribIP1 << "." << std::endl;
00096         sleep( 1 );
00097         std::cout << "Trying " << DistribIP2 << std::endl;
00098         HLXTCP_->SetIP( DistribIP2 );
00099         if( HLXTCP_->Connect() == 1) break;
00100         std::cout << "Failed to connect to " << DistribIP2 << "." << std::endl;
00101         std::cout << " Reconnect in " << reconTime << " seconds." <<  std::endl;
00102         sleep(reconTime);
00103      }
00104   }
00105   if( HLXTCP_->IsConnected() == true ){
00106      std::cout << "Successfully connected." << std::endl; 
00107   }
00108 
00109 
00110     
00111   if( HLXTCP_->ReceiveLumiSection(*lumiSection_) == 1 ){
00112     
00113     std::cout << "Processing LumiSection" << std::endl;
00114     LumiSchema_->ProcessSection(*lumiSection_);
00115     
00116   }else{
00117     HLXTCP_->Disconnect();
00118     LumiSchema_->EndRun();
00119   }
00120 }
00121 
00122 // ------------ method called once each job just before starting event loop  ------------
00123 void 
00124 LumiFileWriter::beginJob()
00125 {}
00126 
00127 // ------------ method called once each job just after ending the event loop  ------------
00128 void 
00129 LumiFileWriter::endJob() {
00130 
00131   HLXTCP_->Disconnect();
00132   LumiSchema_->EndRun();
00133 }
00134 
00135 //define this as a plug-in
00136 DEFINE_FWK_MODULE(LumiFileWriter);