00001
00002
00003
00004
00005
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022 #include "CalibTracker/SiPixelESProducers/interface/SiPixelFakeGainESSource.h"
00023 #include "CalibTracker/SiPixelESProducers/interface/SiPixelDetInfoFileReader.h"
00024 #include "Geometry/TrackerGeometryBuilder/interface/TrackerGeometry.h"
00025 #include "Geometry/Records/interface/TrackerDigiGeometryRecord.h"
00026 #include "FWCore/MessageLogger/interface/MessageLogger.h"
00027
00028
00029
00030 SiPixelFakeGainESSource::SiPixelFakeGainESSource(const edm::ParameterSet& conf_) :
00031 fp_(conf_.getParameter<edm::FileInPath>("file"))
00032 {
00033 edm::LogInfo("SiPixelFakeGainESSource::SiPixelFakeGainESSource");
00034
00035
00036 setWhatProduced(this);
00037 findingRecord<SiPixelGainCalibrationRcd>();
00038 }
00039
00040 SiPixelFakeGainESSource::~SiPixelFakeGainESSource()
00041 {
00042
00043
00044
00045
00046 }
00047
00048 std::auto_ptr<SiPixelGainCalibration> SiPixelFakeGainESSource::produce(const SiPixelGainCalibrationRcd & )
00049 {
00050
00051 using namespace edm::es;
00052 unsigned int nmodules = 0;
00053 uint32_t nchannels = 0;
00054 SiPixelGainCalibration * obj = new SiPixelGainCalibration(25.,30., 2.,3.);
00055 SiPixelDetInfoFileReader reader(fp_.fullPath());
00056 const std::vector<uint32_t> DetIds = reader.getAllDetIds();
00057
00058
00059 for(std::vector<uint32_t>::const_iterator detit=DetIds.begin(); detit!=DetIds.end(); detit++) {
00060 nmodules++;
00061 std::vector<char> theSiPixelGainCalibration;
00062 const std::pair<int, int> & detUnitDimensions = reader.getDetUnitDimensions(*detit);
00063
00064
00065 for(int i=0; i<detUnitDimensions.first; i++) {
00066 for(int j=0; j<detUnitDimensions.second; j++) {
00067 nchannels++;
00068 float gain = 2.8;
00069 float ped = 28.2;
00070 obj->setData(ped, gain , theSiPixelGainCalibration);
00071 }
00072 }
00073
00074
00075
00076 SiPixelGainCalibration::Range range(theSiPixelGainCalibration.begin(),theSiPixelGainCalibration.end());
00077 if( !obj->put(*detit,range,detUnitDimensions.first) )
00078 edm::LogError("SiPixelFakeGainESSource")<<"[SiPixelFakeGainESSource::produce] detid already exists"<<std::endl;
00079 }
00080
00081
00082
00083
00084
00085 return std::auto_ptr<SiPixelGainCalibration>(obj);
00086
00087
00088 }
00089
00090 void SiPixelFakeGainESSource::setIntervalFor( const edm::eventsetup::EventSetupRecordKey&,
00091 const edm::IOVSyncValue& iosv,
00092 edm::ValidityInterval& oValidity ) {
00093 edm::ValidityInterval infinity( iosv.beginOfTime(), iosv.endOfTime() );
00094 oValidity = infinity;
00095 }