00001
00002
00003
00004
00005
00006 #include "DQM/Physics/src/QcdUeDQM.h"
00007 #include "DataFormats/Common/interface/TriggerResults.h"
00008 #include "DataFormats/GeometryVector/interface/GlobalPoint.h"
00009 #include "DataFormats/GeometryVector/interface/LocalPoint.h"
00010 #include "DataFormats/SiPixelDetId/interface/PXBDetId.h"
00011 #include "DataFormats/SiPixelDetId/interface/PXFDetId.h"
00012 #include "DataFormats/TrackerRecHit2D/interface/SiPixelRecHitCollection.h"
00013 #include "DataFormats/VertexReco/interface/VertexFwd.h"
00014 #include "DataFormats/VertexReco/interface/Vertex.h"
00015 #include "DQMServices/Core/interface/DQMStore.h"
00016 #include "DQMServices/Core/interface/MonitorElement.h"
00017 #include "FWCore/Framework/interface/Event.h"
00018 #include "FWCore/Framework/interface/EventSetup.h"
00019 #include "FWCore/Framework/interface/ESHandle.h"
00020 #include "FWCore/ParameterSet/interface/ParameterSet.h"
00021 #include "FWCore/MessageLogger/interface/MessageLogger.h"
00022 #include "FWCore/ServiceRegistry/interface/Service.h"
00023 #include "Geometry/CommonDetUnit/interface/GeomDet.h"
00024 #include "CommonTools/RecoAlgos/src/TrackToRefCandidate.h"
00025 #include "Geometry/Records/interface/TrackerDigiGeometryRecord.h"
00026 #include "Geometry/TrackerGeometryBuilder/interface/PixelGeomDetType.h"
00027 #include "Geometry/TrackerGeometryBuilder/interface/PixelGeomDetUnit.h"
00028 #include "Geometry/TrackerGeometryBuilder/interface/TrackerGeometry.h"
00029 #include "Geometry/TrackerGeometryBuilder/interface/RectangularPixelTopology.h"
00030 #include "HLTrigger/HLTcore/interface/HLTConfigProvider.h"
00031 #include "AnalysisDataFormats/TrackInfo/interface/TrackInfo.h"
00032 #include "AnalysisDataFormats/TrackInfo/interface/TrackInfoTrackAssociation.h"
00033 #include "DataFormats/TrackReco/interface/Track.h"
00034 #include "DataFormats/Candidate/interface/CandidateFwd.h"
00035 #include "DataFormats/Candidate/interface/CandMatchMap.h"
00036 #include "DataFormats/JetReco/interface/CaloJetCollection.h"
00037 #include "DataFormats/Math/interface/deltaPhi.h"
00038 #include <TString.h>
00039 #include <TMath.h>
00040 #include <TH1F.h>
00041 #include <TH2F.h>
00042 #include <TH3F.h>
00043 #include <TProfile.h>
00044 using namespace std;
00045 using namespace edm;
00046
00047 #define CP(level) \
00048 if (level>=verbose_)
00049
00050 struct deleter {
00051 void operator()(TH3F *&h) { delete h; h=0;}
00052 };
00053
00054
00055
00056 QcdUeDQM::QcdUeDQM(const ParameterSet ¶meters) :
00057 hltResName_(parameters.getUntrackedParameter<string>("hltTrgResults")),
00058 verbose_(parameters.getUntrackedParameter<int>("verbose",3)),
00059 tgeo_(0),
00060 theDbe_(0),
00061 repSumMap_(0),
00062 repSummary_(0),
00063 h2TrigCorr_(0),
00064 ptMin_(parameters.getParameter<double>("ptMin")),
00065 minRapidity_(parameters.getParameter<double>("minRapidity")),
00066 maxRapidity_(parameters.getParameter<double>("maxRapidity")),
00067 tip_(parameters.getParameter<double>("tip")),
00068 lip_(parameters.getParameter<double>("lip")),
00069 diffvtxbs_(parameters.getParameter<double>("diffvtxbs")),
00070 ptErr_pt_(parameters.getParameter<double>("ptErr_pt")),
00071 vtxntk_(parameters.getParameter<double>("vtxntk")),
00072 minHit_(parameters.getParameter<int>("minHit")),
00073 pxlLayerMinCut_(parameters.getParameter<double>("pxlLayerMinCut")),
00074 requirePIX1_(parameters.getParameter<bool>("requirePIX1")),
00075 min3DHit_(parameters.getParameter<int>("min3DHit")),
00076 maxChi2_(parameters.getParameter<double>("maxChi2")),
00077 bsuse_(parameters.getParameter<bool>("bsuse")),
00078 allowTriplets_(parameters.getParameter<bool>("allowTriplets")),
00079 bsPos_(parameters.getParameter<double>("bsPos")),
00080 caloJetLabel_(parameters.getUntrackedParameter<edm::InputTag>("caloJetTag")),
00081 chargedJetLabel_(parameters.getUntrackedParameter<edm::InputTag>("chargedJetTag")),
00082 trackLabel_(parameters.getUntrackedParameter<edm::InputTag>("trackTag")),
00083 vtxLabel_(parameters.getUntrackedParameter<edm::InputTag>("vtxTag")),
00084 bsLabel_(parameters.getParameter<edm::InputTag>("beamSpotTag"))
00085 {
00086
00087 std::vector<std::string> quality = parameters.getParameter<std::vector<std::string> >("quality");
00088 for (unsigned int j=0;j<quality.size();j++) quality_.push_back(reco::TrackBase::qualityByName(quality[j]));
00089 std::vector<std::string> algorithm = parameters.getParameter<std::vector<std::string> >("algorithm");
00090 for (unsigned int j=0;j<algorithm.size();j++) algorithm_.push_back(reco::TrackBase::algoByName(algorithm[j]));
00091
00092 if (parameters.exists("hltTrgNames"))
00093 hltTrgNames_ = parameters.getUntrackedParameter<vector<string> >("hltTrgNames");
00094
00095 if (parameters.exists("hltProcNames"))
00096 hltProcNames_ = parameters.getUntrackedParameter<vector<string> >("hltProcNames");
00097 else {
00098
00099 hltProcNames_.push_back("HLT");
00100 }
00101
00102
00103 }
00104
00105
00106 QcdUeDQM::~QcdUeDQM()
00107 {
00108
00109
00110
00111 }
00112
00113
00114 void QcdUeDQM::analyze(const Event &iEvent, const EventSetup &iSetup)
00115 {
00116 if( ! isHltConfigSuccessful_ ) return;
00117
00118
00119
00120 edm::Handle<reco::BeamSpot> beamSpot;
00121 bool ValidBS_ = iEvent.getByLabel(bsLabel_,beamSpot);
00122 if(!ValidBS_)return;
00123
00124 edm::Handle<reco::TrackCollection>tracks ;
00125 bool ValidTrack_ = iEvent.getByLabel(trackLabel_,tracks);
00126 if(!ValidTrack_)return;
00127
00128 edm::Handle<reco::CandidateView> trkJets;
00129 bool ValidTrackJet_ = iEvent.getByLabel (chargedJetLabel_,trkJets);
00130 if(!ValidTrackJet_)return;
00131
00132 edm::Handle<reco::CaloJetCollection> calJets;
00133 bool ValidCaloJet_ = iEvent.getByLabel (caloJetLabel_,calJets);
00134 if(!ValidCaloJet_)return;
00135
00136 edm::Handle< reco::VertexCollection > vertexColl;
00137 bool ValidVtxColl_ = iEvent.getByLabel (vtxLabel_, vertexColl);
00138 if(!ValidVtxColl_)return;
00139
00140 reco::TrackCollection tracks_sort = *tracks;
00141 std::sort(tracks_sort.begin(), tracks_sort.end(), PtSorter());
00142
00143
00144 ESHandle<TrackerGeometry> trackerHandle;
00145 iSetup.get<TrackerDigiGeometryRecord>().get(trackerHandle);
00146 tgeo_ = trackerHandle.product();
00147 if (!tgeo_)return;
00148 selected_.clear();
00149 fillHltBits(iEvent);
00150
00151 if(fillVtxPlots(vertexColl))
00152 {
00153 fill1D(hNevts_,1);
00154 for(reco::TrackCollection::const_iterator Trk = tracks_sort.begin(); Trk != tracks_sort.end(); ++Trk)
00155 {
00156
00157 if ( trackSelection(*Trk,beamSpot.product(),vtx1,vertexColl->size()) ) selected_.push_back( & * Trk );
00158 }
00159
00160
00161 fillpTMaxRelated(selected_);
00162 fillChargedJetSpectra(trkJets);
00163 fillCaloJetSpectra(calJets);
00164 fillUE_with_MaxpTtrack(selected_);
00165 if(trkJets->size() > 0)fillUE_with_ChargedJets(selected_,trkJets);
00166 if(calJets->size()>0)fillUE_with_CaloJets(selected_,calJets);
00167
00168 }
00169
00170 }
00171
00172
00173 void QcdUeDQM::beginJob()
00174 {
00175
00176
00177 theDbe_ = Service<DQMStore>().operator->();
00178 if (!theDbe_)return;
00179
00180
00181
00182 }
00183
00184
00185 void QcdUeDQM::beginLuminosityBlock(const LuminosityBlock &l,
00186 const EventSetup &iSetup)
00187 {
00188 if( ! isHltConfigSuccessful_ ) return;
00189
00190
00191 }
00192
00193
00194 void QcdUeDQM::beginRun(const Run &run, const EventSetup &iSetup)
00195 {
00196
00197
00198
00199 bool isHltCfgChange = false;
00200 isHltConfigSuccessful_ = false;
00201
00202 string teststr;
00203 for(size_t i=0; i<hltProcNames_.size(); ++i) {
00204 if (i>0)
00205 teststr += ", ";
00206 teststr += hltProcNames_.at(i);
00207 if ( hltConfig.init( run, iSetup, hltProcNames_.at(i), isHltCfgChange ) ) {
00208 isHltConfigSuccessful_ = true;
00209 hltUsedResName_ = hltResName_;
00210 if (hltResName_.find(':')==string::npos)
00211 hltUsedResName_ += "::";
00212 else
00213 hltUsedResName_ += ":";
00214 hltUsedResName_ += hltProcNames_.at(i);
00215 break;
00216 }
00217 }
00218
00219 if ( ! isHltConfigSuccessful_ )return;
00220
00221
00222 hltTrgBits_.clear();
00223 hltTrgBits_.push_back(-1);
00224 hltTrgDeci_.clear();
00225 hltTrgDeci_.push_back(true);
00226 hltTrgUsedNames_.clear();
00227 hltTrgUsedNames_.push_back("Any");
00228
00229
00230 for(size_t i=0;i<hltTrgNames_.size();++i) {
00231 const string &n1(hltTrgNames_.at(i));
00232 bool found = 0;
00233 for(size_t j=0;j<hltConfig.size();++j) {
00234 const string &n2(hltConfig.triggerName(j));
00235 if (n2==n1) {
00236 hltTrgBits_.push_back(j);
00237 hltTrgUsedNames_.push_back(n1);
00238 hltTrgDeci_.push_back(false);
00239 found = 1;
00240 break;
00241 }
00242 }
00243 if (!found) {
00244 CP(2) cout<<"Could not find trigger bit"<<endl ;
00245 }
00246 }
00247
00248
00249 createHistos();
00250 isHltConfigSuccessful_ = true;
00251
00252 }
00253
00254
00255 void QcdUeDQM::book1D(std::vector<MonitorElement*> &mes,
00256 const std::string &name, const std::string &title,
00257 int nx, double x1, double x2, bool sumw2, bool sbox)
00258 {
00259
00260
00261 for(size_t i=0;i<hltTrgUsedNames_.size();++i) {
00262 std::string folderName = "Physics/QcdUe/" + hltTrgUsedNames_.at(i);
00263 theDbe_->setCurrentFolder(folderName);
00264 MonitorElement *e = theDbe_->book1D(Form("%s_%s",name.c_str(),hltTrgUsedNames_.at(i).c_str()),
00265 Form("%s: %s",hltTrgUsedNames_.at(i).c_str(), title.c_str()),
00266 nx, x1, x2);
00267 TH1 *h1 = e->getTH1();
00268 if (sumw2) {
00269 if( 0 == h1->GetSumw2N() ) {
00270 h1->Sumw2();
00271 }
00272 }
00273 h1->SetStats(sbox);
00274 mes.push_back(e);
00275 }
00276 }
00277
00278
00279 void QcdUeDQM::book2D(std::vector<MonitorElement*> &mes,
00280 const std::string &name, const std::string &title,
00281 int nx, double x1, double x2, int ny, double y1, double y2,
00282 bool sumw2, bool sbox)
00283 {
00284
00285
00286 for(size_t i=0;i<hltTrgUsedNames_.size();++i) {
00287 std::string folderName = "Physics/QcdUe/" + hltTrgUsedNames_.at(i);
00288 theDbe_->setCurrentFolder(folderName);
00289 MonitorElement *e = theDbe_->book2D(Form("%s_%s",name.c_str(),hltTrgUsedNames_.at(i).c_str()),
00290 Form("%s: %s",hltTrgUsedNames_.at(i).c_str(), title.c_str()),
00291 nx, x1, x2, ny, y1, y2);
00292 TH1 *h1 = e->getTH1();
00293 if (sumw2) {
00294 if( 0 == h1->GetSumw2N() ) {
00295 h1->Sumw2();
00296 }
00297 }
00298 h1->SetStats(sbox);
00299 mes.push_back(e);
00300 }
00301 }
00302
00303
00304 void QcdUeDQM::bookProfile(std::vector<MonitorElement*> &mes,
00305 const std::string &name, const std::string &title,
00306 int nx, double x1, double x2, double y1, double y2,
00307 bool sumw2, bool sbox)
00308 {
00309
00310
00311 for(size_t i=0;i<hltTrgUsedNames_.size();++i) {
00312 std::string folderName = "Physics/QcdUe/" + hltTrgUsedNames_.at(i);
00313 theDbe_->setCurrentFolder(folderName);
00314 MonitorElement *e = theDbe_->bookProfile(Form("%s_%s",name.c_str(),hltTrgUsedNames_.at(i).c_str()),
00315 Form("%s: %s",hltTrgUsedNames_.at(i).c_str(), title.c_str()),
00316 nx, x1, x2, y1, y2," ");
00317 mes.push_back(e);
00318 }
00319 }
00320
00321 void QcdUeDQM::createHistos()
00322 {
00323
00324
00325
00326 if (1) {
00327 theDbe_->setCurrentFolder("Physics/EventInfo/");
00328 repSumMap_ = theDbe_->book2D("reportSummaryMap","reportSummaryMap",1,0,1,1,0,1);
00329 repSummary_ = theDbe_->bookFloat("reportSummary");
00330 }
00331
00332 theDbe_->setCurrentFolder("Physics/QcdUe");
00333
00334 if (1) {
00335 const int Nx = hltTrgUsedNames_.size();
00336 const double x1 = -0.5;
00337 const double x2 = Nx-0.5;
00338 h2TrigCorr_ = theDbe_->book2D("h2TriCorr","Trigger bit x vs y;y&&!x;x&&y",Nx,x1,x2,Nx,x1,x2);
00339 for(size_t i=1;i<=hltTrgUsedNames_.size();++i) {
00340 h2TrigCorr_->setBinLabel(i,hltTrgUsedNames_.at(i-1),1);
00341 h2TrigCorr_->setBinLabel(i,hltTrgUsedNames_.at(i-1),2);
00342 }
00343 TH1 *h = h2TrigCorr_->getTH1();
00344 if (h)
00345 h->SetStats(0);
00346 }
00347 book1D(hNevts_,"hNevts","number of events",2,0,2);
00348 book1D(hNtrackerLayer_,"hNtrackerLayer","number of tracker layers;multiplicity",20,-0.5,19.5 );
00349 book1D(hNtrackerPixelLayer_,"hNtrackerPixelLayer","number of pixel layers;multiplicity",10,-0.5,9.5 );
00350 book1D(hNtrackerStripPixelLayer_,"hNtrackerStripPixelLayer","number of strip + pixel layers;multiplicity",30,-0.5,39.5 );
00351 book1D(hRatioPtErrorPt_,"hRatioPtErrorPt","ratio of pT error and track pT",25,0.,5.);
00352 book1D(hTrkPt_,"hTrkPt","pT of all tracks",50,0.,50.);
00353 book1D(hTrkEta_,"hTrkEta","eta of all tracks",40,-4.,4.);
00354 book1D(hTrkPhi_,"hTrkPhi","phi of all tracks",40,-4.,4.);
00355 book1D(hRatioDxySigmaDxyBS_,"hRatioDxySigmaDxyBS","ratio of transverse impact parameter and its significance wrt beam spot",60,-10.,10);
00356 book1D(hRatioDxySigmaDxyPV_,"hRatioDxySigmaDxyPV","ratio of transverse impact parameter and its significance wrt PV",60,-10.,10);
00357 book1D(hRatioDzSigmaDzBS_,"hRatioDzSigmaDzBS","ratio of longitudinal impact parameter and its significance wrt beam spot",80,-20.,20);
00358 book1D(hRatioDzSigmaDzPV_,"hRatioDzSigmaDzPV","ratio of longitudinal impact parameter and its significance wrt PV",80,-20.,20);
00359 book1D(hTrkChi2_,"hTrkChi2","track chi2",30,0.,30);
00360 book1D(hTrkNdof_,"hTrkNdof","track NDOF",100,0,100);
00361
00362 book1D(hNgoodTrk_,"hNgoodTrk","number of good tracks",50,-0.5,49.5);
00363
00364 book1D(hGoodTrkPt500_,"hGoodTrkPt500","pT of all good tracks with pT > 500 MeV",50,0.,50.);
00365 book1D(hGoodTrkEta500_,"hGoodTrkEta500","eta of all good tracks pT > 500 MeV",40,-4.,4.);
00366 book1D(hGoodTrkPhi500_,"hGoodTrkPhi500","phi of all good tracks pT > 500 MeV",40,-4.,4.);
00367
00368 book1D(hGoodTrkPt900_,"hGoodTrkPt900","pT of all good tracks with pT > 900 MeV",50,0.,50.);
00369 book1D(hGoodTrkEta900_,"hGoodTrkEta900","eta of all good tracks pT > 900 MeV",40,-4.,4.);
00370 book1D(hGoodTrkPhi900_,"hGoodTrkPhi900","phi of all good tracks pT > 900 MeV",40,-4.,4.);
00371
00372 book1D(hNvertices_,"hNvertices","number of vertices",5,-0.5,4.5);
00373 book1D(hVertex_z_,"hVertex_z","z position of vertex; z[cm]",100,-20,20);
00374 book1D(hVertex_y_,"hVertex_y","y position of vertex; y[cm]",100,-5,5);
00375 book1D(hVertex_x_,"hVertex_x","x position of vertex; x[cm]",100,-5,5);
00376
00377 book1D(hBeamSpot_z_,"hBeamSpot_z","z position of beamspot; z[cm]",100,-20,20);
00378 book1D(hBeamSpot_y_,"hBeamSpot_y","y position of beamspot; y[cm]",50,-10,10);
00379 book1D(hBeamSpot_x_,"hBeamSpot_x","x position of beamspot; x[cm]",50,-10,10);
00380
00381
00382 if (1) {
00383 const int Nx = 25;
00384 const double x1 = 0.0;
00385 const double x2 = 50.0;
00386 book1D(hLeadingTrack_pTSpectrum_,"hLeadingTrack_pTSpectrum","pT spectrum of leading track;pT(GeV/c)",Nx,x1,x2);
00387 book1D(hLeadingCaloJet_pTSpectrum_,"hLeadingCalo_pTSpectrum","pT spectrum of leading calo jet;pT(GeV/c)",Nx,x1,x2);
00388 book1D(hLeadingChargedJet_pTSpectrum_,"hLeadingChargedJet_pTSpectrum","pT spectrum of leading track jet;pT(GeV/c)",Nx,x1,x2);
00389
00390 }
00391
00392 if (1) {
00393 const int Nx = 24;
00394 const double x1 = -4.;
00395 const double x2 = 4.;
00396 book1D(hLeadingTrack_phiSpectrum_,"hLeadingTrack_phiSpectrum","#phi spectrum of leading track;#phi",Nx,x1,x2);
00397 book1D(hLeadingCaloJet_phiSpectrum_,"hLeadingCaloJet_phiSpectrum","#phi spectrum of leading calo jet;#phi",Nx,x1,x2);
00398 book1D(hLeadingChargedJet_phiSpectrum_,"hLeadingChargedJet_phiSpectrum","#phi spectrum of leading track jet;#phi",Nx,x1,x2);
00399
00400 }
00401
00402 if (1) {
00403 const int Nx = 24;
00404 const double x1 = -4.;
00405 const double x2 = 4.;
00406 book1D(hLeadingTrack_etaSpectrum_,"hLeadingTrack_etaSpectrum","#eta spectrum of leading track;#eta",Nx,x1,x2);
00407 book1D(hLeadingCaloJet_etaSpectrum_,"hLeadingCaloJet_etaSpectrum","#eta spectrum of leading calo jet;#eta",Nx,x1,x2);
00408 book1D(hLeadingChargedJet_etaSpectrum_,"hLeadingChargedJet_etaSpectrum","#eta spectrum of leading track jet;#eta",Nx,x1,x2);
00409
00410 }
00411
00412
00413 if (1) {
00414 const int Nx = 75;
00415 const double x1 = 0.0;
00416 const double x2 = 75.0;
00417 const double y1 = 0.;
00418 const double y2 = 10.;
00419 bookProfile(hdNdEtadPhi_pTMax_Toward500_,"hdNdEtadPhi_pTMax_Toward500",
00420 "Average number of tracks (pT > 500 MeV) in toward region vs leading track pT;pT(GeV/c);dN/d#eta d#phi",Nx,x1,x2,y1,y2,0,0);
00421 bookProfile(hdNdEtadPhi_pTMax_Transverse500_,"hdNdEtadPhi_pTMax_Transverse500",
00422 "Average number of tracks (pT > 500 MeV) in transverse region vs leading track pT;pT(GeV/c);dN/d#eta d#phi",Nx,x1,x2,y1,y2,0,0);
00423 bookProfile(hdNdEtadPhi_pTMax_Away500_,"hdNdEtadPhi_pTMax_Away500",
00424 "Average number of tracks (pT > 500 MeV) in away region vs leading track pT;pT(GeV/c);dN/d#eta d#phi",Nx,x1,x2,y1,y2,0,0);
00425
00426 bookProfile(hdNdEtadPhi_caloJet_Toward500_,"hdNdEtadPhi_caloJet_Toward500",
00427 "Average number of tracks (pT > 500 MeV) in toward region vs leading calo jet pT;pT(GeV/c);dN/d#eta d#phi",Nx,x1,x2,y1,y2,0,0);
00428 bookProfile(hdNdEtadPhi_caloJet_Transverse500_,"hdNdEtadPhi_caloJet_Transverse500",
00429 "Average number of tracks (pT > 500 MeV) in transverse region vs leading calo jet pT;pT(GeV/c);dN/d#eta d#phi",Nx,x1,x2,y1,y2,0,0);
00430 bookProfile(hdNdEtadPhi_caloJet_Away500_,"hdNdEtadPhi_caloJet_Away500",
00431 "Average number of tracks (pT > 500 MeV) in away region vs leading calo jet pT;pT(GeV/c);dN/d#eta d#phi",Nx,x1,x2,y1,y2,0,0);
00432
00433 bookProfile(hdNdEtadPhi_trackJet_Toward500_,"hdNdEtadPhi_trackJet_Toward500",
00434 "Average number of tracks (pT > 500 MeV) in toward region vs leading track jet pT;pT(GeV/c);dN/d#eta d#phi",Nx,x1,x2,y1,y2);
00435 bookProfile(hdNdEtadPhi_trackJet_Transverse500_,"hdNdEtadPhi_trackJet_Transverse500",
00436 "Average number of tracks (pT > 500 MeV) in transverse region vs leading track jet pT;pT(GeV/c);dN/d#eta d#phi",Nx,x1,x2,y1,y2,0,0);
00437 bookProfile(hdNdEtadPhi_trackJet_Away500_,"hdNdEtadPhi_trackJet_Away500",
00438 "Average number of tracks (pT > 500 MeV) in away region vs leading track jet pT;pT(GeV/c);dN/d#eta d#phi",Nx,x1,x2,y1,y2,0,0);
00439
00440
00441
00442 bookProfile(hpTSumdEtadPhi_pTMax_Toward500_,"hpTSumdEtadPhi_pTMax_Toward500",
00443 "Average number of tracks (pT > 500 MeV) in toward region vs leading track pT;pT(GeV/c);dpTSum/d#eta d#phi",Nx,x1,x2,y1,y2,0,0);
00444 bookProfile(hpTSumdEtadPhi_pTMax_Transverse500_,"hpTSumdEtadPhi_pTMax_Transverse500",
00445 "Average number of tracks (pT > 500 MeV) in transverse region vs leading track pT;pT(GeV/c);dpTSum/d#eta d#phi",Nx,x1,x2,y1,y2,0,0);
00446 bookProfile(hpTSumdEtadPhi_pTMax_Away500_,"hpTSumdEtadPhi_pTMax_Away500",
00447 "Average number of tracks (pT > 500 MeV) in away region vs leading track pT;pT(GeV/c);dpTSum/d#eta d#phi",Nx,x1,x2,y1,y2,0,0);
00448
00449 bookProfile(hpTSumdEtadPhi_caloJet_Toward500_,"hpTSumdEtadPhi_caloJet_Toward500",
00450 "Average number of tracks (pT > 500 MeV) in toward region vs leading calo jet pT;pT(GeV/c);dpTSum/d#eta d#phi",Nx,x1,x2,y1,y2,0,0);
00451 bookProfile(hpTSumdEtadPhi_caloJet_Transverse500_,"hpTSumdEtadPhi_caloJet_Transverse500",
00452 "Average number of tracks (pT > 500 MeV) in transverse region vs leading calo jet pT;pT(GeV/c);dpTSum/d#eta d#phi",Nx,x1,x2,y1,y2,0,0);
00453 bookProfile(hpTSumdEtadPhi_caloJet_Away500_,"hpTSumdEtadPhi_caloJet_Away500",
00454 "Average number of tracks (pT > 500 MeV) in away region vs leading calo jet pT;pT(GeV/c);dpTSum/d#eta d#phi",Nx,x1,x2,y1,y2,0,0);
00455
00456 bookProfile(hpTSumdEtadPhi_trackJet_Toward500_,"hpTSumdEtadPhi_trackJet_Toward500",
00457 "Average number of tracks (pT > 500 MeV) in toward region vs leading track jet pT;pT(GeV/c);dpTSum/d#eta d#phi",Nx,x1,x2,y1,y2,0,0);
00458 bookProfile(hpTSumdEtadPhi_trackJet_Transverse500_,"hpTSumdEtadPhi_trackJet_Transverse500",
00459 "Average number of tracks (pT > 500 MeV) in transverse region vs leading track jet pT;pT(GeV/c);dpTSum/d#eta d#phi",Nx,x1,x2,y1,y2,0,0);
00460 bookProfile(hpTSumdEtadPhi_trackJet_Away500_,"hpTSumdEtadPhi_trackJet_Away500",
00461 "Average number of tracks (pT > 500 MeV) in away region vs leading track jet pT;pT(GeV/c);dpTSum/d#eta d#phi",Nx,x1,x2,y1,y2,0,0);
00462
00463
00464 bookProfile(hdNdEtadPhi_pTMax_Toward900_,"hdNdEtadPhi_pTMax_Toward900",
00465 "Average number of tracks (pT > 900 MeV) in toward region vs leading track pT;pT(GeV/c);dN/d#eta d#phi",Nx,x1,x2,y1,y2,0,0);
00466 bookProfile(hdNdEtadPhi_pTMax_Transverse900_,"hdNdEtadPhi_pTMax_Transverse900",
00467 "Average number of tracks (pT > 900 MeV) in transverse region vs leading track pT;pT(GeV/c);dN/d#eta d#phi",Nx,x1,x2,y1,y2,0,0);
00468 bookProfile(hdNdEtadPhi_pTMax_Away900_,"hdNdEtadPhi_pTMax_Away900",
00469 "Average number of tracks (pT > 900 MeV) in away region vs leading track pT;pT(GeV/c);dN/d#eta d#phi",Nx,x1,x2,y1,y2,0,0);
00470
00471 bookProfile(hdNdEtadPhi_caloJet_Toward900_,"hdNdEtadPhi_caloJet_Toward900",
00472 "Average number of tracks (pT > 900 MeV) in toward region vs leading calo jet pT;pT(GeV/c);dN/d#eta d#phi",Nx,x1,x2,y1,y2,0,0);
00473 bookProfile(hdNdEtadPhi_caloJet_Transverse900_,"hdNdEtadPhi_caloJet_Transverse900",
00474 "Average number of tracks (pT > 900 MeV) in transverse region vs leading calo jet pT;pT(GeV/c);dN/d#eta d#phi",Nx,x1,x2,y1,y2,0,0);
00475 bookProfile(hdNdEtadPhi_caloJet_Away900_,"hdNdEtadPhi_caloJet_Away900",
00476 "Average number of tracks (pT > 900 MeV) in away region vs leading calo jet pT;pT(GeV/c);dN/d#eta d#phi",Nx,x1,x2,y1,y2,0,0);
00477
00478 bookProfile(hdNdEtadPhi_trackJet_Toward900_,"hdNdEtadPhi_trackJet_Toward900",
00479 "Average number of tracks (pT > 900 MeV) in toward region vs leading track jet pT;pT(GeV/c);dN/d#eta d#phi",Nx,x1,x2,y1,y2);
00480 bookProfile(hdNdEtadPhi_trackJet_Transverse900_,"hdNdEtadPhi_trackJet_Transverse900",
00481 "Average number of tracks (pT > 900 MeV) in transverse region vs leading track jet pT;pT(GeV/c);dN/d#eta d#phi",Nx,x1,x2,y1,y2,0,0);
00482 bookProfile(hdNdEtadPhi_trackJet_Away900_,"hdNdEtadPhi_trackJet_Away900",
00483 "Average number of tracks (pT > 900 MeV) in away region vs leading track jet pT;pT(GeV/c);dN/d#eta d#phi",Nx,x1,x2,y1,y2,0,0);
00484
00485
00486
00487 bookProfile(hpTSumdEtadPhi_pTMax_Toward900_,"hpTSumdEtadPhi_pTMax_Toward900",
00488 "Average number of tracks (pT > 900 MeV) in toward region vs leading track pT;pT(GeV/c);dpTSum/d#eta d#phi",Nx,x1,x2,y1,y2,0,0);
00489 bookProfile(hpTSumdEtadPhi_pTMax_Transverse900_,"hpTSumdEtadPhi_pTMax_Transverse900",
00490 "Average number of tracks (pT > 900 MeV) in transverse region vs leading track pT;pT(GeV/c);dpTSum/d#eta d#phi",Nx,x1,x2,y1,y2,0,0);
00491 bookProfile(hpTSumdEtadPhi_pTMax_Away900_,"hpTSumdEtadPhi_pTMax_Away900",
00492 "Average number of tracks (pT > 900 MeV) in away region vs leading track pT;pT(GeV/c);dpTSum/d#eta d#phi",Nx,x1,x2,y1,y2,0,0);
00493
00494 bookProfile(hpTSumdEtadPhi_caloJet_Toward900_,"hpTSumdEtadPhi_caloJet_Toward900",
00495 "Average number of tracks (pT > 900 MeV) in toward region vs leading calo jet pT;pT(GeV/c);dpTSum/d#eta d#phi",Nx,x1,x2,y1,y2,0,0);
00496 bookProfile(hpTSumdEtadPhi_caloJet_Transverse900_,"hpTSumdEtadPhi_caloJet_Transverse900",
00497 "Average number of tracks (pT > 900 MeV) in transverse region vs leading calo jet pT;pT(GeV/c);dpTSum/d#eta d#phi",Nx,x1,x2,y1,y2,0,0);
00498 bookProfile(hpTSumdEtadPhi_caloJet_Away900_,"hpTSumdEtadPhi_caloJet_Away900",
00499 "Average number of tracks (pT > 900 MeV) in away region vs leading calo jet pT;pT(GeV/c);dpTSum/d#eta d#phi",Nx,x1,x2,y1,y2,0,0);
00500
00501 bookProfile(hpTSumdEtadPhi_trackJet_Toward900_,"hpTSumdEtadPhi_trackJet_Toward900",
00502 "Average number of tracks (pT > 900 MeV) in toward region vs leading track jet pT;pT(GeV/c);dpTSum/d#eta d#phi",Nx,x1,x2,y1,y2,0,0);
00503 bookProfile(hpTSumdEtadPhi_trackJet_Transverse900_,"hpTSumdEtadPhi_trackJet_Transverse900",
00504 "Average number of tracks (pT > 900 MeV) in transverse region vs leading track jet pT;pT(GeV/c);dpTSum/d#eta d#phi",Nx,x1,x2,y1,y2,0,0);
00505 bookProfile(hpTSumdEtadPhi_trackJet_Away900_,"hpTSumdEtadPhi_trackJet_Away900",
00506 "Average number of tracks (pT > 900 MeV) in away region vs leading track jet pT;pT(GeV/c);dpTSum/d#eta d#phi",Nx,x1,x2,y1,y2,0,0);
00507
00508
00509 }
00510
00511 if (1) {
00512 const int Nx = 20;
00513 const double x1 = 0.0;
00514 const double x2 = 20.0;
00515
00516 book1D(hChargedJetMulti_,"hChargedJetMulti","Charged jet multiplicity;multiplicities",Nx,x1,x2);
00517 book1D(hCaloJetMulti_,"hCaloJetMulti","Calo jet multiplicity;multiplicities",Nx,x1,x2);
00518
00519 }
00520
00521
00522 if (1) {
00523 const int Nx = 60;
00524 const double x1 = -180.0;
00525 const double x2 = 180.0;
00526
00527 book1D(hdPhi_maxpTTrack_tracks_,"hdPhi_maxpTTrack_tracks","delta phi between leading tracks and other tracks;#Delta#phi(leading track-track)",Nx,x1,x2);
00528 book1D(hdPhi_caloJet_tracks_,"hdPhi_caloJet_tracks","delta phi between leading calo jet and tracks;#Delta#phi(leading calo jet-track)",Nx,x1,x2);
00529 book1D(hdPhi_chargedJet_tracks_,"hdPhi_chargedJet_tracks","delta phi between leading charged jet and tracks;#Delta#phi(leading charged jet-track)",Nx,x1,x2);
00530
00531 }
00532
00533
00534 }
00535
00536
00537 void QcdUeDQM::endJob(void)
00538 {
00539 }
00540
00541
00542
00543 void QcdUeDQM::endLuminosityBlock(const LuminosityBlock &l,
00544 const EventSetup &iSetup)
00545 {
00546 if( ! isHltConfigSuccessful_ ) return;
00547
00548
00549
00550 repSummary_->Fill(1.);
00551 repSumMap_->Fill(0.5,0.5,1.);
00552
00553 }
00554
00555
00556
00557 void QcdUeDQM::endRun(const Run &, const EventSetup &)
00558 {
00559 if( ! isHltConfigSuccessful_ ) return;
00560
00561
00562
00563 }
00564
00565
00566 void QcdUeDQM::fill1D(std::vector<TH1F*> &hs, double val, double w)
00567 {
00568
00569
00570 for(size_t i=0;i<hs.size();++i) {
00571 if (!hltTrgDeci_.at(i))
00572 continue;
00573 hs.at(i)->Fill(val,w);
00574 }
00575 }
00576
00577
00578 void QcdUeDQM::fill1D(std::vector<MonitorElement*> &mes, double val, double w)
00579 {
00580
00581
00582 for(size_t i=0;i<mes.size();++i) {
00583 if (!hltTrgDeci_.at(i))
00584 continue;
00585 mes.at(i)->Fill(val,w);
00586 }
00587 }
00588
00589
00590 void QcdUeDQM::setLabel1D(std::vector<MonitorElement*> &mes)
00591 {
00592
00593 string cut[5] = {"Nevt","vtx!=bmspt","Zvtx<10cm","pT>1GeV","trackFromVtx"};
00594 for(size_t i=0;i<mes.size();++i) {
00595 if (!hltTrgDeci_.at(i))
00596 continue;
00597 for(size_t j = 1;j < 6;j++)mes.at(i)->setBinLabel(j,cut[j-1],1);
00598 }
00599 }
00600
00601
00602 void QcdUeDQM::fill2D(std::vector<TH2F*> &hs, double valx, double valy, double w)
00603 {
00604
00605
00606 for(size_t i=0;i<hs.size();++i) {
00607 if (!hltTrgDeci_.at(i))
00608 continue;
00609 hs.at(i)->Fill(valx, valy ,w);
00610 }
00611 }
00612
00613
00614 void QcdUeDQM::fill2D(std::vector<MonitorElement*> &mes, double valx, double valy, double w)
00615 {
00616
00617
00618 for(size_t i=0;i<mes.size();++i) {
00619 if (!hltTrgDeci_.at(i))
00620 continue;
00621 mes.at(i)->Fill(valx, valy ,w);
00622 }
00623 }
00624
00625 void QcdUeDQM::fillProfile(std::vector<TProfile*> &hs, double valx, double valy, double w)
00626 {
00627
00628
00629 for(size_t i=0;i<hs.size();++i) {
00630 if (!hltTrgDeci_.at(i))
00631 continue;
00632 hs.at(i)->Fill(valx, valy ,w);
00633 }
00634 }
00635
00636
00637 void QcdUeDQM::fillProfile(std::vector<MonitorElement*> &mes, double valx, double valy, double w)
00638 {
00639
00640
00641 for(size_t i=0;i<mes.size();++i) {
00642 if (!hltTrgDeci_.at(i))
00643 continue;
00644 const double y = valy*w;
00645 mes.at(i)->Fill(valx, y);
00646 }
00647 }
00648
00649
00650 bool QcdUeDQM::trackSelection(const reco::Track &trk, const reco::BeamSpot* bs, const reco::Vertex vtx, int sizevtx )
00651 {
00652
00653
00654
00655
00656
00657 bool goodTrk = false;
00658
00659 if(sizevtx!=1) return 0;
00660 if(vtx.z()-bs->z0()==0) return 0;
00661 vtxntk_=vtxntk_-1;
00662 if(vtx.tracksSize()<= vtxntk_) return 0;
00663
00664
00665 fill1D(hNtrackerLayer_,trk.hitPattern().trackerLayersWithMeasurement());
00666 fill1D(hNtrackerPixelLayer_,trk.hitPattern().pixelLayersWithMeasurement());
00667 fill1D(hNtrackerStripPixelLayer_,(trk.hitPattern().pixelLayersWithMeasurement() + trk.hitPattern().numberOfValidStripLayersWithMonoAndStereo()));
00668 fill1D(hRatioPtErrorPt_,(trk.ptError()/trk.pt()));
00669 fill1D(hTrkPt_,trk.pt());
00670 fill1D(hTrkEta_,trk.eta());
00671 fill1D(hTrkPhi_,trk.phi());
00672 fill1D(hRatioDxySigmaDxyBS_,(trk.dxy(bs->position())/trk.dxyError()));
00673 fill1D(hRatioDxySigmaDxyPV_,(trk.dxy(vtx.position())/trk.dxyError()));
00674 fill1D(hRatioDzSigmaDzBS_,(trk.dz(bs->position())/trk.dzError()));
00675 fill1D(hRatioDzSigmaDzPV_,(trk.dz(vtx.position())/trk.dzError()));
00676 fill1D(hTrkChi2_,trk.normalizedChi2());
00677 fill1D(hTrkNdof_,trk.ndof());
00678
00679 fill1D(hBeamSpot_x_,bs->x0());
00680 fill1D(hBeamSpot_y_,bs->y0());
00681 fill1D(hBeamSpot_z_,bs->z0());
00682
00683
00684 bool layerMinCutbool=false;
00685 if (trk.hitPattern().trackerLayersWithMeasurement() >= minHit_ ||
00686 (trk.hitPattern().trackerLayersWithMeasurement()==3 && trk.hitPattern().pixelLayersWithMeasurement()==3 && allowTriplets_))
00687 layerMinCutbool=true;
00688
00689
00690
00691 bool pxlLayerMinCutbool=false;
00692 if (trk.hitPattern().pixelLayersWithMeasurement() >=pxlLayerMinCut_) pxlLayerMinCutbool=true;
00693
00694
00695
00696 bool hasPIX1 = false;
00697 if (requirePIX1_) {
00698 const reco::HitPattern& p = trk.hitPattern();
00699 for (int i=0; i<p.numberOfHits(); i++) {
00700 uint32_t hit = p.getHitPattern(i);
00701 if (p.validHitFilter(hit) && p.pixelHitFilter(hit) && p.getLayer(hit)==1) hasPIX1 = true;
00702 }
00703 }else hasPIX1 = true;
00704
00705
00706 bool ptErrorbool=false;
00707 if (trk.ptError()/trk.pt() < ptErr_pt_ ||
00708 (trk.hitPattern().trackerLayersWithMeasurement()==3 && trk.hitPattern().pixelLayersWithMeasurement()==3 && allowTriplets_)) ptErrorbool=true;
00709
00710 bool quality_ok = true;
00711 if (quality_.size()!=0) {
00712 quality_ok = false;
00713 for (unsigned int i = 0; i<quality_.size();++i) {
00714 if (trk.quality(quality_[i])){
00715 quality_ok = true;
00716 break;
00717 }
00718 }
00719 }
00720
00721 bool algo_ok = true;
00722 if (algorithm_.size()!=0) {
00723 if (std::find(algorithm_.begin(),algorithm_.end(),trk.algo())==algorithm_.end()) algo_ok = false;
00724 }
00725
00726
00727 if(bsuse_==1)
00728 {
00729 if(hasPIX1 && pxlLayerMinCutbool && layerMinCutbool && (trk.hitPattern().pixelLayersWithMeasurement() + trk.hitPattern().numberOfValidStripLayersWithMonoAndStereo()) >= min3DHit_ && ptErrorbool && fabs(trk.pt()) >= ptMin_ && trk.eta() >= minRapidity_ && trk.eta() <= maxRapidity_ && fabs(trk.dxy(bs->position())/trk.dxyError()) < tip_ && fabs(trk.dz(bs->position())/trk.dzError()) < lip_ && trk.normalizedChi2()<=maxChi2_ && quality_ok && algo_ok)goodTrk=true ;
00730 }
00731
00732 if(bsuse_==0)
00733 {
00734 if(hasPIX1 && pxlLayerMinCutbool && layerMinCutbool && (trk.hitPattern().pixelLayersWithMeasurement() + trk.hitPattern().numberOfValidStripLayersWithMonoAndStereo()) >= min3DHit_ && ptErrorbool && fabs(trk.pt()) >= ptMin_ && trk.eta() >= minRapidity_ && trk.eta() <= maxRapidity_ && fabs(trk.dxy(vtx.position())/trk.dxyError()) < tip_ && fabs(trk.dz(vtx.position())/trk.dzError()) < lip_ && trk.normalizedChi2()<=maxChi2_ && quality_ok && algo_ok)goodTrk=true;
00735
00736 }
00737
00738 return goodTrk;
00739
00740 }
00741
00742 bool QcdUeDQM::fillVtxPlots( const edm::Handle< reco::VertexCollection > vtxColl)
00743 {
00744 const reco::VertexCollection theVertices = *(vtxColl.product());
00745 bool goodVtx = false;
00746 fill1D(hNvertices_,theVertices.size());
00747 for (reco::VertexCollection::const_iterator vertexIt = theVertices.begin(); vertexIt != theVertices.end(); ++vertexIt)
00748 {
00749 fill1D(hVertex_z_,vertexIt->z());
00750 fill1D(hVertex_y_,vertexIt->y());
00751 fill1D(hVertex_x_,vertexIt->x());
00752
00753 if(fabs(vertexIt->z()) < diffvtxbs_)
00754 {
00755 goodVtx = true;
00756 vtx1=(*vertexIt);
00757
00758 break;
00759 }
00760 }
00761 return goodVtx;
00762 }
00763
00764 void QcdUeDQM::fillpTMaxRelated(const std::vector<const reco::Track *> &track)
00765 {
00766 fill1D(hNgoodTrk_,track.size());
00767 if(track.size()>0)
00768 {
00769 fill1D(hLeadingTrack_pTSpectrum_,track[0]->pt());
00770 fill1D(hLeadingTrack_phiSpectrum_,track[0]->phi());
00771 fill1D(hLeadingTrack_etaSpectrum_,track[0]->eta());
00772 }
00773 for(size_t i = 0; i < track.size(); i++)
00774 {
00775 fill1D(hGoodTrkPt500_,track[i]->pt());
00776 fill1D(hGoodTrkEta500_,track[i]->eta());
00777 fill1D(hGoodTrkPhi500_,track[i]->phi());
00778 if(track[i]->pt() > 0.9)
00779 {
00780 fill1D(hGoodTrkPt900_,track[i]->pt());
00781 fill1D(hGoodTrkEta900_,track[i]->eta());
00782 fill1D(hGoodTrkPhi900_,track[i]->phi());
00783 }
00784 }
00785
00786 }
00787
00788
00789 void QcdUeDQM::fillChargedJetSpectra(const edm::Handle<reco::CandidateView> trackJets)
00790 {
00791 fill1D(hChargedJetMulti_,trackJets->size());
00792 for( reco::CandidateView::const_iterator f = trackJets->begin(); f != trackJets->end(); f++)
00793 {
00794 if(f != trackJets->begin())continue;
00795 fill1D(hLeadingChargedJet_pTSpectrum_,f->pt());
00796 fill1D(hLeadingChargedJet_etaSpectrum_,f->eta());
00797 fill1D(hLeadingChargedJet_phiSpectrum_,f->phi());
00798 }
00799
00800 }
00801
00802 void QcdUeDQM::fillCaloJetSpectra(const edm::Handle<reco::CaloJetCollection> caloJets)
00803 {
00804 fill1D(hCaloJetMulti_,caloJets->size());
00805 for( reco::CaloJetCollection::const_iterator f = caloJets->begin(); f != caloJets->end(); f++)
00806 {
00807 if(f != caloJets->begin())continue;
00808 fill1D(hLeadingCaloJet_pTSpectrum_,f->pt());
00809 fill1D(hLeadingCaloJet_etaSpectrum_,f->eta());
00810 fill1D(hLeadingCaloJet_phiSpectrum_,f->phi());
00811 }
00812
00813 }
00814
00815
00816
00817
00818
00819
00820
00821 void QcdUeDQM::fillUE_with_MaxpTtrack(const std::vector<const reco::Track*> &track)
00822 {
00823 double w = 0.119;
00824
00825 double nTrk500_TransReg = 0;
00826 double nTrk500_AwayReg = 0;
00827 double nTrk500_TowardReg = 0;
00828
00829 double pTSum500_TransReg = 0;
00830 double pTSum500_AwayReg = 0;
00831 double pTSum500_TowardReg = 0;
00832
00833
00834 double nTrk900_TransReg = 0;
00835 double nTrk900_AwayReg = 0;
00836 double nTrk900_TowardReg = 0;
00837
00838 double pTSum900_TransReg = 0;
00839 double pTSum900_AwayReg = 0;
00840 double pTSum900_TowardReg = 0;
00841 if(track.size() > 0)
00842 {
00843 if(track[0]->pt() > 1.)
00844 {
00845 for(size_t i = 1; i < track.size();i++)
00846 {
00847
00848 double dphi = (180./PI)*(deltaPhi(track[0]->phi(),track[i]->phi()));
00849 fill1D(hdPhi_maxpTTrack_tracks_,dphi);
00850 if(fabs(dphi)>60. && fabs(dphi)<120.)
00851 {
00852 pTSum500_TransReg = pTSum500_TransReg + track[i]->pt();
00853 nTrk500_TransReg++;
00854 if(track[i]->pt() > 0.9)
00855 {
00856 pTSum900_TransReg = pTSum900_TransReg + track[i]->pt();
00857 nTrk900_TransReg++;
00858 }
00859 }
00860
00861 if(fabs(dphi)>120. && fabs(dphi)<180.)
00862 {
00863 pTSum500_AwayReg = pTSum500_AwayReg + track[i]->pt();
00864 nTrk500_AwayReg++;
00865 if(track[i]->pt() > 0.9)
00866 {
00867 pTSum900_AwayReg = pTSum900_AwayReg + track[i]->pt();
00868 nTrk900_AwayReg++;
00869
00870 }
00871 }
00872
00873 if(fabs(dphi)<60.)
00874 {
00875 pTSum500_TowardReg = pTSum500_TowardReg + track[i]->pt();
00876 nTrk500_TowardReg++;
00877 if(track[i]->pt() > 0.9)
00878 {
00879 pTSum900_TowardReg = pTSum900_TowardReg + track[i]->pt();
00880 nTrk900_TowardReg++;
00881 }
00882 }
00883 }
00884 }
00885
00886 fillProfile(hdNdEtadPhi_pTMax_Toward500_, track[0]->pt(),nTrk500_TowardReg,w);
00887 fillProfile(hdNdEtadPhi_pTMax_Transverse500_, track[0]->pt(),nTrk500_TransReg,w);
00888 fillProfile(hdNdEtadPhi_pTMax_Away500_, track[0]->pt(),nTrk500_AwayReg,w);
00889
00890 fillProfile(hpTSumdEtadPhi_pTMax_Toward500_,track[0]->pt() ,pTSum500_TowardReg,w);
00891 fillProfile(hpTSumdEtadPhi_pTMax_Transverse500_,track[0]->pt(),pTSum500_TransReg,w);
00892 fillProfile(hpTSumdEtadPhi_pTMax_Away500_, track[0]->pt(),pTSum500_AwayReg,w);
00893
00894 fillProfile(hdNdEtadPhi_pTMax_Toward900_, track[0]->pt(),nTrk900_TowardReg,w);
00895 fillProfile(hdNdEtadPhi_pTMax_Transverse900_, track[0]->pt(),nTrk900_TransReg,w);
00896 fillProfile(hdNdEtadPhi_pTMax_Away900_, track[0]->pt(),nTrk900_AwayReg,w);
00897
00898 fillProfile(hpTSumdEtadPhi_pTMax_Toward900_,track[0]->pt() ,pTSum900_TowardReg,w);
00899 fillProfile(hpTSumdEtadPhi_pTMax_Transverse900_,track[0]->pt(),pTSum900_TransReg,w);
00900 fillProfile(hpTSumdEtadPhi_pTMax_Away900_, track[0]->pt(),pTSum900_AwayReg,w);
00901 }
00902 }
00903
00904 void QcdUeDQM::fillUE_with_ChargedJets(const std::vector<const reco::Track *> &track, const edm::Handle<reco::CandidateView> &trackJets)
00905 {
00906 double w = 0.119;
00907 double nTrk500_TransReg = 0;
00908 double nTrk500_AwayReg = 0;
00909 double nTrk500_TowardReg = 0;
00910
00911 double pTSum500_TransReg = 0;
00912 double pTSum500_AwayReg = 0;
00913 double pTSum500_TowardReg = 0;
00914
00915
00916 double nTrk900_TransReg = 0;
00917 double nTrk900_AwayReg = 0;
00918 double nTrk900_TowardReg = 0;
00919
00920 double pTSum900_TransReg = 0;
00921 double pTSum900_AwayReg = 0;
00922 double pTSum900_TowardReg = 0;
00923
00924 if(!(trackJets->empty()) && (trackJets->begin())->pt() > 1.)
00925 {
00926 double jetPhi = (trackJets->begin())->phi();
00927 for(size_t i = 0; i < track.size();i++)
00928 {
00929 double dphi = (180./PI)*(deltaPhi(jetPhi,track[i]->phi()));
00930 fill1D(hdPhi_chargedJet_tracks_,dphi);
00931 if(fabs(dphi)>60. && fabs(dphi)<120.)
00932 {
00933 pTSum500_TransReg = pTSum500_TransReg + track[i]->pt();
00934 nTrk500_TransReg++;
00935 if(track[i]->pt() > 0.9)
00936 {
00937 pTSum900_TransReg = pTSum900_TransReg + track[i]->pt();
00938 nTrk900_TransReg++;
00939 }
00940 }
00941
00942 if(fabs(dphi)>120. && fabs(dphi)<180.)
00943 {
00944 pTSum500_AwayReg = pTSum500_AwayReg + track[i]->pt();
00945 nTrk500_AwayReg++;
00946 if(track[i]->pt() > 0.9)
00947 {
00948 pTSum900_AwayReg = pTSum900_AwayReg + track[i]->pt();
00949 nTrk900_AwayReg++;
00950 }
00951 }
00952 if(fabs(dphi)<60.)
00953 {
00954 pTSum500_TowardReg = pTSum500_TowardReg + track[i]->pt();
00955 nTrk500_TowardReg++;
00956 if(track[i]->pt() > 0.9)
00957 {
00958 pTSum900_TowardReg = pTSum900_TowardReg + track[i]->pt();
00959 nTrk900_TowardReg++;
00960 }
00961 }
00962 }
00963
00964 }
00965
00966 fillProfile(hdNdEtadPhi_trackJet_Toward500_, (trackJets->begin())->pt(),nTrk500_TowardReg,w);
00967 fillProfile(hdNdEtadPhi_trackJet_Transverse500_, (trackJets->begin())->pt(),nTrk500_TransReg,w);
00968 fillProfile(hdNdEtadPhi_trackJet_Away500_, (trackJets->begin())->pt(),nTrk500_AwayReg,w);
00969
00970 fillProfile(hpTSumdEtadPhi_trackJet_Toward500_, (trackJets->begin())->pt(),pTSum500_TowardReg,w);
00971 fillProfile(hpTSumdEtadPhi_trackJet_Transverse500_, (trackJets->begin())->pt(),pTSum500_TransReg,w);
00972 fillProfile(hpTSumdEtadPhi_trackJet_Away500_, (trackJets->begin())->pt(),pTSum500_AwayReg,w);
00973
00974 fillProfile(hdNdEtadPhi_trackJet_Toward900_, (trackJets->begin())->pt(),nTrk900_TowardReg,w);
00975 fillProfile(hdNdEtadPhi_trackJet_Transverse900_, (trackJets->begin())->pt(),nTrk900_TransReg,w);
00976 fillProfile(hdNdEtadPhi_trackJet_Away900_, (trackJets->begin())->pt(),nTrk900_AwayReg,w);
00977
00978 fillProfile(hpTSumdEtadPhi_trackJet_Toward900_, (trackJets->begin())->pt(),pTSum900_TowardReg,w);
00979 fillProfile(hpTSumdEtadPhi_trackJet_Transverse900_, (trackJets->begin())->pt(),pTSum900_TransReg,w);
00980 fillProfile(hpTSumdEtadPhi_trackJet_Away900_, (trackJets->begin())->pt(),pTSum900_AwayReg,w);
00981 }
00982
00983 void QcdUeDQM:: fillUE_with_CaloJets(const std::vector<const reco::Track *> &track, const edm::Handle<reco::CaloJetCollection> &caloJets)
00984 {
00985 double w = 0.119;
00986 double nTrk500_TransReg = 0;
00987 double nTrk500_AwayReg = 0;
00988 double nTrk500_TowardReg = 0;
00989
00990 double pTSum500_TransReg = 0;
00991 double pTSum500_AwayReg = 0;
00992 double pTSum500_TowardReg = 0;
00993
00994 double nTrk900_TransReg = 0;
00995 double nTrk900_AwayReg = 0;
00996 double nTrk900_TowardReg = 0;
00997
00998 double pTSum900_TransReg = 0;
00999 double pTSum900_AwayReg = 0;
01000 double pTSum900_TowardReg = 0;
01001 if(!(caloJets->empty()) && (caloJets->begin())->pt() > 1.)
01002 {
01003 double jetPhi = (caloJets->begin())->phi();
01004 for(size_t i = 0; i < track.size();i++)
01005 {
01006 double dphi = (180./PI)*(deltaPhi(jetPhi,track[i]->phi()));
01007 fill1D(hdPhi_caloJet_tracks_,dphi);
01008 if(fabs(dphi)>60. && fabs(dphi)<120.)
01009 {
01010 pTSum500_TransReg = pTSum500_TransReg + track[i]->pt();
01011 nTrk500_TransReg++;
01012 if(track[i]->pt() > 0.9)
01013 {
01014 pTSum900_TransReg = pTSum900_TransReg + track[i]->pt();
01015 nTrk900_TransReg++;
01016 }
01017 }
01018 if(fabs(dphi)>120. && fabs(dphi)<180.)
01019 {
01020 pTSum500_AwayReg = pTSum500_AwayReg + track[i]->pt();
01021 nTrk500_AwayReg++;
01022 if(track[i]->pt() > 0.9)
01023 {
01024 pTSum900_AwayReg = pTSum900_AwayReg + track[i]->pt();
01025 nTrk900_AwayReg++;
01026 }
01027 }
01028 if(fabs(dphi)<60.)
01029 {
01030 pTSum500_TowardReg = pTSum500_TowardReg + track[i]->pt();
01031 nTrk500_TowardReg++;
01032 if(track[i]->pt() > 0.9)
01033 {
01034 pTSum900_TowardReg = pTSum900_TowardReg + track[i]->pt();
01035 nTrk900_TowardReg++;
01036 }
01037 }
01038 }
01039
01040 }
01041 fillProfile(hdNdEtadPhi_caloJet_Toward500_, (caloJets->begin())->pt(),nTrk500_TowardReg,w);
01042 fillProfile(hdNdEtadPhi_caloJet_Transverse500_, (caloJets->begin())->pt(),nTrk500_TransReg,w);
01043 fillProfile(hdNdEtadPhi_caloJet_Away500_, (caloJets->begin())->pt(),nTrk500_AwayReg,w);
01044
01045 fillProfile(hpTSumdEtadPhi_caloJet_Toward500_, (caloJets->begin())->pt(),pTSum500_TowardReg,w);
01046 fillProfile(hpTSumdEtadPhi_caloJet_Transverse500_, (caloJets->begin())->pt(),pTSum500_TransReg,w);
01047 fillProfile(hpTSumdEtadPhi_caloJet_Away500_, (caloJets->begin())->pt(),pTSum500_AwayReg,w);
01048
01049 fillProfile(hdNdEtadPhi_caloJet_Toward900_, (caloJets->begin())->pt(),nTrk900_TowardReg,w);
01050 fillProfile(hdNdEtadPhi_caloJet_Transverse900_, (caloJets->begin())->pt(),nTrk900_TransReg,w);
01051 fillProfile(hdNdEtadPhi_caloJet_Away900_, (caloJets->begin())->pt(),nTrk900_AwayReg,w);
01052
01053 fillProfile(hpTSumdEtadPhi_caloJet_Toward900_, (caloJets->begin())->pt(),pTSum900_TowardReg,w);
01054 fillProfile(hpTSumdEtadPhi_caloJet_Transverse900_, (caloJets->begin())->pt(),pTSum900_TransReg,w);
01055 fillProfile(hpTSumdEtadPhi_caloJet_Away900_, (caloJets->begin())->pt(),pTSum900_AwayReg,w);
01056
01057
01058 }
01059
01060 void QcdUeDQM::fillHltBits(const Event &iEvent)
01061 {
01062
01063
01064 Handle<TriggerResults> triggerResultsHLT;
01065 getProduct(hltUsedResName_, triggerResultsHLT, iEvent);
01066
01067 for(size_t i=0;i<hltTrgBits_.size();++i) {
01068 if (hltTrgBits_.at(i)<0)
01069 continue;
01070 size_t tbit = hltTrgBits_.at(i);
01071 if (tbit<triggerResultsHLT->size()) {
01072 hltTrgDeci_[i] = triggerResultsHLT->accept(tbit);
01073 }
01074 }
01075
01076 for(size_t i=0;i<hltTrgBits_.size();++i) {
01077 if (hltTrgDeci_.at(i))
01078 h2TrigCorr_->Fill(i,i);
01079 for(size_t j=i+1;j<hltTrgBits_.size();++j) {
01080 if (hltTrgDeci_.at(i) && hltTrgDeci_.at(j))
01081 h2TrigCorr_->Fill(i,j);
01082 if (hltTrgDeci_.at(i) && !hltTrgDeci_.at(j))
01083 h2TrigCorr_->Fill(j,i);
01084 }
01085 }
01086 }
01087
01088
01089
01090
01091