00001 // -*- C++ -*- 00002 // Package: SiPixelESProducers 00003 // Class: SiPixelDetInfoFileWriter 00004 // Original Author: V.Chiochia (adapted from the Strip version by G.Bruno) 00005 // Created: Mon May 20 10:04:31 CET 2007 00006 // $Id: SiPixelDetInfoFileWriter.cc,v 1.2 2008/01/22 19:15:07 muzaffar Exp $ 00007 00008 #include "CalibTracker/SiPixelESProducers/interface/SiPixelDetInfoFileWriter.h" 00009 #include "FWCore/MessageLogger/interface/MessageLogger.h" 00010 #include "FWCore/Framework/interface/ESHandle.h" 00011 #include "FWCore/ParameterSet/interface/ParameterSet.h" 00012 00013 #include "Geometry/TrackerGeometryBuilder/interface/TrackerGeometry.h" 00014 #include "Geometry/Records/interface/TrackerDigiGeometryRecord.h" 00015 #include "Geometry/CommonDetUnit/interface/GeomDetUnit.h" 00016 #include "Geometry/CommonTopologies/interface/PixelTopology.h" 00017 #include "Geometry/TrackerGeometryBuilder/interface/PixelGeomDetUnit.h" 00018 00019 00020 using namespace cms; 00021 using namespace std; 00022 00023 00024 SiPixelDetInfoFileWriter::SiPixelDetInfoFileWriter(const edm::ParameterSet& iConfig) { 00025 00026 00027 edm::LogInfo("SiPixelDetInfoFileWriter::SiPixelDetInfoFileWriter"); 00028 00029 filePath_ = iConfig.getUntrackedParameter<std::string>("FilePath",std::string("SiPixelDetInfo.dat")); 00030 00031 } 00032 00033 00034 SiPixelDetInfoFileWriter::~SiPixelDetInfoFileWriter(){ 00035 00036 edm::LogInfo("SiPixelDetInfoFileWriter::~SiPixelDetInfoFileWriter"); 00037 } 00038 00039 00040 00041 void SiPixelDetInfoFileWriter::beginJob(const edm::EventSetup& iSetup){ 00042 00043 00044 outputFile_.open(filePath_.c_str()); 00045 00046 00047 if (outputFile_.is_open()){ 00048 00049 00050 edm::ESHandle<TrackerGeometry> pDD; 00051 00052 iSetup.get<TrackerDigiGeometryRecord>().get( pDD ); 00053 00054 edm::LogInfo("SiPixelDetInfoFileWriter::beginJob - got geometry ")<<std::endl; 00055 edm::LogInfo("SiPixelDetInfoFileWriter") <<" There are "<<pDD->detUnits().size() <<" detectors"<<std::endl; 00056 00057 int nPixelDets = 0; 00058 00059 for(TrackerGeometry::DetUnitContainer::const_iterator it = pDD->detUnits().begin(); it != pDD->detUnits().end(); it++){ 00060 00061 const PixelGeomDetUnit* mit = dynamic_cast<PixelGeomDetUnit*>(*it); 00062 00063 if(mit!=0){ 00064 nPixelDets++; 00065 const PixelTopology & topol = mit->specificTopology(); 00066 // Get the module sizes. 00067 int nrows = topol.nrows(); // rows in x 00068 int ncols = topol.ncolumns(); // cols in y 00069 uint32_t detid=(mit->geographicalId()).rawId(); 00070 00071 00072 outputFile_ << detid << " "<< ncols << " " << nrows << "\n"; 00073 00074 } 00075 } 00076 outputFile_.close(); 00077 edm::LogInfo("SiPixelDetInfoFileWriter::beginJob - Loop finished. ")<< nPixelDets << " Pixel DetUnits found " << std::endl; 00078 } 00079 00080 else { 00081 00082 edm::LogError("SiPixelDetInfoFileWriter::beginJob - Unable to open file")<<endl; 00083 return; 00084 00085 } 00086 00087 }