Go to the documentation of this file.00001
00002
00003
00004
00005
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022 #include "CalibTracker/SiPixelESProducers/interface/SiPixelFakeGainForHLTESSource.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 SiPixelFakeGainForHLTESSource::SiPixelFakeGainForHLTESSource(const edm::ParameterSet& conf_) :
00031 fp_(conf_.getParameter<edm::FileInPath>("file"))
00032 {
00033 edm::LogInfo("SiPixelFakeGainForHLTESSource::SiPixelFakeGainForHLTESSource");
00034
00035
00036 setWhatProduced(this);
00037 findingRecord<SiPixelGainCalibrationForHLTRcd>();
00038 }
00039
00040 SiPixelFakeGainForHLTESSource::~SiPixelFakeGainForHLTESSource()
00041 {
00042
00043
00044
00045
00046 }
00047
00048 std::auto_ptr<SiPixelGainCalibrationForHLT> SiPixelFakeGainForHLTESSource::produce(const SiPixelGainCalibrationForHLTRcd & )
00049 {
00050
00051 using namespace edm::es;
00052 unsigned int nmodules = 0;
00053 uint32_t nchannels = 0;
00054 SiPixelGainCalibrationForHLT * obj = new SiPixelGainCalibrationForHLT(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
00066 for(int i=0; i<detUnitDimensions.first; i++) {
00067 float totalGain = 0.0;
00068 float totalPed = 0.0;
00069 float totalEntries=0.0;
00070 for(int j=0; j<detUnitDimensions.second; j++) {
00071 nchannels++;
00072 totalGain += 2.8;
00073 totalPed += 28.2;
00074 totalEntries ++;
00075 if((j+1)%80==0){
00076 float gain = totalGain/totalEntries;
00077 float ped = totalPed/totalEntries;
00078
00079 obj->setData(ped,gain, theSiPixelGainCalibration);
00080 totalGain=0.;
00081 totalPed=0.;
00082 totalEntries=0.;
00083 }
00084 }
00085 }
00086
00087
00088
00089 SiPixelGainCalibrationForHLT::Range range(theSiPixelGainCalibration.begin(),theSiPixelGainCalibration.end());
00090 int nCols = detUnitDimensions.first;
00091 if( !obj->put(*detit,range,nCols) )
00092 edm::LogError("SiPixelFakeGainForHLTESSource")<<"[SiPixelFakeGainForHLTESSource::produce] detid already exists"<<std::endl;
00093 }
00094
00095
00096
00097
00098
00099 return std::auto_ptr<SiPixelGainCalibrationForHLT>(obj);
00100
00101
00102 }
00103
00104 void SiPixelFakeGainForHLTESSource::setIntervalFor( const edm::eventsetup::EventSetupRecordKey&,
00105 const edm::IOVSyncValue& iosv,
00106 edm::ValidityInterval& oValidity ) {
00107 edm::ValidityInterval infinity( iosv.beginOfTime(), iosv.endOfTime() );
00108 oValidity = infinity;
00109 }