Skip to content

Commit

Permalink
Merge pull request #19194 from fioriNTU/TrackCutPhase1_92X
Browse files Browse the repository at this point in the history
adding a simple track cut to all plugins using tracking
  • Loading branch information
cmsbuild committed Jun 23, 2017
2 parents 5ad2ca3 + 90f4a04 commit e5c4dad
Show file tree
Hide file tree
Showing 14 changed files with 92 additions and 34 deletions.
Expand Up @@ -172,6 +172,7 @@
range_y_min = 0, range_y_max = 40, range_y_nbins = 40,
dimensions = 2,
specs = VPSet(
Specification().groupBy("PXBarrel/PXLayer").save(),
Specification().groupBy("PXBarrel").save()
)
)
Expand Down
Expand Up @@ -19,7 +19,6 @@
#Summary maps
from DQM.SiPixelPhase1Summary.SiPixelPhase1Summary_cfi import *


PerModule.enabled = False

siPixelPhase1OfflineDQM_source = cms.Sequence(SiPixelPhase1RawDataAnalyzer
Expand All @@ -38,7 +37,7 @@
SiPixelPhase1TrackResidualsAnalyzer_cosmics = SiPixelPhase1TrackResidualsAnalyzer.clone()
SiPixelPhase1TrackResidualsAnalyzer_cosmics.Tracks = "ctfWithMaterialTracksP5"
SiPixelPhase1TrackResidualsAnalyzer_cosmics.trajectoryInput = "ctfWithMaterialTracksP5"
SiPixelPhase1TrackResidualsAnalyzer_cosmics.VertexCut = False # don't cuts based on the primary vertex position for cosmics
SiPixelPhase1TrackResidualsAnalyzer_cosmics.VertexCut =cms.untracked.bool(False) # don't cuts based on the primary vertex position for cosmics


siPixelPhase1OfflineDQM_source_cosmics.replace(SiPixelPhase1TrackResidualsAnalyzer,
Expand All @@ -47,12 +46,14 @@
SiPixelPhase1RecHitsAnalyzer_cosmics = SiPixelPhase1RecHitsAnalyzer.clone()
SiPixelPhase1RecHitsAnalyzer_cosmics.onlyValidHits = True # In Cosmics the efficiency plugin will not run, so we monitor only valid hits
SiPixelPhase1RecHitsAnalyzer_cosmics.src = "ctfWithMaterialTracksP5"
SiPixelPhase1RecHitsAnalyzer_cosmics.VertexCut = cms.untracked.bool(False)

siPixelPhase1OfflineDQM_source_cosmics.replace(SiPixelPhase1RecHitsAnalyzer,
SiPixelPhase1RecHitsAnalyzer_cosmics)

SiPixelPhase1TrackClustersAnalyzer_cosmics = SiPixelPhase1TrackClustersAnalyzer.clone()
SiPixelPhase1TrackClustersAnalyzer_cosmics.tracks = "ctfWithMaterialTracksP5"
SiPixelPhase1TrackClustersAnalyzer_cosmics.VertexCut = cms.untracked.bool(False)

siPixelPhase1OfflineDQM_source_cosmics.replace(SiPixelPhase1TrackClustersAnalyzer,
SiPixelPhase1TrackClustersAnalyzer_cosmics)
Expand Up @@ -110,17 +110,13 @@
from DQM.SiPixelPhase1Common.SiPixelPhase1GeometryDebug_cfi import *

from DQM.SiPixelPhase1TrackEfficiency.SiPixelPhase1TrackEfficiency_cfi import *
#Summary maps
#from DQM.SiPixelPhase1Summary.SiPixelPhase1Summary_cfi import *


siPixelPhase1OnlineDQM_source = cms.Sequence(
SiPixelPhase1DigisAnalyzer
+ SiPixelPhase1ClustersAnalyzer
+ SiPixelPhase1RawDataAnalyzer
+ SiPixelPhase1TrackClustersAnalyzer
+ SiPixelPhase1TrackResidualsAnalyzer
# + SiPixelPhase1GeometryDebugAnalyzer
)

siPixelPhase1OnlineDQM_harvesting = cms.Sequence(
Expand All @@ -130,20 +126,18 @@
+ SiPixelPhase1TrackClustersHarvester
+ SiPixelPhase1TrackResidualsHarvester
+ SiPixelPhase1TrackEfficiencyHarvester
# + RunQTests_online
# + SiPixelPhase1Summary_Online
# + SiPixelPhase1GeometryDebugHarvester
)

## Additional settings for cosmic runs

SiPixelPhase1TrackClustersAnalyzer_cosmics = SiPixelPhase1TrackClustersAnalyzer.clone()
SiPixelPhase1TrackClustersAnalyzer_cosmics.tracks = cms.InputTag( "ctfWithMaterialTracksP5" )
SiPixelPhase1TrackClustersAnalyzer_cosmics.VertexCut = cms.untracked.bool(False)

SiPixelPhase1TrackResidualsAnalyzer_cosmics = SiPixelPhase1TrackResidualsAnalyzer.clone()
SiPixelPhase1TrackResidualsAnalyzer_cosmics.Tracks = cms.InputTag( "ctfWithMaterialTracksP5" )
SiPixelPhase1TrackResidualsAnalyzer_cosmics.trajectoryInput = "ctfWithMaterialTracksP5"
SiPixelPhase1TrackResidualsAnalyzer_cosmics.VertexCut = False
SiPixelPhase1TrackResidualsAnalyzer_cosmics.VertexCut = cms.untracked.bool(False)

SiPixelPhase1TrackEfficiencyAnalyzer_cosmics=SiPixelPhase1TrackEfficiencyAnalyzer.clone()
SiPixelPhase1TrackEfficiencyAnalyzer_cosmics.tracks=cms.InputTag( "ctfWithMaterialTracksP5" )
Expand All @@ -154,21 +148,21 @@
+ SiPixelPhase1RawDataAnalyzer
+ SiPixelPhase1TrackClustersAnalyzer_cosmics
+ SiPixelPhase1TrackResidualsAnalyzer_cosmics
+ SiPixelPhase1TrackEfficiencyAnalyzer_cosmics
# + SiPixelPhase1GeometryDebugAnalyzer
)
)

## Additional settings for pp_run (Phase 0 test)
SiPixelPhase1TrackClustersAnalyzer_pprun = SiPixelPhase1TrackClustersAnalyzer.clone()
SiPixelPhase1TrackClustersAnalyzer_pprun.tracks = cms.InputTag( "initialStepTracksPreSplitting" )
SiPixelPhase1TrackClustersAnalyzer_pprun.VertexCut = cms.untracked.bool(False)

SiPixelPhase1TrackResidualsAnalyzer_pprun = SiPixelPhase1TrackResidualsAnalyzer.clone()
SiPixelPhase1TrackResidualsAnalyzer_pprun.Tracks = cms.InputTag( "initialStepTracksPreSplitting" )
SiPixelPhase1TrackResidualsAnalyzer_pprun.trajectoryInput = "initialStepTracksPreSplitting"
SiPixelPhase1TrackResidualsAnalyzer_pprun.VertexCut = False
SiPixelPhase1TrackResidualsAnalyzer_pprun.VertexCut = cms.untracked.bool(False)

SiPixelPhase1TrackEfficiencyAnalyzer_pprun=SiPixelPhase1TrackEfficiencyAnalyzer.clone()
SiPixelPhase1TrackEfficiencyAnalyzer_pprun.tracks=cms.InputTag( "initialStepTracksPreSplitting" )
SiPixelPhase1TrackEfficiencyAnalyzer_pprun.VertexCut = cms.untracked.bool(False)

siPixelPhase1OnlineDQM_source_pprun = cms.Sequence(
SiPixelPhase1DigisAnalyzer
Expand All @@ -177,6 +171,5 @@
+ SiPixelPhase1TrackClustersAnalyzer_pprun
+ SiPixelPhase1TrackResidualsAnalyzer_pprun
+ SiPixelPhase1TrackEfficiencyAnalyzer_pprun
# + SiPixelPhase1GeometryDebugAnalyzer
)

7 changes: 5 additions & 2 deletions DQM/SiPixelPhase1RecHits/interface/SiPixelPhase1RecHits.h
Expand Up @@ -11,6 +11,7 @@
#include "DQM/SiPixelPhase1Common/interface/SiPixelPhase1Base.h"
#include "DataFormats/SiPixelCluster/interface/SiPixelCluster.h"
#include "DataFormats/TrackReco/interface/TrackFwd.h"
#include "DataFormats/VertexReco/interface/VertexFwd.h"

class SiPixelPhase1RecHits : public SiPixelPhase1Base {
enum {
Expand All @@ -23,14 +24,16 @@ class SiPixelPhase1RecHits : public SiPixelPhase1Base {
CLUSTER_PROB
};

bool onlyValid_;

public:
explicit SiPixelPhase1RecHits(const edm::ParameterSet& conf);
void analyze(const edm::Event&, const edm::EventSetup&);

private:
edm::EDGetTokenT<reco::TrackCollection> srcToken_;
edm::EDGetTokenT<reco::VertexCollection> offlinePrimaryVerticesToken_;

bool onlyValid_;
bool applyVertexCut_;
};

#endif
21 changes: 15 additions & 6 deletions DQM/SiPixelPhase1RecHits/src/SiPixelPhase1RecHits.cc
Expand Up @@ -7,28 +7,29 @@
// Original Author: Marcel Schneider

#include "FWCore/Framework/interface/MakerMacros.h"

#include "FWCore/Framework/interface/ESHandle.h"
#include "DataFormats/GeometryVector/interface/LocalPoint.h"

#include "Geometry/TrackerGeometryBuilder/interface/PixelGeomDetUnit.h"
#include "Geometry/CommonTopologies/interface/PixelTopology.h"
#include "Geometry/TrackerGeometryBuilder/interface/TrackerGeometry.h"
#include "Geometry/Records/interface/TrackerDigiGeometryRecord.h"

#include "DataFormats/SiPixelDetId/interface/PixelSubdetector.h"

#include "DataFormats/TrackReco/interface/Track.h"

#include "DataFormats/TrackerRecHit2D/interface/SiPixelRecHit.h"

#include "DQM/SiPixelPhase1RecHits/interface/SiPixelPhase1RecHits.h"
#include "DataFormats/VertexReco/interface/Vertex.h"

SiPixelPhase1RecHits::SiPixelPhase1RecHits(const edm::ParameterSet& iConfig) :
SiPixelPhase1Base(iConfig)
{
srcToken_ = consumes<reco::TrackCollection>(iConfig.getParameter<edm::InputTag>("src"));

offlinePrimaryVerticesToken_ = consumes<reco::VertexCollection>(std::string("offlinePrimaryVertices"));

onlyValid_=iConfig.getParameter<bool>("onlyValidHits");

applyVertexCut_=iConfig.getUntrackedParameter<bool>("VertexCut",true);

}

void SiPixelPhase1RecHits::analyze(const edm::Event& iEvent, const edm::EventSetup& iSetup) {
Expand All @@ -41,8 +42,16 @@ void SiPixelPhase1RecHits::analyze(const edm::Event& iEvent, const edm::EventSet
iEvent.getByToken( srcToken_, tracks);
if (!tracks.isValid()) return;

edm::Handle<reco::VertexCollection> vertices;
iEvent.getByToken(offlinePrimaryVerticesToken_, vertices);

if (applyVertexCut_ && (!vertices.isValid() || vertices->size() == 0)) return;


for (auto const & track : *tracks) {

if (applyVertexCut_ && (track.pt() < 0.75 || std::abs( track.dxy(vertices->at(0).position()) ) > 5*track.dxyError())) continue;

bool isBpixtrack = false, isFpixtrack = false;

auto const & trajParams = track.extra()->trajParams();
Expand Down
Expand Up @@ -11,6 +11,7 @@
#include "DQM/SiPixelPhase1Common/interface/SiPixelPhase1Base.h"
#include "DataFormats/SiPixelCluster/interface/SiPixelCluster.h"
#include "DataFormats/TrackReco/interface/TrackFwd.h"
#include "DataFormats/VertexReco/interface/VertexFwd.h"

class SiPixelPhase1TrackClusters : public SiPixelPhase1Base {
enum {
Expand All @@ -27,7 +28,9 @@ class SiPixelPhase1TrackClusters : public SiPixelPhase1Base {
OFFTRACK_POSITION_F,

NTRACKS,
NTRACKS_VOLUME
NTRACKS_VOLUME,
ONTRACK_SIZE_VS_ETA

};

public:
Expand All @@ -37,6 +40,9 @@ class SiPixelPhase1TrackClusters : public SiPixelPhase1Base {
private:
edm::EDGetTokenT<edmNew::DetSetVector<SiPixelCluster> > clustersToken_;
edm::EDGetTokenT<reco::TrackCollection> tracksToken_;
edm::EDGetTokenT<reco::VertexCollection> offlinePrimaryVerticesToken_;

bool applyVertexCut_;
};

#endif
Expand Up @@ -216,6 +216,22 @@

)

SiPixelPhase1ClustersSizeVsEtaOnTrack = DefaultHistoTrack.clone(
name = "sizeyvseta_on_track",
title = "Cluster Size along Beamline vs. Cluster position #eta (OnTrack)",
xlabel = "Cluster #eta",
ylabel = "length [pixels]",
range_min = -3.2, range_max = 3.2, range_nbins = 40,
range_y_min = 0, range_y_max = 40, range_y_nbins = 40,
dimensions = 2,
specs = VPSet(
Specification().groupBy("PXBarrel/PXLayer").save(),
Specification().groupBy("PXBarrel").save()
)
)



SiPixelPhase1TrackClustersConf = cms.VPSet(
SiPixelPhase1TrackClustersOnTrackCharge,
SiPixelPhase1TrackClustersOnTrackSize,
Expand All @@ -231,6 +247,7 @@

SiPixelPhase1TrackClustersNTracks,
SiPixelPhase1TrackClustersNTracksInVolume,
SiPixelPhase1ClustersSizeVsEtaOnTrack
)


Expand All @@ -245,3 +262,5 @@
histograms = SiPixelPhase1TrackClustersConf,
geometry = SiPixelPhase1Geometry
)


16 changes: 16 additions & 0 deletions DQM/SiPixelPhase1TrackClusters/src/SiPixelPhase1TrackClusters.cc
Expand Up @@ -21,13 +21,19 @@
#include "DataFormats/TrackReco/interface/Track.h"
#include "DataFormats/TrackerRecHit2D/interface/SiPixelRecHit.h"
#include "TrackingTools/TrackFitters/interface/TrajectoryStateCombiner.h"
#include "DataFormats/VertexReco/interface/Vertex.h"


SiPixelPhase1TrackClusters::SiPixelPhase1TrackClusters(const edm::ParameterSet& iConfig) :
SiPixelPhase1Base(iConfig)
{
clustersToken_ = consumes<edmNew::DetSetVector<SiPixelCluster>>(iConfig.getParameter<edm::InputTag>("clusters"));

tracksToken_ = consumes<reco::TrackCollection>(iConfig.getParameter<edm::InputTag>("tracks"));

offlinePrimaryVerticesToken_ = consumes<reco::VertexCollection>(std::string("offlinePrimaryVertices"));

applyVertexCut_=iConfig.getUntrackedParameter<bool>("VertexCut",true);
}

void SiPixelPhase1TrackClusters::analyze(const edm::Event& iEvent, const edm::EventSetup& iSetup) {
Expand All @@ -37,9 +43,15 @@ void SiPixelPhase1TrackClusters::analyze(const edm::Event& iEvent, const edm::Ev
iSetup.get<TrackerDigiGeometryRecord>().get(tracker);
assert(tracker.isValid());

edm::Handle<reco::VertexCollection> vertices;
iEvent.getByToken(offlinePrimaryVerticesToken_, vertices);

if (applyVertexCut_ && (!vertices.isValid() || vertices->size() == 0)) return;

//get the map
edm::Handle<reco::TrackCollection> tracks;
iEvent.getByToken( tracksToken_, tracks);

if ( !tracks.isValid() ) {
edm::LogWarning("SiPixelPhase1TrackClusters") << "track collection is not valid";
return;
Expand All @@ -48,6 +60,7 @@ void SiPixelPhase1TrackClusters::analyze(const edm::Event& iEvent, const edm::Ev
// get clusters
edm::Handle< edmNew::DetSetVector<SiPixelCluster> > clusterColl;
iEvent.getByToken( clustersToken_, clusterColl );

if ( !clusterColl.isValid() ) {
edm::LogWarning("SiPixelPhase1TrackClusters") << "pixel cluster collection is not valid";
return;
Expand All @@ -62,6 +75,8 @@ void SiPixelPhase1TrackClusters::analyze(const edm::Event& iEvent, const edm::Ev

for (auto const & track : *tracks) {

if (applyVertexCut_ && (track.pt() < 0.75 || std::abs( track.dxy(vertices->at(0).position()) ) > 5*track.dxyError())) continue;

bool isBpixtrack = false, isFpixtrack = false, crossesPixVol=false;

// find out whether track crosses pixel fiducial volume (for cosmic tracks)
Expand Down Expand Up @@ -142,6 +157,7 @@ void SiPixelPhase1TrackClusters::analyze(const edm::Event& iEvent, const edm::Ev
histo[ONTRACK_SIZE ].fill(double(cluster.size() ), id, &iEvent);
histo[ONTRACK_POSITION_B].fill(clustgp.z(), clustgp.phi(), id, &iEvent);
histo[ONTRACK_POSITION_F].fill(clustgp.x(), clustgp.y(), id, &iEvent);
histo[ONTRACK_SIZE_VS_ETA].fill(clustgp.eta(), cluster.sizeY(), id, &iEvent);
} else {
histo[OFFTRACK_NCLUSTERS ].fill(id, &iEvent);
histo[OFFTRACK_CHARGE ].fill(double(cluster.charge()), id, &iEvent);
Expand Down
Expand Up @@ -29,6 +29,9 @@ class SiPixelPhase1TrackEfficiency : public SiPixelPhase1Base {
edm::EDGetTokenT<edmNew::DetSetVector<SiPixelCluster> > clustersToken_;
edm::EDGetTokenT<reco::TrackCollection> tracksToken_;
edm::EDGetTokenT<reco::VertexCollection> vtxToken_;

bool applyVertexCut_;

};

#endif
Expand Up @@ -11,7 +11,7 @@

specs = VPSet(
StandardSpecifications1D_Num,
StandardSpecification2DOccupancy,
StandardSpecification2DProfile_Num,

Specification().groupBy("PXBarrel/PXLayer/Event") #this will produce inclusive counts per Layer/Disk
.reduce("COUNT")
Expand All @@ -32,7 +32,7 @@

specs = VPSet(
StandardSpecifications1D_Num,
StandardSpecification2DOccupancy,
StandardSpecification2DProfile_Num,

Specification().groupBy("PXBarrel/PXLayer/Event") #this will produce inclusive counts per Layer/Disk
.reduce("COUNT")
Expand Down
Expand Up @@ -19,13 +19,15 @@
#include "DataFormats/TrackReco/interface/Track.h"
#include "DataFormats/TrackerRecHit2D/interface/SiPixelRecHit.h"
#include "DataFormats/VertexReco/interface/Vertex.h"

#include "DataFormats/VertexReco/interface/VertexFwd.h"

SiPixelPhase1TrackEfficiency::SiPixelPhase1TrackEfficiency(const edm::ParameterSet& iConfig) :
SiPixelPhase1Base(iConfig)
{
tracksToken_ = consumes<reco::TrackCollection>(iConfig.getParameter<edm::InputTag>("tracks"));
vtxToken_ = consumes<reco::VertexCollection>(iConfig.getParameter<edm::InputTag>("primaryvertices"));
applyVertexCut_=iConfig.getUntrackedParameter<bool>("VertexCut",true);

}

void SiPixelPhase1TrackEfficiency::analyze(const edm::Event& iEvent, const edm::EventSetup& iSetup) {
Expand All @@ -40,8 +42,10 @@ void SiPixelPhase1TrackEfficiency::analyze(const edm::Event& iEvent, const edm::
iEvent.getByToken( vtxToken_, vertices);

if (!vertices.isValid()) return;

histo[VERTICES].fill(vertices->size(),DetId(0),&iEvent);
if (vertices->size() == 0) return;

if (applyVertexCut_ && vertices->size() == 0) return;

// should be used for weird cuts
//const auto primaryVertex = vertices->at(0);
Expand All @@ -53,6 +57,9 @@ void SiPixelPhase1TrackEfficiency::analyze(const edm::Event& iEvent, const edm::

for (auto const & track : *tracks) {

//this cut is needed to be consisten with residuals calculation
if (applyVertexCut_ && (track.pt() < 0.75 || std::abs( track.dxy(vertices->at(0).position()) ) > 5*track.dxyError())) continue;

bool isBpixtrack = false, isFpixtrack = false;
int nStripHits = 0;

Expand Down

0 comments on commit e5c4dad

Please sign in to comment.