Skip to content

Commit

Permalink
Magnetic field payload producers including job configurations.
Browse files Browse the repository at this point in the history
  • Loading branch information
ianna committed Jul 12, 2013
1 parent 526b4f1 commit 0f4acaa
Show file tree
Hide file tree
Showing 9 changed files with 460 additions and 0 deletions.
50 changes: 50 additions & 0 deletions CondTools/Geometry/plugins/XMLMagneticFieldGeometryBuilder.cc
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
#include "XMLMagneticFieldGeometryBuilder.h"

#include "FWCore/MessageLogger/interface/MessageLogger.h"

#include "FWCore/ServiceRegistry/interface/Service.h"
#include "FWCore/ParameterSet/interface/ParameterSet.h"
#include "FWCore/Framework/interface/Event.h"
#include "CondCore/DBOutputService/interface/PoolDBOutputService.h"
#include "FWCore/Framework/interface/EventSetup.h"
#include "FWCore/Framework/interface/ESHandle.h"
#include "CondFormats/Common/interface/FileBlob.h"
#include "MagneticField/Records/interface/IdealMagneticFieldRecord.h"

#include <string>
#include <vector>
#include <fstream>

XMLMagneticFieldGeometryBuilder::XMLMagneticFieldGeometryBuilder( const edm::ParameterSet& iConfig )
{
fname = iConfig.getUntrackedParameter<std::string>("XMLFileName","test.xml");
zip = iConfig.getUntrackedParameter<bool>("ZIP",true);
}

XMLMagneticFieldGeometryBuilder::~XMLMagneticFieldGeometryBuilder()
{
}

void
XMLMagneticFieldGeometryBuilder::beginJob()
{
edm::LogInfo( "XMLMagneticFieldGeometryBuilder" ) << "XMLMagneticFieldGeometryBuilder::beginJob";
edm::Service<cond::service::PoolDBOutputService> mydbservice;
if( !mydbservice.isAvailable())
{
edm::LogError( "XMLMagneticFieldGeometryBuilder" ) << "PoolDBOutputService unavailable";
return;
}

FileBlob* pgf= new FileBlob( fname, zip );

if( mydbservice->isNewTagRequest( "IdealMagneticFieldRecord"))
{
mydbservice->createNewIOV<FileBlob>( pgf, mydbservice->beginOfTime(), mydbservice->endOfTime(), "IdealMagneticFieldRecord" );
}
else
{
edm::LogError( "XMLMagneticFieldGeometryBuilder" ) << "GeometryFileRcd Tag already exist";
}
}

26 changes: 26 additions & 0 deletions CondTools/Geometry/plugins/XMLMagneticFieldGeometryBuilder.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
#ifndef CondToolsGeometry_XMLMagneticFieldGeometryBuilder_h
#define CondToolsGeometry_XMLMagneticFieldGeometryBuilder_h

#include "FWCore/Framework/interface/EDAnalyzer.h"
#include "FWCore/Framework/interface/Event.h"
#include "FWCore/Framework/interface/EventSetup.h"
#include "FWCore/ParameterSet/interface/ParameterSet.h"

#include <string>

class XMLMagneticFieldGeometryBuilder : public edm::EDAnalyzer
{
public:
explicit XMLMagneticFieldGeometryBuilder( const edm::ParameterSet& );
~XMLMagneticFieldGeometryBuilder( void );

virtual void beginJob( void );
virtual void analyze( const edm::Event&, const edm::EventSetup& ) {}
virtual void endJob( void ) {}

private:
std::string fname;
bool zip;
};

#endif
6 changes: 6 additions & 0 deletions CondTools/Geometry/test/geSingleBigFile.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
<?xml version="1.0"?>
<DDDefinition xmlns="http://www.cern.ch/cms/DDL"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.cern.ch/cms/DDL ../../../DetectorDescription/Schema/DDLSchema.xsd">
</DDDefinition>

40 changes: 40 additions & 0 deletions CondTools/Geometry/test/writehelpers/mfwriter.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
import FWCore.ParameterSet.Config as cms

process = cms.Process("MagneticFieldWriter")
process.load("CondCore.DBCommon.CondDBCommon_cfi")

# This will read all the little XML files and from
# that fill the DDCompactView. The modules that fill
# the reco part of the database need the DDCompactView.
process.load('Configuration.Geometry.MagneticFieldGeometry_cff')

process.source = cms.Source("EmptyIOVSource",
lastValue = cms.uint64(1),
timetype = cms.string('runnumber'),
firstValue = cms.uint64(1),
interval = cms.uint64(1)
)

# This reads the big XML file and the only way to fill the
# nonreco part of the database is to read this file. It
# somewhat duplicates the information read from the little
# XML files, but there is no way to directly build the
# DDCompactView from this.
process.XMLMagneticFieldGeometryWriter = cms.EDAnalyzer("XMLMagneticFieldGeometryBuilder",
XMLFileName = cms.untracked.string("./mfSingleBigFile.xml"),
ZIP = cms.untracked.bool(True)
)

process.CondDBCommon.BlobStreamerName = cms.untracked.string('TBufferBlobStreamingService')
process.CondDBCommon.timetype = cms.untracked.string('runnumber')
process.CondDBCommon.connect = cms.string('sqlite_file:myfile.db')
process.PoolDBOutputService = cms.Service("PoolDBOutputService",
process.CondDBCommon,
toPut = cms.VPSet(cms.PSet(record = cms.string('IdealMagneticFieldRecord'),tag = cms.string('XMLFILE_MagneticFieldGeometry_TagXX')))
)

process.maxEvents = cms.untracked.PSet(
input = cms.untracked.int32(1)
)

process.p1 = cms.Path(process.XMLMagneticFieldGeometryWriter)
25 changes: 25 additions & 0 deletions CondTools/Geometry/test/writehelpers/mfxmlwriter.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
import FWCore.ParameterSet.Config as cms

process = cms.Process("MagneticFieldXMLWriter")
process.load("CondCore.DBCommon.CondDBCommon_cfi")
process.load('Configuration.Geometry.MagneticFieldGeometry_cff')

process.source = cms.Source("EmptyIOVSource",
lastValue = cms.uint64(1),
timetype = cms.string('runnumber'),
firstValue = cms.uint64(1),
interval = cms.uint64(1)
)

process.BigXMLWriter = cms.EDAnalyzer("OutputMagneticFieldDDToDDL",
rotNumSeed = cms.int32(0),
fileName = cms.untracked.string("./mfSingleBigFile.xml")
)


process.maxEvents = cms.untracked.PSet(
input = cms.untracked.int32(1)
)

process.p1 = cms.Path(process.BigXMLWriter)

7 changes: 7 additions & 0 deletions Configuration/Geometry/python/MagneticFieldGeometry_cff.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
import FWCore.ParameterSet.Config as cms

#
# Magnetic Field Geometry master configuration
#
from Geometry.CMSCommonData.cmsMagneticFieldGeometryXML_cfi import *

Loading

0 comments on commit 0f4acaa

Please sign in to comment.