Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Track cuts redone #19428

Merged
merged 5 commits into from Jul 6, 2017
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
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;
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

hi @fioriNTU - please do the getByToken (and the consumes above) only if applyVertexCut_ is true
Also replace vertices->size()==0 by vertices->empty()

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;
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

this is a QUICK fix.
we may have to issue a LogWarning in future (actually an assert)


// 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);
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

strickly speaking one should take into account bigpixel for instance as
auto sizeY = cluster.sizeY();
if (topol.containsBigPixelInY(cluster.minPixelCol(), cluster.maxPixelCol()) ) sizeY+=1;
we need to ask confirmation to Pixels guys....

} 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