CMS 3D CMS Logo

/data/git/CMSSW_5_3_11_patch5/src/Calibration/IsolatedParticles/plugins/IsolatedGenParticles.cc

Go to the documentation of this file.
00001 // -*- C++ -*-
00002 //
00003 // Package:    IsolatedGenParticles
00004 // Class:      IsolatedGenParticles
00005 // 
00013 //
00014 // Original Author:  Seema Sharma
00015 //         Created:  Tue Oct 27 09:46:41 CDT 2009
00016 //
00017 //
00018 
00019 #include "SimDataFormats/GeneratorProducts/interface/HepMCProduct.h"
00020 #include "SimGeneral/HepPDTRecord/interface/ParticleDataTable.h"
00021 
00022 #include "Geometry/CaloEventSetup/interface/CaloTopologyRecord.h"
00023 #include "Geometry/CaloTopology/interface/CaloSubdetectorTopology.h"
00024 #include "Geometry/CaloTopology/interface/HcalTopology.h"
00025 #include "Geometry/CaloTopology/interface/CaloTopology.h"
00026 #include "RecoCaloTools/Navigation/interface/CaloNavigator.h"
00027 
00028 #include "MagneticField/Engine/interface/MagneticField.h"
00029 #include "MagneticField/Records/interface/IdealMagneticFieldRecord.h"
00030 
00031 #include "FWCore/Framework/interface/EventSetup.h"
00032 #include "FWCore/Framework/interface/ESHandle.h"
00033 #include <iostream>
00034 #include <iomanip>
00035 #include<list>
00036 #include<vector>
00037 #include<cmath>
00038 
00039 #include "Calibration/IsolatedParticles/interface/CaloPropagateTrack.h"
00040 #include "Calibration/IsolatedParticles/interface/ChargeIsolation.h"
00041 
00042 #include "Calibration/IsolatedParticles/plugins/IsolatedGenParticles.h"
00043 
00044 IsolatedGenParticles::IsolatedGenParticles(const edm::ParameterSet& iConfig) {
00045 
00046   genSrc_    = iConfig.getUntrackedParameter("GenSrc",std::string("generator"));
00047   useHepMC   = iConfig.getUntrackedParameter<bool>("UseHepMC", false );
00048   pSeed      = iConfig.getUntrackedParameter<double>("ChargedHadronSeedP", 1.0);
00049   ptMin      = iConfig.getUntrackedParameter<double>("PTMin", 1.0);
00050   etaMax     = iConfig.getUntrackedParameter<double>("MaxChargedHadronEta", 2.5);
00051   a_coneR    = iConfig.getUntrackedParameter<double>("ConeRadius",34.98);
00052   a_charIsoR = a_coneR + 28.9;
00053   a_neutIsoR = a_charIsoR*0.726;
00054   a_mipR     = iConfig.getUntrackedParameter<double>("ConeRadiusMIP",14.0);
00055   a_Isolation= iConfig.getUntrackedParameter<bool>("UseConeIsolation",false);
00056   pCutIsolate= iConfig.getUntrackedParameter<double>("PMaxIsolation",20.0);
00057   verbosity  = iConfig.getUntrackedParameter<int>("Verbosity", 0);
00058 
00059   debugL1Info_           = iConfig.getUntrackedParameter<bool>( "DebugL1Info", false );
00060   L1extraTauJetSource_   = iConfig.getParameter<edm::InputTag>("L1extraTauJetSource");
00061   L1extraCenJetSource_   = iConfig.getParameter<edm::InputTag>("L1extraCenJetSource");
00062   L1extraFwdJetSource_   = iConfig.getParameter<edm::InputTag>("L1extraFwdJetSource");
00063   L1extraMuonSource_     = iConfig.getParameter<edm::InputTag>("L1extraMuonSource");
00064   L1extraIsoEmSource_    = iConfig.getParameter<edm::InputTag>("L1extraIsoEmSource");
00065   L1extraNonIsoEmSource_ = iConfig.getParameter<edm::InputTag>("L1extraNonIsoEmSource");
00066   L1GTReadoutRcdSource_  = iConfig.getParameter<edm::InputTag>("L1GTReadoutRcdSource");
00067   L1GTObjectMapRcdSource_= iConfig.getParameter<edm::InputTag>("L1GTObjectMapRcdSource");
00068 
00069   if (!strcmp("Dummy", genSrc_.c_str())) {
00070     if (useHepMC) genSrc_ = "generator";
00071     else          genSrc_ = "genParticles";
00072   }
00073   std::cout << "Generator Source " << genSrc_ << " Use HepMC " << useHepMC
00074             << " pSeed " << pSeed << " ptMin " << ptMin << " etaMax " << etaMax
00075             << "\n a_coneR " << a_coneR << " a_charIsoR " << a_charIsoR
00076             << " a_neutIsoR " << a_neutIsoR << " a_mipR " << a_mipR 
00077             << " debug " << verbosity << " debugL1Info " <<   debugL1Info_ << "\n"
00078             << " Isolation Flag " << a_Isolation << " with cut "
00079             << pCutIsolate << " GeV\n"
00080             << " L1extraTauJetSource_   " << L1extraTauJetSource_ 
00081             << " L1extraCenJetSource_   " << L1extraCenJetSource_ 
00082             << " L1extraFwdJetSource_   " << L1extraFwdJetSource_   
00083             << " L1extraMuonSource_     " << L1extraMuonSource_   
00084             << " L1extraIsoEmSource_    " << L1extraIsoEmSource_    
00085             << " L1extraNonIsoEmSource_ " << L1extraNonIsoEmSource_
00086             << " L1GTReadoutRcdSource_  " << L1GTReadoutRcdSource_  
00087             << " L1GTObjectMapRcdSource_" << L1GTObjectMapRcdSource_ 
00088             << std::endl;
00089 }
00090 
00091 IsolatedGenParticles::~IsolatedGenParticles() {
00092 
00093 }
00094 
00095 void IsolatedGenParticles::analyze(const edm::Event& iEvent, const edm::EventSetup& iSetup){
00096 
00097   clearTreeVectors();
00098 
00099   nEventProc++;
00100 
00101   edm::ESHandle<MagneticField> bFieldH;
00102   iSetup.get<IdealMagneticFieldRecord>().get(bFieldH);
00103   bField = bFieldH.product();
00104 
00105   // get particle data table
00106   edm::ESHandle<ParticleDataTable> pdt;
00107   iSetup.getData(pdt);
00108 
00109   // get handle to HEPMCProduct
00110   edm::Handle<edm::HepMCProduct> hepmc;
00111   edm::Handle<reco::GenParticleCollection> genParticles;
00112   if (useHepMC) iEvent.getByLabel(genSrc_, hepmc);
00113   else          iEvent.getByLabel(genSrc_, genParticles);
00114 
00115   edm::ESHandle<CaloGeometry> pG;
00116   iSetup.get<CaloGeometryRecord>().get(pG);
00117   const CaloGeometry* geo = pG.product();
00118 
00119   edm::ESHandle<CaloTopology> theCaloTopology;
00120   iSetup.get<CaloTopologyRecord>().get(theCaloTopology);
00121   const CaloTopology *caloTopology = theCaloTopology.product();
00122   
00123   edm::ESHandle<HcalTopology> htopo;
00124   iSetup.get<IdealGeometryRecord>().get(htopo);
00125   const HcalTopology* theHBHETopology = htopo.product();
00126 
00127   //===================== save L1 Trigger information =======================
00128   // get L1TriggerReadout records
00129   edm::Handle<L1GlobalTriggerReadoutRecord>   gtRecord;
00130   iEvent.getByLabel(L1GTReadoutRcdSource_,   gtRecord);
00131   
00132   edm::Handle<L1GlobalTriggerObjectMapRecord> gtOMRec;
00133   iEvent.getByLabel(L1GTObjectMapRcdSource_, gtOMRec);
00134   
00135   // sanity check on L1 Trigger Records
00136   if (!gtRecord.isValid()) {
00137     std::cout << "\nL1GlobalTriggerReadoutRecord with \n \nnot found"
00138       "\n  --> returning false by default!\n" << std::endl;
00139   }
00140   if (!gtOMRec.isValid()) {
00141     std::cout << "\nL1GlobalTriggerObjectMapRecord with \n \nnot found"
00142       "\n  --> returning false by default!\n" << std::endl;
00143   }
00144 
00145   // L1 decision word
00146   const DecisionWord dWord = gtRecord->decisionWord();  
00147   unsigned int numberTriggerBits= dWord.size();
00148 
00149   // just print the L1Bit number and AlgoName in first event
00150   if ( !initL1){
00151     initL1=true;
00152     std::cout << "\n  Number of Trigger bits " << numberTriggerBits << "\n\n";
00153     std::cout << "\tBit \t L1 Algorithm " << std::endl;
00154 
00155     // get ObjectMaps from ObjectMapRecord
00156     const std::vector<L1GlobalTriggerObjectMap>& objMapVec =  gtOMRec->gtObjectMap();
00157     for (std::vector<L1GlobalTriggerObjectMap>::const_iterator itMap = objMapVec.begin();
00158          itMap != objMapVec.end(); ++itMap) {
00159 
00160       // Get trigger bits
00161       int itrig = (*itMap).algoBitNumber();
00162 
00163       // Get trigger names
00164       algoBitToName[itrig] = (*itMap).algoName();
00165 
00166       std::cout  << "\t" << itrig << "\t" << algoBitToName[itrig] << std::endl;      
00167 
00168       // store the algoNames as bin labels of a histogram
00169       h_L1AlgoNames->GetXaxis()->SetBinLabel(itrig+1, algoBitToName[itrig].c_str());
00170 
00171     } // end of for loop    
00172   } // end of initL1
00173 
00174   // save L1 decision for each event 
00175   for (unsigned int iBit = 0; iBit < numberTriggerBits; ++iBit) {  
00176     bool accept = dWord[iBit];
00177     t_L1Decision->push_back(accept);
00178     // fill the trigger map
00179     if(debugL1Info_) std::cout << "Bit " << iBit << " " << algoBitToName[iBit] << " " << accept << std::endl;
00180 
00181     if(accept) h_L1AlgoNames->Fill(iBit);
00182   }
00183 
00184   //===================
00185   // L1Taus 
00186   edm::Handle<l1extra::L1JetParticleCollection> l1TauHandle;
00187   iEvent.getByLabel(L1extraTauJetSource_,l1TauHandle);
00188   l1extra::L1JetParticleCollection::const_iterator itr;
00189   for(itr = l1TauHandle->begin(); itr != l1TauHandle->end(); ++itr ) {
00190     t_L1TauJetPt      ->push_back( itr->pt() );
00191     t_L1TauJetEta     ->push_back( itr->eta() );
00192     t_L1TauJetPhi     ->push_back( itr->phi() );
00193     if(debugL1Info_) {
00194       std::cout << "tauJ p/pt  " << itr->momentum() << " " << itr->pt() 
00195                 << "  eta/phi " << itr->eta() << " " << itr->phi()
00196                 << std::endl;
00197     }
00198   }
00199 
00200   // L1 Central Jets
00201   edm::Handle<l1extra::L1JetParticleCollection> l1CenJetHandle;
00202   iEvent.getByLabel(L1extraCenJetSource_,l1CenJetHandle);
00203   for( itr = l1CenJetHandle->begin();  itr != l1CenJetHandle->end(); ++itr ) {
00204     t_L1CenJetPt    ->push_back( itr->pt() );
00205     t_L1CenJetEta   ->push_back( itr->eta() );
00206     t_L1CenJetPhi   ->push_back( itr->phi() );
00207     if(debugL1Info_) {
00208       std::cout << "cenJ p/pt     " << itr->momentum() << " " << itr->pt() 
00209                 << "  eta/phi " << itr->eta() << " " << itr->phi()
00210                 << std::endl;
00211     }
00212   }
00213   // L1 Forward Jets
00214   edm::Handle<l1extra::L1JetParticleCollection> l1FwdJetHandle;
00215   iEvent.getByLabel(L1extraFwdJetSource_,l1FwdJetHandle);
00216   for( itr = l1FwdJetHandle->begin();  itr != l1FwdJetHandle->end(); ++itr ) {
00217     t_L1FwdJetPt    ->push_back( itr->pt() );
00218     t_L1FwdJetEta   ->push_back( itr->eta() );
00219     t_L1FwdJetPhi   ->push_back( itr->phi() );
00220     if(debugL1Info_) {
00221       std::cout << "fwdJ p/pt     " << itr->momentum() << " " << itr->pt() 
00222                 << "  eta/phi " << itr->eta() << " " << itr->phi()
00223                 << std::endl;
00224     }
00225   }
00226   // L1 Isolated EM onjects
00227   l1extra::L1EmParticleCollection::const_iterator itrEm;
00228   edm::Handle<l1extra::L1EmParticleCollection> l1IsoEmHandle ;
00229   iEvent.getByLabel(L1extraIsoEmSource_, l1IsoEmHandle);
00230   for( itrEm = l1IsoEmHandle->begin();  itrEm != l1IsoEmHandle->end(); ++itrEm ) {
00231     t_L1IsoEMPt     ->push_back(  itrEm->pt() );
00232     t_L1IsoEMEta    ->push_back(  itrEm->eta() );
00233     t_L1IsoEMPhi    ->push_back(  itrEm->phi() );
00234     if(debugL1Info_) {
00235       std::cout << "isoEm p/pt    " << itrEm->momentum() << " " << itrEm->pt() 
00236                 << "  eta/phi " << itrEm->eta() << " " << itrEm->phi()
00237                 << std::endl;
00238     }
00239   }
00240   // L1 Non-Isolated EM onjects
00241   edm::Handle<l1extra::L1EmParticleCollection> l1NonIsoEmHandle ;
00242   iEvent.getByLabel(L1extraNonIsoEmSource_, l1NonIsoEmHandle);
00243   for( itrEm = l1NonIsoEmHandle->begin();  itrEm != l1NonIsoEmHandle->end(); ++itrEm ) {
00244     t_L1NonIsoEMPt  ->push_back( itrEm->pt() );
00245     t_L1NonIsoEMEta ->push_back( itrEm->eta() );
00246     t_L1NonIsoEMPhi ->push_back( itrEm->phi() );
00247     if(debugL1Info_) {
00248       std::cout << "nonIsoEm p/pt " << itrEm->momentum() << " " << itrEm->pt() 
00249                 << "  eta/phi " << itrEm->eta() << " " << itrEm->phi()
00250                 << std::endl;
00251     }
00252   }
00253   
00254   // L1 Muons
00255   l1extra::L1MuonParticleCollection::const_iterator itrMu;
00256   edm::Handle<l1extra::L1MuonParticleCollection> l1MuHandle ;
00257   iEvent.getByLabel(L1extraMuonSource_, l1MuHandle);
00258   for( itrMu = l1MuHandle->begin();  itrMu != l1MuHandle->end(); ++itrMu ) {
00259     t_L1MuonPt      ->push_back( itrMu->pt() );
00260     t_L1MuonEta     ->push_back( itrMu->eta() );
00261     t_L1MuonPhi     ->push_back( itrMu->phi() );
00262     if(debugL1Info_) {
00263       std::cout << "l1muon p/pt   " << itrMu->momentum() << " " << itrMu->pt() 
00264                 << "  eta/phi " << itrMu->eta() << " " << itrMu->phi()
00265                 << std::endl;
00266     }
00267   }
00268   //=====================================================================
00269   
00270   GlobalPoint  posVec, posECAL;
00271   math::XYZTLorentzVector momVec;
00272   if (verbosity>0) std::cout << "event number " << iEvent.id().event() <<std::endl;
00273 
00274   if (useHepMC) {
00275     const HepMC::GenEvent *myGenEvent = hepmc->GetEvent();
00276     std::vector<spr::propagatedGenTrackID> trackIDs = spr::propagateCALO(myGenEvent, pdt, geo, bField, etaMax, false);
00277     
00278     for (unsigned int indx=0; indx<trackIDs.size(); ++indx) {
00279       int charge = trackIDs[indx].charge;
00280       HepMC::GenEvent::particle_const_iterator p = trackIDs[indx].trkItr;
00281       momVec = math::XYZTLorentzVector((*p)->momentum().px(), (*p)->momentum().py(), (*p)->momentum().pz(), (*p)->momentum().e());
00282       if (verbosity>1) std::cout << "trkIndx " << indx << " pdgid " << trackIDs[indx].pdgId << " charge " << charge <<  " momVec " << momVec << std::endl; 
00283       // only stable particles avoiding electrons and muons
00284       if (trackIDs[indx].ok && (std::abs(trackIDs[indx].pdgId)<11 ||
00285                                 std::abs(trackIDs[indx].pdgId)>=21)) {
00286         // consider particles within a phased space       
00287         if (momVec.Pt() > ptMin && std::abs(momVec.eta()) < etaMax) { 
00288           posVec  = GlobalPoint(0.1*(*p)->production_vertex()->position().x(), 
00289                                 0.1*(*p)->production_vertex()->position().y(), 
00290                                 0.1*(*p)->production_vertex()->position().z());
00291           posECAL = trackIDs[indx].pointECAL;
00292           fillTrack (posVec, momVec, posECAL, trackIDs[indx].pdgId, trackIDs[indx].okECAL, true);
00293           if (verbosity>1) std::cout << "posECAL " << posECAL << " okECAL " << trackIDs[indx].okECAL << "okHCAL " << trackIDs[indx].okHCAL << std::endl;
00294           if (trackIDs[indx].okECAL) {
00295             if ( std::abs(charge)>0 ) {
00296               spr::eGenSimInfo(trackIDs[indx].detIdECAL, p, trackIDs, geo, caloTopology, 0, 0, isoinfo1x1,   false);
00297               spr::eGenSimInfo(trackIDs[indx].detIdECAL, p, trackIDs, geo, caloTopology, 1, 1, isoinfo3x3,   false);
00298               spr::eGenSimInfo(trackIDs[indx].detIdECAL, p, trackIDs, geo, caloTopology, 3, 3, isoinfo7x7,   false);
00299               spr::eGenSimInfo(trackIDs[indx].detIdECAL, p, trackIDs, geo, caloTopology, 4, 4, isoinfo9x9,   false);
00300               spr::eGenSimInfo(trackIDs[indx].detIdECAL, p, trackIDs, geo, caloTopology, 5, 5, isoinfo11x11, false);
00301               spr::eGenSimInfo(trackIDs[indx].detIdECAL, p, trackIDs, geo, caloTopology, 7, 7, isoinfo15x15, false);
00302               spr::eGenSimInfo(trackIDs[indx].detIdECAL, p, trackIDs, geo, caloTopology,10,10, isoinfo21x21, false);
00303               spr::eGenSimInfo(trackIDs[indx].detIdECAL, p, trackIDs, geo, caloTopology,12,12, isoinfo25x25, false);
00304               spr::eGenSimInfo(trackIDs[indx].detIdECAL, p, trackIDs, geo, caloTopology,15,15, isoinfo31x31, false);
00305               spr::eGenSimInfo(trackIDs[indx].detIdECAL, p, trackIDs, geo, caloTopology, a_mipR, trackIDs[indx].directionECAL, isoinfoR, false);
00306               spr::eGenSimInfo(trackIDs[indx].detIdECAL, p, trackIDs, geo, caloTopology, a_neutIsoR, trackIDs[indx].directionECAL, isoinfoIsoR, false);
00307               if (trackIDs[indx].okHCAL) {
00308                 spr::hGenSimInfo(trackIDs[indx].detIdHCAL, p, trackIDs, theHBHETopology, 0, 0, isoinfoHC1x1, false);
00309                 spr::hGenSimInfo(trackIDs[indx].detIdHCAL, p, trackIDs, theHBHETopology, 1, 1, isoinfoHC3x3, false);
00310                 spr::hGenSimInfo(trackIDs[indx].detIdHCAL, p, trackIDs, theHBHETopology, 2, 2, isoinfoHC5x5, false);
00311                 spr::hGenSimInfo(trackIDs[indx].detIdHCAL, p, trackIDs, theHBHETopology, 3, 3, isoinfoHC7x7, false);
00312                 spr::hGenSimInfo(trackIDs[indx].detIdHCAL, p, trackIDs, geo, theHBHETopology, a_coneR, trackIDs[indx].directionHCAL, isoinfoHCR, false);
00313                 spr::hGenSimInfo(trackIDs[indx].detIdHCAL, p, trackIDs, geo, theHBHETopology, a_charIsoR, trackIDs[indx].directionHCAL, isoinfoIsoHCR, false);
00314               }
00315 
00316               bool saveTrack = true;
00317               if (a_Isolation) saveTrack = (isoinfoR.maxNearP < pCutIsolate);
00318               else             saveTrack = (isoinfo7x7.maxNearP < pCutIsolate);
00319               if (saveTrack) fillIsolatedTrack(momVec, posECAL, trackIDs[indx].pdgId);
00320             }
00321           }
00322         } else { // stabale particles within |eta|=2.5
00323           fillTrack (posVec, momVec, posECAL, 0, false, false);
00324         } 
00325       }
00326     } // loop over gen particles
00327   } else { 
00328     std::vector<spr::propagatedGenParticleID> trackIDs = spr::propagateCALO(genParticles, pdt, geo, bField, etaMax, (verbosity>0));
00329 
00330     for (unsigned int indx=0; indx<trackIDs.size(); ++indx) {
00331       int charge = trackIDs[indx].charge;
00332       reco::GenParticleCollection::const_iterator p = trackIDs[indx].trkItr;
00333       
00334       momVec = math::XYZTLorentzVector(p->momentum().x(), p->momentum().y(), p->momentum().z(), p->energy());
00335       if (verbosity>1) std::cout << "trkIndx " << indx << " pdgid " << trackIDs[indx].pdgId << " charge " << charge <<  " momVec " << momVec << std::endl; 
00336       // only stable particles avoiding electrons and muons
00337       if (trackIDs[indx].ok && std::abs(trackIDs[indx].pdgId)>21) {     
00338         // consider particles within a phased space
00339         if (verbosity>1) std::cout << " pt " << momVec.Pt() << " eta " << momVec.eta() << std::endl;
00340         if (momVec.Pt() > ptMin && std::abs(momVec.eta()) < etaMax) { 
00341           posVec  = GlobalPoint(p->vertex().x(), p->vertex().y(), p->vertex().z());
00342           posECAL = trackIDs[indx].pointECAL;
00343           if (verbosity>0) std::cout << "posECAL " << posECAL << " okECAL " << trackIDs[indx].okECAL << "okHCAL " << trackIDs[indx].okHCAL << std::endl;
00344           fillTrack (posVec, momVec, posECAL, trackIDs[indx].pdgId, trackIDs[indx].okECAL, true);
00345           if (trackIDs[indx].okECAL) {
00346             if ( std::abs(charge)>0 ) {
00347               spr::eGenSimInfo(trackIDs[indx].detIdECAL, p, trackIDs, geo, caloTopology, 0, 0, isoinfo1x1,   verbosity>1);
00348               spr::eGenSimInfo(trackIDs[indx].detIdECAL, p, trackIDs, geo, caloTopology, 1, 1, isoinfo3x3,   verbosity>0);
00349               spr::eGenSimInfo(trackIDs[indx].detIdECAL, p, trackIDs, geo, caloTopology, 3, 3, isoinfo7x7,   verbosity>1);
00350               spr::eGenSimInfo(trackIDs[indx].detIdECAL, p, trackIDs, geo, caloTopology, 4, 4, isoinfo9x9,   verbosity>1);
00351               spr::eGenSimInfo(trackIDs[indx].detIdECAL, p, trackIDs, geo, caloTopology, 5, 5, isoinfo11x11, verbosity>1);
00352               spr::eGenSimInfo(trackIDs[indx].detIdECAL, p, trackIDs, geo, caloTopology, 7, 7, isoinfo15x15, verbosity>1);
00353               spr::eGenSimInfo(trackIDs[indx].detIdECAL, p, trackIDs, geo, caloTopology,10,10, isoinfo21x21, verbosity>1);
00354               spr::eGenSimInfo(trackIDs[indx].detIdECAL, p, trackIDs, geo, caloTopology,12,12, isoinfo25x25, verbosity>1);
00355               spr::eGenSimInfo(trackIDs[indx].detIdECAL, p, trackIDs, geo, caloTopology,15,15, isoinfo31x31, verbosity>1);
00356               spr::eGenSimInfo(trackIDs[indx].detIdECAL, p, trackIDs, geo, caloTopology, a_mipR, trackIDs[indx].directionECAL, isoinfoR, verbosity>1);
00357               spr::eGenSimInfo(trackIDs[indx].detIdECAL, p, trackIDs, geo, caloTopology, a_neutIsoR, trackIDs[indx].directionECAL, isoinfoIsoR, verbosity>1);
00358               if (trackIDs[indx].okHCAL) {
00359                 spr::hGenSimInfo(trackIDs[indx].detIdHCAL, p, trackIDs, theHBHETopology, 0, 0, isoinfoHC1x1, verbosity>1);
00360                 spr::hGenSimInfo(trackIDs[indx].detIdHCAL, p, trackIDs, theHBHETopology, 1, 1, isoinfoHC3x3, verbosity>1);
00361                 spr::hGenSimInfo(trackIDs[indx].detIdHCAL, p, trackIDs, theHBHETopology, 2, 2, isoinfoHC5x5, verbosity>1);
00362                 spr::hGenSimInfo(trackIDs[indx].detIdHCAL, p, trackIDs, theHBHETopology, 3, 3, isoinfoHC7x7, verbosity>1);
00363                 spr::hGenSimInfo(trackIDs[indx].detIdHCAL, p, trackIDs, geo, theHBHETopology, a_coneR, trackIDs[indx].directionHCAL, isoinfoHCR, verbosity>1);
00364                 spr::hGenSimInfo(trackIDs[indx].detIdHCAL, p, trackIDs, geo, theHBHETopology, a_charIsoR, trackIDs[indx].directionHCAL, isoinfoIsoHCR, verbosity>1);
00365               }
00366 
00367               bool saveTrack = true;
00368               if (a_Isolation) saveTrack = (isoinfoIsoR.maxNearP < pCutIsolate);
00369               else             saveTrack = (isoinfo7x7.maxNearP < pCutIsolate);
00370               if (saveTrack) fillIsolatedTrack(momVec, posECAL, trackIDs[indx].pdgId);
00371             }
00372           }
00373         } else { // stabale particles within |eta|=2.5
00374           fillTrack (posVec, momVec, posECAL, 0, false, false);
00375         } 
00376       }
00377     } // loop over gen particles
00378   } 
00379 
00380   //t_nEvtProc->push_back(nEventProc);
00381   h_NEventProc->SetBinContent(1,nEventProc);
00382   tree->Fill();
00383   
00384 } 
00385 
00386 void IsolatedGenParticles::beginJob() {
00387   
00388   nEventProc=0;
00389   
00390   initL1 = false;
00391 
00392   double tempgen_TH[NPBins+1] = { 0.0,  5.0,  12.0, 300.0}; 
00393   for(int i=0; i<=NPBins; i++)  genPartPBins[i]  = tempgen_TH[i];
00394   
00395   double tempgen_Eta[NEtaBins+1] = {0.0, 0.5, 1.1, 1.7, 2.3};
00396   for(int i=0; i<=NEtaBins; i++) genPartEtaBins[i] = tempgen_Eta[i];
00397   
00398   BookHistograms();
00399 
00400 }
00401 
00402 void IsolatedGenParticles::endJob() {
00403 }
00404 
00405 double IsolatedGenParticles::DeltaPhi(double v1, double v2) {
00406   // Computes the correctly normalized phi difference
00407   // v1, v2 = phi of object 1 and 2
00408   
00409   double pi    = 3.141592654;
00410   double twopi = 6.283185307;
00411   
00412   double diff = std::abs(v2 - v1);
00413   double corr = twopi - diff;
00414   if (diff < pi){ return diff;} else { return corr;} 
00415 }
00416 
00417 double IsolatedGenParticles::DeltaR(double eta1, double phi1, double eta2, double phi2) {
00418   double deta = eta1 - eta2;
00419   double dphi = DeltaPhi(phi1, phi2);
00420   return std::sqrt(deta*deta + dphi*dphi);
00421 }
00422 
00423 double IsolatedGenParticles::DeltaR2(double eta1, double phi1, double eta2, double phi2) {
00424   double deta = eta1 - eta2;
00425   double dphi = DeltaPhi(phi1, phi2);
00426   return deta*deta + dphi*dphi;
00427 }
00428 
00429 void IsolatedGenParticles::fillTrack (GlobalPoint & posVec, math::XYZTLorentzVector & momVec, GlobalPoint & posECAL, int pdgId, bool okECAL, bool accept) {
00430 
00431   if (accept) {
00432     t_isoTrkPAll        ->push_back( momVec.P() );
00433     t_isoTrkPtAll       ->push_back( momVec.Pt() );
00434     t_isoTrkPhiAll      ->push_back( momVec.phi() );
00435     t_isoTrkEtaAll      ->push_back( momVec.eta() );
00436     t_isoTrkPdgIdAll    ->push_back( pdgId ) ;
00437     if (okECAL) {
00438       double phi1 = momVec.phi();
00439       double phi2 = (posECAL - posVec).phi();
00440       double dphi = DeltaPhi( phi1, phi2 );
00441       double deta = momVec.eta() - (posECAL - posVec).eta();
00442       t_isoTrkDPhiAll ->push_back( dphi );
00443       t_isoTrkDEtaAll ->push_back( deta );      
00444     } else {
00445       t_isoTrkDPhiAll ->push_back( 999.0 );
00446       t_isoTrkDEtaAll ->push_back( 999.0 );     
00447     }
00448   } else {
00449     t_isoTrkDPhiAll ->push_back( -999.0 );
00450     t_isoTrkDEtaAll ->push_back( -999.0 );      
00451   }
00452 }
00453 
00454 void IsolatedGenParticles::fillIsolatedTrack(math::XYZTLorentzVector & momVec, GlobalPoint & posECAL, int pdgId) {
00455 
00456   t_isoTrkP           ->push_back(momVec.P());
00457   t_isoTrkPt          ->push_back(momVec.Pt());
00458   t_isoTrkEne         ->push_back(momVec.E());
00459   t_isoTrkEta         ->push_back(momVec.eta());
00460   t_isoTrkPhi         ->push_back(momVec.phi());
00461   t_isoTrkEtaEC       ->push_back(posECAL.eta());
00462   t_isoTrkPhiEC       ->push_back(posECAL.phi());
00463   t_isoTrkPdgId       ->push_back(pdgId);
00464   
00465   t_maxNearP31x31     ->push_back(isoinfo31x31.maxNearP);
00466   t_cHadronEne31x31   ->push_back(isoinfo31x31.cHadronEne);
00467   t_cHadronEne31x31_1 ->push_back(isoinfo31x31.cHadronEne_[0]);
00468   t_cHadronEne31x31_2 ->push_back(isoinfo31x31.cHadronEne_[1]);
00469   t_cHadronEne31x31_3 ->push_back(isoinfo31x31.cHadronEne_[2]);
00470   t_nHadronEne31x31   ->push_back(isoinfo31x31.nHadronEne);
00471   t_photonEne31x31    ->push_back(isoinfo31x31.photonEne);
00472   t_eleEne31x31       ->push_back(isoinfo31x31.eleEne);
00473   t_muEne31x31        ->push_back(isoinfo31x31.muEne);
00474           
00475   t_maxNearP25x25     ->push_back(isoinfo25x25.maxNearP);
00476   t_cHadronEne25x25   ->push_back(isoinfo25x25.cHadronEne);
00477   t_cHadronEne25x25_1 ->push_back(isoinfo25x25.cHadronEne_[0]);
00478   t_cHadronEne25x25_2 ->push_back(isoinfo25x25.cHadronEne_[1]);
00479   t_cHadronEne25x25_3 ->push_back(isoinfo25x25.cHadronEne_[2]);
00480   t_nHadronEne25x25   ->push_back(isoinfo25x25.nHadronEne);
00481   t_photonEne25x25    ->push_back(isoinfo25x25.photonEne);
00482   t_eleEne25x25       ->push_back(isoinfo25x25.eleEne);
00483   t_muEne25x25        ->push_back(isoinfo25x25.muEne);
00484           
00485   t_maxNearP21x21     ->push_back(isoinfo21x21.maxNearP);
00486   t_cHadronEne21x21   ->push_back(isoinfo21x21.cHadronEne);
00487   t_cHadronEne21x21_1 ->push_back(isoinfo21x21.cHadronEne_[0]);
00488   t_cHadronEne21x21_2 ->push_back(isoinfo21x21.cHadronEne_[1]);
00489   t_cHadronEne21x21_3 ->push_back(isoinfo21x21.cHadronEne_[2]);
00490   t_nHadronEne21x21   ->push_back(isoinfo21x21.nHadronEne);
00491   t_photonEne21x21    ->push_back(isoinfo21x21.photonEne);
00492   t_eleEne21x21       ->push_back(isoinfo21x21.eleEne);
00493   t_muEne21x21        ->push_back(isoinfo21x21.muEne);
00494           
00495   t_maxNearP15x15     ->push_back(isoinfo15x15.maxNearP);
00496   t_cHadronEne15x15   ->push_back(isoinfo15x15.cHadronEne);
00497   t_cHadronEne15x15_1 ->push_back(isoinfo15x15.cHadronEne_[0]);
00498   t_cHadronEne15x15_2 ->push_back(isoinfo15x15.cHadronEne_[1]);
00499   t_cHadronEne15x15_3 ->push_back(isoinfo15x15.cHadronEne_[2]);
00500   t_nHadronEne15x15   ->push_back(isoinfo15x15.nHadronEne);
00501   t_photonEne15x15    ->push_back(isoinfo15x15.photonEne);
00502   t_eleEne15x15       ->push_back(isoinfo15x15.eleEne);
00503   t_muEne15x15        ->push_back(isoinfo15x15.muEne);
00504           
00505   t_maxNearP11x11     ->push_back(isoinfo11x11.maxNearP);
00506   t_cHadronEne11x11   ->push_back(isoinfo11x11.cHadronEne);
00507   t_cHadronEne11x11_1 ->push_back(isoinfo11x11.cHadronEne_[0]);
00508   t_cHadronEne11x11_2 ->push_back(isoinfo11x11.cHadronEne_[1]);
00509   t_cHadronEne11x11_3 ->push_back(isoinfo11x11.cHadronEne_[2]);
00510   t_nHadronEne11x11   ->push_back(isoinfo11x11.nHadronEne);
00511   t_photonEne11x11    ->push_back(isoinfo11x11.photonEne);
00512   t_eleEne11x11       ->push_back(isoinfo11x11.eleEne);
00513   t_muEne11x11        ->push_back(isoinfo11x11.muEne);
00514           
00515   t_maxNearP9x9       ->push_back(isoinfo9x9.maxNearP);
00516   t_cHadronEne9x9     ->push_back(isoinfo9x9.cHadronEne);
00517   t_cHadronEne9x9_1   ->push_back(isoinfo9x9.cHadronEne_[0]);
00518   t_cHadronEne9x9_2   ->push_back(isoinfo9x9.cHadronEne_[1]);
00519   t_cHadronEne9x9_3   ->push_back(isoinfo9x9.cHadronEne_[2]);
00520   t_nHadronEne9x9     ->push_back(isoinfo9x9.nHadronEne);
00521   t_photonEne9x9      ->push_back(isoinfo9x9.photonEne);
00522   t_eleEne9x9         ->push_back(isoinfo9x9.eleEne);
00523   t_muEne9x9          ->push_back(isoinfo9x9.muEne);
00524             
00525   t_maxNearP7x7       ->push_back(isoinfo7x7.maxNearP);
00526   t_cHadronEne7x7     ->push_back(isoinfo7x7.cHadronEne);
00527   t_cHadronEne7x7_1   ->push_back(isoinfo7x7.cHadronEne_[0]);
00528   t_cHadronEne7x7_2   ->push_back(isoinfo7x7.cHadronEne_[1]);
00529   t_cHadronEne7x7_3   ->push_back(isoinfo7x7.cHadronEne_[2]);
00530   t_nHadronEne7x7     ->push_back(isoinfo7x7.nHadronEne);
00531   t_photonEne7x7      ->push_back(isoinfo7x7.photonEne);
00532   t_eleEne7x7         ->push_back(isoinfo7x7.eleEne);
00533   t_muEne7x7          ->push_back(isoinfo7x7.muEne);
00534   
00535   t_maxNearP3x3       ->push_back(isoinfo3x3.maxNearP);
00536   t_cHadronEne3x3     ->push_back(isoinfo3x3.cHadronEne);
00537   t_cHadronEne3x3_1   ->push_back(isoinfo3x3.cHadronEne_[0]);
00538   t_cHadronEne3x3_2   ->push_back(isoinfo3x3.cHadronEne_[1]);
00539   t_cHadronEne3x3_3   ->push_back(isoinfo3x3.cHadronEne_[2]);
00540   t_nHadronEne3x3     ->push_back(isoinfo3x3.nHadronEne);
00541   t_photonEne3x3      ->push_back(isoinfo3x3.photonEne);
00542   t_eleEne3x3         ->push_back(isoinfo3x3.eleEne);
00543   t_muEne3x3          ->push_back(isoinfo3x3.muEne);
00544 
00545   t_maxNearP1x1       ->push_back(isoinfo1x1.maxNearP);
00546   t_cHadronEne1x1     ->push_back(isoinfo1x1.cHadronEne);
00547   t_cHadronEne1x1_1   ->push_back(isoinfo1x1.cHadronEne_[0]);
00548   t_cHadronEne1x1_2   ->push_back(isoinfo1x1.cHadronEne_[1]);
00549   t_cHadronEne1x1_3   ->push_back(isoinfo1x1.cHadronEne_[2]);
00550   t_nHadronEne1x1     ->push_back(isoinfo1x1.nHadronEne);
00551   t_photonEne1x1      ->push_back(isoinfo1x1.photonEne);
00552   t_eleEne1x1         ->push_back(isoinfo1x1.eleEne);
00553   t_muEne1x1          ->push_back(isoinfo1x1.muEne);
00554 
00555   t_maxNearPHC1x1       ->push_back(isoinfoHC1x1.maxNearP);
00556   t_cHadronEneHC1x1     ->push_back(isoinfoHC1x1.cHadronEne);
00557   t_cHadronEneHC1x1_1   ->push_back(isoinfoHC1x1.cHadronEne_[0]);
00558   t_cHadronEneHC1x1_2   ->push_back(isoinfoHC1x1.cHadronEne_[1]);
00559   t_cHadronEneHC1x1_3   ->push_back(isoinfoHC1x1.cHadronEne_[2]);
00560   t_nHadronEneHC1x1     ->push_back(isoinfoHC1x1.nHadronEne);
00561   t_photonEneHC1x1      ->push_back(isoinfoHC1x1.photonEne);
00562   t_eleEneHC1x1         ->push_back(isoinfoHC1x1.eleEne);
00563   t_muEneHC1x1          ->push_back(isoinfoHC1x1.muEne);
00564   
00565   t_maxNearPHC3x3       ->push_back(isoinfoHC3x3.maxNearP);
00566   t_cHadronEneHC3x3     ->push_back(isoinfoHC3x3.cHadronEne);
00567   t_cHadronEneHC3x3_1   ->push_back(isoinfoHC3x3.cHadronEne_[0]);
00568   t_cHadronEneHC3x3_2   ->push_back(isoinfoHC3x3.cHadronEne_[1]);
00569   t_cHadronEneHC3x3_3   ->push_back(isoinfoHC3x3.cHadronEne_[2]);
00570   t_nHadronEneHC3x3     ->push_back(isoinfoHC3x3.nHadronEne);
00571   t_photonEneHC3x3      ->push_back(isoinfoHC3x3.photonEne);
00572   t_eleEneHC3x3         ->push_back(isoinfoHC3x3.eleEne);
00573   t_muEneHC3x3          ->push_back(isoinfoHC3x3.muEne);
00574 
00575   t_maxNearPHC5x5       ->push_back(isoinfoHC5x5.maxNearP);
00576   t_cHadronEneHC5x5     ->push_back(isoinfoHC5x5.cHadronEne);
00577   t_cHadronEneHC5x5_1   ->push_back(isoinfoHC5x5.cHadronEne_[0]);
00578   t_cHadronEneHC5x5_2   ->push_back(isoinfoHC5x5.cHadronEne_[1]);
00579   t_cHadronEneHC5x5_3   ->push_back(isoinfoHC5x5.cHadronEne_[2]);
00580   t_nHadronEneHC5x5     ->push_back(isoinfoHC5x5.nHadronEne);
00581   t_photonEneHC5x5      ->push_back(isoinfoHC5x5.photonEne);
00582   t_eleEneHC5x5         ->push_back(isoinfoHC5x5.eleEne);
00583   t_muEneHC5x5          ->push_back(isoinfoHC5x5.muEne);
00584 
00585   t_maxNearPHC7x7       ->push_back(isoinfoHC7x7.maxNearP);
00586   t_cHadronEneHC7x7     ->push_back(isoinfoHC7x7.cHadronEne);
00587   t_cHadronEneHC7x7_1   ->push_back(isoinfoHC7x7.cHadronEne_[0]);
00588   t_cHadronEneHC7x7_2   ->push_back(isoinfoHC7x7.cHadronEne_[1]);
00589   t_cHadronEneHC7x7_3   ->push_back(isoinfoHC7x7.cHadronEne_[2]);
00590   t_nHadronEneHC7x7     ->push_back(isoinfoHC7x7.nHadronEne);
00591   t_photonEneHC7x7      ->push_back(isoinfoHC7x7.photonEne);
00592   t_eleEneHC7x7         ->push_back(isoinfoHC7x7.eleEne);
00593   t_muEneHC7x7          ->push_back(isoinfoHC7x7.muEne);
00594 
00595   t_maxNearPR           ->push_back(isoinfoR.maxNearP);
00596   t_cHadronEneR         ->push_back(isoinfoR.cHadronEne);
00597   t_cHadronEneR_1       ->push_back(isoinfoR.cHadronEne_[0]);
00598   t_cHadronEneR_2       ->push_back(isoinfoR.cHadronEne_[1]);
00599   t_cHadronEneR_3       ->push_back(isoinfoR.cHadronEne_[2]);
00600   t_nHadronEneR         ->push_back(isoinfoR.nHadronEne);
00601   t_photonEneR          ->push_back(isoinfoR.photonEne);
00602   t_eleEneR             ->push_back(isoinfoR.eleEne);
00603   t_muEneR              ->push_back(isoinfoR.muEne);
00604 
00605   t_maxNearPIsoR        ->push_back(isoinfoIsoR.maxNearP);
00606   t_cHadronEneIsoR      ->push_back(isoinfoIsoR.cHadronEne);
00607   t_cHadronEneIsoR_1    ->push_back(isoinfoIsoR.cHadronEne_[0]);
00608   t_cHadronEneIsoR_2    ->push_back(isoinfoIsoR.cHadronEne_[1]);
00609   t_cHadronEneIsoR_3    ->push_back(isoinfoIsoR.cHadronEne_[2]);
00610   t_nHadronEneIsoR      ->push_back(isoinfoIsoR.nHadronEne);
00611   t_photonEneIsoR       ->push_back(isoinfoIsoR.photonEne);
00612   t_eleEneIsoR          ->push_back(isoinfoIsoR.eleEne);
00613   t_muEneIsoR           ->push_back(isoinfoIsoR.muEne);
00614 
00615   t_maxNearPHCR         ->push_back(isoinfoHCR.maxNearP);
00616   t_cHadronEneHCR       ->push_back(isoinfoHCR.cHadronEne);
00617   t_cHadronEneHCR_1     ->push_back(isoinfoHCR.cHadronEne_[0]);
00618   t_cHadronEneHCR_2     ->push_back(isoinfoHCR.cHadronEne_[1]);
00619   t_cHadronEneHCR_3     ->push_back(isoinfoHCR.cHadronEne_[2]);
00620   t_nHadronEneHCR       ->push_back(isoinfoHCR.nHadronEne);
00621   t_photonEneHCR        ->push_back(isoinfoHCR.photonEne);
00622   t_eleEneHCR           ->push_back(isoinfoHCR.eleEne);
00623   t_muEneHCR            ->push_back(isoinfoHCR.muEne);
00624 
00625   t_maxNearPIsoHCR      ->push_back(isoinfoIsoHCR.maxNearP);
00626   t_cHadronEneIsoHCR    ->push_back(isoinfoIsoHCR.cHadronEne);
00627   t_cHadronEneIsoHCR_1  ->push_back(isoinfoIsoHCR.cHadronEne_[0]);
00628   t_cHadronEneIsoHCR_2  ->push_back(isoinfoIsoHCR.cHadronEne_[1]);
00629   t_cHadronEneIsoHCR_3  ->push_back(isoinfoIsoHCR.cHadronEne_[2]);
00630   t_nHadronEneIsoHCR    ->push_back(isoinfoIsoHCR.nHadronEne);
00631   t_photonEneIsoHCR     ->push_back(isoinfoIsoHCR.photonEne);
00632   t_eleEneIsoHCR        ->push_back(isoinfoIsoHCR.eleEne);
00633   t_muEneIsoHCR         ->push_back(isoinfoIsoHCR.muEne);
00634 }
00635 
00636 void IsolatedGenParticles::BookHistograms(){
00637 
00638   //char hname[100], htit[100];
00639 
00640   h_NEventProc  = fs->make<TH1I>("h_NEventProc",  "h_NEventProc", 2, -0.5, 0.5);
00641   h_L1AlgoNames = fs->make<TH1I>("h_L1AlgoNames", "h_L1AlgoNames:Bin Labels", 128, -0.5, 127.5);  
00642 
00643   TFileDirectory dir1     = fs->mkdir( "dPhidEta" );
00644 
00645   // build the tree
00646   tree = fs->make<TTree>("tree", "tree");
00647 
00648   t_isoTrkPAll        = new std::vector<double>();
00649   t_isoTrkPtAll       = new std::vector<double>();
00650   t_isoTrkPhiAll      = new std::vector<double>();
00651   t_isoTrkEtaAll      = new std::vector<double>();
00652   t_isoTrkDPhiAll     = new std::vector<double>();
00653   t_isoTrkDEtaAll     = new std::vector<double>();
00654   t_isoTrkPdgIdAll    = new std::vector<double>();
00655 
00656   t_isoTrkP           = new std::vector<double>();
00657   t_isoTrkPt          = new std::vector<double>();
00658   t_isoTrkEne         = new std::vector<double>();
00659   t_isoTrkEta         = new std::vector<double>();
00660   t_isoTrkPhi         = new std::vector<double>();
00661   t_isoTrkEtaEC       = new std::vector<double>();
00662   t_isoTrkPhiEC       = new std::vector<double>();
00663   t_isoTrkPdgId       = new std::vector<double>();
00664   
00665   t_maxNearP31x31     = new std::vector<double>();
00666   t_cHadronEne31x31   = new std::vector<double>();
00667   t_cHadronEne31x31_1 = new std::vector<double>();
00668   t_cHadronEne31x31_2 = new std::vector<double>();
00669   t_cHadronEne31x31_3 = new std::vector<double>();
00670   t_nHadronEne31x31   = new std::vector<double>();
00671   t_photonEne31x31    = new std::vector<double>();
00672   t_eleEne31x31       = new std::vector<double>();
00673   t_muEne31x31        = new std::vector<double>();
00674 
00675   t_maxNearP25x25     = new std::vector<double>();
00676   t_cHadronEne25x25   = new std::vector<double>();
00677   t_cHadronEne25x25_1 = new std::vector<double>();
00678   t_cHadronEne25x25_2 = new std::vector<double>();
00679   t_cHadronEne25x25_3 = new std::vector<double>();
00680   t_nHadronEne25x25   = new std::vector<double>();
00681   t_photonEne25x25    = new std::vector<double>();
00682   t_eleEne25x25       = new std::vector<double>();
00683   t_muEne25x25        = new std::vector<double>();
00684 
00685   t_maxNearP21x21     = new std::vector<double>();
00686   t_cHadronEne21x21   = new std::vector<double>();
00687   t_cHadronEne21x21_1 = new std::vector<double>();
00688   t_cHadronEne21x21_2 = new std::vector<double>();
00689   t_cHadronEne21x21_3 = new std::vector<double>();
00690   t_nHadronEne21x21   = new std::vector<double>();
00691   t_photonEne21x21    = new std::vector<double>();
00692   t_eleEne21x21       = new std::vector<double>();
00693   t_muEne21x21        = new std::vector<double>();
00694 
00695   t_maxNearP15x15     = new std::vector<double>();
00696   t_cHadronEne15x15   = new std::vector<double>();
00697   t_cHadronEne15x15_1 = new std::vector<double>();
00698   t_cHadronEne15x15_2 = new std::vector<double>();
00699   t_cHadronEne15x15_3 = new std::vector<double>();
00700   t_nHadronEne15x15   = new std::vector<double>();
00701   t_photonEne15x15    = new std::vector<double>();
00702   t_eleEne15x15       = new std::vector<double>();
00703   t_muEne15x15        = new std::vector<double>();
00704 
00705   t_maxNearP11x11     = new std::vector<double>();
00706   t_cHadronEne11x11   = new std::vector<double>();
00707   t_cHadronEne11x11_1 = new std::vector<double>();
00708   t_cHadronEne11x11_2 = new std::vector<double>();
00709   t_cHadronEne11x11_3 = new std::vector<double>();
00710   t_nHadronEne11x11   = new std::vector<double>();
00711   t_photonEne11x11    = new std::vector<double>();
00712   t_eleEne11x11       = new std::vector<double>();
00713   t_muEne11x11        = new std::vector<double>();
00714 
00715   t_maxNearP9x9       = new std::vector<double>();
00716   t_cHadronEne9x9     = new std::vector<double>();
00717   t_cHadronEne9x9_1   = new std::vector<double>();
00718   t_cHadronEne9x9_2   = new std::vector<double>();
00719   t_cHadronEne9x9_3   = new std::vector<double>();
00720   t_nHadronEne9x9     = new std::vector<double>();
00721   t_photonEne9x9      = new std::vector<double>();
00722   t_eleEne9x9         = new std::vector<double>();
00723   t_muEne9x9          = new std::vector<double>();
00724 
00725   t_maxNearP7x7       = new std::vector<double>();
00726   t_cHadronEne7x7     = new std::vector<double>();
00727   t_cHadronEne7x7_1   = new std::vector<double>();
00728   t_cHadronEne7x7_2   = new std::vector<double>();
00729   t_cHadronEne7x7_3   = new std::vector<double>();
00730   t_nHadronEne7x7     = new std::vector<double>();
00731   t_photonEne7x7      = new std::vector<double>();
00732   t_eleEne7x7         = new std::vector<double>();
00733   t_muEne7x7          = new std::vector<double>();
00734 
00735   t_maxNearP3x3       = new std::vector<double>();
00736   t_cHadronEne3x3     = new std::vector<double>();
00737   t_cHadronEne3x3_1   = new std::vector<double>();
00738   t_cHadronEne3x3_2   = new std::vector<double>();
00739   t_cHadronEne3x3_3   = new std::vector<double>();
00740   t_nHadronEne3x3     = new std::vector<double>();
00741   t_photonEne3x3      = new std::vector<double>();
00742   t_eleEne3x3         = new std::vector<double>();
00743   t_muEne3x3          = new std::vector<double>();
00744 
00745   t_maxNearP1x1       = new std::vector<double>();
00746   t_cHadronEne1x1     = new std::vector<double>();
00747   t_cHadronEne1x1_1   = new std::vector<double>();
00748   t_cHadronEne1x1_2   = new std::vector<double>();
00749   t_cHadronEne1x1_3   = new std::vector<double>();
00750   t_nHadronEne1x1     = new std::vector<double>();
00751   t_photonEne1x1      = new std::vector<double>();
00752   t_eleEne1x1         = new std::vector<double>();
00753   t_muEne1x1          = new std::vector<double>();
00754 
00755   t_maxNearPHC1x1       = new std::vector<double>();
00756   t_cHadronEneHC1x1     = new std::vector<double>();
00757   t_cHadronEneHC1x1_1   = new std::vector<double>();
00758   t_cHadronEneHC1x1_2   = new std::vector<double>();
00759   t_cHadronEneHC1x1_3   = new std::vector<double>();
00760   t_nHadronEneHC1x1     = new std::vector<double>();
00761   t_photonEneHC1x1      = new std::vector<double>();
00762   t_eleEneHC1x1         = new std::vector<double>();
00763   t_muEneHC1x1          = new std::vector<double>();
00764 
00765   t_maxNearPHC3x3       = new std::vector<double>();
00766   t_cHadronEneHC3x3     = new std::vector<double>();
00767   t_cHadronEneHC3x3_1   = new std::vector<double>();
00768   t_cHadronEneHC3x3_2   = new std::vector<double>();
00769   t_cHadronEneHC3x3_3   = new std::vector<double>();
00770   t_nHadronEneHC3x3     = new std::vector<double>();
00771   t_photonEneHC3x3      = new std::vector<double>();
00772   t_eleEneHC3x3         = new std::vector<double>();
00773   t_muEneHC3x3          = new std::vector<double>();
00774 
00775   t_maxNearPHC5x5       = new std::vector<double>();
00776   t_cHadronEneHC5x5     = new std::vector<double>();
00777   t_cHadronEneHC5x5_1   = new std::vector<double>();
00778   t_cHadronEneHC5x5_2   = new std::vector<double>();
00779   t_cHadronEneHC5x5_3   = new std::vector<double>();
00780   t_nHadronEneHC5x5     = new std::vector<double>();
00781   t_photonEneHC5x5      = new std::vector<double>();
00782   t_eleEneHC5x5         = new std::vector<double>();
00783   t_muEneHC5x5          = new std::vector<double>();
00784 
00785   t_maxNearPHC7x7       = new std::vector<double>();
00786   t_cHadronEneHC7x7     = new std::vector<double>();
00787   t_cHadronEneHC7x7_1   = new std::vector<double>();
00788   t_cHadronEneHC7x7_2   = new std::vector<double>();
00789   t_cHadronEneHC7x7_3   = new std::vector<double>();
00790   t_nHadronEneHC7x7     = new std::vector<double>();
00791   t_photonEneHC7x7      = new std::vector<double>();
00792   t_eleEneHC7x7         = new std::vector<double>();
00793   t_muEneHC7x7          = new std::vector<double>();
00794 
00795   t_maxNearPR           = new std::vector<double>();
00796   t_cHadronEneR         = new std::vector<double>();
00797   t_cHadronEneR_1       = new std::vector<double>();
00798   t_cHadronEneR_2       = new std::vector<double>();
00799   t_cHadronEneR_3       = new std::vector<double>();
00800   t_nHadronEneR         = new std::vector<double>();
00801   t_photonEneR          = new std::vector<double>();
00802   t_eleEneR             = new std::vector<double>();
00803   t_muEneR              = new std::vector<double>();
00804 
00805   t_maxNearPIsoR        = new std::vector<double>();
00806   t_cHadronEneIsoR      = new std::vector<double>();
00807   t_cHadronEneIsoR_1    = new std::vector<double>();
00808   t_cHadronEneIsoR_2    = new std::vector<double>();
00809   t_cHadronEneIsoR_3    = new std::vector<double>();
00810   t_nHadronEneIsoR      = new std::vector<double>();
00811   t_photonEneIsoR       = new std::vector<double>();
00812   t_eleEneIsoR          = new std::vector<double>();
00813   t_muEneIsoR           = new std::vector<double>();
00814 
00815   t_maxNearPHCR         = new std::vector<double>();
00816   t_cHadronEneHCR       = new std::vector<double>();
00817   t_cHadronEneHCR_1     = new std::vector<double>();
00818   t_cHadronEneHCR_2     = new std::vector<double>();
00819   t_cHadronEneHCR_3     = new std::vector<double>();
00820   t_nHadronEneHCR       = new std::vector<double>();
00821   t_photonEneHCR        = new std::vector<double>();
00822   t_eleEneHCR           = new std::vector<double>();
00823   t_muEneHCR            = new std::vector<double>();
00824 
00825   t_maxNearPIsoHCR      = new std::vector<double>();
00826   t_cHadronEneIsoHCR    = new std::vector<double>();
00827   t_cHadronEneIsoHCR_1  = new std::vector<double>();
00828   t_cHadronEneIsoHCR_2  = new std::vector<double>();
00829   t_cHadronEneIsoHCR_3  = new std::vector<double>();
00830   t_nHadronEneIsoHCR    = new std::vector<double>();
00831   t_photonEneIsoHCR     = new std::vector<double>();
00832   t_eleEneIsoHCR        = new std::vector<double>();
00833   t_muEneIsoHCR         = new std::vector<double>();
00834 
00835   //----- L1Trigger 
00836   t_L1Decision        = new std::vector<int>();
00837   t_L1CenJetPt        = new std::vector<double>();
00838   t_L1CenJetEta       = new std::vector<double>();    
00839   t_L1CenJetPhi       = new std::vector<double>();
00840   t_L1FwdJetPt        = new std::vector<double>();
00841   t_L1FwdJetEta       = new std::vector<double>();
00842   t_L1FwdJetPhi       = new std::vector<double>();
00843   t_L1TauJetPt        = new std::vector<double>();
00844   t_L1TauJetEta       = new std::vector<double>();     
00845   t_L1TauJetPhi       = new std::vector<double>();
00846   t_L1MuonPt          = new std::vector<double>();
00847   t_L1MuonEta         = new std::vector<double>();     
00848   t_L1MuonPhi         = new std::vector<double>();
00849   t_L1IsoEMPt         = new std::vector<double>();
00850   t_L1IsoEMEta        = new std::vector<double>();
00851   t_L1IsoEMPhi        = new std::vector<double>();
00852   t_L1NonIsoEMPt      = new std::vector<double>();
00853   t_L1NonIsoEMEta     = new std::vector<double>();
00854   t_L1NonIsoEMPhi     = new std::vector<double>();
00855   t_L1METPt           = new std::vector<double>();
00856   t_L1METEta          = new std::vector<double>();
00857   t_L1METPhi          = new std::vector<double>();
00858   
00859   //tree->Branch("t_nEvtProc",          "vector<int>",    &t_nEvtProc);
00860 
00861   tree->Branch("t_isoTrkPAll",        "vector<double>", &t_isoTrkPAll);
00862   tree->Branch("t_isoTrkPtAll",       "vector<double>", &t_isoTrkPtAll);
00863   tree->Branch("t_isoTrkPhiAll",      "vector<double>", &t_isoTrkPhiAll);
00864   tree->Branch("t_isoTrkEtaAll",      "vector<double>", &t_isoTrkEtaAll);
00865   tree->Branch("t_isoTrkDPhiAll",     "vector<double>", &t_isoTrkDPhiAll);
00866   tree->Branch("t_isoTrkDEtaAll",     "vector<double>", &t_isoTrkDEtaAll);
00867   tree->Branch("t_isoTrkPdgIdAll",    "vector<double>", &t_isoTrkPdgIdAll);
00868 
00869   tree->Branch("t_isoTrkP",           "vector<double>", &t_isoTrkP);
00870   tree->Branch("t_isoTrkPt",          "vector<double>", &t_isoTrkPt);
00871   tree->Branch("t_isoTrkEne",         "vector<double>", &t_isoTrkEne);
00872   tree->Branch("t_isoTrkEta",         "vector<double>", &t_isoTrkEta);
00873   tree->Branch("t_isoTrkPhi",         "vector<double>", &t_isoTrkPhi);
00874   tree->Branch("t_isoTrkEtaEC",       "vector<double>", &t_isoTrkEtaEC);
00875   tree->Branch("t_isoTrkPhiEC",       "vector<double>", &t_isoTrkPhiEC);
00876   tree->Branch("t_isoTrkPdgId",       "vector<double>", &t_isoTrkPdgId);
00877 
00878   tree->Branch("t_maxNearP31x31",     "vector<double>", &t_maxNearP31x31);
00879   tree->Branch("t_cHadronEne31x31",   "vector<double>", &t_cHadronEne31x31);
00880   tree->Branch("t_cHadronEne31x31_1", "vector<double>", &t_cHadronEne31x31_1);
00881   tree->Branch("t_cHadronEne31x31_2", "vector<double>", &t_cHadronEne31x31_2);
00882   tree->Branch("t_cHadronEne31x31_3", "vector<double>", &t_cHadronEne31x31_3);
00883   tree->Branch("t_nHadronEne31x31",   "vector<double>", &t_nHadronEne31x31);
00884   tree->Branch("t_photonEne31x31",    "vector<double>", &t_photonEne31x31);
00885   tree->Branch("t_eleEne31x31",       "vector<double>", &t_eleEne31x31);
00886   tree->Branch("t_muEne31x31",        "vector<double>", &t_muEne31x31);
00887 
00888   tree->Branch("t_maxNearP25x25",     "vector<double>", &t_maxNearP25x25);
00889   tree->Branch("t_cHadronEne25x25",   "vector<double>", &t_cHadronEne25x25);
00890   tree->Branch("t_cHadronEne25x25_1", "vector<double>", &t_cHadronEne25x25_1);
00891   tree->Branch("t_cHadronEne25x25_2", "vector<double>", &t_cHadronEne25x25_2);
00892   tree->Branch("t_cHadronEne25x25_3", "vector<double>", &t_cHadronEne25x25_3);
00893   tree->Branch("t_nHadronEne25x25",   "vector<double>", &t_nHadronEne25x25);
00894   tree->Branch("t_photonEne25x25",    "vector<double>", &t_photonEne25x25);
00895   tree->Branch("t_eleEne25x25",       "vector<double>", &t_eleEne25x25);
00896   tree->Branch("t_muEne25x25",        "vector<double>", &t_muEne25x25);
00897   
00898   tree->Branch("t_maxNearP21x21",     "vector<double>", &t_maxNearP21x21);
00899   tree->Branch("t_cHadronEne21x21",   "vector<double>", &t_cHadronEne21x21);
00900   tree->Branch("t_cHadronEne21x21_1", "vector<double>", &t_cHadronEne21x21_1);
00901   tree->Branch("t_cHadronEne21x21_2", "vector<double>", &t_cHadronEne21x21_2);
00902   tree->Branch("t_cHadronEne21x21_3", "vector<double>", &t_cHadronEne21x21_3);
00903   tree->Branch("t_nHadronEne21x21",   "vector<double>", &t_nHadronEne21x21);
00904   tree->Branch("t_photonEne21x21",    "vector<double>", &t_photonEne21x21);
00905   tree->Branch("t_eleEne21x21",       "vector<double>", &t_eleEne21x21);
00906   tree->Branch("t_muEne21x21",        "vector<double>", &t_muEne21x21);
00907 
00908   tree->Branch("t_maxNearP15x15",     "vector<double>", &t_maxNearP15x15);
00909   tree->Branch("t_cHadronEne15x15",   "vector<double>", &t_cHadronEne15x15);
00910   tree->Branch("t_cHadronEne15x15_1", "vector<double>", &t_cHadronEne15x15_1);
00911   tree->Branch("t_cHadronEne15x15_2", "vector<double>", &t_cHadronEne15x15_2);
00912   tree->Branch("t_cHadronEne15x15_3", "vector<double>", &t_cHadronEne15x15_3);
00913   tree->Branch("t_nHadronEne15x15",   "vector<double>", &t_nHadronEne15x15);
00914   tree->Branch("t_photonEne15x15",    "vector<double>", &t_photonEne15x15);
00915   tree->Branch("t_eleEne15x15",       "vector<double>", &t_eleEne15x15);
00916   tree->Branch("t_muEne15x15",        "vector<double>", &t_muEne15x15);
00917 
00918   tree->Branch("t_maxNearP11x11",     "vector<double>", &t_maxNearP11x11);
00919   tree->Branch("t_cHadronEne11x11",   "vector<double>", &t_cHadronEne11x11);
00920   tree->Branch("t_cHadronEne11x11_1", "vector<double>", &t_cHadronEne11x11_1);
00921   tree->Branch("t_cHadronEne11x11_2", "vector<double>", &t_cHadronEne11x11_2);
00922   tree->Branch("t_cHadronEne11x11_3", "vector<double>", &t_cHadronEne11x11_3);
00923   tree->Branch("t_nHadronEne11x11",   "vector<double>", &t_nHadronEne11x11);
00924   tree->Branch("t_photonEne11x11",    "vector<double>", &t_photonEne11x11);
00925   tree->Branch("t_eleEne11x11",       "vector<double>", &t_eleEne11x11);
00926   tree->Branch("t_muEne11x11",        "vector<double>", &t_muEne11x11);
00927 
00928   tree->Branch("t_maxNearP9x9",       "vector<double>", &t_maxNearP9x9);
00929   tree->Branch("t_cHadronEne9x9",     "vector<double>", &t_cHadronEne9x9);
00930   tree->Branch("t_cHadronEne9x9_1",   "vector<double>", &t_cHadronEne9x9_1);
00931   tree->Branch("t_cHadronEne9x9_2",   "vector<double>", &t_cHadronEne9x9_2);
00932   tree->Branch("t_cHadronEne9x9_3",   "vector<double>", &t_cHadronEne9x9_3);
00933   tree->Branch("t_nHadronEne9x9",     "vector<double>", &t_nHadronEne9x9);
00934   tree->Branch("t_photonEne9x9",      "vector<double>", &t_photonEne9x9);
00935   tree->Branch("t_eleEne9x9",         "vector<double>", &t_eleEne9x9);
00936   tree->Branch("t_muEne9x9",          "vector<double>", &t_muEne9x9);
00937 
00938   tree->Branch("t_maxNearP7x7",       "vector<double>", &t_maxNearP7x7);
00939   tree->Branch("t_cHadronEne7x7",     "vector<double>", &t_cHadronEne7x7);
00940   tree->Branch("t_cHadronEne7x7_1",   "vector<double>", &t_cHadronEne7x7_1);
00941   tree->Branch("t_cHadronEne7x7_2",   "vector<double>", &t_cHadronEne7x7_2);
00942   tree->Branch("t_cHadronEne7x7_3",   "vector<double>", &t_cHadronEne7x7_3);
00943   tree->Branch("t_nHadronEne7x7",     "vector<double>", &t_nHadronEne7x7);
00944   tree->Branch("t_photonEne7x7",      "vector<double>", &t_photonEne7x7);
00945   tree->Branch("t_eleEne7x7",         "vector<double>", &t_eleEne7x7);
00946   tree->Branch("t_muEne7x7",          "vector<double>", &t_muEne7x7);
00947 
00948   tree->Branch("t_maxNearP3x3",       "vector<double>", &t_maxNearP3x3);
00949   tree->Branch("t_cHadronEne3x3",     "vector<double>", &t_cHadronEne3x3);
00950   tree->Branch("t_cHadronEne3x3_1",   "vector<double>", &t_cHadronEne3x3_1);
00951   tree->Branch("t_cHadronEne3x3_2",   "vector<double>", &t_cHadronEne3x3_2);
00952   tree->Branch("t_cHadronEne3x3_3",   "vector<double>", &t_cHadronEne3x3_3);
00953   tree->Branch("t_nHadronEne3x3",     "vector<double>", &t_nHadronEne3x3);
00954   tree->Branch("t_photonEne3x3",      "vector<double>", &t_photonEne3x3);
00955   tree->Branch("t_eleEne3x3",         "vector<double>", &t_eleEne3x3);
00956   tree->Branch("t_muEne3x3",          "vector<double>", &t_muEne3x3);
00957 
00958   tree->Branch("t_maxNearP1x1",       "vector<double>", &t_maxNearP1x1);
00959   tree->Branch("t_cHadronEne1x1",     "vector<double>", &t_cHadronEne1x1);
00960   tree->Branch("t_cHadronEne1x1_1",   "vector<double>", &t_cHadronEne1x1_1);
00961   tree->Branch("t_cHadronEne1x1_2",   "vector<double>", &t_cHadronEne1x1_2);
00962   tree->Branch("t_cHadronEne1x1_3",   "vector<double>", &t_cHadronEne1x1_3);
00963   tree->Branch("t_nHadronEne1x1",     "vector<double>", &t_nHadronEne1x1);
00964   tree->Branch("t_photonEne1x1",      "vector<double>", &t_photonEne1x1);
00965   tree->Branch("t_eleEne1x1",         "vector<double>", &t_eleEne1x1);
00966   tree->Branch("t_muEne1x1",          "vector<double>", &t_muEne1x1);
00967 
00968   tree->Branch("t_maxNearPHC1x1",       "vector<double>", &t_maxNearPHC1x1);
00969   tree->Branch("t_cHadronEneHC1x1",     "vector<double>", &t_cHadronEneHC1x1);
00970   tree->Branch("t_cHadronEneHC1x1_1",   "vector<double>", &t_cHadronEneHC1x1_1);
00971   tree->Branch("t_cHadronEneHC1x1_2",   "vector<double>", &t_cHadronEneHC1x1_2);
00972   tree->Branch("t_cHadronEneHC1x1_3",   "vector<double>", &t_cHadronEneHC1x1_3);
00973   tree->Branch("t_nHadronEneHC1x1",     "vector<double>", &t_nHadronEneHC1x1);
00974   tree->Branch("t_photonEneHC1x1",      "vector<double>", &t_photonEneHC1x1);
00975   tree->Branch("t_eleEneHC1x1",         "vector<double>", &t_eleEneHC1x1);
00976   tree->Branch("t_muEneHC1x1",          "vector<double>", &t_muEneHC1x1);
00977 
00978   tree->Branch("t_maxNearPHC3x3",       "vector<double>", &t_maxNearPHC3x3);
00979   tree->Branch("t_cHadronEneHC3x3",     "vector<double>", &t_cHadronEneHC3x3);
00980   tree->Branch("t_cHadronEneHC3x3_1",   "vector<double>", &t_cHadronEneHC3x3_1);
00981   tree->Branch("t_cHadronEneHC3x3_2",   "vector<double>", &t_cHadronEneHC3x3_2);
00982   tree->Branch("t_cHadronEneHC3x3_3",   "vector<double>", &t_cHadronEneHC3x3_3);
00983   tree->Branch("t_nHadronEneHC3x3",     "vector<double>", &t_nHadronEneHC3x3);
00984   tree->Branch("t_photonEneHC3x3",      "vector<double>", &t_photonEneHC3x3);
00985   tree->Branch("t_eleEneHC3x3",         "vector<double>", &t_eleEneHC3x3);
00986   tree->Branch("t_muEneHC3x3",          "vector<double>", &t_muEneHC3x3);
00987 
00988   tree->Branch("t_maxNearPHC5x5",       "vector<double>", &t_maxNearPHC5x5);
00989   tree->Branch("t_cHadronEneHC5x5",     "vector<double>", &t_cHadronEneHC5x5);
00990   tree->Branch("t_cHadronEneHC5x5_1",   "vector<double>", &t_cHadronEneHC5x5_1);
00991   tree->Branch("t_cHadronEneHC5x5_2",   "vector<double>", &t_cHadronEneHC5x5_2);
00992   tree->Branch("t_cHadronEneHC5x5_3",   "vector<double>", &t_cHadronEneHC5x5_3);
00993   tree->Branch("t_nHadronEneHC5x5",     "vector<double>", &t_nHadronEneHC5x5);
00994   tree->Branch("t_photonEneHC5x5",      "vector<double>", &t_photonEneHC5x5);
00995   tree->Branch("t_eleEneHC5x5",         "vector<double>", &t_eleEneHC5x5);
00996   tree->Branch("t_muEneHC5x5",          "vector<double>", &t_muEneHC5x5);
00997 
00998   tree->Branch("t_maxNearPHC7x7",       "vector<double>", &t_maxNearPHC7x7);
00999   tree->Branch("t_cHadronEneHC7x7",     "vector<double>", &t_cHadronEneHC7x7);
01000   tree->Branch("t_cHadronEneHC7x7_1",   "vector<double>", &t_cHadronEneHC7x7_1);
01001   tree->Branch("t_cHadronEneHC7x7_2",   "vector<double>", &t_cHadronEneHC7x7_2);
01002   tree->Branch("t_cHadronEneHC7x7_3",   "vector<double>", &t_cHadronEneHC7x7_3);
01003   tree->Branch("t_nHadronEneHC7x7",     "vector<double>", &t_nHadronEneHC7x7);
01004   tree->Branch("t_photonEneHC7x7",      "vector<double>", &t_photonEneHC7x7);
01005   tree->Branch("t_eleEneHC7x7",         "vector<double>", &t_eleEneHC7x7);
01006   tree->Branch("t_muEneHC7x7",          "vector<double>", &t_muEneHC7x7);
01007 
01008   tree->Branch("t_maxNearPR",       "vector<double>", &t_maxNearPR);
01009   tree->Branch("t_cHadronEneR",     "vector<double>", &t_cHadronEneR);
01010   tree->Branch("t_cHadronEneR_1",   "vector<double>", &t_cHadronEneR_1);
01011   tree->Branch("t_cHadronEneR_2",   "vector<double>", &t_cHadronEneR_2);
01012   tree->Branch("t_cHadronEneR_3",   "vector<double>", &t_cHadronEneR_3);
01013   tree->Branch("t_nHadronEneR",     "vector<double>", &t_nHadronEneR);
01014   tree->Branch("t_photonEneR",      "vector<double>", &t_photonEneR);
01015   tree->Branch("t_eleEneR",         "vector<double>", &t_eleEneR);
01016   tree->Branch("t_muEneR",          "vector<double>", &t_muEneR);
01017 
01018   tree->Branch("t_maxNearPIsoR",       "vector<double>", &t_maxNearPIsoR);
01019   tree->Branch("t_cHadronEneIsoR",     "vector<double>", &t_cHadronEneIsoR);
01020   tree->Branch("t_cHadronEneIsoR_1",   "vector<double>", &t_cHadronEneIsoR_1);
01021   tree->Branch("t_cHadronEneIsoR_2",   "vector<double>", &t_cHadronEneIsoR_2);
01022   tree->Branch("t_cHadronEneIsoR_3",   "vector<double>", &t_cHadronEneIsoR_3);
01023   tree->Branch("t_nHadronEneIsoR",     "vector<double>", &t_nHadronEneIsoR);
01024   tree->Branch("t_photonEneIsoR",      "vector<double>", &t_photonEneIsoR);
01025   tree->Branch("t_eleEneIsoR",         "vector<double>", &t_eleEneIsoR);
01026   tree->Branch("t_muEneIsoR",          "vector<double>", &t_muEneIsoR);
01027 
01028   tree->Branch("t_maxNearPHCR",       "vector<double>", &t_maxNearPHCR);
01029   tree->Branch("t_cHadronEneHCR",     "vector<double>", &t_cHadronEneHCR);
01030   tree->Branch("t_cHadronEneHCR_1",   "vector<double>", &t_cHadronEneHCR_1);
01031   tree->Branch("t_cHadronEneHCR_2",   "vector<double>", &t_cHadronEneHCR_2);
01032   tree->Branch("t_cHadronEneHCR_3",   "vector<double>", &t_cHadronEneHCR_3);
01033   tree->Branch("t_nHadronEneHCR",     "vector<double>", &t_nHadronEneHCR);
01034   tree->Branch("t_photonEneHCR",      "vector<double>", &t_photonEneHCR);
01035   tree->Branch("t_eleEneHCR",         "vector<double>", &t_eleEneHCR);
01036   tree->Branch("t_muEneHCR",          "vector<double>", &t_muEneHCR);
01037 
01038   tree->Branch("t_maxNearPIsoHCR",       "vector<double>", &t_maxNearPIsoHCR);
01039   tree->Branch("t_cHadronEneIsoHCR",     "vector<double>", &t_cHadronEneIsoHCR);
01040   tree->Branch("t_cHadronEneIsoHCR_1",   "vector<double>", &t_cHadronEneIsoHCR_1);
01041   tree->Branch("t_cHadronEneIsoHCR_2",   "vector<double>", &t_cHadronEneIsoHCR_2);
01042   tree->Branch("t_cHadronEneIsoHCR_3",   "vector<double>", &t_cHadronEneIsoHCR_3);
01043   tree->Branch("t_nHadronEneIsoHCR",     "vector<double>", &t_nHadronEneIsoHCR);
01044   tree->Branch("t_photonEneIsoHCR",      "vector<double>", &t_photonEneIsoHCR);
01045   tree->Branch("t_eleEneIsoHCR",         "vector<double>", &t_eleEneIsoHCR);
01046   tree->Branch("t_muEneIsoHCR",          "vector<double>", &t_muEneIsoHCR);
01047 
01048   tree->Branch("t_L1Decision",        "vector<int>",    &t_L1Decision);
01049   tree->Branch("t_L1CenJetPt",        "vector<double>", &t_L1CenJetPt);
01050   tree->Branch("t_L1CenJetEta",       "vector<double>", &t_L1CenJetEta);
01051   tree->Branch("t_L1CenJetPhi",       "vector<double>", &t_L1CenJetPhi);
01052   tree->Branch("t_L1FwdJetPt",        "vector<double>", &t_L1FwdJetPt);
01053   tree->Branch("t_L1FwdJetEta",       "vector<double>", &t_L1FwdJetEta);
01054   tree->Branch("t_L1FwdJetPhi",       "vector<double>", &t_L1FwdJetPhi);
01055   tree->Branch("t_L1TauJetPt",        "vector<double>", &t_L1TauJetPt);
01056   tree->Branch("t_L1TauJetEta",       "vector<double>", &t_L1TauJetEta);     
01057   tree->Branch("t_L1TauJetPhi",       "vector<double>", &t_L1TauJetPhi);
01058   tree->Branch("t_L1MuonPt",          "vector<double>", &t_L1MuonPt);
01059   tree->Branch("t_L1MuonEta",         "vector<double>", &t_L1MuonEta);
01060   tree->Branch("t_L1MuonPhi",         "vector<double>", &t_L1MuonPhi);
01061   tree->Branch("t_L1IsoEMPt",         "vector<double>", &t_L1IsoEMPt);
01062   tree->Branch("t_L1IsoEMEta",        "vector<double>", &t_L1IsoEMEta);
01063   tree->Branch("t_L1IsoEMPhi",        "vector<double>", &t_L1IsoEMPhi);
01064   tree->Branch("t_L1NonIsoEMPt",      "vector<double>", &t_L1NonIsoEMPt);
01065   tree->Branch("t_L1NonIsoEMEta",     "vector<double>", &t_L1NonIsoEMEta);
01066   tree->Branch("t_L1NonIsoEMPhi",     "vector<double>", &t_L1NonIsoEMPhi);
01067   tree->Branch("t_L1METPt",           "vector<double>", &t_L1METPt);
01068   tree->Branch("t_L1METEta",          "vector<double>", &t_L1METEta);
01069   tree->Branch("t_L1METPhi",          "vector<double>", &t_L1METPhi);
01070 }
01071 
01072 
01073 void IsolatedGenParticles::clearTreeVectors() {
01074   //  t_maxNearP31x31->clear();
01075   
01076   //t_nEvtProc          ->clear();
01077 
01078   t_isoTrkPAll        ->clear();
01079   t_isoTrkPtAll       ->clear();
01080   t_isoTrkPhiAll      ->clear();
01081   t_isoTrkEtaAll      ->clear();
01082   t_isoTrkDPhiAll     ->clear();
01083   t_isoTrkDEtaAll     ->clear();
01084   t_isoTrkPdgIdAll    ->clear();
01085 
01086   t_isoTrkP           ->clear();
01087   t_isoTrkPt          ->clear();
01088   t_isoTrkEne         ->clear();
01089   t_isoTrkEta         ->clear();
01090   t_isoTrkPhi         ->clear();
01091   t_isoTrkEtaEC       ->clear();
01092   t_isoTrkPhiEC       ->clear();
01093   t_isoTrkPdgId       ->clear();
01094 
01095   t_maxNearP31x31     ->clear();
01096   t_cHadronEne31x31   ->clear();
01097   t_cHadronEne31x31_1 ->clear();
01098   t_cHadronEne31x31_2 ->clear();
01099   t_cHadronEne31x31_3 ->clear();
01100   t_nHadronEne31x31   ->clear();
01101   t_photonEne31x31    ->clear();
01102   t_eleEne31x31       ->clear();
01103   t_muEne31x31        ->clear();
01104 
01105   t_maxNearP25x25     ->clear();
01106   t_cHadronEne25x25   ->clear();
01107   t_cHadronEne25x25_1 ->clear();
01108   t_cHadronEne25x25_2 ->clear();
01109   t_cHadronEne25x25_3 ->clear();
01110   t_nHadronEne25x25   ->clear();
01111   t_photonEne25x25    ->clear();
01112   t_eleEne25x25       ->clear();
01113   t_muEne25x25        ->clear();
01114 
01115   t_maxNearP21x21     ->clear();
01116   t_cHadronEne21x21   ->clear();
01117   t_cHadronEne21x21_1 ->clear();
01118   t_cHadronEne21x21_2 ->clear();
01119   t_cHadronEne21x21_3 ->clear();
01120   t_nHadronEne21x21   ->clear();
01121   t_photonEne21x21    ->clear();
01122   t_eleEne21x21       ->clear();
01123   t_muEne21x21        ->clear();
01124 
01125   t_maxNearP15x15     ->clear();
01126   t_cHadronEne15x15   ->clear();
01127   t_cHadronEne15x15_1 ->clear();
01128   t_cHadronEne15x15_2 ->clear();
01129   t_cHadronEne15x15_3 ->clear();
01130   t_nHadronEne15x15   ->clear();
01131   t_photonEne15x15    ->clear();
01132   t_eleEne15x15       ->clear();
01133   t_muEne15x15        ->clear();
01134 
01135   t_maxNearP11x11     ->clear();
01136   t_cHadronEne11x11   ->clear();
01137   t_cHadronEne11x11_1 ->clear();
01138   t_cHadronEne11x11_2 ->clear();
01139   t_cHadronEne11x11_3 ->clear();
01140   t_nHadronEne11x11   ->clear();
01141   t_photonEne11x11    ->clear();
01142   t_eleEne11x11       ->clear();
01143   t_muEne11x11        ->clear();
01144 
01145   t_maxNearP9x9       ->clear();
01146   t_cHadronEne9x9     ->clear();
01147   t_cHadronEne9x9_1   ->clear();
01148   t_cHadronEne9x9_2   ->clear();
01149   t_cHadronEne9x9_3   ->clear();
01150   t_nHadronEne9x9     ->clear();
01151   t_photonEne9x9      ->clear();
01152   t_eleEne9x9         ->clear();
01153   t_muEne9x9          ->clear();
01154 
01155   t_maxNearP7x7       ->clear();
01156   t_cHadronEne7x7     ->clear();
01157   t_cHadronEne7x7_1   ->clear();
01158   t_cHadronEne7x7_2   ->clear();
01159   t_cHadronEne7x7_3   ->clear();
01160   t_nHadronEne7x7     ->clear();
01161   t_photonEne7x7      ->clear();
01162   t_eleEne7x7         ->clear();
01163   t_muEne7x7          ->clear();
01164 
01165   t_maxNearP3x3       ->clear();
01166   t_cHadronEne3x3     ->clear();
01167   t_cHadronEne3x3_1   ->clear();
01168   t_cHadronEne3x3_2   ->clear();
01169   t_cHadronEne3x3_3   ->clear();
01170   t_nHadronEne3x3     ->clear();
01171   t_photonEne3x3      ->clear();
01172   t_eleEne3x3         ->clear();
01173   t_muEne3x3          ->clear();
01174 
01175   t_maxNearP1x1       ->clear();
01176   t_cHadronEne1x1     ->clear();
01177   t_cHadronEne1x1_1   ->clear();
01178   t_cHadronEne1x1_2   ->clear();
01179   t_cHadronEne1x1_3   ->clear();
01180   t_nHadronEne1x1     ->clear();
01181   t_photonEne1x1      ->clear();
01182   t_eleEne1x1         ->clear();
01183   t_muEne1x1          ->clear();
01184 
01185   t_maxNearPHC1x1       ->clear();
01186   t_cHadronEneHC1x1     ->clear();
01187   t_cHadronEneHC1x1_1   ->clear();
01188   t_cHadronEneHC1x1_2   ->clear();
01189   t_cHadronEneHC1x1_3   ->clear();
01190   t_nHadronEneHC1x1     ->clear();
01191   t_photonEneHC1x1      ->clear();
01192   t_eleEneHC1x1         ->clear();
01193   t_muEneHC1x1          ->clear();
01194 
01195   t_maxNearPHC3x3       ->clear();
01196   t_cHadronEneHC3x3     ->clear();
01197   t_cHadronEneHC3x3_1   ->clear();
01198   t_cHadronEneHC3x3_2   ->clear();
01199   t_cHadronEneHC3x3_3   ->clear();
01200   t_nHadronEneHC3x3     ->clear();
01201   t_photonEneHC3x3      ->clear();
01202   t_eleEneHC3x3         ->clear();
01203   t_muEneHC3x3          ->clear();
01204 
01205   t_maxNearPHC5x5       ->clear();
01206   t_cHadronEneHC5x5     ->clear();
01207   t_cHadronEneHC5x5_1   ->clear();
01208   t_cHadronEneHC5x5_2   ->clear();
01209   t_cHadronEneHC5x5_3   ->clear();
01210   t_nHadronEneHC5x5     ->clear();
01211   t_photonEneHC5x5      ->clear();
01212   t_eleEneHC5x5         ->clear();
01213   t_muEneHC5x5          ->clear();
01214 
01215   t_maxNearPHC7x7       ->clear();
01216   t_cHadronEneHC7x7     ->clear();
01217   t_cHadronEneHC7x7_1   ->clear();
01218   t_cHadronEneHC7x7_2   ->clear();
01219   t_cHadronEneHC7x7_3   ->clear();
01220   t_nHadronEneHC7x7     ->clear();
01221   t_photonEneHC7x7      ->clear();
01222   t_eleEneHC7x7         ->clear();
01223   t_muEneHC7x7          ->clear();
01224 
01225   t_maxNearPR           ->clear();
01226   t_cHadronEneR         ->clear();
01227   t_cHadronEneR_1       ->clear();
01228   t_cHadronEneR_2       ->clear();
01229   t_cHadronEneR_3       ->clear();
01230   t_nHadronEneR         ->clear();
01231   t_photonEneR          ->clear();
01232   t_eleEneR             ->clear();
01233   t_muEneR              ->clear();
01234 
01235   t_maxNearPIsoR        ->clear();
01236   t_cHadronEneIsoR      ->clear();
01237   t_cHadronEneIsoR_1    ->clear();
01238   t_cHadronEneIsoR_2    ->clear();
01239   t_cHadronEneIsoR_3    ->clear();
01240   t_nHadronEneIsoR      ->clear();
01241   t_photonEneIsoR       ->clear();
01242   t_eleEneIsoR          ->clear();
01243   t_muEneIsoR           ->clear();
01244 
01245   t_maxNearPHCR         ->clear();
01246   t_cHadronEneHCR       ->clear();
01247   t_cHadronEneHCR_1     ->clear();
01248   t_cHadronEneHCR_2     ->clear();
01249   t_cHadronEneHCR_3     ->clear();
01250   t_nHadronEneHCR       ->clear();
01251   t_photonEneHCR        ->clear();
01252   t_eleEneHCR           ->clear();
01253   t_muEneHCR            ->clear();
01254 
01255   t_maxNearPIsoHCR      ->clear();
01256   t_cHadronEneIsoHCR    ->clear();
01257   t_cHadronEneIsoHCR_1  ->clear();
01258   t_cHadronEneIsoHCR_2  ->clear();
01259   t_cHadronEneIsoHCR_3  ->clear();
01260   t_nHadronEneIsoHCR    ->clear();
01261   t_photonEneIsoHCR     ->clear();
01262   t_eleEneIsoHCR        ->clear();
01263   t_muEneIsoHCR         ->clear();
01264 
01265   t_L1Decision        ->clear();
01266   t_L1CenJetPt        ->clear();
01267   t_L1CenJetEta       ->clear();    
01268   t_L1CenJetPhi       ->clear();
01269   t_L1FwdJetPt        ->clear();
01270   t_L1FwdJetEta       ->clear();
01271   t_L1FwdJetPhi       ->clear();
01272   t_L1TauJetPt        ->clear();
01273   t_L1TauJetEta       ->clear();     
01274   t_L1TauJetPhi       ->clear();
01275   t_L1MuonPt          ->clear();
01276   t_L1MuonEta         ->clear();     
01277   t_L1MuonPhi         ->clear();
01278   t_L1IsoEMPt         ->clear();
01279   t_L1IsoEMEta        ->clear();
01280   t_L1IsoEMPhi        ->clear();
01281   t_L1NonIsoEMPt      ->clear();
01282   t_L1NonIsoEMEta     ->clear();
01283   t_L1NonIsoEMPhi     ->clear();
01284   t_L1METPt           ->clear();
01285   t_L1METEta          ->clear();
01286   t_L1METPhi          ->clear();
01287 }
01288 
01289 //define this as a plug-in
01290 DEFINE_FWK_MODULE(IsolatedGenParticles);