CMS 3D CMS Logo

/afs/cern.ch/work/a/aaltunda/public/www/CMSSW_6_2_7/src/Geometry/CaloEventSetup/interface/CaloGeometryDBWriter.h

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