Skip to content

Commit

Permalink
ÂApply track quality cuts only to the on-track per cm histograms
Browse files Browse the repository at this point in the history
  • Loading branch information
schneiml committed Feb 26, 2016
1 parent 721468c commit b4c4637
Show file tree
Hide file tree
Showing 2 changed files with 38 additions and 36 deletions.
9 changes: 5 additions & 4 deletions DQM/SiStripMonitorTrack/interface/SiStripMonitorTrack.h
Expand Up @@ -93,7 +93,7 @@ class SiStripMonitorTrack : public DQMEDAnalyzer {
void AllClusters(const edm::Event& ev, const edm::EventSetup& es);
void trackStudyFromTrack(edm::Handle<reco::TrackCollection > trackCollectionHandle, const edm::EventSetup& es);
void trackStudyFromTrajectory(edm::Handle<TrajTrackAssociationCollection> TItkAssociatorCollection, const edm::EventSetup& es);
void trajectoryStudy(const edm::Ref<std::vector<Trajectory> > traj, const edm::EventSetup& es);
void trajectoryStudy(const edm::Ref<std::vector<Trajectory> > traj, const edm::EventSetup& es, bool track_ok);
void trackStudy(const edm::Event& ev, const edm::EventSetup& es);
bool trackFilter(const reco::Track& track);
// LocalPoint project(const GeomDet *det,const GeomDet* projdet,LocalPoint position,LocalVector trackdirection)const;
Expand All @@ -102,9 +102,10 @@ class SiStripMonitorTrack : public DQMEDAnalyzer {
const SiStripMatchedRecHit2D* matchedhit,
const SiStripRecHit2D* hit2D,
const SiStripRecHit1D* hit1D,
LocalVector localMomentum);
bool clusterInfos(SiStripClusterInfo* cluster, const uint32_t detid, enum ClusterFlags flags, LocalVector LV, const Det2MEs& MEs);
template <class T> void RecHitInfo(const T* tkrecHit, LocalVector LV, const edm::EventSetup&);
LocalVector localMomentum,
const bool track_ok);
bool clusterInfos(SiStripClusterInfo* cluster, const uint32_t detid, enum ClusterFlags flags, bool track_ok, LocalVector LV, const Det2MEs& MEs);
template <class T> void RecHitInfo(const T* tkrecHit, LocalVector LV, const edm::EventSetup&, bool ok);

// fill monitorables
// void fillModMEs(SiStripClusterInfo* cluster,std::string name, float cos, const uint32_t detid, const LocalVector LV);
Expand Down
65 changes: 33 additions & 32 deletions DQM/SiStripMonitorTrack/src/SiStripMonitorTrack.cc
Expand Up @@ -653,7 +653,7 @@ MonitorElement* SiStripMonitorTrack::bookMETrend(DQMStore::IBooker & ibooker , c
}

//------------------------------------------------------------------------------------------
void SiStripMonitorTrack::trajectoryStudy(const edm::Ref<std::vector<Trajectory> > traj, const edm::EventSetup& es) {
void SiStripMonitorTrack::trajectoryStudy(const edm::Ref<std::vector<Trajectory> > traj, const edm::EventSetup& es, bool track_ok) {
const std::vector<TrajectoryMeasurement> & measurements = traj->measurements();
for(std::vector<TrajectoryMeasurement>::const_iterator traj_mes_iterator= measurements.begin(), traj_mes_end=measurements.end();
traj_mes_iterator!=traj_mes_end;++traj_mes_iterator){//loop on measurements
Expand Down Expand Up @@ -695,13 +695,13 @@ void SiStripMonitorTrack::trajectoryStudy(const edm::Ref<std::vector<Trajectory>
statedirection=monodet->toLocal(gtrkdirup);
SiStripRecHit2D m = matchedhit->monoHit();
// if(statedirection.mag() != 0) RecHitInfo<SiStripRecHit2D>(&m,statedirection,trackref,es);
if(statedirection.mag()) RecHitInfo<SiStripRecHit2D>(&m,statedirection,es);
if(statedirection.mag()) RecHitInfo<SiStripRecHit2D>(&m,statedirection,es,track_ok);
//stereo side
const GeomDetUnit * stereodet=gdet->stereoDet();
statedirection=stereodet->toLocal(gtrkdirup);
SiStripRecHit2D s = matchedhit->stereoHit();
// if(statedirection.mag() != 0) RecHitInfo<SiStripRecHit2D>(&s,statedirection,trackref,es);
if(statedirection.mag()) RecHitInfo<SiStripRecHit2D>(&s,statedirection,es);
if(statedirection.mag()) RecHitInfo<SiStripRecHit2D>(&s,statedirection,es,track_ok);
}
else if(projhit){
LogTrace("SiStripMonitorTrack")<<"\nProjected recHit found"<< std::endl;
Expand All @@ -716,21 +716,21 @@ void SiStripMonitorTrack::trajectoryStudy(const edm::Ref<std::vector<Trajectory>
LogTrace("SiStripMonitorTrack")<<"\nProjected recHit found MONO"<< std::endl;
det=gdet->monoDet();
statedirection=det->toLocal(gtrkdirup);
if(statedirection.mag()) RecHitInfo<SiStripRecHit2D>(&(originalhit),statedirection,es);
if(statedirection.mag()) RecHitInfo<SiStripRecHit2D>(&(originalhit),statedirection,es,track_ok);
}
else{
LogTrace("SiStripMonitorTrack")<<"\nProjected recHit found STEREO"<< std::endl;
//stereo side
det=gdet->stereoDet();
statedirection=det->toLocal(gtrkdirup);
if(statedirection.mag()) RecHitInfo<SiStripRecHit2D>(&(originalhit),statedirection,es);
if(statedirection.mag()) RecHitInfo<SiStripRecHit2D>(&(originalhit),statedirection,es,track_ok);
}
}else if (hit2D){
statedirection=updatedtsos.localMomentum();
if(statedirection.mag()) RecHitInfo<SiStripRecHit2D>(hit2D,statedirection,es);
if(statedirection.mag()) RecHitInfo<SiStripRecHit2D>(hit2D,statedirection,es,track_ok);
} else if (hit1D) {
statedirection=updatedtsos.localMomentum();
if(statedirection.mag()) RecHitInfo<SiStripRecHit1D>(hit1D,statedirection,es);
if(statedirection.mag()) RecHitInfo<SiStripRecHit1D>(hit1D,statedirection,es,track_ok);
} else {
LogDebug ("SiStripMonitorTrack")
<< " LocalMomentum: "<<statedirection
Expand All @@ -746,7 +746,8 @@ void SiStripMonitorTrack::hitStudy(const edm::EventSetup& es,
const SiStripMatchedRecHit2D* matchedhit,
const SiStripRecHit2D* hit2D,
const SiStripRecHit1D* hit1D,
LocalVector localMomentum
LocalVector localMomentum,
const bool track_ok
) {
LocalVector statedirection;
if(matchedhit){ // type=Matched;
Expand All @@ -760,13 +761,13 @@ void SiStripMonitorTrack::hitStudy(const edm::EventSetup& es,
const GeomDetUnit * monodet=gdet->monoDet();
statedirection=monodet->toLocal(gtrkdirup);
SiStripRecHit2D m = matchedhit->monoHit();
if(statedirection.mag()) RecHitInfo<SiStripRecHit2D>(&m,statedirection,es);
if(statedirection.mag()) RecHitInfo<SiStripRecHit2D>(&m,statedirection,es,track_ok);

//stereo side
const GeomDetUnit * stereodet=gdet->stereoDet();
statedirection=stereodet->toLocal(gtrkdirup);
SiStripRecHit2D s = matchedhit->stereoHit();
if(statedirection.mag()) RecHitInfo<SiStripRecHit2D>(&s,statedirection,es);
if(statedirection.mag()) RecHitInfo<SiStripRecHit2D>(&s,statedirection,es,track_ok);
}
else if(projhit){ // type=Projected;
LogTrace("SiStripMonitorTrack")<<"\nProjected recHit found"<< std::endl;
Expand All @@ -782,21 +783,21 @@ void SiStripMonitorTrack::hitStudy(const edm::EventSetup& es,
LogTrace("SiStripMonitorTrack")<<"\nProjected recHit found MONO"<< std::endl;
det=gdet->monoDet();
statedirection=det->toLocal(gtrkdirup);
if(statedirection.mag()) RecHitInfo<SiStripRecHit2D>(&(originalhit),statedirection,es);
if(statedirection.mag()) RecHitInfo<SiStripRecHit2D>(&(originalhit),statedirection,es,track_ok);
}
else{
LogTrace("SiStripMonitorTrack")<<"\nProjected recHit found STEREO"<< std::endl;
//stereo side
det=gdet->stereoDet();
statedirection=det->toLocal(gtrkdirup);
if(statedirection.mag()) RecHitInfo<SiStripRecHit2D>(&(originalhit),statedirection,es);
if(statedirection.mag()) RecHitInfo<SiStripRecHit2D>(&(originalhit),statedirection,es,track_ok);
}
} else if (hit2D){ // type=2D
statedirection=localMomentum;
if(statedirection.mag()) RecHitInfo<SiStripRecHit2D>(hit2D,statedirection,es);
if(statedirection.mag()) RecHitInfo<SiStripRecHit2D>(hit2D,statedirection,es,track_ok);
} else if (hit1D) { // type=1D
statedirection=localMomentum;
if(statedirection.mag()) RecHitInfo<SiStripRecHit1D>(hit1D,statedirection,es);
if(statedirection.mag()) RecHitInfo<SiStripRecHit1D>(hit1D,statedirection,es,track_ok);
} else {
LogDebug ("SiStripMonitorTrack")
<< " LocalMomentum: "<<statedirection
Expand Down Expand Up @@ -855,7 +856,7 @@ void SiStripMonitorTrack::trackStudyFromTrack(edm::Handle<reco::TrackCollection
for (reco::TrackCollection::const_iterator track = trackCollection.begin(), etrack = trackCollection.end();
track!=etrack; ++track) {

if ( trackFilter(*track) == false ) continue;
bool track_ok = trackFilter(*track);
// const reco::TransientTrack transientTrack = transientTrackBuilder->build(track);

for (trackingRecHit_iterator hit = track->recHitsBegin(), ehit = track->recHitsEnd();
Expand Down Expand Up @@ -886,7 +887,7 @@ void SiStripMonitorTrack::trackStudyFromTrack(edm::Handle<reco::TrackCollection
// reco::TrajectoryStateOnSurface stateOnSurface = transientTrack->stateOnSurface(globalPoint);

LocalVector localMomentum;
hitStudy(es,projhit,matchedhit,hit2D,hit1D,localMomentum);
hitStudy(es,projhit,matchedhit,hit2D,hit1D,localMomentum,track_ok);
}

// hit pattern of the track
Expand Down Expand Up @@ -944,13 +945,13 @@ void SiStripMonitorTrack::trackStudyFromTrajectory(edm::Handle<TrajTrackAssociat
// <<"\n\t\touter PT "<< trackref->outerPt()<<std::endl;

// trajectoryStudy(traj_iterator,trackref,es);
if ( trackFilter(*(it->val)) == false ) continue;
trajectoryStudy(traj_iterator,es);
bool track_ok = trackFilter(*(it->val));
trajectoryStudy(traj_iterator,es,track_ok);

}
}
//------------------------------------------------------------------------
template <class T> void SiStripMonitorTrack::RecHitInfo(const T* tkrecHit, LocalVector LV, const edm::EventSetup& es){
template <class T> void SiStripMonitorTrack::RecHitInfo(const T* tkrecHit, LocalVector LV, const edm::EventSetup& es, bool track_ok){

if(!tkrecHit->isValid()){
LogTrace("SiStripMonitorTrack") <<"\t\t Invalid Hit " << std::endl;
Expand All @@ -977,7 +978,7 @@ template <class T> void SiStripMonitorTrack::RecHitInfo(const T* tkrecHit, Local
SiStripClusterInfo SiStripClusterInfo_(*SiStripCluster_,es,detid);

const Det2MEs MEs = findMEs(tTopo, detid);
if (clusterInfos(&SiStripClusterInfo_,detid, OnTrack, LV, MEs))
if (clusterInfos(&SiStripClusterInfo_,detid, OnTrack, track_ok, LV, MEs))
{
vPSiStripCluster.insert(SiStripCluster_);
}
Expand Down Expand Up @@ -1015,7 +1016,7 @@ void SiStripMonitorTrack::AllClusters(const edm::Event& ev, const edm::EventSetu

if (vPSiStripCluster.find(&*ClusIter) == vPSiStripCluster.end()) {
SiStripClusterInfo SiStripClusterInfo_(*ClusIter,es,detid);
clusterInfos(&SiStripClusterInfo_,detid,OffTrack,LV,MEs);
clusterInfos(&SiStripClusterInfo_,detid,OffTrack, /*track_ok*/ false,LV,MEs);
}
}
}
Expand Down Expand Up @@ -1058,7 +1059,7 @@ SiStripMonitorTrack::Det2MEs SiStripMonitorTrack::findMEs(const TrackerTopology*

//------------------------------------------------------------------------
#include "DataFormats/SiStripCluster/interface/SiStripClusterTools.h"
bool SiStripMonitorTrack::clusterInfos(SiStripClusterInfo* cluster, const uint32_t detid, enum ClusterFlags flag, const LocalVector LV, const Det2MEs& MEs)
bool SiStripMonitorTrack::clusterInfos(SiStripClusterInfo* cluster, const uint32_t detid, enum ClusterFlags flag, bool track_ok, const LocalVector LV, const Det2MEs& MEs)
{

if (cluster==NULL) return false;
Expand Down Expand Up @@ -1095,11 +1096,11 @@ bool SiStripMonitorTrack::clusterInfos(SiStripClusterInfo* cluster, const uint32

if (TkHistoMap_On_ && (flag == OnTrack)) {
uint32_t adet=cluster->detId();
tkhisto_ClChPerCMfromTrack->fill(adet,dQdx_fromTrack);
if(track_ok) tkhisto_ClChPerCMfromTrack->fill(adet,dQdx_fromTrack);
}
if (clchCMoriginTkHmap_On_ && (flag == OffTrack)){
uint32_t adet=cluster->detId();
tkhisto_ClChPerCMfromOrigin->fill(adet,dQdx_fromOrigin);
if(track_ok) tkhisto_ClChPerCMfromOrigin->fill(adet,dQdx_fromOrigin);
}

if(flag==OnTrack){
Expand All @@ -1113,8 +1114,8 @@ bool SiStripMonitorTrack::clusterInfos(SiStripClusterInfo* cluster, const uint32
fillME(MEs.iLayer->ClusterNoiseOnTrack, noise);
fillME(MEs.iLayer->ClusterWidthOnTrack, width);
fillME(MEs.iLayer->ClusterPosOnTrack, position);
fillME(MEs.iLayer->ClusterChargePerCMfromTrack, dQdx_fromTrack);
fillME(MEs.iLayer->ClusterChargePerCMfromOriginOnTrack, dQdx_fromOrigin);
if(track_ok) fillME(MEs.iLayer->ClusterChargePerCMfromTrack, dQdx_fromTrack);
if(track_ok) fillME(MEs.iLayer->ClusterChargePerCMfromOriginOnTrack, dQdx_fromOrigin);
}
// ringMEs
if (MEs.iRing != nullptr) {
Expand All @@ -1124,15 +1125,15 @@ bool SiStripMonitorTrack::clusterInfos(SiStripClusterInfo* cluster, const uint32
fillME(MEs.iRing->ClusterChargeOnTrack, charge);
fillME(MEs.iRing->ClusterNoiseOnTrack, noise);
fillME(MEs.iRing->ClusterWidthOnTrack, width);
fillME(MEs.iRing->ClusterChargePerCMfromTrack, dQdx_fromTrack);
fillME(MEs.iRing->ClusterChargePerCMfromOriginOnTrack, dQdx_fromOrigin);
if(track_ok) fillME(MEs.iRing->ClusterChargePerCMfromTrack, dQdx_fromTrack);
if(track_ok) fillME(MEs.iRing->ClusterChargePerCMfromOriginOnTrack, dQdx_fromOrigin);
}
// subdetMEs
if(MEs.iSubdet != nullptr){
fillME(MEs.iSubdet->ClusterChargeOnTrack,charge);
if(noise > 0.0) fillME(MEs.iSubdet->ClusterStoNCorrOnTrack,StoN*cosRZ);
fillME(MEs.iSubdet->ClusterChargePerCMfromTrack,dQdx_fromTrack);
fillME(MEs.iSubdet->ClusterChargePerCMfromOriginOnTrack,dQdx_fromOrigin);
if(track_ok) fillME(MEs.iSubdet->ClusterChargePerCMfromTrack,dQdx_fromTrack);
if(track_ok) fillME(MEs.iSubdet->ClusterChargePerCMfromOriginOnTrack,dQdx_fromOrigin);
}
//******** TkHistoMaps
if (TkHistoMap_On_) {
Expand All @@ -1158,8 +1159,8 @@ bool SiStripMonitorTrack::clusterInfos(SiStripClusterInfo* cluster, const uint32
fillME(iModME->second.ClusterWidth ,width);
fillME(iModME->second.ClusterPos ,position);

fillME(iModME->second.ClusterChargePerCMfromTrack, dQdx_fromTrack);
fillME(iModME->second.ClusterChargePerCMfromOrigin, dQdx_fromOrigin);
if(track_ok) fillME(iModME->second.ClusterChargePerCMfromTrack, dQdx_fromTrack);
if(track_ok) fillME(iModME->second.ClusterChargePerCMfromOrigin, dQdx_fromOrigin);

//fill the PGV histo
float PGVmax = cluster->maxCharge();
Expand Down

0 comments on commit b4c4637

Please sign in to comment.