Go to the documentation of this file.00001
00002
00003
00004
00005
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024 #include <memory>
00025 #include <string>
00026
00027
00028 #include "FWCore/Framework/interface/SourceFactory.h"
00029 #include "FWCore/Framework/interface/ESProducer.h"
00030 #include "FWCore/Framework/interface/EventSetupRecordIntervalFinder.h"
00031 #include "FWCore/MessageLogger/interface/MessageLogger.h"
00032
00033
00034 #include "CondFormats/Alignment/interface/Alignments.h"
00035 #include "CondFormats/Alignment/interface/AlignmentErrors.h"
00036 #include "CondFormats/Alignment/interface/AlignmentSurfaceDeformations.h"
00037 #include "CondFormats/AlignmentRecord/interface/TrackerAlignmentRcd.h"
00038 #include "CondFormats/AlignmentRecord/interface/DTAlignmentRcd.h"
00039 #include "CondFormats/AlignmentRecord/interface/CSCAlignmentRcd.h"
00040 #include "CondFormats/AlignmentRecord/interface/TrackerAlignmentErrorRcd.h"
00041 #include "CondFormats/AlignmentRecord/interface/DTAlignmentErrorRcd.h"
00042 #include "CondFormats/AlignmentRecord/interface/CSCAlignmentErrorRcd.h"
00043 #include "CondFormats/AlignmentRecord/interface/GlobalPositionRcd.h"
00044 #include "CondFormats/AlignmentRecord/interface/TrackerSurfaceDeformationRcd.h"
00045
00046 class FakeAlignmentSource : public edm::ESProducer, public edm::EventSetupRecordIntervalFinder {
00047 public:
00048 FakeAlignmentSource(const edm::ParameterSet&);
00049 ~FakeAlignmentSource() {}
00050
00052 std::auto_ptr<Alignments> produceTkAli(const TrackerAlignmentRcd&) {
00053 return std::auto_ptr<Alignments>(new Alignments);
00054 }
00055 std::auto_ptr<AlignmentErrors> produceTkAliErr(const TrackerAlignmentErrorRcd&) {
00056 return std::auto_ptr<AlignmentErrors>(new AlignmentErrors);
00057 }
00058
00060 std::auto_ptr<Alignments> produceDTAli(const DTAlignmentRcd&) {
00061 return std::auto_ptr<Alignments>(new Alignments);
00062 }
00063 std::auto_ptr<AlignmentErrors> produceDTAliErr(const DTAlignmentErrorRcd&) {
00064 return std::auto_ptr<AlignmentErrors>(new AlignmentErrors);
00065 }
00066
00068 std::auto_ptr<Alignments> produceCSCAli(const CSCAlignmentRcd&) {
00069 return std::auto_ptr<Alignments>(new Alignments);
00070 }
00071 std::auto_ptr<AlignmentErrors> produceCSCAliErr(const CSCAlignmentErrorRcd&) {
00072 return std::auto_ptr<AlignmentErrors>(new AlignmentErrors);
00073 }
00074
00076 std::auto_ptr<Alignments> produceGlobals(const GlobalPositionRcd&) {
00077 return std::auto_ptr<Alignments>(new Alignments);
00078 }
00079
00081 std::auto_ptr<AlignmentSurfaceDeformations>
00082 produceTrackerSurfaceDeformation(const TrackerSurfaceDeformationRcd&) {
00083 return std::auto_ptr<AlignmentSurfaceDeformations>(new AlignmentSurfaceDeformations);
00084 }
00085
00086 protected:
00088 virtual void setIntervalFor( const edm::eventsetup::EventSetupRecordKey& ,
00089 const edm::IOVSyncValue& ioSyncVal, edm::ValidityInterval& iov);
00090
00091 private:
00092
00093 bool produceTracker_;
00094 bool produceDT_;
00095 bool produceCSC_;
00096 bool produceGlobalPosition_;
00097 bool produceTrackerSurfaceDeformation_;
00098 };
00099
00100
00101
00102
00103
00104 FakeAlignmentSource::FakeAlignmentSource(const edm::ParameterSet& iConfig)
00105 :produceTracker_(iConfig.getParameter<bool>("produceTracker")),
00106 produceDT_(iConfig.getParameter<bool>("produceDT")),
00107 produceCSC_(iConfig.getParameter<bool>("produceCSC")),
00108 produceGlobalPosition_(iConfig.getParameter<bool>("produceGlobalPosition")),
00109 produceTrackerSurfaceDeformation_(iConfig.getParameter<bool>("produceTrackerSurfaceDeformation"))
00110 {
00111
00112
00113
00114
00115 edm::LogInfo("Alignments")
00116 << "@SUB=FakeAlignmentSource" << "Providing data with label '"
00117 << iConfig.getParameter<std::string>("appendToDataLabel") << "'.";
00118
00119
00120 if (produceTracker_) {
00121 this->setWhatProduced(this, &FakeAlignmentSource::produceTkAli);
00122 this->setWhatProduced(this, &FakeAlignmentSource::produceTkAliErr);
00123 }
00124 if (produceDT_) {
00125 this->setWhatProduced(this, &FakeAlignmentSource::produceDTAli);
00126 this->setWhatProduced(this, &FakeAlignmentSource::produceDTAliErr);
00127 }
00128 if (produceCSC_) {
00129 this->setWhatProduced(this, &FakeAlignmentSource::produceCSCAli);
00130 this->setWhatProduced(this, &FakeAlignmentSource::produceCSCAliErr);
00131 }
00132 if (produceGlobalPosition_) {
00133 this->setWhatProduced(this, &FakeAlignmentSource::produceGlobals);
00134 }
00135 if (produceTrackerSurfaceDeformation_) {
00136 this->setWhatProduced(this, &FakeAlignmentSource::produceTrackerSurfaceDeformation);
00137 }
00138
00139
00140 if (produceTracker_) {
00141 this->findingRecord<TrackerAlignmentRcd>();
00142 this->findingRecord<TrackerAlignmentErrorRcd>();
00143 }
00144 if (produceDT_) {
00145 this->findingRecord<DTAlignmentRcd>();
00146 this->findingRecord<DTAlignmentErrorRcd>();
00147 }
00148 if (produceCSC_) {
00149 this->findingRecord<CSCAlignmentRcd>();
00150 this->findingRecord<CSCAlignmentErrorRcd>();
00151 }
00152 if (produceGlobalPosition_) {
00153 this->findingRecord<GlobalPositionRcd>();
00154 }
00155 if (produceTrackerSurfaceDeformation_) {
00156 this->findingRecord<TrackerSurfaceDeformationRcd>();
00157 }
00158 }
00159
00160 void FakeAlignmentSource::setIntervalFor( const edm::eventsetup::EventSetupRecordKey& ,
00161 const edm::IOVSyncValue& ioSyncVal,
00162 edm::ValidityInterval& outValidity )
00163 {
00164
00165 outValidity = edm::ValidityInterval(ioSyncVal.beginOfTime(), ioSyncVal.endOfTime());
00166 }
00167
00168
00169 DEFINE_FWK_EVENTSETUP_SOURCE(FakeAlignmentSource);