CMS 3D CMS Logo

Public Member Functions | Private Attributes

SegmentTrackAnalyzer Class Reference

#include <SegmentTrackAnalyzer.h>

Inheritance diagram for SegmentTrackAnalyzer:
MuonAnalyzerBase

List of all members.

Public Member Functions

void analyze (const edm::Event &, const edm::EventSetup &, const reco::Track &recoTrack)
 Get the analysis.
void beginJob (DQMStore *dbe)
 Inizialize parameters for histo binning.
 SegmentTrackAnalyzer (const edm::ParameterSet &, MuonServiceProxy *theService)
 Constructor.
virtual ~SegmentTrackAnalyzer ()
 Destructor.

Private Attributes

MonitorElementcscTrackHitPercentualVsEta
MonitorElementcscTrackHitPercentualVsPhi
MonitorElementcscTrackHitPercentualVsPt
MonitorElementdtTrackHitPercentualVsEta
MonitorElementdtTrackHitPercentualVsPhi
MonitorElementdtTrackHitPercentualVsPt
MonitorElementhitsNotUsed
MonitorElementhitsNotUsedPercentual
MonitorElementhitStaProvenance
MonitorElementhitTkrProvenance
std::string metname
edm::ParameterSet parameters
SegmentsTrackAssociatortheSegmentsAssociator
MonitorElementtrackHitPercentualVsEta
MonitorElementtrackHitPercentualVsPhi
MonitorElementtrackHitPercentualVsPt
MonitorElementTrackSegm

Detailed Description

DQM monitoring source for segments associated to the muon track

Date:
2009/12/22 17:43:41
Revision:
1.8
Author:
G. Mila - INFN Torino

Definition at line 29 of file SegmentTrackAnalyzer.h.


Constructor & Destructor Documentation

SegmentTrackAnalyzer::SegmentTrackAnalyzer ( const edm::ParameterSet pSet,
MuonServiceProxy *  theService 
)

Constructor.

Definition at line 32 of file SegmentTrackAnalyzer.cc.

References edm::ParameterSet::getParameter(), parameters, and theSegmentsAssociator.

                                                                                                   :MuonAnalyzerBase(theService) {

  parameters = pSet;

  const ParameterSet SegmentsTrackAssociatorParameters = parameters.getParameter<ParameterSet>("SegmentsTrackAssociatorParameters");
  theSegmentsAssociator = new SegmentsTrackAssociator(SegmentsTrackAssociatorParameters);

}
SegmentTrackAnalyzer::~SegmentTrackAnalyzer ( ) [virtual]

Destructor.

Definition at line 42 of file SegmentTrackAnalyzer.cc.

{ }

Member Function Documentation

void SegmentTrackAnalyzer::analyze ( const edm::Event iEvent,
const edm::EventSetup iSetup,
const reco::Track recoTrack 
)

Get the analysis.

Definition at line 112 of file SegmentTrackAnalyzer.cc.

References SegmentsTrackAssociator::associate(), MuonSubdetId::CSC, cscTrackHitPercentualVsEta, cscTrackHitPercentualVsPhi, cscTrackHitPercentualVsPt, MuonSubdetId::DT, dtTrackHitPercentualVsEta, dtTrackHitPercentualVsPhi, dtTrackHitPercentualVsPt, reco::TrackBase::eta(), MonitorElement::Fill(), hitsNotUsed, hitsNotUsedPercentual, hitStaProvenance, hitTkrProvenance, LogTrace, metname, DetId::Muon, reco::TrackBase::phi(), DTRecSegment4D::phiSegment(), PixelSubdetector::PixelBarrel, PixelSubdetector::PixelEndcap, reco::TrackBase::pt(), reco::Track::recHitsBegin(), reco::Track::recHitsEnd(), MuonSubdetId::RPC, findQualityFiles::size, DTRecSegment2D::specificRecHits(), SiStripDetId::TEC, theSegmentsAssociator, SiStripDetId::TIB, SiStripDetId::TID, SiStripDetId::TOB, DetId::Tracker, trackHitPercentualVsEta, trackHitPercentualVsPhi, trackHitPercentualVsPt, and TrackSegm.

                                                                                                                 {

  LogTrace(metname)<<"[SegmentTrackAnalyzer] Filling the histos";
  
  MuonTransientTrackingRecHit::MuonRecHitContainer segments = theSegmentsAssociator->associate(iEvent, iSetup, recoTrack );
 
  LogTrace(metname)<<"[SegmentTrackAnalyzer] # of segments associated to the track: "<<(segments).size();

  // hit counters
  int hitsFromDt=0;
  int hitsFromCsc=0;
  int hitsFromRpc=0;
  int hitsFromTk=0;
  int hitsFromTrack=0;
  int hitsFromSegmDt=0;
  int hitsFromSegmCsc=0;
  // segment counters
  int segmFromDt=0;
  int segmFromCsc=0;

  for (MuonTransientTrackingRecHit::MuonRecHitContainer::const_iterator segment=segments.begin();
       segment!=segments.end(); segment++) {
   
    DetId id = (*segment)->geographicalId();
    
    // hits from DT segments
    if (id.det() == DetId::Muon && id.subdetId() == MuonSubdetId::DT ) {
      ++segmFromDt;
      const DTRecSegment4D *seg4D = dynamic_cast<const DTRecSegment4D*>((*segment)->hit());
      if((*seg4D).hasPhi())
        hitsFromSegmDt+=(*seg4D).phiSegment()->specificRecHits().size();
      if((*seg4D).hasZed())
        hitsFromSegmDt+=(*seg4D).zSegment()->specificRecHits().size();
      
    }
    
    // hits from CSC segments
    if (id.det() == DetId::Muon && id.subdetId() == MuonSubdetId::CSC ) {
      hitsFromSegmCsc+=(*segment)->recHits().size();
      segmFromCsc++;
    }

  }


  // hits from track
  for(trackingRecHit_iterator recHit =  recoTrack.recHitsBegin(); recHit != recoTrack.recHitsEnd(); ++recHit){

    hitsFromTrack++;
     DetId id = (*recHit)->geographicalId();
     // hits from DT
     if (id.det() == DetId::Muon && id.subdetId() == MuonSubdetId::DT ) 
       hitsFromDt++;   
     // hits from CSC
      if (id.det() == DetId::Muon && id.subdetId() == MuonSubdetId::CSC ) 
       hitsFromCsc++;
     // hits from RPC
     if (id.det() == DetId::Muon && id.subdetId() == MuonSubdetId::RPC ) 
       hitsFromRpc++;
     // hits from Tracker
     if (id.det() == DetId::Tracker){
       hitsFromTk++;
       if(id.subdetId() == PixelSubdetector::PixelBarrel )
         hitTkrProvenance->Fill(1);
       if(id.subdetId() == PixelSubdetector::PixelEndcap )
         hitTkrProvenance->Fill(2);
       if(id.subdetId() == SiStripDetId::TIB )
         hitTkrProvenance->Fill(3);
       if(id.subdetId() == SiStripDetId::TID )
         hitTkrProvenance->Fill(4);
       if(id.subdetId() == SiStripDetId::TOB )
         hitTkrProvenance->Fill(5);
       if(id.subdetId() == SiStripDetId::TEC )
         hitTkrProvenance->Fill(6);
     }

  }

  // fill the histos
  hitsNotUsed->Fill(hitsFromSegmDt+hitsFromSegmCsc+hitsFromRpc+hitsFromTk-hitsFromTrack);
  hitsNotUsedPercentual->Fill(double(hitsFromSegmDt+hitsFromSegmCsc+hitsFromRpc+hitsFromTk-hitsFromTrack)/hitsFromTrack);

  if(hitsFromDt!=0 && hitsFromCsc!=0)
    TrackSegm->Fill(1,segmFromDt+segmFromCsc);
  if(hitsFromDt!=0 && hitsFromCsc==0)
    TrackSegm->Fill(2,segmFromDt);
  if(hitsFromDt==0 && hitsFromCsc!=0)
    TrackSegm->Fill(3,segmFromCsc);

  if(hitsFromDt!=0 && hitsFromCsc==0 && hitsFromRpc==0) hitStaProvenance->Fill(1);
  if(hitsFromCsc!=0 && hitsFromDt==0 && hitsFromRpc==0) hitStaProvenance->Fill(2);
  if(hitsFromRpc!=0 && hitsFromDt==0 && hitsFromCsc==0) hitStaProvenance->Fill(3);
  if(hitsFromDt!=0 && hitsFromCsc!=0 && hitsFromRpc==0) hitStaProvenance->Fill(4);
  if(hitsFromDt!=0 && hitsFromRpc!=0 && hitsFromCsc==0) hitStaProvenance->Fill(5);
  if(hitsFromCsc!=0 && hitsFromRpc!=0 && hitsFromDt==0) hitStaProvenance->Fill(6);
  if(hitsFromDt!=0 && hitsFromCsc!=0 && hitsFromRpc!=0) hitStaProvenance->Fill(7);

  if(hitsFromSegmDt+hitsFromSegmCsc !=0){
    trackHitPercentualVsEta->Fill(recoTrack.eta(), double(hitsFromDt+hitsFromCsc)/(hitsFromSegmDt+hitsFromSegmCsc));
    trackHitPercentualVsPhi->Fill(recoTrack.phi(), double(hitsFromDt+hitsFromCsc)/(hitsFromSegmDt+hitsFromSegmCsc));
    trackHitPercentualVsPt->Fill(recoTrack.pt(), double(hitsFromDt+hitsFromCsc)/(hitsFromSegmDt+hitsFromSegmCsc));
  }

  if(hitsFromSegmDt!=0){
    dtTrackHitPercentualVsEta->Fill(recoTrack.eta(), double(hitsFromDt)/hitsFromSegmDt);
    dtTrackHitPercentualVsPhi->Fill(recoTrack.phi(), double(hitsFromDt)/hitsFromSegmDt);
    dtTrackHitPercentualVsPt->Fill(recoTrack.pt(), double(hitsFromDt)/hitsFromSegmDt);
  }

  if(hitsFromSegmCsc!=0){
    cscTrackHitPercentualVsEta->Fill(recoTrack.eta(), double(hitsFromCsc)/hitsFromSegmCsc);
    cscTrackHitPercentualVsPhi->Fill(recoTrack.phi(), double(hitsFromCsc)/hitsFromSegmCsc);
    cscTrackHitPercentualVsPt->Fill(recoTrack.pt(), double(hitsFromCsc)/hitsFromSegmCsc);
  }

} 
void SegmentTrackAnalyzer::beginJob ( DQMStore dbe) [virtual]

Inizialize parameters for histo binning.

Implements MuonAnalyzerBase.

Definition at line 45 of file SegmentTrackAnalyzer.cc.

References DQMStore::book1D(), DQMStore::book2D(), cscTrackHitPercentualVsEta, cscTrackHitPercentualVsPhi, cscTrackHitPercentualVsPt, dtTrackHitPercentualVsEta, dtTrackHitPercentualVsPhi, dtTrackHitPercentualVsPt, jptDQMConfig_cff::etaMax, jptDQMConfig_cff::etaMin, edm::ParameterSet::getParameter(), hitsNotUsed, hitsNotUsedPercentual, hitStaProvenance, hitTkrProvenance, label, LogTrace, metname, parameters, jptDQMConfig_cff::phiMax, jptDQMConfig_cff::phiMin, jptDQMConfig_cff::ptMax, PtMinSelector_cfg::ptMin, MonitorElement::setAxisTitle(), MonitorElement::setBinLabel(), DQMStore::setCurrentFolder(), trackHitPercentualVsEta, trackHitPercentualVsPhi, trackHitPercentualVsPt, and TrackSegm.

                                                  {


  metname = "segmTrackAnalyzer";
  string trackCollection = parameters.getParameter<edm::InputTag>("MuTrackCollection").label() + parameters.getParameter<edm::InputTag>("MuTrackCollection").instance();
  LogTrace(metname)<<"[SegmentTrackAnalyzer] Parameters initialization";
  dbe->setCurrentFolder("Muons/SegmentTrackAnalyzer");
  
  // histograms initalization
  hitsNotUsed = dbe->book1D("HitsNotUsedForGlobalTracking_"+trackCollection, "recHits not used for GLB    ["+trackCollection+"]", 50, -0.5, 49.5);
  hitsNotUsedPercentual = dbe->book1D("HitsNotUsedForGlobalTrackingDvHitUsed_"+trackCollection, "(recHits_{notUsedForGLB}) / (recHits_{GLB})    ["+trackCollection+"]", 100, 0, 1.);

  TrackSegm = dbe->book2D("trackSegments_"+trackCollection, "Number of segments associated to the track    ["+trackCollection+"]", 3, 0.5, 3.5, 8, 0, 8);
  TrackSegm->setBinLabel(1,"DT+CSC",1);
  TrackSegm->setBinLabel(2,"DT",1);
  TrackSegm->setBinLabel(3,"CSC",1);
  
  hitStaProvenance = dbe->book1D("trackHitStaProvenance_"+trackCollection, "Number of recHits_{STAinTrack}    ["+trackCollection+"]", 7, 0.5, 7.5);
  hitStaProvenance->setBinLabel(1,"DT");
  hitStaProvenance->setBinLabel(2,"CSC");
  hitStaProvenance->setBinLabel(3,"RPC");
  hitStaProvenance->setBinLabel(4,"DT+CSC");
  hitStaProvenance->setBinLabel(5,"DT+RPC");
  hitStaProvenance->setBinLabel(6,"CSC+RPC");
  hitStaProvenance->setBinLabel(7,"DT+CSC+RPC");


  if(trackCollection!="standAloneMuons"){
    hitTkrProvenance = dbe->book1D("trackHitTkrProvenance_"+trackCollection, "Number of recHits_{TKinTrack}    ["+trackCollection+"]", 6, 0.5, 6.5);
    hitTkrProvenance->setBinLabel(1,"PixBarrel");
    hitTkrProvenance->setBinLabel(2,"PixEndCap");
    hitTkrProvenance->setBinLabel(3,"TIB");
    hitTkrProvenance->setBinLabel(4,"TID");
    hitTkrProvenance->setBinLabel(5,"TOB");
    hitTkrProvenance->setBinLabel(6,"TEC");
  }

  int etaBin = parameters.getParameter<int>("etaBin");
  double etaMin = parameters.getParameter<double>("etaMin");
  double etaMax = parameters.getParameter<double>("etaMax");
  trackHitPercentualVsEta = dbe->book2D("trackHitDivtrackSegmHitVsEta_"+trackCollection, "(recHits_{Track} / recHits_{associatedSegm}) vs #eta    [" +trackCollection+"]", etaBin, etaMin, etaMax, 20, 0, 1);
  dtTrackHitPercentualVsEta = dbe->book2D("dtTrackHitDivtrackSegmHitVsEta_"+trackCollection, "(recHits_{DTinTrack} / recHits_{associatedSegm}) vs #eta    [" +trackCollection+"]", etaBin, etaMin, etaMax, 20, 0, 1);
  cscTrackHitPercentualVsEta = dbe->book2D("cscTrackHitDivtrackSegmHitVsEta_"+trackCollection, "(recHits_{CSCinTrack} / recHits_{associatedSegm}) vs #eta    [" +trackCollection+"]", etaBin, etaMin, etaMax, 20, 0, 1);

  int phiBin = parameters.getParameter<int>("phiBin");
  double phiMin = parameters.getParameter<double>("phiMin");
  double phiMax = parameters.getParameter<double>("phiMax");
  trackHitPercentualVsPhi = dbe->book2D("trackHitDivtrackSegmHitVsPhi_"+trackCollection, "(recHits_{Track} / recHits_{associatedSegm}) vs #phi    [" +trackCollection+"]", phiBin, phiMin, phiMax, 20, 0, 1);
  trackHitPercentualVsPhi->setAxisTitle("rad",2);
  dtTrackHitPercentualVsPhi = dbe->book2D("dtTrackHitDivtrackSegmHitVsPhi_"+trackCollection, "(recHits_{DTinTrack} / recHits_{associatedSegm}) vs #phi    [" +trackCollection+"]", phiBin, phiMin, phiMax, 20, 0, 1);
  dtTrackHitPercentualVsPhi->setAxisTitle("rad",2);
  cscTrackHitPercentualVsPhi = dbe->book2D("cscTrackHitDivtrackSegmHitVsPhi_"+trackCollection, "(recHits_{CSCinTrack} / recHits_{associatedSegm}) vs #phi    [" +trackCollection+"]", phiBin, phiMin, phiMax, 20, 0, 1);
  cscTrackHitPercentualVsPhi->setAxisTitle("rad",2);

  int ptBin = parameters.getParameter<int>("ptBin");
  double ptMin = parameters.getParameter<double>("ptMin");
  double ptMax = parameters.getParameter<double>("ptMax");
  trackHitPercentualVsPt = dbe->book2D("trackHitDivtrackSegmHitVsPt_"+trackCollection, "(recHits_{Track} / recHits_{associatedSegm}) vs 1/p_{t}    [" +trackCollection+"]", ptBin, ptMin, ptMax, 20, 0, 1);
  trackHitPercentualVsPt->setAxisTitle("GeV",2);
  dtTrackHitPercentualVsPt = dbe->book2D("dtTrackHitDivtrackSegmHitVsPt_"+trackCollection, "(recHits_{DTinTrack} / recHits_{associatedSegm}) vs 1/p_{t}    [" +trackCollection+"]", ptBin, ptMin, ptMax, 20, 0, 1);
  dtTrackHitPercentualVsPt->setAxisTitle("GeV",2);
  cscTrackHitPercentualVsPt = dbe->book2D("cscTrackHitDivtrackSegmHitVsPt_"+trackCollection, "(recHits_{CSCinTrack} / recHits_{associatedSegm}) vs 1/p_{t}    [" +trackCollection+"]", ptBin, ptMin, ptMax, 20, 0, 1);
  cscTrackHitPercentualVsPt->setAxisTitle("GeV",2);

}

Member Data Documentation

Definition at line 66 of file SegmentTrackAnalyzer.h.

Referenced by analyze(), and beginJob().

Definition at line 67 of file SegmentTrackAnalyzer.h.

Referenced by analyze(), and beginJob().

Definition at line 68 of file SegmentTrackAnalyzer.h.

Referenced by analyze(), and beginJob().

Definition at line 63 of file SegmentTrackAnalyzer.h.

Referenced by analyze(), and beginJob().

Definition at line 64 of file SegmentTrackAnalyzer.h.

Referenced by analyze(), and beginJob().

Definition at line 65 of file SegmentTrackAnalyzer.h.

Referenced by analyze(), and beginJob().

Definition at line 55 of file SegmentTrackAnalyzer.h.

Referenced by analyze(), and beginJob().

Definition at line 56 of file SegmentTrackAnalyzer.h.

Referenced by analyze(), and beginJob().

Definition at line 58 of file SegmentTrackAnalyzer.h.

Referenced by analyze(), and beginJob().

Definition at line 59 of file SegmentTrackAnalyzer.h.

Referenced by analyze(), and beginJob().

std::string SegmentTrackAnalyzer::metname [private]

Definition at line 50 of file SegmentTrackAnalyzer.h.

Referenced by analyze(), and beginJob().

Definition at line 48 of file SegmentTrackAnalyzer.h.

Referenced by beginJob(), and SegmentTrackAnalyzer().

Definition at line 52 of file SegmentTrackAnalyzer.h.

Referenced by analyze(), and SegmentTrackAnalyzer().

Definition at line 60 of file SegmentTrackAnalyzer.h.

Referenced by analyze(), and beginJob().

Definition at line 61 of file SegmentTrackAnalyzer.h.

Referenced by analyze(), and beginJob().

Definition at line 62 of file SegmentTrackAnalyzer.h.

Referenced by analyze(), and beginJob().

Definition at line 57 of file SegmentTrackAnalyzer.h.

Referenced by analyze(), and beginJob().