00001
00002
00003
00004
00005
00013
00014
00015
00016
00017
00018
00019 #include "DataFormats/TrackReco/interface/TrackBase.h"
00020 #include "Calibration/IsolatedParticles/plugins/IsolatedTracksNxN.h"
00021
00022 #include "Calibration/IsolatedParticles/interface/CaloPropagateTrack.h"
00023 #include "Calibration/IsolatedParticles/interface/ChargeIsolation.h"
00024 #include "Calibration/IsolatedParticles/interface/eHCALMatrixExtra.h"
00025 #include "MagneticField/Engine/interface/MagneticField.h"
00026 #include "MagneticField/Records/interface/IdealMagneticFieldRecord.h"
00027 #include "CondFormats/DataRecord/interface/EcalChannelStatusRcd.h"
00028 #include "Geometry/CaloTopology/interface/EcalTrigTowerConstituentsMap.h"
00029 #include "RecoLocalCalo/EcalRecAlgos/interface/EcalSeverityLevelAlgo.h"
00030 #include "RecoLocalCalo/EcalRecAlgos/interface/EcalSeverityLevelAlgoRcd.h"
00031 #include "CondFormats/L1TObjects/interface/L1GtTriggerMask.h"
00032 #include "CondFormats/DataRecord/interface/L1GtTriggerMaskAlgoTrigRcd.h"
00033 #include "CondFormats/DataRecord/interface/L1GtTriggerMaskTechTrigRcd.h"
00034
00035 IsolatedTracksNxN::IsolatedTracksNxN(const edm::ParameterSet& iConfig) {
00036
00037
00038 doMC = iConfig.getUntrackedParameter<bool> ("DoMC", false);
00039 writeAllTracks = iConfig.getUntrackedParameter<bool> ("WriteAllTracks", false );
00040 myverbose_ = iConfig.getUntrackedParameter<int> ("Verbosity", 5 );
00041 pvTracksPtMin_ = iConfig.getUntrackedParameter<double>("PVTracksPtMin", 1.0 );
00042 debugTrks_ = iConfig.getUntrackedParameter<int> ("DebugTracks" );
00043 printTrkHitPattern_ = iConfig.getUntrackedParameter<bool> ("PrintTrkHitPattern" );
00044 minTrackP_ = iConfig.getUntrackedParameter<double>("minTrackP", 1.0 );
00045 maxTrackEta_ = iConfig.getUntrackedParameter<double>("maxTrackEta", 5.0 );
00046 debugL1Info_ = iConfig.getUntrackedParameter<bool> ("DebugL1Info", false );
00047 L1TriggerAlgoInfo_ = iConfig.getUntrackedParameter<bool> ("L1TriggerAlgoInfo");
00048 L1extraTauJetSource_ = iConfig.getParameter<edm::InputTag> ("L1extraTauJetSource" );
00049 L1extraCenJetSource_ = iConfig.getParameter<edm::InputTag> ("L1extraCenJetSource" );
00050 L1extraFwdJetSource_ = iConfig.getParameter<edm::InputTag> ("L1extraFwdJetSource" );
00051 L1extraMuonSource_ = iConfig.getParameter<edm::InputTag> ("L1extraMuonSource" );
00052 L1extraIsoEmSource_ = iConfig.getParameter<edm::InputTag> ("L1extraIsoEmSource" );
00053 L1extraNonIsoEmSource_ = iConfig.getParameter<edm::InputTag> ("L1extraNonIsoEmSource" );
00054 L1GTReadoutRcdSource_ = iConfig.getParameter<edm::InputTag> ("L1GTReadoutRcdSource" );
00055 L1GTObjectMapRcdSource_= iConfig.getParameter<edm::InputTag> ("L1GTObjectMapRcdSource");
00056 JetSrc_ = iConfig.getParameter<edm::InputTag> ("JetSource");
00057 JetExtender_ = iConfig.getParameter<edm::InputTag> ("JetExtender");
00058 HBHERecHitSource_ = iConfig.getParameter<edm::InputTag> ("HBHERecHitSource");
00059 tMinE_ = iConfig.getUntrackedParameter<double>("TimeMinCutECAL", -500.);
00060 tMaxE_ = iConfig.getUntrackedParameter<double>("TimeMaxCutECAL", 500.);
00061 tMinH_ = iConfig.getUntrackedParameter<double>("TimeMinCutHCAL", -500.);
00062 tMaxH_ = iConfig.getUntrackedParameter<double>("TimeMaxCutHCAL", 500.);
00063 nbad = 0;
00064
00065 if(myverbose_>=0) {
00066 std::cout <<"Parameters read from config file \n"
00067 <<" doMC " << doMC
00068 <<"\t myverbose_ " << myverbose_
00069 <<"\t minTrackP_ " << minTrackP_
00070 << "\t maxTrackEta_ " << maxTrackEta_
00071 << "\t tMinE_ " << tMinE_
00072 << "\t tMaxE_ " << tMaxE_
00073 << "\t tMinH_ " << tMinH_
00074 << "\t tMaxH_ " << tMaxH_
00075 << "\n debugL1Info_ " << debugL1Info_
00076 << "\t L1TriggerAlgoInfo_ " << L1TriggerAlgoInfo_
00077 << "\t L1extraTauJetSource_ " << L1extraTauJetSource_
00078 << "\t L1extraCenJetSource_ " << L1extraCenJetSource_
00079 << "\t L1extraFwdJetSource_ " << L1extraFwdJetSource_
00080 << "\t L1extraMuonSource_ " << L1extraMuonSource_
00081 << "\t L1extraIsoEmSource_ " << L1extraIsoEmSource_
00082 << "\t L1extraNonIsoEmSource_ " << L1extraNonIsoEmSource_
00083 << "\t L1GTReadoutRcdSource_ " << L1GTReadoutRcdSource_
00084 << "\t L1GTObjectMapRcdSource_ " << L1GTObjectMapRcdSource_
00085 << "\t JetSrc_ " << JetSrc_
00086 << "\t JetExtender_ " << JetExtender_
00087 << "\t HBHERecHitSource_ " << HBHERecHitSource_
00088 << "\n" << std::endl;
00089 }
00090
00091 initL1 = false;
00092
00093 }
00094
00095 IsolatedTracksNxN::~IsolatedTracksNxN() {
00096 }
00097
00098 void IsolatedTracksNxN::analyze(const edm::Event& iEvent, const edm::EventSetup& iSetup) {
00099
00100 bool haveIsoTrack=false;
00101
00102 edm::ESHandle<MagneticField> bFieldH;
00103 iSetup.get<IdealMagneticFieldRecord>().get(bFieldH);
00104 bField = bFieldH.product();
00105
00106 clearTreeVectors();
00107
00108 t_RunNo = iEvent.id().run();
00109 t_EvtNo = iEvent.id().event();
00110 t_Lumi = iEvent.luminosityBlock();
00111 t_Bunch = iEvent.bunchCrossing();
00112
00113 nEventProc++;
00114
00115 edm::Handle<reco::TrackCollection> trkCollection;
00116 iEvent.getByLabel("generalTracks", trkCollection);
00117 reco::TrackCollection::const_iterator trkItr;
00118 if(debugTrks_>1){
00119 std::cout << "Track Collection: " << std::endl;
00120 std::cout << "Number of Tracks " << trkCollection->size() << std::endl;
00121 }
00122 std::string theTrackQuality = "highPurity";
00123 reco::TrackBase::TrackQuality trackQuality_=reco::TrackBase::qualityByName(theTrackQuality);
00124
00125
00126 if( L1TriggerAlgoInfo_ ) {
00127
00128 bool useL1EventSetup = true;
00129 bool useL1GtTriggerMenuLite = true;
00130
00131 m_l1GtUtils.getL1GtRunCache(iEvent, iSetup, useL1EventSetup, useL1GtTriggerMenuLite);
00132
00133 int iErrorCode = -1;
00134 int l1ConfCode = -1;
00135 const bool l1Conf = m_l1GtUtils.availableL1Configuration(iErrorCode, l1ConfCode);
00136 if( !l1Conf) {
00137 std::cout << "\nL1 configuration code:" << l1ConfCode
00138 << "\nNo valid L1 trigger configuration available."
00139 << "\nSee text above for error code interpretation"
00140 << "\nNo return here, in order to test each method, protected against configuration error."
00141 << std::endl;
00142 }
00143
00144 const L1GtTriggerMenu* m_l1GtMenu = m_l1GtUtils.ptrL1TriggerMenuEventSetup(iErrorCode);
00145 const AlgorithmMap& algorithmMap = m_l1GtMenu->gtAlgorithmMap();
00146 const std::string& menuName = m_l1GtMenu->gtTriggerMenuName();
00147
00148 if (!initL1) {
00149 initL1=true;
00150 std::cout << "menuName " << menuName << std::endl;
00151 for (CItAlgo itAlgo = algorithmMap.begin(); itAlgo != algorithmMap.end(); itAlgo++) {
00152 std::string algName = itAlgo->first;
00153 int algBitNumber = ( itAlgo->second ).algoBitNumber();
00154 l1AlgoMap.insert( std::pair<std::pair<unsigned int,std::string>,int>( std::pair<unsigned int,std::string>(algBitNumber, algName) , 0) ) ;
00155 }
00156 std::map< std::pair<unsigned int,std::string>, int>::iterator itr;
00157 for(itr=l1AlgoMap.begin(); itr!=l1AlgoMap.end(); itr++) {
00158 std::cout << " ********** " << (itr->first).first <<" "<<(itr->first).second <<" "<<itr->second << std::endl;
00159 }
00160 }
00161
00162 std::vector<int> algbits;
00163 for (CItAlgo itAlgo = algorithmMap.begin(); itAlgo != algorithmMap.end(); itAlgo++) {
00164 std::string algName = itAlgo->first;
00165 int algBitNumber = ( itAlgo->second ).algoBitNumber();
00166
00167
00168
00169 bool decision = m_l1GtUtils.decision (iEvent, itAlgo->first, iErrorCode);
00170 int preScale = m_l1GtUtils.prescaleFactor (iEvent, itAlgo->first, iErrorCode);
00171
00172
00173 if( decision ){
00174 l1AlgoMap[std::pair<unsigned int,std::string>(algBitNumber, algName)] += 1;
00175 h_L1AlgoNames->Fill( algBitNumber );
00176 t_L1AlgoNames->push_back(itAlgo->first);
00177 t_L1PreScale->push_back(preScale);
00178 t_L1Decision[algBitNumber] = 1;
00179 algbits.push_back(algBitNumber);
00180 }
00181 }
00182
00183 if(debugL1Info_) {
00184 for(unsigned int ii=0; ii<t_L1AlgoNames->size(); ii++){
00185 std::cout<<ii<<" "<<(*t_L1AlgoNames)[ii]<<" "<<(*t_L1PreScale)[ii]<<" "<<algbits[ii]<<std::endl;
00186 }
00187 std::cout << "L1Decision: ";
00188 for (int i=0; i<128; ++i) {
00189 std::cout << " " << i << ":" << t_L1Decision[i];
00190 if ((i+1)%32 == 0) std::cout << std::endl;
00191 }
00192 }
00193
00194
00195 edm::Handle<l1extra::L1JetParticleCollection> l1TauHandle;
00196 iEvent.getByLabel(L1extraTauJetSource_,l1TauHandle);
00197 l1extra::L1JetParticleCollection::const_iterator itr;
00198 int iL1Obj=0;
00199 for(itr = l1TauHandle->begin(),iL1Obj=0; itr != l1TauHandle->end(); ++itr,iL1Obj++) {
00200 if(iL1Obj<1) {
00201 t_L1TauJetPt ->push_back( itr->pt() );
00202 t_L1TauJetEta ->push_back( itr->eta() );
00203 t_L1TauJetPhi ->push_back( itr->phi() );
00204 }
00205 if(debugL1Info_) {
00206 std::cout << "tauJ p/pt " << itr->momentum() << " " << itr->pt()
00207 << " eta/phi " << itr->eta() << " " << itr->phi()
00208 << std::endl;
00209 }
00210 }
00211
00212
00213 edm::Handle<l1extra::L1JetParticleCollection> l1CenJetHandle;
00214 iEvent.getByLabel(L1extraCenJetSource_,l1CenJetHandle);
00215 for( itr = l1CenJetHandle->begin(),iL1Obj=0; itr != l1CenJetHandle->end(); ++itr,iL1Obj++ ) {
00216 if(iL1Obj<1) {
00217 t_L1CenJetPt ->push_back( itr->pt() );
00218 t_L1CenJetEta ->push_back( itr->eta() );
00219 t_L1CenJetPhi ->push_back( itr->phi() );
00220 }
00221 if(debugL1Info_) {
00222 std::cout << "cenJ p/pt " << itr->momentum() << " " << itr->pt()
00223 << " eta/phi " << itr->eta() << " " << itr->phi()
00224 << std::endl;
00225 }
00226 }
00227
00228
00229 edm::Handle<l1extra::L1JetParticleCollection> l1FwdJetHandle;
00230 iEvent.getByLabel(L1extraFwdJetSource_,l1FwdJetHandle);
00231 for( itr = l1FwdJetHandle->begin(),iL1Obj=0; itr != l1FwdJetHandle->end(); ++itr,iL1Obj++ ) {
00232 if(iL1Obj<1) {
00233 t_L1FwdJetPt ->push_back( itr->pt() );
00234 t_L1FwdJetEta ->push_back( itr->eta() );
00235 t_L1FwdJetPhi ->push_back( itr->phi() );
00236 }
00237 if(debugL1Info_) {
00238 std::cout << "fwdJ p/pt " << itr->momentum() << " " << itr->pt()
00239 << " eta/phi " << itr->eta() << " " << itr->phi()
00240 << std::endl;
00241 }
00242 }
00243
00244
00245 l1extra::L1EmParticleCollection::const_iterator itrEm;
00246 edm::Handle<l1extra::L1EmParticleCollection> l1IsoEmHandle ;
00247 iEvent.getByLabel(L1extraIsoEmSource_, l1IsoEmHandle);
00248 for( itrEm = l1IsoEmHandle->begin(),iL1Obj=0; itrEm != l1IsoEmHandle->end(); ++itrEm,iL1Obj++ ) {
00249 if(iL1Obj<1) {
00250 t_L1IsoEMPt ->push_back( itrEm->pt() );
00251 t_L1IsoEMEta ->push_back( itrEm->eta() );
00252 t_L1IsoEMPhi ->push_back( itrEm->phi() );
00253 }
00254 if(debugL1Info_) {
00255 std::cout << "isoEm p/pt " << itrEm->momentum() << " " << itrEm->pt()
00256 << " eta/phi " << itrEm->eta() << " " << itrEm->phi()
00257 << std::endl;
00258 }
00259 }
00260
00261
00262 edm::Handle<l1extra::L1EmParticleCollection> l1NonIsoEmHandle ;
00263 iEvent.getByLabel(L1extraNonIsoEmSource_, l1NonIsoEmHandle);
00264 for( itrEm = l1NonIsoEmHandle->begin(),iL1Obj=0; itrEm != l1NonIsoEmHandle->end(); ++itrEm,iL1Obj++ ) {
00265 if(iL1Obj<1) {
00266 t_L1NonIsoEMPt ->push_back( itrEm->pt() );
00267 t_L1NonIsoEMEta ->push_back( itrEm->eta() );
00268 t_L1NonIsoEMPhi ->push_back( itrEm->phi() );
00269 }
00270 if(debugL1Info_) {
00271 std::cout << "nonIsoEm p/pt " << itrEm->momentum() << " " << itrEm->pt()
00272 << " eta/phi " << itrEm->eta() << " " << itrEm->phi()
00273 << std::endl;
00274 }
00275 }
00276
00277
00278 l1extra::L1MuonParticleCollection::const_iterator itrMu;
00279 edm::Handle<l1extra::L1MuonParticleCollection> l1MuHandle ;
00280 iEvent.getByLabel(L1extraMuonSource_, l1MuHandle);
00281 for( itrMu = l1MuHandle->begin(),iL1Obj=0; itrMu != l1MuHandle->end(); ++itrMu,iL1Obj++ ) {
00282 if(iL1Obj<1) {
00283 t_L1MuonPt ->push_back( itrMu->pt() );
00284 t_L1MuonEta ->push_back( itrMu->eta() );
00285 t_L1MuonPhi ->push_back( itrMu->phi() );
00286 }
00287 if(debugL1Info_) {
00288 std::cout << "l1muon p/pt " << itrMu->momentum() << " " << itrMu->pt()
00289 << " eta/phi " << itrMu->eta() << " " << itrMu->phi()
00290 << std::endl;
00291 }
00292 }
00293 }
00294
00295
00296
00297 edm::Handle<reco::VertexCollection> recVtxs;
00298 iEvent.getByLabel("offlinePrimaryVertices",recVtxs);
00299
00300 std::vector<reco::Track> svTracks;
00301 math::XYZPoint leadPV(0,0,0);
00302 double sumPtMax = -1.0;
00303 for(unsigned int ind=0;ind<recVtxs->size();ind++) {
00304
00305 if ( !((*recVtxs)[ind].isFake()) ) {
00306 double vtxTrkSumPt=0.0, vtxTrkSumPtWt=0.0;
00307 int vtxTrkNWt =0;
00308 double vtxTrkSumPtHP=0.0, vtxTrkSumPtHPWt=0.0;
00309 int vtxTrkNHP =0, vtxTrkNHPWt =0;
00310
00311 reco::Vertex::trackRef_iterator vtxTrack = (*recVtxs)[ind].tracks_begin();
00312
00313 for (vtxTrack = (*recVtxs)[ind].tracks_begin(); vtxTrack!=(*recVtxs)[ind].tracks_end(); vtxTrack++) {
00314
00315 if((*vtxTrack)->pt()<pvTracksPtMin_) continue;
00316
00317 bool trkQuality = (*vtxTrack)->quality(trackQuality_);
00318
00319 vtxTrkSumPt += (*vtxTrack)->pt();
00320
00321 vtxTrkSumPt += (*vtxTrack)->pt();
00322 if( trkQuality ) {
00323 vtxTrkSumPtHP += (*vtxTrack)->pt();
00324 vtxTrkNHP++;
00325 }
00326
00327 double weight = (*recVtxs)[ind].trackWeight(*vtxTrack);
00328 h_PVTracksWt ->Fill(weight);
00329 if( weight>0.5) {
00330 vtxTrkSumPtWt += (*vtxTrack)->pt();
00331 vtxTrkNWt++;
00332 if( trkQuality ) {
00333 vtxTrkSumPtHPWt += (*vtxTrack)->pt();
00334 vtxTrkNHPWt++;
00335 }
00336 }
00337 }
00338
00339 if(vtxTrkSumPt>sumPtMax) {
00340 sumPtMax = vtxTrkSumPt;
00341 leadPV = math::XYZPoint( (*recVtxs)[ind].x(),(*recVtxs)[ind].y(), (*recVtxs)[ind].z() );
00342 }
00343
00344 t_PVx ->push_back( (*recVtxs)[ind].x() );
00345 t_PVy ->push_back( (*recVtxs)[ind].y() );
00346 t_PVz ->push_back( (*recVtxs)[ind].z() );
00347 t_PVisValid ->push_back( (*recVtxs)[ind].isValid() );
00348 t_PVNTracks ->push_back( (*recVtxs)[ind].tracksSize() );
00349 t_PVndof ->push_back( (*recVtxs)[ind].ndof() );
00350 t_PVNTracksWt ->push_back( vtxTrkNWt );
00351 t_PVTracksSumPt ->push_back( vtxTrkSumPt );
00352 t_PVTracksSumPtWt->push_back( vtxTrkSumPtWt );
00353
00354 t_PVNTracksHP ->push_back( vtxTrkNHP );
00355 t_PVNTracksHPWt ->push_back( vtxTrkNHPWt );
00356 t_PVTracksSumPtHP ->push_back( vtxTrkSumPtHP );
00357 t_PVTracksSumPtHPWt->push_back( vtxTrkSumPtHPWt );
00358
00359 if(myverbose_==4) {
00360 std::cout<<"PV "<<ind<<" isValid "<<(*recVtxs)[ind].isValid()<<" isFake "<<(*recVtxs)[ind].isFake()
00361 <<" hasRefittedTracks() "<<ind<<" "<<(*recVtxs)[ind].hasRefittedTracks()
00362 <<" refittedTrksSize "<<(*recVtxs)[ind].refittedTracks().size()
00363 <<" tracksSize() "<<(*recVtxs)[ind].tracksSize()<<" sumPt "<<vtxTrkSumPt
00364 <<std::endl;
00365 }
00366 }
00367 }
00368
00369
00370
00371 edm::Handle<reco::BeamSpot> beamSpotH;
00372 iEvent.getByLabel("offlineBeamSpot", beamSpotH);
00373 math::XYZPoint bspot;
00374 bspot = ( beamSpotH.isValid() ) ? beamSpotH->position() : math::XYZPoint(0, 0, 0);
00375
00376
00377
00378 edm::Handle<reco::CaloJetCollection> jets;
00379 iEvent.getByLabel(JetSrc_,jets);
00380
00381
00382
00383 for(unsigned int ijet=0;ijet<(*jets).size();ijet++) {
00384 t_jetPt ->push_back( (*jets)[ijet].pt() );
00385 t_jetEta ->push_back( (*jets)[ijet].eta() );
00386 t_jetPhi ->push_back( (*jets)[ijet].phi() );
00387 t_nTrksJetVtx ->push_back( -1.0);
00388 t_nTrksJetCalo->push_back( -1.0);
00389 }
00390
00391
00392
00393
00394 edm::ESHandle<CaloGeometry> pG;
00395 iSetup.get<CaloGeometryRecord>().get(pG);
00396 const CaloGeometry* geo = pG.product();
00397
00398 edm::ESHandle<CaloTopology> theCaloTopology;
00399 iSetup.get<CaloTopologyRecord>().get(theCaloTopology);
00400 const CaloTopology *caloTopology = theCaloTopology.product();
00401
00402 edm::ESHandle<HcalTopology> htopo;
00403 iSetup.get<IdealGeometryRecord>().get(htopo);
00404 const HcalTopology* theHBHETopology = htopo.product();
00405
00406 edm::Handle<EcalRecHitCollection> barrelRecHitsHandle;
00407 edm::Handle<EcalRecHitCollection> endcapRecHitsHandle;
00408 iEvent.getByLabel("ecalRecHit","EcalRecHitsEB",barrelRecHitsHandle);
00409 iEvent.getByLabel("ecalRecHit","EcalRecHitsEE",endcapRecHitsHandle);
00410
00411
00412 edm::ESHandle<EcalChannelStatus> ecalChStatus;
00413 iSetup.get<EcalChannelStatusRcd>().get(ecalChStatus);
00414 const EcalChannelStatus* theEcalChStatus = ecalChStatus.product();
00415
00416
00417 edm::ESHandle<EcalTrigTowerConstituentsMap> hTtmap;
00418 iSetup.get<IdealGeometryRecord>().get(hTtmap);
00419 const EcalTrigTowerConstituentsMap& ttMap = *hTtmap;
00420
00421 edm::Handle<HBHERecHitCollection> hbhe;
00422 iEvent.getByLabel(HBHERecHitSource_, hbhe);
00423 if (!hbhe.isValid()) {
00424 nbad++;
00425 if (nbad < 10) std::cout << "No HBHE rechit collection\n";
00426 return;
00427 }
00428 const HBHERecHitCollection Hithbhe = *(hbhe.product());
00429
00430
00431 edm::Handle<edm::SimTrackContainer> SimTk;
00432 if (doMC) iEvent.getByLabel("g4SimHits",SimTk);
00433 edm::SimTrackContainer::const_iterator simTrkItr;
00434
00435 edm::Handle<edm::SimVertexContainer> SimVtx;
00436 if (doMC) iEvent.getByLabel("g4SimHits",SimVtx);
00437
00438
00439 edm::Handle<edm::PCaloHitContainer> pcaloeb;
00440 if (doMC) iEvent.getByLabel("g4SimHits", "EcalHitsEB", pcaloeb);
00441
00442 edm::Handle<edm::PCaloHitContainer> pcaloee;
00443 if (doMC) iEvent.getByLabel("g4SimHits", "EcalHitsEE", pcaloee);
00444
00445 edm::Handle<edm::PCaloHitContainer> pcalohh;
00446 if (doMC) iEvent.getByLabel("g4SimHits", "HcalHits", pcalohh);
00447
00448
00449 TrackerHitAssociator* associate=0;
00450 if (doMC) associate = new TrackerHitAssociator(iEvent);
00451
00452
00453
00454 h_nTracks->Fill(trkCollection->size());
00455
00456 int nTracks = 0;
00457
00458 t_nTracks = trkCollection->size();
00459
00460
00461 std::vector<spr::propagatedTrackID> trkCaloDets;
00462 spr::propagateCALO(trkCollection, geo, bField, theTrackQuality, trkCaloDets, false);
00463 std::vector<spr::propagatedTrackID>::const_iterator trkDetItr;
00464
00465 if(myverbose_>2) {
00466 for(trkDetItr = trkCaloDets.begin(); trkDetItr != trkCaloDets.end(); trkDetItr++){
00467 std::cout<<trkDetItr->trkItr->p()<<" "<<trkDetItr->trkItr->eta()<<" "<<trkDetItr->okECAL<<" ";
00468 if(trkDetItr->detIdECAL.subdetId() == EcalBarrel) std::cout << (EBDetId)trkDetItr->detIdECAL <<" ";
00469 else std::cout << (EEDetId)trkDetItr->detIdECAL <<" ";
00470 std::cout<<trkDetItr->okHCAL<<" ";
00471 if(trkDetItr->okHCAL) std::cout<<(HcalDetId)trkDetItr->detIdHCAL;
00472 std::cout << std::endl;
00473 }
00474 }
00475
00476 int nvtxTracks=0;
00477 for(trkDetItr = trkCaloDets.begin(),nTracks=0; trkDetItr != trkCaloDets.end(); trkDetItr++,nTracks++){
00478
00479 const reco::Track* pTrack = &(*(trkDetItr->trkItr));
00480
00481
00482 int pVtxTkId = -1;
00483 for(unsigned int ind=0; ind<recVtxs->size(); ind++) {
00484 if (!((*recVtxs)[ind].isFake())) {
00485 reco::Vertex::trackRef_iterator vtxTrack = (*recVtxs)[ind].tracks_begin();
00486 for (vtxTrack = (*recVtxs)[ind].tracks_begin(); vtxTrack!=(*recVtxs)[ind].tracks_end(); vtxTrack++) {
00487
00488 const edm::RefToBase<reco::Track> pvtxTrack = (*vtxTrack);
00489 if ( pTrack == pvtxTrack.get() ) {
00490 pVtxTkId = ind;
00491 break;
00492 if(myverbose_>2) {
00493 if( pTrack->pt()>1.0) {
00494 std::cout<<"Debug the track association with vertex "<<std::endl;
00495 std::cout<< pTrack << " "<< pvtxTrack.get() << std::endl;
00496 std::cout<<" trkVtxIndex "<<nvtxTracks<<" vtx "<<ind<<" pt "<<pTrack->pt()
00497 <<" eta "<<pTrack->eta()<<" "<<pTrack->pt()-pvtxTrack->pt()
00498 <<" "<< pTrack->eta()-pvtxTrack->eta()
00499 << std::endl;
00500 nvtxTracks++;
00501 }
00502 }
00503 }
00504 }
00505 }
00506 }
00507
00508 const reco::HitPattern& hitp = pTrack->hitPattern();
00509 const reco::HitPattern& hitpIn = pTrack->trackerExpectedHitsInner();
00510 const reco::HitPattern& hitpOut = pTrack->trackerExpectedHitsOuter();
00511
00512 int nLayersCrossed = hitp.trackerLayersWithMeasurement() ;
00513 int nOuterHits = hitp.stripTOBLayersWithMeasurement()+hitp.stripTECLayersWithMeasurement() ;
00514
00515 bool ifGood = pTrack->quality(trackQuality_);
00516 double pt1 = pTrack->pt();
00517 double p1 = pTrack->p();
00518 double eta1 = pTrack->momentum().eta();
00519 double phi1 = pTrack->momentum().phi();
00520 double etaEcal1 = trkDetItr->etaECAL;
00521 double phiEcal1 = trkDetItr->phiECAL;
00522 double etaHcal1 = trkDetItr->etaHCAL;
00523 double phiHcal1 = trkDetItr->phiHCAL;
00524 double dxy1 = pTrack->dxy();
00525 double dz1 = pTrack->dz();
00526 double chisq1 = pTrack->normalizedChi2();
00527 double dxybs1 = beamSpotH.isValid() ? pTrack->dxy(bspot) : pTrack->dxy();
00528 double dzbs1 = beamSpotH.isValid() ? pTrack->dz(bspot) : pTrack->dz();
00529 double dxypv1 = pTrack->dxy();
00530 double dzpv1 = pTrack->dz();
00531 if(pVtxTkId>=0) {
00532 math::XYZPoint thisTkPV = math::XYZPoint( (*recVtxs)[pVtxTkId].x(),(*recVtxs)[pVtxTkId].y(), (*recVtxs)[pVtxTkId].z() );
00533 dxypv1 = pTrack->dxy(thisTkPV);
00534 dzpv1 = pTrack->dz (thisTkPV);
00535 }
00536
00537 h_recEtaPt_0->Fill(eta1, pt1);
00538 h_recEtaP_0 ->Fill(eta1, p1);
00539 h_recPt_0 ->Fill(pt1);
00540 h_recP_0 ->Fill(p1);
00541 h_recEta_0 ->Fill(eta1);
00542 h_recPhi_0 ->Fill(phi1);
00543
00544 if(ifGood && nLayersCrossed>7 ) {
00545 h_recEtaPt_1->Fill(eta1, pt1);
00546 h_recEtaP_1 ->Fill(eta1, p1);
00547 h_recPt_1 ->Fill(pt1);
00548 h_recP_1 ->Fill(p1);
00549 h_recEta_1 ->Fill(eta1);
00550 h_recPhi_1 ->Fill(phi1);
00551 }
00552
00553 if( ! ifGood ) continue;
00554
00555 if( writeAllTracks && p1>2.0 && nLayersCrossed>7) {
00556 t_trackPAll ->push_back( p1 );
00557 t_trackEtaAll ->push_back( eta1 );
00558 t_trackPhiAll ->push_back( phi1 );
00559 t_trackPtAll ->push_back( pt1 );
00560 t_trackDxyAll ->push_back( dxy1 );
00561 t_trackDzAll ->push_back( dz1 );
00562 t_trackDxyPVAll ->push_back( dxypv1 );
00563 t_trackDzPVAll ->push_back( dzpv1 );
00564 t_trackChiSqAll ->push_back( chisq1 );
00565 }
00566 if (doMC) {
00567 edm::SimTrackContainer::const_iterator matchedSimTrkAll = spr::matchedSimTrack(iEvent, SimTk, SimVtx, pTrack, *associate, false);
00568 if( writeAllTracks && matchedSimTrkAll != SimTk->end()) t_trackPdgIdAll->push_back( matchedSimTrkAll->type() );
00569 }
00570
00571 if( pt1>minTrackP_ && std::abs(eta1)<maxTrackEta_ && trkDetItr->okECAL) {
00572
00573 double maxNearP31x31=999.0, maxNearP25x25=999.0, maxNearP21x21=999.0, maxNearP15x15=999.0;
00574 maxNearP31x31 = spr::chargeIsolationEcal(nTracks, trkCaloDets, geo, caloTopology, 15,15);
00575 maxNearP25x25 = spr::chargeIsolationEcal(nTracks, trkCaloDets, geo, caloTopology, 12,12);
00576 maxNearP21x21 = spr::chargeIsolationEcal(nTracks, trkCaloDets, geo, caloTopology, 10,10);
00577 maxNearP15x15 = spr::chargeIsolationEcal(nTracks, trkCaloDets, geo, caloTopology, 7, 7);
00578
00579 int iTrkEtaBin=-1, iTrkMomBin=-1;
00580 for(unsigned int ieta=0; ieta<NEtaBins; ieta++) {
00581 if(std::abs(eta1)>genPartEtaBins[ieta] && std::abs(eta1)<genPartEtaBins[ieta+1] ) iTrkEtaBin = ieta;
00582 }
00583 for(unsigned int ipt=0; ipt<NPBins; ipt++) {
00584 if( p1>genPartPBins[ipt] && p1<genPartPBins[ipt+1] ) iTrkMomBin = ipt;
00585 }
00586 if( iTrkMomBin>=0 && iTrkEtaBin>=0 ) {
00587 h_maxNearP31x31[iTrkMomBin][iTrkEtaBin]->Fill( maxNearP31x31 );
00588 h_maxNearP25x25[iTrkMomBin][iTrkEtaBin]->Fill( maxNearP25x25 );
00589 h_maxNearP21x21[iTrkMomBin][iTrkEtaBin]->Fill( maxNearP21x21 );
00590 h_maxNearP15x15[iTrkMomBin][iTrkEtaBin]->Fill( maxNearP15x15 );
00591 }
00592 if( maxNearP31x31<0.0 && nLayersCrossed>7 && nOuterHits>4) {
00593 h_recEtaPt_2->Fill(eta1, pt1);
00594 h_recEtaP_2 ->Fill(eta1, p1);
00595 h_recPt_2 ->Fill(pt1);
00596 h_recP_2 ->Fill(p1);
00597 h_recEta_2 ->Fill(eta1);
00598 h_recPhi_2 ->Fill(phi1);
00599 }
00600
00601
00602 if( maxNearP31x31<1.0) {
00603
00604 haveIsoTrack = true;
00605
00606
00607 double simTrackP = -1;
00608 if (doMC) {
00609 edm::SimTrackContainer::const_iterator matchedSimTrk = spr::matchedSimTrack(iEvent, SimTk, SimVtx, pTrack, *associate, false);
00610 if( matchedSimTrk != SimTk->end() )simTrackP = matchedSimTrk->momentum().P();
00611 }
00612
00613 edm::ESHandle<EcalSeverityLevelAlgo> sevlv;
00614 iSetup.get<EcalSeverityLevelAlgoRcd>().get(sevlv);
00615
00616
00617 std::pair<double, bool> e7x7P, e9x9P, e11x11P, e15x15P;
00618 std::pair<double, bool> e7x7_10SigP, e9x9_10SigP, e11x11_10SigP, e15x15_10SigP;
00619 std::pair<double, bool> e7x7_15SigP, e9x9_15SigP, e11x11_15SigP, e15x15_15SigP;
00620 std::pair<double, bool> e7x7_20SigP, e9x9_20SigP, e11x11_20SigP, e15x15_20SigP;
00621 std::pair<double, bool> e7x7_25SigP, e9x9_25SigP, e11x11_25SigP, e15x15_25SigP;
00622 std::pair<double, bool> e7x7_30SigP, e9x9_30SigP, e11x11_30SigP, e15x15_30SigP;
00623
00624 spr::caloSimInfo simInfo3x3, simInfo5x5, simInfo7x7, simInfo9x9;
00625 spr::caloSimInfo simInfo11x11, simInfo13x13, simInfo15x15, simInfo21x21, simInfo25x25, simInfo31x31;
00626 double trkEcalEne=0;
00627
00628 const DetId isoCell = trkDetItr->detIdECAL;
00629 e7x7P = spr::eECALmatrix(isoCell,barrelRecHitsHandle,endcapRecHitsHandle, *theEcalChStatus, geo, caloTopology,sevlv.product(),3,3, -100.0, -100.0, tMinE_,tMaxE_);
00630 e9x9P = spr::eECALmatrix(isoCell,barrelRecHitsHandle,endcapRecHitsHandle, *theEcalChStatus, geo, caloTopology,sevlv.product(),4,4, -100.0, -100.0, tMinE_,tMaxE_);
00631 e11x11P = spr::eECALmatrix(isoCell,barrelRecHitsHandle,endcapRecHitsHandle, *theEcalChStatus, geo, caloTopology,sevlv.product(),5,5, -100.0, -100.0, tMinE_,tMaxE_);
00632 e15x15P = spr::eECALmatrix(isoCell,barrelRecHitsHandle,endcapRecHitsHandle, *theEcalChStatus, geo, caloTopology,sevlv.product(),7,7, -100.0, -100.0, tMinE_,tMaxE_);
00633
00634 e7x7_10SigP = spr::eECALmatrix(isoCell,barrelRecHitsHandle,endcapRecHitsHandle, *theEcalChStatus, geo, caloTopology,sevlv.product(),3,3, 0.030, 0.150, tMinE_,tMaxE_);
00635 e9x9_10SigP = spr::eECALmatrix(isoCell,barrelRecHitsHandle,endcapRecHitsHandle, *theEcalChStatus, geo, caloTopology,sevlv.product(),4,4, 0.030, 0.150, tMinE_,tMaxE_);
00636 e11x11_10SigP = spr::eECALmatrix(isoCell,barrelRecHitsHandle,endcapRecHitsHandle, *theEcalChStatus, geo, caloTopology,sevlv.product(),5,5, 0.030, 0.150, tMinE_,tMaxE_);
00637 e15x15_10SigP = spr::eECALmatrix(isoCell,barrelRecHitsHandle,endcapRecHitsHandle, *theEcalChStatus, geo, caloTopology,sevlv.product(),7,7, 0.030, 0.150, tMinE_,tMaxE_);
00638
00639 e7x7_15SigP = spr::eECALmatrix(isoCell,barrelRecHitsHandle,endcapRecHitsHandle, *theEcalChStatus, geo, caloTopology, sevlv.product(),ttMap, 3,3, 0.20,0.45, tMinE_,tMaxE_);
00640 e9x9_15SigP = spr::eECALmatrix(isoCell,barrelRecHitsHandle,endcapRecHitsHandle, *theEcalChStatus, geo, caloTopology, sevlv.product(),ttMap, 4,4, 0.20,0.45, tMinE_,tMaxE_);
00641 e11x11_15SigP = spr::eECALmatrix(isoCell,barrelRecHitsHandle,endcapRecHitsHandle, *theEcalChStatus, geo, caloTopology,sevlv.product(), ttMap, 5,5, 0.20,0.45, tMinE_,tMaxE_);
00642 e15x15_15SigP = spr::eECALmatrix(isoCell,barrelRecHitsHandle,endcapRecHitsHandle, *theEcalChStatus, geo, caloTopology, sevlv.product(),ttMap, 7,7, 0.20,0.45, tMinE_,tMaxE_, false);
00643
00644 e7x7_20SigP = spr::eECALmatrix(isoCell,barrelRecHitsHandle,endcapRecHitsHandle, *theEcalChStatus, geo, caloTopology,sevlv.product(),3,3, 0.060, 0.300, tMinE_,tMaxE_);
00645 e9x9_20SigP = spr::eECALmatrix(isoCell,barrelRecHitsHandle,endcapRecHitsHandle, *theEcalChStatus, geo, caloTopology,sevlv.product(),4,4, 0.060, 0.300, tMinE_,tMaxE_);
00646 e11x11_20SigP = spr::eECALmatrix(isoCell,barrelRecHitsHandle,endcapRecHitsHandle, *theEcalChStatus, geo, caloTopology,sevlv.product(),5,5, 0.060, 0.300, tMinE_,tMaxE_);
00647 e15x15_20SigP = spr::eECALmatrix(isoCell,barrelRecHitsHandle,endcapRecHitsHandle, *theEcalChStatus, geo, caloTopology,sevlv.product(),7,7, 0.060, 0.300, tMinE_,tMaxE_);
00648
00649 e7x7_25SigP = spr::eECALmatrix(isoCell,barrelRecHitsHandle,endcapRecHitsHandle, *theEcalChStatus, geo, caloTopology,sevlv.product(),3,3, 0.075, 0.375, tMinE_,tMaxE_);
00650 e9x9_25SigP = spr::eECALmatrix(isoCell,barrelRecHitsHandle,endcapRecHitsHandle, *theEcalChStatus, geo, caloTopology,sevlv.product(),4,4, 0.075, 0.375, tMinE_,tMaxE_);
00651 e11x11_25SigP = spr::eECALmatrix(isoCell,barrelRecHitsHandle,endcapRecHitsHandle, *theEcalChStatus, geo, caloTopology,sevlv.product(),5,5, 0.075, 0.375, tMinE_,tMaxE_);
00652 e15x15_25SigP = spr::eECALmatrix(isoCell,barrelRecHitsHandle,endcapRecHitsHandle, *theEcalChStatus, geo, caloTopology,sevlv.product(),7,7, 0.075, 0.375, tMinE_,tMaxE_);
00653
00654 e7x7_30SigP = spr::eECALmatrix(isoCell,barrelRecHitsHandle,endcapRecHitsHandle, *theEcalChStatus, geo, caloTopology,sevlv.product(),3,3, 0.090, 0.450, tMinE_,tMaxE_);
00655 e9x9_30SigP = spr::eECALmatrix(isoCell,barrelRecHitsHandle,endcapRecHitsHandle, *theEcalChStatus, geo, caloTopology,sevlv.product(),4,4, 0.090, 0.450, tMinE_,tMaxE_);
00656 e11x11_30SigP = spr::eECALmatrix(isoCell,barrelRecHitsHandle,endcapRecHitsHandle, *theEcalChStatus, geo, caloTopology,sevlv.product(),5,5, 0.090, 0.450, tMinE_,tMaxE_);
00657 e15x15_30SigP = spr::eECALmatrix(isoCell,barrelRecHitsHandle,endcapRecHitsHandle, *theEcalChStatus, geo, caloTopology,sevlv.product(),7,7, 0.090, 0.450, tMinE_,tMaxE_);
00658 if(myverbose_ == 2) {
00659 std::cout << "clean ecal rechit " << std::endl;
00660 std::cout<<"e7x7 "<<e7x7P.first<<" e9x9 "<<e9x9P.first<<" e11x11 " << e11x11P.first << " e15x15 "<<e15x15P.first<<std::endl;
00661 std::cout<<"e7x7_10Sig "<<e7x7_10SigP.first<<" e11x11_10Sig "<<e11x11_10SigP.first<<" e15x15_10Sig "<<e15x15_10SigP.first<<std::endl;
00662 }
00663
00664 if (doMC) {
00665
00666 spr::eECALSimInfo(iEvent,isoCell,geo,caloTopology,pcaloeb,pcaloee,SimTk,SimVtx,pTrack, *associate, 1,1, simInfo3x3);
00667 spr::eECALSimInfo(iEvent,isoCell,geo,caloTopology,pcaloeb,pcaloee,SimTk,SimVtx,pTrack, *associate, 2,2, simInfo5x5);
00668 spr::eECALSimInfo(iEvent,isoCell,geo,caloTopology,pcaloeb,pcaloee,SimTk,SimVtx,pTrack, *associate, 3,3, simInfo7x7);
00669 spr::eECALSimInfo(iEvent,isoCell,geo,caloTopology,pcaloeb,pcaloee,SimTk,SimVtx,pTrack, *associate, 4,4, simInfo9x9);
00670 spr::eECALSimInfo(iEvent,isoCell,geo,caloTopology,pcaloeb,pcaloee,SimTk,SimVtx,pTrack, *associate, 5,5, simInfo11x11);
00671 spr::eECALSimInfo(iEvent,isoCell,geo,caloTopology,pcaloeb,pcaloee,SimTk,SimVtx,pTrack, *associate, 6,6, simInfo13x13);
00672 spr::eECALSimInfo(iEvent,isoCell,geo,caloTopology,pcaloeb,pcaloee,SimTk,SimVtx,pTrack, *associate, 7,7, simInfo15x15, 150.0,false);
00673 spr::eECALSimInfo(iEvent,isoCell,geo,caloTopology,pcaloeb,pcaloee,SimTk,SimVtx,pTrack, *associate, 10,10, simInfo21x21);
00674 spr::eECALSimInfo(iEvent,isoCell,geo,caloTopology,pcaloeb,pcaloee,SimTk,SimVtx,pTrack, *associate, 12,12, simInfo25x25);
00675 spr::eECALSimInfo(iEvent,isoCell,geo,caloTopology,pcaloeb,pcaloee,SimTk,SimVtx,pTrack, *associate, 15,15, simInfo31x31);
00676
00677 trkEcalEne = spr::eCaloSimInfo(iEvent, geo, pcaloeb,pcaloee, SimTk, SimVtx, pTrack, *associate);
00678 if(myverbose_ == 1) {
00679 std::cout << "Track momentum " << pt1 << std::endl;
00680
00681 std::cout << "ecal siminfo " << std::endl;
00682 std::cout << "simInfo3x3: " << "eTotal " << simInfo3x3.eTotal << " eMatched " << simInfo3x3.eMatched << " eRest " << simInfo3x3.eRest << " eGamma "<<simInfo3x3.eGamma << " eNeutralHad " << simInfo3x3.eNeutralHad << " eChargedHad " << simInfo3x3.eChargedHad << std::endl;
00683 std::cout << "simInfo5x5: " << "eTotal " << simInfo5x5.eTotal << " eMatched " << simInfo5x5.eMatched << " eRest " << simInfo5x5.eRest << " eGamma "<<simInfo5x5.eGamma << " eNeutralHad " << simInfo5x5.eNeutralHad << " eChargedHad " << simInfo5x5.eChargedHad << std::endl;
00684 std::cout << "simInfo7x7: " << "eTotal " << simInfo7x7.eTotal << " eMatched " << simInfo7x7.eMatched << " eRest " << simInfo7x7.eRest << " eGamma "<<simInfo7x7.eGamma << " eNeutralHad " << simInfo7x7.eNeutralHad << " eChargedHad " << simInfo7x7.eChargedHad << std::endl;
00685 std::cout << "simInfo9x9: " << "eTotal " << simInfo9x9.eTotal << " eMatched " << simInfo9x9.eMatched << " eRest " << simInfo9x9.eRest << " eGamma "<<simInfo9x9.eGamma << " eNeutralHad " << simInfo9x9.eNeutralHad << " eChargedHad " << simInfo9x9.eChargedHad << std::endl;
00686 std::cout << "simInfo11x11: " << "eTotal " << simInfo11x11.eTotal << " eMatched " << simInfo11x11.eMatched << " eRest " << simInfo11x11.eRest << " eGamma "<<simInfo11x11.eGamma << " eNeutralHad " << simInfo11x11.eNeutralHad << " eChargedHad " << simInfo11x11.eChargedHad << std::endl;
00687 std::cout << "simInfo15x15: " << "eTotal " << simInfo15x15.eTotal << " eMatched " << simInfo15x15.eMatched << " eRest " << simInfo15x15.eRest << " eGamma "<<simInfo15x15.eGamma << " eNeutralHad " << simInfo15x15.eNeutralHad << " eChargedHad " << simInfo15x15.eChargedHad << std::endl;
00688 std::cout << "simInfo31x31: " << "eTotal " << simInfo31x31.eTotal << " eMatched " << simInfo31x31.eMatched << " eRest " << simInfo31x31.eRest << " eGamma "<<simInfo31x31.eGamma << " eNeutralHad " << simInfo31x31.eNeutralHad << " eChargedHad " << simInfo31x31.eChargedHad << std::endl;
00689 std::cout << "trkEcalEne" << trkEcalEne << std::endl;
00690 }
00691 }
00692
00693
00694 double hcalScale=1.0;
00695 if( std::abs(pTrack->eta())<1.4 ) {
00696 hcalScale=120.0;
00697 } else {
00698 hcalScale=135.0;
00699 }
00700
00701 double maxNearHcalP3x3=-1, maxNearHcalP5x5=-1, maxNearHcalP7x7=-1;
00702 maxNearHcalP3x3 = spr::chargeIsolationHcal(nTracks, trkCaloDets, theHBHETopology, 1,1);
00703 maxNearHcalP5x5 = spr::chargeIsolationHcal(nTracks, trkCaloDets, theHBHETopology, 2,2);
00704 maxNearHcalP7x7 = spr::chargeIsolationHcal(nTracks, trkCaloDets, theHBHETopology, 3,3);
00705
00706 double h3x3=0, h5x5=0, h7x7=0;
00707 double h3x3Sig=0, h5x5Sig=0, h7x7Sig=0;
00708 double trkHcalEne = 0;
00709 spr::caloSimInfo hsimInfo3x3, hsimInfo5x5, hsimInfo7x7;
00710
00711 if(trkDetItr->okHCAL) {
00712 const DetId ClosestCell(trkDetItr->detIdHCAL);
00713
00714 h3x3 = spr::eHCALmatrix(theHBHETopology, ClosestCell, hbhe,1,1, false, true, -100.0, -100.0, -100.0, -100.0, tMinH_,tMaxH_);
00715 h5x5 = spr::eHCALmatrix(theHBHETopology, ClosestCell, hbhe,2,2, false, true, -100.0, -100.0, -100.0, -100.0, tMinH_,tMaxH_);
00716 h7x7 = spr::eHCALmatrix(theHBHETopology, ClosestCell, hbhe,3,3, false, true, -100.0, -100.0, -100.0, -100.0, tMinH_,tMaxH_);
00717 h3x3Sig = spr::eHCALmatrix(theHBHETopology, ClosestCell, hbhe,1,1, false, true, 0.7, 0.8, -100.0, -100.0, tMinH_,tMaxH_);
00718 h5x5Sig = spr::eHCALmatrix(theHBHETopology, ClosestCell, hbhe,2,2, false, true, 0.7, 0.8, -100.0, -100.0, tMinH_,tMaxH_);
00719 h7x7Sig = spr::eHCALmatrix(theHBHETopology, ClosestCell, hbhe,3,3, false, true, 0.7, 0.8, -100.0, -100.0, tMinH_,tMaxH_);
00720
00721 if(myverbose_==2) {
00722 std::cout << "HCAL 3x3 " << h3x3 << " " << h3x3Sig << " 5x5 " << h5x5 << " " << h5x5Sig << " 7x7 " << h7x7 << " " << h7x7Sig << std::endl;
00723 }
00724
00725 if (doMC) {
00726 spr::eHCALSimInfo(iEvent, theHBHETopology, ClosestCell, geo,pcalohh, SimTk, SimVtx, pTrack, *associate, 1,1, hsimInfo3x3);
00727 spr::eHCALSimInfo(iEvent, theHBHETopology, ClosestCell, geo,pcalohh, SimTk, SimVtx, pTrack, *associate, 2,2, hsimInfo5x5);
00728 spr::eHCALSimInfo(iEvent, theHBHETopology, ClosestCell, geo,pcalohh, SimTk, SimVtx, pTrack, *associate, 3,3, hsimInfo7x7, 150.0, false,false);
00729 trkHcalEne = spr::eCaloSimInfo(iEvent, geo,pcalohh, SimTk, SimVtx, pTrack, *associate);
00730 if(myverbose_ == 1) {
00731 std::cout << "Hcal siminfo " << std::endl;
00732 std::cout << "hsimInfo3x3: " << "eTotal " << hsimInfo3x3.eTotal << " eMatched " << hsimInfo3x3.eMatched << " eRest " << hsimInfo3x3.eRest << " eGamma "<<hsimInfo3x3.eGamma << " eNeutralHad " << hsimInfo3x3.eNeutralHad << " eChargedHad " << hsimInfo3x3.eChargedHad << std::endl;
00733 std::cout << "hsimInfo5x5: " << "eTotal " << hsimInfo5x5.eTotal << " eMatched " << hsimInfo5x5.eMatched << " eRest " << hsimInfo5x5.eRest << " eGamma "<<hsimInfo5x5.eGamma << " eNeutralHad " << hsimInfo5x5.eNeutralHad << " eChargedHad " << hsimInfo5x5.eChargedHad << std::endl;
00734 std::cout << "hsimInfo7x7: " << "eTotal " << hsimInfo7x7.eTotal << " eMatched " << hsimInfo7x7.eMatched << " eRest " << hsimInfo7x7.eRest << " eGamma "<<hsimInfo7x7.eGamma << " eNeutralHad " << hsimInfo7x7.eNeutralHad << " eChargedHad " << hsimInfo7x7.eChargedHad << std::endl;
00735 std::cout << "trkHcalEne " << trkHcalEne << std::endl;
00736 }
00737 }
00738
00739
00740 if(myverbose_==4) {
00741 std::cout<<"Run "<<iEvent.id().run()<<" Event "<<iEvent.id().event()<<std::endl;
00742 std::vector<std::pair<DetId,double> > v7x7 = spr::eHCALmatrixCell(theHBHETopology, ClosestCell, hbhe,3,3, false, false);
00743 double sumv=0.0;
00744
00745 for(unsigned int iv=0; iv<v7x7.size(); iv++) {
00746 sumv += v7x7[iv].second;
00747 }
00748 std::cout<<"h7x7 "<<h7x7<<" v7x7 "<<sumv << " in " << v7x7.size() <<std::endl;
00749 for(unsigned int iv=0; iv<v7x7.size(); iv++) {
00750 HcalDetId id = v7x7[iv].first;
00751 std::cout << " Cell " << iv << " 0x" << std::hex << v7x7[iv].first() << std::dec << " " << id << " Energy " << v7x7[iv].second << std::endl;
00752 }
00753 }
00754
00755 }
00756 if (doMC) {
00757 trkHcalEne = spr::eCaloSimInfo(iEvent, geo,pcalohh, SimTk, SimVtx, pTrack, *associate);
00758 }
00759
00760
00761
00762 std::pair<math::XYZPoint,double> point2_TK0 = spr::propagateTrackerEnd( pTrack, bField, false);
00763 math::XYZPoint diff(pTrack->outerPosition().X()-point2_TK0.first.X(),
00764 pTrack->outerPosition().Y()-point2_TK0.first.Y(),
00765 pTrack->outerPosition().Z()-point2_TK0.first.Z() );
00766 double trackOutPosOutHitDr = diff.R();
00767 double trackL = point2_TK0.second;
00768 if (myverbose_==5) {
00769 std::cout<<" propagted "<<point2_TK0.first<<" "<< point2_TK0.first.eta()<<" "<<point2_TK0.first.phi()<<std::endl;
00770 std::cout<<" outerPosition() "<< pTrack->outerPosition() << " "<< pTrack->outerPosition().eta()<< " " << pTrack->outerPosition().phi()<< std::endl;
00771 std::cout<<"diff " << diff << " diffR " <<diff.R()<<" diffR/L "<<diff.R()/point2_TK0.second <<std::endl;
00772 }
00773
00774 for(unsigned int ind=0;ind<recVtxs->size();ind++) {
00775 if (!((*recVtxs)[ind].isFake())) {
00776 reco::Vertex::trackRef_iterator vtxTrack = (*recVtxs)[ind].tracks_begin();
00777 if( DeltaR(eta1,phi1, (*vtxTrack)->eta(),(*vtxTrack)->phi()) < 0.01 ) t_trackPVIdx ->push_back( ind );
00778 else t_trackPVIdx ->push_back( -1 );
00779 }
00780 }
00781
00782
00783 t_trackPVIdx ->push_back( pVtxTkId );
00784 t_trackP ->push_back( p1 );
00785 t_trackPt ->push_back( pt1 );
00786 t_trackEta ->push_back( eta1 );
00787 t_trackPhi ->push_back( phi1 );
00788 t_trackEcalEta ->push_back( etaEcal1 );
00789 t_trackEcalPhi ->push_back( phiEcal1 );
00790 t_trackHcalEta ->push_back( etaHcal1 );
00791 t_trackHcalPhi ->push_back( phiHcal1 );
00792 t_trackDxy ->push_back( dxy1 );
00793 t_trackDz ->push_back( dz1 );
00794 t_trackDxyBS ->push_back( dxybs1 );
00795 t_trackDzBS ->push_back( dzbs1 );
00796 t_trackDxyPV ->push_back( dxypv1 );
00797 t_trackDzPV ->push_back( dzpv1 );
00798 t_trackChiSq ->push_back( chisq1 );
00799 t_trackNOuterHits ->push_back( nOuterHits );
00800 t_NLayersCrossed ->push_back( nLayersCrossed );
00801
00802 t_trackHitsTOB ->push_back( hitp.stripTOBLayersWithMeasurement() );
00803 t_trackHitsTEC ->push_back( hitp.stripTECLayersWithMeasurement() );
00804 t_trackHitInMissTOB ->push_back( hitpIn.stripTOBLayersWithoutMeasurement() );
00805 t_trackHitInMissTEC ->push_back( hitpIn.stripTECLayersWithoutMeasurement() );
00806 t_trackHitInMissTIB ->push_back( hitpIn.stripTIBLayersWithoutMeasurement() );
00807 t_trackHitInMissTID ->push_back( hitpIn.stripTIDLayersWithoutMeasurement() );
00808 t_trackHitInMissTIBTID ->push_back( hitpIn.stripTIBLayersWithoutMeasurement() + hitpIn.stripTIDLayersWithoutMeasurement() );
00809
00810 t_trackHitOutMissTOB ->push_back( hitpOut.stripTOBLayersWithoutMeasurement() );
00811 t_trackHitOutMissTEC ->push_back( hitpOut.stripTECLayersWithoutMeasurement() );
00812 t_trackHitOutMissTIB ->push_back( hitpOut.stripTIBLayersWithoutMeasurement() );
00813 t_trackHitOutMissTID ->push_back( hitpOut.stripTIDLayersWithoutMeasurement() );
00814 t_trackHitOutMissTOBTEC ->push_back( hitpOut.stripTOBLayersWithoutMeasurement() + hitpOut.stripTECLayersWithoutMeasurement() );
00815
00816 t_trackHitInMeasTOB ->push_back( hitpIn.stripTOBLayersWithMeasurement() );
00817 t_trackHitInMeasTEC ->push_back( hitpIn.stripTECLayersWithMeasurement() );
00818 t_trackHitInMeasTIB ->push_back( hitpIn.stripTIBLayersWithMeasurement() );
00819 t_trackHitInMeasTID ->push_back( hitpIn.stripTIDLayersWithMeasurement() );
00820 t_trackHitOutMeasTOB ->push_back( hitpOut.stripTOBLayersWithMeasurement() );
00821 t_trackHitOutMeasTEC ->push_back( hitpOut.stripTECLayersWithMeasurement() );
00822 t_trackHitOutMeasTIB ->push_back( hitpOut.stripTIBLayersWithMeasurement() );
00823 t_trackHitOutMeasTID ->push_back( hitpOut.stripTIDLayersWithMeasurement() );
00824 t_trackOutPosOutHitDr ->push_back( trackOutPosOutHitDr );
00825 t_trackL ->push_back( trackL );
00826
00827 t_maxNearP31x31 ->push_back( maxNearP31x31 );
00828 t_maxNearP21x21 ->push_back( maxNearP21x21 );
00829
00830 t_ecalSpike11x11 ->push_back( e11x11P.second );
00831 t_e7x7 ->push_back( e7x7P.first );
00832 t_e9x9 ->push_back( e9x9P.first );
00833 t_e11x11 ->push_back( e11x11P.first );
00834 t_e15x15 ->push_back( e15x15P.first );
00835
00836 t_e7x7_10Sig ->push_back( e7x7_10SigP.first );
00837 t_e9x9_10Sig ->push_back( e9x9_10SigP.first );
00838 t_e11x11_10Sig ->push_back( e11x11_10SigP.first );
00839 t_e15x15_10Sig ->push_back( e15x15_10SigP.first );
00840 t_e7x7_15Sig ->push_back( e7x7_15SigP.first );
00841 t_e9x9_15Sig ->push_back( e9x9_15SigP.first );
00842 t_e11x11_15Sig ->push_back( e11x11_15SigP.first );
00843 t_e15x15_15Sig ->push_back( e15x15_15SigP.first );
00844 t_e7x7_20Sig ->push_back( e7x7_20SigP.first );
00845 t_e9x9_20Sig ->push_back( e9x9_20SigP.first );
00846 t_e11x11_20Sig ->push_back( e11x11_20SigP.first );
00847 t_e15x15_20Sig ->push_back( e15x15_20SigP.first );
00848 t_e7x7_25Sig ->push_back( e7x7_25SigP.first );
00849 t_e9x9_25Sig ->push_back( e9x9_25SigP.first );
00850 t_e11x11_25Sig ->push_back( e11x11_25SigP.first );
00851 t_e15x15_25Sig ->push_back( e15x15_25SigP.first );
00852 t_e7x7_30Sig ->push_back( e7x7_30SigP.first );
00853 t_e9x9_30Sig ->push_back( e9x9_30SigP.first );
00854 t_e11x11_30Sig ->push_back( e11x11_30SigP.first );
00855 t_e15x15_30Sig ->push_back( e15x15_30SigP.first );
00856
00857 if (doMC) {
00858 t_esim7x7 ->push_back( simInfo7x7.eTotal );
00859 t_esim9x9 ->push_back( simInfo9x9.eTotal );
00860 t_esim11x11 ->push_back( simInfo11x11.eTotal );
00861 t_esim15x15 ->push_back( simInfo15x15.eTotal );
00862
00863 t_esim7x7Matched ->push_back( simInfo7x7.eMatched );
00864 t_esim9x9Matched ->push_back( simInfo9x9.eMatched );
00865 t_esim11x11Matched ->push_back( simInfo11x11.eMatched );
00866 t_esim15x15Matched ->push_back( simInfo15x15.eMatched );
00867
00868 t_esim7x7Rest ->push_back( simInfo7x7.eRest );
00869 t_esim9x9Rest ->push_back( simInfo9x9.eRest );
00870 t_esim11x11Rest ->push_back( simInfo11x11.eRest );
00871 t_esim15x15Rest ->push_back( simInfo15x15.eRest );
00872
00873 t_esim7x7Photon ->push_back( simInfo7x7.eGamma );
00874 t_esim9x9Photon ->push_back( simInfo9x9.eGamma );
00875 t_esim11x11Photon ->push_back( simInfo11x11.eGamma );
00876 t_esim15x15Photon ->push_back( simInfo15x15.eGamma );
00877
00878 t_esim7x7NeutHad ->push_back( simInfo7x7.eNeutralHad );
00879 t_esim9x9NeutHad ->push_back( simInfo9x9.eNeutralHad );
00880 t_esim11x11NeutHad ->push_back( simInfo11x11.eNeutralHad );
00881 t_esim15x15NeutHad ->push_back( simInfo15x15.eNeutralHad );
00882
00883 t_esim7x7CharHad ->push_back( simInfo7x7.eChargedHad );
00884 t_esim9x9CharHad ->push_back( simInfo9x9.eChargedHad );
00885 t_esim11x11CharHad ->push_back( simInfo11x11.eChargedHad );
00886 t_esim15x15CharHad ->push_back( simInfo15x15.eChargedHad );
00887
00888 t_trkEcalEne ->push_back( trkEcalEne );
00889 t_simTrackP ->push_back( simTrackP );
00890 t_esimPdgId ->push_back( simInfo11x11.pdgMatched );
00891 }
00892
00893 t_maxNearHcalP3x3 ->push_back( maxNearHcalP3x3 );
00894 t_maxNearHcalP5x5 ->push_back( maxNearHcalP5x5 );
00895 t_maxNearHcalP7x7 ->push_back( maxNearHcalP7x7 );
00896
00897 t_h3x3 ->push_back( h3x3 );
00898 t_h5x5 ->push_back( h5x5 );
00899 t_h7x7 ->push_back( h7x7 );
00900 t_h3x3Sig ->push_back( h3x3Sig );
00901 t_h5x5Sig ->push_back( h5x5Sig );
00902 t_h7x7Sig ->push_back( h7x7Sig );
00903
00904 t_infoHcal ->push_back( trkDetItr->okHCAL );
00905 if (doMC) {
00906 t_trkHcalEne ->push_back( hcalScale*trkHcalEne );
00907
00908 t_hsim3x3 ->push_back( hcalScale*hsimInfo3x3.eTotal );
00909 t_hsim5x5 ->push_back( hcalScale*hsimInfo5x5.eTotal );
00910 t_hsim7x7 ->push_back( hcalScale*hsimInfo7x7.eTotal );
00911
00912 t_hsim3x3Matched ->push_back( hcalScale*hsimInfo3x3.eMatched );
00913 t_hsim5x5Matched ->push_back( hcalScale*hsimInfo5x5.eMatched );
00914 t_hsim7x7Matched ->push_back( hcalScale*hsimInfo7x7.eMatched );
00915
00916 t_hsim3x3Rest ->push_back( hcalScale*hsimInfo3x3.eRest );
00917 t_hsim5x5Rest ->push_back( hcalScale*hsimInfo5x5.eRest );
00918 t_hsim7x7Rest ->push_back( hcalScale*hsimInfo7x7.eRest );
00919
00920 t_hsim3x3Photon ->push_back( hcalScale*hsimInfo3x3.eGamma );
00921 t_hsim5x5Photon ->push_back( hcalScale*hsimInfo5x5.eGamma );
00922 t_hsim7x7Photon ->push_back( hcalScale*hsimInfo7x7.eGamma );
00923
00924 t_hsim3x3NeutHad ->push_back( hcalScale*hsimInfo3x3.eNeutralHad );
00925 t_hsim5x5NeutHad ->push_back( hcalScale*hsimInfo5x5.eNeutralHad );
00926 t_hsim7x7NeutHad ->push_back( hcalScale*hsimInfo7x7.eNeutralHad );
00927
00928 t_hsim3x3CharHad ->push_back( hcalScale*hsimInfo3x3.eChargedHad );
00929 t_hsim5x5CharHad ->push_back( hcalScale*hsimInfo5x5.eChargedHad );
00930 t_hsim7x7CharHad ->push_back( hcalScale*hsimInfo7x7.eChargedHad );
00931 }
00932
00933
00934
00935
00936
00937
00938
00939
00940
00941
00942
00943
00944
00945
00946
00947
00948
00949
00950
00951
00952
00953
00954 }
00955 }
00956 }
00957
00958 if(haveIsoTrack) tree->Fill();
00959 }
00960
00961
00962 void IsolatedTracksNxN::beginJob() {
00963
00964 nEventProc=0;
00965
00966
00967 double tempgen_TH[16] = { 0.0, 1.0, 2.0, 3.0, 4.0,
00968 5.0, 6.0, 7.0, 9.0, 11.0,
00969 15.0, 20.0, 30.0, 50.0, 75.0, 100.0};
00970
00971 for(int i=0; i<16; i++) genPartPBins[i] = tempgen_TH[i];
00972
00973 double tempgen_Eta[4] = {0.0, 1.131, 1.653, 2.172};
00974
00975 for(int i=0; i<4; i++) genPartEtaBins[i] = tempgen_Eta[i];
00976
00977 BookHistograms();
00978 }
00979
00980
00981 void IsolatedTracksNxN::endJob() {
00982
00983 if(L1TriggerAlgoInfo_) {
00984 std::map< std::pair<unsigned int,std::string>, int>::iterator itr;
00985 for(itr=l1AlgoMap.begin(); itr!=l1AlgoMap.end(); itr++) {
00986 std::cout << " ****endjob**** " << (itr->first).first <<" "
00987 <<(itr->first).second <<" "<<itr->second
00988 << std::endl;
00989 int ibin = (itr->first).first;
00990 TString name( (itr->first).second );
00991 h_L1AlgoNames->GetXaxis()->SetBinLabel(ibin+1,name);
00992 }
00993 std::cout << "Number of Events Processed " << nEventProc << std::endl;
00994 }
00995
00996 }
00997
00998
00999
01000 void IsolatedTracksNxN::clearTreeVectors() {
01001
01002 t_PVx ->clear();
01003 t_PVy ->clear();
01004 t_PVz ->clear();
01005 t_PVisValid ->clear();
01006 t_PVndof ->clear();
01007 t_PVNTracks ->clear();
01008 t_PVNTracksWt ->clear();
01009 t_PVTracksSumPt ->clear();
01010 t_PVTracksSumPtWt ->clear();
01011 t_PVNTracksHP ->clear();
01012 t_PVNTracksHPWt ->clear();
01013 t_PVTracksSumPtHP ->clear();
01014 t_PVTracksSumPtHPWt ->clear();
01015
01016 for(int i=0; i<128; i++) t_L1Decision[i]=0;
01017 t_L1AlgoNames ->clear();
01018 t_L1PreScale ->clear();
01019
01020 t_L1CenJetPt ->clear();
01021 t_L1CenJetEta ->clear();
01022 t_L1CenJetPhi ->clear();
01023 t_L1FwdJetPt ->clear();
01024 t_L1FwdJetEta ->clear();
01025 t_L1FwdJetPhi ->clear();
01026 t_L1TauJetPt ->clear();
01027 t_L1TauJetEta ->clear();
01028 t_L1TauJetPhi ->clear();
01029 t_L1MuonPt ->clear();
01030 t_L1MuonEta ->clear();
01031 t_L1MuonPhi ->clear();
01032 t_L1IsoEMPt ->clear();
01033 t_L1IsoEMEta ->clear();
01034 t_L1IsoEMPhi ->clear();
01035 t_L1NonIsoEMPt ->clear();
01036 t_L1NonIsoEMEta ->clear();
01037 t_L1NonIsoEMPhi ->clear();
01038 t_L1METPt ->clear();
01039 t_L1METEta ->clear();
01040 t_L1METPhi ->clear();
01041
01042 t_jetPt ->clear();
01043 t_jetEta ->clear();
01044 t_jetPhi ->clear();
01045 t_nTrksJetCalo ->clear();
01046 t_nTrksJetVtx ->clear();
01047
01048 t_trackPAll ->clear();
01049 t_trackEtaAll ->clear();
01050 t_trackPhiAll ->clear();
01051 t_trackPdgIdAll ->clear();
01052 t_trackPtAll ->clear();
01053 t_trackDxyAll ->clear();
01054 t_trackDzAll ->clear();
01055 t_trackDxyPVAll ->clear();
01056 t_trackDzPVAll ->clear();
01057 t_trackChiSqAll ->clear();
01058
01059 t_trackP ->clear();
01060 t_trackPt ->clear();
01061 t_trackEta ->clear();
01062 t_trackPhi ->clear();
01063 t_trackEcalEta ->clear();
01064 t_trackEcalPhi ->clear();
01065 t_trackHcalEta ->clear();
01066 t_trackHcalPhi ->clear();
01067 t_NLayersCrossed ->clear();
01068 t_trackNOuterHits ->clear();
01069 t_trackDxy ->clear();
01070 t_trackDxyBS ->clear();
01071 t_trackDz ->clear();
01072 t_trackDzBS ->clear();
01073 t_trackDxyPV ->clear();
01074 t_trackDzPV ->clear();
01075 t_trackChiSq ->clear();
01076 t_trackPVIdx ->clear();
01077 t_trackHitsTOB ->clear();
01078 t_trackHitsTEC ->clear();
01079 t_trackHitInMissTOB ->clear();
01080 t_trackHitInMissTEC ->clear();
01081 t_trackHitInMissTIB ->clear();
01082 t_trackHitInMissTID ->clear();
01083 t_trackHitInMissTIBTID ->clear();
01084 t_trackHitOutMissTOB ->clear();
01085 t_trackHitOutMissTEC ->clear();
01086 t_trackHitOutMissTIB ->clear();
01087 t_trackHitOutMissTID ->clear();
01088 t_trackHitOutMissTOBTEC ->clear();
01089 t_trackHitInMeasTOB ->clear();
01090 t_trackHitInMeasTEC ->clear();
01091 t_trackHitInMeasTIB ->clear();
01092 t_trackHitInMeasTID ->clear();
01093 t_trackHitOutMeasTOB ->clear();
01094 t_trackHitOutMeasTEC ->clear();
01095 t_trackHitOutMeasTIB ->clear();
01096 t_trackHitOutMeasTID ->clear();
01097 t_trackOutPosOutHitDr ->clear();
01098 t_trackL ->clear();
01099
01100 t_maxNearP31x31 ->clear();
01101 t_maxNearP21x21 ->clear();
01102
01103 t_ecalSpike11x11 ->clear();
01104 t_e7x7 ->clear();
01105 t_e9x9 ->clear();
01106 t_e11x11 ->clear();
01107 t_e15x15 ->clear();
01108
01109 t_e7x7_10Sig ->clear();
01110 t_e9x9_10Sig ->clear();
01111 t_e11x11_10Sig ->clear();
01112 t_e15x15_10Sig ->clear();
01113 t_e7x7_15Sig ->clear();
01114 t_e9x9_15Sig ->clear();
01115 t_e11x11_15Sig ->clear();
01116 t_e15x15_15Sig ->clear();
01117 t_e7x7_20Sig ->clear();
01118 t_e9x9_20Sig ->clear();
01119 t_e11x11_20Sig ->clear();
01120 t_e15x15_20Sig ->clear();
01121 t_e7x7_25Sig ->clear();
01122 t_e9x9_25Sig ->clear();
01123 t_e11x11_25Sig ->clear();
01124 t_e15x15_25Sig ->clear();
01125 t_e7x7_30Sig ->clear();
01126 t_e9x9_30Sig ->clear();
01127 t_e11x11_30Sig ->clear();
01128 t_e15x15_30Sig ->clear();
01129
01130 if (doMC) {
01131 t_simTrackP ->clear();
01132 t_esimPdgId ->clear();
01133 t_trkEcalEne ->clear();
01134
01135 t_esim7x7 ->clear();
01136 t_esim9x9 ->clear();
01137 t_esim11x11 ->clear();
01138 t_esim15x15 ->clear();
01139
01140 t_esim7x7Matched ->clear();
01141 t_esim9x9Matched ->clear();
01142 t_esim11x11Matched ->clear();
01143 t_esim15x15Matched ->clear();
01144
01145 t_esim7x7Rest ->clear();
01146 t_esim9x9Rest ->clear();
01147 t_esim11x11Rest ->clear();
01148 t_esim15x15Rest ->clear();
01149
01150 t_esim7x7Photon ->clear();
01151 t_esim9x9Photon ->clear();
01152 t_esim11x11Photon ->clear();
01153 t_esim15x15Photon ->clear();
01154
01155 t_esim7x7NeutHad ->clear();
01156 t_esim9x9NeutHad ->clear();
01157 t_esim11x11NeutHad ->clear();
01158 t_esim15x15NeutHad ->clear();
01159
01160 t_esim7x7CharHad ->clear();
01161 t_esim9x9CharHad ->clear();
01162 t_esim11x11CharHad ->clear();
01163 t_esim15x15CharHad ->clear();
01164 }
01165
01166 t_maxNearHcalP3x3 ->clear();
01167 t_maxNearHcalP5x5 ->clear();
01168 t_maxNearHcalP7x7 ->clear();
01169
01170 t_h3x3 ->clear();
01171 t_h5x5 ->clear();
01172 t_h7x7 ->clear();
01173 t_h3x3Sig ->clear();
01174 t_h5x5Sig ->clear();
01175 t_h7x7Sig ->clear();
01176
01177 t_infoHcal ->clear();
01178
01179 if (doMC) {
01180 t_trkHcalEne ->clear();
01181
01182 t_hsim3x3 ->clear();
01183 t_hsim5x5 ->clear();
01184 t_hsim7x7 ->clear();
01185 t_hsim3x3Matched ->clear();
01186 t_hsim5x5Matched ->clear();
01187 t_hsim7x7Matched ->clear();
01188 t_hsim3x3Rest ->clear();
01189 t_hsim5x5Rest ->clear();
01190 t_hsim7x7Rest ->clear();
01191 t_hsim3x3Photon ->clear();
01192 t_hsim5x5Photon ->clear();
01193 t_hsim7x7Photon ->clear();
01194 t_hsim3x3NeutHad ->clear();
01195 t_hsim5x5NeutHad ->clear();
01196 t_hsim7x7NeutHad ->clear();
01197 t_hsim3x3CharHad ->clear();
01198 t_hsim5x5CharHad ->clear();
01199 t_hsim7x7CharHad ->clear();
01200 }
01201 }
01202
01203 void IsolatedTracksNxN::BookHistograms(){
01204
01205 char hname[100], htit[100];
01206
01207 TFileDirectory dir = fs->mkdir("nearMaxTrackP");
01208
01209 for(unsigned int ieta=0; ieta<NEtaBins; ieta++) {
01210 double lowEta=-5.0, highEta= 5.0;
01211 lowEta = genPartEtaBins[ieta];
01212 highEta = genPartEtaBins[ieta+1];
01213
01214 for(unsigned int ipt=0; ipt<NPBins; ipt++) {
01215 double lowP=0.0, highP=300.0;
01216 lowP = genPartPBins[ipt];
01217 highP = genPartPBins[ipt+1];
01218 sprintf(hname, "h_maxNearP31x31_ptBin%i_etaBin%i",ipt, ieta);
01219 sprintf(htit, "maxNearP in 31x31 (%3.2f<|#eta|<%3.2f), (%2.0f<trkP<%3.0f)", lowEta, highEta, lowP, highP );
01220 h_maxNearP31x31[ipt][ieta] = dir.make<TH1F>(hname, htit, 220, -2.0, 20.0);
01221 h_maxNearP31x31[ipt][ieta] ->Sumw2();
01222 sprintf(hname, "h_maxNearP25x25_ptBin%i_etaBin%i",ipt, ieta);
01223 sprintf(htit, "maxNearP in 25x25 (%3.2f<|#eta|<%3.2f), (%2.0f<trkP<%3.0f)", lowEta, highEta, lowP, highP );
01224 h_maxNearP25x25[ipt][ieta] = dir.make<TH1F>(hname, htit, 220, -2.0, 20.0);
01225 h_maxNearP25x25[ipt][ieta] ->Sumw2();
01226 sprintf(hname, "h_maxNearP21x21_ptBin%i_etaBin%i",ipt, ieta);
01227 sprintf(htit, "maxNearP in 21x21 (%3.2f<|#eta|<%3.2f), (%2.0f<trkP<%3.0f)", lowEta, highEta, lowP, highP );
01228 h_maxNearP21x21[ipt][ieta] = dir.make<TH1F>(hname, htit, 220, -2.0, 20.0);
01229 h_maxNearP21x21[ipt][ieta] ->Sumw2();
01230 sprintf(hname, "h_maxNearP15x15_ptBin%i_etaBin%i",ipt, ieta);
01231 sprintf(htit, "maxNearP in 15x15 (%3.2f<|#eta|<%3.2f), (%2.0f<trkP<%3.0f)", lowEta, highEta, lowP, highP );
01232 h_maxNearP15x15[ipt][ieta] = dir.make<TH1F>(hname, htit, 220, -2.0, 20.0);
01233 h_maxNearP15x15[ipt][ieta] ->Sumw2();
01234 }
01235 }
01236
01237 h_L1AlgoNames = fs->make<TH1I>("h_L1AlgoNames", "h_L1AlgoNames:Bin Labels", 128, -0.5, 127.5);
01238
01239
01240
01241 h_PVTracksWt = fs->make<TH1F>("h_PVTracksWt", "h_PVTracksWt", 600, -0.1, 1.1);
01242
01243 h_nTracks = fs->make<TH1F>("h_nTracks", "h_nTracks", 1000, -0.5, 999.5);
01244
01245 sprintf(hname, "h_recEtaPt_0");
01246 sprintf(htit, "h_recEtaPt (all tracks Eta vs pT)");
01247 h_recEtaPt_0 = fs->make<TH2F>(hname, htit, 30, -3.0,3.0, 15, genPartPBins);
01248
01249 sprintf(hname, "h_recEtaP_0");
01250 sprintf(htit, "h_recEtaP (all tracks Eta vs pT)");
01251 h_recEtaP_0 = fs->make<TH2F>(hname, htit, 30, -3.0,3.0, 15, genPartPBins);
01252
01253 h_recPt_0 = fs->make<TH1F>("h_recPt_0", "Pt (all tracks)", 15, genPartPBins);
01254 h_recP_0 = fs->make<TH1F>("h_recP_0", "P (all tracks)", 15, genPartPBins);
01255 h_recEta_0 = fs->make<TH1F>("h_recEta_0", "Eta (all tracks)", 60, -3.0, 3.0);
01256 h_recPhi_0 = fs->make<TH1F>("h_recPhi_0", "Phi (all tracks)", 100, -3.2, 3.2);
01257
01258 sprintf(hname, "h_recEtaPt_1");
01259 sprintf(htit, "h_recEtaPt (all good tracks Eta vs pT)");
01260 h_recEtaPt_1 = fs->make<TH2F>(hname, htit, 30, -3.0,3.0, 15, genPartPBins);
01261
01262 sprintf(hname, "h_recEtaP_1");
01263 sprintf(htit, "h_recEtaP (all good tracks Eta vs pT)");
01264 h_recEtaP_1 = fs->make<TH2F>(hname, htit, 30, -3.0, 3.0, 15, genPartPBins);
01265
01266 h_recPt_1 = fs->make<TH1F>("h_recPt_1", "Pt (all good tracks)", 15, genPartPBins);
01267 h_recP_1 = fs->make<TH1F>("h_recP_1", "P (all good tracks)", 15, genPartPBins);
01268 h_recEta_1 = fs->make<TH1F>("h_recEta_1", "Eta (all good tracks)", 60, -3.0, 3.0);
01269 h_recPhi_1 = fs->make<TH1F>("h_recPhi_1", "Phi (all good tracks)", 100, -3.2, 3.2);
01270
01271 sprintf(hname, "h_recEtaPt_2");
01272 sprintf(htit, "h_recEtaPt (charge isolation Eta vs pT)");
01273 h_recEtaPt_2 = fs->make<TH2F>(hname, htit, 30, -3.0, 3.0, 15, genPartPBins);
01274
01275 sprintf(hname, "h_recEtaP_2");
01276 sprintf(htit, "h_recEtaP (charge isolation Eta vs pT)");
01277 h_recEtaP_2 = fs->make<TH2F>(hname, htit, 30, -3.0, 3.0, 15, genPartPBins);
01278
01279 h_recPt_2 = fs->make<TH1F>("h_recPt_2", "Pt (charge isolation)", 15, genPartPBins);
01280 h_recP_2 = fs->make<TH1F>("h_recP_2", "P (charge isolation)", 15, genPartPBins);
01281 h_recEta_2 = fs->make<TH1F>("h_recEta_2", "Eta (charge isolation)", 60, -3.0, 3.0);
01282 h_recPhi_2 = fs->make<TH1F>("h_recPhi_2", "Phi (charge isolation)", 100, -3.2, 3.2);
01283
01284
01285 tree = fs->make<TTree>("tree", "tree");
01286 tree->SetAutoSave(10000);
01287
01288
01289 tree->Branch("t_EvtNo" ,&t_EvtNo ,"t_EvtNo/I");
01290 tree->Branch("t_RunNo" ,&t_RunNo ,"t_RunNo/I");
01291 tree->Branch("t_Lumi" ,&t_Lumi ,"t_Lumi/I");
01292 tree->Branch("t_Bunch" ,&t_Bunch ,"t_Bunch/I");
01293
01294
01295 t_PVx = new std::vector<double>();
01296 t_PVy = new std::vector<double>();
01297 t_PVz = new std::vector<double>();
01298 t_PVisValid = new std::vector<int>();
01299 t_PVndof = new std::vector<int>();
01300 t_PVNTracks = new std::vector<int>();
01301 t_PVNTracksWt = new std::vector<int>();
01302 t_PVTracksSumPt = new std::vector<double>();
01303 t_PVTracksSumPtWt = new std::vector<double>();
01304 t_PVNTracksHP = new std::vector<int>();
01305 t_PVNTracksHPWt = new std::vector<int>();
01306 t_PVTracksSumPtHP = new std::vector<double>();
01307 t_PVTracksSumPtHPWt = new std::vector<double>();
01308
01309 tree->Branch("PVx" ,"vector<double>" ,&t_PVx);
01310 tree->Branch("PVy" ,"vector<double>" ,&t_PVy);
01311 tree->Branch("PVz" ,"vector<double>" ,&t_PVz);
01312 tree->Branch("PVisValid" ,"vector<int>" ,&t_PVisValid);
01313 tree->Branch("PVndof" ,"vector<int>" ,&t_PVndof);
01314 tree->Branch("PVNTracks" ,"vector<int>" ,&t_PVNTracks);
01315 tree->Branch("PVNTracksWt" ,"vector<int>" ,&t_PVNTracksWt);
01316 tree->Branch("t_PVTracksSumPt" ,"vector<double>" ,&t_PVTracksSumPt);
01317 tree->Branch("t_PVTracksSumPtWt" ,"vector<double>" ,&t_PVTracksSumPtWt);
01318 tree->Branch("PVNTracksHP" ,"vector<int>" ,&t_PVNTracksHP);
01319 tree->Branch("PVNTracksHPWt" ,"vector<int>" ,&t_PVNTracksHPWt);
01320 tree->Branch("t_PVTracksSumPtHP" ,"vector<double>" ,&t_PVTracksSumPtHP);
01321 tree->Branch("t_PVTracksSumPtHPWt" ,"vector<double>" ,&t_PVTracksSumPtHPWt);
01322
01323
01324 for(int i=0; i<128; i++) t_L1Decision[i]=0;
01325 t_L1AlgoNames = new std::vector<std::string>();
01326 t_L1PreScale = new std::vector<int>();
01327 t_L1CenJetPt = new std::vector<double>();
01328 t_L1CenJetEta = new std::vector<double>();
01329 t_L1CenJetPhi = new std::vector<double>();
01330 t_L1FwdJetPt = new std::vector<double>();
01331 t_L1FwdJetEta = new std::vector<double>();
01332 t_L1FwdJetPhi = new std::vector<double>();
01333 t_L1TauJetPt = new std::vector<double>();
01334 t_L1TauJetEta = new std::vector<double>();
01335 t_L1TauJetPhi = new std::vector<double>();
01336 t_L1MuonPt = new std::vector<double>();
01337 t_L1MuonEta = new std::vector<double>();
01338 t_L1MuonPhi = new std::vector<double>();
01339 t_L1IsoEMPt = new std::vector<double>();
01340 t_L1IsoEMEta = new std::vector<double>();
01341 t_L1IsoEMPhi = new std::vector<double>();
01342 t_L1NonIsoEMPt = new std::vector<double>();
01343 t_L1NonIsoEMEta = new std::vector<double>();
01344 t_L1NonIsoEMPhi = new std::vector<double>();
01345 t_L1METPt = new std::vector<double>();
01346 t_L1METEta = new std::vector<double>();
01347 t_L1METPhi = new std::vector<double>();
01348
01349 tree->Branch("t_L1Decision", t_L1Decision, "t_L1Decision[128]/I");
01350 tree->Branch("t_L1AlgoNames", "vector<string>", &t_L1AlgoNames);
01351 tree->Branch("t_L1PreScale", "vector<int>", &t_L1PreScale);
01352 tree->Branch("t_L1CenJetPt", "vector<double>", &t_L1CenJetPt);
01353 tree->Branch("t_L1CenJetEta", "vector<double>", &t_L1CenJetEta);
01354 tree->Branch("t_L1CenJetPhi", "vector<double>", &t_L1CenJetPhi);
01355 tree->Branch("t_L1FwdJetPt", "vector<double>", &t_L1FwdJetPt);
01356 tree->Branch("t_L1FwdJetEta", "vector<double>", &t_L1FwdJetEta);
01357 tree->Branch("t_L1FwdJetPhi", "vector<double>", &t_L1FwdJetPhi);
01358 tree->Branch("t_L1TauJetPt", "vector<double>", &t_L1TauJetPt);
01359 tree->Branch("t_L1TauJetEta", "vector<double>", &t_L1TauJetEta);
01360 tree->Branch("t_L1TauJetPhi", "vector<double>", &t_L1TauJetPhi);
01361 tree->Branch("t_L1MuonPt", "vector<double>", &t_L1MuonPt);
01362 tree->Branch("t_L1MuonEta", "vector<double>", &t_L1MuonEta);
01363 tree->Branch("t_L1MuonPhi", "vector<double>", &t_L1MuonPhi);
01364 tree->Branch("t_L1IsoEMPt", "vector<double>", &t_L1IsoEMPt);
01365 tree->Branch("t_L1IsoEMEta", "vector<double>", &t_L1IsoEMEta);
01366 tree->Branch("t_L1IsoEMPhi", "vector<double>", &t_L1IsoEMPhi);
01367 tree->Branch("t_L1NonIsoEMPt", "vector<double>", &t_L1NonIsoEMPt);
01368 tree->Branch("t_L1NonIsoEMEta", "vector<double>", &t_L1NonIsoEMEta);
01369 tree->Branch("t_L1NonIsoEMPhi", "vector<double>", &t_L1NonIsoEMPhi);
01370 tree->Branch("t_L1METPt", "vector<double>", &t_L1METPt);
01371 tree->Branch("t_L1METEta", "vector<double>", &t_L1METEta);
01372 tree->Branch("t_L1METPhi", "vector<double>", &t_L1METPhi);
01373
01374 t_jetPt = new std::vector<double>();
01375 t_jetEta = new std::vector<double>();
01376 t_jetPhi = new std::vector<double>();
01377 t_nTrksJetCalo = new std::vector<double>();
01378 t_nTrksJetVtx = new std::vector<double>();
01379 tree->Branch("t_jetPt", "vector<double>",&t_jetPt);
01380 tree->Branch("t_jetEta", "vector<double>",&t_jetEta);
01381 tree->Branch("t_jetPhi", "vector<double>",&t_jetPhi);
01382 tree->Branch("t_nTrksJetCalo", "vector<double>",&t_nTrksJetCalo);
01383 tree->Branch("t_nTrksJetVtx", "vector<double>",&t_nTrksJetVtx);
01384
01385 t_trackPAll = new std::vector<double>();
01386 t_trackEtaAll = new std::vector<double>();
01387 t_trackPhiAll = new std::vector<double>();
01388 t_trackPdgIdAll = new std::vector<double>();
01389 t_trackPtAll = new std::vector<double>();
01390 t_trackDxyAll = new std::vector<double>();
01391 t_trackDzAll = new std::vector<double>();
01392 t_trackDxyPVAll = new std::vector<double>();
01393 t_trackDzPVAll = new std::vector<double>();
01394 t_trackChiSqAll = new std::vector<double>();
01395 tree->Branch("t_trackPAll", "vector<double>", &t_trackPAll );
01396 tree->Branch("t_trackPhiAll", "vector<double>", &t_trackPhiAll );
01397 tree->Branch("t_trackEtaAll", "vector<double>", &t_trackEtaAll );
01398 tree->Branch("t_trackPtAll", "vector<double>", &t_trackPtAll );
01399 tree->Branch("t_trackDxyAll", "vector<double>", &t_trackDxyAll );
01400 tree->Branch("t_trackDzAll", "vector<double>", &t_trackDzAll );
01401 tree->Branch("t_trackDxyPVAll", "vector<double>", &t_trackDxyPVAll );
01402 tree->Branch("t_trackDzPVAll", "vector<double>", &t_trackDzPVAll );
01403 tree->Branch("t_trackChiSqAll", "vector<double>", &t_trackChiSqAll );
01404
01405
01406 t_trackP = new std::vector<double>();
01407 t_trackPt = new std::vector<double>();
01408 t_trackEta = new std::vector<double>();
01409 t_trackPhi = new std::vector<double>();
01410 t_trackEcalEta = new std::vector<double>();
01411 t_trackEcalPhi = new std::vector<double>();
01412 t_trackHcalEta = new std::vector<double>();
01413 t_trackHcalPhi = new std::vector<double>();
01414 t_trackNOuterHits = new std::vector<int>();
01415 t_NLayersCrossed = new std::vector<int>();
01416 t_trackDxy = new std::vector<double>();
01417 t_trackDxyBS = new std::vector<double>();
01418 t_trackDz = new std::vector<double>();
01419 t_trackDzBS = new std::vector<double>();
01420 t_trackDxyPV = new std::vector<double>();
01421 t_trackDzPV = new std::vector<double>();
01422 t_trackPVIdx = new std::vector<int>();
01423 t_trackChiSq = new std::vector<double>();
01424 t_trackHitsTOB = new std::vector<int>();
01425 t_trackHitsTEC = new std::vector<int>();
01426 t_trackHitInMissTOB = new std::vector<int>();
01427 t_trackHitInMissTEC = new std::vector<int>();
01428 t_trackHitInMissTIB = new std::vector<int>();
01429 t_trackHitInMissTID = new std::vector<int>();
01430 t_trackHitOutMissTOB = new std::vector<int>();
01431 t_trackHitOutMissTEC = new std::vector<int>();
01432 t_trackHitOutMissTIB = new std::vector<int>();
01433 t_trackHitOutMissTID = new std::vector<int>();
01434 t_trackHitInMissTIBTID = new std::vector<int>();
01435 t_trackHitOutMissTOB = new std::vector<int>();
01436 t_trackHitOutMissTEC = new std::vector<int>();
01437 t_trackHitOutMissTIB = new std::vector<int>();
01438 t_trackHitOutMissTID = new std::vector<int>();
01439 t_trackHitOutMissTOBTEC= new std::vector<int>();
01440 t_trackHitInMeasTOB = new std::vector<int>();
01441 t_trackHitInMeasTEC = new std::vector<int>();
01442 t_trackHitInMeasTIB = new std::vector<int>();
01443 t_trackHitInMeasTID = new std::vector<int>();
01444 t_trackHitOutMeasTOB = new std::vector<int>();
01445 t_trackHitOutMeasTEC = new std::vector<int>();
01446 t_trackHitOutMeasTIB = new std::vector<int>();
01447 t_trackHitOutMeasTID = new std::vector<int>();
01448 t_trackOutPosOutHitDr = new std::vector<double>();
01449 t_trackL = new std::vector<double>();
01450
01451 tree->Branch("t_trackP", "vector<double>", &t_trackP );
01452 tree->Branch("t_trackPt", "vector<double>", &t_trackPt );
01453 tree->Branch("t_trackEta", "vector<double>", &t_trackEta );
01454 tree->Branch("t_trackPhi", "vector<double>", &t_trackPhi );
01455 tree->Branch("t_trackEcalEta", "vector<double>", &t_trackEcalEta );
01456 tree->Branch("t_trackEcalPhi", "vector<double>", &t_trackEcalPhi );
01457 tree->Branch("t_trackHcalEta", "vector<double>", &t_trackHcalEta );
01458 tree->Branch("t_trackHcalPhi", "vector<double>", &t_trackHcalPhi );
01459
01460 tree->Branch("t_trackNOuterHits", "vector<int>", &t_trackNOuterHits );
01461 tree->Branch("t_NLayersCrossed", "vector<int>", &t_NLayersCrossed );
01462 tree->Branch("t_trackHitsTOB", "vector<int>", &t_trackHitsTOB );
01463 tree->Branch("t_trackHitsTEC", "vector<int>", &t_trackHitsTEC );
01464 tree->Branch("t_trackHitInMissTOB", "vector<int>", &t_trackHitInMissTOB );
01465 tree->Branch("t_trackHitInMissTEC", "vector<int>", &t_trackHitInMissTEC );
01466 tree->Branch("t_trackHitInMissTIB", "vector<int>", &t_trackHitInMissTIB );
01467 tree->Branch("t_trackHitInMissTID", "vector<int>", &t_trackHitInMissTID );
01468 tree->Branch("t_trackHitInMissTIBTID", "vector<int>", &t_trackHitInMissTIBTID );
01469 tree->Branch("t_trackHitOutMissTOB", "vector<int>", &t_trackHitOutMissTOB);
01470 tree->Branch("t_trackHitOutMissTEC", "vector<int>", &t_trackHitOutMissTEC);
01471 tree->Branch("t_trackHitOutMissTIB", "vector<int>", &t_trackHitOutMissTIB);
01472 tree->Branch("t_trackHitOutMissTID", "vector<int>", &t_trackHitOutMissTID);
01473 tree->Branch("t_trackHitOutMissTOBTEC","vector<int>", &t_trackHitOutMissTOBTEC);
01474 tree->Branch("t_trackHitInMeasTOB", "vector<int>", &t_trackHitInMeasTOB );
01475 tree->Branch("t_trackHitInMeasTEC", "vector<int>", &t_trackHitInMeasTEC );
01476 tree->Branch("t_trackHitInMeasTIB", "vector<int>", &t_trackHitInMeasTIB );
01477 tree->Branch("t_trackHitInMeasTID", "vector<int>", &t_trackHitInMeasTID );
01478 tree->Branch("t_trackHitOutMeasTOB", "vector<int>", &t_trackHitOutMeasTOB);
01479 tree->Branch("t_trackHitOutMeasTEC", "vector<int>", &t_trackHitOutMeasTEC);
01480 tree->Branch("t_trackHitOutMeasTIB", "vector<int>", &t_trackHitOutMeasTIB);
01481 tree->Branch("t_trackHitOutMeasTID", "vector<int>", &t_trackHitOutMeasTID);
01482 tree->Branch("t_trackOutPosOutHitDr", "vector<double>", &t_trackOutPosOutHitDr);
01483 tree->Branch("t_trackL", "vector<double>", &t_trackL);
01484
01485 tree->Branch("t_trackDxy", "vector<double>", &t_trackDxy );
01486 tree->Branch("t_trackDxyBS", "vector<double>", &t_trackDxyBS );
01487 tree->Branch("t_trackDz", "vector<double>", &t_trackDz );
01488 tree->Branch("t_trackDzBS", "vector<double>", &t_trackDzBS );
01489 tree->Branch("t_trackDxyPV", "vector<double>", &t_trackDxyPV );
01490 tree->Branch("t_trackDzPV", "vector<double>", &t_trackDzPV );
01491 tree->Branch("t_trackChiSq", "vector<double>", &t_trackChiSq );
01492 tree->Branch("t_trackPVIdx", "vector<int>", &t_trackPVIdx );
01493
01494 t_maxNearP31x31 = new std::vector<double>();
01495 t_maxNearP21x21 = new std::vector<double>();
01496
01497 tree->Branch("t_maxNearP31x31", "vector<double>", &t_maxNearP31x31);
01498 tree->Branch("t_maxNearP21x21", "vector<double>", &t_maxNearP21x21);
01499
01500 t_ecalSpike11x11 = new std::vector<int>();
01501 t_e7x7 = new std::vector<double>();
01502 t_e9x9 = new std::vector<double>();
01503 t_e11x11 = new std::vector<double>();
01504 t_e15x15 = new std::vector<double>();
01505
01506 tree->Branch("t_ecalSpike11x11", "vector<int>", &t_ecalSpike11x11);
01507 tree->Branch("t_e7x7", "vector<double>", &t_e7x7);
01508 tree->Branch("t_e9x9", "vector<double>", &t_e9x9);
01509 tree->Branch("t_e11x11", "vector<double>", &t_e11x11);
01510 tree->Branch("t_e15x15", "vector<double>", &t_e15x15);
01511
01512 t_e7x7_10Sig = new std::vector<double>();
01513 t_e9x9_10Sig = new std::vector<double>();
01514 t_e11x11_10Sig = new std::vector<double>();
01515 t_e15x15_10Sig = new std::vector<double>();
01516 t_e7x7_15Sig = new std::vector<double>();
01517 t_e9x9_15Sig = new std::vector<double>();
01518 t_e11x11_15Sig = new std::vector<double>();
01519 t_e15x15_15Sig = new std::vector<double>();
01520 t_e7x7_20Sig = new std::vector<double>();
01521 t_e9x9_20Sig = new std::vector<double>();
01522 t_e11x11_20Sig = new std::vector<double>();
01523 t_e15x15_20Sig = new std::vector<double>();
01524 t_e7x7_25Sig = new std::vector<double>();
01525 t_e9x9_25Sig = new std::vector<double>();
01526 t_e11x11_25Sig = new std::vector<double>();
01527 t_e15x15_25Sig = new std::vector<double>();
01528 t_e7x7_30Sig = new std::vector<double>();
01529 t_e9x9_30Sig = new std::vector<double>();
01530 t_e11x11_30Sig = new std::vector<double>();
01531 t_e15x15_30Sig = new std::vector<double>();
01532
01533 tree->Branch("t_e7x7_10Sig" ,"vector<double>", &t_e7x7_10Sig);
01534 tree->Branch("t_e9x9_10Sig" ,"vector<double>", &t_e9x9_10Sig);
01535 tree->Branch("t_e11x11_10Sig" ,"vector<double>", &t_e11x11_10Sig);
01536 tree->Branch("t_e15x15_10Sig" ,"vector<double>", &t_e15x15_10Sig);
01537 tree->Branch("t_e7x7_15Sig" ,"vector<double>", &t_e7x7_15Sig);
01538 tree->Branch("t_e9x9_15Sig" ,"vector<double>", &t_e9x9_15Sig);
01539 tree->Branch("t_e11x11_15Sig" ,"vector<double>", &t_e11x11_15Sig);
01540 tree->Branch("t_e15x15_15Sig" ,"vector<double>", &t_e15x15_15Sig);
01541 tree->Branch("t_e7x7_20Sig" ,"vector<double>", &t_e7x7_20Sig);
01542 tree->Branch("t_e9x9_20Sig" ,"vector<double>", &t_e9x9_20Sig);
01543 tree->Branch("t_e11x11_20Sig" ,"vector<double>", &t_e11x11_20Sig);
01544 tree->Branch("t_e15x15_20Sig" ,"vector<double>", &t_e15x15_20Sig);
01545 tree->Branch("t_e7x7_25Sig" ,"vector<double>", &t_e7x7_25Sig);
01546 tree->Branch("t_e9x9_25Sig" ,"vector<double>", &t_e9x9_25Sig);
01547 tree->Branch("t_e11x11_25Sig" ,"vector<double>", &t_e11x11_25Sig);
01548 tree->Branch("t_e15x15_25Sig" ,"vector<double>", &t_e15x15_25Sig);
01549 tree->Branch("t_e7x7_30Sig" ,"vector<double>", &t_e7x7_30Sig);
01550 tree->Branch("t_e9x9_30Sig" ,"vector<double>", &t_e9x9_30Sig);
01551 tree->Branch("t_e11x11_30Sig" ,"vector<double>", &t_e11x11_30Sig);
01552 tree->Branch("t_e15x15_30Sig" ,"vector<double>", &t_e15x15_30Sig);
01553
01554 if (doMC) {
01555 t_esim7x7 = new std::vector<double>();
01556 t_esim9x9 = new std::vector<double>();
01557 t_esim11x11 = new std::vector<double>();
01558 t_esim15x15 = new std::vector<double>();
01559
01560 t_esim7x7Matched = new std::vector<double>();
01561 t_esim9x9Matched = new std::vector<double>();
01562 t_esim11x11Matched = new std::vector<double>();
01563 t_esim15x15Matched = new std::vector<double>();
01564
01565 t_esim7x7Rest = new std::vector<double>();
01566 t_esim9x9Rest = new std::vector<double>();
01567 t_esim11x11Rest = new std::vector<double>();
01568 t_esim15x15Rest = new std::vector<double>();
01569
01570 t_esim7x7Photon = new std::vector<double>();
01571 t_esim9x9Photon = new std::vector<double>();
01572 t_esim11x11Photon = new std::vector<double>();
01573 t_esim15x15Photon = new std::vector<double>();
01574
01575 t_esim7x7NeutHad = new std::vector<double>();
01576 t_esim9x9NeutHad = new std::vector<double>();
01577 t_esim11x11NeutHad = new std::vector<double>();
01578 t_esim15x15NeutHad = new std::vector<double>();
01579
01580 t_esim7x7CharHad = new std::vector<double>();
01581 t_esim9x9CharHad = new std::vector<double>();
01582 t_esim11x11CharHad = new std::vector<double>();
01583 t_esim15x15CharHad = new std::vector<double>();
01584
01585 t_trkEcalEne = new std::vector<double>();
01586 t_simTrackP = new std::vector<double>();
01587 t_esimPdgId = new std::vector<double>();
01588
01589 tree->Branch("t_esim7x7", "vector<double>", &t_esim7x7);
01590 tree->Branch("t_esim9x9", "vector<double>", &t_esim9x9);
01591 tree->Branch("t_esim11x11", "vector<double>", &t_esim11x11);
01592 tree->Branch("t_esim15x15", "vector<double>", &t_esim15x15);
01593
01594 tree->Branch("t_esim7x7Matched", "vector<double>", &t_esim7x7Matched);
01595 tree->Branch("t_esim9x9Matched", "vector<double>", &t_esim9x9Matched);
01596 tree->Branch("t_esim11x11Matched", "vector<double>", &t_esim11x11Matched);
01597 tree->Branch("t_esim15x15Matched", "vector<double>", &t_esim15x15Matched);
01598
01599 tree->Branch("t_esim7x7Rest", "vector<double>", &t_esim7x7Rest);
01600 tree->Branch("t_esim9x9Rest", "vector<double>", &t_esim9x9Rest);
01601 tree->Branch("t_esim11x11Rest", "vector<double>", &t_esim11x11Rest);
01602 tree->Branch("t_esim15x15Rest", "vector<double>", &t_esim15x15Rest);
01603
01604 tree->Branch("t_esim7x7Photon", "vector<double>", &t_esim7x7Photon);
01605 tree->Branch("t_esim9x9Photon", "vector<double>", &t_esim9x9Photon);
01606 tree->Branch("t_esim11x11Photon", "vector<double>", &t_esim11x11Photon);
01607 tree->Branch("t_esim15x15Photon", "vector<double>", &t_esim15x15Photon);
01608
01609 ;
01610 tree->Branch("t_esim7x7NeutHad", "vector<double>", &t_esim7x7NeutHad);
01611 tree->Branch("t_esim9x9NeutHad", "vector<double>", &t_esim9x9NeutHad);
01612 tree->Branch("t_esim11x11NeutHad", "vector<double>", &t_esim11x11NeutHad);
01613 tree->Branch("t_esim15x15NeutHad", "vector<double>", &t_esim15x15NeutHad);
01614
01615 tree->Branch("t_esim7x7CharHad", "vector<double>", &t_esim7x7CharHad);
01616 tree->Branch("t_esim9x9CharHad", "vector<double>", &t_esim9x9CharHad);
01617 tree->Branch("t_esim11x11CharHad", "vector<double>", &t_esim11x11CharHad);
01618 tree->Branch("t_esim15x15CharHad", "vector<double>", &t_esim15x15CharHad);
01619
01620 tree->Branch("t_trkEcalEne", "vector<double>", &t_trkEcalEne);
01621 tree->Branch("t_simTrackP", "vector<double>", &t_simTrackP);
01622 tree->Branch("t_esimPdgId", "vector<double>", &t_esimPdgId);
01623 }
01624
01625 t_maxNearHcalP3x3 = new std::vector<double>();
01626 t_maxNearHcalP5x5 = new std::vector<double>();
01627 t_maxNearHcalP7x7 = new std::vector<double>();
01628 t_h3x3 = new std::vector<double>();
01629 t_h5x5 = new std::vector<double>();
01630 t_h7x7 = new std::vector<double>();
01631 t_h3x3Sig = new std::vector<double>();
01632 t_h5x5Sig = new std::vector<double>();
01633 t_h7x7Sig = new std::vector<double>();
01634 t_infoHcal = new std::vector<int>();
01635
01636 if (doMC) {
01637 t_trkHcalEne = new std::vector<double>();
01638 t_hsim3x3 = new std::vector<double>();
01639 t_hsim5x5 = new std::vector<double>();
01640 t_hsim7x7 = new std::vector<double>();
01641 t_hsim3x3Matched = new std::vector<double>();
01642 t_hsim5x5Matched = new std::vector<double>();
01643 t_hsim7x7Matched = new std::vector<double>();
01644 t_hsim3x3Rest = new std::vector<double>();
01645 t_hsim5x5Rest = new std::vector<double>();
01646 t_hsim7x7Rest = new std::vector<double>();
01647 t_hsim3x3Photon = new std::vector<double>();
01648 t_hsim5x5Photon = new std::vector<double>();
01649 t_hsim7x7Photon = new std::vector<double>();
01650 t_hsim3x3NeutHad = new std::vector<double>();
01651 t_hsim5x5NeutHad = new std::vector<double>();
01652 t_hsim7x7NeutHad = new std::vector<double>();
01653 t_hsim3x3CharHad = new std::vector<double>();
01654 t_hsim5x5CharHad = new std::vector<double>();
01655 t_hsim7x7CharHad = new std::vector<double>();
01656 }
01657
01658 tree->Branch("t_maxNearHcalP3x3", "vector<double>", &t_maxNearHcalP3x3);
01659 tree->Branch("t_maxNearHcalP5x5", "vector<double>", &t_maxNearHcalP5x5);
01660 tree->Branch("t_maxNearHcalP7x7", "vector<double>", &t_maxNearHcalP7x7);
01661 tree->Branch("t_h3x3", "vector<double>", &t_h3x3);
01662 tree->Branch("t_h5x5", "vector<double>", &t_h5x5);
01663 tree->Branch("t_h7x7", "vector<double>", &t_h7x7);
01664 tree->Branch("t_h3x3Sig", "vector<double>", &t_h3x3Sig);
01665 tree->Branch("t_h5x5Sig", "vector<double>", &t_h5x5Sig);
01666 tree->Branch("t_h7x7Sig", "vector<double>", &t_h7x7Sig);
01667 tree->Branch("t_infoHcal", "vector<int>", &t_infoHcal);
01668
01669 if (doMC) {
01670 tree->Branch("t_trkHcalEne", "vector<double>", &t_trkHcalEne);
01671 tree->Branch("t_hsim3x3", "vector<double>", &t_hsim3x3);
01672 tree->Branch("t_hsim5x5", "vector<double>", &t_hsim5x5);
01673 tree->Branch("t_hsim7x7", "vector<double>", &t_hsim7x7);
01674 tree->Branch("t_hsim3x3Matched", "vector<double>", &t_hsim3x3Matched);
01675 tree->Branch("t_hsim5x5Matched", "vector<double>", &t_hsim5x5Matched);
01676 tree->Branch("t_hsim7x7Matched", "vector<double>", &t_hsim7x7Matched);
01677 tree->Branch("t_hsim3x3Rest", "vector<double>", &t_hsim3x3Rest);
01678 tree->Branch("t_hsim5x5Rest", "vector<double>", &t_hsim5x5Rest);
01679 tree->Branch("t_hsim7x7Rest", "vector<double>", &t_hsim7x7Rest);
01680 tree->Branch("t_hsim3x3Photon", "vector<double>", &t_hsim3x3Photon);
01681 tree->Branch("t_hsim5x5Photon", "vector<double>", &t_hsim5x5Photon);
01682 tree->Branch("t_hsim7x7Photon", "vector<double>", &t_hsim7x7Photon);
01683 tree->Branch("t_hsim3x3NeutHad", "vector<double>", &t_hsim3x3NeutHad);
01684 tree->Branch("t_hsim5x5NeutHad", "vector<double>", &t_hsim5x5NeutHad);
01685 tree->Branch("t_hsim7x7NeutHad", "vector<double>", &t_hsim7x7NeutHad);
01686 tree->Branch("t_hsim3x3CharHad", "vector<double>", &t_hsim3x3CharHad);
01687 tree->Branch("t_hsim5x5CharHad", "vector<double>", &t_hsim5x5CharHad);
01688 tree->Branch("t_hsim7x7CharHad", "vector<double>", &t_hsim7x7CharHad);
01689 }
01690 tree->Branch("t_nTracks", &t_nTracks, "t_nTracks/I");
01691
01692 }
01693
01694
01695 double IsolatedTracksNxN::DeltaPhi(double v1, double v2) {
01696
01697
01698
01699 double pi = 3.141592654;
01700 double twopi = 6.283185307;
01701
01702 double diff = std::abs(v2 - v1);
01703 double corr = twopi - diff;
01704 if (diff < pi){ return diff;} else { return corr;}
01705 }
01706
01707 double IsolatedTracksNxN::DeltaR(double eta1, double phi1, double eta2, double phi2) {
01708 double deta = eta1 - eta2;
01709 double dphi = DeltaPhi(phi1, phi2);
01710 return std::sqrt(deta*deta + dphi*dphi);
01711 }
01712
01713 void IsolatedTracksNxN::printTrack(const reco::Track* pTrack) {
01714
01715 std::string theTrackQuality = "highPurity";
01716 reco::TrackBase::TrackQuality trackQuality_ = reco::TrackBase::qualityByName(theTrackQuality);
01717
01718 std::cout << " Reference Point " << pTrack->referencePoint() <<"\n"
01719 << " TrackMmentum " << pTrack->momentum()
01720 << " (pt,eta,phi)(" << pTrack->pt()<<","<<pTrack->eta()<<","<<pTrack->phi()<<")"
01721 << " p " << pTrack->p() << "\n"
01722 << " Normalized chi2 " << pTrack->normalizedChi2() <<" charge " << pTrack->charge()
01723 << " qoverp() " << pTrack->qoverp() <<"+-" << pTrack->qoverpError()
01724 << " d0 " << pTrack->d0() << "\n"
01725 << " NValidHits " << pTrack->numberOfValidHits() << " NLostHits " << pTrack->numberOfLostHits()
01726 << " TrackQuality " << pTrack->qualityName(trackQuality_) << " " << pTrack->quality(trackQuality_)
01727 << std::endl;
01728
01729 if( printTrkHitPattern_ ) {
01730 const reco::HitPattern& p = pTrack->hitPattern();
01731 const reco::HitPattern& p1 = pTrack->trackerExpectedHitsInner();
01732 const reco::HitPattern& p2 = pTrack->trackerExpectedHitsOuter();
01733
01734 std::cout<<"default " << std::endl;
01735 for (int i=0; i<p.numberOfHits(); i++) {
01736 p.printHitPattern(i, std::cout);
01737 }
01738 std::cout<<"trackerExpectedHitsInner() " << std::endl;
01739 for (int i=0; i<p1.numberOfHits(); i++) {
01740 p1.printHitPattern(i, std::cout);
01741 }
01742 std::cout<<"trackerExpectedHitsOuter() " << std::endl;
01743 for (int i=0; i<p2.numberOfHits(); i++) {
01744 p2.printHitPattern(i, std::cout);
01745 }
01746
01747
01748 std::cout << "\n \t trackerLayersWithMeasurement() " << p.trackerLayersWithMeasurement()
01749 << "\n \t pixelLayersWithMeasurement() " << p.pixelLayersWithMeasurement()
01750 << "\n \t stripLayersWithMeasurement() " << p.stripLayersWithMeasurement()
01751 << "\n \t pixelBarrelLayersWithMeasurement() " << p.pixelBarrelLayersWithMeasurement()
01752 << "\n \t pixelEndcapLayersWithMeasurement() " << p.pixelEndcapLayersWithMeasurement()
01753 << "\n \t stripTIBLayersWithMeasurement() " << p.stripTIBLayersWithMeasurement()
01754 << "\n \t stripTIDLayersWithMeasurement() " << p.stripTIDLayersWithMeasurement()
01755 << "\n \t stripTOBLayersWithMeasurement() " << p.stripTOBLayersWithMeasurement()
01756 << "\n \t stripTECLayersWithMeasurement() " << p.stripTECLayersWithMeasurement()
01757 << std::endl;
01758
01759 }
01760 }
01761
01762
01763 DEFINE_FWK_MODULE(IsolatedTracksNxN);