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

update dqm client config for online beam spot running pixel tracking #14315

Merged
merged 2 commits into from May 11, 2016
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
18 changes: 15 additions & 3 deletions DQM/BeamMonitor/plugins/BeamMonitor.cc
Expand Up @@ -37,6 +37,7 @@ V00-03-25
#include <TMath.h>
#include <iostream>
#include <TStyle.h>
#include <ctime>

using namespace std;
using namespace edm;
Expand All @@ -45,17 +46,28 @@ void BeamMonitor::formatFitTime(char *ts, const time_t & t ) {
#define CET (+1)
#define CEST (+2)

//tm * ptm;
//ptm = gmtime ( &t );
//int year = ptm->tm_year;

//get correct year from ctime
time_t currentTime;
struct tm *localTime;
time( &currentTime ); // Get the current time
localTime = localtime( &currentTime ); // Convert the current time to the local time
int year = localTime->tm_year + 1900;

tm * ptm;
ptm = gmtime ( &t );
int year = ptm->tm_year;

//check if year is ok
if (year <= 37) year += 2000;
if (year >= 70 && year <= 137) year += 1900;

if (year < 1995){
edm::LogError("BadTimeStamp") << "year reported is " << year <<" !!"<<std::endl;
year = 2015; //overwritten later by BeamFitter.cc for fits but needed here for TH1
edm::LogError("BadTimeStamp") << "Resetting to " <<year<<std::endl;
//year = 2015; //overwritten later by BeamFitter.cc for fits but needed here for TH1
//edm::LogError("BadTimeStamp") << "Resetting to " <<year<<std::endl;
}
sprintf( ts, "%4d-%02d-%02d %02d:%02d:%02d", year,ptm->tm_mon+1,ptm->tm_mday,(ptm->tm_hour+CEST)%24, ptm->tm_min, ptm->tm_sec);

Expand Down
137 changes: 97 additions & 40 deletions DQM/Integration/python/clients/beam_dqm_sourceclient-live_cfg.py
Expand Up @@ -6,7 +6,7 @@
# Switch to change between firstStep and Pixel
#-----------------------------------------------

runFirstStepTrk = True
runFirstStepTrk = False

#----------------------------
# Common part for PP and H.I Running
Expand Down Expand Up @@ -158,7 +158,10 @@

process.load("Configuration.StandardSequences.Reconstruction_cff")
# Offline Beam Spot
process.load("RecoVertex.BeamSpotProducer.BeamSpot_cff")
#process.load("RecoVertex.BeamSpotProducer.BeamSpot_cff")
# copy from online
import RecoVertex.BeamSpotProducer.BeamSpotOnline_cfi
offlineBeamSpot = RecoVertex.BeamSpotProducer.BeamSpotOnline_cfi.onlineBeamSpotProducer.clone()

process.dqmBeamMonitor.OnlineMode = True
process.dqmBeamMonitor.resetEveryNLumi = 5
Expand All @@ -184,7 +187,9 @@
process.InitialStepPreSplitting.remove(process.siPixelRecHits)
process.InitialStepPreSplitting.remove(process.MeasurementTrackerEvent)
process.InitialStepPreSplitting.remove(process.siPixelClusterShapeCache)

# if z is very far due to bad fit
process.initialStepSeedsPreSplitting.RegionFactoryPSet.RegionPSet.originRadius = 1.5
process.initialStepSeedsPreSplitting.RegionFactoryPSet.RegionPSet.originHalfLength = cms.double(30.0)
#Increase pT threashold at seeding stage (not so accurate)
process.initialStepSeedsPreSplitting.RegionFactoryPSet.RegionPSet.ptMin = 0.9

Expand All @@ -206,13 +211,15 @@
)
else: # pixel tracking
print "[beam_dqm_sourceclient-live_cfg]:: pixelTracking"
process.load("RecoVertex.PrimaryVertexProducer.OfflinePixel3DPrimaryVertices_cfi")
#pixel track/vertices reco
from RecoTracker.TkTrackingRegions.GlobalTrackingRegion_cfi import *
process.RegionPSetBlock.RegionPSet.originRadius = cms.double(0.4)

process.load("RecoPixelVertexing.Configuration.RecoPixelVertexing_cff")
process.PixelTrackReconstructionBlock.RegionFactoryPSet = cms.PSet(RegionPSetBlock, ComponentName = cms.string("GlobalTrackingRegion"))
process.pixelVertices.TkFilterParameters.minPt = process.pixelTracks.RegionFactoryPSet.RegionPSet.ptMin
process.offlinePrimaryVertices.TrackLabel = cms.InputTag("pixelTracks")

process.dqmBeamMonitor.PVFitter.errorScale = 1.25 #keep checking this with new release expected close to 1.2
process.dqmBeamMonitor.PVFitter.errorScale = 1.22 #keep checking this with new release expected close to 1.2


from RecoTracker.TkSeedingLayers.PixelLayerTriplets_cfi import *
Expand Down Expand Up @@ -280,59 +287,108 @@
process.dqmBeamMonitor.OnlineMode = True ## in MC the LS are not ordered??
process.dqmBeamMonitor.resetEveryNLumi = 10
process.dqmBeamMonitor.resetPVEveryNLumi = 10

process.dqmBeamMonitor.BeamFitter.MinimumTotalLayers = 3 ## using pixel triplets
process.dqmBeamMonitor.PVFitter.minVertexNdf = 10
process.dqmBeamMonitor.BeamFitter.MinimumPixelLayers = 3
process.dqmBeamMonitor.BeamFitter.MaximumNormChi2 = 30.0

process.dqmBeamMonitor.PVFitter.minVertexNdf = 4
process.dqmBeamMonitor.PVFitter.minNrVerticesForFit = 20
process.dqmBeamMonitor.PVFitter.errorScale = 1.25
process.dqmBeamMonitor.PVFitter.errorScale = 1.25 ## taken from 2012 pixel vtx studies

process.dqmBeamMonitor.jetTrigger = cms.untracked.vstring("HLT_HI")

process.dqmBeamMonitor.hltResults = cms.InputTag("TriggerResults","","HLT")
process.dqmBeamSpotProblemMonitor.pixelTracks = 'hiPixel3PrimTracks'

# copy from online
import RecoVertex.BeamSpotProducer.BeamSpotOnline_cfi
offlineBeamSpot = RecoVertex.BeamSpotProducer.BeamSpotOnline_cfi.onlineBeamSpotProducer.clone()

## Load Heavy Ion Sequence
process.load("Configuration.StandardSequences.ReconstructionHeavyIons_cff") ## HI sequences

process.load('RecoLocalTracker.Configuration.RecoLocalTrackerHeavyIons_cff')
from RecoPixelVertexing.PixelLowPtUtilities.siPixelClusterShapeCache_cfi import *
from RecoPixelVertexing.PixelLowPtUtilities.siPixelClusterShapeCache_cfi import *
siPixelClusterShapeCachePreSplitting = siPixelClusterShapeCache.clone(
src = 'siPixelClustersPreSplitting'
)

# Select events based on the pixel cluster multiplicity
import HLTrigger.special.hltPixelActivityFilter_cfi
process.multFilter = HLTrigger.special.hltPixelActivityFilter_cfi.hltPixelActivityFilter.clone(
inputTag = cms.InputTag('siPixelClusters'),
inputTag = cms.InputTag('siPixelClustersPreSplitting'),
minClusters = cms.uint32(150),
maxClusters = cms.uint32(50000)
maxClusters = cms.uint32(10000) #80% efficiency in HI MC
)

process.filter_step = cms.Sequence( process.siPixelDigis
*process.siPixelClusters
#*process.multFilter
*process.siPixelClustersPreSplitting
*process.multFilter
)


from RecoHI.HiTracking.HIPixelVerticesPreSplitting_cff import *

process.PixelLayerTriplets.BPix.HitProducer = cms.string('siPixelRecHitsPreSplitting')
process.PixelLayerTriplets.FPix.HitProducer = cms.string('siPixelRecHitsPreSplitting')

process.hiPixel3PrimTracks.FilterPSet = cms.PSet(
ComponentName = cms.string('HIPixelTrackFilter'),
VertexCollection = cms.InputTag("hiSelectedVertexPreSplitting"),
chi2 = cms.double(1000.0),
clusterShapeCacheSrc = cms.InputTag("siPixelClusterShapeCachePreSplitting"),
lipMax = cms.double(0.3),
nSigmaLipMaxTolerance = cms.double(0),
nSigmaTipMaxTolerance = cms.double(6.0),
ptMin = cms.double(0.9),
tipMax = cms.double(0),
useClusterShape = cms.bool(False)
)

process.hiPixel3PrimTracks.RegionFactoryPSet = cms.PSet(
ComponentName = cms.string('GlobalTrackingRegionWithVerticesProducer'),
RegionPSet = cms.PSet(
VertexCollection = cms.InputTag("hiSelectedVertexPreSplitting"),
beamSpot = cms.InputTag("offlineBeamSpot"),
fixedError = cms.double(0.2),
nSigmaZ = cms.double(3.0),
originRadius = cms.double(0.1),
precise = cms.bool(True),
ptMin = cms.double(0.9),
sigmaZVertex = cms.double(3.0),
useFixedError = cms.bool(True),
useFoundVertices = cms.bool(True)
)
)
process.hiPixel3PrimTracks.OrderedHitsFactoryPSet.GeneratorPSet.SeedComparitorPSet.clusterShapeCacheSrc = cms.InputTag('siPixelClusterShapeCachePreSplitting')
process.hiPixel3PrimTracks.OrderedHitsFactoryPSet.GeneratorPSet.SeedComparitorPSet.clusterShapeCacheSrc = cms.InputTag('siPixelClusterShapeCachePreSplitting')
## From HI group
process.HIRecoForDQM = cms.Sequence( process.siPixelDigis
*process.siPixelClusters
*process.siPixelRecHits
*process.offlineBeamSpot
*process.hiPixelVertices
*process.hiPixel3PrimTracks
)

*process.siStripDigis
*process.offlineBeamSpot #<-clone of onlineBS
*process.pixeltrackerlocalreco
*process.striptrackerlocalreco
*process.MeasurementTrackerEventPreSplitting
*process.siPixelClusterShapeCachePreSplitting
*process.hiPixelVerticesPreSplitting
*process.PixelLayerTriplets
*process.hiPixel3PrimTracks
)

# use HI pixel tracking and vertexing
process.dqmBeamMonitor.BeamFitter.TrackCollection = cms.untracked.InputTag('hiPixel3PrimTracks')
process.dqmBeamMonitorBx.BeamFitter.TrackCollection = cms.untracked.InputTag('hiPixel3PrimTracks')
process.dqmBeamMonitor.primaryVertex = cms.untracked.InputTag('hiSelectedVertex')
process.dqmBeamMonitor.PVFitter.VertexCollection = cms.untracked.InputTag('hiSelectedVertex')


# make pixel vertexing less sensitive to incorrect beamspot
process.hiPixel3ProtoTracks.RegionFactoryPSet.RegionPSet.originRadius = 0.2
process.hiPixel3ProtoTracks.RegionFactoryPSet.RegionPSet.fixedError = 0.5
process.hiSelectedProtoTracks.maxD0Significance = 100
process.hiPixelAdaptiveVertex.TkFilterParameters.maxD0Significance = 100
process.hiPixelAdaptiveVertex.vertexCollections.useBeamConstraint = False
#not working due to wrong tag of reco
process.hiPixelAdaptiveVertex.vertexCollections.maxDistanceToBeam = 1.0




process.dqmBeamMonitor.primaryVertex = cms.untracked.InputTag('hiSelectedVertexPreSplitting')
process.dqmBeamMonitor.PVFitter.VertexCollection = cms.untracked.InputTag('hiSelectedVertexPreSplitting')


# make pixel VERTEXING less sensitive to incorrect beamspot
process.hiPixel3ProtoTracksPreSplitting.RegionFactoryPSet.RegionPSet.originRadius = 0.2 #default 0.2
process.hiPixel3ProtoTracksPreSplitting.RegionFactoryPSet.RegionPSet.fixedError = 0.5 #default 3.0
process.hiSelectedProtoTracksPreSplitting.maxD0Significance = 100 #default 5.0
process.hiPixelAdaptiveVertexPreSplitting.TkFilterParameters.maxD0Significance = 100 #default 3.0
process.hiPixelAdaptiveVertexPreSplitting.vertexCollections.useBeamConstraint = False #default False
process.hiPixelAdaptiveVertexPreSplitting.vertexCollections.maxDistanceToBeam = 1.0 #default 0.1


process.p = cms.Path(process.scalersRawToDigi
*process.dqmTKStatus
*process.hltTriggerTypeFilter
Expand All @@ -341,4 +397,5 @@
*process.dqmcommon
*process.monitor
*process.BeamSpotProblemModule)