CMS 3D CMS Logo

Public Types | Public Member Functions | Private Member Functions | Private Attributes

L1CaloTriggerSetupProducer Class Reference

Inheritance diagram for L1CaloTriggerSetupProducer:
edm::ESProducer edm::ESProxyFactoryProducer edm::eventsetup::DataProxyProvider

List of all members.

Public Types

typedef boost::shared_ptr
< L1CaloTriggerSetup
ReturnType

Public Member Functions

 L1CaloTriggerSetupProducer (const edm::ParameterSet &)
ReturnType produce (const L1CaloTriggerSetupRcd &)
 ~L1CaloTriggerSetupProducer ()

Private Member Functions

void config (L1CaloTriggerSetup &)
void openFile (std::string &) throw (std::runtime_error)

Private Attributes

XMLCh * ATT_GEO_dim
XMLCh * ATT_GEO_eta
XMLCh * ATT_GEO_etam
XMLCh * ATT_GEO_phi
XMLCh * ATT_GEO_phim
XMLCh * ATT_SETTINGS_ClusterCut
XMLCh * ATT_SETTINGS_ECALTower
XMLCh * ATT_SETTINGS_ElectronCutA
XMLCh * ATT_SETTINGS_ElectronCutB
XMLCh * ATT_SETTINGS_ElectronCutC
XMLCh * ATT_SETTINGS_FineGrainPass
XMLCh * ATT_SETTINGS_HCALTower
XMLCh * ATT_SETTINGS_IsolationEA
XMLCh * ATT_SETTINGS_IsolationEB
XMLCh * ATT_SETTINGS_IsolationPedestalEG
XMLCh * ATT_SETTINGS_IsolationPedestalTau
XMLCh * ATT_SETTINGS_IsolationTA
XMLCh * ATT_SETTINGS_IsolationTB
XMLCh * ATT_SETTINGS_IsolationZone
XMLCh * ATT_SETTINGS_JetET
XMLCh * ATT_SETTINGS_TauSeedTower
XMLCh * ATT_WIRE_bin
XMLCh * ATT_WIRE_eta
XMLCh * ATT_WIRE_phi
xercesc::XercesDOMParser * m_ConfigFileParser
edm::FileInPath mInputfile
XMLCh * TAG_CARD
XMLCh * TAG_GEO
XMLCh * TAG_SETTINGS
XMLCh * TAG_WIRE

Detailed Description

Definition at line 56 of file L1CaloTriggerSetupProducer.cc.


Member Typedef Documentation

Definition at line 61 of file L1CaloTriggerSetupProducer.cc.


Constructor & Destructor Documentation

L1CaloTriggerSetupProducer::L1CaloTriggerSetupProducer ( const edm::ParameterSet iConfig)

Definition at line 131 of file L1CaloTriggerSetupProducer.cc.

References edm::ParameterSet::getParameter(), and edm::ESProducer::setWhatProduced().

{
  mInputfile = iConfig.getParameter<edm::FileInPath>("InputXMLFile");

   //the following line is needed to tell the framework what
   // data is being produced
   setWhatProduced(this);

}
L1CaloTriggerSetupProducer::~L1CaloTriggerSetupProducer ( )

Definition at line 142 of file L1CaloTriggerSetupProducer.cc.

{



}

Member Function Documentation

void L1CaloTriggerSetupProducer::config ( L1CaloTriggerSetup rcd) [private]

Definition at line 305 of file L1CaloTriggerSetupProducer.cc.

References L1CaloTriggerSetup::addWire(), i, L1CaloTriggerSetup::setGeometry(), L1CaloTriggerSetup::setThresholds(), TAG_CARD, TAG_GEO, TAG_SETTINGS, and TAG_WIRE.

Referenced by produce().

{


       //Read Document
       DOMDocument* xmlDoc = m_ConfigFileParser->getDocument();
        //get Root XML element <root>
       DOMElement* elementRoot = xmlDoc->getDocumentElement();
        if( !elementRoot ) throw(std::runtime_error( "empty XML document" ));
       DOMNodeList*  children = elementRoot->getChildNodes();
       const  XMLSize_t nodeCount = children->getLength();

       //loop through XML entries
      for( XMLSize_t xx = 0; xx < nodeCount; ++xx )
  {
    DOMNode* currentNode = children->item(xx);
    if( currentNode->getNodeType() && currentNode->getNodeType() == DOMNode::ELEMENT_NODE )
      {
            DOMElement* currentElement = dynamic_cast< xercesc::DOMElement* >( currentNode );

      //Search for Clustering Card
            if( XMLString::equals(currentElement->getTagName(), TAG_CARD))
        {
    edm::LogInfo ("INFO") << "FOUND XML Setup information"<<endl;

    //Loop on the Children of the Clustering Card
    DOMNodeList*  card_c = currentElement->getChildNodes();
    XMLSize_t cardc_count = card_c->getLength();
    for( XMLSize_t i = 0; i < cardc_count; ++i)
       {
                 DOMNode* Nodei = card_c->item(i);
               if( Nodei->getNodeType() && Nodei->getNodeType() == DOMNode::ELEMENT_NODE )
           {

             DOMElement* cc_el = dynamic_cast< xercesc::DOMElement* >( Nodei );
             //Look for geo
             if( XMLString::equals(cc_el->getTagName(), TAG_GEO))
         {
           int geo_eta =atoi(XMLString::transcode(cc_el->getAttribute(ATT_GEO_eta)));
           int geo_phi =atoi(XMLString::transcode(cc_el->getAttribute(ATT_GEO_phi)));
           int geo_etam =atoi(XMLString::transcode(cc_el->getAttribute(ATT_GEO_etam)));
           int geo_phim =atoi(XMLString::transcode(cc_el->getAttribute(ATT_GEO_phim)));
           int geo_dim =atoi(XMLString::transcode(cc_el->getAttribute(ATT_GEO_dim)));
           //Store geo on the card
           rcd.setGeometry(geo_eta,geo_phi,geo_etam,geo_phim,geo_dim);
           edm::LogInfo ("INFO") << "Geometry Set "<<endl;

         }

             //Look for SETTINGS
             if( XMLString::equals(cc_el->getTagName(), TAG_SETTINGS))
         {
           int att_ECALTower     =atoi(XMLString::transcode(cc_el->getAttribute(ATT_SETTINGS_ECALTower)));
           int att_HCALTower     =atoi(XMLString::transcode(cc_el->getAttribute(ATT_SETTINGS_HCALTower)));

           int att_TauSeedTower     =atoi(XMLString::transcode(cc_el->getAttribute(ATT_SETTINGS_TauSeedTower)));

           int att_ElectronCutA   =atoi(XMLString::transcode(cc_el->getAttribute(ATT_SETTINGS_ElectronCutA)));
           int att_ElectronCutB   =atoi(XMLString::transcode(cc_el->getAttribute(ATT_SETTINGS_ElectronCutB)));
           int att_ElectronCutC   =atoi(XMLString::transcode(cc_el->getAttribute(ATT_SETTINGS_ElectronCutC)));

           int att_ClusterCut    =atoi(XMLString::transcode(cc_el->getAttribute(ATT_SETTINGS_ClusterCut)));
           int att_isoEA         =atoi(XMLString::transcode(cc_el->getAttribute(ATT_SETTINGS_IsolationEA)));
           int att_isoEB         =atoi(XMLString::transcode(cc_el->getAttribute(ATT_SETTINGS_IsolationEB)));
           int att_isoTA         =atoi(XMLString::transcode(cc_el->getAttribute(ATT_SETTINGS_IsolationTA)));
           int att_isoTB         =atoi(XMLString::transcode(cc_el->getAttribute(ATT_SETTINGS_IsolationTB)));
           int att_isoZone       =atoi(XMLString::transcode(cc_el->getAttribute(ATT_SETTINGS_IsolationZone)));
           int att_isoPedEG      =atoi(XMLString::transcode(cc_el->getAttribute(ATT_SETTINGS_IsolationPedestalEG)));
           int att_isoPedTau     =atoi(XMLString::transcode(cc_el->getAttribute(ATT_SETTINGS_IsolationPedestalTau)));

           //           int att_jetC          =atoi(XMLString::transcode(cc_el->getAttribute(ATT_SETTINGS_JetCenter)));
           int att_jetET         =atoi(XMLString::transcode(cc_el->getAttribute(ATT_SETTINGS_JetET)));
           int att_fineGrainPass = atoi(XMLString::transcode(cc_el->getAttribute(ATT_SETTINGS_FineGrainPass)));

           //Store Activity Cuts on the Card
           rcd.setThresholds(att_ECALTower,
                 att_HCALTower,
                 att_ElectronCutA,
                 att_ElectronCutB,
                 att_ElectronCutC,
                 att_TauSeedTower,
                 att_ClusterCut,
                 att_isoEA,
                 att_isoEB,
                 att_isoTA,
                 att_isoTB,
                 att_isoZone,
                 att_isoPedEG,
                 att_isoPedTau,
                             //                 att_jetC,
                 att_jetET,
                 att_fineGrainPass     );
           edm::LogInfo ("INFO") << "Thresholds Set"<<endl;

         }

             //Look for Wires
             if( XMLString::equals(cc_el->getTagName(), TAG_WIRE))
         {
           int wire_bin  =atoi(XMLString::transcode(cc_el->getAttribute(ATT_WIRE_bin)));
           int wire_eta  =atoi(XMLString::transcode(cc_el->getAttribute(ATT_WIRE_eta)));
           int wire_phi  =atoi(XMLString::transcode(cc_el->getAttribute(ATT_WIRE_phi)));
           //store wires
           rcd.addWire(wire_bin,wire_eta,wire_phi);

         }
           }
       }

        }
      }
  }

}
void L1CaloTriggerSetupProducer::openFile ( std::string &  ) throw (std::runtime_error) [private]

Definition at line 272 of file L1CaloTriggerSetupProducer.cc.

References HDQMDatabaseProducer::configFile.

Referenced by produce().

{
  // Test to see if the file is ok.

  struct stat fileStatus;

  int iretStat = stat(configFile.c_str(), &fileStatus);
  if( iretStat == ENOENT )
    printf("Path file_name does not exist, or path is an empty string.");

  else if( iretStat == ENOTDIR )
    printf("A component of the path is not a directory.");
  else if( iretStat == ELOOP )
    printf("Too many symbolic links encountered while traversing the path.");
  else if( iretStat == EACCES )
    printf("Permission denied.");
  else if( iretStat == ENAMETOOLONG )
    printf("File can not be read\n");

  // Configure DOM parser.

  m_ConfigFileParser->setValidationScheme( XercesDOMParser::Val_Never );
  m_ConfigFileParser->setDoNamespaces( false );
  m_ConfigFileParser->setDoSchema( false );
  m_ConfigFileParser->setLoadExternalDTD( false );
  m_ConfigFileParser->parse( configFile.c_str() );

}
L1CaloTriggerSetupProducer::ReturnType L1CaloTriggerSetupProducer::produce ( const L1CaloTriggerSetupRcd iRecord)

Definition at line 156 of file L1CaloTriggerSetupProducer.cc.

References config(), UserOptions_cff::filePath, SLHCCaloTrigger_cfi::L1CaloTriggerSetup, openFile(), fetchall_from_DQM_v2::release, HcalObjRepresent::setup(), and AlCaHLTBitMon_QueryRunRegistry::string.

{
   using namespace edm::es;

   L1CaloTriggerSetup *setup = new L1CaloTriggerSetup();
   std::string filePath = mInputfile.fullPath();

   edm::LogInfo ("INFO") << "Configuration File:"<<filePath << endl;



   edm::LogInfo ("INFO") << "Initializing XERCES" << endl;
   XMLPlatformUtils::Initialize();  // Initialize Xerces infrastructure


   edm::LogInfo ("INFO") << "Creating XML Tags" << endl;

   //Mother Card : ClusteringCard
    TAG_CARD =XMLString::transcode("CARD");

    //Geometry Setup
    TAG_GEO =XMLString::transcode("GEOMETRY");

    ATT_GEO_eta=XMLString::transcode("eta0");
    ATT_GEO_phi=XMLString::transcode("phi0");
    ATT_GEO_dim=XMLString::transcode("dim");
    ATT_GEO_etam=XMLString::transcode("etam");
    ATT_GEO_phim=XMLString::transcode("phim");

    //Algorithm Settings
    TAG_SETTINGS=XMLString::transcode("SETTINGS");

    ATT_SETTINGS_ECALTower=XMLString::transcode("ECALTower");
    ATT_SETTINGS_HCALTower=XMLString::transcode("HCALTower");
    ATT_SETTINGS_ClusterCut=XMLString::transcode("ClusterThr");

    ATT_SETTINGS_ElectronCutA=XMLString::transcode("ElectronConstant");
    ATT_SETTINGS_ElectronCutB=XMLString::transcode("ElectronThreshold");
    ATT_SETTINGS_ElectronCutC=XMLString::transcode("ElectronSlope");

    ATT_SETTINGS_TauSeedTower=XMLString::transcode("TauSeedTower");

    ATT_SETTINGS_IsolationEA=XMLString::transcode("IsolationElectronA");
    ATT_SETTINGS_IsolationEB=XMLString::transcode("IsolationElectronB");
    ATT_SETTINGS_IsolationTA=XMLString::transcode("IsolationTauA");
    ATT_SETTINGS_IsolationTB=XMLString::transcode("IsolationTauB");
    ATT_SETTINGS_IsolationZone=XMLString::transcode("IsolationZone");
    ATT_SETTINGS_IsolationPedestalEG=XMLString::transcode("IsolationThresholdElectron");
    ATT_SETTINGS_IsolationPedestalTau=XMLString::transcode("IsolationThresholdTau");
    //    ATT_SETTINGS_JetCenter=XMLString::transcode("JetCenter");
    ATT_SETTINGS_JetET=XMLString::transcode("JetEt");
    ATT_SETTINGS_FineGrainPass=XMLString::transcode("FineGrainPass");

    //Wire Information
    TAG_WIRE=XMLString::transcode("WIRE");
    ATT_WIRE_bin=XMLString::transcode("no");
    ATT_WIRE_eta=XMLString::transcode("eta");
    ATT_WIRE_phi=XMLString::transcode("phi");

    TAG_CARD = XMLString::transcode("CARD");


    //Initialize the parser

   edm::LogInfo ("INFO") << "Initializing XERCES Parser" << endl;
   m_ConfigFileParser = new XercesDOMParser;


   edm::LogInfo ("INFO") << "Opening File..." << endl;
   openFile(filePath);
   edm::LogInfo ("INFO") << "Parsing Configuration"<<endl;
   config(*setup);

   edm::LogInfo ("INFO") << "terminating XERCES"<<endl;
   XMLPlatformUtils::Terminate();  // Terminate Xerces

   XMLString::release(&TAG_CARD);
   XMLString::release(&TAG_GEO);
   XMLString::release(&ATT_GEO_eta);
   XMLString::release(&ATT_GEO_phi);
   XMLString::release(&ATT_GEO_dim);
   XMLString::release(&TAG_SETTINGS);
   XMLString::release(&ATT_SETTINGS_ECALTower);
   XMLString::release(&ATT_SETTINGS_HCALTower);
   XMLString::release(&ATT_SETTINGS_TauSeedTower);
   XMLString::release(&ATT_SETTINGS_ElectronCutA);
   XMLString::release(&ATT_SETTINGS_ElectronCutB);
   XMLString::release(&ATT_SETTINGS_ElectronCutC);

   XMLString::release(&ATT_SETTINGS_ClusterCut);
   XMLString::release(&ATT_SETTINGS_IsolationEA);
   XMLString::release(&ATT_SETTINGS_IsolationEB);
   XMLString::release(&ATT_SETTINGS_IsolationTA);
   XMLString::release(&ATT_SETTINGS_IsolationTB);
   XMLString::release(&ATT_SETTINGS_IsolationZone);
   //   XMLString::release(&ATT_SETTINGS_JetCenter);
   XMLString::release(&ATT_SETTINGS_JetET);
   XMLString::release(&ATT_SETTINGS_FineGrainPass);
   XMLString::release(&TAG_WIRE);
   XMLString::release(&ATT_WIRE_bin);
   XMLString::release(&ATT_WIRE_eta);
   XMLString::release(&ATT_WIRE_phi);
   XMLString::release(&ATT_SETTINGS_IsolationPedestalEG);
   XMLString::release(&ATT_SETTINGS_IsolationPedestalTau);


   edm::LogInfo ("INFO") << "Creating Setup Module"<<endl;
   boost::shared_ptr<L1CaloTriggerSetup> rcd =(boost::shared_ptr<L1CaloTriggerSetup>) setup ;
   edm::LogInfo ("INFO") << "Event Setup Successfull"<<endl;
   return rcd ;

}

Member Data Documentation

Definition at line 83 of file L1CaloTriggerSetupProducer.cc.

Definition at line 79 of file L1CaloTriggerSetupProducer.cc.

Definition at line 81 of file L1CaloTriggerSetupProducer.cc.

Definition at line 80 of file L1CaloTriggerSetupProducer.cc.

Definition at line 82 of file L1CaloTriggerSetupProducer.cc.

Definition at line 95 of file L1CaloTriggerSetupProducer.cc.

Definition at line 87 of file L1CaloTriggerSetupProducer.cc.

Definition at line 89 of file L1CaloTriggerSetupProducer.cc.

Definition at line 90 of file L1CaloTriggerSetupProducer.cc.

Definition at line 91 of file L1CaloTriggerSetupProducer.cc.

Definition at line 107 of file L1CaloTriggerSetupProducer.cc.

Definition at line 88 of file L1CaloTriggerSetupProducer.cc.

Definition at line 96 of file L1CaloTriggerSetupProducer.cc.

Definition at line 97 of file L1CaloTriggerSetupProducer.cc.

Definition at line 101 of file L1CaloTriggerSetupProducer.cc.

Definition at line 102 of file L1CaloTriggerSetupProducer.cc.

Definition at line 98 of file L1CaloTriggerSetupProducer.cc.

Definition at line 99 of file L1CaloTriggerSetupProducer.cc.

Definition at line 100 of file L1CaloTriggerSetupProducer.cc.

Definition at line 106 of file L1CaloTriggerSetupProducer.cc.

Definition at line 93 of file L1CaloTriggerSetupProducer.cc.

Definition at line 110 of file L1CaloTriggerSetupProducer.cc.

Definition at line 111 of file L1CaloTriggerSetupProducer.cc.

Definition at line 112 of file L1CaloTriggerSetupProducer.cc.

xercesc::XercesDOMParser* L1CaloTriggerSetupProducer::m_ConfigFileParser [private]

Definition at line 72 of file L1CaloTriggerSetupProducer.cc.

Definition at line 71 of file L1CaloTriggerSetupProducer.cc.

Definition at line 115 of file L1CaloTriggerSetupProducer.cc.

Referenced by config().

Definition at line 78 of file L1CaloTriggerSetupProducer.cc.

Referenced by config().

Definition at line 84 of file L1CaloTriggerSetupProducer.cc.

Referenced by config().

Definition at line 109 of file L1CaloTriggerSetupProducer.cc.

Referenced by config().