00001
00002
00003
00004
00005
00006
00015
00016
00017
00018
00019
00020
00021 #define _DEBUG_QUIET
00022
00023 #include "Calibration/IsolatedParticles/plugins/IsolatedTracksCone.h"
00024 #include "Calibration/IsolatedParticles/interface/ChargeIsolation.h"
00025
00026 #include "DataFormats/HLTReco/interface/TriggerObject.h"
00027 #include "FWCore/Common/interface/TriggerNames.h"
00028 #include "FWCore/Framework/interface/LuminosityBlock.h"
00029 #include "DataFormats/Common/interface/TriggerResults.h"
00030 #include "DataFormats/HLTReco/interface/TriggerEvent.h"
00031 #include "DataFormats/HLTReco/interface/TriggerTypeDefs.h"
00032
00033 #include "CondFormats/DataRecord/interface/EcalChannelStatusRcd.h"
00034 #include "RecoLocalCalo/EcalRecAlgos/interface/EcalSeverityLevelAlgo.h"
00035 #include "RecoLocalCalo/EcalRecAlgos/interface/EcalSeverityLevelAlgoRcd.h"
00036
00037 IsolatedTracksCone::IsolatedTracksCone(const edm::ParameterSet& iConfig) {
00038
00039
00040 doMC = iConfig.getUntrackedParameter<bool> ("DoMC", false);
00041 myverbose_ =
00042 iConfig.getUntrackedParameter<int>( "Verbosity", 5 );
00043 useJetTrigger_ =
00044 iConfig.getUntrackedParameter<bool>( "useJetTrigger", false);
00045 drLeadJetVeto_ =
00046 iConfig.getUntrackedParameter<double>( "drLeadJetVeto", 1.2 );
00047 ptMinLeadJet_ =
00048 iConfig.getUntrackedParameter<double>( "ptMinLeadJet", 15.0 );
00049
00050 debugTrks_ =
00051 iConfig.getUntrackedParameter<int>("DebugTracks");
00052 printTrkHitPattern_ =
00053 iConfig.getUntrackedParameter<bool>("PrintTrkHitPattern");
00054
00055 minTrackP_ =
00056 iConfig.getUntrackedParameter<double>( "minTrackP", 10.0);
00057 maxTrackEta_ =
00058 iConfig.getUntrackedParameter<double>( "maxTrackEta", 5.0);
00059 maxNearTrackP_ =
00060 iConfig.getUntrackedParameter<double>( "maxNearTrackP", 1.0);
00061
00062 debugEcalSimInfo_ =
00063 iConfig.getUntrackedParameter<int>("DebugEcalSimInfo");
00064
00065 applyEcalIsolation_ =
00066 iConfig.getUntrackedParameter<bool>("ApplyEcalIsolation");
00067
00068 _L1extraTauJetSource =
00069 iConfig.getParameter<edm::InputTag>("L1extraTauJetSource");
00070 _L1extraCenJetSource =
00071 iConfig.getParameter<edm::InputTag>("L1extraCenJetSource");
00072 _L1extraFwdJetSource =
00073 iConfig.getParameter<edm::InputTag>("L1extraFwdJetSource");
00074
00075 edm::ParameterSet parameters =
00076 iConfig.getParameter<edm::ParameterSet>("TrackAssociatorParameters");
00077 parameters_.loadParameters( parameters );
00078 trackAssociator_ = new TrackDetectorAssociator();
00079 trackAssociator_->useDefaultPropagator();
00080
00081 if(myverbose_>=0) {
00082 std::cout <<"Parameters read from config file \n"
00083 << "myverbose_ " << myverbose_ << "\n"
00084 << "useJetTrigger_ " << useJetTrigger_ << "\n"
00085 << "drLeadJetVeto_ " << drLeadJetVeto_ << "\n"
00086 << "minTrackP_ " << minTrackP_ << "\n"
00087 << "maxTrackEta_ " << maxTrackEta_ << "\n"
00088 << "maxNearTrackP_ " << maxNearTrackP_
00089 << std::endl;
00090 }
00091 }
00092
00093 IsolatedTracksCone::~IsolatedTracksCone() {
00094 delete trackAssociator_;
00095 }
00096
00097 void IsolatedTracksCone::analyze(const edm::Event& iEvent,
00098 const edm::EventSetup& iSetup) {
00099
00100 unsigned int irun = (unsigned int)iEvent.id().run();
00101 unsigned int ilum = (unsigned int)iEvent.getLuminosityBlock().luminosityBlock();
00102 unsigned int ievt = (unsigned int)iEvent.id().event();
00103
00104
00105
00106 clearTrackVectors();
00107
00108
00109 bool L1Pass = false;
00110 leadL1JetPT=-999, leadL1JetEta=-999, leadL1JetPhi=-999;
00111 if( !useJetTrigger_ ) {
00112 L1Pass = true;
00113 } else {
00114 edm::Handle<l1extra::L1JetParticleCollection> l1TauHandle;
00115 iEvent.getByLabel(_L1extraTauJetSource,l1TauHandle);
00116 l1extra::L1JetParticleCollection::const_iterator itr;
00117 for(itr = l1TauHandle->begin(); itr != l1TauHandle->end(); ++itr )
00118 {
00119 if( itr->pt()>leadL1JetPT ) {
00120 leadL1JetPT = itr->pt();
00121 leadL1JetEta = itr->eta();
00122 leadL1JetPhi = itr->phi();
00123 }
00124 }
00125 edm::Handle<l1extra::L1JetParticleCollection> l1CenJetHandle;
00126 iEvent.getByLabel(_L1extraCenJetSource,l1CenJetHandle);
00127 for( itr = l1CenJetHandle->begin(); itr != l1CenJetHandle->end(); ++itr )
00128 {
00129 if( itr->pt()>leadL1JetPT ) {
00130 leadL1JetPT = itr->pt();
00131 leadL1JetEta = itr->eta();
00132 leadL1JetPhi = itr->phi();
00133 }
00134 }
00135 edm::Handle<l1extra::L1JetParticleCollection> l1FwdJetHandle;
00136 iEvent.getByLabel(_L1extraFwdJetSource,l1FwdJetHandle);
00137 for( itr = l1FwdJetHandle->begin(); itr != l1FwdJetHandle->end(); ++itr )
00138 {
00139 if( itr->pt()>leadL1JetPT ) {
00140 leadL1JetPT = itr->pt();
00141 leadL1JetEta = itr->eta();
00142 leadL1JetPhi = itr->phi();
00143 }
00144 }
00145 if(leadL1JetPT>ptMinLeadJet_)
00146 {
00147 L1Pass = true;
00148 }
00149
00150 }
00151
00152
00154
00156 if (!L1Pass) {
00157 nEVT_failL1++;
00158
00159
00160 }
00161
00163
00165
00166
00167 edm::ESHandle<CaloGeometry> pG;
00168 iSetup.get<CaloGeometryRecord>().get(pG);
00169 const CaloGeometry* geo = pG.product();
00170 const CaloSubdetectorGeometry* gEB =
00171 geo->getSubdetectorGeometry(DetId::Ecal,EcalBarrel);
00172 const CaloSubdetectorGeometry* gEE =
00173 geo->getSubdetectorGeometry(DetId::Ecal,EcalEndcap);
00174 const CaloSubdetectorGeometry* gHB =
00175 geo->getSubdetectorGeometry(DetId::Hcal,HcalBarrel);
00176 const CaloSubdetectorGeometry* gHE =
00177 geo->getSubdetectorGeometry(DetId::Hcal,HcalEndcap);
00178
00179 edm::ESHandle<CaloTopology> theCaloTopology;
00180 iSetup.get<CaloTopologyRecord>().get(theCaloTopology);
00181 const CaloTopology *caloTopology = theCaloTopology.product();
00182
00183
00184
00185 edm::ESHandle<HcalTopology> htopo;
00186 iSetup.get<IdealGeometryRecord>().get(htopo);
00187 const HcalTopology* theHBHETopology = htopo.product();
00188
00189 edm::Handle<EcalRecHitCollection> barrelRecHitsHandle;
00190 edm::Handle<EcalRecHitCollection> endcapRecHitsHandle;
00191 iEvent.getByLabel("ecalRecHit","EcalRecHitsEB",barrelRecHitsHandle);
00192 iEvent.getByLabel("ecalRecHit","EcalRecHitsEE",endcapRecHitsHandle);
00193
00194
00195 edm::ESHandle<EcalChannelStatus> ecalChStatus;
00196 iSetup.get<EcalChannelStatusRcd>().get(ecalChStatus);
00197 const EcalChannelStatus* theEcalChStatus = ecalChStatus.product();
00198
00199 edm::Handle<HBHERecHitCollection> hbhe;
00200 iEvent.getByLabel("hbhereco",hbhe);
00201 const HBHERecHitCollection Hithbhe = *(hbhe.product());
00202
00203 edm::Handle<reco::TrackCollection> trkCollection;
00204 iEvent.getByLabel("generalTracks", trkCollection);
00205 reco::TrackCollection::const_iterator trkItr;
00206 if(debugTrks_>1){
00207 std::cout << "Track Collection: " << std::endl;
00208 std::cout << "Number of Tracks " << trkCollection->size() << std::endl;
00209 }
00210 std::string theTrackQuality = "highPurity";
00211 reco::TrackBase::TrackQuality trackQuality_=
00212 reco::TrackBase::qualityByName(theTrackQuality);
00213
00214
00215 edm::Handle<edm::SimTrackContainer> SimTk;
00216 if (doMC) iEvent.getByLabel("g4SimHits",SimTk);
00217 edm::SimTrackContainer::const_iterator simTrkItr;
00218
00219 edm::Handle<edm::SimVertexContainer> SimVtx;
00220 if (doMC) iEvent.getByLabel("g4SimHits",SimVtx);
00221
00222
00223 edm::Handle<edm::PCaloHitContainer> pcaloeb;
00224 if (doMC) iEvent.getByLabel("g4SimHits", "EcalHitsEB", pcaloeb);
00225
00226 edm::Handle<edm::PCaloHitContainer> pcaloee;
00227 if (doMC) iEvent.getByLabel("g4SimHits", "EcalHitsEE", pcaloee);
00228
00229 edm::Handle<edm::PCaloHitContainer> pcalohh;
00230 if (doMC) iEvent.getByLabel("g4SimHits", "HcalHits", pcalohh);
00231
00232
00233
00235
00237
00238 edm::InputTag theTriggerResultsLabel ("TriggerResults","","HLT");
00239 edm::Handle<edm::TriggerResults> triggerResults;
00240 iEvent.getByLabel( theTriggerResultsLabel, triggerResults);
00241
00242
00243
00244 std::vector<int> v_hlTriggers;
00245 int hltHB(-99);
00246 int hltHE(-99);
00247 int hltL1Jet15 (-99);
00248 int hltJet30 (-99);
00249 int hltJet50 (-99);
00250 int hltJet80 (-99);
00251 int hltJet110 (-99);
00252 int hltJet140 (-99);
00253 int hltJet180 (-99);
00254 int hltL1SingleEG5 (-99);
00255 int hltZeroBias (-99);
00256 int hltMinBiasHcal (-99);
00257 int hltMinBiasEcal (-99);
00258 int hltMinBiasPixel (-99);
00259 int hltSingleIsoTau30_Trk5 (-99);
00260 int hltDoubleLooseIsoTau15_Trk5(-99);
00261
00262 if (triggerResults.isValid()) {
00263
00264 const edm::TriggerNames & triggerNames = iEvent.triggerNames(*triggerResults);
00265
00266
00267
00268 for (unsigned int i=0; i<triggerResults->size(); i++){
00269
00270 if (triggerNames.triggerName(i) == "HLT_IsoTrackHE_1E31") hltHE = triggerResults->accept(i);
00271 if (triggerNames.triggerName(i) == "HLT_IsoTrackHB_1E31") hltHB = triggerResults->accept(i);
00272 if (triggerNames.triggerName(i) == "HLT_L1Jet15" ) hltL1Jet15 = triggerResults->accept(i);
00273 if (triggerNames.triggerName(i) == "HLT_Jet30" ) hltJet30 = triggerResults->accept(i);
00274 if (triggerNames.triggerName(i) == "HLT_Jet50" ) hltJet50 = triggerResults->accept(i);
00275 if (triggerNames.triggerName(i) == "HLT_Jet80" ) hltJet80 = triggerResults->accept(i);
00276 if (triggerNames.triggerName(i) == "HLT_Jet110" ) hltJet110 = triggerResults->accept(i);
00277 if (triggerNames.triggerName(i) == "HLT_Jet140" ) hltJet140 = triggerResults->accept(i);
00278 if (triggerNames.triggerName(i) == "HLT_Jet180" ) hltJet180 = triggerResults->accept(i);
00279 if (triggerNames.triggerName(i) == "HLT_L1SingleEG5" ) hltL1SingleEG5 = triggerResults->accept(i);
00280 if (triggerNames.triggerName(i) == "HLT_ZeroBias" ) hltZeroBias = triggerResults->accept(i);
00281 if (triggerNames.triggerName(i) == "HLT_MinBiasHcal" ) hltMinBiasHcal = triggerResults->accept(i);
00282 if (triggerNames.triggerName(i) == "HLT_MinBiasEcal" ) hltMinBiasEcal = triggerResults->accept(i);
00283 if (triggerNames.triggerName(i) == "HLT_MinBiasPixel" ) hltMinBiasPixel = triggerResults->accept(i);
00284 if (triggerNames.triggerName(i) == "HLT_SingleIsoTau30_Trk5" ) hltSingleIsoTau30_Trk5 = triggerResults->accept(i);
00285 if (triggerNames.triggerName(i) == "HLT_DoubleLooseIsoTau15_Trk5" ) hltDoubleLooseIsoTau15_Trk5 = triggerResults->accept(i);
00286 }
00287 }
00288
00289
00290
00291
00293
00295 TrackerHitAssociator* associate=0;
00296 if (doMC) associate = new TrackerHitAssociator(iEvent);
00297
00298
00299 nTRK = 0;
00300 nRawTRK = 0;
00301 nFailPt = 0;
00302 nFailEta = 0;
00303 nFailHighPurityQaul = 0;
00304 nMissEcal = 0;
00305 nMissHcal = 0;
00306
00307 for( trkItr = trkCollection->begin();
00308 trkItr != trkCollection->end(); ++trkItr)
00309 {
00310
00311 nRawTRK++;
00312
00313 const reco::Track* pTrack = &(*trkItr);
00314
00316
00318
00319 bool trkQual = pTrack->quality(trackQuality_);
00320 bool goodPt = pTrack->p()>minTrackP_;
00321 bool goodEta = std::abs(pTrack->momentum().eta())<maxTrackEta_;
00322
00323 double eta1 = pTrack->momentum().eta();
00324 double phi1 = pTrack->momentum().phi();
00325 double pt1 = pTrack->pt();
00326 double p1 = pTrack->p();
00327
00328
00329 if (!goodEta){
00330 nFailEta++;
00331 }
00332 if (!goodPt){
00333 nFailPt++;
00334 }
00335 if (!trkQual){
00336 nFailHighPurityQaul++;
00337 }
00338
00339 hRawPt ->Fill(pt1 );
00340 hRawP ->Fill(p1 );
00341 hRawEta->Fill(eta1);
00342 hRawPhi->Fill(phi1);
00343
00344 if( !goodEta || !goodPt || !trkQual ) continue;
00345
00347
00349
00350
00351 const FreeTrajectoryState fts1 =
00352 trackAssociator_->getFreeTrajectoryState(iSetup, *pTrack);
00353
00354
00355 TrackDetMatchInfo info1 =
00356 trackAssociator_->associate(iEvent, iSetup, fts1, parameters_);
00357
00358
00359
00361
00363
00364 if (info1.trkGlobPosAtHcal.x()==0 &&
00365 info1.trkGlobPosAtHcal.y()==0 &&
00366 info1.trkGlobPosAtHcal.z()==0)
00367 {
00368 nMissHcal++;
00369 continue;
00370 }
00371
00372 const GlobalPoint hpoint1(info1.trkGlobPosAtHcal.x(),
00373 info1.trkGlobPosAtHcal.y(),
00374 info1.trkGlobPosAtHcal.z());
00375
00376
00377
00379
00381
00382 const reco::HitPattern& hitp = pTrack->hitPattern();
00383 int nLayersCrossed = hitp.trackerLayersWithMeasurement();
00384 int nOuterHits = hitp.stripTOBLayersWithMeasurement()
00385 +hitp.stripTECLayersWithMeasurement() ;
00386
00387
00388 double simP = 0;
00389 if (doMC) {
00390 edm::SimTrackContainer::const_iterator matchedSimTrk =
00391 spr::matchedSimTrack(iEvent, SimTk, SimVtx, pTrack, *associate, false);
00392 simP = matchedSimTrk->momentum().P();
00393 }
00395
00397
00398 const GlobalPoint point1(info1.trkGlobPosAtEcal.x(),
00399 info1.trkGlobPosAtEcal.y(),
00400 info1.trkGlobPosAtEcal.z());
00401
00402
00403
00404
00405 if (info1.trkGlobPosAtEcal.x()==0 &&
00406 info1.trkGlobPosAtEcal.y()==0 &&
00407 info1.trkGlobPosAtEcal.z()==0)
00408 {
00409 std::cout << "Track doesn't reach Ecal." << std::endl;
00410 nMissEcal++;
00411 continue;
00412 }
00413
00414
00415
00416 GlobalVector trackMomAtEcal = info1.trkMomAtEcal;
00417 GlobalVector trackMomAtHcal = info1.trkMomAtHcal;
00418
00420
00422
00423 double drFromLeadJet = 999.0;
00424 if( useJetTrigger_ ) {
00425 double dphi = DeltaPhi(phi1, leadL1JetPhi);
00426 double deta = eta1 - leadL1JetEta;
00427 drFromLeadJet = sqrt(dphi*dphi + deta*deta);
00428 }
00429
00430
00432
00433
00435
00436 const int a_size = 7;
00437 double a_coneR[a_size];
00438 double a_charIsoR[a_size];
00439 double a_neutIsoR[a_size];
00440
00441 a_coneR[0] = 17.49;
00442 a_coneR[1] = 26.23;
00443 a_coneR[2] = 30.61;
00444 a_coneR[3] = 34.98;
00445 a_coneR[4] = 39.35;
00446 a_coneR[5] = 43.72;
00447 a_coneR[6] = 52.46;
00448
00449 for (int i=0; i<a_size; i++){
00450 a_charIsoR[i] = a_coneR[i]+28.9;
00451 a_neutIsoR[i] = a_charIsoR[i]*0.726;
00452 }
00453
00455
00457
00458
00459 double e3x3=-999.0;
00460 double trkEcalEne =-999.0;
00461 edm::ESHandle<EcalSeverityLevelAlgo> sevlv;
00462 iSetup.get<EcalSeverityLevelAlgoRcd>().get(sevlv);
00463
00464 if(std::abs(point1.eta())<1.479) {
00465 const DetId isoCell = gEB->getClosestCell(point1);
00466 e3x3 = spr::eECALmatrix(isoCell,barrelRecHitsHandle,endcapRecHitsHandle, *theEcalChStatus, geo, caloTopology, sevlv.product(),1,1).first;
00467 trkEcalEne = spr::eCaloSimInfo(iEvent, geo, pcaloeb, pcaloee, SimTk, SimVtx, pTrack, *associate);
00468 } else {
00469 const DetId isoCell = gEE->getClosestCell(point1);
00470 e3x3 = spr::eECALmatrix(isoCell,barrelRecHitsHandle,endcapRecHitsHandle, *theEcalChStatus, geo, caloTopology, sevlv.product(),1,1).first;
00471 trkEcalEne = spr::eCaloSimInfo(iEvent, geo, pcaloeb, pcaloee, SimTk, SimVtx, pTrack, *associate);
00472 }
00473
00474
00475
00476
00477 const int a_mip_size = 5;
00478 double a_mipR[a_mip_size];
00479 a_mipR[0] = 3.84;
00480 a_mipR[1] = 14.0;
00481 a_mipR[2] = 19.0;
00482 a_mipR[3] = 24.0;
00483 a_mipR[4] = 9.0;
00484
00485 std::vector<double> v_eDR;
00486 for (int i = 0 ; i < a_size ; i++){
00487 int nRH_eDR = 0;
00488
00489
00490 double eDR = spr::eCone_ecal(geo,
00491 barrelRecHitsHandle,
00492 endcapRecHitsHandle,
00493 hpoint1, point1,
00494 a_neutIsoR[i],
00495 trackMomAtEcal, nRH_eDR);
00496 v_eDR.push_back(eDR);
00497
00498 }
00499
00500 std::vector<double> v_eMipDR;
00501 for (int i = 0 ; i < a_mip_size ; i++){
00502 int nRH_eMipDR = 0;
00503 double eMipDR = spr::eCone_ecal(geo, barrelRecHitsHandle,
00504 endcapRecHitsHandle,
00505 hpoint1, point1,
00506 a_mipR[i], trackMomAtEcal, nRH_eMipDR);
00507
00508 v_eMipDR.push_back(eMipDR);
00509 }
00510
00511
00513
00514
00516
00517 std::vector<double> v_hmaxNearP_goodTrk;
00518 std::vector<double> v_hmaxNearP ;
00519 std::vector<int> v_hnNearTRKs ;
00520 std::vector<int> v_hnLayers_maxNearP;
00521 std::vector<int> v_htrkQual_maxNearP;
00522
00523 std::vector<double> v_cone_hmaxNearP_goodTrk;
00524 std::vector<double> v_cone_hmaxNearP ;
00525 std::vector<int> v_cone_hnNearTRKs ;
00526 std::vector<int> v_cone_hnLayers_maxNearP;
00527 std::vector<int> v_cone_htrkQual_maxNearP;
00528
00529 for (int i = 0 ; i < a_size ; i++){
00530
00531 double hmaxNearP = -999.0;
00532 int hnNearTRKs = 0;
00533 int hnLayers_maxNearP = 0;
00534 int htrkQual_maxNearP = -1;
00535 double hmaxNearP_goodTrk = -999.0;
00536
00537 double conehmaxNearP = -999.0;
00538 int conehnNearTRKs = 0;
00539 int conehnLayers_maxNearP = 0;
00540 int conehtrkQual_maxNearP = -1;
00541 double conehmaxNearP_goodTrk = -999.0;
00542
00543 conehmaxNearP = spr::coneChargeIsolation(iEvent, iSetup,
00544 trkItr, trkCollection,
00545 *trackAssociator_, parameters_,
00546 theTrackQuality, conehnNearTRKs,
00547 conehnLayers_maxNearP,
00548 conehtrkQual_maxNearP,
00549 conehmaxNearP_goodTrk,
00550 hpoint1, trackMomAtHcal,
00551 a_charIsoR[i]);
00552
00553 v_hmaxNearP_goodTrk.push_back(hmaxNearP_goodTrk);
00554 v_hmaxNearP .push_back(hmaxNearP );
00555 v_hnNearTRKs .push_back(hnNearTRKs );
00556 v_hnLayers_maxNearP.push_back(hnLayers_maxNearP);
00557 v_htrkQual_maxNearP.push_back(htrkQual_maxNearP);
00558
00559 v_cone_hmaxNearP_goodTrk.push_back(conehmaxNearP_goodTrk);
00560 v_cone_hmaxNearP .push_back(conehmaxNearP );
00561 v_cone_hnNearTRKs .push_back(conehnNearTRKs );
00562 v_cone_hnLayers_maxNearP.push_back(conehnLayers_maxNearP);
00563 v_cone_htrkQual_maxNearP.push_back(conehtrkQual_maxNearP);
00564
00565 }
00566
00567 double h3x3=-999.0, h5x5=-999.0;
00568 double hsim3x3=-999.0, hsim5x5=-999.0, trkHcalEne=-999.0;
00569 std::map<std::string, double> hsimInfo3x3, hsimInfo5x5;
00570 double distFromHotCell_h3x3 = -99.;
00571 int ietaFromHotCell_h3x3 = -99;
00572 int iphiFromHotCell_h3x3 = -99;
00573 double distFromHotCell_h5x5 = -99.;
00574 int ietaFromHotCell_h5x5 = -99;
00575 int iphiFromHotCell_h5x5 = -99;
00576
00577 GlobalPoint gPosHotCell_h3x3(0.,0.,0.);
00578 GlobalPoint gPosHotCell_h5x5(0.,0.,0.);
00579
00580 int nRH_h3x3(0), nRH_h5x5(0);
00581
00582
00583
00584
00585 DetId ClosestCell;
00586 if( std::abs(pTrack->eta())<1.392 ) {
00587 ClosestCell = gHB->getClosestCell(hpoint1);
00588 } else {
00589 ClosestCell = gHE->getClosestCell(hpoint1);
00590 }
00591
00592 HcalDetId ClosestCell_HcalDetId(ClosestCell.rawId());
00593
00594
00595 std::vector<int> v_RH_h3x3_ieta;
00596 std::vector<int> v_RH_h3x3_iphi;
00597 std::vector<double> v_RH_h3x3_ene;
00598 std::vector<int> v_RH_h5x5_ieta;
00599 std::vector<int> v_RH_h5x5_iphi;
00600 std::vector<double> v_RH_h5x5_ene;
00601
00602
00603 h3x3 = spr::eHCALmatrix(geo, theHBHETopology, ClosestCell, hbhe,1,1,
00604 nRH_h3x3, v_RH_h3x3_ieta, v_RH_h3x3_iphi, v_RH_h3x3_ene,
00605 gPosHotCell_h3x3);
00606 distFromHotCell_h3x3 = spr::getDistInPlaneTrackDir(hpoint1, trackMomAtHcal, gPosHotCell_h3x3);
00607
00608 h5x5 = spr::eHCALmatrix(geo, theHBHETopology, ClosestCell, hbhe,2,2,
00609 nRH_h5x5, v_RH_h5x5_ieta, v_RH_h5x5_iphi, v_RH_h5x5_ene,
00610 gPosHotCell_h5x5);
00611 distFromHotCell_h5x5 = spr::getDistInPlaneTrackDir(hpoint1, trackMomAtHcal, gPosHotCell_h5x5);
00612
00613
00614
00615
00616 std::vector<int> multiplicity3x3;
00617 std::vector<int> multiplicity5x5;
00618 if (doMC) {
00619 hsim3x3 = spr::eHCALmatrix(theHBHETopology, ClosestCell,
00620 pcalohh,1,1);
00621 hsim5x5 = spr::eHCALmatrix(theHBHETopology, ClosestCell,
00622 pcalohh,2,2);
00623
00624 hsimInfo3x3 = spr::eHCALSimInfo(iEvent, theHBHETopology, ClosestCell, pcalohh, SimTk, SimVtx, pTrack, *associate, 1,1, multiplicity3x3);
00625 hsimInfo5x5 = spr::eHCALSimInfo(iEvent, theHBHETopology, ClosestCell, pcalohh, SimTk, SimVtx, pTrack, *associate, 2,2, multiplicity5x5);
00626
00627
00628 trkHcalEne = spr::eCaloSimInfo(iEvent, geo, pcalohh, SimTk, SimVtx, pTrack, *associate);
00629 }
00630
00631
00632 std::vector<double> v_hsimInfoConeMatched;
00633 std::vector<double> v_hsimInfoConeRest ;
00634 std::vector<double> v_hsimInfoConePhoton ;
00635 std::vector<double> v_hsimInfoConeNeutHad;
00636 std::vector<double> v_hsimInfoConeCharHad;
00637 std::vector<double> v_hsimInfoConePdgMatched;
00638 std::vector<double> v_hsimInfoConeTotal ;
00639
00640 std::vector<int> v_hsimInfoConeNMatched;
00641 std::vector<int> v_hsimInfoConeNTotal ;
00642 std::vector<int> v_hsimInfoConeNNeutHad;
00643 std::vector<int> v_hsimInfoConeNCharHad;
00644 std::vector<int> v_hsimInfoConeNPhoton ;
00645 std::vector<int> v_hsimInfoConeNRest ;
00646
00647 std::vector<double> v_hsimCone ;
00648 std::vector<double> v_hCone ;
00649
00650 std::vector<int> v_nRecHitsCone ;
00651 std::vector<int> v_nSimHitsCone ;
00652
00653 std::vector<double> v_distFromHotCell;
00654 std::vector<int> v_ietaFromHotCell;
00655 std::vector<int> v_iphiFromHotCell;
00656 GlobalPoint gposHotCell(0.,0.,0.);
00657
00658
00659 std::vector<int> v_RH_r26_ieta;
00660 std::vector<int> v_RH_r26_iphi;
00661 std::vector<double> v_RH_r26_ene;
00662 std::vector<int> v_RH_r44_ieta;
00663 std::vector<int> v_RH_r44_iphi;
00664 std::vector<double> v_RH_r44_ene;
00665
00666
00667
00668 for (int i = 0 ; i < a_size ; i++){
00669
00670
00671 std::map<std::string, double> hsimInfoCone;
00672 double hsimCone = -999.0, hCone = -999.0;
00673 double distFromHotCell = -99.0;
00674 int ietaFromHotCell = -99;
00675 int iphiFromHotCell = -99;
00676 int ietaHotCell = -99;
00677 int iphiHotCell = -99;
00678 int nRecHitsCone = -999;
00679 int nSimHitsCone = -999;
00680
00681 std::vector<int> multiplicityCone;
00682 std::vector<DetId> coneRecHitDetIds;
00683 if (doMC)
00684 hsimCone = spr::eCone_hcal(geo, pcalohh, hpoint1, point1,
00685 a_coneR[i], trackMomAtHcal, nSimHitsCone);
00686
00687
00688
00689 bool makeHitmaps = false;
00690 if (a_coneR[i] == 26.23 && makeHitmaps)
00691 {
00692
00693 hCone = spr::eCone_hcal(geo, hbhe, hpoint1, point1,
00694 a_coneR[i], trackMomAtHcal,nRecHitsCone,
00695 v_RH_r26_ieta, v_RH_r26_iphi, v_RH_r26_ene,
00696 coneRecHitDetIds, distFromHotCell,
00697 ietaHotCell, iphiHotCell, gposHotCell);
00698 }
00699 else if (a_coneR[i] == 43.72 && makeHitmaps)
00700 {
00701
00702 hCone = spr::eCone_hcal(geo, hbhe, hpoint1, point1,
00703 a_coneR[i], trackMomAtHcal,nRecHitsCone,
00704 v_RH_r44_ieta, v_RH_r44_iphi, v_RH_r44_ene,
00705 coneRecHitDetIds, distFromHotCell,
00706 ietaHotCell, iphiHotCell, gposHotCell);
00707 }
00708 else
00709 {
00710
00711 hCone = spr::eCone_hcal(geo, hbhe, hpoint1, point1,
00712 a_coneR[i], trackMomAtHcal, nRecHitsCone,
00713 coneRecHitDetIds, distFromHotCell,
00714 ietaHotCell, iphiHotCell, gposHotCell);
00715 }
00716
00717
00718
00719 if (ietaHotCell != 99){
00720 ietaFromHotCell = ietaHotCell-ClosestCell_HcalDetId.ieta();
00721 iphiFromHotCell = iphiHotCell-ClosestCell_HcalDetId.iphi();
00722 }
00723
00724
00725 if (doMC) {
00726 hsimInfoCone = spr::eHCALSimInfoCone(iEvent,pcalohh, SimTk, SimVtx, pTrack, *associate, geo, hpoint1, point1, a_coneR[i], trackMomAtHcal, multiplicityCone);
00727
00728
00729
00730
00731
00732
00733
00734
00735
00736
00737
00738 v_hsimInfoConeMatched .push_back(hsimInfoCone["eMatched" ]);
00739 v_hsimInfoConeRest .push_back(hsimInfoCone["eRest" ]);
00740 v_hsimInfoConePhoton .push_back(hsimInfoCone["eGamma" ]);
00741 v_hsimInfoConeNeutHad .push_back(hsimInfoCone["eNeutralHad"]);
00742 v_hsimInfoConeCharHad .push_back(hsimInfoCone["eChargedHad"]);
00743 v_hsimInfoConePdgMatched.push_back(hsimInfoCone["pdgMatched" ]);
00744 v_hsimInfoConeTotal .push_back(hsimInfoCone["eTotal" ]);
00745
00746 v_hsimInfoConeNMatched .push_back(multiplicityCone.at(0));
00747
00748 v_hsimInfoConeNTotal .push_back(multiplicityCone.at(1));
00749 v_hsimInfoConeNNeutHad .push_back(multiplicityCone.at(2));
00750 v_hsimInfoConeNCharHad .push_back(multiplicityCone.at(3));
00751 v_hsimInfoConeNPhoton .push_back(multiplicityCone.at(4));
00752 v_hsimInfoConeNRest .push_back(multiplicityCone.at(5));
00753
00754 v_hsimCone .push_back(hsimCone );
00755 v_nSimHitsCone .push_back(nSimHitsCone );
00756 }
00757 v_hCone .push_back(hCone );
00758 v_nRecHitsCone .push_back(nRecHitsCone );
00759
00760 v_distFromHotCell .push_back(distFromHotCell );
00761 v_ietaFromHotCell .push_back(ietaFromHotCell );
00762 v_iphiFromHotCell .push_back(iphiFromHotCell );
00763
00764
00765 }
00766
00767
00769
00771
00772 t_v_hnNearTRKs ->push_back(v_hnNearTRKs );
00773 t_v_hnLayers_maxNearP ->push_back(v_hnLayers_maxNearP );
00774 t_v_htrkQual_maxNearP ->push_back(v_htrkQual_maxNearP );
00775 t_v_hmaxNearP_goodTrk ->push_back(v_hmaxNearP_goodTrk );
00776 t_v_hmaxNearP ->push_back(v_hmaxNearP );
00777
00778 t_v_cone_hnNearTRKs ->push_back(v_cone_hnNearTRKs );
00779 t_v_cone_hnLayers_maxNearP ->push_back(v_cone_hnLayers_maxNearP);
00780 t_v_cone_htrkQual_maxNearP ->push_back(v_cone_htrkQual_maxNearP);
00781 t_v_cone_hmaxNearP_goodTrk ->push_back(v_cone_hmaxNearP_goodTrk);
00782 t_v_cone_hmaxNearP ->push_back(v_cone_hmaxNearP );
00783
00784
00785 t_trkNOuterHits ->push_back(nOuterHits );
00786 t_trkNLayersCrossed ->push_back(nLayersCrossed );
00787 t_dtFromLeadJet ->push_back(drFromLeadJet );
00788 t_trkP ->push_back(p1 );
00789 t_trkPt ->push_back(pt1 );
00790 t_trkEta ->push_back(eta1 );
00791 t_trkPhi ->push_back(phi1 );
00792
00793 t_e3x3 ->push_back(e3x3 );
00794 t_v_eDR ->push_back(v_eDR );
00795 t_v_eMipDR ->push_back(v_eMipDR );
00796
00797 t_h3x3 ->push_back(h3x3 );
00798 t_h5x5 ->push_back(h5x5 );
00799 t_nRH_h3x3 ->push_back(nRH_h3x3 );
00800 t_nRH_h5x5 ->push_back(nRH_h5x5 );
00801
00802 t_v_RH_h3x3_ieta ->push_back(v_RH_h3x3_ieta);
00803 t_v_RH_h3x3_iphi ->push_back(v_RH_h3x3_iphi);
00804 t_v_RH_h3x3_ene ->push_back(v_RH_h3x3_ene);
00805 t_v_RH_h5x5_ieta ->push_back(v_RH_h5x5_ieta);
00806 t_v_RH_h5x5_iphi ->push_back(v_RH_h5x5_iphi);
00807 t_v_RH_h5x5_ene ->push_back(v_RH_h5x5_ene);
00808
00809 if (doMC) {
00810 t_simP ->push_back(simP );
00811 t_hsim3x3 ->push_back(hsim3x3 );
00812 t_hsim5x5 ->push_back(hsim5x5 );
00813
00814 t_hsim3x3Matched ->push_back(hsimInfo3x3["eMatched"] );
00815 t_hsim5x5Matched ->push_back(hsimInfo5x5["eMatched"] );
00816 t_hsim3x3Rest ->push_back(hsimInfo3x3["eRest"] );
00817 t_hsim5x5Rest ->push_back(hsimInfo5x5["eRest"] );
00818 t_hsim3x3Photon ->push_back(hsimInfo3x3["eGamma"] );
00819 t_hsim5x5Photon ->push_back(hsimInfo5x5["eGamma"] );
00820 t_hsim3x3NeutHad ->push_back(hsimInfo3x3["eNeutralHad"] );
00821 t_hsim5x5NeutHad ->push_back(hsimInfo5x5["eNeutralHad"] );
00822 t_hsim3x3CharHad ->push_back(hsimInfo3x3["eChargedHad"] );
00823 t_hsim5x5CharHad ->push_back(hsimInfo5x5["eChargedHad"] );
00824 t_hsim3x3Total ->push_back(hsimInfo3x3["eTotal"] );
00825 t_hsim5x5Total ->push_back(hsimInfo5x5["eTotal"] );
00826 t_hsim3x3PdgMatched ->push_back(hsimInfo3x3["pdgMatched"] );
00827 t_hsim5x5PdgMatched ->push_back(hsimInfo5x5["pdgMatched"] );
00828
00829 t_hsim3x3NMatched ->push_back(multiplicity3x3.at(0));
00830 t_hsim3x3NTotal ->push_back(multiplicity3x3.at(1));
00831 t_hsim3x3NNeutHad ->push_back(multiplicity3x3.at(2));
00832 t_hsim3x3NCharHad ->push_back(multiplicity3x3.at(3));
00833 t_hsim3x3NPhoton ->push_back(multiplicity3x3.at(4));
00834 t_hsim3x3NRest ->push_back(multiplicity3x3.at(5));
00835
00836 t_hsim5x5NMatched ->push_back(multiplicity5x5.at(0));
00837 t_hsim5x5NTotal ->push_back(multiplicity5x5.at(1));
00838 t_hsim5x5NNeutHad ->push_back(multiplicity5x5.at(2));
00839 t_hsim5x5NCharHad ->push_back(multiplicity5x5.at(3));
00840 t_hsim5x5NPhoton ->push_back(multiplicity5x5.at(4));
00841 t_hsim5x5NRest ->push_back(multiplicity5x5.at(5));
00842 }
00843
00844 t_distFromHotCell_h3x3->push_back(distFromHotCell_h3x3);
00845 t_ietaFromHotCell_h3x3->push_back(ietaFromHotCell_h3x3);
00846 t_iphiFromHotCell_h3x3->push_back(iphiFromHotCell_h3x3);
00847 t_distFromHotCell_h5x5->push_back(distFromHotCell_h5x5);
00848 t_ietaFromHotCell_h5x5->push_back(ietaFromHotCell_h5x5);
00849 t_iphiFromHotCell_h5x5->push_back(iphiFromHotCell_h5x5);
00850
00851 if (doMC) {
00852 t_trkHcalEne ->push_back(trkHcalEne );
00853 t_trkEcalEne ->push_back(trkEcalEne );
00854
00855 t_v_hsimInfoConeMatched ->push_back(v_hsimInfoConeMatched );
00856 t_v_hsimInfoConeRest ->push_back(v_hsimInfoConeRest );
00857 t_v_hsimInfoConePhoton ->push_back(v_hsimInfoConePhoton );
00858 t_v_hsimInfoConeNeutHad ->push_back(v_hsimInfoConeNeutHad );
00859 t_v_hsimInfoConeCharHad ->push_back(v_hsimInfoConeCharHad );
00860 t_v_hsimInfoConePdgMatched ->push_back(v_hsimInfoConePdgMatched);
00861 t_v_hsimInfoConeTotal ->push_back(v_hsimInfoConeTotal );
00862
00863 t_v_hsimInfoConeNMatched ->push_back(v_hsimInfoConeNMatched );
00864 t_v_hsimInfoConeNTotal ->push_back(v_hsimInfoConeNTotal );
00865 t_v_hsimInfoConeNNeutHad ->push_back(v_hsimInfoConeNNeutHad );
00866 t_v_hsimInfoConeNCharHad ->push_back(v_hsimInfoConeNCharHad );
00867 t_v_hsimInfoConeNPhoton ->push_back(v_hsimInfoConeNPhoton );
00868 t_v_hsimInfoConeNRest ->push_back(v_hsimInfoConeNRest );
00869
00870 t_v_hsimCone ->push_back(v_hsimCone );
00871 t_v_hCone ->push_back(v_hCone );
00872 t_v_nRecHitsCone->push_back(v_nRecHitsCone);
00873 t_v_nSimHitsCone->push_back(v_nSimHitsCone);
00874 }
00875
00876
00877 t_v_distFromHotCell->push_back(v_distFromHotCell);
00878 t_v_ietaFromHotCell->push_back(v_ietaFromHotCell);
00879 t_v_iphiFromHotCell->push_back(v_iphiFromHotCell);
00880
00881 t_v_RH_r26_ieta ->push_back(v_RH_r26_ieta);
00882 t_v_RH_r26_iphi ->push_back(v_RH_r26_iphi);
00883 t_v_RH_r26_ene ->push_back(v_RH_r26_ene);
00884 t_v_RH_r44_ieta ->push_back(v_RH_r44_ieta);
00885 t_v_RH_r44_iphi ->push_back(v_RH_r44_iphi);
00886 t_v_RH_r44_ene ->push_back(v_RH_r44_ene);
00887
00888
00889
00890 t_v_hlTriggers ->push_back(v_hlTriggers);
00891 t_hltHB ->push_back(hltHB);
00892 t_hltHE ->push_back(hltHE);
00893 t_hltL1Jet15 ->push_back(hltL1Jet15 );
00894 t_hltJet30 ->push_back(hltJet30 );
00895 t_hltJet50 ->push_back(hltJet50 );
00896 t_hltJet80 ->push_back(hltJet80 );
00897 t_hltJet110 ->push_back(hltJet110 );
00898 t_hltJet140 ->push_back(hltJet140 );
00899 t_hltJet180 ->push_back(hltJet180 );
00900 t_hltL1SingleEG5 ->push_back(hltL1SingleEG5 );
00901 t_hltZeroBias ->push_back(hltZeroBias );
00902 t_hltMinBiasHcal ->push_back(hltMinBiasHcal );
00903 t_hltMinBiasEcal ->push_back(hltMinBiasEcal );
00904 t_hltMinBiasPixel ->push_back(hltMinBiasPixel );
00905 t_hltSingleIsoTau30_Trk5 ->push_back(hltSingleIsoTau30_Trk5 );
00906 t_hltDoubleLooseIsoTau15_Trk5->push_back(hltDoubleLooseIsoTau15_Trk5);
00907
00908 t_irun->push_back(irun);
00909 t_ievt->push_back(ievt);
00910 t_ilum->push_back(ilum);
00911
00912 nTRK++;
00913
00914
00915 }
00916
00917
00918
00919 ntp->Fill();
00920 nEVT++;
00921
00922
00923 delete associate;
00924 }
00925
00926
00927
00928 void IsolatedTracksCone::beginJob(const edm::EventSetup&) {
00929
00930
00931
00932 nEVT=0;
00933 nEVT_failL1=0;
00934 nTRK=0;
00935
00936 double tempgen_TH[22] = { 0.0, 1.0, 2.0, 3.0, 4.0,
00937 5.0, 6.0, 7.0, 8.0, 9.0,
00938 10.0, 12.0, 15.0, 20.0, 25.0,
00939 30.0, 40.0, 50.0, 60.0, 70.0, 80.0, 100};
00940 for(int i=0; i<22; i++) genPartPBins[i] = tempgen_TH[i];
00941
00942
00943 double tempgen_Eta[5] = {0.0, 0.5, 1.1, 1.7, 2.0};
00944 for(int i=0; i<5; i++) genPartEtaBins[i] = tempgen_Eta[i];
00945
00946 t_v_hnNearTRKs = new std::vector<std::vector<int> > ();
00947 t_v_hnLayers_maxNearP = new std::vector<std::vector<int> > ();
00948 t_v_htrkQual_maxNearP = new std::vector<std::vector<int> > ();
00949 t_v_hmaxNearP_goodTrk = new std::vector<std::vector<double> >();
00950 t_v_hmaxNearP = new std::vector<std::vector<double> >();
00951
00952 t_v_cone_hnNearTRKs = new std::vector<std::vector<int> > ();
00953 t_v_cone_hnLayers_maxNearP = new std::vector<std::vector<int> > ();
00954 t_v_cone_htrkQual_maxNearP = new std::vector<std::vector<int> > ();
00955 t_v_cone_hmaxNearP_goodTrk = new std::vector<std::vector<double> >();
00956 t_v_cone_hmaxNearP = new std::vector<std::vector<double> >();
00957
00958
00959 t_trkNOuterHits = new std::vector<double>();
00960 t_trkNLayersCrossed = new std::vector<double>();
00961 t_dtFromLeadJet = new std::vector<double>();
00962 t_trkP = new std::vector<double>();
00963 t_trkPt = new std::vector<double>();
00964 t_trkEta = new std::vector<double>();
00965 t_trkPhi = new std::vector<double>();
00966
00967 t_e3x3 = new std::vector<double>();
00968 t_v_eDR = new std::vector<std::vector<double> >();
00969 t_v_eMipDR = new std::vector<std::vector<double> >();
00970
00971 t_h3x3 = new std::vector<double>();
00972 t_h5x5 = new std::vector<double>();
00973
00974 t_nRH_h3x3 = new std::vector<double>();
00975 t_nRH_h5x5 = new std::vector<double>();
00976
00977 if (doMC) {
00978 t_simP = new std::vector<double>();
00979 t_hsim3x3 = new std::vector<double>();
00980 t_hsim5x5 = new std::vector<double>();
00981
00982 t_hsim3x3Matched = new std::vector<double>();
00983 t_hsim5x5Matched = new std::vector<double>();
00984 t_hsim3x3Rest = new std::vector<double>();
00985 t_hsim5x5Rest = new std::vector<double>();
00986 t_hsim3x3Photon = new std::vector<double>();
00987 t_hsim5x5Photon = new std::vector<double>();
00988 t_hsim3x3NeutHad = new std::vector<double>();
00989 t_hsim5x5NeutHad = new std::vector<double>();
00990 t_hsim3x3CharHad = new std::vector<double>();
00991 t_hsim5x5CharHad = new std::vector<double>();
00992 t_hsim3x3PdgMatched = new std::vector<double>();
00993 t_hsim5x5PdgMatched = new std::vector<double>();
00994 t_hsim3x3Total = new std::vector<double>();
00995 t_hsim5x5Total = new std::vector<double>();
00996
00997 t_hsim3x3NMatched = new std::vector<int>();
00998 t_hsim3x3NTotal = new std::vector<int>();
00999 t_hsim3x3NNeutHad = new std::vector<int>();
01000 t_hsim3x3NCharHad = new std::vector<int>();
01001 t_hsim3x3NPhoton = new std::vector<int>();
01002 t_hsim3x3NRest = new std::vector<int>();
01003
01004 t_hsim5x5NMatched = new std::vector<int>();
01005 t_hsim5x5NTotal = new std::vector<int>();
01006 t_hsim5x5NNeutHad = new std::vector<int>();
01007 t_hsim5x5NCharHad = new std::vector<int>();
01008 t_hsim5x5NPhoton = new std::vector<int>();
01009 t_hsim5x5NRest = new std::vector<int>();
01010
01011 t_trkHcalEne = new std::vector<double>();
01012 t_trkEcalEne = new std::vector<double>();
01013 }
01014
01015 t_distFromHotCell_h3x3 = new std::vector<double>();
01016 t_ietaFromHotCell_h3x3 = new std::vector<int>();
01017 t_iphiFromHotCell_h3x3 = new std::vector<int>();
01018 t_distFromHotCell_h5x5 = new std::vector<double>();
01019 t_ietaFromHotCell_h5x5 = new std::vector<int>();
01020 t_iphiFromHotCell_h5x5 = new std::vector<int>();
01021
01022 if (doMC) {
01023 t_v_hsimInfoConeMatched = new std::vector<std::vector<double> >();
01024 t_v_hsimInfoConeRest = new std::vector<std::vector<double> >();
01025 t_v_hsimInfoConePhoton = new std::vector<std::vector<double> >();
01026 t_v_hsimInfoConeNeutHad = new std::vector<std::vector<double> >();
01027 t_v_hsimInfoConeCharHad = new std::vector<std::vector<double> >();
01028 t_v_hsimInfoConePdgMatched= new std::vector<std::vector<double> >();
01029 t_v_hsimInfoConeTotal = new std::vector<std::vector<double> >();
01030
01031 t_v_hsimInfoConeNMatched = new std::vector<std::vector<int> >();
01032 t_v_hsimInfoConeNTotal = new std::vector<std::vector<int> >();
01033 t_v_hsimInfoConeNNeutHad = new std::vector<std::vector<int> >();
01034 t_v_hsimInfoConeNCharHad = new std::vector<std::vector<int> >();
01035 t_v_hsimInfoConeNPhoton = new std::vector<std::vector<int> >();
01036 t_v_hsimInfoConeNRest = new std::vector<std::vector<int> >();
01037
01038 t_v_hsimCone = new std::vector<std::vector<double> >();
01039 }
01040
01041 t_v_hCone = new std::vector<std::vector<double> >();
01042 t_v_nRecHitsCone= new std::vector<std::vector<int> >();
01043 t_v_nSimHitsCone= new std::vector<std::vector<int> >();
01044
01045 t_v_distFromHotCell= new std::vector<std::vector<double> >();
01046 t_v_ietaFromHotCell= new std::vector<std::vector<int> >();
01047 t_v_iphiFromHotCell= new std::vector<std::vector<int> >();
01048
01049 t_v_RH_h3x3_ieta = new std::vector<std::vector<int> >();
01050 t_v_RH_h3x3_iphi = new std::vector<std::vector<int> >();
01051 t_v_RH_h3x3_ene = new std::vector<std::vector<double> >();
01052 t_v_RH_h5x5_ieta = new std::vector<std::vector<int> >();
01053 t_v_RH_h5x5_iphi = new std::vector<std::vector<int> >();
01054 t_v_RH_h5x5_ene = new std::vector<std::vector<double> >();
01055 t_v_RH_r26_ieta = new std::vector<std::vector<int> >();
01056 t_v_RH_r26_iphi = new std::vector<std::vector<int> >();
01057 t_v_RH_r26_ene = new std::vector<std::vector<double> >();
01058 t_v_RH_r44_ieta = new std::vector<std::vector<int> >();
01059 t_v_RH_r44_iphi = new std::vector<std::vector<int> >();
01060 t_v_RH_r44_ene = new std::vector<std::vector<double> >();
01061
01062
01063 t_v_hlTriggers = new std::vector<std::vector<int> >();
01064
01065 t_hltHE = new std::vector<int>();
01066 t_hltHB = new std::vector<int>();
01067 t_hltL1Jet15 = new std::vector<int>();
01068 t_hltJet30 = new std::vector<int>();
01069 t_hltJet50 = new std::vector<int>();
01070 t_hltJet80 = new std::vector<int>();
01071 t_hltJet110 = new std::vector<int>();
01072 t_hltJet140 = new std::vector<int>();
01073 t_hltJet180 = new std::vector<int>();
01074 t_hltL1SingleEG5 = new std::vector<int>();
01075 t_hltZeroBias = new std::vector<int>();
01076 t_hltMinBiasHcal = new std::vector<int>();
01077 t_hltMinBiasEcal = new std::vector<int>();
01078 t_hltMinBiasPixel = new std::vector<int>();
01079 t_hltSingleIsoTau30_Trk5 = new std::vector<int>();
01080 t_hltDoubleLooseIsoTau15_Trk5 = new std::vector<int>();
01081
01082
01083 t_irun = new std::vector<unsigned int>();
01084 t_ievt = new std::vector<unsigned int>();
01085 t_ilum = new std::vector<unsigned int>();
01086
01087 BuildTree();
01088 }
01089
01090 void IsolatedTracksCone::clearTrackVectors() {
01091
01092 t_v_hnNearTRKs ->clear();
01093 t_v_hnLayers_maxNearP ->clear();
01094 t_v_htrkQual_maxNearP ->clear();
01095 t_v_hmaxNearP_goodTrk ->clear();
01096 t_v_hmaxNearP ->clear();
01097
01098 t_v_cone_hnNearTRKs ->clear();
01099 t_v_cone_hnLayers_maxNearP ->clear();
01100 t_v_cone_htrkQual_maxNearP ->clear();
01101 t_v_cone_hmaxNearP_goodTrk ->clear();
01102 t_v_cone_hmaxNearP ->clear();
01103
01104
01105 t_trkNOuterHits ->clear();
01106 t_trkNLayersCrossed ->clear();
01107 t_dtFromLeadJet ->clear();
01108 t_trkP ->clear();
01109 t_trkPt ->clear();
01110 t_trkEta ->clear();
01111 t_trkPhi ->clear();
01112 t_e3x3 ->clear();
01113 t_v_eDR ->clear();
01114 t_v_eMipDR ->clear();
01115 t_h3x3 ->clear();
01116 t_h5x5 ->clear();
01117 t_nRH_h3x3 ->clear();
01118 t_nRH_h5x5 ->clear();
01119
01120 if (doMC) {
01121 t_simP ->clear();
01122 t_hsim3x3 ->clear();
01123 t_hsim5x5 ->clear();
01124 t_hsim3x3Matched ->clear();
01125 t_hsim5x5Matched ->clear();
01126 t_hsim3x3Rest ->clear();
01127 t_hsim5x5Rest ->clear();
01128 t_hsim3x3Photon ->clear();
01129 t_hsim5x5Photon ->clear();
01130 t_hsim3x3NeutHad ->clear();
01131 t_hsim5x5NeutHad ->clear();
01132 t_hsim3x3CharHad ->clear();
01133 t_hsim5x5CharHad ->clear();
01134 t_hsim3x3PdgMatched ->clear();
01135 t_hsim5x5PdgMatched ->clear();
01136 t_hsim3x3Total ->clear();
01137 t_hsim5x5Total ->clear();
01138
01139 t_hsim3x3NMatched ->clear();
01140 t_hsim3x3NTotal ->clear();
01141 t_hsim3x3NNeutHad ->clear();
01142 t_hsim3x3NCharHad ->clear();
01143 t_hsim3x3NPhoton ->clear();
01144 t_hsim3x3NRest ->clear();
01145
01146 t_hsim5x5NMatched ->clear();
01147 t_hsim5x5NTotal ->clear();
01148 t_hsim5x5NNeutHad ->clear();
01149 t_hsim5x5NCharHad ->clear();
01150 t_hsim5x5NPhoton ->clear();
01151 t_hsim5x5NRest ->clear();
01152
01153 t_trkHcalEne ->clear();
01154 t_trkEcalEne ->clear();
01155 }
01156
01157 t_distFromHotCell_h3x3 ->clear();
01158 t_ietaFromHotCell_h3x3 ->clear();
01159 t_iphiFromHotCell_h3x3 ->clear();
01160 t_distFromHotCell_h5x5 ->clear();
01161 t_ietaFromHotCell_h5x5 ->clear();
01162 t_iphiFromHotCell_h5x5 ->clear();
01163
01164 if (doMC) {
01165 t_v_hsimInfoConeMatched ->clear();
01166 t_v_hsimInfoConeRest ->clear();
01167 t_v_hsimInfoConePhoton ->clear();
01168 t_v_hsimInfoConeNeutHad ->clear();
01169 t_v_hsimInfoConeCharHad ->clear();
01170 t_v_hsimInfoConePdgMatched->clear();
01171 t_v_hsimInfoConeTotal ->clear();
01172
01173 t_v_hsimInfoConeNMatched ->clear();
01174 t_v_hsimInfoConeNRest ->clear();
01175 t_v_hsimInfoConeNPhoton ->clear();
01176 t_v_hsimInfoConeNNeutHad ->clear();
01177 t_v_hsimInfoConeNCharHad ->clear();
01178 t_v_hsimInfoConeNTotal ->clear();
01179
01180 t_v_hsimCone ->clear();
01181 }
01182
01183 t_v_hCone ->clear();
01184 t_v_nRecHitsCone->clear();
01185 t_v_nSimHitsCone->clear();
01186
01187 t_v_distFromHotCell->clear();
01188 t_v_ietaFromHotCell->clear();
01189 t_v_iphiFromHotCell->clear();
01190
01191 t_v_RH_h3x3_ieta ->clear();
01192 t_v_RH_h3x3_iphi ->clear();
01193 t_v_RH_h3x3_ene ->clear();
01194 t_v_RH_h5x5_ieta ->clear();
01195 t_v_RH_h5x5_iphi ->clear();
01196 t_v_RH_h5x5_ene ->clear();
01197 t_v_RH_r26_ieta ->clear();
01198 t_v_RH_r26_iphi ->clear();
01199 t_v_RH_r26_ene ->clear();
01200 t_v_RH_r44_ieta ->clear();
01201 t_v_RH_r44_iphi ->clear();
01202 t_v_RH_r44_ene ->clear();
01203
01204 t_v_hlTriggers ->clear();
01205 t_hltHB->clear();
01206 t_hltHE->clear();
01207 t_hltL1Jet15 ->clear();
01208 t_hltJet30 ->clear();
01209 t_hltJet50 ->clear();
01210 t_hltJet80 ->clear();
01211 t_hltJet110 ->clear();
01212 t_hltJet140 ->clear();
01213 t_hltJet180 ->clear();
01214 t_hltL1SingleEG5 ->clear();
01215 t_hltZeroBias ->clear();
01216 t_hltMinBiasHcal ->clear();
01217 t_hltMinBiasEcal ->clear();
01218 t_hltMinBiasPixel ->clear();
01219 t_hltSingleIsoTau30_Trk5 ->clear();
01220 t_hltDoubleLooseIsoTau15_Trk5->clear();
01221
01222 t_irun->clear();
01223 t_ievt->clear();
01224 t_ilum->clear();
01225
01226
01227
01228 }
01229
01230
01231 void IsolatedTracksCone::endJob() {
01232
01233 std::cout << "Number of Events Processed " << nEVT << " failed L1 "
01234 << nEVT_failL1 << std::endl;
01235
01236 }
01237
01238
01239 void IsolatedTracksCone::BuildTree(){
01240
01241
01242 hRawPt = fs->make<TH1F>("hRawPt ", "hRawPt ", 100, 0.0, 100.0);
01243 hRawP = fs->make<TH1F>("hRawP ", "hRawP ", 100, 0.0, 100.0);
01244 hRawEta = fs->make<TH1F>("hRawEta", "hRawEta", 15, 0.0, 3.0);
01245 hRawPhi = fs->make<TH1F>("hRawPhi", "hRawPhi", 100, -3.2, 3.2);
01246
01247 ntp = fs->make<TTree>("ntp", "ntp");
01248
01249
01250
01251 ntp->Branch("nEVT" , &nEVT , "nEVT/I" );
01252 ntp->Branch("leadL1JetPT" , &leadL1JetPT , "leadL1JetPT/D" );
01253 ntp->Branch("leadL1JetEta", &leadL1JetEta, "leadL1JetEta/D");
01254 ntp->Branch("leadL1JetPhi", &leadL1JetPhi, "leadL1JetPhi/D");
01255 ntp->Branch("nTRK", &nTRK, "nTRK/I");
01256 ntp->Branch("nRawTRK" , &nRawTRK ,"nRawTRK/I" );
01257 ntp->Branch("nFailHighPurityQaul", &nFailHighPurityQaul,"nFailHighPurityQaul/I");
01258 ntp->Branch("nFailPt" , &nFailPt ,"nFailPt/I" );
01259 ntp->Branch("nFailEta" , &nFailEta ,"nFailEta/I" );
01260 ntp->Branch("nMissEcal" , &nMissEcal ,"nMissEcal/I" );
01261 ntp->Branch("nMissHcal" , &nMissHcal ,"nMissHcal/I" );
01262
01263 ntp->Branch("hnNearTRKs" ,"vector<vector<int> > ",&t_v_hnNearTRKs );
01264 ntp->Branch("hnLayers_maxNearP" ,"vector<vector<int> > ",&t_v_hnLayers_maxNearP );
01265 ntp->Branch("htrkQual_maxNearP" ,"vector<vector<int> > ",&t_v_htrkQual_maxNearP );
01266 ntp->Branch("hmaxNearP_goodTrk" ,"vector<vector<double> >",&t_v_hmaxNearP_goodTrk );
01267 ntp->Branch("hmaxNearP" ,"vector<vector<double> >",&t_v_hmaxNearP );
01268
01269 ntp->Branch("cone_hnNearTRKs" ,"vector<vector<int> > ",&t_v_cone_hnNearTRKs );
01270 ntp->Branch("cone_hnLayers_maxNearP","vector<vector<int> > ",&t_v_cone_hnLayers_maxNearP);
01271 ntp->Branch("cone_htrkQual_maxNearP","vector<vector<int> > ",&t_v_cone_htrkQual_maxNearP);
01272 ntp->Branch("cone_hmaxNearP_goodTrk","vector<vector<double> >",&t_v_cone_hmaxNearP_goodTrk);
01273 ntp->Branch("cone_hmaxNearP" ,"vector<vector<double> >",&t_v_cone_hmaxNearP );
01274
01275
01276 ntp->Branch("trkNOuterHits" , "vector<double>", &t_trkNOuterHits );
01277 ntp->Branch("trkNLayersCrossed", "vector<double>", &t_trkNLayersCrossed);
01278 ntp->Branch("drFromLeadJet" , "vector<double>", &t_dtFromLeadJet );
01279 ntp->Branch("trkP" , "vector<double>", &t_trkP );
01280 ntp->Branch("trkPt" , "vector<double>", &t_trkPt );
01281 ntp->Branch("trkEta" , "vector<double>", &t_trkEta );
01282 ntp->Branch("trkPhi" , "vector<double>", &t_trkPhi );
01283 ntp->Branch("e3x3" , "vector<double>", &t_e3x3 );
01284
01285 ntp->Branch("e3x3" , "vector<double>" , &t_e3x3 );
01286 ntp->Branch("v_eDR" , "vector<vector<double> >", &t_v_eDR);
01287 ntp->Branch("v_eMipDR" , "vector<vector<double> >", &t_v_eMipDR);
01288
01289 ntp->Branch("h3x3" , "vector<double>", &t_h3x3 );
01290 ntp->Branch("h5x5" , "vector<double>", &t_h5x5 );
01291 ntp->Branch("nRH_h3x3" , "vector<double>", &t_nRH_h3x3 );
01292 ntp->Branch("nRH_h5x5" , "vector<double>", &t_nRH_h5x5 );
01293
01294 if (doMC) {
01295 ntp->Branch("simP" , "vector<double>", &t_simP );
01296 ntp->Branch("hsim3x3" , "vector<double>", &t_hsim3x3 );
01297 ntp->Branch("hsim5x5" , "vector<double>", &t_hsim5x5 );
01298
01299 ntp->Branch("hsim3x3Matched" , "vector<double>", &t_hsim3x3Matched );
01300 ntp->Branch("hsim5x5Matched" , "vector<double>", &t_hsim5x5Matched );
01301 ntp->Branch("hsim3x3Rest" , "vector<double>", &t_hsim3x3Rest );
01302 ntp->Branch("hsim5x5Rest" , "vector<double>", &t_hsim5x5Rest );
01303 ntp->Branch("hsim3x3Photon" , "vector<double>", &t_hsim3x3Photon );
01304 ntp->Branch("hsim5x5Photon" , "vector<double>", &t_hsim5x5Photon );
01305 ntp->Branch("hsim3x3NeutHad" , "vector<double>", &t_hsim3x3NeutHad );
01306 ntp->Branch("hsim5x5NeutHad" , "vector<double>", &t_hsim5x5NeutHad );
01307 ntp->Branch("hsim3x3CharHad" , "vector<double>", &t_hsim3x3CharHad );
01308 ntp->Branch("hsim5x5CharHad" , "vector<double>", &t_hsim5x5CharHad );
01309 ntp->Branch("hsim3x3PdgMatched", "vector<double>", &t_hsim3x3PdgMatched);
01310 ntp->Branch("hsim5x5PdgMatched", "vector<double>", &t_hsim5x5PdgMatched);
01311 ntp->Branch("hsim3x3Total" , "vector<double>", &t_hsim3x3Total );
01312 ntp->Branch("hsim5x5Total" , "vector<double>", &t_hsim5x5Total );
01313
01314 ntp->Branch("hsim3x3NMatched" , "vector<int>", &t_hsim3x3NMatched );
01315 ntp->Branch("hsim3x3NRest" , "vector<int>", &t_hsim3x3NRest );
01316 ntp->Branch("hsim3x3NPhoton" , "vector<int>", &t_hsim3x3NPhoton );
01317 ntp->Branch("hsim3x3NNeutHad" , "vector<int>", &t_hsim3x3NNeutHad );
01318 ntp->Branch("hsim3x3NCharHad" , "vector<int>", &t_hsim3x3NCharHad );
01319 ntp->Branch("hsim3x3NTotal" , "vector<int>", &t_hsim3x3NTotal );
01320
01321 ntp->Branch("hsim5x5NMatched" , "vector<int>", &t_hsim5x5NMatched );
01322 ntp->Branch("hsim5x5NRest" , "vector<int>", &t_hsim5x5NRest );
01323 ntp->Branch("hsim5x5NPhoton" , "vector<int>", &t_hsim5x5NPhoton );
01324 ntp->Branch("hsim5x5NNeutHad" , "vector<int>", &t_hsim5x5NNeutHad );
01325 ntp->Branch("hsim5x5NCharHad" , "vector<int>", &t_hsim5x5NCharHad );
01326 ntp->Branch("hsim5x5NTotal" , "vector<int>", &t_hsim5x5NTotal );
01327
01328 ntp->Branch("trkHcalEne" , "vector<double>", &t_trkHcalEne );
01329 ntp->Branch("trkEcalEne" , "vector<double>", &t_trkEcalEne );
01330 }
01331
01332 ntp->Branch("distFromHotCell_h3x3", "vector<double>", &t_distFromHotCell_h3x3);
01333 ntp->Branch("ietaFromHotCell_h3x3", "vector<int>", &t_ietaFromHotCell_h3x3);
01334 ntp->Branch("iphiFromHotCell_h3x3", "vector<int>", &t_iphiFromHotCell_h3x3);
01335 ntp->Branch("distFromHotCell_h5x5", "vector<double>", &t_distFromHotCell_h5x5);
01336 ntp->Branch("ietaFromHotCell_h5x5", "vector<int>", &t_ietaFromHotCell_h5x5);
01337 ntp->Branch("iphiFromHotCell_h5x5", "vector<int>", &t_iphiFromHotCell_h5x5);
01338
01339 if (doMC) {
01340 ntp->Branch("v_hsimInfoConeMatched" ,"vector<vector<double> >",&t_v_hsimInfoConeMatched );
01341 ntp->Branch("v_hsimInfoConeRest" ,"vector<vector<double> >",&t_v_hsimInfoConeRest );
01342 ntp->Branch("v_hsimInfoConePhoton" ,"vector<vector<double> >",&t_v_hsimInfoConePhoton );
01343 ntp->Branch("v_hsimInfoConeNeutHad" ,"vector<vector<double> >",&t_v_hsimInfoConeNeutHad );
01344 ntp->Branch("v_hsimInfoConeCharHad" ,"vector<vector<double> >",&t_v_hsimInfoConeCharHad );
01345 ntp->Branch("v_hsimInfoConePdgMatched","vector<vector<double> >",&t_v_hsimInfoConePdgMatched);
01346 ntp->Branch("v_hsimInfoConeTotal" ,"vector<vector<double> >",&t_v_hsimInfoConeTotal );
01347
01348 ntp->Branch("v_hsimInfoConeNMatched" ,"vector<vector<int> >" ,&t_v_hsimInfoConeNMatched );
01349 ntp->Branch("v_hsimInfoConeNRest" ,"vector<vector<int> >" ,&t_v_hsimInfoConeNRest );
01350 ntp->Branch("v_hsimInfoConeNPhoton" ,"vector<vector<int> >" ,&t_v_hsimInfoConeNPhoton );
01351 ntp->Branch("v_hsimInfoConeNNeutHad" ,"vector<vector<int> >" ,&t_v_hsimInfoConeNNeutHad );
01352 ntp->Branch("v_hsimInfoConeNCharHad" ,"vector<vector<int> >" ,&t_v_hsimInfoConeNCharHad );
01353 ntp->Branch("v_hsimInfoConeNTotal" ,"vector<vector<int> >" ,&t_v_hsimInfoConeNTotal );
01354
01355 ntp->Branch("v_hsimCone" ,"vector<vector<double> >",&t_v_hsimCone );
01356 }
01357
01358 ntp->Branch("v_hCone" ,"vector<vector<double> >",&t_v_hCone );
01359 ntp->Branch("v_nRecHitsCone" ,"vector<vector<int> >" ,&t_v_nRecHitsCone);
01360 ntp->Branch("v_nSimHitsCone" ,"vector<vector<int> >" ,&t_v_nSimHitsCone);
01361
01362 ntp->Branch("v_distFromHotCell" ,"vector<vector<double> >",&t_v_distFromHotCell );
01363 ntp->Branch("v_ietaFromHotCell" ,"vector<vector<int> >",&t_v_ietaFromHotCell );
01364 ntp->Branch("v_iphiFromHotCell" ,"vector<vector<int> >",&t_v_iphiFromHotCell );
01365
01366 ntp->Branch("v_RH_h3x3_ieta" ,"vector<vector<int> >" ,&t_v_RH_h3x3_ieta);
01367 ntp->Branch("v_RH_h3x3_iphi" ,"vector<vector<int> >" ,&t_v_RH_h3x3_iphi);
01368 ntp->Branch("v_RH_h3x3_ene" ,"vector<vector<double> >",&t_v_RH_h3x3_ene );
01369 ntp->Branch("v_RH_h5x5_ieta" ,"vector<vector<int> >" ,&t_v_RH_h5x5_ieta);
01370 ntp->Branch("v_RH_h5x5_iphi" ,"vector<vector<int> >" ,&t_v_RH_h5x5_iphi);
01371 ntp->Branch("v_RH_h5x5_ene" ,"vector<vector<double> >",&t_v_RH_h5x5_ene );
01372 ntp->Branch("v_RH_r26_ieta" ,"vector<vector<int> >" ,&t_v_RH_r26_ieta );
01373 ntp->Branch("v_RH_r26_iphi" ,"vector<vector<int> >" ,&t_v_RH_r26_iphi );
01374 ntp->Branch("v_RH_r26_ene" ,"vector<vector<double> >",&t_v_RH_r26_ene );
01375 ntp->Branch("v_RH_r44_ieta" ,"vector<vector<int> >" ,&t_v_RH_r44_ieta );
01376 ntp->Branch("v_RH_r44_iphi" ,"vector<vector<int> >" ,&t_v_RH_r44_iphi );
01377 ntp->Branch("v_RH_r44_ene" ,"vector<vector<double> >",&t_v_RH_r44_ene );
01378
01379 ntp->Branch("v_hlTriggers" ,"vector<vector<int> >",&t_v_hlTriggers);
01380 ntp->Branch("v_hltHB" ,"vector<int>",&t_hltHB);
01381 ntp->Branch("v_hltHE" ,"vector<int>",&t_hltHE);
01382 ntp->Branch("v_hltL1Jet15" ,"vector<int>",&t_hltL1Jet15 );
01383 ntp->Branch("v_hltJet30" ,"vector<int>",&t_hltJet30 );
01384 ntp->Branch("v_hltJet50" ,"vector<int>",&t_hltJet50 );
01385 ntp->Branch("v_hltJet80" ,"vector<int>",&t_hltJet80 );
01386 ntp->Branch("v_hltJet110" ,"vector<int>",&t_hltJet110 );
01387 ntp->Branch("v_hltJet140" ,"vector<int>",&t_hltJet140 );
01388 ntp->Branch("v_hltJet180" ,"vector<int>",&t_hltJet180 );
01389 ntp->Branch("v_hltL1SingleEG5" ,"vector<int>",&t_hltL1SingleEG5 );
01390 ntp->Branch("v_hltZeroBias" ,"vector<int>",&t_hltZeroBias );
01391 ntp->Branch("v_hltMinBiasHcal" ,"vector<int>",&t_hltMinBiasHcal );
01392 ntp->Branch("v_hltMinBiasEcal" ,"vector<int>",&t_hltMinBiasEcal );
01393 ntp->Branch("v_hltMinBiasPixel" ,"vector<int>",&t_hltMinBiasPixel );
01394 ntp->Branch("v_hltSingleIsoTau30_Trk5" ,"vector<int>",&t_hltSingleIsoTau30_Trk5 );
01395 ntp->Branch("v_hltDoubleLooseIsoTau15_Trk5" ,"vector<int>",&t_hltDoubleLooseIsoTau15_Trk5);
01396
01397 ntp->Branch("irun" ,"vector<unsigned int>", &t_irun);
01398 ntp->Branch("ievt" ,"vector<unsigned int>", &t_ievt);
01399 ntp->Branch("ilum" ,"vector<unsigned int>", &t_ilum);
01400
01401 }
01402
01403
01404 void IsolatedTracksCone::printTrack(const reco::Track* pTrack) {
01405
01406 std::string theTrackQuality = "highPurity";
01407 reco::TrackBase::TrackQuality trackQuality_ = reco::TrackBase::qualityByName(theTrackQuality);
01408
01409 std::cout << " Reference Point " << pTrack->referencePoint() <<"\n"
01410 << " TrackMmentum " << pTrack->momentum()
01411 << " (pt,eta,phi)(" << pTrack->pt()<<","<<pTrack->eta()<<","<<pTrack->phi()<<")"
01412 << " p " << pTrack->p() << "\n"
01413 << " Normalized chi2 " << pTrack->normalizedChi2() <<" charge " << pTrack->charge()
01414 << " qoverp() " << pTrack->qoverp() <<"+-" << pTrack->qoverpError()
01415 << " d0 " << pTrack->d0() << "\n"
01416 << " NValidHits " << pTrack->numberOfValidHits() << " NLostHits " << pTrack->numberOfLostHits()
01417 << " TrackQuality " << pTrack->qualityName(trackQuality_) << " " << pTrack->quality(trackQuality_)
01418 << std::endl;
01419
01420 if( printTrkHitPattern_ ) {
01421 const reco::HitPattern& p = pTrack->hitPattern();
01422
01423 for (int i=0; i<p.numberOfHits(); i++) {
01424 p.printHitPattern(i, std::cout);
01425 }
01426 }
01427
01428 }
01429
01430 double IsolatedTracksCone::DeltaPhi(double v1, double v2) {
01431
01432
01433
01434 double pi = 3.141592654;
01435 double twopi = 6.283185307;
01436
01437 double diff = std::abs(v2 - v1);
01438 double corr = twopi - diff;
01439 if (diff < pi){ return diff;} else { return corr;}
01440 }
01441
01442
01443 double IsolatedTracksCone::DeltaR(double eta1, double phi1,
01444 double eta2, double phi2) {
01445 double deta = eta1 - eta2;
01446 double dphi = DeltaPhi(phi1, phi2);
01447 return std::sqrt(deta*deta + dphi*dphi);
01448 }
01449
01450
01451
01452 DEFINE_FWK_MODULE(IsolatedTracksCone);
01453
01454
01455
01456
01457
01458
01459
01460
01461
01462
01463
01464
01465
01466
01467