Skip to content

Commit

Permalink
Merge pull request #19824 from VinInn/PixelClusterShapeExtractor
Browse files Browse the repository at this point in the history
Pixel cluster shape: new calibration for Phase1 and Phase2
  • Loading branch information
cmsbuild committed Jul 28, 2017
2 parents 87f0185 + 2004b4b commit ee43b2f
Show file tree
Hide file tree
Showing 37 changed files with 1,995 additions and 1,450 deletions.
Expand Up @@ -71,6 +71,7 @@
)

SiPixelPhase1TrackClustersOnTrackShape = DefaultHistoTrack.clone(
topFolderName = "PixelPhase1/ClusterShape",
name = "shapeFilter",
title = "Shape filter (OnTrack)",
range_min = 0, range_max = 2, range_nbins = 2,
Expand Down Expand Up @@ -243,6 +244,7 @@


SiPixelPhase1TrackClustersOnTrackSizeYOuter = SiPixelPhase1ClustersSizeVsEtaOnTrackOuter.clone(
topFolderName = "PixelPhase1/ClusterShape",
name = "sizey_on_track_outer",
title = "Cluster Size along Beamline vs. prediction (OnTrack) outer ladders",
xlabel = "prediction",
Expand All @@ -253,32 +255,55 @@
name = "sizey_on_track_inner",
title = "Cluster Size along Beamline vs. prediction (OnTrack) inner ladders",
)
SiPixelPhase1TrackClustersOnTrackSizeYF = SiPixelPhase1TrackClustersOnTrackSizeYOuter.clone(
name = "sizey_on_track_forward",
title = "Cluster Size ortogonal to Beamline vs. prediction (OnTrack) forward",
range_y_min = 0, range_y_max = 10, range_y_nbins = 10,
range_min = 0, range_max = 10, range_nbins = 20,
specs = VPSet(
Specification().groupBy("PXForward/PXDisk").save(),
)
)


SiPixelPhase1TrackClustersOnTrackSizeXOuter = SiPixelPhase1TrackClustersOnTrackSizeYOuter.clone(
name = "sizex_on_track_outer",
title = "Cluster Size along radial vs. prediction (OnTrack) outer ladders",
range_min = 0, range_max = 6, range_nbins = 12,
range_y_min = 0, range_y_max = 6, range_y_nbins = 6
range_min = 0, range_max = 8, range_nbins = 16,
range_y_min = 0, range_y_max = 8, range_y_nbins = 8

)
SiPixelPhase1TrackClustersOnTrackSizeXInner = SiPixelPhase1TrackClustersOnTrackSizeXOuter.clone(
name = "sizex_on_track_inner",
title = "Cluster Size along radial vs. prediction (OnTrack) inner ladders",
)
SiPixelPhase1TrackClustersOnTrackSizeXF = SiPixelPhase1TrackClustersOnTrackSizeYF.clone(
name = "sizex_on_track_forward",
title = "Cluster Size radial vs. prediction (OnTrack) forward",
)



SiPixelPhase1TrackClustersOnTrackSizeXYOuter = SiPixelPhase1TrackClustersOnTrackSizeYOuter.clone(
name = "sizexy_on_track_outer",
title = "prediction - Cluster Size x vs y (OnTrack) outer ladders",
xlabel = "y diff",
ylabel = "x diff",
range_min = -6, range_max = 6, range_nbins = 24,
range_y_min = -6, range_y_max = 6, range_y_nbins = 24
title = "Cluster Size x vs y (OnTrack) outer ladders",
xlabel = "y size",
ylabel = "x size",
range_min = 0, range_max = 20, range_nbins = 20,
range_y_min = 0, range_y_max = 10, range_y_nbins = 10
)
SiPixelPhase1TrackClustersOnTrackSizeXYInner = SiPixelPhase1TrackClustersOnTrackSizeXYOuter.clone(
name = "sizexy_on_track_inner",
title = "prediction - Cluster Size x vs y (OnTrack) outer ladders"
title = "Cluster Size x vs y (OnTrack) inner ladders"
)
SiPixelPhase1TrackClustersOnTrackSizeXYF = SiPixelPhase1TrackClustersOnTrackSizeYF.clone(
name = "sizexy_on_track_forward",
title = "Cluster Size x vs y (OnTrack) forward",
xlabel = "y size",
ylabel = "x size",
range_min = 0, range_max = 10, range_nbins = 10,
range_y_min = 0, range_y_max = 10, range_y_nbins = 10

)


Expand All @@ -300,6 +325,7 @@
)

SiPixelPhase1TrackClustersOnTrackShapeOuter = DefaultHistoTrack.clone(
topFolderName = "PixelPhase1/ClusterShape",
name = "shapeFilterOuter",
title = "Shape filter (OnTrack) Outer Ladders",
range_min = 0, range_max = 2, range_nbins = 2,
Expand All @@ -314,7 +340,7 @@
)



# copy this in the enum
SiPixelPhase1TrackClustersConf = cms.VPSet(
SiPixelPhase1TrackClustersOnTrackCharge,
SiPixelPhase1TrackClustersOnTrackSize,
Expand All @@ -336,15 +362,18 @@

SiPixelPhase1TrackClustersOnTrackSizeXOuter,
SiPixelPhase1TrackClustersOnTrackSizeXInner,
SiPixelPhase1TrackClustersOnTrackSizeXF,
SiPixelPhase1TrackClustersOnTrackSizeYOuter,
SiPixelPhase1TrackClustersOnTrackSizeYInner,
SiPixelPhase1TrackClustersOnTrackSizeYF,

SiPixelPhase1TrackClustersOnTrackSizeXYOuter,
SiPixelPhase1TrackClustersOnTrackSizeXYInner

SiPixelPhase1TrackClustersOnTrackSizeXYInner,
SiPixelPhase1TrackClustersOnTrackSizeXYF
)



SiPixelPhase1TrackClustersAnalyzer = cms.EDAnalyzer("SiPixelPhase1TrackClusters",
clusters = cms.InputTag("siPixelClusters"),
tracks = cms.InputTag("generalTracks"),
Expand Down
37 changes: 23 additions & 14 deletions DQM/SiPixelPhase1TrackClusters/src/SiPixelPhase1TrackClusters.cc
Expand Up @@ -51,12 +51,14 @@ enum { // copy paste from cfy: the only safe way to doit....

SiPixelPhase1TrackClustersOnTrackSizeXOuter,
SiPixelPhase1TrackClustersOnTrackSizeXInner,
SiPixelPhase1TrackClustersOnTrackSizeXF,
SiPixelPhase1TrackClustersOnTrackSizeYOuter,
SiPixelPhase1TrackClustersOnTrackSizeYInner,

SiPixelPhase1TrackClustersOnTrackSizeYInner,
SiPixelPhase1TrackClustersOnTrackSizeYF,

SiPixelPhase1TrackClustersOnTrackSizeXYOuter,
SiPixelPhase1TrackClustersOnTrackSizeXYInner,

SiPixelPhase1TrackClustersOnTrackSizeXYF,

SiPixelPhase1TrackClustersEnumSize
};
Expand Down Expand Up @@ -154,6 +156,7 @@ void SiPixelPhase1TrackClusters::analyze(const edm::Event& iEvent, const edm::Ev
if (subdetid == PixelSubdetector::PixelBarrel) isBpixtrack = true;
if (subdetid == PixelSubdetector::PixelEndcap) isFpixtrack = true;
if (subdetid != PixelSubdetector::PixelBarrel && subdetid != PixelSubdetector::PixelEndcap) continue;
bool iAmBarrel = subdetid ==PixelSubdetector::PixelBarrel;
auto pixhit = dynamic_cast<const SiPixelRecHit*>(hit->hit());
if (!pixhit) continue;

Expand All @@ -180,18 +183,24 @@ void SiPixelPhase1TrackClusters::analyze(const edm::Event& iEvent, const edm::Ev
std::pair<float,float> pred;
if(shapeFilter.getSizes(*pixhit,localDir,pixelClusterShapeCache, part,meas, pred)) {
auto shape = shapeFilter.isCompatible(*pixhit,localDir,pixelClusterShapeCache);
if(tkTpl.pxbLadder(id)%2==1) {
histo[SiPixelPhase1TrackClustersOnTrackSizeXOuter].fill(pred.first, cluster.sizeX(), id, &iEvent);
histo[SiPixelPhase1TrackClustersOnTrackSizeYOuter].fill(pred.second,cluster.sizeY(), id, &iEvent);
histo[SiPixelPhase1TrackClustersOnTrackSizeXYOuter].fill(pred.second-cluster.sizeY(),pred.first-cluster.sizeX(), id, &iEvent);

histo[SiPixelPhase1TrackClustersOnTrackShapeOuter].fill(shape?1:0,id, &iEvent);
if (iAmBarrel) {
if(tkTpl.pxbLadder(id)%2==1) {
histo[SiPixelPhase1TrackClustersOnTrackSizeXOuter].fill(pred.first, cluster.sizeX(), id, &iEvent);
histo[SiPixelPhase1TrackClustersOnTrackSizeYOuter].fill(pred.second,cluster.sizeY(), id, &iEvent);
histo[SiPixelPhase1TrackClustersOnTrackSizeXYOuter].fill(cluster.sizeY(),cluster.sizeX(), id, &iEvent);

histo[SiPixelPhase1TrackClustersOnTrackShapeOuter].fill(shape?1:0,id, &iEvent);
} else {
histo[SiPixelPhase1TrackClustersOnTrackSizeXInner].fill(pred.first, cluster.sizeX(), id, &iEvent);
histo[SiPixelPhase1TrackClustersOnTrackSizeYInner].fill(pred.second,cluster.sizeY(), id, &iEvent);
histo[SiPixelPhase1TrackClustersOnTrackSizeXYInner].fill(cluster.sizeY(),cluster.sizeX(), id, &iEvent);

histo[SiPixelPhase1TrackClustersOnTrackShapeInner].fill(shape?1:0,id, &iEvent);
}
} else {
histo[SiPixelPhase1TrackClustersOnTrackSizeXInner].fill(pred.first, cluster.sizeX(), id, &iEvent);
histo[SiPixelPhase1TrackClustersOnTrackSizeYInner].fill(pred.second,cluster.sizeY(), id, &iEvent);
histo[SiPixelPhase1TrackClustersOnTrackSizeXYInner].fill(pred.second-cluster.sizeY(),pred.first-cluster.sizeX(), id, &iEvent);

histo[SiPixelPhase1TrackClustersOnTrackShapeInner].fill(shape?1:0,id, &iEvent);
histo[SiPixelPhase1TrackClustersOnTrackSizeXF].fill(pred.first, cluster.sizeX(), id, &iEvent);
histo[SiPixelPhase1TrackClustersOnTrackSizeYF].fill(pred.second,cluster.sizeY(), id, &iEvent);
histo[SiPixelPhase1TrackClustersOnTrackSizeXYF].fill(cluster.sizeY(),cluster.sizeX(), id, &iEvent);
}
histo[SiPixelPhase1TrackClustersOnTrackShape].fill(shape?1:0,id, &iEvent);
}
Expand Down
8 changes: 8 additions & 0 deletions HLTrigger/Configuration/python/customizeHLTforCMSSW.py
Expand Up @@ -25,11 +25,19 @@ def customiseFor19029(process):
producer.maxPhi = cms.double(3.2)
return process

def customiseFor19824(process) :
for producer in esproducers_by_type(process, "ClusterShapeHitFilterESProducer"):
producer.PixelShapeFileL1= cms.string('RecoPixelVertexing/PixelLowPtUtilities/data/pixelShapePhase1_all.par')
return process


# CMSSW version specific customizations
def customizeHLTforCMSSW(process, menuType="GRun"):

# add call to action function in proper order: newest last!
# process = customiseFor12718(process)

process = customiseFor19029(process)
process = customiseFor19824(process)

return process
13 changes: 13 additions & 0 deletions RecoPixelVertexing/PixelLowPtUtilities/bin/BuildFile.xml
@@ -0,0 +1,13 @@
<use name="DataFormats/VertexReco"/>
<use name="RecoPixelVertexing/PixelLowPtUtilities"/>
<use name="FWCore/Concurrency"/>
<use name="SimDataFormats/TrackingHit"/>
<use name="SimTracker/TrackerHitAssociation"/>
<library file="*.cc" name="RecoPixelVertexingPixelLowPtUtilitiesTools">
<flags EDM_PLUGIN="1"/>
</library>
<bin file="ClusterShapeAnalyzer.cpp" name="clusterShapeAnalyzer">
<use name="root"/>
<use name="boost_program_options"/>
</bin>

Expand Up @@ -118,6 +118,7 @@ class ClusterAnalyzer {
std::cout << " " << subName.at(is) << " dx= " << ix << " ";
for(int iy = 0; iy <= args.eyMax; ++iy) {
std::ostringstream histName;
// histName << "hrpc_" << is << "_" << ix << "_" << iy;
histName << "hspc_" << is << "_" << ix << "_" << iy;
auto histo = ReadObject<TH2F>(resFile, histName.str());

Expand Down

0 comments on commit ee43b2f

Please sign in to comment.