CMS 3D CMS Logo

Public Member Functions | Private Member Functions | Private Attributes | Static Private Attributes

IsolatedTracksHcalScale Class Reference

#include <IsolatedTracksHcalScale.h>

Inheritance diagram for IsolatedTracksHcalScale:
edm::EDAnalyzer edm::EDConsumerBase

List of all members.

Public Member Functions

 IsolatedTracksHcalScale (const edm::ParameterSet &)
 ~IsolatedTracksHcalScale ()

Private Member Functions

void analyze (const edm::Event &, const edm::EventSetup &)
void beginJob ()
void clearTreeVectors ()
void endJob ()

Private Attributes

double a_charIsoR
double a_coneR
double a_mipR
double a_neutIsoR
const MagneticFieldbField
bool doMC
edm::Service< TFileServicefs
double genPartEtaBins [4]
bool initL1
std::string minQuality
int myverbose
int nEventProc
spr::trackSelectionParameters selectionParameters
int t_Bunch
std::vector< double > * t_conehmaxNearP
std::vector< double > * t_e11x11_20Sig
std::vector< double > * t_e15x15_20Sig
std::vector< double > * t_eECALDR
std::vector< double > * t_eECALDR_1
std::vector< double > * t_eECALDR_2
std::vector< double > * t_eHCALDR
std::vector< double > * t_eHCALDRHB
std::vector< double > * t_eMipDR
std::vector< double > * t_eMipDR_1
std::vector< double > * t_eMipDR_2
int t_EvtNo
std::vector< double > * t_hCone
std::vector< double > * t_hConeHB
std::vector< double > * t_hsim
std::vector< double > * t_hsimInfoCharHad
std::vector< double > * t_hsimInfoMatched
std::vector< int > * t_hsimInfoNCharHad
std::vector< double > * t_hsimInfoNeutHad
std::vector< int > * t_hsimInfoNMatched
std::vector< int > * t_hsimInfoNNeutHad
std::vector< int > * t_hsimInfoNPhoton
std::vector< int > * t_hsimInfoNRest
std::vector< int > * t_hsimInfoNTotal
std::vector< double > * t_hsimInfoPdgMatched
std::vector< double > * t_hsimInfoPhoton
std::vector< double > * t_hsimInfoRest
std::vector< double > * t_hsimInfoTotal
int t_Lumi
std::vector< int > * t_nSimHits
int t_nTracks
int t_RunNo
std::vector< double > * t_trackEta
std::vector< double > * t_trackHcalEta
std::vector< double > * t_trackHcalPhi
std::vector< double > * t_trackP
std::vector< double > * t_trackPhi
std::vector< double > * t_trackPt
std::string theTrackQuality
double tMaxE_
double tMinE_
TTree * tree

Static Private Attributes

static const size_t NEtaBins = 3

Detailed Description

Definition at line 112 of file IsolatedTracksHcalScale.h.


Constructor & Destructor Documentation

IsolatedTracksHcalScale::IsolatedTracksHcalScale ( const edm::ParameterSet iConfig) [explicit]

Definition at line 17 of file IsolatedTracksHcalScale.cc.

References a_charIsoR, a_coneR, a_mipR, a_neutIsoR, gather_cfg::cout, doMC, edm::ParameterSet::getUntrackedParameter(), initL1, spr::trackSelectionParameters::maxChi2, spr::trackSelectionParameters::maxDpOverP, spr::trackSelectionParameters::maxDxyPV, spr::trackSelectionParameters::maxDzPV, spr::trackSelectionParameters::maxInMiss, spr::trackSelectionParameters::maxOutMiss, spr::trackSelectionParameters::minLayerCrossed, spr::trackSelectionParameters::minOuterHit, spr::trackSelectionParameters::minPt, spr::trackSelectionParameters::minQuality, myverbose, reco::TrackBase::qualityByName(), selectionParameters, AlCaHLTBitMon_QueryRunRegistry::string, theTrackQuality, tMaxE_, and tMinE_.

                                                                               {

  //now do what ever initialization is needed
  doMC                                = iConfig.getUntrackedParameter<bool>("DoMC", false); 
  myverbose                           = iConfig.getUntrackedParameter<int>("Verbosity", 5          );
  theTrackQuality                     = iConfig.getUntrackedParameter<std::string>("TrackQuality","highPurity");
  reco::TrackBase::TrackQuality trackQuality_=reco::TrackBase::qualityByName(theTrackQuality);
  selectionParameters.minPt           = iConfig.getUntrackedParameter<double>("MinTrackPt", 10.0);
  selectionParameters.minQuality      = trackQuality_;
  selectionParameters.maxDxyPV        = iConfig.getUntrackedParameter<double>("MaxDxyPV", 0.2);
  selectionParameters.maxDzPV         = iConfig.getUntrackedParameter<double>("MaxDzPV",  5.0);
  selectionParameters.maxChi2         = iConfig.getUntrackedParameter<double>("MaxChi2",  5.0);
  selectionParameters.maxDpOverP      = iConfig.getUntrackedParameter<double>("MaxDpOverP",  0.1);
  selectionParameters.minOuterHit     = iConfig.getUntrackedParameter<int>("MinOuterHit", 4);
  selectionParameters.minLayerCrossed = iConfig.getUntrackedParameter<int>("MinLayerCrossed", 8);
  selectionParameters.maxInMiss       = iConfig.getUntrackedParameter<int>("MaxInMiss", 0);
  selectionParameters.maxOutMiss      = iConfig.getUntrackedParameter<int>("MaxOutMiss", 0);
  a_coneR                             = iConfig.getUntrackedParameter<double>("ConeRadius",34.98);
  a_charIsoR                          = a_coneR + 28.9;
  a_neutIsoR                          = a_charIsoR*0.726;
  a_mipR                              = iConfig.getUntrackedParameter<double>("ConeRadiusMIP",14.0);
  tMinE_                              = iConfig.getUntrackedParameter<double>("TimeMinCutECAL", -500.);
  tMaxE_                              = iConfig.getUntrackedParameter<double>("TimeMaxCutECAL",  500.);
  
  if (myverbose>=0) {
    std::cout <<"Parameters read from config file \n" 
              <<" doMC "              << doMC
              <<"\t myverbose "       << myverbose        
              <<"\t minPt "           << selectionParameters.minPt   
              <<"\t theTrackQuality " << theTrackQuality
              <<"\t minQuality "      << selectionParameters.minQuality
              <<"\t maxDxyPV "        << selectionParameters.maxDxyPV          
              <<"\t maxDzPV "         << selectionParameters.maxDzPV          
              <<"\t maxChi2 "         << selectionParameters.maxChi2          
              <<"\t maxDpOverP "      << selectionParameters.maxDpOverP
              <<"\t minOuterHit "     << selectionParameters.minOuterHit
              <<"\t minLayerCrossed " << selectionParameters.minLayerCrossed
              <<"\t maxInMiss "       << selectionParameters.maxInMiss
              <<"\t maxOutMiss "      << selectionParameters.maxOutMiss
              <<"\t a_coneR "         << a_coneR          
              <<"\t a_charIsoR "      << a_charIsoR          
              <<"\t a_neutIsoR "      << a_neutIsoR          
              <<"\t a_mipR "          << a_mipR 
              <<"\t time Range ("     << tMinE_ << ":" << tMaxE_ << ")"
              << std::endl;
  }
  initL1 = false;
  
}
IsolatedTracksHcalScale::~IsolatedTracksHcalScale ( )

Definition at line 67 of file IsolatedTracksHcalScale.cc.

{}

Member Function Documentation

void IsolatedTracksHcalScale::analyze ( const edm::Event iEvent,
const edm::EventSetup iSetup 
) [private, virtual]

Implements edm::EDAnalyzer.

Definition at line 69 of file IsolatedTracksHcalScale.cc.

References a_charIsoR, a_coneR, a_mipR, a_neutIsoR, bField, edm::EventBase::bunchCrossing(), spr::chargeIsolationCone(), clearTreeVectors(), gather_cfg::cout, doMC, spr::eCone_ecal(), spr::eCone_hcal(), spr::eECALmatrix(), edm::EventID::event(), edm::EventSetup::get(), edm::Event::getByLabel(), spr::goodTrack(), HcalBarrel, edm::EventBase::id(), HcalDetId::ieta(), HcalDetId::iphi(), edm::HandleBase::isValid(), edm::EventBase::luminosityBlock(), reco::TrackBase::momentum(), myverbose, nEventProc, reco::TrackBase::p(), edm::ESHandle< T >::product(), edm::Handle< T >::product(), spr::propagateCALO(), reco::TrackBase::pt(), edm::EventID::run(), selectionParameters, t_Bunch, t_conehmaxNearP, t_e11x11_20Sig, t_e15x15_20Sig, t_eECALDR, t_eECALDR_1, t_eECALDR_2, t_eHCALDR, t_eHCALDRHB, t_eMipDR, t_eMipDR_1, t_eMipDR_2, t_EvtNo, t_hCone, t_hConeHB, t_hsim, t_hsimInfoCharHad, t_hsimInfoMatched, t_hsimInfoNCharHad, t_hsimInfoNeutHad, t_hsimInfoNMatched, t_hsimInfoNNeutHad, t_hsimInfoNPhoton, t_hsimInfoNRest, t_hsimInfoNTotal, t_hsimInfoPdgMatched, t_hsimInfoPhoton, t_hsimInfoRest, t_hsimInfoTotal, t_Lumi, t_nSimHits, t_RunNo, t_trackEta, t_trackHcalEta, t_trackHcalPhi, t_trackP, t_trackPhi, t_trackPt, theTrackQuality, tMaxE_, tMinE_, tree, x, detailsBasic3DVector::y, and z.

                                                                                         {

  edm::ESHandle<MagneticField> bFieldH;
  iSetup.get<IdealMagneticFieldRecord>().get(bFieldH);
  bField = bFieldH.product();

  // get handles to calogeometry and calotopology
  edm::ESHandle<CaloGeometry> pG;
  iSetup.get<CaloGeometryRecord>().get(pG);
  const CaloGeometry* geo = pG.product();

  edm::ESHandle<CaloTopology> theCaloTopology;
  iSetup.get<CaloTopologyRecord>().get(theCaloTopology); 
  const CaloTopology *caloTopology = theCaloTopology.product();
  
  /*  
  edm::ESHandle<HcalTopology> htopo;
  iSetup.get<IdealGeometryRecord>().get(htopo);
  const HcalTopology* theHBHETopology = htopo.product();
  */

  // Retrieve the good/bad ECAL channels from the DB
  edm::ESHandle<EcalChannelStatus> ecalChStatus;
  iSetup.get<EcalChannelStatusRcd>().get(ecalChStatus);
  const EcalChannelStatus* theEcalChStatus = ecalChStatus.product();

  /*  
  // Retrieve trigger tower map
  edm::ESHandle<EcalTrigTowerConstituentsMap> hTtmap;
  iSetup.get<IdealGeometryRecord>().get(hTtmap);
  const EcalTrigTowerConstituentsMap& ttMap = *hTtmap;
  */

  clearTreeVectors();

  nEventProc++;

  t_RunNo = iEvent.id().run();
  t_EvtNo = iEvent.id().event();
  t_Lumi  = iEvent.luminosityBlock();
  t_Bunch = iEvent.bunchCrossing();
  if (myverbose>0) std::cout << nEventProc << " Run " << t_RunNo << " Event " << t_EvtNo << " Lumi " << t_Lumi << " Bunch " << t_Bunch << std::endl;

  edm::Handle<reco::TrackCollection> trkCollection;
  iEvent.getByLabel("generalTracks", trkCollection);

  edm::Handle<reco::VertexCollection> recVtxs;
  iEvent.getByLabel("offlinePrimaryVertices",recVtxs);  

  // Get the beamspot
  edm::Handle<reco::BeamSpot> beamSpotH;
  iEvent.getByLabel("offlineBeamSpot", beamSpotH);

  math::XYZPoint leadPV(0,0,0);
  if (recVtxs->size()>0 && !((*recVtxs)[0].isFake())) {
    leadPV = math::XYZPoint( (*recVtxs)[0].x(),(*recVtxs)[0].y(), (*recVtxs)[0].z() );
  } else if (beamSpotH.isValid()) {
    leadPV = beamSpotH->position();
  }

  if (myverbose>0) {
    std::cout << "Primary Vertex " << leadPV;
    if (beamSpotH.isValid()) std::cout << " Beam Spot " << beamSpotH->position();
    std::cout << std::endl;
  }

  std::vector<spr::propagatedTrackDirection> trkCaloDirections;
  spr::propagateCALO(trkCollection, geo, bField, theTrackQuality, trkCaloDirections, (myverbose>2));
  std::vector<spr::propagatedTrackDirection>::const_iterator trkDetItr;
  
  edm::Handle<EcalRecHitCollection> barrelRecHitsHandle;
  edm::Handle<EcalRecHitCollection> endcapRecHitsHandle;
  iEvent.getByLabel("ecalRecHit","EcalRecHitsEB",barrelRecHitsHandle);
  iEvent.getByLabel("ecalRecHit","EcalRecHitsEE",endcapRecHitsHandle);

  edm::Handle<HBHERecHitCollection> hbhe;
  iEvent.getByLabel("hbhereco",hbhe);
  const HBHERecHitCollection Hithbhe = *(hbhe.product());

  //get Handles to SimTracks and SimHits
  edm::Handle<edm::SimTrackContainer> SimTk;
  edm::SimTrackContainer::const_iterator simTrkItr;
  edm::Handle<edm::SimVertexContainer> SimVtx;
  edm::SimVertexContainer::const_iterator vtxItr = SimVtx->begin();

  //get Handles to PCaloHitContainers of eb/ee/hbhe
  edm::Handle<edm::PCaloHitContainer> pcaloeb;
  edm::Handle<edm::PCaloHitContainer> pcaloee;
  edm::Handle<edm::PCaloHitContainer> pcalohh;

  //associates tracker rechits/simhits to a track
  TrackerHitAssociator* associate=0;
 
  if (doMC) {
    iEvent.getByLabel("g4SimHits",SimTk);
    iEvent.getByLabel("g4SimHits",SimVtx);
    iEvent.getByLabel("g4SimHits", "EcalHitsEB", pcaloeb);
    iEvent.getByLabel("g4SimHits", "EcalHitsEE", pcaloee);
    iEvent.getByLabel("g4SimHits", "HcalHits", pcalohh);
    associate = new TrackerHitAssociator(iEvent);
  }
 
  unsigned int nTracks=0;
  for (trkDetItr = trkCaloDirections.begin(),nTracks=0; trkDetItr != trkCaloDirections.end(); trkDetItr++,nTracks++){
    const reco::Track* pTrack = &(*(trkDetItr->trkItr));
    if (spr::goodTrack(pTrack,leadPV,selectionParameters,(myverbose>2)) && trkDetItr->okECAL && trkDetItr->okHCAL) {
      int                nRH_eMipDR=0, nRH_eDR=0, nNearTRKs=0, nRecHitsCone=-99;
      double             distFromHotCell=-99.0, distFromHotCell2=-99.0;
      int                ietaHotCell=-99, iphiHotCell=-99;
      int                ietaHotCell2=-99, iphiHotCell2=-99;
      GlobalPoint        gposHotCell(0.,0.,0.), gposHotCell2(0.,0.,0.);
      std::vector<DetId> coneRecHitDetIds, coneRecHitDetIds2;
      std::pair<double, bool> e11x11_20SigP, e15x15_20SigP;
      double hCone = spr::eCone_hcal(geo, hbhe, trkDetItr->pointHCAL, 
                                     trkDetItr->pointECAL,
                                     a_coneR, trkDetItr->directionHCAL, 
                                     nRecHitsCone, coneRecHitDetIds,
                                     distFromHotCell, ietaHotCell, iphiHotCell,
                                     gposHotCell, -1);
      double hConeHB = spr::eCone_hcal(geo, hbhe, trkDetItr->pointHCAL, 
                                       trkDetItr->pointECAL,
                                       a_coneR, trkDetItr->directionHCAL, 
                                       nRecHitsCone, coneRecHitDetIds,
                                       distFromHotCell, ietaHotCell,
                                       iphiHotCell, gposHotCell,
                                       (int)(HcalBarrel));
      double eHCALDR = spr::eCone_hcal(geo, hbhe, trkDetItr->pointHCAL, 
                                       trkDetItr->pointECAL, a_charIsoR, 
                                       trkDetItr->directionHCAL, nRecHitsCone,
                                       coneRecHitDetIds2, distFromHotCell2,
                                       ietaHotCell2, iphiHotCell2, gposHotCell2,
                                       -1);
      double eHCALDRHB = spr::eCone_hcal(geo, hbhe, trkDetItr->pointHCAL, 
                                         trkDetItr->pointECAL, a_charIsoR, 
                                         trkDetItr->directionHCAL, nRecHitsCone,
                                         coneRecHitDetIds2, distFromHotCell2,
                                         ietaHotCell2, iphiHotCell2,
                                         gposHotCell2, (int)(HcalBarrel));

      double conehmaxNearP = spr::chargeIsolationCone(nTracks, trkCaloDirections, a_charIsoR, nNearTRKs, (myverbose>3));

      double eMipDR  = spr::eCone_ecal(geo, barrelRecHitsHandle, 
                                       endcapRecHitsHandle,trkDetItr->pointHCAL,
                                       trkDetItr->pointECAL, a_mipR, 
                                       trkDetItr->directionECAL, nRH_eMipDR);
      double eECALDR = spr::eCone_ecal(geo, barrelRecHitsHandle,  
                                       endcapRecHitsHandle,trkDetItr->pointHCAL,
                                       trkDetItr->pointECAL, a_neutIsoR, 
                                       trkDetItr->directionECAL, nRH_eDR);
      double eMipDR_1= spr::eCone_ecal(geo, barrelRecHitsHandle, 
                                       endcapRecHitsHandle,trkDetItr->pointHCAL,
                                       trkDetItr->pointECAL, a_mipR, 
                                       trkDetItr->directionECAL, nRH_eMipDR,
                                       0.030, 0.150);
      double eECALDR_1=spr::eCone_ecal(geo, barrelRecHitsHandle,
                                       endcapRecHitsHandle,trkDetItr->pointHCAL,
                                       trkDetItr->pointECAL, a_neutIsoR,
                                       trkDetItr->directionECAL, nRH_eDR,
                                       0.030, 0.150);
      double eMipDR_2= spr::eCone_ecal(geo, barrelRecHitsHandle,
                                       endcapRecHitsHandle,trkDetItr->pointHCAL,
                                       trkDetItr->pointECAL, a_mipR,
                                       trkDetItr->directionECAL, nRH_eMipDR,
                                       0.060, 0.300);
      double eECALDR_2=spr::eCone_ecal(geo, barrelRecHitsHandle,
                                       endcapRecHitsHandle,trkDetItr->pointHCAL,
                                       trkDetItr->pointECAL, a_neutIsoR,
                                       trkDetItr->directionECAL, nRH_eDR,
                                       0.060, 0.300);

      HcalDetId closestCell = (HcalDetId)(trkDetItr->detIdHCAL);

      edm::ESHandle<EcalSeverityLevelAlgo> sevlv;
      iSetup.get<EcalSeverityLevelAlgoRcd>().get(sevlv);

      e11x11_20SigP = spr::eECALmatrix(trkDetItr->detIdECAL,barrelRecHitsHandle,endcapRecHitsHandle, *theEcalChStatus, geo, caloTopology,sevlv.product(),5,5,   0.060,  0.300, tMinE_,tMaxE_);
      e15x15_20SigP = spr::eECALmatrix(trkDetItr->detIdECAL,barrelRecHitsHandle,endcapRecHitsHandle, *theEcalChStatus, geo, caloTopology,sevlv.product(),7,7,   0.060,  0.300, tMinE_,tMaxE_);
      
      // Fill the tree Branches here 
      t_trackP                ->push_back( pTrack->p() );
      t_trackPt               ->push_back( pTrack->pt() );
      t_trackEta              ->push_back( pTrack->momentum().eta() );
      t_trackPhi              ->push_back( pTrack->momentum().phi() );
      t_trackHcalEta          ->push_back( closestCell.ieta() );
      t_trackHcalPhi          ->push_back( closestCell.iphi() );
      t_hCone                 ->push_back( hCone);
      t_conehmaxNearP         ->push_back( conehmaxNearP);
      t_eMipDR                ->push_back( eMipDR);
      t_eECALDR               ->push_back( eECALDR);
      t_eHCALDR               ->push_back( eHCALDR);
      t_e11x11_20Sig          ->push_back( e11x11_20SigP.first );
      t_e15x15_20Sig          ->push_back( e15x15_20SigP.first );
      t_eMipDR_1              ->push_back( eMipDR_1);
      t_eECALDR_1             ->push_back( eECALDR_1);
      t_eMipDR_2              ->push_back( eMipDR_2);
      t_eECALDR_2             ->push_back( eECALDR_2);
      t_hConeHB               ->push_back( hConeHB);
      t_eHCALDRHB             ->push_back( eHCALDRHB);

      if (myverbose > 0) {
        std::cout << "Track p " << pTrack->p() << " pt " << pTrack->pt()
                  << " eta " << pTrack->momentum().eta() << " phi "
                  << pTrack->momentum().phi() << " ieta/iphi ("
                  << closestCell.ieta() << ", " << closestCell.iphi() 
                  << ") Energy in cone " << hCone << " Charge Isolation "
                  << conehmaxNearP << " eMIP (" << eMipDR << ", "
                  << eMipDR_1 << ", " << eMipDR_2 << ")"
                  << " Neutral isolation (ECAL) (" << eECALDR-eMipDR << ", "
                  << eECALDR_1-eMipDR_1 << ", " << eECALDR_2-eMipDR_2 << ")"
                  << " (ECAL NxN) " << e15x15_20SigP.first-e11x11_20SigP.first
                  << " (HCAL) " << eHCALDR-hCone << std::endl;
      }

      if (doMC) {
        int nSimHits = -999;
        double hsim;
        std::map<std::string, double> hsimInfo;
        std::vector<int> multiplicity;
        hsim = spr::eCone_hcal(geo, pcalohh, trkDetItr->pointHCAL, 
                               trkDetItr->pointECAL, a_coneR, 
                               trkDetItr->directionHCAL, nSimHits);
        hsimInfo = spr::eHCALSimInfoCone(iEvent, pcalohh, SimTk, SimVtx, 
                                         pTrack, *associate, geo, 
                                         trkDetItr->pointHCAL, 
                                         trkDetItr->pointECAL, a_coneR,
                                         trkDetItr->directionHCAL,
                                         multiplicity);

        t_hsimInfoMatched   ->push_back(hsimInfo["eMatched"   ]);
        t_hsimInfoRest      ->push_back(hsimInfo["eRest"      ]);
        t_hsimInfoPhoton    ->push_back(hsimInfo["eGamma"     ]);
        t_hsimInfoNeutHad   ->push_back(hsimInfo["eNeutralHad"]);
        t_hsimInfoCharHad   ->push_back(hsimInfo["eChargedHad"]);
        t_hsimInfoPdgMatched->push_back(hsimInfo["pdgMatched" ]);
        t_hsimInfoTotal     ->push_back(hsimInfo["eTotal"     ]);

        t_hsimInfoNMatched  ->push_back(multiplicity.at(0));
        t_hsimInfoNTotal    ->push_back(multiplicity.at(1));
        t_hsimInfoNNeutHad  ->push_back(multiplicity.at(2));
        t_hsimInfoNCharHad  ->push_back(multiplicity.at(3));
        t_hsimInfoNPhoton   ->push_back(multiplicity.at(4));
        t_hsimInfoNRest     ->push_back(multiplicity.at(5));

        t_hsim              ->push_back(hsim                   );
        t_nSimHits          ->push_back(nSimHits               );

        if (myverbose > 0) {
          std::cout << "Matched (E) " << hsimInfo["eMatched"] << " (N) "
                    << multiplicity.at(0) << " Rest (E) " << hsimInfo["eRest"] 
                    << " (N) " << multiplicity.at(1) << " Gamma (E) "
                    << hsimInfo["eGamma"] << " (N) "  << multiplicity.at(2) 
                    << " Neutral Had (E) " << hsimInfo["eNeutralHad"]  
                    << " (N) "  << multiplicity.at(3) << " Charged Had (E) "
                    << hsimInfo["eChargedHad"] << " (N) " << multiplicity.at(4)
                    << " Total (E) " << hsimInfo["eTotal"] << " (N) "
                    << multiplicity.at(5) << " PDG " << hsimInfo["pdgMatched"] 
                    << " Total E " << hsim << " NHit " << nSimHits <<std::endl;
        }
      }
    }
  }

  //  delete associate;
  if (associate) delete associate;
  tree->Fill();
}
void IsolatedTracksHcalScale::beginJob ( void  ) [private, virtual]

Reimplemented from edm::EDAnalyzer.

Definition at line 336 of file IsolatedTracksHcalScale.cc.

References doMC, fs, nEventProc, t_Bunch, t_conehmaxNearP, t_e11x11_20Sig, t_e15x15_20Sig, t_eECALDR, t_eECALDR_1, t_eECALDR_2, t_eHCALDR, t_eHCALDRHB, t_eMipDR, t_eMipDR_1, t_eMipDR_2, t_hCone, t_hConeHB, t_hsim, t_hsimInfoCharHad, t_hsimInfoMatched, t_hsimInfoNCharHad, t_hsimInfoNeutHad, t_hsimInfoNMatched, t_hsimInfoNNeutHad, t_hsimInfoNPhoton, t_hsimInfoNRest, t_hsimInfoNTotal, t_hsimInfoPdgMatched, t_hsimInfoPhoton, t_hsimInfoRest, t_hsimInfoTotal, t_Lumi, t_nSimHits, t_RunNo, t_trackEta, t_trackHcalEta, t_trackHcalPhi, t_trackP, t_trackPhi, t_trackPt, and tree.

                                       {

  nEventProc=0;


  tree = fs->make<TTree>("tree", "tree");
  tree->SetAutoSave(10000);

  tree->Branch("t_RunNo"              ,&t_RunNo               ,"t_RunNo/I");
  tree->Branch("t_Lumi"               ,&t_Lumi                ,"t_Lumi/I");
  tree->Branch("t_Bunch"              ,&t_Bunch               ,"t_Bunch/I");

  t_trackP              = new std::vector<double>();
  t_trackPt             = new std::vector<double>();
  t_trackEta            = new std::vector<double>();
  t_trackPhi            = new std::vector<double>();
  t_trackHcalEta        = new std::vector<double>();
  t_trackHcalPhi        = new std::vector<double>();
  t_hCone               = new std::vector<double>();
  t_conehmaxNearP       = new std::vector<double>();
  t_eMipDR              = new std::vector<double>();
  t_eECALDR             = new std::vector<double>();
  t_eHCALDR             = new std::vector<double>();
  t_e11x11_20Sig        = new std::vector<double>();
  t_e15x15_20Sig        = new std::vector<double>();
  t_eMipDR_1            = new std::vector<double>();
  t_eECALDR_1           = new std::vector<double>();
  t_eMipDR_2            = new std::vector<double>();
  t_eECALDR_2           = new std::vector<double>();
  t_hConeHB             = new std::vector<double>();
  t_eHCALDRHB           = new std::vector<double>();

  tree->Branch("t_trackP",            "vector<double>", &t_trackP           );
  tree->Branch("t_trackPt",           "vector<double>", &t_trackPt          );
  tree->Branch("t_trackEta",          "vector<double>", &t_trackEta         );
  tree->Branch("t_trackPhi",          "vector<double>", &t_trackPhi         );
  tree->Branch("t_trackHcalEta",      "vector<double>", &t_trackHcalEta     );
  tree->Branch("t_trackHcalPhi",      "vector<double>", &t_trackHcalPhi     );
  tree->Branch("t_hCone",             "vector<double>", &t_hCone            );
  tree->Branch("t_conehmaxNearP",     "vector<double>", &t_conehmaxNearP    );
  tree->Branch("t_eMipDR",            "vector<double>", &t_eMipDR           );
  tree->Branch("t_eECALDR",           "vector<double>", &t_eECALDR          );
  tree->Branch("t_eHCALDR",           "vector<double>", &t_eHCALDR          );
  tree->Branch("t_e11x11_20Sig",      "vector<double>", &t_e11x11_20Sig     );
  tree->Branch("t_e15x15_20Sig",      "vector<double>", &t_e15x15_20Sig     );
  tree->Branch("t_eMipDR_1",          "vector<double>", &t_eMipDR_1         );
  tree->Branch("t_eECALDR_1",         "vector<double>", &t_eECALDR_1        );
  tree->Branch("t_eMipDR_2",          "vector<double>", &t_eMipDR_2         );
  tree->Branch("t_eECALDR_2",         "vector<double>", &t_eECALDR_2        );
  tree->Branch("t_hConeHB",           "vector<double>", &t_hConeHB          );
  tree->Branch("t_eHCALDRHB",         "vector<double>", &t_eHCALDRHB        );

  if (doMC) {
    t_hsimInfoMatched    = new std::vector<double>();
    t_hsimInfoRest       = new std::vector<double>();
    t_hsimInfoPhoton     = new std::vector<double>();
    t_hsimInfoNeutHad    = new std::vector<double>();
    t_hsimInfoCharHad    = new std::vector<double>();
    t_hsimInfoPdgMatched = new std::vector<double>();
    t_hsimInfoTotal      = new std::vector<double>();
    t_hsimInfoNMatched   = new std::vector<int>();
    t_hsimInfoNTotal     = new std::vector<int>();
    t_hsimInfoNNeutHad   = new std::vector<int>();
    t_hsimInfoNCharHad   = new std::vector<int>();
    t_hsimInfoNPhoton    = new std::vector<int>();
    t_hsimInfoNRest      = new std::vector<int>();
    t_hsim               = new std::vector<double>();
    t_nSimHits           = new std::vector<int>();

    tree->Branch("t_hsimInfoMatched",    "vector<double>", &t_hsimInfoMatched    );
    tree->Branch("t_hsimInfoRest",       "vector<double>", &t_hsimInfoRest    );
    tree->Branch("t_hsimInfoPhoton",     "vector<double>", &t_hsimInfoPhoton    );
    tree->Branch("t_hsimInfoNeutHad",    "vector<double>", &t_hsimInfoNeutHad    );
    tree->Branch("t_hsimInfoCharHad",    "vector<double>", &t_hsimInfoCharHad    );
    tree->Branch("t_hsimInfoPdgMatched", "vector<double>", &t_hsimInfoPdgMatched );
    tree->Branch("t_hsimInfoTotal",      "vector<double>", &t_hsimInfoTotal    );
    tree->Branch("t_hsimInfoNMatched",   "vector<int>",    &t_hsimInfoNMatched    );
    tree->Branch("t_hsimInfoNTotal",     "vector<int>",    &t_hsimInfoNTotal    );
    tree->Branch("t_hsimInfoNNeutHad",   "vector<int>",    &t_hsimInfoNNeutHad    );
    tree->Branch("t_hsimInfoNCharHad",   "vector<int>",    &t_hsimInfoNCharHad    );
    tree->Branch("t_hsimInfoNPhoton",    "vector<int>",    &t_hsimInfoNPhoton    );
    tree->Branch("t_hsimInfoNRest",      "vector<int>",    &t_hsimInfoNRest    );
    tree->Branch("t_hsim",               "vector<double>", &t_hsim    );
    tree->Branch("t_nSimHits",           "vector<int>",    &t_nSimHits    );
  }
}
void IsolatedTracksHcalScale::clearTreeVectors ( ) [private]
void IsolatedTracksHcalScale::endJob ( void  ) [private, virtual]

Reimplemented from edm::EDAnalyzer.

Definition at line 424 of file IsolatedTracksHcalScale.cc.

References gather_cfg::cout, and nEventProc.

                                     {

  std::cout << "Number of Events Processed " << nEventProc << std::endl;
}

Member Data Documentation

Definition at line 132 of file IsolatedTracksHcalScale.h.

Referenced by analyze(), and IsolatedTracksHcalScale().

Definition at line 132 of file IsolatedTracksHcalScale.h.

Referenced by analyze(), and IsolatedTracksHcalScale().

Definition at line 132 of file IsolatedTracksHcalScale.h.

Referenced by analyze(), and IsolatedTracksHcalScale().

Definition at line 132 of file IsolatedTracksHcalScale.h.

Referenced by analyze(), and IsolatedTracksHcalScale().

Definition at line 155 of file IsolatedTracksHcalScale.h.

Referenced by analyze().

Definition at line 176 of file IsolatedTracksHcalScale.h.

Referenced by beginJob().

Definition at line 157 of file IsolatedTracksHcalScale.h.

Definition at line 128 of file IsolatedTracksHcalScale.h.

Referenced by IsolatedTracksHcalScale().

std::string IsolatedTracksHcalScale::minQuality [private]

Definition at line 130 of file IsolatedTracksHcalScale.h.

Definition at line 129 of file IsolatedTracksHcalScale.h.

Referenced by analyze(), and IsolatedTracksHcalScale().

const size_t IsolatedTracksHcalScale::NEtaBins = 3 [static, private]

Definition at line 159 of file IsolatedTracksHcalScale.h.

Definition at line 149 of file IsolatedTracksHcalScale.h.

Referenced by analyze(), beginJob(), and endJob().

Definition at line 131 of file IsolatedTracksHcalScale.h.

Referenced by analyze(), and IsolatedTracksHcalScale().

Definition at line 163 of file IsolatedTracksHcalScale.h.

Referenced by analyze(), and beginJob().

std::vector<double> * IsolatedTracksHcalScale::t_conehmaxNearP [private]

Definition at line 166 of file IsolatedTracksHcalScale.h.

Referenced by analyze(), beginJob(), and clearTreeVectors().

std::vector<double>* IsolatedTracksHcalScale::t_e11x11_20Sig [private]

Definition at line 167 of file IsolatedTracksHcalScale.h.

Referenced by analyze(), beginJob(), and clearTreeVectors().

std::vector<double> * IsolatedTracksHcalScale::t_e15x15_20Sig [private]

Definition at line 167 of file IsolatedTracksHcalScale.h.

Referenced by analyze(), beginJob(), and clearTreeVectors().

std::vector<double> * IsolatedTracksHcalScale::t_eECALDR [private]

Definition at line 166 of file IsolatedTracksHcalScale.h.

Referenced by analyze(), beginJob(), and clearTreeVectors().

std::vector<double> * IsolatedTracksHcalScale::t_eECALDR_1 [private]

Definition at line 168 of file IsolatedTracksHcalScale.h.

Referenced by analyze(), beginJob(), and clearTreeVectors().

std::vector<double> * IsolatedTracksHcalScale::t_eECALDR_2 [private]

Definition at line 168 of file IsolatedTracksHcalScale.h.

Referenced by analyze(), beginJob(), and clearTreeVectors().

std::vector<double> * IsolatedTracksHcalScale::t_eHCALDR [private]

Definition at line 165 of file IsolatedTracksHcalScale.h.

Referenced by analyze(), beginJob(), and clearTreeVectors().

std::vector<double> * IsolatedTracksHcalScale::t_eHCALDRHB [private]

Definition at line 169 of file IsolatedTracksHcalScale.h.

Referenced by analyze(), beginJob(), and clearTreeVectors().

std::vector<double> * IsolatedTracksHcalScale::t_eMipDR [private]

Definition at line 166 of file IsolatedTracksHcalScale.h.

Referenced by analyze(), beginJob(), and clearTreeVectors().

std::vector<double>* IsolatedTracksHcalScale::t_eMipDR_1 [private]

Definition at line 168 of file IsolatedTracksHcalScale.h.

Referenced by analyze(), beginJob(), and clearTreeVectors().

std::vector<double> * IsolatedTracksHcalScale::t_eMipDR_2 [private]

Definition at line 168 of file IsolatedTracksHcalScale.h.

Referenced by analyze(), beginJob(), and clearTreeVectors().

Definition at line 163 of file IsolatedTracksHcalScale.h.

Referenced by analyze().

std::vector<double>* IsolatedTracksHcalScale::t_hCone [private]

Definition at line 166 of file IsolatedTracksHcalScale.h.

Referenced by analyze(), beginJob(), and clearTreeVectors().

std::vector<double>* IsolatedTracksHcalScale::t_hConeHB [private]

Definition at line 169 of file IsolatedTracksHcalScale.h.

Referenced by analyze(), beginJob(), and clearTreeVectors().

std::vector<double> * IsolatedTracksHcalScale::t_hsim [private]

Definition at line 172 of file IsolatedTracksHcalScale.h.

Referenced by analyze(), beginJob(), and clearTreeVectors().

std::vector<double> * IsolatedTracksHcalScale::t_hsimInfoCharHad [private]

Definition at line 171 of file IsolatedTracksHcalScale.h.

Referenced by analyze(), beginJob(), and clearTreeVectors().

std::vector<double>* IsolatedTracksHcalScale::t_hsimInfoMatched [private]

Definition at line 170 of file IsolatedTracksHcalScale.h.

Referenced by analyze(), beginJob(), and clearTreeVectors().

std::vector<int>* IsolatedTracksHcalScale::t_hsimInfoNCharHad [private]

Definition at line 174 of file IsolatedTracksHcalScale.h.

Referenced by analyze(), beginJob(), and clearTreeVectors().

std::vector<double>* IsolatedTracksHcalScale::t_hsimInfoNeutHad [private]

Definition at line 171 of file IsolatedTracksHcalScale.h.

Referenced by analyze(), beginJob(), and clearTreeVectors().

std::vector<int>* IsolatedTracksHcalScale::t_hsimInfoNMatched [private]

Definition at line 173 of file IsolatedTracksHcalScale.h.

Referenced by analyze(), beginJob(), and clearTreeVectors().

std::vector<int> * IsolatedTracksHcalScale::t_hsimInfoNNeutHad [private]

Definition at line 173 of file IsolatedTracksHcalScale.h.

Referenced by analyze(), beginJob(), and clearTreeVectors().

std::vector<int> * IsolatedTracksHcalScale::t_hsimInfoNPhoton [private]

Definition at line 174 of file IsolatedTracksHcalScale.h.

Referenced by analyze(), beginJob(), and clearTreeVectors().

std::vector<int> * IsolatedTracksHcalScale::t_hsimInfoNRest [private]

Definition at line 174 of file IsolatedTracksHcalScale.h.

Referenced by analyze(), beginJob(), and clearTreeVectors().

std::vector<int> * IsolatedTracksHcalScale::t_hsimInfoNTotal [private]

Definition at line 173 of file IsolatedTracksHcalScale.h.

Referenced by analyze(), beginJob(), and clearTreeVectors().

std::vector<double> * IsolatedTracksHcalScale::t_hsimInfoPdgMatched [private]

Definition at line 171 of file IsolatedTracksHcalScale.h.

Referenced by analyze(), beginJob(), and clearTreeVectors().

std::vector<double> * IsolatedTracksHcalScale::t_hsimInfoPhoton [private]

Definition at line 170 of file IsolatedTracksHcalScale.h.

Referenced by analyze(), beginJob(), and clearTreeVectors().

std::vector<double> * IsolatedTracksHcalScale::t_hsimInfoRest [private]

Definition at line 170 of file IsolatedTracksHcalScale.h.

Referenced by analyze(), beginJob(), and clearTreeVectors().

std::vector<double>* IsolatedTracksHcalScale::t_hsimInfoTotal [private]

Definition at line 172 of file IsolatedTracksHcalScale.h.

Referenced by analyze(), beginJob(), and clearTreeVectors().

Definition at line 163 of file IsolatedTracksHcalScale.h.

Referenced by analyze(), and beginJob().

std::vector<int>* IsolatedTracksHcalScale::t_nSimHits [private]

Definition at line 175 of file IsolatedTracksHcalScale.h.

Referenced by analyze(), beginJob(), and clearTreeVectors().

Definition at line 163 of file IsolatedTracksHcalScale.h.

Definition at line 163 of file IsolatedTracksHcalScale.h.

Referenced by analyze(), and beginJob().

std::vector<double> * IsolatedTracksHcalScale::t_trackEta [private]

Definition at line 164 of file IsolatedTracksHcalScale.h.

Referenced by analyze(), beginJob(), and clearTreeVectors().

std::vector<double>* IsolatedTracksHcalScale::t_trackHcalEta [private]

Definition at line 165 of file IsolatedTracksHcalScale.h.

Referenced by analyze(), beginJob(), and clearTreeVectors().

std::vector<double> * IsolatedTracksHcalScale::t_trackHcalPhi [private]

Definition at line 165 of file IsolatedTracksHcalScale.h.

Referenced by analyze(), beginJob(), and clearTreeVectors().

std::vector<double>* IsolatedTracksHcalScale::t_trackP [private]

Definition at line 164 of file IsolatedTracksHcalScale.h.

Referenced by analyze(), beginJob(), and clearTreeVectors().

std::vector<double> * IsolatedTracksHcalScale::t_trackPhi [private]

Definition at line 164 of file IsolatedTracksHcalScale.h.

Referenced by analyze(), beginJob(), and clearTreeVectors().

std::vector<double> * IsolatedTracksHcalScale::t_trackPt [private]

Definition at line 164 of file IsolatedTracksHcalScale.h.

Referenced by analyze(), beginJob(), and clearTreeVectors().

Definition at line 130 of file IsolatedTracksHcalScale.h.

Referenced by analyze(), and IsolatedTracksHcalScale().

Definition at line 133 of file IsolatedTracksHcalScale.h.

Referenced by analyze(), and IsolatedTracksHcalScale().

Definition at line 133 of file IsolatedTracksHcalScale.h.

Referenced by analyze(), and IsolatedTracksHcalScale().

Definition at line 161 of file IsolatedTracksHcalScale.h.

Referenced by analyze(), and beginJob().