00001
00002
00003
00004
00005
00006
00007
00008
00009
00010 #include "DQMOffline/Muon/src/MuonEnergyDepositAnalyzer.h"
00011
00012 #include "DataFormats/Common/interface/Handle.h"
00013 #include "DataFormats/MuonReco/interface/Muon.h"
00014 #include "DataFormats/MuonReco/interface/MuonFwd.h"
00015 #include "DataFormats/MuonReco/interface/MuonEnergy.h"
00016
00017 #include "FWCore/MessageLogger/interface/MessageLogger.h"
00018
00019 #include "DataFormats/TrackReco/interface/Track.h"
00020 #include "DataFormats/TrackReco/interface/TrackFwd.h"
00021 #include "TrackingTools/TransientTrack/interface/TransientTrackBuilder.h"
00022 #include "TrackingTools/Records/interface/TransientTrackRecord.h"
00023 #include "TrackingTools/TransientTrack/interface/TransientTrack.h"
00024
00025 #include <cmath>
00026 #include <string>
00027 using namespace std;
00028 using namespace edm;
00029
00030
00031
00032 MuonEnergyDepositAnalyzer::MuonEnergyDepositAnalyzer(const edm::ParameterSet& pSet, MuonServiceProxy *theService):MuonAnalyzerBase(theService) {
00033
00034 parameters = pSet;
00035 }
00036
00037
00038 MuonEnergyDepositAnalyzer::~MuonEnergyDepositAnalyzer() { }
00039
00040
00041 void MuonEnergyDepositAnalyzer::beginJob( DQMStore * dbe) {
00042
00043 metname = "muEnergyDepositAnalyzer";
00044
00045 LogTrace(metname)<<"[MuonEnergyDepositAnalyzer] Parameters initialization";
00046 dbe->setCurrentFolder("Muons/MuonEnergyDepositAnalyzer");
00047 std::string AlgoName = parameters.getParameter<std::string>("AlgoName");
00048
00049 emNoBin = parameters.getParameter<int>("emSizeBin");
00050 emNoMin = parameters.getParameter<double>("emSizeMin");
00051 emNoMax = parameters.getParameter<double>("emSizeMax");
00052 std::string histname = "ecalDepositedEnergyBarrel_";
00053 ecalDepEnergyBarrel = dbe->book1D(histname+AlgoName, "Energy deposited in the ECAL barrel cells", emNoBin, emNoMin, emNoMax);
00054 ecalDepEnergyBarrel->setAxisTitle("GeV");
00055 histname = "ecalDepositedEnergyEndcap_";
00056 ecalDepEnergyEndcap = dbe->book1D(histname+AlgoName, "Energy deposited in the ECAL endcap cells", emNoBin, emNoMin, emNoMax);
00057 ecalDepEnergyEndcap->setAxisTitle("GeV");
00058
00059 emS9NoBin = parameters.getParameter<int>("emS9SizeBin");
00060 emS9NoMin = parameters.getParameter<double>("emS9SizeMin");
00061 emS9NoMax = parameters.getParameter<double>("emS9SizeMax");
00062 histname = "ecalS9DepositedEnergyBarrel_";
00063 ecalS9DepEnergyBarrel = dbe->book1D(histname+AlgoName, "Energy deposited in the ECAL barrel 3*3 towers", emS9NoBin, emS9NoMin, emS9NoMax);
00064 ecalS9DepEnergyBarrel->setAxisTitle("GeV");
00065 histname = "ecalS9DepositedEnergyEndcap_";
00066 ecalS9DepEnergyEndcap = dbe->book1D(histname+AlgoName, "Energy deposited in the ECAL endcap 3*3 towers", emS9NoBin, emS9NoMin, emS9NoMax);
00067 ecalS9DepEnergyEndcap->setAxisTitle("GeV");
00068 histname = "ecalS9PointingMuDepositedEnergy_Glb_";
00069 ecalS9PointingMuDepEnergy_Glb = dbe->book1D(histname+AlgoName, "Pointing glb muons energy deposited in the ECAL 3*3 towers", emS9NoBin, emS9NoMin, emS9NoMax);
00070 ecalS9PointingMuDepEnergy_Glb->setAxisTitle("GeV");
00071 histname = "ecalS9PointingMuDepositedEnergy_Tk_";
00072 ecalS9PointingMuDepEnergy_Tk = dbe->book1D(histname+AlgoName, "Pointing tk muons energy deposited in the ECAL 3*3 towers", emS9NoBin, emS9NoMin, emS9NoMax);
00073 ecalS9PointingMuDepEnergy_Tk->setAxisTitle("GeV");
00074 histname = "ecalS9PointingMuDepositedEnergy_Sta_";
00075 ecalS9PointingMuDepEnergy_Sta = dbe->book1D(histname+AlgoName, "Pointing sta muons energy deposited in the ECAL 3*3 towers", emS9NoBin, emS9NoMin, emS9NoMax);
00076 ecalS9PointingMuDepEnergy_Sta->setAxisTitle("GeV");
00077
00078 hadNoBin = parameters.getParameter<int>("hadSizeBin");
00079 hadNoMin = parameters.getParameter<double>("hadSizeMin");
00080 hadNoMax = parameters.getParameter<double>("hadSizeMax");
00081 histname = "hadDepositedEnergyBarrel_";
00082 hcalDepEnergyBarrel = dbe->book1D(histname+AlgoName, "Energy deposited in the HCAL barrel cells", hadNoBin, hadNoMin, hadNoMax);
00083 hcalDepEnergyBarrel->setAxisTitle("GeV");
00084 histname = "hadDepositedEnergyEndcap_";
00085 hcalDepEnergyEndcap = dbe->book1D(histname+AlgoName, "Energy deposited in the HCAL endcap cells", hadNoBin, hadNoMin, hadNoMax);
00086 hcalDepEnergyEndcap->setAxisTitle("GeV");
00087
00088 hadS9NoBin = parameters.getParameter<int>("hadS9SizeBin");
00089 hadS9NoMin = parameters.getParameter<double>("hadS9SizeMin");
00090 hadS9NoMax = parameters.getParameter<double>("hadS9SizeMax");
00091 histname = "hadS9DepositedEnergyBarrel_";
00092 hcalS9DepEnergyBarrel = dbe->book1D(histname+AlgoName, "Energy deposited in the HCAL barrel 3*3 towers", hadS9NoBin, hadS9NoMin, hadS9NoMax);
00093 hcalS9DepEnergyBarrel->setAxisTitle("GeV");
00094 histname = "hadS9DepositedEnergyEndcap_";
00095 hcalS9DepEnergyEndcap = dbe->book1D(histname+AlgoName, "Energy deposited in the HCAL endcap 3*3 towers", hadS9NoBin, hadS9NoMin, hadS9NoMax);
00096 hcalS9DepEnergyEndcap->setAxisTitle("GeV");
00097 histname = "hadS9PointingMuDepositedEnergy_Glb_";
00098 hcalS9PointingMuDepEnergy_Glb = dbe->book1D(histname+AlgoName, "Pointing glb muons energy deposited in the HCAL endcap 3*3 towers", hadS9NoBin, hadS9NoMin, hadS9NoMax);
00099 hcalS9PointingMuDepEnergy_Glb->setAxisTitle("GeV");
00100 histname = "hadS9PointingMuDepositedEnergy_Tk_";
00101 hcalS9PointingMuDepEnergy_Tk = dbe->book1D(histname+AlgoName, "Pointing tk muons energy deposited in the HCAL endcap 3*3 towers", hadS9NoBin, hadS9NoMin, hadS9NoMax);
00102 hcalS9PointingMuDepEnergy_Tk->setAxisTitle("GeV");
00103 histname = "hadS9PointingMuDepositedEnergy_Sta_";
00104 hcalS9PointingMuDepEnergy_Sta = dbe->book1D(histname+AlgoName, "Pointing sta muons energy deposited in the HCAL endcap 3*3 towers", hadS9NoBin, hadS9NoMin, hadS9NoMax);
00105 hcalS9PointingMuDepEnergy_Sta->setAxisTitle("GeV");
00106
00107 hoNoBin = parameters.getParameter<int>("hoSizeBin");
00108 hoNoMin = parameters.getParameter<double>("hoSizeMin");
00109 hoNoMax = parameters.getParameter<double>("hoSizeMax");
00110 histname = "hoDepositedEnergy_";
00111 hoDepEnergy = dbe->book1D(histname+AlgoName, "Energy deposited in the HO cells", hoNoBin, hoNoMin, hoNoMax);
00112 hoDepEnergy->setAxisTitle("GeV");
00113
00114 hoS9NoBin = parameters.getParameter<int>("hoS9SizeBin");
00115 hoS9NoMin = parameters.getParameter<double>("hoS9SizeMin");
00116 hoS9NoMax = parameters.getParameter<double>("hoS9SizeMax");
00117 histname = "hoS9DepositedEnergy_";
00118 hoS9DepEnergy = dbe->book1D(histname+AlgoName, "Energy deposited in the HO 3*3 towers", hoS9NoBin, hoS9NoMin, hoS9NoMax);
00119 hoS9DepEnergy->setAxisTitle("GeV");
00120 histname = "hoS9PointingMuDepositedEnergy_Glb_";
00121 hoS9PointingMuDepEnergy_Glb = dbe->book1D(histname+AlgoName, "Pointing glb muons energy deposited in the HO 3*3 towers", hoS9NoBin, hoS9NoMin, hoS9NoMax);
00122 hoS9PointingMuDepEnergy_Glb->setAxisTitle("GeV");
00123 histname = "hoS9PointingMuDepositedEnergy_Tk_";
00124 hoS9PointingMuDepEnergy_Tk = dbe->book1D(histname+AlgoName, "Pointing tk muons energy deposited in the HO 3*3 towers", hoS9NoBin, hoS9NoMin, hoS9NoMax);
00125 hoS9PointingMuDepEnergy_Tk->setAxisTitle("GeV");
00126 histname = "hoS9PointingMuDepositedEnergy_Sta_";
00127 hoS9PointingMuDepEnergy_Sta = dbe->book1D(histname+AlgoName, "Pointing sta muons energy deposited in the HO 3*3 towers", hoS9NoBin, hoS9NoMin, hoS9NoMax);
00128 hoS9PointingMuDepEnergy_Sta->setAxisTitle("GeV");
00129
00130 }
00131
00132
00133
00134 void MuonEnergyDepositAnalyzer::analyze(const edm::Event& iEvent, const edm::EventSetup& iSetup, const reco::Muon& recoMu) {
00135
00136 LogTrace(metname)<<"[MuonEnergyDepositAnalyzer] Filling the histos";
00137
00138
00139 reco::MuonEnergy muEnergy = recoMu.calEnergy();
00140
00141
00142 LogTrace(metname) << "Energy deposited in ECAL: "<<muEnergy.em;
00143 if (fabs(recoMu.eta()) > 1.479)
00144 ecalDepEnergyEndcap->Fill(muEnergy.em);
00145 else
00146 ecalDepEnergyBarrel->Fill(muEnergy.em);
00147
00148
00149 LogTrace(metname) << "Energy deposited in HCAL: "<<muEnergy.had;
00150 if (fabs(recoMu.eta()) > 1.4)
00151 hcalDepEnergyEndcap->Fill(muEnergy.had);
00152 else
00153 hcalDepEnergyBarrel->Fill(muEnergy.had);
00154
00155
00156 LogTrace(metname) << "Energy deposited in HO: "<<muEnergy.ho;
00157 if (fabs(recoMu.eta()) < 1.26)
00158 hoDepEnergy->Fill(muEnergy.ho);
00159
00160
00161 LogTrace(metname) << "Energy deposited in ECAL: "<<muEnergy.emS9;
00162 if (fabs(recoMu.eta()) > 1.479)
00163 ecalS9DepEnergyEndcap->Fill(muEnergy.emS9);
00164 else
00165 ecalS9DepEnergyBarrel->Fill(muEnergy.emS9);
00166
00167
00168 LogTrace(metname) << "Energy deposited in HCAL: "<<muEnergy.hadS9;
00169 if (fabs(recoMu.eta()) > 1.4)
00170 hcalS9DepEnergyEndcap->Fill(muEnergy.hadS9);
00171 else
00172 hcalS9DepEnergyBarrel->Fill(muEnergy.hadS9);
00173
00174
00175 LogTrace(metname) << "Energy deposited in HO: "<<muEnergy.hoS9;
00176 if (fabs(recoMu.eta()) < 1.26)
00177 hoS9DepEnergy->Fill(muEnergy.hoS9);
00178
00179
00180 edm::ESHandle<TransientTrackBuilder> theB;
00181 iSetup.get<TransientTrackRecord>().get("TransientTrackBuilder",theB);
00182 reco::TransientTrack TransTrack;
00183
00184 if(recoMu.isGlobalMuon())
00185 TransTrack = theB->build(recoMu.globalTrack());
00186 if(recoMu.isTrackerMuon() && !(recoMu.isGlobalMuon()))
00187 TransTrack = theB->build(recoMu.innerTrack());
00188 if(recoMu.isStandAloneMuon() && !(recoMu.isGlobalMuon()))
00189 TransTrack = theB->build(recoMu.outerTrack());
00190
00191 TrajectoryStateOnSurface TSOS;
00192 TSOS = TransTrack.impactPointState();
00193
00194 if((abs(TSOS.globalPosition().z())<30) && (abs(TSOS.globalPosition().perp())<20)){
00195
00196 if(recoMu.isGlobalMuon()){
00197 ecalS9PointingMuDepEnergy_Glb->Fill(muEnergy.emS9);
00198 hcalS9PointingMuDepEnergy_Glb->Fill(muEnergy.hadS9);
00199 hoS9PointingMuDepEnergy_Glb->Fill(muEnergy.hoS9);
00200 }
00201
00202 if(recoMu.isTrackerMuon() && !(recoMu.isGlobalMuon())){
00203 ecalS9PointingMuDepEnergy_Tk->Fill(muEnergy.emS9);
00204 hcalS9PointingMuDepEnergy_Tk->Fill(muEnergy.hadS9);
00205 hoS9PointingMuDepEnergy_Tk->Fill(muEnergy.hoS9);
00206 }
00207
00208 if(recoMu.isStandAloneMuon() && !(recoMu.isGlobalMuon())){
00209 ecalS9PointingMuDepEnergy_Sta->Fill(muEnergy.emS9);
00210 hcalS9PointingMuDepEnergy_Sta->Fill(muEnergy.hadS9);
00211 hoS9PointingMuDepEnergy_Sta->Fill(muEnergy.hoS9);
00212 }
00213 }
00214
00215 }
00216
00217