Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009 #include "DQM/TrackingMonitor/interface/GetLumi.h"
00010
00011 #include "FWCore/Framework/interface/LuminosityBlock.h"
00012 #include "DataFormats/Luminosity/interface/LumiDetails.h"
00013 #include "DataFormats/Luminosity/interface/LumiSummary.h"
00014
00015 GetLumi::GetLumi(const edm::ParameterSet& iConfig)
00016 : lumiInputTag_ ( iConfig.getParameter<edm::InputTag>("lumi") )
00017 , lumiScale_ ( iConfig.getParameter<double>("lumiScale") )
00018 {
00019 }
00020
00021 GetLumi::GetLumi(const edm::InputTag& lumiInputTag, double lumiScale)
00022 : lumiInputTag_ ( lumiInputTag )
00023 , lumiScale_ ( lumiScale )
00024 {
00025 }
00026
00027 GetLumi::~GetLumi()
00028 {
00029 }
00030
00031 double
00032 GetLumi::getRawValue(const edm::Event& iEvent)
00033 {
00034
00035
00036
00037
00038 edm::Handle<LumiDetails> lumi;
00039 iEvent.getLuminosityBlock().getByLabel(lumiInputTag_,lumi);
00040
00041 double bxlumi = -1.;
00042 if(lumi->isValid()) {
00043 bxlumi = lumi->lumiValue(LumiDetails::kOCC1,iEvent.bunchCrossing());
00044 }
00045
00046 return bxlumi;
00047
00048 }
00049
00050
00051 double
00052 GetLumi::getValue(const edm::Event& iEvent)
00053 {
00054
00055 return getRawValue(iEvent)*lumiScale_;
00056 }
00057
00058 double
00059 GetLumi::getRawValue(edm::LuminosityBlock const& lumiBlock,
00060 edm::EventSetup const&eSetup)
00061 {
00062
00063 double lumi = -1.;
00064 double intDelLumi = -1.;
00065
00066
00067
00068
00069 edm::Handle<LumiSummary> lumiSummary_;
00070 lumiBlock.getByLabel(lumiInputTag_, lumiSummary_);
00071 if(lumiSummary_->isValid()){
00072 lumi = lumiSummary_->avgInsDelLumi();
00073 intDelLumi = lumiSummary_->intgDelLumi();
00074 std::cout << "Luminosity in this Lumi Section " << lumi << " --> " << intDelLumi << std::endl;
00075 } else {
00076 std::cout << "No valid data found!" << std::endl;
00077 }
00078
00079
00080 return lumi;
00081
00082 }
00083
00084
00085 double
00086 GetLumi::getValue(edm::LuminosityBlock const& lumiBlock,
00087 edm::EventSetup const&eSetup)
00088 {
00089 return getRawValue(lumiBlock,eSetup)*lumiScale_;
00090 }
00091
00092
00093 double
00094 GetLumi::convert2PU(double instLumi, double inelastic_xSec = GetLumi::INELASTIC_XSEC_8TeV)
00095 {
00096
00097
00098 return instLumi*inelastic_xSec/FREQ_ORBIT;
00099 }
00100
00101 double
00102 GetLumi::convert2PU(double instLumi, int sqrt_s = GetLumi::SQRT_S_8TeV)
00103 {
00104
00105 double inelastic_xSec = 0.;
00106
00107 switch(sqrt_s) {
00108 case GetLumi::SQRT_S_7TeV :
00109 inelastic_xSec = GetLumi::INELASTIC_XSEC_7TeV;
00110 break;
00111 case GetLumi::SQRT_S_8TeV :
00112 inelastic_xSec = GetLumi::INELASTIC_XSEC_8TeV;
00113 break;
00114 default :
00115 break;
00116 }
00117
00118 return convert2PU(instLumi,inelastic_xSec);
00119
00120 }