Skip to content

Commit

Permalink
Merge pull request #19428 from fioriNTU/TrackCuts_Redone
Browse files Browse the repository at this point in the history
Track cuts redone
  • Loading branch information
cmsbuild committed Jul 6, 2017
2 parents 98f552c + 94ba37c commit 30de1f6
Show file tree
Hide file tree
Showing 14 changed files with 96 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
)


20 changes: 20 additions & 0 deletions DQM/SiPixelPhase1TrackClusters/src/SiPixelPhase1TrackClusters.cc
Expand Up @@ -21,25 +21,39 @@
#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) {

if (! (histo.size() > ONTRACK_SIZE_VS_ETA)) return;

// get geometry
edm::ESHandle<TrackerGeometry> tracker;
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 +62,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 @@ -59,9 +74,12 @@ void SiPixelPhase1TrackClusters::analyze(const edm::Event& iEvent, const edm::Ev
// corr_charge is not strictly needed but cleaner to have it.
std::vector<bool> ontrack (clusterColl->data().size(), false);
std::vector<float> corr_charge(clusterColl->data().size(), -1.0f);
std::vector<float> etatk(clusterColl->data().size(), -1.0f);

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 @@ -100,6 +118,7 @@ void SiPixelPhase1TrackClusters::analyze(const edm::Event& iEvent, const edm::Ev
1.0/pow( tan(clust_beta ), 2 ) +
1.0 ));
corr_charge[clust.key()] = (float) corrCharge;
etatk[clust.key()]=(float) track.eta();
}

// statistics on tracks
Expand Down Expand Up @@ -142,6 +161,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(etatk[key], 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

0 comments on commit 30de1f6

Please sign in to comment.