Go to the documentation of this file.00001 #ifndef GEOMETRY_CALOEVENTSETUP_CALOGEOMETRYDBWRITER_H
00002 #define GEOMETRY_CALOEVENTSETUP_CALOGEOMETRYDBWRITER_H 1
00003
00004 #include "FWCore/ServiceRegistry/interface/Service.h"
00005 #include "CondCore/DBOutputService/interface/PoolDBOutputService.h"
00006 #include "CondFormats/GeometryObjects/interface/PCaloGeometry.h"
00007
00008 #include "FWCore/MessageLogger/interface/MessageLogger.h"
00009
00010 class CaloGeometryDBWriter
00011 {
00012 public:
00013
00014 typedef CaloSubdetectorGeometry::TrVec TrVec ;
00015 typedef CaloSubdetectorGeometry::DimVec DimVec ;
00016 typedef CaloSubdetectorGeometry::IVec IVec ;
00017
00018 static bool writeFlag() { return true ; }
00019
00020 static void write( const TrVec& tvec,
00021 const DimVec& dvec,
00022 const IVec& ivec,
00023 std::string tag )
00024 {
00025 const IVec dins;
00026 PCaloGeometry* peg = new PCaloGeometry( tvec, dvec, ivec, dins );
00027
00028 edm::Service<cond::service::PoolDBOutputService> mydbservice;
00029 if( !mydbservice.isAvailable() )
00030 {
00031 edm::LogError("PCaloDBGeometryBuilder")<<"PoolDBOutputService unavailable";
00032 }
00033 else
00034 {
00035 if ( mydbservice->isNewTagRequest( tag ) )
00036 {
00037 mydbservice->createNewIOV<PCaloGeometry>(
00038 peg,
00039 mydbservice->beginOfTime(),
00040 mydbservice->endOfTime(),
00041 tag ) ;
00042 }
00043 else
00044 {
00045 mydbservice->appendSinceTime<PCaloGeometry>(
00046 peg,
00047 mydbservice->currentTime(),
00048 tag ) ;
00049 }
00050 }
00051 }
00052
00053 static void writeIndexed( const TrVec& tvec,
00054 const DimVec& dvec,
00055 const IVec& ivec,
00056 const IVec& dins,
00057 std::string tag )
00058 {
00059 PCaloGeometry* peg = new PCaloGeometry( tvec, dvec, ivec, dins );
00060
00061 edm::Service<cond::service::PoolDBOutputService> mydbservice;
00062 if( !mydbservice.isAvailable() )
00063 {
00064 edm::LogError("PCaloDBGeometryBuilder")<<"PoolDBOutputService unavailable";
00065 }
00066 else
00067 {
00068 if ( mydbservice->isNewTagRequest( tag ) )
00069 {
00070 mydbservice->createNewIOV<PCaloGeometry>(
00071 peg,
00072 mydbservice->beginOfTime(),
00073 mydbservice->endOfTime(),
00074 tag ) ;
00075 }
00076 else
00077 {
00078 mydbservice->appendSinceTime<PCaloGeometry>(
00079 peg,
00080 mydbservice->currentTime(),
00081 tag ) ;
00082 }
00083 }
00084 }
00085
00086 CaloGeometryDBWriter() {}
00087 virtual ~CaloGeometryDBWriter() {}
00088 };
00089
00090 #endif